[
  {
    "path": ".changeset/README.md",
    "content": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works\nwith multi-package repos, or single-package repos to help you version and publish your code. You can\nfind the full documentation for it [in our repository](https://github.com/changesets/changesets)\n\nWe have a quick list of common questions to get you started engaging with this project in\n[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)\n"
  },
  {
    "path": ".changeset/config.json",
    "content": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@2.3.0/schema.json\",\n  \"changelog\": [\"@changesets/changelog-github\", { \"repo\": \"shadcn-ui/ui\" }],\n  \"commit\": false,\n  \"fixed\": [],\n  \"linked\": [],\n  \"access\": \"public\",\n  \"baseBranch\": \"main\",\n  \"updateInternalDependencies\": \"patch\",\n  \"ignore\": [\"v4\", \"tests\"]\n}\n"
  },
  {
    "path": ".claude/settings.local.json",
    "content": "{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(npm test:*)\",\n      \"Bash(npm run typecheck:*)\",\n      \"Bash(ls:*)\",\n      \"Bash(cat:*)\",\n      \"WebSearch\",\n      \"WebFetch(domain:github.com)\"\n    ],\n    \"deny\": []\n  }\n}\n"
  },
  {
    "path": ".commitlintrc.json",
    "content": "{\n  \"extends\": [\"@commitlint/config-conventional\"]\n}\n"
  },
  {
    "path": ".cursor/rules/registry-bases-parity.mdc",
    "content": "---\ndescription: Keep registry base and radix trees in sync when editing shared UI\nglobs: apps/v4/registry/bases/**/*\nalwaysApply: false\n---\n\n# Registry bases: Base UI ↔ Radix parity\n\n`apps/v4/registry/bases/base` and `apps/v4/registry/bases/radix` are **parallel registries**. Anything that exists in both trees for the same purpose (preview blocks, mirrored examples, shared card layouts, etc.) **must stay in sync**.\n\n## When editing\n\n- If you change a file under **`bases/base/...`**, apply the **same behavioral and visual change** to the matching path under **`bases/radix/...`** (and the reverse).\n- Only diverge where APIs differ (e.g. import paths like `@/registry/bases/base/ui/*` vs `@/registry/bases/radix/ui/*`, or Base UI vs Radix component props).\n- Do **not** update only one side unless the user explicitly asks for a single-base change.\n\n## Typical mirrored paths\n\n- `blocks/preview/**` — preview cards and blocks\n- Parallel `ui/*` components when both exist for the same component\n\nAfter edits, briefly confirm both trees were updated (or state why one side is intentionally unchanged).\n"
  },
  {
    "path": ".editorconfig",
    "content": "# editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": ".eslintignore",
    "content": "node_modules/\ntarget/\n.next/\nbuild/\ndist/\n\n/templates/\n/fixtures/\n"
  },
  {
    "path": ".eslintrc.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/eslintrc\",\n  \"root\": true,\n  \"extends\": [\n    \"next/core-web-vitals\",\n    \"turbo\",\n    \"prettier\",\n    \"plugin:tailwindcss/recommended\"\n  ],\n  \"plugins\": [\"tailwindcss\"],\n  \"ignorePatterns\": [\"**/fixtures/**\"],\n  \"rules\": {\n    \"@next/next/no-html-link-for-pages\": \"off\",\n    \"tailwindcss/no-custom-classname\": \"off\",\n    \"tailwindcss/classnames-order\": \"error\"\n  },\n  \"settings\": {\n    \"tailwindcss\": {\n      \"callees\": [\"cn\", \"cva\"],\n      \"config\": \"tailwind.config.cjs\"\n    },\n    \"next\": {\n      \"rootDir\": [\"apps/*/\"]\n    }\n  },\n  \"overrides\": [\n    {\n      \"files\": [\"*.ts\", \"*.tsx\"],\n      \"parser\": \"@typescript-eslint/parser\"\n    }\n  ]\n}\n"
  },
  {
    "path": ".github/DISCUSSION_TEMPLATE/blocks-request.yml",
    "content": "title: \"[blocks]: \"\nlabels: [\"Blocks Request\"]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        ### Thanks for taking the time to create a block request! Please search open/closed requests before submitting, as the block or a similar one may have already been requested.\n\n  - type: textarea\n    id: block-description\n    attributes:\n      label: Description\n      description: Tell us about your block request\n      placeholder: \"A dashboard for an e-commerce website showing sales, orders, and customers...\"\n    validations:\n      required: true\n\n  - type: input\n    id: block-example-url\n    attributes:\n      label: Example\n      description: Link to an example of the block\n      placeholder: ex. https://example.com\n    validations:\n      required: false\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: [shadcn]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: \"Bug report\"\ndescription: Report an issue\ntitle: '[bug]: '\nlabels: [\"bug\"]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        ### Thanks for taking the time to create a bug report. Please search open/closed issues before submitting, as the issue may have already been reported/addressed.\n \n  - type: markdown\n    attributes:\n      value: |\n        #### If you aren't sure this is a bug or not, please open a discussion instead:\n        - [Discussions](https://github.com/shadcn-ui/ui/discussions/new?category=general)\n\n  - type: textarea\n    id: bug-description\n    attributes:\n      label: Describe the bug\n      description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us how in the description. Thanks!\n      placeholder: Bug description\n    validations:\n      required: true\n\n  - type: input\n    id: components-affected\n    attributes:\n      label: Affected component/components\n      description: Which shadcn/ui components are affected?\n      placeholder: ex. Button, Checkbox...\n    validations:\n      required: true\n\n  - type: textarea\n    id: reproduction\n    attributes:\n      label: How to reproduce\n      description:  A step-by-step description of how to reproduce the bug.\n      placeholder: |\n        1. Go to '...'\n        2. Click on '....'\n        3. See error\n    validations:\n      required: true\n\n  - type: input\n    id: codesandbox-stackblitz\n    attributes:\n      label: Codesandbox/StackBlitz link\n      description: | \n        A link to a CodeSandbox or StackBlitz that includes a minimal reproduction of the problem. In rare cases when not applicable, you can link to a GitHub repository that we can easily run to recreate the issue. If a report is vague and does not have a reproduction, it will be closed without warning. \n\n        > [!CAUTION]\n        > If you skip this step, this issue might be **labeled** with `please add a reproduction` and **closed**.\n    validations:\n      required: false\n\n  - type: textarea\n    id: logs\n    attributes:\n      label: Logs\n      description: \"Please include browser console and server logs around the time this bug occurred. Optional if provided reproduction. Please try not to insert an image but copy paste the log text.\"\n      render: bash\n\n  - type: textarea\n    id: system-info\n    attributes:\n      label: System Info\n      description: Information about browsers, system or binaries that's relevant.\n      render: bash\n      placeholder: System, Binaries, Browsers\n    validations:\n      required: true\n\n  - type: checkboxes\n    id: terms\n    attributes:\n      label: Before submitting\n      description: By submitting this issue, you agree to follow our [Contributing Guidelines](https://github.com/shadcn-ui/ui/blob/main/CONTRIBUTING.md).\n      options:\n        - label: I've made research efforts and searched the documentation\n          required: true\n        - label: I've searched for existing issues\n          required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Get Help\n    url: https://github.com/shadcn-ui/ui/discussions/new?category=general\n    about: If you can't get something to work the way you expect, open a question in our discussion forums."
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "name: \"Feature request\"\ndescription: Create a feature request for shadcn/ui\ntitle: '[feat]: '\nlabels: ['area: request']\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        ### Thanks for taking the time to create a feature request! Please search open/closed issues before submitting, as the issue may have already been reported/addressed.\n \n  - type: markdown\n    attributes:\n      value: |\n        #### If you aren't sure this is a bug or not, please open a discussion instead:\n        - [Discussions](https://github.com/shadcn-ui/ui/discussions/new?category=general)\n\n  - type: textarea\n    id: feature-description\n    attributes:\n      label: Feature description\n      description: Tell us about your feature request\n      placeholder: 'I think this feature would be great because...'\n      value: 'Describe your feature request...'\n    validations:\n      required: true\n\n  - type: input\n    id: components-affected\n    attributes:\n      label: Affected component/components\n      description: Is this feature request relevant to any of the already existing components?\n      placeholder: ex. Button, Checkbox...\n    validations:\n      required: false\n\n  - type: textarea\n    id: context\n    attributes:\n      label: Additional Context\n      description: Add any other context about the feature here.\n      placeholder: ex. screenshots, Stack Overflow links, forum links, etc.\n      value: 'Additional details here...'\n    validations:\n      required: false\n\n  - type: checkboxes\n    id: terms\n    attributes:\n      label: Before submitting\n      description: By submitting this issue, you agree to follow our [Contributing Guidelines](https://github.com/shadcn-ui/ui/blob/main/CONTRIBUTING.md).\n      options:\n        - label: I've made research efforts and searched the documentation\n          required: true\n        - label: I've searched for existing issues and PRs\n          required: true\n"
  },
  {
    "path": ".github/changeset-version.js",
    "content": "// ORIGINALLY FROM CLOUDFLARE WRANGLER:\n// https://github.com/cloudflare/wrangler2/blob/main/.github/changeset-version.js\n\nimport { execSync } from \"child_process\"\n\n// This script is used by the `release.yml` workflow to update the version of the packages being released.\n// The standard step is only to run `changeset version` but this does not update the pnpm-lock.yaml file.\n// So we also run `pnpm install`, which does this update.\n// This is a workaround until this is handled automatically by `changeset version`.\n// See https://github.com/changesets/changesets/issues/421.\nexecSync(\"npx changeset version\", { stdio: \"inherit\" })\nexecSync(\"pnpm install --lockfile-only\", { stdio: \"inherit\" })\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/astro-app\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/astro-monorepo\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/next-app\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/next-monorepo\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/react-router-app\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/react-router-monorepo\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/start-app\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/start-monorepo\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/vite-app\"\n    schedule:\n      interval: \"weekly\"\n  - package-ecosystem: \"npm\"\n    directory: \"/templates/vite-monorepo\"\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/version-script-beta.js",
    "content": "// ORIGINALLY FROM CLOUDFLARE WRANGLER:\n// https://github.com/cloudflare/wrangler2/blob/main/.github/version-script.js\n\nimport { exec } from \"child_process\"\nimport fs from \"fs\"\n\nconst pkgJsonPath = \"packages/shadcn/package.json\"\ntry {\n  const pkg = JSON.parse(fs.readFileSync(pkgJsonPath))\n  exec(\"git rev-parse --short HEAD\", (err, stdout) => {\n    if (err) {\n      console.log(err)\n      process.exit(1)\n    }\n    pkg.version = \"0.0.0-beta.\" + stdout.trim()\n    fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, \"\\t\") + \"\\n\")\n  })\n} catch (error) {\n  console.error(error)\n  process.exit(1)\n}\n"
  },
  {
    "path": ".github/version-script-next.js",
    "content": "// ORIGINALLY FROM CLOUDFLARE WRANGLER:\n// https://github.com/cloudflare/wrangler2/blob/main/.github/version-script.js\n\nimport { exec } from \"child_process\"\nimport fs from \"fs\"\n\nconst pkgJsonPath = \"packages/shadcn/package.json\"\ntry {\n  const pkg = JSON.parse(fs.readFileSync(pkgJsonPath))\n  exec(\"git rev-parse --short HEAD\", (err, stdout) => {\n    if (err) {\n      console.log(err)\n      process.exit(1)\n    }\n    pkg.version = \"0.0.0-next.\" + stdout.trim()\n    fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, \"\\t\") + \"\\n\")\n  })\n} catch (error) {\n  console.error(error)\n  process.exit(1)\n}\n"
  },
  {
    "path": ".github/workflows/code-check.yml",
    "content": "name: Code check\n\non:\n  pull_request:\n    branches: [\"*\"]\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    name: pnpm lint\n    steps:\n      - uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n      - name: Install Node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: 20\n\n      - uses: pnpm/action-setup@v4\n        name: Install pnpm\n        id: pnpm-install\n        with:\n          version: 9.0.6\n          run_install: false\n\n      - name: Get pnpm store directory\n        id: pnpm-cache\n        run: |\n          echo \"pnpm_cache_dir=$(pnpm store path)\" >> $GITHUB_OUTPUT\n      - uses: actions/cache@v3\n        name: Setup pnpm cache\n        with:\n          path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}\n          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}\n          restore-keys: |\n            ${{ runner.os }}-pnpm-store-\n      - name: Install dependencies\n        run: pnpm install\n\n      - run: pnpm lint\n\n  format:\n    runs-on: ubuntu-latest\n    name: pnpm format:check\n    steps:\n      - uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n      - name: Install Node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: 20\n\n      - uses: pnpm/action-setup@v4\n        name: Install pnpm\n        id: pnpm-install\n        with:\n          version: 9.0.6\n          run_install: false\n\n      - name: Get pnpm store directory\n        id: pnpm-cache\n        run: |\n          echo \"pnpm_cache_dir=$(pnpm store path)\" >> $GITHUB_OUTPUT\n\n      - uses: actions/cache@v3\n        name: Setup pnpm cache\n        with:\n          path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}\n          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}\n          restore-keys: |\n            ${{ runner.os }}-pnpm-store-\n\n      - name: Install dependencies\n        run: pnpm install\n\n      - name: Build packages\n        run: pnpm --filter=shadcn build\n\n      - run: pnpm format:check\n\n  tsc:\n    runs-on: ubuntu-latest\n    name: pnpm typecheck\n    steps:\n      - uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n      - name: Install Node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: 20\n\n      - uses: pnpm/action-setup@v4\n        name: Install pnpm\n        id: pnpm-install\n        with:\n          version: 9.0.6\n          run_install: false\n\n      - name: Get pnpm store directory\n        id: pnpm-cache\n        run: |\n          echo \"pnpm_cache_dir=$(pnpm store path)\" >> $GITHUB_OUTPUT\n      - uses: actions/cache@v3\n        name: Setup pnpm cache\n        with:\n          path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}\n          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}\n          restore-keys: |\n            ${{ runner.os }}-pnpm-store-\n      - name: Install dependencies\n        run: pnpm install\n\n      - name: Build packages\n        run: pnpm --filter=shadcn build\n\n      - run: pnpm typecheck\n"
  },
  {
    "path": ".github/workflows/issue-stale.yml",
    "content": "# Adapted from vercel/next.js\nname: \"Stale issue handler\"\non:\n  workflow_dispatch:\n  schedule:\n    # This runs every day 20 minutes before midnight: https://crontab.guru/#40_23_*_*_*\n    - cron: \"40 23 * * *\"\n\njobs:\n  stale:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'shadcn-ui'\n    steps:\n      - uses: actions/stale@v9\n        id: issue-stale\n        name: \"Mark stale issues, close stale issues\"\n        with:\n          repo-token: ${{ secrets.STALE_TOKEN }}\n          ascending: true\n          days-before-issue-close: 7\n          days-before-issue-stale: 365\n          days-before-pr-stale: -1\n          days-before-pr-close: -1\n          remove-issue-stale-when-updated: true\n          stale-issue-label: \"stale?\"\n          exempt-issue-labels: \"roadmap,next\"\n          stale-issue-message: \"This issue has been automatically marked as stale due to one year of inactivity. It will be closed in 7 days unless there’s further input. If you believe this issue is still relevant, please leave a comment or provide updated details. Thank you. (This is an automated message)\"\n          close-issue-message: \"This issue has been automatically closed due to one year of inactivity. If you’re still experiencing a similar problem or have additional details to share, please open a new issue following our current issue template. Your updated report helps us investigate and address concerns more efficiently. Thank you for your understanding! (This is an automated message)\"\n          operations-per-run: 300\n      - uses: actions/stale@v9\n        id: pr-state\n        name: \"Mark stale PRs, close stale PRs\"\n        with:\n          repo-token: ${{ secrets.STALE_TOKEN }}\n          ascending: true\n          days-before-issue-close: -1\n          days-before-issue-stale: -1\n          days-before-pr-close: 7\n          days-before-pr-stale: 365\n          remove-pr-stale-when-updated: true\n          exempt-pr-labels: \"roadmap,next,bug\"\n          stale-pr-label: \"stale?\"\n          stale-pr-message: \"This PR has been automatically marked as stale due to one year of inactivity. It will be closed in 7 days unless there’s further input. If you believe this PR is still relevant, please leave a comment or provide updated details. Thank you. (This is an automated message)\"\n          close-pr-message: \"This PR has been automatically closed due to one year of inactivity. Thank you for your understanding! (This is an automated message)\"\n          operations-per-run: 300\n"
  },
  {
    "path": ".github/workflows/prerelease-comment.yml",
    "content": "# Adapted from create-t3-app.\nname: Write Beta Release comment\n\non:\n  workflow_run:\n    workflows: [\"Release - Beta\"]\n    types:\n      - completed\n\njobs:\n  comment:\n    if: |\n      github.repository_owner == 'shadcn-ui' &&\n      ${{ github.event.workflow_run.conclusion == 'success' }}\n    runs-on: ubuntu-latest\n    name: Write comment to the PR\n    steps:\n      - name: \"Comment on PR\"\n        uses: actions/github-script@v6\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              run_id: context.payload.workflow_run.id,\n            });\n\n            for (const artifact of allArtifacts.data.artifacts) {\n              // Extract the PR number and package version from the artifact name\n              const match = /^npm-package-shadcn@(.*?)-pr-(\\d+)/.exec(artifact.name);\n\n              if (match) {\n                require(\"fs\").appendFileSync(\n                  process.env.GITHUB_ENV,\n                  `\\nBETA_PACKAGE_VERSION=${match[1]}` +\n                  `\\nWORKFLOW_RUN_PR=${match[2]}` +\n                  `\\nWORKFLOW_RUN_ID=${context.payload.workflow_run.id}`\n                );\n                break;\n              }\n            }\n\n      - name: \"Comment on PR with Link\"\n        uses: marocchino/sticky-pull-request-comment@v2\n        with:\n          number: ${{ env.WORKFLOW_RUN_PR }}\n          message: |\n            A new prerelease is available for testing:\n\n            ```sh\n            pnpm dlx shadcn@${{ env.BETA_PACKAGE_VERSION }}\n            ```\n\n      - name: \"Remove the autorelease label once published\"\n        uses: actions/github-script@v6\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            github.rest.issues.removeLabel({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              issue_number: '${{ env.WORKFLOW_RUN_PR }}',\n              name: '🚀 autorelease',\n            });\n"
  },
  {
    "path": ".github/workflows/prerelease.yml",
    "content": "# Adapted from create-t3-app.\n\nname: Release - Beta\n\non:\n  pull_request:\n    types: [labeled]\n    branches:\n      - main\n\npermissions:\n  id-token: write\n  contents: read\n\njobs:\n  prerelease:\n    if: |\n      github.repository_owner == 'shadcn-ui' &&\n      contains(github.event.pull_request.labels.*.name, '🚀 autorelease')\n    name: Build & Publish a beta release to NPM\n    runs-on: ubuntu-latest\n    environment: Preview\n\n    steps:\n      - name: Checkout Repo\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Use PNPM\n        uses: pnpm/action-setup@v4\n        with:\n          version: 9.0.6\n\n      - name: Use Node.js 20\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n          registry-url: \"https://registry.npmjs.org\"\n          cache: \"pnpm\"\n\n      - name: Update npm for OIDC support\n        run: npm install -g npm@latest\n\n      - name: Install NPM Dependencies\n        run: pnpm install\n\n      - name: Modify package.json version\n        run: node .github/version-script-beta.js\n\n      - name: Publish Beta to NPM\n        run: pnpm pub:beta\n\n      - name: get-npm-version\n        id: package-version\n        uses: martinbeentjes/npm-get-version-action@main\n        with:\n          path: packages/shadcn\n\n      - name: Upload packaged artifact\n        uses: actions/upload-artifact@v4\n        with:\n          name: npm-package-shadcn@${{ steps.package-version.outputs.current-version }}-pr-${{ github.event.number }} # encode the PR number into the artifact name\n          path: packages/shadcn/dist/index.js\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "# Adapted from create-t3-app.\n\nname: Release\n\non:\n  push:\n    branches:\n      - main\n\npermissions:\n  id-token: write\n  contents: write\n  pull-requests: write\n\njobs:\n  release:\n    if: ${{ github.repository_owner == 'shadcn-ui' }}\n    name: Create a PR for release workflow\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout Repo\n        uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n      - name: Use PNPM\n        uses: pnpm/action-setup@v4\n        with:\n          version: 9.0.6\n\n      - name: Use Node.js 20\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n          registry-url: \"https://registry.npmjs.org\"\n          cache: \"pnpm\"\n\n      - name: Update npm for OIDC support\n        run: npm install -g npm@latest\n\n      - name: Install NPM Dependencies\n        run: pnpm install\n\n      # - name: Check for errors\n      #   run: pnpm check\n\n      - name: Build the package\n        run: pnpm shadcn:build\n\n      - name: Create Version PR or Publish to NPM\n        id: changesets\n        uses: changesets/action@v1\n        with:\n          commit: \"chore(release): version packages\"\n          title: \"chore(release): version packages\"\n          version: node .github/changeset-version.js\n          publish: npx changeset publish\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          NODE_ENV: \"production\"\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "name: Test\n\non:\n  pull_request:\n    branches: [\"*\"]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    name: pnpm test\n    env:\n      NEXT_PUBLIC_APP_URL: http://localhost:4000\n      NEXT_PUBLIC_V0_URL: https://v0.dev\n    steps:\n      - uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n      - name: Install Node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: 22\n\n      - uses: pnpm/action-setup@v4\n        name: Install pnpm\n        id: pnpm-install\n        with:\n          version: 9.0.6\n          run_install: false\n\n      - name: Get pnpm store directory\n        id: pnpm-cache\n        run: |\n          echo \"pnpm_cache_dir=$(pnpm store path)\" >> $GITHUB_OUTPUT\n      - uses: actions/cache@v3\n        name: Setup pnpm cache\n        with:\n          path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}\n          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}\n          restore-keys: |\n            ${{ runner.os }}-pnpm-store-\n      - name: Install dependencies\n        run: pnpm install\n\n      - run: pnpm test\n"
  },
  {
    "path": ".github/workflows/validate-registries.yml",
    "content": "name: Validate Registries\n\non:\n  pull_request:\n    paths:\n      - \"apps/v4/public/r/registries.json\"\n      - \"apps/v4/registry/directory.json\"\n  push:\n    branches:\n      - main\n    paths:\n      - \"apps/v4/public/r/registries.json\"\n      - \"apps/v4/registry/directory.json\"\n\njobs:\n  check-registry-sync:\n    if: github.event_name == 'pull_request'\n    runs-on: ubuntu-latest\n    name: check-registry-sync\n    permissions:\n      contents: read\n      pull-requests: write\n    steps:\n      - name: Check changed files\n        id: changed\n        env:\n          GH_TOKEN: ${{ github.token }}\n        run: |\n          CHANGED_FILES=$(gh pr diff ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --name-only)\n\n          DIRECTORY_CHANGED=false\n          REGISTRIES_CHANGED=false\n\n          if echo \"$CHANGED_FILES\" | grep -q \"^apps/v4/registry/directory.json$\"; then\n            DIRECTORY_CHANGED=true\n          fi\n\n          if echo \"$CHANGED_FILES\" | grep -q \"^apps/v4/public/r/registries.json$\"; then\n            REGISTRIES_CHANGED=true\n          fi\n\n          echo \"directory_changed=$DIRECTORY_CHANGED\" >> $GITHUB_OUTPUT\n          echo \"registries_changed=$REGISTRIES_CHANGED\" >> $GITHUB_OUTPUT\n\n      - name: Flag missing registries.json update\n        if: steps.changed.outputs.directory_changed == 'true' && steps.changed.outputs.registries_changed == 'false'\n        env:\n          GH_TOKEN: ${{ github.token }}\n        run: |\n          gh pr edit ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --add-label \"registries: invalid\"\n          gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body \"can you run \\`pnpm registry:build\\` and commit the json files please?\"\n          exit 1\n\n  validate:\n    runs-on: ubuntu-latest\n    name: pnpm validate:registries\n    permissions:\n      contents: read\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Install Node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: 20\n\n      - name: Block reserved registry namespaces\n        env:\n          RESERVED_NAMESPACES: \"@shadcn,@ui,@blocks,@components,@block,@component,@util,@utils,@registry,@lib,@hook,@hooks,@theme,@themes,@chart,@charts\"\n        run: |\n          node <<'EOF'\n          const fs = require(\"node:fs\")\n\n          const files = [\n            \"apps/v4/public/r/registries.json\",\n            \"apps/v4/registry/directory.json\",\n          ]\n          const reservedNamespaces = new Set(\n            process.env.RESERVED_NAMESPACES.split(\",\").filter(Boolean)\n          )\n\n          function readNames(filePath) {\n            return JSON.parse(fs.readFileSync(filePath, \"utf8\")).map(\n              (entry) => entry.name\n            )\n          }\n\n          const violations = files.flatMap((filePath) => {\n            return readNames(filePath)\n              .filter((name) => reservedNamespaces.has(name))\n              .map((name) => `${filePath}: ${name}`)\n          })\n\n          if (violations.length > 0) {\n            console.error(\"Reserved registry namespaces are not allowed:\")\n\n            for (const violation of violations) {\n              console.error(`- ${violation}`)\n            }\n\n            process.exit(1)\n          }\n          EOF\n\n      - uses: pnpm/action-setup@v4\n        name: Install pnpm\n        id: pnpm-install\n        with:\n          version: 9.0.6\n          run_install: false\n\n      - name: Get pnpm store directory\n        id: pnpm-cache\n        run: |\n          echo \"pnpm_cache_dir=$(pnpm store path)\" >> $GITHUB_OUTPUT\n      - uses: actions/cache@v3\n        name: Setup pnpm cache\n        with:\n          path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}\n          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}\n          restore-keys: |\n            ${{ runner.os }}-pnpm-store-\n      - name: Install dependencies\n        run: pnpm install\n\n      - name: Validate registries\n        run: pnpm --filter=v4 validate:registries\n"
  },
  {
    "path": ".gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\nnode_modules\n.pnp\n.pnp.js\n\n# testing\ncoverage\n\n# next.js\n.next/\nout/\nbuild\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# turbo\n.turbo\n\n.contentlayer\ntsconfig.tsbuildinfo\n\n# ide\n.idea\n.fleet\n.vscode\n\n.notes\n.playwright-mcp\nshadcn-workspace\n"
  },
  {
    "path": ".kodiak.toml",
    "content": "# .kodiak.toml\nversion = 1\n\n[merge]\nautomerge_label = \"automerge\"\nrequire_automerge_label = true\nmethod = \"squash\"\ndelete_branch_on_merge = true\noptimistic_updates = false\nprioritize_ready_to_merge = true\nnotify_on_conflict = true\n\n[merge.message]\ntitle = \"pull_request_title\"\nbody = \"pull_request_body\"\ninclude_pr_number = true\nbody_type = \"markdown\"\nstrip_html_comments = true\n"
  },
  {
    "path": ".npmrc",
    "content": "auto-install-peers=true\nlink-workspace-packages=true\n"
  },
  {
    "path": ".nvmrc",
    "content": "v20.5.1\n"
  },
  {
    "path": ".prettierignore",
    "content": "dist\nnode_modules\n.next\nbuild\n.contentlayer\n**/fixtures\ndeprecated\napps/v4/registry/styles/**/*.css\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nThanks for your interest in contributing to ui.shadcn.com. We're happy to have you here.\n\nPlease take a moment to review this document before submitting your first pull request. We also strongly recommend that you check for open issues and pull requests to see if someone else is working on something similar.\n\nIf you need any help, feel free to reach out to [@shadcn](https://twitter.com/shadcn).\n\n## About this repository\n\nThis repository is a monorepo.\n\n- We use [pnpm](https://pnpm.io) and [`workspaces`](https://pnpm.io/workspaces) for development.\n- We use [Turborepo](https://turbo.build/repo) as our build system.\n- We use [changesets](https://github.com/changesets/changesets) for managing releases.\n\n## Structure\n\nThis repository is structured as follows:\n\n```\napps\n└── v4\n    ├── app\n    ├── components\n    ├── content\n    └── registry\n        └── new-york-v4\n            ├── example\n            └── ui\npackages\n└── shadcn\n```\n\n| Path                 | Description                              |\n| -------------------- | ---------------------------------------- |\n| `apps/v4/app`        | The Next.js application for the website. |\n| `apps/v4/components` | The React components for the website.    |\n| `apps/v4/content`    | The content for the website.             |\n| `apps/v4/registry`   | The registry for the components.         |\n| `packages/shadcn`    | The `shadcn` package.                    |\n\n## Development\n\n### Fork this repo\n\nYou can fork this repo by clicking the fork button in the top right corner of this page.\n\n### Clone on your local machine\n\n```bash\ngit clone https://github.com/your-username/ui.git\n```\n\n### Navigate to project directory\n\n```bash\ncd ui\n```\n\n### Create a new Branch\n\n```bash\ngit checkout -b my-new-branch\n```\n\n### Install dependencies\n\n```bash\npnpm install\n```\n\n### Run a workspace\n\nYou can use the `pnpm --filter=[WORKSPACE]` command to start the development process for a workspace.\n\n#### Examples\n\n1. To run the `ui.shadcn.com` website:\n\n```bash\npnpm --filter=v4 dev\n```\n\n2. To run the `shadcn` package:\n\n```bash\npnpm --filter=shadcn dev\n```\n\n## Running the CLI Locally\n\nTo run the CLI locally, you can follow the workflow:\n\n1. Start by running the dev server:\n\n   ```bash\n   pnpm dev\n   ```\n\n2. In another terminal tab, test the CLI by running:\n\n   ```bash\n   pnpm shadcn\n   ```\n\n   To test the CLI in a specific app, use a command like:\n\n   ```bash\n   pnpm shadcn <init | add | ...> -c ~/Desktop/my-app\n   ```\n\nThis workflow ensures that you are running the most recent version of the registry and testing the CLI properly in your local environment.\n\n## Documentation\n\nThe documentation for this project is located in the `v4` workspace. You can run the documentation locally by running the following command:\n\n```bash\npnpm --filter=v4 dev\n```\n\nDocumentation is written using [MDX](https://mdxjs.com). You can find the documentation files in the `apps/v4/content/docs` directory.\n\n## Components\n\nWe use a registry system for developing components. You can find the source code for the components under `apps/v4/registry`. The components are organized by styles.\n\n```bash\napps\n└── v4\n    └── registry\n        └── new-york-v4\n            ├── example\n            └── ui\n```\n\nWhen adding or modifying components, please ensure that:\n\n1. You make the changes for every style.\n2. You update the documentation.\n3. You run `pnpm registry:build` to update the registry.\n\n## Commit Convention\n\nBefore you create a Pull Request, please check whether your commits comply with\nthe commit conventions used in this repository.\n\nWhen you create a commit we kindly ask you to follow the convention\n`category(scope or module): message` in your commit message while using one of\nthe following categories:\n\n- `feat / feature`: all changes that introduce completely new code or new\n  features\n- `fix`: changes that fix a bug (ideally you will additionally reference an\n  issue if present)\n- `refactor`: any code related change that is not a fix nor a feature\n- `docs`: changing existing or creating new documentation (i.e. README, docs for\n  usage of a lib or cli usage)\n- `build`: all changes regarding the build of the software, changes to\n  dependencies or the addition of new dependencies\n- `test`: all changes regarding tests (adding new tests or changing existing\n  ones)\n- `ci`: all changes regarding the configuration of continuous integration (i.e.\n  github actions, ci system)\n- `chore`: all changes to the repository that do not fit into any of the above\n  categories\n\n  e.g. `feat(components): add new prop to the avatar component`\n\nIf you are interested in the detailed specification you can visit\nhttps://www.conventionalcommits.org/ or check out the\n[Angular Commit Message Guidelines](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines).\n\n## Requests for new components\n\nIf you have a request for a new component, please open a discussion on GitHub. We'll be happy to help you out.\n\n## CLI\n\nThe `shadcn` package is a CLI for adding components to your project. You can find the documentation for the CLI [here](https://ui.shadcn.com/docs/cli).\n\nAny changes to the CLI should be made in the `packages/shadcn` directory. If you can, it would be great if you could add tests for your changes.\n\n## Testing\n\nTests are written using [Vitest](https://vitest.dev). You can run all the tests from the root of the repository.\n\n```bash\npnpm test\n```\n\nPlease ensure that the tests are passing when submitting a pull request. If you're adding new features, please include tests.\n"
  },
  {
    "path": "LICENSE.md",
    "content": "MIT License\n\nCopyright (c) 2023 shadcn\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": "# shadcn/ui\n\nA set of beautifully designed components that you can customize, extend, and build on. Start here then make it your own. Open Source. Open Code. **Use this to build your own component library**.\n\n![hero](apps/v4/public/opengraph-image.png)\n\n## Documentation\n\nVisit https://ui.shadcn.com/docs to view the documentation.\n\n## Contributing\n\nPlease read the [contributing guide](/CONTRIBUTING.md).\n\n## License\n\nLicensed under the [MIT license](./LICENSE.md).\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\nIf you believe you have found a security vulnerability, we encourage you to let us know right away.\n\nWe will investigate all legitimate reports and do our best to quickly fix the problem.\n\nOur preference is that you make use of GitHub's private vulnerability reporting feature to disclose potential security vulnerabilities in our Open Source Software. \n\nTo do this, please visit the security tab of the repository and click the [Report a vulnerability](https://github.com/shadcn-ui/ui/security/advisories/new) button.\n"
  },
  {
    "path": "apps/v4/.env.example",
    "content": "NEXT_PUBLIC_V0_URL=https://v0.dev\nNEXT_PUBLIC_APP_URL=http://localhost:4000"
  },
  {
    "path": "apps/v4/.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.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# env files (can opt-in for committing if needed)\n.env*\n!.env.example\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n\n\n# generated content\n.contentlayer\n.content-collections\n.source\n"
  },
  {
    "path": "apps/v4/.prettierignore",
    "content": "dist\nnode_modules\n.next\nbuild\n.contentlayer\nregistry/__index__.tsx\ncontent/docs/components/calendar.mdx\nregistry/styles/**/*.css\n"
  },
  {
    "path": "apps/v4/README.md",
    "content": "This is a wip registry for the `shadcn` canary version. It has React 19 and Tailwind v4 components.\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/appearance-settings.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\nimport { IconMinus, IconPlus } from \"@tabler/icons-react\"\n\nexport function AppearanceSettings() {\n  const [gpuCount, setGpuCount] = React.useState(8)\n\n  const handleGpuAdjustment = React.useCallback((adjustment: number) => {\n    setGpuCount((prevCount) =>\n      Math.max(1, Math.min(99, prevCount + adjustment))\n    )\n  }, [])\n\n  const handleGpuInputChange = React.useCallback(\n    (e: React.ChangeEvent<HTMLInputElement>) => {\n      const value = parseInt(e.target.value, 10)\n      if (!isNaN(value) && value >= 1 && value <= 99) {\n        setGpuCount(value)\n      }\n    },\n    []\n  )\n\n  return (\n    <FieldSet>\n      <FieldGroup>\n        <FieldSet>\n          <FieldLegend>Compute Environment</FieldLegend>\n          <FieldDescription>\n            Select the compute environment for your cluster.\n          </FieldDescription>\n          <RadioGroup defaultValue=\"kubernetes\">\n            <FieldLabel htmlFor=\"kubernetes-r2h\">\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>Kubernetes</FieldTitle>\n                  <FieldDescription>\n                    Run GPU workloads on a K8s configured cluster. This is the\n                    default.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value=\"kubernetes\"\n                  id=\"kubernetes-r2h\"\n                  aria-label=\"Kubernetes\"\n                />\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"vm-z4k\">\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>Virtual Machine</FieldTitle>\n                  <FieldDescription>\n                    Access a VM configured cluster to run workloads. (Coming\n                    soon)\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value=\"vm\"\n                  id=\"vm-z4k\"\n                  aria-label=\"Virtual Machine\"\n                />\n              </Field>\n            </FieldLabel>\n          </RadioGroup>\n        </FieldSet>\n        <FieldSeparator />\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"number-of-gpus-f6l\">Number of GPUs</FieldLabel>\n            <FieldDescription>You can add more later.</FieldDescription>\n          </FieldContent>\n          <ButtonGroup>\n            <Input\n              id=\"number-of-gpus-f6l\"\n              value={gpuCount}\n              onChange={handleGpuInputChange}\n              size={3}\n              className=\"h-7 w-14! font-mono\"\n              maxLength={3}\n            />\n            <Button\n              variant=\"outline\"\n              size=\"icon-sm\"\n              type=\"button\"\n              aria-label=\"Decrement\"\n              onClick={() => handleGpuAdjustment(-1)}\n              disabled={gpuCount <= 1}\n            >\n              <IconMinus />\n            </Button>\n            <Button\n              variant=\"outline\"\n              size=\"icon-sm\"\n              type=\"button\"\n              aria-label=\"Increment\"\n              onClick={() => handleGpuAdjustment(1)}\n              disabled={gpuCount >= 99}\n            >\n              <IconPlus />\n            </Button>\n          </ButtonGroup>\n        </Field>\n        <FieldSeparator />\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"tinting\">Wallpaper Tinting</FieldLabel>\n            <FieldDescription>\n              Allow the wallpaper to be tinted.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"tinting\" defaultChecked />\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/button-group-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  ArchiveIcon,\n  ArrowLeftIcon,\n  CalendarPlusIcon,\n  ClockIcon,\n  ListFilterIcon,\n  MailCheckIcon,\n  MoreHorizontalIcon,\n  TagIcon,\n  Trash2Icon,\n} from \"lucide-react\"\n\nexport function ButtonGroupDemo() {\n  const [label, setLabel] = React.useState(\"personal\")\n\n  return (\n    <ButtonGroup>\n      <ButtonGroup className=\"hidden sm:flex\">\n        <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Go Back\">\n          <ArrowLeftIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          Archive\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Report\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          Snooze\n        </Button>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"More Options\">\n              <MoreHorizontalIcon />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" className=\"w-48\">\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <MailCheckIcon />\n                Mark as Read\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <ArchiveIcon />\n                Archive\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <ClockIcon />\n                Snooze\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CalendarPlusIcon />\n                Add to Calendar\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <ListFilterIcon />\n                Add to List\n              </DropdownMenuItem>\n              <DropdownMenuSub>\n                <DropdownMenuSubTrigger>\n                  <TagIcon />\n                  Label As...\n                </DropdownMenuSubTrigger>\n                <DropdownMenuSubContent>\n                  <DropdownMenuRadioGroup\n                    value={label}\n                    onValueChange={setLabel}\n                  >\n                    <DropdownMenuRadioItem value=\"personal\">\n                      Personal\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"work\">\n                      Work\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"other\">\n                      Other\n                    </DropdownMenuRadioItem>\n                  </DropdownMenuRadioGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuSub>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem variant=\"destructive\">\n                <Trash2Icon />\n                Trash\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/button-group-input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { AudioLinesIcon, PlusIcon } from \"lucide-react\"\n\nexport function ButtonGroupInputGroup() {\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\n  return (\n    <ButtonGroup className=\"[--radius:9999rem]\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon\" aria-label=\"Add\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup className=\"flex-1\">\n        <InputGroup>\n          <InputGroupInput\n            placeholder={\n              voiceEnabled ? \"Record and send audio...\" : \"Send a message...\"\n            }\n            disabled={voiceEnabled}\n          />\n          <InputGroupAddon align=\"inline-end\">\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <InputGroupButton\n                  onClick={() => setVoiceEnabled(!voiceEnabled)}\n                  data-active={voiceEnabled}\n                  className=\"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground\"\n                  aria-pressed={voiceEnabled}\n                  size=\"icon-xs\"\n                  aria-label=\"Voice Mode\"\n                >\n                  <AudioLinesIcon />\n                </InputGroupButton>\n              </TooltipTrigger>\n              <TooltipContent>Voice Mode</TooltipContent>\n            </Tooltip>\n          </InputGroupAddon>\n        </InputGroup>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/button-group-nested.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\"\n\nexport function ButtonGroupNested() {\n  return (\n    <ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          1\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          2\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          3\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Previous\">\n          <ArrowLeftIcon />\n        </Button>\n        <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Next\">\n          <ArrowRightIcon />\n        </Button>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/button-group-popover.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { Separator } from \"@/examples/radix/ui/separator\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\nimport { BotIcon, ChevronDownIcon } from \"lucide-react\"\n\nexport function ButtonGroupPopover() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"outline\" size=\"sm\">\n        <BotIcon /> Copilot\n      </Button>\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Open Popover\">\n            <ChevronDownIcon />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent align=\"end\" className=\"gap-0 rounded-xl p-0 text-sm\">\n          <div className=\"px-4 py-3\">\n            <div className=\"text-sm font-medium\">Agent Tasks</div>\n          </div>\n          <Separator />\n          <div className=\"p-4 text-sm *:[p:not(:last-child)]:mb-2\">\n            <Textarea\n              placeholder=\"Describe your task in natural language.\"\n              className=\"mb-4 resize-none\"\n            />\n            <p className=\"font-medium\">Start a new task with Copilot</p>\n            <p className=\"text-muted-foreground\">\n              Describe your task in natural language. Copilot will work in the\n              background and open a pull request for your review.\n            </p>\n          </div>\n        </PopoverContent>\n      </Popover>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/empty-avatar-group.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarImage,\n} from \"@/examples/radix/ui/avatar\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport function EmptyAvatarGroup() {\n  return (\n    <Empty className=\"flex-none border py-10\">\n      <EmptyHeader>\n        <EmptyMedia>\n          <AvatarGroup className=\"grayscale\">\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </AvatarGroup>\n        </EmptyMedia>\n        <EmptyTitle>No Team Members</EmptyTitle>\n        <EmptyDescription>\n          Invite your team to collaborate on this project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button size=\"sm\">\n          <PlusIcon />\n          Invite Members\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/empty-input-group.tsx",
    "content": "import { SearchIcon } from \"lucide-react\"\n\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Kbd } from \"@/registry/new-york-v4/ui/kbd\"\n\nexport function EmptyInputGroup() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyTitle>404 - Not Found</EmptyTitle>\n        <EmptyDescription>\n          The page you&apos;re looking for doesn&apos;t exist. Try searching for\n          what you need below.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <InputGroup className=\"w-3/4\">\n          <InputGroupInput placeholder=\"Try searching for pages...\" />\n          <InputGroupAddon>\n            <SearchIcon />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <Kbd>/</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <EmptyDescription>\n          Need help? <a href=\"#\">Contact support</a>\n        </EmptyDescription>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/field-checkbox.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\n\nexport function FieldCheckbox() {\n  return (\n    <FieldLabel htmlFor=\"checkbox-demo\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"checkbox-demo\" defaultChecked />\n        <FieldLabel htmlFor=\"checkbox-demo\" className=\"line-clamp-1\">\n          I agree to the terms and conditions\n        </FieldLabel>\n      </Field>\n    </FieldLabel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/field-choice-card.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\n\nexport function FieldChoiceCard() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <FieldGroup>\n        <FieldSet>\n          <FieldLabel htmlFor=\"compute-environment-p8w\">\n            Compute Environment\n          </FieldLabel>\n          <FieldDescription>\n            Select the compute environment for your cluster.\n          </FieldDescription>\n          <RadioGroup defaultValue=\"kubernetes\">\n            <FieldLabel htmlFor=\"kubernetes-r2h\">\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem\n                  value=\"kubernetes\"\n                  id=\"kubernetes-r2h\"\n                  aria-label=\"Kubernetes\"\n                />\n                <FieldContent>\n                  <FieldTitle>Kubernetes</FieldTitle>\n                  <FieldDescription>\n                    Run GPU workloads on a K8s configured cluster.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"vm-z4k\">\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem\n                  value=\"vm\"\n                  id=\"vm-z4k\"\n                  aria-label=\"Virtual Machine\"\n                />\n                <FieldContent>\n                  <FieldTitle>Virtual Machine</FieldTitle>\n                  <FieldDescription>\n                    Access a VM configured cluster to run workloads.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n          </RadioGroup>\n        </FieldSet>\n      </FieldGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/field-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\n\nexport function FieldDemo() {\n  return (\n    <div className=\"w-full max-w-md rounded-xl border p-6\">\n      <form>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>Payment Method</FieldLegend>\n            <FieldDescription>\n              All transactions are secure and encrypted\n            </FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-name-43j\">\n                  Name on Card\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-name-43j\"\n                  placeholder=\"John Doe\"\n                  required\n                />\n              </Field>\n              <div className=\"grid grid-cols-3 gap-4\">\n                <Field className=\"col-span-2\">\n                  <FieldLabel htmlFor=\"checkout-7j9-card-number-uw1\">\n                    Card Number\n                  </FieldLabel>\n                  <Input\n                    id=\"checkout-7j9-card-number-uw1\"\n                    placeholder=\"1234 5678 9012 3456\"\n                    required\n                  />\n                  <FieldDescription>\n                    Enter your 16-digit number.\n                  </FieldDescription>\n                </Field>\n                <Field className=\"col-span-1\">\n                  <FieldLabel htmlFor=\"checkout-7j9-cvv\">CVV</FieldLabel>\n                  <Input id=\"checkout-7j9-cvv\" placeholder=\"123\" required />\n                </Field>\n              </div>\n              <div className=\"grid grid-cols-2 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-exp-month-ts6\">\n                    Month\n                  </FieldLabel>\n                  <Select defaultValue=\"\">\n                    <SelectTrigger id=\"checkout-7j9-exp-month-ts6\">\n                      <SelectValue placeholder=\"MM\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        <SelectItem value=\"01\">01</SelectItem>\n                        <SelectItem value=\"02\">02</SelectItem>\n                        <SelectItem value=\"03\">03</SelectItem>\n                        <SelectItem value=\"04\">04</SelectItem>\n                        <SelectItem value=\"05\">05</SelectItem>\n                        <SelectItem value=\"06\">06</SelectItem>\n                        <SelectItem value=\"07\">07</SelectItem>\n                        <SelectItem value=\"08\">08</SelectItem>\n                        <SelectItem value=\"09\">09</SelectItem>\n                        <SelectItem value=\"10\">10</SelectItem>\n                        <SelectItem value=\"11\">11</SelectItem>\n                        <SelectItem value=\"12\">12</SelectItem>\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-exp-year-f59\">\n                    Year\n                  </FieldLabel>\n                  <Select defaultValue=\"\">\n                    <SelectTrigger id=\"checkout-7j9-exp-year-f59\">\n                      <SelectValue placeholder=\"YYYY\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        <SelectItem value=\"2024\">2024</SelectItem>\n                        <SelectItem value=\"2025\">2025</SelectItem>\n                        <SelectItem value=\"2026\">2026</SelectItem>\n                        <SelectItem value=\"2027\">2027</SelectItem>\n                        <SelectItem value=\"2028\">2028</SelectItem>\n                        <SelectItem value=\"2029\">2029</SelectItem>\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n              </div>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>Billing Address</FieldLegend>\n            <FieldDescription>\n              The billing address associated with your payment method\n            </FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  id=\"checkout-7j9-same-as-shipping-wgm\"\n                  defaultChecked\n                />\n                <FieldLabel\n                  htmlFor=\"checkout-7j9-same-as-shipping-wgm\"\n                  className=\"font-normal\"\n                >\n                  Same as shipping address\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-optional-comments\">\n                  Comments\n                </FieldLabel>\n                <Textarea\n                  id=\"checkout-7j9-optional-comments\"\n                  placeholder=\"Add any additional comments\"\n                />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <Field orientation=\"horizontal\">\n            <Button type=\"submit\">Submit</Button>\n            <Button variant=\"outline\" type=\"button\">\n              Cancel\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/field-hear.tsx",
    "content": "import { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/radix/ui/field\"\n\nconst options = [\n  {\n    label: \"Social Media\",\n    value: \"social-media\",\n  },\n\n  {\n    label: \"Search Engine\",\n    value: \"search-engine\",\n  },\n  {\n    label: \"Referral\",\n    value: \"referral\",\n  },\n  {\n    label: \"Other\",\n    value: \"other\",\n  },\n]\n\nexport function FieldHear() {\n  return (\n    <Card className=\"py-4 shadow-none\">\n      <CardContent className=\"px-4\">\n        <form>\n          <FieldGroup>\n            <FieldSet className=\"gap-4\">\n              <FieldLegend>How did you hear about us?</FieldLegend>\n              <FieldDescription className=\"line-clamp-1\">\n                Select the option that best describes how you heard about us.\n              </FieldDescription>\n              <FieldGroup className=\"flex flex-row flex-wrap gap-2 [--radius:9999rem]\">\n                {options.map((option) => (\n                  <FieldLabel\n                    htmlFor={option.value}\n                    key={option.value}\n                    className=\"w-fit!\"\n                  >\n                    <Field\n                      orientation=\"horizontal\"\n                      className=\"gap-1.5 overflow-hidden px-3! py-1.5! transition-all duration-100 ease-linear group-has-data-[state=checked]/field-label:px-2!\"\n                    >\n                      <Checkbox\n                        value={option.value}\n                        id={option.value}\n                        defaultChecked={option.value === \"social-media\"}\n                        className=\"-ml-6 -translate-x-1 rounded-full transition-all duration-100 ease-linear data-[state=checked]:ml-0 data-[state=checked]:translate-x-0\"\n                      />\n                      <FieldTitle>{option.label}</FieldTitle>\n                    </Field>\n                  </FieldLabel>\n                ))}\n              </FieldGroup>\n            </FieldSet>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/field-slider.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Field, FieldDescription, FieldTitle } from \"@/examples/radix/ui/field\"\nimport { Slider } from \"@/examples/radix/ui/slider\"\n\nexport function FieldSlider() {\n  const [value, setValue] = useState([200, 800])\n  return (\n    <div className=\"w-full max-w-md\">\n      <Field>\n        <FieldTitle>Price Range</FieldTitle>\n        <FieldDescription>\n          Set your budget range ($\n          <span className=\"font-medium tabular-nums\">{value[0]}</span> -{\" \"}\n          <span className=\"font-medium tabular-nums\">{value[1]}</span>).\n        </FieldDescription>\n        <Slider\n          value={value}\n          onValueChange={setValue}\n          max={1000}\n          min={0}\n          step={10}\n          className=\"mt-2 w-full\"\n          aria-label=\"Price Range\"\n        />\n      </Field>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/index.tsx",
    "content": "import { FieldSeparator } from \"@/examples/radix/ui/field\"\n\nimport { AppearanceSettings } from \"./appearance-settings\"\nimport { ButtonGroupDemo } from \"./button-group-demo\"\nimport { ButtonGroupInputGroup } from \"./button-group-input-group\"\nimport { ButtonGroupNested } from \"./button-group-nested\"\nimport { ButtonGroupPopover } from \"./button-group-popover\"\nimport { EmptyAvatarGroup } from \"./empty-avatar-group\"\nimport { FieldCheckbox } from \"./field-checkbox\"\nimport { FieldDemo } from \"./field-demo\"\nimport { FieldHear } from \"./field-hear\"\nimport { FieldSlider } from \"./field-slider\"\nimport { InputGroupButtonExample } from \"./input-group-button\"\nimport { InputGroupDemo } from \"./input-group-demo\"\nimport { ItemDemo } from \"./item-demo\"\nimport { NotionPromptForm } from \"./notion-prompt-form\"\nimport { SpinnerBadge } from \"./spinner-badge\"\nimport { SpinnerEmpty } from \"./spinner-empty\"\n\nexport function RootComponents() {\n  return (\n    <div className=\"mx-auto grid gap-8 py-1 theme-container md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 xl:gap-6 2xl:gap-8\">\n      <div className=\"flex flex-col gap-6 *:[div]:w-full *:[div]:max-w-full\">\n        <FieldDemo />\n      </div>\n      <div className=\"flex flex-col gap-6 *:[div]:w-full *:[div]:max-w-full\">\n        <EmptyAvatarGroup />\n        <SpinnerBadge />\n        <ButtonGroupInputGroup />\n        <FieldSlider />\n        <InputGroupDemo />\n      </div>\n      <div className=\"flex flex-col gap-6 *:[div]:w-full *:[div]:max-w-full\">\n        <InputGroupButtonExample />\n        <ItemDemo />\n        <FieldSeparator className=\"my-4\">Appearance Settings</FieldSeparator>\n        <AppearanceSettings />\n      </div>\n      <div className=\"order-first flex flex-col gap-6 lg:hidden xl:order-last xl:flex *:[div]:w-full *:[div]:max-w-full\">\n        <NotionPromptForm />\n        <ButtonGroupDemo />\n        <FieldCheckbox />\n        <div className=\"flex justify-between gap-4\">\n          <ButtonGroupNested />\n          <ButtonGroupPopover />\n        </div>\n        <FieldHear />\n        <SpinnerEmpty />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/input-group-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Label } from \"@/examples/radix/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { IconInfoCircle, IconStar } from \"@tabler/icons-react\"\n\nexport function InputGroupButtonExample() {\n  const [isFavorite, setIsFavorite] = React.useState(false)\n\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <Label htmlFor=\"input-secure-19\" className=\"sr-only\">\n        Input Secure\n      </Label>\n      <InputGroup className=\"[--radius:9999px]\">\n        <InputGroupInput id=\"input-secure-19\" className=\"pl-0.5!\" />\n        <Popover>\n          <PopoverTrigger asChild>\n            <InputGroupAddon>\n              <InputGroupButton\n                variant=\"secondary\"\n                size=\"icon-xs\"\n                aria-label=\"Info\"\n              >\n                <IconInfoCircle />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </PopoverTrigger>\n          <PopoverContent\n            align=\"start\"\n            alignOffset={10}\n            className=\"flex flex-col gap-1 rounded-xl text-sm\"\n          >\n            <p className=\"font-medium\">Your connection is not secure.</p>\n            <p>You should not enter any sensitive information on this site.</p>\n          </PopoverContent>\n        </Popover>\n        <InputGroupAddon className=\"pl-1! text-muted-foreground\">\n          https://\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            onClick={() => setIsFavorite(!isFavorite)}\n            size=\"icon-xs\"\n            aria-label=\"Favorite\"\n          >\n            <IconStar\n              data-favorite={isFavorite}\n              className=\"data-[favorite=true]:fill-primary data-[favorite=true]:stroke-primary\"\n            />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/input-group-demo.tsx",
    "content": "import {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\nimport { Separator } from \"@/examples/radix/ui/separator\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { IconCheck, IconInfoCircle, IconPlus } from \"@tabler/icons-react\"\nimport { ArrowUpIcon, Search } from \"lucide-react\"\n\nexport function InputGroupDemo() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Search...\" />\n        <InputGroupAddon>\n          <Search />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"example.com\" className=\"pl-1!\" />\n        <InputGroupAddon>\n          <InputGroupText>https://</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupButton\n                className=\"rounded-full\"\n                size=\"icon-xs\"\n                aria-label=\"Info\"\n              >\n                <IconInfoCircle />\n              </InputGroupButton>\n            </TooltipTrigger>\n            <TooltipContent>This is content in a tooltip.</TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder=\"Ask, Search or Chat...\" />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupButton\n            variant=\"outline\"\n            className=\"rounded-full\"\n            size=\"icon-xs\"\n            aria-label=\"Add\"\n          >\n            <IconPlus />\n          </InputGroupButton>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <InputGroupButton variant=\"ghost\">Auto</InputGroupButton>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent side=\"top\" align=\"start\">\n              <DropdownMenuItem>Auto</DropdownMenuItem>\n              <DropdownMenuItem>Agent</DropdownMenuItem>\n              <DropdownMenuItem>Manual</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n          <InputGroupText className=\"ml-auto\">52% used</InputGroupText>\n          <Separator orientation=\"vertical\" className=\"h-4!\" />\n          <InputGroupButton\n            variant=\"default\"\n            className=\"rounded-full\"\n            size=\"icon-xs\"\n          >\n            <ArrowUpIcon />\n            <span className=\"sr-only\">Send</span>\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"@shadcn\" />\n        <InputGroupAddon align=\"inline-end\">\n          <div className=\"flex size-4 items-center justify-center rounded-full bg-primary text-foreground\">\n            <IconCheck className=\"size-3 text-white\" />\n          </div>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/input-group-textarea.tsx",
    "content": "import {\n  IconBrandJavascript,\n  IconCopy,\n  IconCornerDownLeft,\n  IconRefresh,\n} from \"@tabler/icons-react\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nexport function InputGroupTextareaExample() {\n  return (\n    <div className=\"grid w-full max-w-md gap-4\">\n      <InputGroup>\n        <InputGroupTextarea\n          id=\"textarea-code-32\"\n          placeholder=\"console.log('Hello, world!');\"\n          className=\"min-h-[180px]\"\n        />\n        <InputGroupAddon align=\"block-end\" className=\"border-t\">\n          <InputGroupText>Line 1, Column 1</InputGroupText>\n          <InputGroupButton size=\"sm\" className=\"ml-auto\" variant=\"default\">\n            Run <IconCornerDownLeft />\n          </InputGroupButton>\n        </InputGroupAddon>\n        <InputGroupAddon align=\"block-start\" className=\"border-b\">\n          <InputGroupText className=\"font-mono font-medium\">\n            <IconBrandJavascript />\n            script.js\n          </InputGroupText>\n          <InputGroupButton className=\"ml-auto\">\n            <IconRefresh />\n          </InputGroupButton>\n          <InputGroupButton variant=\"ghost\">\n            <IconCopy />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/item-avatar.tsx",
    "content": "import { Plus } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nexport function ItemAvatar() {\n  return (\n    <div className=\"flex w-full max-w-lg flex-col gap-6\">\n      <Item variant=\"outline\" className=\"hidden\">\n        <ItemMedia>\n          <Avatar className=\"size-10\">\n            <AvatarImage src=\"https://github.com/maxleiter.png\" />\n            <AvatarFallback>LR</AvatarFallback>\n          </Avatar>\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Max Leiter</ItemTitle>\n          <ItemDescription>Last seen 5 months ago</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button\n            size=\"icon-sm\"\n            variant=\"outline\"\n            className=\"rounded-full\"\n            aria-label=\"Invite\"\n          >\n            <Plus />\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia>\n          <div className=\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n            <Avatar className=\"hidden sm:flex\">\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar className=\"hidden sm:flex\">\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </div>\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>No Team Members</ItemTitle>\n          <ItemDescription>Invite your team to collaborate.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\" variant=\"outline\">\n            Invite\n          </Button>\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/item-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { BadgeCheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nexport function ItemDemo() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Two-factor authentication</ItemTitle>\n          <ItemDescription className=\"text-pretty xl:hidden 2xl:block\">\n            Verify via email or phone number.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Enable</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\" asChild>\n        <a href=\"#\">\n          <ItemMedia>\n            <BadgeCheckIcon className=\"size-5\" />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Your profile has been verified.</ItemTitle>\n          </ItemContent>\n          <ItemActions>\n            <ChevronRightIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/notion-prompt-form.tsx",
    "content": "\"use client\"\n\nimport { useMemo, useState } from \"react\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport { Badge } from \"@/examples/radix/ui/badge\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/examples/radix/ui/command\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport {\n  IconApps,\n  IconArrowUp,\n  IconAt,\n  IconBook,\n  IconCircleDashedPlus,\n  IconPaperclip,\n  IconPlus,\n  IconWorld,\n  IconX,\n} from \"@tabler/icons-react\"\n\nconst SAMPLE_DATA = {\n  mentionable: [\n    {\n      type: \"page\",\n      title: \"Meeting Notes\",\n      image: \"📝\",\n    },\n    {\n      type: \"page\",\n      title: \"Project Dashboard\",\n      image: \"📊\",\n    },\n    {\n      type: \"page\",\n      title: \"Ideas & Brainstorming\",\n      image: \"💡\",\n    },\n    {\n      type: \"page\",\n      title: \"Calendar & Events\",\n      image: \"📅\",\n    },\n    {\n      type: \"page\",\n      title: \"Documentation\",\n      image: \"📚\",\n    },\n    {\n      type: \"page\",\n      title: \"Goals & Objectives\",\n      image: \"🎯\",\n    },\n    {\n      type: \"page\",\n      title: \"Budget Planning\",\n      image: \"💰\",\n    },\n    {\n      type: \"page\",\n      title: \"Team Directory\",\n      image: \"👥\",\n    },\n    {\n      type: \"page\",\n      title: \"Technical Specs\",\n      image: \"🔧\",\n    },\n    {\n      type: \"page\",\n      title: \"Analytics Report\",\n      image: \"📈\",\n    },\n    {\n      type: \"user\",\n      title: \"shadcn\",\n      image: \"https://github.com/shadcn.png\",\n      workspace: \"Workspace\",\n    },\n    {\n      type: \"user\",\n      title: \"maxleiter\",\n      image: \"https://github.com/maxleiter.png\",\n      workspace: \"Workspace\",\n    },\n    {\n      type: \"user\",\n      title: \"evilrabbit\",\n      image: \"https://github.com/evilrabbit.png\",\n      workspace: \"Workspace\",\n    },\n  ],\n  models: [\n    {\n      name: \"Auto\",\n    },\n    {\n      name: \"Agent Mode\",\n      badge: \"Beta\",\n    },\n    {\n      name: \"Plan Mode\",\n    },\n  ],\n}\n\nfunction MentionableIcon({\n  item,\n}: {\n  item: (typeof SAMPLE_DATA.mentionable)[0]\n}) {\n  return item.type === \"page\" ? (\n    <span className=\"flex size-4 items-center justify-center\">\n      {item.image}\n    </span>\n  ) : (\n    <Avatar className=\"size-4\">\n      <AvatarImage src={item.image} />\n      <AvatarFallback>{item.title[0]}</AvatarFallback>\n    </Avatar>\n  )\n}\n\nexport function NotionPromptForm() {\n  const [mentions, setMentions] = useState<string[]>([])\n  const [mentionPopoverOpen, setMentionPopoverOpen] = useState(false)\n  const [modelPopoverOpen, setModelPopoverOpen] = useState(false)\n  const [selectedModel, setSelectedModel] = useState<\n    (typeof SAMPLE_DATA.models)[0]\n  >(SAMPLE_DATA.models[0])\n  const [scopeMenuOpen, setScopeMenuOpen] = useState(false)\n\n  const grouped = useMemo(() => {\n    return SAMPLE_DATA.mentionable.reduce(\n      (acc, item) => {\n        const isAvailable = !mentions.includes(item.title)\n\n        if (isAvailable) {\n          if (!acc[item.type]) {\n            acc[item.type] = []\n          }\n          acc[item.type].push(item)\n        }\n        return acc\n      },\n      {} as Record<string, typeof SAMPLE_DATA.mentionable>\n    )\n  }, [mentions])\n\n  const hasMentions = mentions.length > 0\n\n  return (\n    <form>\n      <Field>\n        <FieldLabel htmlFor=\"notion-prompt\" className=\"sr-only\">\n          Prompt\n        </FieldLabel>\n        <InputGroup className=\"rounded-xl\">\n          <InputGroupTextarea\n            id=\"notion-prompt\"\n            placeholder=\"Ask, search, or make anything...\"\n          />\n          <InputGroupAddon align=\"block-start\" className=\"pt-3\">\n            <Popover\n              open={mentionPopoverOpen}\n              onOpenChange={setMentionPopoverOpen}\n            >\n              <Tooltip>\n                <TooltipTrigger\n                  asChild\n                  onFocusCapture={(e) => e.stopPropagation()}\n                >\n                  <PopoverTrigger asChild>\n                    <InputGroupButton\n                      variant=\"outline\"\n                      size={!hasMentions ? \"sm\" : \"icon-sm\"}\n                      className=\"transition-transform\"\n                    >\n                      <IconAt /> {!hasMentions && \"Add context\"}\n                    </InputGroupButton>\n                  </PopoverTrigger>\n                </TooltipTrigger>\n                <TooltipContent>Mention a person, page, or date</TooltipContent>\n              </Tooltip>\n              <PopoverContent className=\"p-0\" align=\"start\">\n                <Command>\n                  <CommandInput placeholder=\"Search pages...\" />\n                  <CommandList>\n                    <CommandEmpty>No pages found</CommandEmpty>\n                    {Object.entries(grouped).map(([type, items]) => (\n                      <CommandGroup\n                        key={type}\n                        heading={type === \"page\" ? \"Pages\" : \"Users\"}\n                      >\n                        {items.map((item) => (\n                          <CommandItem\n                            key={item.title}\n                            value={item.title}\n                            onSelect={(currentValue) => {\n                              setMentions((prev) => [...prev, currentValue])\n                              setMentionPopoverOpen(false)\n                            }}\n                            className=\"rounded-lg\"\n                          >\n                            <MentionableIcon item={item} />\n                            {item.title}\n                          </CommandItem>\n                        ))}\n                      </CommandGroup>\n                    ))}\n                  </CommandList>\n                </Command>\n              </PopoverContent>\n            </Popover>\n            <div className=\"-m-1.5 no-scrollbar flex gap-1 overflow-y-auto p-1.5\">\n              {mentions.map((mention) => {\n                const item = SAMPLE_DATA.mentionable.find(\n                  (item) => item.title === mention\n                )\n\n                if (!item) {\n                  return null\n                }\n\n                return (\n                  <InputGroupButton\n                    key={mention}\n                    size=\"sm\"\n                    variant=\"secondary\"\n                    className=\"rounded-full pl-2!\"\n                    onClick={() => {\n                      setMentions((prev) => prev.filter((m) => m !== mention))\n                    }}\n                  >\n                    <MentionableIcon item={item} />\n                    {item.title}\n                    <IconX />\n                  </InputGroupButton>\n                )\n              })}\n            </div>\n          </InputGroupAddon>\n          <InputGroupAddon align=\"block-end\" className=\"gap-1\">\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <InputGroupButton\n                  size=\"icon-sm\"\n                  className=\"rounded-full\"\n                  aria-label=\"Attach file\"\n                >\n                  <IconPaperclip />\n                </InputGroupButton>\n              </TooltipTrigger>\n              <TooltipContent>Attach file</TooltipContent>\n            </Tooltip>\n            <DropdownMenu\n              open={modelPopoverOpen}\n              onOpenChange={setModelPopoverOpen}\n            >\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <DropdownMenuTrigger asChild>\n                    <InputGroupButton size=\"sm\" className=\"rounded-full\">\n                      {selectedModel.name}\n                    </InputGroupButton>\n                  </DropdownMenuTrigger>\n                </TooltipTrigger>\n                <TooltipContent>Select AI model</TooltipContent>\n              </Tooltip>\n              <DropdownMenuContent\n                side=\"top\"\n                align=\"start\"\n                className=\"min-w-48\"\n              >\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                    Select Agent Mode\n                  </DropdownMenuLabel>\n                  {SAMPLE_DATA.models.map((model) => (\n                    <DropdownMenuCheckboxItem\n                      key={model.name}\n                      checked={model.name === selectedModel.name}\n                      onCheckedChange={(checked) => {\n                        if (checked) {\n                          setSelectedModel(model)\n                        }\n                      }}\n                      className=\"pl-2 *:[span:first-child]:right-2 *:[span:first-child]:left-auto\"\n                    >\n                      {model.name}\n                      {model.badge && (\n                        <Badge\n                          variant=\"secondary\"\n                          className=\"h-5 rounded-sm bg-blue-100 px-1 text-xs text-blue-800 dark:bg-blue-900 dark:text-blue-100\"\n                        >\n                          {model.badge}\n                        </Badge>\n                      )}\n                    </DropdownMenuCheckboxItem>\n                  ))}\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n            <DropdownMenu open={scopeMenuOpen} onOpenChange={setScopeMenuOpen}>\n              <DropdownMenuTrigger asChild>\n                <InputGroupButton size=\"sm\" className=\"rounded-full\">\n                  <IconWorld /> All Sources\n                </InputGroupButton>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent side=\"top\" align=\"end\" className=\"w-72\">\n                <DropdownMenuGroup>\n                  <DropdownMenuItem\n                    asChild\n                    onSelect={(e) => e.preventDefault()}\n                  >\n                    <label htmlFor=\"web-search\">\n                      <IconWorld /> Web Search{\" \"}\n                      <Switch\n                        id=\"web-search\"\n                        className=\"ml-auto\"\n                        defaultChecked\n                      />\n                    </label>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem\n                    asChild\n                    onSelect={(e) => e.preventDefault()}\n                  >\n                    <label htmlFor=\"apps\">\n                      <IconApps /> Apps and Integrations\n                      <Switch id=\"apps\" className=\"ml-auto\" defaultChecked />\n                    </label>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconCircleDashedPlus /> All Sources I can access\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <Avatar className=\"size-4\">\n                        <AvatarImage src=\"https://github.com/shadcn.png\" />\n                        <AvatarFallback>CN</AvatarFallback>\n                      </Avatar>\n                      shadcn\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuSubContent className=\"w-72 p-0 [--radius:1rem]\">\n                      <Command>\n                        <CommandInput\n                          placeholder=\"Find or use knowledge in...\"\n                          autoFocus\n                        />\n                        <CommandList>\n                          <CommandEmpty>No knowledge found</CommandEmpty>\n                          <CommandGroup>\n                            {SAMPLE_DATA.mentionable\n                              .filter((item) => item.type === \"user\")\n                              .map((user) => (\n                                <CommandItem\n                                  key={user.title}\n                                  value={user.title}\n                                  onSelect={() => {\n                                    // Handle user selection here\n                                    console.log(\"Selected user:\", user.title)\n                                  }}\n                                >\n                                  <Avatar className=\"size-4\">\n                                    <AvatarImage src={user.image} />\n                                    <AvatarFallback>\n                                      {user.title[0]}\n                                    </AvatarFallback>\n                                  </Avatar>\n                                  {user.title}{\" \"}\n                                  <span className=\"text-muted-foreground\">\n                                    - {user.workspace}\n                                  </span>\n                                </CommandItem>\n                              ))}\n                          </CommandGroup>\n                        </CommandList>\n                      </Command>\n                    </DropdownMenuSubContent>\n                  </DropdownMenuSub>\n                  <DropdownMenuItem>\n                    <IconBook /> Help Center\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <IconPlus /> Connect Apps\n                  </DropdownMenuItem>\n                  <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                    We&apos;ll only search in the sources selected here.\n                  </DropdownMenuLabel>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n            <InputGroupButton\n              aria-label=\"Send\"\n              className=\"ml-auto rounded-full\"\n              variant=\"default\"\n              size=\"icon-sm\"\n            >\n              <IconArrowUp />\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/spinner-badge.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport function SpinnerBadge() {\n  return (\n    <div className=\"flex items-center gap-2\">\n      <Badge>\n        <Spinner />\n        Syncing\n      </Badge>\n      <Badge variant=\"secondary\">\n        <Spinner />\n        Updating\n      </Badge>\n      <Badge variant=\"outline\">\n        <Spinner />\n        Loading\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/components/spinner-empty.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport function SpinnerEmpty() {\n  return (\n    <Empty className=\"w-full border md:p-6\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <Spinner />\n        </EmptyMedia>\n        <EmptyTitle>Processing your request</EmptyTitle>\n        <EmptyDescription>\n          Please wait while we process your request. Do not refresh the page.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          Cancel\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/(root)/page.tsx",
    "content": "import { type Metadata } from \"next\"\nimport Image from \"next/image\"\nimport Link from \"next/link\"\n\nimport { Announcement } from \"@/components/announcement\"\nimport { ExamplesNav } from \"@/components/examples-nav\"\nimport {\n  PageActions,\n  PageHeader,\n  PageHeaderDescription,\n  PageHeaderHeading,\n} from \"@/components/page-header\"\nimport { PageNav } from \"@/components/page-nav\"\nimport { ThemeSelector } from \"@/components/theme-selector\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nimport { RootComponents } from \"./components\"\n\nconst title = \"The Foundation for your Design System\"\nconst description =\n  \"A set of beautifully designed components that you can customize, extend, and build on. Start here then make it your own. Open Source. Open Code.\"\n\nexport const dynamic = \"force-static\"\nexport const revalidate = false\n\nexport const metadata: Metadata = {\n  title,\n  description,\n  openGraph: {\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n}\n\nexport default function IndexPage() {\n  return (\n    <div className=\"flex flex-1 flex-col\">\n      <PageHeader>\n        <Announcement />\n        <PageHeaderHeading className=\"max-w-4xl\">{title}</PageHeaderHeading>\n        <PageHeaderDescription>{description}</PageHeaderDescription>\n        <PageActions>\n          <Button asChild size=\"sm\" className=\"h-[31px] rounded-lg\">\n            <Link href=\"/create\">New Project</Link>\n          </Button>\n          <Button asChild size=\"sm\" variant=\"ghost\" className=\"rounded-lg\">\n            <Link href=\"/docs/components\">View Components</Link>\n          </Button>\n        </PageActions>\n      </PageHeader>\n      <PageNav className=\"hidden md:flex\">\n        <ExamplesNav className=\"flex-1 overflow-hidden [&>a:first-child]:text-primary\" />\n        <ThemeSelector className=\"mr-4 hidden md:flex\" />\n      </PageNav>\n      <div className=\"container-wrapper flex-1 section-soft pb-6\">\n        <div className=\"container overflow-hidden\">\n          <section className=\"-mx-4 w-[160vw] overflow-hidden rounded-lg border border-border/50 md:hidden md:w-[150vw]\">\n            <Image\n              src=\"/r/styles/new-york-v4/dashboard-01-light.png\"\n              width={1400}\n              height={875}\n              alt=\"Dashboard\"\n              className=\"block dark:hidden\"\n              priority\n            />\n            <Image\n              src=\"/r/styles/new-york-v4/dashboard-01-dark.png\"\n              width={1400}\n              height={875}\n              alt=\"Dashboard\"\n              className=\"hidden dark:block\"\n              priority\n            />\n          </section>\n          <section className=\"hidden theme-container md:block\">\n            <RootComponents />\n          </section>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/blocks/[...categories]/page.tsx",
    "content": "import { getAllBlockIds } from \"@/lib/blocks\"\nimport { registryCategories } from \"@/lib/categories\"\nimport { BlockDisplay } from \"@/components/block-display\"\nimport { getActiveStyle } from \"@/registry/_legacy-styles\"\n\nexport const revalidate = false\nexport const dynamic = \"force-static\"\nexport const dynamicParams = false\n\nexport async function generateStaticParams() {\n  return registryCategories.map((category) => ({\n    categories: [category.slug],\n  }))\n}\n\nexport default async function BlocksPage({\n  params,\n}: {\n  params: Promise<{ categories?: string[] }>\n}) {\n  const [{ categories = [] }, activeStyle] = await Promise.all([\n    params,\n    getActiveStyle(),\n  ])\n  const blocks = await getAllBlockIds([\"registry:block\"], categories)\n\n  return (\n    <div className=\"flex flex-col gap-12 md:gap-24\">\n      {blocks.map((name) => (\n        <BlockDisplay name={name} key={name} styleName={activeStyle.name} />\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/blocks/layout.tsx",
    "content": "import { type Metadata } from \"next\"\nimport Link from \"next/link\"\n\nimport { Announcement } from \"@/components/announcement\"\nimport { BlocksNav } from \"@/components/blocks-nav\"\nimport {\n  PageActions,\n  PageHeader,\n  PageHeaderDescription,\n  PageHeaderHeading,\n} from \"@/components/page-header\"\nimport { PageNav } from \"@/components/page-nav\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nconst title = \"Building Blocks for the Web\"\nconst description =\n  \"Clean, modern building blocks. Copy and paste into your apps. Works with all React frameworks. Open Source. Free forever.\"\n\nexport const metadata: Metadata = {\n  title,\n  description,\n  openGraph: {\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n}\n\nexport default function BlocksLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <>\n      <PageHeader>\n        <Announcement />\n        <PageHeaderHeading>{title}</PageHeaderHeading>\n        <PageHeaderDescription>{description}</PageHeaderDescription>\n        <PageActions>\n          <Button asChild size=\"sm\">\n            <a href=\"#blocks\">Browse Blocks</a>\n          </Button>\n          <Button asChild variant=\"ghost\" size=\"sm\">\n            <Link href=\"/docs/blocks\">Add a block</Link>\n          </Button>\n        </PageActions>\n      </PageHeader>\n      <PageNav id=\"blocks\">\n        <BlocksNav />\n        <Button\n          asChild\n          variant=\"secondary\"\n          size=\"sm\"\n          className=\"mr-7 hidden shadow-none lg:flex\"\n        >\n          <Link href=\"/blocks/sidebar\">Browse all blocks</Link>\n        </Button>\n      </PageNav>\n      <div className=\"container-wrapper flex-1 section-soft md:py-12\">\n        <div className=\"container\">{children}</div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/blocks/page.tsx",
    "content": "import Link from \"next/link\"\n\nimport { BlockDisplay } from \"@/components/block-display\"\nimport { getActiveStyle } from \"@/registry/_legacy-styles\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport const dynamic = \"force-static\"\nexport const revalidate = false\n\nconst FEATURED_BLOCKS = [\n  \"dashboard-01\",\n  \"sidebar-07\",\n  \"sidebar-03\",\n  \"login-03\",\n  \"login-04\",\n]\n\nexport default async function BlocksPage() {\n  const activeStyle = await getActiveStyle()\n\n  return (\n    <div className=\"flex flex-col gap-12 md:gap-24\">\n      {FEATURED_BLOCKS.map((name) => (\n        <BlockDisplay name={name} key={name} styleName={activeStyle.name} />\n      ))}\n      <div className=\"container-wrapper\">\n        <div className=\"container flex justify-center py-6\">\n          <Button asChild variant=\"outline\">\n            <Link href=\"/blocks/sidebar\">Browse more blocks</Link>\n          </Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/charts/[type]/page.tsx",
    "content": "import * as React from \"react\"\nimport { notFound } from \"next/navigation\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  ChartDisplay,\n  getCachedRegistryItem,\n  getChartHighlightedCode,\n} from \"@/components/chart-display\"\nimport { getActiveStyle } from \"@/registry/_legacy-styles\"\nimport { charts } from \"@/app/(app)/charts/charts\"\n\nexport const revalidate = false\nexport const dynamic = \"force-static\"\nexport const dynamicParams = false\n\ninterface ChartPageProps {\n  params: Promise<{\n    type: string\n  }>\n}\n\nconst chartTypes = [\n  \"area\",\n  \"bar\",\n  \"line\",\n  \"pie\",\n  \"radar\",\n  \"radial\",\n  \"tooltip\",\n] as const\ntype ChartType = (typeof chartTypes)[number]\n\nexport async function generateStaticParams() {\n  return chartTypes.map((type) => ({\n    type,\n  }))\n}\n\nexport default async function ChartPage({ params }: ChartPageProps) {\n  const { type } = await params\n\n  if (!chartTypes.includes(type as ChartType)) {\n    return notFound()\n  }\n\n  const chartType = type as ChartType\n  const chartList = charts[chartType]\n  const activeStyle = await getActiveStyle()\n\n  // Prefetch all chart data in parallel for better performance.\n  // Charts are rendered via iframes, so we only need the metadata and highlighted code.\n  const chartDataPromises = chartList.map(async (chart) => {\n    const registryItem = await getCachedRegistryItem(chart.id, activeStyle.name)\n    if (!registryItem) return null\n\n    const highlightedCode = await getChartHighlightedCode(\n      registryItem.files?.[0]?.content ?? \"\"\n    )\n    if (!highlightedCode) return null\n\n    return {\n      ...registryItem,\n      highlightedCode,\n      fullWidth: chart.fullWidth,\n    }\n  })\n\n  const prefetchedCharts = await Promise.all(chartDataPromises)\n\n  return (\n    <div className=\"grid flex-1 gap-12 lg:gap-24\">\n      <h2 className=\"sr-only\">\n        {type.charAt(0).toUpperCase() + type.slice(1)} Charts\n      </h2>\n      <div className=\"grid flex-1 scroll-mt-20 items-stretch gap-10 md:grid-cols-2 md:gap-6 lg:grid-cols-3 xl:gap-10\">\n        {Array.from({ length: 12 }).map((_, index) => {\n          const chart = prefetchedCharts[index]\n          return chart ? (\n            <ChartDisplay\n              key={chart.name}\n              chart={chart}\n              style={activeStyle.name}\n              className={cn(chart.fullWidth && \"md:col-span-2 lg:col-span-3\")}\n            />\n          ) : (\n            <div\n              key={`empty-${index}`}\n              className=\"hidden aspect-square w-full rounded-lg border border-dashed xl:block\"\n            />\n          )\n        })}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/charts/charts.tsx",
    "content": "import type * as React from \"react\"\n\nimport { ChartAreaAxes } from \"@/registry/new-york-v4/charts/chart-area-axes\"\nimport { ChartAreaDefault } from \"@/registry/new-york-v4/charts/chart-area-default\"\nimport { ChartAreaGradient } from \"@/registry/new-york-v4/charts/chart-area-gradient\"\nimport { ChartAreaIcons } from \"@/registry/new-york-v4/charts/chart-area-icons\"\nimport { ChartAreaInteractive } from \"@/registry/new-york-v4/charts/chart-area-interactive\"\nimport { ChartAreaLegend } from \"@/registry/new-york-v4/charts/chart-area-legend\"\nimport { ChartAreaLinear } from \"@/registry/new-york-v4/charts/chart-area-linear\"\nimport { ChartAreaStacked } from \"@/registry/new-york-v4/charts/chart-area-stacked\"\nimport { ChartAreaStackedExpand } from \"@/registry/new-york-v4/charts/chart-area-stacked-expand\"\nimport { ChartAreaStep } from \"@/registry/new-york-v4/charts/chart-area-step\"\nimport { ChartBarActive } from \"@/registry/new-york-v4/charts/chart-bar-active\"\nimport { ChartBarDefault } from \"@/registry/new-york-v4/charts/chart-bar-default\"\nimport { ChartBarHorizontal } from \"@/registry/new-york-v4/charts/chart-bar-horizontal\"\nimport { ChartBarInteractive } from \"@/registry/new-york-v4/charts/chart-bar-interactive\"\nimport { ChartBarLabel } from \"@/registry/new-york-v4/charts/chart-bar-label\"\nimport { ChartBarLabelCustom } from \"@/registry/new-york-v4/charts/chart-bar-label-custom\"\nimport { ChartBarMixed } from \"@/registry/new-york-v4/charts/chart-bar-mixed\"\nimport { ChartBarMultiple } from \"@/registry/new-york-v4/charts/chart-bar-multiple\"\nimport { ChartBarNegative } from \"@/registry/new-york-v4/charts/chart-bar-negative\"\nimport { ChartBarStacked } from \"@/registry/new-york-v4/charts/chart-bar-stacked\"\nimport { ChartLineDefault } from \"@/registry/new-york-v4/charts/chart-line-default\"\nimport { ChartLineDots } from \"@/registry/new-york-v4/charts/chart-line-dots\"\nimport { ChartLineDotsColors } from \"@/registry/new-york-v4/charts/chart-line-dots-colors\"\nimport { ChartLineDotsCustom } from \"@/registry/new-york-v4/charts/chart-line-dots-custom\"\nimport { ChartLineInteractive } from \"@/registry/new-york-v4/charts/chart-line-interactive\"\nimport { ChartLineLabel } from \"@/registry/new-york-v4/charts/chart-line-label\"\nimport { ChartLineLabelCustom } from \"@/registry/new-york-v4/charts/chart-line-label-custom\"\nimport { ChartLineLinear } from \"@/registry/new-york-v4/charts/chart-line-linear\"\nimport { ChartLineMultiple } from \"@/registry/new-york-v4/charts/chart-line-multiple\"\nimport { ChartLineStep } from \"@/registry/new-york-v4/charts/chart-line-step\"\nimport { ChartPieDonut } from \"@/registry/new-york-v4/charts/chart-pie-donut\"\nimport { ChartPieDonutActive } from \"@/registry/new-york-v4/charts/chart-pie-donut-active\"\nimport { ChartPieDonutText } from \"@/registry/new-york-v4/charts/chart-pie-donut-text\"\nimport { ChartPieInteractive } from \"@/registry/new-york-v4/charts/chart-pie-interactive\"\nimport { ChartPieLabel } from \"@/registry/new-york-v4/charts/chart-pie-label\"\nimport { ChartPieLabelCustom } from \"@/registry/new-york-v4/charts/chart-pie-label-custom\"\nimport { ChartPieLabelList } from \"@/registry/new-york-v4/charts/chart-pie-label-list\"\nimport { ChartPieLegend } from \"@/registry/new-york-v4/charts/chart-pie-legend\"\nimport { ChartPieSeparatorNone } from \"@/registry/new-york-v4/charts/chart-pie-separator-none\"\nimport { ChartPieSimple } from \"@/registry/new-york-v4/charts/chart-pie-simple\"\nimport { ChartPieStacked } from \"@/registry/new-york-v4/charts/chart-pie-stacked\"\nimport { ChartRadarDefault } from \"@/registry/new-york-v4/charts/chart-radar-default\"\nimport { ChartRadarDots } from \"@/registry/new-york-v4/charts/chart-radar-dots\"\nimport { ChartRadarGridCircle } from \"@/registry/new-york-v4/charts/chart-radar-grid-circle\"\nimport { ChartRadarGridCircleFill } from \"@/registry/new-york-v4/charts/chart-radar-grid-circle-fill\"\nimport { ChartRadarGridCircleNoLines } from \"@/registry/new-york-v4/charts/chart-radar-grid-circle-no-lines\"\nimport { ChartRadarGridCustom } from \"@/registry/new-york-v4/charts/chart-radar-grid-custom\"\nimport { ChartRadarGridFill } from \"@/registry/new-york-v4/charts/chart-radar-grid-fill\"\nimport { ChartRadarGridNone } from \"@/registry/new-york-v4/charts/chart-radar-grid-none\"\nimport { ChartRadarIcons } from \"@/registry/new-york-v4/charts/chart-radar-icons\"\nimport { ChartRadarLabelCustom } from \"@/registry/new-york-v4/charts/chart-radar-label-custom\"\nimport { ChartRadarLegend } from \"@/registry/new-york-v4/charts/chart-radar-legend\"\nimport { ChartRadarLinesOnly } from \"@/registry/new-york-v4/charts/chart-radar-lines-only\"\nimport { ChartRadarMultiple } from \"@/registry/new-york-v4/charts/chart-radar-multiple\"\nimport { ChartRadarRadius } from \"@/registry/new-york-v4/charts/chart-radar-radius\"\nimport { ChartRadialGrid } from \"@/registry/new-york-v4/charts/chart-radial-grid\"\nimport { ChartRadialLabel } from \"@/registry/new-york-v4/charts/chart-radial-label\"\nimport { ChartRadialShape } from \"@/registry/new-york-v4/charts/chart-radial-shape\"\nimport { ChartRadialSimple } from \"@/registry/new-york-v4/charts/chart-radial-simple\"\nimport { ChartRadialStacked } from \"@/registry/new-york-v4/charts/chart-radial-stacked\"\nimport { ChartRadialText } from \"@/registry/new-york-v4/charts/chart-radial-text\"\nimport { ChartTooltipAdvanced } from \"@/registry/new-york-v4/charts/chart-tooltip-advanced\"\nimport { ChartTooltipDefault } from \"@/registry/new-york-v4/charts/chart-tooltip-default\"\nimport { ChartTooltipFormatter } from \"@/registry/new-york-v4/charts/chart-tooltip-formatter\"\nimport { ChartTooltipIcons } from \"@/registry/new-york-v4/charts/chart-tooltip-icons\"\nimport { ChartTooltipIndicatorLine } from \"@/registry/new-york-v4/charts/chart-tooltip-indicator-line\"\nimport { ChartTooltipIndicatorNone } from \"@/registry/new-york-v4/charts/chart-tooltip-indicator-none\"\nimport { ChartTooltipLabelCustom } from \"@/registry/new-york-v4/charts/chart-tooltip-label-custom\"\nimport { ChartTooltipLabelFormatter } from \"@/registry/new-york-v4/charts/chart-tooltip-label-formatter\"\nimport { ChartTooltipLabelNone } from \"@/registry/new-york-v4/charts/chart-tooltip-label-none\"\n\ntype ChartComponent = React.ComponentType\n\ninterface ChartItem {\n  id: string\n  component: ChartComponent\n  fullWidth?: boolean\n}\n\ninterface ChartGroups {\n  area: ChartItem[]\n  bar: ChartItem[]\n  line: ChartItem[]\n  pie: ChartItem[]\n  radar: ChartItem[]\n  radial: ChartItem[]\n  tooltip: ChartItem[]\n}\n\nexport const charts: ChartGroups = {\n  area: [\n    {\n      id: \"chart-area-interactive\",\n      component: ChartAreaInteractive,\n      fullWidth: true,\n    },\n    { id: \"chart-area-default\", component: ChartAreaDefault },\n    { id: \"chart-area-linear\", component: ChartAreaLinear },\n    { id: \"chart-area-step\", component: ChartAreaStep },\n    { id: \"chart-area-legend\", component: ChartAreaLegend },\n    { id: \"chart-area-stacked\", component: ChartAreaStacked },\n    { id: \"chart-area-stacked-expand\", component: ChartAreaStackedExpand },\n    { id: \"chart-area-icons\", component: ChartAreaIcons },\n    { id: \"chart-area-gradient\", component: ChartAreaGradient },\n    { id: \"chart-area-axes\", component: ChartAreaAxes },\n  ],\n  bar: [\n    {\n      id: \"chart-bar-interactive\",\n      component: ChartBarInteractive,\n      fullWidth: true,\n    },\n    { id: \"chart-bar-default\", component: ChartBarDefault },\n    { id: \"chart-bar-horizontal\", component: ChartBarHorizontal },\n    { id: \"chart-bar-multiple\", component: ChartBarMultiple },\n    { id: \"chart-bar-stacked\", component: ChartBarStacked },\n    { id: \"chart-bar-label\", component: ChartBarLabel },\n    { id: \"chart-bar-label-custom\", component: ChartBarLabelCustom },\n    { id: \"chart-bar-mixed\", component: ChartBarMixed },\n    { id: \"chart-bar-active\", component: ChartBarActive },\n    { id: \"chart-bar-negative\", component: ChartBarNegative },\n  ],\n  line: [\n    {\n      id: \"chart-line-interactive\",\n      component: ChartLineInteractive,\n      fullWidth: true,\n    },\n    { id: \"chart-line-default\", component: ChartLineDefault },\n    { id: \"chart-line-linear\", component: ChartLineLinear },\n    { id: \"chart-line-step\", component: ChartLineStep },\n    { id: \"chart-line-multiple\", component: ChartLineMultiple },\n    { id: \"chart-line-dots\", component: ChartLineDots },\n    { id: \"chart-line-dots-custom\", component: ChartLineDotsCustom },\n    { id: \"chart-line-dots-colors\", component: ChartLineDotsColors },\n    { id: \"chart-line-label\", component: ChartLineLabel },\n    { id: \"chart-line-label-custom\", component: ChartLineLabelCustom },\n  ],\n  pie: [\n    { id: \"chart-pie-simple\", component: ChartPieSimple },\n    { id: \"chart-pie-separator-none\", component: ChartPieSeparatorNone },\n    { id: \"chart-pie-label\", component: ChartPieLabel },\n    { id: \"chart-pie-label-custom\", component: ChartPieLabelCustom },\n    { id: \"chart-pie-label-list\", component: ChartPieLabelList },\n    { id: \"chart-pie-legend\", component: ChartPieLegend },\n    { id: \"chart-pie-donut\", component: ChartPieDonut },\n    { id: \"chart-pie-donut-active\", component: ChartPieDonutActive },\n    { id: \"chart-pie-donut-text\", component: ChartPieDonutText },\n    { id: \"chart-pie-stacked\", component: ChartPieStacked },\n    { id: \"chart-pie-interactive\", component: ChartPieInteractive },\n  ],\n  radar: [\n    { id: \"chart-radar-default\", component: ChartRadarDefault },\n    { id: \"chart-radar-dots\", component: ChartRadarDots },\n    { id: \"chart-radar-lines-only\", component: ChartRadarLinesOnly },\n    { id: \"chart-radar-label-custom\", component: ChartRadarLabelCustom },\n    { id: \"chart-radar-grid-custom\", component: ChartRadarGridCustom },\n    { id: \"chart-radar-grid-none\", component: ChartRadarGridNone },\n    { id: \"chart-radar-grid-circle\", component: ChartRadarGridCircle },\n    {\n      id: \"chart-radar-grid-circle-no-lines\",\n      component: ChartRadarGridCircleNoLines,\n    },\n    { id: \"chart-radar-grid-circle-fill\", component: ChartRadarGridCircleFill },\n    { id: \"chart-radar-grid-fill\", component: ChartRadarGridFill },\n    { id: \"chart-radar-multiple\", component: ChartRadarMultiple },\n    { id: \"chart-radar-legend\", component: ChartRadarLegend },\n    { id: \"chart-radar-icons\", component: ChartRadarIcons },\n    { id: \"chart-radar-radius\", component: ChartRadarRadius },\n  ],\n  radial: [\n    { id: \"chart-radial-simple\", component: ChartRadialSimple },\n    { id: \"chart-radial-label\", component: ChartRadialLabel },\n    { id: \"chart-radial-grid\", component: ChartRadialGrid },\n    { id: \"chart-radial-text\", component: ChartRadialText },\n    { id: \"chart-radial-shape\", component: ChartRadialShape },\n    { id: \"chart-radial-stacked\", component: ChartRadialStacked },\n  ],\n  tooltip: [\n    { id: \"chart-tooltip-default\", component: ChartTooltipDefault },\n    {\n      id: \"chart-tooltip-indicator-line\",\n      component: ChartTooltipIndicatorLine,\n    },\n    {\n      id: \"chart-tooltip-indicator-none\",\n      component: ChartTooltipIndicatorNone,\n    },\n    { id: \"chart-tooltip-label-custom\", component: ChartTooltipLabelCustom },\n    {\n      id: \"chart-tooltip-label-formatter\",\n      component: ChartTooltipLabelFormatter,\n    },\n    { id: \"chart-tooltip-label-none\", component: ChartTooltipLabelNone },\n    { id: \"chart-tooltip-formatter\", component: ChartTooltipFormatter },\n    { id: \"chart-tooltip-icons\", component: ChartTooltipIcons },\n    { id: \"chart-tooltip-advanced\", component: ChartTooltipAdvanced },\n  ],\n}\n\n// Export individual components for backward compatibility\nexport {\n  ChartAreaDefault,\n  ChartAreaLinear,\n  ChartAreaStep,\n  ChartAreaLegend,\n  ChartAreaStacked,\n  ChartAreaStackedExpand,\n  ChartAreaIcons,\n  ChartAreaGradient,\n  ChartAreaAxes,\n  ChartAreaInteractive,\n  ChartBarDefault,\n  ChartBarHorizontal,\n  ChartBarMultiple,\n  ChartBarStacked,\n  ChartBarLabel,\n  ChartBarLabelCustom,\n  ChartBarMixed,\n  ChartBarActive,\n  ChartBarNegative,\n  ChartBarInteractive,\n  ChartLineDefault,\n  ChartLineLinear,\n  ChartLineStep,\n  ChartLineMultiple,\n  ChartLineDots,\n  ChartLineDotsCustom,\n  ChartLineDotsColors,\n  ChartLineLabel,\n  ChartLineLabelCustom,\n  ChartLineInteractive,\n  ChartPieSimple,\n  ChartPieSeparatorNone,\n  ChartPieLabel,\n  ChartPieLabelCustom,\n  ChartPieLabelList,\n  ChartPieLegend,\n  ChartPieDonut,\n  ChartPieDonutActive,\n  ChartPieDonutText,\n  ChartPieStacked,\n  ChartPieInteractive,\n  ChartRadarDefault,\n  ChartRadarDots,\n  ChartRadarLinesOnly,\n  ChartRadarLabelCustom,\n  ChartRadarGridCustom,\n  ChartRadarGridNone,\n  ChartRadarGridCircle,\n  ChartRadarGridCircleNoLines,\n  ChartRadarGridCircleFill,\n  ChartRadarGridFill,\n  ChartRadarMultiple,\n  ChartRadarLegend,\n  ChartRadarIcons,\n  ChartRadarRadius,\n  ChartRadialSimple,\n  ChartRadialLabel,\n  ChartRadialGrid,\n  ChartRadialText,\n  ChartRadialShape,\n  ChartRadialStacked,\n  ChartTooltipDefault,\n  ChartTooltipIndicatorLine,\n  ChartTooltipIndicatorNone,\n  ChartTooltipLabelCustom,\n  ChartTooltipLabelFormatter,\n  ChartTooltipLabelNone,\n  ChartTooltipFormatter,\n  ChartTooltipIcons,\n  ChartTooltipAdvanced,\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/charts/layout.tsx",
    "content": "import { type Metadata } from \"next\"\nimport Link from \"next/link\"\n\nimport { Announcement } from \"@/components/announcement\"\nimport { ChartsNav } from \"@/components/charts-nav\"\nimport {\n  PageActions,\n  PageHeader,\n  PageHeaderDescription,\n  PageHeaderHeading,\n} from \"@/components/page-header\"\nimport { PageNav } from \"@/components/page-nav\"\nimport { ThemeSelector } from \"@/components/theme-selector\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nconst title = \"Beautiful Charts & Graphs\"\nconst description =\n  \"A collection of ready-to-use chart components built with Recharts. From basic charts to rich data displays, copy and paste into your apps.\"\n\nexport const metadata: Metadata = {\n  title,\n  description,\n  openGraph: {\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n}\n\nexport default function ChartsLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <>\n      <PageHeader>\n        <Announcement />\n        <PageHeaderHeading>{title}</PageHeaderHeading>\n        <PageHeaderDescription>{description}</PageHeaderDescription>\n        <PageActions>\n          <Button asChild size=\"sm\">\n            <a href=\"#charts\">Browse Charts</a>\n          </Button>\n          <Button asChild variant=\"ghost\" size=\"sm\">\n            <Link href=\"/docs/components/chart\">Documentation</Link>\n          </Button>\n        </PageActions>\n      </PageHeader>\n      <PageNav id=\"charts\">\n        <ChartsNav />\n      </PageNav>\n      <div className=\"container-wrapper flex-1\">\n        <div className=\"container pb-6\">\n          <section className=\"theme-container\">{children}</section>\n        </div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/colors/layout.tsx",
    "content": "import { type Metadata } from \"next\"\nimport Link from \"next/link\"\n\nimport { Announcement } from \"@/components/announcement\"\nimport { ColorsNav } from \"@/components/colors-nav\"\nimport {\n  PageActions,\n  PageHeader,\n  PageHeaderDescription,\n  PageHeaderHeading,\n} from \"@/components/page-header\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nconst title = \"Tailwind Colors in Every Format\"\nconst description =\n  \"The complete Tailwind color palette in HEX, RGB, HSL, CSS variables, and classes. Ready to copy and paste into your project.\"\n\nexport const metadata: Metadata = {\n  title,\n  description,\n  openGraph: {\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n}\n\nexport default function ColorsLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <div>\n      <PageHeader>\n        <Announcement />\n        <PageHeaderHeading>{title}</PageHeaderHeading>\n        <PageHeaderDescription>{description}</PageHeaderDescription>\n        <PageActions>\n          <Button asChild size=\"sm\">\n            <a href=\"#colors\">Browse Colors</a>\n          </Button>\n          <Button asChild variant=\"ghost\" size=\"sm\">\n            <Link href=\"/docs/theming\">Documentation</Link>\n          </Button>\n        </PageActions>\n      </PageHeader>\n      <div className=\"hidden\">\n        <div className=\"container-wrapper\">\n          <div className=\"container flex items-center justify-between gap-8 py-4\">\n            <ColorsNav className=\"flex-1 overflow-hidden [&>a:first-child]:text-primary\" />\n          </div>\n        </div>\n      </div>\n      <div className=\"container-wrapper\">\n        <div className=\"container py-6\">\n          <section id=\"colors\" className=\"scroll-mt-20\">\n            {children}\n          </section>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/colors/page.tsx",
    "content": "import { getColors } from \"@/lib/colors\"\nimport { ColorPalette } from \"@/components/color-palette\"\n\nexport const dynamic = \"force-static\"\nexport const revalidate = false\n\nexport default function ColorsPage() {\n  const colors = getColors()\n\n  return (\n    <div className=\"grid gap-8 lg:gap-16 xl:gap-20\">\n      {colors.map((colorPalette) => (\n        <ColorPalette key={colorPalette.name} colorPalette={colorPalette} />\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/docs/[[...slug]]/page.tsx",
    "content": "import Link from \"next/link\"\nimport { notFound } from \"next/navigation\"\nimport { mdxComponents } from \"@/mdx-components\"\nimport { IconArrowLeft, IconArrowRight } from \"@tabler/icons-react\"\nimport { findNeighbour } from \"fumadocs-core/page-tree\"\n\nimport { source } from \"@/lib/source\"\nimport { absoluteUrl } from \"@/lib/utils\"\nimport { DocsBaseSwitcher } from \"@/components/docs-base-switcher\"\nimport { DocsCopyPage } from \"@/components/docs-copy-page\"\nimport { DocsTableOfContents } from \"@/components/docs-toc\"\nimport { OpenInV0Cta } from \"@/components/open-in-v0-cta\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport const revalidate = false\nexport const dynamic = \"force-static\"\nexport const dynamicParams = false\n\nexport function generateStaticParams() {\n  return source.generateParams()\n}\n\nexport async function generateMetadata(props: {\n  params: Promise<{ slug: string[] }>\n}) {\n  const params = await props.params\n  const page = source.getPage(params.slug)\n\n  if (!page) {\n    notFound()\n  }\n\n  const doc = page.data\n\n  if (!doc.title || !doc.description) {\n    notFound()\n  }\n\n  return {\n    title: doc.title,\n    description: doc.description,\n    openGraph: {\n      title: doc.title,\n      description: doc.description,\n      type: \"article\",\n      url: absoluteUrl(page.url),\n      images: [\n        {\n          url: `/og?title=${encodeURIComponent(\n            doc.title\n          )}&description=${encodeURIComponent(doc.description)}`,\n        },\n      ],\n    },\n    twitter: {\n      card: \"summary_large_image\",\n      title: doc.title,\n      description: doc.description,\n      images: [\n        {\n          url: `/og?title=${encodeURIComponent(\n            doc.title\n          )}&description=${encodeURIComponent(doc.description)}`,\n        },\n      ],\n      creator: \"@shadcn\",\n    },\n  }\n}\n\nexport default async function Page(props: {\n  params: Promise<{ slug: string[] }>\n}) {\n  const params = await props.params\n  const page = source.getPage(params.slug)\n  if (!page) {\n    notFound()\n  }\n\n  const doc = page.data\n  const MDX = doc.body\n  const isChangelog = params.slug?.[0] === \"changelog\"\n  const neighbours = isChangelog\n    ? { previous: null, next: null }\n    : findNeighbour(source.pageTree, page.url)\n  const raw = await page.data.getText(\"raw\")\n\n  return (\n    <div\n      data-slot=\"docs\"\n      className=\"flex scroll-mt-24 items-stretch pb-8 text-[1.05rem] sm:text-[15px] xl:w-full\"\n    >\n      <div className=\"flex min-w-0 flex-1 flex-col\">\n        <div className=\"h-(--top-spacing) shrink-0\" />\n        <div className=\"mx-auto flex w-full max-w-[40rem] min-w-0 flex-1 flex-col gap-6 px-4 py-6 text-neutral-800 md:px-0 lg:py-8 dark:text-neutral-300\">\n          <div className=\"flex flex-col gap-2\">\n            <div className=\"flex flex-col gap-2\">\n              <div className=\"flex items-center justify-between md:items-start\">\n                <h1 className=\"scroll-m-24 text-3xl font-semibold tracking-tight sm:text-3xl\">\n                  {doc.title}\n                </h1>\n                <div className=\"docs-nav flex items-center gap-2\">\n                  <div className=\"hidden sm:block\">\n                    <DocsCopyPage page={raw} url={absoluteUrl(page.url)} />\n                  </div>\n                  <div className=\"ml-auto flex gap-2\">\n                    {neighbours.previous && (\n                      <Button\n                        variant=\"secondary\"\n                        size=\"icon\"\n                        className=\"extend-touch-target size-8 shadow-none md:size-7\"\n                        asChild\n                      >\n                        <Link href={neighbours.previous.url}>\n                          <IconArrowLeft />\n                          <span className=\"sr-only\">Previous</span>\n                        </Link>\n                      </Button>\n                    )}\n                    {neighbours.next && (\n                      <Button\n                        variant=\"secondary\"\n                        size=\"icon\"\n                        className=\"extend-touch-target size-8 shadow-none md:size-7\"\n                        asChild\n                      >\n                        <Link href={neighbours.next.url}>\n                          <span className=\"sr-only\">Next</span>\n                          <IconArrowRight />\n                        </Link>\n                      </Button>\n                    )}\n                  </div>\n                </div>\n              </div>\n              {doc.description && (\n                <p className=\"text-[1.05rem] text-muted-foreground sm:text-base sm:text-balance md:max-w-[80%]\">\n                  {doc.description}\n                </p>\n              )}\n            </div>\n          </div>\n          <div className=\"w-full flex-1 pb-16 *:data-[slot=alert]:first:mt-0 sm:pb-0\">\n            {params.slug &&\n              params.slug[0] === \"components\" &&\n              params.slug[1] &&\n              params.slug[2] && (\n                <DocsBaseSwitcher\n                  base={params.slug[1]}\n                  component={params.slug[2]}\n                  className=\"mb-4\"\n                />\n              )}\n            <MDX components={mdxComponents} />\n          </div>\n          <div className=\"hidden h-16 w-full items-center gap-2 px-4 sm:flex sm:px-0\">\n            {neighbours.previous && (\n              <Button\n                variant=\"secondary\"\n                size=\"sm\"\n                asChild\n                className=\"shadow-none\"\n              >\n                <Link href={neighbours.previous.url}>\n                  <IconArrowLeft /> {neighbours.previous.name}\n                </Link>\n              </Button>\n            )}\n            {neighbours.next && (\n              <Button\n                variant=\"secondary\"\n                size=\"sm\"\n                className=\"ml-auto shadow-none\"\n                asChild\n              >\n                <Link href={neighbours.next.url}>\n                  {neighbours.next.name} <IconArrowRight />\n                </Link>\n              </Button>\n            )}\n          </div>\n        </div>\n      </div>\n      <div className=\"sticky top-[calc(var(--header-height)+1px)] z-30 ml-auto hidden h-[90svh] w-(--sidebar-width) flex-col gap-4 overflow-hidden overscroll-none pb-8 xl:flex\">\n        <div className=\"h-(--top-spacing) shrink-0\"></div>\n        {doc.toc?.length ? (\n          <div className=\"no-scrollbar flex flex-col gap-8 overflow-y-auto px-8\">\n            <DocsTableOfContents toc={doc.toc} />\n          </div>\n        ) : null}\n        <div className=\"hidden flex-1 flex-col gap-6 px-6 xl:flex\">\n          <OpenInV0Cta />\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/docs/changelog/page.tsx",
    "content": "import Link from \"next/link\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { mdxComponents } from \"@/mdx-components\"\nimport { IconRss } from \"@tabler/icons-react\"\n\nimport { getChangelogPages, type ChangelogPageData } from \"@/lib/changelog\"\nimport { absoluteUrl } from \"@/lib/utils\"\nimport { OpenInV0Cta } from \"@/components/open-in-v0-cta\"\n\nexport const revalidate = false\nexport const dynamic = \"force-static\"\n\nexport function generateMetadata() {\n  return {\n    title: \"Changelog\",\n    description: \"Latest updates and announcements.\",\n    openGraph: {\n      title: \"Changelog\",\n      description: \"Latest updates and announcements.\",\n      type: \"article\",\n      url: absoluteUrl(\"/docs/changelog\"),\n      images: [\n        {\n          url: `/og?title=${encodeURIComponent(\n            \"Changelog\"\n          )}&description=${encodeURIComponent(\n            \"Latest updates and announcements.\"\n          )}`,\n        },\n      ],\n    },\n  }\n}\n\nexport default function ChangelogPage() {\n  const pages = getChangelogPages()\n  const latestPages = pages.slice(0, 5)\n  const olderPages = pages.slice(5)\n\n  return (\n    <div\n      data-slot=\"docs\"\n      className=\"flex scroll-mt-24 items-stretch pb-8 text-[1.05rem] sm:text-[15px] xl:w-full\"\n    >\n      <div className=\"flex min-w-0 flex-1 flex-col\">\n        <div className=\"h-(--top-spacing) shrink-0\" />\n        <div className=\"mx-auto flex w-full max-w-[40rem] min-w-0 flex-1 flex-col gap-6 px-4 py-6 text-neutral-800 md:px-0 lg:py-8 dark:text-neutral-300\">\n          <div className=\"flex flex-col gap-2\">\n            <div className=\"flex items-center justify-between\">\n              <h1 className=\"scroll-m-24 text-4xl font-semibold tracking-tight sm:text-3xl\">\n                Changelog\n              </h1>\n              <Button variant=\"secondary\" size=\"sm\" asChild>\n                <a href=\"/rss.xml\" target=\"_blank\" rel=\"noopener noreferrer\">\n                  <IconRss />\n                  RSS\n                </a>\n              </Button>\n            </div>\n            <p className=\"text-[1.05rem] text-muted-foreground sm:text-base sm:text-balance md:max-w-[80%]\">\n              Latest updates and announcements.\n            </p>\n          </div>\n          <div className=\"w-full flex-1 pb-16 sm:pb-0\">\n            {latestPages.map((page) => {\n              const data = page.data as ChangelogPageData\n              const MDX = page.data.body\n\n              return (\n                <article key={page.url} className=\"mb-12 border-b pb-12\">\n                  <h2 className=\"font-heading text-xl font-semibold tracking-tight\">\n                    {data.title}\n                  </h2>\n                  <div className=\"prose-changelog mt-6 *:first:mt-0\">\n                    <MDX components={mdxComponents} />\n                  </div>\n                </article>\n              )\n            })}\n            {olderPages.length > 0 && (\n              <div id=\"more-updates\" className=\"mb-24 scroll-mt-24\">\n                <h2 className=\"mb-6 font-heading text-xl font-semibold tracking-tight\">\n                  More Updates\n                </h2>\n                <div className=\"grid auto-rows-fr gap-3 sm:grid-cols-2\">\n                  {olderPages.map((page) => {\n                    const data = page.data as ChangelogPageData\n                    const [date, ...titleParts] = data.title.split(\" - \")\n                    const title = titleParts.join(\" - \")\n                    return (\n                      <Link\n                        key={page.url}\n                        href={page.url}\n                        className=\"flex w-full flex-col rounded-xl bg-surface px-4 py-3 text-surface-foreground transition-colors hover:bg-surface/80\"\n                      >\n                        <span className=\"text-xs text-muted-foreground\">\n                          {date}\n                        </span>\n                        <span className=\"text-sm font-medium\">{title}</span>\n                      </Link>\n                    )\n                  })}\n                </div>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n      <div className=\"sticky top-[calc(var(--header-height)+1px)] z-30 ml-auto hidden h-[90svh] w-72 flex-col gap-4 overflow-hidden overscroll-none pb-8 lg:flex\">\n        <div className=\"h-(--top-spacing) shrink-0\"></div>\n        <div className=\"no-scrollbar flex flex-col gap-8 overflow-y-auto px-8\">\n          <div className=\"flex flex-col gap-2 p-4 pt-0 text-sm\">\n            <p className=\"sticky top-0 h-6 bg-background text-xs font-medium text-muted-foreground\">\n              On This Page\n            </p>\n            {latestPages.map((page) => {\n              const data = page.data as ChangelogPageData\n              return (\n                <Link\n                  key={page.url}\n                  href={page.url}\n                  className=\"text-[0.8rem] text-muted-foreground no-underline transition-colors hover:text-foreground\"\n                >\n                  {data.title}\n                </Link>\n              )\n            })}\n            {olderPages.length > 0 && (\n              <a\n                href=\"#more-updates\"\n                className=\"text-[0.8rem] text-muted-foreground no-underline transition-colors hover:text-foreground\"\n              >\n                More Updates\n              </a>\n            )}\n          </div>\n        </div>\n        <div className=\"hidden flex-1 flex-col gap-6 px-6 xl:flex\">\n          <OpenInV0Cta />\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/docs/layout.tsx",
    "content": "import { source } from \"@/lib/source\"\nimport { DocsSidebar } from \"@/components/docs-sidebar\"\nimport { SidebarProvider } from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function DocsLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <div className=\"container-wrapper flex flex-1 flex-col px-2\">\n      <SidebarProvider\n        className=\"min-h-min flex-1 items-start px-0 [--top-spacing:0] lg:grid lg:grid-cols-[var(--sidebar-width)_minmax(0,1fr)] lg:[--top-spacing:calc(var(--spacing)*4)] 3xl:fixed:container 3xl:fixed:px-3\"\n        style={\n          {\n            \"--sidebar-width\": \"calc(var(--spacing) * 72)\",\n          } as React.CSSProperties\n        }\n      >\n        <DocsSidebar tree={source.pageTree} />\n        <div className=\"h-full w-full\">{children}</div>\n      </SidebarProvider>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/authentication/components/user-auth-form.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icons } from \"@/components/icons\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Field,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport function UserAuthForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  const [isLoading, setIsLoading] = React.useState<boolean>(false)\n\n  async function onSubmit(event: React.SyntheticEvent) {\n    event.preventDefault()\n    setIsLoading(true)\n\n    setTimeout(() => {\n      setIsLoading(false)\n    }, 3000)\n  }\n\n  return (\n    <div className={cn(\"grid gap-6\", className)} {...props}>\n      <form onSubmit={onSubmit}>\n        <FieldGroup>\n          <Field>\n            <FieldLabel className=\"sr-only\" htmlFor=\"email\">\n              Email\n            </FieldLabel>\n            <Input\n              id=\"email\"\n              placeholder=\"name@example.com\"\n              type=\"email\"\n              autoCapitalize=\"none\"\n              autoComplete=\"email\"\n              autoCorrect=\"off\"\n              disabled={isLoading}\n            />\n          </Field>\n          <Field>\n            <Button disabled={isLoading}>\n              {isLoading && <Spinner />}\n              Sign In with Email\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n      <FieldSeparator>Or continue with</FieldSeparator>\n      <Button variant=\"outline\" type=\"button\" disabled={isLoading}>\n        {isLoading ? <Spinner /> : <Icons.gitHub className=\"mr-2 h-4 w-4\" />}{\" \"}\n        GitHub\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/authentication/page.tsx",
    "content": "import { type Metadata } from \"next\"\nimport Image from \"next/image\"\nimport Link from \"next/link\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/registry/new-york-v4/ui/button\"\nimport { FieldDescription } from \"@/registry/new-york-v4/ui/field\"\nimport { UserAuthForm } from \"@/app/(app)/examples/authentication/components/user-auth-form\"\n\nexport const metadata: Metadata = {\n  title: \"Authentication\",\n  description: \"Authentication forms built using the components.\",\n}\n\nexport default function AuthenticationPage() {\n  return (\n    <>\n      <div className=\"md:hidden\">\n        <Image\n          src=\"/examples/authentication-light.png\"\n          width={1280}\n          height={843}\n          alt=\"Authentication\"\n          className=\"block dark:hidden\"\n          priority\n        />\n        <Image\n          src=\"/examples/authentication-dark.png\"\n          width={1280}\n          height={843}\n          alt=\"Authentication\"\n          className=\"hidden dark:block\"\n          priority\n        />\n      </div>\n      <div className=\"relative container hidden flex-1 shrink-0 items-center justify-center md:grid lg:max-w-none lg:grid-cols-2 lg:px-0\">\n        <Link\n          href=\"/examples/authentication\"\n          className={cn(\n            buttonVariants({ variant: \"ghost\" }),\n            \"absolute top-4 right-4 md:top-8 md:right-8\"\n          )}\n        >\n          Login\n        </Link>\n        <div className=\"relative hidden h-full flex-col p-10 text-primary lg:flex dark:border-r\">\n          <div className=\"absolute inset-0 bg-primary/5\" />\n          <div className=\"relative z-20 flex items-center text-lg font-medium\">\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              viewBox=\"0 0 24 24\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              strokeWidth=\"2\"\n              strokeLinecap=\"round\"\n              strokeLinejoin=\"round\"\n              className=\"mr-2 h-6 w-6\"\n            >\n              <path d=\"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3\" />\n            </svg>\n            Acme Inc\n          </div>\n          <div className=\"relative z-20 mt-auto\">\n            <blockquote className=\"leading-normal text-balance\">\n              &ldquo;This library has saved me countless hours of work and\n              helped me deliver stunning designs to my clients faster than ever\n              before.&rdquo; - Sofia Davis\n            </blockquote>\n          </div>\n        </div>\n        <div className=\"flex items-center justify-center lg:h-[1000px] lg:p-8\">\n          <div className=\"mx-auto flex w-full flex-col justify-center gap-6 sm:w-[350px]\">\n            <div className=\"flex flex-col gap-2 text-center\">\n              <h1 className=\"text-2xl font-semibold tracking-tight\">\n                Create an account\n              </h1>\n              <p className=\"text-sm text-muted-foreground\">\n                Enter your email below to create your account\n              </p>\n            </div>\n            <UserAuthForm />\n            <FieldDescription className=\"px-6 text-center\">\n              By clicking continue, you agree to our{\" \"}\n              <Link href=\"/terms\">Terms of Service</Link> and{\" \"}\n              <Link href=\"/privacy\">Privacy Policy</Link>.\n            </FieldDescription>\n          </div>\n        </div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n  IconCamera,\n  IconChartBar,\n  IconDashboard,\n  IconDatabase,\n  IconFileAi,\n  IconFileDescription,\n  IconFileWord,\n  IconFolder,\n  IconHelp,\n  IconInnerShadowTop,\n  IconListDetails,\n  IconReport,\n  IconSearch,\n  IconSettings,\n  IconUsers,\n} from \"@tabler/icons-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { NavDocuments } from \"@/app/(app)/examples/dashboard/components/nav-documents\"\nimport { NavMain } from \"@/app/(app)/examples/dashboard/components/nav-main\"\nimport { NavSecondary } from \"@/app/(app)/examples/dashboard/components/nav-secondary\"\nimport { NavUser } from \"@/app/(app)/examples/dashboard/components/nav-user\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Dashboard\",\n      url: \"#\",\n      icon: IconDashboard,\n    },\n    {\n      title: \"Lifecycle\",\n      url: \"#\",\n      icon: IconListDetails,\n    },\n    {\n      title: \"Analytics\",\n      url: \"#\",\n      icon: IconChartBar,\n    },\n    {\n      title: \"Projects\",\n      url: \"#\",\n      icon: IconFolder,\n    },\n    {\n      title: \"Team\",\n      url: \"#\",\n      icon: IconUsers,\n    },\n  ],\n  navClouds: [\n    {\n      title: \"Capture\",\n      icon: IconCamera,\n      isActive: true,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Proposal\",\n      icon: IconFileDescription,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Prompts\",\n      icon: IconFileAi,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: IconSettings,\n    },\n    {\n      title: \"Get Help\",\n      url: \"#\",\n      icon: IconHelp,\n    },\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: IconSearch,\n    },\n  ],\n  documents: [\n    {\n      name: \"Data Library\",\n      url: \"#\",\n      icon: IconDatabase,\n    },\n    {\n      name: \"Reports\",\n      url: \"#\",\n      icon: IconReport,\n    },\n    {\n      name: \"Word Assistant\",\n      url: \"#\",\n      icon: IconFileWord,\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar collapsible=\"none\" className=\"h-auto border-r\" {...props}>\n      <SidebarHeader className=\"border-b\">\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton\n              asChild\n              className=\"data-[slot=sidebar-menu-button]:p-1.5!\"\n            >\n              <Link href=\"#\">\n                <IconInnerShadowTop className=\"size-5!\" />\n                <span className=\"text-base font-semibold\">Acme Inc.</span>\n              </Link>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavDocuments items={data.documents} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/chart-area-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport { useIsMobile } from \"@/registry/new-york-v4/hooks/use-mobile\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport const description = \"An interactive area chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n  { date: \"2024-05-01\", desktop: 165, mobile: 220 },\n  { date: \"2024-05-02\", desktop: 293, mobile: 310 },\n  { date: \"2024-05-03\", desktop: 247, mobile: 190 },\n  { date: \"2024-05-04\", desktop: 385, mobile: 420 },\n  { date: \"2024-05-05\", desktop: 481, mobile: 390 },\n  { date: \"2024-05-06\", desktop: 498, mobile: 520 },\n  { date: \"2024-05-07\", desktop: 388, mobile: 300 },\n  { date: \"2024-05-08\", desktop: 149, mobile: 210 },\n  { date: \"2024-05-09\", desktop: 227, mobile: 180 },\n  { date: \"2024-05-10\", desktop: 293, mobile: 330 },\n  { date: \"2024-05-11\", desktop: 335, mobile: 270 },\n  { date: \"2024-05-12\", desktop: 197, mobile: 240 },\n  { date: \"2024-05-13\", desktop: 197, mobile: 160 },\n  { date: \"2024-05-14\", desktop: 448, mobile: 490 },\n  { date: \"2024-05-15\", desktop: 473, mobile: 380 },\n  { date: \"2024-05-16\", desktop: 338, mobile: 400 },\n  { date: \"2024-05-17\", desktop: 499, mobile: 420 },\n  { date: \"2024-05-18\", desktop: 315, mobile: 350 },\n  { date: \"2024-05-19\", desktop: 235, mobile: 180 },\n  { date: \"2024-05-20\", desktop: 177, mobile: 230 },\n  { date: \"2024-05-21\", desktop: 82, mobile: 140 },\n  { date: \"2024-05-22\", desktop: 81, mobile: 120 },\n  { date: \"2024-05-23\", desktop: 252, mobile: 290 },\n  { date: \"2024-05-24\", desktop: 294, mobile: 220 },\n  { date: \"2024-05-25\", desktop: 201, mobile: 250 },\n  { date: \"2024-05-26\", desktop: 213, mobile: 170 },\n  { date: \"2024-05-27\", desktop: 420, mobile: 460 },\n  { date: \"2024-05-28\", desktop: 233, mobile: 190 },\n  { date: \"2024-05-29\", desktop: 78, mobile: 130 },\n  { date: \"2024-05-30\", desktop: 340, mobile: 280 },\n  { date: \"2024-05-31\", desktop: 178, mobile: 230 },\n  { date: \"2024-06-01\", desktop: 178, mobile: 200 },\n  { date: \"2024-06-02\", desktop: 470, mobile: 410 },\n  { date: \"2024-06-03\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-04\", desktop: 439, mobile: 380 },\n  { date: \"2024-06-05\", desktop: 88, mobile: 140 },\n  { date: \"2024-06-06\", desktop: 294, mobile: 250 },\n  { date: \"2024-06-07\", desktop: 323, mobile: 370 },\n  { date: \"2024-06-08\", desktop: 385, mobile: 320 },\n  { date: \"2024-06-09\", desktop: 438, mobile: 480 },\n  { date: \"2024-06-10\", desktop: 155, mobile: 200 },\n  { date: \"2024-06-11\", desktop: 92, mobile: 150 },\n  { date: \"2024-06-12\", desktop: 492, mobile: 420 },\n  { date: \"2024-06-13\", desktop: 81, mobile: 130 },\n  { date: \"2024-06-14\", desktop: 426, mobile: 380 },\n  { date: \"2024-06-15\", desktop: 307, mobile: 350 },\n  { date: \"2024-06-16\", desktop: 371, mobile: 310 },\n  { date: \"2024-06-17\", desktop: 475, mobile: 520 },\n  { date: \"2024-06-18\", desktop: 107, mobile: 170 },\n  { date: \"2024-06-19\", desktop: 341, mobile: 290 },\n  { date: \"2024-06-20\", desktop: 408, mobile: 450 },\n  { date: \"2024-06-21\", desktop: 169, mobile: 210 },\n  { date: \"2024-06-22\", desktop: 317, mobile: 270 },\n  { date: \"2024-06-23\", desktop: 480, mobile: 530 },\n  { date: \"2024-06-24\", desktop: 132, mobile: 180 },\n  { date: \"2024-06-25\", desktop: 141, mobile: 190 },\n  { date: \"2024-06-26\", desktop: 434, mobile: 380 },\n  { date: \"2024-06-27\", desktop: 448, mobile: 490 },\n  { date: \"2024-06-28\", desktop: 149, mobile: 200 },\n  { date: \"2024-06-29\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-30\", desktop: 446, mobile: 400 },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaInteractive() {\n  const isMobile = useIsMobile()\n  const [timeRange, setTimeRange] = React.useState(\"7d\")\n\n  const filteredData = chartData.filter((item) => {\n    const date = new Date(item.date)\n    const referenceDate = new Date(\"2024-06-30\")\n    let daysToSubtract = 90\n    if (timeRange === \"30d\") {\n      daysToSubtract = 30\n    } else if (timeRange === \"7d\") {\n      daysToSubtract = 7\n    }\n    const startDate = new Date(referenceDate)\n    startDate.setDate(startDate.getDate() - daysToSubtract)\n    return date >= startDate\n  })\n\n  return (\n    <Card className=\"@container/card\">\n      <CardHeader>\n        <CardTitle>Total Visitors</CardTitle>\n        <CardDescription>\n          <span className=\"hidden @[540px]/card:block\">\n            Total for the last 3 months\n          </span>\n          <span className=\"@[540px]/card:hidden\">Last 3 months</span>\n        </CardDescription>\n        <CardAction>\n          <ToggleGroup\n            type=\"single\"\n            value={timeRange}\n            onValueChange={setTimeRange}\n            variant=\"outline\"\n            className=\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\"\n          >\n            <ToggleGroupItem value=\"90d\">Last 3 months</ToggleGroupItem>\n            <ToggleGroupItem value=\"30d\">Last 30 days</ToggleGroupItem>\n            <ToggleGroupItem value=\"7d\">Last 7 days</ToggleGroupItem>\n          </ToggleGroup>\n          <Select value={timeRange} onValueChange={setTimeRange}>\n            <SelectTrigger\n              className=\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\"\n              size=\"sm\"\n              aria-label=\"Select a value\"\n            >\n              <SelectValue placeholder=\"Last 3 months\" />\n            </SelectTrigger>\n            <SelectContent className=\"rounded-xl\">\n              <SelectItem value=\"90d\" className=\"rounded-lg\">\n                Last 3 months\n              </SelectItem>\n              <SelectItem value=\"30d\" className=\"rounded-lg\">\n                Last 30 days\n              </SelectItem>\n              <SelectItem value=\"7d\" className=\"rounded-lg\">\n                Last 7 days\n              </SelectItem>\n            </SelectContent>\n          </Select>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"px-2 pt-4 sm:px-6 sm:pt-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <AreaChart data={filteredData}>\n            <defs>\n              <linearGradient id=\"fillDesktop\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={1.0}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n              <linearGradient id=\"fillMobile\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n            </defs>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              cursor={false}\n              defaultIndex={isMobile ? -1 : 10}\n              content={\n                <ChartTooltipContent\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                    })\n                  }}\n                  indicator=\"dot\"\n                />\n              }\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"url(#fillMobile)\"\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"url(#fillDesktop)\"\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/data-table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  closestCenter,\n  DndContext,\n  KeyboardSensor,\n  MouseSensor,\n  TouchSensor,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n  type UniqueIdentifier,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n  arrayMove,\n  SortableContext,\n  useSortable,\n  verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n  IconChevronDown,\n  IconChevronLeft,\n  IconChevronRight,\n  IconChevronsLeft,\n  IconChevronsRight,\n  IconCircleCheckFilled,\n  IconDotsVertical,\n  IconGripVertical,\n  IconLayoutColumns,\n  IconLoader,\n  IconPlus,\n  IconTrendingUp,\n} from \"@tabler/icons-react\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFacetedRowModel,\n  getFacetedUniqueValues,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type Row,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\nimport { toast } from \"sonner\"\nimport { z } from \"zod\"\n\nimport { useIsMobile } from \"@/registry/new-york-v4/hooks/use-mobile\"\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\n\nexport const schema = z.object({\n  id: z.number(),\n  header: z.string(),\n  type: z.string(),\n  status: z.string(),\n  target: z.string(),\n  limit: z.string(),\n  reviewer: z.string(),\n})\n\n// Create a separate component for the drag handle\nfunction DragHandle({ id }: { id: number }) {\n  const { attributes, listeners } = useSortable({\n    id,\n  })\n\n  return (\n    <Button\n      {...attributes}\n      {...listeners}\n      variant=\"ghost\"\n      size=\"icon\"\n      className=\"size-7 text-muted-foreground hover:bg-transparent\"\n    >\n      <IconGripVertical className=\"size-3 text-muted-foreground\" />\n      <span className=\"sr-only\">Drag to reorder</span>\n    </Button>\n  )\n}\n\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\n  {\n    id: \"drag\",\n    header: () => null,\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\n  },\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={\n            table.getIsAllPageRowsSelected() ||\n            (table.getIsSomePageRowsSelected() && \"indeterminate\")\n          }\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n          aria-label=\"Select all\"\n        />\n      </div>\n    ),\n    cell: ({ row }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={row.getIsSelected()}\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\n          aria-label=\"Select row\"\n        />\n      </div>\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"header\",\n    header: \"Header\",\n    cell: ({ row }) => {\n      return <TableCellViewer item={row.original} />\n    },\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"type\",\n    header: \"Section Type\",\n    cell: ({ row }) => (\n      <div className=\"w-32\">\n        <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n          {row.original.type}\n        </Badge>\n      </div>\n    ),\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n        {row.original.status === \"Done\" ? (\n          <IconCircleCheckFilled className=\"fill-green-500 dark:fill-green-400\" />\n        ) : (\n          <IconLoader />\n        )}\n        {row.original.status}\n      </Badge>\n    ),\n  },\n  {\n    accessorKey: \"target\",\n    header: () => <div className=\"w-full text-right\">Target</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-target`} className=\"sr-only\">\n          Target\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.target}\n          id={`${row.original.id}-target`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"limit\",\n    header: () => <div className=\"w-full text-right\">Limit</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-limit`} className=\"sr-only\">\n          Limit\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.limit}\n          id={`${row.original.id}-limit`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"reviewer\",\n    header: \"Reviewer\",\n    cell: ({ row }) => {\n      const isAssigned = row.original.reviewer !== \"Assign reviewer\"\n\n      if (isAssigned) {\n        return row.original.reviewer\n      }\n\n      return (\n        <>\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\"sr-only\">\n            Reviewer\n          </Label>\n          <Select>\n            <SelectTrigger\n              className=\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\"\n              size=\"sm\"\n              id={`${row.original.id}-reviewer`}\n            >\n              <SelectValue placeholder=\"Assign reviewer\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n              <SelectItem value=\"Jamik Tashpulatov\">\n                Jamik Tashpulatov\n              </SelectItem>\n            </SelectContent>\n          </Select>\n        </>\n      )\n    },\n  },\n  {\n    id: \"actions\",\n    cell: () => (\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button\n            variant=\"ghost\"\n            className=\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\"\n            size=\"icon\"\n          >\n            <IconDotsVertical />\n            <span className=\"sr-only\">Open menu</span>\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-32\">\n          <DropdownMenuItem>Edit</DropdownMenuItem>\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem variant=\"destructive\">Delete</DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    ),\n  },\n]\n\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\n    id: row.original.id,\n  })\n\n  return (\n    <TableRow\n      data-state={row.getIsSelected() && \"selected\"}\n      data-dragging={isDragging}\n      ref={setNodeRef}\n      className=\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\"\n      style={{\n        transform: CSS.Transform.toString(transform),\n        transition: transition,\n      }}\n    >\n      {row.getVisibleCells().map((cell) => (\n        <TableCell key={cell.id}>\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\n        </TableCell>\n      ))}\n    </TableRow>\n  )\n}\n\nexport function DataTable({\n  data: initialData,\n}: {\n  data: z.infer<typeof schema>[]\n}) {\n  const [data, setData] = React.useState(() => initialData)\n  const [rowSelection, setRowSelection] = React.useState({})\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [pagination, setPagination] = React.useState({\n    pageIndex: 0,\n    pageSize: 10,\n  })\n  const sortableId = React.useId()\n  const sensors = useSensors(\n    useSensor(MouseSensor, {}),\n    useSensor(TouchSensor, {}),\n    useSensor(KeyboardSensor, {})\n  )\n\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\n    () => data?.map(({ id }) => id) || [],\n    [data]\n  )\n\n  const table = useReactTable({\n    data,\n    columns,\n    state: {\n      sorting,\n      columnVisibility,\n      rowSelection,\n      columnFilters,\n      pagination,\n    },\n    getRowId: (row) => row.id.toString(),\n    enableRowSelection: true,\n    onRowSelectionChange: setRowSelection,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    onColumnVisibilityChange: setColumnVisibility,\n    onPaginationChange: setPagination,\n    getCoreRowModel: getCoreRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFacetedRowModel: getFacetedRowModel(),\n    getFacetedUniqueValues: getFacetedUniqueValues(),\n  })\n\n  function handleDragEnd(event: DragEndEvent) {\n    const { active, over } = event\n    if (active && over && active.id !== over.id) {\n      setData((data) => {\n        const oldIndex = dataIds.indexOf(active.id)\n        const newIndex = dataIds.indexOf(over.id)\n        return arrayMove(data, oldIndex, newIndex)\n      })\n    }\n  }\n\n  return (\n    <Tabs\n      defaultValue=\"outline\"\n      className=\"w-full flex-col justify-start gap-6\"\n    >\n      <div className=\"flex items-center justify-between px-4 lg:px-6\">\n        <Label htmlFor=\"view-selector\" className=\"sr-only\">\n          View\n        </Label>\n        <Select defaultValue=\"outline\">\n          <SelectTrigger\n            className=\"flex w-fit @4xl/main:hidden\"\n            size=\"sm\"\n            id=\"view-selector\"\n          >\n            <SelectValue placeholder=\"Select a view\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectItem value=\"outline\">Outline</SelectItem>\n            <SelectItem value=\"past-performance\">Past Performance</SelectItem>\n            <SelectItem value=\"key-personnel\">Key Personnel</SelectItem>\n            <SelectItem value=\"focus-documents\">Focus Documents</SelectItem>\n          </SelectContent>\n        </Select>\n        <TabsList className=\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\">\n          <TabsTrigger value=\"outline\">Outline</TabsTrigger>\n          <TabsTrigger value=\"past-performance\">\n            Past Performance <Badge variant=\"secondary\">3</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"key-personnel\">\n            Key Personnel <Badge variant=\"secondary\">2</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"focus-documents\">Focus Documents</TabsTrigger>\n        </TabsList>\n        <div className=\"flex items-center gap-2\">\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"outline\" size=\"sm\">\n                <IconLayoutColumns />\n                <span className=\"hidden lg:inline\">Customize Columns</span>\n                <span className=\"lg:hidden\">Columns</span>\n                <IconChevronDown />\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"w-56\">\n              {table\n                .getAllColumns()\n                .filter(\n                  (column) =>\n                    typeof column.accessorFn !== \"undefined\" &&\n                    column.getCanHide()\n                )\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuContent>\n          </DropdownMenu>\n          <Button variant=\"outline\" size=\"sm\">\n            <IconPlus />\n            <span className=\"hidden lg:inline\">Add Section</span>\n          </Button>\n        </div>\n      </div>\n      <TabsContent\n        value=\"outline\"\n        className=\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\"\n      >\n        <div className=\"overflow-hidden rounded-lg border\">\n          <DndContext\n            collisionDetection={closestCenter}\n            modifiers={[restrictToVerticalAxis]}\n            onDragEnd={handleDragEnd}\n            sensors={sensors}\n            id={sortableId}\n          >\n            <Table>\n              <TableHeader className=\"sticky top-0 z-10 bg-muted\">\n                {table.getHeaderGroups().map((headerGroup) => (\n                  <TableRow key={headerGroup.id}>\n                    {headerGroup.headers.map((header) => {\n                      return (\n                        <TableHead key={header.id} colSpan={header.colSpan}>\n                          {header.isPlaceholder\n                            ? null\n                            : flexRender(\n                                header.column.columnDef.header,\n                                header.getContext()\n                              )}\n                        </TableHead>\n                      )\n                    })}\n                  </TableRow>\n                ))}\n              </TableHeader>\n              <TableBody className=\"**:data-[slot=table-cell]:first:w-8\">\n                {table.getRowModel().rows?.length ? (\n                  <SortableContext\n                    items={dataIds}\n                    strategy={verticalListSortingStrategy}\n                  >\n                    {table.getRowModel().rows.map((row) => (\n                      <DraggableRow key={row.id} row={row} />\n                    ))}\n                  </SortableContext>\n                ) : (\n                  <TableRow>\n                    <TableCell\n                      colSpan={columns.length}\n                      className=\"h-24 text-center\"\n                    >\n                      No results.\n                    </TableCell>\n                  </TableRow>\n                )}\n              </TableBody>\n            </Table>\n          </DndContext>\n        </div>\n        <div className=\"flex items-center justify-between px-4\">\n          <div className=\"hidden flex-1 text-sm text-muted-foreground lg:flex\">\n            {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n            {table.getFilteredRowModel().rows.length} row(s) selected.\n          </div>\n          <div className=\"flex w-full items-center gap-8 lg:w-fit\">\n            <div className=\"hidden items-center gap-2 lg:flex\">\n              <Label htmlFor=\"rows-per-page\" className=\"text-sm font-medium\">\n                Rows per page\n              </Label>\n              <Select\n                value={`${table.getState().pagination.pageSize}`}\n                onValueChange={(value) => {\n                  table.setPageSize(Number(value))\n                }}\n              >\n                <SelectTrigger size=\"sm\" className=\"w-20\" id=\"rows-per-page\">\n                  <SelectValue\n                    placeholder={table.getState().pagination.pageSize}\n                  />\n                </SelectTrigger>\n                <SelectContent side=\"top\">\n                  {[10, 20, 30, 40, 50].map((pageSize) => (\n                    <SelectItem key={pageSize} value={`${pageSize}`}>\n                      {pageSize}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"flex w-fit items-center justify-center text-sm font-medium\">\n              Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n              {table.getPageCount()}\n            </div>\n            <div className=\"ml-auto flex items-center gap-2 lg:ml-0\">\n              <Button\n                variant=\"outline\"\n                className=\"hidden h-8 w-8 p-0 lg:flex\"\n                onClick={() => table.setPageIndex(0)}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to first page</span>\n                <IconChevronsLeft />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.previousPage()}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to previous page</span>\n                <IconChevronLeft />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.nextPage()}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to next page</span>\n                <IconChevronRight />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"hidden size-8 lg:flex\"\n                size=\"icon\"\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to last page</span>\n                <IconChevronsRight />\n              </Button>\n            </div>\n          </div>\n        </div>\n      </TabsContent>\n      <TabsContent\n        value=\"past-performance\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent value=\"key-personnel\" className=\"flex flex-col px-4 lg:px-6\">\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent\n        value=\"focus-documents\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n    </Tabs>\n  )\n}\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\n  const isMobile = useIsMobile()\n\n  return (\n    <Drawer direction={isMobile ? \"bottom\" : \"right\"}>\n      <DrawerTrigger asChild>\n        <Button variant=\"link\" className=\"w-fit px-0 text-left text-foreground\">\n          {item.header}\n        </Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader className=\"gap-1\">\n          <DrawerTitle>{item.header}</DrawerTitle>\n          <DrawerDescription>\n            Showing total visitors for the last 6 months\n          </DrawerDescription>\n        </DrawerHeader>\n        <div className=\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\">\n          {!isMobile && (\n            <>\n              <ChartContainer config={chartConfig}>\n                <AreaChart\n                  accessibilityLayer\n                  data={chartData}\n                  margin={{\n                    left: 0,\n                    right: 10,\n                  }}\n                >\n                  <CartesianGrid vertical={false} />\n                  <XAxis\n                    dataKey=\"month\"\n                    tickLine={false}\n                    axisLine={false}\n                    tickMargin={8}\n                    tickFormatter={(value) => value.slice(0, 3)}\n                    hide\n                  />\n                  <ChartTooltip\n                    cursor={false}\n                    content={<ChartTooltipContent indicator=\"dot\" />}\n                  />\n                  <Area\n                    dataKey=\"mobile\"\n                    type=\"natural\"\n                    fill=\"var(--color-mobile)\"\n                    fillOpacity={0.6}\n                    stroke=\"var(--color-mobile)\"\n                    stackId=\"a\"\n                  />\n                  <Area\n                    dataKey=\"desktop\"\n                    type=\"natural\"\n                    fill=\"var(--color-desktop)\"\n                    fillOpacity={0.4}\n                    stroke=\"var(--color-desktop)\"\n                    stackId=\"a\"\n                  />\n                </AreaChart>\n              </ChartContainer>\n              <Separator />\n              <div className=\"grid gap-2\">\n                <div className=\"flex gap-2 leading-none font-medium\">\n                  Trending up by 5.2% this month{\" \"}\n                  <IconTrendingUp className=\"size-4\" />\n                </div>\n                <div className=\"text-muted-foreground\">\n                  Showing total visitors for the last 6 months. This is just\n                  some random text to test the layout. It spans multiple lines\n                  and should wrap around.\n                </div>\n              </div>\n              <Separator />\n            </>\n          )}\n          <form className=\"flex flex-col gap-4\">\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"header\">Header</Label>\n              <Input id=\"header\" defaultValue={item.header} />\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"type\">Type</Label>\n                <Select defaultValue={item.type}>\n                  <SelectTrigger id=\"type\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a type\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"Table of Contents\">\n                      Table of Contents\n                    </SelectItem>\n                    <SelectItem value=\"Executive Summary\">\n                      Executive Summary\n                    </SelectItem>\n                    <SelectItem value=\"Technical Approach\">\n                      Technical Approach\n                    </SelectItem>\n                    <SelectItem value=\"Design\">Design</SelectItem>\n                    <SelectItem value=\"Capabilities\">Capabilities</SelectItem>\n                    <SelectItem value=\"Focus Documents\">\n                      Focus Documents\n                    </SelectItem>\n                    <SelectItem value=\"Narrative\">Narrative</SelectItem>\n                    <SelectItem value=\"Cover Page\">Cover Page</SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"status\">Status</Label>\n                <Select defaultValue={item.status}>\n                  <SelectTrigger id=\"status\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a status\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"Done\">Done</SelectItem>\n                    <SelectItem value=\"In Progress\">In Progress</SelectItem>\n                    <SelectItem value=\"Not Started\">Not Started</SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"target\">Target</Label>\n                <Input id=\"target\" defaultValue={item.target} />\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"limit\">Limit</Label>\n                <Input id=\"limit\" defaultValue={item.limit} />\n              </div>\n            </div>\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"reviewer\">Reviewer</Label>\n              <Select defaultValue={item.reviewer}>\n                <SelectTrigger id=\"reviewer\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select a reviewer\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n                  <SelectItem value=\"Jamik Tashpulatov\">\n                    Jamik Tashpulatov\n                  </SelectItem>\n                  <SelectItem value=\"Emily Whalen\">Emily Whalen</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n          </form>\n        </div>\n        <DrawerFooter>\n          <Button>Submit</Button>\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Done</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/nav-documents.tsx",
    "content": "\"use client\"\n\nimport {\n  IconDots,\n  IconFolder,\n  IconShare3,\n  IconTrash,\n  type Icon,\n} from \"@tabler/icons-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavDocuments({\n  items,\n}: {\n  items: {\n    name: string\n    url: string\n    icon: Icon\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                <item.icon />\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"rounded-sm data-[state=open]:bg-accent\"\n                >\n                  <IconDots />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-24 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconFolder />\n                  <span>Open</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconShare3 />\n                  <span>Share</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  <IconTrash />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconDots className=\"text-sidebar-foreground/70\" />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { type Icon } from \"@tabler/icons-react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: Icon\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupContent>\n        <SidebarGroupLabel>Home</SidebarGroupLabel>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton tooltip={item.title}>\n                {item.icon && <item.icon />}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { type Icon } from \"@tabler/icons-react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: Icon\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild>\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  IconCreditCard,\n  IconDotsVertical,\n  IconLogout,\n  IconNotification,\n  IconUserCircle,\n} from \"@tabler/icons-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg grayscale\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs text-muted-foreground\">\n                  {user.email}\n                </span>\n              </div>\n              <IconDotsVertical className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs text-muted-foreground\">\n                    {user.email}\n                  </span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconUserCircle />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconCreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconNotification />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconLogout />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/section-cards.tsx",
    "content": "import { IconTrendingDown, IconTrendingUp } from \"@tabler/icons-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\n\nexport function SectionCards() {\n  return (\n    <div className=\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4\">\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Total Revenue</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            $1,250.00\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Trending up this month <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>New Customers</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            1,234\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingDown />\n              -20%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Down 20% this period <IconTrendingDown className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Acquisition needs attention\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Active Accounts</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            45,678\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Strong user retention <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">Engagement exceed targets</div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Growth Rate</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            4.5%\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +4.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Steady performance increase <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">Meets growth projections</div>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/components/site-header.tsx",
    "content": "import { IconCirclePlusFilled } from \"@tabler/icons-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function SiteHeader() {\n  return (\n    <header className=\"sticky top-0 z-10 flex h-(--header-height) shrink-0 items-center gap-2 border-b bg-background/90 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\">\n      <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n        <h1 className=\"text-base font-medium\">Documents</h1>\n        <div className=\"ml-auto flex items-center gap-2\">\n          <Button size=\"sm\" className=\"hidden h-7 sm:flex\">\n            <IconCirclePlusFilled />\n            <span>Quick Create</span>\n          </Button>\n        </div>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/data.json",
    "content": "[\n  {\n    \"id\": 1,\n    \"header\": \"Cover page\",\n    \"type\": \"Cover page\",\n    \"status\": \"In Process\",\n    \"target\": \"18\",\n    \"limit\": \"5\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 2,\n    \"header\": \"Table of contents\",\n    \"type\": \"Table of contents\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 3,\n    \"header\": \"Executive summary\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"10\",\n    \"limit\": \"13\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 4,\n    \"header\": \"Technical approach\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"27\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 5,\n    \"header\": \"Design\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"2\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 6,\n    \"header\": \"Capabilities\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"20\",\n    \"limit\": \"8\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 7,\n    \"header\": \"Integration with existing systems\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 8,\n    \"header\": \"Innovation and Advantages\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"25\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 9,\n    \"header\": \"Overview of EMR's Innovative Solutions\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"7\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 10,\n    \"header\": \"Advanced Algorithms and Machine Learning\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 11,\n    \"header\": \"Adaptive Communication Protocols\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"9\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 12,\n    \"header\": \"Advantages Over Current Technologies\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"0\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 13,\n    \"header\": \"Past Performance\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 14,\n    \"header\": \"Customer Feedback and Satisfaction Levels\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"34\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 15,\n    \"header\": \"Implementation Challenges and Solutions\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"3\",\n    \"limit\": \"35\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 16,\n    \"header\": \"Security Measures and Data Protection Policies\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"6\",\n    \"limit\": \"36\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 17,\n    \"header\": \"Scalability and Future Proofing\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"4\",\n    \"limit\": \"37\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 18,\n    \"header\": \"Cost-Benefit Analysis\",\n    \"type\": \"Plain language\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"38\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 19,\n    \"header\": \"User Training and Onboarding Experience\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"17\",\n    \"limit\": \"39\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 20,\n    \"header\": \"Future Development Roadmap\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"11\",\n    \"limit\": \"40\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 21,\n    \"header\": \"System Architecture Overview\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"24\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Maya Johnson\"\n  },\n  {\n    \"id\": 22,\n    \"header\": \"Risk Management Plan\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Carlos Rodriguez\"\n  },\n  {\n    \"id\": 23,\n    \"header\": \"Compliance Documentation\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"31\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Sarah Chen\"\n  },\n  {\n    \"id\": 24,\n    \"header\": \"API Documentation\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"8\",\n    \"limit\": \"12\",\n    \"reviewer\": \"Raj Patel\"\n  },\n  {\n    \"id\": 25,\n    \"header\": \"User Interface Mockups\",\n    \"type\": \"Visual\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Leila Ahmadi\"\n  },\n  {\n    \"id\": 26,\n    \"header\": \"Database Schema\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Thomas Wilson\"\n  },\n  {\n    \"id\": 27,\n    \"header\": \"Testing Methodology\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 28,\n    \"header\": \"Deployment Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 29,\n    \"header\": \"Budget Breakdown\",\n    \"type\": \"Financial\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 30,\n    \"header\": \"Market Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Sophia Martinez\"\n  },\n  {\n    \"id\": 31,\n    \"header\": \"Competitor Comparison\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 32,\n    \"header\": \"Maintenance Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Alex Thompson\"\n  },\n  {\n    \"id\": 33,\n    \"header\": \"User Personas\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Nina Patel\"\n  },\n  {\n    \"id\": 34,\n    \"header\": \"Accessibility Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 35,\n    \"header\": \"Performance Metrics\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"David Kim\"\n  },\n  {\n    \"id\": 36,\n    \"header\": \"Disaster Recovery Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 37,\n    \"header\": \"Third-party Integrations\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 38,\n    \"header\": \"User Feedback Summary\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 39,\n    \"header\": \"Localization Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"12\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Maria Garcia\"\n  },\n  {\n    \"id\": 40,\n    \"header\": \"Mobile Compatibility\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"James Wilson\"\n  },\n  {\n    \"id\": 41,\n    \"header\": \"Data Migration Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 42,\n    \"header\": \"Quality Assurance Protocols\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Priya Singh\"\n  },\n  {\n    \"id\": 43,\n    \"header\": \"Stakeholder Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"11\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 44,\n    \"header\": \"Environmental Impact Assessment\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 45,\n    \"header\": \"Intellectual Property Rights\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Sarah Johnson\"\n  },\n  {\n    \"id\": 46,\n    \"header\": \"Customer Support Framework\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 47,\n    \"header\": \"Version Control Strategy\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 48,\n    \"header\": \"Continuous Integration Pipeline\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Michael Chen\"\n  },\n  {\n    \"id\": 49,\n    \"header\": \"Regulatory Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 50,\n    \"header\": \"User Authentication System\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 51,\n    \"header\": \"Data Analytics Framework\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 52,\n    \"header\": \"Cloud Infrastructure\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 53,\n    \"header\": \"Network Security Measures\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Lisa Wong\"\n  },\n  {\n    \"id\": 54,\n    \"header\": \"Project Timeline\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 55,\n    \"header\": \"Resource Allocation\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 56,\n    \"header\": \"Team Structure and Roles\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 57,\n    \"header\": \"Communication Protocols\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 58,\n    \"header\": \"Success Metrics\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 59,\n    \"header\": \"Internationalization Support\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 60,\n    \"header\": \"Backup and Recovery Procedures\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 61,\n    \"header\": \"Monitoring and Alerting System\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Daniel Park\"\n  },\n  {\n    \"id\": 62,\n    \"header\": \"Code Review Guidelines\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 63,\n    \"header\": \"Documentation Standards\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 64,\n    \"header\": \"Release Management Process\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 65,\n    \"header\": \"Feature Prioritization Matrix\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Emma Davis\"\n  },\n  {\n    \"id\": 66,\n    \"header\": \"Technical Debt Assessment\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 67,\n    \"header\": \"Capacity Planning\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 68,\n    \"header\": \"Service Level Agreements\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Assign reviewer\"\n  }\n]\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/dashboard/page.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  SidebarInset,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { AppSidebar } from \"@/app/(app)/examples/dashboard/components/app-sidebar\"\nimport { ChartAreaInteractive } from \"@/app/(app)/examples/dashboard/components/chart-area-interactive\"\nimport { DataTable } from \"@/app/(app)/examples/dashboard/components/data-table\"\nimport { SectionCards } from \"@/app/(app)/examples/dashboard/components/section-cards\"\nimport { SiteHeader } from \"@/app/(app)/examples/dashboard/components/site-header\"\n\nimport data from \"./data.json\"\n\nexport default function Page() {\n  return (\n    <>\n      <div className=\"md:hidden\">\n        <Image\n          src=\"/examples/dashboard-light.png\"\n          width={1280}\n          height={843}\n          alt=\"Authentication\"\n          className=\"block dark:hidden\"\n          priority\n        />\n        <Image\n          src=\"/examples/dashboard-dark.png\"\n          width={1280}\n          height={843}\n          alt=\"Authentication\"\n          className=\"hidden dark:block\"\n          priority\n        />\n      </div>\n      <SidebarProvider\n        className=\"hidden md:flex\"\n        style={\n          {\n            \"--sidebar-width\": \"calc(var(--spacing) * 64)\",\n            \"--header-height\": \"calc(var(--spacing) * 12 + 1px)\",\n          } as React.CSSProperties\n        }\n      >\n        <AppSidebar variant=\"sidebar\" />\n        <SidebarInset>\n          <SiteHeader />\n          <div className=\"flex flex-1 flex-col\">\n            <div className=\"@container/main flex flex-1 flex-col gap-2\">\n              <div className=\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\">\n                <SectionCards />\n                <div className=\"px-4 lg:px-6\">\n                  <ChartAreaInteractive />\n                </div>\n                <DataTable data={data} />\n              </div>\n            </div>\n          </div>\n        </SidebarInset>\n      </SidebarProvider>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/layout.tsx",
    "content": "import { type Metadata } from \"next\"\nimport Link from \"next/link\"\n\nimport { Announcement } from \"@/components/announcement\"\nimport { ExamplesNav } from \"@/components/examples-nav\"\nimport {\n  PageActions,\n  PageHeader,\n  PageHeaderDescription,\n  PageHeaderHeading,\n} from \"@/components/page-header\"\nimport { PageNav } from \"@/components/page-nav\"\nimport { ThemeSelector } from \"@/components/theme-selector\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport const dynamic = \"force-static\"\nexport const revalidate = false\n\nconst title = \"The Foundation for your Design System\"\nconst description =\n  \"A set of beautifully designed components that you can customize, extend, and build on. Start here then make it your own. Open Source. Open Code.\"\n\nexport const metadata: Metadata = {\n  title,\n  description,\n  openGraph: {\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n}\n\nexport default function ExamplesLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <>\n      <PageHeader>\n        <Announcement />\n        <PageHeaderHeading className=\"max-w-4xl\">{title}</PageHeaderHeading>\n        <PageHeaderDescription>{description}</PageHeaderDescription>\n        <PageActions>\n          <Button asChild size=\"sm\">\n            <Link href=\"/docs/installation\">Get Started</Link>\n          </Button>\n          <Button asChild size=\"sm\" variant=\"ghost\">\n            <Link href=\"/docs/components\">View Components</Link>\n          </Button>\n        </PageActions>\n      </PageHeader>\n      <PageNav id=\"examples\" className=\"hidden md:flex\">\n        <ExamplesNav className=\"flex-1 overflow-hidden [&>a:first-child]:text-primary\" />\n        <ThemeSelector className=\"mr-4 hidden md:flex\" />\n      </PageNav>\n      <div className=\"container-wrapper flex flex-1 flex-col section-soft pb-6\">\n        <div className=\"container flex flex-1 scroll-mt-20 flex-col theme-container\">\n          <div className=\"flex flex-col overflow-hidden rounded-lg border bg-background bg-clip-padding has-[[data-slot=rtl-components]]:overflow-visible has-[[data-slot=rtl-components]]:border-0 has-[[data-slot=rtl-components]]:bg-transparent md:flex-1 xl:rounded-xl\">\n            {children}\n          </div>\n        </div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/code-viewer.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\n\nexport function CodeViewer() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"secondary\">View code</Button>\n      </DialogTrigger>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>View code</DialogTitle>\n          <DialogDescription>\n            You can use the following code to start integrating your current\n            prompt and settings into your application.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"grid gap-4\">\n          <div className=\"rounded-md bg-black p-6\">\n            <pre>\n              <code className=\"grid gap-1 text-sm text-white [&_span]:h-4\">\n                <span>\n                  <span className=\"text-sky-300\">import</span> os\n                </span>\n                <span>\n                  <span className=\"text-sky-300\">import</span> openai\n                </span>\n                <span />\n                <span>\n                  openai.api_key = os.getenv(\n                  <span className=\"text-green-300\">\n                    &quot;OPENAI_API_KEY&quot;\n                  </span>\n                  )\n                </span>\n                <span />\n                <span>response = openai.Completion.create(</span>\n                <span>\n                  {\" \"}\n                  model=\n                  <span className=\"text-green-300\">&quot;davinci&quot;</span>,\n                </span>\n                <span>\n                  {\" \"}\n                  prompt=<span className=\"text-amber-300\">&quot;&quot;</span>,\n                </span>\n                <span>\n                  {\" \"}\n                  temperature=<span className=\"text-amber-300\">0.9</span>,\n                </span>\n                <span>\n                  {\" \"}\n                  max_tokens=<span className=\"text-amber-300\">5</span>,\n                </span>\n                <span>\n                  {\" \"}\n                  top_p=<span className=\"text-amber-300\">1</span>,\n                </span>\n                <span>\n                  {\" \"}\n                  frequency_penalty=<span className=\"text-amber-300\">0</span>,\n                </span>\n                <span>\n                  {\" \"}\n                  presence_penalty=<span className=\"text-green-300\">0</span>,\n                </span>\n                <span>)</span>\n              </code>\n            </pre>\n          </div>\n          <div>\n            <p className=\"text-sm text-muted-foreground\">\n              Your API Key can be found here. You should use environment\n              variables or a secret management tool to expose your key to your\n              applications.\n            </p>\n          </div>\n        </div>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/maxlength-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport type { Slider as SliderPrimitive } from \"radix-ui\"\n\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/new-york-v4/ui/hover-card\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\n\ninterface MaxLengthSelectorProps {\n  defaultValue: React.ComponentProps<\n    typeof SliderPrimitive.Root\n  >[\"defaultValue\"]\n}\n\nexport function MaxLengthSelector({ defaultValue }: MaxLengthSelectorProps) {\n  const [value, setValue] = React.useState(defaultValue)\n\n  return (\n    <div className=\"grid gap-2 pt-2\">\n      <HoverCard openDelay={200}>\n        <HoverCardTrigger asChild>\n          <div className=\"grid gap-4\">\n            <div className=\"flex items-center justify-between\">\n              <Label htmlFor=\"maxlength\">Maximum Length</Label>\n              <span className=\"w-12 rounded-md border border-transparent px-2 py-0.5 text-right text-sm text-muted-foreground hover:border-border\">\n                {value}\n              </span>\n            </div>\n            <Slider\n              id=\"maxlength\"\n              max={4000}\n              defaultValue={value}\n              step={10}\n              onValueChange={setValue}\n              aria-label=\"Maximum Length\"\n            />\n          </div>\n        </HoverCardTrigger>\n        <HoverCardContent\n          align=\"start\"\n          className=\"w-[260px] text-sm\"\n          side=\"left\"\n        >\n          The maximum number of tokens to generate. Requests can use up to 2,048\n          or 4,000 tokens, shared between prompt and completion. The exact limit\n          varies by model.\n        </HoverCardContent>\n      </HoverCard>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/model-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Check, ChevronsUpDown } from \"lucide-react\"\nimport type { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useMutationObserver } from \"@/hooks/use-mutation-observer\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/new-york-v4/ui/hover-card\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nimport { type Model, type ModelType } from \"../data/models\"\n\ninterface ModelSelectorProps\n  extends React.ComponentProps<typeof PopoverPrimitive.Root> {\n  types: readonly ModelType[]\n  models: Model[]\n}\n\nexport function ModelSelector({ models, types, ...props }: ModelSelectorProps) {\n  const [open, setOpen] = React.useState(false)\n  const [selectedModel, setSelectedModel] = React.useState<Model>(models[0])\n  const [peekedModel, setPeekedModel] = React.useState<Model>(models[0])\n\n  return (\n    <div className=\"grid gap-3\">\n      <HoverCard openDelay={200}>\n        <HoverCardTrigger asChild>\n          <Label htmlFor=\"model\">Model</Label>\n        </HoverCardTrigger>\n        <HoverCardContent\n          align=\"start\"\n          className=\"w-[260px] text-sm\"\n          side=\"left\"\n        >\n          The model which will generate the completion. Some models are suitable\n          for natural language tasks, others specialize in code. Learn more.\n        </HoverCardContent>\n      </HoverCard>\n      <Popover open={open} onOpenChange={setOpen} {...props}>\n        <PopoverTrigger asChild>\n          <Button\n            variant=\"outline\"\n            role=\"combobox\"\n            aria-expanded={open}\n            aria-label=\"Select a model\"\n            className=\"w-full justify-between\"\n          >\n            {selectedModel ? selectedModel.name : \"Select a model...\"}\n            <ChevronsUpDown className=\"text-muted-foreground\" />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent align=\"end\" className=\"w-[250px] p-0\">\n          <HoverCard>\n            <HoverCardContent\n              side=\"left\"\n              align=\"start\"\n              forceMount\n              className=\"min-h-[280px]\"\n            >\n              <div className=\"grid gap-2\">\n                <h4 className=\"leading-none font-medium\">{peekedModel.name}</h4>\n                <div className=\"text-sm text-muted-foreground\">\n                  {peekedModel.description}\n                </div>\n                {peekedModel.strengths ? (\n                  <div className=\"mt-4 grid gap-2\">\n                    <h5 className=\"text-sm leading-none font-medium\">\n                      Strengths\n                    </h5>\n                    <ul className=\"text-sm text-muted-foreground\">\n                      {peekedModel.strengths}\n                    </ul>\n                  </div>\n                ) : null}\n              </div>\n            </HoverCardContent>\n            <Command loop>\n              <CommandList className=\"h-(--cmdk-list-height) max-h-[400px]\">\n                <CommandInput placeholder=\"Search Models...\" />\n                <CommandEmpty>No Models found.</CommandEmpty>\n                <HoverCardTrigger />\n                {types.map((type) => (\n                  <CommandGroup key={type} heading={type}>\n                    {models\n                      .filter((model) => model.type === type)\n                      .map((model) => (\n                        <ModelItem\n                          key={model.id}\n                          model={model}\n                          isSelected={selectedModel?.id === model.id}\n                          onPeek={(model) => setPeekedModel(model)}\n                          onSelect={() => {\n                            setSelectedModel(model)\n                            setOpen(false)\n                          }}\n                        />\n                      ))}\n                  </CommandGroup>\n                ))}\n              </CommandList>\n            </Command>\n          </HoverCard>\n        </PopoverContent>\n      </Popover>\n    </div>\n  )\n}\n\ninterface ModelItemProps {\n  model: Model\n  isSelected: boolean\n  onSelect: () => void\n  onPeek: (model: Model) => void\n}\n\nfunction ModelItem({ model, isSelected, onSelect, onPeek }: ModelItemProps) {\n  const ref = React.useRef<HTMLDivElement>(null)\n\n  useMutationObserver(ref, (mutations) => {\n    mutations.forEach((mutation) => {\n      if (\n        mutation.type === \"attributes\" &&\n        mutation.attributeName === \"aria-selected\" &&\n        ref.current?.getAttribute(\"aria-selected\") === \"true\"\n      ) {\n        onPeek(model)\n      }\n    })\n  })\n\n  return (\n    <CommandItem\n      key={model.id}\n      onSelect={onSelect}\n      ref={ref}\n      className=\"data-[selected=true]:bg-primary data-[selected=true]:text-primary-foreground\"\n    >\n      {model.name}\n      <Check\n        className={cn(\"ml-auto\", isSelected ? \"opacity-100\" : \"opacity-0\")}\n      />\n    </CommandItem>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/preset-actions.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { MoreHorizontal } from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nimport {\n  AlertDialog,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n} from \"@/registry/new-york-v4/ui/alert-dialog\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nexport function PresetActions() {\n  const [open, setIsOpen] = React.useState(false)\n  const [showDeleteDialog, setShowDeleteDialog] = React.useState(false)\n\n  return (\n    <>\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"secondary\" size=\"icon\">\n            <span className=\"sr-only\">Actions</span>\n            <MoreHorizontal />\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\">\n          <DropdownMenuItem onSelect={() => setIsOpen(true)}>\n            Content filter preferences\n          </DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem\n            onSelect={() => setShowDeleteDialog(true)}\n            className=\"text-red-600\"\n          >\n            Delete preset\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n      <Dialog open={open} onOpenChange={setIsOpen}>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Content filter preferences</DialogTitle>\n            <DialogDescription>\n              The content filter flags text that may violate our content policy.\n              It&apos;s powered by our moderation endpoint which is free to use\n              to moderate your OpenAI API traffic. Learn more.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"py-6\">\n            <h4 className=\"text-sm text-muted-foreground\">\n              Playground Warnings\n            </h4>\n            <div className=\"flex items-start justify-between gap-4 pt-3\">\n              <Switch name=\"show\" id=\"show\" defaultChecked={true} />\n              <Label className=\"grid gap-1 font-normal\" htmlFor=\"show\">\n                <span className=\"font-semibold\">\n                  Show a warning when content is flagged\n                </span>\n                <span className=\"text-sm text-muted-foreground\">\n                  A warning will be shown when sexual, hateful, violent or\n                  self-harm content is detected.\n                </span>\n              </Label>\n            </div>\n          </div>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"secondary\">Close</Button>\n            </DialogClose>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n      <AlertDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This action cannot be undone. This preset will no longer be\n              accessible by you or others you&apos;ve shared it with.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\n            <Button\n              variant=\"destructive\"\n              onClick={() => {\n                setShowDeleteDialog(false)\n                toast.success(\"This preset has been deleted.\")\n              }}\n            >\n              Delete\n            </Button>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/preset-save.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport function PresetSave() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"secondary\">Save</Button>\n      </DialogTrigger>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>Save preset</DialogTitle>\n          <DialogDescription>\n            This will save the current playground state as a preset which you\n            can access later or share with others.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"grid gap-6 py-4\">\n          <div className=\"grid gap-3\">\n            <Label htmlFor=\"name\">Name</Label>\n            <Input id=\"name\" autoFocus />\n          </div>\n          <div className=\"grid gap-3\">\n            <Label htmlFor=\"description\">Description</Label>\n            <Textarea id=\"description\" />\n          </div>\n        </div>\n        <DialogFooter>\n          <Button type=\"submit\">Save</Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/preset-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Check, ChevronsUpDown } from \"lucide-react\"\nimport type { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nimport { type Preset } from \"../data/presets\"\n\ninterface PresetSelectorProps\n  extends React.ComponentProps<typeof PopoverPrimitive.Root> {\n  presets: Preset[]\n}\n\nexport function PresetSelector({ presets, ...props }: PresetSelectorProps) {\n  const [open, setOpen] = React.useState(false)\n  const [selectedPreset, setSelectedPreset] = React.useState<Preset>()\n\n  return (\n    <Popover open={open} onOpenChange={setOpen} {...props}>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"outline\"\n          role=\"combobox\"\n          aria-label=\"Load a preset...\"\n          aria-expanded={open}\n          className=\"flex-1 justify-between md:max-w-[200px] lg:max-w-[300px]\"\n        >\n          {selectedPreset ? selectedPreset.name : \"Load a preset...\"}\n          <ChevronsUpDown className=\"opacity-50\" />\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-[300px] p-0\">\n        <Command>\n          <CommandInput placeholder=\"Search presets...\" />\n          <CommandList>\n            <CommandEmpty>No presets found.</CommandEmpty>\n            <CommandGroup heading=\"Examples\">\n              {presets.map((preset) => (\n                <CommandItem\n                  key={preset.id}\n                  onSelect={() => {\n                    setSelectedPreset(preset)\n                    setOpen(false)\n                  }}\n                >\n                  {preset.name}\n                  <Check\n                    className={cn(\n                      \"ml-auto\",\n                      selectedPreset?.id === preset.id\n                        ? \"opacity-100\"\n                        : \"opacity-0\"\n                    )}\n                  />\n                </CommandItem>\n              ))}\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup>\n              <CommandItem>More examples</CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/preset-share.tsx",
    "content": "import { Copy } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport function PresetShare() {\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button variant=\"secondary\">Share</Button>\n      </PopoverTrigger>\n      <PopoverContent align=\"end\" className=\"flex w-[520px] flex-col gap-4\">\n        <div className=\"flex flex-col gap-1 text-center sm:text-left\">\n          <h3 className=\"text-lg font-semibold\">Share preset</h3>\n          <p className=\"text-sm text-muted-foreground\">\n            Anyone who has this link and an OpenAI account will be able to view\n            this.\n          </p>\n        </div>\n        <div className=\"relative flex-1\">\n          <Label htmlFor=\"link\" className=\"sr-only\">\n            Link\n          </Label>\n          <Input\n            id=\"link\"\n            defaultValue=\"https://platform.openai.com/playground/p/7bbKYQvsVkNmVb8NGcdUOLae?model=text-davinci-003\"\n            readOnly\n            className=\"h-9 pr-10\"\n          />\n          <Button\n            type=\"submit\"\n            size=\"icon\"\n            variant=\"ghost\"\n            className=\"absolute top-1 right-1 size-7\"\n          >\n            <span className=\"sr-only\">Copy</span>\n            <Copy className=\"size-3.5\" />\n          </Button>\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/temperature-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport type { Slider as SliderPrimitive } from \"radix-ui\"\n\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/new-york-v4/ui/hover-card\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\n\ninterface TemperatureSelectorProps {\n  defaultValue: React.ComponentProps<\n    typeof SliderPrimitive.Root\n  >[\"defaultValue\"]\n}\n\nexport function TemperatureSelector({\n  defaultValue,\n}: TemperatureSelectorProps) {\n  const [value, setValue] = React.useState(defaultValue)\n\n  return (\n    <div className=\"grid gap-2 pt-2\">\n      <HoverCard openDelay={200}>\n        <HoverCardTrigger asChild>\n          <div className=\"grid gap-4\">\n            <div className=\"flex items-center justify-between\">\n              <Label htmlFor=\"temperature\">Temperature</Label>\n              <span className=\"w-12 rounded-md border border-transparent px-2 py-0.5 text-right text-sm text-muted-foreground hover:border-border\">\n                {value}\n              </span>\n            </div>\n            <Slider\n              id=\"temperature\"\n              max={1}\n              defaultValue={value}\n              step={0.1}\n              onValueChange={setValue}\n              aria-label=\"Temperature\"\n            />\n          </div>\n        </HoverCardTrigger>\n        <HoverCardContent\n          align=\"start\"\n          className=\"w-[260px] text-sm\"\n          side=\"left\"\n        >\n          Controls randomness: lowering results in less random completions. As\n          the temperature approaches zero, the model will become deterministic\n          and repetitive.\n        </HoverCardContent>\n      </HoverCard>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/components/top-p-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport type { Slider as SliderPrimitive } from \"radix-ui\"\n\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/new-york-v4/ui/hover-card\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\n\ninterface TopPSelectorProps {\n  defaultValue: React.ComponentProps<\n    typeof SliderPrimitive.Root\n  >[\"defaultValue\"]\n}\n\nexport function TopPSelector({ defaultValue }: TopPSelectorProps) {\n  const [value, setValue] = React.useState(defaultValue)\n\n  return (\n    <div className=\"grid gap-2 pt-2\">\n      <HoverCard openDelay={200}>\n        <HoverCardTrigger asChild>\n          <div className=\"grid gap-4\">\n            <div className=\"flex items-center justify-between\">\n              <Label htmlFor=\"top-p\">Top P</Label>\n              <span className=\"w-12 rounded-md border border-transparent px-2 py-0.5 text-right text-sm text-muted-foreground hover:border-border\">\n                {value}\n              </span>\n            </div>\n            <Slider\n              id=\"top-p\"\n              max={1}\n              defaultValue={value}\n              step={0.1}\n              onValueChange={setValue}\n              aria-label=\"Top P\"\n            />\n          </div>\n        </HoverCardTrigger>\n        <HoverCardContent\n          align=\"start\"\n          className=\"w-[260px] text-sm\"\n          side=\"left\"\n        >\n          Control diversity via nucleus sampling: 0.5 means half of all\n          likelihood-weighted options are considered.\n        </HoverCardContent>\n      </HoverCard>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/data/models.ts",
    "content": "export const types = [\"GPT-3\", \"Codex\"] as const\n\nexport type ModelType = (typeof types)[number]\n\nexport interface Model<Type = string> {\n  id: string\n  name: string\n  description: string\n  strengths?: string\n  type: Type\n}\n\nexport const models: Model<ModelType>[] = [\n  {\n    id: \"c305f976-8e38-42b1-9fb7-d21b2e34f0da\",\n    name: \"text-davinci-003\",\n    description:\n      \"Most capable GPT-3 model. Can do any task the other models can do, often with higher quality, longer output and better instruction-following. Also supports inserting completions within text.\",\n    type: \"GPT-3\",\n    strengths:\n      \"Complex intent, cause and effect, creative generation, search, summarization for audience\",\n  },\n  {\n    id: \"464a47c3-7ab5-44d7-b669-f9cb5a9e8465\",\n    name: \"text-curie-001\",\n    description: \"Very capable, but faster and lower cost than Davinci.\",\n    type: \"GPT-3\",\n    strengths:\n      \"Language translation, complex classification, sentiment, summarization\",\n  },\n  {\n    id: \"ac0797b0-7e31-43b6-a494-da7e2ab43445\",\n    name: \"text-babbage-001\",\n    description: \"Capable of straightforward tasks, very fast, and lower cost.\",\n    type: \"GPT-3\",\n    strengths: \"Moderate classification, semantic search\",\n  },\n  {\n    id: \"be638fb1-973b-4471-a49c-290325085802\",\n    name: \"text-ada-001\",\n    description:\n      \"Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost.\",\n    type: \"GPT-3\",\n    strengths:\n      \"Parsing text, simple classification, address correction, keywords\",\n  },\n  {\n    id: \"b43c0ea9-5ad4-456a-ae29-26cd77b6d0fb\",\n    name: \"code-davinci-002\",\n    description:\n      \"Most capable Codex model. Particularly good at translating natural language to code. In addition to completing code, also supports inserting completions within code.\",\n    type: \"Codex\",\n  },\n  {\n    id: \"bbd57291-4622-4a21-9eed-dd6bd786fdd1\",\n    name: \"code-cushman-001\",\n    description:\n      \"Almost as capable as Davinci Codex, but slightly faster. This speed advantage may make it preferable for real-time applications.\",\n    type: \"Codex\",\n    strengths: \"Real-time application where low-latency is preferable\",\n  },\n]\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/data/presets.ts",
    "content": "export interface Preset {\n  id: string\n  name: string\n}\n\nexport const presets: Preset[] = [\n  {\n    id: \"9cb0e66a-9937-465d-a188-2c4c4ae2401f\",\n    name: \"Grammatical Standard English\",\n  },\n  {\n    id: \"61eb0e32-2391-4cd3-adc3-66efe09bc0b7\",\n    name: \"Summarize for a 2nd grader\",\n  },\n  {\n    id: \"a4e1fa51-f4ce-4e45-892c-224030a00bdd\",\n    name: \"Text to command\",\n  },\n  {\n    id: \"cc198b13-4933-43aa-977e-dcd95fa30770\",\n    name: \"Q&A\",\n  },\n  {\n    id: \"adfa95be-a575-45fd-a9ef-ea45386c64de\",\n    name: \"English to other languages\",\n  },\n  {\n    id: \"c569a06a-0bd6-43a7-adf9-bf68c09e7a79\",\n    name: \"Parse unstructured data\",\n  },\n  {\n    id: \"15ccc0d7-f37a-4f0a-8163-a37e162877dc\",\n    name: \"Classification\",\n  },\n  {\n    id: \"4641ef41-1c0f-421d-b4b2-70fe431081f3\",\n    name: \"Natural language to Python\",\n  },\n  {\n    id: \"48d34082-72f3-4a1b-a14d-f15aca4f57a0\",\n    name: \"Explain code\",\n  },\n  {\n    id: \"dfd42fd5-0394-4810-92c6-cc907d3bfd1a\",\n    name: \"Chat\",\n  },\n]\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/playground/page.tsx",
    "content": "import { type Metadata } from \"next\"\nimport Image from \"next/image\"\nimport { RotateCcw } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/new-york-v4/ui/hover-card\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nimport { CodeViewer } from \"./components/code-viewer\"\nimport { MaxLengthSelector } from \"./components/maxlength-selector\"\nimport { ModelSelector } from \"./components/model-selector\"\nimport { PresetActions } from \"./components/preset-actions\"\nimport { PresetSave } from \"./components/preset-save\"\nimport { PresetSelector } from \"./components/preset-selector\"\nimport { PresetShare } from \"./components/preset-share\"\nimport { TemperatureSelector } from \"./components/temperature-selector\"\nimport { TopPSelector } from \"./components/top-p-selector\"\nimport { models, types } from \"./data/models\"\nimport { presets } from \"./data/presets\"\n\nexport const metadata: Metadata = {\n  title: \"Playground\",\n  description: \"The OpenAI Playground built using the components.\",\n}\n\nexport default function PlaygroundPage() {\n  return (\n    <>\n      <div className=\"md:hidden\">\n        <Image\n          src=\"/examples/playground-light.png\"\n          width={1280}\n          height={916}\n          alt=\"Playground\"\n          className=\"block dark:hidden\"\n        />\n        <Image\n          src=\"/examples/playground-dark.png\"\n          width={1280}\n          height={916}\n          alt=\"Playground\"\n          className=\"hidden dark:block\"\n        />\n      </div>\n      <div className=\"hidden flex-1 flex-col md:flex\">\n        <div className=\"container flex flex-col items-start justify-between gap-2 py-4 sm:flex-row sm:items-center sm:gap-0 md:h-16\">\n          <h2 className=\"pl-0.5 text-lg font-semibold\">Playground</h2>\n          <div className=\"ml-auto flex w-full gap-2 sm:justify-end\">\n            <PresetSelector presets={presets} />\n            <PresetSave />\n            <div className=\"hidden gap-2 md:flex\">\n              <CodeViewer />\n              <PresetShare />\n            </div>\n            <PresetActions />\n          </div>\n        </div>\n        <Separator />\n        <Tabs defaultValue=\"complete\" className=\"flex flex-1 flex-col\">\n          <div className=\"container flex flex-1 flex-col py-6\">\n            <div className=\"grid flex-1 items-stretch gap-6 md:grid-cols-[1fr_200px]\">\n              <div className=\"hidden flex-col gap-6 sm:flex md:order-2\">\n                <div className=\"grid gap-3\">\n                  <HoverCard openDelay={200}>\n                    <HoverCardTrigger asChild>\n                      <span className=\"text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n                        Mode\n                      </span>\n                    </HoverCardTrigger>\n                    <HoverCardContent className=\"w-[320px] text-sm\" side=\"left\">\n                      Choose the interface that best suits your task. You can\n                      provide: a simple prompt to complete, starting and ending\n                      text to insert a completion within, or some text with\n                      instructions to edit it.\n                    </HoverCardContent>\n                  </HoverCard>\n                  <TabsList className=\"grid w-full grid-cols-3\">\n                    <TabsTrigger value=\"complete\">\n                      <span className=\"sr-only\">Complete</span>\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        viewBox=\"0 0 20 20\"\n                        fill=\"none\"\n                      >\n                        <rect\n                          x=\"4\"\n                          y=\"3\"\n                          width=\"12\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"4\"\n                          y=\"7\"\n                          width=\"12\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"4\"\n                          y=\"11\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"4\"\n                          y=\"15\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"8.5\"\n                          y=\"11\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"8.5\"\n                          y=\"15\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"13\"\n                          y=\"11\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                      </svg>\n                    </TabsTrigger>\n                    <TabsTrigger value=\"insert\">\n                      <span className=\"sr-only\">Insert</span>\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        viewBox=\"0 0 20 20\"\n                        fill=\"none\"\n                        className=\"h-5 w-5\"\n                      >\n                        <path\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                          d=\"M14.491 7.769a.888.888 0 0 1 .287.648.888.888 0 0 1-.287.648l-3.916 3.667a1.013 1.013 0 0 1-.692.268c-.26 0-.509-.097-.692-.268L5.275 9.065A.886.886 0 0 1 5 8.42a.889.889 0 0 1 .287-.64c.181-.17.427-.267.683-.269.257-.002.504.09.69.258L8.903 9.87V3.917c0-.243.103-.477.287-.649.183-.171.432-.268.692-.268.26 0 .509.097.692.268a.888.888 0 0 1 .287.649V9.87l2.245-2.102c.183-.172.432-.269.692-.269.26 0 .508.097.692.269Z\"\n                          fill=\"currentColor\"\n                        ></path>\n                        <rect\n                          x=\"4\"\n                          y=\"15\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"8.5\"\n                          y=\"15\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"13\"\n                          y=\"15\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                      </svg>\n                    </TabsTrigger>\n                    <TabsTrigger value=\"edit\">\n                      <span className=\"sr-only\">Edit</span>\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        viewBox=\"0 0 20 20\"\n                        fill=\"none\"\n                        className=\"h-5 w-5\"\n                      >\n                        <rect\n                          x=\"4\"\n                          y=\"3\"\n                          width=\"12\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"4\"\n                          y=\"7\"\n                          width=\"12\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"4\"\n                          y=\"11\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"4\"\n                          y=\"15\"\n                          width=\"4\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <rect\n                          x=\"8.5\"\n                          y=\"11\"\n                          width=\"3\"\n                          height=\"2\"\n                          rx=\"1\"\n                          fill=\"currentColor\"\n                        ></rect>\n                        <path\n                          d=\"M17.154 11.346a1.182 1.182 0 0 0-1.671 0L11 15.829V17.5h1.671l4.483-4.483a1.182 1.182 0 0 0 0-1.671Z\"\n                          fill=\"currentColor\"\n                        ></path>\n                      </svg>\n                    </TabsTrigger>\n                  </TabsList>\n                </div>\n                <ModelSelector types={types} models={models} />\n                <TemperatureSelector defaultValue={[0.56]} />\n                <MaxLengthSelector defaultValue={[256]} />\n                <TopPSelector defaultValue={[0.9]} />\n              </div>\n              <div className=\"flex flex-1 flex-col *:data-[slot=tab-content]:flex-1 md:order-1\">\n                <TabsContent value=\"complete\" className=\"mt-0 border-0 p-0\">\n                  <div className=\"flex h-full flex-col gap-4\">\n                    <Textarea\n                      placeholder=\"Write a tagline for an ice cream shop\"\n                      className=\"min-h-[400px] flex-1 p-4 md:min-h-[700px] lg:min-h-[700px]\"\n                    />\n                    <div className=\"flex items-center gap-2\">\n                      <Button>Submit</Button>\n                      <Button variant=\"secondary\">\n                        <span className=\"sr-only\">Show history</span>\n                        <RotateCcw />\n                      </Button>\n                    </div>\n                  </div>\n                </TabsContent>\n                <TabsContent\n                  value=\"insert\"\n                  className=\"mt-0 flex flex-col gap-4 border-0 p-0\"\n                >\n                  <div className=\"grid h-full grid-rows-2 gap-6 lg:grid-cols-2 lg:grid-rows-1\">\n                    <Textarea\n                      placeholder=\"We're writing to [inset]. Congrats from OpenAI!\"\n                      className=\"h-full min-h-[300px] p-4 lg:min-h-[700px] xl:min-h-[700px]\"\n                    />\n                    <div className=\"rounded-md border bg-muted\"></div>\n                  </div>\n                  <div className=\"flex items-center gap-2\">\n                    <Button>Submit</Button>\n                    <Button variant=\"secondary\">\n                      <span className=\"sr-only\">Show history</span>\n                      <RotateCcw />\n                    </Button>\n                  </div>\n                </TabsContent>\n                <TabsContent\n                  value=\"edit\"\n                  className=\"mt-0 flex flex-col gap-4 border-0 p-0\"\n                >\n                  <div className=\"grid h-full gap-6 lg:grid-cols-2\">\n                    <div className=\"flex flex-col gap-4\">\n                      <div className=\"flex flex-1 flex-col gap-2\">\n                        <Label htmlFor=\"input\" className=\"sr-only\">\n                          Input\n                        </Label>\n                        <Textarea\n                          id=\"input\"\n                          placeholder=\"We is going to the market.\"\n                          className=\"flex-1 p-4 lg:min-h-[580px]\"\n                        />\n                      </div>\n                      <div className=\"flex flex-col gap-2\">\n                        <Label htmlFor=\"instructions\">Instructions</Label>\n                        <Textarea\n                          id=\"instructions\"\n                          placeholder=\"Fix the grammar.\"\n                        />\n                      </div>\n                    </div>\n                    <div className=\"min-h-[400px] rounded-md border bg-muted lg:min-h-[700px]\" />\n                  </div>\n                  <div className=\"flex items-center gap-2\">\n                    <Button>Submit</Button>\n                    <Button variant=\"secondary\">\n                      <span className=\"sr-only\">Show history</span>\n                      <RotateCcw />\n                    </Button>\n                  </div>\n                </TabsContent>\n              </div>\n            </div>\n          </div>\n        </Tabs>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/appearance-settings.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { ButtonGroup } from \"@/examples/base/ui-rtl/button-group\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/base/ui-rtl/field\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui-rtl/radio-group\"\nimport { Switch } from \"@/examples/base/ui-rtl/switch\"\nimport { IconMinus, IconPlus } from \"@tabler/icons-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    computeEnvironment: \"بيئة الحوسبة\",\n    computeDescription: \"اختر بيئة الحوسبة لمجموعتك.\",\n    kubernetes: \"كوبرنيتس\",\n    kubernetesDescription:\n      \"تشغيل أحمال عمل GPU على مجموعة مُهيأة بـ K8s. هذا هو الافتراضي.\",\n    virtualMachine: \"جهاز افتراضي\",\n    vmDescription: \"الوصول إلى مجموعة VM مُهيأة لتشغيل أحمال العمل. (قريبًا)\",\n    numberOfGpus: \"عدد وحدات GPU\",\n    gpuDescription: \"يمكنك إضافة المزيد لاحقًا.\",\n    decrement: \"إنقاص\",\n    increment: \"زيادة\",\n    wallpaperTinting: \"تلوين الخلفية\",\n    wallpaperDescription: \"السماح بتلوين الخلفية.\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    computeEnvironment: \"סביבת מחשוב\",\n    computeDescription: \"בחר את סביבת המחשוב לאשכול שלך.\",\n    kubernetes: \"קוברנטיס\",\n    kubernetesDescription:\n      \"הפעל עומסי עבודה של GPU באשכול מוגדר K8s. זו ברירת המחדל.\",\n    virtualMachine: \"מכונה וירטואלית\",\n    vmDescription: \"גש לאשכול VM מוגדר להפעלת עומסי עבודה. (בקרוב)\",\n    numberOfGpus: \"מספר GPUs\",\n    gpuDescription: \"תוכל להוסיף עוד מאוחר יותר.\",\n    decrement: \"הפחת\",\n    increment: \"הגדל\",\n    wallpaperTinting: \"צביעת טפט\",\n    wallpaperDescription: \"אפשר לטפט להיצבע.\",\n  },\n}\n\nexport function AppearanceSettings() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n  const [gpuCount, setGpuCount] = React.useState(8)\n\n  const handleGpuAdjustment = React.useCallback((adjustment: number) => {\n    setGpuCount((prevCount) =>\n      Math.max(1, Math.min(99, prevCount + adjustment))\n    )\n  }, [])\n\n  const handleGpuInputChange = React.useCallback(\n    (e: React.ChangeEvent<HTMLInputElement>) => {\n      const value = parseInt(e.target.value, 10)\n      if (!isNaN(value) && value >= 1 && value <= 99) {\n        setGpuCount(value)\n      }\n    },\n    []\n  )\n\n  return (\n    <div dir={t.dir}>\n      <FieldSet>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>{t.computeEnvironment}</FieldLegend>\n            <FieldDescription>{t.computeDescription}</FieldDescription>\n            <RadioGroup defaultValue=\"kubernetes\">\n              <FieldLabel htmlFor=\"rtl-kubernetes\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>{t.kubernetes}</FieldTitle>\n                    <FieldDescription>\n                      {t.kubernetesDescription}\n                    </FieldDescription>\n                  </FieldContent>\n                  <RadioGroupItem\n                    value=\"kubernetes\"\n                    id=\"rtl-kubernetes\"\n                    aria-label={t.kubernetes}\n                  />\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"rtl-vm\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>{t.virtualMachine}</FieldTitle>\n                    <FieldDescription>{t.vmDescription}</FieldDescription>\n                  </FieldContent>\n                  <RadioGroupItem\n                    value=\"vm\"\n                    id=\"rtl-vm\"\n                    aria-label={t.virtualMachine}\n                  />\n                </Field>\n              </FieldLabel>\n            </RadioGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <FieldLabel htmlFor=\"rtl-gpu-count\">{t.numberOfGpus}</FieldLabel>\n              <FieldDescription>{t.gpuDescription}</FieldDescription>\n            </FieldContent>\n            <ButtonGroup>\n              <Input\n                id=\"rtl-gpu-count\"\n                value={gpuCount}\n                onChange={handleGpuInputChange}\n                size={3}\n                className=\"h-7 w-14! font-mono\"\n                maxLength={3}\n              />\n              <Button\n                variant=\"outline\"\n                size=\"icon-sm\"\n                type=\"button\"\n                aria-label={t.decrement}\n                onClick={() => handleGpuAdjustment(-1)}\n                disabled={gpuCount <= 1}\n              >\n                <IconMinus />\n              </Button>\n              <Button\n                variant=\"outline\"\n                size=\"icon-sm\"\n                type=\"button\"\n                aria-label={t.increment}\n                onClick={() => handleGpuAdjustment(1)}\n                disabled={gpuCount >= 99}\n              >\n                <IconPlus />\n              </Button>\n            </ButtonGroup>\n          </Field>\n          <FieldSeparator />\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <FieldLabel htmlFor=\"rtl-tinting\">\n                {t.wallpaperTinting}\n              </FieldLabel>\n              <FieldDescription>{t.wallpaperDescription}</FieldDescription>\n            </FieldContent>\n            <Switch id=\"rtl-tinting\" defaultChecked />\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/button-group-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { ButtonGroup } from \"@/examples/base/ui-rtl/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport {\n  ArchiveIcon,\n  ArrowLeftIcon,\n  CalendarPlusIcon,\n  ClockIcon,\n  ListFilterIcon,\n  MailCheckIcon,\n  MoreHorizontalIcon,\n  TagIcon,\n  Trash2Icon,\n} from \"lucide-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    goBack: \"رجوع\",\n    archive: \"أرشفة\",\n    report: \"إبلاغ\",\n    snooze: \"تأجيل\",\n    moreOptions: \"خيارات أخرى\",\n    markAsRead: \"تحديد كمقروء\",\n    addToCalendar: \"إضافة إلى التقويم\",\n    addToList: \"إضافة إلى القائمة\",\n    labelAs: \"تصنيف كـ...\",\n    personal: \"شخصي\",\n    work: \"عمل\",\n    other: \"أخرى\",\n    trash: \"حذف\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    goBack: \"חזור\",\n    archive: \"ארכיון\",\n    report: \"דווח\",\n    snooze: \"נודניק\",\n    moreOptions: \"אפשרויות נוספות\",\n    markAsRead: \"סמן כנקרא\",\n    addToCalendar: \"הוסף ליומן\",\n    addToList: \"הוסף לרשימה\",\n    labelAs: \"תייג כ...\",\n    personal: \"אישי\",\n    work: \"עבודה\",\n    other: \"אחר\",\n    trash: \"מחק\",\n  },\n}\n\nexport function ButtonGroupDemo() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n  const [label, setLabel] = React.useState(\"personal\")\n\n  return (\n    <div dir={t.dir}>\n      <ButtonGroup>\n        <ButtonGroup className=\"hidden sm:flex\">\n          <Button variant=\"outline\" size=\"icon-sm\" aria-label={t.goBack}>\n            <ArrowLeftIcon className=\"rtl:rotate-180\" />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"sm\">\n            {t.archive}\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            {t.report}\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"sm\">\n            {t.snooze}\n          </Button>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={\n                <Button\n                  variant=\"outline\"\n                  size=\"icon-sm\"\n                  aria-label={t.moreOptions}\n                />\n              }\n            >\n              <MoreHorizontalIcon />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent\n              align=\"start\"\n              dir={t.dir}\n              data-lang={lang}\n              className=\"w-44\"\n            >\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <MailCheckIcon />\n                  {t.markAsRead}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <ArchiveIcon />\n                  {t.archive}\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <ClockIcon />\n                  {t.snooze}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <CalendarPlusIcon />\n                  {t.addToCalendar}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <ListFilterIcon />\n                  {t.addToList}\n                </DropdownMenuItem>\n                <DropdownMenuSub>\n                  <DropdownMenuSubTrigger>\n                    <TagIcon />\n                    {t.labelAs}\n                  </DropdownMenuSubTrigger>\n                  <DropdownMenuPortal>\n                    <DropdownMenuSubContent\n                      side=\"left\"\n                      dir={t.dir}\n                      data-lang={lang}\n                    >\n                      <DropdownMenuRadioGroup\n                        value={label}\n                        onValueChange={setLabel}\n                      >\n                        <DropdownMenuRadioItem value=\"personal\">\n                          {t.personal}\n                        </DropdownMenuRadioItem>\n                        <DropdownMenuRadioItem value=\"work\">\n                          {t.work}\n                        </DropdownMenuRadioItem>\n                        <DropdownMenuRadioItem value=\"other\">\n                          {t.other}\n                        </DropdownMenuRadioItem>\n                      </DropdownMenuRadioGroup>\n                    </DropdownMenuSubContent>\n                  </DropdownMenuPortal>\n                </DropdownMenuSub>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem variant=\"destructive\">\n                  <Trash2Icon />\n                  {t.trash}\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </ButtonGroup>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/button-group-input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { ButtonGroup } from \"@/examples/base/ui-rtl/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui-rtl/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui-rtl/tooltip\"\nimport { AudioLinesIcon, PlusIcon } from \"lucide-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    add: \"إضافة\",\n    voicePlaceholder: \"سجل وأرسل صوتًا...\",\n    messagePlaceholder: \"أرسل رسالة...\",\n    voiceMode: \"الوضع الصوتي\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    add: \"הוסף\",\n    voicePlaceholder: \"הקלט ושלח אודיו...\",\n    messagePlaceholder: \"שלח הודעה...\",\n    voiceMode: \"מצב קולי\",\n  },\n}\n\nexport function ButtonGroupInputGroup() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\n\n  return (\n    <ButtonGroup dir={t.dir}>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon\" aria-label={t.add}>\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup className=\"flex-1\">\n        <InputGroup>\n          <InputGroupInput\n            placeholder={\n              voiceEnabled ? t.voicePlaceholder : t.messagePlaceholder\n            }\n            disabled={voiceEnabled}\n          />\n          <InputGroupAddon align=\"inline-end\">\n            <Tooltip>\n              <TooltipTrigger\n                render={\n                  <InputGroupButton\n                    onClick={() => setVoiceEnabled(!voiceEnabled)}\n                    data-active={voiceEnabled}\n                    className=\"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground\"\n                    aria-pressed={voiceEnabled}\n                    size=\"icon-xs\"\n                    aria-label={t.voiceMode}\n                  />\n                }\n              >\n                <AudioLinesIcon />\n              </TooltipTrigger>\n              <TooltipContent>{t.voiceMode}</TooltipContent>\n            </Tooltip>\n          </InputGroupAddon>\n        </InputGroup>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/button-group-nested.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { ButtonGroup } from \"@/examples/base/ui-rtl/button-group\"\nimport { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    locale: \"ar-SA\",\n    previous: \"السابق\",\n    next: \"التالي\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    locale: \"he-IL\",\n    previous: \"הקודם\",\n    next: \"הבא\",\n  },\n}\n\nfunction formatNumber(value: number, locale: string) {\n  return new Intl.NumberFormat(locale).format(value)\n}\n\nexport function ButtonGroupNested() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  return (\n    <ButtonGroup dir={t.dir}>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          {formatNumber(1, t.locale)}\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          {formatNumber(2, t.locale)}\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          {formatNumber(3, t.locale)}\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon-sm\" aria-label={t.previous}>\n          <ArrowLeftIcon className=\"rtl:rotate-180\" />\n        </Button>\n        <Button variant=\"outline\" size=\"icon-sm\" aria-label={t.next}>\n          <ArrowRightIcon className=\"rtl:rotate-180\" />\n        </Button>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/button-group-popover.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { ButtonGroup } from \"@/examples/base/ui-rtl/button-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui-rtl/popover\"\nimport { Separator } from \"@/examples/base/ui-rtl/separator\"\nimport { Textarea } from \"@/examples/base/ui-rtl/textarea\"\nimport { BotIcon, ChevronDownIcon } from \"lucide-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    copilot: \"المساعد\",\n    openPopover: \"فتح القائمة\",\n    agentTasks: \"مهام الوكيل\",\n    placeholder: \"صف مهمتك بلغة طبيعية.\",\n    startTask: \"ابدأ مهمة جديدة مع المساعد\",\n    description:\n      \"صف مهمتك بلغة طبيعية. سيعمل المساعد في الخلفية ويفتح طلب سحب لمراجعتك.\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    copilot: \"עוזר\",\n    openPopover: \"פתח תפריט\",\n    agentTasks: \"משימות סוכן\",\n    placeholder: \"תאר את המשימה שלך בשפה טבעית.\",\n    startTask: \"התחל משימה חדשה עם העוזר\",\n    description:\n      \"תאר את המשימה שלך בשפה טבעית. העוזר יעבוד ברקע ויפתח בקשת משיכה לבדיקתך.\",\n  },\n}\n\nexport function ButtonGroupPopover() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  return (\n    <ButtonGroup dir={t.dir}>\n      <Button variant=\"outline\" size=\"sm\">\n        <BotIcon /> {t.copilot}\n      </Button>\n      <Popover>\n        <PopoverTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              size=\"icon-sm\"\n              aria-label={t.openPopover}\n            />\n          }\n        >\n          <ChevronDownIcon />\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          dir={t.dir}\n          data-lang={lang}\n          className=\"p-0\"\n        >\n          <div className=\"px-4 py-3\">\n            <div className=\"text-sm font-medium\">{t.agentTasks}</div>\n          </div>\n          <Separator />\n          <div className=\"p-4 text-sm *:[p:not(:last-child)]:mb-2\">\n            <Textarea\n              placeholder={t.placeholder}\n              className=\"mb-4 resize-none\"\n            />\n            <p className=\"font-medium\">{t.startTask}</p>\n            <p className=\"text-muted-foreground\">{t.description}</p>\n          </div>\n        </PopoverContent>\n      </Popover>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/empty-avatar-group.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarImage,\n} from \"@/examples/base/ui-rtl/avatar\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui-rtl/empty\"\nimport { PlusIcon } from \"lucide-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    title: \"لا يوجد أعضاء في الفريق\",\n    description: \"قم بدعوة فريقك للتعاون في هذا المشروع.\",\n    invite: \"دعوة أعضاء\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    title: \"אין חברי צוות\",\n    description: \"הזמן את הצוות שלך לשתף פעולה בפרויקט זה.\",\n    invite: \"הזמן חברים\",\n  },\n}\n\nexport function EmptyAvatarGroup() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  return (\n    <Empty className=\"flex-none border py-10\" dir={t.dir}>\n      <EmptyHeader>\n        <EmptyMedia>\n          <AvatarGroup className=\"grayscale\">\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </AvatarGroup>\n        </EmptyMedia>\n        <EmptyTitle>{t.title}</EmptyTitle>\n        <EmptyDescription>{t.description}</EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button size=\"sm\">\n          <PlusIcon />\n          {t.invite}\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/field-checkbox.tsx",
    "content": "\"use client\"\n\nimport { Checkbox } from \"@/examples/base/ui-rtl/checkbox\"\nimport { Field, FieldLabel } from \"@/examples/base/ui-rtl/field\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    terms: \"أوافق على الشروط والأحكام\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    terms: \"אני מסכים לתנאים וההגבלות\",\n  },\n}\n\nexport function FieldCheckbox() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const { dir, terms } = translations[lang]\n\n  return (\n    <div dir={dir}>\n      <FieldLabel htmlFor=\"checkbox-demo-rtl\">\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-demo-rtl\" defaultChecked />\n          <FieldLabel htmlFor=\"checkbox-demo-rtl\" className=\"line-clamp-1\">\n            {terms}\n          </FieldLabel>\n        </Field>\n      </FieldLabel>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/field-demo.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Checkbox } from \"@/examples/base/ui-rtl/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/base/ui-rtl/field\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui-rtl/select\"\nimport { Textarea } from \"@/examples/base/ui-rtl/textarea\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    locale: \"ar-SA\",\n    paymentMethod: \"طريقة الدفع\",\n    secureEncrypted: \"جميع المعاملات آمنة ومشفرة\",\n    nameOnCard: \"الاسم على البطاقة\",\n    namePlaceholder: \"أحمد محمد\",\n    cardNumber: \"رقم البطاقة\",\n    cardDescription: \"أدخل رقمك المكون من 16 رقمًا.\",\n    cvv: \"رمز الأمان\",\n    month: \"الشهر\",\n    year: \"السنة\",\n    billingAddress: \"عنوان الفواتير\",\n    billingDescription: \"عنوان الفواتير المرتبط بطريقة الدفع الخاصة بك\",\n    sameAsShipping: \"نفس عنوان الشحن\",\n    comments: \"تعليقات\",\n    commentsPlaceholder: \"أضف أي تعليقات إضافية\",\n    submit: \"إرسال\",\n    cancel: \"إلغاء\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    locale: \"he-IL\",\n    paymentMethod: \"אמצעי תשלום\",\n    secureEncrypted: \"כל העסקאות מאובטחות ומוצפנות\",\n    nameOnCard: \"שם על הכרטיס\",\n    namePlaceholder: \"ישראל ישראלי\",\n    cardNumber: \"מספר כרטיס\",\n    cardDescription: \"הזן את המספר בן 16 הספרות שלך.\",\n    cvv: \"קוד אבטחה\",\n    month: \"חודש\",\n    year: \"שנה\",\n    billingAddress: \"כתובת לחיוב\",\n    billingDescription: \"כתובת החיוב המשויכת לאמצעי התשלום שלך\",\n    sameAsShipping: \"זהה לכתובת המשלוח\",\n    comments: \"הערות\",\n    commentsPlaceholder: \"הוסף הערות נוספות\",\n    submit: \"שלח\",\n    cancel: \"ביטול\",\n  },\n}\n\nfunction formatCardNumber(locale: string) {\n  const formatter = new Intl.NumberFormat(locale, { useGrouping: false })\n  return `${formatter.format(1234)} ${formatter.format(5678)} ${formatter.format(9012)} ${formatter.format(3456)}`\n}\n\nfunction formatCvv(locale: string) {\n  return new Intl.NumberFormat(locale, { useGrouping: false }).format(123)\n}\n\nfunction getMonths(locale: string) {\n  const formatter = new Intl.NumberFormat(locale, {\n    minimumIntegerDigits: 2,\n    useGrouping: false,\n  })\n  return Array.from({ length: 12 }, (_, i) => {\n    const value = String(i + 1).padStart(2, \"0\")\n    return { label: formatter.format(i + 1), value }\n  })\n}\n\nfunction getYears(locale: string) {\n  const formatter = new Intl.NumberFormat(locale, { useGrouping: false })\n  return Array.from({ length: 6 }, (_, i) => {\n    const year = 2024 + i\n    return { label: formatter.format(year), value: String(year) }\n  })\n}\n\nexport function FieldDemo() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n  const months = getMonths(t.locale)\n  const years = getYears(t.locale)\n  const cardPlaceholder = formatCardNumber(t.locale)\n  const cvvPlaceholder = formatCvv(t.locale)\n\n  return (\n    <div dir={t.dir} className=\"w-full max-w-md rounded-lg border p-6\">\n      <form>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>{t.paymentMethod}</FieldLegend>\n            <FieldDescription>{t.secureEncrypted}</FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"rtl-card-name\">{t.nameOnCard}</FieldLabel>\n                <Input\n                  id=\"rtl-card-name\"\n                  placeholder={t.namePlaceholder}\n                  required\n                />\n              </Field>\n              <div className=\"grid grid-cols-3 gap-4\">\n                <Field className=\"col-span-2\">\n                  <FieldLabel htmlFor=\"rtl-card-number\">\n                    {t.cardNumber}\n                  </FieldLabel>\n                  <Input\n                    id=\"rtl-card-number\"\n                    placeholder={cardPlaceholder}\n                    required\n                  />\n                  <FieldDescription>{t.cardDescription}</FieldDescription>\n                </Field>\n                <Field className=\"col-span-1\">\n                  <FieldLabel htmlFor=\"rtl-cvv\">{t.cvv}</FieldLabel>\n                  <Input id=\"rtl-cvv\" placeholder={cvvPlaceholder} required />\n                </Field>\n              </div>\n              <div className=\"grid grid-cols-2 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"rtl-exp-month\">{t.month}</FieldLabel>\n                  <Select defaultValue=\"\" items={months}>\n                    <SelectTrigger id=\"rtl-exp-month\">\n                      <SelectValue placeholder=\"MM\" />\n                    </SelectTrigger>\n                    <SelectContent data-lang={lang} dir={t.dir}>\n                      <SelectGroup>\n                        {months.map((item) => (\n                          <SelectItem key={item.value} value={item.value}>\n                            {item.label}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"rtl-exp-year\">{t.year}</FieldLabel>\n                  <Select defaultValue=\"\" items={years}>\n                    <SelectTrigger id=\"rtl-exp-year\">\n                      <SelectValue placeholder=\"YYYY\" />\n                    </SelectTrigger>\n                    <SelectContent data-lang={lang} dir={t.dir}>\n                      <SelectGroup>\n                        {years.map((item) => (\n                          <SelectItem key={item.value} value={item.value}>\n                            {item.label}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n              </div>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>{t.billingAddress}</FieldLegend>\n            <FieldDescription>{t.billingDescription}</FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"rtl-same-as-shipping\" defaultChecked />\n                <FieldLabel\n                  htmlFor=\"rtl-same-as-shipping\"\n                  className=\"font-normal\"\n                >\n                  {t.sameAsShipping}\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"rtl-comments\">{t.comments}</FieldLabel>\n                <Textarea\n                  id=\"rtl-comments\"\n                  placeholder={t.commentsPlaceholder}\n                  className=\"resize-none\"\n                />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <Field orientation=\"horizontal\">\n            <Button type=\"submit\">{t.submit}</Button>\n            <Button variant=\"outline\" type=\"button\">\n              {t.cancel}\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/field-hear.tsx",
    "content": "\"use client\"\n\nimport { Card, CardContent } from \"@/examples/base/ui-rtl/card\"\nimport { Checkbox } from \"@/examples/base/ui-rtl/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/base/ui-rtl/field\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    legend: \"كيف سمعت عنا؟\",\n    description: \"اختر الخيار الذي يصف أفضل طريقة سمعت عنا من خلالها.\",\n    socialMedia: \"التواصل الاجتماعي\",\n    searchEngine: \"البحث\",\n    referral: \"إحالة\",\n    other: \"أخرى\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    legend: \"איך שמעת עלינו?\",\n    description: \"בחר את האפשרות שמתארת בצורה הטובה ביותר כיצד שמעת עלינו.\",\n    socialMedia: \"חברתיות\",\n    searchEngine: \"חיפוש\",\n    referral: \"הפניה\",\n    other: \"אחר\",\n  },\n}\n\nexport function FieldHear() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  const options = [\n    { label: t.socialMedia, value: \"social-media\" },\n    { label: t.searchEngine, value: \"search-engine\" },\n    { label: t.referral, value: \"referral\" },\n    { label: t.other, value: \"other\" },\n  ]\n\n  return (\n    <div dir={t.dir}>\n      <Card className=\"border-0 py-4 shadow-none\">\n        <CardContent className=\"px-4\">\n          <form>\n            <FieldGroup>\n              <FieldSet className=\"gap-4\">\n                <FieldLegend>{t.legend}</FieldLegend>\n                <FieldDescription className=\"line-clamp-1\">\n                  {t.description}\n                </FieldDescription>\n                <FieldGroup className=\"flex flex-row flex-wrap gap-2 [--radius:9999rem]\">\n                  {options.map((option) => (\n                    <FieldLabel\n                      htmlFor={`rtl-${option.value}`}\n                      key={option.value}\n                      className=\"w-fit!\"\n                    >\n                      <Field\n                        orientation=\"horizontal\"\n                        className=\"gap-1.5 overflow-hidden px-3! py-1.5! transition-all duration-100 ease-linear group-has-data-[state=checked]/field-label:px-2!\"\n                      >\n                        <Checkbox\n                          value={option.value}\n                          id={`rtl-${option.value}`}\n                          defaultChecked={option.value === \"social-media\"}\n                          className=\"-ms-6 translate-x-1 rounded-full transition-all duration-100 ease-linear data-checked:ms-0 data-checked:translate-x-0\"\n                        />\n                        <FieldTitle>{option.label}</FieldTitle>\n                      </Field>\n                    </FieldLabel>\n                  ))}\n                </FieldGroup>\n              </FieldSet>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/field-slider.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n  Field,\n  FieldDescription,\n  FieldTitle,\n} from \"@/examples/base/ui-rtl/field\"\nimport { Slider } from \"@/examples/base/ui-rtl/slider\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    locale: \"ar-SA\",\n    title: \"نطاق السعر\",\n    description: \"حدد نطاق ميزانيتك\",\n    ariaLabel: \"نطاق السعر\",\n    currency: \"﷼\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    locale: \"he-IL\",\n    title: \"טווח מחירים\",\n    description: \"הגדר את טווח התקציב שלך\",\n    ariaLabel: \"טווח מחירים\",\n    currency: \"₪\",\n  },\n}\n\nfunction formatNumber(value: number, locale: string) {\n  return new Intl.NumberFormat(locale).format(value)\n}\n\nexport function FieldSlider() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n  const [value, setValue] = useState([200, 800])\n\n  return (\n    <Field dir={t.dir}>\n      <FieldTitle>{t.title}</FieldTitle>\n      <FieldDescription>\n        {t.description} ({t.currency}\n        <span className=\"font-medium tabular-nums\">\n          {formatNumber(value[0], t.locale)}\n        </span>{\" \"}\n        -{\" \"}\n        <span className=\"font-medium tabular-nums\">\n          {formatNumber(value[1], t.locale)}\n        </span>\n        ).\n      </FieldDescription>\n      <Slider\n        value={value}\n        onValueChange={(value) => setValue(value as [number, number])}\n        max={1000}\n        min={0}\n        step={10}\n        className=\"mt-2 w-full\"\n        aria-label={t.ariaLabel}\n      />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/index.tsx",
    "content": "\"use client\"\n\nimport { DirectionProvider } from \"@/examples/base/ui-rtl/direction\"\nimport { FieldSeparator } from \"@/examples/base/ui-rtl/field\"\n\nimport {\n  LanguageProvider,\n  LanguageSelector,\n  useLanguageContext,\n} from \"@/components/language-selector\"\n\nimport { AppearanceSettings } from \"./appearance-settings\"\nimport { ButtonGroupDemo } from \"./button-group-demo\"\nimport { ButtonGroupInputGroup } from \"./button-group-input-group\"\nimport { ButtonGroupNested } from \"./button-group-nested\"\nimport { ButtonGroupPopover } from \"./button-group-popover\"\nimport { EmptyAvatarGroup } from \"./empty-avatar-group\"\nimport { FieldCheckbox } from \"./field-checkbox\"\nimport { FieldDemo } from \"./field-demo\"\nimport { FieldHear } from \"./field-hear\"\nimport { FieldSlider } from \"./field-slider\"\nimport { InputGroupButtonExample } from \"./input-group-button\"\nimport { InputGroupDemo } from \"./input-group-demo\"\nimport { ItemDemo } from \"./item-demo\"\nimport { NotionPromptForm } from \"./notion-prompt-form\"\nimport { SpinnerBadge } from \"./spinner-badge\"\nimport { SpinnerEmpty } from \"./spinner-empty\"\n\nfunction RtlComponentsContent() {\n  const context = useLanguageContext()\n\n  if (!context) {\n    return null\n  }\n\n  const { language } = context\n\n  return (\n    <div\n      className=\"relative grid gap-8 p-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 xl:gap-6 2xl:gap-8\"\n      dir=\"rtl\"\n      data-lang={language}\n      data-slot=\"rtl-components\"\n    >\n      <LanguageSelector\n        value={language}\n        onValueChange={context.setLanguage}\n        className=\"absolute -top-12 right-52 hidden h-8! data-[size=sm]:rounded-lg lg:flex\"\n        languages={[\"ar\", \"he\"]}\n      />\n      <div className=\"flex flex-col gap-6 *:[div]:w-full *:[div]:max-w-full\">\n        <FieldDemo />\n      </div>\n      <div className=\"flex flex-col gap-6 *:[div]:w-full *:[div]:max-w-full\">\n        <EmptyAvatarGroup />\n        <SpinnerBadge />\n        <ButtonGroupInputGroup />\n        <FieldSlider />\n        <InputGroupDemo />\n      </div>\n      <div className=\"flex flex-col gap-6 *:[div]:w-full *:[div]:max-w-full\">\n        <InputGroupButtonExample />\n        <ItemDemo />\n        <FieldSeparator className=\"my-4\">\n          {language === \"he\" ? \"הגדרות מראה\" : \"إعدادات المظهر\"}\n        </FieldSeparator>\n        <AppearanceSettings />\n      </div>\n      <div className=\"order-first flex flex-col gap-6 lg:hidden xl:order-last xl:flex *:[div]:w-full *:[div]:max-w-full\">\n        <NotionPromptForm />\n        <ButtonGroupDemo />\n        <FieldCheckbox />\n        <div className=\"flex justify-between gap-4\">\n          <ButtonGroupNested />\n          <ButtonGroupPopover />\n        </div>\n        <FieldHear />\n        <SpinnerEmpty />\n      </div>\n    </div>\n  )\n}\n\nexport function RtlComponents() {\n  return (\n    <LanguageProvider defaultLanguage=\"ar\">\n      <DirectionProvider direction=\"rtl\">\n        <RtlComponentsContent />\n      </DirectionProvider>\n    </LanguageProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/input-group-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui-rtl/input-group\"\nimport { Label } from \"@/examples/base/ui-rtl/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui-rtl/popover\"\nimport { IconInfoCircle, IconStar } from \"@tabler/icons-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    inputLabel: \"السعر\",\n    info: \"معلومات\",\n    priceInfo: \"أدخل السعر بالريال السعودي.\",\n    priceDescription: \"سيتم تحويل السعر تلقائياً.\",\n    favorite: \"مفضل\",\n    currency: \"ر.س\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    inputLabel: \"מחיר\",\n    info: \"מידע\",\n    priceInfo: \"הזן את המחיר בשקלים.\",\n    priceDescription: \"המחיר יומר אוטומטית.\",\n    favorite: \"מועדף\",\n    currency: \"₪\",\n  },\n}\n\nexport function InputGroupButtonExample() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n  const [isFavorite, setIsFavorite] = React.useState(false)\n\n  return (\n    <div dir={t.dir} className=\"grid w-full max-w-sm gap-6\">\n      <Label htmlFor=\"input-secure-rtl\" className=\"sr-only\">\n        {t.inputLabel}\n      </Label>\n      <InputGroup className=\"[--radius:9999px]\">\n        <InputGroupInput id=\"input-secure-rtl\" className=\"pr-0.5!\" />\n        <InputGroupAddon>\n          <Popover>\n            <PopoverTrigger\n              render={\n                <InputGroupButton\n                  variant=\"secondary\"\n                  size=\"icon-xs\"\n                  aria-label={t.info}\n                />\n              }\n            >\n              <IconInfoCircle />\n            </PopoverTrigger>\n            <PopoverContent\n              align=\"end\"\n              alignOffset={10}\n              className=\"flex flex-col gap-1 rounded-xl text-sm\"\n              data-lang={lang}\n              dir={t.dir}\n            >\n              <p className=\"font-medium\">{t.priceInfo}</p>\n              <p>{t.priceDescription}</p>\n            </PopoverContent>\n          </Popover>\n        </InputGroupAddon>\n        <InputGroupAddon className=\"text-muted-foreground\">\n          {t.currency}\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            onClick={() => setIsFavorite(!isFavorite)}\n            size=\"icon-xs\"\n            aria-label={t.favorite}\n          >\n            <IconStar\n              data-favorite={isFavorite}\n              className=\"data-[favorite=true]:fill-primary data-[favorite=true]:stroke-primary\"\n            />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/input-group-demo.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/base/ui-rtl/input-group\"\nimport { Separator } from \"@/examples/base/ui-rtl/separator\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui-rtl/tooltip\"\nimport {\n  IconCheck,\n  IconChevronDown,\n  IconInfoCircle,\n  IconPlus,\n} from \"@tabler/icons-react\"\nimport { ArrowUpIcon, Search } from \"lucide-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    search: \"بحث...\",\n    results: \"12 نتيجة\",\n    example: \"example.com\",\n    tooltipContent: \"هذا محتوى في تلميح.\",\n    askSearchChat: \"اسأل، ابحث أو تحدث...\",\n    add: \"إضافة\",\n    auto: \"تلقائي\",\n    agent: \"وكيل\",\n    manual: \"يدوي\",\n    used: \"52% مستخدم\",\n    send: \"إرسال\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    search: \"חיפוש...\",\n    results: \"12 תוצאות\",\n    example: \"example.com\",\n    tooltipContent: \"זה תוכן בטולטיפ.\",\n    askSearchChat: \"שאל, חפש או שוחח...\",\n    add: \"הוסף\",\n    auto: \"אוטומטי\",\n    agent: \"סוכן\",\n    manual: \"ידני\",\n    used: \"52% בשימוש\",\n    send: \"שלח\",\n  },\n}\n\nexport function InputGroupDemo() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  return (\n    <div dir={t.dir} className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder={t.search} />\n        <InputGroupAddon>\n          <Search />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">{t.results}</InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder={t.example} />\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger\n              render={\n                <InputGroupButton\n                  className=\"rounded-full\"\n                  size=\"icon-xs\"\n                  aria-label={t.add}\n                />\n              }\n            >\n              <IconInfoCircle />\n            </TooltipTrigger>\n            <TooltipContent>{t.tooltipContent}</TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder={t.askSearchChat} />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupButton\n            variant=\"outline\"\n            className=\"rounded-full\"\n            size=\"icon-xs\"\n            aria-label={t.add}\n          >\n            <IconPlus />\n          </InputGroupButton>\n          <DropdownMenu>\n            <DropdownMenuTrigger render={<InputGroupButton variant=\"ghost\" />}>\n              <IconChevronDown />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent side=\"top\" align=\"start\">\n              <DropdownMenuItem>{t.auto}</DropdownMenuItem>\n              <DropdownMenuItem>{t.agent}</DropdownMenuItem>\n              <DropdownMenuItem>{t.manual}</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n          <InputGroupText className=\"ms-auto\">{t.used}</InputGroupText>\n          <Separator orientation=\"vertical\" className=\"h-4!\" />\n          <InputGroupButton\n            variant=\"default\"\n            className=\"rounded-full\"\n            size=\"icon-xs\"\n          >\n            <ArrowUpIcon />\n            <span className=\"sr-only\">{t.send}</span>\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"shadcn\" />\n        <InputGroupAddon align=\"inline-end\">\n          <div className=\"flex size-4 items-center justify-center rounded-full bg-primary text-foreground\">\n            <IconCheck className=\"size-3 text-white\" />\n          </div>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/item-demo.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui-rtl/item\"\nimport { BadgeCheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    twoFactor: \"المصادقة الثنائية\",\n    twoFactorDescription: \"التحقق عبر البريد الإلكتروني أو رقم الهاتف.\",\n    enable: \"تفعيل\",\n    verified: \"تم التحقق من ملفك الشخصي.\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    twoFactor: \"אימות דו-שלבי\",\n    twoFactorDescription: \"אמת באמצעות אימייל או מספר טלפון.\",\n    enable: \"הפעל\",\n    verified: \"הפרופיל שלך אומת.\",\n  },\n}\n\nexport function ItemDemo() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  return (\n    <div dir={t.dir} className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>{t.twoFactor}</ItemTitle>\n          <ItemDescription className=\"text-pretty xl:hidden 2xl:block\">\n            {t.twoFactorDescription}\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">{t.enable}</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia>\n          <BadgeCheckIcon className=\"size-5\" />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>{t.verified}</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <ChevronRightIcon className=\"size-4 rtl:rotate-180\" />\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/notion-prompt-form.tsx",
    "content": "\"use client\"\n\nimport { useMemo, useState } from \"react\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/examples/base/ui-rtl/avatar\"\nimport { Badge } from \"@/examples/base/ui-rtl/badge\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/examples/base/ui-rtl/command\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport { Field, FieldLabel } from \"@/examples/base/ui-rtl/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupTextarea,\n} from \"@/examples/base/ui-rtl/input-group\"\nimport { Popover, PopoverContent } from \"@/examples/base/ui-rtl/popover\"\nimport { Switch } from \"@/examples/base/ui-rtl/switch\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui-rtl/tooltip\"\nimport {\n  IconApps,\n  IconArrowUp,\n  IconAt,\n  IconBook,\n  IconCircleDashedPlus,\n  IconPaperclip,\n  IconPlus,\n  IconWorld,\n  IconX,\n} from \"@tabler/icons-react\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    prompt: \"الأمر\",\n    placeholder: \"اسأل، ابحث، أو أنشئ أي شيء...\",\n    addContext: \"أضف سياق\",\n    mentionTooltip: \"اذكر شخصًا أو صفحة أو تاريخًا\",\n    searchPages: \"البحث في الصفحات...\",\n    noPagesFound: \"لم يتم العثور على صفحات\",\n    pages: \"الصفحات\",\n    users: \"المستخدمون\",\n    attachFile: \"إرفاق ملف\",\n    selectModel: \"اختر نموذج الذكاء الاصطناعي\",\n    selectAgentMode: \"اختر وضع الوكيل\",\n    webSearch: \"البحث على الويب\",\n    appsIntegrations: \"التطبيقات والتكاملات\",\n    allSourcesAccess: \"جميع المصادر التي يمكنني الوصول إليها\",\n    findKnowledge: \"ابحث أو استخدم المعرفة في...\",\n    noKnowledgeFound: \"لم يتم العثور على معرفة\",\n    helpCenter: \"مركز المساعدة\",\n    connectApps: \"ربط التطبيقات\",\n    searchSourcesNote: \"سنبحث فقط في المصادر المحددة هنا.\",\n    send: \"إرسال\",\n    allSources: \"جميع المصادر\",\n    auto: \"تلقائي\",\n    agentMode: \"وضع الوكيل\",\n    planMode: \"وضع التخطيط\",\n    beta: \"تجريبي\",\n    workspace: \"مساحة العمل\",\n    meetingNotes: \"ملاحظات الاجتماع\",\n    projectDashboard: \"لوحة المشروع\",\n    ideasBrainstorming: \"أفكار وعصف ذهني\",\n    calendarEvents: \"التقويم والأحداث\",\n    documentation: \"التوثيق\",\n    goalsObjectives: \"الأهداف والغايات\",\n    budgetPlanning: \"تخطيط الميزانية\",\n    teamDirectory: \"دليل الفريق\",\n    technicalSpecs: \"المواصفات التقنية\",\n    analyticsReport: \"تقرير التحليلات\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    prompt: \"פקודה\",\n    placeholder: \"שאל, חפש, או צור משהו...\",\n    addContext: \"הוסף הקשר\",\n    mentionTooltip: \"הזכר אדם, עמוד או תאריך\",\n    searchPages: \"חפש עמודים...\",\n    noPagesFound: \"לא נמצאו עמודים\",\n    pages: \"עמודים\",\n    users: \"משתמשים\",\n    attachFile: \"צרף קובץ\",\n    selectModel: \"בחר מודל AI\",\n    selectAgentMode: \"בחר מצב סוכן\",\n    webSearch: \"חיפוש באינטרנט\",\n    appsIntegrations: \"אפליקציות ואינטגרציות\",\n    allSourcesAccess: \"כל המקורות שיש לי גישה אליהם\",\n    findKnowledge: \"מצא או השתמש בידע ב...\",\n    noKnowledgeFound: \"לא נמצא ידע\",\n    helpCenter: \"מרכז עזרה\",\n    connectApps: \"חבר אפליקציות\",\n    searchSourcesNote: \"נחפש רק במקורות שנבחרו כאן.\",\n    send: \"שלח\",\n    allSources: \"כל המקורות\",\n    auto: \"אוטומטי\",\n    agentMode: \"מצב סוכן\",\n    planMode: \"מצב תכנון\",\n    beta: \"בטא\",\n    workspace: \"סביבת עבודה\",\n    meetingNotes: \"הערות פגישה\",\n    projectDashboard: \"לוח מחוונים לפרויקט\",\n    ideasBrainstorming: \"רעיונות וסיעור מוחות\",\n    calendarEvents: \"יומן ואירועים\",\n    documentation: \"תיעוד\",\n    goalsObjectives: \"מטרות ויעדים\",\n    budgetPlanning: \"תכנון תקציב\",\n    teamDirectory: \"ספריית צוות\",\n    technicalSpecs: \"מפרט טכני\",\n    analyticsReport: \"דוח אנליטיקה\",\n  },\n}\n\nfunction MentionableIcon({\n  item,\n}: {\n  item: { type: string; title: string; image: string }\n}) {\n  return item.type === \"page\" ? (\n    <span className=\"flex size-4 items-center justify-center\">\n      {item.image}\n    </span>\n  ) : (\n    <Avatar className=\"size-4\">\n      <AvatarImage src={item.image} />\n      <AvatarFallback>{item.title[0]}</AvatarFallback>\n    </Avatar>\n  )\n}\n\nexport function NotionPromptForm() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  const SAMPLE_DATA = useMemo(\n    () => ({\n      mentionable: [\n        { type: \"page\", title: t.meetingNotes, image: \"📝\" },\n        { type: \"page\", title: t.projectDashboard, image: \"📊\" },\n        { type: \"page\", title: t.ideasBrainstorming, image: \"💡\" },\n        { type: \"page\", title: t.calendarEvents, image: \"📅\" },\n        { type: \"page\", title: t.documentation, image: \"📚\" },\n        { type: \"page\", title: t.goalsObjectives, image: \"🎯\" },\n        { type: \"page\", title: t.budgetPlanning, image: \"💰\" },\n        { type: \"page\", title: t.teamDirectory, image: \"👥\" },\n        { type: \"page\", title: t.technicalSpecs, image: \"🔧\" },\n        { type: \"page\", title: t.analyticsReport, image: \"📈\" },\n        {\n          type: \"user\",\n          title: \"shadcn\",\n          image: \"https://github.com/shadcn.png\",\n          workspace: t.workspace,\n        },\n        {\n          type: \"user\",\n          title: \"maxleiter\",\n          image: \"https://github.com/maxleiter.png\",\n          workspace: t.workspace,\n        },\n        {\n          type: \"user\",\n          title: \"evilrabbit\",\n          image: \"https://github.com/evilrabbit.png\",\n          workspace: t.workspace,\n        },\n      ],\n      models: [\n        { name: t.auto },\n        { name: t.agentMode, badge: t.beta },\n        { name: t.planMode },\n      ],\n    }),\n    [t]\n  )\n\n  const [mentions, setMentions] = useState<string[]>([])\n  const [mentionPopoverOpen, setMentionPopoverOpen] = useState(false)\n  const [modelPopoverOpen, setModelPopoverOpen] = useState(false)\n  const [selectedModel, setSelectedModel] = useState<\n    (typeof SAMPLE_DATA.models)[0]\n  >(SAMPLE_DATA.models[0])\n  const [scopeMenuOpen, setScopeMenuOpen] = useState(false)\n\n  const grouped = useMemo(() => {\n    return SAMPLE_DATA.mentionable.reduce(\n      (acc, item) => {\n        const isAvailable = !mentions.includes(item.title)\n\n        if (isAvailable) {\n          if (!acc[item.type]) {\n            acc[item.type] = []\n          }\n          acc[item.type].push(item)\n        }\n        return acc\n      },\n      {} as Record<string, typeof SAMPLE_DATA.mentionable>\n    )\n  }, [mentions, SAMPLE_DATA])\n\n  const hasMentions = mentions.length > 0\n\n  return (\n    <div dir={t.dir}>\n      <form>\n        <Field>\n          <FieldLabel htmlFor=\"rtl-notion-prompt\" className=\"sr-only\">\n            {t.prompt}\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"rtl-notion-prompt\"\n              placeholder={t.placeholder}\n            />\n            <InputGroupAddon align=\"block-start\">\n              <Popover\n                open={mentionPopoverOpen}\n                onOpenChange={setMentionPopoverOpen}\n              >\n                <Tooltip>\n                  <TooltipTrigger\n                    render={\n                      <InputGroupButton\n                        variant=\"outline\"\n                        size={!hasMentions ? \"sm\" : \"icon-sm\"}\n                        className=\"rounded-full transition-transform\"\n                      />\n                    }\n                    onFocusCapture={(e) => e.stopPropagation()}\n                  >\n                    <IconAt /> {!hasMentions && t.addContext}\n                  </TooltipTrigger>\n                  <TooltipContent>{t.mentionTooltip}</TooltipContent>\n                </Tooltip>\n                <PopoverContent className=\"p-0\" align=\"start\" dir={t.dir}>\n                  <Command>\n                    <CommandInput placeholder={t.searchPages} />\n                    <CommandList>\n                      <CommandEmpty>{t.noPagesFound}</CommandEmpty>\n                      {Object.entries(grouped).map(([type, items]) => (\n                        <CommandGroup\n                          key={type}\n                          heading={type === \"page\" ? t.pages : t.users}\n                        >\n                          {items.map((item) => (\n                            <CommandItem\n                              key={item.title}\n                              value={item.title}\n                              onSelect={(currentValue) => {\n                                setMentions((prev) => [...prev, currentValue])\n                                setMentionPopoverOpen(false)\n                              }}\n                            >\n                              <MentionableIcon item={item} />\n                              {item.title}\n                            </CommandItem>\n                          ))}\n                        </CommandGroup>\n                      ))}\n                    </CommandList>\n                  </Command>\n                </PopoverContent>\n              </Popover>\n              <div className=\"-m-1.5 no-scrollbar flex gap-1 overflow-y-auto p-1.5\">\n                {mentions.map((mention) => {\n                  const item = SAMPLE_DATA.mentionable.find(\n                    (item) => item.title === mention\n                  )\n\n                  if (!item) {\n                    return null\n                  }\n\n                  return (\n                    <InputGroupButton\n                      key={mention}\n                      size=\"sm\"\n                      variant=\"secondary\"\n                      className=\"rounded-full pr-2!\"\n                      onClick={() => {\n                        setMentions((prev) => prev.filter((m) => m !== mention))\n                      }}\n                    >\n                      <MentionableIcon item={item} />\n                      {item.title}\n                      <IconX />\n                    </InputGroupButton>\n                  )\n                })}\n              </div>\n            </InputGroupAddon>\n            <InputGroupAddon align=\"block-end\" className=\"gap-1\">\n              <Tooltip>\n                <TooltipTrigger\n                  render={\n                    <InputGroupButton\n                      size=\"icon-sm\"\n                      className=\"rounded-full\"\n                      aria-label={t.attachFile}\n                    />\n                  }\n                >\n                  <IconPaperclip />\n                </TooltipTrigger>\n                <TooltipContent>{t.attachFile}</TooltipContent>\n              </Tooltip>\n              <DropdownMenu\n                open={modelPopoverOpen}\n                onOpenChange={setModelPopoverOpen}\n              >\n                <Tooltip>\n                  <TooltipTrigger\n                    render={\n                      <InputGroupButton size=\"sm\" className=\"rounded-full\" />\n                    }\n                  >\n                    {selectedModel.name}\n                  </TooltipTrigger>\n                  <TooltipContent>{t.selectModel}</TooltipContent>\n                </Tooltip>\n                <DropdownMenuContent\n                  side=\"top\"\n                  align=\"start\"\n                  className=\"w-48\"\n                  dir={t.dir}\n                >\n                  <DropdownMenuGroup className=\"w-48\">\n                    <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                      {t.selectAgentMode}\n                    </DropdownMenuLabel>\n                    {SAMPLE_DATA.models.map((model) => (\n                      <DropdownMenuCheckboxItem\n                        key={model.name}\n                        checked={model.name === selectedModel.name}\n                        onCheckedChange={(checked) => {\n                          if (checked) {\n                            setSelectedModel(model)\n                          }\n                        }}\n                        className=\"pr-2 *:[span:first-child]:right-auto *:[span:first-child]:left-2\"\n                      >\n                        {model.name}\n                        {model.badge && (\n                          <Badge\n                            variant=\"secondary\"\n                            className=\"h-5 rounded-sm bg-blue-100 px-1 text-xs text-blue-800 dark:bg-blue-900 dark:text-blue-100\"\n                          >\n                            {model.badge}\n                          </Badge>\n                        )}\n                      </DropdownMenuCheckboxItem>\n                    ))}\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n              <DropdownMenu\n                open={scopeMenuOpen}\n                onOpenChange={setScopeMenuOpen}\n              >\n                <DropdownMenuTrigger\n                  render={\n                    <InputGroupButton size=\"sm\" className=\"rounded-full\" />\n                  }\n                >\n                  <IconWorld /> {t.allSources}\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  side=\"top\"\n                  align=\"end\"\n                  className=\"w-72\"\n                  dir={t.dir}\n                >\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem\n                      render={\n                        <label htmlFor=\"rtl-web-search\">\n                          <IconWorld /> {t.webSearch}{\" \"}\n                          <Switch\n                            id=\"rtl-web-search\"\n                            className=\"ms-auto\"\n                            defaultChecked\n                            size=\"sm\"\n                          />\n                        </label>\n                      }\n                      onSelect={(e) => e.preventDefault()}\n                    ></DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem\n                      render={\n                        <label htmlFor=\"rtl-apps\">\n                          <IconApps /> {t.appsIntegrations}\n                          <Switch\n                            id=\"rtl-apps\"\n                            className=\"ms-auto\"\n                            defaultChecked\n                            size=\"sm\"\n                          />\n                        </label>\n                      }\n                      onSelect={(e) => e.preventDefault()}\n                    ></DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <IconCircleDashedPlus /> {t.allSourcesAccess}\n                    </DropdownMenuItem>\n                    <DropdownMenuSub>\n                      <DropdownMenuSubTrigger>\n                        <Avatar className=\"size-4\">\n                          <AvatarImage src=\"https://github.com/shadcn.png\" />\n                          <AvatarFallback>CN</AvatarFallback>\n                        </Avatar>\n                        shadcn\n                      </DropdownMenuSubTrigger>\n                      <DropdownMenuSubContent\n                        className=\"w-72 rounded-lg p-0\"\n                        dir={t.dir}\n                        side=\"left\"\n                      >\n                        <Command>\n                          <CommandInput\n                            placeholder={t.findKnowledge}\n                            autoFocus\n                          />\n                          <CommandList>\n                            <CommandEmpty>{t.noKnowledgeFound}</CommandEmpty>\n                            <CommandGroup>\n                              {SAMPLE_DATA.mentionable\n                                .filter((item) => item.type === \"user\")\n                                .map((user) => (\n                                  <CommandItem\n                                    key={user.title}\n                                    value={user.title}\n                                    onSelect={() => {\n                                      console.log(\"Selected user:\", user.title)\n                                    }}\n                                  >\n                                    <Avatar className=\"size-4\">\n                                      <AvatarImage src={user.image} />\n                                      <AvatarFallback>\n                                        {user.title[0]}\n                                      </AvatarFallback>\n                                    </Avatar>\n                                    {user.title}{\" \"}\n                                    <span className=\"text-muted-foreground\">\n                                      -{\" \"}\n                                      {\n                                        (user as { workspace?: string })\n                                          .workspace\n                                      }\n                                    </span>\n                                  </CommandItem>\n                                ))}\n                            </CommandGroup>\n                          </CommandList>\n                        </Command>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuSub>\n                    <DropdownMenuItem>\n                      <IconBook /> {t.helpCenter}\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <IconPlus /> {t.connectApps}\n                    </DropdownMenuItem>\n                    <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                      {t.searchSourcesNote}\n                    </DropdownMenuLabel>\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n              <InputGroupButton\n                aria-label={t.send}\n                className=\"ms-auto rounded-full\"\n                variant=\"default\"\n                size=\"icon-sm\"\n              >\n                <IconArrowUp />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/spinner-badge.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/examples/base/ui-rtl/badge\"\nimport { Spinner } from \"@/examples/base/ui-rtl/spinner\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    syncing: \"جارٍ المزامنة\",\n    updating: \"جارٍ التحديث\",\n    loading: \"جارٍ التحميل\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    syncing: \"מסנכרן\",\n    updating: \"מעדכן\",\n    loading: \"טוען\",\n  },\n}\n\nexport function SpinnerBadge() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  return (\n    <div dir={t.dir} className=\"flex items-center gap-2\">\n      <Badge>\n        <Spinner />\n        {t.syncing}\n      </Badge>\n      <Badge variant=\"secondary\">\n        <Spinner />\n        {t.updating}\n      </Badge>\n      <Badge variant=\"outline\">\n        <Spinner />\n        {t.loading}\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/components/spinner-empty.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui-rtl/empty\"\nimport { Spinner } from \"@/examples/base/ui-rtl/spinner\"\n\nimport { useLanguageContext } from \"@/components/language-selector\"\n\nconst translations = {\n  ar: {\n    dir: \"rtl\" as const,\n    title: \"جارٍ معالجة طلبك\",\n    description: \"يرجى الانتظار بينما نعالج طلبك. لا تقم بتحديث الصفحة.\",\n    cancel: \"إلغاء\",\n  },\n  he: {\n    dir: \"rtl\" as const,\n    title: \"מעבד את הבקשה שלך\",\n    description: \"אנא המתן בזמן שאנו מעבדים את בקשתך. אל תרענן את הדף.\",\n    cancel: \"ביטול\",\n  },\n}\n\nexport function SpinnerEmpty() {\n  const context = useLanguageContext()\n  const lang = context?.language === \"he\" ? \"he\" : \"ar\"\n  const t = translations[lang]\n\n  return (\n    <Empty className=\"w-full border md:p-6\" dir={t.dir}>\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <Spinner />\n        </EmptyMedia>\n        <EmptyTitle>{t.title}</EmptyTitle>\n        <EmptyDescription>{t.description}</EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          {t.cancel}\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/rtl/page.tsx",
    "content": "import { type Metadata } from \"next\"\n\nimport { RtlComponents } from \"./components\"\n\nexport const metadata: Metadata = {\n  title: \"RTL\",\n  description: \"RTL example page with right-to-left language support.\",\n}\n\nexport function RtlPage() {\n  return <RtlComponents />\n}\n\nexport default RtlPage\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/columns.tsx",
    "content": "\"use client\"\n\nimport { type ColumnDef } from \"@tanstack/react-table\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\n\nimport { labels, priorities, statuses } from \"../data/data\"\nimport { type Task } from \"../data/schema\"\nimport { DataTableColumnHeader } from \"./data-table-column-header\"\nimport { DataTableRowActions } from \"./data-table-row-actions\"\n\nexport const columns: ColumnDef<Task>[] = [\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <Checkbox\n        checked={\n          table.getIsAllPageRowsSelected() ||\n          (table.getIsSomePageRowsSelected() && \"indeterminate\")\n        }\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n        aria-label=\"Select all\"\n        className=\"translate-y-[2px]\"\n      />\n    ),\n    cell: ({ row }) => (\n      <Checkbox\n        checked={row.getIsSelected()}\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\n        aria-label=\"Select row\"\n        className=\"translate-y-[2px]\"\n      />\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"id\",\n    header: ({ column }) => (\n      <DataTableColumnHeader column={column} title=\"Task\" />\n    ),\n    cell: ({ row }) => <div className=\"w-[80px]\">{row.getValue(\"id\")}</div>,\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"title\",\n    header: ({ column }) => (\n      <DataTableColumnHeader column={column} title=\"Title\" />\n    ),\n    cell: ({ row }) => {\n      const label = labels.find((label) => label.value === row.original.label)\n\n      return (\n        <div className=\"flex gap-2\">\n          {label && <Badge variant=\"outline\">{label.label}</Badge>}\n          <span className=\"max-w-[500px] truncate font-medium\">\n            {row.getValue(\"title\")}\n          </span>\n        </div>\n      )\n    },\n  },\n  {\n    accessorKey: \"status\",\n    header: ({ column }) => (\n      <DataTableColumnHeader column={column} title=\"Status\" />\n    ),\n    cell: ({ row }) => {\n      const status = statuses.find(\n        (status) => status.value === row.getValue(\"status\")\n      )\n\n      if (!status) {\n        return null\n      }\n\n      return (\n        <div className=\"flex w-[100px] items-center gap-2\">\n          {status.icon && (\n            <status.icon className=\"size-4 text-muted-foreground\" />\n          )}\n          <span>{status.label}</span>\n        </div>\n      )\n    },\n    filterFn: (row, id, value) => {\n      return value.includes(row.getValue(id))\n    },\n  },\n  {\n    accessorKey: \"priority\",\n    header: ({ column }) => (\n      <DataTableColumnHeader column={column} title=\"Priority\" />\n    ),\n    cell: ({ row }) => {\n      const priority = priorities.find(\n        (priority) => priority.value === row.getValue(\"priority\")\n      )\n\n      if (!priority) {\n        return null\n      }\n\n      return (\n        <div className=\"flex items-center gap-2\">\n          {priority.icon && (\n            <priority.icon className=\"size-4 text-muted-foreground\" />\n          )}\n          <span>{priority.label}</span>\n        </div>\n      )\n    },\n    filterFn: (row, id, value) => {\n      return value.includes(row.getValue(id))\n    },\n  },\n  {\n    id: \"actions\",\n    cell: ({ row }) => <DataTableRowActions row={row} />,\n  },\n]\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/data-table-column-header.tsx",
    "content": "import { type Column } from \"@tanstack/react-table\"\nimport { ArrowDown, ArrowUp, ChevronsUpDown, EyeOff } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\ninterface DataTableColumnHeaderProps<TData, TValue>\n  extends React.HTMLAttributes<HTMLDivElement> {\n  column: Column<TData, TValue>\n  title: string\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n  column,\n  title,\n  className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n  if (!column.getCanSort()) {\n    return <div className={cn(className)}>{title}</div>\n  }\n\n  return (\n    <div className={cn(\"flex items-center gap-2\", className)}>\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button\n            variant=\"ghost\"\n            size=\"sm\"\n            className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\n          >\n            <span>{title}</span>\n            {column.getIsSorted() === \"desc\" ? (\n              <ArrowDown />\n            ) : column.getIsSorted() === \"asc\" ? (\n              <ArrowUp />\n            ) : (\n              <ChevronsUpDown />\n            )}\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"start\">\n          <DropdownMenuItem onClick={() => column.toggleSorting(false)}>\n            <ArrowUp />\n            Asc\n          </DropdownMenuItem>\n          <DropdownMenuItem onClick={() => column.toggleSorting(true)}>\n            <ArrowDown />\n            Desc\n          </DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem onClick={() => column.toggleVisibility(false)}>\n            <EyeOff />\n            Hide\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/data-table-faceted-filter.tsx",
    "content": "import * as React from \"react\"\nimport { type Column } from \"@tanstack/react-table\"\nimport { Check, PlusCircle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\ninterface DataTableFacetedFilterProps<TData, TValue> {\n  column?: Column<TData, TValue>\n  title?: string\n  options: {\n    label: string\n    value: string\n    icon?: React.ComponentType<{ className?: string }>\n  }[]\n}\n\nexport function DataTableFacetedFilter<TData, TValue>({\n  column,\n  title,\n  options,\n}: DataTableFacetedFilterProps<TData, TValue>) {\n  const facets = column?.getFacetedUniqueValues()\n  const selectedValues = new Set(column?.getFilterValue() as string[])\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button variant=\"outline\" size=\"sm\" className=\"h-8 border-dashed\">\n          <PlusCircle />\n          {title}\n          {selectedValues?.size > 0 && (\n            <>\n              <Separator orientation=\"vertical\" className=\"mx-2 h-4\" />\n              <Badge\n                variant=\"secondary\"\n                className=\"rounded-sm px-1 font-normal lg:hidden\"\n              >\n                {selectedValues.size}\n              </Badge>\n              <div className=\"hidden gap-1 lg:flex\">\n                {selectedValues.size > 2 ? (\n                  <Badge\n                    variant=\"secondary\"\n                    className=\"rounded-sm px-1 font-normal\"\n                  >\n                    {selectedValues.size} selected\n                  </Badge>\n                ) : (\n                  options\n                    .filter((option) => selectedValues.has(option.value))\n                    .map((option) => (\n                      <Badge\n                        variant=\"secondary\"\n                        key={option.value}\n                        className=\"rounded-sm px-1 font-normal\"\n                      >\n                        {option.label}\n                      </Badge>\n                    ))\n                )}\n              </div>\n            </>\n          )}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-[200px] p-0\" align=\"start\">\n        <Command>\n          <CommandInput placeholder={title} />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup>\n              {options.map((option) => {\n                const isSelected = selectedValues.has(option.value)\n                return (\n                  <CommandItem\n                    key={option.value}\n                    onSelect={() => {\n                      if (isSelected) {\n                        selectedValues.delete(option.value)\n                      } else {\n                        selectedValues.add(option.value)\n                      }\n                      const filterValues = Array.from(selectedValues)\n                      column?.setFilterValue(\n                        filterValues.length ? filterValues : undefined\n                      )\n                    }}\n                  >\n                    <div\n                      className={cn(\n                        \"flex size-4 items-center justify-center rounded-[4px] border\",\n                        isSelected\n                          ? \"border-primary bg-primary text-primary-foreground\"\n                          : \"border-input [&_svg]:invisible\"\n                      )}\n                    >\n                      <Check className=\"size-3.5 text-primary-foreground\" />\n                    </div>\n                    {option.icon && (\n                      <option.icon className=\"size-4 text-muted-foreground\" />\n                    )}\n                    <span>{option.label}</span>\n                    {facets?.get(option.value) && (\n                      <span className=\"ml-auto flex size-4 items-center justify-center font-mono text-xs text-muted-foreground\">\n                        {facets.get(option.value)}\n                      </span>\n                    )}\n                  </CommandItem>\n                )\n              })}\n            </CommandGroup>\n            {selectedValues.size > 0 && (\n              <>\n                <CommandSeparator />\n                <CommandGroup>\n                  <CommandItem\n                    onSelect={() => column?.setFilterValue(undefined)}\n                    className=\"justify-center text-center\"\n                  >\n                    Clear filters\n                  </CommandItem>\n                </CommandGroup>\n              </>\n            )}\n          </CommandList>\n        </Command>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/data-table-pagination.tsx",
    "content": "import { type Table } from \"@tanstack/react-table\"\nimport {\n  ChevronLeft,\n  ChevronRight,\n  ChevronsLeft,\n  ChevronsRight,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\ninterface DataTablePaginationProps<TData> {\n  table: Table<TData>\n}\n\nexport function DataTablePagination<TData>({\n  table,\n}: DataTablePaginationProps<TData>) {\n  return (\n    <div className=\"flex items-center justify-between px-2\">\n      <div className=\"flex-1 text-sm text-muted-foreground\">\n        {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n        {table.getFilteredRowModel().rows.length} row(s) selected.\n      </div>\n      <div className=\"flex items-center space-x-6 lg:space-x-8\">\n        <div className=\"flex items-center space-x-2\">\n          <p className=\"text-sm font-medium\">Rows per page</p>\n          <Select\n            value={`${table.getState().pagination.pageSize}`}\n            onValueChange={(value) => {\n              table.setPageSize(Number(value))\n            }}\n          >\n            <SelectTrigger className=\"h-8 w-[70px]\">\n              <SelectValue placeholder={table.getState().pagination.pageSize} />\n            </SelectTrigger>\n            <SelectContent side=\"top\">\n              {[10, 20, 25, 30, 40, 50].map((pageSize) => (\n                <SelectItem key={pageSize} value={`${pageSize}`}>\n                  {pageSize}\n                </SelectItem>\n              ))}\n            </SelectContent>\n          </Select>\n        </div>\n        <div className=\"flex w-[100px] items-center justify-center text-sm font-medium\">\n          Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n          {table.getPageCount()}\n        </div>\n        <div className=\"flex items-center space-x-2\">\n          <Button\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"hidden size-8 lg:flex\"\n            onClick={() => table.setPageIndex(0)}\n            disabled={!table.getCanPreviousPage()}\n          >\n            <span className=\"sr-only\">Go to first page</span>\n            <ChevronsLeft />\n          </Button>\n          <Button\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"size-8\"\n            onClick={() => table.previousPage()}\n            disabled={!table.getCanPreviousPage()}\n          >\n            <span className=\"sr-only\">Go to previous page</span>\n            <ChevronLeft />\n          </Button>\n          <Button\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"size-8\"\n            onClick={() => table.nextPage()}\n            disabled={!table.getCanNextPage()}\n          >\n            <span className=\"sr-only\">Go to next page</span>\n            <ChevronRight />\n          </Button>\n          <Button\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"hidden size-8 lg:flex\"\n            onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n            disabled={!table.getCanNextPage()}\n          >\n            <span className=\"sr-only\">Go to last page</span>\n            <ChevronsRight />\n          </Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/data-table-row-actions.tsx",
    "content": "\"use client\"\n\nimport { type Row } from \"@tanstack/react-table\"\nimport { MoreHorizontal } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nimport { labels } from \"../data/data\"\nimport { taskSchema } from \"../data/schema\"\n\ninterface DataTableRowActionsProps<TData> {\n  row: Row<TData>\n}\n\nexport function DataTableRowActions<TData>({\n  row,\n}: DataTableRowActionsProps<TData>) {\n  const task = taskSchema.parse(row.original)\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button\n          variant=\"ghost\"\n          size=\"icon\"\n          className=\"size-8 data-[state=open]:bg-muted\"\n        >\n          <MoreHorizontal />\n          <span className=\"sr-only\">Open menu</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\" className=\"w-[160px]\">\n        <DropdownMenuItem>Edit</DropdownMenuItem>\n        <DropdownMenuItem>Make a copy</DropdownMenuItem>\n        <DropdownMenuItem>Favorite</DropdownMenuItem>\n        <DropdownMenuSeparator />\n        <DropdownMenuSub>\n          <DropdownMenuSubTrigger>Labels</DropdownMenuSubTrigger>\n          <DropdownMenuSubContent>\n            <DropdownMenuRadioGroup value={task.label}>\n              {labels.map((label) => (\n                <DropdownMenuRadioItem key={label.value} value={label.value}>\n                  {label.label}\n                </DropdownMenuRadioItem>\n              ))}\n            </DropdownMenuRadioGroup>\n          </DropdownMenuSubContent>\n        </DropdownMenuSub>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem variant=\"destructive\">\n          Delete\n          <DropdownMenuShortcut>⌘⌫</DropdownMenuShortcut>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/data-table-toolbar.tsx",
    "content": "\"use client\"\n\nimport { type Table } from \"@tanstack/react-table\"\nimport { X } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { DataTableViewOptions } from \"@/app/(app)/examples/tasks/components/data-table-view-options\"\n\nimport { priorities, statuses } from \"../data/data\"\nimport { DataTableFacetedFilter } from \"./data-table-faceted-filter\"\n\ninterface DataTableToolbarProps<TData> {\n  table: Table<TData>\n}\n\nexport function DataTableToolbar<TData>({\n  table,\n}: DataTableToolbarProps<TData>) {\n  const isFiltered = table.getState().columnFilters.length > 0\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex flex-1 items-center gap-2\">\n        <Input\n          placeholder=\"Filter tasks...\"\n          value={(table.getColumn(\"title\")?.getFilterValue() as string) ?? \"\"}\n          onChange={(event) =>\n            table.getColumn(\"title\")?.setFilterValue(event.target.value)\n          }\n          className=\"h-8 w-[150px] lg:w-[250px]\"\n        />\n        {table.getColumn(\"status\") && (\n          <DataTableFacetedFilter\n            column={table.getColumn(\"status\")}\n            title=\"Status\"\n            options={statuses}\n          />\n        )}\n        {table.getColumn(\"priority\") && (\n          <DataTableFacetedFilter\n            column={table.getColumn(\"priority\")}\n            title=\"Priority\"\n            options={priorities}\n          />\n        )}\n        {isFiltered && (\n          <Button\n            variant=\"ghost\"\n            size=\"sm\"\n            onClick={() => table.resetColumnFilters()}\n          >\n            Reset\n            <X />\n          </Button>\n        )}\n      </div>\n      <div className=\"flex items-center gap-2\">\n        <DataTableViewOptions table={table} />\n        <Button size=\"sm\">Add Task</Button>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/data-table-view-options.tsx",
    "content": "\"use client\"\n\nimport { type Table } from \"@tanstack/react-table\"\nimport { Settings2 } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport function DataTableViewOptions<TData>({\n  table,\n}: {\n  table: Table<TData>\n}) {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          className=\"ml-auto hidden h-8 lg:flex\"\n        >\n          <Settings2 />\n          View\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\" className=\"w-[150px]\">\n        <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        {table\n          .getAllColumns()\n          .filter(\n            (column) =>\n              typeof column.accessorFn !== \"undefined\" && column.getCanHide()\n          )\n          .map((column) => {\n            return (\n              <DropdownMenuCheckboxItem\n                key={column.id}\n                className=\"capitalize\"\n                checked={column.getIsVisible()}\n                onCheckedChange={(value) => column.toggleVisibility(!!value)}\n              >\n                {column.id}\n              </DropdownMenuCheckboxItem>\n            )\n          })}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/data-table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFacetedRowModel,\n  getFacetedUniqueValues,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\n\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\n\nimport { DataTablePagination } from \"./data-table-pagination\"\nimport { DataTableToolbar } from \"./data-table-toolbar\"\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[]\n  data: TData[]\n}\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [rowSelection, setRowSelection] = React.useState({})\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [sorting, setSorting] = React.useState<SortingState>([])\n\n  const table = useReactTable({\n    data,\n    columns,\n    state: {\n      sorting,\n      columnVisibility,\n      rowSelection,\n      columnFilters,\n    },\n    initialState: {\n      pagination: {\n        pageSize: 25,\n      },\n    },\n    enableRowSelection: true,\n    onRowSelectionChange: setRowSelection,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    onColumnVisibilityChange: setColumnVisibility,\n    getCoreRowModel: getCoreRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFacetedRowModel: getFacetedRowModel(),\n    getFacetedUniqueValues: getFacetedUniqueValues(),\n  })\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <DataTableToolbar table={table} />\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>\n          <TableHeader>\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id}>\n                {headerGroup.headers.map((header) => {\n                  return (\n                    <TableHead key={header.id} colSpan={header.colSpan}>\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(\n                            header.column.columnDef.header,\n                            header.getContext()\n                          )}\n                    </TableHead>\n                  )\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody>\n            {table.getRowModel().rows?.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && \"selected\"}\n                >\n                  {row.getVisibleCells().map((cell) => (\n                    <TableCell key={cell.id}>\n                      {flexRender(\n                        cell.column.columnDef.cell,\n                        cell.getContext()\n                      )}\n                    </TableCell>\n                  ))}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell\n                  colSpan={columns.length}\n                  className=\"h-24 text-center\"\n                >\n                  No results.\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n      <DataTablePagination table={table} />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/components/user-nav.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport function UserNav() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"ghost\" className=\"relative h-8 w-8 rounded-full\">\n          <Avatar className=\"h-9 w-9\">\n            <AvatarImage src=\"/avatars/03.png\" alt=\"@shadcn\" />\n            <AvatarFallback>SC</AvatarFallback>\n          </Avatar>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-56\" align=\"end\" forceMount>\n        <DropdownMenuLabel className=\"font-normal\">\n          <div className=\"flex flex-col space-y-1\">\n            <p className=\"text-sm leading-none font-medium\">shadcn</p>\n            <p className=\"text-xs leading-none text-muted-foreground\">\n              m@example.com\n            </p>\n          </div>\n        </DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Billing\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Settings\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>New Team</DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          Log out\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/data/data.tsx",
    "content": "import {\n  ArrowDown,\n  ArrowRight,\n  ArrowUp,\n  CheckCircle,\n  Circle,\n  CircleOff,\n  HelpCircle,\n  Timer,\n} from \"lucide-react\"\n\nexport const labels = [\n  {\n    value: \"bug\",\n    label: \"Bug\",\n  },\n  {\n    value: \"feature\",\n    label: \"Feature\",\n  },\n  {\n    value: \"documentation\",\n    label: \"Documentation\",\n  },\n]\n\nexport const statuses = [\n  {\n    value: \"backlog\",\n    label: \"Backlog\",\n    icon: HelpCircle,\n  },\n  {\n    value: \"todo\",\n    label: \"Todo\",\n    icon: Circle,\n  },\n  {\n    value: \"in progress\",\n    label: \"In Progress\",\n    icon: Timer,\n  },\n  {\n    value: \"done\",\n    label: \"Done\",\n    icon: CheckCircle,\n  },\n  {\n    value: \"canceled\",\n    label: \"Canceled\",\n    icon: CircleOff,\n  },\n]\n\nexport const priorities = [\n  {\n    label: \"Low\",\n    value: \"low\",\n    icon: ArrowDown,\n  },\n  {\n    label: \"Medium\",\n    value: \"medium\",\n    icon: ArrowRight,\n  },\n  {\n    label: \"High\",\n    value: \"high\",\n    icon: ArrowUp,\n  },\n]\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/data/schema.ts",
    "content": "import { z } from \"zod\"\n\n// We're keeping a simple non-relational schema here.\n// IRL, you will have a schema for your data models.\nexport const taskSchema = z.object({\n  id: z.string(),\n  title: z.string(),\n  status: z.string(),\n  label: z.string(),\n  priority: z.string(),\n})\n\nexport type Task = z.infer<typeof taskSchema>\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/data/seed.ts",
    "content": "import fs from \"fs\"\nimport path from \"path\"\nimport { faker } from \"@faker-js/faker\"\n\nimport { labels, priorities, statuses } from \"./data\"\n\nconst tasks = Array.from({ length: 100 }, () => ({\n  id: `TASK-${faker.number.int({ min: 1000, max: 9999 })}`,\n  title: faker.hacker.phrase().replace(/^./, (letter) => letter.toUpperCase()),\n  status: faker.helpers.arrayElement(statuses).value,\n  label: faker.helpers.arrayElement(labels).value,\n  priority: faker.helpers.arrayElement(priorities).value,\n}))\n\nfs.writeFileSync(\n  path.join(__dirname, \"tasks.json\"),\n  JSON.stringify(tasks, null, 2)\n)\n\nconsole.log(\"✅ Tasks data generated.\")\n"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/data/tasks.json",
    "content": "[\n  {\n    \"id\": \"TASK-8782\",\n    \"title\": \"You can't compress the program without quantifying the open-source SSD pixel!\",\n    \"status\": \"in progress\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-7878\",\n    \"title\": \"Try to calculate the EXE feed, maybe it will index the multi-byte pixel!\",\n    \"status\": \"backlog\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-7839\",\n    \"title\": \"We need to bypass the neural TCP card!\",\n    \"status\": \"todo\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-5562\",\n    \"title\": \"The SAS interface is down, bypass the open-source pixel so we can back up the PNG bandwidth!\",\n    \"status\": \"backlog\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-8686\",\n    \"title\": \"I'll parse the wireless SSL protocol, that should driver the API panel!\",\n    \"status\": \"canceled\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-1280\",\n    \"title\": \"Use the digital TLS panel, then you can transmit the haptic system!\",\n    \"status\": \"done\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-7262\",\n    \"title\": \"The UTF8 application is down, parse the neural bandwidth so we can back up the PNG firewall!\",\n    \"status\": \"done\",\n    \"label\": \"feature\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-1138\",\n    \"title\": \"Generating the driver won't do anything, we need to quantify the 1080p SMTP bandwidth!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-7184\",\n    \"title\": \"We need to program the back-end THX pixel!\",\n    \"status\": \"todo\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-5160\",\n    \"title\": \"Calculating the bus won't do anything, we need to navigate the back-end JSON protocol!\",\n    \"status\": \"in progress\",\n    \"label\": \"documentation\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-5618\",\n    \"title\": \"Generating the driver won't do anything, we need to index the online SSL application!\",\n    \"status\": \"done\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-6699\",\n    \"title\": \"I'll transmit the wireless JBOD capacitor, that should hard drive the SSD feed!\",\n    \"status\": \"backlog\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-2858\",\n    \"title\": \"We need to override the online UDP bus!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-9864\",\n    \"title\": \"I'll reboot the 1080p FTP panel, that should matrix the HEX hard drive!\",\n    \"status\": \"done\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-8404\",\n    \"title\": \"We need to generate the virtual HEX alarm!\",\n    \"status\": \"in progress\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-5365\",\n    \"title\": \"Backing up the pixel won't do anything, we need to transmit the primary IB array!\",\n    \"status\": \"in progress\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-1780\",\n    \"title\": \"The CSS feed is down, index the bluetooth transmitter so we can compress the CLI protocol!\",\n    \"status\": \"todo\",\n    \"label\": \"documentation\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-6938\",\n    \"title\": \"Use the redundant SCSI application, then you can hack the optical alarm!\",\n    \"status\": \"todo\",\n    \"label\": \"documentation\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-9885\",\n    \"title\": \"We need to compress the auxiliary VGA driver!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-3216\",\n    \"title\": \"Transmitting the transmitter won't do anything, we need to compress the virtual HDD sensor!\",\n    \"status\": \"backlog\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-9285\",\n    \"title\": \"The IP monitor is down, copy the haptic alarm so we can generate the HTTP transmitter!\",\n    \"status\": \"todo\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-1024\",\n    \"title\": \"Overriding the microchip won't do anything, we need to transmit the digital OCR transmitter!\",\n    \"status\": \"in progress\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-7068\",\n    \"title\": \"You can't generate the capacitor without indexing the wireless HEX pixel!\",\n    \"status\": \"canceled\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-6502\",\n    \"title\": \"Navigating the microchip won't do anything, we need to bypass the back-end SQL bus!\",\n    \"status\": \"todo\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-5326\",\n    \"title\": \"We need to hack the redundant UTF8 transmitter!\",\n    \"status\": \"todo\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-6274\",\n    \"title\": \"Use the virtual PCI circuit, then you can parse the bluetooth alarm!\",\n    \"status\": \"canceled\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-1571\",\n    \"title\": \"I'll input the neural DRAM circuit, that should protocol the SMTP interface!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-9518\",\n    \"title\": \"Compressing the interface won't do anything, we need to compress the online SDD matrix!\",\n    \"status\": \"canceled\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-5581\",\n    \"title\": \"I'll synthesize the digital COM pixel, that should transmitter the UTF8 protocol!\",\n    \"status\": \"backlog\",\n    \"label\": \"documentation\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-2197\",\n    \"title\": \"Parsing the feed won't do anything, we need to copy the bluetooth DRAM bus!\",\n    \"status\": \"todo\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-8484\",\n    \"title\": \"We need to parse the solid state UDP firewall!\",\n    \"status\": \"in progress\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-9892\",\n    \"title\": \"If we back up the application, we can get to the UDP application through the multi-byte THX capacitor!\",\n    \"status\": \"done\",\n    \"label\": \"documentation\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-9616\",\n    \"title\": \"We need to synthesize the cross-platform ASCII pixel!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-9744\",\n    \"title\": \"Use the back-end IP card, then you can input the solid state hard drive!\",\n    \"status\": \"done\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-1376\",\n    \"title\": \"Generating the alarm won't do anything, we need to generate the mobile IP capacitor!\",\n    \"status\": \"backlog\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-7382\",\n    \"title\": \"If we back up the firewall, we can get to the RAM alarm through the primary UTF8 pixel!\",\n    \"status\": \"todo\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-2290\",\n    \"title\": \"I'll compress the virtual JSON panel, that should application the UTF8 bus!\",\n    \"status\": \"canceled\",\n    \"label\": \"documentation\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-1533\",\n    \"title\": \"You can't input the firewall without overriding the wireless TCP firewall!\",\n    \"status\": \"done\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-4920\",\n    \"title\": \"Bypassing the hard drive won't do anything, we need to input the bluetooth JSON program!\",\n    \"status\": \"in progress\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-5168\",\n    \"title\": \"If we synthesize the bus, we can get to the IP panel through the virtual TLS array!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-7103\",\n    \"title\": \"We need to parse the multi-byte EXE bandwidth!\",\n    \"status\": \"canceled\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-4314\",\n    \"title\": \"If we compress the program, we can get to the XML alarm through the multi-byte COM matrix!\",\n    \"status\": \"in progress\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-3415\",\n    \"title\": \"Use the cross-platform XML application, then you can quantify the solid state feed!\",\n    \"status\": \"todo\",\n    \"label\": \"feature\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-8339\",\n    \"title\": \"Try to calculate the DNS interface, maybe it will input the bluetooth capacitor!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-6995\",\n    \"title\": \"Try to hack the XSS bandwidth, maybe it will override the bluetooth matrix!\",\n    \"status\": \"todo\",\n    \"label\": \"feature\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-8053\",\n    \"title\": \"If we connect the program, we can get to the UTF8 matrix through the digital UDP protocol!\",\n    \"status\": \"todo\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-4336\",\n    \"title\": \"If we synthesize the microchip, we can get to the SAS sensor through the optical UDP program!\",\n    \"status\": \"todo\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-8790\",\n    \"title\": \"I'll back up the optical COM alarm, that should alarm the RSS capacitor!\",\n    \"status\": \"done\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-8980\",\n    \"title\": \"Try to navigate the SQL transmitter, maybe it will back up the virtual firewall!\",\n    \"status\": \"canceled\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-7342\",\n    \"title\": \"Use the neural CLI card, then you can parse the online port!\",\n    \"status\": \"backlog\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-5608\",\n    \"title\": \"I'll hack the haptic SSL program, that should bus the UDP transmitter!\",\n    \"status\": \"canceled\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-1606\",\n    \"title\": \"I'll generate the bluetooth PNG firewall, that should pixel the SSL driver!\",\n    \"status\": \"done\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-7872\",\n    \"title\": \"Transmitting the circuit won't do anything, we need to reboot the 1080p RSS monitor!\",\n    \"status\": \"canceled\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-4167\",\n    \"title\": \"Use the cross-platform SMS circuit, then you can synthesize the optical feed!\",\n    \"status\": \"canceled\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-9581\",\n    \"title\": \"You can't index the port without hacking the cross-platform XSS monitor!\",\n    \"status\": \"backlog\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-8806\",\n    \"title\": \"We need to bypass the back-end SSL panel!\",\n    \"status\": \"done\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-6542\",\n    \"title\": \"Try to quantify the RSS firewall, maybe it will quantify the open-source system!\",\n    \"status\": \"done\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-6806\",\n    \"title\": \"The VGA protocol is down, reboot the back-end matrix so we can parse the CSS panel!\",\n    \"status\": \"canceled\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-9549\",\n    \"title\": \"You can't bypass the bus without connecting the neural JBOD bus!\",\n    \"status\": \"todo\",\n    \"label\": \"feature\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-1075\",\n    \"title\": \"Backing up the driver won't do anything, we need to parse the redundant RAM pixel!\",\n    \"status\": \"done\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-1427\",\n    \"title\": \"Use the auxiliary PCI circuit, then you can calculate the cross-platform interface!\",\n    \"status\": \"done\",\n    \"label\": \"documentation\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-1907\",\n    \"title\": \"Hacking the circuit won't do anything, we need to back up the online DRAM system!\",\n    \"status\": \"todo\",\n    \"label\": \"documentation\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-4309\",\n    \"title\": \"If we generate the system, we can get to the TCP sensor through the optical GB pixel!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-3973\",\n    \"title\": \"I'll parse the back-end ADP array, that should bandwidth the RSS bandwidth!\",\n    \"status\": \"todo\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-7962\",\n    \"title\": \"Use the wireless RAM program, then you can hack the cross-platform feed!\",\n    \"status\": \"canceled\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-3360\",\n    \"title\": \"You can't quantify the program without synthesizing the neural OCR interface!\",\n    \"status\": \"done\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-9887\",\n    \"title\": \"Use the auxiliary ASCII sensor, then you can connect the solid state port!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-3649\",\n    \"title\": \"I'll input the virtual USB system, that should circuit the DNS monitor!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-3586\",\n    \"title\": \"If we quantify the circuit, we can get to the CLI feed through the mobile SMS hard drive!\",\n    \"status\": \"in progress\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-5150\",\n    \"title\": \"I'll hack the wireless XSS port, that should transmitter the IP interface!\",\n    \"status\": \"canceled\",\n    \"label\": \"feature\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-3652\",\n    \"title\": \"The SQL interface is down, override the optical bus so we can program the ASCII interface!\",\n    \"status\": \"backlog\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-6884\",\n    \"title\": \"Use the digital PCI circuit, then you can synthesize the multi-byte microchip!\",\n    \"status\": \"canceled\",\n    \"label\": \"feature\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-1591\",\n    \"title\": \"We need to connect the mobile XSS driver!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-3802\",\n    \"title\": \"Try to override the ASCII protocol, maybe it will parse the virtual matrix!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-7253\",\n    \"title\": \"Programming the capacitor won't do anything, we need to bypass the neural IB hard drive!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-9739\",\n    \"title\": \"We need to hack the multi-byte HDD bus!\",\n    \"status\": \"done\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-4424\",\n    \"title\": \"Try to hack the HEX alarm, maybe it will connect the optical pixel!\",\n    \"status\": \"in progress\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-3922\",\n    \"title\": \"You can't back up the capacitor without generating the wireless PCI program!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-4921\",\n    \"title\": \"I'll index the open-source IP feed, that should system the GB application!\",\n    \"status\": \"canceled\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-5814\",\n    \"title\": \"We need to calculate the 1080p AGP feed!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-2645\",\n    \"title\": \"Synthesizing the system won't do anything, we need to navigate the multi-byte HDD firewall!\",\n    \"status\": \"todo\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-4535\",\n    \"title\": \"Try to copy the JSON circuit, maybe it will connect the wireless feed!\",\n    \"status\": \"in progress\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-4463\",\n    \"title\": \"We need to copy the solid state AGP monitor!\",\n    \"status\": \"done\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-9745\",\n    \"title\": \"If we connect the protocol, we can get to the GB system through the bluetooth PCI microchip!\",\n    \"status\": \"canceled\",\n    \"label\": \"feature\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-2080\",\n    \"title\": \"If we input the bus, we can get to the RAM matrix through the auxiliary RAM card!\",\n    \"status\": \"todo\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-3838\",\n    \"title\": \"I'll bypass the online TCP application, that should panel the AGP system!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-1340\",\n    \"title\": \"We need to navigate the virtual PNG circuit!\",\n    \"status\": \"todo\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-6665\",\n    \"title\": \"If we parse the monitor, we can get to the SSD hard drive through the cross-platform AGP alarm!\",\n    \"status\": \"canceled\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-7585\",\n    \"title\": \"If we calculate the hard drive, we can get to the SSL program through the multi-byte CSS microchip!\",\n    \"status\": \"backlog\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-6319\",\n    \"title\": \"We need to copy the multi-byte SCSI program!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-4369\",\n    \"title\": \"Try to input the SCSI bus, maybe it will generate the 1080p pixel!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-9035\",\n    \"title\": \"We need to override the solid state PNG array!\",\n    \"status\": \"canceled\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-3970\",\n    \"title\": \"You can't index the transmitter without quantifying the haptic ASCII card!\",\n    \"status\": \"todo\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-4473\",\n    \"title\": \"You can't bypass the protocol without overriding the neural RSS program!\",\n    \"status\": \"todo\",\n    \"label\": \"documentation\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-4136\",\n    \"title\": \"You can't hack the hard drive without hacking the primary JSON program!\",\n    \"status\": \"canceled\",\n    \"label\": \"bug\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-3939\",\n    \"title\": \"Use the back-end SQL firewall, then you can connect the neural hard drive!\",\n    \"status\": \"done\",\n    \"label\": \"feature\",\n    \"priority\": \"low\"\n  },\n  {\n    \"id\": \"TASK-2007\",\n    \"title\": \"I'll input the back-end USB protocol, that should bandwidth the PCI system!\",\n    \"status\": \"backlog\",\n    \"label\": \"bug\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-7516\",\n    \"title\": \"Use the primary SQL program, then you can generate the auxiliary transmitter!\",\n    \"status\": \"done\",\n    \"label\": \"documentation\",\n    \"priority\": \"medium\"\n  },\n  {\n    \"id\": \"TASK-6906\",\n    \"title\": \"Try to back up the DRAM system, maybe it will reboot the online transmitter!\",\n    \"status\": \"done\",\n    \"label\": \"feature\",\n    \"priority\": \"high\"\n  },\n  {\n    \"id\": \"TASK-5207\",\n    \"title\": \"The SMS interface is down, copy the bluetooth bus so we can quantify the VGA card!\",\n    \"status\": \"in progress\",\n    \"label\": \"bug\",\n    \"priority\": \"low\"\n  }\n]"
  },
  {
    "path": "apps/v4/app/(app)/examples/tasks/page.tsx",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { type Metadata } from \"next\"\nimport Image from \"next/image\"\nimport { z } from \"zod\"\n\nimport { columns } from \"./components/columns\"\nimport { DataTable } from \"./components/data-table\"\nimport { UserNav } from \"./components/user-nav\"\nimport { taskSchema } from \"./data/schema\"\n\nexport const metadata: Metadata = {\n  title: \"Tasks\",\n  description: \"A task and issue tracker build using Tanstack Table.\",\n}\n\n// Simulate a database read for tasks.\nasync function getTasks() {\n  const data = await fs.readFile(\n    path.join(process.cwd(), \"app/(app)/examples/tasks/data/tasks.json\")\n  )\n\n  const tasks = JSON.parse(data.toString())\n\n  return z.array(taskSchema).parse(tasks)\n}\n\nexport default async function TaskPage() {\n  const tasks = await getTasks()\n\n  return (\n    <>\n      <div className=\"md:hidden\">\n        <Image\n          src=\"/examples/tasks-light.png\"\n          width={1280}\n          height={998}\n          alt=\"Playground\"\n          className=\"block dark:hidden\"\n        />\n        <Image\n          src=\"/examples/tasks-dark.png\"\n          width={1280}\n          height={998}\n          alt=\"Playground\"\n          className=\"hidden dark:block\"\n        />\n      </div>\n      <div className=\"hidden h-full flex-1 flex-col gap-8 p-8 md:flex\">\n        <div className=\"flex items-center justify-between gap-2\">\n          <div className=\"flex flex-col gap-1\">\n            <h2 className=\"text-2xl font-semibold tracking-tight\">\n              Welcome back!\n            </h2>\n            <p className=\"text-muted-foreground\">\n              Here&apos;s a list of your tasks for this month.\n            </p>\n          </div>\n          <div className=\"flex items-center gap-2\">\n            <UserNav />\n          </div>\n        </div>\n        <DataTable data={tasks} columns={columns} />\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/layout.tsx",
    "content": "import { SiteFooter } from \"@/components/site-footer\"\nimport { SiteHeader } from \"@/components/site-header\"\n\nexport default function AppLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <div\n      data-slot=\"layout\"\n      className=\"relative z-10 flex min-h-svh flex-col bg-background\"\n    >\n      <SiteHeader />\n      <main className=\"flex flex-1 flex-col\">{children}</main>\n      <SiteFooter />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/llm/[[...slug]]/route.ts",
    "content": "import { notFound } from \"next/navigation\"\nimport { NextResponse, type NextRequest } from \"next/server\"\n\nimport { processMdxForLLMs } from \"@/lib/llm\"\nimport { source } from \"@/lib/source\"\nimport { getActiveStyle, type Style } from \"@/registry/_legacy-styles\"\n\nexport const revalidate = false\n\nfunction getStyleFromSlug(slug: string[] | undefined, fallbackStyle: string) {\n  // Detect base from URL: /docs/components/base/... or /docs/components/radix/...\n  if (slug && slug[0] === \"components\" && slug[1]) {\n    if (slug[1] === \"base\") {\n      return \"base-nova\"\n    }\n    if (slug[1] === \"radix\") {\n      return \"new-york-v4\"\n    }\n  }\n  return fallbackStyle\n}\n\nexport async function GET(\n  _req: NextRequest,\n  { params }: { params: Promise<{ slug?: string[] }> }\n) {\n  const [{ slug }, activeStyle] = await Promise.all([params, getActiveStyle()])\n\n  const page = source.getPage(slug)\n\n  if (!page) {\n    notFound()\n  }\n\n  const effectiveStyle = getStyleFromSlug(slug, activeStyle.name)\n\n  const processedContent = processMdxForLLMs(\n    await page.data.getText(\"raw\"),\n    effectiveStyle as Style[\"name\"]\n  )\n\n  return new NextResponse(processedContent, {\n    headers: {\n      \"Content-Type\": \"text/markdown; charset=utf-8\",\n    },\n  })\n}\n\nexport function generateStaticParams() {\n  return source.generateParams()\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/themes/layout.tsx",
    "content": "import { type Metadata } from \"next\"\nimport Link from \"next/link\"\n\nimport { Announcement } from \"@/components/announcement\"\nimport {\n  PageActions,\n  PageHeader,\n  PageHeaderDescription,\n  PageHeaderHeading,\n} from \"@/components/page-header\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nconst title = \"Pick a Color. Make it yours.\"\nconst description =\n  \"Try our hand-picked themes. Copy and paste them into your project. New theme editor coming soon.\"\n\nexport const metadata: Metadata = {\n  title,\n  description,\n  openGraph: {\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    images: [\n      {\n        url: `/og?title=${encodeURIComponent(\n          title\n        )}&description=${encodeURIComponent(description)}`,\n      },\n    ],\n  },\n}\n\nexport default function ThemesLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <div>\n      <PageHeader>\n        <Announcement />\n        <PageHeaderHeading>{title}</PageHeaderHeading>\n        <PageHeaderDescription>{description}</PageHeaderDescription>\n        <PageActions>\n          <Button asChild size=\"sm\">\n            <a href=\"#themes\">Browse Themes</a>\n          </Button>\n          <Button asChild variant=\"ghost\" size=\"sm\">\n            <Link href=\"/docs/theming\">Documentation</Link>\n          </Button>\n        </PageActions>\n      </PageHeader>\n      {children}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(app)/themes/page.tsx",
    "content": "import { CardsDemo } from \"@/components/cards\"\nimport { ThemeCustomizer } from \"@/components/theme-customizer\"\n\nexport const dynamic = \"force-static\"\nexport const revalidate = false\n\nexport default function ThemesPage() {\n  return (\n    <>\n      <div id=\"themes\" className=\"container-wrapper scroll-mt-20\">\n        <div className=\"container flex items-center justify-between gap-8 px-6 py-4 md:px-8\">\n          <ThemeCustomizer />\n        </div>\n      </div>\n      <div className=\"container-wrapper flex flex-1 flex-col section-soft pb-6\">\n        <div className=\"container flex flex-1 flex-col theme-container\">\n          <CardsDemo />\n        </div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/accent-picker.tsx",
    "content": "\"use client\"\n\nimport { MENU_ACCENTS, type MenuAccentValue } from \"@/registry/config\"\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function MenuAccentPicker({\n  isMobile,\n  anchorRef,\n}: {\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const currentAccent = MENU_ACCENTS.find(\n    (accent) => accent.value === params.menuAccent\n  )\n\n  return (\n    <div className=\"group/picker relative pr-3 md:pr-0\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Menu Accent</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {currentAccent?.label}\n            </div>\n          </div>\n          <div className=\"pointer-events-none absolute top-1/2 right-4 flex size-4 -translate-y-1/2 items-center justify-center text-base text-foreground select-none md:right-2.5\">\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              width=\"128\"\n              height=\"128\"\n              viewBox=\"0 0 24 24\"\n              fill=\"none\"\n              className=\"size-4 text-foreground\"\n            >\n              <path\n                d=\"M19 12.1294L12.9388 18.207C11.1557 19.9949 10.2641 20.8889 9.16993 20.9877C8.98904 21.0041 8.80705 21.0041 8.62616 20.9877C7.53195 20.8889 6.64039 19.9949 4.85726 18.207L2.83687 16.1811C1.72104 15.0622 1.72104 13.2482 2.83687 12.1294M19 12.1294L10.9184 4.02587M19 12.1294H2.83687M10.9184 4.02587L2.83687 12.1294M10.9184 4.02587L8.89805 2\"\n                stroke=\"currentColor\"\n                strokeWidth=\"2\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                data-accent={currentAccent?.value}\n                className=\"fill-muted-foreground/30 data-[accent=bold]:fill-foreground\"\n              ></path>\n              <path\n                d=\"M22 20C22 21.1046 21.1046 22 20 22C18.8954 22 18 21.1046 18 20C18 18.8954 20 17 20 17C20 17 22 18.8954 22 20Z\"\n                stroke=\"currentColor\"\n                strokeWidth=\"2\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                data-accent={currentAccent?.value}\n                className=\"fill-muted-foreground/30 data-[accent=bold]:fill-foreground\"\n              ></path>\n            </svg>\n          </div>\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n        >\n          <PickerRadioGroup\n            value={currentAccent?.value}\n            onValueChange={(value) => {\n              setParams({ menuAccent: value as MenuAccentValue })\n            }}\n          >\n            <PickerGroup>\n              {MENU_ACCENTS.map((accent) => (\n                <PickerRadioItem\n                  key={accent.value}\n                  value={accent.value}\n                  closeOnClick={isMobile}\n                  disabled={\n                    accent.value === \"bold\" &&\n                    (params.menuColor === \"default-translucent\" ||\n                      params.menuColor === \"inverted-translucent\")\n                  }\n                >\n                  {accent.label}\n                </PickerRadioItem>\n              ))}\n            </PickerGroup>\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param=\"menuAccent\"\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/action-menu.tsx",
    "content": "\"use client\"\n\nimport Script from \"next/script\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/examples/base/ui/command\"\nimport { type RegistryItem } from \"shadcn/schema\"\n\nimport { useActionMenu } from \"@/app/(create)/hooks/use-action-menu\"\n\nexport const CMD_K_FORWARD_TYPE = \"cmd-k-forward\"\n\nexport function ActionMenu({\n  itemsByBase,\n}: {\n  itemsByBase: Record<string, Pick<RegistryItem, \"name\" | \"title\" | \"type\">[]>\n}) {\n  const {\n    activeRegistryName,\n    getCommandValue,\n    groups,\n    handleSelect,\n    open,\n    setOpen,\n  } = useActionMenu(itemsByBase)\n\n  return (\n    <CommandDialog open={open} onOpenChange={setOpen} className=\"animate-none!\">\n      <Command loop>\n        <CommandInput placeholder=\"Search\" />\n        <CommandList>\n          <CommandEmpty>No items found.</CommandEmpty>\n          <CommandGroup>\n            {groups.map((group) =>\n              group.items.map((item) => (\n                <CommandItem\n                  key={item.id}\n                  value={getCommandValue(item)}\n                  data-checked={activeRegistryName === item.registryName}\n                  className=\"px-2\"\n                  onSelect={() => {\n                    handleSelect(item.registryName)\n                  }}\n                >\n                  {item.label}\n                </CommandItem>\n              ))\n            )}\n          </CommandGroup>\n        </CommandList>\n      </Command>\n    </CommandDialog>\n  )\n}\n\nexport function ActionMenuScript() {\n  return (\n    <Script\n      id=\"design-system-listener\"\n      strategy=\"beforeInteractive\"\n      dangerouslySetInnerHTML={{\n        __html: `\n            (function() {\n              // Forward Cmd/Ctrl + K (and P) to parent\n              document.addEventListener('keydown', function(e) {\n                if ((e.key === 'k' || e.key === 'p') && (e.metaKey || e.ctrlKey)) {\n                  e.preventDefault();\n                  if (window.parent && window.parent !== window) {\n                    window.parent.postMessage({\n                      type: '${CMD_K_FORWARD_TYPE}',\n                      key: e.key\n                    }, '*');\n                  }\n                }\n              });\n\n            })();\n          `,\n      }}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/base-color-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { useMounted } from \"@/hooks/use-mounted\"\nimport { BASE_COLORS, type BaseColorName } from \"@/registry/config\"\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function BaseColorPicker({\n  isMobile,\n  anchorRef,\n}: {\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const mounted = useMounted()\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const currentBaseColor = React.useMemo(\n    () => BASE_COLORS.find((baseColor) => baseColor.name === params.baseColor),\n    [params.baseColor]\n  )\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Base Color</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {currentBaseColor?.title}\n            </div>\n          </div>\n          {mounted && (\n            <div\n              style={\n                {\n                  \"--color\":\n                    currentBaseColor?.cssVars?.dark?.[\"muted-foreground\"],\n                } as React.CSSProperties\n              }\n              className=\"pointer-events-none absolute top-1/2 right-4 size-4 -translate-y-1/2 rounded-full bg-(--color) select-none md:right-2.5\"\n            />\n          )}\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n        >\n          <PickerRadioGroup\n            value={currentBaseColor?.name}\n            onValueChange={(value) => {\n              setParams({ baseColor: value as BaseColorName })\n            }}\n          >\n            <PickerGroup>\n              {BASE_COLORS.map((baseColor) => (\n                <PickerRadioItem\n                  key={baseColor.name}\n                  value={baseColor.name}\n                  closeOnClick={isMobile}\n                >\n                  {baseColor.title}\n                </PickerRadioItem>\n              ))}\n            </PickerGroup>\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param=\"baseColor\"\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/base-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { BASES } from \"@/registry/config\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function BasePicker({\n  isMobile,\n  anchorRef,\n}: {\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const currentBase = React.useMemo(\n    () => BASES.find((base) => base.name === params.base),\n    [params.base]\n  )\n\n  const handleValueChange = React.useCallback(\n    (value: string) => {\n      const newBase = BASES.find((base) => base.name === value)\n      if (!newBase) {\n        return\n      }\n\n      setParams({ base: newBase.name })\n    },\n    [setParams]\n  )\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Base</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {currentBase?.title}\n            </div>\n          </div>\n          {currentBase?.meta?.logo && (\n            <div\n              className=\"pointer-events-none absolute top-1/2 right-4 size-4 -translate-y-1/2 text-foreground select-none md:right-2.5 *:[svg]:size-4 *:[svg]:text-foreground!\"\n              dangerouslySetInnerHTML={{\n                __html: currentBase.meta.logo,\n              }}\n            />\n          )}\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n        >\n          <PickerRadioGroup\n            value={currentBase?.name}\n            onValueChange={handleValueChange}\n          >\n            <PickerGroup>\n              {BASES.map((base) => (\n                <PickerRadioItem\n                  key={base.name}\n                  value={base.name}\n                  closeOnClick={isMobile}\n                >\n                  {base.title}\n                </PickerRadioItem>\n              ))}\n            </PickerGroup>\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/chart-color-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { useMounted } from \"@/hooks/use-mounted\"\nimport {\n  BASE_COLORS,\n  getThemesForBaseColor,\n  type ChartColorName,\n} from \"@/registry/config\"\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerSeparator,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function ChartColorPicker({\n  isMobile,\n  anchorRef,\n}: {\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const mounted = useMounted()\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const availableChartColors = React.useMemo(\n    () => getThemesForBaseColor(params.baseColor),\n    [params.baseColor]\n  )\n\n  const currentChartColor = React.useMemo(\n    () =>\n      availableChartColors.find((theme) => theme.name === params.chartColor),\n    [availableChartColors, params.chartColor]\n  )\n\n  const currentChartColorIsBaseColor = React.useMemo(\n    () => BASE_COLORS.find((baseColor) => baseColor.name === params.chartColor),\n    [params.chartColor]\n  )\n\n  React.useEffect(() => {\n    if (!currentChartColor && availableChartColors.length > 0) {\n      setParams({ chartColor: availableChartColors[0].name })\n    }\n  }, [currentChartColor, availableChartColors, setParams])\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Chart Color</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {currentChartColor?.title}\n            </div>\n          </div>\n          {mounted && (\n            <div\n              style={\n                {\n                  \"--color\":\n                    currentChartColor?.cssVars?.dark?.[\n                      currentChartColorIsBaseColor\n                        ? \"muted-foreground\"\n                        : \"primary\"\n                    ],\n                } as React.CSSProperties\n              }\n              className=\"pointer-events-none absolute top-1/2 right-4 size-4 -translate-y-1/2 rounded-full bg-(--color) select-none md:right-2.5\"\n            />\n          )}\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n          className=\"max-h-92\"\n        >\n          <PickerRadioGroup\n            value={currentChartColor?.name}\n            onValueChange={(value) => {\n              setParams({ chartColor: value as ChartColorName })\n            }}\n          >\n            <PickerGroup>\n              {availableChartColors\n                .filter((theme) =>\n                  BASE_COLORS.find((baseColor) => baseColor.name === theme.name)\n                )\n                .map((theme) => (\n                  <PickerRadioItem\n                    key={theme.name}\n                    value={theme.name}\n                    closeOnClick={isMobile}\n                  >\n                    {theme.title}\n                  </PickerRadioItem>\n                ))}\n            </PickerGroup>\n            <PickerSeparator />\n            <PickerGroup>\n              {availableChartColors\n                .filter(\n                  (theme) =>\n                    !BASE_COLORS.find(\n                      (baseColor) => baseColor.name === theme.name\n                    )\n                )\n                .map((theme) => (\n                  <PickerRadioItem\n                    key={theme.name}\n                    value={theme.name}\n                    closeOnClick={isMobile}\n                  >\n                    {theme.title}\n                  </PickerRadioItem>\n                ))}\n            </PickerGroup>\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param=\"chartColor\"\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/copy-preset.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\n\nimport { cn } from \"@/lib/utils\"\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { usePresetCode } from \"@/app/(create)/hooks/use-design-system\"\n\nexport function CopyPreset({ className }: React.ComponentProps<typeof Button>) {\n  const presetCode = usePresetCode()\n  const [hasCopied, setHasCopied] = React.useState(false)\n\n  React.useEffect(() => {\n    if (hasCopied) {\n      const timer = setTimeout(() => setHasCopied(false), 2000)\n      return () => clearTimeout(timer)\n    }\n  }, [hasCopied])\n\n  const handleCopy = React.useCallback(() => {\n    copyToClipboardWithMeta(`--preset ${presetCode}`, {\n      name: \"copy_preset_command\",\n      properties: {\n        preset: presetCode,\n      },\n    })\n    setHasCopied(true)\n  }, [presetCode])\n\n  return (\n    <Button\n      variant=\"outline\"\n      onClick={handleCopy}\n      className={cn(\n        \"touch-manipulation bg-transparent! px-2! py-0! text-sm! transition-none select-none hover:bg-muted! pointer-coarse:h-10!\",\n        className\n      )}\n    >\n      <span>{hasCopied ? \"Copied\" : `--preset ${presetCode}`}</span>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/customizer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n} from \"@/examples/base/ui/card\"\nimport { FieldGroup, FieldSeparator } from \"@/examples/base/ui/field\"\nimport { type RegistryItem } from \"shadcn/schema\"\n\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { getThemesForBaseColor, STYLES } from \"@/registry/config\"\nimport { MenuAccentPicker } from \"@/app/(create)/components/accent-picker\"\nimport { ActionMenu } from \"@/app/(create)/components/action-menu\"\nimport { BaseColorPicker } from \"@/app/(create)/components/base-color-picker\"\nimport { BasePicker } from \"@/app/(create)/components/base-picker\"\nimport { ChartColorPicker } from \"@/app/(create)/components/chart-color-picker\"\nimport { CopyPreset } from \"@/app/(create)/components/copy-preset\"\nimport { FontPicker } from \"@/app/(create)/components/font-picker\"\nimport { IconLibraryPicker } from \"@/app/(create)/components/icon-library-picker\"\nimport { MainMenu } from \"@/app/(create)/components/main-menu\"\nimport { MenuColorPicker } from \"@/app/(create)/components/menu-picker\"\nimport { RadiusPicker } from \"@/app/(create)/components/radius-picker\"\nimport { RandomButton } from \"@/app/(create)/components/random-button\"\nimport { ResetDialog } from \"@/app/(create)/components/reset-button\"\nimport { StylePicker } from \"@/app/(create)/components/style-picker\"\nimport { ThemePicker } from \"@/app/(create)/components/theme-picker\"\nimport { V0Button } from \"@/app/(create)/components/v0-button\"\nimport { FONT_HEADING_OPTIONS, FONTS } from \"@/app/(create)/lib/fonts\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function Customizer({\n  itemsByBase,\n}: {\n  itemsByBase: Record<string, Pick<RegistryItem, \"name\" | \"title\" | \"type\">[]>\n}) {\n  const [params] = useDesignSystemSearchParams()\n  const isMobile = useIsMobile()\n  const anchorRef = React.useRef<HTMLDivElement | null>(null)\n\n  const availableThemes = React.useMemo(\n    () => getThemesForBaseColor(params.baseColor),\n    [params.baseColor]\n  )\n\n  return (\n    <Card\n      className=\"dark top-24 right-12 isolate z-10 max-h-full min-h-0 w-full self-start rounded-2xl bg-card/90 shadow-xl backdrop-blur-xl md:w-(--customizer-width)\"\n      ref={anchorRef}\n      size=\"sm\"\n    >\n      <CardHeader className=\"hidden items-center justify-between gap-2 border-b group-data-reversed/layout:flex-row-reverse md:flex\">\n        <MainMenu />\n      </CardHeader>\n      <CardContent className=\"no-scrollbar min-h-0 flex-1 overflow-x-auto overflow-y-hidden md:overflow-y-auto\">\n        <FieldGroup className=\"flex-row gap-2.5 py-px **:data-[slot=field-separator]:-mx-4 **:data-[slot=field-separator]:w-auto md:flex-col md:gap-3.25\">\n          {isMobile && <BasePicker isMobile={isMobile} anchorRef={anchorRef} />}\n          <StylePicker\n            styles={STYLES}\n            isMobile={isMobile}\n            anchorRef={anchorRef}\n          />\n          <FieldSeparator className=\"hidden md:block\" />\n          <BaseColorPicker isMobile={isMobile} anchorRef={anchorRef} />\n          <ThemePicker\n            themes={availableThemes}\n            isMobile={isMobile}\n            anchorRef={anchorRef}\n          />\n          <ChartColorPicker isMobile={isMobile} anchorRef={anchorRef} />\n          <FieldSeparator className=\"hidden md:block\" />\n          <FontPicker\n            label=\"Heading\"\n            param=\"fontHeading\"\n            fonts={FONT_HEADING_OPTIONS}\n            isMobile={isMobile}\n            anchorRef={anchorRef}\n          />\n          <FontPicker\n            label=\"Font\"\n            param=\"font\"\n            fonts={FONTS}\n            isMobile={isMobile}\n            anchorRef={anchorRef}\n          />\n          <FieldSeparator className=\"hidden md:block\" />\n          <IconLibraryPicker isMobile={isMobile} anchorRef={anchorRef} />\n          <RadiusPicker isMobile={isMobile} anchorRef={anchorRef} />\n          <FieldSeparator className=\"hidden md:block\" />\n          <MenuColorPicker isMobile={isMobile} anchorRef={anchorRef} />\n          <MenuAccentPicker isMobile={isMobile} anchorRef={anchorRef} />\n        </FieldGroup>\n      </CardContent>\n      <CardFooter className=\"flex min-w-0 gap-2 md:flex-col md:**:[button,a]:w-full\">\n        <CopyPreset className=\"flex-1 md:flex-none\" />\n        <RandomButton className=\"flex-1 md:flex-none\" />\n        <ActionMenu itemsByBase={itemsByBase} />\n        <ResetDialog />\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/design-system-provider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  buildRegistryTheme,\n  DEFAULT_CONFIG,\n  type DesignSystemConfig,\n} from \"@/registry/config\"\nimport { useIframeMessageListener } from \"@/app/(create)/hooks/use-iframe-sync\"\nimport { FONTS } from \"@/app/(create)/lib/fonts\"\nimport {\n  useDesignSystemSearchParams,\n  type DesignSystemSearchParams,\n} from \"@/app/(create)/lib/search-params\"\n\nconst THEME_STYLE_ELEMENT_ID = \"design-system-theme-vars\"\nconst MANAGED_BODY_CLASS_PREFIXES = [\"style-\", \"base-color-\"] as const\n\ntype RegistryThemeCssVars = NonNullable<\n  ReturnType<typeof buildRegistryTheme>[\"cssVars\"]\n>\n\nfunction removeManagedBodyClasses(body: Element) {\n  for (const className of Array.from(body.classList)) {\n    if (\n      MANAGED_BODY_CLASS_PREFIXES.some((prefix) => className.startsWith(prefix))\n    ) {\n      body.classList.remove(className)\n    }\n  }\n}\n\nfunction buildCssRule(selector: string, cssVars?: Record<string, string>) {\n  const declarations = Object.entries(cssVars ?? {})\n    .filter(([, value]) => Boolean(value))\n    .map(([key, value]) => `  --${key}: ${value};`)\n    .join(\"\\n\")\n\n  if (!declarations) {\n    return `${selector} {}\\n`\n  }\n\n  return `${selector} {\\n${declarations}\\n}\\n`\n}\n\nfunction buildThemeCssText(cssVars: RegistryThemeCssVars) {\n  return [\n    buildCssRule(\":root\", {\n      ...(cssVars.theme ?? {}),\n      ...(cssVars.light ?? {}),\n    }),\n    buildCssRule(\".dark\", cssVars.dark),\n  ].join(\"\\n\")\n}\n\nexport function DesignSystemProvider({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  const [searchParams, setSearchParams] = useDesignSystemSearchParams({\n    shallow: true, // No need to go through the server…\n    history: \"replace\", // …or push updates into the iframe history.\n  })\n  const [isReady, setIsReady] = React.useState(false)\n  const {\n    style,\n    theme,\n    font,\n    fontHeading,\n    baseColor,\n    chartColor,\n    menuAccent,\n    menuColor,\n    radius,\n  } = searchParams\n  const effectiveRadius = style === \"lyra\" ? \"none\" : radius\n  const selectedFont = React.useMemo(\n    () => FONTS.find((fontOption) => fontOption.value === font),\n    [font]\n  )\n  const selectedHeadingFont = React.useMemo(() => {\n    if (fontHeading === \"inherit\" || fontHeading === font) {\n      return selectedFont\n    }\n\n    return FONTS.find((fontOption) => fontOption.value === fontHeading)\n  }, [font, fontHeading, selectedFont])\n  const initialFontSansRef = React.useRef<string | null>(null)\n  const initialFontHeadingRef = React.useRef<string | null>(null)\n\n  React.useEffect(() => {\n    initialFontSansRef.current =\n      document.documentElement.style.getPropertyValue(\"--font-sans\")\n    initialFontHeadingRef.current =\n      document.documentElement.style.getPropertyValue(\"--font-heading\")\n\n    return () => {\n      removeManagedBodyClasses(document.body)\n      document.getElementById(THEME_STYLE_ELEMENT_ID)?.remove()\n\n      if (initialFontSansRef.current) {\n        document.documentElement.style.setProperty(\n          \"--font-sans\",\n          initialFontSansRef.current\n        )\n      } else {\n        document.documentElement.style.removeProperty(\"--font-sans\")\n      }\n\n      if (initialFontHeadingRef.current) {\n        document.documentElement.style.setProperty(\n          \"--font-heading\",\n          initialFontHeadingRef.current\n        )\n      } else {\n        document.documentElement.style.removeProperty(\"--font-heading\")\n      }\n    }\n  }, [])\n\n  const handleDesignSystemMessage = React.useCallback(\n    (nextParams: DesignSystemSearchParams) => {\n      setSearchParams(nextParams)\n    },\n    [setSearchParams]\n  )\n\n  useIframeMessageListener(\"design-system-params\", handleDesignSystemMessage)\n\n  React.useEffect(() => {\n    if (style === \"lyra\" && radius !== \"none\") {\n      setSearchParams({ radius: \"none\" })\n    }\n  }, [style, radius, setSearchParams])\n\n  // Use useLayoutEffect for synchronous style updates to prevent flash.\n  React.useLayoutEffect(() => {\n    if (!style || !theme || !font || !baseColor) {\n      return\n    }\n\n    const body = document.body\n\n    // Iterate over a snapshot so removals do not affect traversal.\n    removeManagedBodyClasses(body)\n    body.classList.add(`style-${style}`, `base-color-${baseColor}`)\n\n    // Update font.\n    // Always set --font-sans for the preview so the selected font is visible.\n    // The font type (sans/serif/mono) is metadata for the CLI updater.\n    if (selectedFont) {\n      document.documentElement.style.setProperty(\n        \"--font-sans\",\n        selectedFont.font.style.fontFamily\n      )\n    }\n\n    if (selectedHeadingFont) {\n      document.documentElement.style.setProperty(\n        \"--font-heading\",\n        selectedHeadingFont.font.style.fontFamily\n      )\n    }\n\n    setIsReady(true)\n  }, [\n    style,\n    theme,\n    font,\n    fontHeading,\n    baseColor,\n    selectedFont,\n    selectedHeadingFont,\n  ])\n\n  const registryTheme = React.useMemo(() => {\n    if (!baseColor || !theme || !menuAccent || !effectiveRadius) {\n      return null\n    }\n\n    const config: DesignSystemConfig = {\n      ...DEFAULT_CONFIG,\n      baseColor,\n      theme,\n      chartColor,\n      menuAccent,\n      radius: effectiveRadius,\n    }\n\n    return buildRegistryTheme(config)\n  }, [baseColor, theme, chartColor, menuAccent, effectiveRadius])\n\n  // Use useLayoutEffect for synchronous CSS var updates.\n  React.useLayoutEffect(() => {\n    if (!registryTheme || !registryTheme.cssVars) {\n      return\n    }\n\n    let styleElement = document.getElementById(\n      THEME_STYLE_ELEMENT_ID\n    ) as HTMLStyleElement | null\n\n    if (!styleElement) {\n      styleElement = document.createElement(\"style\")\n      styleElement.id = THEME_STYLE_ELEMENT_ID\n      document.head.appendChild(styleElement)\n    }\n\n    styleElement.textContent = buildThemeCssText(registryTheme.cssVars)\n  }, [registryTheme])\n\n  // Handle menu color inversion by adding/removing dark class to elements with cn-menu-target.\n  // useLayoutEffect to apply classes synchronously before paint, avoiding flash.\n  React.useLayoutEffect(() => {\n    if (!menuColor) {\n      return\n    }\n\n    const isInvertedMenu =\n      menuColor === \"inverted\" || menuColor === \"inverted-translucent\"\n    const isTranslucentMenu =\n      menuColor === \"default-translucent\" ||\n      menuColor === \"inverted-translucent\"\n    let frameId = 0\n\n    const updateMenuElements = () => {\n      const allElements = document.querySelectorAll<HTMLElement>(\n        \".cn-menu-target, [data-menu-translucent]\"\n      )\n\n      if (allElements.length === 0) {\n        return\n      }\n\n      // Disable transitions while toggling classes.\n      allElements.forEach((element) => {\n        element.style.transition = \"none\"\n      })\n\n      allElements.forEach((element) => {\n        if (element.classList.contains(\"cn-menu-target\")) {\n          if (isInvertedMenu) {\n            element.classList.add(\"dark\")\n          } else {\n            element.classList.remove(\"dark\")\n          }\n        }\n\n        // When translucent is enabled, move from data-attr to class so styles apply.\n        // When disabled, move back to a data-attr so the element stays queryable\n        // for future toggles without losing its identity as a menu element.\n        if (isTranslucentMenu) {\n          element.classList.add(\"cn-menu-translucent\")\n          element.removeAttribute(\"data-menu-translucent\")\n        } else if (element.classList.contains(\"cn-menu-translucent\")) {\n          element.classList.remove(\"cn-menu-translucent\")\n          element.setAttribute(\"data-menu-translucent\", \"\")\n        }\n      })\n\n      // Force a reflow, then re-enable transitions.\n      void document.body.offsetHeight\n      allElements.forEach((element) => {\n        element.style.transition = \"\"\n      })\n    }\n\n    const scheduleMenuUpdate = () => {\n      if (frameId) {\n        return\n      }\n\n      frameId = window.requestAnimationFrame(() => {\n        frameId = 0\n        updateMenuElements()\n      })\n    }\n\n    // Update existing menu elements.\n    updateMenuElements()\n\n    // Watch for new menu elements being added to the DOM.\n    const observer = new MutationObserver(() => {\n      scheduleMenuUpdate()\n    })\n\n    observer.observe(document.body, {\n      childList: true,\n      subtree: true,\n    })\n\n    return () => {\n      observer.disconnect()\n      if (frameId) {\n        window.cancelAnimationFrame(frameId)\n      }\n    }\n  }, [menuColor])\n\n  if (!isReady) {\n    return null\n  }\n\n  return <>{children}</>\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/font-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerLabel,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerSeparator,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { FONTS } from \"@/app/(create)/lib/fonts\"\nimport {\n  useDesignSystemSearchParams,\n  type DesignSystemSearchParams,\n} from \"@/app/(create)/lib/search-params\"\n\ntype FontPickerOption = {\n  name: string\n  value: string\n  type: string\n  font: {\n    style: {\n      fontFamily: string\n    }\n  } | null\n}\n\nexport function FontPicker({\n  label,\n  param,\n  fonts,\n  isMobile,\n  anchorRef,\n}: {\n  label: string\n  param: \"font\" | \"fontHeading\"\n  fonts: readonly FontPickerOption[]\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n  const currentValue = param === \"font\" ? params.font : params.fontHeading\n  const handleFontChange = React.useCallback(\n    (value: string) => {\n      setParams({\n        [param]: value,\n      } as Partial<DesignSystemSearchParams>)\n    },\n    [param, setParams]\n  )\n\n  const currentFont = React.useMemo(\n    () => fonts.find((font) => font.value === currentValue),\n    [fonts, currentValue]\n  )\n  const currentBodyFont = React.useMemo(\n    () => FONTS.find((font) => font.value === params.font),\n    [params.font]\n  )\n  const inheritsBodyFont = param === \"fontHeading\" && currentValue === \"inherit\"\n  const displayFontName = inheritsBodyFont\n    ? currentBodyFont?.name\n    : currentFont?.name\n  const inheritFontLabel = currentBodyFont ? currentBodyFont.name : \"Body font\"\n  const groupedFonts = React.useMemo(() => {\n    const pickerFonts =\n      param === \"fontHeading\"\n        ? fonts.filter((font) => font.value !== \"inherit\")\n        : fonts\n    const groups = new Map<string, FontPickerOption[]>()\n\n    for (const font of pickerFonts) {\n      const existing = groups.get(font.type)\n      if (existing) {\n        existing.push(font)\n        continue\n      }\n\n      groups.set(font.type, [font])\n    }\n\n    return Array.from(groups.entries()).map(([type, items]) => ({\n      type,\n      label: `${type.charAt(0).toUpperCase()}${type.slice(1)}`,\n      items,\n    }))\n  }, [fonts, param])\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">{label}</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {displayFontName}\n            </div>\n          </div>\n          <div\n            className=\"pointer-events-none absolute top-1/2 right-4 flex size-4 -translate-y-1/2 items-center justify-center text-base text-foreground select-none md:right-2.5\"\n            style={{\n              fontFamily:\n                currentFont?.font?.style.fontFamily ??\n                currentBodyFont?.font.style.fontFamily,\n            }}\n          >\n            Aa\n          </div>\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n          className=\"max-h-96\"\n        >\n          <PickerRadioGroup\n            value={currentValue}\n            onValueChange={handleFontChange}\n          >\n            {param === \"fontHeading\" ? (\n              <>\n                <PickerGroup>\n                  <PickerRadioItem value=\"inherit\" closeOnClick={isMobile}>\n                    {inheritFontLabel}\n                  </PickerRadioItem>\n                </PickerGroup>\n                <PickerSeparator />\n              </>\n            ) : null}\n            {groupedFonts.map((group) => (\n              <PickerGroup key={group.type}>\n                <PickerLabel>{group.label}</PickerLabel>\n                {group.items.map((font) => (\n                  <PickerRadioItem\n                    key={font.value}\n                    value={font.value}\n                    closeOnClick={isMobile}\n                  >\n                    {font.name}\n                  </PickerRadioItem>\n                ))}\n              </PickerGroup>\n            ))}\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param={param}\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/history-buttons.tsx",
    "content": "\"use client\"\n\nimport Script from \"next/script\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Redo02Icon, Undo02Icon } from \"@hugeicons/core-free-icons\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\n\nimport { useHistory } from \"@/app/(create)/hooks/use-history\"\n\nexport const UNDO_FORWARD_TYPE = \"undo-forward\"\nexport const REDO_FORWARD_TYPE = \"redo-forward\"\n\nexport function HistoryButtons() {\n  const { canGoBack, canGoForward, goBack, goForward } = useHistory()\n\n  return (\n    <div className=\"flex items-center gap-1\">\n      <Button\n        variant=\"ghost\"\n        size=\"icon\"\n        title=\"Undo\"\n        disabled={!canGoBack}\n        onClick={goBack}\n      >\n        <HugeiconsIcon icon={Undo02Icon} />\n        <span className=\"sr-only\">Undo</span>\n      </Button>\n      <Button\n        variant=\"ghost\"\n        size=\"icon\"\n        title=\"Redo\"\n        disabled={!canGoForward}\n        onClick={goForward}\n      >\n        <HugeiconsIcon icon={Redo02Icon} />\n        <span className=\"sr-only\">Redo</span>\n      </Button>\n    </div>\n  )\n}\n\nexport function HistoryScript() {\n  return (\n    <Script\n      id=\"history-listener\"\n      strategy=\"beforeInteractive\"\n      dangerouslySetInnerHTML={{\n        __html: `\n            (function() {\n              document.addEventListener('keydown', function(e) {\n                if (!e.metaKey && !e.ctrlKey) return;\n                if (\n                  (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n                  e.target instanceof HTMLInputElement ||\n                  e.target instanceof HTMLTextAreaElement ||\n                  e.target instanceof HTMLSelectElement\n                ) {\n                  return;\n                }\n                var key = e.key.toLowerCase();\n                if ((key === 'z' && e.shiftKey) || (key === 'y' && e.ctrlKey)) {\n                  e.preventDefault();\n                  if (window.parent && window.parent !== window) {\n                    window.parent.postMessage({ type: '${REDO_FORWARD_TYPE}' }, '*');\n                  }\n                } else if (key === 'z') {\n                  e.preventDefault();\n                  if (window.parent && window.parent !== window) {\n                    window.parent.postMessage({ type: '${UNDO_FORWARD_TYPE}' }, '*');\n                  }\n                }\n              });\n            })();\n          `,\n      }}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/icon-library-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { iconLibraries, type IconLibraryName } from \"@/registry/config\"\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nconst logos = {\n  lucide: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path\n        stroke=\"currentColor\"\n        d=\"M14 12a4 4 0 0 0-8 0 8 8 0 1 0 16 0 11.97 11.97 0 0 0-4-8.944\"\n      />\n      <path\n        stroke=\"currentColor\"\n        d=\"M10 12a4 4 0 0 0 8 0 8 8 0 1 0-16 0 11.97 11.97 0 0 0 4.063 9\"\n      />\n    </svg>\n  ),\n  tabler: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"32\"\n      height=\"32\"\n      fill=\"none\"\n      viewBox=\"0 0 32 32\"\n    >\n      <path\n        fill=\"currentColor\"\n        d=\"M31.288 7.107A8.83 8.83 0 0 0 24.893.712a55.9 55.9 0 0 0-17.786 0A8.83 8.83 0 0 0 .712 7.107a55.9 55.9 0 0 0 0 17.786 8.83 8.83 0 0 0 6.395 6.395c5.895.95 11.89.95 17.786 0a8.83 8.83 0 0 0 6.395-6.395c.95-5.895.95-11.89 0-17.786\"\n      />\n      <path\n        fill=\"#fff\"\n        d=\"m17.884 9.076 1.5-2.488 6.97 6.977-2.492 1.494zm-7.96 3.127 7.814-.909 3.91 3.66-.974 7.287-9.582 2.159a3.06 3.06 0 0 1-2.17-.329l5.244-4.897c.91.407 2.003.142 2.587-.626.584-.77.488-1.818-.226-2.484s-1.84-.755-2.664-.21c-.823.543-1.107 1.562-.67 2.412l-5.245 4.89a2.53 2.53 0 0 1-.339-2.017z\"\n      />\n    </svg>\n  ),\n  hugeicons: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"128\"\n      height=\"128\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M2 9.5H22\" stroke=\"currentColor\"></path>\n      <path\n        d=\"M20.5 9.5H3.5L4.23353 15.3682C4.59849 18.2879 4.78097 19.7477 5.77343 20.6239C6.76589 21.5 8.23708 21.5 11.1795 21.5H12.8205C15.7629 21.5 17.2341 21.5 18.2266 20.6239C19.219 19.7477 19.4015 18.2879 19.7665 15.3682L20.5 9.5Z\"\n        stroke=\"currentColor\"\n      ></path>\n      <path\n        d=\"M5 9C5 5.41015 8.13401 2.5 12 2.5C15.866 2.5 19 5.41015 19 9\"\n        stroke=\"currentColor\"\n      ></path>\n    </svg>\n  ),\n  phosphor: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 32 32\"\n      width=\"32\"\n      height=\"32\"\n    >\n      <path fill=\"none\" d=\"M0 0h32v32H0z\" />\n      <path\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M9 5h9v16H9zm9 16v9a9 9 0 0 1-9-9M9 5l9 16m0 0h1a8 8 0 0 0 0-16h-1\"\n      />\n    </svg>\n  ),\n  remixicon: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      width=\"24\"\n      height=\"24\"\n      fill=\"currentColor\"\n    >\n      <path d=\"M12 2C17.5228 2 22 6.47715 22 12C22 15.3137 19.3137 18 16 18C12.6863 18 10 15.3137 10 12C10 11.4477 9.55228 11 9 11C8.44772 11 8 11.4477 8 12C8 16.4183 11.5817 20 16 20C16.8708 20 17.7084 19.8588 18.4932 19.6016C16.7458 21.0956 14.4792 22 12 22C6.6689 22 2.3127 17.8283 2.0166 12.5713C2.23647 9.45772 4.83048 7 8 7C11.3137 7 14 9.68629 14 13C14 13.5523 14.4477 14 15 14C15.5523 14 16 13.5523 16 13C16 8.58172 12.4183 5 8 5C6.50513 5 5.1062 5.41032 3.90918 6.12402C5.72712 3.62515 8.67334 2 12 2Z\" />\n    </svg>\n  ),\n}\n\nexport function IconLibraryPicker({\n  isMobile,\n  anchorRef,\n}: {\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const currentIconLibrary = React.useMemo(\n    () => iconLibraries[params.iconLibrary as keyof typeof iconLibraries],\n    [params.iconLibrary]\n  )\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Icon Library</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {currentIconLibrary?.title}\n            </div>\n          </div>\n          <div className=\"pointer-events-none absolute top-1/2 right-4 flex size-4 -translate-y-1/2 items-center justify-center text-base text-foreground select-none md:right-2.5 *:[svg]:text-foreground!\">\n            {logos[currentIconLibrary?.name as keyof typeof logos]}\n          </div>\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n        >\n          <PickerRadioGroup\n            value={currentIconLibrary?.name}\n            onValueChange={(value) => {\n              setParams({ iconLibrary: value as IconLibraryName })\n            }}\n          >\n            <PickerGroup>\n              {Object.values(iconLibraries).map((iconLibrary) => (\n                <PickerRadioItem\n                  key={iconLibrary.name}\n                  value={iconLibrary.name}\n                  closeOnClick={isMobile}\n                >\n                  {iconLibrary.title}\n                </PickerRadioItem>\n              ))}\n            </PickerGroup>\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param=\"iconLibrary\"\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/icon-placeholder.tsx",
    "content": "\"use client\"\n\nimport { lazy, Suspense } from \"react\"\nimport { SquareIcon } from \"lucide-react\"\nimport type { IconLibraryName } from \"shadcn/icons\"\n\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nconst IconLucide = lazy(() =>\n  import(\"@/registry/icons/icon-lucide\").then((mod) => ({\n    default: mod.IconLucide,\n  }))\n)\n\nconst IconTabler = lazy(() =>\n  import(\"@/registry/icons/icon-tabler\").then((mod) => ({\n    default: mod.IconTabler,\n  }))\n)\n\nconst IconHugeicons = lazy(() =>\n  import(\"@/registry/icons/icon-hugeicons\").then((mod) => ({\n    default: mod.IconHugeicons,\n  }))\n)\n\nconst IconPhosphor = lazy(() =>\n  import(\"@/registry/icons/icon-phosphor\").then((mod) => ({\n    default: mod.IconPhosphor,\n  }))\n)\n\nconst IconRemixicon = lazy(() =>\n  import(\"@/registry/icons/icon-remixicon\").then((mod) => ({\n    default: mod.IconRemixicon,\n  }))\n)\n\n// Preload all icon renderer modules so switching libraries is instant.\n// These warm the browser module cache; React.lazy resolves immediately\n// for modules that are already loaded.\nvoid import(\"@/registry/icons/icon-lucide\")\nvoid import(\"@/registry/icons/icon-tabler\")\nvoid import(\"@/registry/icons/icon-hugeicons\")\nvoid import(\"@/registry/icons/icon-phosphor\")\nvoid import(\"@/registry/icons/icon-remixicon\")\n\nexport function IconPlaceholder({\n  ...props\n}: {\n  [K in IconLibraryName]: string\n} & React.ComponentProps<\"svg\">) {\n  const [{ iconLibrary }] = useDesignSystemSearchParams()\n  const iconName = props[iconLibrary]\n\n  if (!iconName) {\n    return null\n  }\n\n  return (\n    <Suspense fallback={<SquareIcon {...props} />}>\n      {iconLibrary === \"lucide\" && <IconLucide name={iconName} {...props} />}\n      {iconLibrary === \"tabler\" && <IconTabler name={iconName} {...props} />}\n      {iconLibrary === \"hugeicons\" && (\n        <IconHugeicons name={iconName} {...props} />\n      )}\n      {iconLibrary === \"phosphor\" && (\n        <IconPhosphor name={iconName} {...props} />\n      )}\n      {iconLibrary === \"remixicon\" && (\n        <IconRemixicon name={iconName} {...props} />\n      )}\n    </Suspense>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/item-explorer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/examples/base/ui/sidebar\"\nimport { ChevronRightIcon } from \"lucide-react\"\nimport { type RegistryItem } from \"shadcn/schema\"\n\nimport { cn } from \"@/lib/utils\"\nimport { type Base } from \"@/registry/bases\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\nimport { groupItemsByType } from \"@/app/(create)/lib/utils\"\n\nconst cachedGroupedItems = React.cache(\n  (items: Pick<RegistryItem, \"name\" | \"title\" | \"type\">[]) => {\n    return groupItemsByType(items)\n  }\n)\n\nexport function ItemExplorer({\n  base,\n  items,\n}: {\n  base: Base[\"name\"]\n  items: Pick<RegistryItem, \"name\" | \"title\" | \"type\">[]\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const groupedItems = React.useMemo(() => cachedGroupedItems(items), [items])\n\n  const currentItem = React.useMemo(\n    () => items.find((item) => item.name === params.item) ?? null,\n    [items, params.item]\n  )\n\n  return (\n    <Sidebar\n      className=\"sticky z-30 hidden h-full overscroll-none bg-transparent xl:flex\"\n      collapsible=\"none\"\n    >\n      <SidebarContent className=\"-mx-1 no-scrollbar overflow-x-hidden\">\n        {groupedItems.map((group) => (\n          <Collapsible\n            key={group.type}\n            defaultOpen\n            className=\"group/collapsible\"\n          >\n            <SidebarGroup className=\"px-1 py-0\">\n              <CollapsibleTrigger className=\"flex w-full items-center gap-1 py-1.5 text-[0.8rem] font-medium [&[data-state=open]>svg]:rotate-90\">\n                <ChevronRightIcon className=\"size-3.5 text-muted-foreground transition-transform\" />\n                <span>{group.title}</span>\n              </CollapsibleTrigger>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu className=\"relative ml-1.5 border-l border-border/50 pl-2\">\n                    {group.items.map((item, index) => (\n                      <SidebarMenuItem key={item.name} className=\"relative\">\n                        <div\n                          className={cn(\n                            \"absolute top-1/2 -left-2 h-px w-2 border-t border-border/50\",\n                            index === group.items.length - 1 && \"bg-sidebar\"\n                          )}\n                        />\n                        {index === group.items.length - 1 && (\n                          <div className=\"absolute top-1/2 -bottom-1 -left-2.5 w-1 bg-sidebar\" />\n                        )}\n                        <SidebarMenuButton\n                          onClick={() => setParams({ item: item.name })}\n                          className=\"relative h-[26px] w-fit cursor-pointer overflow-visible border border-transparent text-[0.8rem] font-normal after:absolute after:inset-x-0 after:-inset-y-1 after:z-0 after:rounded-md data-[active=true]:border-accent data-[active=true]:bg-accent 3xl:fixed:w-full 3xl:fixed:max-w-48\"\n                          data-active={item.name === currentItem?.name}\n                          isActive={item.name === currentItem?.name}\n                        >\n                          {item.title}\n                          <span className=\"absolute inset-0 flex w-(--sidebar-width) bg-transparent\" />\n                        </SidebarMenuButton>\n                        <Link\n                          href={`/preview/${base}/${item.name}`}\n                          prefetch\n                          className=\"sr-only\"\n                          tabIndex={-1}\n                        >\n                          {item.title}\n                        </Link>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </SidebarGroup>\n          </Collapsible>\n        ))}\n      </SidebarContent>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/lock-button.tsx",
    "content": "\"use client\"\n\nimport {\n  SquareLock01Icon,\n  SquareUnlock01Icon,\n} from \"@hugeicons/core-free-icons\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useLocks, type LockableParam } from \"@/app/(create)/hooks/use-locks\"\n\nexport function LockButton({\n  param,\n  className,\n}: {\n  param: LockableParam\n  className?: string\n}) {\n  const { isLocked, toggleLock } = useLocks()\n  const locked = isLocked(param)\n\n  return (\n    <button\n      type=\"button\"\n      title={locked ? \"Unlock\" : \"Lock\"}\n      aria-label={locked ? \"Unlock\" : \"Lock\"}\n      onClick={() => toggleLock(param)}\n      data-locked={locked}\n      className={cn(\n        \"flex size-4 cursor-pointer items-center justify-center rounded opacity-0 ring-foreground/60 transition-opacity outline-none group-focus-within/picker:opacity-100 group-hover/picker:opacity-100 focus:opacity-100 focus-visible:ring-1 data-[locked=true]:opacity-100 pointer-coarse:hidden\",\n        className\n      )}\n    >\n      <HugeiconsIcon\n        icon={locked ? SquareLock01Icon : SquareUnlock01Icon}\n        strokeWidth={2}\n        className=\"size-5 text-foreground\"\n      />\n    </button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/main-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { type Button } from \"@/examples/base/ui/button\"\nimport { Menu09Icon } from \"@hugeicons/core-free-icons\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerItem,\n  PickerSeparator,\n  PickerShortcut,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useActionMenuTrigger } from \"@/app/(create)/hooks/use-action-menu\"\nimport { useHistory } from \"@/app/(create)/hooks/use-history\"\nimport { useRandom } from \"@/app/(create)/hooks/use-random\"\nimport { useReset } from \"@/app/(create)/hooks/use-reset\"\nimport { useThemeToggle } from \"@/app/(create)/hooks/use-theme-toggle\"\n\nconst APPLE_PLATFORM_REGEX = /Mac|iPhone|iPad|iPod/\n\nexport function MainMenu({ className }: React.ComponentProps<typeof Button>) {\n  const [isMac, setIsMac] = React.useState(false)\n  const { canGoBack, canGoForward, goBack, goForward } = useHistory()\n  const { openActionMenu } = useActionMenuTrigger()\n  const { randomize } = useRandom()\n  const { toggleTheme } = useThemeToggle()\n  const { setShowResetDialog } = useReset()\n\n  React.useEffect(() => {\n    const platform = navigator.platform\n    const userAgent = navigator.userAgent\n    setIsMac(APPLE_PLATFORM_REGEX.test(platform || userAgent))\n  }, [])\n\n  return (\n    <React.Fragment>\n      <Picker>\n        <PickerTrigger\n          className={cn(\n            \"flex items-center justify-between gap-2 rounded-lg px-1.75 ring-1 ring-foreground/10 focus-visible:ring-1\",\n            className\n          )}\n        >\n          <span className=\"font-medium\">Menu</span>\n          <HugeiconsIcon icon={Menu09Icon} strokeWidth={2} className=\"size-5\" />\n        </PickerTrigger>\n        <PickerContent side=\"right\" align=\"start\" alignOffset={-8}>\n          <PickerGroup>\n            <PickerItem onClick={openActionMenu}>\n              Navigate...\n              <PickerShortcut>{isMac ? \"⌘P\" : \"Ctrl+P\"}</PickerShortcut>\n            </PickerItem>\n            <PickerItem onClick={randomize}>\n              Shuffle <PickerShortcut>R</PickerShortcut>\n            </PickerItem>\n            <PickerItem onClick={toggleTheme}>\n              Light/Dark <PickerShortcut>D</PickerShortcut>\n            </PickerItem>\n          </PickerGroup>\n          <PickerSeparator />\n          <PickerGroup>\n            <PickerItem onClick={goBack} disabled={!canGoBack}>\n              Undo <PickerShortcut>{isMac ? \"⌘Z\" : \"Ctrl+Z\"}</PickerShortcut>\n            </PickerItem>\n            <PickerItem onClick={goForward} disabled={!canGoForward}>\n              Redo{\" \"}\n              <PickerShortcut>{isMac ? \"⇧⌘Z\" : \"Ctrl+Shift+Z\"}</PickerShortcut>\n            </PickerItem>\n            <PickerSeparator />\n            <PickerItem onClick={() => setShowResetDialog(true)}>\n              Reset\n            </PickerItem>\n          </PickerGroup>\n        </PickerContent>\n      </Picker>\n    </React.Fragment>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/menu-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Menu02Icon } from \"@hugeicons/core-free-icons\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\nimport { useTheme } from \"next-themes\"\n\nimport { useMounted } from \"@/hooks/use-mounted\"\nimport { type MenuColorValue } from \"@/registry/config\"\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerLabel,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerSeparator,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport {\n  isTranslucentMenuColor,\n  useDesignSystemSearchParams,\n} from \"@/app/(create)/lib/search-params\"\n\ntype ColorChoice = \"default\" | \"inverted\"\ntype SurfaceChoice = \"solid\" | \"translucent\"\n\nfunction getMenuColorValue(\n  color: ColorChoice,\n  translucent: boolean\n): MenuColorValue {\n  if (color === \"default\") {\n    return translucent ? \"default-translucent\" : \"default\"\n  }\n\n  return translucent ? \"inverted-translucent\" : \"inverted\"\n}\n\nconst MENU_OPTIONS: { value: MenuColorValue; label: string }[] = [\n  { value: \"default\", label: \"Default / Solid\" },\n  { value: \"default-translucent\", label: \"Default / Translucent\" },\n  { value: \"inverted\", label: \"Inverted / Solid\" },\n  { value: \"inverted-translucent\", label: \"Inverted / Translucent\" },\n]\n\nexport function MenuColorPicker({\n  isMobile,\n  anchorRef,\n}: {\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n  const { resolvedTheme } = useTheme()\n  const mounted = useMounted()\n  const lastSolidMenuAccentRef = React.useRef(params.menuAccent)\n  const isDark = mounted && resolvedTheme === \"dark\"\n  const currentMenu = MENU_OPTIONS.find(\n    (menu) => menu.value === params.menuColor\n  )\n  const colorChoice: ColorChoice =\n    params.menuColor === \"inverted\" ||\n    params.menuColor === \"inverted-translucent\"\n      ? \"inverted\"\n      : \"default\"\n  const surfaceChoice: SurfaceChoice =\n    params.menuColor === \"default-translucent\" ||\n    params.menuColor === \"inverted-translucent\"\n      ? \"translucent\"\n      : \"solid\"\n\n  React.useEffect(() => {\n    if (surfaceChoice === \"solid\") {\n      lastSolidMenuAccentRef.current = params.menuAccent\n    }\n  }, [params.menuAccent, surfaceChoice])\n\n  const setColor = (color: ColorChoice) => {\n    const nextMenuColor = getMenuColorValue(\n      color,\n      surfaceChoice === \"translucent\"\n    )\n\n    setParams({\n      menuColor: nextMenuColor,\n      ...(isTranslucentMenuColor(nextMenuColor) && { menuAccent: \"subtle\" }),\n    })\n  }\n\n  const setSurface = (choice: SurfaceChoice) => {\n    const isTranslucent = choice === \"translucent\"\n    const nextMenuColor = getMenuColorValue(colorChoice, isTranslucent)\n\n    setParams({\n      menuColor: nextMenuColor,\n      menuAccent: isTranslucent ? \"subtle\" : lastSolidMenuAccentRef.current,\n    })\n  }\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Menu</div>\n            <div className=\"line-clamp-1 text-sm font-medium text-foreground\">\n              {currentMenu?.label}\n            </div>\n          </div>\n          <div className=\"pointer-events-none absolute top-1/2 right-4 flex size-4 -translate-y-1/2 items-center justify-center text-base text-foreground select-none md:right-2.5\">\n            <HugeiconsIcon\n              icon={Menu02Icon}\n              strokeWidth={2}\n              className=\"size-4\"\n            />\n          </div>\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n        >\n          <PickerGroup>\n            <PickerLabel>Color</PickerLabel>\n            <PickerRadioGroup\n              value={colorChoice}\n              onValueChange={(value) => {\n                setColor(value as ColorChoice)\n              }}\n            >\n              <PickerRadioItem value=\"default\" closeOnClick={isMobile}>\n                Default\n              </PickerRadioItem>\n              <PickerRadioItem\n                value=\"inverted\"\n                closeOnClick={isMobile}\n                disabled={isDark}\n              >\n                Inverted\n              </PickerRadioItem>\n            </PickerRadioGroup>\n          </PickerGroup>\n          <PickerSeparator />\n          <PickerGroup>\n            <PickerLabel>Appearance</PickerLabel>\n            <PickerRadioGroup\n              value={surfaceChoice}\n              onValueChange={(value) => {\n                setSurface(value as SurfaceChoice)\n              }}\n            >\n              <PickerRadioItem value=\"solid\" closeOnClick={isMobile}>\n                Solid\n              </PickerRadioItem>\n              <PickerRadioItem value=\"translucent\" closeOnClick={isMobile}>\n                Translucent\n              </PickerRadioItem>\n            </PickerRadioGroup>\n          </PickerGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param=\"menuColor\"\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/mode-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Script from \"next/script\"\nimport { Button } from \"@/examples/base/ui/button\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useThemeToggle } from \"@/app/(create)/hooks/use-theme-toggle\"\n\nexport const DARK_MODE_FORWARD_TYPE = \"dark-mode-forward\"\n\nexport function ModeSwitcher({\n  variant = \"ghost\",\n  className,\n}: {\n  variant?: React.ComponentProps<typeof Button>[\"variant\"]\n  className?: React.ComponentProps<typeof Button>[\"className\"]\n}) {\n  const { toggleTheme } = useThemeToggle()\n\n  return (\n    <Button\n      variant={variant}\n      size=\"icon\"\n      className={cn(\"group/toggle extend-touch-target\", className)}\n      onClick={toggleTheme}\n      id=\"mode-switcher-button\"\n    >\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"24\"\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        className=\"size-4.5\"\n      >\n        <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n        <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\n        <path d=\"M12 3l0 18\" />\n        <path d=\"M12 9l4.65 -4.65\" />\n        <path d=\"M12 14.3l7.37 -7.37\" />\n        <path d=\"M12 19.6l8.85 -8.85\" />\n      </svg>\n      <span className=\"sr-only\">Toggle theme</span>\n    </Button>\n  )\n}\n\nexport function DarkModeScript() {\n  return (\n    <Script\n      id=\"dark-mode-listener\"\n      strategy=\"beforeInteractive\"\n      dangerouslySetInnerHTML={{\n        __html: `\n            (function() {\n              // Forward D key\n              document.addEventListener('keydown', function(e) {\n                if ((e.key === 'd' || e.key === 'D') && !e.metaKey && !e.ctrlKey && !e.altKey) {\n                  if (\n                    (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n                    e.target instanceof HTMLInputElement ||\n                    e.target instanceof HTMLTextAreaElement ||\n                    e.target instanceof HTMLSelectElement\n                  ) {\n                    return;\n                  }\n                  e.preventDefault();\n                  if (window.parent && window.parent !== window) {\n                    window.parent.postMessage({\n                      type: '${DARK_MODE_FORWARD_TYPE}',\n                      key: e.key\n                    }, '*');\n                  }\n                }\n              });\n\n            })();\n          `,\n      }}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Picker({ ...props }: MenuPrimitive.Root.Props) {\n  return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction PickerPortal({ ...props }: MenuPrimitive.Portal.Props) {\n  return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction PickerTrigger({ className, ...props }: MenuPrimitive.Trigger.Props) {\n  return (\n    <MenuPrimitive.Trigger\n      data-slot=\"dropdown-menu-trigger\"\n      className={cn(\n        \"relative w-40 shrink-0 touch-manipulation rounded-xl p-3 ring-1 ring-foreground/10 select-none hover:bg-muted focus-visible:ring-foreground/50 focus-visible:outline-none disabled:opacity-50 data-popup-open:bg-muted md:w-full md:rounded-lg md:px-2.5 md:py-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PickerContent({\n  align = \"start\",\n  alignOffset = 0,\n  side = \"bottom\",\n  sideOffset = 20,\n  anchor,\n  className,\n  ...props\n}: MenuPrimitive.Popup.Props &\n  Pick<\n    MenuPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"anchor\"\n  >) {\n  return (\n    <MenuPrimitive.Portal>\n      <MenuPrimitive.Positioner\n        className=\"isolate z-50 outline-none\"\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        anchor={anchor}\n      >\n        <MenuPrimitive.Popup\n          data-slot=\"dropdown-menu-content\"\n          className={cn(\n            \"cn-menu-target z-50 no-scrollbar max-h-(--available-height) w-[calc(var(--available-width)-(--spacing(6)))] min-w-32 origin-(--transform-origin) translate-y-2 overflow-x-hidden overflow-y-auto rounded-xl border-0 bg-neutral-950/80 p-1.5 text-neutral-100 ring-1 ring-neutral-950/80 backdrop-blur-xl outline-none md:w-52 dark:bg-neutral-800/90 dark:ring-neutral-700/50 data-closed:overflow-hidden\",\n            className\n          )}\n          {...props}\n        />\n      </MenuPrimitive.Positioner>\n      <div className=\"absolute inset-y-0 right-0 left-62 z-40 bg-transparent\" />\n    </MenuPrimitive.Portal>\n  )\n}\n\nfunction PickerGroup({ ...props }: MenuPrimitive.Group.Props) {\n  return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction PickerLabel({\n  className,\n  inset,\n  ...props\n}: MenuPrimitive.GroupLabel.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.GroupLabel\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-2 py-1.5 text-xs font-medium text-neutral-400 data-inset:pl-8\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PickerItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: MenuPrimitive.Item.Props & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <MenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-lg px-2 py-1.5 text-sm font-medium outline-hidden select-none **:text-neutral-100 focus:bg-neutral-600 focus:text-neutral-100 focus:**:text-neutral-100 data-inset:pl-8 dark:focus:bg-neutral-700/80 pointer-coarse:gap-3 pointer-coarse:py-2.5 pointer-coarse:pl-3 pointer-coarse:text-base data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PickerSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n  return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction PickerSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.SubmenuTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent/95 focus:text-accent-foreground focus:ring-1 focus:ring-foreground/20 not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-open:bg-accent/95 data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        className=\"ml-auto\"\n      />\n    </MenuPrimitive.SubmenuTrigger>\n  )\n}\n\nfunction PickerSubContent({\n  align = \"start\",\n  alignOffset = -3,\n  side = \"right\",\n  sideOffset = 0,\n  className,\n  ...props\n}: React.ComponentProps<typeof PickerContent>) {\n  return (\n    <PickerContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"w-auto min-w-[96px] rounded-md bg-popover/90 p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 backdrop-blur-xs duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      align={align}\n      alignOffset={alignOffset}\n      side={side}\n      sideOffset={sideOffset}\n      {...props}\n    />\n  )\n}\n\nfunction PickerCheckboxItem({\n  className,\n  children,\n  checked,\n  ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n  return (\n    <MenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent/95 focus:text-accent-foreground focus:ring-1 focus:ring-foreground/20 focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute right-2 flex items-center justify-center\">\n        <MenuPrimitive.CheckboxItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </MenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction PickerRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n  return (\n    <MenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction PickerRadioItem({\n  className,\n  children,\n  ...props\n}: MenuPrimitive.RadioItem.Props) {\n  return (\n    <MenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-lg py-1.5 pr-8 pl-2 text-sm font-medium outline-hidden select-none **:text-neutral-100 focus:bg-neutral-600 focus:text-neutral-100 focus:**:text-neutral-100 data-inset:pl-8 dark:focus:bg-neutral-700/80 pointer-coarse:gap-3 pointer-coarse:py-2.5 pointer-coarse:pl-3 pointer-coarse:text-base data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-radio-item-indicator\"\n      >\n        <MenuPrimitive.RadioItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n            className=\"size-4 pointer-coarse:size-5\"\n          />\n        </MenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.RadioItem>\n  )\n}\n\nfunction PickerSeparator({\n  className,\n  ...props\n}: MenuPrimitive.Separator.Props) {\n  return (\n    <MenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\n        \"-mx-1.5 my-1.5 h-px bg-neutral-600 dark:bg-neutral-700\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PickerShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-neutral-400! group-focus/dropdown-menu-item:text-neutral-100\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Picker,\n  PickerPortal,\n  PickerTrigger,\n  PickerContent,\n  PickerGroup,\n  PickerLabel,\n  PickerItem,\n  PickerCheckboxItem,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerSeparator,\n  PickerShortcut,\n  PickerSub,\n  PickerSubTrigger,\n  PickerSubContent,\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/preset-handler.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { generateRandomPreset, isPresetCode } from \"shadcn/preset\"\n\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function PresetHandler() {\n  const router = useRouter()\n  const [params, setParams] = useDesignSystemSearchParams()\n  const hasConverted = React.useRef(false)\n\n  React.useEffect(() => {\n    if (params.preset === \"random\") {\n      router.replace(`/create?preset=${generateRandomPreset()}`)\n    }\n  }, [params.preset, router])\n\n  React.useEffect(() => {\n    if (hasConverted.current) {\n      return\n    }\n    hasConverted.current = true\n\n    if (!params.preset || params.preset === \"random\") {\n      return\n    }\n\n    if (isPresetCode(params.preset)) {\n      return\n    }\n\n    setParams({ base: params.base })\n  }, [params.preset, params.base, setParams])\n\n  return null\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/preset-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { STYLES, type Preset } from \"@/registry/config\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function PresetPicker({\n  presets,\n  isMobile,\n  anchorRef,\n}: {\n  presets: readonly Preset[]\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const currentPreset = React.useMemo(() => {\n    return presets.find(\n      (preset) =>\n        preset.base === params.base &&\n        preset.style === params.style &&\n        preset.baseColor === params.baseColor &&\n        preset.theme === params.theme &&\n        preset.chartColor === params.chartColor &&\n        preset.iconLibrary === params.iconLibrary &&\n        preset.font === params.font &&\n        preset.fontHeading === params.fontHeading &&\n        preset.menuAccent === params.menuAccent &&\n        preset.menuColor === params.menuColor &&\n        preset.radius === params.radius\n    )\n  }, [\n    presets,\n    params.base,\n    params.style,\n    params.baseColor,\n    params.theme,\n    params.chartColor,\n    params.iconLibrary,\n    params.font,\n    params.fontHeading,\n    params.menuAccent,\n    params.menuColor,\n    params.radius,\n  ])\n\n  // Filter presets for current base only\n  const currentBasePresets = React.useMemo(() => {\n    return presets.filter((preset) => preset.base === params.base)\n  }, [presets, params.base])\n\n  const handlePresetChange = (value: string) => {\n    const preset = presets.find((p) => p.title === value)\n    if (!preset) {\n      return\n    }\n\n    // Update all params including base.\n    setParams({\n      base: preset.base,\n      style: preset.style,\n      baseColor: preset.baseColor,\n      theme: preset.theme,\n      chartColor: preset.chartColor,\n      iconLibrary: preset.iconLibrary,\n      font: preset.font,\n      fontHeading: preset.fontHeading,\n      menuAccent: preset.menuAccent,\n      menuColor: preset.menuColor,\n      radius: preset.radius,\n      custom: false,\n    })\n  }\n\n  return (\n    <Picker>\n      <PickerTrigger>\n        <div className=\"flex flex-col justify-start text-left\">\n          <div className=\"text-xs text-muted-foreground\">Preset</div>\n          <div className=\"line-clamp-1 text-sm font-medium text-foreground\">\n            {currentPreset?.description ?? \"Custom\"}\n          </div>\n        </div>\n      </PickerTrigger>\n      <PickerContent\n        anchor={isMobile ? anchorRef : undefined}\n        side={isMobile ? \"top\" : \"right\"}\n        align={isMobile ? \"center\" : \"start\"}\n        className=\"md:w-72\"\n      >\n        <PickerRadioGroup\n          value={currentPreset?.title ?? \"\"}\n          onValueChange={handlePresetChange}\n        >\n          <PickerGroup>\n            {currentBasePresets.map((preset) => {\n              const style = STYLES.find((s) => s.name === preset.style)\n              return (\n                <PickerRadioItem\n                  key={preset.title}\n                  value={preset.title}\n                  closeOnClick={isMobile}\n                >\n                  <div className=\"flex items-center gap-2\">\n                    {style?.icon && (\n                      <div className=\"flex size-4 shrink-0 items-center justify-center\">\n                        {React.cloneElement(style.icon, {\n                          className: \"size-4\",\n                        })}\n                      </div>\n                    )}\n                    {preset.description}\n                  </div>\n                </PickerRadioItem>\n              )\n            })}\n          </PickerGroup>\n        </PickerRadioGroup>\n      </PickerContent>\n    </Picker>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/preview-style.tsx",
    "content": "\"use client\"\n\nexport function PreviewStyle() {\n  return (\n    <style jsx global>{`\n      html {\n        -ms-overflow-style: none;\n        scrollbar-width: none;\n\n        &::-webkit-scrollbar {\n          display: none;\n        }\n      }\n    `}</style>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/preview.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { CMD_K_FORWARD_TYPE } from \"@/app/(create)/components/action-menu\"\nimport {\n  REDO_FORWARD_TYPE,\n  UNDO_FORWARD_TYPE,\n} from \"@/app/(create)/components/history-buttons\"\nimport { DARK_MODE_FORWARD_TYPE } from \"@/app/(create)/components/mode-switcher\"\nimport { RANDOMIZE_FORWARD_TYPE } from \"@/app/(create)/components/random-button\"\nimport { sendToIframe } from \"@/app/(create)/hooks/use-iframe-sync\"\nimport {\n  serializeDesignSystemSearchParams,\n  useDesignSystemSearchParams,\n} from \"@/app/(create)/lib/search-params\"\n\n// Hoisted — avoids recreating on every message event. (js-hoist-regexp)\nconst MAC_REGEX = /Mac|iPhone|iPad|iPod/\n\n// Hoisted — only uses module-level constants, no component state. (rendering-hoist-jsx)\nfunction handleMessage(event: MessageEvent) {\n  if (\n    typeof window === \"undefined\" ||\n    event.origin !== window.location.origin\n  ) {\n    return\n  }\n\n  const type = event.data.type\n  if (type === CMD_K_FORWARD_TYPE) {\n    const isMac = MAC_REGEX.test(navigator.userAgent)\n    document.dispatchEvent(\n      new KeyboardEvent(\"keydown\", {\n        key: event.data.key || \"k\",\n        metaKey: isMac,\n        ctrlKey: !isMac,\n        bubbles: true,\n        cancelable: true,\n      })\n    )\n  } else if (type === RANDOMIZE_FORWARD_TYPE) {\n    document.dispatchEvent(\n      new KeyboardEvent(\"keydown\", {\n        key: event.data.key || \"r\",\n        bubbles: true,\n        cancelable: true,\n      })\n    )\n  } else if (type === UNDO_FORWARD_TYPE) {\n    const isMac = MAC_REGEX.test(navigator.userAgent)\n    document.dispatchEvent(\n      new KeyboardEvent(\"keydown\", {\n        key: \"z\",\n        metaKey: isMac,\n        ctrlKey: !isMac,\n        bubbles: true,\n        cancelable: true,\n      })\n    )\n  } else if (type === REDO_FORWARD_TYPE) {\n    const isMac = MAC_REGEX.test(navigator.userAgent)\n    document.dispatchEvent(\n      new KeyboardEvent(\"keydown\", {\n        key: \"z\",\n        shiftKey: true,\n        metaKey: isMac,\n        ctrlKey: !isMac,\n        bubbles: true,\n        cancelable: true,\n      })\n    )\n  } else if (type === DARK_MODE_FORWARD_TYPE) {\n    document.dispatchEvent(\n      new KeyboardEvent(\"keydown\", {\n        key: event.data.key || \"d\",\n        bubbles: true,\n        cancelable: true,\n      })\n    )\n  }\n}\n\nexport function Preview() {\n  const [params] = useDesignSystemSearchParams()\n  const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n  React.useEffect(() => {\n    const iframe = iframeRef.current\n    if (!iframe) {\n      return\n    }\n\n    const sendParams = () => {\n      sendToIframe(iframe, \"design-system-params\", params)\n    }\n\n    if (iframe.contentWindow) {\n      sendParams()\n    }\n\n    iframe.addEventListener(\"load\", sendParams)\n    return () => {\n      iframe.removeEventListener(\"load\", sendParams)\n    }\n  }, [params])\n\n  React.useEffect(() => {\n    window.addEventListener(\"message\", handleMessage)\n    return () => {\n      window.removeEventListener(\"message\", handleMessage)\n    }\n  }, [])\n\n  const iframeSrc = React.useMemo(() => {\n    // The iframe src needs to include the serialized design system params\n    // for the initial load, but not be reactive to them as it would cause\n    // full-iframe reloads on every param change (flashes & loss of state).\n    // Further updates of the search params will be sent to the iframe\n    // via a postMessage channel, for it to sync its own history onto the host's.\n    return serializeDesignSystemSearchParams(\n      `/preview/${params.base}/${params.item}`,\n      params\n    )\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [params.base, params.item])\n\n  return (\n    <div className=\"relative flex flex-1 flex-col justify-center overflow-hidden rounded-2xl ring ring-foreground/10 md:ring-muted dark:ring-foreground/10\">\n      <div className=\"relative z-0 mx-auto flex w-full flex-1 flex-col overflow-hidden\">\n        <div className=\"absolute inset-0 bg-muted dark:bg-muted/30\" />\n        <iframe\n          key={params.base + params.item}\n          ref={iframeRef}\n          src={iframeSrc}\n          className=\"z-10 size-full flex-1\"\n          title=\"Preview\"\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/project-form.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/base/ui/dialog\"\nimport {\n  Field,\n  FieldContent,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\nimport { Switch } from \"@/examples/base/ui/switch\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/examples/base/ui/tabs\"\nimport { Copy01Icon, Globe02Icon, Tick02Icon } from \"@hugeicons/core-free-icons\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useConfig } from \"@/hooks/use-config\"\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { BASES, type BaseName } from \"@/registry/config\"\nimport { usePresetCode } from \"@/app/(create)/hooks/use-design-system\"\nimport {\n  useDesignSystemSearchParams,\n  type DesignSystemSearchParams,\n} from \"@/app/(create)/lib/search-params\"\nimport {\n  getFramework,\n  getTemplateValue,\n  NO_MONOREPO_FRAMEWORKS,\n  TEMPLATES,\n} from \"@/app/(create)/lib/templates\"\n\nconst TURBOREPO_LOGO =\n  '<svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Turborepo</title><path d=\"M11.9906 4.1957c-4.2998 0-7.7981 3.501-7.7981 7.8043s3.4983 7.8043 7.7981 7.8043c4.2999 0 7.7982-3.501 7.7982-7.8043s-3.4983-7.8043-7.7982-7.8043m0 11.843c-2.229 0-4.0356-1.8079-4.0356-4.0387s1.8065-4.0387 4.0356-4.0387S16.0262 9.7692 16.0262 12s-1.8065 4.0388-4.0356 4.0388m.6534-13.1249V0C18.9726.3386 24 5.5822 24 12s-5.0274 11.66-11.356 12v-2.9139c4.7167-.3372 8.4516-4.2814 8.4516-9.0861s-3.735-8.749-8.4516-9.0861M5.113 17.9586c-1.2502-1.4446-2.0562-3.2845-2.2-5.3046H0c.151 2.8266 1.2808 5.3917 3.051 7.3668l2.0606-2.0622zM11.3372 24v-2.9139c-2.02-.1439-3.8584-.949-5.3019-2.2018l-2.0606 2.0623c1.975 1.773 4.538 2.9022 7.361 3.0534z\"/></svg>'\nconst ORIGIN = process.env.NEXT_PUBLIC_APP_URL || \"http://localhost:4000\"\nconst IS_LOCAL_DEV = ORIGIN.includes(\"localhost\")\nconst SHADCN_VERSION = process.env.NEXT_PUBLIC_RC ? \"@rc\" : \"@latest\"\nconst PACKAGE_MANAGERS = [\"pnpm\", \"npm\", \"yarn\", \"bun\"] as const\ntype PackageManager = (typeof PACKAGE_MANAGERS)[number]\n\nexport function ProjectForm({\n  className,\n}: React.ComponentProps<typeof Button>) {\n  const [open, setOpen] = React.useState(false)\n  const [params, setParams] = useDesignSystemSearchParams()\n  const presetCode = usePresetCode()\n  const [config, setConfig] = useConfig()\n  const [hasCopied, setHasCopied] = React.useState(false)\n\n  const packageManager = (config.packageManager || \"pnpm\") as PackageManager\n  const framework = React.useMemo(\n    () => getFramework(params.template ?? \"next\"),\n    [params.template]\n  )\n  const isMonorepo = React.useMemo(\n    () => params.template?.endsWith(\"-monorepo\") ?? false,\n    [params.template]\n  )\n\n  const hasMonorepo = !NO_MONOREPO_FRAMEWORKS.includes(\n    framework as (typeof NO_MONOREPO_FRAMEWORKS)[number]\n  )\n\n  const commands = React.useMemo(() => {\n    const presetFlag = ` --preset ${presetCode}`\n    const baseFlag = params.base !== \"radix\" ? ` --base ${params.base}` : \"\"\n    const templateFlag = ` --template ${framework}`\n    const monorepoFlag = isMonorepo ? \" --monorepo\" : \"\"\n    const rtlFlag = params.rtl ? \" --rtl\" : \"\"\n    const flags = `${presetFlag}${baseFlag}${templateFlag}${monorepoFlag}${rtlFlag}`\n\n    return IS_LOCAL_DEV\n      ? {\n          pnpm: `shadcn init${flags}`,\n          npm: `shadcn init${flags}`,\n          yarn: `shadcn init${flags}`,\n          bun: `shadcn init${flags}`,\n        }\n      : {\n          pnpm: `pnpm dlx shadcn${SHADCN_VERSION} init${flags}`,\n          npm: `npx shadcn${SHADCN_VERSION} init${flags}`,\n          yarn: `yarn dlx shadcn${SHADCN_VERSION} init${flags}`,\n          bun: `bunx --bun shadcn${SHADCN_VERSION} init${flags}`,\n        }\n  }, [framework, isMonorepo, params.base, params.rtl, presetCode])\n\n  const command = commands[packageManager]\n\n  React.useEffect(() => {\n    if (hasCopied) {\n      const timer = setTimeout(() => setHasCopied(false), 2000)\n      return () => clearTimeout(timer)\n    }\n  }, [hasCopied])\n\n  const handleCopy = React.useCallback(() => {\n    const properties: Record<string, string> = {\n      command,\n    }\n    if (params.template) {\n      properties.template = params.template\n    }\n    copyToClipboardWithMeta(command, {\n      name: \"copy_npm_command\",\n      properties,\n    })\n    setHasCopied(true)\n  }, [command, params.template])\n\n  return (\n    <Dialog open={open} onOpenChange={setOpen}>\n      <DialogTrigger render={<Button className={cn(className)} />}>\n        Create Project\n      </DialogTrigger>\n      <DialogContent className=\"dark no-scrollbar max-h-[calc(100svh-2rem)] overflow-y-auto rounded-2xl border-0 bg-neutral-800 p-6 text-foreground shadow-xl ring-1 ring-neutral-950/80 backdrop-blur-xl [--border:var(--color-neutral-700)]! sm:max-w-sm\">\n        <DialogHeader>\n          <DialogTitle>Create Project</DialogTitle>\n          <DialogDescription>\n            Pick a template and configure your project.\n          </DialogDescription>\n        </DialogHeader>\n        <div>\n          <FieldGroup>\n            <FieldSeparator className=\"-mx-6\" />\n            <Field className=\"-mt-2 gap-3\">\n              <FieldLabel>Template</FieldLabel>\n              <TemplateGrid template={params.template} setParams={setParams} />\n            </Field>\n            <FieldSeparator className=\"-mx-6\" />\n            <Field className=\"-mt-2\">\n              <FieldLabel>Base</FieldLabel>\n              <BaseGrid base={params.base} setParams={setParams} />\n            </Field>\n            <FieldSeparator className=\"-mx-6\" />\n            <FieldSet>\n              <FieldLegend variant=\"label\" className=\"sr-only\">\n                Options\n              </FieldLegend>\n              <Field\n                orientation=\"horizontal\"\n                data-disabled={hasMonorepo ? undefined : \"true\"}\n              >\n                <FieldLabel htmlFor=\"monorepo\">\n                  <span\n                    className=\"size-4 text-neutral-100 [&_svg]:size-4 [&_svg]:fill-current\"\n                    dangerouslySetInnerHTML={{\n                      __html: TURBOREPO_LOGO,\n                    }}\n                  />\n                  Create a monorepo\n                </FieldLabel>\n                <Switch\n                  id=\"monorepo\"\n                  checked={params.template?.endsWith(\"-monorepo\") ?? false}\n                  disabled={!hasMonorepo}\n                  onCheckedChange={(checked) => {\n                    const framework = getFramework(params.template ?? \"next\")\n                    setParams({\n                      template: getTemplateValue(\n                        framework,\n                        checked === true\n                      ) as typeof params.template,\n                    })\n                  }}\n                />\n              </Field>\n              <FieldSeparator className=\"-mx-6\" />\n              <Field orientation=\"horizontal\">\n                <FieldLabel htmlFor=\"rtl\">\n                  <HugeiconsIcon icon={Globe02Icon} className=\"size-4\" />\n                  Enable RTL support\n                </FieldLabel>\n                <Switch\n                  id=\"rtl\"\n                  checked={params.rtl}\n                  onCheckedChange={(checked) =>\n                    setParams({ rtl: checked === true })\n                  }\n                />\n              </Field>\n            </FieldSet>\n          </FieldGroup>\n        </div>\n        <DialogFooter className=\"-mx-6 -mb-6 min-w-0\">\n          <div className=\"flex w-full min-w-0 flex-col gap-3\">\n            <Tabs\n              value={packageManager}\n              onValueChange={(value) => {\n                setConfig((prev) => ({\n                  ...prev,\n                  packageManager: value as PackageManager,\n                }))\n              }}\n              className=\"min-w-0 gap-0 overflow-hidden rounded-xl border-0 bg-neutral-950/20 ring-1 ring-neutral-950/80 dark:bg-neutral-900/50 dark:ring-neutral-700/50\"\n            >\n              <div className=\"flex items-center gap-2 py-1 pr-1.5 pl-1\">\n                <TabsList className=\"bg-transparent font-mono\">\n                  {PACKAGE_MANAGERS.map((manager) => {\n                    return (\n                      <TabsTrigger\n                        key={manager}\n                        value={manager}\n                        className=\"py-0 leading-none data-[state=active]:shadow-none\"\n                      >\n                        {manager}\n                      </TabsTrigger>\n                    )\n                  })}\n                </TabsList>\n                <Button\n                  size=\"icon-sm\"\n                  variant=\"ghost\"\n                  className=\"ml-auto\"\n                  onClick={handleCopy}\n                >\n                  {hasCopied ? (\n                    <HugeiconsIcon icon={Tick02Icon} />\n                  ) : (\n                    <HugeiconsIcon icon={Copy01Icon} />\n                  )}\n                  <span className=\"sr-only\">Copy command</span>\n                </Button>\n              </div>\n              {Object.entries(commands).map(([key, cmd]) => {\n                return (\n                  <TabsContent key={key} value={key}>\n                    <div className=\"relative overflow-hidden border-t border-neutral-700/50 bg-neutral-900/50 px-3 py-3 text-neutral-100\">\n                      <div className=\"no-scrollbar overflow-x-auto\">\n                        <code className=\"font-mono text-sm whitespace-nowrap\">\n                          {cmd}\n                        </code>\n                      </div>\n                    </div>\n                  </TabsContent>\n                )\n              })}\n            </Tabs>\n            <Button onClick={handleCopy} className=\"h-9 w-full\">\n              {hasCopied ? \"Copied\" : \"Copy Command\"}\n            </Button>\n          </div>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nconst TemplateGrid = React.memo(function TemplateGrid({\n  template,\n  setParams,\n}: {\n  template: DesignSystemSearchParams[\"template\"]\n  setParams: ReturnType<typeof useDesignSystemSearchParams>[1]\n}) {\n  const isMonorepo = template?.endsWith(\"-monorepo\") ?? false\n  const framework = getFramework(template ?? \"next\")\n\n  const handleTemplateChange = React.useCallback(\n    (value: string) => {\n      setParams({\n        template: getTemplateValue(\n          value,\n          isMonorepo\n        ) as DesignSystemSearchParams[\"template\"],\n      })\n    },\n    [isMonorepo, setParams]\n  )\n\n  return (\n    <RadioGroup\n      value={framework}\n      onValueChange={handleTemplateChange}\n      className=\"grid grid-cols-2 gap-2\"\n    >\n      {TEMPLATES.map((item) => (\n        <FieldLabel\n          key={item.value}\n          htmlFor={`template-${item.value}`}\n          className=\"block w-full\"\n        >\n          <Field\n            orientation=\"horizontal\"\n            className=\"w-full rounded-md transition-colors duration-150 hover:bg-neutral-700/45\"\n          >\n            <FieldContent className=\"flex flex-row items-center gap-2 px-2.5 py-1.5\">\n              <div\n                className=\"size-4 text-neutral-100 [&_svg]:size-4 *:[svg]:text-neutral-100!\"\n                dangerouslySetInnerHTML={{\n                  __html: item.logo,\n                }}\n              ></div>\n              <FieldTitle>{item.title}</FieldTitle>\n            </FieldContent>\n            <RadioGroupItem\n              value={item.value}\n              id={`template-${item.value}`}\n              className=\"sr-only absolute\"\n            />\n          </Field>\n        </FieldLabel>\n      ))}\n    </RadioGroup>\n  )\n})\n\nconst BaseGrid = React.memo(function BaseGrid({\n  base,\n  setParams,\n}: {\n  base: DesignSystemSearchParams[\"base\"]\n  setParams: ReturnType<typeof useDesignSystemSearchParams>[1]\n}) {\n  const handleBaseChange = React.useCallback(\n    (value: string) => {\n      setParams({ base: value as BaseName })\n    },\n    [setParams]\n  )\n\n  return (\n    <RadioGroup\n      value={base}\n      onValueChange={handleBaseChange}\n      aria-label=\"Base\"\n      className=\"grid grid-cols-2 gap-2\"\n    >\n      {BASES.map((item) => (\n        <FieldLabel\n          key={item.name}\n          htmlFor={`base-${item.name}`}\n          className=\"block w-full\"\n        >\n          <Field\n            orientation=\"horizontal\"\n            className=\"w-full rounded-md transition-colors duration-150 hover:bg-neutral-700/45\"\n          >\n            <FieldContent className=\"flex flex-row items-center gap-2 px-2.5 py-1.5\">\n              <div\n                className=\"size-4 text-neutral-100 [&_svg]:size-4 *:[svg]:text-neutral-100!\"\n                dangerouslySetInnerHTML={{\n                  __html: item.meta?.logo ?? \"\",\n                }}\n              />\n              <FieldTitle>{item.title}</FieldTitle>\n            </FieldContent>\n            <RadioGroupItem\n              value={item.name}\n              id={`base-${item.name}`}\n              className=\"sr-only absolute\"\n            />\n          </Field>\n        </FieldLabel>\n      ))}\n    </RadioGroup>\n  )\n})\n"
  },
  {
    "path": "apps/v4/app/(create)/components/radius-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { RADII, type RadiusValue } from \"@/registry/config\"\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerSeparator,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function RadiusPicker({\n  isMobile,\n  anchorRef,\n}: {\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n  const isRadiusLocked = params.style === \"lyra\"\n  const selectedRadiusName = isRadiusLocked ? \"none\" : params.radius\n\n  const currentRadius = RADII.find(\n    (radius) => radius.name === selectedRadiusName\n  )\n  const defaultRadius = RADII.find((radius) => radius.name === \"default\")\n  const otherRadii = RADII.filter((radius) => radius.name !== \"default\")\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger disabled={isRadiusLocked}>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Radius</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {currentRadius?.label}\n            </div>\n          </div>\n          <div className=\"pointer-events-none absolute top-1/2 right-4 flex size-4 -translate-y-1/2 rotate-90 items-center justify-center text-base text-foreground select-none md:right-2.5\">\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              width=\"24\"\n              height=\"24\"\n              viewBox=\"0 0 24 24\"\n              className=\"text-foreground\"\n            >\n              <path\n                fill=\"none\"\n                stroke=\"currentColor\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                strokeWidth=\"2\"\n                d=\"M4 20v-5C4 8.925 8.925 4 15 4h5\"\n              />\n            </svg>\n          </div>\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n        >\n          <PickerRadioGroup\n            value={currentRadius?.name}\n            onValueChange={(value) => {\n              if (isRadiusLocked) {\n                return\n              }\n              setParams({ radius: value as RadiusValue })\n            }}\n          >\n            <PickerGroup>\n              {defaultRadius && (\n                <PickerRadioItem\n                  key={defaultRadius.name}\n                  value={defaultRadius.name}\n                  closeOnClick={isMobile}\n                >\n                  {defaultRadius.label}\n                </PickerRadioItem>\n              )}\n            </PickerGroup>\n            <PickerSeparator />\n            <PickerGroup>\n              {otherRadii.map((radius) => (\n                <PickerRadioItem\n                  key={radius.name}\n                  value={radius.name}\n                  closeOnClick={isMobile}\n                >\n                  {radius.label}\n                </PickerRadioItem>\n              ))}\n            </PickerGroup>\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param=\"radius\"\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/random-button.tsx",
    "content": "\"use client\"\n\nimport Script from \"next/script\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { DiceFaces05Icon } from \"@hugeicons/core-free-icons\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useRandom } from \"@/app/(create)/hooks/use-random\"\n\nexport const RANDOMIZE_FORWARD_TYPE = \"randomize-forward\"\n\nexport function RandomButton({\n  variant = \"outline\",\n  className,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { randomize } = useRandom()\n\n  return (\n    <Button\n      variant={variant}\n      onClick={randomize}\n      className={cn(\n        \"touch-manipulation bg-transparent! px-2! py-0! text-sm! transition-none select-none hover:bg-muted! pointer-coarse:h-10!\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"w-full text-center font-medium\">Shuffle</span>\n    </Button>\n  )\n}\n\nexport function RandomizeScript() {\n  return (\n    <Script\n      id=\"randomize-listener\"\n      strategy=\"beforeInteractive\"\n      dangerouslySetInnerHTML={{\n        __html: `\n            (function() {\n              // Forward R key\n              document.addEventListener('keydown', function(e) {\n                if ((e.key === 'r' || e.key === 'R') && !e.metaKey && !e.ctrlKey) {\n                  if (\n                    (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n                    e.target instanceof HTMLInputElement ||\n                    e.target instanceof HTMLTextAreaElement ||\n                    e.target instanceof HTMLSelectElement\n                  ) {\n                    return;\n                  }\n                  e.preventDefault();\n                  if (window.parent && window.parent !== window) {\n                    window.parent.postMessage({\n                      type: '${RANDOMIZE_FORWARD_TYPE}',\n                      key: e.key\n                    }, '*');\n                  }\n                }\n              });\n\n            })();\n          `,\n      }}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/reset-button.tsx",
    "content": "\"use client\"\n\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n} from \"@/examples/base/ui/alert-dialog\"\n\nimport { useReset } from \"@/app/(create)/hooks/use-reset\"\n\nexport function ResetDialog() {\n  const { showResetDialog, setShowResetDialog, confirmReset } = useReset()\n\n  return (\n    <AlertDialog open={showResetDialog} onOpenChange={setShowResetDialog}>\n      <AlertDialogContent size=\"sm\">\n        <AlertDialogHeader>\n          <AlertDialogTitle>Reset to defaults?</AlertDialogTitle>\n          <AlertDialogDescription>\n            This will reset all customization options to their default values.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction onClick={confirmReset}>Reset</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/share-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Share03Icon, Tick02Icon } from \"@hugeicons/core-free-icons\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\n\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { usePresetCode } from \"@/app/(create)/hooks/use-design-system\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function ShareButton() {\n  const [params] = useDesignSystemSearchParams()\n  const presetCode = usePresetCode()\n  const [hasCopied, setHasCopied] = React.useState(false)\n\n  const shareUrl = React.useMemo(() => {\n    const origin = process.env.NEXT_PUBLIC_APP_URL || \"http://localhost:3000\"\n    return `${origin}/create?preset=${presetCode}&item=${params.item}`\n  }, [presetCode, params.item])\n\n  React.useEffect(() => {\n    if (hasCopied) {\n      const timer = setTimeout(() => setHasCopied(false), 2000)\n      return () => clearTimeout(timer)\n    }\n  }, [hasCopied])\n\n  const handleCopy = React.useCallback(() => {\n    copyToClipboardWithMeta(shareUrl, {\n      name: \"copy_create_share_url\",\n      properties: {\n        url: shareUrl,\n      },\n    })\n    setHasCopied(true)\n  }, [shareUrl])\n\n  return (\n    <Button variant=\"outline\" className=\"hidden md:flex\" onClick={handleCopy}>\n      {hasCopied ? (\n        <HugeiconsIcon\n          icon={Tick02Icon}\n          strokeWidth={2}\n          data-icon=\"inline-start\"\n        />\n      ) : (\n        <HugeiconsIcon\n          icon={Share03Icon}\n          strokeWidth={2}\n          data-icon=\"inline-start\"\n        />\n      )}\n      Share\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/style-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { type Style, type StyleName } from \"@/registry/config\"\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function StylePicker({\n  styles,\n  isMobile,\n  anchorRef,\n}: {\n  styles: readonly Style[]\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const currentStyle = styles.find((style) => style.name === params.style)\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Style</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {currentStyle?.title}\n            </div>\n          </div>\n          {currentStyle?.icon && (\n            <div className=\"pointer-events-none absolute top-1/2 right-4 flex size-4 -translate-y-1/2 items-center justify-center select-none md:right-2.5\">\n              {React.cloneElement(currentStyle.icon, {\n                className: \"size-4\",\n              })}\n            </div>\n          )}\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n        >\n          <PickerRadioGroup\n            value={currentStyle?.name}\n            onValueChange={(value) => {\n              setParams({ style: value as StyleName })\n            }}\n          >\n            <PickerGroup>\n              {styles.map((style) => (\n                <PickerRadioItem\n                  value={style.name}\n                  key={style.name}\n                  closeOnClick={isMobile}\n                >\n                  {style.title}\n                </PickerRadioItem>\n              ))}\n            </PickerGroup>\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param=\"style\"\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/theme-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { useMounted } from \"@/hooks/use-mounted\"\nimport { BASE_COLORS, type Theme, type ThemeName } from \"@/registry/config\"\nimport { LockButton } from \"@/app/(create)/components/lock-button\"\nimport {\n  Picker,\n  PickerContent,\n  PickerGroup,\n  PickerRadioGroup,\n  PickerRadioItem,\n  PickerSeparator,\n  PickerTrigger,\n} from \"@/app/(create)/components/picker\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function ThemePicker({\n  themes,\n  isMobile,\n  anchorRef,\n}: {\n  themes: readonly Theme[]\n  isMobile: boolean\n  anchorRef: React.RefObject<HTMLDivElement | null>\n}) {\n  const mounted = useMounted()\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const currentTheme = React.useMemo(\n    () => themes.find((theme) => theme.name === params.theme),\n    [themes, params.theme]\n  )\n\n  const currentThemeIsBaseColor = React.useMemo(\n    () => BASE_COLORS.find((baseColor) => baseColor.name === params.theme),\n    [params.theme]\n  )\n\n  React.useEffect(() => {\n    if (!currentTheme && themes.length > 0) {\n      setParams({ theme: themes[0].name })\n    }\n  }, [currentTheme, themes, setParams])\n\n  return (\n    <div className=\"group/picker relative\">\n      <Picker>\n        <PickerTrigger>\n          <div className=\"flex flex-col justify-start text-left\">\n            <div className=\"text-xs text-muted-foreground\">Theme</div>\n            <div className=\"text-sm font-medium text-foreground\">\n              {currentTheme?.title}\n            </div>\n          </div>\n          {mounted && (\n            <div\n              style={\n                {\n                  \"--color\":\n                    currentTheme?.cssVars?.dark?.[\n                      currentThemeIsBaseColor ? \"muted-foreground\" : \"primary\"\n                    ],\n                } as React.CSSProperties\n              }\n              className=\"pointer-events-none absolute top-1/2 right-4 size-4 -translate-y-1/2 rounded-full bg-(--color) select-none md:right-2.5\"\n            />\n          )}\n        </PickerTrigger>\n        <PickerContent\n          anchor={isMobile ? anchorRef : undefined}\n          side={isMobile ? \"top\" : \"right\"}\n          align={isMobile ? \"center\" : \"start\"}\n          className=\"max-h-92\"\n        >\n          <PickerRadioGroup\n            value={currentTheme?.name}\n            onValueChange={(value) => {\n              setParams({ theme: value as ThemeName })\n            }}\n          >\n            <PickerGroup>\n              {themes\n                .filter((theme) =>\n                  BASE_COLORS.find((baseColor) => baseColor.name === theme.name)\n                )\n                .map((theme) => {\n                  return (\n                    <PickerRadioItem\n                      key={theme.name}\n                      value={theme.name}\n                      closeOnClick={isMobile}\n                    >\n                      {theme.title}\n                    </PickerRadioItem>\n                  )\n                })}\n            </PickerGroup>\n            <PickerSeparator />\n            <PickerGroup>\n              {themes\n                .filter(\n                  (theme) =>\n                    !BASE_COLORS.find(\n                      (baseColor) => baseColor.name === theme.name\n                    )\n                )\n                .map((theme) => {\n                  return (\n                    <PickerRadioItem\n                      key={theme.name}\n                      value={theme.name}\n                      closeOnClick={isMobile}\n                    >\n                      {theme.title}\n                    </PickerRadioItem>\n                  )\n                })}\n            </PickerGroup>\n          </PickerRadioGroup>\n        </PickerContent>\n      </Picker>\n      <LockButton\n        param=\"theme\"\n        className=\"absolute top-1/2 right-8 -translate-y-1/2\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/v0-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Skeleton } from \"@/examples/base/ui/skeleton\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { useMounted } from \"@/hooks/use-mounted\"\nimport { Icons } from \"@/components/icons\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function V0Button({ className }: { className?: string }) {\n  const [params] = useDesignSystemSearchParams()\n  const isMobile = useIsMobile()\n  const isMounted = useMounted()\n\n  const url = React.useMemo(() => {\n    const searchParams = new URLSearchParams()\n\n    if (params.preset) {\n      searchParams.set(\"preset\", params.preset)\n    }\n\n    searchParams.set(\"base\", params.base)\n\n    return `${process.env.NEXT_PUBLIC_APP_URL}/init/v0?${searchParams.toString()}`\n  }, [params.preset, params.base])\n\n  const title = React.useMemo(() => {\n    return params.base && params.style\n      ? `New ${params.base}-${params.style} project`\n      : \"New Project\"\n  }, [params.base, params.style])\n\n  if (!isMounted) {\n    return <Skeleton className=\"h-8 w-24 rounded-lg\" />\n  }\n\n  return (\n    <Button\n      nativeButton={false}\n      role=\"link\"\n      variant={isMobile ? \"default\" : \"outline\"}\n      className={cn(\"h-[31px] gap-1 rounded-lg\", className)}\n      render={\n        <a\n          href={`${process.env.NEXT_PUBLIC_V0_URL}/chat/api/open?url=${url}&title=${title}`}\n          target=\"_blank\"\n        />\n      }\n    >\n      <span>Open in</span>\n      <Icons.v0 className=\"size-5\" data-icon=\"inline-end\" />\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/components/welcome-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/examples/base/ui/dialog\"\n\nimport { Icons } from \"@/components/icons\"\n\nconst STORAGE_KEY = \"shadcn-create-welcome-dialog\"\n\nexport function WelcomeDialog() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  React.useEffect(() => {\n    const dismissed = localStorage.getItem(STORAGE_KEY)\n    if (!dismissed) {\n      setIsOpen(true)\n    }\n  }, [])\n\n  // Stable callback — avoids re-creation on every render. (rerender-functional-setstate)\n  const handleOpenChange = React.useCallback((open: boolean) => {\n    setIsOpen(open)\n    if (!open) {\n      localStorage.setItem(STORAGE_KEY, \"true\")\n    }\n  }, [])\n\n  return (\n    <Dialog open={isOpen} onOpenChange={handleOpenChange}>\n      <DialogContent\n        showCloseButton={false}\n        className=\"dialog-ring max-w-92 min-w-0 gap-0 overflow-hidden rounded-xl p-0 sm:max-w-sm dark:bg-neutral-900\"\n      >\n        <div className=\"flex aspect-[2/1.2] w-full items-center justify-center rounded-t-xl bg-neutral-950 text-center text-neutral-100 sm:aspect-2/1\">\n          <div className=\"font-mono text-2xl font-bold\">\n            <Icons.logo className=\"size-12\" />\n          </div>\n        </div>\n        <DialogHeader className=\"gap-1 p-4\">\n          <DialogTitle className=\"text-left text-base\">\n            Build your own shadcn/ui\n          </DialogTitle>\n          <DialogDescription className=\"text-left leading-relaxed text-foreground\">\n            Customize everything from the ground up. Pick your component\n            library, font, color scheme, and more.\n          </DialogDescription>\n          <DialogDescription className=\"mt-2 text-left leading-relaxed font-medium text-foreground\">\n            Available for all major React frameworks.\n          </DialogDescription>\n        </DialogHeader>\n        <DialogFooter className=\"m-0\">\n          <DialogClose render={<Button className=\"w-full\" />}>\n            Get Started\n          </DialogClose>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/create/layout.tsx",
    "content": "import { Suspense } from \"react\"\n\nimport { HistoryProvider } from \"@/app/(create)/hooks/use-history\"\nimport { LocksProvider } from \"@/app/(create)/hooks/use-locks\"\n\nexport default function CreateLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <LocksProvider>\n      <Suspense>\n        <HistoryProvider>{children}</HistoryProvider>\n      </Suspense>\n    </LocksProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/create/page.tsx",
    "content": "import { type Metadata } from \"next\"\n\nimport { siteConfig } from \"@/lib/config\"\nimport { absoluteUrl } from \"@/lib/utils\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { Customizer } from \"@/app/(create)/components/customizer\"\nimport { PresetHandler } from \"@/app/(create)/components/preset-handler\"\nimport { Preview } from \"@/app/(create)/components/preview\"\nimport { WelcomeDialog } from \"@/app/(create)/components/welcome-dialog\"\nimport { getAllItems } from \"@/app/(create)/lib/api\"\n\nexport const metadata: Metadata = {\n  title: \"New Project\",\n  description:\n    \"Customize everything. Pick your component library, icons, base color, theme, fonts and create your own version of shadcn/ui.\",\n  openGraph: {\n    title: \"New Project\",\n    description:\n      \"Customize everything. Pick your component library, icons, base color, theme, fonts and create your own version of shadcn/ui.\",\n    type: \"website\",\n    url: absoluteUrl(\"/create\"),\n    images: [\n      {\n        url: siteConfig.ogImage,\n        width: 1200,\n        height: 630,\n        alt: siteConfig.name,\n      },\n    ],\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    title: \"New Project\",\n    description:\n      \"Customize everything. Pick your component library, icons, base color, theme, fonts and create your own version of shadcn/ui.\",\n    images: [siteConfig.ogImage],\n    creator: \"@shadcn\",\n  },\n}\n\nexport default async function CreatePage() {\n  const itemsByBase = await getAllItems()\n\n  return (\n    <div\n      data-slot=\"layout\"\n      className=\"group/layout relative z-10 flex h-svh flex-col overflow-hidden section-soft [--customizer-width:--spacing(56)] [--gap:--spacing(4)] md:[--gap:--spacing(6)]\"\n    >\n      <SiteHeader />\n      <main\n        data-slot=\"designer\"\n        className=\"flex min-h-0 flex-1 flex-col gap-(--gap) p-(--gap) pt-[calc(var(--gap)*0.25)] md:flex-row-reverse\"\n      >\n        <Preview />\n        <Customizer itemsByBase={itemsByBase} />\n        <PresetHandler />\n        <WelcomeDialog />\n      </main>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/hooks/use-action-menu.ts",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { type RegistryItem } from \"shadcn/schema\"\nimport useSWR from \"swr\"\n\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\nimport { groupItemsByType } from \"@/app/(create)/lib/utils\"\n\nconst ACTION_MENU_OPEN_KEY = \"create:action-menu-open\"\n\ntype ActionMenuItem = {\n  id: string\n  type: string\n  label: string\n  registryName: string\n}\n\ntype ActionMenuGroup = {\n  type: string\n  title: string\n  items: ActionMenuItem[]\n}\n\ntype ActionMenuSourceItem = Pick<RegistryItem, \"name\" | \"title\" | \"type\">\n\nconst SEARCH_KEYWORDS: Record<string, string> = {\n  \"registry:block\": \"block blocks component components\",\n  \"registry:item\": \"item items component components\",\n}\n\nfunction sortRegistryGroups(groups: ReturnType<typeof groupItemsByType>) {\n  return [...groups].sort((a, b) => {\n    if (a.type === b.type) {\n      return a.title.localeCompare(b.title)\n    }\n    if (a.type === \"registry:block\") {\n      return -1\n    }\n    if (b.type === \"registry:block\") {\n      return 1\n    }\n    return a.title.localeCompare(b.title)\n  })\n}\n\nexport function useActionMenu(\n  itemsByBase: Record<string, ActionMenuSourceItem[]>\n) {\n  const [params, setParams] = useDesignSystemSearchParams()\n  const { data: open = false, mutate: setOpenData } = useSWR<boolean>(\n    ACTION_MENU_OPEN_KEY,\n    {\n      fallbackData: false,\n      revalidateOnFocus: false,\n      revalidateIfStale: false,\n      revalidateOnReconnect: false,\n    }\n  )\n\n  const groups = React.useMemo<ActionMenuGroup[]>(() => {\n    const currentBaseItems = itemsByBase?.[params.base] ?? []\n    const sortedRegistryGroups = sortRegistryGroups(\n      groupItemsByType(currentBaseItems)\n    )\n\n    return sortedRegistryGroups.map((group) => ({\n      type: group.type,\n      title: group.title,\n      items: group.items.map((item) => ({\n        id: `${group.type}:${item.name}`,\n        type: group.type,\n        label: item.title ?? item.name,\n        registryName: item.name,\n      })),\n    }))\n  }, [itemsByBase, params.base])\n\n  const activeRegistryName = params.item\n\n  const handleSelect = React.useCallback(\n    (registryName: string) => {\n      setParams({ item: registryName })\n      void setOpenData(false, { revalidate: false })\n    },\n    [setOpenData, setParams]\n  )\n\n  const handleOpenChange = React.useCallback(\n    (nextOpen: boolean) => {\n      void setOpenData(nextOpen, { revalidate: false })\n    },\n    [setOpenData]\n  )\n\n  const getCommandValue = React.useCallback((item: ActionMenuItem) => {\n    const keywords = SEARCH_KEYWORDS[item.type] ?? item.type.replace(\":\", \" \")\n    return `${item.label ?? \"\"} ${keywords}`.trim()\n  }, [])\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if (e.key === \"p\" && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault()\n        void setOpenData((currentOpen = false) => !currentOpen, {\n          revalidate: false,\n        })\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => {\n      document.removeEventListener(\"keydown\", down)\n    }\n  }, [setOpenData])\n\n  return {\n    activeRegistryName,\n    getCommandValue,\n    groups,\n    handleSelect,\n    open,\n    setOpen: handleOpenChange,\n  }\n}\n\nexport function useActionMenuTrigger() {\n  const { mutate: setOpenData } = useSWR<boolean>(ACTION_MENU_OPEN_KEY, {\n    fallbackData: false,\n    revalidateOnFocus: false,\n    revalidateIfStale: false,\n    revalidateOnReconnect: false,\n  })\n\n  const openActionMenu = React.useCallback(() => {\n    void setOpenData(true, { revalidate: false })\n  }, [setOpenData])\n\n  return {\n    openActionMenu,\n  }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/hooks/use-design-system.ts",
    "content": "\"use client\"\n\nimport { getPresetCode } from \"@/app/(create)/lib/preset-code\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\n// Returns the canonical preset code derived from the current search params.\nexport function usePresetCode() {\n  const [params] = useDesignSystemSearchParams()\n\n  return getPresetCode(params)\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/hooks/use-history.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { usePathname, useRouter, useSearchParams } from \"next/navigation\"\n\ntype HistoryContextValue = {\n  canGoBack: boolean\n  canGoForward: boolean\n  goBack: () => void\n  goForward: () => void\n}\n\nconst HistoryContext = React.createContext<HistoryContextValue | null>(null)\n\nexport function HistoryProvider({ children }: { children: React.ReactNode }) {\n  const router = useRouter()\n  const pathname = usePathname()\n  const searchParams = useSearchParams()\n  const preset = searchParams.get(\"preset\") ?? \"\"\n\n  const entriesRef = React.useRef<string[]>([preset])\n  const indexRef = React.useRef(0)\n  const maxIndexRef = React.useRef(0)\n  const isNavigatingRef = React.useRef(false)\n\n  const [index, setIndex] = React.useState(0)\n  const [maxIndex, setMaxIndex] = React.useState(0)\n\n  React.useEffect(() => {\n    if (isNavigatingRef.current) {\n      isNavigatingRef.current = false\n      return\n    }\n\n    if (preset === entriesRef.current[indexRef.current]) {\n      return\n    }\n\n    const nextEntries = entriesRef.current.slice(0, indexRef.current + 1)\n    nextEntries.push(preset)\n    entriesRef.current = nextEntries\n\n    const nextIndex = nextEntries.length - 1\n    indexRef.current = nextIndex\n    maxIndexRef.current = nextIndex\n    setIndex(nextIndex)\n    setMaxIndex(nextIndex)\n  }, [preset])\n\n  const canGoBack = index > 0\n  const canGoForward = index < maxIndex\n\n  const goBack = React.useCallback(() => {\n    if (indexRef.current <= 0) {\n      return\n    }\n\n    isNavigatingRef.current = true\n    const nextIndex = indexRef.current - 1\n    indexRef.current = nextIndex\n    setIndex(nextIndex)\n\n    const targetPreset = entriesRef.current[nextIndex]\n    const params = new URLSearchParams(window.location.search)\n    if (targetPreset) {\n      params.set(\"preset\", targetPreset)\n    } else {\n      params.delete(\"preset\")\n    }\n    const query = params.toString()\n    router.replace(query ? `${pathname}?${query}` : pathname)\n  }, [pathname, router])\n\n  const goForward = React.useCallback(() => {\n    if (indexRef.current >= maxIndexRef.current) {\n      return\n    }\n\n    isNavigatingRef.current = true\n    const nextIndex = indexRef.current + 1\n    indexRef.current = nextIndex\n    setIndex(nextIndex)\n\n    const targetPreset = entriesRef.current[nextIndex]\n    const params = new URLSearchParams(window.location.search)\n    if (targetPreset) {\n      params.set(\"preset\", targetPreset)\n    } else {\n      params.delete(\"preset\")\n    }\n    const query = params.toString()\n    router.replace(query ? `${pathname}?${query}` : pathname)\n  }, [pathname, router])\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if (!e.metaKey && !e.ctrlKey) {\n        return\n      }\n\n      if (\n        (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n        e.target instanceof HTMLInputElement ||\n        e.target instanceof HTMLTextAreaElement ||\n        e.target instanceof HTMLSelectElement\n      ) {\n        return\n      }\n\n      const key = e.key.toLowerCase()\n\n      if ((key === \"z\" && e.shiftKey) || (key === \"y\" && e.ctrlKey)) {\n        e.preventDefault()\n        goForward()\n        return\n      }\n\n      if (key === \"z\") {\n        e.preventDefault()\n        goBack()\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n\n    return () => {\n      document.removeEventListener(\"keydown\", down)\n    }\n  }, [goBack, goForward])\n\n  const value = React.useMemo(\n    () => ({ canGoBack, canGoForward, goBack, goForward }),\n    [canGoBack, canGoForward, goBack, goForward]\n  )\n\n  return <HistoryContext value={value}>{children}</HistoryContext>\n}\n\nexport function useHistory() {\n  const context = React.useContext(HistoryContext)\n  if (!context) {\n    throw new Error(\"useHistory must be used within HistoryProvider\")\n  }\n  return context\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/hooks/use-iframe-sync.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport type { DesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\ntype ParentToIframeMessage = {\n  type: \"design-system-params\"\n  data: DesignSystemSearchParams\n}\n\nexport const isInIframe = () => {\n  if (typeof window === \"undefined\") {\n    return false\n  }\n  return window.self !== window.top\n}\n\nexport function useIframeMessageListener<\n  Message extends ParentToIframeMessage,\n  MessageType extends Message[\"type\"],\n>(\n  messageType: MessageType,\n  onMessage: (data: Extract<Message, { type: MessageType }>[\"data\"]) => void\n) {\n  const onMessageRef = React.useRef(onMessage)\n\n  React.useEffect(() => {\n    onMessageRef.current = onMessage\n  }, [onMessage])\n\n  React.useEffect(() => {\n    if (!isInIframe()) {\n      return\n    }\n\n    const handleMessage = (event: MessageEvent) => {\n      if (event.data.type === messageType) {\n        onMessageRef.current(event.data.data)\n      }\n    }\n\n    window.addEventListener(\"message\", handleMessage)\n    return () => {\n      window.removeEventListener(\"message\", handleMessage)\n    }\n  }, [messageType])\n}\n\nexport function sendToIframe<\n  Message extends ParentToIframeMessage,\n  MessageType extends Message[\"type\"],\n>(\n  iframe: HTMLIFrameElement | null,\n  messageType: MessageType,\n  data: Extract<Message, { type: MessageType }>[\"data\"]\n) {\n  if (!iframe?.contentWindow) {\n    return\n  }\n\n  iframe.contentWindow.postMessage(\n    {\n      type: messageType,\n      data,\n    },\n    \"*\"\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/hooks/use-locks.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nexport type LockableParam =\n  | \"style\"\n  | \"baseColor\"\n  | \"theme\"\n  | \"chartColor\"\n  | \"iconLibrary\"\n  | \"font\"\n  | \"fontHeading\"\n  | \"menuAccent\"\n  | \"menuColor\"\n  | \"radius\"\n\ntype LocksContextValue = {\n  locks: Set<LockableParam>\n  isLocked: (param: LockableParam) => boolean\n  toggleLock: (param: LockableParam) => void\n}\n\nconst LocksContext = React.createContext<LocksContextValue | null>(null)\n\nexport function LocksProvider({ children }: { children: React.ReactNode }) {\n  const [locks, setLocks] = React.useState<Set<LockableParam>>(new Set())\n\n  const isLocked = React.useCallback(\n    (param: LockableParam) => locks.has(param),\n    [locks]\n  )\n\n  const toggleLock = React.useCallback((param: LockableParam) => {\n    setLocks((prev) => {\n      const next = new Set(prev)\n      if (next.has(param)) {\n        next.delete(param)\n      } else {\n        next.add(param)\n      }\n      return next\n    })\n  }, [])\n\n  const value = React.useMemo(\n    () => ({ locks, isLocked, toggleLock }),\n    [locks, isLocked, toggleLock]\n  )\n\n  return <LocksContext value={value}>{children}</LocksContext>\n}\n\nexport function useLocks() {\n  const context = React.useContext(LocksContext)\n  if (!context) {\n    throw new Error(\"useLocks must be used within LocksProvider\")\n  }\n  return context\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/hooks/use-random.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  BASE_COLORS,\n  getThemesForBaseColor,\n  iconLibraries,\n  MENU_ACCENTS,\n  MENU_COLORS,\n  RADII,\n  STYLES,\n  type FontHeadingValue,\n} from \"@/registry/config\"\nimport { useLocks } from \"@/app/(create)/hooks/use-locks\"\nimport { FONTS } from \"@/app/(create)/lib/fonts\"\nimport {\n  applyBias,\n  RANDOMIZE_BIASES,\n  type RandomizeContext,\n} from \"@/app/(create)/lib/randomize-biases\"\nimport {\n  isTranslucentMenuColor,\n  useDesignSystemSearchParams,\n} from \"@/app/(create)/lib/search-params\"\n\nfunction randomItem<T>(array: readonly T[]): T {\n  return array[Math.floor(Math.random() * array.length)]\n}\n\nexport function useRandom() {\n  const { locks } = useLocks()\n  const [params, setParams] = useDesignSystemSearchParams()\n\n  const paramsRef = React.useRef(params)\n  React.useEffect(() => {\n    paramsRef.current = params\n  }, [params])\n\n  const randomize = React.useCallback(() => {\n    const selectedStyle = locks.has(\"style\")\n      ? paramsRef.current.style\n      : randomItem(STYLES).name\n\n    const context: RandomizeContext = {\n      style: selectedStyle,\n    }\n\n    const availableBaseColors = applyBias(\n      BASE_COLORS,\n      context,\n      RANDOMIZE_BIASES.baseColors\n    )\n    const baseColor = locks.has(\"baseColor\")\n      ? paramsRef.current.baseColor\n      : randomItem(availableBaseColors).name\n    context.baseColor = baseColor\n\n    const availableThemes = getThemesForBaseColor(baseColor)\n    const availableFonts = applyBias(FONTS, context, RANDOMIZE_BIASES.fonts)\n    const availableRadii = applyBias(RADII, context, RANDOMIZE_BIASES.radius)\n\n    const selectedTheme = locks.has(\"theme\")\n      ? paramsRef.current.theme\n      : randomItem(availableThemes).name\n    context.theme = selectedTheme\n\n    const availableChartColors = applyBias(\n      getThemesForBaseColor(baseColor),\n      context,\n      RANDOMIZE_BIASES.chartColors\n    )\n    const selectedChartColor = locks.has(\"chartColor\")\n      ? paramsRef.current.chartColor\n      : randomItem(availableChartColors).name\n    context.chartColor = selectedChartColor\n    const selectedFont = locks.has(\"font\")\n      ? paramsRef.current.font\n      : randomItem(availableFonts).value\n    context.font = selectedFont\n\n    // Pick heading font: ~70% inherit, ~30% distinct with cross-category contrast.\n    let selectedFontHeading: FontHeadingValue\n    if (locks.has(\"fontHeading\")) {\n      selectedFontHeading = paramsRef.current.fontHeading\n    } else if (Math.random() < 0.7) {\n      selectedFontHeading = \"inherit\"\n    } else {\n      const bodyType = availableFonts.find(\n        (f) => f.value === selectedFont\n      )?.type\n      const contrastFonts = availableFonts.filter(\n        (f) => f.type !== bodyType && f.value !== selectedFont\n      )\n      selectedFontHeading = (\n        contrastFonts.length > 0\n          ? randomItem(contrastFonts)\n          : randomItem(availableFonts)\n      ).value as FontHeadingValue\n    }\n    const selectedRadius = locks.has(\"radius\")\n      ? paramsRef.current.radius\n      : randomItem(availableRadii).name\n    const selectedIconLibrary = locks.has(\"iconLibrary\")\n      ? paramsRef.current.iconLibrary\n      : randomItem(Object.values(iconLibraries)).name\n    const lockedMenuAccent = locks.has(\"menuAccent\")\n      ? paramsRef.current.menuAccent\n      : undefined\n    const availableMenuColors =\n      !locks.has(\"menuColor\") && lockedMenuAccent === \"bold\"\n        ? MENU_COLORS.filter((menuColor) => {\n            return !isTranslucentMenuColor(menuColor.value)\n          })\n        : MENU_COLORS\n    const selectedMenuColor = locks.has(\"menuColor\")\n      ? paramsRef.current.menuColor\n      : randomItem(availableMenuColors).value\n    const selectedMenuAccent =\n      locks.has(\"menuAccent\") || isTranslucentMenuColor(selectedMenuColor)\n        ? paramsRef.current.menuAccent === \"bold\" &&\n          isTranslucentMenuColor(selectedMenuColor)\n          ? \"subtle\"\n          : paramsRef.current.menuAccent\n        : randomItem(MENU_ACCENTS).value\n\n    context.radius = selectedRadius\n\n    const nextParams = {\n      style: selectedStyle,\n      baseColor,\n      theme: selectedTheme,\n      chartColor: selectedChartColor,\n      iconLibrary: selectedIconLibrary,\n      font: selectedFont,\n      fontHeading: selectedFontHeading,\n      menuAccent: selectedMenuAccent,\n      menuColor: selectedMenuColor,\n      radius: selectedRadius,\n    }\n\n    // Keep the ref in sync so rapid repeats use the latest randomized state\n    // even before the URL state finishes committing.\n    paramsRef.current = {\n      ...paramsRef.current,\n      ...nextParams,\n    }\n\n    setParams(nextParams)\n  }, [setParams, locks])\n\n  const randomizeRef = React.useRef(randomize)\n  React.useEffect(() => {\n    randomizeRef.current = randomize\n  }, [randomize])\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if ((e.key === \"r\" || e.key === \"R\") && !e.metaKey && !e.ctrlKey) {\n        if (\n          (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n          e.target instanceof HTMLInputElement ||\n          e.target instanceof HTMLTextAreaElement ||\n          e.target instanceof HTMLSelectElement\n        ) {\n          return\n        }\n\n        e.preventDefault()\n        randomizeRef.current()\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => {\n      document.removeEventListener(\"keydown\", down)\n    }\n  }, [])\n\n  return { randomize }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/hooks/use-reset.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport useSWR from \"swr\"\n\nimport { DEFAULT_CONFIG } from \"@/registry/config\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nconst RESET_DIALOG_KEY = \"create:reset-dialog-open\"\n\nexport function useReset() {\n  const [params, setParams] = useDesignSystemSearchParams()\n  const { data: showResetDialog = false, mutate: setShowResetDialogData } =\n    useSWR<boolean>(RESET_DIALOG_KEY, {\n      fallbackData: false,\n      revalidateOnFocus: false,\n      revalidateIfStale: false,\n      revalidateOnReconnect: false,\n    })\n\n  const reset = React.useCallback(() => {\n    setParams({\n      base: params.base,\n      style: DEFAULT_CONFIG.style,\n      baseColor: DEFAULT_CONFIG.baseColor,\n      theme: DEFAULT_CONFIG.theme,\n      chartColor: DEFAULT_CONFIG.chartColor,\n      iconLibrary: DEFAULT_CONFIG.iconLibrary,\n      font: DEFAULT_CONFIG.font,\n      fontHeading: DEFAULT_CONFIG.fontHeading,\n      menuAccent: DEFAULT_CONFIG.menuAccent,\n      menuColor: DEFAULT_CONFIG.menuColor,\n      radius: DEFAULT_CONFIG.radius,\n      template: DEFAULT_CONFIG.template,\n      item: \"preview\",\n    })\n  }, [setParams, params.base])\n\n  const handleShowResetDialogChange = React.useCallback(\n    (open: boolean) => {\n      void setShowResetDialogData(open, { revalidate: false })\n    },\n    [setShowResetDialogData]\n  )\n\n  const confirmReset = React.useCallback(() => {\n    reset()\n    void setShowResetDialogData(false, { revalidate: false })\n  }, [reset, setShowResetDialogData])\n\n  return {\n    reset,\n    showResetDialog,\n    setShowResetDialog: handleShowResetDialogChange,\n    confirmReset,\n  }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/hooks/use-theme-toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useTheme } from \"next-themes\"\n\nimport { useMetaColor } from \"@/hooks/use-meta-color\"\n\nexport function useThemeToggle() {\n  const { setTheme, resolvedTheme } = useTheme()\n  const { setMetaColor, metaColor } = useMetaColor()\n\n  React.useEffect(() => {\n    setMetaColor(metaColor)\n  }, [metaColor, setMetaColor])\n\n  const toggleTheme = React.useCallback(() => {\n    setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n  }, [resolvedTheme, setTheme])\n\n  // Listen for the D key to toggle theme.\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if (\n        (e.key === \"d\" || e.key === \"D\") &&\n        !e.metaKey &&\n        !e.ctrlKey &&\n        !e.altKey\n      ) {\n        if (\n          (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n          e.target instanceof HTMLInputElement ||\n          e.target instanceof HTMLTextAreaElement ||\n          e.target instanceof HTMLSelectElement\n        ) {\n          return\n        }\n\n        e.preventDefault()\n        toggleTheme()\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => document.removeEventListener(\"keydown\", down)\n  }, [toggleTheme])\n\n  return { toggleTheme }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/init/md/build-instructions.ts",
    "content": "import dedent from \"dedent\"\n\nimport { UI_COMPONENTS } from \"@/lib/components\"\nimport {\n  buildRegistryBase,\n  getBodyFont,\n  getHeadingFont,\n  getInheritedHeadingFontValue,\n  type DesignSystemConfig,\n} from \"@/registry/config\"\n\n// Builds step-by-step markdown instructions for manually setting up a project.\nexport function buildInstructions(config: DesignSystemConfig) {\n  const registryBase = buildRegistryBase(config)\n  const normalizedFontHeading =\n    config.fontHeading === config.font ? \"inherit\" : config.fontHeading\n\n  const dependencies = [\n    ...(registryBase.dependencies ?? []),\n    \"clsx\",\n    \"tailwind-merge\",\n  ]\n\n  const lightVars = Object.entries(registryBase.cssVars?.light ?? {})\n    .map(([key, value]) => `  --${key}: ${value};`)\n    .join(\"\\n\")\n\n  const darkVars = Object.entries(registryBase.cssVars?.dark ?? {})\n    .map(([key, value]) => `  --${key}: ${value};`)\n    .join(\"\\n\")\n\n  const font = getBodyFont(config.font)\n  const headingFont =\n    normalizedFontHeading === \"inherit\"\n      ? undefined\n      : getHeadingFont(normalizedFontHeading)\n\n  const sections = [\n    buildDependenciesSection(dependencies),\n    buildUtilsSection(),\n    buildCssSection(\n      lightVars,\n      darkVars,\n      normalizedFontHeading === \"inherit\"\n        ? getInheritedHeadingFontValue(config.font)\n        : \"var(--font-heading)\"\n    ),\n    buildFontSection(font, headingFont),\n    buildComponentsJsonSection(config),\n    buildAvailableComponentsSection(config),\n    config.rtl ? buildRtlSection(config) : null,\n  ]\n\n  return sections.filter(Boolean).join(\"\\n\\n---\\n\\n\")\n}\n\nfunction buildDependenciesSection(dependencies: string[]) {\n  const list = dependencies.map((dep) => `- ${dep}`).join(\"\\n\")\n\n  return dedent`\n    ## Step 1: Dependencies\n\n    The following dependencies are required:\n\n    ${list}\n  `\n}\n\nfunction buildUtilsSection() {\n  return dedent`\n    ## Step 2: Create \\`lib/utils.ts\\`\n\n    \\`\\`\\`ts\n    import { clsx, type ClassValue } from \"clsx\"\n    import { twMerge } from \"tailwind-merge\"\n\n    export function cn(...inputs: ClassValue[]) {\n      return twMerge(clsx(inputs))\n    }\n    \\`\\`\\`\n  `\n}\n\nfunction buildCssSection(\n  lightVars: string,\n  darkVars: string,\n  fontHeadingValue: string\n) {\n  return dedent`\n    ## Step 3: Set up CSS\n\n    Add the following to your global CSS file (e.g. \\`app/globals.css\\`):\n\n    \\`\\`\\`css\n    @import \"tailwindcss\";\n    @import \"tw-animate-css\";\n    @import \"shadcn/tailwind.css\";\n\n    @theme inline {\n      --font-sans: var(--font-sans);\n      --font-heading: ${fontHeadingValue};\n      --font-mono: var(--font-mono);\n      --color-background: var(--background);\n      --color-foreground: var(--foreground);\n      --color-card: var(--card);\n      --color-card-foreground: var(--card-foreground);\n      --color-popover: var(--popover);\n      --color-popover-foreground: var(--popover-foreground);\n      --color-primary: var(--primary);\n      --color-primary-foreground: var(--primary-foreground);\n      --color-secondary: var(--secondary);\n      --color-secondary-foreground: var(--secondary-foreground);\n      --color-muted: var(--muted);\n      --color-muted-foreground: var(--muted-foreground);\n      --color-accent: var(--accent);\n      --color-accent-foreground: var(--accent-foreground);\n      --color-destructive: var(--destructive);\n      --color-destructive-foreground: var(--destructive-foreground);\n      --color-border: var(--border);\n      --color-input: var(--input);\n      --color-ring: var(--ring);\n      --color-chart-1: var(--chart-1);\n      --color-chart-2: var(--chart-2);\n      --color-chart-3: var(--chart-3);\n      --color-chart-4: var(--chart-4);\n      --color-chart-5: var(--chart-5);\n      --color-sidebar: var(--sidebar);\n      --color-sidebar-foreground: var(--sidebar-foreground);\n      --color-sidebar-primary: var(--sidebar-primary);\n      --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n      --color-sidebar-accent: var(--sidebar-accent);\n      --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n      --color-sidebar-border: var(--sidebar-border);\n      --color-sidebar-ring: var(--sidebar-ring);\n      --radius-sm: calc(var(--radius) * 0.6);\n      --radius-md: calc(var(--radius) * 0.8);\n      --radius-lg: var(--radius);\n      --radius-xl: calc(var(--radius) * 1.4);\n      --radius-2xl: calc(var(--radius) * 1.8);\n      --radius-3xl: calc(var(--radius) * 2.2);\n      --radius-4xl: calc(var(--radius) * 2.6);\n    }\n\n    :root {\n    ${lightVars}\n    }\n\n    .dark {\n    ${darkVars}\n    }\n\n    @layer base {\n      * {\n        @apply border-border outline-ring/50;\n      }\n      body {\n        @apply bg-background text-foreground;\n      }\n    }\n    \\`\\`\\`\n  `\n}\n\nfunction buildFontSection(\n  font: ReturnType<typeof getBodyFont>,\n  headingFont: ReturnType<typeof getHeadingFont>\n) {\n  if (!font) {\n    return null\n  }\n\n  const googleFontsUrl = `https://fonts.google.com/specimen/${font.font.import.replace(/_/g, \"+\")}`\n  const headingGoogleFontsUrl = headingFont\n    ? `https://fonts.google.com/specimen/${headingFont.font.import.replace(/_/g, \"+\")}`\n    : null\n  const nextImports = headingFont\n    ? `${font.font.import}, ${headingFont.font.import}`\n    : font.font.import\n  const nextDeclarations = [\n    `const fontSans = ${font.font.import}({`,\n    `  subsets: [\"latin\"],`,\n    `  variable: \"${font.font.variable}\",`,\n    `})`,\n    headingFont ? `const fontHeading = ${headingFont.font.import}({` : null,\n    headingFont ? `  subsets: [\"latin\"],` : null,\n    headingFont ? `  variable: \"${headingFont.font.variable}\",` : null,\n    headingFont ? `})` : null,\n  ]\n    .filter(Boolean)\n    .join(\"\\n\")\n  const nextHtmlClassName = headingFont\n    ? 'className={fontSans.variable + \" \" + fontHeading.variable}'\n    : `className={fontSans.variable}`\n  const otherFrameworkCss = [\n    \":root {\",\n    `  ${font.font.variable}: ${font.font.family};`,\n    ...(headingFont\n      ? [`  ${headingFont.font.variable}: ${headingFont.font.family};`]\n      : []),\n    \"}\",\n  ].join(\"\\n\")\n  const headingSection = headingFont\n    ? dedent`\n\n      This config also uses **${headingFont.title.replace(\" (Heading)\", \"\")}** for headings (\\`${headingFont.font.variable}\\`).\n    `\n    : \"\"\n\n  return dedent`\n    ## Step 4: Set up the font\n\n    This config uses **${font.title}** (\\`${font.font.variable}\\`).\n    ${headingSection}\n\n    ### Next.js\n\n    \\`\\`\\`tsx\n    import { ${nextImports} } from \"next/font/google\"\n\n    ${nextDeclarations}\n\n    // Add the font variable classes to your <html> className.\n    // <html ${nextHtmlClassName}>\n    \\`\\`\\`\n\n    ### Other frameworks\n\n    Add the font${headingFont ? \"s\" : \"\"} from [Google Fonts](${googleFontsUrl})${headingGoogleFontsUrl ? ` and [Google Fonts](${headingGoogleFontsUrl})` : \"\"} and set the CSS variable${headingFont ? \"s\" : \"\"} to the font famil${headingFont ? \"ies\" : \"y\"}:\n\n    \\`\\`\\`css\n    ${otherFrameworkCss}\n    \\`\\`\\`\n  `\n}\n\nfunction buildComponentsJsonSection(config: DesignSystemConfig) {\n  const componentsJson = {\n    $schema: \"https://ui.shadcn.com/schema.json\",\n    style: `${config.base}-${config.style}`,\n    tailwind: {\n      css: \"app/globals.css\",\n      baseColor: config.baseColor,\n    },\n    iconLibrary: config.iconLibrary,\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n      ui: \"@/components/ui\",\n      lib: \"@/lib\",\n      hooks: \"@/hooks\",\n    },\n  }\n\n  return dedent`\n    ## Step 5: Create \\`components.json\\`\n\n    Add a \\`components.json\\` file to the root of your project:\n\n    \\`\\`\\`json\n    ${JSON.stringify(componentsJson, null, 2)}\n    \\`\\`\\`\n  `\n}\n\nfunction buildAvailableComponentsSection(config: DesignSystemConfig) {\n  const list = UI_COMPONENTS.join(\", \")\n  const style = `${config.base}-${config.style}`\n\n  return dedent`\n    ## Available Components\n\n    ${list}\n\n    To fetch the source for a component, use:\n    \\`https://ui.shadcn.com/r/styles/${style}/<component>.json\\`\n\n    For documentation and examples, visit:\n    \\`https://ui.shadcn.com/docs/components/${config.base}/<component>\\`\n  `\n}\n\nfunction buildRtlSection(config: DesignSystemConfig) {\n  const template =\n    config.template === \"next-monorepo\" ? \"next\" : (config.template ?? \"next\")\n\n  return dedent`\n    ## RTL Support\n\n    Add \\`dir=\"rtl\"\\` to your root \\`<html>\\` element:\n\n    \\`\\`\\`html\n    <html dir=\"rtl\">\n    \\`\\`\\`\n\n    For full RTL setup including the \\`DirectionProvider\\`, see the [RTL documentation](https://ui.shadcn.com/docs/rtl/${template}).\n  `\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/init/md/route.ts",
    "content": "import { type NextRequest } from \"next/server\"\nimport { track } from \"@vercel/analytics/server\"\n\nimport { parseDesignSystemConfig } from \"@/app/(create)/init/parse-config\"\n\nimport { buildInstructions } from \"./build-instructions\"\n\nexport async function GET(request: NextRequest) {\n  try {\n    const searchParams = request.nextUrl.searchParams\n    const result = parseDesignSystemConfig(searchParams)\n\n    if (!result.success) {\n      return new Response(result.error, { status: 400 })\n    }\n\n    track(\"create_app_manual\", result.data)\n\n    const markdown = buildInstructions(result.data)\n\n    return new Response(markdown, {\n      headers: { \"Content-Type\": \"text/markdown; charset=utf-8\" },\n    })\n  } catch (error) {\n    return new Response(\n      error instanceof Error ? error.message : \"An unknown error occurred\",\n      { status: 500 }\n    )\n  }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/init/parse-config.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport { parseDesignSystemConfig } from \"./parse-config\"\n\ndescribe(\"parseDesignSystemConfig\", () => {\n  it(\"honors explicit fontHeading and chartColor overrides when a preset is present\", () => {\n    const result = parseDesignSystemConfig(\n      new URLSearchParams(\n        \"preset=a0&fontHeading=playfair-display&chartColor=emerald\"\n      )\n    )\n\n    expect(result.success).toBe(true)\n    if (!result.success) {\n      throw new Error(result.error)\n    }\n\n    expect(result.data.fontHeading).toBe(\"playfair-display\")\n    expect(result.data.chartColor).toBe(\"emerald\")\n  })\n})\n"
  },
  {
    "path": "apps/v4/app/(create)/init/parse-config.ts",
    "content": "import { decodePreset, isPresetCode } from \"shadcn/preset\"\n\nimport {\n  designSystemConfigSchema,\n  type DesignSystemConfig,\n} from \"@/registry/config\"\nimport { resolvePresetOverrides } from \"@/app/(create)/lib/preset-query\"\n\n// Parses design system config from URL search params.\nexport function parseDesignSystemConfig(searchParams: URLSearchParams) {\n  let configInput: Record<string, unknown>\n  const presetParam = searchParams.get(\"preset\")\n\n  if (presetParam && isPresetCode(presetParam)) {\n    const decoded = decodePreset(presetParam)\n    if (!decoded) {\n      return { success: false as const, error: \"Invalid preset code\" }\n    }\n    const presetOverrides = resolvePresetOverrides(searchParams, decoded)\n    configInput = {\n      ...decoded,\n      ...presetOverrides,\n      base: searchParams.get(\"base\") ?? \"radix\",\n      template: searchParams.get(\"template\") ?? undefined,\n      rtl: searchParams.get(\"rtl\") === \"true\",\n    }\n  } else {\n    configInput = {\n      base: searchParams.get(\"base\"),\n      style: searchParams.get(\"style\"),\n      iconLibrary: searchParams.get(\"iconLibrary\"),\n      baseColor: searchParams.get(\"baseColor\"),\n      theme: searchParams.get(\"theme\"),\n      chartColor: searchParams.get(\"chartColor\") ?? undefined,\n      font: searchParams.get(\"font\"),\n      fontHeading: searchParams.get(\"fontHeading\") ?? undefined,\n      menuAccent: searchParams.get(\"menuAccent\"),\n      menuColor: searchParams.get(\"menuColor\"),\n      radius: searchParams.get(\"radius\"),\n      template: searchParams.get(\"template\") ?? undefined,\n      rtl: searchParams.get(\"rtl\") === \"true\",\n    }\n  }\n\n  const result = designSystemConfigSchema.safeParse(configInput)\n\n  if (!result.success) {\n    return { success: false as const, error: result.error.issues[0].message }\n  }\n\n  return { success: true as const, data: result.data as DesignSystemConfig }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/init/route.ts",
    "content": "import { NextResponse, type NextRequest } from \"next/server\"\nimport { track } from \"@vercel/analytics/server\"\nimport { isPresetCode } from \"shadcn/preset\"\nimport { registryItemSchema } from \"shadcn/schema\"\n\nimport { buildRegistryBase } from \"@/registry/config\"\nimport { parseDesignSystemConfig } from \"@/app/(create)/init/parse-config\"\nimport { getPresetCode } from \"@/app/(create)/lib/preset-code\"\n\nexport async function GET(request: NextRequest) {\n  try {\n    const searchParams = request.nextUrl.searchParams\n    const result = parseDesignSystemConfig(searchParams)\n\n    if (!result.success) {\n      return NextResponse.json({ error: result.error }, { status: 400 })\n    }\n\n    const rawPreset = searchParams.get(\"preset\")\n    const presetCode =\n      rawPreset && isPresetCode(rawPreset)\n        ? rawPreset\n        : getPresetCode(result.data)\n\n    const registryBase = buildRegistryBase(result.data)\n    const parseResult = registryItemSchema.safeParse(registryBase)\n\n    if (!parseResult.success) {\n      return NextResponse.json(\n        {\n          error: \"Invalid registry base item\",\n          details: parseResult.error.format(),\n        },\n        { status: 500 }\n      )\n    }\n\n    if (searchParams.get(\"track\") === \"1\") {\n      track(\"create_app\", {\n        ...result.data,\n        preset: presetCode,\n      })\n    }\n\n    return NextResponse.json(parseResult.data)\n  } catch (error) {\n    return NextResponse.json(\n      {\n        error:\n          error instanceof Error ? error.message : \"An unknown error occurred\",\n      },\n      { status: 500 }\n    )\n  }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/init/v0/route.ts",
    "content": "import { after, NextResponse, type NextRequest } from \"next/server\"\nimport { track } from \"@vercel/analytics/server\"\nimport { isPresetCode } from \"shadcn/preset\"\n\nimport { parseDesignSystemConfig } from \"@/app/(create)/init/parse-config\"\nimport { getPresetCode } from \"@/app/(create)/lib/preset-code\"\nimport { buildV0Payload } from \"@/app/(create)/lib/v0\"\n\nexport async function GET(request: NextRequest) {\n  try {\n    const searchParams = request.nextUrl.searchParams\n    const result = parseDesignSystemConfig(searchParams)\n\n    if (!result.success) {\n      return NextResponse.json({ error: result.error }, { status: 400 })\n    }\n\n    const rawPreset = searchParams.get(\"preset\")\n    const presetCode =\n      rawPreset && isPresetCode(rawPreset)\n        ? rawPreset\n        : getPresetCode(result.data)\n\n    // Defer analytics to after response is sent.\n    after(() => {\n      track(\"create_open_in_v0\", {\n        ...result.data,\n        preset: presetCode,\n      })\n    })\n\n    const payload = await buildV0Payload(result.data)\n\n    return NextResponse.json(payload)\n  } catch (error) {\n    return NextResponse.json(\n      {\n        error:\n          error instanceof Error ? error.message : \"An unknown error occurred\",\n      },\n      { status: 500 }\n    )\n  }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/api.ts",
    "content": "import \"server-only\"\n\nimport { registryItemSchema } from \"shadcn/schema\"\n\nimport { BASES, getThemesForBaseColor, type BaseName } from \"@/registry/config\"\nimport {\n  ALLOWED_ITEM_TYPES,\n  EXCLUDED_ITEMS,\n} from \"@/app/(create)/lib/constants\"\n\nexport async function getItemsForBase(base: BaseName) {\n  const { Index } = await import(\"@/registry/bases/__index__\")\n  const index = Index[base]\n\n  if (!index) {\n    return []\n  }\n\n  return Object.values(index).filter(\n    (item) =>\n      ALLOWED_ITEM_TYPES.includes(item.type) &&\n      !EXCLUDED_ITEMS.includes(item.name)\n  )\n}\n\nexport async function getBaseItem(name: string, base: BaseName) {\n  const { Index } = await import(\"@/registry/bases/__index__\")\n  const index = Index[base]\n\n  if (!index?.[name] || EXCLUDED_ITEMS.includes(name)) {\n    return null\n  }\n\n  return registryItemSchema.parse(index[name])\n}\n\nexport async function getBaseComponent(name: string, base: BaseName) {\n  const { Index } = await import(\"@/registry/bases/__index__\")\n  const index = Index[base]\n\n  if (!index?.[name] || EXCLUDED_ITEMS.includes(name)) {\n    return null\n  }\n\n  return index[name].component\n}\n\nexport async function getAllItems() {\n  const entries = await Promise.all(\n    BASES.map(async (base) => {\n      const items = await getItemsForBase(base.name as BaseName)\n      const filtered: Pick<\n        NonNullable<(typeof items)[number]>,\n        \"name\" | \"title\" | \"type\"\n      >[] = []\n      for (const item of items) {\n        if (item !== null && !/\\d+$/.test(item.name)) {\n          filtered.push({\n            name: item.name,\n            title: item.title,\n            type: item.type,\n          })\n        }\n      }\n      return [base.name, filtered] as const\n    })\n  )\n  return Object.fromEntries(entries)\n}\n\n// Re-export for server-side use.\nexport { getThemesForBaseColor }\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/constants.ts",
    "content": "export const ALLOWED_ITEM_TYPES = [\"registry:block\", \"registry:example\"]\n\nexport const EXCLUDED_ITEMS = [\"component-example\"]\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/fonts.ts",
    "content": "import {\n  DM_Sans,\n  Figtree,\n  Geist,\n  Geist_Mono,\n  IBM_Plex_Sans,\n  Instrument_Sans,\n  Inter,\n  JetBrains_Mono,\n  Lora,\n  Manrope,\n  Merriweather,\n  Montserrat,\n  Noto_Sans,\n  Noto_Serif,\n  Nunito_Sans,\n  Outfit,\n  Oxanium,\n  Playfair_Display,\n  Public_Sans,\n  Raleway,\n  Roboto,\n  Roboto_Slab,\n  Source_Sans_3,\n  Space_Grotesk,\n} from \"next/font/google\"\n\nimport { FONT_DEFINITIONS, type FontName } from \"@/lib/font-definitions\"\n\ntype PreviewFont = ReturnType<typeof Inter>\n\nconst geistSans = Geist({\n  subsets: [\"latin\"],\n  variable: \"--font-geist-sans\",\n})\n\nconst inter = Inter({\n  subsets: [\"latin\"],\n  variable: \"--font-inter\",\n})\n\nconst notoSans = Noto_Sans({\n  subsets: [\"latin\"],\n  variable: \"--font-noto-sans\",\n})\n\nconst nunitoSans = Nunito_Sans({\n  subsets: [\"latin\"],\n  variable: \"--font-nunito-sans\",\n})\n\nconst figtree = Figtree({\n  subsets: [\"latin\"],\n  variable: \"--font-figtree\",\n})\n\nconst roboto = Roboto({\n  subsets: [\"latin\"],\n  variable: \"--font-roboto\",\n})\n\nconst raleway = Raleway({\n  subsets: [\"latin\"],\n  variable: \"--font-raleway\",\n})\n\nconst dmSans = DM_Sans({\n  subsets: [\"latin\"],\n  variable: \"--font-dm-sans\",\n})\n\nconst publicSans = Public_Sans({\n  subsets: [\"latin\"],\n  variable: \"--font-public-sans\",\n})\n\nconst outfit = Outfit({\n  subsets: [\"latin\"],\n  variable: \"--font-outfit\",\n})\n\nconst oxanium = Oxanium({\n  subsets: [\"latin\"],\n  variable: \"--font-oxanium\",\n})\n\nconst manrope = Manrope({\n  subsets: [\"latin\"],\n  variable: \"--font-manrope\",\n})\n\nconst spaceGrotesk = Space_Grotesk({\n  subsets: [\"latin\"],\n  variable: \"--font-space-grotesk\",\n})\n\nconst montserrat = Montserrat({\n  subsets: [\"latin\"],\n  variable: \"--font-montserrat\",\n})\n\nconst ibmPlexSans = IBM_Plex_Sans({\n  subsets: [\"latin\"],\n  variable: \"--font-ibm-plex-sans\",\n})\n\nconst sourceSans3 = Source_Sans_3({\n  subsets: [\"latin\"],\n  variable: \"--font-source-sans-3\",\n})\n\nconst instrumentSans = Instrument_Sans({\n  subsets: [\"latin\"],\n  variable: \"--font-instrument-sans\",\n})\n\nconst jetbrainsMono = JetBrains_Mono({\n  subsets: [\"latin\"],\n  variable: \"--font-jetbrains-mono\",\n})\n\nconst geistMono = Geist_Mono({\n  subsets: [\"latin\"],\n  variable: \"--font-geist-mono\",\n})\n\nconst notoSerif = Noto_Serif({\n  subsets: [\"latin\"],\n  variable: \"--font-noto-serif\",\n})\n\nconst robotoSlab = Roboto_Slab({\n  subsets: [\"latin\"],\n  variable: \"--font-roboto-slab\",\n})\n\nconst merriweather = Merriweather({\n  subsets: [\"latin\"],\n  variable: \"--font-merriweather\",\n})\n\nconst lora = Lora({\n  subsets: [\"latin\"],\n  variable: \"--font-lora\",\n})\n\nconst playfairDisplay = Playfair_Display({\n  subsets: [\"latin\"],\n  variable: \"--font-playfair-display\",\n})\n\nconst PREVIEW_FONTS = {\n  geist: geistSans,\n  inter,\n  \"noto-sans\": notoSans,\n  \"nunito-sans\": nunitoSans,\n  figtree,\n  roboto,\n  raleway,\n  \"dm-sans\": dmSans,\n  \"public-sans\": publicSans,\n  outfit,\n  oxanium,\n  manrope,\n  \"space-grotesk\": spaceGrotesk,\n  montserrat,\n  \"ibm-plex-sans\": ibmPlexSans,\n  \"source-sans-3\": sourceSans3,\n  \"instrument-sans\": instrumentSans,\n  \"jetbrains-mono\": jetbrainsMono,\n  \"geist-mono\": geistMono,\n  \"noto-serif\": notoSerif,\n  \"roboto-slab\": robotoSlab,\n  merriweather,\n  lora,\n  \"playfair-display\": playfairDisplay,\n} satisfies Record<FontName, PreviewFont>\n\nfunction createFontOption(name: FontName) {\n  const definition = FONT_DEFINITIONS.find((font) => font.name === name)\n\n  if (!definition) {\n    throw new Error(`Unknown font definition: ${name}`)\n  }\n\n  return {\n    name: definition.title,\n    value: definition.name,\n    font: PREVIEW_FONTS[name],\n    type: definition.type,\n  } as const\n}\n\nexport const FONTS = [\n  createFontOption(\"geist\"),\n  createFontOption(\"inter\"),\n  createFontOption(\"noto-sans\"),\n  createFontOption(\"nunito-sans\"),\n  createFontOption(\"figtree\"),\n  createFontOption(\"roboto\"),\n  createFontOption(\"raleway\"),\n  createFontOption(\"dm-sans\"),\n  createFontOption(\"public-sans\"),\n  createFontOption(\"outfit\"),\n  createFontOption(\"oxanium\"),\n  createFontOption(\"manrope\"),\n  createFontOption(\"space-grotesk\"),\n  createFontOption(\"montserrat\"),\n  createFontOption(\"ibm-plex-sans\"),\n  createFontOption(\"source-sans-3\"),\n  createFontOption(\"instrument-sans\"),\n  createFontOption(\"geist-mono\"),\n  createFontOption(\"jetbrains-mono\"),\n  createFontOption(\"noto-serif\"),\n  createFontOption(\"roboto-slab\"),\n  createFontOption(\"merriweather\"),\n  createFontOption(\"lora\"),\n  createFontOption(\"playfair-display\"),\n] as const\n\nexport type Font = (typeof FONTS)[number]\n\nexport const FONT_HEADING_OPTIONS = [\n  {\n    name: \"Inherit\",\n    value: \"inherit\",\n    font: null,\n    type: \"default\",\n  },\n  ...FONTS,\n] as const\n\nexport type FontHeadingOption = (typeof FONT_HEADING_OPTIONS)[number]\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/merge-theme.ts",
    "content": "import { registryItemSchema, type RegistryItem } from \"shadcn/schema\"\n\nimport { BASE_COLORS, THEMES } from \"@/registry/config\"\n\nexport function buildTheme(baseColorName: string, themeName: string) {\n  const baseColor = BASE_COLORS.find((c) => c.name === baseColorName)\n  const theme = THEMES.find((t) => t.name === themeName)\n\n  if (!baseColor || !theme) {\n    throw new Error(\n      `Base color \"${baseColorName}\" or theme \"${themeName}\" not found`\n    )\n  }\n\n  const mergedTheme: RegistryItem = {\n    name: `${baseColor.name}-${theme.name}`,\n    title: `${baseColor.title} ${theme.title}`,\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        ...baseColor.cssVars?.light,\n        ...theme.cssVars?.light,\n      },\n      dark: {\n        ...baseColor.cssVars?.dark,\n        ...theme.cssVars?.dark,\n      },\n    },\n  }\n\n  return registryItemSchema.parse(mergedTheme)\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/preset-code.ts",
    "content": "import { encodePreset, type PresetConfig } from \"shadcn/preset\"\n\nimport { type DesignSystemConfig } from \"@/registry/config\"\n\ntype PresetCodeConfig = Pick<\n  DesignSystemConfig,\n  | \"style\"\n  | \"baseColor\"\n  | \"theme\"\n  | \"chartColor\"\n  | \"iconLibrary\"\n  | \"font\"\n  | \"fontHeading\"\n  | \"radius\"\n  | \"menuAccent\"\n  | \"menuColor\"\n>\n\nexport function getPresetCode(config: PresetCodeConfig) {\n  const presetConfig: Partial<PresetConfig> = {\n    style: config.style as PresetConfig[\"style\"],\n    baseColor: config.baseColor as PresetConfig[\"baseColor\"],\n    theme: config.theme as PresetConfig[\"theme\"],\n    chartColor: config.chartColor as PresetConfig[\"chartColor\"],\n    iconLibrary: config.iconLibrary as PresetConfig[\"iconLibrary\"],\n    font: config.font as PresetConfig[\"font\"],\n    fontHeading: config.fontHeading as PresetConfig[\"fontHeading\"],\n    radius: config.radius as PresetConfig[\"radius\"],\n    menuAccent: config.menuAccent as PresetConfig[\"menuAccent\"],\n    menuColor: config.menuColor as PresetConfig[\"menuColor\"],\n  }\n\n  return encodePreset(presetConfig)\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/preset-query.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport { resolvePresetOverrides } from \"./preset-query\"\n\ndescribe(\"resolvePresetOverrides\", () => {\n  it(\"prefers explicit fontHeading and chartColor query params\", () => {\n    const overrides = resolvePresetOverrides(\n      new URLSearchParams(\"fontHeading=playfair-display&chartColor=emerald\"),\n      {\n        theme: \"neutral\",\n        chartColor: \"blue\",\n        fontHeading: \"inherit\",\n      }\n    )\n\n    expect(overrides).toEqual({\n      fontHeading: \"playfair-display\",\n      chartColor: \"emerald\",\n    })\n  })\n\n  it(\"falls back to decoded preset values when no overrides are present\", () => {\n    const overrides = resolvePresetOverrides(new URLSearchParams(), {\n      theme: \"neutral\",\n      chartColor: \"blue\",\n      fontHeading: \"inherit\",\n    })\n\n    expect(overrides).toEqual({\n      fontHeading: \"inherit\",\n      chartColor: \"blue\",\n    })\n  })\n})\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/preset-query.ts",
    "content": "import { V1_CHART_COLOR_MAP, type PresetConfig } from \"shadcn/preset\"\n\nimport { type ChartColorName, type FontHeadingValue } from \"@/registry/config\"\n\ntype SearchParamsLike = Pick<URLSearchParams, \"get\" | \"has\">\n\nexport function resolvePresetOverrides(\n  searchParams: SearchParamsLike,\n  decoded: Pick<PresetConfig, \"theme\" | \"chartColor\" | \"fontHeading\">\n) {\n  const hasFontHeadingOverride = searchParams.has(\"fontHeading\")\n  const hasChartColorOverride = searchParams.has(\"chartColor\")\n\n  const fontHeading = hasFontHeadingOverride\n    ? ((searchParams.get(\"fontHeading\") ??\n        decoded.fontHeading) as FontHeadingValue)\n    : decoded.fontHeading\n\n  const chartColor = hasChartColorOverride\n    ? ((searchParams.get(\"chartColor\") ??\n        decoded.chartColor ??\n        V1_CHART_COLOR_MAP[decoded.theme] ??\n        decoded.theme) as ChartColorName)\n    : (decoded.chartColor ?? V1_CHART_COLOR_MAP[decoded.theme] ?? decoded.theme)\n\n  return {\n    fontHeading,\n    chartColor,\n  }\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/randomize-biases.ts",
    "content": "import type {\n  BaseColor,\n  BaseColorName,\n  Radius,\n  StyleName,\n  Theme,\n  ThemeName,\n} from \"@/registry/config\"\n\nimport { type FONTS } from \"./fonts\"\n\nexport type RandomizeContext = {\n  style?: StyleName\n  baseColor?: BaseColorName\n  theme?: ThemeName\n  chartColor?: string\n  iconLibrary?: string\n  font?: string\n  menuAccent?: string\n  menuColor?: string\n  radius?: string\n}\n\nexport type BiasFilter<T> = (\n  items: readonly T[],\n  context: RandomizeContext\n) => readonly T[]\n\nexport type RandomizeBiases = {\n  baseColors?: BiasFilter<BaseColor>\n  chartColors?: BiasFilter<Theme>\n  fonts?: BiasFilter<(typeof FONTS)[number]>\n  radius?: BiasFilter<Radius>\n}\n\n// Theme → chart color pairings for randomization.\nconst CHART_COLOR_PAIRINGS: Record<string, string[]> = {\n  red: [\"teal\", \"sky\"],\n  orange: [\"teal\", \"blue\"],\n  amber: [\"cyan\", \"indigo\"],\n  yellow: [\"sky\", \"violet\"],\n  lime: [\"indigo\", \"pink\"],\n  green: [\"purple\", \"rose\"],\n  emerald: [\"purple\", \"red\"],\n  teal: [\"fuchsia\", \"red\"],\n  cyan: [\"rose\", \"amber\"],\n  sky: [\"red\", \"yellow\"],\n  blue: [\"orange\", \"yellow\"],\n  indigo: [\"amber\", \"yellow\"],\n  violet: [\"yellow\", \"lime\"],\n  purple: [\"green\", \"lime\"],\n  fuchsia: [\"lime\", \"teal\"],\n  pink: [\"green\", \"cyan\"],\n  rose: [\"emerald\", \"sky\"],\n}\n\n/**\n * Configuration for randomization biases.\n * Add biases here to influence random selection based on context.\n */\nexport const RANDOMIZE_BIASES: RandomizeBiases = {\n  baseColors: (baseColors) => {\n    return baseColors.filter((c) => c.name !== \"gray\")\n  },\n  fonts: (fonts, context) => {\n    // When style is lyra, only use mono fonts.\n    if (context.style === \"lyra\") {\n      return fonts.filter((font) => font.value === \"jetbrains-mono\")\n    }\n\n    return fonts\n  },\n  radius: (radii, context) => {\n    // When style is lyra, always use \"none\" radius.\n    if (context.style === \"lyra\") {\n      return radii.filter((radius) => radius.name === \"none\")\n    }\n\n    return radii\n  },\n  chartColors: (chartColors, context) => {\n    // When theme has a pairing, restrict chart colors to the paired values.\n    const pairing = context.theme ? CHART_COLOR_PAIRINGS[context.theme] : null\n    if (pairing) {\n      const filtered = chartColors.filter((c) => pairing.includes(c.name))\n      if (filtered.length > 0) {\n        return filtered\n      }\n    }\n\n    return chartColors\n  },\n}\n\n/**\n * Applies biases to a list of items based on the current context.\n */\nexport function applyBias<T>(\n  items: readonly T[],\n  context: RandomizeContext,\n  biasFilter?: BiasFilter<T>\n): readonly T[] {\n  if (!biasFilter) {\n    return items\n  }\n\n  return biasFilter(items, context)\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/search-params.ts",
    "content": "import * as React from \"react\"\nimport { useSearchParams } from \"next/navigation\"\nimport { useQueryStates } from \"nuqs\"\nimport {\n  createLoader,\n  createSerializer,\n  parseAsBoolean,\n  parseAsInteger,\n  parseAsString,\n  parseAsStringLiteral,\n  type inferParserType,\n  type Options,\n} from \"nuqs/server\"\nimport { decodePreset, isPresetCode } from \"shadcn/preset\"\n\nimport {\n  BASE_COLORS,\n  BASES,\n  DEFAULT_CONFIG,\n  getThemesForBaseColor,\n  iconLibraries,\n  MENU_ACCENTS,\n  MENU_COLORS,\n  RADII,\n  STYLES,\n  THEMES,\n  type BaseColorName,\n  type BaseName,\n  type ChartColorName,\n  type FontHeadingValue,\n  type FontValue,\n  type IconLibraryName,\n  type MenuAccentValue,\n  type MenuColorValue,\n  type RadiusValue,\n  type StyleName,\n  type ThemeName,\n} from \"@/registry/config\"\nimport { FONTS } from \"@/app/(create)/lib/fonts\"\nimport { getPresetCode } from \"@/app/(create)/lib/preset-code\"\nimport { resolvePresetOverrides } from \"@/app/(create)/lib/preset-query\"\n\nconst designSystemSearchParams = {\n  preset: parseAsString.withDefault(\"b0\"),\n  base: parseAsStringLiteral<BaseName>(BASES.map((b) => b.name)).withDefault(\n    DEFAULT_CONFIG.base\n  ),\n  item: parseAsString.withDefault(\"preview\").withOptions({ shallow: true }),\n  iconLibrary: parseAsStringLiteral<IconLibraryName>(\n    Object.values(iconLibraries).map((i) => i.name)\n  ).withDefault(DEFAULT_CONFIG.iconLibrary),\n  style: parseAsStringLiteral<StyleName>(STYLES.map((s) => s.name)).withDefault(\n    DEFAULT_CONFIG.style\n  ),\n  theme: parseAsStringLiteral<ThemeName>(THEMES.map((t) => t.name)).withDefault(\n    DEFAULT_CONFIG.theme\n  ),\n  chartColor: parseAsStringLiteral<ChartColorName>(\n    THEMES.map((t) => t.name)\n  ).withDefault(DEFAULT_CONFIG.chartColor ?? \"neutral\"),\n  font: parseAsStringLiteral<FontValue>(FONTS.map((f) => f.value)).withDefault(\n    DEFAULT_CONFIG.font\n  ),\n  fontHeading: parseAsStringLiteral<FontHeadingValue>([\n    \"inherit\",\n    ...FONTS.map((f) => f.value),\n  ]).withDefault(DEFAULT_CONFIG.fontHeading),\n  baseColor: parseAsStringLiteral<BaseColorName>(\n    BASE_COLORS.map((b) => b.name)\n  ).withDefault(DEFAULT_CONFIG.baseColor),\n  menuAccent: parseAsStringLiteral<MenuAccentValue>(\n    MENU_ACCENTS.map((a) => a.value)\n  ).withDefault(DEFAULT_CONFIG.menuAccent),\n  menuColor: parseAsStringLiteral<MenuColorValue>(\n    MENU_COLORS.map((m) => m.value)\n  ).withDefault(DEFAULT_CONFIG.menuColor),\n  radius: parseAsStringLiteral<RadiusValue>(\n    RADII.map((r) => r.name)\n  ).withDefault(\"default\"),\n  template: parseAsStringLiteral([\n    \"next\",\n    \"next-monorepo\",\n    \"start\",\n    \"start-monorepo\",\n    \"react-router\",\n    \"react-router-monorepo\",\n    \"vite\",\n    \"vite-monorepo\",\n    \"astro\",\n    \"astro-monorepo\",\n    \"laravel\",\n  ] as const).withDefault(\"next\"),\n  rtl: parseAsBoolean.withDefault(false),\n  size: parseAsInteger.withDefault(100),\n  custom: parseAsBoolean.withDefault(false),\n}\n\n// Design system param keys that get encoded into the preset code.\nconst DESIGN_SYSTEM_KEYS = [\n  \"style\",\n  \"baseColor\",\n  \"theme\",\n  \"chartColor\",\n  \"iconLibrary\",\n  \"font\",\n  \"fontHeading\",\n  \"radius\",\n  \"menuAccent\",\n  \"menuColor\",\n] as const\n\nfunction normalizeFontHeading(\n  font: FontValue,\n  fontHeading: FontHeadingValue\n): FontHeadingValue {\n  // Persist \"same as body\" as an explicit inherit sentinel so the body font\n  // can change later without freezing headings to a concrete previous value.\n  return fontHeading === font ? \"inherit\" : fontHeading\n}\n\n// Non-design-system keys that get passed through as-is.\n// `base` is not encoded in preset codes — it's an architectural choice, not visual.\nconst NON_DESIGN_SYSTEM_KEYS = [\n  \"base\",\n  \"item\",\n  \"preset\",\n  \"template\",\n  \"rtl\",\n  \"size\",\n  \"custom\",\n] as const\n\nexport const loadDesignSystemSearchParams = createLoader(\n  designSystemSearchParams\n)\n\nexport const serializeDesignSystemSearchParams = createSerializer(\n  designSystemSearchParams\n)\n\nexport type DesignSystemSearchParams = inferParserType<\n  typeof designSystemSearchParams\n>\n\nexport function isTranslucentMenuColor(\n  menuColor?: MenuColorValue | null\n): menuColor is \"default-translucent\" | \"inverted-translucent\" {\n  return (\n    menuColor === \"default-translucent\" || menuColor === \"inverted-translucent\"\n  )\n}\n\nfunction normalizePartialDesignSystemParams(\n  params: Partial<DesignSystemSearchParams>\n): Partial<DesignSystemSearchParams> {\n  if (\n    params.menuAccent === \"bold\" &&\n    isTranslucentMenuColor(params.menuColor ?? undefined)\n  ) {\n    return {\n      ...params,\n      menuAccent: \"subtle\",\n    }\n  }\n\n  return params\n}\n\nfunction normalizeDesignSystemParams(\n  params: DesignSystemSearchParams\n): DesignSystemSearchParams {\n  let result = {\n    ...params,\n    fontHeading: normalizeFontHeading(params.font, params.fontHeading),\n  }\n\n  // Validate theme and chartColor against baseColor.\n  if (result.baseColor) {\n    const available = getThemesForBaseColor(result.baseColor)\n    const themeValid = available.some((t) => t.name === result.theme)\n    const chartColorValid = available.some((t) => t.name === result.chartColor)\n\n    if (!themeValid || !chartColorValid) {\n      const fallback = (available[0]?.name ?? result.baseColor) as ThemeName\n      result = {\n        ...result,\n        ...(!themeValid && { theme: fallback }),\n        ...(!chartColorValid && { chartColor: fallback as ChartColorName }),\n      }\n    }\n  }\n\n  if (\n    result.menuAccent === \"bold\" &&\n    isTranslucentMenuColor(result.menuColor)\n  ) {\n    return {\n      ...result,\n      menuAccent: \"subtle\",\n    }\n  }\n\n  return result\n}\n\n// If preset param exists, decode it and overlay on raw params.\n// V1 presets don't encode chartColor — fall back to the colored\n// theme that base-color themes originally borrowed charts from.\ntype SearchParamsLike = Pick<URLSearchParams, \"get\" | \"has\">\n\nfunction resolvePresetParams(\n  rawParams: DesignSystemSearchParams,\n  searchParams: SearchParamsLike\n) {\n  if (rawParams.preset && isPresetCode(rawParams.preset)) {\n    const decoded = decodePreset(rawParams.preset)\n    if (decoded) {\n      const presetOverrides = resolvePresetOverrides(searchParams, decoded)\n      return normalizeDesignSystemParams({\n        ...decoded,\n        ...presetOverrides,\n        base: rawParams.base,\n        item: rawParams.item,\n        preset: rawParams.preset,\n        template: rawParams.template,\n        rtl: rawParams.rtl,\n        size: rawParams.size,\n        custom: rawParams.custom,\n      })\n    }\n  }\n  return normalizeDesignSystemParams(rawParams)\n}\n\n// Wraps nuqs useQueryStates with transparent preset encoding/decoding.\n// - Reads: if ?preset=CODE is in the URL, decodes it and returns individual values.\n// - Writes: when design system params are set, encodes them into a preset code.\nexport function useDesignSystemSearchParams(options: Options = {}) {\n  const searchParams = useSearchParams()\n  const [rawParams, rawSetParams] = useQueryStates(designSystemSearchParams, {\n    shallow: false,\n    history: \"push\",\n    ...options,\n  })\n\n  const params = React.useMemo(\n    () => resolvePresetParams(rawParams, searchParams),\n    [rawParams, searchParams]\n  )\n\n  // Use ref so setParams callback stays stable across renders.\n  const paramsRef = React.useRef(params)\n  React.useEffect(() => {\n    paramsRef.current = params\n  }, [params])\n\n  type RawSetParamsInput = Parameters<typeof rawSetParams>[0]\n\n  const setParams = React.useCallback(\n    (\n      updates:\n        | Partial<DesignSystemSearchParams>\n        | ((\n            old: DesignSystemSearchParams\n          ) => Partial<DesignSystemSearchParams>),\n      setOptions?: Options\n    ) => {\n      const resolvedUpdates = normalizePartialDesignSystemParams(\n        typeof updates === \"function\" ? updates(paramsRef.current) : updates\n      )\n\n      const hasDesignSystemUpdate = DESIGN_SYSTEM_KEYS.some(\n        (key) => key in resolvedUpdates\n      )\n\n      if (!hasDesignSystemUpdate) {\n        // No design system change, pass through directly.\n        return rawSetParams(resolvedUpdates as RawSetParamsInput, setOptions)\n      }\n\n      // Merge current decoded values with updates.\n      const merged = normalizeDesignSystemParams({\n        ...paramsRef.current,\n        ...resolvedUpdates,\n      })\n      // Encode design system fields into a preset code.\n      // Cast needed: merged values may include null from nuqs resets,\n      // but encodePreset handles missing values by falling back to defaults.\n      const code = getPresetCode(merged)\n      // Build update: set preset, clear individual DS params from URL.\n      const rawUpdate: Record<string, unknown> = { preset: code }\n      for (const key of DESIGN_SYSTEM_KEYS) {\n        rawUpdate[key] = null\n      }\n\n      // Pass through non-DS params that were explicitly in the update.\n      for (const key of NON_DESIGN_SYSTEM_KEYS) {\n        if (key in resolvedUpdates) {\n          rawUpdate[key] = (resolvedUpdates as Record<string, unknown>)[key]\n        }\n      }\n\n      return rawSetParams(rawUpdate as RawSetParamsInput, setOptions)\n    },\n    [rawSetParams]\n  )\n\n  return [params, setParams] as const\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/templates.ts",
    "content": "export const TEMPLATES = [\n  {\n    value: \"next\",\n    title: \"Next.js\",\n    logo: '<svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Next.js</title><path d=\"M18.665 21.978C16.758 23.255 14.465 24 12 24 5.377 24 0 18.623 0 12S5.377 0 12 0s12 5.377 12 12c0 3.583-1.574 6.801-4.067 9.001L9.219 7.2H7.2v9.596h1.615V9.251l9.85 12.727Zm-3.332-8.533 1.6 2.061V7.2h-1.6v6.245Z\" fill=\"currentColor\"/></svg>',\n  },\n  {\n    value: \"vite\",\n    title: \"Vite\",\n    logo: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"410\" height=\"404\" fill=\"none\" viewBox=\"0 0 410 404\"><path fill=\"var(--foreground)\" d=\"m399.641 59.525-183.998 329.02c-3.799 6.793-13.559 6.833-17.415.073L10.582 59.556C6.38 52.19 12.68 43.266 21.028 44.76l184.195 32.923c1.175.21 2.378.208 3.553-.006l180.343-32.87c8.32-1.517 14.649 7.337 10.522 14.719\"/><path fill=\"var(--color-neutral-800)\" d=\"M292.965 1.574 156.801 28.255a5 5 0 0 0-4.03 4.611l-8.376 141.464c-.197 3.332 2.863 5.918 6.115 5.168l37.91-8.749c3.547-.818 6.752 2.306 6.023 5.873l-11.263 55.153c-.758 3.712 2.727 6.886 6.352 5.785l23.415-7.114c3.63-1.102 7.118 2.081 6.35 5.796l-17.899 86.633c-1.12 5.419 6.088 8.374 9.094 3.728l2.008-3.103 110.954-221.428c1.858-3.707-1.346-7.935-5.418-7.15l-39.022 7.532c-3.667.707-6.787-2.708-5.752-6.296l25.469-88.291c1.036-3.594-2.095-7.012-5.766-6.293\"/></svg>',\n  },\n  {\n    value: \"start\",\n    title: \"TanStack Start\",\n    logo: '<svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>TanStack</title><path d=\"M11.078.042c.316-.042.65-.014.97-.014 1.181 0 2.341.184 3.472.532a12.3 12.3 0 0 1 3.973 2.086 11.9 11.9 0 0 1 3.432 4.33c1.446 3.15 1.436 6.97-.046 10.107-.958 2.029-2.495 3.727-4.356 4.965-1.518 1.01-3.293 1.629-5.1 1.848-2.298.279-4.784-.129-6.85-1.188-3.88-1.99-6.518-5.994-6.57-10.382-.01-.846.003-1.697.17-2.534.273-1.365.748-2.683 1.463-3.88a12 12 0 0 1 2.966-3.36A12.3 12.3 0 0 1 9.357.3a12 12 0 0 1 1.255-.2l.133-.016zM7.064 19.99c-.535.057-1.098.154-1.557.454.103.025.222 0 .33 0 .258 0 .52-.01.778.002.647.028 1.32.131 1.945.303.8.22 1.505.65 2.275.942.813.307 1.622.402 2.484.402.435 0 .866-.001 1.287-.12-.22-.117-.534-.095-.778-.144a11 11 0 0 1-1.556-.416 12 12 0 0 1-1.093-.467l-.23-.108a15 15 0 0 0-1.012-.44c-.905-.343-1.908-.512-2.873-.408m.808-2.274c-1.059 0-2.13.187-3.083.667q-.346.177-.659.41c-.063.046-.175.106-.199.188s.061.151.11.204c.238-.127.464-.261.718-.357 1.64-.624 3.63-.493 5.268.078.817.285 1.569.712 2.365 1.046.89.374 1.798.616 2.753.74 1.127.147 2.412.028 3.442-.48.362-.179.865-.451 1.018-.847-.189.017-.36.098-.539.154a9 9 0 0 1-.868.222c-.994.2-2.052.24-3.053.06-.943-.17-1.82-.513-2.693-.873l-.111-.046-.223-.092-.112-.046a26 26 0 0 0-1.35-.527c-.89-.31-1.842-.5-2.784-.5M9.728 1.452c-1.27.28-2.407.826-3.502 1.514-.637.4-1.245.81-1.796 1.323-.82.765-1.447 1.695-1.993 2.666-.563 1-.924 2.166-1.098 3.297-.172 1.11-.2 2.277-.004 3.388.245 1.388.712 2.691 1.448 3.897.248-.116.424-.38.629-.557.414-.359.85-.691 1.317-.978a3.5 3.5 0 0 1 .539-.264c.07-.029.187-.055.22-.132.053-.124-.045-.34-.062-.468a7 7 0 0 1-.068-1.109 9.7 9.7 0 0 1 .61-3.177c.29-.76.73-1.45 1.254-2.069.177-.21.365-.405.56-.6.115-.114.258-.212.33-.359-.376 0-.751.108-1.108.218-.769.237-1.518.588-2.155 1.084-.291.226-.504.522-.779.76-.084.073-.235.17-.352.116-.176-.083-.149-.43-.169-.59-.078-.612.154-1.387.45-1.918.473-.852 1.348-1.58 2.376-1.555.444.011.833.166 1.257.266-.107-.153-.252-.264-.389-.39a5.4 5.4 0 0 0-1.107-.8c-.163-.085-.338-.136-.509-.2-.086-.03-.195-.074-.227-.17-.06-.177.26-.342.377-.417.453-.289 1.01-.527 1.556-.54.854-.021 1.688.452 2.04 1.258.123.284.16.583.184.885l.004.057.006.085.002.029.005.057.004.056c.268-.218.457-.54.718-.774.612-.547 1.45-.79 2.245-.544a2.97 2.97 0 0 1 1.71 1.378c.097.173.365.595.171.767-.152.134-.344.03-.504-.026a3 3 0 0 0-.372-.094l-.068-.014-.069-.013a3.9 3.9 0 0 0-1.377-.002c-.282.05-.557.15-.838.192v.06c.768.006 1.51.444 1.89 1.109.157.275.235.59.295.9.075.38.022.796-.082 1.168-.035.125-.098.336-.247.365-.106.02-.195-.085-.256-.155a4.6 4.6 0 0 0-.492-.522 20 20 0 0 0-1.467-1.14c-.267-.19-.56-.44-.868-.556.087.208.171.402.2.63.088.667-.192 1.296-.612 1.798a2.6 2.6 0 0 1-.426.427c-.067.05-.151.114-.24.1-.277-.044-.31-.463-.353-.677-.144-.726-.086-1.447.114-2.158-.178.09-.307.287-.418.45a5.3 5.3 0 0 0-.612 1.138c-.61 1.617-.604 3.51.186 5.066.088.174.221.15.395.15h.157a3 3 0 0 1 .472.018c.08.01.193 0 .257.06.077.072.036.194.018.282-.05.246-.066.469-.066.72.328-.051.419-.576.535-.84.131-.298.265-.597.387-.9.06-.148.14-.314.119-.479-.024-.185-.157-.381-.25-.54-.177-.298-.378-.606-.508-.929-.104-.258-.007-.58.286-.672.161-.05.334.049.439.166.22.244.363.609.523.896l1.249 2.248q.159.286.32.57c.043.074.086.188.173.219.077.028.182-.012.26-.027.198-.04.398-.083.598-.12.24-.043.605-.035.778-.222-.253-.08-.545-.075-.808-.057-.158.01-.333.067-.479-.025-.216-.137-.36-.455-.492-.667-.326-.525-.633-1.057-.945-1.59l-.05-.084-.1-.17q-.075-.126-.149-.255c-.037-.066-.092-.153-.039-.227.056-.076.179-.08.29-.081h.021q.066.001.117-.004a10 10 0 0 1 1.347-.107c-.035-.122-.135-.26-.103-.39.071-.292.49-.383.686-.174.131.14.207.334.292.504.113.223.24.44.361.66.211.383.441.757.658 1.138l.055.094.028.047c.093.156.187.314.238.489-.753-.035-1.318-.909-1.646-1.499-.027.095.016.179.05.27q.103.282.262.54c.152.244.326.495.556.673.408.315.945.317 1.436.283.315-.022.708-.165 1.018-.068s.434.438.25.7c-.138.196-.321.27-.55.3.162.346.373.667.527 1.02.064.146.13.37.283.448.102.051.248.003.358 0-.11-.292-.317-.54-.419-.839.31.015.61.176.898.28.567.202 1.128.424 1.687.648l.258.104c.23.092.462.183.689.283.083.037.198.123.29.07.074-.043.123-.146.169-.215a10.3 10.3 0 0 0 1.393-3.208c.75-2.989.106-6.287-1.695-8.783-.692-.96-1.562-1.789-2.522-2.476-2.401-1.718-5.551-2.407-8.44-1.768m4.908 14.904c-.636.166-1.292.317-1.945.401.086.293.296.577.45.84.059.101.122.237.24.281.132.05.292-.03.417-.072-.058-.158-.155-.3-.235-.45-.033-.06-.084-.133-.056-.206.05-.137.263-.13.381-.153.31-.063.617-.142.928-.204.114-.023.274-.085.389-.047.086.03.138.1.187.174l.022.033q.043.07.097.122c.125.113.313.13.472.162-.097-.219-.259-.41-.362-.63-.06-.127-.11-.315-.242-.388-.182-.102-.557.089-.743.137m-4.01-1.457c-.03.38-.147.689-.33 1.019.21.026.423.036.629.087.154.038.296.11.449.153-.082-.224-.233-.423-.35-.63-.12-.208-.226-.462-.398-.63\" fill=\"currentColor\"/></svg>',\n  },\n  {\n    value: \"laravel\",\n    title: \"Laravel\",\n    logo: '<svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Laravel</title><path d=\"M23.642 5.43a.364.364 0 0 1 .014.1v5.149c0 .135-.073.26-.189.326l-4.323 2.49v4.934a.378.378 0 0 1-.188.326L9.93 23.949a.316.316 0 0 1-.066.027c-.008.002-.016.008-.024.01a.348.348 0 0 1-.192 0c-.011-.002-.02-.008-.03-.012-.02-.008-.042-.014-.062-.025L.533 18.755a.376.376 0 0 1-.189-.326V2.974c0-.033.005-.066.014-.098.003-.012.01-.02.014-.032a.369.369 0 0 1 .023-.058c.004-.013.015-.022.023-.033l.033-.045c.012-.01.025-.018.037-.027.014-.012.027-.024.041-.034h.001L5.044.05a.375.375 0 0 1 .375 0L9.933 2.697h.002c.015.01.027.021.04.033l.038.027c.013.014.02.03.033.045.008.011.02.021.025.033.01.02.017.038.024.058.003.011.01.021.013.032.01.031.014.064.014.098v9.652l3.76-2.164V5.527c0-.033.004-.066.013-.098.003-.01.01-.02.013-.032a.487.487 0 0 1 .024-.059c.007-.012.018-.02.025-.033.012-.015.021-.03.033-.043.012-.012.025-.02.037-.028.014-.011.026-.023.041-.032h.001l4.513-2.647a.375.375 0 0 1 .375 0l4.513 2.647c.016.011.029.021.042.031.012.01.025.018.036.028.013.014.022.03.034.045.008.012.019.021.024.033a.3.3 0 0 1 .024.06c.006.01.012.021.015.032zm-.74 5.032V5.860l-1.578.908-2.182 1.256v4.603zm-4.514 7.75v-4.605l-2.148 1.227-6.876 3.93v4.649zm-17.642-15.3v15.15l8.25 4.757v-4.645L4.699 15.87l-.003-.002-.002-.001c-.014-.01-.025-.021-.04-.033-.012-.01-.026-.018-.036-.028l-.001-.002c-.013-.012-.021-.028-.032-.043-.01-.013-.022-.023-.03-.037v-.002c-.01-.014-.016-.032-.023-.048-.006-.012-.016-.023-.02-.035l-.002-.001c-.005-.018-.008-.037-.011-.057L4.5 15.58v-9.51l-2.182-1.256-1.578-.908zm4.322-2.474L1.313 2.974l3.756 2.163 3.755-2.163zm2.068 11.22 2.182-1.256V1.974L7.937 3.23 5.755 4.486v11.186zm10.895-7.583-3.755 2.163 3.755 2.164 3.755-2.164zm-.375 4.976-2.182-1.256-1.578-.908v4.603l2.182 1.256 1.578.908zm-8.438 6.186 5.494-3.14 2.944-1.682-3.755-2.163-4.323 2.489-4.136 2.384z\" fill=\"currentColor\"/></svg>',\n  },\n  {\n    value: \"react-router\",\n    title: \"React Router\",\n    logo: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12.118 5.466a2.306 2.306 0 0 0-.623.08c-.278.067-.702.332-.953.583-.41.423-.49.609-.662 1.469-.08.423.41 1.43.847 1.734.45.317 1.085.502 2.065.608 1.429.16 1.84.636 1.84 2.197 0 1.377-.385 1.747-1.96 1.906-1.707.172-2.58.834-2.765 2.117-.106.781.41 1.76 1.125 2.091 1.627.768 3.15-.198 3.467-2.196.211-1.284.622-1.642 1.998-1.747 1.588-.133 2.409-.675 2.713-1.787.278-1.02-.304-2.157-1.297-2.554-.264-.106-.873-.238-1.35-.291-1.495-.16-1.879-.424-2.038-1.39-.225-1.337-.317-1.562-.794-2.09a2.174 2.174 0 0 0-1.613-.73zm-4.785 4.36a2.145 2.145 0 0 0-.497.048c-1.469.318-2.17 2.051-1.35 3.295 1.178 1.774 3.944.953 3.97-1.177.012-1.193-.98-2.143-2.123-2.166zM2.089 14.19a2.22 2.22 0 0 0-.427.052c-2.158.476-2.237 3.626-.106 4.182.53.145.582.145 1.111.013 1.191-.318 1.866-1.456 1.549-2.607-.278-1.02-1.144-1.664-2.127-1.64zm19.824.008c-.233.002-.477.058-.784.162-1.39.477-1.866 2.092-.98 3.336.557.794 1.96 1.058 2.82.516 1.416-.874 1.363-3.057-.093-3.746-.38-.186-.663-.271-.963-.268z\" fill=\"currentColor\"/></svg>',\n  },\n  {\n    value: \"astro\",\n    title: \"Astro\",\n    logo: '<svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Astro</title><path d=\"M16.074 16.86C15.354 17.476 13.917 17.895 12.262 17.895C10.23 17.895 8.527 17.263 8.075 16.412C7.914 16.9 7.877 17.458 7.877 17.814C7.877 17.814 7.771 19.564 8.988 20.782C8.988 20.15 9.501 19.637 10.133 19.637C11.216 19.637 11.215 20.582 11.214 21.349V21.418C11.214 22.582 11.925 23.579 12.937 24C12.7812 23.6794 12.7005 23.3275 12.701 22.971C12.701 21.861 13.353 21.448 14.111 20.968C14.713 20.585 15.383 20.161 15.844 19.308C16.0926 18.8493 16.2225 18.3357 16.222 17.814C16.2221 17.4903 16.1722 17.1685 16.074 16.86ZM15.551 0.6C15.747 0.844 15.847 1.172 16.047 1.829L20.415 16.176C18.7743 15.3246 17.0134 14.7284 15.193 14.408L12.35 4.8C12.3273 4.72337 12.2803 4.65616 12.2162 4.60844C12.152 4.56072 12.0742 4.53505 11.9943 4.53528C11.9143 4.5355 11.8366 4.56161 11.7727 4.60969C11.7089 4.65777 11.6623 4.72524 11.64 4.802L8.83 14.405C7.00149 14.724 5.23264 15.3213 3.585 16.176L7.974 1.827C8.174 1.171 8.274 0.843 8.471 0.6C8.64406 0.385433 8.86922 0.218799 9.125 0.116C9.415 0 9.757 0 10.443 0H13.578C14.264 0 14.608 0 14.898 0.117C15.1529 0.219851 15.3783 0.386105 15.551 0.6Z\" fill=\"currentColor\"/></svg>',\n  },\n] as const\n\nexport type TemplateValue = (typeof TEMPLATES)[number][\"value\"]\n\n// Extract the base framework from a template value (e.g. \"next-monorepo\" -> \"next\").\nexport function getFramework(template: string) {\n  return template.replace(\"-monorepo\", \"\") as TemplateValue\n}\n\n// Frameworks that don't support the monorepo template.\nexport const NO_MONOREPO_FRAMEWORKS = [\"laravel\"] as const\n\n// Build the full template value from a framework and monorepo flag.\nexport function getTemplateValue(framework: string, monorepo: boolean) {\n  if (\n    NO_MONOREPO_FRAMEWORKS.includes(\n      framework as (typeof NO_MONOREPO_FRAMEWORKS)[number]\n    )\n  ) {\n    return framework\n  }\n\n  return monorepo ? `${framework}-monorepo` : framework\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/utils.ts",
    "content": "import { type RegistryItem } from \"shadcn/schema\"\n\nconst mapping = {\n  \"registry:block\": \"Blocks\",\n  \"registry:example\": \"Components\",\n}\n\nexport function groupItemsByType(\n  items: Pick<RegistryItem, \"name\" | \"title\" | \"type\">[]\n) {\n  const grouped = items.reduce(\n    (acc, item) => {\n      acc[item.type] = [...(acc[item.type] || []), item]\n      return acc\n    },\n    {} as Record<string, Pick<RegistryItem, \"name\" | \"title\" | \"type\">[]>\n  )\n\n  return Object.entries(grouped)\n    .map(([type, items]) => ({\n      type,\n      title: mapping[type as keyof typeof mapping] || type,\n      items,\n    }))\n    .sort((a, b) => {\n      const aIndex = Object.keys(mapping).indexOf(a.type)\n      const bIndex = Object.keys(mapping).indexOf(b.type)\n\n      // If both are in mapping, sort by their order.\n      if (aIndex !== -1 && bIndex !== -1) {\n        return aIndex - bIndex\n      }\n      // If only a is in mapping, it comes first.\n      if (aIndex !== -1) {\n        return -1\n      }\n      // If only b is in mapping, it comes first.\n      if (bIndex !== -1) {\n        return 1\n      }\n      // If neither is in mapping, maintain original order.\n      return 0\n    })\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/v0.test.ts",
    "content": "import { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\"\n\nimport { DEFAULT_CONFIG } from \"@/registry/config\"\nimport { buildV0Payload } from \"@/app/(create)/lib/v0\"\n\nvi.mock(\"shadcn/schema\", async () => {\n  return await vi.importActual(\"shadcn/schema\")\n})\n\nvi.mock(\"shadcn/utils\", async () => {\n  const actual = (await vi.importActual(\"shadcn/utils\")) as {\n    transformFont: unknown\n  }\n\n  return {\n    transformFont: actual.transformFont,\n    transformIcons: async ({ sourceFile }: { sourceFile: unknown }) =>\n      sourceFile,\n    transformMenu: async ({ sourceFile }: { sourceFile: unknown }) =>\n      sourceFile,\n    transformRender: async ({ sourceFile }: { sourceFile: unknown }) =>\n      sourceFile,\n  }\n})\n\nvi.mock(\"@/registry/bases/__index__\", () => ({\n  Index: {\n    base: {\n      card: {\n        name: \"card\",\n        type: \"registry:ui\",\n      },\n    },\n    radix: {\n      card: {\n        name: \"card\",\n        type: \"registry:ui\",\n      },\n    },\n  },\n}))\n\ndescribe(\"buildV0Payload\", () => {\n  beforeEach(() => {\n    process.env.NEXT_PUBLIC_APP_URL = \"http://example.test\"\n\n    vi.stubGlobal(\n      \"fetch\",\n      vi.fn(async (input: string | URL | Request) => {\n        const url =\n          typeof input === \"string\"\n            ? input\n            : input instanceof URL\n              ? input.toString()\n              : input.url\n        const name = url.split(\"/\").pop()?.replace(\".json\", \"\") ?? \"component\"\n\n        return new Response(\n          JSON.stringify({\n            name,\n            type: \"registry:ui\",\n            files: [\n              {\n                path: `registry/base-nova/ui/${name}.tsx`,\n                type: \"registry:ui\",\n                content: `import * as React from \"react\"\\n\\nexport function Component() {\\n  return <div className=\"cn-font-heading text-xl\" />\\n}\\n`,\n              },\n            ],\n          }),\n          {\n            status: 200,\n            headers: {\n              \"Content-Type\": \"application/json\",\n            },\n          }\n        )\n      })\n    )\n  })\n\n  afterEach(() => {\n    vi.unstubAllGlobals()\n    delete process.env.NEXT_PUBLIC_APP_URL\n  })\n\n  it(\"rewrites cn-font-heading to font-heading when heading inherits the body font\", async () => {\n    const payload = await buildV0Payload({\n      ...DEFAULT_CONFIG,\n      item: undefined,\n      fontHeading: \"inherit\",\n    })\n\n    const cardFile = payload.files?.find(\n      (file) => file.target === \"components/ui/card.tsx\"\n    )\n\n    expect(cardFile?.content).toContain(\"font-heading\")\n    expect(cardFile?.content).not.toContain(\"cn-font-heading\")\n  })\n\n  it(\"rewrites cn-font-heading to font-heading when a distinct heading font is selected\", async () => {\n    const payload = await buildV0Payload({\n      ...DEFAULT_CONFIG,\n      item: undefined,\n      fontHeading: \"playfair-display\",\n    })\n\n    const cardFile = payload.files?.find(\n      (file) => file.target === \"components/ui/card.tsx\"\n    )\n\n    expect(cardFile?.content).toContain(\"font-heading\")\n    expect(cardFile?.content).not.toContain(\"cn-font-heading\")\n  })\n})\n"
  },
  {
    "path": "apps/v4/app/(create)/lib/v0.ts",
    "content": "import dedent from \"dedent\"\nimport {\n  registryItemFileSchema,\n  registryItemSchema,\n  type configSchema,\n  type RegistryItem,\n} from \"shadcn/schema\"\nimport {\n  transformFont,\n  transformIcons,\n  transformMenu,\n  transformRender,\n} from \"shadcn/utils\"\nimport { Project, ScriptKind, type SourceFile } from \"ts-morph\"\nimport { z } from \"zod\"\n\nimport {\n  buildRegistryBase,\n  getBodyFont,\n  getHeadingFont,\n  getInheritedHeadingFontValue,\n  type DesignSystemConfig,\n} from \"@/registry/config\"\n\nconst { Index } = await import(\"@/registry/bases/__index__\")\n\nfunction buildThemeInline(fontHeadingValue: string) {\n  return `--font-sans: var(--font-sans);\n  --font-heading: ${fontHeadingValue};\n  --font-mono: var(--font-mono);\n  --font-serif: var(--font-serif);\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  --color-card: var(--card);\n  --color-card-foreground: var(--card-foreground);\n  --color-popover: var(--popover);\n  --color-popover-foreground: var(--popover-foreground);\n  --color-primary: var(--primary);\n  --color-primary-foreground: var(--primary-foreground);\n  --color-secondary: var(--secondary);\n  --color-secondary-foreground: var(--secondary-foreground);\n  --color-muted: var(--muted);\n  --color-muted-foreground: var(--muted-foreground);\n  --color-accent: var(--accent);\n  --color-accent-foreground: var(--accent-foreground);\n  --color-destructive: var(--destructive);\n  --color-destructive-foreground: var(--destructive-foreground);\n  --color-border: var(--border);\n  --color-input: var(--input);\n  --color-ring: var(--ring);\n  --color-chart-1: var(--chart-1);\n  --color-chart-2: var(--chart-2);\n  --color-chart-3: var(--chart-3);\n  --color-chart-4: var(--chart-4);\n  --color-chart-5: var(--chart-5);\n  --color-sidebar: var(--sidebar);\n  --color-sidebar-foreground: var(--sidebar-foreground);\n  --color-sidebar-primary: var(--sidebar-primary);\n  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n  --color-sidebar-accent: var(--sidebar-accent);\n  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n  --color-sidebar-border: var(--sidebar-border);\n  --color-sidebar-ring: var(--sidebar-ring);\n  --radius-sm: calc(var(--radius) * 0.6);\n  --radius-md: calc(var(--radius) * 0.8);\n  --radius-lg: var(--radius);\n  --radius-xl: calc(var(--radius) * 1.4);\n  --radius-2xl: calc(var(--radius) * 1.8);\n  --radius-3xl: calc(var(--radius) * 2.2);\n  --radius-4xl: calc(var(--radius) * 2.6);`\n}\n\n// Static file — parsed once at module level.\nconst themeProviderFile = registryItemFileSchema.parse({\n  path: \"components/theme-provider.tsx\",\n  type: \"registry:component\",\n  target: \"components/theme-provider.tsx\",\n  content: dedent`\n    \"use client\"\n\n    import * as React from \"react\"\n    import { ThemeProvider as NextThemesProvider, useTheme } from \"next-themes\"\n\n    function ThemeProvider({\n      children,\n      ...props\n    }: React.ComponentProps<typeof NextThemesProvider>) {\n      return (\n        <NextThemesProvider\n          attribute=\"class\"\n          defaultTheme=\"system\"\n          enableSystem\n          disableTransitionOnChange\n          {...props}\n        >\n          <ThemeHotkey />\n          {children}\n        </NextThemesProvider>\n      )\n    }\n\n    function isTypingTarget(target: EventTarget | null) {\n      if (!(target instanceof HTMLElement)) {\n        return false\n      }\n\n      return (\n        target.isContentEditable ||\n        target.tagName === \"INPUT\" ||\n        target.tagName === \"TEXTAREA\" ||\n        target.tagName === \"SELECT\"\n      )\n    }\n\n    function ThemeHotkey() {\n      const { resolvedTheme, setTheme } = useTheme()\n\n      React.useEffect(() => {\n        function onKeyDown(event: KeyboardEvent) {\n          if (event.defaultPrevented || event.repeat) {\n            return\n          }\n\n          if (event.metaKey || event.ctrlKey || event.altKey) {\n            return\n          }\n\n          if (event.key.toLowerCase() !== \"d\") {\n            return\n          }\n\n          if (isTypingTarget(event.target)) {\n            return\n          }\n\n          setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n        }\n\n        window.addEventListener(\"keydown\", onKeyDown)\n\n        return () => {\n          window.removeEventListener(\"keydown\", onKeyDown)\n        }\n      }, [resolvedTheme, setTheme])\n\n      return null\n    }\n\n    export { ThemeProvider }\n  `,\n})\n\nconst ALIASES = {\n  components: \"@/components\",\n  utils: \"@/lib/utils\",\n  ui: \"@/components/ui\",\n  lib: \"@/lib\",\n  hooks: \"@/hooks\",\n} as const\n\ntype V0Transformer = (opts: {\n  filename: string\n  raw: string\n  sourceFile: SourceFile\n  config: z.infer<typeof configSchema>\n  supportedFontMarkers?: string[]\n}) => Promise<unknown>\n\nconst transformers: V0Transformer[] = [\n  transformIcons as V0Transformer,\n  transformMenu as V0Transformer,\n  transformRender as V0Transformer,\n  transformFont as V0Transformer,\n]\n\nfunction getStyle(designSystemConfig: DesignSystemConfig) {\n  return `${designSystemConfig.base}-${designSystemConfig.style}`\n}\n\nexport async function buildV0Payload(designSystemConfig: DesignSystemConfig) {\n  const registryBase = buildRegistryBase(designSystemConfig)\n  const normalizedFontHeading =\n    designSystemConfig.fontHeading === designSystemConfig.font\n      ? \"inherit\"\n      : designSystemConfig.fontHeading\n\n  // Only buildComponentFiles is async — run sync builders directly.\n  const globalsCss = buildGlobalsCss(\n    registryBase,\n    designSystemConfig.font,\n    normalizedFontHeading\n  )\n  const layoutFile = buildLayoutFile(designSystemConfig, normalizedFontHeading)\n  const componentFiles = await buildComponentFiles(designSystemConfig)\n\n  const dependencies = [...(registryBase.dependencies ?? []), \"next-themes\"]\n  const componentsJson = buildComponentsJson(designSystemConfig)\n  const packageJson = buildPackageJson(dependencies)\n\n  return registryItemSchema.parse({\n    name: designSystemConfig.item ?? \"open-in-v0\",\n    type: \"registry:item\",\n    dependencies,\n    files: [\n      globalsCss,\n      layoutFile,\n      themeProviderFile,\n      componentsJson,\n      packageJson,\n      ...componentFiles,\n    ],\n  })\n}\n\nfunction buildGlobalsCss(\n  registryBase: RegistryItem,\n  font: DesignSystemConfig[\"font\"],\n  fontHeading: DesignSystemConfig[\"fontHeading\"]\n) {\n  const lightVars = Object.entries(registryBase.cssVars?.light ?? {})\n    .map(([key, value]) => `  --${key}: ${value};`)\n    .join(\"\\n\")\n\n  const darkVars = Object.entries(registryBase.cssVars?.dark ?? {})\n    .map(([key, value]) => `  --${key}: ${value};`)\n    .join(\"\\n\")\n\n  const content = dedent`@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n\n  @custom-variant dark (&:is(.dark *));\n\n  @theme inline {\n  ${buildThemeInline(\n    fontHeading === \"inherit\"\n      ? getInheritedHeadingFontValue(font)\n      : \"var(--font-heading)\"\n  )}\n  }\n\n:root {\n  ${lightVars}\n}\n\n.dark {\n  ${darkVars}\n}\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n  `\n\n  return registryItemFileSchema.parse({\n    path: \"app/globals.css\",\n    type: \"registry:file\",\n    target: \"app/globals.css\",\n    content,\n  })\n}\n\nfunction buildComponentsJson(designSystemConfig: DesignSystemConfig) {\n  const content = JSON.stringify(\n    {\n      $schema: \"https://ui.shadcn.com/schema.json\",\n      style: getStyle(designSystemConfig),\n      rsc: true,\n      tsx: true,\n      tailwind: {\n        config: \"\",\n        css: \"app/globals.css\",\n        baseColor: designSystemConfig.baseColor,\n        cssVariables: true,\n        prefix: \"\",\n      },\n      aliases: ALIASES,\n      iconLibrary: designSystemConfig.iconLibrary,\n    },\n    null,\n    2\n  )\n\n  return registryItemFileSchema.parse({\n    path: \"components.json\",\n    type: \"registry:file\",\n    target: \"components.json\",\n    content,\n  })\n}\n\nfunction buildPackageJson(dependencies: string[]) {\n  // Base package.json matching templates/next-app/package.json + component peer deps.\n  const baseDependencies: Record<string, string> = {\n    next: \"16.1.6\",\n    \"next-themes\": \"^0.4.6\",\n    react: \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    // Utility deps.\n    \"class-variance-authority\": \"^0.7.1\",\n    clsx: \"^2.1.1\",\n    \"tailwind-merge\": \"^3.3.1\",\n    // Component peer deps.\n    \"date-fns\": \"4.1.0\",\n    \"embla-carousel-react\": \"8.5.1\",\n    \"input-otp\": \"1.4.1\",\n    \"react-day-picker\": \"9.8.0\",\n    \"react-resizable-panels\": \"^2.1.7\",\n    recharts: \"2.15.4\",\n    sonner: \"^1.7.4\",\n    vaul: \"^1.1.2\",\n    \"@vercel/analytics\": \"1.3.1\",\n  }\n\n  // Merge dynamic dependencies.\n  for (const dep of dependencies) {\n    const atIndex = dep.lastIndexOf(\"@\")\n    if (atIndex > 0) {\n      // Has version: e.g. \"shadcn@latest\".\n      baseDependencies[dep.slice(0, atIndex)] = dep.slice(atIndex + 1)\n    } else {\n      baseDependencies[dep] = \"latest\"\n    }\n  }\n\n  const content = JSON.stringify(\n    {\n      name: \"next-app\",\n      version: \"0.0.1\",\n      type: \"module\",\n      private: true,\n      scripts: {\n        dev: \"next dev --turbopack\",\n        build: \"next build\",\n        start: \"next start\",\n        lint: \"eslint\",\n        format: 'prettier --write \"**/*.{ts,tsx}\"',\n        typecheck: \"tsc --noEmit\",\n      },\n      dependencies: baseDependencies,\n      devDependencies: {\n        \"@eslint/eslintrc\": \"^3\",\n        \"@tailwindcss/postcss\": \"^4.1.18\",\n        \"@types/node\": \"^25.1.0\",\n        \"@types/react\": \"^19.2.10\",\n        \"@types/react-dom\": \"^19.2.3\",\n        eslint: \"^9.39.2\",\n        \"eslint-config-next\": \"16.1.6\",\n        prettier: \"^3.8.1\",\n        \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n        postcss: \"^8\",\n        tailwindcss: \"^4.1.18\",\n        \"tw-animate-css\": \"^1.3.4\",\n        typescript: \"^5.9.3\",\n      },\n    },\n    null,\n    2\n  )\n\n  return registryItemFileSchema.parse({\n    path: \"package.json\",\n    type: \"registry:file\",\n    target: \"package.json\",\n    content,\n  })\n}\n\nfunction buildLayoutFile(\n  designSystemConfig: DesignSystemConfig,\n  fontHeading: DesignSystemConfig[\"fontHeading\"]\n) {\n  const font = getBodyFont(designSystemConfig.font)\n  if (!font) {\n    throw new Error(`Font \"${designSystemConfig.font}\" not found`)\n  }\n\n  const headingFont =\n    fontHeading === \"inherit\" ? undefined : getHeadingFont(fontHeading)\n\n  // Derive const name from the font's CSS variable (e.g. --font-sans → fontSans).\n  const constName = font.font.variable\n    .replace(/^--/, \"\")\n    .replace(/-./g, (m) => m[1].toUpperCase())\n  const headingConstName = \"fontHeading\"\n\n  // Add font-serif or font-mono class to body when needed. Sans is the default.\n  const fontClass =\n    font.font.variable === \"--font-serif\"\n      ? \"font-serif\"\n      : font.font.variable === \"--font-mono\"\n        ? \"font-mono\"\n        : \"\"\n\n  const bodyClassName = fontClass ? `antialiased ${fontClass}` : \"antialiased\"\n  const imports = headingFont\n    ? Array.from(new Set([font.font.import, headingFont.font.import])).join(\n        \", \"\n      )\n    : font.font.import\n  const headingDeclaration = headingFont\n    ? `\\nconst ${headingConstName} = ${headingFont.font.import}({subsets:['latin'],variable:'${headingFont.font.variable}'});\\n`\n    : \"\"\n  const htmlClassName = headingFont\n    ? `{${constName}.variable + \" \" + ${headingConstName}.variable}`\n    : `{${constName}.variable}`\n\n  const content = dedent`\n    import type { Metadata } from \"next\";\n    import { ${imports} } from \"next/font/google\";\n    import \"./globals.css\";\n    import { ThemeProvider } from \"@/components/theme-provider\";\n\n    const ${constName} = ${font.font.import}({subsets:['latin'],variable:'${font.font.variable}'});\n    ${headingDeclaration}\n\n    export const metadata: Metadata = {\n      title: \"Create Next App\",\n      description: \"Generated by create next app\",\n    };\n\n    export default function RootLayout({\n      children,\n    }: Readonly<{\n      children: React.ReactNode;\n    }>) {\n      return (\n        <html lang=\"en\" suppressHydrationWarning className=${htmlClassName}>\n          <body\n            className=\"${bodyClassName}\"\n          >\n            <ThemeProvider>{children}</ThemeProvider>\n          </body>\n        </html>\n      );\n    }\n  `\n\n  return registryItemFileSchema.parse({\n    path: \"app/layout.tsx\",\n    type: \"registry:page\",\n    target: \"app/layout.tsx\",\n    content,\n  })\n}\n\nasync function buildComponentFiles(designSystemConfig: DesignSystemConfig) {\n  const allItemsForBase = Object.values(Index[designSystemConfig.base])\n    .filter((item: RegistryItem) => item.type === \"registry:ui\")\n    .map((item) => item.name)\n\n  // Build config once for all components.\n  const config = buildTransformConfig(designSystemConfig)\n\n  // Fetch UI components, the demo, and the item component in parallel.\n  const [registryItemFiles, demoFile, itemComponentFile] = await Promise.all([\n    Promise.all(\n      allItemsForBase.map((name) =>\n        getRegistryItemFile(name, designSystemConfig, config)\n      )\n    ),\n    getRegistryItemFile(\"demo\", designSystemConfig, config),\n    designSystemConfig.item\n      ? getRegistryItemFile(designSystemConfig.item, designSystemConfig, config)\n      : null,\n  ])\n\n  const files = [...registryItemFiles.filter(Boolean)]\n\n  // Include the demo component.\n  if (demoFile) {\n    files.push({\n      ...demoFile,\n      target: \"components/demo.tsx\",\n      type: \"registry:component\",\n    })\n  }\n\n  const pageFile = {\n    path: \"app/page.tsx\",\n    type: \"registry:page\",\n    target: \"app/page.tsx\",\n    content: dedent`\n      import { Demo } from \"@/components/demo\"\n\n      export default function Page() {\n        return <Demo />\n      }\n    `,\n  }\n\n  // Build the actual item component.\n  if (itemComponentFile) {\n    // Find the export default function from the component file.\n    const exportDefault = itemComponentFile.content.match(\n      /export default function (\\w+)/\n    )\n    if (exportDefault) {\n      const functionName = exportDefault[1]\n\n      // Replace the export default function with a named export.\n      itemComponentFile.content = itemComponentFile.content.replace(\n        /export default function (\\w+)/,\n        `export function ${functionName}`\n      )\n\n      // Import and render the item on the page.\n      pageFile.content = dedent`import { ${functionName} } from \"@/components/${designSystemConfig.item}\";\n\n      export default function Page() {\n        return <${functionName} />\n      }`\n    }\n\n    files.push({\n      ...itemComponentFile,\n      target: `components/${designSystemConfig.item}.tsx`,\n      type: \"registry:component\",\n    })\n  }\n\n  files.push(pageFile)\n\n  return z.array(registryItemFileSchema).parse(files)\n}\n\nfunction buildTransformConfig(designSystemConfig: DesignSystemConfig) {\n  return {\n    $schema: \"https://ui.shadcn.com/schema.json\",\n    style: getStyle(designSystemConfig),\n    rsc: true,\n    tsx: true,\n    tailwind: {\n      config: \"\",\n      css: \"app/globals.css\",\n      baseColor: designSystemConfig.baseColor,\n      cssVariables: true,\n      prefix: \"\",\n    },\n    iconLibrary: designSystemConfig.iconLibrary,\n    aliases: ALIASES,\n    menuAccent: designSystemConfig.menuAccent,\n    menuColor: designSystemConfig.menuColor,\n    resolvedPaths: {\n      cwd: \"/\",\n      tailwindConfig: \"./tailwind.config.js\",\n      tailwindCss: \"./globals.css\",\n      utils: \"./lib/utils\",\n      components: \"./components\",\n      lib: \"./lib\",\n      hooks: \"./hooks\",\n      ui: \"./components/ui\",\n    },\n  } satisfies z.infer<typeof configSchema>\n}\n\nasync function getRegistryItemFile(\n  name: string,\n  designSystemConfig: DesignSystemConfig,\n  config: z.infer<typeof configSchema>\n) {\n  const response = await fetch(\n    `${process.env.NEXT_PUBLIC_APP_URL}/r/styles/${getStyle(designSystemConfig)}/${name}.json`\n  )\n\n  if (!response.ok) {\n    throw new Error(`Failed to fetch registry item: ${response.statusText}`)\n  }\n\n  const json = await response.json()\n  const item = registryItemSchema.parse(json)\n\n  const file = item.files?.[0]\n  if (!file?.content) {\n    return null\n  }\n\n  const content = await transformFileContent(file.content, config)\n\n  return {\n    ...file,\n    target:\n      name === \"example\"\n        ? \"components/example.tsx\"\n        : `components/ui/${name}.tsx`,\n    type: name === \"example\" ? \"registry:component\" : \"registry:ui\",\n    content,\n  }\n}\n\nasync function transformFileContent(\n  content: string,\n  config: z.infer<typeof configSchema>\n) {\n  const project = new Project({ compilerOptions: {} })\n  const sourceFile = project.createSourceFile(\"component.tsx\", content, {\n    scriptKind: ScriptKind.TSX,\n    overwrite: true,\n  })\n\n  for (const transformer of transformers) {\n    await transformer({\n      filename: \"component.tsx\",\n      raw: content,\n      sourceFile,\n      config,\n      supportedFontMarkers: [\"cn-font-heading\"],\n    })\n  }\n\n  return sourceFile.getText()\n}\n"
  },
  {
    "path": "apps/v4/app/(create)/preview/[base]/[name]/page.tsx",
    "content": "import * as React from \"react\"\nimport { type Metadata } from \"next\"\nimport { notFound } from \"next/navigation\"\n\nimport { siteConfig } from \"@/lib/config\"\nimport { absoluteUrl } from \"@/lib/utils\"\nimport { TailwindIndicator } from \"@/components/tailwind-indicator\"\nimport { BASES, type Base, type BaseName } from \"@/registry/config\"\nimport { ActionMenuScript } from \"@/app/(create)/components/action-menu\"\nimport { DesignSystemProvider } from \"@/app/(create)/components/design-system-provider\"\nimport { HistoryScript } from \"@/app/(create)/components/history-buttons\"\nimport { DarkModeScript } from \"@/app/(create)/components/mode-switcher\"\nimport { PreviewStyle } from \"@/app/(create)/components/preview-style\"\nimport { RandomizeScript } from \"@/app/(create)/components/random-button\"\nimport {\n  getBaseComponent,\n  getBaseItem,\n  getItemsForBase,\n} from \"@/app/(create)/lib/api\"\n\nexport const revalidate = false\nexport const dynamic = \"force-static\"\nexport const dynamicParams = false\n\nfunction PreventScrollOnFocusScript() {\n  return (\n    <script\n      dangerouslySetInnerHTML={{\n        __html: `(function(){var f=HTMLElement.prototype.focus;HTMLElement.prototype.focus=function(o){f.call(this,Object.assign({},o,{preventScroll:true}))};})();`,\n      }}\n    />\n  )\n}\n\nconst getCacheRegistryItem = React.cache(\n  async (name: string, base: Base[\"name\"]) => {\n    return await getBaseItem(name, base)\n  }\n)\n\nconst getCachedRegistryComponent = React.cache(\n  async (name: string, base: Base[\"name\"]) => {\n    return await getBaseComponent(name, base)\n  }\n)\n\nexport async function generateMetadata({\n  params,\n}: {\n  params: Promise<{\n    base: string\n    name: string\n  }>\n}): Promise<Metadata> {\n  const paramBag = await params\n  const base = BASES.find((l) => l.name === paramBag.base)\n\n  if (!base) {\n    return {}\n  }\n  const item = await getBaseItem(paramBag.name, base.name)\n\n  if (!item) {\n    return {}\n  }\n\n  const title = item.name\n  const description = item.description\n\n  return {\n    title: item.name,\n    description,\n    openGraph: {\n      title,\n      description,\n      type: \"article\",\n      url: absoluteUrl(`/preview/${base.name}/${item.name}`),\n      images: [\n        {\n          url: siteConfig.ogImage,\n          width: 1200,\n          height: 630,\n          alt: siteConfig.name,\n        },\n      ],\n    },\n    twitter: {\n      card: \"summary_large_image\",\n      title,\n      description,\n      images: [siteConfig.ogImage],\n      creator: \"@shadcn\",\n    },\n  }\n}\n\nexport async function generateStaticParams() {\n  const params: Array<{ base: string; name: string }> = []\n\n  for (const base of BASES) {\n    const items = await getItemsForBase(base.name as BaseName)\n    for (const item of items) {\n      params.push({\n        base: base.name,\n        name: item.name,\n      })\n    }\n  }\n\n  return params\n}\n\nexport default async function BlockPage({\n  params,\n}: {\n  params: Promise<{\n    base: string\n    name: string\n  }>\n}) {\n  const paramBag = await params\n  const base = BASES.find((l) => l.name === paramBag.base)\n\n  if (!base) {\n    return notFound()\n  }\n\n  const [item, Component] = await Promise.all([\n    getCacheRegistryItem(paramBag.name, base.name),\n    getCachedRegistryComponent(paramBag.name, base.name),\n  ])\n\n  if (!item || !Component) {\n    return notFound()\n  }\n\n  return (\n    <div className=\"relative bg-background\">\n      <PreventScrollOnFocusScript />\n      <PreviewStyle />\n      <ActionMenuScript />\n      <RandomizeScript />\n      <HistoryScript />\n      <DarkModeScript />\n      <DesignSystemProvider>\n        <Component />\n      </DesignSystemProvider>\n      <TailwindIndicator forceMount />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  IconCamera,\n  IconChartBar,\n  IconDashboard,\n  IconDatabase,\n  IconFileAi,\n  IconFileDescription,\n  IconFileWord,\n  IconFolder,\n  IconHelp,\n  IconInnerShadowTop,\n  IconListDetails,\n  IconReport,\n  IconSearch,\n  IconSettings,\n  IconUsers,\n} from \"@tabler/icons-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { NavDocuments } from \"@/app/(examples)/dashboard/components/nav-documents\"\nimport { NavMain } from \"@/app/(examples)/dashboard/components/nav-main\"\nimport { NavSecondary } from \"@/app/(examples)/dashboard/components/nav-secondary\"\nimport { NavUser } from \"@/app/(examples)/dashboard/components/nav-user\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Dashboard\",\n      url: \"#\",\n      icon: IconDashboard,\n    },\n    {\n      title: \"Lifecycle\",\n      url: \"#\",\n      icon: IconListDetails,\n    },\n    {\n      title: \"Analytics\",\n      url: \"#\",\n      icon: IconChartBar,\n    },\n    {\n      title: \"Projects\",\n      url: \"#\",\n      icon: IconFolder,\n    },\n    {\n      title: \"Team\",\n      url: \"#\",\n      icon: IconUsers,\n    },\n  ],\n  navClouds: [\n    {\n      title: \"Capture\",\n      icon: IconCamera,\n      isActive: true,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Proposal\",\n      icon: IconFileDescription,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Prompts\",\n      icon: IconFileAi,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: IconSettings,\n    },\n    {\n      title: \"Get Help\",\n      url: \"#\",\n      icon: IconHelp,\n    },\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: IconSearch,\n    },\n  ],\n  documents: [\n    {\n      name: \"Data Library\",\n      url: \"#\",\n      icon: IconDatabase,\n    },\n    {\n      name: \"Reports\",\n      url: \"#\",\n      icon: IconReport,\n    },\n    {\n      name: \"Word Assistant\",\n      url: \"#\",\n      icon: IconFileWord,\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar collapsible=\"offcanvas\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton\n              asChild\n              className=\"data-[slot=sidebar-menu-button]:p-1.5!\"\n            >\n              <a href=\"#\">\n                <IconInnerShadowTop className=\"size-5!\" />\n                <span className=\"text-base font-semibold\">Acme Inc.</span>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavDocuments items={data.documents} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/chart-area-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport { useIsMobile } from \"@/registry/new-york-v4/hooks/use-mobile\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport const description = \"An interactive area chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n  { date: \"2024-05-01\", desktop: 165, mobile: 220 },\n  { date: \"2024-05-02\", desktop: 293, mobile: 310 },\n  { date: \"2024-05-03\", desktop: 247, mobile: 190 },\n  { date: \"2024-05-04\", desktop: 385, mobile: 420 },\n  { date: \"2024-05-05\", desktop: 481, mobile: 390 },\n  { date: \"2024-05-06\", desktop: 498, mobile: 520 },\n  { date: \"2024-05-07\", desktop: 388, mobile: 300 },\n  { date: \"2024-05-08\", desktop: 149, mobile: 210 },\n  { date: \"2024-05-09\", desktop: 227, mobile: 180 },\n  { date: \"2024-05-10\", desktop: 293, mobile: 330 },\n  { date: \"2024-05-11\", desktop: 335, mobile: 270 },\n  { date: \"2024-05-12\", desktop: 197, mobile: 240 },\n  { date: \"2024-05-13\", desktop: 197, mobile: 160 },\n  { date: \"2024-05-14\", desktop: 448, mobile: 490 },\n  { date: \"2024-05-15\", desktop: 473, mobile: 380 },\n  { date: \"2024-05-16\", desktop: 338, mobile: 400 },\n  { date: \"2024-05-17\", desktop: 499, mobile: 420 },\n  { date: \"2024-05-18\", desktop: 315, mobile: 350 },\n  { date: \"2024-05-19\", desktop: 235, mobile: 180 },\n  { date: \"2024-05-20\", desktop: 177, mobile: 230 },\n  { date: \"2024-05-21\", desktop: 82, mobile: 140 },\n  { date: \"2024-05-22\", desktop: 81, mobile: 120 },\n  { date: \"2024-05-23\", desktop: 252, mobile: 290 },\n  { date: \"2024-05-24\", desktop: 294, mobile: 220 },\n  { date: \"2024-05-25\", desktop: 201, mobile: 250 },\n  { date: \"2024-05-26\", desktop: 213, mobile: 170 },\n  { date: \"2024-05-27\", desktop: 420, mobile: 460 },\n  { date: \"2024-05-28\", desktop: 233, mobile: 190 },\n  { date: \"2024-05-29\", desktop: 78, mobile: 130 },\n  { date: \"2024-05-30\", desktop: 340, mobile: 280 },\n  { date: \"2024-05-31\", desktop: 178, mobile: 230 },\n  { date: \"2024-06-01\", desktop: 178, mobile: 200 },\n  { date: \"2024-06-02\", desktop: 470, mobile: 410 },\n  { date: \"2024-06-03\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-04\", desktop: 439, mobile: 380 },\n  { date: \"2024-06-05\", desktop: 88, mobile: 140 },\n  { date: \"2024-06-06\", desktop: 294, mobile: 250 },\n  { date: \"2024-06-07\", desktop: 323, mobile: 370 },\n  { date: \"2024-06-08\", desktop: 385, mobile: 320 },\n  { date: \"2024-06-09\", desktop: 438, mobile: 480 },\n  { date: \"2024-06-10\", desktop: 155, mobile: 200 },\n  { date: \"2024-06-11\", desktop: 92, mobile: 150 },\n  { date: \"2024-06-12\", desktop: 492, mobile: 420 },\n  { date: \"2024-06-13\", desktop: 81, mobile: 130 },\n  { date: \"2024-06-14\", desktop: 426, mobile: 380 },\n  { date: \"2024-06-15\", desktop: 307, mobile: 350 },\n  { date: \"2024-06-16\", desktop: 371, mobile: 310 },\n  { date: \"2024-06-17\", desktop: 475, mobile: 520 },\n  { date: \"2024-06-18\", desktop: 107, mobile: 170 },\n  { date: \"2024-06-19\", desktop: 341, mobile: 290 },\n  { date: \"2024-06-20\", desktop: 408, mobile: 450 },\n  { date: \"2024-06-21\", desktop: 169, mobile: 210 },\n  { date: \"2024-06-22\", desktop: 317, mobile: 270 },\n  { date: \"2024-06-23\", desktop: 480, mobile: 530 },\n  { date: \"2024-06-24\", desktop: 132, mobile: 180 },\n  { date: \"2024-06-25\", desktop: 141, mobile: 190 },\n  { date: \"2024-06-26\", desktop: 434, mobile: 380 },\n  { date: \"2024-06-27\", desktop: 448, mobile: 490 },\n  { date: \"2024-06-28\", desktop: 149, mobile: 200 },\n  { date: \"2024-06-29\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-30\", desktop: 446, mobile: 400 },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaInteractive() {\n  const isMobile = useIsMobile()\n  const [timeRange, setTimeRange] = React.useState(\"90d\")\n\n  React.useEffect(() => {\n    if (isMobile) {\n      setTimeRange(\"7d\")\n    }\n  }, [isMobile])\n\n  const filteredData = chartData.filter((item) => {\n    const date = new Date(item.date)\n    const referenceDate = new Date(\"2024-06-30\")\n    let daysToSubtract = 90\n    if (timeRange === \"30d\") {\n      daysToSubtract = 30\n    } else if (timeRange === \"7d\") {\n      daysToSubtract = 7\n    }\n    const startDate = new Date(referenceDate)\n    startDate.setDate(startDate.getDate() - daysToSubtract)\n    return date >= startDate\n  })\n\n  return (\n    <Card className=\"@container/card\">\n      <CardHeader>\n        <CardTitle>Total Visitors</CardTitle>\n        <CardDescription>\n          <span className=\"hidden @[540px]/card:block\">\n            Total for the last 3 months\n          </span>\n          <span className=\"@[540px]/card:hidden\">Last 3 months</span>\n        </CardDescription>\n        <CardAction>\n          <ToggleGroup\n            type=\"single\"\n            value={timeRange}\n            onValueChange={setTimeRange}\n            variant=\"outline\"\n            className=\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\"\n          >\n            <ToggleGroupItem value=\"90d\">Last 3 months</ToggleGroupItem>\n            <ToggleGroupItem value=\"30d\">Last 30 days</ToggleGroupItem>\n            <ToggleGroupItem value=\"7d\">Last 7 days</ToggleGroupItem>\n          </ToggleGroup>\n          <Select value={timeRange} onValueChange={setTimeRange}>\n            <SelectTrigger\n              className=\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\"\n              size=\"sm\"\n              aria-label=\"Select a value\"\n            >\n              <SelectValue placeholder=\"Last 3 months\" />\n            </SelectTrigger>\n            <SelectContent className=\"rounded-xl\">\n              <SelectItem value=\"90d\" className=\"rounded-lg\">\n                Last 3 months\n              </SelectItem>\n              <SelectItem value=\"30d\" className=\"rounded-lg\">\n                Last 30 days\n              </SelectItem>\n              <SelectItem value=\"7d\" className=\"rounded-lg\">\n                Last 7 days\n              </SelectItem>\n            </SelectContent>\n          </Select>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"px-2 pt-4 sm:px-6 sm:pt-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <AreaChart data={filteredData}>\n            <defs>\n              <linearGradient id=\"fillDesktop\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={1.0}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n              <linearGradient id=\"fillMobile\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n            </defs>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              cursor={false}\n              defaultIndex={isMobile ? -1 : 10}\n              content={\n                <ChartTooltipContent\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                    })\n                  }}\n                  indicator=\"dot\"\n                />\n              }\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"url(#fillMobile)\"\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"url(#fillDesktop)\"\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/data-table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  closestCenter,\n  DndContext,\n  KeyboardSensor,\n  MouseSensor,\n  TouchSensor,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n  type UniqueIdentifier,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n  arrayMove,\n  SortableContext,\n  useSortable,\n  verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n  IconChevronDown,\n  IconChevronLeft,\n  IconChevronRight,\n  IconChevronsLeft,\n  IconChevronsRight,\n  IconCircleCheckFilled,\n  IconDotsVertical,\n  IconGripVertical,\n  IconLayoutColumns,\n  IconLoader,\n  IconPlus,\n  IconTrendingUp,\n} from \"@tabler/icons-react\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFacetedRowModel,\n  getFacetedUniqueValues,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type Row,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\nimport { toast } from \"sonner\"\nimport { z } from \"zod\"\n\nimport { useIsMobile } from \"@/registry/new-york-v4/hooks/use-mobile\"\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\n\nexport const schema = z.object({\n  id: z.number(),\n  header: z.string(),\n  type: z.string(),\n  status: z.string(),\n  target: z.string(),\n  limit: z.string(),\n  reviewer: z.string(),\n})\n\n// Create a separate component for the drag handle\nfunction DragHandle({ id }: { id: number }) {\n  const { attributes, listeners } = useSortable({\n    id,\n  })\n\n  return (\n    <Button\n      {...attributes}\n      {...listeners}\n      variant=\"ghost\"\n      size=\"icon\"\n      className=\"size-7 text-muted-foreground hover:bg-transparent\"\n    >\n      <IconGripVertical className=\"size-3 text-muted-foreground\" />\n      <span className=\"sr-only\">Drag to reorder</span>\n    </Button>\n  )\n}\n\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\n  {\n    id: \"drag\",\n    header: () => null,\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\n  },\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={\n            table.getIsAllPageRowsSelected() ||\n            (table.getIsSomePageRowsSelected() && \"indeterminate\")\n          }\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n          aria-label=\"Select all\"\n        />\n      </div>\n    ),\n    cell: ({ row }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={row.getIsSelected()}\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\n          aria-label=\"Select row\"\n        />\n      </div>\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"header\",\n    header: \"Header\",\n    cell: ({ row }) => {\n      return <TableCellViewer item={row.original} />\n    },\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"type\",\n    header: \"Section Type\",\n    cell: ({ row }) => (\n      <div className=\"w-32\">\n        <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n          {row.original.type}\n        </Badge>\n      </div>\n    ),\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n        {row.original.status === \"Done\" ? (\n          <IconCircleCheckFilled className=\"fill-green-500 dark:fill-green-400\" />\n        ) : (\n          <IconLoader />\n        )}\n        {row.original.status}\n      </Badge>\n    ),\n  },\n  {\n    accessorKey: \"target\",\n    header: () => <div className=\"w-full text-right\">Target</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-target`} className=\"sr-only\">\n          Target\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.target}\n          id={`${row.original.id}-target`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"limit\",\n    header: () => <div className=\"w-full text-right\">Limit</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-limit`} className=\"sr-only\">\n          Limit\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.limit}\n          id={`${row.original.id}-limit`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"reviewer\",\n    header: \"Reviewer\",\n    cell: ({ row }) => {\n      const isAssigned = row.original.reviewer !== \"Assign reviewer\"\n\n      if (isAssigned) {\n        return row.original.reviewer\n      }\n\n      return (\n        <>\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\"sr-only\">\n            Reviewer\n          </Label>\n          <Select>\n            <SelectTrigger\n              className=\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\"\n              size=\"sm\"\n              id={`${row.original.id}-reviewer`}\n            >\n              <SelectValue placeholder=\"Assign reviewer\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n              <SelectItem value=\"Jamik Tashpulatov\">\n                Jamik Tashpulatov\n              </SelectItem>\n            </SelectContent>\n          </Select>\n        </>\n      )\n    },\n  },\n  {\n    id: \"actions\",\n    cell: () => (\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button\n            variant=\"ghost\"\n            className=\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\"\n            size=\"icon\"\n          >\n            <IconDotsVertical />\n            <span className=\"sr-only\">Open menu</span>\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-32\">\n          <DropdownMenuItem>Edit</DropdownMenuItem>\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem variant=\"destructive\">Delete</DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    ),\n  },\n]\n\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\n    id: row.original.id,\n  })\n\n  return (\n    <TableRow\n      data-state={row.getIsSelected() && \"selected\"}\n      data-dragging={isDragging}\n      ref={setNodeRef}\n      className=\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\"\n      style={{\n        transform: CSS.Transform.toString(transform),\n        transition: transition,\n      }}\n    >\n      {row.getVisibleCells().map((cell) => (\n        <TableCell key={cell.id}>\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\n        </TableCell>\n      ))}\n    </TableRow>\n  )\n}\n\nexport function DataTable({\n  data: initialData,\n}: {\n  data: z.infer<typeof schema>[]\n}) {\n  const [data, setData] = React.useState(() => initialData)\n  const [rowSelection, setRowSelection] = React.useState({})\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [pagination, setPagination] = React.useState({\n    pageIndex: 0,\n    pageSize: 10,\n  })\n  const sortableId = React.useId()\n  const sensors = useSensors(\n    useSensor(MouseSensor, {}),\n    useSensor(TouchSensor, {}),\n    useSensor(KeyboardSensor, {})\n  )\n\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\n    () => data?.map(({ id }) => id) || [],\n    [data]\n  )\n\n  const table = useReactTable({\n    data,\n    columns,\n    state: {\n      sorting,\n      columnVisibility,\n      rowSelection,\n      columnFilters,\n      pagination,\n    },\n    getRowId: (row) => row.id.toString(),\n    enableRowSelection: true,\n    onRowSelectionChange: setRowSelection,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    onColumnVisibilityChange: setColumnVisibility,\n    onPaginationChange: setPagination,\n    getCoreRowModel: getCoreRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFacetedRowModel: getFacetedRowModel(),\n    getFacetedUniqueValues: getFacetedUniqueValues(),\n  })\n\n  function handleDragEnd(event: DragEndEvent) {\n    const { active, over } = event\n    if (active && over && active.id !== over.id) {\n      setData((data) => {\n        const oldIndex = dataIds.indexOf(active.id)\n        const newIndex = dataIds.indexOf(over.id)\n        return arrayMove(data, oldIndex, newIndex)\n      })\n    }\n  }\n\n  return (\n    <Tabs\n      defaultValue=\"outline\"\n      className=\"w-full flex-col justify-start gap-6\"\n    >\n      <div className=\"flex items-center justify-between px-4 lg:px-6\">\n        <Label htmlFor=\"view-selector\" className=\"sr-only\">\n          View\n        </Label>\n        <Select defaultValue=\"outline\">\n          <SelectTrigger\n            className=\"flex w-fit @4xl/main:hidden\"\n            size=\"sm\"\n            id=\"view-selector\"\n          >\n            <SelectValue placeholder=\"Select a view\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectItem value=\"outline\">Outline</SelectItem>\n            <SelectItem value=\"past-performance\">Past Performance</SelectItem>\n            <SelectItem value=\"key-personnel\">Key Personnel</SelectItem>\n            <SelectItem value=\"focus-documents\">Focus Documents</SelectItem>\n          </SelectContent>\n        </Select>\n        <TabsList className=\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\">\n          <TabsTrigger value=\"outline\">Outline</TabsTrigger>\n          <TabsTrigger value=\"past-performance\">\n            Past Performance <Badge variant=\"secondary\">3</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"key-personnel\">\n            Key Personnel <Badge variant=\"secondary\">2</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"focus-documents\">Focus Documents</TabsTrigger>\n        </TabsList>\n        <div className=\"flex items-center gap-2\">\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"outline\" size=\"sm\">\n                <IconLayoutColumns />\n                <span className=\"hidden lg:inline\">Customize Columns</span>\n                <span className=\"lg:hidden\">Columns</span>\n                <IconChevronDown />\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"w-56\">\n              {table\n                .getAllColumns()\n                .filter(\n                  (column) =>\n                    typeof column.accessorFn !== \"undefined\" &&\n                    column.getCanHide()\n                )\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuContent>\n          </DropdownMenu>\n          <Button variant=\"outline\" size=\"sm\">\n            <IconPlus />\n            <span className=\"hidden lg:inline\">Add Section</span>\n          </Button>\n        </div>\n      </div>\n      <TabsContent\n        value=\"outline\"\n        className=\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\"\n      >\n        <div className=\"overflow-hidden rounded-lg border\">\n          <DndContext\n            collisionDetection={closestCenter}\n            modifiers={[restrictToVerticalAxis]}\n            onDragEnd={handleDragEnd}\n            sensors={sensors}\n            id={sortableId}\n          >\n            <Table>\n              <TableHeader className=\"sticky top-0 z-10 bg-muted\">\n                {table.getHeaderGroups().map((headerGroup) => (\n                  <TableRow key={headerGroup.id}>\n                    {headerGroup.headers.map((header) => {\n                      return (\n                        <TableHead key={header.id} colSpan={header.colSpan}>\n                          {header.isPlaceholder\n                            ? null\n                            : flexRender(\n                                header.column.columnDef.header,\n                                header.getContext()\n                              )}\n                        </TableHead>\n                      )\n                    })}\n                  </TableRow>\n                ))}\n              </TableHeader>\n              <TableBody className=\"**:data-[slot=table-cell]:first:w-8\">\n                {table.getRowModel().rows?.length ? (\n                  <SortableContext\n                    items={dataIds}\n                    strategy={verticalListSortingStrategy}\n                  >\n                    {table.getRowModel().rows.map((row) => (\n                      <DraggableRow key={row.id} row={row} />\n                    ))}\n                  </SortableContext>\n                ) : (\n                  <TableRow>\n                    <TableCell\n                      colSpan={columns.length}\n                      className=\"h-24 text-center\"\n                    >\n                      No results.\n                    </TableCell>\n                  </TableRow>\n                )}\n              </TableBody>\n            </Table>\n          </DndContext>\n        </div>\n        <div className=\"flex items-center justify-between px-4\">\n          <div className=\"hidden flex-1 text-sm text-muted-foreground lg:flex\">\n            {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n            {table.getFilteredRowModel().rows.length} row(s) selected.\n          </div>\n          <div className=\"flex w-full items-center gap-8 lg:w-fit\">\n            <div className=\"hidden items-center gap-2 lg:flex\">\n              <Label htmlFor=\"rows-per-page\" className=\"text-sm font-medium\">\n                Rows per page\n              </Label>\n              <Select\n                value={`${table.getState().pagination.pageSize}`}\n                onValueChange={(value) => {\n                  table.setPageSize(Number(value))\n                }}\n              >\n                <SelectTrigger size=\"sm\" className=\"w-20\" id=\"rows-per-page\">\n                  <SelectValue\n                    placeholder={table.getState().pagination.pageSize}\n                  />\n                </SelectTrigger>\n                <SelectContent side=\"top\">\n                  {[10, 20, 30, 40, 50].map((pageSize) => (\n                    <SelectItem key={pageSize} value={`${pageSize}`}>\n                      {pageSize}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"flex w-fit items-center justify-center text-sm font-medium\">\n              Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n              {table.getPageCount()}\n            </div>\n            <div className=\"ml-auto flex items-center gap-2 lg:ml-0\">\n              <Button\n                variant=\"outline\"\n                className=\"hidden h-8 w-8 p-0 lg:flex\"\n                onClick={() => table.setPageIndex(0)}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to first page</span>\n                <IconChevronsLeft />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.previousPage()}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to previous page</span>\n                <IconChevronLeft />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.nextPage()}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to next page</span>\n                <IconChevronRight />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"hidden size-8 lg:flex\"\n                size=\"icon\"\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to last page</span>\n                <IconChevronsRight />\n              </Button>\n            </div>\n          </div>\n        </div>\n      </TabsContent>\n      <TabsContent\n        value=\"past-performance\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent value=\"key-personnel\" className=\"flex flex-col px-4 lg:px-6\">\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent\n        value=\"focus-documents\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n    </Tabs>\n  )\n}\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\n  const isMobile = useIsMobile()\n\n  return (\n    <Drawer direction={isMobile ? \"bottom\" : \"right\"}>\n      <DrawerTrigger asChild>\n        <Button variant=\"link\" className=\"w-fit px-0 text-left text-foreground\">\n          {item.header}\n        </Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader className=\"gap-1\">\n          <DrawerTitle>{item.header}</DrawerTitle>\n          <DrawerDescription>\n            Showing total visitors for the last 6 months\n          </DrawerDescription>\n        </DrawerHeader>\n        <div className=\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\">\n          {!isMobile && (\n            <>\n              <ChartContainer config={chartConfig}>\n                <AreaChart\n                  accessibilityLayer\n                  data={chartData}\n                  margin={{\n                    left: 0,\n                    right: 10,\n                  }}\n                >\n                  <CartesianGrid vertical={false} />\n                  <XAxis\n                    dataKey=\"month\"\n                    tickLine={false}\n                    axisLine={false}\n                    tickMargin={8}\n                    tickFormatter={(value) => value.slice(0, 3)}\n                    hide\n                  />\n                  <ChartTooltip\n                    cursor={false}\n                    content={<ChartTooltipContent indicator=\"dot\" />}\n                  />\n                  <Area\n                    dataKey=\"mobile\"\n                    type=\"natural\"\n                    fill=\"var(--color-mobile)\"\n                    fillOpacity={0.6}\n                    stroke=\"var(--color-mobile)\"\n                    stackId=\"a\"\n                  />\n                  <Area\n                    dataKey=\"desktop\"\n                    type=\"natural\"\n                    fill=\"var(--color-desktop)\"\n                    fillOpacity={0.4}\n                    stroke=\"var(--color-desktop)\"\n                    stackId=\"a\"\n                  />\n                </AreaChart>\n              </ChartContainer>\n              <Separator />\n              <div className=\"grid gap-2\">\n                <div className=\"flex gap-2 leading-none font-medium\">\n                  Trending up by 5.2% this month{\" \"}\n                  <IconTrendingUp className=\"size-4\" />\n                </div>\n                <div className=\"text-muted-foreground\">\n                  Showing total visitors for the last 6 months. This is just\n                  some random text to test the layout. It spans multiple lines\n                  and should wrap around.\n                </div>\n              </div>\n              <Separator />\n            </>\n          )}\n          <form className=\"flex flex-col gap-4\">\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"header\">Header</Label>\n              <Input id=\"header\" defaultValue={item.header} />\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"type\">Type</Label>\n                <Select defaultValue={item.type}>\n                  <SelectTrigger id=\"type\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a type\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"Table of Contents\">\n                      Table of Contents\n                    </SelectItem>\n                    <SelectItem value=\"Executive Summary\">\n                      Executive Summary\n                    </SelectItem>\n                    <SelectItem value=\"Technical Approach\">\n                      Technical Approach\n                    </SelectItem>\n                    <SelectItem value=\"Design\">Design</SelectItem>\n                    <SelectItem value=\"Capabilities\">Capabilities</SelectItem>\n                    <SelectItem value=\"Focus Documents\">\n                      Focus Documents\n                    </SelectItem>\n                    <SelectItem value=\"Narrative\">Narrative</SelectItem>\n                    <SelectItem value=\"Cover Page\">Cover Page</SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"status\">Status</Label>\n                <Select defaultValue={item.status}>\n                  <SelectTrigger id=\"status\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a status\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"Done\">Done</SelectItem>\n                    <SelectItem value=\"In Progress\">In Progress</SelectItem>\n                    <SelectItem value=\"Not Started\">Not Started</SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"target\">Target</Label>\n                <Input id=\"target\" defaultValue={item.target} />\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"limit\">Limit</Label>\n                <Input id=\"limit\" defaultValue={item.limit} />\n              </div>\n            </div>\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"reviewer\">Reviewer</Label>\n              <Select defaultValue={item.reviewer}>\n                <SelectTrigger id=\"reviewer\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select a reviewer\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n                  <SelectItem value=\"Jamik Tashpulatov\">\n                    Jamik Tashpulatov\n                  </SelectItem>\n                  <SelectItem value=\"Emily Whalen\">Emily Whalen</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n          </form>\n        </div>\n        <DrawerFooter>\n          <Button>Submit</Button>\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Done</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/mode-toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconBrightness } from \"@tabler/icons-react\"\nimport { useTheme } from \"next-themes\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function ModeToggle() {\n  const { setTheme, resolvedTheme } = useTheme()\n\n  const toggleTheme = React.useCallback(() => {\n    setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n  }, [resolvedTheme, setTheme])\n\n  return (\n    <Button\n      variant=\"secondary\"\n      size=\"icon\"\n      className=\"group/toggle size-8\"\n      onClick={toggleTheme}\n    >\n      <IconBrightness />\n      <span className=\"sr-only\">Toggle theme</span>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/nav-documents.tsx",
    "content": "\"use client\"\n\nimport {\n  IconDots,\n  IconFolder,\n  IconShare3,\n  IconTrash,\n  type Icon,\n} from \"@tabler/icons-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavDocuments({\n  items,\n}: {\n  items: {\n    name: string\n    url: string\n    icon: Icon\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                <item.icon />\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"rounded-sm data-[state=open]:bg-accent\"\n                >\n                  <IconDots />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-24 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconFolder />\n                  <span>Open</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconShare3 />\n                  <span>Share</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  <IconTrash />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconDots className=\"text-sidebar-foreground/70\" />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { IconCirclePlusFilled, IconMail, type Icon } from \"@tabler/icons-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: Icon\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupContent className=\"flex flex-col gap-2\">\n        <SidebarMenu>\n          <SidebarMenuItem className=\"flex items-center gap-2\">\n            <SidebarMenuButton\n              tooltip=\"Quick Create\"\n              className=\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\"\n            >\n              <IconCirclePlusFilled />\n              <span>Quick Create</span>\n            </SidebarMenuButton>\n            <Button\n              size=\"icon\"\n              className=\"size-8 group-data-[collapsible=icon]:opacity-0\"\n              variant=\"outline\"\n            >\n              <IconMail />\n              <span className=\"sr-only\">Inbox</span>\n            </Button>\n          </SidebarMenuItem>\n        </SidebarMenu>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton tooltip={item.title}>\n                {item.icon && <item.icon />}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconBrightness, type Icon } from \"@tabler/icons-react\"\nimport { useTheme } from \"next-themes\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { Skeleton } from \"@/registry/new-york-v4/ui/skeleton\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: Icon\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  const { resolvedTheme, setTheme } = useTheme()\n  const [mounted, setMounted] = React.useState(false)\n\n  React.useEffect(() => {\n    setMounted(true)\n  }, [])\n\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild>\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n          <SidebarMenuItem className=\"group-data-[collapsible=icon]:hidden\">\n            <SidebarMenuButton asChild>\n              <label>\n                <IconBrightness />\n                <span>Dark Mode</span>\n                {mounted ? (\n                  <Switch\n                    className=\"ml-auto\"\n                    checked={resolvedTheme !== \"light\"}\n                    onCheckedChange={() =>\n                      setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n                    }\n                  />\n                ) : (\n                  <Skeleton className=\"ml-auto h-4 w-8 rounded-full\" />\n                )}\n              </label>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  IconCreditCard,\n  IconDotsVertical,\n  IconLogout,\n  IconNotification,\n  IconUserCircle,\n} from \"@tabler/icons-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg grayscale\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs text-muted-foreground\">\n                  {user.email}\n                </span>\n              </div>\n              <IconDotsVertical className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs text-muted-foreground\">\n                    {user.email}\n                  </span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconUserCircle />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconCreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconNotification />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconLogout />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/section-cards.tsx",
    "content": "import { IconTrendingDown, IconTrendingUp } from \"@tabler/icons-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\n\nexport function SectionCards() {\n  return (\n    <div className=\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\">\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Total Revenue</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            $1,250.00\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Trending up this month <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>New Customers</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            1,234\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingDown />\n              -20%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Down 20% this period <IconTrendingDown className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Acquisition needs attention\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Active Accounts</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            45,678\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Strong user retention <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">Engagement exceed targets</div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Growth Rate</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            4.5%\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +4.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Steady performance increase <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">Meets growth projections</div>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/site-header.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { SidebarTrigger } from \"@/registry/new-york-v4/ui/sidebar\"\nimport { ModeToggle } from \"@/app/(examples)/dashboard/components/mode-toggle\"\nimport { ThemeSelector } from \"@/app/(examples)/dashboard/components/theme-selector\"\n\nexport function SiteHeader() {\n  return (\n    <header className=\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\">\n      <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n        <SidebarTrigger className=\"-ml-1\" />\n        <Separator\n          orientation=\"vertical\"\n          className=\"mx-2 data-[orientation=vertical]:h-4\"\n        />\n        <h1 className=\"text-base font-medium\">Documents</h1>\n        <div className=\"ml-auto flex items-center gap-2\">\n          <Button variant=\"ghost\" asChild size=\"sm\" className=\"hidden sm:flex\">\n            <a\n              href=\"https://github.com/shadcn-ui/ui/tree/main/apps/v4/app/(examples)/dashboard\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n              className=\"dark:text-foreground\"\n            >\n              GitHub\n            </a>\n          </Button>\n          <ThemeSelector />\n          <ModeToggle />\n        </div>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/components/theme-selector.tsx",
    "content": "\"use client\"\n\nimport { useThemeConfig } from \"@/components/active-theme\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nconst DEFAULT_THEMES = [\n  {\n    name: \"Default\",\n    value: \"default\",\n  },\n  {\n    name: \"Blue\",\n    value: \"blue\",\n  },\n  {\n    name: \"Green\",\n    value: \"green\",\n  },\n  {\n    name: \"Amber\",\n    value: \"amber\",\n  },\n]\n\nconst SCALED_THEMES = [\n  {\n    name: \"Default\",\n    value: \"default-scaled\",\n  },\n  {\n    name: \"Blue\",\n    value: \"blue-scaled\",\n  },\n]\n\nconst MONO_THEMES = [\n  {\n    name: \"Mono\",\n    value: \"mono-scaled\",\n  },\n]\n\nexport function ThemeSelector() {\n  const { activeTheme, setActiveTheme } = useThemeConfig()\n\n  return (\n    <div className=\"flex items-center gap-2\">\n      <Label htmlFor=\"theme-selector\" className=\"sr-only\">\n        Theme\n      </Label>\n      <Select value={activeTheme} onValueChange={setActiveTheme}>\n        <SelectTrigger\n          id=\"theme-selector\"\n          size=\"sm\"\n          className=\"justify-start *:data-[slot=select-value]:w-12\"\n        >\n          <span className=\"hidden text-muted-foreground sm:block\">\n            Select a theme:\n          </span>\n          <span className=\"block text-muted-foreground sm:hidden\">Theme</span>\n          <SelectValue placeholder=\"Select a theme\" />\n        </SelectTrigger>\n        <SelectContent align=\"end\">\n          <SelectGroup>\n            <SelectLabel>Default</SelectLabel>\n            {DEFAULT_THEMES.map((theme) => (\n              <SelectItem key={theme.name} value={theme.value}>\n                {theme.name}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n          <SelectSeparator />\n          <SelectGroup>\n            <SelectLabel>Scaled</SelectLabel>\n            {SCALED_THEMES.map((theme) => (\n              <SelectItem key={theme.name} value={theme.value}>\n                {theme.name}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n          <SelectGroup>\n            <SelectLabel>Monospaced</SelectLabel>\n            {MONO_THEMES.map((theme) => (\n              <SelectItem key={theme.name} value={theme.value}>\n                {theme.name}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/data.json",
    "content": "[\n  {\n    \"id\": 1,\n    \"header\": \"Cover page\",\n    \"type\": \"Cover page\",\n    \"status\": \"In Process\",\n    \"target\": \"18\",\n    \"limit\": \"5\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 2,\n    \"header\": \"Table of contents\",\n    \"type\": \"Table of contents\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 3,\n    \"header\": \"Executive summary\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"10\",\n    \"limit\": \"13\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 4,\n    \"header\": \"Technical approach\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"27\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 5,\n    \"header\": \"Design\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"2\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 6,\n    \"header\": \"Capabilities\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"20\",\n    \"limit\": \"8\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 7,\n    \"header\": \"Integration with existing systems\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 8,\n    \"header\": \"Innovation and Advantages\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"25\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 9,\n    \"header\": \"Overview of EMR's Innovative Solutions\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"7\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 10,\n    \"header\": \"Advanced Algorithms and Machine Learning\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 11,\n    \"header\": \"Adaptive Communication Protocols\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"9\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 12,\n    \"header\": \"Advantages Over Current Technologies\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"0\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 13,\n    \"header\": \"Past Performance\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 14,\n    \"header\": \"Customer Feedback and Satisfaction Levels\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"34\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 15,\n    \"header\": \"Implementation Challenges and Solutions\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"3\",\n    \"limit\": \"35\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 16,\n    \"header\": \"Security Measures and Data Protection Policies\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"6\",\n    \"limit\": \"36\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 17,\n    \"header\": \"Scalability and Future Proofing\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"4\",\n    \"limit\": \"37\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 18,\n    \"header\": \"Cost-Benefit Analysis\",\n    \"type\": \"Plain language\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"38\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 19,\n    \"header\": \"User Training and Onboarding Experience\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"17\",\n    \"limit\": \"39\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 20,\n    \"header\": \"Future Development Roadmap\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"11\",\n    \"limit\": \"40\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 21,\n    \"header\": \"System Architecture Overview\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"24\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Maya Johnson\"\n  },\n  {\n    \"id\": 22,\n    \"header\": \"Risk Management Plan\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Carlos Rodriguez\"\n  },\n  {\n    \"id\": 23,\n    \"header\": \"Compliance Documentation\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"31\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Sarah Chen\"\n  },\n  {\n    \"id\": 24,\n    \"header\": \"API Documentation\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"8\",\n    \"limit\": \"12\",\n    \"reviewer\": \"Raj Patel\"\n  },\n  {\n    \"id\": 25,\n    \"header\": \"User Interface Mockups\",\n    \"type\": \"Visual\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Leila Ahmadi\"\n  },\n  {\n    \"id\": 26,\n    \"header\": \"Database Schema\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Thomas Wilson\"\n  },\n  {\n    \"id\": 27,\n    \"header\": \"Testing Methodology\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 28,\n    \"header\": \"Deployment Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 29,\n    \"header\": \"Budget Breakdown\",\n    \"type\": \"Financial\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 30,\n    \"header\": \"Market Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Sophia Martinez\"\n  },\n  {\n    \"id\": 31,\n    \"header\": \"Competitor Comparison\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 32,\n    \"header\": \"Maintenance Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Alex Thompson\"\n  },\n  {\n    \"id\": 33,\n    \"header\": \"User Personas\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Nina Patel\"\n  },\n  {\n    \"id\": 34,\n    \"header\": \"Accessibility Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 35,\n    \"header\": \"Performance Metrics\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"David Kim\"\n  },\n  {\n    \"id\": 36,\n    \"header\": \"Disaster Recovery Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 37,\n    \"header\": \"Third-party Integrations\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 38,\n    \"header\": \"User Feedback Summary\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 39,\n    \"header\": \"Localization Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"12\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Maria Garcia\"\n  },\n  {\n    \"id\": 40,\n    \"header\": \"Mobile Compatibility\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"James Wilson\"\n  },\n  {\n    \"id\": 41,\n    \"header\": \"Data Migration Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 42,\n    \"header\": \"Quality Assurance Protocols\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Priya Singh\"\n  },\n  {\n    \"id\": 43,\n    \"header\": \"Stakeholder Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"11\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 44,\n    \"header\": \"Environmental Impact Assessment\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 45,\n    \"header\": \"Intellectual Property Rights\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Sarah Johnson\"\n  },\n  {\n    \"id\": 46,\n    \"header\": \"Customer Support Framework\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 47,\n    \"header\": \"Version Control Strategy\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 48,\n    \"header\": \"Continuous Integration Pipeline\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Michael Chen\"\n  },\n  {\n    \"id\": 49,\n    \"header\": \"Regulatory Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 50,\n    \"header\": \"User Authentication System\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 51,\n    \"header\": \"Data Analytics Framework\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 52,\n    \"header\": \"Cloud Infrastructure\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 53,\n    \"header\": \"Network Security Measures\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Lisa Wong\"\n  },\n  {\n    \"id\": 54,\n    \"header\": \"Project Timeline\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 55,\n    \"header\": \"Resource Allocation\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 56,\n    \"header\": \"Team Structure and Roles\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 57,\n    \"header\": \"Communication Protocols\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 58,\n    \"header\": \"Success Metrics\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 59,\n    \"header\": \"Internationalization Support\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 60,\n    \"header\": \"Backup and Recovery Procedures\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 61,\n    \"header\": \"Monitoring and Alerting System\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Daniel Park\"\n  },\n  {\n    \"id\": 62,\n    \"header\": \"Code Review Guidelines\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 63,\n    \"header\": \"Documentation Standards\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 64,\n    \"header\": \"Release Management Process\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 65,\n    \"header\": \"Feature Prioritization Matrix\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Emma Davis\"\n  },\n  {\n    \"id\": 66,\n    \"header\": \"Technical Debt Assessment\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 67,\n    \"header\": \"Capacity Planning\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 68,\n    \"header\": \"Service Level Agreements\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Assign reviewer\"\n  }\n]\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/layout.tsx",
    "content": "import { cookies } from \"next/headers\"\n\nimport {\n  SidebarInset,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { AppSidebar } from \"@/app/(examples)/dashboard/components/app-sidebar\"\nimport { SiteHeader } from \"@/app/(examples)/dashboard/components/site-header\"\n\nimport \"@/app/(examples)/dashboard/theme.css\"\n\nexport default async function DashboardLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  const cookieStore = await cookies()\n  const defaultOpen = cookieStore.get(\"sidebar_state\")?.value === \"true\"\n\n  return (\n    <SidebarProvider\n      defaultOpen={defaultOpen}\n      style={\n        {\n          \"--sidebar-width\": \"calc(var(--spacing) * 72)\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar variant=\"inset\" />\n      <SidebarInset>\n        <SiteHeader />\n        <div className=\"flex flex-1 flex-col\">{children}</div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/page.tsx",
    "content": "import { ChartAreaInteractive } from \"@/app/(examples)/dashboard/components/chart-area-interactive\"\nimport { DataTable } from \"@/app/(examples)/dashboard/components/data-table\"\nimport { SectionCards } from \"@/app/(examples)/dashboard/components/section-cards\"\nimport data from \"@/app/(examples)/dashboard/data.json\"\n\nexport default function Page() {\n  return (\n    <div className=\"@container/main flex flex-1 flex-col gap-2\">\n      <div className=\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\">\n        <SectionCards />\n        <div className=\"px-4 lg:px-6\">\n          <ChartAreaInteractive />\n        </div>\n        <DataTable data={data} />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard/theme.css",
    "content": "body {\n  @apply overscroll-none bg-transparent;\n}\n\n:root {\n  --font-sans: var(--font-inter);\n  --header-height: calc(var(--spacing) * 12 + 1px);\n}\n\n.theme-scaled {\n  @media (min-width: 1024px) {\n    --radius: 0.6rem;\n    --text-lg: 1.05rem;\n    --text-base: 0.85rem;\n    --text-sm: 0.8rem;\n    --spacing: 0.222222rem;\n  }\n\n  [data-slot=\"card\"] {\n    --spacing: 0.16rem;\n  }\n\n  [data-slot=\"select-trigger\"],\n  [data-slot=\"toggle-group-item\"] {\n    --spacing: 0.222222rem;\n  }\n}\n\n.theme-default,\n.theme-default-scaled {\n  --primary: var(--color-neutral-600);\n  --primary-foreground: var(--color-neutral-50);\n\n  @variant dark {\n    --primary: var(--color-neutral-500);\n    --primary-foreground: var(--color-neutral-50);\n  }\n}\n\n.theme-blue,\n.theme-blue-scaled {\n  --primary: var(--color-blue-600);\n  --primary-foreground: var(--color-blue-50);\n\n  @variant dark {\n    --primary: var(--color-blue-500);\n    --primary-foreground: var(--color-blue-50);\n  }\n}\n\n.theme-green,\n.theme-green-scaled {\n  --primary: var(--color-lime-600);\n  --primary-foreground: var(--color-lime-50);\n\n  @variant dark {\n    --primary: var(--color-lime-600);\n    --primary-foreground: var(--color-lime-50);\n  }\n}\n\n.theme-amber,\n.theme-amber-scaled {\n  --primary: var(--color-amber-600);\n  --primary-foreground: var(--color-amber-50);\n\n  @variant dark {\n    --primary: var(--color-amber-500);\n    --primary-foreground: var(--color-amber-50);\n  }\n}\n\n.theme-mono,\n.theme-mono-scaled {\n  --font-sans: var(--font-mono);\n  --primary: var(--color-neutral-600);\n  --primary-foreground: var(--color-neutral-50);\n\n  @variant dark {\n    --primary: var(--color-neutral-500);\n    --primary-foreground: var(--color-neutral-50);\n  }\n\n  .rounded-xs,\n  .rounded-sm,\n  .rounded-md,\n  .rounded-lg,\n  .rounded-xl {\n    @apply !rounded-none;\n    border-radius: 0;\n  }\n\n  .shadow-xs,\n  .shadow-sm,\n  .shadow-md,\n  .shadow-lg,\n  .shadow-xl {\n    @apply !shadow-none;\n  }\n\n  [data-slot=\"toggle-group\"],\n  [data-slot=\"toggle-group-item\"] {\n    @apply !rounded-none !shadow-none;\n  }\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/analytics-date-picker.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays, format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { type DateRange } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport function AnalyticsDatePicker() {\n  const [date, setDate] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 20),\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\n  })\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          id=\"date\"\n          variant=\"outline\"\n          className={cn(\n            \"w-fit justify-start px-2 font-normal\",\n            !date && \"text-muted-foreground\"\n          )}\n        >\n          <CalendarIcon className=\"text-muted-foreground\" />\n          {date?.from ? (\n            date.to ? (\n              <>\n                {format(date.from, \"LLL dd, y\")} -{\" \"}\n                {format(date.to, \"LLL dd, y\")}\n              </>\n            ) : (\n              format(date.from, \"LLL dd, y\")\n            )\n          ) : (\n            <span>Pick a date</span>\n          )}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"end\">\n        <Calendar\n          initialFocus\n          mode=\"range\"\n          defaultMonth={date?.from}\n          selected={date}\n          onSelect={setDate}\n          numberOfMonths={2}\n        />\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ChartLineIcon,\n  FileIcon,\n  HomeIcon,\n  LifeBuoy,\n  Send,\n  Settings2Icon,\n  ShoppingBagIcon,\n  ShoppingCartIcon,\n  UserIcon,\n} from \"lucide-react\"\n\nimport { Sidebar, SidebarContent } from \"@/registry/new-york-v4/ui/sidebar\"\nimport { NavMain } from \"@/app/(examples)/dashboard-03/components/nav-main\"\nimport { NavSecondary } from \"@/app/(examples)/dashboard-03/components/nav-secondary\"\n\nconst data = {\n  navMain: [\n    {\n      title: \"Dashboard\",\n      url: \"/dashboard\",\n      icon: HomeIcon,\n    },\n    {\n      title: \"Analytics\",\n      url: \"/dashboard/analytics\",\n      icon: ChartLineIcon,\n    },\n    {\n      title: \"Orders\",\n      url: \"/dashboard/orders\",\n      icon: ShoppingBagIcon,\n    },\n    {\n      title: \"Products\",\n      url: \"/dashboard/products\",\n      icon: ShoppingCartIcon,\n    },\n    {\n      title: \"Invoices\",\n      url: \"/dashboard/invoices\",\n      icon: FileIcon,\n    },\n    {\n      title: \"Customers\",\n      url: \"/dashboard/customers\",\n      icon: UserIcon,\n    },\n    {\n      title: \"Settings\",\n      url: \"/dashboard/settings\",\n      icon: Settings2Icon,\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Support\",\n      url: \"#\",\n      icon: LifeBuoy,\n    },\n    {\n      title: \"Feedback\",\n      url: \"#\",\n      icon: Send,\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar\n      className=\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\"\n      {...props}\n    >\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/chart-revenue.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, XAxis, YAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 346, mobile: 140 },\n  { month: \"July\", desktop: 321, mobile: 275 },\n  { month: \"August\", desktop: 132, mobile: 95 },\n  { month: \"September\", desktop: 189, mobile: 225 },\n  { month: \"October\", desktop: 302, mobile: 248 },\n  { month: \"November\", desktop: 342, mobile: 285 },\n  { month: \"December\", desktop: 328, mobile: 290 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRevenue() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardDescription>January - June 2024</CardDescription>\n        <CardTitle className=\"text-3xl font-bold tracking-tight\">\n          $45,231.89\n        </CardTitle>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig} className=\"aspect-[3/1]\">\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: -16,\n              right: 0,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <YAxis\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.toLocaleString()}\n              domain={[0, \"dataMax\"]}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideIndicator />}\n            />\n            <Bar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              radius={[0, 0, 4, 4]}\n              stackId={1}\n            />\n            <Bar\n              dataKey=\"mobile\"\n              fill=\"var(--color-mobile)\"\n              radius={[4, 4, 0, 0]}\n              stackId={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/chart-visitors.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Label, Pie, PieChart, Sector } from \"recharts\"\nimport { type PieSectorDataItem } from \"recharts/types/polar/Pie\"\n\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartStyle,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nconst desktopData = [\n  { month: \"january\", desktop: 186, fill: \"var(--color-january)\" },\n  { month: \"february\", desktop: 305, fill: \"var(--color-february)\" },\n  { month: \"march\", desktop: 237, fill: \"var(--color-march)\" },\n  { month: \"april\", desktop: 173, fill: \"var(--color-april)\" },\n  { month: \"may\", desktop: 209, fill: \"var(--color-may)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n  },\n  mobile: {\n    label: \"Mobile\",\n  },\n  january: {\n    label: \"January\",\n    color: \"var(--chart-1)\",\n  },\n  february: {\n    label: \"February\",\n    color: \"var(--chart-2)\",\n  },\n  march: {\n    label: \"March\",\n    color: \"var(--chart-3)\",\n  },\n  april: {\n    label: \"April\",\n    color: \"var(--chart-4)\",\n  },\n  may: {\n    label: \"May\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartVisitors() {\n  const id = \"pie-interactive\"\n  const [activeMonth, setActiveMonth] = React.useState(desktopData[0].month)\n\n  const activeIndex = React.useMemo(\n    () => desktopData.findIndex((item) => item.month === activeMonth),\n    [activeMonth]\n  )\n  const months = React.useMemo(() => desktopData.map((item) => item.month), [])\n\n  return (\n    <Card data-chart={id}>\n      <ChartStyle id={id} config={chartConfig} />\n      <CardHeader>\n        <CardDescription>January - June 2024</CardDescription>\n        <CardTitle className=\"text-2xl font-bold\">1,234 visitors</CardTitle>\n        <CardAction>\n          <Select value={activeMonth} onValueChange={setActiveMonth}>\n            <SelectTrigger\n              className=\"ml-auto h-8 w-[120px]\"\n              aria-label=\"Select a value\"\n            >\n              <SelectValue placeholder=\"Select month\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              {months.map((key) => {\n                const config = chartConfig[key as keyof typeof chartConfig]\n\n                if (!config) {\n                  return null\n                }\n\n                const color = \"color\" in config ? config.color : undefined\n\n                return (\n                  <SelectItem key={key} value={key}>\n                    <div className=\"flex items-center gap-2 text-xs\">\n                      <span\n                        className=\"flex h-3 w-3 shrink-0 rounded-sm\"\n                        style={{\n                          backgroundColor: color,\n                        }}\n                      />\n                      {config?.label}\n                    </div>\n                  </SelectItem>\n                )\n              })}\n            </SelectContent>\n          </Select>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"flex flex-1 justify-center pb-0\">\n        <ChartContainer\n          id={id}\n          config={chartConfig}\n          className=\"mx-auto aspect-square w-full max-w-[300px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie\n              data={desktopData}\n              dataKey=\"desktop\"\n              nameKey=\"month\"\n              innerRadius={60}\n              strokeWidth={5}\n              activeIndex={activeIndex}\n              activeShape={({\n                outerRadius = 0,\n                ...props\n              }: PieSectorDataItem) => (\n                <g>\n                  <Sector {...props} outerRadius={outerRadius + 10} />\n                  <Sector\n                    {...props}\n                    outerRadius={outerRadius + 25}\n                    innerRadius={outerRadius + 12}\n                  />\n                </g>\n              )}\n            >\n              <Label\n                content={({ viewBox }) => {\n                  if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                    return (\n                      <text\n                        x={viewBox.cx}\n                        y={viewBox.cy}\n                        textAnchor=\"middle\"\n                        dominantBaseline=\"middle\"\n                      >\n                        <tspan\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          className=\"fill-foreground text-3xl font-bold\"\n                        >\n                          {desktopData[activeIndex].desktop.toLocaleString()}\n                        </tspan>\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) + 24}\n                          className=\"fill-muted-foreground\"\n                        >\n                          Visitors\n                        </tspan>\n                      </text>\n                    )\n                  }\n                }}\n              />\n            </Pie>\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/mode-toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { MoonIcon, SunIcon } from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function ModeToggle() {\n  const { setTheme, resolvedTheme } = useTheme()\n\n  const toggleTheme = React.useCallback(() => {\n    setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n  }, [resolvedTheme, setTheme])\n\n  return (\n    <Button\n      variant=\"secondary\"\n      size=\"icon\"\n      className=\"group/toggle size-8\"\n      onClick={toggleTheme}\n    >\n      <SunIcon className=\"hidden [html.dark_&]:block\" />\n      <MoonIcon className=\"hidden [html.light_&]:block\" />\n      <span className=\"sr-only\">Toggle theme</span>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { usePathname } from \"next/navigation\"\nimport { ChevronRight, type LucideIcon } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n    disabled?: boolean\n  }[]\n}) {\n  const pathname = usePathname()\n\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\n            <SidebarMenuItem>\n              <SidebarMenuButton\n                asChild\n                tooltip={item.title}\n                isActive={pathname === item.url}\n                disabled={item.disabled}\n              >\n                <a\n                  href={item.disabled ? \"#\" : item.url}\n                  data-disabled={item.disabled}\n                  className=\"data-[disabled=true]:opacity-50\"\n                >\n                  <item.icon className=\"text-muted-foreground\" />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.items?.length ? (\n                <>\n                  <CollapsibleTrigger asChild>\n                    <SidebarMenuAction className=\"data-[state=open]:rotate-90\">\n                      <ChevronRight />\n                      <span className=\"sr-only\">Toggle</span>\n                    </SidebarMenuAction>\n                  </CollapsibleTrigger>\n                  <CollapsibleContent>\n                    <SidebarMenuSub>\n                      {item.items?.map((subItem) => (\n                        <SidebarMenuSubItem key={subItem.title}>\n                          <SidebarMenuSubButton asChild>\n                            <a href={subItem.url}>\n                              <span>{subItem.title}</span>\n                            </a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </CollapsibleContent>\n                </>\n              ) : null}\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/nav-secondary.tsx",
    "content": "import * as React from \"react\"\nimport { type LucideIcon } from \"lucide-react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild size=\"sm\">\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport { BadgeCheck, Bell, CreditCard, LogOut, Sparkles } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"ghost\" size=\"icon\">\n          <Avatar className=\"size-8 rounded-md\">\n            <AvatarImage src={user.avatar} alt={user.name} />\n            <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n          </Avatar>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n        side=\"bottom\"\n        align=\"end\"\n        sideOffset={4}\n      >\n        <DropdownMenuLabel className=\"p-0 font-normal\">\n          <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n            <Avatar className=\"h-8 w-8 rounded-lg\">\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs text-muted-foreground\">\n                {user.email}\n              </span>\n            </div>\n          </div>\n        </DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <Sparkles />\n            Upgrade to Pro\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <BadgeCheck />\n            Account\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <CreditCard />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <Bell />\n            Notifications\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          <LogOut />\n          Log out\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/products-table.tsx",
    "content": "import {\n  ArrowUpDownIcon,\n  EllipsisVerticalIcon,\n  ListFilterIcon,\n  PlusIcon,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/registry/new-york-v4/ui/pagination\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/registry/new-york-v4/ui/tabs\"\n\nexport function ProductsTable({\n  products,\n}: {\n  products: {\n    id: string\n    name: string\n    price: number\n    stock: number\n    dateAdded: string\n    status: string\n  }[]\n}) {\n  return (\n    <Card className=\"flex w-full flex-col gap-4\">\n      <CardHeader className=\"flex flex-row items-center justify-between\">\n        <Tabs defaultValue=\"all\">\n          <TabsList className=\"w-full @3xl/page:w-fit\">\n            <TabsTrigger value=\"all\">All Products</TabsTrigger>\n            <TabsTrigger value=\"in-stock\">In Stock</TabsTrigger>\n            <TabsTrigger value=\"low-stock\">Low Stock</TabsTrigger>\n            <TabsTrigger value=\"add-product\" asChild>\n              <button>\n                <PlusIcon />\n              </button>\n            </TabsTrigger>\n          </TabsList>\n        </Tabs>\n        <div className=\"hidden items-center gap-2 **:data-[slot=button]:size-8 **:data-[slot=select-trigger]:h-8 @3xl/page:flex\">\n          <Select defaultValue=\"all\">\n            <SelectTrigger>\n              <span className=\"text-sm text-muted-foreground\">Category:</span>\n              <SelectValue placeholder=\"Select a product\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectItem value=\"all\">All</SelectItem>\n              <SelectItem value=\"in-stock\">In Stock</SelectItem>\n              <SelectItem value=\"low-stock\">Low Stock</SelectItem>\n              <SelectItem value=\"archived\">Archived</SelectItem>\n            </SelectContent>\n          </Select>\n          <Select defaultValue=\"all\">\n            <SelectTrigger>\n              <span className=\"text-sm text-muted-foreground\">Price:</span>\n              <SelectValue placeholder=\"Select a product\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectItem value=\"all\">$100-$200</SelectItem>\n              <SelectItem value=\"in-stock\">$200-$300</SelectItem>\n              <SelectItem value=\"low-stock\">$300-$400</SelectItem>\n              <SelectItem value=\"archived\">$400-$500</SelectItem>\n            </SelectContent>\n          </Select>\n          <Select defaultValue=\"all\">\n            <SelectTrigger>\n              <span className=\"text-sm text-muted-foreground\">Status:</span>\n              <SelectValue placeholder=\"Select a product\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectItem value=\"all\">In Stock</SelectItem>\n              <SelectItem value=\"in-stock\">Low Stock</SelectItem>\n              <SelectItem value=\"low-stock\">Archived</SelectItem>\n              <SelectItem value=\"archived\">Archived</SelectItem>\n            </SelectContent>\n          </Select>\n          <Button variant=\"outline\" size=\"icon\">\n            <ListFilterIcon />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <ArrowUpDownIcon />\n          </Button>\n        </div>\n      </CardHeader>\n      <CardContent>\n        <Table>\n          <TableHeader>\n            <TableRow>\n              <TableHead className=\"w-12 px-4\">\n                <Checkbox />\n              </TableHead>\n              <TableHead>Product</TableHead>\n              <TableHead className=\"text-right\">Price</TableHead>\n              <TableHead className=\"text-right\">Stock</TableHead>\n              <TableHead>Status</TableHead>\n              <TableHead>Date Added</TableHead>\n              <TableHead />\n            </TableRow>\n          </TableHeader>\n          <TableBody className=\"**:data-[slot=table-cell]:py-2.5\">\n            {products.map((product) => (\n              <TableRow key={product.id}>\n                <TableCell className=\"px-4\">\n                  <Checkbox />\n                </TableCell>\n                <TableCell className=\"font-medium\">{product.name}</TableCell>\n                <TableCell className=\"text-right\">\n                  ${product.price.toFixed(2)}\n                </TableCell>\n                <TableCell className=\"text-right\">{product.stock}</TableCell>\n                <TableCell>\n                  <Badge\n                    variant=\"secondary\"\n                    className={\n                      product.status === \"Low Stock\"\n                        ? \"border-orange-700 bg-transparent text-orange-700 dark:border-orange-700 dark:bg-transparent dark:text-orange-700\"\n                        : \"bg-green-100 text-green-800 dark:bg-green-950 dark:text-green-100\"\n                    }\n                  >\n                    {product.status}\n                  </Badge>\n                </TableCell>\n                <TableCell>\n                  {new Date(product.dateAdded).toLocaleDateString(\"en-US\", {\n                    month: \"long\",\n                    day: \"numeric\",\n                    year: \"numeric\",\n                  })}\n                </TableCell>\n                <TableCell>\n                  <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                      <Button variant=\"ghost\" size=\"icon\" className=\"size-6\">\n                        <EllipsisVerticalIcon />\n                      </Button>\n                    </DropdownMenuTrigger>\n                    <DropdownMenuContent align=\"end\">\n                      <DropdownMenuItem>Edit</DropdownMenuItem>\n                      <DropdownMenuItem variant=\"destructive\">\n                        Delete\n                      </DropdownMenuItem>\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n                </TableCell>\n              </TableRow>\n            ))}\n          </TableBody>\n        </Table>\n      </CardContent>\n      <CardFooter className=\"flex flex-col items-center justify-between border-t pt-6 @3xl/page:flex-row\">\n        <div className=\"hidden text-sm text-muted-foreground @3xl/page:block\">\n          Showing 1-10 of 100 products\n        </div>\n        <Pagination className=\"mx-0 w-fit\">\n          <PaginationContent>\n            <PaginationItem>\n              <PaginationPrevious href=\"#\" />\n            </PaginationItem>\n            <PaginationItem>\n              <PaginationLink href=\"#\">1</PaginationLink>\n            </PaginationItem>\n            <PaginationItem>\n              <PaginationLink href=\"#\" isActive>\n                2\n              </PaginationLink>\n            </PaginationItem>\n            <PaginationItem>\n              <PaginationLink href=\"#\">3</PaginationLink>\n            </PaginationItem>\n            <PaginationItem>\n              <PaginationEllipsis />\n            </PaginationItem>\n            <PaginationItem>\n              <PaginationNext href=\"#\" />\n            </PaginationItem>\n          </PaginationContent>\n        </Pagination>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/search-form.tsx",
    "content": "import { Search } from \"lucide-react\"\n\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { SidebarInput } from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <div className=\"relative\">\n        <Label htmlFor=\"search\" className=\"sr-only\">\n          Search\n        </Label>\n        <SidebarInput\n          id=\"search\"\n          placeholder=\"Type to search...\"\n          className=\"h-8 pl-7\"\n        />\n        <Search className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\" />\n      </div>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/components/site-header.tsx",
    "content": "\"use client\"\n\nimport { Fragment, useMemo } from \"react\"\nimport { usePathname } from \"next/navigation\"\nimport { SidebarIcon } from \"lucide-react\"\n\nimport { ThemeSelector } from \"@/components/theme-selector\"\nimport { SearchForm } from \"@/registry/new-york-v4/blocks/sidebar-16/components/search-form\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { useSidebar } from \"@/registry/new-york-v4/ui/sidebar\"\nimport { ModeToggle } from \"@/app/(examples)/dashboard-03/components/mode-toggle\"\nimport { NavUser } from \"@/app/(examples)/dashboard-03/components/nav-user\"\n\nexport function SiteHeader() {\n  const { toggleSidebar } = useSidebar()\n  const pathname = usePathname()\n\n  // Faux breadcrumbs for demo.\n  const breadcrumbs = useMemo(() => {\n    return pathname\n      .split(\"/\")\n      .filter((path) => path !== \"\")\n      .map((path, index, array) => ({\n        label: path,\n        href: `/${array.slice(0, index + 1).join(\"/\")}`,\n      }))\n  }, [pathname])\n\n  return (\n    <header\n      data-slot=\"site-header\"\n      className=\"sticky top-0 z-50 flex w-full items-center border-b bg-background\"\n    >\n      <div className=\"flex h-(--header-height) w-full items-center gap-2 px-2 pr-4\">\n        <Button\n          variant=\"ghost\"\n          size=\"sm\"\n          onClick={toggleSidebar}\n          className=\"gap-2.5 has-[>svg]:px-2\"\n        >\n          <SidebarIcon />\n          <span className=\"truncate font-medium\">Acme Inc</span>\n        </Button>\n        <Separator\n          orientation=\"vertical\"\n          className=\"mr-2 data-[orientation=vertical]:h-4\"\n        />\n        <Breadcrumb className=\"hidden sm:block\">\n          <BreadcrumbList>\n            <BreadcrumbItem>\n              <BreadcrumbLink href=\"/\" className=\"capitalize\">\n                Home\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            {breadcrumbs.map((breadcrumb, index) =>\n              index === breadcrumbs.length - 1 ? (\n                <BreadcrumbItem key={index}>\n                  <BreadcrumbPage className=\"capitalize\">\n                    {breadcrumb.label}\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              ) : (\n                <Fragment key={index}>\n                  <BreadcrumbItem>\n                    <BreadcrumbLink\n                      href={breadcrumb.href}\n                      className=\"capitalize\"\n                    >\n                      {breadcrumb.label}\n                    </BreadcrumbLink>\n                  </BreadcrumbItem>\n                  <BreadcrumbSeparator />\n                </Fragment>\n              )\n            )}\n          </BreadcrumbList>\n        </Breadcrumb>\n        <div className=\"ml-auto flex items-center gap-2\">\n          <SearchForm className=\"w-fullsm:w-auto\" />\n          <ThemeSelector />\n          <ModeToggle />\n          <NavUser\n            user={{\n              name: \"shadcn\",\n              email: \"m@example.com\",\n              avatar: \"/avatars/shadcn.jpg\",\n            }}\n          />\n        </div>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/customers/page.tsx",
    "content": "export default function CustomersPage() {\n  return (\n    <div className=\"p-6\">\n      <div className=\"bg-input p-4\">Input</div>\n      <div className=\"bg-input/30 p-4\">Input 50</div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/layout.tsx",
    "content": "import { cookies } from \"next/headers\"\n\nimport {\n  SidebarInset,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { AppSidebar } from \"@/app/(examples)/dashboard-03/components/app-sidebar\"\nimport { SiteHeader } from \"@/app/(examples)/dashboard-03/components/site-header\"\n\nexport default async function DashboardLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  const cookieStore = await cookies()\n  const defaultOpen = cookieStore.get(\"sidebar_state\")?.value === \"true\"\n\n  return (\n    <main className=\"[--header-height:calc(theme(spacing.14))]\">\n      <SidebarProvider defaultOpen={defaultOpen} className=\"flex flex-col\">\n        <SiteHeader />\n        <div className=\"flex flex-1\">\n          <AppSidebar />\n          <SidebarInset>{children}</SidebarInset>\n        </div>\n      </SidebarProvider>\n    </main>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/page.tsx",
    "content": "import { type Metadata } from \"next\"\nimport {\n  DownloadIcon,\n  FilterIcon,\n  TrendingDownIcon,\n  TrendingUpIcon,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\nimport { AnalyticsDatePicker } from \"@/app/(examples)/dashboard-03/components/analytics-date-picker\"\nimport { ChartRevenue } from \"@/app/(examples)/dashboard-03/components/chart-revenue\"\nimport { ChartVisitors } from \"@/app/(examples)/dashboard-03/components/chart-visitors\"\nimport { ProductsTable } from \"@/app/(examples)/dashboard-03/components/products-table\"\n\nexport const metadata: Metadata = {\n  title: \"Dashboard\",\n  description: \"An example dashboard to test the new components.\",\n}\n\n// Load from database.\nconst products = [\n  {\n    id: \"1\",\n    name: \"BJÖRKSNÄS Dining Table\",\n    price: 599.99,\n    stock: 12,\n    dateAdded: \"2023-06-15\",\n    status: \"In Stock\",\n  },\n  {\n    id: \"2\",\n    name: \"POÄNG Armchair\",\n    price: 249.99,\n    stock: 28,\n    dateAdded: \"2023-07-22\",\n    status: \"In Stock\",\n  },\n  {\n    id: \"3\",\n    name: \"MALM Bed Frame\",\n    price: 399.99,\n    stock: 15,\n    dateAdded: \"2023-08-05\",\n    status: \"In Stock\",\n  },\n  {\n    id: \"4\",\n    name: \"KALLAX Shelf Unit\",\n    price: 179.99,\n    stock: 32,\n    dateAdded: \"2023-09-12\",\n    status: \"In Stock\",\n  },\n  {\n    id: \"5\",\n    name: \"STOCKHOLM Rug\",\n    price: 299.99,\n    stock: 8,\n    dateAdded: \"2023-10-18\",\n    status: \"Low Stock\",\n  },\n  {\n    id: \"6\",\n    name: \"KIVIK Sofa\",\n    price: 899.99,\n    stock: 6,\n    dateAdded: \"2023-11-02\",\n    status: \"Low Stock\",\n  },\n  {\n    id: \"7\",\n    name: \"LISABO Coffee Table\",\n    price: 149.99,\n    stock: 22,\n    dateAdded: \"2023-11-29\",\n    status: \"In Stock\",\n  },\n  {\n    id: \"8\",\n    name: \"HEMNES Bookcase\",\n    price: 249.99,\n    stock: 17,\n    dateAdded: \"2023-12-10\",\n    status: \"In Stock\",\n  },\n  {\n    id: \"9\",\n    name: \"EKEDALEN Dining Chairs (Set of 2)\",\n    price: 199.99,\n    stock: 14,\n    dateAdded: \"2024-01-05\",\n    status: \"In Stock\",\n  },\n  {\n    id: \"10\",\n    name: \"FRIHETEN Sleeper Sofa\",\n    price: 799.99,\n    stock: 9,\n    dateAdded: \"2024-01-18\",\n    status: \"Low Stock\",\n  },\n]\n\nexport default function DashboardPage() {\n  return (\n    <div className=\"@container/page flex flex-1 flex-col gap-8 p-6\">\n      <Tabs defaultValue=\"overview\" className=\"gap-6\">\n        <div\n          data-slot=\"dashboard-header\"\n          className=\"flex items-center justify-between\"\n        >\n          <TabsList className=\"w-full @3xl/page:w-fit\">\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n            <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n            <TabsTrigger value=\"exports\" disabled>\n              Exports\n            </TabsTrigger>\n          </TabsList>\n          <div className=\"hidden items-center gap-2 @3xl/page:flex\">\n            <AnalyticsDatePicker />\n            <Button variant=\"outline\">\n              <FilterIcon />\n              Filter\n            </Button>\n            <Button variant=\"outline\">\n              <DownloadIcon />\n              Export\n            </Button>\n          </div>\n        </div>\n        <TabsContent value=\"overview\" className=\"flex flex-col gap-4\">\n          <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4\">\n            <Card>\n              <CardHeader>\n                <CardTitle>Total Revenue</CardTitle>\n                <CardDescription>$1,250.00 in the last 30 days</CardDescription>\n              </CardHeader>\n              <CardFooter>\n                <Badge variant=\"outline\">\n                  <TrendingUpIcon />\n                  +12.5%\n                </Badge>\n              </CardFooter>\n            </Card>\n            <Card>\n              <CardHeader>\n                <CardTitle>New Customers</CardTitle>\n                <CardDescription>-12 customers from last month</CardDescription>\n              </CardHeader>\n              <CardFooter>\n                <Badge variant=\"outline\">\n                  <TrendingDownIcon />\n                  -20%\n                </Badge>\n              </CardFooter>\n            </Card>\n            <Card>\n              <CardHeader>\n                <CardTitle>Active Accounts</CardTitle>\n                <CardDescription>+2,345 users from last month</CardDescription>\n              </CardHeader>\n              <CardFooter>\n                <Badge variant=\"outline\">\n                  <TrendingUpIcon />\n                  +12.5%\n                </Badge>\n              </CardFooter>\n            </Card>\n            <Card>\n              <CardHeader>\n                <CardTitle>Growth Rate</CardTitle>\n                <CardDescription>+12.5% increase per month</CardDescription>\n              </CardHeader>\n              <CardFooter>\n                <Badge variant=\"outline\">\n                  <TrendingUpIcon />\n                  +4.5%\n                </Badge>\n              </CardFooter>\n            </Card>\n          </div>\n          <div className=\"grid grid-cols-1 gap-4 @4xl/page:grid-cols-[2fr_1fr]\">\n            <ChartRevenue />\n            <ChartVisitors />\n          </div>\n          <ProductsTable products={products} />\n        </TabsContent>\n      </Tabs>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(examples)/dashboard-03/settings/page.tsx",
    "content": "import { type Metadata } from \"next\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\n\nexport const metadata: Metadata = {\n  title: \"Settings\",\n  description: \"Manage your account settings\",\n}\n\nconst timezones = [\n  {\n    label: \"Americas\",\n    timezones: [\n      { value: \"America/New_York\", label: \"(GMT-5) New York\" },\n      { value: \"America/Los_Angeles\", label: \"(GMT-8) Los Angeles\" },\n      { value: \"America/Chicago\", label: \"(GMT-6) Chicago\" },\n      { value: \"America/Toronto\", label: \"(GMT-5) Toronto\" },\n      { value: \"America/Vancouver\", label: \"(GMT-8) Vancouver\" },\n      { value: \"America/Sao_Paulo\", label: \"(GMT-3) São Paulo\" },\n    ],\n  },\n  {\n    label: \"Europe\",\n    timezones: [\n      { value: \"Europe/London\", label: \"(GMT+0) London\" },\n      { value: \"Europe/Paris\", label: \"(GMT+1) Paris\" },\n      { value: \"Europe/Berlin\", label: \"(GMT+1) Berlin\" },\n      { value: \"Europe/Rome\", label: \"(GMT+1) Rome\" },\n      { value: \"Europe/Madrid\", label: \"(GMT+1) Madrid\" },\n      { value: \"Europe/Amsterdam\", label: \"(GMT+1) Amsterdam\" },\n    ],\n  },\n  {\n    label: \"Asia/Pacific\",\n    timezones: [\n      { value: \"Asia/Tokyo\", label: \"(GMT+9) Tokyo\" },\n      { value: \"Asia/Shanghai\", label: \"(GMT+8) Shanghai\" },\n      { value: \"Asia/Singapore\", label: \"(GMT+8) Singapore\" },\n      { value: \"Asia/Dubai\", label: \"(GMT+4) Dubai\" },\n      { value: \"Australia/Sydney\", label: \"(GMT+11) Sydney\" },\n      { value: \"Asia/Seoul\", label: \"(GMT+9) Seoul\" },\n    ],\n  },\n] as const\n\nconst loginHistory = [\n  {\n    date: \"2024-01-01\",\n    ip: \"192.168.1.1\",\n    location: \"New York, USA\",\n  },\n  {\n    date: \"2023-12-29\",\n    ip: \"172.16.0.100\",\n    location: \"London, UK\",\n  },\n  {\n    date: \"2023-12-28\",\n    ip: \"10.0.0.50\",\n    location: \"Toronto, Canada\",\n  },\n  {\n    date: \"2023-12-25\",\n    ip: \"192.168.2.15\",\n    location: \"Sydney, Australia\",\n  },\n] as const\n\nconst activeSessions = [\n  {\n    device: \"MacBook Pro\",\n    browser: \"Chrome\",\n    os: \"macOS\",\n  },\n  {\n    device: \"iPhone\",\n    browser: \"Safari\",\n    os: \"iOS\",\n  },\n  {\n    device: \"iPad\",\n    browser: \"Safari\",\n    os: \"iOS\",\n  },\n  {\n    device: \"Android Phone\",\n    browser: \"Chrome\",\n    os: \"Android\",\n  },\n] as const\n\nexport default function SettingsPage() {\n  return (\n    <div className=\"@container/page flex flex-1 flex-col gap-8 p-6\">\n      <Tabs defaultValue=\"account\" className=\"gap-6\">\n        <div\n          data-slot=\"dashboard-header\"\n          className=\"flex items-center justify-between\"\n        >\n          <TabsList>\n            <TabsTrigger value=\"account\">Account</TabsTrigger>\n            <TabsTrigger value=\"security\">Security</TabsTrigger>\n            <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n            <TabsTrigger value=\"privacy\">Privacy</TabsTrigger>\n          </TabsList>\n        </div>\n        <TabsContent value=\"account\" className=\"grid gap-6\">\n          <Card>\n            <CardHeader>\n              <CardTitle>Account Settings</CardTitle>\n              <CardDescription>\n                Make changes to your account here.\n              </CardDescription>\n            </CardHeader>\n            <CardContent>\n              <form id=\"form-account\" className=\"@container\">\n                <FieldGroup>\n                  <Field>\n                    <Label htmlFor=\"name\">Name</Label>\n                    <FieldControl>\n                      <Input\n                        id=\"name\"\n                        placeholder=\"First and last name\"\n                        required\n                      />\n                    </FieldControl>\n                    <FieldDescription>\n                      This is your public display name.\n                    </FieldDescription>\n                  </Field>\n                  <Field>\n                    <Label htmlFor=\"email\">Email</Label>\n                    <FieldControl>\n                      <Input\n                        id=\"email\"\n                        placeholder=\"you@example.com\"\n                        required\n                      />\n                    </FieldControl>\n                  </Field>\n                  <Field>\n                    <Label htmlFor=\"timezone\">Timezone</Label>\n                    <FieldControl>\n                      <Select>\n                        <SelectTrigger id=\"timezone\">\n                          <SelectValue placeholder=\"Select a timezone\" />\n                        </SelectTrigger>\n                        <SelectContent>\n                          {timezones.map((timezone) => (\n                            <SelectGroup key={timezone.label}>\n                              <SelectLabel>{timezone.label}</SelectLabel>\n                              {timezone.timezones.map((time) => (\n                                <SelectItem key={time.value} value={time.value}>\n                                  {time.label}\n                                </SelectItem>\n                              ))}\n                            </SelectGroup>\n                          ))}\n                        </SelectContent>\n                      </Select>\n                    </FieldControl>\n                  </Field>\n                </FieldGroup>\n              </form>\n            </CardContent>\n            <CardFooter className=\"border-t\">\n              <Button type=\"submit\" form=\"form-account\" variant=\"secondary\">\n                Save changes\n              </Button>\n            </CardFooter>\n          </Card>\n          <Card>\n            <CardHeader>\n              <CardTitle>Notifications</CardTitle>\n              <CardDescription>\n                Manage how you receive notifications.\n              </CardDescription>\n            </CardHeader>\n            <CardContent>\n              <form id=\"form-notifications\" className=\"@container\">\n                <FieldGroup>\n                  <Field>\n                    <Label htmlFor=\"channels\">Notification Channels</Label>\n                    <FieldControl className=\"flex flex-col gap-2\">\n                      <div className=\"flex items-center gap-2\">\n                        <Checkbox id=\"notification-email\" />\n                        <Label htmlFor=\"notification-email\">Email</Label>\n                      </div>\n                      <div className=\"flex items-center gap-2\">\n                        <Checkbox id=\"notification-sms\" />\n                        <Label htmlFor=\"notification-sms\">SMS</Label>\n                      </div>\n                      <div className=\"flex items-center gap-2\">\n                        <Checkbox id=\"notification-push\" />\n                        <Label htmlFor=\"notification-push\">Push</Label>\n                      </div>\n                    </FieldControl>\n                    <FieldDescription>\n                      Choose how you want to receive notifications.\n                    </FieldDescription>\n                  </Field>\n                  <Field>\n                    <Label htmlFor=\"types\">Notification Types</Label>\n                    <FieldControl className=\"flex flex-col gap-2\">\n                      <div className=\"flex items-center gap-2\">\n                        <Checkbox id=\"notification-account\" />\n                        <Label htmlFor=\"notification-account\">\n                          Account Activity\n                        </Label>\n                      </div>\n                      <div className=\"flex items-center gap-2\">\n                        <Checkbox\n                          id=\"notification-security\"\n                          defaultChecked\n                          disabled\n                        />\n                        <Label htmlFor=\"notification-security\">\n                          Security Alerts\n                        </Label>\n                      </div>\n                      <div className=\"flex items-center gap-2\">\n                        <Checkbox id=\"notification-marketing\" />\n                        <Label htmlFor=\"notification-marketing\">\n                          Marketing & Promotions\n                        </Label>\n                      </div>\n                    </FieldControl>\n                    <FieldDescription>\n                      Choose how you want to receive notifications.\n                    </FieldDescription>\n                  </Field>\n                </FieldGroup>\n              </form>\n            </CardContent>\n            <CardFooter className=\"border-t\">\n              <Button\n                type=\"submit\"\n                form=\"form-notifications\"\n                variant=\"secondary\"\n              >\n                Save changes\n              </Button>\n            </CardFooter>\n          </Card>\n        </TabsContent>\n        <TabsContent\n          value=\"security\"\n          className=\"grid gap-6 @3xl/page:grid-cols-2\"\n        >\n          <Card className=\"@3xl/page:col-span-2\">\n            <CardHeader>\n              <CardTitle>Security Settings</CardTitle>\n              <CardDescription>\n                Make changes to your security settings here.\n              </CardDescription>\n            </CardHeader>\n            <CardContent className=\"@container\">\n              <form id=\"form-security\">\n                <FieldGroup>\n                  <Field>\n                    <Label htmlFor=\"current-password\">Current Password</Label>\n                    <FieldControl>\n                      <Input\n                        id=\"current-password\"\n                        placeholder=\"Current password\"\n                        required\n                      />\n                    </FieldControl>\n                    <FieldDescription>\n                      This is your current password.\n                    </FieldDescription>\n                  </Field>\n                  <Field>\n                    <Label htmlFor=\"new-password\">New Password</Label>\n                    <FieldControl>\n                      <Input\n                        id=\"new-password\"\n                        placeholder=\"New password\"\n                        required\n                      />\n                    </FieldControl>\n                  </Field>\n                  <Field>\n                    <Label htmlFor=\"confirm-password\">Confirm Password</Label>\n                    <FieldControl>\n                      <Input\n                        id=\"confirm-password\"\n                        placeholder=\"Confirm password\"\n                      />\n                    </FieldControl>\n                  </Field>\n                  <Field>\n                    <FieldControl>\n                      <Switch\n                        id=\"enable-two-factor-auth\"\n                        className=\"self-start\"\n                      />\n                    </FieldControl>\n                    <Label htmlFor=\"enable-two-factor-auth\">\n                      Enable two-factor authentication\n                    </Label>\n                    <FieldDescription>\n                      This will add an extra layer of security to your account.\n                      Make this an extra long description to test the layout.\n                    </FieldDescription>\n                  </Field>\n                </FieldGroup>\n              </form>\n            </CardContent>\n            <CardFooter className=\"border-t\">\n              <Button type=\"submit\" form=\"form-security\" variant=\"secondary\">\n                Save changes\n              </Button>\n            </CardFooter>\n          </Card>\n          <Card>\n            <CardHeader>\n              <CardTitle>Login History</CardTitle>\n              <CardDescription>\n                Recent login activities on your account.\n              </CardDescription>\n            </CardHeader>\n            <CardContent>\n              <Table>\n                <TableHeader>\n                  <TableRow>\n                    <TableHead>Date</TableHead>\n                    <TableHead className=\"hidden @md/page:table-cell\">\n                      IP\n                    </TableHead>\n                    <TableHead>Location</TableHead>\n                  </TableRow>\n                </TableHeader>\n                <TableBody>\n                  {loginHistory.map((login) => (\n                    <TableRow key={login.date}>\n                      <TableCell>\n                        <div className=\"flex flex-col gap-1\">\n                          {new Date(login.date).toLocaleDateString(\"en-US\", {\n                            year: \"numeric\",\n                            month: \"long\",\n                            day: \"numeric\",\n                          })}\n                          <span className=\"flex @md/page:hidden\">\n                            {login.ip}\n                          </span>\n                        </div>\n                      </TableCell>\n                      <TableCell className=\"hidden @md/page:table-cell\">\n                        {login.ip}\n                      </TableCell>\n                      <TableCell>{login.location}</TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n              </Table>\n            </CardContent>\n          </Card>\n          <Card>\n            <CardHeader>\n              <CardTitle>Active Sessions</CardTitle>\n              <CardDescription>\n                Current active sessions on your account.\n              </CardDescription>\n              <CardAction>\n                <Button variant=\"outline\" size=\"sm\">\n                  <span className=\"hidden @md/card-header:block\">\n                    Manage Sessions\n                  </span>\n                  <span className=\"block @md/card-header:hidden\">Manage</span>\n                </Button>\n              </CardAction>\n            </CardHeader>\n            <CardContent>\n              <Table>\n                <TableHeader>\n                  <TableRow>\n                    <TableHead>Device</TableHead>\n                    <TableHead>Browser</TableHead>\n                    <TableHead>OS</TableHead>\n                  </TableRow>\n                </TableHeader>\n                <TableBody>\n                  {activeSessions.map((session) => (\n                    <TableRow key={session.device}>\n                      <TableCell>{session.device}</TableCell>\n                      <TableCell>{session.browser}</TableCell>\n                      <TableCell>{session.os}</TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n              </Table>\n            </CardContent>\n          </Card>\n        </TabsContent>\n      </Tabs>\n    </div>\n  )\n}\n\nfunction FieldGroup({ children }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className=\"@container/field-group flex max-w-4xl min-w-0 flex-col gap-8 @3xl:gap-6\"\n    >\n      {children}\n    </div>\n  )\n}\n\nfunction Field({ children, className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field\"\n      className={cn(\n        \"grid auto-rows-min items-start gap-3 *:data-[slot=label]:col-start-1 *:data-[slot=label]:row-start-1 @3xl/field-group:grid-cols-2 @3xl/field-group:gap-6\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </div>\n  )\n}\n\nfunction FieldControl({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-control\"\n      className={cn(\n        \"@3xl/field-group:col-start-2 @3xl/field-group:row-span-2 @3xl/field-group:row-start-1 @3xl/field-group:self-start\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </div>\n  )\n}\n\nfunction FieldDescription({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        \"text-sm text-muted-foreground @3xl/field-group:col-start-1 @3xl/field-group:row-start-1 @3xl/field-group:translate-y-6\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/forms/appearance-settings.tsx",
    "content": "import Image from \"next/image\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nconst modes = [\n  {\n    name: \"Light\",\n    value: \"light\",\n    image: \"/placeholder.svg\",\n  },\n  {\n    name: \"Dark\",\n    value: \"dark\",\n    image: \"/placeholder.svg\",\n  },\n  {\n    name: \"System\",\n    value: \"system\",\n    image: \"/placeholder.svg\",\n  },\n]\n\nconst accents = [\n  {\n    name: \"Blue\",\n    value: \"#007AFF\",\n  },\n  {\n    name: \"Purple\",\n    value: \"#6A4695\",\n  },\n  {\n    name: \"Red\",\n    value: \"#FF3B30\",\n  },\n  {\n    name: \"Orange\",\n    value: \"#FF9500\",\n  },\n]\n\nexport function AppearanceSettings() {\n  return (\n    <FieldSet>\n      <FieldLegend>Appearance</FieldLegend>\n      <FieldDescription>\n        Configure appearance. accent, scroll bar, and more.\n      </FieldDescription>\n      <FieldGroup>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Mode</FieldLegend>\n          <FieldDescription>\n            Select the mode to use for the appearance.\n          </FieldDescription>\n          <RadioGroup\n            className=\"flex flex-col gap-4 @min-[28rem]/field-group:grid @min-[28rem]/field-group:grid-cols-3\"\n            defaultValue=\"light\"\n          >\n            {modes.map((mode) => (\n              <FieldLabel\n                htmlFor={mode.value}\n                className=\"gap-0 overflow-hidden\"\n                key={mode.value}\n              >\n                <Image\n                  src={mode.image}\n                  alt={mode.name}\n                  width={160}\n                  height={90}\n                  className=\"hidden aspect-video w-full object-cover @min-[28rem]/field-group:block dark:brightness-[0.2] dark:grayscale\"\n                />\n                <Field\n                  orientation=\"horizontal\"\n                  className=\"@min-[28rem]/field-group:border-t @min-[28rem]/field-group:border-t-input\"\n                >\n                  <FieldTitle>{mode.name}</FieldTitle>\n                  <RadioGroupItem id={mode.value} value={mode.value} />\n                </Field>\n              </FieldLabel>\n            ))}\n          </RadioGroup>\n        </FieldSet>\n        <FieldSeparator />\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Accent</FieldTitle>\n            <FieldDescription>\n              Select the accent color to use for the appearance.\n            </FieldDescription>\n          </FieldContent>\n          <FieldSet aria-label=\"Accent\">\n            <RadioGroup className=\"flex flex-wrap gap-2\" defaultValue=\"#007AFF\">\n              {accents.map((accent) => (\n                <Label\n                  htmlFor={accent.value}\n                  key={accent.value}\n                  className=\"flex size-6 items-center justify-center rounded-full\"\n                  style={{ backgroundColor: accent.value }}\n                >\n                  <RadioGroupItem\n                    id={accent.value}\n                    value={accent.value}\n                    aria-label={accent.name}\n                    className=\"peer sr-only\"\n                  />\n                  <CheckIcon className=\"hidden size-4 stroke-white peer-data-[state=checked]:block\" />\n                </Label>\n              ))}\n            </RadioGroup>\n          </FieldSet>\n        </Field>\n        <FieldSeparator />\n        <Field orientation=\"responsive\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"icon-size\">Sidebar Icon Size</FieldLabel>\n            <FieldDescription>\n              Select the size of the sidebar icons.\n            </FieldDescription>\n          </FieldContent>\n          <Select>\n            <SelectTrigger id=\"icon-size\" className=\"ml-auto\">\n              <SelectValue placeholder=\"Select\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectItem value=\"small\">Small</SelectItem>\n              <SelectItem value=\"medium\">Medium</SelectItem>\n              <SelectItem value=\"large\">Large</SelectItem>\n            </SelectContent>\n          </Select>\n        </Field>\n        <FieldSeparator />\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"tinting\">Wallpaper Tinting</FieldLabel>\n            <FieldDescription>\n              Allow the wallpaper to be tinted with the accent color.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"tinting\" defaultChecked />\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/forms/chat-settings.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { CircleIcon, InfoIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Kbd } from \"@/registry/new-york-v4/ui/kbd\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nconst spokenLanguages = [\n  { label: \"English\", value: \"en\" },\n  { label: \"Spanish\", value: \"es\" },\n  { label: \"French\", value: \"fr\" },\n  { label: \"German\", value: \"de\" },\n  { label: \"Italian\", value: \"it\" },\n  { label: \"Portuguese\", value: \"pt\" },\n  { label: \"Russian\", value: \"ru\" },\n  { label: \"Chinese\", value: \"zh\" },\n  { label: \"Japanese\", value: \"ja\" },\n  { label: \"Korean\", value: \"ko\" },\n  { label: \"Arabic\", value: \"ar\" },\n  { label: \"Hindi\", value: \"hi\" },\n  { label: \"Bengali\", value: \"bn\" },\n  { label: \"Telugu\", value: \"te\" },\n  { label: \"Marathi\", value: \"mr\" },\n  { label: \"Kannada\", value: \"kn\" },\n  { label: \"Malayalam\", value: \"ml\" },\n]\n\nconst voices = [\n  { label: \"Samantha\", value: \"samantha\" },\n  { label: \"Alex\", value: \"alex\" },\n  { label: \"Fred\", value: \"fred\" },\n  { label: \"Victoria\", value: \"victoria\" },\n  { label: \"Tom\", value: \"tom\" },\n  { label: \"Karen\", value: \"karen\" },\n  { label: \"Sam\", value: \"sam\" },\n  { label: \"Daniel\", value: \"daniel\" },\n]\n\nconst personalities = [\n  {\n    label: \"Friendly\",\n    value: \"friendly\",\n    description: \"Friendly and approachable.\",\n  },\n  {\n    label: \"Professional\",\n    value: \"professional\",\n    description: \"Professional and authoritative.\",\n  },\n  { label: \"Funny\", value: \"funny\", description: \"Funny and light-hearted.\" },\n  {\n    label: \"Sarcastic\",\n    value: \"sarcastic\",\n    description: \"Sarcastic and witty.\",\n  },\n  { label: \"Cynical\", value: \"cynical\", description: \"Cynical and skeptical.\" },\n]\n\nconst instructions = [\n  {\n    label: \"Witty\",\n    value: \"witty\",\n    description: \"Use quick and clever responses when appropriate.\",\n  },\n  {\n    label: \"Professional\",\n    value: \"professional\",\n    description: \"Have a professional and authoritative tone.\",\n  },\n  {\n    label: \"Funny\",\n    value: \"funny\",\n    description: \"Use humor and wit to engage the user.\",\n  },\n  {\n    label: \"Sarcastic\",\n    value: \"sarcastic\",\n    description: \"Use sarcasm and wit to engage the user.\",\n  },\n  {\n    label: \"Cynical\",\n    value: \"cynical\",\n    description: \"Use cynicism and skepticism to engage the user.\",\n  },\n]\n\nexport function ChatSettings() {\n  const [tab, setTab] = useState(\"general\")\n  const [theme, setTheme] = useState(\"system\")\n  const [accentColor, setAccentColor] = useState(\"default\")\n  const [spokenLanguage, setSpokenLanguage] = useState(\"en\")\n  const [voice, setVoice] = useState(\"samantha\")\n  const [personality, setPersonality] = useState(\"friendly\")\n  const [customInstructions, setCustomInstructions] = useState(\"\")\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button variant=\"outline\" asChild className=\"w-full md:hidden\">\n        <select\n          value={tab}\n          onChange={(e) => setTab(e.target.value)}\n          className=\"appearance-none\"\n        >\n          <option value=\"general\">General</option>\n          <option value=\"notifications\">Notifications</option>\n          <option value=\"personalization\">Personalization</option>\n          <option value=\"security\">Security</option>\n        </select>\n      </Button>\n      <Tabs value={tab} onValueChange={setTab}>\n        <TabsList className=\"hidden md:flex\">\n          <TabsTrigger value=\"general\">General</TabsTrigger>\n          <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n          <TabsTrigger value=\"personalization\">Personalization</TabsTrigger>\n          <TabsTrigger value=\"security\">Security</TabsTrigger>\n        </TabsList>\n        <div className=\"rounded-lg border p-6 [&_[data-slot=select-trigger]]:min-w-[125px]\">\n          <TabsContent value=\"general\">\n            <FieldSet>\n              <FieldGroup>\n                <Field orientation=\"horizontal\">\n                  <FieldLabel htmlFor=\"theme\">Theme</FieldLabel>\n                  <Select value={theme} onValueChange={setTheme}>\n                    <SelectTrigger id=\"theme\">\n                      <SelectValue placeholder=\"Select\" />\n                    </SelectTrigger>\n                    <SelectContent align=\"end\">\n                      <SelectItem value=\"light\">Light</SelectItem>\n                      <SelectItem value=\"dark\">Dark</SelectItem>\n                      <SelectItem value=\"system\">System</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <FieldSeparator />\n                <Field orientation=\"horizontal\">\n                  <FieldLabel htmlFor=\"accent-color\">Accent Color</FieldLabel>\n                  <Select value={accentColor} onValueChange={setAccentColor}>\n                    <SelectTrigger id=\"accent-color\">\n                      <SelectValue placeholder=\"Select\" />\n                    </SelectTrigger>\n                    <SelectContent align=\"end\">\n                      <SelectItem value=\"default\">\n                        <CircleIcon className=\"fill-neutral-500 stroke-neutral-500 dark:fill-neutral-400 dark:stroke-neutral-400\" />\n                        Default\n                      </SelectItem>\n                      <SelectItem value=\"red\">\n                        <CircleIcon className=\"fill-red-500 stroke-red-500 dark:fill-red-400 dark:stroke-red-400\" />\n                        Red\n                      </SelectItem>\n                      <SelectItem value=\"blue\">\n                        <CircleIcon className=\"fill-blue-500 stroke-blue-500 dark:fill-blue-400 dark:stroke-blue-400\" />\n                        Blue\n                      </SelectItem>\n                      <SelectItem value=\"green\">\n                        <CircleIcon className=\"fill-green-500 stroke-green-500 dark:fill-green-400 dark:stroke-green-400\" />\n                        Green\n                      </SelectItem>\n                      <SelectItem value=\"purple\">\n                        <CircleIcon className=\"fill-purple-500 stroke-purple-500 dark:fill-purple-400 dark:stroke-purple-400\" />\n                        Purple\n                      </SelectItem>\n                      <SelectItem value=\"pink\">\n                        <CircleIcon className=\"fill-pink-500 stroke-pink-500 dark:fill-pink-400 dark:stroke-pink-400\" />\n                        Pink\n                      </SelectItem>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <FieldSeparator />\n                <Field orientation=\"responsive\">\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"spoken-language\">\n                      Spoken Language\n                    </FieldLabel>\n                    <FieldDescription>\n                      For best results, select the language you mainly speak. If\n                      it&apos;s not listed, it may still be supported via\n                      auto-detection.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Select\n                    value={spokenLanguage}\n                    onValueChange={setSpokenLanguage}\n                  >\n                    <SelectTrigger id=\"spoken-language\">\n                      <SelectValue placeholder=\"Select\" />\n                    </SelectTrigger>\n                    <SelectContent align=\"end\" position=\"item-aligned\">\n                      <SelectItem value=\"auto\">Auto</SelectItem>\n                      <SelectSeparator />\n                      {spokenLanguages.map((language) => (\n                        <SelectItem key={language.value} value={language.value}>\n                          {language.label}\n                        </SelectItem>\n                      ))}\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <FieldSeparator />\n                <Field orientation=\"horizontal\">\n                  <FieldLabel htmlFor=\"voice\">Voice</FieldLabel>\n                  <Select value={voice} onValueChange={setVoice}>\n                    <SelectTrigger id=\"voice\">\n                      <SelectValue placeholder=\"Select\" />\n                    </SelectTrigger>\n                    <SelectContent align=\"end\" position=\"item-aligned\">\n                      {voices.map((voice) => (\n                        <SelectItem key={voice.value} value={voice.value}>\n                          {voice.label}\n                        </SelectItem>\n                      ))}\n                    </SelectContent>\n                  </Select>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n          </TabsContent>\n          <TabsContent value=\"notifications\">\n            <FieldGroup>\n              <FieldSet>\n                <FieldLabel>Responses</FieldLabel>\n                <FieldDescription>\n                  Get notified when ChatGPT responds to requests that take time,\n                  like research or image generation.\n                </FieldDescription>\n                <FieldGroup data-slot=\"checkbox-group\">\n                  <Field orientation=\"horizontal\">\n                    <Checkbox id=\"push\" defaultChecked disabled />\n                    <FieldLabel htmlFor=\"push\" className=\"font-normal\">\n                      Push notifications\n                    </FieldLabel>\n                  </Field>\n                </FieldGroup>\n              </FieldSet>\n              <FieldSeparator />\n              <FieldSet>\n                <FieldLabel>Tasks</FieldLabel>\n                <FieldDescription>\n                  Get notified when tasks you&apos;ve created have updates.{\" \"}\n                  <a href=\"#\">Manage tasks</a>\n                </FieldDescription>\n                <FieldGroup data-slot=\"checkbox-group\">\n                  <Field orientation=\"horizontal\">\n                    <Checkbox id=\"push-tasks\" />\n                    <FieldLabel htmlFor=\"push-tasks\" className=\"font-normal\">\n                      Push notifications\n                    </FieldLabel>\n                  </Field>\n                  <Field orientation=\"horizontal\">\n                    <Checkbox id=\"email-tasks\" />\n                    <FieldLabel htmlFor=\"email-tasks\" className=\"font-normal\">\n                      Email notifications\n                    </FieldLabel>\n                  </Field>\n                </FieldGroup>\n              </FieldSet>\n            </FieldGroup>\n          </TabsContent>\n          <TabsContent value=\"personalization\">\n            <FieldGroup>\n              <Field orientation=\"responsive\">\n                <FieldLabel htmlFor=\"nickname\">Nickname</FieldLabel>\n                <InputGroup>\n                  <InputGroupInput\n                    id=\"nickname\"\n                    placeholder=\"Broski\"\n                    className=\"@md/field-group:max-w-[200px]\"\n                  />\n                  <InputGroupAddon align=\"inline-end\">\n                    <Tooltip>\n                      <TooltipTrigger asChild>\n                        <InputGroupButton size=\"icon-xs\">\n                          <InfoIcon />\n                        </InputGroupButton>\n                      </TooltipTrigger>\n                      <TooltipContent className=\"flex items-center gap-2\">\n                        Used to identify you in the chat. <Kbd>N</Kbd>\n                      </TooltipContent>\n                    </Tooltip>\n                  </InputGroupAddon>\n                </InputGroup>\n              </Field>\n              <FieldSeparator />\n              <Field\n                orientation=\"responsive\"\n                className=\"@md/field-group:flex-col @2xl/field-group:flex-row\"\n              >\n                <FieldContent>\n                  <FieldLabel htmlFor=\"about\">More about you</FieldLabel>\n                  <FieldDescription>\n                    Tell us more about yourself. This will be used to help us\n                    personalize your experience.\n                  </FieldDescription>\n                </FieldContent>\n                <Textarea\n                  id=\"about\"\n                  placeholder=\"I'm a software engineer...\"\n                  className=\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\"\n                />\n              </Field>\n              <FieldSeparator />\n              <FieldLabel>\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"customization\">\n                      Enable customizations\n                    </FieldLabel>\n                    <FieldDescription>\n                      Enable customizations to make ChatGPT more personalized.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch id=\"customization\" defaultChecked />\n                </Field>\n              </FieldLabel>\n              <FieldSeparator />\n              <Field orientation=\"responsive\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"personality\">\n                    ChatGPT Personality\n                  </FieldLabel>\n                  <FieldDescription>\n                    Set the style and tone ChatGPT should use when responding.\n                  </FieldDescription>\n                </FieldContent>\n                <Select value={personality} onValueChange={setPersonality}>\n                  <SelectTrigger id=\"personality\">\n                    {personalities.find((p) => p.value === personality)?.label}\n                  </SelectTrigger>\n                  <SelectContent align=\"end\">\n                    {personalities.map((personality) => (\n                      <SelectItem\n                        key={personality.value}\n                        value={personality.value}\n                      >\n                        <FieldContent className=\"gap-0.5\">\n                          <FieldLabel>{personality.label}</FieldLabel>\n                          <FieldDescription className=\"text-xs\">\n                            {personality.description}\n                          </FieldDescription>\n                        </FieldContent>\n                      </SelectItem>\n                    ))}\n                  </SelectContent>\n                </Select>\n              </Field>\n              <FieldSeparator />\n              <Field>\n                <FieldLabel htmlFor=\"instructions\">\n                  Custom Instructions\n                </FieldLabel>\n                <Textarea\n                  id=\"instructions\"\n                  value={customInstructions}\n                  onChange={(e) => setCustomInstructions(e.target.value)}\n                />\n                <div className=\"flex flex-wrap gap-2\">\n                  {instructions.map((instruction) => (\n                    <Button\n                      variant=\"outline\"\n                      key={instruction.value}\n                      value={instruction.value}\n                      className=\"rounded-full\"\n                      size=\"sm\"\n                      onClick={() =>\n                        setCustomInstructions(\n                          `${customInstructions} ${instruction.description}`\n                        )\n                      }\n                    >\n                      {instruction.label}\n                    </Button>\n                  ))}\n                </div>\n              </Field>\n            </FieldGroup>\n          </TabsContent>\n          <TabsContent value=\"security\">\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"2fa\">\n                    Multi-factor authentication\n                  </FieldLabel>\n                  <FieldDescription>\n                    Enable multi-factor authentication to secure your account.\n                    If you do not have a two-factor authentication device, you\n                    can use a one-time code sent to your email.\n                  </FieldDescription>\n                </FieldContent>\n                <Switch id=\"2fa\" />\n              </Field>\n              <FieldSeparator />\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>Log out</FieldTitle>\n                  <FieldDescription>\n                    Log out of your account on this device.\n                  </FieldDescription>\n                </FieldContent>\n                <Button variant=\"outline\" size=\"sm\">\n                  Log Out\n                </Button>\n              </Field>\n              <FieldSeparator />\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>Log out of all devices</FieldTitle>\n                  <FieldDescription>\n                    This will log you out of all devices, including the current\n                    session. It may take up to 30 minutes for the changes to\n                    take effect.\n                  </FieldDescription>\n                </FieldContent>\n                <Button variant=\"outline\" size=\"sm\">\n                  Log Out All\n                </Button>\n              </Field>\n            </FieldGroup>\n          </TabsContent>\n        </div>\n      </Tabs>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/forms/display-settings.tsx",
    "content": "import { SunDimIcon, SunIcon } from \"lucide-react\"\n\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nexport function DisplaySettings() {\n  return (\n    <FieldSet>\n      <FieldLegend>Display</FieldLegend>\n      <FieldDescription>\n        Configure display settings, brightness, refresh rate, and more.\n      </FieldDescription>\n      <FieldGroup>\n        <Field orientation=\"responsive\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"resolution\">Resolution</FieldLabel>\n            <FieldDescription>Select the display resolution.</FieldDescription>\n          </FieldContent>\n          <Select>\n            <SelectTrigger id=\"resolution\" className=\"ml-auto\">\n              <SelectValue placeholder=\"Select\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectItem value=\"1920x1080\">1920 x 1080</SelectItem>\n              <SelectItem value=\"2560x1440\">2560 x 1440</SelectItem>\n              <SelectItem value=\"3840x2160\">3840 x 2160</SelectItem>\n              <SelectItem value=\"auto\">Auto</SelectItem>\n            </SelectContent>\n          </Select>\n        </Field>\n        <FieldSeparator />\n        <Field orientation=\"responsive\">\n          <FieldContent>\n            <FieldTitle>Brightness</FieldTitle>\n            <FieldDescription>\n              Adjust the display brightness level.\n            </FieldDescription>\n          </FieldContent>\n          <div className=\"flex min-w-[150px] items-center gap-2\">\n            <SunDimIcon className=\"size-4 shrink-0\" />\n            <Slider\n              id=\"brightness\"\n              defaultValue={[75]}\n              max={100}\n              step={1}\n              aria-label=\"Brightness\"\n            />\n            <SunIcon className=\"size-4 shrink-0\" />\n          </div>\n        </Field>\n        <FieldSeparator />\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"auto-brightness\">\n              Automatically Adjust Brightness\n            </FieldLabel>\n            <FieldDescription>\n              Automatically adjust brightness based on ambient light.\n            </FieldDescription>\n          </FieldContent>\n          <Checkbox id=\"auto-brightness\" defaultChecked />\n        </Field>\n        <FieldSeparator />\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"true-tone\">True Tone</FieldLabel>\n            <FieldDescription>\n              Automatically adjust colors to match ambient lighting.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"true-tone\" />\n        </Field>\n        <FieldSeparator />\n        <Field orientation=\"responsive\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"refresh-rate\">Refresh Rate</FieldLabel>\n            <FieldDescription>\n              Select the display refresh rate.\n            </FieldDescription>\n          </FieldContent>\n          <Select>\n            <SelectTrigger id=\"refresh-rate\" className=\"ml-auto min-w-[200px]\">\n              <SelectValue placeholder=\"Select\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectItem value=\"60hz\">60 Hz</SelectItem>\n              <SelectItem value=\"120hz\">120 Hz</SelectItem>\n              <SelectItem value=\"144hz\">144 Hz</SelectItem>\n              <SelectItem value=\"240hz\">240 Hz</SelectItem>\n            </SelectContent>\n          </Select>\n        </Field>\n        <FieldSeparator />\n        <Field orientation=\"responsive\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"tv-connection\">\n              When connected to TV\n            </FieldLabel>\n            <FieldDescription>\n              Choose display behavior when connected to a TV.\n            </FieldDescription>\n          </FieldContent>\n          <Select>\n            <SelectTrigger id=\"tv-connection\" className=\"ml-auto\">\n              <SelectValue placeholder=\"Select\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectItem value=\"mirror\">Mirror Display</SelectItem>\n              <SelectItem value=\"extend\">Extend Display</SelectItem>\n              <SelectItem value=\"tv-only\">TV Only</SelectItem>\n              <SelectItem value=\"auto\">Auto</SelectItem>\n            </SelectContent>\n          </Select>\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/forms/notion-prompt-form.tsx",
    "content": "\"use client\"\n\nimport { useMemo, useState } from \"react\"\nimport {\n  IconApps,\n  IconArrowUp,\n  IconAt,\n  IconBook,\n  IconBrandAbstract,\n  IconBrandOpenai,\n  IconBrandZeit,\n  IconCircleDashedPlus,\n  IconPaperclip,\n  IconPlus,\n  IconWorld,\n  IconX,\n} from \"@tabler/icons-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { Field, FieldLabel } from \"@/registry/new-york-v4/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nconst SAMPLE_DATA = {\n  mentionable: [\n    {\n      type: \"page\",\n      title: \"Meeting Notes\",\n      image: \"📝\",\n    },\n    {\n      type: \"page\",\n      title: \"Project Dashboard\",\n      image: \"📊\",\n    },\n    {\n      type: \"page\",\n      title: \"Ideas & Brainstorming\",\n      image: \"💡\",\n    },\n    {\n      type: \"page\",\n      title: \"Calendar & Events\",\n      image: \"📅\",\n    },\n    {\n      type: \"page\",\n      title: \"Documentation\",\n      image: \"📚\",\n    },\n    {\n      type: \"page\",\n      title: \"Goals & Objectives\",\n      image: \"🎯\",\n    },\n    {\n      type: \"page\",\n      title: \"Budget Planning\",\n      image: \"💰\",\n    },\n    {\n      type: \"page\",\n      title: \"Team Directory\",\n      image: \"👥\",\n    },\n    {\n      type: \"page\",\n      title: \"Technical Specs\",\n      image: \"🔧\",\n    },\n    {\n      type: \"page\",\n      title: \"Analytics Report\",\n      image: \"📈\",\n    },\n    {\n      type: \"user\",\n      title: \"shadcn\",\n      image: \"https://github.com/shadcn.png\",\n      workspace: \"Workspace\",\n    },\n    {\n      type: \"user\",\n      title: \"maxleiter\",\n      image: \"https://github.com/maxleiter.png\",\n      workspace: \"Cursor\",\n    },\n    {\n      type: \"user\",\n      title: \"evilrabbit\",\n      image: \"https://github.com/evilrabbit.png\",\n      workspace: \"Vercel\",\n    },\n  ],\n  models: [\n    {\n      name: \"Auto\",\n      icon: IconBrandZeit,\n    },\n    {\n      name: \"Claude Sonnet 4\",\n      icon: IconBrandAbstract,\n      badge: \"Beta\",\n    },\n    {\n      name: \"GPT-5\",\n      icon: IconBrandOpenai,\n      badge: \"Beta\",\n    },\n  ],\n}\n\nfunction MentionableIcon({\n  item,\n}: {\n  item: (typeof SAMPLE_DATA.mentionable)[0]\n}) {\n  return item.type === \"page\" ? (\n    <span className=\"flex size-4 items-center justify-center\">\n      {item.image}\n    </span>\n  ) : (\n    <Avatar className=\"size-4\">\n      <AvatarImage src={item.image} />\n      <AvatarFallback>{item.title[0]}</AvatarFallback>\n    </Avatar>\n  )\n}\n\nexport function NotionPromptForm() {\n  const [mentions, setMentions] = useState<string[]>([])\n  const [mentionPopoverOpen, setMentionPopoverOpen] = useState(false)\n  const [modelPopoverOpen, setModelPopoverOpen] = useState(false)\n  const [selectedModel, setSelectedModel] = useState<\n    (typeof SAMPLE_DATA.models)[0]\n  >(SAMPLE_DATA.models[0])\n  const [scopeMenuOpen, setScopeMenuOpen] = useState(false)\n\n  const grouped = useMemo(() => {\n    return SAMPLE_DATA.mentionable.reduce(\n      (acc, item) => {\n        const isAvailable = !mentions.includes(item.title)\n\n        if (isAvailable) {\n          if (!acc[item.type]) {\n            acc[item.type] = []\n          }\n          acc[item.type].push(item)\n        }\n        return acc\n      },\n      {} as Record<string, typeof SAMPLE_DATA.mentionable>\n    )\n  }, [mentions])\n\n  const hasMentions = mentions.length > 0\n\n  return (\n    <form className=\"[--radius:1.2rem]\">\n      <Field>\n        <FieldLabel htmlFor=\"notion-prompt\" className=\"sr-only\">\n          Prompt\n        </FieldLabel>\n        <InputGroup className=\"bg-background shadow-none dark:bg-background\">\n          <InputGroupTextarea\n            id=\"notion-prompt\"\n            placeholder=\"Ask, search, or make anything...\"\n          />\n          <InputGroupAddon align=\"block-start\">\n            <Popover\n              open={mentionPopoverOpen}\n              onOpenChange={setMentionPopoverOpen}\n            >\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <PopoverTrigger asChild>\n                    <InputGroupButton\n                      variant=\"outline\"\n                      size={!hasMentions ? \"sm\" : \"icon-sm\"}\n                      className=\"rounded-full transition-transform\"\n                    >\n                      <IconAt /> {!hasMentions && \"Add context\"}\n                    </InputGroupButton>\n                  </PopoverTrigger>\n                </TooltipTrigger>\n                <TooltipContent>Mention a person, page, or date</TooltipContent>\n              </Tooltip>\n              <PopoverContent className=\"p-0 [--radius:1.2rem]\" align=\"start\">\n                <Command>\n                  <CommandInput placeholder=\"Search pages...\" />\n                  <CommandList>\n                    <CommandEmpty>No pages found</CommandEmpty>\n                    {Object.entries(grouped).map(([type, items]) => (\n                      <CommandGroup\n                        key={type}\n                        heading={type === \"page\" ? \"Pages\" : \"Users\"}\n                      >\n                        {items.map((item) => (\n                          <CommandItem\n                            key={item.title}\n                            value={item.title}\n                            onSelect={(currentValue) => {\n                              setMentions((prev) => [...prev, currentValue])\n                              setMentionPopoverOpen(false)\n                            }}\n                          >\n                            <MentionableIcon item={item} />\n                            {item.title}\n                          </CommandItem>\n                        ))}\n                      </CommandGroup>\n                    ))}\n                  </CommandList>\n                </Command>\n              </PopoverContent>\n            </Popover>\n            <div className=\"-m-1.5 no-scrollbar flex gap-1 overflow-y-auto p-1.5\">\n              {mentions.map((mention) => {\n                const item = SAMPLE_DATA.mentionable.find(\n                  (item) => item.title === mention\n                )\n\n                if (!item) {\n                  return null\n                }\n\n                return (\n                  <InputGroupButton\n                    key={mention}\n                    size=\"sm\"\n                    variant=\"secondary\"\n                    className=\"rounded-full pl-2!\"\n                    onClick={() => {\n                      setMentions((prev) => prev.filter((m) => m !== mention))\n                    }}\n                  >\n                    <MentionableIcon item={item} />\n                    {item.title}\n                    <IconX />\n                  </InputGroupButton>\n                )\n              })}\n            </div>\n          </InputGroupAddon>\n          <InputGroupAddon align=\"block-end\" className=\"gap-1\">\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <InputGroupButton\n                  size=\"icon-sm\"\n                  className=\"rounded-full\"\n                  aria-label=\"Attach file\"\n                >\n                  <IconPaperclip />\n                </InputGroupButton>\n              </TooltipTrigger>\n              <TooltipContent>Attach file</TooltipContent>\n            </Tooltip>\n            <DropdownMenu\n              open={modelPopoverOpen}\n              onOpenChange={setModelPopoverOpen}\n            >\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <DropdownMenuTrigger asChild>\n                    <InputGroupButton size=\"sm\" className=\"rounded-full\">\n                      {selectedModel.icon && selectedModel.name !== \"Auto\" && (\n                        <selectedModel.icon />\n                      )}\n                      {selectedModel.name}\n                    </InputGroupButton>\n                  </DropdownMenuTrigger>\n                </TooltipTrigger>\n                <TooltipContent>Select AI model</TooltipContent>\n              </Tooltip>\n              <DropdownMenuContent\n                side=\"top\"\n                align=\"start\"\n                className=\"[--radius:1.2rem]\"\n              >\n                <DropdownMenuGroup className=\"w-72\">\n                  <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                    Get answers about your workspace\n                  </DropdownMenuLabel>\n                  {SAMPLE_DATA.models.map((model) => (\n                    <DropdownMenuCheckboxItem\n                      key={model.name}\n                      checked={model.name === selectedModel.name}\n                      onCheckedChange={(checked) => {\n                        if (checked) {\n                          setSelectedModel(model)\n                        }\n                      }}\n                      className=\"pl-2 *:[span:first-child]:right-2 *:[span:first-child]:left-auto\"\n                    >\n                      {model.icon && <model.icon />}\n                      {model.name}\n                      {model.badge && (\n                        <Badge\n                          variant=\"secondary\"\n                          className=\"h-5 rounded-sm bg-blue-100 px-1 text-xs text-blue-800 dark:bg-blue-900 dark:text-blue-100\"\n                        >\n                          {model.badge}\n                        </Badge>\n                      )}\n                    </DropdownMenuCheckboxItem>\n                  ))}\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n            <DropdownMenu open={scopeMenuOpen} onOpenChange={setScopeMenuOpen}>\n              <DropdownMenuTrigger asChild>\n                <InputGroupButton size=\"sm\" className=\"rounded-full\">\n                  <IconWorld /> All Sources\n                </InputGroupButton>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                side=\"top\"\n                align=\"start\"\n                className=\"[--radius:1.2rem]\"\n              >\n                <DropdownMenuGroup>\n                  <DropdownMenuItem\n                    asChild\n                    onSelect={(e) => e.preventDefault()}\n                  >\n                    <label htmlFor=\"web-search\">\n                      <IconWorld /> Web Search{\" \"}\n                      <Switch\n                        id=\"web-search\"\n                        className=\"ml-auto\"\n                        defaultChecked\n                      />\n                    </label>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem\n                    asChild\n                    onSelect={(e) => e.preventDefault()}\n                  >\n                    <label htmlFor=\"apps\">\n                      <IconApps /> Apps and Integrations\n                      <Switch id=\"apps\" className=\"ml-auto\" defaultChecked />\n                    </label>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconCircleDashedPlus /> All Sources I can access\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <Avatar className=\"size-4\">\n                        <AvatarImage src=\"https://github.com/shadcn.png\" />\n                        <AvatarFallback>CN</AvatarFallback>\n                      </Avatar>\n                      shadcn\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuSubContent className=\"w-72 p-0 [--radius:1.2rem]\">\n                      <Command>\n                        <CommandInput\n                          placeholder=\"Find or use knowledge in...\"\n                          autoFocus\n                        />\n                        <CommandList>\n                          <CommandEmpty>No knowledge found</CommandEmpty>\n                          <CommandGroup>\n                            {SAMPLE_DATA.mentionable\n                              .filter((item) => item.type === \"user\")\n                              .map((user) => (\n                                <CommandItem\n                                  key={user.title}\n                                  value={user.title}\n                                  onSelect={() => {\n                                    // Handle user selection here\n                                    console.log(\"Selected user:\", user.title)\n                                  }}\n                                >\n                                  <Avatar className=\"size-4\">\n                                    <AvatarImage src={user.image} />\n                                    <AvatarFallback>\n                                      {user.title[0]}\n                                    </AvatarFallback>\n                                  </Avatar>\n                                  {user.title}{\" \"}\n                                  <span className=\"text-muted-foreground\">\n                                    - {user.workspace}\n                                  </span>\n                                </CommandItem>\n                              ))}\n                          </CommandGroup>\n                        </CommandList>\n                      </Command>\n                    </DropdownMenuSubContent>\n                  </DropdownMenuSub>\n                  <DropdownMenuItem>\n                    <IconBook /> Help Center\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <IconPlus /> Connect Apps\n                  </DropdownMenuItem>\n                  <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                    We&apos;ll only search in the sources selected here.\n                  </DropdownMenuLabel>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n            <InputGroupButton\n              aria-label=\"Send\"\n              className=\"ml-auto rounded-full\"\n              variant=\"default\"\n              size=\"icon-sm\"\n            >\n              <IconArrowUp />\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/forms/page.tsx",
    "content": "import { AppearanceSettings } from \"@/app/(internal)/sink/(pages)/forms/appearance-settings\"\nimport { ChatSettings } from \"@/app/(internal)/sink/(pages)/forms/chat-settings\"\nimport { DisplaySettings } from \"@/app/(internal)/sink/(pages)/forms/display-settings\"\nimport { NotionPromptForm } from \"@/app/(internal)/sink/(pages)/forms/notion-prompt-form\"\nimport { ShipRegistrationForm } from \"@/app/(internal)/sink/(pages)/forms/ship-registration-form\"\nimport { ShippingForm } from \"@/app/(internal)/sink/(pages)/forms/shipping-form\"\n\nexport default function FormsPage() {\n  return (\n    <div className=\"@container flex flex-1 flex-col gap-12 p-4\">\n      <div className=\"grid flex-1 gap-12 @3xl:grid-cols-2 @5xl:grid-cols-3 @[120rem]:grid-cols-4 [&>div]:max-w-lg\">\n        <div className=\"flex flex-col gap-12\">\n          <NotionPromptForm />\n          <ChatSettings />\n        </div>\n        <div className=\"flex flex-col gap-12\">\n          <AppearanceSettings />\n        </div>\n        <div className=\"flex flex-col gap-12\">\n          <DisplaySettings />\n        </div>\n        <div className=\"flex flex-col gap-12\">\n          <ShippingForm />\n        </div>\n        <div className=\"col-span-2 flex flex-col gap-12\">\n          <ShipRegistrationForm />\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/forms/ship-registration-form.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport function ShipRegistrationForm() {\n  return (\n    <div className=\"flex max-w-md flex-col gap-6\">\n      <div className=\"flex flex-col gap-2\">\n        <h1 className=\"text-2xl font-bold tracking-tight\">\n          Join us in SF or online on October 23\n        </h1>\n        <FieldDescription>\n          Already signed up? <a href=\"#\">Log in</a>\n        </FieldDescription>\n      </div>\n      <form>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>1. Select your ticket type</FieldLegend>\n            <FieldDescription>\n              Select your ticket type to join us in San Francisco or online on\n              October 23.\n            </FieldDescription>\n            <Field>\n              <RadioGroup>\n                <FieldLabel htmlFor=\"in-person\">\n                  <Field orientation=\"horizontal\">\n                    <FieldContent>\n                      <FieldTitle>In Person</FieldTitle>\n                      <FieldDescription>\n                        Join us in San Francisco on October 23.\n                      </FieldDescription>\n                    </FieldContent>\n                    <RadioGroupItem value=\"in-person\" id=\"in-person\" />\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"online\">\n                  <Field orientation=\"horizontal\">\n                    <FieldContent>\n                      <FieldTitle>Online</FieldTitle>\n                      <FieldDescription>\n                        Join us online on October 23.\n                      </FieldDescription>\n                    </FieldContent>\n                    <RadioGroupItem value=\"online\" id=\"online\" />\n                  </Field>\n                </FieldLabel>\n              </RadioGroup>\n            </Field>\n          </FieldSet>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"next-conf\" />\n            <FieldLabel htmlFor=\"next-conf\">\n              Also sign up for Next.js Conf 2025\n            </FieldLabel>\n          </Field>\n          <FieldSet>\n            <FieldLegend>2. Complete your attendee information</FieldLegend>\n            <FieldDescription>\n              By entering your information, you acknowledge that you have read\n              and agree to the <a href=\"#\">Terms of Service</a> and{\" \"}\n              <a href=\"#\">Privacy Policy</a>.\n            </FieldDescription>\n            <FieldGroup className=\"grid grid-cols-2 gap-x-4\">\n              <Field>\n                <FieldLabel htmlFor=\"first-name\">First Name</FieldLabel>\n                <Input id=\"first-name\" placeholder=\"Jane\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"last-name\">Last Name</FieldLabel>\n                <Input id=\"last-name\" placeholder=\"Doe\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input id=\"email\" placeholder=\"jane.doe@example.com\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"company\">Company</FieldLabel>\n                <Input id=\"company\" placeholder=\"Example Inc.\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"job-title\">Job Title</FieldLabel>\n                <Input\n                  id=\"job-title\"\n                  placeholder=\"Software Engineer\"\n                  required\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"country\">Country</FieldLabel>\n                <Select>\n                  <SelectTrigger>\n                    <SelectValue placeholder=\"Select a country\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"us\">United States</SelectItem>\n                    <SelectItem value=\"uk\">United Kingdom</SelectItem>\n                    <SelectItem value=\"ca\">Canada</SelectItem>\n                  </SelectContent>\n                </Select>\n              </Field>\n              <Field className=\"col-span-2\">\n                <FieldLabel htmlFor=\"topics\">\n                  What AI-related topics are you most curious about?\n                </FieldLabel>\n                <Textarea\n                  id=\"topics\"\n                  placeholder=\"Agents, Security, Improving UX/Personalization, etc.\"\n                  className=\"min-h-[100px]\"\n                />\n              </Field>\n              <Field className=\"col-span-2\">\n                <FieldLabel htmlFor=\"workloads\">\n                  What types of AI workloads are you tackling right now?\n                </FieldLabel>\n                <Textarea id=\"workloads\" className=\"min-h-[100px]\" />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>3. Buy your ticket</FieldLegend>\n            <FieldDescription>\n              Enter your card details to purchase your ticket.\n            </FieldDescription>\n            <FieldGroup className=\"grid grid-cols-2 gap-x-4\">\n              <Field className=\"col-span-2\">\n                <FieldLabel htmlFor=\"card-number\">Card Number</FieldLabel>\n                <Input\n                  id=\"card-number\"\n                  placeholder=\"1234 5678 9012 3456\"\n                  required\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"expiry-date\">Expiry Date</FieldLabel>\n                <Input id=\"expiry-date\" placeholder=\"MM/YY\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"cvv\">CVV</FieldLabel>\n                <Input id=\"cvv\" placeholder=\"123\" required />\n              </Field>\n              <Field className=\"col-span-2\">\n                <FieldLabel htmlFor=\"promo-code\">Promo Code</FieldLabel>\n                <InputGroup>\n                  <InputGroupInput id=\"promo-code\" placeholder=\"PROMO10\" />\n                  <InputGroupAddon align=\"inline-end\">\n                    <InputGroupButton>Apply</InputGroupButton>\n                  </InputGroupAddon>\n                </InputGroup>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <Field>\n            <Button type=\"submit\">Purchase Ticket</Button>\n            <FieldDescription>\n              By clicking Purchase Ticket, you agree to the{\" \"}\n              <a href=\"#\">Terms of Service</a> and{\" \"}\n              <a href=\"#\">Privacy Policy</a>.\n            </FieldDescription>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/forms/shipping-form.tsx",
    "content": "import { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport function ShippingForm() {\n  return (\n    <FieldSet>\n      <FieldLegend>Shipping Details</FieldLegend>\n      <FieldDescription>\n        Please provide your shipping details so we can deliver your order.\n      </FieldDescription>\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"street-address\">Street Address</FieldLabel>\n          <Input id=\"street-address\" autoComplete=\"off\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"city\">City</FieldLabel>\n          <Input id=\"city\" />\n        </Field>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Shipping Method</FieldLegend>\n          <FieldDescription>\n            Please select the shipping method for your order.\n          </FieldDescription>\n          <RadioGroup>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"standard\" id=\"shipping-method-1\" />\n              <FieldLabel htmlFor=\"shipping-method-1\" className=\"font-normal\">\n                Standard{\" \"}\n                <Badge className=\"rounded-full py-px\" variant=\"outline\">\n                  Free\n                </Badge>\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"express\" id=\"shipping-method-2\" />\n              <FieldLabel htmlFor=\"shipping-method-2\" className=\"font-normal\">\n                Express\n              </FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n        <Field>\n          <FieldLabel htmlFor=\"message\">Message</FieldLabel>\n          <Textarea id=\"message\" />\n          <FieldDescription>Anything else you want to add?</FieldDescription>\n        </Field>\n        <FieldSet>\n          <FieldLegend>Additional Items</FieldLegend>\n          <FieldDescription>\n            Please select the additional items for your order.\n          </FieldDescription>\n          <FieldGroup data-slot=\"checkbox-group\">\n            <FieldLabel htmlFor=\"gift-wrapping\">\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  value=\"gift-wrapping\"\n                  id=\"gift-wrapping\"\n                  aria-label=\"Gift Wrapping\"\n                />\n                <FieldContent>\n                  <FieldTitle>Gift Wrapping</FieldTitle>\n                  <FieldDescription>\n                    Add elegant gift wrapping with a personalized message.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"insurance\">\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  value=\"insurance\"\n                  id=\"insurance\"\n                  aria-label=\"Package Insurance\"\n                />\n                <FieldContent>\n                  <FieldTitle>Package Insurance</FieldTitle>\n                  <FieldDescription>\n                    Protect your shipment with comprehensive insurance coverage.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"signature-confirmation\">\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  value=\"signature-confirmation\"\n                  id=\"signature-confirmation\"\n                  aria-label=\"Signature Confirmation\"\n                />\n                <FieldContent>\n                  <FieldTitle>Signature Confirmation</FieldTitle>\n                  <FieldDescription>\n                    Require recipient signature upon delivery for added\n                    security.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n          </FieldGroup>\n        </FieldSet>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/next-form/actions.ts",
    "content": "\"use server\"\n\nimport { type FormState } from \"@/app/(internal)/sink/(pages)/next-form/example-form\"\nimport { exampleFormSchema } from \"@/app/(internal)/sink/(pages)/schema\"\n\nexport async function subscriptionAction(\n  _prevState: FormState,\n  formData: FormData\n): Promise<FormState> {\n  // Simulate server processing\n  await new Promise((resolve) => setTimeout(resolve, 1000))\n\n  const values = {\n    name: formData.get(\"name\") as string,\n    email: formData.get(\"email\") as string,\n    plan: formData.get(\"plan\") as \"basic\" | \"pro\",\n    billingPeriod: formData.get(\"billingPeriod\") as string,\n    addons: formData.getAll(\"addons\") as string[],\n    teamSize: parseInt(formData.get(\"teamSize\") as string) || 1,\n    emailNotifications: formData.get(\"emailNotifications\") === \"on\",\n    startDate: formData.get(\"startDate\")\n      ? new Date(formData.get(\"startDate\") as string)\n      : new Date(),\n    theme: formData.get(\"theme\") as string,\n    password: formData.get(\"password\") as string,\n    comments: formData.get(\"comments\") as string,\n  }\n\n  const result = exampleFormSchema.safeParse(values)\n\n  if (!result.success) {\n    return {\n      values,\n      success: false,\n      errors: result.error.flatten().fieldErrors,\n    }\n  }\n\n  // Simulate some business logic validation\n  if (result.data.email.includes(\"invalid\")) {\n    return {\n      values,\n      success: false,\n      errors: {\n        email: [\"This email domain is not supported\"],\n      },\n    }\n  }\n\n  return {\n    values,\n    errors: null,\n    success: true,\n  }\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/next-form/example-form.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Form from \"next/form\"\nimport { type z } from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\nimport {\n  addons,\n  type exampleFormSchema,\n} from \"@/app/(internal)/sink/(pages)/schema\"\n\nimport { subscriptionAction } from \"./actions\"\n\nexport type FormState = {\n  values: z.infer<typeof exampleFormSchema>\n  errors: null | Partial<\n    Record<keyof z.infer<typeof exampleFormSchema>, string[]>\n  >\n  success: boolean\n}\n\nexport function ExampleForm() {\n  const formId = React.useId()\n  const [formKey, setFormKey] = React.useState(formId)\n  const [showResults, setShowResults] = React.useState(false)\n  const [formState, formAction, pending] = React.useActionState<\n    FormState,\n    FormData\n  >(subscriptionAction, {\n    values: {\n      name: \"\",\n      email: \"\",\n      plan: \"basic\",\n      billingPeriod: \"\",\n      addons: [\"analytics\"],\n      teamSize: 1,\n      emailNotifications: false,\n      comments: \"\",\n      startDate: new Date(),\n      theme: \"system\",\n      password: \"\",\n    },\n    errors: null,\n    success: false,\n  })\n\n  React.useEffect(() => {\n    if (formState.success) {\n      setShowResults(true)\n    }\n  }, [formState.success])\n\n  return (\n    <>\n      <Card className=\"w-full max-w-sm\">\n        <CardHeader className=\"border-b\">\n          <CardTitle>Subscription Form</CardTitle>\n          <CardDescription>\n            Create your subscription using server actions and useActionState.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <Form action={formAction} id=\"subscription-form\" key={formKey}>\n            <FieldGroup>\n              <Field data-invalid={!!formState.errors?.name?.length}>\n                <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n                <Input\n                  id=\"name\"\n                  name=\"name\"\n                  defaultValue={formState.values.name}\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.name?.length}\n                  autoComplete=\"off\"\n                />\n                <FieldDescription>Enter your name</FieldDescription>\n                {formState.errors?.name && (\n                  <FieldError>{formState.errors.name[0]}</FieldError>\n                )}\n              </Field>\n              <Field data-invalid={!!formState.errors?.email?.length}>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  name=\"email\"\n                  type=\"email\"\n                  defaultValue={formState.values.email}\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.email?.length}\n                  autoComplete=\"off\"\n                />\n                <FieldDescription>Enter your email address</FieldDescription>\n                {formState.errors?.email && (\n                  <FieldError>{formState.errors.email[0]}</FieldError>\n                )}\n              </Field>\n              <FieldSeparator />\n              <FieldSet data-invalid={!!formState.errors?.plan?.length}>\n                <FieldLegend>Subscription Plan</FieldLegend>\n                <FieldDescription>\n                  Choose your subscription plan.\n                </FieldDescription>\n                <RadioGroup\n                  name=\"plan\"\n                  defaultValue={formState.values.plan}\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.plan?.length}\n                >\n                  <FieldLabel htmlFor=\"basic\">\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldTitle>Basic</FieldTitle>\n                        <FieldDescription>\n                          For individuals and small teams\n                        </FieldDescription>\n                      </FieldContent>\n                      <RadioGroupItem value=\"basic\" id=\"basic\" />\n                    </Field>\n                  </FieldLabel>\n                  <FieldLabel htmlFor=\"pro\">\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldTitle>Pro</FieldTitle>\n                        <FieldDescription>\n                          For businesses with higher demands\n                        </FieldDescription>\n                      </FieldContent>\n                      <RadioGroupItem value=\"pro\" id=\"pro\" />\n                    </Field>\n                  </FieldLabel>\n                </RadioGroup>\n                {formState.errors?.plan && (\n                  <FieldError>{formState.errors.plan[0]}</FieldError>\n                )}\n              </FieldSet>\n              <FieldSeparator />\n              <Field data-invalid={!!formState.errors?.billingPeriod?.length}>\n                <FieldLabel htmlFor=\"billingPeriod\">Billing Period</FieldLabel>\n                <Select\n                  name=\"billingPeriod\"\n                  defaultValue={formState.values.billingPeriod}\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.billingPeriod?.length}\n                >\n                  <SelectTrigger id=\"billingPeriod\">\n                    <SelectValue placeholder=\"Select billing period\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"monthly\">Monthly</SelectItem>\n                    <SelectItem value=\"yearly\">Yearly</SelectItem>\n                  </SelectContent>\n                </Select>\n                <FieldDescription>\n                  Choose how often you want to be billed.\n                </FieldDescription>\n                {formState.errors?.billingPeriod && (\n                  <FieldError>{formState.errors.billingPeriod[0]}</FieldError>\n                )}\n              </Field>\n              <FieldSeparator />\n              <FieldSet data-invalid={!!formState.errors?.addons?.length}>\n                <FieldLegend>Add-ons</FieldLegend>\n                <FieldDescription>\n                  Select additional features you&apos;d like to include.\n                </FieldDescription>\n                <FieldGroup data-slot=\"checkbox-group\">\n                  {addons.map((addon) => (\n                    <Field key={addon.id} orientation=\"horizontal\">\n                      <Checkbox\n                        id={addon.id}\n                        name=\"addons\"\n                        value={addon.id}\n                        defaultChecked={formState.values.addons.includes(\n                          addon.id\n                        )}\n                        disabled={pending}\n                        aria-invalid={!!formState.errors?.addons?.length}\n                      />\n                      <FieldContent>\n                        <FieldLabel htmlFor={addon.id}>\n                          {addon.title}\n                        </FieldLabel>\n                        <FieldDescription>{addon.description}</FieldDescription>\n                      </FieldContent>\n                    </Field>\n                  ))}\n                </FieldGroup>\n                {formState.errors?.addons && (\n                  <FieldError>{formState.errors.addons[0]}</FieldError>\n                )}\n              </FieldSet>\n              <FieldSeparator />\n              <Field data-invalid={!!formState.errors?.teamSize?.length}>\n                <FieldLabel htmlFor=\"teamSize\">Team Size</FieldLabel>\n                <Input\n                  id=\"teamSize\"\n                  name=\"teamSize\"\n                  type=\"number\"\n                  min=\"1\"\n                  max=\"50\"\n                  defaultValue={formState.values.teamSize.toString()}\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.teamSize?.length}\n                />\n                <FieldDescription>\n                  How many people will be using the subscription? (1-50)\n                </FieldDescription>\n                {formState.errors?.teamSize && (\n                  <FieldError>{formState.errors.teamSize[0]}</FieldError>\n                )}\n              </Field>\n              <FieldSeparator />\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"emailNotifications\">\n                    Email Notifications\n                  </FieldLabel>\n                  <FieldDescription>\n                    Receive email updates about your subscription\n                  </FieldDescription>\n                </FieldContent>\n                <Switch\n                  id=\"emailNotifications\"\n                  name=\"emailNotifications\"\n                  defaultChecked={formState.values.emailNotifications}\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.emailNotifications?.length}\n                />\n              </Field>\n              <FieldSeparator />\n              <Field data-invalid={!!formState.errors?.startDate?.length}>\n                <FieldLabel htmlFor=\"startDate\">Start Date</FieldLabel>\n                <Input\n                  id=\"startDate\"\n                  name=\"startDate\"\n                  type=\"date\"\n                  defaultValue={\n                    formState.values.startDate.toISOString().split(\"T\")[0]\n                  }\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.startDate?.length}\n                />\n                <FieldDescription>\n                  Choose when your subscription should start\n                </FieldDescription>\n                {formState.errors?.startDate && (\n                  <FieldError>{formState.errors.startDate[0]}</FieldError>\n                )}\n              </Field>\n              <FieldSeparator />\n              <Field data-invalid={!!formState.errors?.theme?.length}>\n                <FieldLabel htmlFor=\"theme\">Theme Preference</FieldLabel>\n                <Select\n                  name=\"theme\"\n                  defaultValue={formState.values.theme}\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.theme?.length}\n                >\n                  <SelectTrigger id=\"theme\">\n                    <SelectValue placeholder=\"Select theme\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"light\">Light</SelectItem>\n                    <SelectItem value=\"dark\">Dark</SelectItem>\n                    <SelectItem value=\"system\">System</SelectItem>\n                  </SelectContent>\n                </Select>\n                <FieldDescription>\n                  Choose your preferred color theme\n                </FieldDescription>\n                {formState.errors?.theme && (\n                  <FieldError>{formState.errors.theme[0]}</FieldError>\n                )}\n              </Field>\n              <FieldSeparator />\n              <Field data-invalid={!!formState.errors?.password?.length}>\n                <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                <Input\n                  id=\"password\"\n                  name=\"password\"\n                  type=\"password\"\n                  defaultValue={formState.values.password}\n                  placeholder=\"Enter your password\"\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.password?.length}\n                />\n                <FieldDescription>\n                  Must contain uppercase, lowercase, number, and be 8+\n                  characters\n                </FieldDescription>\n                {formState.errors?.password && (\n                  <FieldError>{formState.errors.password[0]}</FieldError>\n                )}\n              </Field>\n              <FieldSeparator />\n              <Field data-invalid={!!formState.errors?.comments?.length}>\n                <FieldLabel htmlFor=\"comments\">Additional Comments</FieldLabel>\n                <Textarea\n                  id=\"comments\"\n                  name=\"comments\"\n                  defaultValue={formState.values.comments}\n                  placeholder=\"Tell us more about your needs...\"\n                  rows={3}\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.comments?.length}\n                />\n                <FieldDescription>\n                  Share any additional requirements or feedback (10-240\n                  characters)\n                </FieldDescription>\n                {formState.errors?.comments && (\n                  <FieldError>{formState.errors.comments[0]}</FieldError>\n                )}\n              </Field>\n            </FieldGroup>\n          </Form>\n        </CardContent>\n        <CardFooter className=\"border-t\">\n          <Field orientation=\"horizontal\" className=\"justify-end\">\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              disabled={pending}\n              form=\"subscription-form\"\n              onClick={() => setFormKey(formKey + 1)}\n            >\n              Reset\n            </Button>\n            <Button type=\"submit\" disabled={pending} form=\"subscription-form\">\n              {pending && <Spinner />}\n              Create Subscription\n            </Button>\n          </Field>\n        </CardFooter>\n      </Card>\n      <Dialog open={showResults} onOpenChange={setShowResults}>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Subscription Created!</DialogTitle>\n            <DialogDescription>\n              Here are the details of your subscription.\n            </DialogDescription>\n          </DialogHeader>\n          <pre className=\"overflow-x-auto rounded-md bg-black p-4 font-mono text-sm text-white\">\n            <code>{JSON.stringify(formState.values, null, 2)}</code>\n          </pre>\n        </DialogContent>\n      </Dialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/next-form/page.tsx",
    "content": "import { ExampleForm } from \"@/app/(internal)/sink/(pages)/next-form/example-form\"\n\nexport default function NextFormPage() {\n  return (\n    <div className=\"flex min-h-screen items-center justify-center p-4\">\n      <ExampleForm />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/react-hook-form/example-form.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { format } from \"date-fns\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport type z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\nimport { addons, exampleFormSchema } from \"@/app/(internal)/sink/(pages)/schema\"\n\nexport function ExampleForm() {\n  const [values, setValues] = useState<z.infer<typeof exampleFormSchema>>()\n  const [open, setOpen] = useState(false)\n  const form = useForm<z.infer<typeof exampleFormSchema>>({\n    resolver: zodResolver(exampleFormSchema),\n    mode: \"onChange\",\n    defaultValues: {\n      name: \"\",\n      email: \"\",\n      plan: \"basic\" as const,\n      billingPeriod: \"\",\n      addons: [\"analytics\"],\n      emailNotifications: false,\n      teamSize: 1,\n      comments: \"\",\n      startDate: new Date(),\n      theme: \"system\",\n      password: \"\",\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof exampleFormSchema>) {\n    setValues(data)\n    setOpen(true)\n  }\n\n  return (\n    <>\n      <Card className=\"w-full max-w-sm\">\n        <CardHeader className=\"border-b\">\n          <CardTitle>React Hook Form</CardTitle>\n          <CardDescription>\n            This form uses React Hook Form with Zod validation.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form id=\"subscription-form\" onSubmit={form.handleSubmit(onSubmit)}>\n            <FieldGroup>\n              <Controller\n                name=\"name\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>Name</FieldLabel>\n                      <Input\n                        {...field}\n                        id={field.name}\n                        aria-invalid={isInvalid}\n                        autoComplete=\"off\"\n                      />\n                      <FieldDescription>Enter your name</FieldDescription>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n              <Controller\n                name=\"email\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>Email</FieldLabel>\n                      <Input\n                        {...field}\n                        type=\"email\"\n                        id={field.name}\n                        aria-invalid={isInvalid}\n                        autoComplete=\"off\"\n                      />\n                      <FieldDescription>\n                        Enter your email address\n                      </FieldDescription>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"plan\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <FieldSet data-invalid={isInvalid}>\n                      <FieldLegend>Subscription Plan</FieldLegend>\n                      <FieldDescription>\n                        Choose your subscription plan.\n                      </FieldDescription>\n                      <RadioGroup\n                        name={field.name}\n                        value={field.value}\n                        onValueChange={field.onChange}\n                        aria-invalid={isInvalid}\n                      >\n                        <FieldLabel htmlFor=\"basic\">\n                          <Field orientation=\"horizontal\">\n                            <FieldContent>\n                              <FieldTitle>Basic</FieldTitle>\n                              <FieldDescription>\n                                For individuals and small teams\n                              </FieldDescription>\n                            </FieldContent>\n                            <RadioGroupItem\n                              value=\"basic\"\n                              id=\"basic\"\n                              aria-invalid={isInvalid}\n                            />\n                          </Field>\n                        </FieldLabel>\n                        <FieldLabel htmlFor=\"pro\">\n                          <Field orientation=\"horizontal\">\n                            <FieldContent>\n                              <FieldTitle>Pro</FieldTitle>\n                              <FieldDescription>\n                                For businesses with higher demands\n                              </FieldDescription>\n                            </FieldContent>\n                            <RadioGroupItem\n                              value=\"pro\"\n                              id=\"pro\"\n                              aria-invalid={isInvalid}\n                            />\n                          </Field>\n                        </FieldLabel>\n                      </RadioGroup>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </FieldSet>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"billingPeriod\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>\n                        Billing Period\n                      </FieldLabel>\n                      <Select\n                        name={field.name}\n                        value={field.value}\n                        onValueChange={field.onChange}\n                        aria-invalid={isInvalid}\n                      >\n                        <SelectTrigger id={field.name}>\n                          <SelectValue placeholder=\"Select billing period\" />\n                        </SelectTrigger>\n                        <SelectContent>\n                          <SelectItem value=\"monthly\">Monthly</SelectItem>\n                          <SelectItem value=\"yearly\">Yearly</SelectItem>\n                        </SelectContent>\n                      </Select>\n                      <FieldDescription>\n                        Choose how often you want to be billed.\n                      </FieldDescription>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"addons\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <FieldSet data-invalid={isInvalid}>\n                      <FieldLegend>Add-ons</FieldLegend>\n                      <FieldDescription>\n                        Select additional features you&apos;d like to include.\n                      </FieldDescription>\n                      <FieldGroup data-slot=\"checkbox-group\">\n                        {addons.map((addon) => (\n                          <Field key={addon.id} orientation=\"horizontal\">\n                            <Checkbox\n                              id={addon.id}\n                              name={field.name}\n                              aria-invalid={isInvalid}\n                              checked={field.value.includes(addon.id)}\n                              onCheckedChange={(checked) => {\n                                const newValue = checked\n                                  ? [...field.value, addon.id]\n                                  : field.value.filter(\n                                      (value) => value !== addon.id\n                                    )\n                                field.onChange(newValue)\n                                field.onBlur()\n                              }}\n                            />\n                            <FieldContent>\n                              <FieldLabel htmlFor={addon.id}>\n                                {addon.title}\n                              </FieldLabel>\n                              <FieldDescription>\n                                {addon.description}\n                              </FieldDescription>\n                            </FieldContent>\n                          </Field>\n                        ))}\n                      </FieldGroup>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </FieldSet>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"teamSize\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldTitle>Team Size</FieldTitle>\n                      <FieldDescription>\n                        How many people will be using the subscription?\n                      </FieldDescription>\n                      <Slider\n                        id={field.name}\n                        name={field.name}\n                        value={[field.value]}\n                        onValueChange={field.onChange}\n                        min={1}\n                        max={50}\n                        step={1}\n                        aria-invalid={isInvalid}\n                      />\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"emailNotifications\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldLabel htmlFor={field.name}>\n                          Email Notifications\n                        </FieldLabel>\n                        <FieldDescription>\n                          Receive email updates about your subscription\n                        </FieldDescription>\n                      </FieldContent>\n                      <Switch\n                        id={field.name}\n                        name={field.name}\n                        checked={field.value}\n                        onCheckedChange={field.onChange}\n                        aria-invalid={isInvalid}\n                      />\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"startDate\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>Start Date</FieldLabel>\n                      <Popover>\n                        <PopoverTrigger asChild>\n                          <Button\n                            id={field.name}\n                            variant=\"outline\"\n                            className=\"justify-start\"\n                            aria-invalid={isInvalid}\n                          >\n                            {field.value ? (\n                              format(field.value, \"PPP\")\n                            ) : (\n                              <span>Pick a date</span>\n                            )}\n                          </Button>\n                        </PopoverTrigger>\n                        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                          <Calendar\n                            required\n                            mode=\"single\"\n                            selected={field.value}\n                            onSelect={field.onChange}\n                          />\n                        </PopoverContent>\n                      </Popover>\n                      <FieldDescription>\n                        Choose when your subscription should start\n                      </FieldDescription>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"theme\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldTitle>Theme Preference</FieldTitle>\n                      <ToggleGroup\n                        type=\"single\"\n                        variant=\"outline\"\n                        value={field.value}\n                        onValueChange={(value) =>\n                          value && field.onChange(value)\n                        }\n                        aria-invalid={isInvalid}\n                      >\n                        <ToggleGroupItem value=\"light\">Light</ToggleGroupItem>\n                        <ToggleGroupItem value=\"dark\">Dark</ToggleGroupItem>\n                        <ToggleGroupItem value=\"system\">System</ToggleGroupItem>\n                      </ToggleGroup>\n                      <FieldDescription>\n                        Choose your preferred color theme\n                      </FieldDescription>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"password\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>Password</FieldLabel>\n                      <Input\n                        {...field}\n                        type=\"password\"\n                        placeholder=\"Enter your password\"\n                        id={field.name}\n                        aria-invalid={isInvalid}\n                      />\n                      <FieldDescription>\n                        Must contain uppercase, lowercase, number, and be 8+\n                        characters\n                      </FieldDescription>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <Controller\n                name=\"comments\"\n                control={form.control}\n                render={({ field, fieldState }) => {\n                  const isInvalid = fieldState.invalid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>\n                        Additional Comments\n                      </FieldLabel>\n                      <Textarea\n                        {...field}\n                        id={field.name}\n                        placeholder=\"Tell us more about your needs...\"\n                        rows={3}\n                        aria-invalid={isInvalid}\n                      />\n                      <FieldDescription>\n                        Share any additional requirements or feedback (10-240\n                        characters)\n                      </FieldDescription>\n                      {isInvalid && <FieldError errors={[fieldState.error]} />}\n                    </Field>\n                  )\n                }}\n              />\n            </FieldGroup>\n          </form>\n        </CardContent>\n        <CardFooter className=\"border-t\">\n          <Field orientation=\"horizontal\" className=\"justify-end\">\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={() => form.reset()}\n            >\n              Reset\n            </Button>\n            <Button type=\"submit\" form=\"subscription-form\">\n              Submit\n            </Button>\n          </Field>\n        </CardFooter>\n      </Card>\n      <Dialog open={open} onOpenChange={setOpen}>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Submitted Values</DialogTitle>\n            <DialogDescription>\n              Here are the values you submitted.\n            </DialogDescription>\n          </DialogHeader>\n          <pre className=\"overflow-x-auto rounded-md bg-black p-4 font-mono text-sm text-white\">\n            <code>{JSON.stringify(values, null, 2)}</code>\n          </pre>\n        </DialogContent>\n      </Dialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/react-hook-form/page.tsx",
    "content": "import { ExampleForm } from \"@/app/(internal)/sink/(pages)/react-hook-form/example-form\"\n\nexport default function ReactHookFormPage() {\n  return (\n    <div className=\"flex min-h-screen items-center justify-center p-4\">\n      <ExampleForm />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/schema.ts",
    "content": "import { z } from \"zod\"\n\nexport const addons = [\n  {\n    id: \"analytics\",\n    title: \"Analytics\",\n    description: \"Advanced analytics and reporting\",\n  },\n  {\n    id: \"backup\",\n    title: \"Backup\",\n    description: \"Automated daily backups\",\n  },\n  {\n    id: \"support\",\n    title: \"Priority Support\",\n    description: \"24/7 premium customer support\",\n  },\n] as const\n\nexport const exampleFormSchema = z.object({\n  name: z\n    .string({\n      required_error: \"Name is required\",\n      invalid_type_error: \"Name must be a string\",\n    })\n    .min(2, \"Name must be at least 2 characters\")\n    .max(50, \"Name must be less than 50 characters\")\n    .refine((value) => !/\\d/.test(value), {\n      message: \"Name must not contain numbers\",\n    }),\n\n  email: z\n    .string({\n      required_error: \"Email is required\",\n    })\n    .email(\"Please enter a valid email address\"),\n\n  plan: z\n    .string({\n      required_error: \"Please select a subscription plan\",\n    })\n    .min(1, \"Please select a subscription plan\")\n    .refine((value) => value === \"basic\" || value === \"pro\", {\n      message: \"Invalid plan selection. Please choose Basic or Pro\",\n    }),\n\n  billingPeriod: z\n    .string({\n      required_error: \"Please select a billing period\",\n    })\n    .min(1, \"Please select a billing period\"),\n\n  addons: z\n    .array(z.string())\n    .min(1, \"Please select at least one add-on\")\n    .max(3, \"You can select up to 3 add-ons\"),\n\n  teamSize: z.number().min(1).max(10),\n  emailNotifications: z.boolean({\n    required_error: \"Please choose email notification preference\",\n  }),\n  comments: z\n    .string()\n    .min(10, \"Comments must be at least 10 characters\")\n    .max(240, \"Comments must not exceed 240 characters\"),\n  startDate: z\n    .date({\n      required_error: \"Please select a start date\",\n      invalid_type_error: \"Invalid date format\",\n    })\n    .min(new Date(), \"Start date cannot be in the past\")\n    .refine(\n      (date) => {\n        const now = new Date()\n        const oneWeekFromNow = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000)\n        return date <= oneWeekFromNow\n      },\n      {\n        message: \"Start date must be within the current week\",\n      }\n    ),\n  theme: z\n    .string({\n      required_error: \"Please select a theme\",\n    })\n    .min(1, \"Please select a theme\"),\n  password: z\n    .string({\n      required_error: \"Password is required\",\n    })\n    .min(8, \"Password must be at least 8 characters\")\n    .regex(\n      /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)/,\n      \"Password must contain at least one uppercase letter, one lowercase letter, and one number\"\n    ),\n})\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/tanstack-form/example-form.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport * as React from \"react\"\nimport { useForm } from \"@tanstack/react-form\"\nimport { format } from \"date-fns\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\nimport { addons, exampleFormSchema } from \"@/app/(internal)/sink/(pages)/schema\"\n\nexport function ExampleForm() {\n  const form = useForm({\n    defaultValues: {\n      name: \"\",\n      email: \"\",\n      plan: \"\",\n      billingPeriod: \"\",\n      addons: [\"analytics\"],\n      emailNotifications: false,\n      teamSize: 1,\n      comments: \"\",\n      startDate: new Date(),\n      theme: \"system\",\n      password: \"\",\n    },\n    validators: {\n      onBlur: exampleFormSchema,\n    },\n    onSubmit: async ({ value }) => {\n      setValues(value)\n      setOpen(true)\n    },\n  })\n  const [values, setValues] = React.useState<typeof form.state.values>()\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <>\n      <Card className=\"w-full max-w-sm\">\n        <CardHeader className=\"border-b\">\n          <CardTitle>Example Form</CardTitle>\n          <CardDescription>\n            This is an example form using TanStack Form.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form\n            id=\"example-form\"\n            onSubmit={(e) => {\n              e.preventDefault()\n              e.stopPropagation()\n              void form.handleSubmit()\n            }}\n          >\n            <FieldGroup>\n              <form.Field\n                name=\"name\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>Name</FieldLabel>\n                      <Input\n                        id={field.name}\n                        name={field.name}\n                        value={field.state.value}\n                        onBlur={field.handleBlur}\n                        onChange={(e) => field.handleChange(e.target.value)}\n                        aria-invalid={isInvalid}\n                        autoComplete=\"off\"\n                      />\n                      <FieldDescription>Enter your name</FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n              <form.Field\n                name=\"email\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>Email</FieldLabel>\n                      <Input\n                        id={field.name}\n                        name={field.name}\n                        type=\"email\"\n                        value={field.state.value}\n                        onBlur={field.handleBlur}\n                        onChange={(e) => field.handleChange(e.target.value)}\n                        aria-invalid={isInvalid}\n                        autoComplete=\"off\"\n                      />\n                      <FieldDescription>\n                        Enter your email address\n                      </FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"plan\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <FieldSet data-invalid={isInvalid}>\n                      <FieldLegend>Subscription Plan</FieldLegend>\n                      <FieldDescription>\n                        Choose your subscription plan.\n                      </FieldDescription>\n                      <RadioGroup\n                        name={field.name}\n                        value={field.state.value}\n                        onValueChange={field.handleChange}\n                        aria-invalid={isInvalid}\n                      >\n                        <FieldLabel htmlFor=\"basic\">\n                          <Field orientation=\"horizontal\">\n                            <FieldContent>\n                              <FieldTitle>Basic</FieldTitle>\n                              <FieldDescription>\n                                For individuals and small teams\n                              </FieldDescription>\n                            </FieldContent>\n                            <RadioGroupItem\n                              value=\"basic\"\n                              id=\"basic\"\n                              aria-invalid={isInvalid}\n                            />\n                          </Field>\n                        </FieldLabel>\n                        <FieldLabel htmlFor=\"pro\">\n                          <Field orientation=\"horizontal\">\n                            <FieldContent>\n                              <FieldTitle>Pro</FieldTitle>\n                              <FieldDescription>\n                                For businesses with higher demands\n                              </FieldDescription>\n                            </FieldContent>\n                            <RadioGroupItem\n                              value=\"pro\"\n                              id=\"pro\"\n                              aria-invalid={isInvalid}\n                            />\n                          </Field>\n                        </FieldLabel>\n                      </RadioGroup>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </FieldSet>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"billingPeriod\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>\n                        Billing Period\n                      </FieldLabel>\n                      <Select\n                        name={field.name}\n                        value={field.state.value}\n                        onValueChange={field.handleChange}\n                        aria-invalid={isInvalid}\n                      >\n                        <SelectTrigger id={field.name}>\n                          <SelectValue placeholder=\"Select billing period\" />\n                        </SelectTrigger>\n                        <SelectContent>\n                          <SelectItem value=\"monthly\">Monthly</SelectItem>\n                          <SelectItem value=\"yearly\">Yearly</SelectItem>\n                        </SelectContent>\n                      </Select>\n                      <FieldDescription>\n                        Choose how often you want to be billed.\n                      </FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"addons\"\n                mode=\"array\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <FieldSet data-invalid={isInvalid}>\n                      <FieldLegend>Add-ons</FieldLegend>\n                      <FieldDescription>\n                        Select additional features you&apos;d like to include.\n                      </FieldDescription>\n                      <FieldGroup data-slot=\"checkbox-group\">\n                        {addons.map((addon) => (\n                          <Field key={addon.id} orientation=\"horizontal\">\n                            <Checkbox\n                              id={addon.id}\n                              name={field.name}\n                              aria-invalid={isInvalid}\n                              checked={field.state.value.includes(addon.id)}\n                              onCheckedChange={(checked) => {\n                                if (checked) {\n                                  field.pushValue(addon.id)\n                                } else {\n                                  const index = field.state.value.indexOf(\n                                    addon.id\n                                  )\n                                  if (index > -1) {\n                                    field.removeValue(index)\n                                  }\n                                }\n                              }}\n                            />\n                            <FieldContent>\n                              <FieldLabel htmlFor={addon.id}>\n                                {addon.title}\n                              </FieldLabel>\n                              <FieldDescription>\n                                {addon.description}\n                              </FieldDescription>\n                            </FieldContent>\n                          </Field>\n                        ))}\n                      </FieldGroup>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </FieldSet>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"teamSize\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldTitle>Team Size</FieldTitle>\n                      <FieldDescription>\n                        How many people will be using the subscription?\n                      </FieldDescription>\n                      <Slider\n                        id={field.name}\n                        name={field.name}\n                        value={[field.state.value]}\n                        onValueChange={(value) => field.handleChange(value[0])}\n                        min={1}\n                        max={50}\n                        step={10}\n                      />\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"emailNotifications\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldLabel htmlFor={field.name}>\n                          Email Notifications\n                        </FieldLabel>\n                        <FieldDescription>\n                          Receive email updates about your subscription\n                        </FieldDescription>\n                      </FieldContent>\n                      <Switch\n                        id={field.name}\n                        name={field.name}\n                        checked={field.state.value}\n                        onCheckedChange={field.handleChange}\n                      />\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"startDate\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>Start Date</FieldLabel>\n                      <Popover>\n                        <PopoverTrigger asChild>\n                          <Button\n                            id={field.name}\n                            variant=\"outline\"\n                            className=\"justify-start\"\n                          >\n                            {field.state.value ? (\n                              format(field.state.value, \"PPP\")\n                            ) : (\n                              <span>Pick a date</span>\n                            )}\n                          </Button>\n                        </PopoverTrigger>\n                        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                          <Calendar\n                            required\n                            mode=\"single\"\n                            selected={field.state.value}\n                            onSelect={field.handleChange}\n                          />\n                        </PopoverContent>\n                      </Popover>\n                      <FieldDescription>\n                        Choose when your subscription should start\n                      </FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"theme\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldTitle>Theme Preference</FieldTitle>\n                      <ToggleGroup\n                        id={field.name}\n                        type=\"single\"\n                        variant=\"outline\"\n                        value={field.state.value}\n                        onValueChange={(value) =>\n                          value && field.handleChange(value)\n                        }\n                        aria-invalid={isInvalid}\n                      >\n                        <ToggleGroupItem value=\"light\">Light</ToggleGroupItem>\n                        <ToggleGroupItem value=\"dark\">Dark</ToggleGroupItem>\n                        <ToggleGroupItem value=\"system\">System</ToggleGroupItem>\n                      </ToggleGroup>\n                      <FieldDescription>\n                        Choose your preferred color theme\n                      </FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"password\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>Password</FieldLabel>\n                      <Input\n                        id={field.name}\n                        name={field.name}\n                        type=\"password\"\n                        value={field.state.value}\n                        onChange={(e) => field.handleChange(e.target.value)}\n                        onBlur={field.handleBlur}\n                        placeholder=\"Enter your password\"\n                        aria-invalid={isInvalid}\n                      />\n                      <FieldDescription>\n                        Must contain uppercase, lowercase, number, and be 8+\n                        characters\n                      </FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n              <FieldSeparator />\n              <form.Field\n                name=\"comments\"\n                children={(field) => {\n                  const isInvalid =\n                    field.state.meta.isTouched && !field.state.meta.isValid\n                  return (\n                    <Field data-invalid={isInvalid}>\n                      <FieldLabel htmlFor={field.name}>\n                        Additional Comments\n                      </FieldLabel>\n                      <Textarea\n                        id={field.name}\n                        name={field.name}\n                        value={field.state.value}\n                        onChange={(e) => field.handleChange(e.target.value)}\n                        onBlur={field.handleBlur}\n                        placeholder=\"Tell us more about your needs...\"\n                        rows={3}\n                        aria-invalid={isInvalid}\n                      />\n                      <FieldDescription>\n                        Share any additional requirements or feedback (10-240\n                        characters)\n                      </FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </Field>\n                  )\n                }}\n              />\n            </FieldGroup>\n          </form>\n        </CardContent>\n        <CardFooter className=\"border-t\">\n          <Field orientation=\"horizontal\" className=\"justify-end\">\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={() => form.reset()}\n            >\n              Reset\n            </Button>\n            <Button type=\"submit\" form=\"example-form\">\n              Submit\n            </Button>\n          </Field>\n        </CardFooter>\n      </Card>\n      <Dialog open={open} onOpenChange={setOpen}>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Submitted Values</DialogTitle>\n            <DialogDescription>\n              Here are the values you submitted.\n            </DialogDescription>\n          </DialogHeader>\n          <pre className=\"overflow-x-auto rounded-md bg-black p-4 font-mono text-sm text-white\">\n            <code>{JSON.stringify(values, null, 2)}</code>\n          </pre>\n        </DialogContent>\n      </Dialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/(pages)/tanstack-form/page.tsx",
    "content": "import { ExampleForm } from \"@/app/(internal)/sink/(pages)/tanstack-form/example-form\"\n\nexport default function TanstackFormPage() {\n  return (\n    <div className=\"flex min-h-screen items-center justify-center p-4\">\n      <ExampleForm />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/[name]/page.tsx",
    "content": "import { type Metadata } from \"next\"\nimport { notFound } from \"next/navigation\"\n\nimport { componentRegistry } from \"@/app/(internal)/sink/component-registry\"\n\nexport const dynamic = \"force-static\"\nexport const revalidate = false\n\nexport async function generateStaticParams() {\n  return Object.keys(componentRegistry).map((name) => ({\n    name,\n  }))\n}\n\nexport async function generateMetadata({\n  params,\n}: {\n  params: Promise<{ name: string }>\n}): Promise<Metadata> {\n  const { name } = await params\n  const component = componentRegistry[name as keyof typeof componentRegistry]\n\n  if (!component) {\n    return {\n      title: \"Component Not Found\",\n    }\n  }\n\n  return {\n    title: `${component.name} - Kitchen Sink`,\n    description: `Demo page for ${component.name} component`,\n  }\n}\n\nexport default async function ComponentPage({\n  params,\n}: {\n  params: Promise<{ name: string }>\n}) {\n  const { name } = await params\n  const component = componentRegistry[name as keyof typeof componentRegistry]\n\n  if (!component) {\n    notFound()\n  }\n\n  const Component = component.component\n\n  return (\n    <div className=\"p-6\">\n      <Component />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/component-registry.ts",
    "content": "import FormsPage from \"@/app/(internal)/sink/(pages)/forms/page\"\n\nimport NextFormPage from \"./(pages)/next-form/page\"\nimport ReactHookFormPage from \"./(pages)/react-hook-form/page\"\nimport TanstackFormPage from \"./(pages)/tanstack-form/page\"\nimport { AccordionDemo } from \"./components/accordion-demo\"\nimport { AlertDemo } from \"./components/alert-demo\"\nimport { AlertDialogDemo } from \"./components/alert-dialog-demo\"\nimport { AspectRatioDemo } from \"./components/aspect-ratio-demo\"\nimport { AvatarDemo } from \"./components/avatar-demo\"\nimport { BadgeDemo } from \"./components/badge-demo\"\nimport { BreadcrumbDemo } from \"./components/breadcrumb-demo\"\nimport { ButtonDemo } from \"./components/button-demo\"\nimport { ButtonGroupDemo } from \"./components/button-group-demo\"\nimport { CalendarDemo } from \"./components/calendar-demo\"\nimport { CardDemo } from \"./components/card-demo\"\nimport { CarouselDemo } from \"./components/carousel-demo\"\nimport { ChartDemo } from \"./components/chart-demo\"\nimport { CheckboxDemo } from \"./components/checkbox-demo\"\nimport { CollapsibleDemo } from \"./components/collapsible-demo\"\nimport { ComboboxDemo } from \"./components/combobox-demo\"\nimport { CommandDemo } from \"./components/command-demo\"\nimport { ContextMenuDemo } from \"./components/context-menu-demo\"\nimport { DatePickerDemo } from \"./components/date-picker-demo\"\nimport { DialogDemo } from \"./components/dialog-demo\"\nimport { DrawerDemo } from \"./components/drawer-demo\"\nimport { DropdownMenuDemo } from \"./components/dropdown-menu-demo\"\nimport { EmptyDemo } from \"./components/empty-demo\"\nimport { FieldDemo } from \"./components/field-demo\"\nimport { FormDemo } from \"./components/form-demo\"\nimport { HoverCardDemo } from \"./components/hover-card-demo\"\nimport { InputDemo } from \"./components/input-demo\"\nimport { InputGroupDemo } from \"./components/input-group-demo\"\nimport { InputOTPDemo } from \"./components/input-otp-demo\"\nimport { ItemDemo } from \"./components/item-demo\"\nimport { KbdDemo } from \"./components/kbd-demo\"\nimport { LabelDemo } from \"./components/label-demo\"\nimport { MenubarDemo } from \"./components/menubar-demo\"\nimport { NativeSelectDemo } from \"./components/native-select-demo\"\nimport { NavigationMenuDemo } from \"./components/navigation-menu-demo\"\nimport { PaginationDemo } from \"./components/pagination-demo\"\nimport { PopoverDemo } from \"./components/popover-demo\"\nimport { ProgressDemo } from \"./components/progress-demo\"\nimport { RadioGroupDemo } from \"./components/radio-group-demo\"\nimport { ResizableDemo } from \"./components/resizable-demo\"\nimport { ScrollAreaDemo } from \"./components/scroll-area-demo\"\nimport { SelectDemo } from \"./components/select-demo\"\nimport { SeparatorDemo } from \"./components/separator-demo\"\nimport { SheetDemo } from \"./components/sheet-demo\"\nimport { SkeletonDemo } from \"./components/skeleton-demo\"\nimport { SliderDemo } from \"./components/slider-demo\"\nimport { SonnerDemo } from \"./components/sonner-demo\"\nimport { SpinnerDemo } from \"./components/spinner-demo\"\nimport { SwitchDemo } from \"./components/switch-demo\"\nimport { TableDemo } from \"./components/table-demo\"\nimport { TabsDemo } from \"./components/tabs-demo\"\nimport { TextareaDemo } from \"./components/textarea-demo\"\nimport { ToggleDemo } from \"./components/toggle-demo\"\nimport { ToggleGroupDemo } from \"./components/toggle-group-demo\"\nimport { TooltipDemo } from \"./components/tooltip-demo\"\n\ntype ComponentConfig = {\n  name: string\n  component: React.ComponentType\n  className?: string\n  type: \"registry:ui\" | \"registry:page\" | \"registry:block\"\n  href: string\n  label?: string\n}\n\nexport const componentRegistry: Record<string, ComponentConfig> = {\n  accordion: {\n    name: \"Accordion\",\n    component: AccordionDemo,\n    type: \"registry:ui\",\n    href: \"/sink/accordion\",\n  },\n  alert: {\n    name: \"Alert\",\n    component: AlertDemo,\n    type: \"registry:ui\",\n    href: \"/sink/alert\",\n  },\n  \"alert-dialog\": {\n    name: \"Alert Dialog\",\n    component: AlertDialogDemo,\n    type: \"registry:ui\",\n    href: \"/sink/alert-dialog\",\n  },\n  \"aspect-ratio\": {\n    name: \"Aspect Ratio\",\n    component: AspectRatioDemo,\n    type: \"registry:ui\",\n    href: \"/sink/aspect-ratio\",\n  },\n  avatar: {\n    name: \"Avatar\",\n    component: AvatarDemo,\n    type: \"registry:ui\",\n    href: \"/sink/avatar\",\n  },\n  badge: {\n    name: \"Badge\",\n    component: BadgeDemo,\n    type: \"registry:ui\",\n    href: \"/sink/badge\",\n  },\n  breadcrumb: {\n    name: \"Breadcrumb\",\n    component: BreadcrumbDemo,\n    type: \"registry:ui\",\n    href: \"/sink/breadcrumb\",\n  },\n  button: {\n    name: \"Button\",\n    component: ButtonDemo,\n    type: \"registry:ui\",\n    href: \"/sink/button\",\n  },\n  \"button-group\": {\n    name: \"Button Group\",\n    component: ButtonGroupDemo,\n    type: \"registry:ui\",\n    href: \"/sink/button-group\",\n    label: \"New\",\n  },\n  calendar: {\n    name: \"Calendar\",\n    component: CalendarDemo,\n    type: \"registry:ui\",\n    href: \"/sink/calendar\",\n  },\n  card: {\n    name: \"Card\",\n    component: CardDemo,\n    type: \"registry:ui\",\n    href: \"/sink/card\",\n  },\n  carousel: {\n    name: \"Carousel\",\n    component: CarouselDemo,\n    type: \"registry:ui\",\n    href: \"/sink/carousel\",\n  },\n  chart: {\n    name: \"Chart\",\n    component: ChartDemo,\n    className: \"w-full\",\n    type: \"registry:ui\",\n    href: \"/sink/chart\",\n  },\n  checkbox: {\n    name: \"Checkbox\",\n    component: CheckboxDemo,\n    type: \"registry:ui\",\n    href: \"/sink/checkbox\",\n  },\n  collapsible: {\n    name: \"Collapsible\",\n    component: CollapsibleDemo,\n    type: \"registry:ui\",\n    href: \"/sink/collapsible\",\n  },\n  combobox: {\n    name: \"Combobox\",\n    component: ComboboxDemo,\n    type: \"registry:ui\",\n    href: \"/sink/combobox\",\n  },\n  command: {\n    name: \"Command\",\n    component: CommandDemo,\n    type: \"registry:ui\",\n    href: \"/sink/command\",\n  },\n  \"context-menu\": {\n    name: \"Context Menu\",\n    component: ContextMenuDemo,\n    type: \"registry:ui\",\n    href: \"/sink/context-menu\",\n  },\n  \"date-picker\": {\n    name: \"Date Picker\",\n    component: DatePickerDemo,\n    type: \"registry:ui\",\n    href: \"/sink/date-picker\",\n  },\n  dialog: {\n    name: \"Dialog\",\n    component: DialogDemo,\n    type: \"registry:ui\",\n    href: \"/sink/dialog\",\n  },\n  drawer: {\n    name: \"Drawer\",\n    component: DrawerDemo,\n    type: \"registry:ui\",\n    href: \"/sink/drawer\",\n  },\n  \"dropdown-menu\": {\n    name: \"Dropdown Menu\",\n    component: DropdownMenuDemo,\n    type: \"registry:ui\",\n    href: \"/sink/dropdown-menu\",\n  },\n  empty: {\n    name: \"Empty\",\n    component: EmptyDemo,\n    type: \"registry:ui\",\n    href: \"/sink/empty\",\n    label: \"New\",\n  },\n  field: {\n    name: \"Field\",\n    component: FieldDemo,\n    type: \"registry:ui\",\n    href: \"/sink/field\",\n    label: \"New\",\n  },\n  form: {\n    name: \"Form\",\n    component: FormDemo,\n    type: \"registry:ui\",\n    href: \"/sink/form\",\n  },\n  \"hover-card\": {\n    name: \"Hover Card\",\n    component: HoverCardDemo,\n    type: \"registry:ui\",\n    href: \"/sink/hover-card\",\n  },\n  input: {\n    name: \"Input\",\n    component: InputDemo,\n    type: \"registry:ui\",\n    href: \"/sink/input\",\n  },\n  \"input-group\": {\n    name: \"Input Group\",\n    component: InputGroupDemo,\n    type: \"registry:ui\",\n    href: \"/sink/input-group\",\n    label: \"New\",\n  },\n  \"input-otp\": {\n    name: \"Input OTP\",\n    component: InputOTPDemo,\n    type: \"registry:ui\",\n    href: \"/sink/input-otp\",\n  },\n  item: {\n    name: \"Item\",\n    component: ItemDemo,\n    type: \"registry:ui\",\n    href: \"/sink/item\",\n    label: \"New\",\n  },\n  kbd: {\n    name: \"Kbd\",\n    component: KbdDemo,\n    type: \"registry:ui\",\n    href: \"/sink/kbd\",\n    label: \"New\",\n  },\n  label: {\n    name: \"Label\",\n    component: LabelDemo,\n    type: \"registry:ui\",\n    href: \"/sink/label\",\n  },\n  menubar: {\n    name: \"Menubar\",\n    component: MenubarDemo,\n    type: \"registry:ui\",\n    href: \"/sink/menubar\",\n  },\n  \"navigation-menu\": {\n    name: \"Navigation Menu\",\n    component: NavigationMenuDemo,\n    type: \"registry:ui\",\n    href: \"/sink/navigation-menu\",\n  },\n  \"native-select\": {\n    name: \"Native Select\",\n    component: NativeSelectDemo,\n    type: \"registry:ui\",\n    href: \"/sink/native-select\",\n    label: \"New\",\n  },\n  pagination: {\n    name: \"Pagination\",\n    component: PaginationDemo,\n    type: \"registry:ui\",\n    href: \"/sink/pagination\",\n  },\n  popover: {\n    name: \"Popover\",\n    component: PopoverDemo,\n    type: \"registry:ui\",\n    href: \"/sink/popover\",\n  },\n  progress: {\n    name: \"Progress\",\n    component: ProgressDemo,\n    type: \"registry:ui\",\n    href: \"/sink/progress\",\n  },\n  \"radio-group\": {\n    name: \"Radio Group\",\n    component: RadioGroupDemo,\n    type: \"registry:ui\",\n    href: \"/sink/radio-group\",\n  },\n  resizable: {\n    name: \"Resizable\",\n    component: ResizableDemo,\n    type: \"registry:ui\",\n    href: \"/sink/resizable\",\n  },\n  \"scroll-area\": {\n    name: \"Scroll Area\",\n    component: ScrollAreaDemo,\n    type: \"registry:ui\",\n    href: \"/sink/scroll-area\",\n  },\n  select: {\n    name: \"Select\",\n    component: SelectDemo,\n    type: \"registry:ui\",\n    href: \"/sink/select\",\n  },\n  separator: {\n    name: \"Separator\",\n    component: SeparatorDemo,\n    type: \"registry:ui\",\n    href: \"/sink/separator\",\n  },\n  sheet: {\n    name: \"Sheet\",\n    component: SheetDemo,\n    type: \"registry:ui\",\n    href: \"/sink/sheet\",\n  },\n  skeleton: {\n    name: \"Skeleton\",\n    component: SkeletonDemo,\n    type: \"registry:ui\",\n    href: \"/sink/skeleton\",\n  },\n  slider: {\n    name: \"Slider\",\n    component: SliderDemo,\n    type: \"registry:ui\",\n    href: \"/sink/slider\",\n  },\n  sonner: {\n    name: \"Sonner\",\n    component: SonnerDemo,\n    type: \"registry:ui\",\n    href: \"/sink/sonner\",\n  },\n  spinner: {\n    name: \"Spinner\",\n    component: SpinnerDemo,\n    type: \"registry:ui\",\n    href: \"/sink/spinner\",\n    label: \"New\",\n  },\n  switch: {\n    name: \"Switch\",\n    component: SwitchDemo,\n    type: \"registry:ui\",\n    href: \"/sink/switch\",\n  },\n  table: {\n    name: \"Table\",\n    component: TableDemo,\n    type: \"registry:ui\",\n    href: \"/sink/table\",\n  },\n  tabs: {\n    name: \"Tabs\",\n    component: TabsDemo,\n    type: \"registry:ui\",\n    href: \"/sink/tabs\",\n  },\n  textarea: {\n    name: \"Textarea\",\n    component: TextareaDemo,\n    type: \"registry:ui\",\n    href: \"/sink/textarea\",\n  },\n  toggle: {\n    name: \"Toggle\",\n    component: ToggleDemo,\n    type: \"registry:ui\",\n    href: \"/sink/toggle\",\n  },\n  \"toggle-group\": {\n    name: \"Toggle Group\",\n    component: ToggleGroupDemo,\n    type: \"registry:ui\",\n    href: \"/sink/toggle-group\",\n  },\n  tooltip: {\n    name: \"Tooltip\",\n    component: TooltipDemo,\n    type: \"registry:ui\",\n    href: \"/sink/tooltip\",\n  },\n  blocks: {\n    name: \"Forms\",\n    component: FormsPage,\n    type: \"registry:page\",\n    href: \"/sink/forms\",\n  },\n  \"next-form\": {\n    name: \"Next.js Form\",\n    component: NextFormPage,\n    type: \"registry:page\",\n    href: \"/sink/next-form\",\n  },\n  \"tanstack-form\": {\n    name: \"Tanstack Form\",\n    component: TanstackFormPage,\n    type: \"registry:page\",\n    href: \"/sink/tanstack-form\",\n  },\n  \"react-hook-form\": {\n    name: \"React Hook Form\",\n    component: ReactHookFormPage,\n    type: \"registry:page\",\n    href: \"/sink/react-hook-form\",\n  },\n}\n\nexport type ComponentKey = keyof typeof componentRegistry\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/accordion-demo.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/registry/new-york-v4/ui/accordion\"\n\nexport function AccordionDemo() {\n  return (\n    <div className=\"grid w-full max-w-xl gap-4\">\n      <Accordion type=\"single\" collapsible className=\"w-full\">\n        <AccordionItem value=\"item-1\">\n          <AccordionTrigger>Is it accessible?</AccordionTrigger>\n          <AccordionContent>\n            Yes. It adheres to the WAI-ARIA design pattern.\n          </AccordionContent>\n        </AccordionItem>\n        <AccordionItem value=\"item-2\">\n          <AccordionTrigger>Is it styled?</AccordionTrigger>\n          <AccordionContent>\n            Yes. It comes with default styles that matches the other\n            components&apos; aesthetic.\n          </AccordionContent>\n        </AccordionItem>\n        <AccordionItem value=\"item-3\">\n          <AccordionTrigger>Is it animated?</AccordionTrigger>\n          <AccordionContent>\n            Yes. It&apos;s animated by default, but you can disable it if you\n            prefer.\n          </AccordionContent>\n        </AccordionItem>\n      </Accordion>\n      <Accordion type=\"single\" collapsible className=\"w-full\">\n        <AccordionItem value=\"item-1\">\n          <AccordionTrigger>\n            What are the key considerations when implementing a comprehensive\n            enterprise-level authentication system?\n          </AccordionTrigger>\n          <AccordionContent>\n            Implementing a robust enterprise authentication system requires\n            careful consideration of multiple factors. This includes secure\n            password hashing and storage, multi-factor authentication (MFA)\n            implementation, session management, OAuth2 and SSO integration,\n            regular security audits, rate limiting to prevent brute force\n            attacks, and maintaining detailed audit logs. Additionally,\n            you&apos;ll need to consider scalability, performance impact, and\n            compliance with relevant data protection regulations such as GDPR or\n            HIPAA.\n          </AccordionContent>\n        </AccordionItem>\n        <AccordionItem value=\"item-2\">\n          <AccordionTrigger>\n            How does modern distributed system architecture handle eventual\n            consistency and data synchronization across multiple regions?\n          </AccordionTrigger>\n          <AccordionContent>\n            Modern distributed systems employ various strategies to maintain\n            data consistency across regions. This often involves using\n            techniques like CRDT (Conflict-Free Replicated Data Types), vector\n            clocks, and gossip protocols. Systems might implement event sourcing\n            patterns, utilize message queues for asynchronous updates, and\n            employ sophisticated conflict resolution strategies. Popular\n            solutions like Amazon&apos;s DynamoDB and Google&apos;s Spanner\n            demonstrate different approaches to solving these challenges,\n            balancing between consistency, availability, and partition tolerance\n            as described in the CAP theorem.\n          </AccordionContent>\n        </AccordionItem>\n      </Accordion>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/alert-demo.tsx",
    "content": "import {\n  AlertCircleIcon,\n  BookmarkCheckIcon,\n  CheckCircle2Icon,\n  GiftIcon,\n  PopcornIcon,\n  ShieldAlertIcon,\n} from \"lucide-react\"\n\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/new-york-v4/ui/alert\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function AlertDemo() {\n  return (\n    <div className=\"grid max-w-xl items-start gap-4\">\n      <Alert>\n        <CheckCircle2Icon />\n        <AlertTitle>Success! Your changes have been saved</AlertTitle>\n        <AlertDescription>\n          This is an alert with icon, title and description.\n        </AlertDescription>\n      </Alert>\n      <Alert>\n        <BookmarkCheckIcon>Heads up!</BookmarkCheckIcon>\n        <AlertDescription>\n          This one has an icon and a description only. No title.\n        </AlertDescription>\n      </Alert>\n      <Alert>\n        <AlertDescription>\n          This one has a description only. No title. No icon.\n        </AlertDescription>\n      </Alert>\n      <Alert>\n        <PopcornIcon />\n        <AlertTitle>Let&apos;s try one with icon and title.</AlertTitle>\n      </Alert>\n      <Alert>\n        <ShieldAlertIcon />\n        <AlertTitle>\n          This is a very long alert title that demonstrates how the component\n          handles extended text content and potentially wraps across multiple\n          lines\n        </AlertTitle>\n      </Alert>\n      <Alert>\n        <GiftIcon />\n        <AlertDescription>\n          This is a very long alert description that demonstrates how the\n          component handles extended text content and potentially wraps across\n          multiple lines\n        </AlertDescription>\n      </Alert>\n      <Alert>\n        <AlertCircleIcon />\n        <AlertTitle>\n          This is an extremely long alert title that spans multiple lines to\n          demonstrate how the component handles very lengthy headings while\n          maintaining readability and proper text wrapping behavior\n        </AlertTitle>\n        <AlertDescription>\n          This is an equally long description that contains detailed information\n          about the alert. It shows how the component can accommodate extensive\n          content while preserving proper spacing, alignment, and readability\n          across different screen sizes and viewport widths. This helps ensure\n          the user experience remains consistent regardless of the content\n          length.\n        </AlertDescription>\n      </Alert>\n      <Alert variant=\"destructive\">\n        <AlertCircleIcon />\n        <AlertTitle>Something went wrong!</AlertTitle>\n        <AlertDescription>\n          Your session has expired. Please log in again.\n        </AlertDescription>\n      </Alert>\n      <Alert variant=\"destructive\">\n        <AlertCircleIcon />\n        <AlertTitle>Unable to process your payment.</AlertTitle>\n        <AlertDescription>\n          <p>Please verify your billing information and try again.</p>\n          <ul className=\"list-inside list-disc text-sm\">\n            <li>Check your card details</li>\n            <li>Ensure sufficient funds</li>\n            <li>Verify billing address</li>\n          </ul>\n        </AlertDescription>\n      </Alert>\n      <Alert>\n        <CheckCircle2Icon />\n        <AlertTitle className=\"max-w-[calc(100%-4rem)] overflow-ellipsis\">\n          The selected emails have been marked as spam.\n        </AlertTitle>\n        <Button\n          size=\"sm\"\n          variant=\"outline\"\n          className=\"absolute top-2.5 right-3 h-6 shadow-none\"\n        >\n          Undo\n        </Button>\n      </Alert>\n      <Alert className=\"border-amber-50 bg-amber-50 text-amber-900 dark:border-amber-950 dark:bg-amber-950 dark:text-amber-100\">\n        <CheckCircle2Icon />\n        <AlertTitle>Plot Twist: This Alert is Actually Amber!</AlertTitle>\n        <AlertDescription>\n          This one has custom colors for light and dark mode.\n        </AlertDescription>\n      </Alert>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/alert-dialog-demo.tsx",
    "content": "import { TrashIcon } from \"lucide-react\"\n\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/new-york-v4/ui/alert-dialog\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function AlertDialogDemo() {\n  return (\n    <div className=\"flex flex-wrap gap-4\">\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">Default</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This action cannot be undone. This will permanently delete your\n              account and remove your data from our servers.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\n            <AlertDialogAction>Continue</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">With Media</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogMedia>\n              <TrashIcon className=\"size-8\" />\n            </AlertDialogMedia>\n            <AlertDialogTitle>Delete this item?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This action cannot be undone. This will permanently delete the\n              item from your account.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\n            <AlertDialogAction variant=\"destructive\">Delete</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">Small Size</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent size=\"sm\">\n          <AlertDialogHeader>\n            <AlertDialogMedia>\n              <TrashIcon className=\"size-8\" />\n            </AlertDialogMedia>\n            <AlertDialogTitle>Delete this item?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This action cannot be undone.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\n            <AlertDialogAction variant=\"destructive\">Delete</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/app-breadcrumbs.tsx",
    "content": "\"use client\"\n\nimport { useParams } from \"next/navigation\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\n\nexport function AppBreadcrumbs() {\n  const params = useParams()\n  const { name } = params\n\n  if (!name) {\n    return (\n      <Breadcrumb>\n        <BreadcrumbList>\n          <BreadcrumbItem>\n            <BreadcrumbPage>Kitchen Sink</BreadcrumbPage>\n          </BreadcrumbItem>\n        </BreadcrumbList>\n      </Breadcrumb>\n    )\n  }\n\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink href=\"/sink\">Kitchen Sink</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator className=\"hidden sm:flex\" />\n        <BreadcrumbItem className=\"hidden sm:block\">\n          <BreadcrumbPage className=\"capitalize\">{name}</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\nimport {\n  AudioWaveform,\n  BookOpen,\n  Bot,\n  ChevronRightIcon,\n  Command,\n  GalleryVerticalEnd,\n  SearchIcon,\n  Settings2,\n  SquareTerminal,\n} from \"lucide-react\"\n\nimport { Index } from \"@/registry/__index__\"\nimport { NavUser } from \"@/registry/new-york-v4/blocks/sidebar-07/components/nav-user\"\nimport { TeamSwitcher } from \"@/registry/new-york-v4/blocks/sidebar-07/components/team-switcher\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { componentRegistry } from \"@/app/(internal)/sink/component-registry\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: GalleryVerticalEnd,\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: AudioWaveform,\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: Command,\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: SquareTerminal,\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: Bot,\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: BookOpen,\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: Settings2,\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  components: Object.values(Index)\n    .filter((item) => item.type === \"registry:ui\")\n    .concat([\n      {\n        name: \"combobox\",\n      },\n    ])\n    .sort((a, b) => a.name.localeCompare(b.name)),\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  const pathname = usePathname()\n  return (\n    <Sidebar side=\"left\" collapsible=\"icon\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n        <SidebarGroup className=\"py-0 group-data-[collapsible=icon]:hidden\">\n          <SidebarGroupContent>\n            <form className=\"relative\">\n              <Label htmlFor=\"search\" className=\"sr-only\">\n                Search\n              </Label>\n              <InputGroup className=\"h-8 bg-background shadow-none\">\n                <InputGroupInput\n                  id=\"search\"\n                  placeholder=\"Search the docs...\"\n                  className=\"h-7\"\n                  data-slot=\"input-group-control\"\n                />\n                <InputGroupAddon>\n                  <SearchIcon className=\"text-muted-foreground\" />\n                </InputGroupAddon>\n              </InputGroup>\n            </form>\n          </SidebarGroupContent>\n        </SidebarGroup>\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarGroupLabel>Platform</SidebarGroupLabel>\n          <SidebarMenu>\n            {data.navMain.map((item) => (\n              <Collapsible\n                key={item.title}\n                asChild\n                defaultOpen={item.isActive}\n                className=\"group/collapsible\"\n              >\n                <SidebarMenuItem>\n                  <CollapsibleTrigger asChild>\n                    <SidebarMenuButton tooltip={item.title}>\n                      {item.icon && <item.icon />}\n                      <span>{item.title}</span>\n                      <ChevronRightIcon className=\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\" />\n                    </SidebarMenuButton>\n                  </CollapsibleTrigger>\n                  <CollapsibleContent>\n                    <SidebarMenuSub>\n                      {item.items?.map((subItem) => (\n                        <SidebarMenuSubItem key={subItem.title}>\n                          <SidebarMenuSubButton asChild>\n                            <a href={subItem.url}>\n                              <span>{subItem.title}</span>\n                            </a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </CollapsibleContent>\n                </SidebarMenuItem>\n              </Collapsible>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n        <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n          <SidebarMenu>\n            {[\"registry:ui\", \"registry:page\", \"registry:block\"].map((type) => {\n              const typeComponents = Object.entries(componentRegistry).filter(\n                ([, item]) => item.type === type\n              )\n              if (typeComponents.length === 0) {\n                return null\n              }\n\n              return (\n                <Collapsible\n                  key={type}\n                  asChild\n                  defaultOpen={pathname.includes(\"/sink/\")}\n                  className=\"group/collapsible\"\n                >\n                  <SidebarMenuItem>\n                    <CollapsibleTrigger asChild>\n                      <SidebarMenuButton>\n                        <span>\n                          {type === \"registry:ui\"\n                            ? \"Components\"\n                            : type === \"registry:page\"\n                              ? \"Pages\"\n                              : \"Blocks\"}\n                        </span>\n                        <ChevronRightIcon className=\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\" />\n                      </SidebarMenuButton>\n                    </CollapsibleTrigger>\n                    <CollapsibleContent>\n                      <SidebarMenuSub>\n                        {typeComponents.map(([key, item]) => (\n                          <SidebarMenuSubItem key={key}>\n                            <SidebarMenuSubButton\n                              asChild\n                              isActive={pathname === item.href}\n                            >\n                              <Link href={item.href}>\n                                <span>{item.name}</span>\n                                {item.label && (\n                                  <span className=\"flex size-2 rounded-full bg-blue-500\" />\n                                )}\n                              </Link>\n                            </SidebarMenuSubButton>\n                          </SidebarMenuSubItem>\n                        ))}\n                      </SidebarMenuSub>\n                    </CollapsibleContent>\n                  </SidebarMenuItem>\n                </Collapsible>\n              )\n            })}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/aspect-ratio-demo.tsx",
    "content": "import Image from \"next/image\"\n\nimport { AspectRatio } from \"@/registry/new-york-v4/ui/aspect-ratio\"\n\nexport function AspectRatioDemo() {\n  return (\n    <div className=\"grid w-full max-w-sm items-start gap-4\">\n      <AspectRatio ratio={16 / 9} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\"\n          alt=\"Photo by Drew Beamer\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover dark:brightness-[0.2] dark:grayscale\"\n        />\n      </AspectRatio>\n      <AspectRatio ratio={1 / 1} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\"\n          alt=\"Photo by Drew Beamer\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover dark:brightness-[0.2] dark:grayscale\"\n        />\n      </AspectRatio>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/avatar-demo.tsx",
    "content": "import { PlusIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\n\nexport function AvatarDemo() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      {/* Sizes. */}\n      <div className=\"flex flex-row flex-wrap items-center gap-4\">\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n      </div>\n      {/* Fallback. */}\n      <div className=\"flex flex-row flex-wrap items-center gap-4\">\n        <Avatar size=\"sm\">\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n      </div>\n      {/* With badge. */}\n      <div className=\"flex flex-row flex-wrap items-center gap-4\">\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n          <AvatarBadge>\n            <PlusIcon />\n          </AvatarBadge>\n        </Avatar>\n      </div>\n      {/* Avatar group. */}\n      <div className=\"flex flex-row flex-wrap items-center gap-4\">\n        <AvatarGroup>\n          <Avatar size=\"sm\">\n            <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n            <AvatarFallback>CN</AvatarFallback>\n          </Avatar>\n          <Avatar size=\"sm\">\n            <AvatarImage\n              src=\"https://github.com/maxleiter.png\"\n              alt=\"@maxleiter\"\n            />\n            <AvatarFallback>ML</AvatarFallback>\n          </Avatar>\n          <Avatar size=\"sm\">\n            <AvatarImage\n              src=\"https://github.com/evilrabbit.png\"\n              alt=\"@evilrabbit\"\n            />\n            <AvatarFallback>ER</AvatarFallback>\n          </Avatar>\n        </AvatarGroup>\n        <AvatarGroup>\n          <Avatar>\n            <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n            <AvatarFallback>CN</AvatarFallback>\n          </Avatar>\n          <Avatar>\n            <AvatarImage\n              src=\"https://github.com/maxleiter.png\"\n              alt=\"@maxleiter\"\n            />\n            <AvatarFallback>ML</AvatarFallback>\n          </Avatar>\n          <Avatar>\n            <AvatarImage\n              src=\"https://github.com/evilrabbit.png\"\n              alt=\"@evilrabbit\"\n            />\n            <AvatarFallback>ER</AvatarFallback>\n          </Avatar>\n        </AvatarGroup>\n        <AvatarGroup>\n          <Avatar size=\"lg\">\n            <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n            <AvatarFallback>CN</AvatarFallback>\n          </Avatar>\n          <Avatar size=\"lg\">\n            <AvatarImage\n              src=\"https://github.com/maxleiter.png\"\n              alt=\"@maxleiter\"\n            />\n            <AvatarFallback>ML</AvatarFallback>\n          </Avatar>\n          <Avatar size=\"lg\">\n            <AvatarImage\n              src=\"https://github.com/evilrabbit.png\"\n              alt=\"@evilrabbit\"\n            />\n            <AvatarFallback>ER</AvatarFallback>\n          </Avatar>\n        </AvatarGroup>\n      </div>\n      {/* Avatar group with count. */}\n      <div className=\"flex flex-row flex-wrap items-center gap-4\">\n        <AvatarGroup>\n          <Avatar>\n            <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n            <AvatarFallback>CN</AvatarFallback>\n          </Avatar>\n          <Avatar>\n            <AvatarImage\n              src=\"https://github.com/maxleiter.png\"\n              alt=\"@maxleiter\"\n            />\n            <AvatarFallback>ML</AvatarFallback>\n          </Avatar>\n          <Avatar>\n            <AvatarImage\n              src=\"https://github.com/evilrabbit.png\"\n              alt=\"@evilrabbit\"\n            />\n            <AvatarFallback>ER</AvatarFallback>\n          </Avatar>\n          <AvatarGroupCount>+3</AvatarGroupCount>\n        </AvatarGroup>\n        <AvatarGroup>\n          <Avatar>\n            <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n            <AvatarFallback>CN</AvatarFallback>\n          </Avatar>\n          <Avatar>\n            <AvatarImage\n              src=\"https://github.com/maxleiter.png\"\n              alt=\"@maxleiter\"\n            />\n            <AvatarFallback>ML</AvatarFallback>\n          </Avatar>\n          <Avatar>\n            <AvatarImage\n              src=\"https://github.com/evilrabbit.png\"\n              alt=\"@evilrabbit\"\n            />\n            <AvatarFallback>ER</AvatarFallback>\n          </Avatar>\n          <AvatarGroupCount>\n            <PlusIcon />\n          </AvatarGroupCount>\n        </AvatarGroup>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/badge-demo.tsx",
    "content": "import { AlertCircleIcon, ArrowRightIcon, CheckIcon } from \"lucide-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\n\nexport function BadgeDemo() {\n  return (\n    <div className=\"flex flex-col items-center gap-2\">\n      <div className=\"flex w-full flex-wrap gap-2\">\n        <Badge>Badge</Badge>\n        <Badge variant=\"secondary\">Secondary</Badge>\n        <Badge variant=\"destructive\">Destructive</Badge>\n        <Badge variant=\"outline\">Outline</Badge>\n        <Badge variant=\"ghost\">Ghost</Badge>\n        <Badge variant=\"link\">Link</Badge>\n      </div>\n      <div className=\"flex w-full flex-wrap gap-2\">\n        <Badge variant=\"outline\">\n          <CheckIcon />\n          Badge\n        </Badge>\n        <Badge variant=\"destructive\">\n          <AlertCircleIcon />\n          Alert\n        </Badge>\n        <Badge className=\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\">\n          8\n        </Badge>\n        <Badge\n          className=\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\"\n          variant=\"destructive\"\n        >\n          99\n        </Badge>\n        <Badge\n          className=\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\"\n          variant=\"outline\"\n        >\n          20+\n        </Badge>\n      </div>\n      <div className=\"flex w-full flex-wrap gap-2\">\n        <Badge asChild>\n          <a href=\"#\">\n            Link <ArrowRightIcon />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"secondary\">\n          <a href=\"#\">\n            Link <ArrowRightIcon />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"destructive\">\n          <a href=\"#\">\n            Link <ArrowRightIcon />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"outline\">\n          <a href=\"#\">\n            Link <ArrowRightIcon />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"ghost\">\n          <a href=\"#\">\n            Link <ArrowRightIcon />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"link\">\n          <a href=\"#\">\n            Link <ArrowRightIcon />\n          </a>\n        </Badge>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/breadcrumb-demo.tsx",
    "content": "import {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport function BreadcrumbDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger className=\"flex items-center gap-1\">\n              <BreadcrumbEllipsis className=\"h-4 w-4\" />\n              <span className=\"sr-only\">Toggle menu</span>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"start\">\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\n              <DropdownMenuItem>Themes</DropdownMenuItem>\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink href=\"/docs/components\">Components</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/button-demo.tsx",
    "content": "import { ArrowRightIcon, Loader2Icon, PlusIcon, SendIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function ButtonDemo() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <div className=\"flex flex-wrap items-center gap-2 md:flex-row\">\n        <Button size=\"xs\">Extra Small</Button>\n        <Button variant=\"outline\" size=\"xs\">\n          Outline\n        </Button>\n        <Button variant=\"ghost\" size=\"xs\">\n          Ghost\n        </Button>\n        <Button variant=\"destructive\" size=\"xs\">\n          Destructive\n        </Button>\n        <Button variant=\"secondary\" size=\"xs\">\n          Secondary\n        </Button>\n        <Button variant=\"link\" size=\"xs\">\n          Link\n        </Button>\n        <Button variant=\"outline\" size=\"xs\">\n          <SendIcon /> Send\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2 md:flex-row\">\n        <Button size=\"sm\">Small</Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Outline\n        </Button>\n        <Button variant=\"ghost\" size=\"sm\">\n          Ghost\n        </Button>\n        <Button variant=\"destructive\" size=\"sm\">\n          Destructive\n        </Button>\n        <Button variant=\"secondary\" size=\"sm\">\n          Secondary\n        </Button>\n        <Button variant=\"link\" size=\"sm\">\n          Link\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          <SendIcon /> Send\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2 md:flex-row\">\n        <Button>Button</Button>\n        <Button variant=\"outline\">Outline</Button>\n        <Button variant=\"ghost\">Ghost</Button>\n        <Button variant=\"destructive\">Destructive</Button>\n        <Button variant=\"secondary\">Secondary</Button>\n        <Button variant=\"link\">Link</Button>\n        <Button variant=\"outline\">\n          <SendIcon /> Send\n        </Button>\n        <Button variant=\"outline\">\n          Learn More <ArrowRightIcon />\n        </Button>\n        <Button disabled variant=\"outline\">\n          <Loader2Icon className=\"animate-spin\" />\n          Please wait\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2 md:flex-row\">\n        <Button size=\"lg\">Large</Button>\n        <Button variant=\"outline\" size=\"lg\">\n          Outline\n        </Button>\n        <Button variant=\"ghost\" size=\"lg\">\n          Ghost\n        </Button>\n        <Button variant=\"destructive\" size=\"lg\">\n          Destructive\n        </Button>\n        <Button variant=\"secondary\" size=\"lg\">\n          Secondary\n        </Button>\n        <Button variant=\"link\" size=\"lg\">\n          Link\n        </Button>\n        <Button variant=\"outline\" size=\"lg\">\n          <SendIcon /> Send\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2 md:flex-row\">\n        <Button size=\"icon-xs\" variant=\"outline\">\n          <PlusIcon />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"outline\">\n          <PlusIcon />\n        </Button>\n        <Button size=\"icon\" variant=\"outline\">\n          <PlusIcon />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"outline\">\n          <PlusIcon />\n        </Button>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/button-group-demo.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n  IconArrowRight,\n  IconBrandGithubCopilot,\n  IconChevronDown,\n  IconCircleCheck,\n  IconCloudCode,\n  IconHeart,\n  IconMinus,\n  IconPin,\n  IconPlus,\n  IconUserCircle,\n} from \"@tabler/icons-react\"\nimport {\n  AlertTriangleIcon,\n  ArrowLeftIcon,\n  ArrowRightIcon,\n  AudioLinesIcon,\n  CheckIcon,\n  ChevronDownIcon,\n  CopyIcon,\n  FlipHorizontalIcon,\n  FlipVerticalIcon,\n  MoreHorizontalIcon,\n  PercentIcon,\n  RotateCwIcon,\n  SearchIcon,\n  ShareIcon,\n  TrashIcon,\n  UserRoundXIcon,\n  VolumeOffIcon,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n} from \"@/registry/new-york-v4/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport function ButtonGroupDemo() {\n  const [currency, setCurrency] = useState(\"$\")\n  return (\n    <div className=\"flex gap-12\">\n      <div className=\"flex max-w-sm flex-col gap-6\">\n        <ButtonGroup>\n          <Button>Button</Button>\n          <Button>\n            Get Started <IconArrowRight />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button>Button</Button>\n          <ButtonGroupSeparator className=\"bg-primary/80\" />\n          <Button>\n            Get Started <IconArrowRight />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">Button</Button>\n          <Input placeholder=\"Type something here...\" />\n        </ButtonGroup>\n        <ButtonGroup>\n          <Input placeholder=\"Type something here...\" />\n          <Button variant=\"outline\">Button</Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">Button</Button>\n          <Button variant=\"outline\">Another Button</Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <ButtonGroupText>Text</ButtonGroupText>\n          <Button variant=\"outline\">Another Button</Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <ButtonGroupText asChild>\n            <Label htmlFor=\"input\">\n              <IconCloudCode /> GPU Size\n            </Label>\n          </ButtonGroupText>\n          <Input id=\"input\" placeholder=\"Type something here...\" />\n        </ButtonGroup>\n        <ButtonGroup>\n          <ButtonGroupText>Prefix</ButtonGroupText>\n          <Input id=\"input\" placeholder=\"Type something here...\" />\n          <ButtonGroupText>Suffix</ButtonGroupText>\n        </ButtonGroup>\n        <div className=\"flex gap-4\">\n          <ButtonGroup>\n            <Button variant=\"outline\">Update</Button>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"outline\">\n                  <ChevronDownIcon />\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\">\n                <DropdownMenuItem>Disable</DropdownMenuItem>\n                <DropdownMenuItem variant=\"destructive\">\n                  Uninstall\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </ButtonGroup>\n          <ButtonGroup className=\"[--radius:9999px]\">\n            <Button variant=\"outline\">Follow</Button>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"outline\" className=\"pl-2!\">\n                  <ChevronDownIcon />\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\" className=\"[--radius:0.95rem]\">\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <VolumeOffIcon />\n                    Mute Conversation\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <CheckIcon />\n                    Mark as Read\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <AlertTriangleIcon />\n                    Report Conversation\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <UserRoundXIcon />\n                    Block User\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <ShareIcon />\n                    Share Conversation\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <CopyIcon />\n                    Copy Conversation\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem variant=\"destructive\">\n                    <TrashIcon />\n                    Delete Conversation\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </ButtonGroup>\n          <ButtonGroup className=\"[--radius:0.9rem]\">\n            <Button variant=\"secondary\">Actions</Button>\n            <ButtonGroupSeparator />\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"secondary\">\n                  <MoreHorizontalIcon />\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\" className=\"[--radius:0.9rem]\">\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <IconCircleCheck />\n                    Select Messages\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPin />\n                    Edit Pins\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconUserCircle />\n                    Set Up Name & Photo\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </ButtonGroup>\n        </div>\n        <Field>\n          <Label htmlFor=\"amount\">Amount</Label>\n          <ButtonGroup>\n            <Select value={currency} onValueChange={setCurrency}>\n              <SelectTrigger className=\"font-mono\">{currency}</SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"$\">$</SelectItem>\n                <SelectItem value=\"€\">€</SelectItem>\n                <SelectItem value=\"£\">£</SelectItem>\n              </SelectContent>\n            </Select>\n            <Input placeholder=\"Enter amount to send\" />\n            <Button variant=\"outline\">\n              <ArrowRightIcon />\n            </Button>\n          </ButtonGroup>\n        </Field>\n      </div>\n      <div className=\"flex max-w-xs flex-col gap-6\">\n        <ButtonGroup className=\"[--spacing:0.2rem]\">\n          <Button variant=\"outline\">\n            <FlipHorizontalIcon />\n          </Button>\n          <Button variant=\"outline\">\n            <FlipVerticalIcon />\n          </Button>\n          <Button variant=\"outline\">\n            <RotateCwIcon />\n          </Button>\n          <InputGroup>\n            <InputGroupInput placeholder=\"0.00\" />\n            <InputGroupAddon\n              align=\"inline-end\"\n              className=\"text-muted-foreground\"\n            >\n              <PercentIcon />\n            </InputGroupAddon>\n          </InputGroup>\n        </ButtonGroup>\n        <div className=\"flex gap-2 [--radius:0.95rem] [--ring:var(--color-blue-300)] [--spacing:0.22rem] **:[.shadow-xs]:shadow-none\">\n          <InputGroup>\n            <InputGroupInput placeholder=\"Type to search...\" />\n            <InputGroupAddon\n              align=\"inline-start\"\n              className=\"text-muted-foreground\"\n            >\n              <SearchIcon />\n            </InputGroupAddon>\n          </InputGroup>\n          <ButtonGroup>\n            <Button variant=\"outline\">\n              <IconBrandGithubCopilot />\n            </Button>\n            <Popover>\n              <PopoverTrigger asChild>\n                <Button variant=\"outline\">\n                  <IconCloudCode />\n                  <IconChevronDown />\n                </Button>\n              </PopoverTrigger>\n              <PopoverContent align=\"end\" className=\"rounded-xl p-0 text-sm\">\n                <div className=\"px-4 py-3\">\n                  <div className=\"text-sm font-medium\">Agent Tasks</div>\n                </div>\n                <Separator />\n                <div className=\"p-4 *:[p:not(:last-child)]:mb-2\">\n                  <Textarea\n                    placeholder=\"Describe your task in natural language.\"\n                    className=\"mb-4 resize-none\"\n                  />\n                  <p className=\"font-medium\">Start a new task with Copilot</p>\n                  <p className=\"text-muted-foreground\">\n                    Describe your task in natural language. Copilot will work in\n                    the background and open a pull request for your review.\n                  </p>\n                </div>\n              </PopoverContent>\n            </Popover>\n          </ButtonGroup>\n        </div>\n        <FieldGroup className=\"grid grid-cols-2 gap-4 [--spacing:0.22rem]\">\n          <Field>\n            <Label htmlFor=\"width\">Width</Label>\n            <ButtonGroup>\n              <InputGroup>\n                <InputGroupInput id=\"width\" />\n                <InputGroupAddon className=\"text-muted-foreground\">\n                  W\n                </InputGroupAddon>\n                <InputGroupAddon\n                  align=\"inline-end\"\n                  className=\"text-muted-foreground\"\n                >\n                  px\n                </InputGroupAddon>\n              </InputGroup>\n              <Button variant=\"outline\" size=\"icon\">\n                <IconMinus />\n              </Button>\n              <Button variant=\"outline\" size=\"icon\">\n                <IconPlus />\n              </Button>\n            </ButtonGroup>\n          </Field>\n          <Field className=\"w-full\">\n            <Label htmlFor=\"color\">Color</Label>\n            <ButtonGroup className=\"w-full\">\n              <InputGroup>\n                <InputGroupInput id=\"color\" />\n                <InputGroupAddon align=\"inline-start\">\n                  <Popover>\n                    <PopoverTrigger asChild>\n                      <InputGroupButton>\n                        <span className=\"size-4 rounded-xs bg-blue-600\" />\n                      </InputGroupButton>\n                    </PopoverTrigger>\n                    <PopoverContent\n                      align=\"start\"\n                      className=\"max-w-48 rounded-lg p-2\"\n                      alignOffset={-8}\n                      sideOffset={8}\n                    >\n                      <div className=\"flex flex-wrap gap-1.5\">\n                        {[\n                          \"#EA4335\", // Red\n                          \"#FBBC04\", // Yellow\n                          \"#34A853\", // Green\n                          \"#4285F4\", // Blue\n                          \"#9333EA\", // Purple\n                          \"#EC4899\", // Pink\n                          \"#10B981\", // Emerald\n                          \"#F97316\", // Orange\n                          \"#6366F1\", // Indigo\n                          \"#14B8A6\", // Teal\n                          \"#8B5CF6\", // Violet\n                          \"#F59E0B\", // Amber\n                        ].map((color) => (\n                          <div\n                            key={color}\n                            className=\"size-6 cursor-pointer rounded-sm transition-transform hover:scale-110\"\n                            style={{ backgroundColor: color }}\n                          />\n                        ))}\n                      </div>\n                    </PopoverContent>\n                  </Popover>\n                </InputGroupAddon>\n                <InputGroupAddon\n                  align=\"inline-end\"\n                  className=\"text-muted-foreground\"\n                >\n                  %\n                </InputGroupAddon>\n              </InputGroup>\n            </ButtonGroup>\n          </Field>\n        </FieldGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">\n            <IconHeart /> Like\n          </Button>\n          <Button\n            variant=\"outline\"\n            asChild\n            className=\"pointer-events-none px-2 text-muted-foreground\"\n          >\n            <span>1.2K</span>\n          </Button>\n        </ButtonGroup>\n        <ExportButtonGroup />\n        <ButtonGroup>\n          <Select defaultValue=\"hours\">\n            <SelectTrigger id=\"duration\">\n              <SelectValue placeholder=\"Select duration\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectItem value=\"hours\">Hours</SelectItem>\n              <SelectItem value=\"days\">Days</SelectItem>\n              <SelectItem value=\"weeks\">Weeks</SelectItem>\n            </SelectContent>\n          </Select>\n          <Input />\n        </ButtonGroup>\n        <ButtonGroup className=\"[--radius:9999rem]\">\n          <ButtonGroup>\n            <Button variant=\"outline\" size=\"icon\">\n              <IconPlus />\n            </Button>\n          </ButtonGroup>\n          <ButtonGroup>\n            <InputGroup>\n              <InputGroupInput placeholder=\"Send a message...\" />\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <InputGroupAddon align=\"inline-end\">\n                    <AudioLinesIcon />\n                  </InputGroupAddon>\n                </TooltipTrigger>\n                <TooltipContent>Voice Mode</TooltipContent>\n              </Tooltip>\n            </InputGroup>\n          </ButtonGroup>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"sm\">\n            <ArrowLeftIcon />\n            Previous\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            1\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            2\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            3\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            4\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            5\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            Next\n            <ArrowRightIcon />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup className=\"[--radius:0.9rem] [--spacing:0.22rem]\">\n          <ButtonGroup>\n            <Button variant=\"outline\">1</Button>\n            <Button variant=\"outline\">2</Button>\n            <Button variant=\"outline\">3</Button>\n            <Button variant=\"outline\">4</Button>\n            <Button variant=\"outline\">5</Button>\n          </ButtonGroup>\n          <ButtonGroup>\n            <Button variant=\"outline\" size=\"icon\">\n              <ArrowLeftIcon />\n            </Button>\n            <Button variant=\"outline\" size=\"icon\">\n              <ArrowRightIcon />\n            </Button>\n          </ButtonGroup>\n        </ButtonGroup>\n        <ButtonGroup>\n          <ButtonGroup>\n            <Button variant=\"outline\">\n              <ArrowLeftIcon />\n            </Button>\n            <Button variant=\"outline\">\n              <ArrowRightIcon />\n            </Button>\n          </ButtonGroup>\n          <ButtonGroup aria-label=\"Single navigation button\">\n            <Button variant=\"outline\" size=\"icon\">\n              <ArrowLeftIcon />\n            </Button>\n          </ButtonGroup>\n        </ButtonGroup>\n      </div>\n      <div className=\"flex max-w-xs flex-col gap-6\">\n        <Field>\n          <Label id=\"alignment-label\">Text Alignment</Label>\n          <ButtonGroup aria-labelledby=\"alignment-label\">\n            <Button variant=\"outline\" size=\"sm\">\n              Left\n            </Button>\n            <Button variant=\"outline\" size=\"sm\">\n              Center\n            </Button>\n            <Button variant=\"outline\" size=\"sm\">\n              Right\n            </Button>\n            <Button variant=\"outline\" size=\"sm\">\n              Justify\n            </Button>\n          </ButtonGroup>\n        </Field>\n        <div className=\"flex gap-6\">\n          <ButtonGroup\n            orientation=\"vertical\"\n            aria-label=\"Media controls\"\n            className=\"h-fit\"\n          >\n            <Button variant=\"outline\" size=\"icon\">\n              <IconPlus />\n            </Button>\n            <Button variant=\"outline\" size=\"icon\">\n              <IconMinus />\n            </Button>\n          </ButtonGroup>\n          <ButtonGroup orientation=\"vertical\" aria-label=\"Design tools palette\">\n            <ButtonGroup orientation=\"vertical\">\n              <Button variant=\"outline\" size=\"icon\">\n                <SearchIcon />\n              </Button>\n              <Button variant=\"outline\" size=\"icon\">\n                <CopyIcon />\n              </Button>\n              <Button variant=\"outline\" size=\"icon\">\n                <ShareIcon />\n              </Button>\n            </ButtonGroup>\n            <ButtonGroup orientation=\"vertical\">\n              <Button variant=\"outline\" size=\"icon\">\n                <FlipHorizontalIcon />\n              </Button>\n              <Button variant=\"outline\" size=\"icon\">\n                <FlipVerticalIcon />\n              </Button>\n              <Button variant=\"outline\" size=\"icon\">\n                <RotateCwIcon />\n              </Button>\n            </ButtonGroup>\n            <ButtonGroup>\n              <Button variant=\"outline\" size=\"icon\">\n                <TrashIcon />\n              </Button>\n            </ButtonGroup>\n          </ButtonGroup>\n          <ButtonGroup orientation=\"vertical\">\n            <Button variant=\"outline\" size=\"sm\">\n              <IconPlus /> Increase\n            </Button>\n            <Button variant=\"outline\" size=\"sm\">\n              <IconMinus /> Decrease\n            </Button>\n          </ButtonGroup>\n          <ButtonGroup orientation=\"vertical\">\n            <Button variant=\"secondary\" size=\"sm\">\n              <IconPlus /> Increase\n            </Button>\n            <ButtonGroupSeparator orientation=\"horizontal\" />\n            <Button variant=\"secondary\" size=\"sm\">\n              <IconMinus /> Decrease\n            </Button>\n          </ButtonGroup>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction ExportButtonGroup() {\n  const [exportType, setExportType] = useState(\"pdf\")\n\n  return (\n    <ButtonGroup>\n      <Input />\n      <Select value={exportType} onValueChange={setExportType}>\n        <SelectTrigger>\n          <SelectValue asChild>\n            <span>{exportType}</span>\n          </SelectValue>\n        </SelectTrigger>\n        <SelectContent align=\"end\">\n          <SelectItem value=\"pdf\">pdf</SelectItem>\n          <SelectItem value=\"xlsx\">xlsx</SelectItem>\n          <SelectItem value=\"csv\">csv</SelectItem>\n          <SelectItem value=\"json\">json</SelectItem>\n        </SelectContent>\n      </Select>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/calendar-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays } from \"date-fns\"\nimport { Clock2Icon } from \"lucide-react\"\nimport { type DateRange } from \"react-day-picker\"\nimport { es } from \"react-day-picker/locale\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar, CalendarDayButton } from \"@/registry/new-york-v4/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/registry/new-york-v4/ui/card\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport function CalendarDemo() {\n  return (\n    <div className=\"flex flex-1 flex-col flex-wrap justify-center gap-8 bg-muted p-10 lg:flex-row\">\n      <CalendarSingle />\n      <CalendarMultiple />\n      <CalendarRange />\n      <CalendarBookedDates />\n      <CalendarRangeMultipleMonths />\n      <CalendarWithTime />\n      <CalendarWithPresets />\n      <CalendarCustomDays />\n    </div>\n  )\n}\n\nfunction CalendarSingle() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n  return (\n    <div className=\"flex flex-col gap-3\">\n      <div className=\"px-2 text-center text-sm\">Single Selection</div>\n      <Calendar\n        mode=\"single\"\n        selected={date}\n        onSelect={setDate}\n        className=\"rounded-lg border shadow-sm\"\n        captionLayout=\"dropdown\"\n      />\n    </div>\n  )\n}\n\nfunction CalendarMultiple() {\n  return (\n    <div className=\"flex flex-col gap-3\">\n      <div className=\"px-2 text-center text-sm\">Multiple Selection</div>\n      <Calendar mode=\"multiple\" className=\"rounded-lg border shadow-sm\" />\n    </div>\n  )\n}\n\nfunction CalendarRange() {\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 12),\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\n  })\n\n  return (\n    <div className=\"flex flex-col gap-3\">\n      <div className=\"px-2 text-center text-sm\">Range Selection</div>\n      <Calendar\n        mode=\"range\"\n        defaultMonth={dateRange?.from}\n        selected={dateRange}\n        onSelect={setDateRange}\n        numberOfMonths={2}\n        disabled={(date) => date > new Date() || date < new Date(\"1900-01-01\")}\n        className=\"rounded-lg border shadow-sm\"\n      />\n    </div>\n  )\n}\n\nfunction CalendarRangeMultipleMonths() {\n  const [range, setRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 3, 12),\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\n  })\n\n  return (\n    <div className=\"flex flex-col gap-3\">\n      <div className=\"px-2 text-center text-sm\">Range Selection + Locale</div>\n      <Calendar\n        mode=\"range\"\n        defaultMonth={range?.from}\n        selected={range}\n        onSelect={setRange}\n        numberOfMonths={3}\n        locale={es}\n        fixedWeeks\n        className=\"rounded-lg border shadow-sm\"\n      />\n    </div>\n  )\n}\n\nfunction CalendarBookedDates() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 3)\n  )\n  const bookedDates = Array.from(\n    { length: 15 },\n    (_, i) => new Date(new Date().getFullYear(), new Date().getMonth(), 12 + i)\n  )\n\n  return (\n    <div className=\"flex flex-col gap-3\">\n      <div className=\"px-2 text-center text-sm\">With booked dates</div>\n      <Calendar\n        mode=\"single\"\n        defaultMonth={date}\n        selected={date}\n        onSelect={setDate}\n        disabled={bookedDates}\n        modifiers={{\n          booked: bookedDates,\n        }}\n        modifiersClassNames={{\n          booked: \"[&>button]:line-through opacity-100\",\n        }}\n        className=\"rounded-lg border shadow-sm\"\n      />\n    </div>\n  )\n}\n\nfunction CalendarWithTime() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n\n  return (\n    <div className=\"flex flex-col gap-3\">\n      <div className=\"px-2 text-center text-sm\">With Time Input</div>\n      <Card className=\"w-fit py-4\">\n        <CardContent className=\"px-4\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            className=\"p-0\"\n          />\n        </CardContent>\n        <CardFooter className=\"flex flex-col gap-3 border-t px-4 pt-4\">\n          <div className=\"flex w-full flex-col gap-2\">\n            <Label htmlFor=\"time-from\">Start Time</Label>\n            <div className=\"relative flex w-full items-center gap-2\">\n              <Clock2Icon className=\"pointer-events-none absolute left-2.5 size-4 text-muted-foreground select-none\" />\n              <Input\n                id=\"time-from\"\n                type=\"time\"\n                step=\"1\"\n                defaultValue=\"10:30:00\"\n                className=\"appearance-none pl-8 [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n              />\n            </div>\n          </div>\n          <div className=\"flex w-full flex-col gap-2\">\n            <Label htmlFor=\"time-to\">End Time</Label>\n            <div className=\"relative flex w-full items-center gap-2\">\n              <Clock2Icon className=\"pointer-events-none absolute left-2.5 size-4 text-muted-foreground select-none\" />\n              <Input\n                id=\"time-to\"\n                type=\"time\"\n                step=\"1\"\n                defaultValue=\"12:30:00\"\n                className=\"appearance-none pl-8 [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n              />\n            </div>\n          </div>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n\nfunction CalendarCustomDays() {\n  const [range, setRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 11, 8),\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\n  })\n\n  return (\n    <div className=\"flex flex-col gap-3\">\n      <div className=\"px-2 text-center text-sm\">\n        With Custom Days and Formatters\n      </div>\n      <Calendar\n        mode=\"range\"\n        defaultMonth={range?.from}\n        selected={range}\n        onSelect={setRange}\n        numberOfMonths={1}\n        captionLayout=\"dropdown\"\n        className=\"rounded-lg border shadow-sm [--cell-size:--spacing(12)]\"\n        formatters={{\n          formatMonthDropdown: (date) => {\n            return date.toLocaleString(\"default\", { month: \"long\" })\n          },\n        }}\n        components={{\n          DayButton: ({ children, modifiers, day, ...props }) => {\n            const isWeekend = day.date.getDay() === 0 || day.date.getDay() === 6\n\n            return (\n              <CalendarDayButton day={day} modifiers={modifiers} {...props}>\n                {children}\n                {!modifiers.outside && (\n                  <span>{isWeekend ? \"$120\" : \"$100\"}</span>\n                )}\n              </CalendarDayButton>\n            )\n          },\n        }}\n      />\n    </div>\n  )\n}\n\nfunction CalendarWithPresets() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 12)\n  )\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\n  )\n\n  return (\n    <div className=\"flex max-w-[300px] flex-col gap-3\">\n      <div className=\"px-2 text-center text-sm\">With Presets</div>\n      <Card className=\"w-fit py-4\">\n        <CardContent className=\"px-4\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            month={currentMonth}\n            onMonthChange={setCurrentMonth}\n            fixedWeeks\n            className=\"p-0 [--cell-size:--spacing(9.5)]\"\n          />\n        </CardContent>\n        <CardFooter className=\"flex flex-wrap gap-2 border-t px-4 pt-4\">\n          {[\n            { label: \"Today\", value: 0 },\n            { label: \"Tomorrow\", value: 1 },\n            { label: \"In 3 days\", value: 3 },\n            { label: \"In a week\", value: 7 },\n            { label: \"In 2 weeks\", value: 14 },\n          ].map((preset) => (\n            <Button\n              key={preset.value}\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"flex-1\"\n              onClick={() => {\n                const newDate = addDays(new Date(), preset.value)\n                setDate(newDate)\n                setCurrentMonth(\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\n                )\n              }}\n            >\n              {preset.label}\n            </Button>\n          ))}\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/card-demo.tsx",
    "content": "import Image from \"next/image\"\nimport { BathIcon, BedIcon, LandPlotIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport function CardDemo() {\n  return (\n    <div className=\"flex flex-col items-start gap-4\">\n      <Card className=\"w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Login to your account</CardTitle>\n          <CardDescription>\n            Enter your email below to login to your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <div className=\"flex flex-col gap-6\">\n              <div className=\"grid gap-2\">\n                <Label htmlFor=\"email\">Email</Label>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </div>\n              <div className=\"grid gap-2\">\n                <div className=\"flex items-center\">\n                  <Label htmlFor=\"password\">Password</Label>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto inline-block text-sm underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </div>\n            </div>\n          </form>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <Button type=\"submit\" className=\"w-full\">\n            Login\n          </Button>\n          <Button variant=\"outline\" className=\"w-full\">\n            Login with Google\n          </Button>\n          <div className=\"mt-4 text-center text-sm\">\n            Don&apos;t have an account?{\" \"}\n            <a href=\"#\" className=\"underline underline-offset-4\">\n              Sign up\n            </a>\n          </div>\n        </CardFooter>\n      </Card>\n      <Card>\n        <CardHeader>\n          <CardTitle>Meeting Notes</CardTitle>\n          <CardDescription>\n            Transcript from the meeting with the client.\n          </CardDescription>\n        </CardHeader>\n        <CardContent className=\"text-sm\">\n          <p>\n            Client requested dashboard redesign with focus on mobile\n            responsiveness.\n          </p>\n          <ol className=\"mt-4 flex list-decimal flex-col gap-2 pl-6\">\n            <li>New analytics widgets for daily/weekly metrics</li>\n            <li>Simplified navigation menu</li>\n            <li>Dark mode support</li>\n            <li>Timeline: 6 weeks</li>\n            <li>Follow-up meeting scheduled for next Tuesday</li>\n          </ol>\n        </CardContent>\n        <CardFooter>\n          <div className=\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </div>\n        </CardFooter>\n      </Card>\n      <Card>\n        <CardHeader>\n          <CardTitle>Is this an image?</CardTitle>\n          <CardDescription>This is a card with an image.</CardDescription>\n        </CardHeader>\n        <CardContent className=\"px-0\">\n          <Image\n            src=\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\"\n            alt=\"Photo by Drew Beamer\"\n            className=\"aspect-video object-cover\"\n            width={500}\n            height={500}\n          />\n        </CardContent>\n        <CardFooter className=\"flex items-center gap-2\">\n          <Badge variant=\"outline\">\n            <BedIcon /> 4\n          </Badge>\n          <Badge variant=\"outline\">\n            <BathIcon /> 2\n          </Badge>\n          <Badge variant=\"outline\">\n            <LandPlotIcon /> 350m²\n          </Badge>\n          <div className=\"ml-auto font-medium tabular-nums\">$135,000</div>\n        </CardFooter>\n      </Card>\n      <div className=\"flex w-full flex-wrap items-start gap-8 md:*:data-[slot=card]:basis-1/4\">\n        <Card>\n          <CardContent className=\"text-sm\">Content Only</CardContent>\n        </Card>\n        <Card>\n          <CardHeader>\n            <CardTitle>Header Only</CardTitle>\n            <CardDescription>\n              This is a card with a header and a description.\n            </CardDescription>\n          </CardHeader>\n        </Card>\n        <Card>\n          <CardHeader>\n            <CardTitle>Header and Content</CardTitle>\n            <CardDescription>\n              This is a card with a header and a content.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm\">Content</CardContent>\n        </Card>\n        <Card>\n          <CardFooter className=\"text-sm\">Footer Only</CardFooter>\n        </Card>\n        <Card>\n          <CardHeader>\n            <CardTitle>Header + Footer</CardTitle>\n            <CardDescription>\n              This is a card with a header and a footer.\n            </CardDescription>\n          </CardHeader>\n          <CardFooter className=\"text-sm\">Footer</CardFooter>\n        </Card>\n        <Card>\n          <CardContent className=\"text-sm\">Content</CardContent>\n          <CardFooter className=\"text-sm\">Footer</CardFooter>\n        </Card>\n        <Card>\n          <CardHeader>\n            <CardTitle>Header + Footer</CardTitle>\n            <CardDescription>\n              This is a card with a header and a footer.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm\">Content</CardContent>\n          <CardFooter className=\"text-sm\">Footer</CardFooter>\n        </Card>\n        <Card>\n          <CardHeader className=\"border-b\">\n            <CardTitle>Header with Border</CardTitle>\n            <CardDescription>\n              This is a card with a header that has a bottom border.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm\">Content</CardContent>\n        </Card>\n        <Card>\n          <CardContent className=\"text-sm\">Content</CardContent>\n          <CardFooter className=\"border-t text-sm\">\n            Footer with Border\n          </CardFooter>\n        </Card>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/carousel-demo.tsx",
    "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/registry/new-york-v4/ui/carousel\"\n\nexport function CarouselDemo() {\n  return (\n    <div className=\"hidden w-full flex-col items-center gap-4 @4xl:flex\">\n      <Carousel className=\"max-w-sm *:data-[slot=carousel-next]:hidden *:data-[slot=carousel-previous]:hidden *:data-[slot=carousel-next]:md:inline-flex *:data-[slot=carousel-previous]:md:inline-flex\">\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index}>\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious />\n        <CarouselNext />\n      </Carousel>\n      <Carousel\n        className=\"max-w-sm *:data-[slot=carousel-next]:hidden *:data-[slot=carousel-previous]:hidden *:data-[slot=carousel-next]:md:inline-flex *:data-[slot=carousel-previous]:md:inline-flex\"\n        opts={{\n          align: \"start\",\n        }}\n      >\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index} className=\"md:basis-1/2 lg:basis-1/3\">\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious />\n        <CarouselNext />\n      </Carousel>\n      <Carousel className=\"max-w-sm *:data-[slot=carousel-next]:hidden *:data-[slot=carousel-previous]:hidden *:data-[slot=carousel-next]:md:inline-flex *:data-[slot=carousel-previous]:md:inline-flex\">\n        <CarouselContent className=\"-ml-1\">\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index} className=\"pl-1 md:basis-1/2\">\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-2xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious />\n        <CarouselNext />\n      </Carousel>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/chart-area-demo.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A simple area chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/chart-bar-demo.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A multiple bar chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Multiple</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"dashed\" />}\n            />\n            <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n            <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/chart-bar-mixed.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, XAxis, YAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A mixed bar chart\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarMixed() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Mixed</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            layout=\"vertical\"\n            margin={{\n              left: 0,\n            }}\n          >\n            <YAxis\n              dataKey=\"browser\"\n              type=\"category\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) =>\n                chartConfig[value as keyof typeof chartConfig]?.label\n              }\n            />\n            <XAxis dataKey=\"visitors\" type=\"number\" hide />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Bar dataKey=\"visitors\" layout=\"vertical\" radius={5} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/chart-demo.tsx",
    "content": "import { ChartBarMixed } from \"@/registry/new-york-v4/charts/chart-bar-mixed\"\nimport { ChartAreaDemo } from \"@/app/(internal)/sink/components/chart-area-demo\"\nimport { ChartBarDemo } from \"@/app/(internal)/sink/components/chart-bar-demo\"\nimport { ChartLineDemo } from \"@/app/(internal)/sink/components/chart-line-demo\"\n\nexport function ChartDemo() {\n  return (\n    <div className=\"grid w-full max-w-screen-2xl gap-4 *:data-[slot=card]:flex-1 @2xl:grid-cols-2 @6xl:grid-cols-3\">\n      <ChartAreaDemo />\n      <ChartBarDemo />\n      <ChartBarMixed />\n      <div className=\"@6xl:hidden\">\n        <ChartLineDemo />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/chart-line-demo.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A multiple line chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Multiple</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n            <Line\n              dataKey=\"desktop\"\n              type=\"monotone\"\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n              dot={false}\n            />\n            <Line\n              dataKey=\"mobile\"\n              type=\"monotone\"\n              stroke=\"var(--color-mobile)\"\n              strokeWidth={2}\n              dot={false}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              Showing total visitors for the last 6 months\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/checkbox-demo.tsx",
    "content": "\"use client\"\n\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport function CheckboxDemo() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <div className=\"flex items-center gap-3\">\n        <Checkbox id=\"terms\" />\n        <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n      </div>\n      <div className=\"flex items-start gap-3\">\n        <Checkbox id=\"terms-2\" defaultChecked />\n        <div className=\"grid gap-2\">\n          <Label htmlFor=\"terms-2\">Accept terms and conditions</Label>\n          <p className=\"text-sm text-muted-foreground\">\n            By clicking this checkbox, you agree to the terms and conditions.\n          </p>\n        </div>\n      </div>\n      <div className=\"flex items-start gap-3\">\n        <Checkbox id=\"toggle\" disabled />\n        <Label htmlFor=\"toggle\">Enable notifications</Label>\n      </div>\n      <Label className=\"flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-[[aria-checked=true]]:border-blue-600 has-[[aria-checked=true]]:bg-blue-50 dark:has-[[aria-checked=true]]:border-blue-900 dark:has-[[aria-checked=true]]:bg-blue-950\">\n        <Checkbox\n          id=\"toggle-2\"\n          defaultChecked\n          className=\"data-[state=checked]:border-blue-600 data-[state=checked]:bg-blue-600 data-[state=checked]:text-white dark:data-[state=checked]:border-blue-700 dark:data-[state=checked]:bg-blue-700\"\n        />\n        <div className=\"grid gap-1.5 font-normal\">\n          <p className=\"text-sm leading-none font-medium\">\n            Enable notifications\n          </p>\n          <p className=\"text-sm text-muted-foreground\">\n            You can enable or disable notifications at any time.\n          </p>\n        </div>\n      </Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/collapsible-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronsUpDown } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\n\nexport function CollapsibleDemo() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Collapsible\n      open={isOpen}\n      onOpenChange={setIsOpen}\n      className=\"flex w-full flex-col gap-2 md:w-[350px]\"\n    >\n      <div className=\"flex items-center justify-between gap-4 px-4\">\n        <h4 className=\"line-clamp-1 text-sm font-semibold\">\n          @peduarte starred 3 repositories\n        </h4>\n        <CollapsibleTrigger asChild>\n          <Button variant=\"ghost\" size=\"sm\">\n            <ChevronsUpDown className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Toggle</span>\n          </Button>\n        </CollapsibleTrigger>\n      </div>\n      <div className=\"rounded-md border px-4 py-2 font-mono text-sm shadow-xs\">\n        @radix-ui/primitives\n      </div>\n      <CollapsibleContent className=\"flex flex-col gap-2\">\n        <div className=\"rounded-md border px-4 py-2 font-mono text-sm shadow-xs\">\n          @radix-ui/colors\n        </div>\n        <div className=\"rounded-md border px-4 py-2 font-mono text-sm shadow-xs\">\n          @stitches/react\n        </div>\n      </CollapsibleContent>\n    </Collapsible>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/combobox-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxCollection,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxGroup,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxLabel,\n  ComboboxList,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/registry/new-york-v4/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nconst timezones = [\n  {\n    value: \"Americas\",\n    items: [\"(GMT-5) New York\", \"(GMT-8) Los Angeles\", \"(GMT-6) Chicago\"],\n  },\n  {\n    value: \"Europe\",\n    items: [\"(GMT+0) London\", \"(GMT+1) Paris\", \"(GMT+1) Berlin\"],\n  },\n  {\n    value: \"Asia/Pacific\",\n    items: [\"(GMT+9) Tokyo\", \"(GMT+8) Shanghai\", \"(GMT+8) Singapore\"],\n  },\n] as const\n\nconst countries = [\n  { code: \"\", value: \"\", label: \"Select country\" },\n  { code: \"us\", value: \"united-states\", label: \"United States\" },\n  { code: \"ca\", value: \"canada\", label: \"Canada\" },\n  { code: \"gb\", value: \"united-kingdom\", label: \"United Kingdom\" },\n  { code: \"de\", value: \"germany\", label: \"Germany\" },\n  { code: \"fr\", value: \"france\", label: \"France\" },\n  { code: \"jp\", value: \"japan\", label: \"Japan\" },\n]\n\nexport function ComboboxDemo() {\n  return (\n    <div className=\"flex w-full flex-col gap-6\">\n      {/* Basic combobox. */}\n      <div className=\"flex flex-wrap items-start gap-4\">\n        <Combobox items={frameworks}>\n          <ComboboxInput placeholder=\"Select a framework\" />\n          <ComboboxContent>\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\n            <ComboboxList>\n              {(item) => (\n                <ComboboxItem key={item} value={item}>\n                  {item}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n      </div>\n      {/* With clear button. */}\n      <div className=\"flex flex-wrap items-start gap-4\">\n        <Combobox items={frameworks} defaultValue={frameworks[0]}>\n          <ComboboxInput placeholder=\"Select a framework\" showClear />\n          <ComboboxContent>\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\n            <ComboboxList>\n              {(item) => (\n                <ComboboxItem key={item} value={item}>\n                  {item}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n      </div>\n      {/* With groups. */}\n      <div className=\"flex flex-wrap items-start gap-4\">\n        <Combobox items={timezones}>\n          <ComboboxInput placeholder=\"Select a timezone\" />\n          <ComboboxContent>\n            <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n            <ComboboxList>\n              {(group) => (\n                <ComboboxGroup key={group.value} items={group.items}>\n                  <ComboboxLabel>{group.value}</ComboboxLabel>\n                  <ComboboxCollection>\n                    {(item) => (\n                      <ComboboxItem key={item} value={item}>\n                        {item}\n                      </ComboboxItem>\n                    )}\n                  </ComboboxCollection>\n                </ComboboxGroup>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n      </div>\n      {/* With trigger button. */}\n      <div className=\"flex flex-wrap items-start gap-4\">\n        <Combobox items={countries} defaultValue={countries[0]}>\n          <ComboboxTrigger\n            render={\n              <Button\n                variant=\"outline\"\n                className=\"w-64 justify-between font-normal\"\n              />\n            }\n          >\n            <ComboboxValue />\n          </ComboboxTrigger>\n          <ComboboxContent>\n            <ComboboxInput showTrigger={false} placeholder=\"Search\" />\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\n            <ComboboxList>\n              {(item) => (\n                <ComboboxItem key={item.code} value={item}>\n                  {item.label}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n      </div>\n      {/* Multiple selection with chips. */}\n      <ComboboxMultiple />\n    </div>\n  )\n}\n\nfunction ComboboxMultiple() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <div className=\"flex flex-wrap items-start gap-4\">\n      <Combobox\n        multiple\n        autoHighlight\n        items={frameworks}\n        defaultValue={[frameworks[0]]}\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\n                ))}\n                <ComboboxChipsInput placeholder=\"Add framework...\" />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent anchor={anchor}>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/command-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nimport {\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/registry/new-york-v4/ui/command\"\n\nexport function CommandDemo() {\n  const [open, setOpen] = React.useState(false)\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if (e.key === \"j\" && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault()\n        setOpen((open) => !open)\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => document.removeEventListener(\"keydown\", down)\n  }, [])\n\n  return (\n    <>\n      <p className=\"text-sm text-muted-foreground\">\n        Press{\" \"}\n        <kbd className=\"pointer-events-none inline-flex h-5 items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100 select-none\">\n          <span className=\"text-xs\">⌘</span>J\n        </kbd>\n      </p>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <CommandInput placeholder=\"Type a command or search...\" />\n        <CommandList>\n          <CommandEmpty>No results found.</CommandEmpty>\n          <CommandGroup heading=\"Suggestions\">\n            <CommandItem>\n              <Calendar />\n              <span>Calendar</span>\n            </CommandItem>\n            <CommandItem>\n              <Smile />\n              <span>Search Emoji</span>\n            </CommandItem>\n            <CommandItem>\n              <Calculator />\n              <span>Calculator</span>\n            </CommandItem>\n          </CommandGroup>\n          <CommandSeparator />\n          <CommandGroup heading=\"Settings\">\n            <CommandItem>\n              <User />\n              <span>Profile</span>\n              <CommandShortcut>⌘P</CommandShortcut>\n            </CommandItem>\n            <CommandItem>\n              <CreditCard />\n              <span>Billing</span>\n              <CommandShortcut>⌘B</CommandShortcut>\n            </CommandItem>\n            <CommandItem>\n              <Settings />\n              <span>Settings</span>\n              <CommandShortcut>⌘S</CommandShortcut>\n            </CommandItem>\n          </CommandGroup>\n        </CommandList>\n      </CommandDialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/component-wrapper.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/registry/new-york-v4/lib/utils\"\n\nexport function ComponentWrapper({\n  className,\n  name,\n  children,\n  ...props\n}: React.ComponentPropsWithoutRef<\"div\"> & { name: string }) {\n  return (\n    <ComponentErrorBoundary name={name}>\n      <div\n        id={name}\n        data-name={name.toLowerCase()}\n        className={cn(\n          \"flex w-full scroll-mt-16 flex-col rounded-lg border\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"border-b px-4 py-3\">\n          <div className=\"text-sm font-medium\">{getComponentName(name)}</div>\n        </div>\n        <div className=\"flex flex-1 items-center gap-2 p-4\">{children}</div>\n      </div>\n    </ComponentErrorBoundary>\n  )\n}\n\nclass ComponentErrorBoundary extends React.Component<\n  { children: React.ReactNode; name: string },\n  { hasError: boolean }\n> {\n  constructor(props: { children: React.ReactNode; name: string }) {\n    super(props)\n    this.state = { hasError: false }\n  }\n\n  static getDerivedStateFromError() {\n    return { hasError: true }\n  }\n\n  componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n    console.error(`Error in component ${this.props.name}:`, error, errorInfo)\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return (\n        <div className=\"p-4 text-red-500\">\n          Something went wrong in component: {this.props.name}\n        </div>\n      )\n    }\n\n    return this.props.children\n  }\n}\n\nfunction getComponentName(name: string) {\n  // convert kebab-case to title case\n  return name.replace(/-/g, \" \").replace(/\\b\\w/g, (char) => char.toUpperCase())\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/context-menu-demo.tsx",
    "content": "import { Code2Icon, PlusIcon, TrashIcon } from \"lucide-react\"\n\nimport {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/registry/new-york-v4/ui/context-menu\"\n\nexport function ContextMenuDemo() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm\">\n        Right click here\n      </ContextMenuTrigger>\n      <ContextMenuContent className=\"w-64\">\n        <ContextMenuItem inset>\n          Back\n          <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n        </ContextMenuItem>\n        <ContextMenuItem inset disabled>\n          Forward\n          <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n        </ContextMenuItem>\n        <ContextMenuItem inset>\n          Reload\n          <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n        </ContextMenuItem>\n        <ContextMenuSub>\n          <ContextMenuSubTrigger inset>More Tools</ContextMenuSubTrigger>\n          <ContextMenuSubContent className=\"w-48\">\n            <ContextMenuItem inset>\n              Save Page...\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <PlusIcon />\n              Create Shortcut...\n            </ContextMenuItem>\n            <ContextMenuItem inset>Name Window...</ContextMenuItem>\n            <ContextMenuSeparator />\n            <ContextMenuItem>\n              <Code2Icon />\n              Developer Tools\n            </ContextMenuItem>\n            <ContextMenuSeparator />\n            <ContextMenuItem variant=\"destructive\">\n              <TrashIcon />\n              Delete\n            </ContextMenuItem>\n          </ContextMenuSubContent>\n        </ContextMenuSub>\n        <ContextMenuSeparator />\n        <ContextMenuCheckboxItem checked>\n          Show Bookmarks Bar\n          <ContextMenuShortcut>⌘⇧B</ContextMenuShortcut>\n        </ContextMenuCheckboxItem>\n        <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\n        <ContextMenuSeparator />\n        <ContextMenuRadioGroup value=\"pedro\">\n          <ContextMenuLabel inset>People</ContextMenuLabel>\n          <ContextMenuRadioItem value=\"pedro\">\n            Pedro Duarte\n          </ContextMenuRadioItem>\n          <ContextMenuRadioItem value=\"colm\">Colm Tuite</ContextMenuRadioItem>\n        </ContextMenuRadioGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/date-picker-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays, format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { type DateRange } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  Drawer,\n  DrawerContent,\n  DrawerDescription,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport function DatePickerDemo() {\n  return (\n    <div className=\"flex flex-col items-start gap-4 md:flex-row\">\n      <DatePickerSimple />\n      <DataPickerWithDropdowns />\n      <DatePickerWithRange />\n    </div>\n  )\n}\n\nfunction DatePickerSimple() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          variant={\"outline\"}\n          className={cn(\n            \"min-w-[200px] justify-start px-2 font-normal\",\n            !date && \"text-muted-foreground\"\n          )}\n        >\n          <CalendarIcon className=\"text-muted-foreground\" />\n          {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\">\n        <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n      </PopoverContent>\n    </Popover>\n  )\n}\n\nfunction DatePickerWithRange() {\n  const [date, setDate] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 20),\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\n  })\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          id=\"date\"\n          variant={\"outline\"}\n          className={cn(\n            \"w-fit justify-start px-2 font-normal\",\n            !date && \"text-muted-foreground\"\n          )}\n        >\n          <CalendarIcon className=\"text-muted-foreground\" />\n          {date?.from ? (\n            date.to ? (\n              <>\n                {format(date.from, \"LLL dd, y\")} -{\" \"}\n                {format(date.to, \"LLL dd, y\")}\n              </>\n            ) : (\n              format(date.from, \"LLL dd, y\")\n            )\n          ) : (\n            <span>Pick a date</span>\n          )}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\">\n        <Calendar\n          mode=\"range\"\n          defaultMonth={date?.from}\n          selected={date}\n          onSelect={setDate}\n          numberOfMonths={2}\n        />\n      </PopoverContent>\n    </Popover>\n  )\n}\n\nfunction DataPickerWithDropdowns() {\n  const [date, setDate] = React.useState<Date>()\n  const [open, setOpen] = React.useState(false)\n  const isMobile = useIsMobile(450)\n\n  if (isMobile) {\n    return (\n      <Drawer open={open} onOpenChange={setOpen}>\n        <DrawerTrigger asChild>\n          <Button\n            variant=\"outline\"\n            className={cn(\n              \"min-w-[200px] justify-start px-2 font-normal\",\n              !date && \"text-muted-foreground\"\n            )}\n          >\n            {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n            <CalendarIcon className=\"ml-auto text-muted-foreground\" />\n          </Button>\n        </DrawerTrigger>\n        <DrawerContent>\n          <DrawerHeader className=\"sr-only\">\n            <DrawerTitle>Select a date</DrawerTitle>\n            <DrawerDescription>\n              Pick a date for your appointment.\n            </DrawerDescription>\n          </DrawerHeader>\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={(day) => {\n              setDate(day)\n              setOpen(false)\n            }}\n          />\n        </DrawerContent>\n      </Drawer>\n    )\n  }\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"outline\"\n          className={cn(\n            \"min-w-[200px] justify-start px-2 font-normal\",\n            !date && \"text-muted-foreground\"\n          )}\n        >\n          {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n          <CalendarIcon className=\"ml-auto text-muted-foreground\" />\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\">\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          captionLayout=\"dropdown\"\n        />\n        <div className=\"flex gap-2 border-t p-2\">\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            className=\"w-full\"\n            onClick={() => setOpen(false)}\n          >\n            Done\n          </Button>\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/dialog-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport function DialogDemo() {\n  return (\n    <div className=\"flex flex-col items-start gap-4 md:flex-row\">\n      <DialogWithForm />\n      <DialogScrollableContent />\n      <DialogWithStickyFooter />\n    </div>\n  )\n}\n\nfunction DialogWithForm() {\n  return (\n    <Dialog>\n      <form>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Edit Profile</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Edit profile</DialogTitle>\n            <DialogDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"grid gap-4\">\n            <div className=\"grid gap-3\">\n              <Label htmlFor=\"name-1\">Name</Label>\n              <Input id=\"name-1\" name=\"name\" defaultValue=\"Pedro Duarte\" />\n            </div>\n            <div className=\"grid gap-3\">\n              <Label htmlFor=\"username-1\">Username</Label>\n              <Input id=\"username-1\" name=\"username\" defaultValue=\"@peduarte\" />\n            </div>\n          </div>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DialogClose>\n            <Button type=\"submit\">Save changes</Button>\n          </DialogFooter>\n        </DialogContent>\n      </form>\n    </Dialog>\n  )\n}\n\nfunction DialogScrollableContent() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">Scrollable Content</Button>\n      </DialogTrigger>\n      <DialogContent className=\"sm:max-w-[425px]\">\n        <DialogHeader>\n          <DialogTitle>Scrollable Content</DialogTitle>\n          <DialogDescription>\n            This is a dialog with scrollable content.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"-mx-6 max-h-[500px] overflow-y-auto px-6 text-sm\">\n          <h4 className=\"mb-4 text-lg leading-none font-medium\">Lorem Ipsum</h4>\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p key={index} className=\"mb-4 leading-normal\">\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction DialogWithStickyFooter() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">Sticky Footer</Button>\n      </DialogTrigger>\n      <DialogContent className=\"sm:max-w-lg\">\n        <DialogHeader>\n          <DialogTitle>Scrollable Content</DialogTitle>\n          <DialogDescription>\n            This is a dialog with scrollable content.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"-mx-6 max-h-[500px] overflow-y-auto px-6 text-sm\">\n          <h4 className=\"mb-4 text-lg leading-none font-medium\">Lorem Ipsum</h4>\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p key={index} className=\"mb-4 leading-normal\">\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n        <DialogFooter>\n          <DialogClose asChild>\n            <Button variant=\"outline\">Close</Button>\n          </DialogClose>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/drawer-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Minus, Plus } from \"lucide-react\"\nimport { Bar, BarChart, ResponsiveContainer } from \"recharts\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\n\nconst data = [\n  {\n    goal: 400,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 239,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 349,\n  },\n]\n\nexport function DrawerDemo() {\n  return (\n    <div className=\"flex flex-wrap items-start gap-4\">\n      <DrawerBottom />\n      <DrawerScrollableContent />\n      <DrawerDirections />\n    </div>\n  )\n}\n\nfunction DrawerBottom() {\n  const [goal, setGoal] = React.useState(350)\n\n  const onClick = React.useCallback((adjustment: number) => {\n    setGoal((prevGoal) => Math.max(200, Math.min(400, prevGoal + adjustment)))\n  }, [])\n\n  return (\n    <Drawer>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Open Drawer</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <div className=\"mx-auto w-full max-w-sm\">\n          <DrawerHeader>\n            <DrawerTitle>Move Goal</DrawerTitle>\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"p-4 pb-0\">\n            <div className=\"flex items-center justify-center space-x-2\">\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(-10)}\n                disabled={goal <= 200}\n              >\n                <Minus />\n                <span className=\"sr-only\">Decrease</span>\n              </Button>\n              <div className=\"flex-1 text-center\">\n                <div className=\"text-7xl font-bold tracking-tighter\">\n                  {goal}\n                </div>\n                <div className=\"text-[0.70rem] text-muted-foreground uppercase\">\n                  Calories/day\n                </div>\n              </div>\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(10)}\n                disabled={goal >= 400}\n              >\n                <Plus />\n                <span className=\"sr-only\">Increase</span>\n              </Button>\n            </div>\n            <div className=\"mt-3 h-[120px]\">\n              <ResponsiveContainer width=\"100%\" height=\"100%\">\n                <BarChart data={data}>\n                  <Bar\n                    dataKey=\"goal\"\n                    style={\n                      {\n                        fill: \"var(--primary)\",\n                        opacity: 0.9,\n                      } as React.CSSProperties\n                    }\n                  />\n                </BarChart>\n              </ResponsiveContainer>\n            </div>\n          </div>\n          <DrawerFooter>\n            <Button>Submit</Button>\n            <DrawerClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </div>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n\nfunction DrawerScrollableContent() {\n  return (\n    <Drawer direction=\"right\">\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Scrollable Content</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader>\n          <DrawerTitle>Move Goal</DrawerTitle>\n          <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n        </DrawerHeader>\n        <div className=\"overflow-y-auto px-4 text-sm\">\n          <h4 className=\"mb-4 text-lg leading-none font-medium\">Lorem Ipsum</h4>\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p key={index} className=\"mb-4 leading-normal\">\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n        <DrawerFooter>\n          <Button>Submit</Button>\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Cancel</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n\nconst directions = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nfunction DrawerDirections() {\n  return (\n    <>\n      {directions.map((direction) => (\n        <Drawer key={direction} direction={direction}>\n          <DrawerTrigger asChild>\n            <Button variant=\"outline\" className=\"capitalize\">\n              {direction}\n            </Button>\n          </DrawerTrigger>\n          <DrawerContent>\n            <DrawerHeader>\n              <DrawerTitle>Move Goal</DrawerTitle>\n              <DrawerDescription>\n                Set your daily activity goal.\n              </DrawerDescription>\n            </DrawerHeader>\n            <div className=\"overflow-y-auto px-4 text-sm\">\n              {Array.from({ length: 10 }).map((_, index) => (\n                <p key={index} className=\"mb-4 leading-normal\">\n                  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                  do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n                  Ut enim ad minim veniam, quis nostrud exercitation ullamco\n                  laboris nisi ut aliquip ex ea commodo consequat. Duis aute\n                  irure dolor in reprehenderit in voluptate velit esse cillum\n                  dolore eu fugiat nulla pariatur. Excepteur sint occaecat\n                  cupidatat non proident, sunt in culpa qui officia deserunt\n                  mollit anim id est laborum.\n                </p>\n              ))}\n            </div>\n            <DrawerFooter>\n              <Button>Submit</Button>\n              <DrawerClose asChild>\n                <Button variant=\"outline\">Cancel</Button>\n              </DrawerClose>\n            </DrawerFooter>\n          </DrawerContent>\n        </Drawer>\n      ))}\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/dropdown-menu-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function DropdownMenuDemo() {\n  return (\n    <div className=\"flex flex-wrap items-start gap-4\">\n      <DropdownMenuSimple />\n      <DropdownMenuCheckboxes />\n      <DropdownMenuRadioGroupDemo />\n      <DropdownMenuWithAvatar />\n      <DropdownMenuAvatarOnly />\n      <DropdownMenuIconColor />\n    </div>\n  )\n}\n\nfunction DropdownMenuSimple() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"start\" className=\"w-56\">\n        <DropdownMenuLabel>My Account</DropdownMenuLabel>\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Billing\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Settings\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Keyboard shortcuts\n            <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>Team</DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuItem>Email</DropdownMenuItem>\n                <DropdownMenuItem>Message</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>More...</DropdownMenuItem>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuItem>\n            New Team\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>GitHub</DropdownMenuItem>\n        <DropdownMenuItem>Support</DropdownMenuItem>\n        <DropdownMenuItem disabled>API</DropdownMenuItem>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          Log out\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n\nfunction DropdownMenuCheckboxes() {\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\n  const [showPanel, setShowPanel] = React.useState(false)\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Checkboxes</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"start\" className=\"w-56\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Account</DropdownMenuLabel>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"UserIcon\"\n              tabler=\"IconUser\"\n              hugeicons=\"UserIcon\"\n              phosphor=\"UserIcon\"\n              remixicon=\"RiUserLine\"\n            />\n            Profile\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"CreditCardIcon\"\n              tabler=\"IconCreditCard\"\n              hugeicons=\"CreditCardIcon\"\n              phosphor=\"CreditCardIcon\"\n              remixicon=\"RiBankCardLine\"\n            />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"SettingsIcon\"\n              tabler=\"IconSettings\"\n              hugeicons=\"SettingsIcon\"\n              phosphor=\"GearIcon\"\n              remixicon=\"RiSettings3Line\"\n            />\n            Settings\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={showStatusBar}\n            onCheckedChange={setShowStatusBar}\n          >\n            Status Bar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showActivityBar}\n            onCheckedChange={setShowActivityBar}\n            disabled\n          >\n            Activity Bar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showPanel}\n            onCheckedChange={setShowPanel}\n          >\n            Panel\n          </DropdownMenuCheckboxItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"LogOutIcon\"\n              tabler=\"IconLogout\"\n              hugeicons=\"LogoutIcon\"\n              phosphor=\"SignOutIcon\"\n              remixicon=\"RiLogoutBoxLine\"\n            />\n            Sign Out\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n\nfunction DropdownMenuRadioGroupDemo() {\n  const [position, setPosition] = React.useState(\"bottom\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Radio Group</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"start\" className=\"w-56\">\n        <DropdownMenuLabel inset>Panel Position</DropdownMenuLabel>\n        <DropdownMenuGroup>\n          <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\n            <DropdownMenuRadioItem value=\"top\">Top</DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"bottom\">Bottom</DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"right\" disabled>\n              Right\n            </DropdownMenuRadioItem>\n          </DropdownMenuRadioGroup>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n\nfunction DropdownMenuWithAvatar() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button\n          variant=\"outline\"\n          className=\"h-12 justify-start px-2 md:max-w-[200px]\"\n        >\n          <Avatar>\n            <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"Shadcn\" />\n            <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n          </Avatar>\n          <div className=\"grid flex-1 text-left text-sm leading-tight\">\n            <span className=\"truncate font-semibold\">shadcn</span>\n            <span className=\"truncate text-xs text-muted-foreground\">\n              shadcn@example.com\n            </span>\n          </div>\n          <IconPlaceholder\n            lucide=\"ChevronsUpDownIcon\"\n            tabler=\"IconChevronsUpDown\"\n            hugeicons=\"ChevronUpDownIcon\"\n            phosphor=\"CaretUpDownIcon\"\n            remixicon=\"RiExpandUpDownLine\"\n            className=\"ml-auto text-muted-foreground\"\n          />\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56\"\n        align=\"start\"\n      >\n        <DropdownMenuLabel className=\"p-0 font-normal\">\n          <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"Shadcn\" />\n              <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-semibold\">shadcn</span>\n              <span className=\"truncate text-xs text-muted-foreground\">\n                shadcn@example.com\n              </span>\n            </div>\n          </div>\n        </DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"SparklesIcon\"\n              tabler=\"IconSparkles\"\n              hugeicons=\"SparklesIcon\"\n              phosphor=\"SparklesIcon\"\n              remixicon=\"RiSparklingLine\"\n            />\n            Upgrade to Pro\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"BadgeCheckIcon\"\n              tabler=\"IconBadgeCheck\"\n              hugeicons=\"BadgeCheckIcon\"\n              phosphor=\"CheckCircleIcon\"\n              remixicon=\"RiVerifiedBadgeLine\"\n            />\n            Account\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"CreditCardIcon\"\n              tabler=\"IconCreditCard\"\n              hugeicons=\"CreditCardIcon\"\n              phosphor=\"CreditCardIcon\"\n              remixicon=\"RiBankCardLine\"\n            />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"BellIcon\"\n              tabler=\"IconBell\"\n              hugeicons=\"BellIcon\"\n              phosphor=\"BellIcon\"\n              remixicon=\"RiNotification3Line\"\n            />\n            Notifications\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"LogOutIcon\"\n            tabler=\"IconLogout\"\n            hugeicons=\"LogoutIcon\"\n            phosphor=\"SignOutIcon\"\n            remixicon=\"RiLogoutBoxLine\"\n          />\n          Sign Out\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n\nfunction DropdownMenuAvatarOnly() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button\n          variant=\"outline\"\n          className=\"size-8 rounded-full border-none p-0\"\n        >\n          <Avatar>\n            <AvatarImage\n              src=\"https://github.com/maxleiter.png\"\n              alt=\"maxleiter\"\n            />\n            <AvatarFallback className=\"rounded-lg\">LR</AvatarFallback>\n          </Avatar>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56\"\n        align=\"start\"\n      >\n        <DropdownMenuLabel className=\"p-0 font-normal\">\n          <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"maxleiter\"\n              />\n              <AvatarFallback className=\"rounded-lg\">LR</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-semibold\">maxleiter</span>\n              <span className=\"truncate text-xs text-muted-foreground\">\n                maxleiter@example.com\n              </span>\n            </div>\n          </div>\n        </DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"SparklesIcon\"\n              tabler=\"IconSparkles\"\n              hugeicons=\"SparklesIcon\"\n              phosphor=\"SparklesIcon\"\n              remixicon=\"RiSparklingLine\"\n            />\n            Upgrade to Pro\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"BadgeCheckIcon\"\n              tabler=\"IconBadgeCheck\"\n              hugeicons=\"BadgeCheckIcon\"\n              phosphor=\"CheckCircleIcon\"\n              remixicon=\"RiVerifiedBadgeLine\"\n            />\n            Account\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"CreditCardIcon\"\n              tabler=\"IconCreditCard\"\n              hugeicons=\"CreditCardIcon\"\n              phosphor=\"CreditCardIcon\"\n              remixicon=\"RiBankCardLine\"\n            />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"BellIcon\"\n              tabler=\"IconBell\"\n              hugeicons=\"BellIcon\"\n              phosphor=\"BellIcon\"\n              remixicon=\"RiNotification3Line\"\n            />\n            Notifications\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"LogOutIcon\"\n            tabler=\"IconLogout\"\n            hugeicons=\"LogoutIcon\"\n            phosphor=\"SignOutIcon\"\n            remixicon=\"RiLogoutBoxLine\"\n          />\n          Sign Out\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n\nfunction DropdownMenuIconColor() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"ghost\" size=\"icon\">\n          <IconPlaceholder\n            lucide=\"MoreHorizontalIcon\"\n            tabler=\"IconDots\"\n            hugeicons=\"MoreHorizontalCircle01Icon\"\n            phosphor=\"DotsThreeOutlineIcon\"\n            remixicon=\"RiMoreLine\"\n          />\n          <span className=\"sr-only\">Toggle menu</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"start\">\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"PencilIcon\"\n              tabler=\"IconPencil\"\n              hugeicons=\"EditIcon\"\n              phosphor=\"PencilIcon\"\n              remixicon=\"RiPencilLine\"\n            />\n            Edit\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"ShareIcon\"\n              tabler=\"IconShare\"\n              hugeicons=\"ShareIcon\"\n              phosphor=\"ShareIcon\"\n              remixicon=\"RiShareLine\"\n            />\n            Share\n          </DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem variant=\"destructive\">\n            <IconPlaceholder\n              lucide=\"TrashIcon\"\n              tabler=\"IconTrash\"\n              hugeicons=\"DeleteIcon\"\n              phosphor=\"TrashIcon\"\n              remixicon=\"RiDeleteBinLine\"\n            />\n            Delete\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/empty-demo.tsx",
    "content": "import { IconArrowUpRight, IconFolderCode } from \"@tabler/icons-react\"\nimport { PlusIcon, SearchIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Kbd } from \"@/registry/new-york-v4/ui/kbd\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport function EmptyDemo() {\n  return (\n    <div className=\"grid w-full gap-8\">\n      <Empty className=\"min-h-[80svh]\">\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconFolderCode />\n          </EmptyMedia>\n          <EmptyTitle>No projects yet</EmptyTitle>\n          <EmptyDescription>\n            You haven&apos;t created any projects yet. Get started by creating\n            your first project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <div className=\"flex gap-2\">\n            <Button asChild>\n              <a href=\"#\">Create project</a>\n            </Button>\n            <Button variant=\"outline\">Import project</Button>\n          </div>\n          <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n            <a href=\"#\">\n              Learn more <IconArrowUpRight />\n            </a>\n          </Button>\n        </EmptyContent>\n      </Empty>\n      <Empty className=\"min-h-[80svh] bg-muted\">\n        <EmptyHeader>\n          <EmptyTitle>No results found</EmptyTitle>\n          <EmptyDescription>\n            No results found for your search. Try adjusting your search terms.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <Button>Try again</Button>\n          <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n            <a href=\"#\">\n              Learn more <IconArrowUpRight />\n            </a>\n          </Button>\n        </EmptyContent>\n      </Empty>\n      <Empty className=\"min-h-[80svh] border\">\n        <EmptyHeader>\n          <EmptyTitle>404 - Not Found</EmptyTitle>\n          <EmptyDescription>\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\n            for what you need below.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <InputGroup className=\"w-3/4\">\n            <InputGroupInput placeholder=\"Try searching for pages...\" />\n            <InputGroupAddon>\n              <SearchIcon />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>/</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <EmptyDescription>\n            Need help? <a href=\"#\">Contact support</a>\n          </EmptyDescription>\n        </EmptyContent>\n      </Empty>\n      <Empty className=\"min-h-[80svh]\">\n        <EmptyHeader>\n          <EmptyTitle>Nothing to see here</EmptyTitle>\n          <EmptyDescription>\n            No posts have been created yet. Get started by{\" \"}\n            <a href=\"#\">creating your first post</a> to share with the\n            community.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <Button variant=\"outline\">\n            <PlusIcon />\n            New Post\n          </Button>\n        </EmptyContent>\n      </Empty>\n      <div className=\"flex min-h-[800px] items-center justify-center rounded-lg bg-muted p-20\">\n        <Card className=\"max-w-sm\">\n          <CardContent>\n            <Empty className=\"p-4\">\n              <EmptyHeader>\n                <EmptyTitle>404 - Not Found</EmptyTitle>\n                <EmptyDescription>\n                  The page you&apos;re looking for doesn&apos;t exist. Try\n                  searching for what you need below.\n                </EmptyDescription>\n              </EmptyHeader>\n              <EmptyContent>\n                <InputGroup className=\"w-3/4\">\n                  <InputGroupInput placeholder=\"Try searching for pages...\" />\n                  <InputGroupAddon>\n                    <SearchIcon />\n                  </InputGroupAddon>\n                  <InputGroupAddon align=\"inline-end\">\n                    <Kbd>/</Kbd>\n                  </InputGroupAddon>\n                </InputGroup>\n                <EmptyDescription>\n                  Need help? <a href=\"#\">Contact support</a>\n                </EmptyDescription>\n              </EmptyContent>\n            </Empty>\n          </CardContent>\n        </Card>\n      </div>\n      <div className=\"flex min-h-[800px] items-center justify-center rounded-lg bg-muted p-20\">\n        <Card className=\"max-w-sm\">\n          <CardContent>\n            <Empty className=\"p-4\">\n              <EmptyHeader>\n                <EmptyMedia variant=\"icon\">\n                  <IconFolderCode />\n                </EmptyMedia>\n                <EmptyTitle>No projects yet</EmptyTitle>\n                <EmptyDescription>\n                  You haven&apos;t created any projects yet. Get started by\n                  creating your first project.\n                </EmptyDescription>\n              </EmptyHeader>\n              <EmptyContent>\n                <div className=\"flex gap-2\">\n                  <Button asChild>\n                    <a href=\"#\">Create project</a>\n                  </Button>\n                  <Button variant=\"outline\">Import project</Button>\n                </div>\n                <Button\n                  variant=\"link\"\n                  asChild\n                  className=\"text-muted-foreground\"\n                >\n                  <a href=\"#\">\n                    Learn more <IconArrowUpRight />\n                  </a>\n                </Button>\n              </EmptyContent>\n            </Empty>\n          </CardContent>\n        </Card>\n      </div>\n      <div className=\"grid grid-cols-3 gap-6\">\n        <div className=\"flex gap-4\">\n          <Dialog>\n            <DialogTrigger asChild>\n              <Button>Open Dialog</Button>\n            </DialogTrigger>\n            <DialogContent>\n              <DialogHeader className=\"sr-only\">\n                <DialogTitle>Dialog Title</DialogTitle>\n                <DialogDescription>Dialog Description</DialogDescription>\n              </DialogHeader>\n              <Empty className=\"p-4\">\n                <EmptyHeader>\n                  <EmptyMedia variant=\"icon\">\n                    <IconFolderCode />\n                  </EmptyMedia>\n                  <EmptyTitle>No projects yet</EmptyTitle>\n                  <EmptyDescription>\n                    You haven&apos;t created any projects yet. Get started by\n                    creating your first project.\n                  </EmptyDescription>\n                </EmptyHeader>\n                <EmptyContent>\n                  <div className=\"flex gap-2\">\n                    <Button asChild>\n                      <a href=\"#\">Create project</a>\n                    </Button>\n                    <Button variant=\"outline\">Import project</Button>\n                  </div>\n                  <Button\n                    variant=\"link\"\n                    asChild\n                    className=\"text-muted-foreground\"\n                  >\n                    <a href=\"#\">\n                      Learn more <IconArrowUpRight />\n                    </a>\n                  </Button>\n                </EmptyContent>\n              </Empty>\n            </DialogContent>\n          </Dialog>\n          <Popover>\n            <PopoverTrigger asChild>\n              <Button variant=\"outline\">Open Popover</Button>\n            </PopoverTrigger>\n            <PopoverContent className=\"rounded-2xl p-2\">\n              <Empty className=\"rounded-sm p-6\">\n                <EmptyHeader>\n                  <EmptyTitle>Nothing to see here</EmptyTitle>\n                  <EmptyDescription>\n                    No posts have been created yet.{\" \"}\n                    <a href=\"#\">Create your first post</a> to share with the\n                    community.\n                  </EmptyDescription>\n                </EmptyHeader>\n                <EmptyContent>\n                  <Button variant=\"outline\">\n                    <PlusIcon />\n                    New Post\n                  </Button>\n                </EmptyContent>\n              </Empty>\n            </PopoverContent>\n          </Popover>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/field-demo.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n  IconCircle,\n  IconCircleCheckFilled,\n  IconInfoCircle,\n  IconMinus,\n  IconPlus,\n  IconUsers,\n  IconWorld,\n} from \"@tabler/icons-react\"\nimport { addDays, format } from \"date-fns\"\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\"\nimport {\n  CalendarIcon,\n  ClockIcon,\n  DownloadIcon,\n  FileTextIcon,\n  FolderIcon,\n  MonitorIcon,\n} from \"lucide-react\"\nimport { type DateRange } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/registry/new-york-v4/ui/input-otp\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport function FieldDemo() {\n  return (\n    <div className=\"@container w-full\">\n      <div className=\"grid gap-4 bg-muted p-4 @3xl:grid-cols-2 @5xl:grid-cols-3 @[120rem]:grid-cols-4 @[140rem]:grid-cols-5\">\n        <div className=\"flex flex-col gap-6\">\n          <BasicFields />\n          <PrivacySettings />\n          <HearAboutUs />\n          <ClusterConfig />\n          <ShippingMethods />\n        </div>\n        <div className=\"flex flex-col gap-6\">\n          <SubscriptionPlan />\n          <FormInputDemo />\n          <FormInputTypesDemo />\n          <FeedbackForm />\n          <JobApplicationForm />\n          <FormDatePickerDemo />\n          <LoginForm />\n        </div>\n        <div className=\"flex flex-col gap-6\">\n          <FormSpecialInputTypesDemo />\n          <FormTextareaDemo />\n          <FormSelectDemo />\n          <ProfileSettingsForm />\n          <FormFieldGroupOutlineDemo />\n          <SurveyForm />\n          <SignupForm />\n        </div>\n        <div className=\"flex flex-col gap-6\">\n          <FormRadioDemo />\n          <FormCheckboxDemo />\n          <FormSliderDemo />\n          <NewsletterForm />\n          <PaymentForm />\n          <ContactForm />\n          <ComplexFormDemo />\n          <ComplexFormInvalidDemo />\n        </div>\n        <div className=\"flex flex-col gap-6\">\n          <CheckoutForm />\n          <FormSwitchDemo />\n          <FormToggleGroupDemo />\n          <FormOTPDemo />\n          <FormFieldSetDemo />\n          <FormFieldSeparatorDemo />\n          <FinderPreferencesForm />\n        </div>\n        <div className=\"flex flex-col gap-6\"></div>\n      </div>\n    </div>\n  )\n}\n\nfunction BasicFields() {\n  return (\n    <Card>\n      <CardContent>\n        <FieldSet>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"name-x8k\">Name</FieldLabel>\n              <FieldDescription>\n                Enter your name so it is long enough to test the layout.\n              </FieldDescription>\n              <Input id=\"name-x8k\" type=\"text\" />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"message-x8k\">Message</FieldLabel>\n              <FieldDescription>\n                Enter your message so it is long enough to test the layout.\n              </FieldDescription>\n              <Textarea id=\"message-x8k\" placeholder=\"Enter your message\" />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"message-x28k\">Message</FieldLabel>\n              <Textarea id=\"message-x28k\" placeholder=\"Enter your message\" />\n              <FieldDescription>\n                Enter your message so it is long enough to test the layout.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"name-2-p9m\">\n                Name{\" \"}\n                <Badge variant=\"secondary\" className=\"ml-auto\">\n                  Recommended\n                </Badge>\n              </FieldLabel>\n              <Input id=\"name-2-p9m\" type=\"text\" />\n              <FieldDescription>\n                Enter your name so it is long enough to test the layout.\n              </FieldDescription>\n            </Field>\n            <FieldSeparator />\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"terms-21f-q7r\" />\n              <FieldLabel htmlFor=\"terms-21f-q7r\">\n                Accept terms and conditions\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <FieldLabel htmlFor=\"terms-21f-w4t\">\n                Accept terms and conditions\n              </FieldLabel>\n              <Checkbox id=\"terms-21f-w4t\" />\n            </Field>\n            <Field orientation=\"horizontal\">\n              <FieldLabel htmlFor=\"dark-mode-b5n\">Dark Mode</FieldLabel>\n              <Switch id=\"dark-mode-b5n\" />\n            </Field>\n            <RadioGroup>\n              <Field orientation=\"horizontal\">\n                <FieldLabel htmlFor=\"dark-mode-22-f3j\">Dark Mode</FieldLabel>\n                <RadioGroupItem value=\"dark-mode-22\" id=\"dark-mode-22-f3j\" />\n              </Field>\n            </RadioGroup>\n            <FieldSeparator />\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"enable-touch-id-m8v\" />\n              <FieldContent>\n                <FieldLabel htmlFor=\"enable-touch-id-m8v\">\n                  Enable Touch ID\n                </FieldLabel>\n                <FieldDescription>\n                  Enable Touch ID to quickly unlock your device.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"enable-touch-id-88v\" />\n              <FieldContent>\n                <FieldLabel htmlFor=\"enable-touch-id-88v\">\n                  Enable Touch ID and Face ID to make it even faster to unlock\n                  your device. This is a long label to test the layout.\n                </FieldLabel>\n                <FieldDescription>\n                  Enable Touch ID to quickly unlock your device.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n            <FieldLabel htmlFor=\"enable-touch-id-m8x\">\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"enable-touch-id-m8x\" />\n                <FieldContent>\n                  <FieldTitle>Enable Touch ID</FieldTitle>\n                  <FieldDescription>\n                    Enable Touch ID to quickly unlock your device.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"enable-touch-id-18v\">\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"enable-touch-id-18v\" />\n                <FieldContent>\n                  <FieldTitle>\n                    Enable Touch ID and Face ID to make it even faster to unlock\n                    your device. This is a long label to test the layout.\n                  </FieldTitle>\n                  <FieldDescription>\n                    Enable Touch ID to quickly unlock your device.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n            <RadioGroup className=\"gap-6\">\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem\n                  value=\"enable-touch-id-m10v\"\n                  id=\"enable-touch-id-m10v\"\n                />\n                <FieldContent>\n                  <FieldLabel htmlFor=\"enable-touch-id-m10v\">\n                    Enable Touch ID\n                  </FieldLabel>\n                  <FieldDescription>\n                    Enable Touch ID to quickly unlock your device.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem\n                  value=\"enable-touch-id-m10v\"\n                  id=\"enable-touch-id-m10v\"\n                />\n                <FieldContent>\n                  <FieldLabel htmlFor=\"enable-touch-id-m10v\">\n                    Enable Touch ID and Face ID to make it even faster to unlock\n                    your device. This is a long label to test the layout.\n                  </FieldLabel>\n                  <FieldDescription>\n                    Enable Touch ID to quickly unlock your device.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </RadioGroup>\n            <RadioGroup className=\"gap-3\">\n              <FieldLabel htmlFor=\"enable-touch-id-m2222v\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem\n                    value=\"enable-touch-id-m2222v\"\n                    id=\"enable-touch-id-m2222v\"\n                  />\n                  <FieldContent>\n                    <FieldTitle>Enable Touch ID</FieldTitle>\n                    <FieldDescription>\n                      Enable Touch ID to quickly unlock your device.\n                    </FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"enable-touch-id-m10xx\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem\n                    value=\"enable-touch-id-m10xx\"\n                    id=\"enable-touch-id-m10xx\"\n                  />\n                  <FieldContent>\n                    <FieldTitle>\n                      Enable Touch ID and Face ID to make it even faster to\n                      unlock your device. This is a long label to test the\n                      layout.\n                    </FieldTitle>\n                    <FieldDescription>\n                      Enable Touch ID to quickly unlock your device.\n                    </FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldLabel>\n            </RadioGroup>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend variant=\"label\">Battery Level</FieldLegend>\n              <FieldDescription>\n                Choose your preferred battery level.\n              </FieldDescription>\n              <RadioGroup>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"high\" id=\"battery-level-high-k6p\" />\n                  <FieldLabel htmlFor=\"battery-level-high-k6p\">High</FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem\n                    value=\"medium\"\n                    id=\"battery-level-medium-z9l\"\n                  />\n                  <FieldLabel htmlFor=\"battery-level-medium-z9l\">\n                    Medium\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"low\" id=\"battery-level-low-v1c\" />\n                  <FieldLabel htmlFor=\"battery-level-low-v1c\">Low</FieldLabel>\n                </Field>\n              </RadioGroup>\n            </FieldSet>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend variant=\"label\">\n                Search Results Search Results\n              </FieldLegend>\n              <FieldDescription>\n                Only selected categories will appear in search results.\n              </FieldDescription>\n              <FieldGroup className=\"gap-3\">\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"search-results-application-r8s\" />\n                  <FieldLabel htmlFor=\"search-results-application-r8s\">\n                    Application\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"search-results-music-n3w\" />\n                  <FieldLabel htmlFor=\"search-results-music-n3w\">\n                    Music\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"search-results-video-u7y\" />\n                  <FieldLabel htmlFor=\"search-results-video-u7y\">\n                    Video\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"search-results-photo-a4e\" />\n                  <FieldLabel htmlFor=\"search-results-photo-a4e\">\n                    Photo\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"search-results-document-i9o\" />\n                  <FieldLabel htmlFor=\"search-results-document-i9o\">\n                    Document\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"search-results-other-h2k\" />\n                  <FieldLabel htmlFor=\"search-results-other-h2k\">\n                    Other\n                  </FieldLabel>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend>Measurement System</FieldLegend>\n              <FieldDescription>\n                Select your preferred measurement system.\n              </FieldDescription>\n              <RadioGroup>\n                <FieldLabel htmlFor=\"metric-l6m\">\n                  <Field orientation=\"horizontal\">\n                    <FieldTitle>Metric</FieldTitle>\n                    <RadioGroupItem value=\"metric\" id=\"metric-l6m\" />\n                  </Field>\n                </FieldLabel>\n                <FieldLabel>\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"imperial\" id=\"imperial-x8j\" />\n                    <FieldTitle>Imperial</FieldTitle>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"custom-units-p3v\">\n                  <Field orientation=\"horizontal\">\n                    <FieldTitle>Custom</FieldTitle>\n                    <RadioGroupItem\n                      value=\"custom-units\"\n                      id=\"custom-units-p3v\"\n                    />\n                  </Field>\n                </FieldLabel>\n              </RadioGroup>\n            </FieldSet>\n          </FieldGroup>\n        </FieldSet>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction SubscriptionPlan() {\n  return (\n    <Card>\n      <CardContent>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>Subscription Plan</FieldLegend>\n            <FieldDescription>Choose your subscription plan.</FieldDescription>\n            <RadioGroup defaultValue=\"plus\">\n              <FieldLabel htmlFor=\"plus-g4s\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>Plus</FieldTitle>\n                    <FieldDescription>\n                      For individuals and small teams\n                    </FieldDescription>\n                  </FieldContent>\n                  <RadioGroupItem value=\"plus\" id=\"plus-g4s\" />\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"pro-m9d\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>Pro</FieldTitle>\n                    <FieldDescription>\n                      For individuals and small teams\n                    </FieldDescription>\n                  </FieldContent>\n                  <RadioGroupItem value=\"pro\" id=\"pro-m9d\" />\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"enterprise-k7w\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>Enterprise</FieldTitle>\n                    <FieldDescription>\n                      For large teams and enterprises\n                    </FieldDescription>\n                  </FieldContent>\n                  <RadioGroupItem value=\"enterprise\" id=\"enterprise-k7w\" />\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"custom-plan-r3t\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>Custom</FieldTitle>\n                    <FieldDescription>\n                      For large teams and enterprises\n                    </FieldDescription>\n                  </FieldContent>\n                  <RadioGroupItem value=\"custom-plan\" id=\"custom-plan-r3t\" />\n                </Field>\n              </FieldLabel>\n            </RadioGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>Display Settings</FieldLegend>\n            <FieldDescription>Manage your display settings.</FieldDescription>\n            <Field>\n              <FieldLabel htmlFor=\"increase-contrast-b8h\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>Increase Contrast</FieldTitle>\n                    <FieldDescription>\n                      Increase the contrast of the UI to make it easier to read.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch id=\"increase-contrast-b8h\" />\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"reduce-transparency-v5l\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>Reduce Transparency</FieldTitle>\n                    <FieldDescription>\n                      Reduce the transparency of the UI to make it easier to\n                      read.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch id=\"reduce-transparency-v5l\" />\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"reduce-motion-n2j\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>Reduce Motion</FieldTitle>\n                    <FieldDescription>\n                      Reduce motion of the UI to make it easier to read.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch id=\"reduce-motion-n2j\" />\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"enable-dark-mode-w6q\">\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle>Enable Dark Mode</FieldTitle>\n                    <FieldDescription>\n                      Enable dark mode to make the UI easier to read.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch id=\"enable-dark-mode-w6q\" />\n                </Field>\n              </FieldLabel>\n            </Field>\n            <FieldSet>\n              <FieldLegend>Display Resolution</FieldLegend>\n              <FieldDescription>\n                Select your preferred display resolution.\n              </FieldDescription>\n              <RadioGroup className=\"grid grid-cols-2 gap-2\">\n                <FieldLabel htmlFor=\"1080p-z4c\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"1080p\" id=\"1080p-z4c\" />\n                    <FieldTitle>1920x1080</FieldTitle>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"1440p-x7y\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"1440p\" id=\"1440p-x7y\" />\n                    <FieldTitle>2560x1440</FieldTitle>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"4k-p1v\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"4k\" id=\"4k-p1v\" />\n                    <FieldTitle>3840x2160</FieldTitle>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"8k-u9e\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"8k\" id=\"8k-u9e\" />\n                    <FieldTitle>7680x4320</FieldTitle>\n                  </Field>\n                </FieldLabel>\n              </RadioGroup>\n            </FieldSet>\n          </FieldSet>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction PrivacySettings() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <Card>\n        <CardHeader>\n          <CardTitle>Privacy Settings</CardTitle>\n          <CardDescription>\n            Choose who can see your profile and what they can see.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <RadioGroup>\n            <FieldLabel htmlFor=\"everyone-f8k\">\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>\n                    Everyone <Badge className=\"rounded-full\">Default</Badge>\n                  </FieldTitle>\n                  <FieldDescription>\n                    Anyone can see your profile.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value=\"everyone\"\n                  id=\"everyone-f8k\"\n                  className=\"sr-only\"\n                />\n                <IconCircle className=\"size-5 stroke-input stroke-1 group-has-data-[state=checked]/field:hidden\" />\n                <IconCircleCheckFilled className=\"hidden size-5 fill-primary group-has-data-[state=checked]/field:block\" />\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"followers-s7m\">\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>Followers</FieldTitle>\n                  <FieldDescription>\n                    Visible to your followers and connections.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value=\"followers\"\n                  id=\"followers-s7m\"\n                  className=\"sr-only\"\n                />\n                <IconCircle className=\"size-5 stroke-input stroke-1 group-has-data-[state=checked]/field:hidden\" />\n                <IconCircleCheckFilled className=\"hidden size-5 fill-primary group-has-data-[state=checked]/field:block\" />\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"custom-q3r\">\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>Custom</FieldTitle>\n                  <FieldDescription>\n                    Choose who can see your profile.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value=\"custom\"\n                  id=\"custom-q3r\"\n                  className=\"sr-only\"\n                />\n                <IconCircle className=\"size-5 stroke-input stroke-1 group-has-data-[state=checked]/field:hidden\" />\n                <IconCircleCheckFilled className=\"hidden size-5 fill-primary group-has-data-[state=checked]/field:block\" />\n              </Field>\n            </FieldLabel>\n          </RadioGroup>\n        </CardContent>\n      </Card>\n      <Card>\n        <CardHeader>\n          <CardTitle>Privacy Settings</CardTitle>\n          <CardDescription>\n            Choose who can see your profile and what they can see.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <RadioGroup>\n            <FieldLabel htmlFor=\"everyone-b9p\">\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"everyone\" id=\"everyone-b9p\" />\n                <FieldContent>\n                  <FieldTitle>Everyone</FieldTitle>\n                  <FieldDescription>\n                    Anyone can see your profile.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"followers-v3n\">\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"followers\" id=\"followers-v3n\" />\n                <FieldContent>\n                  <FieldTitle>Followers</FieldTitle>\n                  <FieldDescription>\n                    Visible to your followers and connections.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"custom-t8v\">\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"custom\" id=\"custom-t8v\" />\n                <FieldContent>\n                  <FieldTitle>Custom</FieldTitle>\n                  <FieldDescription>\n                    Choose who can see your profile.\n                  </FieldDescription>\n                </FieldContent>\n                <Button variant=\"outline\" className=\"w-fit\">\n                  Choose\n                </Button>\n              </Field>\n            </FieldLabel>\n          </RadioGroup>\n        </CardContent>\n      </Card>\n      <Card>\n        <CardHeader>\n          <CardTitle>Privacy Settings</CardTitle>\n          <CardDescription>\n            Choose who can see your profile and what they can see.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <RadioGroup>\n            <FieldLabel htmlFor=\"everyone-3-k4p\">\n              <Field orientation=\"horizontal\">\n                <div className=\"flex size-8 shrink-0 items-center justify-center rounded-full border bg-muted transition-all duration-100 group-has-data-[state=checked]/field:border-primary group-has-data-[state=checked]/field:bg-primary group-has-data-[state=checked]/field:text-primary-foreground\">\n                  <IconWorld className=\"size-4\" />\n                </div>\n                <FieldContent>\n                  <FieldTitle>Everyone</FieldTitle>\n                  <FieldDescription>\n                    Anyone can see your profile.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value=\"everyone\"\n                  id=\"everyone-3-k4p\"\n                  className=\"sr-only\"\n                />\n                <IconCircle className=\"size-5 stroke-input stroke-1 group-has-data-[state=checked]/field:hidden\" />\n                <IconCircleCheckFilled className=\"hidden size-5 fill-primary group-has-data-[state=checked]/field:block\" />\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"followers-3-m7j\">\n              <Field orientation=\"horizontal\">\n                <div className=\"flex size-8 shrink-0 items-center justify-center rounded-full border bg-muted transition-all duration-100 group-has-data-[state=checked]/field:border-primary group-has-data-[state=checked]/field:bg-primary group-has-data-[state=checked]/field:text-primary-foreground\">\n                  <IconUsers className=\"size-4\" />\n                </div>\n                <FieldContent>\n                  <FieldTitle>Followers</FieldTitle>\n                  <FieldDescription>\n                    Visible to your followers and connections.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value=\"followers-3\"\n                  id=\"followers-3-m7j\"\n                  className=\"sr-only\"\n                />\n                <IconCircle className=\"size-5 stroke-input stroke-1 group-has-data-[state=checked]/field:hidden\" />\n                <IconCircleCheckFilled className=\"hidden size-5 fill-primary group-has-data-[state=checked]/field:block\" />\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"custom-3-r9w\">\n              <Field orientation=\"horizontal\">\n                <div className=\"flex size-8 shrink-0 items-center justify-center rounded-full border bg-muted transition-all duration-100 group-has-data-[state=checked]/field:border-primary group-has-data-[state=checked]/field:bg-primary group-has-data-[state=checked]/field:text-primary-foreground\">\n                  <IconPlus className=\"size-4\" />\n                </div>\n                <FieldContent>\n                  <FieldTitle>Custom</FieldTitle>\n                  <FieldDescription>\n                    Choose who can see your profile.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value=\"custom-3\"\n                  id=\"custom-3-r9w\"\n                  className=\"sr-only\"\n                />\n                <IconCircle className=\"size-5 stroke-input stroke-1 group-has-data-[state=checked]/field:hidden\" />\n                <IconCircleCheckFilled className=\"hidden size-5 fill-primary group-has-data-[state=checked]/field:block\" />\n              </Field>\n            </FieldLabel>\n          </RadioGroup>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n\nfunction HearAboutUs() {\n  return (\n    <Card>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <FieldSet>\n              <FieldLegend>How did you hear about us?</FieldLegend>\n              <FieldDescription>\n                Select the option that best describes how you heard about us.\n              </FieldDescription>\n              <FieldGroup className=\"flex flex-row flex-wrap gap-2 [--radius:9999rem] **:data-[slot=checkbox]:rounded-full **:data-[slot=field]:gap-2 **:data-[slot=field]:overflow-hidden **:data-[slot=field]:px-2.5 **:data-[slot=field]:py-2 *:data-[slot=field-label]:w-fit\">\n                <FieldLabel htmlFor=\"social-media-b2s\">\n                  <Field orientation=\"horizontal\">\n                    <Checkbox\n                      value=\"social-media\"\n                      id=\"social-media-b2s\"\n                      className=\"-ml-6 -translate-x-1 transition-all duration-100 group-has-data-[state=checked]/field-label:ml-0 group-has-data-[state=checked]/field-label:translate-x-0\"\n                    />\n                    <FieldTitle>Social Media</FieldTitle>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"search-engine-f6h\">\n                  <Field orientation=\"horizontal\">\n                    <Checkbox\n                      value=\"search-engine\"\n                      id=\"search-engine-f6h\"\n                      className=\"-ml-6 -translate-x-1 transition-all duration-100 group-has-data-[state=checked]/field-label:ml-0 group-has-data-[state=checked]/field-label:translate-x-0\"\n                    />\n                    <FieldTitle>Search Engine</FieldTitle>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"referral-l3n\">\n                  <Field orientation=\"horizontal\">\n                    <Checkbox\n                      value=\"referral\"\n                      id=\"referral-l3n\"\n                      className=\"-ml-6 -translate-x-1 transition-all duration-100 group-has-data-[state=checked]/field-label:ml-0 group-has-data-[state=checked]/field-label:translate-x-0\"\n                    />\n                    <FieldTitle>Referral</FieldTitle>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"other-u5c\">\n                  <Field orientation=\"horizontal\">\n                    <Checkbox\n                      value=\"other\"\n                      id=\"other-u5c\"\n                      className=\"-ml-6 -translate-x-1 transition-all duration-100 group-has-data-[state=checked]/field-label:ml-0 group-has-data-[state=checked]/field-label:translate-x-0\"\n                    />\n                    <FieldTitle>Other (Please specify)</FieldTitle>\n                  </Field>\n                </FieldLabel>\n              </FieldGroup>\n            </FieldSet>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction ClusterConfig() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Buy your cluster</CardTitle>\n        <CardDescription>\n          Need a custom setup? <a href=\"#\">Contact us</a>.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <FieldSet>\n              <FieldLegend>GPU Type</FieldLegend>\n              <FieldDescription>\n                Select the GPU type for your cluster.\n              </FieldDescription>\n              <RadioGroup defaultValue=\"h100\">\n                <FieldLabel htmlFor=\"h100-k9s\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"h100\" id=\"h100-k9s\" />\n                    <FieldContent>\n                      <FieldTitle>NVIDIA H100</FieldTitle>\n                      <FieldDescription>SXM5 80GB VRAM</FieldDescription>\n                    </FieldContent>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"h200-m3v\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"h200\" id=\"h200-m3v\" />\n                    <FieldContent>\n                      <FieldTitle>NVIDIA H200</FieldTitle>\n                      <FieldDescription>SXM5 141GB VRAM</FieldDescription>\n                    </FieldContent>\n                  </Field>\n                </FieldLabel>\n              </RadioGroup>\n            </FieldSet>\n            <Field>\n              <FieldLabel htmlFor=\"compute-environment-p8w\">\n                Compute Environment\n              </FieldLabel>\n              <RadioGroup defaultValue=\"kubernetes\">\n                <FieldLabel htmlFor=\"kubernetes-r2h\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"kubernetes\" id=\"kubernetes-r2h\" />\n                    <FieldContent>\n                      <FieldTitle>Kubernetes</FieldTitle>\n                      <FieldDescription>\n                        Run GPU workloads on a K8s configured cluster.\n                      </FieldDescription>\n                    </FieldContent>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"vm-z4k\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"vm\" id=\"vm-z4k\" />\n                    <FieldContent>\n                      <FieldTitle>Virtual Machine</FieldTitle>\n                      <FieldDescription>\n                        Access a VM configured cluster via SSH to run GPU\n                        workloads.\n                      </FieldDescription>\n                    </FieldContent>\n                  </Field>\n                </FieldLabel>\n              </RadioGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"number-of-gpus-f6l\">\n                Number of GPUs\n              </FieldLabel>\n              <FieldDescription>\n                Buy a single node with 8 GPUs or many interconnected nodes. You\n                can add more GPUs later.\n              </FieldDescription>\n              <ButtonGroup>\n                <Input />\n                <Button variant=\"outline\" size=\"icon\">\n                  <IconMinus />\n                </Button>\n                <Button variant=\"outline\" size=\"icon\">\n                  <IconPlus />\n                </Button>\n              </ButtonGroup>\n            </Field>\n            <FieldSet>\n              <FieldLegend>Starting date</FieldLegend>\n              <RadioGroup defaultValue=\"today\">\n                <FieldLabel htmlFor=\"today-n7t\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"today\" id=\"today-n7t\" />\n                    <FieldContent>\n                      <FieldTitle>Start cluster now</FieldTitle>\n                      <FieldDescription>\n                        Your cluster will be ready to use immediately.\n                      </FieldDescription>\n                    </FieldContent>\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"scheduled-u5j\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"scheduled\" id=\"scheduled-u5j\" />\n                    <FieldContent>\n                      <FieldTitle>Schedule a start date and time</FieldTitle>\n                      <FieldDescription>\n                        Set a start date and time for your cluster.\n                      </FieldDescription>\n                    </FieldContent>\n                  </Field>\n                </FieldLabel>\n              </RadioGroup>\n            </FieldSet>\n            <Field>\n              <FieldLabel htmlFor=\"duration-b9p\">Duration</FieldLabel>\n              <FieldDescription>You can add more time later.</FieldDescription>\n              <ButtonGroup>\n                <Input />\n                <Select defaultValue=\"hours\">\n                  <SelectTrigger id=\"duration-b9p\" className=\"w-24\">\n                    <SelectValue placeholder=\"Select duration\" />\n                  </SelectTrigger>\n                  <SelectContent align=\"end\">\n                    <SelectItem value=\"hours\">Hours</SelectItem>\n                    <SelectItem value=\"days\">Days</SelectItem>\n                    <SelectItem value=\"weeks\">Weeks</SelectItem>\n                  </SelectContent>\n                </Select>\n              </ButtonGroup>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Button type=\"submit\">Get Instant Quote</Button>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction ShippingMethods() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <Card>\n        <CardContent>\n          <FieldSet>\n            <FieldLegend>Shipping Method</FieldLegend>\n            <FieldDescription>\n              Select the shipping method for your order.\n            </FieldDescription>\n            <RadioGroup>\n              <FieldLabel htmlFor=\"pickup-x8m\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"pickup\" id=\"pickup-x8m\" />\n                  <FieldContent>\n                    <FieldTitle>\n                      Pick up your order at a nearby store\n                    </FieldTitle>\n                    <FieldDescription>\n                      Available at most stores.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Badge\n                    variant=\"secondary\"\n                    className=\"group-has-data-[state=checked]/field-label:bg-primary group-has-data-[state=checked]/field-label:text-primary-foreground\"\n                  >\n                    Free\n                  </Badge>\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"delivery-v3s\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"delivery\" id=\"delivery-v3s\" />\n                  <FieldContent>\n                    <FieldTitle>Delivery to your door</FieldTitle>\n                    <FieldDescription>\n                      We will deliver your order to your door.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Badge\n                    variant=\"secondary\"\n                    className=\"group-has-data-[state=checked]/field-label:bg-primary group-has-data-[state=checked]/field-label:text-primary-foreground\"\n                  >\n                    $10.00\n                  </Badge>\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"express-l7r\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"express\" id=\"express-l7r\" />\n                  <FieldContent>\n                    <FieldTitle>Express delivery</FieldTitle>\n                    <FieldDescription>\n                      Next day delivery. Available in most areas.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Badge\n                    variant=\"secondary\"\n                    className=\"group-has-data-[state=checked]/field-label:bg-primary group-has-data-[state=checked]/field-label:text-primary-foreground\"\n                  >\n                    $15.00\n                  </Badge>\n                </Field>\n              </FieldLabel>\n            </RadioGroup>\n          </FieldSet>\n        </CardContent>\n      </Card>\n      <form>\n        <FieldGroup className=\"gap-6 rounded-lg border bg-background p-6\">\n          <FieldSet>\n            <FieldLegend>GPU Type</FieldLegend>\n            <FieldDescription>\n              Select the GPU type for your cluster.\n            </FieldDescription>\n            <RadioGroup defaultValue=\"h100\">\n              <FieldLabel htmlFor=\"h100-v00\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"h100\" id=\"h100-v00\" />\n                  <FieldContent>\n                    <FieldTitle>NVIDIA H100</FieldTitle>\n                    <FieldDescription>SXM5 80GB VRAM</FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"h200-n86\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"h200\" id=\"h200-n86\" />\n                  <FieldContent>\n                    <FieldTitle>NVIDIA H200</FieldTitle>\n                    <FieldDescription>SXM5 141GB VRAM</FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldLabel>\n            </RadioGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>Compute Environment</FieldLegend>\n            <FieldDescription>\n              Select the compute environment for your cluster.\n            </FieldDescription>\n            <RadioGroup defaultValue=\"kubernetes\">\n              <FieldLabel htmlFor=\"kubernetes-dtv\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"kubernetes\" id=\"kubernetes-dtv\" />\n                  <FieldContent>\n                    <FieldTitle>Kubernetes</FieldTitle>\n                    <FieldDescription>\n                      Run GPU workloads on a K8s configured cluster.\n                    </FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"vm-8rk\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"vm\" id=\"vm-8rk\" />\n                  <FieldContent>\n                    <FieldTitle>Virtual Machine</FieldTitle>\n                    <FieldDescription>\n                      Access a VM configured cluster via SSH to run GPU\n                      workloads.\n                    </FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldLabel>\n            </RadioGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>Starting date</FieldLegend>\n            <FieldDescription>\n              When you want to start your cluster.\n            </FieldDescription>\n            <RadioGroup defaultValue=\"today\">\n              <FieldLabel htmlFor=\"today-pmd\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"today\" id=\"today-pmd\" />\n                  <FieldContent>\n                    <FieldTitle>Start cluster now</FieldTitle>\n                    <FieldDescription>\n                      Your cluster will be ready to use immediately.\n                    </FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldLabel>\n              <FieldLabel htmlFor=\"scheduled-tc9\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"scheduled\" id=\"scheduled-tc9\" />\n                  <FieldContent>\n                    <FieldTitle>Schedule a start date and time</FieldTitle>\n                    <FieldDescription>\n                      Set a start date and time for your cluster.\n                    </FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldLabel>\n            </RadioGroup>\n          </FieldSet>\n          <Field>\n            <Button type=\"submit\">Get Instant Quote</Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n\nfunction SignupForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Create an account</CardTitle>\n        <CardDescription>\n          Enter your information below to create your account\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"signup-name-us1\">Full Name</FieldLabel>\n              <Input\n                id=\"signup-name-us1\"\n                type=\"text\"\n                placeholder=\"John Doe\"\n                required\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"signup-email-zvy\">Email</FieldLabel>\n              <Input\n                id=\"signup-email-zvy\"\n                type=\"email\"\n                placeholder=\"m@example.com\"\n                required\n              />\n              <FieldDescription>\n                We&apos;ll use this to contact you. We will not share your email\n                with anyone else.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"signup-password-rh7\">Password</FieldLabel>\n              <Input id=\"signup-password-rh7\" type=\"password\" required />\n              <FieldDescription>\n                Must be at least 8 characters long.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"signup-confirm-password-ha8\">\n                Confirm Password\n              </FieldLabel>\n              <Input\n                id=\"signup-confirm-password-ha8\"\n                type=\"password\"\n                required\n              />\n              <FieldDescription>Please confirm your password.</FieldDescription>\n            </Field>\n            <FieldGroup>\n              <Field>\n                <Button type=\"submit\" className=\"w-full\">\n                  Create Account\n                </Button>\n                <Button variant=\"outline\" className=\"w-full\">\n                  Sign up with Google\n                </Button>\n              </Field>\n              <Field>\n                <p className=\"text-center text-sm\">\n                  Already have an account?{\" \"}\n                  <a href=\"#\" className=\"underline underline-offset-4\">\n                    Sign in\n                  </a>\n                </p>\n              </Field>\n            </FieldGroup>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction LoginForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Sign in to your account</CardTitle>\n        <CardDescription>\n          Enter your credentials to access your account\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"login-7x9-email-2kg\">Email</FieldLabel>\n              <Input\n                id=\"login-7x9-email-2kg\"\n                type=\"email\"\n                placeholder=\"m@example.com\"\n                required\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"login-7x9-password-5l8\">Password</FieldLabel>\n              <Input id=\"login-7x9-password-5l8\" type=\"password\" required />\n              <FieldDescription>\n                <a href=\"#\" className=\"text-sm underline underline-offset-4\">\n                  Forgot your password?\n                </a>\n              </FieldDescription>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"login-7x9-remember-6lp\" />\n              <FieldLabel\n                htmlFor=\"login-7x9-remember-6lp\"\n                className=\"font-normal\"\n              >\n                Remember me for 30 days\n              </FieldLabel>\n            </Field>\n            <Button type=\"submit\" className=\"w-full\">\n              Sign In\n            </Button>\n\n            <FieldSeparator />\n\n            <FieldGroup>\n              <Button variant=\"outline\" className=\"w-full\">\n                <svg className=\"mr-2 h-4 w-4\" viewBox=\"0 0 24 24\">\n                  <path\n                    d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n                    fill=\"#4285F4\"\n                  />\n                  <path\n                    d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n                    fill=\"#34A853\"\n                  />\n                  <path\n                    d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n                    fill=\"#FBBC05\"\n                  />\n                  <path\n                    d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n                    fill=\"#EA4335\"\n                  />\n                </svg>\n                Continue with Google\n              </Button>\n              <Button variant=\"outline\" className=\"w-full\">\n                <svg\n                  className=\"mr-2 h-4 w-4\"\n                  fill=\"currentColor\"\n                  viewBox=\"0 0 24 24\"\n                >\n                  <path d=\"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z\" />\n                </svg>\n                Continue with GitHub\n              </Button>\n              <Button variant=\"outline\" className=\"w-full\">\n                <svg\n                  className=\"mr-2 h-4 w-4\"\n                  fill=\"currentColor\"\n                  viewBox=\"0 0 24 24\"\n                >\n                  <path d=\"M12 2C6.477 2 2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.879V14.89h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.989C18.343 21.129 22 16.99 22 12c0-5.523-4.477-10-10-10z\" />\n                </svg>\n                Continue with Facebook\n              </Button>\n            </FieldGroup>\n\n            <FieldSeparator>New to our platform?</FieldSeparator>\n\n            <Field>\n              <p className=\"text-center text-sm\">\n                Don&apos;t have an account?{\" \"}\n                <a\n                  href=\"#\"\n                  className=\"font-medium underline underline-offset-4\"\n                >\n                  Create an account\n                </a>\n              </p>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction FinderPreferencesForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Finder Preferences</CardTitle>\n        <CardDescription>\n          Configure what items appear on your desktop\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel>Show these items on the desktop:</FieldLabel>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"finder-pref-9k2-hard-disks-ljj\" />\n                <FieldLabel\n                  htmlFor=\"finder-pref-9k2-hard-disks-ljj\"\n                  className=\"font-normal\"\n                >\n                  Hard disks\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"finder-pref-9k2-external-disks-1yg\" />\n                <FieldLabel\n                  htmlFor=\"finder-pref-9k2-external-disks-1yg\"\n                  className=\"font-normal\"\n                >\n                  External disks\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"finder-pref-9k2-cds-dvds-fzt\" />\n                <FieldLabel\n                  htmlFor=\"finder-pref-9k2-cds-dvds-fzt\"\n                  className=\"font-normal\"\n                >\n                  CDs, DVDs, and iPods\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"finder-pref-9k2-connected-servers-6l2\" />\n                <FieldLabel\n                  htmlFor=\"finder-pref-9k2-connected-servers-6l2\"\n                  className=\"font-normal\"\n                >\n                  Connected servers\n                </FieldLabel>\n              </Field>\n            </Field>\n            <FieldSeparator />\n            <Field>\n              <FieldLabel>New Finder windows show:</FieldLabel>\n              <Select defaultValue=\"home\">\n                <SelectTrigger id=\"finder-pref-9k2-new-window-zga\">\n                  <SelectValue placeholder=\"Select location\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"recents\">\n                    <ClockIcon />\n                    Recents\n                  </SelectItem>\n                  <SelectItem value=\"home\">\n                    <FolderIcon />\n                    shadcn\n                  </SelectItem>\n                  <SelectItem value=\"desktop\">\n                    <MonitorIcon /> Desktop\n                  </SelectItem>\n                  <SelectItem value=\"documents\">\n                    <FileTextIcon /> Documents\n                  </SelectItem>\n                  <SelectItem value=\"downloads\">\n                    <DownloadIcon /> Downloads\n                  </SelectItem>\n                </SelectContent>\n              </Select>\n              <InputGroup>\n                <InputGroupInput placeholder=\"Select location\" />\n                <InputGroupAddon>\n                  <IconInfoCircle />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n            <FieldSeparator />\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"finder-pref-9k2-sync-folders-nep\" defaultChecked />\n              <FieldContent>\n                <FieldLabel htmlFor=\"finder-pref-9k2-sync-folders-nep\">\n                  Sync Desktop & Documents folders\n                </FieldLabel>\n                <FieldDescription>\n                  Your Desktop & Documents folders are being synced with iCloud\n                  Drive. You can access them from other devices.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"finder-pref-9k2-open-tabs-uui\" defaultChecked />\n              <FieldLabel htmlFor=\"finder-pref-9k2-open-tabs-uui\">\n                Open folders in tabs instead of new windows\n              </FieldLabel>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction ContactForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Contact Us</CardTitle>\n        <CardDescription>\n          Get in touch with our team for any questions or support\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <Field>\n                <FieldLabel htmlFor=\"contact-3k1-firstName-ggc\">\n                  First Name\n                </FieldLabel>\n                <Input\n                  id=\"contact-3k1-firstName-ggc\"\n                  placeholder=\"John\"\n                  required\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"contact-3k2-lastName-m0n\">\n                  Last Name\n                </FieldLabel>\n                <Input\n                  id=\"contact-3k2-lastName-m0n\"\n                  placeholder=\"Doe\"\n                  required\n                />\n              </Field>\n            </div>\n            <Field>\n              <FieldLabel htmlFor=\"contact-3k2-email-acn\">Email</FieldLabel>\n              <Input\n                id=\"contact-3k2-email-acn\"\n                type=\"email\"\n                placeholder=\"john@example.com\"\n                required\n              />\n              <FieldDescription>\n                We&apos;ll use this to contact you. We will not share your email\n                with anyone else.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"subject-exn\">Subject</FieldLabel>\n              <Select>\n                <SelectTrigger>\n                  <SelectValue placeholder=\"Select a subject\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"general\">General Inquiry</SelectItem>\n                  <SelectItem value=\"support\">Technical Support</SelectItem>\n                  <SelectItem value=\"billing\">Billing Question</SelectItem>\n                  <SelectItem value=\"partnership\">Partnership</SelectItem>\n                </SelectContent>\n              </Select>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"contact-3k2-message-k3i\">Message</FieldLabel>\n              <Textarea\n                id=\"contact-3k2-message-k3i\"\n                placeholder=\"Tell us how we can help you...\"\n                className=\"min-h-[100px]\"\n                required\n              />\n              <FieldDescription>\n                Please provide as much detail as possible to help us assist you\n                better.\n              </FieldDescription>\n            </Field>\n            <Button type=\"submit\">Send Message</Button>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction FeedbackForm() {\n  const [rating, setRating] = useState([5])\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Feedback Form</CardTitle>\n        <CardDescription>\n          Help us improve by sharing your experience\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"feedback-8m4-name-wql\">\n                Name (Optional)\n              </FieldLabel>\n              <Input id=\"feedback-8m4-name-wql\" placeholder=\"Your name\" />\n              <FieldDescription>Your name is optional.</FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"feedback-8m4-email-kkm\">\n                Email (Optional)\n              </FieldLabel>\n              <Input\n                id=\"feedback-8m4-email-kkm\"\n                type=\"email\"\n                placeholder=\"your@email.com\"\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"feedback-8m4-rating-gw9\">\n                How would you rate your experience?\n              </FieldLabel>\n              <Slider\n                value={rating}\n                onValueChange={setRating}\n                max={10}\n                min={1}\n                step={1}\n                id=\"feedback-8m4-rating-gw9\"\n              />\n              <FieldDescription>\n                Poor (1) /{\" \"}\n                <span className=\"font-medium\">Rating: {rating[0]}</span> /\n                Excellent (10)\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel>What type of feedback is this?</FieldLabel>\n              <RadioGroup defaultValue=\"general\">\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"bug\" id=\"feedback-8m4-bug\" />\n                  <FieldLabel\n                    htmlFor=\"feedback-8m4-bug\"\n                    className=\"font-normal\"\n                  >\n                    Bug Report\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem\n                    value=\"feature\"\n                    id=\"feedback-8m4-feature-c2h\"\n                  />\n                  <FieldLabel\n                    htmlFor=\"feedback-8m4-feature-c2h\"\n                    className=\"font-normal\"\n                  >\n                    Feature Request\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem\n                    value=\"general\"\n                    id=\"feedback-8m4-general-9wc\"\n                  />\n                  <FieldContent>\n                    <FieldLabel\n                      htmlFor=\"feedback-8m4-general-9wc\"\n                      className=\"font-normal\"\n                    >\n                      General Feedback\n                    </FieldLabel>\n                  </FieldContent>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem\n                    value=\"complaint\"\n                    id=\"feedback-8m4-complaint-9lo\"\n                  />\n                  <FieldLabel\n                    htmlFor=\"feedback-8m4-complaint-9lo\"\n                    className=\"font-normal\"\n                  >\n                    Complaint\n                  </FieldLabel>\n                </Field>\n              </RadioGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"feedback-8m4-message-ym5\">\n                Your Feedback\n              </FieldLabel>\n              <Textarea\n                id=\"feedback-8m4-message-ym5\"\n                placeholder=\"Please share your thoughts, suggestions, or report any issues...\"\n                className=\"min-h-[120px]\"\n                required\n              />\n              <FieldDescription>\n                Please share your thoughts, suggestions, or report any issues...\n              </FieldDescription>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Button variant=\"outline\">Cancel</Button>\n              <Button type=\"submit\">Submit</Button>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function JobApplicationForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Job Application</CardTitle>\n        <CardDescription>Apply for a position at our company</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <Field>\n                <FieldLabel htmlFor=\"job-5p7-firstName-jel\">\n                  First Name\n                </FieldLabel>\n                <Input id=\"job-5p7-firstName-jel\" placeholder=\"John\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"job-5p7-lastName-fl0\">\n                  Last Name\n                </FieldLabel>\n                <Input id=\"job-5p7-lastName-fl0\" placeholder=\"Doe\" required />\n              </Field>\n            </div>\n            <Field>\n              <FieldLabel htmlFor=\"job-5p7-email-6cz\">Email</FieldLabel>\n              <Input\n                id=\"job-5p7-email-6cz\"\n                type=\"email\"\n                placeholder=\"john@example.com\"\n                required\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"job-5p7-phone-389\">Phone Number</FieldLabel>\n              <Input\n                id=\"job-5p7-phone-389\"\n                type=\"tel\"\n                placeholder=\"+1 (555) 123-4567\"\n                required\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"position-k7f\">Position</FieldLabel>\n              <Select>\n                <SelectTrigger>\n                  <SelectValue placeholder=\"Select position\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"frontend\">Frontend Developer</SelectItem>\n                  <SelectItem value=\"backend\">Backend Developer</SelectItem>\n                  <SelectItem value=\"fullstack\">\n                    Full Stack Developer\n                  </SelectItem>\n                  <SelectItem value=\"designer\">UI/UX Designer</SelectItem>\n                  <SelectItem value=\"manager\">Product Manager</SelectItem>\n                </SelectContent>\n              </Select>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"experience-5ih\">\n                Years of Experience\n              </FieldLabel>\n              <Select>\n                <SelectTrigger>\n                  <SelectValue placeholder=\"Select experience level\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"0-1\">0-1 years</SelectItem>\n                  <SelectItem value=\"2-3\">2-3 years</SelectItem>\n                  <SelectItem value=\"4-6\">4-6 years</SelectItem>\n                  <SelectItem value=\"7-10\">7-10 years</SelectItem>\n                  <SelectItem value=\"10+\">10+ years</SelectItem>\n                </SelectContent>\n              </Select>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"job-5p7-portfolio-u1j\">\n                Portfolio/LinkedIn URL\n              </FieldLabel>\n              <Input\n                id=\"job-5p7-portfolio-u1j\"\n                type=\"url\"\n                placeholder=\"https://...\"\n              />\n              <FieldDescription>\n                Optional: Share your portfolio or professional profile.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"job-5p7-coverLetter-h91\">\n                Cover Letter\n              </FieldLabel>\n              <Textarea\n                id=\"job-5p7-coverLetter-h91\"\n                placeholder=\"Tell us why you're interested in this position...\"\n                className=\"min-h-[120px]\"\n                required\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"job-5p7-resume-ejb\">Resume</FieldLabel>\n              <Input\n                id=\"job-5p7-resume-ejb\"\n                type=\"file\"\n                accept=\".pdf,.doc,.docx\"\n              />\n              <FieldDescription>\n                Upload your resume in PDF, DOC, or DOCX format (max 5MB).\n              </FieldDescription>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"job-5p7-terms-slt\" required />\n              <FieldLabel htmlFor=\"job-5p7-terms-slt\">\n                I authorize the company to contact me.\n              </FieldLabel>\n            </Field>\n\n            <Button type=\"submit\">Submit Application</Button>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function NewsletterForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Newsletter Signup</CardTitle>\n        <CardDescription>\n          Stay updated with our latest news and updates\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"newsletter-2q8-name-sig\">Name</FieldLabel>\n              <Input\n                id=\"newsletter-2q8-name-sig\"\n                placeholder=\"Your name\"\n                required\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"newsletter-2q8-email-wfn\">Email</FieldLabel>\n              <Input\n                id=\"newsletter-2q8-email-wfn\"\n                type=\"email\"\n                placeholder=\"your@email.com\"\n                required\n              />\n              <FieldDescription>\n                We&apos;ll send our newsletter to this email address.\n              </FieldDescription>\n            </Field>\n            <FieldSet>\n              <FieldLegend>Interests (Select all that apply)</FieldLegend>\n              <FieldGroup data-slot=\"checkbox-group\">\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"newsletter-2q8-tech-b8o\" />\n                  <FieldLabel\n                    htmlFor=\"newsletter-2q8-tech-b8o\"\n                    className=\"font-normal\"\n                  >\n                    Technology News\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"newsletter-2q8-product-3rm\" />\n                  <FieldLabel\n                    htmlFor=\"newsletter-2q8-product-3rm\"\n                    className=\"font-normal\"\n                  >\n                    Product Updates\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"newsletter-2q8-tips-9bh\" />\n                  <FieldLabel\n                    htmlFor=\"newsletter-2q8-tips-9bh\"\n                    className=\"font-normal\"\n                  >\n                    Tips & Tutorials\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"newsletter-2q8-events-r4m\" />\n                  <FieldLabel\n                    htmlFor=\"newsletter-2q8-events-r4m\"\n                    className=\"font-normal\"\n                  >\n                    Events & Webinars\n                  </FieldLabel>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"newsletter-2q8-privacy-26q\" required />\n              <FieldLabel htmlFor=\"newsletter-2q8-privacy-26q\">\n                I agree to receive marketing emails.\n              </FieldLabel>\n            </Field>\n\n            <Button type=\"submit\">Subscribe to Newsletter</Button>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function PaymentForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Payment Information</CardTitle>\n        <CardDescription>\n          Enter your payment details to complete your purchase\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"payment-9n3-cardNumber-wre\">\n                Card Number\n              </FieldLabel>\n              <Input\n                id=\"payment-9n3-cardNumber-wre\"\n                placeholder=\"1234 5678 9012 3456\"\n                maxLength={19}\n              />\n            </Field>\n\n            <div className=\"grid grid-cols-2 gap-4\">\n              <Field>\n                <FieldLabel htmlFor=\"payment-9n3-expiry-9oa\">\n                  Expiry Date\n                </FieldLabel>\n                <Input\n                  id=\"payment-9n3-expiry-9oa\"\n                  placeholder=\"MM/YY\"\n                  maxLength={5}\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"payment-9n3-cvv\">CVV</FieldLabel>\n                <Input id=\"payment-9n3-cvv\" placeholder=\"123\" maxLength={4} />\n                <FieldDescription>3 or 4 digit security code.</FieldDescription>\n              </Field>\n            </div>\n\n            <Field>\n              <FieldLabel htmlFor=\"payment-9n3-cardName-tko\">\n                Name on Card\n              </FieldLabel>\n              <Input id=\"payment-9n3-cardName-tko\" placeholder=\"John Doe\" />\n            </Field>\n\n            <Separator />\n\n            <FieldSet>\n              <FieldLegend>Billing Address</FieldLegend>\n              <FieldDescription>\n                Please enter your billing address.\n              </FieldDescription>\n              <FieldGroup>\n                <Field>\n                  <FieldLabel htmlFor=\"payment-9n3-address-a7f\">\n                    Address\n                  </FieldLabel>\n                  <Input\n                    id=\"payment-9n3-address-a7f\"\n                    placeholder=\"123 Main St\"\n                  />\n                </Field>\n                <div className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"payment-9n3-city-sgj\">City</FieldLabel>\n                    <Input id=\"payment-9n3-city-sgj\" placeholder=\"New York\" />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"payment-9n3-zip\">ZIP Code</FieldLabel>\n                    <Input id=\"payment-9n3-zip\" placeholder=\"10001\" />\n                  </Field>\n                </div>\n                <Field>\n                  <FieldLabel htmlFor=\"payment-9n3-country-7r4\">\n                    Country\n                  </FieldLabel>\n                  <Select>\n                    <SelectTrigger>\n                      <SelectValue placeholder=\"Select country\" />\n                    </SelectTrigger>\n                    <SelectContent position=\"item-aligned\">\n                      <SelectItem value=\"us\">United States</SelectItem>\n                      <SelectItem value=\"ca\">Canada</SelectItem>\n                      <SelectItem value=\"uk\">United Kingdom</SelectItem>\n                      <SelectItem value=\"au\">Australia</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n\n            <Field className=\"justify-between\">\n              <Button variant=\"outline\">Cancel</Button>\n              <Button type=\"submit\">Complete Payment</Button>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormInputDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Input Fields</CardTitle>\n        <CardDescription>Different input field configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"input-1a2-basic-ian\">Basic Input</FieldLabel>\n            <Input id=\"input-1a2-basic-ian\" placeholder=\"Enter text\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"input-1a2-withDesc-k18\">\n              Input with Description\n            </FieldLabel>\n            <Input\n              id=\"input-1a2-withDesc-k18\"\n              placeholder=\"Enter your username\"\n            />\n            <FieldDescription>\n              Choose a unique username for your account.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"input-1a2-descFirst-omn\">\n              Email Address\n            </FieldLabel>\n            <FieldDescription>\n              We&apos;ll never share your email with anyone.\n            </FieldDescription>\n            <Input\n              id=\"input-1a2-descFirst-omn\"\n              type=\"email\"\n              placeholder=\"email@example.com\"\n            />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"input-1a2-required-hao\">\n              Required Field <span className=\"text-destructive\">*</span>\n            </FieldLabel>\n            <Input\n              id=\"input-1a2-required-hao\"\n              placeholder=\"This field is required\"\n              required\n            />\n            <FieldDescription>This field must be filled out.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"input-1a2-disabled-xb6\">\n              Disabled Input\n            </FieldLabel>\n            <Input\n              id=\"input-1a2-disabled-xb6\"\n              placeholder=\"Cannot edit\"\n              disabled\n            />\n            <FieldDescription>\n              This field is currently disabled.\n            </FieldDescription>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormTextareaDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Textarea Fields</CardTitle>\n        <CardDescription>\n          Different textarea field configurations\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"textarea-3b5-basic-cag\">\n              Basic Textarea\n            </FieldLabel>\n            <Textarea\n              id=\"textarea-3b5-basic-cag\"\n              placeholder=\"Enter your message\"\n            />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"textarea-3b5-comments-16o\">\n              Comments\n            </FieldLabel>\n            <Textarea\n              id=\"textarea-3b5-comments-16o\"\n              placeholder=\"Share your thoughts...\"\n              className=\"min-h-[100px]\"\n            />\n            <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"textarea-3b5-bio\">Bio</FieldLabel>\n            <FieldDescription>\n              Tell us about yourself in a few sentences.\n            </FieldDescription>\n            <Textarea\n              id=\"textarea-3b5-bio\"\n              placeholder=\"I am a...\"\n              className=\"min-h-[120px]\"\n            />\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormSelectDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Select Fields</CardTitle>\n        <CardDescription>Different select field configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"select-4c6-basic-ttc\">Basic Select</FieldLabel>\n            <Select>\n              <SelectTrigger id=\"select-4c6-basic-ttc\">\n                <SelectValue placeholder=\"Choose an option\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"option1\">Option 1</SelectItem>\n                <SelectItem value=\"option2\">Option 2</SelectItem>\n                <SelectItem value=\"option3\">Option 3</SelectItem>\n              </SelectContent>\n            </Select>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"select-4c6-country-dc2\">Country</FieldLabel>\n            <Select>\n              <SelectTrigger id=\"select-4c6-country-dc2\">\n                <SelectValue placeholder=\"Select your country\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"us\">United States</SelectItem>\n                <SelectItem value=\"uk\">United Kingdom</SelectItem>\n                <SelectItem value=\"ca\">Canada</SelectItem>\n              </SelectContent>\n            </Select>\n            <FieldDescription>\n              Select the country where you currently reside.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"select-4c6-timezone-es6\">Timezone</FieldLabel>\n            <FieldDescription>\n              Choose your local timezone for accurate scheduling.\n            </FieldDescription>\n            <Select>\n              <SelectTrigger id=\"select-4c6-timezone-es6\">\n                <SelectValue placeholder=\"Select timezone\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"utc\">UTC</SelectItem>\n                <SelectItem value=\"est\">Eastern Time</SelectItem>\n                <SelectItem value=\"pst\">Pacific Time</SelectItem>\n              </SelectContent>\n            </Select>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormRadioDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Radio Fields</CardTitle>\n        <CardDescription>Different radio field configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>Subscription Plan</FieldLegend>\n            <RadioGroup defaultValue=\"free\">\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"free\" id=\"free-ejb\" />\n                <FieldLabel htmlFor=\"free-ejb\" className=\"font-normal\">\n                  Free Plan\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"pro\" id=\"pro-y3g\" />\n                <FieldLabel htmlFor=\"pro-y3g\" className=\"font-normal\">\n                  Pro Plan\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"enterprise\" id=\"enterprise-l4t\" />\n                <FieldLabel htmlFor=\"enterprise-l4t\" className=\"font-normal\">\n                  Enterprise\n                </FieldLabel>\n              </Field>\n            </RadioGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>Size</FieldLegend>\n            <FieldDescription>Select your preferred size.</FieldDescription>\n            <RadioGroup\n              defaultValue=\"medium\"\n              className=\"grid w-fit grid-cols-2\"\n            >\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"small\" id=\"size-small-1g9\" />\n                <FieldLabel htmlFor=\"size-small-1g9\" className=\"font-normal\">\n                  Small\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"medium\" id=\"size-medium-okp\" />\n                <FieldLabel htmlFor=\"size-medium-okp\" className=\"font-normal\">\n                  Medium\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"large\" id=\"size-large-tzy\" />\n                <FieldLabel htmlFor=\"size-large-tzy\" className=\"font-normal\">\n                  Large\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"xlarge\" id=\"size-xlarge-2nn\" />\n                <FieldLabel htmlFor=\"size-xlarge-2nn\" className=\"font-normal\">\n                  X-Large\n                </FieldLabel>\n              </Field>\n            </RadioGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>Notification Preferences</FieldLegend>\n            <FieldDescription>\n              Choose how you want to receive notifications.\n            </FieldDescription>\n            <RadioGroup defaultValue=\"email\">\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"email\" id=\"notify-email-enh\" />\n                <FieldLabel htmlFor=\"notify-email-enh\" className=\"font-normal\">\n                  Email only\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"sms\" id=\"notify-sms\" />\n                <FieldLabel htmlFor=\"notify-sms\" className=\"font-normal\">\n                  SMS only\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"both\" id=\"notify-both-0ed\" />\n                <FieldLabel htmlFor=\"notify-both-0ed\" className=\"font-normal\">\n                  Both Email & SMS\n                </FieldLabel>\n              </Field>\n            </RadioGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>Delivery Speed</FieldLegend>\n            <RadioGroup\n              defaultValue=\"standard\"\n              className=\"flex flex-wrap gap-4\"\n            >\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"express\" id=\"delivery-express-n5l\" />\n                <FieldContent>\n                  <FieldLabel\n                    htmlFor=\"delivery-express-n5l\"\n                    className=\"font-normal\"\n                  >\n                    Express (1-2 days)\n                  </FieldLabel>\n                  <FieldDescription>Get your order quickly.</FieldDescription>\n                </FieldContent>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"standard\" id=\"delivery-standard-14i\" />\n                <FieldContent>\n                  <FieldLabel\n                    htmlFor=\"delivery-standard-14i\"\n                    className=\"font-normal\"\n                  >\n                    Standard (3-5 days)\n                  </FieldLabel>\n                  <FieldDescription>\n                    Get your order in a few days.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <RadioGroupItem value=\"economy\" id=\"delivery-economy-594\" />\n                <FieldContent>\n                  <FieldLabel\n                    htmlFor=\"delivery-economy-594\"\n                    className=\"font-normal\"\n                  >\n                    Economy (5-7 days)\n                  </FieldLabel>\n                  <FieldDescription>\n                    Get your order in a few days.\n                  </FieldDescription>\n                </FieldContent>\n              </Field>\n            </RadioGroup>\n          </FieldSet>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormCheckboxDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Checkbox Fields</CardTitle>\n        <CardDescription>\n          Different checkbox field configurations\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"terms-y7h\" />\n            <FieldLabel htmlFor=\"terms-y7h\" className=\"font-normal\">\n              I agree to the terms and conditions\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"newsletter-sw8\" />\n            <FieldContent>\n              <FieldLabel htmlFor=\"newsletter-sw8\">\n                Subscribe to newsletter\n              </FieldLabel>\n              <FieldDescription>\n                Receive weekly updates about new features and promotions.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n          <FieldSet>\n            <FieldLegend>Preferences</FieldLegend>\n            <FieldDescription>\n              Select all that apply to customize your experience.\n            </FieldDescription>\n            <FieldGroup data-slot=\"checkbox-group\">\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"pref-dark-rfv\" />\n                <FieldLabel htmlFor=\"pref-dark-rfv\" className=\"font-normal\">\n                  Dark mode\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"pref-compact-ti2\" />\n                <FieldLabel htmlFor=\"pref-compact-ti2\" className=\"font-normal\">\n                  Compact view\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"pref-notifications-tut\" />\n                <FieldLabel\n                  htmlFor=\"pref-notifications-tut\"\n                  className=\"font-normal\"\n                >\n                  Enable notifications\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>Skills</FieldLegend>\n            <FieldGroup className=\"flex-row flex-wrap gap-3 *:data-[slot=field]:w-fit\">\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"javascript-4ee\" />\n                <FieldLabel htmlFor=\"javascript-4ee\" className=\"font-normal\">\n                  JavaScript\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"typescript-cdv\" />\n                <FieldLabel htmlFor=\"typescript-cdv\" className=\"font-normal\">\n                  TypeScript\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"react-qhm\" />\n                <FieldLabel htmlFor=\"react-qhm\" className=\"font-normal\">\n                  React\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"nodejs-ug1\" />\n                <FieldLabel htmlFor=\"nodejs-ug1\" className=\"font-normal\">\n                  Node.js\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"python-azl\" />\n                <FieldLabel htmlFor=\"python-azl\" className=\"font-normal\">\n                  Python\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"database-br8\" />\n                <FieldLabel htmlFor=\"database-br8\" className=\"font-normal\">\n                  Database\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n            <FieldDescription>\n              Select all technologies you are proficient with.\n            </FieldDescription>\n          </FieldSet>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormSliderDemo() {\n  const [volume, setVolume] = useState([50])\n  const [brightness, setBrightness] = useState([75])\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Slider Fields</CardTitle>\n        <CardDescription>Different slider field configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"volume-viy\">Volume</FieldLabel>\n            <Slider\n              id=\"volume-viy\"\n              value={volume}\n              onValueChange={setVolume}\n              max={100}\n              step={1}\n            />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"brightness-zke\">Screen Brightness</FieldLabel>\n            <Slider\n              id=\"brightness-zke\"\n              value={brightness}\n              onValueChange={setBrightness}\n              max={100}\n              step={5}\n            />\n            <FieldDescription>\n              Current brightness: {brightness[0]}%\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"quality-ccr\">Video Quality</FieldLabel>\n            <FieldDescription>\n              Higher quality uses more bandwidth.\n            </FieldDescription>\n            <Slider\n              id=\"quality-ccr\"\n              defaultValue={[720]}\n              max={1080}\n              min={360}\n              step={360}\n            />\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormSwitchDemo() {\n  const [notifications, setNotifications] = useState(false)\n  const [marketing, setMarketing] = useState(true)\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Switch Fields</CardTitle>\n        <CardDescription>Different switch field configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <FieldLabel htmlFor=\"airplane-mode-c10\">Airplane Mode</FieldLabel>\n              <FieldDescription>\n                Turn on airplane mode to disable all connections.\n              </FieldDescription>\n            </FieldContent>\n            <Switch id=\"airplane-mode-c10\" />\n          </Field>\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <FieldLabel htmlFor=\"notifications-rfq\">\n                Push Notifications\n              </FieldLabel>\n              <FieldDescription>\n                Receive notifications about updates and new features.\n              </FieldDescription>\n            </FieldContent>\n            <Switch\n              id=\"notifications-rfq\"\n              checked={notifications}\n              onCheckedChange={setNotifications}\n            />\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Switch\n              id=\"marketing-7o6\"\n              checked={marketing}\n              onCheckedChange={setMarketing}\n              className=\"mt-0.5\"\n            />\n            <FieldContent>\n              <FieldLabel htmlFor=\"marketing-7o6\">Marketing Emails</FieldLabel>\n              <FieldDescription>\n                Receive emails about new products, features, and more.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Switch id=\"auto-save-eux\" defaultChecked />\n            <FieldContent>\n              <FieldLabel htmlFor=\"auto-save-eux\">Auto-save</FieldLabel>\n              <FieldDescription>\n                Automatically save your work every 5 minutes.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n          <Field>\n            <FieldLabel>Privacy Settings</FieldLabel>\n            <FieldDescription>\n              Manage your privacy preferences.\n            </FieldDescription>\n            <Field orientation=\"horizontal\">\n              <Switch id=\"profile-visible-zaq\" defaultChecked />\n              <FieldContent>\n                <FieldLabel\n                  htmlFor=\"profile-visible-zaq\"\n                  className=\"font-normal\"\n                >\n                  Make profile visible to others\n                </FieldLabel>\n              </FieldContent>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Switch id=\"show-email-x90\" />\n              <FieldContent>\n                <FieldLabel htmlFor=\"show-email-x90\" className=\"font-normal\">\n                  Show email on profile\n                </FieldLabel>\n              </FieldContent>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Switch id=\"allow-indexing-d58\" defaultChecked />\n              <FieldContent>\n                <FieldLabel\n                  htmlFor=\"allow-indexing-d58\"\n                  className=\"font-normal\"\n                >\n                  Allow search engines to index profile\n                </FieldLabel>\n              </FieldContent>\n            </Field>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Switch id=\"disabled-switch-4eu\" disabled />\n            <FieldContent>\n              <FieldLabel htmlFor=\"disabled-switch-4eu\" className=\"opacity-50\">\n                Disabled Feature\n              </FieldLabel>\n              <FieldDescription>\n                This feature is currently unavailable.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormToggleGroupDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Toggle Group Fields</CardTitle>\n        <CardDescription>Different toggle group configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel>View Mode</FieldLabel>\n            <ToggleGroup\n              type=\"single\"\n              defaultValue=\"grid\"\n              variant=\"outline\"\n              className=\"w-full\"\n            >\n              <ToggleGroupItem value=\"list\" className=\"flex-1\">\n                List\n              </ToggleGroupItem>\n              <ToggleGroupItem value=\"grid\" className=\"flex-1\">\n                Grid\n              </ToggleGroupItem>\n              <ToggleGroupItem value=\"cards\" className=\"flex-1\">\n                Cards\n              </ToggleGroupItem>\n            </ToggleGroup>\n          </Field>\n          <Field>\n            <FieldLabel>Status Filter</FieldLabel>\n            <ToggleGroup type=\"single\" variant=\"outline\" className=\"flex-wrap\">\n              <ToggleGroupItem value=\"active\">Active</ToggleGroupItem>\n              <ToggleGroupItem value=\"pending\">Pending</ToggleGroupItem>\n              <ToggleGroupItem value=\"completed\">Completed</ToggleGroupItem>\n            </ToggleGroup>\n            <FieldDescription>Filter by multiple statuses.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel>Subscription Plan</FieldLabel>\n            <FieldDescription>\n              Select the subscription plan that you want to subscribe to.\n            </FieldDescription>\n            <ToggleGroup type=\"single\" variant=\"outline\" className=\"flex-wrap\">\n              <ToggleGroupItem value=\"basic\">Basic</ToggleGroupItem>\n              <ToggleGroupItem value=\"pro\">Pro</ToggleGroupItem>\n              <ToggleGroupItem value=\"enterprise\">Enterprise</ToggleGroupItem>\n            </ToggleGroup>\n          </Field>\n          <Field>\n            <FieldLabel>Disabled Toggle Group</FieldLabel>\n            <ToggleGroup type=\"single\" disabled variant=\"outline\">\n              <ToggleGroupItem value=\"option1\">Option 1</ToggleGroupItem>\n              <ToggleGroupItem value=\"option2\">Option 2</ToggleGroupItem>\n              <ToggleGroupItem value=\"option3\">Option 3</ToggleGroupItem>\n            </ToggleGroup>\n            <FieldDescription>This toggle group is disabled.</FieldDescription>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormInputTypesDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Text Input Types</CardTitle>\n        <CardDescription>Text-based HTML input variations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"text-input-qmg\">Text</FieldLabel>\n            <Input id=\"text-input-qmg\" type=\"text\" placeholder=\"Enter text\" />\n            <FieldDescription>Standard text input field.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"email-input-19f\">Email</FieldLabel>\n            <Input\n              id=\"email-input-19f\"\n              type=\"email\"\n              placeholder=\"name@example.com\"\n            />\n            <FieldDescription>Email address with validation.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"password-input-63z\">Password</FieldLabel>\n            <Input\n              id=\"password-input-63z\"\n              type=\"password\"\n              placeholder=\"Enter password\"\n            />\n            <FieldDescription>\n              Password field with hidden text.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"tel-input-iw1\">Phone</FieldLabel>\n            <Input\n              id=\"tel-input-iw1\"\n              type=\"tel\"\n              placeholder=\"+1 (555) 123-4567\"\n            />\n            <FieldDescription>Telephone number input.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"url-input-ku7\">URL</FieldLabel>\n            <Input\n              id=\"url-input-ku7\"\n              type=\"url\"\n              placeholder=\"https://example.com\"\n            />\n            <FieldDescription>Website URL with validation.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"search-input-mhf\">Search</FieldLabel>\n            <Input\n              id=\"search-input-mhf\"\n              type=\"search\"\n              placeholder=\"Search...\"\n            />\n            <FieldDescription>Search field with clear button.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"number-input-u7u\">Number</FieldLabel>\n            <Input\n              id=\"number-input-u7u\"\n              type=\"number\"\n              placeholder=\"42\"\n              min=\"0\"\n              max=\"100\"\n              step=\"1\"\n            />\n            <FieldDescription>Numeric input (0-100).</FieldDescription>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormSpecialInputTypesDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Special Input Types</CardTitle>\n        <CardDescription>\n          Date, time, file and other special inputs\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"date-input-u7h\">Date</FieldLabel>\n            <Input id=\"date-input-u7h\" type=\"date\" />\n            <FieldDescription>Native date picker.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"time-input-2oj\">Time</FieldLabel>\n            <Input id=\"time-input-2oj\" type=\"time\" />\n            <FieldDescription>\n              Time selection (24-hour format).\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"datetime-input-3jq\">Date & Time</FieldLabel>\n            <Input id=\"datetime-input-3jq\" type=\"datetime-local\" />\n            <FieldDescription>Combined date and time picker.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"month-input-667\">Month</FieldLabel>\n            <Input id=\"month-input-667\" type=\"month\" />\n            <FieldDescription>Month and year selector.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"week-input-3bv\">Week</FieldLabel>\n            <Input id=\"week-input-3bv\" type=\"week\" />\n            <FieldDescription>Week number selector.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"file-input-hmb\">File Upload</FieldLabel>\n            <Input id=\"file-input-hmb\" type=\"file\" accept=\"image/*,.pdf\" />\n            <FieldDescription>Upload images or PDF files.</FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"files-input-p9u\">Multiple Files</FieldLabel>\n            <Input\n              id=\"files-input-p9u\"\n              type=\"file\"\n              multiple\n              accept=\".jpg,.jpeg,.png\"\n            />\n            <FieldDescription>Upload multiple image files.</FieldDescription>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormOTPDemo() {\n  const [value, setValue] = useState(\"\")\n  const [pinValue, setPinValue] = useState(\"\")\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>OTP Input Fields</CardTitle>\n        <CardDescription>Different OTP input configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"basic-otp\">Verification Code</FieldLabel>\n            <InputOTP id=\"basic-otp\" maxLength={6}>\n              <InputOTPGroup>\n                <InputOTPSlot index={0} />\n                <InputOTPSlot index={1} />\n                <InputOTPSlot index={2} />\n                <InputOTPSlot index={3} />\n                <InputOTPSlot index={4} />\n                <InputOTPSlot index={5} />\n              </InputOTPGroup>\n            </InputOTP>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"otp-with-desc-5xp\">Enter OTP</FieldLabel>\n            <InputOTP\n              id=\"otp-with-desc-5xp\"\n              maxLength={6}\n              value={value}\n              onChange={setValue}\n            >\n              <InputOTPGroup>\n                <InputOTPSlot index={0} />\n                <InputOTPSlot index={1} />\n                <InputOTPSlot index={2} />\n                <InputOTPSlot index={3} />\n                <InputOTPSlot index={4} />\n                <InputOTPSlot index={5} />\n              </InputOTPGroup>\n            </InputOTP>\n            <FieldDescription>\n              Enter the 6-digit code sent to your email.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"otp-separator-h39\">\n              Two-Factor Authentication\n            </FieldLabel>\n            <InputOTP id=\"otp-separator-h39\" maxLength={6}>\n              <InputOTPGroup>\n                <InputOTPSlot index={0} />\n                <InputOTPSlot index={1} />\n                <InputOTPSlot index={2} />\n              </InputOTPGroup>\n              <InputOTPSeparator />\n              <InputOTPGroup>\n                <InputOTPSlot index={3} />\n                <InputOTPSlot index={4} />\n                <InputOTPSlot index={5} />\n              </InputOTPGroup>\n            </InputOTP>\n            <FieldDescription>\n              Enter the code from your authenticator app.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"pin-input-lqx\">PIN Code</FieldLabel>\n            <InputOTP\n              id=\"pin-input-lqx\"\n              maxLength={4}\n              pattern={REGEXP_ONLY_DIGITS}\n              value={pinValue}\n              onChange={setPinValue}\n            >\n              <InputOTPGroup>\n                <InputOTPSlot index={0} />\n                <InputOTPSlot index={1} />\n                <InputOTPSlot index={2} />\n                <InputOTPSlot index={3} />\n              </InputOTPGroup>\n            </InputOTP>\n            <FieldDescription>\n              Enter your 4-digit PIN (numbers only).\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"otp-multi-sep\">License Key</FieldLabel>\n            <InputOTP id=\"otp-multi-sep\" maxLength={8}>\n              <InputOTPGroup>\n                <InputOTPSlot index={0} />\n                <InputOTPSlot index={1} />\n              </InputOTPGroup>\n              <InputOTPSeparator />\n              <InputOTPGroup>\n                <InputOTPSlot index={2} />\n                <InputOTPSlot index={3} />\n              </InputOTPGroup>\n              <InputOTPSeparator />\n              <InputOTPGroup>\n                <InputOTPSlot index={4} />\n                <InputOTPSlot index={5} />\n              </InputOTPGroup>\n              <InputOTPSeparator />\n              <InputOTPGroup>\n                <InputOTPSlot index={6} />\n                <InputOTPSlot index={7} />\n              </InputOTPGroup>\n            </InputOTP>\n            <FieldDescription>\n              Enter your 8-character license key.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"otp-custom-hip\">Security Code</FieldLabel>\n            <FieldDescription>\n              Enter the security code to continue.\n            </FieldDescription>\n            <InputOTP id=\"otp-custom-hip\" maxLength={6}>\n              <InputOTPGroup className=\"gap-2\">\n                <InputOTPSlot index={0} className=\"rounded-md border\" />\n                <InputOTPSlot index={1} className=\"rounded-md border\" />\n                <InputOTPSlot index={2} className=\"rounded-md border\" />\n                <InputOTPSlot index={3} className=\"rounded-md border\" />\n                <InputOTPSlot index={4} className=\"rounded-md border\" />\n                <InputOTPSlot index={5} className=\"rounded-md border\" />\n              </InputOTPGroup>\n            </InputOTP>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormDatePickerDemo() {\n  const [date, setDate] = useState<Date>()\n  const [birthDate, setBirthDate] = useState<Date>()\n  const [appointmentDate, setAppointmentDate] = useState<Date>()\n  const [dateRange, setDateRange] = useState<DateRange | undefined>()\n  const [vacationDates, setVacationDates] = useState<DateRange | undefined>({\n    from: new Date(),\n    to: addDays(new Date(), 7),\n  })\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Date Picker Fields</CardTitle>\n        <CardDescription>Different date picker configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field data-invalid={true}>\n            <FieldLabel htmlFor=\"basic-date-6st\">Select Date</FieldLabel>\n            <Popover>\n              <PopoverTrigger asChild>\n                <Button\n                  id=\"basic-date-6st\"\n                  variant=\"outline\"\n                  aria-invalid={true}\n                  className={cn(\n                    \"w-full justify-start text-left font-normal\",\n                    !date && \"text-muted-foreground\"\n                  )}\n                >\n                  <CalendarIcon />\n                  {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n                </Button>\n              </PopoverTrigger>\n              <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n              </PopoverContent>\n            </Popover>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"birth-date-0fq\">Date of Birth</FieldLabel>\n            <Popover>\n              <PopoverTrigger asChild>\n                <Button\n                  id=\"birth-date-0fq\"\n                  variant=\"outline\"\n                  className={cn(\n                    \"w-full justify-start text-left font-normal\",\n                    !birthDate && \"text-muted-foreground\"\n                  )}\n                >\n                  <CalendarIcon />\n                  {birthDate ? (\n                    format(birthDate, \"PPP\")\n                  ) : (\n                    <span>Select your birth date</span>\n                  )}\n                </Button>\n              </PopoverTrigger>\n              <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                <Calendar\n                  mode=\"single\"\n                  selected={birthDate}\n                  onSelect={setBirthDate}\n                />\n              </PopoverContent>\n            </Popover>\n            <FieldDescription>\n              We use this to calculate your age and provide age-appropriate\n              content.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"appointment-f44\">Appointment Date</FieldLabel>\n            <FieldDescription>\n              Select a date for your appointment (weekdays only).\n            </FieldDescription>\n            <Popover>\n              <PopoverTrigger asChild>\n                <Button\n                  id=\"appointment-f44\"\n                  variant=\"outline\"\n                  className={cn(\n                    \"w-full justify-start text-left font-normal\",\n                    !appointmentDate && \"text-muted-foreground\"\n                  )}\n                >\n                  <CalendarIcon />\n                  {appointmentDate ? (\n                    format(appointmentDate, \"PPP\")\n                  ) : (\n                    <span>Schedule appointment</span>\n                  )}\n                </Button>\n              </PopoverTrigger>\n              <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                <Calendar\n                  mode=\"single\"\n                  selected={appointmentDate}\n                  onSelect={setAppointmentDate}\n                  disabled={(date) =>\n                    date < new Date() ||\n                    date.getDay() === 0 ||\n                    date.getDay() === 6\n                  }\n                />\n              </PopoverContent>\n            </Popover>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"date-range-7yr\">Date Range</FieldLabel>\n            <Popover>\n              <PopoverTrigger asChild>\n                <Button\n                  id=\"date-range-7yr\"\n                  variant=\"outline\"\n                  className={cn(\n                    \"w-full justify-start text-left font-normal\",\n                    !dateRange && \"text-muted-foreground\"\n                  )}\n                >\n                  <CalendarIcon />\n                  {dateRange?.from ? (\n                    dateRange.to ? (\n                      <>\n                        {format(dateRange.from, \"LLL dd, y\")} -{\" \"}\n                        {format(dateRange.to, \"LLL dd, y\")}\n                      </>\n                    ) : (\n                      format(dateRange.from, \"LLL dd, y\")\n                    )\n                  ) : (\n                    <span>Pick a date range</span>\n                  )}\n                </Button>\n              </PopoverTrigger>\n              <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                <Calendar\n                  mode=\"range\"\n                  defaultMonth={dateRange?.from}\n                  selected={dateRange}\n                  onSelect={setDateRange}\n                  numberOfMonths={2}\n                />\n              </PopoverContent>\n            </Popover>\n            <FieldDescription>\n              Select start and end dates for your report.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"vacation-w9w\">Vacation Dates</FieldLabel>\n            <Popover>\n              <PopoverTrigger asChild>\n                <Button\n                  id=\"vacation-w9w\"\n                  variant=\"outline\"\n                  className={cn(\n                    \"w-full justify-start text-left font-normal\",\n                    !vacationDates && \"text-muted-foreground\"\n                  )}\n                >\n                  <CalendarIcon />\n                  {vacationDates?.from ? (\n                    vacationDates.to ? (\n                      <>\n                        {format(vacationDates.from, \"LLL dd, y\")} -{\" \"}\n                        {format(vacationDates.to, \"LLL dd, y\")}\n                      </>\n                    ) : (\n                      format(vacationDates.from, \"LLL dd, y\")\n                    )\n                  ) : (\n                    <span>Select vacation dates</span>\n                  )}\n                </Button>\n              </PopoverTrigger>\n              <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                <div className=\"flex flex-col\">\n                  <div className=\"flex gap-2 border-b p-3\">\n                    <Button\n                      variant=\"outline\"\n                      size=\"sm\"\n                      onClick={() =>\n                        setVacationDates({\n                          from: new Date(),\n                          to: addDays(new Date(), 7),\n                        })\n                      }\n                    >\n                      Next 7 days\n                    </Button>\n                    <Button\n                      variant=\"outline\"\n                      size=\"sm\"\n                      onClick={() =>\n                        setVacationDates({\n                          from: new Date(),\n                          to: addDays(new Date(), 14),\n                        })\n                      }\n                    >\n                      Next 2 weeks\n                    </Button>\n                  </div>\n                  <Calendar\n                    mode=\"range\"\n                    defaultMonth={vacationDates?.from}\n                    selected={vacationDates}\n                    onSelect={setVacationDates}\n                    numberOfMonths={2}\n                  />\n                </div>\n              </PopoverContent>\n            </Popover>\n            <FieldDescription>\n              Choose your vacation period. Quick presets available.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"disabled-date-1vz\" className=\"opacity-50\">\n              Event Date (Disabled)\n            </FieldLabel>\n            <Button\n              id=\"disabled-date-1vz\"\n              variant=\"outline\"\n              className=\"w-full justify-start text-left font-normal opacity-50\"\n              disabled\n            >\n              <CalendarIcon />\n              <span>Date selection disabled</span>\n            </Button>\n            <FieldDescription>\n              This field is currently disabled.\n            </FieldDescription>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormFieldSetDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>FieldSet & FieldLegend</CardTitle>\n        <CardDescription>Different fieldset configurations</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>Basic FieldSet</FieldLegend>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"basic-name-czt\">Name</FieldLabel>\n                <Input id=\"basic-name-czt\" placeholder=\"Enter your name\" />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"basic-email-32q\">Email</FieldLabel>\n                <Input\n                  id=\"basic-email-32q\"\n                  type=\"email\"\n                  placeholder=\"email@example.com\"\n                />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>FieldSet with Description</FieldLegend>\n            <FieldDescription>\n              This fieldset includes a description to provide context.\n            </FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"address-street-atj\">\n                  Street Address\n                </FieldLabel>\n                <Input id=\"address-street-atj\" placeholder=\"123 Main St\" />\n              </Field>\n              <FieldGroup className=\"grid grid-cols-2 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"address-city-tpi\">City</FieldLabel>\n                  <Input id=\"address-city-tpi\" placeholder=\"New York\" />\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"address-zip\">ZIP Code</FieldLabel>\n                  <Input id=\"address-zip\" placeholder=\"10001\" />\n                </Field>\n              </FieldGroup>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>Communication Preferences</FieldLegend>\n            <FieldDescription>\n              Choose how you&apos;d like us to keep in touch with you.\n            </FieldDescription>\n            <FieldGroup>\n              <FieldSet>\n                <FieldLegend className=\"text-sm\">\n                  Preferred Contact Method\n                </FieldLegend>\n                <FieldDescription>\n                  Choose how you&apos;d like us to keep in touch with you.\n                </FieldDescription>\n                <RadioGroup defaultValue=\"email\">\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"email\" id=\"contact-email-hxb\" />\n                    <FieldLabel\n                      htmlFor=\"contact-email-hxb\"\n                      className=\"font-normal\"\n                    >\n                      Email\n                    </FieldLabel>\n                  </Field>\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"phone\" id=\"contact-phone-7id\" />\n                    <FieldLabel\n                      htmlFor=\"contact-phone-7id\"\n                      className=\"font-normal\"\n                    >\n                      Phone\n                    </FieldLabel>\n                  </Field>\n                  <Field orientation=\"horizontal\">\n                    <RadioGroupItem value=\"sms\" id=\"contact-sms\" />\n                    <FieldLabel htmlFor=\"contact-sms\" className=\"font-normal\">\n                      SMS\n                    </FieldLabel>\n                  </Field>\n                </RadioGroup>\n              </FieldSet>\n              <FieldSet>\n                <FieldLegend className=\"text-sm\">\n                  Notification Types\n                </FieldLegend>\n                <FieldDescription>\n                  Choose which notifications you&apos;d like to receive.\n                </FieldDescription>\n                <FieldGroup className=\"gap-3\">\n                  <Field orientation=\"horizontal\">\n                    <Checkbox id=\"updates-2sv\" defaultChecked />\n                    <FieldLabel htmlFor=\"updates-2sv\" className=\"font-normal\">\n                      Product updates\n                    </FieldLabel>\n                  </Field>\n                  <Field orientation=\"horizontal\">\n                    <Checkbox id=\"newsletters-ejn\" />\n                    <FieldLabel\n                      htmlFor=\"newsletters-ejn\"\n                      className=\"font-normal\"\n                    >\n                      Newsletters\n                    </FieldLabel>\n                  </Field>\n                  <Field orientation=\"horizontal\">\n                    <Checkbox id=\"promotions-9xv\" />\n                    <FieldLabel\n                      htmlFor=\"promotions-9xv\"\n                      className=\"font-normal\"\n                    >\n                      Promotional offers\n                    </FieldLabel>\n                  </Field>\n                </FieldGroup>\n              </FieldSet>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>Account Settings</FieldLegend>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"two-factor-kei\">\n                    Two-Factor Authentication\n                  </FieldLabel>\n                  <FieldDescription>\n                    Add an extra layer of security to your account.\n                  </FieldDescription>\n                </FieldContent>\n                <Switch id=\"two-factor-kei\" />\n              </Field>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"public-profile-bbt\">\n                    Public Profile\n                  </FieldLabel>\n                  <FieldDescription>\n                    Make your profile visible to other users.\n                  </FieldDescription>\n                </FieldContent>\n                <Switch id=\"public-profile-bbt\" defaultChecked />\n              </Field>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"activity-status-2la\">\n                    Show Activity Status\n                  </FieldLabel>\n                  <FieldDescription>\n                    Let others see when you&apos;re online.\n                  </FieldDescription>\n                </FieldContent>\n                <Switch id=\"activity-status-2la\" />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n\n          <FieldSet>\n            <FieldLegend>Emergency Contact</FieldLegend>\n            <FieldDescription>\n              Provide emergency contact information for safety purposes.\n            </FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"emergency-name-id4\">\n                  Contact Name\n                </FieldLabel>\n                <Input id=\"emergency-name-id4\" placeholder=\"Jane Doe\" />\n                <FieldDescription>\n                  Full name of your emergency contact.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"emergency-relationship-9ja\">\n                  Relationship\n                </FieldLabel>\n                <Select>\n                  <SelectTrigger id=\"emergency-relationship-9ja\">\n                    <SelectValue placeholder=\"Select relationship\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"spouse\">Spouse</SelectItem>\n                    <SelectItem value=\"parent\">Parent</SelectItem>\n                    <SelectItem value=\"sibling\">Sibling</SelectItem>\n                    <SelectItem value=\"friend\">Friend</SelectItem>\n                    <SelectItem value=\"other\">Other</SelectItem>\n                  </SelectContent>\n                </Select>\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"emergency-phone-3de\">\n                  Phone Number\n                </FieldLabel>\n                <Input\n                  id=\"emergency-phone-3de\"\n                  type=\"tel\"\n                  placeholder=\"+1 (555) 123-4567\"\n                />\n                <FieldDescription>\n                  Best number to reach your emergency contact.\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldLegend>Additional Information</FieldLegend>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"comments-sxl\">Comments</FieldLabel>\n                <Textarea\n                  id=\"comments-sxl\"\n                  placeholder=\"Any additional information...\"\n                  className=\"min-h-[100px]\"\n                />\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"agree-terms-04d\" />\n                <FieldContent>\n                  <FieldLabel htmlFor=\"agree-terms-04d\" className=\"font-normal\">\n                    I agree to the terms and conditions\n                  </FieldLabel>\n                </FieldContent>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormFieldSeparatorDemo() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Field Separator</CardTitle>\n        <CardDescription>\n          Different ways to use the FieldSeparator component\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"section1-input-ieg\">Section 1</FieldLabel>\n            <Input id=\"section1-input-ieg\" placeholder=\"First section input\" />\n            <FieldDescription>\n              This is the first section of the form.\n            </FieldDescription>\n          </Field>\n          <FieldSeparator />\n          <Field>\n            <FieldLabel htmlFor=\"section2-input-mh9\">Section 2</FieldLabel>\n            <Input id=\"section2-input-mh9\" placeholder=\"Second section input\" />\n            <FieldDescription>\n              A simple separator line appears above this section.\n            </FieldDescription>\n          </Field>\n          <FieldSeparator>Or continue with</FieldSeparator>\n          <Field>\n            <Button variant=\"outline\" className=\"w-full\">\n              Alternative Option 1\n            </Button>\n            <Button variant=\"outline\" className=\"w-full\">\n              Alternative Option 2\n            </Button>\n          </Field>\n          <FieldSeparator>Additional Options</FieldSeparator>\n          <FieldGroup>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"option1-ntl\" />\n              <FieldContent>\n                <FieldLabel htmlFor=\"option1-ntl\" className=\"font-normal\">\n                  Enable additional features\n                </FieldLabel>\n              </FieldContent>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"option2-n0m\" />\n              <FieldContent>\n                <FieldLabel htmlFor=\"option2-n0m\" className=\"font-normal\">\n                  Subscribe to updates\n                </FieldLabel>\n              </FieldContent>\n            </Field>\n          </FieldGroup>\n          <FieldSeparator />\n          <Field>\n            <FieldLabel htmlFor=\"final-section-mk8\">Final Section</FieldLabel>\n            <Textarea\n              id=\"final-section-mk8\"\n              placeholder=\"Any additional comments...\"\n              className=\"min-h-[80px]\"\n            />\n          </Field>\n          <FieldSeparator>Or choose a different path</FieldSeparator>\n          <RadioGroup defaultValue=\"option1\">\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"option1\" id=\"path1-pgt\" />\n              <FieldLabel htmlFor=\"path1-pgt\" className=\"font-normal\">\n                Option Path 1\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"option2\" id=\"path2-7pd\" />\n              <FieldLabel htmlFor=\"path2-7pd\" className=\"font-normal\">\n                Option Path 2\n              </FieldLabel>\n            </Field>\n          </RadioGroup>\n          <FieldSeparator>Account Settings</FieldSeparator>\n          <FieldGroup>\n            <Field orientation=\"horizontal\">\n              <Switch id=\"separator-7e9-notifications-5r4\" />\n              <FieldContent>\n                <FieldLabel htmlFor=\"separator-7e9-notifications-5r4\">\n                  Enable Notifications\n                </FieldLabel>\n                <FieldDescription>\n                  Receive updates about your account activity.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Switch id=\"separator-7e9-privacy-81v\" />\n              <FieldContent>\n                <FieldLabel htmlFor=\"separator-7e9-privacy-81v\">\n                  Make Profile Public\n                </FieldLabel>\n                <FieldDescription>\n                  Allow others to view your profile information.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n          </FieldGroup>\n          <Field>\n            <Button type=\"submit\" className=\"w-full\">\n              Submit Form\n            </Button>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormFieldGroupOutlineDemo() {\n  return (\n    <FieldGroup>\n      <FieldSet>\n        <FieldLegend>Notification Settings</FieldLegend>\n        <FieldDescription>\n          Configure how and when you receive notifications\n        </FieldDescription>\n        <FieldGroup>\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <FieldLabel htmlFor=\"outline-demo-8h3-email-notif-vk0\">\n                Email Notifications\n              </FieldLabel>\n              <FieldDescription>\n                Receive updates via email about your account activity\n              </FieldDescription>\n            </FieldContent>\n            <Switch id=\"outline-demo-8h3-email-notif-vk0\" defaultChecked />\n          </Field>\n          <FieldSeparator />\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <FieldLabel htmlFor=\"outline-demo-8h3-push-notif-5m7\">\n                Push Notifications\n              </FieldLabel>\n              <FieldDescription>\n                Get instant notifications on your device\n              </FieldDescription>\n            </FieldContent>\n            <Switch id=\"outline-demo-8h3-push-notif-5m7\" defaultChecked />\n          </Field>\n          <FieldSeparator />\n          <Field orientation=\"horizontal\">\n            <Switch id=\"outline-demo-8h3-sms-notif-ew4\" />\n            <FieldContent>\n              <FieldLabel htmlFor=\"outline-demo-8h3-sms-notif-ew4\">\n                SMS Notifications\n              </FieldLabel>\n              <FieldDescription>\n                Receive text messages for important updates\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n          <FieldSeparator />\n          <Field orientation=\"horizontal\">\n            <Switch id=\"outline-demo-8h3-weekly-digest-xor\" defaultChecked />\n            <FieldContent>\n              <FieldLabel htmlFor=\"outline-demo-8h3-weekly-digest-xor\">\n                Weekly Digest\n              </FieldLabel>\n              <FieldDescription>\n                Get a summary of your activity every week\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n      <FieldSet>\n        <FieldLegend>Privacy Settings</FieldLegend>\n        <FieldDescription>\n          Control your privacy and data sharing preferences\n        </FieldDescription>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"contact-3k2-firstName-q1r\">\n              First Name\n            </FieldLabel>\n            <Input id=\"contact-3k2-firstName-q1r\" placeholder=\"John\" required />\n          </Field>\n          <FieldSet>\n            <FieldLegend variant=\"label\">\n              Show these items on the desktop:\n            </FieldLegend>\n            <FieldDescription>\n              Select the items you want to show on the desktop.\n            </FieldDescription>\n            <FieldGroup className=\"gap-3\">\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"finder-pref-9k2-hard-disks-ljj\" />\n                <FieldLabel\n                  htmlFor=\"finder-pref-9k2-hard-disks-ljj\"\n                  className=\"font-normal\"\n                >\n                  Hard disks\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"finder-pref-9k2-external-disks-1yg\" />\n                <FieldLabel\n                  htmlFor=\"finder-pref-9k2-external-disks-1yg\"\n                  className=\"font-normal\"\n                >\n                  External disks\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"finder-pref-9k2-cds-dvds-fzt\" />\n                <FieldLabel\n                  htmlFor=\"finder-pref-9k2-cds-dvds-fzt\"\n                  className=\"font-normal\"\n                >\n                  CDs, DVDs, and iPods\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"finder-pref-9k2-connected-servers-6l2\" />\n                <FieldLabel\n                  htmlFor=\"finder-pref-9k2-connected-servers-6l2\"\n                  className=\"font-normal\"\n                >\n                  Connected servers\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <FieldLabel htmlFor=\"outline-demo-8h3-profile-public-agy\">\n                Public Profile\n              </FieldLabel>\n              <FieldDescription>\n                Make your profile visible to everyone\n              </FieldDescription>\n            </FieldContent>\n            <Switch id=\"outline-demo-8h3-profile-public-agy\" />\n          </Field>\n          <FieldSeparator />\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <FieldLabel htmlFor=\"outline-demo-8h3-share-data-088\">\n                Share Usage Data\n              </FieldLabel>\n              <FieldDescription>\n                Help improve our services by sharing anonymous usage data. This\n                data helps us understand how our product is used and how we can\n                improve it.\n              </FieldDescription>\n            </FieldContent>\n            <Switch id=\"outline-demo-8h3-share-data-088\" />\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n    </FieldGroup>\n  )\n}\n\nexport function ProfileSettingsForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Profile Settings</CardTitle>\n        <CardDescription>\n          Update your profile information and preferences\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel>Profile Photo</FieldLabel>\n              <div className=\"flex items-center space-x-4\">\n                <Avatar className=\"size-12\">\n                  <AvatarImage src=\"/abstract-profile.png\" />\n                  <AvatarFallback>JD</AvatarFallback>\n                </Avatar>\n                <Button variant=\"outline\" type=\"button\">\n                  Change Photo\n                </Button>\n              </div>\n            </Field>\n\n            <div className=\"grid grid-cols-2 gap-4\">\n              <Field>\n                <FieldLabel htmlFor=\"profileFirstName-h2r\">\n                  First Name\n                </FieldLabel>\n                <Input id=\"profileFirstName-h2r\" defaultValue=\"John\" />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"profileLastName-cal\">Last Name</FieldLabel>\n                <Input id=\"profileLastName-cal\" defaultValue=\"Doe\" />\n              </Field>\n            </div>\n\n            <Field>\n              <FieldLabel htmlFor=\"profileEmail-e4m\">Email</FieldLabel>\n              <Input\n                id=\"profileEmail-e4m\"\n                type=\"email\"\n                defaultValue=\"john@example.com\"\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"phone-olk\">Phone Number</FieldLabel>\n              <Input\n                id=\"phone-olk\"\n                type=\"tel\"\n                placeholder=\"+1 (555) 123-4567\"\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"bio-jlq\">Bio</FieldLabel>\n              <Textarea\n                id=\"bio-jlq\"\n                placeholder=\"Tell us about yourself...\"\n                className=\"min-h-[80px]\"\n              />\n            </Field>\n\n            <FieldSet>\n              <FieldLegend>Notification Preferences</FieldLegend>\n              <FieldDescription>\n                Manage your notification preferences.\n              </FieldDescription>\n              <FieldGroup>\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"emailNotifications-xfj\">\n                      Email notifications\n                    </FieldLabel>\n                    <FieldDescription>\n                      Receive emails about new products, features, and more. If\n                      you don&apos;t want to receive these emails, you can turn\n                      them off.\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch\n                    id=\"emailNotifications-xfj\"\n                    defaultChecked\n                    className=\"ml-auto\"\n                  />\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <FieldLabel htmlFor=\"pushNotifications-ofh\">\n                    Push notifications\n                  </FieldLabel>\n                  <Switch id=\"pushNotifications-ofh\" />\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <FieldLabel htmlFor=\"marketingEmails-8hc\">\n                    Marketing emails\n                  </FieldLabel>\n                  <Switch\n                    id=\"marketingEmails-8hc\"\n                    defaultChecked\n                    className=\"ml-auto\"\n                  />\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n            <Field orientation=\"horizontal\" className=\"justify-end\">\n              <Button type=\"button\" variant=\"outline\">\n                Cancel\n              </Button>\n              <Button type=\"submit\">Save Changes</Button>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function SurveyForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Customer Survey</CardTitle>\n        <CardDescription>\n          Help us understand your needs better (5 minutes)\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"surveyName-eqj\">Name (Optional)</FieldLabel>\n              <Input id=\"surveyName-eqj\" placeholder=\"Your name\" />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"ageGroup-302\">Age Group</FieldLabel>\n              <Select>\n                <SelectTrigger>\n                  <SelectValue placeholder=\"Select age group\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"18-24\">18-24</SelectItem>\n                  <SelectItem value=\"25-34\">25-34</SelectItem>\n                  <SelectItem value=\"35-44\">35-44</SelectItem>\n                  <SelectItem value=\"45-54\">45-54</SelectItem>\n                  <SelectItem value=\"55+\">55+</SelectItem>\n                </SelectContent>\n              </Select>\n            </Field>\n            <Field>\n              <FieldLabel>How often do you use our product?</FieldLabel>\n              <RadioGroup>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"daily\" id=\"daily-lrv\" />\n                  <FieldLabel htmlFor=\"daily-lrv\">Daily</FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"weekly\" id=\"weekly-mga\" />\n                  <FieldLabel htmlFor=\"weekly-mga\">Weekly</FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"monthly\" id=\"monthly-7gl\" />\n                  <FieldLabel htmlFor=\"monthly-7gl\">Monthly</FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"rarely\" id=\"rarely-hlw\" />\n                  <FieldLabel htmlFor=\"rarely-hlw\">Rarely</FieldLabel>\n                </Field>\n              </RadioGroup>\n            </Field>\n            <Field>\n              <FieldLabel>\n                Which features do you use most? (Select all that apply)\n              </FieldLabel>\n              <div className=\"grid w-full grid-cols-2 gap-2\">\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"dashboard-epk\" />\n                  <FieldLabel htmlFor=\"dashboar d-epk\" className=\"text-sm\">\n                    Dashboard\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"reports-jkm\" />\n                  <FieldLabel htmlFor=\"reports-jkm\" className=\"text-sm\">\n                    Reports\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"analytics-kwm\" />\n                  <FieldLabel htmlFor=\"analytics-kwm\" className=\"text-sm\">\n                    Analytics\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"integrations-euz\" />\n                  <FieldLabel htmlFor=\"integrations-euz\" className=\"text-sm\">\n                    Integrations\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"api-e2h\" />\n                  <FieldLabel htmlFor=\"api-e2h\" className=\"text-sm\">\n                    API Access\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"support-qq9\" />\n                  <FieldLabel htmlFor=\"support-qq9\" className=\"text-sm\">\n                    Support\n                  </FieldLabel>\n                </Field>\n              </div>\n            </Field>\n            <Field>\n              <FieldLabel>How satisfied are you with our product?</FieldLabel>\n              <RadioGroup>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem\n                    value=\"very-satisfied\"\n                    id=\"very-satisfied-ok5\"\n                  />\n                  <FieldLabel htmlFor=\"very-satisfied-ok5\">\n                    Very Satisfied\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"satisfied\" id=\"satisfied-hn4\" />\n                  <FieldLabel htmlFor=\"satisfied-hn4\">Satisfied</FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"neutral\" id=\"neutral-6az\" />\n                  <FieldLabel htmlFor=\"neutral-6az\">Neutral</FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem value=\"dissatisfied\" id=\"dissatisfied-sy9\" />\n                  <FieldLabel htmlFor=\"dissatisfied-sy9\">\n                    Dissatisfied\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <RadioGroupItem\n                    value=\"very-dissatisfied\"\n                    id=\"very-dissatisfied-xs2\"\n                  />\n                  <FieldLabel htmlFor=\"very-dissatisfied-xs2\">\n                    Very Dissatisfied\n                  </FieldLabel>\n                </Field>\n              </RadioGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"improvements-u5u\">\n                What improvements would you like to see?\n              </FieldLabel>\n              <Textarea\n                id=\"improvements-u5u\"\n                placeholder=\"Share your suggestions for improvements...\"\n                className=\"min-h-[80px]\"\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"recommend-aym\">\n                Would you recommend our product to others?\n              </FieldLabel>\n              <Select>\n                <SelectTrigger>\n                  <SelectValue placeholder=\"Select recommendation level\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"definitely\">Definitely</SelectItem>\n                  <SelectItem value=\"probably\">Probably</SelectItem>\n                  <SelectItem value=\"maybe\">Maybe</SelectItem>\n                  <SelectItem value=\"probably-not\">Probably Not</SelectItem>\n                  <SelectItem value=\"definitely-not\">Definitely Not</SelectItem>\n                </SelectContent>\n              </Select>\n            </Field>\n\n            <Button type=\"submit\" className=\"w-full\">\n              Submit\n            </Button>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function ComplexFormDemo() {\n  return (\n    <Card className=\"w-full max-w-3xl\">\n      <CardHeader>\n        <CardTitle>Job Application Form</CardTitle>\n        <CardDescription>\n          Complete all sections to submit your application\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <FieldSet>\n              <FieldLegend>Personal Information</FieldLegend>\n              <FieldDescription>\n                Your basic contact information.\n              </FieldDescription>\n              <FieldGroup>\n                <div className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"complex-6d8-firstName-dsv\">\n                      First Name\n                    </FieldLabel>\n                    <Input\n                      id=\"complex-6d8-firstName-dsv\"\n                      placeholder=\"John\"\n                      required\n                    />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"complex-6d8-lastName-i08\">\n                      Last Name\n                    </FieldLabel>\n                    <Input\n                      id=\"complex-6d8-lastName-i08\"\n                      placeholder=\"Doe\"\n                      required\n                    />\n                  </Field>\n                </div>\n\n                <Field>\n                  <FieldLabel htmlFor=\"complex-6d8-email-yq8\">\n                    Email Address\n                  </FieldLabel>\n                  <Input\n                    id=\"complex-6d8-email-yq8\"\n                    type=\"email\"\n                    placeholder=\"john.doe@example.com\"\n                    required\n                  />\n                  <FieldDescription>\n                    We&apos;ll use this for all communications.\n                  </FieldDescription>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"complex-6d8-phone-a7k\">\n                    Phone Number\n                  </FieldLabel>\n                  <Input\n                    id=\"complex-6d8-phone-a7k\"\n                    type=\"tel\"\n                    placeholder=\"+1 (555) 123-4567\"\n                  />\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend>Professional Background</FieldLegend>\n              <FieldGroup>\n                <Field>\n                  <FieldLabel htmlFor=\"position-k7f\">\n                    Position Applying For\n                  </FieldLabel>\n                  <Select>\n                    <SelectTrigger id=\"position-k7f\">\n                      <SelectValue placeholder=\"Select a position\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"frontend\">\n                        Frontend Developer\n                      </SelectItem>\n                      <SelectItem value=\"backend\">Backend Developer</SelectItem>\n                      <SelectItem value=\"fullstack\">\n                        Full Stack Developer\n                      </SelectItem>\n                      <SelectItem value=\"designer\">UI/UX Designer</SelectItem>\n                      <SelectItem value=\"pm\">Product Manager</SelectItem>\n                      <SelectItem value=\"devops\">DevOps Engineer</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </Field>\n\n                <Field>\n                  <FieldLabel htmlFor=\"experience-5ih\">\n                    Years of Experience\n                  </FieldLabel>\n                  <Slider id=\"experience-5ih\" max={20} min={0} step={1} />\n                  <FieldDescription>Years of experience</FieldDescription>\n                </Field>\n\n                <Field>\n                  <FieldLabel>Employment Type Preference</FieldLabel>\n                  <ToggleGroup\n                    type=\"single\"\n                    variant=\"outline\"\n                    className=\"w-full\"\n                  >\n                    <ToggleGroupItem value=\"remote\" className=\"flex-1\">\n                      Remote\n                    </ToggleGroupItem>\n                    <ToggleGroupItem value=\"office\" className=\"flex-1\">\n                      Office\n                    </ToggleGroupItem>\n                    <ToggleGroupItem value=\"hybrid\" className=\"flex-1\">\n                      Hybrid\n                    </ToggleGroupItem>\n                  </ToggleGroup>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n\n            <FieldSeparator />\n\n            <FieldSet>\n              <FieldLegend>Additional Information</FieldLegend>\n              <FieldGroup>\n                <Field>\n                  <FieldLabel htmlFor=\"portfolio-6km\">Portfolio URL</FieldLabel>\n                  <Input\n                    id=\"portfolio-6km\"\n                    type=\"url\"\n                    placeholder=\"https://yourportfolio.com\"\n                  />\n                  <FieldDescription>\n                    Optional: Share your portfolio or GitHub profile\n                  </FieldDescription>\n                </Field>\n\n                <Field>\n                  <FieldLabel htmlFor=\"coverLetter-6re\">\n                    Cover Letter\n                  </FieldLabel>\n                  <Textarea\n                    id=\"coverLetter-6re\"\n                    placeholder=\"Tell us why you're a great fit for this position...\"\n                    className=\"min-h-[120px]\"\n                  />\n                  <FieldDescription>\n                    Briefly describe your interest and qualifications (500 words\n                    max)\n                  </FieldDescription>\n                </Field>\n\n                <Field>\n                  <FieldLabel htmlFor=\"resume-yyr\">Upload Resume</FieldLabel>\n                  <Input id=\"resume-yyr\" type=\"file\" accept=\".pdf,.doc,.docx\" />\n                  <FieldDescription>\n                    PDF or Word document (max 5MB)\n                  </FieldDescription>\n                </Field>\n\n                <Field>\n                  <FieldLabel htmlFor=\"references-fcs\">\n                    References Available\n                  </FieldLabel>\n                  <RadioGroup defaultValue=\"yes\">\n                    <Field orientation=\"horizontal\">\n                      <RadioGroupItem value=\"yes\" id=\"ref-yes\" />\n                      <FieldLabel htmlFor=\"ref-yes\" className=\"font-normal\">\n                        Yes, upon request\n                      </FieldLabel>\n                    </Field>\n                    <Field orientation=\"horizontal\">\n                      <RadioGroupItem value=\"no\" id=\"ref-no-pqi\" />\n                      <FieldLabel htmlFor=\"ref-no-pqi\" className=\"font-normal\">\n                        No\n                      </FieldLabel>\n                    </Field>\n                  </RadioGroup>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n\n            <FieldSeparator />\n\n            <FieldSet>\n              <FieldLegend>Verification</FieldLegend>\n              <FieldGroup>\n                <Field>\n                  <FieldLabel htmlFor=\"verification-pj8\">\n                    Enter Verification Code\n                  </FieldLabel>\n                  <FieldDescription>\n                    Enter the 6-digit code sent to your email\n                  </FieldDescription>\n                  <InputOTP id=\"verification-pj8\" maxLength={6}>\n                    <InputOTPGroup>\n                      <InputOTPSlot index={0} />\n                      <InputOTPSlot index={1} />\n                      <InputOTPSlot index={2} />\n                    </InputOTPGroup>\n                    <InputOTPSeparator />\n                    <InputOTPGroup>\n                      <InputOTPSlot index={3} />\n                      <InputOTPSlot index={4} />\n                      <InputOTPSlot index={5} />\n                    </InputOTPGroup>\n                  </InputOTP>\n                </Field>\n\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"notifications-rfq\">\n                      Email Notifications\n                    </FieldLabel>\n                    <FieldDescription>\n                      Receive updates about your application status\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch id=\"notifications-rfq\" defaultChecked />\n                </Field>\n                <FieldGroup>\n                  <Field orientation=\"horizontal\">\n                    <Checkbox id=\"terms-y7h\" required />\n                    <FieldLabel htmlFor=\"terms-y7h\" className=\"font-normal\">\n                      I agree to the terms and conditions and privacy policy\n                    </FieldLabel>\n                  </Field>\n                  <Field orientation=\"horizontal\">\n                    <Checkbox id=\"accurate-vte\" required />\n                    <FieldLabel htmlFor=\"accurate-vte\" className=\"font-normal\">\n                      I confirm that all information provided is accurate\n                    </FieldLabel>\n                  </Field>\n                </FieldGroup>\n              </FieldGroup>\n            </FieldSet>\n            <Field orientation=\"horizontal\">\n              <Button variant=\"outline\">Save Draft</Button>\n              <Button type=\"submit\">Submit Application</Button>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function ComplexFormInvalidDemo() {\n  const [startDate, setStartDate] = useState<Date>()\n  const [experience, setExperience] = useState([3])\n  const [workType, setWorkType] = useState(\"hybrid\")\n\n  return (\n    <Card className=\"w-full max-w-3xl\">\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <FieldSet>\n              <FieldLegend>Personal Information</FieldLegend>\n              <FieldDescription>\n                Your basic contact information.\n              </FieldDescription>\n              <FieldGroup>\n                <div className=\"grid grid-cols-2 gap-4\">\n                  <Field data-invalid>\n                    <FieldLabel htmlFor=\"firstName-invalid-ygm\">\n                      First Name\n                    </FieldLabel>\n                    <Input\n                      id=\"firstName-invalid-ygm\"\n                      placeholder=\"John\"\n                      required\n                      aria-invalid\n                    />\n                  </Field>\n                  <Field data-invalid>\n                    <FieldLabel htmlFor=\"lastName-invalid-qlq\">\n                      Last Name\n                    </FieldLabel>\n                    <Input\n                      id=\"lastName-invalid-qlq\"\n                      placeholder=\"Doe\"\n                      required\n                      aria-invalid\n                    />\n                  </Field>\n                </div>\n                <Field data-invalid>\n                  <FieldLabel htmlFor=\"email-invalid-8tl\">\n                    Email Address\n                  </FieldLabel>\n                  <Input\n                    id=\"email-invalid-8tl\"\n                    type=\"email\"\n                    placeholder=\"john.doe@example.com\"\n                    required\n                    aria-invalid\n                  />\n                  <FieldDescription>\n                    We&apos;ll use this for all communications.\n                  </FieldDescription>\n                </Field>\n                <div className=\"grid grid-cols-2 gap-4\">\n                  <Field data-invalid>\n                    <FieldLabel htmlFor=\"phone-invalid-2r4\">\n                      Phone Number\n                    </FieldLabel>\n                    <Input\n                      id=\"phone-invalid-2r4\"\n                      type=\"tel\"\n                      placeholder=\"+1 (555) 123-4567\"\n                      aria-invalid\n                    />\n                  </Field>\n                  <Field data-invalid>\n                    <FieldLabel htmlFor=\"birthdate-invalid-49m\">\n                      Date of Birth\n                    </FieldLabel>\n                    <Popover>\n                      <PopoverTrigger asChild>\n                        <Button\n                          id=\"birthdate-invalid-49m\"\n                          variant=\"outline\"\n                          className={cn(\n                            \"w-full justify-start text-left font-normal\",\n                            !startDate && \"text-muted-foreground\"\n                          )}\n                        >\n                          <CalendarIcon />\n                          {startDate ? (\n                            format(startDate, \"PPP\")\n                          ) : (\n                            <span>Pick a date</span>\n                          )}\n                        </Button>\n                      </PopoverTrigger>\n                      <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                        <Calendar\n                          mode=\"single\"\n                          selected={startDate}\n                          onSelect={setStartDate}\n                          aria-invalid\n                        />\n                      </PopoverContent>\n                    </Popover>\n                  </Field>\n                </div>\n                <Field data-invalid>\n                  <FieldLabel htmlFor=\"coverLetter-invalid-6n9\">\n                    Cover Letter\n                  </FieldLabel>\n                  <Textarea\n                    id=\"coverLetter-invalid-6n9\"\n                    placeholder=\"Tell us why you're a great fit for this position...\"\n                    className=\"min-h-[120px]\"\n                    aria-invalid\n                  />\n                  <FieldDescription>\n                    Briefly describe your interest and qualifications (500 words\n                    max)\n                  </FieldDescription>\n                </Field>\n                <Field data-invalid>\n                  <FieldLabel htmlFor=\"resume-invalid-b6z\">\n                    Upload Resume\n                  </FieldLabel>\n                  <Input\n                    id=\"resume-invalid-b6z\"\n                    type=\"file\"\n                    accept=\".pdf,.doc,.docx\"\n                    aria-invalid\n                  />\n                  <FieldDescription>\n                    PDF or Word document (max 5MB)\n                  </FieldDescription>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend>Professional Background</FieldLegend>\n              <FieldGroup>\n                <Field data-invalid>\n                  <FieldLabel htmlFor=\"position-invalid-1fv\">\n                    Position Applying For\n                  </FieldLabel>\n                  <Select>\n                    <SelectTrigger id=\"position-invalid-1fv\" aria-invalid>\n                      <SelectValue placeholder=\"Select a position\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"frontend\">\n                        Frontend Developer\n                      </SelectItem>\n                      <SelectItem value=\"backend\">Backend Developer</SelectItem>\n                      <SelectItem value=\"fullstack\">\n                        Full Stack Developer\n                      </SelectItem>\n                      <SelectItem value=\"designer\">UI/UX Designer</SelectItem>\n                      <SelectItem value=\"pm\">Product Manager</SelectItem>\n                      <SelectItem value=\"devops\">DevOps Engineer</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field data-invalid>\n                  <FieldLabel htmlFor=\"experience-invalid-xri\">\n                    Years of Experience\n                  </FieldLabel>\n                  <Slider\n                    id=\"experience-invalid-xri\"\n                    value={experience}\n                    onValueChange={setExperience}\n                    max={20}\n                    min={0}\n                    step={1}\n                  />\n                  <FieldDescription>\n                    {experience[0]} {experience[0] === 1 ? \"year\" : \"years\"} of\n                    experience\n                  </FieldDescription>\n                </Field>\n                <Field data-invalid>\n                  <FieldLabel>Employment Type Preference</FieldLabel>\n                  <ToggleGroup\n                    type=\"single\"\n                    value={workType}\n                    onValueChange={setWorkType}\n                    variant=\"outline\"\n                    className=\"w-full\"\n                  >\n                    <ToggleGroupItem value=\"remote\" className=\"flex-1\">\n                      Remote\n                    </ToggleGroupItem>\n                    <ToggleGroupItem value=\"office\" className=\"flex-1\">\n                      Office\n                    </ToggleGroupItem>\n                    <ToggleGroupItem value=\"hybrid\" className=\"flex-1\">\n                      Hybrid\n                    </ToggleGroupItem>\n                  </ToggleGroup>\n                </Field>\n                <FieldSet>\n                  <FieldLegend>Technical Skills</FieldLegend>\n                  <FieldDescription>Select all that apply</FieldDescription>\n                  <FieldGroup className=\"grid grid-cols-3 gap-3\">\n                    <Field data-invalid orientation=\"horizontal\">\n                      <Checkbox id=\"skill-ts-invalid-khi\" aria-invalid />\n                      <FieldLabel\n                        htmlFor=\"skill-ts-invalid-khi\"\n                        className=\"font-normal\"\n                      >\n                        TypeScript\n                      </FieldLabel>\n                    </Field>\n                    <Field data-invalid orientation=\"horizontal\">\n                      <Checkbox id=\"skill-react-invalid-oxj\" aria-invalid />\n                      <FieldLabel\n                        htmlFor=\"skill-react-invalid-oxj\"\n                        className=\"font-normal\"\n                      >\n                        React\n                      </FieldLabel>\n                    </Field>\n                    <Field data-invalid orientation=\"horizontal\">\n                      <Checkbox id=\"skill-node-invalid-y18\" aria-invalid />\n                      <FieldLabel\n                        htmlFor=\"skill-node-invalid-y18\"\n                        className=\"font-normal\"\n                      >\n                        Node.js\n                      </FieldLabel>\n                    </Field>\n                    <Field data-invalid orientation=\"horizontal\">\n                      <Checkbox id=\"skill-python-invalid-3jp\" aria-invalid />\n                      <FieldLabel\n                        htmlFor=\"skill-python-invalid-3jp\"\n                        className=\"font-normal\"\n                      >\n                        Python\n                      </FieldLabel>\n                    </Field>\n                    <Field data-invalid orientation=\"horizontal\">\n                      <Checkbox id=\"skill-docker-invalid-5b0\" aria-invalid />\n                      <FieldLabel\n                        htmlFor=\"skill-docker-invalid-5b0\"\n                        className=\"font-normal\"\n                      >\n                        Docker\n                      </FieldLabel>\n                    </Field>\n                  </FieldGroup>\n                </FieldSet>\n              </FieldGroup>\n            </FieldSet>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend>Verification</FieldLegend>\n              <FieldGroup>\n                <Field data-invalid>\n                  <FieldLabel htmlFor=\"verification-invalid-zyx\">\n                    Enter Verification Code\n                  </FieldLabel>\n                  <FieldDescription>\n                    Enter the 6-digit code sent to your email\n                  </FieldDescription>\n                  <InputOTP id=\"verification-invalid-zyx\" maxLength={6}>\n                    <InputOTPGroup>\n                      <InputOTPSlot index={0} aria-invalid />\n                      <InputOTPSlot index={1} aria-invalid />\n                      <InputOTPSlot index={2} aria-invalid />\n                    </InputOTPGroup>\n                    <InputOTPSeparator />\n                    <InputOTPGroup>\n                      <InputOTPSlot index={3} aria-invalid />\n                      <InputOTPSlot index={4} aria-invalid />\n                      <InputOTPSlot index={5} aria-invalid />\n                    </InputOTPGroup>\n                  </InputOTP>\n                </Field>\n                <Field data-invalid orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"notifications-invalid-73q\">\n                      Email Notifications\n                    </FieldLabel>\n                    <FieldDescription>\n                      Receive updates about your application status\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch\n                    id=\"notifications-invalid-73q\"\n                    defaultChecked\n                    className=\"ml-auto\"\n                    aria-invalid\n                  />\n                </Field>\n                <FieldGroup>\n                  <Field data-invalid orientation=\"horizontal\">\n                    <Checkbox id=\"terms-invalid-0x4\" required />\n                    <FieldLabel\n                      htmlFor=\"terms-invalid-0x4\"\n                      className=\"font-normal\"\n                    >\n                      I agree to the terms and conditions and privacy policy\n                    </FieldLabel>\n                  </Field>\n                  <Field data-invalid orientation=\"horizontal\">\n                    <Checkbox id=\"accurate-invalid-z0j\" required />\n                    <FieldLabel\n                      htmlFor=\"accurate-invalid-z0j\"\n                      className=\"font-normal\"\n                    >\n                      I confirm that all information provided is accurate\n                    </FieldLabel>\n                  </Field>\n                </FieldGroup>\n              </FieldGroup>\n            </FieldSet>\n            <Field orientation=\"horizontal\">\n              <Button variant=\"outline\">Save Draft</Button>\n              <Button type=\"submit\">Submit Application</Button>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport function FormOrientationDemo() {\n  return (\n    <Card className=\"w-full max-w-2xl\">\n      <CardHeader>\n        <CardTitle>Field Orientation Examples</CardTitle>\n        <CardDescription>\n          Demonstrating vertical, horizontal, and responsive orientations\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>Vertical Orientation (Default)</FieldLegend>\n            <FieldDescription>\n              Label appears above the input - best for mobile and narrow layouts\n            </FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"vertical-name\">Full Name</FieldLabel>\n                <Input id=\"vertical-name\" placeholder=\"Enter your name\" />\n                <FieldDescription>\n                  This field uses vertical orientation\n                </FieldDescription>\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"vertical-select\">Country</FieldLabel>\n                <Select>\n                  <SelectTrigger id=\"vertical-select\">\n                    <SelectValue placeholder=\"Select country\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"us\">United States</SelectItem>\n                    <SelectItem value=\"uk\">United Kingdom</SelectItem>\n                    <SelectItem value=\"ca\">Canada</SelectItem>\n                  </SelectContent>\n                </Select>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"vertical-notifications\">\n                    Email Notifications\n                  </FieldLabel>\n                  <FieldDescription>\n                    Receive product updates and news\n                  </FieldDescription>\n                </FieldContent>\n                <Switch id=\"vertical-notifications\" />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n\n          <FieldSeparator />\n\n          <FieldSet>\n            <FieldLegend>Horizontal Orientation</FieldLegend>\n            <FieldDescription>\n              Label appears to the left of the input - great for desktop forms\n              with short labels\n            </FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"horizontal-name\">Name</FieldLabel>\n                  <FieldDescription>Your display name</FieldDescription>\n                </FieldContent>\n                <Input id=\"horizontal-name\" placeholder=\"Enter name\" />\n              </Field>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"horizontal-theme\">Theme</FieldLabel>\n                  <FieldDescription>\n                    Choose your preferred theme\n                  </FieldDescription>\n                </FieldContent>\n                <Select>\n                  <SelectTrigger id=\"horizontal-theme\">\n                    <SelectValue placeholder=\"Select theme\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"light\">Light</SelectItem>\n                    <SelectItem value=\"dark\">Dark</SelectItem>\n                    <SelectItem value=\"system\">System</SelectItem>\n                  </SelectContent>\n                </Select>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"horizontal-volume\">Volume</FieldLabel>\n                  <FieldDescription>Adjust audio level</FieldDescription>\n                </FieldContent>\n                <Slider id=\"horizontal-volume\" defaultValue={[50]} max={100} />\n              </Field>\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"horizontal-auto-save\">\n                    Auto Save\n                  </FieldLabel>\n                  <FieldDescription>\n                    Automatically save changes\n                  </FieldDescription>\n                </FieldContent>\n                <Switch id=\"horizontal-auto-save\" defaultChecked />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n\n          <FieldSeparator />\n\n          <FieldSet>\n            <FieldLegend>Responsive Orientation</FieldLegend>\n            <FieldDescription>\n              Vertical on mobile, horizontal on desktop - the best of both\n              worlds\n            </FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"responsive\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"responsive-username\">\n                    Username\n                  </FieldLabel>\n                  <FieldDescription>Choose a unique username</FieldDescription>\n                </FieldContent>\n                <Input id=\"responsive-username\" placeholder=\"username\" />\n              </Field>\n              <Field orientation=\"responsive\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"responsive-language\">\n                    Language\n                  </FieldLabel>\n                  <FieldDescription>\n                    Select your preferred language\n                  </FieldDescription>\n                </FieldContent>\n                <Select>\n                  <SelectTrigger id=\"responsive-language\">\n                    <SelectValue placeholder=\"Select language\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"en\">English</SelectItem>\n                    <SelectItem value=\"es\">Spanish</SelectItem>\n                    <SelectItem value=\"fr\">French</SelectItem>\n                    <SelectItem value=\"de\">German</SelectItem>\n                  </SelectContent>\n                </Select>\n              </Field>\n              <Field orientation=\"responsive\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"responsive-brightness\">\n                    Brightness\n                  </FieldLabel>\n                  <FieldDescription>Adjust screen brightness</FieldDescription>\n                </FieldContent>\n                <Slider\n                  id=\"responsive-brightness\"\n                  defaultValue={[75]}\n                  max={100}\n                />\n              </Field>\n              <Field orientation=\"responsive\">\n                <FieldContent>\n                  <FieldLabel htmlFor=\"responsive-location\">\n                    Location Services\n                  </FieldLabel>\n                  <FieldDescription>\n                    Allow apps to access your location\n                  </FieldDescription>\n                </FieldContent>\n                <Switch id=\"responsive-location\" />\n              </Field>\n              <Field orientation=\"responsive\">\n                <Checkbox id=\"responsive-checkbox\" />\n                <FieldLabel\n                  htmlFor=\"responsive-checkbox\"\n                  className=\"font-normal\"\n                >\n                  I agree to the terms and conditions\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n\nfunction CheckoutForm() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Checkout</CardTitle>\n        <CardDescription>\n          Complete your order by filling in the details below\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <FieldSet>\n              <FieldLegend>Shipping Information</FieldLegend>\n              <FieldDescription>\n                Enter your shipping address where we&apos;ll deliver your order\n              </FieldDescription>\n              <FieldGroup>\n                <div className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"checkout-7j9-first-name-dso\">\n                      First Name\n                    </FieldLabel>\n                    <Input\n                      id=\"checkout-7j9-first-name-dso\"\n                      placeholder=\"John\"\n                      required\n                    />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"checkout-7j9-last-name-qmb\">\n                      Last Name\n                    </FieldLabel>\n                    <Input\n                      id=\"checkout-7j9-last-name-qmb\"\n                      placeholder=\"Doe\"\n                      required\n                    />\n                  </Field>\n                </div>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-email-t33\">\n                    Email\n                  </FieldLabel>\n                  <Input\n                    id=\"checkout-7j9-email-t33\"\n                    type=\"email\"\n                    placeholder=\"john.doe@example.com\"\n                    required\n                  />\n                  <FieldDescription>\n                    We&apos;ll send your receipt to this email\n                  </FieldDescription>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-address-zgo\">\n                    Street Address\n                  </FieldLabel>\n                  <Input\n                    id=\"checkout-7j9-address-zgo\"\n                    placeholder=\"123 Main Street\"\n                    required\n                  />\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-address2-d4t\">\n                    Apartment, suite, etc. (optional)\n                  </FieldLabel>\n                  <Input\n                    id=\"checkout-7j9-address2-d4t\"\n                    placeholder=\"Apartment 4B\"\n                  />\n                </Field>\n                <div className=\"grid grid-cols-2 gap-4 sm:grid-cols-4\">\n                  <Field className=\"sm:col-span-2\">\n                    <FieldLabel htmlFor=\"checkout-7j9-city-poj\">\n                      City\n                    </FieldLabel>\n                    <Input\n                      id=\"checkout-7j9-city-poj\"\n                      placeholder=\"New York\"\n                      required\n                    />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"checkout-7j9-state-psg\">\n                      State\n                    </FieldLabel>\n                    <Select defaultValue=\"\">\n                      <SelectTrigger id=\"checkout-7j9-state-psg\">\n                        <SelectValue placeholder=\"Select\" />\n                      </SelectTrigger>\n                      <SelectContent>\n                        <SelectItem value=\"ca\">CA</SelectItem>\n                        <SelectItem value=\"ny\">NY</SelectItem>\n                        <SelectItem value=\"tx\">TX</SelectItem>\n                        <SelectItem value=\"fl\">FL</SelectItem>\n                        <SelectItem value=\"wa\">WA</SelectItem>\n                      </SelectContent>\n                    </Select>\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"checkout-7j9-zip\">ZIP Code</FieldLabel>\n                    <Input id=\"checkout-7j9-zip\" placeholder=\"10001\" required />\n                  </Field>\n                </div>\n                <div className=\"grid grid-cols-4 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"checkout-7j9-country-code-fl7\">\n                      Code\n                    </FieldLabel>\n                    <Select defaultValue=\"us\">\n                      <SelectTrigger id=\"checkout-7j9-country-code-fl7\">\n                        <SelectValue />\n                      </SelectTrigger>\n                      <SelectContent>\n                        <SelectItem value=\"us\">+1</SelectItem>\n                        <SelectItem value=\"uk\">+44</SelectItem>\n                        <SelectItem value=\"ca\">+1</SelectItem>\n                        <SelectItem value=\"au\">+61</SelectItem>\n                      </SelectContent>\n                    </Select>\n                  </Field>\n                  <Field className=\"col-span-3\">\n                    <FieldLabel htmlFor=\"checkout-7j9-phone-g63\">\n                      Phone Number\n                    </FieldLabel>\n                    <Input\n                      id=\"checkout-7j9-phone-g63\"\n                      type=\"tel\"\n                      placeholder=\"(555) 123-4567\"\n                      required\n                    />\n                  </Field>\n                </div>\n              </FieldGroup>\n            </FieldSet>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend>Payment Method</FieldLegend>\n              <FieldDescription>\n                All transactions are secure and encrypted\n              </FieldDescription>\n              <FieldGroup>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-card-name-43j\">\n                    Name on Card\n                  </FieldLabel>\n                  <Input\n                    id=\"checkout-7j9-card-name-43j\"\n                    placeholder=\"John Doe\"\n                    required\n                  />\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-card-number-uw1\">\n                    Card Number\n                  </FieldLabel>\n                  <Input\n                    id=\"checkout-7j9-card-number-uw1\"\n                    placeholder=\"1234 5678 9012 3456\"\n                    required\n                  />\n                  <FieldDescription>\n                    Enter your 16-digit card number\n                  </FieldDescription>\n                </Field>\n                <div className=\"grid grid-cols-3 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"checkout-7j9-exp-month-ts6\">\n                      Month\n                    </FieldLabel>\n                    <Select defaultValue=\"\">\n                      <SelectTrigger id=\"checkout-7j9-exp-month-ts6\">\n                        <SelectValue placeholder=\"MM\" />\n                      </SelectTrigger>\n                      <SelectContent>\n                        <SelectItem value=\"01\">01</SelectItem>\n                        <SelectItem value=\"02\">02</SelectItem>\n                        <SelectItem value=\"03\">03</SelectItem>\n                        <SelectItem value=\"04\">04</SelectItem>\n                        <SelectItem value=\"05\">05</SelectItem>\n                        <SelectItem value=\"06\">06</SelectItem>\n                        <SelectItem value=\"07\">07</SelectItem>\n                        <SelectItem value=\"08\">08</SelectItem>\n                        <SelectItem value=\"09\">09</SelectItem>\n                        <SelectItem value=\"10\">10</SelectItem>\n                        <SelectItem value=\"11\">11</SelectItem>\n                        <SelectItem value=\"12\">12</SelectItem>\n                      </SelectContent>\n                    </Select>\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"checkout-7j9-exp-year-f59\">\n                      Year\n                    </FieldLabel>\n                    <Select defaultValue=\"\">\n                      <SelectTrigger id=\"checkout-7j9-exp-year-f59\">\n                        <SelectValue placeholder=\"YYYY\" />\n                      </SelectTrigger>\n                      <SelectContent>\n                        <SelectItem value=\"2024\">2024</SelectItem>\n                        <SelectItem value=\"2025\">2025</SelectItem>\n                        <SelectItem value=\"2026\">2026</SelectItem>\n                        <SelectItem value=\"2027\">2027</SelectItem>\n                        <SelectItem value=\"2028\">2028</SelectItem>\n                        <SelectItem value=\"2029\">2029</SelectItem>\n                      </SelectContent>\n                    </Select>\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"checkout-7j9-cvv\">CVV</FieldLabel>\n                    <Input id=\"checkout-7j9-cvv\" placeholder=\"123\" required />\n                  </Field>\n                </div>\n              </FieldGroup>\n            </FieldSet>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend>Billing Address</FieldLegend>\n              <FieldDescription>\n                The billing address associated with your payment method\n              </FieldDescription>\n              <FieldGroup>\n                <Field orientation=\"horizontal\">\n                  <Checkbox\n                    id=\"checkout-7j9-same-as-shipping-wgm\"\n                    defaultChecked\n                  />\n                  <FieldLabel\n                    htmlFor=\"checkout-7j9-same-as-shipping-wgm\"\n                    className=\"font-normal\"\n                  >\n                    Same as shipping address\n                  </FieldLabel>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend>Additional Options</FieldLegend>\n              <FieldDescription>\n                Choose how you&apos;d like us to stay in touch\n              </FieldDescription>\n              <FieldGroup className=\"gap-3\">\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"checkout-7j9-save-info-zdo\" />\n                  <FieldLabel\n                    htmlFor=\"checkout-7j9-save-info-zdo\"\n                    className=\"font-normal\"\n                  >\n                    Save my information for faster checkout next time\n                  </FieldLabel>\n                </Field>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"checkout-7j9-newsletter-6yv\" />\n                  <FieldLabel\n                    htmlFor=\"checkout-7j9-newsletter-6yv\"\n                    className=\"font-normal\"\n                  >\n                    Email me with news and offers\n                  </FieldLabel>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n            <Field>\n              <Button type=\"submit\" className=\"flex-1\">\n                Complete Order\n              </Button>\n              <Button variant=\"outline\" className=\"flex-1\">\n                Return to Cart\n              </Button>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/form-demo.tsx",
    "content": "\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport { z } from \"zod\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Form,\n  FormControl,\n  FormDescription,\n  FormField,\n  FormItem,\n  FormLabel,\n  FormMessage,\n} from \"@/registry/new-york-v4/ui/form\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nconst items = [\n  {\n    id: \"recents\",\n    label: \"Recents\",\n  },\n  {\n    id: \"home\",\n    label: \"Home\",\n  },\n  {\n    id: \"applications\",\n    label: \"Applications\",\n  },\n  {\n    id: \"desktop\",\n    label: \"Desktop\",\n  },\n  {\n    id: \"downloads\",\n    label: \"Downloads\",\n  },\n  {\n    id: \"documents\",\n    label: \"Documents\",\n  },\n] as const\n\nconst FormSchema = z.object({\n  username: z.string().min(2, {\n    message: \"Username must be at least 2 characters.\",\n  }),\n  bio: z\n    .string()\n    .min(10, {\n      message: \"Bio must be at least 10 characters.\",\n    })\n    .max(160, {\n      message: \"Bio must not be longer than 30 characters.\",\n    }),\n  email: z\n    .string({\n      required_error: \"Please select an email to display.\",\n    })\n    .email(),\n  type: z.enum([\"all\", \"mentions\", \"none\"], {\n    required_error: \"You need to select a notification type.\",\n  }),\n  mobile: z.boolean().default(false).optional(),\n  items: z.array(z.string()).refine((value) => value.some((item) => item), {\n    message: \"You have to select at least one item.\",\n  }),\n  dob: z.date({\n    required_error: \"A date of birth is required.\",\n  }),\n  marketing_emails: z.boolean().default(false).optional(),\n  security_emails: z.boolean(),\n})\n\nexport function FormDemo() {\n  const form = useForm<z.infer<typeof FormSchema>>({\n    resolver: zodResolver(FormSchema),\n    defaultValues: {\n      username: \"\",\n      items: [\"recents\", \"home\"],\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof FormSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\">\n          <code className=\"text-white\">{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n    })\n  }\n\n  return (\n    <Form {...form}>\n      <form\n        onSubmit={form.handleSubmit(onSubmit)}\n        className=\"grid w-full max-w-sm gap-6\"\n      >\n        <FormField\n          control={form.control}\n          name=\"username\"\n          render={({ field }) => (\n            <FormItem>\n              <FormLabel>Username</FormLabel>\n              <FormControl>\n                <Input placeholder=\"shadcn\" {...field} />\n              </FormControl>\n              <FormDescription>\n                This is your public display name.\n              </FormDescription>\n              <FormMessage />\n            </FormItem>\n          )}\n        />\n        <FormField\n          control={form.control}\n          name=\"email\"\n          render={({ field }) => (\n            <FormItem>\n              <FormLabel>Email</FormLabel>\n              <Select onValueChange={field.onChange} defaultValue={field.value}>\n                <FormControl>\n                  <SelectTrigger>\n                    <SelectValue placeholder=\"Select a verified email to display\" />\n                  </SelectTrigger>\n                </FormControl>\n                <SelectContent>\n                  <SelectItem value=\"m@example.com\">m@example.com</SelectItem>\n                  <SelectItem value=\"m@google.com\">m@google.com</SelectItem>\n                  <SelectItem value=\"m@support.com\">m@support.com</SelectItem>\n                </SelectContent>\n              </Select>\n              <FormDescription>\n                You can manage email addresses in your email settings.\n              </FormDescription>\n              <FormMessage />\n            </FormItem>\n          )}\n        />\n        <FormField\n          control={form.control}\n          name=\"bio\"\n          render={({ field }) => (\n            <FormItem>\n              <FormLabel>Bio</FormLabel>\n              <FormControl>\n                <Textarea\n                  placeholder=\"Tell us a little bit about yourself\"\n                  className=\"resize-none\"\n                  {...field}\n                />\n              </FormControl>\n              <FormDescription>\n                You can <span>@mention</span> other users and organizations.\n              </FormDescription>\n              <FormMessage />\n            </FormItem>\n          )}\n        />\n        <FormField\n          control={form.control}\n          name=\"type\"\n          render={({ field }) => (\n            <FormItem className=\"flex flex-col gap-3\">\n              <FormLabel>Notify me about...</FormLabel>\n              <FormControl>\n                <RadioGroup\n                  onValueChange={field.onChange}\n                  defaultValue={field.value}\n                  className=\"flex flex-col gap-3\"\n                >\n                  <FormItem className=\"flex items-center gap-2\">\n                    <FormControl>\n                      <RadioGroupItem value=\"all\" />\n                    </FormControl>\n                    <FormLabel className=\"font-normal\">\n                      All new messages\n                    </FormLabel>\n                  </FormItem>\n                  <FormItem className=\"flex items-center gap-2\">\n                    <FormControl>\n                      <RadioGroupItem value=\"mentions\" />\n                    </FormControl>\n                    <FormLabel className=\"font-normal\">\n                      Direct messages and mentions\n                    </FormLabel>\n                  </FormItem>\n                  <FormItem className=\"flex items-center gap-2\">\n                    <FormControl>\n                      <RadioGroupItem value=\"none\" />\n                    </FormControl>\n                    <FormLabel className=\"font-normal\">Nothing</FormLabel>\n                  </FormItem>\n                </RadioGroup>\n              </FormControl>\n              <FormMessage />\n            </FormItem>\n          )}\n        />\n        <FormField\n          control={form.control}\n          name=\"mobile\"\n          render={({ field }) => (\n            <FormItem className=\"flex flex-row items-start gap-3 rounded-md border p-4 shadow-xs\">\n              <FormControl>\n                <Checkbox\n                  checked={field.value}\n                  onCheckedChange={field.onChange}\n                />\n              </FormControl>\n              <div className=\"flex flex-col gap-1\">\n                <FormLabel className=\"leading-snug\">\n                  Use different settings for my mobile devices\n                </FormLabel>\n                <FormDescription className=\"leading-snug\">\n                  You can manage your mobile notifications in the mobile\n                  settings page.\n                </FormDescription>\n              </div>\n            </FormItem>\n          )}\n        />\n        <FormField\n          control={form.control}\n          name=\"items\"\n          render={() => (\n            <FormItem className=\"flex flex-col gap-4\">\n              <div>\n                <FormLabel className=\"text-base\">Sidebar</FormLabel>\n                <FormDescription>\n                  Select the items you want to display in the sidebar.\n                </FormDescription>\n              </div>\n              <div className=\"flex flex-col gap-2\">\n                {items.map((item) => (\n                  <FormField\n                    key={item.id}\n                    control={form.control}\n                    name=\"items\"\n                    render={({ field }) => {\n                      return (\n                        <FormItem\n                          key={item.id}\n                          className=\"flex items-start gap-3\"\n                        >\n                          <FormControl>\n                            <Checkbox\n                              checked={field.value?.includes(item.id)}\n                              onCheckedChange={(checked) => {\n                                return checked\n                                  ? field.onChange([...field.value, item.id])\n                                  : field.onChange(\n                                      field.value?.filter(\n                                        (value) => value !== item.id\n                                      )\n                                    )\n                              }}\n                            />\n                          </FormControl>\n                          <FormLabel className=\"text-sm leading-tight font-normal\">\n                            {item.label}\n                          </FormLabel>\n                        </FormItem>\n                      )\n                    }}\n                  />\n                ))}\n              </div>\n              <FormMessage />\n            </FormItem>\n          )}\n        />\n        <FormField\n          control={form.control}\n          name=\"dob\"\n          render={({ field }) => (\n            <FormItem className=\"flex flex-col\">\n              <FormLabel>Date of birth</FormLabel>\n              <Popover>\n                <PopoverTrigger asChild>\n                  <FormControl>\n                    <Button\n                      variant={\"outline\"}\n                      className={cn(\n                        \"w-[240px] pl-3 text-left font-normal\",\n                        !field.value && \"text-muted-foreground\"\n                      )}\n                    >\n                      {field.value ? (\n                        format(field.value, \"PPP\")\n                      ) : (\n                        <span>Pick a date</span>\n                      )}\n                      <CalendarIcon className=\"ml-auto h-4 w-4 opacity-50\" />\n                    </Button>\n                  </FormControl>\n                </PopoverTrigger>\n                <PopoverContent className=\"w-auto p-0\" align=\"start\">\n                  <Calendar\n                    mode=\"single\"\n                    selected={field.value}\n                    onSelect={field.onChange}\n                    disabled={(date: Date) =>\n                      date > new Date() || date < new Date(\"1900-01-01\")\n                    }\n                    initialFocus\n                  />\n                </PopoverContent>\n              </Popover>\n              <FormDescription>\n                Your date of birth is used to calculate your age.\n              </FormDescription>\n              <FormMessage />\n            </FormItem>\n          )}\n        />\n        <div>\n          <h3 className=\"mb-4 text-lg font-medium\">Email Notifications</h3>\n          <div className=\"flex flex-col gap-4\">\n            <FormField\n              control={form.control}\n              name=\"marketing_emails\"\n              render={({ field }) => (\n                <FormItem className=\"flex flex-row items-start justify-between rounded-lg border p-4 shadow-xs\">\n                  <div className=\"flex flex-col gap-0.5\">\n                    <FormLabel className=\"leading-normal\">\n                      Marketing emails\n                    </FormLabel>\n                    <FormDescription className=\"leading-snug\">\n                      Receive emails about new products, features, and more.\n                    </FormDescription>\n                  </div>\n                  <FormControl>\n                    <Switch\n                      checked={field.value}\n                      onCheckedChange={field.onChange}\n                    />\n                  </FormControl>\n                </FormItem>\n              )}\n            />\n            <FormField\n              control={form.control}\n              name=\"security_emails\"\n              render={({ field }) => (\n                <FormItem className=\"flex flex-row items-start justify-between rounded-lg border p-4 shadow-xs\">\n                  <div className=\"flex flex-col gap-0.5 opacity-60\">\n                    <FormLabel className=\"leading-normal\">\n                      Security emails\n                    </FormLabel>\n                    <FormDescription className=\"leading-snug\">\n                      Receive emails about your account security.\n                    </FormDescription>\n                  </div>\n                  <FormControl>\n                    <Switch\n                      checked={field.value}\n                      onCheckedChange={field.onChange}\n                      disabled\n                      aria-readonly\n                    />\n                  </FormControl>\n                </FormItem>\n              )}\n            />\n          </div>\n        </div>\n        <Button type=\"submit\">Submit</Button>\n      </form>\n    </Form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/hover-card-demo.tsx",
    "content": "import { CalendarIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/new-york-v4/ui/hover-card\"\n\nexport function HoverCardDemo() {\n  return (\n    <HoverCard>\n      <HoverCardTrigger asChild>\n        <Button variant=\"link\">@nextjs</Button>\n      </HoverCardTrigger>\n      <HoverCardContent className=\"w-80\" side=\"right\">\n        <div className=\"flex justify-between gap-4\">\n          <Avatar>\n            <AvatarImage src=\"https://github.com/vercel.png\" />\n            <AvatarFallback>VC</AvatarFallback>\n          </Avatar>\n          <div className=\"flex flex-col gap-1\">\n            <h4 className=\"text-sm font-semibold\">@nextjs</h4>\n            <p className=\"text-sm\">\n              The React Framework – created and maintained by @vercel.\n            </p>\n            <div className=\"mt-1 flex items-center gap-2\">\n              <CalendarIcon className=\"size-4 text-muted-foreground\" />{\" \"}\n              <span className=\"text-xs text-muted-foreground\">\n                Joined December 2021\n              </span>\n            </div>\n          </div>\n        </div>\n      </HoverCardContent>\n    </HoverCard>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/input-demo.tsx",
    "content": "import { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function InputDemo() {\n  return (\n    <div className=\"flex flex-col flex-wrap gap-4 md:flex-row\">\n      <Input type=\"email\" placeholder=\"Email\" />\n      <Input type=\"text\" placeholder=\"Error\" aria-invalid=\"true\" />\n      <Input type=\"password\" placeholder=\"Password\" />\n      <Input type=\"number\" placeholder=\"Number\" />\n      <Input type=\"file\" placeholder=\"File\" />\n      <Input type=\"tel\" placeholder=\"Tel\" />\n      <Input type=\"text\" placeholder=\"Text\" />\n      <Input type=\"url\" placeholder=\"URL\" />\n      <Input type=\"search\" placeholder=\"Search\" />\n      <Input type=\"date\" placeholder=\"Date\" />\n      <Input type=\"datetime-local\" placeholder=\"Datetime Local\" />\n      <Input type=\"month\" placeholder=\"Month\" />\n      <Input type=\"time\" placeholder=\"Time\" />\n      <Input type=\"week\" placeholder=\"Week\" />\n      <Input disabled placeholder=\"Disabled\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/input-group-demo.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n  IconBrandJavascript,\n  IconCheck,\n  IconChevronDown,\n  IconCopy,\n  IconInfoCircle,\n  IconLoader2,\n  IconMicrophone,\n  IconPlayerRecordFilled,\n  IconPlus,\n  IconRefresh,\n  IconSearch,\n  IconServerSpark,\n  IconStar,\n  IconTrash,\n} from \"@tabler/icons-react\"\nimport {\n  ArrowRightIcon,\n  ArrowUpIcon,\n  ChevronDownIcon,\n  EyeClosedIcon,\n  FlipVerticalIcon,\n  SearchIcon,\n} from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupText,\n} from \"@/registry/new-york-v4/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/registry/new-york-v4/ui/kbd\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport function InputGroupDemo() {\n  const [country, setCountry] = useState(\"+1\")\n\n  return (\n    <div className=\"flex w-full flex-wrap gap-12 pb-72 *:[div]:w-full *:[div]:max-w-sm\">\n      <div className=\"flex flex-col gap-10\">\n        <Field>\n          <FieldLabel htmlFor=\"input-default-01\">\n            Default (No Input Group)\n          </FieldLabel>\n          <Input placeholder=\"Default\" id=\"input-default-01\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-group-02\">Input Group</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-group-02\" placeholder=\"Default\" />\n          </InputGroup>\n        </Field>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"input-disabled-03\">Disabled</FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-disabled-03\"\n              placeholder=\"This field is disabled\"\n              disabled\n            />\n          </InputGroup>\n        </Field>\n        <Field data-invalid=\"true\">\n          <FieldLabel htmlFor=\"input-invalid-04\">Invalid</FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-invalid-04\"\n              placeholder=\"This field is invalid\"\n              aria-invalid=\"true\"\n            />\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-left-05\">Icon (left)</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-left-05\" />\n            <InputGroupAddon>\n              <SearchIcon className=\"text-muted-foreground\" />\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-left-06\" />\n            <InputGroupAddon>\n              <FlipVerticalIcon className=\"text-muted-foreground\" />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-right-07\">Icon (right)</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-right-07\" />\n            <InputGroupAddon align=\"inline-end\">\n              <EyeClosedIcon />\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-right-08\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconLoader2 className=\"animate-spin text-muted-foreground\" />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-both-09\">Icon (both)</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-both-09\" />\n            <InputGroupAddon>\n              <IconMicrophone className=\"text-muted-foreground\" />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlayerRecordFilled className=\"animate-pulse text-red-500\" />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-both-10\">Multiple Icons</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-both-10\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconStar />\n              <InputGroupButton\n                size=\"icon-xs\"\n                onClick={() => toast.success(\"Copied to clipboard\")}\n              >\n                <IconCopy />\n              </InputGroupButton>\n            </InputGroupAddon>\n            <InputGroupAddon>\n              <IconPlayerRecordFilled className=\"animate-pulse text-red-500\" />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-description-10\">Description</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-description-10\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconInfoCircle />\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <FieldGroup className=\"grid grid-cols-2 gap-4\">\n          <Field>\n            <FieldLabel htmlFor=\"input-group-11\">First Name</FieldLabel>\n            <InputGroup>\n              <InputGroupInput id=\"input-group-11\" placeholder=\"First Name\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconInfoCircle />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"input-group-12\">Last Name</FieldLabel>\n            <InputGroup>\n              <InputGroupInput id=\"input-group-12\" placeholder=\"Last Name\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconInfoCircle />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n        </FieldGroup>\n      </div>\n      <div className=\"flex flex-col gap-10\">\n        <Field>\n          <FieldLabel htmlFor=\"input-tooltip-20\">Tooltip</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-tooltip-20\" />\n            <InputGroupAddon align=\"inline-end\">\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <InputGroupButton className=\"rounded-full\" size=\"icon-xs\">\n                    <IconInfoCircle />\n                  </InputGroupButton>\n                </TooltipTrigger>\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\n              </Tooltip>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-dropdown-21\">Dropdown</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-dropdown-21\" />\n            <InputGroupAddon>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <InputGroupButton className=\"text-muted-foreground tabular-nums\">\n                    {country} <ChevronDownIcon />\n                  </InputGroupButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  align=\"start\"\n                  className=\"min-w-16\"\n                  sideOffset={10}\n                  alignOffset={-8}\n                >\n                  <DropdownMenuItem onClick={() => setCountry(\"+1\")}>\n                    +1\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={() => setCountry(\"+44\")}>\n                    +44\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={() => setCountry(\"+46\")}>\n                    +46\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n          <InputGroup>\n            <InputGroupAddon>\n              <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n            </InputGroupAddon>\n            <InputGroupInput id=\"input-label-10\" />\n          </InputGroup>\n          <InputGroup className=\"gap-0\">\n            <InputGroupAddon>\n              <FieldLabel\n                htmlFor=\"input-prefix-11\"\n                className=\"text-muted-foreground\"\n              >\n                example.com/\n              </FieldLabel>\n            </InputGroupAddon>\n            <InputGroupInput id=\"input-prefix-11\" />\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-optional-12\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupText>(optional)</InputGroupText>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-button-13\">Button</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-13\" />\n            <InputGroupAddon>\n              <InputGroupButton>Button</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-14\" />\n            <InputGroupAddon>\n              <InputGroupButton variant=\"outline\">Button</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-15\" />\n            <InputGroupAddon>\n              <InputGroupButton variant=\"secondary\">Button</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-16\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton variant=\"secondary\">Button</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-17\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton size=\"icon-xs\">\n                <IconCopy />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-18\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                <IconTrash />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup className=\"[--radius:9999px]\">\n            <Popover>\n              <PopoverTrigger asChild>\n                <InputGroupAddon>\n                  <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                    <IconInfoCircle />\n                  </InputGroupButton>\n                </InputGroupAddon>\n              </PopoverTrigger>\n              <PopoverContent\n                align=\"start\"\n                className=\"flex flex-col gap-1 rounded-xl text-sm\"\n              >\n                <p className=\"font-medium\">Your connection is not secure.</p>\n                <p>\n                  You should not enter any sensitive information on this site.\n                </p>\n              </PopoverContent>\n            </Popover>\n            <InputGroupAddon className=\"text-muted-foreground\">\n              https://\n            </InputGroupAddon>\n            <InputGroupInput id=\"input-secure-19\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton\n                size=\"icon-xs\"\n                onClick={() => toast.success(\"Added to favorites\")}\n              >\n                <IconStar />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-addon-20\">Addon (block-start)</FieldLabel>\n          <InputGroup className=\"h-auto\">\n            <InputGroupInput id=\"input-addon-20\" />\n            <InputGroupAddon align=\"block-start\">\n              <InputGroupText>First Name</InputGroupText>\n              <IconInfoCircle className=\"ml-auto text-muted-foreground\" />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-addon-21\">Addon (block-end)</FieldLabel>\n          <InputGroup className=\"h-auto\">\n            <InputGroupInput id=\"input-addon-21\" />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupText>20/240 characters</InputGroupText>\n              <IconInfoCircle className=\"ml-auto text-muted-foreground\" />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-comment-33\">Default Button</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-comment-33\"\n              placeholder=\"Share your thoughts...\"\n              className=\"py-2.5\"\n            />\n            <InputGroupAddon align=\"block-end\">\n              <ButtonGroup>\n                <Button variant=\"outline\" size=\"sm\">\n                  Button\n                </Button>\n                <Button variant=\"outline\" size=\"icon\" className=\"size-8\">\n                  <IconChevronDown />\n                </Button>\n              </ButtonGroup>\n              <Button variant=\"ghost\" className=\"ml-auto\" size=\"sm\">\n                Cancel\n              </Button>\n              <Button variant=\"default\" size=\"sm\">\n                Post <ArrowRightIcon />\n              </Button>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </div>\n      <div className=\"flex flex-col gap-10\">\n        <Field>\n          <FieldLabel htmlFor=\"input-kbd-22\">Input Group with Kbd</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-kbd-22\" />\n            <InputGroupAddon>\n              <Kbd>⌘K</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-kbd-23\" />\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>⌘K</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-search-apps-24\"\n              placeholder=\"Search for Apps...\"\n            />\n            <InputGroupAddon align=\"inline-end\">Ask AI</InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>Tab</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-search-type-25\"\n              placeholder=\"Type to search...\"\n            />\n            <InputGroupAddon align=\"inline-start\">\n              <IconServerSpark />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <KbdGroup>\n                <Kbd>Ctrl</Kbd>\n                <Kbd>C</Kbd>\n              </KbdGroup>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-username-26\">Username</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-username-26\" defaultValue=\"shadcn\" />\n            <InputGroupAddon align=\"inline-end\">\n              <div className=\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\">\n                <IconCheck className=\"size-3 text-white\" />\n              </div>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription className=\"text-green-700\">\n            This username is available.\n          </FieldDescription>\n        </Field>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-search-docs-27\"\n            placeholder=\"Search documentation...\"\n          />\n          <InputGroupAddon>\n            <IconSearch />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n        </InputGroup>\n        <InputGroup data-disabled=\"true\">\n          <InputGroupInput\n            id=\"input-search-disabled-28\"\n            placeholder=\"Search documentation...\"\n            disabled\n          />\n          <InputGroupAddon>\n            <IconSearch />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">Disabled</InputGroupAddon>\n        </InputGroup>\n        <Field>\n          <FieldLabel htmlFor=\"url\">With Button Group</FieldLabel>\n          <ButtonGroup>\n            <ButtonGroupText>https://</ButtonGroupText>\n            <InputGroup>\n              <InputGroupInput id=\"url\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconInfoCircle />\n              </InputGroupAddon>\n            </InputGroup>\n            <ButtonGroupText>.com</ButtonGroupText>\n          </ButtonGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"input-group-29\">Loading</FieldLabel>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-group-29\"\n              disabled\n              defaultValue=\"shadcn\"\n            />\n            <InputGroupAddon align=\"inline-end\">\n              <Spinner />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n\n        <Field>\n          <FieldLabel htmlFor=\"textarea-code-32\">Code Editor</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-code-32\"\n              placeholder=\"console.log('Hello, world!');\"\n              className=\"min-h-[300px] py-3\"\n            />\n            <InputGroupAddon align=\"block-start\" className=\"border-b\">\n              <InputGroupText className=\"font-mono font-medium\">\n                <IconBrandJavascript />\n                script.js\n              </InputGroupText>\n              <InputGroupButton size=\"icon-xs\" className=\"ml-auto\">\n                <IconRefresh />\n              </InputGroupButton>\n              <InputGroupButton size=\"icon-xs\" variant=\"ghost\">\n                <IconCopy />\n              </InputGroupButton>\n            </InputGroupAddon>\n            <InputGroupAddon align=\"block-end\" className=\"border-t\">\n              <InputGroupText>Line 1, Column 1</InputGroupText>\n              <InputGroupText className=\"ml-auto\">JavaScript</InputGroupText>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </div>\n      <div className=\"flex flex-col gap-10\">\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-12\">Default</FieldLabel>\n          <Textarea\n            id=\"textarea-header-footer-12\"\n            placeholder=\"Enter your text here...\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-13\">\n            Input Group\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-13\"\n              placeholder=\"Enter your text here...\"\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field data-invalid=\"true\">\n          <FieldLabel htmlFor=\"textarea-header-footer-14\">Invalid</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-14\"\n              placeholder=\"Enter your text here...\"\n              aria-invalid=\"true\"\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"textarea-header-footer-15\">Disabled</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-15\"\n              placeholder=\"Enter your text here...\"\n              disabled\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-30\">Textarea</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-30\"\n              placeholder=\"Enter your text here...\"\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupText>0/280 characters</InputGroupText>\n              <InputGroupButton\n                variant=\"default\"\n                size=\"icon-xs\"\n                className=\"ml-auto rounded-full\"\n              >\n                <ArrowUpIcon />\n                <span className=\"sr-only\">Send</span>\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"prompt-31\">Enter your prompt</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"prompt-31\"\n              placeholder=\"Ask, Search or Chat...\"\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupButton\n                variant=\"outline\"\n                className=\"rounded-full\"\n                size=\"icon-xs\"\n              >\n                <IconPlus />\n              </InputGroupButton>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <InputGroupButton variant=\"ghost\">Auto</InputGroupButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent side=\"top\" align=\"start\">\n                  <DropdownMenuItem>Auto</DropdownMenuItem>\n                  <DropdownMenuItem>Agent</DropdownMenuItem>\n                  <DropdownMenuItem>Manual</DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n              <InputGroupText className=\"ml-auto\">\n                12 messages left\n              </InputGroupText>\n              <InputGroupButton\n                variant=\"default\"\n                className=\"rounded-full\"\n                size=\"icon-xs\"\n              >\n                <ArrowUpIcon />\n                <span className=\"sr-only\">Send</span>\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-comment-31\">Comment Box</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-comment-31\"\n              placeholder=\"Share your thoughts...\"\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupButton variant=\"ghost\" className=\"ml-auto\" size=\"sm\">\n                Cancel\n              </InputGroupButton>\n              <InputGroupButton variant=\"default\" size=\"sm\">\n                Post Comment\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/input-otp-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\"\n\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/registry/new-york-v4/ui/input-otp\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport function InputOTPDemo() {\n  return (\n    <div className=\"flex flex-col flex-wrap gap-6 md:flex-row\">\n      <InputOTPSimple />\n      <InputOTPPattern />\n      <InputOTPWithSeparator />\n      <InputOTPWithSpacing />\n    </div>\n  )\n}\n\nfunction InputOTPSimple() {\n  return (\n    <div className=\"grid gap-2\">\n      <Label htmlFor=\"simple\">Simple</Label>\n      <InputOTP id=\"simple\" maxLength={6}>\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n        </InputOTPGroup>\n        <InputOTPSeparator />\n        <InputOTPGroup>\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n    </div>\n  )\n}\n\nfunction InputOTPPattern() {\n  return (\n    <div className=\"grid gap-2\">\n      <Label htmlFor=\"digits-only\">Digits Only</Label>\n      <InputOTP id=\"digits-only\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n    </div>\n  )\n}\n\nfunction InputOTPWithSeparator() {\n  const [value, setValue] = React.useState(\"123456\")\n\n  return (\n    <div className=\"grid gap-2\">\n      <Label htmlFor=\"with-separator\">With Separator</Label>\n      <InputOTP\n        id=\"with-separator\"\n        maxLength={6}\n        value={value}\n        onChange={setValue}\n      >\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n        </InputOTPGroup>\n        <InputOTPSeparator />\n        <InputOTPGroup>\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n        </InputOTPGroup>\n        <InputOTPSeparator />\n        <InputOTPGroup>\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n    </div>\n  )\n}\n\nfunction InputOTPWithSpacing() {\n  return (\n    <div className=\"grid gap-2\">\n      <Label htmlFor=\"with-spacing\">With Spacing</Label>\n      <InputOTP id=\"with-spacing\" maxLength={6}>\n        <InputOTPGroup className=\"gap-2 *:data-[slot=input-otp-slot]:rounded-md *:data-[slot=input-otp-slot]:border\">\n          <InputOTPSlot index={0} aria-invalid=\"true\" />\n          <InputOTPSlot index={1} aria-invalid=\"true\" />\n          <InputOTPSlot index={2} aria-invalid=\"true\" />\n          <InputOTPSlot index={3} aria-invalid=\"true\" />\n        </InputOTPGroup>\n      </InputOTP>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/item-demo.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\nimport { IconChevronRight, IconDownload } from \"@tabler/icons-react\"\nimport { PlusIcon, TicketIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemFooter,\n  ItemGroup,\n  ItemHeader,\n  ItemMedia,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\nimport { Progress } from \"@/registry/new-york-v4/ui/progress\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nconst people = [\n  {\n    username: \"shadcn\",\n    avatar: \"https://github.com/shadcn.png\",\n    message: \"Just shipped a component that fixes itself\",\n  },\n  {\n    username: \"pranathip\",\n    avatar: \"https://github.com/pranathip.png\",\n    message: \"My code is so clean, it does its own laundry\",\n  },\n  {\n    username: \"evilrabbit\",\n    avatar: \"https://github.com/evilrabbit.png\",\n    message:\n      \"Debugging is like being a detective in a crime movie where you're also the murderer\",\n  },\n  {\n    username: \"maxleiter\",\n    avatar: \"https://github.com/maxleiter.png\",\n    message:\n      \"I don't always test my code, but when I do, I test it in production\",\n  },\n]\n\nconst music = [\n  {\n    title: \"Midnight City Lights\",\n    artist: \"Neon Dreams\",\n    album: \"Electric Nights\",\n    duration: \"3:45\",\n  },\n  {\n    title: \"Coffee Shop Conversations\",\n    artist: \"The Morning Brew\",\n    album: \"Urban Stories\",\n    duration: \"4:05\",\n  },\n  {\n    title: \"Digital Rain\",\n    artist: \"Cyber Symphony\",\n    album: \"Binary Beats\",\n    duration: \"3:30\",\n  },\n  {\n    title: \"Sunset Boulevard\",\n    artist: \"Golden Hour\",\n    album: \"California Dreams\",\n    duration: \"3:55\",\n  },\n  {\n    title: \"Neon Sign Romance\",\n    artist: \"Retro Wave\",\n    album: \"80s Forever\",\n    duration: \"4:10\",\n  },\n  {\n    title: \"Ocean Depths\",\n    artist: \"Deep Blue\",\n    album: \"Underwater Symphony\",\n    duration: \"3:40\",\n  },\n  {\n    title: \"Space Station Alpha\",\n    artist: \"Cosmic Explorers\",\n    album: \"Galactic Journey\",\n    duration: \"3:50\",\n  },\n  {\n    title: \"Forest Whispers\",\n    artist: \"Nature's Choir\",\n    album: \"Woodland Tales\",\n    duration: \"3:35\",\n  },\n]\n\nconst issues = [\n  {\n    number: 1247,\n    date: \"March 15, 2024\",\n    title:\n      \"Button component doesn't respect disabled state when using custom variants\",\n    description:\n      \"When applying custom variants to the Button component, the disabled prop is ignored and the button remains clickable. This affects accessibility and user experience.\",\n  },\n  {\n    number: 892,\n    date: \"February 8, 2024\",\n    title: \"Dialog component causes scroll lock on mobile devices\",\n    description:\n      \"The Dialog component prevents scrolling on the background content but doesn't restore scroll position properly on mobile Safari and Chrome, causing layout shifts.\",\n  },\n  {\n    number: 1156,\n    date: \"January 22, 2024\",\n    title: \"TypeScript errors with Select component in strict mode\",\n    description:\n      \"Using the Select component with TypeScript strict mode enabled throws type errors related to generic constraints and value prop typing.\",\n  },\n  {\n    number: 734,\n    date: \"December 3, 2023\",\n    title: \"Dark mode toggle causes flash of unstyled content\",\n    description:\n      \"When switching between light and dark themes, there's a brief moment where components render with incorrect styling before the theme transition completes.\",\n  },\n  {\n    number: 1389,\n    date: \"April 2, 2024\",\n    title: \"Form validation messages overlap with floating labels\",\n    description:\n      \"Error messages in Form components with floating labels appear underneath the label text, making them difficult to read. Need better positioning logic for validation feedback.\",\n  },\n]\n\nexport function ItemDemo() {\n  return (\n    <div className=\"@container w-full\">\n      <div className=\"flex flex-wrap gap-6 2xl:gap-12\">\n        <div className=\"flex max-w-sm flex-col gap-6\">\n          <Item>\n            <ItemContent>\n              <ItemTitle>Item Title</ItemTitle>\n            </ItemContent>\n            <ItemActions>\n              <Button variant=\"outline\">Button</Button>\n            </ItemActions>\n          </Item>\n          <Item variant=\"outline\">\n            <ItemContent>\n              <ItemTitle>Item Title</ItemTitle>\n            </ItemContent>\n            <ItemActions>\n              <Button variant=\"outline\">Button</Button>\n            </ItemActions>\n          </Item>\n          <Item>\n            <ItemContent>\n              <ItemTitle>Item Title</ItemTitle>\n              <ItemDescription>Item Description</ItemDescription>\n            </ItemContent>\n            <ItemActions>\n              <Button variant=\"outline\">Button</Button>\n            </ItemActions>\n          </Item>\n          <Item variant=\"outline\">\n            <ItemContent>\n              <ItemTitle>Item Title</ItemTitle>\n              <ItemDescription>Item Description</ItemDescription>\n            </ItemContent>\n          </Item>\n          <Item variant=\"muted\">\n            <ItemContent>\n              <ItemTitle>Item Title</ItemTitle>\n              <ItemDescription>Item Description</ItemDescription>\n            </ItemContent>\n          </Item>\n          <Item variant=\"muted\">\n            <ItemContent>\n              <ItemTitle>Item Title</ItemTitle>\n              <ItemDescription>Item Description</ItemDescription>\n            </ItemContent>\n            <ItemActions>\n              <Button variant=\"outline\">Button</Button>\n              <Button variant=\"outline\">Button</Button>\n            </ItemActions>\n          </Item>\n          <Item variant=\"outline\">\n            <ItemMedia variant=\"icon\">\n              <TicketIcon />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Item Title</ItemTitle>\n            </ItemContent>\n            <ItemActions>\n              <Button size=\"sm\">Purchase</Button>\n            </ItemActions>\n          </Item>\n          <Item variant=\"muted\">\n            <ItemMedia variant=\"icon\">\n              <TicketIcon />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Item Title</ItemTitle>\n              <ItemDescription>Item Description</ItemDescription>\n            </ItemContent>\n            <ItemActions>\n              <Button size=\"sm\">Upgrade</Button>\n            </ItemActions>\n          </Item>\n          <FieldLabel>\n            <Field orientation=\"horizontal\">\n              <FieldContent>\n                <FieldTitle>Field Title</FieldTitle>\n                <FieldDescription>Field Description</FieldDescription>\n              </FieldContent>\n              <Button variant=\"outline\">Button</Button>\n            </Field>\n          </FieldLabel>\n        </div>\n        <div className=\"flex max-w-sm flex-col gap-6\">\n          <ItemGroup>\n            {people.map((person, index) => (\n              <React.Fragment key={person.username}>\n                <Item>\n                  <ItemMedia>\n                    <Avatar>\n                      <AvatarImage src={person.avatar} />\n                      <AvatarFallback>\n                        {person.username.charAt(0)}\n                      </AvatarFallback>\n                    </Avatar>\n                  </ItemMedia>\n                  <ItemContent>\n                    <ItemTitle>{person.username}</ItemTitle>\n                    <ItemDescription>{person.message}</ItemDescription>\n                  </ItemContent>\n                  <ItemActions>\n                    <Button\n                      variant=\"outline\"\n                      size=\"icon\"\n                      className=\"size-8 rounded-full\"\n                    >\n                      <PlusIcon />\n                    </Button>\n                  </ItemActions>\n                </Item>\n                {index !== people.length - 1 && <ItemSeparator />}\n              </React.Fragment>\n            ))}\n          </ItemGroup>\n          <Item variant=\"outline\">\n            <ItemMedia>\n              <div className=\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n                <Avatar>\n                  <AvatarImage\n                    src=\"https://github.com/shadcn.png\"\n                    alt=\"@shadcn\"\n                  />\n                  <AvatarFallback>CN</AvatarFallback>\n                </Avatar>\n                <Avatar>\n                  <AvatarImage\n                    src=\"https://github.com/maxleiter.png\"\n                    alt=\"@maxleiter\"\n                  />\n                  <AvatarFallback>LR</AvatarFallback>\n                </Avatar>\n                <Avatar>\n                  <AvatarImage\n                    src=\"https://github.com/evilrabbit.png\"\n                    alt=\"@evilrabbit\"\n                  />\n                  <AvatarFallback>ER</AvatarFallback>\n                </Avatar>\n              </div>\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Design Department</ItemTitle>\n              <ItemDescription>\n                Meet our team of designers, engineers, and researchers.\n              </ItemDescription>\n            </ItemContent>\n            <ItemActions className=\"self-start\">\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"size-8 rounded-full\"\n              >\n                <IconChevronRight />\n              </Button>\n            </ItemActions>\n          </Item>\n          <Item variant=\"outline\">\n            <ItemHeader>Your download has started.</ItemHeader>\n            <ItemMedia variant=\"icon\">\n              <Spinner />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Downloading...</ItemTitle>\n              <ItemDescription>129 MB / 1000 MB</ItemDescription>\n            </ItemContent>\n            <ItemActions>\n              <Button variant=\"outline\" size=\"sm\">\n                Cancel\n              </Button>\n            </ItemActions>\n            <ItemFooter>\n              <Progress value={50} />\n            </ItemFooter>\n          </Item>\n        </div>\n        <div className=\"flex max-w-lg flex-col gap-6\">\n          <ItemGroup className=\"gap-4\">\n            {music.map((song) => (\n              <Item key={song.title} variant=\"outline\" asChild role=\"listitem\">\n                <a href=\"#\">\n                  <ItemMedia variant=\"image\">\n                    <Image\n                      src={`https://avatar.vercel.sh/${song.title}`}\n                      alt={song.title}\n                      width={32}\n                      height={32}\n                      className=\"grayscale\"\n                    />\n                  </ItemMedia>\n                  <ItemContent>\n                    <ItemTitle className=\"line-clamp-1\">\n                      {song.title} -{\" \"}\n                      <span className=\"text-muted-foreground\">\n                        {song.album}\n                      </span>\n                    </ItemTitle>\n                    <ItemDescription>{song.artist}</ItemDescription>\n                  </ItemContent>\n                  <ItemContent className=\"flex-none text-center\">\n                    <ItemDescription>{song.duration}</ItemDescription>\n                  </ItemContent>\n                  <ItemActions>\n                    <Button\n                      variant=\"ghost\"\n                      size=\"icon\"\n                      className=\"size-8 rounded-full\"\n                      aria-label=\"Download\"\n                    >\n                      <IconDownload />\n                    </Button>\n                  </ItemActions>\n                </a>\n              </Item>\n            ))}\n          </ItemGroup>\n        </div>\n        <div className=\"flex max-w-lg flex-col gap-6\">\n          <ItemGroup>\n            {issues.map((issue) => (\n              <React.Fragment key={issue.number}>\n                <Item asChild className=\"rounded-none\">\n                  <a href=\"#\">\n                    <ItemContent>\n                      <ItemTitle className=\"line-clamp-1\">\n                        {issue.title}\n                      </ItemTitle>\n                      <ItemDescription>{issue.description}</ItemDescription>\n                    </ItemContent>\n                    <ItemContent className=\"self-start\">\n                      #{issue.number}\n                    </ItemContent>\n                  </a>\n                </Item>\n                <ItemSeparator />\n              </React.Fragment>\n            ))}\n          </ItemGroup>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/kbd-demo.tsx",
    "content": "import { IconArrowLeft, IconArrowRight } from \"@tabler/icons-react\"\nimport { CommandIcon, WavesIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/registry/new-york-v4/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport function KbdDemo() {\n  return (\n    <div className=\"flex max-w-xs flex-col items-start gap-4\">\n      <div className=\"flex items-center gap-2\">\n        <Kbd>Ctrl</Kbd>\n        <Kbd>⌘K</Kbd>\n        <Kbd>Ctrl + B</Kbd>\n      </div>\n      <div className=\"flex items-center gap-2\">\n        <Kbd>⌘</Kbd>\n        <Kbd>C</Kbd>\n      </div>\n      <KbdGroup>\n        <Kbd>Ctrl</Kbd>\n        <Kbd>Shift</Kbd>\n        <Kbd>P</Kbd>\n      </KbdGroup>\n      <div className=\"flex items-center gap-2\">\n        <Kbd>↑</Kbd>\n        <Kbd>↓</Kbd>\n        <Kbd>←</Kbd>\n        <Kbd>→</Kbd>\n      </div>\n      <KbdGroup>\n        <Kbd>\n          <CommandIcon />\n        </Kbd>\n        <Kbd>\n          <IconArrowLeft />\n        </Kbd>\n        <Kbd>\n          <IconArrowRight />\n        </Kbd>\n      </KbdGroup>\n      <KbdGroup>\n        <Kbd>\n          <IconArrowLeft />\n          Left\n        </Kbd>\n        <Kbd>\n          <WavesIcon />\n          Voice Enabled\n        </Kbd>\n      </KbdGroup>\n      <InputGroup>\n        <InputGroupInput />\n        <InputGroupAddon>\n          <Kbd>Space</Kbd>\n        </InputGroupAddon>\n      </InputGroup>\n      <ButtonGroup>\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <Button size=\"sm\" variant=\"outline\">\n              Save\n            </Button>\n          </TooltipTrigger>\n          <TooltipContent>\n            <div className=\"flex items-center gap-2\">\n              Save Changes <Kbd>S</Kbd>\n            </div>\n          </TooltipContent>\n        </Tooltip>\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <Button size=\"sm\" variant=\"outline\">\n              Print\n            </Button>\n          </TooltipTrigger>\n          <TooltipContent>\n            <div className=\"flex items-center gap-2\">\n              Print Document{\" \"}\n              <KbdGroup>\n                <Kbd>Ctrl</Kbd>\n                <Kbd>P</Kbd>\n              </KbdGroup>\n            </div>\n          </TooltipContent>\n        </Tooltip>\n      </ButtonGroup>\n      <Kbd>\n        <samp>File</samp>\n      </Kbd>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/label-demo.tsx",
    "content": "import { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport function LabelDemo() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <div className=\"flex items-center gap-3\">\n        <Checkbox id=\"label-demo-terms\" />\n        <Label htmlFor=\"label-demo-terms\">Accept terms and conditions</Label>\n      </div>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"label-demo-username\">Username</Label>\n        <Input id=\"label-demo-username\" placeholder=\"Username\" />\n      </div>\n      <div className=\"group grid gap-3\" data-disabled={true}>\n        <Label htmlFor=\"label-demo-disabled\">Disabled</Label>\n        <Input id=\"label-demo-disabled\" placeholder=\"Disabled\" disabled />\n      </div>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"label-demo-message\">Message</Label>\n        <Textarea id=\"label-demo-message\" placeholder=\"Message\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/menubar-demo.tsx",
    "content": "import { HelpCircleIcon, SettingsIcon, Trash2Icon } from \"lucide-react\"\n\nimport {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/registry/new-york-v4/ui/menubar\"\n\nexport function MenubarDemo() {\n  return (\n    <Menubar>\n      <MenubarMenu>\n        <MenubarTrigger>File</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem>\n            New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem>\n            New Window <MenubarShortcut>⌘N</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem disabled>New Incognito Window</MenubarItem>\n          <MenubarSeparator />\n          <MenubarSub>\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem>Email link</MenubarItem>\n              <MenubarItem>Messages</MenubarItem>\n              <MenubarItem>Notes</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n          <MenubarSeparator />\n          <MenubarItem>\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\n          </MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Edit</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem>\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem>\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarSub>\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem>Search the web</MenubarItem>\n              <MenubarSeparator />\n              <MenubarItem>Find...</MenubarItem>\n              <MenubarItem>Find Next</MenubarItem>\n              <MenubarItem>Find Previous</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n          <MenubarSeparator />\n          <MenubarItem>Cut</MenubarItem>\n          <MenubarItem>Copy</MenubarItem>\n          <MenubarItem>Paste</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>View</MenubarTrigger>\n        <MenubarContent>\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\n          <MenubarCheckboxItem checked>\n            Always Show Full URLs\n          </MenubarCheckboxItem>\n          <MenubarSeparator />\n          <MenubarItem inset>\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem disabled inset>\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem inset>Toggle Fullscreen</MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem inset>Hide Sidebar</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Profiles</MenubarTrigger>\n        <MenubarContent>\n          <MenubarRadioGroup value=\"benoit\">\n            <MenubarRadioItem value=\"andy\">Andy</MenubarRadioItem>\n            <MenubarRadioItem value=\"benoit\">Benoit</MenubarRadioItem>\n            <MenubarRadioItem value=\"Luis\">Luis</MenubarRadioItem>\n          </MenubarRadioGroup>\n          <MenubarSeparator />\n          <MenubarItem inset>Edit...</MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem inset>Add Profile...</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>More</MenubarTrigger>\n        <MenubarContent>\n          <MenubarGroup>\n            <MenubarItem>\n              <SettingsIcon />\n              Settings\n            </MenubarItem>\n            <MenubarItem>\n              <HelpCircleIcon />\n              Help\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem variant=\"destructive\">\n              <Trash2Icon />\n              Delete\n            </MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/native-select-demo.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/registry/new-york-v4/ui/native-select\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport function NativeSelectDemo() {\n  return (\n    <div className=\"flex flex-col gap-8\">\n      <div className=\"flex flex-col gap-3\">\n        <div className=\"text-sm font-medium text-muted-foreground\">\n          Basic Select\n        </div>\n        <div className=\"flex flex-col gap-4\">\n          <NativeSelect>\n            <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n            <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n            <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n            <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n            <NativeSelectOption value=\"grapes\" disabled>\n              Grapes\n            </NativeSelectOption>\n            <NativeSelectOption value=\"pineapple\">Pineapple</NativeSelectOption>\n          </NativeSelect>\n          <Select>\n            <SelectTrigger>\n              <SelectValue placeholder=\"Select a fruit\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectItem value=\"apple\">Apple</SelectItem>\n              <SelectItem value=\"banana\">Banana</SelectItem>\n              <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n              <SelectItem value=\"grapes\" disabled>\n                Grapes\n              </SelectItem>\n              <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n            </SelectContent>\n          </Select>\n        </div>\n      </div>\n      <div className=\"flex flex-col gap-3\">\n        <div className=\"text-sm font-medium text-muted-foreground\">\n          With Groups\n        </div>\n        <div className=\"flex flex-col gap-4\">\n          <NativeSelect>\n            <NativeSelectOption value=\"\">Select a food</NativeSelectOption>\n            <NativeSelectOptGroup label=\"Fruits\">\n              <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n              <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n              <NativeSelectOption value=\"blueberry\">\n                Blueberry\n              </NativeSelectOption>\n            </NativeSelectOptGroup>\n            <NativeSelectOptGroup label=\"Vegetables\">\n              <NativeSelectOption value=\"carrot\">Carrot</NativeSelectOption>\n              <NativeSelectOption value=\"broccoli\">Broccoli</NativeSelectOption>\n              <NativeSelectOption value=\"spinach\">Spinach</NativeSelectOption>\n            </NativeSelectOptGroup>\n          </NativeSelect>\n          <Select>\n            <SelectTrigger>\n              <SelectValue placeholder=\"Select a food\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectLabel>Fruits</SelectLabel>\n                <SelectItem value=\"apple\">Apple</SelectItem>\n                <SelectItem value=\"banana\">Banana</SelectItem>\n                <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n              </SelectGroup>\n              <SelectGroup>\n                <SelectLabel>Vegetables</SelectLabel>\n                <SelectItem value=\"carrot\">Carrot</SelectItem>\n                <SelectItem value=\"broccoli\">Broccoli</SelectItem>\n                <SelectItem value=\"spinach\">Spinach</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </div>\n      </div>\n      <div className=\"flex flex-col gap-3\">\n        <div className=\"text-sm font-medium text-muted-foreground\">\n          Disabled State\n        </div>\n        <div className=\"flex flex-col gap-4\">\n          <NativeSelect disabled>\n            <NativeSelectOption value=\"\">Disabled</NativeSelectOption>\n            <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n            <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n          </NativeSelect>\n          <Select disabled>\n            <SelectTrigger>\n              <SelectValue placeholder=\"Disabled\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectItem value=\"apple\">Apple</SelectItem>\n              <SelectItem value=\"banana\">Banana</SelectItem>\n            </SelectContent>\n          </Select>\n        </div>\n      </div>\n      <div className=\"flex flex-col gap-3\">\n        <div className=\"text-sm font-medium text-muted-foreground\">\n          Error State\n        </div>\n        <div className=\"flex flex-col gap-4\">\n          <NativeSelect aria-invalid=\"true\">\n            <NativeSelectOption value=\"\">Error state</NativeSelectOption>\n            <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n            <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n          </NativeSelect>\n          <Select>\n            <SelectTrigger aria-invalid=\"true\">\n              <SelectValue placeholder=\"Error state\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectItem value=\"apple\">Apple</SelectItem>\n              <SelectItem value=\"banana\">Banana</SelectItem>\n            </SelectContent>\n          </Select>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/navigation-menu-demo.tsx",
    "content": "import * as React from \"react\"\nimport Link from \"next/link\"\nimport { CircleCheckIcon, CircleHelpIcon, CircleIcon } from \"lucide-react\"\n\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"@/registry/new-york-v4/ui/navigation-menu\"\n\nconst components: { title: string; href: string; description: string }[] = [\n  {\n    title: \"Alert Dialog\",\n    href: \"/docs/primitives/alert-dialog\",\n    description:\n      \"A modal dialog that interrupts the user with important content and expects a response.\",\n  },\n  {\n    title: \"Hover Card\",\n    href: \"/docs/primitives/hover-card\",\n    description:\n      \"For sighted users to preview content available behind a link.\",\n  },\n  {\n    title: \"Progress\",\n    href: \"/docs/primitives/progress\",\n    description:\n      \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n  },\n  {\n    title: \"Scroll-area\",\n    href: \"/docs/primitives/scroll-area\",\n    description: \"Visually or semantically separates content.\",\n  },\n  {\n    title: \"Tabs\",\n    href: \"/docs/primitives/tabs\",\n    description:\n      \"A set of layered sections of content—known as tab panels—that are displayed one at a time.\",\n  },\n  {\n    title: \"Tooltip\",\n    href: \"/docs/primitives/tooltip\",\n    description:\n      \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n  },\n]\n\nexport function NavigationMenuDemo() {\n  return (\n    <div className=\"hidden w-full flex-col items-center justify-center gap-6 @xl:flex\">\n      <NavigationMenu>\n        <NavigationMenuList>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid gap-2 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\">\n                <li className=\"row-span-3\">\n                  <NavigationMenuLink asChild>\n                    <a\n                      className=\"flex h-full w-full flex-col justify-end rounded-md bg-linear-to-b from-muted/50 to-muted p-6 no-underline outline-hidden select-none focus:shadow-md\"\n                      href=\"/\"\n                    >\n                      <div className=\"mt-4 mb-2 text-lg font-medium\">\n                        shadcn/ui\n                      </div>\n                      <p className=\"text-sm leading-tight text-muted-foreground\">\n                        Beautifully designed components built with Tailwind CSS.\n                      </p>\n                    </a>\n                  </NavigationMenuLink>\n                </li>\n                <ListItem href=\"/docs\" title=\"Introduction\">\n                  Re-usable components built using Radix UI and Tailwind CSS.\n                </ListItem>\n                <ListItem href=\"/docs/installation\" title=\"Installation\">\n                  How to install dependencies and structure your app.\n                </ListItem>\n                <ListItem href=\"/docs/primitives/typography\" title=\"Typography\">\n                  Styles for headings, paragraphs, lists...etc\n                </ListItem>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n                {components.map((component) => (\n                  <ListItem\n                    key={component.title}\n                    title={component.title}\n                    href={component.href}\n                  >\n                    {component.description}\n                  </ListItem>\n                ))}\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuLink\n              asChild\n              className={navigationMenuTriggerStyle()}\n            >\n              <Link href=\"/docs\">Documentation</Link>\n            </NavigationMenuLink>\n          </NavigationMenuItem>\n        </NavigationMenuList>\n      </NavigationMenu>\n      <NavigationMenu viewport={false}>\n        <NavigationMenuList>\n          <NavigationMenuItem>\n            <NavigationMenuLink\n              asChild\n              className={navigationMenuTriggerStyle()}\n            >\n              <Link href=\"/docs\">Documentation</Link>\n            </NavigationMenuLink>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>List</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid w-[300px] gap-4\">\n                <li>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">\n                      <div className=\"font-medium\">Components</div>\n                      <div className=\"text-muted-foreground\">\n                        Browse all components in the library.\n                      </div>\n                    </Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">\n                      <div className=\"font-medium\">Documentation</div>\n                      <div className=\"text-muted-foreground\">\n                        Learn how to use the library.\n                      </div>\n                    </Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">\n                      <div className=\"font-medium\">Blog</div>\n                      <div className=\"text-muted-foreground\">\n                        Read our latest blog posts.\n                      </div>\n                    </Link>\n                  </NavigationMenuLink>\n                </li>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>Simple List</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid w-[200px] gap-4\">\n                <li>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">Components</Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">Documentation</Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">Blocks</Link>\n                  </NavigationMenuLink>\n                </li>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid w-[200px] gap-4\">\n                <li>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\">\n                      <CircleHelpIcon />\n                      Backlog\n                    </Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\">\n                      <CircleIcon />\n                      To Do\n                    </Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\">\n                      <CircleCheckIcon />\n                      Done\n                    </Link>\n                  </NavigationMenuLink>\n                </li>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n        </NavigationMenuList>\n      </NavigationMenu>\n    </div>\n  )\n}\n\nfunction ListItem({\n  title,\n  children,\n  href,\n  ...props\n}: React.ComponentPropsWithoutRef<\"li\"> & { href: string }) {\n  return (\n    <li {...props}>\n      <NavigationMenuLink asChild>\n        <Link href={href}>\n          <div className=\"text-sm leading-none font-medium\">{title}</div>\n          <p className=\"line-clamp-2 text-sm leading-snug text-muted-foreground\">\n            {children}\n          </p>\n        </Link>\n      </NavigationMenuLink>\n    </li>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/pagination-demo.tsx",
    "content": "import {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/registry/new-york-v4/ui/pagination\"\n\nexport function PaginationDemo() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <Pagination>\n        <PaginationContent>\n          <PaginationItem>\n            <PaginationPrevious href=\"#\" />\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">1</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\" isActive>\n              2\n            </PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">3</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationEllipsis />\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationNext href=\"#\" />\n          </PaginationItem>\n        </PaginationContent>\n      </Pagination>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/popover-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport function PopoverDemo() {\n  return (\n    <div className=\"flex gap-4\">\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\">Open popover</Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-80\" align=\"start\">\n          <div className=\"grid gap-4\">\n            <PopoverHeader>\n              <PopoverTitle>Dimensions</PopoverTitle>\n              <PopoverDescription>\n                Set the dimensions for the layer.\n              </PopoverDescription>\n            </PopoverHeader>\n            <div className=\"grid gap-2\">\n              <div className=\"grid grid-cols-3 items-center gap-4\">\n                <Label htmlFor=\"width\">Width</Label>\n                <Input\n                  id=\"width\"\n                  defaultValue=\"100%\"\n                  className=\"col-span-2 h-8\"\n                />\n              </div>\n              <div className=\"grid grid-cols-3 items-center gap-4\">\n                <Label htmlFor=\"maxWidth\">Max. width</Label>\n                <Input\n                  id=\"maxWidth\"\n                  defaultValue=\"300px\"\n                  className=\"col-span-2 h-8\"\n                />\n              </div>\n              <div className=\"grid grid-cols-3 items-center gap-4\">\n                <Label htmlFor=\"height\">Height</Label>\n                <Input\n                  id=\"height\"\n                  defaultValue=\"25px\"\n                  className=\"col-span-2 h-8\"\n                />\n              </div>\n              <div className=\"grid grid-cols-3 items-center gap-4\">\n                <Label htmlFor=\"maxHeight\">Max. height</Label>\n                <Input\n                  id=\"maxHeight\"\n                  defaultValue=\"none\"\n                  className=\"col-span-2 h-8\"\n                />\n              </div>\n            </div>\n          </div>\n        </PopoverContent>\n      </Popover>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/progress-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Progress } from \"@/registry/new-york-v4/ui/progress\"\n\nexport function ProgressDemo() {\n  const [progress, setProgress] = React.useState(13)\n\n  React.useEffect(() => {\n    const timer = setTimeout(() => setProgress(66), 500)\n    return () => clearTimeout(timer)\n  }, [])\n\n  return <Progress value={progress} className=\"w-[60%]\" />\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/radio-group-demo.tsx",
    "content": "import { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\n\nconst plans = [\n  {\n    id: \"starter\",\n    name: \"Starter Plan\",\n    description:\n      \"Perfect for small businesses getting started with our platform\",\n    price: \"$10\",\n  },\n  {\n    id: \"pro\",\n    name: \"Pro Plan\",\n    description: \"Advanced features for growing businesses with higher demands\",\n    price: \"$20\",\n  },\n] as const\n\nexport function RadioGroupDemo() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <RadioGroup defaultValue=\"comfortable\">\n        <div className=\"flex items-center gap-3\">\n          <RadioGroupItem value=\"default\" id=\"r1\" />\n          <Label htmlFor=\"r1\">Default</Label>\n        </div>\n        <div className=\"flex items-center gap-3\">\n          <RadioGroupItem value=\"comfortable\" id=\"r2\" />\n          <Label htmlFor=\"r2\">Comfortable</Label>\n        </div>\n        <div className=\"flex items-center gap-3\">\n          <RadioGroupItem value=\"compact\" id=\"r3\" />\n          <Label htmlFor=\"r3\">Compact</Label>\n        </div>\n      </RadioGroup>\n      <RadioGroup defaultValue=\"starter\" className=\"max-w-sm\">\n        {plans.map((plan) => (\n          <Label\n            className=\"flex items-start gap-3 rounded-lg border p-4 hover:bg-accent/50 has-[[data-state=checked]]:border-green-600 has-[[data-state=checked]]:bg-green-50 dark:has-[[data-state=checked]]:border-green-900 dark:has-[[data-state=checked]]:bg-green-950\"\n            key={plan.id}\n          >\n            <RadioGroupItem\n              value={plan.id}\n              id={plan.name}\n              className=\"shadow-none data-[state=checked]:border-green-600 data-[state=checked]:bg-green-600 *:data-[slot=radio-group-indicator]:[&>svg]:fill-white *:data-[slot=radio-group-indicator]:[&>svg]:stroke-white\"\n            />\n            <div className=\"grid gap-1 font-normal\">\n              <div className=\"font-medium\">{plan.name}</div>\n              <div className=\"leading-snug text-muted-foreground\">\n                {plan.description}\n              </div>\n            </div>\n          </Label>\n        ))}\n      </RadioGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/resizable-demo.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/registry/new-york-v4/ui/resizable\"\n\nexport function ResizableDemo() {\n  return (\n    <div className=\"flex w-full flex-col gap-6\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"max-w-md rounded-lg border md:min-w-[450px]\"\n      >\n        <ResizablePanel defaultSize=\"50%\">\n          <div className=\"flex h-[200px] items-center justify-center p-6\">\n            <span className=\"font-semibold\">One</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"50%\">\n          <ResizablePanelGroup orientation=\"vertical\">\n            <ResizablePanel defaultSize=\"25%\">\n              <div className=\"flex h-full items-center justify-center p-6\">\n                <span className=\"font-semibold\">Two</span>\n              </div>\n            </ResizablePanel>\n            <ResizableHandle />\n            <ResizablePanel defaultSize=\"75%\">\n              <div className=\"flex h-full items-center justify-center p-6\">\n                <span className=\"font-semibold\">Three</span>\n              </div>\n            </ResizablePanel>\n          </ResizablePanelGroup>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\"\n      >\n        <ResizablePanel defaultSize=\"25%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Sidebar</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle withHandle />\n        <ResizablePanel defaultSize=\"75%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Content</span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n      <ResizablePanelGroup\n        orientation=\"vertical\"\n        className=\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\"\n      >\n        <ResizablePanel defaultSize=\"25%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Header</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"75%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Content</span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/scroll-area-demo.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\n\nimport { ScrollArea, ScrollBar } from \"@/registry/new-york-v4/ui/scroll-area\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nexport function ScrollAreaDemo() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <ScrollAreaVertical />\n      <ScrollAreaHorizontalDemo />\n    </div>\n  )\n}\n\nconst tags = Array.from({ length: 50 }).map(\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\n)\n\nfunction ScrollAreaVertical() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <ScrollArea className=\"h-72 w-48 rounded-md border\">\n        <div className=\"p-4\">\n          <h4 className=\"mb-4 text-sm leading-none font-medium\">Tags</h4>\n          {tags.map((tag) => (\n            <React.Fragment key={tag}>\n              <div className=\"text-sm\">{tag}</div>\n              <Separator className=\"my-2\" />\n            </React.Fragment>\n          ))}\n        </div>\n      </ScrollArea>\n    </div>\n  )\n}\n\nexport const works = [\n  {\n    artist: \"Ornella Binni\",\n    art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Tom Byrom\",\n    art: \"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Vladimir Malyav\",\n    art: \"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\",\n  },\n] as const\n\nfunction ScrollAreaHorizontalDemo() {\n  return (\n    <ScrollArea className=\"w-full max-w-96 rounded-md border p-4\">\n      <div className=\"flex gap-4\">\n        {works.map((artwork) => (\n          <figure key={artwork.artist} className=\"shrink-0\">\n            <div className=\"overflow-hidden rounded-md\">\n              <Image\n                src={artwork.art}\n                alt={`Photo by ${artwork.artist}`}\n                className=\"aspect-[3/4] h-fit w-fit object-cover\"\n                width={300}\n                height={400}\n              />\n            </div>\n            <figcaption className=\"pt-2 text-xs text-muted-foreground\">\n              Photo by{\" \"}\n              <span className=\"font-semibold text-foreground\">\n                {artwork.artist}\n              </span>\n            </figcaption>\n          </figure>\n        ))}\n      </div>\n      <ScrollBar orientation=\"horizontal\" />\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/select-demo.tsx",
    "content": "import * as React from \"react\"\nimport {\n  ChartBarIcon,\n  ChartLineIcon,\n  ChartPieIcon,\n  CircleDashed,\n} from \"lucide-react\"\n\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport function SelectDemo() {\n  return (\n    <div className=\"flex flex-wrap items-start gap-4\">\n      <Select>\n        <SelectTrigger className=\"w-[180px]\">\n          <SelectValue placeholder=\"Select a fruit\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            <SelectLabel>Fruits</SelectLabel>\n            <SelectItem value=\"apple\">Apple</SelectItem>\n            <SelectItem value=\"banana\">Banana</SelectItem>\n            <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n            <SelectItem value=\"grapes\" disabled>\n              Grapes\n            </SelectItem>\n            <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n      <Select>\n        <SelectTrigger className=\"w-[180px]\">\n          <SelectValue placeholder=\"Large List\" />\n        </SelectTrigger>\n        <SelectContent>\n          {Array.from({ length: 100 }).map((_, i) => (\n            <SelectItem key={i} value={`item-${i}`}>\n              Item {i}\n            </SelectItem>\n          ))}\n        </SelectContent>\n      </Select>\n      <Select disabled>\n        <SelectTrigger className=\"w-[180px]\">\n          <SelectValue placeholder=\"Disabled\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectItem value=\"apple\">Apple</SelectItem>\n          <SelectItem value=\"banana\">Banana</SelectItem>\n          <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n          <SelectItem value=\"grapes\" disabled>\n            Grapes\n          </SelectItem>\n          <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n        </SelectContent>\n      </Select>\n      <Select>\n        <SelectTrigger className=\"w-[180px]\">\n          <SelectValue\n            placeholder={\n              <>\n                <CircleDashed className=\"text-muted-foreground\" />\n                With Icon\n              </>\n            }\n          />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectItem value=\"line\">\n            <ChartLineIcon />\n            Line\n          </SelectItem>\n          <SelectItem value=\"bar\">\n            <ChartBarIcon />\n            Bar\n          </SelectItem>\n          <SelectItem value=\"pie\">\n            <ChartPieIcon />\n            Pie\n          </SelectItem>\n        </SelectContent>\n      </Select>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/separator-demo.tsx",
    "content": "import { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nexport function SeparatorDemo() {\n  return (\n    <div>\n      <div className=\"flex flex-col gap-1\">\n        <div className=\"text-sm leading-none font-medium\">Tailwind CSS</div>\n        <div className=\"text-sm text-muted-foreground\">\n          A utility-first CSS framework.\n        </div>\n      </div>\n      <Separator className=\"my-4\" />\n      <div className=\"flex h-5 items-center gap-4 text-sm\">\n        <div>Blog</div>\n        <Separator orientation=\"vertical\" />\n        <div>Docs</div>\n        <Separator orientation=\"vertical\" />\n        <div>Source</div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/sheet-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/registry/new-york-v4/ui/sheet\"\n\nconst SHEET_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nexport function SheetDemo() {\n  return (\n    <div className=\"flex flex-col gap-6 md:flex-row\">\n      <Sheet>\n        <SheetTrigger asChild>\n          <Button variant=\"outline\">Open</Button>\n        </SheetTrigger>\n        <SheetContent>\n          <SheetHeader>\n            <SheetTitle>Edit profile</SheetTitle>\n            <SheetDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </SheetDescription>\n          </SheetHeader>\n          <div className=\"grid flex-1 auto-rows-min gap-6 px-4\">\n            <div className=\"grid gap-3\">\n              <Label htmlFor=\"sheet-demo-name\">Name</Label>\n              <Input id=\"sheet-demo-name\" defaultValue=\"Pedro Duarte\" />\n            </div>\n            <div className=\"grid gap-3\">\n              <Label htmlFor=\"sheet-demo-username\">Username</Label>\n              <Input id=\"sheet-demo-username\" defaultValue=\"@peduarte\" />\n            </div>\n          </div>\n          <SheetFooter>\n            <Button type=\"submit\">Save changes</Button>\n            <SheetClose asChild>\n              <Button variant=\"outline\">Close</Button>\n            </SheetClose>\n          </SheetFooter>\n        </SheetContent>\n      </Sheet>\n      <Sheet>\n        <SheetTrigger asChild>\n          <Button variant=\"outline\">No Close Button</Button>\n        </SheetTrigger>\n        <SheetContent showCloseButton={false}>\n          <SheetHeader>\n            <SheetTitle>Custom Close</SheetTitle>\n            <SheetDescription>\n              This sheet has no default close button. Use the footer buttons\n              instead.\n            </SheetDescription>\n          </SheetHeader>\n          <div className=\"flex-1 px-4\" />\n          <SheetFooter>\n            <SheetClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </SheetClose>\n            <Button type=\"submit\">Save</Button>\n          </SheetFooter>\n        </SheetContent>\n      </Sheet>\n      <div className=\"flex gap-2\">\n        {SHEET_SIDES.map((side) => (\n          <Sheet key={side}>\n            <SheetTrigger asChild>\n              <Button variant=\"outline\" className=\"capitalize\">\n                {side}\n              </Button>\n            </SheetTrigger>\n            <SheetContent side={side}>\n              <SheetHeader>\n                <SheetTitle>Edit profile</SheetTitle>\n                <SheetDescription>\n                  Make changes to your profile here. Click save when you&apos;re\n                  done.\n                </SheetDescription>\n              </SheetHeader>\n              <div className=\"overflow-y-auto px-4 text-sm\">\n                <h4 className=\"mb-4 text-lg leading-none font-medium\">\n                  Lorem Ipsum\n                </h4>\n                {Array.from({ length: 10 }).map((_, index) => (\n                  <p key={index} className=\"mb-4 leading-normal\">\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                    do eiusmod tempor incididunt ut labore et dolore magna\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\n                    Duis aute irure dolor in reprehenderit in voluptate velit\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\n                    occaecat cupidatat non proident, sunt in culpa qui officia\n                    deserunt mollit anim id est laborum.\n                  </p>\n                ))}\n              </div>\n              <SheetFooter>\n                <Button type=\"submit\">Save changes</Button>\n                <SheetClose asChild>\n                  <Button variant=\"outline\">Cancel</Button>\n                </SheetClose>\n              </SheetFooter>\n            </SheetContent>\n          </Sheet>\n        ))}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/skeleton-demo.tsx",
    "content": "import { Card, CardContent, CardHeader } from \"@/registry/new-york-v4/ui/card\"\nimport { Skeleton } from \"@/registry/new-york-v4/ui/skeleton\"\n\nexport function SkeletonDemo() {\n  return (\n    <div className=\"flex w-full flex-wrap items-start gap-4\">\n      <div className=\"flex items-center gap-4\">\n        <Skeleton className=\"size-10 shrink-0 rounded-full\" />\n        <div className=\"grid gap-2\">\n          <Skeleton className=\"h-4 w-[150px]\" />\n          <Skeleton className=\"h-4 w-[100px]\" />\n        </div>\n      </div>\n      <div className=\"flex w-full flex-wrap items-start gap-4\">\n        {Array.from({ length: 3 }).map((_, index) => (\n          <Card key={index} className=\"w-full @md:w-auto @md:min-w-sm\">\n            <CardHeader>\n              <Skeleton className=\"h-4 w-2/3\" />\n              <Skeleton className=\"h-4 w-1/2\" />\n            </CardHeader>\n            <CardContent>\n              <Skeleton className=\"aspect-square w-full\" />\n            </CardContent>\n          </Card>\n        ))}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/slider-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\n\nexport function SliderDemo() {\n  return (\n    <div className=\"flex w-full max-w-sm flex-col flex-wrap gap-6 md:flex-row\">\n      <Slider defaultValue={[50]} max={100} step={1} />\n      <Slider defaultValue={[25, 50]} max={100} step={1} />\n      <Slider defaultValue={[10, 20]} max={100} step={10} />\n      <div className=\"flex w-full items-center gap-6\">\n        <Slider defaultValue={[50]} max={100} step={1} orientation=\"vertical\" />\n        <Slider defaultValue={[25]} max={100} step={1} orientation=\"vertical\" />\n      </div>\n      <SliderControlled />\n    </div>\n  )\n}\n\nfunction SliderControlled() {\n  const [value, setValue] = React.useState([0.3, 0.7])\n\n  return (\n    <div className=\"grid w-full gap-3\">\n      <div className=\"flex items-center justify-between gap-2\">\n        <Label htmlFor=\"slider-demo-temperature\">Temperature</Label>\n        <span className=\"text-sm text-muted-foreground\">\n          {value.join(\", \")}\n        </span>\n      </div>\n      <Slider\n        id=\"slider-demo-temperature\"\n        value={value}\n        onValueChange={setValue}\n        min={0}\n        max={1}\n        step={0.1}\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/sonner-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { toast } from \"sonner\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nconst promiseCode = \"`${data.name} toast has been added`\"\n\nconst allTypes = [\n  {\n    name: \"Default\",\n    snippet: `toast('Event has been created')`,\n    action: () => toast(\"Event has been created\"),\n  },\n  {\n    name: \"Description\",\n    snippet: `toast.message('Event has been created', {\n  description: 'Monday, January 3rd at 6:00pm',\n})`,\n    action: () =>\n      toast(\"Event has been created\", {\n        description: \"Monday, January 3rd at 6:00pm\",\n      }),\n  },\n  {\n    name: \"Success\",\n    snippet: `toast.success('Event has been created')`,\n    action: () => toast.success(\"Event has been created\"),\n  },\n  {\n    name: \"Info\",\n    snippet: `toast.info('Be at the area 10 minutes before the event time')`,\n    action: () => toast.info(\"Be at the area 10 minutes before the event time\"),\n  },\n  {\n    name: \"Warning\",\n    snippet: `toast.warning('Event start time cannot be earlier than 8am')`,\n    action: () => toast.warning(\"Event start time cannot be earlier than 8am\"),\n  },\n  {\n    name: \"Error\",\n    snippet: `toast.error('Event has not been created')`,\n    action: () => toast.error(\"Event has not been created\"),\n  },\n  {\n    name: \"Action\",\n    action: () =>\n      toast.message(\"Event has been created\", {\n        action: {\n          label: \"Undo\",\n          onClick: () => console.log(\"Undo\"),\n        },\n      }),\n  },\n  {\n    name: \"Cancel\",\n    action: () =>\n      toast.message(\"Event has been created\", {\n        cancel: {\n          label: \"Cancel\",\n          onClick: () => console.log(\"Cancel\"),\n        },\n      }),\n  },\n  {\n    name: \"Promise\",\n    snippet: `const promise = () => new Promise((resolve) => setTimeout(() => resolve({ name: 'Sonner' }), 2000));\n\ntoast.promise(promise, {\n  loading: 'Loading...',\n  success: (data) => {\n    return ${promiseCode};\n  },\n  error: 'Error',\n});`,\n    action: () =>\n      toast.promise<{ name: string }>(\n        () =>\n          new Promise((resolve) => {\n            setTimeout(() => {\n              resolve({ name: \"Sonner\" })\n            }, 2000)\n          }),\n        {\n          loading: \"Loading...\",\n          success: (data) => {\n            return `${data.name} toast has been added`\n          },\n          error: \"Error\",\n        }\n      ),\n  },\n]\n\nexport function SonnerDemo() {\n  const [activeType, setActiveType] = React.useState(allTypes[0])\n  return (\n    <div className=\"flex flex-wrap gap-4\">\n      <Button onClick={() => toast(\"My first toast\")} variant=\"outline\">\n        Give me a toast\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", {\n            description: \"Sunday, December 03, 2023 at 9:00 AM\",\n            action: {\n              label: \"Undo\",\n              onClick: () => console.log(\"Undo\"),\n            },\n          })\n        }\n      >\n        Show Toast\n      </Button>\n      {allTypes.map((type) => (\n        <Button\n          variant=\"ghost\"\n          data-active={activeType.name === type.name}\n          onClick={() => {\n            type.action()\n            setActiveType(type)\n          }}\n          key={type.name}\n        >\n          {type.name}\n        </Button>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/spinner-demo.tsx",
    "content": "import { ArrowRightIcon } from \"lucide-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\nimport { Field, FieldLabel } from \"@/registry/new-york-v4/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport function SpinnerDemo() {\n  return (\n    <div className=\"flex w-full flex-col gap-12\">\n      <div className=\"flex items-center gap-6\">\n        <Spinner />\n        <Spinner className=\"size-8\" />\n      </div>\n      <div className=\"flex items-center gap-6\">\n        <Button>\n          <Spinner /> Submit\n        </Button>\n        <Button disabled>\n          <Spinner /> Disabled\n        </Button>\n        <Button size=\"sm\">\n          <Spinner /> Small\n        </Button>\n        <Button variant=\"outline\" disabled>\n          <Spinner /> Outline\n        </Button>\n        <Button variant=\"outline\" size=\"icon\" disabled>\n          <Spinner />\n          <span className=\"sr-only\">Loading...</span>\n        </Button>\n        <Button variant=\"destructive\" disabled>\n          <Spinner />\n          Remove\n        </Button>\n      </div>\n      <div className=\"flex items-center gap-6\">\n        <Badge>\n          <Spinner />\n          Badge\n        </Badge>\n        <Badge variant=\"secondary\">\n          <Spinner />\n          Badge\n        </Badge>\n        <Badge variant=\"destructive\">\n          <Spinner />\n          Badge\n        </Badge>\n        <Badge variant=\"outline\">\n          <Spinner />\n          Badge\n        </Badge>\n      </div>\n      <div className=\"flex max-w-xs items-center gap-6\">\n        <Field>\n          <FieldLabel htmlFor=\"input-group-spinner\">Input Group</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-group-spinner\" />\n            <InputGroupAddon>\n              <Spinner />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </div>\n      <Empty className=\"min-h-[80svh]\">\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <Spinner />\n          </EmptyMedia>\n          <EmptyTitle>No projects yet</EmptyTitle>\n          <EmptyDescription>\n            You haven&apos;t created any projects yet. Get started by creating\n            your first project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <div className=\"flex gap-2\">\n            <Button asChild>\n              <a href=\"#\">Create project</a>\n            </Button>\n            <Button variant=\"outline\">Import project</Button>\n          </div>\n          <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n            <a href=\"#\">\n              Learn more <ArrowRightIcon />\n            </a>\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/switch-demo.tsx",
    "content": "import { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nexport function SwitchDemo() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      {/* Sizes. */}\n      <div className=\"flex items-center gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-demo-sm\" size=\"sm\" />\n          <Label htmlFor=\"switch-demo-sm\">Small</Label>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-demo-default\" />\n          <Label htmlFor=\"switch-demo-default\">Default</Label>\n        </div>\n      </div>\n      <div className=\"flex items-center gap-2\">\n        <Switch id=\"switch-demo-airplane-mode\" />\n        <Label htmlFor=\"switch-demo-airplane-mode\">Airplane Mode</Label>\n      </div>\n      <div className=\"flex items-center gap-2\">\n        <Switch\n          id=\"switch-demo-bluetooth\"\n          className=\"data-[state=checked]:bg-blue-500 dark:data-[state=checked]:bg-blue-600\"\n          defaultChecked\n        />\n        <Label htmlFor=\"switch-demo-bluetooth\">Bluetooth</Label>\n      </div>\n      <Label className=\"flex items-center gap-6 rounded-lg border p-4 has-[[data-state=checked]]:border-blue-600\">\n        <div className=\"flex flex-col gap-1\">\n          <div className=\"font-medium\">Share across devices</div>\n          <div className=\"text-sm font-normal text-muted-foreground\">\n            Focus is shared across devices, and turns off when you leave the\n            app.\n          </div>\n        </div>\n        <Switch\n          id=\"switch-demo-focus-mode\"\n          className=\"data-[state=checked]:bg-blue-500 dark:data-[state=checked]:bg-blue-600\"\n        />\n      </Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/table-demo.tsx",
    "content": "import {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$250.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$150.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$350.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$450.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$550.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$200.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$300.00\",\n    paymentMethod: \"Credit Card\",\n  },\n]\n\nexport function TableDemo() {\n  return (\n    <Table>\n      <TableCaption>A list of your recent invoices.</TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">Invoice</TableHead>\n          <TableHead>Status</TableHead>\n          <TableHead>Method</TableHead>\n          <TableHead className=\"text-right\">Amount</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {invoices.map((invoice) => (\n          <TableRow key={invoice.invoice}>\n            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n            <TableCell>{invoice.paymentStatus}</TableCell>\n            <TableCell>{invoice.paymentMethod}</TableCell>\n            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n      <TableFooter>\n        <TableRow>\n          <TableCell colSpan={3}>Total</TableCell>\n          <TableCell className=\"text-right\">$2,500.00</TableCell>\n        </TableRow>\n      </TableFooter>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/tabs-demo.tsx",
    "content": "import { AppWindowIcon, CodeIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\n\nexport function TabsDemo() {\n  return (\n    <div className=\"flex w-full max-w-sm flex-col gap-6\">\n      <Tabs defaultValue=\"account\">\n        <TabsList className=\"grid w-full grid-cols-2\">\n          <TabsTrigger value=\"account\">Account</TabsTrigger>\n          <TabsTrigger value=\"password\">Password</TabsTrigger>\n        </TabsList>\n        <TabsContent value=\"account\">\n          <Card>\n            <CardHeader>\n              <CardTitle>Account</CardTitle>\n              <CardDescription>\n                Make changes to your account here. Click save when you&apos;re\n                done.\n              </CardDescription>\n            </CardHeader>\n            <CardContent className=\"grid gap-6\">\n              <div className=\"grid gap-3\">\n                <Label htmlFor=\"tabs-demo-name\">Name</Label>\n                <Input id=\"tabs-demo-name\" defaultValue=\"Pedro Duarte\" />\n              </div>\n              <div className=\"grid gap-3\">\n                <Label htmlFor=\"tabs-demo-username\">Username</Label>\n                <Input id=\"tabs-demo-username\" defaultValue=\"@peduarte\" />\n              </div>\n            </CardContent>\n            <CardFooter>\n              <Button>Save changes</Button>\n            </CardFooter>\n          </Card>\n        </TabsContent>\n        <TabsContent value=\"password\">\n          <Card>\n            <CardHeader>\n              <CardTitle>Password</CardTitle>\n              <CardDescription>\n                Change your password here. After saving, you&apos;ll be logged\n                out.\n              </CardDescription>\n            </CardHeader>\n            <CardContent className=\"grid gap-6\">\n              <div className=\"grid gap-3\">\n                <Label htmlFor=\"tabs-demo-current\">Current password</Label>\n                <Input id=\"tabs-demo-current\" type=\"password\" />\n              </div>\n              <div className=\"grid gap-3\">\n                <Label htmlFor=\"tabs-demo-new\">New password</Label>\n                <Input id=\"tabs-demo-new\" type=\"password\" />\n              </div>\n            </CardContent>\n            <CardFooter>\n              <Button>Save password</Button>\n            </CardFooter>\n          </Card>\n        </TabsContent>\n      </Tabs>\n      <Tabs defaultValue=\"home\">\n        <TabsList>\n          <TabsTrigger value=\"home\">Home</TabsTrigger>\n          <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n        </TabsList>\n      </Tabs>\n      <Tabs defaultValue=\"home\">\n        <TabsList>\n          <TabsTrigger value=\"home\">Home</TabsTrigger>\n          <TabsTrigger value=\"settings\" disabled>\n            Disabled\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n      <Tabs defaultValue=\"preview\">\n        <TabsList>\n          <TabsTrigger value=\"preview\">\n            <AppWindowIcon />\n            Preview\n          </TabsTrigger>\n          <TabsTrigger value=\"code\">\n            <CodeIcon />\n            Code\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n      {/* Line variant. */}\n      <Tabs defaultValue=\"preview\">\n        <TabsList variant=\"line\">\n          <TabsTrigger value=\"preview\">\n            <AppWindowIcon />\n            Preview\n          </TabsTrigger>\n          <TabsTrigger value=\"code\">\n            <CodeIcon />\n            Code\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n      {/* Vertical orientation. */}\n      <Tabs defaultValue=\"preview\" orientation=\"vertical\">\n        <TabsList>\n          <TabsTrigger value=\"preview\">\n            <AppWindowIcon />\n            Preview\n          </TabsTrigger>\n          <TabsTrigger value=\"code\">\n            <CodeIcon />\n            Code\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n      {/* Vertical orientation with line variant. */}\n      <Tabs defaultValue=\"preview\" orientation=\"vertical\">\n        <TabsList variant=\"line\">\n          <TabsTrigger value=\"preview\">\n            <AppWindowIcon />\n            Preview\n          </TabsTrigger>\n          <TabsTrigger value=\"code\">\n            <CodeIcon />\n            Code\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/textarea-demo.tsx",
    "content": "import { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport function TextareaDemo() {\n  return (\n    <div className=\"flex w-full flex-col gap-10\">\n      <Textarea placeholder=\"Type your message here.\" />\n      <Textarea placeholder=\"Type your message here.\" aria-invalid=\"true\" />\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"textarea-demo-message\">Label</Label>\n        <Textarea\n          id=\"textarea-demo-message\"\n          placeholder=\"Type your message here.\"\n          rows={6}\n        />\n      </div>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"textarea-demo-message-2\">\n          With label and description\n        </Label>\n        <Textarea\n          id=\"textarea-demo-message-2\"\n          placeholder=\"Type your message here.\"\n          rows={6}\n        />\n        <div className=\"text-sm text-muted-foreground\">\n          Type your message and press enter to send.\n        </div>\n      </div>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"textarea-demo-disabled\">Disabled</Label>\n        <Textarea\n          id=\"textarea-demo-disabled\"\n          placeholder=\"Type your message here.\"\n          disabled\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/theme-selector.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useThemeConfig } from \"@/components/active-theme\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nconst THEMES = {\n  sizes: [\n    {\n      name: \"Default\",\n      value: \"default\",\n    },\n    {\n      name: \"Scaled\",\n      value: \"scaled\",\n    },\n    {\n      name: \"Mono\",\n      value: \"mono\",\n    },\n  ],\n  colors: [\n    {\n      name: \"Blue\",\n      value: \"blue\",\n    },\n    {\n      name: \"Green\",\n      value: \"green\",\n    },\n    {\n      name: \"Amber\",\n      value: \"amber\",\n    },\n    {\n      name: \"Rose\",\n      value: \"rose\",\n    },\n    {\n      name: \"Purple\",\n      value: \"purple\",\n    },\n    {\n      name: \"Orange\",\n      value: \"orange\",\n    },\n    {\n      name: \"Teal\",\n      value: \"teal\",\n    },\n  ],\n  fonts: [\n    {\n      name: \"Inter\",\n      value: \"inter\",\n    },\n    {\n      name: \"Noto Sans\",\n      value: \"noto-sans\",\n    },\n    {\n      name: \"Nunito Sans\",\n      value: \"nunito-sans\",\n    },\n    {\n      name: \"Figtree\",\n      value: \"figtree\",\n    },\n  ],\n  radius: [\n    {\n      name: \"None\",\n      value: \"rounded-none\",\n    },\n    {\n      name: \"Small\",\n      value: \"rounded-small\",\n    },\n    {\n      name: \"Medium\",\n      value: \"rounded-medium\",\n    },\n    {\n      name: \"Large\",\n      value: \"rounded-large\",\n    },\n    {\n      name: \"Full\",\n      value: \"rounded-full\",\n    },\n  ],\n}\n\nexport function ThemeSelector({ className }: React.ComponentProps<\"div\">) {\n  const { activeTheme, setActiveTheme } = useThemeConfig()\n\n  return (\n    <div className={cn(\"flex items-center gap-2\", className)}>\n      <Label htmlFor=\"theme-selector\" className=\"sr-only\">\n        Theme\n      </Label>\n      <Select value={activeTheme} onValueChange={setActiveTheme}>\n        <SelectTrigger\n          id=\"theme-selector\"\n          size=\"sm\"\n          className=\"justify-start border-secondary bg-secondary text-secondary-foreground shadow-none *:data-[slot=select-value]:w-16\"\n        >\n          <SelectValue placeholder=\"Select\" />\n        </SelectTrigger>\n        <SelectContent align=\"end\">\n          {Object.entries(THEMES).map(\n            ([key, themes], index) =>\n              themes.length > 0 && (\n                <div key={key}>\n                  {index > 0 && <SelectSeparator />}\n                  <SelectGroup>\n                    <SelectLabel>\n                      {key.charAt(0).toUpperCase() + key.slice(1)}\n                    </SelectLabel>\n                    {themes.map((theme) => (\n                      <SelectItem\n                        key={theme.name}\n                        value={theme.value}\n                        className=\"data-[state=checked]:opacity-50\"\n                      >\n                        {theme.name}\n                      </SelectItem>\n                    ))}\n                  </SelectGroup>\n                </div>\n              )\n          )}\n        </SelectContent>\n      </Select>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/toggle-demo.tsx",
    "content": "import { BoldIcon, BookmarkIcon, ItalicIcon, UnderlineIcon } from \"lucide-react\"\n\nimport { Toggle } from \"@/registry/new-york-v4/ui/toggle\"\n\nexport function ToggleDemo() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-6\">\n      <Toggle aria-label=\"Toggle italic\">\n        <BoldIcon />\n      </Toggle>\n      <Toggle aria-label=\"Toggle italic\" variant=\"default\">\n        <UnderlineIcon />\n      </Toggle>\n      <Toggle aria-label=\"Toggle italic\" variant=\"default\" disabled>\n        Disabled\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle italic\">\n        <ItalicIcon />\n        Italic\n      </Toggle>\n      <Toggle\n        aria-label=\"Toggle book\"\n        className=\"data-[state=on]:[&_svg]:fill-accent-foreground\"\n      >\n        <BookmarkIcon />\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle italic\" size=\"sm\">\n        Small\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle italic\" size=\"lg\">\n        Large\n      </Toggle>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/toggle-group-demo.tsx",
    "content": "import {\n  BoldIcon,\n  BookmarkIcon,\n  HeartIcon,\n  ItalicIcon,\n  StarIcon,\n  UnderlineIcon,\n} from \"lucide-react\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport function ToggleGroupDemo() {\n  return (\n    <div className=\"flex flex-wrap items-start gap-4\">\n      <ToggleGroup type=\"multiple\" spacing={2}>\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <BoldIcon />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <ItalicIcon />\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"strikethrough\"\n          aria-label=\"Toggle strikethrough\"\n        >\n          <UnderlineIcon />\n        </ToggleGroupItem>\n      </ToggleGroup>\n      <ToggleGroup\n        variant=\"outline\"\n        type=\"single\"\n        defaultValue=\"all\"\n        className=\"*:data-[slot=toggle-group-item]:w-20\"\n      >\n        <ToggleGroupItem value=\"all\" aria-label=\"Toggle all\">\n          All\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"missed\" aria-label=\"Toggle missed\">\n          Missed\n        </ToggleGroupItem>\n      </ToggleGroup>\n\n      <ToggleGroup\n        variant=\"outline\"\n        type=\"single\"\n        size=\"sm\"\n        defaultValue=\"last-24-hours\"\n        className=\"*:data-[slot=toggle-group-item]:px-3\"\n      >\n        <ToggleGroupItem\n          value=\"last-24-hours\"\n          aria-label=\"Toggle last 24 hours\"\n        >\n          Last 24 hours\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"last-7-days\" aria-label=\"Toggle last 7 days\">\n          Last 7 days\n        </ToggleGroupItem>\n      </ToggleGroup>\n\n      <ToggleGroup type=\"single\" size=\"sm\" defaultValue=\"last-24-hours\">\n        <ToggleGroupItem\n          value=\"last-24-hours\"\n          aria-label=\"Toggle last 24 hours\"\n        >\n          Last 24 hours\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"last-7-days\" aria-label=\"Toggle last 7 days\">\n          Last 7 days\n        </ToggleGroupItem>\n      </ToggleGroup>\n      <ToggleGroup type=\"single\" size=\"sm\" defaultValue=\"top\" variant=\"outline\">\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n\n      <ToggleGroup\n        type=\"single\"\n        size=\"sm\"\n        defaultValue=\"top\"\n        variant=\"outline\"\n        spacing={2}\n      >\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n\n      <ToggleGroup type=\"multiple\" variant=\"outline\" spacing={2} size=\"sm\">\n        <ToggleGroupItem\n          value=\"star\"\n          aria-label=\"Toggle star\"\n          className=\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500\"\n        >\n          <StarIcon />\n          Star\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"heart\"\n          aria-label=\"Toggle heart\"\n          className=\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-red-500 data-[state=on]:*:[svg]:stroke-red-500\"\n        >\n          <HeartIcon />\n          Heart\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"bookmark\"\n          aria-label=\"Toggle bookmark\"\n          className=\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-blue-500 data-[state=on]:*:[svg]:stroke-blue-500\"\n        >\n          <BookmarkIcon />\n          Bookmark\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/components/tooltip-demo.tsx",
    "content": "import { InfoIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport function TooltipDemo() {\n  return (\n    <div className=\"flex flex-wrap items-start gap-4\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Button variant=\"outline\">Hover</Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>Add to library</p>\n        </TooltipContent>\n      </Tooltip>\n      <div className=\"flex gap-2\">\n        {[\"top\", \"right\", \"bottom\", \"left\"].map((side) => (\n          <Tooltip key={side}>\n            <TooltipTrigger asChild>\n              <Button variant=\"outline\" className=\"capitalize\">\n                {side}\n              </Button>\n            </TooltipTrigger>\n            <TooltipContent side={side as \"top\" | \"right\" | \"bottom\" | \"left\"}>\n              <p>Add to library</p>\n            </TooltipContent>\n          </Tooltip>\n        ))}\n      </div>\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Button variant=\"ghost\" size=\"icon\">\n            <InfoIcon />\n            <span className=\"sr-only\">Info</span>\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          To learn more about how this works, check out the docs. If you have\n          any questions, please reach out to us.\n        </TooltipContent>\n      </Tooltip>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/layout.tsx",
    "content": "import { Figtree, Inter, Noto_Sans, Nunito_Sans } from \"next/font/google\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ModeSwitcher } from \"@/components/mode-switcher\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { AppBreadcrumbs } from \"@/app/(internal)/sink/components/app-breadcrumbs\"\nimport { AppSidebar } from \"@/app/(internal)/sink/components/app-sidebar\"\nimport { ThemeSelector } from \"@/app/(internal)/sink/components/theme-selector\"\n\nconst inter = Inter({\n  subsets: [\"latin\"],\n  variable: \"--font-inter\",\n})\n\nconst notoSans = Noto_Sans({\n  subsets: [\"latin\"],\n  variable: \"--font-noto-sans\",\n})\n\nconst nunitoSans = Nunito_Sans({\n  subsets: [\"latin\"],\n  variable: \"--font-nunito-sans\",\n})\n\nconst figtree = Figtree({\n  subsets: [\"latin\"],\n  variable: \"--font-figtree\",\n})\n\nexport default async function SinkLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <SidebarProvider\n      defaultOpen={true}\n      className={cn(\n        \"theme-container\",\n        inter.variable,\n        notoSans.variable,\n        nunitoSans.variable,\n        figtree.variable\n      )}\n    >\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 z-10 flex h-14 items-center border-b bg-background p-4\">\n          <SidebarTrigger />\n          <Separator orientation=\"vertical\" className=\"mr-4 ml-2 h-4!\" />\n          <AppBreadcrumbs />\n          <div className=\"ml-auto flex items-center gap-2\">\n            <ModeSwitcher />\n            <ThemeSelector />\n          </div>\n        </header>\n        {children}\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(internal)/sink/page.tsx",
    "content": "import { type Metadata } from \"next\"\n\nimport { componentRegistry } from \"@/app/(internal)/sink/component-registry\"\nimport { ComponentWrapper } from \"@/app/(internal)/sink/components/component-wrapper\"\n\nexport const dynamic = \"force-static\"\nexport const revalidate = false\n\nexport const metadata: Metadata = {\n  title: \"Kitchen Sink\",\n  description: \"A page with all components for testing purposes.\",\n}\n\nexport default function SinkPage() {\n  return (\n    <div className=\"@container grid flex-1 gap-4 p-4\">\n      {Object.entries(componentRegistry)\n        .filter(([, component]) => {\n          return component.type === \"registry:ui\"\n        })\n        .map(([key, component]) => {\n          const Component = component.component\n          return (\n            <ComponentWrapper\n              key={key}\n              name={key}\n              className={component.className || \"\"}\n            >\n              <Component />\n            </ComponentWrapper>\n          )\n        })}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(view)/view/[style]/[name]/component-preview.tsx",
    "content": "import { cn } from \"@/lib/utils\"\n\nexport function ComponentPreview({ children }: { children: React.ReactNode }) {\n  return (\n    <div\n      className={cn(\n        \"bg-background *:data-[slot=card]:has-[[data-slot=chart]]:shadow-none\"\n      )}\n    >\n      {children}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/(view)/view/[style]/[name]/page.tsx",
    "content": "/* eslint-disable react-hooks/static-components */\nimport * as React from \"react\"\nimport { type Metadata } from \"next\"\nimport { notFound } from \"next/navigation\"\n\nimport { siteConfig } from \"@/lib/config\"\nimport {\n  getDemoItem,\n  getRegistryComponent,\n  getRegistryItem,\n} from \"@/lib/registry\"\nimport { absoluteUrl } from \"@/lib/utils\"\nimport { getStyle, legacyStyles, type Style } from \"@/registry/_legacy-styles\"\n\nimport \"@/styles/legacy-themes.css\"\n\nimport { ComponentPreview } from \"./component-preview\"\n\nexport const revalidate = false\nexport const dynamic = \"force-static\"\nexport const dynamicParams = false\n\nconst getCachedRegistryItem = React.cache(\n  async (name: string, styleName: Style[\"name\"]) => {\n    // Try registry item first, then fallback to demo item (for examples).\n    const item = await getRegistryItem(name, styleName)\n    if (item) {\n      return item\n    }\n    return await getDemoItem(name, styleName)\n  }\n)\n\nexport async function generateMetadata({\n  params,\n}: {\n  params: Promise<{\n    style: string\n    name: string\n  }>\n}): Promise<Metadata> {\n  const { style: styleName, name } = await params\n  const style = getStyle(styleName)\n\n  if (!style) {\n    return {}\n  }\n\n  const item = await getCachedRegistryItem(name, style.name)\n\n  if (!item) {\n    return {}\n  }\n\n  const title = item.name\n  const description = item.description\n\n  return {\n    title: item.name,\n    description,\n    openGraph: {\n      title,\n      description,\n      type: \"article\",\n      url: absoluteUrl(`/view/${style.name}/${item.name}`),\n      images: [\n        {\n          url: siteConfig.ogImage,\n          width: 1200,\n          height: 630,\n          alt: siteConfig.name,\n        },\n      ],\n    },\n    twitter: {\n      card: \"summary_large_image\",\n      title,\n      description,\n      images: [siteConfig.ogImage],\n      creator: \"@shadcn\",\n    },\n  }\n}\n\nexport async function generateStaticParams() {\n  const { Index } = await import(\"@/registry/__index__\")\n  // const { Index: BasesIndex } = await import(\"@/registry/bases/__index__\")\n  const { ExamplesIndex } = await import(\"@/examples/__index__\")\n  const params: Array<{ style: string; name: string }> = []\n\n  for (const style of legacyStyles) {\n    // Check if this is a base-prefixed style (e.g., base-nova, radix-nova).\n    const baseMatch = style.name.match(/^(base|radix)-/)\n    if (baseMatch) {\n      const baseName = baseMatch[1]\n\n      // Add examples from ExamplesIndex.\n      const examples = ExamplesIndex[baseName]\n      if (examples) {\n        for (const exampleName of Object.keys(examples)) {\n          if (exampleName.startsWith(\"sidebar-\")) {\n            params.push({\n              style: style.name,\n              name: exampleName,\n            })\n          }\n        }\n      }\n\n      // // Add UI components from BasesIndex.\n      // const baseIndex = BasesIndex[baseName]\n      // if (baseIndex) {\n      //   for (const itemName in baseIndex) {\n      //     const item = baseIndex[itemName]\n      //     if (\n      //       [\n      //         \"registry:block\",\n      //         \"registry:component\",\n      //         \"registry:example\",\n      //         \"registry:internal\",\n      //       ].includes(item.type)\n      //     ) {\n      //       params.push({\n      //         style: style.name,\n      //         name: item.name,\n      //       })\n      //     }\n      //   }\n      // }\n\n      continue\n    }\n\n    // Handle legacy styles (e.g., new-york-v4).\n    if (!Index[style.name]) {\n      continue\n    }\n\n    const styleIndex = Index[style.name]\n    for (const itemName in styleIndex) {\n      const item = styleIndex[itemName]\n      if (\n        [\n          \"registry:block\",\n          \"registry:component\",\n          \"registry:example\",\n          \"registry:internal\",\n        ].includes(item.type)\n      ) {\n        params.push({\n          style: style.name,\n          name: item.name,\n        })\n      }\n    }\n  }\n\n  return params\n}\n\nexport default async function BlockPage({\n  params,\n}: {\n  params: Promise<{\n    style: string\n    name: string\n  }>\n}) {\n  const { style: styleName, name } = await params\n  const style = getStyle(styleName)\n\n  if (!style) {\n    return notFound()\n  }\n\n  const item = await getCachedRegistryItem(name, style.name)\n  const Component = getRegistryComponent(name, style.name)\n\n  if (!item || !Component) {\n    return notFound()\n  }\n\n  return (\n    <ComponentPreview>\n      <Component />\n    </ComponentPreview>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/api/search/route.ts",
    "content": "import { createFromSource } from \"fumadocs-core/search/server\"\n\nimport { source } from \"@/lib/source\"\n\nexport const { GET } = createFromSource(source)\n"
  },
  {
    "path": "apps/v4/app/layout.tsx",
    "content": "import type { Metadata } from \"next\"\nimport { NuqsAdapter } from \"nuqs/adapters/next/app\"\n\nimport { META_THEME_COLORS, siteConfig } from \"@/lib/config\"\nimport { fontVariables } from \"@/lib/fonts\"\nimport { cn } from \"@/lib/utils\"\nimport { LayoutProvider } from \"@/hooks/use-layout\"\nimport { ActiveThemeProvider } from \"@/components/active-theme\"\nimport { Analytics } from \"@/components/analytics\"\nimport { TailwindIndicator } from \"@/components/tailwind-indicator\"\nimport { ThemeProvider } from \"@/components/theme-provider\"\nimport { TooltipProvider as BaseTooltipProvider } from \"@/registry/bases/base/ui/tooltip\"\nimport { Toaster } from \"@/registry/bases/radix/ui/sonner\"\nimport { TooltipProvider as RadixTooltipProvider } from \"@/registry/bases/radix/ui/tooltip\"\n\nimport \"@/styles/globals.css\"\n\nexport const metadata: Metadata = {\n  title: {\n    default: siteConfig.name,\n    template: `%s - ${siteConfig.name}`,\n  },\n  metadataBase: new URL(process.env.NEXT_PUBLIC_APP_URL!),\n  description: siteConfig.description,\n  keywords: [\"Next.js\", \"React\", \"Tailwind CSS\", \"Components\", \"shadcn\"],\n  authors: [\n    {\n      name: \"shadcn\",\n      url: \"https://shadcn.com\",\n    },\n  ],\n  creator: \"shadcn\",\n  openGraph: {\n    type: \"website\",\n    locale: \"en_US\",\n    url: process.env.NEXT_PUBLIC_APP_URL!,\n    title: siteConfig.name,\n    description: siteConfig.description,\n    siteName: siteConfig.name,\n    images: [\n      {\n        url: `${process.env.NEXT_PUBLIC_APP_URL}/opengraph-image.png`,\n        width: 1200,\n        height: 630,\n        alt: siteConfig.name,\n      },\n    ],\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    title: siteConfig.name,\n    description: siteConfig.description,\n    images: [`${process.env.NEXT_PUBLIC_APP_URL}/opengraph-image.png`],\n    creator: \"@shadcn\",\n  },\n  icons: {\n    icon: \"/favicon.ico\",\n    shortcut: \"/favicon-16x16.png\",\n    apple: \"/apple-touch-icon.png\",\n  },\n  manifest: `${siteConfig.url}/site.webmanifest`,\n  alternates: {\n    types: {\n      \"application/rss+xml\": `${siteConfig.url}/rss.xml`,\n    },\n  },\n}\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode\n}>) {\n  return (\n    <html lang=\"en\" suppressHydrationWarning className={fontVariables}>\n      <head>\n        <script\n          dangerouslySetInnerHTML={{\n            __html: `\n              try {\n                if (localStorage.theme === 'dark' || ((!('theme' in localStorage) || localStorage.theme === 'system') && window.matchMedia('(prefers-color-scheme: dark)').matches)) {\n                  document.querySelector('meta[name=\"theme-color\"]').setAttribute('content', '${META_THEME_COLORS.dark}')\n                }\n                if (localStorage.layout) {\n                  document.documentElement.classList.add('layout-' + localStorage.layout)\n                }\n              } catch (_) {}\n            `,\n          }}\n        />\n        <meta name=\"theme-color\" content={META_THEME_COLORS.light} />\n      </head>\n      <body\n        className={cn(\n          \"group/body overscroll-none antialiased [--footer-height:calc(var(--spacing)*14)] [--header-height:calc(var(--spacing)*14)] xl:[--footer-height:calc(var(--spacing)*24)]\"\n        )}\n      >\n        <ThemeProvider>\n          <LayoutProvider>\n            <ActiveThemeProvider>\n              <NuqsAdapter>\n                <BaseTooltipProvider delay={0}>\n                  <RadixTooltipProvider delayDuration={0}>\n                    {children}\n                    <Toaster position=\"top-center\" />\n                  </RadixTooltipProvider>\n                </BaseTooltipProvider>\n              </NuqsAdapter>\n              <TailwindIndicator />\n              <Analytics />\n            </ActiveThemeProvider>\n          </LayoutProvider>\n        </ThemeProvider>\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/og/geist-regular-otf.json",
    "content": "{\"base64Font\":\"T1RUTwAMAIAAAwBAQ0ZGIN9uOmAAABXMAACeZkdERUZBTj+sAAC0NAAAAT5HUE9Ttn3F0QAAtXQAABvSR1NVQpIcrgQAANFIAAASlE9TLzJPyiLTAAAL3AAAAGBjbWFwrm6KhgAADtQAAAbWaGVhZCrsuiMAAADUAAAANmhoZWEM9AjIAAALuAAAACRobXR487+RWAAAAQwAAAqqbWF4cAKrUAAAAADMAAAABm5hbWU8hhcjAAAMPAAAApdwb3N0/58AMgAAFawAAAAgAABQAAKrAAAAAQAAAAEAg2zs2StfDzz1AAMD6AAAAADhcDrwAAAAAOFwOvD/0/8kCSIDuAAAAAcAAgAAAAAAAAGuAFAA+gAAAqAAFQKgABUCoAAVAqAAFQKgABUCoAAVAqAAFQKgABUCwwAVAqAAFQKgABUD0QAVAqkAXAK+ADECvgAxAr4AMQK+ADECvgAxAr4AMQK/AFwDFwAxAr8AXAMXADECXABcAlwAXAJcAFwCXABcAlwAXAJcAFwCXABcAlwAXAJcAFwCXABcAtIAMQJZADICWQAyAk8AXALFADECxQAxAsUAMQLFADECxQAxAsUAMQLFADEC8wAxAsAAXANkAFwCwABcARAAXAMSAFwBEABcARD//QEQABABEABbARAADgEQAAgBEAAwARD/4AJWAEMCVgBDAlYAQwKNAFwCjQBcAo0AXAJFAFwCRQBcAh4AXAJFAFwCaAAWA24AXALjAFwC4wBcAuMAXALjAFwC4wBcAuMAXALsADEC7AAxAuwAMQLsADEC7AAxAuwAMQLsADEC8QAxAuwAMQQ+ADECiwBcAm0AXALmADECoQBcAqEAXAKhAFwCoQBcAokAOwKJADsAvAAxAokAOwKJADsCiQA7AokAOwK2AFwCQgAZAkIAGQJCABkCQgAZAkIAGQKyAE0CsgBNArIATQKyAE0CsgBNArIATQKyAE0CsgBNArIATQKyAE0CsgBNAp4AFQOQABUDkAAVA5AAFQOQABUDkAAVAnUAGwJ3ABUCdwAVAncAFQJ3ABUCdwAVAncAFQIfABsCHwAbAh8AGwIfABsCRQBcAuMAXAKnAFwCpwBcAqcAXAKnAFwBtgAxAbYAMQG2ADEBtgAxAbYAMQG2ADEBtgAxAbYAMQG2ADECvgAxAr4AMQK+ADECvgAxAr4AMQK+ADECoAAVAr4AMQJcAFwCXABcAsUAMQEQAAEBEABTAuwAMQKyAE0DkAAVAncAFQIfABsBtgAxAbYAMQK+ADEEVgAVBGgATQJAAC8CQAAvAkAALwJAAC8CQAAvAkAALwJAAC8CQAAvAkAALwJAAC8CQAAvA6QALwJXAFACKQAvAikALwIpAC8CKQAvAikALwIpAC8CVwAvAlMALwL4AC8CjAAvAjgALwI4AC8COAAvAjgALwI4AC8COAAvAjgALwI4AC8COAAvAjgALwI4AC8CWQAyAlkAMgGPADwCVgAvAlYALwJWAC8CVgAvAlYALwJWAC8CVgAvAnoALwJGAFACPAAZAkb/8AD2AE4A9gBQAPYAUAD2//AA9gADAPYATgD2AAEB8QBOAPb/+wD2ACIA9v/TAQX/+wEF//sBBf/7AQX/+wJPAFACT//tAk8AUAEcAFABHABQAZoAUAEcAEYBegBQA24AUAJGAFACRgBQAkYAUAJGAFACRgBQAkYAUAJEAC8CRAAvAkQALwJEAC8CRAAvAkQALwJEAC8CNgAMAkQALwPEAC8CVwBQAlcAUAJXAC8BfwBQAX8AUAF/ADcBfwAbAhMALwITAC8AvAAxAhMALwITAC8CEwAvAhMALwJPAFABjQA3AY0ANwHGADcBjQA3AY0ANwJAAFACQABQAkAAUAJAAFACQABQAkAAUAJAAFACQABQAkAAUAJAAFACQABQAhoAFgM0ABYDNAAWAzQAFgM0ABYDNAAWAksALwIaABYCGgAWAhoAFgIaABYCGgAWAhoAFgImADkCJgA5AiYAOQImADkBHABGAkYAUAIyACoCMgAqAjIAKgIyACoCMgAqAjIAKgIyACoCMgAqAjIAKgIyACoCMgAqAlcALwJXAC8CVwAvAlcALwJXAC8CVwAvAlcALwJXAC8CVwAvAlcALwJXAC8BDgBcAQ4AXAGeAFABDgAnAXoAUAJAAC8CKQAvAjgALwI4AC8CVgAvAPYARgD2//QA9gBGAfEARgD2ACIBBf/7AkQALwJAAFADNAAWAhoAFgImADkCMgAqAlcALwKwADwCvQA3AoUAPAKXADwCQAAvAkQALwKgABUC5AAxAj0AFQKUADcCZQAyAqAANgGBACgCawA8AmUAMgJ8ADICcgA8AnAAPAJJACgCXAAoAnAAPANAAC8DQAAvA0AALwNAAC8DQAAvA0AALwNAAC8DQAAvA0AALwNAAC8DQAAvA0AALwNAAC8DQAAvA0AALwNAAC8DQAAvA0AALwNAAC8DQAAvAqAANgGzABkCWAAUAlgAfgJYADsCWAAqAlgAMAJYADkCWAA4AlgAOwJYABoCWAA4AlgADQPQADEDwgAxA7oAMQO9ADEDzQAxA7cAMQPAADED0AAxA8sAMQSwAKYCWACVAlgAsgJYAKACWACgAlgAhAJYAKUCWAClAlgApgJYAJ8CWACoAlgAlQJYALICWACgAlgAoAJYAIQCWAClAlgApQJYAKYCWACfAlgAqAD6AAABYgAvCWAAPgcIAD4EsAA+AMsALwDLAC8BJQBcASUAXAI9AC8A2QA2ANkANgI3AC8CNwAvAMsALwEpAC8BtAAvAXgALwHe//YB4wAoAd4AMgKCACgBtAAvA44ALwHeADIAywAvAMsALwEUADYB3v/2AwIALwDLAC8CNwAvAWQALwC4AC8AywAvAeMAKADSAC8BLABcAS0AXAJFAC8A0gAvANIALwI3AC8CNwAvANIALwI0AC8A0gAvARQALwDSAC8CNwAvANMALwGqAC8BsAAvAlYALwOSAC8CNAAvA1sALwLQAC8BOQAvATkALwGoAC8BqAAvAVEALwFRAC8BZwAvAWcALwFxAC8BcQAvAagALwGoAC8BjQAvAY0ALwIOAC8CDgAvAY8ALwGPAC8BjQAvAY0ALwFnAC8BZwAvAVEALwFRAC8BOQAvATkALwDPADEBdgAxAXYAMQF2ADEAzwAxAM8AMQIaAC8CGgAvAVAALwFQAC8BaAAxALwAMQIDADwCgQBcBLAAPgcIAD4JYAA+BwcAPgNAAC8DQAAvA5IAMQJuACgCUQAjAi4AOwNEADECWgAxAloAMQN6AFwBjAAvAPwALwF3AC8BCABcAQgAXAI7AFwCOwBcBEQAXAJYAE8DWQAxAlgANAIpAC8CSwAxAokAOwLgADsCogA7AtEALgKoAFwDBwBcAmgAOwJ3ABUCOgAvAjoALwHnAC8COgAvApQAXAI6AC8CKQAxAiUALwI6AC8COgAvAjoALwIaAC8CGgAvAeUALwGSAC8DSQAvAXsAAAKMABUCaAAZAhIAGwJjABYCVQAvAlIAWgMCAC8ESAAvAtAAMQJ2ADEDKAAxAnYAMQLQADECdgAxAygAMQJ2ADEEFgAxAtAAMQKVADECqAAxAqgAMQKYADECmAAxAp8AMQKfADECnwAxAqQAMQKfADEDIgAVAaYAMQJeADEDBgAxAl4AMQGmADECXgAxAwYAMQJeADEDSgAxAaYAMQNUADEDVAAxA1QAMQIdADEDXQAVAzcAXANdABUDNwAVA10AFQM3AFwDXQAVAzcAFQAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAADHAAAALwAAAC8AAAAvAUgALwC4AC8A/AAvAPwALwF2AC8BdAAvAXQALwF6AC8BGQAvAa4ALwFeAC8BNgAvAQUALwFnAC8AyAAvAM8AMQD8AC8AuAAvAlgAAANAAC8ALwAAAAEAAAOY/yQAZAlg/9P9mQkiAAEAAAAAAAAAAAAAAAAAAAKqAAQCTQGQAAUACAKKAlgAAABLAooCWAAAAV4AMgEJAAAAAAAAAAAAAAAAoQAA/wAB5fsAAAAQAAAAAFVLV04AwAAg/10DmP8kAGQDmADcIAAAkwAAAAACEgLGAAAAIAAEAAAAFgEOAAEAAAAAAAEABQAAAAEAAAAAAAIABwAFAAEAAAAAAAQADQAMAAEAAAAAAAUAIQAZAAEAAAAAAAYADQA6AAMAAQQJAAEACgBHAAMAAQQJAAIADgBRAAMAAQQJAAMAMABfAAMAAQQJAAQAGgCPAAMAAQQJAAUAQgCpAAMAAQQJAAYAGgDrAAMAAQQJABAACgBHAAMAAQQJABEADgBRAAMAAQQJAQAAEgEFAAMAAQQJAQEACgEXAAMAAQQJAQIACgEhAAMAAQQJAQMACgErAAMAAQQJAQQACgE1AAMAAQQJAQUACgE/AAMAAQQJAQYAFAFJAAMAAQQJAQcAFgFdAAMAAQQJAQgAFgFzR2Vpc3RSZWd1bGFyR2Vpc3QgUmVndWxhclZlcnNpb24gMS4wMDI7R2x5cGhzIDMuMS4yICgzMTUxKUdlaXN0LVJlZ3VsYXIARwBlAGkAcwB0AFIAZQBnAHUAbABhAHIAMQAuADAAMAAyADsAVQBLAFcATgA7AEcAZQBpAHMAdAAtAFIAZQBnAHUAbABhAHIARwBlAGkAcwB0ACAAUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADAAMAAyADsARwBsAHkAcABoAHMAIAAzAC4AMQAuADIAIAAoADMAMQA1ADEAKQBHAGUAaQBzAHQALQBSAGUAZwB1AGwAYQByAE4AbwAgAHQAYQBpAGwAIABhAEEAbAB0ACAAYQBBAGwAdAAgAGwAQQBsAHQAIABSAEEAbAB0ACAASQBBAGwAdAAgAEcAQQBsAHQAIABhAHIAcgBvAHcAcwBSAG8AdQBuAGQAZQBkACAAZABvAHQAQQBsAHQAIABuAHUAbQBiAGUAcgBzAAAAAAIAAAADAAAAFAADAAEAAAAUAAQGwgAAANgAgAAGAFgALwA5AH4BEwErATcBPgFIAU0BfgGPAZIBtwHOAekB7wIbAjcCWQKSArkCvALIAt0DBAMIAwwDEgMoAzUDmwOpA7sDwA4/HiEehR6eHr0e8x75IBQgGiAeICIgJiAwIDMgOiBEIHAgeSCJIKogrCC0ILkgvSEHIRchIiFVIV4hmSGdIaohsSG1IeUh5yICIgYiDyISIhoiHiIrIkgiYCJlI84kDCRoJOok/yWzJbclvSXBJcwlzyY6J34wAzARMBcwHKeM/wP/Cv8P/xv/IP89/z//W/9d//8AAAAgADAAOgCgARYBLgE5AUEBSgFQAY8BkgG3Ac0B5AHuAhgCNwJZApICuQK8AsYC2AMAAwYDCgMSAyYDNQObA6kDuwPADj8eIB6AHp4evB7yHvggEyAYIBwgICAmIDAgMiA5IEQgcCB0IIAgqiCsILQguSC9IQchFiEiIVMhWyGQIZ0hqSGwIbMh5CHnIgIiBiIPIhEiGiIeIisiSCJgImQjziQLJGAk6iT/JbIltiW8JcAlyiXPJjkndjACMAgwFDAcp4v/Af8F/wz/Gv8f/zv/P/9b/13//wAAAUAAAAAAAAAAAAAAAAAAAAAA/pQAh/5tAAAAAAAAAAD+s/52/j7/7f/pAAAAAAAAAAAAAP98/2n/Xf3Q/cP9sv2u89sAAAAA4cgAAAAAAADh2wAAAAAAAOGc4ibh+OHc4VbhP+E/4SXhkeGL4YThgeF84GgAAOEGAADgRgAA4MTgu+C24LXgfuCE4FHgSeBBAADgOOAv4CPgAd/jAADeZAAA3SXcmtx7AAAAAAAAAAAAANyn2+baBQAAAAAAANHVAAAAAAAAAAAAAAAAAAACpwKiAqEAAQDYAAAA9AF8AmICjAKeAqgCtgK8AAAAAAAAAxIDFAMeAyAAAAAAAAAAAAAAAxwDIAMqAzIDNgAAAAAAAAAAAAAAAAAAAAADKgMsAAADNAM2AzgAAAM4AzwDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKAAAAygAAAMqAAAAAAAAAAAAAAAAAAAAAAAAAyoAAAAAAAAAAAAAAyIAAAMiAAAAAAAAAx4DIAMiAyQDJgAAAAAAAAMkAyYDOAAAAzwDPgNCA0wDUgNUA1YAAAAAAAAAAAABAcMCFwHLAjYCVQIiAhgB8wH0AckCPgG/AewBvgHMAcABwQJFAkICRAHFAiEAAgAOAA8AFQAZACYAJwAvADIAPAA/AEIARwBIAE4AWABaAFsAXwBnAGwAdwB4AH0AfgCEAfcBzQH4AkwB8AKYAK4AugC7AMEAxQDSANMA2wDeAOkA7QDwAPUA9gD8AQYBCAEJAQ0BFQEaASUBJgErASwBMgH1AiwB9gJKAbkBxAI0AjwCNQI9Ai0CJAKWAiUBaQITAksB7QImAqACKQJIAbEBsgKZAlQCIwHHAqEBsAFqAhQBngGbAZ8BxgAIAAMABgAMAAcACwANABIAHwAaABwAHQA4ADQANQA2ABYATABSAE8AUABWAFECQABVAHEAbQBvAHAAfwBZARQAtACvALIAuACzALcAuQC+AMsAxgDIAMkA5ADgAOEA4gDCAPoBAAD9AP4BBAD/AkEBAwEfARsBHQEeAS0BBwEvAAkAtQAEALAACgC2ABAAvAATAL8AFADAABEAvQAXAMMAGADEACAAzAAeAMoAIQDNABsAxwAqANYAKADUACwA2AArANcAMQDdADAA3AA7AOgAOQDmADoA5wA3AN8AMwDlAD4A7ABBAO8AQwDxAEUA8wBEAPIARgD0AEkA9wBLAPkASgD4AE0A+wBUAQIAUwEBAFcBBQBcAQoAXgEMAF0BCwBgAQ4AZAESAGMBEQBiARAAagEYAGkBFwBoARYAdgEkAHMBIQBuARwAdQEjAHIBIAB0ASIAegEoAIABLgCBAIUBMwCHATUAhgE0AAUAsQAuANoAKQDVAEAA7gAlANEAZQETAGsBGQKbApwCpwKdApcCngKiAp8CmgKEAoUCiAKMAo0CigKDAoICiwKGAokALQDZAHwBKgB5AScAewEpACIAzgCCATAAgwExAhECEgINAg8CEAIOAi4CLwHIAjACJwGcAZ0BoAJdAlcCWQJbAl8CYAJeAlgCWgJcAlECPwJHAkYCMwIxAnoCfgJ7An8CfAKAAn0CgQJ5AncCeAG6AcoB+QH6AgECAgH/AgACBQIGAfsB/AIDAgQCBwIIAGEBDwHUAdkB1QHWAc4B2gILAgwBzwHTAfIB1wHcAdIB2wHYAdACCQHRAgoAAAADAAAAAAAA/5wAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAEAgABAQEOR2Vpc3QtUmVndWxhcgABAQEp+BEA+eMB+eQC+BgE+xEMA177cBwJIvpMBRwrGg8cLhIRqR0AAI1CEgHKAgABAAcADgAVABwAIgAoADMAPQBDAEkATwBZAGAAZwBuAHUAfACDAIkAjwCaAKEAqwCyALkAvQDIAMoA1ADbAOIA6ADzAP4BBQEMARIBGAEfASUBKwEyATUBQgFJAU8BVQFcAWIBaQFxAXwBgwGKAY4BlAGbAaIBqAG1AbwBwwHIAc4B1AHfAegB7gH5Af8CBgIMAhYCJQI0AjoCRQJQAlwCYgJtAn0CiwKaAqUCsQK9AsgCzgLZAukC9QMEAxADHgMtAzsDSgNZA2cDdgOEA5IDoAOuA70D0APkA/gEAAQIBA4EFQQcBCMEKQQvBDoERARKBFAEVgRgBGcEbgR1BHwEgwSKBJAElgShBKgEsgS5BMAExATPBNgE2gThBOgE7gT1BQAFCwUSBRkFHwUlBSwFMgU4BT8FQgVPBVYFXAViBWkFbwV2BX4FiQWQBZQFmgWhBagFrgW7BcIFyQXOBdQF2gXlBe4F9AX/BgUGDAYSBhwGKwY6BkAGSwZWBmIGcgaABosGlwajBq0GuAa+BskG1AbgBvAG/gcJBxUHIQcrBzYHPAdHB1IHXgdpB3cHhgeUB6MHsge4B8YH1AfbB+cH7Qf7CAkIFwglCDQIRwhaCGIIaghxCHgIfgiFCIsIjQiUCJsIogipCLAItwi+CMUIzAjTCNoI4QjoCO8I9gj9CQQJCwkSCRkJIAkpCTEJOAk+CUQJTAlTCVoJYAloCXAJdwl+CYUJjAmTCZoJoQmoCa8Jtgm9CcQJywnSCdkJ4AnnCe4J9Qn8CgMKCgoRChgKHwomCkcKYQp0CnsKggqJCpAKlwqeCqUKrAqzCroKwQrICs8K1grdCuQK7wr5CwcLFAsfCy4LOwtMC18LZgtyC34LiguWC6ILqQuwC7cLvgvFC8wL0wvaC+EL6AvvC/YL/QwEDAsMEgwZDCAMJwwuDDUMPAxDDEoMWgxxDI8MpwyuDLcMvgzEDMoM0QzYDN8M5gzqDPEM+Az/DQYNDg0aDSMNLg02DT4NRQ1MDVUNXA1nDW4NdQ18DYYNjQ2WDZ0Npg2tDbYNvw3GDc0N1A3bDeIN6Q3wDfcN/g4MDhMOHw4rDjoORg5UDmAObg56DogOlg6dDqMOqg6xDrgOvw7GDs0O1A7bDuIO6Q7wDvcPAA8JDxAPGw8iDykPMA83D0APRw9OD1UPXA9jD2oPeQ+FD5EPng+sD7MPug/BD8sP1w/pD/oQB0FicmV2ZXVuaTAxQ0RBbWFjcm9uQW9nb25la0NhY3V0ZUNjYXJvbkNjaXJjdW1mbGV4Q2RvdGFjY2VudERjYXJvbkRjcm9hdEVjYXJvbkVkb3RhY2NlbnRFbWFjcm9uRW9nb25la3VuaTFFQkN1bmkwMThGdW5pMDFCN3VuaTAxRUVHYnJldmVHY2Fyb25HY2lyY3VtZmxleHVuaTAxMjJHZG90YWNjZW50dW5pMUUyMHVuaTAxRTRIYmFySGNpcmN1bWZsZXhJSklkb3RhY2NlbnRJbWFjcm9uSW9nb25la0l0aWxkZXVuaTAwNEEwMzAxSmNpcmN1bWZsZXh1bmkwMUU4dW5pMDEzNkxhY3V0ZUxjYXJvbnVuaTAxM0JOYWN1dGVOY2Fyb251bmkwMTQ1RW5nT2h1bmdhcnVtbGF1dE9tYWNyb25SYWN1dGVSY2Fyb251bmkwMTU2U2FjdXRldW5pQTc4QlNjZWRpbGxhU2NpcmN1bWZsZXh1bmkwMjE4dW5pMUU5RVRiYXJUY2Fyb251bmkwMTYydW5pMDIxQVVicmV2ZVVodW5nYXJ1bWxhdXRVbWFjcm9uVW9nb25la1VyaW5nVXRpbGRlV2FjdXRlV2NpcmN1bWZsZXhXZGllcmVzaXNXZ3JhdmVZY2lyY3VtZmxleFlncmF2ZXVuaTFFRjhaYWN1dGVaZG90YWNjZW50dW5pMDEzQi5sb2NsTUFIdW5pMDE0NS5sb2NsTUFIUi5zczA0UmFjdXRlLnNzMDRSY2Fyb24uc3MwNHVuaTAxNTYuc3MwNEkuc3MwNUlhY3V0ZS5zczA1SWNpcmN1bWZsZXguc3MwNUlkaWVyZXNpcy5zczA1SWRvdGFjY2VudC5zczA1SWdyYXZlLnNzMDVJbWFjcm9uLnNzMDVJb2dvbmVrLnNzMDVJdGlsZGUuc3MwNUcuc3MwNkdicmV2ZS5zczA2R2NpcmN1bWZsZXguc3MwNnVuaTAxMjIuc3MwNkdkb3RhY2NlbnQuc3MwNnVuaTFFMjAuc3MwNkFkaWVyZXNpcy5zczA4Q2RvdGFjY2VudC5zczA4RWRpZXJlc2lzLnNzMDhFZG90YWNjZW50LnNzMDhHZG90YWNjZW50LnNzMDhJZGllcmVzaXMuc3MwOElkb3RhY2NlbnQuc3MwOE9kaWVyZXNpcy5zczA4VWRpZXJlc2lzLnNzMDhXZGllcmVzaXMuc3MwOFlkaWVyZXNpcy5zczA4WmRvdGFjY2VudC5zczA4SWRpZXJlc2lzLnNzMDUuc3MwOElkb3RhY2NlbnQuc3MwNS5zczA4R2RvdGFjY2VudC5zczA2LnNzMDhBX0kuZGxpZ1VfSS5kbGlnYWJyZXZldW5pMDFDRWFtYWNyb25hb2dvbmVrY2FjdXRlY2Nhcm9uY2NpcmN1bWZsZXhjZG90YWNjZW50ZGNhcm9uZGNyb2F0ZWNhcm9uZWRvdGFjY2VudGVtYWNyb25lb2dvbmVrdW5pMUVCRHVuaTAyNTl1bmkwMjkydW5pMDFFRmdicmV2ZWdjYXJvbmdjaXJjdW1mbGV4dW5pMDEyM2dkb3RhY2NlbnR1bmkxRTIxdW5pMDFFNWhiYXJoY2lyY3VtZmxleGkubG9jbFRSS2lqaW1hY3JvbmlvZ29uZWtpdGlsZGV1bmkwMjM3dW5pMDA2QTAzMDFqY2lyY3VtZmxleHVuaTAxRTl1bmkwMTM3bGFjdXRlbGNhcm9udW5pMDEzQ25hY3V0ZW5jYXJvbnVuaTAxNDZlbmdvaHVuZ2FydW1sYXV0b21hY3JvbnJhY3V0ZXJjYXJvbnVuaTAxNTdzYWN1dGV1bmlBNzhDc2NlZGlsbGFzY2lyY3VtZmxleHVuaTAyMTl0YmFydGNhcm9udW5pMDE2M3VuaTAyMUJ1YnJldmV1aHVuZ2FydW1sYXV0dW1hY3JvbnVvZ29uZWt1cmluZ3V0aWxkZXdhY3V0ZXdjaXJjdW1mbGV4d2RpZXJlc2lzd2dyYXZleWNpcmN1bWZsZXh5Z3JhdmV1bmkxRUY5emFjdXRlemRvdGFjY2VudHVuaTAxM0MubG9jbE1BSHVuaTAxNDYubG9jbE1BSGEuc3MwMWFhY3V0ZS5zczAxYWJyZXZlLnNzMDF1bmkwMUNFLnNzMDFhY2lyY3VtZmxleC5zczAxYWRpZXJlc2lzLnNzMDFhZ3JhdmUuc3MwMWFtYWNyb24uc3MwMWFvZ29uZWsuc3MwMWFyaW5nLnNzMDFhdGlsZGUuc3MwMWEuc3MwMmFhY3V0ZS5zczAyYWJyZXZlLnNzMDJ1bmkwMUNFLnNzMDJhY2lyY3VtZmxleC5zczAyYWRpZXJlc2lzLnNzMDJhZ3JhdmUuc3MwMmFtYWNyb24uc3MwMmFvZ29uZWsuc3MwMmFyaW5nLnNzMDJhdGlsZGUuc3MwMmwuc3MwM2xhY3V0ZS5zczAzbGNhcm9uLnNzMDN1bmkwMTNDLnNzMDNsc2xhc2guc3MwM2FkaWVyZXNpcy5zczA4Y2RvdGFjY2VudC5zczA4ZWRpZXJlc2lzLnNzMDhlZG90YWNjZW50LnNzMDhnZG90YWNjZW50LnNzMDhpLnNzMDhpZGllcmVzaXMuc3MwOGkubG9jbFRSSy5zczA4aWouc3MwOGlvZ29uZWsuc3MwOGouc3MwOG9kaWVyZXNpcy5zczA4dWRpZXJlc2lzLnNzMDh3ZGllcmVzaXMuc3MwOHlkaWVyZXNpcy5zczA4emRvdGFjY2VudC5zczA4YWRpZXJlc2lzLnNzMDEuc3MwOGFkaWVyZXNpcy5zczAyLnNzMDhmX2YubGlnYXRfdC5saWdhZmkubGlnYWZsLmxpZ2FMYW1iZGF1bmkwM0E5bGFtYmRhcGl1bmkyMTA3dW5pMjRGRnVuaTI3NzZ1bmkyNzc3dW5pMjc3OHVuaTI3Nzl1bmkyNzdBdW5pMjc3QnVuaTI3N0N1bmkyNzdEdW5pMjc3RXVuaTI0RUF1bmkyNDYwdW5pMjQ2MXVuaTI0NjJ1bmkyNDYzdW5pMjQ2NHVuaTI0NjV1bmkyNDY2dW5pMjQ2N3VuaTI0Njh6ZXJvLnNzMDlvbmUuc3MwOXplcm8udGZvbmUudGZ0d28udGZ0aHJlZS50ZmZvdXIudGZmaXZlLnRmc2l4LnRmc2V2ZW4udGZlaWdodC50Zm5pbmUudGZ1bmkyMTUzdW5pMjE1NHVuaTIxNTV1bmkyMDgwdW5pMjA4MXVuaTIwODJ1bmkyMDgzdW5pMjA4NHVuaTIwODV1bmkyMDg2dW5pMjA4N3VuaTIwODh1bmkyMDg5dW5pMjA3MHVuaTAwQjl1bmkwMEIydW5pMDBCM3VuaTIwNzR1bmkyMDc1dW5pMjA3NnVuaTIwNzd1bmkyMDc4dW5pMjA3OXVuaTAwQTB1bmkzMDAyaHlwaGVuX2h5cGhlbl9oeXBoZW5fZ3JlYXRlci5saWdhaHlwaGVuX2h5cGhlbl9ncmVhdGVyLmxpZ2FoeXBoZW5fZ3JlYXRlci5saWdhdW5pMzAwM3VuaUZGMDZ1bmlGRjBBdW5pRkYyMHVuaUZGM0N1bmlGRjFBdW5pRkYwQ3VuaUZGMDF1bmlGRjAzdW5pRkYwNXVuaUZGMEV1bmlGRjFGdW5pRkYwMnVuaUZGMDd1bmlGRjFCdW5pRkYwRnBlcmlvZC5zczA4Y29sb24uc3MwOHNlbWljb2xvbi5zczA4ZWxsaXBzaXMuc3MwOGV4Y2xhbS5zczA4ZXhjbGFtZG93bi5zczA4cXVlc3Rpb24uc3MwOHF1ZXN0aW9uZG93bi5zczA4cGVyaW9kY2VudGVyZWQuc3MwOHVuaUZGM0Z1bmlGRjFBLnNzMDh1bmlGRjAxLnNzMDh1bmlGRjBFLnNzMDh1bmlGRjFGLnNzMDh1bmlGRjFCLnNzMDh1bmkwMEFEdW5pMzAxQ3VuaUZGMER1bmkzMDA4dW5pMzAwOXVuaTMwMTB1bmkzMDExdW5pRkY1QnVuaUZGNUR1bmkzMDBDdW5pMzAwRHVuaTMwMEF1bmkzMDBCdW5pMzAxNHVuaTMwMTV1bmkzMDBFdW5pMzAwRnVuaTMwMTZ1bmkzMDE3dW5pRkYzQnVuaUZGM0R1bmlGRjA4dW5pRkYwOXVuaTBFM0ZsZXNzX2h5cGhlbi5saWdhbGVzc19oeXBoZW5faHlwaGVuLmxpZ2FsZXNzX2h5cGhlbl9oeXBoZW5faHlwaGVuLmxpZ2FsZXNzX2h5cGhlbl9ncmVhdGVyLmxpZ2F1bmkyNjM5c21pbGVmYWNldW5pMjExN21pbnV0ZXNlY29uZHVuaTIxMTZ1bmkyNDBDdW5pMjNDRXVuaTI0MEJFdXJvdW5pMjBCNHVuaTIwQkR1bmkyMEI5dW5pMjBBQW5vdGVxdWFsZ3JlYXRlcmVxdWFsbGVzc2VxdWFsYXBwcm94ZXF1YWxpbmZpbml0eWludGVncmFsdW5pMjIwNnByb2R1Y3RzdW1tYXRpb25yYWRpY2FscGFydGlhbGRpZmZ1bmkwMEI1YXJyb3d1cHVuaTIxOTdhcnJvd3JpZ2h0dW5pMjE5OGFycm93ZG93bnVuaTIxOTlhcnJvd2xlZnR1bmkyMTk2YXJyb3dib3RoYXJyb3d1cGRudW5pMjE5RHVuaTIxRTR1bmkyMUU1dW5pMjFBOXVuaTIxQUF1bmkyMUIwdW5pMjFCMXVuaTIxQjN1bmkyMUI0Y2FycmlhZ2VyZXR1cm51bmkyMUU3YXJyb3d1cC5zczA3dW5pMjE5Ny5zczA3YXJyb3dyaWdodC5zczA3dW5pMjE5OC5zczA3YXJyb3dkb3duLnNzMDd1bmkyMTk5LnNzMDdhcnJvd2xlZnQuc3MwN3VuaTIxOTYuc3MwN2Fycm93Ym90aC5zczA3YXJyb3d1cGRuLnNzMDd1bmkyNUNGY2lyY2xldW5pMjVDQ2xvemVuZ2V0cmlhZ3VwdW5pMjVCNnRyaWFnZG51bmkyNUMwdW5pMjVCM3VuaTI1Qjd1bmkyNUJEdW5pMjVDMXVuaTAzMDh1bmkwMzA3Z3JhdmVjb21iYWN1dGVjb21idW5pMDMwQnVuaTAzMEMuYWx0dW5pMDMwMnVuaTAzMEN1bmkwMzA2dW5pMDMwQXRpbGRlY29tYnVuaTAzMDR1bmkwMzEydW5pMDMyNnVuaTAzMjd1bmkwMzI4dW5pMDMzNXVuaTAzMjYubG9jbE1BSHVuaTAzMDguc3MwOHVuaTAzMDcuc3MwOGRpZXJlc2lzLnNzMDhkb3RhY2NlbnQuc3MwOHVuaTAyQkN1bmkwMkI5dW5pMDJDOE51ZXZvR2xpZm9ibGFja0NpcmNsZWRibGFja0NpcmNsZWRTdHJva2Vjb3B5cmlnaHQgbWlzc2luZ0dlaXN0IFJlZ3VsYXIBAQIAAQAFABAAFgAcACIAKAA2AD4ARABrAHUAfgCHAJ8AogCvALoAwQDJANEA1gDkAO8A+wECAVABZQF7AYUBjgGTAZoBpgGwAbMBwwHLAdUB3QHkAeoCBAIQAisCRAJWAmUCcAJ4AoECjwKWAp8CpwKtArICwwLOAtsC6wLwAwYDDwMbAyUDLAM0AzsDQwOCA84D0gQIBBQEGAQgBC0ESwRlBHYEewSGBI8ElwSfBKgErwS2BL0ExQTNBNUE4ATnBQQFSwWGBbYFvgXjBfYGFAYaBikGOAZRBmkGdAZ5BoUGiwaWBqAGqgazBsAGzQbZBt8G5wdJB6gH8ggfCHoIowkQCUcJpQoCCj4KhQrYCxwLKAtVC50LvQv/DDMMPwx5DLAM5g0DDRANJQ03DVgNhw2lDdEN7Q31DiEORQ5eDmcOjA6sDroO4Q8EDyoPPA9dD4APjg+hD8IP0g/xEBAQGRA5EEYQWhBfEHoQlxCaELYQyRDSEO0Q9xEQESoRRBFdEXQRjBGkEbwR0hHoEf8SFhIlEjwSUhJnEnsSjxKjErcSyRLTEuYS7hL/ExATIhMmEzcTQRNSE1YTZhN1E4UTlROlE7UTwxPSE+ET8BP+FAwUGhQoFDYUPhRHFFAUXRRqFHcUhBSRFJ4UphSrFLcUwRTJFNEU3BTnFPIU/RUIFRMVHhUpFTL5WhULFXwdPQZONk7gBQ4V5ewxBg5/3fga3Qt74fjO4QuL4fiu4QsVyga6mZ+mo5d6epweCxX3lMv7lAYO9wxorhILFW2idKqpo6KpqnOhbWx0dWwe9zEWbaJ0qqmjoqmqc6FtbHR1bB4O9wv37vcL++4FC3/d9zzX9ybdC/cHHesG9xQdC0cHv21Vpz0b+y5F+xj7Jfsl0fsY9y4fC+8dDvcQogVoBylHUjWHHgugdvdd4ffu2It3C93Dq8GoHwt/02R2+GDdC3/XS9f4FN0L0kT3OwvD+AoV5oQFx5u3rM0bC9i9YDOMH/subwUL9xj3IRXXy4rZmh4L+yrX+PB3C9YD+DR/Ffdg9zn3Ofdh91/7Ofc5+2D7YPs5+zn7X/th9zn7OfdgH/u6+AYV9zj3FfcV9zn3OfcV+xX7OPs5+xX7Fvs5+zn7FfcW9zkeC6+aoKWzGspWuUZHVV1MY6Bxr3weC573TBWpop6traJ4bWl0dWlpdKGtHg74hBb4pjX70AcL9x8d9/Ldf3cLd+4oHQtbeG9kWhoL4wODHfc58vH3Nh4LjTgF2ffUBuQdC+gdDjkHxXNPr0Mb+x0rIfsrHwvnIB39WuMHCxXOBub3FgUsBgv7cMGtdtK4Cy9SzvcAHwv3z9sByQu6950VVR3x5cnvqh5tHfsnK/sA+z0f6HAdC40d9z0r9wD7J74dC/hc+KYVLwb7EfxH+xH4RwUvBvc3/KYF9wAGC/cJ+CT3CfwkBfcABvc3+KYFLwb7EfxHBQs+h2i3tBoxFmEd3o3Lt6G8CAvnxEj7AIkf+wCKUkgyGwvb+KYV/Kbh+KYHC0LIXtuQHR4Lzgbm9xYFLAYOEtv/AE+AAP//sIAA4Qvp48HZqR8Li/cNJ3b5WncL+z3r+wD3JwvhNuA33wvjA34dC/mMXx37cvjQFeuMBfuOzwcL+PX3FgG69zKHHQ73WxV8HT0GTjZO4AUO/wAxgADjd6B3Evclz1m9CxX3AB0L95zH+1EGjKKmpbGlp54YxbKutsAaCxWUHWqkc6wfCyAdNgb8ff1aBeAGCwHn4wPnIB39Wgss4VP0iR4Ldvex4feR4QsoSntJTRoL+xp29y/3AgsVIgdOxuZl4hv3MPcA5fcT9wQ45PsKmB/3UvdXBe/8fTX4EAf7WPtfBTQHwYwF743RVDoaPkRVJkIvudNDHgsB5+P34OcD9/4gHfui/Vrj97H3QQbytXZLkR+d+1wF5AZ392WE1m2vRZYZyp3Eyt4a9xgu3vspHvtK++cV95H3SgfrwV06OlVeKx8LA38dC/Md97H3OwaWBvc2+7EF7Ab7Pfe+BeymwdLuGvcbLtv7Mx77O/vnFfeR9zsH8sRdOjpSXiQfC8wD+DR/FXUdiR0fCwO1HQtFHcb7FkUdDs1ZuUVBVVo+gh7nHQsvkgVUc1hrUxsxVcn1gx/4EwaKsgX3UoIi1vsIGwsD+JD5AhXj/GQ19/4H/A/8qQUw+H3h/BoHC/f3FfvK98sF+wUG96P7owULvPcKHQtTlkagvxq9uqjFC/fL+8sF9wUGC2qkc6yUHR4OErrl95xWHQv7YPs59zn3YQuae3eYZhsL+wb6OwG6C/UyrPsMogt/3Vp2+GTZC/sFOEokdh8Le8d0dvdFxAvh+wwF9Abi9wwFCwG65gNJHQv4B/f8FTX3Wwf7B4dGMvsStB33SvT3D/dkH7gHC/km934VLZEF+wF2Rk4kG/s1RvcZ9yv3LM/3Gvc27M9UKKIf6JEF9yBsKOn7Kxv7YvsI+zr7Yvth9wn7Ofdh9zjs8PcppR8Lf9dgdvimd+73FhLb4feI4TndE3w8HRO8KVRXOj9rv+0e99A1++kH+wTFMvcKHhO60Miqz6cfE3o0BwvhOd0TeQA8HRO5AClUVzo/a7/tHvfQNfvpB/sExTL3Ch4TuIDQyKrPpx8TdIA0BwtgHfhb9wEdC/j594wV+GMz/GMH+wZKS/sH+wdKy/cGHvhjM/xjB/s28iX3OQtycIBsbRpatGe9pKWTn6QezAcLtpiisbAaxVa5RkxUYVWDHsyHBaGOop2uG6ukc20L3Pt/4B0LA/dh+XcVLAZM+xYFzgYL+OcH9+f85wX3FPlaMwYL91/3Ofc592D3YPc5+zn7X/th+zn7OftgC9sgHfzyB021Yckex9ddBnWBlaEf+O4HC9+UFe/3GQX7GQcO9xXvHQv3tn8V9yfr9wD3PQslHdr3DAtxeXpvaXOtnX0eC9vIuNS8brFcnwvrjAX7js/4GAcLFTv4cNsH/HALKss+3NzL2OzsS9g6C6yko6yscqNqanJzagtFT2gx+wRJy+p4HgtfdKq7Hw4zHc73FpodC+E24DndE/aA962nFc7FrsOlHzQHQlNkLkpeqLx1HjGFBS6k3073BRv3H+vV9yAfE+6A+HIHE+4gOQYT9iBDHRP2gPsr7CH3HR77JPeVFfcAxM7nHhP2QE4dE/aARx0T94AL4TbgOd0T94D3racVzsWuw6UfNAdCU2QuSl6ovHUeMYUFLqTfTvcFG/cf69X3IB8T74D4cgcT7yA5BhP3IEMdE/eA+yvsIfcdHvsk95UV9wDEzuceE/dATh0T94BHHQt0HRO5NR0TvOC1YDOMH/subQX7CnQ5cPsCGizhU/QeE7rfxbi7oR8Teku7esEeE3mw13UGdYGVoR/3aAf3Ij7b+x0eE7l6HYYdC+E33zzaE7hANx0TuIAvHRO4QE0dE3hAQR0TuQA2HRO4QPsJdjhw+wQaE7YAC3/dRdH4Hs1J2c73FhK65fe84f//sIAA/wBPgAA92ROsgPib+KYVE64ANQYTngAtHROdADEdE1yAjkEF2QYTnID8EvedFfK16/cC9wG2KiUpYCr7AfsCYevuHgsSteX3nOE33zzaE7k3HRO6Lx0TuU0dE3lBHRO8Nh0TufsJdjhw+wQaC6B291jT9z/T91t3AYH4gQOvFtQGr/dYBfcZBmf7WAXUBq/3WAXcBpbTBTwGq/c/BdcGltMFQQaw91tBimf7WgX7GQaw91tBimf7WgUyBoBDBeEGbPs/BTcGgEMF3Qbh0xWr9z8F9xgGbPs/BQ6F9wb4qOESuufo9wj7Ad/05xPs94P3YBXfBsKeu72tHubJxh1bdlReHkxWdEtBGhP0hPstFXMd4fjK4QHV5/fg5wP3K/d9FS+FBfskl/cGLPcwG/cU9w3P9xj3ASPL+xSvHzSjIqLiGs7Gtdvsz1EzmB7nkQX3F3wm6vstG/scK0D7DPsH9VL3B24f9yFnyWBDGpUdC/huFfsm6iX3IdfKrsuyHvs4fUswIhtPXKa7dB8uhAUnruBV8hv3Yc/3XPdp9wNy5VjAH8BXTKFNG/snIyr7Lx/nFuzM0OceE/jqzUYqiR8sikZIKxsT9DNNzuofDov3Avim4RK65+D3ASvj8ucT7PeB92AV4wbQnK3BsB7ixsYdXHhYYB5EUXVaMxoT1H77YBX3AfcC+wEGDvtS9xbcdvhm1393Uh33juET1tv4phX8puH30QcT5uzCv9/aq1cqHvvR4ffpB/cEUeT7DR4T6kJNa0RwHxPaiOYFsP1kRR0O+wfb+VXbAfdV3LTJA/gN96cV4AdPiWDD3BreB/BB0iEeXDsG9Y+zckYaLwcxvkrSfR6KB0J9WkkwGi8HRmNyIY8eO7oH9dXS8B/eB9y2w8eJHg4VypEFyHlarFQbIGP7BfsKKrY06NfFweLfVcJGHxP09xodE+ypnn5wlR/7HftCFbuMqaqxG7eibFtacmtgYm+rvIwfDiMdAbrl98blA0odDvtr00P3axK6NB0TYPcoXhWquAUTUFEGZWEFE5CEHROg9yIdHxNgn5ujmZ8eDvgKexX3X/cO9yH3efd7+w73Iftf+1/7Dvsh+3v7efcO+yH3Xx/7ffgGFfdG4vcA9yb3JuL7APtG+0Q0+wD7JvsmNPcA90QeC/tS9xbH9wgdE65EHRO2iB0TzvzyB/vt+PIFxv4YRR0O+IYV54UF6p7FwOAb2sJbR1RUVUJcH/sLP/suPvtrGviH4fwaBo7S9x/rwKoI9s3d0fMa9wgr4fsW+yIuKvsXeB4ORh0S92PDE3DyWxWnZgW2lax7axoT8I8dE3BhZAUT8F6yqnW7G8K2tL/AY7BSH7a6BVYGDjgd7vcWAaH4gmodC/sbFfsg9wT7Bvcg9yD3BPcG9yD3H/sE9wX7IPsg+wT7BfsfHsQW9uPi9vXkNCD7ADIzISAz4/cAHgv4mcf3GXcBuvfqA/gZ+NUV+wsGx/JXqU8kT/JXbcckBfsLT/cLBk8kv23H8sckv6lP8gX3CwYO+N3D1sMBusPWwwP3IfjdFb61s8C/YbVYV2FhV1a1Y78fZekVnpydoJ+ceXh3enl3dnqdnx4Oi/cC+Ox3EsH3ASzjE9DP2h0l/VoV9wH3AvsBBg73AB0T+IUdcnJvZx8L+1L3FsfX+Q53AdvhA4odK/4YRR0OoHb4pnfs8hLR9Sv3Ax0rjB0O8B0soh/nkQX3IGwo6fsrG/ti+wj7Ovti+2H3Cfs592ELofimFfdV/JwFqAZ4WgVygXyBchtOP9EGx7GlxJ8f92r46QUwBvst/Er7MvhKBQvX+A7XAfcY4QP3GPkeFfsMPj/Y+8wHMMBY6x7sHQv7Atv5UNsSuveHOd0T0Pe2+YIVE+D7hzsGE9D3Nf1QBhPg+zU7BhPQ94cGDvfyXh0T6Fn78hW0BmT7LwW9BsT3LwX3AvsBBw4wHe73Fs0dC6B2+Vp37vcWAfek4wOgIB33j/w4Bfu24/e2B/eO+DgFIwb7Uvvb+1P32wULYB3j94EH5e/3jfvlBfYG+734Jveq98gF+wMG+9D78gX38gcLEufj+A/jE15EHRNuiB0TnvzyB/vt+PIFC4VeHVH4MhVzHfsnK/sA+z1VHR/7LfepFfcOw9Ts7MNC+w77DlNCKipT1PcOHgv3yfv/FZMdOks+Kh7YFsalsLW1pmZQUHBmYWFxsMYeC/tS9xbH7R33Ef4YRR0OTp29asIb5cTk9yLsYOIuP1FVNDfBVNAfE/SyqZumnx9AgmpgXBsLJR3a9xYB90PjA/gTIB373DX3DPyu+xI19+jh+xL4rvcMBgvhA/cX+McVakQ/0vxa4fha9xnX+xmsB7ejpq0e3dc5BiheUTIfC6B2+KZ38uwS2eUz9wMdM94iHSAdE7CP+5sFyQaj90sF2wf7mjsVo/tLBckGj/ebBTEGDrDC0Br3CSnd+yD7ECgq+xV/HueFBeGWw8fcG+HDXEmKH0kL+PX3FgG696yHHcIWUR0VtaqouLiqbmFlbHNeXmyjsR4LE+igIB33j/w4Bfu24/e2B/eO+DgFIwb7Uvvb+1P32wUL+JsgHTX7jOod1cuswKgfCyAdNfgpB/si+0kv+2n7ehrnBvd87/dp9yL3Sx7dBw4gY/sF+wof0GAVu4ypqrEbt6JsW1pya2Bib6u8jB8OEqD5ChPcLB0L4ffLB+zCv9/aq1cqHvvL4ffpB/cEUeT7DUtNcVNsHguF9wYBuvcIA/SFXh0O+PPyAbr1A+/48xX3Fh1sonapHw7VHRPwC/ladwG85QO8IB37HAeZ+1kFyQaZ91kF9xwHDgHq4QP3SYgV+Kk1/KkHYHRvaB5hP78G5LjF5B8L2R0O4RPo90mIFfipNfypB2B0b2geYT+/BuS4xeQfC/caHamefnCVH8qRBch5WqxUGwsVT/dcB+sdBw4D93r5yRX7S/xn90v8aAXdBvtL+Gj3S/hnBQsV91wG6x37qAcLIB37egcvljCQLx7DBpDnlubnGvd6BxPgC/gU+AIV5ZEF8no0ziEb+w45SyUj83DrdR8LSpHDXdQb28PD3dhXx0Jwd4N3dx+Y7QX3LAvPFft64/d6B+eA5obnHlMGhi+AMC8aE+AL+wL58AGz+A4Ds/sCFd0G97z58AU4Bg4VvwbkuMXkH/ipNfypB2B0b2geYQYT9gsV1cuP2Zke9xChBYYH+xBHTzU+aK20Hgv4cBUiBvc++1z7PvtcBfQG9x33NgXXBwsV9+jh+xL4rvcM4fvcNfcM/K77EgYO+1L3FgG69zID92FPFSwGTPsWBc4GDvcoNdX7FPsCNUgmdh7ohAXBmLqyyxsLFfcOxtjo6MY++w77DFBALi5Q1vcMHgugdvimd+73FgHb4QNPHQvMiAW5lKGitBuqo3Zsbn51ZnMfa3YFCxVCyVLb28nE1B5JBmZqbmBgaqiwHgvX90h3AfeK2wP3iiAd+0j7Lj/3LgsGvG5NqkQb+x41IPs++z7hIPceC0ErXfsD+w0azAb3E8D3CNnvHrgL2Nc+BmF2obcf98z3Itf7IvcMBwvh+QR3AefjA+cW+E7h+/b5BDMGC/kEywG695QDuvlEFUv3lMsHDhVsonap9xYdHgsb+zVG9xn3K/csz/ca9zbxy1ALdvlad/cJHQv3GAf3O94y+0n7Rzgy+zsfDgHn4/fb5wP37yAd+5P9WuML4Vp296bh96zhErzn+EHgR88L9wYdDkB/UmBJGypT1PcO9w7D1OwL9yYdu2i4XZkfC+H8A/d49+/f++/3dvf74QcL9wodDuET6Nv4phX8puH4pgcT8AsB94njA/i9IB38pDX3cAsHMMBY6x7Y1z4GYXahtx8LFfsC9wH3AmIHsvcvBVkGC6AW6wbR910F974G0ftdBQvzOHb45/cHi3cS5+P4D+MLAefhA+cgHf1a4flaBwsV55nAwd4bysZn+wKaHwvH97zHAfcpyfdGyQP3wAv7FXb58HcB59sD5/laFQt/2vfZ3RK75ffN7DjeC/cz6N33HvcbLtv7Mx8LEtv/AE2AAP//soAA4Qv3ZRXm+xYFzgZM9xYFC8f3McXRxwH4B8wD+C0LJB3KKB285wv3AgG69wEDugv7lPlaBfsKBgugdvladwH30t8D9/wLqaKgqql0oG1tdHZtC7Soa1qKH1uKbGxlGwu+9x33JLz7JOn3Lb0L9wIBvPcBxfcBA/fZC2Rue3F3H8qTpsHAGwtkHfeH9wIBC/cjHe4L+F/3AvcvdwG89wELBvug+6EF9wUGDvs23eh2r90L9wB643X3AAv47BVSQAYT8PcnC4J0dH96G3d+mp4Li/M4dvjn9weLdwuL+VoBoPnHA/c1C535OAH3Pd8D92cLTI/HWtgb18e/zQv3ids792H3G9sSC/j1FTD7pr/1tAYL9y3X+y33SAcOAQABAAAiAACrAAGHAQCsAgGJAQCvAQCKAAAjAQGLAQCxAAGNAQAlAACaAAGPAQAmAACyAAGRAACzAQGSAAC1AAGTBQAnAQGZBgApAAGgAQAqAAGiAAC2AgGjAAC5AAGkAgArAAGnAQAsAAGpAQAtAAGrAgCMAAAuAQGuAgC6AAGxAAAwAAC7AwGyAQCNAAC/AACOAAAxAACdAAAyAQG0AgA0AAG3AQDAAAG5AwA1AAG9AwA2AADBAAHBAADCAgHCBAA3AQHHAwA5AQDFAAHLAADGAAHMAQA7AAHOAADHAAHPJgBCAADIAAH2AQDJAgH4AQDMAQCQAABDAQH6AQDOAAH8AQBFAACnAAH+AQBGAADPAAIAAADQAQIBAADSAAICBQBHAQIIBgBJAAIPAQBKAACRAADTAgIRAADWAAISAwBLAAIWAgBMAAIZAQBNAAIbAgCSAABOAQIeAgDXAAIhAABQAADYAwIiAQCTAADcAACUAABRAACiAABSAQIkAgBUAAInAQDdAAIpAgCVAABVAAIsAwBWAADeAAIwAADfAgIxBABXAQI2AwBZAQDiAAI6AADjAAI7AQBbAAI9AADkAAI+MwCLAACPAAJyBAARCQJ3HwBjAACbAAKXAQCeAACjAAKZAAFAAwKaGAAPAAANAAAbAQB5AAACAABgAAAgAAB7AAByAAB0AAALAAKzAAAEAAAQAAA9AAK0HQAOAALSAABvAACJAABAAALTAQAJAQBcAABeAAA8AAA+AALVEwB1AQBpAAB3AABBAAAIAABqAAB4AABrAQADAABoAABlAALpBgAhAAAHAABzAABmAACqAAClAALwAACZAAChAALxAQBdAACgAABwAQLzAwBhAABnAAAFAAL3BABiAABkAAAMAACmAACoAACfAAAeAAL8AAAfAAAdAAL9AQCcAAL/AABfAACXAAA/AAMABwAGAAB6AAMIPgCDAACCAAB8AQCGAAB+AACIAACBAACEAAB/AQCFAACHAANHBwKrAgABAU4BUQFlAXYBkgGwAdUB+AIIAiwCXwJ+AqQC6QNAA0kDWgNrA9MD6wP6BCkELQRhBGUEawR0BIIEnQS8BNIE2wTxBSkFSwWvBbwF0AXqBgEGLAZSBocGpgbLBu8HSgdwB8AH9QgBCCYILghLCGYIfAiECJcIvgjgCOkI+gkaCR8JKwk2CTsJTgltCXAJngnaCfgKBQoQChMKRwqDCo4KlwruCwELCgsTCyYLogvDDCwMOwx0DN0M5AzwDP0NCg0PDUQNSA2FDc8OFg4hDn8OhA6nDrgPAg8ODxkPIg82D1gPbQ92D38PlA/GD90P/xArEDwQVBB1EI4QpRDdEPsRAxEdEUwRUhGPEZkRqxG5EcoRzRHQEdcR4xHwEf4SGRIkEkYScRKNEpcSuRLpExATIRM9E2UTfROYE7IT1RP6FBQUOBRdFHUUixSeFLIUyxTgFQcVIhU6FVUVchWQFZMVnBWyFb8V+BY1Fj0WcRbJFzIXeRf9GE4YWBhqGHwYuRjQGOQY/xlSGX8Z8xn5GgIaEBpHGlwabxp4Go8ayBr9G1cbZBt4G4cbsRvuHB8cXhxzHIUcmRziHPUdMR1THVcdah1yHY8dpx2rHbMd4R37Hi0eVh5nHm4efB6YHp0erB63HsEe0R7lHukfIh92H5Ufph+2H7kf8yAwIDMgPCBVIGsgcyB7IJMg/yFIIX4h3iI3IqEiuyLLItoi6yLxI0gjTCOjI+gkCCQVJHwkgiStJN4lLyU7JVclYCWDJbMl0yXcJeUmFyZjJo8m0yb+Jw8nKCdKJ2QnfSe1J78nxygQKCEoJyhDKEkoVyhkKHQoeCh7KJ4opyi6KMcpGClZKWEppCn+KjMqciqVKp4qsSrhKxwrTitWK4orzywDLEssUSxdLHgshSyuLNos7S0ELRctKS0tLUgtTC11LaYtty3PLfAuCS4dLkQubS6ALrYu8C8pL04vUS9UL3Yv3TAiMFIwwzDRMPcxCDEYMSoxPDFTMWExcjGIMbkx3zH5MhkyOTJMMm8yfTK6MvMzUzN9M58zyTP8NBY0QzRaNIs04zUeNTM1QTVWNWc1dzWJNZs1sjXANdE15zX1Nio2ZjauNvU3UjeCN8A4DDhTOJY4nji2OMo46zkdOSY5PzlQOZI5pDmuOcY52zoxOlg6Yjp8Oos6xTrZOtw7FzsuO0U7WDtiO2Y7fTuPO647sjvLO848JDwwPFI8Vjx5PH08gTyFPIg8jDyXPJs8rjyyPLY8ujy+PMg8yzzePP89ET0VPRk9Kz1BPW49cj2MPY896D35Pfw+DT4RPhU+GD4tPjE+NT5IPlw+Xz6oPrs+vz7DPsc+yz7PPtM+3D7oPws/Lj8yPzY/TT9lP4Q/pz/SP/pAKkBZQJVA0EDUQNhA3EDgQO9BAkEXQUZBUUFVQXtBo0GvQb5B0UHzQkZCvELLQt5C8UMbQ11Dr0O6Q71D6USERSRFT0VwRbVF8EX0RgRGEEYlRjRGVUbJRvBHNUdnR+pIYEkPSZZKD0pSSqlK9ktpS6RLyEvbTA9MMkxNTJ1MwEzmTQZNLk1gTf9OUU5pTpZPFU9TT4JPtU/hUA1QSFCOUJJQ+FEbUUpRYFGJUapR1VH5UiNSTFKPUuBTB1MuU3lTx1PqVA1UMVRTVHdUr1THVOhVB1UnVT5VXVV7VZtVxlXzViVWf1fkWCFYMVhHWFVYaliIWKlYx1jpWO1Y8Vj1WPlY/VkBWQVZCVkNWRFZFVkZWSlZLVkxWTVZS1lPWVNZV1lbWV9ZY1lnWWtZb1lzWXdZe1l/WYNZh1mLWY9Zk1mXWZtZvFm+WclZ1vtr+yrGqLOonqizp7+noLueqJ+oqnSiqKKoqqiip6unxRLby0v3DPsM90Y1p2/3SfsPp2/3D0jOE6orAvf1IB37pf3w96UG+2XGFRNAAQCoB8ezBU8GEyABAqj3IgcTQAACbnAHT2MF4gYTqgECbgf7IvcJFez3IioH+yL3KRXsBxMGACCnRgYTBAAI4bQGEwQABG93BhMGAIJtu+EGEwoBAioH+yL3CBUTAUEIqPcGxAcTAkACpzUGEwEBAPsivBUTAIEAqMOqUwcTACECqPciBxMAgAJuBxMAgAhTBhMBKQhPBzX3BBXkBxMACALhBhMAEAJPwwcTACkCbgf7IvcEFRMABQCnw6tTBxMAAwKn9yIHEwAEAm9Ta8MHEwAIAm8HExAAEPsG/JEVExAAQOGzBhMQABA1BhMAECD4FgQTABCAp6oGEwAQIG8GDvwfDqYwHRKg+QoT2CwdT/w7FRPoKh0OprkdT/w7FRPsKh37L/iKIAqmMB3uyxL3Vi4KE94sHTj3ZegdYP0MFRPuKh0OpjAd7vcMzR0491sVfB09Bk42TuAFVP0CFRPsKh0OpjAd7igdoPkKE9osHTvaFdkGE9bI4AUT6sg2BWUKSf0CFSodDqYwHfLsEvds5cHlE94sHU7eFeXsMQaM/O8VE+4qHSz4jiIdprkdTPcQHS/9DBUT7CodDqYwHfcGyxKg+Qr8T/eUE9wsHRPqRukV95TL+5QGlPzZFSodDsn7a9P3OHb3XeH37tiLdxL4mzQdE+r3Bx2xPAoT7CcKqrj7lPlaBfsKBk/8OxUT8iodDqYwHdbD1sMS94bD1sMT3ywdT/w7FRPvKh37afjPUgqmMB3sJgr3PCoKE9ssHRPX+wHaJh0T2yMKE9ckChPrvPyKFSodDvfgi+H3B+Gm3/d24TjeEviD4xO0+CUgHfwQ/VoF7gYT9PL3XQX3pPtd+D3h++UGE7TtCgcT7P0Z/DsV90X36AW+++gGDq/vCvfR503nE/TnFvexBvcv4tP3FedRyCuYHxP42Jm6wNoa9xg3zPs8HvuJBuP9BBX3fPdZBxP068FhQEFVYisf+1n30hX3cPcxBxP49sBmQUVSZCQfDsQkHQG852cdDsQkHcr3FgG852cd+9f4vyAKxCQdyvcMAbznZx38Qfk3IR3ERh2i30x2+SLhErzn957DE0/5Jvd+FS2RBRNX+wF2Rk4kG/s1RvcZ9yv3LM/3Gvc27M9UKKIf6JEF9yBsKOn7Kxv7YvsI+zr7YvtU8vsx90p4HxPvbGmoCp6gBRNP9zCR5+6k9yUIDsT3Eh0T6H8d/D74vxXZBhPYyOAFE+ghCsT3AAr3TeVnHfvg+MMiHcUlHQHn4/gS5wP3zCAd+3D9Wvd2Bvds9wz3E/d393j7D/cU+28f+xj9BBX4rvId9yaQCsWOHQHn4/gS5wP3zCAd+3D9Wvd2BtYK+xj9BBX4rvcYB/c73jL7SftHODL7Ox/7GPnLIR33JpAKYiwKgh0OYqsK+5bbFVEdYiwK2/cMgh38APdcIR1iLArbKB3n4xP0PQr7/dsV2QYT7MjgBRP0IQpiLArf7BLn45zlweUT+j0KE/776t8V5ewxBvckKiIdYiwK3+wB5+Pn5QM9Cvuf3xXl7DEGDmKrCvvs92YoCmIsCurLEufjlPeUE/g9ChP8+/LqJx1i+2vT9yOCChLn4/d/NB0uxRN5Ygr4IQcT+mVhVgoT/CcKE3mquAXh/AP3ePfv3/vv93b3++EHDmIsCtnLkMsS5+NsKgoT5D0KE+r8GtsVdwoT9SMKE+okCg7Ye+H3f+H3jeEB+NjoA/jY+BsV/KcGjFcF+5OX9x4n9y0b91D3GPct9273dvsS9yX7Vvsa+wI3+xliH+yCBemwz7neG/cL7SD7IpUf/Eg1FfhHBvsrdDo3+w4b+wdA3/creB8OX3vh+L7hZgr3UGUdDl974fi+4dr3DGYK91BlHfL5ZSEdVaB298Xf93/hYB3j98X36d/76fd/9/vhBw7Le/QdE3o4ChO8NAoTulMdE3qT+wgFDstKCsrLErzn4y4KxOBHzxN8QDgKE7yANAoTvEBTHRN/QJP7CAX7/vorQh3LSgrK9wwSvOf4QeBHzxN9OAoTvjQKE71THRN9k/sIBfv++iEhHctKCsooHbzn+EHgR88TeoA4ChO7ADQKE7qAUx0TeoCT+wgF+/v5qRXZBhO2gMjgBRO6gCEKyykKt/QdEz04ChNeNAoTXVMdE72T+wgF+9D7UhVRHctKCs7sErzn903l9y7gR88TfoA4ChO/ADQKE76Aegr7nfmtIh3LSgrZyxK85/H3lNLgR88TfIA4ChO9ADQKE7yAegr78Pm4Jx33Anvh19e/4fes4QG85/hB4wP4B/f8FTX3WweKeYl6h3oI+1Q/9zMGXGpVbkPwHTaiH+eRBfcWbCjp+ysb+2L7CPs6+2LqCvcR5MXzth/e104GkKiOqqwauAcOxqB2987h98p3Aefj9+zjA+cW4/fO9+z7zuP5WjP7yvvs98ozBg73c6B299Ph9w/hNfdKEvcv4/gS4xPc9y8gHRPsK0wHE9w1yvyk4/fT+BL70+P4pMoHE+zhTAcT3OszBxPsK/wSBxPc6wf7xQT3D/gS+w8HDsagdvfO4ffKPh3n4/fs4xP25xbj98737PvO4/laM/vK++z3yjMG9w3aFdkGE+7I4AUT9iEK/AmgIgpgHeP5WgcO9yF74VoiChLn49bl96jjE7znIB0TfP1a4/laB9b8dBUTvLMKDvwJyAo72iAK/AmgdvlaPh3n4xPoTQr7S9oV2QYT2MjgBRPoIQr8CaAiCvLsEpuACucgHf1a4/laBxP0+zjeJQr8CaAiCvLsEublMuMT6E0KE/Ay3iId/AnICvs6Vwr8CaAiCvcGywHn4wNNCvtA6Scd/An7a9P3OCIKErs0HfsP4xPkYgoHE+ipPAoT8CcKE+SquAX5WgcO/AmgIgrsJgprysjjyMoT5E0KE9z7aNomHRPmIwoT3CQKDlx74fkUd58KDlx74fkUd+73Fp8K97H4uyAKXHvh+RQ+Hc7l96jjE+ypCvdK+LsV2QYT3MjgBRPsIQqToKEKDpOgIgru9wy7HZFaHZMpCtyhCtP+GCAKS4vtHQ5Li+H5BHfu9xYB5+MD8QqT2iAKJIvh+J/wJvcWEufjE9DxCvdCJhXOBhOw5vcWBSwGDkvAHW6L4fkEdwH3E+MDofgIFbA9z6sF+9r4TuH79vetB/cv02bZ+wpUBfeMM/u1Bw73fYvrQHb4qfdFi3cS5+P4muMTXEQdE2z4qQf3XPypBfcKBvdc+KkF/Knj+Vr7DgcTnPt1/Pr7dfj6BQ7pi/cIHRNcRB0TbPjnB/fn/OcF9xT5WjMGE5zMCg7p9xwd9xa8HfcM2iAK6fccHfcMvB2ZWh3pqR3p9yMd7CYK5+OhKgqg4xNaQEQdE2pAiB0Tl0DMCn/aJh0TWsAjChNXQHYdE5dAT2RYOx8O6fsq4eB2+Of3B4t3Eufj+A/jE9xEHRPs+OcH+A/85wWEB2V2eGEeJDXyBujFw+Mf+WAz/LcH+/D4twUO8iQdAbzn+GZRCg7yagr3WfhHIAry9xId+GbnE+z4CtUK93v7Dvch+1/7X/sO+yH7e/t59w77IfdfH/t9+AYV90bi9wD3Jvcm4vsA+0b7RDT7APsm+yY09wD3RB7p+EcV2QYT3MjgBRPsIQry9wAK9wXlweX3C1EK9wX4SyUK8moK9wP4ySgK8moK9yP4R2sd8iQd2csBvOf095T0UQr0+FYnHfcAJB0Bwef4ZucD+A/VCvcLa+lQzB/R6QU3BmZZBatZTp1DG/tf+w77Ift7+wCmM71MHzn7AwXgBrnJBWO/znXbG/t9+AYV90bi9wD3Jr23fnOuHvvT/EIFb7p8yNQa4/t/FffX+EgFr1ueRjca+0Q0+wD7JlFanKtlHg7yJB3Iy5DLErznzCoKzOcT3agdzPhHJh0T7yMKE90kCg74TXvhRYIKReESvOf4YOYz4xO1+Ad7FfLZtM6/HxN1L/g94QcTdvvl7QoGE3X8NS8GE27OVz20JBv7YvsI+zr7Yh8TteoKHvt6+AYVE673L9b3F/cv9y/W+xf7L/suP/sW+y4eE7X3AQqRoHb3p+H3m+HzHfenrwpzoHb3KOH3m+H3E3cB5+P3vecD90gW9yj3HQf3Dh37HfcTM/1aBuP3fhX3m/cdB/bAYDUyVl4gHw7sJB0BvOf4YOcD+Ad7Fbi0k5mvH8VABecGNfcDBePNu/cH9xca92L7CPc6+2L7YvsI+zr7Yvth9wn7OfdhHvt6+AYV9y/W9xf3L/cv1vsX+y8majFKWB5B6wUvBu/7FQWFd3WIcxv3AQqnoGIdZh0Op18K9xZmHU74NiAKp18K9wxmHfs7+K4hHacpCtxiHWYdIPzFIAqPf6AdDo9/4fjK4cr3FgHV5/fg5wP3K/d9FS+FBfskl/cGLPcwG/cU9w3P9xiBCh9bCpUd9yT4wCAK/F3SHY9/4fjK4cr3DAHV5/fg5wP3K/d9FS+FBfskl/cGLPcwG/cU9w3P9xiBCh9bCkVPaDH7BEnL6ngesfk4IR2PRh1e9zBMdvke4RLV5/dew9XnE1eA9yv3fRUvhQUTT4CW+xfqMfcaewgT74BoZaIK9xGO9wfP9xUa9wEjy/sUrx5bChNXgJUdDo9/4fjK4cooHdXn9+DnE+z3K/d9FS+FBfskl/cGLPcwG/cU9w3P9xiBCh9bCkVPaDH7BEnL6ngetPjAFdkGE9zI4AUT7CEKjykKu6Ad4Pw7IAq8i+H3ntT3W+EB5+P3/uUD+BDhFfsaNfcaBvcv7OX3F/cQ+wDe+zKIH/du91MF6fu3B/sPPTr7FR/8iOP4iAfbtLfTHvdDBvto+04FNAfzjAX3BIzRWDYaO01YJx4OSKC9Cg5IoHb3ytf3guH3BB37gvsYP/cY+8rj98r3Gdf7GfeC93AGDkigdvkE4dr3DMUK/Cr3sSEdSEYdxXb5BOES94njg8MTfPi9IB38pDX3cP0EnwZfWwUT+qdmBbaVrHtrGnF5em9pc62dfR4TfGFkBRP6XQoTfK2wBZr5BPdwBg5IKQrcvQr7/P3CIAq4MwoB2OP3/EAdDrhtCvvE+LEgCrgzCu3LAdjjsS4KsUAd/C75M0IduDMK7fcMaK4S2OP3/OMT7GwK/Cv4sRXZBhPcyOAFE+whCrgzCvHsAdjjx+XB5c1AHfwY+LUlCrhtCvwa+TMoCrhtCvv6+LFrHbgzCvcFywHY47/3lL9AHfwg+MAnHbj7a9P3E+H5FXcS2OP3KDQduOMT9oMdlZSLjJQec3BWChP6JwqptgUT9vWsyuX3ExoOuDMK1cPWwwHY4+HD1sPiQB37/vj2Ugq4MwrrJgrY45cqCpfjE+lsChPd/Ej4sSYdE+sjChPdJAoOpIvtPnb5WncSoPkIE3CgIB33lP1aBfcIBveU+VoFKgYTsPtt/Pj7bvj4BQ73n1QdEqD5+hNwRgoTsEcKDvefVB3u9xYSoPn6E3hGChO4Rwr3w9ogCvefVB3uKB2g+foTdEYKE7RHCvdc2hXZBhNsyOAFE3QhCvefVB3y7BL35OXB5RN8RgoTvEcK92/eJQr3n1Qd7vcWEqD5+hN4RgoTuEcK921XCnugIgoBpvjTA/iIIB37TPuv+033rwUlBvd7+/X7ffv5Be8G90/3svdO+7IF8Qb7fff493v39gUOfaAiCgH3pOMDoCAd94/8OAX7tuP3tgf3jvg46woOfbod9y/aIAp9oHb5Wj4d96TjyR2/2hXZBhPYyOAFE+ghCn2gIgry7BL3WIAKoCAd94/8OAX7tuP3tgf3jvg4BSMG+1L72/tT99sFE/TS3iUKfbod0FcKfaAiCuwmCvcoysjjyMoT5KAgHfeP/DgF+7bj97YH9474OAUjBvtS+9v7U/fbBRPcotomHRPmIwoT3CQKDiUlHQGm+H1uHQ4lJR3a9xYBpvh9bh33CflTIAoljh0Bpvh9bh2W+cshHSUlHd7sAfd+5W4d9wD5VyIdS8Ad6akdraBiHWgdDq1fCvcWaB1Y+DYgCq1fCvcMaB37MfiuIR2tKQrcYh1oHfsD/MUgCvtjJR0B90PjA/gTIB373DX3DPyu+xI1YAoGDvtjwh37XPc5FVEd+2OOHWiuEvdD4xPoVAr7w/c5FdkGE9jI4AUT6Mg2BWUKDvtjJR3e7BLugAr4EyAd+9w19wz8rvsSNWAKBhP0+7D3PRXl7DEG9yQqIh37YyUd3uwS90LlMuMT6FQKE/D7Zfc9FeXsMQYO+2PCHfuy97soCvtjJR3pywH3Q+MD+BMgHfvcNfcM/K77EjVgCgb7uPdIJx37Y/tr0/cj4fiu4RL3Q+OFNB0TcN4KBhPk9648ChPoJwqquAXhBxNw+xL4rvcMBg77YyUd2MuQyxK+ylDGyOPIyhPGVAoT2vvg9zkVdwoT5yMKE9okCg7Ee+H3YOH3rOEBvOf4QVcdDsR74fdg4fes4crLAbzn4y4KxOMDfh38QfjDQh3Ee+H3YOH3rOHK9wxorhK85/hB4xP2fh38PvhBFdkGE+7I4AUT9iEKxCkKt+H3YOH3rOEBvOf4QVcd/BP8uiAKxHvh92Dh96zhzuwBvOf3TeX3Llcd++D4RSIdxHvh92Dh96zh2csBvOfx95TSVx38M/hQJx2mMB3q9RL3XSsKE94sHT/3FBU/Cpv8uxUT7iodKvi7FT8KDsQkHcjyAbzn90X1A38d++j48RVsonapqaKgqql0oG1tdHZtHg5iLArX9RLn4433ALz3ABPoPQoT9vv59xUpHWIsCtnyAefj3/UDPQr7p/cWFWyidqmpoqCqqXSgbW10dm0eDstKCsjyErzn90X19ybgR88TdIA4ChO1ADQKE7SAegr7pfnbLh38CaAiCur1Eoz3IB0T6E0KE/T7R/cUKR38CaAiCuzyEt71KuMT6E0KE/AqjB0O8iQdxvUBvOftKwryUQrt+HgpHbgzCun1AdjjuCsKvUAd/Cf44ikd959UHer1EvfVKwoTfEYKE7xHCvdg9xQpHX2gIgrq9RL3SfcgHckdE/TD9xQpHSUlHdjyAfd29QP4kPkCFeP8ZDX3/gf8D/ypBTD4feH8Ggfv+YUuHftjJR3W9RLf9wB643X3ABPIVAoT9Pu/92opHftjJR3Y8hL3OvUq4xPIVAoT8Ptt92suHcR74fdg4fes4cjyAbzn90X19yZXHfvo+HMuHfhli+H3B+H35eEB+ePjAywdT/w7FSod9577s+Id+Hd74UXh+K7hEtjj9/zj95DjE7xsChN89xL7jOIdRoYKRpcd9wH4aiAKRjMdzssSuuWOLgp0iAoTtgCO+OxCHUYzHc73DJodjvjiIR1GMx3O9wxornQdE7SANR0TtgA1ChO1ADoKE3UATAoTdIA+ChO0gEUKkfhqFdkGE6yAyOAFE7SAIQpGMx3S7BK65aTlweWQVh0TtEA1HRO9ADUKE7SAOgoTdIBLu3rBHhN0QD4KE7RAeh0TvECGHRO2AKT4biUKRpcdovjsKApGMx3dyxK65Zz3lIJWHRO4gDUdE7oANQoTuQA6ChN5AEwKE3iAPgoTuIBFChO8AJz4eScdRvto0/cU10vXVHahdvhf3XQdPdITRkA1HRNHADUKE0aAOgoTDoBUrne3hh4TliBnY1YKJwoTFkCotQWNBhMmQNd1B3WBlaEf92gH9yI+2/sdHhNGQEUKDkYzHbbD1sMSuuW+w9bDpVYdE74gNR0TvoA1ChO+QDoKE35ATAoTfiA+ChO+IEUKvvivFVa1Y78eE78gvrWzwL9htVgfE74gV2FhVx/DjBWenJ2gHhO/IJ+ceXh3enl3HxO+IHZ6nZ8fDkYzHcwmCrrldCoKWlYdE7QgNR0TtIA1ChO0QDoKE3RATAoTdCA+ChO0IHodE6ogxfd/Jh0TtQAjChOqICQKE7Qgovxq4B0O97N/00Pd9zzX9ybdErrl957/AB2AAP//4oAA7hN6w/gKFeEK2L1gM4wf+y5vBTkKYR0TfPWN0MCe6IyNGC2v2lP1G/Hlye+qHy+SBVRzWGtTGxN6rgo3R2dNYR/MaEisNhv7AjVIJnYfE7rc+30V18uK2ZoeLx0+h2i3tBr4A/dB9wIdXXkd9zx3EtvZPf8AT4AA//+wgADh97zlE7PbIB0Tc/1aBxN12QYTtY7VBVaoy2rVG/ce4fb3Pvc+Nfb7Hh8Ts0RNbFpuH/eMBxO5g/xR5R0OLyMdAbrlA0QKDi8jHc73FgG65QNECvs795UgCi8jHc73DAG65QNECvul+A0hHS9GHabbUHb4at0SuuX3UcMTT8YK+zDdI/cUfB8T72hlqAqipfSS4tSb9wUZMJEFE1f2HR8TT8rEY0eWHw4v5goT6EQK+6L3lRXZBhPYyOAFE+ghCi8jHdLsAbrl9wDlA0QK+0T3mSIdXXkd9zx3Errl97zhPdkTvModE3wtChO6vwoOWfcNHRPwvAr3AevD97X7FfdH0KQYdMssaVa6Q6wrlRl2PMOGvHu0chkgZaJKBRPo9yXAu1WlQ4w1GRPw0wrWhchfmD+C+xFBOSyTMpRTzZXvCA73B3kdzvAm9xYSuuX3vOE92RO2yh0Tdi0KE7W/Cvg29+wVzgYTrub3FgUsBg6SeR201z/3ExK65fdU91I14T3ZE60A+JsgHTUGE7UAWAcTtgAjBhOuAD8HE60A8/sN6h0fE6yA1cuswKgfE2yAjkEFE20A2fjbygYTtQDXTAf8EvweFfcOxtjoHhOsgOjGPvsO+wxQQC4fE7UALlDW9wwfDj4rHX0dDj6OCvtB97kgCj4rHcz3DH0d+6v4MSEdPisdzCgduuYT9Lr3nRVVHfHlye+qHi+SBVRzWGtTG64KTgof6HAd+6j3uRXZBhPsyOAFE/QhCj4rHdDsAbrmq+XB5QNJHfuV970lCj4rHdDsAbrm9uUDSR37Sve9Ih0+jgr7l/g7KAo+Kx3byxK65qP3lBP4SR0T/Pud98gnHT77a9P3F933PNf3Jt0Suubr0kT3OxP6ywoekgZwbQWEHRP8JwqquNCiwsCi1RltHRP6Tgof6HAdDj4rHcrLkMsSuuZ7yvdmyhPlywrx5cnvqh5tHU4KHxPr1vfqJh0T9SMKE+skChPjnfu59wIdPn/d9ybX9zzdAfhC5gP4nfedFfc9K/cA+yclMU0nbB7nhAXCo76rwxvlwU0hkx/8EwaMZAX7UpT0QPcIG/cn6/cA9z0f/BBaFfezBi99VlU4G0xQr/cCfB8OX/tY4fi+4WYKk2UdDl/7WOH4vuHa9wxmCpNlHfL5ZSEd+4qgdvha1/PXAfcXwx0OXD0dYwoT9gBQChPuAPhyBxPsgDkGE/SAQx0T9gBVChP1AE4dE/YARx0OXD0d7ssSuuWSLgqP4TbgOd0T9kBQChPuQPhyBxPuEDkGE/YQQx0T9kBVChP2IE4dE/ZARx0T9YCS+FpCHVw9He73DGMKE/cAUAoT7wD4cgcT7kA5BhP2QEMdE/cAVQoT9oBOHRP3AEcdkvhQIR1cPR3u9wxormMKE/WAUAoT7YD4cgcT7SA5BhP1IEMdE/WAVQoT9UBOHRP1gEcdlffYFdkGE/OAyOAFE/WAIQpcPR33BvcCErrl8fcB35kd8ffn0ApcPR3y7BK65fPl8Jkd8/fcIh1cPR33BssSuuWg95SdmB2g9+cnHYD3Hx33Ddf3Ld1/d2MKE/sAUAr3R8PXUwcT9wD3cwcT9kA5BhP6QEMdE/sAVQoT+oDhwlEskR/7Wz/3VQY/e1deQhsT+wBHHQ5MoHb4YN33PHcB2+H3juEDqgoOQqB2+GDdtNc/9xMS2+E191v3HeET2tsgHRPqWFQHE9o/wvzbzh33DwcT1vcFBhPm1wcT6vsFBhPavgcOTKB2+GDd9zw+Hdvh947hE/aqCvtK2hXZBhPuyOAFE/YhCvwjxB38I0MKAdvhA9v4phX8puH4pgcO/CPmHTzaIAr8I6B2+KY+HdvhE+hPHftK2hXZBhPYyOAFE+ghCvwjQwry7BKO5X7heOUT6E8dE/T7N94lCvwjxB38I+Yd+zlXCvso+yrX6nb4pnfy7BLZ5TPh9zflM+ET9U8dE/kz3hXl7DEG9y398N8d7flDIh38I0MK9wbLAdvhA9v4phX8puH4pgf7P+knHfwj+2vT9zh2+KZ38uwSrTQd+w/lM+ET8X8KBxP0pzwKE/gnChPxqrgF+KYHE/Iz3iId/CNDCuwmCl7KyeHJyhPk2/imFfym4fimBxPc+2faJh0T5iMKE9wkCg78FDgd8uwS6OUz0R0z+PwiHfwUOB3THQ78FDgd7vcW0x08+PggCvwU+yrX+PA+HerVHftK+PgV2QYT2MjgBRPoIQpVoJ4KDlVDCvdcd+73DKQK+01aHVUpCtyeCq/+GCAK+/2L1/kOd7oKDvv9i9f5Dnfu9xa6CjvaIAr7f4vX+KjxJfcWEtvhE9CKHbLkCvv9sh37n4vX+Q53Afcy4QP3MiAd+8IHPWerRrmgBftwB021Yckex9ddBnWBlaEf95QH6bZr0E1uBfebBw73faB2+GbXf3dSHfd64fd64ROuWQoTzui7w9zKsVMuHvvR4ffRB+q6wd3LsFUsHvvR4ffpB/cUTdQgOFRkRHQe0XRUsz4bE9ZCVWdLch8TtojjBQ5MoHb4Ztd/d1Id947hE6xZChPMcwoT1GgKE7SI5gUOTKB2+GbXf3fu9xaXCuzaIApMoHb4Ztd/d+73DJcKglodTKMdTKB2+GbXf3fsy5DLUh1gKgpg4ROyQFkKE9JAcwoT1EBoChO0QIjmBRPJQGjaJh0T0oAjChPJQCQKDkz7Ktfqdvhm1393Uh33juET1lkKE+biCvvYB2JzcWQeOD/cBujFw+Mf9+8H9wRR5PsNHhPqaAoT2ojmBQ5Kph1Kawr3CffsIApK5gr3xuUT7EodmffsFdkGE9zI4AUT7CEKSiMd0uwBuuWs5cHlsuUDSh2s9/AlCkprCqr4bigKSmsKyvfsax1KIx3dyxK65aT3lKTlE/RKHRP8pPf7Jx08Ix0BuuX3xuUDjR3TeshruR/d7QUyBmNcBalkWZxRG04KRJxOql0fOCgF5Aa0uwVssr56xRv7LfepFfcOw9TssKqAd6Me+3b7ogV+qIWvtBrG+zcV93j3owWXbZJnYRr7DlNCKmVslqByHg5KIx3MJgq65XwqCnzlE+mNHfc9K/cA+ydOClUdHxPV+zz5ASYdE+ojChPVJAoT6Zr77BX3DsPU7OzDQvsO+w5TQioqU9T3Dh4O99MrHQG65ffG5gP3tn8V4tCxzbUfSbXQZeIb8eXJ76ofbR00RmVJYR/NYUaxNBu+HfgjcB0OXe4K29c//wBPgAD//7CAAOH3uucT09v7KhXh93EGVKjCb9Qb9zPR9xj3JfclRfcY+zMfE9U+U2tSbh8T5YjYBRPjPQYT2df7nRXtt+z3APcBtisoKGAr+wH7AF/s7R4OXfsVdvce3fge2fc8dxLb2T3j97rlE/bbIB398OP3aAdcqsBw1xv3LtH3GPcl9yVF9xj7Lj9VcFltH/eJBxP6gfxRFfG27PcB9wK1KyQoYSv7AvsBYOztHg5d7gq65/e64f//sIAA/wBPgAA/1xPc+Jv7KhUT7Pk8BxPqPQYT2og+BcRuU6s+G/szRfsY+yX7JdH7GPczHxPc1MKnwqgf+3EH+7r4MxXutuv3AR4T2fcAtyopKV8q+wAfE9z7AWDr7h8O+5qgdvha1/cPHRPQzwoT4EZkbUp6H4jqBQ77mqB2+FrX2vcWbwqQ2iAK+5qgdvha19r3DG8KJlod+5opCtx2+FrXbwr7Ff1kIAr7Bn+NCg77BiMdzvcWAcfl94jlA/gU+AIV5ZEF8no0ziEb+w45SyUj83DrdR/HfdWFTBpVSHtZPFmzyoAeMYUF+wKT60b3Ehvv9rfyeB0fcR3FxmhQlx77L/eHIAr8XdId+wYjHc73DAHH5feI5QP4FPgCFeWRBfJ6NM4hG/sOOUslI/Nw63Ufx33VhUwaVUh7WTxZs8qAHjGFBfsCk+tG9xIb7/a38ngdH3EdxcZoUJce+5n3/yEd+wZGHV73LFF2+GndEsfl9y7DreUTT4DbHRNXgM4KE0+AkinXSvR+CBPvgGhkogrsjvC37xp4HR5xHR4TT4DFxmhQlx8O+wYjHc4oHcfl94jlE+yRCvuW94cV2QYT3MjgBRPsIQr7BikKu40K+2j8wCAKVd3/AP6AAN3/AN2AABL3Os5I2BPQ973dFd/Zs9/nO7QviR9figXeB7eKBd6JusTPGsFVuEYeE+BAVl0vH/yKNfiKB/cg59v3DvcQ4kP7AUNlTkZ0HuN0ykgrGvsY+wxI+xgeS90GDvuMi7YdDvuMi9f3PNf3GtcB9xjhA/YK+xo+P9gl9wUd8fci1/si9xr3Itf7IvcMBw77UzIK2bVh9xYS9xjhE+j3GPkeFfsMPj/Y+8wHMMBY6x7sHbRhFc4GE9jm9xYFLAYO+4xGHbDX+A7XEvcY4b/DE372CvvMB0apXcN5HldSp2YFtpWse2saE/6PHRN+YWQFE/5dCq2xBYqRkYuRG9jXPgZhdqG3H/fM9yLX+yL3DAcO+4wpCse2HTv93CAKRjsKEtvh94jhOd0TeDwdE7hTChO0WgoTdDQHDkaAHfs6+PUgCkY7Cu7LEtvhcy4Ke4Ed+6T5dxVCyVLbHhO2ANvJxNQf8AoORjsK7vcMaK4S2+H3iOE53RN2PB0TtlMKE7VaChN1NAf7ofj1FdkGE67I4AUTtiEKRjsK8uwS2+GJ5cHll4Ed+474+RXl7DEGE7sA9yQqIh1GgB37kPl3KApGgB37cPj1ax1GOwr3BssS2+GB95SJ4TndE3o8HRO6UwoTudDIqs+nHxN5NAcTtPuW+QQV95TL+5QGDkb7a9P3F9dgdvimdxLb4fdaNB37DeE53RPZADwdKVRXOj9rv+0e99A1++kH+wTFMvcKHhPYgFoKE7iANAcTugCjBmVhVgoT3AAnCg5GOwrWw9bDEtvho8PWw6zhOd0TfIA8HRO8gFMKE7xAWgoTf0A0B/t0+TpSCkY7CuwmCtvhWb1ZyvdmymHhOd0TdEA8HRO0QFMKE7QgWgoTaiA0B/u++PUVE6lAdwoTtIAjChOqQHYdE2ogT2RYOx8OIIvlRnb4pncSofiCE3D4mPimFS8GE7D7L/xM+y/4TAUvBvdV/KYF9wAGDvdDSwoSofmcE7BLHRPQTB0O90NLCu73FhKh+ZwTuEsdE9hMHfti+JYgCvdDSwruKB2h+ZwTtEsdE9RMHfvJ+JYV2QYTrMjgBRO0IQr3Q0sK8uwS97flweUTvEsdE9xMHfu2+JolCvdDSwru9xYSofmcE7hLHRPYTB37uPkYKApRQwoBuviBA/g9+KYV+xf7VPsY91QFIgb3TPuW+1b7pAX0Bvci92H3IfthBfQG+1T3o/dL95cFDiA4HQGh+IJqHQ4grB33C9ogCiD7Ktf48D4dofiCE+ih+KYV91X8nAWoBnhaBXKBfIFyG04/0QbHsaXEnx/3avjpBTAG+y38Svsy+EoFm9oV2QYT2MjgBRPoIQogOB3y7AH3KeXB5Wodrt4lCiCsHaxXCiA4HewmCvAqChPstR0T3H7aJh0T7CMKE9wkCg4sMgpyCg4sMgra9xZyCuX4qRVRHSwyCtr3DHIKe/khIR0sMgre7AH3e+XCCtz4rSId+/2yHUyjHTgyHRK15fecQgoTsjcdE7QvHROyTR0TckEdE7g2HROyOQoOOIcK91L4aCAKODIdzssSteWFLgp9mx3f+OpCHTgyHc73DJ0d3/jgIR04Mh3OKB215fecQgoTtIA3HRO1AC8dE7SAPodot7QaMRZhHd6Ny7ehvAgTdICNOAXZ99QG5B0TtgA2HRO0gDkK4vhoFdkGE6yAyOAFE7SAIQo4Mh3S7BK15ZvlweWZQgoTvIA3HS8dPodot7QaMRZhHRO0QN6Ny7ehvAgTdEBBHRO1ADYdE7yAOQoTtkD1+GwlCjiHCvP46igKODId3csSteWT95SLQgoTuIA3HRO5AC8dE7iAPodot7QaMRZhHd6Ny7ehvAgTeIBBHRO6ADYdE7iAOQoTvADt+HcnHTj7a9P3F9Nkdvhg3RK15fduNB37DUIKE1hANx0TWIAvHRNYQE0dEzhAjTgFE7oAnzwKE9wAJwoTWECquAX31Af3KDXV+xT7AjVIJnYe4QoTWQA2HRNYQDkKDjgyHbbD1sMSteW1w9bDrkIKE78gNx0Tv0AvHRO/IE0dE38gQR0Tv4A2HRO/IDkK9xj4rVIKODIdzCYKteVrKgpjQgoTtCA3HRO0QC8dE7QgTR0TdCBBHRO0gDYdE7QgOQoTqiDF+GgmHRO1ACMKE6ogJAoOXTAKErrl97wvChOpMQoTrDUGE5wtHROaMR0TWS0KE5k2Cg5dnB33CPfsIApdMArOyxK65ZUuCo2KCpX4bkIdXTAKzvcMErrl97wvChOsgDEKE64ANQYTngAtHROdADEdE1yALQoTnIA2CpX4ZCEdXTAKzigduuX3vC8KE6pAMQoTqwA1BhObAC0dE5qAMR0TWkAtChOaQDYKmPfsFdkGE5ZAyOAFE5pAIQpdMArS7BK65avlweWpLwoTryAxChOvgDUGE5+ALR0Tn0AxHRNfIC0KE58gNgqr9/AlCl2cHan4bigKXTAK3csSuuWj95SbLwoTrEAxChOtADUGE50ALR0TnIAxHRNcQC0KE5xANgoTnkCj9/snHV37a9P3F91advhkzUnZErrl947Sci8KE1RAMQoTVQA1BhNNAC0dE0yAMR0TLECOQQUTrgCfPAonChMsQKq4BRNMQDYKDl0wCrbD1sMSuuXFw9bDvi8KE6+QMQoTr8A1BhOfwC0dE5+gMR0TX5AtChOfkDYKxfgxUgpdMArMJgq65XsqCnMvChOqEDEKE6pANQYTmkAtHROaIDEdE1UQLQr8Ivj1Jh0TmoAjChOVEHYdE1UQT2RYOx8TmhCb++zHCg78C6DxHQ78C6DZCvcJHTzaIAr7e6B2+PTxJfcWEtvhE9DbIB39WuH5Wge25Ar8CykK3PEd+x/+GCAK+5+gIgoB9zHhA/cxIB37wwc+aKtGuKAF+9jh9/8H6rdr0ExuBfebBw5GMx3K9RK65ZUrCoCIChO+AJX4mxU/CvcxFm2idKqpo6KpqnOhbWx0dWweDi8jHczyAbrl7/UDRAr7TPfHLh0+Kx3I9RK65pwrChP6SR0T/vuk9+opHT4rHcryAbrm7vUDSR37UvfrLh1cPR3s8hK65ev16Jgd6/gKLh38I7Md/CNDCur1En/3AHvhdvcAE+hPHRP0+0b3FCkd/COzHfso+yrX6nb4pnfs8hLR9Svh9y/1K+ET9U8dE/nJCvc1/b3fHeX5cS4d/CP7a9P3OHb4pnfs8hKtNB37F/Ur4RPxfwoHE/SnPAoT+CcKE/GquAX4pgcT8skKDvwUOB3s8hLg9SvRHSv5Ki4dSiMdyvUSuuWdKwqi5RPySh0T/p34HSkdRjsK6vUS2+F69wC89wCHgR37nfkmFT8KE7oA9zEWPwoO90NLCur1EveoKwoTvEsdE9xMHfvF+McpHSA4Her1Afca9wC89wBqHZ/3FCkdLDIK2PIB93P1A/h5+EcV6vw2P/faB/vk+/0FLvhI1/vrB9T42y4dODIdyvUSteWMKwqJmx3m+JkVPwr3MRZtonSqqaOiqapzoW1sdHVsHg5dMArK9RK65ZwrCpmKCpz4HSkdtqB2+FrX89cB9xfh91/hA/cX+McVakQ/0vxa4fha91/ACmr7X6wHt6OmrR7d1zkGKF5RMh8OwzIKP/dYEvcY4fdu4RO49xj5HhUT2PsMPj/YzQr3bs0K9yLX+yIHE7j3DDUHE9j7DPtuBxO49wwHDougdvha197sP9cS9xfh95jlM+ET2vcX+McVakQ/0sAKE+z37r0V5QYT3OwxBxPajf1aFeH4pjUGDp0yCvPXAfcX4feGwx333PxfFU21Yckex9ddBnWBlaEf+O41Bw5GhgpKph2moHb5DdgBoPkKA/fk+Q0V92/9DQXrBvcUHfuU/VoF6wYO6ovh+L7hErznMfeh7/ehMecT5PgG+RQV9yfdJPtB+zA8+w4nHxPoNfeh4fsWBxPk3cS97fcPGvdv+xD3I/tZ+1n7EPsj+2/7D70p3VIeE9T7FjX3oeEGE+QnPPcO9zD3Qd3y9ycfDkOL1/jC1wGg+KcD+JoWrddoBmeAnq59H/tE+FIF6WZnszcbXD/BBq+WeGiZH6dD+1r8kAXlBvcs+CLz+5wFKrGqZt0bDpoyCgH3NuH3T+EDwvimFT/2/Frh+Fr3T/vHBzK4UfcBHqvXawZfc6a3H/fH8dcHDmt73f8BD4AA2/8A4oAA3RK95UnlE/D4x+MVVNMFU1s2ZUcbJUrC3N/MwfGJH8GKBdwHVYoFE+hJij6s5xrKwrPjyNRnW7UexNEFw1orszMb+x0rP/sBO7VX33IfE/AoblhHLxr7EPI09y7u9LbIvx4OpiQdAcHn+BDnA/fklgr7mKB2+KHW9wJ3EvdP40bQE+js9yEd/KHj+VoGE+hGBj5qaj8eDnGL4fi+4QHH9wH3uOcD1Koda+AKveb3xudI5hPo98GLCoKgdvcl4fhzdwH4NeMD+I2xCnh74ffT3/cr4QH4bucD+JqVCnZ74ffc4fcw4RLH5THr99DnE/T4aYwKT6B2+QThAfdn5wOzyx1ie+H3nOP3buESs/MK98KJCnZ74fcw4ffc4RLH5/fQ6zHlE/THoR33KMf3vMcB96DJ90bJA/g39ygV3wr7E8U76B/8CPdmFYkd+2D7Ofc592Ee96+IFaAK/wGagABpChL4Hs9ZvRPAXAr7Cvg6FZEdE6BZBlJra1IeE8ByBg73NMf3rccB96/W9w5pHfsZ90AVXR1sHWMdDvcox/cYxfbHEveqQQoT9FwK+x73pBWxHXJRBhP0NwoO94DHAfg8aR37RPeMFfdMQMzWt8df95FYBvta+5oFix33Jcf3McXRxwH4e2kd+xv3oG4K9yjH9zTH1scS963GUND3HMwT7FwK+xv37OMKE/TWHRPszB34fccB9/ppHfse+InUHfcox/cZxPTHEvenQAoT8vg0fxV1Hfdfewr3Ofs5+1/7Yfs5+zn7YB/7IfeqFVAdE+w6HRPyPx1IChPsOx33KMfWx/c0xxL3rX4K+DR/FXUd9197Cvc5+zn7X/th+zn7OftgH/sb95IVwR14Ch4T+PcXHRP0lh1/1uDH97zH4tYButb3I8n3Rsn3Izkd9yOIFfsTxTvo6MXb9xP3FFHcLi5ROvsUHskW66zAw56bhYCYHvsU+2EFhZ+IpKcatPsWFfcU92IFkXaOcW4aLWpWU3h7kZZ+Hg5/1v8BW4AAaQr3U9YSutb3pM9ZvfeM1hP6Twr3RL8VkR0T9kkKE/pyBg5/1uzH963H5dYButb3Ntb3Dsz3ODkd9zb7WhVdHWwdYx0Of9bgx/cYxfbH4dYSutb3MEEK9y/WE/7ATwr3MClcHRP/QHAKE/7ANwoOf9b3Qcf399YButb3wsz3cTkd9wr7DhX3TEDM1rfHX/eRWAb7WvuaBd+UFe/3GQX7GQcOf9bdx/cxxdHH8NYButb4Acz3Mjkd9zMlbgp/1uDH9zTH1sfj1hK61vczxlDQ9xzM9zPWE/3ATwr3M3HjChP+wNYdE/3AzB1/1vg+x/HWAbrW94DM97M5Hfcw9xfUHX/W4Mf3GcT0x+PWErrW9y1ACvct1hP+YE8K9y0vFVAdE/2gOh0T/mA/HUgKE/2gOx1/1uDH1sf3NMfj1hK61vczzPcdz1HF9zPWE/9ATwr3M/sIFU6dvWrCG+XE5Pci7GDiLj9RVTQ3wVTQHxP+wLKpm6afH0CCamBcG3gKHhP/QPcXHRP+wJYdpiQdAcHn+BDnA/fkowqvq4J5pR77jPxTBXS6fsrZGuL7jxX3jvhZBadbmkc1GvtKRyX7DmJplqFvHg77Zovh+EvW9wJ3EvdN40bQE+jqsgpeJB0Bn+f4EOcD98KWCl6L4fhL1vcCdxL3suNG0BPo91iyCl6L4fi+4QHG9wH3uOcD06odXuAKteb3xudI5hPo97mLCl6gdvcl4fhzdwH4M+MD+IuxCl574ffT3/cr4QH4a+cD+JeVCl574ffc4fcw4RLD5THr99DnE/T4ZYwKXqB2+QThAfd65wPGyx1ee+H3nOP3buESpfMK97SJCl574fcw4ffc4RLD5/fQ6zHlE/TDoR1eoCIKAZj40gP4318dDvffi8f3rcf/AKuAAFsd+FbW9w7ME/SAWB0T7ID4GAcT6oBJChPtgHIG+Pr9AhVdHWwdYx0O99F7x3R290TF9sf/AKuAAFsd+DtBChN9UFgdE7tQ+BgHE7rQSQoTu1ByBvjf/KJcHRO7YHAKE7tQNwoO98l7x3R290TF5sdfx/edx3t3ErzW9w7M99FBChNz0PmEXx37avfZFV0dE7XQbB0Tc9BjHRO10PjX+3lcHROt4HAKE7XQNwoO98yL9xtPx/8BtYAAWx343swTtVgdE634GAcTq0kKE21yBvjK/LcV90wGE61AzAcTbda3BxOtx1/3kVgHE237WvuaBROtix333Iv3G0/H90LH9xjaCvh9zBOrYPmcXx37gvg5XB0TraC2ChO1oHJyb2ceclEGE3VgNwr4mfvxFfdMBhOtYEDMBxNtYNa3BxOtYMdf95FYBxNtYPta+5oFE61gix33xnvHdHb3XcXRx/8At4AAWx35BMwTfUBYHRO7QPgYBxO6wEkKE7tAcgb42vyjbgr3z3sd9Mf/AK2AAFsd+DRAChN9SFgdE7tI+BgHE7rISQoTu0hyBvjY/JwVUB0TuzA6HRO7SD8dSAoTuzA7Hfffex3Wx23H8doK99NAChNy2fmcXx37gvg5XB0Ts2m2ChO1aXJyb2ceclEGE7VZNwr4p/vWFVAdE6tWOh0TtVk/HROzWUgKE6tWOx332nsd08dwx/cQxdHHEveTzPfUQAoTt5D5lyAdNgYTd5DyCvt9+DWbCvii+9IVE7eQUB0Tr2A6HRN3kD8dE7eQSAoTr2A7Hfi/ex30x/ePxxL3isz4UUAKE75A+gsgHTYGE35A8gr7fPke2R344vz0FRO+QFAdE72AOh0TfkA/HRO+QEgKE72AOx1efPcLHXyTCl6gdv8A+YAAaQoS96bPWb0T4Pdf97++Cl6Lx/etxwH3NNb3DswD9zn3p5kKXnvH9xjF9scS9zRBChP497z3fhVyUQYT9DcKSogFsR0OXov3G0/HEvfQzBOg+BH4GBVYBhNg+1r7mgVY90wHE6BAzAcTYNa3BxOgx18H+zkW5Qpee/cRHfgZmgpee8f3NMfWxxL3OcZQ0PcczBPs+Af3v6UdXp9299zHAfeKzAP3OvgX1x1ee8f3GcT0xxL3M8xdzPcGzF3ME/L3wHsVkB0fE+w6HRPyPx1CyF7bHj/3DhW1qqi4uKpuYWVsc15ebKOxHhPsOx1ee8fWx/c0xxL3PH4K93zfkgpe98r3Cx33ypMKXv8CPIAAaQrkdxL3ps9ZvRPg91/5Ar4KXvfZx/etxwH3NNb3DswD9zn47JkKXvfJx/cYxXJ39yzHEvc0QQoT3Pe8+MMVclEGE9o3CkqIBfcmHR8TurtouF2ZHhO8tpiisbAaxVa5RkxUYVWDHsyHBaGOop2uG6ukc20fE9xycm9nHg5e+CLH95F3AffQzAP4EflbFVgG+1r7mgVY90xAzNa3x18H+zkW5Qpe98b3ER35W5oKXvfLx/c0x9bHEvc5xlDQ9xzME+z4B/kGpR1e+R7HAfeKzAP3Ovla1x1e98vH9xmra8Ryd/cqxxL3M0AKE5yA98D3yxWQHR8TmwA6HROcgD8dQshe2x4TzIA/9w7IHROrADsdXvfLx9bH9zTHEvc8fgr3fPgvkgr8Hw77t/sD1PcG1AG61fcE1QP3RvsDFdLFxdLTUcZEQ1BQQ0TGUdMfUvcVFaqlpqqqo3BsbHNybGxxpKoeDhwG20gdHAjkAxwJIm8dHPe0OxwISmEKHASDSB0cBowDHAbKbx0c+gw7HAXyYQr4v0gd+sgDHARybx3+MDv6LmEK/E6L9wIBun0KDvxOtQr79Iv3AveH9wIB5/cBA+f3AnkK94dYCvv09xsd5/cBA+f4Y3kK/GNxCkOL9wIBuvcB1vcB2H0K1vsCFfcB9wL7AQb3TvsCWAr8QLAd/ED7IXb47PcCEsH3ASzjE9DP3R19+AZYCj2iHT37NuH4pvcCErrn6vcBJuPt5xPs9973/BUzBkZ6aVVmHjRQZlRGGvsJ7Tn3IPcQ7uz3FZceL5EFNYBTTzobNVO6zYwfzbqevrYe0sWhvOMaE/Ar6VgK/E73hvcTHff0ZAoO+/D3Q/dbAbr3XwP3KfdDFcS3tMXFX7VSUV9hUVG3YsUfDvtlrh37ofet91wBuveuA/dh+HUVLAZM+1wFzgbEFs4G5vdcBSwGDvs7nh37Nt4d+zu7CoiECvtlrh33negKut0K+NqDCvs7uwr8Tov3AveH9wIBun0K+wH3h1gK/E61CvwFsB37O54d9xGFCvxOh/cTHfVkCg49oh37tfhT95uLdxK64+HjE3D3b8Ud/GH4U/ebi3cSuuUTYLogHT8HE6CZ+08FyQaZ908F1wcO/E73Gx269wEDuvhjeQr8Y3EK+zbeHfxHzx377YX3BveH9wYB5/cIA/cqvR377GQd94T3BhLn9wj7APcBE/D3KrgdS4X3BgG69wjR9wjQ9wgD9IVeHfcUxHUK900WaqRzrKyko6yscqNqanJzah4O/EeYCvxH+yF2+O73BhK69wj7AeMT0MHdHYT4QZ0KPZ8dPfs24fio9wYSuufb9wgw3+/nE6z33Pf8FTcGVHhbWWkeME1mVEYa+wntOfcg9xDu7PcVlx4vkQU1gFNPOhs1U7rNjB/Nu6DCuB7KwKLL1RoT9PsB9y0Vcx38R/eE9wYBuvcIA/T3hF4dDjrUCvxHhfcG94f3BgG69wgD9L0d/AWYCvxHzx09nx38RmQd94T3BhK69wj7APcBE/D0uB37b9EK+2nRClz3kNsBuviMA7r34BU7+IzbBw73ofeQ2wG6+cgDuvfgFTv5yNsHDjrUCvdq93/3UAG6+ZED+Y74KhW9SQVFQkFoQBtceZHD+wMfolxVmmQbR1dwSlEfWtAF3+XDptsbtcV8drQfUPcHmoa5G8i2oMnPHw7W98vbAbr5BgO6+BsVO/kG2wcO++CmCvvgpQr7cY8K+3GkHfvIpwr7yLcd+7J3Hfed2B0O+7J3HfedA/cVygoO+6hM+gwBuvcgA/fW+c0V+6f+DPenBvtI97OL98/3SPeyCA77qEz6DAH3SvcgA/fW+c0V+6cG90j7sov7z/tI+7MI96cGDvtxjwr7caQd+4z5ftsBut0Duvd9Fd34lfdx2/vDBg77jCTbAfeg3QP38vh+FTn8lftxO/fDBg77C3cd+ETYHSn8ZxX3S/xoBd0G+0v4aPdL+GcFOQYO+wt3HfhEA/e8ygr8RPxoFd0G90v4aPtL+GcFOQb3S/xnBQ77ivsm+ngBut0D97355hX7jvtzBfy3B/eQ+3bAxftz910F+HUH93H3WgUO+4r7Jvp4Afei3QPx+eYVVlH3cftaBfx1B/tz+13AUfeQ93YF+LcHDvuM932z+B2z27MBurPbs/KzA7r3fRX3NPhF9yP3NPvDBrP8vRX4lfdzO/sj/EUHDvuMJLPbs/gdswG6s/Kz27MD9/L4fhX7NPxF+yP7NPfDBvubsxXb9yP4Rdv8lQcO+7JMs/m8swG6s72zA/fM+c0V+53+DPedBvtI97OL98/3SPeyCPt1/eQV+bz3Lgf7H/ugi/uj9x/7oQgO+7JMs/m8swH3SrO9swP3zPnNFfudBvdI+7KL+8/7SPuzCPedBvtWsxX3H/ehi/ej+x/3oAj3Lv28Bg77yKcK+8i3Hfvgpgr74KUK/EpkHQG89wED9zIWXgoO+6P7Gnb3L/cZHRZeCvtv9y9xCvuj9x0dxfcBA7z4zfcGHfcC+53QCvuj+Oz3GR347BX3AvsB+wK0B2T7LwW9Bvtv9y8VtAZk+y8FvQbE9y8F9wL7AQcO/Er3HR0DvPjN9R38SrcKINf4JAG6+FC4CmP7ghX3Hfs2BfQG+z73XPc+91wFIgb7Hfs2BQ4g1/gkAbr4UAP39uEd/FD7ghX0Bvcd9zYF1wf7Hfc2BSIG9z77XAUO+8nX+CQBuveGuAoO+8nX+CQBuveGA/cs4R0O+7H4U/ebi3cSvOPh4xNw93HFHfxd+FP3m4t3ErzlE2C8+VoVPwcToJn7TwXJBpn3TwXXBw77ForX+A/X89cB/wDogAD/AFKAAAPHFsSK5om9upXkGa/31QX3Pdf7NQaRvQWuj6Cerxvp1gY0jDCMWV2BMhmGXQU0P9oGZ/vZBWiHdnhnG0oGDofvCt7X9wrnTecT+ucW9z8w1+YG9yiM59n3DhrnUMkqlx4T/NeavcPWGvcHQND7G5Ye7D8s+z8H4/0EFfd83vt8Bzj30hX3cN77cAcT+tf70hX3fAfqisBhQRpFUl8wih4T/PfUBPdrB9eCtWVOGk9hZj+BHg74v0gd+sh0Cvou2/4wfAocBINIHRwGjHQKHAXy2xz6DHwKHAbbSB0cCOR0ChwIStsc97R8ChwEgkgdHAaLAxwGyW8dHPqlBvej96MF+wUG+8r7y3Id+6L3owUcBVdhCn/W94PQtu/3HdYButb3JfDy8PceOR3q+y8V1AbLo7muxhvGuWhLox/UBvJzPcwnGyc9SiRzH733mhV2CvdgFnYKDn/W7tD3S+/3HdYButb3JfDy8PceOR3cgxX7AJvlO/cCG/cC5dv3AJsfRAZGe1BZRRtFUL3Qex+E9wcVdgr3YBZvonSnpqKip6Z0oXBvdHVwHg73oegKvN0K+NyDCnSEClegdvkO1wH3qtfS1wP4iSAd+3MG+yktPfsQ+xDpPfcpH/vG1/kO0v0O1wcONPsB3fkG3RLX5TTl94HlNOUT1Pgu+I0V45EF9wF8+wXINRv7BC5UJFypaMdxHxPoSm9vXlQaP79j9yhoHul0r29jGl9db0RAU7LLgR4yhQUile5B9w0b8vO87cB7tkuqHxPUw6GmsL0a51m0+y+yHimlcJ20GrO4p8fZu2dRlR4T5PuI+2YVs7inx8Hfd01fXHFEHi2VbKy0Gg73U3/UQvcw9zn/AGaAAP8AnIAA9zJC1BK81UH3PviC1RNz+Dr4zBXz0VAslB9AhgXCg2KuUBs8WlcxMLxW2sm1sMmTH9aFBSeBRU0gG/sRPdz3GPcY2dr3ER8TjfwJ+2cV+2D3Ofs592D3YHsK+zn3Oftg+2D7Ofs5+2Ae1Rb3NvcZ9xr3Nvc19xr7Gvs2+zb7Gvsa+zX7NvsZ9xr3Nh4OYOkK6r/xvuXEA/e49ygdyyEFxgZE9wUFsZWhp7EawGCrRB77h60d9yfcCmDpCvcCv/G+1sQD98f3KB3Ts6nAv1+sRR/7lq0d9zbcCveJ9/vJ93zEAfdfx/c0x/eTxwPnIB1S9wP7usf3uvcDxAe8+/MVx/eDBuX7gwXXBuT3gQX7gcf38zoHIfu1Ife1BTkGDvuN+BjV9y7VAbrW9yzWA/da+BgV3s/P3t5Hzzg4R0c4OM9H3h8/9ysVta2utbWtaGFhaWhhYWmutR4O/B1ZHfui+PX3FgG6962HHcMWUR38EfcMHf3w2/nwBw78EfcMHfv32/f3Bzv98BXb9/c7Bg5BoHb4Wukd/Frb+Fr3KR1B+xV29zjX+ADpHfwA+y4/9y77ONv3OPct1/st+AD3KR34U4vbyNn3VNn19weLdxLn4/gP48rYTveWT9cT70BEHRP3QPjnB/fn/OcF9xT5WjP88gb77fjyBfiE/B8VIMNI5OTDzvb2U84yMlNIIB4T7oCb+88V95bb+5YGE+9AyPd/Fcmjrbe3pGlNTXJpX19zrckeDl73ZLzpva+86b0B2r73Xr4D9+D4JRX73vcYHQf8XSYV9xgd+2AGDvdo93z3INv3RgH4NuXb9yAD9+b3fBX4Gvgi+yD7lvuO9wMG+0n7SfdJ+0oF+7X3ShX4BfgFBftv5feW98D8wvwa+3EHDl73870B+Ca+A/i4+CUV+4VZ6vusvves6gb8hPerFfD73gXBBvD33gVVBkH7j0H3jwUOLzD3NU52qnb4s3cSuuXY/wBLgAD//+uAANcTOvg59/QV5ZF/60TLNJ4Zk+cFPwaDMwX7GX82IvszGvsfzCn1bR4TnIMyBdcGE1yS2vcDjOrVnPcLGTCRBROagERXYU2GrfgTGBM6t32uaJNXCPuwNBX3ALfQ2JoeavwKBVOma8rnGg5R7NX3kNW4dwHo1feQ1QP3uewVtbGYoasf2jzBwTzaBaCrmLG0GrR+snarHtraVcE8PAWga2SYYhtiZX52ax882lVV2jwFdWt+ZWEaYphkoGsePT3BVdnZBXarsn60G/sS91wV0MTE0M/FUkZGUVJHRlLE0B4OjzD3OjXhSnaidvkd4YV3EtXn9xXX9xPnExeA9yv3fRUvhZb7Fegx9xh6GROHgDnXBxMngNsH9wiV8s73Dhr0Ksv7Dq8e94EHyHe0WZVJ55EYfvcDQOH7CKIIExuA4D88B/sWhzBB+wka+wf1UvcHbh77jwcTF4A7nVvEe9oImve+FRMbgMvBtNaPHvt1BxMXgEefTqnNGhNHgPdh/FwV93wH42uyZFIaS1loPoYeDuZ74fc419nX90ThAfcj5wP5SPd0FS2RBS54TEg6Gy1M0OpwH/cyBpbXBftLBoqZipqaGpaLl4yWHvdVBpbXBftUBvCkytbuG9fIUDahH+eRBfcWbCzp+xEb+yMj+wL7LGofKz/gBoqAi3+AGnyMfIx9HjU/7Qb7Jq/yI/cfG/cd6fD3H6UfDqh/4fc019nX0Xf3EuEB4Of30OcDxvd+FbEGg3yHeXoa+wfwOvck9xPu0PcCqx4mkwVNcE1kQhs0TrjMnJGcl5sf+DjX/MAG2QT4wNdbBpaekqKgGvcOK9j7LfsGMEH7Cmwe7IIF1avBtMwb4MdcSXGEd3p6H/wuBg7Xi/dZP9fZ4feb4RL3NuMz91/3aOcTuvg1IB37k/yV+wgGE3o/9wgHE7r7DeMHE3r3DQcTdvcHBhO21wcTuvsH2a8KrqB296fh6Nfp4T/XEuf4ohP0+BwW9w8G+8L3pwXVBvcj5M33BZwf3dc6BhPshbR8rnOnCPcSBhP01/yiNfdXB+a/bEyZH/v0P/fzBk18V2wyG/tXNQYO9xaL4Piw4AHn49vj2uPb4wP4ASAd+6X9WuP5BfdPBrCidGYf/C7j+CkH51HFLx4i/VoV96UG58XF5x/4xDP8yQdmdHRmHvtP+GozBg5ui+T3d9f3jOES9xLmYOE194oT8Pfm+WoV+wotNvsEaZNlml0fkXgFKz8GE+j3BQaMfox+fxo3ZE9AXh4yB/iFjgXh/DgH6bWx5YLqCBPk9zTXBhPw+0UGe7+Bs6oa1Me/zMS9a1SdHvGSBd18Qt/7IxsOfaB29yLbzNv363cB96TjA6AgHfdh++sF+w479zxK+zw79zz7IuP3Ivcy2/syzPcy2/sEBvdg9+vrCg5A95Pb91p3AfeJ2wO69+MVO/da+1rb91r3Wtv7WvdaO/taBw5A95PbAbr4cAO69+MVO/hw2wcO+zL1+B4BuvgdA/L4iBVTUvcg+yD7IPsgw1L3IPcg9yD7IMTE+yD3IPcg9yBSxPsg+yAFDkDg9wbh2+j3BgH3ffcIA7r4ARU7+HDbB/u2+3N1CvgJBHMdmvcw2/cS2wHn+HAD5/hOkh37shX4cNv8cAYOQPcw2/cS2zv3PBK6+HATsPfc+KYVE9BwMwX7kgYTsDv3egdk+xIF+1M79zsGYfscBdoGtfccBfd62/tiBrL3EgX3OwYT0Nv7IwcTsKbjBQ4vq/iWAfhA1wO8+LYVMwf4D/s9/A/7PQUzB/hb918F9wAHDiur+JYButcD+Ir4thX8W/tfBfsAB/hb+18F4wf8D/c9+A/3PQUOQPUKutuSHdwV+HD3FwX3AAf8cPcXBTgH+Bol/BolBQ5A9Qr4n9sV/HA7+HAG/HD3uBX4cPsXBd4H/Brx+BrxBd4H/HD7FwUOQK7b92HbO/dmEveJ2xPQuvcHkh33YRX3WvsW2/cW91rb+1oGE7D3FjsHE9D7FvtaBw4g3dc/90j7PvdHP9ep1z/3R/s+90g/1xK62/ew2xOJwLr3yhUTgsDbBhOJwMqbtLGsnHJxnx5toqZrxhvbvtbzHxOEwDsGE4nATXtiZWd6qKd1Hqd1cKdUGztYQCIfEynA+24E2wYTmcDKm7OxqZx2cp4ebKOlZ8ob277X8x8TScA7BhOZwEx7YmVhe7Ksbh6hd3GeXRsTKcA7WEAjHw4g93/aPPdO+0T3TjzaErrb97DbE5y694kVEyzbBhOczJu1sbGbaWykHnCgp3K+G9u+2fcAHxNMOwYTnEp7YWVqeqWmdx6qdHCsUBs7WD37AB8O+zT3f9sB9/rbA7r3zxU798v7Pdv3jQcO+4f4E/e2OtwSuvfIE6D3o/gTFd8GE2An97YF+wAGE6An+7YF3wYTYNH3ZQUO91jq2fdX2j3ZErrl+MvlE7j4CvejFUtmWGlTG1dit8HBtLe/H8SKvWmwTAj72xYq2Tzq29q02bUeO7XcZNwb6Nfa7B8T2Ow/2i4eN4o+YmA9CBO412A/tzkbLD08Kh8T2Pg4FrHLv63Eigi9irNgVhpWY19Zih5RileuZssIDvue+yrY+VbYAYv4DwP7KQS6iuaJvbqV5BnN+OiPrqCgr4kZuomS2FyMMI1ZXIEyGUr86IdodndnjBlbjQUOkovb+MHUi3cSoPj2E7Cg2xU7+PbbB/uM+QoF+wYG+zf9ChUT0Pdw+MH3cPzBBQ5u+xV2+aDbEqT3Uzvb91DbO/dPE+T44yAd/Mo7BhPY9wP9oNv5oPdQ/aDb+aAGE9T2Bg77ByUdAab4cAOmIB02B/dJ+6L7SfuiBTb4cOH8Cwf3SPeh+0j3oQX4C+EGDmn7FXb5pNcBofjLA/jhIB37rQb7HP1XR/fhBTkG8Px6BfAG9yv5pAX3agYOW/cNHRPovAr3L/ccuvik/Ei4djwY90J89fsLjftC0woIE/DWhchfmD+C+xFBOSyTCBPoMpRTzZXvCA5Y+xV29x7XYHb4pncS5eH3iOE53RO8+I4W+KY1+9AHE9wvV1E3Q2e97x730DX9POH3XAdlnLVzvBsT2sjBscikHxO6NAcO9xGFCvhXwwqv2Pcd1xOr8PocFtzL2OzsS9g6Oks+KirLPtwf/e34rRUTGwCTHR4Tq/A6Sz4qHxNGAKz8uRXsBvia+XYFKgYTGwD8bvtRFcalsLW1pmZQUHBmYWFxsMYeE6Dwvx332tIKDtb3FR35WhX7y/vKBfsFB/eh96EF/MDf+L4H96H7oAX3BQcOfPkM2wH/AfSAAP8AUIAAA/jZ+VsV/EyMPDsF+BAG/B38HcZQ+Bz4HIz8ENvbBQ73N/fM3wG8+VoD+YvbCvzAN/i+9x4dfOcK+In/AE+AAAP42I0VjPhMO9oF/BAH/B34HVBQ+Bz8HPwQits7BQ7W9xUdFvfL98sF9wUH+6H7oAX4vjf8wAf7ofehBfsFBw585wr/ADGAAP8AT4AAA72NFfhLBtvb/BCM+Bz4HFDG/B38HQX4EAc7PAUO9zf3zN8BvPlaA7z39hVyHfug96EF+L7f/MAG96H3oQX7BQYOfPkM2wG8/wBQgAADvPlbFfxLB9s7jPgQ+Bz8HMbG/B34HQX4EAY82wUO+CX3zN8BvPpIA/p52wr9FAb3ofehBfsFBvvK+8tyHfug96EF+RD3Hh3W+yB2AffS3wP3/Ps1FffL98oF9wUH+6H7oQX5FAf3ofuhBfcFB/vL98r7y/vLBfsFB/eh96AF/RAH+6H3oAX7BQcOm/c82vcZ2QG8+McDvPfIFd8GnsSzp6x4rHiIZZFkkGmXaLdxz2Tcs8Hl4lgYdfeD+2so3VtrVWlwa54ZbpuJqoithrGEtVipO7n7CEB6IAgOrvfO2wG82wP3Off2FfdX+zYF9w73o9v7pPcOB/vK+/kV2/gaOwYOrvfO2wH4u9sD+Jf39hX7Vvc2BfsO+6Q796P7Dgf3e2oV2/gaOwYOnvcnHfir2xOw+B/3iRX3D+zn9wr3Cirn+w8f+7s797sG2clSQkJNUj0f+1sGE3D3EvcRBfsBBvs4+zn3Ovs6BfcABhOw+xH3EgUOnvcnHbzbE7D3ofeJFfdZBvsR+xIF9wAG9zr3OgUTcPs49zkF+wEGE7D3EvsRBftbBj1NxNTUycTZH/e72/u7BvsPKi/7CvsK7C/3Dx8OpaB2+CffAfiu3wO8+FEV91f7NgX3DPe6/Cff+Hv8D/cMBw6loHb4J98BvN8D+QL4URX7Vvc2BfsM/A/8e9/4J/e6+wwHDqX3c9/4J3cBvN8D+QL3nRX7V/c2BfsM+7r4Jzf8e/gP+wwHDqqgdvkK2wH4PdsD+GUW9zb3VgX7DviY/Fw7+Az8R/sOBg6l93Pf+Cd3Afiu3wO8950V91b7NgX3DPgP+Hs3/Cf7uvcMBw73Mdv3mgH3zPdIA/fM+DoV++r3SPfq8Af7U/dT+1T7UwX7UTsV+BH4D/gP/A8F+2X76vvo9+oGDvtz9yUd+UoV+zb7VgX3DPx23/h19wwGDmT5XXcBvPiQA/jB+V0V+5B04Db76fvpx1D36Pfp4DUFDvcV99XfAbz5OAP5aff/FftW9zYF+wz8djf4dfsMBw5kjviQAbz4kAP4wY4VdPeQNjb76ffpUE/36fvoNTYFDvtz9yUdnRX3NvdXBfsM+HU3/Hb7DAYOZI34kAG8+JADvI0V95GiNeD36ffoUMf76fvpNuAFDvcV99ffAbz5OAO8+AEV91f7NgX3DPh13/x29wwHDmT5XHcBvPiQA7z5XBWi+5Hg4ffo++nHxvvp9+ng4AUO91n3wN8BvPl8A7z36hX3Vvs2BfcM9/j7DAf3Vvc2+1f3NgX7DPv29wwHDvtzj3b5fHcB9z3fA/dnehX3NvdWBfsM9/j3DAb7NvdW+zb7VwX3DPv2+wwGDvdjlHb5dncBvPmGA/g+fxX3afc49y/3afdr+zj3L/tp+2n7OPsv+2v7afc4+y/3aR8O92N/0/jm0wG81fjy1QP4Pn8V92n3OPcv92n3a/s49y/7aftp+zj7L/tr+2n3OPsv92kf+8P4BBX3QfcY9xH3P/c/9xj7EftB+z/7GPsR+z/7P/sY9xH3Px4O92OQ1fjg1W93p3cSvNX48tUTnPkV9zoVv1ecnJuemaAZTbSAen99fXwZ/OT3XBVyjnKQdB7UmgWGnomeoBpI0xXUfo6ekZ6SnRlHp4F1hHOHchmj+20VlXWYdZl3x7cYgJqBnIOdCGf31xXJYpacl5mZmhlXv3p6e3h9dhnB/GwVnXqefKB+sskYepZ8l3yZCBMojPidFbROmpadlJ6TGW/PdIF1gHd9GdT9IRWigqOFpIaX1Bh3j3iQeZIIE8Sv+RQVmUMFjp+ejZ8b1Qdyc4iHcx/U/W0VpKOOj6MffdMFiHd4iXcbExS/+OEVn4eehp2EptAYdJRzkXKQCL/9FBWnR6KVoZafmRliyHyAeYJ4gxm6+KEVnICaf5p9vcEYeZx4mnaYCLr7JBWWfJV6k3nPqRiBoX6hfZ8Ib/vYFc9vlaGSo4+kGUKYiHiFeIR5GZr3QhWQeI14dhrVjAWkiKSGoh4OI4vQW3b409ASvPhPE3D3bvkYFfs9+9b3PfvWBfQG9z331vs999YF+0771hX3GveR9xn7kQUTsPsZ+5EFDvds9Ar5WhX4Lv1aBf3HBg73RmcK5/laA/m29/gV/Vr3+AX9XQcO92z0Chb8LflaBfnHBg73RmcKoPlaA6D3+BX5Wvv5BfldBw73bPckHdsV+LAG+6P4awX8Lfy7Ffgt+Vr4Lv1aBQ73RmcK59sD+bb3+BX9Wvf4Bf1dB9v3FRX4Wwf4V/t3BQ73bPckHfkKFfeh/Gv3o/hrBf082xX5xwb8Lv1aBQ73RmcK+R/bA6D3+BX5Wvv5BfldB/yn+/gV+Ff3dwX8WwcO/RnBCv0Z1wr9GcQK/RlZHf0Zxx39GVkd/RmtCv0ZtAr9GawK/RmvHf0ZlAr9Ge4d/Rn5BPcCAbr3AQO6+XL1Hf0Z4x39Gasd/RmnHf0Z94vXAfdb+DQD91v31xU/+DTXBw79GeMd/RmcCv0Z0B370cEK/GHXCvwdxAr8HVkd+6PHHfulrQr7pbQK+5+sCvwArx37a5QK+7vuHfvjqx38FKcd+7KcCvxR0B38SrcK/B1ZHfxh+Hv3c4t3ErrlE2C6IB0/BxOgmfsnBckGmfcnBdcHDl4Of/l2Abr5dgNcCg5/1vjg1gG61vjgOR0Of5f4ppf3PJsG+zaXBx6gN/8MCYsMC/nUFPkZFakTANkCAAEABAAKAA8AJwAvADkAPgBIAFQAWQBeAGQAaABuAHMAgQCLAJEAlwCdAKsAwwDKANsA5QDuAPUA/QEDAQsBHwEnATABNwE9AUMBWwFgAYABlQGaAaIBrQG2AbwBwwHLAhcCPwJEAmsCggKIApsCnwKjAqwCsgK5AuoC9AMEAxMDGAMiAywDMgM9A0YDTwNWA10DZANqA3cDhgOQA50DoAOzA74D0QPYA+gD9QP+BBAEHQQsBDEEOwREBE4EVwRgBGcEbwR3BH8FKwW6BegGBQYNBi4GlQa5BxcHdAeCB4oH2wgNCCkIQQhQCHQIuAjOCOUI/AkOCRgJHwk4CTsJRQlPCX4JgwmUCcMJ7woaCkQKbQp5CoQKjwqXCrIKzgrjCv0LCQsqC0QLZgt+C4sLjwugC74L3AvjC/4MGgwhDDMMOgxVDGkMgwydDKsMtwzKDOEM6wzvDQUNDA0VDR0NMQ1ADVINZA13DYoNmw2mDbgNxw3LDdEN3g3vDf4ODg4dDi0OPQ5HDlEOYA5tDnUOfQ6LDpkOpw6wDr0Oyg7XDuQO8A78DwgPEA8bDyYPMQ88D0cPUEUdDsg2BWUKDnb5WncLepugebYbx7LA2h9MBlx+dnBvf6Gedh4Ldh1PZFg7HwsV5ewxBvckKiIdy5DLEgv3Ih2fm6OZnx8LFeb7FgXOBkz3FgUO+1L3FgvK92bKC/cAvPcAC4uCCguOQQXZBgvN9yzNC+H//7CAAP8AT4AAPdkLf91F0fgezUnZC/ib+KYVC4vX+A7XC3vh+RV3C/dbBvsHhEYy+w+0HR8L4LVgM4wf+y5tBfsKdDlw+wIaLOFT9B4L/BL3nccKC6QGtqxsZGhscGNia6OqiB8L+SMW9/z7sDUHC/sJdjhw+wQaC9/FuLuhHwt/12B2+KZ3CwZlYVYKC2IK+Fv3AR0LsNd1BnWBlaEf92gH9yI+2/sdHgttonSq7AoeC8xdzPcGzF3MC8z3GMxZzAvhN9882gugdvimdwvGClUd9wTs1fcMnB8wkQX2HcrEY0eWHwt6HYYdC6D5WhX3Tv1aBfcCBvcf+Kf3H/ynBfcCBvdO+VoFKgYL+yP84fsm+OEFKAb7Jfzh+yT44QULzI/IHQtZBlJra1IeC3vhWnb3puH3rOELi+r3xfcWi3cLS7t6wR4LYgrj+VoHC/snK/sA+z0L+DR/Ffdg9zn3Ofdh91/7Ofc5+2D7YPs5+zn7X/th9zn7OfdgH/u6+AYV9zj3FfcV9zn3OfcV+xX7OPs5+xX7Fvs5+zn7FfcW9zkeC/etpxXOxa7DpR80B0JTZC5KXqi8dR4xhQUupN9O9wUb9x/r1fcgHwvnA6gdCxVWtWO/vrWzwL9htVhXYWFXHsOMFZ6cnaCfnHl4d3p5d3Z6nZ8eDilUVzo/a7/tHvfQNfvpB/sExTL3Ch4L3gpgCgYL+yvsIfcdHvsk95UV9wDEzuceCwWEHQv3EB0OFfcB9wL7AQYO2Ar30QcL0Miqz6cfCzSjIqLiGs7Gtdvsz1EzmB7nkQX3F3wm6vstG/scK0D7DPsH9VL3B24f9yFnyWBDGgv4NH8VdR2JHR8LXrKqdbsbwra0v8BjsFIfC/cC+wH7ArQHZPsvBb0GC6BiHdoL9+jh+xL4rvcMCwb7ovujBfcFBg7nIB39WgsSuuX3u+E24DndCxX7AvcB9wIHC9kGNPcMBSIGCwH4X+cDvQufdvlddwELQk1rRHAfC/8AMYAACyQdyvcWAbzn+GZRCgsjHc73FgG65ffG5QNKHQuDHfc58vH3Nh4LMwrt9xYB2OP3/EAdC5sKDvcPHRPozwoT8EZkbUp6H4jqBQuFHXJyb2cfclEGCxW0BmT7LwW9BsT3LwX3AvsBBw4BxPhIwgoL4gr70eH36Qf3BFHk+w0eCwPJ9/cVch37ovejBQsVaqRzrJQdHgtvonSnpqKip6Z0oXBvdHVwHgvKBrqZn6ajl3p6nB4LbXiYpoEfjPdCFbykq7YLZAr7AQtTHRN+gJP7CAUL9zn3Ofdg92ALBvej96MF+wUGDvcBA7r3AmQKC8z3Hc9RxRP4C9v4phX8pgvlfeN35RPoC/cBI8v7FK8L4fd43/d24Qv4fhWHVgWydluiThv7FUUn+wF/HxPewPsCfsMo9xUbz9CyvKIfE79Amvsb96GJlfe+CPdpkvs39zv7bBv7hPtY+0j7eoMff/vR96T7O/fb9xF60hj7syH7b/cTlfefCPdQkvc19yj3XBv3QvcY+yD7P4UfhvsoJ01kx3+cjrmNoQgT3sCd93oF++j7XBXZk7TT5xsT30DmqEI+hB9Bg2FBMBsT3sAvb9TWkh8Of/l3Afdc9y0D97X5ahXsgtsvaCR5V19WRmD3NvtiGKOrlMyHwuWDGDtxOWRcHuEkBSMGZ7cFZ2RNd0Yb+yol0fcW36+95MkfmJQFXch4xL0a9OHP5YMe+zT8rhVByl3vu7aapJ8e+z/3bgVfblBgSRrS+AYVbJlkrlsey6izubYauXGsYI4eW45mZIxdCA7DChNXwPjq+WoV/Jr9dgXsBvia+XYFE5vA/Rz7URWTHTpLPioe2NIKE7vAvx0OMx10HROyNR0TuDUKE7Q6ChN0TAoTcj4KE7JFCg4yHc73Fp0dC1YdE7hANR0TuQA1ChO4gDoKE3iATAoTeEA+ChO4QEUKC3sV9y33Adz3FuJYzzauHxPsy6exudMa9wQs3vsZ+xgrOPsEQ7BdzG8eE/I2aVhHMxr7FvcBOvctHvs+924V3M2+8/PNWDo6SVgjI0m+3B4T7K333RXOv7Xf379hSEhXYTc3V7XOHg4vChOsIDEKE6yANQYTnIAtHROcQDEdE1wgLQoTnCA2ChOfIAv4OBVVjAU0B8GMBRP03o3jYywaLDNmOEY4rOGDHjCFBfsJkfI59yIb9y73AOL3EOdUzyioHxPo4aS3wNoa9wEp1/sg+wstRCd+HueFBcOUv67UG+XDZU4vO21JjB8O+LsV55IF9wFrM8b7ABv7YUf7XPtp+wOkMb5XH1W/ynXJG/cn8+z3L/cmLPH7IT9MaEtkH/c4mcvm9BvNvGtSoB8T7PvN+88V6ozQzusb48lILCpKRi8sSdDsjR8O3fga3QHH5feI5QORCgsrHcz3Fn0dC/sH2/lV2wG6ybTcA7r3/BU2B8eNtlM6GjgHJtVE9R662wYhh2Ok0BrnB+ZazUKZHowH0pm+zOUa5wfQs6T1hx7bXAchQUQmHzgHOmBTT40eDovh93vX93vhAfdI4/gS5wO8+B0VP/cX+9H3dgfWCvtw+9EG4/vHFfd79yvX+yv3e/Id2x3OCvsCk+tG9xIb7/a38ngdH3EdxcZoUJceCxVLhQXBHRP4eAq0qGtaih5bimxsZRuWHRXfCvsTxTvoHzL3YxWgCvjzJgq6KgoTcPcr+TgVo5d6epwfE7AjChNwJArKBrqZn6YeDiAd/BsGVPwkBeoGvaHCqMwb8MtNKC5MSi43RLbXgB8vhQX7CZX1OfciG/cj9PD3I/ciKvL7HU5NdWRpH6j3aAX3zgYOowr3Ds8k+0v7Skcl+w77Dkfx90oeDlId947hE7ZZChPWcwoT2mgKE7qI5gULhfcG+O53Err3CPsB4xPQwdodLP0nnQoV5x1jHV0dzVm5RUFVWj6CHg4VuQpKiAXcHQYOFdwdx7kKC/jx9QG6KwoD8PjxFewKbaJ0qh/ywBU/Cg51Cg52+KZ391x3pAoLAc7l96jjA6kKC+uswMOem4WAmB77FPthBYWfiKSnGrT7FhX3FPdiBZF2jnFuGi1qVlN4e5GWfh4OIgq7HQuwChNPgGFkBRPvgF0KoqQFC3sV90H3Afcj93f3efsB9yP7QftB+wH7I/t5+3f3Afsj90Ef+1L4BhX3S8/y9w4LAdvhA9sgHf1a4fcbB/H3A/c++4oF9Qb7bffF92P3dQX7CQb7j/uvBfhjBwv7AvnwAfdD5wP3E/mCFTsG9z77s4v7svs++7MI2wb3Tveoi/fI+073qAgO+wL58AG65wP3nvmCFTsG+077qIv7yPdO+6gI2wb7Pvezi/ey9z73swgO+wLb+VDbErrdOfeHE+C6+YIV/fAHE9D3h9sGE+D7NflQBhPQ9zXbBg6wChNPYWQFE+9dCgv3MfeCFTGDBbMKC9sgHf1azh33jgcLLArb9xaCHQv49csBui4KA/cF+XcVSQZCyVLb28nE1B7wCg749SgduveqE6D3i/j1FWUKNfsMBdkGE2DI4AUOMVXJ9YMf+BMGirIF91KCItb7CBsL9zsG9w4d+zv78RX3m/c7B/bAYDUyVl4gHw6nZgW2lax7axqPHQsgHS0G+/38cwU1+AP7JeP3JdzhOgf77xb3l/fsBfvsBw73IR38S/s0NfgV4fsd+QQGE+hGBj5qaj8eDvskjOgl9xgb9yDj8fc2H/hiM/xiB/sGWUsxNVrH9wCKHgv49fcMAbr3qgP3i/ltFU42TuAFPQZ8HQ5kHQG69wED9zAWXgoOhR0fC/js9wIBvPcBA/cy+OwVXgoOA/dM+HAV+x37NgU/B/cd+zYF9Ab7Pvdc9z73XAUL+2IGbPt2BckGr6GjjaEbsqloX11ta2RobaCshB8LAdvhA4odC/sC+fABvfgOA/hA+wIV+7v58AU4Bve8/fAFDvfJ+G4V+yeYJjV++yx++yLoIPcmf8WFwZ6/tgt2+QThxQoLFXJZBpEdE9BZBhPgUmtrUh4O/BL3neUdC/xa4fha9xnX+xmsB7ejpq0e3dc5BiheUTIfC/j57AG65cHlA7ogHSrl7AfBKiIdA/h5+EcV6vw2P/faB/vk+/0FLvhI1/vrBwuL2UZ2967Zmtn3VNmadxK62Pcd1+vY9x3XC/j19xYBuvcyA7r5dygK9wQd/QTj+QT3cAYL+Dn39BXlkQX3Bn0o0fsAG04KCxXytev3AvcBtiolKWAq+wH7AmHr7h4LoNkKYB3j+VoHCyuMHQv5yRU5BvdL/Gf7S/xoBd0G90v4aAULuvedFVUdC/zyB/vt+PIFC/vM9wUd98wLx33VhUwaVUh7WTxZs8qAHjGFBQvYCvfQB+awutwev9dXBgsV9wH3AmIGsvcvBVkGUvsvBQ73kNsBuvfgA7r34BU79+DbBw4WxqWwtbWmZlBQcGZhYXGwxh4LbspUsUOSCPs/+3wVkuvPyeSDC/sQ2wG6+GoDul8VO/hq2wcOexX3X/cO9yH3eQv3bPcM9xP3d/d4+w/3FPtvHwv4+ewBuuUDuiAdKuXsBw5/CuELIgru9xYLxXJ39yzHe3cSvEEKC/f2FfvK98sF+wUG96H7oQULlhXaugeun35ycXd8aB8O1fcI2veSz1HO9yLVE77AC/gTIB373DX3DPyu+xI1C+jF2/cT9xRR3C4uUTr7FAt74f8BCIAA4f8A24AA4RIL6IQFwZi6sssbC+zCv9/aq1cqHgsVKrY06NfFweLfVcJGHgslFc4GE7Dm9xYFLAYO7/cZBfsZBw4jHc4oHbrlC43/AFCAAP8Bw4AAdwELJtf1yE/R97TG9x3VEgv3cMX3N7fauMbFAbzEC/th9wn7OfdhCwUjBvtS+9v7U/fbBQupo6KpqnOhbWx0dWwL93j30d/70fd2993hC/sVdvce3fga0UXdEguL4fd84fdw4RLn4wtJBmZqbmBgaqiwHgvnFvhO4fv2+QQzBgv8ff1aBeAGC+dR5/ek51HnE/ILi/laAaD5xwP4QguL2/hXdwG6+HADC/cY+R4V+ww+P9gLe+H4zuHO7AG85wv7Lj/3FvcuHw4AAAABAAIADgAAAAAAAAEmAAIALgACAAwAAQAPACIAAQAkACUAAQAnAC0AAQAvAC8AAQAxAEYAAQBIAEwAAQBOAFYAAQBaAGAAAQBiAGUAAQBnAHYAAQB4AHwAAQB+AKsAAQCsAK0AAgCuALkAAQC7AMAAAQDFANEAAQDTAQUAAQEJAQ4AAQEQARMAAQEVASQAAQEmASoAAQEsAWQAAQFlAWgAAgFpAWoAAQG6AboAAQG7Ab0AAgHAAcEAAQHDAcQAAQHHAcgAAQHSAdIAAQHUAdQAAQHbAdsAAQHeAeUAAQHnAegAAQHqAesAAQIRAhIAAQIbAh4AAgIoAikAAQIwAjAAAQI0AjYAAQI9Aj0AAQJBAkEAAQJUAlQAAQJ2AncAAQKCApUAAwABAAEAAAAIAAIAAgKCAo4AAAKUApUADQAAAAEAAAAKAOwB4AACREZMVAAObGF0bgAwAAoAAU1BSCAAFgAA//8AAwAAAAwAGAAA//8AAwABAA0AGQA6AAlBWkUgAEZDUlQgAFJLQVogAF5NQUggAGpNT0wgAHZOTEQgAIJST00gAI5UQVQgAJpUUksgAKYAAP//AAMAAgAOABoAAP//AAMAAwAPABsAAP//AAMABAAQABwAAP//AAMABQARAB0AAP//AAMABgASAB4AAP//AAMABwATAB8AAP//AAMACAAUACAAAP//AAMACQAVACEAAP//AAMACgAWACIAAP//AAMACwAXACMAJGtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2mtlcm4A2m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1hcmsA4m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7m1rbWsA7gAAAAIAAAABAAAABAACAAMABAAFAAAAAQAGAAcAEADIC3oNdg2aGBwZKgACAAgAAQAIAAIAOAAEAAAASABeAAQABQAA/+wAAAAAAAAAAAAA/9gAAAAAAAAAAAAA//YAAAAAAAAAAAAA//EAAQAGAXIBdwG+Ab8B3QIXAAIAAwFyAXIAAwF3AXcAAgIXAhcAAQACAA0ADwAPAAEAJwAnAAEATgBOAAEAWgBaAAEAXwBfAAEAZwBnAAQBcAFwAAEBdgF2AAEBdwF3AAQBeAF4AAMBjgGOAAEBvwG/AAICJQIlAAEAAgAIAAIACgB+AAEAFAAEAAAABQAiACwAMgBIAE4AAQAFAA4AGQAmAGcBCQACABn/7AEV/+wAAQBI//YABQDS//YA6f/sAV3/7AFl//YCGf/2AAEAAv+mAAkAu//YAMH/2ADF/9gA0//YAPz/2AEI/9gBDf/YATj/5wFD/9gAAgYuAAQAAAbMCFwAHQAbAAD/8f/d/+L/pv/x/7oACv/Y//H/2P/E/+L/7P/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7AAA/+wAAP/sAAAAAAAAAAD/8QAA//H/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAA/+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAA/7AAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAD/+wAA/+wAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/nAAA/7AAAAAA/9j/xP/iAAD/5//YABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/7AAA/+IAAP/2AAAAAP/YAAAAAP/x/+L/7AAA/9j/5//s/+z/7AAAAAAAAAAAAAAAAP+wAAAAAAAAAAD/5wAA/+cAAAAAAAD/9gAA/7oAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAD/8QAA//H/9gAA/+IAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9+/+wAFAAAABn/2P/s/7oAAAAAAAD/0//2AAAAAP/sAAAAAP+c//b/nP/i/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8f+w/+IAAAAAAAr/7AAA/84AAAAAAAAAAAAA/7oAAAAAAAAAAP+wAAD/sP/nAAAAAAAAAAD/7AAA/9gAAAAAAAD/9gAA/84AAAAAAAAAAP/iAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAP/YAAD/7AAAAAD/9gAAAAD/4gAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAA/+IAAAAAAAAAAAAA/9j/2AAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7P/OAAD/9v/nAAAAAAAAAAAAAAAA//gAFAAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAP/x//EAAP/nAAD/8f/sAAAAAP/2//YAAAAA/+wAAAAAAAD/8QAAAAAAAAAAAAD/ugAA/84ABf/sAAD/2P/iAAD/9v/n//b/9v/OAAD/7AAA//sAAAAAAAAAAP/xAAAAAAAAAAAAAAAAAAD/7P/2/+IAAP/xAAAAAAAA/+L/7AAAAAAAAP/E/+L/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/sAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAA//H/9gAAAAD/7AAA/+cAAAAAAAAAAAAA/84AAAAAAAAAAP/OAAD/xAAAAAAAAAAAAAAAAAAA//b/7AAAAAD/9v/T/84AAP/sAAD/7AAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/5wAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEATQACAA4ADwAVABkAJAAmACcALwAyADwAPwBCAEcASABNAE4AWABaAFsAXwBnAGwAdwB4AH0AfgCEAIoArgC6ALsAwQDFANIA2wDeAOkA7QDwAPUA9gD7APwBBgEIAQkBDQEVARYBGgElASYBKwEsATIBOAFDAU4BWAFdAWUBZgFrAW0BbwFwAXEBcwF5AY4BzAHNAhkCIgIlAmsAAgBCAA4ADgABAA8ADwACABUAFQAIABkAGQADACQAJAAXACYAJgAEACcAJwAFAC8ALwAQADIAMgAQADwAPAAMAD8APwAOAEIAQgAHAEcASAAGAE0ATQAGAE4ATgAIAFgAWAAJAFoAWgAIAFsAWwAKAF8AXwAIAGcAZwALAGwAbAAMAHcAeAANAH0AfQAOAH4AfgANAIQAhAAPAIoAigAKAK4ArgASALoAuwAUAMEAwQAQAMUAxQAUANIA0gARANsA2wATAN4A3gAQAOkA6QAQAO0A7QAaAPAA8AASAPUA9gATAPsA+wATAPwA/AAUAQYBBgAUAQgBCAAQAQkBCQAVAQ0BDQAUARUBFgAWARoBGgAYASUBJgAZASsBKwAaASwBLAAZATIBMgAbATgBOAATAUMBQwATAU4BTgAQAVgBWAAQAV0BXQAQAWUBZQARAWYBZgAWAW8BbwAXAXABcAAIAXEBcQAGAXMBcwAXAXkBeQAIAY4BjgAIAcwBzAANAhkCGQARAiICIgAcAiUCJQAIAAIATgACAAIADwAOAA4AAQAPAA8AAwAVABUAAQAZABkAAQAkACQADAAmACYAEwAnACcAAwAvAC8AEwAyADIAEwA8ADwAAgA/AD8AAQBCAEIAAQBHAEgAAQBNAE0AAQBOAE4AAwBYAFgAAQBaAFoAAwBbAFsAAQBfAF8AAwBnAGcABABsAGwABQB3AHgABgB9AH0AEgB+AH4ABgCKAIoAAQCuAK4ABwC6ALoAEwC7ALsACQDBAMEACQDFAMUACQDSANIACADTANMACQDbANsAFQDeAN4AEwDpAOkAEADtAO0AFQDwAPAAGQD1APYAFQD7APsAFQD8APwACQEGAQYAFQEIAQgACQEJAQkAFQENAQ0ACQEVARYACwEaARoADQElASYADgErASsAEQEsASwADgEyATIAGgE4ATgABwFDAUMACQFOAU4AEwFYAVgAFQFdAV0AEAFlAWUACAFmAWYACwFrAWsADwFtAW0ADwFvAW8ADAFwAXAAAwFzAXMADAF0AXQAGAF2AXYAAwF3AXcABAGOAY4AAwG+Ab4AFgG/Ab8AFAHFAcUACgHMAcwADwHNAc0ABgHdAd0AFgHjAeMACgIZAhkACAIiAiIAFwIlAiUAAwJrAmsADwAEAAAAAQAIAAEMrgAMAAMAVACiAAEAIgHAAcEBwwHEAccByAHSAdQB2wHeAd8B4AHhAeIB4wHkAeUB5wHoAeoB6wIRAhICKAIpAjACNAI1AjYCPQJBAlQCdgJ3ABMAAA2+AAANxAAADcoAAA3QAAAN1gAADdwAAA3iAAAN6AAADegAAA3uAAAN9AAADfoAAA4AAAEMzgABDMIAAgzIAAEMzgAADgYAAA4MACIAzgAAAAAAzgAAAAAA4AAAAAAAAADUAAAA5gAAAAAA2gAAAAAA5gAAAAAA4AAAAAAA5gAAAAANoAAAAAAA7AAAAAAA8gAAAAABFgAAAAABFgD4AAABEAAAAAAA/gEEAAABFgAAAAABCgAAAAABFgAAAAABEAAAAAABFgAAAAABHAAAAAANyAAAAAABIgAAAAABKAAAAAABLgE0AAAL7AvyAAABOgAAAAAKHgpIAAAKigqQAAABQAAAAAAAAAAAAUYBTAAAAAABTAAAAAAAAQCMAhIAAQBqABIAAQCIAhIAAQBqAhIAAQBfAhIAAQCPAhIAAQEbAhIAAQBiABIAAQEYAhIAAQEmACIAAQBgAhIAAQERAhIAAQBiAhIAAQBKAhIAAQHHAhIAAQC4AhIAAQFcAsYAAQFbAAAAAQEXAhIAAQCCAhIAAQH6AAAAAQGqAhIABAAAAAEACAABC8IADAABC9gAEgABAAEBugABAAQAAQCOAB8ABAAAAAEACAABCo4ADAADCqgAmgACABcAAgAMAAAADwAiAAsAJAAlAB8AJwAtACEALwAvACgAMQBGACkASABMAD8ATgBWAEQAWgBgAE0AYgBlAFQAZwB2AFgAeAB8AGgAfgCrAG0ArgC5AJsAuwDAAKcAxQDRAK0A0wEFALoBCQEOAO0BEAETAPMBFQEkAPcBJgEqAQcBLAFkAQwBaQFqAUUBRwqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAAB6wHsgAAB7gHvgAAB6wHsgAAB7gHvgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgAAB8QAAAAAB8QAAAAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAAB8oAAAAAB8oAAAhICE4IVAhIB9AIVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAAAB9YAAAAAB9YAAAAAB9YAAAAAB9wH6AAAB9wH6AAAB9wH6AAACE4IGAAACE4IGAAACE4IGAAACE4IGAAAB+IH6AAACB4IJAAACB4IJAAACB4IJAAACB4IJAAACB4IJAAACFoIYAAACFoIYAAACFoIYAAACFoIYAAACFoIYAAACFoIYAAACFoIYAAAB+4H9AAACFoIYAAACJwIogAAB/oIAAAAB/oIAAAAB/oIAAAAB/oIAAAACAYIMAAACAYIMAAACAYIMAAACAYIMAAACAYIMAAACAYIMAAACAwIEgAACAwIEgAACAwIEgAACAwIEgAACAwIEgqwCrYKvAqwCrYKvAqwCrYKvAqwCrYKvAqwCrYKvAqwCrYKvAqwCrYKvAqwCrYKvAqwCrYKvAqwCrYKvAqwCrYKvAAACGYIbAAACGYIbAAACGYIbAAACGYIbAAACGYIbAAACHIIeAAACHIIeAAACHIIeAAACHIIeAAACHIIeAAACHIIeAAACH4IhAAACH4IhAAACH4IhAAACH4IhAAACE4IGAAACB4IJAAACCoIMAAACCoIMAAACCoIMAAACCoIMAiKCJAIlgiKCJAIlgiKCJAIlgiKCJAIlgiKCJAIlgiKCJAIlgiKCJAIlgiKCJAIlgiKCJAIlgAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogqECooAAAAACJwIogg2CDwIQgg2CDwIQgAACJwIoghICE4IVAhICE4IVAAACFoIYAqwCrYKvAAACGYIbAAACHIIeAAACH4IhAiKCJAIlgiKCJAIlgAACJwIognCCcgJzgnCCcgJzgnCCcgJzgnCCcgJzgnCCcgJzgnCCcgJzgnCCcgJzgnCCcgJzgnCCcgJzgnCCcgJzgnCCcgJzgioCK4ItAAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2glECUoJ2glECUoJ2glECUoJ2glECUoJ2glECUoJ2glECUoJ2glECUoJ2glECUoJ2glECUoJ2glECUoJ2gi6CMAIxgAACMwAAAAACMwAAAAACVAAAAAACVAAAAAACVAAAAAACVAAAAAACVAAAAAACVAAAAAACVAAAAAACVAAAAAACSAAAAAACSAAAAAACSAAAAlcCWIAAAlcCWIAAAlcCWIAAAlcCWIAAAlcCWIAAAlcCWIAAAlcCWIAAAlcCVYAAAlcCWIAAAlcCWIAAAlcCWIAAAAACWgAAAAACWgAAAAACWgAAAAACWgAAAAACSAI0gAACSAI0gAACSAI0gAACQ4JXAAACQ4JXAAACQ4JXAAACQ4JXAAACTgI2AAACN4I5AAACRQJGgAACRQJGgAACRQJGgAACRQJGgAACRQJGgAACRQJGgAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2gAACdQJ2gjqCPAI9gAACPwJJgAACPwJJgAACPwJJgAACPwJJgAACQIJCAAACQIJCAAACQIJCAAACQIJCAAACQIJCAAACQIJCAAAAAAK4gAAAAAK4gAAAAAK4gAAAAAK4gAAAAAK4gluCXQJegluCXQJegluCXQJegluCXQJegluCXQJegluCXQJegluCXQJegluCXQJegluCXQJegluCXQJegluCXQJegAACYAJhgAACYAJhgAACYAJhgAACYAJhgAACYAJhgAACYwAAAAACYwAAAAACYwAAAAACYwAAAAACYwAAAAACYwAAAAACZIJmAAACZIJmAAACZIJmAAACZIJmAAACQ4JXAAACRQJGgmeCaQJqgmeCaQJqgmeCaQJqgmeCaQJqgmeCaQJqgmeCaQJqgmeCaQJqgmeCaQJqgmeCaQJqgmeCaQJqgmeCaQJqgmwCbYJvAmwCbYJvAmwCbYJvAmwCbYJvAmwCbYJvAmwCbYJvAmwCbYJvAmwCbYJvAmwCbYJvAmwCbYJvAmwCbYJvAAACSwJMgAACSwJMgAACSAJJgAACSwJMgAACTgJPgnCCcgJzgAACdQJ2glECUoJ2glECUoJ2gAACVAAAAlcCWIAAAlcCWIAAAlcCWIAAAlcCVYAAAlcCWIAAAAACWgAAAAACdQJ2gluCXQJegAACYAJhgAACYwAAAAACZIJmAmeCaQJqgmwCbYJvAnCCcgJzgAACdQJ2gABAUICxgABAUgAAAABAZoCxgABAaAAAAABAScCxgABAWACxgABApoCxgABAd4CxgABAUgCxgABAKsCxgABAVwAAAABAXsCxgABAXsAAAABAVECxgABAV8AAAABAUsCxgABASECxgABASEAAAABATkAAAABAXICxgABAXEAAAABAUwCxgABAUwAAAABAiMAAAABAT0CxwABAT8AAAABALQAAAABAIgCxgABAIgAAAABAXYCxgABAXYAAAABAcgCxgABAcgAAAABATwCxgABATwAAAABARcCxgABARcAAAABAYUAAAABANsCxgABANsAAAABAXMCxgABAXMAAAABAtoAAAABAo4CEAABAo4AAAABAMoCEgABARYCEgABARYAAgABAScCEgABASoAAAABAPQAAAABAbcCEgABAbcAAAABAvoAAAABAq4CEAABAq4AAAABAMUCEgABAQkCEgABAQwAAAABAHoCxgABASMCEgABASMAAAABAHsCxgABAHsAAAABAIcCxgABAIcAAAABAMgCxgABAMgAAAABAW4AAAABASICEAABAR4CEgABAXYCEgABAKYAAAABAHsCEgABAIoCEgABAfAAAAABARwCEgABARwAAAABAZsCEgABAZsAAAABAQ0CEgABARQCEgABARQAAAABAeIAAAABAQwCEgABAQoAAAABAgcAAAABASECEgABAR4AAAABAh0AAwABARoCEgABARkAAAABASICEgABASIAAAAFAAAAAQAIAAEADAAcAAMAJgCGAAIAAgKCApEAAAKTApUAEAABAAMArACtAWYAEwABAUoAAQFQAAEBVgABAVwAAQFiAAEBaAABAW4AAQF0AAEBdAABAXoAAQGAAAEBhgABAYwAAgBaAAIATgAAAFQAAgBaAAEBkgABAZgAAQCrAAAAAQCzAAAAAQCPAAAAAwAIADQAZgACAA4AFAAAABoAIAAmAAECiwAAAAEBUALGAAEEJQAAAAEDewLGAAEDewAAAAIADgAUABoAIAAmACwAAQG9AAAAAQFZAsYAAQFZAAAAAQQ3AAAAAQONAsYAAQONAAAAAgAAAAAADgAAAAAAFAABAOoAAAABAhoAAAAGABAAAQAKAAAAAQAMABwAAQAiALQAAgACAoICjgAAApQClQANAAEAAQKlAA8AAAA+AAAARAAAAEoAAABQAAAAVgAAAFwAAABiAAAAaAAAAGgAAABuAAAAdAAAAHoAAACAAAAAhgAAAIwAAQCnAhIAAQBcAhIAAQCpAhIAAQBTAhIAAQCJAhIAAQBBAhIAAQC6AhIAAQC9AhIAAQCNAhIAAQDXAhIAAQCvAhIAAQBeAhIAAQC2AhIAAQBkAhIAAQAEAAEAbQISAAAAAQAAAAoCsAmaAAJERkxUAA5sYXRuAHoACgABTUFIIAA6AAD//wAVAAAADAAYACQAMAA8AFIAXgBqAHYAggCOAJoApgCyAL4AygDWAOIA7gD6AAD//wAWAAEADQAZACUAMQA9AEgAUwBfAGsAdwCDAI8AmwCnALMAvwDLANcA4wDvAPsAOgAJQVpFIABqQ1JUIACcS0FaIADOTUFIIAEATU9MIAEyTkxEIAFkUk9NIAGWVEFUIAHIVFJLIAH6AAD//wAVAAIADgAaACYAMgA+AFQAYABsAHgAhACQAJwAqAC0AMAAzADYAOQA8AD8AAD//wAWAAMADwAbACcAMwA/AEkAVQBhAG0AeQCFAJEAnQCpALUAwQDNANkA5QDxAP0AAP//ABYABAAQABwAKAA0AEAASgBWAGIAbgB6AIYAkgCeAKoAtgDCAM4A2gDmAPIA/gAA//8AFgAFABEAHQApADUAQQBLAFcAYwBvAHsAhwCTAJ8AqwC3AMMAzwDbAOcA8wD/AAD//wAWAAYAEgAeACoANgBCAEwAWABkAHAAfACIAJQAoACsALgAxADQANwA6AD0AQAAAP//ABYABwATAB8AKwA3AEMATQBZAGUAcQB9AIkAlQChAK0AuQDFANEA3QDpAPUBAQAA//8AFgAIABQAIAAsADgARABOAFoAZgByAH4AigCWAKIArgC6AMYA0gDeAOoA9gECAAD//wAWAAkAFQAhAC0AOQBFAE8AWwBnAHMAfwCLAJcAowCvALsAxwDTAN8A6wD3AQMAAP//ABYACgAWACIALgA6AEYAUABcAGgAdACAAIwAmACkALAAvADIANQA4ADsAPgBBAAA//8AFgALABcAIwAvADsARwBRAF0AaQB1AIEAjQCZAKUAsQC9AMkA1QDhAO0A+QEFAQZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZhYWx0BiZjY21wBi5jY21wBi5jY21wBi5jY21wBi5jY21wBi5jY21wBi5jY21wBi5jY21wBi5jY21wBi5jY21wBi5jY21wBi5jY21wBi5kbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRkbGlnBjRmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmcmFjBjpmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBmd2lkBkBsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsaWdhBkZsb2NsBkxsb2NsBmRsb2NsBmRsb2NsBmRsb2NsBlJsb2NsBl5sb2NsBlhsb2NsBl5sb2NsBmRsb2NsBmRvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpvcmRuBmpwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJwbnVtBnJzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzaW5mBnhzczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAxBn5zczAyBohzczAyBohzczAyBohzczAyBohzczAyBohzczAyBohzczAyBohzczAyBohzczAyBohzczAyBohzczAyBohzczAyBohzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczAzBpJzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA0BpxzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA1BqZzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA2BrBzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA3BrpzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA4BsRzczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zczA5Bs5zdWJzBthzdWJzBthzdWJzBthzdWJzBthzdWJzBthzdWJzBthzdWJzBthzdWJzBthzdWJzBthzdWJzBthzdWJzBthzdWJzBthzdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt5zdXBzBt50bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuR0bnVtBuQAAAACAAAAAQAAAAEAAgAAAAEAEAAAAAEACwAAAAEAEgAAAAEAEQAAAAEAAwAAAAEABgAAAAEABwAAAAEABQAAAAEABAAAAAIADAANAAAAAQAOAAAAAQAJAAYAAQATAAABAAAGAAEAFAAAAQEABgABABUAAAECAAYAAQAWAAABAwAGAAEAFwAAAQQABgABABgAAAEFAAYAAQAZAAABBgAGAAEAGgAAAQcABgABABsAAAEIAAAAAQAIAAAAAQAKAAAAAQAPAB8AQAHiA5QD3gPyBAYEKARKBIAEgASOBJwFMAVuBZAFqAXABe4GfgbsBvoHEgcqB0IHcgecB7QIkgioCL4I2AABAAAAAQAIAAIAzgBkAWkAnQCeAJ8AoACXAJgAmQCaAJwAjgCPAJAAkwCUAJUAlgA9AIgAiQFqAKQAigCLAIwAjQBlAGsApQCmAKcAqACpAKoAqwFUAVUBVgFXAVkBWgFbAVwBTgFPAVABUgE3AWoBXgETARkBXwFgAWEBYgFjAWQB0wHgAeIB5AHlAc8B1QHcAdEB5wHoAekB6gHrAfIB5gILAgwB/QH+AgkCCgHZAdoB0AHOAdYCbAJtAm4CbwJwAnECcgJzAnQCdQKUApUCkwKjAqQAAQBkAAIABwAUAB0AHgAnACgAKgArAC0AMgA0ADUAOAA5ADoAOwA8AEUASwBOAFEAWwBcAF0AXgBjAGoAcAB7AIEAhwCRAJIAmwDAAMkAygDYAOIA4wDlAOcA8ADxAPIA9AD5APwA/wERARgBHgEpAS8BNQE9AUgBvwHCAcQBxgHHAckBywHMAc0B0gHUAdcB2AHbAewB8AHzAfQB9QH2AfcB+AIXAhgCIQIiAlUCVwJYAlkCWgJbAlwCXQJeAl8CYAKCAoMCjwKWApcAAwAAAAEACAABAV4AKgBaAGAAZgBsAHQAegCAAIYAjACUAJoAoACmAKwAsgC4AL4AxADOANgA4ADoAPAA+AEAAQgBEAEYARwBIAEkASgBLAEwATQBOAE8AUABRgFMAVIBWAACAJsAoQACAJEAogACAJIAowADAWkBOAFDAAIBOQFEAAIBOgFFAAIBOwFGAAIBPAFHAAMBPQFIAVMAAgE+AUkAAgE/AUoAAgFAAUsAAgFBAUwAAgFCAU0AAgDjAVgAAgDrAV0AAgE2AVEABAGlAa8BkAGOAAQBpgGwAZEBjwADAacBsQGSAAMBqAGyAZMAAwGpAbMBlAADAaoBtAGVAAMBqwG1AZYAAwGsAbYBlwADAa0BtwGYAAMBrgG4AZkAAQFwAAEBcQABAXIAAQFzAAEBdAABAXUAAQF2AAEBdwABAXgAAQF5AAIB1wHdAAIB0gHeAAIB2wHfAAIB1AHhAAIB2AHjAAIADAAsACwAAAA2ADcAAQCuALgAAwDeAN4ADgDpAOkADwDzAPMAEAFwAXkAEQGQAZkAGwG+Ab4AJQHAAcEAJgHDAcMAKAHFAcUAKQAGAAAAAgAKABwAAwAAAAEFGAABADAAAQAAABwAAwAAAAEFBgACABQAHgABAAAAHAABAAMCkAKRApIAAgACAoIChgAAAogCjgAFAAEAAAABAAgAAQAGAAQAAQABAo8AAQAAAAEACAABAAYABQABAAEA3gABAAAAAQAIAAIADgAEAGUAawETARkAAQAEAGMAagERARgAAQAAAAEACAACAA4ABACIAIkBNgE3AAEABABFAEsA8wD5AAYAAAABAAgAAQR+AAIACgAcAAEABAABADQAAQAAAAEAAAAdAAEABAABAOAAAQAAAAEAAAAdAAEAAAABAAgAAQEuADUAAQAAAAEACAABASAAPwAEAAAAAQAIAAEAfgAFABAARABQAGYAcgAFAAwAFAAcACQALAGbAAMBzAFyAZwAAwHMAXMBngADAcwBdAGgAAMBzAF1AaEAAwHMAXgAAQAEAZ0AAwHMAXMAAgAGAA4BnwADAcwBdAGiAAMBzAF4AAEABAGjAAMBzAF4AAEABAGkAAMBzAF4AAEABQFxAXIBcwF1AXcABgAAAAIACgAkAAMAAQB8AAEAEgAAAAEAAAAeAAEAAgACAK4AAwABAGIAAQASAAAAAQAAAB4AAQACAE4A/AAEAAAAAQAIAAEAFAABAAgAAQAEAjAAAwD8Ab4AAQABAEgAAQAAAAEACAABAAb/4AACAAEBkAGZAAAAAQAAAAEACAABAAYAIAACAAEBcAF5AAAABAAIAAEACAABAB4AAgAKABQAAQAEAKwAAgAyAAEABACtAAIAMgABAAIAAgBsAAQACAABAAgAAQB8AAQADgAoADIAUgADAAgADgAUAWUAAgDSAWcAAgDeAWgAAgDwAAEABAFmAAIBFQADAAgAEgAaAbsABAHsAewCRAG8AAMB7AJEAb0AAgJEAAQACgAUABwAJAIdAAQB7AHsAewCHAADAewB7AIeAAMB7AJEAhsAAgHsAAEABADSARUB7AJFAAEAAAABAAgAAgA0ABcB1wHTAdIB2wHUAdgBzwHVAdwB0QHyAeYCCwIMAf0B/gIJAgoB2QHaAdABzgHWAAEAFwG+Ab8BwAHBAcMBxQHJAcsBzAHNAewB8AHzAfQB9QH2AfcB+AIXAhgCIQIiAlUAAQAAAAEACAABABQAigABAAAAAQAIAAEABgCVAAIAAQCuALgAAAABAAAAAQAIAAEABgBeAAIAAQDwAPQAAAABAAAAAQAIAAEABgAvAAIAAQBbAF4AAAABAAAAAQAIAAIAGAAJAI4AjwCQAJEAkgCTAJQAlQCWAAIAAgAyADIAAAA0ADsAAQABAAAAAQAIAAIAEgAGAJcAmACZAJoAmwCcAAEABgAnACgAKgArACwALQABAAAAAQAIAAEABgAVAAIAAQJXAmAAAAABAAAAAQAIAAIAbAAzAJ0AngCfAKAAoQCiAKMApAClAKYApwCoAKkAqgCrAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAd0B3gHfAeAB4QHiAeMB5AHlAecB6AHpAeoB6wKUApUCowKkAAEAMwAHABQAHQAeACwANgA3AFEAcAB7AIEAhwCRAJIAmwCzAMAAyQDKANgA3gDiAOMA5QDnAOkA/wEeASkBLwE1AT0BSAG+AcABwQHCAcMBxAHFAcYBxwHSAdQB1wHYAdsCggKDApYClwABAAAAAQAIAAEABgAeAAEAAgFwAXEAAQAAAAEACAABAAYAAQABAAIA3gDpAAEAAAABAAgAAgAKAAIAPQDrAAEAAgA8AOkAAQAAAAEACAACAA4ABAFpAWoBaQFqAAEABAACAE4ArgD8\"}"
  },
  {
    "path": "apps/v4/app/og/geist-semibold-otf.json",
    "content": "{\"base64Font\":\"T1RUTwAMAIAAAwBAQ0ZGIHIR/08AABlsAAC8I0dERUZznnHMAADVkAAAAdZHUE9TY4mY0QAA12gAACqMR1NVQsbFMjAAAQH0AAANHE9TLzI+rl/YAAANbAAAAGBjbWFwVC6iugAAEUQAAAgGaGVhZCxmteIAAADUAAAANmhoZWENAAmoAAANSAAAACRobXR4MmWPlAAAAQwAAAw8bWF4cAMPUAAAAADMAAAABm5hbWVgE49UAAANzAAAA3Zwb3N0/58AMgAAGUwAAAAgAABQAAMPAAAAAQAAAAEzMy4X/pdfDzz1AAMD6AAAAADiJx99AAAAAOInH33/3/8ZCSIDuAAAAAcAAgAAAAAAAAHbAFgA7AAAAs4AFwLOABcCzgAXAs4AFwLOABcCzgAXAs4AFwLOABcCzgAXAs4AFwLOABcEAAAXArcAUALVACsC1QArAtUAKwLVACsC1QArAtUAKwLJAFACyQBQAxkAKwMZACsCZwBQAmcAUAJnAFACZwBQAmcAUAJnAFACZwBQAmcAUAJnAFACZwBQAugAKwJYAFAC1gArAtYAKwLWACsC1gArAtYAKwLWACsC1gArAwEAKwLOAFADBwAeAs4AUAEiAFADiwBQASIAUAEi//MBIv/uASIATgEiAAwBIgAAASIAKgEi/+kCaQA3AmkANwJpADcCrwBQAq8AUAKvAFACSgBQAkoAUAJKAFACSgBQAmwABQOGAFAC7ABQAuwAUALsAFAC7ABQAuwAUALpAFAC/AArAvwAKwL8ACsC/AArAvwAKwL8ACsC/AArAv8ALQL8ACsEUAArApgAUAJ6AFAC9gArArEAUAKxAFACsQBQArEAUAKcADUCnAA1ApwANQKcADUCnAA1ApwANQLVAFACZgAbAmYAGwJmABsCZgAbAmYAGwK7AEECuwBBArsAQQK7AEECuwBBArsAQQK7AEECuwBBArsAQQK7AEECuwBBAs0AFwPEABcDxAAXA8QAFwPEABcDxAAXArIAHAKhABcCoQAXAqEAFwKhABcCoQAXAqEAFwJCABwCQwAcAkIAHAJCABwAwAArAkoAUALsAFACugBQAroAUAK6AFACugBQAcoAKwHKACsBygArAcoAKwHKACsBygArAcoAKwHKACsBygArAs4AKwLOACsCzgArAs4AKwLOACsCzgArAs4AFwLVACsCZwBQAmcAUALWACsBIv/xASIATgL8ACsCuwBBA8QAFwKhABcCQgAcAcoAKwHKACsCzgArBJcAFwSEAEECVgApAlYAKQJWACkCVgApAlYAKQJWACkCVgApAlYAKQJWACkCVgApAlYAKQO6ACkCbwBGAkkAKQJJACkCSQApAkkAKQJJACkCSQApAm8AKQKLACkCpgApAl8AKQJTACkCUwApAlMAKQJTACkCUwApAlMAKQJTACkCUwApAlMAKQJTACkCUwApAbAAMgJvACkCbwApAm8AKQJvACkCbwApAm8AKQJvACkCkQApAlkARgJ1ADICWf/oAQ0ARAENAEYBDQBGAQ3/6AEN/+MBDQBEAQ0AAgEN//YBDQAfAQ3/3wI3AEQBNP/9ATT//QE0//0BNP/9AnQARgJ0/+gCdABGAToARgE6AEYBQABGAToARgFAAAADfABGAlkARgJZAEYCWQBGAlkARgJZAEYCWQBGAl8AKQJfACkCXwApAl8AKQJfACkCXwApAl8AKQJQABoCXwApA+AAKQJvAEYCaABGAm8AKQGcAEYBnABGAZwAPQGcAEECMAApAjAAKQIwACkCMAApAjAAKQIwACkCewBGAa0ALQGtAC0BrQAtAa0ALQGtAC0CVQBGAlUARgJVAEYCVQBGAlUARgJVAEYCVQBGAlUARgJVAEYCVQBGAlUARgJJABYDRwAWA0cAFgNHABYDRwAWA0cAFgJ1AC8COgAWAjoAFgI6ABYCOgAWAjoAFgI6ABYCRAA5AkQAOQJEADkCRAA5AMEAKwE6AEYCWQBGAkoAJAJKACQCSgAkAkoAJAJKACQCSgAkAkoAJAJKACQCSgAkAkoAJAJKACQCbwApAm8AKQJvACkCbwApAm8AKQJvACkCbwApAm8AKQJvACkCbwApAm8AKQEgAFABIABQATcATgEgAEoBlQBGAlYAKQJJACkCUwApAlMAKQJvACkBDQBEAQ3/5wENAEQBDQAfAioARAE0//0CXwApAlUARgNHABYCOgAWAkQAOQJKACQCbwApAwAAMgK9ADIC2AAyAwoALQGuACsBrgArAs4AFwKiAFACtwBQAmUAUAJlAFACMwBQApoAPANHADICZwBQAmcAUAJnAFAEAAAcAqUALwLpAE0C6QBNAq0AUAKtAFADCAA3A4YAUALJAFAC/AArAskAUAKYAFACzwArAmYAGwJUABcCVAAXA1kAKwKxABwCmQAlAx0AUAO4AFAECgBQAskAUAKiAFADhwBQAu4APASIADcESQBQApwANQLyACwC8gArASIAUAEi/+8CaQA3AxoAGwQIAFACugA1Ax0AGwLrADIC8gAcAvwAKwL8ABcEHwAcAtYAUAMIAFACoQAXAqIAFwLgABwC2QAlApkAUAEiAFAC6AArAukATQL8ACsCVAAXAlwAKQJxACsCYgBGAfAARgHwAEYBxwBGAh8AMgLUACUCVAApAlQAKQJUACkDtAAvAioAHgJMAEYCTABGAkwARgJ4AEYCeABGAqcAMgLjAEYCUgBGAl8AKQJbAEYCbwBGAkkAKQJDACkCOgAWAjoAFgK8ACkCdQAvAnkARgK0AEYDRgBGA5gARgJbAEYCWgBGA00ARgKaADID9AAyA58ARgIwACkCVwApAlcAKQENAEQBDf/lATT//QJ1ADIDRwBGAmUARgKAADICswAyAuMALwJfACkCbwAWA8EALwKOAEYCqQBGAkkAFgJJABYCmwAvAr4ARgJZAEYBIABQAlMAKQJMAEYCXwApAjoAFgLIABcC9AArAnAAFwKbAC0CVQAlArAAMAGrACYCggA7An8ALwKZAC8CkAA5AogAOQJQACUChgAlAosAOQM1ACkDNQApAzUAKQM1ACkDNQApAzUAKQM1ACkDNQApAzUAKQM1ACkDSQApA0kAKQNJACkDSQApA0kAKQNJACkDSQApA0kAKQNJACkDSQApArAAMAHoABsCdQAWAnUAcQJ1AEACdQArAnUAKwJ1ADkCdQA7AnUAQAJ1ABMCdQA5AlgADANFACsDLQArA2gAKwMNACsDOgArA2AAKwM3ACsDagArA1kAKwM0ACsBkwAtAQ4AHgFqAC0BfAAtAX8AKwFtAC0BawAtAUsAHgF/AC0BcAAtAZMALQEOAB4BagAtAXwALQF/ACsBbQAtAWsALQFLAB4BfwAtAXAALQDsAAAJYAA+BwgAPgSwAD4A5QApAOUAKQEyAFABMgBQApIAKQDzADAA8wAwAkkAKQJJACkA5QApAUIAKQGtACkBhwApAij//wH8ACIB+gArAOMAKQEwAFABNwBQAn4AKQDnAC4A5wAuAkkAKQJJACkA4wApAaYAKQJWACkDkgApAjQAKQNgACkBQgAsAUIAHAGhACsBoQAcAYcAUAGHABwBfwApAX8AKgFrACoBawApAYQAKQGEACkCVgApAlYAKgGKACoBigApAYIAKQGCACoBcwApAXMAKQDnACoBsAArAbAAKwGvACsA6QArAOcAKgJoACoCaAApAXQAKgF0ACkBdwArAMIAKwIMADIClgBQBLAAPgcIAD4JYAA+BwcAPgNJACkDSQApAlgACAOxACsCqAAlAnkAIwJLADUDOQArAk8AKwJPACsDdgBQAZgAKQEBACkBtAAqARwAUAEcAFACQABQAkMAUAROAFACWABMA3YAKwJYADECSQApAkMAKwKcADUC4QA1Ar0ANQLWACoCuwBQA0YAUAJ8ADUCoQAXAi8AKQIvACkB8AAqAi8AKQJ8AFACLwApAiEAKwIdACkCLwApAi8AKgJAACkCDgApAg4AKQHaACkBnQApA1gAKQGrAAkCkwAXAqkAGwIkABwCmgAWAmQAKQJoAFMDMAApBHwAKQLFACsCeQArAx0AKwJ6ACwCxQArAnoAKwMdACwCeQAsBCwAKwLFACwCiQArApwAKwKcACsCkwArApMAKwKWACsClgArApYAKwKYACsClgArA14AFwHOACsCYQAsAvsAKwJhACwBzgArAmEAKwL7ACsCYQAsA1wAKwHOACwDSQArA0kAKwNJACsCPgArA2IAFwMuAFADYgAXAy4AFwNiABcDLgBQA2IAFwMuABcAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAA3AAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAABsAAAAKQAAACkBmQApANgAKQEQACkBEAApAbIAKQGOACkBjgApAYEAKQEZACkBoAApAXQAKQFJACkBHgApAY4AKQDXACkA5gA3AQEAKQC+ACkDNQApA0kAKQABAAADmP8kAGQJYP/f/hQJIgABAAAAAAAAAAAAAAAAAAADDwAEAmoCWAAFAAgCigJYAAAASwKKAlgAAAFeADIBCQAAAAAAAAAAAAAAAKEAAv9AAeX7AAAAAAAAAABWUkNMAMAAIPsCA5j/JABkA9ABBiAAAJcAAAAAAhYCxgAAACAABAAAABUBAgADAAEECQABABwAAAADAAEECQACAA4AHAADAAEECQADADIAKgADAAEECQAEABwAAAADAAEECQAFAD4AXAADAAEECQAGABwAmgADAAEECQAIAJAAtgADAAEECQAJAGABRgADAAEECQALADABpgADAAEECQAMADABpgADAAEECQAQAAoB1gADAAEECQARABAB4AADAAEECQEAABIB8AADAAEECQEBAAoCAgADAAEECQECAAoCDAADAAEECQEDAAoCFgADAAEECQEEAAoCIAADAAEECQEFAAoCKgADAAEECQEGABQCNAADAAEECQEHABYCSAADAAEECQEIABYCXgBHAGUAaQBzAHQAIABTAGUAbQBpAEIAbwBsAGQAUgBlAGcAdQBsAGEAcgAxAC4AMgAwADAAOwBWAFIAQwBMADsARwBlAGkAcwB0AC0AUwBlAG0AaQBCAG8AbABkAFYAZQByAHMAaQBvAG4AIAAxAC4AMgAwADAAOwBHAGwAeQBwAGgAcwAgADMALgAyACAAKAAzADIANAA5ACkARwBlAGkAcwB0AC0AUwBlAG0AaQBCAG8AbABkAEIAYQBzAGUAbQBlAG4AdAAuAHMAdAB1AGQAaQBvACwAIABWAGUAcgBjAGUAbAAsACAAQQBuAGQAcgDpAHMAIABCAHIAaQBnAGEAbgB0AGkALAAgAEcAdQBpAGQAbwAgAEYAZQByAHIAZQB5AHIAYQAsACAATQBhAHQAZQBvACAAWgBhAHIAYQBnAG8AegBhAEIAYQBzAGUAbQBlAG4AdAAuAHMAdAB1AGQAaQBvACwAIABBAG4AZAByAOkAcwAgAEIAcgBpAGcAYQBuAHQAaQAsACAATQBhAHQAZQBvACAAWgBhAHIAYQBnAG8AegBhAGgAdAB0AHAAcwA6AC8ALwBiAGEAcwBlAG0AZQBuAHQALgBzAHQAdQBkAGkAbwAvAEcAZQBpAHMAdABTAGUAbQBpAEIAbwBsAGQATgBvACAAdABhAGkAbAAgAGEAQQBsAHQAIABhAEEAbAB0ACAAbABBAGwAdAAgAFIAQQBsAHQAIABJAEEAbAB0ACAARwBBAGwAdAAgAGEAcgByAG8AdwBzAFIAbwB1AG4AZABlAGQAIABkAG8AdABBAGwAdAAgAG4AdQBtAGIAZQByAHMAAAAAAAIAAAADAAAAFAADAAEAAAAUAAQH8gAAAPwAgAAGAHwALwA5AH4ArAETASsBNwE+AUgBTQF+AY8BkgHOAekCGwI3AlkCuQK8AsgC3QMEAwgDDAMSAyYDKAM1A5sDqQO7A8AEDAQaBCMELwQzBDUEOQQ6BEMEXwRjBGsEdQSTBJcEmwSjBLMEtwS7BMAEzwTZBOME6QTvDj8eIR6FHp4evR7zHvkgFCAaIB4gIiAmIDAgMyA6IEQgcCB5IIkgqiCsILQguSC9IQchFyEiIVUhXiGZIZ0hqiGxIbUh5SHnIgIiBiIPIhIiGiIeIisiSCJgImUjziQMJGgk6iT/JbMltyW9JcElzCXPJjonfjADMBEwFzAcp4z4//sC//8AAAAgADAAOgCgAK4BFgEuATkBQQFKAVABjwGSAc0B5AIYAjcCWQK5ArwCxgLYAwADBgMKAxIDJgMnAzUDmwOpA7sDwAQABA4EGwQkBDAENAQ2BDoEOwREBGIEagRyBJAElgSaBKIErgS2BLoEwATPBNgE4gToBO4OPx4gHoAenh68HvIe+CATIBggHCAgICYgMCAyIDkgRCBwIHQggCCqIKwgtCC5IL0hByEWISIhUyFbIZAhnSGpIbAhsyHkIeciAiIGIg8iESIaIh4iKyJIImAiZCPOJAskYCTqJP8lsiW2JbwlwCXKJc8mOSd2MAMwCDAUMByni/j/+wH//wAAAcEAAAAAAAAAAAAAAAAAAAAAAAD+lADqAAAAAAAA/q/+dABSAE4AAAAAAAAAAAAA/+H/zv/P/8P+Uf5E/jP+LwAAAAD9XQAA/XkAAP1+AAD9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD85P0YAAAAAAAAAAD0PgAAAADhxQAAAAAAAOJFAAAAAAAA4hziiuJc4j/h1+HA4cDhpuH14e/h6OHl4eDg6QAA4WoAAODHAADhKOEf4RrhGeDi4OjgteCt4KUAAOCc4JPgh+Bl4EcAAN7IAADdpt0b3PwAAAAAAAAAAAAA3QvcSdqG0kcAAAAA0j8AAAmFBmEAAQD8AAABGAGgAbgCggKsAr4CyALWAtwAAAAAAzQDNgNAAAAAAAAAAAADPgNCA0wDVANYAAAAAAAAAAAAAAAAAAAAAANMA2QAAAN6AAADjgAAA44AAAOMA8IDxAPGA8wD0gPUA9YD2APiA+QAAAAAA+ID5APmA+gAAAPoA+oAAAPyA/QD9gAAA/YD+gP+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPmAAAD5gAAA+gAAAAAAAAAAAAAAAAAAAAAAAAD6AAAAAAAAAAAAAAD4AAAA+AAAAAAAAAD3APeA+AD4gPkAAAAAAAAAAAD4APyAAAD9gAAAAAAAAABAkMCegJLApoCuQKGAnsCXAJdAkkCogI/AlcCPgJMAkACQQKpAqYCqAJFAoUAAgAOAA8AFQAZACQAJQAtADAAOgA9AEAARQBGAEwAVgBYAFkAXQBkAGkAdAB1AHoAewCBAmACTQJhArACWgL9AKwAuAC5AL8AwwDOAM8A1wDaAOUA6QDsAPEA8gD4AQIBBAEFAQkBEAEVASABIQEmAScBLQJeApACXwKuAjoCRAKYAqACmQKhApECiAL7AokBZQJ2Aq8CigMFAo0CrAIyAjMC/gK4AocCRwMGAjEBZgJ3Ah8CHAIgAkYACAADAAYADAAHAAsADQASAB8AGgAcAB0ANgAyADMANAAYAEoAUABNAE4AVABPAqQAUwBuAGoAbABtAHwAVwEPALIArQCwALYAsQC1ALcAvADJAMQAxgDHAOAA3ADdAN4AwgD2APwA+QD6AQAA+wKlAP8BGgEWARgBGQEoAQMBKgAJALMABACuAAoAtAAQALoAEwC9ABQAvgARALsAFgDAABcAwQAgAMoAHgDIACEAywAbAMUAKADSACYA0AAqANQAKQDTAC8A2QAuANgAOQDjADcA4QA4AOIANQDbADEA5AA8AOgAPwDrAEEA7QBDAO8AQgDuAEQA8ABHAPMASQD1AEgA9ABLAPcAUgD+AFEA/QBVAQEAWgEGAFwBCABbAQcAXgEKAGEBDQBgAQwAXwELAGcBEwBmARIAZQERAHMBHwBwARwAawEXAHIBHgBvARsAcQEdAHcBIwB9ASkAfgCCAS4AhAEwAIMBLwAFAK8ALADWACcA0QA+AOoAYgEOAGgBFAMAAwEDDAMCAvwDAwMHAwQC/wLpAuoC7QLxAvIC7wLoAucC8ALrAu4BcAFxAZcBawGPAY4BkQGSAZMBjAGNAZQBdwGBAYgBZwFoAWkBagFuAW8BcgFzAXQBdQF2AYIBgwGFAYQBhgGHAYsBigGJAZABlQGWAbABsQG5AcUBxgHIAccByQHKAc4BzQHMAdMB2AHZAbIBswHaAa0B0gHRAdQB1QHWAc8B0AHXAboBuAHEAcsBmAHbAZkB3AGaAd0BmwHeAWwBrgFtAa8BnAHfAZ0B4AGeAeEBnwHiAaAB4wGhAeQBogHlAaMB5gGlAegBpgHpAacB6gGoAesAKwDVAHkBJQB2ASIAeAEkACIAzAB/ASsAgAEsAnQCdQJwAnICcwJxApICkwJIApQCiwIdAh4CIQLBArsCvQK/AsMCxALCArwCvgLAArUCowKrAqoClwKVAt4C4gLfAuMC4ALkAuEC5QLdAtsC3AJiAmMCaAJpAmYCZwJsAm0CZAJlAmoCawJuAm8AhQExAAAAAwAAAAAAAP+cADIAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAIAAQEBD0dlaXN0LVNlbWlCb2xkAAEBASn6RQD6RgH6RwL6SAT7EQwDavt7HAki+kwFHC4oDxwxIxG+HQAArEESAi4CAAEABwAOABUAHAAiACgAMwA9AEMASQBPAFkAYABnAG4AdQB7AIEAjACTAJ0ApACrAK8AugC8AMYAzQDUANoA5QDwAPcA/gEEAQoBEQEXAR0BJAEnATQBOwFBAUcBTgFUAVwBZwFuAXUBeQF/AYYBjQGTAaABpwGuAbMBuQG/AcoB0wHZAeQB6gHxAfcCAQIIAhcCJgIsAjcCQgJOAlQCXwJvAn0CjAKXAqMCrwK6AsACywLbAucC9gMCAxADHwMtAzwDSwNZA2gDdgOEA5IDoAOvA8ID1gPqA/ID+gQABAcEDgQVBBsEIQQsBDYEPARCBEgEUgRZBGAEZwRuBHQEegSFBIwElgSdBKQEqASzBLwEwwTKBNAE0gTZBOQE7wT2BP0FAwUJBRAFFgUcBSMFJgUzBToFQAVGBU0FUwVbBWYFbQVxBXcFfgWFBYsFmAWfBaYFqwWxBbcFwgXLBdEF3AXiBekF7wX5BgAGDwYeBiQGLwY6BkYGVgZkBm8GewaHBpEGnAaiBq0GuAbEBtQG4gbtBvkHBQcPBxoHIAcrBzYHQgdNB1sHagd4B4cHlgecB6oHuAfEB8sH0QffB+0H+wgJCBgIKwg+CEYITghVCFwIYwhqCHEIeAh/CIYIjQiUCJsIogipCLAItwi+CMUIzAjTCNoI4QjoCO8I9gj9CQQJCwkSCRkJIAknCS4JNQk8CUMJSglRCVgJXwlmCW0JdAl7CYIJiQmQCZcJngmlCawJswm6CcEJyAnPCdYJ3QnkCesJ8gn5CgAKBwoOChUKHAojCioKMQo4Cj8KRgpNClQKWwpiCmkKcAp3Cn4KhQqMCpMKmgqhCqgKrwq2Cr0KxArLCtIK2QrgCucK7gr1CvwLAwsKCxELGAsfCyYLLQs0CzsLQgtJC1ALVwteC2ULbAtzC3oLgQuIC48LlgudC6QLqwuyC7kLwAvHC84L1QvcC+ML6gvxC/cL/gwEDAYMDQwUDBsMIgwpDDAMNww+DEUMTAxTDFoMYQxoDG8Mdgx9DIQMiwySDJkMogyqDLEMtwy9DMUMzAzTDNkM4QzpDPAM9wz+DQUNDA0TDRoNIQ0oDS8NNg09DUQNSw1SDVkNYA1nDW4NdQ18DYMNig2RDZgNuQ3TDeYN7Q34DgIOEA4dDigONw5EDlUOaA5vDnYOfQ6EDosOkg6ZDqAOpw6uDrUOvA7DDsoO0Q7YDugO/w8dDzUPPA9FD0wPUw9ZD18PZg9tD3QPew9/D4YPjQ+UD5sPow+vD7gPww/LD9MP2g/hD+oP8Q/8EAMQChAREBsQIhArEDIQOxBCEEsQVBBbEGIQaRBwEHcQfhCFEIwQkxChEKgQtBDAEM8Q2xDpEPURAxEPER0RKxEyETgRPxFGEU0RVBFbEWIRaRFwEXcRfhGIEY8RlhGfEagRrxG6EcERyBHPEdYR3xHmEe0R9BIDEgoSERIYEiQSMBI9EksSUhJZEmASbBJ+EoUSlhKkEqxBYnJldmV1bmkwMUNEQW1hY3JvbkFvZ29uZWtDYWN1dGVDY2Fyb25DY2lyY3VtZmxleENkb3RhY2NlbnREY2Fyb25EY3JvYXRFY2Fyb25FZG90YWNjZW50RW1hY3JvbkVvZ29uZWt1bmkxRUJDdW5pMDE4RkdicmV2ZUdjYXJvbkdjaXJjdW1mbGV4dW5pMDEyMkdkb3RhY2NlbnR1bmkxRTIwdW5pMDFFNEhiYXJIY2lyY3VtZmxleElKSWRvdGFjY2VudEltYWNyb25Jb2dvbmVrSXRpbGRldW5pMDA0QTAzMDFKY2lyY3VtZmxleHVuaTAxRTh1bmkwMTM2TGFjdXRlTGNhcm9udW5pMDEzQk5hY3V0ZU5jYXJvbnVuaTAxNDVFbmdPaHVuZ2FydW1sYXV0T21hY3JvblJhY3V0ZVJjYXJvbnVuaTAxNTZTYWN1dGVTY2VkaWxsYVNjaXJjdW1mbGV4dW5pMDIxOHVuaTFFOUVUYmFyVGNhcm9udW5pMDE2MnVuaTAyMUFVYnJldmVVaHVuZ2FydW1sYXV0VW1hY3JvblVvZ29uZWtVcmluZ1V0aWxkZVdhY3V0ZVdjaXJjdW1mbGV4V2RpZXJlc2lzV2dyYXZlWWNpcmN1bWZsZXhZZ3JhdmV1bmkxRUY4WmFjdXRlWmRvdGFjY2VudHVuaUE3OEJ1bmkwMTNCLmxvY2xNQUh1bmkwMTQ1LmxvY2xNQUhSLnNzMDRSYWN1dGUuc3MwNFJjYXJvbi5zczA0dW5pMDE1Ni5zczA0SS5zczA1SWFjdXRlLnNzMDVJY2lyY3VtZmxleC5zczA1SWRpZXJlc2lzLnNzMDVJZG90YWNjZW50LnNzMDVJZ3JhdmUuc3MwNUltYWNyb24uc3MwNUlvZ29uZWsuc3MwNUl0aWxkZS5zczA1Ry5zczA2R2JyZXZlLnNzMDZHY2lyY3VtZmxleC5zczA2dW5pMDEyMi5zczA2R2RvdGFjY2VudC5zczA2dW5pMUUyMC5zczA2QWRpZXJlc2lzLnNzMDhDZG90YWNjZW50LnNzMDhFZGllcmVzaXMuc3MwOEVkb3RhY2NlbnQuc3MwOEdkb3RhY2NlbnQuc3MwOElkaWVyZXNpcy5zczA4SWRvdGFjY2VudC5zczA4T2RpZXJlc2lzLnNzMDhVZGllcmVzaXMuc3MwOFdkaWVyZXNpcy5zczA4WWRpZXJlc2lzLnNzMDhaZG90YWNjZW50LnNzMDhJZGllcmVzaXMuc3MwNS5zczA4SWRvdGFjY2VudC5zczA1LnNzMDhHZG90YWNjZW50LnNzMDYuc3MwOEFfSS5kbGlnVV9JLmRsaWdhYnJldmV1bmkwMUNFYW1hY3JvbmFvZ29uZWtjYWN1dGVjY2Fyb25jY2lyY3VtZmxleGNkb3RhY2NlbnRkY2Fyb25kY3JvYXRlY2Fyb25lZG90YWNjZW50ZW1hY3JvbmVvZ29uZWt1bmkxRUJEdW5pMDI1OWdicmV2ZWdjYXJvbmdjaXJjdW1mbGV4dW5pMDEyM2dkb3RhY2NlbnR1bmkxRTIxdW5pMDFFNWhiYXJoY2lyY3VtZmxleGkubG9jbFRSS2ltYWNyb25pb2dvbmVraXRpbGRlaWp1bmkwMjM3dW5pMDA2QTAzMDFqY2lyY3VtZmxleHVuaTAxRTl1bmkwMTM3bGFjdXRlbGNhcm9udW5pMDEzQ25hY3V0ZW5jYXJvbnVuaTAxNDZlbmdvaHVuZ2FydW1sYXV0b21hY3JvbnJhY3V0ZXJjYXJvbnVuaTAxNTdzYWN1dGVzY2VkaWxsYXNjaXJjdW1mbGV4dW5pMDIxOXRiYXJ0Y2Fyb251bmkwMTYzdW5pMDIxQnVicmV2ZXVodW5nYXJ1bWxhdXR1bWFjcm9udW9nb25la3VyaW5ndXRpbGRld2FjdXRld2NpcmN1bWZsZXh3ZGllcmVzaXN3Z3JhdmV5Y2lyY3VtZmxleHlncmF2ZXVuaTFFRjl6YWN1dGV6ZG90YWNjZW50dW5pQTc4Q3VuaTAxM0MubG9jbE1BSHVuaTAxNDYubG9jbE1BSGEuc3MwMWFhY3V0ZS5zczAxYWJyZXZlLnNzMDF1bmkwMUNFLnNzMDFhY2lyY3VtZmxleC5zczAxYWRpZXJlc2lzLnNzMDFhZ3JhdmUuc3MwMWFtYWNyb24uc3MwMWFvZ29uZWsuc3MwMWFyaW5nLnNzMDFhdGlsZGUuc3MwMWEuc3MwMmFhY3V0ZS5zczAyYWJyZXZlLnNzMDJ1bmkwMUNFLnNzMDJhY2lyY3VtZmxleC5zczAyYWRpZXJlc2lzLnNzMDJhZ3JhdmUuc3MwMmFtYWNyb24uc3MwMmFvZ29uZWsuc3MwMmFyaW5nLnNzMDJhdGlsZGUuc3MwMmwuc3MwM2xhY3V0ZS5zczAzbGNhcm9uLnNzMDN1bmkwMTNDLnNzMDNsc2xhc2guc3MwM2FkaWVyZXNpcy5zczA4Y2RvdGFjY2VudC5zczA4ZWRpZXJlc2lzLnNzMDhlZG90YWNjZW50LnNzMDhnZG90YWNjZW50LnNzMDhpLnNzMDhpZGllcmVzaXMuc3MwOGkubG9jbFRSSy5zczA4aW9nb25lay5zczA4aWouc3MwOGouc3MwOG9kaWVyZXNpcy5zczA4dWRpZXJlc2lzLnNzMDh3ZGllcmVzaXMuc3MwOHlkaWVyZXNpcy5zczA4emRvdGFjY2VudC5zczA4YWRpZXJlc2lzLnNzMDEuc3MwOGFkaWVyZXNpcy5zczAyLnNzMDhmX2YubGlnYXRfdC5saWdhdW5pMDQxMHVuaTA0MTF1bmkwNDEydW5pMDQxM3VuaTA0MDN1bmkwNDkwdW5pMDQ5MnVuaTA0MTR1bmkwNDE1dW5pMDQwMHVuaTA0MDF1bmkwNDE2dW5pMDQxN3VuaTA0MTh1bmkwNDE5dW5pMDQxQXVuaTA0MEN1bmkwNDFCdW5pMDQxQ3VuaTA0MUR1bmkwNDFFdW5pMDQxRnVuaTA0MjB1bmkwNDIxdW5pMDQyMnVuaTA0MjN1bmkwNDBFdW5pMDQyNHVuaTA0MjV1bmkwNDI3dW5pMDQyNnVuaTA0Mjh1bmkwNDI5dW5pMDQwRnVuaTA0MkN1bmkwNDJCdW5pMDQyQXVuaTA0MDl1bmkwNDBBdW5pMDQwNXVuaTA0MDR1bmkwNDJEdW5pMDQwNnVuaTA0MDd1bmkwNDA4dW5pMDQwQnVuaTA0MkV1bmkwNDJGdW5pMDQwMnVuaTA0NjJ1bmkwNDZBdW5pMDQ3MnVuaTA0NzR1bmkwNDk2dW5pMDQ5QXVuaTA0QTJ1bmkwNEFFdW5pMDRCMHVuaTA0QjJ1bmkwNEI2dW5pMDRCQXVuaTA0QzB1bmkwNEQ4dW5pMDRFMnVuaTA0RTh1bmkwNEVFdW5pMDQzMHVuaTA0MzF1bmkwNDMydW5pMDQzM3VuaTA0NTN1bmkwNDkxdW5pMDQ5M3VuaTA0MzR1bmkwNDM1dW5pMDQ1MHVuaTA0NTF1bmkwNDM2dW5pMDQzN3VuaTA0Mzh1bmkwNDM5dW5pMDQ1RHVuaTA0M0F1bmkwNDVDdW5pMDQzQnVuaTA0M0N1bmkwNDNEdW5pMDQzRXVuaTA0M0Z1bmkwNDQwdW5pMDQ0MXVuaTA0NDJ1bmkwNDQzdW5pMDQ1RXVuaTA0NDR1bmkwNDQ1dW5pMDQ0N3VuaTA0NDZ1bmkwNDQ4dW5pMDQ0OXVuaTA0NUZ1bmkwNDRDdW5pMDQ0QnVuaTA0NEF1bmkwNDU5dW5pMDQ1QXVuaTA0NTV1bmkwNDU0dW5pMDQ0RHVuaTA0NTZ1bmkwNDU3dW5pMDQ1OHVuaTA0NUJ1bmkwNDRFdW5pMDQ0RnVuaTA0NTJ1bmkwNDYzdW5pMDQ2QnVuaTA0NzN1bmkwNDc1dW5pMDQ5N3VuaTA0OUJ1bmkwNEEzdW5pMDRBRnVuaTA0QjF1bmkwNEIzdW5pMDRCN3VuaTA0QkJ1bmkwNENGdW5pMDREOXVuaTA0RTN1bmkwNEU5dW5pMDRFRkxhbWJkYXVuaTAzQTlsYW1iZGFwaXVuaTIxMDd1bmkyNEZGdW5pMjc3NnVuaTI3Nzd1bmkyNzc4dW5pMjc3OXVuaTI3N0F1bmkyNzdCdW5pMjc3Q3VuaTI3N0R1bmkyNzdFdW5pMjRFQXVuaTI0NjB1bmkyNDYxdW5pMjQ2MnVuaTI0NjN1bmkyNDY0dW5pMjQ2NXVuaTI0NjZ1bmkyNDY3dW5pMjQ2OHplcm8uc3MwOW9uZS5zczA5emVyby50Zm9uZS50ZnR3by50ZnRocmVlLnRmZm91ci50ZmZpdmUudGZzaXgudGZzZXZlbi50ZmVpZ2h0LnRmbmluZS50ZnVuaTIxNTN1bmkyMTU0dW5pMjE1NXVuaTIwODB1bmkyMDgxdW5pMjA4MnVuaTIwODN1bmkyMDg0dW5pMjA4NXVuaTIwODZ1bmkyMDg3dW5pMjA4OHVuaTIwODl1bmkyMDcwdW5pMDBCOXVuaTAwQjJ1bmkwMEIzdW5pMjA3NHVuaTIwNzV1bmkyMDc2dW5pMjA3N3VuaTIwNzh1bmkyMDc5dW5pMDBBMGh5cGhlbl9oeXBoZW5faHlwaGVuX2dyZWF0ZXIubGlnYWh5cGhlbl9oeXBoZW5fZ3JlYXRlci5saWdhaHlwaGVuX2dyZWF0ZXIubGlnYXVuaTMwMDNwZXJpb2Quc3MwOGNvbG9uLnNzMDhzZW1pY29sb24uc3MwOGVsbGlwc2lzLnNzMDhleGNsYW0uc3MwOGV4Y2xhbWRvd24uc3MwOHF1ZXN0aW9uLnNzMDhxdWVzdGlvbmRvd24uc3MwOHBlcmlvZGNlbnRlcmVkLnNzMDh1bmkzMDFDdW5pMzAwOHVuaTMwMDl1bmkzMDEwdW5pMzAxMXVuaTMwMEN1bmkzMDBEdW5pMzAwQXVuaTMwMEJ1bmkzMDE0dW5pMzAxNXVuaTMwMEV1bmkzMDBGdW5pMzAxNnVuaTMwMTd1bmkwRTNGbGVzc19oeXBoZW4ubGlnYWxlc3NfaHlwaGVuX2h5cGhlbi5saWdhbGVzc19oeXBoZW5faHlwaGVuX2h5cGhlbi5saWdhbGVzc19oeXBoZW5fZ3JlYXRlci5saWdhdW5pMjYzOXNtaWxlZmFjZXVuaUY4RkZ1bmkyMTE3bWludXRlc2Vjb25kdW5pMjExNnVuaTI0MEN1bmkyM0NFdW5pMjQwQkV1cm91bmkyMEI0dW5pMjBCRHVuaTIwQjl1bmkyMEFBbm90ZXF1YWxncmVhdGVyZXF1YWxsZXNzZXF1YWxhcHByb3hlcXVhbGluZmluaXR5aW50ZWdyYWx1bmkyMjA2cHJvZHVjdHN1bW1hdGlvbnJhZGljYWxwYXJ0aWFsZGlmZnVuaTAwQjVhcnJvd3VwdW5pMjE5N2Fycm93cmlnaHR1bmkyMTk4YXJyb3dkb3dudW5pMjE5OWFycm93bGVmdHVuaTIxOTZhcnJvd2JvdGhhcnJvd3VwZG51bmkyMTlEdW5pMjFFNHVuaTIxRTV1bmkyMUE5dW5pMjFBQXVuaTIxQjB1bmkyMUIxdW5pMjFCM3VuaTIxQjRjYXJyaWFnZXJldHVybnVuaTIxRTdhcnJvd3VwLnNzMDd1bmkyMTk3LnNzMDdhcnJvd3JpZ2h0LnNzMDd1bmkyMTk4LnNzMDdhcnJvd2Rvd24uc3MwN3VuaTIxOTkuc3MwN2Fycm93bGVmdC5zczA3dW5pMjE5Ni5zczA3YXJyb3dib3RoLnNzMDdhcnJvd3VwZG4uc3MwN3VuaTI1Q0ZjaXJjbGV1bmkyNUNDbG96ZW5nZXRyaWFndXB1bmkyNUI2dHJpYWdkbnVuaTI1QzB1bmkyNUIzdW5pMjVCN3VuaTI1QkR1bmkyNUMxdW5pMDMwNi5jeXVuaTAzMDh1bmkwMzA3Z3JhdmVjb21iYWN1dGVjb21idW5pMDMwQnVuaTAzMEMuYWx0dW5pMDMwMnVuaTAzMEN1bmkwMzA2dW5pMDMwQXRpbGRlY29tYnVuaTAzMDR1bmkwMzEydW5pMDMyNnVuaTAzMjYubG9jbE1BSHVuaTAzMjd1bmkwMzI4dW5pMDMzNXVuaTAzMDguc3MwOHVuaTAzMDcuc3MwOGRpZXJlc2lzLnNzMDhkb3RhY2NlbnQuc3MwOHVuaTAyQkN1bmkwMkI5dW5pMDJDOGJsYWNrQ2lyY2xlZGJsYWNrQ2lyY2xlZFN0cm9rZTAwMS4yMDBjb3B5cmlnaHQgbWlzc2luZ0dlaXN0IFNlbWlCb2xkU2VtaUJvbGQA6QIAAQAMABEAFgAcADEAPABEAEgATgB1AH4AgQCHAIwAkQCUAJkAngC0ALgAwwEMARMBGwEgASgBMAFcAWABdQGCAYoBkQGYAaIBqwH2AhUCLwJFAk8CVAJbAmECkAKpAsAC0QLcAuYC7QL0AwADBgMlAysDLwNBA04DWgNoA3MDfQOGA48DlgOdA6QDrAQPBGUEaASCBL0E5QTtBQgFJgUpBTYFOQVEBU4FVgVdBWQFfgWGBcIFzgX2Bf0GCAZOBlkGewaaBqgGxQbOBucG7AcWBysHOgdKB2YHeAd/B4MHjAeTB5wHpweyB70HwwfMB9UH4QfpB/QH/whCCIEI2AlHCakKDQprCsYLIAt3C6wLtQvBC+8MNwx/DMgM8w0tDWANeg24DdAOEQ5NDokOlQ7LDuwPHg8jD0UPaw+AD6kPsw/JD/EQCxAzEFoQfxCTELcQwBDjEPYRGBE6EUIRYRGBEaARvhHZEdwR9BINEiYSPhJDElMSahKAEpYSmxKjErASuxLMEt8S8BMDExUTJRM2E0cTWBNpE3oThxOME5wTrBO8E8sT2hPpE/gUBxQVFCMUMRQ/FE0UWxRoFHUUghSPFJwUqRS0FMAUzBTYFOQU7BT3FQIV7wbl9yEF+xQGDhK09xkLAdv3FgugdvladwsV9xH3BvsRBvde+wYV9xD3BvsQBg4V7wZO9yEF+xUGDhX3tez7tQYOe/cFC/cmUsQSCxWxqKaysW6lZWVucWVkqHCxH/dJFrGoprKxbqVlZm1xZWSpcLAfDktjWTeJH88GC8kdDvcauvcaCxLR9xQLEtv3FgsVgh1/9w8dC8/3W84Lohb3HAbG9zwF960Gxvs8Bfcc9wAdC4uTHQv3d38V48+xxKUfC/g4dRX3Zvc99z33Z/dl+z33Pftm+2X7Pvs9+2X7Z/c++z33ZR/dBPs6+xf3GPc69zn3F/cY9zr3OvcY+xj7Ofs6+xj7GPs6Hwv7Ku743XcLf+hPdvhT7gug9w0dC3/zL+f4TncL9yf3IPsnBgv38XsV90P3AvP3Oh/4XfsW/F0HJlNTKClTw/Ae+F37FvxdB/s69wIj90IeC6axHQuymqKnshrKVbhCQlReTGSib7J8Hgv7NuzXdq/v99TjM+8L1lPW9NZT1gvZxa7FqR8L4c2zxqcfC8fwBez7DCCuBw4StPcZ9273FAv4D3sV9zz3GfL3gB+2+8Qk90AHK4NQRSMb+x1N9wb3I/ckyPcH9x7iwlc1oB/3G5IF9ypqIun7Mhv7ZfsT+zb7Zvtl9xT7NfdkHwtXeW5lWRpDyVzgHs8EYG6isLGop7a1qG9lZm50YR8L2xb4evcF+/j3T/fk9wT75PdN9/D3BfxyBgtxS6UGs6pvaGpucmZlbaCniR9AiAUL9wn4qvsU+8cGC3fbKB0L97n3DgHJC05raE8eC/fDfxX3D+bL86gf+xeTBVx8ZHBSGz9auumGH5kd+zEl+wP7PPs98fsC9zQejx0L+xX8pvsY+KYF+w0G+xb8pvsW+KYF+x4GCzgHxXFRsD4b+xgu+wD7Lfsv6SP3GR8LBfsmBvs7+8L7PPfCBfsmBguQIAXf+AL7wiYGC4v3SPszdvladwtETm1Bbx8L9xT7CvcKCwG09xn3i/cZA0wdCwZ1b3wdCzCj2k73IBuJ97QVP1vJ7e25ydnZvE4oih8nWk8+HgsiHQNGHQsVWR0LtKqptLRsp2Jja29iYqttsx8L98D7NhX3LO/T9x0fCxXayL/NvWe4WpcfCwX7Hwb7yvvL98v7ywULe/cF9zry94v3BQsB0fcUA9EW9xQL92j3E/ch93kL9wb3Bfv7+wUL+3jO2rxaC1yctWnNGw73BhK09xkLe/cE+Jr3BAsBz/cY96/3GAP38XsV9zT13PcW9UvR+1O0H/sSqGmhxRrCubHX5L5WPpQe9xeRBfcdfC3u+z0b+zQrNfsQ+wjNWfdEYx/3JWmnalQaTlpsOChVvud+HvsYgwX7KJf2KPdFGwshHfeP9xT//4WAAP8AeoAAE573m38VE51AHRNdjjoFE273Dfiq+xQGE54/B8JtU6w+G/snQfsQ+y/7Mdb7DvcnH7HzFTRj3ejrs9ri5a0/KCxqOzAfCxWzHQG09xkD98R/Ffce69z3FJof+xiRBYYdlh0L28jF3dlUx0RxdoN6eh+W3wX3L8/7bgZr+3gF0garnqGQohuvp2thYG9uZ2pvnqmGH0CIBUiRx1zUGw7WA/gufxX7YPs59zn3Yfdf9zn3Ofdg92D3Ofs5+1/7Yfs5+zn7YB8L0B1zdXNqHwsV1gb3ErX3BtnrHr/7qEf3VQdFLWH7BfsFGg7RFvcYBvdQ9+QF++T3FPiq+xIH+1b77QX37fsUBwtYHQ75qxXvBuX3IQX7FAYOiR0OoHb3ofcF92v3BQv7VPuSBU33SAcLtvcb9xr3GQufdvlddwEL9xf3gPcWC/e2fxX3HOjE8uRUufs8pR+0HSKT3kD3MhsLOR3g9yGuHQv4EnsVXx33efsT9yP7aPtn+xT7I/t5+3n3FPsh92cf9wUE+xQ/6vc29zbX7PcU9xTXKvs2+zY/LPsUHwsBzPcW98n3FgM7HQugdviqd+b3BhLP9xn7F/cUE+jRFvcU+Kr7FAYT8InSFfcZ9wb7GQYOIh333MwdC5cds7SXmZwe3x0L+Ah7FfdI9fH3O6cf+xySBSV7U04iG/sKPuz3NPcy1vD3De3EUi6cH/cckgX3NW0q6vtJG/tc+xf7JPt4+3z3HPse91UfC/fEfxXyHewd8wQLAaf4nwOnFvif9wX8BQb3+fh5BfcE/IT7BfflB/v0/HkFC1Cav2bGG5T3XxVkdai1tqKpsrCmbWCKH2GKb25oGw4V1tO0z2L3jEwGch2NHeTEwOOPHz4GXYZxeGEbYXCeuYYfPQYzj8VW5RsOs7SXmZwf3x0L97X39wX7Lwb7rvvuBffu+xb9WvcW9+8HC7YV3R0LQIFeZ00bOFzL9wP3ArrM3sm4Z0eVH/cYkgX3E3sq1fscG/szI/sD+zwL90oEa3afqaignauqoHlubXZ3bB8LIx3i9xr7E9c/9xw21xILFdIGzvdCBfcQ+yf7IMgHC/cW+JsG98L8mwX3MPla+xb8qgb7xviqBfssBgv4B/cF+wz4eGAd9wf8ePsNBgstHfdcUx0L9xAdDvQd9xH7FPsRC/cK993oHQvW9xHZRNIT+Av7KveANeH5BHcSC6B296D3Bvdr9wUL9wX3T/cE9033BQv3DR0SogvTQ9r3EdUT7Av7PfP7AvczHwsFcGt8bWUaVbJqzgv7MyP7Avs9C/gQqAb3SCb1+y0L+xb7vPu/97z7FgshHfeN9xX7FPcU+xH3ERPugFodE/aA+HsHE/ZA+xEGE+5ATh0T7wDQyK2/pB9HB0BfaTxGbqK0fh77GIIFE+6AVh0L9xX7FPcU+xH3ERPuQFodE/ZA+HsHE/Yg+xEGE+4gTh0T7oDQyK2/pB9HB0BfaTxGbqK0fh77GIIFE+5AVh0L9xT7BPcEE7iA93F/FUEdE3SAjzQFE3kA9wL32Ab3Ij3b+yz7GTVL+wR2HvcXhQXBl62oyhvOrmRAH/tFaAX7CXRSWi8aE7iALtVW9wMeE7kAPB0TtgALFfdm9z33Pfdn92X7Pfc9+2b7Zfs++z37Zftn9z77PfdlH90E+zr7F/cY9zr3OfcX9xj3Ovc69xj7GPs5+zr7GPsY+zofK/fxFaijo6ioc6FubnN1bm6jc6gf91oWqKOjqKhzoW5udHVubqJzqB8OErb3G/gK9xL//6mAAP8AVoAAE734BHsV7uG81a8fE31QHRO+90QGLIVLQiIb+x5O9wH3KPckyfcH9xvxu1Q4mx/3G5IF9yVtL+77SBv7ZPsP+zP7aR8Tvftt9w37LfdgHgt7FfdA9wbT9x7oVcwzqB8T7M6ltL7UGvcGLtz7M/szLzr7BkKzWM5xHhPyM29VSS4a+x73BkP3QB73BgQvULHW0r+67u+/XERAT2UvHxPs99wEQGCqysS0r9jYtWdSTF9sQB8O9xT//4WAAP8AeoAAE5xA95t/FUAdE1pAjjoFE2qA9w34qvsUBhOcgD8Hwm1TrD4b+ydB+xD7Lx8TnED7Mdb7DvcnHhOcgLHzFTRj3ejrs9ri5a0/KCxqOzAfE5sAC3/w9xTh9yHxAbT3GfeL9xkD97j4thX7DzBLI24f9xeDBbqasqbEG9e8XC2QH/wQbgb7SPAh9y33MfH3A/c89z0l9wL7NB77CvvdFfeLBjiBXF5GG0dctOKFHw579wb3pfH3EPcFAfhk9xoD99p7Ffc39wHu9yv3HS7x+yVLVHZnaB+h90kF99b3BfxHBlr8LgX3GAa2nrunxxviv1U4NVdZNT9arM6AH/sZhAX7EJbnOPc6Gw57Ffcw9wHn9zL3Iivp+yMfE/Q+Umpgax/3KZjF0ugbzqpuWpsf9w+VBfcCcD/R+xkbE+z7ZDX7SfuB+2Ho+wv3RB/3AQQ4VsXe3cfB3NfAVTkzVFY8Hw6gdvhO86vbO/cYEvcB9xT3YfcUE9y9+NYVxvzWyh33CPcFBxPs2/sFBxPcv/sUBxPsV1AHDvcZE/lMHRP2CwG29xv3GPcZA30dCxXnxub3IO9b3zE7T1Q1N8FU0h8T9K+nmqSdH0WDbmNhG3B5mKSDH0GEBRP4gB0W+KH3BfwFBo+3xMf3CsoI9x/Vvr73ARr3Ei/h+zEeE9j7Nikx+yh9H/cagwXhlru63BvXsmFQT2hvKlgfE+j7VyVLKPtAGg4V6cnb9xP3FE3cLSxNOvsU+xPJO+ofzwR6fJCVfx/3DPdUBZB4jnRxGjNsWFYetvedFfsL+1MFhZ2JoaQa5qm9wZuahoGXHg73GgPbFvcW96D3PgbVqHJSjx+a+04F9xgGefdhhdRms0iVGdChwMngGvcWKd77LR77vQb3tfvcFfsz92v3LQbfumVFRlxlPR8L+yD2rO7493cS0fcVQvcM+wz3LBPw91sWE+Ta7gYT8NsdMPt7FRPo2QZCHWEd5xL3adYTsPc6+3gVz8GvzR8T0L1tsUmQHhOwqLYFPAZpUq9oBcSXenNzeH1sa3qYpn8fTnEFYh2MHRO894p/FRO62sKtzqYfE3qNMgUTfEgdE7wzY1xGTW6z5R73zPsU++wH+xPOQPcBHgv7IPbBdvladyId9wP3DOzMHfdz/kEV2QZCHTYd4PchAaH4owP3APsqFeYG2bOnzaIf92X44gX7GQb7E/wd+xv4HQX7GAb3UvyVBbAGfWYFcoF9gWgbRwYL6BVYb6K1sKKjxJYf9x6nBW0HOlVVNh4L9xoD2xb3Fveh9x0GlAb3J/uhBfchBvs297cF5am71ega9yAq3fs8HvunBveh+9wV+x/3a/cfBuG+ZURFWGc1Hwv3pM/7TAaOoaWjrqKnnhjEsay1vhrOVbpEQlFZPoIe14cFtZOgoK4bqKB5b3B8dmp2H2t2BShKe0VNGg46mG+cthqyqqbIxq9pVZQe9xaRBfJ8Qdj7JBv7KD1GKDC+X/c4bx/uep17ZxphZ3lPQWirw4Ie+xeFBQszHc33IVcd91rNJR0jHQGn+Q4Dpxb3Kwb3OfeX9zv7lwX3Kwb7g/f694D39AX7Kwb7NvuT+zn3kwX7Kwb3gPv2BQ6gdviqd+T3FRLP9xn7F/cUE+jRFvcU+Kr7FAYT8MvQKx3yFvcDBtK3qMyhH/dy+PwF+xsG+x78IPsh+CAF+xwG91X8kAW4BnZTBXODeX9sGzsGCyMdwR0OoHb3wfcF97x3Ih33v/cWA9sW9xb3wfe/+8H3Fvlamh0GDl4d9ycG3+T3MPuABfckBvts98z3ZfdyBfsyBvtv+4UF+DX7FAcLi/cF+Hj3Bcz3IQH3OPcWA7YWix0LA9sW9xb3bgbb5vdw+8kF9ykG+6/4Ivee98wF+y4G+6r72AX32PsWBwvRFsod94z7FAcL90P4aPtD+GcF+xIG90L8Z/tC/GgFCxL19xn7FvcUE+iI+yoV1wb3C7i39wIf+Kb7FPyiB112fmUeVgYT8AsB96T3FgP3pBb3FvesBveM+EJPHfeN/EIFCwHR9xYD+D4W9zMG+4T3n/d4958F+zEG+2z7lQX3lfsW/Kr3FveWBwsV9yrt8/c5H/hd+xb8XQckYFZAQWG/84ke+xeEBfssjOj7AvcvGwsW9xb3IuD3BTb4W/srBvvj/GIFIff4B/tq9wUV92r3sgX7sgcO97AW9wbujh03KN/7rgchvFz1HgsjW/sA+w8nuzfmH43PFWVyqbaMH7WMpqiuG7OhbmFgc21kHw6JHfuP+zKJHQ4B93v3GQOnFvif9wX8BQb3+fh5BfcE/IT7BfflB/v0/HkFCxWxqKaxsG6mZWZucGZlqHCwHwv3FPfJBuK3udHJqGA0HvvM9xT36wf3C0zf+wpIUnBSbx4L+xb7dQY5S1UqN2C94B73dvsW+44H+xzfNfcn3tGvwq0eC/cWA9sWih0LoHb46fcFAfeG9xYD94YW9xb46fds9wX8xfsF92sGDgH3dvcZA8QW+Gfu+9QG98z33QX1/FQo970H+8j73QUL+S0W+Vr7LAf7xvyqBfiq+xb9WvcwB/fC+JsF/JsHC7eXpbCyGsZVuEJJU2BSgx7WhwWfjqCbqhupoXZwCwP3bPsGFfcSBvtC+Gj3QvhnBfsSBvtD/GcFC9QdDvladwG29QPF+AUV2QaY91wF9yEh+yEHDhX3JAb3JvdBBcEH+yb3QQX7JAb3PvtcBQv3TPebBfsiBvsL+0r7D/dKBfsfBvdO+5oLfxX3GQb4mvl2BfsZBvwp+/0V4tDW7R8L2u7bHQugdviqd+D3IV4d+Kr7FAYL94YG93P3EPcT93f3ePsT9xT7dh/7gAsVPlnP9vcBvM3Z27dO+wb7BV5NPB8LZAZxfZenH/jP+xQHivzcBTK9ZtoeCyMd8B0O7h33jvuOBQv49ewBtPe1A7T49SYd9wgdnZuToKGnHwsiHQPbFvcW+On4DfcF/I8GCwGi+ccDovlaFfgt/Vr4LvlaBQuL9wX3ePcF95R3Ih33qPcaC/sU/Ef7M/hH+w/8R/s0+Ef7FAvRFvcU98gG3bOt3R699wJaBgsV9wz3AGgGwOYFPQZPJgUO9yju+yj3SPsM+0j7KCj3KAuL6fcq6/dWdwHR9xT3e/cYCxX7iwbelbq40BvPumI0kR8L94wG9zLgxfcC9wU2xvsyHwvz9yLcAbTd9yj16PT3I9wDCycd+Jj3BbcoHbb3GwuYHZYdCxVEBkj7QgX7EPcn9yBOBwv3Hwb3y/fL+8r3ywX7HwYL9Qb3KNI8+zj7NkQ8+ygfCwHb9xQD2xb3FPla+xQGCwPbFvhn9wX75fjp+xYGC/cy8/cC9z33PSP3AvsyCxLR/wB5gAD//4aAAPcUC0AGXnabvR/3ovch7vshC/sqFfcWBhN694AHE3wLA9uKFfla9/n9Wvf4BQsG+5T5WgX7MwZ0/EMVC/dwzPcuu86+w8wBtssLz/cmy8bPAfeO1gP3TAv3i/cFyuwStvcbw/e1C/cw+y73GveT9xoT6Av3FfsV9xn3ovcXE+wLEq/3Gfdu9xT7BPcEC9u5vuyVH6n3swX3Rwtw0QWDgHuGeht8f5ML9yD3efcgAdv3JwPbCwbbs3NXWWNzOx8O+D33IPcydwG29ycL9wP3EfcFAfdl9xYLdvc89wP3wPcXi3cLe/cG93vs90/3BRIL8fch4fcU8AszzxXj9woF+woHC/sU+2/7Wfdv+xQLAQABAAAiAACrAAGHAQCsAgGJAQCvAQCKAAAjAQGLAQCxAAGNAQAlAAGPAQCaAAAmAACyAAGRAACzAQGSAAC1AAGTAwAnAQGXBgApAAGeAQAqAAGgAAC2AgGhAAC5AAGiAgArAAGlAQAsAAGnAQAtAAGpAgCMAAAuAQGsAgC6AAGvAAAwAAC7AwGwAQCNAAC/AACOAAAxAACdAAAyAQGyAgA0AAG1AADAAAG2AwA1AAG6AwA2AADBAAG+AADCAgG/BAA3AQHEAwA5AQDFAAHIAADGAAHJAQA7AAHLAADHAAHMJwBCAADIAAH0AQDJAgH2AQDMAQCQAABDAQH4AQDOAAH6AQBFAAH8AQCnAABGAADPAAH+AADQAQH/AADSAAIAAwBHAQIEBgBJAAILAQBKAACRAADTAgINAADWAAIOAwBLAAISAgBMAAIVAQBNAAIXAgCSAABOAQIaAgDXAAIdAABQAADYAwIeAQCTAADcAACUAABRAACiAABSAQIgAgBUAAIjAADdAAIkAgCVAABVAAInAwBWAADeAAIrAADfAgIsBABXAQIxAwBZAQDiAAI1AADjAAI2AQBbAAI4AADkAAI5MQBtAQJrAACLAACPAAJsiQARCQL2HwBjAACbAAMWAQCeAACjAAMYAAFAAwMZFwAPAAANAAAbAQB5AAACAABgAAAgAAB7AAByAAB0AAALAAMxAAAEAAAQAAA9AAMyCAAOAABvAACJAABAAAM7AAAJAQBcAABeAAA8AAA+AAM8DQB1AQBpAAB3AABBAAAIAABqAAB4AABrAQADAABoAABlAANKBwAhAAAHAABzAABmAACqAAClAANSAACZAAChAANTAQBdAACgAABwAQNVAwBhAABnAAAFAANZBABiAABkAAAMAACmAACoAACfAAAeAANeAAAfAAAdAANfAQCcAANhAABfAACXAAA/AANiBwAGAAB6AANqPwCDAACCAAB8AQCGAAB+AACIAACBAACEAAB/AQCFAACHAAOqBgMPAgABAPwA/wEOASYBPAFUAXUBjgGmAcMB/QIXAk0CoAKjAqkCtALCAzMDSgNXA4EDoAOkA6gDrgO7A8gD4wPmA/oD/QQXBEoEfQSABKQE+AUEBRIFRQV2BZsFxgY8Bj8GlAbIBswG6QbxBwwHIQdEB0wHXgeJB7wHvwfTB/AIFwgmCDoIRAhUCHcIegitCLEItwjCCNAI0wkICU4JWgltCYgJngmxCcUJ2gpbCpELFAsXC10LzAvSC98L7QwIDA4MGQwnDHMMlAy3DRcNGg1DDVsNlQ3FDcsN0Q3dDf4OGg4iDisORg6tDscO4A8NDzYPTg9vD4gPoA+jD6YPrg/dD/EP+RBgEGYQdBCCEJAQlBCXEJoQoBCtELsQ1hD0EP4RHBFXEYQRjhGnEeESGRIoElgSeRKgErQSzBLlEvITIRM/E2cTehOUE6kTxBPdE+8T/RQTFC8UQxR3FJkUqxTEFNwU9hUcFTwVVRWyFhoWQRaAFyMXiheQF50XqxfsGAMYEBhBGIEY3BlNGVMZXBlqGYsZnRmrGbQZzRokGoQahxqWGrwayBrWGxIbJxs4G04buBu7G74b3xvjG+8b9xwUHC8cMxw7HEwcYByVHMUcyRzZHPEdFB0dHS0dbB2THaodwx3HHhEebB6HHrce3x7iHzgflh+lH7sf1h/uIAQgGyA0ILAgySEqIS0hjiH1Ig8iICIyIlkiYiJyIoMiyiLuIw8jiSOWI88j/CREJGQkgSSJJJUkxiUhJSklMSVFJX8lsyYNJjomSyZjJoQmnSa1JrgmuybEJxMnJicvJ1onfCeKJ5cnpSepJ60nsCfZJ+Yn8igAKD8oVShiKJso3CkdKXEpkCmdKakptynwKgIqDyo/Knwq0isdKyErLCtNK3MrnSu+K8sr/iwdLDMsNyxSLFYsaiyaLKkswizVLO4tMi1ALVUtaC2TLcMt3C4ILokuwi7RLxUvGC8eLysvRy92L8sv0S/UL9cwAjCGMIwwmTCsMMQw9DD4MPsxBzEjMSYxLDEvMTkxSzG9McAx3TILMigyUzJ8MpIyrzLOMxMzSDNOM600BTQJNB40ITRiNNA1GDVgNZE19TZvNqs26TcSN0U3SDd7N8I37jgqOC44MThMOIc4ozi1OS05ljmoOcE54joNOmY6bDp6Oo461ztHO1Y7bDuLO5E7oTvKPAY8Kzw6PFs8XjxkPIE8hDyWPQQ9Bz0jPVs9cD2dPcw91D3tPg8+Vj65PsI/Cz9hP2U/kz+XP5o/9kBCQKdBBEFwQdBCCUJlQqNC4EL+QzVDXEOPQ5JDlkOZQ7BD4UP5RCREnETiRRhFjEWcRclF2UXtRflF/EYHRhRGH0YiRoNGrkbERt9G7kcCRxtHKkdRR2pHzkf/SB1IV0hxSI5Iw0jcSRRJU0mWSaxJvEnSSeJJ9koCSgVKEEodSihKK0o6SnBKwUsES05LwUv+TEVMoUzgTTBNOE1iTa1NwU3oTfFOBE4VTjVOR05RTntOjk6/TtJO3U7yTwJPSU92T3lPlk+uT8FP0E/jT/dQC1AtUGNQoVD+UV9RcVGTUdRR+FJuUolSp1K2Us9TAVMgU1JTl1P0VGNUdFSLVKFUuFTKVRpVSVV4VdpWO1ZtVqBWrVbAVtRW61cCVxpXP1doV5BXu1frWBtYSVh3WIpYoVjEWNhY5Vj1WTZZSllxWX9ZqFnDWhhal1qvWsta71sUW0VbeVu3XIFdJ11aXgler17fXwVfRV9+X4Jfl1+mX79fz1/zYFRgjGDTYQJhe2HuYpJjD2OVY/FkSGSaZQxlUGVxZYdlu2XgZgBmT2Z2ZpxmyWb2ZyZnpWfuaAZoKGinaOZpFWlEaXJpnWoIalVqomsla09rf2uqa9dsA2w0bFZsgmytbPBtQ21tbZtt5W4xblZue26ibsRu7W8ob0JvZG+Jb6pvwm/icAJwInBPcHxwrnEFco1yxnLPctly4HLqcwJzF3Mvc0dzVXNjc2VzdHN2c4RzhnOIc5ZzpHO1c7dzuXPHc9Rz4XPjc+Vz+nQJdBd0J3QrdDx0QHRQdFR0ZHR0dId0i3SPdJN0l3SodLh0vHTAdNt063T8+077Ks2quKqhqriqxKqiwKCsoaqucaWqpauuq6SqrqrLEuPSRNND9xn7GfdZLKps91z7HKps9xxB1RP/vxX4Gvm0FfvC/kr3wgZB98IVIPsx9gcTEAAg9xJsFRMQAAgsXgYTGgAh6gaq94QVIAcTDgEU+zH2qj/quAYTBgBCbHVqwAYTA2EF6vcIFSz7Maz3EskHqsQVEwGhBWxNSSyqya5NqgcTABBAyegVEwAQEGxoBhMAOEGqBqzOFUjJawcTAC8B+zHuBvcx9w4VbE1oyWz7MaoHE+AGgcmuTqoG9zD9XRVsbQdIXgXsbAYT4AEA+zGqBs24BUmqBg78PQ7EoJQd+TMT2DIdE+gvCg7EOB3g9yESovkzE9wyHRPsLwr7NPiEIB3EOB3g1xKi+TMT3DIdE+wvCiX4hC8dxDgd2/cmEqL5MxPcMh0T7C8K+5j5ESEKxDgd2ygdovkzE9oyHRPqLwr7mPh/FekGE9bM5AUT2iAKxDgd5vcGEvdYKQoT3jIdE+4vCvud+IokHcQ4HeD3IRKi+TMT3DIdE+wvCvsl+IQlHcQ4He7sEqL5M/x097UT3DIdE+wvChPa+4v4kiYdxPtr3vctlB35WPtg9RPsohb3HAbG9zwFE+r3rQbG+zwFrFUdq7QFigb7lPlaBfszBnT8QxUT9C8KDsQ4HczH2McS95fI2MgT3zIdE+8vCiX4cD4KxDgd4iwK900xHRPUwDIdE+TALwpY+I0VE9LAKwoT1MAlChPRwCgKE9jAKh0T0cAmChPkwCcK9/+L9wXK9wuQ9wT3TfcF+wP3AxL4mvcWE7SiFvcfBhPU5vdEBfed+0T4XfcF+9sGE7T3T/fH9wT7x/dN99P3BfzIBxPMM/wzFfcx98QFufvEBg6thArLIgpjCg7LIgq89yFjClVvHcsiCrf3JmMK+y76OCEKy2Ed90f7A/cDMXb5B/cFErb3G/eA1hOP+ANoChPPagqXnfc0l+rvpfcwGfsckgUTlyV7U04iG/sKPuz3NPcy1vD3De3EUi6cH/cckgX3NW0q6vtJG/tc+xf7JPt4+2r3CPsa9z53HxOnd2pJChOPYh3L6x0T6H0d+y75phXpBhPYzOQFE+ggCssiCsL3BqcdTfmxLQq/IwoB24AK2xb3hgb3c/cQ9xP3d/d4+xP3FPt2H/uABveA/OkVIfh4ywq/IwrH9yYB24AK2xbZHQb3gPzpFSH4eO8d+yr5tyEK9xiLCvcYiwpdMx1XHQ5dMx3N9yFXHfdKzSAdXTMdyPcmVx3d92MhCl0zHcgoHdv3FhP0Rh3dyBXpBhPszOQFE/QgCl2PCl0zHdP3Bq8K90HTFfcZ9wb7GQYOXbUdXTMd2+wuHWj3tRP4Rh0T9OrbFfe17Pu1Bg5d+2ve9xiTHS4d91D1Ifc8E/zbFvgSVR0T+qu0BfcF+/j3T/fk9wT75PdN9/D3BfxyBw5dMx3PLArb9xZSMR0T6QBGHfe+1hUT5UArChPpQCUKE+MAKAoT8IAqHRPigCYKE+kAJwrehgpOoHb3t/cE91b3BSIdA9sW9xb3t/fb9wT72/dW9+33BfxvBg7MTAoStvcb+ApKChO6SwoTepAgBd/4AvvCJgYTvPdEBiyFS0IiG/seTvcB9yj3JMn3B/cb8btUOJsf9xuSBfclbS/u+0gb+2T7D/sz+2kfE7pNCg7MTAq8158dlvmrLx3MTAq39yafHfsn+jghCsxMCrcoHbb3G/gKSgoTuoBLChN6gFAdE7sAUwoTuoBNCvsn+aYV6QYTtoDM5AUTuoAgCsz7IPac6AoStvcb9yj3DPVKChNegEsKEz6AUB0TXwBTChNegE0KT/trFdkGE96AQh3MTArC9wYScx32SgoTvoBLChN+gFAdE78AUwoTvoBNClP5sS0KzCcdP3b3nfD3Ax2oSgoTvIBLChN8gFAdE70AUwoTvIBNChO+gPsa+bkmHfcAJx3L1bng94v3BQG29xv4BvcYA/gPexX3D/PC9w66H9jVUgaQpo2oqxq2+8Q290AHe4l8iHwe+ztB9xwGY29dc04b+x1N9wb3I/ckyPcH9x7iwlc+oB/3G5MF9yBqIun7Mhv7ZfsT+zb7Zvtl9xT7NfdkHw7Euh33BqB296b3BfcF9wX7BfdmEuf3F/fd9xYT7Pi8FvcW+IjK9wVMBhPc7PsWBxPsKvvdBxPc7PsXBxPsKk37Bcn8iPcX96b33Qf73fcFFfcF9937BQcOxKB298H3Bfe8SR3b9xb3v/cWE/bbFvcW98H3v/vB9xb5WpodBvcNxxXpBhPuzOQFE/YgCvwHdwr3iicdP3b5WncuHfcbdR0TdNtDChO8+Jb9asMdDvwHvQqSzCAd/AegdvlaSR3b9xZfCi7HFekGE9jM5AUT6CAK/AdnCnn3EXD3FnH3EF8KE/Qp0iQd/AdnCtn3GPsW9xb7FvcXXwoT8InSFRPk9xn3BgYT8PsZBg78B70KocwlHfwHIx3u7AHb9xYD20MKO9omHfwH+2ve9y12+Vp3ErX1R89H9xYT5NsWE/Cl0QoT6IMdE+SrtAX5WvsWBw78B4gddM+u9xatzhPRANtDCvcO1RUTyYArChPRgCUKE8UAKAoT4wAqHRPHACYKE9EAJwpfngpfJx34+Xfg9yEBwnUdA3IK9xFvHV8nHfj5SR3CdR0T7HIKpPmmFekGE9zM5AUT7CAKpdcK924G2+b3cPvJBfcpBvuv+CL3nvfMBfsuBvuq+9gF99j7FgcOpSMd2/cmIh29HfH3YiEKpfsg9sF2+Vp3Ih3n9wy9HfdgdgpAi/cF+Ol3xQoOQIv3Bfjpd+D3IcUKkswgHUCL9wX34/eai3cuHROw2xb4Z/cF++X46fsWBhPQ9237mk8KQKEKYov3BfjpdwH3BvcWA7j3rBXQqwX7zPhn9wX75feYB/cjzWLgJVsF9377Fvu6B/sBWAUO94WWCuIjHXsdDuKgXAp7HfeJzCAd4iMd2/cmex33JfdiIQrirx3iiB3b9xaQMR2A9xYT0kDbFood9/zVFRPKgCsKE9KAJQoTxkAoChPhQCodE8VAJgoT0kAnCt/7M+/bdvlady4d99j3F/sV9xUT+NsW9xb4lQYT9Pfa/JUFhQdodnljHjIn9wgGE/jvysfpH/lf+xf8egf7xfh6BfspBg7yIgoBtvcb+Cw4Cg7yIgq89yEBtvcb+Cw4ClH5OiAd8usd+Cz3GxPseB37Mvk1FekGE9zM5AUT7CAK8iIKwvcGAbb3G7MpCrU4Cvs4+UAkHfIiCrz3IQG29xv4LDgKYPk6JR3yIgq89yEBtvcb+Cw4CvsW+TpHCvIiCsrsAbb3G8b3tcc4Cvsl+UgmHfUiCirsErj3G/gs9xsT2Lx7FfEGssAFaMDMedcbXx0fE7j3CGrpUMweE9jT7AUlBmldBalYTptEG/tn+xT7I/t5+wKpMcFMH/eTkRVbY5ikax/3svgVBaRhmFNHGvs2Pyz7FB77YPeVFfc21+z3FLawgHepHvuv/BEFd7SAvsgaDvIiCr4sCrb3G68xHbH3GxPSQHgdxPlDFRPKwCsKE9LAJQoTxkAoChPjQCodE8dAJgoT0kAnCvhPJx0qkx0q9wUStvcb+Cb3J/sW9xYTtfgPexXo1K3Evx8TdUD4XvcFBxN2+9z3T/fI9wT7yPdN99T3BQYTdfxWBhNtQAfEV0KtLhv7ZfsT+zb7Zh8Ttftl9xT7NfdkHhOu9wUE+x1L9wv3HvcfyvcM9x73Hsr7DPsf+x5L+wv7HR8OjpQKcKB29yn3Bfdj9wX3FHciHfeJ9xsD2xb3Fvcp9wwG9znq2/cf9xss2vs5H/sM9xT7Fgb3FvxUFfdj9wkH4LZpR0ZgZzYfDuwiCgG29xv4JvcaA/iNkhXDRAX3BgYv9wcF38269fcXGvdm+wr3Nvtt+2z7DPs2+2b7afcU+zH3ZL23lJmrHvsS5RX7HUv3C/ce9x/J9wz3H/ceyvsM+x8rcUlbYR9P2gX7Bgbv+xAFhX15iXYbDqeSHW0KDqeSHcz3IW0KNvgdIB2nkh3H9yZtCvtN+KohCqf7IPbBdveg9wb3a/cFIh3q9wzQqx05/PlOCpJkHWUdDpJkHbz3IWUdSW8dkmQdt/cmZR37Ovo4IQqSYR33RjR2+Qb3BBLP9xj3Rdaq9xgTn/feaAoT32oKl5wF9ymR7dv3ERr1S9H7U7QepAoTr78KE5+W+xjgL/ckeAgT33ZoSQoTn2IdkmQdtygdz/cY96/3GBPsgQr7OvmmFekGE9zM5AUT7CAKkvsg9pz3BPia9wQSz/cY5vcM0/cYE3yBCj/7axXZBhP8Qh3Li/cF923o90L3BSId9933GAPb+HMV/HP3FvhzB9iytNMe9ycG+0n7NAX7AAfvjAXqxGNGSVdhNh/7EfsF9xEG9z7u4Pcc9wUv1/sgmB/3Vfc/BfcI+8sH+y40N/snHw5czR1coHb3udz3c/cFAfeG9xYD94YW9xb3ufcT3PsT93PrCvtz+xM69xMGDlw7Csf3JgH3hvcWA/eGFvcW3Qou99MhClz7eM7avMF2+On3BRL3hvcWbdYT+PeGFqIGb1wFE/RJClyctWnNG8/Br829bbFJkB8T+KGsBajdCg5c+yD2wXb46fcFEveG9xb7FvcZ+wz3CRPw94YW9xb46fds9wX8xfsF92sGhv3QwwqxNgp5HQ6xcApRbx2xNgrf13kdjPmrLx2xNgraKB3M9xb3yfcWE+w7Hfsy+aYV6QYT3MzkBRPsIAqxNgrl9wYSzPcWgikKg/cWE/I7HRPs+zf5sSQdsXAKYfmrJR2xcAr7FvmrRwqxNgrt7BLM9xaV97WV9xYT9DsdE/z7JPm5Jh2x+23c9wz3Bfj6dxLM9xbX4TX3SMD3FhP2zPeSFfs49iT3PogeY3BraYxWCFm2ZsCuqZecnh7VBxP6fHd4hHobc32Zn7CtqOq5H+m0weH3CRr4XfsW/F0HJlNTKClTw/Ae+F37FgcOsTYKy8fYxwHM9xbCyNjIwvcWAzsdjPmXPgqxNgrhLArM9xZ+MR1/9xYT0kA7HcX5tJEKw4v3JfsQdvladxKi+TMTcPesFvcxBveV+VoF+xwGE7D7W/zJ+1v4yQX7HQYO98NRHRKi+ikTcPdqFvckBvcQ+Hr3EPx6BfclBvdR+VoF+x0GE7BNHQ73w1Ed4PchEqL6KRN4VwoTuE0d+CXMIB33w1Ed2ygdovopE3RXChO0TR33wccV6QYTbMzkBRN0IAr3w1Ed5vcGEvfSKQoTfFcKE7xNHfe70iQd98NRHeD3IRKi+ikTeFcKE7hNHfg0zCUdqLYdl7kdl6IKkviDIB2XoHb5Wkkd96T3FhPo96QW9xb3rAb3jPhCTx33jfxCBS74fhXpBhPYzOQFE+ggCpdnCvdC9xFw9xZx9xCrCin4iSQdl6IKofiDJR2XiB33Pc+u9xatzhPRAPekFvcW96wG94z4Qk8d9438QgX3DviMFRPJgM6yvuCOH0gGE9GAXYd+fXUbfYCQmnkfE8UAn3J1lmsbE+MAKh0TxwC3jZyZnxublYV8nR8T0QB3o5+BqRsOOCMKfx0OOSMKzPchfx33dfkrIB04IwrH9yZ/HfcE+bghCjgjCtL3Bsgd91/5MS0K/GnTHUChCuKvHbBxHW8KDrBxHcz3IW8KR/gdIB2wcR3H9yZvCvs8+KohCrD7IPbBdveh9wX3a/cFIh3Y9wzash07/PlOCvtfIwoB9zj3FgO2FvgH9wX7DPh4YB33B/x4+w0GDvtfvB33E/kqIB37XyMKxygd9zj3FhPoVQqm+SUV6QYT2MzkBRPoIAr7XyMK0vcGErz3IfsR9xFx9xZw9xD7EPchE+S2FvgH9wX7DPh4BhPxYB0GE+T3B/x4+w0GE+qh+TAkHftfIwrS9wYS9zb3GfsX9xYT6LYW+Af3BfsM+HhgHfcH/Hj7DQYT8PcL+TAtCvtfvB33I/kqJR37XyMK2uwS3/e1+2X3FhPoVQoT8LT5OCYd+1/7a973GPcF+Hj3BRL3OPcWXPUh9zsTcLYWE+j3oFUdE2SrtAWK9wUGE3D7DPh4YB33B/x4+w0GDvtfIwrOLAq820fPrvcWrc4T0oBVCveH+TMVE8rAKwoT0sAlChPGgCgKE+GAKh0TxYAmChPSgCcKxF0dAbb3G/gG9xgDRB0OxF0dvNcBtvcb+Ab3GANEHfmrBOTEwOOPHz4GXYZxeGEbYXCeuYYfPQYzj8VW5RsOxF0dtygdtvcb+Ab3GBP2RB37MvmmFekGE+7M5AUT9iAKxPsg9pz3Bfc68veL9wUStvcb9yn3DPD3GBN+RB1F+2sV2QYT/kIdxF0dwvcGAXMd8vcYA0QdSPmxLQrEJx33OvL3Ax2k9xgT+kQdE/77Jfm5Jh3EOB3k9xYS91ssHRPeMh0T7i8K+1f4iCkdyyIKwPcVpx2P+a8rHV0zHdH3Fi4dWiwdE+pGHRP29yjRFWYKZW5xZWSocLEf90kWZgpmbXFlZKlwsB8OXTMd0fcVrwr3g9EVsaimsbBupmVmbnBmZahwsB8OzEwKwPcVEnMd9koKE7SASwoTdIBQHRO1AFMKE7SATQoTvoCV+a8rHfwHIx3k9xYSfHoKXwoT9G/QKR38ByMd5PcVEtn3GfsX9xYT6NtDChPwy9ArHfIiCsD3FgG29xu3LB28OAou+T4pHbE2CuP3FhLM9xaGLB2K9xYT8jsdE+wv+a8pHffDUR3k9xYS99YsHRN8VwoTvE0d+ALQKR2XIx3k9xYS90V6CqsKb/iHKR04IwrQ9xXIHfeh+S8rHftfIwrQ9xYS0HoKE8hVChP06PkuKR37XyMK0PcVEvc29xn7F/cWE8hVChPw9035LisdxF0dwPcVAXMd8vcYA0QdivmvKx34lov3BcL3A/fS9wUB+gb3FgOiFvccBsb3PAX3rQbG+zwF9xz3AB3y98Dx+8AF98D7q7oK+IMnHSr3Bfh49wUSzPcW98n3Fvd59xYTvDsdE3z4HZu6CkwwCkMdE7g0HRN4MQoTuC4KDkwwCsD3IUMdE7w0HRN8MQoTvC4KePiaIB1MMArA10MdE7w0HRN8MQoTvC4Ks/iaLx1MMAq79yZDHRO8NB0TfDEKE7wuCvsL+SchCkwwCrv3JlLEQx0TtjQdE3YxChO2Lgr7C/iVFekGE67M5AUTtiAKTDAKxmMdXikKTPcUE7k0HRN5MQoTuS4KE7b7EPigJB1MMArA9yFDHRO8NB0TfDEKE7wuCoj4miUdTDAKzuwhHXH3tV73FBO6NB0TekmWtnbFG5ygjY2TH+h6B3eBk6gf91YH9yI92/ss+xk1S/sEdh73F4UFwZetqMobzq5kQB/7RWgF+wl0UlovGhO6LgoTtCL4qCYdTPtr3vcM6PgC7kMd+w31K/cDE/j3d38VE/Ljz7HEpR+SYKBzqYAIE/RxanwdE/irtAXoegd3gZOoH/dWB/ciPdv7LPsZNUv7BHYe9xeFBcGXrajKG86uZEAf+0VoBfsJdFJaLxouCg5MMAqsx9jHIR2eyNjIi/cUE76ANB0TfoAxChO+gC4KE7sAs/iGPgpMMArCLAq09xlaMR1I9xQTqSA0HRNpIDEKE6kgLgrs4AoTpSBIBhOpICUKE6MgKAoTsKAqHROioCYKE6kgJwr3uX/fN/cPHSjuIR33bfci+x/3H/eL9xkTdYD3gH8V74zVsa7SCEW312PsG3wKdAo+THFcXh68Y0qjORv7EjFM+wR2HxNugPcYhAW9lbGsxBvLs2Q+H/sybQX7CXRAaSUaE3WALORR9YoeE7WAq98VSIhws60ayr2R0Jge8J8FaAeKNVVaRIgI+JT3iRUTdoD7iwbelbq40BsTtYDPumI0kR8OZWsK9zh3EtH/AHuAAP//hIAA9xT3j/cZE7b3+X8V9x7i9wH3Pvc+NPcB+x5BUmNbbx/3kPsUBxN2/VoHE3r3DgYTuo7aBRO2UqnEadYbbvMVOVvN9wH3A7vL3tS6S/sD+wFbSUIfDj8kCmgdDj8kCsD3IWgdUfj3IB0/JAq79yZoHfsy+YQhCj9hHfdCO3b4V/MhHfc51hOe97hoChPeagqaofcOlt/ZmfcLGfsYkQUTroYdHxOe+yzfI/cYdx4T3nRlSQoTnmIdP9QKE+iVCvsy+PIV6QYT2MzkBRPoIAo/JArG9waSCkj4/S0KZWsK9zh3ErT3GfePNQoTvDwKE7rVya3EqR8Teo48BRN89w35WvsU+5DVCh8TvLQKDoFrCi33mod3o3chHfePNQoTpwA8ChOmgNXJrcSpHxNmgI48BRNrAPcN+Vr7FPuQ1QofE6cAtAoTkwD3uvf8Twqcawqr2zv3GBK09xn3jzUKE6730/jWFfX7DAbCblCsQRv7GzT7APs/+z/g+wD3HR8TrdXJrcSpHxNtjjwFE273DfjWywYTtttLBxOuv/sUBxO2VyEHefzK2h0OVX/x97zx9353AbT3GfeY9xgD94D4khX3Er2ocKBommEZn2Zhl18b+zsrLPsv+y/rLPc79zrr6vdF9xts9w1D3x/vs3HP+xpVWLBKojuTGWovtYiwg6p/GUBtBer8exU4XMPn57rD3t27UzUnW1U5Hw5JMB1UHQ5JiQr7Q/esIB1JMB259yZUHfun+DkhCkkwHbkoHbT3GfeL9xkT9kwd+6f3pxXpBhPuzOQFE/YgCkkwHcRjHWopCl2mHfus97IkHUkwHcT3BowK+0z3si0KSYkK+zT3rCUdSTAdzOwhHXz3tXD3GRP6TB0T9Pua97omHUn7a973DPH3IeH3FPABtPcZ8fWy9xkD98N/FaSMhIMFb2t6a2AaU7JqzrO0l5mcHvcIHZ+elKGipx/i9J+jm6iUrBl0CvsxJfsD+zz7PfH7Avc0Ho8dDkkwHcD3GvsT1z/3HDbXIR1lMR1a9xkT4UD3w38VfArPChPhIJkd+zEl+wP7PB4T4UD7PfH7Avc0HhPpII8dT/e1FRPlQCsKE+lAJQoT40AoChPwwCodE+LAJgoT6SAnCkmiHft5oHb4Oe7m7gH3EqYKDmU+HbYKE+0AWh0T9QD4ewcT9ID7EQYT7IBOHRPuAGQKE+0AVh0OZT4dwNebHZD4bS8dZT4du/cmmx37Lfj6IQplPh279yZSxLYKE+1AWh0T9UD4ewcT9SD7EQYT7SBOHRPtgGQKE+1AVh37LfhoFekGE+tAzOQFE+1AIAplPh289wAStPcZz/cMyIIKU/hp5R1lPh3GYx3J9xnBggpN+HMtCmU+Hc7sIR1797VznB0T7QD7IPh7Jh2H+zbs13av7/Hb9x7jM+8hHfeN9xX7EfcRE/cA95z3eBX3LgZKe2BmThs/W8nt7bnJ2dO6VzWRH/szBq/8ahX3LO/T9x0f90nB21UHE/sA93YHE/qA+xEGE/aATh0T9wBkCjCj2k73IBsOT5wKa6UdT6B2+E7z9zh32ygd0V4KE/a+HS3HFekGE+7M5AUT9iAK/Bx6HfwcKgpeHfiq+xQGDvwc2B2RzCAd/BygdviqSR3R9xQT6DoKLccV6QYT2MzkBRPoIAr8HCoK5vcGEm73EXH3FHL3EBPoOgoT9CjSJB38HHod/BzYHaHMJR38HCoK7uwB0fcUAzoKO9omHfwc+2ve9y12+Kp35vcGkAqJ0i0K/BwqCuIsCmrPrvcUr84T0QA6CvcO1RUTyYArChPRgCUKE8UAKAoT4wAqHRPHACYKE9EAJwot+yru03b4qnfm9wYSz38K9zv3GfsW9xQT9ToKE/mJ0t8K91D9+VkKE/b3AfkkLQr79ZgK+/U2HQH3AfcUA4j7KlkKDvv1Nh3g9yEB9wH3FAOI+ypZCvcK+R4gHfv1+yru+N1JHfcB9xQT6Ij7KlkKnfkZFekGE9jM5AUT6CAKaioK91h3ux0OaioK91h32/cmux0t92IhCmr7IPbBdviqd/dYdwHR9xTJ9wwD0Rb3FPcnBt/k9zD7gAX3JAb7bPfM92X3cgX7Mgb7b/uFBfg1+xQH90B2Cvvvi+7493cB0fcVA/dbFtruZAZxfZenH/jP+xQHivzcBTK9ZtoeDvvvi+7493fg9yEB0fcVA7kK+w/5myAd++mL7vfx95qLdxLR9xUTsLkKE9C1+FRPCvvvrB376Yvu+Pd3EtP3Ff//f4AA/wCAgAAT4Kn3wxW1mwX7VQcyvWbaHhPQ2u5kBnF9l6cf93oH6K9u1UtzBfeT+xQHivvEBRPgQ28FDvd7oHkK91D3C/dR9xQTrtEW9xT3xgbgsb7IzKNaNB77xvcL98YH4bC9yMmoXzMe+8r3FPfrB/cYR9L7AkFUZERzHtB0VbQ9GxO2SFVmSnEfE9aI5QUTzvsIBg5PoHkK92H3FBOsVgoTtFIdE9SI5wUTzPsIBg5PoHb4Tucv88D3IRLR/wB1gAD//4qAAF4KE7ZWChO6Uh0T2ojnBRPW+wgG90DMIB1PoHb4Tucv87v3JtYK92H3FBO2VgoTulIdE9qI5wUT1vsIBtP3YiEKT4cKT6B2+E7nL/PCLArR/wB1gAD//4qAAPcUSjEdS/cUE6iQVgoTqRBSHRPJEIjnBRPIkPsIBve01RUTpKArChOooCUKE6KQKAoTsFAqHROiUCYKE8iQJwpP+yrn2nb4Tucv8xLR/wB1gAD//4qAAF4KE9b3pvsqFekG7crF540f9+sH9wxL3vsKHhPaUh0T6ojnBRPm+wj8qvcU98IGE9bltr3Q0KNZMR77VYoiB2V0c2UeSAYOVSQKAbT3GfeY9xgDNAoOVSQKwPchAbT3GfeY9xgDNApR+I8gHVXUCveY9xgT7DQK+zL4ihXpBhPczOQFE+wgClUkCsZjHWopCmr3GBPyNAoT7Ps3+JUkHVUkCsD3IQG09xn3mPcYAzQKYPiPJR1VJArA9yEBtPcZ95j3GAM0CvsW+I9HClUkCs7sIR1897V99xgT9DQKE+j7JfidJh1GJAox4RK09xn3mPcYE9ilfxXtBqyzBXGzvX3EG/cy8/cC9z0fE7jYdcxluh7R4QUpBhPYbmgFpGNamVMbmB0/oEqxXB/3YJgVbXKTm3cf91X3gQWTc49uahr7A1tLOR77FvdDFfcCuszeqKSDfJ4e+1T7gAWEo4enqxoOVSQKwiwKtPcZZTEdZ/cYE9JANArE+JiRCvfff/El8/cf4fcR8ybwIR33mPcd94v3GRN398R/Fd7QqsC5H1a40GzfG3wKE7d0CjhIbFZeHsBdRqo4G5gdHxN3+z3z+wL3Mx7zBMgK3btK+wL7A1tLOR8Tb/iW93XoHQ5lhQpe+xV29x73Avfo9wD3OHcS0fcN+w33FveH9xgT9tH7KhX3FvdeBmOqu3PLG/ct2vcR9y73Ljz3EfstR1xzYm8f93n7Fgf3i/z4FRP6M2Xd4uWx3OPksDwvHxP2MmY7Mh4OZfsVdvce8/fy5y/zIR33j/cU+xD3EBPc+L37KhUT7PlABxPq+w8GE9qJPAXGbFCrRRv7LED7Efsu+y7X+xH3LB8T3M/GrL+oH/tzB/sS94YVPVzM9wL3ArrM2dm7UPsI+whcUDwfDvuNoMQKE9DkHRPgSmFsQ3YfiPIFE9D7DAYO+42gdvg89wLM9yGgCubMIB37jaB2+Dz3Asf3JqAKgvdiIQr7jfsg9sHECvsU9xn7DPcHrQqG/ZEVE+TZBsfwBewHE+L7DCCuBg4mf+33/u1iCg4mf+33/u289yFiCkr48yAdJn/t9/7tt/cmYgr7OfmAIQomYR33PEF2+F3tEsH3GfcZ1oL3GROe96VoChPeagqaoQUTrfcPkd3D7BrkVLn7PKUetB0TnpIuzUb3EHwIE950ZUkKE55iHSZ/7ff+7bcoHcH3Gfdb9xkT7HYd+zn47hXpBhPczOQFE+wgCib7IPag7ff+7RLB9xm69wyr9xkTfHYdQftvFdkGE/xCHXGL9wL/ANCAAPcA/wC5gAD3Ai0d93f3FjP3GBP00fhwFfxw9xT4cAfjvbvTHhP4xrllXFJiXkWMH2KMBfsBB7qMBRP03o3LaUAaRklqQR5L+wLLBvcY9yDB9yPpSs0qoR8T+NehtcbTGvcIKtX7Hh4T9PsrKDL7MR8O+3w9CgH3FfcUA8UdDvt8i+73Htv3Cu4B9xX3FAO494EV3zcGIbxc9R7JCtP3INv7IPcK9yHu+yH3EfsU+xE3KN/7CjcHDvt8PQqk7xL3FfcUE9D3sBb3Bu70HQcT8PcR+xQHE9D7ETco330KE/CO+MNPCvt8+3jO2rys7vfk7hL3FfcUqdYT+Lj4RxXf+64GO6ddxXkealMFE/xJClyctWnNG8/Br829bbFJkB+hrAX3Au4GE/iOHTcHDvt8+yD2rO735O4S9xX3FFP3DBPwxR0m+3sVE+jZBkIdSzkdjB0TuPeKfxUTtEIKE3SNMgUTeEgdE7hACg5Ldx2C+PcgHUs5HeDXrh29+PcvHUs5Hdv3JlLEjB0TtveKfxUTtUIKE3WNMgUTdkgdE7ZACvsB+PIV6QYTrszkBRO2IApLOR3m9wYtHUnNSfcR2PcQT8dPUx0TuED3in8VE7ggQgoTeCCNMgUTeEBIHRO4QEAKE7RA+wb4/RUTskD3EfcGBhO1APsRBvde+wYVE7iA9xD3BgYTuQD7EAYOS3cdkvj3JR1Ldx06+PdHCks5He7sLR1cuvdctWGTCiz5BSYdS/tr3vcM80R2+Kp3LR33NfVIUx0T2veKfxUT2UIKE7mNMgUTvJlVHRO6q7QFiviq+xT7xwYT2kAKDks5HczH2MctHYnI2MiOUx0TvID3in8VE7xAQgoTfECNMgUTfIBIHRO8gEAKE7sAvfjjPgpLOR3eLArR9xQ/z0fX91POUVMdE6kQ94p/FROpCEIKE2kIjTIFE2kQSB0TqRBACvD4/BUTpSArChOpICUKE6MQKAoTsFBLY1k3iR8TsJDPBhOikCYKE6kQJwo/i/cV+wB2+Kp3EqH4shNw920W9ysG91j4qgX7HAYTsPsb/Cn7HPgpBfsbBg73RlAKEqH5sBNwRQoTsEYKDvdGUArg9yESofmwE3hFChO4Rgr36MwgHfdGUArbKB2h+bATdEUKE7RGCveExxXpBhNszOQFE3QgCvdGUArm9wYS95UpChN8RQoTvEYK93/SJB33RlAK4PchEqH5sBN4RQoTuEYK9/jMJR1rnQowlwowsB33DPkeIB0w+yru+N1JHaH4oxPo9wD7KhXmBtmzp82iH/dl+OIF+xkG+xP8Hfsb+B0F+xgG91L8lQWwBn1mBXKBfYFoG0cGn/kZFekGE9jM5AUT6CAKMDYd5vcGAfcPKQoDVAqa+SQkHTCwHfcc+R4lHTA2HeIsCvcLMR0T01QK94D5JxUTyysKE9MlChPHKAoT4yodE8cmChPTJwo6PQoBxPhnA8QW+Gfu+9QG98z33QX1/FQo970H+8j73QUOOj0KzPchtQr3RviBIB06PQrH9ya1Ctn5DiEKOj0K0vcGzh33PfiHLQr8aNMd+++sHU+HCkA3HfcGHRO493F/FRO0QR0TdI80BRN49wL32AY3ChO4LtVW9wMePB0OQDcdwPchYQpz+JogHUA3HcDXYQqt+JovHUA3Hbv3JmEK+xD5JyEKQDcduygdr/cZ925gChO293F/FRO1QR0TdY80BRN29wL32AY3ChO2LtVW9wMePB37EPiVFekGE67M5AUTtiAKQDcdxvcGEq/3GVkpClGdHfsV+KAkHUA3HcD3IWEKgviaJR1ANx3O7BKv9xlr97VkYAoTuvdxfxUTuUEdE3mPNAUTevcC99gGNwoTui7VVvcDHjwdE7T7A/ioJh1A+2ve9wzoT3b4U+4Sr/cZ90f1SGAKE9r3cX8VE9lBHRO5jzQFkgYT3HVvfB0T2qu0BYr32AY3Ci7VVvcDHjwdDkA3HazH2McSr/cZmMjYyJFgChO8gPdxfxUTvEBBHRN8QI80BRN8gPcC99gGNwoTvIAu1Vb3Ax48HRO/AK34hj4KQDcdwiwKr/cZVDEdTmAKE6kg93F/FROpEEEdE2kQjzQFE2kg9wL32AY3ChOpIC7VVvcDHjwd5uAKSAYTqUAlChOjICgKE7CgKh0ToqAmChOpICcKZTIKIR33jzUKE5w8ChOaQB0TWo46BRNsWwoTnEQKDmUyCsD3IWYdUfiPIB1lMgrA12YdjPiPLx1lMgq79yZmHfsy+RwhCmUyCrsoHbT3GfePNQoTmwA8ChOagEAdE1qAjjoFE2sAWwoTmwBECvsy+IoV6QYTlwDM5AUTmwAgCmUyCsZjHWcpCmShHfs3+JUkHWUyCsD3IWYdYfiPJR1lMgrO7CEdeve1djUKE50APAoTnIBAHRNcgI46BRNtAFsKE50ARAoTmgD7JPidJh1l+2ve9wzzRHb4Tucv8yEd92f1STUKE80APAoTzIBAHROsgI46BROuAJxVHRO1AKu0Bfiq+xQHE80ARAoOZTIKrMfYxyEdp8jYyKM1ChOeQDwKE54gQB0TXiCOOgUTbkBbChOeQEQKE5/AjPh7FcO2tsPDYLVTU19hU1O3YMMfxwR0e5uioZuboqGbe3V0e3t1Hw5lMgrCLAq09xljMR1gNQoTlJA8ChOUiEAdE1SIjjoFE2SQWwoTlJBECsX4mBUTkqArChOUoCUKE5GQKAoTmFAqHRORUCYKE5SQJwr8Cdwd/AmgXArwHZHMIB378qB2+FT3mot3Etn3FBOw2Rb3FPla+xQGE9D3PvuaTwr8Cfsg9sF2+Vp3Etv3FPsU9xj7DPcIE/DbFvcU+Vr7FAaF/kHDCvuUIx0B9y/3FAPv98MVwqAF+9j3FPgJB+GsbdVTdgX3j/sU+8AHNmoFDkwwCsT3FiEdYiwdU/cUE7k0HRN5MQoTuS4KE7ZW+J4pHT8kCsT3FZIKivj7Kx1JMB3C9xYhHW0sHWX3GRPpTB0T9vtm97AVZgplbnFlZKhwsR/3SRZmCmZtcWVkqXCwHw5JMB3C9xWMCvsK97AVsaimsbBupmVmbnBmZahwsB8OZT4dxPcVIR3J9xnBnB0T70CP+HErHfwctx38HCoK5PcWEnL3GmT3FGH3GhPoOgoT9G/QKR38HLcd/Bz7a973LXb4qnfk9xWQCsvQKx0g+yru03b4qnfk9xUSz38K9y73GfsW9xQT9ToKE/nL0Mkd9wH9hVkKE/b3Q/kiKx379TYd5PcVwB33Q/kiKx1VJArE9xYhHW0sHXL3GBPyNAoT7C74kykdSzkd5PcWLR1NLB1Wkwpg+PspHfdGUArk9xYS95ksHRN8RQoTvEYK98bQKR0wNh3k9xYB9xMsHQP3APsqFeYG2bOnzaIf92X44gX7GQb7E/wd+xv4HQX7GAb3UvyVBbAGfWYFcoF9gWgbRwbh+SIpHTo9CtD3Fc4d93/4hSsdQDcdxPcWEq/3GVwsHVmdHVD4nikdZTIKxPcWIR1rLB1roR0v+JMpHfagdvg57ubuAfcS9xX3ZPcVA/cS+L8VaD8o1/w59xX4Ofdktwpo+2TKCg6zoHb4Oe6Zd+b3BvsA7hL3EvcV94l/ChPNrAr4DPy/FfcUBhOt+Kr7FAcTtonSLQrOi+731u7m7gH3EvcV93qmCvh8/L8V1x0O9wk9CgH3FfcU93D3FAP3sBbJCvei93B9CvcG7o4d+3D3EfsU+xE3KN99Cg77e/gFzUzS913RErbz9wTwON449wITuPc1+AUVE7THs6Kvmx8TdF+TrH+tGxNymZqNjZEfzoIHE3h/hZCfH/cBB+RXuyYyU2ZAfh7vhwWpkZ6brBusnnZkHyJ2BRO4RXxib04aUrtq0R6lzRVwfpegn5qYppEf0ZsFfAdcbXFhHg77e/gF1vdX1gG28vcd8wP3a/gFFfLQz/TyR9AjI0dHIyLQR/If1gRfcq/Jx6Swt7ejZ05Nc2dfHw7EoJQd+TMT2DIdE+gvCg6Yi/cF92/3Bvcr9wUB21IKA9sW96cG9zru3/ce9x8o4Ps6H/sl9yv4DvcF/JAG96H86RX7H/dv9x8G5bplQ0NcZjEfDq2ECls7CuAdDls7Csz3IeAd91fMIB0pOwoiHfdZ9xYD2xb3Fvjp99v3oPsW+y/72wYOkKB296T3Bfdo9wUB9xn3FgPH96QV1Puk9xb3pPd39wX7d/do+A33BfyP+9lCBg73RvsVdvcq9wX4ePcFEr33Fvga9xdg9xcT+L37KhX3FvcqBhP0+HL7KvcX95sGE/gz+On8bQZX/GUFM4FtX1cbaQb3bRagqJizkcCz9/4Y93P8eAYOXTMdVx0OXbUdXY8K9/8jHQH4U/cWA6cW9zoG95H32wX72/cW99wH95L73AX3OQb7qPf3sgoFDpsnHf8A5oAA7f8Ac4AAd+f3BRK69xn3t/ca+wL3GhP69+Z7FfdC9wng9xLqUM8gpR8T/OiivMHbGvcDINX7NPsp+wFA+wJ+HvcYgwW8kr+q2Rvev2pWQExvUYwfQowFKAfUjAUT+tSM02c7GkVPXSswTbXOhR77GYUF+xWS9wk09zsbDt8jHakKDt8jHeDXqQr7OPmbLx2jIx0iHQP4ihb3Lwb7v/f3hB0Oo6BcCiIdA/iKFvcvBvu/9/eEHdz4QCAd9wcjCgH4yvcWA8IW5wbrvMvvlB+y+EUF93b86fcW+Vr8cAZd/KAFXod3b2YbUQYO94WWCr+6HfIiCgG29xv4LDgKDr87CiId97j3FwPbFvcW+On3uPzp9xf5Wvy9Bg6OlArFIgpjCg5czR1Ki/cC+Ox3nwoOSov3Avjsd+DXnwr3V/ktFYId91gjHQG29xv3UfcP91H3GwP4Axb3D9cG91ee9xX3APcsGvcs+xX3APtXnh7X+w8/B/tXefsV+wD7LRr7LfcV+wD3V3ke+1H3qxXk0sj3Cpoe+94H+wqaRMjkGvfM+zkV994H9wp70k4zGjNETvsKex4Op7Ydj6B294L3A/f9dwGw9xb3tPcWA/hbFvcW+VrLHQ73HNkK97j3F3D3FxP42/laFf1aBxP0+KL7KvcX95sGE/gj+On7F/zp+7j46QYO97eL9wX46XciHfdd9xf3XPcWA9sW+az5WscKBg74CdkK9133F/dc9xZv9xcT+vng+yoV9xf3mwYT/CT46ccK/VoGE/r5kAYOv+wKIh3c9xbc9xcD97f7KhX3Fvcq92j5WvsX/On7uPjp+xb9WvdnBg6Y4h0D2/laFf1a96cHswoG9x/8BVoK94biHdT3FgP5SUMK/PkW/Vr3pwezCgb3H/wFWgrkaQr3I/cFAfc5UgoDx/jpFfT86XgK+38G+Ar8BVoK+IdpCvcj9wUB+MpSCgPCFucG67zL75QfsvhFBfd2/Ol4CvxwBl38oAVeh3dvZhtRBvmg93gV47xkP0FbZDIf+x/3eAYO+EhpCvsF9wb3k3cuHfe5UgoT3tsW9xb36fe5++l4CvsWBhO++5P7ufeT+xYHE975SPwFWgqSZB1lHQ7oJx33YPX3YvcFAbf5MAP4E3sV90b3CvD3O6wf+x4GKXFHUiob+wZC1/cUfB/3jvX7jgb3FprU1/cGG+zPUSmlH/ceBvc9avsK7/tGG/to+xP7Ift7+3n3E/sh92gfDugnHfdg9fdi9wUBtvkwA/gIexVfHfd7+xP3Ifto+0b7Cif7PWof9x4G7aXPxewb9wbUP/sWmh/7jiH3jgb7FHxCP/sGGypHxO1xH/seBvs7rPcKJvdGGw78B3cK/AdnCnr3EW/3FnL3EF8KE/Qq0iQdX54K9xmgdvf99wwd97T3FgOm+OkV90r86fcW93UG3cvB7N+2WTYe+3b3FveOB/ccN+H7JzhFZ1RpHvds92L3BfyaBw74BycdP3b3vvcG9133BXt3Lh35GPcbE3bbFvcW977zBhO2+1ie9xD7CvdVG18d93n7E/cj+2j7VfsP+wv7V3cfIwYTrve++xYH+M78+RX7FD/q9zYfE7b3Ntfs9xT3FNcq+zYeE677Nj8s+xQeDrBxHQHY9xr3qPcWA/j9Fvla+6cH+zwqOfsgLrtB5W0f+zb7twX3IQb3J/ehBZQG9x37oQb7H/gSFTVYr9HSvrHhH/cf+2sGDvcci/cF94z3DB33sfcZA/dlFvcW93EG4MrC7Ne8W0E+UVonHvsFB/dH9wTo9yj3Hi3o+x85RmhVaR/3avdi9wX8mvsF90oHDuFpCtfjM/dIEvctUgoT3L34phXy/KbGCtfzBhPs4yMHE9zn+xYHE+wvJAf4CPupWgroOwoB98/3EQP3EPegFSv7oAX3GgbV928Fupqdla0bl/uo9xH3qJYGrZ2BXJkf1vtvBfcaBiv3oHPTYbFSkxn3KvdnBfcF/MP7BQf3KvtnUoRgZXNCGfcC990V97MG+yP7XgUO8icd90L3BFT3BfdA9wUStvcd+Cj3HRO8jgr7CEHZ9xx/H52UnpCejqyPvoO7eggT3PBntYWzkZSMlY2VjggTvPsGdkRJIRv7WfflFfcFoNLN9Bv3CNQ8+xuYHxPce4J6hnqJY4ZrkSqvCBO8XJ5Qk2KFgYqAiH+ICA7yi/cm+xF2+On3BRKi+WITcPesFvcxBvdN+JMFy6KmocEbmvcFXAY0RlUxax8TsPsn/Dj7XPjIBfscBg74HpEd+FP3FvfZ9xYTuPoa+yoV9xYGE3j3gCQH+2X3obIK+6f79wX3Ogb3kffbBfvb9xb33Af3kvvcBdIGDsyRHdv3Fvf69xYTuPjM+yoV9xYGE3j3gPsFB/t396GEHfe4++8FzQYO9wf7KveANeH3a/cF97x3Lh33v/cWVvcWE7r43vUdPvkEmh39WvcW98H3v/vBBhN62AYOl7kdmKB291z3BfghdwH3pPcWA/cF91wV9zP7XPcW91z3M/cF+yAG93n4IU8d93r8IQX7IAYO1pEd+Nb3FhOw+Nb7KhX3FgYTcPeAJAf7Svek94D39AX7Kwb7NvuT+zn3kwX7Kwb3gPv2+4L7+AX3Kwb3OfeX9zv7lwXOBg7P+yr3gDXh9yz3A/f9dxKw9xb3tPcWXfcWE7r4r/UdN/kEyx373QcTet8GDo+gdvf99wP3gnciHfe09xYD92b5WhX7Fv1a9xb3dQbdy8Hs37ZZNh77dvcW944H9xw34fsnOEVnVGkeDvwHdwrehgrfIx3u7BLY9xaV97Wo9xYT9M8dE/z70vmpJh3yJx33XvcE9173BQG2+ToDjgr7BUPV9xR7H/gmBvsUe0NB+wUb+133zhX3E5zT1vcEG/cE00D7E5wfDkqL9wL47Hfu7BKi+Lr8N/e1E/C4HRPovvk7Jh1SMApDHRO4NB0TeDEKE7guCg5ne/P3vPMStvcK+wr3HfcW9wak9xgT1PfOexX3M/cA7fcw9ygn8fstHxPsQ1BsVmcflPcDw6besgjgs6nF4xr7BooFVHlzSW4eE9T7FlJWLvtVGiGkNbpXHkzB03PUG4zzFTpTyOSNH+KMxcbcG9fATzUyVE48Hw5Yi+v3Gbpc3/cR6xLR9xb3WPcY+wL3GBO60Rb3ngb3HdjD6h8T2tNXuTKSHhPc1pO3s8ka6jvA+yIe+4AGE7r3l/xKFfsV9xn3FQbCrXFgZGlyVB8TvHL3bRUj9xHzBsSuc2ZkaHJSHw77OaB2+EfuXh34R/ef7vwfBg77OaB2+EfuzPchXh34R/ef7vwfBvcfzCAd+2KgdvhH7gHR9xT19xYD0Rb3FPhH94D3k/sW+zD7fgYO+wqgdvdl7vcT7gH29xQDvfdlFcT7ZfcU92X3Ke77KfcT95/u/B/7dlIGDsr7KveNKO735O4SsPcU98f3FWD3FRN4sO4VE7j7jfcUBxN09yr4HQcTtPsq9xUHE3T3jQcTeDX4R/wlBlv75wVIgnRuYhv3OBaao5SokLCt94oY9zr75AYOSjAdVB0OSjAduvchVB37NPeoJR1KMB3A9wYhHWspClymHfur964kHfezKgoB+C/3FAO6Fvc1Bvdf944F+473FPeNB/df+40F9zMG+3P3n/dp958F+zMG+1X7jAX3jPsU+40H+1X3jQX7NQb3afufBQ4gf/D3KuH3GuISqfcY91P3GPsG9xcT9PegfxX3I+bH7M9avzigHxP41J21s78a6DfE+xn7EDZUMYEe9xiGBbOPqqK9G8Ctc2Nfa3BXjB9bNbsGE/TJjLNsWRpfYnFMTWOpuIge+xiHBSGQ50n3IRsOQioKAdH3FPdU9xQDbR0OQioK3NcB0fcU91T3FANtHfd0yBWCHUIqCtz3IQHR9xT3VPcUA20d90nIFe8GTvchBfsVBg5uKgrCHQ5uoHb4qnfg9yHCHbz36SAdnYv1993uAfh09xUDvRbgBvcHHfxH9xX4qvw9BmX7+AVchnhyaRtlBg7Zi/cMKHb4qnctHffq9xUTeNEW9xT31Qb3C/vVBfUG9wn31AX71PcV+Kr7MAcTuPsj/DL7I/gyBfsxBg5IoHb3be33b3cB0fcU91n3FAPRFvcU9233Wftt9xT4qvcRHQYOVSQKAbT3GfeY9xgDNAoOUaB2+EfuAdH3FPdi9xUD0Rb3FPhH92L8R/cV+Kr8YwYOZYUKPyQKaB0OOaB2+EfuAfd19xUD93UW9xX4R/dM7vyFKPdMBg4wlwowNh3c1wGh+KMDVAr3RfkaLx2y+xZ2+fF3AbT3F/cM9wr3CvcXA/e4+ysV9wr3Rgb3Lp7q5/cYGvcYLOf7Lp4e91n7CvtYB/sueSou+xka+xnsLvcueR77DPeIFdG4vNabHvuiB0CbXrzRGveC+xsV96IH1Xq3W0UaRV9bQXoeDmudCm+gdvcz9PeidwHR9xT3gPcUA/hGFvcU+KqwCg6q+xZ29yfuKPItHfdi9xVt9xQT1NH4phX8qvhF+yf3FAcTtPeOBxO4KfhD+xUGE9j8R/ti+EcHDvdFi+74R3cB5woD0Rb5Tviq4x0GDveX+xZ29yvu+Ed3EucKcPcUE/r5efsrFfcU944GE/wm+EfjHfyqBhP6+TMGDlH7Fnb3J+4B0fcUsvcUsvcVA/eB+ysV9xT3J/c8+Kr7FfxH+2L4R/sU/Kr3OwYOUOcdA9EWowr3TOcd4PcVA/kaFvcV+Kr7FQb81PyqFaMKkIvp9yrr6u4B9xr3FPd79xgDvfhHFd/8R8EK+2gG99fACvfzi+kt9fce6+ruEvh09xX3evcYE7z4dBbpHfsL91b8PQYTfGX7+AVchnhyaRtlBhO8IeAH9wcdBveD++kV+wL3KvcC9wod956L6fco7irr91Z3LR33WPcU93v3GBPe0Rb3FPeG91j7hveMBvcy4MX3Ah8TvvcFNsb7Mh77DPdW+xQGE977VftY91X7FAf4x/xMFfsDBhO+9yr3Awfbs3NXHxPeWWNzOx4OJn/t9/7tYgoOTX/z9xbl9xbzAbT3HAP3xH8V9xbp1fcUqB/7GwZMemFoUBtEXrregB/3J+X7Jwbelri60hvItGdJnB/3Gwb3FW8s2PsXG+wdDk1/8/cW5fcW8wH4OvccA/e7fxX3M/P3Avc99z0j9wL7M/sXLD77FW8f9xsGzZy0r8gb0rhcOJYf+ycx9ycGOIBeXEQbUGGuynof+xsG+xSo6UH3FhsO/Bx6HfwcKgri9wYScPcRb/cUdPcQE+g6ChP0Ks4V9xH3BvsRBvde+wYV9xD3BvsQBg779ZgKa6Ud90Z/80R2927t9xLzf3ctHfho9xgTdtEW9xT3btkGE7b7IZ3uMvcjG/Id+yMoMvsheR89BhOu9277FAf4ZvxOFThcy/cDHxO29wK6zN7du0r7Ah4TrvsDW0s5Hg5boHb3Wun3KOkB4vcX91n3FAP3WfduFfsT+24F9xwG9wX3WgXr+1r3FPiq+3cG+yk7UfsAR7NX0W0f9wvVFUxoprq6rqbKH+77KAYOdvsq79J2+Er3AK/cOvcZEvcBXgoT7vcBFvcU974G5bW90c2mWy8e+6wHYXRxaB5mJ8YG9wPAx/cAH/fZB/cORtz7AkpRdE5sHvcM9wUHE/bc+wUHE+6/+xQHE/ZXUAcT7jrGBw6pi+n3P+r3P+Mz90wS9zL3Ffd69xgT3PcyFveMBvcv48r3B/cJNMz7MB/7C/c/9gYT7OMgBxPc6/sVBxPsK/sABxPcM/cAB/eD/EkV+wL3P/cCBte3a1RVYG0+Hw7ZoHb3atL3LesB6/cU4PcO4fcUA/cY918VNvtfBfcWBsr3PgWslp2WrhuQ+2r3DvdqjwavnIBqlx/J+z4F9xcGNvdfd7tgp1iRGfcr9y0F6/y5Kwf3KvstV4ZgbnhbGef3fxX3uQb7JvspBQ5Vf/Pq7V/s8/MStPca95b3GRO8fh1AXcDngx+NkpGNkRunj6+FtHoIE9zPbamFpowIE7xOeGJpTxv7DveKFc2btrHKG9i6UiiQH4SKBRPcaod5jDmxCBO8ZJxikWyGCA5li/cW+wF2+EfuEqH42BNw920W9ysG9xn4AAW6nKqjthuV7mcGNUhbL2wfE7Ax+5z7HvgoBfsYBg73wHsK+C/3FPeM9xQTuPmn+ysV9xQGE3j3dT8H+zX3Vfdp958F+zMG+1X7jAX3jPsU+40H+1X3jQX7NQb3afuf+3P7nwX3NQb3X/eOBfuO9xT3jQf3X/uNBbgGDoR7CtH3Fver9xQTuPhz+ysV9xQGE3j3dTIH+0H3Vfd4958F+zEG+2z7lQX3lfsW/Kr3FveWB/d2+5YFwAYOn/sr93VB1fcj7fdvdy0d91n3FGL3FBO6+Hb7KxX3FAYTevd1BxN8NPhg9xEd/Kr3FPdt91n7bQYTeuIGDj/7FXb5QHcB93j3FAP3eBb7KvcU9yoH92T4qswKDj/7KvdbKe34eXcS93j3FBNw9wRaFfcIBhOwJvcUBxNw8PcJBxOw7SkH91H4ecwK90/8eQUqBg6Rewr4gfcUE7D4gfsrFfcUBhNw93UwB/se91nVHftU+6QF5Aq8Bg60+yr3dEHV4PT3onctHfeA9xRg9xQTuvib+yoV9xQGE3r3dAcTfDb4YLAK+4wHE3rgBg5PnAr8CdwdSaIdQioK7uwtHVu791T3FBP0bR0T7NvaJh1Vf/P3Eu33EvMBtPihA34dRV+43H4f95EGOn9eXkYb+xL3dBXbl7e50RvQuF07lx8OMDYd7uwSofij/Cz3tRPwVAoT6Kz5LCYdvqB2+Nf3F4t3EqL5LROwohb3GgYT0Pdb+Nf3W/zXBfcZBvuU+VoF+y0GDuqL/wBwgAD/AfSAAPcFErb3GvsY97Xj97b7GPcZE9S4Fve19wUGE+Qzj0b3AfceGvcu1er3E/cT1iz7LvseRvsBMoceE+j7Bfe29wUH+yKKBRPk4brE7PcTGvdc+xX3I/ti+2H7Fvsj+1z7E8Uq4VweE9T7IowFDmaL7viU7gGi+NYD+K4Wyu5oBmaBoLR5H/s3+C0F62VjtzYbPCi/BrKXdmKcH55c+2j8igX3GQb3Ivfs3ftgBSiyrmLfGw6Ri+734+8B9yn3BPc39wQD+OcWsu5pBmJ0pbUf95/u7/ziJ/P8RvcE+Eb3N/ufByHATvcKHg5Le+//APKAAOv/AMuAAO8SsPcHMPcHE/D3vHsV9PW4zL8fSeUFTVg+ZUsbMFG91NbFuuaJH7uKBewHW4oFE+hPikqt2BrEvLDXxM9mVrUe0uIFylEusy8b+yAsP/sDPLlV3XIfE/ApclVIMBr7EvQz9y4eDqYiCgG79xv31vcaA/fsmQr7fqB2+Hvu9xB3EvdS9xYk8hPw91IW9xb5WgYT6CQGLWptNh5OKAYT8PcsBg54i/cF+Ij3BRLG9wQdxqkddd4KuvcZ95P3GvsD9xsT/PfRiAqP6gr4J/cWA/gnxB2Gox1+6QrE9wUd99qkHUY7CgH3TvcYA/dOrgp89w4dsNMK99egHYGDCvc09yjP96zPAfeS1Pc80wP4L/coFenJ2/cT9xRN3C0sTTr7FPsTyTvqH88EenyQlX8f9wz3VAWQeI50cRozbFhWHrb3nRX7C/tTBYWdiaGkGuapvcGbmoaBlx5f/IE/Cg73NP8BkYAA/wAzgAAS+AXYUMYTwPgufz8KYvdBFdj4GAYToFAGSx0TwH4K9zT3NM/3nc8B96bj9mod+xz3QBWzHfc09yjP9w3L688S96A5ChP0+C5/PwqO9zSNCvc0933PAfg+ah2b90GBHfc09yXP9ybLxs8B+HBqHfcxBGkd9zT3KM/3JM/RzBL3o5Ud+C5/Pwr3NARuCvc0+HXPAff1ah1S90FsHfc09yjP9xLD7M8S95w/HRPy+C5/PwqM9zRBChPsPR0T8kUdE+xICvc09yjM0c/3JM8S96OQHfgufz8Kf/c0qB33SHXd48/3rM/m3AG03fch1Pc80/ch3AM1HYzjFenJ2/cT9xRN3C0sTTr7FPsTyTvqH88EenyQlX8f9wz3VAWQeI50cRozbFhWHrb3nRX7C/tTBYWdiaGkGuapvcGbmoaBlx4O90h13f8BVYAA/wAzgAD3XtwStN33othQxveM3BP6NR1w8BXY+BgGE/ZQBksdE/p+CvdIdd3vz/edz+ncAbTd9zXj9tb3ONwDNR37HO9nHfdIdd3jz/cNy+vP5dwStN33LzkK9y/cE/7ANR2O4xXayL/NvWe4WpcfE/9Aax0T/sBHHUuPyVnaGw73SHXd90HP9/bcAbTd98/W92HcAzUdnfCBHfdIdd3gz/cmy8bP9NwBtN33/9b3MdwDNR3gBGkd90h13ePP9yTP0czn3BK03fcy00Pa9xHV9zPcE/3ANR3jBNvGwuHfVcJEHxP+wLgKE/3Axh33SHXd+DnP9dwBtN33hNb3rNwDNR1S8Gwd90h13ePP9xLD7M/n3BK03fcrPx33K9wT/mA1HYzjFd/JutO8bbFYnh8T/aA9HRP+YEUdE/2gSAr3SHXd48zRz/ckz+fcErTd9zLW9xHZRNL3M9wT/0A1HX/jFefG5vcg71vfMTtPVDU3wVTSHxP+wKcKE/9AgB2mIgoBu/cb99b3GgP37KoKbHCTm3Qf92n4JgWeYZVSRRr7PFIyIx77NfeVFfc8xObzpqOFfqAe+2X8HwV7s4O/yhoO+0GL9fgR7vcQdxL3UPcWJPIT8KaxCmsiCgGh9xv31vcaA/fSmQpri/X4Ee73EHcS96b3FiTyE/D3BbEKa4v3BfiI9wUSy/cEHcupHWveCrb3GfeT9xr7A/cbE/z3zYgKa+oK+CP3FgP4I8Qda6Mda+kKxvcFHffcpB1rOwoB92n3GAP3aa4Ka/cOHZ7TCvfFoB1rgwpOIx0Bl/jTA5cW7AYzCg73RIvP953P/wCigABYCvfE4/bWE9j3KRbsBjMK/HpdChPUUAYT5EsdE+hzBhPbUQr4EfzIZx33LHvPbHb3Qcvrz/8AooAAWAr3nzkKE3YA7hbsBjMK/EhdChO1AFAGE7kATmtoTx4TugBzBhO2oFEK+H382FsdE7ZAax0TtqBHHUuPyVnaGw73Z3vPbHb3Qcvjz0/P95XPe3cStuP21vd6OQoTc9D3MhbsBjMKE7XQv/1qWx0TreBrHRO10EcdS4/JWdob/Rn36Wcd9wyL9yBHz/8Bp4AAWAr4PtYTmvcPFuwGMwr8YF0KE5ZQBhOmSx0TqnMGE5pRCviL/MgV1gYTWtO0BxOaz2L3jEwHE1pyHROajR33OYv3IEfP9z3P9w3Lb3f3JM97dxK2OQr3/dYTrCD3RRbsBhOqIDMKrf1aFdYGE2wg07QHE6wgz2L3jEwHE2wgch0TrWD3EB38ifc9FdrIv829Z7halx8TrKBzChO0oHN1c2oeE7VgRx0TrWBLj8lZ2hsO9197z2x291rLxs//AK6AAFgK+KTWE3aA9xMW7AYzCvxkXQoTtYBQBhO5gEsdE7qAcwYTtoBRCviv/NhxCvc2bArsz/8ApIAAWAr3oD8dE3aQ7BbsBjMK/EZdChO1kFAGE7mQSx0TupBzBhO2kFEK+ID82EEKE7ZgPR0TtpBFHRO2YEgK92lsCtbPXc/uy2939yTPe3cStjkK92U/HRNy2fcwFuwGMwr8UvwlWx0Ts2lzChO1aXN1c2oeE7VZRx0TctlLj8lZ2hsTs1n4hPvZQQoTq1Y9HROzWUUdE6tWSAr3WGwK089gz/cNy8bPEveM1vdaPx0Td5D3LRbsBjMKE7eQsP1qQQoTr2A9HRO3kEUdE69ghx0Tt5D8etMVaR33M2wK7M/3h88S9xDW97E/HRN+QPcDFuwGMwoTvkC1/WpBChO9gD0dE75ARR0TvYCHHfyP4xXWBvcStfcG2esev/uoR/dVB0UtYfsF+wUaDvuWfNwKfKod/Bugdv8A8IAA/wAzgAAS9xTYUMYT4PcUFtj4GAYT0FAGTmtoTx4T4H4K+7+Lz/edzwG44/bWA7gW96TP+0wGjqGlo66ip54YxLGstb4azlW6REJRWT6CHteHBbWToKCuG6igeW9wfHZqdh9rdgUoSntFTRoO+617z/cNy+vPErg5ChP091J7jQr7qov3IEfPEvdz1hOg93MW1gYTYNO0BxOgz2L3jEwHE2ByHROgjR37vHv3Ah17cQr7vnvP9yTP0cwSuJUd90x7FW4K+96fdvfUzwH3A9YD9wOKbB37qnvP9xLD7M8SuD8dE/L3VHtBChPsPR0T8kUdE+xICvu5e8zRz/ckzxK4kB33QHuoHfuW98rcCvfKqh38G/8CM4AAzgr3FNhQxhNg9xT31xXY+BgGE1BQBhOQSx0ToHMGE2BRCg77v/fZz/edzwG44/bWA7j32Wcd+633yc/3Dctvd/ckzxK4OQoTuvdS98lbHRO8cwoT3HN1c2oeE9pHHRO6S4/JWdobDvuq+B/P94x3Afdz1gP3c/fXgR37vPfG9wId98ZxCvu+98vP9yTP0cwSuJUd90z3yxVuCvve+RbPAfcD1gP3A/fWbB37qvfLz/cSw3J39yLPErg/HRO591T3y0EKE7Y9HRO5V3luZVkaQ8lc4B7PBGBuorAfE9mxqKe2tahvZR4TuWZudGEeE9ZICvu598vM0c/3JM8SuJAd90D3yxXnxub3IO9b3zE7T1Q1N8FU0h8T9KcKE/iAHfw9DhwGy0odHAjkA8n3uRUcCBsG+437jgXdHRz34wYOHARzSh0cBowDHAUIhR0c+jv7DhwFwwYO+K9KHfrIA/lEhR3+AfsO+f8GDvxEi/cgAbT3JwO0FjodDvxE+x129zL3IAG09ycDvfsycB3794v3CR0WOh33eQT3J/cg+ycGDvv3+x129zL3CR34BRU6HZT9L3AdiIv3IAG09yfP9yfO9ycDtBY6Hfdr+yAVOh33avsgFTodDvw2i/cg+M53Erv3J/se9xYT0Nr3cBXiBpPPmPcP2xr3b/sW+28HO5n7D5NHHhPgbPtwFTodDvw2+yF2+M73IBK79yf7HvcWE9D3OvfcFTQGg0d9+w87Gvtv9xb3bwfbfvcPg88eE+D7CvdwFfsg9yf3IAcOP4v3IPhw9wIStPcatPcn+x73FMX3GRPs93X3bRX3FAbMmqe+qR7kwK+z4hr3CjPj+yv7Mi0t+xh/HvcahQXblLa12RvOsmJUWH52QGMfRGRwWiQaE/SC+20VOh0OP/s29wL4cPcgIR279yf7HfcUvfcaE+z3/PfvFfsUBkp8b1htHjJWZ2M0GvsK4zP3K/cy6en3GJce+xqRBTuCYGE9G0hktMK+mKDWsx/Ssqa88hoT9JT3bRX7J/sg9ycGDvxE9333IAG09ycDtPd9FTodDvvn90j3gAG094YD9zb3SBXQv77Q0Fe6RkdWXEZGwFjPHw77fPiK/wBXgAD/AISAAHcBtPfuA/cy+AYVxOrELNC0TeYF9wDjBvsAisnmRrVSKlLsRmHHMPsAjAUz9wAHTzAFDvui9633XAG098kDtPetFdgG5/dcBSEG2ftcFdgG5vdcBSEGDvsBoHb3Q/H3KvL3SHcBivi7A/ejFvcHBqj3QwXdBprxBTsGpPcqBdkGmvIFPwap90gF+wgGbftIBfsCBqn3SAX7CAZu+0gFOgZ8JAXaBnL7KgU+BnwlBdcGbvtDBfcHBqj3QwX3AgYu8RWj9yoF9wIGc/sqBQ77LfsC+fABrfg6A637AhX3Egb3vPnwBfsSBg77L/sC+fABtvg6A/hl+wIV+7z58AX7Egb3vP3wBQ78RoP3IAG09yQD9wWDbh37+YP3IPdc9yAB2/ckA/csg1gd9+gEWR0O+/L7HXb3Mvcg91P3IBLb9yT7IPcnE/D3LPffWB1Q/H0VE+jSBs73QgX3EPsn+yDIBw50g/cgAbT3JMn3JMn3JAP3BYNYHfdiFlkd92IWWR0O/EKD9yD41ncSufcW+xb3JBPgz/dwFeEGkuSa5+Qa93D7FvtwBzKZL5MyHhPQvft4bh38QvshdvjW9yASufcW+xb3JBPg9y733BU1BoMyfS8yGvtw9xb3cAfkfOeE5B4T0Gf3eBVja21iYqtvs7Sqp7S0bKliHw4/g/cg+Hj3AhK09xq+9xL7EPcksvcZE/T3dvdwFfcSBsCgtr2rHuLDrb3QGvcLJN/7KPseJiz7F34e9xqFBdOVuL3OG9G4ZVSKH1Fde1tmHkhac045GhPs1ft4bh0/+zb3Avh49yAStPcZsvck+xD3Er73GhPs9/v37BX7EgZWdmBZax40U2lZRhr7C/I39yj3HvDq9xeYHvsakQVDgV5ZSBtFXrHCjB/FuZu7sB7OvKPI3RoT9EH3eBVibG1iYqpvtLOrp7S0a6ljHw78Rvdz9yABtPckA/cF93NuHfuD94L3AAG09+gDtPeCFffo9wD76AYOTPeC9wABtPiYA7T3ghX4mPcA/JgGDveR94L3AAG0+dQDtPeCFfnU9wD91AYOKiD2AbT4dgO0IBX4dvb8dgYO91/3cfcGffcGErT5ohOg+OT3cRXa2LDS1h9I4gVNR2V4URtfdpDCJR8TYKVdT5lfGzhPbzYwH8wxBcjCvafMG7C+fXK6HxOgUPcFoIm6Gw775/sC+fABt/cTA/dI+wIV9wYG+zj3s4v3svc497MI+wYG+0r7q4v7wvdK+6sIDvvn+wL58AH3K/cUA6f7AhX3Bgb3Sveri/fC+0r3qwj7Bgb3OPuzi/uy+zj7swgO+4j7DvcC+ST3BBK23Jn3DhPQ9+r7DhW69wIGMIhlpswa1AflVM06lR6PB9qVxMvlGtUHyrGl5oge9wRcB/sMNz/7AB84BzloZU+MHhPwIQcT0MeMrmQ6GjgH+wDfP/cMHg77iPsO9wL5JPcEEvcx9w6Z3BPg1vsOFfcM39f3AB/eB9yusseKHhPw9QcT4E+KaLHdGt4H9wA31/sMHlz7BAbmjrFxTBpBBzHES9qBHocHOoFUSTEaQgdKZXAwjh77AgcO+6L7AvcA+Rj3ABLb9w/7D/evE9D3//sCFfcABxPg+zT5GAYT0Pc09wAGE+D7r/3wBg77ovsC9wD5GPcAEqf3r/sP9w8T4Kf7AhUT0Pev+fAGE+D7r/sABhPQ9zT9GAYT4Ps0Bg77qvsG+jsBtPfB0R0O+6r7Bvo7AbX3wQP3PPsGFb8dDvu+TPoMAbX3KQP31tgK+6z+DAYO+75M+gwB90D3KQO0TBX3rPoM+6zbCg77pfl05QG06AO0938V6PiJ92nl+8YGDvulJOUB95LoA/fv+HwVLvyJ+2kx98YGDkz7Bvo7AbT4l9Ed+Bn8aBX3Egb7Qvho90L4ZwX7Egb7Q/xnBQ5M+wb6OwG1+JcD+BL7BhW/HTMW90P4aPtD+GcF+xIG90L8Z/tC/GgFDvuf+yb6eAG15wP3ufsmFcfN+2/3WQX4bQf3bfdWT837jftzBfy3Bw77n/sm+ngB95jnA/D7JhX3j/d2Bfi3B/uN93NPSfdt+1YF/G0H+2/7WQUO+6f3fbb4GrbVtgG0t9W18LUDtPd9Ffc0+EX3I/c0+8MGt/y6FfiP921B+yP8RQcO+6cottW2+Bq2AbW18LXVtwP37fiCFfs0/EX7I/s098MGX/i6FfyP+23V9yP4RQcO+7ZMvPmqvAG0v8G/A/fe2Ar7tf4MBvdevBX7Kvmq9yoG+xT7mov7nfcU+5sIDvu2TLz5qrwB90C/wb8DtEwV97X6DPu12wrivBX3FPebi/ed+xT3mgj3Kv2qBg78Qvsddvcy9yABtfcnA777MnAd+3n7HXb3MvcgAbb3J7/3JwP3j/syxx37efcLHb/3JwP3Sfln7R33j/cyFUQGSPtCBfsQ9yf3IE4HDvt6+NP3IAG29ye/9ycD94/4Nccd/ED3Cx0D90n5Z+0dDvxC+NT3IAG19ycDvvg2cB1e1/gkAbX4qQP34NcV+z73XPc+91wF+yQG+yb7QQVVB/cm+0EF+BcW+z73XPc+91wF+yQG+yb7QQVVB/cm+0EFDl7X+CQBtPiqA/ex19Qd/DL7XNId+7XX+CQBtfe2A/fg1xX7Pvdc9z73XAX7JAb7JvtBBVUH9yb7QQUO+7XX+CQBtPe2A7TX0h37svhL96MBtvXZ9APP+EsV2gaP96MF+wA5BvdO+1EV2wai91EF3SAHDvxn+Ev3owG29wADxfhLFdoGmfdSBdz7ADoHDvsdivX3y+7k9RK9+Er7p/cPE/C9Ft2K6InEv5XlGar3qQX3Oe4GE+j7LgaPrQWuj6Cfrxvk9Ab7BYwwjFFXgTIZhVQFLSjeBm/7lAVoh3d3aBtNBg6MzQrR2uf3Eyr3ExO92xb3XDDa5gb3M5Dl1vcNGhPd7E3H+wKUHhPe4ZTDxNsa9wc/zfsjmB7tPCz7XAf3FvzsFRO991zR+1wHRffCFfdQ0ftQB9r7whUT3fdcB9uHtWlNGhO9T19nPYceE773xgT3SAfIgaprWhpabGxOgh4O+K9KHfrIA/iUthX7jfeOBfn/9w7+AcIKHARzSh0cBowD+JS2FfuN944FHAXD9w4c+jvCChwGy0odHAjkAxwJIve5FfcOHPfjB/eO945cHfcfBvuN944FDhwEckodHAaLAxwFB4UdHPsDBveO945cHfcfBvuN944FHAT5Bg73SHXd93/Vs+od93b3ZRXbBsKftarCG8K1bFSeH9sG7XRAySkbKT9NKXQf91b7e54d90h13fTV9z7qHfg79zkV9wLl2vcBmx8/Bkh8UlxHG0dSus58H0AG+wGa5Tz3AhuI+0+eHU6L9xD4B+QBk9n4P9oD9Bb4GgbDtLTDH/gaB8NitFMe/BoGU2JiUx/8GgdTtGLDHnj3EBX3afgH92r8BwUO97Ai6+bbPtf3ltJE3/cF6RK29wXp9wP3aeI07Tza9xXvE89Q+S1OFXXnBXNRRntBG/tD+wPs90T3Yfcj9yf3ZvdO9fsG+zofE6+Q+w9YV2Jnf6qqnYyfjJYeE9dQnfduBRPXMDUGE88wh18FrnRfoVQb+xczIPsaJ8o79wnMx6++qB8TrzBVl7ptxhvu7+L3Rfdi+y73L/t9+5j7Z/tJ+6P7ffc6+xb3dR8Tz1Dc15qo1R/7ZfdzFUdwvsfZt8/VzqdaTUJkQjwfDp579wYp9wEzdvj59wUSsPcbTfcZ9xn3GpH3FhOa96x7FePTn6q1HxM6qGgFEzn3KwYTWS/3Aba8qNiP2Bn7FpcFV4FheHEe+xX3NQUTlvTLur/cGutGz/sW+xVDRyBMpV+5Vh4TmiFGZFIxGvsP4kf3MB6X9wYVOmStwbyirsSxH/cl+0gFeXhof1gbE5b37gRmtn+mrBqzpKW3tKJ0ZGFzb09mHg5voHb5DtcB95b3BdD3BQP3lvfIFfvI9wX5DtD9DvcF+Vr7pwf7KS09+xD7CuE/9x2FHw5B+wHt+ObsEtD3GfsY9xn3V/cZ+xj3GBPU98X7ARUT2PcR8MDxvni0TqgfE9TBoqWwvRrtRrf7LakeOp9znIquCK+JsaW/G8uzalaUH/cUkQX3BXsgy/sDG/sbLlEiXKZoxHAfE+hScHBiilmIOMZd9yJtCNV5xHZiGmZlclFMXKzDgh77FoUFE9T7AZXwQ/chG4n33xUT5EKTb6auGq6vor64zHlZHhPUZmR0Uh4O9zh/59Pd94rd0+cStujc7fdR7C3pLe3f5xP8wPgwfxX3YPc59zn3YPdg+zn3Oftg+2D7Ofs5+2D7YPc5+zn3YB/nBPsr+xH3Efcs9yz3EfcR9yv3LPcR+xH7LPss+xH7EfssH4/TFfLXzuuVHymQBVaEZ2pbG09ivNXWtLvHHxP+QLmua1uSHxP9QOyQBeeCQMwmG/sJOTj7Dh8T/MD7Dd039wkeDkX3AR3mxeDH3ZsKKsMVxe2tBsEpBcwGTfYFrpWep68avmCrRx4vBur7ChVmzrDlCkX3AR30xt/Hz5sKOMMVxu2uBtCzqcC+YatHHy4G6vsKFWfOr+UK93X5Fs8B90vX9yrX94jYA/jL9/sV3Abc92sF+2vY9/MnByn7nyn3nwUm+/PX924G+8L7bhXX96/yz/uuR/IGDvuR+Afn9yHnAbTo9x/oA/dg+AcV5NTU5ORC1TIyQUEyMtVC5B/nBGRsq7GyqquysqlrZGVta2QfDvwoZQr7dfjn9yEBtffzA7X453UK7vshIB38DeIK+yoV9xH58PsRBg78DeIK9/cV9xH39/sRBv3wBPcR9/f7EQYONqB2+EPjChb3DPhD5h0GDjn7FXb3O+/3zuMK+yoV9wz3O/cq7/sq987mHfvO+yUn9yUGDvhNi+XK2vdP2/dndy4d99z3FrvmQ/egReQT/oD5+fctFejHz/T0T88uL05HIiLIR+cf/an7LRWKHRP9APkj/VoV96Dl+6AGE/6A9xr3IhVkdK7Gx6KssrSiak9QdGhiHw5O92DC4sKrwuLCAdfH91XGA/fd0hXG9xn3H8L7H+L3KML7Ywb7kSYVx/cZ9x7C+x7i9yfC+2MGDvd19yHs9xTs9yvrAffq4+br9xXrA/hCNRX3d/gw+M371fuLMPd1B/wX/BYF97/7PhX7Pfc+9z33PQUi96f3jPcV/Az8KAcOTvfuwgH4I8QD9yr3wBXHBvD33gVQBkP7iUP3iQVQBvfy/MMVxPen58L7hVTnBg4/lHaodvi5dyEdwf8ATYAAdf8ATYAAE7j3dDAV2QaS2vcbjencmvcSGfsYkYJGZGdUhhmp9+qyfaZrklgZ9xiSBRN0ffcCQdH7AJyT4hg9BoQ3BfsmgC77APszGvsi1Cf3Cm4eUfejFemtyMmbHm773gVgpHPC2hoOOeXr93LrsncB3ur3cusD97XlFbazmKKsH9ZBw8E/1gWirJizthq2frN0rR7X1lPBQEAFompjmGAbYWN+dWofQNVTVddABXRpfmNgGmCYY6JqHj9Aw1XV1QV0rbJ+thvrBE9YvcjIvr3Hx75ZTk5YWU8fDpKRdqF2+Qf3BIh3oncSz/cY8trk9xf7C/cYE4qA98MwFdrXBvchlufZ9w0a8VDP+0K1HvdZBxNTAL95qV+SUfcXkRh+9wxB5/sZnwgTTgDePDsH+yeEMzf7Chr7BstY9z9kHvtnB0aZZbuA1/sYgxiW+xvlLfcpewgTZoAk+KsVvbGvzJEe+04HO6J0orsa90r8OxX3VAfeb51tXxpWZm1LhB4O1ycd9xzZ19n3KPcFAfcV9xID+EJ7Ffcj7fD3K6cf+xWSBTR7VVBDGz1VwtxyH/cYBpbZBfsyBom2jKwF9zwGltkF+zoG46LCx90bz8BWO54f9xOSBfckbCjq+xsb+yf7APsA+y1oHzQ91waKao1gBT495Qb7J7D2JfcjGw6zf/cF9xrZ09n3K/cEAdr3Gveh9xkDwPgVFfjm2V0Gk5yRn50a9xMk3Ps5+w8sQfsMah73Gn4FyKa4rcMb1b9iU4kfinWFenp8CPwpBve0/G8V9yD00vcGqx/7I5MFWnJYbE0bQlewwowfmZCZlZke+DfZ/OY9rwaFfod8fRr7DvU49zAeDsyL90892dD3Bfd49wUS9yL3Fveo9xoTfLX3ARXvBhO8+wH3FgcTfPcB7AcTvNkq0PclB/c67uH3IvchKOD7Oh/7p/yfJwb4BfdKFfsf93j3Hwbku2RBP1pkMx8OsaB295T22NrZ9wU92RLb+MkT7Pf+Fvc3Bvuv95QFxwb3J+vQ9weeH9zaPAaFuHmxcKkI9xbZ/MkGE/T7BfdtB9e2cVeZH/vyPPfxBld9X3JBG/ttIAYO90WL3vi03gHb9wXa9tj3A9n3BQP3pBb35QbnxMXnH/jE+wX8yQdldHNlHvth+GwgBvtU/L8V9wX5B/dfBrCic2Uf/C73A/gpB+dRxS8e++UGDnKL9wj3Wdn3cvcFEvcN9xU69xIT6MH0FSIH+KeOBfcF/CgH26+w2YjeCPco2QYT8Ps1Bnu+e6uwGse7tcC7s29ZmB73JJIF8nk53PsnG/sXKjj7BmuTYppeH5F3BSo9BhPo9wYGjH+Mf4AaQWVQPmMeDpeL92824Mbg9+93Evek9xYTePcP9xoV9ykGE7j7GvcWBxN49xr3KeD7Kcb3KeAmB/dc9+9PHfdd++8FJjb3KVD7KQYOJfeA9gH3dvYD93a+Ffb3TfdM9vtM90wg+0z7TSD3TQYOJfd/9wABtPhwA7T3fxX4cPcA/HAGDvs54fgxAbX4MAO19zYV1j/3F/cX9xb7FtfX+xb3FvcW9xY/1/sW+xb7F/cWQED3F/sXBQ4lyfcg1fbc9yAB92r3JAO096gV+HD2/HAG94n71Vgd+CYEWR0OcvcX9vcG9gHb+HAD2/f0Ffhw9vxwBvvcBPhw9vxwBg4l9xf29wb2IPdMErT4cBOw9yqfFfcBBq33AwX3dPb7VAat9wYF9zIGE9D2+xEHE7Ci2AX7AQYT0HQ+BfuGBhOwIPdlB2n7BgX7QyD3IwYO+wil+KYBtvhfA7alFfhf91oF9xsH/F/3WQX7CAf37fsp++37KAUO+wyl+KYBtPhfA/iIpRX3CQf77fco9+33KQX3CAf8X/tZBfsbBw4li/YBtPhwA7T3QBX4cPcSBfchB/xw9xIF+wIH9+w1++w1BfuvBPhw9vxwBg4li/YBtfhwA/ia90AV9wMH++zh9+zhBfcCB/xw+xIF+yEH+HD7vhX2/HAgBw42pfD3SvAB93j3CwO098kV90/7C/cL9wv3T/D7T/cM+wv7DPtPBvwUBPiB8PyBBg77G+DkkeOv45HkErTt94zsE6z38PfEFeC+0fQfKgZXfmhqb3yho3YeE5ymc2+hXBs3VkQiH+0GwJmtqqaZeHSfHhOsb6Soc7wb+28E4L7S9B8qBld+aGprfainch4TbKFzcJpiGzdWRSIf7QbAma2qo5t7dJ4eE6xupKZwwBsO+xv3gueR5xK07feM7BOw9/D3ghXgvtT3AR8qBlR+aGpxfJ+ieB4TcKpyb6NZGzdWQvsBH+0GwpmuqqmZcnCjHhOwcKKoeLcbDvtP93vlAffq5QP36s0V5feT/Bsx98EGDvuM+BP3tgG0994DtPgTFe8GzPdVzPtVBe8GJ/e2BfsWBg73V+Pu9zvvKO4hHfiR9xgTuPd24xXd2LLUtx9Bt9ll3hvx2tvyHxPY8jzbJR42ikBkXkEIE7jTXkC1OBskOTskJN078h+p7hVcaLC6uq6wuh+6irltqVYIVW5bbV0b9+4WXFypwW0fE9iqwbqpuYoIuYquZ10aE7hdaGZdih4O+377Kvb5GvYBlPgtA937KhXmicbAleTJ+MMYj66gobCJtIkYlvZBjDCNUFaBMhlN/MOHZ3Z3aowZXo2BIAUOiYvr+Jnsi3cSovj5E7CiFvj56wb7hfj6BfsVBvuH/PoF8hYT0Pdg+Jn3YPyZBQ6f+xV2+YP3AQH3HfcR9zX3EAP3HfsqFfcR+YP3Nf2D9xD5g/cA9wH9CPsB9wIGDvsFIwoBp/iAA6cW+ID3Bfv8Bvc394b7N/eGBff89wX8gPsFBvc2+4b7NvuGBQ6Q+xV2+Yb1AaH5AwP3D/sqFfc/Bvcm+YYF92H1+8YG+xj9RUr3zwX7DAYOWn/w967yErX3GfeT9x8h9RPo961/FdOHwZ7Bu/ct9x+4+KD8TrZoKRj3Pnr3AfsFjfsyccVSsUeS+yqYIDN++yp++yPw+wL3K4MIE/CN8BVDk17ElOOR3cPB04TJhr1jlEuF+wBORDuRCA5e+xV29yrnMeUS3vcV92H3FPsO9w4T2N77KhX3FQYTtPdkB2mZsHW1G7+5q72fHxPUNwcT2PcO+Kb7FPu/BjNiWERMbbnoHve/+xUHDvcvi9pFdveq257b90/amncStOr3D+n3Aun3D+oTV8Df1h0Tm8DtRtY0NUVAKR4TV8DhChObwMSisLGyomZSHhNXwFJ0Z2QeE7vApQoO+HuL2kV296rbPNqe2/dP2pp3ErTq9w/p9wLp9w/qpOb3EeUTldj6TRbizdbt7UnWNDRJQCkpzUDiHxNLgP351h0TBYDtRtY0NUVAKR4TS4DhChMFgMSisLGyomZSHhNLgFJ0Z2QeE6BgpQoTkBj34hZlc7DExKOwsbKjZlJSc2ZkHw67Ix0B97j3EQP5LfeYFfcfB/vL98v7y/vKBfsfB/eN940F/JL3EfiPBw5v+PrtAf8B6oAA/wBigAAD+H/3QRXt7gX4Swf8S4wpKQX39Ab7/fv94zP3+/f7BQ73HPe39xEBtvlaA/fDthX3Hwb3y/fL+8r3ywX7Hwb3jfuNBfyS+xH4jwYOcI3u+Et3AfiB/wBhgAADv/AV7igF+EsGjPhLKe4F+/UH+/33/TMz9/v7+wUOuyMdAfe49xED+S34VhX7jPuLBfiP+xH8kgf7jfeNBfsfB/fL+8r3y/fLBQ5wje74S3cB/wArgAD/AGGAAAP42vAV+/MG9/v3+zPj+/37/QX39QcpKIz8SwX4SwYO9xz3t/cRAbf5WgP4grYV+4v3jAX4j/cR/JIG9433jVwdDm/4+u0Bt/8AYoAAA/ci90EVjPfz9/v7++Pj+/33/QX39AYp7fxLigX8SwcO+Cv3t/cRAbb6aQP40rYV7h33jfuNBfzZBveN941cHfcfBvuL94wF+NMGDrv7S/poAfe49xEDt/efFfsfB/fL+8v3y/fKBfcfB/uN+40F+NgH9437jQX3Hwf7y/fK+8v7ywX7Hwf3jPeLBfzSBw5/9z/s5egBtvjHA/fO908V02LdtsLk3lsYdfeM+3Qj21xsWWx3cJsZc5mHpoenha2DrVynPrf7CUh2+wkI7gabvK6gp3ylfIpukmqTZpptsXUIDpL3w+73JXcBtuAD+AT3RxX3EPeV7vuW9xAH+2P7QgX7CftXFeD4GjYGDpL3w+73JXcB+LDgA/fA90cV92T3Qftj90IF+xD7lij3lQf32fsmFfgaNvwaBw6J94Dt94buAfiY7wP4F/eAFfcU8Or3EPcQJuv7FB/7uyj3ugbUxFZHSFJVQh/7PAb3C/cLBfsTBvs7+zz3Pfs8BfcSBvsK9wsFDon3gO33hu4Btu8D96T3gBX3Owb7CvsLBfcSBvc99zz7O/c8BfsTBvcL+wsF+zwGQlLBzs/EwNQf97ru+7sG+xQmK/sQ+xDwLPcUHw6MoHb4HvEB+JnxA/iZFvH4hPv79xYG+237Sfdu+0kF9xb3lAcOjKB2+B7xAbbxA/clFvge95T7Fgf3bvdJ+233SQX7Fvv7/IQHDoz3avH4HncBtvED9yX5WhUl/IT3+/sWBvdt90n7bvdJBfsW+5QHDo6gdvj37QH4Iu0D+FMW90H3ZAX7EPiJ/Fkp9/f8J/sQBg6M92rx+B53AfiZ8QP4mflaFfwe+5T3Fgf7bvtJ9237SQX3Fvf7+IQHDvddi+73dOIB94ft90rtA/eHFvgO99f3bQb8Kvgr/C38KwX3cAbt+3QV98snB/dT91L3UftSBSn7ywYO+1vmCvhoFftP93b7UPt1BfcS/Ff3EPhWBg5X+Vx3Abf4nQP4rvg4Fab3uPu4ceQx+9L70uIz99P30gUO8fe89xD3EncBtvk4A/iB9z8V93b3T/t191AF+xL8V/sQ+FYHDleN+J4Bt/ieA/emqRX3uG9x97gxMvvS99MzM/fS+9IFDvtb5gr3iBX7EfhW+xD8V/sSBvdQ+3UFDleN+J4BtvieA/fjqBUz4/fS99Mz4/vS+9Mx5HH7uAUO8fe+9xABtvk4A/eh90EV9xH4VvcQ/Ff3Egf7dftQBQ5X+Vt3Abf4nQPS+DcV4+P30/vS4uP70vfS5OX7uKUFDvdb96z3EQG2+ZoD96D3LxX3EffY+xEH93X3T/t291AF+xH71vcRB/t2+1AFDvtbaPmaAfc99xED+Df3UhX7EffY9xEG+0/3dftQ+3YF9xH71vsRBvdQ+3YFDvdIlHb5dncBtvmGA/g4fxX3afc49y/3afdr+zj3L/tp+2n7OPsv+2v7afc4+y/3aR8O90h/8vio8gG29fiz9AP4OH8V92n3OPcv92n3a/s49y/7aftp+zj7L/tr+2n3OPsv92kf8gT7LfsK9wP3Lvcw9wr3A/ct9y73CvsD+zD7LvsK+wP7Lh8O90iQ3fhYd/cg3W93p3cStt344t0TzvkK90AVxFGcnJuemaAZRrmBen99fn0Z/DD7BhW30HqWfZd9mBlST516nnygfhkg7xXOvIGZgZuEnRk+apV1mHWZdxn3ifstFZnceI95kHiRGW0/ooKjhaSGGfvF97QV3JwFhp6JnZ8aOYoFco5ykHQe+AX7YhU5B6Sjjo+jH3zbBYh3eYl3G/wG9/QV3HyOnpGek5wZPqqBdYRzh3IZ+Hf73hWqP6KVoZafmRlez3yAeoN4gxn8P/hmFdBdlpyXmZmZGVDFenp7eH12GfTyFblHBRMUmpack52UbNYYE850gXWAd30I+Hf8LxXWbJWhkqOPpBk7moh4hXmEeRkTIvvv+GcVmzsFjp+djZ4b3Qdyc4iHcx/4BPv3Fd2MBaSIpIaiHjt6BY94jXl3GhNK+1D3nhWo13SUc5FykBl+Op6HnoadhRn3OPsuFdasgaF+oX2fGUhaln2We5J5GUnnFcLHeZx4mnaYGWBGm4Caf5p+GQ40i+pBdvi56hK2+HwTcPdoFvcqBvc999b7PffWBfsqBvs9+9YF9xAW9wz3d/cM+3cFE7D7DPt3BQ73YaB2+VrQCg73LXQd2/la9h0O92EjHeEdDvctdB2i+VraCg73YYv3APju0Ar7ffzuFfd9+DL3f/wyBQ73LXQd2+v2Hev8whX4Jwf4I/tdBQ73YaB2+O73AOEd/Rf7ABX4aAb7f/wyBQ73LXQd+RHr2gr4+vteFfwj9174I/ddBQ7459cBtPfCA/dV+OcvHfjt9wYBtCkKA7T47SQdvgr45/chAbT3UgP3F/jnJR1lCvjn9yEBtPf0A7T450cKvAqoCvji9yYBtPfQA7T5dCEK+OfXAbT3wgP3VfjnLx3408fYxwG0yNjIA/ch+NM+CooK3h344/cAAbT3DAO0+OPlHfsg9gHG9wwDtPt7Tgr7IPYBxvcMA7T7e04KrR2aCve53AH3APgUA/cA97kV+BTc/BQGDvjr9xYBtCwdA/cA+OspHfjr9xUBtPcZA/b46ysd+5D47fcGAbQpCgO0+O0kHfxRvgr8Gfjn9yEBtPdSA/cX+OclHfwZZQr7d/jn9yEBtPf0A7T450cK+5uoCvub+OL3JgG099ADtPl0IQr7qPjn1wG098ID91X45y8d/BD408fYxwG0yNjIA/ch+NM+CvuJigr7td4d++CtHfwLmgr7m/jr9xYBtCwdA/cA+OspHfxS+Ov3FQG09xkD9vjrKx38Q7wK/ChlCvxr+FT3mgG09wADw/hUFdoGmfdJBdz7ADoHDvc0f/l2AbT5dgP4Ln8/Cg73SHXd+OfcAbTd+OfcAzUdDnub+KqX9zibBvs2lwd/l/iml/c8mwgeoDf/DAmLDAv3BQr3GgvwlwwM9xSRDA35KRW+EwDNAgABAA4AIgApADEANwBEAFEAWABfAGUAawB0AIAAgwCNAJUAnQC3AMEAyQDZAOYA7QEWARwBIwEtATQBOQE/AWUBiAGgAawBswG8AegCAQIYAh8CIgI3AkQCTwJTAl0CYgJsAnYCfAKDArYC6gLvAw4DKQMxA0oDWgNiA2oDcgN5A38DhgOsA7gDwAPXA+YD7wP5BAIECgQRBBkEIQQoBDkEQARIBEsEUQRVBFoEZQRpBHEEdgR/BIgEkwSbBKQEqwSyBLoE2AT7BWoFygY0BpgGvAcZByEHRwd2B4QHlQe4B8wH8wgSCB0IPwh9CJIIzwjZCOYI/gkZCVUJZQl7CYgJkAmVCakJrwm4CeQKDgoUCioKQgpOCnUKjQqZCq4KzwrYCvoLGQs6Cz8LTAtrC3ILgAucC6ILpguxC78LyQvXC+0L+QwADAgMGgwiDCcMLQxADEsMVgxoDGsMfAyLDJwMrQy+DMUM1QzkDO0M/A0LDRoNKQ0uDTwNSg1YDV4Naw10DYENjg2bDagNtQ3ADcwN2A3kDfAN+w4GDhHLMgXoBi33JgX7FAYOFen7JgX3FAbp9yYFLgZLMkrkBQ4nHfiY9wULi/cF+Hj3BQt/8/fy8wtdh359dRt9gJCaeR8Lt42cmZ8bm5WFfJ0fC3ejn4GpGw6fcnWWaxsL9xHY9xALoHb4qncLzrK+4I4fSAYL9xr7E9c/9xw21xIL3woOLtVW9wQepbEdC/L3wPH7wAULf+g27Pf27gtJlrZ2xRucoI2Nkx/oegd3gZOoH/dWBzcKC3/zL+f38ucv8wv4cvlaBSoGC34dyArdu0r7AvsDW0s5Hwv3FP//hYAA/wB6gAALe/cF+Pp3C/ciPdv7LPsZNUv7BHYe9xeFBcGXrajKG86uZEAf+0VoBfsJdFJaLxoL9xsDeB0L1vcM1lDVC9EW9xT4qvsUBgugdvjp9wUL95t/FQuL7vfk7gsVw7a2w8NgtVNTX2FTU7dgwx/HBHR7m6Khm5uioZt7dXR7e3UfDhX7YPs59zn3Yfdf9zn3Ofdg92D3Ofs5+1/7Yfs5+zn7YB8LM2NcRk1us+Ue98z7FPvsB/sTzkD3AR4LFd/JutO8bbFYnh8L2sKtzqYfCxb3Fvla+xYGCz8Hwm1TrD4b+ydB+xD7L/sx1vsO9ycfsfMVNGPd6Ouz2uLlrT8oLGo7MB8L90oW9xgG9Pf69fv6BfcYBvc1+KoF+xcGCyP8GfsA+BkF+wMG+wD8GST4GQX7FwYLdQrv+yEgHYcdDq9oBcSXenNzeH1sa3qYpn8fTnEFC/cS//+pgAD/AFaAAAv4BHsV7uG81a8fC3voCgv7bfcN+y33YB4LFdkGQh0V2gbC95oFIwYOi/cl+xB2+Kp3C1cH7YwFC/cW96j3Ggv3RAYshUtCIhv7Hk73Afco9yTJ9wf3G/G7VDibH/cbkgX3JW0v7vtIG/tk+w/7M/tpHwv3APsqFeYG2bOnzaIf92X44gX7GQb7E/wd+xv4HQX7GAb3UvyVBbAGfWYFcoF9gWgbRwYLthaLHQvRFvcU98IG5ba90NCjWTEe+8L3FPfrB/cMS977Ch4L92oW9yQG9xD4evcQ/HoF9yUG91H5WgX7HQYLzgr3IdhQxgsV1wb3C7i39wIf+Kb7FPyiB112fmUeVgYLFeO8ZD9BW2QyH/sf93gGDvcN+Kr7FAYLdvlad+D3IQv8FxXY+BgGC/cU92H3FAsT6NtDCgv3FPsE9wQL9wYdE7z3cX8VE7pBHRN6jzQFE3z3AvfYBjcKE7wu1Vb3Ax48HQsBwfcZ91v3GQN2HQsBtvcbA30dC9DIrb+kH0cHQF9pPEZuorR+HvsYggUL+Of3IQG091IDtPjndQoOsaimsrFupWULoHb5Wnfm9wYSC/t4Fc/Br80fC4v3Bfd49wULvW2xSZAeC3/zL+f38vMLe89sdvdGwwsiHfewqx0L28bC4d9VwkQfE/S4ChPsxh0iHfeosh0LNgrf9yF5HQsVaR33xHvDHQvQHR8LzwqZHQsV7wbl9yEF+xQGC/5BTgrXCvla+xYGDsYK95QLdvhO5y/z1goL9xpk9xZf9xoL+yv3dUHV+GB3Egv3D+bL86gfC/uuByG8XPUeC3NXBu2MBQ73GfsX9xQL9xb32fcaAwv38XsV9zT13PcW9UvR+1O0H6QKvwr7KJf2KPdFGwu7ChPvQFodE/dA+HsHE/cg+xEGE+8gTh0T74BkChPvQFYdC3v3BPcZ8fey9wESxPcY9573HvsW9xYT+PfGexX3YN73MfeI92sz9xL7UPsuISj7MPsl7Cr3IB8T9NXFp8GwH/ssgldMKxtQZ6K0fB/7E4MFE/giqdpM9xQbl/fvFT1YweLivcXd371QNDNTVzofDs0K96D3GST3GRO62xb3wgb3OujM9xYfE9rsTc37A5QeE9zmlL/E4Br3GS/G+0Ee+54GE7r3vPzsFfs691z3OgbdvWhJSlhpOh8TvGn3whX7GPdQ9xgG47ttS05YajYfDvsVdvce8/fy5y/zEtH3EPsQ9xT3j/cZE9bR+yoV9xT3cwZXqMZqzxv3LNf3Efcu9y5A9xH7LB8T2kVQa1BsHxPqidoFE+b7Dwb3kvxOFTxcxvcIHxPW9wi7xtnZukr7Ah4T5vsCXEo9Hg4nHfdR9wX3avcFAfjJ9xsD+AF7FfdQ9yf3Lfdu93b7Ivcl+1X7IvsKNfsdYB/3IIMF2avHs9Qb9t4x+xCTH/yeBoxWBfuGlfcj+wz3PBuN9wUVKUnR9wt4H/gNBvsLdkRFJRsO+yD2wXkKvvcMrfcUE9dWChPbUh0T64jnBRPn+wgG9zX9kU4KexUT+vc69wLb9xvlVcwuox8T/Nuktr/VGvcNMNf7NPssLz77CH0e9xmEBb+TsK7bG9qxZ09HV3FHH04kyAYT+uLDZT8/TGo9Plas14Qf+xmFBRP8+xeS6Db3PhsOMB2+9yFUHQv46SwKtDEdE0z3nvjwFRMsKwoTTCUKExwoChOMKh0THCYKE0wnCov3Bfde2/de9wUB9zSACrb3zxX3CfvP2R37z/sJBvf1+64VIfde9xXb+xX3XssKAbT3Gcr3Gb73GQNMHQtbHRP4ax0T9EcdS4/JWdobDvgSexVfHfd5+xP3I/to+2f7FPsj+3n7efcU+yH3Zx/3BQQLMx3T9wYuHVYpChP6Rh0T9tjTJB0SqvVG9xn7F85I9xQT8dEWE/ik0QoT8oMdE/GrtAWK+Kr7FAYT9AsVE8qAKwoT0oAlChPGQCgKE+FAKh0TxUAmChPSQCcKAbT3Gcr3GQOVCgtTHRO5APeKfxUTuIBCChN4gI0yBRN5AEgdE7kAQAoTtgALoHb3lPcF93j3BQHbUgoD2xb3FveU9yUG9zru4fci9yEo4Ps6H/unBveh++kV+x/3ePcfBuS7ZEE/WmQzHw73xH8V9x7r3PcUmh/7GJEFhh2WHQugdqF2+Vl3Lh34dvcWE7jbFvcW+H4GE3j3R/x9BfcQBvdH+H0FE7j8fvcW+Vr7Qwf7WPy6+1j4ugX7QwYONh0BofijA1QKDjYd5vcGwB33AfkkLQqqCiNS5Pc89zzE5vPzxDD7PPs8UjIjHw77a973LXYBtPUD9yf7axWDHau0LJZsZJcdHg7MA/e793AV9yD3BfcG9yD3H/sF9wX7IPsg+wT7Bfsf+yD3BPsG9yAfzAQlNeDz8uHf8fLgNyQjNjYkHwugdvhO8/c4dwHRXgoDvh0OKgoBuvirA7oW5Ar3Hgb7Uvej1R0FDicd+Pl3AcJ1HQNyCg4Bovi6A7gdC/MdrQoL+yD2rPcF+Ol3Ih2/9wzxHfc4dgqgXArBHQvBCvsUBveDwAr7EqhpocUawrmx1+S+Vj6UHvcXkQX3HXwt7vs9G/s0KzX7EPsIzVn3RGMfC/g6/FEV4dHW7e1F1jU0RkApKdBA4h/aBGR0sMTEoq+ysaJnUlJ0ZmUfC/cVA6wKC6+nmqSdH0WDbmNhG3B5mKSDH0GEBQv44igdtPfQE6C0+OIV6QYTYMzkBROgIAoB2PcW99z3FgPPHQt7FfdK9wX3Ivd493n7Bfcj+0r7SvsG+yP7eft49wb7IvdKH/cFBAsT6PekFvcW96wG94z4Qk8d9438QgUT9Av3Evi/FWg/KNe3CgsT6OQdE/BKYWxDdh+I8gUT6PsMBgsW9xgG94zY90T3NPdIHvX8mvsF+BMH+yP7PDD7ZftwGg4iHbb3GQNGHQv7FPsTBjJZVTlLY8HjHvcU+xT7LAf7HNs09xLRxa7BqR4LFvhH9fsk+PAGE+gkBi1qbTYeTigGE/D3LPwR+zUGDvee9/cF+zkG+4j72wX32/sW+9oH+4f32gX7Ogb3nfv3C9IK95QL+z/g+wD3HR6x89odCwHE+GcDxBb4Z+771Ab3zPfdBfX8VCj3vQf7yPvdBQshHfeNuwoL/Dn3Ffg59xnu+xnKCgtob3xzeR/IkqS7uRunnH5ykx/VkgXGfFewURsL91sW1x0LFYsdDvcV+xT3FPsR9xEL+FT3mgHC9xoDwvhUTwqgXAoiHQPbQwoL+O33BgG09xkDtPjtLQr3JWmnalQaTlpsOChVvud+HvsYgwUL/EwV+wP3KvcD9wod6R37DPdWCwb3jveOXB0OFRPo2QbH8AXsBxPk+wwgrgYOdvg89wLzHQsiHfEdC/enBtIKC/sW/On7XPjp+xf86ftd+On7Fgs4XMv3A/cCuszeC/cG7kAGXnabvR8Lpwe0naG1HtvuIwb7BVdQKx8L7x0OBfsaBvse/CD7HvggBfsYBguL9wL3XMRS8fdQ9wIuHQv/ADOAAP//zIAA/wCTgAASC/sXkwVcfGRwUhs/Wrrphh8LdwGi+ccDohb5xwb8LvlaBQsGdW+XHR4L9zru4Pch9yIo4fs6H/slC/cbJ/cZ94H3GSf3GhPyCyQKuygdtPcZCwbCblCsQRv7GzT7APs/CxLR/wB1gAD//4qAAPcUC6B2+Vp3Adv3FgPbFvcWC0wV+0P3s4v3z/dD97IIC+wKLh0LA/lxihX5XQf9Wvv4BQsG90P7sov7z/tD+7MIC8/3rM8BuNT3PNMD914L+OnrCgYLJx33c/L3Anfv9wUSCxX3GfcG+xkGC/ijFROlQM6yvuCOHwsp0UDhHtsEZXSvxB8L+xV2+fB3Adv3EQPbC+73SHcB93j3DAP3eAv3IQb3FPdU9xT7VAULBqmdgHZ0eX9tHw6d+TgB9z33EAP4NgvR9xT3NPcP9zP3FAv3BT92953w94v3BQt79wH3qe/3JPcEEgugdvci9wX4W3cBC/ds9wX8xfsF92sL+xV29yr3BfjpdwsAAAEAAgAOAAAAAAAAAbAAAgBFAAIADAABAA8AIgABACUAKwABAC0ALQABAC8ARAABAEYASgABAEwAVAABAFgAYgABAGQAcwABAHUAeQABAHsAhAABAIYAqQABAKoAqwACAKwAtwABALkAwQABAMMAzQABAM4AzgAEAM8BAQABAQUBDgABARABHwABASEBJQABAScBMAABATIBYAABAWEBZAACAWcBZwABAWoBawABAW0BbQABAW8BcQABAXQBdwABAXoBewABAX4BgQABAY4BjgABAZEBkwABAZUBlgABAZoBmgABAZ0BoAABAaQBpAABAaYBqQABAawBrQABAa8BrwABAbEBswABAbYBugABAb4BvgABAcEBwQABAcMBxAABAdEB0QABAdQB2gABAd0B3QABAeAB4AABAeYB6wABAfIB9gAEAfgB+QAEAhwCJQACAjsCPQACAj4CPgAEAkwCTAAEAk8CVgABAlcCVwAEAnQCdAABAn4CgQACAowCjQABApQClAABApgCmgABAqECoQABAqUCpQABAqgCqQAEArgCuAABAtoC3AABAuYC+gADAAEAAgAAAAwAAAAcAAIAAgLnAusAAALtAvMABQACAAEC9AL3AAAAAAABAAAACgBuALwAAkRGTFQADmxhdG4AEgBKAAAAOgAJQVpFIABGQ1JUIABGS0FaIABGTUFIIABGTU9MIABGTkxEIABGUk9NIABGVEFUIABGVFJLIABGAAD//wADAAEAAwAEAAD//wADAAAAAgAEAAVrZXJuACBrZXJuACBtYXJrAChtYXJrAChta21rAEgAAAACAAAAAQAAAA4AAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPAAAAAQAQABEAJAJUGLQZphnKG8Qb5hw4HFYkeCT6Ju4ncCioKOQpNil4AAIACAACAAoAKgABABAABAAAAAMAGgAaABoAAQADAj4CPwJOAAEB8wAGAAIAqgAEAAAAwADuAAcACwAA//cAAAAAAAAAAAAAAAAAAAAAAAAAAP/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAA//kAAP/cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/0//P/6f/i/+oAAAAAAAAAAP/3AAD/8QAA/+IAAP/5//r//gAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAQAJAfMB9AH2AfgB+QI+Aj8CTgJcAAIABwHzAfMABAH0AfQAAwH2AfYAAQH4AfgAAgI+Aj8ABgJOAk4ABgJcAlwABQACAC4AAgANAAMADwAUAAQAFwAYAAQAIwAjAAQAJQAsAAQATABVAAQAWABYAAQAXQBiAAQAZABoAAUAlQCaAAQAmwCbAAMAnACcAAQAnwCfAAQAogCiAAQAqQCpAAQAqgCqAAMBZwFnAAMBbgFuAAMBcwFzAAgBewF7AAQBfgF+AAQBfwF/AAUBggGCAAQBjgGQAAQBlAGUAAUBlwGXAAUBmgGaAAQBpQGlAAQBpwGnAAQB7AHsAAMB7gHuAAMB8AHwAAIB8QHxAAQB8wHzAAkB9AH0AAgB9QH1AAYB9gH2AAoB9wH3AAQB+AH4AAUB+QH5AAICDwIPAAQCTAJMAAMCVwJXAAcCXQJdAAECiQKJAAQCzwLPAAMAAgAIAAIACgXUAAEAWgAEAAAAKAOsAK4DrAOsA6wDrAOsA6wDrAOsA6wDrAC4A6wA0gHQAdAB0AHQAdAB1gOsA6wDsgSwBbIFsgWyBbgFvgW+Bb4FvgW+BcQFxAXEBcQFxAXEAAEAKAANAA4AGQAaABsAHAAdAB4AHwAgACEAIgAkAFUAWQBkAGUAZgBnAGgAewCdAJ4A6QEFAQYBBwEIAYkBrAGtAa4BrwHCAcMBxAHeAeIB4wHrAAIAGf/zARD/7AAGAM7/9gDl/+wA5//sAOj/7AFh//YCfP/2AD8Auf/uALr/7gC7/+4AvP/uAL3/7gC+/+4Av//uAMD/7gDB/+4Awv/uAMP/7gDE/+4Axf/uAMb/7gDH/+4AyP/uAMn/7gDK/+4Ay//uAMz/7gDN/+4Az//uAND/7gDR/+4A0v/uANP/7gDU/+4A1f/uANb/7gD4/+4A+f/uAPr/7gD7/+4A/P/uAP3/7gD+/+4A///uAQD/7gEB/+4BBP/uAQn/7gEK/+4BC//uAQz/7gEN/+4BDv/uAT//7gFA/+4BQf/uAUL/7gFD/+4BRP/uAUX/7gFG/+4BR//uAUj/7gFJ/+4BUP/uAVH/7gFS/+4BU//uAVr/7gFg/+4AAQAC/6AAdQCs/7kArf+5AK7/uQCv/7kAsP+5ALH/uQCy/7kAs/+5ALT/uQC1/7kAtv+5ALf/uQC5/64Auv+uALv/rgC8/64Avf+uAL7/rgC//64AwP+uAMH/rgDC/64Aw/+uAMT/rgDF/64Axv+uAMf/rgDI/64Ayf+uAMr/rgDL/64AzP+uAM3/rgDP/64A0P+uANH/rgDS/64A0/+uANT/rgDV/64A1v+uAOn/6ADq/+gA6//oAPH/6ADy/+gA8//oAPT/6AD1/+gA9v/oAPf/6AD4/64A+f+uAPr/rgD7/64A/P+uAP3/rgD+/64A//+uAQD/rgEB/64BAv/oAQP/6AEE/64BBf/oAQb/6AEH/+gBCP/oAQn/rgEK/64BC/+uAQz/rgEN/64BDv+uARX/4gEW/+IBF//iARj/4gEZ/+IBGv/iARv/4gEc/+IBHf/iAR7/4gEf/+IBM//oATT/uQE1/7kBNv+5ATf/uQE4/7kBOf+5ATr/uQE7/7kBPP+5AT3/uQE+/7kBP/+uAUD/rgFB/64BQv+uAUP/rgFE/64BRf+uAUb/rgFH/64BSP+uAUn/rgFP/7kBUP+uAVH/rgFS/64BU/+uAVr/rgFb/+IBX/+5AWD/rgABAEb/+QA/ALn/wAC6/8AAu//AALz/wAC9/8AAvv/AAL//wADA/8AAwf/AAML/wADD/8AAxP/AAMX/wADG/8AAx//AAMj/wADJ/8AAyv/AAMv/wADM/8AAzf/AAM//wADQ/8AA0f/AANL/wADT/8AA1P/AANX/wADW/8AA+P/AAPn/wAD6/8AA+//AAPz/wAD9/8AA/v/AAP//wAEA/8ABAf/AAQT/wAEJ/8ABCv/AAQv/wAEM/8ABDf/AAQ7/wAE//8ABQP/AAUH/wAFC/8ABQ//AAUT/wAFF/8ABRv/AAUf/wAFI/8ABSf/AAVD/wAFR/8ABUv/AAVP/wAFa/8ABYP/AAEAAuf/eALr/3gC7/94AvP/eAL3/3gC+/94Av//eAMD/3gDB/94Awv/eAMP/3gDE/94Axf/eAMb/3gDH/94AyP/eAMn/3gDK/94Ay//eAMz/3gDN/94Az//eAND/3gDR/94A0v/eANP/3gDU/94A1f/eANb/3gD4/94A+f/eAPr/3gD7/94A/P/eAP3/3gD+/94A///eAQD/3gEB/94BBP/eAQn/3gEK/94BC//eAQz/3gEN/94BDv/eATT/5wE//94BQP/eAUH/3gFC/94BQ//eAUT/3gFF/94BRv/eAUf/3gFI/94BSf/eAVD/3gFR/94BUv/eAVP/3gFa/94BYP/eAAEBNP/nAAEBzAAAAAEBu/+wAAEBu/+4AAIHgAAEAAAIdAxiABwAIgAA/+//4P/Z/6D/8//z/6YACv+2/9X/8P/0//H/1f/A/9n/6v/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7AAAAAD/4//6AAD/7AAAAAAAAAAAAAAAAP/zAAD/5//2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5AAAAAP/xAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAAAAAAAP/kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAD/rQAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAP/c/5wAAAAA/7AAAP+IAAAAAAAA/+D/xP/iAAD/6//YABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8wAAAAD/7AAAAAD/1QAA//b/9gAA/+8AAAAA/98AAAAA//H/2f/sAAD/+v/Y/+r/7v/s//QAAAAAAAAAAAAAAAAAAAAA/7AAAAAAAAAAAAAA/+8AAAAAAAD/+f/pAAAAAAAA//kAAP+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//MAAP/x//gAAAAA/+IAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9+/+wADQAAAAAAEf+6AAD/7AAA/+z/twAAAAAAAP/h/+v/ygAA/+wAAAAAAAAAAP+lAAD/6/+c/+X/rgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//H/sP/VAAAAAAAAAAf/yQAAAAAAAP/w/8IAAP/0AAD/6gAA/6YAAAAAAAAAAAAAAAD/tgAA/+8AAAAAAAAAAAAAAAD/7gAA/9gAAAAAAAAAAP/o//IAAAAA/+//xgAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAP/z//0AAP/fAAD/7gAAAAD/9gAAAAAAAP/pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0AAAAAD/3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/+8AAP/iAAAAAAAAAAAAAP/W/9YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//v/oAAD/9v/8//j/6f/UAAD/+P/gAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAD/7P/0AAD/8f/1/+//8wAA/+IAAP/z/+wAAP/4/+gAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAP/O//z/6P/s//v/+P/5/9j/5QAA//T/5P/2/+L/xQAAAAD/8AAAAAAAAAAA/+MAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAD/6QAA//YAAP/p/+sAAP/0AAAAAAAA/+L/2AAAAAAAAP/xAAD/ygAAAAD/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAP/zAAD/8wAAAAAAAAAA//z/6wAAAAD/9QAAAAAAAAAA//AAAAAA//sAAAAAAAAAAP/x//MAAAAAAAD/7AAAAAAAAAAA/+UAAAAAAAAAAAAA/87/2wAAAAAAAAAAAAD/ygAAAAD/yAAAAAAAAAAAAAAAAAAA//b/7AAAAAAAAP/ZAAD/0f/T/+3/xQAA/+AAAP/sAAAAAP/2AAAAAAAA/+UAAAAAAAAAAAAAAAAAAAAA/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAAAAAAAAAAAA//wAAAAAAAD/9wAAAAAAAAAAAAAAAAAA//AAAAAA//MAAAAA//wAAAAAAAD/+wAAAAAAAAAA/+8AAAAAAAD/+gAA//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAKAACABUAAAAZAFYAFABYAGIAUgBkAIQAXQCGAIsAfgCVAKYAhACpAKkAlgCsAL8AlwDCAOUAqwDnAO0AzwDvAQ4A1gEQATAA9gEyAUsBFwFNAWEBMQFkAWQBRgFnAWoBRwFsAXYBSwF4AYQBVgGGAYYBYwGJAZIBZAGVAZ0BbgGfAZ8BdwGhAaEBeAGkAacBeQGpAbkBfQG7AcoBjgHNAc0BngHRAdoBnwHcAekBqQHrAewBtwHuAe4BuQHwAfIBugH6AfoBvQIPAg8BvgJMAk0BvwJ8AnwBwQKGAoYBwgKJAokBwwKhAqEBxALPAs8BxQACAKcADQANAAMADgAOAAEADwAUAAIAFQAVAAcAGQAiAAMAIwAjAAcAJAAkAAQAJQAsAAUALQAwAA8AMQAxAAsAMgA5AA8AOgA8AAsAPQA/AA0AQABEAAYARQBLAA8ATABUAAcAVQBVAAMAVgBWAAgAWABYAAcAWQBcAAkAXQBiAAcAZABoAAoAaQBzAAsAdAB5AAwAegB6AA0AewCAAAwAgQCEAA4AhgCGAAYAhwCHAA8AiACLAAkAlQCaAAUAnACcAAIAnQCeAAMAnwCfAAUAoAChAA8AogCiAAcAowCjAAsApAClAAwApgCmAA4AqQCpAAUArAC2ABIAtwC+ABQAvwC/AA8AwgDNABQAzgDOABEAzwDWABcA1wDZABMA2gDlAA8A5wDoAA8A6QDrABkA7ADtABIA7wDwABIA8QD3ABMA+AEDABQBBAEEABcBBQEIABUBCQEOABQBEAEUABYBFQEfABcBIAElABgBJgEmABkBJwEsABgBLQEwABoBMgEyABIBMwE+ABMBPwFJABcBSgFLAA8BTQFOAA8BTwFPABIBUAFSABQBUwFTABcBVAFZAA8BWgFaABQBWwFbABcBXAFdABgBXgFeABoBXwFfABMBYAFgABcBYQFhABEBZAFkABYBaAFpAAEBagFqAAoBbAFtAAoBbwFxAAMBcgFyAA0BcwFzAAEBdAF1AA8BdgF2AA0BeAF6AA8BewF7AAcBfAF8AA8BfQF9AAgBfgF+AAIBfwF/AAoBgAGBAAwBggGCAAcBgwGDAA0BhAGEABsBhgGGAA8BiQGJAAEBigGKABsBiwGNAAEBjgGOAAcBjwGPAAIBkAGQAAcBkQGSABsBlQGVAAcBlgGWABsBlwGYAAEBmQGZAA0BmgGaAAcBmwGbAAwBnAGdAA0BnwGfAAwBoQGhAA0BpAGkABsBpQGlAAcBpgGmAA8BpwGnAAcBqQGpABIBqgGrABQBrAGvABUBsAGzABQBtAG0ABkBtQG1ABQBtgG4ABcBuQG5ABkBuwG9ABcBvgG+ABQBvwG/ABMBwAHBABQBwgHCABUBwwHEABgBxQHFABQBxgHGABkBxwHKABcBzQHNABcB0QHTABQB1AHVABcB1gHWAA8B1wHXABMB2AHYABQB2QHZABcB2gHaABMB3AHcABkB3QHdABQB3gHeABgB3wHgABkB4QHhAA8B4gHjABgB5AHkABkB5QHlABcB5gHmABMB5wHnAA8B6AHoABQB6QHpABcB6wHrABgB8AHwAAIB8QHxAAcB8gHyABsB+gH6AAcCDwIPAAcCTAJMAAwCfAJ8ABEChgKGABACiQKJAAcCoQKhABsAAgCxAAIADQATAA4ADgAYAA8AFAADABUAFgAYABcAGAADABkAIgAYACMAIwADACQAJAABACUALAADAC0AOQAYADoAPAACAD0AQgABAEMAQwAYAEQARAAWAEUASwAYAEwAVQADAFYAVwAYAFgAWAADAFkAXAAYAF0AYgADAGQAaAAEAGkAcwAFAHQAeQAHAHoAegAXAHsAgAAHAIYAiwAYAJUAmgADAJsAmwATAJwAnAADAJ0AngAYAJ8AnwADAKAAoQAYAKIAogADAKMAowAFAKQApQAHAKkAqQADAKoAqgATAKsAqwAFAKwAtwAIALgAuAAYALkAzQANAM4AzgAKAM8A1gANANcA5AAYAOUA5QAUAOcA6AAUAOkA6wAMAOwA8AALAPEA9wAMAPgBAQANAQIBAwAMAQQBBAANAQUBCAAMAQkBDgANARABFAAPARUBHwARASABJQASASYBJgAVAScBLAASAS0BMAAgATIBMgALATMBMwAMATQBPgAIAT8BSQANAUoBSwAYAU0BTgAYAU8BTwAIAVABUwANAVQBWQAYAVoBWgANAVsBWwARAVwBXQASAV4BXgAgAV8BXwAIAWABYAANAWEBYQAKAWQBZAAPAWUBZgAJAWcBZwATAWgBawAYAWwBbQABAW4BbgATAW8BcQAYAXIBcgAXAXMBcwAQAXQBdwAYAXgBeAAfAXkBegAYAXsBewADAXwBfQAYAX4BfgADAX8BfwAEAYABgQAGAYIBggADAYMBgwAXAYUBigAYAYwBjAACAY0BjQABAY4BkAADAZEBkgABAZQBlAAEAZUBlQABAZcBlwAEAZgBmAABAZkBmQAXAZoBmgADAZsBmwAHAZwBnAAXAZ0BngAYAZ8BnwAHAaEBoQAXAaMBpAAYAaUBpQADAacBpwADAakBqQAIAaoBqgANAasBrwAMAbABswANAbQBtAAVAbUBtQANAbYBuQAMAbsBuwAdAbwBvQAMAb4BvgANAb8BwAAMAcEBwQANAcIBwgAPAcMBxAASAcUBxQANAcYBxgAVAccBxwARAcgBygAMAcwBzQAMAc4BzgAPAc8BzwAdAdAB0AAMAdEB0wANAdQB1QAMAdYB1gAUAdcB1wAYAdgB2AAMAdsB2wAYAdwB3AAVAd0B3QANAd4B3gASAd8B3wAVAeAB4QAYAeIB4wASAeQB5AAVAeUB5QARAeYB5wAYAegB6AANAekB6QAMAesB6wASAewB7AATAe4B7gATAfEB8QADAfMB8wAbAfQB9AAQAfUB9QAeAfcB9wADAfgB+AAEAg8CDwADAj4CPwAaAkUCRQAOAkkCSQAJAkwCTAATAk0CTQAHAk4CTgAaAlQCVAAOAlcCVwAhAl0CXQAZAnwCfAAKAoYChgAcAokCiQADAqECoQABAs8CzwATAAQAAAABAAgAAQ7IAAwAAg7oADYAAQATAk8CUAJRAlICUwJUAlUCVgJ0AowCjQKUApgCmQKaAqECpQLaAtsAEwBOAAAAVAAAAFoAAABgAAAAZgBsAHIAAAB4AH4AhAAADxIAAACKAAAAkAAAAJYAnAs4Cz4AogAACYgJggoMChIAqAAAAK4AAACuAAAAAQCPAhIAAQCTAhIAAQEvAhIAAQBvAhIAAQBcAhIAAQBvABIAAQEcAhIAAQESAhIAAQEtACIAAQBrAhIAAQG7AhIAAQC+AhIAAQFkAsYAAQFjAAAAAQETAhIAAQB8AhIAAQGkAhIABAAAAAEACAABD0oADAABD1gAEgABAAECuAABAAQAAQIcAAAABAAAAAEACAABDbIADAACDdIAkAABAEABZwFqAWsBbQFvAXABcQF0AXUBdgF3AXoBewF+AX8BgAGBAY4BkQGSAZMBlQGWAZoBnQGeAZ8BoAGkAaYBpwGoAakBrAGtAa8BsQGyAbMBtgG3AbgBuQG6Ab4BwQHDAcQB0QHUAdUB1gHXAdgB2QHaAd0B4AHmAecB6AHpAeoB6wBADfAAAAECAAABAgAAAQgAAAhmCGwIZghsCGYIbAEgASYBIAEmDgwAAA4MAAAN8AAACIQIighgCMYIKggkASwAAAEsAAAIGAgSCHgIfgh4CH4HygAAAQ4BFA3wARoIhAiKDgwAAA3wAAAInAiiCJwIogh4CH4BIAEmCIQIigEsAAAJ7AmkATIAAAEyAAABOAAACaoJzgmqCc4JqgnOAVwAAAFcAAABXAAAAVYAAAFWAAAJyAnOCcgJzgnmAAAJ5gAACVAJSgm2AAAJtgAACcIAAAjwAAABPgFEAUoBUAjwAAAJyAnOAVYAAAkCAAAJjAl6COQI6gFcAAAJyAnOCeYAAAABAU0CxgABAYICxgABAooCxgABAooAAAABAWcAAAABAWoCxgABAXQAAAABASsCxgABAQsCFgABATECFgABAhgCFgABAhgAAAABAV8CFgABAUQAAAABATQCFgABAScCFgAEAAAAAQAIAAEM8AAMAAEM9gAUAAEAAgF/AecAAgj2CQgABAAAAAEACAABDQoADAABDRgALAABAA4BZwFvAXABcQGRAZIBpAGpAbEBsgGzAdQB1QHoAA4M/gqMCowKjAqSCpIKkgqwCrYKtgq2CrwKvAqkAAQAAAABAAgAAQ0KAAwAAQ0WABIAAQABAecAAQsSAAQAAAABAAgAAQsmAAwAAgtGAJQAAgAWAAIADAAAAA8AIgALACUAKwAfAC0ALQAmAC8ARAAnAEYASgA9AEwAVABCAFgAYgBLAGQAcwBWAHUAeQBmAHsAhABrAIYAqQB1AKwAtwCZALkAwQClAMMAzQCuAM8BAQC5AQUBDgDsARABHwD2ASEBJQEGAScBMAELATIBYAEVAtwC3AFEAUULYAAAC2AAAAtgAAALYAAAC2AAAAtgAAALYAAAC2AAAAtgAAALYAAAC2AAAAXQBjYF0AY2BdAGNgXQBjYF0AY2BdAGNgUWBRwFFgUcBSIFKAUiBSgF1gXcBdYF3AXWBdwF1gXcBdYF3AXWBdwF1gXcBdYF3AXWBdwF1gXcBjAF4gYwBeIGMAXiBjAF4gYwBS4GMAXiBjAF4gtgAAALYAAABegF7gU0Be4F6AXuBegF7gXoBe4F6AXuBegF7gXoBe4F6AXuBegF7gU6AAAFOgAABToAAAVGBUAFRgVABUYFTAXoBVIF6AVSBegFUgXoBaYFWAVeBawFZAWsBWQFrAVkBawFsgWsBWQF9AX6BfQF+gX0BfoF9AX6BfQF+gX0BfoF9AX6BWoFcAX0BfoGMAY2BYgFdgWIBXYFiAV2BYgFfAWIBYIFiAWCBYgFggWIBYIFiAWCBYgFjgWaBZQFmgWUBZoFlAWaBZQFmgWgC3wLggt8C4ILfAuCC3wLggt8C4ILfAuCC3wLggt8C4ILfAuCC3wLggt8C4IGAAYGBgAGBgYABgYGAAYGBgAGBgYMBhIGDAYSBgwGEgYMBhIGDAYSBgwGEgYYBh4GGAYeBhgGHgYYBh4F6AWmBawFsgW+BbgFvgW4Bb4FuAW+BcQGJAYqBiQGKgYkBioGJAYqBiQGKgYkBioGJAYqBiQGKgYkBioGMAY2BjAGNgYwBjYGMAXKBjAGNgYwBjYLYAAABdAGNgXWBdwF1gXcBjAF4gXoBe4F6AXuBfQF+gt8C4IGAAYGBgwGEgYYBh4GJAYqBiQGKgYwBjYHXAcUB1wHFAdcBxQHXAcUB1wHFAdcBxQHXAcUB1wHFAdcBxQHXAcUB1wHFAY8BkIHOAc+BzgHPgc4Bz4HOAc+BzgHPgc4Bz4GSAZOBkgGTgZIBk4HGgc+BxoHPgcaBz4HGgc+BxoHPgcaBz4HGgc+BxoHPgcaBz4HGgc+BlQGWgcgAAAHIAAAByAAAAcgAAAHIAAAByAAAAcgAAAHIAAABnIAAAZgAAAGcgAAByYAAAcmAAAHJgAAByYAAAcmAAAHJgAAByYAAAcmAAAHJgAAByYAAAZmAAAHMgAABzIAAAcyAAAHMgAABnIGbAZyBmwGcgZ4BtIMxgbSDMYG0gzGBtIG2AZ+BoQGigaQBt4GlgbeBpYG3gaWBt4G5AbeBpYG3gaWBzgHPgc4Bz4HOAc+BzgHPgc4Bz4HOAc+BzgHPgc4Bz4HOAc+BpwGogauBqgGrgaoBq4GqAauBrQGwAa6BsAGugbABroGwAa6BsAGugbABsYLngukC54LpAueC6QLngukC54GzAdEB0oHRAdKB0QHSgdEB0oHRAdKB0QHSgdEB0oHRAdKB0QHSgdEB0oHRAdKB1AHgAdQB4AHUAeAB1AHgAdQB4AHVgAAB1YAAAdWAAAHVgAAB1YAAAdWAAAHXAd0B1wHdAdcB3QHXAd0BtIG2AbeBuQHYgdoB2IHaAdiB2gHYgdoB2IHaAdiB2gHYgdoB2IHaAdiB2gHYgdoB2IHaAduB3QHbgd0B24HdAduB3QHbgd0B24HdAduB3QHbgd0B24HdAduB3QHbgd0BvwG6gb8BuoG8Ab2BvwHAgcIBw4HXAcUBzgHPgcaBz4HGgc+ByAAAAcmAAAHJgAAByYAAAcmAAAHLAAABzIAAAc4Bz4HRAdKB1AHgAdWAAAHXAd0B2IHaAduB3QHegeAAAEBRQLGAAEBSwAAAAEBlQLGAAEBmwAAAAEBev8ZAAEDCgLGAAEB6ALGAAEBYgAAAAEBVALGAAEBYv8ZAAEBOQAAAAEAswLGAAEBXAAAAAEBdQAAAAEBgALGAAEBgAAAAAEBZQAAAAEBZf8ZAAEBVgAAAAEBVgLGAAEBV/8ZAAEBMwAAAAEBMwLGAAEBM/8ZAAEBOv8ZAAEBfwLGAAEBdf8ZAAEBUwAAAAEBUwLGAAEBU/8ZAAEBe/8ZAAEBeALGAAEBQALHAAEBQQAAAAEBegAAAAEAkQLGAAEAkQAAAAEBfgLGAAEBfgAAAAEB4gLGAAEB4gAAAAEBUQLGAAEBUQAAAAEBKgLGAAEBKgAAAAEA5QLGAAEA5QAAAAEBewLGAAEBewAAAAEClwIUAAEClwAAAAEBOAIWAAEBOAAAAAEBIwIWAAEBIwACAAEArQLLAAEBsAIWAAEBNwAAAAEAhgLLAAEBOP8ZAAEAiQLGAAEAtAAAAAEBvgIWAAEBvgAAAAEBLQAAAAECvQIUAAECvQAAAAEAhgAAAAEA3AIWAAEAh/8ZAAEBHQAAAAEBGwISAAEBHv8ZAAEA/f8ZAAEAhgLGAAEAsv8ZAAEBLQIWAAEBLf8ZAAEAkAAAAAEAjgLGAAEAjgAAAAEAkALGAAEAkP8ZAAEA2wLGAAEA2wAAAAEBHgAAAAEBMAIUAAEBLwIWAAEAhgIWAAEBowIWAAEArQIWAAEBMAIWAAEBMAAAAAEBKAIWAAEBKAAAAAEBpAIWAAEBHgIWAAEBJQIWAAEBGgIWAAEBGQAAAAEBLgIWAAEBJQAAAAEBpALGAAEBpAAAAAQAAAABAAgAAQQ8AAwAAQRCAC4AAgAFAGQAaAAAAL8AwQAFARABFAAIAUoBTgANAtwC3AASABMAKAAoACgAKAAoAC4ALgAuBCoEKgQqBCoEKgA6ADoANAA6AEAARgABATMBTgABATgBCwABAI4BCQABAJABCQABANsBCQABAaQBdQAEAAAAAQAIAAED9gAMAAEEBACOAAIAFQACAAwAAAAZACIACwAwADkAFQBpAHMAHwCMAJQAKgCbAJsAMwCdAJ4ANACgAKEANgCjAKMAOACnAKgAOQCsALcAOwDDAM0ARwDaAOQAUgEBAQEAXQEVAR8AXgE0AUkAaQFPAU8AfwFRAVIAgAFUAVgAggFbAVsAhwFfAWAAiACKA4gDiAOIA4gDiAOIA4gDiAOIA4gDiAEWARYBFgEWARYBFgEWARYBFgEWARwBHAEcARwBHAEcARwBHAEcARwDmgOaA5oDmgOaA5oDmgOaA5oDmgOaASIBIgEiASIBIgEiASIBIgEiA4gBFgEWARwBHAOaASIBIgE6AToBOgE6AToBOgE6AToBOgE6AToBKAFAAUABQAFAAUABQAFAAUABQAFAAS4BRgFGAUYBRgFGAUYBRgFGAUYBRgFGATQBTAFMAUwBTAFMAUwBTAFMAUwBTAFMAVIBUgFSAVIBUgFSAVIBUgFSAVIBUgFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBOgFAAUABRgFGAUYBRgFGAUwBUgFYAAECNgAAAAEA0gAAAAEBngAAAAEDMAAeAAEAiwH4AAEDVQAeAAECNwAAAAEByAAeAAEAxgAAAAECDgAAAAECAwAAAAECKQAAAAQAAAABAAgAAQJUAAwAAQJgAC4AAgAFAL8AwQAAAOwA8AADARABFAAIATIBMgANAUoBTgAOABMAKAAoACgANAA0ADQANAAuAkgCSAJIAkgCSAA0AEAAQAA6AEAARgABAj8CFgABAN8CEgABAN0CEgABAOQCEgABAOYCEgABATECEgAFAAAAAQAIAAEADAAiAAIALADIAAIAAwLmAusAAALtAvcABgL5AvoAEQABAAMAqgCrAWQAEwAAAE4AAABUAAAAlgAAAFoAAABgAAAAZgAAAGwAAABsAAAAcgAAAHgAAAB+AAAAhAAAAIoAAQIOAAECDgABAhQAAQIaAAAAkAAAAJYAAQDBAhYAAQDMAhIAAQCuAhIAAQBjAhIAAQCrAhIAAQDHAhIAAQDBAhIAAQCNAhIAAQDRAhIAAQC6AhIAAQBmAhIAAQDJAhIAAQBsAhIAAwAIACQARgACAAoAAAAQABYAAQFnAsYAAQOzAsYAAQOzAAAAAgAKABAAFgAcAAEBXQLGAAEBXQAAAAEDoALGAAEDoAAAAAIACgAQABYAHAABANcCFgABAPwAAAABAjQCFgABAlkAAAAFAAAAAQAIAAEADACgAAEAEgAeAAEAAQL4AAEAAAAGAAEBLQFOAAEABAACAAYADAABANcBCwABAjQBCwAFAAAAAQAIAAEADAASAAEAGgAgAAEAAQL3AAEAAgCqAKsAAQAAALgAAgAGABgAAgAGAAwAAQK2AAAAAQRsAAAAAgAGAAwAAQHEAAAAAQRZAAAABQAAAAEACAABAAwAEgABABgAJAABAAEC7AABAAEBZAABAAAABgABACMCEgABAAQAAgAGAAwAAQELAoEAAQJnAoEABgAQAAEACgABAAEADAAWAAEAHgBCAAIAAQL0AvcAAAABAAIC9AL1AAQAAAASAAAAEgAAABgAAAAeAAEAbwAAAAEAsgAAAAEA0QAAAAIABgAGAAEAb/8ZAAEAAAAKAmID0AACREZMVAAObGF0bgBAAAQAAAAA//8AFAAAAAEAAwAEAAUADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AOgAJQVpFIABoQ1JUIACYS0FaIADITUFIIAD4TU9MIAEoTkxEIAFYUk9NIAGIVEFUIAG4VFJLIAHoAAD//wAUAAAAAgADAAQABQAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUABgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUABwAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUACAAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUADQAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUADAAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUACwAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUACQAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAA//8AFQAAAAEAAwAEAAUACgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeYWFsdAC2Y2NtcAC8Y2NtcAC8ZGxpZwDEZnJhYwDKbGlnYQDQbG9jbADWbG9jbADWbG9jbADWbG9jbADWbG9jbADWbG9jbADcbG9jbADcbG9jbADibG9jbADob3JkbgDucG51bQD2c2luZgD8c3MwMQECc3MwMgEMc3MwMwEWc3MwNAEgc3MwNQEqc3MwNgE0c3MwNwE+c3MwOAFIc3MwOQFSc3VicwFcc3VwcwFidG51bQFoAAAAAQAAAAAAAgABAAIAAAABAA8AAAABAAoAAAABABAAAAABAAMAAAABAAQAAAABAAUAAAABAAYAAAACAAsADAAAAAEADQAAAAEACAAGAAEAEQAAAQAABgABABIAAAEBAAYAAQATAAABAgAGAAEAFAAAAQMABgABABUAAAEEAAYAAQAWAAABBQAGAAEAFwAAAQYABgABABgAAAEHAAYAAQAZAAABCAAAAAEABwAAAAEACQAAAAEADgAdADwEVASaBMAE1AT2BRwFUgVSBWAFbgYCBkAGYgZ6BpIGwAdQB14HdgeOB6YH1ggACBgI4gj4CRAJKgADAAAAAQAIAAEDHgB3APQA+AD8AQABBAEIAQwBEAEUARgBHgEiASYBKgEuATQBOgE+AUIBRgFKAU4BUgIaAVYBWgFeAWIBZgFqAW4BcgF2AXoBfgGCAYYBigGOAZYBnAGiAagBrgG2AbwBwgHIAc4B1AHYAdwB4AHkAeoB7gHyAfYB+gIAAgQCCAIMAhICFgIaAh4CIgImAioCLgIyAjYCOgI+AkICTAJWAl4CZgJuAnYCfgKGAo4ClgKaAp4CogKmAqoCrgKyArYCugK+AsICxgLKAs4C0gLWAtoC3gLiAuYC6gLuAvIC9gL6Av4DAgMGAwoDDgMSAxYDGgABAWUAAQCbAAEAnAABAJ0AAQCeAAEAlQABAJYAAQCXAAEAmAACAJkAnwABAJoAAQCMAAEAjQABAI4AAgCPAKAAAgCQAKEAAQCRAAEAkgABAJMAAQCUAAEAOwABAIYAAQCHAAEAogABAIgAAQCJAAEAigABAIsAAQBiAAEAaAABAKMAAQCkAAEApQABAKYAAQCnAAEAqAABAKkAAwFlATQBPwACATUBQAACATYBQQACATcBQgACATgBQwADATkBRAFPAAIBOgFFAAIBOwFGAAIBPAFHAAIBPQFIAAIBPgFJAAEBUAABAVEAAQFSAAEBUwACAN8BVAABAVUAAQFWAAEBVwABAVgAAgDnAVkAAQFKAAEBSwABAUwAAgEyAU0AAQFOAAEBMwABAWYAAQFaAAEBDgABARQAAQFbAAEBXAABAV0AAQFeAAEBXwABAWAABAImAjACEQIPAAQCJwIxAhICEAADAigCMgITAAMCKQIzAhQAAwIqAjQCFQADAisCNQIWAAMCLAI2AhcAAwItAjcCGAADAi4COAIZAAMCLwI5AhoAAQHxAAEB8gABAfMAAQH0AAEB9QABAfYAAQH3AAEB+AABAfkAAQH6AAECTgABAk8AAQJQAAECUQABAlIAAQJTAAECVAABAlUAAQJWAAEC0AABAtEAAQLSAAEC0wABAtQAAQLVAAEC1gABAtcAAQLYAAEC2QABAvkAAQL6AAEC9QABAwgAAQMJAAEAdwACAAcAFAAdAB4AJQAmACgAKQAqACsAMAAyADMANAA1ADYANwA4ADkAOgBDAEkATABPAFkAWgBbAFwAYABnAG0AeAB+AIQAjwCQAJkArACtAK4ArwCwALEAsgCzALQAtQC2AL4AxwDIANQA2gDeAN8A4gDkAOUA7ADtAO4A7wDwAPUA+AD7AQwBEwEZASQBKgEwATkBRAHxAfIB8wH0AfUB9gH3AfgB+QH6AhECEgITAhQCFQIWAhcCGAIZAhoCPgJAAkECQgJDAkQCRQJGAkcCuwK8Ar0CvgK/AsACwQLCAsMCxALnAugC9AL7AvwABgAQAAIADAAeAAAAAwAAAAEAbgABACoAAQAAABoAAwAAAAEAEgABABgAAQAAABoAAQABAOUAAgACAucC6wAAAu0C8wAFAAIAAAABAAgAAQAKAAIAEgAYAAEAAgFiAWMAAgDOANoAAgDOAOwAAQAAAAEACAABAAYABQABAAEA2gABAAAAAQAIAAIADgAEAGIAaAEOARQAAQAEAGAAZwEMARMAAQAAAAEACAACABAABQCGAIcBMgEzAvUAAQAFAEMASQDvAPUC9AAGAAAAAQAIAAED/gACAAoAHAABAAQAAQAyAAEAAAABAAAAGwABAAQAAQDcAAEAAAABAAAAGwABAAAAAQAIAAEBLgA1AAEAAAABAAgAAQEgAD8ABAAAAAEACAABAH4ABQAQAEQAUABmAHIABQAMABQAHAAkACwCHAADAkwB8wIdAAMCTAH0Ah8AAwJMAfUCIQADAkwB9gIiAAMCTAH5AAEABAIeAAMCTAH0AAIABgAOAiAAAwJMAfUCIwADAkwB+QABAAQCJAADAkwB+QABAAQCJQADAkwB+QABAAUB8gHzAfQB9gH4AAYAAAACAAoAJAADAAEAfAABABIAAAABAAAAHAABAAIAAgCsAAMAAQBiAAEAEgAAAAEAAAAcAAEAAgBMAPgABAAAAAEACAABABQAAQAIAAEABAKUAAMA+AI+AAEAAQBGAAEAAAABAAgAAQAG/+AAAgABAhECGgAAAAEAAAABAAgAAQAGACAAAgABAfEB+gAAAAQACAABAAgAAQAeAAIACgAUAAEABACqAAIAMAABAAQAqwACADAAAQACAAIAaQAEAAgAAQAIAAEAfAAEAA4AKAAyAFIAAwAIAA4AFAFhAAIAzgFiAAIA2gFjAAIA7AABAAQBZAACARAAAwAIABIAGgI7AAQCVwJXAqgCPAADAlcCqAI9AAICqAAEAAoAFAAcACQCgAAEAlcCVwJXAn8AAwJXAlcCgQADAlcCqAJ+AAICVwABAAQAzgEQAlcCqQABAAAAAQAIAAEAFACIAAEAAAABAAgAAQAGAJMAAgABAKwAtgAAAAEAAAABAAgAAQAGAF4AAgABAOwA8AAAAAEAAAABAAgAAQAGAC8AAgABAFkAXAAAAAEAAAABAAgAAgAYAAkAjACNAI4AjwCQAJEAkgCTAJQAAgACADAAMAAAADIAOQABAAEAAAABAAgAAgASAAYAlQCWAJcAmACZAJoAAQAGACUAJgAoACkAKgArAAEAAAABAAgAAQAGABUAAgABArsCxAAAAAEAAAABAAgAAgBiAC4AmwCcAJ0AngCfAKAAoQCiAKMApAClAKYApwCoAKkBTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWACTgJPAlACUQJSAlMCVAJVAlYC+QL6AwgDCQABAC4ABwAUAB0AHgAqADQANQBPAG0AeAB+AIQAjwCQAJkAsQC+AMcAyADUANoA3gDfAOIA5ADlAPsBGQEkASoBMAE5AUQCPgJAAkECQgJDAkQCRQJGAkcC5wLoAvsC/AABAAAAAQAIAAEABgAeAAEAAgHxAfIAAQAQAAEACgAAAAEABgABAAEAAgDaAOUAAQAAAAEACAACAAoAAgA7AOcAAQACADoA5QABAAAAAQAIAAIADgAEAWUBZgFlAWYAAQAEAAIATACsAPg=\"}"
  },
  {
    "path": "apps/v4/app/og/geistmono-regular-otf.json",
    "content": "{\"base64Font\":\"T1RUTwAMAIAAAwBAQ0ZGINMvNaQAABocAADLSkdERUaOgIu5AADlaAAAAgJHUE9TaW4+HAAA52wAABCMR1NVQtVEIxcAAPf4AAANhE9TLzIF4h4/AAAN8AAAAGBjbWFwOpoBDgAAEcAAAAg6aGVhZC6pukoAAADUAAAANmhoZWEPQwwPAAANzAAAACRobXR4VrH9cAAAAQwAAAy+bWF4cAM5UAAAAADMAAAABm5hbWVaa41VAAAOUAAAA3Bwb3N0/58AMgAAGfwAAAAgAABQAAM5AAAAAQAAAAEzM2trAy5fDzz1AAMD6AAAAADiJyGbAAAAAOInIZv/yv8JC3oD9AAAAAcAAgAAAAAAAAHbAFgCWAAAAlgAGgJYABoCWAAaAlgAGgJYABoCWAAaAlgAGgJYABoCWAAaAlgAGgJYABoCWAAKAlgAWgJYACYCWAAmAlgAJgJYACYCWAAmAlgAJgJYAFoCWABaAlj/9gJY//YCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAHAJYAGQCWAAmAlgAJgJYACYCWAAmAlgAJgJYACYCWAAmAlgAFAJYAEQCWAAYAlgARAJYAFACWABQAlgAUAJYAFACWABQAlgAUAJYAFACWABQAlgAUAJYACgCWAAoAlgAKAJYADwCWAA8AlgAPAJYAGQCWABkAlgAZAJYAGQCWP/mAlgAPAJYAEYCWABGAlgARgJYAEYCWABGAlgARgJYACYCWAAmAlgAJgJYACYCWAAmAlgAJgJYACYCWAAmAlgAJgJYAAcCWABaAlgAWgJYACYCWABGAlgARgJYAEYCWABGAlgALAJYACwCWAAsAlgALAJYACwCWAAsAlgAJAJYACgCWAAoAlgAKAJYACgCWAAoAlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAAYAlgAKAJYACgCWAAoAlgAKAJYACgCWAAyAlgALAJYACwCWAAsAlgALAJYACwCWAAsAlgAMgJYADICWAAyAlgAMgJYAQACWABkAlgARgJYAEcCWABHAlgARwJYAEcCWAAUAlgAFAJYABQCWAAUAlgAFAJYABQCWAAaAlgAJgJYAFoCWABaAlgAJgJYAFACWABQAlgAJgJYADwCWAAoAlgALAJYADICWAAUAlgANgJYADYCWAA2AlgANgJYADYCWAA2AlgANgJYADYCWAA2AlgANgJYADYCWAANAlgAUAJYAEYCWABGAlgARgJYAEYCWABGAlgARgJYADICWAAyAlgAMgJYADoCWABCAlgAQgJYAEICWABCAlgAQgJYAEICWABCAlgAQgJYAEICWABCAlgAPAJYAEYCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYAGQCWAAZAlgAAgJYAFACWABQAlgAUAJYAFACWABQAlgAUAJYAFACWABQAlgAUAJYAFACWABuAlgAbgJYAG4CWABuAlgAWgJY//kCWABaAlgAUAJYAFACWABQAlgAUAJYAGQCWAAoAlgAYAJYAGACWABgAlgAYAJYAGACWABgAlgAOgJYADoCWAA6AlgAOgJYADoCWAA6AlgAOgJYACMCWAA6AlgACgJYAFACWABQAlgAMgJYAFoCWABaAlgAWgJYAFoCWABQAlgAUAJYAFACWABQAlgAUAJYAFACWABMAlgAMgJYADICWAAyAlgAMgJYADICWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYADYCWAAUAlgAFAJYABQCWAAUAlgAFAJYADYCWAA2AlgANgJYADYCWAA2AlgANgJYADYCWABSAlgAUgJYAFICWABSAlgBAAJYAFACWABgAlgATgJYAE4CWABOAlgATgJYAE4CWABOAlgATgJYAE4CWABOAlgATgJYAE4CWAA2AlgANgJYADYCWAA2AlgANgJYADYCWAA2AlgANgJYADYCWAA2AlgANgJYAFACWABQAlgAUAJYAFACWABPAlgANgJYAEYCWABCAlgAQgJYADwCWABQAlgAUAJYAFACWABQAlgAbgJYADoCWABaAlgAFAJYADYCWABSAlgATgJYADYCWACPAlgAkQJYABoCWABQAlgAWgJYAGQCWABkAlgAZAJYABMCWAAMAlgAWgJYAFoCWABaAlgABwJYACECWABGAlgARgJYADoCWAA6AlgAFAJYADwCWABEAlgAJgJYAEYCWABaAlgAJgJYACgCWAA0AlgANAJYABkCWAAyAlgAMgJYADwCWAA3AlgAIwJYAEYCWABaAlgAIwJYAB4CWAAFAlgAFAJYACwCWAAmAlgALQJYAFACWABQAlgAKAJYAAUCWAAUAlgALgJYAAUCWAAPAlgAAQJYACYCWAAOAlgABwJYADACWAA1AlgALAJYACsCWAAyAlgAIwJYAEYCWABQAlgAHAJYAEYCWAAmAlgANAJYADYCWAA6AlgAWgJYAJUCWACVAlgAlQJYACkCWAAUAlgAQgJYAEICWABCAlgACwJYAFACWABeAlgAXgJYAF4CWABbAlgAWwJYABkCWAAkAlgAWwJYADoCWABaAlgAUAJYAEYCWABDAlgANgJYADYCWAAXAlgANgJYAEUCWABaAlgAOAJYADgCWABaAlgAUQJYACMCWAAKAlgABQJYABQCWABQAlgAPQJYAD4CWABQAlgAUAJYAG4CWAAZAlgAFAJYAFECWAAZAlgACgJYAA4CWAA6AlgAJQJYAAsCWABaAlgAWwJYADYCWAA2AlgANgJYAEUCWABkAlgAUAJYADwCWABeAlgAOgJYADYCWAAaAlgACQJYADsCWAAQAlgAMwJYADICWAA8AlgAMgJYADICWAAoAlgAPAJYADICWAA8AlgAMgJYADICWAAPAlgADwJYAA8CWAAPAlgADwJYAA8CWAAPAlgADwJYAA8CWAAPAlgADwJYAA8CWAAPAlgADwJYAA8CWAAPAlgADwJYAA8CWAAPAlgADwJYADACWAANAlgAKAJYACgCWAAUAlgAKAJYABECWAAoAlgAKAJYABQCWAARAlgAKAJYAJUCWACzAlgAoAJYAKACWACEAlgApQJYAKUCWACmAlgAnwJYAKgCWACVAlgAswJYAKACWACgAlgAhAJYAKUCWAClAlgApgJYAJ8CWACoAlgAAASwAHwHCACHCWAAPgcIAD4EsAA+BwgAPgSwAD4HCAA+BLAAzQSwAIwHCAGLBwgBAgSwAKIEsADXBLABDgSwAD4HCAA+BLAAaAcIAHwHCADWBLAAKgcIATQEsABsBwgAbAJYAPACWADwAlgA8AJYAPACWAA3AlgA8AJYAPACWABDAlgAQwJYAPACWADDAlgAggJYAKECWAA2AlgAbAJYAGwCWADwAlgA8AJYAPACWAA3AlgA8AJYAPACWABAAlj//wJYAPACWACWAlgAZAJYACgCWABQAlgABgJYAL0CWACXAlgAXwJYAGoCWACpAlgAjgJYAKsCWACmAlgAuQJYAI0CWACqAlgAfwJYAFQCWABWAlgAsAJYAHkCWACqAlgAfwJYALkCWACWAlgA9gJYAJ4CWACcAlgAngJYAOkCWAD2AlgATwJYAE8CWADHAlgAoQJYAKsCWAEAAlgAMgJYAFoHCAAcBLABJQlgATcHCAGDBwgBNQSwATQEsACzBLAAoQcIAD4HCAA+BLAAPgcIAD4HCAA+BwgAPgSwAD4HCAAlBLABBAcIAD4HCAA+BwgAPgSwAD4HCAA+BwgAPgcIAB4JYAA+C7gAPgSwAKAHCADlCWAA5gcIADwEsAD7BwgAPglgAD4HCAA+BwgAPgSwAJEHCAA+BwgAPgSwAIYHCACvBwgAwQcIAOoEsADPBLAAhASwAH0EsACGBLAA2gcIAMEEsAAjAlgACAJYABYCWAAeAlgAKgJYAFACWAAEAlgAMAJYADACWAARAlgAlgJYAN4CWACOAlgBAwJYAQUCWABrAlgAawJYAAUCWAAmAlgATwJYAA4CWAAEAlgACAJYAAQCWAA0AlgARgJYADgCWAAvAlgACgJYABYCWAAhAlgAJQJYABQCWAAvAlgALAJYAD4CWAA+AlgAfgJYAD4CWABQAlgAUAJYAEkCWABIAlgAPgJYAD4CWAA+AlgATwJYAE4CWABaAlgAcwJYAAcCWABuAlgADwJYABECWABGAlgAEQJYACcCWABfAlgADQJYAAQCWAAdAlgAGAJYABECWAAlAlgAHQJYADkCWAAHAlgARgJYAAICWACAAlgAEgJYABQCWAAUAlgAEQJYABECWAASAlgAHgJYAB4CWAAOAlgAEgJYAAICWACLAlgAJgJYABECWAAlAlgAiwJYADkCWAAKAlgAOAJYAAgCWACLAlgAEAJYABACWAACAlgATwJYAAgCWP/KAlgACAJYAJUCWAAIAlgALAJYAAgCWAAzAlgBAQJY/9gCWAEBAlgBAQJYAQEAAACgAAAAoAAAAQAAAADcAAAA3AAAAJYAAAD0AAAAoAAAAKAAAACgAAAA0AAAAI4AAACmAAAA8AAAAPAAAADwAAAAwQAAANQAAABkAAAAnAAAAPYCWACgAQAA3ADcAJYAoACgAKAA0ACOAKYAwQDUAJwA9gDxANwBAAAPAA8AAAABAAADmP8kAGQLuP/K/gwLegABAAAAAAAAAAAAAAAAAAADJgAEArMBkAAFAAgCigJYAAAASwKKAlgAAAFeADIBCQAAAAAAAAAAAAAAAKEAAv8AAa37AAAAAAAAAABWUkNMAMAAIPj/A5j/JABkA/QBAiAAAJcAAAAAAhICxgAAACAABQAAABQA9gADAAEECQABABQAAAADAAEECQACAA4AFAADAAEECQADADgAIgADAAEECQAEACQAWgADAAEECQAFAD4AfgADAAEECQAGACIAvAADAAEECQAIAJAA3gADAAEECQAJAGABbgADAAEECQALADABzgADAAEECQAMADABzgADAAEECQAQABQAAAADAAEECQARAA4AFAADAAEECQEAABIB/gADAAEECQEBAAoCEAADAAEECQECAAoCGgADAAEECQEDAAoCJAADAAEECQEEAAoCLgADAAEECQEFABQCOAADAAEECQEGABYCTAADAAEECQEHABgCYgBHAGUAaQBzAHQAIABNAG8AbgBvAFIAZQBnAHUAbABhAHIAMQAuADIAMAAwADsAVgBSAEMATAA7AEcAZQBpAHMAdABNAG8AbgBvAC0AUgBlAGcAdQBsAGEAcgBHAGUAaQBzAHQAIABNAG8AbgBvACAAUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADIAMAAwADsARwBsAHkAcABoAHMAIAAzAC4AMgAgACgAMwAyADQAOQApAEcAZQBpAHMAdABNAG8AbgBvAC0AUgBlAGcAdQBsAGEAcgBCAGEAcwBlAG0AZQBuAHQALgBzAHQAdQBkAGkAbwAsACAAVgBlAHIAYwBlAGwALAAgAEEAbgBkAHIA6QBzACAAQgByAGkAZwBhAG4AdABpACwAIABHAHUAaQBkAG8AIABGAGUAcgByAGUAeQByAGEALAAgAE0AYQB0AGUAbwAgAFoAYQByAGEAZwBvAHoAYQBCAGEAcwBlAG0AZQBuAHQALgBzAHQAdQBkAGkAbwAsACAAQQBuAGQAcgDpAHMAIABCAHIAaQBnAGEAbgB0AGkALAAgAE0AYQB0AGUAbwAgAFoAYQByAGEAZwBvAHoAYQBoAHQAdABwAHMAOgAvAC8AYgBhAHMAZQBtAGUAbgB0AC4AcwB0AHUAZABpAG8ALwBOAG8AIAB0AGEAaQBsACAAYQBBAGwAdAAgAGEAQQBsAHQAIABsAEEAbAB0ACAAUgBBAGwAdAAgAEcAQQBsAHQAIABhAHIAcgBvAHcAcwBSAG8AdQBuAGQAZQBkACAAZABvAHQAUwBsAGEAcwBoAGUAZAAgAHoAZQByAG8AAAACAAAAAwAAABQAAwABAAAAFAAECCYAAAEIAQAABwAIAC8AOQB+AKwBEwErATEBNwE+AUgBTQF+AY8BkgHOAekCGwI3AlkCuQK8AsgC3QMEAwgDDAMSAyYDKAM1A5sDqQO7A8AEDAQaBCMELwQzBDUEOQQ6BEMEXwRjBGsEdQSTBJcEmwSjBLMEtwS7BMAEzwTZBOME6QTvDj8eIR6FHp4evR7zHvkgFCAaIB4gIiAmIDAgMyA6IEQgcCB5IIkgqiCsILQguSC9IQchFyEiIVUhXiGZIZ0hqiGxIbUh5SHnIgIiBiIPIhIiGiIeIisiSCJgImUjJyMrI84kDCQjJGgk6iUAJQIlDCUUJRwlsyW3Jb0lwSXMJc8nfjADMBEwFzAcp4z4////AAAAIAAwADoAoACuARYBLgE0ATkBQQFKAVABjwGSAc0B5AIYAjcCWQK5ArwCxgLYAwADBgMKAxIDJgMnAzUDmwOpA7sDwAQABA4EGwQkBDAENAQ2BDoEOwREBGIEagRyBJAElgSaBKIErgS2BLoEwATPBNgE4gToBO4OPx4gHoAenh68HvIe+CATIBggHCAgICYgMCAyIDkgRCBwIHQggCCqIKwgtCC5IL0hByEWISIhUyFbIZAhnSGpIbAhsyHkIeciAiIGIg8iESIaIh4iKyJIImAiZCMmIysjziQLJCMkYCTqJP8lAiUMJRQlHCWyJbYlvCXAJcolzyd2MAMwCDAUMByni/j///8AAAGtAAAAAAAAAAAAAAAAAAAAAAAAAAD+lADgAAAAAAAA/qD+ZgB8AHgAAAAAAAAAAAAAAAv/+P/5/+3+Pf4w/h/+GwAAAAD9SQAA/WUAAP1qAAD9bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD80P0EAAAAAAAAAAD0NAAAAADhxAAAAAAAAOI7AAAAAAAA4hLir+J94jXhuOGh4aHhh+Ia4hTiDeIK4gXg1QAA4YsAAOCoAADhTeFE4T/hPuEH4Q3g2uDS4MoAAODB4LjgrOCK4GwAAAAA347e7QAA3pPdkt0HAADeDN3/3fnd8wAAAAAAAAAAAADdMNpy0j0AAAAA0jUAAAmmAAEBCAAAASQBrAHEAo4CuAK+AsQCzgLcAuIAAAAAAzoDPANGAAAAAAAAAAADRANIA1IDWgNeAAAAAAAAAAAAAAAAAAAAAANSA2oAAAOAAAADlAAAA5QAAAOSA8gDygPMA9ID2APaA9wD3gPoA+oAAAAAA+gD6gPsA+4AAAPuA/AAAAP4A/oD/AAAA/wEAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPsAAAD7AAAA+4AAAAAAAAAAAAAAAAAAAAAAAAD7gAAAAAAAAAAAAAD5gPoAAAAAAPmAAAAAAAAA+IAAAAAAAAAAAPcA94D4APiA+QAAAAAAAAD4gP0AAAD+AAAAAAAAQI5AnACQQK/At4CpwJxAlICUwI/AscCNQJNAjQCQgI2AjcCzgLLAs0COwKmAAIADgAPABUAGQAkACUALQAwADkAPAA/AEQARQBLAFUAVwBYAFwAYwBoAHMAdAB5AHoAgAJWAkMCVwLVAlADJwCeAKoAqwCxALUAwADBAMkAzADWANoA3QDiAOMA6QDzAPUA9gD6AQEBBgERARIBFwEYAR4CVAKxAlUC0wIbAjoCvQLFAr4CxgKyAqkDJQKqAVECbALUAqsDLwKuAtECEwIUAygC3QKoAj0DMAISAVICbQIAAf0CAQI8AAgAAwAGAAwABwALAA0AEgAfABoAHAAdADUAMQAyADMAGABJAE8ATABNAFMATgLJAFIAbQBpAGsAbAB7AFYBAACkAJ8AogCoAKMApwCpAK4AuwC2ALgAuQDSAM4AzwDQALQA5wDtAOoA6wDxAOwCygDwAQsBBwEJAQoBGQD0ARsACQClAAQAoAAKAKYAEACsABMArwAUALAAEQCtABYAsgAXALMAIAC8AB4AugAhAL0AGwC3ACgAxAAmAMIAKgDGACkAxQAvAMsALgDKADgA1QA2ANMANwDUADQAzQA7ANkAPgDcAEAA3gBCAOAAQQDfAEMA4QBGAOQASADmAEcA5QBKAOgAUQDvAFAA7gBUAPIAWQD3AFsA+QBaAPgAXQD7AGAA/gBfAP0AXgD8AGYBBABlAQMAZAECAHIBEABvAQ0AagEIAHEBDwBuAQwAcAEOAHYBFAB8ARoAfQCBAR8AgwEhAIIBIAAFAKEALADIACcAwwA9ANsAYQD/AGcBBQMqAysDNgMsAyYDLQMxAy4DKQMTAxQDFwMbAxwDGQMSAxEDGgMVAxgBXAFdAYMBVwF7AXoBfQF+AX8BeAF5AYABYwFtAXQBUwFUAVUBVgFaAVsBXgFfAWABYQFiAW4BbwFxAXABcgFzAXcBdgF1AXwBgQGCAZwBnQGlAbEBsgG0AbMBtQG2AboBuQG4Ab8BxAHFAZ4BnwHGAZkBvgG9AcABwQHCAbsBvAHDAaYBpAGwAbcBhAHHAYUByAGGAckBhwHKAVgBmgFZAZsBiAHLAYkBzAGKAc0BiwHOAYwBzwGNAdABjgHRAY8B0gGRAdQBkgHVAZMB1gGUAdcAKwDHAHgBFgB1ARMAdwEVACIAvgB+ARwAfwEdAmoCawJmAmgCaQJnArMCtAI+ArUCrAH+Af8CAgLmAuAC4gLkAugC6QLnAuEC4wLlAtoCyALQAs8CugK4ArwCtwHnAwwDAwMHAwQDCAMFAwkDBgMKAwIDAAMBAlgCWQJeAl8CXAJdAmICYwJaAlsCYAJhAmQCZQCEASIAAAADAAAAAAAA/5wAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAEAgABAQESR2Vpc3RNb25vLVJlZ3VsYXIAAQEBKfpxAPpyAfpzAvgYBPsRDANV+4scC3r6iAUcMrkPHDWrEbYdAAC9ExICWQIAAQAHAA4AFQAcACIAKAAzAD0AQwBJAE8AWQBgAGcAbgB1AHsAgQCMAJMAnQCkAKsArwC6AMQAywDSANgA4wDuAPUA/AECAQgBDwEVARsBIgElATIBOQE/AUUBTAFSAVoBZQFsAXMBdwF9AYQBiwGRAZ4BpQGsAbEBtwG9AcgB0QHXAeIB6AHvAfUB/wIGAhUCJAIqAjUCQAJMAlICXQJtAnkCiAKUAqICsQK/As4C3QLrAvoDCAMWAyQDMgNBA1UDWwNiA2kDcAN2A3wDhwORA5cDnQOjA60DtAO7A8IDyQPPA9UD4APnA/ED+AP/BAMEDgQXBB4EJQQrBDIEPQRIBE8EVgRcBGIEaQRvBHUEfAR/BIwEkwSZBJ8EpgSsBLQEvwTGBMoE0ATXBN4E5ATxBPgE/wUEBQoFEAUbBSQFKgU1BTsFQgVIBVIFWQVoBXcFfQWIBZMFnwWvBb0FyAXUBeAF6gX1BfsGBgYRBh0GLQY7BkYGUgZeBmgGcwZ5BoQGjwabBqYGtAbDBtEG4AbvBvUHAwcRBx0HIwcxBz8HTQdbB2oHfQeQB5cHngelB6wHswe6B8EHyAfPB9YH3QfkB+sH8gf5CAAIBwgOCBUIHAgjCCoIMQg4CD8IRghNCFQIWwhiCGkIcAh3CH4IhQiMCJMImgihCKgIrwi2CL0IxAjLCNII2QjgCOcI7gj1CPwJAwkKCREJGAkfCSYJLQk0CTsJQglJCVAJVwleCWUJbAlzCXoJgQmICY8JlgmdCaQJqwmyCbkJwAnHCc4J1QncCeMJ6gnxCfgJ/woGCg0KFAobCiIKKQowCjcKPgpFCkwKUwpaCmEKaApvCnYKfQqECosKkgqZCqAKpwquCrUKvArDCsoK0QrYCt8K5grtCvQK+wsCCwkLEAsXCx4LJQssCzMLOQtAC0YLSAtPC1YLXQtkC2sLcgt5C4ALhwuOC5ULnAujC6oLsQu4C78LxgvNC9QL2wvkC+sL8gv5DAAMBwwODBUMHAwjDCoMMQw4DD8MRgxNDFQMWwxiDGkMcAx3DH4MhQyMDJ4MtwzYDPINBQ0gDTANRQ1bDW0Nhg2eDa8Nvw3TDeQN+w4RDjAOVQ5vDpMOow65DsAOyw7VDuMO8A77DwoPFw8oDzsPQg9JD1APVw9eD2UPbA9zD3oPgQ+ID48Plg+dD6QPqw/CD9UP7Q//EBMQIRAxEEEQVxBvEIEQmxCvEMUQ2BDzEQURHxE6EVQRZBF7EZMRqBHGEesR+BIJEh4SMxJCElcSdBKLEp8SsBLFEtkS7RMJEygTPxNVE2cTfBOTE60TzxPjE+oT8RP3E/0UBBQLFBIUGRQgFCcULhQ1FDkUQBRHFE4UVRRdFGkUchR9FIUUjRSUFJsUpBSrFLYUvRTEFMsU1RTcFOUU7BT1FPwVBRUOFRUVHBUjFSoVMRU4FT8VRhVNFVsVYhVuFXoViRWVFaMVrxW9FckV1xXlFewV8hX5FgAWBxYOFhUWHBYjFioWMRY4Fj8WRhZNFlQWWxZlFmwWcxZ8FoUWjBaXFp4WpRasFrMWvBbDFsoW0RbgFucW7hb1FwEXDRcaFygXLxc2Fz0XSRdbF2IXcxeFQWJyZXZldW5pMDFDREFtYWNyb25Bb2dvbmVrQ2FjdXRlQ2Nhcm9uQ2NpcmN1bWZsZXhDZG90YWNjZW50RGNhcm9uRGNyb2F0RWNhcm9uRWRvdGFjY2VudEVtYWNyb25Fb2dvbmVrdW5pMUVCQ3VuaTAxOEZHYnJldmVHY2Fyb25HY2lyY3VtZmxleHVuaTAxMjJHZG90YWNjZW50dW5pMUUyMHVuaTAxRTRIYmFySGNpcmN1bWZsZXhJZG90YWNjZW50SW1hY3JvbklvZ29uZWtJdGlsZGV1bmkwMDRBMDMwMUpjaXJjdW1mbGV4dW5pMDFFOHVuaTAxMzZMYWN1dGVMY2Fyb251bmkwMTNCTmFjdXRlTmNhcm9udW5pMDE0NUVuZ09odW5nYXJ1bWxhdXRPbWFjcm9uUmFjdXRlUmNhcm9udW5pMDE1NlNhY3V0ZVNjZWRpbGxhU2NpcmN1bWZsZXh1bmkwMjE4dW5pMUU5RVRiYXJUY2Fyb251bmkwMTYydW5pMDIxQVVicmV2ZVVodW5nYXJ1bWxhdXRVbWFjcm9uVW9nb25la1VyaW5nVXRpbGRlV2FjdXRlV2NpcmN1bWZsZXhXZGllcmVzaXNXZ3JhdmVZY2lyY3VtZmxleFlncmF2ZXVuaTFFRjhaYWN1dGVaZG90YWNjZW50dW5pQTc4QnVuaTAxM0IubG9jbE1BSHVuaTAxNDUubG9jbE1BSFIuc3MwNFJhY3V0ZS5zczA0UmNhcm9uLnNzMDR1bmkwMTU2LnNzMDRHLnNzMDZHYnJldmUuc3MwNkdjaXJjdW1mbGV4LnNzMDZ1bmkwMTIyLnNzMDZHZG90YWNjZW50LnNzMDZ1bmkxRTIwLnNzMDZBZGllcmVzaXMuc3MwOENkb3RhY2NlbnQuc3MwOEVkaWVyZXNpcy5zczA4RWRvdGFjY2VudC5zczA4R2RvdGFjY2VudC5zczA4SWRpZXJlc2lzLnNzMDhJZG90YWNjZW50LnNzMDhPZGllcmVzaXMuc3MwOFVkaWVyZXNpcy5zczA4V2RpZXJlc2lzLnNzMDhZZGllcmVzaXMuc3MwOFpkb3RhY2NlbnQuc3MwOEdkb3RhY2NlbnQuc3MwNi5zczA4YWJyZXZldW5pMDFDRWFtYWNyb25hb2dvbmVrY2FjdXRlY2Nhcm9uY2NpcmN1bWZsZXhjZG90YWNjZW50ZGNhcm9uZGNyb2F0ZWNhcm9uZWRvdGFjY2VudGVtYWNyb25lb2dvbmVrdW5pMUVCRHVuaTAyNTlnYnJldmVnY2Fyb25nY2lyY3VtZmxleHVuaTAxMjNnZG90YWNjZW50dW5pMUUyMXVuaTAxRTVoYmFyaGNpcmN1bWZsZXhpLmxvY2xUUktpbWFjcm9uaW9nb25la2l0aWxkZXVuaTAyMzd1bmkwMDZBMDMwMWpjaXJjdW1mbGV4dW5pMDFFOXVuaTAxMzdsYWN1dGVsY2Fyb251bmkwMTNDbmFjdXRlbmNhcm9udW5pMDE0NmVuZ29odW5nYXJ1bWxhdXRvbWFjcm9ucmFjdXRlcmNhcm9udW5pMDE1N3NhY3V0ZXNjZWRpbGxhc2NpcmN1bWZsZXh1bmkwMjE5dGJhcnRjYXJvbnVuaTAxNjN1bmkwMjFCdWJyZXZldWh1bmdhcnVtbGF1dHVtYWNyb251b2dvbmVrdXJpbmd1dGlsZGV3YWN1dGV3Y2lyY3VtZmxleHdkaWVyZXNpc3dncmF2ZXljaXJjdW1mbGV4eWdyYXZldW5pMUVGOXphY3V0ZXpkb3RhY2NlbnR1bmlBNzhDdW5pMDEzQy5sb2NsTUFIdW5pMDE0Ni5sb2NsTUFIYS5zczAxYWFjdXRlLnNzMDFhYnJldmUuc3MwMXVuaTAxQ0Uuc3MwMWFjaXJjdW1mbGV4LnNzMDFhZGllcmVzaXMuc3MwMWFncmF2ZS5zczAxYW1hY3Jvbi5zczAxYW9nb25lay5zczAxYXJpbmcuc3MwMWF0aWxkZS5zczAxYS5zczAyYWFjdXRlLnNzMDJhYnJldmUuc3MwMnVuaTAxQ0Uuc3MwMmFjaXJjdW1mbGV4LnNzMDJhZGllcmVzaXMuc3MwMmFncmF2ZS5zczAyYW1hY3Jvbi5zczAyYW9nb25lay5zczAyYXJpbmcuc3MwMmF0aWxkZS5zczAybC5zczAzbGFjdXRlLnNzMDNsY2Fyb24uc3MwM3VuaTAxM0Muc3MwM2xzbGFzaC5zczAzYWRpZXJlc2lzLnNzMDhjZG90YWNjZW50LnNzMDhlZGllcmVzaXMuc3MwOGVkb3RhY2NlbnQuc3MwOGdkb3RhY2NlbnQuc3MwOGkuc3MwOGlkaWVyZXNpcy5zczA4aS5sb2NsVFJLLnNzMDhpb2dvbmVrLnNzMDhqLnNzMDhvZGllcmVzaXMuc3MwOHVkaWVyZXNpcy5zczA4d2RpZXJlc2lzLnNzMDh5ZGllcmVzaXMuc3MwOHpkb3RhY2NlbnQuc3MwOGFkaWVyZXNpcy5zczAxLnNzMDhhZGllcmVzaXMuc3MwMi5zczA4dW5pMDQxMHVuaTA0MTF1bmkwNDEydW5pMDQxM3VuaTA0MDN1bmkwNDkwdW5pMDQ5MnVuaTA0MTR1bmkwNDE1dW5pMDQwMHVuaTA0MDF1bmkwNDE2dW5pMDQxN3VuaTA0MTh1bmkwNDE5dW5pMDQxQXVuaTA0MEN1bmkwNDFCdW5pMDQxQ3VuaTA0MUR1bmkwNDFFdW5pMDQxRnVuaTA0MjB1bmkwNDIxdW5pMDQyMnVuaTA0MjN1bmkwNDBFdW5pMDQyNHVuaTA0MjV1bmkwNDI3dW5pMDQyNnVuaTA0Mjh1bmkwNDI5dW5pMDQwRnVuaTA0MkN1bmkwNDJCdW5pMDQyQXVuaTA0MDl1bmkwNDBBdW5pMDQwNXVuaTA0MDR1bmkwNDJEdW5pMDQwNnVuaTA0MDd1bmkwNDA4dW5pMDQwQnVuaTA0MkV1bmkwNDJGdW5pMDQwMnVuaTA0NjJ1bmkwNDZBdW5pMDQ3MnVuaTA0NzR1bmkwNDk2dW5pMDQ5QXVuaTA0QTJ1bmkwNEFFdW5pMDRCMHVuaTA0QjJ1bmkwNEI2dW5pMDRCQXVuaTA0QzB1bmkwNEQ4dW5pMDRFMnVuaTA0RTh1bmkwNEVFdW5pMDQzMHVuaTA0MzF1bmkwNDMydW5pMDQzM3VuaTA0NTN1bmkwNDkxdW5pMDQ5M3VuaTA0MzR1bmkwNDM1dW5pMDQ1MHVuaTA0NTF1bmkwNDM2dW5pMDQzN3VuaTA0Mzh1bmkwNDM5dW5pMDQ1RHVuaTA0M0F1bmkwNDVDdW5pMDQzQnVuaTA0M0N1bmkwNDNEdW5pMDQzRXVuaTA0M0Z1bmkwNDQwdW5pMDQ0MXVuaTA0NDJ1bmkwNDQzdW5pMDQ1RXVuaTA0NDR1bmkwNDQ1dW5pMDQ0N3VuaTA0NDZ1bmkwNDQ4dW5pMDQ0OXVuaTA0NUZ1bmkwNDRDdW5pMDQ0QnVuaTA0NEF1bmkwNDU5dW5pMDQ1QXVuaTA0NTV1bmkwNDU0dW5pMDQ0RHVuaTA0NTZ1bmkwNDU3dW5pMDQ1OHVuaTA0NUJ1bmkwNDRFdW5pMDQ0RnVuaTA0NTJ1bmkwNDYzdW5pMDQ2QnVuaTA0NzN1bmkwNDc1dW5pMDQ5N3VuaTA0OUJ1bmkwNEEzdW5pMDRBRnVuaTA0QjF1bmkwNEIzdW5pMDRCN3VuaTA0QkJ1bmkwNENGdW5pMDREOXVuaTA0RTN1bmkwNEU5dW5pMDRFRkxhbWJkYXVuaTAzQTlsYW1iZGFwaXVuaTIxMDd1bmkyNEZGdW5pMjc3NnVuaTI3Nzd1bmkyNzc4dW5pMjc3OXVuaTI3N0F1bmkyNzdCdW5pMjc3Q3VuaTI3N0R1bmkyNzdFdW5pMjRFQXVuaTI0NjB1bmkyNDYxdW5pMjQ2MnVuaTI0NjN1bmkyNDY0dW5pMjQ2NXVuaTI0NjZ1bmkyNDY3dW5pMjQ2OHplcm8uc3MwOXVuaTIxNTN1bmkyMTU0dW5pMjE1NXVuaTIwODB1bmkyMDgxdW5pMjA4MnVuaTIwODN1bmkyMDg0dW5pMjA4NXVuaTIwODZ1bmkyMDg3dW5pMjA4OHVuaTIwODl1bmkyMDcwdW5pMDBCOXVuaTAwQjJ1bmkwMEIzdW5pMjA3NHVuaTIwNzV1bmkyMDc2dW5pMjA3N3VuaTIwNzh1bmkyMDc5dW5pMDBBMGh5cGhlbl9oeXBoZW4ubGlnYWh5cGhlbl9oeXBoZW5faHlwaGVuLmxpZ2FoeXBoZW5faHlwaGVuX2h5cGhlbl9ncmVhdGVyLmxpZ2FoeXBoZW5faHlwaGVuX2dyZWF0ZXIubGlnYWh5cGhlbl9ncmVhdGVyLmxpZ2FoeXBoZW5fZ3JlYXRlcl9ncmVhdGVyLmxpZ2FoeXBoZW5fbGVzcy5saWdhaHlwaGVuX2xlc3NfbGVzcy5saWdhaHlwaGVuX2FzY2lpdGlsZGUubGlnYWJyYWNlbGVmdF9iYXIubGlnYXBlcmlvZF9wZXJpb2RfcGVyaW9kLmxpZ2FwZXJpb2RfcGVyaW9kX2VxdWFsLmxpZ2FwZXJpb2RfZXF1YWwubGlnYWNvbG9uX2VxdWFsLmxpZ2FleGNsYW1fcXVlc3Rpb24ubGlnYWV4Y2xhbV9lcXVhbC5saWdhZXhjbGFtX2VxdWFsX2VxdWFsLmxpZ2FxdWVzdGlvbl9xdWVzdGlvbi5saWdhcXVlc3Rpb25fcXVlc3Rpb25fcXVlc3Rpb24ubGlnYW51bWJlcnNpZ25fbnVtYmVyc2lnbl9udW1iZXJzaWduLmxpZ2FudW1iZXJzaWduX3VuZGVyc2NvcmUubGlnYW51bWJlcnNpZ25fdW5kZXJzY29yZV9wYXJlbmxlZnQubGlnYXNsYXNoX2VxdWFsLmxpZ2FzbGFzaF9lcXVhbF9lcXVhbC5saWdhdW5pMzAwM3BlcmlvZC5zczA4Y29sb24uc3MwOHNlbWljb2xvbi5zczA4ZWxsaXBzaXMuc3MwOGV4Y2xhbS5zczA4ZXhjbGFtZG93bi5zczA4cXVlc3Rpb24uc3MwOHF1ZXN0aW9uZG93bi5zczA4cGVyaW9kY2VudGVyZWQuc3MwOHVuaTMwMUN1bmkzMDA4dW5pMzAwOXVuaTMwMTB1bmkzMDExdW5pMzAwQ3VuaTMwMER1bmkzMDBBdW5pMzAwQnVuaTMwMTR1bmkzMDE1dW5pMzAwRXVuaTMwMEZ1bmkzMDE2dW5pMzAxN3VuaTBFM0ZiYXJfaHlwaGVuX2dyZWF0ZXIubGlnYWJhcl9icmFjZXJpZ2h0LmxpZ2FiYXJfYmFyX2Jhcl9ncmVhdGVyLmxpZ2FiYXJfYmFyX2VxdWFsLmxpZ2FiYXJfYmFyX2dyZWF0ZXIubGlnYWJhcl9lcXVhbC5saWdhYmFyX2dyZWF0ZXIubGlnYWVxdWFsX2VxdWFsLmxpZ2FlcXVhbF9lcXVhbF9lcXVhbC5saWdhZXF1YWxfZXF1YWxfZ3JlYXRlci5saWdhZXF1YWxfZ3JlYXRlci5saWdhZXF1YWxfZ3JlYXRlcl9ncmVhdGVyLmxpZ2FlcXVhbF9sZXNzX2xlc3MubGlnYWVxdWFsX3NsYXNoX2VxdWFsLmxpZ2FncmVhdGVyX2h5cGhlbi5saWdhZ3JlYXRlcl9oeXBoZW5fZ3JlYXRlci5saWdhZ3JlYXRlcl9lcXVhbC5saWdhZ3JlYXRlcl9lcXVhbF9ncmVhdGVyLmxpZ2FncmVhdGVyX2dyZWF0ZXJfaHlwaGVuLmxpZ2FncmVhdGVyX2dyZWF0ZXJfZXF1YWwubGlnYWxlc3NfaHlwaGVuLmxpZ2FsZXNzX2h5cGhlbl9oeXBoZW4ubGlnYWxlc3NfaHlwaGVuX2dyZWF0ZXIubGlnYWxlc3NfaHlwaGVuX2xlc3MubGlnYWxlc3NfZXhjbGFtX2h5cGhlbl9oeXBoZW4ubGlnYWxlc3NfZXhjbGFtX2h5cGhlbl9oeXBoZW5faHlwaGVuLmxpZ2FsZXNzX2Jhci5saWdhbGVzc19iYXJfYmFyLmxpZ2FsZXNzX2Jhcl9iYXJfYmFyLmxpZ2FsZXNzX2Jhcl9ncmVhdGVyLmxpZ2FsZXNzX2VxdWFsLmxpZ2FsZXNzX2VxdWFsX2VxdWFsLmxpZ2FsZXNzX2VxdWFsX2VxdWFsX2dyZWF0ZXIubGlnYWxlc3NfZXF1YWxfZ3JlYXRlci5saWdhbGVzc19lcXVhbF9sZXNzLmxpZ2FsZXNzX2dyZWF0ZXIubGlnYWxlc3NfbGVzc19oeXBoZW4ubGlnYWxlc3NfbGVzc19lcXVhbC5saWdhbGVzc19hc2NpaXRpbGRlLmxpZ2FsZXNzX2FzY2lpdGlsZGVfZ3JlYXRlci5saWdhbGVzc19hc2NpaXRpbGRlX2FzY2lpdGlsZGUubGlnYWxlc3Nfc2xhc2hfZ3JlYXRlci5saWdhYXNjaWl0aWxkZV9oeXBoZW4ubGlnYWFzY2lpdGlsZGVfYXQubGlnYWFzY2lpdGlsZGVfZXF1YWwubGlnYWFzY2lpdGlsZGVfZ3JlYXRlci5saWdhYXNjaWl0aWxkZV9hc2NpaXRpbGRlLmxpZ2Fhc2NpaXRpbGRlX2FzY2lpdGlsZGVfZ3JlYXRlci5saWdhcGVyY2VudF9wZXJjZW50LmxpZ2F1bmlGOEZGdW5pMjExN21pbnV0ZXNlY29uZHVuaTIxMTZ1bmkyNDIzdW5pMjQwQ3VuaTIzMjd1bmkyMzJCdW5pMjMyNnVuaTIzQ0V1bmkyNDBCRXVyb3VuaTIwQjR1bmkyMEJEdW5pMjBCOXVuaTIwQUFub3RlcXVhbGdyZWF0ZXJlcXVhbGxlc3NlcXVhbGFwcHJveGVxdWFsaW5maW5pdHlpbnRlZ3JhbHVuaTIyMDZwcm9kdWN0c3VtbWF0aW9ucmFkaWNhbHBhcnRpYWxkaWZmdW5pMDBCNWFycm93dXB1bmkyMTk3YXJyb3dyaWdodHVuaTIxOThhcnJvd2Rvd251bmkyMTk5YXJyb3dsZWZ0dW5pMjE5NmFycm93Ym90aGFycm93dXBkbnVuaTIxOUR1bmkyMUU0dW5pMjFFNXVuaTIxQTl1bmkyMUFBdW5pMjFCMHVuaTIxQjF1bmkyMUIzdW5pMjFCNGNhcnJpYWdlcmV0dXJudW5pMjFFN2Fycm93dXAuc3MwN3VuaTIxOTcuc3MwN2Fycm93cmlnaHQuc3MwN3VuaTIxOTguc3MwN2Fycm93ZG93bi5zczA3dW5pMjE5OS5zczA3YXJyb3dsZWZ0LnNzMDd1bmkyMTk2LnNzMDdhcnJvd2JvdGguc3MwN2Fycm93dXBkbi5zczA3dW5pMjVDRmNpcmNsZXVuaTI1Q0Nsb3plbmdldHJpYWd1cHVuaTI1QjZ0cmlhZ2RudW5pMjVDMHVuaTI1QjN1bmkyNUI3dW5pMjVCRHVuaTI1QzF1bmkyNTBDdW5pMjUwMHVuaTI1MTR1bmkyNTAydW5pMjUxQ3VuaTAzMDYuY3l1bmkwMzA4dW5pMDMwN2dyYXZlY29tYmFjdXRlY29tYnVuaTAzMEJ1bmkwMzBDLmFsdHVuaTAzMDJ1bmkwMzBDdW5pMDMwNnVuaTAzMEF0aWxkZWNvbWJ1bmkwMzA0dW5pMDMxMnVuaTAzMjZ1bmkwMzI2LmxvY2xNQUh1bmkwMzI3dW5pMDMyOHVuaTAzMzV1bmkwMzA4LnNzMDh1bmkwMzA3LnNzMDhkaWVyZXNpcy5zczA4ZG90YWNjZW50LnNzMDh1bmkwMkJDdW5pMDJCOXVuaTAyQzhibGFja0NpcmNsZWRibGFja0NpcmNsZWRTdHJva2UwMDEuMjAwY29weXJpZ2h0IG1pc3NpbmdHZWlzdCBNb25vIFJlZ3VsYXIA8wIAAQAEAAwAEgAZAB8AJQAqADQANwBCAEsAUQBZAF8ApADQANgA4AEeAVcBdgF7AYgBnwGmAdYB4QH3AgwCFgIdAiQCNgJlAm8CeAKAAoYCogKmArsC2gLrAvYC/wMGAxIDGQMfAyYDMAM0A0MDUQNjA28DeQOAA4kDkAOfA6YD9AP+BBwENwRMBFEEYARxBHwEhwSRBJ4EpwSyBLoEwwTKBNEE3QTlBO0E9QVNBY0FzgYRBjAGNwZJBmQGeAaUBsAGxAbrBvEHAwcWBycHNwc+B0wHWgdfB3YHegd/B4QHkAeiB7MHwwfNB9YH3wfoB/EH/QgFCA0IFQggCC8IgAiTCN4JIQl9CdYKIApsCrcK/AsECwcLTwuVC7gLwgviC/wMMAw6DHQMlQywDNMM1w0PDSENUw1eDW4Ngw2xDdoN+g4kDjMONw5VDn4Opg7ODtoPAA8lDzYPWw+AD5EPow+sD88P7xABECEQQRBgEH4QnBC6ENcQ9BELESYRQBFYEWYRfRGUEasRuhHQEdsR6BH9EgkSHhIqEj4SUhJkEnIShRKWEqESsxLFEtUS3BLsEvwTCxMQEx8TLRM7E0kTVxNlE3ETfhOLE5gTpBOwE7wTyBPUE+AT6hP1FAAUCxQWFCEULBQ3FEIUTUIdDhX3oNP7oAYOi9X4EtULeaGhf6UbDovd+LbdCxXj7TMGC7/3aL8LFdEGSfcUBS0GDrUdDvd6fxXXz66/qB8Li933ft33et0Le9/5FncLBSEG+5j7mQsB95XhAwv3wXsV90P3Avcj93j3ePsC9yP7Q/tE+wL7I/t4+3j3Avsj90Qf1QT7Fzr3BvdL90vc9wf3F/cW3fsH+0v7Szn7BvsWHwvV99QG9yg51fsU+wo9SyN1HuSEBcOZsLLZG9m6YDGMH/tOZgX7CXRYXDEaC3/VS9f4GNsL8/f08/v0BQ5Vlq10xRubn4yMkx/VaQd1gZOjH/dwB/caQd37FPsMPUcndx7khAXIm7Kt1RvXtV8xH/tGZwX7CHRXXDEaC/fAfxX3Juv3APc99z0r9wD7JvsnLPsA+z37Per7APcnH9sEKVPV9w/3D8PV7ezEQfsP+w9SQSofCzXXUe8ek9UVT2envbejpdOZH/c2qwVdBzNVT/sAHgv3qn8VCxXRBhPY0eUFE+hwHQ7lFvhM3fv293734t374vd69+7d/EQGC9zErMKoHwv3Pgb7CodJMSkb+wVK8vdL90zK8/cD379NM6If5ZEF9xpsM+n7Fhv7Oin7I/t5Hwv1Hfsm0fsX9y4fCzcHxnNKsEEb+xktIfsr+yvrIfcbHwv3UwRoc6OtqqOgrq6jdmxpc3NoHwv7iPcC+xL3Kh4L18OuyqgfC/sq1fjydwv3yX8V9wTdzuqnH5Adjx3YHQv3HvsqFdAG0rClxJ8f92v46QUvBvsr/E77NVAd91n8nAWoBnhZBXKBfIBmG04GCxXRBuX3FAUtBgvl2/cMJOHy5Qv7cMGtdtK4C6B2+FzVC8wd+wJN7/dO907J8fcC9wLJJftO+05NJ/sCHwsVyx0Or5qgpbMayla5RkdVXUxjoHGvfB4L95YW4fe2Bvdo+DgFKQb7MvvU+zL31AUpBvdq/DgFC/8AK4AA///UgAD/AISAABILe99cdveo3few3wt73/dj3/ev3wv3gNmx2QEL95j3mPuY95kFIQYLsPdcBUMGC/hOBS8GC0yPx1rYGw4BzeP3uucDQB0LFVYdC/xK/VoV2Qb3H/eTBT0GC9///7KAAP8ATYAAP9cLrKamrKxwpmpqcHBqaqZwrB8Lq/dBBfcRBmv7QQULFcgGv/eGBTgGDl6yqnW6Gw6gdvey3/eU3wsGy0tLSwUL1ftL+Fz7s0H3X/wS+2kLW3hvZFoaC+YD98F7Ffc38vcU918ft/ueN/dDB/sTjEc7+wAb+w5G9xn3Lfcuz/ca9w/dzE81oh/lkQX3Fmwo6fsWG/s6+wf7Oftj+2L3CPs49zkfCwHI5ffP5QN0HQsBseUD98J7Ffca6en3MKUfMJAFfh37d+n7I/c+HwskHS0d2xb4TN37Rfi290Xd/Ew590X8tvtFBg73XBXo+xkF6Qbo9xkFRQZFMUXlBQ75skIdDvjoB/eS/OgF9wz5WjUGCxX4TNn8TAb7vwT4TNn8TAYO+10V9wz3DPsMBgvXx7/Nu2i4XZkfC7Wrqbm5q21hHgv7cBXCtrS/wGOwUh8L4rW62R73AAYL+wwV9wz3DPsMBgv3Ldn3I9kBC8Z++wj3BfOEC6B2+QbfAQvFUc73IMoL0TEF0QYu9xkFLQYLEveE9wwk4Qv3HvwS+x4GC3vEd3b3RsEL98t7Ffcl79n3BPcKTcb7Qbwf+xqxZ6LOGs/DuePrvU01lx7lkQX3Fns36/smG/smMTj7CyHFW/coYR/3OVytZkcaRlVkKCdKxvV9HjGFBfskl/Qo9yobC/fKfxX3DOXD6eNftvs4ph8rm2ebwRq4r67Z07djU5ce45EF53tH2fsXG/sWREcvNblc9y5wH+gdJ5PfPPceGwt/1WJ2+KZ35/cUEuXf94rfO9sTvPebfxUTuj4dE3o1BxN82/imN/vQBhO8LFhSOD9nuvIe99I3++kH+xLPQPQeCwHS4fe25QPSFuH3svcUBpcG9zb7sgXqBvs9978F7KXC0u4a9xsu2/szHvtqBvdq++gV+xT3lPcUBvPFXDk5UV4jHwv/ADaAAP8AxIAAPdn3FNk991kSyRwGjBOYHAVb3h0LAb34iNsdC10dlx21q6m5uattYWRrcV0fCxXIBvcTwvcJ2e8et/uoUvddB0ErXvsG+w0aDqdmBbaVrHtrGnF5em5pc6ydfR4LZG16cXcfy5OnxMAbqaJ8b5UfxpEFyHlarFQbC/sFd05RORv7BU7y90v3TMjz9wXVxlYloh/nkQX3J20u4fsRG/s+Lfsj+3kL+/7sHRWqpKWpqnKkbGxycmxtpHGqH/dFFqqkpamqcqRsbHJybG2kcaofC98T6NMdCxbZBvmi98IF9Qf9o/fCBT0GCxKl+LgT3JEd4wb7bPlaBfsIBgsW2QaM+VoFPQb9o/vCBSEHC/eP+6MV28i41LxusVyfHwv9ChUT7DEdBvcp3sf29wA4x/spHwv7kvzoBfjoNf1a9wwHC/j6Qh0OZvtcBTIGf0UF4wZr+0EFNwZ/RQXeBguXHR8L6x2uuAv5vSUdDn/b+B7bw/cZYLYSC/gWpAb3Rirv+x77Ji77Afs8CzGSBVV5XmhGGy9SxPcGhR8LpRbjBsX3WgX3lAbF+1oFC3/b9zTV9zTbAQsV9zD3MPswBgv3kvjoBfzoBwv7G3b3MPcMAQt3AfeZ2QP3mQtCyF7bHsQEXWulsgt/21x2+GLbC6B2+GjVf3cL1u7W19fu1QtvaH5saRpZrW3DC3/bR8/4IstL18f3FJ8dC/sVdvce2/ge2393Etv/AE6AAP//sYAA3/e+4xPm1x0T6kNQaUxrHxPaiuAFE9Y9Bvd+/GIVLlLO9xYfE+b3FsXO5+fDQvsQHhPW+xBTQi8eDn/b9z/V9ynbxfcUUh37QPezJx0SweP3vt///7KAAP8ATYAAP9cTngA1HROdADgdE1yAjj8FE24A1/imNwYTngA6HROcgJzbFfsCYOvw9Lbr9wL3AbcpJChfKfsBHwvTBhNosPdZBeMGl9EFNAar90EF3gaX0QU5BhMYTx0TKGb7XAX7EQYTGE8dE2iKHROIZvtZBdMGE0iw91kF9xEGE4gLe9/3gt/3kN8B+HXmA/e4exX3NfcL9zf3ZPdu+wP3Lfs9+wUvN/sZYx/mgwXdocfG0xv01SP7KJUf/FkGjFkF+2WP9Psn9y4b3wQtUeH3LHgf9/sG+yx0SzUmGw5/2/cp1fc/2wHH5/e64wP3t/iyFfsEOUgsbx/lhAXBnbiu0BvnxFL7BpEf/BZyBvtG7Cf3Hvcm6PcB9zz3PC73AfsqHvsf+9kV97oGKX1UWDkbPVK68YMfDvsQ5cL3ER3h783fE+frFt/30QbtxcDd26tWKR770d/36Qf3BFLk+w0eE+tCTWlCbx8T24nqBRPXPgb3Kv18FcMGy+kF4ScxrQcOoHb4aNW11UH3EhLv3/eQ3xPcpPjcFdb83N/30Abtw8Hg1bBaJR770d/36Qf3Ckze+wZDT21KcB73HeoHE+zVLAcT3L83BxPsV0AHDhXlxOT3Iuxf4i8/UVU0N8FU0B8T9LKqnKafHz+Cal1bG210mqeBH1CFBRP4Tp28asIblPdUFV5zrbu8pa63tKloWoofW4praWUbDgb8uPvAFfty93IF+EPZ/EMG93H3ciwd95j7mAUT8PhAVBX3DPcM+wwGE+is5BXCBpHRlPcN2xr3ejX7egc7lfsNkUUeDnvf+NLfrB0OqR0OFejF2/cT9xRR3C4uUTr7FPsTxTvoH8YEeHqRl34f9xb3ZAWRdY5xbRotalVSHjH3KBXsrMDEnpyFf5ge+xb7YwWFoIikqBoL5QPRFuH3tPcoBt+vbkmRH5z7VQXiBnn3YITWbrFImBnIosHJ3hr3GC7b+yke+2wG92z76BX7FveW9xYG7MJbOTlUXSofC/sQ5a3V+MbVEveY70jfE+jPHVb9ohUT8MMGy+kF4ScxrQcOAbHl9+zlA0YdC/sq1fio1d7tEvf04zeBHRPw94b5RRUT6OPtBhPwMwYOSB0TgIBdHROAkIsdEyCQaB0TgJBka3FdHgugdves3fee3QHl4few5QPlFuH3rPcW9wEd+2wG92L78BX7DPee9wwG9wS/XDU1V1z7BB8OPx0BwfiEA0EdDt872xO5APebfxUTuIA+HRN4gDUHE3kA2/imN/vQBhO5ACxYUjg/Z7ryHvfSN/vpB/sSz0D0HhO2AAsV28PD3dhXx0Jvd4J3dx+Y8QX3LcT7YgZs+3YFxwbWHQ4qHd/tEuXhjePz4xP6Nx0T9uPfJR33VCklHQ4iHd7tEvdS45rfkOMT6NsW+HRcHQYT9PcC+K8lHfdUKSUdDhXZHQsB5eH3vOUD5Rb3PAb3TPcM9xL3ePd4+wz3FPtMH/s8Bvc3/QgVPvi22Ab3Htwt+0j7SDov+x4fC6B2+GjV9zx3Ae/f95DfA8cdDisdAbPf98DhA/enexX3JObr9zIf+Gw1/GwH+wRaUScpWsH3CIceN4MF+yiP5Cn3IhsOi+r4+3fn9xS8HQsqHdT3FAHl4QM3Hfda1CcdAcfh98jhA/fAexX3KuXx9zYf1B0LAbP4nAP3ABb3FgbJ+F3J/F0F9xYGz/laBTEGV/z7QfirBTMGQfyrV/j7BTEGCwGf+MQD9xEW9AbR997R+94F9Qbz+KYFLwZI/E4/+AQFMQY//ARIUB0L+xDlrd35CHcB7+Hq7/cJHfc1/jAVwwbL6QXhJzGtBw4B5d8D5Rbf9x4G8/cC90L7jAXxBvtv98X3Zfd1BfsEBvuW+7EF+GU3BwsGc20Fmx2xq5Wbmx6MHQvXgB0O+Or3GWC2Evc096wToPc0+OoV0QYTYNHlBROgcB0OO3tVY0cbKVHV9w/3D8XV7c+9Y0WbH+ORBfcKdTnN+wob+ygr+wH7PAv/ADSAAP8AyIAA//87gAD/AMSAAD3Z9xTZPfdV+1X3WRLJHAaME0YLi9X4xtUB95bfA/glFvcz1fszBmJ5nrYf+NL7mkH3RvyIBzS+WuceC8EV9oxOHfdy+3IFC+8W3/fQBu3DweDVsFolHvvR3/fpB/cKTN77BkNPbUpwHvebNwcL/wA2gAD/AMSAAD3Z9xTZPfdZEskcBowTqPhBwRUTaPsL9wsFCwHF4QP4WBb3BQb70ff34B0LA/fAfxX3Juv3APc99z0r9wD7JvsnLPsA+z37Per7APcnH9sEC7+zs7+/Y7NXV2NjV1ezY78fvQRzeZ2jo52do6OdeXNzeXlzHwv3wHsV9zzp9xn3geQdH98EC6mjo6moc6RtbnJybm2kc6gfDuMd9yA39xsdC/e5+MwV/IL7aUH4dNX7S/h8B+xYvioe+xVB9xEGtqRyYB8LFcjXt8Rf95NYBvta+5oFWfdQB/sCxBX3AvcmBfsmBw4iHdP3FAH3ud8D2xb4dFwdBgs1+4UGNTpOIEZYw+Ue94Y1+4YH+yHfMvcO39W0xqkeC/cC+yoV91gG5LjI5B/4pvvUQfeA/FwHX3RrZx77TwYL+GI1/GIH+wdWSiYmVsz3Bx74YjX8Ygf7NuUl9yoeC/cr950FKwb7JfuSBfeSN/uSB/sl95IFKwb3K/udC6+hpJCiG7OqZl5cbGljZ2yirYQfTIgFSpHDXdQbC9v7KhXf93AGWKfIbNAb9zLR9xf3JvcmRfcX+zIfC/s86PsB9yoe9x/32RX7ugbtmcK+3RvZxFwlkx8L3cG92Y8fUQZdhW13XRtdbZ+5hR9RBj2PwVndGwugdvkI3S0d95UW4fkI923d/Jw5920GDgO9FviI3fwoBvgg+LIF4fxuOfgOB/wg/LIFC43VFVNjpb21m6fbmx/3Pq0FZwclT1H7Ah4Li/cM9zDZ9/h3EvmC9wwk4RPo+mX3qBULwRX2jE4dE2j3C/sLBQsVMlTX9w33D8LV4u3FQfsP+w1RPysfC/fH9/cF+wUG+7777wX37zX9WuH37wcL91T39gUpBvsn+7P7J/ezBScG91T79Qv5BdMB9zr3oAP3OvkFIR34Dhb3ItX7IgZcdaK8H/fK92fV+2cL94Mt9xn7PPcCHQv8WxX7IPdO9yD3Ex0O90v4aPtL+GcFOwb3S/xn+0v8aAULwRX2jE4d93H7cgUL9wh3o3ldGltddT03W7LNgR4zhQUL91b3NftV9zUF+w4LFdsG+0v4aPdL+GcFOwb7S/xnBQtzwwWBf3eHfRt4gJWfm5Ccpa0fCxX3BL9cNTVXXPsEH/sM954GDgYTmPcL9wssHfeY+5gLxHJ39y/Ee3cSnMhcyPcSyFvKCzX9BvsI+QY1/Qb7CPkGNQYOk/cIIvsFmPsIUAsB9ynfA/cpFt/4XPez1fwHBgt3Er3j977f//+ygAD/AE2AAAsGE1i49xUFOAYTaF77FQULAe/h9wkdC0UHwG1VqD0b+y5F+xf7Jgtesqp1uhvCtrS/wGOwUh8L95j3mAUhBhOg+3H7cgULBvcDHQv7PC37GfuD+4Hp+xn3PAv3KOva9xz3HCva+ygfCwa3cVC1QRv7IDQg+z4LxPc3wtTEAfgJygP3wAv3Bi52+Oj3Bot3EtHhC3vf+NLfv/cZYLYSseULNxX5Vfuj/VT7owUOA+8W+Ezd+/b5CDUGC/kdFfyN+7f4jfu4BQvfXHb3qN33sN8SseUL96jZZbESyfrIE6ALBSIG+5n7mfeZ+5gLBtm1vO2VH6z3yQULmPcI+wUjkvsITRsL/wArgAAS96rIXLoLdvho1X93EuvZPd8L9ybf++839wcHDgbru2xMTVttKx8LFfe3/I33uPiNBQud+TgB95nZA/hhC/sC+fAB9wD4FAML9wrh1/cKoR8zkQv3itk992H3HNkSC/sVdvcq3/kGdxILdvhi27XVQfcSEgv7IPtDQfdD+8oHCwEAAQAAIgAAqwABhwEArAIBiQEArwEAigAAIwEBiwEAsQABjQEAJQABjwEAmgAAJgAAsgABkQAAswEBkgAAtQABkwMAJwEBlwYAKQABngEAKgAAtgIBoAAAuQABoQIAKwABpAEALAABpgEALQABqAIAjAAALgEBqwIAugABrgAAMAAAuwMBrwEAjQAAvwAAjgAAMQAAnQAAMgEBsQIANAABtAAAwAABtQMANQABuQMANgAAwQABvQAAwgIBvgQANwEBwwMAOQEAxQABxwAAxgAByAEAOwABygAAxwAByxoAQgAAyAAB5gEAyQIB6AEAzAEAkAAAQwEB6gEAzgAB7AEARQAB7gEApwAARgAAzwAB8AAA0AEB8QAA0gAB8gMARwEB9gYASQAB/QEASgAAkQAA0wIB/wAA1gACAAIASwACAwIATAACBgEATQACCAIAkgAATgECCwIA1wACDgAAUAAA2AMCDwEAkwAA3AAAlAAAUQAAogAAUgECEQIAVAACFAAA3QACFQIAlQAAVQACGAMAVgAA3gACHAAA3wICHQQAVwECIgMAWQEA4gACJgAA4wACJwEAWwACKQAA5AACKi8AiwAAjwACWokAEQkC5BQAYwAAmwAC+QEAngAAowAC+wABQAMC/CwADwAADQAAGwEAeQAAAgAAYAAAIAAAewAAcgAAdAAACwADKQAABAAAEAAAPQADKggADgAAbwAAiQAAQAADMwAACQEAXAAAXgAAPAAAPgADNA0AdQEAaQAAdwAAQQAACAAAagAAeAAAawEAAwAAaAAAZQADQjIAIQAABwAAcwAAZgAAqgAApQADdQAAmQAAoQADdgEAXQAAoAAAcAEDeAcAYQAAZwAABQADgAQAYgAAZAAADAAApgAAqAAAnwAAHgADhQAAHwAAHQADhgEAnAADiAAAXwAAlwAAPwADiQcABgAAegADkUQAgwAAggAAfAEAhgAAfgAAiAAAgQAAhAAAfwEAhQAAhwAD1gYDOQIAAQD9AP4BEAEfATcBRgFmAYEBjgGwAdQB8QIaAl8CYQJmAnACfQLKAtcC5gLrAvcC+QL7AwADDAMYAzEDMwNFA0cDYQOQA74DwAPfBAEEJARHBHkEpwTNBPgFOAU6BYEFowWlBa0FvgXABd8F5wX3BiAGPgZABngGuwbDBtAG4wbrBvgHGAcaB0gHSgdZB2UHbwdxB6AH6QfrB/IIDAgiCCkIMQhGCLsI2glRCVMJlQnjCegJ9AoBChoKHwopCjYK2wr5CxcLdAt2C54LrwvcDAQMCQwODDsMWQxyDHkMgQyaDOANGg05DWENaQ1vDakN3A3iDeQN5g3tDf4OFQ4cDjsOQA5NDloOaw5tDm8OcQ52DoIOjw7iDuwPFw81D1cPaA99D5YPuQ/0EAcQNBBKEGIQehCSEMQQ2REDERgRLRE0EWsRoxHIEegR7xIaEkYSbBKZEyITghOEE5ATnxPdFCEUNRRXFIIU5xVZFV4VaxV4FZYVmBWtFa8VzRYWFmwWbhafFrkW9xceF1YXghevF+EYPRg/GEEYYxhlGG8YdxiJGIsYjRiVGKYYzRjtGO8Y9BkBGRAZGxkrGWUZaBl0GYMZhRnCGh0aMhpUGnUadxqpGu8a+xsOGykbQhtVG2kbgRv3HBYcfhyAHMMdLh1CHWgdjh2vHbEeER50HvcfEh8vH5sfvR/yIBcgTyBuII8glCC/IPEhDiEcISMhTyGbIc8iESI1Ij0iQyJ1IqAipiKoIqoisiLDItUi3SL/IwgjGSMpIzojPCM+I0AjfiOnI+8kGCRKJIIkqyTXJUwlfiW6JeUl7CYjJjAmbCalJqwm6Sc0J2gnpiepJ7snwifdKBcoNyhJKGIoeCipKKsoxijIKPApBSkdKTApWimYKaop4SoUKokqwSrTKvcq+SsBKw8rKitLK5crnCueK6Ar3SxZLGwsjiyTLKAszyzRLNMs1SztLO8s9Cz2LTAtcS3QLdIt6i4VLiwuTi59Lp4u5S8LL2QvwS/GMBEwYjBkMGYwaDCfMP8xQzGCMbgyFjJsMpgy7jMWM0UzRzNxM6YzyDP/NAE0AzQqNF80pzS8NSw1lDWZNaQ1wTXrNj42QzZFNkc2bzbkNvU3DDcjNzk3Vjd0N6030jfeN/c3+Tf7OBI4FDglOI04jzinONU47DkROTc5VjmIOa058TpLOk06mDrbOt063zrhOuM7QTuIO948PDyaPPM9KD1lPZw90z3uPiQ+UT56Pnw+fj6APps+xT7dPv0/aD+pP+FAUkCzQOVBNEGeQc5CI0KMQrNDLEOWQ7BDzkPkRAVEFESFRJtEqkTKROBFQEVvRYpFuUXvRglGNkZmRpxG8Ec2R0lHhEfdSCJIcUjESTJJdknkSktKrkrASt1LKUtzS5lL2kv9TAxMRExXTGtMkkymTNRM5UzuTQRNEk1JTZRNlU22TeJOBU4WTitOTE5nTq1O309ET2NPik+oT89P+VA1UI9QsFDcUTlRXlGkUdRSCFIOUhlSKFI+UlhSalKeUq5TCFMSUzNTalOPU6ZTuFPNU9tT61QbVDlUY1SMVOFVNVU9VVJVZVV4VYlV1FX9ViZWfFbRVu1XClcZVz1XXFdyV4lXn1ezV8hX71gZWElYeFixWN5Y6Vj9WSFZOFlHWVhZllm+WeNZ8loZWilae1r9Wx1bgVuoW9Rb8lwSXDJcUFx/XJRcrlzsXUBdg12cXcRd+14wXmleu17VXvFfRl92X4NfkF+qX9JgCGBbYI5gp2D4YSFhWmGOYchiD2JgYtVjPmOPY8Fkj2TxZSFlemW5ZhpmV2cWZ7Rn4WiBaQ5pgWnqaidqX2pvaotqnWq1atZrCGt2a59r1mwTbFxso2zmbRRtim38bpxvGG+Ub9dwLXB3cORxHXE6cURxeHGTcZ5x5HIHcidyUXJ6cq9zS3OSc6hzznRNdIx0vnTxdR11RXWtdfV2E3bHduV3E3cmd053b3eXd7B32ngqeHp4zHjxeRJ5Wnmlecl57XoTejR6XHqXeq960HrmewV7G3s5e1Z7dXufe8d79XxCfbd95n34fg1+HH4rfkx+bn6JfqN+qX68ftB+437sfv5/EX8Wfxt/IH8zf0Z/S39ef3B/hX+gf6V/tn/Hf9h/3X/if/iAC4AegC6AMIAygDSARIBGgFaAZYB3gI+AkYCTgJWApYC1gMaAyIDYgOOA8hz6aPsqzaq4qqGquKrEqqLAoKyhqq5xpaqlq66rpKquqssS49JE00P3GfsZ91ksqmz3XPscqmz3HEHVE/+/Ffga+bQV+8L+SvfCBkH3whUg+zH2BxMQACD3EmwVExAACCxeBhMaACHqBqr3hBUgBxMOART7MfaqP+q4BhMGAEJsdWrABhMDYQXq9wgVLPsxrPcSyQeqxBUTAaEFbE1JLKrJrk2qBxMAEEDJ6BUTABAQbGgGEwA4QaoGrM4VSMlrBxMALwH7Me4G9zH3DhVsTWjJbPsxqgcT4AaBya5Oqgb3MP1dFWxtB0heBexsBhPgAQD7MaoGzbgFSaoGDg4uChKl+LgT2DIKXfxCFRPoMR0uCuf3FIMdn9NCHfsYhh0uCujJEqX4uBPcMgrF1LUdI/yLFRPsMR0uCuL3GYMdOfdctgpphh0uCuMgCqX4uBPaMgo4zxXRBhPW0eUFE+pwHVP9CxUxHS4K8u0S9zTj8+MT3jIKOd7CCvsw/PcVE+4xHS4K5/cUgx2n8Qqbhh0uCvcH0xKl+Lj8LfegE9wyChPqPuoV96DT+6AGqvzpFTEd+2bP9zd291rd9/TZi3cS+DrXE+yRHYxeCpWDCl38QhUT9DEdLgrXvd+9Evdkvd+9E98yCsXDFcsdI/ysFRPvMR0uCu8kCvciJh0T1zIKE9v3CtsmChPXJQoT23mhoX+lGxPn+zj8khUxHYvf9wrfqN33ed863BL31eET1JUW5AbL914F9zL7XveZ3/tDBhP093v3N937N/d59z7f++EHE8xU/DwV9wP36wWg++sGDo8KIgpgHQ4iCsP3FGAdZWMdIgq+9xlgHfsg+jIhCkQdod740t8SseX3c8IX98hpHaCh9wuX3uej9yUZMJAFE15+Hfts4Psg9y5+HxP+bWqnZgW2lax7axpxeXpuaXOsnX0eE15iZQUT/lkd9wcdE+iZCvsh+a42HSIKzu0BseX3FeOMCl6NHSQdth0OJB3O9xm2HS/50CEKkwqTCiodYQoOKh3U9xRhCvdS1CAdKh3P9xlhCuP3XSEKKh3QIArl4RP0Nx3i0BXRBhPs0eUFE/QnCrMdKh3f7QHl4ezjAzcd90vfJR0Ouh0qHevTEuXhkvegE/g3HRP06OsV96DT+6AGDvtmz/ci3fd+3fd63QHl4fds1wPlFvgDwB2HjAXc+/b3fvfi3fvi93r37t38RAcOKh3cJArl4XsmHRP1Nx33tNwVxLC3148fVwZZh357cht7fpKcdh8T6yUKE/UjHaEdoHb3xt33hN0B7+ED7xbh98b35N375PeE9/bd/EwGDnv3Cx337dw72xO89757FeHBtcytHxN8OwoTujkdE7w9HQ5LHcTJErHl9+3cO9sTvkIKE347ChO9OR0Tvj0djPmzFdkdDksdvvcZErHl9+3cO9sTvkIKE347ChO9OR0Tvj0d+x/6MiEKSx2/IAqx5fft3DvbE7sAQgoTewA7ChO6gDkdE7sAPR37IPmuFdEGE7cA0eUFE7sAJwr7EOWd9wsd9xfv9wbcO9sTXwBCChM/ADsKE16AOR0TXwA9HVD7WhXDBhPfAFUKSx3O7RKx5fcS4/cX3DvbE78AQgoTfwA7ChO+gDkdE78APR1fjR1LHdrTErHlr/egtNw72xO9AEIKE30AOwoTvIA5HRO9AD0dE78A+xr5ySEde9/a1cHf96/fAZ/l+ALmA/fBexX3BN7H8rUfwNVrBpCojqusGrf7njf3Qwd4inmIeh77P0H3JQZZbVluSqYKDrEKoHb31N/3Ed8390kS5uH3iuET7Pg7FuH4pc7fSAYT3Ow1BxPsKvuKBxPc7DUHE+wqSDfO/KXh99T3igf7it8V9xH3ivsRBw6gdvfQ3ffMd+MgCs/h97jhE/bKCubPFdEGE+7R5QUT9icKYR20CvdK+VAgHSQdzyAK95XhE+g4Ctr5TDYdnwokHd7tEveT4zXhE+g4ChPw90P5WxUT6OPtBhPwMwYOtAr3UvlQJx0kHerTAfeV4QM4CuD5ZyEd+2bP9yLd+LbdAfeV4a7XA9sW9/9eCt37Rfi290Xd/Ew590X8tvtFBw4kHdskCvciv8rhyr8T5jgK96z5WCYKE94lChPmIx24HSsd5/cUAbPf98DhA/enexX3JObr9zIf+Gw1/GwH+wRaUScpWsH3CIceN4MF+yiP5Cn3Ihv3LGMdKx3jIAqz3/fA4RPs96d7Ffck5uv3Mh/4bDX8bAf7BFpRJylawfcIhx43gwX7KI/kKfciG7z5rhXRBhPc0eUFE+wnCigKAcfhdwoOKAri9xkBx+F3CthiHfsQ5cJ2+Vp3Acfh7e93Cvc4fAqL3fkId/QdDovd+Qh35/cU9B2QRwqL3fgW94aLdxLv4ROw7xb4TN379vkINQYT0Pdc+4ZYHb4di935CHcB9wXhA5X3uxXyuwX76/hM3fv298EH9wvDZ9c4ZAX3fjX7pgf7H0oFDqAKzwrRFuEGE2xkHROcaAoOUwrn9xSrCvdU0yAdUwri9xmrCuViHZcKUwrvJArR4X0mHX3hE1ZA0RbhBhNmQGQdE5ZAaAoTWoD3ttsmChNVQCUKE1qAIx37Kt/idvjo9waLdxLR4fer6jXhE9r3ofsqFfIG58XD4h+Sk/laNfzoB/uS+OgF+wz9WuEGE+z46Af3kvzoBaSDBmV2d2EeJAYOpx10CmX5XiAd9wcd9+zlE+xGHfsh+VoV0QYT3NHlBRPsJwoiCs7tAbHlq+Pz46vlA0Yd+yD5aSoKdApt+V4nHXQK+wL5XkYKIgra0wGx5bD3oLLlA0Yd+xv5dSEdIgoBseX37OUDsXsV3waovAVrs716xhvuCvcIdeZhyh/H8QU5Bm9cBapjWptQG/s8LfsZ+4P7BaAytEwf91x2FWFomadwH/eM+DsFnl2UT0Ia+05NJ/sCHvtA97IV907J8fcCtK19cKYe+4z8OQV6uILG0RoOIgrLJAqx5ZkmHZnlE9lGHRPrx/lmJgoT3SUKE+sjHXvfR9/3e933ed9H3xKS4/d94zXhE7X3aHsVurKerasfE3Vm95rfBxN2+0T3e/c43fs493n3P98GE3X7lQYTbWYHrWtknlwb+xU/+yL7eh8Ttft41/si9xUeE67fBDZr9wL3RPdGq/cC4OCq+wL7RvtEbPsCNh8Orx2gdvcp3/ed3/cUdwHl4ffA5QPlFuH3KfceBvcz6N33HfcbLtr7Mx/7HvcUNQbh/HEV9533Hgf3AMFgNDJVXfsAHw4iCgGx5ffs5QP4OEUV6wZO9gXRxrD3APcqGuQdqaaPk6QeOdMV+wJN7/dO907J8fcC9wLJJftO+wN1O2JcH1bnBSsG2fscBYh/fop+Gw6FCnUKDoUK0/cUdQpl+DAgHYUKzvcZdQr7IPiwIQr7EOXCdve03feW3QHR4fcA79WqHWH83FQKIgpfHQ4iCsP3FF8dWWMdIgq+9xlfHfss+jIhCkQdXvcqT3b5I98SyOX3TcLW5RPvgPe5+3AVwra0v8BjsFIfnqAF9ySM7tn3Axr3Ck3G+0G8HvsasWeizhrPw7nj671NNZce5ZEF9xZ7N+v7Jhv7JjE4+wshxVv3KGEf9zlcrWZHGhNXgEZVZCgnSsb1fR4xhQUTT4CW+xXgL/cQeAgT74BraKdmBbaVrHtrGnF5em5pc6ydfR4TT4BiZQUT74BZHSIKvyAKyOX3z+UT7HQd+y35rhXRBhPc0eUFE+wnCvsQ5Z3f+NLfEsjl9wHv9eUTfHQdRPtaFcMGE/xVCovf96HS917fAa/h+ADkA6/4iRX8ieH4iQfctLfUHvdGBvtr+1EFNgfxjAX3BozSWDUaOk1XJh77Gjf3Ggb3Lu3l9xf3EPsA3fs0iB/3cPdWBef7twf7Dz47+xUfDtodoHb3y9X3h90tHfeVFuH3y/cx1fsx94f3bd38nDn3bfuH+zFB9zEGDqB2+QjdzvcZLR3cCir3riEKRB3FdvkI3RL3leGEwhN895UWngZfWwUT+nwdE3xiZQUT+vYdE3ytsAWa6woO+xDlwnb5CN0S95XhNfIn3hPw3Ap6/d4VE+jDBsvpBeEHE+QnMa0GDisdux0OdgplYx0rHejJAcfh98jhA0AK+bME3cG92Y8fUQZdhW13XRtdbZ+5hR9RBj2PwVndGw4rHeMgCsfh98jhE+xACvsh+a4V0QYT3NHlBRPsJworHfLtEsfhmePz45nhE/JAChP++yD5vSoKdgpt+bInHXYK+wL5skYKKx33B9MSx+Ge96Cg4RP0QAoT/Psb+ckhHftmz/cS3/kWdwHH4fXX9xLhA/fAexWPBoB9BU8KrrgF6K3A5PcRGvhiNfxiB/sHVkomJlbM9wce+GI1/GIH+zblJfcqHg4rHde9370Bx+HJvd+9yeEDQAr5ogS/s7O/v2OzV1djY1dXs2O/H70Ec3mdo6OdnaOjnXlzc3l5cx8OKx3vJArH4YcmHYfhE9lAChPqx/m6JgoT1SUKE+ojHYvrQHb5WncSo/i8E3D3iBb3BAb3cPlaBS8GE7D7TPz6+0z4+gUvBg6L6vj7d7wdDrkd93JHCovq+Pt34yAKs/icE+j3ABb3FgbJ+F3J/F0F9xYGz/laBTEGV/z7QfirBTMGQfyrV/j7BTEG9wvPNh2L6vj79Qr3ABb3FgbJ+F3J/F0F9xYGz/laBTEGV/z7QfirBTMGQfyrV/j7BTEG9wzeKgq5Hfd6gAqiCqoKqAqP+IAgHSgK4yAK95bhE+hJHSj4fDYdKAry7RL3NOOV4ZPjE+hJHRP8KfiLKgqoCpf4gCcdKArvJAr3Ir/L4cm/E9RJHRPm8fiIJgoT3CUKE+YjHSQdeR0OJB3T9xR5Hfdo+UwgHSQdzvcZeR33AvnMIQokHd7tAfeT49sd92H5VyUdDr8Kvh2XCloddx0OWh3T9xR3HWr4MCAdWh3O9xl3Hfsb+LAhCvsQ5cJ297Lf95TfAdLh6O/s5QPSFuH3svcUBpcG9zb7sgXqBvs9978F7KXC0u4a9xsu2/szHvtqBvdq++gV+xT3lPcUBvPFXDk5UV4jH1T83FQKTB0Bn+X4Al4dDkwdxMkBn+X4Al4d+bME3cG92Y8fUQZdhW13XRtdbZ+5hR9RBj2PwVndGw5MHb8gCp/l+ALmE/ZzCvsh+a4V0QYT7tHlBRP2Jwr7EOWd3/dj3/ev3xKf5fcr7/cH5hN+cwpP+1oVwwYT/lUKTB3O7QGf5fcm4/cYXh1ejR1MHdrTAZ/lw/egteYDcwr7G/nJIR0uCuuKCsz3BBPeMgps14Ad+1T8jhUT7jEdIgrC9wABseX3DPcAjAr5sQSpo6OpqHOkbW5ycm5tpHOoHw4qHdj3BBLl4YgtChPoNx0T9vcf2BWqpKWpqnKkbGxycmxtpHGqH/dFFqqkpamqcqRsbHJybG2kcaofDiod0/cAAeXh4/cAAzcd93jTKwpLHcL3ABKx5fcJ9wD3DNw72xO1AEIKE3UAOwoTtIA5HRO1AD0dE78AjPmxKwokHdeKCoHhgPcEE8g4ChP09xf5VCkKJB3S9wAS94r3ACrhE8g4ChPw93D5TysKIgrH9wQSseWmLQqn5RPSRh0T/jL5YikKKx3r9wQSx+GULQqV4RPyQAoT/jL5tikKi+r4++QK9wAW9xYGyfhdyfxdBfcWBs/5WgUxBlf8+0H4qwUzBkH8q1f4+wUxBvc/wR0oCuuKCoLhf/cEE+hJHRP0XPiEKQokHdL3AAH3ivcAA70W+Ijd/CgG+CD4sgXh/G45+A4H/CD8sgX3jvlLKwpMHcL3AAGf5fcd9wD3DV4d+bEEzR0wHRLB4/eW3xO4KR0TeDIdE7g0HQ6NCpP4sCAdMB3IyRLB4/eW3xO8KR0TfDIdE7w111HvHpPVFU9np723o6XTmR/3NqsFXQczVU/7AB65+LEoHTAdwvcZEsHj95bfE7wpHRN8Mh0TvDXXUe8ek9UVT2envbejpdOZH/c2qwVdBzNVT/sAHi35MCEKMB3DIArB4/eW3xO2KR0TdjIdE7Y0HSz4rBXRBhOu0eUFE7YnCjAd0u0SweON4/Pjc98TuSkdE3kyHRO5NB0Tti34uyoKjQqb+LAnHTAd3tMSweOS96B63xO6KR0TelWWrXTFG5ufjIyTH5AKE7o0HRO0MvjHIR37Zs/3FtVjdvhh2xLB4/eW3xPcKR0TvJRgonOyhHJsGE8KrrgFkAoT3DQdDjAdt73fvRLB4729372j3xO+gCkdE36AMh0TvoA0HRO/gLn4oEcdMB3PJArB43smHWHfE6yAKR0TbIAyHROsgDQdE7UA9fi4JgoTqoAlChO1ACMdLAoSmN/3IfEm7/c2/wBWgAAT9vg9rApZbh++c2KkURs2WVP7BHof3oQFE/rClJmzuRu6nmQmHzZ1BTV2VU4+GizIU9SJHsyNurSd1AgT9j+nvWPRG/ui2xVpiHOpuRqyprDBmB7ImgVxByZxXVGHHvfu94kVE/r7NQb2laS1vRsT9rehYSCVHw6YHfc8dxLb/wBNgAD//7KAAN/3vuMTtvfXfxX3IOL29z73PjT2+yBBUGFfcR/3kjcHE3b9WgcTetcGE7qO2wUTtlGpx2nVG4bbFStR1/cN9w/F1e3iwkH7D/sNVD8yHw6WCiMKx/cUAdFbCmSJHSMKwvcZAdFbCvsh+XohCkQdptlSdvhs2xLR4/dTwhPv98ZpHaKl9wKR2tag9wQZM5EFE1fDHfsv3CP3FXsfE+9oZXwdE09iZQUT71kdjh3R4xPo985/FfcXHQU7e1VjRxspUdX3D/cPxdXtz71jRZsf45EF9wp1Oc37Chv7KCv7Afs8+zzr+wH3KB/7Ivj2Nh0jCtLtAdHj9wJbCl35BRXj7TMGDpgd9zzyHRO896l/FRO61cetxakfE3qOOwUTfM0KE7y4Cg6YHUH3hovyHROu96l/FROt1cetxakfE22OOwUTbs0KE664ChOW95b4JFgdf9tc9xodveP3UvdUN99aCv8ATYAAE64A99z43BUTrQD3APsU9wQd+z7iIPcgHxOsgNXHrcWpHxNsgI47BRNtANf43MgGE7UA1U4HE60AvzcHE7UAVwcTtgD7AAYTrQBd/OLfHQ5/2/f22/dwdwHF4/fJ4wP3kfiiFfcMtaduoWWaXBmoZV2eVhv7Jysp+zP7M+sp9yf3Juvt9z33HnD3C0nfH/cBsXPL+x9aWbJKpTmTGXdBu4e1ga96GT9wBdP8nhUpUsv3BfcFxMvt7MRLJPsSUk4qHw4sClIdDiwKxfcUUh37SPezIB0sCsD3GVId+674MyEKLArBIArN4/e65xP2QB37r/evFdEGE+7R5QUT9icKjgosCtDtAc3j9uPu5wNAHftP974lHQ6eHSwK3NMSzeOc96CU5xP6QB0T/vup98oV96DT+6AGDvtOz3Z29yjb9z/V9ynbEs3j9yLX1+cTf/fJfxWjjAUTv3Jqf21rGlmtbcMeE3+xq5Wbmx8Tv4wduKirt5vAGZAdjx0eE3/YHQ4sCs0kCs3jhSYde+cT7QD3yX8V9wTdzuqnH5AdE+yAjx0eE+0A+zzo+wH3Kh4T7ID3H/fZFfu6Bu2Zwr7dG9nEXCWTHxP1ADn3uyYKE+sAJQoT9QAjHaIdRR311QH3fN8D93z4yBVp+zZB9zb8XN/4XPdg1ftgrQe3oae1Hvcq1fsqBidbVy0fDjkKhAoT9joKE+74ggcT7TsGE/U7HRP2NgoOOQroyRLH4/e+3zvbE/cAOgoT7wD4ggcT7oA7BhP2gDcHxnNKsEEb+xktIfsr+yvrIfcbHxP3ADYKjviDKB05CuL3GYQKE/cAOgoT7wD4ggcT7oA7BhP2gDsdE/cANgr7HfkCIQo5CuMgCsfj977fO9sT9YA6ChPtgPiCBxPtQDsGE/VAOx0T9YA2Cvse+H4V0QYT84DR5QUT9YAnCjkK3uUSx+Py7+rfO9sT94A6ChPvgPiCBxPvQDsGE/dAOx0T94A2Ctf5LeUKOQry7RLH4/Tj9N872xP3gDoKE++A+IIHE+9AOwYT90A7HRP3gDYKYfiNJR0OOQr3B9MSx+Oa96Ca3zvbE/aAOgoT7oD4ggcT7kA7BhP2QDsdE/aANgoT94D7GPiZIR37Ntvqdq/b9x3V9yPbf3eEChP7APe794kV9ygGNn1UVzwbMFPP9wH3AcHP6N3EVTKVH/spBo38dRX3JuLV9xAf92W/1VcHE/cA92cHE/aAOwYT+oA7HRP7ALwKDrcdpB2gdvho1fc8d+MgCu/f95DfE/bHHSnPFdEGE+7R5QUT9icKeAoiHQH3ud8DQQoO0R33aPikIB0iHc8gCve53xPoQQr3AfigNh20HXgK0R33cPikJx0iHerTAfe53wNBCvcH+LshHftmz/ci1fgS1d7tEvex4zvftNcT9tsW+CdeClwdBxP692H4ryUdDiId2yQK90C/0N/GvxPUQQoT5vfK+KwmChPcJQoT5iMdrR1vCrIKDm8K0/cUsgr3jfk6IB1vCs8gCvf4gR33Jvk2Nh2gdvimd/dcd78dDqB2+KZ391x34vcZvx0qYh37EOXCdvimd/dcdwHl3+rvA+UW3/ceBvP3AvdC+4wF8Qb7b/fF92X3dQX7BAb7lvuxBfhlNwf3M3wKpwoOTQrT9xSwCmz3aiAdpwr3EycVyAa/94YFOAYOqx1NCgH3zd8D95b3xBXCpAX7k/tpQfh01ftL97oH4rNszlNxBfcFB+xYvioe+xVB9xEGtqRyYB/7MQc1YwUOoHb4aMlN1RKz2T3f9xrf9xrfE66zFt/35gblqbO1t51lMR776N/35gflqbO1tZ9pLR776N/38gf3HGbDNlNiY0t6Hs9/aq9UGxO2WWZpU3kfE9aJ2QUTzj4GDqDgChPMXwoT1FcKE7SJ6gUTrD4GDpkd5/cUEuvZPd/3kN8T1l8KE9pXChO6ieoFE7Y+BvdARwqZHeL3GRLr2T3f95DfE9ZfChPaVwoTuonqBRO2PgbRYh2jHZkd7yQK69k932smHWvfE8pAXwoTzEBXChOsQInqBROygD4G96LbJgoTyUAlChOygCMd+yrV7OAKE+b3sfsqFdwG6MTD4h/38Af3BFLk+w0eE+pXChPaieoFE9Y+/Kbf99EGE+btxcDd26tWKR772Qdic3BjHjgGDiMKAcXj98jjAzMdDiMKx/cUAcXj98jjAzMdZfiqIB2OHcXj98jjE+wzHfsh+KYV0QYT3NHlBRPsJwojCtLtEsXjmePz45njE/IzHRP++yD4tSoKIwrH9xQBxeP3yOMDMx1t+KonHSMKx/cUAcXj98jjAzMd+wL4qkYKIwre0xLF4573oKDjE/QzHRP8+xv4wSEdIwoBxeP3yOMDrn8V4gautwVvsrt7wxv3Juv3APc91njJarof1egFNAZoXwWnZFubVBv7Jyz7APs9QZ1MrFwf91N+FWdslZ5zH/d096wFmW2SZV8a+w9SQSoe+y73WRX3D8PV7a+pgXijHvtz+6wFfamEsbcaDiMKzyQKxeOHJh2H4xPZMx0T6sf4siYKE9UlChPqIx0sChKV3/c34Dbh9zX/AFaAABP6+ECsClhuH71uYaZXGyZLIPs++z7LIPC/taa9qB9YqLdxxBv7kdsVWmvX9w33DavXvL6qP/sN+w1sP1gf9933iRUT9vs1Bu6Tpb25GxP6uqZaJ5IfDp0d+xV29x7b+B7b9zx3EtvaPN/3vuMT9tcdE/pDUGlMbB+J950FE/Y9Bvd+/RYVLlLO9xb3FsXO5+fDQvsQ+xBTQi8fDvsVdvce2/ge2393Er3j977f//+xgAD/AE6AABPs+Jz7KhUT3Pk8BxPaPQYT6oo2BcprUK1DG/syRfsX+yb7JtH7F/cyHxPs0Miqvqcf+3AH+yr3bhUvU9T3EPcQw9Tn58VI+xb7FlJILh8Oi+cKE6hqChPIah0TsGUKE6hyHQ6L1fgQ10HV0/cUEvd41ELfE6RqChPEah0TqGUKE7RyHfdn+KQgHYvV+BDXQdXO9xkS93jUQt8TtGoKE9RqHRO4ZQoTtHId9wH5JCEK+xDlrecKOO8T1GoKE+RqHRPYZQoT1HId9wv7tBUT0mYKkQojCsf3FAHp4feS4QP3yn8V9wzlw+njX7b7OKYfK5tnm8EauK+u2dO3Y1OXHuORBed7R9n7Fxv7FkRHLzW5XPcucB/3CHejeV0aW111PTdbss2BHjOFBSeT3zz3HhtdiR0jCsL3GQHp4feS4QP3yn8V9wzlw+njX7b7OKYfK5tnm8EauK+u2dO3Y1OXHuORBed7R9n7Fxv7FkRHLzW5XPcucB/3CHejeV0aW111PTdbss2BHjOFBSeT3zz3Hhv7KPl6IQpEHV73KlJ2+GzbEunh9zLCtOET74D3u2kdoqQF9wiO4MLnGuNftvs4ph4rm2ebwRq4r67Z07djU5ce45EF53tH2fsXG/sWREcvNblc9y5wHxNXgOgdE0+AkjHQQvcFfQgT74BoZadmBbaVrHtrGnF5em5pc6ydfR4TT4BiZQUT74BZHY4d6eH3kuET7HUd+yn49hXRBhPc0eUFE+wnCvsQ5aHb+B7bEunh3e/T4RN8dR1H+14VwwYT/FUKi9v3ltr3ddsS1+D3keFf4xP01/iKFfyK4PiKB+jAutceE/jUvl5LRlVaPo0fX4wFOge3jAUT9OiN22EvGjY9YjYeSzvLBvcY9wvP9xfrTM4zoh8T+NCiscjTGvcBNdP7EB4T9PsOLzv7IB8OIh0B93XfA/gOFvci1fsiBlx1orwf98rbCvvKByi9XPIeDovV9z/V9x3VAfd13wPN94kV9zMoBii9XPIe9yLV+yIGXHWivB/u917V+173HdsK+x37MwcOIh2j9wgS93XfE9DjHQcT8PcgNwcT0PcbHSi9XPIeE/B/+L5YHUQdsNX4EtUS93Xf2MITfs4dOa1d0n0eW1enZgW2lax7axoT/nF5em5pc6ydfR4TfmJlBRP+9h0O+xDlrdX4EtUS93XfjO8T8M4dKL1c8h4z+2oVE+hmCj4KEuXf94rfO9sTuPebfxUTtD4dE3Q1BxN4SgoTuEUKDnYdg4kdPgroyRLl3/eK3zvbE7z3m38VE7rXw67KqB8TejUHE3xKChO8RQqp+PsoHT4K4yAK5d/3it872xO295t/FRO1Ph0TdTUHE3ZKChO2RQr7A/j2FdEGE67R5QUTticKPgry7RLl33bj8+N+sR37AvkFFePtMwb3VCklHQ52Hfj6BNEGSfcUBS0GDnYdO/j6Rgo+CvcH0xLl33v3oIXfO9sTuvebfxUTuT4dE3k1BxN6SgoTukUKE7Qi+REhHftmz/cW1WJ2+KZ3EuXf91DXed872xPa95t/FRPZPh0TuTWOBxPcc20FTwoT2q64BfimN/vQByxYUjg/Z7ryHvfSN/vpB/sSz0D0Hg4+Cte9370S5d+mvd+9rt872xO9gPebfxUTvUA+HRN9QDUHE32ASgoTvYBFChO/gKn46kcdPgrvJArl32SyZCYdbN872xOsQPebfxUTrCA+HRNsIDUHE2xASgoTrEBFChO0gOX5AiYKE6pA5goTqUDfChO0gCMdi+FKdvimdxLB+IATcPeLFvUG91VyChOw+y78UPsu+FAFLwYOi+P4Tne9HQ6kCveGRwqL4/hOd+MgCp/4xBPo9xEW9AbR997R+94F9QbzcgpI/E4/+AQFMQY//ARIUB33H882HYvj+E71CvcRFvQG0ffe0fveBfUG83IKSPxOP/gEBTEGP/wESFAd9yDeKgqkCveOgAqhCrAdmwr3E/k6IB0/HeMgCsH4hBPoQR2j+TY2HT8d8u0B9zfj8+MDQR2k+UUqCpsK9xv5OicdPx3vJAr3JSYdE9xBHRPs93X5QiYKE9wlChPseaGhf6UbDiIdAd34SE4KDiId0/cUAd34SE4K90n4miAdIh3O9xkB3fhITgra+RohCiId3u0B95TjTgr3QvilJR0OvwqrHaMdLwoS2eP3nt8+2BO495h/FRO0MAoTdJE5BRN4Lx0TuC/bV/EejdUVU2OlvbWbp9ubH/c+rQVnByVPUfsCHg4vCsf3FBLZ4/ee3z7YE7z3mH8VE7owChN6kTkFE3wvHRO8NwqO+LAgHS8KyMkS2eP3nt8+2BO895h/FRO65cm4vKMfE3qROQUTfC8dE7wv21fxHo3VFVNjpb21m6fbmx/3Pq0FZwclT1H7Ah60+LEoHS8KwvcZEtnj957fPtgTvPeYfxUTujAKE3qROQUTfC8dE7w3Cij5MCEKLwrDIArZ4/ee3z7YE7b3mH8VE7UwChN1kTkFE3YvHRO2Nwon+KwV0QYTrtHlBRO2JwovCtLtEtnjiOPz44DfPtgTuID3mH8VMAoTdICROQUTeQAvHRO4gC/bV/EeE7kA3B0TtgAo+LsqCi8Kx/cUEtnj957fPtgTvPeYfxUTujAKE3qROQUTfC8dE7w3Cpb4sCcdLwre0xLZ4433oIffPtgTuveYfxUTuTAKE3mROQUTei8dE7o3ChO0LfjHIR37Zs/3FtX4JNsS2eP3ZNd53z7YE/T3mH8VE/IwCpE8BRP4cGoFTwoT9K64BffUB/coOdX7FPsKPUsjdR7khAXDmbCy2RvZumAxjB/7TmYF+wl0WFwxGi/bV/EejdUVU2OlvbWbp9ubH/c+rQVnByVPUfsCHg4vCre9370S2eO4vd+9sN8+2BO/gPeYfxUTv0AwChN/QJE5BRN/gC8dE7+ANwq0+KBHHS8KzyQK2eN2Jh1u3z7YE6yA95h/FROsQDAKE2xAkTkFE2yALx0TrIA3ChO1APD4uCYKE6qAJQoTtQAjHTQKEsHj977fWgr/AE2AAD/XE5w1HROaOB0TWY4/BRNsRAoTnDodE5kzCg6cHV74qiAdNArIyRLB4/e+31oK/wBNgAA/1xOeADUdE50AOB0TXICOPwUTbgBEChOeADodE5yAMwqE+KsoHTQKwvcZnx37J/kqIQo0CsMgCsHj975VHRObADUdE5qAOB0TWkCOPwUTawBEChObADodE5pAMwr7KPimFdEGE5cA0eUFE5sAJwo0CtLtEsHjkePz45dVHROcQDUd3MSswqgfE1ogjj8FE2qAwwofE5xA7QoeE5wgMwoTm4D7J/i1KgqcHWb4qicdNAre0xLB45b3oJ7fWgr/AE2AAD/XE50ANR0TnIA4HRNcQI4/BRNtAEQKE50AOh0TnEAzChOfAPsi+MEhHftmz/cW2112+GXLS9cSweP3hNd531oK/wBNgAA/1xNNADUdE0yAOB0TLECOQAUTzgBybAVPChNVAK64BfimNwcTTQA6HRNMQDMKDjQKt73fvRLB48G9373HVR0Tn8A1HROfoDgdE1+Qjj8FE2/ARAoTn8A6HROfkDMKhPiaRx00Cs8kCsHjfyYdhVUdE5ZANR0TliA4HRNWEI4/BRNmQEQKE5ZAOh0TlhAzChOagMD4siYKE5VAJQoTmoAjHcUdDk0K0/cUAfeW3wO6Cvsf+aIgHcUdqPhoWB37EOWt1fjG1RL3lt857xPwugr7NftqFRPoZgpNCgH3ld8D91/3xBXBpAX7VQc0vlrnHvcz1fszBmJ5nrYf93wH47NrzlNxBfeZ+5pB90b7dQc1YwUOMB3L9wQSweOILQpv3xO5KR0TeTIdE7k0HRO2YPi0KQojCsb3AAHR4/D3AJoKivj5KwosCsn3BBLN45ItConnE/lAHRP2+3v3tykKLArE9wABzePt9wDj5wNAHfsi97IrCjkK5vcAEsfj6/cA6d872xP2gDoKE+6A+IIHE+5AOwYT9kA7HRP2gDYKE/eAjviBKwqcCiId1/cEEvdN9wSH33z3BBPoQQoT9Pc1+KgpCpwK+2bP9yLV+BLV0vcAEveo9wAw37TXE/bbFvgnXgpcHQcT+veO+KMrCm8K0vcAEvfr9wAsgR0T8Pez+TkrCiMKy/cEEsXjlC0KleMT8jMdE/4y+K4pCj4K6/cEEuXfcS0KerEdUPj+KQqL4/hO5Ar3ERb0BtH33tH73gX1BvNyCkj8Tj/4BAUxBj/8BEhQHfdTwR0/Hev3BAH3Mi0KA/ce+yoV0AbSsKXEnx/3a/jpBS8G+yv8Tvs1UB33WfycBagGeFkFcoF8gGYbTgbX+T4pCiId0vcAAfeL9wBOCvdv+JkrCi8Ky/cEEtnjgy0KfN8+2BO5APeYfxUTuIDlybi8ox8TeICROQUTeQAvHRO5ADcKE7YAW/i0KQo0Csv3BBLB44wtCpNVHROcgDUdE5xAOB0TXCCOPwUTbIDDCu0KHxOcIDMKE5uAK/iuKQr4BcZVyfdsyhL3I9T3GNETuPeT+AUVurGirJsfE3hok6R7sRuVmoyMkB/HeQd8hZCcH/cMB+Fcvjc/WWBLfx7ShgWrk6CcsRuyoXVbHyN2BRO4TH5laVgaUb5nyB6UxhVsepqkpJuXqZEf4ZwFcwdca25XHg74Bcv3a8sB9yXU9zfUA/e/+AUV58rO9PJMzy8vTUckIspI5h/LBFlstM7NqbS+v6liSUltYVcfDi4KEqX4uBPYMgpd/EIVE+gxHYvd957d91jfAdvh97DlA9v5WhX9WvdsB2MK91j3+d8G+4F/HY8KoHb5Bt/ZCg6gdvkG39P3FNkK91BHCm4d7+H3tuED9075BhX4DPeDNfsv/Az9WuEGDlodAe/hA573shXc+7Lh97L3g9/7g/eU+ALf/Fj76DoGDvsVdvcq3/iy3xKX4ffI4Y3hE/iX+yoV4fcqBhP0+CD7KuH3fgYT+DP5BvvCBlf8ggUwgXJiWRtiBvdAFqComLORwLj4OBj3HfyyBg4qHWEKDrodsx0oCi0dkhboBvcx9+IF++Lh9+IH9zH74gXoBvs79/f3Mff3BS4G+yf74AX34DX74Af7J/fgBS4G9zH79wUOe9//AQuAAN//AN6AAN8SrOT33eVK5BP498B7FRP09yz3BeL3EOdUzyioHxP44aS3wNoa9wEk1/se+xEkRCd+HuWFBcSUyK/cG+TJZE0vO2xSjB9BjAU2B9WMBRP01YzjYywaOUNXIylCutWEHjKFBRP4+wmR9wY59ycbDs8K+KYW+Vr7DAcTnIgdE2yUHQ5TCujJEtHh97ThE174phb5WvsMBxOeiB0TbpQd+yT5oygdKArJHQ4oCuf3FMkd9wT4RyAdi9/4st8B+GHhA58W0gbjscXkkh+z+HMF91n9BuH5WvwABl38vQVfh3huZxtRBg6gCrEKpx1uHdHh97ThA9EW4fkG97T9BuH5WvxgBg6vHSIKYB0O2h2L3/kGdwG/+IoD9yEW0AbHsaXEnx/3dvkHBS0G+y78TPsz+EwFLAb3VfycBa0GckYFcIF7gXEbTgYOi9/5BnfoyQG/+IoD9yEW0AbHsaXEnx/3dvkHBS0G+y78TPsz+EwFLAb3VfycBa0GckYFcIF7gXEbTgb3N/lPKB0oCgGk5fch4fcj5QP3lBbh1gb3JZ3j8/cyGvcyM/P7JZ0e1jU/B/sjejMj+zIa+zLjI/cjeh77IferFfTA0+OcHvwYBzOcVtP0Gvd3+1YV+BgH5HvBQyEaIVVDMnseDqIKoHb3gt/4GHcBveH3yOED+FAW4fla0h0O9xkdx+H3tOF24RP4x/laFf1aBxP0+Ev7KuH3fgYT+Er5BjX9Bvu0+QYGDovf+QZ3AcLh9wjh9wjhA8IW+H75Wu8d9xkdruH3COH3COFx4RP8rhYT+vhk+yrh934GE/xP+QbvHfsq93433/kGdxLR4fDh8OETvPeV+yoV4QYTfPcq90/5WjX9Bvu0+QY1/Vr3TwcOi933nt33rHcB5eH3sOUD5flaFf1a92wHYwr3rAb3DH8di9/3nt/3qHcBruL3ZeXF4QOuFvcbBvcy6Nv3G/cdLt37Mh9b96g0Bvcb/QYVW/eeuwb3AMBdMjRWX/sAH/fJNxXh+Vo1Bg6L3fee3fdY3wH24few5QOp+QYV2P0G92wGYwr3WIzf+zgG969/HYvf957f91TfAfTf5eL3Fu4DkBa0BuO0xeSPH5/4cwXb/Qb3Bwb3FNTb9xv3HULd+xQfbwaK96gF+4sGcfy9BV+Jdm5nG28G+BAWePeengbZrF0yNGpfPR8Oi9/3et9b3/eodxKf4fcK4vc+7hPe93QW9xEG9zLU2/cbHxO+9x1C3fsyHmX3qDQGE977zPsK98w1/Vrh9873Cgf3CPt6FW4GE773nqgH9wCsXTIfE940al/7AB4OIgpfHQ573/eI3/eK3wGx5gP3wHsV9yHk6fc+pB8wBvsIdlJLNRsmTuL3MYIf92zf+2wG9zKUyOPwG+HES/sInx/nBvc/cTPo+yEb9wIdHw573/eI3/eK3wH4a+YD98B7Fe4K94Mt9xn7PPshMy77P3Ef5wb3CJ/Ey+Eb8Mgz+zKUH/tsN/dsBvsxgk40Jhs1Usv3CHYfMAb7PqTkLfchGw5hHZ8KuB2gdvgY3/cu3wH3DOH3quED9wwW4feFBuHIyOLXwU81HvuG4feGB/chN+T7DkROZFNxHveN9xIde99cdvfN3/eJ33t3Ep/h4+X3YuUTt/gWexX3G8b3BfeV95dQ9wX7G/sSTyf7eYUfMwYTb/fNNf1a4ffN4wcTt/t4kcYm9xMb3wRBb9r3Y/dkp9vV1qg7+2T7Y248QB8OWh0ByuX3tuED+KUW+Vr7agf7My47+xsowkTscR/7Pfu/BeoG9zb3sgWXBvcU+7IG+xT4BhUjUbjd3cW68x/3FPuUBg6L3/fE3/cu3wH3DOH3uuUD9wwW4feFBuHJyOTiw1IvLEJP+w8eNwf3RPcC5/cn9x0q6/scR1FlU3If94z3Eh2L3fee3e/fN/dIEvcG4few5RPsmvimFe78pvdsBmMK7/c43/s4BhPc6zUHE+wrKAf3xfue7B2gdvfF3/eB3y0d9Pe1FSP7tQXnBuL3jAW3mpuYpBug+8Xh98WgBqOafl+bH+P7jAXnBiL3tXPNZqpgjhn3JveBBd/8bDcH9yb7gWCJZWxzSBnG9+UV96QG+xz7cQUOe9/3Z+H3qd8BseX37OWzCvsATev3R4kfnY6yj8KCunkZ9whgo4a0jwj7HnxQQi0b+zz3/xX3HZrG1ekb9wDIKftGjh+Bil2GfI/7DbkZYJxQlGGGCA5uHZn42QP3fRbsBvc4+KoF0aCiobYbmd9dBlFZWTxzH/sc/Fb7RPjXBTAGDvsVdvcq0fkUdwH3i933Q+ED+Iz7KhXh93BWBvsU97H3K/f3BTEG+yH74gX34jn74gf7IffiBTEG9yv79/s0+/cF5Ab3K/fjBfvj3ffjB/cr++MFowYO+xV29yrR+RR3Abvh9/fhA/h9+yoV4fdwOAb7kvex4B33yPvvBboGDvsVdvcq0feK3ffMdxLA4fe44XndCkf5FDX7zPu498w1/Vrh99D3uPvQBhP6zwYOqgqgdvd53/ghdy0d8fd5Ffcv+3nh93n3S9/7Pwb3XPghwAr3XvwhBfsjBg77KvdwRdH5FHcS+ILhE7D4gvsqFeEGE3D3cEYH+zH3suEd+1j7+QXtBvcr97f3K/u3BbcGDvsVdvcq0fc83/gYdxKu4ffI4XvdCkX5FNId++YHE/rRBg6gdvgY3/eCdwHR4ffI4QP3MPlaFTX9WuH3hQbh3Mj20L5TMR77huH3hgf3ITfk+w43QWJQbR4OYR2hHVMK9wfTEtHhlPegluETXfimFvla+wwHE52IHRNtlB0TX/ur+bkhHXvf94nf94nfAbHm9+rmswolT+D3NIIf9+oG+zSCTzYlG/s/990V9zOUyOHwG/DINfszlB8Oi9/5Bnf3B9MSv/iK/BX3oBPw9yEW0AbHsaXEnx/3dvkHBS0G+y78TPsz+EwFLAb3VfycBa0GckYFcIF7gXEbTgYT6Kf5ZSEdMB0SweP3lt8TuCkdE3gyHRO4NB0Oe9v36NsSxeI05/c94bvjE9z3wHsV9x3z7Pcv9yYs8fsXHxPsPlJmSmcfkvcjz6LWswjctqi/2Ro1igVSdnRIbB4T3PsOUlg1+1Ua+wKkML5YHlS+wHXJG9sEMU3S8I0f7ozL0OUb4shGKCZMRDEfDovV9zK1YdVrq/cq1RLl3/eK5UflE63lFveNBvcK1sXnHxPNz1i6N5QeE57SlbWzxhrlPcT7Dh77cAYTrfeN/FwV+zn3Mvc5BsqzbFhdY21MHxOubvd8Ffsc9yr3HAbOtm9eXGBtSB8ORR3xHQ5FHdP3FPEd9yhHCkUdAfcp3/dd4QP3ffhcFfez93k1+y/7sfym3wYOoHb3fNX3KtUB9ynfA7T3fBX3APt83/d89wbV+wb3Kvez1fwH+3T7AAYO+yr3dEHV+BLVEp/f98bfjd8TeJ/VFRO4+3TfBxN09yr4HAcTtPsq3wcTdPd0BxN4Nfhc+8UGW/v8BUmCdG1hG/cQFpuhlqiQsLX3uhj3JfwSBg4sClIdDp4djgqgdvimdwH3lt8DlhbrBvcr95MF+5Pf95MH9yv7kwXrBvsx953VHQUOf9v/AKyAANr/AI6AANsS2+NG5vdv40XjE/L3vn8V9xnfx+vNXMA+oR8T7M2ds7O9Guc+xPsO+wQ+VjaBHuaGBbGQtKTJG8+2cGFdY25OjB9UjAU7B8KMBRPy04y6aFEaWVlsPD9ZrL6HHjOHBSmQ3033FRsObAoS6d/3id8TeGIKE7hrCg5sCujJEunf94nfE3xiChO8awr3Y9QoHWwK5/cUEunf94nfE3xiChO8awr3RYAKoHb4pncB5uED+EgW9wwG+6X3nccKDqB2+KZ35/cUAebhA/hIFvcMBvul953HCuH37CAdi9/4CNUB+FLfA6QWyPcOHfdZ/Fzf+Kb7+ukKWgYOi/I5dvimdxK03vf43xN4rxbfBpP38vcR+/IF9Ab3DvftBfvt3/im+wIHE7j7KPw/+yn4PwX7AwYOoHb3d9X3eXcB5t/3jt8D5hbf93f3jvt33/imN/t5+473eTcGDiMKAcXj98jjAzMdDkUdAeXf95DfA+UW3/hc95D8XN/4pvw4Bg6dHZYKRR0B95bgA/eWFuD4XPdT1fxnQfdTBg6wHT8d6MkBwfiEA0Ed9zn5Oygd+xV2+fB3AaLl9yXg9yPlA/eW+yoV4PdGBvcfm+np9xYa9xYt6fsfmx73Xjb7XQf7IHssLfsXGvsX6i33IHse+yX3hRXgwsXlmB77zAcxmFTF4Br3evswFffMB+R9wVE3GjdVUTJ9Hg6hCqB29zLb97h3AdDf96XfA/g+Ft/4prkKDlkK+Fx3EuXf95Dfgd8T+OX4phX8pgcT9Pgu+yrf93QGE/hB+Fw3/Fz7kPhcBg6L1fhcdwHD3/cJ4PcJ3wPDFvh7+KbUClkK+Fx3EsPf9wng9wnfZt8T/MMWE/r4Vvsq3/d0BhP8XPhc1ArqCt/f39/fE7z3lvsqFd8GE3z3Kvc8+KY3/Fz7kPhcN/ym9zwHDovW907V91d3Adzf97DjA9wW93SHHfsg91c3Bvd05R2L1vdO1fdXdwGu3/dz477fA64W9zeHHTz3VzcG9zf8WxU8907a9xMd969AFd/4pjcGDovW907V9w3VAevf97DjA5X4XBXh/Fz3dIcd+yD3V/s+BvfK5R2L1vdO1fcN1QH3pOD3KuMDkBag9w4d3vxc9yEG9wnMx/b3AErH+wkfU/dX+4npCoIG+CyCFVP3TsMGx61pT1Bpak8fDovW9zDVX9X3V3cSn9/3Mt/3K+MT3veaFvchBvcJzMf2HxO+9wBKx/sJHlL3VzcGE977dfsy93U3/Kbf93v3Mgf3IfswFVIGE773TsQHx61pTx8T3lBpak8eDpEKkh3I5QP3xH8V9wzi1PcNpR8xBkN3WGFDGzNUxvCBH/dF1ftFBvCVwsbjG9S+YEGfH+UG9w5xNNb7DRv7Jyv7APs9+z3r+wD3Jx8Okh34VeUD97x/Ffcn9Ar7J/sNNED7DnEf5QbVn7621BvjwlAmlR/7RUH3RQYmgVRQMxtDWLXTdx8xBvsNpeJC9wwbDngKtB2tHaQdf9tcdvd41fc02393Ep/fx+L3e+MTt/gCfxX3F9Tu90b3RkLu+xf7DUQ2+y+BH08GE2/3eDf8pt/3eMcHE7f7L5XSNvcNG9sEQWLS9xL3ErTS1dW1RPsS+xJhREEfDqB292HV90bUAeTl94vfA/dm93AV+xX7cAXtBvcN92EF9xL7Yd/4pvtlBvscP1IkR7ZV2W8f5sYVPV+rxMS3q9kf9xH7RgYO+yrV7PcaHerf95HfE+7qFt/3ywbtw8Df17BZJh77zgdedG9mHmJBvgbkuMTlH/fsB/cPRtn7AklNcVFtHvcS7wcT9tUnBxPuvzcHE/ZXRQcT7kHRBw6L1vdi1fdD3zf3SBL3FN839133O+MT6vcUFvd0Bvcp3sr3BvcGOMv7KR/7IPdDBhPm9wnfBhPq+wkGE9rrNwcT6iv7Cjf3Cgf3dPxbFfsg92L3IAbnv2VJSVdnLx8OoHb3btL3O9UtHez3axU4+2sF6wbI90UFrZehkqkboftu4fduoAaqoYRplx/I+0UF6wY492t5uWKiYJAZ9zH3OwXV/JdBB/cx+ztgh2FzeV0Zu/eFFffLBvsv+zkFDn/b9w3V91vbAcXj98jjyh0sU9H3CIgfjJGRjJEbq4y5hbJ5CF/tnYuvG5iMBT53WF5AG/so95kV35u/vNsb68RC+w2MH4iCgYmBG2WKf4snuWecW5FoiQgOi+NIdvhc1RKw+LMTcPd6FvUG9x/4EgW8naukuBuV1XQGP1FgPnAfE7D7BfvW+zD4TgUxBg5ZClZ2+KZ3EveW3/c43xO8+I77KhXfBhPc93ReB/sF91PVHfsx+50F6wb3K/eTBfuT3/eTB/cr+5MFmAYO6grh98DfE7j4cPsqFd8GE3j3dDoH+1n3U/eZ950F+woG+437lgX3ljX8puH3lgf3l/uWBbQGDlkK9y3V93l3Eubf947ffN8T+viC+yoV3/d0BhP8RvhcN/t5+473eTf8pt/3d/eO+3cGE/rQBg77FXb5PHcB95bfA/eWFvsq3/cqB/dg+KbeCg77KvdPQdX4gXcS95bfE3D3IGYV9woGE7D7Bd8HE3D3BfcJBxOw1SQH91L4gd4K91L8gQUjBg7vCvh53xOw+Hn7KhXfBhNw93Q/B/sg91jFCvtX+6QF7wb3J/dq9yf7agWwBg5ZCt/b97h3EtDf96XffN8T+viD+yoV3/d0BhP8RvhcuQr7lQcT+tAGDrcdYR2iHWwK9wfTEunff/eggN8TemIKE7prChN00+ohHZIdxeX3xOXKHTNVxvCBH/fEBiaBVFA0G/ss934V8JXBxuMb4sJQJpUfDj8d9wfTEsH4hPwS96AT8EEdE+ip+VEhHaB2+Q/Wi3cSpfi4E7ClFuMGE9D3TvkP9079DwXjgwoOi9/4wt8SlOUz943b940z5RPklhYT1PeN3wYT5DGMRPcP9zAa9zfe9wf3CvcK3vsH+zf7MET7DzGKHhPoN/eN3/sYBxPk2sDC9wn3Ahr3afsM9yn7P/s/+wz7Kftp+wLC+wnaVh4T1PsYBg5NCgHG+H8D+JgWrdVoBmd9oK6AH/sd+FIF7G1hsDcbU0HKBq+ad2eWH6Q6+1j8hwXjBvcl+A7W+4gFJ6qvad0bDiIdEpv3Uzff91HfE9j4uRaq1WsGX3OmuB/3yvHVBxPo/MpBBhPY9vxc3/hc91H7ygYzuFH3AB4Oe9v/ARKAANn/AOWAANsSvuNL4xPw98d7Fe7ztsi/H1XSBVJbNmVHGyVJw93fzcLxiR/BigXaB1WKBRPoSIo+recay8K05MjUZ1q1HsPQBcNaLLMzG/sdLD/7ATu1V99yHxPwKG5YRy8a+xDyNPctHg4iCgG95ffU5QP3wHsV9y7r9yD3evd6K/ci+y77Liv7Ivt6+3rr+yD3Lh/fBGZsmqZyH/d4+DMFm16UUEga+0RP+wInHvs097IV90TH9wTvsKp8b6Qe+3j8MwV7uILFzhoOi934UNVB90wS97DhRdETsMcW+HTd+z75CAYTqEUGE8g7bW0/HisGE7BB9078UPt0Bw6L3/jC3wG99ffD5QO9FviI3/weBo/BzdX3FM8I9yfZu8H3ABr3DjXf+yb7Li4y+x97HuWFBeuaxcHvG+m7WEJDZGspVx/7afsFUCj7KhoOe9/3n9/3c98SveT3vOVK5RP097p7Ffco9wDZ9xzmU88vpB8T+Nyktb7XGvcKM9X7HvseOUIhfh7lhQXKlLex5Rvju2RCOk1tQR9TN8MGE/Tn0GAtKztpNTZNreKDHzKFBfsJkd859y4bDqB29y7f+Gx3AfgY4QP4GBbh9y7h3zX4bC8G++r8cgU99/AH+4jfFfeI9+gF++gHDnvf99bd9y7fAcfl98DlA/e+exX3IfDw9yP3Ii/x+xxZVHdjaB+l92oF97/f/A4GXPwjBecGvaLEqMMb6cNNJydPTy85U7TbgR8xhQX7CpXlOvceGw573/fc3fc43xK95THp99DlE/T3wnsV9yfw6/cw9yYv6/sgOkxkV2kf9z+Zz9/3ABvZr2dTmx/lkwXvb0nP+xIb+2ZF+1T7fvtf5/sF9zQfjd8VE+wpTdHt7dPJ6+TGTSkfE/QhTE0uHg5uHfdW4wP3VhbjBveE2vdQ90f3YB7Z/HQ3+BYH+zL7Si37dPtwGg573/eh2/d13xK95VPl95DlU+UT8vfAexX3IfcB1Pce51bMN6kfE+zKpbO61xr3BDHe+xL7EjE4+wQ/s1zKcR4T8jdtVkovGvse9wFC9yEe3wQuSLXl3sHB9fXBVTgxSGEuHxPs9/EEP1mx18+7ttnZu2BHP1llPx8Oe9/3ON333N8SveX30Okx5RP09775ahX7JyYr+zD7Jucr9yDcyrK/rR/7P31HN/sAGz1nr8N7HzGDBSenzUf3Ehv3ZtH3VPd+918v9wX7NB+JNxUT+O3JRSkpQ00rMlDJ7R8T9PXKyegeDvcoxve+xgH3Kcj3SMgD98D3KKkd5vwHtQoO/wGggAD3EB0TwDEKdPdFFcj4GAYToFwGNQoTwIgK9zTE97PEAfc71PcTyAMxCvsa90RcCvcoxPccxPcCxBL3NHAKE/IxCvc4BGcdE+xdChPyPApRHfeBxAH31MgDMQqe90XQHfclxPc3wtTEAfgJygP3wXsV+0T7Avcj93j3ePcC9yP3RPdD9wL7I/t4+3j7Avsj+0Mfivc1FdvDw93YV8dCb3eCd3cfmPEF9y3E+2IGbPt2BccGr6GkkKIbs6pmXlxsaWNnbKKthB9MiAVKkcNd1BsO9yjE9zrE2cQS9zlvHRPsMQr3OASUCviAxAH3jMgDMQpW90V7HfcoxPcdwfcCfgoT8jEKivc4zgoT7EgdE/J6HRPsPB0O9yjE2cT3OsQS9zxxChP4MQqB9zilHXvV5cb3vsbk1AGa1cfI90jIydQDLh2K5RXoxdv3E/cUUdwuLlE6+xT7E8U76B/GBHh6kZd+H/cW92QFkXWOcW0aLWpVUh4x9ygV7KzAxJ6chX+YHvsW+2MFhaCIpKgaDnvV/wFmgAD/ACuAAPdV1BKa1fdRyFy690LUE/ouHXTyFcj4GAYT9lwGNQoT+ogKe9XxxPezxOfUAZrV2dT3E8jg1AMuHfsa8VwKe9XlxPccxPcCxOPUEprV0shcyPcSyFvK19QT/mAuHeUEZx0T/aBdChP+YDwKUR171fdHxPf71AGa1fd7yPcY1AMuHZ7yFcjXt8Rf95NYBvta+5oFWfdQB/sCxBX3AvcmBfsmBw571eLE9zfC1MTy1AGa1fewytjUAy4diuKyHXvV5cT3OsTZxOXUEprV128d2dQT/cAuHeUE18XB4t9VwkYfE/7AfR0T/cB5CnvV+EbE89QBmtX3M8j3YNQDLh1W8hXIBvcTwvcJ2e8et/uoUvddB0ErXvsG+w0aDnvV5cT3HcH3AsTl1BKa1dFtCtPUE/5gLh2K5RXbyLjUvG6xXJ8fE/2gSB0T/mB6HRP9oDwdDnvV5cTZxPc6xOXUEprV2nEK1tQT/0AuHYHlFeXE5Pci7F/iLz9RVTQ3wVTQHxP+wK8KE/9ATp28asIblPdUFV5zrbu8pa63tKloWoofW4praWUbDiIKAbvl99jlA/fAexX3L+z3I/d393kq9yP7L/svKvsj+3n7d+z7I/cvH98EKEz3A/dD90XK9wPu7sr7A/tF+0NM+wMoHw4oCgGY+NIDmBbfBvh++VoFNwYOi8T3s8T/ALGAAEod9yvIXLrq1PcTyBPbTApQCvcU+5OeCvsw99cVyPgYBhPXXAYT5zUKE+tzBhPbSwp7xHd290XE9wLE/wCxgABKHfcqyFy65HAKE7aQUQoTdpBUHRO2kPea+6NnChO2YF0KE7aQPApMj8da2Bv7t/fnFcj4GAYTtZBcBhO5kDUKE7qQcwYTtpBLCnvEd3b3RcTmxGXE96DEe3cSn9T3E8iicAoTtIhMChNyiFAKE7TI9577o2cKE6ywXQoTtMg8CkyPx1rYGxO1iPw99+lcCov3GVLE/wG9gABKHfcqyFy695PIE5pMClAK97P7kxXIBhNa17cHE5rEX/eTWAcTWn0KE5p/CvvQ91IVyPgYBhOWXAYTpjUKE6pzBhOaSwqL9xlSxPdExPcc7h33QMgTrTBMChOrMFAK97P7kxXIBhNtMNe3BxOtMMRf95NYBxNtMH0KE60wfwr7yPdEZwoTrNB6ChO1UIYKE7UwPAoTrTBRHXvEd3b3N+dYwtTE/wC9gABKHfcqyFy697PKE5tAUQoTa0BUHRObQPeK+6MV28PD3dhXx0Jvd4J3dx+Y8QX3LcT7YgYTq0Bs+3YFxwYTm0DWHfun9+cVyPgYBhOawFwGE5zANQoTnUBzBhObQEsKcx33AsT/ALOAAEod9yrIXLrZbQoTtpBRChNAgLcKExBgrh0TNmA8Hfus5hXI+BgGEwUAXAYTCQA1ChMKAHMGEwYASwpzHdXEdsT3E8LUxBL3eMqJyl/K9wrKX8oTtxBRChNAELcKEwhgrh0TKGA8HRMXAPun1RXbw8Pd2FfHQm93gnd3H5jxBfctxPtiBmz7dgXHBq+hpJCiG7OqZl5cbGljZ2yirYQfTIgFSpHDXdQbDnMd2MRzxPLuHYZtChOzRIBMChNAgIBQChOABICFHRMIAwBIHROABABdHROABICLHRMgBIBoHROABIBka3FdHhMoAwA8HRMSSAD7pNgVZx0TAzAAegoTBBAAhgoTFEgAPAoTEkgAUR1zHfcCxPeSxBL3Hsjlyl/K9wrKX8oTvkBRChNCAFQdE4JAhR0TEYBIHROCAF0dE4JAix0TIkBoHROCQGRrcV0eEz2APB37uOUVyAb3E8L3CdnvHrf7qFL3XQdBK177BvsNGg58xve+xgH3Kcj3SMgD98B8qB2gdv8A/4AA9xAdE+D3qhbI+BgGE9BcBjUKE+CICovE97PEAfc01PcTyAP3NBb3nMT7UwaMpaeosKSnnRjIsqy7uhrNWrlFQVdaPoIex4gFupSkpLQbq6V0a25+dGZzH2t2BShKeEpNGg57xPccxPcCxBL3NHAKE/L3wXsV18e/zbtouF2ZHxPstpiisbAaxVa5RkxUYVWDHsiHBaKOpp+uG6yncWxyb29mH3JSBhPyPApRHYv3GVLEEvfUyBOg99QWyAYTYNe3BxOgxF/3k1gHE2B9ChOgfwoOe/cFHXsV28PD3dhXx0Jvd4J3dx+Y8QX3LcT7YgZs+3YFxwavoaSQohuzqmZeXGxpY2dsoq2EH0yIBUqRw13UGw57xPc6xNnEEvc5bx0T7PfBexXXxcHi31XCRh8T9H0dE+x5Cp9299/EAfeMyAP3jIp7HXvE9x3B9wJ+ChPy98B7FdvIuNS8brFcnx8T7K+aoKWzGspWuUZHVV1MY6Bxr3weE/J6HRPsPB0Oe8TZxPc6xBL3PHEKE/j3t3ulHffKxve+xgH3Kcj3SMgD98D3yqgd/wJCgABKHfeqyFy6E2D3qvfXFcj4GAYTUFwGE5A1ChOgcwYTYEsK99nE97PEAfc01PcTyAP3NPfZXAr3ycT3HMRyd/cvxBL3NMhcyPcSyFvKE7n3wffJZwoTtnoKE9qGChPZPAoTuVEd+CPE95N3AffUyAP31PfX0B33xvcFHffGsh33y8T3OsTZxBL3OW8dE+z3wffLFZQK+SHEAfeMyAP3jPfWex33y8T3HapswXR39y1+ChOcgPfA98vOChObAEgdE5yAXR2XHR8TzIBoHROcgGRrcV0eE6sAPB0O98vE2cT3OsQS9zxxChP497f3yxXlxOT3Iuxf4i8/UVU0N8FU0B8T9K8KE/hOnbxqwhuU91QVXnOtu7ylrre0qWhaih9bimtpZRsODv1X96jZAfcQ+kwD+Rb3qBX4Rtn8Rgb8mj0V+EXZ/EUGDiD3qNkB9xscBfoDHAS796gV+FrZ/FoG/sg9FfhZ2fxZBviuPRX4Wdn8WQYO+IH3qNkByRwI5APJ96gVHAhSBvtx+3JSCvdy+3IFHPesBg4gvgr3cvtyBRz6BD0cBfoGDv1X96jZAcn6yAP5l8Yd/jg9+jYGDiC+CveY+5kFHPneZBUcBSAG+3L7clIK93P7cgUc+t4GDv1X9wwd+pvCFfYGE2D7mfeZ9wAd/YA9+YAGDiD3qNllsRLJHAaME6AcBl/CFfYG+5n3mfeY95gsHQUc+uNkFfr+Bvdy+3EF9QYTYPuZ95n3mPeYBSIGE6D7cvtyBf7+Bg79V00d+iLeA/dh94AV998G84T3CMnGfvsI9wUb9wCq9wbbHzgGRHZeaB5pClAb+98GDv1XMdn3y973ytkB97ra+FjdA/htMRX3btn7TQYqimelzhrlB+ZazUKZHowH0pm+zOUa5AfPsKXriR73Tdn7bgYhQkQmHzsHKlxiII0eOAf2jbpiKho6BybURPUe9/QW3fnwOQYOIIv3DAH4H/cM99n3DPfY9wwD+B89CvhRax34UGsdDiD3Ldly9zCX2RL3lvcw94n3MBN495b3YpMd+CX7MJMdE7j4NpdlHf1X9y3Zcvcwl9kS9zb3MBNw9zb3YpMdE7D4NpdlHf1XufcMftn3I9l39wwS92v3DBOY92u5FUMK954EQwoTaPfN+0ZlHf1Xi/cM+J7fe3cS96L3DCTh93NDHRPOgPmSPQoT1YA/CvyVZh0TroClCv1Xi/drWAr3YxLJ+sgTqPhRFt0GE2i79x0F+MfZ/KwGuPcUBfh/2fxk8x38pT34igZf+xQF/F49+EMGDiCL9y892dzZ3NoSyRwGjBO4+Y8W3QYTeKbYBfn2BhO42f3bB6fcBfm/2f2jBqfcBfmH2v1sBqbXBTgGcT8F/fY8+doGbzoF/b49+aMGbzoF/YcGE3g9+WwHDv1XiQrzQx3BQx0T90D5rhZDChP2wD8K/K1mHRPvQD8KDiCJCvcQQx3fQx3aQx0T93T3uj0KE+0APwr4qWYdE8LQPwr4pGYdE0AsPwoOIIv3n0XR90HRRfeiEvdqHAVeE4j6FhagHfgo+1kVoB3+K/tZFdMGE2jGChMYTx0TKGb7XAX7EQYTGE8dE2iKHROIZvtZBdMGE2jWCvsE0RVXHffQFlcd99AWVx0O/VfiChK1+tgTvPexFtMGlQoTfMv7LRX5gNn9gAb7RPclFVcdDiDiCq93EhwE3usTthwFjBbZBvtk93OL96z3ZPdzCD0GE3b7U/tMaftz9xD7WQj9Lz35agYTtph8mXyafQj9+RbTBhO6kgr9V/dA2fcU2QH3APqaA/cA+wIV2wbv964F+ebZ/csGufcUBfmd2f2CBvP3ugU7Bg4g90HZ9xTZAfcAHAZeA/cA+wIV2wbv968FHAWq2Rz6cga49xQFHAVh2Rz6ugbz97kFOwYOi24KPQoOlR33hPcMA/eLZAqL9wz3nm4KPQr3ngRDCg77G3b3MPcM955uCvgWFUMKkv0qSQoOi/cMAcL3DMv3DM33DAPCPQr3TGsd905rHQ6L9wz44ndxHRPg94Q9ChPQpQr7IXb44vcMcR0T4PeE+LgV+wz3DPcMBxPQa/tlFVQGhUWB+w07Gvt64fd6B9uC9w2F0R4OiQrOQx0T9PeBPQoT7D8KDvs23/ie9wwSzuXh9wwk4ezlE/T3//jIFfsM+wz3DAYT7Ho6FTUGRXxrVWgeNVNlXzca+wvjNvcW9ybl6fcYlx4xkQUrgVpXKBs6XL7Qx5mj2bsf0LanvesaDveHbgr3hxVDCg73W/dlAfdX92YD98D3WxXFurrExVy6UVFcXFFSulzFHw74msv3HHcB9xb36AP3fvgSFc31ziG/rUfxBfcLy/sLBs/xV61IIEn2V2nOJQX7C0v3CwZIJQUO9633XAH3NfeqA/ew960VzAbl91wFLgb7TftcFcwG5fdcBS8GDqB291nR90HR91x3AcH4gAP3vRbTBpIK9xYd9wD7AhXbBvfE+fAFOwYO9xYd+ID7AhX7xPnwBTsG98T98AUOhfcMAfeE9wwD98CFYAqF9wz3gfIKhVMd9/kEVh0O+xt29zD3DPd69wwS94T3DPsK9wwT8PfA9/JTHVj8jhUT6L0Gyvc+BfX7DPsMwQcOhfcMAcL3DM33DMz3DAP3B4VTHfdOFlYd900WVh0OhfcM+Oh3cR0T0Pel92EVwQaQ55bl5xr3ezX7ewcvljGQLx4T4Kb7Z2AK+yF2+Oj3DHEdE9D32/frFVUGhi+AMS8a+3vh93sH54DlhuceE+BwyAqF9wz4pN8Sy+Xg9wwk3fblE+z3lPdhFd0Gwp67va0e5smwwdAa9wkq3fsg+xApKvsVfx7lhQXilsPI3RvhxFtIih9JW3ZUXh5MVnRLQhoT9Lb7Z2AK+zbf+KT3DBKK5eH3DCjd8eUTrPeq9/sVOQZUeFtZaR4wTWZVRhr7Cew59yD3EO3s9xWXHjGRBTSAU045GzVSu86MH827oMK4HsrAosvUGhP0YMgK94XyCveFYAr3kNkB9yr3wAP3KveQFffA2fvABg73kdkB7/gkA+/3kRX4JNn8JAYO95HZAbP4nAOz95EV+JzZ/JwGDj3ZAdv4TAPbPRX4TNn8TAYO94vfkN8SkfjgE6D4OveLFc7OtM6xH1HFBVdnZG1kG2ximqpZHxNgqF1imWgbSEliSGQfxVEFwK+yqLIbqrR8bL0fE6BuubR9rhsOMfnwAfdR5AP4DTEV0wb7ePeci/fg93j3nAhDBvuP+5KL+/T3j/uSCA4x+fAB99bkA/crMRXTBveP95KL9/T7j/eSCEMG93j7nIv74Pt4+5wIDizZ983e983ZAfeX2wP4SiwVw9kG+wiIZKXQGucH5lrNQpkejAfSmb7M5RrnB9GypfcIhx7ZUwchQkQmHzgHKl5i+wuNHjgH9wuNuGIqGjgHJtRE9R4OLNn3zd73zdkB95nbA/c2LBX11NLwH94H7Li09wuJHt4H+wuJXrTsGt4H8ELSIR5TPQb3CI+ycUUaLwcxvkrSfR6KB0J9WkkwGi8HRmRx+wiOHj0HDjHZ+VTZAfc92wP4XjEV2ftl+VT3Zdn7tf3wBw4x2flU2QH389sD9yIxFfe1+fD7tT33Zf1U+2UGDvsG+jsB9z/3mwP39ssKDvsG+jsB9zr3mwP3ivsGFfdL+Gj7S/hnBTsG90v8Z/tL/GgFDkz6DAH3TfcfA/hfTBX7SPezi/fP90j3sgj7pv4MBg5M+gwB96j3HwP3IUwV96b6DPum4QoO+YDZAfc+3AP3Pvd/Fdz4lfdy2fvDBg4k2QH38dwD+EL4fBU6/JX7cj33wwYO+wb6OwHf+EID95/LCvfy/GjqHQ77Bvo7AeH4QgP34fsGFeYdNBbmHQ77Jvp4AfdE2wP4P/smFb/E+3P3XQX4dwf3cfdaV8T7jftzBfy3Bw77Jvp4Affs2wP3QfsmFfeP93YF+LcH+433c1dS93H7WgX8dwf7c/tdBQ73fbP4HbPbswH3PrPcsvOyA/c+930V9zT4Rfcj9zT7wwaz/L0V+JX3dDv7I/xFBw4ks9uz+B2zAfcTsvOy3LMD+EL4fhX7NPxF+yP7NPfDBmP4vRX8lft02/cj+EUHDkyz+byzAfdNs76yA/hWTBX7SPezi/fP90j3sgj7nf4MBvdXsxX7L/m89y8G+x/7oIv7o/cf+6EIDkyz+byzAfexsr6zA/cqTBX3nfoM+53hCtGzFfcf96GL96P7H/egCPcv/bwGDpUd94r3DAP3kWQKlR33MvcMufcMA/c5+zBJCvcLZAr4QfcMAfcw9wy59wwD+EfYCvsL9zAVWQZM+z4FIfcM9wxVBw745/cMAfcy9wy59wwD9zn4S0kK9wtkCvhB9wwB9333DAP37tgKDvjn9wwB94r3DAP3kfhLSQoO1/gkAdr4TgP309cV+z73XPc+91wFJAb7Hfs3BUEH9x37NwX3xRb7Pvdc9z73XAUkBvsd+zcFQQf3Hfs3BQ7X+CQB2vhOA/et18QK/Aj7XBXyBvcd9zcF1Qf7Hfc3BSQG9z77XAUO1/gkAfdb94QD+EvXFfs+91z3PvdcBSQG+x37NwVBB/cd+zcFDtf4JAH3NfeEA/c118QKDvladwH3P+Hh4QP37fgTFcgGoveLBdszB/sn+9sVyAaP99sFMzsGDoEK+BMVxwaZ948F1zM/Bw6K1vgS1fXVAf8BB4AA/wBQgAAD9yeKFeWKvbmV5K/31xj3UdX7SQaRvQWvj6Gfrxv3BdUhBjFZXjKBH4ZdBfsdQfcVBmf72wVnh3V4ZxsiQQYOi933gt33dd063RLl4dHW9wflT+UT3feKMBXW5gb3Jo3k1vcNGudQyimYHhPe15m+xtga9wRG0/sclB7rQCz7MP1a9zAHRd0V94LR+4IHRffUFfd20ft2BxPd1vvUFfeCB+qJvV5AGkRZYCyJHhPu99UE93QH2oSvYkoaS2djPIQeDiD3qNn4AncBp90DHAVbxh0c+jT4Ajn9Wt33nhwFygYO/Vcx2ffL3vfK2QH3ud34WNoD+WsxFfXU0vAf3AfsurT2iR7eByCJXLTsGtsH8ELSIR77bj33TQbrjbBxRxoyBzG+StJ9HooHQn1aSTAaMQdIZ3EqjB77TT0G+xoW+fA5/fAHDviBSAr3y934M93/AaOAAFYKE18cBR6CHfyJhwr8hYcKE6/6yPcIHSBsHfgX3fgr3QP4FzEV3fnwOQb4ff3wFd33h/i42fy49yP4uNn8uPfSOQYOIEgK98nd/wE/gABWChNe+VuCHfwlhwoTrvhz9wgd/VdsHffI3QP3yDEV3feH+LjZ/Lj3I/i42fy499I5Bg79V0gK/wCzgABWChNc90iCHROs2TcV+VX7o/1U+6MFDv1XbB33NfoCA/c1+AoV+gLZ/gIG+78E+gLZ/gIGDiD22dzZ3NoByRwGjAPJ+D0VHAaM2hz5dAb8IQQcBozZHPl0BtwEHAaM2Rz5dAYOIHgdHPprPRwF4lsdHPoePRwFlAYO/VfMCvrIE5j5l94d/dE9+h5bHf4ePfnQBg4gxB0cBVvDFVIK95j7mQUTMhz53vsiFRwEwQYTivsP+w/2jE4dEzL3B/sHBRz7Rj0cBQcGz0dPTwUc+vEGDiDTChwGX8IV9gb7mfeW95j3mwUhBvuY+5sFHPrj+x4VHATUBhOo9wv7DAX2BhNo+1n3WgUc+w8G9xQEHATvBhNY91r3VwUhBhNo+wv7CQUc+ywGDiCL92tYCvdjEskcBowTaMn3HRX5gQYTqFv7HQXdBhNou/cdBfnh2f3GBrj3FAX5mdn9fvMd/eM9+cgGX/sUBf2cBg79V/cMHfc9whX3cfdxBfmA2f2A1wr7mQUOIPeo2WWxErAcBsUToBwFe+cdHPsU1wr7mvaMBROg93H3cQUcBOwGDv1XcPjkAfeY+UUD95j3GRX5Rfc3BfUH/UX3NwU3B/jq+xj86vsZBfuHBPlF9zcF3Qf9Rfs2BQ4geB0c+04GE1j7DPcLBSEGE2j3WvtZBRwFG1sdHPrjBhOo+1n7WfaMBRNo9wr3CgUcBLMGDiD3qNlkshLJHAaME6D3rcEV9Yz3cvdxBfr92f79Bvty93IFIgYTYPeY+5kF/HT7mRVSCveY+5gFDiDTCvc9whX3mPeW+5j3mwUhBveY+5v7mfuWBRwGjPcMFdkc+w8HE6j7WftaBfYGE2j3C/cMBRwE1PdiFdkc+ywHE1j7C/cJBSEGE2j3WvtXBQ79V/eo2QHJ+sgD+EHBFftx93IF+jbZ/jjRCiD3qNkByRwGjAP4QcEV+3H3cgUcBfrZHPoE0Qog/wA2gAD/ASuAAD3ZPffAEskcBowTkBwFW8EV9oz3mPeYBRMw+5j3mQUhBhNQ93L7cgUc+pQGEzD3cvdyLB0FE5D3mPuY9ooFE1D7cfdyBRwFaAYOIPeo2WWxEqkcBsUToPghwRX7cvdyBRwE7Ab3cftx9ooFE2D7mfea9wAdHPsU1QoO+IHdHRwFUdkc+q+mHfrZ3R0cB6nZHPhXph39V0gK9zTZ/wLAgADZE1z6QoQd2cAVE6yCCiBICvd5Vgr/AT+AAN0TXvqHhB0cBO77whX5Wjn9Wgf+4vf3FROuggr4gUgK93pWCv8Bo4AA3fgz3RNf+oiEHRwFUvvCFflaOf1aB/jXFvlaOf1aBxz5Xff3FROvggogKAoBx9j/AtOAANn/AtSAANgD+nkW+Xv3wgX1B/1798IFNwf5Lvuj/S77owX7VjcV3wf9Lvej+S73owXfB/17+8IFIQf5tPvCFdkGjPlaBT0GDv1XcPjkAfeP+UUD+kD3GRXeB/zq9xn46vcYBd8H/UX7NwUhB/lF+9cV3gf9Rfc2BTkHDiDIHRwFlNkc+h4GS8vLywUcBeLZHPpryQr4gcL3WFgK91kSyRwI5BOo99bCFfYGE2j7CvcKBRwG8gYTmPsK+woF9gZOHRNo9wv7CwUc+QoGE1j3C/cLLB0FE2j1FsvLBRwHkFsdHPhwBg4geB0c+2LtHfaKBRNo+wv3CwUcBJwGHPrW9yIVy8sFHAU4Wx0c+sgGDiDIHRwEswYTqPcK+wr2igUTaPtZ91kFHPrjBkvLy8sFHAUbBhNY91r3WQUhBhNo+wz7CwUc+07JCv1XwPiUAfcl1vmM1gP47MAV+Fv3XwX1B/xb91/8W/tfBSEH1sAV+BD3PvgQ+z78EPs+BQ4g96jZAckcBowD+EHBFfuZ95n3mPeZLB33mPuYBRwFiPdxFdkc+t4H93P3ciwd95j7mPaK+3L3cgUOIMQd+EHDFfuZ95n3mPeZLB33mPuYBRMyHAWI9woV2Rz68QdPx8/PBRwFB9kc+0YGE4r3B/cHLB33mPuY9ooFEzL7D/cPBQ79V00d+mrfA/fP94QVntuF6MHJhPsIiwrLhPsI9wAb9wCr9wbbHzcGRHZeaB5OmPcI+wkjkvsITVCY9wj7BSKT+whMG2CM95j3mfcNHfWKBQ4gwveXPdmx2RL3QxwFqhOw+EfCFfYG+0v3SQWR74b3AskbE3BtHfcIycd9+wj3BfSD9wjKbR3iyRuzBpOD+5n7mAX1BveZ95j7mfeZBSIG90X7RgV7P49HV2kKT029ChsTsPsJmPsIThtIBoeM95n3mSwdBQ4gTR0cBfPfA/jEwRX7mfeZk5MFswbJhDSLCsqD+wj09wV99wjHyYT7CIsKy4T7CPcAG/cAq/cG2x83BkR2XmgeTpj3CPsJI5L7CE1QmPcI+wUik/sITU/3Dx1Xj8+bPx/3RfdG9w0dBQ4g+xV2+fB3Afd+HAU1A/kb+yoV4Qb3tfkI+Fr7Pfxb+z4FNQf4tvdfBfUH/JP3UtT3MgU0Bvua/M/8W/c++Fv3PgXhB/y2+18FIQf4lPtSBQ79V00d92PeA/ks94AV99/Z+98GUPcPHWh2uNIfOAY7qvsG9wAe9wV+9wjGyYT7CPMbDv1Xf8pNy+XZsdmZuV3C9x7UEviU2aDb9xrQ///IgAD/AECAANXTE7PQ+Wp/FbO0rr+fHxNzUJr7GvdZipX3vQj3c5Io9zH7PRv7NvsG+wf7OT1zZWUfTfAdGz0H84T3CMnHffsI9wUb6bnM9xX3Ddzh9wf3EtL7FPtMhR/7EIZ4VGgbdoKw2JEfE3swnfd6BUMGE3cwiGcFp39xnGkbQEw1+w9+HxOz0PsPfLo12xsTt9CfyhVjdMjjkx/klK3Jsxuzn00ygh8zg2tOZBsO/VeL2fcU2cnZs9kS9xHlON75m94T9vcY9+4VE/reBtDTvPAe90iy+wr3XRv3L/cC3PcHHzgGRj9aIR77SGP3CvtcGxP2+yohOvsHHxP6hPvuFfpK2f5KBvcUBPpK2f5KBg79V00d9xrfA/oJ94QV+077TvWM95n3mPuZ95kFIgb3mPuZYIoFTKMKG8GFLnjbHw79V/eA2T33Vj3ZEvdu3/jn3xO49273gBUTWN8GE7jSoLiuHsh++wj3CfOE9wjJxn77CPcFG/cAq/cG2x8TWDcGE7hEdl5oHmkKUEuS9wj7ABv7AGv7BjsfDiBNHfdV3wMcBNjBFfWM95n3mPuZ95kFIgb3RftGBXs/j0dXaQpPTaMKx337CPcF9IP3CMptHeLJG7MGk4MFDv1X2gqumh15mh0TRgC0fxXqBvhW+XYFLAYToMCuChNbAK0K+Er8WhXqBhOkDPhW+XYFLAaF/WoV27fX7Otf1zs6Xz8rKrc/3B/XBGt6rsnJnK2rqp5pTU14aGwfExgwqQqL9xD4B+QBk9n4P9oD9Bb4GgbDtLTDH/gaB8NitFMe/BoGU2JiUx/8GgdTtGLDHnj3EBX3afgH92r8BwUORdDdyk3L9765XcL3HtQSodS32vcd2P//voAA/wBBgADU1BPPoPhDbhVtzAVzYGF+ZBsiPun3S/c/1vdS9zjyz/sK+0AfE7eg+xZ0RGpzg7DYkR6d93oFE9dgQgYTz2CIZwWmgHCdaRsiWvssJii4Sc66r6y9nx8Tr2BVmKxvshvax/cJ9y33Zyn3J/sk+2gl+3X7Zvtx9wT7EPcgHxPPoL6/mKfBH/sx90EVaHa40MSi9xXIrZ5gSFt8+yJJHw5/2UnyOXb5Ft8SqeJ84fcv38HjE5v3rX8V0MmfsLMfEzuvXgXxBhNXNvIFsbql29saM5OPVIJLc2oZ+zj3ZdC2uMCcwBmt8TzmKpQIMpM1RyMaWKBSuU4eE5s3TFRnIRr7FvFF9yke2QQnS7rWzca2uKkf90H7bwVxdmB7WhsTl2D4CRVovHyyqxqKurCyu4gIt4imaV0aX2NdSm0eDqB2+Q7XAfex1tHVA/ex98YV+8bW+Q7R/Q7V+Vr7bwf7KS09+xD7EOk99ykfDvsB2/kK2xLs4zbj94XjNuMT1PfK+wEVE9jy87ztwHq2SqofE9TDoaiwvRrnWLT7LrEeKKVvnrQatLmoyNm8ZlCVHuGRBfcBfPsEyDUb+wQuVCVbqmjIcR8T6Elvbl5UGj/BY/cmaR7qc7BvYxpeW25EP1OzzIEeM4UFE9Qile5B9w0bjffTFRPkLZVqrLUatLmnyMPfdk0eE9RfW3BDHg5/0NTQ98/Q1dABj8/F0Pda0MjPA/e/fxX3QvcO9yz3bfdt+w73LPtC+0L7Dfss+237bfcN+yz3Qh/QBPsfM/cI90z3TeP3B/cf9x/k+wf7TftMMvsI+x8fktQV3NHI7ZcfRpAFTIJma1sbQ2jE7/CuxNO6r21Skx/QkAXogUPFPRshRTL7Hvse0TP1Hw7jCuu+873mwwP3wPdwFfcg9wT3Bvcg9x/7BPcF+yD7IPsE+wX7H/sg9wT7BvcgH8QEIDLk9wD25OP29uQzIPsAMjIgHyfFFb71tgbLIQXFBkT3BQWxlaGnsRrAYKtEHjAG7vsRFVvcuwavn31ycXd7Zx8O4wr3A77zvdfDA/fA93AV9yD3BPcG9yD3H/sE9wX7IPsg+wT7Bfsf+yD3BPsG9yAfxAQgMuT3APbk4/b25DMg+wAyMiAfNsUVvvW1BtOzqcC/X6xFHzAG7vsRFVvcuwauoH1ycXZ7aB8O+SLDAe7G9wTG91HGA/ga9/sVzgbI90gF+0jG9/NMBzD7pTL3pQVL+/PG90kG+3r7SRXG97vew/t0U90GDvga1Pcu1AH3KtX3LNUD98D4GhXdz8/d3UfPOTlHRzk5z0fdH9QEYWmutbWtrrW1rWhhYWloYR8O+C333gH3cvcwA/dy+C3sCvgt994B9yL30QP3IvgtFc0G5ffeBS4G7fve7Aox+fAB95fdA/eXMRXd+fA5Bg77FXb58JYd9/cV2ff3PQb98ATZ9/c9Bg5FHfdIdwH3mtkD95oW2fhc9y3V+y33SD37SPsvQfcvBg77FXb3ONb4A9X3SJYd+yoV2fc49y7W+y74A/cu1fsu90g9+0j7LkH3LvwD+y5A9y4GDovZytf3Vdf3dHcSkN/3LN+q10/3ZFDWE/6AkBbf+IgG9xH8iAX3A/laN/x/BvsN+H8F+wcGE/0A+AP9WhX3ZNn7ZAYT/oDzyhXQvs719VjNRkZYSSEhvkjQH9cEcnixxsaesKSlnmZQUHhlcR8O+1LZPfdSErHa+ALaE7Cx+1IV+KAGE3D3UjwHE7D7BPwCBxNw9wQ8Bw73ZLzqvK+86rwB2r73Xr0D9+DSFb33HfclvPsl6vcuvPtgBvuRJhW+9x33JLz7JOr3Lbz7YAYOi9D40NABmdD4RtADmRb40Pla/NAG0P0VFfjQ+Eb80Af7yPcfFebm5i/DwzDn5eVUwjExL+ZTU+cwMDAFDovQ+NDQAfif0AP3Mhb4Rvla/EYG+y77+QX3XfuwFfsR97H3EfezBffS/NAG+7P3HxXl5ucvwsMw5+XlVcIwMDDnU1PnMDAwBQ6L0PjQ0AGT0AP4Thb3Lvf1+y73+QX8Rv1aBvgX0BX70vjQ99IG9xH7swX7MPsmFcLCMebm5lPDMC8w5lVU5TEwL8JT5+cFDph291bZ19n3atkB94PKxtnX2QP3woMV91b3t/ig+3z7uFD3VAf7vvvIBfd/ZRUoB/sX9xz3F/cdBSn3XPe41/wEBw739LwB+Ca+A/ct98AVwQbw994FVgZA+5NA95MFVgb38vzDFb73req8+4Va6gYOf9tadvizdxLR49j/AEqAAP//7IAA1hO493swFdYGktoFjAb3CuHX9wqhHzORez1YY0qJGa34Gbp+rWaYVBnjkQUTdHjxTMoumpPmGEAGgzMF+xh+NyH7MRr7Hssq9GseOvefFfcAt9HYmx5q/A0FU6dry+YaDuzU95LUt3cB7tT3ktQD97/sFbWymKGrH9o9v7892gWgq5iytBq1frF1qx7a21e/OzwFoWtlmGEbYmR+dmsfPNlXV9k8BXVrfmRhGmGYZaFqHj09v1fZ2QV1rLF+tRvUBEVSxNHRxMTR0MVSRUVRUkYfDjD3NDffTHajdvlzd6B3Esvl9wTV9xXlE4eA954wFdUGEyuA1wf3F5Tj1vQa9wZRxvs1ux73hwfQe7BTlUPlkRh99wpE5PsNmwgTF4DdQToH+xJ/Pzz7ARoixFv3JWEe+5MHQ5xewn/iMYUYlvsU3y73EHkI+wT4sBXGtrbQlR77cgc0qHKkwxoTR4D3TvxfFfeBB/Rlo2hSGkxeZTeFHg573/c71dvV90ffAf8AMIAA5QOV+BkVsgaKaIxeBWRBuwb7MafjLfceG/ca6en3MKUfMJAF+wV3TlE5GzVUxvcAdR/3XQaW1QX7cgaKuIyuBfd7BpbVBft+BvcIn8TK4xvVxlYloh/nkQX3J20u4fsRG/shMij7OHEfXQYOf9/3N9Xb1dJ39xTfAbzl99LlA6H4GRX4wNVZBpeekqOgGvcOK9j7LPsGMUH7Cmwe6YIF1qvCtc0b4cdbSHGEd3l5H/wuBvej/G8V9xPt0PcCqx8pkwVMcExjQRszTrnNnJGdl5sf+DnV/MBBsgaDfId4ehr7B+869yQeDqB29w7V3933nt0B9wLh97DlA6z3DhXY+w7h9w7k1TLf9xb3AR37bPyWPgb3r/c6FfsM9573DAb3BL9cNTVXXPsEHw6gdveo3+rW699B1RKw+KAT9PflFvcNBvvD96gF1wb3IuTN9wWcH93WOgYT7IW1e69ypwj3FAYT9NX8oDf3Vgfnv2tLmR/79ED38wZMfFdrMRv7VjcGDove+LTeAZ/i0uHS4dLiA/dGFvePBufFxecf+MQ0/MkHZXRzZR77O/hsNQb7Mvy/FeL5B/c7BrCjc2Uf/C7h+CkH51HFMB77kAYOi+L3etX3j98S9wfkYt8394kT6LviFTQH+IWOBd/8OQfqtrHngeoIE+T3NdUGE/D7RQZ6wIGzqhrVx8DNxr1qU50e7pIF3nxD3vsjG/sJLTb7BGmTZZpdH5F3BSpBBhPo9wYGjWQFN2RNP14eDqB29yPZzdn37XcB95bhA/eWFuH3I/c42fs4zfc42fsSBvdC9+3ACvdE++0F+xI99zhJ+zg99zgGDvee2fdblh3OFdn3W/db2ftb91s9+1v7Wz33WwYO97PZAcn4cOgKDt/4GwH3EvgcA/cS9x8VwlT3Ifch9yH7IcLC+yH3Ifch9yBUwvsh+yH7IfchVFT3IfsgBQ7f9wze2ef3DAH3hPcM6Ar3gvutUx34CQRWHQ5sHdv4TAPb+AplHfct2fcj2T33RxLb+EwT0PdMthXYBq33AgX3ddn7XQa29yMF9zLZ+xoGE7Cq8AU+BhPQbCYF+3k992EGYPsjBfs2PfceBg7A+JQB+FnWA9TAFfhb918F9Qf8W/dfBTUH+BD7PvwQ+z4FDsD4lAHT1gP4o8AV4Qf8EPc++BD3PgXhB/xb+18FIQcOi9kByfhwA8n3SRX4cPcYBfUH/HD3GAU5B/gbJPwbIwX7mgT4cNn8cAYOi9kByfhwA/iu90kV3Af8G/P4G/IF3Qf8cPsYBSEH+HD7zRXZ/HA9Bw6v2fdt2T33ZRL3mdkT0MmvFfhw2fxwBvdtBPdb+xfZ9xf3W9n7WwYTsPcXPQcT0PsX+1sHDt7VQfdG+zz3RUHVq9VB90X7PPdGQdUS2tn3stkTmcD4G/fCFdu91fIfE5TAPQYTmcBNemJlZ3qop3Uep3Rwp1UbPFhBIx8TksDZBhOZwMqctLGsnHJxnx5to6ZrxRv7bwTbvdbyHxNJwD0GE5nATXphZWF7sqxuHqF3cZ5dGzxYQSQfEynA2QYTmcDKnLOxqZx2cZ8ebKOlaMkbDveA2T33Vj3ZEtne96neE1jZ94AV3gYTuNKguK4eyH77CPcJGxNY9wCq9wbbHzgGE7hEdl5oHkuS9wj7ABsTWPsAbPsGOx8O957ZAfgn2QP4J+oV2feN/Bs9980GDvkK24t3EvcH+AYTYPcH9+EV3wYToPD3vfD7vQXfBvsY+A0FIQYO9wfX9zPXQNcSktf4RdcTuPcr9wcVwcmvy6wfSazLacEb3MfR4R8T2OFP0TqKHlJPZ0xpHxO4yGpPslMbOE5FNTXIRd4f1wRjb6y6uqessx+zirpqpV0IXHFcamMb98AWY4pbrG+7CBPYqLq6rLOKCLGKpmpeGhO4XXBqZYoeDvsq1vla1gH3AvgPA/cw+yoV5om9upXkzfjoGI+voaGvibqJGJLWXYwwjVlcgTIZSvzoh2d1dmeMGVuNhEAFDovZ+MXSi3cSmsv4TssTuJoW+M73Ewb7efjbBfsEBvt5/NsFy1oVE9j3cfjF93H8xQUO+xV2+aLZEpz3Uj3Z91LZPfdOE9j3FfsqFdn5ovdS/aLZ+aIGE+T3ANn8yj0GE9j3BAYOi9/4st8B0fhwA9EW+HDf/A0G90n3o/tJ96MF+A3f/HA3BvdK+6P7SvujBQ77FXb5ptUBnPjLA/cK+yoV7wb3LPmmBfdq1futBvsc/VlG9+MFOgYOf9hTdvgq2xKz5PfQ6jrcE3T3nn8VxYXBnr+29y/3HLn4pPxHuHc+GPdDe/X7DI37RG7LUrJDkvsmmCU1fvssfvsi6CD3Jn8IE7iK2BUxlVLNlvCS7M/K5YPYhchdmD6C+xFAOCuTCA77FXb3HtVidvimdxLq3/eK4DrcE9zq+yoV3/ddBmSctXO9GxPaycGxyaQfE7ozBxO83PimNvvQBhPcLldQNkJnvvAe99A3Bw7aCpiaHRNXwJ5/FeoG+Fb5dgUsBhO7wK4KE5vAqQqL0E9295TR3tD3Q9GadxKYz+XPg8/lvuXOE0YAj38V4wb4Dfl2BTMGE7LgYP1qFaylnKmcH22cpXqsG86z0OLjY9FIanF6bXofqXpxnGobSGNFMzSzRs4fkNAVb3uqw8SbqqeonGxSU3psbh/3IRZufKrDxJqqqKedbFJTeWxvH/v799wVExsA1bPQ4+Jj0UFDY0U0HxOy4DOzRtMeExsA0ARve6vDxJupp6icbVJTemtuHw7wCvfRFfUH+6P3o/uj+6IFIQf3fPd8Bfyo2fimBw75D9YB/wHGgAD/AEuAAAP4W/ePFdbWBfgU/BMHQEAF99wG/Az8DMJU+Av4CwUO96jZAZz41AP3ducd/EM9+EMGDov/AEuAAAH4aNYD39YV1kAF+BT4EwZA1gX73Af8DPgMVFT4C/wLBQ7wCvgfFft8+3sF+KY9/KgH+3z3fAUhB/ej+6L3o/ejBQ6L/wBLgAABxNYD+JjWFfvcjPgL+AtUwvwM/AwF99wHQEAF/BP4FAcO96jZAZL41AP4CsEV+3L3cgX4Q9n8Q9UKDvkP1gHR/wBLgAAD9yX3jxWM99z4C/wLwsL8DPgMBffcBkDWBfwT/BQGDvdH91892T33XRKN+OgTkPc590cV9AYTUPsP9xEF98YGE5D7D/sRBfQG9zf3OAUTMPs29zYFIgYTUPcO+w8F+8YGEzD3DvcPBSIG+zb7NgUOl3YS9xT3aD3ZPfdmE6D3wYIVE5D3P/c/BfUHE6D7GPsYBfiOBxOQ9xj7GAX1B/s/9z8FE8D7QftABSEHE6D3GvcZBfyOBxPA+xr3GQUhBw73Ptj3GtcBnfjFA/e2900Vz2TbssHl4lgYdfeB+2oo3FtsVmlxa50ZbpuIqoithrKEtFipPLj7BkJ5IQjeBp7Es6aseKx4iGaSZJBol2i2cggO96fZAZ/ZA/fS9y0V9w73mtn7m/cOB/tV+zUFI/tXFdn4Gj0GDven2QH4itkD9673LRXpHfubPfeaB/e++zAV+Bo9/BoHDvcYHfiM2hOw9//3ihX3D+zm9wr3Cirn+w8f+7s997sG2slRQUJNUTwf+14GE3D3FPcTBSAG+zn7Ovc7+zsF9QYTsPsT9xQFDvcYHZzaE7D3gfeKFfdcBvsT+xQF9Qb3O/c7BRNw+zn3OgUgBhOw9xT7EwX7XgY8TcXU1cnF2h/3u9n7uwb7Dyov+wr7Cuww9w8fDqB2+CrZAfiA2QP4gBbZ+Hj7+/cOBvtV+zX3Vvs1BfcO96wHDqB2+CrZAanZA/cAFvgq96z7Dgf3Vvc1+1X3NQX7Dvv7/HgHDvd22fgqdwGp2QP3APlaFT38ePf7+w4G91X3NftW9zUF+w77rAcOoHb5C9kB+BvaA/hCFvc191UF+w34mPxcPfgN/En7DQYO93bZ+Cp3AfiA2QP4gPlaFfwq+6z3Dgf7Vvs191X7NQX3Dvf7+HgHDovZ99LG95J3Afci2fc22QON+CAV9yD8IPfS+CD3Hgb7vffNBfsd+5IV9x33Jvcc+yYFVPwN+zb4DQYO9xUd+IgV+zX3Vvs1+1UF9w78d9n4dgYO+Vp3AbH4jgP4nfhfFaL3j/uOdOE1++r76sJU9+r36gUO98/ZAZz40QP4IPdVFekd/BA9+A8HDqF2AbD4jgP3uKMV9490dPeONTX76vfqVFT36vvqBQ73FR33aBX7Dvh2Pfx3+w4G9zX7VQUOoXYBxPiOA/fIoxU04ffq9+pUwvvq++o14XT7jgUO98/ZAZX40QP3YPdVFfcO+A/Z/BD3Dgf7Vfs1BQ75WncBw/iOA9r4XxXh4vfq++rCwvvq9+rh4fuOogUO98PZAZP43AP3XfdJFfcO91r7Dgf3Vfc1+1b3NQX7DvtY9w4H+1b7NQUOlXYB95nZA/fAgBX3NfdVBfsO+DD3Dgb7NfdV+zX7VgX3Dvwu+w4GDtr4wAGb+M0D98HaFfc09xD3CPc19zf7EPcI+zT7NfsQ+wj7N/s19xD7CPc1Hw7a1vgq1gGb2fgx2QP3wdoV9zT3EPcJ9zT3NvsQ9wn7NPs1+xD7Cfs2+zT3EPsJ9zUf1gT7CTHf9wr3DOXf9wn3COU3+wz7CjE3+wgfDs3G+Ch33sYBjcX4c8UD+Gr3UxW0YJqamp2WnRlaqoJ9gH5+fxn73DgVqb58k3yWf5YZY2KafJ19noAZNdkVuq6BmIOahJwZVXWUdpV4mHkZ91b7CBWUxXqNeZB8kBl2VZ+EoIWgiBn7hfdzFcSXBYeciZydGlEGdI12kHce97b7PBVQB6Ghjo+fH4DDBYh7eIp5G/u5968VxYKOnI+ckpsZVKCDeIZ2h3UZ+Bb7nxWgVZ+TnpSdlxlrvH2BfIR6hBn77fgMFbxslJmWmJeXGWO1e3x+e394GdzeFatampWak5uRGXfBdoN4gnl/Gfge++EVwXWTn5Cgj6EZUpSIeoZ5hXwZ+7P4DRWWUgWOnJ2NnRuKxnWKdol3hxn3xPuxFcUGoYmghqAeUn8Fj3qNeXoa+yf3bRWfwXeTd5F1jhmCUZyInYebhRn3FvsSFcChg6CAnoCcGVppln2TfJJ7GVfYFbS1e5p5mHmWGW1ZmoKZgZd/GQ6LzviSzgHa+E0D94wW8gb3PffW+z331gUkBvs9+9YF4Rb3G/eT9xr7k/sa+5MFDqB2AZP42wOTFvjbBvu4+I0FDs342wFV+I0DVfkdFfzbB/iN97gFDvladwGT+NsDk/la9xQdDs342wH3KfiNA/ki9wodDu3VAZP42wOT7RX42wb7uPiNBfs4/EMV9zj3sfc5+7EFDs342wG31QO3+R0V/NsH+I33uAX8Q/c4Ffex+zj7sfs5BQ74ttUBk/jbA5P5APcUHfxcQRX33Qb7OfuxBQ7N+NsB+HbVA/jA9wodQfhcFfvdB/ux9zkFDtAK++sGDvfT4QFj+RQDY/fTFfkU4f0UBg730+EtHfeV99MV9+vh+5X48jUGDvuLHATrLR33lfuLFeEcBOs1Bg7QCvuV+PM1Bg4c+I3478kB9zT3rAP3wPjvKB0c+I34+e0B9zTj8+MD9zT4+SoKHPiN0goc+I3BChz4jXsKHPiN+O73FAH3KvfAA/cq+O5GChz4jfho94YB94j3BQP3iPhoWB0c+I3CHRz4jfjp9xkB9zT3rAP3NPluIQoc+I3478kB9zT3rAP3wPjvKB0c+I343r3fvQH3ZL3fvQP3wPjeRx0c+I349iQK9yImHROw9/z49iYKE3AlChOwIx0c+I3iHRz4jfjl5QH3hO8D9/z5meUKHPiN+xDlAfeY7wP3hPtqVAoc+I37EOUB95jvA/eE+2pUChz4jZgKHPiNnQoc+I33jNUB7/gkA+/3jBX4JNX8JAYOHPiN+PL3BAH3MC0KA/do+PIpChz4jfjt9wAB94r3AAP3wPjtKwr4+e0B9zTj8+MD9zT4+SoK0grBCnsK+O73FAH3KvfAA/cq+O5GCsId+On3GQH3NPesA/c0+W4hCvjvyQH3NPesA/fA+O8oHfjevd+9Afdkvd+9A/fA+N5HHfj2JAr3IiYdE7D3/Pj2JgoTcCUKE7AjHeIdmAqdCvjy9wQB9zAtCgP3aPjyKQr47fcAAfeK9wAD98D47SsK+Of3DAH3hfcMA/eM+EtJCg57CoEK+D8VxwaZ92MF1zM/Bw57+XoBmvjPAzEKDnvV+OfUAZrV+DzUAy4dDnub+KaX9zybBvs2lwceoDf/DAmLDAvfCuUL248MDN+RDA347BQcB3MVthMA1gIAAQAHAAoAEAAWABsAIAA2ADkAPwBCAEUASABRAFcAYgBqAHEAdwB9AJYAoACmAMUAzQDkAPEA/gEJAR0BIQEpAWIBcAF4AYMBiwGRAacBrgGyAb0BzAHUAdoB4gHoAgMCDgIYAiICJwIzAjYCPwJHAk4CVQJcAmICZgJpAnQCeAKVApgCnwKwArYCuwLNAtEC1QLhAuwC9wMBAwoDEwMeAyUDLgM1AzsDWANgA2gDcAOVA6wD0APUA90D4QPrA/ID/wQCBA0EFgQgBCkEMgQ7BEQESwRTBFsEYwRnBH8EmAT7BS0FOQVCBZIFowW7BcIF3wX9BhcGKwY4BlAGcQauBsUG/AcdBzsHXgdpB4MHtQe6B8cHygfUB+kIEwg9CGYIfAiECJYIngiiCKwIzwjiCOoI9gkWCTQJUglvCXcJiAmaCakJsQm5CcEJ2AnvCgYKHQoyCjYKTApRCmIKbQp5CoMKlAqhCrAKvwrQCt0K5Qr2CwcLFwsnCzcLPgtNC1wLawtyC4ALjgucC6cLswvAC80L2QvlC+kL9Qv/DAcMDwwaDCUMMAw7DEYMUQxc9xlgthILtgoOe9/40t8Lf9v4HtsLwY3BEgvmCt8KCxXEsLfXjx9XBlmHfntyG3t+kpx2HwtwHQ6gdvladwuAHQ7CCg4VzR1/2/c/1fcp2wv3BMz3BAugdvda3ff02Yt3C3/VYnb4YtsL5cm4vKMfC/fBe7UKC5Ed44MKC5zbFfsCYOvw9Lbr9wL3AbcpJChfKfsBHwt/20fP+CLLS9cLUmxrUR4LvAqJ96IVMFPP9wH3AcHP6OfIR/sBiR/7AYpQRzAbCy/bV/Ee3B0L2xb4TN37Rfi290Xd/Ew590X8tvtFBgv7Ntvqdq/b9/bbf3cL9737NhX3JuLV9xAfC40wBdv3+vuOOQYLpAa3rWtkZ2tuYmFopauIH06IBQsWQwoLf9Vidvimdwuc3BXhBtGaq8GuHuHDsbffGvcLM+D7FvsmMS37GH8e5YUF65W8v+4b3LpYRk99cz1bH0Zgb1krGgv3wHsV9yrl8fc2H9QdC9sW+HRcHQYL9757FeHBtcytHwv3DPcM+wwGC9f4pjcGCyxYUjg/Z7ryHvfSN/vpB/sSz0D0HgtCHdX7FCAd00IdDovfTHb5Bt+LdxILFb0Gyvc+BfX7DPsMwQcL2/imN/vQBgtfB+6MBQ735/haFdkGC4vV+MbVCwPdFvhI1fvsBvfk+AgF3/w2QffaB/vk/AgFC5sdsauVm5se6x0L9x/3lAU9BlQdC0wK9x/3lAU9Bgv2jE4dC4v3Bi52+Oj3Bot3CxVmCsvpBeEnMa0HDtn/AsCAANkLQk1pQm8fCz3Z9xTZPQv7FXb3KtUL//+ygAAL45oKC54KDrsKcm9vZh9yUgYLwB0FC+sW3/fRBu3FwN3bq1YpHvvR3/fpB/cEUuT7DR4LUx0OAeXhAzcdC+kW8wb3dfgeBfwe3/imKAcL9wMd+xYL+zBJCg7X+wEHSWBqRnkfhfEF+2RBBgvDBlUKFWcdC/zoB/uS+OgF+wwGC02S9wgj+wWY+wgL5Rb4GtX7PPeKBgv7evwmBfgmNwcLi/cUIHb4pncLyl/K9wrKX8oL9wwB94T3DAP3hAv7KtX4qNULyFzI9xLIW8oLyvcgzlLEC/imBS8GC/fBexX3N/L3FPdfH7f7njf3Qwf7E4xHO/sApgoLIgrD9xSsHQsB0eH3rqodCysd5/cUux0LA8cW4fewBsvP94j79AX1Bvu2+DD3ove+BSEG+7T7zgX3zjUHCyId3u0S97HjO98T6EEKE/D3YfivJR0OIWL7BfsKKrY06B+MxBVhbq68jB+7jKqtshu4o2lbWnFoXx8OuwofC/MK93D47kIdDv4wVAr7WvuaBVn3UAcLxBL3M20KC/sCxBX3AvcmBfsmBwvxCg75WncB95TjA/eiC/lV96OK/LIFDgb7bPlaBfsIBgsSx+P3vt872wugdve03feW3Qtyb29mHnJSBgv9WhXd+Vo5BgtzXwbujAUOi/cM+J7fEgv3BBL3L/cEC/P3BX73CMYLA5kKCzAdx/cUEsHj95bfE7wpHRN8Mh0TvDQdCywK0O0SzeOX4/PjjecT/UAdE/b7rve+KgqL3feC3fd23RLl4feY5U/lE/TlFvd1Bvcq5tb3D+dQyimYHxP415m+xtga9ww71fswHvtcBhP093b9CBX7IPeC9yAG7b9dP0NXXykfE/h199QV+wr3dvcKBu23YUNEX2IpHw7VaQd1gZOjH/dwB/caQd37FPsMPUcndx7khAXIm7Kt1RvXtV8xH/tGZwX7CHRXXDEaCyMKAenh95LhA3UdDpUK+wTRFVcdDovd94DV94DdAfcV4fe85QOB99IV9x/70vc8BvdM9wz3Evd493j7DPcU+0wf+zz70vsfBvfC+8oVPveA6tUs94DYBvce3C37SPtIOi/7Hh8O18XB4t9VwkYfE/R9HRPseQrGCk8dZvtcBfsRBk8dih1m+1kF0wbWCgsjCgHRWwoO+xDlrfcGHfPv3+ETr9EW4QYTt2QdE89oCvc+fApEHcV2Evf1whf3ymkdrbBglVZRfB0TeGJlBRP4WR33wnsV9xrp6fcwpR8wkAV+Hft36fsj9z4fCwP3zn8V9xcdBcMd+zzr+wH3KB8LPx3n9xQBwfiEA0EdCyId0vcAEveo9wAw3xPoQQoT8PeO+KMrCvtmz/c3dgH3aNcD98L7ZhWxq5Wbmx+MHUaVa2MFmx0eDhX3nMT7UwaMpaeosKSnnRjIsqy7uhrNWrlFQVdaPoIex4gFupSkpLQbq6V0a25+dGZzH2t2BShKeEpNGgskHd7tEvc045ThlOMT6DgKE/zb+VsqCqB2+Of3B4t3Esfh98jhE7j3mtsV1wYT2PcI+JcF/Ofh+Vr7Fgf7AvyC+wL4ggX7Fv1a4fjnBg6gdvimdwHB+IADwRbvBvcn92r3J/tqBe0G+1X3osUKBQ4oCgG9+IgDvRbtBvcr97f3K/u3Be8G+1j3+OEdBQ69CvsJmPsIThtodrjSHzcGO6v7BvcAHvcAhPcIy20d9wjJC4vj+E535/cUvR0LrOQVwgaR0ZT3Ddsa93o1+3oHO5X7DZFFHg4b+w5G9xn3Lfcuz/ca9w/dzE81oh/lkQX3Fmwo6fsWG/s6+wf7Oftj+2L3CPs49zkfC00KsAoLKArn9xQB95bhA0kdC60KDigKAfeW4QNJHQ4S0eH3tOETXtEW4QYTbmQdE55oCgt/FeS2uPcJpB82kgVLfndyZBtZbMj3AoYf940GirEF90WFVuMkG1JfcQv72ve2Fdy31+vsX9c6O18/Kiu3P9sf1wRsea3JyZ2uqqudaE1NeWlrHwuF/WoV27fX7Otf1zs6Xz8rKrc/3B/XBGt6rsnJnK2rqp5pTU14aGwfC7KqnKafHz+Cal1bG210mqeBH1CFBQsB97nfA88dC6B299Dd98x3Ac/h97jhA8oKDgH3+N8D0x0LA8wdCyQd0/cULR04CgsV+0T7Avcj93j3ePcC9yP3RPdD9wL7I/t4+3j7Avsj+0MfCxXo+xkF6Qbo9xkFRQZFMUXlBQtUHROAkIUdC/s+4iD3IB6Q298dCzf7IQYuT1ErRF3F5x73Ijf7Igf7Idky9w/Sx7PGpB4L+CUW9zPV+zMGYnmeth/40vuaQfdG/IgHNL5a5x4LtpiisbAaxVa5RkxUYVWDHsiHBaKOpp+uG6yncWwL0Mevw6UfNQc9VmUrOWepvXseM4UFLqHhTvcGGwvwHU2S9wgjC/eo2QHJHAaMAxwFW8EVUgoLgQr4DhXHBpn3WAX3HDP7HAcOBSkG+zL71Psy99QFKQYL8wr3yvjuJx0lHfdUKSUdC0QKE5yA9R0LFfIG9x33NwXVB/sd9zcFJAb3PvtcBQv3TPeYBScG+xz7XPsf91wFKQb3TfuWC7D3WQXjBpfRBTQGq/dBBd4Gl9EFOQYL95n3nQX7Cgb7jfuWBfeWNfym4feWBwv3ZxVqcHBqaqZwrKympqyscKZqHw7tHQUOzxbh99D3uPvQ4flaNfvM+7j3zDUGC/sG6h0L/wA2gAD/AMSAAFgK91kSyQvX+Vo3+5L3BB0fCxXbyLjUvG6xXJ8fC4v3Bh33tOETXAv30+EtHfeV+4sV4fjK95XhCwb3cvdyLB33mPuYBQ74+e0B95TjA/eU+PklHQ7C91pYCvdXEskcBowTaAs3/Fz7CfhcNvxc+wn4XDcGDgb3cfdyLB33mPuYBQuw91kF9xEGCwb7cfdyBSEGE2D3mPuY+5kL+VUVWQZM+z4FIfcM9wxVBwsB7+ED7xbh+Qb4At/8WAYLi9dIdvet16DX91XXmncSC/dn1ftn9yA3+yD7Q0H3Qwv3lRbh6woL4RP6+If7KhXh93AGE/wLBTEG+zD8Qfsw+EEFMQYLvwa7jZ2aoxuflIR4oh8L9xEd95DfCwb3SPuyi/vP+0j7swgLi/cOPdnW0fdB0fdcdwv3cMT3OLbct8fEAbvDC3fr9wQB9y8tCgMLFVMGSy0FNe/laQcOnnR2mGsbVWNjPokfC9X4ENdB1RL3eNRC3wsDyfezFfhw2fxwBgsGY/wKBVyGd3JqGwvvCuUL+Qj3bd38nDn3bQYLFc0G5ffeBS4GDvsm0fsX9y4L9zzp9xn3gQv7Kvd0QdX4XHcSC535OAH3mdkD+M8L0xXRBkn3FAUtBgv3DAH3hPcMA/fAC/ju9xQB93D3NAML6/cA9z33PSv3AAt38u0B9zTj8+MDCwAAAAEAAgAOAAAAAAAAAcIAAgBIAAIADAABAA8AIgABACUAKwABAC0ALQABAC8AQwABAEUAUwABAFcAYQABAGMAcgABAHQAeAABAHoAgwABAIUAqQABAKsAswABALUAvwABAMEA8QABAPYA/wABAQEBEAABARIBFgABARgBIQABASMBUAABAVMBUwABAVYBWQABAVsBXQABAWABYwABAWYBZwABAWoBbQABAXoBfwABAYIBggABAYYBhgABAYkBjAABAZABkAABAZIBlQABAZgBmwABAZ0BnwABAaIBpgABAaoBqgABAa0BrQABAa8BsAABAb0BvQABAcABwwABAcUBxQABAckByQABAcwBzAABAdIB1wABAd4B4gAEAeQB5QAEAf0CBgACAhwCMwACAjQCNAAEAjYCNgAEAjkCOQAEAjsCOwAEAkECQgAEAkUCTAABAk0CTQAEAlACUAAEAlICUgAEAlQCVQAEAmYCawABAnQCpAACAqYCpgAEAq0CrgABArECsQAEArUCtQACAr0CwAABAsYCxgABAsoCygABAssCywAEAs0CzgAEAtMC0wAEAt4C3gAEAwEDAQABAxADJAADAAEAAwAAABAAAAAgAAAAKgACAAIDEQMVAAADFwMdAAUAAgABAx4DIQAAAAIAAwMQAxUAAAMXAx0ABgMjAyQADQAAAAEAAAAKAGoAmgACREZMVAAObGF0bgASAEgAAAA6AAlBWkUgAERDUlQgAERLQVogAERNQUggAERNT0wgAEROTEQgAERST00gAERUQVQgAERUUksgAEQAAP//AAIAAQACAAD//wACAAAAAgADbWFyawAUbWFyawAUbWttawAoAAAACAAAAAEAAgADAAQABQAGAAcAAAACAAgACQAKABYBEgMAAx4DdAuMDFwOLA7kDzgABAAAAAEACAABA2oADAACA/wANAACAAYCRQJMAAACZgJrAAgCrQKuAA4CvQLAABACxgLGABQCygLKABUAFg94AAAPeAAAD3gAAA9yAAAAWgBgAGYAAABsAHIPeAAAAHgAAAB+AAAAAACEAIoAAACQAJYAnAAAAKIAAA94AAAK4ArmAKgAAAmuCkQArgC0CsIOygC6AAAAAQBiAhIAAQEtABIAAQEiAhIAAQC5AhIAAQD0ACIAAQEd/6kAAQEr/6kAAQEtAnwAAQErAfwAAQEaAhIAAQE6AnwAAQEkAhIAAQF9AhIAAQEdAhIAAQE4AsYAAQFFAAAAAQBTAhIABAAAAAEACAABAm4ADAACAwAAkgABAEEBUwFWAVcBWAFZAVsBXAFdAWABYQFiAWMBZgFnAWoBawFsAW0BegF7AXwBfQF+AX8BggGGAYkBigGLAYwBkAGSAZMBlAGVAZgBmQGaAZsBnQGeAZ8BogGjAaQBpQGmAaoBrQGvAbABvQHAAcEBwgHDAcUByQHMAdIB0wHUAdUB1gHXAEEJaAAAAQwAAAEGAAABDAAAAQwAAAhgCGYHvghmCGAIZgloDXAJaA1wARIAAAEYAAAJaAAACWgNcAhUCFoJaA1wATYAAAE2AAAJbg1wCWgNcAloDXAJaA1wCWgNcAfWAAABHgEkCWgNcAEqAAABMAAACWgNcAluCXQJaA1wCWgNcAloDXABNgAACXoJgAFCAAABPAAAAUIAAAFCAAAJkgmYCJYJmAmSCZgOGAAADhgAAAlEAAAOGAAACUQAAA4eDXAJhgmMCbwAAAm8AAAJIAkaCLoAAAmqAAAIwAAACK4AAAFIAU4OHg1wDh4AAAiuAAAJaA1wCJwIog4YAAAOHg1wCbwAAAABAUYDjgABAUYCxgABASYCxgABASYDjgABATYCxgABATYAAAABARwCxgABAR0CxgABATACxgABAU8C2gABAU8CEgABAVACEgABATgAAAAEAAAAAQAIAAEImAAMAAEI2AASAAEAAQFrAAEJGAAEAAAAAQAIAAEJSgAMAAEJwAAuAAEADwFTAVsBXAFdAX0BfgGQAZUBnQGeAZ8BwAHBAdMB1AAPCpAKlgqWCpYKnAqcCpwKtAq6CroKugrACsAKnAquAAQAAAABAAgAAQAMACIAAgCeAOwAAgADAxADFQAAAxcDIQAGAyMDJAARAAIAFAACAAwAAAAPACIACwAlACsAHwAtAC0AJgAvAEMAJwBFAFMAPABXAGEASwBjAHIAVgB0AHgAZgB6AIMAawCFAKkAdQCrALMAmgC1AL8AowDBAPEArgD2AP8A3wEBARAA6QESARYA+QEYASEA/gEjAVABCAMBAwEBNgATAAALsAAAC7AAAAuqAAALkgAAC5gAAAueAAALqgAAC7AAAAuwAAALsAAAC7AAAAuqAAALpAABCwIAAQsCAAELCAABCw4AAAuqAAALsAE3BqwAAAamAAAGrAAABqwAAAasAAAGrAAABqYAAAasAAAGrAAABqwAAAasAAAFmAWeBN4FngWYBZ4FmAWeBZgFngTkBZ4FsATqBbAE6gTwBPYE8AT2BaQFqgUCBaoFpAWqBaQFqgWkBaoE/AWqBQIFqgWkBaoFpAWqBaQFqgayBrgGsga4BrIGuAayBrgGsgUIBQ4GuAayBrgGrAAABqwAAAasCrQGpgq0BqwKtAasCrQFaAq0BqYKtAasCrQGrAq0BqwKtAUaAAAFFAAABRoAAAUmBSAFJgUgBSYFLAXyBW4FMgVuBfIFbgXyBTgFPgVEBqwKtAamCrQGrAq0BqwKygasCrQGrAq0BqwKtAamCrQGrAq0BqwKtAamCrQGpgq0BqwKtAasCrQGrAq0BqwKtAVWBVAFSgVQBVYFUAVWBVwGsgq0BWIKtAayCrQGsgq0BrIKtAayCsoGrAq0BqwKtAasCrQGrAq0BqwKygasCrQGpgq0BqwKtAasCrQGrAq0BqYKtAamCrQGrAq0BqwKtAasCrQGrAq0BqwKtAamCrQGrAq0BqwKtAamCrQGrAq0BqYKtAasCrQGrAq0BqYKtAasCrQGrAq0BqYKtAasCrQFaAq0BfIFbgasCrQFgAV6BXQFegWABXoFgAWGBbAHBgWwBwYFsAcGBbAFjAWSBwYFsAcGBqwAAAWYBZ4FpAWqBaQFqgayBrgGrAq0BqwKtAasCrQGrAq0BqwKtAasCrQGrAq0BbAHBga+BsQFtgbEBr4GxAa+BsQGvgbEBr4GxAW2BsQGvgbEBr4GxAa+BsQGvgbEBbwFwgbKBtAFyAbQBsoG0AbKBtAGygbQBc4G0AtiCrQLYgq0C2IKtAbWBtwF2gbcBtYG3AbWBtwG1gbcBdQG3AXaBtwG1gbcBtYG3AbWBtwF4AXmBuIAAAbiAAAG4gAABuIAAAbiAAAF7AAABuIAAAbiAAAF8gAABfIAAAXyAAAF/gAABu4AAAX4AAAG7gAABu4AAAX+AAAF+AAABu4AAAX+AAAG7gAABgQAAAb0AAAGCgAABvQAAAYQBtwGEAbcBhAGFgasCrQGpgq0BqwKtAasCsoGHAYiBigGLgaOBpQGNAaUBo4GlAaOBjoGjgaUBo4GlAtiCrQGggq0C2IKtAtiCrQGggq0BoIKtAtiCrQLYgq0C2IKtAZMBkYGQAZGBkwGRgZMBlIGZAZeBlgGXgZkBl4GZAZeBmQGXgZkBmoG4gZwBuIGcAbiBnAG4gZwBuIGdgpMBvoGfAb6CkwG+gpMBvoKTAb6BnwG+gZ8BvoKTAb6CkwG+gpMBvoKTAb6C2IKtAaCCrQLYgq0C2IKtAaCCrQHAAAABpoAAAcAAAAHAAAABpoAAAcAAAALXAcGBogHBgtcBwYLcgcGBqwKtAaOBpQHAAcGBpoHBgcABwYHAAcGBwAHBgcABwYGmgcGBwAHBgcABwYHAAcGBwAHBgcMBxIGoAcSBwwHEgcMBxIHDAcSBwwHEgagBxIHDAcSBwwHEgcMBxIHDAcSBqwKtAamCrQGrAq0BqwKygayBrgGvgbEBsoG0AbWBtwG1gbcBuIAAAboAAAG7gAABu4AAAbuAAAG9AAAC2IKtApMBvoLYgq0BwAAAAtcBwYHAAcGBwwHEgcYBx4AAQEuA44AAQEtA3sAAQEzAAAAAQFUAsYAAQFaAAAAAQE9A3wAAQE+A48AAQEr/yIAAQEqA3sAAQHRA44AAQHRAsYAAQEcAAAAAQEVAsYAAQEc/yIAAQCPA44AAQFB/yIAAQCcAsYAAQFOAAAAAQEeA44AAQEwAAAAAQEeAsYAAQEw/yIAAQErA44AAQErA3sAAQFBAAAAAQEiA44AAQEiAAAAAQEiAsYAAQEi/yIAAQEt/yIAAQEsA3sAAQEuAsYAAQE7AAAAAQE+AscAAQE+AAAAAQEtAsYAAQEcAtoAAQGpAhAAAQGpAAAAAQE5AtoAAQE4AscAAQExAsUAAQEyAtgAAQEjAhIAAQEmAAIAAQEpAscAAQCPAsYAAQFKAtoAAQFJAscAAQGMAscAAQGNAtoAAQCFAsYAAQE1/yIAAQFAAsYAAQFAAAAAAQFGAhIAAQEvAAAAAQEyAtoAAQEy/yIAAQFTAtoAAQENAAAAAQFTAhIAAQEN/yIAAQEuAtoAAQEuAAAAAQEuAhIAAQEu/yIAAQFeAAAAAQFe/yIAAQElAtoAAQEsAtoAAQEtAtoAAQEyAhIAAQEyAAAAAQEvAtoAAQEgAtoAAQEsA44AAQEsAsYAAQErAsYAAQErAAAAAQEcAhIAAQEXAAAAAQE5AhIAAQE5AAAAAQEyAhAAAQE1AAAAAQEqAhIAAQB8AhIAAQFKAhIAAQGNAhIAAQElAAAAAQEvAhIAAQEtAAAAAQEgAhIAAQEVAAAAAQEsAosAAQEsAEIABAAAAAEACAABAAwAEgABAEwAWAABAAEDIgACAAkAPwBDAAAAYwBnAAUAhQCFAAoAsQCzAAsA3QDhAA4BAQEFABMBIwEjABgBOwE/ABkDAQMBAB4AAQAAAAYAAQEsAR0AHwBMAEwATABMAEAARgBGAEYARgBGAEwAXgBeAF4AXgBeAF4AXgBSAFgAWABYAFgAWABeAF4AXgBeAF4AZABqAAEBOQFjAAEBLAFcAAEBLAFjAAEBQAEJAAEBKgEJAAEBLAEJAAEBKwEJAAEBLAFnAAQAAAABAAgAAQAMABIAAQCCAIgAAQABAyEAAgASAAIADAAAABkAIgALADAAOAAVAGgAcgAeAJEAkQApAJMAlAAqAJYAlwAsAJkAmQAuAJ4AqQAvALUAvwA7AMwA1QBGAQYBEABQASUBOgBbAUABQABxAUIBQwByAUUBSAB0AUsBSwB4AU8BUAB5AAEAAAJCAHsA+AD4APgA+AD4APgA+AD4APgA+AD4AP4A/gD+AP4A/gD+AP4A/gD+AP4BBAEEAQQBBAEEAQQBBAEEAQQBCgEKAQoBCgEKAQoBCgEKAQoBCgEKAPgA/gD+AQQBBAEKARwBHAEcARwBHAEcARwBHAEcARwBHAEQASIBIgEiASIBIgEiASIBIgEiASIBFgEoASgBKAEoASgBKAEoASgBKAEoAS4BLgEuAS4BLgEuAS4BLgEuAS4BLgE0ATQBNAE0ATQBNAE0ATQBNAE0ATQBOgE6AToBOgE6AToBOgE6AToBOgE6ARwBIgEiASgBKAEoASgBLgE0AToAAQI0AAAAAQIWAAAAAQIIAAAAAQGKAAAAAQHfAAAAAQCiAfoAAQImAAAAAQG2ABgAAQIwAAAAAQH4AAAAAQIEAAAAAQIMAAAABAAAAAEACAABAAwAEgABAEAATAABAAEDFgACAAcAPwBDAAAAhQCFAAUAsQCzAAYA3QDhAAkBAQEFAA4BIwEjABMBOwE/ABQAAQAAAAYAAQDgAhIAGQA6ADoAOgA6ADQAOgBAAEAAQABSAFIAUgBSAEYATABMAEwATABMAFIAWABYAFgAWABeAAEBJQISAAEBGAISAAECCAISAAEBpAISAAEBWgJoAAEBkAISAAEBmgISAAEBmQISAAYAEAABAAoAAQABAAwAFgABABwAQAACAAEDHgMhAAAAAQABAx4ABAAAABIAAAASAAAAGAAAAB4AAQEsAAAAAQE9AAAAAQFiAAAAAQAEAAEBLP8iAAYAEAABAAoAAgABAAwAIgABACwAjgACAAMDEAMVAAADFwMdAAYDIwMkAA0AAgABAxIDFQAAAA8AAABcAAAAXAAAAFYAAAA+AAAARAAAAEoAAABWAAAAXAAAAFwAAABcAAAAXAAAAFYAAABQAAAAVgAAAFwAAQFUAhIAAQECAhIAAQEEAhIAAQEfAhIAAQEtAhIAAQEsAhIABAAKABAAFgAcAAEBLALHAAEBVALaAAEBAgLaAAEBBALaAAEAAAAKAeQDGAACREZMVAAObGF0bgASAD4AAAA6AAlBWkUgAGBDUlQgAIhLQVogALBNQUggANhNT0wgAQBOTEQgAShST00gAVBUQVQgAXhUUksgAaAAAP//ABAAAAABAAIAAwANAA4ADwAQABEAEgATABQAFQAWABcAGAAA//8AEQAAAAEAAgADAAQADQAOAA8AEAARABIAEwAUABUAFgAXABgAAP//ABEAAAABAAIAAwAFAA0ADgAPABAAEQASABMAFAAVABYAFwAYAAD//wARAAAAAQACAAMABgANAA4ADwAQABEAEgATABQAFQAWABcAGAAA//8AEQAAAAEAAgADAAsADQAOAA8AEAARABIAEwAUABUAFgAXABgAAP//ABEAAAABAAIAAwAKAA0ADgAPABAAEQASABMAFAAVABYAFwAYAAD//wARAAAAAQACAAMADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAA//8AEQAAAAEAAgADAAkADQAOAA8AEAARABIAEwAUABUAFgAXABgAAP//ABEAAAABAAIAAwAHAA0ADgAPABAAEQASABMAFAAVABYAFwAYAAD//wARAAAAAQACAAMACAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZYWFsdACYY2NtcACeZnJhYwCkbGlnYQCqbG9jbACybG9jbACybG9jbACybG9jbACybG9jbACybG9jbAC4bG9jbAC4bG9jbAC+bG9jbADEb3JkbgDKc2luZgDSc3MwMQDYc3MwMgDic3MwMwDsc3MwNAD2c3MwNgEAc3MwNwEKc3MwOAEUc3MwOQEec3VicwEoc3VwcwEuAAAAAQAAAAAAAQABAAAAAQAJAAAAAgAMAA0AAAABAAIAAAABAAMAAAABAAQAAAABAAUAAAACAAoACwAAAAEABwAGAAEADgAAAQAABgABAA8AAAEBAAYAAQAQAAABAgAGAAEAEQAAAQMABgABABIAAAEEAAYAAQATAAABBQAGAAEAFAAAAQYABgABABUAAAEHAAAAAQAGAAAAAQAIABkANAOSA9gD7AQOBDQEagRqBHgEhgUaBWIFhAWuCK4IvAjUCOwJBAkuCUYKBAoYCjAKSgADAAAAAQAIAAECjABjAMwA0ADUANgA3ADgAOQA6ADsAPAA9gD6AP4BAgEGAQoBxgEOARIBFgEaAR4BIgEmASoBLgEyATYBOgE+AUYBTAFSAVgBXgFmAWwBcgF4AX4BhAGIAYwBkAGUAZoBngGiAaYBrAGwAbQBuAG+AcIBxgHKAc4B0gHWAdoB3gHiAeYB6gHuAfYB/AICAggCDgIUAhoCIAImAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAAEBUQABAJEAAQCSAAEAkwABAJQAAQCLAAEAjAABAI0AAQCOAAIAjwCVAAEAkAABAJYAAQCXAAEAOgABAIUAAQCGAAEAmAABAIcAAQCIAAEAiQABAIoAAQBhAAEAZwABAJkAAQCaAAEAmwABAJwAAQCdAAMBUQElATAAAgEmATEAAgEnATIAAgEoATMAAgEpATQAAwEqATUBQAACASsBNgACASwBNwACAS0BOAACAS4BOQACAS8BOgABAUEAAQFCAAEBQwABAUQAAgDRAUUAAQFGAAEBRwABAUgAAgDYAUkAAQE7AAEBPAABAT0AAgEjAT4AAQE/AAEBJAABAVIAAQFKAAEA/wABAQUAAQFLAAEBTAABAU0AAQFOAAEBTwABAVAAAwIHAhEB+wACAggCEgACAgkCEwACAgoCFAACAgsCFQACAgwCFgACAg0CFwACAg4CGAACAg8CGQACAhACGgABAkQAAQJFAAECRgABAkcAAQJIAAECSQABAkoAAQJLAAECTAABAvUAAQL2AAEC9wABAvgAAQL5AAEC+gABAvsAAQL8AAEC/QABAv4AAQMjAAEDJAABAx8AAQMyAAEDMwABAGMAAgAHABQAHQAeACUAJgAoACkAKgArADMANAA5AEIASABLAE4AWABZAFoAWwBfAGYAbAB3AH0AgwCPAJ4AnwCgAKEAogCjAKQApQCmAKcAqACwALkAugDGAMwA0ADRANQA1gDdAN4A3wDgAOEA5gDpAOwA/QEEAQoBFQEbASEBKgE1Ad0B3gHfAeAB4QHiAeMB5AHlAeYCNAI2AjcCOAI5AjoCOwI8Aj0C4ALhAuIC4wLkAuUC5gLnAugC6QMRAxIDHgMlAyYABgAQAAIADAAeAAAAAwAAAAEASAABACoAAQAAABYAAwAAAAEAEgABABgAAQAAABYAAQABANYAAgACAxEDFQAAAxcDHQAFAAEAAAABAAgAAQAGAAUAAQABAMwAAQAAAAEACAACAA4ABABhAGcA/wEFAAEABABfAGYA/QEEAAEAAAABAAgAAgAQAAUAhQCGASMBJAMfAAEABQBCAEgA4ADmAx4ABgAAAAEACAABBgYAAgAKABwAAQAEAAEAMQABAAAAAQAAABcAAQAEAAEAzgABAAAAAQAAABcAAQAAAAEACAABAN4AKgABAAAAAQAIAAEA0AA0AAQAAAABAAgAAQB+AAUAEABEAFAAZgByAAUADAAUABwAJAAsAf0AAwJCAd8B/gADAkIB4AIAAAMCQgHhAgIAAwJCAeICAwADAkIB5QABAAQB/wADAkIB4AACAAYADgIBAAMCQgHhAgQAAwJCAeUAAQAEAgUAAwJCAeUAAQAEAgYAAwJCAeUAAQAFAd4B3wHgAeIB5AAGAAAAAgAKACQAAwABACwAAQASAAAAAQAAABgAAQACAAIAngADAAEAEgABABwAAAABAAAAGAACAAEB3QHmAAAAAQACAEsA6QAEAAAAAQAIAAEAFAABAAgAAQAEArUAAwDpAjQAAQABAEUABAAAAAEACAABABwAAQAIAAIABgAOAh0AAwJNAk0CHAACAk0AAQABAk0ABAAAAAEACAABAtgADgAiAEAASgBmAHoAmACsAPAA+gE+AYIBvAKaAs4AAwAIABAAGAImAAMCNAI0AicAAwI0AssCKAACAssAAQAEAikAAgLLAAMACAAQABYCLAADAssCywIqAAICOwIrAAICywACAAYADgIuAAMCOwI7Ai0AAgI7AAMACAAQABgCLwADAkECQQIxAAMCUAJSAjAAAgJQAAIABgAOAjMAAwLLAssCMgACAssABwAQABoAIgAqADIAOAA+Ah4ABAJNAk0CzQIfAAMCTQLNAiEAAwLNAs0CIwADAs4CzgIgAAICzQIiAAICzgIkAAIC0wABAAQCJQACArEABwAQABoAIgAqADIAOAA+AnYABAKxArECzQJ0AAMCTQLNAncAAwKxAssCeAADArECzQJ1AAICVQJ5AAICywJ6AAICzQAHABAAGAAgACgAMAA4AD4CgQADAkICywJ8AAMCywLLAn0AAwLLAs0CfwADAs0CzQKAAAMCzgLOAnsAAgLLAn4AAgLNAAYADgAWAB4AJgAuADQCgwADAk0CzQKFAAMCywLNAoYAAwLNAk0ChwADAs0CywKCAAICTQKEAAICywAWAC4AOgBEAE4AWABgAGgAcAB4AIAAiACQAJgAoACoALAAuADAAMYAzADSANgCjQAFAjkCTQJNAk0CjAAEAjkCTQJNApAABAKxArECsQKUAAQCywLLAs0CnQADAkICzQKJAAMCTQJNAooAAwJNAs0CiwADAk0CzgKPAAMCsQKxApEAAwKxAs0CkwADAssCywKVAAMCywLNApYAAwLLAs4CmAADAs4CTQKZAAMCzgLLApsAAwLTAs0CnAADAtMC0wKIAAICTQKOAAICsQKSAAICywKXAAICzQKaAAIC0wAGAA4AFgAcACIAKAAuAqMAAwLTAs0CngACAk0CnwACAqYCoAACAssCoQACAs0CogACAtMAAQAEAqQAAgLeAAEADgI0AjYCOQI7AkECQgJNAlQCsQLLAs0CzgLTAt4AAQAAAAEACAABABQAhwABAAAAAQAIAAEABgCSAAIAAQCeAKgAAAABAAAAAQAIAAEABgBeAAIAAQDdAOEAAAABAAAAAQAIAAEABgAvAAIAAQBYAFsAAAABAAAAAQAIAAIAEgAGAIsAjACNAI4AjwCQAAEABgAlACYAKAApACoAKwABAAAAAQAIAAEABgAVAAIAAQLgAukAAAABAAAAAQAIAAIAXAArAJEAkgCTAJQAlQCWAJcAmACZAJoAmwCcAJ0BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAkQCRQJGAkcCSAJJAkoCSwJMAyMDJAMyAzMAAQArAAcAFAAdAB4AKgAzADQATgBsAHcAfQCDAI8AowCwALkAugDGAMwA0ADRANQA1gDsAQoBFQEbASEBKgE1AjQCNgI3AjgCOQI6AjsCPAI9AxEDEgMlAyYAAQAAAAEACAABAAYAHgABAAEB3QABABAAAQAKAAAAAQAGAAEAAQACAMwA1gABAAAAAQAIAAIACgACADoA2AABAAIAOQDWAAEAAAABAAgAAgAOAAQBUQFSAVEBUgABAAQAAgBLAJ4A6Q==\"}"
  },
  {
    "path": "apps/v4/app/og/route.tsx",
    "content": "import { ImageResponse } from \"next/og\"\n\nasync function loadAssets(): Promise<\n  { name: string; data: Buffer; weight: 400 | 600; style: \"normal\" }[]\n> {\n  const [\n    { base64Font: normal },\n    { base64Font: mono },\n    { base64Font: semibold },\n  ] = await Promise.all([\n    import(\"./geist-regular-otf.json\").then((mod) => mod.default || mod),\n    import(\"./geistmono-regular-otf.json\").then((mod) => mod.default || mod),\n    import(\"./geist-semibold-otf.json\").then((mod) => mod.default || mod),\n  ])\n\n  return [\n    {\n      name: \"Geist\",\n      data: Buffer.from(normal, \"base64\"),\n      weight: 400 as const,\n      style: \"normal\" as const,\n    },\n    {\n      name: \"Geist Mono\",\n      data: Buffer.from(mono, \"base64\"),\n      weight: 400 as const,\n      style: \"normal\" as const,\n    },\n    {\n      name: \"Geist\",\n      data: Buffer.from(semibold, \"base64\"),\n      weight: 600 as const,\n      style: \"normal\" as const,\n    },\n  ]\n}\n\nexport async function GET(request: Request) {\n  const { searchParams } = new URL(request.url)\n  const title = searchParams.get(\"title\")\n  const description = searchParams.get(\"description\")\n\n  const [fonts] = await Promise.all([loadAssets()])\n\n  return new ImageResponse(\n    (\n      <div\n        tw=\"flex h-full w-full bg-black text-white\"\n        style={{ fontFamily: \"Geist Sans\" }}\n      >\n        <div tw=\"flex border absolute border-stone-700 border-dashed inset-y-0 left-16 w-[1px]\" />\n        <div tw=\"flex border absolute border-stone-700 border-dashed inset-y-0 right-16 w-[1px]\" />\n        <div tw=\"flex border absolute border-stone-700 inset-x-0 h-[1px] top-16\" />\n        <div tw=\"flex border absolute border-stone-700 inset-x-0 h-[1px] bottom-16\" />\n        <div tw=\"flex absolute flex-row bottom-24 right-24 text-white\">\n          <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            viewBox=\"0 0 256 256\"\n            width={48}\n            height={48}\n          >\n            <rect width=\"256\" height=\"256\" fill=\"none\"></rect>\n            <line\n              x1=\"208\"\n              y1=\"128\"\n              x2=\"128\"\n              y2=\"208\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n              stroke-width=\"32\"\n            ></line>\n            <line\n              x1=\"192\"\n              y1=\"40\"\n              x2=\"40\"\n              y2=\"192\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n              stroke-width=\"32\"\n            ></line>\n          </svg>\n        </div>\n        <div tw=\"flex flex-col absolute w-[896px] justify-center inset-32\">\n          <div\n            tw=\"tracking-tight flex-grow-1 flex flex-col justify-center leading-[1.1]\"\n            style={{\n              textWrap: \"balance\",\n              fontWeight: 600,\n              fontSize: title && title.length > 20 ? 64 : 80,\n              letterSpacing: \"-0.04em\",\n            }}\n          >\n            {title}\n          </div>\n          <div\n            tw=\"text-[40px] leading-[1.5] flex-grow-1 text-stone-400\"\n            style={{\n              fontWeight: 500,\n              textWrap: \"balance\",\n            }}\n          >\n            {description}\n          </div>\n        </div>\n      </div>\n    ),\n    {\n      width: 1200,\n      height: 628,\n      fonts,\n    }\n  )\n}\n"
  },
  {
    "path": "apps/v4/app/rss.xml/route.ts",
    "content": "import { NextResponse } from \"next/server\"\n\nimport { getChangelogPages, type ChangelogPageData } from \"@/lib/changelog\"\nimport { siteConfig } from \"@/lib/config\"\n\nexport const revalidate = false\n\nexport async function GET() {\n  const pages = getChangelogPages()\n\n  const items = pages\n    .map((page) => {\n      const data = page.data as ChangelogPageData\n      const date = page.date?.toUTCString() ?? new Date().toUTCString()\n      const link = `${siteConfig.url}/docs/${page.slugs.join(\"/\")}`\n\n      return `    <item>\n      <title><![CDATA[${data.title}]]></title>\n      <link>${link}</link>\n      <guid>${link}</guid>\n      <description><![CDATA[${data.description || \"\"}]]></description>\n      <pubDate>${date}</pubDate>\n    </item>`\n    })\n    .join(\"\\n\")\n\n  const xml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n  <channel>\n    <title>${siteConfig.name} Changelog</title>\n    <link>${siteConfig.url}</link>\n    <description>${siteConfig.description}</description>\n    <language>en-us</language>\n    <atom:link href=\"${siteConfig.url}/rss.xml\" rel=\"self\" type=\"application/rss+xml\"/>\n${items}\n  </channel>\n</rss>`\n\n  return new NextResponse(xml, {\n    headers: {\n      \"Content-Type\": \"application/rss+xml; charset=utf-8\",\n    },\n  })\n}\n"
  },
  {
    "path": "apps/v4/components/active-theme.tsx",
    "content": "\"use client\"\n\nimport {\n  createContext,\n  useContext,\n  useEffect,\n  useState,\n  type ReactNode,\n} from \"react\"\n\nconst DEFAULT_THEME = \"default\"\n\ntype ThemeContextType = {\n  activeTheme: string\n  setActiveTheme: (theme: string) => void\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined)\n\nexport function ActiveThemeProvider({\n  children,\n  initialTheme,\n}: {\n  children: ReactNode\n  initialTheme?: string\n}) {\n  const [activeTheme, setActiveTheme] = useState<string>(\n    () => initialTheme || DEFAULT_THEME\n  )\n\n  useEffect(() => {\n    Array.from(document.body.classList)\n      .filter((className) => className.startsWith(\"theme-\"))\n      .forEach((className) => {\n        document.body.classList.remove(className)\n      })\n    document.body.classList.add(`theme-${activeTheme}`)\n    if (activeTheme.endsWith(\"-scaled\")) {\n      document.body.classList.add(\"theme-scaled\")\n    }\n  }, [activeTheme])\n\n  return (\n    <ThemeContext.Provider value={{ activeTheme, setActiveTheme }}>\n      {children}\n    </ThemeContext.Provider>\n  )\n}\n\nexport function useThemeConfig() {\n  const context = useContext(ThemeContext)\n  if (context === undefined) {\n    throw new Error(\"useThemeConfig must be used within an ActiveThemeProvider\")\n  }\n  return context\n}\n"
  },
  {
    "path": "apps/v4/components/analytics.tsx",
    "content": "\"use client\"\n\nimport { Analytics as VercelAnalytics } from \"@vercel/analytics/react\"\n\nexport function Analytics() {\n  return <VercelAnalytics />\n}\n"
  },
  {
    "path": "apps/v4/components/announcement.tsx",
    "content": "import Link from \"next/link\"\nimport { ArrowRightIcon } from \"lucide-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\n\nexport function Announcement() {\n  return (\n    <Badge asChild variant=\"secondary\" className=\"bg-muted\">\n      <Link href=\"/docs/changelog/2026-03-cli-v4\">\n        shadcn/skills, presets and more <ArrowRightIcon />\n      </Link>\n    </Badge>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/block-display.tsx",
    "content": "import * as React from \"react\"\nimport { type registryItemFileSchema } from \"shadcn/schema\"\nimport { type z } from \"zod\"\n\nimport { highlightCode } from \"@/lib/highlight-code\"\nimport {\n  createFileTreeForRegistryItemFiles,\n  getRegistryItem,\n} from \"@/lib/registry\"\nimport { cn } from \"@/lib/utils\"\nimport { BlockViewer } from \"@/components/block-viewer\"\nimport { ComponentPreview } from \"@/components/component-preview\"\nimport { type Style } from \"@/registry/_legacy-styles\"\n\nexport async function BlockDisplay({\n  name,\n  styleName,\n}: {\n  name: string\n  styleName: Style[\"name\"]\n}) {\n  const item = await getCachedRegistryItem(name, styleName)\n\n  if (!item?.files) {\n    return null\n  }\n\n  const [tree, highlightedFiles] = await Promise.all([\n    getCachedFileTree(item.files),\n    getCachedHighlightedFiles(item.files),\n  ])\n\n  return (\n    <BlockViewer\n      item={item}\n      tree={tree}\n      highlightedFiles={highlightedFiles}\n      styleName={styleName}\n    >\n      <ComponentPreview\n        name={item.name}\n        styleName={styleName}\n        hideCode\n        className={cn(\n          \"my-0 **:[.preview]:h-auto **:[.preview]:p-4 **:[.preview>.p-6]:p-0\",\n          item.meta?.containerClassName\n        )}\n      />\n    </BlockViewer>\n  )\n}\n\nconst getCachedRegistryItem = React.cache(\n  async (name: string, styleName: Style[\"name\"]) => {\n    return await getRegistryItem(name, styleName)\n  }\n)\n\nconst getCachedFileTree = React.cache(\n  async (files: Array<{ path: string; target?: string }>) => {\n    if (!files) {\n      return null\n    }\n\n    return await createFileTreeForRegistryItemFiles(files)\n  }\n)\n\nconst getCachedHighlightedFiles = React.cache(\n  async (files: z.infer<typeof registryItemFileSchema>[]) => {\n    return await Promise.all(\n      files.map(async (file) => ({\n        ...file,\n        highlightedContent: await highlightCode(file.content ?? \"\"),\n      }))\n    )\n  }\n)\n"
  },
  {
    "path": "apps/v4/components/block-image.tsx",
    "content": "import Image from \"next/image\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport function BlockImage({\n  name,\n  width = 1440,\n  height = 900,\n  className,\n}: Omit<React.ComponentProps<typeof Image>, \"src\" | \"alt\"> & { name: string }) {\n  return (\n    <div\n      className={cn(\n        \"relative aspect-[1440/900] w-full overflow-hidden rounded-lg\",\n        className\n      )}\n    >\n      <Image\n        src={`/r/styles/new-york/${name}-light.png`}\n        alt={name}\n        width={width}\n        height={height}\n        className=\"object-cover dark:hidden\"\n        data-image=\"light\"\n      />\n      <Image\n        src={`/r/styles/new-york/${name}-dark.png`}\n        alt={name}\n        width={width}\n        height={height}\n        className=\"hidden object-cover dark:block\"\n        data-image=\"dark\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/block-viewer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Image from \"next/image\"\nimport Link from \"next/link\"\nimport {\n  Check,\n  ChevronRight,\n  Clipboard,\n  File,\n  Folder,\n  Fullscreen,\n  Monitor,\n  RotateCw,\n  Smartphone,\n  Tablet,\n  Terminal,\n} from \"lucide-react\"\nimport { type PanelImperativeHandle } from \"react-resizable-panels\"\nimport {\n  type registryItemFileSchema,\n  type registryItemSchema,\n} from \"shadcn/schema\"\nimport { type z } from \"zod\"\n\nimport { trackEvent } from \"@/lib/events\"\nimport {\n  type createFileTreeForRegistryItemFiles,\n  type FileTree,\n} from \"@/lib/registry\"\nimport { cn } from \"@/lib/utils\"\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\"\nimport { getIconForLanguageExtension } from \"@/components/icons\"\nimport { OpenInV0Button } from \"@/components/open-in-v0-button\"\nimport { type Style } from \"@/registry/_legacy-styles\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/registry/new-york-v4/ui/resizable\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  Sidebar,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/registry/new-york-v4/ui/tabs\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\ntype BlockViewerContext = {\n  item: z.infer<typeof registryItemSchema>\n  view: \"code\" | \"preview\"\n  setView: (view: \"code\" | \"preview\") => void\n  activeFile: string | null\n  setActiveFile: (file: string) => void\n  resizablePanelRef: React.RefObject<PanelImperativeHandle | null> | null\n  tree: ReturnType<typeof createFileTreeForRegistryItemFiles> | null\n  highlightedFiles:\n    | (z.infer<typeof registryItemFileSchema> & {\n        highlightedContent: string\n      })[]\n    | null\n  iframeKey?: number\n  setIframeKey?: React.Dispatch<React.SetStateAction<number>>\n}\n\nconst BlockViewerContext = React.createContext<BlockViewerContext | null>(null)\n\nfunction useBlockViewer() {\n  const context = React.useContext(BlockViewerContext)\n  if (!context) {\n    throw new Error(\"useBlockViewer must be used within a BlockViewerProvider.\")\n  }\n  return context\n}\n\nfunction BlockViewerProvider({\n  item,\n  tree,\n  highlightedFiles,\n  children,\n}: Pick<BlockViewerContext, \"item\" | \"tree\" | \"highlightedFiles\"> & {\n  children: React.ReactNode\n}) {\n  const [view, setView] = React.useState<BlockViewerContext[\"view\"]>(\"preview\")\n  const [activeFile, setActiveFile] = React.useState<\n    BlockViewerContext[\"activeFile\"]\n  >(highlightedFiles?.[0].target ?? null)\n  const resizablePanelRef = React.useRef<PanelImperativeHandle>(null)\n  const [iframeKey, setIframeKey] = React.useState(0)\n\n  return (\n    <BlockViewerContext.Provider\n      value={{\n        item,\n        view,\n        setView,\n        resizablePanelRef,\n        activeFile,\n        setActiveFile,\n        tree,\n        highlightedFiles,\n        iframeKey,\n        setIframeKey,\n      }}\n    >\n      <div\n        id={item.name}\n        data-view={view}\n        className=\"group/block-view-wrapper flex min-w-0 scroll-mt-24 flex-col-reverse items-stretch gap-4 overflow-hidden md:flex-col\"\n        style={\n          {\n            \"--height\": item.meta?.iframeHeight ?? \"930px\",\n          } as React.CSSProperties\n        }\n      >\n        {children}\n      </div>\n    </BlockViewerContext.Provider>\n  )\n}\n\ntype BlockViewerProps = Pick<\n  BlockViewerContext,\n  \"item\" | \"tree\" | \"highlightedFiles\"\n> & {\n  children: React.ReactNode\n  styleName: Style[\"name\"]\n}\n\nfunction BlockViewerToolbar({ styleName }: { styleName: Style[\"name\"] }) {\n  const { setView, view, item, resizablePanelRef, setIframeKey } =\n    useBlockViewer()\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\n\n  return (\n    <div className=\"hidden w-full items-center gap-2 pl-2 md:pr-6 lg:flex\">\n      <Tabs\n        value={view}\n        onValueChange={(value) => setView(value as \"preview\" | \"code\")}\n      >\n        <TabsList className=\"grid h-8! grid-cols-2 items-center rounded-lg p-1 *:data-[slot=tabs-trigger]:h-6 *:data-[slot=tabs-trigger]:rounded-sm *:data-[slot=tabs-trigger]:px-2 *:data-[slot=tabs-trigger]:text-xs\">\n          <TabsTrigger value=\"preview\">Preview</TabsTrigger>\n          <TabsTrigger value=\"code\">Code</TabsTrigger>\n        </TabsList>\n      </Tabs>\n      <Separator orientation=\"vertical\" className=\"mx-2 h-4!\" />\n      <a\n        href={`#${item.name}`}\n        className=\"flex-1 text-center text-sm font-medium underline-offset-2 hover:underline md:flex-auto md:text-left\"\n      >\n        {item.description?.replace(/\\.$/, \"\")}\n      </a>\n      <div className=\"ml-auto flex items-center gap-2\">\n        <div className=\"h-8 items-center gap-1.5 rounded-md border p-[3px] shadow-none\">\n          <ToggleGroup\n            type=\"single\"\n            defaultValue=\"100%\"\n            onValueChange={(value) => {\n              setView(\"preview\")\n              if (resizablePanelRef?.current) {\n                resizablePanelRef.current.resize(value)\n              }\n            }}\n            className=\"gap-1 *:data-[slot=toggle-group-item]:size-6! *:data-[slot=toggle-group-item]:rounded-sm!\"\n          >\n            <ToggleGroupItem value=\"100%\" title=\"Desktop\">\n              <Monitor />\n            </ToggleGroupItem>\n            <ToggleGroupItem value=\"60%\" title=\"Tablet\">\n              <Tablet />\n            </ToggleGroupItem>\n            <ToggleGroupItem value=\"30%\" title=\"Mobile\">\n              <Smartphone />\n            </ToggleGroupItem>\n            <Separator orientation=\"vertical\" className=\"h-4!\" />\n            <Button\n              size=\"icon\"\n              variant=\"ghost\"\n              className=\"size-6 rounded-sm p-0\"\n              asChild\n              title=\"Open in New Tab\"\n            >\n              <Link href={`/view/${styleName}/${item.name}`} target=\"_blank\">\n                <span className=\"sr-only\">Open in New Tab</span>\n                <Fullscreen />\n              </Link>\n            </Button>\n            <Separator orientation=\"vertical\" className=\"h-4!\" />\n            <Button\n              size=\"icon\"\n              variant=\"ghost\"\n              className=\"size-6 rounded-sm p-0\"\n              title=\"Refresh Preview\"\n              onClick={() => {\n                if (setIframeKey) {\n                  setIframeKey((k) => k + 1)\n                }\n              }}\n            >\n              <RotateCw />\n              <span className=\"sr-only\">Refresh Preview</span>\n            </Button>\n          </ToggleGroup>\n        </div>\n        <Separator orientation=\"vertical\" className=\"mx-1 h-4!\" />\n        <Button\n          variant=\"outline\"\n          className=\"w-fit gap-1 px-2 shadow-none\"\n          size=\"sm\"\n          onClick={() => {\n            copyToClipboard(`npx shadcn@latest add ${item.name}`)\n          }}\n        >\n          {isCopied ? <Check /> : <Terminal />}\n          <span>npx shadcn add {item.name}</span>\n        </Button>\n        <Separator orientation=\"vertical\" className=\"mx-1 h-4!\" />\n        <OpenInV0Button name={item.name} />\n      </div>\n    </div>\n  )\n}\n\nfunction BlockViewerIframe({\n  className,\n  styleName,\n}: {\n  className?: string\n  styleName: Style[\"name\"]\n}) {\n  const { item, iframeKey } = useBlockViewer()\n\n  return (\n    <iframe\n      key={iframeKey}\n      src={`/view/${styleName}/${item.name}`}\n      height={item.meta?.iframeHeight ?? 930}\n      loading=\"lazy\"\n      className={cn(\n        \"relative z-20 no-scrollbar w-full bg-background\",\n        className\n      )}\n    />\n  )\n}\n\nfunction BlockViewerView({ styleName }: { styleName: Style[\"name\"] }) {\n  const { resizablePanelRef } = useBlockViewer()\n\n  return (\n    <div className=\"hidden group-data-[view=code]/block-view-wrapper:hidden md:h-(--height) lg:flex\">\n      <div className=\"relative grid w-full gap-4\">\n        <div className=\"absolute inset-0 right-4 [background-image:radial-gradient(#d4d4d4_1px,transparent_1px)] [background-size:20px_20px] dark:[background-image:radial-gradient(#404040_1px,transparent_1px)]\"></div>\n        <ResizablePanelGroup\n          orientation=\"horizontal\"\n          className=\"relative z-10 after:absolute after:inset-0 after:right-3 after:z-0 after:rounded-xl after:bg-surface/50\"\n        >\n          <ResizablePanel\n            panelRef={resizablePanelRef}\n            className=\"relative aspect-[4/2.5] overflow-hidden rounded-lg border bg-background md:aspect-auto md:rounded-xl\"\n            defaultSize=\"100%\"\n            minSize=\"30%\"\n          >\n            <BlockViewerIframe styleName={styleName} />\n          </ResizablePanel>\n          <ResizableHandle className=\"relative hidden w-3 bg-transparent p-0 after:absolute after:top-1/2 after:right-0 after:h-8 after:w-[6px] after:translate-x-[-1px] after:-translate-y-1/2 after:rounded-full after:bg-border after:transition-all after:hover:h-10 md:block\" />\n          <ResizablePanel defaultSize=\"0%\" minSize=\"0%\" />\n        </ResizablePanelGroup>\n      </div>\n    </div>\n  )\n}\n\nfunction BlockViewerMobile({ children }: { children: React.ReactNode }) {\n  const { item } = useBlockViewer()\n\n  return (\n    <div className=\"flex flex-col gap-2 lg:hidden\">\n      <div className=\"flex items-center gap-2 px-2\">\n        <div className=\"line-clamp-1 text-sm font-medium\">\n          {item.description}\n        </div>\n        <div className=\"ml-auto shrink-0 font-mono text-xs text-muted-foreground\">\n          {item.name}\n        </div>\n      </div>\n      {item.meta?.mobile === \"component\" ? (\n        children\n      ) : (\n        <div className=\"overflow-hidden rounded-xl border\">\n          <Image\n            src={`/r/styles/new-york-v4/${item.name}-light.png`}\n            alt={item.name}\n            data-block={item.name}\n            width={1440}\n            height={900}\n            className=\"object-cover dark:hidden\"\n          />\n          <Image\n            src={`/r/styles/new-york-v4/${item.name}-dark.png`}\n            alt={item.name}\n            data-block={item.name}\n            width={1440}\n            height={900}\n            className=\"hidden object-cover dark:block\"\n          />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction BlockViewerCode() {\n  const { activeFile, highlightedFiles } = useBlockViewer()\n\n  const file = React.useMemo(() => {\n    return highlightedFiles?.find((file) => file.target === activeFile)\n  }, [highlightedFiles, activeFile])\n\n  if (!file) {\n    return null\n  }\n\n  const language = file.path.split(\".\").pop() ?? \"tsx\"\n\n  return (\n    <div className=\"mr-[14px] flex overflow-hidden rounded-xl border bg-code text-code-foreground group-data-[view=preview]/block-view-wrapper:hidden md:h-(--height)\">\n      <div className=\"w-72\">\n        <BlockViewerFileTree />\n      </div>\n      <figure\n        data-rehype-pretty-code-figure=\"\"\n        className=\"mx-0! mt-0 flex min-w-0 flex-1 flex-col rounded-xl border-none\"\n      >\n        <figcaption\n          className=\"flex h-12 shrink-0 items-center gap-2 border-b px-4 py-2 text-code-foreground [&_svg]:size-4 [&_svg]:text-code-foreground [&_svg]:opacity-70\"\n          data-language={language}\n        >\n          {getIconForLanguageExtension(language)}\n          {file.target}\n          <div className=\"ml-auto flex items-center gap-2\">\n            <BlockCopyCodeButton />\n          </div>\n        </figcaption>\n        <div\n          key={file?.path}\n          dangerouslySetInnerHTML={{ __html: file?.highlightedContent ?? \"\" }}\n          className=\"no-scrollbar overflow-y-auto\"\n        />\n      </figure>\n    </div>\n  )\n}\n\nexport function BlockViewerFileTree() {\n  const { tree } = useBlockViewer()\n\n  if (!tree) {\n    return null\n  }\n\n  return (\n    <SidebarProvider className=\"flex min-h-full! flex-col border-r\">\n      <Sidebar collapsible=\"none\" className=\"w-full flex-1\">\n        <SidebarGroupLabel className=\"h-12 rounded-none border-b px-4 text-sm\">\n          Files\n        </SidebarGroupLabel>\n        <SidebarGroup className=\"p-0\">\n          <SidebarGroupContent>\n            <SidebarMenu className=\"translate-x-0 gap-1.5\">\n              {tree.map((file, index) => (\n                <Tree key={index} item={file} index={1} />\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n\nfunction Tree({ item, index }: { item: FileTree; index: number }) {\n  const { activeFile, setActiveFile } = useBlockViewer()\n\n  if (!item.children) {\n    return (\n      <SidebarMenuItem>\n        <SidebarMenuButton\n          isActive={item.path === activeFile}\n          onClick={() => item.path && setActiveFile(item.path)}\n          className=\"rounded-none pl-(--index) whitespace-nowrap hover:bg-muted-foreground/15 focus:bg-muted-foreground/15 focus-visible:bg-muted-foreground/15 active:bg-muted-foreground/15 data-[active=true]:bg-muted-foreground/15\"\n          data-index={index}\n          style={\n            {\n              \"--index\": `${index * (index === 2 ? 1.2 : 1.3)}rem`,\n            } as React.CSSProperties\n          }\n        >\n          <ChevronRight className=\"invisible\" />\n          <File className=\"h-4 w-4\" />\n          {item.name}\n        </SidebarMenuButton>\n      </SidebarMenuItem>\n    )\n  }\n\n  return (\n    <SidebarMenuItem>\n      <Collapsible\n        className=\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\"\n        defaultOpen\n      >\n        <CollapsibleTrigger asChild>\n          <SidebarMenuButton\n            className=\"rounded-none pl-(--index) whitespace-nowrap hover:bg-muted-foreground/15 focus:bg-muted-foreground/15 focus-visible:bg-muted-foreground/15 active:bg-muted-foreground/15 data-[active=true]:bg-muted-foreground/15\"\n            style={\n              {\n                \"--index\": `${index * (index === 1 ? 1 : 1.2)}rem`,\n              } as React.CSSProperties\n            }\n          >\n            <ChevronRight className=\"transition-transform\" />\n            <Folder />\n            {item.name}\n          </SidebarMenuButton>\n        </CollapsibleTrigger>\n        <CollapsibleContent>\n          <SidebarMenuSub className=\"m-0 w-full translate-x-0 border-none p-0\">\n            {item.children.map((subItem, key) => (\n              <Tree key={key} item={subItem} index={index + 1} />\n            ))}\n          </SidebarMenuSub>\n        </CollapsibleContent>\n      </Collapsible>\n    </SidebarMenuItem>\n  )\n}\n\nfunction BlockCopyCodeButton() {\n  const { activeFile, item } = useBlockViewer()\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\n\n  const file = React.useMemo(() => {\n    return item.files?.find((file) => file.target === activeFile)\n  }, [activeFile, item.files])\n\n  const content = file?.content\n\n  if (!content) {\n    return null\n  }\n\n  return (\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n      className=\"size-7\"\n      onClick={() => {\n        copyToClipboard(content)\n        trackEvent({\n          name: \"copy_block_code\",\n          properties: {\n            name: item.name,\n            file: file.path,\n          },\n        })\n      }}\n    >\n      {isCopied ? <Check /> : <Clipboard />}\n    </Button>\n  )\n}\n\nfunction BlockViewer({\n  item,\n  tree,\n  highlightedFiles,\n  children,\n  styleName,\n  ...props\n}: BlockViewerProps) {\n  return (\n    <BlockViewerProvider\n      item={item}\n      tree={tree}\n      highlightedFiles={highlightedFiles}\n      {...props}\n    >\n      <BlockViewerToolbar styleName={styleName} />\n      <BlockViewerView styleName={styleName} />\n      <BlockViewerCode />\n      <BlockViewerMobile>{children}</BlockViewerMobile>\n    </BlockViewerProvider>\n  )\n}\n\nexport { BlockViewer }\n"
  },
  {
    "path": "apps/v4/components/blocks-nav.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport { registryCategories } from \"@/lib/categories\"\nimport { ScrollArea, ScrollBar } from \"@/registry/new-york-v4/ui/scroll-area\"\n\nexport function BlocksNav() {\n  const pathname = usePathname()\n\n  return (\n    <div className=\"relative overflow-hidden\">\n      <ScrollArea className=\"max-w-none\">\n        <div className=\"flex items-center\">\n          <BlocksNavLink\n            category={{ name: \"Featured\", slug: \"\", hidden: false }}\n            isActive={pathname === \"/blocks\"}\n          />\n          {registryCategories.map((category) => (\n            <BlocksNavLink\n              key={category.slug}\n              category={category}\n              isActive={pathname === `/blocks/${category.slug}`}\n            />\n          ))}\n        </div>\n        <ScrollBar orientation=\"horizontal\" className=\"invisible\" />\n      </ScrollArea>\n    </div>\n  )\n}\n\nfunction BlocksNavLink({\n  category,\n  isActive,\n}: {\n  category: (typeof registryCategories)[number]\n  isActive: boolean\n}) {\n  if (category.hidden) {\n    return null\n  }\n\n  return (\n    <Link\n      href={`/blocks/${category.slug}`}\n      key={category.slug}\n      className=\"flex h-7 items-center justify-center px-4 text-center text-base font-medium text-muted-foreground transition-colors hover:text-primary data-[active=true]:text-primary\"\n      data-active={isActive}\n    >\n      {category.name}\n    </Link>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/callout.tsx",
    "content": "import { cn } from \"@/lib/utils\"\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/new-york-v4/ui/alert\"\n\nexport function Callout({\n  title,\n  children,\n  icon,\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof Alert> & {\n  icon?: React.ReactNode\n  variant?: \"default\" | \"info\" | \"warning\"\n}) {\n  return (\n    <Alert\n      data-variant={variant}\n      className={cn(\n        \"mt-6 w-auto rounded-xl border-surface bg-surface text-surface-foreground md:-mx-1 **:[code]:border\",\n        className\n      )}\n      {...props}\n    >\n      {icon}\n      {title && <AlertTitle>{title}</AlertTitle>}\n      <AlertDescription className=\"text-card-foreground/80\">\n        {children}\n      </AlertDescription>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/activity-goal.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { MinusIcon, PlusIcon } from \"lucide-react\"\nimport { Bar, BarChart } from \"recharts\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst data = [\n  {\n    goal: 400,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 239,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 349,\n  },\n]\n\nconst chartConfig = {\n  goal: {\n    label: \"Goal\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nexport function CardsActivityGoal() {\n  const [goal, setGoal] = React.useState(350)\n\n  function onClick(adjustment: number) {\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\n  }\n\n  return (\n    <Card className=\"h-full gap-5\">\n      <CardHeader>\n        <CardTitle>Move Goal</CardTitle>\n        <CardDescription>Set your daily activity goal.</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-1 flex-col\">\n        <div className=\"flex items-center justify-center gap-4\">\n          <Button\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"size-7 rounded-full\"\n            onClick={() => onClick(-10)}\n            disabled={goal <= 200}\n          >\n            <MinusIcon />\n            <span className=\"sr-only\">Decrease</span>\n          </Button>\n          <div className=\"text-center\">\n            <div className=\"text-4xl font-bold tracking-tighter tabular-nums\">\n              {goal}\n            </div>\n            <div className=\"text-xs text-muted-foreground uppercase\">\n              Calories/day\n            </div>\n          </div>\n          <Button\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"size-7 rounded-full\"\n            onClick={() => onClick(10)}\n            disabled={goal >= 400}\n          >\n            <PlusIcon />\n            <span className=\"sr-only\">Increase</span>\n          </Button>\n        </div>\n        <div className=\"flex-1\">\n          <ChartContainer\n            config={chartConfig}\n            className=\"aspect-auto h-full w-full\"\n          >\n            <BarChart data={data}>\n              <Bar dataKey=\"goal\" radius={4} fill=\"var(--color-goal)\" />\n            </BarChart>\n          </ChartContainer>\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\" variant=\"secondary\">\n          Set Goal\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/calendar.tsx",
    "content": "\"use client\"\n\nimport { addDays } from \"date-fns\"\n\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\n\nconst start = new Date(2025, 5, 5)\n\nexport function CardsCalendar() {\n  return (\n    <Card className=\"hidden max-w-[260px] p-0 sm:flex\">\n      <CardContent className=\"p-0\">\n        <Calendar\n          numberOfMonths={1}\n          mode=\"range\"\n          defaultMonth={start}\n          selected={{\n            from: start,\n            to: addDays(start, 8),\n          }}\n        />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/chat.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ArrowUpIcon, CheckIcon, PlusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nconst users = [\n  {\n    name: \"Olivia Martin\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/01.png\",\n  },\n  {\n    name: \"Isabella Nguyen\",\n    email: \"isabella.nguyen@email.com\",\n    avatar: \"/avatars/03.png\",\n  },\n  {\n    name: \"Emma Wilson\",\n    email: \"emma@example.com\",\n    avatar: \"/avatars/05.png\",\n  },\n  {\n    name: \"Jackson Lee\",\n    email: \"lee@example.com\",\n    avatar: \"/avatars/02.png\",\n  },\n  {\n    name: \"William Kim\",\n    email: \"will@email.com\",\n    avatar: \"/avatars/04.png\",\n  },\n] as const\n\ntype User = (typeof users)[number]\n\nexport function CardsChat() {\n  const [open, setOpen] = React.useState(false)\n  const [selectedUsers, setSelectedUsers] = React.useState<User[]>([])\n\n  const [messages, setMessages] = React.useState([\n    {\n      role: \"agent\",\n      content: \"Hi, how can I help you today?\",\n    },\n    {\n      role: \"user\",\n      content: \"Hey, I'm having trouble with my account.\",\n    },\n    {\n      role: \"agent\",\n      content: \"What seems to be the problem?\",\n    },\n    {\n      role: \"user\",\n      content: \"I can't log in.\",\n    },\n  ])\n  const [input, setInput] = React.useState(\"\")\n  const inputLength = input.trim().length\n\n  return (\n    <>\n      <Card>\n        <CardHeader className=\"flex flex-row items-center\">\n          <div className=\"flex items-center gap-4\">\n            <Avatar className=\"border\">\n              <AvatarImage src=\"/avatars/01.png\" alt=\"Image\" />\n              <AvatarFallback>S</AvatarFallback>\n            </Avatar>\n            <div className=\"flex flex-col gap-0.5\">\n              <p className=\"text-sm leading-none font-medium\">Sofia Davis</p>\n              <p className=\"text-xs text-muted-foreground\">m@example.com</p>\n            </div>\n          </div>\n          <TooltipProvider delayDuration={0}>\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <Button\n                  size=\"icon\"\n                  variant=\"secondary\"\n                  className=\"ml-auto size-8 rounded-full\"\n                  onClick={() => setOpen(true)}\n                >\n                  <PlusIcon />\n                  <span className=\"sr-only\">New message</span>\n                </Button>\n              </TooltipTrigger>\n              <TooltipContent sideOffset={10}>New message</TooltipContent>\n            </Tooltip>\n          </TooltipProvider>\n        </CardHeader>\n        <CardContent>\n          <div className=\"flex flex-col gap-4\">\n            {messages.map((message, index) => (\n              <div\n                key={index}\n                className={cn(\n                  \"flex w-max max-w-[75%] flex-col gap-2 rounded-lg px-3 py-2 text-sm\",\n                  message.role === \"user\"\n                    ? \"ml-auto bg-primary text-primary-foreground\"\n                    : \"bg-muted\"\n                )}\n              >\n                {message.content}\n              </div>\n            ))}\n          </div>\n        </CardContent>\n        <CardFooter>\n          <form\n            onSubmit={(event) => {\n              event.preventDefault()\n              if (inputLength === 0) return\n              setMessages([\n                ...messages,\n                {\n                  role: \"user\",\n                  content: input,\n                },\n              ])\n              setInput(\"\")\n            }}\n            className=\"relative w-full\"\n          >\n            <InputGroup>\n              <InputGroupInput\n                id=\"message\"\n                placeholder=\"Type your message...\"\n                autoComplete=\"off\"\n                value={input}\n                onChange={(event) => setInput(event.target.value)}\n              />\n              <InputGroupAddon align=\"inline-end\">\n                <InputGroupButton\n                  type=\"submit\"\n                  size=\"icon-xs\"\n                  className=\"rounded-full\"\n                >\n                  <ArrowUpIcon />\n                  <span className=\"sr-only\">Send</span>\n                </InputGroupButton>\n              </InputGroupAddon>\n            </InputGroup>\n          </form>\n        </CardFooter>\n      </Card>\n      <Dialog open={open} onOpenChange={setOpen}>\n        <DialogContent className=\"gap-0 p-0 outline-none\">\n          <DialogHeader className=\"px-4 pt-5 pb-4\">\n            <DialogTitle>New message</DialogTitle>\n            <DialogDescription>\n              Invite a user to this thread. This will create a new group\n              message.\n            </DialogDescription>\n          </DialogHeader>\n          <Command className=\"overflow-hidden rounded-t-none border-t bg-transparent\">\n            <CommandInput placeholder=\"Search user...\" />\n            <CommandList>\n              <CommandEmpty>No users found.</CommandEmpty>\n              <CommandGroup>\n                {users.map((user) => (\n                  <CommandItem\n                    key={user.email}\n                    data-active={selectedUsers.includes(user)}\n                    className=\"data-[active=true]:opacity-50\"\n                    onSelect={() => {\n                      if (selectedUsers.includes(user)) {\n                        return setSelectedUsers(\n                          selectedUsers.filter(\n                            (selectedUser) => selectedUser !== user\n                          )\n                        )\n                      }\n\n                      return setSelectedUsers(\n                        [...users].filter((u) =>\n                          [...selectedUsers, user].includes(u)\n                        )\n                      )\n                    }}\n                  >\n                    <Avatar className=\"border\">\n                      <AvatarImage src={user.avatar} alt=\"Image\" />\n                      <AvatarFallback>{user.name[0]}</AvatarFallback>\n                    </Avatar>\n                    <div className=\"ml-2\">\n                      <p className=\"text-sm leading-none font-medium\">\n                        {user.name}\n                      </p>\n                      <p className=\"text-sm text-muted-foreground\">\n                        {user.email}\n                      </p>\n                    </div>\n                    {selectedUsers.includes(user) ? (\n                      <CheckIcon className=\"ml-auto flex size-4 text-primary\" />\n                    ) : null}\n                  </CommandItem>\n                ))}\n              </CommandGroup>\n            </CommandList>\n          </Command>\n          <DialogFooter className=\"flex items-center border-t p-4 sm:justify-between\">\n            {selectedUsers.length > 0 ? (\n              <div className=\"flex -space-x-2 overflow-hidden\">\n                {selectedUsers.map((user) => (\n                  <Avatar key={user.email} className=\"inline-block border\">\n                    <AvatarImage src={user.avatar} />\n                    <AvatarFallback>{user.name[0]}</AvatarFallback>\n                  </Avatar>\n                ))}\n              </div>\n            ) : (\n              <p className=\"text-sm text-muted-foreground\">\n                Select users to add to this thread.\n              </p>\n            )}\n            <Button\n              disabled={selectedUsers.length < 2}\n              size=\"sm\"\n              onClick={() => {\n                setOpen(false)\n              }}\n            >\n              Continue\n            </Button>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/cookie-settings.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nexport function CardsCookieSettings() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Cookie Settings</CardTitle>\n        <CardDescription>Manage your cookie settings here.</CardDescription>\n      </CardHeader>\n      <CardContent className=\"grid gap-6\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"necessary\">Strictly Necessary</FieldLabel>\n            <FieldDescription>\n              These cookies are essential in order to use the website and use\n              its features.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"necessary\" defaultChecked aria-label=\"Necessary\" />\n        </Field>\n        <Field>\n          <Button variant=\"outline\">Save preferences</Button>\n        </Field>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/create-account.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function CardsCreateAccount() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle className=\"text-2xl\">Create an account</CardTitle>\n        <CardDescription>\n          Enter your email below to create your account\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field className=\"grid grid-cols-2 gap-6\">\n            <Button variant=\"outline\">\n              <svg viewBox=\"0 0 438.549 438.549\">\n                <path\n                  fill=\"currentColor\"\n                  d=\"M409.132 114.573c-19.608-33.596-46.205-60.194-79.798-79.8-33.598-19.607-70.277-29.408-110.063-29.408-39.781 0-76.472 9.804-110.063 29.408-33.596 19.605-60.192 46.204-79.8 79.8C9.803 148.168 0 184.854 0 224.63c0 47.78 13.94 90.745 41.827 128.906 27.884 38.164 63.906 64.572 108.063 79.227 5.14.954 8.945.283 11.419-1.996 2.475-2.282 3.711-5.14 3.711-8.562 0-.571-.049-5.708-.144-15.417a2549.81 2549.81 0 01-.144-25.406l-6.567 1.136c-4.187.767-9.469 1.092-15.846 1-6.374-.089-12.991-.757-19.842-1.999-6.854-1.231-13.229-4.086-19.13-8.559-5.898-4.473-10.085-10.328-12.56-17.556l-2.855-6.57c-1.903-4.374-4.899-9.233-8.992-14.559-4.093-5.331-8.232-8.945-12.419-10.848l-1.999-1.431c-1.332-.951-2.568-2.098-3.711-3.429-1.142-1.331-1.997-2.663-2.568-3.997-.572-1.335-.098-2.43 1.427-3.289 1.525-.859 4.281-1.276 8.28-1.276l5.708.853c3.807.763 8.516 3.042 14.133 6.851 5.614 3.806 10.229 8.754 13.846 14.842 4.38 7.806 9.657 13.754 15.846 17.847 6.184 4.093 12.419 6.136 18.699 6.136 6.28 0 11.704-.476 16.274-1.423 4.565-.952 8.848-2.383 12.847-4.285 1.713-12.758 6.377-22.559 13.988-29.41-10.848-1.14-20.601-2.857-29.264-5.14-8.658-2.286-17.605-5.996-26.835-11.14-9.235-5.137-16.896-11.516-22.985-19.126-6.09-7.614-11.088-17.61-14.987-29.979-3.901-12.374-5.852-26.648-5.852-42.826 0-23.035 7.52-42.637 22.557-58.817-7.044-17.318-6.379-36.732 1.997-58.24 5.52-1.715 13.706-.428 24.554 3.853 10.85 4.283 18.794 7.952 23.84 10.994 5.046 3.041 9.089 5.618 12.135 7.708 17.705-4.947 35.976-7.421 54.818-7.421s37.117 2.474 54.823 7.421l10.849-6.849c7.419-4.57 16.18-8.758 26.262-12.565 10.088-3.805 17.802-4.853 23.134-3.138 8.562 21.509 9.325 40.922 2.279 58.24 15.036 16.18 22.559 35.787 22.559 58.817 0 16.178-1.958 30.497-5.853 42.966-3.9 12.471-8.941 22.457-15.125 29.979-6.191 7.521-13.901 13.85-23.131 18.986-9.232 5.14-18.182 8.85-26.84 11.136-8.662 2.286-18.415 4.004-29.263 5.146 9.894 8.562 14.842 22.077 14.842 40.539v60.237c0 3.422 1.19 6.279 3.572 8.562 2.379 2.279 6.136 2.95 11.276 1.995 44.163-14.653 80.185-41.062 108.068-79.226 27.88-38.161 41.825-81.126 41.825-128.906-.01-39.771-9.818-76.454-29.414-110.049z\"\n                ></path>\n              </svg>\n              GitHub\n            </Button>\n            <Button variant=\"outline\">\n              <svg role=\"img\" viewBox=\"0 0 24 24\">\n                <path\n                  fill=\"currentColor\"\n                  d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                />\n              </svg>\n              Google\n            </Button>\n          </Field>\n          <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n            Or continue with\n          </FieldSeparator>\n          <Field>\n            <FieldLabel htmlFor=\"email-create-account\">Email</FieldLabel>\n            <Input\n              id=\"email-create-account\"\n              type=\"email\"\n              placeholder=\"m@example.com\"\n            />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"password-create-account\">Password</FieldLabel>\n            <Input id=\"password-create-account\" type=\"password\" />\n          </Field>\n          <Field>\n            <Button>Create Account</Button>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/exercise-minutes.tsx",
    "content": "\"use client\"\n\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst data = [\n  {\n    average: 400,\n    today: 240,\n    day: \"Monday\",\n  },\n  {\n    average: 300,\n    today: 139,\n    day: \"Tuesday\",\n  },\n  {\n    average: 200,\n    today: 980,\n    day: \"Wednesday\",\n  },\n  {\n    average: 278,\n    today: 390,\n    day: \"Thursday\",\n  },\n  {\n    average: 189,\n    today: 480,\n    day: \"Friday\",\n  },\n  {\n    average: 239,\n    today: 380,\n    day: \"Saturday\",\n  },\n  {\n    average: 349,\n    today: 430,\n    day: \"Sunday\",\n  },\n]\n\nconst chartConfig = {\n  today: {\n    label: \"Today\",\n    color: \"var(--primary)\",\n  },\n  average: {\n    label: \"Average\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nexport function CardsExerciseMinutes() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Exercise Minutes</CardTitle>\n        <CardDescription>\n          Your exercise minutes are ahead of where you normally are.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig} className=\"w-full md:h-[200px]\">\n          <LineChart\n            accessibilityLayer\n            data={data}\n            margin={{\n              top: 5,\n              right: 10,\n              left: 16,\n              bottom: 0,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"day\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <Line\n              type=\"monotone\"\n              dataKey=\"today\"\n              strokeWidth={2}\n              stroke=\"var(--color-today)\"\n              dot={{\n                fill: \"var(--color-today)\",\n              }}\n              activeDot={{\n                r: 5,\n              }}\n            />\n            <Line\n              type=\"monotone\"\n              strokeWidth={2}\n              dataKey=\"average\"\n              stroke=\"var(--color-average)\"\n              strokeOpacity={0.5}\n              dot={{\n                fill: \"var(--color-average)\",\n                opacity: 0.5,\n              }}\n              activeDot={{\n                r: 5,\n              }}\n            />\n            <ChartTooltip content={<ChartTooltipContent />} />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/forms.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nconst plans = [\n  {\n    id: \"starter\",\n    name: \"Starter Plan\",\n    description: \"For small businesses.\",\n    price: \"$10\",\n  },\n  {\n    id: \"pro\",\n    name: \"Pro Plan\",\n    description: \"More features and storage.\",\n    price: \"$20\",\n  },\n] as const\n\nexport function CardsForms() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle className=\"text-lg\">Upgrade your Subscription</CardTitle>\n        <CardDescription className=\"text-balance\">\n          You are currently on the free plan. Upgrade to the pro plan to get\n          access to all features.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <FieldGroup className=\"grid grid-cols-2\">\n              <Field>\n                <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n                <Input id=\"name\" placeholder=\"Max Leiter\" />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input id=\"email\" placeholder=\"mail@acme.com\" />\n              </Field>\n            </FieldGroup>\n            <FieldGroup className=\"grid grid-cols-2 gap-3 md:grid-cols-[1fr_80px_60px]\">\n              <Field>\n                <FieldLabel htmlFor=\"card-number\">Card Number</FieldLabel>\n                <Input\n                  id=\"card-number\"\n                  placeholder=\"1234 1234 1234 1234\"\n                  className=\"col-span-2 md:col-span-1\"\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"card-number-expiry\">\n                  Expiry Date\n                </FieldLabel>\n                <Input id=\"card-number-expiry\" placeholder=\"MM/YY\" />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"card-number-cvc\">CVC</FieldLabel>\n                <Input id=\"card-number-cvc\" placeholder=\"CVC\" />\n              </Field>\n            </FieldGroup>\n            <FieldSet>\n              <FieldLegend>Plan</FieldLegend>\n              <FieldDescription>\n                Select the plan that best fits your needs.\n              </FieldDescription>\n              <RadioGroup\n                defaultValue=\"starter\"\n                className=\"grid grid-cols-2 gap-2\"\n              >\n                {plans.map((plan) => (\n                  <FieldLabel key={plan.id}>\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldTitle>{plan.name}</FieldTitle>\n                        <FieldDescription className=\"text-xs\">\n                          {plan.description}\n                        </FieldDescription>\n                      </FieldContent>\n                      <RadioGroupItem value={plan.id} id={plan.name} />\n                    </Field>\n                  </FieldLabel>\n                ))}\n              </RadioGroup>\n            </FieldSet>\n            <Field>\n              <FieldLabel htmlFor=\"notes\">Notes</FieldLabel>\n              <Textarea id=\"notes\" placeholder=\"Enter notes\" />\n            </Field>\n            <Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"terms\" />\n                <FieldLabel htmlFor=\"terms\" className=\"font-normal\">\n                  I agree to the terms and conditions\n                </FieldLabel>\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Checkbox id=\"newsletter\" defaultChecked />\n                <FieldLabel htmlFor=\"newsletter\" className=\"font-normal\">\n                  Allow us to send you emails\n                </FieldLabel>\n              </Field>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Button variant=\"outline\" size=\"sm\">\n                Cancel\n              </Button>\n              <Button size=\"sm\">Upgrade Plan</Button>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/index.tsx",
    "content": "import { CardsActivityGoal } from \"@/components/cards/activity-goal\"\nimport { CardsCalendar } from \"@/components/cards/calendar\"\nimport { CardsChat } from \"@/components/cards/chat\"\nimport { CardsCookieSettings } from \"@/components/cards/cookie-settings\"\nimport { CardsCreateAccount } from \"@/components/cards/create-account\"\nimport { CardsExerciseMinutes } from \"@/components/cards/exercise-minutes\"\nimport { CardsForms } from \"@/components/cards/forms\"\nimport { CardsPayments } from \"@/components/cards/payments\"\nimport { CardsReportIssue } from \"@/components/cards/report-issue\"\nimport { CardsShare } from \"@/components/cards/share\"\nimport { CardsStats } from \"@/components/cards/stats\"\nimport { CardsTeamMembers } from \"@/components/cards/team-members\"\n\nexport function CardsDemo() {\n  return (\n    <div className=\"md:grids-col-2 grid **:data-[slot=card]:shadow-none md:gap-4 lg:grid-cols-10 xl:grid-cols-11\">\n      <div className=\"grid gap-4 lg:col-span-4 xl:col-span-6\">\n        <CardsStats />\n        <div className=\"grid gap-1 sm:grid-cols-[auto_1fr] md:hidden\">\n          <CardsCalendar />\n          <div className=\"pt-3 sm:pt-0 sm:pl-2 xl:pl-4\">\n            <CardsActivityGoal />\n          </div>\n          <div className=\"pt-3 sm:col-span-2 xl:pt-4\">\n            <CardsExerciseMinutes />\n          </div>\n        </div>\n        <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2\">\n          <div className=\"flex flex-col gap-4\">\n            <CardsForms />\n            <CardsTeamMembers />\n            <CardsCookieSettings />\n          </div>\n          <div className=\"flex flex-col gap-4\">\n            <CardsCreateAccount />\n            <CardsChat />\n            <div className=\"hidden xl:block\">\n              <CardsReportIssue />\n            </div>\n          </div>\n        </div>\n      </div>\n      <div className=\"flex flex-col gap-4 lg:col-span-6 xl:col-span-5\">\n        <div className=\"hidden gap-1 sm:grid-cols-[auto_1fr] md:grid\">\n          <CardsCalendar />\n          <div className=\"pt-3 sm:pt-0 sm:pl-2 xl:pl-3\">\n            <CardsActivityGoal />\n          </div>\n          <div className=\"pt-3 sm:col-span-2 xl:pt-3\">\n            <CardsExerciseMinutes />\n          </div>\n        </div>\n        <div className=\"hidden md:block\">\n          <CardsPayments />\n        </div>\n        <CardsShare />\n        <div className=\"xl:hidden\">\n          <CardsReportIssue />\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/payment-method.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nconst plans = [\n  {\n    id: \"starter\",\n    name: \"Starter Plan\",\n    description: \"Perfect for small businesses.\",\n    price: \"$10\",\n  },\n  {\n    id: \"pro\",\n    name: \"Pro Plan\",\n    description: \"Advanced features with more storage.\",\n    price: \"$20\",\n  },\n] as const\n\nexport function CardsPaymentMethod() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Payment Method</CardTitle>\n        <CardDescription>\n          Add a new payment method to your account.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-6\">\n        <div className=\"flex flex-col gap-3\">\n          <Label htmlFor=\"name\">Name</Label>\n          <Input id=\"name\" placeholder=\"First Last\" />\n        </div>\n        <fieldset className=\"flex flex-col gap-3\">\n          <legend className=\"text-sm font-medium\">Plan</legend>\n          <p className=\"text-sm text-muted-foreground\">\n            Select the plan that best fits your needs.\n          </p>\n          <RadioGroup defaultValue=\"starter\" className=\"grid gap-3\">\n            {plans.map((plan) => (\n              <Label\n                className=\"flex items-start gap-3 rounded-lg border p-3 has-[[data-state=checked]]:border-ring has-[[data-state=checked]]:bg-primary/5\"\n                key={plan.id}\n              >\n                <RadioGroupItem\n                  value={plan.id}\n                  id={plan.name}\n                  className=\"data-[state=checked]:border-primary\"\n                />\n                <div className=\"grid gap-1 font-normal\">\n                  <div className=\"font-medium\">{plan.name}</div>\n                  <div className=\"pr-2 text-xs leading-snug text-balance text-muted-foreground\">\n                    {plan.description}\n                  </div>\n                </div>\n              </Label>\n            ))}\n          </RadioGroup>\n        </fieldset>\n        <div className=\"flex flex-col gap-3\">\n          <Label htmlFor=\"number\">Card number</Label>\n          <Input id=\"number\" placeholder=\"\" />\n        </div>\n        <div className=\"grid grid-cols-3 gap-4\">\n          <div className=\"flex flex-col gap-3\">\n            <Label htmlFor=\"month\">Expires</Label>\n            <Select>\n              <SelectTrigger id=\"month\" aria-label=\"Month\" className=\"w-full\">\n                <SelectValue placeholder=\"Month\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"1\">January</SelectItem>\n                <SelectItem value=\"2\">February</SelectItem>\n                <SelectItem value=\"3\">March</SelectItem>\n                <SelectItem value=\"4\">April</SelectItem>\n                <SelectItem value=\"5\">May</SelectItem>\n                <SelectItem value=\"6\">June</SelectItem>\n                <SelectItem value=\"7\">July</SelectItem>\n                <SelectItem value=\"8\">August</SelectItem>\n                <SelectItem value=\"9\">September</SelectItem>\n                <SelectItem value=\"10\">October</SelectItem>\n                <SelectItem value=\"11\">November</SelectItem>\n                <SelectItem value=\"12\">December</SelectItem>\n              </SelectContent>\n            </Select>\n          </div>\n          <div className=\"flex flex-col gap-3\">\n            <Label htmlFor=\"year\">Year</Label>\n            <Select>\n              <SelectTrigger id=\"year\" aria-label=\"Year\" className=\"w-full\">\n                <SelectValue placeholder=\"Year\" />\n              </SelectTrigger>\n              <SelectContent>\n                {Array.from({ length: 10 }, (_, i) => (\n                  <SelectItem key={i} value={`${new Date().getFullYear() + i}`}>\n                    {new Date().getFullYear() + i}\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n          </div>\n          <div className=\"flex flex-col gap-3\">\n            <Label htmlFor=\"cvc\">CVC</Label>\n            <Input id=\"cvc\" placeholder=\"CVC\" />\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">Continue</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/payments.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { MoreHorizontalIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\n\nconst data: Payment[] = [\n  {\n    id: \"m5gr84i9\",\n    amount: 316,\n    status: \"success\",\n    email: \"ken99@example.com\",\n  },\n  {\n    id: \"3u1reuv4\",\n    amount: 242,\n    status: \"success\",\n    email: \"Abe45@example.com\",\n  },\n  {\n    id: \"derv1ws0\",\n    amount: 837,\n    status: \"processing\",\n    email: \"Monserrat44@example.com\",\n  },\n  {\n    id: \"bhqecj4p\",\n    amount: 721,\n    status: \"failed\",\n    email: \"carmella@example.com\",\n  },\n  {\n    id: \"k9f2m3n4\",\n    amount: 450,\n    status: \"pending\",\n    email: \"jason78@example.com\",\n  },\n  {\n    id: \"p5q6r7s8\",\n    amount: 1280,\n    status: \"success\",\n    email: \"sarah23@example.com\",\n  },\n]\n\nexport type Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <Checkbox\n        checked={\n          table.getIsAllPageRowsSelected() ||\n          (table.getIsSomePageRowsSelected() && \"indeterminate\")\n        }\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n        aria-label=\"Select all\"\n      />\n    ),\n    cell: ({ row }) => (\n      <Checkbox\n        checked={row.getIsSelected()}\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\n        aria-label=\"Select row\"\n      />\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <div className=\"capitalize\">{row.getValue(\"status\")}</div>\n    ),\n  },\n  {\n    accessorKey: \"email\",\n    header: \"Email\",\n    cell: ({ row }) => <div className=\"lowercase\">{row.getValue(\"email\")}</div>,\n  },\n  {\n    accessorKey: \"amount\",\n    header: () => <div className=\"text-right\">Amount</div>,\n    cell: ({ row }) => {\n      const amount = parseFloat(row.getValue(\"amount\"))\n\n      // Format the amount as a dollar amount\n      const formatted = new Intl.NumberFormat(\"en-US\", {\n        style: \"currency\",\n        currency: \"USD\",\n      }).format(amount)\n\n      return <div className=\"text-right font-medium\">{formatted}</div>\n    },\n  },\n  {\n    id: \"actions\",\n    enableHiding: false,\n    cell: ({ row }) => {\n      const payment = row.original\n\n      return (\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"ghost\" className=\"size-8 p-0\">\n              <span className=\"sr-only\">Open menu</span>\n              <MoreHorizontalIcon />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\">\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\n            <DropdownMenuItem\n              onClick={() => navigator.clipboard.writeText(payment.id)}\n            >\n              Copy payment ID\n            </DropdownMenuItem>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>View customer</DropdownMenuItem>\n            <DropdownMenuItem>View payment details</DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      )\n    },\n  },\n]\n\nexport function CardsPayments() {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [rowSelection, setRowSelection] = React.useState({})\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  })\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle className=\"text-xl\">Payments</CardTitle>\n        <CardDescription>Manage your payments.</CardDescription>\n        <CardAction>\n          <Button variant=\"secondary\" size=\"sm\" className=\"shadow-none\">\n            Add Payment\n          </Button>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"overflow-hidden rounded-md border\">\n          <Table>\n            <TableHeader>\n              {table.getHeaderGroups().map((headerGroup) => (\n                <TableRow key={headerGroup.id}>\n                  {headerGroup.headers.map((header) => {\n                    return (\n                      <TableHead\n                        key={header.id}\n                        className=\"data-[name=actions]:w-10 data-[name=amount]:w-24 data-[name=select]:w-10 data-[name=status]:w-24 [&:has([role=checkbox])]:pl-3\"\n                        data-name={header.id}\n                      >\n                        {header.isPlaceholder\n                          ? null\n                          : flexRender(\n                              header.column.columnDef.header,\n                              header.getContext()\n                            )}\n                      </TableHead>\n                    )\n                  })}\n                </TableRow>\n              ))}\n            </TableHeader>\n            <TableBody>\n              {table.getRowModel().rows?.length ? (\n                table.getRowModel().rows.map((row) => (\n                  <TableRow\n                    key={row.id}\n                    data-state={row.getIsSelected() && \"selected\"}\n                  >\n                    {row.getVisibleCells().map((cell) => (\n                      <TableCell\n                        key={cell.id}\n                        className=\"data-[name=actions]:w-10 data-[name=amount]:w-24 data-[name=select]:w-10 data-[name=status]:w-24 [&:has([role=checkbox])]:pl-3\"\n                        data-name={cell.column.id}\n                      >\n                        {flexRender(\n                          cell.column.columnDef.cell,\n                          cell.getContext()\n                        )}\n                      </TableCell>\n                    ))}\n                  </TableRow>\n                ))\n              ) : (\n                <TableRow>\n                  <TableCell\n                    colSpan={columns.length}\n                    className=\"h-24 text-center\"\n                  >\n                    No results.\n                  </TableCell>\n                </TableRow>\n              )}\n            </TableBody>\n          </Table>\n        </div>\n        <div className=\"flex items-center justify-end gap-2\">\n          <div className=\"flex-1 text-sm text-muted-foreground\">\n            {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n            {table.getFilteredRowModel().rows.length} row(s) selected.\n          </div>\n          <div className=\"flex gap-2\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={() => table.previousPage()}\n              disabled={!table.getCanPreviousPage()}\n            >\n              Previous\n            </Button>\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={() => table.nextPage()}\n              disabled={!table.getCanNextPage()}\n            >\n              Next\n            </Button>\n          </div>\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/report-issue.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport function CardsReportIssue() {\n  const id = React.useId()\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Report an issue</CardTitle>\n        <CardDescription>\n          What area are you having problems with?\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <FieldGroup className=\"grid gap-4 sm:grid-cols-2\">\n            <Field>\n              <FieldLabel htmlFor={`area-${id}`}>Area</FieldLabel>\n              <Select defaultValue=\"billing\">\n                <SelectTrigger\n                  id={`area-${id}`}\n                  aria-label=\"Area\"\n                  className=\"w-full\"\n                >\n                  <SelectValue placeholder=\"Select\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"team\">Team</SelectItem>\n                  <SelectItem value=\"billing\">Billing</SelectItem>\n                  <SelectItem value=\"account\">Account</SelectItem>\n                  <SelectItem value=\"deployments\">Deployments</SelectItem>\n                  <SelectItem value=\"support\">Support</SelectItem>\n                </SelectContent>\n              </Select>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor={`security-level-${id}`}>\n                Security Level\n              </FieldLabel>\n              <Select defaultValue=\"2\">\n                <SelectTrigger\n                  id={`security-level-${id}`}\n                  className=\"w-full [&_span]:block! [&_span]:truncate\"\n                  aria-label=\"Security Level\"\n                >\n                  <SelectValue placeholder=\"Select level\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"1\">Severity 1 (Highest)</SelectItem>\n                  <SelectItem value=\"2\">Severity 2</SelectItem>\n                  <SelectItem value=\"3\">Severity 3</SelectItem>\n                  <SelectItem value=\"4\">Severity 4 (Lowest)</SelectItem>\n                </SelectContent>\n              </Select>\n            </Field>\n          </FieldGroup>\n          <Field>\n            <FieldLabel htmlFor={`subject-${id}`}>Subject</FieldLabel>\n            <Input id={`subject-${id}`} placeholder=\"I need help with...\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor={`description-${id}`}>Description</FieldLabel>\n            <Textarea\n              id={`description-${id}`}\n              placeholder=\"Please include all information relevant to your issue.\"\n              className=\"min-h-24\"\n            />\n          </Field>\n          <Field orientation=\"horizontal\" className=\"justify-end\">\n            <Button variant=\"ghost\" size=\"sm\">\n              Cancel\n            </Button>\n            <Button size=\"sm\">Submit</Button>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/share.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nconst people = [\n  {\n    name: \"Olivia Martin\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/03.png\",\n  },\n  {\n    name: \"Isabella Nguyen\",\n    email: \"b@example.com\",\n    avatar: \"/avatars/04.png\",\n  },\n  {\n    name: \"Sofia Davis\",\n    email: \"p@example.com\",\n    avatar: \"/avatars/05.png\",\n  },\n  {\n    name: \"Ethan Thompson\",\n    email: \"e@example.com\",\n    avatar: \"/avatars/01.png\",\n  },\n]\nexport function CardsShare() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Share this document</CardTitle>\n        <CardDescription>\n          Anyone with the link can view this document.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <div className=\"flex items-center gap-2\">\n          <Label htmlFor=\"link\" className=\"sr-only\">\n            Link\n          </Label>\n          <Input\n            id=\"link\"\n            value=\"http://example.com/link/to/document\"\n            className=\"h-8\"\n            readOnly\n          />\n          <Button size=\"sm\" variant=\"outline\" className=\"shadow-none\">\n            Copy Link\n          </Button>\n        </div>\n        <Separator className=\"my-4\" />\n        <div className=\"flex flex-col gap-4\">\n          <div className=\"text-sm font-medium\">People with access</div>\n          <ItemGroup>\n            {people.map((person) => (\n              <Item key={person.email} className=\"px-0 py-2\">\n                <Avatar>\n                  <AvatarImage src={person.avatar} alt=\"Image\" />\n                  <AvatarFallback>{person.name.charAt(0)}</AvatarFallback>\n                </Avatar>\n                <ItemContent>\n                  <ItemTitle>{person.name}</ItemTitle>\n                  <ItemDescription>{person.email}</ItemDescription>\n                </ItemContent>\n                <ItemActions>\n                  <Select defaultValue=\"edit\">\n                    <SelectTrigger\n                      className=\"ml-auto pr-2\"\n                      aria-label=\"Edit\"\n                      size=\"sm\"\n                    >\n                      <SelectValue placeholder=\"Select\" />\n                    </SelectTrigger>\n                    <SelectContent align=\"end\">\n                      <SelectItem value=\"edit\">Can edit</SelectItem>\n                      <SelectItem value=\"view\">Can view</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </ItemActions>\n              </Item>\n            ))}\n          </ItemGroup>\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/stats.tsx",
    "content": "\"use client\"\n\nimport { Area, AreaChart, Line, LineChart } from \"recharts\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst data = [\n  {\n    revenue: 10400,\n    subscription: 40,\n  },\n  {\n    revenue: 14405,\n    subscription: 90,\n  },\n  {\n    revenue: 9400,\n    subscription: 200,\n  },\n  {\n    revenue: 8200,\n    subscription: 278,\n  },\n  {\n    revenue: 7000,\n    subscription: 89,\n  },\n  {\n    revenue: 9600,\n    subscription: 239,\n  },\n  {\n    revenue: 11244,\n    subscription: 78,\n  },\n  {\n    revenue: 26475,\n    subscription: 89,\n  },\n]\n\nconst chartConfig = {\n  revenue: {\n    label: \"Revenue\",\n    color: \"var(--primary)\",\n  },\n  subscription: {\n    label: \"Subscriptions\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nexport function CardsStats() {\n  return (\n    <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2\">\n      <Card>\n        <CardHeader>\n          <CardDescription>Total Revenue</CardDescription>\n          <CardTitle className=\"text-3xl\">$15,231.89</CardTitle>\n          <CardDescription>+20.1% from last month</CardDescription>\n        </CardHeader>\n        <CardContent className=\"pb-0\">\n          <ChartContainer config={chartConfig} className=\"h-[80px] w-full\">\n            <LineChart\n              data={data}\n              margin={{\n                top: 5,\n                right: 10,\n                left: 10,\n                bottom: 0,\n              }}\n            >\n              <Line\n                type=\"monotone\"\n                strokeWidth={2}\n                dataKey=\"revenue\"\n                stroke=\"var(--color-revenue)\"\n                activeDot={{\n                  r: 6,\n                }}\n              />\n            </LineChart>\n          </ChartContainer>\n        </CardContent>\n      </Card>\n      <Card className=\"pb-0 lg:hidden xl:flex\">\n        <CardHeader>\n          <CardDescription>Subscriptions</CardDescription>\n          <CardTitle className=\"text-3xl\">+2,350</CardTitle>\n          <CardDescription>+180.1% from last month</CardDescription>\n          <CardAction>\n            <Button variant=\"ghost\" size=\"sm\">\n              View More\n            </Button>\n          </CardAction>\n        </CardHeader>\n        <CardContent className=\"mt-auto max-h-[124px] flex-1 p-0\">\n          <ChartContainer config={chartConfig} className=\"size-full\">\n            <AreaChart\n              data={data}\n              margin={{\n                left: 0,\n                right: 0,\n              }}\n            >\n              <Area\n                dataKey=\"subscription\"\n                fill=\"var(--color-subscription)\"\n                fillOpacity={0.05}\n                stroke=\"var(--color-subscription)\"\n                strokeWidth={2}\n                type=\"monotone\"\n              />\n            </AreaChart>\n          </ChartContainer>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/cards/team-members.tsx",
    "content": "\"use client\"\n\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nconst teamMembers = [\n  {\n    name: \"Sofia Davis\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/01.png\",\n    role: \"Owner\",\n  },\n  {\n    name: \"Jackson Lee\",\n    email: \"p@example.com\",\n    avatar: \"/avatars/02.png\",\n    role: \"Developer\",\n  },\n  {\n    name: \"Isabella Nguyen\",\n    email: \"i@example.com\",\n    avatar: \"/avatars/03.png\",\n    role: \"Billing\",\n  },\n]\n\nconst roles = [\n  {\n    name: \"Viewer\",\n    description: \"Can view and comment.\",\n  },\n  {\n    name: \"Developer\",\n    description: \"Can view, comment and edit.\",\n  },\n  {\n    name: \"Billing\",\n    description: \"Can view, comment and manage billing.\",\n  },\n  {\n    name: \"Owner\",\n    description: \"Admin-level access to all resources.\",\n  },\n]\n\nexport function CardsTeamMembers() {\n  return (\n    <Card className=\"gap-4\">\n      <CardHeader>\n        <CardTitle>Team Members</CardTitle>\n        <CardDescription>\n          Invite your team members to collaborate.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ItemGroup>\n          {teamMembers.map((member) => (\n            <Item key={member.name} className=\"px-0 py-2\">\n              <Avatar className=\"border\">\n                <AvatarImage src={member.avatar} alt=\"Image\" />\n                <AvatarFallback>{member.name.charAt(0)}</AvatarFallback>\n              </Avatar>\n              <ItemContent>\n                <ItemTitle>{member.name}</ItemTitle>\n                <ItemDescription>{member.email}</ItemDescription>\n              </ItemContent>\n              <ItemActions>\n                <Popover>\n                  <PopoverTrigger asChild>\n                    <Button\n                      variant=\"outline\"\n                      size=\"sm\"\n                      className=\"ml-auto shadow-none\"\n                    >\n                      {member.role} <ChevronDownIcon />\n                    </Button>\n                  </PopoverTrigger>\n                  <PopoverContent className=\"p-0\" align=\"end\">\n                    <Command>\n                      <CommandInput placeholder=\"Select role...\" />\n                      <CommandList>\n                        <CommandEmpty>No roles found.</CommandEmpty>\n                        <CommandGroup>\n                          {roles.map((role) => (\n                            <CommandItem key={role.name}>\n                              <div className=\"flex flex-col\">\n                                <span className=\"text-sm font-medium\">\n                                  {role.name}\n                                </span>\n                                <span className=\"text-sm text-muted-foreground\">\n                                  {role.description}\n                                </span>\n                              </div>\n                            </CommandItem>\n                          ))}\n                        </CommandGroup>\n                      </CommandList>\n                    </Command>\n                  </PopoverContent>\n                </Popover>\n              </ItemActions>\n            </Item>\n          ))}\n        </ItemGroup>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/chart-code-viewer.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\nimport { ChartCopyButton } from \"@/components/chart-copy-button\"\nimport { type Chart } from \"@/components/chart-display\"\nimport { getIconForLanguageExtension } from \"@/components/icons\"\nimport { OpenInV0Button } from \"@/components/open-in-v0-button\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Drawer,\n  DrawerContent,\n  DrawerDescription,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/registry/new-york-v4/ui/sheet\"\n\nexport function ChartCodeViewer({\n  chart,\n  className,\n  children,\n}: {\n  chart: Chart\n} & React.ComponentProps<\"div\">) {\n  const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n\n  const button = (\n    <Button\n      size=\"sm\"\n      variant=\"outline\"\n      className=\"h-6 rounded-[6px] border bg-transparent px-2 text-xs text-foreground shadow-none hover:bg-muted dark:text-foreground\"\n    >\n      View Code\n    </Button>\n  )\n\n  const content = (\n    <div className=\"flex min-h-0 flex-1 flex-col gap-0\">\n      <div className=\"chart-wrapper hidden theme-container sm:block [&_[data-chart]]:mx-auto [&_[data-chart]]:max-h-[35vh] [&>div]:rounded-none [&>div]:border-0 [&>div]:border-b [&>div]:shadow-none\">\n        {children}\n      </div>\n      <div className=\"flex min-w-0 flex-1 flex-col overflow-hidden p-4\">\n        <figure\n          data-rehype-pretty-code-figure=\"\"\n          className=\"mt-0 flex h-auto min-w-0 flex-1 flex-col overflow-hidden\"\n        >\n          <figcaption\n            className=\"flex h-12 shrink-0 items-center gap-2 border-b py-2 pr-2 pl-4 text-foreground [&>svg]:size-4 [&>svg]:text-foreground [&>svg]:opacity-70\"\n            data-language=\"tsx\"\n          >\n            {getIconForLanguageExtension(\"tsx\")}\n            {chart.name}\n            <div className=\"ml-auto flex items-center gap-2\">\n              <ChartCopyButton\n                event=\"copy_chart_code\"\n                name={chart.name}\n                code={chart.files?.[0]?.content ?? \"\"}\n              />\n              <OpenInV0Button name={chart.name} className=\"rounded-sm\" />\n            </div>\n          </figcaption>\n          <div\n            dangerouslySetInnerHTML={{\n              __html: chart.highlightedCode,\n            }}\n            className=\"no-scrollbar overflow-y-auto\"\n          />\n        </figure>\n      </div>\n    </div>\n  )\n\n  if (!isDesktop) {\n    return (\n      <Drawer>\n        <DrawerTrigger asChild>{button}</DrawerTrigger>\n        <DrawerContent\n          className={cn(\n            \"flex max-h-[80vh] flex-col sm:max-h-[90vh] [&>div.bg-muted]:shrink-0\",\n            className\n          )}\n        >\n          <DrawerHeader className=\"sr-only\">\n            <DrawerTitle>Code</DrawerTitle>\n            <DrawerDescription>View the code for the chart.</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"flex h-full flex-col overflow-auto\">{content}</div>\n        </DrawerContent>\n      </Drawer>\n    )\n  }\n\n  return (\n    <Sheet>\n      <SheetTrigger asChild>{button}</SheetTrigger>\n      <SheetContent\n        side=\"right\"\n        className={cn(\n          \"flex flex-col gap-0 border-l-0 p-0 sm:max-w-sm md:w-[700px] md:max-w-[700px] dark:border-l\",\n          className\n        )}\n      >\n        <SheetHeader className=\"sr-only\">\n          <SheetTitle>Code</SheetTitle>\n          <SheetDescription>View the code for the chart.</SheetDescription>\n        </SheetHeader>\n        {content}\n      </SheetContent>\n    </Sheet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/chart-copy-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconCheck, IconCopy } from \"@tabler/icons-react\"\n\nimport { trackEvent, type Event } from \"@/lib/events\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport function ChartCopyButton({\n  event,\n  name,\n  code,\n  className,\n  ...props\n}: {\n  event: Event[\"name\"]\n  name: string\n  code: string\n} & React.ComponentProps<typeof Button>) {\n  const [hasCopied, setHasCopied] = React.useState(false)\n\n  React.useEffect(() => {\n    setTimeout(() => {\n      setHasCopied(false)\n    }, 2000)\n  }, [hasCopied])\n\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <Button\n          size=\"icon\"\n          variant=\"ghost\"\n          className={cn(\n            \"[&_svg]-h-3.5 h-7 w-7 rounded-[6px] [&_svg]:w-3.5\",\n            className\n          )}\n          onClick={() => {\n            navigator.clipboard.writeText(code)\n            trackEvent({\n              name: event,\n              properties: {\n                name,\n              },\n            })\n            setHasCopied(true)\n          }}\n          {...props}\n        >\n          <span className=\"sr-only\">Copy</span>\n          {hasCopied ? <IconCheck /> : <IconCopy />}\n        </Button>\n      </TooltipTrigger>\n      <TooltipContent className=\"bg-black text-white\">Copy code</TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/chart-display.tsx",
    "content": "import * as React from \"react\"\nimport { type registryItemSchema } from \"shadcn/schema\"\nimport { type z } from \"zod\"\n\nimport { highlightCode } from \"@/lib/highlight-code\"\nimport { getRegistryItem } from \"@/lib/registry\"\nimport { cn } from \"@/lib/utils\"\nimport { ChartIframe } from \"@/components/chart-iframe\"\nimport { ChartToolbar } from \"@/components/chart-toolbar\"\nimport { type Style } from \"@/registry/_legacy-styles\"\n\nexport type Chart = z.infer<typeof registryItemSchema> & {\n  highlightedCode: string\n}\n\nexport function ChartDisplay({\n  chart,\n  style,\n  className,\n}: {\n  chart: Chart\n  style: string\n} & React.ComponentProps<\"div\">) {\n  return (\n    <div\n      className={cn(\n        \"themes-wrapper group relative flex flex-col overflow-hidden rounded-xl transition-all duration-200 ease-in-out hover:z-30\",\n        className\n      )}\n    >\n      <ChartToolbar\n        chart={chart}\n        className=\"relative z-20 flex justify-end px-3 py-2.5\"\n      />\n      <div className=\"relative z-10 overflow-hidden rounded-xl bg-background\">\n        <ChartIframe\n          src={`/view/${style}/${chart.name}`}\n          height={460}\n          title={chart.name}\n        />\n      </div>\n    </div>\n  )\n}\n\n// Exported for parallel prefetching in page components.\nexport const getCachedRegistryItem = React.cache(\n  async (name: string, styleName: Style[\"name\"]) => {\n    return await getRegistryItem(name, styleName)\n  }\n)\n\nexport const getChartHighlightedCode = React.cache(async (content: string) => {\n  return await highlightCode(content)\n})\n"
  },
  {
    "path": "apps/v4/components/chart-iframe.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport function ChartIframe({\n  src,\n  height,\n  title,\n}: {\n  src: string\n  height: number\n  title: string\n}) {\n  const [loaded, setLoaded] = React.useState(false)\n\n  return (\n    <iframe\n      src={src}\n      className={cn(\n        \"w-full border-none transition-opacity duration-300\",\n        loaded ? \"opacity-100\" : \"opacity-0\"\n      )}\n      height={height}\n      loading=\"lazy\"\n      title={title}\n      onLoad={() => setLoaded(true)}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/chart-toolbar.tsx",
    "content": "\"use client\"\n\nimport {\n  AreaChartIcon,\n  BarChartBigIcon,\n  HexagonIcon,\n  LineChartIcon,\n  MousePointer2Icon,\n  PieChartIcon,\n  RadarIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ChartCodeViewer } from \"@/components/chart-code-viewer\"\nimport { ChartCopyButton } from \"@/components/chart-copy-button\"\nimport { type Chart } from \"@/components/chart-display\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nexport function ChartToolbar({\n  chart,\n  className,\n  children,\n}: {\n  chart: Chart\n} & React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex items-center gap-2\", className)}>\n      <div className=\"flex items-center gap-1.5 pl-1 text-[13px] text-muted-foreground [&>svg]:h-[0.9rem] [&>svg]:w-[0.9rem]\">\n        <ChartTitle chart={chart} />\n      </div>\n      <div className=\"ml-auto flex items-center gap-2 [&>form]:flex\">\n        <ChartCopyButton\n          event=\"copy_chart_code\"\n          name={chart.name}\n          code={chart.files?.[0]?.content ?? \"\"}\n          className=\"[&_svg]-h-3 h-6 w-6 rounded-[6px] bg-transparent text-foreground shadow-none hover:bg-muted dark:text-foreground [&_svg]:w-3\"\n        />\n        <Separator\n          orientation=\"vertical\"\n          className=\"mx-0 hidden h-4! md:flex\"\n        />\n        <ChartCodeViewer chart={chart}>{children}</ChartCodeViewer>\n      </div>\n    </div>\n  )\n}\n\nfunction ChartTitle({ chart }: { chart: Chart }) {\n  if (chart.name.includes(\"chart-line\")) {\n    return (\n      <>\n        <LineChartIcon /> Line Chart\n      </>\n    )\n  }\n\n  if (chart.name.includes(\"chart-bar\")) {\n    return (\n      <>\n        <BarChartBigIcon /> Bar Chart\n      </>\n    )\n  }\n\n  if (chart.name.includes(\"chart-pie\")) {\n    return (\n      <>\n        <PieChartIcon /> Pie Chart\n      </>\n    )\n  }\n\n  if (chart.name.includes(\"chart-area\")) {\n    return (\n      <>\n        <AreaChartIcon /> Area Chart\n      </>\n    )\n  }\n\n  if (chart.name.includes(\"chart-radar\")) {\n    return (\n      <>\n        <HexagonIcon /> Radar Chart\n      </>\n    )\n  }\n\n  if (chart.name.includes(\"chart-radial\")) {\n    return (\n      <>\n        <RadarIcon /> Radial Chart\n      </>\n    )\n  }\n\n  if (chart.name.includes(\"chart-tooltip\")) {\n    return (\n      <>\n        <MousePointer2Icon />\n        Tooltip\n      </>\n    )\n  }\n\n  return chart.name\n}\n"
  },
  {
    "path": "apps/v4/components/charts-nav.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ScrollArea, ScrollBar } from \"@/registry/new-york-v4/ui/scroll-area\"\n\nconst links = [\n  {\n    name: \"Area Charts\",\n    href: \"/charts/area#charts\",\n  },\n  {\n    name: \"Bar Charts\",\n    href: \"/charts/bar#charts\",\n  },\n  {\n    name: \"Line Charts\",\n    href: \"/charts/line#charts\",\n  },\n  {\n    name: \"Pie Charts\",\n    href: \"/charts/pie#charts\",\n  },\n  {\n    name: \"Radar Charts\",\n    href: \"/charts/radar#charts\",\n  },\n  {\n    name: \"Radial Charts\",\n    href: \"/charts/radial#charts\",\n  },\n  {\n    name: \"Tooltips\",\n    href: \"/charts/tooltip#charts\",\n  },\n]\n\nexport function ChartsNav({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  const pathname = usePathname()\n\n  return (\n    <div className=\"relative overflow-hidden\">\n      <ScrollArea className=\"max-w-[600px] lg:max-w-none\">\n        <div className={cn(\"flex items-center\", className)} {...props}>\n          {links.map((link) => (\n            <Link\n              href={link.href}\n              key={link.href}\n              data-active={link.href.startsWith(pathname)}\n              className={cn(\n                \"flex h-7 shrink-0 items-center justify-center px-4 text-center text-base font-medium text-muted-foreground transition-colors hover:text-primary data-[active=true]:text-primary\"\n              )}\n            >\n              {link.name}\n            </Link>\n          ))}\n        </div>\n        <ScrollBar orientation=\"horizontal\" className=\"invisible\" />\n      </ScrollArea>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/code-block-command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconCheck, IconCopy, IconTerminal } from \"@tabler/icons-react\"\n\nimport { useConfig } from \"@/hooks/use-config\"\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport function CodeBlockCommand({\n  __npm__,\n  __yarn__,\n  __pnpm__,\n  __bun__,\n}: React.ComponentProps<\"pre\"> & {\n  __npm__?: string\n  __yarn__?: string\n  __pnpm__?: string\n  __bun__?: string\n}) {\n  const [config, setConfig] = useConfig()\n  const [hasCopied, setHasCopied] = React.useState(false)\n\n  React.useEffect(() => {\n    if (hasCopied) {\n      const timer = setTimeout(() => setHasCopied(false), 2000)\n      return () => clearTimeout(timer)\n    }\n  }, [hasCopied])\n\n  const packageManager = config.packageManager || \"pnpm\"\n  const tabs = React.useMemo(() => {\n    return {\n      pnpm: __pnpm__,\n      npm: __npm__,\n      yarn: __yarn__,\n      bun: __bun__,\n    }\n  }, [__npm__, __pnpm__, __yarn__, __bun__])\n\n  const copyCommand = React.useCallback(() => {\n    const command = tabs[packageManager]\n\n    if (!command) {\n      return\n    }\n\n    copyToClipboardWithMeta(command, {\n      name: \"copy_npm_command\",\n      properties: {\n        command,\n        pm: packageManager,\n      },\n    })\n    setHasCopied(true)\n  }, [packageManager, tabs])\n\n  return (\n    <div className=\"overflow-x-auto\">\n      <Tabs\n        value={packageManager}\n        className=\"gap-0\"\n        onValueChange={(value) => {\n          setConfig({\n            ...config,\n            packageManager: value as \"pnpm\" | \"npm\" | \"yarn\" | \"bun\",\n          })\n        }}\n      >\n        <div className=\"flex items-center gap-2 border-b border-border/50 px-3 py-1\">\n          <div className=\"flex size-4 items-center justify-center rounded-[1px] bg-foreground opacity-70\">\n            <IconTerminal className=\"size-3 text-code\" />\n          </div>\n          <TabsList className=\"rounded-none bg-transparent p-0\">\n            {Object.entries(tabs).map(([key]) => {\n              return (\n                <TabsTrigger\n                  key={key}\n                  value={key}\n                  className=\"h-7 border border-transparent pt-0.5 shadow-none! data-[state=active]:border-input data-[state=active]:bg-background!\"\n                >\n                  {key}\n                </TabsTrigger>\n              )\n            })}\n          </TabsList>\n        </div>\n        <div className=\"no-scrollbar overflow-x-auto\">\n          {Object.entries(tabs).map(([key, value]) => {\n            return (\n              <TabsContent key={key} value={key} className=\"mt-0 px-4 py-3.5\">\n                <pre>\n                  <code\n                    className=\"relative font-mono text-sm leading-none\"\n                    data-language=\"bash\"\n                  >\n                    {value}\n                  </code>\n                </pre>\n              </TabsContent>\n            )\n          })}\n        </div>\n      </Tabs>\n      <Button\n        data-slot=\"copy-button\"\n        size=\"icon\"\n        variant=\"ghost\"\n        className=\"absolute top-2 right-2 z-10 size-7 opacity-70 hover:opacity-100 focus-visible:opacity-100\"\n        onClick={copyCommand}\n      >\n        <span className=\"sr-only\">Copy</span>\n        {hasCopied ? <IconCheck /> : <IconCopy />}\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/code-collapsible-wrapper.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nexport function CodeCollapsibleWrapper({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof Collapsible>) {\n  const [isOpened, setIsOpened] = React.useState(false)\n\n  return (\n    <Collapsible\n      open={isOpened}\n      onOpenChange={setIsOpened}\n      className={cn(\"group/collapsible relative md:-mx-1\", className)}\n      {...props}\n    >\n      <CollapsibleTrigger asChild>\n        <div className=\"absolute top-1.5 right-9 z-10 flex items-center\">\n          <Button\n            variant=\"ghost\"\n            size=\"sm\"\n            className=\"h-7 rounded-md px-2 text-muted-foreground\"\n          >\n            {isOpened ? \"Collapse\" : \"Expand\"}\n          </Button>\n          <Separator orientation=\"vertical\" className=\"mx-1.5 h-4!\" />\n        </div>\n      </CollapsibleTrigger>\n      <CollapsibleContent\n        forceMount\n        className=\"relative mt-6 overflow-hidden data-[state=closed]:max-h-64 data-[state=closed]:[content-visibility:auto] [&>figure]:mt-0 [&>figure]:md:mx-0!\"\n      >\n        {children}\n      </CollapsibleContent>\n      <CollapsibleTrigger className=\"absolute inset-x-0 -bottom-2 flex h-20 items-center justify-center rounded-b-lg bg-gradient-to-b from-code/70 to-code text-sm text-muted-foreground group-data-[state=open]/collapsible:hidden\">\n        {isOpened ? \"Collapse\" : \"Expand\"}\n      </CollapsibleTrigger>\n    </Collapsible>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/code-tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { useConfig } from \"@/hooks/use-config\"\nimport { Tabs } from \"@/registry/new-york-v4/ui/tabs\"\n\nexport function CodeTabs({ children }: React.ComponentProps<typeof Tabs>) {\n  const [config, setConfig] = useConfig()\n\n  const installationType = React.useMemo(() => {\n    return config.installationType || \"cli\"\n  }, [config])\n\n  return (\n    <Tabs\n      value={installationType}\n      onValueChange={(value) =>\n        setConfig({ ...config, installationType: value as \"cli\" | \"manual\" })\n      }\n      className=\"relative mt-6 w-full *:data-[slot=tabs-list]:gap-6\"\n    >\n      {children}\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/color-format-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { getColorFormat, type Color } from \"@/lib/colors\"\nimport { cn } from \"@/lib/utils\"\nimport { useColors } from \"@/hooks/use-colors\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Skeleton } from \"@/registry/new-york-v4/ui/skeleton\"\n\nexport function ColorFormatSelector({\n  color,\n  className,\n  ...props\n}: Omit<React.ComponentProps<typeof SelectTrigger>, \"color\"> & {\n  color: Color\n}) {\n  const { format, setFormat, isLoading } = useColors()\n  const formats = React.useMemo(() => getColorFormat(color), [color])\n\n  if (isLoading) {\n    return <ColorFormatSelectorSkeleton />\n  }\n\n  return (\n    <Select value={format} onValueChange={setFormat}>\n      <SelectTrigger\n        size=\"sm\"\n        className={cn(\n          \"border-secondary bg-secondary text-secondary-foreground shadow-none\",\n          className\n        )}\n        {...props}\n      >\n        <span className=\"font-medium\">Format: </span>\n        <span className=\"font-mono text-muted-foreground\">{format}</span>\n      </SelectTrigger>\n      <SelectContent align=\"end\" position=\"popper\" className=\"rounded-xl\">\n        {Object.entries(formats).map(([format, value]) => (\n          <SelectItem\n            key={format}\n            value={format}\n            className=\"gap-2 rounded-lg [&>span]:flex [&>span]:items-center [&>span]:gap-2\"\n          >\n            <span className=\"font-medium\">{format}</span>\n            <span className=\"font-mono text-xs text-muted-foreground\">\n              {value}\n            </span>\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  )\n}\n\nexport function ColorFormatSelectorSkeleton({\n  className,\n  ...props\n}: React.ComponentProps<typeof Skeleton>) {\n  return (\n    <Skeleton\n      className={cn(\"h-8 w-[132px] gap-1.5 rounded-md\", className)}\n      {...props}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/color-palette.tsx",
    "content": "import { type ColorPalette } from \"@/lib/colors\"\nimport { Color } from \"@/components/color\"\nimport { ColorFormatSelector } from \"@/components/color-format-selector\"\n\nexport function ColorPalette({ colorPalette }: { colorPalette: ColorPalette }) {\n  return (\n    <div id={colorPalette.name} className=\"scroll-mt-20 rounded-lg\">\n      <div className=\"flex items-center px-4\">\n        <div className=\"flex-1 pl-1 text-sm font-medium\">\n          <h2 className=\"capitalize\">{colorPalette.name}</h2>\n        </div>\n        <ColorFormatSelector\n          color={colorPalette.colors[0]}\n          className=\"ml-auto\"\n        />\n      </div>\n      <div className=\"flex flex-col gap-4 py-4 sm:flex-row sm:gap-2\">\n        {colorPalette.colors.map((color) => (\n          <Color key={color.hex} color={color} />\n        ))}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/color.tsx",
    "content": "\"use client\"\n\nimport { Check, Clipboard } from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nimport { type Color } from \"@/lib/colors\"\nimport { trackEvent } from \"@/lib/events\"\nimport { useColors } from \"@/hooks/use-colors\"\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\"\n\nexport function Color({ color }: { color: Color }) {\n  const { format, setLastCopied, lastCopied } = useColors()\n  const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 0 })\n\n  return (\n    <button\n      key={color.hex}\n      className=\"group relative flex aspect-[3/1] w-full flex-1 cursor-pointer flex-col gap-2 text-(--text) sm:aspect-[2/3] sm:h-auto sm:w-auto [&>svg]:absolute [&>svg]:top-4 [&>svg]:right-4 [&>svg]:z-10 [&>svg]:h-3.5 [&>svg]:w-3.5 [&>svg]:opacity-0 [&>svg]:transition-opacity\"\n      data-last-copied={lastCopied === color[format]}\n      style={\n        {\n          \"--bg\": `${color.oklch}`,\n          \"--text\": color.foreground,\n        } as React.CSSProperties\n      }\n      onClick={() => {\n        copyToClipboard(color[format])\n        trackEvent({\n          name: \"copy_color\",\n          properties: {\n            color: color.id,\n            value: color[format],\n            format,\n          },\n        })\n        setLastCopied(color[format])\n        toast.success(`Copied ${color[format]} to clipboard.`)\n      }}\n    >\n      {isCopied ? (\n        <Check className=\"group-hover:opacity-100 group-data-[last-copied=true]:opacity-100\" />\n      ) : (\n        <Clipboard className=\"group-hover:opacity-100\" />\n      )}\n      <div className=\"border-ghost w-full flex-1 rounded-md bg-(--bg) after:rounded-lg after:border-input md:rounded-lg\" />\n      <div className=\"flex w-full flex-col items-center justify-center gap-1\">\n        <span className=\"font-mono text-xs text-muted-foreground tabular-nums transition-colors group-hover:text-foreground group-data-[last-copied=true]:text-primary sm:hidden xl:flex\">\n          {color.className}\n        </span>\n        <span className=\"hidden font-mono text-xs text-muted-foreground tabular-nums transition-colors group-hover:text-foreground group-data-[last-copied=true]:text-primary sm:flex xl:hidden\">\n          {color.scale}\n        </span>\n      </div>\n    </button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/colors-nav.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport { getColors } from \"@/lib/colors\"\nimport { cn } from \"@/lib/utils\"\nimport { ScrollArea, ScrollBar } from \"@/registry/new-york-v4/ui/scroll-area\"\n\nexport function ColorsNav({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  const pathname = usePathname()\n  const colors = getColors()\n\n  return (\n    <div className={cn(\"flex items-center\", className)} {...props}>\n      <ScrollArea className=\"max-w-full\">\n        <div className=\"flex items-center\">\n          {colors.map((colorPalette, index) => (\n            <Link\n              href={`/colors#${colorPalette.name}`}\n              key={colorPalette.name}\n              data-active={\n                pathname?.startsWith(colorPalette.name) ||\n                (index === 0 && pathname === \"/colors\")\n              }\n              className={cn(\n                \"flex h-7 items-center justify-center px-4 text-center text-base font-medium text-muted-foreground capitalize transition-colors hover:text-primary data-[active=true]:text-primary\"\n              )}\n            >\n              {colorPalette.name}\n            </Link>\n          ))}\n        </div>\n        <ScrollBar orientation=\"horizontal\" className=\"invisible\" />\n      </ScrollArea>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/command-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { usePathname, useRouter } from \"next/navigation\"\nimport { IconArrowRight } from \"@tabler/icons-react\"\nimport { useDocsSearch } from \"fumadocs-core/search/client\"\nimport { CornerDownLeftIcon, SquareDashedIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { type Color, type ColorPalette } from \"@/lib/colors\"\nimport { trackEvent } from \"@/lib/events\"\nimport { showMcpDocs } from \"@/lib/flags\"\nimport { getCurrentBase, getPagesFromFolder } from \"@/lib/page-tree\"\nimport { type source } from \"@/lib/source\"\nimport { cn } from \"@/lib/utils\"\nimport { useConfig } from \"@/hooks/use-config\"\nimport { useMutationObserver } from \"@/hooks/use-mutation-observer\"\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  Dialog,\n  DialogDescription,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport function CommandMenu({\n  tree,\n  colors,\n  blocks,\n  navItems,\n  ...props\n}: React.ComponentProps<typeof Dialog> & {\n  tree: typeof source.pageTree\n  colors: ColorPalette[]\n  blocks?: { name: string; description: string; categories: string[] }[]\n  navItems?: { href: string; label: string }[]\n}) {\n  const router = useRouter()\n  const pathname = usePathname()\n  const [config] = useConfig()\n  const currentBase = getCurrentBase(pathname)\n  const [open, setOpen] = React.useState(false)\n  const [renderDelayedGroups, setRenderDelayedGroups] = React.useState(false)\n  const [selectedType, setSelectedType] = React.useState<\n    \"color\" | \"page\" | \"component\" | \"block\" | null\n  >(null)\n  const [copyPayload, setCopyPayload] = React.useState(\"\")\n\n  const { search, setSearch, query } = useDocsSearch({\n    type: \"fetch\",\n  })\n  const packageManager = config.packageManager || \"pnpm\"\n\n  // Track search queries with debouncing to avoid excessive tracking.\n  const searchTimeoutRef = React.useRef<NodeJS.Timeout | undefined>(undefined)\n  const lastTrackedQueryRef = React.useRef<string>(\"\")\n\n  const trackSearchQuery = React.useCallback((query: string) => {\n    const trimmedQuery = query.trim()\n\n    // Only track if the query is different from the last tracked query and has content.\n    if (trimmedQuery && trimmedQuery !== lastTrackedQueryRef.current) {\n      lastTrackedQueryRef.current = trimmedQuery\n      trackEvent({\n        name: \"search_query\",\n        properties: {\n          query: trimmedQuery,\n          query_length: trimmedQuery.length,\n        },\n      })\n    }\n  }, [])\n\n  const handleSearchChange = React.useCallback(\n    (value: string) => {\n      // Clear existing timeout.\n      if (searchTimeoutRef.current) {\n        clearTimeout(searchTimeoutRef.current)\n      }\n\n      // Set new timeout to debounce both search and tracking.\n      searchTimeoutRef.current = setTimeout(() => {\n        React.startTransition(() => {\n          setSearch(value)\n          trackSearchQuery(value)\n        })\n      }, 500)\n    },\n    [setSearch, trackSearchQuery]\n  )\n\n  // Cleanup timeout on unmount.\n  React.useEffect(() => {\n    if (open) {\n      const frame = requestAnimationFrame(() => {\n        setRenderDelayedGroups(true)\n      })\n\n      return () => {\n        cancelAnimationFrame(frame)\n      }\n    }\n\n    setRenderDelayedGroups(false)\n  }, [open])\n\n  React.useEffect(() => {\n    return () => {\n      if (searchTimeoutRef.current) {\n        clearTimeout(searchTimeoutRef.current)\n      }\n    }\n  }, [])\n\n  const commandFilter = React.useCallback(\n    (value: string, searchValue: string, keywords?: string[]) => {\n      const extendValue = value + \" \" + (keywords?.join(\" \") || \"\")\n      if (extendValue.toLowerCase().includes(searchValue.toLowerCase())) {\n        return 1\n      }\n      return 0\n    },\n    []\n  )\n\n  const handlePageHighlight = React.useCallback(\n    (isComponent: boolean, item: { url: string; name?: React.ReactNode }) => {\n      if (isComponent) {\n        const componentName = item.url.split(\"/\").pop()\n        setSelectedType(\"component\")\n        setCopyPayload(\n          `${packageManager} dlx shadcn@latest add ${componentName}`\n        )\n      } else {\n        setSelectedType(\"page\")\n        setCopyPayload(\"\")\n      }\n    },\n    [packageManager, setSelectedType, setCopyPayload]\n  )\n\n  const handleColorHighlight = React.useCallback(\n    (color: Color) => {\n      setSelectedType(\"color\")\n      setCopyPayload(color.className)\n    },\n    [setSelectedType, setCopyPayload]\n  )\n\n  const handleBlockHighlight = React.useCallback(\n    (block: { name: string; description: string; categories: string[] }) => {\n      setSelectedType(\"block\")\n      setCopyPayload(`${packageManager} dlx shadcn@latest add ${block.name}`)\n    },\n    [setSelectedType, setCopyPayload, packageManager]\n  )\n\n  const runCommand = React.useCallback(\n    (command: () => unknown) => {\n      setOpen(false)\n      command()\n    },\n    [setOpen]\n  )\n\n  const navItemsSection = React.useMemo(() => {\n    if (!navItems || navItems.length === 0) {\n      return null\n    }\n\n    return (\n      <CommandGroup\n        heading=\"Pages\"\n        className=\"p-0! **:[[cmdk-group-heading]]:scroll-mt-16 **:[[cmdk-group-heading]]:p-3! **:[[cmdk-group-heading]]:pb-1!\"\n      >\n        {navItems.map((item) => (\n          <CommandMenuItem\n            key={item.href}\n            value={`Navigation ${item.label}`}\n            keywords={[\"nav\", \"navigation\", item.label.toLowerCase()]}\n            onHighlight={() => {\n              setSelectedType(\"page\")\n              setCopyPayload(\"\")\n            }}\n            onSelect={() => {\n              runCommand(() => router.push(item.href))\n            }}\n          >\n            <IconArrowRight />\n            {item.label}\n          </CommandMenuItem>\n        ))}\n      </CommandGroup>\n    )\n  }, [navItems, runCommand, router])\n\n  const pageGroupsSection = React.useMemo(() => {\n    return tree.children.map((group) => {\n      if (group.type !== \"folder\") {\n        return null\n      }\n\n      const pages = getPagesFromFolder(group, currentBase).filter((item) => {\n        if (!showMcpDocs && item.url.includes(\"/mcp\")) {\n          return false\n        }\n\n        return true\n      })\n\n      if (pages.length === 0) {\n        return null\n      }\n\n      return (\n        <CommandGroup\n          key={group.$id}\n          heading={group.name}\n          className=\"p-0! **:[[cmdk-group-heading]]:scroll-mt-16 **:[[cmdk-group-heading]]:p-3! **:[[cmdk-group-heading]]:pb-1!\"\n        >\n          {pages.map((item) => {\n            const isComponent = item.url.includes(\"/components/\")\n\n            return (\n              <CommandMenuItem\n                key={item.url}\n                value={\n                  item.name?.toString() ? `${group.name} ${item.name}` : \"\"\n                }\n                keywords={isComponent ? [\"component\"] : undefined}\n                onHighlight={() => handlePageHighlight(isComponent, item)}\n                onSelect={() => {\n                  runCommand(() => router.push(item.url))\n                }}\n              >\n                {isComponent ? (\n                  <div className=\"aspect-square size-4 rounded-full border border-dashed border-muted-foreground\" />\n                ) : (\n                  <IconArrowRight />\n                )}\n                {item.name}\n              </CommandMenuItem>\n            )\n          })}\n        </CommandGroup>\n      )\n    })\n  }, [tree.children, currentBase, handlePageHighlight, runCommand, router])\n\n  const colorGroupsSection = React.useMemo(() => {\n    return colors.map((colorPalette) => (\n      <CommandGroup\n        key={colorPalette.name}\n        heading={\n          colorPalette.name.charAt(0).toUpperCase() + colorPalette.name.slice(1)\n        }\n        className=\"p-0! **:[[cmdk-group-heading]]:p-3!\"\n      >\n        {colorPalette.colors.map((color) => (\n          <CommandMenuItem\n            key={color.hex}\n            value={color.className}\n            keywords={[\"color\", color.name, color.className]}\n            onHighlight={() => handleColorHighlight(color)}\n            onSelect={() => {\n              runCommand(() =>\n                copyToClipboardWithMeta(color.oklch, {\n                  name: \"copy_color\",\n                  properties: { color: color.oklch },\n                })\n              )\n            }}\n          >\n            <div\n              className=\"border-ghost aspect-square size-4 rounded-sm bg-(--color) after:rounded-sm\"\n              style={{ \"--color\": color.oklch } as React.CSSProperties}\n            />\n            {color.className}\n            <span className=\"ml-auto font-mono text-xs font-normal text-muted-foreground tabular-nums\">\n              {color.oklch}\n            </span>\n          </CommandMenuItem>\n        ))}\n      </CommandGroup>\n    ))\n  }, [colors, handleColorHighlight, runCommand])\n\n  const blocksSection = React.useMemo(() => {\n    if (!blocks || blocks.length === 0) {\n      return null\n    }\n\n    return (\n      <CommandGroup\n        heading=\"Blocks\"\n        className=\"p-0! **:[[cmdk-group-heading]]:p-3!\"\n      >\n        {blocks.map((block) => (\n          <CommandMenuItem\n            key={block.name}\n            value={block.name}\n            onHighlight={() => {\n              handleBlockHighlight(block)\n            }}\n            keywords={[\n              \"block\",\n              block.name,\n              block.description,\n              ...block.categories,\n            ]}\n            onSelect={() => {\n              runCommand(() =>\n                router.push(`/blocks/${block.categories[0]}#${block.name}`)\n              )\n            }}\n          >\n            <SquareDashedIcon />\n            {block.description}\n            <span className=\"ml-auto font-mono text-xs font-normal text-muted-foreground tabular-nums\">\n              {block.name}\n            </span>\n          </CommandMenuItem>\n        ))}\n      </CommandGroup>\n    )\n  }, [blocks, handleBlockHighlight, runCommand, router])\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if ((e.key === \"k\" && (e.metaKey || e.ctrlKey)) || e.key === \"/\") {\n        if (\n          (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n          e.target instanceof HTMLInputElement ||\n          e.target instanceof HTMLTextAreaElement ||\n          e.target instanceof HTMLSelectElement\n        ) {\n          return\n        }\n\n        e.preventDefault()\n        setOpen((open) => !open)\n      }\n\n      if (e.key === \"c\" && (e.metaKey || e.ctrlKey)) {\n        runCommand(() => {\n          if (selectedType === \"color\") {\n            copyToClipboardWithMeta(copyPayload, {\n              name: \"copy_color\",\n              properties: { color: copyPayload },\n            })\n          }\n\n          if (selectedType === \"block\") {\n            copyToClipboardWithMeta(copyPayload, {\n              name: \"copy_npm_command\",\n              properties: { command: copyPayload, pm: packageManager },\n            })\n          }\n\n          if (selectedType === \"page\" || selectedType === \"component\") {\n            copyToClipboardWithMeta(copyPayload, {\n              name: \"copy_npm_command\",\n              properties: { command: copyPayload, pm: packageManager },\n            })\n          }\n        })\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => document.removeEventListener(\"keydown\", down)\n  }, [copyPayload, runCommand, selectedType, packageManager])\n\n  return (\n    <Dialog open={open} onOpenChange={setOpen}>\n      <DialogTrigger asChild>\n        <Button\n          variant=\"outline\"\n          className={cn(\n            \"relative h-8 w-full justify-start rounded-lg pl-3 font-normal text-foreground shadow-none hover:bg-muted/50 sm:pr-12 md:w-48 lg:w-40 xl:w-64 dark:bg-card\"\n          )}\n          onClick={() => setOpen(true)}\n          {...props}\n        >\n          <span className=\"hidden xl:inline-flex\">Search documentation...</span>\n          <span className=\"inline-flex xl:hidden\">Search...</span>\n        </Button>\n      </DialogTrigger>\n      <DialogContent className=\"rounded-xl border-none bg-clip-padding p-2 pb-11 shadow-2xl ring-4 ring-neutral-200/80 dark:bg-neutral-900 dark:ring-neutral-800\">\n        <DialogHeader className=\"sr-only\">\n          <DialogTitle>Search documentation...</DialogTitle>\n          <DialogDescription>Search for a command to run...</DialogDescription>\n        </DialogHeader>\n        <Command\n          className=\"rounded-none bg-transparent **:data-[slot=command-input]:h-9! **:data-[slot=command-input]:py-0 **:data-[slot=command-input-wrapper]:mb-0 **:data-[slot=command-input-wrapper]:h-9! **:data-[slot=command-input-wrapper]:rounded-md **:data-[slot=command-input-wrapper]:border **:data-[slot=command-input-wrapper]:border-input **:data-[slot=command-input-wrapper]:bg-input/50\"\n          filter={commandFilter}\n        >\n          <div className=\"relative\">\n            <CommandInput\n              placeholder=\"Search documentation...\"\n              onValueChange={handleSearchChange}\n            />\n            {query.isLoading && (\n              <div className=\"pointer-events-none absolute top-1/2 right-3 z-10 flex -translate-y-1/2 items-center justify-center\">\n                <Spinner className=\"size-4 text-muted-foreground\" />\n              </div>\n            )}\n          </div>\n          <CommandList className=\"no-scrollbar min-h-80 scroll-pt-2 scroll-pb-1.5\">\n            <CommandEmpty className=\"py-12 text-center text-sm text-muted-foreground\">\n              {query.isLoading ? \"Searching...\" : \"No results found.\"}\n            </CommandEmpty>\n            {navItemsSection}\n            {renderDelayedGroups ? (\n              <>\n                {pageGroupsSection}\n                {colorGroupsSection}\n                {blocksSection}\n                <SearchResults\n                  setOpen={setOpen}\n                  query={query}\n                  search={search}\n                />\n              </>\n            ) : null}\n          </CommandList>\n        </Command>\n        <div className=\"absolute inset-x-0 bottom-0 z-20 flex h-10 items-center gap-2 rounded-b-xl border-t border-t-neutral-100 bg-neutral-50 px-4 text-xs font-medium text-muted-foreground dark:border-t-neutral-700 dark:bg-neutral-800\">\n          <div className=\"flex items-center gap-2\">\n            <CommandMenuKbd>\n              <CornerDownLeftIcon />\n            </CommandMenuKbd>{\" \"}\n            {selectedType === \"page\" || selectedType === \"component\"\n              ? \"Go to Page\"\n              : null}\n            {selectedType === \"color\" ? \"Copy OKLCH\" : null}\n          </div>\n          {copyPayload && (\n            <>\n              <Separator orientation=\"vertical\" className=\"h-4!\" />\n              <div className=\"flex items-center gap-1\">\n                <CommandMenuKbd>⌘</CommandMenuKbd>\n                <CommandMenuKbd>C</CommandMenuKbd>\n                {copyPayload}\n              </div>\n            </>\n          )}\n        </div>\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction CommandMenuItem({\n  children,\n  className,\n  onHighlight,\n  ...props\n}: React.ComponentProps<typeof CommandItem> & {\n  onHighlight?: () => void\n  \"data-selected\"?: string\n  \"aria-selected\"?: string\n}) {\n  const ref = React.useRef<HTMLDivElement>(null)\n\n  useMutationObserver(ref, (mutations) => {\n    mutations.forEach((mutation) => {\n      if (\n        mutation.type === \"attributes\" &&\n        mutation.attributeName === \"aria-selected\" &&\n        ref.current?.getAttribute(\"aria-selected\") === \"true\"\n      ) {\n        onHighlight?.()\n      }\n    })\n  })\n\n  return (\n    <CommandItem\n      ref={ref}\n      className={cn(\n        \"h-9 rounded-md border border-transparent px-3! font-medium data-[selected=true]:border-input data-[selected=true]:bg-input/50\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </CommandItem>\n  )\n}\n\nfunction CommandMenuKbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      className={cn(\n        \"pointer-events-none flex h-5 items-center justify-center gap-1 rounded border bg-background px-1 font-sans text-[0.7rem] font-medium text-muted-foreground select-none [&_svg:not([class*='size-'])]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\ntype Query = Awaited<ReturnType<typeof useDocsSearch>>[\"query\"]\n\nfunction SearchResults({\n  setOpen,\n  query,\n  search,\n}: {\n  setOpen: (open: boolean) => void\n  query: Query\n  search: string\n}) {\n  const router = useRouter()\n\n  const uniqueResults = React.useMemo(() => {\n    if (!query.data || !Array.isArray(query.data)) {\n      return []\n    }\n\n    return query.data.filter(\n      (item, index, self) =>\n        !(\n          item.type === \"text\" && item.content.trim().split(/\\s+/).length <= 1\n        ) && index === self.findIndex((t) => t.content === item.content)\n    )\n  }, [query.data])\n\n  if (!search.trim()) {\n    return null\n  }\n\n  if (!query.data || query.data === \"empty\") {\n    return null\n  }\n\n  if (query.data && uniqueResults.length === 0) {\n    return null\n  }\n\n  return (\n    <CommandGroup\n      className=\"px-0! **:[[cmdk-group-heading]]:scroll-mt-16 **:[[cmdk-group-heading]]:p-3! **:[[cmdk-group-heading]]:pb-1!\"\n      heading=\"Search Results\"\n    >\n      {uniqueResults.map((item) => {\n        return (\n          <CommandItem\n            key={item.id}\n            data-type={item.type}\n            onSelect={() => {\n              router.push(item.url)\n              setOpen(false)\n            }}\n            className=\"h-9 rounded-md border border-transparent px-3! font-normal data-[selected=true]:border-input data-[selected=true]:bg-input/50\"\n            keywords={[item.content]}\n            value={`${item.content} ${item.type}`}\n          >\n            <div className=\"line-clamp-1 text-sm\">{item.content}</div>\n          </CommandItem>\n        )\n      })}\n    </CommandGroup>\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal data-slot=\"dialog-portal\">\n      {/* <DialogOverlay /> */}\n      <DialogPrimitive.Content\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"fixed top-[15%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </DialogPrimitive.Content>\n    </DialogPortal>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/component-preview-tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { IconAlertCircle } from \"@tabler/icons-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  LanguageProvider,\n  LanguageSelector,\n  useLanguageContext,\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\nimport { DirectionProvider as BaseDirectionProvider } from \"@/registry/bases/base/ui/direction\"\nimport { DirectionProvider as RadixDirectionProvider } from \"@/registry/bases/radix/ui/direction\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nexport function ComponentPreviewTabs({\n  className,\n  previewClassName,\n  align = \"center\",\n  hideCode = false,\n  chromeLessOnMobile = false,\n  component,\n  source,\n  sourcePreview,\n  direction = \"ltr\",\n  styleName,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  previewClassName?: string\n  align?: \"center\" | \"start\" | \"end\"\n  hideCode?: boolean\n  chromeLessOnMobile?: boolean\n  component: React.ReactNode\n  source: React.ReactNode\n  sourcePreview?: React.ReactNode\n  direction?: \"ltr\" | \"rtl\"\n  styleName?: string\n}) {\n  const [isMobileCodeVisible, setIsMobileCodeVisible] = React.useState(false)\n  const base = styleName?.split(\"-\")[0]\n\n  return (\n    <div\n      data-slot=\"component-preview\"\n      className={cn(\n        \"group relative mt-4 mb-12 flex flex-col overflow-hidden rounded-xl border\",\n        className\n      )}\n      {...props}\n    >\n      {direction === \"rtl\" ? (\n        <LanguageProvider defaultLanguage=\"ar\">\n          <div className=\"flex h-16 items-center border-b px-4\">\n            <RtlLanguageSelector />\n            <Popover>\n              <PopoverTrigger\n                render={\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon-sm\"\n                    className=\"ml-auto size-7\"\n                  >\n                    <IconAlertCircle />\n                    <span className=\"sr-only\">Toggle</span>\n                  </Button>\n                }\n              ></PopoverTrigger>\n              <PopoverContent\n                side=\"bottom\"\n                align=\"end\"\n                className=\"w-56 text-xs\"\n              >\n                <div>\n                  I used AI to translate the text for demonstration purposes.\n                  It&apos;s not perfect and may contain errors.\n                </div>\n                <Separator className=\"-mx-2.5 w-auto!\" />\n                <div data-lang=\"ar\">\n                  لقد استخدمت الذكاء الاصطناعي لترجمة النص للأغراض التجريبية\n                  فقط. قد لا تكون الترجمة دقيقة وقد تحتوي على أخطاء.\n                </div>\n                <Separator className=\"-mx-2.5 w-auto!\" />\n                <div data-lang=\"he\">\n                  השתמשתי בבינה מלאכותית כדי לתרגם את הטקסט למטרות הדגמה. זה לא\n                  מושלם ויכול להכיל שגיאות.\n                </div>\n              </PopoverContent>\n            </Popover>\n          </div>\n          <PreviewWrapper\n            align={align}\n            chromeLessOnMobile={chromeLessOnMobile}\n            previewClassName={previewClassName}\n          >\n            <DirectionProviderWrapper base={base}>\n              {component}\n            </DirectionProviderWrapper>\n          </PreviewWrapper>\n        </LanguageProvider>\n      ) : (\n        <DirectionProviderWrapper base={base} dir=\"ltr\">\n          <PreviewWrapper\n            align={align}\n            chromeLessOnMobile={chromeLessOnMobile}\n            previewClassName={previewClassName}\n            dir=\"ltr\"\n          >\n            {component}\n          </PreviewWrapper>\n        </DirectionProviderWrapper>\n      )}\n      {!hideCode && (\n        <div\n          data-slot=\"code\"\n          data-mobile-code-visible={isMobileCodeVisible}\n          className=\"relative overflow-hidden **:data-[slot=copy-button]:right-4 **:data-[slot=copy-button]:hidden data-[mobile-code-visible=true]:**:data-[slot=copy-button]:flex [&_[data-rehype-pretty-code-figure]]:m-0! [&_[data-rehype-pretty-code-figure]]:rounded-t-none [&_[data-rehype-pretty-code-figure]]:border-t [&_pre]:max-h-72\"\n        >\n          {isMobileCodeVisible ? (\n            <>\n              {direction === \"rtl\" && (\n                <div className=\"relative z-10 no-scrollbar overflow-x-auto border-t bg-code p-6 font-mono text-sm text-muted-foreground\">\n                  <pre>{`// You will notice this example uses dir and data-lang attributes.\n// This is because this site is not RTL by default.\n// In your application, you won't need these.`}</pre>\n                  <span>\n                    {\"// See the \"}\n                    <Link\n                      href=\"/docs/rtl\"\n                      className=\"underline underline-offset-4\"\n                    >\n                      RTL guide\n                    </Link>\n                    {\" for more information.\"}\n                  </span>\n                </div>\n              )}\n              {source}\n            </>\n          ) : (\n            <div className=\"relative\">\n              {sourcePreview}\n              <div className=\"absolute inset-0 flex items-center justify-center pb-4\">\n                <div\n                  className=\"absolute inset-0\"\n                  style={{\n                    background:\n                      \"linear-gradient(to top, var(--color-code), color-mix(in oklab, var(--color-code) 60%, transparent), transparent)\",\n                  }}\n                />\n                <Button\n                  type=\"button\"\n                  size=\"sm\"\n                  variant=\"outline\"\n                  className=\"relative z-10 rounded-lg bg-background text-foreground shadow-none hover:bg-muted dark:bg-background dark:text-foreground dark:hover:bg-muted\"\n                  onClick={() => {\n                    setIsMobileCodeVisible(true)\n                  }}\n                >\n                  View Code\n                </Button>\n              </div>\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  )\n}\n\nconst directionTranslations: Translations<Record<string, never>> = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nfunction RtlLanguageSelector({ className }: { className?: string }) {\n  const context = useLanguageContext()\n  if (!context) {\n    return null\n  }\n  return (\n    <LanguageSelector\n      value={context.language}\n      onValueChange={context.setLanguage}\n      className={className}\n    />\n  )\n}\n\nfunction PreviewWrapper({\n  align,\n  chromeLessOnMobile,\n  previewClassName,\n  dir: explicitDir,\n  children,\n}: {\n  align: \"center\" | \"start\" | \"end\"\n  chromeLessOnMobile: boolean\n  previewClassName?: string\n  dir?: \"ltr\" | \"rtl\"\n  children: React.ReactNode\n}) {\n  // useTranslation handles the case when there's no LanguageProvider context.\n  // It will fall back to local state with defaultLanguage.\n  const translation = useTranslation(directionTranslations, \"ar\")\n  const dir = explicitDir ?? translation.dir\n\n  return (\n    <div\n      data-slot=\"preview\"\n      dir={dir}\n      data-lang={dir === \"rtl\" ? translation.language : undefined}\n    >\n      <div\n        data-align={align}\n        data-chromeless={chromeLessOnMobile}\n        className={cn(\n          \"preview relative flex h-72 w-full justify-center p-10 data-[align=center]:items-center data-[align=end]:items-end data-[align=start]:items-start data-[chromeless=true]:h-auto data-[chromeless=true]:p-0\",\n          previewClassName\n        )}\n      >\n        {children}\n      </div>\n    </div>\n  )\n}\n\nfunction DirectionProviderWrapper({\n  base,\n  dir: explicitDir,\n  children,\n}: {\n  base?: string\n  dir?: \"ltr\" | \"rtl\"\n  children: React.ReactNode\n}) {\n  // useTranslation handles the case when there's no LanguageProvider context.\n  // It will fall back to local state with defaultLanguage.\n  const translation = useTranslation(directionTranslations, \"ar\")\n  const dir = explicitDir ?? translation.dir\n\n  if (base === \"base\") {\n    return (\n      <BaseDirectionProvider direction={dir}>{children}</BaseDirectionProvider>\n    )\n  }\n\n  return <RadixDirectionProvider dir={dir}>{children}</RadixDirectionProvider>\n}\n"
  },
  {
    "path": "apps/v4/components/component-preview.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\n\nimport { getRegistryComponent } from \"@/lib/registry\"\nimport { ComponentPreviewTabs } from \"@/components/component-preview-tabs\"\nimport { ComponentSource } from \"@/components/component-source\"\n\nexport function ComponentPreview({\n  name,\n  type,\n  className,\n  previewClassName,\n  align = \"center\",\n  hideCode = false,\n  chromeLessOnMobile = false,\n  styleName = \"new-york-v4\",\n  direction = \"ltr\",\n  caption,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  name: string\n  styleName?: string\n  align?: \"center\" | \"start\" | \"end\"\n  description?: string\n  hideCode?: boolean\n  type?: \"block\" | \"component\" | \"example\"\n  chromeLessOnMobile?: boolean\n  previewClassName?: string\n  direction?: \"ltr\" | \"rtl\"\n  caption?: string\n}) {\n  if (type === \"block\") {\n    const content = (\n      <div className=\"relative mt-6 aspect-[4/2.5] w-full overflow-hidden rounded-xl border md:-mx-1\">\n        <Image\n          src={`/r/styles/new-york-v4/${name}-light.png`}\n          alt={name}\n          width={1440}\n          height={900}\n          className=\"absolute top-0 left-0 z-20 w-[970px] max-w-none bg-background sm:w-[1280px] md:hidden dark:hidden md:dark:hidden\"\n        />\n        <Image\n          src={`/r/styles/new-york-v4/${name}-dark.png`}\n          alt={name}\n          width={1440}\n          height={900}\n          className=\"absolute top-0 left-0 z-20 hidden w-[970px] max-w-none bg-background sm:w-[1280px] md:hidden dark:block md:dark:hidden\"\n        />\n        <div className=\"absolute inset-0 hidden w-[1600px] bg-background md:block\">\n          <iframe src={`/view/${styleName}/${name}`} className=\"size-full\" />\n        </div>\n      </div>\n    )\n\n    if (caption) {\n      return (\n        <figure className=\"flex flex-col gap-4\">\n          {content}\n          <figcaption className=\"text-center text-sm text-muted-foreground\">\n            {caption}\n          </figcaption>\n        </figure>\n      )\n    }\n\n    return content\n  }\n\n  const Component = getRegistryComponent(name, styleName)\n\n  if (!Component) {\n    return (\n      <p className=\"mt-6 text-sm text-muted-foreground\">\n        Component{\" \"}\n        <code className=\"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm\">\n          {name}\n        </code>{\" \"}\n        not found in registry.\n      </p>\n    )\n  }\n\n  const content = (\n    <ComponentPreviewTabs\n      className={className}\n      previewClassName={previewClassName}\n      align={align}\n      hideCode={hideCode}\n      component={React.createElement(Component)}\n      source={\n        <ComponentSource\n          name={name}\n          collapsible={false}\n          styleName={styleName}\n        />\n      }\n      sourcePreview={\n        <ComponentSource\n          name={name}\n          collapsible={false}\n          styleName={styleName}\n          maxLines={3}\n        />\n      }\n      chromeLessOnMobile={chromeLessOnMobile}\n      direction={direction}\n      styleName={styleName}\n      {...props}\n    />\n  )\n\n  if (caption) {\n    return (\n      <figure\n        data-hide-code={hideCode}\n        className=\"flex flex-col data-[hide-code=true]:gap-4\"\n      >\n        {content}\n        <figcaption className=\"-mt-8 text-center text-sm text-muted-foreground data-[hide-code=true]:mt-0\">\n          {caption}\n        </figcaption>\n      </figure>\n    )\n  }\n\n  return content\n}\n"
  },
  {
    "path": "apps/v4/components/component-source.tsx",
    "content": "import * as React from \"react\"\n\nimport { formatCode } from \"@/lib/format-code\"\nimport { highlightCode } from \"@/lib/highlight-code\"\nimport { readFileFromRoot } from \"@/lib/read-file\"\nimport { getDemoItem, getRegistryItem } from \"@/lib/registry\"\nimport { cn } from \"@/lib/utils\"\nimport { CodeCollapsibleWrapper } from \"@/components/code-collapsible-wrapper\"\nimport { CopyButton } from \"@/components/copy-button\"\nimport { getIconForLanguageExtension } from \"@/components/icons\"\n\nexport async function ComponentSource({\n  name,\n  src,\n  title,\n  language,\n  collapsible = true,\n  className,\n  styleName = \"new-york-v4\",\n  maxLines,\n}: React.ComponentProps<\"div\"> & {\n  name?: string\n  src?: string\n  title?: string\n  language?: string\n  collapsible?: boolean\n  styleName?: string\n  maxLines?: number\n}) {\n  if (!name && !src) {\n    return null\n  }\n\n  let code: string | undefined\n\n  if (name) {\n    const item =\n      (await getDemoItem(name, styleName)) ??\n      (await getRegistryItem(name, styleName))\n    code = item?.files?.[0]?.content\n  }\n\n  if (src) {\n    code = await readFileFromRoot(src)\n  }\n\n  if (!code) {\n    return null\n  }\n\n  code = await formatCode(code, styleName)\n  code = code.replaceAll(\"/* eslint-disable react/no-children-prop */\\n\", \"\")\n\n  // Truncate code if maxLines is set.\n  if (maxLines) {\n    code = code.split(\"\\n\").slice(0, maxLines).join(\"\\n\")\n  }\n\n  const lang = language ?? title?.split(\".\").pop() ?? \"tsx\"\n  const highlightedCode = await highlightCode(code, lang)\n\n  if (!collapsible) {\n    return (\n      <div className={cn(\"relative\", className)}>\n        <ComponentCode\n          code={code}\n          highlightedCode={highlightedCode}\n          language={lang}\n          title={title}\n        />\n      </div>\n    )\n  }\n\n  return (\n    <CodeCollapsibleWrapper className={className}>\n      <ComponentCode\n        code={code}\n        highlightedCode={highlightedCode}\n        language={lang}\n        title={title}\n      />\n    </CodeCollapsibleWrapper>\n  )\n}\n\nfunction ComponentCode({\n  code,\n  highlightedCode,\n  language,\n  title,\n}: {\n  code: string\n  highlightedCode: string\n  language: string\n  title: string | undefined\n}) {\n  return (\n    <figure data-rehype-pretty-code-figure=\"\" className=\"[&>pre]:max-h-96\">\n      {title && (\n        <figcaption\n          data-rehype-pretty-code-title=\"\"\n          className=\"flex items-center gap-2 text-code-foreground [&_svg]:size-4 [&_svg]:text-code-foreground [&_svg]:opacity-70\"\n          data-language={language}\n        >\n          {getIconForLanguageExtension(language)}\n          {title}\n        </figcaption>\n      )}\n      <CopyButton value={code} />\n      <div dangerouslySetInnerHTML={{ __html: highlightedCode }} />\n    </figure>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/component-wrapper.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/registry/new-york-v4/lib/utils\"\n\nexport function ComponentWrapper({\n  className,\n  name,\n  children,\n  ...props\n}: React.ComponentPropsWithoutRef<\"div\"> & { name: string }) {\n  return (\n    <ComponentErrorBoundary name={name}>\n      <div\n        id={name}\n        data-name={name.toLowerCase()}\n        className={cn(\n          \"flex w-full scroll-mt-16 flex-col rounded-lg border\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"border-b px-4 py-3\">\n          <div className=\"text-sm font-medium\">{getComponentName(name)}</div>\n        </div>\n        <div className=\"flex flex-1 items-center gap-2 p-4\">{children}</div>\n      </div>\n    </ComponentErrorBoundary>\n  )\n}\n\nclass ComponentErrorBoundary extends React.Component<\n  { children: React.ReactNode; name: string },\n  { hasError: boolean }\n> {\n  constructor(props: { children: React.ReactNode; name: string }) {\n    super(props)\n    this.state = { hasError: false }\n  }\n\n  static getDerivedStateFromError() {\n    return { hasError: true }\n  }\n\n  componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n    console.error(`Error in component ${this.props.name}:`, error, errorInfo)\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return (\n        <div className=\"p-4 text-red-500\">\n          Something went wrong in component: {this.props.name}\n        </div>\n      )\n    }\n\n    return this.props.children\n  }\n}\n\nfunction getComponentName(name: string) {\n  // convert kebab-case to title case\n  return name.replace(/-/g, \" \").replace(/\\b\\w/g, (char) => char.toUpperCase())\n}\n"
  },
  {
    "path": "apps/v4/components/components-list.tsx",
    "content": "import Link from \"next/link\"\n\nimport { PAGES_NEW } from \"@/lib/docs\"\nimport { getPagesFromFolder, type PageTreeFolder } from \"@/lib/page-tree\"\n\nexport function ComponentsList({\n  componentsFolder,\n  currentBase,\n}: {\n  componentsFolder: PageTreeFolder\n  currentBase: string\n}) {\n  const list = getPagesFromFolder(componentsFolder, currentBase)\n\n  return (\n    <div className=\"grid grid-cols-2 gap-4 md:grid-cols-3 md:gap-x-8 lg:gap-x-16 lg:gap-y-6 xl:gap-x-20\">\n      {list.map((component) => (\n        <Link\n          key={component.$id}\n          href={component.url}\n          className=\"inline-flex items-center gap-2 text-lg font-medium underline-offset-4 hover:underline md:text-base\"\n        >\n          {component.name}\n          {PAGES_NEW.includes(component.url) && (\n            <span\n              className=\"flex size-2 rounded-full bg-blue-500\"\n              title=\"New\"\n            />\n          )}\n        </Link>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/copy-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconCheck, IconCopy } from \"@tabler/icons-react\"\n\nimport { trackEvent, type Event } from \"@/lib/events\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nfunction legacyCopyToClipboard(value: string) {\n  const textArea = document.createElement(\"textarea\")\n  textArea.value = value\n  textArea.setAttribute(\"readonly\", \"\")\n  textArea.style.position = \"fixed\"\n  textArea.style.opacity = \"0\"\n  textArea.style.pointerEvents = \"none\"\n\n  document.body.appendChild(textArea)\n  textArea.focus()\n  textArea.select()\n  textArea.setSelectionRange(0, value.length)\n\n  let hasCopied = false\n  try {\n    hasCopied = document.execCommand(\"copy\")\n  } catch {\n    hasCopied = false\n  }\n\n  document.body.removeChild(textArea)\n  return hasCopied\n}\n\nexport async function copyToClipboardWithMeta(value: string, event?: Event) {\n  if (typeof window === \"undefined\") {\n    return false\n  }\n\n  if (!value) {\n    return false\n  }\n\n  let hasCopied = false\n\n  if (navigator.clipboard?.writeText) {\n    try {\n      await navigator.clipboard.writeText(value)\n      hasCopied = true\n    } catch {\n      hasCopied = legacyCopyToClipboard(value)\n    }\n  } else {\n    hasCopied = legacyCopyToClipboard(value)\n  }\n\n  if (!hasCopied) {\n    return false\n  }\n\n  if (event) {\n    trackEvent(event)\n  }\n\n  return true\n}\n\nexport function CopyButton({\n  value,\n  className,\n  variant = \"ghost\",\n  event,\n  ...props\n}: React.ComponentProps<typeof Button> & {\n  value: string\n  src?: string\n  event?: Event[\"name\"]\n  tooltip?: string\n}) {\n  const [hasCopied, setHasCopied] = React.useState(false)\n\n  React.useEffect(() => {\n    if (hasCopied) {\n      const timer = setTimeout(() => setHasCopied(false), 2000)\n      return () => clearTimeout(timer)\n    }\n  }, [hasCopied])\n\n  return (\n    <Button\n      data-slot=\"copy-button\"\n      data-copied={hasCopied}\n      size=\"icon\"\n      variant={variant}\n      className={cn(\n        \"absolute top-3 right-2 z-10 size-7 bg-code hover:opacity-100 focus-visible:opacity-100\",\n        className\n      )}\n      onClick={async () => {\n        const hasCopied = await copyToClipboardWithMeta(\n          value,\n          event\n            ? {\n                name: event,\n                properties: {\n                  code: value,\n                },\n              }\n            : undefined\n        )\n\n        if (hasCopied) {\n          setHasCopied(true)\n        }\n      }}\n      {...props}\n    >\n      <span className=\"sr-only\">Copy</span>\n      {hasCopied ? <IconCheck /> : <IconCopy />}\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/directory-add-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconCheck, IconCopy, IconPlus } from \"@tabler/icons-react\"\n\nimport { useConfig } from \"@/hooks/use-config\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport function DirectoryAddButton({\n  registry,\n}: {\n  registry: { name: string }\n}) {\n  const [config, setConfig] = useConfig()\n  const [hasCopied, setHasCopied] = React.useState(false)\n  const [open, setOpen] = React.useState(false)\n  const isMobile = useIsMobile()\n\n  const packageManager = config.packageManager || \"pnpm\"\n\n  const commands = React.useMemo(() => {\n    return {\n      pnpm: `pnpm dlx shadcn@latest registry add ${registry.name}`,\n      npm: `npx shadcn@latest registry add ${registry.name}`,\n      yarn: `yarn dlx shadcn@latest registry add ${registry.name}`,\n      bun: `bunx --bun shadcn@latest registry add ${registry.name}`,\n    }\n  }, [registry.name])\n\n  const command = commands[packageManager]\n\n  React.useEffect(() => {\n    if (hasCopied) {\n      const timer = setTimeout(() => setHasCopied(false), 2000)\n      return () => clearTimeout(timer)\n    }\n  }, [hasCopied])\n\n  const handleCopy = React.useCallback(() => {\n    copyToClipboardWithMeta(command, {\n      name: \"copy_registry_add_command\",\n      properties: {\n        command,\n        registry: registry.name,\n      },\n    })\n    setHasCopied(true)\n  }, [command, registry.name])\n\n  const Trigger = (\n    <Button size=\"sm\" variant=\"outline\" className=\"relative z-10\">\n      Add <IconPlus />\n    </Button>\n  )\n\n  const Content = (\n    <Tabs\n      value={packageManager}\n      onValueChange={(value) => {\n        setConfig({\n          ...config,\n          packageManager: value as \"pnpm\" | \"npm\" | \"yarn\" | \"bun\",\n        })\n      }}\n      className=\"gap-0 overflow-hidden rounded-lg border\"\n    >\n      <div className=\"flex items-center gap-2 border-b p-2\">\n        <TabsList className=\"h-auto rounded-none bg-transparent p-0 font-mono *:data-[slot=tabs-trigger]:border *:data-[slot=tabs-trigger]:border-transparent *:data-[slot=tabs-trigger]:pt-0.5 *:data-[slot=tabs-trigger]:shadow-none! *:data-[slot=tabs-trigger]:data-[state=active]:border-input\">\n          <TabsTrigger value=\"pnpm\">pnpm</TabsTrigger>\n          <TabsTrigger value=\"npm\">npm</TabsTrigger>\n          <TabsTrigger value=\"yarn\">yarn</TabsTrigger>\n          <TabsTrigger value=\"bun\">bun</TabsTrigger>\n        </TabsList>\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <Button\n              size=\"icon-sm\"\n              variant=\"ghost\"\n              className=\"ml-auto size-7 rounded-lg\"\n              onClick={handleCopy}\n            >\n              {hasCopied ? (\n                <IconCheck className=\"size-4\" />\n              ) : (\n                <IconCopy className=\"size-4\" />\n              )}\n              <span className=\"sr-only\">Copy command</span>\n            </Button>\n          </TooltipTrigger>\n          <TooltipContent>\n            {hasCopied ? \"Copied!\" : \"Copy command\"}\n          </TooltipContent>\n        </Tooltip>\n      </div>\n      {Object.entries(commands).map(([key, cmd]) => (\n        <TabsContent key={key} value={key} className=\"mt-0\">\n          <div className=\"bg-surface px-3 py-3 text-surface-foreground\">\n            <div className=\"no-scrollbar overflow-x-auto\">\n              <code className=\"font-mono text-sm whitespace-nowrap\">{cmd}</code>\n            </div>\n          </div>\n        </TabsContent>\n      ))}\n    </Tabs>\n  )\n\n  if (isMobile) {\n    return (\n      <Drawer open={open} onOpenChange={setOpen}>\n        <DrawerTrigger asChild>{Trigger}</DrawerTrigger>\n        <DrawerContent>\n          <DrawerHeader>\n            <DrawerTitle>Add Registry</DrawerTitle>\n            <DrawerDescription>\n              Run this command to add {registry.name} to your project.\n            </DrawerDescription>\n          </DrawerHeader>\n          <div className=\"px-4\">{Content}</div>\n          <DrawerFooter>\n            <DrawerClose asChild>\n              <Button size=\"sm\">Done</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </DrawerContent>\n      </Drawer>\n    )\n  }\n\n  return (\n    <Dialog open={open} onOpenChange={setOpen}>\n      <DialogTrigger asChild>{Trigger}</DialogTrigger>\n      <DialogContent className=\"dialog-ring animate-none! rounded-xl sm:max-w-md\">\n        <DialogHeader>\n          <DialogTitle>Add Registry</DialogTitle>\n          <DialogDescription>\n            Run this command to add {registry.name} to your project.\n          </DialogDescription>\n        </DialogHeader>\n        {Content}\n        <DialogFooter>\n          <DialogClose asChild>\n            <Button size=\"sm\">Done</Button>\n          </DialogClose>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/directory-list.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconArrowUpRight } from \"@tabler/icons-react\"\n\nimport { useSearchRegistry } from \"@/hooks/use-search-registry\"\nimport { DirectoryAddButton } from \"@/components/directory-add-button\"\nimport globalRegistries from \"@/registry/directory.json\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemFooter,\n  ItemGroup,\n  ItemMedia,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nimport { SearchDirectory } from \"./search-directory\"\n\nfunction getHomepageUrl(homepage: string) {\n  const url = new URL(homepage)\n  url.searchParams.set(\"utm_source\", \"ui.shadcn.com\")\n  url.searchParams.set(\"utm_medium\", \"referral\")\n  url.searchParams.set(\"utm_campaign\", \"directory\")\n  return url.toString()\n}\n\nexport function DirectoryList() {\n  const { registries } = useSearchRegistry()\n\n  return (\n    <div className=\"mt-6\">\n      <SearchDirectory />\n      <ItemGroup className=\"my-8\">\n        {registries.map((registry, index) => (\n          <React.Fragment key={index}>\n            <Item className=\"group/item relative gap-6 px-0\">\n              <ItemMedia\n                variant=\"image\"\n                dangerouslySetInnerHTML={{ __html: registry.logo }}\n                className=\"grayscale *:[svg]:size-8 *:[svg]:fill-foreground\"\n              />\n              <ItemContent>\n                <ItemTitle>\n                  <a\n                    href={getHomepageUrl(registry.homepage)}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer external\"\n                    className=\"group flex items-center gap-1\"\n                  >\n                    {registry.name}{\" \"}\n                    <IconArrowUpRight className=\"size-4 opacity-0 group-hover:opacity-100\" />\n                  </a>\n                </ItemTitle>\n                {registry.description && (\n                  <ItemDescription className=\"text-pretty\">\n                    {registry.description}\n                  </ItemDescription>\n                )}\n              </ItemContent>\n              <ItemActions className=\"relative z-10 hidden self-start sm:flex\">\n                <DirectoryAddButton registry={registry} />\n              </ItemActions>\n              <ItemFooter className=\"justify-start pl-16 sm:hidden\">\n                <Button size=\"sm\" variant=\"outline\">\n                  View <IconArrowUpRight />\n                </Button>\n                <DirectoryAddButton registry={registry} />\n              </ItemFooter>\n            </Item>\n            {index < globalRegistries.length - 1 && (\n              <ItemSeparator className=\"my-1\" />\n            )}\n          </React.Fragment>\n        ))}\n      </ItemGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/docs-base-switcher.tsx",
    "content": "import Link from \"next/link\"\n\nimport { cn } from \"@/lib/utils\"\nimport { BASES } from \"@/registry/bases\"\n\nexport function DocsBaseSwitcher({\n  base,\n  component,\n  className,\n}: {\n  base: string\n  component: string\n  className?: string\n}) {\n  const activeBase = BASES.find((baseItem) => base === baseItem.name)\n\n  return (\n    <div className={cn(\"inline-flex w-full items-center gap-6\", className)}>\n      {BASES.map((baseItem) => (\n        <Link\n          key={baseItem.name}\n          href={`/docs/components/${baseItem.name}/${component}`}\n          data-active={base === baseItem.name}\n          className=\"relative inline-flex items-center justify-center gap-1 pt-1 pb-0.5 text-base font-medium text-muted-foreground transition-colors after:absolute after:inset-x-0 after:bottom-[-4px] after:h-0.5 after:bg-foreground after:opacity-0 after:transition-opacity hover:text-foreground data-[active=true]:text-foreground data-[active=true]:after:opacity-100\"\n        >\n          {baseItem.title}\n        </Link>\n      ))}\n      {activeBase?.meta?.logo && (\n        <div\n          className=\"ml-auto size-4 shrink-0 text-muted-foreground opacity-80 [&_svg]:size-4\"\n          dangerouslySetInnerHTML={{\n            __html: activeBase.meta.logo,\n          }}\n        />\n      )}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/docs-breadcrumb.tsx",
    "content": "\"use client\"\n\nimport { Fragment } from \"react\"\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\nimport { useBreadcrumb } from \"fumadocs-core/breadcrumb\"\nimport type { Root } from \"fumadocs-core/page-tree\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\n\nexport function DocsBreadcrumb({\n  tree,\n  className,\n}: {\n  tree: Root\n  className?: string\n}) {\n  const pathname = usePathname()\n  const items = useBreadcrumb(pathname, tree)\n\n  if (items.length === 0) return null\n\n  return (\n    <Breadcrumb className={className}>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/docs\" className=\"hover:text-accent-foreground\">\n              Docs\n            </Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        {items.map((item, i) => (\n          <Fragment key={i}>\n            {i !== 0 && <BreadcrumbSeparator />}\n            {item.url ? (\n              <BreadcrumbItem>\n                <BreadcrumbLink asChild>\n                  <Link\n                    href={item.url}\n                    className=\"truncate hover:text-accent-foreground\"\n                  >\n                    {item.name}\n                  </Link>\n                </BreadcrumbLink>\n              </BreadcrumbItem>\n            ) : (\n              <BreadcrumbItem>\n                <BreadcrumbPage>{item.name}</BreadcrumbPage>\n              </BreadcrumbItem>\n            )}\n          </Fragment>\n        ))}\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/docs-copy-page.tsx",
    "content": "\"use client\"\n\nimport { IconCheck, IconChevronDown, IconCopy } from \"@tabler/icons-react\"\n\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  Popover,\n  PopoverAnchor,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nfunction getPromptUrl(baseURL: string, url: string) {\n  return `${baseURL}?q=${encodeURIComponent(\n    `I’m looking at this shadcn/ui documentation: ${url}.\nHelp me understand how to use it. Be ready to explain concepts, give examples, or help debug based on it.\n  `\n  )}`\n}\n\nconst menuItems = {\n  markdown: (url: string) => (\n    <a href={`${url}.md`} target=\"_blank\" rel=\"noopener noreferrer\">\n      <svg strokeLinejoin=\"round\" viewBox=\"0 0 22 16\">\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M19.5 2.25H2.5C1.80964 2.25 1.25 2.80964 1.25 3.5V12.5C1.25 13.1904 1.80964 13.75 2.5 13.75H19.5C20.1904 13.75 20.75 13.1904 20.75 12.5V3.5C20.75 2.80964 20.1904 2.25 19.5 2.25ZM2.5 1C1.11929 1 0 2.11929 0 3.5V12.5C0 13.8807 1.11929 15 2.5 15H19.5C20.8807 15 22 13.8807 22 12.5V3.5C22 2.11929 20.8807 1 19.5 1H2.5ZM3 4.5H4H4.25H4.6899L4.98715 4.82428L7 7.02011L9.01285 4.82428L9.3101 4.5H9.75H10H11V5.5V11.5H9V7.79807L7.73715 9.17572L7 9.97989L6.26285 9.17572L5 7.79807V11.5H3V5.5V4.5ZM15 8V4.5H17V8H19.5L17 10.5L16 11.5L15 10.5L12.5 8H15Z\"\n          fill=\"currentColor\"\n        />\n      </svg>\n      View as Markdown\n    </a>\n  ),\n  v0: (url: string) => (\n    <a\n      href={getPromptUrl(\"https://v0.dev\", url)}\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n    >\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill=\"currentColor\"\n        viewBox=\"0 0 147 70\"\n        className=\"size-4.5 -translate-x-px\"\n      >\n        <path d=\"M56 50.203V14h14v46.156C70 65.593 65.593 70 60.156 70c-2.596 0-5.158-1-7-2.843L0 14h19.797L56 50.203ZM147 56h-14V23.953L100.953 56H133v14H96.687C85.814 70 77 61.186 77 50.312V14h14v32.156L123.156 14H91V0h36.312C138.186 0 147 8.814 147 19.688V56Z\" />\n      </svg>\n      <span className=\"-translate-x-[2px]\">Open in v0</span>\n    </a>\n  ),\n  chatgpt: (url: string) => (\n    <a\n      href={getPromptUrl(\"https://chatgpt.com\", url)}\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n    >\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n        <path\n          d=\"M22.282 9.821a5.985 5.985 0 0 0-.516-4.91 6.046 6.046 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.18a5.985 5.985 0 0 0-3.998 2.9 6.046 6.046 0 0 0 .743 7.097 5.98 5.98 0 0 0 .51 4.911 6.051 6.051 0 0 0 6.515 2.9A5.985 5.985 0 0 0 13.26 24a6.056 6.056 0 0 0 5.772-4.206 5.99 5.99 0 0 0 3.997-2.9 6.056 6.056 0 0 0-.747-7.073zM13.26 22.43a4.476 4.476 0 0 1-2.876-1.04l.141-.081 4.779-2.758a.795.795 0 0 0 .392-.681v-6.737l2.02 1.168a.071.071 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.494 4.494zM3.6 18.304a4.47 4.47 0 0 1-.535-3.014l.142.085 4.783 2.759a.771.771 0 0 0 .78 0l5.843-3.369v2.332a.08.08 0 0 1-.033.062L9.74 19.95a4.5 4.5 0 0 1-6.14-1.646zM2.34 7.896a4.485 4.485 0 0 1 2.366-1.973V11.6a.766.766 0 0 0 .388.676l5.815 3.355-2.02 1.168a.076.076 0 0 1-.071 0l-4.83-2.786A4.504 4.504 0 0 1 2.34 7.872zm16.597 3.855-5.833-3.387L15.119 7.2a.076.076 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.105v-5.678a.79.79 0 0 0-.407-.667zm2.01-3.023-.141-.085-4.774-2.782a.776.776 0 0 0-.785 0L9.409 9.23V6.897a.066.066 0 0 1 .028-.061l4.83-2.787a4.5 4.5 0 0 1 6.68 4.66zm-12.64 4.135-2.02-1.164a.08.08 0 0 1-.038-.057V6.075a4.5 4.5 0 0 1 7.375-3.453l-.142.08-4.778 2.758a.795.795 0 0 0-.393.681zm1.097-2.365 2.602-1.5 2.607 1.5v2.999l-2.597 1.5-2.607-1.5Z\"\n          fill=\"currentColor\"\n        />\n      </svg>\n      Open in ChatGPT\n    </a>\n  ),\n  claude: (url: string) => (\n    <a\n      href={getPromptUrl(\"https://claude.ai/new\", url)}\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n    >\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n        <path\n          d=\"m4.714 15.956 4.718-2.648.079-.23-.08-.128h-.23l-.79-.048-2.695-.073-2.337-.097-2.265-.122-.57-.121-.535-.704.055-.353.48-.321.685.06 1.518.104 2.277.157 1.651.098 2.447.255h.389l.054-.158-.133-.097-.103-.098-2.356-1.596-2.55-1.688-1.336-.972-.722-.491L2 6.223l-.158-1.008.655-.722.88.06.225.061.893.686 1.906 1.476 2.49 1.833.364.304.146-.104.018-.072-.164-.274-1.354-2.446-1.445-2.49-.644-1.032-.17-.619a2.972 2.972 0 0 1-.103-.729L6.287.133 6.7 0l.995.134.42.364.619 1.415L9.735 4.14l1.555 3.03.455.898.243.832.09.255h.159V9.01l.127-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.583.28.48.685-.067.444-.286 1.851-.558 2.903-.365 1.942h.213l.243-.242.983-1.306 1.652-2.064.728-.82.85-.904.547-.431h1.032l.759 1.129-.34 1.166-1.063 1.347-.88 1.142-1.263 1.7-.79 1.36.074.11.188-.02 2.853-.606 1.542-.28 1.84-.315.832.388.09.395-.327.807-1.967.486-2.307.462-3.436.813-.043.03.049.061 1.548.146.662.036h1.62l3.018.225.79.522.473.638-.08.485-1.213.62-1.64-.389-3.825-.91-1.31-.329h-.183v.11l1.093 1.068 2.003 1.81 2.508 2.33.127.578-.321.455-.34-.049-2.204-1.657-.85-.747-1.925-1.62h-.127v.17l.443.649 2.343 3.521.122 1.08-.17.353-.607.213-.668-.122-1.372-1.924-1.415-2.168-1.141-1.943-.14.08-.674 7.254-.316.37-.728.28-.607-.461-.322-.747.322-1.476.388-1.924.316-1.53.285-1.9.17-.632-.012-.042-.14.018-1.432 1.967-2.18 2.945-1.724 1.845-.413.164-.716-.37.066-.662.401-.589 2.386-3.036 1.439-1.882.929-1.086-.006-.158h-.055L4.138 18.56l-1.13.146-.485-.456.06-.746.231-.243 1.907-1.312Z\"\n          fill=\"currentColor\"\n        />\n      </svg>\n      Open in Claude\n    </a>\n  ),\n  scira: (url: string) => (\n    <a\n      href={getPromptUrl(\"https://scira.ai/\", url)}\n      target=\"_blank\"\n      className=\"m-0 p-0\"\n    >\n      <svg\n        width=\"910\"\n        height=\"934\"\n        viewBox=\"0 0 910 934\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M647.664 197.775C569.13 189.049 525.5 145.419 516.774 66.8849C508.048 145.419 464.418 189.049 385.884 197.775C464.418 206.501 508.048 250.131 516.774 328.665C525.5 250.131 569.13 206.501 647.664 197.775Z\"\n          fill=\"currentColor\"\n          stroke=\"currentColor\"\n          strokeWidth=\"8\"\n          strokeLinejoin=\"round\"\n        />\n        <path\n          d=\"M516.774 304.217C510.299 275.491 498.208 252.087 480.335 234.214C462.462 216.341 439.058 204.251 410.333 197.775C439.059 191.3 462.462 179.209 480.335 161.336C498.208 143.463 510.299 120.06 516.774 91.334C523.25 120.059 535.34 143.463 553.213 161.336C571.086 179.209 594.49 191.3 623.216 197.775C594.49 204.251 571.086 216.341 553.213 234.214C535.34 252.087 523.25 275.491 516.774 304.217Z\"\n          fill=\"currentColor\"\n          stroke=\"currentColor\"\n          strokeWidth=\"8\"\n          strokeLinejoin=\"round\"\n        />\n        <path\n          d=\"M857.5 508.116C763.259 497.644 710.903 445.288 700.432 351.047C689.961 445.288 637.605 497.644 543.364 508.116C637.605 518.587 689.961 570.943 700.432 665.184C710.903 570.943 763.259 518.587 857.5 508.116Z\"\n          stroke=\"currentColor\"\n          strokeWidth=\"20\"\n          strokeLinejoin=\"round\"\n        />\n        <path\n          d=\"M700.432 615.957C691.848 589.05 678.575 566.357 660.383 548.165C642.191 529.973 619.499 516.7 592.593 508.116C619.499 499.533 642.191 486.258 660.383 468.066C678.575 449.874 691.848 427.181 700.432 400.274C709.015 427.181 722.289 449.874 740.481 468.066C758.673 486.258 781.365 499.533 808.271 508.116C781.365 516.7 758.673 529.973 740.481 548.165C722.289 566.357 709.015 589.05 700.432 615.957Z\"\n          stroke=\"currentColor\"\n          strokeWidth=\"20\"\n          strokeLinejoin=\"round\"\n        />\n        <path\n          d=\"M889.949 121.237C831.049 114.692 798.326 81.9698 791.782 23.0692C785.237 81.9698 752.515 114.692 693.614 121.237C752.515 127.781 785.237 160.504 791.782 219.404C798.326 160.504 831.049 127.781 889.949 121.237Z\"\n          fill=\"currentColor\"\n          stroke=\"currentColor\"\n          strokeWidth=\"8\"\n          strokeLinejoin=\"round\"\n        />\n        <path\n          d=\"M791.782 196.795C786.697 176.937 777.869 160.567 765.16 147.858C752.452 135.15 736.082 126.322 716.226 121.237C736.082 116.152 752.452 107.324 765.16 94.6152C777.869 81.9065 786.697 65.5368 791.782 45.6797C796.867 65.5367 805.695 81.9066 818.403 94.6152C831.112 107.324 847.481 116.152 867.338 121.237C847.481 126.322 831.112 135.15 818.403 147.858C805.694 160.567 796.867 176.937 791.782 196.795Z\"\n          fill=\"currentColor\"\n          stroke=\"currentColor\"\n          strokeWidth=\"8\"\n          strokeLinejoin=\"round\"\n        />\n        <path\n          d=\"M760.632 764.337C720.719 814.616 669.835 855.1 611.872 882.692C553.91 910.285 490.404 924.255 426.213 923.533C362.022 922.812 298.846 907.419 241.518 878.531C184.19 849.643 134.228 808.026 95.4548 756.863C56.6815 705.7 30.1238 646.346 17.8129 583.343C5.50207 520.339 7.76433 455.354 24.4266 393.359C41.089 331.364 71.7099 274.001 113.947 225.658C156.184 177.315 208.919 139.273 268.117 114.442\"\n          stroke=\"currentColor\"\n          strokeWidth=\"30\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        />\n      </svg>\n      Open in Scira\n    </a>\n  ),\n}\n\nexport function DocsCopyPage({ page, url }: { page: string; url: string }) {\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\n\n  const trigger = (\n    <Button\n      variant=\"secondary\"\n      size=\"sm\"\n      className=\"peer -ml-0.5 size-8 shadow-none md:size-7 md:text-[0.8rem]\"\n    >\n      <IconChevronDown className=\"rotate-180 sm:rotate-0\" />\n    </Button>\n  )\n\n  return (\n    <Popover>\n      <div className=\"group/buttons relative flex rounded-lg bg-secondary *:[[data-slot=button]]:focus-visible:relative *:[[data-slot=button]]:focus-visible:z-10\">\n        <PopoverAnchor />\n        <Button\n          variant=\"secondary\"\n          size=\"sm\"\n          className=\"h-8 shadow-none md:h-7 md:text-[0.8rem]\"\n          onClick={() => copyToClipboard(page)}\n        >\n          {isCopied ? <IconCheck /> : <IconCopy />}\n          Copy Page\n        </Button>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild className=\"hidden sm:flex\">\n            {trigger}\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            align=\"end\"\n            className=\"animate-none! rounded-lg shadow-none\"\n          >\n            {Object.entries(menuItems).map(([key, value]) => (\n              <DropdownMenuItem key={key} asChild>\n                {value(url)}\n              </DropdownMenuItem>\n            ))}\n          </DropdownMenuContent>\n        </DropdownMenu>\n        <Separator\n          orientation=\"vertical\"\n          className=\"absolute top-1 right-8 z-0 h-6! bg-foreground/5! peer-focus-visible:opacity-0 sm:right-7 sm:h-5!\"\n        />\n        <PopoverTrigger asChild className=\"flex sm:hidden\">\n          {trigger}\n        </PopoverTrigger>\n        <PopoverContent\n          className=\"w-52 origin-center! rounded-lg bg-background/70 p-1 shadow-none backdrop-blur-sm dark:bg-background/60\"\n          align=\"start\"\n        >\n          {Object.entries(menuItems).map(([key, value]) => (\n            <Button\n              variant=\"ghost\"\n              size=\"lg\"\n              asChild\n              key={key}\n              className=\"w-full justify-start text-base font-normal *:[svg]:text-muted-foreground\"\n            >\n              {value(url)}\n            </Button>\n          ))}\n        </PopoverContent>\n      </div>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/docs-page-links.tsx",
    "content": "\"use client\"\n\nimport { IconCheck, IconCopy } from \"@tabler/icons-react\"\n\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\"\n\nfunction getPromptUrl(baseURL: string, url: string) {\n  return `${baseURL}?q=${encodeURIComponent(\n    `I'm looking at this shadcn/ui documentation: ${url}.\nHelp me understand how to use it. Be ready to explain concepts, give examples, or help debug based on it.\n  `\n  )}`\n}\n\nexport function DocsPageLinks({ page, url }: { page: string; url: string }) {\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\n\n  return (\n    <div className=\"flex flex-col gap-3 px-6\">\n      <ul className=\"flex flex-col gap-2 text-[0.8rem] text-muted-foreground\">\n        <li>\n          <button\n            onClick={() => copyToClipboard(page)}\n            className=\"inline-flex items-center gap-2 transition-colors hover:text-foreground\"\n          >\n            {isCopied ? (\n              <IconCheck className=\"size-4\" />\n            ) : (\n              <IconCopy className=\"size-4\" />\n            )}\n            Copy page\n          </button>\n        </li>\n        <li>\n          <a\n            href={`${url}.md`}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            className=\"inline-flex items-center gap-2 transition-colors hover:text-foreground\"\n          >\n            <svg strokeLinejoin=\"round\" viewBox=\"0 0 22 16\" className=\"size-4\">\n              <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M19.5 2.25H2.5C1.80964 2.25 1.25 2.80964 1.25 3.5V12.5C1.25 13.1904 1.80964 13.75 2.5 13.75H19.5C20.1904 13.75 20.75 13.1904 20.75 12.5V3.5C20.75 2.80964 20.1904 2.25 19.5 2.25ZM2.5 1C1.11929 1 0 2.11929 0 3.5V12.5C0 13.8807 1.11929 15 2.5 15H19.5C20.8807 15 22 13.8807 22 12.5V3.5C22 2.11929 20.8807 1 19.5 1H2.5ZM3 4.5H4H4.25H4.6899L4.98715 4.82428L7 7.02011L9.01285 4.82428L9.3101 4.5H9.75H10H11V5.5V11.5H9V7.79807L7.73715 9.17572L7 9.97989L6.26285 9.17572L5 7.79807V11.5H3V5.5V4.5ZM15 8V4.5H17V8H19.5L17 10.5L16 11.5L15 10.5L12.5 8H15Z\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            View as Markdown\n          </a>\n        </li>\n        <li>\n          <a\n            href={getPromptUrl(\"https://v0.dev\", url)}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            className=\"inline-flex items-center gap-2 transition-colors hover:text-foreground\"\n          >\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              fill=\"currentColor\"\n              viewBox=\"0 0 147 70\"\n              className=\"size-4\"\n            >\n              <path d=\"M56 50.203V14h14v46.156C70 65.593 65.593 70 60.156 70c-2.596 0-5.158-1-7-2.843L0 14h19.797L56 50.203ZM147 56h-14V23.953L100.953 56H133v14H96.687C85.814 70 77 61.186 77 50.312V14h14v32.156L123.156 14H91V0h36.312C138.186 0 147 8.814 147 19.688V56Z\" />\n            </svg>\n            Open in v0\n          </a>\n        </li>\n        <li>\n          <a\n            href={getPromptUrl(\"https://chatgpt.com\", url)}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            className=\"inline-flex items-center gap-2 transition-colors hover:text-foreground\"\n          >\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              viewBox=\"0 0 24 24\"\n              className=\"size-4\"\n            >\n              <path\n                d=\"M22.282 9.821a5.985 5.985 0 0 0-.516-4.91 6.046 6.046 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.18a5.985 5.985 0 0 0-3.998 2.9 6.046 6.046 0 0 0 .743 7.097 5.98 5.98 0 0 0 .51 4.911 6.051 6.051 0 0 0 6.515 2.9A5.985 5.985 0 0 0 13.26 24a6.056 6.056 0 0 0 5.772-4.206 5.99 5.99 0 0 0 3.997-2.9 6.056 6.056 0 0 0-.747-7.073zM13.26 22.43a4.476 4.476 0 0 1-2.876-1.04l.141-.081 4.779-2.758a.795.795 0 0 0 .392-.681v-6.737l2.02 1.168a.071.071 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.494 4.494zM3.6 18.304a4.47 4.47 0 0 1-.535-3.014l.142.085 4.783 2.759a.771.771 0 0 0 .78 0l5.843-3.369v2.332a.08.08 0 0 1-.033.062L9.74 19.95a4.5 4.5 0 0 1-6.14-1.646zM2.34 7.896a4.485 4.485 0 0 1 2.366-1.973V11.6a.766.766 0 0 0 .388.676l5.815 3.355-2.02 1.168a.076.076 0 0 1-.071 0l-4.83-2.786A4.504 4.504 0 0 1 2.34 7.872zm16.597 3.855-5.833-3.387L15.119 7.2a.076.076 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.105v-5.678a.79.79 0 0 0-.407-.667zm2.01-3.023-.141-.085-4.774-2.782a.776.776 0 0 0-.785 0L9.409 9.23V6.897a.066.066 0 0 1 .028-.061l4.83-2.787a4.5 4.5 0 0 1 6.68 4.66zm-12.64 4.135-2.02-1.164a.08.08 0 0 1-.038-.057V6.075a4.5 4.5 0 0 1 7.375-3.453l-.142.08-4.778 2.758a.795.795 0 0 0-.393.681zm1.097-2.365 2.602-1.5 2.607 1.5v2.999l-2.597 1.5-2.607-1.5Z\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            Open in ChatGPT\n          </a>\n        </li>\n        <li>\n          <a\n            href={getPromptUrl(\"https://claude.ai/new\", url)}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            className=\"inline-flex items-center gap-2 transition-colors hover:text-foreground\"\n          >\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              viewBox=\"0 0 24 24\"\n              className=\"size-4\"\n            >\n              <path\n                d=\"m4.714 15.956 4.718-2.648.079-.23-.08-.128h-.23l-.79-.048-2.695-.073-2.337-.097-2.265-.122-.57-.121-.535-.704.055-.353.48-.321.685.06 1.518.104 2.277.157 1.651.098 2.447.255h.389l.054-.158-.133-.097-.103-.098-2.356-1.596-2.55-1.688-1.336-.972-.722-.491L2 6.223l-.158-1.008.655-.722.88.06.225.061.893.686 1.906 1.476 2.49 1.833.364.304.146-.104.018-.072-.164-.274-1.354-2.446-1.445-2.49-.644-1.032-.17-.619a2.972 2.972 0 0 1-.103-.729L6.287.133 6.7 0l.995.134.42.364.619 1.415L9.735 4.14l1.555 3.03.455.898.243.832.09.255h.159V9.01l.127-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.583.28.48.685-.067.444-.286 1.851-.558 2.903-.365 1.942h.213l.243-.242.983-1.306 1.652-2.064.728-.82.85-.904.547-.431h1.032l.759 1.129-.34 1.166-1.063 1.347-.88 1.142-1.263 1.7-.79 1.36.074.11.188-.02 2.853-.606 1.542-.28 1.84-.315.832.388.09.395-.327.807-1.967.486-2.307.462-3.436.813-.043.03.049.061 1.548.146.662.036h1.62l3.018.225.79.522.473.638-.08.485-1.213.62-1.64-.389-3.825-.91-1.31-.329h-.183v.11l1.093 1.068 2.003 1.81 2.508 2.33.127.578-.321.455-.34-.049-2.204-1.657-.85-.747-1.925-1.62h-.127v.17l.443.649 2.343 3.521.122 1.08-.17.353-.607.213-.668-.122-1.372-1.924-1.415-2.168-1.141-1.943-.14.08-.674 7.254-.316.37-.728.28-.607-.461-.322-.747.322-1.476.388-1.924.316-1.53.285-1.9.17-.632-.012-.042-.14.018-1.432 1.967-2.18 2.945-1.724 1.845-.413.164-.716-.37.066-.662.401-.589 2.386-3.036 1.439-1.882.929-1.086-.006-.158h-.055L4.138 18.56l-1.13.146-.485-.456.06-.746.231-.243 1.907-1.312Z\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            Open in Claude\n          </a>\n        </li>\n        <li>\n          <a\n            href={getPromptUrl(\"https://scira.ai/\", url)}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            className=\"inline-flex items-center gap-2 transition-colors hover:text-foreground\"\n          >\n            <svg\n              width=\"910\"\n              height=\"934\"\n              viewBox=\"0 0 910 934\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              className=\"size-4\"\n            >\n              <path\n                d=\"M647.664 197.775C569.13 189.049 525.5 145.419 516.774 66.8849C508.048 145.419 464.418 189.049 385.884 197.775C464.418 206.501 508.048 250.131 516.774 328.665C525.5 250.131 569.13 206.501 647.664 197.775Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                strokeWidth=\"8\"\n                strokeLinejoin=\"round\"\n              />\n              <path\n                d=\"M516.774 304.217C510.299 275.491 498.208 252.087 480.335 234.214C462.462 216.341 439.058 204.251 410.333 197.775C439.059 191.3 462.462 179.209 480.335 161.336C498.208 143.463 510.299 120.06 516.774 91.334C523.25 120.059 535.34 143.463 553.213 161.336C571.086 179.209 594.49 191.3 623.216 197.775C594.49 204.251 571.086 216.341 553.213 234.214C535.34 252.087 523.25 275.491 516.774 304.217Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                strokeWidth=\"8\"\n                strokeLinejoin=\"round\"\n              />\n              <path\n                d=\"M857.5 508.116C763.259 497.644 710.903 445.288 700.432 351.047C689.961 445.288 637.605 497.644 543.364 508.116C637.605 518.587 689.961 570.943 700.432 665.184C710.903 570.943 763.259 518.587 857.5 508.116Z\"\n                stroke=\"currentColor\"\n                strokeWidth=\"20\"\n                strokeLinejoin=\"round\"\n              />\n              <path\n                d=\"M700.432 615.957C691.848 589.05 678.575 566.357 660.383 548.165C642.191 529.973 619.499 516.7 592.593 508.116C619.499 499.533 642.191 486.258 660.383 468.066C678.575 449.874 691.848 427.181 700.432 400.274C709.015 427.181 722.289 449.874 740.481 468.066C758.673 486.258 781.365 499.533 808.271 508.116C781.365 516.7 758.673 529.973 740.481 548.165C722.289 566.357 709.015 589.05 700.432 615.957Z\"\n                stroke=\"currentColor\"\n                strokeWidth=\"20\"\n                strokeLinejoin=\"round\"\n              />\n              <path\n                d=\"M889.949 121.237C831.049 114.692 798.326 81.9698 791.782 23.0692C785.237 81.9698 752.515 114.692 693.614 121.237C752.515 127.781 785.237 160.504 791.782 219.404C798.326 160.504 831.049 127.781 889.949 121.237Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                strokeWidth=\"8\"\n                strokeLinejoin=\"round\"\n              />\n              <path\n                d=\"M791.782 196.795C786.697 176.937 777.869 160.567 765.16 147.858C752.452 135.15 736.082 126.322 716.226 121.237C736.082 116.152 752.452 107.324 765.16 94.6152C777.869 81.9065 786.697 65.5368 791.782 45.6797C796.867 65.5367 805.695 81.9066 818.403 94.6152C831.112 107.324 847.481 116.152 867.338 121.237C847.481 126.322 831.112 135.15 818.403 147.858C805.694 160.567 796.867 176.937 791.782 196.795Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                strokeWidth=\"8\"\n                strokeLinejoin=\"round\"\n              />\n              <path\n                d=\"M760.632 764.337C720.719 814.616 669.835 855.1 611.872 882.692C553.91 910.285 490.404 924.255 426.213 923.533C362.022 922.812 298.846 907.419 241.518 878.531C184.19 849.643 134.228 808.026 95.4548 756.863C56.6815 705.7 30.1238 646.346 17.8129 583.343C5.50207 520.339 7.76433 455.354 24.4266 393.359C41.089 331.364 71.7099 274.001 113.947 225.658C156.184 177.315 208.919 139.273 268.117 114.442\"\n                stroke=\"currentColor\"\n                strokeWidth=\"30\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n              />\n            </svg>\n            Open in Scira\n          </a>\n        </li>\n      </ul>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/docs-sidebar.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport { PAGES_NEW } from \"@/lib/docs\"\nimport { showMcpDocs } from \"@/lib/flags\"\nimport { getCurrentBase, getPagesFromFolder } from \"@/lib/page-tree\"\nimport type { source } from \"@/lib/source\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst TOP_LEVEL_SECTIONS = [\n  { name: \"Introduction\", href: \"/docs\" },\n  {\n    name: \"Components\",\n    href: \"/docs/components\",\n  },\n  {\n    name: \"Installation\",\n    href: \"/docs/installation\",\n  },\n  {\n    name: \"Theming\",\n    href: \"/docs/theming\",\n  },\n  {\n    name: \"CLI\",\n    href: \"/docs/cli\",\n  },\n  {\n    name: \"RTL\",\n    href: \"/docs/rtl\",\n  },\n  {\n    name: \"Skills\",\n    href: \"/docs/skills\",\n  },\n  {\n    name: \"MCP Server\",\n    href: \"/docs/mcp\",\n  },\n  {\n    name: \"Registry\",\n    href: \"/docs/registry\",\n  },\n  {\n    name: \"Forms\",\n    href: \"/docs/forms\",\n  },\n  {\n    name: \"Changelog\",\n    href: \"/docs/changelog\",\n  },\n]\nconst EXCLUDED_SECTIONS = [\"installation\", \"dark-mode\", \"changelog\", \"rtl\"]\nconst EXCLUDED_PAGES = [\"/docs\", \"/docs/changelog\", \"/docs/rtl\", \"/docs/new\"]\n\nexport function DocsSidebar({\n  tree,\n  ...props\n}: React.ComponentProps<typeof Sidebar> & { tree: typeof source.pageTree }) {\n  const pathname = usePathname()\n  const currentBase = getCurrentBase(pathname)\n\n  return (\n    <Sidebar\n      className=\"sticky top-[calc(var(--header-height)+0.6rem)] z-30 hidden h-[calc(100svh-10rem)] overscroll-none bg-transparent [--sidebar-menu-width:--spacing(56)] lg:flex\"\n      collapsible=\"none\"\n      {...props}\n    >\n      <div className=\"h-9\" />\n      <div className=\"absolute top-8 z-10 h-8 w-(--sidebar-menu-width) shrink-0 bg-linear-to-b from-background via-background/80 to-background/50 blur-xs\" />\n      <div className=\"absolute top-12 right-2 bottom-0 hidden h-full w-px bg-linear-to-b from-transparent via-border to-transparent lg:flex\" />\n      <SidebarContent className=\"mx-auto no-scrollbar w-(--sidebar-menu-width) overflow-x-hidden px-2\">\n        <SidebarGroup className=\"pt-6\">\n          <SidebarGroupLabel className=\"font-medium text-muted-foreground\">\n            Sections\n          </SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {TOP_LEVEL_SECTIONS.map(({ name, href }) => {\n                if (!showMcpDocs && href.includes(\"/mcp\")) {\n                  return null\n                }\n                return (\n                  <SidebarMenuItem key={name}>\n                    <SidebarMenuButton\n                      asChild\n                      isActive={\n                        href === \"/docs\"\n                          ? pathname === href\n                          : pathname.startsWith(href)\n                      }\n                      className=\"relative h-[30px] w-fit overflow-visible border border-transparent text-[0.8rem] font-medium after:absolute after:inset-x-0 after:-inset-y-1 after:z-0 after:rounded-md data-[active=true]:border-accent data-[active=true]:bg-accent 3xl:fixed:w-full 3xl:fixed:max-w-48\"\n                    >\n                      <Link href={href}>\n                        <span className=\"absolute inset-0 flex w-(--sidebar-menu-width) bg-transparent\" />\n                        {name}\n                        {PAGES_NEW.includes(href) && (\n                          <span\n                            className=\"flex size-2 rounded-full bg-blue-500\"\n                            title=\"New\"\n                          />\n                        )}\n                      </Link>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                )\n              })}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n        {tree.children.map((item) => {\n          if (EXCLUDED_SECTIONS.includes(item.$id ?? \"\")) {\n            return null\n          }\n\n          return (\n            <SidebarGroup key={item.$id}>\n              <SidebarGroupLabel className=\"font-medium text-muted-foreground\">\n                {item.name}\n              </SidebarGroupLabel>\n              <SidebarGroupContent>\n                {item.type === \"folder\" && (\n                  <SidebarMenu className=\"gap-0.5\">\n                    {getPagesFromFolder(item, currentBase).map((page) => {\n                      if (!showMcpDocs && page.url.includes(\"/mcp\")) {\n                        return null\n                      }\n\n                      if (EXCLUDED_PAGES.includes(page.url)) {\n                        return null\n                      }\n\n                      return (\n                        <SidebarMenuItem key={page.url}>\n                          <SidebarMenuButton\n                            asChild\n                            isActive={page.url === pathname}\n                            className=\"relative h-[30px] w-fit overflow-visible border border-transparent text-[0.8rem] font-medium after:absolute after:inset-x-0 after:-inset-y-1 after:z-0 after:rounded-md data-[active=true]:border-accent data-[active=true]:bg-accent 3xl:fixed:w-full 3xl:fixed:max-w-48\"\n                          >\n                            <Link href={page.url}>\n                              <span className=\"absolute inset-0 flex w-(--sidebar-menu-width) bg-transparent\" />\n                              {page.name}\n                              {PAGES_NEW.includes(page.url) && (\n                                <span\n                                  className=\"flex size-2 rounded-full bg-blue-500\"\n                                  title=\"New\"\n                                />\n                              )}\n                            </Link>\n                          </SidebarMenuButton>\n                        </SidebarMenuItem>\n                      )\n                    })}\n                  </SidebarMenu>\n                )}\n              </SidebarGroupContent>\n            </SidebarGroup>\n          )\n        })}\n        <div className=\"sticky -bottom-1 z-10 h-16 shrink-0 bg-linear-to-t from-background via-background/80 to-background/50 blur-xs\" />\n      </SidebarContent>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/docs-toc.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconMenu3 } from \"@tabler/icons-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nfunction useActiveItem(itemIds: string[]) {\n  const [activeId, setActiveId] = React.useState<string | null>(null)\n\n  React.useEffect(() => {\n    const observer = new IntersectionObserver(\n      (entries) => {\n        for (const entry of entries) {\n          if (entry.isIntersecting) {\n            setActiveId(entry.target.id)\n          }\n        }\n      },\n      { rootMargin: \"0% 0% -80% 0%\" }\n    )\n\n    for (const id of itemIds ?? []) {\n      const element = document.getElementById(id)\n      if (element) {\n        observer.observe(element)\n      }\n    }\n\n    return () => {\n      for (const id of itemIds ?? []) {\n        const element = document.getElementById(id)\n        if (element) {\n          observer.unobserve(element)\n        }\n      }\n    }\n  }, [itemIds])\n\n  return activeId\n}\n\nexport function DocsTableOfContents({\n  toc,\n  variant = \"list\",\n  className,\n}: {\n  toc: {\n    title?: React.ReactNode\n    url: string\n    depth: number\n  }[]\n  variant?: \"dropdown\" | \"list\"\n  className?: string\n}) {\n  const [open, setOpen] = React.useState(false)\n  const itemIds = React.useMemo(\n    () => toc.map((item) => item.url.replace(\"#\", \"\")),\n    [toc]\n  )\n  const activeHeading = useActiveItem(itemIds)\n\n  if (!toc?.length) {\n    return null\n  }\n\n  if (variant === \"dropdown\") {\n    return (\n      <DropdownMenu open={open} onOpenChange={setOpen}>\n        <DropdownMenuTrigger asChild>\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            className={cn(\"h-8 md:h-7\", className)}\n          >\n            <IconMenu3 /> On This Page\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent\n          align=\"start\"\n          className=\"no-scrollbar max-h-[70svh]\"\n        >\n          {toc.map((item) => (\n            <DropdownMenuItem\n              key={item.url}\n              asChild\n              onClick={() => {\n                setOpen(false)\n              }}\n              data-depth={item.depth}\n              className=\"data-[depth=3]:pl-6 data-[depth=4]:pl-8\"\n            >\n              <a href={item.url}>{item.title}</a>\n            </DropdownMenuItem>\n          ))}\n        </DropdownMenuContent>\n      </DropdownMenu>\n    )\n  }\n\n  return (\n    <div className={cn(\"flex flex-col gap-2 p-4 pt-0 text-sm\", className)}>\n      <p className=\"sticky top-0 h-6 bg-background text-xs font-medium text-muted-foreground\">\n        On This Page\n      </p>\n      {toc.map((item) => (\n        <a\n          key={item.url}\n          href={item.url}\n          className=\"text-[0.8rem] text-muted-foreground no-underline transition-colors hover:text-foreground data-[active=true]:font-medium data-[active=true]:text-foreground data-[depth=3]:pl-4 data-[depth=4]:pl-6\"\n          data-active={item.url === `#${activeHeading}`}\n          data-depth={item.depth}\n        >\n          {item.title}\n        </a>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/examples-nav.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ScrollArea, ScrollBar } from \"@/registry/new-york-v4/ui/scroll-area\"\n\nconst examples = [\n  {\n    name: \"Dashboard\",\n    href: \"/examples/dashboard\",\n    code: \"https://github.com/shadcn/ui/tree/main/apps/v4/app/(app)/examples/dashboard\",\n    hidden: false,\n  },\n  {\n    name: \"Tasks\",\n    href: \"/examples/tasks\",\n    code: \"https://github.com/shadcn/ui/tree/main/apps/v4/app/(app)/examples/tasks\",\n    hidden: false,\n  },\n  {\n    name: \"Playground\",\n    href: \"/examples/playground\",\n    code: \"https://github.com/shadcn/ui/tree/main/apps/v4/app/(app)/examples/playground\",\n    hidden: false,\n  },\n  {\n    name: \"Authentication\",\n    href: \"/examples/authentication\",\n    code: \"https://github.com/shadcn/ui/tree/main/apps/v4/app/(app)/examples/authentication\",\n    hidden: false,\n  },\n  {\n    name: \"RTL\",\n    href: \"/examples/rtl\",\n    code: \"https://github.com/shadcn/ui/tree/main/apps/v4/app/(app)/examples/rtl\",\n    hidden: false,\n  },\n]\n\nexport function ExamplesNav({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  const pathname = usePathname()\n\n  return (\n    <div className={cn(\"flex items-center\", className)} {...props}>\n      <ScrollArea className=\"max-w-[96%] md:max-w-[600px] lg:max-w-none\">\n        <div className=\"flex items-center\">\n          <ExampleLink\n            example={{ name: \"Examples\", href: \"/\", code: \"\", hidden: false }}\n            isActive={pathname === \"/\"}\n          />\n          {examples.map((example) => (\n            <ExampleLink\n              key={example.href}\n              example={example}\n              isActive={pathname?.startsWith(example.href) ?? false}\n            />\n          ))}\n        </div>\n        <ScrollBar orientation=\"horizontal\" className=\"invisible\" />\n      </ScrollArea>\n    </div>\n  )\n}\n\nfunction ExampleLink({\n  example,\n  isActive,\n}: {\n  example: (typeof examples)[number]\n  isActive: boolean\n}) {\n  if (example.hidden) {\n    return null\n  }\n\n  return (\n    <Link\n      href={example.href}\n      key={example.href}\n      className=\"flex h-7 items-center justify-center gap-2 px-4 text-center text-base font-medium text-muted-foreground transition-colors hover:text-primary data-[active=true]:text-primary\"\n      data-active={isActive}\n    >\n      {example.name}\n      {example.name === \"RTL\" && (\n        <span className=\"flex size-2 rounded-full bg-blue-500\" title=\"New\" />\n      )}\n    </Link>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/github-link.tsx",
    "content": "import * as React from \"react\"\nimport Link from \"next/link\"\n\nimport { siteConfig } from \"@/lib/config\"\nimport { Icons } from \"@/components/icons\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Skeleton } from \"@/registry/new-york-v4/ui/skeleton\"\n\nexport function GitHubLink() {\n  return (\n    <Button asChild size=\"sm\" variant=\"ghost\" className=\"h-8 shadow-none\">\n      <Link href={siteConfig.links.github} target=\"_blank\" rel=\"noreferrer\">\n        <Icons.gitHub />\n        <React.Suspense fallback={<Skeleton className=\"h-4 w-[42px]\" />}>\n          <StarsCount />\n        </React.Suspense>\n      </Link>\n    </Button>\n  )\n}\n\nexport async function StarsCount() {\n  const data = await fetch(\"https://api.github.com/repos/shadcn-ui/ui\", {\n    next: { revalidate: 86400 },\n  })\n  const json = await data.json()\n\n  const formattedCount =\n    json.stargazers_count >= 1000\n      ? `${Math.round(json.stargazers_count / 1000)}k`\n      : json.stargazers_count?.toLocaleString()\n\n  return (\n    <span className=\"w-fit text-xs text-muted-foreground tabular-nums\">\n      {formattedCount}\n    </span>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/icons.tsx",
    "content": "import { FileIcon } from \"lucide-react\"\n\ntype IconProps = React.HTMLAttributes<SVGElement>\n\nexport const Icons = {\n  logo: (props: IconProps) => (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" {...props}>\n      <rect width=\"256\" height=\"256\" fill=\"none\" />\n      <line\n        x1=\"208\"\n        y1=\"128\"\n        x2=\"128\"\n        y2=\"208\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"32\"\n      />\n      <line\n        x1=\"192\"\n        y1=\"40\"\n        x2=\"40\"\n        y2=\"192\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"32\"\n      />\n    </svg>\n  ),\n  twitter: (props: IconProps) => (\n    <svg\n      {...props}\n      height=\"23\"\n      viewBox=\"0 0 1200 1227\"\n      width=\"23\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\" />\n    </svg>\n  ),\n  gitHub: (props: IconProps) => (\n    <svg viewBox=\"0 0 438.549 438.549\" {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M409.132 114.573c-19.608-33.596-46.205-60.194-79.798-79.8-33.598-19.607-70.277-29.408-110.063-29.408-39.781 0-76.472 9.804-110.063 29.408-33.596 19.605-60.192 46.204-79.8 79.8C9.803 148.168 0 184.854 0 224.63c0 47.78 13.94 90.745 41.827 128.906 27.884 38.164 63.906 64.572 108.063 79.227 5.14.954 8.945.283 11.419-1.996 2.475-2.282 3.711-5.14 3.711-8.562 0-.571-.049-5.708-.144-15.417a2549.81 2549.81 0 01-.144-25.406l-6.567 1.136c-4.187.767-9.469 1.092-15.846 1-6.374-.089-12.991-.757-19.842-1.999-6.854-1.231-13.229-4.086-19.13-8.559-5.898-4.473-10.085-10.328-12.56-17.556l-2.855-6.57c-1.903-4.374-4.899-9.233-8.992-14.559-4.093-5.331-8.232-8.945-12.419-10.848l-1.999-1.431c-1.332-.951-2.568-2.098-3.711-3.429-1.142-1.331-1.997-2.663-2.568-3.997-.572-1.335-.098-2.43 1.427-3.289 1.525-.859 4.281-1.276 8.28-1.276l5.708.853c3.807.763 8.516 3.042 14.133 6.851 5.614 3.806 10.229 8.754 13.846 14.842 4.38 7.806 9.657 13.754 15.846 17.847 6.184 4.093 12.419 6.136 18.699 6.136 6.28 0 11.704-.476 16.274-1.423 4.565-.952 8.848-2.383 12.847-4.285 1.713-12.758 6.377-22.559 13.988-29.41-10.848-1.14-20.601-2.857-29.264-5.14-8.658-2.286-17.605-5.996-26.835-11.14-9.235-5.137-16.896-11.516-22.985-19.126-6.09-7.614-11.088-17.61-14.987-29.979-3.901-12.374-5.852-26.648-5.852-42.826 0-23.035 7.52-42.637 22.557-58.817-7.044-17.318-6.379-36.732 1.997-58.24 5.52-1.715 13.706-.428 24.554 3.853 10.85 4.283 18.794 7.952 23.84 10.994 5.046 3.041 9.089 5.618 12.135 7.708 17.705-4.947 35.976-7.421 54.818-7.421s37.117 2.474 54.823 7.421l10.849-6.849c7.419-4.57 16.18-8.758 26.262-12.565 10.088-3.805 17.802-4.853 23.134-3.138 8.562 21.509 9.325 40.922 2.279 58.24 15.036 16.18 22.559 35.787 22.559 58.817 0 16.178-1.958 30.497-5.853 42.966-3.9 12.471-8.941 22.457-15.125 29.979-6.191 7.521-13.901 13.85-23.131 18.986-9.232 5.14-18.182 8.85-26.84 11.136-8.662 2.286-18.415 4.004-29.263 5.146 9.894 8.562 14.842 22.077 14.842 40.539v60.237c0 3.422 1.19 6.279 3.572 8.562 2.379 2.279 6.136 2.95 11.276 1.995 44.163-14.653 80.185-41.062 108.068-79.226 27.88-38.161 41.825-81.126 41.825-128.906-.01-39.771-9.818-76.454-29.414-110.049z\"\n      ></path>\n    </svg>\n  ),\n  radix: (props: IconProps) => (\n    <svg viewBox=\"0 0 25 25\" fill=\"none\" {...props}>\n      <path\n        d=\"M12 25C7.58173 25 4 21.4183 4 17C4 12.5817 7.58173 9 12 9V25Z\"\n        fill=\"currentcolor\"\n      ></path>\n      <path d=\"M12 0H4V8H12V0Z\" fill=\"currentcolor\"></path>\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      ></path>\n    </svg>\n  ),\n  aria: (props: IconProps) => (\n    <svg role=\"img\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}>\n      <path d=\"M13.966 22.624l-1.69-4.281H8.122l3.892-9.144 5.662 13.425zM8.884 1.376H0v21.248zm15.116 0h-8.884L24 22.624Z\" />\n    </svg>\n  ),\n  npm: (props: IconProps) => (\n    <svg viewBox=\"0 0 24 24\" {...props}>\n      <path\n        d=\"M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  yarn: (props: IconProps) => (\n    <svg viewBox=\"0 0 24 24\" {...props}>\n      <path\n        d=\"M12 0C5.375 0 0 5.375 0 12s5.375 12 12 12 12-5.375 12-12S18.625 0 12 0zm.768 4.105c.183 0 .363.053.525.157.125.083.287.185.755 1.154.31-.088.468-.042.551-.019.204.056.366.19.463.375.477.917.542 2.553.334 3.605-.241 1.232-.755 2.029-1.131 2.576.324.329.778.899 1.117 1.825.278.774.31 1.478.273 2.015a5.51 5.51 0 0 0 .602-.329c.593-.366 1.487-.917 2.553-.931.714-.009 1.269.445 1.353 1.103a1.23 1.23 0 0 1-.945 1.362c-.649.158-.95.278-1.821.843-1.232.797-2.539 1.242-3.012 1.39a1.686 1.686 0 0 1-.704.343c-.737.181-3.266.315-3.466.315h-.046c-.783 0-1.214-.241-1.45-.491-.658.329-1.51.19-2.122-.134a1.078 1.078 0 0 1-.58-1.153 1.243 1.243 0 0 1-.153-.195c-.162-.25-.528-.936-.454-1.946.056-.723.556-1.367.88-1.71a5.522 5.522 0 0 1 .408-2.256c.306-.727.885-1.348 1.32-1.737-.32-.537-.644-1.367-.329-2.21.227-.602.412-.936.82-1.08h-.005c.199-.074.389-.153.486-.259a3.418 3.418 0 0 1 2.298-1.103c.037-.093.079-.185.125-.283.31-.658.639-1.029 1.024-1.168a.94.94 0 0 1 .328-.06zm.006.7c-.507.016-1.001 1.519-1.001 1.519s-1.27-.204-2.266.871c-.199.218-.468.334-.746.44-.079.028-.176.023-.417.672-.371.991.625 2.094.625 2.094s-1.186.839-1.626 1.881c-.486 1.144-.338 2.261-.338 2.261s-.843.732-.899 1.487c-.051.663.139 1.2.343 1.515.227.343.51.176.51.176s-.561.653-.037.931c.477.25 1.283.394 1.71-.037.31-.31.371-1.001.486-1.283.028-.065.12.111.209.199.097.093.264.195.264.195s-.755.324-.445 1.066c.102.246.468.403 1.066.398.222-.005 2.664-.139 3.313-.296.375-.088.505-.283.505-.283s1.566-.431 2.998-1.357c.917-.598 1.293-.76 2.034-.936.612-.148.57-1.098-.241-1.084-.839.009-1.575.44-2.196.825-1.163.718-1.742.672-1.742.672l-.018-.032c-.079-.13.371-1.293-.134-2.678-.547-1.515-1.413-1.881-1.344-1.997.297-.5 1.038-1.297 1.334-2.78.176-.899.13-2.377-.269-3.151-.074-.144-.732.241-.732.241s-.616-1.371-.788-1.483a.271.271 0 0 0-.157-.046z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  pnpm: (props: IconProps) => (\n    <svg viewBox=\"0 0 24 24\" {...props}>\n      <path\n        d=\"M0 0v7.5h7.5V0zm8.25 0v7.5h7.498V0zm8.25 0v7.5H24V0zM8.25 8.25v7.5h7.498v-7.5zm8.25 0v7.5H24v-7.5zM0 16.5V24h7.5v-7.5zm8.25 0V24h7.498v-7.5zm8.25 0V24H24v-7.5z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  react: (props: IconProps) => (\n    <svg viewBox=\"0 0 24 24\" {...props}>\n      <path\n        d=\"M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  tailwind: (props: IconProps) => (\n    <svg viewBox=\"0 0 24 24\" {...props}>\n      <path\n        d=\"M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C10.337,13.382,8.976,12,6.001,12z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  google: (props: IconProps) => (\n    <svg role=\"img\" viewBox=\"0 0 24 24\" {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n      />\n    </svg>\n  ),\n  apple: (props: IconProps) => (\n    <svg role=\"img\" viewBox=\"0 0 24 24\" {...props}>\n      <path\n        d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  paypal: (props: IconProps) => (\n    <svg role=\"img\" viewBox=\"0 0 24 24\" {...props}>\n      <path\n        d=\"M7.076 21.337H2.47a.641.641 0 0 1-.633-.74L4.944.901C5.026.382 5.474 0 5.998 0h7.46c2.57 0 4.578.543 5.69 1.81 1.01 1.15 1.304 2.42 1.012 4.287-.023.143-.047.288-.077.437-.983 5.05-4.349 6.797-8.647 6.797h-2.19c-.524 0-.968.382-1.05.9l-1.12 7.106zm14.146-14.42a3.35 3.35 0 0 0-.607-.541c-.013.076-.026.175-.041.254-.93 4.778-4.005 7.201-9.138 7.201h-2.19a.563.563 0 0 0-.556.479l-1.187 7.527h-.506l-.24 1.516a.56.56 0 0 0 .554.647h3.882c.46 0 .85-.334.922-.788.06-.26.76-4.852.816-5.09a.932.932 0 0 1 .923-.788h.58c3.76 0 6.705-1.528 7.565-5.946.36-1.847.174-3.388-.777-4.471z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  spinner: (props: IconProps) => (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      {...props}\n    >\n      <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n    </svg>\n  ),\n  json: (props: IconProps) => (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M12.043 23.968c.479-.004.953-.029 1.426-.094a11.805 11.805 0 0 0 3.146-.863 12.404 12.404 0 0 0 3.793-2.542 11.977 11.977 0 0 0 2.44-3.427 11.794 11.794 0 0 0 1.02-3.476c.149-1.16.135-2.346-.045-3.499a11.96 11.96 0 0 0-.793-2.788 11.197 11.197 0 0 0-.854-1.617c-1.168-1.837-2.861-3.314-4.81-4.3a12.835 12.835 0 0 0-2.172-.87h-.005c.119.063.24.132.345.201.12.074.239.146.351.225a8.93 8.93 0 0 1 1.559 1.33c1.063 1.145 1.797 2.548 2.218 4.041.284.982.434 1.998.495 3.017.044.743.044 1.491-.047 2.229-.149 1.27-.554 2.51-1.228 3.596a7.475 7.475 0 0 1-1.903 2.084c-1.244.928-2.877 1.482-4.436 1.114a3.916 3.916 0 0 1-.748-.258 4.692 4.692 0 0 1-.779-.45 6.08 6.08 0 0 1-1.244-1.105 6.507 6.507 0 0 1-1.049-1.747 7.366 7.366 0 0 1-.494-2.54c-.03-1.273.225-2.553.854-3.67a6.43 6.43 0 0 1 1.663-1.918c.225-.178.464-.333.704-.479l.016-.007a5.121 5.121 0 0 0-1.441-.12 4.963 4.963 0 0 0-1.228.24c-.359.12-.704.27-1.019.45a6.146 6.146 0 0 0-.733.494c-.211.18-.42.36-.615.555-1.123 1.153-1.768 2.682-2.022 4.256-.15.973-.15 1.96-.091 2.95.105 1.395.391 2.787.945 4.062a8.518 8.518 0 0 0 1.348 2.173 8.14 8.14 0 0 0 3.132 2.23 7.934 7.934 0 0 0 2.113.54c.074.015.149.015.209.015zm-2.934-.398a4.102 4.102 0 0 1-.45-.228 8.5 8.5 0 0 1-2.038-1.534c-1.094-1.137-1.827-2.566-2.247-4.08a15.184 15.184 0 0 1-.495-3.172 12.14 12.14 0 0 1 .046-2.082c.135-1.257.495-2.501 1.124-3.58a6.889 6.889 0 0 1 1.783-2.053 6.23 6.23 0 0 1 1.633-.9 5.363 5.363 0 0 1 3.522-.045c.029 0 .029 0 .045.03.015.015.045.015.06.03.045.016.104.045.165.074.239.12.479.271.704.42a6.294 6.294 0 0 1 2.097 2.502c.42.914.615 1.934.631 2.938.014 1.079-.18 2.157-.645 3.146a6.42 6.42 0 0 1-2.638 2.832c.09.03.18.045.271.075.225.044.449.074.688.074 1.468.045 2.892-.66 3.94-1.647.195-.18.375-.375.54-.585.225-.27.435-.54.614-.823.239-.375.435-.75.614-1.154a8.112 8.112 0 0 0 .509-1.664c.196-1.004.211-2.022.149-3.026-.135-2.022-.673-4.045-1.842-5.724a9.054 9.054 0 0 0-.555-.719 9.868 9.868 0 0 0-1.063-1.034 8.477 8.477 0 0 0-1.363-.915 9.927 9.927 0 0 0-1.692-.598l-.3-.06c-.209-.03-.42-.044-.634-.06a8.453 8.453 0 0 0-1.015.016c-.704.045-1.412.16-2.112.337C5.799 1.227 2.863 3.566 1.3 6.67A11.834 11.834 0 0 0 .238 9.801a11.81 11.81 0 0 0-.104 3.775c.12 1.02.374 2.023.778 2.977.227.57.511 1.124.825 1.648 1.094 1.783 2.683 3.236 4.51 4.24.688.39 1.408.69 2.157.944.226.074.45.15.689.21z\"\n      />\n    </svg>\n  ),\n  ts: (props: IconProps) => (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" {...props}>\n      <path d=\"M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z\" />\n    </svg>\n  ),\n  css: (props: IconProps) => (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" {...props}>\n      <path d=\"M0 0v20.16A3.84 3.84 0 0 0 3.84 24h16.32A3.84 3.84 0 0 0 24 20.16V3.84A3.84 3.84 0 0 0 20.16 0Zm14.256 13.08c1.56 0 2.28 1.08 2.304 2.64h-1.608c.024-.288-.048-.6-.144-.84-.096-.192-.288-.264-.552-.264-.456 0-.696.264-.696.84-.024.576.288.888.768 1.08.72.288 1.608.744 1.92 1.296q.432.648.432 1.656c0 1.608-.912 2.592-2.496 2.592-1.656 0-2.4-1.032-2.424-2.688h1.68c0 .792.264 1.176.792 1.176.264 0 .456-.072.552-.24.192-.312.24-1.176-.048-1.512-.312-.408-.912-.6-1.32-.816q-.828-.396-1.224-.936c-.24-.36-.36-.888-.36-1.536 0-1.44.936-2.472 2.424-2.448m5.4 0c1.584 0 2.304 1.08 2.328 2.64h-1.608c0-.288-.048-.6-.168-.84-.096-.192-.264-.264-.528-.264-.48 0-.72.264-.72.84s.288.888.792 1.08c.696.288 1.608.744 1.92 1.296.264.432.408.984.408 1.656.024 1.608-.888 2.592-2.472 2.592-1.68 0-2.424-1.056-2.448-2.688h1.68c0 .744.264 1.176.792 1.176.264 0 .456-.072.552-.24.216-.312.264-1.176-.048-1.512-.288-.408-.888-.6-1.32-.816-.552-.264-.96-.576-1.2-.936s-.36-.888-.36-1.536c-.024-1.44.912-2.472 2.4-2.448m-11.031.018c.711-.006 1.419.198 1.839.63.432.432.672 1.128.648 1.992H9.336c.024-.456-.096-.792-.432-.96-.312-.144-.768-.048-.888.24-.12.264-.192.576-.168.864v3.504c0 .744.264 1.128.768 1.128a.65.65 0 0 0 .552-.264c.168-.24.192-.552.168-.84h1.776c.096 1.632-.984 2.712-2.568 2.688-1.536 0-2.496-.864-2.472-2.472v-4.032c0-.816.24-1.44.696-1.848.432-.408 1.146-.624 1.857-.63\" />\n    </svg>\n  ),\n  bash: (props: IconProps) => (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" {...props}>\n      <path d=\"M21.038 4.9 13.461.402a2.86 2.86 0 0 0-2.923.001L2.961 4.9A3.023 3.023 0 0 0 1.5 7.503v8.995c0 1.073.557 2.066 1.462 2.603l7.577 4.497a2.86 2.86 0 0 0 2.922 0l7.577-4.497a3.023 3.023 0 0 0 1.462-2.603V7.503A3.021 3.021 0 0 0 21.038 4.9zM15.17 18.946l.013.646c.001.078-.05.167-.111.198l-.383.22c-.061.031-.111-.007-.112-.085l-.007-.635c-.328.136-.66.169-.872.084-.04-.016-.057-.075-.041-.142l.139-.584a.24.24 0 0 1 .069-.121.163.163 0 0 1 .036-.026c.022-.011.043-.014.062-.006.229.077.521.041.802-.101.357-.181.596-.545.592-.907-.003-.328-.181-.465-.613-.468-.55.001-1.064-.107-1.072-.917-.007-.667.34-1.361.889-1.8l-.007-.652c-.001-.08.048-.168.111-.2l.37-.236c.061-.031.111.007.112.087l.006.653c.273-.109.511-.138.726-.088.047.012.067.076.048.151l-.144.578a.255.255 0 0 1-.065.116.161.161 0 0 1-.038.028.083.083 0 0 1-.057.009c-.098-.022-.332-.073-.699.113-.385.195-.52.53-.517.778.003.297.155.387.681.396.7.012 1.003.318 1.01 1.023.007.689-.362 1.433-.928 1.888zm3.973-1.087c0 .06-.008.116-.058.145l-1.916 1.164c-.05.029-.09.004-.09-.056v-.494c0-.06.037-.093.087-.122l1.887-1.129c.05-.029.09-.004.09.056v.436zm1.316-11.062-7.168 4.427c-.894.523-1.553 1.109-1.553 2.187v8.833c0 .645.26 1.063.66 1.184a2.304 2.304 0 0 1-.398.039c-.42 0-.833-.114-1.197-.33L3.226 18.64a2.494 2.494 0 0 1-1.201-2.142V7.503c0-.881.46-1.702 1.201-2.142L10.803.863a2.342 2.342 0 0 1 2.394 0l7.577 4.498a2.479 2.479 0 0 1 1.164 1.732c-.252-.536-.818-.682-1.479-.296z\" />\n    </svg>\n  ),\n  v0: (props: IconProps) => (\n    <svg\n      viewBox=\"0 0 40 20\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <path\n        d=\"M23.3919 0H32.9188C36.7819 0 39.9136 3.13165 39.9136 6.99475V16.0805H36.0006V6.99475C36.0006 6.90167 35.9969 6.80925 35.9898 6.71766L26.4628 16.079C26.4949 16.08 26.5272 16.0805 26.5595 16.0805H36.0006V19.7762H26.5595C22.6964 19.7762 19.4788 16.6139 19.4788 12.7508V3.68923H23.3919V12.7508C23.3919 12.9253 23.4054 13.0977 23.4316 13.2668L33.1682 3.6995C33.0861 3.6927 33.003 3.68923 32.9188 3.68923H23.3919V0Z\"\n        fill=\"currentColor\"\n      ></path>\n      <path\n        d=\"M13.7688 19.0956L0 3.68759H5.53933L13.6231 12.7337V3.68759H17.7535V17.5746C17.7535 19.6705 15.1654 20.6584 13.7688 19.0956Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  ),\n}\n\nexport function getIconForLanguageExtension(language: string) {\n  switch (language) {\n    case \"json\":\n      return <Icons.json />\n    case \"css\":\n      return <Icons.css className=\"fill-foreground\" />\n    case \"js\":\n    case \"jsx\":\n    case \"ts\":\n    case \"tsx\":\n    case \"typescript\":\n      return <Icons.ts className=\"fill-foreground\" />\n    default:\n      return <FileIcon />\n  }\n}\n"
  },
  {
    "path": "apps/v4/components/language-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport type Language = \"en\" | \"ar\" | \"he\"\n\nexport type Direction = \"ltr\" | \"rtl\"\n\nexport type Translations<\n  T extends Record<string, string> = Record<string, string>,\n> = Record<\n  Language,\n  {\n    dir: Direction\n    locale?: string\n    values: T\n  }\n>\n\nexport const languageOptions = [\n  { value: \"en\", label: \"English\" },\n  { value: \"ar\", label: \"Arabic (العربية)\" },\n  { value: \"he\", label: \"Hebrew (עברית)\" },\n] as const\n\ntype LanguageContextType = {\n  language: Language\n  setLanguage: (language: Language) => void\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n  undefined\n)\n\nexport function LanguageProvider({\n  children,\n  defaultLanguage = \"ar\",\n}: {\n  children: React.ReactNode\n  defaultLanguage?: Language\n}) {\n  const [language, setLanguage] = React.useState<Language>(defaultLanguage)\n\n  return (\n    <LanguageContext.Provider value={{ language, setLanguage }}>\n      {children}\n    </LanguageContext.Provider>\n  )\n}\n\nexport function useLanguageContext() {\n  const context = React.useContext(LanguageContext)\n  return context\n}\n\nexport function useTranslation<T extends Record<string, string>>(\n  translations: Translations<T>,\n  defaultLanguage: Language = \"ar\"\n) {\n  const context = useLanguageContext()\n  const [localLanguage, setLocalLanguage] =\n    React.useState<Language>(defaultLanguage)\n\n  const language = context?.language ?? localLanguage\n  const setLanguage = context?.setLanguage ?? setLocalLanguage\n\n  const { dir, locale, values: t } = translations[language]\n  return { language, setLanguage, dir, locale, t }\n}\n\nexport interface LanguageSelectorProps {\n  value: Language\n  onValueChange: (value: Language) => void\n}\n\nexport function LanguageSelector({\n  value,\n  onValueChange,\n  className,\n  languages = [\"en\", \"ar\", \"he\"],\n}: LanguageSelectorProps & {\n  className?: string\n  languages?: Language[]\n}) {\n  return (\n    <Select\n      items={languageOptions}\n      value={value}\n      onValueChange={(value) => onValueChange(value as Language)}\n    >\n      <SelectTrigger\n        size=\"sm\"\n        className={cn(\"w-36\", className)}\n        dir=\"ltr\"\n        data-name=\"language-selector\"\n      >\n        <SelectValue />\n      </SelectTrigger>\n      <SelectContent\n        dir=\"ltr\"\n        className=\"data-open:animate-none data-closed:animate-none\"\n      >\n        <SelectGroup>\n          {languageOptions\n            .filter((option) => languages.includes(option.value as Language))\n            .map((option) => (\n              <SelectItem key={option.value} value={option.value}>\n                {option.label}\n              </SelectItem>\n            ))}\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/lo-fi/accordion.tsx",
    "content": "import { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { Atom } from \"@/components/lo-fi/atom\"\n\nexport function AccordionLoFi() {\n  return (\n    <div className=\"flex flex-col\">\n      <div className=\"flex flex-col gap-1 border-b py-2\">\n        <div className=\"flex items-center justify-between\">\n          <Atom shade=\"300\" className=\"h-2 w-1/3\" />\n          <ChevronDownIcon className=\"size-3\" />\n        </div>\n      </div>\n      <div className=\"flex flex-col gap-1 border-b py-2\">\n        <div className=\"flex items-center justify-between\">\n          <Atom shade=\"300\" className=\"h-2 w-1/2\" />\n          <ChevronUpIcon className=\"size-3\" />\n        </div>\n        <div className=\"flex flex-col gap-1.5\">\n          <Atom shade=\"200\" className=\"h-2 w-2/3\" />\n          <Atom shade=\"200\" className=\"h-2 w-1/3\" />\n        </div>\n      </div>\n      <div className=\"flex flex-col gap-1 py-2\">\n        <div className=\"flex items-center justify-between\">\n          <Atom shade=\"300\" className=\"h-2 w-2/3\" />\n          <ChevronDownIcon className=\"size-3\" />\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/lo-fi/alert.tsx",
    "content": "import { CircleAlertIcon } from \"lucide-react\"\n\nimport { Atom } from \"@/components/lo-fi/atom\"\n\nexport function AlertLoFi() {\n  return (\n    <Atom\n      shade=\"100\"\n      className=\"rounder-lg flex items-start justify-between gap-2 border p-2\"\n    >\n      <CircleAlertIcon className=\"size-3\" />\n      <div className=\"flex flex-1 flex-col gap-1\">\n        <Atom shade=\"300\" className=\"h-2 w-2/3\" />\n        <Atom shade=\"200\" className=\"h-2 w-full\" />\n      </div>\n    </Atom>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/lo-fi/atom.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst atomVariants = cva(\n  \"inline-flex rounded-lg border-neutral-300 dark:border-neutral-600\",\n  {\n    variants: {\n      shade: {\n        \"50\": \"bg-neutral-50 dark:bg-neutral-900\",\n        \"100\": \"bg-neutral-100 dark:bg-neutral-800\",\n        \"200\": \"bg-neutral-200 dark:bg-neutral-700\",\n        \"300\": \"bg-neutral-300 dark:bg-neutral-600\",\n        \"400\": \"bg-neutral-400 dark:bg-neutral-500\",\n        \"500\": \"bg-neutral-500 dark:bg-neutral-400\",\n        \"600\": \"bg-neutral-600 dark:bg-neutral-300\",\n        \"700\": \"bg-neutral-700 dark:bg-neutral-200\",\n        \"800\": \"bg-neutral-800 dark:bg-neutral-100\",\n        \"900\": \"bg-neutral-900 dark:bg-neutral-50\",\n      },\n    },\n    defaultVariants: {\n      shade: \"50\",\n    },\n  }\n)\n\nfunction Atom({\n  className,\n  shade,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof atomVariants>) {\n  return (\n    <div\n      data-slot=\"button\"\n      className={cn(atomVariants({ shade, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Atom }\n"
  },
  {
    "path": "apps/v4/components/lo-fi/component.tsx",
    "content": "import Link from \"next/link\"\n\nimport { Atom } from \"@/components/lo-fi/atom\"\n\nfunction Component({ href, ...props }: React.ComponentProps<typeof Link>) {\n  return <Link href={href} className=\"group flex flex-col gap-2\" {...props} />\n}\n\nfunction ComponentContent({ ...props }: React.ComponentProps<typeof Atom>) {\n  return (\n    <Atom\n      shade=\"50\"\n      className=\"flex aspect-video items-center justify-center rounded-lg bg-muted/30 p-4 ring ring-muted *:w-full *:max-w-[70%]\"\n      {...props}\n    />\n  )\n}\n\nfunction ComponentName({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      className=\"text-center font-medium text-foreground underline-offset-2 group-hover:underline\"\n      {...props}\n    />\n  )\n}\n\nexport { Component, ComponentContent, ComponentName }\n"
  },
  {
    "path": "apps/v4/components/lo-fi/index.tsx",
    "content": "import { AccordionLoFi } from \"@/components/lo-fi/accordion\"\nimport { AlertLoFi } from \"@/components/lo-fi/alert\"\nimport {\n  Component,\n  ComponentContent,\n  ComponentName,\n} from \"@/components/lo-fi/component\"\n\nexport function LoFi() {\n  return (\n    <div className=\"mx-auto grid max-w-[350px] gap-6 sm:max-w-none sm:grid-cols-2\">\n      <Component href=\"/docs/components/accordion\">\n        <ComponentContent>\n          <AccordionLoFi />\n        </ComponentContent>\n        <ComponentName>Accordion</ComponentName>\n      </Component>\n      <Component href=\"/docs/components/alert\">\n        <ComponentContent>\n          <AlertLoFi />\n        </ComponentContent>\n        <ComponentName>Alert</ComponentName>\n      </Component>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/main-nav.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport { PAGES_NEW } from \"@/lib/docs\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function MainNav({\n  items,\n  className,\n  ...props\n}: React.ComponentProps<\"nav\"> & {\n  items: { href: string; label: string }[]\n}) {\n  const pathname = usePathname()\n\n  return (\n    <nav className={cn(\"items-center gap-0\", className)} {...props}>\n      {items.map((item) => (\n        <Button\n          key={item.href}\n          variant=\"ghost\"\n          asChild\n          size=\"sm\"\n          className=\"px-2.5\"\n        >\n          <Link\n            href={item.href}\n            data-active={pathname === item.href}\n            data-new={PAGES_NEW.includes(item.href)}\n            className=\"relative items-center\"\n          >\n            {item.label}\n          </Link>\n        </Button>\n      ))}\n    </nav>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/mobile-nav.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link, { type LinkProps } from \"next/link\"\nimport { usePathname, useRouter } from \"next/navigation\"\n\nimport { PAGES_NEW } from \"@/lib/docs\"\nimport { showMcpDocs } from \"@/lib/flags\"\nimport { getCurrentBase, getPagesFromFolder } from \"@/lib/page-tree\"\nimport { type source } from \"@/lib/source\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nconst TOP_LEVEL_SECTIONS = [\n  { name: \"Introduction\", href: \"/docs\" },\n  {\n    name: \"Components\",\n    href: \"/docs/components\",\n  },\n  {\n    name: \"Installation\",\n    href: \"/docs/installation\",\n  },\n  {\n    name: \"Theming\",\n    href: \"/docs/theming\",\n  },\n  {\n    name: \"CLI\",\n    href: \"/docs/cli\",\n  },\n  {\n    name: \"RTL\",\n    href: \"/docs/rtl\",\n  },\n  {\n    name: \"Skills\",\n    href: \"/docs/skills\",\n  },\n  {\n    name: \"MCP Server\",\n    href: \"/docs/mcp\",\n  },\n  {\n    name: \"Registry\",\n    href: \"/docs/registry\",\n  },\n  {\n    name: \"Forms\",\n    href: \"/docs/forms\",\n  },\n  {\n    name: \"Changelog\",\n    href: \"/docs/changelog\",\n  },\n]\n\nexport function MobileNav({\n  tree,\n  items,\n  className,\n}: {\n  tree: typeof source.pageTree\n  items: { href: string; label: string }[]\n  className?: string\n}) {\n  const [open, setOpen] = React.useState(false)\n  const pathname = usePathname()\n  const currentBase = getCurrentBase(pathname)\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"ghost\"\n          className={cn(\n            \"extend-touch-target h-8 touch-manipulation items-center justify-start gap-2.5 p-0! hover:bg-transparent focus-visible:bg-transparent focus-visible:ring-0 active:bg-transparent dark:hover:bg-transparent\",\n            className\n          )}\n        >\n          <div className=\"relative flex h-8 w-4 items-center justify-center\">\n            <div className=\"relative size-4\">\n              <span\n                className={cn(\n                  \"absolute left-0 block h-0.5 w-4 bg-foreground transition-all duration-100\",\n                  open ? \"top-[0.4rem] -rotate-45\" : \"top-1\"\n                )}\n              />\n              <span\n                className={cn(\n                  \"absolute left-0 block h-0.5 w-4 bg-foreground transition-all duration-100\",\n                  open ? \"top-[0.4rem] rotate-45\" : \"top-2.5\"\n                )}\n              />\n            </div>\n            <span className=\"sr-only\">Toggle Menu</span>\n          </div>\n          <span className=\"flex h-8 items-center text-lg leading-none font-medium\">\n            Menu\n          </span>\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent\n        className=\"no-scrollbar h-(--radix-popper-available-height) w-(--radix-popper-available-width) overflow-y-auto rounded-none border-none bg-background/90 p-0 shadow-none backdrop-blur duration-100 data-open:animate-none!\"\n        align=\"start\"\n        side=\"bottom\"\n        alignOffset={-16}\n        sideOffset={14}\n      >\n        <div className=\"flex flex-col gap-12 overflow-auto px-6 py-6\">\n          <div className=\"flex flex-col gap-4\">\n            <div className=\"text-sm font-medium text-muted-foreground\">\n              Menu\n            </div>\n            <div className=\"flex flex-col gap-3\">\n              <MobileLink href=\"/\" onOpenChange={setOpen}>\n                Home\n              </MobileLink>\n              {items.map((item, index) => (\n                <MobileLink key={index} href={item.href} onOpenChange={setOpen}>\n                  {item.label}\n                </MobileLink>\n              ))}\n            </div>\n          </div>\n          <div className=\"flex flex-col gap-4\">\n            <div className=\"text-sm font-medium text-muted-foreground\">\n              Sections\n            </div>\n            <div className=\"flex flex-col gap-3\">\n              {TOP_LEVEL_SECTIONS.map(({ name, href }) => {\n                if (!showMcpDocs && href.includes(\"/mcp\")) {\n                  return null\n                }\n                return (\n                  <MobileLink key={name} href={href} onOpenChange={setOpen}>\n                    {name}\n                    {PAGES_NEW.includes(href) && (\n                      <span\n                        className=\"flex size-2 rounded-full bg-blue-500\"\n                        title=\"New\"\n                      />\n                    )}\n                  </MobileLink>\n                )\n              })}\n            </div>\n          </div>\n          <div className=\"flex flex-col gap-8\">\n            {tree?.children?.map((group, index) => {\n              if (group.type === \"folder\") {\n                const pages = getPagesFromFolder(group, currentBase)\n                return (\n                  <div key={index} className=\"flex flex-col gap-4\">\n                    <div className=\"text-sm font-medium text-muted-foreground\">\n                      {group.name}\n                    </div>\n                    <div className=\"flex flex-col gap-3\">\n                      {pages.map((item) => {\n                        if (!showMcpDocs && item.url.includes(\"/mcp\")) {\n                          return null\n                        }\n                        return (\n                          <MobileLink\n                            key={`${item.url}-${index}`}\n                            href={item.url}\n                            onOpenChange={setOpen}\n                            className=\"flex items-center gap-2\"\n                          >\n                            {item.name}{\" \"}\n                            {PAGES_NEW.includes(item.url) && (\n                              <span className=\"flex size-2 rounded-full bg-blue-500\" />\n                            )}\n                          </MobileLink>\n                        )\n                      })}\n                    </div>\n                  </div>\n                )\n              }\n            })}\n          </div>\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}\n\nfunction MobileLink({\n  href,\n  onOpenChange,\n  className,\n  children,\n  ...props\n}: LinkProps & {\n  onOpenChange?: (open: boolean) => void\n  children: React.ReactNode\n  className?: string\n}) {\n  const router = useRouter()\n  return (\n    <Link\n      href={href}\n      onClick={() => {\n        router.push(href.toString())\n        onOpenChange?.(false)\n      }}\n      className={cn(\"flex items-center gap-2 text-2xl font-medium\", className)}\n      {...props}\n    >\n      {children}\n    </Link>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/mode-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Script from \"next/script\"\nimport { useTheme } from \"next-themes\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useMetaColor } from \"@/hooks/use-meta-color\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport const DARK_MODE_FORWARD_TYPE = \"dark-mode-forward\"\n\nexport function ModeSwitcher({\n  variant = \"ghost\",\n  className,\n}: {\n  variant?: React.ComponentProps<typeof Button>[\"variant\"]\n  className?: React.ComponentProps<typeof Button>[\"className\"]\n}) {\n  const { setTheme, resolvedTheme } = useTheme()\n  const { setMetaColor, metaColor } = useMetaColor()\n\n  React.useEffect(() => {\n    setMetaColor(metaColor)\n  }, [metaColor, setMetaColor])\n\n  const toggleTheme = React.useCallback(() => {\n    setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n  }, [resolvedTheme, setTheme])\n\n  return (\n    <Button\n      variant={variant}\n      size=\"icon\"\n      className={cn(\"group/toggle extend-touch-target size-8\", className)}\n      onClick={toggleTheme}\n    >\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"24\"\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        className=\"size-4.5\"\n      >\n        <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n        <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\n        <path d=\"M12 3l0 18\" />\n        <path d=\"M12 9l4.65 -4.65\" />\n        <path d=\"M12 14.3l7.37 -7.37\" />\n        <path d=\"M12 19.6l8.85 -8.85\" />\n      </svg>\n      <span className=\"sr-only\">Toggle theme</span>\n    </Button>\n  )\n}\n\nexport function DarkModeScript() {\n  return (\n    // eslint-disable-next-line @next/next/no-before-interactive-script-outside-document\n    <Script\n      id=\"dark-mode-listener\"\n      strategy=\"beforeInteractive\"\n      dangerouslySetInnerHTML={{\n        __html: `\n            (function() {\n              // Forward D key\n              document.addEventListener('keydown', function(e) {\n                if ((e.key === 'd' || e.key === 'D') && !e.metaKey && !e.ctrlKey && !e.altKey) {\n                  if (\n                    (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n                    e.target instanceof HTMLInputElement ||\n                    e.target instanceof HTMLTextAreaElement ||\n                    e.target instanceof HTMLSelectElement\n                  ) {\n                    return;\n                  }\n                  e.preventDefault();\n                  if (window.parent && window.parent !== window) {\n                    window.parent.postMessage({\n                      type: '${DARK_MODE_FORWARD_TYPE}',\n                      key: e.key\n                    }, '*');\n                  }\n                }\n              });\n\n            })();\n          `,\n      }}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/nav-header.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport {\n  NavigationMenu,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n} from \"@/registry/new-york-v4/ui/navigation-menu\"\n\nexport function NavHeader() {\n  const pathname = usePathname()\n\n  return (\n    <NavigationMenu className=\"hidden sm:flex\">\n      <NavigationMenuList className=\"gap-2 *:data-[slot=navigation-menu-item]:h-7 **:data-[slot=navigation-menu-link]:py-1 **:data-[slot=navigation-menu-link]:font-medium\">\n        <NavigationMenuItem>\n          <NavigationMenuLink asChild data-active={pathname === \"/\"}>\n            <Link href=\"/\">Home</Link>\n          </NavigationMenuLink>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuLink asChild data-active={pathname === \"/charts\"}>\n            <Link href=\"/charts\">Charts</Link>\n          </NavigationMenuLink>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuLink asChild data-active={pathname === \"/forms\"}>\n            <Link href=\"/forms\">Forms</Link>\n          </NavigationMenuLink>\n        </NavigationMenuItem>\n      </NavigationMenuList>\n    </NavigationMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  BadgeCheck,\n  Bell,\n  ChevronsUpDown,\n  CreditCard,\n  LogOut,\n  Sparkles,\n} from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-semibold\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-semibold\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <LogOut />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/open-in-v0-button.tsx",
    "content": "import { cn } from \"@/lib/utils\"\nimport { Icons } from \"@/components/icons\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\n// v0 uses the default style.\nconst V0_STYLE = \"new-york-v4\"\n\nexport function OpenInV0Button({\n  name,\n  className,\n  ...props\n}: React.ComponentProps<typeof Button> & {\n  name: string\n}) {\n  return (\n    <Button\n      size=\"sm\"\n      asChild\n      className={cn(\"h-[1.8rem] gap-1\", className)}\n      {...props}\n    >\n      <a\n        href={`${process.env.NEXT_PUBLIC_V0_URL}/chat/api/open?url=${process.env.NEXT_PUBLIC_APP_URL}/r/styles/${V0_STYLE}/${name}.json`}\n        target=\"_blank\"\n      >\n        Open in <Icons.v0 className=\"size-5\" />\n      </a>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/open-in-v0-cta.tsx",
    "content": "import { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function OpenInV0Cta({ className }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      className={cn(\n        \"group relative flex flex-col gap-2 rounded-lg bg-surface p-6 text-sm text-surface-foreground\",\n        className\n      )}\n    >\n      <div className=\"text-base leading-tight font-semibold text-balance group-hover:underline\">\n        Deploy your shadcn/ui app on Vercel\n      </div>\n      <div className=\"text-muted-foreground\">\n        Trusted by OpenAI, Sonos, Adobe, and more.\n      </div>\n      <div className=\"text-muted-foreground\">\n        Vercel provides tools and infrastructure to deploy apps and features at\n        scale.\n      </div>\n      <Button size=\"sm\" className=\"mt-2 w-fit\">\n        Deploy Now\n      </Button>\n      <a\n        href=\"https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout\"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n        className=\"absolute inset-0\"\n      >\n        <span className=\"sr-only\">Deploy to Vercel</span>\n      </a>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/page-header.tsx",
    "content": "import { cn } from \"@/lib/utils\"\n\nfunction PageHeader({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"section\">) {\n  return (\n    <section className={cn(\"border-grid\", className)} {...props}>\n      <div className=\"container-wrapper\">\n        <div className=\"container flex flex-col items-center gap-2 px-6 py-8 text-center md:py-16 lg:py-20 xl:gap-4\">\n          {children}\n        </div>\n      </div>\n    </section>\n  )\n}\n\nfunction PageHeaderHeading({\n  className,\n  ...props\n}: React.ComponentProps<\"h1\">) {\n  return (\n    <h1\n      className={cn(\n        \"leading-tighter max-w-3xl text-3xl font-semibold tracking-tight text-balance text-primary lg:leading-[1.1] lg:font-semibold xl:text-5xl xl:tracking-tighter\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PageHeaderDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      className={cn(\n        \"max-w-4xl text-base text-balance text-foreground sm:text-lg\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PageActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      className={cn(\n        \"flex w-full items-center justify-center gap-2 pt-2 **:data-[slot=button]:shadow-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { PageActions, PageHeader, PageHeaderDescription, PageHeaderHeading }\n"
  },
  {
    "path": "apps/v4/components/page-nav.tsx",
    "content": "import { cn } from \"@/lib/utils\"\n\nexport function PageNav({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"container-wrapper scroll-mt-24\", className)} {...props}>\n      <div className=\"container flex items-center justify-between gap-4 py-4\">\n        {children}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/search-directory.tsx",
    "content": "import * as React from \"react\"\nimport { Search, X } from \"lucide-react\"\n\nimport { useSearchRegistry } from \"@/hooks/use-search-registry\"\nimport { Field } from \"@/registry/new-york-v4/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nexport const SearchDirectory = () => {\n  const { query, registries, setQuery } = useSearchRegistry()\n\n  const onQueryChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const value = e.target.value\n    setQuery(value)\n  }\n\n  return (\n    <Field>\n      <InputGroup>\n        <InputGroupAddon>\n          <Search />\n        </InputGroupAddon>\n        <InputGroupInput\n          placeholder=\"Search\"\n          value={query}\n          onChange={onQueryChange}\n        />\n        <InputGroupAddon align=\"inline-end\">\n          <span className=\"text-muted-foreground tabular-nums sm:text-xs\">\n            {registries.length}{\" \"}\n            {registries.length === 1 ? \"registry\" : \"registries\"}\n          </span>\n        </InputGroupAddon>\n        <InputGroupAddon\n          align=\"inline-end\"\n          data-disabled={!query.length}\n          className=\"data-[disabled=true]:hidden\"\n        >\n          <InputGroupButton\n            aria-label=\"Clear\"\n            title=\"Clear\"\n            size=\"icon-xs\"\n            onClick={() => setQuery(null)}\n          >\n            <X />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/site-config.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { GalleryHorizontalIcon } from \"lucide-react\"\n\nimport { trackEvent } from \"@/lib/events\"\nimport { cn } from \"@/lib/utils\"\nimport { useLayout } from \"@/hooks/use-layout\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport function SiteConfig({ className }: React.ComponentProps<typeof Button>) {\n  const { layout, setLayout } = useLayout()\n\n  return (\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n      onClick={() => {\n        const newLayout = layout === \"fixed\" ? \"full\" : \"fixed\"\n        setLayout(newLayout)\n        trackEvent({\n          name: \"set_layout\",\n          properties: { layout: newLayout },\n        })\n      }}\n      className={cn(\"size-8\", className)}\n      title=\"Toggle layout\"\n    >\n      <span className=\"sr-only\">Toggle layout</span>\n      <GalleryHorizontalIcon />\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/site-footer.tsx",
    "content": "import { siteConfig } from \"@/lib/config\"\n\nexport function SiteFooter() {\n  return (\n    <footer className=\"group-has-[.docs-nav]/body:pb-20 group-has-[.section-soft]/body:bg-surface/40 group-has-[[data-slot=designer]]/body:hidden group-has-[[data-slot=docs]]/body:hidden group-has-[.docs-nav]/body:sm:pb-0 dark:bg-transparent dark:group-has-[.section-soft]/body:bg-surface/40 3xl:fixed:bg-transparent\">\n      <div className=\"container-wrapper px-4 xl:px-6\">\n        <div className=\"flex h-(--footer-height) items-center justify-between\">\n          <div className=\"w-full px-1 text-center text-xs leading-loose text-muted-foreground sm:text-sm\">\n            Built by{\" \"}\n            <a\n              href={siteConfig.links.twitter}\n              target=\"_blank\"\n              rel=\"noreferrer\"\n              className=\"font-medium underline underline-offset-4\"\n            >\n              shadcn\n            </a>{\" \"}\n            at{\" \"}\n            <a\n              href=\"https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout\"\n              target=\"_blank\"\n              rel=\"noreferrer\"\n              className=\"font-medium underline underline-offset-4\"\n            >\n              Vercel\n            </a>\n            . The source code is available on{\" \"}\n            <a\n              href={siteConfig.links.github}\n              target=\"_blank\"\n              rel=\"noreferrer\"\n              className=\"font-medium underline underline-offset-4\"\n            >\n              GitHub\n            </a>\n            .\n          </div>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/site-header.tsx",
    "content": "import Link from \"next/link\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { PlusSignIcon } from \"@hugeicons/core-free-icons\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\n\nimport { getColors } from \"@/lib/colors\"\nimport { siteConfig } from \"@/lib/config\"\nimport { source } from \"@/lib/source\"\nimport { CommandMenu } from \"@/components/command-menu\"\nimport { GitHubLink } from \"@/components/github-link\"\nimport { Icons } from \"@/components/icons\"\nimport { MainNav } from \"@/components/main-nav\"\nimport { MobileNav } from \"@/components/mobile-nav\"\nimport { ModeSwitcher } from \"@/components/mode-switcher\"\nimport { SiteConfig } from \"@/components/site-config\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { ProjectForm } from \"@/app/(create)/components/project-form\"\nimport { V0Button } from \"@/app/(create)/components/v0-button\"\n\nexport function SiteHeader() {\n  const colors = getColors()\n  const pageTree = source.pageTree\n\n  return (\n    <header className=\"sticky top-0 z-50 w-full bg-background\">\n      <div className=\"container-wrapper px-6 3xl:fixed:px-0\">\n        <div className=\"flex h-(--header-height) items-center **:data-[slot=separator]:h-4! 3xl:fixed:container\">\n          <MobileNav\n            tree={pageTree}\n            items={siteConfig.navItems}\n            className=\"flex lg:hidden\"\n          />\n          <Button\n            asChild\n            variant=\"ghost\"\n            size=\"icon\"\n            className=\"hidden size-8 lg:flex\"\n          >\n            <Link href=\"/\">\n              <Icons.logo className=\"size-5\" />\n              <span className=\"sr-only\">{siteConfig.name}</span>\n            </Link>\n          </Button>\n          <MainNav items={siteConfig.navItems} className=\"hidden lg:flex\" />\n          <div className=\"ml-auto flex items-center gap-2 md:flex-1 md:justify-end\">\n            <div className=\"hidden w-full flex-1 md:flex md:w-auto md:flex-none\">\n              <CommandMenu\n                tree={pageTree}\n                colors={colors}\n                navItems={siteConfig.navItems}\n              />\n            </div>\n            <Separator\n              orientation=\"vertical\"\n              className=\"ml-2 hidden lg:block\"\n            />\n            <GitHubLink />\n            <Separator orientation=\"vertical\" className=\"hidden 3xl:flex\" />\n            <SiteConfig className=\"hidden 3xl:flex\" />\n            <Separator orientation=\"vertical\" />\n            <ModeSwitcher />\n            <div className=\"hidden items-center gap-2 group-has-data-[slot=designer]/layout:md:flex\">\n              <Separator orientation=\"vertical\" />\n              <V0Button />\n              <ProjectForm />\n            </div>\n            <div className=\"hidden items-center gap-2 group-has-data-[slot=designer]/layout:flex group-has-data-[slot=designer]/layout:md:hidden\">\n              <Separator orientation=\"vertical\" />\n              <V0Button />\n            </div>\n            <div className=\"flex items-center gap-2 group-has-data-[slot=designer]/layout:hidden\">\n              <Separator orientation=\"vertical\" />\n              <Button asChild size=\"sm\" className=\"h-[31px] rounded-lg\">\n                <Link href=\"/create\">\n                  <HugeiconsIcon icon={PlusSignIcon} />\n                  New\n                </Link>\n              </Button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/tailwind-indicator.tsx",
    "content": "const SHOW = true\n\nexport function TailwindIndicator({\n  forceMount = false,\n}: {\n  forceMount?: boolean\n}) {\n  if (process.env.NODE_ENV === \"production\" || (!SHOW && !forceMount)) {\n    return null\n  }\n\n  return (\n    <div\n      data-tailwind-indicator=\"\"\n      className=\"fixed bottom-1 left-1 z-50 flex h-6 w-6 items-center justify-center rounded-full bg-gray-800 p-3 font-mono text-xs text-white\"\n    >\n      <div className=\"block sm:hidden\">xs</div>\n      <div className=\"hidden sm:block md:hidden\">sm</div>\n      <div className=\"hidden md:block lg:hidden\">md</div>\n      <div className=\"hidden lg:block xl:hidden\">lg</div>\n      <div className=\"hidden xl:block 2xl:hidden\">xl</div>\n      <div className=\"hidden 2xl:block\">2xl</div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/theme-customizer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { IconCheck, IconCopy } from \"@tabler/icons-react\"\nimport template from \"lodash/template\"\n\nimport { THEMES } from \"@/lib/themes\"\nimport { cn } from \"@/lib/utils\"\nimport { useThemeConfig } from \"@/components/active-theme\"\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { Icons } from \"@/components/icons\"\nimport {\n  baseColors,\n  baseColorsOKLCH,\n  type BaseColor,\n} from \"@/registry/_legacy-base-colors\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  Drawer,\n  DrawerContent,\n  DrawerDescription,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { ScrollArea, ScrollBar } from \"@/registry/new-york-v4/ui/scroll-area\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\n\ninterface BaseColorOKLCH {\n  light: Record<string, string>\n  dark: Record<string, string>\n}\n\nexport function ThemeCustomizer({ className }: React.ComponentProps<\"div\">) {\n  const { activeTheme = \"neutral\", setActiveTheme } = useThemeConfig()\n\n  return (\n    <div className={cn(\"flex w-full items-center gap-2\", className)}>\n      <ScrollArea className=\"hidden max-w-[96%] md:max-w-[600px] lg:flex lg:max-w-none\">\n        <div className=\"flex items-center\">\n          {THEMES.map((theme) => (\n            <Button\n              key={theme.name}\n              variant=\"link\"\n              size=\"sm\"\n              data-active={activeTheme === theme.name}\n              className=\"flex h-7 cursor-pointer items-center justify-center px-4 text-center text-base font-medium text-muted-foreground capitalize transition-colors hover:text-primary hover:no-underline data-[active=true]:text-primary\"\n              onClick={() => setActiveTheme(theme.name)}\n            >\n              {theme.name === \"neutral\" ? \"Default\" : theme.name}\n            </Button>\n          ))}\n        </div>\n        <ScrollBar orientation=\"horizontal\" className=\"invisible\" />\n      </ScrollArea>\n      <div className=\"flex items-center gap-2 lg:hidden\">\n        <Label htmlFor=\"theme-selector\" className=\"sr-only\">\n          Theme\n        </Label>\n        <Select\n          value={activeTheme === \"default\" ? \"neutral\" : activeTheme}\n          onValueChange={setActiveTheme}\n        >\n          <SelectTrigger\n            id=\"theme-selector\"\n            size=\"sm\"\n            className=\"justify-start capitalize shadow-none *:data-[slot=select-value]:w-12 *:data-[slot=select-value]:capitalize\"\n          >\n            <span className=\"font-medium\">Theme:</span>\n            <SelectValue placeholder=\"Select a theme\" />\n          </SelectTrigger>\n          <SelectContent align=\"end\">\n            <SelectGroup>\n              {THEMES.map((theme) => (\n                <SelectItem\n                  key={theme.name}\n                  value={theme.name}\n                  className=\"capitalize data-[state=checked]:opacity-50\"\n                >\n                  {theme.name}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </div>\n      <CopyCodeButton variant=\"secondary\" size=\"sm\" className=\"ml-auto\" />\n    </div>\n  )\n}\n\nexport function CopyCodeButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  let { activeTheme: activeThemeName = \"neutral\" } = useThemeConfig()\n  activeThemeName = activeThemeName === \"default\" ? \"neutral\" : activeThemeName\n\n  return (\n    <>\n      <Drawer>\n        <DrawerTrigger asChild>\n          <Button className={cn(\"sm:hidden\", className)} {...props}>\n            Copy Code\n          </Button>\n        </DrawerTrigger>\n        <DrawerContent className=\"h-auto\">\n          <DrawerHeader>\n            <DrawerTitle className=\"capitalize\">{activeThemeName}</DrawerTitle>\n            <DrawerDescription>\n              Copy and paste the following code into your CSS file.\n            </DrawerDescription>\n          </DrawerHeader>\n          <CustomizerCode themeName={activeThemeName} />\n        </DrawerContent>\n      </Drawer>\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button\n            data-size={props.size}\n            className={cn(\"group/button hidden sm:flex\", className)}\n            {...props}\n          >\n            <IconCopy />\n            <span className=\"group-data-[size=icon-sm]/button:sr-only\">\n              Copy Code\n            </span>\n          </Button>\n        </DialogTrigger>\n        <DialogContent className=\"rounded-xl border-none bg-clip-padding shadow-2xl ring-4 ring-neutral-200/80 outline-none md:max-w-2xl dark:bg-neutral-800 dark:ring-neutral-900\">\n          <DialogHeader>\n            <DialogTitle className=\"capitalize\">{activeThemeName}</DialogTitle>\n            <DialogDescription>\n              Copy and paste the following code into your CSS file.\n            </DialogDescription>\n          </DialogHeader>\n          <CustomizerCode themeName={activeThemeName} />\n        </DialogContent>\n      </Dialog>\n    </>\n  )\n}\n\nfunction CustomizerCode({ themeName }: { themeName: string }) {\n  const [hasCopied, setHasCopied] = React.useState(false)\n  const [tailwindVersion, setTailwindVersion] = React.useState(\"v4-oklch\")\n  const activeTheme = React.useMemo(\n    () => baseColors.find((theme) => theme.name === themeName),\n    [themeName]\n  )\n  const activeThemeOKLCH = React.useMemo(\n    () => baseColorsOKLCH[themeName as keyof typeof baseColorsOKLCH],\n    [themeName]\n  )\n\n  React.useEffect(() => {\n    if (hasCopied) {\n      setTimeout(() => {\n        setHasCopied(false)\n      }, 2000)\n    }\n  }, [hasCopied])\n\n  return (\n    <>\n      <Tabs\n        value={tailwindVersion}\n        onValueChange={setTailwindVersion}\n        className=\"min-w-0 px-4 pb-4 md:p-0\"\n      >\n        <TabsList>\n          <TabsTrigger value=\"v4-oklch\">OKLCH</TabsTrigger>\n          <TabsTrigger value=\"v4-hsl\">HSL</TabsTrigger>\n          <TabsTrigger value=\"v3\">Tailwind v3</TabsTrigger>\n        </TabsList>\n        <TabsContent value=\"v4-oklch\">\n          <figure\n            data-rehype-pretty-code-figure\n            className=\"mx-0! mt-0 rounded-lg\"\n          >\n            <figcaption\n              className=\"flex items-center gap-2 text-code-foreground [&_svg]:size-4 [&_svg]:text-code-foreground [&_svg]:opacity-70\"\n              data-rehype-pretty-code-title=\"\"\n              data-language=\"css\"\n              data-theme=\"github-dark github-light-default\"\n            >\n              <Icons.css className=\"fill-foreground\" />\n              app/globals.css\n            </figcaption>\n            <pre className=\"no-scrollbar max-h-[300px] min-w-0 overflow-x-auto px-4 py-3.5 outline-none has-[[data-highlighted-line]]:px-0 has-[[data-line-numbers]]:px-0 has-[[data-slot=tabs]]:p-0 md:max-h-[450px]\">\n              <Button\n                data-slot=\"copy-button\"\n                size=\"icon\"\n                variant=\"ghost\"\n                className=\"absolute top-3 right-2 z-10 size-7 bg-code text-code-foreground shadow-none hover:opacity-100 focus-visible:opacity-100\"\n                onClick={() => {\n                  copyToClipboardWithMeta(\n                    getThemeCodeOKLCH(activeThemeOKLCH, 0.65),\n                    {\n                      name: \"copy_theme_code\",\n                      properties: {\n                        theme: themeName,\n                        radius: 0.65,\n                      },\n                    }\n                  )\n                  setHasCopied(true)\n                }}\n              >\n                <span className=\"sr-only\">Copy</span>\n                {hasCopied ? <IconCheck /> : <IconCopy />}\n              </Button>\n              <code data-line-numbers data-language=\"css\">\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;:root &#123;\n                </span>\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;&nbsp;&nbsp;--radius: 0.65rem;\n                </span>\n                {Object.entries(activeThemeOKLCH?.light).map(([key, value]) => (\n                  <span\n                    data-line\n                    className=\"line text-code-foreground\"\n                    key={key}\n                  >\n                    &nbsp;&nbsp;&nbsp;--{key}: <ColorIndicator color={value} />{\" \"}\n                    {value};\n                  </span>\n                ))}\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;&#125;\n                </span>\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;\n                </span>\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;.dark &#123;\n                </span>\n                {Object.entries(activeThemeOKLCH?.dark).map(([key, value]) => (\n                  <span\n                    data-line\n                    className=\"line text-code-foreground\"\n                    key={key}\n                  >\n                    &nbsp;&nbsp;&nbsp;--{key}: <ColorIndicator color={value} />{\" \"}\n                    {value};\n                  </span>\n                ))}\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;&#125;\n                </span>\n              </code>\n            </pre>\n          </figure>\n        </TabsContent>\n        <TabsContent value=\"v4-hsl\">\n          <figure\n            data-rehype-pretty-code-figure\n            className=\"mx-0! mt-0 rounded-lg\"\n          >\n            <figcaption\n              className=\"flex items-center gap-2 text-code-foreground [&_svg]:size-4 [&_svg]:text-code-foreground [&_svg]:opacity-70\"\n              data-rehype-pretty-code-title=\"\"\n              data-language=\"css\"\n              data-theme=\"github-dark github-light-default\"\n            >\n              <Icons.css className=\"fill-foreground\" />\n              app/globals.css\n            </figcaption>\n            <pre className=\"no-scrollbar max-h-[300px] min-w-0 overflow-x-auto px-4 py-3.5 outline-none has-[[data-highlighted-line]]:px-0 has-[[data-line-numbers]]:px-0 has-[[data-slot=tabs]]:p-0 md:max-h-[450px]\">\n              <Button\n                data-slot=\"copy-button\"\n                size=\"icon\"\n                variant=\"ghost\"\n                className=\"absolute top-3 right-2 z-10 size-7 bg-code text-code-foreground shadow-none hover:opacity-100 focus-visible:opacity-100\"\n                onClick={() => {\n                  copyToClipboardWithMeta(\n                    getThemeCodeHSLV4(activeTheme, 0.65),\n                    {\n                      name: \"copy_theme_code\",\n                      properties: {\n                        theme: themeName,\n                        radius: 0.65,\n                      },\n                    }\n                  )\n                  setHasCopied(true)\n                }}\n              >\n                <span className=\"sr-only\">Copy</span>\n                {hasCopied ? <IconCheck /> : <IconCopy />}\n              </Button>\n              <code data-line-numbers data-language=\"css\">\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;:root &#123;\n                </span>\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;&nbsp;&nbsp;--radius: 0.65rem;\n                </span>\n                {Object.entries(activeTheme?.cssVars.light || {}).map(\n                  ([key, value]) => (\n                    <span\n                      data-line\n                      className=\"line text-code-foreground\"\n                      key={key}\n                    >\n                      &nbsp;&nbsp;&nbsp;--{key}:{\" \"}\n                      <ColorIndicator color={`hsl(${value})`} /> hsl({value});\n                    </span>\n                  )\n                )}\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;&#125;\n                </span>\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;\n                </span>\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;.dark &#123;\n                </span>\n                {Object.entries(activeTheme?.cssVars.dark || {}).map(\n                  ([key, value]) => (\n                    <span\n                      data-line\n                      className=\"line text-code-foreground\"\n                      key={key}\n                    >\n                      &nbsp;&nbsp;&nbsp;--{key}:{\" \"}\n                      <ColorIndicator color={`hsl(${value})`} /> hsl({value});\n                    </span>\n                  )\n                )}\n                <span data-line className=\"line text-code-foreground\">\n                  &nbsp;&#125;\n                </span>\n              </code>\n            </pre>\n          </figure>\n        </TabsContent>\n        <TabsContent value=\"v3\">\n          <figure\n            data-rehype-pretty-code-figure\n            className=\"mx-0! mt-0 rounded-lg\"\n          >\n            <figcaption\n              className=\"flex items-center gap-2 text-code-foreground [&_svg]:size-4 [&_svg]:text-code-foreground [&_svg]:opacity-70\"\n              data-rehype-pretty-code-title=\"\"\n              data-language=\"css\"\n              data-theme=\"github-dark github-light-default\"\n            >\n              <Icons.css className=\"fill-foreground\" />\n              app/globals.css\n            </figcaption>\n            <pre className=\"no-scrollbar max-h-[300px] min-w-0 overflow-x-auto px-4 py-3.5 outline-none has-[[data-highlighted-line]]:px-0 has-[[data-line-numbers]]:px-0 has-[[data-slot=tabs]]:p-0 md:max-h-[450px]\">\n              <Button\n                data-slot=\"copy-button\"\n                size=\"icon\"\n                variant=\"ghost\"\n                className=\"absolute top-3 right-2 z-10 size-7 bg-code text-code-foreground shadow-none hover:opacity-100 focus-visible:opacity-100\"\n                onClick={() => {\n                  copyToClipboardWithMeta(getThemeCode(activeTheme, 0.5), {\n                    name: \"copy_theme_code\",\n                    properties: {\n                      theme: themeName,\n                      radius: 0.5,\n                    },\n                  })\n                  setHasCopied(true)\n                }}\n              >\n                <span className=\"sr-only\">Copy</span>\n                {hasCopied ? <IconCheck /> : <IconCopy />}\n              </Button>\n              <code data-line-numbers data-language=\"css\">\n                <span data-line className=\"line\">\n                  @layer base &#123;\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;:root &#123;\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--background:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.light[\"background\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.light[\"background\"]};\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--foreground:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.light[\"foreground\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.light[\"foreground\"]};\n                </span>\n                {[\n                  \"card\",\n                  \"popover\",\n                  \"primary\",\n                  \"secondary\",\n                  \"muted\",\n                  \"accent\",\n                  \"destructive\",\n                ].map((prefix) => (\n                  <React.Fragment key={prefix}>\n                    <span data-line className=\"line\">\n                      &nbsp;&nbsp;&nbsp;&nbsp;--{prefix}:{\" \"}\n                      <ColorIndicator\n                        color={`hsl(${\n                          activeTheme?.cssVars.light[\n                            prefix as keyof typeof activeTheme.cssVars.light\n                          ]\n                        })`}\n                      />{\" \"}\n                      {\n                        activeTheme?.cssVars.light[\n                          prefix as keyof typeof activeTheme.cssVars.light\n                        ]\n                      }\n                      ;\n                    </span>\n                    <span data-line className=\"line\">\n                      &nbsp;&nbsp;&nbsp;&nbsp;--{prefix}-foreground:{\" \"}\n                      <ColorIndicator\n                        color={`hsl(${\n                          activeTheme?.cssVars.light[\n                            `${prefix}-foreground` as keyof typeof activeTheme.cssVars.light\n                          ]\n                        })`}\n                      />{\" \"}\n                      {\n                        activeTheme?.cssVars.light[\n                          `${prefix}-foreground` as keyof typeof activeTheme.cssVars.light\n                        ]\n                      }\n                      ;\n                    </span>\n                  </React.Fragment>\n                ))}\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--border:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.light[\"border\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.light[\"border\"]};\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--input:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.light[\"input\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.light[\"input\"]};\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--ring:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.light[\"ring\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.light[\"ring\"]};\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--radius: 0.5rem;\n                </span>\n                {[\"chart-1\", \"chart-2\", \"chart-3\", \"chart-4\", \"chart-5\"].map(\n                  (prefix) => (\n                    <React.Fragment key={prefix}>\n                      <span data-line className=\"line\">\n                        &nbsp;&nbsp;&nbsp;&nbsp;--{prefix}:{\" \"}\n                        <ColorIndicator\n                          color={`hsl(${\n                            activeTheme?.cssVars.light[\n                              prefix as keyof typeof activeTheme.cssVars.light\n                            ]\n                          })`}\n                        />{\" \"}\n                        {\n                          activeTheme?.cssVars.light[\n                            prefix as keyof typeof activeTheme.cssVars.light\n                          ]\n                        }\n                        ;\n                      </span>\n                    </React.Fragment>\n                  )\n                )}\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&#125;\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;.dark &#123;\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--background:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.dark[\"background\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.dark[\"background\"]};\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--foreground:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.dark[\"foreground\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.dark[\"foreground\"]};\n                </span>\n                {[\n                  \"card\",\n                  \"popover\",\n                  \"primary\",\n                  \"secondary\",\n                  \"muted\",\n                  \"accent\",\n                  \"destructive\",\n                ].map((prefix) => (\n                  <React.Fragment key={prefix}>\n                    <span data-line className=\"line\">\n                      &nbsp;&nbsp;&nbsp;&nbsp;--{prefix}:{\" \"}\n                      <ColorIndicator\n                        color={`hsl(${\n                          activeTheme?.cssVars.dark[\n                            prefix as keyof typeof activeTheme.cssVars.dark\n                          ]\n                        })`}\n                      />{\" \"}\n                      {\n                        activeTheme?.cssVars.dark[\n                          prefix as keyof typeof activeTheme.cssVars.dark\n                        ]\n                      }\n                      ;\n                    </span>\n                    <span data-line className=\"line\">\n                      &nbsp;&nbsp;&nbsp;&nbsp;--{prefix}-foreground:{\" \"}\n                      <ColorIndicator\n                        color={`hsl(${\n                          activeTheme?.cssVars.dark[\n                            `${prefix}-foreground` as keyof typeof activeTheme.cssVars.dark\n                          ]\n                        })`}\n                      />{\" \"}\n                      {\n                        activeTheme?.cssVars.dark[\n                          `${prefix}-foreground` as keyof typeof activeTheme.cssVars.dark\n                        ]\n                      }\n                      ;\n                    </span>\n                  </React.Fragment>\n                ))}\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--border:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.dark[\"border\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.dark[\"border\"]};\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--input:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.dark[\"input\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.dark[\"input\"]};\n                </span>\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&nbsp;&nbsp;--ring:{\" \"}\n                  <ColorIndicator\n                    color={`hsl(${activeTheme?.cssVars.dark[\"ring\"]})`}\n                  />{\" \"}\n                  {activeTheme?.cssVars.dark[\"ring\"]};\n                </span>\n                {[\"chart-1\", \"chart-2\", \"chart-3\", \"chart-4\", \"chart-5\"].map(\n                  (prefix) => (\n                    <React.Fragment key={prefix}>\n                      <span data-line className=\"line\">\n                        &nbsp;&nbsp;&nbsp;&nbsp;--{prefix}:{\" \"}\n                        <ColorIndicator\n                          color={`hsl(${\n                            activeTheme?.cssVars.dark[\n                              prefix as keyof typeof activeTheme.cssVars.dark\n                            ]\n                          })`}\n                        />{\" \"}\n                        {\n                          activeTheme?.cssVars.dark[\n                            prefix as keyof typeof activeTheme.cssVars.dark\n                          ]\n                        }\n                        ;\n                      </span>\n                    </React.Fragment>\n                  )\n                )}\n                <span data-line className=\"line\">\n                  &nbsp;&nbsp;&#125;\n                </span>\n                <span data-line className=\"line\">\n                  &#125;\n                </span>\n              </code>\n            </pre>\n          </figure>\n        </TabsContent>\n      </Tabs>\n    </>\n  )\n}\n\nfunction ColorIndicator({ color }: { color: string }) {\n  return (\n    <span\n      className=\"inline-block size-3 border border-border/50\"\n      style={{ backgroundColor: color }}\n    />\n  )\n}\n\nfunction getThemeCodeOKLCH(theme: BaseColorOKLCH | undefined, radius: number) {\n  if (!theme) {\n    return \"\"\n  }\n\n  const rootSection =\n    \":root {\\n  --radius: \" +\n    radius +\n    \"rem;\\n\" +\n    Object.entries(theme.light)\n      .map((entry) => \"  --\" + entry[0] + \": \" + entry[1] + \";\")\n      .join(\"\\n\") +\n    \"\\n}\\n\\n.dark {\\n\" +\n    Object.entries(theme.dark)\n      .map((entry) => \"  --\" + entry[0] + \": \" + entry[1] + \";\")\n      .join(\"\\n\") +\n    \"\\n}\\n\"\n\n  return rootSection\n}\n\nfunction getThemeCode(theme: BaseColor | undefined, radius: number) {\n  if (!theme) {\n    return \"\"\n  }\n\n  return template(BASE_STYLES_WITH_VARIABLES)({\n    colors: theme.cssVars,\n    radius: radius.toString(),\n  })\n}\n\nfunction getThemeCodeHSLV4(theme: BaseColor | undefined, radius: number) {\n  if (!theme) {\n    return \"\"\n  }\n\n  const rootSection =\n    \":root {\\n  --radius: \" +\n    radius +\n    \"rem;\\n\" +\n    Object.entries(theme.cssVars.light)\n      .map((entry) => \"  --\" + entry[0] + \": hsl(\" + entry[1] + \");\")\n      .join(\"\\n\") +\n    \"\\n}\\n\\n.dark {\\n\" +\n    Object.entries(theme.cssVars.dark)\n      .map((entry) => \"  --\" + entry[0] + \": hsl(\" + entry[1] + \");\")\n      .join(\"\\n\") +\n    \"\\n}\\n\"\n\n  return rootSection\n}\n\nconst BASE_STYLES_WITH_VARIABLES = `\n@layer base {\n  :root {\n    --background: <%- colors.light[\"background\"] %>;\n    --foreground: <%- colors.light[\"foreground\"] %>;\n    --card: <%- colors.light[\"card\"] %>;\n    --card-foreground: <%- colors.light[\"card-foreground\"] %>;\n    --popover: <%- colors.light[\"popover\"] %>;\n    --popover-foreground: <%- colors.light[\"popover-foreground\"] %>;\n    --primary: <%- colors.light[\"primary\"] %>;\n    --primary-foreground: <%- colors.light[\"primary-foreground\"] %>;\n    --secondary: <%- colors.light[\"secondary\"] %>;\n    --secondary-foreground: <%- colors.light[\"secondary-foreground\"] %>;\n    --muted: <%- colors.light[\"muted\"] %>;\n    --muted-foreground: <%- colors.light[\"muted-foreground\"] %>;\n    --accent: <%- colors.light[\"accent\"] %>;\n    --accent-foreground: <%- colors.light[\"accent-foreground\"] %>;\n    --destructive: <%- colors.light[\"destructive\"] %>;\n    --destructive-foreground: <%- colors.light[\"destructive-foreground\"] %>;\n    --border: <%- colors.light[\"border\"] %>;\n    --input: <%- colors.light[\"input\"] %>;\n    --ring: <%- colors.light[\"ring\"] %>;\n    --radius: <%- radius %>rem;\n    --chart-1: <%- colors.light[\"chart-1\"] %>;\n    --chart-2: <%- colors.light[\"chart-2\"] %>;\n    --chart-3: <%- colors.light[\"chart-3\"] %>;\n    --chart-4: <%- colors.light[\"chart-4\"] %>;\n    --chart-5: <%- colors.light[\"chart-5\"] %>;\n  }\n\n  .dark {\n    --background: <%- colors.dark[\"background\"] %>;\n    --foreground: <%- colors.dark[\"foreground\"] %>;\n    --card: <%- colors.dark[\"card\"] %>;\n    --card-foreground: <%- colors.dark[\"card-foreground\"] %>;\n    --popover: <%- colors.dark[\"popover\"] %>;\n    --popover-foreground: <%- colors.dark[\"popover-foreground\"] %>;\n    --primary: <%- colors.dark[\"primary\"] %>;\n    --primary-foreground: <%- colors.dark[\"primary-foreground\"] %>;\n    --secondary: <%- colors.dark[\"secondary\"] %>;\n    --secondary-foreground: <%- colors.dark[\"secondary-foreground\"] %>;\n    --muted: <%- colors.dark[\"muted\"] %>;\n    --muted-foreground: <%- colors.dark[\"muted-foreground\"] %>;\n    --accent: <%- colors.dark[\"accent\"] %>;\n    --accent-foreground: <%- colors.dark[\"accent-foreground\"] %>;\n    --destructive: <%- colors.dark[\"destructive\"] %>;\n    --destructive-foreground: <%- colors.dark[\"destructive-foreground\"] %>;\n    --border: <%- colors.dark[\"border\"] %>;\n    --input: <%- colors.dark[\"input\"] %>;\n    --ring: <%- colors.dark[\"ring\"] %>;\n    --chart-1: <%- colors.dark[\"chart-1\"] %>;\n    --chart-2: <%- colors.dark[\"chart-2\"] %>;\n    --chart-3: <%- colors.dark[\"chart-3\"] %>;\n    --chart-4: <%- colors.dark[\"chart-4\"] %>;\n    --chart-5: <%- colors.dark[\"chart-5\"] %>;\n  }\n}\n`\n"
  },
  {
    "path": "apps/v4/components/theme-provider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ThemeProvider as NextThemesProvider, useTheme } from \"next-themes\"\n\nfunction ThemeShortcut() {\n  const { setTheme, resolvedTheme } = useTheme()\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if (\n        (e.key === \"d\" || e.key === \"D\") &&\n        !e.metaKey &&\n        !e.ctrlKey &&\n        !e.altKey\n      ) {\n        if (\n          (e.target instanceof HTMLElement && e.target.isContentEditable) ||\n          e.target instanceof HTMLInputElement ||\n          e.target instanceof HTMLTextAreaElement ||\n          e.target instanceof HTMLSelectElement\n        ) {\n          return\n        }\n\n        e.preventDefault()\n        setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => document.removeEventListener(\"keydown\", down)\n  }, [resolvedTheme, setTheme])\n\n  return null\n}\n\nexport function ThemeProvider({\n  children,\n  ...props\n}: React.ComponentProps<typeof NextThemesProvider>) {\n  return (\n    <NextThemesProvider\n      attribute=\"class\"\n      defaultTheme=\"system\"\n      enableSystem\n      disableTransitionOnChange\n      enableColorScheme\n      {...props}\n    >\n      <ThemeShortcut />\n      {children}\n    </NextThemesProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components/theme-selector.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/examples/base/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nimport { THEMES } from \"@/lib/themes\"\nimport { cn } from \"@/lib/utils\"\nimport { useThemeConfig } from \"@/components/active-theme\"\n\nimport { CopyCodeButton } from \"./theme-customizer\"\n\nexport function ThemeSelector({ className }: React.ComponentProps<\"div\">) {\n  const { activeTheme, setActiveTheme } = useThemeConfig()\n\n  const value = activeTheme === \"default\" ? \"neutral\" : activeTheme\n\n  const items = THEMES.map((theme) => ({\n    label: theme.label,\n    value: theme.name,\n  }))\n\n  return (\n    <div className={cn(\"flex items-center gap-2\", className)}>\n      <Label htmlFor=\"theme-selector\" className=\"sr-only\">\n        Theme\n      </Label>\n      <Select\n        items={items}\n        value={value}\n        onValueChange={(value) => value && setActiveTheme(value)}\n      >\n        <SelectTrigger id=\"theme-selector\" className=\"w-36\">\n          <SelectValue placeholder=\"Select a theme\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            <SelectLabel>Theme</SelectLabel>\n            {items.map((item) => (\n              <SelectItem\n                key={item.value}\n                value={item.value}\n                className=\"data-[state=checked]:opacity-50\"\n              >\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n      <CopyCodeButton\n        variant=\"secondary\"\n        size=\"icon-sm\"\n        className=\"rounded-lg border bg-transparent\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/registry/new-york-v4/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "apps/v4/content/docs/(root)/_blocks.mdx",
    "content": "---\ntitle: Blocks\ndescription: Contribute components to the blocks library.\n---\n\nWe are inviting the community to contribute to the [blocks library](/blocks). Share your components and blocks with other developers and help build a library of high-quality, reusable components.\n\nWe'd love to see all types of blocks: applications, marketing, products, and more.\n\n## Setup your workspace\n\n<Steps>\n\n### Fork the repository\n\n```bash\ngit clone https://github.com/shadcn-ui/ui.git\n```\n\n### Create a new branch\n\n```bash\ngit checkout -b username/my-new-block\n```\n\n### Install dependencies\n\n```bash\npnpm install\n```\n\n### Start the dev server\n\n```bash\npnpm www:dev\n```\n\n</Steps>\n\n## Add a block\n\nA block can be a single component (eg. a variation of a ui component) or a complex component (eg. a dashboard) with multiple components, hooks, and utils.\n\n<Steps>\n\n### Create a new block\n\nCreate a new folder in the `apps/www/registry/new-york/blocks` directory. Make sure the folder is named in kebab-case and under `new-york`.\n\n```txt\napps\n└── www\n    └── registry\n        └── new-york\n            └── blocks\n                └── dashboard-01\n```\n\n<Callout className=\"mt-6\">\n\n**Note:** The build script will take care of building the block for the `default` style.\n\n</Callout>\n\n### Add your block files\n\nAdd your files to the block folder. Here is an example of a block with a page, components, hooks, and utils.\n\n```txt\ndashboard-01\n└── page.tsx\n└── components\n    └── hello-world.tsx\n    └── example-card.tsx\n└── hooks\n    └── use-hello-world.ts\n└── lib\n    └── format-date.ts\n```\n\n<Callout className=\"mt-6\">\n\n**Note:** You can start with one file and add more files later.\n\n</Callout>\n\n</Steps>\n\n## Add your block to the registry\n\n<Steps>\n\n### Add your block definition to `registry-blocks.tsx`\n\nTo add your block to the registry, you need to add your block definition to `registry-blocks.ts`.\n\nThis follows the registry schema at [https://ui.shadcn.com/schema/registry-item.json](https://ui.shadcn.com/schema/registry-item.json).\n\n```tsx title=\"apps/www/registry/registry-blocks.tsx\" showLineNumbers\nexport const blocks = [\n  // ...\n  {\n    name: \"dashboard-01\",\n    author: \"shadcn (https://ui.shadcn.com)\",\n    title: \"Dashboard\",\n    description: \"A simple dashboard with a hello world component.\",\n    type: \"registry:block\",\n    registryDependencies: [\"input\", \"button\", \"card\"],\n    dependencies: [\"zod\"],\n    files: [\n      {\n        path: \"blocks/dashboard-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/hello-world.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/example-card.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/hooks/use-hello-world.ts\",\n        type: \"registry:hook\",\n      },\n      {\n        path: \"blocks/dashboard-01/lib/format-date.ts\",\n        type: \"registry:lib\",\n      },\n    ],\n    categories: [\"dashboard\"],\n  },\n]\n```\n\nMake sure you add a name, description, type, registryDependencies, dependencies, files, and categories. We'll go over each of these in more detail in the schema docs (coming soon).\n\n### Run the build script\n\n```bash\npnpm registry:build\n```\n\n<Callout className=\"mt-6\">\n\n**Note:** you do not need to run this script for every change. You only need to run it when you update the block definition.\n\n</Callout>\n\n### View your block\n\nOnce the build script is finished, you can view your block at `http://localhost:3333/blocks/[CATEGORY]` or a full screen preview at `http://localhost:3333/view/styles/new-york/dashboard-01`.\n\n<Image\n  src=\"/images/block-preview-light.png\"\n  width=\"1432\"\n  height=\"960\"\n  alt=\"Block preview\"\n  className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n/>\n<Image\n  src=\"/images/block-preview-dark.png\"\n  width=\"1432\"\n  height=\"960\"\n  alt=\"Block preview\"\n  className=\"mt-6 hidden w-full overflow-hidden rounded-lg border shadow-sm dark:block\"\n/>\n\n### Build your block\n\nYou can now build your block by editing the files in the block folder and viewing the changes in the browser.\n\nIf you add more files, make sure to add them to the `files` array in the block definition.\n\n</Steps>\n\n## Publish your block\n\nOnce you're ready to publish your block, you can submit a pull request to the main repository.\n\n<Steps>\n\n### Run the build script\n\n```bash\npnpm registry:build\n```\n\n### Capture a screenshot\n\n```bash\npnpm registry:capture\n```\n\n<Callout className=\"mt-6\">\n\n**Note:** If you've run the capture script before, you might need to delete the existing screenshots (both light and dark) at `apps/www/public/r/styles/new-york` and run the script again.\n\n</Callout>\n\n### Submit a pull request\n\nCommit your changes and submit a pull request to the main repository.\n\nYour block will be reviewed and merged. Once merged it will be published to the website and available to be installed via the CLI.\n\n</Steps>\n\n## Categories\n\nThe `categories` property is used to organize your block in the registry.\n\n### Add a category\n\nIf you need to add a new category, you can do so by adding it to the `registryCategories` array in `apps/www/registry/registry-categories.ts`.\n\n```tsx title=\"apps/www/registry/registry-categories.ts\" showLineNumbers\nexport const registryCategories = [\n  // ...\n  {\n    name: \"Input\",\n    slug: \"input\",\n    hidden: false,\n  },\n]\n```\n\n## Guidelines\n\nHere are some guidelines to follow when contributing to the blocks library.\n\n- The following properties are required for the block definition: `name`, `description`, `type`, `files`, and `categories`.\n- Make sure to list all registry dependencies in `registryDependencies`. A registry dependency is the name of the component in the registry eg. `input`, `button`, `card`, etc.\n- Make sure to list all dependencies in `dependencies`. A dependency is the name of the package in the registry eg. `zod`, `sonner`, etc.\n- If your block has a page (optional), it should be the first entry in the `files` array and it should have a `target` property. This helps the CLI place the page in the correct location for file-based routing.\n- **Imports should always use the `@/registry` path.** eg. `import { Input } from \"@/registry/new-york/input\"`\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/cli.mdx",
    "content": "---\ntitle: shadcn\ndescription: Use the shadcn CLI to add components to your project.\n---\n\n## init\n\nUse the `init` command to initialize configuration and dependencies for a new project.\n\nThe `init` command installs dependencies, adds the `cn` util and configures CSS variables for the project.\n\n```bash\nnpx shadcn@latest init\n```\n\n**Options**\n\n```bash\nUsage: shadcn init [options] [components...]\n\ninitialize your project and install dependencies\n\nArguments:\n  components              name, url or local path to component\n\nOptions:\n  -t, --template <template>  the template to use. (next, vite, start, react-router, laravel, astro)\n  -b, --base <base>          the component library to use. (radix, base)\n  -p, --preset [name]        use a preset configuration. (name, URL, or preset code)\n  -n, --name <name>          the name for the new project.\n  -d, --defaults             use default configuration. (default: false)\n  -y, --yes                  skip confirmation prompt. (default: true)\n  -f, --force                force overwrite of existing configuration. (default: false)\n  -c, --cwd <cwd>            the working directory. defaults to the current directory.\n  -s, --silent               mute output. (default: false)\n  --monorepo                 scaffold a monorepo project.\n  --no-monorepo              skip the monorepo prompt.\n  --reinstall                re-install existing UI components.\n  --no-reinstall             do not re-install existing UI components.\n  --rtl                      enable RTL support.\n  --no-rtl                   disable RTL support.\n  --css-variables            use css variables for theming. (default: true)\n  --no-css-variables         do not use css variables for theming.\n  -h, --help                 display help for command\n```\n\nThe `create` command is an alias for `init`:\n\n```bash\nnpx shadcn@latest create\n```\n\n---\n\n## add\n\nUse the `add` command to add components and dependencies to your project.\n\n```bash\nnpx shadcn@latest add [component]\n```\n\n**Options**\n\n```bash\nUsage: shadcn add [options] [components...]\n\nadd a component to your project\n\nArguments:\n  components           name, url or local path to component\n\nOptions:\n  -y, --yes            skip confirmation prompt. (default: false)\n  -o, --overwrite      overwrite existing files. (default: false)\n  -c, --cwd <cwd>      the working directory. defaults to the current directory.\n  -a, --all            add all available components (default: false)\n  -p, --path <path>    the path to add the component to.\n  -s, --silent         mute output. (default: false)\n  --dry-run            preview changes without writing files. (default: false)\n  --diff [path]        show diff for a file.\n  --view [path]        show file contents.\n  -h, --help           display help for command\n```\n\n---\n\n## view\n\nUse the `view` command to view items from the registry before installing them.\n\n```bash\nnpx shadcn@latest view [item]\n```\n\nYou can view multiple items at once:\n\n```bash\nnpx shadcn@latest view button card dialog\n```\n\nOr view items from namespaced registries:\n\n```bash\nnpx shadcn@latest view @acme/auth @v0/dashboard\n```\n\n**Options**\n\n```bash\nUsage: shadcn view [options] <items...>\n\nview items from the registry\n\nArguments:\n  items            the item names or URLs to view\n\nOptions:\n  -c, --cwd <cwd>  the working directory. defaults to the current directory.\n  -h, --help       display help for command\n```\n\n---\n\n## search\n\nUse the `search` command to search for items from registries.\n\n```bash\nnpx shadcn@latest search [registry]\n```\n\nYou can search with a query:\n\n```bash\nnpx shadcn@latest search @shadcn -q \"button\"\n```\n\nOr search multiple registries at once:\n\n```bash\nnpx shadcn@latest search @shadcn @v0 @acme\n```\n\nThe `list` command is an alias for `search`:\n\n```bash\nnpx shadcn@latest list @acme\n```\n\n**Options**\n\n```bash\nUsage: shadcn search|list [options] <registries...>\n\nsearch items from registries\n\nArguments:\n  registries             the registry names or urls to search items from. Names\n                         must be prefixed with @.\n\nOptions:\n  -c, --cwd <cwd>        the working directory. defaults to the current directory.\n  -q, --query <query>    query string\n  -l, --limit <number>   maximum number of items to display per registry (default: \"100\")\n  -o, --offset <number>  number of items to skip (default: \"0\")\n  -h, --help             display help for command\n```\n\n---\n\n## build\n\nUse the `build` command to generate the registry JSON files.\n\n```bash\nnpx shadcn@latest build\n```\n\nThis command reads the `registry.json` file and generates the registry JSON files in the `public/r` directory.\n\n**Options**\n\n```bash\nUsage: shadcn build [options] [registry]\n\nbuild components for a shadcn registry\n\nArguments:\n  registry             path to registry.json file (default: \"./registry.json\")\n\nOptions:\n  -o, --output <path>  destination directory for json files (default: \"./public/r\")\n  -c, --cwd <cwd>      the working directory. defaults to the current directory.\n  -h, --help           display help for command\n```\n\nTo customize the output directory, use the `--output` option.\n\n```bash\nnpx shadcn@latest build --output ./public/registry\n```\n\n---\n\n## docs\n\nUse the `docs` command to fetch documentation and API references for components.\n\n```bash\nnpx shadcn@latest docs [component]\n```\n\n**Options**\n\n```bash\nUsage: shadcn docs [options] [component]\n\nfetch documentation and API references for components\n\nArguments:\n  component          the component to get docs for\n\nOptions:\n  -c, --cwd <cwd>    the working directory. defaults to the current directory.\n  -b, --base <base>  the base to use either 'base' or 'radix'. defaults to project base.\n  --json             output as JSON. (default: false)\n  -h, --help         display help for command\n```\n\n---\n\n## info\n\nUse the `info` command to get information about your project.\n\n```bash\nnpx shadcn@latest info\n```\n\n**Options**\n\n```bash\nUsage: shadcn info [options]\n\nget information about your project\n\nOptions:\n  -c, --cwd <cwd>  the working directory. defaults to the current directory.\n  --json            output as JSON. (default: false)\n  -h, --help        display help for command\n```\n\n---\n\n## migrate\n\nUse the `migrate` command to run migrations on your project.\n\n```bash\nnpx shadcn@latest migrate [migration]\n```\n\n**Available Migrations**\n\n| Migration | Description                                             |\n| --------- | ------------------------------------------------------- |\n| `icons`   | Migrate your UI components to a different icon library. |\n| `radix`   | Migrate to radix-ui.                                    |\n| `rtl`     | Migrate your components to support RTL (right-to-left). |\n\n**Options**\n\n```bash\nUsage: shadcn migrate [options] [migration] [path]\n\nrun a migration.\n\nArguments:\n  migration        the migration to run.\n  path             optional path or glob pattern to migrate.\n\nOptions:\n  -c, --cwd <cwd>  the working directory. defaults to the current directory.\n  -l, --list       list all migrations. (default: false)\n  -y, --yes        skip confirmation prompt. (default: false)\n  -h, --help       display help for command\n```\n\n---\n\n### migrate rtl\n\nThe `rtl` migration transforms your components to support RTL (right-to-left) languages.\n\n```bash\nnpx shadcn@latest migrate rtl\n```\n\nThis will:\n\n1. Update `components.json` to set `rtl: true`\n2. Transform physical CSS properties to logical equivalents (e.g., `ml-4` → `ms-4`, `text-left` → `text-start`)\n3. Add `rtl:` variants where needed (e.g., `space-x-4` → `space-x-4 rtl:space-x-reverse`)\n\n**Migrate specific files**\n\nYou can migrate specific files or use glob patterns:\n\n```bash\n# Migrate a specific file\nnpx shadcn@latest migrate rtl src/components/ui/button.tsx\n\n# Migrate files matching a glob pattern\nnpx shadcn@latest migrate rtl \"src/components/ui/**\"\n```\n\nIf no path is provided, the migration will transform all files in your `ui` directory (from `components.json`).\n\n---\n\n### migrate radix\n\nThe `radix` migration updates your imports from individual `@radix-ui/react-*` packages to the unified `radix-ui` package.\n\n```bash\nnpx shadcn@latest migrate radix\n```\n\nThis will:\n\n1. Transform imports from `@radix-ui/react-*` to `radix-ui`\n2. Add the `radix-ui` package to your `package.json`\n\n**Before**\n\n```tsx\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n```\n\n**After**\n\n```tsx\nimport { Dialog as DialogPrimitive, Select as SelectPrimitive } from \"radix-ui\"\n```\n\n**Migrate specific files**\n\nYou can migrate specific files or use glob patterns:\n\n```bash\n# Migrate a specific file.\nnpx shadcn@latest migrate radix src/components/ui/dialog.tsx\n\n# Migrate files matching a glob pattern.\nnpx shadcn@latest migrate radix \"src/components/ui/**\"\n```\n\nIf no path is provided, the migration will transform all files in your `ui` directory (from `components.json`).\n\nOnce complete, you can remove any unused `@radix-ui/react-*` packages from your `package.json`.\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/components-json.mdx",
    "content": "---\ntitle: components.json\ndescription: Configuration for your project.\n---\n\nThe `components.json` file holds configuration for your project.\n\nWe use it to understand how your project is set up and how to generate components customized for your project.\n\n<Callout className=\"mt-6\" title=\"Note: The `components.json` file is optional\">\n  It is **only required if you're using the CLI** to add components to your\n  project. If you're using the copy and paste method, you don't need this file.\n</Callout>\n\nYou can create a `components.json` file in your project by running the following command:\n\n```bash\nnpx shadcn@latest init\n```\n\nSee the <Link href=\"/docs/cli\">CLI section</Link> for more information.\n\n## $schema\n\nYou can see the JSON Schema for `components.json` [here](https://ui.shadcn.com/schema.json).\n\n```json title=\"components.json\"\n{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\"\n}\n```\n\n## style\n\nThe style for your components. **This cannot be changed after initialization.**\n\n```json title=\"components.json\"\n{\n  \"style\": \"new-york\"\n}\n```\n\nThe `default` style has been deprecated. Use the `new-york` style instead.\n\n## tailwind\n\nConfiguration to help the CLI understand how Tailwind CSS is set up in your project.\n\nSee the <Link href=\"/docs/installation\">installation section</Link> for how to set up Tailwind CSS.\n\n### tailwind.config\n\nPath to where your `tailwind.config.js` file is located. **For Tailwind CSS v4, leave this blank.**\n\n```json title=\"components.json\"\n{\n  \"tailwind\": {\n    \"config\": \"tailwind.config.js\" | \"tailwind.config.ts\"\n  }\n}\n```\n\n### tailwind.css\n\nPath to the CSS file that imports Tailwind CSS into your project.\n\n```json title=\"components.json\"\n{\n  \"tailwind\": {\n    \"css\": \"styles/global.css\"\n  }\n}\n```\n\n### tailwind.baseColor\n\nThis is used to generate the default color palette for your components. **This cannot be changed after initialization.**\n\n```json title=\"components.json\"\n{\n  \"tailwind\": {\n    \"baseColor\": \"gray\" | \"neutral\" | \"slate\" | \"stone\" | \"zinc\" | \"mauve\" | \"olive\" | \"mist\" | \"taupe\"\n  }\n}\n```\n\n### tailwind.cssVariables\n\nYou can choose between using CSS variables or Tailwind CSS utility classes for theming.\n\nTo use utility classes for theming set `tailwind.cssVariables` to `false`. For CSS variables, set `tailwind.cssVariables` to `true`.\n\n```json title=\"components.json\"\n{\n  \"tailwind\": {\n    \"cssVariables\": `true` | `false`\n  }\n}\n```\n\nFor more information, see the <Link href=\"/docs/theming\">theming docs</Link>.\n\n**This cannot be changed after initialization.** To switch between CSS variables and utility classes, you'll have to delete and re-install your components.\n\n### tailwind.prefix\n\nThe prefix to use for your Tailwind CSS utility classes. Components will be added with this prefix.\n\n```json title=\"components.json\"\n{\n  \"tailwind\": {\n    \"prefix\": \"tw-\"\n  }\n}\n```\n\n## rsc\n\nWhether or not to enable support for React Server Components.\n\nThe CLI automatically adds a `use client` directive to client components when set to `true`.\n\n```json title=\"components.json\"\n{\n  \"rsc\": `true` | `false`\n}\n```\n\n## tsx\n\nChoose between TypeScript or JavaScript components.\n\nSetting this option to `false` allows components to be added as JavaScript with the `.jsx` file extension.\n\n```json title=\"components.json\"\n{\n  \"tsx\": `true` | `false`\n}\n```\n\n## aliases\n\nThe CLI uses these values and the `paths` config from your `tsconfig.json` or `jsconfig.json` file to place generated components in the correct location.\n\nPath aliases have to be set up in your `tsconfig.json` or `jsconfig.json` file.\n\n<Callout className=\"mt-6\">\n  **Important:** If you're using the `src` directory, make sure it is included\n  under `paths` in your `tsconfig.json` or `jsconfig.json` file.\n</Callout>\n\n### aliases.utils\n\nImport alias for your utility functions.\n\n```json title=\"components.json\"\n{\n  \"aliases\": {\n    \"utils\": \"@/lib/utils\"\n  }\n}\n```\n\n### aliases.components\n\nImport alias for your components.\n\n```json title=\"components.json\"\n{\n  \"aliases\": {\n    \"components\": \"@/components\"\n  }\n}\n```\n\n### aliases.ui\n\nImport alias for `ui` components.\n\nThe CLI will use the `aliases.ui` value to determine where to place your `ui` components. Use this config if you want to customize the installation directory for your `ui` components.\n\n```json title=\"components.json\"\n{\n  \"aliases\": {\n    \"ui\": \"@/app/ui\"\n  }\n}\n```\n\n### aliases.lib\n\nImport alias for `lib` functions such as `format-date` or `generate-id`.\n\n```json title=\"components.json\"\n{\n  \"aliases\": {\n    \"lib\": \"@/lib\"\n  }\n}\n```\n\n### aliases.hooks\n\nImport alias for `hooks` such as `use-media-query` or `use-toast`.\n\n```json title=\"components.json\"\n{\n  \"aliases\": {\n    \"hooks\": \"@/hooks\"\n  }\n}\n```\n\n## registries\n\nConfigure multiple resource registries for your project. This allows you to install components, libraries, utilities, and other resources from various sources including private registries.\n\nSee the <Link href=\"/docs/registry/namespace\">Namespaced Registries</Link> documentation for detailed information.\n\n### Basic Configuration\n\nConfigure registries with URL templates:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@v0\": \"https://v0.dev/chat/b/{name}\",\n    \"@acme\": \"https://registry.acme.com/{name}.json\",\n    \"@internal\": \"https://internal.company.com/{name}.json\"\n  }\n}\n```\n\nThe `{name}` placeholder is replaced with the resource name when installing.\n\n### Advanced Configuration with Authentication\n\nFor private registries that require authentication:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@private\": {\n      \"url\": \"https://api.company.com/registry/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REGISTRY_TOKEN}\",\n        \"X-API-Key\": \"${API_KEY}\"\n      },\n      \"params\": {\n        \"version\": \"latest\"\n      }\n    }\n  }\n}\n```\n\nEnvironment variables in the format `${VAR_NAME}` are automatically expanded from your environment.\n\n### Using Namespaced Registries\n\nOnce configured, install resources using the namespace syntax:\n\n```bash\n# Install from a configured registry\nnpx shadcn@latest add @v0/dashboard\n\n# Install from private registry\nnpx shadcn@latest add @private/button\n\n# Install multiple resources\nnpx shadcn@latest add @acme/header @internal/auth-utils\n```\n\n### Example: Multiple Registry Setup\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@shadcn\": \"https://ui.shadcn.com/r/{name}.json\",\n    \"@company-ui\": {\n      \"url\": \"https://registry.company.com/ui/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${COMPANY_TOKEN}\"\n      }\n    },\n    \"@team\": {\n      \"url\": \"https://team.company.com/{name}.json\",\n      \"params\": {\n        \"team\": \"frontend\",\n        \"version\": \"${REGISTRY_VERSION}\"\n      }\n    }\n  }\n}\n```\n\nThis configuration allows you to:\n\n- Install public components from shadcn/ui\n- Access private company UI components with authentication\n- Use team-specific resources with versioning\n\nFor more information about authentication, see the <Link href=\"/docs/registry/authentication\">Authentication</Link> documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/directory.mdx",
    "content": "---\ntitle: Registry Directory\ndescription: Discover community registries for shadcn/ui components and blocks.\n---\n\nimport { TriangleAlertIcon } from \"lucide-react\"\n\nThese registries are built into the CLI with no additional configuration required. To add a component, run: `npx shadcn add @<registry>/<component>`.\n\n<Callout\n  type=\"warning\"\n  className=\"border-amber-200 bg-amber-50 font-semibold dark:border-amber-900 dark:bg-amber-950\"\n>\n  Community registries are maintained by third-party developers. Always review\n  code on installation to ensure it meets your security and quality standards.\n</Callout>\n\nDon't see a registry? Learn how to [add it here](/docs/registry/registry-index).\n\n<DirectoryList />\n\n## Documentation\n\nYou can use the `shadcn` CLI to run your own code registry. Running your own registry allows you to distribute your custom components, hooks, pages, config, rules and other files to any project.\n\n<div className=\"mt-6 grid gap-4 sm:grid-cols-2\">\n  <LinkedCard href=\"/docs/registry/getting-started\" className=\"items-start text-sm md:p-6\">\n    <div className=\"font-medium\">Getting Started</div>\n    <div className=\"text-muted-foreground\">\n      Set up and build your own registry\n    </div>\n  </LinkedCard>\n\n<LinkedCard\n  href=\"/docs/registry/authentication\"\n  className=\"items-start text-sm md:p-6\"\n>\n  <div className=\"font-medium\">Authentication</div>\n  <div className=\"text-muted-foreground\">\n    Secure your registry with authentication\n  </div>\n</LinkedCard>\n<LinkedCard\n  href=\"/docs/registry/namespace\"\n  className=\"items-start text-sm md:p-6\"\n>\n  <div className=\"font-medium\">Namespaces</div>\n  <div className=\"text-muted-foreground\">\n    Configure registries with namespaces\n  </div>\n</LinkedCard>\n<LinkedCard\n  href=\"/docs/registry/registry-index\"\n  className=\"items-start text-sm md:p-6\"\n>\n  <div className=\"font-medium\">Add a Registry</div>\n  <div className=\"text-muted-foreground\">\n    Learn how to add a registry to the directory\n  </div>\n</LinkedCard>\n<LinkedCard\n  href=\"/docs/registry/examples\"\n  className=\"items-start text-sm md:p-6\"\n>\n  <div className=\"font-medium\">Examples</div>\n  <div className=\"text-muted-foreground\">\n    Registry item examples and configurations\n  </div>\n</LinkedCard>\n  <LinkedCard\n    href=\"/docs/registry/registry-json\"\n    className=\"items-start text-sm md:p-6\"\n  >\n    <div className=\"font-medium\">Schema</div>\n    <div className=\"text-muted-foreground\">\n      Schema specification for registry.json\n    </div>\n  </LinkedCard>\n</div>\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/figma.mdx",
    "content": "---\ntitle: Figma\ndescription: Every component recreated in Figma. With customizable props, typography and icons.\n---\n\n<Callout>\n  **Note:** The Figma files are contributed by the community. If you have any\n  questions or feedback, please reach out to the Figma file maintainers.\n</Callout>\n\n## Free\n\n- [Obra shadcn/ui](https://www.figma.com/community/file/1514746685758799870/obra-shadcn-ui) by [Obra Studio](https://obra.studio/) - Carefully crafted shadcn/ui kit, MIT licensed, maintained by team of designers, with free design to code plugin\n- [shadcn/ui components](https://www.figma.com/community/file/1342715840824755935) by [Sitsiilia Bergmann](https://x.com/sitsiilia) - A well-structured component library aligned with the shadcn component system, regularly maintained.\n- [shadcn/ui design system](https://www.figma.com/community/file/1203061493325953101) by [Pietro Schirano](https://twitter.com/skirano) - A design companion for shadcn/ui. Each component was painstakingly crafted to perfectly match the code implementation.\n\n## Paid\n\n- [shadcn/ui kit](https://shadcndesign.com) by [Matt Wierzbicki](https://x.com/matsugfx) - A premium, always up-to-date UI kit for Figma - shadcn/ui compatible and optimized for smooth design-to-dev handoff.\n- [Shadcraft UI Kit](https://shadcraft.com) - The most advanced shadcn-compatible kit with instant theming via [tweakcn](https://tweakcn.com), a pro library of components and templates, and complete coverage of shadcn components and blocks.\n- [shadcn/studio UI Kit](https://shadcnstudio.com/figma) - Accelerate design & development with a shadcn/ui compatible Figma kit with updated components, 550+ blocks, 10+ templates, 20+ themes, and an AI tool that converts designs into shadcn/ui code.\n- [Shadcnblocks.com](https://www.shadcnblocks.com) - A Premium Shadcn Figma UI Kit with components, 500+ pro blocks, shadcn theme variables, light/dark mode and Figma MCP ready.\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/index.mdx",
    "content": "---\ntitle: Introduction\ndescription: shadcn/ui is a set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks and AI models. Open Source. Open Code.\n---\n\n**This is not a component library. It is how you build your component library.**\n\nYou know how most traditional component libraries work: you install a package from NPM, import the components, and use them in your app.\n\nThis approach works well until you need to customize a component to fit your design system or require one that isn’t included in the library. **Often, you end up wrapping library components, writing workarounds to override styles, or mixing components from different libraries with incompatible APIs.**\n\nThis is what shadcn/ui aims to solve. It is built around the following principles:\n\n- **Open Code:** The top layer of your component code is open for modification.\n- **Composition:** Every component uses a common, composable interface, making them predictable.\n- **Distribution:** A flat-file schema and command-line tool make it easy to distribute components.\n- **Beautiful Defaults:** Carefully chosen default styles, so you get great design out-of-the-box.\n- **AI-Ready:** Open code for LLMs to read, understand, and improve.\n\n## Open Code\n\nshadcn/ui hands you the actual component code. You have full control to customize and extend the components to your needs. This means:\n\n- **Full Transparency:** You see exactly how each component is built.\n- **Easy Customization:** Modify any part of a component to fit your design and functionality requirements.\n- **AI Integration:** Access to the code makes it straightforward for LLMs to read, understand, and even improve your components.\n\n_In a typical library, if you need to change a button’s behavior, you have to override styles or wrap the component. With shadcn/ui, you simply edit the button code directly._\n\n<Accordion type=\"single\" collapsible>\n  <AccordionItem value=\"faq-1\" className=\"border-none\">\n    <AccordionTrigger>\n      How do I pull upstream updates in an Open Code approach?\n    </AccordionTrigger>\n    <AccordionContent>\n      <p>\n        shadcn/ui follows a headless component architecture. This means the core\n        of your app can receive fixes by updating your dependencies, for\n        instance, radix-ui or input-otp.\n      </p>\n      <p className=\"mt-4\">\n        The topmost layer, i.e., the one closest to your design system, is not\n        coupled with the implementation of the library. It stays open for\n        modification.\n      </p>\n    </AccordionContent>\n  </AccordionItem>\n</Accordion>\n\n## Composition\n\nEvery component in shadcn/ui shares a common, composable interface. **If a component does not exist, we bring it in, make it composable, and adjust its style to match and work with the rest of the design system.**\n\n_A shared, composable interface means it's predictable for both your team and LLMs. You are not learning different APIs for every new component. Even for third-party ones._\n\n## Distribution\n\nshadcn/ui is also a code distribution system. It defines a schema for components and a CLI to distribute them.\n\n- **Schema:** A flat-file structure that defines the components, their dependencies, and properties.\n- **CLI:** A command-line tool to distribute and install components across projects with cross-framework support.\n\n_You can use the schema to distribute your components to other projects or have AI generate completely new components based on existing schema._\n\n## Beautiful Defaults\n\nshadcn/ui comes with a large collection of components that have carefully chosen default styles. They are designed to look good on their own and to work well together as a consistent system:\n\n- **Good Out-of-the-Box:** Your UI has a clean and minimal look without extra work.\n- **Unified Design:** Components naturally fit with one another. Each component is built to match the others, keeping your UI consistent.\n- **Easily Customizable:** If you want to change something, it's simple to override and extend the defaults.\n\n## AI-Ready\n\nThe design of shadcn/ui makes it easy for AI tools to work with your code. Its open code and consistent API allow AI models to read, understand, and even generate new components.\n\n_An AI model can learn how your components work and suggest improvements or even create new components that integrate with your existing design._\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/javascript.mdx",
    "content": "---\ntitle: JavaScript\ndescription: How to use shadcn/ui with JavaScript\n---\n\nThis project and the components are written in TypeScript. We recommend using TypeScript for your project as well.\n\nHowever we provide a JavaScript version of the components as well. The JavaScript version is available via the [cli](/docs/cli).\n\nTo opt-out of TypeScript, you can use the `tsx` flag in your `components.json` file.\n\n```json {4} title=\"components.json\" showLineNumbers\n{\n  \"style\": \"new-york\",\n  \"rsc\": false,\n  \"tsx\": false,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  }\n}\n```\n\nTo configure import aliases, you can use the following `jsconfig.json`:\n\n```json {4} title=\"jsconfig.json\" showLineNumbers\n{\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  }\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/legacy.mdx",
    "content": "---\ntitle: Legacy Docs\ndescription: View the legacy docs for shadcn/ui and Tailwind v3.\n---\n\nYou're looking at the docs for shadcn/ui + Tailwind v4. If you're looking for the docs for shadcn/ui + Tailwind v3, you can find them [here](https://v3.shadcn.com).\n\n<Button asChild className=\"mt-6 no-underline\" size=\"sm\">\n  <Link href=\"https://v3.shadcn.com\" target=\"_blank\">\n    View the legacy docs\n  </Link>\n</Button>\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/mcp.mdx",
    "content": "---\ntitle: MCP Server\ndescription: Use the shadcn MCP server to browse, search, and install components from registries.\n---\n\nThe shadcn MCP Server allows AI assistants to interact with items from registries. You can browse available components, search for specific ones, and install them directly into your project using natural language.\n\nFor example, you can ask an AI assistant to \"Build a landing page using components from the acme registry\" or \"Find me a login form from the shadcn registry\".\n\nRegistries are configured in your project's `components.json` file.\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"registries\": {\n    \"@acme\": \"https://acme.com/r/{name}.json\"\n  }\n}\n```\n\n---\n\n## Quick Start\n\nSelect your MCP client and follow the instructions to configure the shadcn MCP server. If you'd like to do it manually, see the [Configuration](#configuration) section.\n\n<Tabs defaultValue=\"claude\">\n  <TabsList>\n    <TabsTrigger value=\"claude\">Claude Code</TabsTrigger>\n    <TabsTrigger value=\"cursor\">Cursor</TabsTrigger>\n    <TabsTrigger value=\"vscode\">VS Code</TabsTrigger>\n    <TabsTrigger value=\"codex\">Codex</TabsTrigger>\n    <TabsTrigger value=\"opencode\">OpenCode</TabsTrigger>\n  </TabsList>\n  <TabsContent value=\"claude\" className=\"mt-4\">\n    **Run the following command** in your project:\n       ```bash\n       npx shadcn@latest mcp init --client claude\n       ```\n\n    **Restart Claude Code** and try the following prompts:\n       - Show me all available components in the shadcn registry\n       - Add the button, dialog and card components to my project\n       - Create a contact form using components from the shadcn registry\n\n    **Note:** You can use `/mcp` command in Claude Code to debug the MCP server.\n\n  </TabsContent>\n\n  <TabsContent value=\"cursor\" className=\"mt-4\">\n    **Run the following command** in your project:\n       ```bash\n       npx shadcn@latest mcp init --client cursor\n       ```\n\n    Open **Cursor Settings** and **Enable the MCP server** for shadcn. Then try the following prompts:\n       - Show me all available components in the shadcn registry\n       - Add the button, dialog and card components to my project\n       - Create a contact form using components from the shadcn registry\n\n  </TabsContent>\n\n  <TabsContent value=\"vscode\" className=\"mt-4\">\n    **Run the following command** in your project:\n       ```bash\n       npx shadcn@latest mcp init --client vscode\n       ```\n\n    Open `.vscode/mcp.json` and click **Start** next to the shadcn server. Then try the following prompts with GitHub Copilot:\n       - Show me all available components in the shadcn registry\n       - Add the button, dialog and card components to my project\n       - Create a contact form using components from the shadcn registry\n\n  </TabsContent>\n\n  <TabsContent value=\"codex\" className=\"mt-4\">\n    <Callout className=\"mt-0\">\n      **Note:** The `shadcn` CLI cannot automatically update `~/.codex/config.toml`.\n      You'll need to add the configuration manually for Codex.\n    </Callout>\n\n    **Run the following command** in your project:\n       ```bash\n       npx shadcn@latest mcp init --client codex\n       ```\n\n    **Then, add the following configuration** to `~/.codex/config.toml`:\n       ```toml\n       [mcp_servers.shadcn]\n       command = \"npx\"\n       args = [\"shadcn@latest\", \"mcp\"]\n       ```\n\n    **Restart Codex** and try the following prompts:\n       - Show me all available components in the shadcn registry\n       - Add the button, dialog and card components to my project\n       - Create a contact form using components from the shadcn registry\n\n  </TabsContent>\n\n  <TabsContent value=\"opencode\" className=\"mt-4\">\n    **Run the following command** in your project:\n       ```bash\n       npx shadcn@latest mcp init --client opencode\n       ```\n\n    **Restart OpenCode** and try the following prompts:\n       - Show me all available components in the shadcn registry\n       - Add the button, dialog and card components to my project\n       - Create a contact form using components from the shadcn registry\n\n  </TabsContent>\n</Tabs>\n\n---\n\n## What is MCP?\n\n[Model Context Protocol (MCP)](https://modelcontextprotocol.io) is an open protocol that enables AI assistants to securely connect to external data sources and tools. With the shadcn MCP server, your AI assistant gains direct access to:\n\n- **Browse Components** - List all available components, blocks, and templates from any configured registry\n- **Search Across Registries** - Find specific components by name or functionality across multiple sources\n- **Install with Natural Language** - Add components using simple conversational prompts like \"add a login form\"\n- **Support for Multiple Registries** - Access public registries, private company libraries, and third-party sources\n\n---\n\n## How It Works\n\nThe MCP server acts as a bridge between your AI assistant, component registries and the shadcn CLI.\n\n1. **Registry Connection** - MCP connects to configured registries (shadcn/ui, private registries, third-party sources)\n2. **Natural Language** - You describe what you need in plain English\n3. **AI Processing** - The assistant translates your request into registry commands\n4. **Component Delivery** - Resources are fetched and installed in your project\n\n---\n\n## Supported Registries\n\nThe shadcn MCP server works out of the box with any shadcn-compatible registry.\n\n- **shadcn/ui Registry** - The default registry with all shadcn/ui components\n- **Third-Party Registries** - Any registry following the shadcn registry specification\n- **Private Registries** - Your company's internal component libraries\n- **Namespaced Registries** - Multiple registries configured with `@namespace` syntax\n\n---\n\n## Configuration\n\nYou can use any MCP client to interact with the shadcn MCP server. Here are the instructions for the most popular ones.\n\n### Claude Code\n\nTo use the shadcn MCP server with Claude Code, add the following configuration to your project's `.mcp.json` file:\n\n```json title=\".mcp.json\" showLineNumbers\n{\n  \"mcpServers\": {\n    \"shadcn\": {\n      \"command\": \"npx\",\n      \"args\": [\"shadcn@latest\", \"mcp\"]\n    }\n  }\n}\n```\n\nAfter adding the configuration, restart Claude Code and run `/mcp` to see the shadcn MCP server in the list. If you see `Connected`, you're good to go.\n\nSee the [Claude Code MCP documentation](https://code.claude.com/docs/en/mcp) for more details.\n\n### Cursor\n\nTo configure MCP in Cursor, add the shadcn server to your project's `.cursor/mcp.json` configuration file:\n\n```json title=\".cursor/mcp.json\" showLineNumbers\n{\n  \"mcpServers\": {\n    \"shadcn\": {\n      \"command\": \"npx\",\n      \"args\": [\"shadcn@latest\", \"mcp\"]\n    }\n  }\n}\n```\n\nAfter adding the configuration, enable the shadcn MCP server in Cursor Settings.\n\nOnce enabled, you should see a green dot next to the shadcn server in the MCP server list and a list of available tools.\n\nSee the [Cursor MCP documentation](https://docs.cursor.com/en/context/mcp#using-mcp-json) for more details.\n\n### VS Code\n\nTo configure MCP in VS Code with GitHub Copilot, add the shadcn server to your project's `.vscode/mcp.json` configuration file:\n\n```json title=\".vscode/mcp.json\" showLineNumbers\n{\n  \"servers\": {\n    \"shadcn\": {\n      \"command\": \"npx\",\n      \"args\": [\"shadcn@latest\", \"mcp\"]\n    }\n  }\n}\n```\n\nAfter adding the configuration, open `.vscode/mcp.json` and click **Start** next to the shadcn server.\n\nSee the [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more details.\n\n### Codex\n\n<Callout>\n  **Note:** The `shadcn` CLI cannot automatically update `~/.codex/config.toml`.\n  You'll need to add the configuration manually.\n</Callout>\n\nTo configure MCP in Codex, add the shadcn server to `~/.codex/config.toml`:\n\n```toml title=\"~/.codex/config.toml\" showLineNumbers\n[mcp_servers.shadcn]\ncommand = \"npx\"\nargs = [\"shadcn@latest\", \"mcp\"]\n```\n\nAfter adding the configuration, restart Codex to load the MCP server.\n\n---\n\n## Configuring Registries\n\nThe MCP server supports multiple registries through your project's `components.json` configuration. This allows you to access components from various sources including private registries and third-party providers.\n\nConfigure additional registries in your `components.json`:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"registries\": {\n    \"@acme\": \"https://registry.acme.com/{name}.json\",\n    \"@internal\": {\n      \"url\": \"https://internal.company.com/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REGISTRY_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\n<Callout>\n  **Note:** No configuration is needed to access the standard shadcn/ui\n  registry.\n</Callout>\n\n---\n\n## Authentication\n\nFor private registries requiring authentication, set environment variables in your `.env.local`:\n\n```bash title=\".env.local\"\nREGISTRY_TOKEN=your_token_here\nAPI_KEY=your_api_key_here\n```\n\nFor more details on registry authentication, see the [Authentication documentation](/docs/registry/authentication).\n\n---\n\n## Example Prompts\n\nOnce the MCP server is configured, you can use natural language to interact with registries. Try one of the following prompts:\n\n### Browse & Search\n\n- Show me all available components in the shadcn registry\n- Find me a login form from the shadcn registry\n\n### Install Items\n\n- Add the button component to my project\n- Create a login form using shadcn components\n- Install the Cursor rules from the acme registry\n\n### Work with Namespaces\n\n- Show me components from acme registry\n- Install @internal/auth-form\n- Build me a landing page using hero, features and testimonials sections from the acme registry\n\n---\n\n## Troubleshooting\n\n### MCP Not Responding\n\nIf the MCP server isn't responding to prompts:\n\n1. **Check Configuration** - Verify the MCP server is properly configured and enabled in your MCP client\n2. **Restart MCP Client** - Restart your MCP client after configuration changes\n3. **Verify Installation** - Ensure `shadcn` is installed in your project\n4. **Check Network** - Confirm you can access the configured registries\n\n### Registry Access Issues\n\nIf components aren't loading from registries:\n\n1. **Check components.json** - Verify registry URLs are correct\n2. **Test Authentication** - Ensure environment variables are set for private registries\n3. **Verify Registry** - Confirm the registry is online and accessible\n4. **Check Namespace** - Ensure namespace syntax is correct (`@namespace/component`)\n\n### Installation Failures\n\nIf components fail to install:\n\n1. **Check Project Setup** - Ensure you have a valid `components.json` file\n2. **Verify Paths** - Confirm the target directories exist\n3. **Check Permissions** - Ensure write permissions for component directories\n4. **Review Dependencies** - Check that required dependencies are installed\n\n### No Tools or Prompts\n\nIf you see the `No tools or prompts` message, try the following:\n\n1. **Clear the npx cache** - Run `npx clear-npx-cache`\n2. **Re-enable the MCP server** - Try to re-enable the MCP server in your MCP client\n3. **Check Logs** - In Cursor, you can see the logs under View -> Output and select `MCP: project-*` in the dropdown.\n\n---\n\n## Learn More\n\n- [Registry Documentation](/docs/registry) - Complete guide to shadcn registries\n- [Namespaces](/docs/registry/namespace) - Configure multiple registry sources\n- [Authentication](/docs/registry/authentication) - Secure your private registries\n- [MCP Specification](https://modelcontextprotocol.io) - Learn about Model Context Protocol\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/meta.json",
    "content": "{\n  \"title\": \"Get Started\",\n  \"pages\": [\n    \"index\",\n    \"[Installation](/docs/installation)\",\n    \"components-json\",\n    \"theming\",\n    \"[Dark Mode](/docs/dark-mode)\",\n    \"[RTL](/docs/rtl)\",\n    \"[CLI](/docs/cli)\",\n    \"monorepo\",\n    \"skills\",\n    \"v0\",\n    \"javascript\",\n    \"blocks\",\n    \"figma\",\n    \"[Changelog](/docs/changelog)\",\n    \"[llms.txt](/llms.txt)\",\n    \"legacy\",\n    \"!new\"\n  ]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/monorepo.mdx",
    "content": "---\ntitle: Monorepo\ndescription: Using shadcn/ui components and CLI in a monorepo.\n---\n\nUntil now, using shadcn/ui in a monorepo was a bit of a pain. You could add\ncomponents using the CLI, but you had to manage where the components\nwere installed and manually fix import paths.\n\nWith the new monorepo support in the CLI, we've made it a lot easier to use\nshadcn/ui in a monorepo.\n\nThe CLI now understands the monorepo structure and will install the components,\ndependencies and registry dependencies to the correct paths and handle imports\nfor you.\n\n## Getting started\n\n<Steps>\n\n### Create a new monorepo project\n\nTo create a new monorepo project, run the `init` command with the `--monorepo` flag.\n\n```bash\nnpx shadcn@latest init --monorepo\n```\n\nThen select the template you want to use.\n\n```bash\n? Select a template ›\n❯   Next.js\n    Vite\n    TanStack Start\n    React Router\n    Astro\n```\n\nThis will create a new monorepo project with two workspaces: `web` and `ui`,\nand [Turborepo](https://turbo.build/repo/docs) as the build system.\n\nEverything is set up for you, so you can start adding components to your project.\n\n### Add components to your project\n\nTo add components to your project, run the `add` command **in the path of your app**.\n\n```bash\ncd apps/web\n```\n\n```bash\nnpx shadcn@latest add [COMPONENT]\n```\n\nThe CLI will figure out what type of component you are adding and install the\ncorrect files to the correct path.\n\nFor example, if you run `npx shadcn@latest add button`, the CLI will install the button component under `packages/ui` and update the import path for components in `apps/web`.\n\nIf you run `npx shadcn@latest add login-01`, the CLI will install the `button`, `label`, `input` and `card` components under `packages/ui` and the `login-form` component under `apps/web/components`.\n\n### Importing components\n\nYou can import components from the `@workspace/ui` package as follows:\n\n```tsx\nimport { Button } from \"@workspace/ui/components/button\"\n```\n\nYou can also import hooks and utilities from the `@workspace/ui` package.\n\n```tsx\nimport { useTheme } from \"@workspace/ui/hooks/use-theme\"\nimport { cn } from \"@workspace/ui/lib/utils\"\n```\n\n</Steps>\n\n## File Structure\n\nWhen you create a new monorepo project, the CLI will create the following file structure:\n\n```txt\napps\n└── web         # Your app goes here.\n    ├── app\n    │   └── page.tsx\n    ├── components\n    │   └── login-form.tsx\n    ├── components.json\n    └── package.json\npackages\n└── ui          # Your components and dependencies are installed here.\n    ├── src\n    │   ├── components\n    │   │   └── button.tsx\n    │   ├── hooks\n    │   ├── lib\n    │   │   └── utils.ts\n    │   └── styles\n    │       └── globals.css\n    ├── components.json\n    └── package.json\npackage.json\nturbo.json\n```\n\n## Requirements\n\n1. Every workspace must have a `components.json` file. A `package.json` file tells npm how to install the dependencies. A `components.json` file tells the CLI how and where to install components.\n\n2. The `components.json` file must properly define aliases for the workspace. This tells the CLI how to import components, hooks, utilities, etc.\n\n```json showLineNumbers title=\"apps/web/components.json\"\n{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"../../packages/ui/src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"hooks\": \"@/hooks\",\n    \"lib\": \"@/lib\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n```\n\n```json showLineNumbers title=\"packages/ui/components.json\"\n{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@workspace/ui/components\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"hooks\": \"@workspace/ui/hooks\",\n    \"lib\": \"@workspace/ui/lib\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n```\n\n3. Ensure you have the same `style`, `iconLibrary` and `baseColor` in both `components.json` files.\n\n4. **For Tailwind CSS v4, leave the `tailwind` config empty in the `components.json` file.**\n\nBy following these requirements, the CLI will be able to install ui components, blocks, libs and hooks to the correct paths and handle imports for you.\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/new.mdx",
    "content": "---\ntitle: Your project is ready!\ndescription: You've created a new project with shadcn/ui.\n---\n\nHere are a few things you can do to get started building with shadcn/ui.\n\n## Add Components\n\nUse the CLI to add components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThen import and use it in your code.\n\n```tsx title=\"app/page.tsx\"\nimport { Button } from \"@/components/ui/button\"\n\nexport default function Home() {\n  return <Button>Click me</Button>\n}\n```\n\nUnlike traditional component libraries, shadcn/ui adds the component source code directly to your project under `components/ui/`. You own the code and can customize it however you want.\n\nYou can add multiple components at once or add all available components.\n\n```bash\nnpx shadcn@latest add button card input label\n```\n\n```bash\nnpx shadcn@latest add --all\n```\n\nBrowse all components on the [Components](/docs/components) page.\n\n## Customize Your Theme\n\nYou can edit your theme directly in your CSS file. Learn more about [Theming](/docs/theming) and how to use CSS variables or utility classes.\n\nIf you want to try a new preset, you can create a custom theme visually on [ui.shadcn.com](https://ui.shadcn.com) and apply it to your project using a preset code.\n\n```bash\nnpx shadcn@latest init --preset [CODE]\n```\n\n## Add a block\n\nYou can add a block to your project using the CLI.\n\n```bash\nnpx shadcn@latest add login-03\n```\n\nThis will add the `login-03` block to your project. Import and use it in your code.\n\n```tsx title=\"app/page.tsx\"\nimport { Login03 } from \"@/components/login-03\"\n\nexport default function Home() {\n  return <Login03 />\n}\n```\n\n## Install from Registries\n\nshadcn/ui has a growing ecosystem of community registries. You can install components from any registry URL using the CLI.\n\n```bash\nnpx shadcn@latest add @[registry]/[name]\n```\n\nBrowse the [Registry Directory](/docs/directory) for a list of available registries.\n\n## Use AI to Build\n\nshadcn/ui is designed to work with AI. Your AI assistant can read the component source code in your project, understand the APIs, and compose them together to build pages and features.\n\nHere are some example prompts to try:\n\n- _\"Create a signup page with a form for entering name, email and password.\"_\n- _\"Create a settings page with a form for updating profile information.\"_\n- _\"Build a dashboard with a header, stats cards, and a data table.\"_\n\n## Install the shadcn Skills\n\nInstall the shadcn skill in your AI assistant. This will give your AI assistant access to the full component registry, documentation, and search.\n\n```bash\nnpx skills add shadcn/ui\n```\n\nLearn more about [skills](/docs/skills).\n\n## Connect the MCP Server\n\nThe shadcn MCP server gives your AI assistant access to the full component registry, documentation, and search. Connect it in your editor for the best experience.\n\n```bash\nnpx shadcn@latest mcp init\n```\n\nLearn more on the [MCP Server](/docs/mcp) page.\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/react-19.mdx",
    "content": "---\ntitle: Next.js 15 + React 19\ndescription: Using shadcn/ui with Next.js 15 and React 19.\n---\n\n<Callout className=\"\">\n  **Update:** We have added full support for React 19 and Tailwind v4 in the\n  `latest` release. **This guide might be outdated. Proceed with caution.**\n</Callout>\n\n## TL;DR\n\nIf you're using `npm`, you can install shadcn/ui dependencies with a flag. The `shadcn` CLI will prompt you to select a flag when you run it. No flags required for pnpm, bun, or yarn.\n\nSee [Upgrade Status](#upgrade-status) for the status of React 19 support for each package.\n\n## What's happening?\n\nReact 19 is now [rc](https://www.npmjs.com/package/react?activeTab=versions) and is [tested and supported in the latest Next.js 15 release](https://nextjs.org/blog/next-15#react-19).\n\nTo support React 19, package maintainers will need to test and update their packages to include React 19 as a peer dependency. This is [already](https://github.com/radix-ui/primitives/pull/2952) [in](https://github.com/pacocoursey/cmdk/pull/318) [progress](https://github.com/emilkowalski/vaul/pull/498).\n\n```diff /^19.0/\n\"peerDependencies\": {\n-  \"react\": \"^16.8 || ^17.0 || ^18.0\",\n+  \"react\": \"^16.8 || ^17.0 || ^18.0 || ^19.0\",\n-  \"react-dom\": \"^16.8 || ^17.0 || ^18.0\"\n+  \"react-dom\": \"^16.8 || ^17.0 || ^18.0 || ^19.0\"\n},\n```\n\n<Callout>\n  You can check if a package lists React 19 as a peer dependency by running\n  `npm info <package> peerDependencies`.\n</Callout>\n\nIn the meantime, if you are installing a package that **does not** list React 19 as a peer dependency, you will see an error message like this:\n\n```bash\nnpm error code ERESOLVE\nnpm error ERESOLVE unable to resolve dependency tree\nnpm error\nnpm error While resolving: my-app@0.1.0\nnpm error Found: react@19.0.0-rc-69d4b800-20241021\nnpm error node_modules/react\nnpm error   react@\"19.0.0-rc-69d4b800-20241021\" from the root project\n```\n\n<Callout>\n  **Note:** This is npm only. PNPM and Bun will only show a silent warning.\n</Callout>\n\n## How to fix this\n\n### Solution 1: `--force` or `--legacy-peer-deps`\n\nYou can force install a package with the `--force` or the `--legacy-peer-deps` flag.\n\n```bash\nnpm i <package> --force\n\nnpm i <package> --legacy-peer-deps\n```\n\nThis will install the package and ignore the peer dependency warnings.\n\n<Accordion type=\"multiple\">\n  <AccordionItem value=\"flags\">\n    <AccordionTrigger className=\"font-medium\">\n      What do the `--force` and `--legacy-peer-deps` flag do?\n    </AccordionTrigger>\n    <AccordionContent className=\"[&_ul]:mt-0\">\n\n      - `--force`: Ignores and overrides any dependency conflicts, forcing the\n        installation of packages.\n      - `--legacy-peer-deps`: Skips strict peer dependency checks, allowing\n        installation of packages with unmet peer dependencies to avoid errors.\n\n    </AccordionContent>\n\n  </AccordionItem>\n</Accordion>\n\n### Solution 2: Use React 18\n\nYou can downgrade `react` and `react-dom` to version 18, which is compatible with the package you are installing and upgrade when the dependency is updated.\n\n```bash\nnpm i react@18 react-dom@18\n```\n\nWhichever solution you choose, make sure you test your app thoroughly to ensure\nthere are no regressions.\n\n## Using shadcn/ui on Next.js 15\n\n### Using pnpm, bun, or yarn\n\nFollow the instructions in the [installation guide](/docs/installation/next) to install shadcn/ui. No flags are needed.\n\n### Using npm\n\nWhen you run `npx shadcn@latest init -d`, you will be prompted to select an option to resolve the peer dependency issues.\n\n```bash\nIt looks like you are using React 19.\nSome packages may fail to install due to peer dependency issues (see https://ui.shadcn.com/react-19).\n\n? How would you like to proceed? › - Use arrow-keys. Return to submit.\n❯   Use --force\n    Use --legacy-peer-deps\n```\n\nYou can then run the command with the flag you choose.\n\n## Adding components\n\nThe process for adding components is the same as above. Select a flag to resolve the peer dependency issues.\n\n**Remember to always test your app after installing new dependencies.**\n\n## Upgrade Status\n\nTo make it easy for you to track the progress of the upgrade, here is a table with the React 19 support status for the shadcn/ui dependencies.\n\n- ✅ - Works with React 19 using npm, pnpm, and bun.\n- 🚧 - Works with React 19 using pnpm and bun. Requires flag for npm. PR is in progress.\n\n| Package                                                                            | Status | Note                                                        |\n| ---------------------------------------------------------------------------------- | ------ | ----------------------------------------------------------- |\n| [radix-ui](https://www.npmjs.com/package/@radix-ui/react-icons)                    | ✅     |                                                             |\n| [lucide-react](https://www.npmjs.com/package/lucide-react)                         | ✅     |                                                             |\n| [class-variance-authority](https://www.npmjs.com/package/class-variance-authority) | ✅     | Does not list React 19 as a peer dependency.                |\n| [tailwindcss-animate](https://www.npmjs.com/package/tailwindcss-animate)           | ✅     | Does not list React 19 as a peer dependency.                |\n| [embla-carousel-react](https://www.npmjs.com/package/embla-carousel-react)         | ✅     |                                                             |\n| [recharts](https://www.npmjs.com/package/recharts)                                 | ✅     | See note [below](#recharts)                                 |\n| [react-hook-form](https://www.npmjs.com/package/react-hook-form)                   | ✅     |                                                             |\n| [react-resizable-panels](https://www.npmjs.com/package/react-resizable-panels)     | ✅     |                                                             |\n| [sonner](https://www.npmjs.com/package/sonner)                                     | ✅     |                                                             |\n| [react-day-picker](https://www.npmjs.com/package/react-day-picker)                 | ✅     | Works with flag for npm. Work to upgrade to v9 in progress. |\n| [input-otp](https://www.npmjs.com/package/input-otp)                               | ✅     |                                                             |\n| [vaul](https://www.npmjs.com/package/vaul)                                         | ✅     |                                                             |\n| [@radix-ui/react-icons](https://www.npmjs.com/package/@radix-ui/react-icons)       | ✅     | See [PR #194](https://github.com/radix-ui/icons/pull/194)   |\n| [cmdk](https://www.npmjs.com/package/cmdk)                                         | ✅     |                                                             |\n\nIf you have any questions, please [open an issue](https://github.com/shadcn/ui/issues) on GitHub.\n\n## Recharts\n\nTo use recharts with React 19, you will need to override the `react-is` dependency.\n\n<Steps>\n\n<Step>Add the following to your `package.json`</Step>\n\n```json title=\"package.json\"\n\"overrides\": {\n  \"react-is\": \"^19.0.0-rc-69d4b800-20241021\"\n}\n```\n\nNote: the `react-is` version needs to match the version of React 19 you are using. The above is an example.\n\n<Step>Run `npm install --legacy-peer-deps`</Step>\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/skills.mdx",
    "content": "---\ntitle: Skills\ndescription: Give your AI assistant deep knowledge of shadcn/ui components, patterns, and best practices.\n---\n\nSkills give AI assistants like Claude Code project-aware context about shadcn/ui. When installed, your AI assistant knows how to find, install, compose, and customize components using the correct APIs and patterns for your project.\n\nFor example, you can ask your AI assistant to:\n\n- _\"Add a login form with email and password fields.\"_\n- _\"Create a settings page with a form for updating profile information.\"_\n- _\"Build a dashboard with a sidebar, stats cards, and a data table.\"_\n- _\"Switch to --preset [CODE]\"_\n- _\"Can you add a hero from @tailark?\"_\n\nThe skill reads your project's `components.json` and provides the assistant with your framework, aliases, installed components, icon library, and base library so it can generate correct code on the first try.\n\n---\n\n## Install\n\n```bash\nnpx skills add shadcn/ui\n```\n\nThis installs the shadcn skill into your project. Once installed, your AI assistant automatically loads it when working with shadcn/ui components.\n\nLearn more about skills at [skills.sh](https://skills.sh).\n\n---\n\n## What's Included\n\nThe skill provides your AI assistant with the following knowledge:\n\n### Project Context\n\nOn every interaction, the skill runs `shadcn info --json` to get your project's configuration: framework, Tailwind version, aliases, base library (`radix` or `base`), icon library, installed components, and resolved file paths.\n\n### CLI Commands\n\nFull reference for all CLI commands: `init`, `add`, `search`, `view`, `docs`, `diff`, `info`, and `build`. Includes flags, dry-run mode, smart merge workflows, presets, and templates.\n\n### Theming and Customization\n\nHow CSS variables, OKLCH colors, dark mode, custom colors, border radius, and component variants work. Includes guidance for both Tailwind v3 and v4.\n\n### Registry Authoring\n\nHow to build and publish custom component registries: `registry.json` format, item types, file objects, dependencies, CSS variables, building, hosting, and user configuration.\n\n### MCP Server\n\nSetup and tools for the shadcn MCP server, which lets AI assistants search, browse, and install components from registries.\n\n---\n\n## How It Works\n\n1. **Project detection** — The skill activates when it finds a `components.json` file in your project.\n2. **Context injection** — It runs `shadcn info --json` to read your project configuration and injects the result into the assistant's context.\n3. **Pattern enforcement** — The assistant follows shadcn/ui composition rules: using `FieldGroup` for forms, `ToggleGroup` for option sets, semantic colors, and correct base-specific APIs.\n4. **Component discovery** — The assistant uses `shadcn docs`, `shadcn search`, or MCP tools to find components and their documentation before generating code.\n\n## Learn More\n\n- [CLI](/docs/cli) — Full CLI command reference\n- [MCP Server](/docs/mcp) — Connect the MCP server for registry access\n- [Theming](/docs/theming) — CSS variables and customization\n- [Registry](/docs/registry) — Building and publishing custom registries\n- [skills.sh](https://skills.sh) — Learn more about AI skills\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/tailwind-v4.mdx",
    "content": "---\ntitle: Tailwind v4\ndescription: How to use shadcn/ui with Tailwind v4 and React 19.\n---\n\nIt’s here! Tailwind v4 and React 19. Ready for you to try out. You can start using it today.\n\n## What's New\n\n- The CLI can now initialize projects with Tailwind v4.\n- Full support for the new `@theme` directive and `@theme inline` option.\n- All components are updated for Tailwind v4 and React 19.\n- We’ve removed the forwardRefs and adjusted the types.\n- Every primitive now has a `data-slot` attribute for styling.\n- We've fixed and cleaned up the style of the components.\n- We're deprecating the `toast` component in favor of `sonner`.\n- Buttons now use the default cursor.\n- We're deprecating the `default` style. New projects will use `new-york`.\n- HSL colors are now converted to OKLCH.\n\n**Note: this is non-breaking. Your existing apps with Tailwind v3 and React 18 will still work. When you add new components, they'll still be in v3 and React 18 until you upgrade. Only new projects start with Tailwind v4 and React 19.**\n\n## Try It Out\n\nYou can start using Tailwind v4 + React 19 today. See the framework specific guides below for how to get started.\n\n<div className=\"mt-8 grid gap-4 sm:grid-cols-2 sm:gap-6\">\n  <LinkedCard href=\"/docs/installation/next\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Next.js</title>\n      <path d=\"M11.5725 0c-.1763 0-.3098.0013-.3584.0067-.0516.0053-.2159.021-.3636.0328-3.4088.3073-6.6017 2.1463-8.624 4.9728C1.1004 6.584.3802 8.3666.1082 10.255c-.0962.659-.108.8537-.108 1.7474s.012 1.0884.108 1.7476c.652 4.506 3.8591 8.2919 8.2087 9.6945.7789.2511 1.6.4223 2.5337.5255.3636.04 1.9354.04 2.299 0 1.6117-.1783 2.9772-.577 4.3237-1.2643.2065-.1056.2464-.1337.2183-.1573-.0188-.0139-.8987-1.1938-1.9543-2.62l-1.919-2.592-2.4047-3.5583c-1.3231-1.9564-2.4117-3.556-2.4211-3.556-.0094-.0026-.0187 1.5787-.0235 3.509-.0067 3.3802-.0093 3.5162-.0516 3.596-.061.115-.108.1618-.2064.2134-.075.0374-.1408.0445-.495.0445h-.406l-.1078-.068a.4383.4383 0 01-.1572-.1712l-.0493-.1056.0053-4.703.0067-4.7054.0726-.0915c.0376-.0493.1174-.1125.1736-.143.0962-.047.1338-.0517.5396-.0517.4787 0 .5584.0187.6827.1547.0353.0377 1.3373 1.9987 2.895 4.3608a10760.433 10760.433 0 004.7344 7.1706l1.9002 2.8782.096-.0633c.8518-.5536 1.7525-1.3418 2.4657-2.1627 1.5179-1.7429 2.4963-3.868 2.8247-6.134.0961-.6591.1078-.854.1078-1.7475 0-.8937-.012-1.0884-.1078-1.7476-.6522-4.506-3.8592-8.2919-8.2087-9.6945-.7672-.2487-1.5836-.42-2.4985-.5232-.169-.0176-1.0835-.0366-1.6123-.037zm4.0685 7.217c.3473 0 .4082.0053.4857.047.1127.0562.204.1642.237.2767.0186.061.0234 1.3653.0186 4.3044l-.0067 4.2175-.7436-1.14-.7461-1.14v-3.066c0-1.982.0093-3.0963.0234-3.1502.0375-.1313.1196-.2346.2323-.2955.0961-.0494.1313-.054.4997-.054z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Next.js</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/installation/vite\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Vite</title>\n      <path d=\"m8.286 10.578.512-8.657a.306.306 0 0 1 .247-.282L17.377.006a.306.306 0 0 1 .353.385l-1.558 5.403a.306.306 0 0 0 .352.385l2.388-.46a.306.306 0 0 1 .332.438l-6.79 13.55-.123.19a.294.294 0 0 1-.252.14c-.177 0-.35-.152-.305-.369l1.095-5.301a.306.306 0 0 0-.388-.355l-1.433.435a.306.306 0 0 1-.389-.354l.69-3.375a.306.306 0 0 0-.37-.36l-2.32.536a.306.306 0 0 1-.374-.316zm14.976-7.926L17.284 3.74l-.544 1.887 2.077-.4a.8.8 0 0 1 .84.369.8.8 0 0 1 .034.783L12.9 19.93l-.013.025-.015.023-.122.19a.801.801 0 0 1-.672.37.826.826 0 0 1-.634-.302.8.8 0 0 1-.16-.67l1.029-4.981-1.12.34a.81.81 0 0 1-.86-.262.802.802 0 0 1-.165-.67l.63-3.08-2.027.468a.808.808 0 0 1-.768-.233.81.81 0 0 1-.217-.6l.389-6.57-7.44-1.33a.612.612 0 0 0-.64.906L11.58 23.691a.612.612 0 0 0 1.066-.004l11.26-20.135a.612.612 0 0 0-.644-.9z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Vite</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/installation/laravel\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 62 65\"\n      fill=\"currentColor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n    >\n      <path d=\"M61.8548 14.6253C61.8778 14.7102 61.8895 14.7978 61.8897 14.8858V28.5615C61.8898 28.737 61.8434 28.9095 61.7554 29.0614C61.6675 29.2132 61.5409 29.3392 61.3887 29.4265L49.9104 36.0351V49.1337C49.9104 49.4902 49.7209 49.8192 49.4118 49.9987L25.4519 63.7916C25.3971 63.8227 25.3372 63.8427 25.2774 63.8639C25.255 63.8714 25.2338 63.8851 25.2101 63.8913C25.0426 63.9354 24.8666 63.9354 24.6991 63.8913C24.6716 63.8838 24.6467 63.8689 24.6205 63.8589C24.5657 63.8389 24.5084 63.8215 24.456 63.7916L0.501061 49.9987C0.348882 49.9113 0.222437 49.7853 0.134469 49.6334C0.0465019 49.4816 0.000120578 49.3092 0 49.1337L0 8.10652C0 8.01678 0.0124642 7.92953 0.0348998 7.84477C0.0423783 7.8161 0.0598282 7.78993 0.0697995 7.76126C0.0884958 7.70891 0.105946 7.65531 0.133367 7.6067C0.152063 7.5743 0.179485 7.54812 0.20192 7.51821C0.230588 7.47832 0.256763 7.43719 0.290416 7.40229C0.319084 7.37362 0.356476 7.35243 0.388883 7.32751C0.425029 7.29759 0.457436 7.26518 0.498568 7.2415L12.4779 0.345059C12.6296 0.257786 12.8015 0.211853 12.9765 0.211853C13.1515 0.211853 13.3234 0.257786 13.475 0.345059L25.4531 7.2415H25.4556C25.4955 7.26643 25.5292 7.29759 25.5653 7.32626C25.5977 7.35119 25.6339 7.37362 25.6625 7.40104C25.6974 7.43719 25.7224 7.47832 25.7523 7.51821C25.7735 7.54812 25.8021 7.5743 25.8196 7.6067C25.8483 7.65656 25.8645 7.70891 25.8844 7.76126C25.8944 7.78993 25.9118 7.8161 25.9193 7.84602C25.9423 7.93096 25.954 8.01853 25.9542 8.10652V33.7317L35.9355 27.9844V14.8846C35.9355 14.7973 35.948 14.7088 35.9704 14.6253C35.9792 14.5954 35.9954 14.5692 36.0053 14.5405C36.0253 14.4882 36.0427 14.4346 36.0702 14.386C36.0888 14.3536 36.1163 14.3274 36.1375 14.2975C36.1674 14.2576 36.1923 14.2165 36.2272 14.1816C36.2559 14.1529 36.292 14.1317 36.3244 14.1068C36.3618 14.0769 36.3942 14.0445 36.4341 14.0208L48.4147 7.12434C48.5663 7.03694 48.7383 6.99094 48.9133 6.99094C49.0883 6.99094 49.2602 7.03694 49.4118 7.12434L61.3899 14.0208C61.4323 14.0457 61.4647 14.0769 61.5021 14.1055C61.5333 14.1305 61.5694 14.1529 61.5981 14.1803C61.633 14.2165 61.6579 14.2576 61.6878 14.2975C61.7103 14.3274 61.7377 14.3536 61.7551 14.386C61.7838 14.4346 61.8 14.4882 61.8199 14.5405C61.8312 14.5692 61.8474 14.5954 61.8548 14.6253ZM59.893 27.9844V16.6121L55.7013 19.0252L49.9104 22.3593V33.7317L59.8942 27.9844H59.893ZM47.9149 48.5566V37.1768L42.2187 40.4299L25.953 49.7133V61.2003L47.9149 48.5566ZM1.99677 9.83281V48.5566L23.9562 61.199V49.7145L12.4841 43.2219L12.4804 43.2194L12.4754 43.2169C12.4368 43.1945 12.4044 43.1621 12.3682 43.1347C12.3371 43.1097 12.3009 43.0898 12.2735 43.0624L12.271 43.0586C12.2386 43.0275 12.2162 42.9888 12.1887 42.9539C12.1638 42.9203 12.1339 42.8916 12.114 42.8567L12.1127 42.853C12.0903 42.8156 12.0766 42.7707 12.0604 42.7283C12.0442 42.6909 12.023 42.656 12.013 42.6161C12.0005 42.5688 11.998 42.5177 11.9931 42.4691C11.9881 42.4317 11.9781 42.3943 11.9781 42.3569V15.5801L6.18848 12.2446L1.99677 9.83281ZM12.9777 2.36177L2.99764 8.10652L12.9752 13.8513L22.9541 8.10527L12.9752 2.36177H12.9777ZM18.1678 38.2138L23.9574 34.8809V9.83281L19.7657 12.2459L13.9749 15.5801V40.6281L18.1678 38.2138ZM48.9133 9.14105L38.9344 14.8858L48.9133 20.6305L58.8909 14.8846L48.9133 9.14105ZM47.9149 22.3593L42.124 19.0252L37.9323 16.6121V27.9844L43.7219 31.3174L47.9149 33.7317V22.3593ZM24.9533 47.987L39.59 39.631L46.9065 35.4555L36.9352 29.7145L25.4544 36.3242L14.9907 42.3482L24.9533 47.987Z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Laravel</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/installation/react-router\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <path d=\"M12.118 5.466a2.306 2.306 0 0 0-.623.08c-.278.067-.702.332-.953.583-.41.423-.49.609-.662 1.469-.08.423.41 1.43.847 1.734.45.317 1.085.502 2.065.608 1.429.16 1.84.636 1.84 2.197 0 1.377-.385 1.747-1.96 1.906-1.707.172-2.58.834-2.765 2.117-.106.781.41 1.76 1.125 2.091 1.627.768 3.15-.198 3.467-2.196.211-1.284.622-1.642 1.998-1.747 1.588-.133 2.409-.675 2.713-1.787.278-1.02-.304-2.157-1.297-2.554-.264-.106-.873-.238-1.35-.291-1.495-.16-1.879-.424-2.038-1.39-.225-1.337-.317-1.562-.794-2.09a2.174 2.174 0 0 0-1.613-.73zm-4.785 4.36a2.145 2.145 0 0 0-.497.048c-1.469.318-2.17 2.051-1.35 3.295 1.178 1.774 3.944.953 3.97-1.177.012-1.193-.98-2.143-2.123-2.166zM2.089 14.19a2.22 2.22 0 0 0-.427.052c-2.158.476-2.237 3.626-.106 4.182.53.145.582.145 1.111.013 1.191-.318 1.866-1.456 1.549-2.607-.278-1.02-1.144-1.664-2.127-1.64zm19.824.008c-.233.002-.477.058-.784.162-1.39.477-1.866 2.092-.98 3.336.557.794 1.96 1.058 2.82.516 1.416-.874 1.363-3.057-.093-3.746-.38-.186-.663-.271-.963-.268z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">React Router</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/installation/astro\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Astro</title>\n      <path\n        d=\"M16.074 16.86C15.354 17.476 13.917 17.895 12.262 17.895C10.23 17.895 8.527 17.263 8.075 16.412C7.914 16.9 7.877 17.458 7.877 17.814C7.877 17.814 7.771 19.564 8.988 20.782C8.988 20.15 9.501 19.637 10.133 19.637C11.216 19.637 11.215 20.582 11.214 21.349V21.418C11.214 22.582 11.925 23.579 12.937 24C12.7812 23.6794 12.7005 23.3275 12.701 22.971C12.701 21.861 13.353 21.448 14.111 20.968C14.713 20.585 15.383 20.161 15.844 19.308C16.0926 18.8493 16.2225 18.3357 16.222 17.814C16.2221 17.4903 16.1722 17.1685 16.074 16.86ZM15.551 0.6C15.747 0.844 15.847 1.172 16.047 1.829L20.415 16.176C18.7743 15.3246 17.0134 14.7284 15.193 14.408L12.35 4.8C12.3273 4.72337 12.2803 4.65616 12.2162 4.60844C12.152 4.56072 12.0742 4.53505 11.9943 4.53528C11.9143 4.5355 11.8366 4.56161 11.7727 4.60969C11.7089 4.65777 11.6623 4.72524 11.64 4.802L8.83 14.405C7.00149 14.724 5.23264 15.3213 3.585 16.176L7.974 1.827C8.174 1.171 8.274 0.843 8.471 0.6C8.64406 0.385433 8.86922 0.218799 9.125 0.116C9.415 0 9.757 0 10.443 0H13.578C14.264 0 14.608 0 14.898 0.117C15.1529 0.219851 15.3783 0.386105 15.551 0.6Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n    <p className=\"mt-2 font-medium\">Astro</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/installation/tanstack\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <path d=\"M6.93 13.688a.343.343 0 0 1 .468.132l.063.106c.48.851.98 1.66 1.5 2.426a35.65 35.65 0 0 0 2.074 2.742.345.345 0 0 1-.039.484l-.074.066c-2.543 2.223-4.191 2.665-4.953 1.333-.746-1.305-.477-3.672.808-7.11a.344.344 0 0 1 .153-.18ZM17.75 16.3a.34.34 0 0 1 .395.27l.02.1c.628 3.286.187 4.93-1.325 4.93-1.48 0-3.36-1.402-5.649-4.203a.327.327 0 0 1-.074-.222c0-.188.156-.34.344-.34h.121a32.984 32.984 0 0 0 2.809-.098c1.07-.086 2.191-.23 3.359-.437zm.871-6.977a.353.353 0 0 1 .445-.21l.102.034c3.262 1.11 4.504 2.332 3.719 3.664-.766 1.305-2.993 2.254-6.684 2.848a.362.362 0 0 1-.238-.047.343.343 0 0 1-.125-.476l.062-.106a34.07 34.07 0 0 0 1.367-2.523c.477-.989.93-2.051 1.352-3.184zM7.797 8.34a.362.362 0 0 1 .238.047.343.343 0 0 1 .125.476l-.062.106a34.088 34.088 0 0 0-1.367 2.523c-.477.988-.93 2.051-1.352 3.184a.353.353 0 0 1-.445.21l-.102-.034C1.57 13.742.328 12.52 1.113 11.188 1.88 9.883 4.106 8.934 7.797 8.34Zm5.281-3.984c2.543-2.223 4.192-2.664 4.953-1.332.746 1.304.477 3.671-.808 7.109a.344.344 0 0 1-.153.18.343.343 0 0 1-.468-.133l-.063-.106a34.64 34.64 0 0 0-1.5-2.426 35.65 35.65 0 0 0-2.074-2.742.345.345 0 0 1 .039-.484ZM7.285 2.274c1.48 0 3.364 1.402 5.649 4.203a.349.349 0 0 1 .078.218.348.348 0 0 1-.348.344l-.117-.004a34.584 34.584 0 0 0-2.809.102 35.54 35.54 0 0 0-3.363.437.343.343 0 0 1-.394-.273l-.02-.098c-.629-3.285-.188-4.93 1.324-4.93Zm2.871 5.812h3.688a.638.638 0 0 1 .55.316l1.848 3.22a.644.644 0 0 1 0 .628l-1.847 3.223a.638.638 0 0 1-.551.316h-3.688a.627.627 0 0 1-.547-.316L7.758 12.25a.644.644 0 0 1 0-.629L9.61 8.402a.627.627 0 0 1 .546-.316Zm3.23.793a.638.638 0 0 1 .552.316l1.39 2.426a.644.644 0 0 1 0 .629l-1.39 2.43a.638.638 0 0 1-.551.316h-2.774a.627.627 0 0 1-.546-.316l-1.395-2.43a.644.644 0 0 1 0-.629l1.395-2.426a.627.627 0 0 1 .546-.316Zm-.491.867h-1.79a.624.624 0 0 0-.546.316l-.899 1.56a.644.644 0 0 0 0 .628l.899 1.563a.632.632 0 0 0 .547.316h1.789a.632.632 0 0 0 .547-.316l.898-1.563a.644.644 0 0 0 0-.629l-.898-1.558a.624.624 0 0 0-.547-.317Zm-.477.828c.227 0 .438.121.547.317l.422.73a.625.625 0 0 1 0 .629l-.422.734a.627.627 0 0 1-.547.317h-.836a.632.632 0 0 1-.547-.317l-.422-.734a.625.625 0 0 1 0-.629l.422-.73a.632.632 0 0 1 .547-.317zm-.418.817a.548.548 0 0 0-.473.273.547.547 0 0 0 0 .547.544.544 0 0 0 .473.27.544.544 0 0 0 .473-.27.547.547 0 0 0 0-.547.548.548 0 0 0-.473-.273Zm-4.422.546h.98M18.98 7.75c.391-1.895.477-3.344.223-4.398-.148-.63-.422-1.137-.84-1.508-.441-.39-1-.582-1.625-.582-1.035 0-2.12.472-3.281 1.367a14.9 14.9 0 0 0-1.473 1.316 1.206 1.206 0 0 0-.136-.144c-1.446-1.285-2.66-2.082-3.7-2.39-.617-.184-1.195-.2-1.722-.024-.559.187-1.004.574-1.317 1.117-.515.894-.652 2.074-.46 3.527.078.59.214 1.235.402 1.934a1.119 1.119 0 0 0-.215.047C3.008 8.62 1.71 9.269.926 10.015c-.465.442-.77.938-.883 1.481-.113.578 0 1.156.312 1.7.516.894 1.465 1.597 2.817 2.155.543.223 1.156.426 1.844.61a1.023 1.023 0 0 0-.07.226c-.391 1.891-.477 3.344-.223 4.395.148.629.425 1.14.84 1.508.44.39 1 .582 1.625.582 1.035 0 2.12-.473 3.28-1.364.477-.37.973-.816 1.489-1.336a1.2 1.2 0 0 0 .195.227c1.446 1.285 2.66 2.082 3.7 2.39.617.184 1.195.2 1.722.024.559-.187 1.004-.574 1.317-1.117.515-.894.652-2.074.46-3.527a14.941 14.941 0 0 0-.425-2.012 1.225 1.225 0 0 0 .238-.047c1.828-.61 3.125-1.258 3.91-2.004.465-.441.77-.937.883-1.48.113-.578 0-1.157-.313-1.7-.515-.894-1.464-1.597-2.816-2.156a14.576 14.576 0 0 0-1.906-.625.865.865 0 0 0 .059-.195z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">TanStack Start</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/installation/gatsby\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Gatsby</title>\n      <path d=\"M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.6 0 12 0zm0 2.571c3.171 0 5.915 1.543 7.629 3.858l-1.286 1.115C16.886 5.572 14.571 4.286 12 4.286c-3.343 0-6.171 2.143-7.286 5.143l9.857 9.857c2.486-.857 4.373-3 4.973-5.572h-4.115V12h6c0 4.457-3.172 8.228-7.372 9.17L2.83 9.944C3.772 5.743 7.543 2.57 12 2.57zm-9.429 9.6l9.344 9.258c-2.4-.086-4.801-.943-6.601-2.743-1.8-1.8-2.743-4.201-2.743-6.515z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Gatsby</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/installation/manual\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>React</title>\n      <path d=\"M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Manual</p>\n  </LinkedCard>\n</div>\n\n## Upgrade Your Project\n\n<Callout className=\"mt-6 mb-6 border-blue-600 bg-blue-50 dark:border-blue-900 dark:bg-blue-950 [&_code]:bg-blue-100 dark:[&_code]:bg-blue-900\">\n  **Important:** Before upgrading, please read the [Tailwind v4 Compatibility\n  Docs](https://tailwindcss.com/docs/compatibility) and make sure your project\n  is ready for the upgrade. Tailwind v4 uses bleeding-edge browser features and\n  is designed for modern browsers.\n</Callout>\n\nOne of the major advantages of using `shadcn/ui` is that the code you end up with is exactly what you'd write yourself. There are no hidden abstractions.\n\nThis means when a dependency has a new release, you can just follow the official upgrade paths.\n\nHere's how to upgrade your existing projects (full docs are on the way):\n\n### 1. Follow the Tailwind v4 Upgrade Guide\n\n- Upgrade to Tailwind v4 by following the official upgrade guide: https://tailwindcss.com/docs/upgrade-guide\n- Use the `@tailwindcss/upgrade@next` codemod to remove deprecated utility classes and update tailwind config.\n\n### 2. Update your CSS variables\n\nThe codemod will migrate your CSS variables as references under the `@theme` directive.\n\n```css showLineNumbers\n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 0 0% 3.9%;\n  }\n}\n\n@theme {\n  --color-background: hsl(var(--background));\n  --color-foreground: hsl(var(--foreground));\n}\n```\n\nThis works. But to make it easier to work with colors and other variables, we'll need to move the `hsl` wrappers and use `@theme inline`.\n\nHere's how you do it:\n\n1. Move `:root` and `.dark` out of the `@layer` base.\n2. Wrap the color values in `hsl()`\n3. Add the `inline` option to `@theme` i.e `@theme inline`\n4. Remove the `hsl()` wrappers from `@theme`\n\n```css showLineNumbers\n:root {\n  --background: hsl(0 0% 100%); // <-- Wrap in hsl\n  --foreground: hsl(0 0% 3.9%);\n}\n\n.dark {\n  --background: hsl(0 0% 3.9%); // <-- Wrap in hsl\n  --foreground: hsl(0 0% 98%);\n}\n\n@theme inline {\n  --color-background: var(--background); // <-- Remove hsl\n  --color-foreground: var(--foreground);\n}\n```\n\nThis change makes it much simpler to access your theme variables in both utility classes and outside of CSS, e.g. using color values in JavaScript.\n\n### 3. Update colors for charts\n\nNow that the theme colors come with `hsl()`, you can remove the wrapper in your `chartConfig`:\n\n```diff\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n-    color: \"hsl(var(--chart-1))\",\n+    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n-   color: \"hsl(var(--chart-2))\",\n+   color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n### 4. Use new `size-*` utility\n\nThe new `size-*` utility (added in Tailwind v3.4), is now fully supported by `tailwind-merge`. You can replace `w-* h-*` with the new `size-*` utility:\n\n```diff\n- w-4 h-4\n+ size-4\n```\n\n### 5. Update your dependencies\n\n```bash\npnpm up \"@radix-ui/*\" cmdk lucide-react recharts tailwind-merge clsx --latest\n```\n\n### 6. Remove forwardRef\n\nYou can use the `remove-forward-ref` codemod to migrate your `forwardRef` to props or manually update the primitives.\n\nFor the codemod, see https://github.com/reactjs/react-codemod#remove-forward-ref.\n\nIf you want to do it manually, here's how to do it step by step:\n\n1. Replace `React.forwardRef<...>` with `React.ComponentProps<...>`\n2. Remove `ref={ref}` from the component.\n3. Add a `data-slot` attribute. This will come in handy for styling with Tailwind.\n4. You can optionally convert to a named function and remove the `displayName`.\n\n#### Before\n\n```tsx showLineNumbers\nconst AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n  <AccordionPrimitive.Item\n    ref={ref}\n    className={cn(\"border-b last:border-b-0\", className)}\n    {...props}\n  />\n))\nAccordionItem.displayName = \"AccordionItem\"\n```\n\n#### After\n\n```tsx showLineNumbers\nfunction AccordionItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n  return (\n    <AccordionPrimitive.Item\n      data-slot=\"accordion-item\"\n      className={cn(\"border-b last:border-b-0\", className)}\n      {...props}\n    />\n  )\n}\n```\n\n## Changelog\n\n### March 19, 2025 - Deprecate `tailwindcss-animate`\n\nWe've deprecated `tailwindcss-animate` in favor of `tw-animate-css`.\n\nNew projects will have `tw-animate-css` installed by default.\n\nFor existing projects, follow the steps below to migrate.\n\n1. Remove `tailwindcss-animate` from your dependencies.\n2. Remove the `@plugin 'tailwindcss-animate'` from your globals.css file.\n3. Install `tw-animate-css` as a dev dependency.\n4. Add the `@import \"tw-animate-css\"` to your globals.css file.\n\n```diff showLineNumbers\n- @plugin 'tailwindcss-animate';\n+ @import \"tw-animate-css\";\n```\n\n### March 12, 2025 - New Dark Mode Colors\n\nWe've revisited the dark mode colors and updated them to be more accessible.\n\nIf you're running an existing Tailwind v4 project (**not an upgraded one**[^1]), you can update your components to use the new dark mode colors by re-adding your components using the CLI[^2].\n\n<Steps>\n\n<Step>Commit any changes</Step>\n\n**The CLI will overwrite your existing components.** We recommend committing any changes you've made to your components before running the CLI.\n\n```bash\ngit add .\ngit commit -m \"...\"\n```\n\n<Step>Update components</Step>\n\n```bash\nnpx shadcn@latest add --all --overwrite\n```\n\n<Step>Update colors</Step>\n\nUpdate the dark mode colors in your `globals.css` file to new OKLCH colors. See the [Base Colors](/docs/theming#base-colors) reference for a list of colors.\n\n<Step>Review changes</Step>\n\nReview and re-apply any changes you made to your components.\n\n</Steps>\n\n[^1]: Upgraded projects are not affected by this change. You can continue using the old dark mode colors.\n\n[^2]: Updating your components will overwrite your existing components.\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/theming.mdx",
    "content": "---\ntitle: Theming\ndescription: Using CSS Variables and color utilities for theming.\n---\n\nYou can choose between using CSS variables (recommended) or utility classes for theming.\n\n## CSS Variables\n\n```tsx /bg-background/ /text-foreground/\n<div className=\"bg-background text-foreground\" />\n```\n\nTo use CSS variables for theming set `tailwind.cssVariables` to `true` in your `components.json` file.\n\n```json {8} title=\"components.json\" showLineNumbers\n{\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}\n```\n\n## Convention\n\nWe use a simple `background` and `foreground` convention for colors. The `background` variable is used for the background color of the component and the `foreground` variable is used for the text color.\n\n<Callout className=\"mt-4\">\n\nThe `background` suffix is omitted when the variable is used for the background color of the component.\n\n</Callout>\n\nGiven the following CSS variables:\n\n```css\n--primary: oklch(0.205 0 0);\n--primary-foreground: oklch(0.985 0 0);\n```\n\nThe `background` color of the following component will be `var(--primary)` and the `foreground` color will be `var(--primary-foreground)`.\n\n```tsx\n<div className=\"bg-primary text-primary-foreground\">Hello</div>\n```\n\n## List of variables\n\nHere's the list of variables available for customization:\n\n```css title=\"app/globals.css\" showLineNumbers\n:root {\n  --radius: 0.625rem;\n  --background: oklch(1 0 0);\n  --foreground: oklch(0.145 0 0);\n  --card: oklch(1 0 0);\n  --card-foreground: oklch(0.145 0 0);\n  --popover: oklch(1 0 0);\n  --popover-foreground: oklch(0.145 0 0);\n  --primary: oklch(0.205 0 0);\n  --primary-foreground: oklch(0.985 0 0);\n  --secondary: oklch(0.97 0 0);\n  --secondary-foreground: oklch(0.205 0 0);\n  --muted: oklch(0.97 0 0);\n  --muted-foreground: oklch(0.556 0 0);\n  --accent: oklch(0.97 0 0);\n  --accent-foreground: oklch(0.205 0 0);\n  --destructive: oklch(0.577 0.245 27.325);\n  --destructive-foreground: oklch(0.985 0 0);\n  --border: oklch(0.922 0 0);\n  --input: oklch(0.922 0 0);\n  --ring: oklch(0.708 0 0);\n  --chart-1: oklch(0.646 0.222 41.116);\n  --chart-2: oklch(0.6 0.118 184.704);\n  --chart-3: oklch(0.398 0.07 227.392);\n  --chart-4: oklch(0.828 0.189 84.429);\n  --chart-5: oklch(0.769 0.188 70.08);\n  --sidebar: oklch(0.985 0 0);\n  --sidebar-foreground: oklch(0.145 0 0);\n  --sidebar-primary: oklch(0.205 0 0);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.97 0 0);\n  --sidebar-accent-foreground: oklch(0.205 0 0);\n  --sidebar-border: oklch(0.922 0 0);\n  --sidebar-ring: oklch(0.708 0 0);\n}\n\n.dark {\n  --background: oklch(0.145 0 0);\n  --foreground: oklch(0.985 0 0);\n  --card: oklch(0.205 0 0);\n  --card-foreground: oklch(0.985 0 0);\n  --popover: oklch(0.269 0 0);\n  --popover-foreground: oklch(0.985 0 0);\n  --primary: oklch(0.922 0 0);\n  --primary-foreground: oklch(0.205 0 0);\n  --secondary: oklch(0.269 0 0);\n  --secondary-foreground: oklch(0.985 0 0);\n  --muted: oklch(0.269 0 0);\n  --muted-foreground: oklch(0.708 0 0);\n  --accent: oklch(0.371 0 0);\n  --accent-foreground: oklch(0.985 0 0);\n  --destructive: oklch(0.704 0.191 22.216);\n  --destructive-foreground: oklch(0.985 0 0);\n  --border: oklch(1 0 0 / 10%);\n  --input: oklch(1 0 0 / 15%);\n  --ring: oklch(0.556 0 0);\n  --chart-1: oklch(0.488 0.243 264.376);\n  --chart-2: oklch(0.696 0.17 162.48);\n  --chart-3: oklch(0.769 0.188 70.08);\n  --chart-4: oklch(0.627 0.265 303.9);\n  --chart-5: oklch(0.645 0.246 16.439);\n  --sidebar: oklch(0.205 0 0);\n  --sidebar-foreground: oklch(0.985 0 0);\n  --sidebar-primary: oklch(0.488 0.243 264.376);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.269 0 0);\n  --sidebar-accent-foreground: oklch(0.985 0 0);\n  --sidebar-border: oklch(1 0 0 / 10%);\n  --sidebar-ring: oklch(0.439 0 0);\n}\n```\n\n## Adding new colors\n\nTo add new colors, you need to add them to your CSS file under the `:root` and `dark` pseudo-classes. Then, use the `@theme inline` directive to make the colors available as CSS variables.\n\n```css title=\"app/globals.css\" showLineNumbers\n:root {\n  --warning: oklch(0.84 0.16 84);\n  --warning-foreground: oklch(0.28 0.07 46);\n}\n\n.dark {\n  --warning: oklch(0.41 0.11 46);\n  --warning-foreground: oklch(0.99 0.02 95);\n}\n\n@theme inline {\n  --color-warning: var(--warning);\n  --color-warning-foreground: var(--warning-foreground);\n}\n```\n\nYou can now use the `warning` utility class in your components.\n\n```tsx /bg-warning/ /text-warning-foreground/\n<div className=\"bg-warning text-warning-foreground\" />\n```\n\n## Other color formats\n\nSee the [Tailwind CSS documentation](https://tailwindcss.com/docs/colors) for more information on using colors in Tailwind CSS.\n\n## Base Colors\n\nThe available base colors are: **Neutral**, **Stone**, **Zinc**, **Mauve**, **Olive**, **Mist**, and **Taupe**.\n\nYou can set the base color when initializing your project using a preset or by updating the `baseColor` field in your `components.json` file.\n"
  },
  {
    "path": "apps/v4/content/docs/(root)/v0.mdx",
    "content": "---\ntitle: Open in v0\ndescription: Open components in v0 for customization.\n---\n\nEvery component on ui.shadcn.com is editable on [v0 by Vercel](https://v0.dev). This allows you to easily customize the components in natural language and paste into your app.\n\n<a href=\"https://vercel.com/signup?utm_source=shad&utm_medium=web&utm_campaign=docs_cta_signup\">\n  <Image\n    src=\"/images/open-in-v0.png\"\n    width=\"716\"\n    height=\"420\"\n    alt=\"Open in v0\"\n    className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n  />\n  <Image\n    src=\"/images/open-in-v0-dark.png\"\n    width=\"716\"\n    height=\"420\"\n    alt=\"Open in v0\"\n    className=\"mt-6 hidden w-full overflow-hidden rounded-lg border shadow-sm dark:block\"\n  />\n  <span className=\"sr-only\">Open in v0</span>\n</a>\n\nTo use v0, sign-up for a free [Vercel account here](https://vercel.com/signup?utm_source=shad&utm_medium=web&utm_campaign=docs_cta_signup). In addition to v0, this gives you free access to Vercel's frontend cloud platform by the creators of Next.js, where you can deploy and host your project for free.\n\nLearn more about getting started with [Vercel here](https://vercel.com/docs/getting-started-with-vercel?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_about_vercel).\n\nLearn more about getting started with [v0 here](https://v0.dev/faq).\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2023-06-new-cli.mdx",
    "content": "---\ntitle: June 2023 - New CLI, Styles and more\ndescription: Complete CLI rewrite with new styles, theming options, and more.\ndate: 2023-06-22\n---\n\nI have a lot of updates to share with you today:\n\n- [**New CLI**](#new-cli) - Rewrote the CLI from scratch. You can now add components, dependencies and configure import paths.\n- [**Theming**](#theming-with-css-variables-or-tailwind-colors) - Choose between using CSS variables or Tailwind CSS utility classes for theming.\n- [**Base color**](#base-color) - Configure the base color for your project. This will be used to generate the default color palette for your components.\n- [**React Server Components**](#react-server-components) - Opt out of using React Server Components. The CLI will automatically append or remove the `use client` directive.\n- [**Styles**](#styles) - Introducing a new concept called _Style_. A style comes with its own set of components, animations, icons and more.\n- [**Exit animations**](#exit-animations) - Added exit animations to all components.\n- [**Other updates**](#other-updates) - New `icon` button size, updated `sheet` component and more.\n- [**Updating your project**](#updating-your-project) - How to update your project to get the latest changes.\n\n---\n\n### New CLI\n\nI've been working on a new CLI for the past few weeks. It's a complete rewrite. It comes with a lot of new features and improvements.\n\n### `init`\n\n```bash\nnpx shadcn@latest init\n```\n\nWhen you run the `init` command, you will be asked a few questions to configure `components.json`:\n\n```txt showLineNumbers\nWhich style would you like to use? › Default\nWhich color would you like to use as base color? › Slate\nWhere is your global CSS file? › › app/globals.css\nDo you want to use CSS variables for colors? › no / yes\nWhere is your tailwind.config.js located? › tailwind.config.js\nConfigure the import alias for components: › @/components\nConfigure the import alias for utils: › @/lib/utils\nAre you using React Server Components? › no / yes\n```\n\nThis file contains all the information about your components: where to install them, the import paths, how they are styled...etc.\n\nYou can use this file to change the import path of a component, set a baseColor or change the styling method.\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"style\": \"default\",\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"src/app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true\n  },\n  \"rsc\": false,\n  \"aliases\": {\n    \"utils\": \"~/lib/utils\",\n    \"components\": \"~/components\"\n  }\n}\n```\n\nThis means you can now use the CLI with any directory structure including `src` and `app` directories.\n\n### `add`\n\n```bash\nnpx shadcn@latest add\n```\n\nThe `add` command is now much more capable. You can now add UI components but also import more complex components (coming soon).\n\nThe CLI will automatically resolve all components and dependencies, format them based on your custom config and add them to your project.\n\n### `diff` (experimental)\n\n```bash\nnpx shadcn diff\n```\n\nWe're also introducing a new `diff` command to help you keep track of upstream updates.\n\nYou can use this command to see what has changed in the upstream repository and update your project accordingly.\n\nRun the `diff` command to get a list of components that have updates available:\n\n```bash\nnpx shadcn diff\n```\n\n```txt\nThe following components have updates available:\n- button\n  - /path/to/my-app/components/ui/button.tsx\n- toast\n  - /path/to/my-app/components/ui/use-toast.ts\n  - /path/to/my-app/components/ui/toaster.tsx\n```\n\nThen run `diff [component]` to see the changes:\n\n```bash\nnpx shadcn diff alert\n```\n\n```diff /pl-12/\nconst alertVariants = cva(\n- \"relative w-full rounded-lg border\",\n+ \"relative w-full pl-12 rounded-lg border\"\n)\n```\n\n---\n\n### Theming with CSS Variables or Tailwind Colors\n\nYou can choose between using CSS variables or Tailwind CSS utility classes for theming.\n\nWhen you add new components, the CLI will automatically use the correct theming methods based on your `components.json` configuration.\n\n#### Utility classes\n\n```tsx /bg-zinc-950/ /text-zinc-50/ /dark:bg-white/ /dark:text-zinc-950/\n<div className=\"bg-zinc-950 dark:bg-white\" />\n```\n\nTo use utility classes for theming set `tailwind.cssVariables` to `false` in your `components.json` file.\n\n```json {6} title=\"components.json\" showLineNumbers\n{\n  \"tailwind\": {\n    \"config\": \"tailwind.config.js\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"slate\",\n    \"cssVariables\": false\n  }\n}\n```\n\n#### CSS Variables\n\n```tsx /bg-background/ /text-foreground/\n<div className=\"bg-background text-foreground\" />\n```\n\nTo use CSS variables classes for theming set `tailwind.cssVariables` to `true` in your `components.json` file.\n\n```json {6} title=\"components.json\" showLineNumbers\n{\n  \"tailwind\": {\n    \"config\": \"tailwind.config.js\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"slate\",\n    \"cssVariables\": true\n  }\n}\n```\n\n---\n\n### Base color\n\nYou can now configure the base color for your project. This will be used to generate the default color palette for your components.\n\n```json {5} title=\"components.json\" showLineNumbers\n{\n  \"tailwind\": {\n    \"config\": \"tailwind.config.js\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": false\n  }\n}\n```\n\nChoose between `gray`, `neutral`, `slate`, `stone` or `zinc`.\n\nIf you have `cssVariables` set to `true`, we will set the base colors as CSS variables in your `globals.css` file. If you have `cssVariables` set to `false`, we will inline the Tailwind CSS utility classes in your components.\n\n---\n\n### React Server Components\n\nIf you're using a framework that does not support React Server Components, you can now opt out by setting `rsc` to `false`. We will automatically append or remove the `use client` directive when adding components.\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"rsc\": false\n}\n```\n\n---\n\n### Styles\n\nWe are introducing a new concept called _Style_.\n\n_You can think of style as the visual foundation: shapes, icons, animations & typography._ A style comes with its own set of components, animations, icons and more.\n\nWe are shipping two styles: `default` and `new-york` (with more coming soon).\n\n<Image\n  src=\"/images/style.jpg\"\n  width=\"716\"\n  height=\"402\"\n  alt=\"Default vs New York style\"\n  className=\"mt-6 overflow-hidden rounded-lg border\"\n/>\n\nThe `default` style is the one you are used to. It's the one we've been using since the beginning of this project. It uses `lucide-react` for icons and `tailwindcss-animate` for animations.\n\nThe `new-york` style is a new style. It ships with smaller buttons, cards with shadows and a new set of icons from [Radix Icons](https://icons.radix-ui.com).\n\nWhen you run the `init` command, you will be asked which style you would like to use. This is saved in your `components.json` file.\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"style\": \"new-york\"\n}\n```\n\n### Theming\n\nStart with a style as the base then theme using CSS variables or Tailwind CSS utility classes to completely change the look of your components.\n\n<Image\n  src=\"/images/style-with-theming.jpg\"\n  width=\"716\"\n  height=\"402\"\n  alt=\"Style with theming\"\n  className=\"mt-6 overflow-hidden rounded-lg border\"\n/>\n\n---\n\n### Exit animations\n\nI added exit animations to all components. Click on the combobox below to see the subtle exit animation.\n\n<ComponentPreview name=\"combobox-demo\" className=\"[&_.preview]:items-start\" />\n\nThe animations can be customized using utility classes.\n\n---\n\n### Other updates\n\n### Button\n\n- Added a new button size `icon`:\n\n<ComponentPreview name=\"button-icon\" />\n\n### Sheet\n\n- Renamed `position` to `side` to match the other elements.\n\n<ComponentPreview name=\"sheet-side\" />\n\n- Removed the `size` props. Use `className=\"w-[200px] md:w-[450px]\"` for responsive sizing.\n\n---\n\n### Updating your project\n\nSince we follow a copy and paste approach, you will need to manually update your project to get the latest changes.\n\n<Callout className=\"mt-4\">\n  Note: we are working on a [`diff`](#diff-experimental) command to help you\n  keep track of upstream updates.\n</Callout>\n\n<Steps>\n\n### Add `components.json`\n\nCreating a `components.json` file at the root:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"style\": \"default\",\n  \"rsc\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.js\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"slate\",\n    \"cssVariables\": true\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\"\n  }\n}\n```\n\nUpdate the values for `tailwind.css` and `aliases` to match your project structure.\n\n### Button\n\nAdd the `icon` size to the `buttonVariants`:\n\n```tsx {7} title=\"components/ui/button.tsx\" showLineNumbers\nconst buttonVariants = cva({\n  variants: {\n    size: {\n      default: \"h-10 px-4 py-2\",\n      sm: \"h-9 rounded-md px-3\",\n      lg: \"h-11 rounded-md px-8\",\n      icon: \"h-10 w-10\",\n    },\n  },\n})\n```\n\n### Sheet\n\n1. Replace the content of `sheet.tsx` with the following:\n\n```tsx title=\"components/ui/sheet.tsx\" showLineNumbers\n\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = ({\n  className,\n  ...props\n}: SheetPrimitive.DialogPortalProps) => (\n  <SheetPrimitive.Portal className={cn(className)} {...props} />\n)\nSheetPortal.displayName = SheetPrimitive.Portal.displayName\n\nconst SheetOverlay = React.forwardRef<\n  React.ElementRef<typeof SheetPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <SheetPrimitive.Overlay\n    className={cn(\n      \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n    ref={ref}\n  />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n  \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:animate-in data-[state=open]:duration-500\",\n  {\n    variants: {\n      side: {\n        top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n        bottom:\n          \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n        left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n        right:\n          \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n      },\n    },\n    defaultVariants: {\n      side: \"right\",\n    },\n  }\n)\n\ninterface SheetContentProps\n  extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n    VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n  React.ElementRef<typeof SheetPrimitive.Content>,\n  SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n  <SheetPortal>\n    <SheetOverlay />\n    <SheetPrimitive.Content\n      ref={ref}\n      className={cn(sheetVariants({ side }), className)}\n      {...props}\n    >\n      {children}\n      <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-secondary\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </SheetPrimitive.Close>\n    </SheetPrimitive.Content>\n  </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-2 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n  React.ElementRef<typeof SheetPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <SheetPrimitive.Title\n    ref={ref}\n    className={cn(\"text-lg font-semibold text-foreground\", className)}\n    {...props}\n  />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n  React.ElementRef<typeof SheetPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <SheetPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n```\n\n2. Rename `position` to `side`\n\n```diff /position/ /side/\n- <Sheet position=\"right\" />\n+ <Sheet side=\"right\" />\n```\n\n</Steps>\n\n### Thank you\n\nI'd like to thank everyone who has been using this project, providing feedback and contributing to it. I really appreciate it. Thank you.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2023-07-javascript.mdx",
    "content": "---\ntitle: July 2023 - JavaScript\ndescription: JavaScript version of components available via the CLI.\ndate: 2023-07-04\n---\n\nThis project and the components are written in TypeScript. **We recommend using TypeScript for your project as well**.\n\nHowever we provide a JavaScript version of the components, available via the [cli](/docs/cli).\n\n```txt\nWould you like to use TypeScript (recommended)? no\n```\n\nTo opt-out of TypeScript, you can use the `tsx` flag in your `components.json` file.\n\n```json {10} title=\"components.json\" showLineNumbers\n{\n  \"style\": \"default\",\n  \"tailwind\": {\n    \"config\": \"tailwind.config.js\",\n    \"css\": \"src/app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true\n  },\n  \"rsc\": false,\n  \"tsx\": false,\n  \"aliases\": {\n    \"utils\": \"~/lib/utils\",\n    \"components\": \"~/components\"\n  }\n}\n```\n\nTo configure import aliases, you can use the following `jsconfig.json`:\n\n```json {4} title=\"jsconfig.json\" showLineNumbers\n{\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  }\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2023-12-new-components.mdx",
    "content": "---\ntitle: December 2023 - New Components\ndescription: Carousel, Drawer, Pagination, Resizable, Sonner, and CLI updates.\ndate: 2023-12-22\n---\n\nWe've added new components to shadcn/ui and made a lot of improvements to the CLI.\n\nHere's a quick overview of what's new:\n\n- [**Carousel**](#carousel) - A carousel component with motion, swipe gestures and keyboard support.\n- [**Drawer**](#drawer) - A drawer component that looks amazing on mobile.\n- [**Pagination**](#pagination) - A pagination component with page navigation, previous and next buttons.\n- [**Resizable**](#resizable) - A resizable component for building resizable panel groups and layouts.\n- [**Sonner**](#sonner) - The last toast component you'll ever need.\n- [**CLI updates**](#cli-updates) - Support for custom **Tailwind prefix** and `tailwind.config.ts`.\n\n### Carousel\n\nWe've added a fully featured carousel component with motion, swipe gestures and keyboard support. Built on top of [Embla Carousel](https://www.embla-carousel.com).\n\nIt has support for infinite looping, autoplay, vertical orientation, and more.\n\n<ComponentPreview name=\"carousel-demo\" />\n\n### Drawer\n\nOh the drawer component. Built on top of [Vaul](https://github.com/emilkowalski/vaul) by [emilkowalski](https://twitter.com/emilkowalski).\n\nTry opening the following drawer on mobile. It looks amazing!\n\n<ComponentPreview name=\"drawer-demo\" />\n\n### Pagination\n\nWe've added a pagination component with page navigation, previous and next buttons. Simple, flexible and works with your framework's `<Link />` component.\n\n<ComponentPreview name=\"pagination-demo\" />\n\n### Resizable\n\nBuild resizable panel groups and layouts with this `<Resizable />` component.\n\n<ComponentPreview name=\"resizable-demo-with-handle\" />\n\n`<Resizable />` is built using [react-resizable-panels](https://github.com/bvaughn/react-resizable-panels) by [bvaughn](https://github.com/bvaughn). It has support for mouse, touch and keyboard.\n\n### Sonner\n\nAnother one by [emilkowalski](https://twitter.com/emilkowalski). The last toast component you'll ever need. Sonner is now available in shadcn/ui.\n\n<ComponentPreview name=\"sonner-demo\" />\n\n### CLI updates\n\nThis has been one of the most requested features. You can now configure a custom Tailwind prefix and the cli will automatically prefix your utility classes when adding components.\n\nThis means you can now easily add shadcn/ui components to existing projects like Docusaurus, Nextra...etc. A drop-in for your existing design system with no conflict.\n\n```tsx /tw-/\n<AlertDialog className=\"tw-grid tw-gap-4 tw-border tw-bg-background tw-shadow-lg\" />\n```\n\nIt works with `cn`, `cva` and CSS variables.\n\nThe cli can now also detect `tailwind.config.ts` and add the TypeScript version of the config for you.\n\nThat's it. Happy Holidays.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2024-03-blocks.mdx",
    "content": "---\ntitle: March 2024 - Introducing Blocks\ndescription: Ready-made components for dashboards and authentication pages.\ndate: 2024-03-22\n---\n\nOne of the most requested features since launch has been layouts: admin dashboards with sidebar, marketing page sections, cards and more.\n\n**Today, we're launching [Blocks](/blocks).**\n\n<a href=\"/blocks\">\n  <Image\n    src=\"/images/dashboard-1.jpg\"\n    width=\"716\"\n    height=\"430\"\n    alt=\"Admin dashboard\"\n    className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n  />\n  <Image\n    src=\"/images/dashboard-1-dark.jpg\"\n    width=\"716\"\n    height=\"430\"\n    alt=\"Admin dashboard\"\n    className=\"mt-6 hidden w-full overflow-hidden rounded-lg border shadow-sm dark:block\"\n  />\n  <span className=\"sr-only\">View the blocks library</span>\n</a>\n\nBlocks are ready-made components that you can use to build your apps. They are fully responsive, accessible, and composable, meaning they are built using the same principles as the rest of the components in shadcn/ui.\n\nWe're starting with dashboard layouts and authentication pages, with plans to add more blocks in the coming weeks.\n\n### Open Source\n\nBlocks are open source. You can find the source on GitHub. Use them in your projects, customize them and contribute back.\n\n<a href=\"/blocks\">\n  <Image\n    src=\"/images/dashboard-2.jpg\"\n    width=\"716\"\n    height=\"420\"\n    alt=\"AI Playground\"\n    className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n  />\n  <Image\n    src=\"/images/dashboard-2-dark.jpg\"\n    width=\"716\"\n    height=\"420\"\n    alt=\"AI Playground\"\n    className=\"mt-6 hidden w-full overflow-hidden rounded-lg border shadow-sm dark:block\"\n  />\n  <span className=\"sr-only\">View the blocks library</span>\n</a>\n\n### Request a Block\n\nWe're also introducing a \"Request a Block\" feature. If there's a specific block you'd like to see, simply create a request on GitHub and the community can upvote and build it.\n\n<a href=\"/blocks\">\n  <Image\n    src=\"/images/dashboard-3.jpg\"\n    width=\"716\"\n    height=\"420\"\n    alt=\"Settings Page\"\n    className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n  />\n  <Image\n    src=\"/images/dashboard-3-dark.jpg\"\n    width=\"716\"\n    height=\"420\"\n    alt=\"Settings Page\"\n    className=\"mt-6 hidden w-full overflow-hidden rounded-lg border shadow-sm dark:block\"\n  />\n  <span className=\"sr-only\">View the blocks library</span>\n</a>\n\n### v0\n\nIf you have a [v0](https://v0.dev) account, you can use the **Edit in v0** feature to open the code on v0 for prompting and further generation.\n\n<div className=\"mt-6 flex aspect-video w-full items-center justify-center overflow-hidden rounded-lg border bg-background shadow-sm\">\n  <svg\n    viewBox=\"0 0 40 20\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className=\"h-40 w-40 text-foreground\"\n  >\n    <path\n      d=\"M23.3919 0H32.9188C36.7819 0 39.9136 3.13165 39.9136 6.99475V16.0805H36.0006V6.99475C36.0006 6.90167 35.9969 6.80925 35.9898 6.71766L26.4628 16.079C26.4949 16.08 26.5272 16.0805 26.5595 16.0805H36.0006V19.7762H26.5595C22.6964 19.7762 19.4788 16.6139 19.4788 12.7508V3.68923H23.3919V12.7508C23.3919 12.9253 23.4054 13.0977 23.4316 13.2668L33.1682 3.6995C33.0861 3.6927 33.003 3.68923 32.9188 3.68923H23.3919V0Z\"\n      fill=\"currentColor\"\n    ></path>\n    <path\n      d=\"M13.7688 19.0956L0 3.68759H5.53933L13.6231 12.7337V3.68759H17.7535V17.5746C17.7535 19.6705 15.1654 20.6584 13.7688 19.0956Z\"\n      fill=\"currentColor\"\n    ></path>\n  </svg>\n</div>\n\nThat's it. _Looking forward to seeing what you build with Blocks_.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2024-03-breadcrumb-otp.mdx",
    "content": "---\ntitle: March 2024 - Breadcrumb and Input OTP\ndescription: New Breadcrumb and Input OTP components.\ndate: 2024-03-08\n---\n\nWe've added a new Breadcrumb component and an Input OTP component.\n\n### Breadcrumb\n\nAn accessible and flexible breadcrumb component. It has support for collapsed items, custom separators, bring-your-own routing `<Link />` and composable with other shadcn/ui components.\n\n<ComponentPreview name=\"breadcrumb-demo\" />\n\n[See more examples](/docs/components/breadcrumb)\n\n### Input OTP\n\nA fully featured input OTP component. It has support for numeric and alphanumeric codes, custom length, copy-paste and accessible. Input OTP is built on top of [input-otp](https://github.com/guilhermerodz/input-otp) by [@guilherme_rodz](https://twitter.com/guilherme_rodz).\n\n<ComponentPreview name=\"input-otp-demo\" />\n\n[Read the docs](/docs/components/input-otp)\n\nIf you have a [v0](https://v0.dev) account, the new components are available for generation.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2024-04-lift-mode.mdx",
    "content": "---\ntitle: April 2024 - Lift Mode\ndescription: A new mode for Blocks to lift smaller components for copy and paste.\ndate: 2024-04-05\n---\n\nWe're introducing a new mode for [Blocks](/blocks) called **Lift Mode**.\n\nEnable Lift Mode to automatically \"lift\" smaller components from a block template for copy and paste.\n\n<a href=\"/blocks\">\n  <Image\n    src=\"/images/lift-mode-light.png\"\n    width=\"1432\"\n    height=\"1050\"\n    alt=\"Lift Mode\"\n    className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n  />\n  <Image\n    src=\"/images/lift-mode-dark.png\"\n    width=\"1432\"\n    height=\"1069\"\n    alt=\"Lift Mode\"\n    className=\"mt-6 hidden w-full overflow-hidden rounded-lg border shadow-sm dark:block\"\n  />\n  <span className=\"sr-only\">View the blocks library</span>\n</a>\n\nWith Lift Mode, you'll be able to copy the smaller components that make up a block template, like cards, buttons, and forms, and paste them directly into your project.\n\nVisit the [Blocks](/blocks) page to try it out.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2024-08-npx-shadcn-init.mdx",
    "content": "---\ntitle: August 2024 - npx shadcn init\ndescription: Complete CLI rewrite with support for all major React frameworks.\ndate: 2024-08-31\n---\n\nThe new CLI is now available. It's a complete rewrite with a lot of new features and improvements. You can now install components, themes, hooks, utils and more using `npx shadcn add`.\n\nThis is a major step towards distributing code that you and your LLMs can access and use.\n\n1. First up, the CLI now has support for all major React frameworks out of the box. Next.js, Remix, Vite and Laravel. And when you init into a new app, we update your existing Tailwind files instead of overriding.\n2. A component now ships its own dependencies. Take the accordion for example, it can define its Tailwind keyframes. When you add it to your project, we'll update your tailwind.config.ts file accordingly.\n3. You can also install remote components using url. `npx shadcn add https://acme.com/registry/navbar.json`.\n4. We have also improved the init command. It does framework detection and can even init a brand new Next.js app in one command. `npx shadcn init`.\n5. We have created a new schema that you can use to ship your own component registry. And since it has support for urls, you can even use it to distribute private components.\n6. And a few more updates like better error handling and monorepo support.\n\nYou can try the new cli today.\n\n```bash\nnpx shadcn init sidebar-01 login-01\n```\n\n### Update Your Project\n\nTo update an existing project to use the new CLI, update your `components.json` file to include import aliases for your **components**, **utils**, **ui**, **lib** and **hooks**.\n\n```json showLineNumbers {7-13} title=\"components.json\"\n{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"tailwind\": {\n    // ...\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  }\n}\n```\n\nIf you're using a different import alias prefix, e.g. `~`, replace `@` with your prefix.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2024-10-react-19.mdx",
    "content": "---\ntitle: October 2024 - React 19\ndescription: shadcn/ui is now compatible with React 19 and Next.js 15.\ndate: 2024-10-29\n---\n\nshadcn/ui is now compatible with React 19 and Next.js 15.\n\nWe published a guide to help you upgrade your project to React 19.\n\nRead more [here](/docs/react-19).\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2024-10-sidebar.mdx",
    "content": "---\ntitle: October 2024 - Sidebar\ndescription: 25 components to help you build all kinds of sidebars.\ndate: 2024-10-18\n---\n\nIntroducing sidebar.tsx: 25 components to help you build all kinds of sidebars.\n\nI don't like building sidebars. So I built 30+ of them. All types. Then simplified the core into sidebar.tsx: a strong foundation to build on top of.\n\nIt works with Next.js, Remix, Vite & Laravel.\n\nSee the announcement [here](https://x.com/shadcn/status/1847359896557408461).\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2024-11-icons.mdx",
    "content": "---\ntitle: November 2024 - Icons\ndescription: The new-york style now uses Lucide as the default icon set.\ndate: 2024-11-06\n---\n\nAn update on icons. The new-york style now uses Lucide as the default icon set.\n\n- New projects will use Lucide by default\n- No breaking changes for existing projects\n- Use the CLI to (optionally) migrate primitives to Lucide\n\nFor more info on why we're doing this, see the [thread](https://x.com/shadcn/status/1853902179041702169).\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2024-12-monorepo.mdx",
    "content": "---\ntitle: December 2024 - Monorepo Support\ndescription: New monorepo support in the CLI.\ndate: 2024-12-20\n---\n\nUntil now, using shadcn/ui in a monorepo was a bit of a pain. You could add\ncomponents using the CLI, but you had to manage where the components\nwere installed and manually fix import paths.\n\nWith the new monorepo support in the CLI, we've made it a lot easier to use\nshadcn/ui in a monorepo.\n\nThe CLI now understands the monorepo structure and will install the components,\ndependencies and registry dependencies to the correct paths and handle imports\nfor you.\n\nRead more in the [docs](/docs/monorepo).\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-01-blocks.mdx",
    "content": "---\ntitle: January 2025 - Blocks Community\ndescription: Inviting the community to contribute to the blocks library.\ndate: 2025-01-14\n---\n\nWe are inviting the community to contribute to the blocks library. Share your components and blocks with other developers and help build a library of high-quality, reusable components.\n\nWe'd love to see all types of blocks: applications, marketing, products, and more.\n\nSee the [docs](/docs/blocks) page to get started.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-02-registry-schema.mdx",
    "content": "---\ntitle: February 2025 - Updated Registry Schema\ndescription: Updated registry schema to support more features.\ndate: 2025-02-06\n---\n\nWe're updating the registry schema to support more features.\n\nDefine code as a flat JSON file and distribute it via the CLI.\n\n- Custom styles: bring your own design system, components & tokens\n- Extend, override, mix & match components from third-party registries and LLMs\n- Install themes, CSS vars, hooks, animations, and Tailwind layers & utilities\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-02-tailwind-v4.mdx",
    "content": "---\ntitle: February 2025 - Tailwind v4\ndescription: First preview of Tailwind v4 and React 19 support.\ndate: 2025-02-19\n---\n\nWe shipped the first preview of Tailwind v4 and React 19. Ready for you to try out. You can start using it today.\n\nWhat's New:\n\n- The CLI can now initialize projects with Tailwind v4.\n- Full support for the new @theme directive and @theme inline option.\n- All components are updated for Tailwind v4 and React 19.\n- We've removed the forwardRefs and adjusted the types.\n- Every primitive now has a data-slot attribute for styling.\n- We've fixed and cleaned up the style of the components.\n- We're deprecating the toast component in favor of sonner.\n- Buttons now use the default cursor.\n- We're deprecating the default style. New projects will use new-york.\n- HSL colors are now converted to OKLCH.\n\nRead more in the [docs](/docs/tailwind-v4).\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-04-cross-framework.mdx",
    "content": "---\ntitle: April 2025 - Cross-framework Route Support\ndescription: The shadcn CLI can now auto-detect your framework and adapt routes for you.\ndate: 2025-04-09\n---\n\nThe shadcn CLI can now auto-detect your framework and adapt routes for you.\n\nWorks with all frameworks including Laravel, Vite and React Router.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-04-mcp.mdx",
    "content": "---\ntitle: April 2025 - MCP\ndescription: Zero-config MCP support for shadcn/ui registry.\ndate: 2025-04-30\n---\n\nWe're working on zero-config MCP support for shadcn/ui registry. One command `npx shadcn registry:mcp` to make any registry mcp-compatible.\n\n<Image\n  src=\"/images/mcp.jpeg\"\n  width=\"1432\"\n  height=\"1050\"\n  alt=\"MCP Server\"\n  className=\"mt-6 w-full overflow-hidden rounded-lg border\"\n/>\n\nLearn more in the [thread here](https://x.com/shadcn/status/1917597228513853603).\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-04-shadcn-2-5.mdx",
    "content": "---\ntitle: April 2025 - shadcn 2.5.0\ndescription: Resolve anywhere - registries can now place files anywhere in an app.\ndate: 2025-04-26\n---\n\nWe tagged shadcn 2.5.0 earlier this week. It comes with a pretty cool feature: **resolve anywhere**.\n\nRegistries can now place files anywhere in an app and we'll properly resolve imports. No need to stick to a fixed file structure. It can even add files outside the registry itself.\n\nOn install, we track all files and perform a multi-pass resolution to correctly handle imports and aliases. It's fast.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-05-new-site.mdx",
    "content": "---\ntitle: May 2025 - New Site\ndescription: Upgraded ui.shadcn.com to Next.js 15.3 and Tailwind v4.\ndate: 2025-05-30\n---\n\nWe've upgraded [ui.shadcn.com](https://ui.shadcn.com) to Next.js 15.3 and Tailwind v4. The site now uses the upgraded `new-york` components.\n\nWe've also made some minor design updates to make the site faster and easier to navigate.\n\nThis upgrade unlocks a lot of new features that we're working on. More to come.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-06-calendar.mdx",
    "content": "---\ntitle: June 2025 - Calendar Component\ndescription: Upgraded Calendar component with React DayPicker and 30+ calendar blocks.\ndate: 2025-06-06\n---\n\nWe've upgraded the `Calendar` component to the latest version of [React DayPicker](https://daypicker.dev).\n\nThis is a major upgrade and includes a lot of new features and improvements.\n\n<Image src=\"/images/calendar-2.png\" alt=\"Calendar\" width={676} height={895} />\n\nTo upgrade your project to the latest version of the `Calendar` component, see the [upgrade guide](/docs/components/calendar#upgrade-guide).\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-06-radix-ui.mdx",
    "content": "---\ntitle: June 2025 - radix-ui Migration\ndescription: A new command to migrate to the new radix-ui package.\ndate: 2025-06-11\n---\n\nWe've added a new command to migrate to the new `radix-ui` package. This command will replace all `@radix-ui/react-*` imports with `radix-ui`.\n\n```bash\nnpx shadcn@latest migrate radix\n```\n\nIt will automatically update all imports in your `ui` components and install `radix-ui` as a dependency.\n\n```diff showLineNumbers title=\"components/ui/alert-dialog.tsx\"\n- import * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n+ import { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n```\n\nMake sure to test your components and project after running the command.\n\n**Note:** To update imports for newly added components, run the migration command again.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-07-local-file-support.mdx",
    "content": "---\ntitle: July 2025 - Local File Support\ndescription: Initialize projects and add components from local JSON files.\ndate: 2025-07-07\n---\n\nThe shadcn CLI now supports local files. Initialize projects and add components, themes, hooks, utils and more from local JSON files.\n\n```bash\n# Initialize a project from a local file\nnpx shadcn init ./template.json\n\n# Add a component from a local file\nnpx shadcn add ./block.json\n```\n\nThis feature enables powerful new workflows:\n\n- **Zero setup** - No remote registries required\n- **Faster development** - Test registry items locally before publishing\n- **Enhanced workflow for agents and MCP** - Generate and run registry items locally\n- **Private components** - Keep proprietary components local and private.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-07-universal-registry.mdx",
    "content": "---\ntitle: July 2025 - Universal Registry Items\ndescription: Create registry items that can be distributed to any project.\ndate: 2025-07-11\n---\n\nWe've added support for universal registry items. This allows you to create registry items that can be distributed to any project i.e. no framework, no components.json, no tailwind, no react required.\n\nThis new registry item type unlocks a lot of new workflows. You can now distribute code, config, rules, docs, anything to any code project.\n\nSee the [docs](/docs/registry/examples) for more details and examples.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-08-cli-3-mcp.mdx",
    "content": "---\ntitle: August 2025 - shadcn CLI 3.0 and MCP Server\ndescription: Namespaced registries, advanced authentication, new commands and a completely rewritten registry engine.\ndate: 2025-08-27\n---\n\nWe just shipped shadcn CLI 3.0 with support for namespaced registries, advanced authentication, new commands and a completely rewritten registry engine.\n\n### What's New\n\n- [Namespaced Registries](#namespaced-registries) - Install components using `@registry/name` format.\n- [Private Registries](#private-registries) - Secure your registry with advanced authentication.\n- [Search & Discovery](#search--discovery) - New commands to find and view code before installing.\n- [MCP Server](#mcp-server) - MCP server for all registries.\n- [Faster Everything](#faster-everything) - Completely rewritten registry resolution.\n- [Improved Error Handling](#improved-error-handling) - Better error messages for users and LLMs.\n- [Upgrade Guide](#upgrade-guide) - Migration notes for existing users.\n\n### Namespaced Registries\n\nThe biggest change in 3.0 is namespaced registries. You can now install components from registries: a community registry, your company's private registry or internal registry, using the `@registry/name` format.\n\nThis makes it easier to distribute code across teams and projects.\n\nConfigure registries in your `components.json`:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@acme\": \"https://acme.com/r/{name}.json\",\n    \"@internal\": {\n      \"url\": \"https://registry.company.com/{name}\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REGISTRY_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\nThen use the `@registry/name` format to install components:\n\n```bash\nnpx shadcn add @acme/button @internal/auth-system\n```\n\nIt's completely decentralized. There's no central registrar. Create any namespace you want and organize components however makes sense for your team.\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"registries\": {\n    \"@design\": \"https://registry.company.com/create/{name}.json\",\n    \"@engineering\": \"https://registry.company.com/eng/{name}.json\",\n    \"@marketing\": \"https://registry.company.com/marketing/{name}.json\"\n  }\n}\n```\n\nComponents can even depend on resources from different registries. Everything gets resolved and installed automatically from the right sources.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"name\": \"dashboard\",\n  \"type\": \"registry:block\",\n  \"registryDependencies\": [\n    \"@shadcn/card\", // From default registry\n    \"@v0/chart\", // From v0 registry\n    \"@acme/data-table\", // From acme registry\n    \"@lib/data-fetcher\", // Utility library\n    \"@ai/analytics-prompt\" // AI prompt resource\n  ]\n}\n```\n\n### Private Registries\n\nNeed to keep your components private? We've got you covered. Configure authentication with tokens, API keys, or custom headers:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@private\": {\n      \"url\": \"https://registry.company.com/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REGISTRY_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\nYour private components stay private. Perfect for enterprise teams with proprietary UI libraries.\n\nWe support all major authentication methods: basic auth, bearer token, API key query params and custom headers.\n\nSee the [authentication docs](/docs/registry/authentication) for more details.\n\n### Search & Discovery\n\nThree new commands make it easy to find exactly what you need:\n\n1. View items from the registry before installing\n\n```bash\nnpx shadcn view @acme/auth-system\n```\n\n2. Search items from registries\n\n```bash\nnpx shadcn search @tweakcn -q \"dark\"\n```\n\n3. List all items from a registry\n\n```bash\nnpx shadcn list @acme\n```\n\nPreview components before installing them. Search across multiple registries. See the code and all dependencies upfront.\n\n### MCP Server\n\n<Image\n  src=\"/images/mcp.jpeg\"\n  width=\"1432\"\n  height=\"1050\"\n  alt=\"MCP Server\"\n  className=\"mt-6 w-full overflow-hidden rounded-lg border\"\n/>\n\nBack in April, we [introduced](https://x.com/shadcn/status/1917597228513853603) the first version of the MCP server. Since then, we've taken everything we learned and built a better MCP server.\n\nHere's what's new:\n\n- Works with all registries. Zero config\n- One command to add to your favorite MCP clients\n- We improved the underlying tools\n- Better integration with the CLI and registries\n- Support for multiple registries in the same project\n\nAdd the MCP server to your project:\n\n```bash\nnpx shadcn@latest mcp init\n```\n\nSee the [docs](/docs/mcp) for more details.\n\n### Faster Everything\n\nWe completely rewrote the registry resolution engine from scratch. It's faster, smarter, and handles even the trickiest dependency trees.\n\n- Up to 3x faster dependency resolution\n- Smarter file deduplication and merging\n- Better monorepo support out of the box\n- Updated `build` command for registry authors\n\n### Improved Error Handling\n\nRegistry developers can now provide custom error messages to help guide users (and LLMs) when things go wrong. The CLI displays helpful, actionable errors for common issues:\n\n```txt\nUnknown registry \"@acme\". Make sure it is defined in components.json as follows:\n{\n  \"registries\": {\n    \"@acme\": \"[URL_TO_REGISTRY]\"\n  }\n}\n```\n\nMissing environment variables? The CLI tells you exactly what's needed:\n\n```txt\nRegistry \"@private\" requires the following environment variables:\n  • REGISTRY_TOKEN\n\nSet the required environment variables in your .env or .env.local file.\n```\n\nRegistry authors can provide custom error messages in their responses to help users and AI agents understand and fix issues quickly.\n\n```txt\nError:\nYou are not authorized to access the item at http://example.com/r/component.\n\nMessage:\n[Unauthorized] Your API key has expired. Renew it at https://example.com/api/renew-key.\n```\n\n### Upgrade Guide\n\nHere's the best part: there are no breaking changes for users. Your existing `components.json` works exactly the same. All your installed components work exactly the same.\n\nFor developers, if you're using the programmatic APIs directly, we've deprecated a few functions in favor of better ones:\n\n- `fetchRegistry` → `getRegistry`\n- `resolveRegistryTree` → `resolveRegistryItems`\n- Schema moved from `shadcn/registry` to `shadcn/schema` package\n\n```diff\n- import { registryItemSchema } from \"shadcn/registry\"\n+ import { registryItemSchema } from \"shadcn/schema\"\n```\n\nThat's it. Seriously. Everything else just works.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-09-registry-index.mdx",
    "content": "---\ntitle: September 2025 - Registry Index\ndescription: An index of open source registries that you can install items from.\ndate: 2025-09-02\n---\n\nWe've created an index of open source registries that you can install items from.\n\nYou can search, view and add items from the registry index without configuring the `components.json` file.\n\nThey'll be automatically added to your `components.json` file for you.\n\n```bash\nnpx shadcn add @ai-elements/prompt-input\n```\n\nThe full list of registries is available at [https://ui.shadcn.com/r/registries.json](https://ui.shadcn.com/r/registries.json).\n\nTo add a registry to the index, submit a PR to the `shadcn/ui` repository. See the [registry index documentation](/docs/registry/registry-index) for more details.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-10-new-components.mdx",
    "content": "---\ntitle: October 2025 - New Components\ndescription: Spinner, Kbd, Button Group, Input Group, Field, Item, and Empty components.\ndate: 2025-10-03\n---\n\nFor this round of components, I looked at what we build every day, the boring stuff we rebuild over and over, and made reusable abstractions you can actually use.\n\n**These components work with every component library, Radix, Base UI, React Aria, you name it. Copy and paste to your projects.**\n\n- [Spinner](#spinner): An indicator to show a loading state.\n- [Kbd](#kbd): Display a keyboard key or group of keys.\n- [Button Group](#button-group): A group of buttons for actions and split buttons.\n- [Input Group](#input-group): Input with icons, buttons, labels and more.\n- [Field](#field): One component. All your forms.\n- [Item](#item): Display lists of items, cards, and more.\n- [Empty](#empty): Use this one for empty states.\n\n### Spinner\n\nOkay let's start with the easiest ones: **Spinner** and **Kbd**. Pretty basic. We all know what they do.\n\nHere's how you render a spinner:\n\n```tsx\nimport { Spinner } from \"@/components/ui/spinner\"\n```\n\n```tsx\n<Spinner />\n```\n\nHere's what it looks like:\n\n<ComponentPreview\n  name=\"spinner-basic\"\n\n/>\n\nHere's what it looks like in a button:\n\n<ComponentPreview\n  name=\"spinner-button\"\n\n/>\n\nYou can edit the code and replace it with your own spinner.\n\n<ComponentPreview\n  name=\"spinner-custom\"\n\n/>\n\n### Kbd\n\nKbd is a component that renders a keyboard key.\n\n```tsx\nimport { Kbd, KbdGroup } from \"@/components/ui/kbd\"\n```\n\n```tsx\n<Kbd>Ctrl</Kbd>\n```\n\nUse `KbdGroup` to group keyboard keys together.\n\n```tsx showLineNumbers\n<KbdGroup>\n  <Kbd>Ctrl</Kbd>\n  <Kbd>B</Kbd>\n</KbdGroup>\n```\n\n<ComponentPreview\n  name=\"kbd-demo\"\n\n/>\n\nYou can add it to buttons, tooltips, input groups, and more.\n\n### Button Group\n\nI got a lot of requests for this one: Button Group. It's a container that groups related buttons together with consistent styling. Great for action groups, split buttons, and more.\n\n<ComponentPreview\n  name=\"button-group-demo\"\n\n/>\n\nHere's the code:\n\n```tsx\nimport { ButtonGroup } from \"@/components/ui/button-group\"\n```\n\n```tsx showLineNumbers\n<ButtonGroup>\n  <Button>Button 1</Button>\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\nYou can nest button groups to create more complex layouts with spacing.\n\n```tsx showLineNumbers\n<ButtonGroup>\n  <ButtonGroup>\n    <Button>Button 1</Button>\n    <Button>Button 2</Button>\n  </ButtonGroup>\n  <ButtonGroup>\n    <Button>Button 3</Button>\n    <Button>Button 4</Button>\n  </ButtonGroup>\n</ButtonGroup>\n```\n\nUse `ButtonGroupSeparator` to create split buttons. Classic dropdown pattern.\n\n<ComponentPreview\n  name=\"button-group-dropdown\"\n\n/>\n\nYou can also use it to add prefix or suffix buttons and text to inputs.\n\n<ComponentPreview\n  name=\"button-group-select\"\n\n/>\n\n```tsx showLineNumbers\n<ButtonGroup>\n  <ButtonGroupText>Prefix</ButtonGroupText>\n  <Input placeholder=\"Type something here...\" />\n  <Button>Button</Button>\n</ButtonGroup>\n```\n\n### Input Group\n\nInput Group lets you add icons, buttons, and more to your inputs. You know, all those little bits you always need around your inputs.\n\n```tsx\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/components/ui/input-group\"\n```\n\n```tsx showLineNumbers\n<InputGroup>\n  <InputGroupInput placeholder=\"Search...\" />\n  <InputGroupAddon>\n    <SearchIcon />\n  </InputGroupAddon>\n</InputGroup>\n```\n\nHere's a preview with icons:\n\n<ComponentPreview\n  name=\"input-group-icon\"\n  className=\"[&_.preview]:h-[300px] [&_pre]:h-[300px]!\"\n/>\n\nYou can also add buttons to the input group.\n\n<ComponentPreview\n  name=\"input-group-button\"\n  className=\"[&_.preview]:h-[300px] [&_pre]:h-[300px]!\"\n/>\n\nOr text, labels, tooltips, ...\n\n<ComponentPreview\n  name=\"input-group-text\"\n  className=\"[&_.preview]:h-[350px] [&_pre]:h-[350px]!\"\n/>\n\nIt also works with textareas so you can build really complex components with lots of knobs and dials or yet another prompt form.\n\n<ComponentPreview\n  name=\"input-group-textarea\"\n  className=\"[&_.preview]:h-[450px] [&_pre]:h-[450px]!\"\n/>\n\nOh here are some cool ones with spinners:\n\n<ComponentPreview\n  name=\"input-group-spinner\"\n  className=\"[&_.preview]:h-[350px] [&_pre]:h-[350px]!\"\n/>\n\n### Field\n\nIntroducing **Field**, a component for building really complex forms. The abstraction here is beautiful.\n\nIt took me a long time to get it right but I made it work with all your form libraries: Server Actions, React Hook Form, TanStack Form, Bring Your Own Form.\n\n```tsx\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldLabel,\n} from \"@/components/ui/field\"\n```\n\nHere's a basic field with an input:\n\n```tsx showLineNumbers\n<Field>\n  <FieldLabel htmlFor=\"username\">Username</FieldLabel>\n  <Input id=\"username\" placeholder=\"Max Leiter\" />\n  <FieldDescription>\n    Choose a unique username for your account.\n  </FieldDescription>\n</Field>\n```\n\n<ComponentPreview\n  name=\"field-input\"\n  className=\"[&_.preview]:h-[350px] [&_pre]:h-[350px]!\"\n/>\n\nIt works with all form controls. Inputs, textareas, selects, checkboxes, radios, switches, sliders, you name it. Here's a full example:\n\n<ComponentPreview\n  name=\"field-demo\"\n  className=\"[&_.preview]:h-[850px] [&_pre]:h-[850px]!\"\n/>\n\nHere are some checkbox fields:\n\n<ComponentPreview\n  name=\"field-checkbox\"\n  className=\"[&_.preview]:h-[500px] [&_pre]:h-[500px]!\"\n/>\n\nYou can group fields together using `FieldGroup` and `FieldSet`. Perfect for\nmulti-section forms.\n\n```tsx showLineNumbers\n<FieldSet>\n  <FieldLegend />\n  <FieldGroup>\n    <Field />\n    <Field />\n  </FieldGroup>\n</FieldSet>\n```\n\n<ComponentPreview\n  name=\"field-fieldset\"\n  className=\"[&_.preview]:h-[500px] [&_pre]:h-[500px]!\"\n/>\n\nMaking it responsive is easy. Use `orientation=\"responsive\"` and it switches\nbetween vertical and horizontal layouts based on container width. Done.\n\n<ComponentPreview\n  name=\"field-responsive\"\n  className=\"[&_.preview]:h-[600px] [&_pre]:h-[600px]!\"\n/>\n\nWait, here's more. Wrap your fields in `FieldLabel` to create a selectable field group. Really easy. And it looks great.\n\n<ComponentPreview\n  name=\"field-choice-card\"\n  className=\"[&_.preview]:h-[600px] [&_pre]:h-[600px]!\"\n/>\n\n### Item\n\nThis one is a straightforward flex container that can house nearly any type of content.\n\nI've built this so many times that I decided to create a component for it. Now I use it all the time. I use it to display lists of items, cards, and more.\n\n```tsx\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/components/ui/item\"\n```\n\nHere's a basic item:\n\n```tsx showLineNumbers\n<Item>\n  <ItemMedia variant=\"icon\">\n    <HomeIcon />\n  </ItemMedia>\n  <ItemContent>\n    <ItemTitle>Dashboard</ItemTitle>\n    <ItemDescription>Overview of your account and activity.</ItemDescription>\n  </ItemContent>\n</Item>\n```\n\n<ComponentPreview\n  name=\"item-demo\"\n  className=\"[&_.preview]:h-[300px] [&_.preview]:p-4 [&_pre]:h-[300px]!\"\n/>\n\nYou can add icons, avatars, or images to the item.\n\n<ComponentPreview\n  name=\"item-icon\"\n  className=\"[&_.preview]:h-[300px] [&_.preview]:p-4 [&_pre]:h-[300px]!\"\n/>\n\n<ComponentPreview\n  name=\"item-avatar\"\n  className=\"[&_.preview]:h-[300px] [&_.preview]:p-4 [&_pre]:h-[300px]!\"\n/>\n\nAnd here's what a list of items looks like with `ItemGroup`:\n\n<ComponentPreview\n  name=\"item-group\"\n  className=\"[&_.preview]:h-[500px] [&_.preview]:p-4 [&_pre]:h-[500px]!\"\n/>\n\nNeed it as a link? Use the `asChild` prop:\n\n```tsx showLineNumbers\n<Item asChild>\n  <a href=\"/dashboard\">\n    <ItemMedia variant=\"icon\">\n      <HomeIcon />\n    </ItemMedia>\n    <ItemContent>\n      <ItemTitle>Dashboard</ItemTitle>\n      <ItemDescription>Overview of your account and activity.</ItemDescription>\n    </ItemContent>\n  </a>\n</Item>\n```\n\n<ComponentPreview\n  name=\"item-link\"\n  className=\"[&_.preview]:h-[400px] [&_.preview]:p-4 [&_pre]:h-[400px]!\"\n/>\n\n### Empty\n\nOkay last one: **Empty**. Use this to display empty states in your app.\n\n```tsx\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/components/ui/empty\"\n```\n\nHere's how you use it:\n\n```tsx showLineNumbers\n<Empty>\n  <EmptyMedia variant=\"icon\">\n    <InboxIcon />\n  </EmptyMedia>\n  <EmptyTitle>No messages</EmptyTitle>\n  <EmptyDescription>You don't have any messages yet.</EmptyDescription>\n  <EmptyContent>\n    <Button>Send a message</Button>\n  </EmptyContent>\n</Empty>\n```\n\n<ComponentPreview\n  name=\"empty-demo\"\n  className=\"[&_.preview]:h-[400px] [&_.preview]:p-4 [&_pre]:h-[400px]!\"\n/>\n\nYou can use it with avatars:\n\n<ComponentPreview\n  name=\"empty-avatar\"\n  className=\"[&_.preview]:h-[400px] [&_pre]:h-[400px]!\"\n/>\n\nOr with input groups for things like search results or email subscriptions:\n\n<ComponentPreview\n  name=\"empty-input-group\"\n  className=\"[&_.preview]:h-[450px] [&_pre]:h-[450px]!\"\n/>\n\nThat's it. Seven new components. Works with all your libraries. Ready for your projects.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-10-registry-directory.mdx",
    "content": "---\ntitle: October 2025 - Registry Directory\ndescription: A list of code registries you can browse and pull code and components from.\ndate: 2025-10-28\n---\n\nWe just published the Registry Directory: a list of code registries you can browse and pull code and components from.\n\nhttps://ui.shadcn.com/docs/directory\n\nBuilt into the CLI. No config required.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2025-12-shadcn-create.mdx",
    "content": "---\ntitle: December 2025 - npx shadcn create\ndescription: Customize everything. Pick your component library, icons, base color, theme, fonts and create your own version of shadcn/ui.\ndate: 2025-12-12\n---\n\nFrom the very first commit, the goal of shadcn/ui was to make it customizable.\n\nThe idea is to give you solid defaults, spacing, color tokens, animations, accessibility, and then let you take it from there. Tweak the code. Add new components. Change the colors. Build your own version.\n\nBut somewhere along the way, all apps started looking the same. I guess the defaults were a little _too_ good. My bad.\n\nToday, we're changing that: **npx shadcn create**.\n\nCustomize Everything. Pick your component library, icons, base color, theme, fonts and create your own version of shadcn/ui.\n\nWe're starting with **5 new visual styles**, designed to help your UI actually feel like _your_ UI.\n\n- **Vega** – The classic shadcn/ui look.\n- **Nova** – Reduced padding and margins for compact layouts.\n- **Maia** – Soft and rounded, with generous spacing.\n- **Lyra** – Boxy and sharp. Pairs well with mono fonts.\n- **Mira** – Compact. Made for dense interfaces.\n\n**This goes beyond theming**.\n\nYour config doesn't just change colors, it rewrites the component code to match your setup. Fonts, spacing, structure, even the libraries you use, everything adapts to your preferences.\n\nThe new CLI takes care of it all.\n\nStart with a component library. Choose between Radix or Base UI.\n\nWe rebuilt every component for Base UI, keeping the same abstraction.\nThey are fully compatible with your existing components, even those pulled from remote registries.\n\nWhen you pull down components, we auto-detect your library and apply the right transformations.\n\n**It's time to build something that doesn't look like everything else.**\n\nNow available for Next.js, Vite, TanStack Start and v0.\n\n<Button asChild>\n  <Link href=\"/create\" className=\"mt-6 no-underline!\">\n    Get Started\n  </Link>\n</Button>\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2026-01-base-ui.mdx",
    "content": "---\ntitle: January 2026 - Base UI Documentation\ndescription: Full documentation for Base UI components.\ndate: 2026-01-20\n---\n\nWe've shipped full documentation for Base UI components.\n\n<div className=\"mt-6 flex w-full items-center justify-center rounded-lg border bg-muted/50 py-32\">\n  <svg width=\"17\" height=\"24\" viewBox=\"0 0 17 24\" className=\"size-12\">\n    <path\n      fill=\"currentColor\"\n      d=\"M9.5001 7.01537C9.2245 6.99837 9 7.22385 9 7.49999V23C13.4183 23 17 19.4183 17 15C17 10.7497 13.6854 7.27351 9.5001 7.01537Z\"\n    />\n    <path\n      fill=\"currentColor\"\n      d=\"M8 9.8V12V23C3.58172 23 0 19.0601 0 14.2V12V1C4.41828 1 8 4.93989 8 9.8Z\"\n    />\n  </svg>\n</div>\n\nWhen we launched `npx shadcn create` in December, we introduced the ability to choose between Radix and Base UI as your component library. Today, we're following up with complete documentation for all Base UI components.\n\n### What's New\n\n- **Full Base UI docs** - Every component now has dedicated documentation for Base UI, covering usage, props, and examples.\n- **Rebuilt examples** - All component examples have been rebuilt for both Radix and Base UI. Switch between them to see the implementation differences.\n- **Side-by-side comparison** - The docs make it easy to compare how components work across both libraries.\n\n### Same Abstraction, Different Primitives\n\nThe goal remains the same: give you a consistent API regardless of which primitive library you choose. The components look and behave the same way. Only the underlying implementation changes.\n\n```tsx\n// Works the same whether you're using Radix or Base UI.\nimport { Dialog, DialogContent, DialogTrigger } from \"@/components/ui/dialog\"\n```\n\nIf you're starting a new project, run `npx shadcn create` and pick your preferred library. The CLI handles the rest.\n\n<Button asChild size=\"sm\">\n  <Link href=\"/create\" className=\"mt-6 no-underline!\">\n    Try shadcn/create\n  </Link>\n</Button>\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2026-01-inline-side-styles.mdx",
    "content": "---\ntitle: January 2026 - Inline Start and End Styles\ndescription: We've updated the styles for Base UI components to support inline-start and inline-end side values.\ndate: 2026-01-23\n---\n\nWe've updated the styles for Base UI components to support `inline-start` and `inline-end` side values. The following components now support these values:\n\n- Tooltip\n- Popover\n- Combobox\n- Context Menu\n- Dropdown Menu\n- Hover Card\n- Menubar\n- Select\n\n### What Changed\n\nWe added new Tailwind classes to handle the logical side values:\n\n```diff\n<PopoverPrimitive.Popup\n  className={cn(\n    \"... data-[side=bottom]:slide-in-from-top-2\n    data-[side=left]:slide-in-from-right-2\n    data-[side=right]:slide-in-from-left-2\n    data-[side=top]:slide-in-from-bottom-2\n+   data-[side=inline-start]:slide-in-from-right-2\n+   data-[side=inline-end]:slide-in-from-left-2 ...\",\n    className\n  )}\n/>\n```\n\n### Usage\n\n```tsx\n<Popover>\n  <PopoverTrigger>Open</PopoverTrigger>\n  <PopoverContent side=\"inline-start\">\n    {/* Opens on the left in LTR, right in RTL */}\n  </PopoverContent>\n</Popover>\n```\n\n### LLM Prompt\n\nAsk your LLM to update your components by running the following prompt:\n\n```txt showLineNumbers\nAdd inline-start and inline-end support to my shadcn/ui components. Add the following Tailwind classes to each component:\n\n| File | Component | Add Classes |\n|------|-----------|-------------|\n| tooltip.tsx | TooltipContent | `data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2` |\n| tooltip.tsx | TooltipArrow | `data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2\ndata-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2` |\n| popover.tsx | PopoverContent | `data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2` |\n| hover-card.tsx | HoverCardContent | `data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2` |\n| select.tsx | SelectContent | `data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2\ndata-[align-trigger=true]:animate-none` and add `data-align-trigger={alignItemWithTrigger}` attribute |\n| combobox.tsx | ComboboxContent | `data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2` |\n| dropdown-menu.tsx | DropdownMenuContent | `data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2` |\n| context-menu.tsx | ContextMenuContent | `data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2` |\n| menubar.tsx | MenubarContent | `data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2` |\n\nAdd these classes next to the existing `data-[side=top]`, `data-[side=bottom]`, `data-[side=left]`, `data-[side=right]` classes.\n```\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2026-01-rtl.mdx",
    "content": "---\ntitle: January 2026 - RTL Support\ndescription: The shadcn CLI now supports RTL (right-to-left) layouts by automatically converting physical CSS classes to logical equivalents.\ndate: 2026-01-28\n---\n\nshadcn/ui now has first-class support for right-to-left (RTL) layouts. Your components automatically adapt for languages like Arabic, Hebrew, and Persian.\n\n**This works with the [shadcn/ui components](/docs/components) as well as any component distributed on the shadcn registry.**\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n### Our approach to RTL\n\nTraditionally, component libraries that support RTL ship with logical classes baked in. This means everyone has to work with classes like `ms-4` and `start-2`, even if they're only building for LTR layouts.\n\nWe took a different approach. The shadcn CLI transforms classes at install time, so you only see logical classes when you actually need them. If you're not building for RTL, you work with familiar classes like `ml-4` and `left-2`. When you enable RTL, the CLI handles the conversion for you.\n\n**You don't have to learn RTL until you need it.**\n\n### How it works\n\nWhen you add components with `rtl: true` set in your `components.json`, the CLI automatically converts physical CSS classes like `ml-4` and `text-left` to their logical equivalents like `ms-4` and `text-start`.\n\n- Physical positioning classes like `left-*` and `right-*` become `start-*` and `end-*`.\n- Margin and padding classes like `ml-*` and `pr-*` become `ms-*` and `pe-*`.\n- Text alignment classes like `text-left` become `text-start`.\n- Directional props are updated to use logical values.\n- Supported icons are automatically flipped using `rtl:rotate-180`.\n- Animations like `slide-in-from-left` become `slide-in-from-start`.\n\n### RTL examples for every component\n\nWe've added RTL examples for every component. You'll find live previews and code on each [component page](/docs/components).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"card-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto\"\n/>\n\n### CLI updates\n\n**New projects**: Use the `--rtl` flag with `init` or `create` to enable RTL from the start.\n\n```bash\nnpx shadcn@latest init --rtl\n```\n\n```bash\nnpx shadcn@latest create --rtl\n```\n\n**Existing projects**: Migrate your components with the `migrate rtl` command.\n\n```bash\nnpx shadcn@latest migrate rtl\n```\n\nThis transforms all components in your `ui` directory to use logical classes. You can also pass a specific path or glob pattern.\n\n## Try it out\n\nClick the link below to open a Next.js project with RTL support in v0.\n\n[![Open in v0](https://v0.app/chat-static/button.svg)](https://v0.app/chat/api/open?url=https://github.com/shadcn-ui/next-template-rtl)\n\n### Links\n\n- [RTL Documentation](/docs/rtl)\n- [Font Recommendations](/docs/rtl#font-recommendations)\n- [Animations](/docs/rtl#animations)\n- [Migrating Existing Components](/docs/rtl#migrating-existing-components)\n- [Next.js Setup](/docs/rtl/next)\n- [Vite Setup](/docs/rtl/vite)\n- [TanStack Start Setup](/docs/rtl/start)\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2026-02-blocks.mdx",
    "content": "---\ntitle: February 2026 - Blocks for Radix and Base UI\ndescription: All blocks are now available for both Radix and Base UI.\ndate: 2026-02-06\n---\n\nAll [blocks](/blocks) are now available for both Radix and Base UI.\n\n- **All blocks for both libraries** - Every block, including login, signup, sidebar and dashboard blocks, is now available in both Radix and Base UI variants.\n- **Same CLI workflow** - Run `npx shadcn add` and the CLI will pull the correct block variant based on your project configuration.\n\nIf you've already set up your project with `npx shadcn create`, blocks will automatically use your chosen library. No additional configuration needed.\n\n```bash\nnpx shadcn@latest add login-01\n```\n\nBrowse the full collection on the [blocks](/blocks) page.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2026-02-radix-ui.mdx",
    "content": "---\ntitle: February 2026 - Unified Radix UI Package\ndescription: The new-york style now uses the unified radix-ui package.\ndate: 2026-02-02\n---\n\nThe `new-york` style now uses the unified `radix-ui` package instead of individual `@radix-ui/react-*` packages.\n\n### What's Changed\n\nWhen you add components using the `new-york` style, they will now import from `radix-ui` instead of separate packages:\n\n```diff title=\"components/ui/dialog.tsx\"\n- import * as DialogPrimitive from \"@radix-ui/react-dialog\"\n+ import { Dialog as DialogPrimitive } from \"radix-ui\"\n```\n\nThis results in a cleaner `package.json` with a single `radix-ui` dependency instead of multiple `@radix-ui/react-*` packages.\n\n### Migrating Existing Projects\n\nIf you have an existing project using the `new-york` style, you can migrate to the new `radix-ui` package using the migrate command:\n\n```bash\nnpx shadcn@latest migrate radix\n```\n\nThis will update all imports in your UI components and add `radix-ui` to your dependencies.\n\nTo migrate components outside of your `ui` directory, use the `path` argument:\n\n```bash\nnpx shadcn@latest migrate radix src/components/custom\n```\n\nOnce complete, you can remove any unused `@radix-ui/react-*` packages from your `package.json`.\n\nSee the [migrate radix documentation](/docs/cli#migrate-radix) for more details.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/2026-03-cli-v4.mdx",
    "content": "---\ntitle: March 2026 - shadcn/cli v4\ndescription: More capable, easier to use. Built for you and your coding agents. Skills, presets, dry run, new templates, monorepo and more.\ndate: 2026-03-06\n---\n\nWe're releasing version 4 of shadcn/cli. More capable, easier to use. Built for you and your coding agents. Here's everything new.\n\n## shadcn/skills\n\nshadcn/skills gives coding agents the context they need to work with your components and registry correctly. It covers both Radix and Base UI primitives, updated APIs, component patterns and registry workflows. The skill also knows how to use the shadcn CLI, when to invoke it and which flags to pass. Agents make fewer mistakes and produce code that actually matches your design system.\n\nYou can ask your agent things like:\n\n- \"create a new vite monorepo\"\n- \"find me a hero from tailark, add it to the homepage, animate the text using an animation from react-bits\"\n- \"install and configure a sign in page from @clerk\"\n\n```bash\nnpx skills add shadcn/ui\n```\n\n## Introducing --preset\n\nA preset packs your entire design system config into a short code. Colors, theme, icon library, fonts, radius. One string, everything included.\n\nBuild your preset on [shadcn/create](/create), preview it live and grab the code when you're ready.\n\n```bash\nnpx shadcn@latest init --preset a1Dg5eFl\n```\n\nUse it to scaffold projects from custom config, share with your team or publish in your registry. Drop it in prompts so your agent knows where to start. Use it across Claude, Codex, v0, Replit. Take your preset with you.\n\n## Switching presets\n\nWhen you're working on a new app, it can take a few tries to find something you like so we've made switching presets really easy. Run `init --preset` in your app, and the CLI will take care of reconfiguring everything, including your components.\n\n```bash\nnpx shadcn@latest init --preset ad3qkJ7\n```\n\n## Skills + Presets\n\nYour agent knows how to use presets. Scaffold a project, switch design systems, try something new.\n\n- \"create a new next app using --preset adtk27v\"\n- \"let's try --preset adtk27v\"\n\n## New shadcn/create\n\nTo help you build custom presets, we rebuilt [shadcn/create](/create). It now includes a library of UI components you can use to preview your presets. See how your colors, fonts and radius apply to real components before you start building.\n\n## New --dry-run, --diff, and --view flags\n\nInspect what a registry will add to your project before anything gets written. Review the payload yourself or pipe it to your coding agent for a second look.\n\n```bash\nnpx shadcn@latest add button --dry-run\nnpx shadcn@latest add button --diff\nnpx shadcn@latest add button --view\n```\n\n## Updating primitives\n\nYou can use the `--diff` flag to check for registry updates. Or ask your agent: \"check for updates from @shadcn and merge with my local changes\".\n\n```bash\nnpx shadcn@latest add button --diff\n```\n\n## shadcn init --template\n\n`shadcn init` now scaffolds full project templates for Next.js, Vite, Laravel, React Router, Astro and TanStack Start. Dark mode included for Next.js and Vite.\n\n```bash\nnpx shadcn@latest init\n\nSelect a template › - Use arrow-keys. Return to submit.\n❯ Next.js\n  Vite\n  TanStack Start\n  React Router\n  Astro\n  Laravel\n```\n\nUse `--monorepo` to set up a monorepo.\n\n```bash\nnpx shadcn@latest init -t next --monorepo\n```\n\n## shadcn init --base\n\nPick your primitives. Use `--base` to start a project with Radix or Base UI.\n\n```bash\nnpx shadcn@latest init --base radix\n```\n\n## shadcn info\n\nThe `info` command now shows the full picture: framework, version, CSS vars, which components are installed, and where to find docs and examples for every component. Great for giving coding agents the context they need to work with your project.\n\n```bash\nnpx shadcn@latest info\n```\n\n## shadcn docs\n\nGet docs, code and examples for any UI component right from the CLI. Gives your coding agent the context to use your primitives correctly.\n\n```bash\nnpx shadcn@latest docs combobox\n\ncombobox\n  - docs      https://ui.shadcn.com/docs/components/radix/combobox\n  - examples  https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\n  - api       https://base-ui.com/react/components/combobox\n```\n\n## registry:base and registry:font\n\nRegistries can now distribute an entire design system as a single payload using `registry:base`. Components, dependencies, CSS vars, fonts, config. One install, everything set up.\n\nFonts are now a first-class registry type. Install and configure them the same way you install components.\n\n```json title=\"font-inter.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\"latin\"]\n  }\n}\n```\n\n```bash\nnpx shadcn@latest add font-inter\n```\n\n## Links\n\n- [shadcn/skills](/skills)\n- [shadcn/create](/create)\n- [shadcn/cli](/cli)\n- [shadcn/registry](/docs/registry)\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/index.mdx",
    "content": "---\ntitle: Changelog\ndescription: Latest updates and announcements.\n---\n\nLatest updates and announcements for shadcn/ui.\n"
  },
  {
    "path": "apps/v4/content/docs/changelog/meta.json",
    "content": "{\n  \"title\": \"Changelog\",\n  \"pages\": []\n}\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/accordion.mdx",
    "content": "---\ntitle: Accordion\ndescription: A vertically stacked set of interactive headings that each reveal a section of content.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/accordion\n  api: https://base-ui.com/react/components/accordion#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"accordion-demo\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[300px]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add accordion\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"accordion\"\n  title=\"components/ui/accordion.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/ui/accordion\"\n```\n\n```tsx showLineNumbers\n<Accordion defaultValue={[\"item-1\"]}>\n  <AccordionItem value=\"item-1\">\n    <AccordionTrigger>Is it accessible?</AccordionTrigger>\n    <AccordionContent>\n      Yes. It adheres to the WAI-ARIA design pattern.\n    </AccordionContent>\n  </AccordionItem>\n</Accordion>\n```\n\n## Examples\n\n### Basic\n\nA basic accordion that shows one item at a time. The first item is open by default.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"accordion-basic\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[300px]\"\n/>\n\n### Multiple\n\nUse the `multiple` prop to allow multiple items to be open at the same time.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"accordion-multiple\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[450px]\"\n/>\n\n### Disabled\n\nUse the `disabled` prop on `AccordionItem` to disable individual items.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"accordion-disabled\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[300px]\"\n/>\n\n### Borders\n\nAdd `border` to the `Accordion` and `border-b last:border-b-0` to the `AccordionItem` to add borders to the items.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"accordion-borders\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[300px]\"\n/>\n\n### Card\n\nWrap the `Accordion` in a `Card` component.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"accordion-card\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[435px]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"accordion-rtl\"\n  align=\"start\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Base UI](https://base-ui.com/react/components/accordion#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/alert-dialog.mdx",
    "content": "---\ntitle: Alert Dialog\ndescription: A modal dialog that interrupts the user with important content and expects a response.\nfeatured: true\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/alert-dialog\n  api: https://base-ui.com/react/components/alert-dialog#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-dialog-demo\"\n  previewClassName=\"h-56\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add alert-dialog\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"alert-dialog\"\n  title=\"components/ui/alert-dialog.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/components/ui/alert-dialog\"\n```\n\n```tsx showLineNumbers\n<AlertDialog>\n  <AlertDialogTrigger render={<Button variant=\"outline\" />}>\n    Show Dialog\n  </AlertDialogTrigger>\n  <AlertDialogContent>\n    <AlertDialogHeader>\n      <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n      <AlertDialogDescription>\n        This action cannot be undone. This will permanently delete your account\n        from our servers.\n      </AlertDialogDescription>\n    </AlertDialogHeader>\n    <AlertDialogFooter>\n      <AlertDialogCancel>Cancel</AlertDialogCancel>\n      <AlertDialogAction>Continue</AlertDialogAction>\n    </AlertDialogFooter>\n  </AlertDialogContent>\n</AlertDialog>\n```\n\n## Examples\n\n### Basic\n\nA basic alert dialog with a title, description, and cancel and continue buttons.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-dialog-basic\"\n  previewClassName=\"h-56\"\n/>\n\n### Small\n\nUse the `size=\"sm\"` prop to make the alert dialog smaller.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-dialog-small\"\n  previewClassName=\"h-56\"\n/>\n\n### Media\n\nUse the `AlertDialogMedia` component to add a media element such as an icon or image to the alert dialog.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-dialog-media\"\n  previewClassName=\"h-56\"\n/>\n\n### Small with Media\n\nUse the `size=\"sm\"` prop to make the alert dialog smaller and the `AlertDialogMedia` component to add a media element such as an icon or image to the alert dialog.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-dialog-small-media\"\n  previewClassName=\"h-56\"\n/>\n\n### Destructive\n\nUse the `AlertDialogAction` component to add a destructive action button to the alert dialog.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-dialog-destructive\"\n  previewClassName=\"h-56\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-dialog-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-56\"\n/>\n\n## API Reference\n\n### size\n\nUse the `size` prop on the `AlertDialogContent` component to control the size of the alert dialog. It accepts the following values:\n\n| Prop   | Type                | Default     |\n| ------ | ------------------- | ----------- |\n| `size` | `\"default\" \\| \"sm\"` | `\"default\"` |\n\nFor more information about the other components and their props, see the [Base UI documentation](https://base-ui.com/react/components/alert-dialog#api-reference).\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/alert.mdx",
    "content": "---\ntitle: Alert\ndescription: Displays a callout for user attention.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-demo\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add alert\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource name=\"alert\" title=\"components/ui/alert.tsx\" />\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Alert,\n  AlertAction,\n  AlertDescription,\n  AlertTitle,\n} from \"@/components/ui/alert\"\n```\n\n```tsx showLineNumbers\n<Alert>\n  <InfoIcon />\n  <AlertTitle>Heads up!</AlertTitle>\n  <AlertDescription>\n    You can add components and dependencies to your app using the cli.\n  </AlertDescription>\n  <AlertAction>\n    <Button variant=\"outline\">Enable</Button>\n  </AlertAction>\n</Alert>\n```\n\n## Examples\n\n### Basic\n\nA basic alert with an icon, title and description.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-basic\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n### Destructive\n\nUse `variant=\"destructive\"` to create a destructive alert.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-destructive\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n### Action\n\nUse `AlertAction` to add a button or other action element to the alert.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-action\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n### Custom Colors\n\nYou can customize the alert colors by adding custom classes such as `bg-amber-50 dark:bg-amber-950` to the `Alert` component.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-colors\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"alert-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n## API Reference\n\n### Alert\n\nThe `Alert` component displays a callout for user attention.\n\n| Prop      | Type                         | Default     |\n| --------- | ---------------------------- | ----------- |\n| `variant` | `\"default\" \\| \"destructive\"` | `\"default\"` |\n\n### AlertTitle\n\nThe `AlertTitle` component displays the title of the alert.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AlertDescription\n\nThe `AlertDescription` component displays the description or content of the alert.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AlertAction\n\nThe `AlertAction` component displays an action element (like a button) positioned absolutely in the top-right corner of the alert.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/aspect-ratio.mdx",
    "content": "---\ntitle: Aspect Ratio\ndescription: Displays content within a desired ratio.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview name=\"aspect-ratio-demo\" styleName=\"base-nova\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add aspect-ratio\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"aspect-ratio\"\n  title=\"components/ui/aspect-ratio.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { AspectRatio } from \"@/components/ui/aspect-ratio\"\n```\n\n```tsx showLineNumbers\n<AspectRatio ratio={16 / 9}>\n  <Image src=\"...\" alt=\"Image\" className=\"rounded-md object-cover\" />\n</AspectRatio>\n```\n\n## Examples\n\n### Square\n\nA square aspect ratio component using the `ratio={1 / 1}` prop. This is useful for displaying images in a square format.\n\n<ComponentPreview name=\"aspect-ratio-square\" styleName=\"base-nova\" />\n\n### Portrait\n\nA portrait aspect ratio component using the `ratio={9 / 16}` prop. This is useful for displaying images in a portrait format.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"aspect-ratio-portrait\"\n  previewClassName=\"h-96\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"aspect-ratio-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-96\"\n/>\n\n## API Reference\n\n### AspectRatio\n\nThe `AspectRatio` component displays content within a desired ratio.\n\n| Prop        | Type     | Default | Required |\n| ----------- | -------- | ------- | -------- |\n| `ratio`     | `number` | -       | Yes      |\n| `className` | `string` | -       | No       |\n\nFor more information, see the [Base UI documentation](https://base-ui.com/react/components/aspect-ratio#api-reference).\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/avatar.mdx",
    "content": "---\ntitle: Avatar\ndescription: An image element with a fallback for representing the user.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/avatar\n  api: https://base-ui.com/react/components/avatar#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"avatar-demo\"\n  previewClassName=\"h-72\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add avatar\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"avatar\"\n  title=\"components/ui/avatar.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\n```\n\n```tsx showLineNumbers\n<Avatar>\n  <AvatarImage src=\"https://github.com/shadcn.png\" />\n  <AvatarFallback>CN</AvatarFallback>\n</Avatar>\n```\n\n## Examples\n\n### Basic\n\nA basic avatar component with an image and a fallback.\n\n<ComponentPreview styleName=\"base-nova\" name=\"avatar-basic\" />\n\n### Badge\n\nUse the `AvatarBadge` component to add a badge to the avatar. The badge is positioned at the bottom right of the avatar.\n\n<ComponentPreview styleName=\"base-nova\" name=\"avatar-badge\" />\n\nUse the `className` prop to add custom styles to the badge such as custom colors, sizes, etc.\n\n```tsx showLineNumbers\n<Avatar>\n  <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n  <AvatarFallback>CN</AvatarFallback>\n  <AvatarBadge className=\"bg-green-600 dark:bg-green-800\" />\n</Avatar>\n```\n\n### Badge with Icon\n\nYou can also use an icon inside `<AvatarBadge>`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"avatar-badge-icon\" />\n\n### Avatar Group\n\nUse the `AvatarGroup` component to add a group of avatars.\n\n<ComponentPreview styleName=\"base-nova\" name=\"avatar-group\" />\n\n### Avatar Group Count\n\nUse `<AvatarGroupCount>` to add a count to the group.\n\n<ComponentPreview styleName=\"base-nova\" name=\"avatar-group-count\" />\n\n### Avatar Group with Icon\n\nYou can also use an icon inside `<AvatarGroupCount>`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"avatar-group-count-icon\" />\n\n### Sizes\n\nUse the `size` prop to change the size of the avatar.\n\n<ComponentPreview styleName=\"base-nova\" name=\"avatar-size\" />\n\n### Dropdown\n\nYou can use the `Avatar` component as a trigger for a dropdown menu.\n\n<ComponentPreview styleName=\"base-nova\" name=\"avatar-dropdown\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"avatar-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-72\"\n/>\n\n## API Reference\n\n### Avatar\n\nThe `Avatar` component is the root component that wraps the avatar image and fallback.\n\n| Prop        | Type                        | Default     |\n| ----------- | --------------------------- | ----------- |\n| `size`      | `\"default\" \\| \"sm\" \\| \"lg\"` | `\"default\"` |\n| `className` | `string`                    | -           |\n\n### AvatarImage\n\nThe `AvatarImage` component displays the avatar image. It accepts all Base UI Avatar Image props.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `src`       | `string` | -       |\n| `alt`       | `string` | -       |\n| `className` | `string` | -       |\n\n### AvatarFallback\n\nThe `AvatarFallback` component displays a fallback when the image fails to load. It accepts all Base UI Avatar Fallback props.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AvatarBadge\n\nThe `AvatarBadge` component displays a badge indicator on the avatar, typically positioned at the bottom right.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AvatarGroup\n\nThe `AvatarGroup` component displays a group of avatars with overlapping styling.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AvatarGroupCount\n\nThe `AvatarGroupCount` component displays a count indicator in an avatar group, typically showing the number of additional avatars.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\nFor more information about Base UI Avatar props, see the [Base UI documentation](https://base-ui.com/react/components/avatar#api-reference).\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/badge.mdx",
    "content": "---\ntitle: Badge\ndescription: Displays a badge or a component that looks like a badge.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"badge-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add badge\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"badge\"\n  title=\"components/ui/badge.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Badge } from \"@/components/ui/badge\"\n```\n\n```tsx\n<Badge variant=\"default | outline | secondary | destructive\">Badge</Badge>\n```\n\n## Examples\n\n### Variants\n\nUse the `variant` prop to change the variant of the badge.\n\n<ComponentPreview styleName=\"base-nova\" name=\"badge-variants\" />\n\n### With Icon\n\nYou can render an icon inside the badge. Use `data-icon=\"inline-start\"` to render the icon on the left and `data-icon=\"inline-end\"` to render the icon on the right.\n\n<ComponentPreview styleName=\"base-nova\" name=\"badge-icon\" />\n\n### With Spinner\n\nYou can render a spinner inside the badge. Remember to add the `data-icon=\"inline-start\"` or `data-icon=\"inline-end\"` prop to the spinner.\n\n<ComponentPreview styleName=\"base-nova\" name=\"badge-spinner\" />\n\n### Link\n\nUse the `render` prop to render a link as a badge.\n\n<ComponentPreview styleName=\"base-nova\" name=\"badge-link\" />\n\n### Custom Colors\n\nYou can customize the colors of a badge by adding custom classes such as `bg-green-50 dark:bg-green-800` to the `Badge` component.\n\n<ComponentPreview styleName=\"base-nova\" name=\"badge-colors\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"badge-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Badge\n\nThe `Badge` component displays a badge or a component that looks like a badge.\n\n| Prop        | Type                                                                          | Default     |\n| ----------- | ----------------------------------------------------------------------------- | ----------- |\n| `variant`   | `\"default\" \\| \"secondary\" \\| \"destructive\" \\| \"outline\" \\| \"ghost\" \\| \"link\"` | `\"default\"` |\n| `className` | `string`                                                                      | -           |\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/breadcrumb.mdx",
    "content": "---\ntitle: Breadcrumb\ndescription: Displays the path to the current resource using a hierarchy of links.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"breadcrumb-demo\"\n  previewClassName=\"p-2\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add breadcrumb\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"breadcrumb\"\n  title=\"components/ui/breadcrumb.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\"\n```\n\n```tsx showLineNumbers\n<Breadcrumb>\n  <BreadcrumbList>\n    <BreadcrumbItem>\n      <BreadcrumbLink render={<a href=\"/\" />}>Home</BreadcrumbLink>\n    </BreadcrumbItem>\n    <BreadcrumbSeparator />\n    <BreadcrumbItem>\n      <BreadcrumbLink render={<a href=\"/components\" />}>\n        Components\n      </BreadcrumbLink>\n    </BreadcrumbItem>\n    <BreadcrumbSeparator />\n    <BreadcrumbItem>\n      <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n    </BreadcrumbItem>\n  </BreadcrumbList>\n</Breadcrumb>\n```\n\n## Examples\n\n### Basic\n\nA basic breadcrumb with a home link and a components link.\n\n<ComponentPreview styleName=\"base-nova\" name=\"breadcrumb-basic\" />\n\n### Custom separator\n\nUse a custom component as `children` for `<BreadcrumbSeparator />` to create a custom separator.\n\n<ComponentPreview styleName=\"base-nova\" name=\"breadcrumb-separator\" />\n\n### Dropdown\n\nYou can compose `<BreadcrumbItem />` with a `<DropdownMenu />` to create a dropdown in the breadcrumb.\n\n<ComponentPreview styleName=\"base-nova\" name=\"breadcrumb-dropdown\" />\n\n### Collapsed\n\nWe provide a `<BreadcrumbEllipsis />` component to show a collapsed state when the breadcrumb is too long.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"breadcrumb-ellipsis\"\n  previewClassName=\"p-2\"\n/>\n\n### Link component\n\nTo use a custom link component from your routing library, you can use the `render` prop on `<BreadcrumbLink />`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"breadcrumb-link\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"breadcrumb-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"p-2\"\n/>\n\n## API Reference\n\n### Breadcrumb\n\nThe `Breadcrumb` component is the root navigation element that wraps all breadcrumb components.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbList\n\nThe `BreadcrumbList` component displays the ordered list of breadcrumb items.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbItem\n\nThe `BreadcrumbItem` component wraps individual breadcrumb items.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbLink\n\nThe `BreadcrumbLink` component displays a clickable link in the breadcrumb.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbPage\n\nThe `BreadcrumbPage` component displays the current page in the breadcrumb (non-clickable).\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbSeparator\n\nThe `BreadcrumbSeparator` component displays a separator between breadcrumb items. You can pass custom children to override the default separator icon.\n\n| Prop        | Type              | Default |\n| ----------- | ----------------- | ------- |\n| `children`  | `React.ReactNode` | -       |\n| `className` | `string`          | -       |\n\n### BreadcrumbEllipsis\n\nThe `BreadcrumbEllipsis` component displays an ellipsis indicator for collapsed breadcrumb items.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/button-group.mdx",
    "content": "---\ntitle: Button Group\ndescription: A container that groups related buttons together with consistent styling.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add button-group\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"button-group\"\n  title=\"components/ui/button-group.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n} from \"@/components/ui/button-group\"\n```\n\n```tsx\n<ButtonGroup>\n  <Button>Button 1</Button>\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\n## Accessibility\n\n- The `ButtonGroup` component has the `role` attribute set to `group`.\n- Use <Kbd>Tab</Kbd> to navigate between the buttons in the group.\n- Use `aria-label` or `aria-labelledby` to label the button group.\n\n```tsx showLineNumbers\n<ButtonGroup aria-label=\"Button group\">\n  <Button>Button 1</Button>\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\n## ButtonGroup vs ToggleGroup\n\n- Use the `ButtonGroup` component when you want to group buttons that perform an action.\n- Use the `ToggleGroup` component when you want to group buttons that toggle a state.\n\n## Examples\n\n### Orientation\n\nSet the `orientation` prop to change the button group layout.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-orientation\" />\n\n### Size\n\nControl the size of buttons using the `size` prop on individual buttons.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-size\" />\n\n### Nested\n\nNest `<ButtonGroup>` components to create button groups with spacing.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-nested\" />\n\n### Separator\n\nThe `ButtonGroupSeparator` component visually divides buttons within a group.\n\nButtons with variant `outline` do not need a separator since they have a border. For other variants, a separator is recommended to improve the visual hierarchy.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-separator\" />\n\n### Split\n\nCreate a split button group by adding two buttons separated by a `ButtonGroupSeparator`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-split\" />\n\n### Input\n\nWrap an `Input` component with buttons.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-input\" />\n\n### Input Group\n\nWrap an `InputGroup` component to create complex input layouts.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-input-group\" />\n\n### Dropdown Menu\n\nCreate a split button group with a `DropdownMenu` component.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-dropdown\" />\n\n### Select\n\nPair with a `Select` component.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-select\" />\n\n### Popover\n\nUse with a `Popover` component.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-popover\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"button-group-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\n### ButtonGroup\n\nThe `ButtonGroup` component is a container that groups related buttons together with consistent styling.\n\n| Prop          | Type                         | Default        |\n| ------------- | ---------------------------- | -------------- |\n| `orientation` | `\"horizontal\" \\| \"vertical\"` | `\"horizontal\"` |\n\n```tsx\n<ButtonGroup>\n  <Button>Button 1</Button>\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\nNest multiple button groups to create complex layouts with spacing. See the [nested](#nested) example for more details.\n\n```tsx\n<ButtonGroup>\n  <ButtonGroup />\n  <ButtonGroup />\n</ButtonGroup>\n```\n\n### ButtonGroupSeparator\n\nThe `ButtonGroupSeparator` component visually divides buttons within a group.\n\n| Prop          | Type                         | Default      |\n| ------------- | ---------------------------- | ------------ |\n| `orientation` | `\"horizontal\" \\| \"vertical\"` | `\"vertical\"` |\n\n```tsx\n<ButtonGroup>\n  <Button>Button 1</Button>\n  <ButtonGroupSeparator />\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\n### ButtonGroupText\n\nUse this component to display text within a button group.\n\n| Prop      | Type      | Default |\n| --------- | --------- | ------- |\n| `asChild` | `boolean` | `false` |\n\n```tsx\n<ButtonGroup>\n  <ButtonGroupText>Text</ButtonGroupText>\n  <Button>Button</Button>\n</ButtonGroup>\n```\n\nUse the `asChild` prop to render a custom component as the text, for example a label.\n\n```tsx showLineNumbers\nimport { ButtonGroupText } from \"@/components/ui/button-group\"\nimport { Label } from \"@/components/ui/label\"\n\nexport function ButtonGroupTextDemo() {\n  return (\n    <ButtonGroup>\n      <ButtonGroupText asChild>\n        <Label htmlFor=\"name\">Text</Label>\n      </ButtonGroupText>\n      <Input placeholder=\"Type something here...\" id=\"name\" />\n    </ButtonGroup>\n  )\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/button.mdx",
    "content": "---\ntitle: Button\ndescription: Displays a button or a component that looks like a button.\nfeatured: true\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add button\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"button\"\n  title=\"components/ui/button.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Button } from \"@/components/ui/button\"\n```\n\n```tsx\n<Button variant=\"outline\">Button</Button>\n```\n\n## Cursor\n\nTailwind v4 [switched](https://tailwindcss.com/docs/upgrade-guide#buttons-use-the-default-cursor) from `cursor: pointer` to `cursor: default` for the button component.\n\nIf you want to keep the `cursor: pointer` behavior, add the following code to your CSS file:\n\n```css showLineNumbers title=\"globals.css\"\n@layer base {\n  button:not(:disabled),\n  [role=\"button\"]:not(:disabled) {\n    cursor: pointer;\n  }\n}\n```\n\n## Examples\n\n### Size\n\nUse the `size` prop to change the size of the button.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-size\" />\n\n### Default\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-default\" />\n\n### Outline\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-outline\" />\n\n### Secondary\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-secondary\" />\n\n### Ghost\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-ghost\" />\n\n### Destructive\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-destructive\" />\n\n### Link\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-link\" />\n\n### Icon\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-icon\" />\n\n### With Icon\n\nRemember to add the `data-icon=\"inline-start\"` or `data-icon=\"inline-end\"` attribute to the icon for the correct spacing.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-with-icon\" />\n\n### Rounded\n\nUse the `rounded-full` class to make the button rounded.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-rounded\" />\n\n### Spinner\n\nRender a `<Spinner />` component inside the button to show a loading state. Remember to add the `data-icon=\"inline-start\"` or `data-icon=\"inline-end\"` attribute to the spinner for the correct spacing.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-spinner\" />\n\n### Button Group\n\nTo create a button group, use the `ButtonGroup` component. See the [Button Group](/docs/components/base/button-group) documentation for more details.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-group-demo\" />\n\n### As Link\n\nYou can use the `buttonVariants` helper to make a link look like a button.\n\n**Do not use `<Button render={<a />} nativeButton={false} />` for links.** The Base UI `Button` component always applies `role=\"button\"`, which overrides the semantic link role on `<a>` elements. Use `buttonVariants` with a plain `<a>` tag instead.\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-render\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"button-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Button\n\nThe `Button` component is a wrapper around the `button` element that adds a variety of styles and functionality.\n\n| Prop      | Type                                                                                 | Default     |\n| --------- | ------------------------------------------------------------------------------------ | ----------- |\n| `variant` | `\"default\" \\| \"outline\" \\| \"ghost\" \\| \"destructive\" \\| \"secondary\" \\| \"link\"`        | `\"default\"` |\n| `size`    | `\"default\" \\| \"xs\" \\| \"sm\" \\| \"lg\" \\| \"icon\" \\| \"icon-xs\" \\| \"icon-sm\" \\| \"icon-lg\"` | `\"default\"` |\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/calendar.mdx",
    "content": "---\ntitle: Calendar\ndescription: A calendar component that allows users to select a date or a range of dates.\nbase: base\ncomponent: true\nlinks:\n  doc: https://react-day-picker.js.org\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-demo\"\n  previewClassName=\"h-96\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add calendar\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install react-day-picker date-fns\n```\n\n<Step>Add the `Button` component to your project.</Step>\n\nThe `Calendar` component uses the `Button` component. Make sure you have it installed in your project.\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"calendar\"\n  title=\"components/ui/calendar.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Calendar } from \"@/components/ui/calendar\"\n```\n\n```tsx showLineNumbers\nconst [date, setDate] = React.useState<Date | undefined>(new Date())\n\nreturn (\n  <Calendar\n    mode=\"single\"\n    selected={date}\n    onSelect={setDate}\n    className=\"rounded-lg border\"\n  />\n)\n```\n\nSee the [React DayPicker](https://react-day-picker.js.org) documentation for more information.\n\n## About\n\nThe `Calendar` component is built on top of [React DayPicker](https://react-day-picker.js.org).\n\n## Date Picker\n\nYou can use the `<Calendar>` component to build a date picker. See the [Date Picker](/docs/components/base/date-picker) page for more information.\n\n## Persian / Hijri / Jalali Calendar\n\nTo use the Persian calendar, edit `components/ui/calendar.tsx` and replace `react-day-picker` with `react-day-picker/persian`.\n\n```diff\n- import { DayPicker } from \"react-day-picker\"\n+ import { DayPicker } from \"react-day-picker/persian\"\n```\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-hijri\"\n  title=\"Persian / Hijri / Jalali Calendar\"\n  description=\"A Persian calendar.\"\n  previewClassName=\"h-[400px]\"\n/>\n\n## Selected Date (With TimeZone)\n\nThe Calendar component accepts a `timeZone` prop to ensure dates are displayed and selected in the user's local timezone.\n\n```tsx showLineNumbers\nexport function CalendarWithTimezone() {\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\n  const [timeZone, setTimeZone] = React.useState<string | undefined>(undefined)\n\n  React.useEffect(() => {\n    setTimeZone(Intl.DateTimeFormat().resolvedOptions().timeZone)\n  }, [])\n\n  return (\n    <Calendar\n      mode=\"single\"\n      selected={date}\n      onSelect={setDate}\n      timeZone={timeZone}\n    />\n  )\n}\n```\n\n**Note:** If you notice a selected date offset (for example, selecting the 20th highlights the 19th), make sure the `timeZone` prop is set to the user's local timezone.\n\n**Why client-side?** The timezone is detected using `Intl.DateTimeFormat().resolvedOptions().timeZone` inside a `useEffect` to ensure compatibility with server-side rendering. Detecting the timezone during render would cause hydration mismatches, as the server and client may be in different timezones.\n\n## Examples\n\n### Basic\n\nA basic calendar component. We used `className=\"rounded-lg border\"` to style the calendar.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-basic\"\n  previewClassName=\"h-96\"\n/>\n\n### Range Calendar\n\nUse the `mode=\"range\"` prop to enable range selection.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-range\"\n  previewClassName=\"h-[36rem] md:h-96\"\n/>\n\n### Month and Year Selector\n\nUse `captionLayout=\"dropdown\"` to show month and year dropdowns.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-caption\"\n  previewClassName=\"h-96\"\n/>\n\n### Presets\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-presets\"\n  previewClassName=\"h-[650px]\"\n/>\n\n### Date and Time Picker\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-time\"\n  previewClassName=\"h-[600px]\"\n/>\n\n### Booked dates\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-booked-dates\"\n  previewClassName=\"h-96\"\n/>\n\n### Custom Cell Size\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-custom-days\"\n  title=\"Custom Cell Size\"\n  description=\"A calendar with custom cell size that's responsive.\"\n  className=\"**:[.preview]:h-[560px]\"\n/>\n\nYou can customize the size of calendar cells using the `--cell-size` CSS variable. You can also make it responsive by using breakpoint-specific values:\n\n```tsx showLineNumbers\n<Calendar\n  mode=\"single\"\n  selected={date}\n  onSelect={setDate}\n  className=\"rounded-lg border [--cell-size:--spacing(11)] md:[--cell-size:--spacing(12)]\"\n/>\n```\n\nOr use fixed values:\n\n```tsx showLineNumbers\n<Calendar\n  mode=\"single\"\n  selected={date}\n  onSelect={setDate}\n  className=\"rounded-lg border [--cell-size:2.75rem] md:[--cell-size:3rem]\"\n/>\n```\n\n### Week Numbers\n\nUse `showWeekNumber` to show week numbers.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-week-numbers\"\n  previewClassName=\"h-96\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\nSee also the [Hijri Guide](#persian--hijri--jalali-calendar) for enabling the Persian / Hijri / Jalali calendar.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"calendar-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-96\"\n/>\n\nWhen using RTL, import the locale from `react-day-picker/locale` and pass both the `locale` and `dir` props to the Calendar component:\n\n```tsx showLineNumbers\nimport { arSA } from \"react-day-picker/locale\"\n\n;<Calendar\n  mode=\"single\"\n  selected={date}\n  onSelect={setDate}\n  locale={arSA}\n  dir=\"rtl\"\n/>\n```\n\n## API Reference\n\nSee the [React DayPicker](https://react-day-picker.js.org) documentation for more information on the `Calendar` component.\n\n## Changelog\n\n### RTL Support\n\nIf you're upgrading from a previous version of the `Calendar` component, you'll need to apply the following updates to add locale support:\n\n<Steps>\n\n<Step>Import the `Locale` type.</Step>\n\nAdd `Locale` to your imports from `react-day-picker`:\n\n```diff\n  import {\n    DayPicker,\n    getDefaultClassNames,\n    type DayButton,\n+   type Locale,\n  } from \"react-day-picker\"\n```\n\n<Step>Add `locale` prop to the Calendar component.</Step>\n\nAdd the `locale` prop to the component's props:\n\n```diff\n  function Calendar({\n    className,\n    classNames,\n    showOutsideDays = true,\n    captionLayout = \"label\",\n    buttonVariant = \"ghost\",\n+   locale,\n    formatters,\n    components,\n    ...props\n  }: React.ComponentProps<typeof DayPicker> & {\n    buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n  }) {\n```\n\n<Step>Pass `locale` to DayPicker.</Step>\n\nPass the `locale` prop to the `DayPicker` component:\n\n```diff\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(...)}\n      captionLayout={captionLayout}\n+     locale={locale}\n      formatters={{\n        formatMonthDropdown: (date) =>\n-         date.toLocaleString(\"default\", { month: \"short\" }),\n+         date.toLocaleString(locale?.code, { month: \"short\" }),\n        ...formatters,\n      }}\n```\n\n<Step>Update CalendarDayButton to accept locale.</Step>\n\nUpdate the `CalendarDayButton` component signature and pass `locale`:\n\n```diff\n  function CalendarDayButton({\n    className,\n    day,\n    modifiers,\n+   locale,\n    ...props\n- }: React.ComponentProps<typeof DayButton>) {\n+ }: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n```\n\n<Step>Update date formatting in CalendarDayButton.</Step>\n\nUse `locale?.code` in the date formatting:\n\n```diff\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n-     data-day={day.date.toLocaleDateString()}\n+     data-day={day.date.toLocaleDateString(locale?.code)}\n      ...\n    />\n```\n\n<Step>Pass locale to DayButton component.</Step>\n\nUpdate the `DayButton` component usage to pass the `locale` prop:\n\n```diff\n      components={{\n        ...\n-       DayButton: CalendarDayButton,\n+       DayButton: ({ ...props }) => (\n+         <CalendarDayButton locale={locale} {...props} />\n+       ),\n        ...\n      }}\n```\n\n<Step>Update RTL-aware CSS classes.</Step>\n\nReplace directional classes with logical properties for better RTL support:\n\n```diff\n  // In the day classNames:\n- [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\n+ [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\n- [&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\n+ [&:nth-child(2)[data-selected=true]_button]:rounded-s-(--cell-radius)\n- [&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\n+ [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius)\n\n  // In range_start classNames:\n- rounded-l-(--cell-radius) ... after:right-0\n+ rounded-s-(--cell-radius) ... after:end-0\n\n  // In range_end classNames:\n- rounded-r-(--cell-radius) ... after:left-0\n+ rounded-e-(--cell-radius) ... after:start-0\n\n  // In CalendarDayButton className:\n- data-[range-end=true]:rounded-r-(--cell-radius)\n+ data-[range-end=true]:rounded-e-(--cell-radius)\n- data-[range-start=true]:rounded-l-(--cell-radius)\n+ data-[range-start=true]:rounded-s-(--cell-radius)\n```\n\n</Steps>\n\nAfter applying these changes, you can use the `locale` prop to provide locale-specific formatting:\n\n```tsx\nimport { enUS } from \"react-day-picker/locale\"\n\n;<Calendar mode=\"single\" selected={date} onSelect={setDate} locale={enUS} />\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/card.mdx",
    "content": "---\ntitle: Card\ndescription: Displays a card with header, content, and footer.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview\n  name=\"card-demo\"\n  styleName=\"base-nova\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add card\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"card\"\n  title=\"components/ui/card.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n```\n\n```tsx showLineNumbers\n<Card>\n  <CardHeader>\n    <CardTitle>Card Title</CardTitle>\n    <CardDescription>Card Description</CardDescription>\n    <CardAction>Card Action</CardAction>\n  </CardHeader>\n  <CardContent>\n    <p>Card Content</p>\n  </CardContent>\n  <CardFooter>\n    <p>Card Footer</p>\n  </CardFooter>\n</Card>\n```\n\n## Examples\n\n### Size\n\nUse the `size=\"sm\"` prop to set the size of the card to small. The small size variant uses smaller spacing.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"card-small\"\n  previewClassName=\"h-96\"\n/>\n\n### Image\n\nAdd an image before the card header to create a card with an image.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"card-image\"\n  previewClassName=\"h-[32rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"card-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## API Reference\n\n### Card\n\nThe `Card` component is the root container for card content.\n\n| Prop        | Type                | Default     |\n| ----------- | ------------------- | ----------- |\n| `size`      | `\"default\" \\| \"sm\"` | `\"default\"` |\n| `className` | `string`            | -           |\n\n### CardHeader\n\nThe `CardHeader` component is used for a title, description, and optional action.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardTitle\n\nThe `CardTitle` component is used for the card title.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardDescription\n\nThe `CardDescription` component is used for helper text under the title.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardAction\n\nThe `CardAction` component places content in the top-right of the header (for example, a button or a badge).\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardContent\n\nThe `CardContent` component is used for the main card body.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardFooter\n\nThe `CardFooter` component is used for actions and secondary content at the bottom of the card.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/carousel.mdx",
    "content": "---\ntitle: Carousel\ndescription: A carousel with motion and swipe built using Embla.\nbase: base\ncomponent: true\nlinks:\n  doc: https://www.embla-carousel.com/get-started/react\n  api: https://www.embla-carousel.com/api\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"carousel-demo\"\n  previewClassName=\"h-80 sm:h-[32rem]\"\n/>\n\n## About\n\nThe carousel component is built using the [Embla Carousel](https://www.embla-carousel.com/) library.\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add carousel\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install embla-carousel-react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"carousel\"\n  title=\"components/ui/carousel.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/components/ui/carousel\"\n```\n\n```tsx showLineNumbers\n<Carousel>\n  <CarouselContent>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n  </CarouselContent>\n  <CarouselPrevious />\n  <CarouselNext />\n</Carousel>\n```\n\n## Examples\n\n### Sizes\n\nTo set the size of the items, you can use the `basis` utility class on the `<CarouselItem />`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"carousel-size\" />\n\n```tsx showLineNumbers {4-6}\n// 33% of the carousel width.\n<Carousel>\n  <CarouselContent>\n    <CarouselItem className=\"basis-1/3\">...</CarouselItem>\n    <CarouselItem className=\"basis-1/3\">...</CarouselItem>\n    <CarouselItem className=\"basis-1/3\">...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n```tsx showLineNumbers {4-6}\n// 50% on small screens and 33% on larger screens.\n<Carousel>\n  <CarouselContent>\n    <CarouselItem className=\"md:basis-1/2 lg:basis-1/3\">...</CarouselItem>\n    <CarouselItem className=\"md:basis-1/2 lg:basis-1/3\">...</CarouselItem>\n    <CarouselItem className=\"md:basis-1/2 lg:basis-1/3\">...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n### Spacing\n\nTo set the spacing between the items, we use a `pl-[VALUE]` utility on the `<CarouselItem />` and a negative `-ml-[VALUE]` on the `<CarouselContent />`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"carousel-spacing\" />\n\n```tsx showLineNumbers /-ml-4/ /pl-4/\n<Carousel>\n  <CarouselContent className=\"-ml-4\">\n    <CarouselItem className=\"pl-4\">...</CarouselItem>\n    <CarouselItem className=\"pl-4\">...</CarouselItem>\n    <CarouselItem className=\"pl-4\">...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n```tsx showLineNumbers /-ml-2/ /pl-2/ /md:-ml-4/ /md:pl-4/\n<Carousel>\n  <CarouselContent className=\"-ml-2 md:-ml-4\">\n    <CarouselItem className=\"pl-2 md:pl-4\">...</CarouselItem>\n    <CarouselItem className=\"pl-2 md:pl-4\">...</CarouselItem>\n    <CarouselItem className=\"pl-2 md:pl-4\">...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n### Orientation\n\nUse the `orientation` prop to set the orientation of the carousel.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"carousel-orientation\"\n  previewClassName=\"h-[32rem]\"\n/>\n\n```tsx showLineNumbers /vertical | horizontal/\n<Carousel orientation=\"vertical | horizontal\">\n  <CarouselContent>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n## Options\n\nYou can pass options to the carousel using the `opts` prop. See the [Embla Carousel docs](https://www.embla-carousel.com/api/options/) for more information.\n\n```tsx showLineNumbers {2-5}\n<Carousel\n  opts={{\n    align: \"start\",\n    loop: true,\n  }}\n>\n  <CarouselContent>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n## API\n\nUse a state and the `setApi` prop to get an instance of the carousel API.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"carousel-api\"\n  previewClassName=\"sm:h-[32rem]\"\n/>\n\n```tsx showLineNumbers {1,4,22}\nimport { type CarouselApi } from \"@/components/ui/carousel\"\n\nexport function Example() {\n  const [api, setApi] = React.useState<CarouselApi>()\n  const [current, setCurrent] = React.useState(0)\n  const [count, setCount] = React.useState(0)\n\n  React.useEffect(() => {\n    if (!api) {\n      return\n    }\n\n    setCount(api.scrollSnapList().length)\n    setCurrent(api.selectedScrollSnap() + 1)\n\n    api.on(\"select\", () => {\n      setCurrent(api.selectedScrollSnap() + 1)\n    })\n  }, [api])\n\n  return (\n    <Carousel setApi={setApi}>\n      <CarouselContent>\n        <CarouselItem>...</CarouselItem>\n        <CarouselItem>...</CarouselItem>\n        <CarouselItem>...</CarouselItem>\n      </CarouselContent>\n    </Carousel>\n  )\n}\n```\n\n## Events\n\nYou can listen to events using the api instance from `setApi`.\n\n```tsx showLineNumbers {1,4-14,16}\nimport { type CarouselApi } from \"@/components/ui/carousel\"\n\nexport function Example() {\n  const [api, setApi] = React.useState<CarouselApi>()\n\n  React.useEffect(() => {\n    if (!api) {\n      return\n    }\n\n    api.on(\"select\", () => {\n      // Do something on select.\n    })\n  }, [api])\n\n  return (\n    <Carousel setApi={setApi}>\n      <CarouselContent>\n        <CarouselItem>...</CarouselItem>\n        <CarouselItem>...</CarouselItem>\n        <CarouselItem>...</CarouselItem>\n      </CarouselContent>\n    </Carousel>\n  )\n}\n```\n\nSee the [Embla Carousel docs](https://www.embla-carousel.com/api/events/) for more information on using events.\n\n## Plugins\n\nYou can use the `plugins` prop to add plugins to the carousel.\n\n```ts showLineNumbers {1,6-10}\nimport Autoplay from \"embla-carousel-autoplay\"\n\nexport function Example() {\n  return (\n    <Carousel\n      plugins={[\n        Autoplay({\n          delay: 2000,\n        }),\n      ]}\n    >\n      // ...\n    </Carousel>\n  )\n}\n```\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"carousel-plugin\"\n  previewClassName=\"sm:h-[32rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"carousel-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-80 sm:h-[32rem]\"\n/>\n\nWhen localizing the carousel for RTL languages, you need to set the `direction` option in the `opts` prop to match the text direction. This ensures the carousel scrolls in the correct direction.\n\n```tsx showLineNumbers {2-5}\n<Carousel\n  dir={dir}\n  opts={{\n    direction: dir,\n  }}\n>\n  <CarouselContent>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n  </CarouselContent>\n  <CarouselPrevious className=\"rtl:rotate-180\" />\n  <CarouselNext className=\"rtl:rotate-180\" />\n</Carousel>\n```\n\nThe `direction` option accepts `\"ltr\"` or `\"rtl\"` and should match the `dir` prop value. You may also want to rotate the navigation buttons using the `rtl:rotate-180` class to ensure they point in the correct direction.\n\n## API Reference\n\nSee the [Embla Carousel docs](https://www.embla-carousel.com/api/) for more information on props and plugins.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/chart.mdx",
    "content": "---\ntitle: Chart\ndescription: Beautiful charts. Built using Recharts. Copy and paste into your apps.\nbase: base\ncomponent: true\n---\n\n<Callout>\n\n**Note:** We're working on upgrading to Recharts v3. In the meantime, if you'd like to start testing v3, see the code in the comment [here](https://github.com/shadcn-ui/ui/issues/7669#issuecomment-2998299159). We'll have an official release soon.\n\n</Callout>\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"chart-demo\"\n  className=\"theme-blue [&_.preview]:h-auto [&_.preview]:p-0 [&_.preview]:lg:min-h-[404px] [&_.preview>div]:w-full [&_.preview>div]:border-none [&_.preview>div]:shadow-none\"\n  hideCode\n/>\n\nIntroducing **Charts**. A collection of chart components that you can copy and paste into your apps.\n\nCharts are designed to look great out of the box. They work well with the other components and are fully customizable to fit your project.\n\n[Browse the Charts Library](/charts).\n\n## Component\n\nWe use [Recharts](https://recharts.org/) under the hood.\n\nWe designed the `chart` component with composition in mind. **You build your charts using Recharts components and only bring in custom components, such as `ChartTooltip`, when and where you need it**.\n\n```tsx showLineNumbers /ChartContainer/ /ChartTooltipContent/\nimport { Bar, BarChart } from \"recharts\"\n\nimport { ChartContainer, ChartTooltipContent } from \"@/components/ui/chart\"\n\nexport function MyChart() {\n  return (\n    <ChartContainer>\n      <BarChart data={data}>\n        <Bar dataKey=\"value\" />\n        <ChartTooltip content={<ChartTooltipContent />} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n```\n\nWe do not wrap Recharts. This means you're not locked into an abstraction. When a new Recharts version is released, you can follow the official upgrade path to upgrade your charts.\n\n**The components are yours**.\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add chart\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install recharts\n```\n\n<Step>Copy and paste the following code into `components/ui/chart.tsx`.</Step>\n\n<ComponentSource\n  name=\"chart\"\n  title=\"components/ui/chart.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Add the following colors to your CSS file</Step>\n\n```css title=\"app/globals.css\" showLineNumbers\n@layer base {\n  :root {\n    --chart-1: oklch(0.646 0.222 41.116);\n    --chart-2: oklch(0.6 0.118 184.704);\n    --chart-3: oklch(0.398 0.07 227.392);\n    --chart-4: oklch(0.828 0.189 84.429);\n    --chart-5: oklch(0.769 0.188 70.08);\n  }\n\n  .dark {\n    --chart-1: oklch(0.488 0.243 264.376);\n    --chart-2: oklch(0.696 0.17 162.48);\n    --chart-3: oklch(0.769 0.188 70.08);\n    --chart-4: oklch(0.627 0.265 303.9);\n    --chart-5: oklch(0.645 0.246 16.439);\n  }\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Your First Chart\n\nLet's build your first chart. We'll build a bar chart, add a grid, axis, tooltip and legend.\n\n<Steps>\n\n<Step>Start by defining your data</Step>\n\nThe following data represents the number of desktop and mobile users for each month.\n\n<Callout className=\"mt-4\">\n\n**Note:** Your data can be in any shape. You are not limited to the shape of the data below. Use the `dataKey` prop to map your data to the chart.\n\n</Callout>\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n```\n\n<Step>Define your chart config</Step>\n\nThe chart config holds configuration for the chart. This is where you place human-readable strings, such as labels, icons and color tokens for theming.\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nimport { type ChartConfig } from \"@/components/ui/chart\"\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n```\n\n<Step>Build your chart</Step>\n\nYou can now build your chart using Recharts components.\n\n<Callout className=\"mt-4 bg-amber-50 border-amber-200 dark:bg-amber-950/50 dark:border-amber-950\">\n\n**Important:** Remember to set a `min-h-[VALUE]` on the `ChartContainer` component. This is required for the chart to be responsive.\n\n</Callout>\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"chart-example\"\n  previewClassName=\"h-80\"\n/>\n\n</Steps>\n\n### Add a Grid\n\nLet's add a grid to the chart.\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Import the `CartesianGrid` component.</Step>\n\n```tsx /CartesianGrid/\nimport { Bar, BarChart, CartesianGrid } from \"recharts\"\n```\n\n<Step>Add the `CartesianGrid` component to your chart.</Step>\n\n```tsx showLineNumbers {3}\n<ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n  <BarChart accessibilityLayer data={chartData}>\n    <CartesianGrid vertical={false} />\n    <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n    <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n  </BarChart>\n</ChartContainer>\n```\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"chart-example-grid\"\n  previewClassName=\"h-80\"\n/>\n\n</Steps>\n\n### Add an Axis\n\nTo add an x-axis to the chart, we'll use the `XAxis` component.\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Import the `XAxis` component.</Step>\n\n```tsx /XAxis/\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n```\n\n<Step>Add the `XAxis` component to your chart.</Step>\n\n```tsx showLineNumbers {4-10}\n<ChartContainer config={chartConfig} className=\"h-[200px] w-full\">\n  <BarChart accessibilityLayer data={chartData}>\n    <CartesianGrid vertical={false} />\n    <XAxis\n      dataKey=\"month\"\n      tickLine={false}\n      tickMargin={10}\n      axisLine={false}\n      tickFormatter={(value) => value.slice(0, 3)}\n    />\n    <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n    <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n  </BarChart>\n</ChartContainer>\n```\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"chart-example-axis\"\n  previewClassName=\"h-80\"\n/>\n\n</Steps>\n\n### Add Tooltip\n\nSo far we've only used components from Recharts. They look great out of the box thanks to some customization in the `chart` component.\n\nTo add a tooltip, we'll use the custom `ChartTooltip` and `ChartTooltipContent` components from `chart`.\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Import the `ChartTooltip` and `ChartTooltipContent` components.</Step>\n\n```tsx\nimport { ChartTooltip, ChartTooltipContent } from \"@/components/ui/chart\"\n```\n\n<Step>Add the components to your chart.</Step>\n\n```tsx showLineNumbers {11}\n<ChartContainer config={chartConfig} className=\"h-[200px] w-full\">\n  <BarChart accessibilityLayer data={chartData}>\n    <CartesianGrid vertical={false} />\n    <XAxis\n      dataKey=\"month\"\n      tickLine={false}\n      tickMargin={10}\n      axisLine={false}\n      tickFormatter={(value) => value.slice(0, 3)}\n    />\n    <ChartTooltip content={<ChartTooltipContent />} />\n    <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n    <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n  </BarChart>\n</ChartContainer>\n```\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"chart-example-tooltip\"\n  previewClassName=\"h-80\"\n/>\n\nHover to see the tooltips. Easy, right? Two components, and we've got a beautiful tooltip.\n\n</Steps>\n\n### Add Legend\n\nWe'll do the same for the legend. We'll use the `ChartLegend` and `ChartLegendContent` components from `chart`.\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Import the `ChartLegend` and `ChartLegendContent` components.</Step>\n\n```tsx\nimport { ChartLegend, ChartLegendContent } from \"@/components/ui/chart\"\n```\n\n<Step>Add the components to your chart.</Step>\n\n```tsx showLineNumbers {12}\n<ChartContainer config={chartConfig} className=\"h-[200px] w-full\">\n  <BarChart accessibilityLayer data={chartData}>\n    <CartesianGrid vertical={false} />\n    <XAxis\n      dataKey=\"month\"\n      tickLine={false}\n      tickMargin={10}\n      axisLine={false}\n      tickFormatter={(value) => value.slice(0, 3)}\n    />\n    <ChartTooltip content={<ChartTooltipContent />} />\n    <ChartLegend content={<ChartLegendContent />} />\n    <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n    <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n  </BarChart>\n</ChartContainer>\n```\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"chart-example-legend\"\n  previewClassName=\"h-80\"\n/>\n\n</Steps>\n\nDone. You've built your first chart! What's next?\n\n- [Themes and Colors](/docs/components/chart#theming)\n- [Tooltip](/docs/components/chart#tooltip)\n- [Legend](/docs/components/chart#legend)\n\n## Chart Config\n\nThe chart config is where you define the labels, icons and colors for a chart.\n\nIt is intentionally decoupled from chart data.\n\nThis allows you to share config and color tokens between charts. It can also work independently for cases where your data or color tokens live remotely or in a different format.\n\n```tsx showLineNumbers /ChartConfig/\nimport { Monitor } from \"lucide-react\"\n\nimport { type ChartConfig } from \"@/components/ui/chart\"\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    icon: Monitor,\n    // A color like 'hsl(220, 98%, 61%)' or 'var(--color-name)'\n    color: \"#2563eb\",\n    // OR a theme object with 'light' and 'dark' keys\n    theme: {\n      light: \"#2563eb\",\n      dark: \"#dc2626\",\n    },\n  },\n} satisfies ChartConfig\n```\n\n## Theming\n\nCharts have built-in support for theming. You can use css variables (recommended) or color values in any color format, such as hex, hsl or oklch.\n\n### CSS Variables\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Define your colors in your css file</Step>\n\n```css title=\"app/globals.css\" showLineNumbers\n@layer base {\n  :root {\n    --chart-1: oklch(0.646 0.222 41.116);\n    --chart-2: oklch(0.6 0.118 184.704);\n  }\n\n  .dark {\n    --chart-1: oklch(0.488 0.243 264.376);\n    --chart-2: oklch(0.696 0.17 162.48);\n  }\n}\n```\n\n<Step>Add the color to your `chartConfig`</Step>\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n</Steps>\n\n### hex, hsl or oklch\n\nYou can also define your colors directly in the chart config. Use the color format you prefer.\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"hsl(220, 98%, 61%)\",\n  },\n  tablet: {\n    label: \"Tablet\",\n    color: \"oklch(0.5 0.2 240)\",\n  },\n  laptop: {\n    label: \"Laptop\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n### Using Colors\n\nTo use the theme colors in your chart, reference the colors using the format `var(--color-KEY)`.\n\n#### Components\n\n```tsx\n<Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" />\n```\n\n#### Chart Data\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n]\n```\n\n#### Tailwind\n\n```tsx title=\"components/example-chart.tsx\"\n<LabelList className=\"fill-[--color-desktop]\" />\n```\n\n## Tooltip\n\nA chart tooltip contains a label, name, indicator and value. You can use a combination of these to customize your tooltip.\n\n<ComponentPreview styleName=\"base-nova\" name=\"chart-tooltip\" hideCode />\n\nYou can turn on/off any of these using the `hideLabel`, `hideIndicator` props and customize the indicator style using the `indicator` prop.\n\nUse `labelKey` and `nameKey` to use a custom key for the tooltip label and name.\n\nChart comes with the `<ChartTooltip>` and `<ChartTooltipContent>` components. You can use these two components to add custom tooltips to your chart.\n\n```tsx title=\"components/example-chart.tsx\"\nimport { ChartTooltip, ChartTooltipContent } from \"@/components/ui/chart\"\n```\n\n```tsx title=\"components/example-chart.tsx\"\n<ChartTooltip content={<ChartTooltipContent />} />\n```\n\n### Props\n\nUse the following props to customize the tooltip.\n\n| Prop            | Type                     | Description                                  |\n| :-------------- | :----------------------- | :------------------------------------------- |\n| `labelKey`      | string                   | The config or data key to use for the label. |\n| `nameKey`       | string                   | The config or data key to use for the name.  |\n| `indicator`     | `dot` `line` or `dashed` | The indicator style for the tooltip.         |\n| `hideLabel`     | boolean                  | Whether to hide the label.                   |\n| `hideIndicator` | boolean                  | Whether to hide the indicator.               |\n\n### Colors\n\nColors are automatically referenced from the chart config.\n\n### Custom\n\nTo use a custom key for tooltip label and names, use the `labelKey` and `nameKey` props.\n\n```tsx showLineNumbers /browser/\nconst chartData = [\n  { browser: \"chrome\", visitors: 187, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Total Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n```tsx title=\"components/example-chart.tsx\"\n<ChartTooltip\n  content={<ChartTooltipContent labelKey=\"visitors\" nameKey=\"browser\" />}\n/>\n```\n\nThis will use `Total Visitors` for label and `Chrome` and `Safari` for the tooltip names.\n\n## Legend\n\nYou can use the custom `<ChartLegend>` and `<ChartLegendContent>` components to add a legend to your chart.\n\n```tsx title=\"components/example-chart.tsx\"\nimport { ChartLegend, ChartLegendContent } from \"@/components/ui/chart\"\n```\n\n```tsx title=\"components/example-chart.tsx\"\n<ChartLegend content={<ChartLegendContent />} />\n```\n\n### Colors\n\nColors are automatically referenced from the chart config.\n\n### Custom\n\nTo use a custom key for legend names, use the `nameKey` prop.\n\n```tsx showLineNumbers /browser/\nconst chartData = [\n  { browser: \"chrome\", visitors: 187, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n]\n\nconst chartConfig = {\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n```tsx title=\"components/example-chart.tsx\"\n<ChartLegend content={<ChartLegendContent nameKey=\"browser\" />} />\n```\n\nThis will use `Chrome` and `Safari` for the legend names.\n\n## Accessibility\n\nYou can turn on the `accessibilityLayer` prop to add an accessible layer to your chart.\n\nThis prop adds keyboard access and screen reader support to your charts.\n\n```tsx title=\"components/example-chart.tsx\"\n<LineChart accessibilityLayer />\n```\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"chart-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-92\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/checkbox.mdx",
    "content": "---\ntitle: Checkbox\ndescription: A control that allows the user to toggle between checked and not checked.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/checkbox\n  api: https://base-ui.com/react/components/checkbox#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"checkbox-demo\"\n  previewClassName=\"h-80\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add checkbox\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"checkbox\"\n  title=\"components/ui/checkbox.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Checkbox } from \"@/components/ui/checkbox\"\n```\n\n```tsx\n<Checkbox />\n```\n\n## Checked State\n\nUse `defaultChecked` for uncontrolled checkboxes, or `checked` and\n`onCheckedChange` to control the state.\n\n```tsx showLineNumbers\nimport * as React from \"react\"\n\nexport function Example() {\n  const [checked, setChecked] = React.useState(false)\n\n  return <Checkbox checked={checked} onCheckedChange={setChecked} />\n}\n```\n\n## Invalid State\n\nSet `aria-invalid` on the checkbox and `data-invalid` on the field wrapper to\nshow the invalid styles.\n\n<ComponentPreview styleName=\"base-nova\" name=\"checkbox-invalid\" />\n\n## Examples\n\n### Basic\n\nPair the checkbox with `Field` and `FieldLabel` for proper layout and labeling.\n\n<ComponentPreview styleName=\"base-nova\" name=\"checkbox-basic\" />\n\n### Description\n\nUse `FieldContent` and `FieldDescription` for helper text.\n\n<ComponentPreview styleName=\"base-nova\" name=\"checkbox-description\" />\n\n### Disabled\n\nUse the `disabled` prop to prevent interaction and add the `data-disabled` attribute to the `<Field>` component for disabled styles.\n\n<ComponentPreview styleName=\"base-nova\" name=\"checkbox-disabled\" />\n\n### Group\n\nUse multiple fields to create a checkbox list.\n\n<ComponentPreview styleName=\"base-nova\" name=\"checkbox-group\" />\n\n### Table\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"checkbox-table\"\n  previewClassName=\"p-4 md:p-8\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"checkbox-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-80\"\n/>\n\n## API Reference\n\nSee the [Base UI](https://base-ui.com/react/components/checkbox#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/collapsible.mdx",
    "content": "---\ntitle: Collapsible\ndescription: An interactive component which expands/collapses a panel.\nbase: base\ncomponent: true\nfeatured: true\nlinks:\n  doc: https://base-ui.com/react/components/collapsible\n  api: https://base-ui.com/react/components/collapsible#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"collapsible-demo\" align=\"start\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add collapsible\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"collapsible\"\n  title=\"components/ui/collapsible.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/components/ui/collapsible\"\n```\n\n```tsx showLineNumbers\n<Collapsible>\n  <CollapsibleTrigger>Can I use this in my project?</CollapsibleTrigger>\n  <CollapsibleContent>\n    Yes. Free to use for personal and commercial projects. No attribution\n    required.\n  </CollapsibleContent>\n</Collapsible>\n```\n\n## Controlled State\n\nUse the `open` and `onOpenChange` props to control the state.\n\n```tsx showLineNumbers\nimport * as React from \"react\"\n\nexport function Example() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Collapsible open={open} onOpenChange={setOpen}>\n      <CollapsibleTrigger>Toggle</CollapsibleTrigger>\n      <CollapsibleContent>Content</CollapsibleContent>\n    </Collapsible>\n  )\n}\n```\n\n## Examples\n\n### Basic\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"collapsible-basic\"\n  align=\"start\"\n/>\n\n### Settings Panel\n\nUse a trigger button to reveal additional settings.\n\n<ComponentPreview styleName=\"base-nova\" name=\"collapsible-settings\" />\n\n### File Tree\n\nUse nested collapsibles to build a file tree.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"collapsible-file-tree\"\n  previewClassName=\"h-[36rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"collapsible-rtl\"\n  direction=\"rtl\"\n  align=\"start\"\n/>\n\n## API Reference\n\nSee the [Base UI](https://base-ui.com/react/components/collapsible#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/combobox.mdx",
    "content": "---\ntitle: Combobox\ndescription: Autocomplete input with a list of suggestions.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/combobox\n  api: https://base-ui.com/react/components/combobox#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"combobox-demo\"\n  description=\"A combobox with a list of frameworks.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add combobox\n```\n\n</TabsContent>\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"combobox\"\n  title=\"components/ui/combobox.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/components/ui/combobox\"\n```\n\n```tsx showLineNumbers\nconst frameworks = [\"Next.js\", \"SvelteKit\", \"Nuxt.js\", \"Remix\", \"Astro\"]\n\nexport function ExampleCombobox() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n```\n\n## Custom Items\n\nUse `itemToStringValue` when your items are objects.\n\n```tsx showLineNumbers\nimport * as React from \"react\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/components/ui/combobox\"\n\ntype Framework = {\n  label: string\n  value: string\n}\n\nconst frameworks: Framework[] = [\n  { label: \"Next.js\", value: \"next\" },\n  { label: \"SvelteKit\", value: \"sveltekit\" },\n  { label: \"Nuxt\", value: \"nuxt\" },\n]\n\nexport function ExampleComboboxCustomItems() {\n  return (\n    <Combobox\n      items={frameworks}\n      itemToStringValue={(framework) => framework.label}\n    >\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(framework) => (\n            <ComboboxItem key={framework.value} value={framework}>\n              {framework.label}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n```\n\n## Multiple Selection\n\nUse `multiple` with chips for multi-select behavior.\n\n```tsx showLineNumbers\nimport * as React from \"react\"\n\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxValue,\n} from \"@/components/ui/combobox\"\n\nconst frameworks = [\"Next.js\", \"SvelteKit\", \"Nuxt.js\", \"Remix\", \"Astro\"]\n\nexport function ExampleComboboxMultiple() {\n  const [value, setValue] = React.useState<string[]>([])\n\n  return (\n    <Combobox\n      items={frameworks}\n      multiple\n      value={value}\n      onValueChange={setValue}\n    >\n      <ComboboxChips>\n        <ComboboxValue>\n          {value.map((item) => (\n            <ComboboxChip key={item}>{item}</ComboboxChip>\n          ))}\n        </ComboboxValue>\n        <ComboboxChipsInput placeholder=\"Add framework\" />\n      </ComboboxChips>\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n```\n\n## Examples\n\n### Basic\n\nA simple combobox with a list of frameworks.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-basic\" />\n\n### Multiple\n\nA combobox with multiple selection using `multiple` and `ComboboxChips`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-multiple\" />\n\n### Clear Button\n\nUse the `showClear` prop to show a clear button.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-clear\" />\n\n### Groups\n\nUse `ComboboxGroup` and `ComboboxSeparator` to group items.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-groups\" />\n\n### Custom Items\n\nYou can render a custom component inside `ComboboxItem`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-custom\" />\n\n### Invalid\n\nUse the `aria-invalid` prop to make the combobox invalid.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-invalid\" />\n\n### Disabled\n\nUse the `disabled` prop to disable the combobox.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-disabled\" />\n\n### Auto Highlight\n\nUse the `autoHighlight` prop to automatically highlight the first item on filter.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-auto-highlight\" />\n\n### Popup\n\nYou can trigger the combobox from a button or any other component by using the `render` prop. Move the `ComboboxInput` inside the `ComboboxContent`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-popup\" />\n\n### Input Group\n\nYou can add an addon to the combobox by using the `InputGroupAddon` component inside the `ComboboxInput`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-input-group\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"combobox-rtl\"\n  direction=\"rtl\"\n  align=\"start\"\n/>\n\n## API Reference\n\nSee the [Base UI](https://base-ui.com/react/components/combobox#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/command.mdx",
    "content": "---\ntitle: Command\ndescription: Command menu for search and quick actions.\nbase: base\ncomponent: true\nlinks:\n  doc: https://github.com/dip/cmdk\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"command-demo\"\n  align=\"start\"\n  previewClassName=\"h-[24.5rem]\"\n/>\n\n## About\n\nThe `<Command />` component uses the [`cmdk`](https://github.com/dip/cmdk) component by [Dip](https://www.dip.org/).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add command\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install cmdk\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"command\"\n  title=\"components/ui/command.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/components/ui/command\"\n```\n\n```tsx showLineNumbers\n<Command className=\"max-w-sm rounded-lg border\">\n  <CommandInput placeholder=\"Type a command or search...\" />\n  <CommandList>\n    <CommandEmpty>No results found.</CommandEmpty>\n    <CommandGroup heading=\"Suggestions\">\n      <CommandItem>Calendar</CommandItem>\n      <CommandItem>Search Emoji</CommandItem>\n      <CommandItem>Calculator</CommandItem>\n    </CommandGroup>\n    <CommandSeparator />\n    <CommandGroup heading=\"Settings\">\n      <CommandItem>Profile</CommandItem>\n      <CommandItem>Billing</CommandItem>\n      <CommandItem>Settings</CommandItem>\n    </CommandGroup>\n  </CommandList>\n</Command>\n```\n\n## Examples\n\n### Basic\n\nA simple command menu in a dialog.\n\n<ComponentPreview styleName=\"base-nova\" name=\"command-basic\" />\n\n### Shortcuts\n\n<ComponentPreview styleName=\"base-nova\" name=\"command-shortcuts\" />\n\n### Groups\n\nA command menu with groups, icons and separators.\n\n<ComponentPreview styleName=\"base-nova\" name=\"command-groups\" />\n\n### Scrollable\n\nScrollable command menu with multiple items.\n\n<ComponentPreview styleName=\"base-nova\" name=\"command-scrollable\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"command-rtl\"\n  direction=\"rtl\"\n  align=\"start\"\n  previewClassName=\"h-[24.5rem]\"\n/>\n\n## API Reference\n\nSee the [cmdk](https://github.com/dip/cmdk) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/context-menu.mdx",
    "content": "---\ntitle: Context Menu\ndescription: Displays a menu of actions triggered by a right click.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/context-menu\n  api: https://base-ui.com/react/components/context-menu#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"context-menu-demo\"\n  description=\"A context menu with sub menu items.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add context-menu\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"context-menu\"\n  title=\"components/ui/context-menu.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuTrigger,\n} from \"@/components/ui/context-menu\"\n```\n\n```tsx showLineNumbers\n<ContextMenu>\n  <ContextMenuTrigger>Right click here</ContextMenuTrigger>\n  <ContextMenuContent>\n    <ContextMenuItem>Profile</ContextMenuItem>\n    <ContextMenuItem>Billing</ContextMenuItem>\n    <ContextMenuItem>Team</ContextMenuItem>\n    <ContextMenuItem>Subscription</ContextMenuItem>\n  </ContextMenuContent>\n</ContextMenu>\n```\n\n## Examples\n\n### Basic\n\nA simple context menu with a few actions.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-basic\" />\n\n### Submenu\n\nUse `ContextMenuSub` to nest secondary actions.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-submenu\" />\n\n### Shortcuts\n\nAdd `ContextMenuShortcut` to show keyboard hints.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-shortcuts\" />\n\n### Groups\n\nGroup related actions and separate them with dividers.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-groups\" />\n\n### Icons\n\nCombine icons with labels for quick scanning.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-icons\" />\n\n### Checkboxes\n\nUse `ContextMenuCheckboxItem` for toggles.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-checkboxes\" />\n\n### Radio\n\nUse `ContextMenuRadioItem` for exclusive choices.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-radio\" />\n\n### Destructive\n\nUse `variant=\"destructive\"` to style the menu item as destructive.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-destructive\" />\n\n### Sides\n\nControl submenu placement with side and align props.\n\n<ComponentPreview styleName=\"base-nova\" name=\"context-menu-sides\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"context-menu-rtl\"\n  direction=\"rtl\"\n/>\n\nUse `side=\"inline-end\"` to place the menu on the logical right side of the trigger.\n\n```tsx showLineNumbers\n<ContextMenu>\n  <ContextMenuTrigger>Right click here</ContextMenuTrigger>\n  <ContextMenuContent side=\"inline-end\">\n    <ContextMenuItem>Profile</ContextMenuItem>\n    <ContextMenuItem>Billing</ContextMenuItem>\n    <ContextMenuItem>Team</ContextMenuItem>\n    <ContextMenuItem>Subscription</ContextMenuItem>\n  </ContextMenuContent>\n</ContextMenu>\n```\n\n## API Reference\n\nSee the [Base UI](https://base-ui.com/react/components/context-menu#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/data-table.mdx",
    "content": "---\ntitle: Data Table\ndescription: Powerful table and datagrids built using TanStack Table.\nbase: base\ncomponent: true\nlinks:\n  doc: https://tanstack.com/table/v8/docs/introduction\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"data-table-demo\"\n  align=\"start\"\n  previewClassName=\"items-start h-auto px-4 md:px-8\"\n  hideCode\n/>\n\n## Introduction\n\nEvery data table or datagrid I've created has been unique. They all behave differently, have specific sorting and filtering requirements, and work with different data sources.\n\nIt doesn't make sense to combine all of these variations into a single component. If we do that, we'll lose the flexibility that [headless UI](https://tanstack.com/table/v8/docs/introduction#what-is-headless-ui) provides.\n\nSo instead of a data-table component, I thought it would be more helpful to provide a guide on how to build your own.\n\nWe'll start with the basic `<Table />` component and build a complex data table from scratch.\n\n<Callout className=\"mt-4\">\n\n**Tip:** If you find yourself using the same table in multiple places in your app, you can always extract it into a reusable component.\n\n</Callout>\n\n## Table of Contents\n\nThis guide will show you how to use [TanStack Table](https://tanstack.com/table) and the `<Table />` component to build your own custom data table. We'll cover the following topics:\n\n- [Basic Table](#basic-table)\n- [Row Actions](#row-actions)\n- [Pagination](#pagination)\n- [Sorting](#sorting)\n- [Filtering](#filtering)\n- [Visibility](#visibility)\n- [Row Selection](#row-selection)\n- [Reusable Components](#reusable-components)\n\n## Installation\n\n1. Add the `<Table />` component to your project:\n\n```bash\nnpx shadcn@latest add table\n```\n\n2. Add `tanstack/react-table` dependency:\n\n```bash\nnpm install @tanstack/react-table\n```\n\n## Prerequisites\n\nWe are going to build a table to show recent payments. Here's what our data looks like:\n\n```tsx showLineNumbers\ntype Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nexport const payments: Payment[] = [\n  {\n    id: \"728ed52f\",\n    amount: 100,\n    status: \"pending\",\n    email: \"m@example.com\",\n  },\n  {\n    id: \"489e1d42\",\n    amount: 125,\n    status: \"processing\",\n    email: \"example@gmail.com\",\n  },\n  // ...\n]\n```\n\n## Project Structure\n\nStart by creating the following file structure:\n\n```txt\napp\n└── payments\n    ├── columns.tsx\n    ├── data-table.tsx\n    └── page.tsx\n```\n\nI'm using a Next.js example here but this works for any other React framework.\n\n- `columns.tsx` (client component) will contain our column definitions.\n- `data-table.tsx` (client component) will contain our `<DataTable />` component.\n- `page.tsx` (server component) is where we'll fetch data and render our table.\n\n## Basic Table\n\nLet's start by building a basic table.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Column Definitions\n\nFirst, we'll define our columns.\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {3,14-27}\n\"use client\"\n\nimport { ColumnDef } from \"@tanstack/react-table\"\n\n// This type is used to define the shape of our data.\n// You can use a Zod schema here if you want.\nexport type Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n  },\n  {\n    accessorKey: \"email\",\n    header: \"Email\",\n  },\n  {\n    accessorKey: \"amount\",\n    header: \"Amount\",\n  },\n]\n```\n\n<Callout className=\"mt-4\">\n\n**Note:** Columns are where you define the core of what your table\nwill look like. They define the data that will be displayed, how it will be\nformatted, sorted and filtered.\n\n</Callout>\n\n### `<DataTable />` component\n\nNext, we'll create a `<DataTable />` component to render our table.\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\"\n\"use client\"\n\nimport {\n  ColumnDef,\n  flexRender,\n  getCoreRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/components/ui/table\"\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[]\n  data: TData[]\n}\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n  })\n\n  return (\n    <div className=\"overflow-hidden rounded-md border\">\n      <Table>\n        <TableHeader>\n          {table.getHeaderGroups().map((headerGroup) => (\n            <TableRow key={headerGroup.id}>\n              {headerGroup.headers.map((header) => {\n                return (\n                  <TableHead key={header.id}>\n                    {header.isPlaceholder\n                      ? null\n                      : flexRender(\n                          header.column.columnDef.header,\n                          header.getContext()\n                        )}\n                  </TableHead>\n                )\n              })}\n            </TableRow>\n          ))}\n        </TableHeader>\n        <TableBody>\n          {table.getRowModel().rows?.length ? (\n            table.getRowModel().rows.map((row) => (\n              <TableRow\n                key={row.id}\n                data-state={row.getIsSelected() && \"selected\"}\n              >\n                {row.getVisibleCells().map((cell) => (\n                  <TableCell key={cell.id}>\n                    {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                  </TableCell>\n                ))}\n              </TableRow>\n            ))\n          ) : (\n            <TableRow>\n              <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n                No results.\n              </TableCell>\n            </TableRow>\n          )}\n        </TableBody>\n      </Table>\n    </div>\n  )\n}\n```\n\n<Callout>\n\n**Tip**: If you find yourself using `<DataTable />` in multiple places, this is the component you could make reusable by extracting it to `components/ui/data-table.tsx`.\n\n`<DataTable columns={columns} data={data} />`\n\n</Callout>\n\n### Render the table\n\nFinally, we'll render our table in our page component.\n\n```tsx showLineNumbers title=\"app/payments/page.tsx\" {22}\nimport { columns, Payment } from \"./columns\"\nimport { DataTable } from \"./data-table\"\n\nasync function getData(): Promise<Payment[]> {\n  // Fetch data from your API here.\n  return [\n    {\n      id: \"728ed52f\",\n      amount: 100,\n      status: \"pending\",\n      email: \"m@example.com\",\n    },\n    // ...\n  ]\n}\n\nexport default async function DemoPage() {\n  const data = await getData()\n\n  return (\n    <div className=\"container mx-auto py-10\">\n      <DataTable columns={columns} data={data} />\n    </div>\n  )\n}\n```\n\n</Steps>\n\n## Cell Formatting\n\nLet's format the amount cell to display the dollar amount. We'll also align the cell to the right.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update columns definition\n\nUpdate the `header` and `cell` definitions for amount as follows:\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {4-15}\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    accessorKey: \"amount\",\n    header: () => <div className=\"text-right\">Amount</div>,\n    cell: ({ row }) => {\n      const amount = parseFloat(row.getValue(\"amount\"))\n      const formatted = new Intl.NumberFormat(\"en-US\", {\n        style: \"currency\",\n        currency: \"USD\",\n      }).format(amount)\n\n      return <div className=\"text-right font-medium\">{formatted}</div>\n    },\n  },\n]\n```\n\nYou can use the same approach to format other cells and headers.\n\n</Steps>\n\n## Row Actions\n\nLet's add row actions to our table. We'll use a `<DropdownMenu />` component for this.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update columns definition\n\nUpdate our columns definition to add a new `actions` column. The `actions` cell returns a `<DropdownMenu />` component.\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {4,6-14,18-45}\n\"use client\"\n\nimport { ColumnDef } from \"@tanstack/react-table\"\nimport { MoreHorizontal } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nexport const columns: ColumnDef<Payment>[] = [\n  // ...\n  {\n    id: \"actions\",\n    cell: ({ row }) => {\n      const payment = row.original\n\n      return (\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"ghost\" className=\"h-8 w-8 p-0\">\n              <span className=\"sr-only\">Open menu</span>\n              <MoreHorizontal className=\"h-4 w-4\" />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\">\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\n            <DropdownMenuItem\n              onClick={() => navigator.clipboard.writeText(payment.id)}\n            >\n              Copy payment ID\n            </DropdownMenuItem>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>View customer</DropdownMenuItem>\n            <DropdownMenuItem>View payment details</DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      )\n    },\n  },\n  // ...\n]\n```\n\nYou can access the row data using `row.original` in the `cell` function. Use this to handle actions for your row eg. use the `id` to make a DELETE call to your API.\n\n</Steps>\n\n## Pagination\n\nNext, we'll add pagination to our table.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {5,17}\nimport {\n  ColumnDef,\n  flexRender,\n  getCoreRowModel,\n  getPaginationRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n  })\n\n  // ...\n}\n```\n\nThis will automatically paginate your rows into pages of 10. See the [pagination docs](https://tanstack.com/table/v8/docs/api/features/pagination) for more information on customizing page size and implementing manual pagination.\n\n### Add pagination controls\n\nWe can add pagination controls to our table using the `<Button />` component and the `table.previousPage()`, `table.nextPage()` API methods.\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {1,15,21-39}\nimport { Button } from \"@/components/ui/button\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n  })\n\n  return (\n    <div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>\n          { // .... }\n        </Table>\n      </div>\n      <div className=\"flex items-center justify-end space-x-2 py-4\">\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => table.previousPage()}\n          disabled={!table.getCanPreviousPage()}\n        >\n          Previous\n        </Button>\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => table.nextPage()}\n          disabled={!table.getCanNextPage()}\n        >\n          Next\n        </Button>\n      </div>\n    </div>\n  )\n}\n```\n\nSee [Reusable Components](#reusable-components) section for a more advanced pagination component.\n\n</Steps>\n\n## Sorting\n\nLet's make the email column sortable.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {3,6,10,18,25-29}\n\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ColumnDef,\n  SortingState,\n  flexRender,\n  getCoreRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    onSortingChange: setSorting,\n    getSortedRowModel: getSortedRowModel(),\n    state: {\n      sorting,\n    },\n  })\n\n  return (\n    <div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>{ ... }</Table>\n      </div>\n    </div>\n  )\n}\n```\n\n### Make header cell sortable\n\nWe can now update the `email` header cell to add sorting controls.\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {4,9-19}\n\"use client\"\n\nimport { ColumnDef } from \"@tanstack/react-table\"\nimport { ArrowUpDown } from \"lucide-react\"\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    accessorKey: \"email\",\n    header: ({ column }) => {\n      return (\n        <Button\n          variant=\"ghost\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n        >\n          Email\n          <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n        </Button>\n      )\n    },\n  },\n]\n```\n\nThis will automatically sort the table (asc and desc) when the user toggles on the header cell.\n\n</Steps>\n\n## Filtering\n\nLet's add a search input to filter emails in our table.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {6,10,17,24-26,35-36,39,45-54}\n\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ColumnDef,\n  ColumnFiltersState,\n  SortingState,\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    onColumnFiltersChange: setColumnFilters,\n    getFilteredRowModel: getFilteredRowModel(),\n    state: {\n      sorting,\n      columnFilters,\n    },\n  })\n\n  return (\n    <div>\n      <div className=\"flex items-center py-4\">\n        <Input\n          placeholder=\"Filter emails...\"\n          value={(table.getColumn(\"email\")?.getFilterValue() as string) ?? \"\"}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>{ ... }</Table>\n      </div>\n    </div>\n  )\n}\n```\n\nFiltering is now enabled for the `email` column. You can add filters to other columns as well. See the [filtering docs](https://tanstack.com/table/v8/docs/guide/filters) for more information on customizing filters.\n\n</Steps>\n\n## Visibility\n\nAdding column visibility is fairly simple using `@tanstack/react-table` visibility API.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {8,18-23,33-34,45,49,64-91}\n\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ColumnDef,\n  ColumnFiltersState,\n  SortingState,\n  VisibilityState,\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n    },\n  })\n\n  return (\n    <div>\n      <div className=\"flex items-center py-4\">\n        <Input\n          placeholder=\"Filter emails...\"\n          value={table.getColumn(\"email\")?.getFilterValue() as string}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" className=\"ml-auto\">\n              Columns\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\">\n            {table\n              .getAllColumns()\n              .filter(\n                (column) => column.getCanHide()\n              )\n              .map((column) => {\n                return (\n                  <DropdownMenuCheckboxItem\n                    key={column.id}\n                    className=\"capitalize\"\n                    checked={column.getIsVisible()}\n                    onCheckedChange={(value) =>\n                      column.toggleVisibility(!!value)\n                    }\n                  >\n                    {column.id}\n                  </DropdownMenuCheckboxItem>\n                )\n              })}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>{ ... }</Table>\n      </div>\n    </div>\n  )\n}\n```\n\nThis adds a dropdown menu that you can use to toggle column visibility.\n\n</Steps>\n\n## Row Selection\n\nNext, we're going to add row selection to our table.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update column definitions\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {6,9-27}\n\"use client\"\n\nimport { ColumnDef } from \"@tanstack/react-table\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <Checkbox\n        checked={\n          table.getIsAllPageRowsSelected() ||\n          (table.getIsSomePageRowsSelected() && \"indeterminate\")\n        }\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n        aria-label=\"Select all\"\n      />\n    ),\n    cell: ({ row }) => (\n      <Checkbox\n        checked={row.getIsSelected()}\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\n        aria-label=\"Select row\"\n      />\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n]\n```\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {11,23,28}\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [rowSelection, setRowSelection] = React.useState({})\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  })\n\n  return (\n    <div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table />\n      </div>\n    </div>\n  )\n}\n```\n\nThis adds a checkbox to each row and a checkbox in the header to select all rows.\n\n### Show selected rows\n\nYou can show the number of selected rows using the `table.getFilteredSelectedRowModel()` API.\n\n```tsx\n<div className=\"flex-1 text-sm text-muted-foreground\">\n  {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n  {table.getFilteredRowModel().rows.length} row(s) selected.\n</div>\n```\n\n</Steps>\n\n## Reusable Components\n\nHere are some components you can use to build your data tables. This is from the [Tasks](/examples/tasks) demo.\n\n### Column header\n\nMake any column header sortable and hideable.\n\n<ComponentSource\n  src=\"/app/(app)/examples/tasks/components/data-table-column-header.tsx\"\n  title=\"components/data-table-column-header.tsx\"\n/>\n\n```tsx showLineNumbers {5}\nexport const columns = [\n  {\n    accessorKey: \"email\",\n    header: ({ column }) => (\n      <DataTableColumnHeader column={column} title=\"Email\" />\n    ),\n  },\n]\n```\n\n### Pagination\n\nAdd pagination controls to your table including page size and selection count.\n\n<ComponentSource\n  src=\"/app/(app)/examples/tasks/components/data-table-pagination.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n```tsx\n<DataTablePagination table={table} />\n```\n\n### Column toggle\n\nA component to toggle column visibility.\n\n<ComponentSource\n  src=\"/app/(app)/examples/tasks/components/data-table-view-options.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n```tsx\n<DataTableViewOptions table={table} />\n```\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"data-table-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"items-start h-auto px-4 md:px-8\"\n  hideCode\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/date-picker.mdx",
    "content": "---\ntitle: Date Picker\ndescription: A date picker component with range and presets.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"date-picker-demo\" />\n\n## Installation\n\nThe Date Picker is built using a composition of the `<Popover />` and the `<Calendar />` components.\n\nSee installation instructions for the [Popover](/docs/components/base/popover#installation) and the [Calendar](/docs/components/base/calendar#installation) components.\n\n## Usage\n\n```tsx showLineNumbers title=\"components/example-date-picker.tsx\"\n\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { Calendar as CalendarIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\n\nexport function DatePickerDemo() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Popover>\n      <PopoverTrigger\n        render={\n          <Button\n            variant=\"outline\"\n            data-empty={!date}\n            className=\"justify-start text-left font-normal data-[empty=true]:text-muted-foreground\"\n          />\n        }\n      >\n        <CalendarIcon />\n        {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\">\n        <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n      </PopoverContent>\n    </Popover>\n  )\n}\n```\n\nSee the [React DayPicker](https://react-day-picker.js.org) documentation for more information.\n\n## Examples\n\n### Basic\n\nA basic date picker component.\n\n<ComponentPreview styleName=\"base-nova\" name=\"date-picker-basic\" />\n\n### Range Picker\n\nA date picker component for selecting a range of dates.\n\n<ComponentPreview styleName=\"base-nova\" name=\"date-picker-range\" />\n\n### Date of Birth\n\nA date picker component for selecting a date of birth. This component includes a dropdown caption layout for date and month selection.\n\n<ComponentPreview styleName=\"base-nova\" name=\"date-picker-dob\" />\n\n### Input\n\nA date picker component with an input field for selecting a date.\n\n<ComponentPreview styleName=\"base-nova\" name=\"date-picker-input\" />\n\n### Time Picker\n\nA date picker component with a time input field for selecting a time.\n\n<ComponentPreview styleName=\"base-nova\" name=\"date-picker-time\" />\n\n### Natural Language Picker\n\nThis component uses the `chrono-node` library to parse natural language dates.\n\n<ComponentPreview styleName=\"base-nova\" name=\"date-picker-natural-language\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"date-picker-rtl\"\n  direction=\"rtl\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/dialog.mdx",
    "content": "---\ntitle: Dialog\ndescription: A window overlaid on either the primary window or another dialog window, rendering the content underneath inert.\nfeatured: true\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/dialog\n  api: https://base-ui.com/react/components/dialog#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"dialog-demo\"\n  description=\"A dialog for editing profile details.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add dialog\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"dialog\"\n  title=\"components/ui/dialog.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\n```\n\n```tsx showLineNumbers\n<Dialog>\n  <DialogTrigger>Open</DialogTrigger>\n  <DialogContent>\n    <DialogHeader>\n      <DialogTitle>Are you absolutely sure?</DialogTitle>\n      <DialogDescription>\n        This action cannot be undone. This will permanently delete your account\n        and remove your data from our servers.\n      </DialogDescription>\n    </DialogHeader>\n  </DialogContent>\n</Dialog>\n```\n\n## Examples\n\n### Custom Close Button\n\nReplace the default close control with your own button.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dialog-close-button\" />\n\n### No Close Button\n\nUse `showCloseButton={false}` to hide the close button.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dialog-no-close-button\" />\n\n### Sticky Footer\n\nKeep actions visible while the content scrolls.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dialog-sticky-footer\" />\n\n### Scrollable Content\n\nLong content can scroll while the header stays in view.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dialog-scrollable-content\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"dialog-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI](https://base-ui.com/react/components/dialog#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/direction.mdx",
    "content": "---\ntitle: Direction\ndescription: A provider component that sets the text direction for your application.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/utils/direction-provider\n  api: https://base-ui.com/react/utils/direction-provider#api-reference\n---\n\nThe `DirectionProvider` component is used to set the text direction (`ltr` or `rtl`) for your application. This is essential for supporting right-to-left languages like Arabic, Hebrew, and Persian.\n\nHere's a preview of the component in RTL mode. Use the language selector to switch the language. To see more examples, look for the RTL section on components pages.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"card-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto\"\n  hideCode\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add direction\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"direction\"\n  title=\"components/ui/direction.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { DirectionProvider } from \"@/components/ui/direction\"\n```\n\n```tsx showLineNumbers\n<html dir=\"rtl\">\n  <body>\n    <DirectionProvider direction=\"rtl\">\n      {/* Your app content */}\n    </DirectionProvider>\n  </body>\n</html>\n```\n\n## useDirection\n\nThe `useDirection` hook is used to get the current direction of the application.\n\n```tsx showLineNumbers\nimport { useDirection } from \"@/components/ui/direction\"\n\nfunction MyComponent() {\n  const direction = useDirection()\n  return <div>Current direction: {direction}</div>\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/drawer.mdx",
    "content": "---\ntitle: Drawer\ndescription: A drawer component for React.\nbase: base\ncomponent: true\nlinks:\n  doc: https://vaul.emilkowal.ski/getting-started\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"drawer-demo\" />\n\n## About\n\nDrawer is built on top of [Vaul](https://github.com/emilkowalski/vaul) by [emilkowalski](https://twitter.com/emilkowalski).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add drawer\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install vaul\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"drawer\"\n  title=\"components/ui/drawer.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/components/ui/drawer\"\n```\n\n```tsx showLineNumbers\n<Drawer>\n  <DrawerTrigger>Open</DrawerTrigger>\n  <DrawerContent>\n    <DrawerHeader>\n      <DrawerTitle>Are you absolutely sure?</DrawerTitle>\n      <DrawerDescription>This action cannot be undone.</DrawerDescription>\n    </DrawerHeader>\n    <DrawerFooter>\n      <Button>Submit</Button>\n      <DrawerClose>\n        <Button variant=\"outline\">Cancel</Button>\n      </DrawerClose>\n    </DrawerFooter>\n  </DrawerContent>\n</Drawer>\n```\n\n## Examples\n\n### Scrollable Content\n\nKeep actions visible while the content scrolls.\n\n<ComponentPreview styleName=\"base-nova\" name=\"drawer-scrollable-content\" />\n\n### Sides\n\nUse the `direction` prop to set the side of the drawer. Available options are `top`, `right`, `bottom`, and `left`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"drawer-sides\" />\n\n### Responsive Dialog\n\nYou can combine the `Dialog` and `Drawer` components to create a responsive dialog. This renders a `Dialog` component on desktop and a `Drawer` on mobile.\n\n<ComponentPreview styleName=\"base-nova\" name=\"drawer-dialog\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"drawer-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Vaul documentation](https://vaul.emilkowal.ski/getting-started) for the full API reference.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/dropdown-menu.mdx",
    "content": "---\ntitle: Dropdown Menu\ndescription: Displays a menu to the user — such as a set of actions or functions — triggered by a button.\nfeatured: true\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/menu\n  api: https://base-ui.com/react/components/menu#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"dropdown-menu-demo\"\n  description=\"A dropdown menu with icons, shortcuts and sub menu items.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add dropdown-menu\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"dropdown-menu\"\n  title=\"components/ui/dropdown-menu.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Button } from \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n```\n\n```tsx showLineNumbers\n<DropdownMenu>\n  <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n    Open\n  </DropdownMenuTrigger>\n  <DropdownMenuContent>\n    <DropdownMenuGroup>\n      <DropdownMenuLabel>My Account</DropdownMenuLabel>\n      <DropdownMenuItem>Profile</DropdownMenuItem>\n      <DropdownMenuItem>Billing</DropdownMenuItem>\n    </DropdownMenuGroup>\n    <DropdownMenuSeparator />\n    <DropdownMenuGroup>\n      <DropdownMenuItem>Team</DropdownMenuItem>\n      <DropdownMenuItem>Subscription</DropdownMenuItem>\n    </DropdownMenuGroup>\n  </DropdownMenuContent>\n</DropdownMenu>\n```\n\n## Examples\n\n### Basic\n\nA basic dropdown menu with labels and separators.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-basic\" />\n\n### Submenu\n\nUse `DropdownMenuSub` to nest secondary actions.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-submenu\" />\n\n### Shortcuts\n\nAdd `DropdownMenuShortcut` to show keyboard hints.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-shortcuts\" />\n\n### Icons\n\nCombine icons with labels for quick scanning.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-icons\" />\n\n### Checkboxes\n\nUse `DropdownMenuCheckboxItem` for toggles.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-checkboxes\" />\n\n### Checkboxes Icons\n\nAdd icons to checkbox items.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-checkboxes-icons\" />\n\n### Radio Group\n\nUse `DropdownMenuRadioGroup` for exclusive choices.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-radio-group\" />\n\n### Radio Icons\n\nShow radio options with icons.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-radio-icons\" />\n\n### Destructive\n\nUse `variant=\"destructive\"` for irreversible actions.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-destructive\" />\n\n### Avatar\n\nAn account switcher dropdown triggered by an avatar.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-avatar\" />\n\n### Complex\n\nA richer example combining groups, icons, and submenus.\n\n<ComponentPreview styleName=\"base-nova\" name=\"dropdown-menu-complex\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"dropdown-menu-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Base UI documentation](https://base-ui.com/react/components/menu) for the full API reference.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/empty.mdx",
    "content": "---\ntitle: Empty\ndescription: Use the Empty component to display an empty state.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"empty-demo\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add empty\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"empty\"\n  title=\"components/ui/empty.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/components/ui/empty\"\n```\n\n```tsx\n<Empty>\n  <EmptyHeader>\n    <EmptyMedia variant=\"icon\">\n      <Icon />\n    </EmptyMedia>\n    <EmptyTitle>No data</EmptyTitle>\n    <EmptyDescription>No data found</EmptyDescription>\n  </EmptyHeader>\n  <EmptyContent>\n    <Button>Add data</Button>\n  </EmptyContent>\n</Empty>\n```\n\n## Examples\n\n### Outline\n\nUse the `border` utility class to create an outline empty state.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"empty-outline\"\n  previewClassName=\"h-96 p-6 md:p-10\"\n/>\n\n### Background\n\nUse the `bg-*` and `bg-gradient-*` utilities to add a background to the empty state.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"empty-background\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n### Avatar\n\nUse the `EmptyMedia` component to display an avatar in the empty state.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"empty-avatar\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n### Avatar Group\n\nUse the `EmptyMedia` component to display an avatar group in the empty state.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"empty-avatar-group\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n### InputGroup\n\nYou can add an `InputGroup` component to the `EmptyContent` component.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"empty-input-group\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"empty-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Empty\n\nThe main component of the empty state. Wraps the `EmptyHeader` and `EmptyContent` components.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<Empty>\n  <EmptyHeader />\n  <EmptyContent />\n</Empty>\n```\n\n### EmptyHeader\n\nThe `EmptyHeader` component wraps the empty media, title, and description.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<EmptyHeader>\n  <EmptyMedia />\n  <EmptyTitle />\n  <EmptyDescription />\n</EmptyHeader>\n```\n\n### EmptyMedia\n\nUse the `EmptyMedia` component to display the media of the empty state such as an icon or an image. You can also use it to display other components such as an avatar.\n\n| Prop        | Type                  | Default   |\n| ----------- | --------------------- | --------- |\n| `variant`   | `\"default\" \\| \"icon\"` | `default` |\n| `className` | `string`              |           |\n\n```tsx\n<EmptyMedia variant=\"icon\">\n  <Icon />\n</EmptyMedia>\n```\n\n```tsx\n<EmptyMedia>\n  <Avatar>\n    <AvatarImage src=\"...\" />\n    <AvatarFallback>CN</AvatarFallback>\n  </Avatar>\n</EmptyMedia>\n```\n\n### EmptyTitle\n\nUse the `EmptyTitle` component to display the title of the empty state.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<EmptyTitle>No data</EmptyTitle>\n```\n\n### EmptyDescription\n\nUse the `EmptyDescription` component to display the description of the empty state.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<EmptyDescription>You do not have any notifications.</EmptyDescription>\n```\n\n### EmptyContent\n\nUse the `EmptyContent` component to display the content of the empty state such as a button, input or a link.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<EmptyContent>\n  <Button>Add Project</Button>\n</EmptyContent>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/field.mdx",
    "content": "---\ntitle: Field\ndescription: Combine labels, controls, and help text to compose accessible form fields and grouped inputs.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"field-demo\"\n  previewClassName=\"h-[800px] p-6 md:h-[850px]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add field\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"field\"\n  title=\"components/ui/field.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/components/ui/field\"\n```\n\n```tsx showLineNumbers\n<FieldSet>\n  <FieldLegend>Profile</FieldLegend>\n  <FieldDescription>This appears on invoices and emails.</FieldDescription>\n  <FieldGroup>\n    <Field>\n      <FieldLabel htmlFor=\"name\">Full name</FieldLabel>\n      <Input id=\"name\" autoComplete=\"off\" placeholder=\"Evil Rabbit\" />\n      <FieldDescription>This appears on invoices and emails.</FieldDescription>\n    </Field>\n    <Field>\n      <FieldLabel htmlFor=\"username\">Username</FieldLabel>\n      <Input id=\"username\" autoComplete=\"off\" aria-invalid />\n      <FieldError>Choose another username.</FieldError>\n    </Field>\n    <Field orientation=\"horizontal\">\n      <Switch id=\"newsletter\" />\n      <FieldLabel htmlFor=\"newsletter\">Subscribe to the newsletter</FieldLabel>\n    </Field>\n  </FieldGroup>\n</FieldSet>\n```\n\n## Anatomy\n\nThe `Field` family is designed for composing accessible forms. A typical field is structured as follows:\n\n```tsx showLineNumbers\n<Field>\n  <FieldLabel htmlFor=\"input-id\">Label</FieldLabel>\n  {/* Input, Select, Switch, etc. */}\n  <FieldDescription>Optional helper text.</FieldDescription>\n  <FieldError>Validation message.</FieldError>\n</Field>\n```\n\n- `Field` is the core wrapper for a single field.\n- `FieldContent` is a flex column that groups label and description. Not required if you have no description.\n- Wrap related fields with `FieldGroup`, and use `FieldSet` with `FieldLegend` for semantic grouping.\n\n## Form\n\nSee the [Form](/docs/forms) documentation for building forms with the `Field` component and [React Hook Form](/docs/forms/react-hook-form) or [Tanstack Form](/docs/forms/tanstack-form).\n\n## Examples\n\n### Input\n\n<ComponentPreview styleName=\"base-nova\" name=\"field-input\" />\n\n### Textarea\n\n<ComponentPreview styleName=\"base-nova\" name=\"field-textarea\" />\n\n### Select\n\n<ComponentPreview styleName=\"base-nova\" name=\"field-select\" />\n\n### Slider\n\n<ComponentPreview styleName=\"base-nova\" name=\"field-slider\" />\n\n### Fieldset\n\n<ComponentPreview styleName=\"base-nova\" name=\"field-fieldset\" />\n\n### Checkbox\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"field-checkbox\"\n  previewClassName=\"h-[32rem]\"\n/>\n\n### Radio\n\n<ComponentPreview styleName=\"base-nova\" name=\"field-radio\" />\n\n### Switch\n\n<ComponentPreview styleName=\"base-nova\" name=\"field-switch\" />\n\n### Choice Card\n\nWrap `Field` components inside `FieldLabel` to create selectable field groups. This works with `RadioItem`, `Checkbox` and `Switch` components.\n\n<ComponentPreview styleName=\"base-nova\" name=\"field-choice-card\" />\n\n### Field Group\n\nStack `Field` components with `FieldGroup`. Add `FieldSeparator` to divide them.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"field-group\"\n  previewClassName=\"h-96\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"field-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto p-6\"\n/>\n\n## Responsive Layout\n\n- **Vertical fields:** Default orientation stacks label, control, and helper text—ideal for mobile-first layouts.\n- **Horizontal fields:** Set `orientation=\"horizontal\"` on `Field` to align the label and control side-by-side. Pair with `FieldContent` to keep descriptions aligned.\n- **Responsive fields:** Set `orientation=\"responsive\"` for automatic column layouts inside container-aware parents. Apply `@container/field-group` classes on `FieldGroup` to switch orientations at specific breakpoints.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"field-responsive\"\n  previewClassName=\"h-[650px] p-6 md:h-[500px] md:p-10\"\n/>\n\n## Validation and Errors\n\n- Add `data-invalid` to `Field` to switch the entire block into an error state.\n- Add `aria-invalid` on the input itself for assistive technologies.\n- Render `FieldError` immediately after the control or inside `FieldContent` to keep error messages aligned with the field.\n\n```tsx showLineNumbers /data-invalid/ /aria-invalid/\n<Field data-invalid>\n  <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n  <Input id=\"email\" type=\"email\" aria-invalid />\n  <FieldError>Enter a valid email address.</FieldError>\n</Field>\n```\n\n## Accessibility\n\n- `FieldSet` and `FieldLegend` keep related controls grouped for keyboard and assistive tech users.\n- `Field` outputs `role=\"group\"` so nested controls inherit labeling from `FieldLabel` and `FieldLegend` when combined.\n- Apply `FieldSeparator` sparingly to ensure screen readers encounter clear section boundaries.\n\n## API Reference\n\n### FieldSet\n\nContainer that renders a semantic `fieldset` with spacing presets.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldSet>\n  <FieldLegend>Delivery</FieldLegend>\n  <FieldGroup>{/* Fields */}</FieldGroup>\n</FieldSet>\n```\n\n### FieldLegend\n\nLegend element for a `FieldSet`. Switch to the `label` variant to align with label sizing.\n\n| Prop        | Type                  | Default    |\n| ----------- | --------------------- | ---------- |\n| `variant`   | `\"legend\" \\| \"label\"` | `\"legend\"` |\n| `className` | `string`              |            |\n\n```tsx\n<FieldLegend variant=\"label\">Notification Preferences</FieldLegend>\n```\n\nThe `FieldLegend` has two variants: `legend` and `label`. The `label` variant applies label sizing and alignment. Handy if you have nested `FieldSet`.\n\n### FieldGroup\n\nLayout wrapper that stacks `Field` components and enables container queries for responsive orientations.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldGroup className=\"@container/field-group flex flex-col gap-6\">\n  <Field>{/* ... */}</Field>\n  <Field>{/* ... */}</Field>\n</FieldGroup>\n```\n\n### Field\n\nThe core wrapper for a single field. Provides orientation control, invalid state styling, and spacing.\n\n| Prop           | Type                                         | Default      |\n| -------------- | -------------------------------------------- | ------------ |\n| `orientation`  | `\"vertical\" \\| \"horizontal\" \\| \"responsive\"` | `\"vertical\"` |\n| `className`    | `string`                                     |              |\n| `data-invalid` | `boolean`                                    |              |\n\n```tsx\n<Field orientation=\"horizontal\">\n  <FieldLabel htmlFor=\"remember\">Remember me</FieldLabel>\n  <Switch id=\"remember\" />\n</Field>\n```\n\n### FieldContent\n\nFlex column that groups control and descriptions when the label sits beside the control. Not required if you have no description.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<Field>\n  <Checkbox id=\"notifications\" />\n  <FieldContent>\n    <FieldLabel htmlFor=\"notifications\">Notifications</FieldLabel>\n    <FieldDescription>Email, SMS, and push options.</FieldDescription>\n  </FieldContent>\n</Field>\n```\n\n### FieldLabel\n\nLabel styled for both direct inputs and nested `Field` children.\n\n| Prop        | Type      | Default |\n| ----------- | --------- | ------- |\n| `className` | `string`  |         |\n| `asChild`   | `boolean` | `false` |\n\n```tsx\n<FieldLabel htmlFor=\"email\">Email</FieldLabel>\n```\n\n### FieldTitle\n\nRenders a title with label styling inside `FieldContent`.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldContent>\n  <FieldTitle>Enable Touch ID</FieldTitle>\n  <FieldDescription>Unlock your device faster.</FieldDescription>\n</FieldContent>\n```\n\n### FieldDescription\n\nHelper text slot that automatically balances long lines in horizontal layouts.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldDescription>We never share your email with anyone.</FieldDescription>\n```\n\n### FieldSeparator\n\nVisual divider to separate sections inside a `FieldGroup`. Accepts optional inline content.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldSeparator>Or continue with</FieldSeparator>\n```\n\n### FieldError\n\nAccessible error container that accepts children or an `errors` array (e.g., from `react-hook-form`).\n\n| Prop        | Type                                       | Default |\n| ----------- | ------------------------------------------ | ------- |\n| `errors`    | `Array<{ message?: string } \\| undefined>` |         |\n| `className` | `string`                                   |         |\n\n```tsx\n<FieldError errors={errors.username} />\n```\n\nWhen the `errors` array contains multiple messages, the component renders a list automatically.\n\n`FieldError` also accepts issues produced by any validator that implements [Standard Schema](https://standardschema.dev/), including Zod, Valibot, and ArkType. Pass the `issues` array from the schema result directly to render a unified error list across libraries.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/hover-card.mdx",
    "content": "---\ntitle: Hover Card\ndescription: For sighted users to preview content available behind a link.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/hover-card\n  api: https://base-ui.com/react/components/hover-card#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"hover-card-demo\"\n  previewClassName=\"h-80\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add hover-card\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"hover-card\"\n  title=\"components/ui/hover-card.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/components/ui/hover-card\"\n```\n\n```tsx showLineNumbers\n<HoverCard>\n  <HoverCardTrigger>Hover</HoverCardTrigger>\n  <HoverCardContent>\n    The React Framework – created and maintained by @vercel.\n  </HoverCardContent>\n</HoverCard>\n```\n\n## Trigger Delays\n\nUse `delay` and `closeDelay` on the trigger to control when the card opens and\ncloses.\n\n```tsx showLineNumbers\n<HoverCard>\n  <HoverCardTrigger delay={100} closeDelay={200}>\n    Hover\n  </HoverCardTrigger>\n  <HoverCardContent>Content</HoverCardContent>\n</HoverCard>\n```\n\n## Positioning\n\nUse the `side` and `align` props on `HoverCardContent` to control placement.\n\n```tsx showLineNumbers\n<HoverCard>\n  <HoverCardTrigger>Hover</HoverCardTrigger>\n  <HoverCardContent side=\"top\" align=\"start\">\n    Content\n  </HoverCardContent>\n</HoverCard>\n```\n\n## Examples\n\n### Basic\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"hover-card-demo\"\n  previewClassName=\"h-80\"\n/>\n\n### Sides\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"hover-card-sides\"\n  previewClassName=\"h-[22rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"hover-card-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-80\"\n/>\n\n## API Reference\n\nSee the [Base UI](https://base-ui.com/react/components/hover-card#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/input-group.mdx",
    "content": "---\ntitle: Input Group\ndescription: Add addons, buttons, and helper content to inputs.\nbase: base\ncomponent: true\n---\n\nimport { IconInfoCircle } from \"@tabler/icons-react\"\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-demo\"\n  previewClassName=\"h-[26rem]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add input-group\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"input-group\"\n  title=\"components/ui/input-group.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/components/ui/input-group\"\n```\n\n```tsx showLineNumbers\n<InputGroup>\n  <InputGroupInput placeholder=\"Search...\" />\n  <InputGroupAddon>\n    <SearchIcon />\n  </InputGroupAddon>\n</InputGroup>\n```\n\n## Align\n\nUse the `align` prop on `InputGroupAddon` to position the addon relative to the input.\n\n<Callout>\n  For proper focus management, `InputGroupAddon` should always be placed after\n  `InputGroupInput` or `InputGroupTextarea` in the DOM. Use the `align` prop to\n  visually position the addon.\n</Callout>\n\n### inline-start\n\nUse `align=\"inline-start\"` to position the addon at the start of the input. This is the default.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-inline-start\"\n  previewClassName=\"h-48\"\n/>\n\n### inline-end\n\nUse `align=\"inline-end\"` to position the addon at the end of the input.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-inline-end\"\n  previewClassName=\"h-48\"\n/>\n\n### block-start\n\nUse `align=\"block-start\"` to position the addon above the input.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-block-start\"\n  previewClassName=\"h-96\"\n/>\n\n### block-end\n\nUse `align=\"block-end\"` to position the addon below the input.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-block-end\"\n  previewClassName=\"h-[26rem]\"\n/>\n\n## Examples\n\n### Icon\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-icon\"\n  previewClassName=\"h-80\"\n/>\n\n### Text\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-text\"\n  previewClassName=\"h-80\"\n/>\n\n### Button\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-button\"\n  previewClassName=\"h-72\"\n/>\n\n### Kbd\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-kbd\"\n  previewClassName=\"h-40\"\n/>\n\n### Dropdown\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-dropdown\"\n  previewClassName=\"h-56\"\n/>\n\n### Spinner\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-spinner\"\n  previewClassName=\"h-80\"\n/>\n\n### Textarea\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-textarea\"\n  previewClassName=\"h-96\"\n/>\n\n### Custom Input\n\nAdd the `data-slot=\"input-group-control\"` attribute to your custom input for automatic focus state handling.\n\nHere's an example of a custom resizable textarea from a third-party library.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-custom\"\n  previewClassName=\"h-56\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-group-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## API Reference\n\n### InputGroup\n\nThe main component that wraps inputs and addons.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<InputGroup>\n  <InputGroupInput />\n  <InputGroupAddon />\n</InputGroup>\n```\n\n### InputGroupAddon\n\nDisplays icons, text, buttons, or other content alongside inputs.\n\n<Callout icon={<IconInfoCircle />} title=\"Focus Navigation\">\n  For proper focus navigation, the `InputGroupAddon` component should be placed\n  after the input. Set the `align` prop to position the addon.\n</Callout>\n\n| Prop        | Type                                                             | Default          |\n| ----------- | ---------------------------------------------------------------- | ---------------- |\n| `align`     | `\"inline-start\" \\| \"inline-end\" \\| \"block-start\" \\| \"block-end\"` | `\"inline-start\"` |\n| `className` | `string`                                                         |                  |\n\n```tsx\n<InputGroupAddon align=\"inline-end\">\n  <SearchIcon />\n</InputGroupAddon>\n```\n\n**For `<InputGroupInput />`, use the `inline-start` or `inline-end` alignment. For `<InputGroupTextarea />`, use the `block-start` or `block-end` alignment.**\n\nThe `InputGroupAddon` component can have multiple `InputGroupButton` components and icons.\n\n```tsx\n<InputGroupAddon>\n  <InputGroupButton>Button</InputGroupButton>\n  <InputGroupButton>Button</InputGroupButton>\n</InputGroupAddon>\n```\n\n### InputGroupButton\n\nDisplays buttons within input groups.\n\n| Prop        | Type                                                                          | Default   |\n| ----------- | ----------------------------------------------------------------------------- | --------- |\n| `size`      | `\"xs\" \\| \"icon-xs\" \\| \"sm\" \\| \"icon-sm\"`                                      | `\"xs\"`    |\n| `variant`   | `\"default\" \\| \"destructive\" \\| \"outline\" \\| \"secondary\" \\| \"ghost\" \\| \"link\"` | `\"ghost\"` |\n| `className` | `string`                                                                      |           |\n\n```tsx\n<InputGroupButton>Button</InputGroupButton>\n<InputGroupButton size=\"icon-xs\" aria-label=\"Copy\">\n  <CopyIcon />\n</InputGroupButton>\n```\n\n### InputGroupInput\n\nReplacement for `<Input />` when building input groups. This component has the input group styles pre-applied and uses the unified `data-slot=\"input-group-control\"` for focus state handling.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\nAll other props are passed through to the underlying `<Input />` component.\n\n```tsx\n<InputGroup>\n  <InputGroupInput placeholder=\"Enter text...\" />\n  <InputGroupAddon>\n    <SearchIcon />\n  </InputGroupAddon>\n</InputGroup>\n```\n\n### InputGroupTextarea\n\nReplacement for `<Textarea />` when building input groups. This component has the textarea group styles pre-applied and uses the unified `data-slot=\"input-group-control\"` for focus state handling.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\nAll other props are passed through to the underlying `<Textarea />` component.\n\n```tsx\n<InputGroup>\n  <InputGroupTextarea placeholder=\"Enter message...\" />\n  <InputGroupAddon align=\"block-end\">\n    <InputGroupButton>Send</InputGroupButton>\n  </InputGroupAddon>\n</InputGroup>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/input-otp.mdx",
    "content": "---\ntitle: Input OTP\ndescription: Accessible one-time password component with copy-paste functionality.\nbase: base\ncomponent: true\nlinks:\n  doc: https://input-otp.rodz.dev\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-demo\" />\n\n## About\n\nInput OTP is built on top of [input-otp](https://github.com/guilhermerodz/input-otp) by [@guilherme_rodz](https://twitter.com/guilherme_rodz).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add input-otp\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install input-otp\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"input-otp\"\n  title=\"components/ui/input-otp.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/components/ui/input-otp\"\n```\n\n```tsx showLineNumbers\n<InputOTP maxLength={6}>\n  <InputOTPGroup>\n    <InputOTPSlot index={0} />\n    <InputOTPSlot index={1} />\n    <InputOTPSlot index={2} />\n  </InputOTPGroup>\n  <InputOTPSeparator />\n  <InputOTPGroup>\n    <InputOTPSlot index={3} />\n    <InputOTPSlot index={4} />\n    <InputOTPSlot index={5} />\n  </InputOTPGroup>\n</InputOTP>\n```\n\n## Pattern\n\nUse the `pattern` prop to define a custom pattern for the OTP input.\n\n```tsx showLineNumbers {1,5}\nimport { REGEXP_ONLY_DIGITS_AND_CHARS } from \"input-otp\"\n\n;<InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>\n  ...\n</InputOTP>\n```\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-pattern\" />\n\n## Examples\n\n### Separator\n\nUse the `<InputOTPSeparator />` component to add a separator between input groups.\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-separator\" />\n\n### Disabled\n\nUse the `disabled` prop to disable the input.\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-disabled\" />\n\n### Controlled\n\nUse the `value` and `onChange` props to control the input value.\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-controlled\" />\n\n### Invalid\n\nUse `aria-invalid` on the slots to show an error state.\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-invalid\" />\n\n### Four Digits\n\nA common pattern for PIN codes. This uses the `pattern={REGEXP_ONLY_DIGITS}` prop.\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-four-digits\" />\n\n### Alphanumeric\n\nUse `REGEXP_ONLY_DIGITS_AND_CHARS` to accept both letters and numbers.\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-alphanumeric\" />\n\n### Form\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-otp-form\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"input-otp-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [input-otp](https://input-otp.rodz.dev) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/input.mdx",
    "content": "---\ntitle: Input\ndescription: A text input component for forms and user data entry with built-in styling and accessibility features.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-demo\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add input\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"input\"\n  title=\"components/ui/input.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Input } from \"@/components/ui/input\"\n```\n\n```tsx\n<Input />\n```\n\n## Examples\n\n### Basic\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-basic\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Field\n\nUse `Field`, `FieldLabel`, and `FieldDescription` to create an input with a\nlabel and description.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-field\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Field Group\n\nUse `FieldGroup` to show multiple `Field` blocks and to build forms.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-fieldgroup\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Disabled\n\nUse the `disabled` prop to disable the input. To style the disabled state, add the `data-disabled` attribute to the `Field` component.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-disabled\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Invalid\n\nUse the `aria-invalid` prop to mark the input as invalid. To style the invalid state, add the `data-invalid` attribute to the `Field` component.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-invalid\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### File\n\nUse the `type=\"file\"` prop to create a file input.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-file\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Inline\n\nUse `Field` with `orientation=\"horizontal\"` to create an inline input.\nPair with `Button` to create a search input with a button.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-inline\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Grid\n\nUse a grid layout to place multiple inputs side by side.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-grid\"\n  previewClassName=\"p-6\"\n/>\n\n### Required\n\nUse the `required` attribute to indicate required inputs.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-required\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Badge\n\nUse `Badge` in the label to highlight a recommended field.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-badge\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Input Group\n\nTo add icons, text, or buttons inside an input, use the `InputGroup` component. See the [Input Group](/docs/components/input-group) component for more examples.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-input-group\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Button Group\n\nTo add buttons to an input, use the `ButtonGroup` component. See the [Button Group](/docs/components/button-group) component for more examples.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-button-group\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Form\n\nA full form example with multiple inputs, a select, and a button.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-form\"\n  previewClassName=\"h-[32rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"input-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"*:max-w-xs\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/item.mdx",
    "content": "---\ntitle: Item\ndescription: A versatile component for displaying content with media, title, description, and actions.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"item-demo\" />\n\nThe `Item` component is a straightforward flex container that can house nearly any type of content. Use it to display a title, description, and actions. Group it with the `ItemGroup` component to create a list of items.\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add item\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"item\"\n  title=\"components/ui/item.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/components/ui/item\"\n```\n\n```tsx showLineNumbers\n<Item>\n  <ItemMedia variant=\"icon\">\n    <Icon />\n  </ItemMedia>\n  <ItemContent>\n    <ItemTitle>Title</ItemTitle>\n    <ItemDescription>Description</ItemDescription>\n  </ItemContent>\n  <ItemActions>\n    <Button>Action</Button>\n  </ItemActions>\n</Item>\n```\n\n## Item vs Field\n\nUse `Field` if you need to display a form input such as a checkbox, input, radio, or select.\n\nIf you only need to display content such as a title, description, and actions, use `Item`.\n\n## Variant\n\nUse the `variant` prop to change the visual style of the item.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"item-variant\"\n  previewClassName=\"h-96\"\n/>\n\n## Size\n\nUse the `size` prop to change the size of the item. Available sizes are `default`, `sm`, and `xs`.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"item-size\"\n  previewClassName=\"h-96\"\n/>\n\n## Examples\n\n### Icon\n\nUse `ItemMedia` with `variant=\"icon\"` to display an icon.\n\n<ComponentPreview styleName=\"base-nova\" name=\"item-icon\" />\n\n### Avatar\n\nYou can use `ItemMedia` with `variant=\"avatar\"` to display an avatar.\n\n<ComponentPreview styleName=\"base-nova\" name=\"item-avatar\" />\n\n### Image\n\nUse `ItemMedia` with `variant=\"image\"` to display an image.\n\n<ComponentPreview styleName=\"base-nova\" name=\"item-image\" />\n\n### Group\n\nUse `ItemGroup` to group related items together.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"item-group\"\n  previewClassName=\"h-96\"\n/>\n\n### Header\n\nUse `ItemHeader` to add a header above the item content.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"item-header\"\n  previewClassName=\"h-96\"\n/>\n\n### Link\n\nUse the `render` prop to render the item as a link. The hover and focus states will be applied to the anchor element.\n\n<ComponentPreview styleName=\"base-nova\" name=\"item-link\" />\n\n```tsx showLineNumbers\n<Item render={<a href=\"/dashboard\" />}>\n  <ItemMedia variant=\"icon\">\n    <HomeIcon />\n  </ItemMedia>\n  <ItemContent>\n    <ItemTitle>Dashboard</ItemTitle>\n    <ItemDescription>Overview of your account and activity.</ItemDescription>\n  </ItemContent>\n</Item>\n```\n\n### Dropdown\n\n<ComponentPreview styleName=\"base-nova\" name=\"item-dropdown\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"item-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Item\n\nThe main component for displaying content with media, title, description, and actions.\n\n| Prop      | Type                                | Default     |\n| --------- | ----------------------------------- | ----------- |\n| `variant` | `\"default\" \\| \"outline\" \\| \"muted\"` | `\"default\"` |\n| `size`    | `\"default\" \\| \"sm\" \\| \"xs\"`         | `\"default\"` |\n| `render`  | `React.ReactElement`                |             |\n\n### ItemGroup\n\nA container that groups related items together with consistent styling.\n\n```tsx\n<ItemGroup>\n  <Item />\n  <Item />\n</ItemGroup>\n```\n\n### ItemSeparator\n\nA separator between items in a group.\n\n```tsx\n<ItemGroup>\n  <Item />\n  <ItemSeparator />\n  <Item />\n</ItemGroup>\n```\n\n### ItemMedia\n\nUse `ItemMedia` to display media content such as icons, images, or avatars.\n\n| Prop      | Type                             | Default     |\n| --------- | -------------------------------- | ----------- |\n| `variant` | `\"default\" \\| \"icon\" \\| \"image\"` | `\"default\"` |\n\n```tsx\n<ItemMedia variant=\"icon\">\n  <Icon />\n</ItemMedia>\n```\n\n```tsx\n<ItemMedia variant=\"image\">\n  <img src=\"...\" alt=\"...\" />\n</ItemMedia>\n```\n\n### ItemContent\n\nWraps the title and description of the item.\n\n```tsx\n<ItemContent>\n  <ItemTitle>Title</ItemTitle>\n  <ItemDescription>Description</ItemDescription>\n</ItemContent>\n```\n\n### ItemTitle\n\nDisplays the title of the item.\n\n```tsx\n<ItemTitle>Item Title</ItemTitle>\n```\n\n### ItemDescription\n\nDisplays the description of the item.\n\n```tsx\n<ItemDescription>Item description</ItemDescription>\n```\n\n### ItemActions\n\nContainer for action buttons or other interactive elements.\n\n```tsx\n<ItemActions>\n  <Button>Action</Button>\n</ItemActions>\n```\n\n### ItemHeader\n\nDisplays a header above the item content.\n\n```tsx\n<Item>\n  <ItemHeader>Header</ItemHeader>\n  <ItemContent>...</ItemContent>\n</Item>\n```\n\n### ItemFooter\n\nDisplays a footer below the item content.\n\n```tsx\n<Item>\n  <ItemContent>...</ItemContent>\n  <ItemFooter>Footer</ItemFooter>\n</Item>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/kbd.mdx",
    "content": "---\ntitle: Kbd\ndescription: Used to display textual user input from keyboard.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"kbd-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add kbd\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"kbd\"\n  title=\"components/ui/kbd.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Kbd } from \"@/components/ui/kbd\"\n```\n\n```tsx\n<Kbd>Ctrl</Kbd>\n```\n\n## Examples\n\n### Group\n\nUse the `KbdGroup` component to group keyboard keys together.\n\n<ComponentPreview styleName=\"base-nova\" name=\"kbd-group\" />\n\n### Button\n\nUse the `Kbd` component inside a `Button` component to display a keyboard key inside a button.\n\n<ComponentPreview styleName=\"base-nova\" name=\"kbd-button\" />\n\n### Tooltip\n\nYou can use the `Kbd` component inside a `Tooltip` component to display a tooltip with a keyboard key.\n\n<ComponentPreview styleName=\"base-nova\" name=\"kbd-tooltip\" />\n\n### Input Group\n\nYou can use the `Kbd` component inside a `InputGroupAddon` component to display a keyboard key inside an input group.\n\n<ComponentPreview styleName=\"base-nova\" name=\"kbd-input-group\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"kbd-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Kbd\n\nUse the `Kbd` component to display a keyboard key.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | ``      |\n\n```tsx\n<Kbd>Ctrl</Kbd>\n```\n\n### KbdGroup\n\nUse the `KbdGroup` component to group `Kbd` components together.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | ``      |\n\n```tsx\n<KbdGroup>\n  <Kbd>Ctrl</Kbd>\n  <Kbd>B</Kbd>\n</KbdGroup>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/label.mdx",
    "content": "---\ntitle: Label\ndescription: Renders an accessible label associated with controls.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/label\n  api: https://base-ui.com/react/components/label#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"label-demo\" />\n\n<Callout>\n  For form fields, use the [Field](/docs/components/base/field) component which\n  includes built-in label, description, and error handling.\n</Callout>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add label\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"label\"\n  title=\"components/ui/label.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Label } from \"@/components/ui/label\"\n```\n\n```tsx\n<Label htmlFor=\"email\">Your email address</Label>\n```\n\n## Label in Field\n\nFor form fields, use the [Field](/docs/components/base/field) component which\nincludes built-in `FieldLabel`, `FieldDescription`, and `FieldError` components.\n\n```tsx\n<Field>\n  <FieldLabel htmlFor=\"email\">Your email address</FieldLabel>\n  <Input id=\"email\" />\n</Field>\n```\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"field-demo\"\n  previewClassName=\"h-[44rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"label-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Label](https://base-ui.com/react/components/label#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/menubar.mdx",
    "content": "---\ntitle: Menubar\ndescription: A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/menubar\n  api: https://base-ui.com/react/components/menubar#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"menubar-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add menubar\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"menubar\"\n  title=\"components/ui/menubar.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Menubar,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarTrigger,\n} from \"@/components/ui/menubar\"\n```\n\n```tsx showLineNumbers\n<Menubar>\n  <MenubarMenu>\n    <MenubarTrigger>File</MenubarTrigger>\n    <MenubarContent>\n      <MenubarGroup>\n        <MenubarItem>\n          New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n        </MenubarItem>\n        <MenubarItem>New Window</MenubarItem>\n      </MenubarGroup>\n      <MenubarSeparator />\n      <MenubarGroup>\n        <MenubarItem>Share</MenubarItem>\n        <MenubarItem>Print</MenubarItem>\n      </MenubarGroup>\n    </MenubarContent>\n  </MenubarMenu>\n</Menubar>\n```\n\n## Examples\n\n### Checkbox\n\nUse `MenubarCheckboxItem` for toggleable options.\n\n<ComponentPreview styleName=\"base-nova\" name=\"menubar-checkbox\" />\n\n### Radio\n\nUse `MenubarRadioGroup` and `MenubarRadioItem` for single-select options.\n\n<ComponentPreview styleName=\"base-nova\" name=\"menubar-radio\" />\n\n### Submenu\n\nUse `MenubarSub`, `MenubarSubTrigger`, and `MenubarSubContent` for nested menus.\n\n<ComponentPreview styleName=\"base-nova\" name=\"menubar-submenu\" />\n\n### With Icons\n\n<ComponentPreview styleName=\"base-nova\" name=\"menubar-icons\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"menubar-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Menubar](https://base-ui.com/react/components/menubar#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/meta.json",
    "content": "{\n  \"title\": \"Base UI\",\n  \"pages\": [\n    \"accordion\",\n    \"alert\",\n    \"alert-dialog\",\n    \"aspect-ratio\",\n    \"avatar\",\n    \"badge\",\n    \"breadcrumb\",\n    \"button\",\n    \"button-group\",\n    \"calendar\",\n    \"card\",\n    \"carousel\",\n    \"chart\",\n    \"checkbox\",\n    \"collapsible\",\n    \"combobox\",\n    \"command\",\n    \"context-menu\",\n    \"data-table\",\n    \"date-picker\",\n    \"dialog\",\n    \"direction\",\n    \"drawer\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"form\",\n    \"hover-card\",\n    \"input\",\n    \"input-group\",\n    \"input-otp\",\n    \"item\",\n    \"kbd\",\n    \"label\",\n    \"menubar\",\n    \"native-select\",\n    \"navigation-menu\",\n    \"pagination\",\n    \"popover\",\n    \"progress\",\n    \"radio-group\",\n    \"resizable\",\n    \"scroll-area\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"sidebar\",\n    \"skeleton\",\n    \"slider\",\n    \"sonner\",\n    \"spinner\",\n    \"switch\",\n    \"table\",\n    \"tabs\",\n    \"textarea\",\n    \"toast\",\n    \"toggle\",\n    \"toggle-group\",\n    \"tooltip\",\n    \"typography\"\n  ]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/native-select.mdx",
    "content": "---\ntitle: Native Select\ndescription: A styled native HTML select element with consistent design system integration.\nbase: base\ncomponent: true\n---\n\nimport { InfoIcon } from \"lucide-react\"\n\n<Callout variant=\"info\" icon={<InfoIcon className=\"translate-y-[3px]!\" />}>\n  For a styled select component, see the [Select](/docs/components/select)\n  component.\n</Callout>\n\n<ComponentPreview styleName=\"base-nova\" name=\"native-select-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add native-select\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"native-select\"\n  title=\"components/ui/native-select.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/components/ui/native-select\"\n```\n\n```tsx showLineNumbers\n<NativeSelect>\n  <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n  <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n  <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n  <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n  <NativeSelectOption value=\"pineapple\">Pineapple</NativeSelectOption>\n</NativeSelect>\n```\n\n## Examples\n\n### Groups\n\nUse `NativeSelectOptGroup` to organize options into categories.\n\n<ComponentPreview styleName=\"base-nova\" name=\"native-select-groups\" />\n\n### Disabled\n\nAdd the `disabled` prop to the `NativeSelect` component to disable the select.\n\n<ComponentPreview styleName=\"base-nova\" name=\"native-select-disabled\" />\n\n### Invalid\n\nUse `aria-invalid` to show validation errors and the `data-invalid` attribute to the `Field` component for styling.\n\n<ComponentPreview styleName=\"base-nova\" name=\"native-select-invalid\" />\n\n## Native Select vs Select\n\n- Use `NativeSelect` for native browser behavior, better performance, or mobile-optimized dropdowns.\n- Use `Select` for custom styling, animations, or complex interactions.\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"native-select-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\n### NativeSelect\n\nThe main select component that wraps the native HTML select element.\n\n```tsx\n<NativeSelect>\n  <NativeSelectOption value=\"option1\">Option 1</NativeSelectOption>\n  <NativeSelectOption value=\"option2\">Option 2</NativeSelectOption>\n</NativeSelect>\n```\n\n### NativeSelectOption\n\nRepresents an individual option within the select.\n\n| Prop       | Type      | Default |\n| ---------- | --------- | ------- |\n| `value`    | `string`  |         |\n| `disabled` | `boolean` | `false` |\n\n### NativeSelectOptGroup\n\nGroups related options together for better organization.\n\n| Prop       | Type      | Default |\n| ---------- | --------- | ------- |\n| `label`    | `string`  |         |\n| `disabled` | `boolean` | `false` |\n\n```tsx\n<NativeSelectOptGroup label=\"Fruits\">\n  <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n  <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n</NativeSelectOptGroup>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/navigation-menu.mdx",
    "content": "---\ntitle: Navigation Menu\ndescription: A collection of links for navigating websites.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/navigation-menu\n  api: https://base-ui.com/react/components/navigation-menu#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"navigation-menu-demo\"\n  previewClassName=\"h-96\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add navigation-menu\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"navigation-menu\"\n  title=\"components/ui/navigation-menu.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n} from \"@/components/ui/navigation-menu\"\n```\n\n```tsx showLineNumbers\n<NavigationMenu>\n  <NavigationMenuList>\n    <NavigationMenuItem>\n      <NavigationMenuTrigger>Item One</NavigationMenuTrigger>\n      <NavigationMenuContent>\n        <NavigationMenuLink>Link</NavigationMenuLink>\n      </NavigationMenuContent>\n    </NavigationMenuItem>\n  </NavigationMenuList>\n</NavigationMenu>\n```\n\n## Link Component\n\nUse the `render` prop to compose a custom link component such as Next.js `Link`.\n\n```tsx showLineNumbers\nimport Link from \"next/link\"\n\nimport {\n  NavigationMenuItem,\n  NavigationMenuLink,\n  navigationMenuTriggerStyle,\n} from \"@/components/ui/navigation-menu\"\n\nexport function NavigationMenuDemo() {\n  return (\n    <NavigationMenuItem>\n      <NavigationMenuLink\n        render={<Link href=\"/docs\" />}\n        className={navigationMenuTriggerStyle()}\n      >\n        Documentation\n      </NavigationMenuLink>\n    </NavigationMenuItem>\n  )\n}\n```\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"navigation-menu-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-96\"\n/>\n\n## API Reference\n\nSee the [Base UI Navigation Menu](https://base-ui.com/react/components/navigation-menu#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/pagination.mdx",
    "content": "---\ntitle: Pagination\ndescription: Pagination with page navigation, next and previous links.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"pagination-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add pagination\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"pagination\"\n  title=\"components/ui/pagination.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/components/ui/pagination\"\n```\n\n```tsx showLineNumbers\n<Pagination>\n  <PaginationContent>\n    <PaginationItem>\n      <PaginationPrevious href=\"#\" />\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationLink href=\"#\">1</PaginationLink>\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationLink href=\"#\" isActive>\n        2\n      </PaginationLink>\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationLink href=\"#\">3</PaginationLink>\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationEllipsis />\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationNext href=\"#\" />\n    </PaginationItem>\n  </PaginationContent>\n</Pagination>\n```\n\n## Examples\n\n### Simple\n\nA simple pagination with only page numbers.\n\n<ComponentPreview styleName=\"base-nova\" name=\"pagination-simple\" />\n\n### Icons Only\n\nUse just the previous and next buttons without page numbers. This is useful for data tables with a rows per page selector.\n\n<ComponentPreview styleName=\"base-nova\" name=\"pagination-icons-only\" />\n\n## Next.js\n\nBy default the `<PaginationLink />` component will render an `<a />` tag.\n\nTo use the Next.js `<Link />` component, make the following updates to `pagination.tsx`.\n\n```diff showLineNumbers /typeof Link/ {1}\n+ import Link from \"next/link\"\n\n- type PaginationLinkProps = ... & React.ComponentProps<\"a\">\n+ type PaginationLinkProps = ... & React.ComponentProps<typeof Link>\n\nconst PaginationLink = ({...props }: ) => (\n  <PaginationItem>\n-   <a>\n+   <Link>\n      // ...\n-   </a>\n+   </Link>\n  </PaginationItem>\n)\n\n```\n\n<Callout className=\"mt-6\">\n\n**Note:** We are making updates to the cli to automatically do this for you.\n\n</Callout>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"pagination-rtl\" direction=\"rtl\" />\n\n## Changelog\n\n### RTL Support\n\nIf you're upgrading from a previous version of the `Pagination` component, you'll need to apply the following updates to add the `text` prop:\n\n<Steps>\n\n<Step>Update `PaginationPrevious`.</Step>\n\n```diff\n  function PaginationPrevious({\n    className,\n+   text = \"Previous\",\n    ...props\n- }: React.ComponentProps<typeof PaginationLink>) {\n+ }: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n    return (\n      <PaginationLink\n        aria-label=\"Go to previous page\"\n        size=\"default\"\n        className={cn(\"cn-pagination-previous\", className)}\n        {...props}\n      >\n        <ChevronLeftIcon />\n        <span className=\"cn-pagination-previous-text hidden sm:block\">\n-         Previous\n+         {text}\n        </span>\n      </PaginationLink>\n    )\n  }\n```\n\n<Step>Update `PaginationNext`.</Step>\n\n```diff\n  function PaginationNext({\n    className,\n+   text = \"Next\",\n    ...props\n- }: React.ComponentProps<typeof PaginationLink>) {\n+ }: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n    return (\n      <PaginationLink\n        aria-label=\"Go to next page\"\n        size=\"default\"\n        className={cn(\"cn-pagination-next\", className)}\n        {...props}\n      >\n-       <span className=\"cn-pagination-next-text hidden sm:block\">Next</span>\n+       <span className=\"cn-pagination-next-text hidden sm:block\">{text}</span>\n        <ChevronRightIcon />\n      </PaginationLink>\n    )\n  }\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/popover.mdx",
    "content": "---\ntitle: Popover\ndescription: Displays rich content in a portal, triggered by a button.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/popover\n  api: https://base-ui.com/react/components/popover#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"popover-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add popover\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"popover\"\n  title=\"components/ui/popover.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\n```\n\n```tsx showLineNumbers\n<Popover>\n  <PopoverTrigger render={<Button variant=\"outline\" />}>\n    Open Popover\n  </PopoverTrigger>\n  <PopoverContent>\n    <PopoverHeader>\n      <PopoverTitle>Title</PopoverTitle>\n      <PopoverDescription>Description text here.</PopoverDescription>\n    </PopoverHeader>\n  </PopoverContent>\n</Popover>\n```\n\n## Examples\n\n### Basic\n\nA simple popover with a header, title, and description.\n\n<ComponentPreview styleName=\"base-nova\" name=\"popover-basic\" />\n\n### Align\n\nUse the `align` prop on `PopoverContent` to control the horizontal alignment.\n\n<ComponentPreview styleName=\"base-nova\" name=\"popover-alignments\" />\n\n### With Form\n\nA popover with form fields inside.\n\n<ComponentPreview styleName=\"base-nova\" name=\"popover-form\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"popover-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Popover](https://base-ui.com/react/components/popover#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/progress.mdx",
    "content": "---\ntitle: Progress\ndescription: Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/progress\n  api: https://base-ui.com/react/components/progress#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"progress-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add progress\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"progress\"\n  title=\"components/ui/progress.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Progress } from \"@/components/ui/progress\"\n```\n\n```tsx showLineNumbers\n<Progress value={33} />\n```\n\n## Examples\n\n### Label\n\nUse `ProgressLabel` and `ProgressValue` to add a label and value display.\n\n<ComponentPreview styleName=\"base-nova\" name=\"progress-label\" />\n\n### Controlled\n\nA progress bar that can be controlled by a slider.\n\n<ComponentPreview styleName=\"base-nova\" name=\"progress-controlled\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"progress-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Progress](https://base-ui.com/react/components/progress#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/radio-group.mdx",
    "content": "---\ntitle: Radio Group\ndescription: A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/radio-group\n  api: https://base-ui.com/react/components/radio-group#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"radio-group-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add radio-group\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"radio-group\"\n  title=\"components/ui/radio-group.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Label } from \"@/components/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\"\n```\n\n```tsx showLineNumbers\n<RadioGroup defaultValue=\"option-one\">\n  <div className=\"flex items-center gap-3\">\n    <RadioGroupItem value=\"option-one\" id=\"option-one\" />\n    <Label htmlFor=\"option-one\">Option One</Label>\n  </div>\n  <div className=\"flex items-center gap-3\">\n    <RadioGroupItem value=\"option-two\" id=\"option-two\" />\n    <Label htmlFor=\"option-two\">Option Two</Label>\n  </div>\n</RadioGroup>\n```\n\n## Examples\n\n### Description\n\nRadio group items with a description using the `Field` component.\n\n<ComponentPreview styleName=\"base-nova\" name=\"radio-group-description\" />\n\n### Choice Card\n\nUse `FieldLabel` to wrap the entire `Field` for a clickable card-style selection.\n\n<ComponentPreview styleName=\"base-nova\" name=\"radio-group-choice-card\" />\n\n### Fieldset\n\nUse `FieldSet` and `FieldLegend` to group radio items with a label and description.\n\n<ComponentPreview styleName=\"base-nova\" name=\"radio-group-fieldset\" />\n\n### Disabled\n\nUse the `disabled` prop on `RadioGroup` to disable all items.\n\n<ComponentPreview styleName=\"base-nova\" name=\"radio-group-disabled\" />\n\n### Invalid\n\nUse `aria-invalid` on `RadioGroupItem` and `data-invalid` on `Field` to show validation errors.\n\n<ComponentPreview styleName=\"base-nova\" name=\"radio-group-invalid\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"radio-group-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Base UI Radio Group](https://base-ui.com/react/components/radio-group#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/resizable.mdx",
    "content": "---\ntitle: Resizable\ndescription: Accessible resizable panel groups and layouts with keyboard support.\nbase: base\ncomponent: true\nlinks:\n  doc: https://github.com/bvaughn/react-resizable-panels\n  api: https://github.com/bvaughn/react-resizable-panels/tree/main/packages/react-resizable-panels\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"resizable-demo\"\n  previewClassName=\"h-80\"\n/>\n\n## About\n\nThe `Resizable` component is built on top of [react-resizable-panels](https://github.com/bvaughn/react-resizable-panels) by [bvaughn](https://github.com/bvaughn).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add resizable\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install react-resizable-panels\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"resizable\"\n  title=\"components/ui/resizable.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/components/ui/resizable\"\n```\n\n```tsx showLineNumbers\n<ResizablePanelGroup orientation=\"horizontal\">\n  <ResizablePanel>One</ResizablePanel>\n  <ResizableHandle />\n  <ResizablePanel>Two</ResizablePanel>\n</ResizablePanelGroup>\n```\n\n## Examples\n\n### Vertical\n\nUse `orientation=\"vertical\"` for vertical resizing.\n\n<ComponentPreview styleName=\"base-nova\" name=\"resizable-vertical\" />\n\n### Handle\n\nUse the `withHandle` prop on `ResizableHandle` to show a visible handle.\n\n<ComponentPreview styleName=\"base-nova\" name=\"resizable-handle\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"resizable-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [react-resizable-panels](https://github.com/bvaughn/react-resizable-panels/tree/main/packages/react-resizable-panels) documentation.\n\n## Changelog\n\n### 2025-02-02 `react-resizable-panels` v4\n\nUpdated to `react-resizable-panels` v4. See the [v4.0.0 release notes](https://github.com/bvaughn/react-resizable-panels/releases/tag/4.0.0) for full details.\n\nIf you're using `react-resizable-panels` primitives directly, note the following changes:\n\n| v3                           | v4                      |\n| ---------------------------- | ----------------------- |\n| `PanelGroup`                 | `Group`                 |\n| `PanelResizeHandle`          | `Separator`             |\n| `direction` prop             | `orientation` prop      |\n| `defaultSize={50}`           | `defaultSize=\"50%\"`     |\n| `onLayout`                   | `onLayoutChange`        |\n| `ImperativePanelHandle`      | `PanelImperativeHandle` |\n| `ref` prop on Panel          | `panelRef` prop         |\n| `data-panel-group-direction` | `aria-orientation`      |\n\n<Callout>\n  The shadcn/ui wrapper components (`ResizablePanelGroup`, `ResizablePanel`,\n  `ResizableHandle`) remain unchanged.\n</Callout>\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/scroll-area.mdx",
    "content": "---\ntitle: Scroll Area\ndescription: Augments native scroll functionality for custom, cross-browser styling.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/scroll-area\n  api: https://base-ui.com/react/components/scroll-area#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"scroll-area-demo\"\n  previewClassName=\"h-96\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add scroll-area\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"scroll-area\"\n  title=\"components/ui/scroll-area.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { ScrollArea, ScrollBar } from \"@/components/ui/scroll-area\"\n```\n\n```tsx showLineNumbers\n<ScrollArea className=\"h-[200px] w-[350px] rounded-md border p-4\">\n  Your scrollable content here.\n</ScrollArea>\n```\n\n## Examples\n\n### Horizontal\n\nUse `ScrollBar` with `orientation=\"horizontal\"` for horizontal scrolling.\n\n<ComponentPreview styleName=\"base-nova\" name=\"scroll-area-horizontal-demo\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"scroll-area-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto\"\n/>\n\n## API Reference\n\nSee the [Base UI Scroll Area](https://base-ui.com/react/components/scroll-area#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/select.mdx",
    "content": "---\ntitle: Select\ndescription: Displays a list of options for the user to pick from—triggered by a button.\nbase: base\ncomponent: true\nfeatured: true\nlinks:\n  doc: https://base-ui.com/react/components/select\n  api: https://base-ui.com/react/components/select#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"select-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add select\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"select\"\n  title=\"components/ui/select.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n```\n\n```tsx showLineNumbers\nconst items = [\n  { label: \"Light\", value: \"light\" },\n  { label: \"Dark\", value: \"dark\" },\n  { label: \"System\", value: \"system\" },\n]\n\n<Select items={items}>\n  <SelectTrigger className=\"w-[180px]\">\n    <SelectValue placeholder=\"Theme\" />\n  </SelectTrigger>\n  <SelectContent>\n    <SelectGroup>\n      {items.map((item) => (\n        <SelectItem key={item.value} value={item.value}>\n          {item.label}\n        </SelectItem>\n      ))}\n    </SelectGroup>\n  </SelectContent>\n</Select>\n```\n\n## Examples\n\n### Align Item With Trigger\n\nUse `alignItemWithTrigger` on `SelectContent` to control whether the selected item aligns with the trigger. When `true` (default), the popup positions so the selected item appears over the trigger. When `false`, the popup aligns to the trigger edge.\n\n<ComponentPreview styleName=\"base-nova\" name=\"select-align-item\" />\n\n### Groups\n\nUse `SelectGroup`, `SelectLabel`, and `SelectSeparator` to organize items.\n\n<ComponentPreview styleName=\"base-nova\" name=\"select-groups\" />\n\n### Scrollable\n\nA select with many items that scrolls.\n\n<ComponentPreview styleName=\"base-nova\" name=\"select-scrollable\" />\n\n### Disabled\n\n<ComponentPreview styleName=\"base-nova\" name=\"select-disabled\" />\n\n### Invalid\n\nAdd the `data-invalid` attribute to the `Field` component and the `aria-invalid` attribute to the `SelectTrigger` component to show an error state.\n\n```tsx showLineNumbers /data-invalid/ /aria-invalid/\n<Field data-invalid>\n  <FieldLabel>Fruit</FieldLabel>\n  <SelectTrigger aria-invalid>\n    <SelectValue />\n  </SelectTrigger>\n</Field>\n```\n\n<ComponentPreview styleName=\"base-nova\" name=\"select-invalid\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"select-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Select](https://base-ui.com/react/components/select#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/separator.mdx",
    "content": "---\ntitle: Separator\ndescription: Visually or semantically separates content.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/separator\n  api: https://base-ui.com/react/components/separator#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"separator-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add separator\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"separator\"\n  title=\"components/ui/separator.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Separator } from \"@/components/ui/separator\"\n```\n\n```tsx showLineNumbers\n<Separator />\n```\n\n## Examples\n\n### Vertical\n\nUse `orientation=\"vertical\"` for a vertical separator.\n\n<ComponentPreview styleName=\"base-nova\" name=\"separator-vertical\" />\n\n### Menu\n\nVertical separators between menu items with descriptions.\n\n<ComponentPreview styleName=\"base-nova\" name=\"separator-menu\" />\n\n### List\n\nHorizontal separators between list items.\n\n<ComponentPreview styleName=\"base-nova\" name=\"separator-list\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"separator-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Separator](https://base-ui.com/react/components/separator#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/sheet.mdx",
    "content": "---\ntitle: Sheet\ndescription: Extends the Dialog component to display content that complements the main content of the screen.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/dialog\n  api: https://base-ui.com/react/components/dialog#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"sheet-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add sheet\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"sheet\"\n  title=\"components/ui/sheet.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/components/ui/sheet\"\n```\n\n```tsx showLineNumbers\n<Sheet>\n  <SheetTrigger>Open</SheetTrigger>\n  <SheetContent>\n    <SheetHeader>\n      <SheetTitle>Are you absolutely sure?</SheetTitle>\n      <SheetDescription>This action cannot be undone.</SheetDescription>\n    </SheetHeader>\n  </SheetContent>\n</Sheet>\n```\n\n## Examples\n\n### Side\n\nUse the `side` prop on `SheetContent` to set the edge of the screen where the sheet appears. Values are `top`, `right`, `bottom`, or `left`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"sheet-side\" />\n\n### No Close Button\n\nUse `showCloseButton={false}` on `SheetContent` to hide the close button.\n\n<ComponentPreview styleName=\"base-nova\" name=\"sheet-no-close-button\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"sheet-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Dialog](https://base-ui.com/react/components/dialog#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/sidebar.mdx",
    "content": "---\ntitle: Sidebar\ndescription: A composable, themeable and customizable sidebar component.\nbase: base\ncomponent: true\n---\n\nimport { ExternalLinkIcon } from \"lucide-react\"\n\n<figure className=\"flex flex-col gap-4\">\n  <ComponentPreview\n    styleName=\"base-nova\"\n    name=\"sidebar-demo\"\n    type=\"block\"\n    className=\"w-full\"\n  />\n  <figcaption className=\"text-center text-sm text-gray-500\">\n    A sidebar that collapses to icons.\n  </figcaption>\n</figure>\n\nSidebars are one of the most complex components to build. They are central\nto any application and often contain a lot of moving parts.\n\nWe now have a solid foundation to build on top of. Composable. Themeable.\nCustomizable.\n\n[Browse the Blocks Library](/blocks).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add sidebar\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<ComponentSource\n  name=\"sidebar\"\n  title=\"components/ui/sidebar.tsx\"\n  styleName=\"base-nova\"\n/>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Structure\n\nA `Sidebar` component is composed of the following parts:\n\n- `SidebarProvider` - Handles collapsible state.\n- `Sidebar` - The sidebar container.\n- `SidebarHeader` and `SidebarFooter` - Sticky at the top and bottom of the sidebar.\n- `SidebarContent` - Scrollable content.\n- `SidebarGroup` - Section within the `SidebarContent`.\n- `SidebarTrigger` - Trigger for the `Sidebar`.\n\n<Image\n  src=\"/images/sidebar-structure.png\"\n  width=\"716\"\n  height=\"420\"\n  alt=\"Sidebar Structure\"\n  className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n/>\n<Image\n  src=\"/images/sidebar-structure-dark.png\"\n  width=\"716\"\n  height=\"420\"\n  alt=\"Sidebar Structure\"\n  className=\"mt-6 hidden w-full overflow-hidden rounded-lg border dark:block\"\n/>\n\n## Usage\n\n```tsx showLineNumbers title=\"app/layout.tsx\"\nimport { SidebarProvider, SidebarTrigger } from \"@/components/ui/sidebar\"\nimport { AppSidebar } from \"@/components/app-sidebar\"\n\nexport default function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <main>\n        <SidebarTrigger />\n        {children}\n      </main>\n    </SidebarProvider>\n  )\n}\n```\n\n```tsx showLineNumbers title=\"components/app-sidebar.tsx\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarHeader,\n} from \"@/components/ui/sidebar\"\n\nexport function AppSidebar() {\n  return (\n    <Sidebar>\n      <SidebarHeader />\n      <SidebarContent>\n        <SidebarGroup />\n        <SidebarGroup />\n      </SidebarContent>\n      <SidebarFooter />\n    </Sidebar>\n  )\n}\n```\n\n## SidebarProvider\n\nThe `SidebarProvider` component is used to provide the sidebar context to the `Sidebar` component. You should always wrap your application in a `SidebarProvider` component.\n\n### Props\n\n| Name           | Type                      | Description                                  |\n| -------------- | ------------------------- | -------------------------------------------- |\n| `defaultOpen`  | `boolean`                 | Default open state of the sidebar.           |\n| `open`         | `boolean`                 | Open state of the sidebar (controlled).      |\n| `onOpenChange` | `(open: boolean) => void` | Sets open state of the sidebar (controlled). |\n\n### Width\n\nIf you have a single sidebar in your application, you can use the `SIDEBAR_WIDTH` and `SIDEBAR_WIDTH_MOBILE` variables in `sidebar.tsx` to set the width of the sidebar.\n\n```tsx showLineNumbers title=\"components/ui/sidebar.tsx\"\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\n```\n\nFor multiple sidebars in your application, you can use the `--sidebar-width` and `--sidebar-width-mobile` CSS variables in the `style` prop.\n\n```tsx showLineNumbers\n<SidebarProvider\n  style={\n    {\n      \"--sidebar-width\": \"20rem\",\n      \"--sidebar-width-mobile\": \"20rem\",\n    } as React.CSSProperties\n  }\n>\n  <Sidebar />\n</SidebarProvider>\n```\n\n### Keyboard Shortcut\n\nTo trigger the sidebar, you use the `cmd+b` keyboard shortcut on Mac and `ctrl+b` on Windows.\n\n```tsx showLineNumbers title=\"components/ui/sidebar.tsx\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n```\n\n## Sidebar\n\nThe main `Sidebar` component used to render a collapsible sidebar.\n\n### Props\n\n| Property      | Type                              | Description                       |\n| ------------- | --------------------------------- | --------------------------------- |\n| `side`        | `left` or `right`                 | The side of the sidebar.          |\n| `variant`     | `sidebar`, `floating`, or `inset` | The variant of the sidebar.       |\n| `collapsible` | `offcanvas`, `icon`, or `none`    | Collapsible state of the sidebar. |\n\n| Prop        | Description                                                  |\n| ----------- | ------------------------------------------------------------ |\n| `offcanvas` | A collapsible sidebar that slides in from the left or right. |\n| `icon`      | A sidebar that collapses to icons.                           |\n| `none`      | A non-collapsible sidebar.                                   |\n\n<Callout>\n  **Note:** If you use the `inset` variant, remember to wrap your main content\n  in a `SidebarInset` component.\n</Callout>\n\n```tsx showLineNumbers\n<SidebarProvider>\n  <Sidebar variant=\"inset\" />\n  <SidebarInset>\n    <main>{children}</main>\n  </SidebarInset>\n</SidebarProvider>\n```\n\n## useSidebar\n\nThe `useSidebar` hook is used to control the sidebar.\n\n```tsx showLineNumbers\nimport { useSidebar } from \"@/components/ui/sidebar\"\n\nexport function AppSidebar() {\n  const {\n    state,\n    open,\n    setOpen,\n    openMobile,\n    setOpenMobile,\n    isMobile,\n    toggleSidebar,\n  } = useSidebar()\n}\n```\n\n| Property        | Type                      | Description                                   |\n| --------------- | ------------------------- | --------------------------------------------- |\n| `state`         | `expanded` or `collapsed` | The current state of the sidebar.             |\n| `open`          | `boolean`                 | Whether the sidebar is open.                  |\n| `setOpen`       | `(open: boolean) => void` | Sets the open state of the sidebar.           |\n| `openMobile`    | `boolean`                 | Whether the sidebar is open on mobile.        |\n| `setOpenMobile` | `(open: boolean) => void` | Sets the open state of the sidebar on mobile. |\n| `isMobile`      | `boolean`                 | Whether the sidebar is on mobile.             |\n| `toggleSidebar` | `() => void`              | Toggles the sidebar. Desktop and mobile.      |\n\n## SidebarHeader\n\nUse the `SidebarHeader` component to add a sticky header to the sidebar.\n\n```tsx showLineNumbers title=\"components/app-sidebar.tsx\"\n<Sidebar>\n  <SidebarHeader>\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton>\n              Select Workspace\n              <ChevronDown className=\"ml-auto\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent className=\"w-[--radix-popper-anchor-width]\">\n            <DropdownMenuItem>\n              <span>Acme Inc</span>\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  </SidebarHeader>\n</Sidebar>\n```\n\n## SidebarFooter\n\nUse the `SidebarFooter` component to add a sticky footer to the sidebar.\n\n```tsx showLineNumbers\n<Sidebar>\n  <SidebarFooter>\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <SidebarMenuButton>\n          <User2 /> Username\n        </SidebarMenuButton>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  </SidebarFooter>\n</Sidebar>\n```\n\n## SidebarContent\n\nThe `SidebarContent` component is used to wrap the content of the sidebar. This is where you add your `SidebarGroup` components. It is scrollable.\n\n```tsx showLineNumbers\n<Sidebar>\n  <SidebarContent>\n    <SidebarGroup />\n    <SidebarGroup />\n  </SidebarContent>\n</Sidebar>\n```\n\n## SidebarGroup\n\nUse the `SidebarGroup` component to create a section within the sidebar.\n\nA `SidebarGroup` has a `SidebarGroupLabel`, a `SidebarGroupContent` and an optional `SidebarGroupAction`.\n\n```tsx showLineNumbers\n<SidebarGroup>\n  <SidebarGroupLabel>Application</SidebarGroupLabel>\n  <SidebarGroupAction>\n    <Plus /> <span className=\"sr-only\">Add Project</span>\n  </SidebarGroupAction>\n  <SidebarGroupContent></SidebarGroupContent>\n</SidebarGroup>\n```\n\nTo make a `SidebarGroup` collapsible, wrap it in a `Collapsible`.\n\n```tsx showLineNumbers\n<Collapsible defaultOpen className=\"group/collapsible\">\n  <SidebarGroup>\n    <SidebarGroupLabel asChild>\n      <CollapsibleTrigger>\n        Help\n        <ChevronDown className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-180\" />\n      </CollapsibleTrigger>\n    </SidebarGroupLabel>\n    <CollapsibleContent>\n      <SidebarGroupContent />\n    </CollapsibleContent>\n  </SidebarGroup>\n</Collapsible>\n```\n\n## SidebarMenu\n\nThe `SidebarMenu` component is used for building a menu within a `SidebarGroup`.\n\n<Image\n  src=\"/images/sidebar-menu.png\"\n  width=\"716\"\n  height=\"420\"\n  alt=\"Sidebar Menu\"\n  className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n/>\n<Image\n  src=\"/images/sidebar-menu-dark.png\"\n  width=\"716\"\n  height=\"420\"\n  alt=\"Sidebar Menu\"\n  className=\"mt-6 hidden w-full overflow-hidden rounded-lg border dark:block\"\n/>\n\n```tsx showLineNumbers\n<SidebarMenu>\n  {projects.map((project) => (\n    <SidebarMenuItem key={project.name}>\n      <SidebarMenuButton asChild>\n        <a href={project.url}>\n          <project.icon />\n          <span>{project.name}</span>\n        </a>\n      </SidebarMenuButton>\n    </SidebarMenuItem>\n  ))}\n</SidebarMenu>\n```\n\n## SidebarMenuButton\n\nThe `SidebarMenuButton` component is used to render a menu button within a `SidebarMenuItem`.\n\nBy default, the `SidebarMenuButton` renders a button but you can use the `asChild` prop to render a different component such as a `Link` or an `a` tag.\n\nUse the `isActive` prop to mark a menu item as active.\n\n```tsx showLineNumbers\n<SidebarMenuButton asChild isActive>\n  <a href=\"#\">Home</a>\n</SidebarMenuButton>\n```\n\n## SidebarMenuAction\n\nThe `SidebarMenuAction` component is used to render a menu action within a `SidebarMenuItem`.\n\n```tsx showLineNumbers\n<SidebarMenuItem>\n  <SidebarMenuButton asChild>\n    <a href=\"#\">\n      <Home />\n      <span>Home</span>\n    </a>\n  </SidebarMenuButton>\n  <SidebarMenuAction>\n    <Plus /> <span className=\"sr-only\">Add Project</span>\n  </SidebarMenuAction>\n</SidebarMenuItem>\n```\n\n## SidebarMenuSub\n\nThe `SidebarMenuSub` component is used to render a submenu within a `SidebarMenu`.\n\n```tsx showLineNumbers\n<SidebarMenuItem>\n  <SidebarMenuButton />\n  <SidebarMenuSub>\n    <SidebarMenuSubItem>\n      <SidebarMenuSubButton />\n    </SidebarMenuSubItem>\n  </SidebarMenuSub>\n</SidebarMenuItem>\n```\n\n## SidebarMenuBadge\n\nThe `SidebarMenuBadge` component is used to render a badge within a `SidebarMenuItem`.\n\n```tsx showLineNumbers\n<SidebarMenuItem>\n  <SidebarMenuButton />\n  <SidebarMenuBadge>24</SidebarMenuBadge>\n</SidebarMenuItem>\n```\n\n## SidebarMenuSkeleton\n\nThe `SidebarMenuSkeleton` component is used to render a skeleton for a `SidebarMenu`.\n\n```tsx showLineNumbers\n<SidebarMenu>\n  {Array.from({ length: 5 }).map((_, index) => (\n    <SidebarMenuItem key={index}>\n      <SidebarMenuSkeleton />\n    </SidebarMenuItem>\n  ))}\n</SidebarMenu>\n```\n\n## SidebarTrigger\n\nUse the `SidebarTrigger` component to render a button that toggles the sidebar.\n\n```tsx showLineNumbers\nimport { useSidebar } from \"@/components/ui/sidebar\"\n\nexport function CustomTrigger() {\n  const { toggleSidebar } = useSidebar()\n\n  return <button onClick={toggleSidebar}>Toggle Sidebar</button>\n}\n```\n\n## SidebarRail\n\nThe `SidebarRail` component is used to render a rail within a `Sidebar`. This rail can be used to toggle the sidebar.\n\n```tsx showLineNumbers\n<Sidebar>\n  <SidebarHeader />\n  <SidebarContent>\n    <SidebarGroup />\n  </SidebarContent>\n  <SidebarFooter />\n  <SidebarRail />\n</Sidebar>\n```\n\n## Controlled Sidebar\n\nUse the `open` and `onOpenChange` props to control the sidebar.\n\n```tsx showLineNumbers\nexport function AppSidebar() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <SidebarProvider open={open} onOpenChange={setOpen}>\n      <Sidebar />\n    </SidebarProvider>\n  )\n}\n```\n\n## Theming\n\nWe use the following CSS variables to theme the sidebar.\n\n```css\n@layer base {\n  :root {\n    --sidebar-background: 0 0% 98%;\n    --sidebar-foreground: 240 5.3% 26.1%;\n    --sidebar-primary: 240 5.9% 10%;\n    --sidebar-primary-foreground: 0 0% 98%;\n    --sidebar-accent: 240 4.8% 95.9%;\n    --sidebar-accent-foreground: 240 5.9% 10%;\n    --sidebar-border: 220 13% 91%;\n    --sidebar-ring: 217.2 91.2% 59.8%;\n  }\n\n  .dark {\n    --sidebar-background: 240 5.9% 10%;\n    --sidebar-foreground: 240 4.8% 95.9%;\n    --sidebar-primary: 0 0% 98%;\n    --sidebar-primary-foreground: 240 5.9% 10%;\n    --sidebar-accent: 240 3.7% 15.9%;\n    --sidebar-accent-foreground: 240 4.8% 95.9%;\n    --sidebar-border: 240 3.7% 15.9%;\n    --sidebar-ring: 217.2 91.2% 59.8%;\n  }\n}\n```\n\n## Styling\n\nHere are some tips for styling the sidebar based on different states.\n\n```tsx\n<Sidebar collapsible=\"icon\">\n  <SidebarContent>\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\" />\n  </SidebarContent>\n</Sidebar>\n```\n\n```tsx\n<SidebarMenuItem>\n  <SidebarMenuButton />\n  <SidebarMenuAction className=\"peer-data-[active=true]/menu-button:opacity-100\" />\n</SidebarMenuItem>\n```\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n{/* prettier-ignore */}\n<Button asChild size=\"sm\" className=\"mt-6\">\n  <a href=\"/view/base-nova/sidebar-rtl\" target=\"_blank\">View RTL Sidebar <ExternalLinkIcon /></a>\n</Button>\n\n## Changelog\n\n### RTL Support\n\nIf you're upgrading from a previous version of the `Sidebar` component, you'll need to apply the following updates to add RTL support:\n\n<Steps>\n\n<Step>Add `dir` prop to Sidebar component.</Step>\n\nAdd `dir` to the destructured props and pass it to `SheetContent` for mobile:\n\n```diff\n  function Sidebar({\n    side = \"left\",\n    variant = \"sidebar\",\n    collapsible = \"offcanvas\",\n    className,\n    children,\n+   dir,\n    ...props\n  }: React.ComponentProps<\"div\"> & {\n    side?: \"left\" | \"right\"\n    variant?: \"sidebar\" | \"floating\" | \"inset\"\n    collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n  }) {\n```\n\nThen pass it to `SheetContent` in the mobile view:\n\n```diff\n  <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n    <SheetContent\n+     dir={dir}\n      data-sidebar=\"sidebar\"\n      data-slot=\"sidebar\"\n      data-mobile=\"true\"\n```\n\n<Step>Add `data-side` attribute to sidebar container.</Step>\n\nAdd `data-side={side}` to the sidebar container element:\n\n```diff\n  <div\n    data-slot=\"sidebar-container\"\n+   data-side={side}\n    className={cn(\n```\n\n<Step>Update sidebar container positioning classes.</Step>\n\nReplace JavaScript ternary conditional classes with CSS data attribute selectors:\n\n```diff\n  className={cn(\n-   \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n-   side === \"left\"\n-     ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n-     : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n+   \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex data-[side=left]:left-0 data-[side=right]:right-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n```\n\n<Step>Update SidebarRail positioning classes.</Step>\n\nUpdate the `SidebarRail` component to use physical positioning for the rail:\n\n```diff\n  className={cn(\n-   \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-end-4 group-data-[side=right]:start-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex\",\n+   \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 ltr:-translate-x-1/2 rtl:-translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex\",\n```\n\n<Step>Add RTL flip to SidebarTrigger icon.</Step>\n\nAdd `className=\"rtl:rotate-180\"` to the icon in `SidebarTrigger` to flip it in RTL mode:\n\n```diff\n  <Button ...>\n-   <PanelLeftIcon />\n+   <PanelLeftIcon className=\"rtl:rotate-180\" />\n    <span className=\"sr-only\">Toggle Sidebar</span>\n  </Button>\n```\n\n</Steps>\n\nAfter applying these changes, you can use the `dir` prop to set the direction:\n\n```tsx\n<Sidebar dir=\"rtl\" side=\"right\">\n  {/* ... */}\n</Sidebar>\n```\n\nThe sidebar will correctly position itself and handle interactions in both LTR and RTL layouts.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/skeleton.mdx",
    "content": "---\ntitle: Skeleton\ndescription: Use to show a placeholder while content is loading.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"skeleton-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add skeleton\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"skeleton\"\n  title=\"components/ui/skeleton.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Skeleton } from \"@/components/ui/skeleton\"\n```\n\n```tsx\n<Skeleton className=\"h-[20px] w-[100px] rounded-full\" />\n```\n\n## Examples\n\n### Avatar\n\n<ComponentPreview styleName=\"base-nova\" name=\"skeleton-avatar\" />\n\n### Card\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"skeleton-card\"\n  previewClassName=\"h-80\"\n/>\n\n### Text\n\n<ComponentPreview styleName=\"base-nova\" name=\"skeleton-text\" />\n\n### Form\n\n<ComponentPreview styleName=\"base-nova\" name=\"skeleton-form\" />\n\n### Table\n\n<ComponentPreview styleName=\"base-nova\" name=\"skeleton-table\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"skeleton-rtl\" direction=\"rtl\" />\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/slider.mdx",
    "content": "---\ntitle: Slider\ndescription: An input where the user selects a value from within a given range.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/slider\n  api: https://base-ui.com/react/components/slider#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"slider-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add slider\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"slider\"\n  title=\"components/ui/slider.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Slider } from \"@/components/ui/slider\"\n```\n\n```tsx\n<Slider defaultValue={[33]} max={100} step={1} />\n```\n\n## Examples\n\n### Range\n\nUse an array with two values for a range slider.\n\n<ComponentPreview styleName=\"base-nova\" name=\"slider-range\" />\n\n### Multiple Thumbs\n\nUse an array with multiple values for multiple thumbs.\n\n<ComponentPreview styleName=\"base-nova\" name=\"slider-multiple\" />\n\n### Vertical\n\nUse `orientation=\"vertical\"` for a vertical slider.\n\n<ComponentPreview styleName=\"base-nova\" name=\"slider-vertical\" />\n\n### Controlled\n\n<ComponentPreview styleName=\"base-nova\" name=\"slider-controlled\" />\n\n### Disabled\n\nUse the `disabled` prop to disable the slider.\n\n<ComponentPreview styleName=\"base-nova\" name=\"slider-disabled\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"slider-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Slider](https://base-ui.com/react/components/slider#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/sonner.mdx",
    "content": "---\ntitle: Sonner\ndescription: An opinionated toast component for React.\nbase: base\ncomponent: true\nlinks:\n  doc: https://sonner.emilkowal.ski\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"sonner-demo\" />\n\n## About\n\nSonner is built and maintained by [emilkowalski](https://twitter.com/emilkowalski).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Run the following command:</Step>\n\n```bash\nnpx shadcn@latest add sonner\n```\n\n<Step>Add the Toaster component.</Step>\n\n```tsx title=\"app/layout.tsx\" {1,9} showLineNumbers\nimport { Toaster } from \"@/components/ui/sonner\"\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <head />\n      <body>\n        <main>{children}</main>\n        <Toaster />\n      </body>\n    </html>\n  )\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install sonner next-themes\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"sonner\"\n  title=\"components/ui/sonner.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Add the Toaster component.</Step>\n\n```tsx showLineNumbers title=\"app/layout.tsx\" {1,8}\nimport { Toaster } from \"@/components/ui/sonner\"\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <head />\n      <body>\n        <Toaster />\n        <main>{children}</main>\n      </body>\n    </html>\n  )\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { toast } from \"sonner\"\n```\n\n```tsx\ntoast(\"Event has been created.\")\n```\n\n## Examples\n\n### Types\n\n<ComponentPreview styleName=\"base-nova\" name=\"sonner-types\" />\n\n### Description\n\n<ComponentPreview styleName=\"base-nova\" name=\"sonner-description\" />\n\n### Position\n\nUse the `position` prop to change the position of the toast.\n\n<ComponentPreview styleName=\"base-nova\" name=\"sonner-position\" />\n\n## API Reference\n\nSee the [Sonner API Reference](https://sonner.emilkowal.ski/getting-started) for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/spinner.mdx",
    "content": "---\ntitle: Spinner\ndescription: An indicator that can be used to show a loading state.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"spinner-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add spinner\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"spinner\"\n  title=\"components/ui/spinner.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Spinner } from \"@/components/ui/spinner\"\n```\n\n```tsx\n<Spinner />\n```\n\n## Customization\n\nYou can replace the default spinner icon with any other icon by editing the `Spinner` component.\n\n<ComponentPreview styleName=\"base-nova\" name=\"spinner-custom\" />\n\n```tsx showLineNumbers title=\"components/ui/spinner.tsx\"\nimport { LoaderIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <LoaderIcon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n```\n\n## Examples\n\n### Size\n\nUse the `size-*` utility class to change the size of the spinner.\n\n<ComponentPreview styleName=\"base-nova\" name=\"spinner-size\" />\n\n### Button\n\nAdd a spinner to a button to indicate a loading state. Place the `<Spinner />` before the label with `data-icon=\"inline-start\"` for a start position, or after the label with `data-icon=\"inline-end\"` for an end position.\n\n<ComponentPreview styleName=\"base-nova\" name=\"spinner-button\" />\n\n### Badge\n\nAdd a spinner to a badge to indicate a loading state. Place the `<Spinner />` before the label with `data-icon=\"inline-start\"` for a start position, or after the label with `data-icon=\"inline-end\"` for an end position.\n\n<ComponentPreview styleName=\"base-nova\" name=\"spinner-badge\" />\n\n### Input Group\n\n<ComponentPreview styleName=\"base-nova\" name=\"spinner-input-group\" />\n\n### Empty\n\n<ComponentPreview styleName=\"base-nova\" name=\"spinner-empty\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"spinner-rtl\" direction=\"rtl\" />\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/switch.mdx",
    "content": "---\ntitle: Switch\ndescription: A control that allows the user to toggle between checked and not checked.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/switch\n  api: https://base-ui.com/react/components/switch#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"switch-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add switch\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"switch\"\n  title=\"components/ui/switch.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Switch } from \"@/components/ui/switch\"\n```\n\n```tsx\n<Switch />\n```\n\n## Examples\n\n### Description\n\n<ComponentPreview styleName=\"base-nova\" name=\"switch-description\" />\n\n### Choice Card\n\nCard-style selection where `FieldLabel` wraps the entire `Field` for a clickable card pattern.\n\n<ComponentPreview styleName=\"base-nova\" name=\"switch-choice-card\" />\n\n### Disabled\n\nAdd the `disabled` prop to the `Switch` component to disable the switch. Add the `data-disabled` prop to the `Field` component for styling.\n\n<ComponentPreview styleName=\"base-nova\" name=\"switch-disabled\" />\n\n### Invalid\n\nAdd the `aria-invalid` prop to the `Switch` component to indicate an invalid state. Add the `data-invalid` prop to the `Field` component for styling.\n\n<ComponentPreview styleName=\"base-nova\" name=\"switch-invalid\" />\n\n### Size\n\nUse the `size` prop to change the size of the switch.\n\n<ComponentPreview styleName=\"base-nova\" name=\"switch-sizes\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"switch-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Switch](https://base-ui.com/react/components/switch#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/table.mdx",
    "content": "---\ntitle: Table\ndescription: A responsive table component.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"table-demo\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add table\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"table\"\n  title=\"components/ui/table.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/components/ui/table\"\n```\n\n```tsx showLineNumbers\n<Table>\n  <TableCaption>A list of your recent invoices.</TableCaption>\n  <TableHeader>\n    <TableRow>\n      <TableHead className=\"w-[100px]\">Invoice</TableHead>\n      <TableHead>Status</TableHead>\n      <TableHead>Method</TableHead>\n      <TableHead className=\"text-right\">Amount</TableHead>\n    </TableRow>\n  </TableHeader>\n  <TableBody>\n    <TableRow>\n      <TableCell className=\"font-medium\">INV001</TableCell>\n      <TableCell>Paid</TableCell>\n      <TableCell>Credit Card</TableCell>\n      <TableCell className=\"text-right\">$250.00</TableCell>\n    </TableRow>\n  </TableBody>\n</Table>\n```\n\n## Examples\n\n### Footer\n\nUse the `<TableFooter />` component to add a footer to the table.\n\n<ComponentPreview styleName=\"base-nova\" name=\"table-footer\" />\n\n### Actions\n\nA table showing actions for each row using a `<DropdownMenu />` component.\n\n<ComponentPreview styleName=\"base-nova\" name=\"table-actions\" />\n\n## Data Table\n\nYou can use the `<Table />` component to build more complex data tables. Combine it with [@tanstack/react-table](https://tanstack.com/table/v8) to create tables with sorting, filtering and pagination.\n\nSee the [Data Table](/docs/components/data-table) documentation for more information.\n\nYou can also see an example of a data table in the [Tasks](/examples/tasks) demo.\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"table-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/tabs.mdx",
    "content": "---\ntitle: Tabs\ndescription: A set of layered sections of content—known as tab panels—that are displayed one at a time.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/tabs\n  api: https://base-ui.com/react/components/tabs#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"tabs-demo\"\n  previewClassName=\"h-96\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add tabs\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"tabs\"\n  title=\"components/ui/tabs.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\n```\n\n```tsx showLineNumbers\n<Tabs defaultValue=\"account\" className=\"w-[400px]\">\n  <TabsList>\n    <TabsTrigger value=\"account\">Account</TabsTrigger>\n    <TabsTrigger value=\"password\">Password</TabsTrigger>\n  </TabsList>\n  <TabsContent value=\"account\">Make changes to your account here.</TabsContent>\n  <TabsContent value=\"password\">Change your password here.</TabsContent>\n</Tabs>\n```\n\n## Examples\n\n### Line\n\nUse the `variant=\"line\"` prop on `TabsList` for a line style.\n\n<ComponentPreview styleName=\"base-nova\" name=\"tabs-line\" />\n\n### Vertical\n\nUse `orientation=\"vertical\"` for vertical tabs.\n\n<ComponentPreview styleName=\"base-nova\" name=\"tabs-vertical\" />\n\n### Disabled\n\n<ComponentPreview styleName=\"base-nova\" name=\"tabs-disabled\" />\n\n### Icons\n\n<ComponentPreview styleName=\"base-nova\" name=\"tabs-icons\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"tabs-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Tabs](https://base-ui.com/react/components/tabs#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/textarea.mdx",
    "content": "---\ntitle: Textarea\ndescription: Displays a form textarea or a component that looks like a textarea.\nbase: base\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"textarea-demo\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add textarea\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"textarea\"\n  title=\"components/ui/textarea.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Textarea } from \"@/components/ui/textarea\"\n```\n\n```tsx\n<Textarea />\n```\n\n## Examples\n\n### Field\n\nUse `Field`, `FieldLabel`, and `FieldDescription` to create a textarea with a label and description.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"textarea-field\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Disabled\n\nUse the `disabled` prop to disable the textarea. To style the disabled state, add the `data-disabled` attribute to the `Field` component.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"textarea-disabled\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Invalid\n\nUse the `aria-invalid` prop to mark the textarea as invalid. To style the invalid state, add the `data-invalid` attribute to the `Field` component.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"textarea-invalid\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Button\n\nPair with `Button` to create a textarea with a submit button.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"textarea-button\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"textarea-rtl\" direction=\"rtl\" />\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/toast.mdx",
    "content": "---\ntitle: Toast\ndescription: A succinct message that is displayed temporarily.\nbase: base\ncomponent: true\n---\n\nThe toast component has been deprecated. Use the [sonner](/docs/components/sonner) component instead.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/toggle-group.mdx",
    "content": "---\ntitle: Toggle Group\ndescription: A set of two-state buttons that can be toggled on or off.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/toggle-group\n  api: https://base-ui.com/react/components/toggle-group#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-group-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add toggle-group\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"toggle-group\"\n  title=\"components/ui/toggle-group.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\"\n```\n\n```tsx\n<ToggleGroup type=\"single\">\n  <ToggleGroupItem value=\"a\">A</ToggleGroupItem>\n  <ToggleGroupItem value=\"b\">B</ToggleGroupItem>\n  <ToggleGroupItem value=\"c\">C</ToggleGroupItem>\n</ToggleGroup>\n```\n\n## Examples\n\n### Outline\n\nUse `variant=\"outline\"` for an outline style.\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-group-outline\" />\n\n### Size\n\nUse the `size` prop to change the size of the toggle group.\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-group-sizes\" />\n\n### Spacing\n\nUse `spacing` to add spacing between toggle group items.\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-group-spacing\" />\n\n### Vertical\n\nUse `orientation=\"vertical\"` for vertical toggle groups.\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-group-vertical\" />\n\n### Disabled\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-group-disabled\" />\n\n### Custom\n\nA custom toggle group example.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"toggle-group-font-weight-selector\"\n  previewClassName=\"*:data-[slot=field]:max-w-xs\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"toggle-group-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Base UI Toggle Group](https://base-ui.com/react/components/toggle-group#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/toggle.mdx",
    "content": "---\ntitle: Toggle\ndescription: A two-state button that can be either on or off.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/toggle\n  api: https://base-ui.com/react/components/toggle#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add toggle\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"toggle\"\n  title=\"components/ui/toggle.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Toggle } from \"@/components/ui/toggle\"\n```\n\n```tsx\n<Toggle>Toggle</Toggle>\n```\n\n## Examples\n\n### Outline\n\nUse `variant=\"outline\"` for an outline style.\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-outline\" />\n\n### With Text\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-text\" />\n\n### Size\n\nUse the `size` prop to change the size of the toggle.\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-sizes\" />\n\n### Disabled\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-disabled\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"toggle-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Toggle](https://base-ui.com/react/components/toggle#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/tooltip.mdx",
    "content": "---\ntitle: Tooltip\ndescription: A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\nbase: base\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/tooltip\n  api: https://base-ui.com/react/components/tooltip#api-reference\n---\n\n<ComponentPreview styleName=\"base-nova\" name=\"tooltip-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Run the following command:</Step>\n\n```bash\nnpx shadcn@latest add tooltip\n```\n\n<Step>Add the `TooltipProvider` to the root of your app.</Step>\n\n```tsx title=\"app/layout.tsx\" showLineNumbers {1,7}\nimport { TooltipProvider } from \"@/components/ui/tooltip\"\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <TooltipProvider>{children}</TooltipProvider>\n      </body>\n    </html>\n  )\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"tooltip\"\n  title=\"components/ui/tooltip.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n<Step>Add the `TooltipProvider` to the root of your app.</Step>\n\n```tsx title=\"app/layout.tsx\" showLineNumbers {1,7}\nimport { TooltipProvider } from \"@/components/ui/tooltip\"\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <TooltipProvider>{children}</TooltipProvider>\n      </body>\n    </html>\n  )\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n```\n\n```tsx showLineNumbers\n<Tooltip>\n  <TooltipTrigger>Hover</TooltipTrigger>\n  <TooltipContent>\n    <p>Add to library</p>\n  </TooltipContent>\n</Tooltip>\n```\n\n## Examples\n\n### Side\n\nUse the `side` prop to change the position of the tooltip.\n\n<ComponentPreview styleName=\"base-nova\" name=\"tooltip-sides\" />\n\n### With Keyboard Shortcut\n\n<ComponentPreview styleName=\"base-nova\" name=\"tooltip-keyboard\" />\n\n### Disabled Button\n\nShow a tooltip on a disabled button by wrapping it with a span.\n\n<ComponentPreview styleName=\"base-nova\" name=\"tooltip-disabled\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"base-nova\" name=\"tooltip-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Base UI Tooltip](https://base-ui.com/react/components/tooltip#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/base/typography.mdx",
    "content": "---\ntitle: Typography\ndescription: Styles for headings, paragraphs, lists, etc.\nbase: base\ncomponent: true\n---\n\nWe do not ship any typography styles by default. This page is an example of how you can use utility classes to style your text.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"typography-demo\"\n  className=\"[&_.preview]:h-auto!\"\n  hideCode\n/>\n\n## h1\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-h1\" />\n\n## h2\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-h2\" />\n\n## h3\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-h3\" />\n\n## h4\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-h4\" />\n\n## p\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-p\" />\n\n## blockquote\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-blockquote\" />\n\n## table\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-table\" />\n\n## list\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-list\" />\n\n## Inline code\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-inline-code\" />\n\n## Lead\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-lead\" />\n\n## Large\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-large\" />\n\n## Small\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-small\" />\n\n## Muted\n\n<ComponentPreview styleName=\"base-nova\" name=\"typography-muted\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"typography-rtl\"\n  direction=\"rtl\"\n  className=\"[&_.preview]:h-auto!\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/index.mdx",
    "content": "---\ntitle: Components\ndescription: Here you can find all the components available in the library. We are working on adding more components.\n---\n\n<ComponentsList />\n\n---\n\nCan't find what you need? Try the [registry directory](/docs/directory) for community-maintained components.\n"
  },
  {
    "path": "apps/v4/content/docs/components/meta.json",
    "content": "{\n  \"title\": \"Components\",\n  \"pages\": [\"...\"]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/accordion.mdx",
    "content": "---\ntitle: Accordion\ndescription: A vertically stacked set of interactive headings that each reveal a section of content.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/primitives/docs/components/accordion\n  api: https://www.radix-ui.com/primitives/docs/components/accordion#api-reference\n---\n\n<ComponentPreview\n  name=\"accordion-demo\"\n  styleName=\"radix-nova\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[300px]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add accordion\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"accordion\"\n  title=\"components/ui/accordion.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/ui/accordion\"\n```\n\n```tsx showLineNumbers\n<Accordion type=\"single\" collapsible defaultValue=\"item-1\">\n  <AccordionItem value=\"item-1\">\n    <AccordionTrigger>Is it accessible?</AccordionTrigger>\n    <AccordionContent>\n      Yes. It adheres to the WAI-ARIA design pattern.\n    </AccordionContent>\n  </AccordionItem>\n</Accordion>\n```\n\n## Examples\n\n### Basic\n\nA basic accordion that shows one item at a time. The first item is open by default.\n\n<ComponentPreview\n  name=\"accordion-basic\"\n  styleName=\"radix-nova\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[300px]\"\n/>\n\n### Multiple\n\nUse `type=\"multiple\"` to allow multiple items to be open at the same time.\n\n<ComponentPreview\n  name=\"accordion-multiple\"\n  styleName=\"radix-nova\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[36rem] md:h-[30rem]\"\n/>\n\n### Disabled\n\nUse the `disabled` prop on `AccordionItem` to disable individual items.\n\n<ComponentPreview\n  name=\"accordion-disabled\"\n  styleName=\"radix-nova\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[300px]\"\n/>\n\n### Borders\n\nAdd `border` to the `Accordion` and `border-b last:border-b-0` to the `AccordionItem` to add borders to the items.\n\n<ComponentPreview\n  name=\"accordion-borders\"\n  styleName=\"radix-nova\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-96 md:h-80\"\n/>\n\n### Card\n\nWrap the `Accordion` in a `Card` component.\n\n<ComponentPreview\n  name=\"accordion-card\"\n  styleName=\"radix-nova\"\n  align=\"start\"\n  previewClassName=\"*:data-[slot=accordion]:max-w-sm h-[32rem] md:h-[28rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"accordion-rtl\"\n  align=\"start\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Radix UI](https://www.radix-ui.com/primitives/docs/components/accordion#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/alert-dialog.mdx",
    "content": "---\ntitle: Alert Dialog\ndescription: A modal dialog that interrupts the user with important content and expects a response.\nfeatured: true\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/primitives/docs/components/alert-dialog\n  api: https://www.radix-ui.com/primitives/docs/components/alert-dialog#api-reference\n---\n\n<ComponentPreview\n  name=\"alert-dialog-demo\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-56\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add alert-dialog\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"alert-dialog\"\n  title=\"components/ui/alert-dialog.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/components/ui/alert-dialog\"\n```\n\n```tsx showLineNumbers\n<AlertDialog>\n  <AlertDialogTrigger asChild>\n    <Button variant=\"outline\">Show Dialog</Button>\n  </AlertDialogTrigger>\n  <AlertDialogContent>\n    <AlertDialogHeader>\n      <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n      <AlertDialogDescription>\n        This action cannot be undone. This will permanently delete your account\n        from our servers.\n      </AlertDialogDescription>\n    </AlertDialogHeader>\n    <AlertDialogFooter>\n      <AlertDialogCancel>Cancel</AlertDialogCancel>\n      <AlertDialogAction>Continue</AlertDialogAction>\n    </AlertDialogFooter>\n  </AlertDialogContent>\n</AlertDialog>\n```\n\n## Examples\n\n### Basic\n\nA basic alert dialog with a title, description, and cancel and continue buttons.\n\n<ComponentPreview\n  name=\"alert-dialog-basic\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-56\"\n/>\n\n### Small\n\nUse the `size=\"sm\"` prop to make the alert dialog smaller.\n\n<ComponentPreview\n  name=\"alert-dialog-small\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-56\"\n/>\n\n### Media\n\nUse the `AlertDialogMedia` component to add a media element such as an icon or image to the alert dialog.\n\n<ComponentPreview\n  name=\"alert-dialog-media\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-56\"\n/>\n\n### Small with Media\n\nUse the `size=\"sm\"` prop to make the alert dialog smaller and the `AlertDialogMedia` component to add a media element such as an icon or image to the alert dialog.\n\n<ComponentPreview\n  name=\"alert-dialog-small-media\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-56\"\n/>\n\n### Destructive\n\nUse the `AlertDialogAction` component to add a destructive action button to the alert dialog.\n\n<ComponentPreview\n  name=\"alert-dialog-destructive\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-56\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"alert-dialog-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-56\"\n/>\n\n## API Reference\n\n### size\n\nUse the `size` prop on the `AlertDialogContent` component to control the size of the alert dialog. It accepts the following values:\n\n| Prop   | Type                | Default     |\n| ------ | ------------------- | ----------- |\n| `size` | `\"default\" \\| \"sm\"` | `\"default\"` |\n\nFor more information about the other components and their props, see the [Radix UI documentation](https://www.radix-ui.com/primitives/docs/components/alert-dialog#api-reference).\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/alert.mdx",
    "content": "---\ntitle: Alert\ndescription: Displays a callout for user attention.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview\n  name=\"alert-demo\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add alert\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"alert\"\n  title=\"components/ui/alert.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Alert,\n  AlertAction,\n  AlertDescription,\n  AlertTitle,\n} from \"@/components/ui/alert\"\n```\n\n```tsx showLineNumbers\n<Alert>\n  <InfoIcon />\n  <AlertTitle>Heads up!</AlertTitle>\n  <AlertDescription>\n    You can add components and dependencies to your app using the cli.\n  </AlertDescription>\n  <AlertAction>\n    <Button variant=\"outline\">Enable</Button>\n  </AlertAction>\n</Alert>\n```\n\n## Examples\n\n### Basic\n\nA basic alert with an icon, title and description.\n\n<ComponentPreview\n  name=\"alert-basic\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n### Destructive\n\nUse `variant=\"destructive\"` to create a destructive alert.\n\n<ComponentPreview\n  name=\"alert-destructive\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n### Action\n\nUse `AlertAction` to add a button or other action element to the alert.\n\n<ComponentPreview\n  name=\"alert-action\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n### Custom Colors\n\nYou can customize the alert colors by adding custom classes such as `bg-amber-50 dark:bg-amber-950` to the `Alert` component.\n\n<ComponentPreview\n  name=\"alert-colors\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"alert-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto sm:h-72 p-6\"\n/>\n\n## API Reference\n\n### Alert\n\nThe `Alert` component displays a callout for user attention.\n\n| Prop      | Type                         | Default     |\n| --------- | ---------------------------- | ----------- |\n| `variant` | `\"default\" \\| \"destructive\"` | `\"default\"` |\n\n### AlertTitle\n\nThe `AlertTitle` component displays the title of the alert.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AlertDescription\n\nThe `AlertDescription` component displays the description or content of the alert.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AlertAction\n\nThe `AlertAction` component displays an action element (like a button) positioned absolutely in the top-right corner of the alert.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/aspect-ratio.mdx",
    "content": "---\ntitle: Aspect Ratio\ndescription: Displays content within a desired ratio.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/primitives/docs/components/aspect-ratio\n  api: https://www.radix-ui.com/primitives/docs/components/aspect-ratio#api-reference\n---\n\n<ComponentPreview name=\"aspect-ratio-demo\" styleName=\"radix-nova\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add aspect-ratio\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"aspect-ratio\"\n  title=\"components/ui/aspect-ratio.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { AspectRatio } from \"@/components/ui/aspect-ratio\"\n```\n\n```tsx showLineNumbers\n<AspectRatio ratio={16 / 9}>\n  <Image src=\"...\" alt=\"Image\" className=\"rounded-md object-cover\" />\n</AspectRatio>\n```\n\n## Examples\n\n### Square\n\nA square aspect ratio component using the `ratio={1 / 1}` prop. This is useful for displaying images in a square format.\n\n<ComponentPreview name=\"aspect-ratio-square\" styleName=\"radix-nova\" />\n\n### Portrait\n\nA portrait aspect ratio component using the `ratio={9 / 16}` prop. This is useful for displaying images in a portrait format.\n\n<ComponentPreview\n  name=\"aspect-ratio-portrait\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-96\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"aspect-ratio-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-96\"\n/>\n\n## API Reference\n\n### AspectRatio\n\nThe `AspectRatio` component displays content within a desired ratio.\n\n| Prop        | Type     | Default | Required |\n| ----------- | -------- | ------- | -------- |\n| `ratio`     | `number` | -       | Yes      |\n| `className` | `string` | -       | No       |\n\nFor more information, see the [Radix UI documentation](https://www.radix-ui.com/primitives/docs/components/aspect-ratio#api-reference).\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/avatar.mdx",
    "content": "---\ntitle: Avatar\ndescription: An image element with a fallback for representing the user.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/primitives/docs/components/avatar\n  api: https://www.radix-ui.com/primitives/docs/components/avatar#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"avatar-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add avatar\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"avatar\"\n  title=\"components/ui/avatar.tsx\"\n\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\n```\n\n```tsx showLineNumbers\n<Avatar>\n  <AvatarImage src=\"https://github.com/shadcn.png\" />\n  <AvatarFallback>CN</AvatarFallback>\n</Avatar>\n```\n\n## Examples\n\n### Basic\n\nA basic avatar component with an image and a fallback.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"avatar-basic\" />\n\n### Badge\n\nUse the `AvatarBadge` component to add a badge to the avatar. The badge is positioned at the bottom right of the avatar.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"avatar-badge\" />\n\nUse the `className` prop to add custom styles to the badge such as custom colors, sizes, etc.\n\n```tsx showLineNumbers\n<Avatar>\n  <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n  <AvatarFallback>CN</AvatarFallback>\n  <AvatarBadge className=\"bg-green-600 dark:bg-green-800\" />\n</Avatar>\n```\n\n### Badge with Icon\n\nYou can also use an icon inside `<AvatarBadge>`.\n\n<ComponentPreview\n  name=\"avatar-badge-icon\"\n  styleName=\"radix-nova\"\n\n/>\n\n### Avatar Group\n\nUse the `AvatarGroup` component to add a group of avatars.\n\n<ComponentPreview\n  name=\"avatar-group\"\n  styleName=\"radix-nova\"\n\n/>\n\n### Avatar Group Count\n\nUse `<AvatarGroupCount>` to add a count to the group.\n\n<ComponentPreview\n  name=\"avatar-group-count\"\n  styleName=\"radix-nova\"\n\n/>\n\n### Avatar Group with Icon\n\nYou can also use an icon inside `<AvatarGroupCount>`.\n\n<ComponentPreview\n  name=\"avatar-group-count-icon\"\n  styleName=\"radix-nova\"\n\n/>\n\n### Sizes\n\nUse the `size` prop to change the size of the avatar.\n\n<ComponentPreview\n  name=\"avatar-size\"\n  styleName=\"radix-nova\"\n\n/>\n\n### Dropdown\n\nYou can use the `Avatar` component as a trigger for a dropdown menu.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"avatar-dropdown\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"avatar-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-72\"\n/>\n\n## API Reference\n\n### Avatar\n\nThe `Avatar` component is the root component that wraps the avatar image and fallback.\n\n| Prop        | Type                        | Default     |\n| ----------- | --------------------------- | ----------- |\n| `size`      | `\"default\" \\| \"sm\" \\| \"lg\"` | `\"default\"` |\n| `className` | `string`                    | -           |\n\n### AvatarImage\n\nThe `AvatarImage` component displays the avatar image. It accepts all Radix UI Avatar Image props.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `src`       | `string` | -       |\n| `alt`       | `string` | -       |\n| `className` | `string` | -       |\n\n### AvatarFallback\n\nThe `AvatarFallback` component displays a fallback when the image fails to load. It accepts all Radix UI Avatar Fallback props.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AvatarBadge\n\nThe `AvatarBadge` component displays a badge indicator on the avatar, typically positioned at the bottom right.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AvatarGroup\n\nThe `AvatarGroup` component displays a group of avatars with overlapping styling.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### AvatarGroupCount\n\nThe `AvatarGroupCount` component displays a count indicator in an avatar group, typically showing the number of additional avatars.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\nFor more information about Radix UI Avatar props, see the [Radix UI documentation](https://www.radix-ui.com/primitives/docs/components/avatar#api-reference).\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/badge.mdx",
    "content": "---\ntitle: Badge\ndescription: Displays a badge or a component that looks like a badge.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"badge-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add badge\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource name=\"badge\" title=\"components/ui/badge.tsx\" />\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Badge } from \"@/components/ui/badge\"\n```\n\n```tsx\n<Badge variant=\"default | outline | secondary | destructive\">Badge</Badge>\n```\n\n## Examples\n\n### Variants\n\nUse the `variant` prop to change the variant of the badge.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"badge-variants\" />\n\n### With Icon\n\nYou can render an icon inside the badge. Use `data-icon=\"inline-start\"` to render the icon on the left and `data-icon=\"inline-end\"` to render the icon on the right.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"badge-icon\" />\n\n### With Spinner\n\nYou can render a spinner inside the badge. Remember to add the `data-icon=\"inline-start\"` or `data-icon=\"inline-end\"` prop to the spinner.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"badge-spinner\" />\n\n### Link\n\nUse the `asChild` prop to render a link as a badge.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"badge-link\" />\n\n### Custom Colors\n\nYou can customize the colors of a badge by adding custom classes such as `bg-green-50 dark:bg-green-800` to the `Badge` component.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"badge-colors\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"badge-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Badge\n\nThe `Badge` component displays a badge or a component that looks like a badge.\n\n| Prop        | Type                                                                          | Default     |\n| ----------- | ----------------------------------------------------------------------------- | ----------- |\n| `variant`   | `\"default\" \\| \"secondary\" \\| \"destructive\" \\| \"outline\" \\| \"ghost\" \\| \"link\"` | `\"default\"` |\n| `className` | `string`                                                                      | -           |\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/breadcrumb.mdx",
    "content": "---\ntitle: Breadcrumb\ndescription: Displays the path to the current resource using a hierarchy of links.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"breadcrumb-demo\"\n  previewClassName=\"p-2\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add breadcrumb\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource name=\"breadcrumb\" title=\"components/ui/breadcrumb.tsx\" />\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\"\n```\n\n```tsx showLineNumbers\n<Breadcrumb>\n  <BreadcrumbList>\n    <BreadcrumbItem>\n      <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n    </BreadcrumbItem>\n    <BreadcrumbSeparator />\n    <BreadcrumbItem>\n      <BreadcrumbLink href=\"/components\">Components</BreadcrumbLink>\n    </BreadcrumbItem>\n    <BreadcrumbSeparator />\n    <BreadcrumbItem>\n      <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n    </BreadcrumbItem>\n  </BreadcrumbList>\n</Breadcrumb>\n```\n\n## Examples\n\n### Basic\n\nA basic breadcrumb with a home link and a components link.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"breadcrumb-basic\" />\n\n### Custom separator\n\nUse a custom component as `children` for `<BreadcrumbSeparator />` to create a custom separator.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"breadcrumb-separator\" />\n\n### Dropdown\n\nYou can compose `<BreadcrumbItem />` with a `<DropdownMenu />` to create a dropdown in the breadcrumb.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"breadcrumb-dropdown\" />\n\n### Collapsed\n\nWe provide a `<BreadcrumbEllipsis />` component to show a collapsed state when the breadcrumb is too long.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"breadcrumb-ellipsis\"\n  previewClassName=\"p-2\"\n/>\n\n### Link component\n\nTo use a custom link component from your routing library, you can use the `asChild` prop on `<BreadcrumbLink />`.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"breadcrumb-link\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"breadcrumb-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"p-2\"\n/>\n\n## API Reference\n\n### Breadcrumb\n\nThe `Breadcrumb` component is the root navigation element that wraps all breadcrumb components.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbList\n\nThe `BreadcrumbList` component displays the ordered list of breadcrumb items.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbItem\n\nThe `BreadcrumbItem` component wraps individual breadcrumb items.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbLink\n\nThe `BreadcrumbLink` component displays a clickable link in the breadcrumb.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbPage\n\nThe `BreadcrumbPage` component displays the current page in the breadcrumb (non-clickable).\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### BreadcrumbSeparator\n\nThe `BreadcrumbSeparator` component displays a separator between breadcrumb items. You can pass custom children to override the default separator icon.\n\n| Prop        | Type              | Default |\n| ----------- | ----------------- | ------- |\n| `children`  | `React.ReactNode` | -       |\n| `className` | `string`          | -       |\n\n### BreadcrumbEllipsis\n\nThe `BreadcrumbEllipsis` component displays an ellipsis indicator for collapsed breadcrumb items.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/button-group.mdx",
    "content": "---\ntitle: Button Group\ndescription: A container that groups related buttons together with consistent styling.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add button-group\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"button-group\"\n  title=\"components/ui/button-group.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n} from \"@/components/ui/button-group\"\n```\n\n```tsx\n<ButtonGroup>\n  <Button>Button 1</Button>\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\n## Accessibility\n\n- The `ButtonGroup` component has the `role` attribute set to `group`.\n- Use <Kbd>Tab</Kbd> to navigate between the buttons in the group.\n- Use `aria-label` or `aria-labelledby` to label the button group.\n\n```tsx showLineNumbers\n<ButtonGroup aria-label=\"Button group\">\n  <Button>Button 1</Button>\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\n## ButtonGroup vs ToggleGroup\n\n- Use the `ButtonGroup` component when you want to group buttons that perform an action.\n- Use the `ToggleGroup` component when you want to group buttons that toggle a state.\n\n## Examples\n\n### Orientation\n\nSet the `orientation` prop to change the button group layout.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-orientation\" />\n\n### Size\n\nControl the size of buttons using the `size` prop on individual buttons.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-size\" />\n\n### Nested\n\nNest `<ButtonGroup>` components to create button groups with spacing.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-nested\" />\n\n### Separator\n\nThe `ButtonGroupSeparator` component visually divides buttons within a group.\n\nButtons with variant `outline` do not need a separator since they have a border. For other variants, a separator is recommended to improve the visual hierarchy.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-separator\" />\n\n### Split\n\nCreate a split button group by adding two buttons separated by a `ButtonGroupSeparator`.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-split\" />\n\n### Input\n\nWrap an `Input` component with buttons.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-input\" />\n\n### Input Group\n\nWrap an `InputGroup` component to create complex input layouts.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-input-group\" />\n\n### Dropdown Menu\n\nCreate a split button group with a `DropdownMenu` component.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-dropdown\" />\n\n### Select\n\nPair with a `Select` component.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-select\" />\n\n### Popover\n\nUse with a `Popover` component.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-popover\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"button-group-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\n### ButtonGroup\n\nThe `ButtonGroup` component is a container that groups related buttons together with consistent styling.\n\n| Prop          | Type                         | Default        |\n| ------------- | ---------------------------- | -------------- |\n| `orientation` | `\"horizontal\" \\| \"vertical\"` | `\"horizontal\"` |\n\n```tsx\n<ButtonGroup>\n  <Button>Button 1</Button>\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\nNest multiple button groups to create complex layouts with spacing. See the [nested](#nested) example for more details.\n\n```tsx\n<ButtonGroup>\n  <ButtonGroup />\n  <ButtonGroup />\n</ButtonGroup>\n```\n\n### ButtonGroupSeparator\n\nThe `ButtonGroupSeparator` component visually divides buttons within a group.\n\n| Prop          | Type                         | Default      |\n| ------------- | ---------------------------- | ------------ |\n| `orientation` | `\"horizontal\" \\| \"vertical\"` | `\"vertical\"` |\n\n```tsx\n<ButtonGroup>\n  <Button>Button 1</Button>\n  <ButtonGroupSeparator />\n  <Button>Button 2</Button>\n</ButtonGroup>\n```\n\n### ButtonGroupText\n\nUse this component to display text within a button group.\n\n| Prop      | Type      | Default |\n| --------- | --------- | ------- |\n| `asChild` | `boolean` | `false` |\n\n```tsx\n<ButtonGroup>\n  <ButtonGroupText>Text</ButtonGroupText>\n  <Button>Button</Button>\n</ButtonGroup>\n```\n\nUse the `asChild` prop to render a custom component as the text, for example a label.\n\n```tsx showLineNumbers\nimport { ButtonGroupText } from \"@/components/ui/button-group\"\nimport { Label } from \"@/components/ui/label\"\n\nexport function ButtonGroupTextDemo() {\n  return (\n    <ButtonGroup>\n      <ButtonGroupText asChild>\n        <Label htmlFor=\"name\">Text</Label>\n      </ButtonGroupText>\n      <Input placeholder=\"Type something here...\" id=\"name\" />\n    </ButtonGroup>\n  )\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/button.mdx",
    "content": "---\ntitle: Button\ndescription: Displays a button or a component that looks like a button.\nfeatured: true\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add button\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"button\"\n  title=\"components/ui/button.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Button } from \"@/components/ui/button\"\n```\n\n```tsx\n<Button variant=\"outline\">Button</Button>\n```\n\n## Cursor\n\nTailwind v4 [switched](https://tailwindcss.com/docs/upgrade-guide#buttons-use-the-default-cursor) from `cursor: pointer` to `cursor: default` for the button component.\n\nIf you want to keep the `cursor: pointer` behavior, add the following code to your CSS file:\n\n```css showLineNumbers title=\"globals.css\"\n@layer base {\n  button:not(:disabled),\n  [role=\"button\"]:not(:disabled) {\n    cursor: pointer;\n  }\n}\n```\n\n## Examples\n\n### Size\n\nUse the `size` prop to change the size of the button.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-size\" />\n\n### Default\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-default\" />\n\n### Outline\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-outline\" />\n\n### Secondary\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-secondary\" />\n\n### Ghost\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-ghost\" />\n\n### Destructive\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-destructive\" />\n\n### Link\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-link\" />\n\n### Icon\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-icon\" />\n\n### With Icon\n\nRemember to add the `data-icon=\"inline-start\"` or `data-icon=\"inline-end\"` attribute to the icon for the correct spacing.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-with-icon\" />\n\n### Rounded\n\nUse the `rounded-full` class to make the button rounded.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-rounded\" />\n\n### Spinner\n\nRender a `<Spinner />` component inside the button to show a loading state. Remember to add the `data-icon=\"inline-start\"` or `data-icon=\"inline-end\"` attribute to the spinner for the correct spacing.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-spinner\" />\n\n### Button Group\n\nTo create a button group, use the `ButtonGroup` component. See the [Button Group](/docs/components/radix/button-group) documentation for more details.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-group-demo\" />\n\n### As Child\n\nYou can use the `asChild` prop on `<Button />` to make another component look like a button. Here's an example of a link that looks like a button.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-aschild\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"button-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Button\n\nThe `Button` component is a wrapper around the `button` element that adds a variety of styles and functionality.\n\n| Prop      | Type                                                                                 | Default     |\n| --------- | ------------------------------------------------------------------------------------ | ----------- |\n| `variant` | `\"default\" \\| \"outline\" \\| \"ghost\" \\| \"destructive\" \\| \"secondary\" \\| \"link\"`        | `\"default\"` |\n| `size`    | `\"default\" \\| \"xs\" \\| \"sm\" \\| \"lg\" \\| \"icon\" \\| \"icon-xs\" \\| \"icon-sm\" \\| \"icon-lg\"` | `\"default\"` |\n| `asChild` | `boolean`                                                                            | `false`     |\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/calendar.mdx",
    "content": "---\ntitle: Calendar\ndescription: A calendar component that allows users to select a date or a range of dates.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://react-day-picker.js.org\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-demo\"\n  previewClassName=\"h-96\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add calendar\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install react-day-picker date-fns\n```\n\n<Step>Add the `Button` component to your project.</Step>\n\nThe `Calendar` component uses the `Button` component. Make sure you have it installed in your project.\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"calendar\"\n  title=\"components/ui/calendar.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Calendar } from \"@/components/ui/calendar\"\n```\n\n```tsx showLineNumbers\nconst [date, setDate] = React.useState<Date | undefined>(new Date())\n\nreturn (\n  <Calendar\n    mode=\"single\"\n    selected={date}\n    onSelect={setDate}\n    className=\"rounded-lg border\"\n  />\n)\n```\n\nSee the [React DayPicker](https://react-day-picker.js.org) documentation for more information.\n\n## About\n\nThe `Calendar` component is built on top of [React DayPicker](https://react-day-picker.js.org).\n\n## Date Picker\n\nYou can use the `<Calendar>` component to build a date picker. See the [Date Picker](/docs/components/radix/date-picker) page for more information.\n\n## Persian / Hijri / Jalali Calendar\n\nTo use the Persian calendar, edit `components/ui/calendar.tsx` and replace `react-day-picker` with `react-day-picker/persian`.\n\n```diff\n- import { DayPicker } from \"react-day-picker\"\n+ import { DayPicker } from \"react-day-picker/persian\"\n```\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-hijri\"\n  title=\"Persian / Hijri / Jalali Calendar\"\n  description=\"A Persian calendar.\"\n  previewClassName=\"h-[400px]\"\n/>\n\n## Selected Date (With TimeZone)\n\nThe Calendar component accepts a `timeZone` prop to ensure dates are displayed and selected in the user's local timezone.\n\n```tsx showLineNumbers\nexport function CalendarWithTimezone() {\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\n  const [timeZone, setTimeZone] = React.useState<string | undefined>(undefined)\n\n  React.useEffect(() => {\n    setTimeZone(Intl.DateTimeFormat().resolvedOptions().timeZone)\n  }, [])\n\n  return (\n    <Calendar\n      mode=\"single\"\n      selected={date}\n      onSelect={setDate}\n      timeZone={timeZone}\n    />\n  )\n}\n```\n\n**Note:** If you notice a selected date offset (for example, selecting the 20th highlights the 19th), make sure the `timeZone` prop is set to the user's local timezone.\n\n**Why client-side?** The timezone is detected using `Intl.DateTimeFormat().resolvedOptions().timeZone` inside a `useEffect` to ensure compatibility with server-side rendering. Detecting the timezone during render would cause hydration mismatches, as the server and client may be in different timezones.\n\n## Examples\n\n### Basic\n\nA basic calendar component. We used `className=\"rounded-lg border\"` to style the calendar.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-basic\"\n  previewClassName=\"h-96\"\n/>\n\n### Range Calendar\n\nUse the `mode=\"range\"` prop to enable range selection.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-range\"\n  previewClassName=\"h-[36rem] md:h-96\"\n/>\n\n### Month and Year Selector\n\nUse `captionLayout=\"dropdown\"` to show month and year dropdowns.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-caption\"\n  previewClassName=\"h-96\"\n/>\n\n### Presets\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-presets\"\n  previewClassName=\"h-[650px]\"\n/>\n\n### Date and Time Picker\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-time\"\n  previewClassName=\"h-[600px]\"\n/>\n\n### Booked dates\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-booked-dates\"\n  previewClassName=\"h-96\"\n/>\n\n### Custom Cell Size\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-custom-days\"\n  title=\"Custom Cell Size\"\n  description=\"A calendar with custom cell size that's responsive.\"\n  className=\"**:[.preview]:h-[560px]\"\n/>\n\nYou can customize the size of calendar cells using the `--cell-size` CSS variable. You can also make it responsive by using breakpoint-specific values:\n\n```tsx showLineNumbers\n<Calendar\n  mode=\"single\"\n  selected={date}\n  onSelect={setDate}\n  className=\"rounded-lg border [--cell-size:--spacing(11)] md:[--cell-size:--spacing(12)]\"\n/>\n```\n\nOr use fixed values:\n\n```tsx showLineNumbers\n<Calendar\n  mode=\"single\"\n  selected={date}\n  onSelect={setDate}\n  className=\"rounded-lg border [--cell-size:2.75rem] md:[--cell-size:3rem]\"\n/>\n```\n\n### Week Numbers\n\nUse `showWeekNumber` to show week numbers.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-week-numbers\"\n  previewClassName=\"h-96\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\nSee also the [Hijri Guide](#persian--hijri--jalali-calendar) for enabling the Persian / Hijri / Jalali calendar.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"calendar-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-96\"\n/>\n\nWhen using RTL, import the locale from `react-day-picker/locale` and pass both the `locale` and `dir` props to the Calendar component:\n\n```tsx showLineNumbers\nimport { arSA } from \"react-day-picker/locale\"\n\n;<Calendar\n  mode=\"single\"\n  selected={date}\n  onSelect={setDate}\n  locale={arSA}\n  dir=\"rtl\"\n/>\n```\n\n## API Reference\n\nSee the [React DayPicker](https://react-day-picker.js.org) documentation for more information on the `Calendar` component.\n\n## Changelog\n\n### RTL Support\n\nIf you're upgrading from a previous version of the `Calendar` component, you'll need to apply the following updates to add locale support:\n\n<Steps>\n\n<Step>Import the `Locale` type.</Step>\n\nAdd `Locale` to your imports from `react-day-picker`:\n\n```diff\n  import {\n    DayPicker,\n    getDefaultClassNames,\n    type DayButton,\n+   type Locale,\n  } from \"react-day-picker\"\n```\n\n<Step>Add `locale` prop to the Calendar component.</Step>\n\nAdd the `locale` prop to the component's props:\n\n```diff\n  function Calendar({\n    className,\n    classNames,\n    showOutsideDays = true,\n    captionLayout = \"label\",\n    buttonVariant = \"ghost\",\n+   locale,\n    formatters,\n    components,\n    ...props\n  }: React.ComponentProps<typeof DayPicker> & {\n    buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n  }) {\n```\n\n<Step>Pass `locale` to DayPicker.</Step>\n\nPass the `locale` prop to the `DayPicker` component:\n\n```diff\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(...)}\n      captionLayout={captionLayout}\n+     locale={locale}\n      formatters={{\n        formatMonthDropdown: (date) =>\n-         date.toLocaleString(\"default\", { month: \"short\" }),\n+         date.toLocaleString(locale?.code, { month: \"short\" }),\n        ...formatters,\n      }}\n```\n\n<Step>Update CalendarDayButton to accept locale.</Step>\n\nUpdate the `CalendarDayButton` component signature and pass `locale`:\n\n```diff\n  function CalendarDayButton({\n    className,\n    day,\n    modifiers,\n+   locale,\n    ...props\n- }: React.ComponentProps<typeof DayButton>) {\n+ }: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n```\n\n<Step>Update date formatting in CalendarDayButton.</Step>\n\nUse `locale?.code` in the date formatting:\n\n```diff\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n-     data-day={day.date.toLocaleDateString()}\n+     data-day={day.date.toLocaleDateString(locale?.code)}\n      ...\n    />\n```\n\n<Step>Pass locale to DayButton component.</Step>\n\nUpdate the `DayButton` component usage to pass the `locale` prop:\n\n```diff\n      components={{\n        ...\n-       DayButton: CalendarDayButton,\n+       DayButton: ({ ...props }) => (\n+         <CalendarDayButton locale={locale} {...props} />\n+       ),\n        ...\n      }}\n```\n\n<Step>Update RTL-aware CSS classes.</Step>\n\nReplace directional classes with logical properties for better RTL support:\n\n```diff\n  // In the day classNames:\n- [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\n+ [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\n- [&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\n+ [&:nth-child(2)[data-selected=true]_button]:rounded-s-(--cell-radius)\n- [&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\n+ [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius)\n\n  // In range_start classNames:\n- rounded-l-(--cell-radius) ... after:right-0\n+ rounded-s-(--cell-radius) ... after:end-0\n\n  // In range_end classNames:\n- rounded-r-(--cell-radius) ... after:left-0\n+ rounded-e-(--cell-radius) ... after:start-0\n\n  // In CalendarDayButton className:\n- data-[range-end=true]:rounded-r-(--cell-radius)\n+ data-[range-end=true]:rounded-e-(--cell-radius)\n- data-[range-start=true]:rounded-l-(--cell-radius)\n+ data-[range-start=true]:rounded-s-(--cell-radius)\n```\n\n</Steps>\n\nAfter applying these changes, you can use the `locale` prop to provide locale-specific formatting:\n\n```tsx\nimport { enUS } from \"react-day-picker/locale\"\n\n;<Calendar mode=\"single\" selected={date} onSelect={setDate} locale={enUS} />\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/card.mdx",
    "content": "---\ntitle: Card\ndescription: Displays a card with header, content, and footer.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview\n  name=\"card-demo\"\n  styleName=\"radix-nova\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add card\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"card\"\n  title=\"components/ui/card.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n```\n\n```tsx showLineNumbers\n<Card>\n  <CardHeader>\n    <CardTitle>Card Title</CardTitle>\n    <CardDescription>Card Description</CardDescription>\n    <CardAction>Card Action</CardAction>\n  </CardHeader>\n  <CardContent>\n    <p>Card Content</p>\n  </CardContent>\n  <CardFooter>\n    <p>Card Footer</p>\n  </CardFooter>\n</Card>\n```\n\n## Examples\n\n### Size\n\nUse the `size=\"sm\"` prop to set the size of the card to small. The small size variant uses smaller spacing.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"card-small\"\n  previewClassName=\"h-96\"\n/>\n\n### Image\n\nAdd an image before the card header to create a card with an image.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"card-image\"\n  previewClassName=\"h-[32rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"card-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## API Reference\n\n### Card\n\nThe `Card` component is the root container for card content.\n\n| Prop        | Type                | Default     |\n| ----------- | ------------------- | ----------- |\n| `size`      | `\"default\" \\| \"sm\"` | `\"default\"` |\n| `className` | `string`            | -           |\n\n### CardHeader\n\nThe `CardHeader` component is used for a title, description, and optional action.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardTitle\n\nThe `CardTitle` component is used for the card title.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardDescription\n\nThe `CardDescription` component is used for helper text under the title.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardAction\n\nThe `CardAction` component places content in the top-right of the header (for example, a button or a badge).\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardContent\n\nThe `CardContent` component is used for the main card body.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n\n### CardFooter\n\nThe `CardFooter` component is used for actions and secondary content at the bottom of the card.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | -       |\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/carousel.mdx",
    "content": "---\ntitle: Carousel\ndescription: A carousel with motion and swipe built using Embla.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.embla-carousel.com/get-started/react\n  api: https://www.embla-carousel.com/api\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"carousel-demo\"\n  previewClassName=\"h-80 sm:h-[32rem]\"\n/>\n\n## About\n\nThe carousel component is built using the [Embla Carousel](https://www.embla-carousel.com/) library.\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add carousel\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install embla-carousel-react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"carousel\"\n  title=\"components/ui/carousel.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/components/ui/carousel\"\n```\n\n```tsx showLineNumbers\n<Carousel>\n  <CarouselContent>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n  </CarouselContent>\n  <CarouselPrevious />\n  <CarouselNext />\n</Carousel>\n```\n\n## Examples\n\n### Sizes\n\nTo set the size of the items, you can use the `basis` utility class on the `<CarouselItem />`.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"carousel-size\" />\n\n```tsx showLineNumbers {4-6}\n// 33% of the carousel width.\n<Carousel>\n  <CarouselContent>\n    <CarouselItem className=\"basis-1/3\">...</CarouselItem>\n    <CarouselItem className=\"basis-1/3\">...</CarouselItem>\n    <CarouselItem className=\"basis-1/3\">...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n```tsx showLineNumbers {4-6}\n// 50% on small screens and 33% on larger screens.\n<Carousel>\n  <CarouselContent>\n    <CarouselItem className=\"md:basis-1/2 lg:basis-1/3\">...</CarouselItem>\n    <CarouselItem className=\"md:basis-1/2 lg:basis-1/3\">...</CarouselItem>\n    <CarouselItem className=\"md:basis-1/2 lg:basis-1/3\">...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n### Spacing\n\nTo set the spacing between the items, we use a `pl-[VALUE]` utility on the `<CarouselItem />` and a negative `-ml-[VALUE]` on the `<CarouselContent />`.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"carousel-spacing\" />\n\n```tsx showLineNumbers /-ml-4/ /pl-4/\n<Carousel>\n  <CarouselContent className=\"-ml-4\">\n    <CarouselItem className=\"pl-4\">...</CarouselItem>\n    <CarouselItem className=\"pl-4\">...</CarouselItem>\n    <CarouselItem className=\"pl-4\">...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n```tsx showLineNumbers /-ml-2/ /pl-2/ /md:-ml-4/ /md:pl-4/\n<Carousel>\n  <CarouselContent className=\"-ml-2 md:-ml-4\">\n    <CarouselItem className=\"pl-2 md:pl-4\">...</CarouselItem>\n    <CarouselItem className=\"pl-2 md:pl-4\">...</CarouselItem>\n    <CarouselItem className=\"pl-2 md:pl-4\">...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n### Orientation\n\nUse the `orientation` prop to set the orientation of the carousel.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"carousel-orientation\"\n  previewClassName=\"h-[32rem]\"\n/>\n\n```tsx showLineNumbers /vertical | horizontal/\n<Carousel orientation=\"vertical | horizontal\">\n  <CarouselContent>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n## Options\n\nYou can pass options to the carousel using the `opts` prop. See the [Embla Carousel docs](https://www.embla-carousel.com/api/options/) for more information.\n\n```tsx showLineNumbers {2-5}\n<Carousel\n  opts={{\n    align: \"start\",\n    loop: true,\n  }}\n>\n  <CarouselContent>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n  </CarouselContent>\n</Carousel>\n```\n\n## API\n\nUse a state and the `setApi` props to get an instance of the carousel API.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"carousel-api\"\n  previewClassName=\"sm:h-[32rem]\"\n/>\n\n```tsx showLineNumbers {1,4,22}\nimport { type CarouselApi } from \"@/components/ui/carousel\"\n\nexport function Example() {\n  const [api, setApi] = React.useState<CarouselApi>()\n  const [current, setCurrent] = React.useState(0)\n  const [count, setCount] = React.useState(0)\n\n  React.useEffect(() => {\n    if (!api) {\n      return\n    }\n\n    setCount(api.scrollSnapList().length)\n    setCurrent(api.selectedScrollSnap() + 1)\n\n    api.on(\"select\", () => {\n      setCurrent(api.selectedScrollSnap() + 1)\n    })\n  }, [api])\n\n  return (\n    <Carousel setApi={setApi}>\n      <CarouselContent>\n        <CarouselItem>...</CarouselItem>\n        <CarouselItem>...</CarouselItem>\n        <CarouselItem>...</CarouselItem>\n      </CarouselContent>\n    </Carousel>\n  )\n}\n```\n\n## Events\n\nYou can listen to events using the api instance from `setApi`.\n\n```tsx showLineNumbers {1,4-14,16}\nimport { type CarouselApi } from \"@/components/ui/carousel\"\n\nexport function Example() {\n  const [api, setApi] = React.useState<CarouselApi>()\n\n  React.useEffect(() => {\n    if (!api) {\n      return\n    }\n\n    api.on(\"select\", () => {\n      // Do something on select.\n    })\n  }, [api])\n\n  return (\n    <Carousel setApi={setApi}>\n      <CarouselContent>\n        <CarouselItem>...</CarouselItem>\n        <CarouselItem>...</CarouselItem>\n        <CarouselItem>...</CarouselItem>\n      </CarouselContent>\n    </Carousel>\n  )\n}\n```\n\nSee the [Embla Carousel docs](https://www.embla-carousel.com/api/events/) for more information on using events.\n\n## Plugins\n\nYou can use the `plugins` prop to add plugins to the carousel.\n\n```ts showLineNumbers {1,6-10}\nimport Autoplay from \"embla-carousel-autoplay\"\n\nexport function Example() {\n  return (\n    <Carousel\n      plugins={[\n        Autoplay({\n          delay: 2000,\n        }),\n      ]}\n    >\n      // ...\n    </Carousel>\n  )\n}\n```\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"carousel-plugin\"\n  previewClassName=\"sm:h-[32rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"carousel-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-80 sm:h-[32rem]\"\n/>\n\nWhen localizing the carousel for RTL languages, you need to set the `direction` option in the `opts` prop to match the text direction. This ensures the carousel scrolls in the correct direction.\n\n```tsx showLineNumbers {2-5}\n<Carousel\n  dir={dir}\n  opts={{\n    direction: dir,\n  }}\n>\n  <CarouselContent>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n    <CarouselItem>...</CarouselItem>\n  </CarouselContent>\n  <CarouselPrevious className=\"rtl:rotate-180\" />\n  <CarouselNext className=\"rtl:rotate-180\" />\n</Carousel>\n```\n\nThe `direction` option accepts `\"ltr\"` or `\"rtl\"` and should match the `dir` prop value. You may also want to rotate the navigation buttons using the `rtl:rotate-180` class to ensure they point in the correct direction.\n\n## API Reference\n\nSee the [Embla Carousel docs](https://www.embla-carousel.com/api/) for more information on props and plugins.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/chart.mdx",
    "content": "---\ntitle: Chart\ndescription: Beautiful charts. Built using Recharts. Copy and paste into your apps.\nbase: radix\ncomponent: true\n---\n\n<Callout>\n\n**Note:** We're working on upgrading to Recharts v3. In the meantime, if you'd like to start testing v3, see the code in the comment [here](https://github.com/shadcn-ui/ui/issues/7669#issuecomment-2998299159). We'll have an official release soon.\n\n</Callout>\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"chart-demo\"\n  className=\"theme-blue [&_.preview]:h-auto [&_.preview]:p-0 [&_.preview]:lg:min-h-[404px] [&_.preview>div]:w-full [&_.preview>div]:border-none [&_.preview>div]:shadow-none\"\n  hideCode\n/>\n\nIntroducing **Charts**. A collection of chart components that you can copy and paste into your apps.\n\nCharts are designed to look great out of the box. They work well with the other components and are fully customizable to fit your project.\n\n[Browse the Charts Library](/charts).\n\n## Component\n\nWe use [Recharts](https://recharts.org/) under the hood.\n\nWe designed the `chart` component with composition in mind. **You build your charts using Recharts components and only bring in custom components, such as `ChartTooltip`, when and where you need it**.\n\n```tsx showLineNumbers /ChartContainer/ /ChartTooltipContent/\nimport { Bar, BarChart } from \"recharts\"\n\nimport { ChartContainer, ChartTooltipContent } from \"@/components/ui/chart\"\n\nexport function MyChart() {\n  return (\n    <ChartContainer>\n      <BarChart data={data}>\n        <Bar dataKey=\"value\" />\n        <ChartTooltip content={<ChartTooltipContent />} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n```\n\nWe do not wrap Recharts. This means you're not locked into an abstraction. When a new Recharts version is released, you can follow the official upgrade path to upgrade your charts.\n\n**The components are yours**.\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add chart\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install recharts\n```\n\n<Step>Copy and paste the following code into `components/ui/chart.tsx`.</Step>\n\n<ComponentSource\n  name=\"chart\"\n  title=\"components/ui/chart.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Add the following colors to your CSS file</Step>\n\n```css title=\"app/globals.css\" showLineNumbers\n@layer base {\n  :root {\n    --chart-1: oklch(0.646 0.222 41.116);\n    --chart-2: oklch(0.6 0.118 184.704);\n    --chart-3: oklch(0.398 0.07 227.392);\n    --chart-4: oklch(0.828 0.189 84.429);\n    --chart-5: oklch(0.769 0.188 70.08);\n  }\n\n  .dark {\n    --chart-1: oklch(0.488 0.243 264.376);\n    --chart-2: oklch(0.696 0.17 162.48);\n    --chart-3: oklch(0.769 0.188 70.08);\n    --chart-4: oklch(0.627 0.265 303.9);\n    --chart-5: oklch(0.645 0.246 16.439);\n  }\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Your First Chart\n\nLet's build your first chart. We'll build a bar chart, add a grid, axis, tooltip and legend.\n\n<Steps>\n\n<Step>Start by defining your data</Step>\n\nThe following data represents the number of desktop and mobile users for each month.\n\n<Callout className=\"mt-4\">\n\n**Note:** Your data can be in any shape. You are not limited to the shape of the data below. Use the `dataKey` prop to map your data to the chart.\n\n</Callout>\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n```\n\n<Step>Define your chart config</Step>\n\nThe chart config holds configuration for the chart. This is where you place human-readable strings, such as labels, icons and color tokens for theming.\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nimport { type ChartConfig } from \"@/components/ui/chart\"\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n```\n\n<Step>Build your chart</Step>\n\nYou can now build your chart using Recharts components.\n\n<Callout className=\"mt-4 bg-amber-50 border-amber-200 dark:bg-amber-950/50 dark:border-amber-950\">\n\n**Important:** Remember to set a `min-h-[VALUE]` on the `ChartContainer` component. This is required for the chart to be responsive.\n\n</Callout>\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"chart-example\"\n  previewClassName=\"h-80\"\n/>\n\n</Steps>\n\n### Add a Grid\n\nLet's add a grid to the chart.\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Import the `CartesianGrid` component.</Step>\n\n```tsx /CartesianGrid/\nimport { Bar, BarChart, CartesianGrid } from \"recharts\"\n```\n\n<Step>Add the `CartesianGrid` component to your chart.</Step>\n\n```tsx showLineNumbers {3}\n<ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n  <BarChart accessibilityLayer data={chartData}>\n    <CartesianGrid vertical={false} />\n    <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n    <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n  </BarChart>\n</ChartContainer>\n```\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"chart-example-grid\"\n  previewClassName=\"h-80\"\n/>\n\n</Steps>\n\n### Add an Axis\n\nTo add an x-axis to the chart, we'll use the `XAxis` component.\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Import the `XAxis` component.</Step>\n\n```tsx /XAxis/\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n```\n\n<Step>Add the `XAxis` component to your chart.</Step>\n\n```tsx showLineNumbers {4-10}\n<ChartContainer config={chartConfig} className=\"h-[200px] w-full\">\n  <BarChart accessibilityLayer data={chartData}>\n    <CartesianGrid vertical={false} />\n    <XAxis\n      dataKey=\"month\"\n      tickLine={false}\n      tickMargin={10}\n      axisLine={false}\n      tickFormatter={(value) => value.slice(0, 3)}\n    />\n    <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n    <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n  </BarChart>\n</ChartContainer>\n```\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"chart-example-axis\"\n  previewClassName=\"h-80\"\n/>\n\n</Steps>\n\n### Add Tooltip\n\nSo far we've only used components from Recharts. They look great out of the box thanks to some customization in the `chart` component.\n\nTo add a tooltip, we'll use the custom `ChartTooltip` and `ChartTooltipContent` components from `chart`.\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Import the `ChartTooltip` and `ChartTooltipContent` components.</Step>\n\n```tsx\nimport { ChartTooltip, ChartTooltipContent } from \"@/components/ui/chart\"\n```\n\n<Step>Add the components to your chart.</Step>\n\n```tsx showLineNumbers {11}\n<ChartContainer config={chartConfig} className=\"h-[200px] w-full\">\n  <BarChart accessibilityLayer data={chartData}>\n    <CartesianGrid vertical={false} />\n    <XAxis\n      dataKey=\"month\"\n      tickLine={false}\n      tickMargin={10}\n      axisLine={false}\n      tickFormatter={(value) => value.slice(0, 3)}\n    />\n    <ChartTooltip content={<ChartTooltipContent />} />\n    <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n    <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n  </BarChart>\n</ChartContainer>\n```\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"chart-example-tooltip\"\n  previewClassName=\"h-80\"\n/>\n\nHover to see the tooltips. Easy, right? Two components, and we've got a beautiful tooltip.\n\n</Steps>\n\n### Add Legend\n\nWe'll do the same for the legend. We'll use the `ChartLegend` and `ChartLegendContent` components from `chart`.\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Import the `ChartLegend` and `ChartLegendContent` components.</Step>\n\n```tsx\nimport { ChartLegend, ChartLegendContent } from \"@/components/ui/chart\"\n```\n\n<Step>Add the components to your chart.</Step>\n\n```tsx showLineNumbers {12}\n<ChartContainer config={chartConfig} className=\"h-[200px] w-full\">\n  <BarChart accessibilityLayer data={chartData}>\n    <CartesianGrid vertical={false} />\n    <XAxis\n      dataKey=\"month\"\n      tickLine={false}\n      tickMargin={10}\n      axisLine={false}\n      tickFormatter={(value) => value.slice(0, 3)}\n    />\n    <ChartTooltip content={<ChartTooltipContent />} />\n    <ChartLegend content={<ChartLegendContent />} />\n    <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n    <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n  </BarChart>\n</ChartContainer>\n```\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"chart-example-legend\"\n  previewClassName=\"h-80\"\n/>\n\n</Steps>\n\nDone. You've built your first chart! What's next?\n\n- [Themes and Colors](/docs/components/chart#theming)\n- [Tooltip](/docs/components/chart#tooltip)\n- [Legend](/docs/components/chart#legend)\n\n## Chart Config\n\nThe chart config is where you define the labels, icons and colors for a chart.\n\nIt is intentionally decoupled from chart data.\n\nThis allows you to share config and color tokens between charts. It can also work independently for cases where your data or color tokens live remotely or in a different format.\n\n```tsx showLineNumbers /ChartConfig/\nimport { Monitor } from \"lucide-react\"\n\nimport { type ChartConfig } from \"@/components/ui/chart\"\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    icon: Monitor,\n    // A color like 'hsl(220, 98%, 61%)' or 'var(--color-name)'\n    color: \"#2563eb\",\n    // OR a theme object with 'light' and 'dark' keys\n    theme: {\n      light: \"#2563eb\",\n      dark: \"#dc2626\",\n    },\n  },\n} satisfies ChartConfig\n```\n\n## Theming\n\nCharts have built-in support for theming. You can use css variables (recommended) or color values in any color format, such as hex, hsl or oklch.\n\n### CSS Variables\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Define your colors in your css file</Step>\n\n```css title=\"app/globals.css\" showLineNumbers\n@layer base {\n  :root {\n    --chart-1: oklch(0.646 0.222 41.116);\n    --chart-2: oklch(0.6 0.118 184.704);\n  }\n\n  .dark {\n    --chart-1: oklch(0.488 0.243 264.376);\n    --chart-2: oklch(0.696 0.17 162.48);\n  }\n}\n```\n\n<Step>Add the color to your `chartConfig`</Step>\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n</Steps>\n\n### hex, hsl or oklch\n\nYou can also define your colors directly in the chart config. Use the color format you prefer.\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"hsl(220, 98%, 61%)\",\n  },\n  tablet: {\n    label: \"Tablet\",\n    color: \"oklch(0.5 0.2 240)\",\n  },\n  laptop: {\n    label: \"Laptop\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n### Using Colors\n\nTo use the theme colors in your chart, reference the colors using the format `var(--color-KEY)`.\n\n#### Components\n\n```tsx\n<Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" />\n```\n\n#### Chart Data\n\n```tsx title=\"components/example-chart.tsx\" showLineNumbers\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n]\n```\n\n#### Tailwind\n\n```tsx title=\"components/example-chart.tsx\"\n<LabelList className=\"fill-[--color-desktop]\" />\n```\n\n## Tooltip\n\nA chart tooltip contains a label, name, indicator and value. You can use a combination of these to customize your tooltip.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"chart-tooltip\" hideCode />\n\nYou can turn on/off any of these using the `hideLabel`, `hideIndicator` props and customize the indicator style using the `indicator` prop.\n\nUse `labelKey` and `nameKey` to use a custom key for the tooltip label and name.\n\nChart comes with the `<ChartTooltip>` and `<ChartTooltipContent>` components. You can use these two components to add custom tooltips to your chart.\n\n```tsx title=\"components/example-chart.tsx\"\nimport { ChartTooltip, ChartTooltipContent } from \"@/components/ui/chart\"\n```\n\n```tsx title=\"components/example-chart.tsx\"\n<ChartTooltip content={<ChartTooltipContent />} />\n```\n\n### Props\n\nUse the following props to customize the tooltip.\n\n| Prop            | Type                     | Description                                  |\n| :-------------- | :----------------------- | :------------------------------------------- |\n| `labelKey`      | string                   | The config or data key to use for the label. |\n| `nameKey`       | string                   | The config or data key to use for the name.  |\n| `indicator`     | `dot` `line` or `dashed` | The indicator style for the tooltip.         |\n| `hideLabel`     | boolean                  | Whether to hide the label.                   |\n| `hideIndicator` | boolean                  | Whether to hide the indicator.               |\n\n### Colors\n\nColors are automatically referenced from the chart config.\n\n### Custom\n\nTo use a custom key for tooltip label and names, use the `labelKey` and `nameKey` props.\n\n```tsx showLineNumbers /browser/\nconst chartData = [\n  { browser: \"chrome\", visitors: 187, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Total Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n```tsx title=\"components/example-chart.tsx\"\n<ChartTooltip\n  content={<ChartTooltipContent labelKey=\"visitors\" nameKey=\"browser\" />}\n/>\n```\n\nThis will use `Total Visitors` for label and `Chrome` and `Safari` for the tooltip names.\n\n## Legend\n\nYou can use the custom `<ChartLegend>` and `<ChartLegendContent>` components to add a legend to your chart.\n\n```tsx title=\"components/example-chart.tsx\"\nimport { ChartLegend, ChartLegendContent } from \"@/components/ui/chart\"\n```\n\n```tsx title=\"components/example-chart.tsx\"\n<ChartLegend content={<ChartLegendContent />} />\n```\n\n### Colors\n\nColors are automatically referenced from the chart config.\n\n### Custom\n\nTo use a custom key for legend names, use the `nameKey` prop.\n\n```tsx showLineNumbers /browser/\nconst chartData = [\n  { browser: \"chrome\", visitors: 187, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n]\n\nconst chartConfig = {\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n```\n\n```tsx title=\"components/example-chart.tsx\"\n<ChartLegend content={<ChartLegendContent nameKey=\"browser\" />} />\n```\n\nThis will use `Chrome` and `Safari` for the legend names.\n\n## Accessibility\n\nYou can turn on the `accessibilityLayer` prop to add an accessible layer to your chart.\n\nThis prop adds keyboard access and screen reader support to your charts.\n\n```tsx title=\"components/example-chart.tsx\"\n<LineChart accessibilityLayer />\n```\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"chart-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-92\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/checkbox.mdx",
    "content": "---\ntitle: Checkbox\ndescription: A control that allows the user to toggle between checked and not checked.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/checkbox\n  api: https://www.radix-ui.com/docs/primitives/components/checkbox#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"checkbox-demo\"\n  previewClassName=\"h-80\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add checkbox\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"checkbox\"\n  title=\"components/ui/checkbox.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Checkbox } from \"@/components/ui/checkbox\"\n```\n\n```tsx\n<Checkbox />\n```\n\n## Checked State\n\nUse `defaultChecked` for uncontrolled checkboxes, or `checked` and\n`onCheckedChange` to control the state.\n\n```tsx showLineNumbers\nimport * as React from \"react\"\n\nexport function Example() {\n  const [checked, setChecked] = React.useState(false)\n\n  return <Checkbox checked={checked} onCheckedChange={setChecked} />\n}\n```\n\n## Invalid State\n\nSet `aria-invalid` on the checkbox and `data-invalid` on the field wrapper to\nshow the invalid styles.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"checkbox-invalid\" />\n\n## Examples\n\n### Basic\n\nPair the checkbox with `Field` and `FieldLabel` for proper layout and labeling.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"checkbox-basic\" />\n\n### Description\n\nUse `FieldContent` and `FieldDescription` for helper text.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"checkbox-description\" />\n\n### Disabled\n\nUse the `disabled` prop to prevent interaction and add the `data-disabled` attribute to the `<Field>` component for disabled styles.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"checkbox-disabled\" />\n\n### Group\n\nUse multiple fields to create a checkbox list.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"checkbox-group\" />\n\n### Table\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"checkbox-table\"\n  previewClassName=\"p-4 md:p-8\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"checkbox-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-80\"\n/>\n\n## API Reference\n\nSee the [Radix UI](https://www.radix-ui.com/docs/primitives/components/checkbox#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/collapsible.mdx",
    "content": "---\ntitle: Collapsible\ndescription: An interactive component which expands/collapses a panel.\nbase: radix\ncomponent: true\nfeatured: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/collapsible\n  api: https://www.radix-ui.com/docs/primitives/components/collapsible#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"collapsible-demo\"\n  align=\"start\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add collapsible\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"collapsible\"\n  title=\"components/ui/collapsible.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/components/ui/collapsible\"\n```\n\n```tsx showLineNumbers\n<Collapsible>\n  <CollapsibleTrigger>Can I use this in my project?</CollapsibleTrigger>\n  <CollapsibleContent>\n    Yes. Free to use for personal and commercial projects. No attribution\n    required.\n  </CollapsibleContent>\n</Collapsible>\n```\n\n## Controlled State\n\nUse the `open` and `onOpenChange` props to control the state.\n\n```tsx showLineNumbers\nimport * as React from \"react\"\n\nexport function Example() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Collapsible open={open} onOpenChange={setOpen}>\n      <CollapsibleTrigger>Toggle</CollapsibleTrigger>\n      <CollapsibleContent>Content</CollapsibleContent>\n    </Collapsible>\n  )\n}\n```\n\n## Examples\n\n### Basic\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"collapsible-basic\"\n  align=\"start\"\n/>\n\n### Settings Panel\n\nUse a trigger button to reveal additional settings.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"collapsible-settings\" />\n\n### File Tree\n\nUse nested collapsibles to build a file tree.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"collapsible-file-tree\"\n  previewClassName=\"h-[36rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"collapsible-rtl\"\n  direction=\"rtl\"\n  align=\"start\"\n/>\n\n## API Reference\n\nSee the [Radix UI](https://www.radix-ui.com/docs/primitives/components/collapsible#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/combobox.mdx",
    "content": "---\ntitle: Combobox\ndescription: Autocomplete input with a list of suggestions.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://base-ui.com/react/components/combobox\n  api: https://base-ui.com/react/components/combobox#api-reference\n---\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"combobox-demo\"\n  description=\"A combobox with a list of frameworks.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add combobox\n```\n\n</TabsContent>\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install @base-ui/react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"combobox\"\n  title=\"components/ui/combobox.tsx\"\n  styleName=\"base-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/components/ui/combobox\"\n```\n\n```tsx showLineNumbers\nconst frameworks = [\"Next.js\", \"SvelteKit\", \"Nuxt.js\", \"Remix\", \"Astro\"]\n\nexport function ExampleCombobox() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n```\n\n## Custom Items\n\nUse `itemToStringValue` when your items are objects.\n\n```tsx showLineNumbers\nimport * as React from \"react\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/components/ui/combobox\"\n\ntype Framework = {\n  label: string\n  value: string\n}\n\nconst frameworks: Framework[] = [\n  { label: \"Next.js\", value: \"next\" },\n  { label: \"SvelteKit\", value: \"sveltekit\" },\n  { label: \"Nuxt\", value: \"nuxt\" },\n]\n\nexport function ExampleComboboxCustomItems() {\n  return (\n    <Combobox\n      items={frameworks}\n      itemToStringValue={(framework) => framework.label}\n    >\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(framework) => (\n            <ComboboxItem key={framework.value} value={framework}>\n              {framework.label}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n```\n\n## Multiple Selection\n\nUse `multiple` with chips for multi-select behavior.\n\n```tsx showLineNumbers\nimport * as React from \"react\"\n\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxValue,\n} from \"@/components/ui/combobox\"\n\nconst frameworks = [\"Next.js\", \"SvelteKit\", \"Nuxt.js\", \"Remix\", \"Astro\"]\n\nexport function ExampleComboboxMultiple() {\n  const [value, setValue] = React.useState<string[]>([])\n\n  return (\n    <Combobox\n      items={frameworks}\n      multiple\n      value={value}\n      onValueChange={setValue}\n    >\n      <ComboboxChips>\n        <ComboboxValue>\n          {value.map((item) => (\n            <ComboboxChip key={item}>{item}</ComboboxChip>\n          ))}\n        </ComboboxValue>\n        <ComboboxChipsInput placeholder=\"Add framework\" />\n      </ComboboxChips>\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n```\n\n## Examples\n\n### Basic\n\nA simple combobox with a list of frameworks.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-basic\" />\n\n### Multiple\n\nA combobox with multiple selection using `multiple` and `ComboboxChips`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-multiple\" />\n\n### Clear Button\n\nUse the `showClear` prop to show a clear button.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-clear\" />\n\n### Groups\n\nUse `ComboboxGroup` and `ComboboxSeparator` to group items.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-groups\" />\n\n### Custom Items\n\nYou can render a custom component inside `ComboboxItem`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-custom\" />\n\n### Invalid\n\nUse the `aria-invalid` prop to make the combobox invalid.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-invalid\" />\n\n### Disabled\n\nUse the `disabled` prop to disable the combobox.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-disabled\" />\n\n### Auto Highlight\n\nUse the `autoHighlight` prop to automatically highlight the first item on filter.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-auto-highlight\" />\n\n### Popup\n\nYou can trigger the combobox from a button or any other component by using the `render` prop. Move the `ComboboxInput` inside the `ComboboxContent`.\n\n<ComponentPreview styleName=\"base-nova\" name=\"combobox-popup\" />\n\n### Input Group\n\nYou can add an addon to the combobox by using the `InputGroupAddon` component inside the `ComboboxInput`.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"combobox-input-group\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"combobox-rtl\"\n  direction=\"rtl\"\n  align=\"start\"\n/>\n\n## API Reference\n\nSee the [Base UI](https://base-ui.com/react/components/combobox#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/command.mdx",
    "content": "---\ntitle: Command\ndescription: Command menu for search and quick actions.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://github.com/dip/cmdk\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"command-demo\"\n  align=\"start\"\n  previewClassName=\"h-[24.5rem]\"\n/>\n\n## About\n\nThe `<Command />` component uses the [`cmdk`](https://github.com/dip/cmdk) component by [Dip](https://www.dip.org/).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add command\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install cmdk\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"command\"\n  title=\"components/ui/command.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/components/ui/command\"\n```\n\n```tsx showLineNumbers\n<Command className=\"max-w-sm rounded-lg border\">\n  <CommandInput placeholder=\"Type a command or search...\" />\n  <CommandList>\n    <CommandEmpty>No results found.</CommandEmpty>\n    <CommandGroup heading=\"Suggestions\">\n      <CommandItem>Calendar</CommandItem>\n      <CommandItem>Search Emoji</CommandItem>\n      <CommandItem>Calculator</CommandItem>\n    </CommandGroup>\n    <CommandSeparator />\n    <CommandGroup heading=\"Settings\">\n      <CommandItem>Profile</CommandItem>\n      <CommandItem>Billing</CommandItem>\n      <CommandItem>Settings</CommandItem>\n    </CommandGroup>\n  </CommandList>\n</Command>\n```\n\n## Examples\n\n### Basic\n\nA simple command menu in a dialog.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"command-basic\" />\n\n### Shortcuts\n\n<ComponentPreview styleName=\"radix-nova\" name=\"command-shortcuts\" />\n\n### Groups\n\nA command menu with groups, icons and separators.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"command-groups\" />\n\n### Scrollable\n\nScrollable command menu with multiple items.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"command-scrollable\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"command-rtl\"\n  direction=\"rtl\"\n  align=\"start\"\n  previewClassName=\"h-[24.5rem]\"\n/>\n\n## API Reference\n\nSee the [cmdk](https://github.com/dip/cmdk) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/context-menu.mdx",
    "content": "---\ntitle: Context Menu\ndescription: Displays a menu of actions triggered by a right click.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/context-menu\n  api: https://www.radix-ui.com/docs/primitives/components/context-menu#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"context-menu-demo\"\n  description=\"A context menu with sub menu items.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add context-menu\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"context-menu\"\n  title=\"components/ui/context-menu.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuTrigger,\n} from \"@/components/ui/context-menu\"\n```\n\n```tsx showLineNumbers\n<ContextMenu>\n  <ContextMenuTrigger>Right click here</ContextMenuTrigger>\n  <ContextMenuContent>\n    <ContextMenuItem>Profile</ContextMenuItem>\n    <ContextMenuItem>Billing</ContextMenuItem>\n    <ContextMenuItem>Team</ContextMenuItem>\n    <ContextMenuItem>Subscription</ContextMenuItem>\n  </ContextMenuContent>\n</ContextMenu>\n```\n\n## Examples\n\n### Basic\n\nA simple context menu with a few actions.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"context-menu-basic\" />\n\n### Submenu\n\nUse `ContextMenuSub` to nest secondary actions.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"context-menu-submenu\" />\n\n### Shortcuts\n\nAdd `ContextMenuShortcut` to show keyboard hints.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"context-menu-shortcuts\" />\n\n### Groups\n\nGroup related actions and separate them with dividers.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"context-menu-groups\" />\n\n### Icons\n\nCombine icons with labels for quick scanning.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"context-menu-icons\" />\n\n### Checkboxes\n\nUse `ContextMenuCheckboxItem` for toggles.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"context-menu-checkboxes\" />\n\n### Radio\n\nUse `ContextMenuRadioItem` for exclusive choices.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"context-menu-radio\" />\n\n### Destructive\n\nUse `variant=\"destructive\"` to style the menu item as destructive.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"context-menu-destructive\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"context-menu-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Radix UI](https://www.radix-ui.com/docs/primitives/components/context-menu#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/data-table.mdx",
    "content": "---\ntitle: Data Table\ndescription: Powerful table and datagrids built using TanStack Table.\nbase: base\ncomponent: true\nlinks:\n  doc: https://tanstack.com/table/v8/docs/introduction\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"data-table-demo\"\n  align=\"start\"\n  previewClassName=\"items-start h-auto px-4 md:px-8\"\n  hideCode\n/>\n\n## Introduction\n\nEvery data table or datagrid I've created has been unique. They all behave differently, have specific sorting and filtering requirements, and work with different data sources.\n\nIt doesn't make sense to combine all of these variations into a single component. If we do that, we'll lose the flexibility that [headless UI](https://tanstack.com/table/v8/docs/introduction#what-is-headless-ui) provides.\n\nSo instead of a data-table component, I thought it would be more helpful to provide a guide on how to build your own.\n\nWe'll start with the basic `<Table />` component and build a complex data table from scratch.\n\n<Callout className=\"mt-4\">\n\n**Tip:** If you find yourself using the same table in multiple places in your app, you can always extract it into a reusable component.\n\n</Callout>\n\n## Table of Contents\n\nThis guide will show you how to use [TanStack Table](https://tanstack.com/table) and the `<Table />` component to build your own custom data table. We'll cover the following topics:\n\n- [Basic Table](#basic-table)\n- [Row Actions](#row-actions)\n- [Pagination](#pagination)\n- [Sorting](#sorting)\n- [Filtering](#filtering)\n- [Visibility](#visibility)\n- [Row Selection](#row-selection)\n- [Reusable Components](#reusable-components)\n\n## Installation\n\n1. Add the `<Table />` component to your project:\n\n```bash\nnpx shadcn@latest add table\n```\n\n2. Add `tanstack/react-table` dependency:\n\n```bash\nnpm install @tanstack/react-table\n```\n\n## Prerequisites\n\nWe are going to build a table to show recent payments. Here's what our data looks like:\n\n```tsx showLineNumbers\ntype Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nexport const payments: Payment[] = [\n  {\n    id: \"728ed52f\",\n    amount: 100,\n    status: \"pending\",\n    email: \"m@example.com\",\n  },\n  {\n    id: \"489e1d42\",\n    amount: 125,\n    status: \"processing\",\n    email: \"example@gmail.com\",\n  },\n  // ...\n]\n```\n\n## Project Structure\n\nStart by creating the following file structure:\n\n```txt\napp\n└── payments\n    ├── columns.tsx\n    ├── data-table.tsx\n    └── page.tsx\n```\n\nI'm using a Next.js example here but this works for any other React framework.\n\n- `columns.tsx` (client component) will contain our column definitions.\n- `data-table.tsx` (client component) will contain our `<DataTable />` component.\n- `page.tsx` (server component) is where we'll fetch data and render our table.\n\n## Basic Table\n\nLet's start by building a basic table.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Column Definitions\n\nFirst, we'll define our columns.\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {3,14-27}\n\"use client\"\n\nimport { ColumnDef } from \"@tanstack/react-table\"\n\n// This type is used to define the shape of our data.\n// You can use a Zod schema here if you want.\nexport type Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n  },\n  {\n    accessorKey: \"email\",\n    header: \"Email\",\n  },\n  {\n    accessorKey: \"amount\",\n    header: \"Amount\",\n  },\n]\n```\n\n<Callout className=\"mt-4\">\n\n**Note:** Columns are where you define the core of what your table\nwill look like. They define the data that will be displayed, how it will be\nformatted, sorted and filtered.\n\n</Callout>\n\n### `<DataTable />` component\n\nNext, we'll create a `<DataTable />` component to render our table.\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\"\n\"use client\"\n\nimport {\n  ColumnDef,\n  flexRender,\n  getCoreRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/components/ui/table\"\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[]\n  data: TData[]\n}\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n  })\n\n  return (\n    <div className=\"overflow-hidden rounded-md border\">\n      <Table>\n        <TableHeader>\n          {table.getHeaderGroups().map((headerGroup) => (\n            <TableRow key={headerGroup.id}>\n              {headerGroup.headers.map((header) => {\n                return (\n                  <TableHead key={header.id}>\n                    {header.isPlaceholder\n                      ? null\n                      : flexRender(\n                          header.column.columnDef.header,\n                          header.getContext()\n                        )}\n                  </TableHead>\n                )\n              })}\n            </TableRow>\n          ))}\n        </TableHeader>\n        <TableBody>\n          {table.getRowModel().rows?.length ? (\n            table.getRowModel().rows.map((row) => (\n              <TableRow\n                key={row.id}\n                data-state={row.getIsSelected() && \"selected\"}\n              >\n                {row.getVisibleCells().map((cell) => (\n                  <TableCell key={cell.id}>\n                    {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                  </TableCell>\n                ))}\n              </TableRow>\n            ))\n          ) : (\n            <TableRow>\n              <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n                No results.\n              </TableCell>\n            </TableRow>\n          )}\n        </TableBody>\n      </Table>\n    </div>\n  )\n}\n```\n\n<Callout>\n\n**Tip**: If you find yourself using `<DataTable />` in multiple places, this is the component you could make reusable by extracting it to `components/ui/data-table.tsx`.\n\n`<DataTable columns={columns} data={data} />`\n\n</Callout>\n\n### Render the table\n\nFinally, we'll render our table in our page component.\n\n```tsx showLineNumbers title=\"app/payments/page.tsx\" {22}\nimport { columns, Payment } from \"./columns\"\nimport { DataTable } from \"./data-table\"\n\nasync function getData(): Promise<Payment[]> {\n  // Fetch data from your API here.\n  return [\n    {\n      id: \"728ed52f\",\n      amount: 100,\n      status: \"pending\",\n      email: \"m@example.com\",\n    },\n    // ...\n  ]\n}\n\nexport default async function DemoPage() {\n  const data = await getData()\n\n  return (\n    <div className=\"container mx-auto py-10\">\n      <DataTable columns={columns} data={data} />\n    </div>\n  )\n}\n```\n\n</Steps>\n\n## Cell Formatting\n\nLet's format the amount cell to display the dollar amount. We'll also align the cell to the right.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update columns definition\n\nUpdate the `header` and `cell` definitions for amount as follows:\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {4-15}\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    accessorKey: \"amount\",\n    header: () => <div className=\"text-right\">Amount</div>,\n    cell: ({ row }) => {\n      const amount = parseFloat(row.getValue(\"amount\"))\n      const formatted = new Intl.NumberFormat(\"en-US\", {\n        style: \"currency\",\n        currency: \"USD\",\n      }).format(amount)\n\n      return <div className=\"text-right font-medium\">{formatted}</div>\n    },\n  },\n]\n```\n\nYou can use the same approach to format other cells and headers.\n\n</Steps>\n\n## Row Actions\n\nLet's add row actions to our table. We'll use a `<DropdownMenu />` component for this.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update columns definition\n\nUpdate our columns definition to add a new `actions` column. The `actions` cell returns a `<DropdownMenu />` component.\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {4,6-14,18-45}\n\"use client\"\n\nimport { ColumnDef } from \"@tanstack/react-table\"\nimport { MoreHorizontal } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nexport const columns: ColumnDef<Payment>[] = [\n  // ...\n  {\n    id: \"actions\",\n    cell: ({ row }) => {\n      const payment = row.original\n\n      return (\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"ghost\" className=\"h-8 w-8 p-0\">\n              <span className=\"sr-only\">Open menu</span>\n              <MoreHorizontal className=\"h-4 w-4\" />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\">\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\n            <DropdownMenuItem\n              onClick={() => navigator.clipboard.writeText(payment.id)}\n            >\n              Copy payment ID\n            </DropdownMenuItem>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>View customer</DropdownMenuItem>\n            <DropdownMenuItem>View payment details</DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      )\n    },\n  },\n  // ...\n]\n```\n\nYou can access the row data using `row.original` in the `cell` function. Use this to handle actions for your row eg. use the `id` to make a DELETE call to your API.\n\n</Steps>\n\n## Pagination\n\nNext, we'll add pagination to our table.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {5,17}\nimport {\n  ColumnDef,\n  flexRender,\n  getCoreRowModel,\n  getPaginationRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n  })\n\n  // ...\n}\n```\n\nThis will automatically paginate your rows into pages of 10. See the [pagination docs](https://tanstack.com/table/v8/docs/api/features/pagination) for more information on customizing page size and implementing manual pagination.\n\n### Add pagination controls\n\nWe can add pagination controls to our table using the `<Button />` component and the `table.previousPage()`, `table.nextPage()` API methods.\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {1,15,21-39}\nimport { Button } from \"@/components/ui/button\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n  })\n\n  return (\n    <div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>\n          { // .... }\n        </Table>\n      </div>\n      <div className=\"flex items-center justify-end space-x-2 py-4\">\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => table.previousPage()}\n          disabled={!table.getCanPreviousPage()}\n        >\n          Previous\n        </Button>\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => table.nextPage()}\n          disabled={!table.getCanNextPage()}\n        >\n          Next\n        </Button>\n      </div>\n    </div>\n  )\n}\n```\n\nSee [Reusable Components](#reusable-components) section for a more advanced pagination component.\n\n</Steps>\n\n## Sorting\n\nLet's make the email column sortable.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {3,6,10,18,25-28}\n\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ColumnDef,\n  SortingState,\n  flexRender,\n  getCoreRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    onSortingChange: setSorting,\n    getSortedRowModel: getSortedRowModel(),\n    state: {\n      sorting,\n    },\n  })\n\n  return (\n    <div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>{ ... }</Table>\n      </div>\n    </div>\n  )\n}\n```\n\n### Make header cell sortable\n\nWe can now update the `email` header cell to add sorting controls.\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {4,9-19}\n\"use client\"\n\nimport { ColumnDef } from \"@tanstack/react-table\"\nimport { ArrowUpDown } from \"lucide-react\"\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    accessorKey: \"email\",\n    header: ({ column }) => {\n      return (\n        <Button\n          variant=\"ghost\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n        >\n          Email\n          <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n        </Button>\n      )\n    },\n  },\n]\n```\n\nThis will automatically sort the table (asc and desc) when the user toggles on the header cell.\n\n</Steps>\n\n## Filtering\n\nLet's add a search input to filter emails in our table.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {6,10,17,24-26,35-36,39,45-54}\n\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ColumnDef,\n  ColumnFiltersState,\n  SortingState,\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    onColumnFiltersChange: setColumnFilters,\n    getFilteredRowModel: getFilteredRowModel(),\n    state: {\n      sorting,\n      columnFilters,\n    },\n  })\n\n  return (\n    <div>\n      <div className=\"flex items-center py-4\">\n        <Input\n          placeholder=\"Filter emails...\"\n          value={(table.getColumn(\"email\")?.getFilterValue() as string) ?? \"\"}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>{ ... }</Table>\n      </div>\n    </div>\n  )\n}\n```\n\nFiltering is now enabled for the `email` column. You can add filters to other columns as well. See the [filtering docs](https://tanstack.com/table/v8/docs/guide/filters) for more information on customizing filters.\n\n</Steps>\n\n## Visibility\n\nAdding column visibility is fairly simple using `@tanstack/react-table` visibility API.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {8,18-23,33-34,45,49,64-91}\n\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ColumnDef,\n  ColumnFiltersState,\n  SortingState,\n  VisibilityState,\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from \"@tanstack/react-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n    },\n  })\n\n  return (\n    <div>\n      <div className=\"flex items-center py-4\">\n        <Input\n          placeholder=\"Filter emails...\"\n          value={table.getColumn(\"email\")?.getFilterValue() as string}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" className=\"ml-auto\">\n              Columns\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\">\n            {table\n              .getAllColumns()\n              .filter(\n                (column) => column.getCanHide()\n              )\n              .map((column) => {\n                return (\n                  <DropdownMenuCheckboxItem\n                    key={column.id}\n                    className=\"capitalize\"\n                    checked={column.getIsVisible()}\n                    onCheckedChange={(value) =>\n                      column.toggleVisibility(!!value)\n                    }\n                  >\n                    {column.id}\n                  </DropdownMenuCheckboxItem>\n                )\n              })}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>{ ... }</Table>\n      </div>\n    </div>\n  )\n}\n```\n\nThis adds a dropdown menu that you can use to toggle column visibility.\n\n</Steps>\n\n## Row Selection\n\nNext, we're going to add row selection to our table.\n\n<Steps className=\"mb-0 pt-2\">\n\n### Update column definitions\n\n```tsx showLineNumbers title=\"app/payments/columns.tsx\" {6,9-27}\n\"use client\"\n\nimport { ColumnDef } from \"@tanstack/react-table\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <Checkbox\n        checked={\n          table.getIsAllPageRowsSelected() ||\n          (table.getIsSomePageRowsSelected() && \"indeterminate\")\n        }\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n        aria-label=\"Select all\"\n      />\n    ),\n    cell: ({ row }) => (\n      <Checkbox\n        checked={row.getIsSelected()}\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\n        aria-label=\"Select row\"\n      />\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n]\n```\n\n### Update `<DataTable>`\n\n```tsx showLineNumbers title=\"app/payments/data-table.tsx\" {11,23,28}\nexport function DataTable<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [rowSelection, setRowSelection] = React.useState({})\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  })\n\n  return (\n    <div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table />\n      </div>\n    </div>\n  )\n}\n```\n\nThis adds a checkbox to each row and a checkbox in the header to select all rows.\n\n### Show selected rows\n\nYou can show the number of selected rows using the `table.getFilteredSelectedRowModel()` API.\n\n```tsx\n<div className=\"flex-1 text-sm text-muted-foreground\">\n  {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n  {table.getFilteredRowModel().rows.length} row(s) selected.\n</div>\n```\n\n</Steps>\n\n## Reusable Components\n\nHere are some components you can use to build your data tables. This is from the [Tasks](/examples/tasks) demo.\n\n### Column header\n\nMake any column header sortable and hideable.\n\n<ComponentSource\n  src=\"/app/(app)/examples/tasks/components/data-table-column-header.tsx\"\n  title=\"components/data-table-column-header.tsx\"\n/>\n\n```tsx showLineNumbers {5}\nexport const columns = [\n  {\n    accessorKey: \"email\",\n    header: ({ column }) => (\n      <DataTableColumnHeader column={column} title=\"Email\" />\n    ),\n  },\n]\n```\n\n### Pagination\n\nAdd pagination controls to your table including page size and selection count.\n\n<ComponentSource\n  src=\"/app/(app)/examples/tasks/components/data-table-pagination.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n```tsx\n<DataTablePagination table={table} />\n```\n\n### Column toggle\n\nA component to toggle column visibility.\n\n<ComponentSource\n  src=\"/app/(app)/examples/tasks/components/data-table-view-options.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n```tsx\n<DataTableViewOptions table={table} />\n```\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"data-table-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"items-start h-auto px-4 md:px-8\"\n  hideCode\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/date-picker.mdx",
    "content": "---\ntitle: Date Picker\ndescription: A date picker component with range and presets.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"date-picker-demo\" />\n\n## Installation\n\nThe Date Picker is built using a composition of the `<Popover />` and the `<Calendar />` components.\n\nSee installation instructions for the [Popover](/docs/components/radix/popover#installation) and the [Calendar](/docs/components/radix/calendar#installation) components.\n\n## Usage\n\n```tsx showLineNumbers title=\"components/example-date-picker.tsx\"\n\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { Calendar as CalendarIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\n\nexport function DatePickerDemo() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"outline\"\n          data-empty={!date}\n          className=\"w-[280px] justify-start text-left font-normal data-[empty=true]:text-muted-foreground\"\n        >\n          <CalendarIcon />\n          {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\">\n        <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n      </PopoverContent>\n    </Popover>\n  )\n}\n```\n\nSee the [React DayPicker](https://react-day-picker.js.org) documentation for more information.\n\n## Examples\n\n### Basic\n\nA basic date picker component.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"date-picker-basic\" />\n\n### Range Picker\n\nA date picker component for selecting a range of dates.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"date-picker-range\" />\n\n### Date of Birth\n\nA date picker component for selecting a date of birth. This component includes a dropdown caption layout for date and month selection.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"date-picker-dob\" />\n\n### Input\n\nA date picker component with an input field for selecting a date.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"date-picker-input\" />\n\n### Time Picker\n\nA date picker component with a time input field for selecting a time.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"date-picker-time\" />\n\n### Natural Language Picker\n\nThis component uses the `chrono-node` library to parse natural language dates.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"date-picker-natural-language\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"date-picker-rtl\"\n  direction=\"rtl\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/dialog.mdx",
    "content": "---\ntitle: Dialog\ndescription: A window overlaid on either the primary window or another dialog window, rendering the content underneath inert.\nfeatured: true\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/dialog\n  api: https://www.radix-ui.com/docs/primitives/components/dialog#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"dialog-demo\"\n  description=\"A dialog for editing profile details.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add dialog\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"dialog\"\n  title=\"components/ui/dialog.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\n```\n\n```tsx showLineNumbers\n<Dialog>\n  <DialogTrigger>Open</DialogTrigger>\n  <DialogContent>\n    <DialogHeader>\n      <DialogTitle>Are you absolutely sure?</DialogTitle>\n      <DialogDescription>\n        This action cannot be undone. This will permanently delete your account\n        and remove your data from our servers.\n      </DialogDescription>\n    </DialogHeader>\n  </DialogContent>\n</Dialog>\n```\n\n## Examples\n\n### Custom Close Button\n\nReplace the default close control with your own button.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dialog-close-button\" />\n\n### No Close Button\n\nUse `showCloseButton={false}` to hide the close button.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dialog-no-close-button\" />\n\n### Sticky Footer\n\nKeep actions visible while the content scrolls.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dialog-sticky-footer\" />\n\n### Scrollable Content\n\nLong content can scroll while the header stays in view.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dialog-scrollable-content\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dialog-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI](https://www.radix-ui.com/docs/primitives/components/dialog#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/direction.mdx",
    "content": "---\ntitle: Direction\ndescription: A provider component that sets the text direction for your application.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/primitives/docs/utilities/direction-provider\n  api: https://www.radix-ui.com/primitives/docs/utilities/direction-provider#api-reference\n---\n\nThe `DirectionProvider` component is used to set the text direction (`ltr` or `rtl`) for your application. This is essential for supporting right-to-left languages like Arabic, Hebrew, and Persian.\n\nHere's a preview of the component in RTL mode. Use the language selector to switch the language. To see more examples, look for the RTL section on components pages.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"card-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto\"\n  hideCode\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add direction\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"direction\"\n  title=\"components/ui/direction.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { DirectionProvider } from \"@/components/ui/direction\"\n```\n\n```tsx showLineNumbers\n<html dir=\"rtl\">\n  <body>\n    <DirectionProvider direction=\"rtl\">\n      {/* Your app content */}\n    </DirectionProvider>\n  </body>\n</html>\n```\n\n## useDirection\n\nThe `useDirection` hook is used to get the current direction of the application.\n\n```tsx showLineNumbers\nimport { useDirection } from \"@/components/ui/direction\"\n\nfunction MyComponent() {\n  const direction = useDirection()\n  return <div>Current direction: {direction}</div>\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/drawer.mdx",
    "content": "---\ntitle: Drawer\ndescription: A drawer component for React.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://vaul.emilkowal.ski/getting-started\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"drawer-demo\" />\n\n## About\n\nDrawer is built on top of [Vaul](https://github.com/emilkowalski/vaul) by [emilkowalski](https://twitter.com/emilkowalski).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add drawer\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install vaul\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"drawer\"\n  title=\"components/ui/drawer.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/components/ui/drawer\"\n```\n\n```tsx showLineNumbers\n<Drawer>\n  <DrawerTrigger>Open</DrawerTrigger>\n  <DrawerContent>\n    <DrawerHeader>\n      <DrawerTitle>Are you absolutely sure?</DrawerTitle>\n      <DrawerDescription>This action cannot be undone.</DrawerDescription>\n    </DrawerHeader>\n    <DrawerFooter>\n      <Button>Submit</Button>\n      <DrawerClose>\n        <Button variant=\"outline\">Cancel</Button>\n      </DrawerClose>\n    </DrawerFooter>\n  </DrawerContent>\n</Drawer>\n```\n\n## Examples\n\n### Scrollable Content\n\nKeep actions visible while the content scrolls.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"drawer-scrollable-content\" />\n\n### Sides\n\nUse the `direction` prop to set the side of the drawer. Available options are `top`, `right`, `bottom`, and `left`.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"drawer-sides\" />\n\n### Responsive Dialog\n\nYou can combine the `Dialog` and `Drawer` components to create a responsive dialog. This renders a `Dialog` component on desktop and a `Drawer` on mobile.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"drawer-dialog\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"drawer-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Vaul documentation](https://vaul.emilkowal.ski/getting-started) for the full API reference.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/dropdown-menu.mdx",
    "content": "---\ntitle: Dropdown Menu\ndescription: Displays a menu to the user — such as a set of actions or functions — triggered by a button.\nfeatured: true\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/dropdown-menu\n  api: https://www.radix-ui.com/docs/primitives/components/dropdown-menu#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"dropdown-menu-demo\"\n  description=\"A dropdown menu with icons, shortcuts and sub menu items.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add dropdown-menu\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"dropdown-menu\"\n  title=\"components/ui/dropdown-menu.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Button } from \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n```\n\n```tsx showLineNumbers\n<DropdownMenu>\n  <DropdownMenuTrigger asChild>\n    <Button variant=\"outline\">Open</Button>\n  </DropdownMenuTrigger>\n  <DropdownMenuContent>\n    <DropdownMenuGroup>\n      <DropdownMenuLabel>My Account</DropdownMenuLabel>\n      <DropdownMenuItem>Profile</DropdownMenuItem>\n      <DropdownMenuItem>Billing</DropdownMenuItem>\n    </DropdownMenuGroup>\n    <DropdownMenuSeparator />\n    <DropdownMenuGroup>\n      <DropdownMenuItem>Team</DropdownMenuItem>\n      <DropdownMenuItem>Subscription</DropdownMenuItem>\n    </DropdownMenuGroup>\n  </DropdownMenuContent>\n</DropdownMenu>\n```\n\n## Examples\n\n### Basic\n\nA basic dropdown menu with labels and separators.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-basic\" />\n\n### Submenu\n\nUse `DropdownMenuSub` to nest secondary actions.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-submenu\" />\n\n### Shortcuts\n\nAdd `DropdownMenuShortcut` to show keyboard hints.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-shortcuts\" />\n\n### Icons\n\nCombine icons with labels for quick scanning.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-icons\" />\n\n### Checkboxes\n\nUse `DropdownMenuCheckboxItem` for toggles.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-checkboxes\" />\n\n### Checkboxes Icons\n\nAdd icons to checkbox items.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"dropdown-menu-checkboxes-icons\"\n/>\n\n### Radio Group\n\nUse `DropdownMenuRadioGroup` for exclusive choices.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-radio-group\" />\n\n### Radio Icons\n\nShow radio options with icons.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-radio-icons\" />\n\n### Destructive\n\nUse `variant=\"destructive\"` for irreversible actions.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-destructive\" />\n\n### Avatar\n\nAn account switcher dropdown triggered by an avatar.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-avatar\" />\n\n### Complex\n\nA richer example combining groups, icons, and submenus.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"dropdown-menu-complex\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"dropdown-menu-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Radix UI documentation](https://www.radix-ui.com/docs/primitives/components/dropdown-menu) for the full API reference.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/empty.mdx",
    "content": "---\ntitle: Empty\ndescription: Use the Empty component to display an empty state.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"empty-demo\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add empty\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"empty\"\n  title=\"components/ui/empty.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/components/ui/empty\"\n```\n\n```tsx\n<Empty>\n  <EmptyHeader>\n    <EmptyMedia variant=\"icon\">\n      <Icon />\n    </EmptyMedia>\n    <EmptyTitle>No data</EmptyTitle>\n    <EmptyDescription>No data found</EmptyDescription>\n  </EmptyHeader>\n  <EmptyContent>\n    <Button>Add data</Button>\n  </EmptyContent>\n</Empty>\n```\n\n## Examples\n\n### Outline\n\nUse the `border` utility class to create an outline empty state.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"empty-outline\"\n  previewClassName=\"h-96 p-6 md:p-10\"\n/>\n\n### Background\n\nUse the `bg-*` and `bg-gradient-*` utilities to add a background to the empty state.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"empty-background\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n### Avatar\n\nUse the `EmptyMedia` component to display an avatar in the empty state.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"empty-avatar\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n### Avatar Group\n\nUse the `EmptyMedia` component to display an avatar group in the empty state.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"empty-avatar-group\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n### InputGroup\n\nYou can add an `InputGroup` component to the `EmptyContent` component.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"empty-input-group\"\n  previewClassName=\"h-96 p-0\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"empty-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Empty\n\nThe main component of the empty state. Wraps the `EmptyHeader` and `EmptyContent` components.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<Empty>\n  <EmptyHeader />\n  <EmptyContent />\n</Empty>\n```\n\n### EmptyHeader\n\nThe `EmptyHeader` component wraps the empty media, title, and description.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<EmptyHeader>\n  <EmptyMedia />\n  <EmptyTitle />\n  <EmptyDescription />\n</EmptyHeader>\n```\n\n### EmptyMedia\n\nUse the `EmptyMedia` component to display the media of the empty state such as an icon or an image. You can also use it to display other components such as an avatar.\n\n| Prop        | Type                  | Default   |\n| ----------- | --------------------- | --------- |\n| `variant`   | `\"default\" \\| \"icon\"` | `default` |\n| `className` | `string`              |           |\n\n```tsx\n<EmptyMedia variant=\"icon\">\n  <Icon />\n</EmptyMedia>\n```\n\n```tsx\n<EmptyMedia>\n  <Avatar>\n    <AvatarImage src=\"...\" />\n    <AvatarFallback>CN</AvatarFallback>\n  </Avatar>\n</EmptyMedia>\n```\n\n### EmptyTitle\n\nUse the `EmptyTitle` component to display the title of the empty state.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<EmptyTitle>No data</EmptyTitle>\n```\n\n### EmptyDescription\n\nUse the `EmptyDescription` component to display the description of the empty state.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<EmptyDescription>You do not have any notifications.</EmptyDescription>\n```\n\n### EmptyContent\n\nUse the `EmptyContent` component to display the content of the empty state such as a button, input or a link.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<EmptyContent>\n  <Button>Add Project</Button>\n</EmptyContent>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/field.mdx",
    "content": "---\ntitle: Field\ndescription: Combine labels, controls, and help text to compose accessible form fields and grouped inputs.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"field-demo\"\n  previewClassName=\"h-[800px] p-6 md:h-[850px]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add field\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"field\"\n  title=\"components/ui/field.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/components/ui/field\"\n```\n\n```tsx showLineNumbers\n<FieldSet>\n  <FieldLegend>Profile</FieldLegend>\n  <FieldDescription>This appears on invoices and emails.</FieldDescription>\n  <FieldGroup>\n    <Field>\n      <FieldLabel htmlFor=\"name\">Full name</FieldLabel>\n      <Input id=\"name\" autoComplete=\"off\" placeholder=\"Evil Rabbit\" />\n      <FieldDescription>This appears on invoices and emails.</FieldDescription>\n    </Field>\n    <Field>\n      <FieldLabel htmlFor=\"username\">Username</FieldLabel>\n      <Input id=\"username\" autoComplete=\"off\" aria-invalid />\n      <FieldError>Choose another username.</FieldError>\n    </Field>\n    <Field orientation=\"horizontal\">\n      <Switch id=\"newsletter\" />\n      <FieldLabel htmlFor=\"newsletter\">Subscribe to the newsletter</FieldLabel>\n    </Field>\n  </FieldGroup>\n</FieldSet>\n```\n\n## Anatomy\n\nThe `Field` family is designed for composing accessible forms. A typical field is structured as follows:\n\n```tsx showLineNumbers\n<Field>\n  <FieldLabel htmlFor=\"input-id\">Label</FieldLabel>\n  {/* Input, Select, Switch, etc. */}\n  <FieldDescription>Optional helper text.</FieldDescription>\n  <FieldError>Validation message.</FieldError>\n</Field>\n```\n\n- `Field` is the core wrapper for a single field.\n- `FieldContent` is a flex column that groups label and description. Not required if you have no description.\n- Wrap related fields with `FieldGroup`, and use `FieldSet` with `FieldLegend` for semantic grouping.\n\n## Form\n\nSee the [Form](/docs/forms) documentation for building forms with the `Field` component and [React Hook Form](/docs/forms/react-hook-form) or [Tanstack Form](/docs/forms/tanstack-form).\n\n## Examples\n\n### Input\n\n<ComponentPreview styleName=\"radix-nova\" name=\"field-input\" />\n\n### Textarea\n\n<ComponentPreview styleName=\"radix-nova\" name=\"field-textarea\" />\n\n### Select\n\n<ComponentPreview styleName=\"radix-nova\" name=\"field-select\" />\n\n### Slider\n\n<ComponentPreview styleName=\"radix-nova\" name=\"field-slider\" />\n\n### Fieldset\n\n<ComponentPreview styleName=\"radix-nova\" name=\"field-fieldset\" />\n\n### Checkbox\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"field-checkbox\"\n  previewClassName=\"h-[32rem]\"\n/>\n\n### Radio\n\n<ComponentPreview styleName=\"radix-nova\" name=\"field-radio\" />\n\n### Switch\n\n<ComponentPreview styleName=\"radix-nova\" name=\"field-switch\" />\n\n### Choice Card\n\nWrap `Field` components inside `FieldLabel` to create selectable field groups. This works with `RadioItem`, `Checkbox` and `Switch` components.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"field-choice-card\" />\n\n### Field Group\n\nStack `Field` components with `FieldGroup`. Add `FieldSeparator` to divide them.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"field-group\"\n  previewClassName=\"h-96\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"field-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto p-6\"\n/>\n\n## Responsive Layout\n\n- **Vertical fields:** Default orientation stacks label, control, and helper text—ideal for mobile-first layouts.\n- **Horizontal fields:** Set `orientation=\"horizontal\"` on `Field` to align the label and control side-by-side. Pair with `FieldContent` to keep descriptions aligned.\n- **Responsive fields:** Set `orientation=\"responsive\"` for automatic column layouts inside container-aware parents. Apply `@container/field-group` classes on `FieldGroup` to switch orientations at specific breakpoints.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"field-responsive\"\n  previewClassName=\"h-[650px] p-6 md:h-[500px] md:p-10\"\n/>\n\n## Validation and Errors\n\n- Add `data-invalid` to `Field` to switch the entire block into an error state.\n- Add `aria-invalid` on the input itself for assistive technologies.\n- Render `FieldError` immediately after the control or inside `FieldContent` to keep error messages aligned with the field.\n\n```tsx showLineNumbers /data-invalid/ /aria-invalid/\n<Field data-invalid>\n  <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n  <Input id=\"email\" type=\"email\" aria-invalid />\n  <FieldError>Enter a valid email address.</FieldError>\n</Field>\n```\n\n## Accessibility\n\n- `FieldSet` and `FieldLegend` keep related controls grouped for keyboard and assistive tech users.\n- `Field` outputs `role=\"group\"` so nested controls inherit labeling from `FieldLabel` and `FieldLegend` when combined.\n- Apply `FieldSeparator` sparingly to ensure screen readers encounter clear section boundaries.\n\n## API Reference\n\n### FieldSet\n\nContainer that renders a semantic `fieldset` with spacing presets.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldSet>\n  <FieldLegend>Delivery</FieldLegend>\n  <FieldGroup>{/* Fields */}</FieldGroup>\n</FieldSet>\n```\n\n### FieldLegend\n\nLegend element for a `FieldSet`. Switch to the `label` variant to align with label sizing.\n\n| Prop        | Type                  | Default    |\n| ----------- | --------------------- | ---------- |\n| `variant`   | `\"legend\" \\| \"label\"` | `\"legend\"` |\n| `className` | `string`              |            |\n\n```tsx\n<FieldLegend variant=\"label\">Notification Preferences</FieldLegend>\n```\n\nThe `FieldLegend` has two variants: `legend` and `label`. The `label` variant applies label sizing and alignment. Handy if you have nested `FieldSet`.\n\n### FieldGroup\n\nLayout wrapper that stacks `Field` components and enables container queries for responsive orientations.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldGroup className=\"@container/field-group flex flex-col gap-6\">\n  <Field>{/* ... */}</Field>\n  <Field>{/* ... */}</Field>\n</FieldGroup>\n```\n\n### Field\n\nThe core wrapper for a single field. Provides orientation control, invalid state styling, and spacing.\n\n| Prop           | Type                                         | Default      |\n| -------------- | -------------------------------------------- | ------------ |\n| `orientation`  | `\"vertical\" \\| \"horizontal\" \\| \"responsive\"` | `\"vertical\"` |\n| `className`    | `string`                                     |              |\n| `data-invalid` | `boolean`                                    |              |\n\n```tsx\n<Field orientation=\"horizontal\">\n  <FieldLabel htmlFor=\"remember\">Remember me</FieldLabel>\n  <Switch id=\"remember\" />\n</Field>\n```\n\n### FieldContent\n\nFlex column that groups control and descriptions when the label sits beside the control. Not required if you have no description.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<Field>\n  <Checkbox id=\"notifications\" />\n  <FieldContent>\n    <FieldLabel htmlFor=\"notifications\">Notifications</FieldLabel>\n    <FieldDescription>Email, SMS, and push options.</FieldDescription>\n  </FieldContent>\n</Field>\n```\n\n### FieldLabel\n\nLabel styled for both direct inputs and nested `Field` children.\n\n| Prop        | Type      | Default |\n| ----------- | --------- | ------- |\n| `className` | `string`  |         |\n| `asChild`   | `boolean` | `false` |\n\n```tsx\n<FieldLabel htmlFor=\"email\">Email</FieldLabel>\n```\n\n### FieldTitle\n\nRenders a title with label styling inside `FieldContent`.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldContent>\n  <FieldTitle>Enable Touch ID</FieldTitle>\n  <FieldDescription>Unlock your device faster.</FieldDescription>\n</FieldContent>\n```\n\n### FieldDescription\n\nHelper text slot that automatically balances long lines in horizontal layouts.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldDescription>We never share your email with anyone.</FieldDescription>\n```\n\n### FieldSeparator\n\nVisual divider to separate sections inside a `FieldGroup`. Accepts optional inline content.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<FieldSeparator>Or continue with</FieldSeparator>\n```\n\n### FieldError\n\nAccessible error container that accepts children or an `errors` array (e.g., from `react-hook-form`).\n\n| Prop        | Type                                       | Default |\n| ----------- | ------------------------------------------ | ------- |\n| `errors`    | `Array<{ message?: string } \\| undefined>` |         |\n| `className` | `string`                                   |         |\n\n```tsx\n<FieldError errors={errors.username} />\n```\n\nWhen the `errors` array contains multiple messages, the component renders a list automatically.\n\n`FieldError` also accepts issues produced by any validator that implements [Standard Schema](https://standardschema.dev/), including Zod, Valibot, and ArkType. Pass the `issues` array from the schema result directly to render a unified error list across libraries.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/hover-card.mdx",
    "content": "---\ntitle: Hover Card\ndescription: For sighted users to preview content available behind a link.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/hover-card\n  api: https://www.radix-ui.com/docs/primitives/components/hover-card#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"hover-card-demo\"\n  previewClassName=\"h-80\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add hover-card\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"hover-card\"\n  title=\"components/ui/hover-card.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/components/ui/hover-card\"\n```\n\n```tsx showLineNumbers\n<HoverCard>\n  <HoverCardTrigger>Hover</HoverCardTrigger>\n  <HoverCardContent>\n    The React Framework – created and maintained by @vercel.\n  </HoverCardContent>\n</HoverCard>\n```\n\n## Trigger Delays\n\nUse `openDelay` and `closeDelay` on the `HoverCard` to control when the card opens and\ncloses.\n\n```tsx showLineNumbers\n<HoverCard openDelay={100} closeDelay={200}>\n  <HoverCardTrigger>Hover</HoverCardTrigger>\n  <HoverCardContent>Content</HoverCardContent>\n</HoverCard>\n```\n\n## Positioning\n\nUse the `side` and `align` props on `HoverCardContent` to control placement.\n\n```tsx showLineNumbers\n<HoverCard>\n  <HoverCardTrigger>Hover</HoverCardTrigger>\n  <HoverCardContent side=\"top\" align=\"start\">\n    Content\n  </HoverCardContent>\n</HoverCard>\n```\n\n## Examples\n\n### Basic\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"hover-card-demo\"\n  previewClassName=\"h-80\"\n/>\n\n### Sides\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"hover-card-sides\"\n  previewClassName=\"h-[22rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"hover-card-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-80\"\n/>\n\n## API Reference\n\nSee the [Radix UI](https://www.radix-ui.com/docs/primitives/components/hover-card#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/input-group.mdx",
    "content": "---\ntitle: Input Group\ndescription: Add addons, buttons, and helper content to inputs.\nbase: radix\ncomponent: true\n---\n\nimport { IconInfoCircle } from \"@tabler/icons-react\"\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-demo\"\n  previewClassName=\"h-[26rem]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add input-group\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"input-group\"\n  title=\"components/ui/input-group.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/components/ui/input-group\"\n```\n\n```tsx showLineNumbers\n<InputGroup>\n  <InputGroupInput placeholder=\"Search...\" />\n  <InputGroupAddon>\n    <SearchIcon />\n  </InputGroupAddon>\n</InputGroup>\n```\n\n## Align\n\nUse the `align` prop on `InputGroupAddon` to position the addon relative to the input.\n\n<Callout>\n  For proper focus management, `InputGroupAddon` should always be placed after\n  `InputGroupInput` or `InputGroupTextarea` in the DOM. Use the `align` prop to\n  visually position the addon.\n</Callout>\n\n### inline-start\n\nUse `align=\"inline-start\"` to position the addon at the start of the input. This is the default.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-inline-start\"\n  previewClassName=\"h-48\"\n/>\n\n### inline-end\n\nUse `align=\"inline-end\"` to position the addon at the end of the input.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-inline-end\"\n  previewClassName=\"h-48\"\n/>\n\n### block-start\n\nUse `align=\"block-start\"` to position the addon above the input.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-block-start\"\n  previewClassName=\"h-96\"\n/>\n\n### block-end\n\nUse `align=\"block-end\"` to position the addon below the input.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-block-end\"\n  previewClassName=\"h-[26rem]\"\n/>\n\n## Examples\n\n### Icon\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-icon\"\n  previewClassName=\"h-80\"\n/>\n\n### Text\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-text\"\n  previewClassName=\"h-80\"\n/>\n\n### Button\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-button\"\n  previewClassName=\"h-72\"\n/>\n\n### Kbd\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-kbd\"\n  previewClassName=\"h-40\"\n/>\n\n### Dropdown\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-dropdown\"\n  previewClassName=\"h-56\"\n/>\n\n### Spinner\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-spinner\"\n  previewClassName=\"h-80\"\n/>\n\n### Textarea\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-textarea\"\n  previewClassName=\"h-96\"\n/>\n\n### Custom Input\n\nAdd the `data-slot=\"input-group-control\"` attribute to your custom input for automatic focus state handling.\n\nHere's an example of a custom resizable textarea from a third-party library.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-custom\"\n  previewClassName=\"h-56\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-group-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## API Reference\n\n### InputGroup\n\nThe main component that wraps inputs and addons.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\n```tsx\n<InputGroup>\n  <InputGroupInput />\n  <InputGroupAddon />\n</InputGroup>\n```\n\n### InputGroupAddon\n\nDisplays icons, text, buttons, or other content alongside inputs.\n\n<Callout icon={<IconInfoCircle />} title=\"Focus Navigation\">\n  For proper focus navigation, the `InputGroupAddon` component should be placed\n  after the input. Set the `align` prop to position the addon.\n</Callout>\n\n| Prop        | Type                                                             | Default          |\n| ----------- | ---------------------------------------------------------------- | ---------------- |\n| `align`     | `\"inline-start\" \\| \"inline-end\" \\| \"block-start\" \\| \"block-end\"` | `\"inline-start\"` |\n| `className` | `string`                                                         |                  |\n\n```tsx\n<InputGroupAddon align=\"inline-end\">\n  <SearchIcon />\n</InputGroupAddon>\n```\n\n**For `<InputGroupInput />`, use the `inline-start` or `inline-end` alignment. For `<InputGroupTextarea />`, use the `block-start` or `block-end` alignment.**\n\nThe `InputGroupAddon` component can have multiple `InputGroupButton` components and icons.\n\n```tsx\n<InputGroupAddon>\n  <InputGroupButton>Button</InputGroupButton>\n  <InputGroupButton>Button</InputGroupButton>\n</InputGroupAddon>\n```\n\n### InputGroupButton\n\nDisplays buttons within input groups.\n\n| Prop        | Type                                                                          | Default   |\n| ----------- | ----------------------------------------------------------------------------- | --------- |\n| `size`      | `\"xs\" \\| \"icon-xs\" \\| \"sm\" \\| \"icon-sm\"`                                      | `\"xs\"`    |\n| `variant`   | `\"default\" \\| \"destructive\" \\| \"outline\" \\| \"secondary\" \\| \"ghost\" \\| \"link\"` | `\"ghost\"` |\n| `className` | `string`                                                                      |           |\n\n```tsx\n<InputGroupButton>Button</InputGroupButton>\n<InputGroupButton size=\"icon-xs\" aria-label=\"Copy\">\n  <CopyIcon />\n</InputGroupButton>\n```\n\n### InputGroupInput\n\nReplacement for `<Input />` when building input groups. This component has the input group styles pre-applied and uses the unified `data-slot=\"input-group-control\"` for focus state handling.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\nAll other props are passed through to the underlying `<Input />` component.\n\n```tsx\n<InputGroup>\n  <InputGroupInput placeholder=\"Enter text...\" />\n  <InputGroupAddon>\n    <SearchIcon />\n  </InputGroupAddon>\n</InputGroup>\n```\n\n### InputGroupTextarea\n\nReplacement for `<Textarea />` when building input groups. This component has the textarea group styles pre-applied and uses the unified `data-slot=\"input-group-control\"` for focus state handling.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` |         |\n\nAll other props are passed through to the underlying `<Textarea />` component.\n\n```tsx\n<InputGroup>\n  <InputGroupTextarea placeholder=\"Enter message...\" />\n  <InputGroupAddon align=\"block-end\">\n    <InputGroupButton>Send</InputGroupButton>\n  </InputGroupAddon>\n</InputGroup>\n```\n\n## Changelog\n\n### 2025-10-06 `InputGroup`\n\nAdd the `min-w-0` class to the `InputGroup` component. See [diff](https://github.com/shadcn-ui/ui/pull/8341/files#diff-0e2ee95d0050ca4c5d82339df86c54e14a6739dc4638fdda0eec8f73aebc2da9).\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/input-otp.mdx",
    "content": "---\ntitle: Input OTP\ndescription: Accessible one-time password component with copy-paste functionality.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://input-otp.rodz.dev\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-demo\" />\n\n## About\n\nInput OTP is built on top of [input-otp](https://github.com/guilhermerodz/input-otp) by [@guilherme_rodz](https://twitter.com/guilherme_rodz).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add input-otp\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install input-otp\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"input-otp\"\n  title=\"components/ui/input-otp.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/components/ui/input-otp\"\n```\n\n```tsx showLineNumbers\n<InputOTP maxLength={6}>\n  <InputOTPGroup>\n    <InputOTPSlot index={0} />\n    <InputOTPSlot index={1} />\n    <InputOTPSlot index={2} />\n  </InputOTPGroup>\n  <InputOTPSeparator />\n  <InputOTPGroup>\n    <InputOTPSlot index={3} />\n    <InputOTPSlot index={4} />\n    <InputOTPSlot index={5} />\n  </InputOTPGroup>\n</InputOTP>\n```\n\n## Pattern\n\nUse the `pattern` prop to define a custom pattern for the OTP input.\n\n```tsx showLineNumbers {1,5}\nimport { REGEXP_ONLY_DIGITS_AND_CHARS } from \"input-otp\"\n\n;<InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>\n  ...\n</InputOTP>\n```\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-pattern\" />\n\n## Examples\n\n### Separator\n\nUse the `<InputOTPSeparator />` component to add a separator between input groups.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-separator\" />\n\n### Disabled\n\nUse the `disabled` prop to disable the input.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-disabled\" />\n\n### Controlled\n\nUse the `value` and `onChange` props to control the input value.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-controlled\" />\n\n### Invalid\n\nUse `aria-invalid` on the slots to show an error state.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-invalid\" />\n\n### Four Digits\n\nA common pattern for PIN codes. This uses the `pattern={REGEXP_ONLY_DIGITS}` prop.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-four-digits\" />\n\n### Alphanumeric\n\nUse `REGEXP_ONLY_DIGITS_AND_CHARS` to accept both letters and numbers.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-alphanumeric\" />\n\n### Form\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-otp-form\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"input-otp-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [input-otp](https://input-otp.rodz.dev) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/input.mdx",
    "content": "---\ntitle: Input\ndescription: A text input component for forms and user data entry with built-in styling and accessibility features.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-demo\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add input\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"input\"\n  title=\"components/ui/input.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Input } from \"@/components/ui/input\"\n```\n\n```tsx\n<Input />\n```\n\n## Examples\n\n### Basic\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-basic\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Field\n\nUse `Field`, `FieldLabel`, and `FieldDescription` to create an input with a\nlabel and description.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-field\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Field Group\n\nUse `FieldGroup` to show multiple `Field` blocks and to build forms.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-fieldgroup\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Disabled\n\nUse the `disabled` prop to disable the input. To style the disabled state, add the `data-disabled` attribute to the `Field` component.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-disabled\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Invalid\n\nUse the `aria-invalid` prop to mark the input as invalid. To style the invalid state, add the `data-invalid` attribute to the `Field` component.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-invalid\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### File\n\nUse the `type=\"file\"` prop to create a file input.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-file\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Inline\n\nUse `Field` with `orientation=\"horizontal\"` to create an inline input.\nPair with `Button` to create a search input with a button.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-inline\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Grid\n\nUse a grid layout to place multiple inputs side by side.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-grid\"\n  previewClassName=\"p-6\"\n/>\n\n### Required\n\nUse the `required` attribute to indicate required inputs.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-required\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Badge\n\nUse `Badge` in the label to highlight a recommended field.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-badge\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Input Group\n\nTo add icons, text, or buttons inside an input, use the `InputGroup` component. See the [Input Group](/docs/components/input-group) component for more examples.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-input-group\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Button Group\n\nTo add buttons to an input, use the `ButtonGroup` component. See the [Button Group](/docs/components/button-group) component for more examples.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-button-group\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Form\n\nA full form example with multiple inputs, a select, and a button.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-form\"\n  previewClassName=\"h-[32rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"input-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"*:max-w-xs\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/item.mdx",
    "content": "---\ntitle: Item\ndescription: A versatile component for displaying content with media, title, description, and actions.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"item-demo\" />\n\nThe `Item` component is a straightforward flex container that can house nearly any type of content. Use it to display a title, description, and actions. Group it with the `ItemGroup` component to create a list of items.\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add item\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"item\"\n  title=\"components/ui/item.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/components/ui/item\"\n```\n\n```tsx showLineNumbers\n<Item>\n  <ItemMedia variant=\"icon\">\n    <Icon />\n  </ItemMedia>\n  <ItemContent>\n    <ItemTitle>Title</ItemTitle>\n    <ItemDescription>Description</ItemDescription>\n  </ItemContent>\n  <ItemActions>\n    <Button>Action</Button>\n  </ItemActions>\n</Item>\n```\n\n## Item vs Field\n\nUse `Field` if you need to display a form input such as a checkbox, input, radio, or select.\n\nIf you only need to display content such as a title, description, and actions, use `Item`.\n\n## Variant\n\nUse the `variant` prop to change the visual style of the item.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"item-variant\"\n  previewClassName=\"h-96\"\n/>\n\n## Size\n\nUse the `size` prop to change the size of the item. Available sizes are `default`, `sm`, and `xs`.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"item-size\"\n  previewClassName=\"h-96\"\n/>\n\n## Examples\n\n### Icon\n\nUse `ItemMedia` with `variant=\"icon\"` to display an icon.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"item-icon\" />\n\n### Avatar\n\nYou can use `ItemMedia` with `variant=\"avatar\"` to display an avatar.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"item-avatar\" />\n\n### Image\n\nUse `ItemMedia` with `variant=\"image\"` to display an image.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"item-image\" />\n\n### Group\n\nUse `ItemGroup` to group related items together.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"item-group\"\n  previewClassName=\"h-96\"\n/>\n\n### Header\n\nUse `ItemHeader` to add a header above the item content.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"item-header\"\n  previewClassName=\"h-96\"\n/>\n\n### Link\n\nUse the `asChild` prop to render the item as a link. The hover and focus states will be applied to the anchor element.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"item-link\" />\n\n```tsx showLineNumbers\n<Item asChild>\n  <a href=\"/dashboard\">\n    <ItemMedia variant=\"icon\">\n      <HomeIcon />\n    </ItemMedia>\n    <ItemContent>\n      <ItemTitle>Dashboard</ItemTitle>\n      <ItemDescription>Overview of your account and activity.</ItemDescription>\n    </ItemContent>\n  </a>\n</Item>\n```\n\n### Dropdown\n\n<ComponentPreview styleName=\"radix-nova\" name=\"item-dropdown\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"item-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Item\n\nThe main component for displaying content with media, title, description, and actions.\n\n| Prop      | Type                                | Default     |\n| --------- | ----------------------------------- | ----------- |\n| `variant` | `\"default\" \\| \"outline\" \\| \"muted\"` | `\"default\"` |\n| `size`    | `\"default\" \\| \"sm\" \\| \"xs\"`         | `\"default\"` |\n| `asChild` | `boolean`                           | `false`     |\n\n### ItemGroup\n\nA container that groups related items together with consistent styling.\n\n```tsx\n<ItemGroup>\n  <Item />\n  <Item />\n</ItemGroup>\n```\n\n### ItemSeparator\n\nA separator between items in a group.\n\n```tsx\n<ItemGroup>\n  <Item />\n  <ItemSeparator />\n  <Item />\n</ItemGroup>\n```\n\n### ItemMedia\n\nUse `ItemMedia` to display media content such as icons, images, or avatars.\n\n| Prop      | Type                             | Default     |\n| --------- | -------------------------------- | ----------- |\n| `variant` | `\"default\" \\| \"icon\" \\| \"image\"` | `\"default\"` |\n\n```tsx\n<ItemMedia variant=\"icon\">\n  <Icon />\n</ItemMedia>\n```\n\n```tsx\n<ItemMedia variant=\"image\">\n  <img src=\"...\" alt=\"...\" />\n</ItemMedia>\n```\n\n### ItemContent\n\nWraps the title and description of the item.\n\n```tsx\n<ItemContent>\n  <ItemTitle>Title</ItemTitle>\n  <ItemDescription>Description</ItemDescription>\n</ItemContent>\n```\n\n### ItemTitle\n\nDisplays the title of the item.\n\n```tsx\n<ItemTitle>Item Title</ItemTitle>\n```\n\n### ItemDescription\n\nDisplays the description of the item.\n\n```tsx\n<ItemDescription>Item description</ItemDescription>\n```\n\n### ItemActions\n\nContainer for action buttons or other interactive elements.\n\n```tsx\n<ItemActions>\n  <Button>Action</Button>\n</ItemActions>\n```\n\n### ItemHeader\n\nDisplays a header above the item content.\n\n```tsx\n<Item>\n  <ItemHeader>Header</ItemHeader>\n  <ItemContent>...</ItemContent>\n</Item>\n```\n\n### ItemFooter\n\nDisplays a footer below the item content.\n\n```tsx\n<Item>\n  <ItemContent>...</ItemContent>\n  <ItemFooter>Footer</ItemFooter>\n</Item>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/kbd.mdx",
    "content": "---\ntitle: Kbd\ndescription: Used to display textual user input from keyboard.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"kbd-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add kbd\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"kbd\"\n  title=\"components/ui/kbd.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Kbd } from \"@/components/ui/kbd\"\n```\n\n```tsx\n<Kbd>Ctrl</Kbd>\n```\n\n## Examples\n\n### Group\n\nUse the `KbdGroup` component to group keyboard keys together.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"kbd-group\" />\n\n### Button\n\nUse the `Kbd` component inside a `Button` component to display a keyboard key inside a button.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"kbd-button\" />\n\n### Tooltip\n\nYou can use the `Kbd` component inside a `Tooltip` component to display a tooltip with a keyboard key.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"kbd-tooltip\" />\n\n### Input Group\n\nYou can use the `Kbd` component inside a `InputGroupAddon` component to display a keyboard key inside an input group.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"kbd-input-group\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"kbd-rtl\" direction=\"rtl\" />\n\n## API Reference\n\n### Kbd\n\nUse the `Kbd` component to display a keyboard key.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | ``      |\n\n```tsx\n<Kbd>Ctrl</Kbd>\n```\n\n### KbdGroup\n\nUse the `KbdGroup` component to group `Kbd` components together.\n\n| Prop        | Type     | Default |\n| ----------- | -------- | ------- |\n| `className` | `string` | ``      |\n\n```tsx\n<KbdGroup>\n  <Kbd>Ctrl</Kbd>\n  <Kbd>B</Kbd>\n</KbdGroup>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/label.mdx",
    "content": "---\ntitle: Label\ndescription: Renders an accessible label associated with controls.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/label\n  api: https://www.radix-ui.com/docs/primitives/components/label#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"label-demo\" />\n\n<Callout>\n  For form fields, use the [Field](/docs/components/radix/field) component which\n  includes built-in label, description, and error handling.\n</Callout>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add label\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"label\"\n  title=\"components/ui/label.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Label } from \"@/components/ui/label\"\n```\n\n```tsx\n<Label htmlFor=\"email\">Your email address</Label>\n```\n\n## Label in Field\n\nFor form fields, use the [Field](/docs/components/radix/field) component which\nincludes built-in `FieldLabel`, `FieldDescription`, and `FieldError` components.\n\n```tsx\n<Field>\n  <FieldLabel htmlFor=\"email\">Your email address</FieldLabel>\n  <Input id=\"email\" />\n</Field>\n```\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"field-demo\"\n  previewClassName=\"h-[44rem]\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"label-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI Label](https://www.radix-ui.com/docs/primitives/components/label#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/menubar.mdx",
    "content": "---\ntitle: Menubar\ndescription: A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/menubar\n  api: https://www.radix-ui.com/docs/primitives/components/menubar#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"menubar-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add menubar\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"menubar\"\n  title=\"components/ui/menubar.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Menubar,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarTrigger,\n} from \"@/components/ui/menubar\"\n```\n\n```tsx showLineNumbers\n<Menubar>\n  <MenubarMenu>\n    <MenubarTrigger>File</MenubarTrigger>\n    <MenubarContent>\n      <MenubarGroup>\n        <MenubarItem>\n          New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n        </MenubarItem>\n        <MenubarItem>New Window</MenubarItem>\n      </MenubarGroup>\n      <MenubarSeparator />\n      <MenubarGroup>\n        <MenubarItem>Share</MenubarItem>\n        <MenubarItem>Print</MenubarItem>\n      </MenubarGroup>\n    </MenubarContent>\n  </MenubarMenu>\n</Menubar>\n```\n\n## Examples\n\n### Checkbox\n\nUse `MenubarCheckboxItem` for toggleable options.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"menubar-checkbox\" />\n\n### Radio\n\nUse `MenubarRadioGroup` and `MenubarRadioItem` for single-select options.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"menubar-radio\" />\n\n### Submenu\n\nUse `MenubarSub`, `MenubarSubTrigger`, and `MenubarSubContent` for nested menus.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"menubar-submenu\" />\n\n### With Icons\n\n<ComponentPreview styleName=\"radix-nova\" name=\"menubar-icons\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"menubar-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI Menubar](https://www.radix-ui.com/docs/primitives/components/menubar#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/meta.json",
    "content": "{\n  \"title\": \"Radix UI\",\n  \"pages\": [\n    \"accordion\",\n    \"alert\",\n    \"alert-dialog\",\n    \"aspect-ratio\",\n    \"avatar\",\n    \"badge\",\n    \"breadcrumb\",\n    \"button\",\n    \"button-group\",\n    \"calendar\",\n    \"card\",\n    \"carousel\",\n    \"chart\",\n    \"checkbox\",\n    \"collapsible\",\n    \"combobox\",\n    \"command\",\n    \"context-menu\",\n    \"data-table\",\n    \"date-picker\",\n    \"dialog\",\n    \"direction\",\n    \"drawer\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"form\",\n    \"hover-card\",\n    \"input\",\n    \"input-group\",\n    \"input-otp\",\n    \"item\",\n    \"kbd\",\n    \"label\",\n    \"menubar\",\n    \"native-select\",\n    \"navigation-menu\",\n    \"pagination\",\n    \"popover\",\n    \"progress\",\n    \"radio-group\",\n    \"resizable\",\n    \"scroll-area\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"sidebar\",\n    \"skeleton\",\n    \"slider\",\n    \"sonner\",\n    \"spinner\",\n    \"switch\",\n    \"table\",\n    \"tabs\",\n    \"textarea\",\n    \"toast\",\n    \"toggle\",\n    \"toggle-group\",\n    \"tooltip\",\n    \"typography\"\n  ]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/native-select.mdx",
    "content": "---\ntitle: Native Select\ndescription: A styled native HTML select element with consistent design system integration.\nbase: radix\ncomponent: true\n---\n\nimport { InfoIcon } from \"lucide-react\"\n\n<Callout variant=\"info\" icon={<InfoIcon className=\"translate-y-[3px]!\" />}>\n  For a styled select component, see the [Select](/docs/components/select)\n  component.\n</Callout>\n\n<ComponentPreview styleName=\"radix-nova\" name=\"native-select-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add native-select\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"native-select\"\n  title=\"components/ui/native-select.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/components/ui/native-select\"\n```\n\n```tsx showLineNumbers\n<NativeSelect>\n  <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n  <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n  <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n  <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n  <NativeSelectOption value=\"pineapple\">Pineapple</NativeSelectOption>\n</NativeSelect>\n```\n\n## Examples\n\n### Groups\n\nUse `NativeSelectOptGroup` to organize options into categories.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"native-select-groups\" />\n\n### Disabled\n\nAdd the `disabled` prop to the `NativeSelect` component to disable the select.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"native-select-disabled\" />\n\n### Invalid\n\nUse `aria-invalid` to show validation errors and the `data-invalid` attribute to the `Field` component for styling.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"native-select-invalid\" />\n\n## Native Select vs Select\n\n- Use `NativeSelect` for native browser behavior, better performance, or mobile-optimized dropdowns.\n- Use `Select` for custom styling, animations, or complex interactions.\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"native-select-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\n### NativeSelect\n\nThe main select component that wraps the native HTML select element.\n\n```tsx\n<NativeSelect>\n  <NativeSelectOption value=\"option1\">Option 1</NativeSelectOption>\n  <NativeSelectOption value=\"option2\">Option 2</NativeSelectOption>\n</NativeSelect>\n```\n\n### NativeSelectOption\n\nRepresents an individual option within the select.\n\n| Prop       | Type      | Default |\n| ---------- | --------- | ------- |\n| `value`    | `string`  |         |\n| `disabled` | `boolean` | `false` |\n\n### NativeSelectOptGroup\n\nGroups related options together for better organization.\n\n| Prop       | Type      | Default |\n| ---------- | --------- | ------- |\n| `label`    | `string`  |         |\n| `disabled` | `boolean` | `false` |\n\n```tsx\n<NativeSelectOptGroup label=\"Fruits\">\n  <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n  <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n</NativeSelectOptGroup>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/navigation-menu.mdx",
    "content": "---\ntitle: Navigation Menu\ndescription: A collection of links for navigating websites.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/navigation-menu\n  api: https://www.radix-ui.com/docs/primitives/components/navigation-menu#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"navigation-menu-demo\"\n  previewClassName=\"h-96\"\n  className=\"overflow-visible\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add navigation-menu\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"navigation-menu\"\n  title=\"components/ui/navigation-menu.tsx\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n} from \"@/components/ui/navigation-menu\"\n```\n\n```tsx showLineNumbers\n<NavigationMenu>\n  <NavigationMenuList>\n    <NavigationMenuItem>\n      <NavigationMenuTrigger>Item One</NavigationMenuTrigger>\n      <NavigationMenuContent>\n        <NavigationMenuLink>Link</NavigationMenuLink>\n      </NavigationMenuContent>\n    </NavigationMenuItem>\n  </NavigationMenuList>\n</NavigationMenu>\n```\n\n## Link Component\n\nUse the `asChild` prop to compose a custom link component such as Next.js `Link`.\n\n```tsx showLineNumbers\nimport Link from \"next/link\"\n\nimport {\n  NavigationMenuItem,\n  NavigationMenuLink,\n  navigationMenuTriggerStyle,\n} from \"@/components/ui/navigation-menu\"\n\nexport function NavigationMenuDemo() {\n  return (\n    <NavigationMenuItem>\n      <NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>\n        <Link href=\"/docs\">Documentation</Link>\n      </NavigationMenuLink>\n    </NavigationMenuItem>\n  )\n}\n```\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"navigation-menu-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-96\"\n  className=\"overflow-visible\"\n/>\n\n## API Reference\n\nSee the [Radix UI Navigation Menu](https://www.radix-ui.com/docs/primitives/components/navigation-menu#api-reference) documentation for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/pagination.mdx",
    "content": "---\ntitle: Pagination\ndescription: Pagination with page navigation, next and previous links.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"pagination-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add pagination\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"pagination\"\n  title=\"components/ui/pagination.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/components/ui/pagination\"\n```\n\n```tsx showLineNumbers\n<Pagination>\n  <PaginationContent>\n    <PaginationItem>\n      <PaginationPrevious href=\"#\" />\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationLink href=\"#\">1</PaginationLink>\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationLink href=\"#\" isActive>\n        2\n      </PaginationLink>\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationLink href=\"#\">3</PaginationLink>\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationEllipsis />\n    </PaginationItem>\n    <PaginationItem>\n      <PaginationNext href=\"#\" />\n    </PaginationItem>\n  </PaginationContent>\n</Pagination>\n```\n\n## Examples\n\n### Simple\n\nA simple pagination with only page numbers.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"pagination-simple\" />\n\n### Icons Only\n\nUse just the previous and next buttons without page numbers. This is useful for data tables with a rows per page selector.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"pagination-icons-only\" />\n\n## Next.js\n\nBy default the `<PaginationLink />` component will render an `<a />` tag.\n\nTo use the Next.js `<Link />` component, make the following updates to `pagination.tsx`.\n\n```diff showLineNumbers /typeof Link/ {1}\n+ import Link from \"next/link\"\n\n- type PaginationLinkProps = ... & React.ComponentProps<\"a\">\n+ type PaginationLinkProps = ... & React.ComponentProps<typeof Link>\n\nconst PaginationLink = ({...props }: ) => (\n  <PaginationItem>\n-   <a>\n+   <Link>\n      // ...\n-   </a>\n+   </Link>\n  </PaginationItem>\n)\n\n```\n\n<Callout className=\"mt-6\">\n\n**Note:** We are making updates to the cli to automatically do this for you.\n\n</Callout>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"pagination-rtl\"\n  direction=\"rtl\"\n/>\n\n## Changelog\n\n### RTL Support\n\nIf you're upgrading from a previous version of the `Pagination` component, you'll need to apply the following updates to add the `text` prop:\n\n<Steps>\n\n<Step>Update `PaginationPrevious`.</Step>\n\n```diff\n  function PaginationPrevious({\n    className,\n+   text = \"Previous\",\n    ...props\n- }: React.ComponentProps<typeof PaginationLink>) {\n+ }: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n    return (\n      <PaginationLink\n        aria-label=\"Go to previous page\"\n        size=\"default\"\n        className={cn(\"cn-pagination-previous\", className)}\n        {...props}\n      >\n        <ChevronLeftIcon />\n        <span className=\"cn-pagination-previous-text hidden sm:block\">\n-         Previous\n+         {text}\n        </span>\n      </PaginationLink>\n    )\n  }\n```\n\n<Step>Update `PaginationNext`.</Step>\n\n```diff\n  function PaginationNext({\n    className,\n+   text = \"Next\",\n    ...props\n- }: React.ComponentProps<typeof PaginationLink>) {\n+ }: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n    return (\n      <PaginationLink\n        aria-label=\"Go to next page\"\n        size=\"default\"\n        className={cn(\"cn-pagination-next\", className)}\n        {...props}\n      >\n-       <span className=\"cn-pagination-next-text hidden sm:block\">Next</span>\n+       <span className=\"cn-pagination-next-text hidden sm:block\">{text}</span>\n        <ChevronRightIcon />\n      </PaginationLink>\n    )\n  }\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/popover.mdx",
    "content": "---\ntitle: Popover\ndescription: Displays rich content in a portal, triggered by a button.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/popover\n  api: https://www.radix-ui.com/docs/primitives/components/popover#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"popover-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add popover\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"popover\"\n  title=\"components/ui/popover.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\n```\n\n```tsx showLineNumbers\n<Popover>\n  <PopoverTrigger asChild>\n    <Button variant=\"outline\">Open Popover</Button>\n  </PopoverTrigger>\n  <PopoverContent>\n    <PopoverHeader>\n      <PopoverTitle>Title</PopoverTitle>\n      <PopoverDescription>Description text here.</PopoverDescription>\n    </PopoverHeader>\n  </PopoverContent>\n</Popover>\n```\n\n## Examples\n\n### Basic\n\nA simple popover with a header, title, and description.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"popover-basic\" />\n\n### Align\n\nUse the `align` prop on `PopoverContent` to control the horizontal alignment.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"popover-alignments\" />\n\n### With Form\n\nA popover with form fields inside.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"popover-form\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"popover-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI Popover](https://www.radix-ui.com/docs/primitives/components/popover#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/progress.mdx",
    "content": "---\ntitle: Progress\ndescription: Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/progress\n  api: https://www.radix-ui.com/docs/primitives/components/progress#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"progress-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add progress\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"progress\"\n  title=\"components/ui/progress.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Progress } from \"@/components/ui/progress\"\n```\n\n```tsx showLineNumbers\n<Progress value={33} />\n```\n\n## Examples\n\n### Label\n\nUse a `Field` component to add a label to the progress bar.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"progress-label\" />\n\n### Controlled\n\nA progress bar that can be controlled by a slider.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"progress-controlled\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"progress-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI Progress](https://www.radix-ui.com/docs/primitives/components/progress#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/radio-group.mdx",
    "content": "---\ntitle: Radio Group\ndescription: A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/radio-group\n  api: https://www.radix-ui.com/docs/primitives/components/radio-group#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"radio-group-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add radio-group\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"radio-group\"\n  title=\"components/ui/radio-group.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Label } from \"@/components/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\"\n```\n\n```tsx showLineNumbers\n<RadioGroup defaultValue=\"option-one\">\n  <div className=\"flex items-center gap-3\">\n    <RadioGroupItem value=\"option-one\" id=\"option-one\" />\n    <Label htmlFor=\"option-one\">Option One</Label>\n  </div>\n  <div className=\"flex items-center gap-3\">\n    <RadioGroupItem value=\"option-two\" id=\"option-two\" />\n    <Label htmlFor=\"option-two\">Option Two</Label>\n  </div>\n</RadioGroup>\n```\n\n## Examples\n\n### Description\n\nRadio group items with a description using the `Field` component.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"radio-group-description\" />\n\n### Choice Card\n\nUse `FieldLabel` to wrap the entire `Field` for a clickable card-style selection.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"radio-group-choice-card\" />\n\n### Fieldset\n\nUse `FieldSet` and `FieldLegend` to group radio items with a label and description.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"radio-group-fieldset\" />\n\n### Disabled\n\nUse the `disabled` prop on `RadioGroupItem` to disable individual items.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"radio-group-disabled\" />\n\n### Invalid\n\nUse `aria-invalid` on `RadioGroupItem` and `data-invalid` on `Field` to show validation errors.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"radio-group-invalid\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"radio-group-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Radix UI Radio Group](https://www.radix-ui.com/docs/primitives/components/radio-group#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/resizable.mdx",
    "content": "---\ntitle: Resizable\ndescription: Accessible resizable panel groups and layouts with keyboard support.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://github.com/bvaughn/react-resizable-panels\n  api: https://github.com/bvaughn/react-resizable-panels/tree/main/packages/react-resizable-panels\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"resizable-demo\"\n  previewClassName=\"h-80\"\n/>\n\n## About\n\nThe `Resizable` component is built on top of [react-resizable-panels](https://github.com/bvaughn/react-resizable-panels) by [bvaughn](https://github.com/bvaughn).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add resizable\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install react-resizable-panels\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"resizable\"\n  title=\"components/ui/resizable.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/components/ui/resizable\"\n```\n\n```tsx showLineNumbers\n<ResizablePanelGroup orientation=\"horizontal\">\n  <ResizablePanel>One</ResizablePanel>\n  <ResizableHandle />\n  <ResizablePanel>Two</ResizablePanel>\n</ResizablePanelGroup>\n```\n\n## Examples\n\n### Vertical\n\nUse `orientation=\"vertical\"` for vertical resizing.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"resizable-vertical\" />\n\n### Handle\n\nUse the `withHandle` prop on `ResizableHandle` to show a visible handle.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"resizable-handle\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"resizable-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [react-resizable-panels](https://github.com/bvaughn/react-resizable-panels/tree/main/packages/react-resizable-panels) documentation.\n\n## Changelog\n\n### 2025-02-02 `react-resizable-panels` v4\n\nUpdated to `react-resizable-panels` v4. See the [v4.0.0 release notes](https://github.com/bvaughn/react-resizable-panels/releases/tag/4.0.0) for full details.\n\nIf you're using `react-resizable-panels` primitives directly, note the following changes:\n\n| v3                           | v4                      |\n| ---------------------------- | ----------------------- |\n| `PanelGroup`                 | `Group`                 |\n| `PanelResizeHandle`          | `Separator`             |\n| `direction` prop             | `orientation` prop      |\n| `defaultSize={50}`           | `defaultSize=\"50%\"`     |\n| `onLayout`                   | `onLayoutChange`        |\n| `ImperativePanelHandle`      | `PanelImperativeHandle` |\n| `ref` prop on Panel          | `panelRef` prop         |\n| `data-panel-group-direction` | `aria-orientation`      |\n\n<Callout>\n  The shadcn/ui wrapper components (`ResizablePanelGroup`, `ResizablePanel`,\n  `ResizableHandle`) remain unchanged.\n</Callout>\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/scroll-area.mdx",
    "content": "---\ntitle: Scroll Area\ndescription: Augments native scroll functionality for custom, cross-browser styling.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/scroll-area\n  api: https://www.radix-ui.com/docs/primitives/components/scroll-area#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"scroll-area-demo\"\n  previewClassName=\"h-96\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add scroll-area\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"scroll-area\"\n  title=\"components/ui/scroll-area.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { ScrollArea, ScrollBar } from \"@/components/ui/scroll-area\"\n```\n\n```tsx showLineNumbers\n<ScrollArea className=\"h-[200px] w-[350px] rounded-md border p-4\">\n  Your scrollable content here.\n</ScrollArea>\n```\n\n## Examples\n\n### Horizontal\n\nUse `ScrollBar` with `orientation=\"horizontal\"` for horizontal scrolling.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"scroll-area-horizontal-demo\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"scroll-area-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto\"\n/>\n\n## API Reference\n\nSee the [Radix UI Scroll Area](https://www.radix-ui.com/docs/primitives/components/scroll-area#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/select.mdx",
    "content": "---\ntitle: Select\ndescription: Displays a list of options for the user to pick from—triggered by a button.\nbase: radix\ncomponent: true\nfeatured: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/select\n  api: https://www.radix-ui.com/docs/primitives/components/select#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"select-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add select\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"select\"\n  title=\"components/ui/select.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n```\n\n```tsx showLineNumbers\n<Select>\n  <SelectTrigger className=\"w-[180px]\">\n    <SelectValue placeholder=\"Theme\" />\n  </SelectTrigger>\n  <SelectContent>\n    <SelectGroup>\n      <SelectItem value=\"light\">Light</SelectItem>\n      <SelectItem value=\"dark\">Dark</SelectItem>\n      <SelectItem value=\"system\">System</SelectItem>\n    </SelectGroup>\n  </SelectContent>\n</Select>\n```\n\n## Examples\n\n### Align Item With Trigger\n\nUse the `position` prop on `SelectContent` to control alignment. When `position=\"item-aligned\"` (default), the popup positions so the selected item appears over the trigger. When `position=\"popper\"`, the popup aligns to the trigger edge.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"select-align-item\" />\n\n### Groups\n\nUse `SelectGroup`, `SelectLabel`, and `SelectSeparator` to organize items.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"select-groups\" />\n\n### Scrollable\n\nA select with many items that scrolls.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"select-scrollable\" />\n\n### Disabled\n\n<ComponentPreview styleName=\"radix-nova\" name=\"select-disabled\" />\n\n### Invalid\n\nAdd the `data-invalid` attribute to the `Field` component and the `aria-invalid` attribute to the `SelectTrigger` component to show an error state.\n\n```tsx showLineNumbers /data-invalid/ /aria-invalid/\n<Field data-invalid>\n  <FieldLabel>Fruit</FieldLabel>\n  <SelectTrigger aria-invalid>\n    <SelectValue />\n  </SelectTrigger>\n</Field>\n```\n\n<ComponentPreview styleName=\"radix-nova\" name=\"select-invalid\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"select-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI Select](https://www.radix-ui.com/docs/primitives/components/select#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/separator.mdx",
    "content": "---\ntitle: Separator\ndescription: Visually or semantically separates content.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/separator\n  api: https://www.radix-ui.com/docs/primitives/components/separator#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"separator-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add separator\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"separator\"\n  title=\"components/ui/separator.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Separator } from \"@/components/ui/separator\"\n```\n\n```tsx showLineNumbers\n<Separator />\n```\n\n## Examples\n\n### Vertical\n\nUse `orientation=\"vertical\"` for a vertical separator.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"separator-vertical\" />\n\n### Menu\n\nVertical separators between menu items with descriptions.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"separator-menu\" />\n\n### List\n\nHorizontal separators between list items.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"separator-list\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"separator-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI Separator](https://www.radix-ui.com/docs/primitives/components/separator#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/sheet.mdx",
    "content": "---\ntitle: Sheet\ndescription: Extends the Dialog component to display content that complements the main content of the screen.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/dialog\n  api: https://www.radix-ui.com/docs/primitives/components/dialog#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"sheet-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add sheet\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"sheet\"\n  title=\"components/ui/sheet.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/components/ui/sheet\"\n```\n\n```tsx showLineNumbers\n<Sheet>\n  <SheetTrigger>Open</SheetTrigger>\n  <SheetContent>\n    <SheetHeader>\n      <SheetTitle>Are you absolutely sure?</SheetTitle>\n      <SheetDescription>This action cannot be undone.</SheetDescription>\n    </SheetHeader>\n  </SheetContent>\n</Sheet>\n```\n\n## Examples\n\n### Side\n\nUse the `side` prop on `SheetContent` to set the edge of the screen where the sheet appears. Values are `top`, `right`, `bottom`, or `left`.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"sheet-side\" />\n\n### No Close Button\n\nUse `showCloseButton={false}` on `SheetContent` to hide the close button.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"sheet-no-close-button\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"sheet-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI Dialog](https://www.radix-ui.com/docs/primitives/components/dialog#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/sidebar.mdx",
    "content": "---\ntitle: Sidebar\ndescription: A composable, themeable and customizable sidebar component.\nbase: radix\ncomponent: true\n---\n\nimport { ExternalLinkIcon } from \"lucide-react\"\n\n<figure className=\"flex flex-col gap-4\">\n  <ComponentPreview\n    styleName=\"radix-nova\"\n    name=\"sidebar-demo\"\n    type=\"block\"\n    className=\"w-full\"\n  />\n  <figcaption className=\"text-center text-sm text-gray-500\">\n    A sidebar that collapses to icons.\n  </figcaption>\n</figure>\n\nSidebars are one of the most complex components to build. They are central\nto any application and often contain a lot of moving parts.\n\nWe now have a solid foundation to build on top of. Composable. Themeable.\nCustomizable.\n\n[Browse the Blocks Library](/blocks).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add sidebar\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<ComponentSource\n  name=\"sidebar\"\n  title=\"components/ui/sidebar.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Structure\n\nA `Sidebar` component is composed of the following parts:\n\n- `SidebarProvider` - Handles collapsible state.\n- `Sidebar` - The sidebar container.\n- `SidebarHeader` and `SidebarFooter` - Sticky at the top and bottom of the sidebar.\n- `SidebarContent` - Scrollable content.\n- `SidebarGroup` - Section within the `SidebarContent`.\n- `SidebarTrigger` - Trigger for the `Sidebar`.\n\n<Image\n  src=\"/images/sidebar-structure.png\"\n  width=\"716\"\n  height=\"420\"\n  alt=\"Sidebar Structure\"\n  className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n/>\n<Image\n  src=\"/images/sidebar-structure-dark.png\"\n  width=\"716\"\n  height=\"420\"\n  alt=\"Sidebar Structure\"\n  className=\"mt-6 hidden w-full overflow-hidden rounded-lg border dark:block\"\n/>\n\n## Usage\n\n```tsx showLineNumbers title=\"app/layout.tsx\"\nimport { SidebarProvider, SidebarTrigger } from \"@/components/ui/sidebar\"\nimport { AppSidebar } from \"@/components/app-sidebar\"\n\nexport default function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <main>\n        <SidebarTrigger />\n        {children}\n      </main>\n    </SidebarProvider>\n  )\n}\n```\n\n```tsx showLineNumbers title=\"components/app-sidebar.tsx\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarHeader,\n} from \"@/components/ui/sidebar\"\n\nexport function AppSidebar() {\n  return (\n    <Sidebar>\n      <SidebarHeader />\n      <SidebarContent>\n        <SidebarGroup />\n        <SidebarGroup />\n      </SidebarContent>\n      <SidebarFooter />\n    </Sidebar>\n  )\n}\n```\n\n## SidebarProvider\n\nThe `SidebarProvider` component is used to provide the sidebar context to the `Sidebar` component. You should always wrap your application in a `SidebarProvider` component.\n\n### Props\n\n| Name           | Type                      | Description                                  |\n| -------------- | ------------------------- | -------------------------------------------- |\n| `defaultOpen`  | `boolean`                 | Default open state of the sidebar.           |\n| `open`         | `boolean`                 | Open state of the sidebar (controlled).      |\n| `onOpenChange` | `(open: boolean) => void` | Sets open state of the sidebar (controlled). |\n\n### Width\n\nIf you have a single sidebar in your application, you can use the `SIDEBAR_WIDTH` and `SIDEBAR_WIDTH_MOBILE` variables in `sidebar.tsx` to set the width of the sidebar.\n\n```tsx showLineNumbers title=\"components/ui/sidebar.tsx\"\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\n```\n\nFor multiple sidebars in your application, you can use the `--sidebar-width` and `--sidebar-width-mobile` CSS variables in the `style` prop.\n\n```tsx showLineNumbers\n<SidebarProvider\n  style={\n    {\n      \"--sidebar-width\": \"20rem\",\n      \"--sidebar-width-mobile\": \"20rem\",\n    } as React.CSSProperties\n  }\n>\n  <Sidebar />\n</SidebarProvider>\n```\n\n### Keyboard Shortcut\n\nTo trigger the sidebar, you use the `cmd+b` keyboard shortcut on Mac and `ctrl+b` on Windows.\n\n```tsx showLineNumbers title=\"components/ui/sidebar.tsx\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n```\n\n## Sidebar\n\nThe main `Sidebar` component used to render a collapsible sidebar.\n\n### Props\n\n| Property      | Type                              | Description                       |\n| ------------- | --------------------------------- | --------------------------------- |\n| `side`        | `left` or `right`                 | The side of the sidebar.          |\n| `variant`     | `sidebar`, `floating`, or `inset` | The variant of the sidebar.       |\n| `collapsible` | `offcanvas`, `icon`, or `none`    | Collapsible state of the sidebar. |\n\n| Prop        | Description                                                  |\n| ----------- | ------------------------------------------------------------ |\n| `offcanvas` | A collapsible sidebar that slides in from the left or right. |\n| `icon`      | A sidebar that collapses to icons.                           |\n| `none`      | A non-collapsible sidebar.                                   |\n\n<Callout>\n  **Note:** If you use the `inset` variant, remember to wrap your main content\n  in a `SidebarInset` component.\n</Callout>\n\n```tsx showLineNumbers\n<SidebarProvider>\n  <Sidebar variant=\"inset\" />\n  <SidebarInset>\n    <main>{children}</main>\n  </SidebarInset>\n</SidebarProvider>\n```\n\n## useSidebar\n\nThe `useSidebar` hook is used to control the sidebar.\n\n```tsx showLineNumbers\nimport { useSidebar } from \"@/components/ui/sidebar\"\n\nexport function AppSidebar() {\n  const {\n    state,\n    open,\n    setOpen,\n    openMobile,\n    setOpenMobile,\n    isMobile,\n    toggleSidebar,\n  } = useSidebar()\n}\n```\n\n| Property        | Type                      | Description                                   |\n| --------------- | ------------------------- | --------------------------------------------- |\n| `state`         | `expanded` or `collapsed` | The current state of the sidebar.             |\n| `open`          | `boolean`                 | Whether the sidebar is open.                  |\n| `setOpen`       | `(open: boolean) => void` | Sets the open state of the sidebar.           |\n| `openMobile`    | `boolean`                 | Whether the sidebar is open on mobile.        |\n| `setOpenMobile` | `(open: boolean) => void` | Sets the open state of the sidebar on mobile. |\n| `isMobile`      | `boolean`                 | Whether the sidebar is on mobile.             |\n| `toggleSidebar` | `() => void`              | Toggles the sidebar. Desktop and mobile.      |\n\n## SidebarHeader\n\nUse the `SidebarHeader` component to add a sticky header to the sidebar.\n\n```tsx showLineNumbers title=\"components/app-sidebar.tsx\"\n<Sidebar>\n  <SidebarHeader>\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton>\n              Select Workspace\n              <ChevronDown className=\"ml-auto\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent className=\"w-[--radix-popper-anchor-width]\">\n            <DropdownMenuItem>\n              <span>Acme Inc</span>\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  </SidebarHeader>\n</Sidebar>\n```\n\n## SidebarFooter\n\nUse the `SidebarFooter` component to add a sticky footer to the sidebar.\n\n```tsx showLineNumbers\n<Sidebar>\n  <SidebarFooter>\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <SidebarMenuButton>\n          <User2 /> Username\n        </SidebarMenuButton>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  </SidebarFooter>\n</Sidebar>\n```\n\n## SidebarContent\n\nThe `SidebarContent` component is used to wrap the content of the sidebar. This is where you add your `SidebarGroup` components. It is scrollable.\n\n```tsx showLineNumbers\n<Sidebar>\n  <SidebarContent>\n    <SidebarGroup />\n    <SidebarGroup />\n  </SidebarContent>\n</Sidebar>\n```\n\n## SidebarGroup\n\nUse the `SidebarGroup` component to create a section within the sidebar.\n\nA `SidebarGroup` has a `SidebarGroupLabel`, a `SidebarGroupContent` and an optional `SidebarGroupAction`.\n\n```tsx showLineNumbers\n<SidebarGroup>\n  <SidebarGroupLabel>Application</SidebarGroupLabel>\n  <SidebarGroupAction>\n    <Plus /> <span className=\"sr-only\">Add Project</span>\n  </SidebarGroupAction>\n  <SidebarGroupContent></SidebarGroupContent>\n</SidebarGroup>\n```\n\nTo make a `SidebarGroup` collapsible, wrap it in a `Collapsible`.\n\n```tsx showLineNumbers\n<Collapsible defaultOpen className=\"group/collapsible\">\n  <SidebarGroup>\n    <SidebarGroupLabel asChild>\n      <CollapsibleTrigger>\n        Help\n        <ChevronDown className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-180\" />\n      </CollapsibleTrigger>\n    </SidebarGroupLabel>\n    <CollapsibleContent>\n      <SidebarGroupContent />\n    </CollapsibleContent>\n  </SidebarGroup>\n</Collapsible>\n```\n\n## SidebarMenu\n\nThe `SidebarMenu` component is used for building a menu within a `SidebarGroup`.\n\n<Image\n  src=\"/images/sidebar-menu.png\"\n  width=\"716\"\n  height=\"420\"\n  alt=\"Sidebar Menu\"\n  className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n/>\n<Image\n  src=\"/images/sidebar-menu-dark.png\"\n  width=\"716\"\n  height=\"420\"\n  alt=\"Sidebar Menu\"\n  className=\"mt-6 hidden w-full overflow-hidden rounded-lg border dark:block\"\n/>\n\n```tsx showLineNumbers\n<SidebarMenu>\n  {projects.map((project) => (\n    <SidebarMenuItem key={project.name}>\n      <SidebarMenuButton asChild>\n        <a href={project.url}>\n          <project.icon />\n          <span>{project.name}</span>\n        </a>\n      </SidebarMenuButton>\n    </SidebarMenuItem>\n  ))}\n</SidebarMenu>\n```\n\n## SidebarMenuButton\n\nThe `SidebarMenuButton` component is used to render a menu button within a `SidebarMenuItem`.\n\nBy default, the `SidebarMenuButton` renders a button but you can use the `asChild` prop to render a different component such as a `Link` or an `a` tag.\n\nUse the `isActive` prop to mark a menu item as active.\n\n```tsx showLineNumbers\n<SidebarMenuButton asChild isActive>\n  <a href=\"#\">Home</a>\n</SidebarMenuButton>\n```\n\n## SidebarMenuAction\n\nThe `SidebarMenuAction` component is used to render a menu action within a `SidebarMenuItem`.\n\n```tsx showLineNumbers\n<SidebarMenuItem>\n  <SidebarMenuButton asChild>\n    <a href=\"#\">\n      <Home />\n      <span>Home</span>\n    </a>\n  </SidebarMenuButton>\n  <SidebarMenuAction>\n    <Plus /> <span className=\"sr-only\">Add Project</span>\n  </SidebarMenuAction>\n</SidebarMenuItem>\n```\n\n## SidebarMenuSub\n\nThe `SidebarMenuSub` component is used to render a submenu within a `SidebarMenu`.\n\n```tsx showLineNumbers\n<SidebarMenuItem>\n  <SidebarMenuButton />\n  <SidebarMenuSub>\n    <SidebarMenuSubItem>\n      <SidebarMenuSubButton />\n    </SidebarMenuSubItem>\n  </SidebarMenuSub>\n</SidebarMenuItem>\n```\n\n## SidebarMenuBadge\n\nThe `SidebarMenuBadge` component is used to render a badge within a `SidebarMenuItem`.\n\n```tsx showLineNumbers\n<SidebarMenuItem>\n  <SidebarMenuButton />\n  <SidebarMenuBadge>24</SidebarMenuBadge>\n</SidebarMenuItem>\n```\n\n## SidebarMenuSkeleton\n\nThe `SidebarMenuSkeleton` component is used to render a skeleton for a `SidebarMenu`.\n\n```tsx showLineNumbers\n<SidebarMenu>\n  {Array.from({ length: 5 }).map((_, index) => (\n    <SidebarMenuItem key={index}>\n      <SidebarMenuSkeleton />\n    </SidebarMenuItem>\n  ))}\n</SidebarMenu>\n```\n\n## SidebarTrigger\n\nUse the `SidebarTrigger` component to render a button that toggles the sidebar.\n\n```tsx showLineNumbers\nimport { useSidebar } from \"@/components/ui/sidebar\"\n\nexport function CustomTrigger() {\n  const { toggleSidebar } = useSidebar()\n\n  return <button onClick={toggleSidebar}>Toggle Sidebar</button>\n}\n```\n\n## SidebarRail\n\nThe `SidebarRail` component is used to render a rail within a `Sidebar`. This rail can be used to toggle the sidebar.\n\n```tsx showLineNumbers\n<Sidebar>\n  <SidebarHeader />\n  <SidebarContent>\n    <SidebarGroup />\n  </SidebarContent>\n  <SidebarFooter />\n  <SidebarRail />\n</Sidebar>\n```\n\n## Controlled Sidebar\n\nUse the `open` and `onOpenChange` props to control the sidebar.\n\n```tsx showLineNumbers\nexport function AppSidebar() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <SidebarProvider open={open} onOpenChange={setOpen}>\n      <Sidebar />\n    </SidebarProvider>\n  )\n}\n```\n\n## Theming\n\nWe use the following CSS variables to theme the sidebar.\n\n```css\n@layer base {\n  :root {\n    --sidebar-background: 0 0% 98%;\n    --sidebar-foreground: 240 5.3% 26.1%;\n    --sidebar-primary: 240 5.9% 10%;\n    --sidebar-primary-foreground: 0 0% 98%;\n    --sidebar-accent: 240 4.8% 95.9%;\n    --sidebar-accent-foreground: 240 5.9% 10%;\n    --sidebar-border: 220 13% 91%;\n    --sidebar-ring: 217.2 91.2% 59.8%;\n  }\n\n  .dark {\n    --sidebar-background: 240 5.9% 10%;\n    --sidebar-foreground: 240 4.8% 95.9%;\n    --sidebar-primary: 0 0% 98%;\n    --sidebar-primary-foreground: 240 5.9% 10%;\n    --sidebar-accent: 240 3.7% 15.9%;\n    --sidebar-accent-foreground: 240 4.8% 95.9%;\n    --sidebar-border: 240 3.7% 15.9%;\n    --sidebar-ring: 217.2 91.2% 59.8%;\n  }\n}\n```\n\n## Styling\n\nHere are some tips for styling the sidebar based on different states.\n\n```tsx\n<Sidebar collapsible=\"icon\">\n  <SidebarContent>\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\" />\n  </SidebarContent>\n</Sidebar>\n```\n\n```tsx\n<SidebarMenuItem>\n  <SidebarMenuButton />\n  <SidebarMenuAction className=\"peer-data-[active=true]/menu-button:opacity-100\" />\n</SidebarMenuItem>\n```\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n{/* prettier-ignore */}\n<Button asChild size=\"sm\" className=\"mt-6\">\n  <a href=\"/view/radix-nova/sidebar-rtl\" target=\"_blank\">View RTL Sidebar <ExternalLinkIcon /></a>\n</Button>\n\n## Changelog\n\n### RTL Support\n\nIf you're upgrading from a previous version of the `Sidebar` component, you'll need to apply the following updates to add RTL support:\n\n<Steps>\n\n<Step>Add `dir` prop to Sidebar component.</Step>\n\nAdd `dir` to the destructured props and pass it to `SheetContent` for mobile:\n\n```diff\n  function Sidebar({\n    side = \"left\",\n    variant = \"sidebar\",\n    collapsible = \"offcanvas\",\n    className,\n    children,\n+   dir,\n    ...props\n  }: React.ComponentProps<\"div\"> & {\n    side?: \"left\" | \"right\"\n    variant?: \"sidebar\" | \"floating\" | \"inset\"\n    collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n  }) {\n```\n\nThen pass it to `SheetContent` in the mobile view:\n\n```diff\n  <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n    <SheetContent\n+     dir={dir}\n      data-sidebar=\"sidebar\"\n      data-slot=\"sidebar\"\n      data-mobile=\"true\"\n```\n\n<Step>Add `data-side` attribute to sidebar container.</Step>\n\nAdd `data-side={side}` to the sidebar container element:\n\n```diff\n  <div\n    data-slot=\"sidebar-container\"\n+   data-side={side}\n    className={cn(\n```\n\n<Step>Update sidebar container positioning classes.</Step>\n\nReplace JavaScript ternary conditional classes with CSS data attribute selectors:\n\n```diff\n  className={cn(\n-   \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n-   side === \"left\"\n-     ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n-     : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n+   \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex data-[side=left]:left-0 data-[side=right]:right-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n```\n\n<Step>Update SidebarRail positioning classes.</Step>\n\nUpdate the `SidebarRail` component to use physical positioning for the rail:\n\n```diff\n  className={cn(\n-   \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-end-4 group-data-[side=right]:start-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex\",\n+   \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 ltr:-translate-x-1/2 rtl:-translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex\",\n```\n\n<Step>Add RTL flip to SidebarTrigger icon.</Step>\n\nAdd `className=\"rtl:rotate-180\"` to the icon in `SidebarTrigger` to flip it in RTL mode:\n\n```diff\n  <Button ...>\n-   <PanelLeftIcon />\n+   <PanelLeftIcon className=\"rtl:rotate-180\" />\n    <span className=\"sr-only\">Toggle Sidebar</span>\n  </Button>\n```\n\n</Steps>\n\nAfter applying these changes, you can use the `dir` prop to set the direction:\n\n```tsx\n<Sidebar dir=\"rtl\" side=\"right\">\n  {/* ... */}\n</Sidebar>\n```\n\nThe sidebar will correctly position itself and handle interactions in both LTR and RTL layouts.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/skeleton.mdx",
    "content": "---\ntitle: Skeleton\ndescription: Use to show a placeholder while content is loading.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"skeleton-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add skeleton\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"skeleton\"\n  title=\"components/ui/skeleton.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Skeleton } from \"@/components/ui/skeleton\"\n```\n\n```tsx\n<Skeleton className=\"h-[20px] w-[100px] rounded-full\" />\n```\n\n## Examples\n\n### Avatar\n\n<ComponentPreview styleName=\"radix-nova\" name=\"skeleton-avatar\" />\n\n### Card\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"skeleton-card\"\n  previewClassName=\"h-80\"\n/>\n\n### Text\n\n<ComponentPreview styleName=\"radix-nova\" name=\"skeleton-text\" />\n\n### Form\n\n<ComponentPreview styleName=\"radix-nova\" name=\"skeleton-form\" />\n\n### Table\n\n<ComponentPreview styleName=\"radix-nova\" name=\"skeleton-table\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"skeleton-rtl\" direction=\"rtl\" />\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/slider.mdx",
    "content": "---\ntitle: Slider\ndescription: An input where the user selects a value from within a given range.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/slider\n  api: https://www.radix-ui.com/docs/primitives/components/slider#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"slider-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add slider\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"slider\"\n  title=\"components/ui/slider.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Slider } from \"@/components/ui/slider\"\n```\n\n```tsx\n<Slider defaultValue={[33]} max={100} step={1} />\n```\n\n## Examples\n\n### Range\n\nUse an array with two values for a range slider.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"slider-range\" />\n\n### Multiple Thumbs\n\nUse an array with multiple values for multiple thumbs.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"slider-multiple\" />\n\n### Vertical\n\nUse `orientation=\"vertical\"` for a vertical slider.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"slider-vertical\" />\n\n### Controlled\n\n<ComponentPreview styleName=\"radix-nova\" name=\"slider-controlled\" />\n\n### Disabled\n\nUse the `disabled` prop to disable the slider.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"slider-disabled\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"slider-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix UI Slider](https://www.radix-ui.com/docs/primitives/components/slider#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/sonner.mdx",
    "content": "---\ntitle: Sonner\ndescription: An opinionated toast component for React.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://sonner.emilkowal.ski\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"sonner-demo\" />\n\n## About\n\nSonner is built and maintained by [emilkowalski](https://twitter.com/emilkowalski).\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Run the following command:</Step>\n\n```bash\nnpx shadcn@latest add sonner\n```\n\n<Step>Add the Toaster component</Step>\n\n```tsx title=\"app/layout.tsx\" {1,9} showLineNumbers\nimport { Toaster } from \"@/components/ui/sonner\"\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <head />\n      <body>\n        <main>{children}</main>\n        <Toaster />\n      </body>\n    </html>\n  )\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install sonner next-themes\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"sonner\"\n  title=\"components/ui/sonner.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Add the Toaster component</Step>\n\n```tsx showLineNumbers title=\"app/layout.tsx\" {1,8}\nimport { Toaster } from \"@/components/ui/sonner\"\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <head />\n      <body>\n        <Toaster />\n        <main>{children}</main>\n      </body>\n    </html>\n  )\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { toast } from \"sonner\"\n```\n\n```tsx\ntoast(\"Event has been created.\")\n```\n\n## Examples\n\n### Types\n\n<ComponentPreview styleName=\"radix-nova\" name=\"sonner-types\" />\n\n### Description\n\n<ComponentPreview styleName=\"radix-nova\" name=\"sonner-description\" />\n\n### Position\n\nUse the `position` prop to change the position of the toast.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"sonner-position\" />\n\n## API Reference\n\nSee the [Sonner API Reference](https://sonner.emilkowal.ski/getting-started) for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/spinner.mdx",
    "content": "---\ntitle: Spinner\ndescription: An indicator that can be used to show a loading state.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"spinner-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add spinner\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"spinner\"\n  title=\"components/ui/spinner.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Spinner } from \"@/components/ui/spinner\"\n```\n\n```tsx\n<Spinner />\n```\n\n## Customization\n\nYou can replace the default spinner icon with any other icon by editing the `Spinner` component.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"spinner-custom\" />\n\n```tsx showLineNumbers title=\"components/ui/spinner.tsx\"\nimport { LoaderIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <LoaderIcon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n```\n\n## Examples\n\n### Size\n\nUse the `size-*` utility class to change the size of the spinner.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"spinner-size\" />\n\n### Button\n\nAdd a spinner to a button to indicate a loading state. Place the `<Spinner />` before the label with `data-icon=\"inline-start\"` for a start position, or after the label with `data-icon=\"inline-end\"` for an end position.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"spinner-button\" />\n\n### Badge\n\nAdd a spinner to a badge to indicate a loading state. Place the `<Spinner />` before the label with `data-icon=\"inline-start\"` for a start position, or after the label with `data-icon=\"inline-end\"` for an end position.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"spinner-badge\" />\n\n### Input Group\n\n<ComponentPreview styleName=\"radix-nova\" name=\"spinner-input-group\" />\n\n### Empty\n\n<ComponentPreview styleName=\"radix-nova\" name=\"spinner-empty\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"spinner-rtl\" direction=\"rtl\" />\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/switch.mdx",
    "content": "---\ntitle: Switch\ndescription: A control that allows the user to toggle between checked and not checked.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/switch\n  api: https://www.radix-ui.com/docs/primitives/components/switch#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"switch-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add switch\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"switch\"\n  title=\"components/ui/switch.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Switch } from \"@/components/ui/switch\"\n```\n\n```tsx\n<Switch />\n```\n\n## Examples\n\n### Description\n\n<ComponentPreview styleName=\"radix-nova\" name=\"switch-description\" />\n\n### Choice Card\n\nCard-style selection where `FieldLabel` wraps the entire `Field` for a clickable card pattern.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"switch-choice-card\" />\n\n### Disabled\n\nAdd the `disabled` prop to the `Switch` component to disable the switch. Add the `data-disabled` prop to the `Field` component for styling.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"switch-disabled\" />\n\n### Invalid\n\nAdd the `aria-invalid` prop to the `Switch` component to indicate an invalid state. Add the `data-invalid` prop to the `Field` component for styling.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"switch-invalid\" />\n\n### Size\n\nUse the `size` prop to change the size of the switch.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"switch-sizes\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"switch-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix Switch](https://www.radix-ui.com/docs/primitives/components/switch#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/table.mdx",
    "content": "---\ntitle: Table\ndescription: A responsive table component.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"table-demo\"\n  previewClassName=\"h-[30rem]\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add table\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"table\"\n  title=\"components/ui/table.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/components/ui/table\"\n```\n\n```tsx showLineNumbers\n<Table>\n  <TableCaption>A list of your recent invoices.</TableCaption>\n  <TableHeader>\n    <TableRow>\n      <TableHead className=\"w-[100px]\">Invoice</TableHead>\n      <TableHead>Status</TableHead>\n      <TableHead>Method</TableHead>\n      <TableHead className=\"text-right\">Amount</TableHead>\n    </TableRow>\n  </TableHeader>\n  <TableBody>\n    <TableRow>\n      <TableCell className=\"font-medium\">INV001</TableCell>\n      <TableCell>Paid</TableCell>\n      <TableCell>Credit Card</TableCell>\n      <TableCell className=\"text-right\">$250.00</TableCell>\n    </TableRow>\n  </TableBody>\n</Table>\n```\n\n## Examples\n\n### Footer\n\nUse the `<TableFooter />` component to add a footer to the table.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"table-footer\" />\n\n### Actions\n\nA table showing actions for each row using a `<DropdownMenu />` component.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"table-actions\" />\n\n## Data Table\n\nYou can use the `<Table />` component to build more complex data tables. Combine it with [@tanstack/react-table](https://tanstack.com/table/v8) to create tables with sorting, filtering and pagination.\n\nSee the [Data Table](/docs/components/data-table) documentation for more information.\n\nYou can also see an example of a data table in the [Tasks](/examples/tasks) demo.\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"table-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/tabs.mdx",
    "content": "---\ntitle: Tabs\ndescription: A set of layered sections of content—known as tab panels—that are displayed one at a time.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/tabs\n  api: https://www.radix-ui.com/docs/primitives/components/tabs#api-reference\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"tabs-demo\"\n  previewClassName=\"h-96\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add tabs\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"tabs\"\n  title=\"components/ui/tabs.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\n```\n\n```tsx showLineNumbers\n<Tabs defaultValue=\"account\" className=\"w-[400px]\">\n  <TabsList>\n    <TabsTrigger value=\"account\">Account</TabsTrigger>\n    <TabsTrigger value=\"password\">Password</TabsTrigger>\n  </TabsList>\n  <TabsContent value=\"account\">Make changes to your account here.</TabsContent>\n  <TabsContent value=\"password\">Change your password here.</TabsContent>\n</Tabs>\n```\n\n## Examples\n\n### Line\n\nUse the `variant=\"line\"` prop on `TabsList` for a line style.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tabs-line\" />\n\n### Vertical\n\nUse `orientation=\"vertical\"` for vertical tabs.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tabs-vertical\" />\n\n### Disabled\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tabs-disabled\" />\n\n### Icons\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tabs-icons\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tabs-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix Tabs](https://www.radix-ui.com/docs/primitives/components/tabs#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/textarea.mdx",
    "content": "---\ntitle: Textarea\ndescription: Displays a form textarea or a component that looks like a textarea.\nbase: radix\ncomponent: true\n---\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"textarea-demo\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add textarea\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"textarea\"\n  title=\"components/ui/textarea.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Textarea } from \"@/components/ui/textarea\"\n```\n\n```tsx\n<Textarea />\n```\n\n## Examples\n\n### Field\n\nUse `Field`, `FieldLabel`, and `FieldDescription` to create a textarea with a label and description.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"textarea-field\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Disabled\n\nUse the `disabled` prop to disable the textarea. To style the disabled state, add the `data-disabled` attribute to the `Field` component.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"textarea-disabled\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Invalid\n\nUse the `aria-invalid` prop to mark the textarea as invalid. To style the invalid state, add the `data-invalid` attribute to the `Field` component.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"textarea-invalid\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n### Button\n\nPair with `Button` to create a textarea with a submit button.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"textarea-button\"\n  previewClassName=\"*:max-w-xs\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"textarea-rtl\" direction=\"rtl\" />\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/toast.mdx",
    "content": "---\ntitle: Toast\ndescription: A succinct message that is displayed temporarily.\nbase: base\ncomponent: true\n---\n\nThe toast component has been deprecated. Use the [sonner](/docs/components/sonner) component instead.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/toggle-group.mdx",
    "content": "---\ntitle: Toggle Group\ndescription: A set of two-state buttons that can be toggled on or off.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/toggle-group\n  api: https://www.radix-ui.com/docs/primitives/components/toggle-group#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-group-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add toggle-group\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"toggle-group\"\n  title=\"components/ui/toggle-group.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\"\n```\n\n```tsx\n<ToggleGroup type=\"single\">\n  <ToggleGroupItem value=\"a\">A</ToggleGroupItem>\n  <ToggleGroupItem value=\"b\">B</ToggleGroupItem>\n  <ToggleGroupItem value=\"c\">C</ToggleGroupItem>\n</ToggleGroup>\n```\n\n## Examples\n\n### Outline\n\nUse `variant=\"outline\"` for an outline style.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-group-outline\" />\n\n### Size\n\nUse the `size` prop to change the size of the toggle group.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-group-sizes\" />\n\n### Spacing\n\nUse `spacing` to add spacing between toggle group items.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-group-spacing\" />\n\n### Vertical\n\nUse `orientation=\"vertical\"` for vertical toggle groups.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-group-vertical\" />\n\n### Disabled\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-group-disabled\" />\n\n### Custom\n\nA custom toggle group example.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"toggle-group-font-weight-selector\"\n  previewClassName=\"*:data-[slot=field]:max-w-xs\"\n/>\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"toggle-group-rtl\"\n  direction=\"rtl\"\n/>\n\n## API Reference\n\nSee the [Radix Toggle Group](https://www.radix-ui.com/docs/primitives/components/toggle-group#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/toggle.mdx",
    "content": "---\ntitle: Toggle\ndescription: A two-state button that can be either on or off.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/toggle\n  api: https://www.radix-ui.com/docs/primitives/components/toggle#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add toggle\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"toggle\"\n  title=\"components/ui/toggle.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx\nimport { Toggle } from \"@/components/ui/toggle\"\n```\n\n```tsx\n<Toggle>Toggle</Toggle>\n```\n\n## Examples\n\n### Outline\n\nUse `variant=\"outline\"` for an outline style.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-outline\" />\n\n### With Text\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-text\" />\n\n### Size\n\nUse the `size` prop to change the size of the toggle.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-sizes\" />\n\n### Disabled\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-disabled\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"toggle-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix Toggle](https://www.radix-ui.com/docs/primitives/components/toggle#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/tooltip.mdx",
    "content": "---\ntitle: Tooltip\ndescription: A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\nbase: radix\ncomponent: true\nlinks:\n  doc: https://www.radix-ui.com/docs/primitives/components/tooltip\n  api: https://www.radix-ui.com/docs/primitives/components/tooltip#api-reference\n---\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tooltip-demo\" />\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">Command</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Run the following command:</Step>\n\n```bash\nnpx shadcn@latest add tooltip\n```\n\n<Step>Add the `TooltipProvider` to the root of your app.</Step>\n\n```tsx title=\"app/layout.tsx\" showLineNumbers {1,7}\nimport { TooltipProvider } from \"@/components/ui/tooltip\"\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <TooltipProvider>{children}</TooltipProvider>\n      </body>\n    </html>\n  )\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps className=\"mb-0 pt-2\">\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install radix-ui\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"tooltip\"\n  title=\"components/ui/tooltip.tsx\"\n  styleName=\"radix-nova\"\n/>\n\n<Step>Update the import paths to match your project setup.</Step>\n\n<Step>Add the `TooltipProvider` to the root of your app.</Step>\n\n```tsx title=\"app/layout.tsx\" showLineNumbers {1,7}\nimport { TooltipProvider } from \"@/components/ui/tooltip\"\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <TooltipProvider>{children}</TooltipProvider>\n      </body>\n    </html>\n  )\n}\n```\n\n</Steps>\n\n</TabsContent>\n\n</CodeTabs>\n\n## Usage\n\n```tsx showLineNumbers\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n```\n\n```tsx showLineNumbers\n<Tooltip>\n  <TooltipTrigger>Hover</TooltipTrigger>\n  <TooltipContent>\n    <p>Add to library</p>\n  </TooltipContent>\n</Tooltip>\n```\n\n## Examples\n\n### Side\n\nUse the `side` prop to change the position of the tooltip.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tooltip-sides\" />\n\n### With Keyboard Shortcut\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tooltip-keyboard\" />\n\n### Disabled Button\n\nShow a tooltip on a disabled button by wrapping it with a span.\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tooltip-disabled\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview styleName=\"radix-nova\" name=\"tooltip-rtl\" direction=\"rtl\" />\n\n## API Reference\n\nSee the [Radix Tooltip](https://www.radix-ui.com/docs/primitives/components/tooltip#api-reference) documentation.\n"
  },
  {
    "path": "apps/v4/content/docs/components/radix/typography.mdx",
    "content": "---\ntitle: Typography\ndescription: Styles for headings, paragraphs, lists, etc.\nbase: radix\ncomponent: true\n---\n\nWe do not ship any typography styles by default. This page is an example of how you can use utility classes to style your text.\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"typography-demo\"\n  className=\"[&_.preview]:h-auto!\"\n  hideCode\n/>\n\n## h1\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-h1\" />\n\n## h2\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-h2\" />\n\n## h3\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-h3\" />\n\n## h4\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-h4\" />\n\n## p\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-p\" />\n\n## blockquote\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-blockquote\" />\n\n## table\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-table\" />\n\n## list\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-list\" />\n\n## Inline code\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-inline-code\" />\n\n## Lead\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-lead\" />\n\n## Large\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-large\" />\n\n## Small\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-small\" />\n\n## Muted\n\n<ComponentPreview styleName=\"radix-nova\" name=\"typography-muted\" />\n\n## RTL\n\nTo enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).\n\n<ComponentPreview\n  styleName=\"radix-nova\"\n  name=\"typography-rtl\"\n  direction=\"rtl\"\n  className=\"[&_.preview]:h-auto!\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/dark-mode/astro.mdx",
    "content": "---\ntitle: Astro\ndescription: Adding dark mode to your astro app.\n---\n\n## Create an inline theme script\n\n```astro title=\"src/pages/index.astro\"\n---\nimport '../styles/globals.css'\n---\n\n<script is:inline>\n\tconst getThemePreference = () => {\n\t\tif (typeof localStorage !== 'undefined' && localStorage.getItem('theme')) {\n\t\t\treturn localStorage.getItem('theme');\n\t\t}\n\t\treturn window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n\t};\n\tconst isDark = getThemePreference() === 'dark';\n\tdocument.documentElement.classList[isDark ? 'add' : 'remove']('dark');\n\n\tif (typeof localStorage !== 'undefined') {\n\t\tconst observer = new MutationObserver(() => {\n\t\t\tconst isDark = document.documentElement.classList.contains('dark');\n\t\t\tlocalStorage.setItem('theme', isDark ? 'dark' : 'light');\n\t\t});\n\t\tobserver.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n\t}\n</script>\n\n<html lang=\"en\">\n\t<body>\n      <h1>Astro</h1>\n\t</body>\n</html>\n```\n\n## Add a mode toggle\n\n```tsx title=\"src/components/ModeToggle.tsx\"\nimport * as React from \"react\"\nimport { Moon, Sun } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nexport function ModeToggle() {\n  const [theme, setThemeState] = React.useState<\n    \"theme-light\" | \"dark\" | \"system\"\n  >(\"theme-light\")\n\n  React.useEffect(() => {\n    const isDarkMode = document.documentElement.classList.contains(\"dark\")\n    setThemeState(isDarkMode ? \"dark\" : \"theme-light\")\n  }, [])\n\n  React.useEffect(() => {\n    const isDark =\n      theme === \"dark\" ||\n      (theme === \"system\" &&\n        window.matchMedia(\"(prefers-color-scheme: dark)\").matches)\n    document.documentElement.classList[isDark ? \"add\" : \"remove\"](\"dark\")\n  }, [theme])\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\" size=\"icon\">\n          <Sun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n          <Moon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n          <span className=\"sr-only\">Toggle theme</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuItem onClick={() => setThemeState(\"theme-light\")}>\n          Light\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setThemeState(\"dark\")}>\n          Dark\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setThemeState(\"system\")}>\n          System\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n```\n\n## Display the mode toggle\n\nPlace a mode toggle on your site to toggle between light and dark mode.\n\n```astro title=\"src/pages/index.astro\"\n---\nimport '../styles/globals.css'\nimport { ModeToggle } from '@/components/ModeToggle';\n---\n\n<!-- Inline script -->\n\n<html lang=\"en\">\n\t<body>\n      <h1>Astro</h1>\n      <ModeToggle client:load />\n\t</body>\n</html>\n```\n"
  },
  {
    "path": "apps/v4/content/docs/dark-mode/index.mdx",
    "content": "---\ntitle: Dark Mode\ndescription: Adding dark mode to your site.\n---\n\n<div className=\"grid gap-4 sm:grid-cols-2 sm:gap-6\">\n  <LinkedCard href=\"/docs/dark-mode/next\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Next.js</title>\n      <path d=\"M11.5725 0c-.1763 0-.3098.0013-.3584.0067-.0516.0053-.2159.021-.3636.0328-3.4088.3073-6.6017 2.1463-8.624 4.9728C1.1004 6.584.3802 8.3666.1082 10.255c-.0962.659-.108.8537-.108 1.7474s.012 1.0884.108 1.7476c.652 4.506 3.8591 8.2919 8.2087 9.6945.7789.2511 1.6.4223 2.5337.5255.3636.04 1.9354.04 2.299 0 1.6117-.1783 2.9772-.577 4.3237-1.2643.2065-.1056.2464-.1337.2183-.1573-.0188-.0139-.8987-1.1938-1.9543-2.62l-1.919-2.592-2.4047-3.5583c-1.3231-1.9564-2.4117-3.556-2.4211-3.556-.0094-.0026-.0187 1.5787-.0235 3.509-.0067 3.3802-.0093 3.5162-.0516 3.596-.061.115-.108.1618-.2064.2134-.075.0374-.1408.0445-.495.0445h-.406l-.1078-.068a.4383.4383 0 01-.1572-.1712l-.0493-.1056.0053-4.703.0067-4.7054.0726-.0915c.0376-.0493.1174-.1125.1736-.143.0962-.047.1338-.0517.5396-.0517.4787 0 .5584.0187.6827.1547.0353.0377 1.3373 1.9987 2.895 4.3608a10760.433 10760.433 0 004.7344 7.1706l1.9002 2.8782.096-.0633c.8518-.5536 1.7525-1.3418 2.4657-2.1627 1.5179-1.7429 2.4963-3.868 2.8247-6.134.0961-.6591.1078-.854.1078-1.7475 0-.8937-.012-1.0884-.1078-1.7476-.6522-4.506-3.8592-8.2919-8.2087-9.6945-.7672-.2487-1.5836-.42-2.4985-.5232-.169-.0176-1.0835-.0366-1.6123-.037zm4.0685 7.217c.3473 0 .4082.0053.4857.047.1127.0562.204.1642.237.2767.0186.061.0234 1.3653.0186 4.3044l-.0067 4.2175-.7436-1.14-.7461-1.14v-3.066c0-1.982.0093-3.0963.0234-3.1502.0375-.1313.1196-.2346.2323-.2955.0961-.0494.1313-.054.4997-.054z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Next.js</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/dark-mode/vite\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Vite</title>\n      <path d=\"m8.286 10.578.512-8.657a.306.306 0 0 1 .247-.282L17.377.006a.306.306 0 0 1 .353.385l-1.558 5.403a.306.306 0 0 0 .352.385l2.388-.46a.306.306 0 0 1 .332.438l-6.79 13.55-.123.19a.294.294 0 0 1-.252.14c-.177 0-.35-.152-.305-.369l1.095-5.301a.306.306 0 0 0-.388-.355l-1.433.435a.306.306 0 0 1-.389-.354l.69-3.375a.306.306 0 0 0-.37-.36l-2.32.536a.306.306 0 0 1-.374-.316zm14.976-7.926L17.284 3.74l-.544 1.887 2.077-.4a.8.8 0 0 1 .84.369.8.8 0 0 1 .034.783L12.9 19.93l-.013.025-.015.023-.122.19a.801.801 0 0 1-.672.37.826.826 0 0 1-.634-.302.8.8 0 0 1-.16-.67l1.029-4.981-1.12.34a.81.81 0 0 1-.86-.262.802.802 0 0 1-.165-.67l.63-3.08-2.027.468a.808.808 0 0 1-.768-.233.81.81 0 0 1-.217-.6l.389-6.57-7.44-1.33a.612.612 0 0 0-.64.906L11.58 23.691a.612.612 0 0 0 1.066-.004l11.26-20.135a.612.612 0 0 0-.644-.9z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Vite</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/dark-mode/astro\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 64 79\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <path d=\"M19.9924 65.9282C16.1165 62.432 14.9851 55.0859 16.5999 49.7638C19.3998 53.1193 23.2793 54.1822 27.2977 54.7822C33.5013 55.7081 39.5937 55.3618 45.3565 52.5637C46.0158 52.2434 46.625 51.8174 47.3454 51.386C47.8861 52.9341 48.0268 54.497 47.838 56.0877C47.3787 59.9617 45.4251 62.9542 42.3177 65.2227C41.0752 66.13 39.7604 66.9411 38.4771 67.7967C34.5346 70.4262 33.4679 73.5095 34.9494 77.9946C34.9846 78.1038 35.0161 78.2131 35.0957 78.4797C33.0828 77.5909 31.6124 76.2965 30.4921 74.5946C29.3088 72.7984 28.7458 70.8114 28.7162 68.6615C28.7014 67.6152 28.7014 66.5597 28.5588 65.5282C28.2107 63.0135 27.0144 61.8876 24.7608 61.8227C22.4479 61.7561 20.6183 63.1672 20.1331 65.3893C20.0961 65.5597 20.0424 65.7282 19.9887 65.9263L19.9924 65.9282Z\" />\n      <path d=\"M0.5 51.3932C0.5 51.3932 11.0979 46.2433 21.7254 46.2433L29.7382 21.5069C30.0381 20.3106 30.9141 19.4977 31.9029 19.4977C32.8918 19.4977 33.7677 20.3106 34.0677 21.5069L42.0804 46.2433C54.6672 46.2433 63.3058 51.3932 63.3058 51.3932C63.3058 51.3932 45.3044 2.47586 45.2692 2.37772C44.7526 0.931458 43.8804 0 42.7045 0H21.1032C19.9273 0 19.0903 0.931458 18.5384 2.37772C18.4995 2.47401 0.5 51.3932 0.5 51.3932Z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Astro</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/dark-mode/remix\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Remix</title>\n      <path d=\"M21.511 18.508c.216 2.773.216 4.073.216 5.492H15.31c0-.309.006-.592.011-.878.018-.892.036-1.821-.109-3.698-.19-2.747-1.374-3.358-3.55-3.358H1.574v-5h10.396c2.748 0 4.122-.835 4.122-3.049 0-1.946-1.374-3.125-4.122-3.125H1.573V0h11.541c6.221 0 9.313 2.938 9.313 7.632 0 3.511-2.176 5.8-5.114 6.182 2.48.497 3.93 1.909 4.198 4.694ZM1.573 24v-3.727h6.784c1.133 0 1.379.84 1.379 1.342V24Z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Remix</p>\n  </LinkedCard>\n</div>\n"
  },
  {
    "path": "apps/v4/content/docs/dark-mode/meta.json",
    "content": "{\n  \"title\": \"Dark mode\",\n  \"pages\": [\"index\", \"next\", \"vite\", \"astro\", \"remix\"]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/dark-mode/next.mdx",
    "content": "---\ntitle: Next.js\ndescription: Adding dark mode to your Next.js app.\n---\n\n<Steps>\n\n## Install next-themes\n\nStart by installing `next-themes`:\n\n```bash\nnpm install next-themes\n```\n\n## Create a theme provider\n\n```tsx title=\"components/theme-provider.tsx\" showLineNumbers\n\"use client\"\n\nimport * as React from \"react\"\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\"\n\nexport function ThemeProvider({\n  children,\n  ...props\n}: React.ComponentProps<typeof NextThemesProvider>) {\n  return <NextThemesProvider {...props}>{children}</NextThemesProvider>\n}\n```\n\n## Wrap your root layout\n\nAdd the `ThemeProvider` to your root layout and add the `suppressHydrationWarning` prop to the `html` tag.\n\n```tsx {1,6,9-14,16} title=\"app/layout.tsx\" showLineNumbers\nimport { ThemeProvider } from \"@/components/theme-provider\"\n\nexport default function RootLayout({ children }: RootLayoutProps) {\n  return (\n    <>\n      <html lang=\"en\" suppressHydrationWarning>\n        <head />\n        <body>\n          <ThemeProvider\n            attribute=\"class\"\n            defaultTheme=\"system\"\n            enableSystem\n            disableTransitionOnChange\n          >\n            {children}\n          </ThemeProvider>\n        </body>\n      </html>\n    </>\n  )\n}\n```\n\n## Add a mode toggle\n\nPlace a mode toggle on your site to toggle between light and dark mode.\n\n<ComponentPreview name=\"mode-toggle\" className=\"[&_.preview]:items-start\" />\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/dark-mode/remix.mdx",
    "content": "---\ntitle: Remix\ndescription: Adding dark mode to your Remix app.\n---\n\n<Steps>\n\n## Modify your tailwind.css file\n\nAdd `:root[class~=\"dark\"]` to your tailwind.css file. This will allow you to use the `dark` class on your html element to apply dark mode styles.\n\n```css {2} title=\"app/tailwind.css\" showLineNumbers\n.dark,\n:root[class~=\"dark\"] {\n  ...;\n}\n```\n\n## Install remix-themes\n\nStart by installing `remix-themes`:\n\n```bash\nnpm install remix-themes\n```\n\n## Create a session storage and theme session resolver\n\n```tsx title=\"app/sessions.server.tsx\" showLineNumbers\nimport { createThemeSessionResolver } from \"remix-themes\"\n\n// You can default to 'development' if process.env.NODE_ENV is not set\nconst isProduction = process.env.NODE_ENV === \"production\"\n\nconst sessionStorage = createCookieSessionStorage({\n  cookie: {\n    name: \"theme\",\n    path: \"/\",\n    httpOnly: true,\n    sameSite: \"lax\",\n    secrets: [\"s3cr3t\"],\n    // Set domain and secure only if in production\n    ...(isProduction\n      ? { domain: \"your-production-domain.com\", secure: true }\n      : {}),\n  },\n})\n\nexport const themeSessionResolver = createThemeSessionResolver(sessionStorage)\n```\n\n## Set up Remix Themes\n\nAdd the `ThemeProvider` to your root layout.\n\n```tsx {1-3,6-11,15-22,25-26,28,33} title=\"app/root.tsx\" showLineNumbers\nimport clsx from \"clsx\"\nimport { PreventFlashOnWrongTheme, ThemeProvider, useTheme } from \"remix-themes\"\n\nimport { themeSessionResolver } from \"./sessions.server\"\n\n// Return the theme from the session storage using the loader\nexport async function loader({ request }: LoaderFunctionArgs) {\n  const { getTheme } = await themeSessionResolver(request)\n  return {\n    theme: getTheme(),\n  }\n}\n// Wrap your app with ThemeProvider.\n// `specifiedTheme` is the stored theme in the session storage.\n// `themeAction` is the action name that's used to change the theme in the session storage.\nexport default function AppWithProviders() {\n  const data = useLoaderData<typeof loader>()\n  return (\n    <ThemeProvider specifiedTheme={data.theme} themeAction=\"/action/set-theme\">\n      <App />\n    </ThemeProvider>\n  )\n}\n\nexport function App() {\n  const data = useLoaderData<typeof loader>()\n  const [theme] = useTheme()\n  return (\n    <html lang=\"en\" className={clsx(theme)}>\n      <head>\n        <meta charSet=\"utf-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n        <Meta />\n        <PreventFlashOnWrongTheme ssrTheme={Boolean(data.theme)} />\n        <Links />\n      </head>\n      <body>\n        <Outlet />\n        <ScrollRestoration />\n        <Scripts />\n        <LiveReload />\n      </body>\n    </html>\n  )\n}\n```\n\n## Add an action route\n\nCreate a file in `/routes/action.set-theme.ts`. Ensure that you pass the filename to the ThemeProvider component. This route is used to store the preferred theme in the session storage when the user changes it.\n\n```tsx title=\"app/routes/action.set-theme.ts\" showLineNumbers\nimport { createThemeAction } from \"remix-themes\"\n\nimport { themeSessionResolver } from \"./sessions.server\"\n\nexport const action = createThemeAction(themeSessionResolver)\n```\n\n## Add a mode toggle\n\nPlace a mode toggle on your site to toggle between light and dark mode.\n\n```tsx title=\"components/mode-toggle.tsx\" showLineNumbers\nimport { Moon, Sun } from \"lucide-react\"\nimport { Theme, useTheme } from \"remix-themes\"\n\nimport { Button } from \"./ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"./ui/dropdown-menu\"\n\nexport function ModeToggle() {\n  const [, setTheme] = useTheme()\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"ghost\" size=\"icon\">\n          <Sun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n          <Moon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n          <span className=\"sr-only\">Toggle theme</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuItem onClick={() => setTheme(Theme.LIGHT)}>\n          Light\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(Theme.DARK)}>\n          Dark\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/dark-mode/vite.mdx",
    "content": "---\ntitle: Vite\ndescription: Adding dark mode to your Vite app.\n---\n\n## Create a theme provider\n\n```tsx title=\"components/theme-provider.tsx\" showLineNumbers\nimport { createContext, useContext, useEffect, useState } from \"react\"\n\ntype Theme = \"dark\" | \"light\" | \"system\"\n\ntype ThemeProviderProps = {\n  children: React.ReactNode\n  defaultTheme?: Theme\n  storageKey?: string\n}\n\ntype ThemeProviderState = {\n  theme: Theme\n  setTheme: (theme: Theme) => void\n}\n\nconst initialState: ThemeProviderState = {\n  theme: \"system\",\n  setTheme: () => null,\n}\n\nconst ThemeProviderContext = createContext<ThemeProviderState>(initialState)\n\nexport function ThemeProvider({\n  children,\n  defaultTheme = \"system\",\n  storageKey = \"vite-ui-theme\",\n  ...props\n}: ThemeProviderProps) {\n  const [theme, setTheme] = useState<Theme>(\n    () => (localStorage.getItem(storageKey) as Theme) || defaultTheme\n  )\n\n  useEffect(() => {\n    const root = window.document.documentElement\n\n    root.classList.remove(\"light\", \"dark\")\n\n    if (theme === \"system\") {\n      const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\")\n        .matches\n        ? \"dark\"\n        : \"light\"\n\n      root.classList.add(systemTheme)\n      return\n    }\n\n    root.classList.add(theme)\n  }, [theme])\n\n  const value = {\n    theme,\n    setTheme: (theme: Theme) => {\n      localStorage.setItem(storageKey, theme)\n      setTheme(theme)\n    },\n  }\n\n  return (\n    <ThemeProviderContext.Provider {...props} value={value}>\n      {children}\n    </ThemeProviderContext.Provider>\n  )\n}\n\nexport const useTheme = () => {\n  const context = useContext(ThemeProviderContext)\n\n  if (context === undefined)\n    throw new Error(\"useTheme must be used within a ThemeProvider\")\n\n  return context\n}\n```\n\n## Wrap your root layout\n\nAdd the `ThemeProvider` to your root layout.\n\n```tsx {1,5-7} title=\"App.tsx\" showLineNumbers\nimport { ThemeProvider } from \"@/components/theme-provider\"\n\nfunction App() {\n  return (\n    <ThemeProvider defaultTheme=\"dark\" storageKey=\"vite-ui-theme\">\n      {children}\n    </ThemeProvider>\n  )\n}\n\nexport default App\n```\n\n## Add a mode toggle\n\nPlace a mode toggle on your site to toggle between light and dark mode.\n\n```tsx title=\"components/mode-toggle.tsx\" showLineNumbers\nimport { Moon, Sun } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { useTheme } from \"@/components/theme-provider\"\n\nexport function ModeToggle() {\n  const { setTheme } = useTheme()\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\" size=\"icon\">\n          <Sun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n          <Moon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n          <span className=\"sr-only\">Toggle theme</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuItem onClick={() => setTheme(\"light\")}>\n          Light\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"dark\")}>\n          Dark\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"system\")}>\n          System\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/forms/index.mdx",
    "content": "---\ntitle: Forms\ndescription: Build forms with React and shadcn/ui.\n---\n\nimport { ClipboardListIcon } from \"lucide-react\"\n\n## Pick Your Framework\n\nStart by selecting your framework. Then follow the instructions to learn how to build forms with shadcn/ui and the form library of your choice.\n\n<div className=\"mt-8 grid gap-4 sm:grid-cols-2 sm:gap-6\">\n  <LinkedCard href=\"/docs/forms/react-hook-form\">\n    <ClipboardListIcon className=\"size-10\" />\n    <p className=\"mt-2 font-medium\">React Hook Form</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/forms/tanstack-form\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      className=\"size-10\"\n      fill=\"currentColor\"\n    >\n      <path d=\"M6.93 13.688a.343.343 0 0 1 .468.132l.063.106c.48.851.98 1.66 1.5 2.426a35.65 35.65 0 0 0 2.074 2.742.345.345 0 0 1-.039.484l-.074.066c-2.543 2.223-4.191 2.665-4.953 1.333-.746-1.305-.477-3.672.808-7.11a.344.344 0 0 1 .153-.18ZM17.75 16.3a.34.34 0 0 1 .395.27l.02.1c.628 3.286.187 4.93-1.325 4.93-1.48 0-3.36-1.402-5.649-4.203a.327.327 0 0 1-.074-.222c0-.188.156-.34.344-.34h.121a32.984 32.984 0 0 0 2.809-.098c1.07-.086 2.191-.23 3.359-.437zm.871-6.977a.353.353 0 0 1 .445-.21l.102.034c3.262 1.11 4.504 2.332 3.719 3.664-.766 1.305-2.993 2.254-6.684 2.848a.362.362 0 0 1-.238-.047.343.343 0 0 1-.125-.476l.062-.106a34.07 34.07 0 0 0 1.367-2.523c.477-.989.93-2.051 1.352-3.184zM7.797 8.34a.362.362 0 0 1 .238.047.343.343 0 0 1 .125.476l-.062.106a34.088 34.088 0 0 0-1.367 2.523c-.477.988-.93 2.051-1.352 3.184a.353.353 0 0 1-.445.21l-.102-.034C1.57 13.742.328 12.52 1.113 11.188 1.88 9.883 4.106 8.934 7.797 8.34Zm5.281-3.984c2.543-2.223 4.192-2.664 4.953-1.332.746 1.304.477 3.671-.808 7.109a.344.344 0 0 1-.153.18.343.343 0 0 1-.468-.133l-.063-.106a34.64 34.64 0 0 0-1.5-2.426 35.65 35.65 0 0 0-2.074-2.742.345.345 0 0 1 .039-.484ZM7.285 2.274c1.48 0 3.364 1.402 5.649 4.203a.349.349 0 0 1 .078.218.348.348 0 0 1-.348.344l-.117-.004a34.584 34.584 0 0 0-2.809.102 35.54 35.54 0 0 0-3.363.437.343.343 0 0 1-.394-.273l-.02-.098c-.629-3.285-.188-4.93 1.324-4.93Zm2.871 5.812h3.688a.638.638 0 0 1 .55.316l1.848 3.22a.644.644 0 0 1 0 .628l-1.847 3.223a.638.638 0 0 1-.551.316h-3.688a.627.627 0 0 1-.547-.316L7.758 12.25a.644.644 0 0 1 0-.629L9.61 8.402a.627.627 0 0 1 .546-.316Zm3.23.793a.638.638 0 0 1 .552.316l1.39 2.426a.644.644 0 0 1 0 .629l-1.39 2.43a.638.638 0 0 1-.551.316h-2.774a.627.627 0 0 1-.546-.316l-1.395-2.43a.644.644 0 0 1 0-.629l1.395-2.426a.627.627 0 0 1 .546-.316Zm-.491.867h-1.79a.624.624 0 0 0-.546.316l-.899 1.56a.644.644 0 0 0 0 .628l.899 1.563a.632.632 0 0 0 .547.316h1.789a.632.632 0 0 0 .547-.316l.898-1.563a.644.644 0 0 0 0-.629l-.898-1.558a.624.624 0 0 0-.547-.317Zm-.477.828c.227 0 .438.121.547.317l.422.73a.625.625 0 0 1 0 .629l-.422.734a.627.627 0 0 1-.547.317h-.836a.632.632 0 0 1-.547-.317l-.422-.734a.625.625 0 0 1 0-.629l.422-.73a.632.632 0 0 1 .547-.317zm-.418.817a.548.548 0 0 0-.473.273.547.547 0 0 0 0 .547.544.544 0 0 0 .473.27.544.544 0 0 0 .473-.27.547.547 0 0 0 0-.547.548.548 0 0 0-.473-.273Zm-4.422.546h.98M18.98 7.75c.391-1.895.477-3.344.223-4.398-.148-.63-.422-1.137-.84-1.508-.441-.39-1-.582-1.625-.582-1.035 0-2.12.472-3.281 1.367a14.9 14.9 0 0 0-1.473 1.316 1.206 1.206 0 0 0-.136-.144c-1.446-1.285-2.66-2.082-3.7-2.39-.617-.184-1.195-.2-1.722-.024-.559.187-1.004.574-1.317 1.117-.515.894-.652 2.074-.46 3.527.078.59.214 1.235.402 1.934a1.119 1.119 0 0 0-.215.047C3.008 8.62 1.71 9.269.926 10.015c-.465.442-.77.938-.883 1.481-.113.578 0 1.156.312 1.7.516.894 1.465 1.597 2.817 2.155.543.223 1.156.426 1.844.61a1.023 1.023 0 0 0-.07.226c-.391 1.891-.477 3.344-.223 4.395.148.629.425 1.14.84 1.508.44.39 1 .582 1.625.582 1.035 0 2.12-.473 3.28-1.364.477-.37.973-.816 1.489-1.336a1.2 1.2 0 0 0 .195.227c1.446 1.285 2.66 2.082 3.7 2.39.617.184 1.195.2 1.722.024.559-.187 1.004-.574 1.317-1.117.515-.894.652-2.074.46-3.527a14.941 14.941 0 0 0-.425-2.012 1.225 1.225 0 0 0 .238-.047c1.828-.61 3.125-1.258 3.91-2.004.465-.441.77-.937.883-1.48.113-.578 0-1.157-.313-1.7-.515-.894-1.464-1.597-2.816-2.156a14.576 14.576 0 0 0-1.906-.625.865.865 0 0 0 .059-.195z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">TanStack Form</p>\n  </LinkedCard>\n  <LinkedCard href=\"#\" className=\"border border-dashed bg-transparent\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      className=\"size-10\"\n      fill=\"currentColor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <title>React</title>\n      <path d=\"M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">useActionState</p>\n    <p className=\"mt-1 text-xs text-muted-foreground\">(Coming Soon)</p>\n  </LinkedCard>\n</div>\n"
  },
  {
    "path": "apps/v4/content/docs/forms/meta.json",
    "content": "{\n  \"pages\": [\"react-hook-form\", \"tanstack-form\"]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/forms/next.mdx",
    "content": "---\ntitle: Next.js\ndescription: Build forms in React using useActionState and Server Actions.\n---\n\nimport { InfoIcon } from \"lucide-react\"\n\nIn this guide, we will take a look at building forms with Next.js using `useActionState` and Server Actions. We'll cover building forms, validation, pending states, accessibility, and more.\n\n## Demo\n\nWe are going to build the following form with a simple text input and a textarea. On submit, we'll use a server action to validate the form data and update the form state.\n\n<ComponentPreview\n  name=\"form-next-demo\"\n  className=\"[&_.preview]:h-[700px] [&_pre]:h-[700px]!\"\n/>\n\n<Callout icon={<InfoIcon />}>\n  **Note:** The examples on this page intentionally disable browser validation\n  to show how schema validation and form errors work in server actions.\n</Callout>\n\n## Approach\n\nThis form leverages Next.js and React's built-in capabilities for form handling. We'll build our form using the `<Field />` component, which gives you **complete flexibility over the markup and styling**.\n\n- Uses Next.js `<Form />` component for navigation and progressive enhancement.\n- `<Field />` components for building accessible forms.\n- `useActionState` for managing form state and errors.\n- Handles loading states with the pending prop.\n- Server Actions for handling form submissions.\n- Server-side validation using Zod.\n\n## Anatomy\n\nHere's a basic example of a form using the `<Field />` component.\n\n```tsx showLineNumbers\n<Form action={formAction}>\n  <FieldGroup>\n    <Field data-invalid={!!formState.errors?.title?.length}>\n      <FieldLabel htmlFor=\"title\">Bug Title</FieldLabel>\n      <Input\n        id=\"title\"\n        name=\"title\"\n        defaultValue={formState.values.title}\n        disabled={pending}\n        aria-invalid={!!formState.errors?.title?.length}\n        placeholder=\"Login button not working on mobile\"\n        autoComplete=\"off\"\n      />\n      <FieldDescription>\n        Provide a concise title for your bug report.\n      </FieldDescription>\n      {formState.errors?.title && (\n        <FieldError>{formState.errors.title[0]}</FieldError>\n      )}\n    </Field>\n  </FieldGroup>\n  <Button type=\"submit\">Submit</Button>\n</Form>\n```\n\n## Usage\n\n### Create a form schema\n\nWe'll start by defining the shape of our form using a Zod schema in a `schema.ts` file.\n\n<Callout icon={<InfoIcon />}>\n  **Note:** This example uses `zod v3` for schema validation, but you can\n  replace it with any other schema validation library. Make sure your schema\n  library conforms to the Standard Schema specification.\n</Callout>\n\n```tsx showLineNumbers title=\"schema.ts\"\nimport { z } from \"zod\"\n\nexport const formSchema = z.object({\n  title: z\n    .string()\n    .min(5, \"Bug title must be at least 5 characters.\")\n    .max(32, \"Bug title must be at most 32 characters.\"),\n  description: z\n    .string()\n    .min(20, \"Description must be at least 20 characters.\")\n    .max(100, \"Description must be at most 100 characters.\"),\n})\n```\n\n### Define the form state type\n\nNext, we'll create a type for our form state that includes values, errors, and success status. This will be used to type the form state on the client and server.\n\n```tsx showLineNumbers title=\"schema.ts\"\nimport { z } from \"zod\"\n\nexport type FormState = {\n  values?: z.infer<typeof formSchema>\n  errors: null | Partial<Record<keyof z.infer<typeof formSchema>, string[]>>\n  success: boolean\n}\n```\n\n**Important:** We define the schema and the `FormState` type in a separate file so we can import them into both the client and server components.\n\n### Create the Server Action\n\nA server action is a function that runs on the server and can be called from the client. We'll use it to validate the form data and update the form state.\n\n<ComponentSource\n  src=\"/registry/new-york-v4/examples/form-next-demo-action.ts\"\n  title=\"actions.ts\"\n/>\n\n**Note:** We're returning `values` for error cases. This is because we want to keep the user submitted values in the form state. For success cases, we're returning empty values to reset the form.\n\n### Build the form\n\nWe can now build the form using the `<Field />` component. We'll use the `useActionState` hook to manage the form state, server action, and pending state.\n\n<ComponentSource\n  src=\"/registry/new-york-v4/examples/form-next-demo.tsx\"\n  title=\"form.tsx\"\n/>\n\n### Done\n\nThat's it. You now have a fully accessible form with client and server-side validation.\n\nWhen you submit the form, the `formAction` function will be called on the server. The server action will validate the form data and update the form state.\n\nIf the form data is invalid, the server action will return the errors to the client. If the form data is valid, the server action will return the success status and update the form state.\n\n## Pending States\n\nUse the `pending` prop from `useActionState` to show loading indicators and disable form inputs.\n\n```tsx showLineNumbers {11,26-34}\n\"use client\"\n\nimport * as React from \"react\"\nimport Form from \"next/form\"\n\nimport { Spinner } from \"@/components/ui/spinner\"\n\nimport { bugReportFormAction } from \"./actions\"\n\nexport function BugReportForm() {\n  const [formState, formAction, pending] = React.useActionState(\n    bugReportFormAction,\n    {\n      errors: null,\n      success: false,\n    }\n  )\n\n  return (\n    <Form action={formAction}>\n      <FieldGroup>\n        <Field data-disabled={pending}>\n          <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n          <Input id=\"name\" name=\"name\" disabled={pending} />\n        </Field>\n        <Field>\n          <Button type=\"submit\" disabled={pending}>\n            {pending && <Spinner />} Submit\n          </Button>\n        </Field>\n      </FieldGroup>\n    </Form>\n  )\n}\n```\n\n## Disabled States\n\n### Submit Button\n\nTo disable the submit button, use the `pending` prop on the button's `disabled` prop.\n\n```tsx showLineNumbers\n<Button type=\"submit\" disabled={pending}>\n  {pending && <Spinner />} Submit\n</Button>\n```\n\n### Field\n\nTo apply a disabled state and styling to a `<Field />` component, use the `data-disabled` prop on the `<Field />` component.\n\n```tsx showLineNumbers\n<Field data-disabled={pending}>\n  <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n  <Input id=\"name\" name=\"name\" disabled={pending} />\n</Field>\n```\n\n## Validation\n\n### Server-side Validation\n\nUse `safeParse()` on your schema in your server action to validate the form data.\n\n```tsx showLineNumbers title=\"actions.ts\" {12-20}\n\"use server\"\n\nexport async function bugReportFormAction(\n  _prevState: FormState,\n  formData: FormData\n) {\n  const values = {\n    title: formData.get(\"title\") as string,\n    description: formData.get(\"description\") as string,\n  }\n\n  const result = formSchema.safeParse(values)\n\n  if (!result.success) {\n    return {\n      values,\n      success: false,\n      errors: result.error.flatten().fieldErrors,\n    }\n  }\n\n  return {\n    errors: null,\n    success: true,\n  }\n}\n```\n\n### Business Logic Validation\n\nYou can add additional custom validation logic in your server action.\n\nMake sure to return the values on validation errors. This is to ensure that the form state maintains the user's input.\n\n```tsx showLineNumbers title=\"actions.ts\" {22-35}\n\"use server\"\n\nexport async function bugReportFormAction(\n  _prevState: FormState,\n  formData: FormData\n) {\n  const values = {\n    title: formData.get(\"title\") as string,\n    description: formData.get(\"description\") as string,\n  }\n\n  const result = formSchema.safeParse(values)\n\n  if (!result.success) {\n    return {\n      values,\n      success: false,\n      errors: result.error.flatten().fieldErrors,\n    }\n  }\n\n  // Check if email already exists in database.\n  const existingUser = await db.user.findUnique({\n    where: { email: result.data.email },\n  })\n\n  if (existingUser) {\n    return {\n      values,\n      success: false,\n      errors: {\n        email: [\"This email is already registered\"],\n      },\n    }\n  }\n\n  return {\n    errors: null,\n    success: true,\n  }\n}\n```\n\n## Displaying Errors\n\nDisplay errors next to the field using `<FieldError />`. Make sure to add the `data-invalid` prop to the `<Field />` component and `aria-invalid` prop to the input.\n\n```tsx showLineNumbers\n<Field data-invalid={!!formState.errors?.email?.length}>\n  <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n  <Input\n    id=\"email\"\n    name=\"email\"\n    type=\"email\"\n    aria-invalid={!!formState.errors?.email?.length}\n  />\n  {formState.errors?.email && (\n    <FieldError>{formState.errors.email[0]}</FieldError>\n  )}\n</Field>\n```\n\n## Resetting the Form\n\nWhen you submit a form with a server action, React will automatically reset the form state to the initial values.\n\n### Reset on Success\n\nTo reset the form on success, you can omit the `values` from the server action and React will automatically reset the form state to the initial values. This is standard React behavior.\n\n```tsx showLineNumbers title=\"actions.ts\" {22-26}\nexport async function demoFormAction(\n  _prevState: FormState,\n  formData: FormData\n) {\n  const values = {\n    title: formData.get(\"title\") as string,\n    description: formData.get(\"description\") as string,\n  }\n\n  // Validation.\n  if (!result.success) {\n    return {\n      values,\n      success: false,\n      errors: result.error.flatten().fieldErrors,\n    }\n  }\n\n  // Business logic.\n  callYourDatabaseOrAPI(values)\n\n  // Omit the values on success to reset the form state.\n  return {\n    errors: null,\n    success: true,\n  }\n}\n```\n\n### Preserve on Validation Errors\n\nTo prevent the form from being reset on failure, you can return the values in the server action. This is to ensure that the form state maintains the user's input.\n\n```tsx showLineNumbers title=\"actions.ts\" {12-17}\nexport async function demoFormAction(\n  _prevState: FormState,\n  formData: FormData\n) {\n  const values = {\n    title: formData.get(\"title\") as string,\n    description: formData.get(\"description\") as string,\n  }\n\n  // Validation.\n  if (!result.success) {\n    return {\n      // Return the values on validation errors.\n      values,\n      success: false,\n      errors: result.error.flatten().fieldErrors,\n    }\n  }\n}\n```\n\n## Complex Forms\n\nHere is an example of a more complex form with multiple fields and validation.\n\n<ComponentPreview\n  name=\"form-next-complex\"\n  className=\"[&_.preview]:h-[1100px] [&_pre]:h-[1100px]!\"\n  hideCode\n/>\n\n### Schema\n\n<ComponentSource\n  src=\"/registry/new-york-v4/examples/form-next-complex-schema.ts\"\n  title=\"schema.ts\"\n/>\n\n### Form\n\n<ComponentSource\n  src=\"/registry/new-york-v4/examples/form-next-complex.tsx\"\n  title=\"form.tsx\"\n/>\n\n### Server Action\n\n<ComponentSource\n  src=\"/registry/new-york-v4/examples/form-next-complex-action.ts\"\n  title=\"actions.ts\"\n/>\n"
  },
  {
    "path": "apps/v4/content/docs/forms/react-hook-form.mdx",
    "content": "---\ntitle: React Hook Form\ndescription: Build forms in React using React Hook Form and Zod.\nlinks:\n  doc: https://react-hook-form.com\n---\n\nimport { InfoIcon } from \"lucide-react\"\n\nIn this guide, we will take a look at building forms with React Hook Form. We'll cover building forms with the `<Field />` component, adding schema validation using Zod, error handling, accessibility, and more.\n\n## Demo\n\nWe are going to build the following form. It has a simple text input and a textarea. On submit, we'll validate the form data and display any errors.\n\n<Callout icon={<InfoIcon />}>\n  **Note:** For the purpose of this demo, we have intentionally disabled browser\n  validation to show how schema validation and form errors work in React Hook\n  Form. It is recommended to add basic browser validation in your production\n  code.\n</Callout>\n\n<ComponentPreview\n  name=\"form-rhf-demo\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n## Approach\n\nThis form leverages React Hook Form for performant, flexible form handling. We'll build our form using the `<Field />` component, which gives you **complete flexibility over the markup and styling**.\n\n- Uses React Hook Form's `useForm` hook for form state management.\n- `<Controller />` component for controlled inputs.\n- `<Field />` components for building accessible forms.\n- Client-side validation using Zod with `zodResolver`.\n\n## Anatomy\n\nHere's a basic example of a form using the `<Controller />` component from React Hook Form and the `<Field />` component.\n\n```tsx showLineNumbers {5-18}\n<Controller\n  name=\"title\"\n  control={form.control}\n  render={({ field, fieldState }) => (\n    <Field data-invalid={fieldState.invalid}>\n      <FieldLabel htmlFor={field.name}>Bug Title</FieldLabel>\n      <Input\n        {...field}\n        id={field.name}\n        aria-invalid={fieldState.invalid}\n        placeholder=\"Login button not working on mobile\"\n        autoComplete=\"off\"\n      />\n      <FieldDescription>\n        Provide a concise title for your bug report.\n      </FieldDescription>\n      {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n    </Field>\n  )}\n/>\n```\n\n## Form\n\n### Create a form schema\n\nWe'll start by defining the shape of our form using a Zod schema.\n\n<Callout icon={<InfoIcon />}>\n  **Note:** This example uses `zod v3` for schema validation, but you can\n  replace it with any other Standard Schema validation library supported by\n  React Hook Form.\n</Callout>\n\n```tsx showLineNumbers title=\"form.tsx\"\nimport * as z from \"zod\"\n\nconst formSchema = z.object({\n  title: z\n    .string()\n    .min(5, \"Bug title must be at least 5 characters.\")\n    .max(32, \"Bug title must be at most 32 characters.\"),\n  description: z\n    .string()\n    .min(20, \"Description must be at least 20 characters.\")\n    .max(100, \"Description must be at most 100 characters.\"),\n})\n```\n\n### Set up the form\n\nNext, we'll use the `useForm` hook from React Hook Form to create our form instance. We'll also add the Zod resolver to validate the form data.\n\n```tsx showLineNumbers title=\"form.tsx\" {17-23}\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nconst formSchema = z.object({\n  title: z\n    .string()\n    .min(5, \"Bug title must be at least 5 characters.\")\n    .max(32, \"Bug title must be at most 32 characters.\"),\n  description: z\n    .string()\n    .min(20, \"Description must be at least 20 characters.\")\n    .max(100, \"Description must be at most 100 characters.\"),\n})\n\nexport function BugReportForm() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      title: \"\",\n      description: \"\",\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    // Do something with the form values.\n    console.log(data)\n  }\n\n  return (\n    <form onSubmit={form.handleSubmit(onSubmit)}>\n      {/* ... */}\n      {/* Build the form here */}\n      {/* ... */}\n    </form>\n  )\n}\n```\n\n### Build the form\n\nWe can now build the form using the `<Controller />` component from React Hook Form and the `<Field />` component.\n\n<ComponentSource\n  src=\"/registry/new-york-v4/examples/form-rhf-demo.tsx\"\n  title=\"form.tsx\"\n/>\n\n### Done\n\nThat's it. You now have a fully accessible form with client-side validation.\n\nWhen you submit the form, the `onSubmit` function will be called with the validated form data. If the form data is invalid, React Hook Form will display the errors next to each field.\n\n## Validation\n\n### Client-side Validation\n\nReact Hook Form validates your form data using the Zod schema. Define a schema and pass it to the `resolver` option of the `useForm` hook.\n\n```tsx showLineNumbers title=\"example-form.tsx\" {5-8,12}\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nconst formSchema = z.object({\n  title: z.string(),\n  description: z.string().optional(),\n})\n\nexport function ExampleForm() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      title: \"\",\n      description: \"\",\n    },\n  })\n}\n```\n\n### Validation Modes\n\nReact Hook Form supports different validation modes.\n\n```tsx showLineNumbers title=\"form.tsx\" {3}\nconst form = useForm<z.infer<typeof formSchema>>({\n  resolver: zodResolver(formSchema),\n  mode: \"onChange\",\n})\n```\n\n| Mode          | Description                                              |\n| ------------- | -------------------------------------------------------- |\n| `\"onChange\"`  | Validation triggers on every change.                     |\n| `\"onBlur\"`    | Validation triggers on blur.                             |\n| `\"onSubmit\"`  | Validation triggers on submit (default).                 |\n| `\"onTouched\"` | Validation triggers on first blur, then on every change. |\n| `\"all\"`       | Validation triggers on blur and change.                  |\n\n## Displaying Errors\n\nDisplay errors next to the field using `<FieldError />`. For styling and accessibility:\n\n- Add the `data-invalid` prop to the `<Field />` component.\n- Add the `aria-invalid` prop to the form control such as `<Input />`, `<SelectTrigger />`, `<Checkbox />`, etc.\n\n```tsx showLineNumbers title=\"form.tsx\" {5,11,13}\n<Controller\n  name=\"email\"\n  control={form.control}\n  render={({ field, fieldState }) => (\n    <Field data-invalid={fieldState.invalid}>\n      <FieldLabel htmlFor={field.name}>Email</FieldLabel>\n      <Input\n        {...field}\n        id={field.name}\n        type=\"email\"\n        aria-invalid={fieldState.invalid}\n      />\n      {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n    </Field>\n  )}\n/>\n```\n\n## Working with Different Field Types\n\n### Input\n\n- For input fields, spread the `field` object onto the `<Input />` component.\n- To show errors, add the `aria-invalid` prop to the `<Input />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-rhf-input\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\nFor simple text inputs, spread the `field` object onto the input.\n\n```tsx showLineNumbers title=\"form.tsx\" {5,7,8}\n<Controller\n  name=\"name\"\n  control={form.control}\n  render={({ field, fieldState }) => (\n    <Field data-invalid={fieldState.invalid}>\n      <FieldLabel htmlFor={field.name}>Name</FieldLabel>\n      <Input {...field} id={field.name} aria-invalid={fieldState.invalid} />\n      {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n    </Field>\n  )}\n/>\n```\n\n### Textarea\n\n- For textarea fields, spread the `field` object onto the `<Textarea />` component.\n- To show errors, add the `aria-invalid` prop to the `<Textarea />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-rhf-textarea\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\nFor textarea fields, spread the `field` object onto the textarea.\n\n```tsx showLineNumbers title=\"form.tsx\" {5,10,18}\n<Controller\n  name=\"about\"\n  control={form.control}\n  render={({ field, fieldState }) => (\n    <Field data-invalid={fieldState.invalid}>\n      <FieldLabel htmlFor=\"form-rhf-textarea-about\">More about you</FieldLabel>\n      <Textarea\n        {...field}\n        id=\"form-rhf-textarea-about\"\n        aria-invalid={fieldState.invalid}\n        placeholder=\"I'm a software engineer...\"\n        className=\"min-h-[120px]\"\n      />\n      <FieldDescription>\n        Tell us more about yourself. This will be used to help us personalize\n        your experience.\n      </FieldDescription>\n      {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n    </Field>\n  )}\n/>\n```\n\n### Select\n\n- For select components, use `field.value` and `field.onChange` on the `<Select />` component.\n- To show errors, add the `aria-invalid` prop to the `<SelectTrigger />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-rhf-select\"\n  className=\"sm:[&_.preview]:h-[500px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {5,13,22}\n<Controller\n  name=\"language\"\n  control={form.control}\n  render={({ field, fieldState }) => (\n    <Field orientation=\"responsive\" data-invalid={fieldState.invalid}>\n      <FieldContent>\n        <FieldLabel htmlFor=\"form-rhf-select-language\">\n          Spoken Language\n        </FieldLabel>\n        <FieldDescription>\n          For best results, select the language you speak.\n        </FieldDescription>\n        {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n      </FieldContent>\n      <Select\n        name={field.name}\n        value={field.value}\n        onValueChange={field.onChange}\n      >\n        <SelectTrigger\n          id=\"form-rhf-select-language\"\n          aria-invalid={fieldState.invalid}\n          className=\"min-w-[120px]\"\n        >\n          <SelectValue placeholder=\"Select\" />\n        </SelectTrigger>\n        <SelectContent position=\"item-aligned\">\n          <SelectItem value=\"auto\">Auto</SelectItem>\n          <SelectItem value=\"en\">English</SelectItem>\n        </SelectContent>\n      </Select>\n    </Field>\n  )}\n/>\n```\n\n### Checkbox\n\n- For checkbox arrays, use `field.value` and `field.onChange` with array manipulation.\n- To show errors, add the `aria-invalid` prop to the `<Checkbox />` component and the `data-invalid` prop to the `<Field />` component.\n- Remember to add `data-slot=\"checkbox-group\"` to the `<FieldGroup />` component for proper styling and spacing.\n\n<ComponentPreview\n  name=\"form-rhf-checkbox\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {10,15,20-22,38}\n<Controller\n  name=\"tasks\"\n  control={form.control}\n  render={({ field, fieldState }) => (\n    <FieldSet>\n      <FieldLegend variant=\"label\">Tasks</FieldLegend>\n      <FieldDescription>\n        Get notified when tasks you&apos;ve created have updates.\n      </FieldDescription>\n      <FieldGroup data-slot=\"checkbox-group\">\n        {tasks.map((task) => (\n          <Field\n            key={task.id}\n            orientation=\"horizontal\"\n            data-invalid={fieldState.invalid}\n          >\n            <Checkbox\n              id={`form-rhf-checkbox-${task.id}`}\n              name={field.name}\n              aria-invalid={fieldState.invalid}\n              checked={field.value.includes(task.id)}\n              onCheckedChange={(checked) => {\n                const newValue = checked\n                  ? [...field.value, task.id]\n                  : field.value.filter((value) => value !== task.id)\n                field.onChange(newValue)\n              }}\n            />\n            <FieldLabel\n              htmlFor={`form-rhf-checkbox-${task.id}`}\n              className=\"font-normal\"\n            >\n              {task.label}\n            </FieldLabel>\n          </Field>\n        ))}\n      </FieldGroup>\n      {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n    </FieldSet>\n  )}\n/>\n```\n\n### Radio Group\n\n- For radio groups, use `field.value` and `field.onChange` on the `<RadioGroup />` component.\n- To show errors, add the `aria-invalid` prop to the `<RadioGroupItem />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-rhf-radiogroup\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {12-13,17,25,31}\n<Controller\n  name=\"plan\"\n  control={form.control}\n  render={({ field, fieldState }) => (\n    <FieldSet>\n      <FieldLegend>Plan</FieldLegend>\n      <FieldDescription>\n        You can upgrade or downgrade your plan at any time.\n      </FieldDescription>\n      <RadioGroup\n        name={field.name}\n        value={field.value}\n        onValueChange={field.onChange}\n      >\n        {plans.map((plan) => (\n          <FieldLabel key={plan.id} htmlFor={`form-rhf-radiogroup-${plan.id}`}>\n            <Field orientation=\"horizontal\" data-invalid={fieldState.invalid}>\n              <FieldContent>\n                <FieldTitle>{plan.title}</FieldTitle>\n                <FieldDescription>{plan.description}</FieldDescription>\n              </FieldContent>\n              <RadioGroupItem\n                value={plan.id}\n                id={`form-rhf-radiogroup-${plan.id}`}\n                aria-invalid={fieldState.invalid}\n              />\n            </Field>\n          </FieldLabel>\n        ))}\n      </RadioGroup>\n      {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n    </FieldSet>\n  )}\n/>\n```\n\n### Switch\n\n- For switches, use `field.value` and `field.onChange` on the `<Switch />` component.\n- To show errors, add the `aria-invalid` prop to the `<Switch />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-rhf-switch\"\n  className=\"sm:[&_.preview]:h-[500px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {5,13,18-19}\n<Controller\n  name=\"twoFactor\"\n  control={form.control}\n  render={({ field, fieldState }) => (\n    <Field orientation=\"horizontal\" data-invalid={fieldState.invalid}>\n      <FieldContent>\n        <FieldLabel htmlFor=\"form-rhf-switch-twoFactor\">\n          Multi-factor authentication\n        </FieldLabel>\n        <FieldDescription>\n          Enable multi-factor authentication to secure your account.\n        </FieldDescription>\n        {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n      </FieldContent>\n      <Switch\n        id=\"form-rhf-switch-twoFactor\"\n        name={field.name}\n        checked={field.value}\n        onCheckedChange={field.onChange}\n        aria-invalid={fieldState.invalid}\n      />\n    </Field>\n  )}\n/>\n```\n\n### Complex Forms\n\nHere is an example of a more complex form with multiple fields and validation.\n\n<ComponentPreview\n  name=\"form-rhf-complex\"\n  className=\"sm:[&_.preview]:h-[1300px]\"\n  chromeLessOnMobile\n/>\n\n## Resetting the Form\n\nUse `form.reset()` to reset the form to its default values.\n\n```tsx showLineNumbers\n<Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n  Reset\n</Button>\n```\n\n## Array Fields\n\nReact Hook Form provides a `useFieldArray` hook for managing dynamic array fields. This is useful when you need to add or remove fields dynamically.\n\n<ComponentPreview\n  name=\"form-rhf-array\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n### Using useFieldArray\n\nUse the `useFieldArray` hook to manage array fields. It provides `fields`, `append`, and `remove` methods.\n\n```tsx showLineNumbers title=\"form.tsx\" {8-11}\nimport { useFieldArray, useForm } from \"react-hook-form\"\n\nexport function ExampleForm() {\n  const form = useForm({\n    // ... form config\n  })\n\n  const { fields, append, remove } = useFieldArray({\n    control: form.control,\n    name: \"emails\",\n  })\n}\n```\n\n### Array Field Structure\n\nWrap your array fields in a `<FieldSet />` with a `<FieldLegend />` and `<FieldDescription />`.\n\n```tsx showLineNumbers title=\"form.tsx\"\n<FieldSet className=\"gap-4\">\n  <FieldLegend variant=\"label\">Email Addresses</FieldLegend>\n  <FieldDescription>\n    Add up to 5 email addresses where we can contact you.\n  </FieldDescription>\n  <FieldGroup className=\"gap-4\">{/* Array items go here */}</FieldGroup>\n</FieldSet>\n```\n\n### Controller Pattern for Array Items\n\nMap over the `fields` array and use `<Controller />` for each item. **Make sure to use `field.id` as the key**.\n\n```tsx showLineNumbers title=\"form.tsx\"\n{\n  fields.map((field, index) => (\n    <Controller\n      key={field.id}\n      name={`emails.${index}.address`}\n      control={form.control}\n      render={({ field: controllerField, fieldState }) => (\n        <Field orientation=\"horizontal\" data-invalid={fieldState.invalid}>\n          <FieldContent>\n            <InputGroup>\n              <InputGroupInput\n                {...controllerField}\n                id={`form-rhf-array-email-${index}`}\n                aria-invalid={fieldState.invalid}\n                placeholder=\"name@example.com\"\n                type=\"email\"\n                autoComplete=\"email\"\n              />\n              {/* Remove button */}\n            </InputGroup>\n            {fieldState.invalid && <FieldError errors={[fieldState.error]} />}\n          </FieldContent>\n        </Field>\n      )}\n    />\n  ))\n}\n```\n\n### Adding Items\n\nUse the `append` method to add new items to the array.\n\n```tsx showLineNumbers title=\"form.tsx\"\n<Button\n  type=\"button\"\n  variant=\"outline\"\n  size=\"sm\"\n  onClick={() => append({ address: \"\" })}\n  disabled={fields.length >= 5}\n>\n  Add Email Address\n</Button>\n```\n\n### Removing Items\n\nUse the `remove` method to remove items from the array. Add the remove button conditionally.\n\n```tsx showLineNumbers title=\"form.tsx\"\n{\n  fields.length > 1 && (\n    <InputGroupAddon align=\"inline-end\">\n      <InputGroupButton\n        type=\"button\"\n        variant=\"ghost\"\n        size=\"icon-xs\"\n        onClick={() => remove(index)}\n        aria-label={`Remove email ${index + 1}`}\n      >\n        <XIcon />\n      </InputGroupButton>\n    </InputGroupAddon>\n  )\n}\n```\n\n### Array Validation\n\nUse Zod's `array` method to validate array fields.\n\n```tsx showLineNumbers title=\"form.tsx\"\nconst formSchema = z.object({\n  emails: z\n    .array(\n      z.object({\n        address: z.string().email(\"Enter a valid email address.\"),\n      })\n    )\n    .min(1, \"Add at least one email address.\")\n    .max(5, \"You can add up to 5 email addresses.\"),\n})\n```\n"
  },
  {
    "path": "apps/v4/content/docs/forms/tanstack-form.mdx",
    "content": "---\ntitle: TanStack Form\ndescription: Build forms in React using TanStack Form and Zod.\nlinks:\n  doc: https://tanstack.com/form\n---\n\nimport { InfoIcon } from \"lucide-react\"\n\nThis guide explores how to build forms using TanStack Form. You'll learn to create forms with the `<Field />` component, implement schema validation with Zod, handle errors, and ensure accessibility.\n\n## Demo\n\nWe'll start by building the following form. It has a simple text input and a textarea. On submit, we'll validate the form data and display any errors.\n\n<Callout icon={<InfoIcon />}>\n  **Note:** For the purpose of this demo, we have intentionally disabled browser\n  validation to show how schema validation and form errors work in TanStack\n  Form. It is recommended to add basic browser validation in your production\n  code.\n</Callout>\n\n<ComponentPreview\n  name=\"form-tanstack-demo\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n## Approach\n\nThis form leverages TanStack Form for powerful, headless form handling. We'll build our form using the `<Field />` component, which gives you **complete flexibility over the markup and styling**.\n\n- Uses TanStack Form's `useForm` hook for form state management.\n- `form.Field` component with render prop pattern for controlled inputs.\n- `<Field />` components for building accessible forms.\n- Client-side validation using Zod.\n- Real-time validation feedback.\n\n## Anatomy\n\nHere's a basic example of a form using TanStack Form with the `<Field />` component.\n\n```tsx showLineNumbers {15-31}\n<form\n  onSubmit={(e) => {\n    e.preventDefault()\n    form.handleSubmit()\n  }}\n>\n  <FieldGroup>\n    <form.Field\n      name=\"title\"\n      children={(field) => {\n        const isInvalid =\n          field.state.meta.isTouched && !field.state.meta.isValid\n        return (\n          <Field data-invalid={isInvalid}>\n            <FieldLabel htmlFor={field.name}>Bug Title</FieldLabel>\n            <Input\n              id={field.name}\n              name={field.name}\n              value={field.state.value}\n              onBlur={field.handleBlur}\n              onChange={(e) => field.handleChange(e.target.value)}\n              aria-invalid={isInvalid}\n              placeholder=\"Login button not working on mobile\"\n              autoComplete=\"off\"\n            />\n            <FieldDescription>\n              Provide a concise title for your bug report.\n            </FieldDescription>\n            {isInvalid && <FieldError errors={field.state.meta.errors} />}\n          </Field>\n        )\n      }}\n    />\n  </FieldGroup>\n  <Button type=\"submit\">Submit</Button>\n</form>\n```\n\n## Form\n\n### Create a schema\n\nWe'll start by defining the shape of our form using a Zod schema.\n\n<Callout icon={<InfoIcon />}>\n  **Note:** This example uses `zod v3` for schema validation. TanStack Form\n  integrates seamlessly with Zod and other Standard Schema validation libraries\n  through its validators API.\n</Callout>\n\n```tsx showLineNumbers title=\"form.tsx\"\nimport * as z from \"zod\"\n\nconst formSchema = z.object({\n  title: z\n    .string()\n    .min(5, \"Bug title must be at least 5 characters.\")\n    .max(32, \"Bug title must be at most 32 characters.\"),\n  description: z\n    .string()\n    .min(20, \"Description must be at least 20 characters.\")\n    .max(100, \"Description must be at most 100 characters.\"),\n})\n```\n\n### Set up the form\n\nUse the `useForm` hook from TanStack Form to create your form instance with Zod validation.\n\n```tsx showLineNumbers title=\"form.tsx\" {10-21}\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nconst formSchema = z.object({\n  // ...\n})\n\nexport function BugReportForm() {\n  const form = useForm({\n    defaultValues: {\n      title: \"\",\n      description: \"\",\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast.success(\"Form submitted successfully\")\n    },\n  })\n\n  return (\n    <form\n      onSubmit={(e) => {\n        e.preventDefault()\n        form.handleSubmit()\n      }}\n    >\n      {/* ... */}\n    </form>\n  )\n}\n```\n\nWe are using `onSubmit` to validate the form data here. TanStack Form supports other validation modes, which you can read about in the [documentation](https://tanstack.com/form/latest/docs/framework/react/guides/dynamic-validation).\n\n### Build the form\n\nWe can now build the form using the `form.Field` component from TanStack Form and the `<Field />` component.\n\n<ComponentSource\n  src=\"/registry/new-york-v4/examples/form-tanstack-demo.tsx\"\n  title=\"form.tsx\"\n/>\n\n### Done\n\nThat's it. You now have a fully accessible form with client-side validation.\n\nWhen you submit the form, the `onSubmit` function will be called with the validated form data. If the form data is invalid, TanStack Form will display the errors next to each field.\n\n## Validation\n\n### Client-side Validation\n\nTanStack Form validates your form data using the Zod schema. Validation happens in real-time as the user types.\n\n```tsx showLineNumbers title=\"form.tsx\" {13-15}\nimport { useForm } from \"@tanstack/react-form\"\n\nconst formSchema = z.object({\n  // ...\n})\n\nexport function BugReportForm() {\n  const form = useForm({\n    defaultValues: {\n      title: \"\",\n      description: \"\",\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      console.log(value)\n    },\n  })\n\n  return <form onSubmit={/* ... */}>{/* ... */}</form>\n}\n```\n\n### Validation Modes\n\nTanStack Form supports different validation strategies through the `validators` option:\n\n| Mode         | Description                          |\n| ------------ | ------------------------------------ |\n| `\"onChange\"` | Validation triggers on every change. |\n| `\"onBlur\"`   | Validation triggers on blur.         |\n| `\"onSubmit\"` | Validation triggers on submit.       |\n\n```tsx showLineNumbers title=\"form.tsx\" {6-9}\nconst form = useForm({\n  defaultValues: {\n    title: \"\",\n    description: \"\",\n  },\n  validators: {\n    onSubmit: formSchema,\n    onChange: formSchema,\n    onBlur: formSchema,\n  },\n})\n```\n\n## Displaying Errors\n\nDisplay errors next to the field using `<FieldError />`. For styling and accessibility:\n\n- Add the `data-invalid` prop to the `<Field />` component.\n- Add the `aria-invalid` prop to the form control such as `<Input />`, `<SelectTrigger />`, `<Checkbox />`, etc.\n\n```tsx showLineNumbers title=\"form.tsx\" {4,18}\n<form.Field\n  name=\"email\"\n  children={(field) => {\n    const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid\n\n    return (\n      <Field data-invalid={isInvalid}>\n        <FieldLabel htmlFor={field.name}>Email</FieldLabel>\n        <Input\n          id={field.name}\n          name={field.name}\n          value={field.state.value}\n          onBlur={field.handleBlur}\n          onChange={(e) => field.handleChange(e.target.value)}\n          type=\"email\"\n          aria-invalid={isInvalid}\n        />\n        {isInvalid && <FieldError errors={field.state.meta.errors} />}\n      </Field>\n    )\n  }}\n/>\n```\n\n## Working with Different Field Types\n\n### Input\n\n- For input fields, use `field.state.value` and `field.handleChange` on the `<Input />` component.\n- To show errors, add the `aria-invalid` prop to the `<Input />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-tanstack-input\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {6,11-14,22}\n<form.Field\n  name=\"username\"\n  children={(field) => {\n    const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid\n    return (\n      <Field data-invalid={isInvalid}>\n        <FieldLabel htmlFor=\"form-tanstack-input-username\">Username</FieldLabel>\n        <Input\n          id=\"form-tanstack-input-username\"\n          name={field.name}\n          value={field.state.value}\n          onBlur={field.handleBlur}\n          onChange={(e) => field.handleChange(e.target.value)}\n          aria-invalid={isInvalid}\n          placeholder=\"shadcn\"\n          autoComplete=\"username\"\n        />\n        <FieldDescription>\n          This is your public display name. Must be between 3 and 10 characters.\n          Must only contain letters, numbers, and underscores.\n        </FieldDescription>\n        {isInvalid && <FieldError errors={field.state.meta.errors} />}\n      </Field>\n    )\n  }}\n/>\n```\n\n### Textarea\n\n- For textarea fields, use `field.state.value` and `field.handleChange` on the `<Textarea />` component.\n- To show errors, add the `aria-invalid` prop to the `<Textarea />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-tanstack-textarea\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {6,13-16,24}\n<form.Field\n  name=\"about\"\n  children={(field) => {\n    const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid\n    return (\n      <Field data-invalid={isInvalid}>\n        <FieldLabel htmlFor=\"form-tanstack-textarea-about\">\n          More about you\n        </FieldLabel>\n        <Textarea\n          id=\"form-tanstack-textarea-about\"\n          name={field.name}\n          value={field.state.value}\n          onBlur={field.handleBlur}\n          onChange={(e) => field.handleChange(e.target.value)}\n          aria-invalid={isInvalid}\n          placeholder=\"I'm a software engineer...\"\n          className=\"min-h-[120px]\"\n        />\n        <FieldDescription>\n          Tell us more about yourself. This will be used to help us personalize\n          your experience.\n        </FieldDescription>\n        {isInvalid && <FieldError errors={field.state.meta.errors} />}\n      </Field>\n    )\n  }}\n/>\n```\n\n### Select\n\n- For select components, use `field.state.value` and `field.handleChange` on the `<Select />` component.\n- To show errors, add the `aria-invalid` prop to the `<SelectTrigger />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-tanstack-select\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {6,18-19,23}\n<form.Field\n  name=\"language\"\n  children={(field) => {\n    const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid\n    return (\n      <Field orientation=\"responsive\" data-invalid={isInvalid}>\n        <FieldContent>\n          <FieldLabel htmlFor=\"form-tanstack-select-language\">\n            Spoken Language\n          </FieldLabel>\n          <FieldDescription>\n            For best results, select the language you speak.\n          </FieldDescription>\n          {isInvalid && <FieldError errors={field.state.meta.errors} />}\n        </FieldContent>\n        <Select\n          name={field.name}\n          value={field.state.value}\n          onValueChange={field.handleChange}\n        >\n          <SelectTrigger\n            id=\"form-tanstack-select-language\"\n            aria-invalid={isInvalid}\n            className=\"min-w-[120px]\"\n          >\n            <SelectValue placeholder=\"Select\" />\n          </SelectTrigger>\n          <SelectContent position=\"item-aligned\">\n            <SelectItem value=\"auto\">Auto</SelectItem>\n            <SelectItem value=\"en\">English</SelectItem>\n          </SelectContent>\n        </Select>\n      </Field>\n    )\n  }}\n/>\n```\n\n### Checkbox\n\n- For checkbox, use `field.state.value` and `field.handleChange` on the `<Checkbox />` component.\n- To show errors, add the `aria-invalid` prop to the `<Checkbox />` component and the `data-invalid` prop to the `<Field />` component.\n- For checkbox arrays, use `mode=\"array\"` on the `<form.Field />` component and TanStack Form's array helpers.\n- Remember to add `data-slot=\"checkbox-group\"` to the `<FieldGroup />` component for proper styling and spacing.\n\n<ComponentPreview\n  name=\"form-tanstack-checkbox\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {12,17,22-24,44}\n<form.Field\n  name=\"tasks\"\n  mode=\"array\"\n  children={(field) => {\n    const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid\n    return (\n      <FieldSet>\n        <FieldLegend variant=\"label\">Tasks</FieldLegend>\n        <FieldDescription>\n          Get notified when tasks you&apos;ve created have updates.\n        </FieldDescription>\n        <FieldGroup data-slot=\"checkbox-group\">\n          {tasks.map((task) => (\n            <Field\n              key={task.id}\n              orientation=\"horizontal\"\n              data-invalid={isInvalid}\n            >\n              <Checkbox\n                id={`form-tanstack-checkbox-${task.id}`}\n                name={field.name}\n                aria-invalid={isInvalid}\n                checked={field.state.value.includes(task.id)}\n                onCheckedChange={(checked) => {\n                  if (checked) {\n                    field.pushValue(task.id)\n                  } else {\n                    const index = field.state.value.indexOf(task.id)\n                    if (index > -1) {\n                      field.removeValue(index)\n                    }\n                  }\n                }}\n              />\n              <FieldLabel\n                htmlFor={`form-tanstack-checkbox-${task.id}`}\n                className=\"font-normal\"\n              >\n                {task.label}\n              </FieldLabel>\n            </Field>\n          ))}\n        </FieldGroup>\n        {isInvalid && <FieldError errors={field.state.meta.errors} />}\n      </FieldSet>\n    )\n  }}\n/>\n```\n\n### Radio Group\n\n- For radio groups, use `field.state.value` and `field.handleChange` on the `<RadioGroup />` component.\n- To show errors, add the `aria-invalid` prop to the `<RadioGroupItem />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-tanstack-radiogroup\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {21,29,35}\n<form.Field\n  name=\"plan\"\n  children={(field) => {\n    const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid\n    return (\n      <FieldSet>\n        <FieldLegend>Plan</FieldLegend>\n        <FieldDescription>\n          You can upgrade or downgrade your plan at any time.\n        </FieldDescription>\n        <RadioGroup\n          name={field.name}\n          value={field.state.value}\n          onValueChange={field.handleChange}\n        >\n          {plans.map((plan) => (\n            <FieldLabel\n              key={plan.id}\n              htmlFor={`form-tanstack-radiogroup-${plan.id}`}\n            >\n              <Field orientation=\"horizontal\" data-invalid={isInvalid}>\n                <FieldContent>\n                  <FieldTitle>{plan.title}</FieldTitle>\n                  <FieldDescription>{plan.description}</FieldDescription>\n                </FieldContent>\n                <RadioGroupItem\n                  value={plan.id}\n                  id={`form-tanstack-radiogroup-${plan.id}`}\n                  aria-invalid={isInvalid}\n                />\n              </Field>\n            </FieldLabel>\n          ))}\n        </RadioGroup>\n        {isInvalid && <FieldError errors={field.state.meta.errors} />}\n      </FieldSet>\n    )\n  }}\n/>\n```\n\n### Switch\n\n- For switches, use `field.state.value` and `field.handleChange` on the `<Switch />` component.\n- To show errors, add the `aria-invalid` prop to the `<Switch />` component and the `data-invalid` prop to the `<Field />` component.\n\n<ComponentPreview\n  name=\"form-tanstack-switch\"\n  className=\"sm:[&_.preview]:h-[500px]\"\n  chromeLessOnMobile\n/>\n\n```tsx showLineNumbers title=\"form.tsx\" {6,14,19-21}\n<form.Field\n  name=\"twoFactor\"\n  children={(field) => {\n    const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid\n    return (\n      <Field orientation=\"horizontal\" data-invalid={isInvalid}>\n        <FieldContent>\n          <FieldLabel htmlFor=\"form-tanstack-switch-twoFactor\">\n            Multi-factor authentication\n          </FieldLabel>\n          <FieldDescription>\n            Enable multi-factor authentication to secure your account.\n          </FieldDescription>\n          {isInvalid && <FieldError errors={field.state.meta.errors} />}\n        </FieldContent>\n        <Switch\n          id=\"form-tanstack-switch-twoFactor\"\n          name={field.name}\n          checked={field.state.value}\n          onCheckedChange={field.handleChange}\n          aria-invalid={isInvalid}\n        />\n      </Field>\n    )\n  }}\n/>\n```\n\n### Complex Forms\n\nHere is an example of a more complex form with multiple fields and validation.\n\n<ComponentPreview\n  name=\"form-tanstack-complex\"\n  className=\"sm:[&_.preview]:h-[1100px]\"\n  chromeLessOnMobile\n/>\n\n## Resetting the Form\n\nUse `form.reset()` to reset the form to its default values.\n\n```tsx showLineNumbers\n<Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n  Reset\n</Button>\n```\n\n## Array Fields\n\nTanStack Form provides powerful array field management with `mode=\"array\"`. This allows you to dynamically add, remove, and update array items with full validation support.\n\n<ComponentPreview\n  name=\"form-tanstack-array\"\n  className=\"sm:[&_.preview]:h-[700px]\"\n  chromeLessOnMobile\n/>\n\nThis example demonstrates managing multiple email addresses with array fields. Users can add up to 5 email addresses, remove individual addresses, and each address is validated independently.\n\n### Array Field Structure\n\nUse `mode=\"array\"` on the parent field to enable array field management.\n\n```tsx showLineNumbers title=\"form.tsx\" {3,12-14}\n<form.Field\n  name=\"emails\"\n  mode=\"array\"\n  children={(field) => {\n    return (\n      <FieldSet>\n        <FieldLegend variant=\"label\">Email Addresses</FieldLegend>\n        <FieldDescription>\n          Add up to 5 email addresses where we can contact you.\n        </FieldDescription>\n        <FieldGroup>\n          {field.state.value.map((_, index) => (\n            // Nested field for each array item\n          ))}\n        </FieldGroup>\n      </FieldSet>\n    )\n  }}\n/>\n```\n\n### Nested Fields\n\nAccess individual array items using bracket notation: `fieldName[index].propertyName`. This example uses `InputGroup` to display the remove button inline with the input.\n\n```tsx showLineNumbers title=\"form.tsx\"\n<form.Field\n  name={`emails[${index}].address`}\n  children={(subField) => {\n    const isSubFieldInvalid =\n      subField.state.meta.isTouched && !subField.state.meta.isValid\n    return (\n      <Field orientation=\"horizontal\" data-invalid={isSubFieldInvalid}>\n        <FieldContent>\n          <InputGroup>\n            <InputGroupInput\n              id={`form-tanstack-array-email-${index}`}\n              name={subField.name}\n              value={subField.state.value}\n              onBlur={subField.handleBlur}\n              onChange={(e) => subField.handleChange(e.target.value)}\n              aria-invalid={isSubFieldInvalid}\n              placeholder=\"name@example.com\"\n              type=\"email\"\n            />\n            {field.state.value.length > 1 && (\n              <InputGroupAddon align=\"inline-end\">\n                <InputGroupButton\n                  type=\"button\"\n                  variant=\"ghost\"\n                  size=\"icon-xs\"\n                  onClick={() => field.removeValue(index)}\n                  aria-label={`Remove email ${index + 1}`}\n                >\n                  <XIcon />\n                </InputGroupButton>\n              </InputGroupAddon>\n            )}\n          </InputGroup>\n          {isSubFieldInvalid && (\n            <FieldError errors={subField.state.meta.errors} />\n          )}\n        </FieldContent>\n      </Field>\n    )\n  }}\n/>\n```\n\n### Adding Items\n\nUse `field.pushValue(item)` to add items to an array field. You can disable the button when the array reaches its maximum length.\n\n```tsx showLineNumbers title=\"form.tsx\"\n<Button\n  type=\"button\"\n  variant=\"outline\"\n  size=\"sm\"\n  onClick={() => field.pushValue({ address: \"\" })}\n  disabled={field.state.value.length >= 5}\n>\n  Add Email Address\n</Button>\n```\n\n### Removing Items\n\nUse `field.removeValue(index)` to remove items from an array field. You can conditionally show the remove button only when there's more than one item.\n\n```tsx showLineNumbers title=\"form.tsx\"\n{\n  field.state.value.length > 1 && (\n    <InputGroupButton\n      onClick={() => field.removeValue(index)}\n      aria-label={`Remove email ${index + 1}`}\n    >\n      <XIcon />\n    </InputGroupButton>\n  )\n}\n```\n\n### Array Validation\n\nValidate array fields using Zod's array methods.\n\n```tsx showLineNumbers title=\"form.tsx\"\nconst formSchema = z.object({\n  emails: z\n    .array(\n      z.object({\n        address: z.string().email(\"Enter a valid email address.\"),\n      })\n    )\n    .min(1, \"Add at least one email address.\")\n    .max(5, \"You can add up to 5 email addresses.\"),\n})\n```\n"
  },
  {
    "path": "apps/v4/content/docs/installation/astro.mdx",
    "content": "---\ntitle: Astro\ndescription: Install and configure shadcn/ui for Astro.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create) for a fully configured Astro app with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create project\n\nStart by creating a new Astro project:\n\n```bash\nnpx shadcn@latest init -t astro\n```\n\n**For a monorepo project, use `--monorepo` flag:**\n\n```bash\nnpx shadcn@latest init -t astro --monorepo\n```\n\n### Add Components\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThe command above will add the `Button` component to your project. You can then import it like this:\n\n```astro title=\"src/pages/index.astro\" {2,16} showLineNumbers\n---\nimport { Button } from \"@/components/ui/button\"\n---\n\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width\" />\n\t\t<link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\" />\n\t\t<meta name=\"generator\" content={Astro.generator} />\n\t\t<title>Astro + Tailwind CSS</title>\n\t</head>\n\n\t<body>\n\t\t<div class=\"grid place-items-center h-screen content-center\">\n\t\t\t<Button>Button</Button>\n\t\t</div>\n\t</body>\n</html>\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/gatsby.mdx",
    "content": "---\ntitle: Gatsby\ndescription: Install and configure shadcn/ui for Gatsby.\n---\n\n<Callout className=\"mb-6 border-blue-600 bg-blue-50 dark:border-blue-900 dark:bg-blue-950 [&_code]:bg-blue-100 dark:[&_code]:bg-blue-900\">\n  **Note:** This guide is for Gatsby with Tailwind CSS v3. For new projects, we\n  recommend using one of the other frameworks that support Tailwind CSS v4.\n</Callout>\n\n<Steps>\n\n### Create project\n\nStart by creating a new Gatsby project using `create-gatsby`:\n\n```bash\nnpm init gatsby\n```\n\n### Configure your Gatsby project to use TypeScript and Tailwind CSS\n\nYou will be asked a few questions to configure your project:\n\n```txt showLineNumbers\n✔ What would you like to call your site?\n· your-app-name\n✔ What would you like to name the folder where your site will be created?\n· your-app-name\n✔ Will you be using JavaScript or TypeScript?\n· TypeScript\n✔ Will you be using a CMS?\n· Choose whatever you want\n✔ Would you like to install a styling system?\n· Tailwind CSS\n✔ Would you like to install additional features with other plugins?\n· Choose whatever you want\n✔ Shall we do this? (Y/n) · Yes\n```\n\n### Edit tsconfig.json file\n\nAdd the following code to the `tsconfig.json` file to resolve paths:\n\n```ts {4-9} showLineNumbers\n{\n  \"compilerOptions\": {\n    // ...\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\n        \"./src/*\"\n      ]\n    }\n    // ...\n  }\n}\n```\n\n### Create gatsby-node.ts file\n\nCreate a `gatsby-node.ts` file at the root of your project if it doesn’t already exist, and add the code below to the `gatsby-node` file so your app can resolve paths:\n\n```ts\nimport * as path from \"path\"\n\nexport const onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    resolve: {\n      alias: {\n        \"@/components\": path.resolve(__dirname, \"src/components\"),\n        \"@/lib/utils\": path.resolve(__dirname, \"src/lib/utils\"),\n      },\n    },\n  })\n}\n```\n\n### Run the CLI\n\nRun the `shadcn` init command to set up your project:\n\n```bash\nnpx shadcn@latest init\n```\n\n### That's it\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThe command above will add the `Button` component to your project. You can then import it like this:\n\n```tsx {1,6} showLineNumbers\nimport { Button } from \"@/components/ui/button\"\n\nexport default function Home() {\n  return (\n    <div>\n      <Button>Click me</Button>\n    </div>\n  )\n}\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/index.mdx",
    "content": "---\ntitle: Installation\ndescription: How to install dependencies and structure your app.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create) to scaffold a complete app with custom themes, components, and presets. For Next.js, Vite, Laravel, React Router, Astro, and TanStack Start.\n\n</Callout>\n\n## Quick Start\n\nRun the following command to create a new project with shadcn/ui:\n\n```bash\nnpx shadcn@latest init\n```\n\nThis will guide you through the process of creating a new project with shadcn/ui with your preferred framework, icon library, and theme.\n\n## Pick Your Framework\n\nStart by selecting your framework of choice. Then follow the instructions to install the dependencies and structure your app. shadcn/ui is built to work with all React frameworks.\n\n<div className=\"mt-8 grid gap-4 sm:grid-cols-2 sm:gap-6\">\n  <LinkedCard href=\"/docs/installation/next\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Next.js</title>\n      <path d=\"M11.5725 0c-.1763 0-.3098.0013-.3584.0067-.0516.0053-.2159.021-.3636.0328-3.4088.3073-6.6017 2.1463-8.624 4.9728C1.1004 6.584.3802 8.3666.1082 10.255c-.0962.659-.108.8537-.108 1.7474s.012 1.0884.108 1.7476c.652 4.506 3.8591 8.2919 8.2087 9.6945.7789.2511 1.6.4223 2.5337.5255.3636.04 1.9354.04 2.299 0 1.6117-.1783 2.9772-.577 4.3237-1.2643.2065-.1056.2464-.1337.2183-.1573-.0188-.0139-.8987-1.1938-1.9543-2.62l-1.919-2.592-2.4047-3.5583c-1.3231-1.9564-2.4117-3.556-2.4211-3.556-.0094-.0026-.0187 1.5787-.0235 3.509-.0067 3.3802-.0093 3.5162-.0516 3.596-.061.115-.108.1618-.2064.2134-.075.0374-.1408.0445-.495.0445h-.406l-.1078-.068a.4383.4383 0 01-.1572-.1712l-.0493-.1056.0053-4.703.0067-4.7054.0726-.0915c.0376-.0493.1174-.1125.1736-.143.0962-.047.1338-.0517.5396-.0517.4787 0 .5584.0187.6827.1547.0353.0377 1.3373 1.9987 2.895 4.3608a10760.433 10760.433 0 004.7344 7.1706l1.9002 2.8782.096-.0633c.8518-.5536 1.7525-1.3418 2.4657-2.1627 1.5179-1.7429 2.4963-3.868 2.8247-6.134.0961-.6591.1078-.854.1078-1.7475 0-.8937-.012-1.0884-.1078-1.7476-.6522-4.506-3.8592-8.2919-8.2087-9.6945-.7672-.2487-1.5836-.42-2.4985-.5232-.169-.0176-1.0835-.0366-1.6123-.037zm4.0685 7.217c.3473 0 .4082.0053.4857.047.1127.0562.204.1642.237.2767.0186.061.0234 1.3653.0186 4.3044l-.0067 4.2175-.7436-1.14-.7461-1.14v-3.066c0-1.982.0093-3.0963.0234-3.1502.0375-.1313.1196-.2346.2323-.2955.0961-.0494.1313-.054.4997-.054z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Next.js</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/installation/vite\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Vite</title>\n      <path d=\"m8.286 10.578.512-8.657a.306.306 0 0 1 .247-.282L17.377.006a.306.306 0 0 1 .353.385l-1.558 5.403a.306.306 0 0 0 .352.385l2.388-.46a.306.306 0 0 1 .332.438l-6.79 13.55-.123.19a.294.294 0 0 1-.252.14c-.177 0-.35-.152-.305-.369l1.095-5.301a.306.306 0 0 0-.388-.355l-1.433.435a.306.306 0 0 1-.389-.354l.69-3.375a.306.306 0 0 0-.37-.36l-2.32.536a.306.306 0 0 1-.374-.316zm14.976-7.926L17.284 3.74l-.544 1.887 2.077-.4a.8.8 0 0 1 .84.369.8.8 0 0 1 .034.783L12.9 19.93l-.013.025-.015.023-.122.19a.801.801 0 0 1-.672.37.826.826 0 0 1-.634-.302.8.8 0 0 1-.16-.67l1.029-4.981-1.12.34a.81.81 0 0 1-.86-.262.802.802 0 0 1-.165-.67l.63-3.08-2.027.468a.808.808 0 0 1-.768-.233.81.81 0 0 1-.217-.6l.389-6.57-7.44-1.33a.612.612 0 0 0-.64.906L11.58 23.691a.612.612 0 0 0 1.066-.004l11.26-20.135a.612.612 0 0 0-.644-.9z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Vite</p>\n  </LinkedCard>\n\n<LinkedCard href=\"/docs/installation/tanstack\">\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 24 24\"\n    className=\"h-10 w-10\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M6.93 13.688a.343.343 0 0 1 .468.132l.063.106c.48.851.98 1.66 1.5 2.426a35.65 35.65 0 0 0 2.074 2.742.345.345 0 0 1-.039.484l-.074.066c-2.543 2.223-4.191 2.665-4.953 1.333-.746-1.305-.477-3.672.808-7.11a.344.344 0 0 1 .153-.18ZM17.75 16.3a.34.34 0 0 1 .395.27l.02.1c.628 3.286.187 4.93-1.325 4.93-1.48 0-3.36-1.402-5.649-4.203a.327.327 0 0 1-.074-.222c0-.188.156-.34.344-.34h.121a32.984 32.984 0 0 0 2.809-.098c1.07-.086 2.191-.23 3.359-.437zm.871-6.977a.353.353 0 0 1 .445-.21l.102.034c3.262 1.11 4.504 2.332 3.719 3.664-.766 1.305-2.993 2.254-6.684 2.848a.362.362 0 0 1-.238-.047.343.343 0 0 1-.125-.476l.062-.106a34.07 34.07 0 0 0 1.367-2.523c.477-.989.93-2.051 1.352-3.184zM7.797 8.34a.362.362 0 0 1 .238.047.343.343 0 0 1 .125.476l-.062.106a34.088 34.088 0 0 0-1.367 2.523c-.477.988-.93 2.051-1.352 3.184a.353.353 0 0 1-.445.21l-.102-.034C1.57 13.742.328 12.52 1.113 11.188 1.88 9.883 4.106 8.934 7.797 8.34Zm5.281-3.984c2.543-2.223 4.192-2.664 4.953-1.332.746 1.304.477 3.671-.808 7.109a.344.344 0 0 1-.153.18.343.343 0 0 1-.468-.133l-.063-.106a34.64 34.64 0 0 0-1.5-2.426 35.65 35.65 0 0 0-2.074-2.742.345.345 0 0 1 .039-.484ZM7.285 2.274c1.48 0 3.364 1.402 5.649 4.203a.349.349 0 0 1 .078.218.348.348 0 0 1-.348.344l-.117-.004a34.584 34.584 0 0 0-2.809.102 35.54 35.54 0 0 0-3.363.437.343.343 0 0 1-.394-.273l-.02-.098c-.629-3.285-.188-4.93 1.324-4.93Zm2.871 5.812h3.688a.638.638 0 0 1 .55.316l1.848 3.22a.644.644 0 0 1 0 .628l-1.847 3.223a.638.638 0 0 1-.551.316h-3.688a.627.627 0 0 1-.547-.316L7.758 12.25a.644.644 0 0 1 0-.629L9.61 8.402a.627.627 0 0 1 .546-.316Zm3.23.793a.638.638 0 0 1 .552.316l1.39 2.426a.644.644 0 0 1 0 .629l-1.39 2.43a.638.638 0 0 1-.551.316h-2.774a.627.627 0 0 1-.546-.316l-1.395-2.43a.644.644 0 0 1 0-.629l1.395-2.426a.627.627 0 0 1 .546-.316Zm-.491.867h-1.79a.624.624 0 0 0-.546.316l-.899 1.56a.644.644 0 0 0 0 .628l.899 1.563a.632.632 0 0 0 .547.316h1.789a.632.632 0 0 0 .547-.316l.898-1.563a.644.644 0 0 0 0-.629l-.898-1.558a.624.624 0 0 0-.547-.317Zm-.477.828c.227 0 .438.121.547.317l.422.73a.625.625 0 0 1 0 .629l-.422.734a.627.627 0 0 1-.547.317h-.836a.632.632 0 0 1-.547-.317l-.422-.734a.625.625 0 0 1 0-.629l.422-.73a.632.632 0 0 1 .547-.317zm-.418.817a.548.548 0 0 0-.473.273.547.547 0 0 0 0 .547.544.544 0 0 0 .473.27.544.544 0 0 0 .473-.27.547.547 0 0 0 0-.547.548.548 0 0 0-.473-.273Zm-4.422.546h.98M18.98 7.75c.391-1.895.477-3.344.223-4.398-.148-.63-.422-1.137-.84-1.508-.441-.39-1-.582-1.625-.582-1.035 0-2.12.472-3.281 1.367a14.9 14.9 0 0 0-1.473 1.316 1.206 1.206 0 0 0-.136-.144c-1.446-1.285-2.66-2.082-3.7-2.39-.617-.184-1.195-.2-1.722-.024-.559.187-1.004.574-1.317 1.117-.515.894-.652 2.074-.46 3.527.078.59.214 1.235.402 1.934a1.119 1.119 0 0 0-.215.047C3.008 8.62 1.71 9.269.926 10.015c-.465.442-.77.938-.883 1.481-.113.578 0 1.156.312 1.7.516.894 1.465 1.597 2.817 2.155.543.223 1.156.426 1.844.61a1.023 1.023 0 0 0-.07.226c-.391 1.891-.477 3.344-.223 4.395.148.629.425 1.14.84 1.508.44.39 1 .582 1.625.582 1.035 0 2.12-.473 3.28-1.364.477-.37.973-.816 1.489-1.336a1.2 1.2 0 0 0 .195.227c1.446 1.285 2.66 2.082 3.7 2.39.617.184 1.195.2 1.722.024.559-.187 1.004-.574 1.317-1.117.515-.894.652-2.074.46-3.527a14.941 14.941 0 0 0-.425-2.012 1.225 1.225 0 0 0 .238-.047c1.828-.61 3.125-1.258 3.91-2.004.465-.441.77-.937.883-1.48.113-.578 0-1.157-.313-1.7-.515-.894-1.464-1.597-2.816-2.156a14.576 14.576 0 0 0-1.906-.625.865.865 0 0 0 .059-.195z\" />\n  </svg>\n  <p className=\"mt-2 font-medium\">TanStack Start</p>\n</LinkedCard>\n<LinkedCard href=\"/docs/installation/laravel\">\n  <svg\n    role=\"img\"\n    viewBox=\"0 0 62 65\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className=\"h-10 w-10\"\n  >\n    <path d=\"M61.8548 14.6253C61.8778 14.7102 61.8895 14.7978 61.8897 14.8858V28.5615C61.8898 28.737 61.8434 28.9095 61.7554 29.0614C61.6675 29.2132 61.5409 29.3392 61.3887 29.4265L49.9104 36.0351V49.1337C49.9104 49.4902 49.7209 49.8192 49.4118 49.9987L25.4519 63.7916C25.3971 63.8227 25.3372 63.8427 25.2774 63.8639C25.255 63.8714 25.2338 63.8851 25.2101 63.8913C25.0426 63.9354 24.8666 63.9354 24.6991 63.8913C24.6716 63.8838 24.6467 63.8689 24.6205 63.8589C24.5657 63.8389 24.5084 63.8215 24.456 63.7916L0.501061 49.9987C0.348882 49.9113 0.222437 49.7853 0.134469 49.6334C0.0465019 49.4816 0.000120578 49.3092 0 49.1337L0 8.10652C0 8.01678 0.0124642 7.92953 0.0348998 7.84477C0.0423783 7.8161 0.0598282 7.78993 0.0697995 7.76126C0.0884958 7.70891 0.105946 7.65531 0.133367 7.6067C0.152063 7.5743 0.179485 7.54812 0.20192 7.51821C0.230588 7.47832 0.256763 7.43719 0.290416 7.40229C0.319084 7.37362 0.356476 7.35243 0.388883 7.32751C0.425029 7.29759 0.457436 7.26518 0.498568 7.2415L12.4779 0.345059C12.6296 0.257786 12.8015 0.211853 12.9765 0.211853C13.1515 0.211853 13.3234 0.257786 13.475 0.345059L25.4531 7.2415H25.4556C25.4955 7.26643 25.5292 7.29759 25.5653 7.32626C25.5977 7.35119 25.6339 7.37362 25.6625 7.40104C25.6974 7.43719 25.7224 7.47832 25.7523 7.51821C25.7735 7.54812 25.8021 7.5743 25.8196 7.6067C25.8483 7.65656 25.8645 7.70891 25.8844 7.76126C25.8944 7.78993 25.9118 7.8161 25.9193 7.84602C25.9423 7.93096 25.954 8.01853 25.9542 8.10652V33.7317L35.9355 27.9844V14.8846C35.9355 14.7973 35.948 14.7088 35.9704 14.6253C35.9792 14.5954 35.9954 14.5692 36.0053 14.5405C36.0253 14.4882 36.0427 14.4346 36.0702 14.386C36.0888 14.3536 36.1163 14.3274 36.1375 14.2975C36.1674 14.2576 36.1923 14.2165 36.2272 14.1816C36.2559 14.1529 36.292 14.1317 36.3244 14.1068C36.3618 14.0769 36.3942 14.0445 36.4341 14.0208L48.4147 7.12434C48.5663 7.03694 48.7383 6.99094 48.9133 6.99094C49.0883 6.99094 49.2602 7.03694 49.4118 7.12434L61.3899 14.0208C61.4323 14.0457 61.4647 14.0769 61.5021 14.1055C61.5333 14.1305 61.5694 14.1529 61.5981 14.1803C61.633 14.2165 61.6579 14.2576 61.6878 14.2975C61.7103 14.3274 61.7377 14.3536 61.7551 14.386C61.7838 14.4346 61.8 14.4882 61.8199 14.5405C61.8312 14.5692 61.8474 14.5954 61.8548 14.6253ZM59.893 27.9844V16.6121L55.7013 19.0252L49.9104 22.3593V33.7317L59.8942 27.9844H59.893ZM47.9149 48.5566V37.1768L42.2187 40.4299L25.953 49.7133V61.2003L47.9149 48.5566ZM1.99677 9.83281V48.5566L23.9562 61.199V49.7145L12.4841 43.2219L12.4804 43.2194L12.4754 43.2169C12.4368 43.1945 12.4044 43.1621 12.3682 43.1347C12.3371 43.1097 12.3009 43.0898 12.2735 43.0624L12.271 43.0586C12.2386 43.0275 12.2162 42.9888 12.1887 42.9539C12.1638 42.9203 12.1339 42.8916 12.114 42.8567L12.1127 42.853C12.0903 42.8156 12.0766 42.7707 12.0604 42.7283C12.0442 42.6909 12.023 42.656 12.013 42.6161C12.0005 42.5688 11.998 42.5177 11.9931 42.4691C11.9881 42.4317 11.9781 42.3943 11.9781 42.3569V15.5801L6.18848 12.2446L1.99677 9.83281ZM12.9777 2.36177L2.99764 8.10652L12.9752 13.8513L22.9541 8.10527L12.9752 2.36177H12.9777ZM18.1678 38.2138L23.9574 34.8809V9.83281L19.7657 12.2459L13.9749 15.5801V40.6281L18.1678 38.2138ZM48.9133 9.14105L38.9344 14.8858L48.9133 20.6305L58.8909 14.8846L48.9133 9.14105ZM47.9149 22.3593L42.124 19.0252L37.9323 16.6121V27.9844L43.7219 31.3174L47.9149 33.7317V22.3593ZM24.9533 47.987L39.59 39.631L46.9065 35.4555L36.9352 29.7145L25.4544 36.3242L14.9907 42.3482L24.9533 47.987Z\" />\n  </svg>\n  <p className=\"mt-2 font-medium\">Laravel</p>\n</LinkedCard>\n<LinkedCard href=\"/docs/installation/react-router\">\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 24 24\"\n    className=\"h-10 w-10\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M12.118 5.466a2.306 2.306 0 0 0-.623.08c-.278.067-.702.332-.953.583-.41.423-.49.609-.662 1.469-.08.423.41 1.43.847 1.734.45.317 1.085.502 2.065.608 1.429.16 1.84.636 1.84 2.197 0 1.377-.385 1.747-1.96 1.906-1.707.172-2.58.834-2.765 2.117-.106.781.41 1.76 1.125 2.091 1.627.768 3.15-.198 3.467-2.196.211-1.284.622-1.642 1.998-1.747 1.588-.133 2.409-.675 2.713-1.787.278-1.02-.304-2.157-1.297-2.554-.264-.106-.873-.238-1.35-.291-1.495-.16-1.879-.424-2.038-1.39-.225-1.337-.317-1.562-.794-2.09a2.174 2.174 0 0 0-1.613-.73zm-4.785 4.36a2.145 2.145 0 0 0-.497.048c-1.469.318-2.17 2.051-1.35 3.295 1.178 1.774 3.944.953 3.97-1.177.012-1.193-.98-2.143-2.123-2.166zM2.089 14.19a2.22 2.22 0 0 0-.427.052c-2.158.476-2.237 3.626-.106 4.182.53.145.582.145 1.111.013 1.191-.318 1.866-1.456 1.549-2.607-.278-1.02-1.144-1.664-2.127-1.64zm19.824.008c-.233.002-.477.058-.784.162-1.39.477-1.866 2.092-.98 3.336.557.794 1.96 1.058 2.82.516 1.416-.874 1.363-3.057-.093-3.746-.38-.186-.663-.271-.963-.268z\" />\n  </svg>\n  <p className=\"mt-2 font-medium\">React Router</p>\n</LinkedCard>\n<LinkedCard href=\"/docs/installation/astro\">\n  <svg\n    role=\"img\"\n    viewBox=\"0 0 24 24\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className=\"h-10 w-10\"\n    fill=\"currentColor\"\n  >\n    <title>Astro</title>\n    <path\n      d=\"M16.074 16.86C15.354 17.476 13.917 17.895 12.262 17.895C10.23 17.895 8.527 17.263 8.075 16.412C7.914 16.9 7.877 17.458 7.877 17.814C7.877 17.814 7.771 19.564 8.988 20.782C8.988 20.15 9.501 19.637 10.133 19.637C11.216 19.637 11.215 20.582 11.214 21.349V21.418C11.214 22.582 11.925 23.579 12.937 24C12.7812 23.6794 12.7005 23.3275 12.701 22.971C12.701 21.861 13.353 21.448 14.111 20.968C14.713 20.585 15.383 20.161 15.844 19.308C16.0926 18.8493 16.2225 18.3357 16.222 17.814C16.2221 17.4903 16.1722 17.1685 16.074 16.86ZM15.551 0.6C15.747 0.844 15.847 1.172 16.047 1.829L20.415 16.176C18.7743 15.3246 17.0134 14.7284 15.193 14.408L12.35 4.8C12.3273 4.72337 12.2803 4.65616 12.2162 4.60844C12.152 4.56072 12.0742 4.53505 11.9943 4.53528C11.9143 4.5355 11.8366 4.56161 11.7727 4.60969C11.7089 4.65777 11.6623 4.72524 11.64 4.802L8.83 14.405C7.00149 14.724 5.23264 15.3213 3.585 16.176L7.974 1.827C8.174 1.171 8.274 0.843 8.471 0.6C8.64406 0.385433 8.86922 0.218799 9.125 0.116C9.415 0 9.757 0 10.443 0H13.578C14.264 0 14.608 0 14.898 0.117C15.1529 0.219851 15.3783 0.386105 15.551 0.6Z\"\n      fill=\"currentColor\"\n    />\n  </svg>\n  <p className=\"mt-2 font-medium\">Astro</p>\n</LinkedCard>\n  <LinkedCard href=\"/docs/installation/manual\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>React</title>\n      <path d=\"M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Manual</p>\n  </LinkedCard>\n</div>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/laravel.mdx",
    "content": "---\ntitle: Laravel\ndescription: Install and configure shadcn/ui for Laravel.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create) for a fully configured Laravel app with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create Project\n\nStart by creating a new Laravel project with Inertia and React using the Laravel installer:\n\n```bash\nlaravel new my-app --react\n```\n\n### Run the shadcn/ui CLI\n\nRun the `init` command to configure shadcn/ui in your Laravel project:\n\n```bash\nnpx shadcn@latest init --force\n```\n\nIf asked to overwrite the existing components, answer `y` to continue.\n\n### Add Components\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add switch\n```\n\nThe command above will add the `Switch` component to `resources/js/components/ui/switch.tsx`. You can then import it like this:\n\n```tsx title=\"resources/js/pages/index.tsx\" {1,6} showLineNumbers\nimport { Switch } from \"@/components/ui/switch\"\n\nconst MyPage = () => {\n  return (\n    <div>\n      <Switch />\n    </div>\n  )\n}\n\nexport default MyPage\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/manual.mdx",
    "content": "---\ntitle: Manual Installation\ndescription: Add dependencies to your project manually.\n---\n\n<Steps>\n\n### Add Tailwind CSS\n\nComponents are styled using Tailwind CSS. You need to install Tailwind CSS in your project.\n\n[Follow the Tailwind CSS installation instructions to get started.](https://tailwindcss.com/docs/installation)\n\n### Add dependencies\n\nAdd the following dependencies to your project:\n\n```bash\nnpm install shadcn class-variance-authority clsx tailwind-merge lucide-react tw-animate-css\n```\n\n### Configure path aliases\n\nConfigure the path aliases in your `tsconfig.json` file.\n\n```json {3-6} title=\"tsconfig.json\" showLineNumbers\n{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  }\n}\n```\n\nThe `@` alias is a preference. You can use other aliases if you want.\n\n### Configure styles\n\nAdd the following to your styles/globals.css file. You can learn more about using CSS variables for theming in the [theming section](/docs/theming).\n\n<CodeCollapsibleWrapper>\n\n```css showLineNumbers title=\"src/styles/globals.css\"\n@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n\n@custom-variant dark (&:is(.dark *));\n\n@theme inline {\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  --color-card: var(--card);\n  --color-card-foreground: var(--card-foreground);\n  --color-popover: var(--popover);\n  --color-popover-foreground: var(--popover-foreground);\n  --color-primary: var(--primary);\n  --color-primary-foreground: var(--primary-foreground);\n  --color-secondary: var(--secondary);\n  --color-secondary-foreground: var(--secondary-foreground);\n  --color-muted: var(--muted);\n  --color-muted-foreground: var(--muted-foreground);\n  --color-accent: var(--accent);\n  --color-accent-foreground: var(--accent-foreground);\n  --color-destructive: var(--destructive);\n  --color-destructive-foreground: var(--destructive-foreground);\n  --color-border: var(--border);\n  --color-input: var(--input);\n  --color-ring: var(--ring);\n  --color-chart-1: var(--chart-1);\n  --color-chart-2: var(--chart-2);\n  --color-chart-3: var(--chart-3);\n  --color-chart-4: var(--chart-4);\n  --color-chart-5: var(--chart-5);\n  --radius-sm: calc(var(--radius) * 0.6);\n  --radius-md: calc(var(--radius) * 0.8);\n  --radius-lg: var(--radius);\n  --radius-xl: calc(var(--radius) * 1.4);\n  --radius-2xl: calc(var(--radius) * 1.8);\n  --radius-3xl: calc(var(--radius) * 2.2);\n  --radius-4xl: calc(var(--radius) * 2.6);\n  --color-sidebar: var(--sidebar);\n  --color-sidebar-foreground: var(--sidebar-foreground);\n  --color-sidebar-primary: var(--sidebar-primary);\n  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n  --color-sidebar-accent: var(--sidebar-accent);\n  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n  --color-sidebar-border: var(--sidebar-border);\n  --color-sidebar-ring: var(--sidebar-ring);\n}\n\n:root {\n  --radius: 0.625rem;\n  --background: oklch(1 0 0);\n  --foreground: oklch(0.145 0 0);\n  --card: oklch(1 0 0);\n  --card-foreground: oklch(0.145 0 0);\n  --popover: oklch(1 0 0);\n  --popover-foreground: oklch(0.145 0 0);\n  --primary: oklch(0.205 0 0);\n  --primary-foreground: oklch(0.985 0 0);\n  --secondary: oklch(0.97 0 0);\n  --secondary-foreground: oklch(0.205 0 0);\n  --muted: oklch(0.97 0 0);\n  --muted-foreground: oklch(0.556 0 0);\n  --accent: oklch(0.97 0 0);\n  --accent-foreground: oklch(0.205 0 0);\n  --destructive: oklch(0.577 0.245 27.325);\n  --border: oklch(0.922 0 0);\n  --input: oklch(0.922 0 0);\n  --ring: oklch(0.708 0 0);\n  --chart-1: oklch(0.646 0.222 41.116);\n  --chart-2: oklch(0.6 0.118 184.704);\n  --chart-3: oklch(0.398 0.07 227.392);\n  --chart-4: oklch(0.828 0.189 84.429);\n  --chart-5: oklch(0.769 0.188 70.08);\n  --sidebar: oklch(0.985 0 0);\n  --sidebar-foreground: oklch(0.145 0 0);\n  --sidebar-primary: oklch(0.205 0 0);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.97 0 0);\n  --sidebar-accent-foreground: oklch(0.205 0 0);\n  --sidebar-border: oklch(0.922 0 0);\n  --sidebar-ring: oklch(0.708 0 0);\n}\n\n.dark {\n  --background: oklch(0.145 0 0);\n  --foreground: oklch(0.985 0 0);\n  --card: oklch(0.205 0 0);\n  --card-foreground: oklch(0.985 0 0);\n  --popover: oklch(0.205 0 0);\n  --popover-foreground: oklch(0.985 0 0);\n  --primary: oklch(0.922 0 0);\n  --primary-foreground: oklch(0.205 0 0);\n  --secondary: oklch(0.269 0 0);\n  --secondary-foreground: oklch(0.985 0 0);\n  --muted: oklch(0.269 0 0);\n  --muted-foreground: oklch(0.708 0 0);\n  --accent: oklch(0.269 0 0);\n  --accent-foreground: oklch(0.985 0 0);\n  --destructive: oklch(0.704 0.191 22.216);\n  --border: oklch(1 0 0 / 10%);\n  --input: oklch(1 0 0 / 15%);\n  --ring: oklch(0.556 0 0);\n  --chart-1: oklch(0.488 0.243 264.376);\n  --chart-2: oklch(0.696 0.17 162.48);\n  --chart-3: oklch(0.769 0.188 70.08);\n  --chart-4: oklch(0.627 0.265 303.9);\n  --chart-5: oklch(0.645 0.246 16.439);\n  --sidebar: oklch(0.205 0 0);\n  --sidebar-foreground: oklch(0.985 0 0);\n  --sidebar-primary: oklch(0.488 0.243 264.376);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.269 0 0);\n  --sidebar-accent-foreground: oklch(0.985 0 0);\n  --sidebar-border: oklch(1 0 0 / 10%);\n  --sidebar-ring: oklch(0.556 0 0);\n}\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n```\n\n</CodeCollapsibleWrapper>\n\n### Add a cn helper\n\n```ts showLineNumbers title=\"lib/utils.ts\"\nimport { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n```\n\n### Create a `components.json` file\n\nCreate a `components.json` file in the root of your project.\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}\n```\n\n### That's it\n\nYou can now start adding components to your project.\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/meta.json",
    "content": "{\n  \"pages\": [\n    \"next\",\n    \"vite\",\n    \"laravel\",\n    \"react-router\",\n    \"remix\",\n    \"astro\",\n    \"tanstack\",\n    \"tanstack-router\",\n    \"manual\"\n  ]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/installation/next.mdx",
    "content": "---\ntitle: Next.js\ndescription: Install and configure shadcn/ui for Next.js.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create) for a fully configured Next.js app with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create Project\n\nRun the `init` command to create a new Next.js project or to set up an existing one:\n\n```bash\nnpx shadcn@latest init -t next\n```\n\n**For a monorepo project, use `--monorepo` flag:**\n\n```bash\nnpx shadcn@latest init -t next --monorepo\n```\n\n### Add Components\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThe command above will add the `Button` component to your project. You can then import it like this:\n\n```tsx {1,6} showLineNumbers title=\"app/page.tsx\"\nimport { Button } from \"@/components/ui/button\"\n\nexport default function Home() {\n  return (\n    <div>\n      <Button>Click me</Button>\n    </div>\n  )\n}\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/react-router.mdx",
    "content": "---\ntitle: React Router\ndescription: Install and configure shadcn/ui for React Router.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create) for a fully configured React Router app with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create project\n\n```bash\nnpx shadcn@latest init -t react-router\n```\n\n**For a monorepo project, use `--monorepo` flag:**\n\n```bash\nnpx shadcn@latest init -t react-router --monorepo\n```\n\n### Add Components\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThe command above will add the `Button` component to your project. You can then import it like this:\n\n```tsx showLineNumbers title=\"app/routes/home.tsx\"\nimport { Button } from \"@/components/ui/button\"\n\nimport type { Route } from \"./+types/home\"\n\nexport function meta({}: Route.MetaArgs) {\n  return [\n    { title: \"New React Router App\" },\n    { name: \"description\", content: \"Welcome to React Router!\" },\n  ]\n}\n\nexport default function Home() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center\">\n      <Button>Click me</Button>\n    </div>\n  )\n}\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/remix.mdx",
    "content": "---\ntitle: Remix\ndescription: Install and configure shadcn/ui for Remix.\n---\n\n<Callout>\n\n**Note:** This guide is for Remix. For React Router, see the [React Router](/docs/installation/react-router) guide.\n\n</Callout>\n\n<Steps>\n\n### Create project\n\nStart by creating a new Remix project using `create-remix`:\n\n```bash\nnpx create-remix@latest my-app\n```\n\n### Run the CLI\n\nRun the `shadcn` init command to set up your project:\n\n```bash\nnpx shadcn@latest init\n```\n\n### That's it\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThe command above will add the `Button` component to your project. You can then import it like this:\n\n```tsx {1,6} showLineNumbers title=\"app/routes/index.tsx\"\nimport { Button } from \"~/components/ui/button\"\n\nexport default function Home() {\n  return (\n    <div>\n      <Button>Click me</Button>\n    </div>\n  )\n}\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/tanstack-router.mdx",
    "content": "---\ntitle: TanStack Router\ndescription: Install and configure shadcn/ui for TanStack Router.\n---\n\n<Steps>\n\n### Create project\n\nStart by creating a new TanStack Router project:\n\n```bash\nnpx create-tsrouter-app@latest my-app --template file-router --tailwind --add-ons shadcn\n```\n\n### Add Components\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThe command above will add the `Button` component to your project. You can then import it like this:\n\n```tsx title=\"src/routes/index.tsx\" showLineNumbers {3,12}\nimport { createFileRoute } from \"@tanstack/react-router\"\n\nimport { Button } from \"@/components/ui/button\"\n\nexport const Route = createFileRoute(\"/\")({\n  component: App,\n})\n\nfunction App() {\n  return (\n    <div>\n      <Button>Click me</Button>\n    </div>\n  )\n}\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/tanstack.mdx",
    "content": "---\ntitle: TanStack Start\ndescription: Install and configure shadcn/ui for TanStack Start.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create) for a fully configured TanStack Start app with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create project\n\nRun the following command to create a new TanStack Start project with shadcn/ui:\n\n```bash\nnpx shadcn@latest init -t start\n```\n\n**For a monorepo project, use `--monorepo` flag:**\n\n```bash\nnpx shadcn@latest init -t start --monorepo\n```\n\n### Add Components\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThe command above will add the `Button` component to your project. You can then import it like this:\n\n```tsx title=\"app/routes/index.tsx\" showLineNumbers {1,6}\nimport { Button } from \"@/components/ui/button\"\n\nfunction App() {\n  return (\n    <div>\n      <Button>Click me</Button>\n    </div>\n  )\n}\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/installation/vite.mdx",
    "content": "---\ntitle: Vite\ndescription: Install and configure shadcn/ui for Vite.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting fresh?** Use [shadcn/create](/create) to configure a Vite project with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create Project\n\nRun the `init` command to create a new Vite project or to set up an existing one:\n\n```bash\nnpx shadcn@latest init -t vite\n```\n\n**For a monorepo project, use `--monorepo` flag:**\n\n```bash\nnpx shadcn@latest init -t vite --monorepo\n```\n\n### Add Components\n\nYou can now start adding components to your project.\n\n```bash\nnpx shadcn@latest add button\n```\n\nThe command above will add the `Button` component to your project. You can then import it like this:\n\n```tsx {1,6} showLineNumbers title=\"src/App.tsx\"\nimport { Button } from \"@/components/ui/button\"\n\nexport default function App() {\n  return (\n    <div>\n      <Button>Click me</Button>\n    </div>\n  )\n}\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/meta.json",
    "content": "{\n  \"root\": true,\n  \"pages\": [\n    \"components\",\n    \"(root)\",\n    \"changelog\",\n    \"forms\",\n    \"installation\",\n    \"dark-mode\",\n    \"rtl\",\n    \"registry\"\n  ]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/registry/authentication.mdx",
    "content": "---\ntitle: Authentication\ndescription: Secure your registry with authentication for private and personalized components.\n---\n\nAuthentication lets you run private registries, control who can access your components, and give different teams or users different content. This guide shows common authentication patterns and how to set them up.\n\nAuthentication enables these use cases:\n\n- **Private Components**: Keep your business logic and internal components secure\n- **Team-Specific Resources**: Give different teams different components\n- **Access Control**: Limit who can see sensitive or experimental components\n- **Usage Analytics**: See who's using which components in your organization\n- **Licensing**: Control who gets premium or licensed components\n\n## Common Authentication Patterns\n\n### Token-Based Authentication\n\nThe most common approach uses Bearer tokens or API keys:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@private\": {\n      \"url\": \"https://registry.company.com/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REGISTRY_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\nSet your token in environment variables:\n\n```bash title=\".env.local\"\nREGISTRY_TOKEN=your_secret_token_here\n```\n\n### API Key Authentication\n\nSome registries use API keys in headers:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@company\": {\n      \"url\": \"https://api.company.com/registry/{name}.json\",\n      \"headers\": {\n        \"X-API-Key\": \"${API_KEY}\",\n        \"X-Workspace-Id\": \"${WORKSPACE_ID}\"\n      }\n    }\n  }\n}\n```\n\n### Query Parameter Authentication\n\nFor simpler setups, use query parameters:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@internal\": {\n      \"url\": \"https://registry.company.com/{name}.json\",\n      \"params\": {\n        \"token\": \"${ACCESS_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\nThis creates: `https://registry.company.com/button.json?token=your_token`\n\n## Server-Side Implementation\n\nHere's how to add authentication to your registry server:\n\n### Next.js API Route Example\n\n```typescript title=\"app/api/registry/[name]/route.ts\"\nimport { NextRequest, NextResponse } from \"next/server\"\n\nexport async function GET(\n  request: NextRequest,\n  { params }: { params: { name: string } }\n) {\n  // Get token from Authorization header.\n  const authHeader = request.headers.get(\"authorization\")\n  const token = authHeader?.replace(\"Bearer \", \"\")\n\n  // Or from query parameters.\n  const queryToken = request.nextUrl.searchParams.get(\"token\")\n\n  // Check if token is valid.\n  if (!isValidToken(token || queryToken)) {\n    return NextResponse.json({ error: \"Unauthorized\" }, { status: 401 })\n  }\n\n  // Check if token can access this component.\n  if (!hasAccessToComponent(token, params.name)) {\n    return NextResponse.json({ error: \"Forbidden\" }, { status: 403 })\n  }\n\n  // Return the component.\n  const component = await getComponent(params.name)\n  return NextResponse.json(component)\n}\n\nfunction isValidToken(token: string | null) {\n  // Add your token validation logic here.\n  // Check against database, JWT validation, etc.\n  return token === process.env.VALID_TOKEN\n}\n\nfunction hasAccessToComponent(token: string, componentName: string) {\n  // Add role-based access control here.\n  // Check if token can access specific component.\n  return true // Your logic here.\n}\n```\n\n### Express.js Example\n\n```javascript title=\"server.js\"\napp.get(\"/registry/:name.json\", (req, res) => {\n  const token = req.headers.authorization?.replace(\"Bearer \", \"\")\n\n  if (!isValidToken(token)) {\n    return res.status(401).json({ error: \"Unauthorized\" })\n  }\n\n  const component = getComponent(req.params.name)\n  if (!component) {\n    return res.status(404).json({ error: \"Component not found\" })\n  }\n\n  res.json(component)\n})\n```\n\n## Advanced Authentication Patterns\n\n### Team-Based Access\n\nGive different teams different components:\n\n```typescript title=\"api/registry/route.ts\"\nasync function GET(request: NextRequest) {\n  const token = extractToken(request)\n  const team = await getTeamFromToken(token)\n\n  // Get components for this team.\n  const components = await getComponentsForTeam(team)\n  return NextResponse.json(components)\n}\n```\n\n### User-Personalized Registries\n\nGive users components based on their preferences:\n\n```typescript\nasync function GET(request: NextRequest) {\n  const user = await authenticateUser(request)\n\n  // Get user's style and framework preferences.\n  const preferences = await getUserPreferences(user.id)\n\n  // Get personalized component version.\n  const component = await getPersonalizedComponent(params.name, preferences)\n\n  return NextResponse.json(component)\n}\n```\n\n### Temporary Access Tokens\n\nUse expiring tokens for better security:\n\n```typescript\ninterface TemporaryToken {\n  token: string\n  expiresAt: Date\n  scope: string[]\n}\n\nasync function validateTemporaryToken(token: string) {\n  const tokenData = await getTokenData(token)\n\n  if (!tokenData) return false\n  if (new Date() > tokenData.expiresAt) return false\n\n  return true\n}\n```\n\n## Multi-Registry Authentication\n\nWith [namespaced registries](/docs/registry/namespace), you can set up multiple registries with different authentication:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@public\": \"https://public.company.com/{name}.json\",\n    \"@internal\": {\n      \"url\": \"https://internal.company.com/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${INTERNAL_TOKEN}\"\n      }\n    },\n    \"@premium\": {\n      \"url\": \"https://premium.company.com/{name}.json\",\n      \"headers\": {\n        \"X-License-Key\": \"${LICENSE_KEY}\"\n      }\n    }\n  }\n}\n```\n\nThis lets you:\n\n- Mix public and private registries\n- Use different authentication per registry\n- Organize components by access level\n\n## Security Best Practices\n\n### Use Environment Variables\n\nNever commit tokens to version control. Always use environment variables:\n\n```bash title=\".env.local\"\nREGISTRY_TOKEN=your_secret_token_here\nAPI_KEY=your_api_key_here\n```\n\nThen reference them in `components.json`:\n\n```json\n{\n  \"registries\": {\n    \"@private\": {\n      \"url\": \"https://registry.company.com/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REGISTRY_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\n### Use HTTPS\n\nAlways use HTTPS URLs for registries to protect your tokens in transit:\n\n```json\n{\n  \"@secure\": \"https://registry.company.com/{name}.json\" // ✅\n  \"@insecure\": \"http://registry.company.com/{name}.json\" // ❌\n}\n```\n\n### Add Rate Limiting\n\nProtect your registry from abuse:\n\n```typescript\nimport rateLimit from \"express-rate-limit\"\n\nconst limiter = rateLimit({\n  windowMs: 15 * 60 * 1000, // 15 minutes\n  max: 100, // limit each IP to 100 requests per windowMs\n})\n\napp.use(\"/registry\", limiter)\n```\n\n### Rotate Tokens\n\nChange access tokens regularly:\n\n```typescript\n// Create new token with expiration.\nfunction generateToken() {\n  const token = crypto.randomBytes(32).toString(\"hex\")\n  const expiresAt = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000) // 30 days.\n\n  return { token, expiresAt }\n}\n```\n\n### Log Access\n\nTrack registry access for security and analytics:\n\n```typescript\nasync function logAccess(request: Request, component: string, userId: string) {\n  await db.accessLog.create({\n    timestamp: new Date(),\n    userId,\n    component,\n    ip: request.ip,\n    userAgent: request.headers[\"user-agent\"],\n  })\n}\n```\n\n## Testing Authentication\n\nTest your authenticated registry locally:\n\n```bash\n# Test with curl.\ncurl -H \"Authorization: Bearer your_token\" \\\n  https://registry.company.com/button.json\n\n# Test with the CLI.\nREGISTRY_TOKEN=your_token npx shadcn@latest add @private/button\n```\n\n## Error Handling\n\nThe shadcn CLI handles authentication errors gracefully:\n\n- **401 Unauthorized**: Token is invalid or missing\n- **403 Forbidden**: Token lacks permission for this resource\n- **429 Too Many Requests**: Rate limit exceeded\n\n### Custom Error Messages\n\nYour registry server can return custom error messages in the response body, and the CLI will display them to users:\n\n```typescript\n// Registry server returns custom error\nreturn NextResponse.json(\n  {\n    error: \"Unauthorized\",\n    message:\n      \"Your subscription has expired. Please renew at company.com/billing\",\n  },\n  { status: 403 }\n)\n```\n\nThe user will see:\n\n```txt\nYour subscription has expired. Please renew at company.com/billing\n```\n\nThis helps provide context-specific guidance:\n\n```typescript\n// Different error messages for different scenarios\nif (!token) {\n  return NextResponse.json(\n    {\n      error: \"Unauthorized\",\n      message:\n        \"Authentication required. Set REGISTRY_TOKEN in your .env.local file\",\n    },\n    { status: 401 }\n  )\n}\n\nif (isExpiredToken(token)) {\n  return NextResponse.json(\n    {\n      error: \"Unauthorized\",\n      message: \"Token expired. Request a new token at company.com/tokens\",\n    },\n    { status: 401 }\n  )\n}\n\nif (!hasTeamAccess(token, component)) {\n  return NextResponse.json(\n    {\n      error: \"Forbidden\",\n      message: `Component '${component}' is restricted to the Design team`,\n    },\n    { status: 403 }\n  )\n}\n```\n\n## Next Steps\n\nTo set up authentication with multiple registries and advanced patterns, see the [Namespaced Registries](/docs/registry/namespace) documentation. It covers:\n\n- Setting up multiple authenticated registries\n- Using different authentication per namespace\n- Cross-registry dependency resolution\n- Advanced authentication patterns\n"
  },
  {
    "path": "apps/v4/content/docs/registry/examples.mdx",
    "content": "---\ntitle: Examples\ndescription: \"Examples of registry items: styles, components, css vars, etc.\"\n---\n\n## registry:style\n\n### Custom style that extends shadcn/ui\n\nThe following registry item is a custom style that extends shadcn/ui. On `npx shadcn init`, it will:\n\n- Install `@tabler/icons-react` as a dependency.\n- Add the `login-01` block and `calendar` component to the project.\n- Add the `editor` from a remote registry.\n- Set the `font-sans` variable to `Inter, sans-serif`.\n- Install a `brand` color in light and dark mode.\n\n```json title=\"example-style.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example-style\",\n  \"type\": \"registry:style\",\n  \"dependencies\": [\"@tabler/icons-react\"],\n  \"registryDependencies\": [\n    \"login-01\",\n    \"calendar\",\n    \"https://example.com/r/editor.json\"\n  ],\n  \"cssVars\": {\n    \"theme\": {\n      \"font-sans\": \"Inter, sans-serif\"\n    },\n    \"light\": {\n      \"brand\": \"20 14.3% 4.1%\"\n    },\n    \"dark\": {\n      \"brand\": \"20 14.3% 4.1%\"\n    }\n  }\n}\n```\n\n### Custom style from scratch\n\nThe following registry item is a custom style that doesn't extend shadcn/ui. See the `extends: none` field.\n\nIt can be used to create a new style from scratch, i.e. custom components, css vars, dependencies, etc.\n\nOn `npx shadcn add`, the following will:\n\n- Install `tailwind-merge` and `clsx` as dependencies.\n- Add the `utils` registry item from the shadcn/ui registry.\n- Add the `button`, `input`, `label`, and `select` components from a remote registry.\n- Install new css vars: `main`, `bg`, `border`, `text`, `ring`.\n\n```json title=\"example-style.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"extends\": \"none\",\n  \"name\": \"new-style\",\n  \"type\": \"registry:style\",\n  \"dependencies\": [\"tailwind-merge\", \"clsx\"],\n  \"registryDependencies\": [\n    \"utils\",\n    \"https://example.com/r/button.json\",\n    \"https://example.com/r/input.json\",\n    \"https://example.com/r/label.json\",\n    \"https://example.com/r/select.json\"\n  ],\n  \"cssVars\": {\n    \"theme\": {\n      \"font-sans\": \"Inter, sans-serif\"\n    },\n    \"light\": {\n      \"main\": \"#88aaee\",\n      \"bg\": \"#dfe5f2\",\n      \"border\": \"#000\",\n      \"text\": \"#000\",\n      \"ring\": \"#000\"\n    },\n    \"dark\": {\n      \"main\": \"#88aaee\",\n      \"bg\": \"#272933\",\n      \"border\": \"#000\",\n      \"text\": \"#e6e6e6\",\n      \"ring\": \"#fff\"\n    }\n  }\n}\n```\n\n## registry:theme\n\n### Custom theme\n\n```json title=\"example-theme.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-theme\",\n  \"type\": \"registry:theme\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"primary\": \"oklch(0.546 0.245 262.881)\",\n      \"primary-foreground\": \"oklch(0.97 0.014 254.604)\",\n      \"ring\": \"oklch(0.746 0.16 232.661)\",\n      \"sidebar-primary\": \"oklch(0.546 0.245 262.881)\",\n      \"sidebar-primary-foreground\": \"oklch(0.97 0.014 254.604)\",\n      \"sidebar-ring\": \"oklch(0.746 0.16 232.661)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"primary\": \"oklch(0.707 0.165 254.624)\",\n      \"primary-foreground\": \"oklch(0.97 0.014 254.604)\",\n      \"ring\": \"oklch(0.707 0.165 254.624)\",\n      \"sidebar-primary\": \"oklch(0.707 0.165 254.624)\",\n      \"sidebar-primary-foreground\": \"oklch(0.97 0.014 254.604)\",\n      \"sidebar-ring\": \"oklch(0.707 0.165 254.624)\"\n    }\n  }\n}\n```\n\n### Custom colors\n\nThe following style will init using shadcn/ui defaults and then add a custom `brand` color.\n\n```json title=\"example-style.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-style\",\n  \"type\": \"registry:style\",\n  \"cssVars\": {\n    \"light\": {\n      \"brand\": \"oklch(0.99 0.00 0)\"\n    },\n    \"dark\": {\n      \"brand\": \"oklch(0.14 0.00 286)\"\n    }\n  }\n}\n```\n\n## registry:block\n\n### Custom block\n\nThis block installs the `login-01` block from the shadcn/ui registry.\n\n```json title=\"login-01.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"type\": \"registry:block\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } ...\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-01/components/login-form.tsx\",\n      \"content\": \"...\",\n      \"type\": \"registry:component\"\n    }\n  ]\n}\n```\n\n### Install a block and override primitives\n\nYou can install a block from the shadcn/ui registry and override the primitives using your custom ones.\n\nOn `npx shadcn add`, the following will:\n\n- Add the `login-01` block from the shadcn/ui registry.\n- Override the `button`, `input`, and `label` primitives with the ones from the remote registry.\n\n```json title=\"example-style.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-login\",\n  \"type\": \"registry:block\",\n  \"registryDependencies\": [\n    \"login-01\",\n    \"https://example.com/r/button.json\",\n    \"https://example.com/r/input.json\",\n    \"https://example.com/r/label.json\"\n  ]\n}\n```\n\n## registry:ui\n\n### UI component\n\nA `registry:ui` item is a reusable UI component. It can have dependencies, registry dependencies, and CSS variables.\n\n```json title=\"button.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"type\": \"registry:ui\",\n  \"dependencies\": [\"radix-ui\"],\n  \"files\": [\n    {\n      \"path\": \"ui/button.tsx\",\n      \"content\": \"...\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n```\n\n### UI component with CSS variables\n\n```json title=\"sidebar.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"type\": \"registry:ui\",\n  \"dependencies\": [\"radix-ui\"],\n  \"registryDependencies\": [\"button\", \"separator\", \"sheet\", \"tooltip\"],\n  \"files\": [\n    {\n      \"path\": \"ui/sidebar.tsx\",\n      \"content\": \"...\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"cssVars\": {\n    \"light\": {\n      \"sidebar-background\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\"\n    },\n    \"dark\": {\n      \"sidebar-background\": \"oklch(0.141 0.005 285.823)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(0.274 0.006 286.033)\"\n    }\n  }\n}\n```\n\n## registry:lib\n\n### Utility library\n\nA `registry:lib` item is a utility library. Use it to share helper functions, constants, or other non-component code.\n\n```json title=\"utils.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"type\": \"registry:lib\",\n  \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n  \"files\": [\n    {\n      \"path\": \"lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\",\n      \"type\": \"registry:lib\"\n    }\n  ]\n}\n```\n\n## registry:hook\n\n### Custom hook\n\nA `registry:hook` item is a custom React hook.\n\n```json title=\"use-mobile.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"type\": \"registry:hook\",\n  \"files\": [\n    {\n      \"path\": \"hooks/use-mobile.ts\",\n      \"content\": \"...\",\n      \"type\": \"registry:hook\"\n    }\n  ]\n}\n```\n\n### Hook with dependencies\n\n```json title=\"use-debounce.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-debounce\",\n  \"type\": \"registry:hook\",\n  \"dependencies\": [\"react\"],\n  \"files\": [\n    {\n      \"path\": \"hooks/use-debounce.ts\",\n      \"content\": \"...\",\n      \"type\": \"registry:hook\"\n    }\n  ]\n}\n```\n\n## registry:font\n\n### Custom font\n\nA `registry:font` item installs a Google Font. The `font` field is required and configures the font family, provider, import name, and CSS variable.\n\n```json title=\"font-inter.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\"latin\"],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}\n```\n\n### Monospace font\n\n```json title=\"font-jetbrains-mono.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"weight\": [\"400\", \"500\", \"600\", \"700\"],\n    \"subsets\": [\"latin\"],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}\n```\n\n### Serif font\n\n```json title=\"font-lora.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\"latin\"],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}\n```\n\n### Font with custom selector\n\nUse the `selector` field to apply a font to specific CSS selectors instead of globally on `html`. This is useful for heading fonts or other targeted font applications.\n\n```json title=\"font-playfair-display.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\"latin\"],\n    \"selector\": \"h1, h2, h3, h4, h5, h6\",\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}\n```\n\nWhen `selector` is set, the font utility class (e.g. `font-heading`) is applied via CSS `@apply` on the specified selector within `@layer base`, instead of being added to the `<html>` element. The CSS variable is still injected on `<html>` so it's available globally.\n\n## registry:base\n\n### Custom base\n\nA `registry:base` item is a complete design system base. It defines the full set of dependencies, CSS variables, and configuration for a project. The `config` field is unique to `registry:base` items.\n\nThe `config` field accepts the following properties (all optional):\n\n| Property             | Type                                                                         | Description                                                     |\n| -------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------- |\n| `style`              | `string`                                                                     | The style name for the base.                                    |\n| `iconLibrary`        | `string`                                                                     | The icon library to use (e.g. `lucide`).                        |\n| `rsc`                | `boolean`                                                                    | Whether to enable React Server Components. Defaults to `false`. |\n| `tsx`                | `boolean`                                                                    | Whether to use TypeScript. Defaults to `true`.                  |\n| `rtl`                | `boolean`                                                                    | Whether to enable right-to-left support. Defaults to `false`.   |\n| `menuColor`          | `\"default\" \\| \"inverted\" \\| \"default-translucent\" \\| \"inverted-translucent\"` | The menu color scheme. Defaults to `\"default\"`.                 |\n| `menuAccent`         | `\"subtle\" \\| \"bold\"`                                                         | The menu accent style. Defaults to `\"subtle\"`.                  |\n| `tailwind.baseColor` | `string`                                                                     | The base color name (e.g. `neutral`, `slate`, `zinc`).          |\n| `tailwind.css`       | `string`                                                                     | Path to the Tailwind CSS file.                                  |\n| `tailwind.prefix`    | `string`                                                                     | A prefix to add to all Tailwind classes.                        |\n| `aliases.components` | `string`                                                                     | Import alias for components.                                    |\n| `aliases.utils`      | `string`                                                                     | Import alias for utilities.                                     |\n| `aliases.ui`         | `string`                                                                     | Import alias for UI components.                                 |\n| `aliases.lib`        | `string`                                                                     | Import alias for lib.                                           |\n| `aliases.hooks`      | `string`                                                                     | Import alias for hooks.                                         |\n| `registries`         | `Record<string, string \\| object>`                                           | Custom registry URLs. Keys must start with `@`.                 |\n\n```json title=\"custom-base.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-base\",\n  \"type\": \"registry:base\",\n  \"config\": {\n    \"style\": \"custom-base\",\n    \"iconLibrary\": \"lucide\",\n    \"tailwind\": {\n      \"baseColor\": \"neutral\"\n    }\n  },\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"tw-animate-css\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\"utils\", \"font-inter\"],\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"primary\": \"oklch(0.21 0.006 285.885)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.141 0.005 285.823)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.985 0 0)\",\n      \"primary-foreground\": \"oklch(0.21 0.006 285.885)\"\n    }\n  },\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  }\n}\n```\n\n### Base from scratch\n\nUse `extends: none` to create a base that doesn't extend shadcn/ui defaults.\n\n```json title=\"custom-base.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"my-design-system\",\n  \"extends\": \"none\",\n  \"type\": \"registry:base\",\n  \"config\": {\n    \"style\": \"my-design-system\",\n    \"iconLibrary\": \"lucide\",\n    \"tailwind\": {\n      \"baseColor\": \"slate\"\n    }\n  },\n  \"dependencies\": [\"tailwind-merge\", \"clsx\", \"tw-animate-css\", \"lucide-react\"],\n  \"registryDependencies\": [\"utils\", \"font-geist\"],\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.141 0.005 285.823)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.141 0.005 285.823)\",\n      \"foreground\": \"oklch(0.985 0 0)\"\n    }\n  }\n}\n```\n\n## Common Fields\n\n### Author\n\nUse the `author` field to add attribution to your registry items.\n\n```json title=\"example-item.json\" showLineNumbers {5}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-component\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn\",\n  \"files\": [\n    {\n      \"path\": \"ui/custom-component.tsx\",\n      \"content\": \"...\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n```\n\n### Dev dependencies\n\nUse the `devDependencies` field to install packages as dev dependencies.\n\n```json title=\"example-item.json\" showLineNumbers {5}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-item\",\n  \"type\": \"registry:item\",\n  \"devDependencies\": [\"@types/mdx\"],\n  \"files\": [\n    {\n      \"path\": \"lib/mdx.ts\",\n      \"content\": \"...\",\n      \"type\": \"registry:lib\"\n    }\n  ]\n}\n```\n\n### Metadata\n\nUse the `meta` field to attach arbitrary metadata to your registry items. This can be used to store custom data that your tools or scripts can use.\n\n```json title=\"example-item.json\" showLineNumbers {5-8}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-component\",\n  \"type\": \"registry:ui\",\n  \"meta\": {\n    \"category\": \"forms\",\n    \"version\": \"2.0.0\"\n  },\n  \"files\": [\n    {\n      \"path\": \"ui/custom-component.tsx\",\n      \"content\": \"...\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n```\n\n## CSS Variables\n\n### Custom Theme Variables\n\nAdd custom theme variables to the `theme` object.\n\n```json title=\"example-theme.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-theme\",\n  \"type\": \"registry:theme\",\n  \"cssVars\": {\n    \"theme\": {\n      \"font-heading\": \"Inter, sans-serif\",\n      \"shadow-card\": \"0 0 0 1px rgba(0, 0, 0, 0.1)\"\n    }\n  }\n}\n```\n\n### Override Tailwind CSS variables\n\n```json title=\"example-theme.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-theme\",\n  \"type\": \"registry:theme\",\n  \"cssVars\": {\n    \"theme\": {\n      \"spacing\": \"0.2rem\",\n      \"breakpoint-sm\": \"640px\",\n      \"breakpoint-md\": \"768px\",\n      \"breakpoint-lg\": \"1024px\",\n      \"breakpoint-xl\": \"1280px\",\n      \"breakpoint-2xl\": \"1536px\"\n    }\n  }\n}\n```\n\n## Add custom CSS\n\n### Base styles\n\n```json title=\"example-base.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-style\",\n  \"type\": \"registry:style\",\n  \"css\": {\n    \"@layer base\": {\n      \"h1\": {\n        \"font-size\": \"var(--text-2xl)\"\n      },\n      \"h2\": {\n        \"font-size\": \"var(--text-xl)\"\n      }\n    }\n  }\n}\n```\n\n### Components\n\n```json title=\"example-card.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-card\",\n  \"type\": \"registry:component\",\n  \"css\": {\n    \"@layer components\": {\n      \"card\": {\n        \"background-color\": \"var(--color-white)\",\n        \"border-radius\": \"var(--rounded-lg)\",\n        \"padding\": \"var(--spacing-6)\",\n        \"box-shadow\": \"var(--shadow-xl)\"\n      }\n    }\n  }\n}\n```\n\n## Add custom utilities\n\n### Simple utility\n\n```json title=\"example-component.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-component\",\n  \"type\": \"registry:component\",\n  \"css\": {\n    \"@utility content-auto\": {\n      \"content-visibility\": \"auto\"\n    }\n  }\n}\n```\n\n### Complex utility\n\n```json title=\"example-utility.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-component\",\n  \"type\": \"registry:component\",\n  \"css\": {\n    \"@utility scrollbar-hidden\": {\n      \"scrollbar-hidden\": {\n        \"&::-webkit-scrollbar\": {\n          \"display\": \"none\"\n        }\n      }\n    }\n  }\n}\n```\n\n### Functional utilities\n\n```json title=\"example-functional.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-component\",\n  \"type\": \"registry:component\",\n  \"css\": {\n    \"@utility tab-*\": {\n      \"tab-size\": \"var(--tab-size-*)\"\n    }\n  }\n}\n```\n\n## Add CSS imports\n\nUse `@import` to add CSS imports to your registry item. The imports will be placed at the top of the CSS file.\n\n### Basic import\n\n```json title=\"example-import.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-import\",\n  \"type\": \"registry:component\",\n  \"css\": {\n    \"@import \\\"tailwindcss\\\"\": {},\n    \"@import \\\"./styles/base.css\\\"\": {}\n  }\n}\n```\n\n### Import with url() syntax\n\n```json title=\"example-url-import.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-import\",\n  \"type\": \"registry:item\",\n  \"css\": {\n    \"@import url(\\\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\\\")\": {},\n    \"@import url('./local-styles.css')\": {}\n  }\n}\n```\n\n### Import with media queries\n\n```json title=\"example-media-import.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"responsive-import\",\n  \"type\": \"registry:item\",\n  \"css\": {\n    \"@import \\\"print-styles.css\\\" print\": {},\n    \"@import url(\\\"mobile.css\\\") screen and (max-width: 768px)\": {}\n  }\n}\n```\n\n## Add custom plugins\n\nUse `@plugin` to add Tailwind plugins to your registry item. Plugins will be automatically placed after imports and before other content.\n\n**Important:** When using plugins from npm packages, you must also add them to the `dependencies` array.\n\n### Basic plugin usage\n\n```json title=\"example-plugin.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-plugin\",\n  \"type\": \"registry:item\",\n  \"css\": {\n    \"@plugin \\\"@tailwindcss/typography\\\"\": {},\n    \"@plugin \\\"foo\\\"\": {}\n  }\n}\n```\n\n### Plugin with npm dependency\n\nWhen using plugins from npm packages like `@tailwindcss/typography`, include them in the dependencies.\n\n```json title=\"example-typography.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-component\",\n  \"type\": \"registry:item\",\n  \"dependencies\": [\"@tailwindcss/typography\"],\n  \"css\": {\n    \"@plugin \\\"@tailwindcss/typography\\\"\": {},\n    \"@layer components\": {\n      \".prose\": {\n        \"max-width\": \"65ch\"\n      }\n    }\n  }\n}\n```\n\n### Scoped and file-based plugins\n\n```json title=\"example-scoped-plugin.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scoped-plugins\",\n  \"type\": \"registry:component\",\n  \"css\": {\n    \"@plugin \\\"@headlessui/tailwindcss\\\"\": {},\n    \"@plugin \\\"tailwindcss/plugin\\\"\": {},\n    \"@plugin \\\"./custom-plugin.js\\\"\": {}\n  }\n}\n```\n\n### Multiple plugins with automatic ordering\n\nWhen you add multiple plugins, they are automatically grouped together and deduplicated.\n\n```json title=\"example-multiple-plugins.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"multiple-plugins\",\n  \"type\": \"registry:item\",\n  \"dependencies\": [\n    \"@tailwindcss/typography\",\n    \"@tailwindcss/forms\",\n    \"tw-animate-css\"\n  ],\n  \"css\": {\n    \"@plugin \\\"@tailwindcss/typography\\\"\": {},\n    \"@plugin \\\"@tailwindcss/forms\\\"\": {},\n    \"@plugin \\\"tw-animate-css\\\"\": {}\n  }\n}\n```\n\n## Combined imports and plugins\n\nWhen using both `@import` and `@plugin` directives, imports are placed first, followed by plugins, then other CSS content.\n\n```json title=\"example-combined.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combined-example\",\n  \"type\": \"registry:item\",\n  \"dependencies\": [\"@tailwindcss/typography\", \"tw-animate-css\"],\n  \"css\": {\n    \"@import \\\"tailwindcss\\\"\": {},\n    \"@import url(\\\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\\\")\": {},\n    \"@plugin \\\"@tailwindcss/typography\\\"\": {},\n    \"@plugin \\\"tw-animate-css\\\"\": {},\n    \"@layer base\": {\n      \"body\": {\n        \"font-family\": \"Inter, sans-serif\"\n      }\n    },\n    \"@utility content-auto\": {\n      \"content-visibility\": \"auto\"\n    }\n  }\n}\n```\n\n## Add custom animations\n\nNote: you need to define both `@keyframes` in css and `theme` in cssVars to use animations.\n\n```json title=\"example-component.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-component\",\n  \"type\": \"registry:component\",\n  \"cssVars\": {\n    \"theme\": {\n      \"--animate-wiggle\": \"wiggle 1s ease-in-out infinite\"\n    }\n  },\n  \"css\": {\n    \"@keyframes wiggle\": {\n      \"0%, 100%\": {\n        \"transform\": \"rotate(-3deg)\"\n      },\n      \"50%\": {\n        \"transform\": \"rotate(3deg)\"\n      }\n    }\n  }\n}\n```\n\n## Add environment variables\n\nYou can add environment variables using the `envVars` field.\n\n```json title=\"example-item.json\" showLineNumbers {5-9}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"custom-item\",\n  \"type\": \"registry:item\",\n  \"envVars\": {\n    \"NEXT_PUBLIC_APP_URL\": \"http://localhost:4000\",\n    \"DATABASE_URL\": \"postgresql://postgres:postgres@localhost:5432/postgres\",\n    \"OPENAI_API_KEY\": \"\"\n  }\n}\n```\n\nEnvironment variables are added to the `.env.local` or `.env` file. Existing variables are not overwritten.\n\n<Callout>\n\n**IMPORTANT:** Use `envVars` to add development or example variables. Do NOT use it to add production variables.\n\n</Callout>\n\n## Universal Items\n\nAs of `2.9.0`, you can create universal items that can be installed without framework detection or components.json.\n\nTo make an item universal i.e framework agnostic, all the files in the item must have an explicit target.\n\nHere's an example of a registry item that installs custom Cursor rules for _python_:\n\n```json title=\".cursor/rules/custom-python.mdc\" showLineNumbers {9}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"python-rules\",\n  \"type\": \"registry:item\",\n  \"files\": [\n    {\n      \"path\": \"/path/to/your/registry/default/custom-python.mdc\",\n      \"type\": \"registry:file\",\n      \"target\": \"~/.cursor/rules/custom-python.mdc\",\n      \"content\": \"...\"\n    }\n  ]\n}\n```\n\nHere's another example for installing a custom ESLint config:\n\n```json title=\".eslintrc.json\" showLineNumbers {9}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"my-eslint-config\",\n  \"type\": \"registry:item\",\n  \"files\": [\n    {\n      \"path\": \"/path/to/your/registry/default/custom-eslint.json\",\n      \"type\": \"registry:file\",\n      \"target\": \"~/.eslintrc.json\",\n      \"content\": \"...\"\n    }\n  ]\n}\n```\n\nYou can also have a universal item that installs multiple files:\n\n```json title=\"my-custom-starter-template.json\" showLineNumbers {9}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"my-custom-starter-template\",\n  \"type\": \"registry:item\",\n  \"dependencies\": [\"better-auth\"],\n  \"files\": [\n    {\n      \"path\": \"/path/to/file-01.json\",\n      \"type\": \"registry:file\",\n      \"target\": \"~/file-01.json\",\n      \"content\": \"...\"\n    },\n    {\n      \"path\": \"/path/to/file-02.vue\",\n      \"type\": \"registry:file\",\n      \"target\": \"~/pages/file-02.vue\",\n      \"content\": \"...\"\n    }\n  ]\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/registry/faq.mdx",
    "content": "---\ntitle: FAQ\ndescription: Frequently asked questions about running a registry.\n---\n\n## Frequently asked questions\n\n### What does a complex component look like?\n\nHere's an example of a complex component that installs a page, two components, a hook, a format-date utils and a config file.\n\n```json showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hello-world\",\n  \"title\": \"Hello World\",\n  \"type\": \"registry:block\",\n  \"description\": \"A complex hello world component\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york/hello-world/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/hello/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/components/hello-world.tsx\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/components/formatted-message.tsx\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/hooks/use-hello.ts\",\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/lib/format-date.ts\",\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/hello.config.ts\",\n      \"type\": \"registry:file\",\n      \"target\": \"~/hello.config.ts\"\n    }\n  ]\n}\n```\n\n### How do I add a new Tailwind color?\n\nTo add a new color you need to add it to `cssVars` under `light` and `dark` keys.\n\n```json showLineNumbers {10-18}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hello-world\",\n  \"title\": \"Hello World\",\n  \"type\": \"registry:block\",\n  \"description\": \"A complex hello world component\",\n  \"files\": [\n    // ...\n  ],\n  \"cssVars\": {\n    \"light\": {\n      \"brand-background\": \"oklch(0.205 0.015 18)\",\n      \"brand-accent\": \"oklch(0.205 0.015 18)\"\n    },\n    \"dark\": {\n      \"brand-background\": \"oklch(0.205 0.015 18)\",\n      \"brand-accent\": \"oklch(0.205 0.015 18)\"\n    }\n  }\n}\n```\n\nThe CLI will update the project CSS file. Once updated, the new colors will be available to be used as utility classes: `bg-brand` and `text-brand-accent`.\n\n### How do I add or override a Tailwind theme variable?\n\nTo add or override a theme variable you add it to `cssVars.theme` under the key you want to add or override.\n\n```json showLineNumbers {10-15}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hello-world\",\n  \"title\": \"Hello World\",\n  \"type\": \"registry:block\",\n  \"description\": \"A complex hello world component\",\n  \"files\": [\n    // ...\n  ],\n  \"cssVars\": {\n    \"theme\": {\n      \"text-base\": \"3rem\",\n      \"ease-in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n      \"font-heading\": \"Poppins, sans-serif\"\n    }\n  }\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/registry/getting-started.mdx",
    "content": "---\ntitle: Getting Started\ndescription: Learn how to get setup and run your own component registry.\n---\n\nThis guide will walk you through the process of setting up your own component registry. It assumes you already have a project with components and would like to turn it into a registry.\n\nIf you're starting a new registry project, you can use the [registry template](https://github.com/shadcn-ui/registry-template) as a starting point. We have already configured it for you.\n\n## Requirements\n\nYou are free to design and host your custom registry as you see fit. The only requirement is that your registry items must be valid JSON files that conform to the [registry-item schema specification](/docs/registry/registry-item-json).\n\nIf you'd like to see an example of a registry, we have a [template project](https://github.com/shadcn-ui/registry-template) for you to use as a starting point.\n\n## registry.json\n\nThe `registry.json` is the entry point for the registry. It contains the registry's name, homepage, and defines all the items present in the registry.\n\nYour registry must have this file (or JSON payload) present at the root of the registry endpoint. The registry endpoint is the URL where your registry is hosted.\n\nThe `shadcn` CLI will automatically generate this file for you when you run the `build` command.\n\n## Add a registry.json file\n\nCreate a `registry.json` file in the root of your project. Your project can be a Next.js, Vite, Vue, Svelte, PHP or any other framework as long as it supports serving JSON over HTTP.\n\n```json title=\"registry.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry.json\",\n  \"name\": \"acme\",\n  \"homepage\": \"https://acme.com\",\n  \"items\": [\n    // ...\n  ]\n}\n```\n\nThis `registry.json` file must conform to the [registry schema specification](/docs/registry/registry-json).\n\n## Add a registry item\n\n### Create your component\n\nAdd your first component. Here's an example of a simple `<HelloWorld />` component:\n\n```tsx title=\"registry/new-york/hello-world/hello-world.tsx\" showLineNumbers\nimport { Button } from \"@/components/ui/button\"\n\nexport function HelloWorld() {\n  return <Button>Hello World</Button>\n}\n```\n\n<Callout className=\"mt-6\">\n  **Note:** This example places the component in the `registry/new-york`\n  directory. You can place it anywhere in your project as long as you set the\n  correct path in the `registry.json` file and you follow the `registry/[NAME]`\n  directory structure.\n</Callout>\n\n```txt\nregistry\n└── new-york\n    └── hello-world\n        └── hello-world.tsx\n```\n\n### Add your component to the registry\n\nTo add your component to the registry, you need to add your component definition to `registry.json`.\n\n```json title=\"registry.json\" showLineNumbers {6-17}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry.json\",\n  \"name\": \"acme\",\n  \"homepage\": \"https://acme.com\",\n  \"items\": [\n    {\n      \"name\": \"hello-world\",\n      \"type\": \"registry:block\",\n      \"title\": \"Hello World\",\n      \"description\": \"A simple hello world component.\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/hello-world/hello-world.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    }\n  ]\n}\n```\n\nYou define your registry item by adding a `name`, `type`, `title`, `description` and `files`.\n\nFor every file you add, you must specify the `path` and `type` of the file. The `path` is the relative path to the file from the root of your project. The `type` is the type of the file.\n\nYou can read more about the registry item schema and file types in the [registry item schema docs](/docs/registry/registry-item-json).\n\n## Build your registry\n\n### Install the shadcn CLI\n\n```bash\nnpm install shadcn@latest\n```\n\n### Add a build script\n\nAdd a `registry:build` script to your `package.json` file.\n\n```json title=\"package.json\" showLineNumbers\n{\n  \"scripts\": {\n    \"registry:build\": \"shadcn build\"\n  }\n}\n```\n\n### Run the build script\n\nRun the build script to generate the registry JSON files.\n\n```bash\nnpm run registry:build\n```\n\n<Callout className=\"mt-6\">\n  **Note:** By default, the build script will generate the registry JSON files\n  in `public/r` e.g `public/r/hello-world.json`.\n\nYou can change the output directory by passing the `--output` option. See the [shadcn build command](/docs/cli#build) for more information.\n\n</Callout>\n\n## Serve your registry\n\nIf you're running your registry on Next.js, you can now serve your registry by running the `next` server. The command might differ for other frameworks.\n\n```bash\nnpm run dev\n```\n\nYour files will now be served at `http://localhost:3000/r/[NAME].json` eg. `http://localhost:3000/r/hello-world.json`.\n\n## Publish your registry\n\nTo make your registry available to other developers, you can publish it by deploying your project to a public URL.\n\n## Guidelines\n\nHere are some guidelines to follow when building components for a registry.\n\n- Place your registry item in the `registry/[STYLE]/[NAME]` directory. I'm using `new-york` as an example. It can be anything you want as long as it's nested under the `registry` directory.\n- The following properties are required for the block definition: `name`, `description`, `type` and `files`.\n- It is recommended to add a proper name and description to your registry item. This helps LLMs understand the component and its purpose.\n- Make sure to list all registry dependencies in `registryDependencies`. A registry dependency is the name of the component in the registry eg. `input`, `button`, `card`, etc or a URL to a registry item eg. `http://localhost:3000/r/editor.json`.\n- Make sure to list all dependencies in `dependencies`. A dependency is the name of the package in the registry eg. `zod`, `sonner`, etc. To set a version, you can use the `name@version` format eg. `zod@^3.20.0`.\n- **Imports should always use the `@/registry` path.** eg. `import { HelloWorld } from \"@/registry/new-york/hello-world/hello-world\"`\n- Ideally, place your files within a registry item in `components`, `hooks`, `lib` directories.\n\n## Install using the CLI\n\nTo install a registry item using the `shadcn` CLI, use the `add` command followed by the URL of the registry item.\n\n```bash\nnpx shadcn@latest add http://localhost:3000/r/hello-world.json\n```\n\nSee the [Namespaced\nRegistries](/docs/registry/namespace) docs for more information on\nhow to install registry items from a namespaced registry.\n"
  },
  {
    "path": "apps/v4/content/docs/registry/index.mdx",
    "content": "---\ntitle: Introduction\ndescription: Run your own code registry.\n---\n\nYou can use the `shadcn` CLI to run your own code registry. Running your own registry allows you to distribute your custom components, hooks, pages, config, rules and other files to any project.\n\n<Callout>\n  **Note:** The registry works with any project type and any framework, and is\n  not limited to React.\n</Callout>\n\n<figure className=\"flex flex-col gap-4\">\n  <Image\n    src=\"/images/registry-light.png\"\n    width=\"1432\"\n    height=\"960\"\n    alt=\"Registry\"\n    className=\"mt-6 w-full overflow-hidden rounded-lg border dark:hidden\"\n  />\n  <Image\n    src=\"/images/registry-dark.png\"\n    width=\"1432\"\n    height=\"960\"\n    alt=\"Registry\"\n    className=\"mt-6 hidden w-full overflow-hidden rounded-lg border shadow-sm dark:block\"\n  />\n  <figcaption className=\"text-center text-sm text-gray-500\">\n    A distribution system for code\n  </figcaption>\n</figure>\n\nReady to create your own registry? In the next section, we'll walk you through setting up your own custom registry step-by-step, from creating your first component to publishing it for others to use.\n\n<div className=\"mt-6 grid gap-4 sm:grid-cols-2\">\n  <LinkedCard href=\"/docs/registry/getting-started\" className=\"items-start text-sm md:p-6\">\n    <div className=\"font-medium\">Getting Started</div>\n    <div className=\"text-muted-foreground\">\n      Set up and build your own registry\n    </div>\n  </LinkedCard>\n\n<LinkedCard\n  href=\"/docs/registry/authentication\"\n  className=\"items-start text-sm md:p-6\"\n>\n  <div className=\"font-medium\">Authentication</div>\n  <div className=\"text-muted-foreground\">\n    Secure your registry with authentication\n  </div>\n</LinkedCard>\n<LinkedCard\n  href=\"/docs/registry/namespace\"\n  className=\"items-start text-sm md:p-6\"\n>\n  <div className=\"font-medium\">Namespaces</div>\n  <div className=\"text-muted-foreground\">\n    Configure registries with namespaces\n  </div>\n</LinkedCard>\n<LinkedCard\n  href=\"/docs/registry/examples\"\n  className=\"items-start text-sm md:p-6\"\n>\n  <div className=\"font-medium\">Examples</div>\n  <div className=\"text-muted-foreground\">\n    Registry item examples and configurations\n  </div>\n</LinkedCard>\n  <LinkedCard\n    href=\"/docs/registry/registry-json\"\n    className=\"items-start text-sm md:p-6\"\n  >\n    <div className=\"font-medium\">Schema</div>\n    <div className=\"text-muted-foreground\">\n      Schema specification for registry.json\n    </div>\n  </LinkedCard>\n</div>\n"
  },
  {
    "path": "apps/v4/content/docs/registry/mcp.mdx",
    "content": "---\ntitle: MCP Server\ndescription: MCP support for registry developers\n---\n\nThe [shadcn MCP server](/docs/mcp) works out of the box with any shadcn-compatible registry. You do not need to do anything special to enable MCP support for your registry.\n\n---\n\n## Prerequisites\n\nThe MCP server works by requesting your registry index. Make sure you have a registry item file at the root of your registry named `registry`.\n\nFor example, if your registry is hosted at `https://acme.com/r/[name].json`, you should have a file at `https://acme.com/r/registry.json` or `https://acme.com/r/registry` if you're using a JSON file extension.\n\nThis file must be a valid JSON file that conforms to the [registry schema](/docs/registry/registry-json).\n\n---\n\n## Configuring MCP\n\nAsk your registry consumers to configure your registry in their `components.json` file and install the shadcn MCP server:\n\n<Tabs defaultValue=\"claude\">\n  <TabsList>\n    <TabsTrigger value=\"claude\">Claude Code</TabsTrigger>\n    <TabsTrigger value=\"cursor\">Cursor</TabsTrigger>\n    <TabsTrigger value=\"vscode\">VS Code</TabsTrigger>\n    <TabsTrigger value=\"codex\">Codex</TabsTrigger>\n    <TabsTrigger value=\"opencode\">OpenCode</TabsTrigger>\n  </TabsList>\n  <TabsContent value=\"claude\" className=\"mt-4\">\n    **Configure your registry** in your `components.json` file:\n\n    ```json title=\"components.json\" showLineNumbers\n    {\n      \"registries\": {\n        \"@acme\": \"https://acme.com/r/{name}.json\"\n      }\n    }\n    ```\n\n    **Run the following command** in your project:\n\n    ```bash\n    npx shadcn@latest mcp init --client claude\n    ```\n\n    **Restart Claude Code** and try the following prompts:\n       - Show me the components in the acme registry\n       - Create a landing page using items from the acme registry\n\n    **Note:** You can use `/mcp` command in Claude Code to debug the MCP server.\n\n  </TabsContent>\n\n  <TabsContent value=\"cursor\" className=\"mt-4\">\n    **Configure your registry** in your `components.json` file:\n\n    ```json title=\"components.json\" showLineNumbers\n    {\n      \"registries\": {\n        \"@acme\": \"https://acme.com/r/{name}.json\"\n      }\n    }\n    ```\n    **Run the following command** in your project:\n       ```bash\n       npx shadcn@latest mcp init --client cursor\n       ```\n\n    Open **Cursor Settings** and **Enable the MCP server** for shadcn. Then try the following prompts:\n       - Show me the components in the acme registry\n       - Create a landing page using items from the acme registry\n\n  </TabsContent>\n\n  <TabsContent value=\"vscode\" className=\"mt-4\">\n    **Configure your registry** in your `components.json` file:\n\n    ```json title=\"components.json\" showLineNumbers\n    {\n      \"registries\": {\n        \"@acme\": \"https://acme.com/r/{name}.json\"\n      }\n    }\n    ```\n    **Run the following command** in your project:\n       ```bash\n       npx shadcn@latest mcp init --client vscode\n       ```\n\n    Open `.vscode/mcp.json` and click **Start** next to the shadcn server. Then try the following prompts with GitHub Copilot:\n       - Show me the components in the acme registry\n       - Create a landing page using items from the acme registry\n\n  </TabsContent>\n\n  <TabsContent value=\"codex\" className=\"mt-4\">\n    **Configure your registry** in your `components.json` file:\n\n    ```json title=\"components.json\" showLineNumbers\n    {\n      \"registries\": {\n        \"@acme\": \"https://acme.com/r/{name}.json\"\n      }\n    }\n    ```\n\n    **Add the following configuration** to `~/.codex/config.toml`:\n       ```toml\n       [mcp_servers.shadcn]\n       command = \"npx\"\n       args = [\"shadcn@latest\", \"mcp\"]\n       ```\n\n    **Restart Codex** and try the following prompts:\n       - Show me the components in the acme registry\n       - Create a landing page using items from the acme registry\n\n  </TabsContent>\n\n  <TabsContent value=\"opencode\" className=\"mt-4\">\n    **Configure your registry** in your `components.json` file:\n\n    ```json title=\"components.json\" showLineNumbers\n    {\n      \"registries\": {\n        \"@acme\": \"https://acme.com/r/{name}.json\"\n      }\n    }\n    ```\n\n    **Run the following command** in your project:\n       ```bash\n       npx shadcn@latest mcp init --client opencode\n       ```\n\n    **Restart OpenCode** and try the following prompts:\n       - Show me the components in the acme registry\n       - Create a landing page using items from the acme registry\n\n  </TabsContent>\n</Tabs>\n\nYou can read more about the MCP server in the [MCP documentation](/docs/mcp).\n\n---\n\n## Best Practices\n\nHere are some best practices for MCP-compatible registries:\n\n1. **Clear Descriptions**: Add concise, informative descriptions that help AI assistants understand what a registry item is for and how to use it.\n2. **Proper Dependencies**: List all `dependencies` accurately so MCP can install them automatically.\n3. **Registry Dependencies**: Use `registryDependencies` to indicate relationships between items.\n4. **Consistent Naming**: Use kebab-case for component names and maintain consistency across your registry.\n"
  },
  {
    "path": "apps/v4/content/docs/registry/meta.json",
    "content": "{\n  \"title\": \"Registry\",\n  \"pages\": [\n    \"index\",\n    \"getting-started\",\n    \"namespace\",\n    \"authentication\",\n    \"examples\",\n    \"mcp\",\n    \"registry-index\",\n    \"open-in-v0\",\n    \"registry-json\",\n    \"registry-item-json\"\n  ]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/registry/namespace.mdx",
    "content": "---\ntitle: Namespaces\ndescription: Configure and use multiple resource registries with namespace support.\n---\n\nNamespaced registries let you configure multiple resource sources in one project. This means you can install components, libraries, utilities, AI prompts, configuration files, and other resources from various registries, whether they're public, third-party, or your own custom private libraries.\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Decentralized Namespace System](#decentralized-namespace-system)\n- [Getting Started](#getting-started)\n- [Registry Naming Convention](#registry-naming-convention)\n- [Configuration](#configuration)\n- [Authentication & Security](#authentication--security)\n- [Versioning](#versioning)\n- [Dependency Resolution](#dependency-resolution)\n- [Built-in Registries](#built-in-registries)\n- [CLI Commands](#cli-commands)\n- [Error Handling](#error-handling)\n- [Creating Your Own Registry](#creating-your-own-registry)\n- [Example Configurations](#example-configurations)\n- [Technical Details](#technical-details)\n- [Best Practices](#best-practices)\n- [Troubleshooting](#troubleshooting)\n\n---\n\n## Overview\n\nRegistry namespaces are prefixed with `@` and provide a way to organize and reference resources from different sources. Resources can be any type of content: components, libraries, utilities, hooks, AI prompts, configuration files, themes, and more. For example:\n\n- `@shadcn/button` - UI component from the shadcn registry\n- `@v0/dashboard` - Dashboard component from the v0 registry\n- `@ai-elements/input` - AI prompt input from an AI elements registry\n- `@acme/auth-utils` - Authentication utilities from your company's private registry\n- `@ai/chatbot-rules` - AI prompt rules from an AI resources registry\n- `@themes/dark-mode` - Theme configuration from a themes registry\n\n---\n\n## Decentralized Namespace System\n\nWe intentionally designed the namespace system to be decentralized. There is a [central open source registry index](/docs/registry/registry-index) for open source namespaces but you are free to create and use any namespace you want.\n\nThis decentralized approach gives you complete flexibility to organize your resources however makes sense for your organization.\n\nYou can create multiple registries for different purposes:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"registries\": {\n    \"@acme-ui\": \"https://registry.acme.com/ui/{name}.json\",\n    \"@acme-docs\": \"https://registry.acme.com/docs/{name}.json\",\n    \"@acme-ai\": \"https://registry.acme.com/ai/{name}.json\",\n    \"@acme-themes\": \"https://registry.acme.com/themes/{name}.json\",\n    \"@acme-internal\": {\n      \"url\": \"https://internal.acme.com/registry/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${INTERNAL_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\nThis allows you to:\n\n- **Organize by type**: Separate UI components, documentation, AI resources, etc.\n- **Organize by team**: Different teams can maintain their own registries\n- **Organize by visibility**: Public vs. private resources\n- **Organize by version**: Stable vs. experimental registries\n- **No naming conflicts**: Since there's no central authority, you don't need to worry about namespace collisions\n\n### Examples of Multi-Registry Setups\n\n#### By Resource Type\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@components\": \"https://cdn.company.com/components/{name}.json\",\n  \"@hooks\": \"https://cdn.company.com/hooks/{name}.json\",\n  \"@utils\": \"https://cdn.company.com/utils/{name}.json\",\n  \"@prompts\": \"https://cdn.company.com/ai-prompts/{name}.json\"\n}\n```\n\n#### By Team or Department\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@design\": \"https://create.company.com/registry/{name}.json\",\n  \"@engineering\": \"https://eng.company.com/registry/{name}.json\",\n  \"@marketing\": \"https://marketing.company.com/registry/{name}.json\"\n}\n```\n\n#### By Stability\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@stable\": \"https://registry.company.com/stable/{name}.json\",\n  \"@latest\": \"https://registry.company.com/beta/{name}.json\",\n  \"@experimental\": \"https://registry.company.com/experimental/{name}.json\"\n}\n```\n\n---\n\n## Getting Started\n\n### Installing Resources\n\nOnce configured, you can install resources using the namespace syntax:\n\n```bash\nnpx shadcn@latest add @v0/dashboard\n```\n\nor multiple resources at once:\n\n```bash\nnpx shadcn@latest add @acme/header @lib/auth-utils @ai/chatbot-rules\n```\n\n### Quick Configuration\n\nAdd registries to your `components.json`:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@v0\": \"https://v0.dev/chat/b/{name}\",\n    \"@acme\": \"https://registry.acme.com/resources/{name}.json\"\n  }\n}\n```\n\nThen start installing:\n\n```bash\nnpx shadcn@latest add @acme/button\n```\n\n---\n\n## Registry Naming Convention\n\nRegistry names must follow these rules:\n\n- Start with `@` symbol\n- Contain only alphanumeric characters, hyphens, and underscores\n- Examples of valid names: `@v0`, `@acme-ui`, `@my_company`\n\nThe pattern for referencing resources is: `@namespace/resource-name`\n\n---\n\n## Configuration\n\nNamespaced registries are configured in your `components.json` file under the `registries` field.\n\n### Basic Configuration\n\nThe simplest way to configure a registry is with a URL template string:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@v0\": \"https://v0.dev/chat/b/{name}\",\n    \"@acme\": \"https://registry.acme.com/resources/{name}.json\",\n    \"@lib\": \"https://lib.company.com/utilities/{name}\",\n    \"@ai\": \"https://ai-resources.com/r/{name}.json\"\n  }\n}\n```\n\n> **Note:** The `{name}` placeholder in the URL is automatically parsed and replaced with the resource name when you run `npx shadcn@latest add @namespace/resource-name`. For example, `@acme/button` becomes `https://registry.acme.com/resources/button.json`. See [URL Pattern System](#url-pattern-system) for more details.\n\n### Advanced Configuration\n\nFor registries that require authentication or additional parameters, use the object format:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@private\": {\n      \"url\": \"https://api.company.com/registry/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REGISTRY_TOKEN}\",\n        \"X-API-Key\": \"${API_KEY}\"\n      },\n      \"params\": {\n        \"version\": \"latest\",\n        \"format\": \"json\"\n      }\n    }\n  }\n}\n```\n\n> **Note:** Environment variables in the format `${VAR_NAME}` are automatically expanded from your environment (process.env). This works in URLs, headers, and params. For example, `${REGISTRY_TOKEN}` will be replaced with the value of `process.env.REGISTRY_TOKEN`. See [Authentication & Security](#authentication--security) for more details on using environment variables.\n\n---\n\n### URL Pattern System\n\nRegistry URLs support the following placeholders:\n\n### `{name}` Placeholder (required)\n\nThe `{name}` placeholder is replaced with the resource name:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@acme\": \"https://registry.acme.com/{name}.json\"\n}\n```\n\nWhen installing `@acme/button`, the URL becomes: `https://registry.acme.com/button.json`\nWhen installing `@acme/auth-utils`, the URL becomes: `https://registry.acme.com/auth-utils.json`\n\n### `{style}` Placeholder (optional)\n\nThe `{style}` placeholder is replaced with the current style configuration:\n\n```json\n{\n  \"@themes\": \"https://registry.example.com/{style}/{name}.json\"\n}\n```\n\nWith style set to `new-york`, installing `@themes/card` resolves to: `https://registry.example.com/new-york/card.json`\n\nThe style placeholder is optional. Use this when you want to serve different versions of the same resource. For example, you can serve a different version of a component for each style.\n\n---\n\n## Authentication & Security\n\n### Environment Variables\n\nUse environment variables to securely store credentials:\n\n```json title=\"components.json\"\n{\n  \"registries\": {\n    \"@private\": {\n      \"url\": \"https://api.company.com/registry/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REGISTRY_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\nThen set the environment variable:\n\n```bash title=\".env.local\"\nREGISTRY_TOKEN=your_secret_token_here\n```\n\n### Authentication Methods\n\n#### Bearer Token (OAuth 2.0)\n\n```json\n{\n  \"@github\": {\n    \"url\": \"https://api.github.com/repos/org/registry/contents/{name}.json\",\n    \"headers\": {\n      \"Authorization\": \"Bearer ${GITHUB_TOKEN}\"\n    }\n  }\n}\n```\n\n#### API Key in Headers\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@private\": {\n    \"url\": \"https://api.company.com/registry/{name}\",\n    \"headers\": {\n      \"X-API-Key\": \"${API_KEY}\"\n    }\n  }\n}\n```\n\n#### Basic Authentication\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@internal\": {\n    \"url\": \"https://registry.company.com/{name}.json\",\n    \"headers\": {\n      \"Authorization\": \"Basic ${BASE64_CREDENTIALS}\"\n    }\n  }\n}\n```\n\n#### Query Parameter Authentication\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@secure\": {\n    \"url\": \"https://registry.example.com/{name}.json\",\n    \"params\": {\n      \"api_key\": \"${API_KEY}\",\n      \"client_id\": \"${CLIENT_ID}\",\n      \"signature\": \"${REQUEST_SIGNATURE}\"\n    }\n  }\n}\n```\n\n#### Multiple Authentication Methods\n\nSome registries require multiple authentication methods:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@enterprise\": {\n    \"url\": \"https://api.enterprise.com/v2/registry/{name}\",\n    \"headers\": {\n      \"Authorization\": \"Bearer ${ACCESS_TOKEN}\",\n      \"X-API-Key\": \"${API_KEY}\",\n      \"X-Workspace-Id\": \"${WORKSPACE_ID}\"\n    },\n    \"params\": {\n      \"version\": \"latest\"\n    }\n  }\n}\n```\n\n### Security Considerations\n\nWhen working with namespaced registries, especially third-party or public ones, security is paramount. Here's how we handle security:\n\n### Resource Validation\n\nAll resources fetched from registries are validated against our registry item schema before installation. This ensures:\n\n- **Structure validation**: Resources must conform to the expected JSON schema\n- **Type safety**: Resource types are validated (`registry:ui`, `registry:lib`, etc.)\n- **No arbitrary code execution**: Resources are data files, not executable scripts\n\n### Environment Variable Security\n\nEnvironment variables used for authentication are:\n\n- **Never logged**: The CLI never logs or displays environment variable values\n- **Expanded at runtime**: Variables are only expanded when needed, not stored\n- **Isolated per registry**: Each registry maintains its own authentication context\n\nExample of secure configuration:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"registries\": {\n    \"@private\": {\n      \"url\": \"https://api.company.com/registry/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${PRIVATE_REGISTRY_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\nNever commit actual tokens to version control. Use `.env.local`:\n\n```bash title=\".env.local\"\nPRIVATE_REGISTRY_TOKEN=actual_token_here\n```\n\n### HTTPS Enforcement\n\nWe strongly recommend using HTTPS for all registry URLs:\n\n- **Encrypted transport**: Prevents man-in-the-middle attacks\n- **Certificate validation**: Ensures you're connecting to the legitimate registry\n- **Credential protection**: Headers and tokens are encrypted in transit\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"registries\": {\n    \"@secure\": \"https://registry.example.com/{name}.json\", // ✅ Good\n    \"@insecure\": \"http://registry.example.com/{name}.json\" // ❌ Avoid\n  }\n}\n```\n\n### Content Security\n\nResources from registries are treated as data, not code:\n\n1. **JSON parsing only**: Resources must be valid JSON\n2. **Schema validation**: Must match the registry item schema\n3. **File path restrictions**: Files can only be written to configured paths\n4. **No script execution**: The CLI doesn't execute any code from registry resources\n\n### Registry Trust Model\n\nThe namespace system operates on a trust model:\n\n- **You trust what you install**: Only add registries you trust to your configuration\n- **Explicit configuration**: Registries must be explicitly configured in `components.json`\n- **No automatic registry discovery**: The CLI never automatically adds registries\n- **Dependency transparency**: All dependencies are clearly listed in registry items\n\n### Best Practices for Registry Operators\n\nIf you're running your own registry:\n\n1. **Use HTTPS always**: Never serve registry content over HTTP\n2. **Implement authentication**: Require API keys or tokens for private registries\n3. **Rate limiting**: Protect your registry from abuse\n4. **Content validation**: Validate resources before serving them\n\nExample secure registry setup:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@company\": {\n    \"url\": \"https://registry.company.com/v1/{name}.json\",\n    \"headers\": {\n      \"Authorization\": \"Bearer ${COMPANY_TOKEN}\",\n      \"X-Registry-Version\": \"1.0\"\n    }\n  }\n}\n```\n\n### Inspecting Resources Before Installation\n\nThe CLI provides transparency about what's being installed. You can see the payload of a registry item using the following command:\n\n```bash\nnpx shadcn@latest view @acme/button\n```\n\nThis will output the payload of the registry item to the console.\n\n---\n\n## Dependency Resolution\n\n### Basic Dependency Resolution\n\nResources can have dependencies across different registries:\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"name\": \"dashboard\",\n  \"type\": \"registry:block\",\n  \"registryDependencies\": [\n    \"@shadcn/card\", // From default registry\n    \"@v0/chart\", // From v0 registry\n    \"@acme/data-table\", // From acme registry\n    \"@lib/data-fetcher\", // Utility library\n    \"@ai/analytics-prompt\" // AI prompt resource\n  ]\n}\n```\n\nThe CLI automatically resolves and installs all dependencies from their respective registries.\n\n### Advanced Dependency Resolution\n\nUnderstanding how dependencies are resolved internally is important if you're developing registries or need to customize third-party resources.\n\n### How Resolution Works\n\nWhen you run `npx shadcn@latest add @namespace/resource`, the CLI does the following:\n\n1. **Clears registry context** to start fresh\n2. **Fetches the main resource** from the specified registry\n3. **Recursively resolves dependencies** from their respective registries\n4. **Applies topological sorting** to ensure proper installation order\n5. **Deduplicates files** based on target paths (last one wins)\n6. **Deep merges configurations** (tailwind, cssVars, css, envVars)\n\nThis means that if you run the following command:\n\n```bash\nnpx shadcn@latest add @acme/auth @custom/login-form\n```\n\nThe `login-form.ts` from `@custom/login-form` will override the `login-form.ts` from `@acme/auth` because it's resolved last.\n\n### Overriding Third-Party Resources\n\nYou can leverage the dependency resolution process to override any third-party resource by adding them to your custom resource under `registryDependencies` and overriding with your own custom values.\n\n#### Example: Customizing a Third-Party Button\n\nLet's say you want to customize a button from a vendor registry:\n\n**1. Original vendor button** (`@vendor/button`):\n\n```json title=\"button.json\" showLineNumbers\n{\n  \"name\": \"button\",\n  \"type\": \"registry:ui\",\n  \"files\": [\n    {\n      \"path\": \"components/ui/button.tsx\",\n      \"type\": \"registry:ui\",\n      \"content\": \"// Vendor's button implementation\\nexport function Button() { ... }\"\n    }\n  ],\n  \"cssVars\": {\n    \"light\": {\n      \"--button-bg\": \"blue\"\n    }\n  }\n}\n```\n\n**2. Create your custom override** (`@my-company/custom-button`):\n\n```json title=\"custom-button.json\" showLineNumbers\n{\n  \"name\": \"custom-button\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [\n    \"@vendor/button\" // Import original first\n  ],\n  \"cssVars\": {\n    \"light\": {\n      \"--button-bg\": \"purple\" // Override the color\n    }\n  }\n}\n```\n\n**3. Install your custom version**:\n\n```bash\nnpx shadcn@latest add @my-company/custom-button\n```\n\nThis installs the original button from `@vendor/button` and then overrides the `cssVars` with your own custom values.\n\n### Advanced Override Patterns\n\n#### Extending Without Replacing\n\nKeep the original and add extensions:\n\n```json title=\"extended-table.json\" showLineNumbers\n{\n  \"name\": \"extended-table\",\n  \"registryDependencies\": [\"@vendor/table\"],\n  \"files\": [\n    {\n      \"path\": \"components/ui/table-extended.tsx\",\n      \"content\": \"import { Table } from '@vendor/table'\\n// Add your extensions\\nexport function ExtendedTable() { ... }\"\n    }\n  ]\n}\n```\n\nThis will install the original table from `@vendor/table` and then add your extensions to `components/ui/table-extended.tsx`.\n\n#### Partial Override (Multi-file Resources)\n\nOverride only specific files from a complex component:\n\n```json title=\"custom-auth.json\" showLineNumbers\n{\n  \"name\": \"custom-auth\",\n  \"registryDependencies\": [\n    \"@vendor/auth\" // Has multiple files\n  ],\n  \"files\": [\n    {\n      \"path\": \"lib/auth-server.ts\",\n      \"type\": \"registry:lib\",\n      \"content\": \"// Your custom auth server\"\n    }\n  ]\n}\n```\n\n### Resolution Order Example\n\nWhen you install `@custom/dashboard` that depends on multiple resources:\n\n```json title=\"dashboard.json\" showLineNumbers\n{\n  \"name\": \"dashboard\",\n  \"registryDependencies\": [\n    \"@shadcn/card\", // 1. Resolved first\n    \"@vendor/chart\", // 2. Resolved second\n    \"@custom/card\" // 3. Resolved last (overrides @shadcn/card)\n  ]\n}\n```\n\nResolution order:\n\n1. `@shadcn/card` - installs to `components/ui/card.tsx`\n2. `@vendor/chart` - installs to `components/ui/chart.tsx`\n3. `@custom/card` - overwrites `components/ui/card.tsx` (if same target)\n\n### Key Resolution Features\n\n1. **Source Tracking**: Each resource knows which registry it came from, avoiding naming conflicts\n2. **Circular Dependency Prevention**: Automatically detects and prevents circular dependencies\n3. **Smart Installation Order**: Dependencies are installed first, then the resources that use them\n\n---\n\n## Versioning\n\nYou can implement versioning for your registry resources using query parameters. This allows users to pin specific versions or use different release channels.\n\n### Basic Version Parameter\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@versioned\": {\n    \"url\": \"https://registry.example.com/{name}\",\n    \"params\": {\n      \"version\": \"v2\"\n    }\n  }\n}\n```\n\nThis resolves `@versioned/button` to: `https://registry.example.com/button?version=v2`\n\n### Dynamic Version Selection\n\nUse environment variables to control versions across your project:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@stable\": {\n    \"url\": \"https://registry.company.com/{name}\",\n    \"params\": {\n      \"version\": \"${REGISTRY_VERSION}\"\n    }\n  }\n}\n```\n\nThis allows you to:\n\n- Set `REGISTRY_VERSION=v1.2.3` in production\n- Override per environment (dev, staging, prod)\n\n### Semantic Versioning\n\nImplement semantic versioning with range support:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"@npm-style\": {\n    \"url\": \"https://registry.example.com/{name}\",\n    \"params\": {\n      \"semver\": \"^2.0.0\",\n      \"prerelease\": \"${ALLOW_PRERELEASE}\"\n    }\n  }\n}\n```\n\n### Version Resolution Best Practices\n\n1. **Use environment variables** for version control across environments\n2. **Provide sensible defaults** using the `${VAR:-default}` syntax\n3. **Document version schemes** clearly for registry users\n4. **Support version pinning** for reproducible builds\n5. **Implement version discovery** endpoints (e.g., `/versions/{name}`)\n6. **Cache versioned resources** appropriately with proper cache headers\n\n---\n\n## CLI Commands\n\nThe shadcn CLI provides several commands for working with namespaced registries:\n\n### Adding Resources\n\nInstall resources from any configured registry:\n\n```bash\n# Install from a specific registry\nnpx shadcn@latest add @v0/dashboard\n\n# Install multiple resources\nnpx shadcn@latest add @acme/button @lib/utils @ai/prompt\n\n# Install from URL directly\nnpx shadcn@latest add https://registry.example.com/button.json\n\n# Install from local file\nnpx shadcn@latest add ./local-registry/button.json\n```\n\n### Viewing Resources\n\nInspect registry items before installation:\n\n```bash\n# View a resource from a registry\nnpx shadcn@latest view @acme/button\n\n# View multiple resources\nnpx shadcn@latest view @v0/dashboard @shadcn/card\n\n# View from URL\nnpx shadcn@latest view https://registry.example.com/button.json\n```\n\nThe `view` command displays:\n\n- Resource metadata (name, type, description)\n- Dependencies and registry dependencies\n- File contents that will be installed\n- CSS variables and Tailwind configuration\n- Required environment variables\n\n### Searching Registries\n\nSearch for available resources in registries:\n\n```bash\n# Search a specific registry\nnpx shadcn@latest search @v0\n\n# Search with query\nnpx shadcn@latest search @acme --query \"auth\"\n\n# Search multiple registries\nnpx shadcn@latest search @v0 @acme @lib\n\n# Limit results\nnpx shadcn@latest search @v0 --limit 10 --offset 20\n\n# List all items (alias for search)\nnpx shadcn@latest list @acme\n```\n\nSearch results include:\n\n- Resource name and type\n- Description\n- Registry source\n\n---\n\n## Error Handling\n\n### Registry Not Configured\n\nIf you reference a registry that isn't configured:\n\n```bash\nnpx shadcn@latest add @non-existent/component\n```\n\nError:\n\n```txt\nUnknown registry \"@non-existent\". Make sure it is defined in components.json as follows:\n{\n  \"registries\": {\n    \"@non-existent\": \"[URL_TO_REGISTRY]\"\n  }\n}\n```\n\n### Missing Environment Variables\n\nIf required environment variables are not set:\n\n```txt\nRegistry \"@private\" requires the following environment variables:\n\n  • REGISTRY_TOKEN\n\nSet the required environment variables to your .env or .env.local file.\n```\n\n### Resource Not Found\n\n404 Not Found:\n\n```txt\nThe item at https://registry.company.com/button.json was not found. It may not exist at the registry.\n```\n\nThis usually means:\n\n- The resource name is misspelled\n- The resource doesn't exist in the registry\n- The registry URL pattern is incorrect\n\n### Authentication Failures\n\n401 Unauthorized:\n\n```txt\nYou are not authorized to access the item at https://api.company.com/button.json\nCheck your authentication credentials and environment variables.\n```\n\n403 Forbidden:\n\n```txt\nAccess forbidden for https://api.company.com/button.json\nVerify your API key has the necessary permissions.\n```\n\n---\n\n## Creating Your Own Registry\n\nTo make your registry compatible with the namespace system, you can serve any type of resource - components, libraries, utilities, AI prompts, themes, configurations, or any other shareable code/content:\n\n1. **Implement the registry item schema**: Your registry must return JSON that conforms to the [registry item schema](/docs/registry/registry-item-json).\n\n2. **Support the URL pattern**: Include `{name}` in your URL template where the resource name will be inserted.\n\n3. **Define resource types**: Use appropriate `type` fields to identify your resources (e.g., `registry:ui`, `registry:lib`, `registry:ai`, `registry:theme`, etc.).\n\n4. **Handle authentication** (if needed): Accept authentication via headers or query parameters.\n\n5. **Document your namespace**: Provide clear instructions for users to configure your registry:\n\n```json title=\"components.json\" showLineNumbers\n{\n  \"registries\": {\n    \"@your-registry\": \"https://your-domain.com/r/{name}.json\"\n  }\n}\n```\n\n---\n\n## Technical Details\n\n### Parser Pattern\n\nThe namespace parser uses the following regex pattern:\n\n```regex title=\"namespace-parser.js\"\n/^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\\/(.+)$/\n```\n\nThis ensures valid namespace formatting and proper component name extraction.\n\n### Resolution Process\n\n1. **Parse**: Extract namespace and component name from `@namespace/component`\n2. **Lookup**: Find registry configuration for `@namespace`\n3. **Build URL**: Replace placeholders with actual values\n4. **Set Headers**: Apply authentication headers if configured\n5. **Fetch**: Retrieve component from the resolved URL\n6. **Validate**: Ensure response matches registry item schema\n7. **Resolve Dependencies**: Recursively fetch any registry dependencies\n\n### Cross-Registry Dependencies\n\nWhen a component has dependencies from different registries, the resolver:\n\n1. Maintains separate authentication contexts for each registry\n2. Resolves each dependency from its respective source\n3. Deduplicates files based on target paths\n4. Merges configurations (tailwind, cssVars, etc.) from all sources\n\n---\n\n## Best Practices\n\n1. **Use environment variables** for sensitive data like API keys and tokens\n2. **Namespace your registry** with a unique, descriptive name\n3. **Document authentication requirements** clearly for users\n4. **Implement proper error responses** with helpful messages\n5. **Cache registry responses** when possible to improve performance\n6. **Support style variants** if your components have multiple themes\n\n---\n\n## Troubleshooting\n\n### Resources not found\n\n- Verify the registry URL is correct and accessible\n- Check that the `{name}` placeholder is included in the URL\n- Ensure the resource exists in the registry\n- Confirm the resource type matches what the registry provides\n\n### Authentication issues\n\n- Confirm environment variables are set correctly\n- Verify API keys/tokens are valid and not expired\n- Check that headers are being sent in the correct format\n\n### Dependency conflicts\n\n- Review resources with the same name from different registries\n- Use fully qualified names (`@namespace/resource`) to avoid ambiguity\n- Check for circular dependencies between registries\n- Ensure resource types are compatible when mixing registries\n"
  },
  {
    "path": "apps/v4/content/docs/registry/open-in-v0.mdx",
    "content": "---\ntitle: Open in v0\ndescription: Integrate your registry with Open in v0.\n---\n\nIf your registry is hosted and publicly accessible via a URL, you can open a registry item in v0 by using the `https://v0.dev/chat/api/open?url=[URL]` endpoint.\n\neg. [https://v0.dev/chat/api/open?url=https://ui.shadcn.com/r/styles/new-york/login-01.json](https://v0.dev/chat/api/open?url=https://ui.shadcn.com/r/styles/new-york/login-01.json)\n\n<Callout className=\"mt-6\">\n  **Important:** `Open in v0` does not support `cssVars`, `css`, `envVars`,\n  namespaced registries, or advanced authentication methods.\n</Callout>\n\n## Button\n\nSee [Build your Open in v0 button](https://v0.dev/chat/button) for more information on how to build your own `Open in v0` button.\n\nHere's a simple example of how to add a `Open in v0` button to your site.\n\n```tsx showLineNumbers\nimport { Button } from \"@/components/ui/button\"\n\nexport function OpenInV0Button({ url }: { url: string }) {\n  return (\n    <Button\n      aria-label=\"Open in v0\"\n      className=\"h-8 gap-1 rounded-[6px] bg-black px-3 text-xs text-white hover:bg-black hover:text-white dark:bg-white dark:text-black\"\n      asChild\n    >\n      <a\n        href={`https://v0.dev/chat/api/open?url=${url}`}\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >\n        Open in{\" \"}\n        <svg\n          viewBox=\"0 0 40 20\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"h-5 w-5 text-current\"\n        >\n          <path\n            d=\"M23.3919 0H32.9188C36.7819 0 39.9136 3.13165 39.9136 6.99475V16.0805H36.0006V6.99475C36.0006 6.90167 35.9969 6.80925 35.9898 6.71766L26.4628 16.079C26.4949 16.08 26.5272 16.0805 26.5595 16.0805H36.0006V19.7762H26.5595C22.6964 19.7762 19.4788 16.6139 19.4788 12.7508V3.68923H23.3919V12.7508C23.3919 12.9253 23.4054 13.0977 23.4316 13.2668L33.1682 3.6995C33.0861 3.6927 33.003 3.68923 32.9188 3.68923H23.3919V0Z\"\n            fill=\"currentColor\"\n          ></path>\n          <path\n            d=\"M13.7688 19.0956L0 3.68759H5.53933L13.6231 12.7337V3.68759H17.7535V17.5746C17.7535 19.6705 15.1654 20.6584 13.7688 19.0956Z\"\n            fill=\"currentColor\"\n          ></path>\n        </svg>\n      </a>\n    </Button>\n  )\n}\n```\n\n```jsx\n<OpenInV0Button url=\"https://example.com/r/hello-world.json\" />\n```\n\n## Authentication\n\nOpen in v0 only supports query parameter authentication. It does not support namespaced registries or advanced authentication methods like Bearer tokens or API keys in headers.\n\n### Using Query Parameter Authentication\n\nTo add authentication to your registry for Open in v0, use a `token` query parameter:\n\n```\nhttps://registry.company.com/r/hello-world.json?token=your_secure_token_here\n```\n\nWhen implementing this on your registry server:\n\n1. Check for the `token` query parameter\n2. Validate the token against your authentication system\n3. Return a `401 Unauthorized` response if the token is invalid or missing\n4. Both the shadcn CLI and Open in v0 will handle the 401 response and display an appropriate message to users\n\n### Example Implementation\n\n```typescript\n// Next.js API route example\nexport async function GET(request: NextRequest) {\n  const token = request.nextUrl.searchParams.get(\"token\")\n\n  if (!isValidToken(token)) {\n    return NextResponse.json(\n      {\n        error: \"Unauthorized\",\n        message: \"Invalid or missing token\",\n      },\n      { status: 401 }\n    )\n  }\n\n  // Return the registry item\n  return NextResponse.json(registryItem)\n}\n```\n\n<Callout className=\"mt-6\">\n  **Security Note:** Make sure to encrypt and expire tokens. Never expose\n  production tokens in documentation or examples.\n</Callout>\n"
  },
  {
    "path": "apps/v4/content/docs/registry/registry-index.mdx",
    "content": "---\ntitle: Add a Registry\ndescription: Open Source Registry Index\n---\n\nThe open source registry index is a list of all the open source registries that are available to use out of the box.\n\nWhen you run `shadcn add` or `shadcn search`, the CLI will automatically check the registry index for the registry you are looking for and add it to your `components.json` file.\n\nYou can see the full list at [https://ui.shadcn.com/r/registries.json](https://ui.shadcn.com/r/registries.json).\n\n## Adding a Registry\n\n1. Add your registry to [`apps/v4/registry/directory.json`](https://github.com/shadcn-ui/ui/blob/main/apps/v4/registry/directory.json)\n2. Run `pnpm registry:build` to update `registries.json` file.\n3. Create a pull request to https://github.com/shadcn-ui/ui\n\nOnce you have submitted your request, it will be validated and reviewed by the team.\n\n### Requirements\n\n1. The registry must be open source and publicly accessible.\n2. The registry must be a valid JSON file that conforms to the [registry schema specification](/docs/registry/registry-json).\n3. The registry is expected to be a flat registry with no nested items i.e `/registry.json` and `/component-name.json` files are expected to be in the root of the registry.\n4. The `files` array, if present, must NOT include a `content` property.\n\nHere's an example of a valid registry:\n\n```json title=\"registry.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry.json\",\n  \"name\": \"acme\",\n  \"homepage\": \"https://acme.com\",\n  \"items\": [\n    {\n      \"name\": \"login-form\",\n      \"type\": \"registry:component\",\n      \"title\": \"Login Form\",\n      \"description\": \"A login form component.\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/auth/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"example-login-form\",\n      \"type\": \"registry:component\",\n      \"title\": \"Example Login Form\",\n      \"description\": \"An example showing how to use the login form component.\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/example-login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    }\n  ]\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/registry/registry-item-json.mdx",
    "content": "---\ntitle: registry-item.json\ndescription: Specification for registry items.\n---\n\nThe `registry-item.json` schema is used to define your custom registry items.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hello-world\",\n  \"type\": \"registry:block\",\n  \"title\": \"Hello World\",\n  \"description\": \"A simple hello world component.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"@acme/input-form\",\n    \"https://example.com/r/foo\"\n  ],\n  \"dependencies\": [\"is-even@3.0.0\", \"motion\"],\n  \"devDependencies\": [\"tw-animate-css\"],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york/hello-world/hello-world.tsx\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/use-hello-world.ts\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"cssVars\": {\n    \"theme\": {\n      \"font-heading\": \"Poppins, sans-serif\"\n    },\n    \"light\": {\n      \"brand\": \"oklch(0.205 0.015 18)\"\n    },\n    \"dark\": {\n      \"brand\": \"oklch(0.205 0.015 18)\"\n    }\n  }\n}\n```\n\n<div className=\"mt-6 flex items-center gap-2\">\n  <Link href=\"/docs/registry/examples\">See more examples</Link>\n</div>\n\n## Definitions\n\nYou can see the JSON Schema for `registry-item.json` [here](https://ui.shadcn.com/schema/registry-item.json).\n\n### $schema\n\nThe `$schema` property is used to specify the schema for the `registry-item.json` file.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\"\n}\n```\n\n### name\n\nThe name of the item. This is used to identify the item in the registry. It should be unique for your registry.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"name\": \"hello-world\"\n}\n```\n\n### title\n\nA human-readable title for your registry item. Keep it short and descriptive.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"title\": \"Hello World\"\n}\n```\n\n### description\n\nA description of your registry item. This can be longer and more detailed than the `title`.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"description\": \"A simple hello world component.\"\n}\n```\n\n### type\n\nThe `type` property is used to specify the type of your registry item. This is used to determine the type and target path of the item when resolved for a project.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"type\": \"registry:block\"\n}\n```\n\nThe following types are supported:\n\n| Type                 | Description                                       |\n| -------------------- | ------------------------------------------------- |\n| `registry:base`      | Use for entire design systems.                    |\n| `registry:block`     | Use for complex components with multiple files.   |\n| `registry:component` | Use for simple components.                        |\n| `registry:font`      | Use for fonts.                                    |\n| `registry:lib`       | Use for lib and utils.                            |\n| `registry:hook`      | Use for hooks.                                    |\n| `registry:ui`        | Use for UI components and single-file primitives. |\n| `registry:page`      | Use for page or file-based routes.                |\n| `registry:file`      | Use for miscellaneous files.                      |\n| `registry:style`     | Use for registry styles. eg. `new-york`.          |\n| `registry:theme`     | Use for themes.                                   |\n| `registry:item`      | Use for universal registry items.                 |\n\n### author\n\nThe `author` property is used to specify the author of the registry item.\n\nIt can be unique to the registry item or the same as the author of the registry.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"author\": \"John Doe <john@doe.com>\"\n}\n```\n\n### dependencies\n\nThe `dependencies` property is used to specify the dependencies of your registry item. This is for `npm` packages.\n\nUse `@version` to specify the version of your registry item.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"dependencies\": [\n    \"@radix-ui/react-accordion\",\n    \"zod\",\n    \"lucide-react\",\n    \"name@1.0.2\"\n  ]\n}\n```\n\n### devDependencies\n\nThe `devDependencies` property is used to specify the dev dependencies of your registry item. These are `npm` packages that are only needed during development.\n\nUse `@version` to specify the version of the package.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"devDependencies\": [\"tw-animate-css\", \"name@1.2.0\"]\n}\n```\n\n### registryDependencies\n\nUsed for registry dependencies. Can be names, namespaced or URLs.\n\n- For `shadcn/ui` registry items such as `button`, `input`, `select`, etc use the name eg. `['button', 'input', 'select']`.\n- For namespaced registry items such as `@acme` use the name eg. `['@acme/input-form']`.\n- For custom registry items use the URL of the registry item eg. `['https://example.com/r/hello-world.json']`.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"registryDependencies\": [\n    \"button\",\n    \"@acme/input-form\",\n    \"https://example.com/r/editor.json\"\n  ]\n}\n```\n\nNote: The CLI will automatically resolve remote registry dependencies.\n\n### files\n\nThe `files` property is used to specify the files of your registry item. Each file has a `path`, `type` and `target` (optional) property.\n\n**The `target` property is required for `registry:page` and `registry:file` types.**\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"files\": [\n    {\n      \"path\": \"registry/new-york/hello-world/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/hello/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/hello-world.tsx\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/use-hello-world.ts\",\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"path\": \"registry/new-york/hello-world/.env\",\n      \"type\": \"registry:file\",\n      \"target\": \"~/.env\"\n    }\n  ]\n}\n```\n\n#### path\n\nThe `path` property is used to specify the path to the file in your registry. This path is used by the build script to parse, transform and build the registry JSON payload.\n\n#### type\n\nThe `type` property is used to specify the type of the file. See the [type](#type) section for more information.\n\n#### target\n\nThe `target` property is used to indicate where the file should be placed in a project. This is optional and only required for `registry:page` and `registry:file` types.\n\nBy default, the `shadcn` cli will read a project's `components.json` file to determine the target path. For some files, such as routes or config you can specify the target path manually.\n\nUse `~` to refer to the root of the project e.g `~/foo.config.js`.\n\n### tailwind\n\n**DEPRECATED:** Use `cssVars.theme` instead for Tailwind v4 projects.\n\nThe `tailwind` property is used for tailwind configuration such as `theme`, `plugins` and `content`.\n\nYou can use the `tailwind.config` property to add colors, animations and plugins to your registry item.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"tailwind\": {\n    \"config\": {\n      \"theme\": {\n        \"extend\": {\n          \"colors\": {\n            \"brand\": \"hsl(var(--brand))\"\n          },\n          \"keyframes\": {\n            \"wiggle\": {\n              \"0%, 100%\": { \"transform\": \"rotate(-3deg)\" },\n              \"50%\": { \"transform\": \"rotate(3deg)\" }\n            }\n          },\n          \"animation\": {\n            \"wiggle\": \"wiggle 1s ease-in-out infinite\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n### cssVars\n\nUse to define CSS variables for your registry item.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"cssVars\": {\n    \"theme\": {\n      \"font-heading\": \"Poppins, sans-serif\"\n    },\n    \"light\": {\n      \"brand\": \"20 14.3% 4.1%\",\n      \"radius\": \"0.5rem\"\n    },\n    \"dark\": {\n      \"brand\": \"20 14.3% 4.1%\"\n    }\n  }\n}\n```\n\n### css\n\nUse `css` to add new rules to the project's CSS file eg. `@layer base`, `@layer components`, `@utility`, `@keyframes`, `@plugin`, etc.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"css\": {\n    \"@plugin @tailwindcss/typography\": {},\n    \"@plugin foo\": {},\n    \"@layer base\": {\n      \"body\": {\n        \"font-size\": \"var(--text-base)\",\n        \"line-height\": \"1.5\"\n      }\n    },\n    \"@layer components\": {\n      \"button\": {\n        \"background-color\": \"var(--color-primary)\",\n        \"color\": \"var(--color-white)\"\n      }\n    },\n    \"@utility text-magic\": {\n      \"font-size\": \"var(--text-base)\",\n      \"line-height\": \"1.5\"\n    },\n    \"@keyframes wiggle\": {\n      \"0%, 100%\": {\n        \"transform\": \"rotate(-3deg)\"\n      },\n      \"50%\": {\n        \"transform\": \"rotate(3deg)\"\n      }\n    }\n  }\n}\n```\n\n### envVars\n\nUse `envVars` to add environment variables to your registry item.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"envVars\": {\n    \"NEXT_PUBLIC_APP_URL\": \"http://localhost:4000\",\n    \"DATABASE_URL\": \"postgresql://postgres:postgres@localhost:5432/postgres\",\n    \"OPENAI_API_KEY\": \"\"\n  }\n}\n```\n\nEnvironment variables are added to the `.env.local` or `.env` file. Existing variables are not overwritten.\n\n<Callout>\n\n**IMPORTANT:** Use `envVars` to add development or example variables. Do NOT use it to add production variables.\n\n</Callout>\n\n### font\n\nThe `font` property is required for `registry:font` items. It configures the font family, provider, import name, CSS variable, and the npm package to install for non-Next.js projects.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\"latin\"],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}\n```\n\n| Property     | Type       | Required | Description                                                                               |\n| ------------ | ---------- | -------- | ----------------------------------------------------------------------------------------- |\n| `family`     | `string`   | Yes      | The CSS font-family value.                                                                |\n| `provider`   | `string`   | Yes      | The font provider. Currently only `google` is supported.                                  |\n| `import`     | `string`   | Yes      | The import name for the font from `next/font/google`.                                     |\n| `variable`   | `string`   | Yes      | The CSS variable name for the font (e.g., `--font-sans`, `--font-mono`).                  |\n| `weight`     | `string[]` | No       | Array of font weights to include.                                                         |\n| `subsets`    | `string[]` | No       | Array of font subsets to include.                                                         |\n| `selector`   | `string`   | No       | CSS selector to apply the font to. Defaults to `html`.                                    |\n| `dependency` | `string`   | No       | The npm package to install for non-Next.js projects (e.g., `@fontsource-variable/inter`). |\n\n### docs\n\nUse `docs` to show custom documentation or message when installing your registry item via the CLI.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"docs\": \"To get an OPENAI_API_KEY, sign up for an account at https://platform.openai.com.\"\n}\n```\n\n### categories\n\nUse `categories` to organize your registry item.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"categories\": [\"sidebar\", \"dashboard\"]\n}\n```\n\n### meta\n\nUse `meta` to add additional metadata to your registry item. You can add any key/value pair that you want to be available to the registry item.\n\n```json title=\"registry-item.json\" showLineNumbers\n{\n  \"meta\": { \"foo\": \"bar\" }\n}\n```\n"
  },
  {
    "path": "apps/v4/content/docs/registry/registry-json.mdx",
    "content": "---\ntitle: registry.json\ndescription: Schema for running your own component registry.\n---\n\nThe `registry.json` schema is used to define your custom component registry.\n\n```json title=\"registry.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry.json\",\n  \"name\": \"shadcn\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"hello-world\",\n      \"type\": \"registry:block\",\n      \"title\": \"Hello World\",\n      \"description\": \"A simple hello world component.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"@acme/input-form\",\n        \"https://example.com/r/foo\"\n      ],\n      \"dependencies\": [\"is-even@3.0.0\", \"motion\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/hello-world/hello-world.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n## Definitions\n\nYou can see the JSON Schema for `registry.json` [here](https://ui.shadcn.com/schema/registry.json).\n\n### $schema\n\nThe `$schema` property is used to specify the schema for the `registry.json` file.\n\n```json title=\"registry.json\" showLineNumbers\n{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry.json\"\n}\n```\n\n### name\n\nThe `name` property is used to specify the name of your registry. This is used for data attributes and other metadata.\n\n```json title=\"registry.json\" showLineNumbers\n{\n  \"name\": \"acme\"\n}\n```\n\n### homepage\n\nThe homepage of your registry. This is used for data attributes and other metadata.\n\n```json title=\"registry.json\" showLineNumbers\n{\n  \"homepage\": \"https://acme.com\"\n}\n```\n\n### items\n\nThe `items` in your registry. Each item must implement the [registry-item schema specification](https://ui.shadcn.com/schema/registry-item.json).\n\n```json title=\"registry.json\" showLineNumbers\n{\n  \"items\": [\n    {\n      \"name\": \"hello-world\",\n      \"type\": \"registry:block\",\n      \"title\": \"Hello World\",\n      \"description\": \"A simple hello world component.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"@acme/input-form\",\n        \"https://example.com/r/foo\"\n      ],\n      \"dependencies\": [\"is-even@3.0.0\", \"motion\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/hello-world/hello-world.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    }\n  ]\n}\n```\n\nSee the [registry-item schema documentation](/docs/registry/registry-item-json) for more information.\n"
  },
  {
    "path": "apps/v4/content/docs/rtl/index.mdx",
    "content": "---\ntitle: \"RTL\"\ndescription: \"Right-to-left support for shadcn/ui components.\"\n---\n\nshadcn/ui components have first-class support for right-to-left (RTL) layouts. Text alignment, positioning, and directional styles automatically adapt for languages like Arabic, Hebrew, and Persian.\n\n<ComponentPreview\n  styleName=\"base-nova\"\n  name=\"card-rtl\"\n  direction=\"rtl\"\n  previewClassName=\"h-auto\"\n  hideCode\n  caption=\"A card component in RTL mode.\"\n  className=\"mb-8\"\n/>\n\nWhen you install components, the CLI automatically transforms physical positioning classes to logical equivalents, so your components work seamlessly in both LTR and RTL contexts.\n\n## Get Started\n\nSelect your framework to get started with RTL support.\n\n<div className=\"mt-6 grid gap-4 sm:grid-cols-2 sm:gap-6\">\n  <LinkedCard href=\"/docs/rtl/next\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Next.js</title>\n      <path d=\"M11.5725 0c-.1763 0-.3098.0013-.3584.0067-.0516.0053-.2159.021-.3636.0328-3.4088.3073-6.6017 2.1463-8.624 4.9728C1.1004 6.584.3802 8.3666.1082 10.255c-.0962.659-.108.8537-.108 1.7474s.012 1.0884.108 1.7476c.652 4.506 3.8591 8.2919 8.2087 9.6945.7789.2511 1.6.4223 2.5337.5255.3636.04 1.9354.04 2.299 0 1.6117-.1783 2.9772-.577 4.3237-1.2643.2065-.1056.2464-.1337.2183-.1573-.0188-.0139-.8987-1.1938-1.9543-2.62l-1.919-2.592-2.4047-3.5583c-1.3231-1.9564-2.4117-3.556-2.4211-3.556-.0094-.0026-.0187 1.5787-.0235 3.509-.0067 3.3802-.0093 3.5162-.0516 3.596-.061.115-.108.1618-.2064.2134-.075.0374-.1408.0445-.495.0445h-.406l-.1078-.068a.4383.4383 0 01-.1572-.1712l-.0493-.1056.0053-4.703.0067-4.7054.0726-.0915c.0376-.0493.1174-.1125.1736-.143.0962-.047.1338-.0517.5396-.0517.4787 0 .5584.0187.6827.1547.0353.0377 1.3373 1.9987 2.895 4.3608a10760.433 10760.433 0 004.7344 7.1706l1.9002 2.8782.096-.0633c.8518-.5536 1.7525-1.3418 2.4657-2.1627 1.5179-1.7429 2.4963-3.868 2.8247-6.134.0961-.6591.1078-.854.1078-1.7475 0-.8937-.012-1.0884-.1078-1.7476-.6522-4.506-3.8592-8.2919-8.2087-9.6945-.7672-.2487-1.5836-.42-2.4985-.5232-.169-.0176-1.0835-.0366-1.6123-.037zm4.0685 7.217c.3473 0 .4082.0053.4857.047.1127.0562.204.1642.237.2767.0186.061.0234 1.3653.0186 4.3044l-.0067 4.2175-.7436-1.14-.7461-1.14v-3.066c0-1.982.0093-3.0963.0234-3.1502.0375-.1313.1196-.2346.2323-.2955.0961-.0494.1313-.054.4997-.054z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Next.js</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/rtl/vite\">\n    <svg\n      role=\"img\"\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <title>Vite</title>\n      <path d=\"m8.286 10.578.512-8.657a.306.306 0 0 1 .247-.282L17.377.006a.306.306 0 0 1 .353.385l-1.558 5.403a.306.306 0 0 0 .352.385l2.388-.46a.306.306 0 0 1 .332.438l-6.79 13.55-.123.19a.294.294 0 0 1-.252.14c-.177 0-.35-.152-.305-.369l1.095-5.301a.306.306 0 0 0-.388-.355l-1.433.435a.306.306 0 0 1-.389-.354l.69-3.375a.306.306 0 0 0-.37-.36l-2.32.536a.306.306 0 0 1-.374-.316zm14.976-7.926L17.284 3.74l-.544 1.887 2.077-.4a.8.8 0 0 1 .84.369.8.8 0 0 1 .034.783L12.9 19.93l-.013.025-.015.023-.122.19a.801.801 0 0 1-.672.37.826.826 0 0 1-.634-.302.8.8 0 0 1-.16-.67l1.029-4.981-1.12.34a.81.81 0 0 1-.86-.262.802.802 0 0 1-.165-.67l.63-3.08-2.027.468a.808.808 0 0 1-.768-.233.81.81 0 0 1-.217-.6l.389-6.57-7.44-1.33a.612.612 0 0 0-.64.906L11.58 23.691a.612.612 0 0 0 1.066-.004l11.26-20.135a.612.612 0 0 0-.644-.9z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">Vite</p>\n  </LinkedCard>\n  <LinkedCard href=\"/docs/rtl/start\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-10 w-10\"\n      fill=\"currentColor\"\n    >\n      <path d=\"M6.93 13.688a.343.343 0 0 1 .468.132l.063.106c.48.851.98 1.66 1.5 2.426a35.65 35.65 0 0 0 2.074 2.742.345.345 0 0 1-.039.484l-.074.066c-2.543 2.223-4.191 2.665-4.953 1.333-.746-1.305-.477-3.672.808-7.11a.344.344 0 0 1 .153-.18ZM17.75 16.3a.34.34 0 0 1 .395.27l.02.1c.628 3.286.187 4.93-1.325 4.93-1.48 0-3.36-1.402-5.649-4.203a.327.327 0 0 1-.074-.222c0-.188.156-.34.344-.34h.121a32.984 32.984 0 0 0 2.809-.098c1.07-.086 2.191-.23 3.359-.437zm.871-6.977a.353.353 0 0 1 .445-.21l.102.034c3.262 1.11 4.504 2.332 3.719 3.664-.766 1.305-2.993 2.254-6.684 2.848a.362.362 0 0 1-.238-.047.343.343 0 0 1-.125-.476l.062-.106a34.07 34.07 0 0 0 1.367-2.523c.477-.989.93-2.051 1.352-3.184zM7.797 8.34a.362.362 0 0 1 .238.047.343.343 0 0 1 .125.476l-.062.106a34.088 34.088 0 0 0-1.367 2.523c-.477.988-.93 2.051-1.352 3.184a.353.353 0 0 1-.445.21l-.102-.034C1.57 13.742.328 12.52 1.113 11.188 1.88 9.883 4.106 8.934 7.797 8.34Zm5.281-3.984c2.543-2.223 4.192-2.664 4.953-1.332.746 1.304.477 3.671-.808 7.109a.344.344 0 0 1-.153.18.343.343 0 0 1-.468-.133l-.063-.106a34.64 34.64 0 0 0-1.5-2.426 35.65 35.65 0 0 0-2.074-2.742.345.345 0 0 1 .039-.484ZM7.285 2.274c1.48 0 3.364 1.402 5.649 4.203a.349.349 0 0 1 .078.218.348.348 0 0 1-.348.344l-.117-.004a34.584 34.584 0 0 0-2.809.102 35.54 35.54 0 0 0-3.363.437.343.343 0 0 1-.394-.273l-.02-.098c-.629-3.285-.188-4.93 1.324-4.93Zm2.871 5.812h3.688a.638.638 0 0 1 .55.316l1.848 3.22a.644.644 0 0 1 0 .628l-1.847 3.223a.638.638 0 0 1-.551.316h-3.688a.627.627 0 0 1-.547-.316L7.758 12.25a.644.644 0 0 1 0-.629L9.61 8.402a.627.627 0 0 1 .546-.316Zm3.23.793a.638.638 0 0 1 .552.316l1.39 2.426a.644.644 0 0 1 0 .629l-1.39 2.43a.638.638 0 0 1-.551.316h-2.774a.627.627 0 0 1-.546-.316l-1.395-2.43a.644.644 0 0 1 0-.629l1.395-2.426a.627.627 0 0 1 .546-.316Zm-.491.867h-1.79a.624.624 0 0 0-.546.316l-.899 1.56a.644.644 0 0 0 0 .628l.899 1.563a.632.632 0 0 0 .547.316h1.789a.632.632 0 0 0 .547-.316l.898-1.563a.644.644 0 0 0 0-.629l-.898-1.558a.624.624 0 0 0-.547-.317Zm-.477.828c.227 0 .438.121.547.317l.422.73a.625.625 0 0 1 0 .629l-.422.734a.627.627 0 0 1-.547.317h-.836a.632.632 0 0 1-.547-.317l-.422-.734a.625.625 0 0 1 0-.629l.422-.73a.632.632 0 0 1 .547-.317zm-.418.817a.548.548 0 0 0-.473.273.547.547 0 0 0 0 .547.544.544 0 0 0 .473.27.544.544 0 0 0 .473-.27.547.547 0 0 0 0-.547.548.548 0 0 0-.473-.273Zm-4.422.546h.98M18.98 7.75c.391-1.895.477-3.344.223-4.398-.148-.63-.422-1.137-.84-1.508-.441-.39-1-.582-1.625-.582-1.035 0-2.12.472-3.281 1.367a14.9 14.9 0 0 0-1.473 1.316 1.206 1.206 0 0 0-.136-.144c-1.446-1.285-2.66-2.082-3.7-2.39-.617-.184-1.195-.2-1.722-.024-.559.187-1.004.574-1.317 1.117-.515.894-.652 2.074-.46 3.527.078.59.214 1.235.402 1.934a1.119 1.119 0 0 0-.215.047C3.008 8.62 1.71 9.269.926 10.015c-.465.442-.77.938-.883 1.481-.113.578 0 1.156.312 1.7.516.894 1.465 1.597 2.817 2.155.543.223 1.156.426 1.844.61a1.023 1.023 0 0 0-.07.226c-.391 1.891-.477 3.344-.223 4.395.148.629.425 1.14.84 1.508.44.39 1 .582 1.625.582 1.035 0 2.12-.473 3.28-1.364.477-.37.973-.816 1.489-1.336a1.2 1.2 0 0 0 .195.227c1.446 1.285 2.66 2.082 3.7 2.39.617.184 1.195.2 1.722.024.559-.187 1.004-.574 1.317-1.117.515-.894.652-2.074.46-3.527a14.941 14.941 0 0 0-.425-2.012 1.225 1.225 0 0 0 .238-.047c1.828-.61 3.125-1.258 3.91-2.004.465-.441.77-.937.883-1.48.113-.578 0-1.157-.313-1.7-.515-.894-1.464-1.597-2.816-2.156a14.576 14.576 0 0 0-1.906-.625.865.865 0 0 0 .059-.195z\" />\n    </svg>\n    <p className=\"mt-2 font-medium\">TanStack Start</p>\n  </LinkedCard>\n</div>\n\n## How it works\n\nWhen you add components with `rtl: true` set in your `components.json`, the shadcn CLI automatically transforms classes and props to be RTL compatible:\n\n- Physical positioning classes like `left-*` and `right-*` are converted to logical equivalents like `start-*` and `end-*`.\n- Directional props are updated to use logical values.\n- Text alignment and spacing classes are adjusted accordingly.\n- Supported icons are automatically flipped using `rtl:rotate-180`.\n\n## Try it out\n\nClick the link below to open a Next.js project with RTL support in v0.\n\n[![Open in v0](https://v0.app/chat-static/button.svg)](https://v0.app/chat/api/open?url=https://github.com/shadcn-ui/next-template-rtl)\n\n## Supported Styles\n\nAutomatic RTL transformation via the CLI is only available for projects created using `shadcn create` with the new styles (`base-nova`, `radix-nova`, etc.).\n\nFor other styles, see the [Migration Guide](#migrating-existing-components).\n\n## Font Recommendations\n\nFor the best RTL experience, we recommend using fonts that have proper support for your target language. [Noto](https://fonts.google.com/noto) is a great font family for this and it pairs well with Inter and Geist.\n\nSee your framework's RTL guide under [Get Started](#get-started) for details on installing and configuring RTL fonts.\n\n## Animations\n\nThe CLI also handles animation classes, automatically transforming physical directional animations to their logical equivalents. For example, `slide-in-from-right` becomes `slide-in-from-end`.\n\nThis ensures animations like dropdowns, popovers, and tooltips animate in the correct direction based on the document's text direction.\n\n**A note on tw-animate-css:**\n\nThere is a [known issue](https://github.com/Wombosvideo/tw-animate-css/issues/67) with the `tw-animate-css` library where the logical slide utilities are not working as expected. For now, make sure you pass in the `dir` prop to portal elements.\n\n```tsx showLineNumbers /dir=\"rtl\"/\n<Popover>\n  <PopoverTrigger>Open</PopoverTrigger>\n  <PopoverContent dir=\"rtl\">\n    <div>Content</div>\n  </PopoverContent>\n</Popover>\n```\n\n```tsx showLineNumbers /dir=\"rtl\"/\n<Tooltip>\n  <TooltipTrigger>Open</TooltipTrigger>\n  <TooltipContent dir=\"rtl\">\n    <div>Content</div>\n  </TooltipContent>\n</Tooltip>\n```\n\n## Migrating existing components\n\nIf you have existing components installed before enabling RTL, you can migrate them using the CLI as follows:\n\n<Steps>\n\n<Step>Run the migrate command</Step>\n\n```bash\nnpx shadcn@latest migrate rtl [path]\n```\n\n`[path]` accepts a path or glob pattern to migrate. If you don't provide a path, it will migrate all the files in the `ui` directory.\n\n### Manual Migration (Optional)\n\nThe following components are not automatically migrated by the CLI. Follow the RTL support section for each component to manually migrate them.\n\n- [Calendar](/docs/components/radix/calendar#rtl-support)\n- [Pagination](/docs/components/radix/pagination#rtl-support)\n- [Sidebar](/docs/components/radix/sidebar#rtl-support)\n\n### Migrate Icons\n\nSome icons like `ArrowRightIcon` or `ChevronLeftIcon` might need the `rtl:rotate-180` class to be flipped correctly. Add the `rtl:rotate-180` class to the icon component to flip it correctly.\n\n```tsx showLineNumbers /rtl:rotate-180/\n<ArrowRightIcon className=\"rtl:rotate-180\" />\n```\n\n### Add direction component\n\nAdd the direction component to your project.\n\n```bash\nnpx shadcn@latest add direction\n```\n\n### Add DirectionProvider\n\nFollow your framework's documentation for details on how to add the `DirectionProvider` component to your project.\n\nSee the [Get Started](#get-started) section for details on how to add the `DirectionProvider` component to your project.\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/rtl/meta.json",
    "content": "{\n  \"title\": \"RTL\",\n  \"pages\": [\"index\", \"next\", \"vite\", \"start\"]\n}\n"
  },
  {
    "path": "apps/v4/content/docs/rtl/next.mdx",
    "content": "---\ntitle: Next.js\ndescription: Create a new Next.js project with RTL support.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create?template=next&base=base&rtl=true) for a fully configured Next.js app with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create Project\n\nCreate a new project using the `--rtl` flag and the `next` template.\n\n**You can skip this step if you have already created a project using [shadcn/create](/create?template=next&base=base&rtl=true).**\n\n```bash\nnpx shadcn@latest create --template next --rtl\n```\n\nThis will create a `components.json` file with the `rtl: true` flag.\n\n```json title=\"components.json\" showLineNumbers {4}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"base-nova\",\n  \"rtl\": true\n}\n```\n\n### Add DirectionProvider\n\nWrap your application with the `DirectionProvider` component with the `direction=\"rtl\"` prop.\n\nThen add the `dir=\"rtl\"` and `lang=\"ar\"` attributes to the `html` tag. Update `lang=\"ar\"` to your target language.\n\n```tsx title=\"app/layout.tsx\" showLineNumbers {1,9-13}\nimport { DirectionProvider } from \"@/components/ui/direction\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"ar\" dir=\"rtl\">\n      <body>\n        <DirectionProvider direction=\"rtl\">{children}</DirectionProvider>\n      </body>\n    </html>\n  )\n}\n```\n\n### Add Font\n\nFor the best RTL experience, we recommend using fonts that have proper support for your target language. [Noto](https://fonts.google.com/noto) is a great font family for this and it pairs well with Inter and Geist.\n\n```tsx title=\"app/layout.tsx\" showLineNumbers {1,5-8,16}\nimport { Noto_Sans_Arabic } from \"next/font/google\"\n\nimport { DirectionProvider } from \"@/components/ui/direction\"\n\nconst fontSans = Noto_Sans_Arabic({\n  subsets: [\"arabic\"],\n  variable: \"--font-sans\",\n})\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"ar\" dir=\"rtl\" className={fontSans.variable}>\n      <body>\n        <DirectionProvider direction=\"rtl\">{children}</DirectionProvider>\n      </body>\n    </html>\n  )\n}\n```\n\nFor other languages, eg. Hebrew, you can use the `Noto_Sans_Hebrew` font.\n\n### Add Components\n\nYou are now ready to add components to your project. The CLI will take care of handling RTL support for you.\n\n```bash\nnpx shadcn@latest add item\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/rtl/start.mdx",
    "content": "---\ntitle: TanStack Start\ndescription: Create a new TanStack Start project with RTL support.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create?template=start&base=base&rtl=true) for a fully configured TanStack Start app with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create Project\n\nCreate a new project using the `--rtl` flag and the `start` template.\n\n**You can skip this step if you have already created a project using [shadcn/create](/create?template=start&base=base&rtl=true).**\n\n```bash\nnpx shadcn@latest create --template start --rtl\n```\n\nThis will create a `components.json` file with the `rtl: true` flag.\n\n```json title=\"components.json\" showLineNumbers {4}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"base-nova\",\n  \"rtl\": true\n}\n```\n\n### Add DirectionProvider\n\nAdd the `dir=\"rtl\"` and `lang=\"ar\"` attributes to the `html` tag. Update `lang=\"ar\"` to your target language.\n\nThen wrap your app with the `DirectionProvider` component with the `direction=\"rtl\"` prop in your `__root.tsx`:\n\n```tsx title=\"src/routes/__root.tsx\" showLineNumbers {1,9,14-16}\nimport { DirectionProvider } from \"@/components/ui/direction\"\n\nexport const Route = createRootRoute({\n  component: RootComponent,\n})\n\nfunction RootComponent() {\n  return (\n    <html lang=\"ar\" dir=\"rtl\">\n      <head>\n        <Meta />\n      </head>\n      <body>\n        <DirectionProvider direction=\"rtl\">{children}</DirectionProvider>\n        <Scripts />\n      </body>\n    </html>\n  )\n}\n```\n\n### Add Font\n\nFor the best RTL experience, we recommend using fonts that have proper support for your target language. [Noto](https://fonts.google.com/noto) is a great font family for this and it pairs well with Inter and Geist.\n\nInstall the font using [Fontsource](https://fontsource.org/fonts/noto-sans-arabic):\n\n```bash\nnpm install @fontsource-variable/noto-sans-arabic\n```\n\nImport the font in your `styles.css`:\n\n```css title=\"src/styles.css\" showLineNumbers {4,7}\n@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n@import \"@fontsource-variable/noto-sans-arabic\";\n\n@theme inline {\n  --font-sans: \"Noto Sans Arabic Variable\", sans-serif;\n}\n```\n\nFor other languages, eg. Hebrew, you can use `@fontsource-variable/noto-sans-hebrew`.\n\n### Add Components\n\nYou are now ready to add components to your project. The CLI will take care of handling RTL support for you.\n\n```bash\nnpx shadcn@latest add item\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/content/docs/rtl/vite.mdx",
    "content": "---\ntitle: Vite\ndescription: Create a new Vite project with RTL support.\n---\n\n<Callout className=\"mb-6 border-emerald-600 bg-emerald-100 dark:border-emerald-400 dark:bg-emerald-900\">\n\n**Starting a new project?** Use [shadcn/create](/create?template=vite&base=base&rtl=true) for a fully configured Vite app with custom themes, Base UI or Radix, and icon libraries.\n\n</Callout>\n\n<Steps>\n\n### Create Project\n\nCreate a new project using the `--rtl` flag and the `vite` template.\n\n**You can skip this step if you have already created a project using [shadcn/create](/create?template=vite&base=base&rtl=true).**\n\n```bash\nnpx shadcn@latest create --template vite --rtl\n```\n\nThis will create a `components.json` file with the `rtl: true` flag.\n\n```json title=\"components.json\" showLineNumbers {4}\n{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"base-nova\",\n  \"rtl\": true\n}\n```\n\n### Add DirectionProvider\n\nAdd the `dir=\"rtl\"` and `lang=\"ar\"` attributes to the `html` tag in your `index.html`. Update `lang=\"ar\"` to your target language.\n\n```html title=\"index.html\" showLineNumbers {2}\n<!doctype html>\n<html lang=\"ar\" dir=\"rtl\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Vite App</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n```\n\nThen wrap your app with the `DirectionProvider` component with the `direction=\"rtl\"` prop in your `main.tsx`:\n\n```tsx title=\"src/main.tsx\" showLineNumbers {4,12-13}\nimport { StrictMode } from \"react\"\nimport { createRoot } from \"react-dom/client\"\n\nimport { DirectionProvider } from \"@/components/ui/direction\"\n\nimport App from \"./App\"\n\nimport \"./index.css\"\n\ncreateRoot(document.getElementById(\"root\")!).render(\n  <StrictMode>\n    <DirectionProvider direction=\"rtl\">\n      <App />\n    </DirectionProvider>\n  </StrictMode>\n)\n```\n\n### Add Font\n\nFor the best RTL experience, we recommend using fonts that have proper support for your target language. [Noto](https://fonts.google.com/noto) is a great font family for this and it pairs well with Inter and Geist.\n\nInstall the font using [Fontsource](https://fontsource.org/fonts/noto-sans-arabic):\n\n```bash\nnpm install @fontsource-variable/noto-sans-arabic\n```\n\nImport the font in your `index.css`:\n\n```css title=\"src/index.css\" showLineNumbers {4,7}\n@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n@import \"@fontsource-variable/noto-sans-arabic\";\n\n@theme inline {\n  --font-sans: \"Noto Sans Arabic Variable\", sans-serif;\n}\n```\n\nFor other languages, eg. Hebrew, you can use `@fontsource-variable/noto-sans-hebrew`.\n\n### Add Components\n\nYou are now ready to add components to your project. The CLI will take care of handling RTL support for you.\n\n```bash\nnpx shadcn@latest add item\n```\n\n</Steps>\n"
  },
  {
    "path": "apps/v4/eslint.config.mjs",
    "content": "import nextVitals from \"eslint-config-next/core-web-vitals\"\nimport tseslint from \"typescript-eslint\"\n\nconst eslintConfig = tseslint.config(\n  // Remove the @typescript-eslint plugin from next/typescript to prevent\n  // duplicate registration with tseslint.configs.recommended.\n  ...nextVitals.map((config) =>\n    config.name === \"next/typescript\"\n      ? { ...config, plugins: {} }\n      : config\n  ),\n  ...tseslint.configs.recommended,\n  {\n    ignores: [\n      \"node_modules/**\",\n      \".next/**\",\n      \"out/**\",\n      \"build/**\",\n      \"next-env.d.ts\",\n      \".source/**\",\n      \"**/__index__.tsx\",\n    ],\n  },\n  {\n    rules: {\n      \"react-hooks/incompatible-library\": \"off\",\n      \"react-hooks/purity\": \"off\",\n      \"@next/next/no-html-link-for-pages\": \"off\",\n      \"@next/next/no-img-element\": \"off\",\n      \"@typescript-eslint/no-unused-vars\": \"off\",\n      \"@typescript-eslint/consistent-type-imports\": [\n        \"error\",\n        {\n          prefer: \"type-imports\",\n          fixStyle: \"inline-type-imports\",\n        },\n      ],\n    },\n  },\n)\n\nexport default eslintConfig\n"
  },
  {
    "path": "apps/v4/examples/README.md",
    "content": "# Examples\n\nThis directory contains demo components for the component documentation.\n\n## Directory Structure\n\n```\nexamples\n├── base\n│   ├── ui           # Auto-generated by build-registry.mts\n│   ├── lib          # Auto-generated by build-registry.mts\n│   ├── hooks        # Auto-generated by build-registry.mts\n│   ├── button-demo.tsx\n│   └── ...\n├── radix\n│   ├── ui           # Auto-generated by build-registry.mts\n│   ├── lib          # Auto-generated by build-registry.mts\n│   ├── hooks        # Auto-generated by build-registry.mts\n│   └── ...\n└── __index__.tsx     # Auto-generated by build-registry.mts\n```\n\n## Adding a New Example\n\n1. Create a new `.tsx` file in `examples/base` or `examples/radix`:\n\n```tsx\n// examples/base/button-loading.tsx\nimport { Button } from \"@/examples/base/ui/button\"\n\nexport function ButtonLoading() {\n  return <Button disabled>Loading...</Button>\n}\n```\n\n2. Run the examples build to regenerate the index:\n\n```bash\npnpm examples:build\n```\n\n3. Use the example in documentation by referencing its name (filename without `.tsx`):\n\n```tsx\n<ComponentPreview name=\"button-loading\" />\n```\n\n## Notes\n\n- The `ui`, `lib`, and `hooks` directories are auto-generated during `pnpm registry:build`. Do not edit files in these directories directly.\n- Example files should be placed directly in `examples/base` or `examples/radix`, not in subdirectories.\n- Both named exports and default exports are supported.\n- After adding or removing examples, run `pnpm examples:build` to update the index.\n"
  },
  {
    "path": "apps/v4/examples/__index__.tsx",
    "content": "// @ts-nocheck\n// This file is autogenerated by scripts/build-examples-index.mts\n// Do not edit this file directly.\nimport * as React from \"react\"\n\nexport const ExamplesIndex: Record<string, Record<string, any>> = {\n  radix: {\n    \"accordion-basic\": {\n      name: \"accordion-basic\",\n      filePath: \"examples/radix/accordion-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/accordion-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-borders\": {\n      name: \"accordion-borders\",\n      filePath: \"examples/radix/accordion-borders.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/accordion-borders\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-borders\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-card\": {\n      name: \"accordion-card\",\n      filePath: \"examples/radix/accordion-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/accordion-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-demo\": {\n      name: \"accordion-demo\",\n      filePath: \"examples/radix/accordion-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/accordion-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-disabled\": {\n      name: \"accordion-disabled\",\n      filePath: \"examples/radix/accordion-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/accordion-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-multiple\": {\n      name: \"accordion-multiple\",\n      filePath: \"examples/radix/accordion-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/accordion-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-rtl\": {\n      name: \"accordion-rtl\",\n      filePath: \"examples/radix/accordion-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/accordion-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-action\": {\n      name: \"alert-action\",\n      filePath: \"examples/radix/alert-action.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-action\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-action\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-basic\": {\n      name: \"alert-basic\",\n      filePath: \"examples/radix/alert-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-colors\": {\n      name: \"alert-colors\",\n      filePath: \"examples/radix/alert-colors.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-colors\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-colors\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-demo\": {\n      name: \"alert-demo\",\n      filePath: \"examples/radix/alert-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-destructive\": {\n      name: \"alert-destructive\",\n      filePath: \"examples/radix/alert-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-basic\": {\n      name: \"alert-dialog-basic\",\n      filePath: \"examples/radix/alert-dialog-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-dialog-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-demo\": {\n      name: \"alert-dialog-demo\",\n      filePath: \"examples/radix/alert-dialog-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-dialog-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-destructive\": {\n      name: \"alert-dialog-destructive\",\n      filePath: \"examples/radix/alert-dialog-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-dialog-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-media\": {\n      name: \"alert-dialog-media\",\n      filePath: \"examples/radix/alert-dialog-media.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-dialog-media\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-media\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-rtl\": {\n      name: \"alert-dialog-rtl\",\n      filePath: \"examples/radix/alert-dialog-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-dialog-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-small-media\": {\n      name: \"alert-dialog-small-media\",\n      filePath: \"examples/radix/alert-dialog-small-media.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-dialog-small-media\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-small-media\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-small\": {\n      name: \"alert-dialog-small\",\n      filePath: \"examples/radix/alert-dialog-small.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-dialog-small\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-small\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-rtl\": {\n      name: \"alert-rtl\",\n      filePath: \"examples/radix/alert-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/alert-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"aspect-ratio-demo\": {\n      name: \"aspect-ratio-demo\",\n      filePath: \"examples/radix/aspect-ratio-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/aspect-ratio-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"aspect-ratio-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"aspect-ratio-portrait\": {\n      name: \"aspect-ratio-portrait\",\n      filePath: \"examples/radix/aspect-ratio-portrait.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/aspect-ratio-portrait\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"aspect-ratio-portrait\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"aspect-ratio-rtl\": {\n      name: \"aspect-ratio-rtl\",\n      filePath: \"examples/radix/aspect-ratio-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/aspect-ratio-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"aspect-ratio-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"aspect-ratio-square\": {\n      name: \"aspect-ratio-square\",\n      filePath: \"examples/radix/aspect-ratio-square.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/aspect-ratio-square\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"aspect-ratio-square\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-badge-icon\": {\n      name: \"avatar-badge-icon\",\n      filePath: \"examples/radix/avatar-badge-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-badge-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-badge-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-badge\": {\n      name: \"avatar-badge\",\n      filePath: \"examples/radix/avatar-badge.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-badge\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-badge\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-basic\": {\n      name: \"avatar-basic\",\n      filePath: \"examples/radix/avatar-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-demo\": {\n      name: \"avatar-demo\",\n      filePath: \"examples/radix/avatar-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-dropdown\": {\n      name: \"avatar-dropdown\",\n      filePath: \"examples/radix/avatar-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-group-count-icon\": {\n      name: \"avatar-group-count-icon\",\n      filePath: \"examples/radix/avatar-group-count-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-group-count-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-group-count-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-group-count\": {\n      name: \"avatar-group-count\",\n      filePath: \"examples/radix/avatar-group-count.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-group-count\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-group-count\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-group\": {\n      name: \"avatar-group\",\n      filePath: \"examples/radix/avatar-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-rtl\": {\n      name: \"avatar-rtl\",\n      filePath: \"examples/radix/avatar-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-size\": {\n      name: \"avatar-size\",\n      filePath: \"examples/radix/avatar-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/avatar-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-colors\": {\n      name: \"badge-colors\",\n      filePath: \"examples/radix/badge-colors.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/badge-colors\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-colors\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-demo\": {\n      name: \"badge-demo\",\n      filePath: \"examples/radix/badge-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/badge-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-icon\": {\n      name: \"badge-icon\",\n      filePath: \"examples/radix/badge-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/badge-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-link\": {\n      name: \"badge-link\",\n      filePath: \"examples/radix/badge-link.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/badge-link\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-link\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-rtl\": {\n      name: \"badge-rtl\",\n      filePath: \"examples/radix/badge-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/badge-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-spinner\": {\n      name: \"badge-spinner\",\n      filePath: \"examples/radix/badge-spinner.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/badge-spinner\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-spinner\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-variants\": {\n      name: \"badge-variants\",\n      filePath: \"examples/radix/badge-variants.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/badge-variants\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-variants\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-basic\": {\n      name: \"breadcrumb-basic\",\n      filePath: \"examples/radix/breadcrumb-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/breadcrumb-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-demo\": {\n      name: \"breadcrumb-demo\",\n      filePath: \"examples/radix/breadcrumb-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/breadcrumb-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-dropdown\": {\n      name: \"breadcrumb-dropdown\",\n      filePath: \"examples/radix/breadcrumb-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/breadcrumb-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-ellipsis\": {\n      name: \"breadcrumb-ellipsis\",\n      filePath: \"examples/radix/breadcrumb-ellipsis.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/breadcrumb-ellipsis\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-ellipsis\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-link\": {\n      name: \"breadcrumb-link\",\n      filePath: \"examples/radix/breadcrumb-link.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/breadcrumb-link\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-link\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-rtl\": {\n      name: \"breadcrumb-rtl\",\n      filePath: \"examples/radix/breadcrumb-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/breadcrumb-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-separator\": {\n      name: \"breadcrumb-separator\",\n      filePath: \"examples/radix/breadcrumb-separator.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/breadcrumb-separator\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-separator\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-aschild\": {\n      name: \"button-aschild\",\n      filePath: \"examples/radix/button-aschild.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-aschild\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-aschild\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-default\": {\n      name: \"button-default\",\n      filePath: \"examples/radix/button-default.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-default\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-default\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-demo\": {\n      name: \"button-demo\",\n      filePath: \"examples/radix/button-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-destructive\": {\n      name: \"button-destructive\",\n      filePath: \"examples/radix/button-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-ghost\": {\n      name: \"button-ghost\",\n      filePath: \"examples/radix/button-ghost.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-ghost\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-ghost\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-demo\": {\n      name: \"button-group-demo\",\n      filePath: \"examples/radix/button-group-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-dropdown\": {\n      name: \"button-group-dropdown\",\n      filePath: \"examples/radix/button-group-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-input-group\": {\n      name: \"button-group-input-group\",\n      filePath: \"examples/radix/button-group-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-input\": {\n      name: \"button-group-input\",\n      filePath: \"examples/radix/button-group-input.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-input\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-input\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-nested\": {\n      name: \"button-group-nested\",\n      filePath: \"examples/radix/button-group-nested.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-nested\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-nested\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-orientation\": {\n      name: \"button-group-orientation\",\n      filePath: \"examples/radix/button-group-orientation.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-orientation\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-orientation\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-popover\": {\n      name: \"button-group-popover\",\n      filePath: \"examples/radix/button-group-popover.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-popover\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-popover\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-rtl\": {\n      name: \"button-group-rtl\",\n      filePath: \"examples/radix/button-group-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-select\": {\n      name: \"button-group-select\",\n      filePath: \"examples/radix/button-group-select.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-select\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-select\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-separator\": {\n      name: \"button-group-separator\",\n      filePath: \"examples/radix/button-group-separator.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-separator\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-separator\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-size\": {\n      name: \"button-group-size\",\n      filePath: \"examples/radix/button-group-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-split\": {\n      name: \"button-group-split\",\n      filePath: \"examples/radix/button-group-split.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-group-split\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-split\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-icon\": {\n      name: \"button-icon\",\n      filePath: \"examples/radix/button-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-link\": {\n      name: \"button-link\",\n      filePath: \"examples/radix/button-link.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-link\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-link\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-outline\": {\n      name: \"button-outline\",\n      filePath: \"examples/radix/button-outline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-outline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-outline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-rounded\": {\n      name: \"button-rounded\",\n      filePath: \"examples/radix/button-rounded.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-rounded\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-rounded\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-rtl\": {\n      name: \"button-rtl\",\n      filePath: \"examples/radix/button-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-secondary\": {\n      name: \"button-secondary\",\n      filePath: \"examples/radix/button-secondary.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-secondary\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-secondary\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-size\": {\n      name: \"button-size\",\n      filePath: \"examples/radix/button-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-spinner\": {\n      name: \"button-spinner\",\n      filePath: \"examples/radix/button-spinner.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-spinner\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-spinner\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-with-icon\": {\n      name: \"button-with-icon\",\n      filePath: \"examples/radix/button-with-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/button-with-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-with-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-basic\": {\n      name: \"calendar-basic\",\n      filePath: \"examples/radix/calendar-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-booked-dates\": {\n      name: \"calendar-booked-dates\",\n      filePath: \"examples/radix/calendar-booked-dates.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-booked-dates\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-booked-dates\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-caption\": {\n      name: \"calendar-caption\",\n      filePath: \"examples/radix/calendar-caption.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-caption\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-caption\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-custom-days\": {\n      name: \"calendar-custom-days\",\n      filePath: \"examples/radix/calendar-custom-days.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-custom-days\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-custom-days\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-demo\": {\n      name: \"calendar-demo\",\n      filePath: \"examples/radix/calendar-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-hijri\": {\n      name: \"calendar-hijri\",\n      filePath: \"examples/radix/calendar-hijri.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-hijri\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-hijri\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-multiple\": {\n      name: \"calendar-multiple\",\n      filePath: \"examples/radix/calendar-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-presets\": {\n      name: \"calendar-presets\",\n      filePath: \"examples/radix/calendar-presets.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-presets\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-presets\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-range\": {\n      name: \"calendar-range\",\n      filePath: \"examples/radix/calendar-range.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-range\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-range\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-rtl\": {\n      name: \"calendar-rtl\",\n      filePath: \"examples/radix/calendar-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-time\": {\n      name: \"calendar-time\",\n      filePath: \"examples/radix/calendar-time.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-time\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-time\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-week-numbers\": {\n      name: \"calendar-week-numbers\",\n      filePath: \"examples/radix/calendar-week-numbers.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/calendar-week-numbers\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-week-numbers\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"card-demo\": {\n      name: \"card-demo\",\n      filePath: \"examples/radix/card-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/card-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"card-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"card-image\": {\n      name: \"card-image\",\n      filePath: \"examples/radix/card-image.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/card-image\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"card-image\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"card-rtl\": {\n      name: \"card-rtl\",\n      filePath: \"examples/radix/card-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/card-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"card-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"card-small\": {\n      name: \"card-small\",\n      filePath: \"examples/radix/card-small.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/card-small\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"card-small\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-api\": {\n      name: \"carousel-api\",\n      filePath: \"examples/radix/carousel-api.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/carousel-api\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-api\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-demo\": {\n      name: \"carousel-demo\",\n      filePath: \"examples/radix/carousel-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/carousel-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-multiple\": {\n      name: \"carousel-multiple\",\n      filePath: \"examples/radix/carousel-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/carousel-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-orientation\": {\n      name: \"carousel-orientation\",\n      filePath: \"examples/radix/carousel-orientation.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/carousel-orientation\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-orientation\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-plugin\": {\n      name: \"carousel-plugin\",\n      filePath: \"examples/radix/carousel-plugin.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/carousel-plugin\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-plugin\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-rtl\": {\n      name: \"carousel-rtl\",\n      filePath: \"examples/radix/carousel-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/carousel-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-size\": {\n      name: \"carousel-size\",\n      filePath: \"examples/radix/carousel-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/carousel-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-spacing\": {\n      name: \"carousel-spacing\",\n      filePath: \"examples/radix/carousel-spacing.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/carousel-spacing\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-spacing\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-demo\": {\n      name: \"chart-demo\",\n      filePath: \"examples/radix/chart-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/chart-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example-axis\": {\n      name: \"chart-example-axis\",\n      filePath: \"examples/radix/chart-example-axis.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/chart-example-axis\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example-axis\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example-grid\": {\n      name: \"chart-example-grid\",\n      filePath: \"examples/radix/chart-example-grid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/chart-example-grid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example-grid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example-legend\": {\n      name: \"chart-example-legend\",\n      filePath: \"examples/radix/chart-example-legend.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/chart-example-legend\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example-legend\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example-tooltip\": {\n      name: \"chart-example-tooltip\",\n      filePath: \"examples/radix/chart-example-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/chart-example-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example\": {\n      name: \"chart-example\",\n      filePath: \"examples/radix/chart-example.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/chart-example\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-rtl\": {\n      name: \"chart-rtl\",\n      filePath: \"examples/radix/chart-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/chart-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-tooltip\": {\n      name: \"chart-tooltip\",\n      filePath: \"examples/radix/chart-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/chart-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-basic\": {\n      name: \"checkbox-basic\",\n      filePath: \"examples/radix/checkbox-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/checkbox-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-demo\": {\n      name: \"checkbox-demo\",\n      filePath: \"examples/radix/checkbox-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/checkbox-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-description\": {\n      name: \"checkbox-description\",\n      filePath: \"examples/radix/checkbox-description.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/checkbox-description\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-description\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-disabled\": {\n      name: \"checkbox-disabled\",\n      filePath: \"examples/radix/checkbox-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/checkbox-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-group\": {\n      name: \"checkbox-group\",\n      filePath: \"examples/radix/checkbox-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/checkbox-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-invalid\": {\n      name: \"checkbox-invalid\",\n      filePath: \"examples/radix/checkbox-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/checkbox-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-rtl\": {\n      name: \"checkbox-rtl\",\n      filePath: \"examples/radix/checkbox-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/checkbox-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-table\": {\n      name: \"checkbox-table\",\n      filePath: \"examples/radix/checkbox-table.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/checkbox-table\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-table\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-basic\": {\n      name: \"collapsible-basic\",\n      filePath: \"examples/radix/collapsible-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/collapsible-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-demo\": {\n      name: \"collapsible-demo\",\n      filePath: \"examples/radix/collapsible-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/collapsible-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-file-tree\": {\n      name: \"collapsible-file-tree\",\n      filePath: \"examples/radix/collapsible-file-tree.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/collapsible-file-tree\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-file-tree\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-rtl\": {\n      name: \"collapsible-rtl\",\n      filePath: \"examples/radix/collapsible-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/collapsible-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-settings\": {\n      name: \"collapsible-settings\",\n      filePath: \"examples/radix/collapsible-settings.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/collapsible-settings\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-settings\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-auto-highlight\": {\n      name: \"combobox-auto-highlight\",\n      filePath: \"examples/radix/combobox-auto-highlight.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-auto-highlight\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-auto-highlight\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-basic\": {\n      name: \"combobox-basic\",\n      filePath: \"examples/radix/combobox-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-clear\": {\n      name: \"combobox-clear\",\n      filePath: \"examples/radix/combobox-clear.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-clear\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-clear\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-custom\": {\n      name: \"combobox-custom\",\n      filePath: \"examples/radix/combobox-custom.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-custom\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-custom\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-demo\": {\n      name: \"combobox-demo\",\n      filePath: \"examples/radix/combobox-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-disabled\": {\n      name: \"combobox-disabled\",\n      filePath: \"examples/radix/combobox-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-groups\": {\n      name: \"combobox-groups\",\n      filePath: \"examples/radix/combobox-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-input-group\": {\n      name: \"combobox-input-group\",\n      filePath: \"examples/radix/combobox-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-invalid\": {\n      name: \"combobox-invalid\",\n      filePath: \"examples/radix/combobox-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-multiple\": {\n      name: \"combobox-multiple\",\n      filePath: \"examples/radix/combobox-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-popup\": {\n      name: \"combobox-popup\",\n      filePath: \"examples/radix/combobox-popup.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-popup\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-popup\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-rtl\": {\n      name: \"combobox-rtl\",\n      filePath: \"examples/radix/combobox-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/combobox-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-basic\": {\n      name: \"command-basic\",\n      filePath: \"examples/radix/command-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/command-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-demo\": {\n      name: \"command-demo\",\n      filePath: \"examples/radix/command-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/command-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-dialog\": {\n      name: \"command-dialog\",\n      filePath: \"examples/radix/command-dialog.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/command-dialog\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-dialog\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-groups\": {\n      name: \"command-groups\",\n      filePath: \"examples/radix/command-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/command-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-rtl\": {\n      name: \"command-rtl\",\n      filePath: \"examples/radix/command-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/command-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-scrollable\": {\n      name: \"command-scrollable\",\n      filePath: \"examples/radix/command-scrollable.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/command-scrollable\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-scrollable\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-shortcuts\": {\n      name: \"command-shortcuts\",\n      filePath: \"examples/radix/command-shortcuts.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/command-shortcuts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-shortcuts\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-basic\": {\n      name: \"context-menu-basic\",\n      filePath: \"examples/radix/context-menu-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-checkboxes\": {\n      name: \"context-menu-checkboxes\",\n      filePath: \"examples/radix/context-menu-checkboxes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-checkboxes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-checkboxes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-demo\": {\n      name: \"context-menu-demo\",\n      filePath: \"examples/radix/context-menu-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-destructive\": {\n      name: \"context-menu-destructive\",\n      filePath: \"examples/radix/context-menu-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-groups\": {\n      name: \"context-menu-groups\",\n      filePath: \"examples/radix/context-menu-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-icons\": {\n      name: \"context-menu-icons\",\n      filePath: \"examples/radix/context-menu-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-radio\": {\n      name: \"context-menu-radio\",\n      filePath: \"examples/radix/context-menu-radio.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-radio\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-radio\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-rtl\": {\n      name: \"context-menu-rtl\",\n      filePath: \"examples/radix/context-menu-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-shortcuts\": {\n      name: \"context-menu-shortcuts\",\n      filePath: \"examples/radix/context-menu-shortcuts.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-shortcuts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-shortcuts\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-sides\": {\n      name: \"context-menu-sides\",\n      filePath: \"examples/radix/context-menu-sides.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-sides\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-sides\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-submenu\": {\n      name: \"context-menu-submenu\",\n      filePath: \"examples/radix/context-menu-submenu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/context-menu-submenu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-submenu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"data-picker-with-dropdowns\": {\n      name: \"data-picker-with-dropdowns\",\n      filePath: \"examples/radix/data-picker-with-dropdowns.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/data-picker-with-dropdowns\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"data-picker-with-dropdowns\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"data-table-demo\": {\n      name: \"data-table-demo\",\n      filePath: \"examples/radix/data-table-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/data-table-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"data-table-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"data-table-rtl\": {\n      name: \"data-table-rtl\",\n      filePath: \"examples/radix/data-table-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/data-table-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"data-table-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-basic\": {\n      name: \"date-picker-basic\",\n      filePath: \"examples/radix/date-picker-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/date-picker-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-demo\": {\n      name: \"date-picker-demo\",\n      filePath: \"examples/radix/date-picker-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/date-picker-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-dob\": {\n      name: \"date-picker-dob\",\n      filePath: \"examples/radix/date-picker-dob.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/date-picker-dob\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-dob\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-input\": {\n      name: \"date-picker-input\",\n      filePath: \"examples/radix/date-picker-input.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/date-picker-input\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-input\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-natural-language\": {\n      name: \"date-picker-natural-language\",\n      filePath: \"examples/radix/date-picker-natural-language.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/date-picker-natural-language\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-natural-language\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-range\": {\n      name: \"date-picker-range\",\n      filePath: \"examples/radix/date-picker-range.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/date-picker-range\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-range\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-rtl\": {\n      name: \"date-picker-rtl\",\n      filePath: \"examples/radix/date-picker-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/date-picker-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-time\": {\n      name: \"date-picker-time\",\n      filePath: \"examples/radix/date-picker-time.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/date-picker-time\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-time\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-close-button\": {\n      name: \"dialog-close-button\",\n      filePath: \"examples/radix/dialog-close-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dialog-close-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-close-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-demo\": {\n      name: \"dialog-demo\",\n      filePath: \"examples/radix/dialog-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dialog-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-no-close-button\": {\n      name: \"dialog-no-close-button\",\n      filePath: \"examples/radix/dialog-no-close-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dialog-no-close-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-no-close-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-rtl\": {\n      name: \"dialog-rtl\",\n      filePath: \"examples/radix/dialog-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dialog-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-scrollable-content\": {\n      name: \"dialog-scrollable-content\",\n      filePath: \"examples/radix/dialog-scrollable-content.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dialog-scrollable-content\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-scrollable-content\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-sticky-footer\": {\n      name: \"dialog-sticky-footer\",\n      filePath: \"examples/radix/dialog-sticky-footer.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dialog-sticky-footer\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-sticky-footer\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-demo\": {\n      name: \"drawer-demo\",\n      filePath: \"examples/radix/drawer-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/drawer-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-dialog\": {\n      name: \"drawer-dialog\",\n      filePath: \"examples/radix/drawer-dialog.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/drawer-dialog\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-dialog\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-rtl\": {\n      name: \"drawer-rtl\",\n      filePath: \"examples/radix/drawer-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/drawer-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-scrollable-content\": {\n      name: \"drawer-scrollable-content\",\n      filePath: \"examples/radix/drawer-scrollable-content.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/drawer-scrollable-content\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-scrollable-content\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-sides\": {\n      name: \"drawer-sides\",\n      filePath: \"examples/radix/drawer-sides.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/drawer-sides\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-sides\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-avatar\": {\n      name: \"dropdown-menu-avatar\",\n      filePath: \"examples/radix/dropdown-menu-avatar.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-avatar\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-avatar\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-basic\": {\n      name: \"dropdown-menu-basic\",\n      filePath: \"examples/radix/dropdown-menu-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-checkboxes-icons\": {\n      name: \"dropdown-menu-checkboxes-icons\",\n      filePath: \"examples/radix/dropdown-menu-checkboxes-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-checkboxes-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-checkboxes-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-checkboxes\": {\n      name: \"dropdown-menu-checkboxes\",\n      filePath: \"examples/radix/dropdown-menu-checkboxes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-checkboxes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-checkboxes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-complex\": {\n      name: \"dropdown-menu-complex\",\n      filePath: \"examples/radix/dropdown-menu-complex.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-complex\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-complex\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-demo\": {\n      name: \"dropdown-menu-demo\",\n      filePath: \"examples/radix/dropdown-menu-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-destructive\": {\n      name: \"dropdown-menu-destructive\",\n      filePath: \"examples/radix/dropdown-menu-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-icons\": {\n      name: \"dropdown-menu-icons\",\n      filePath: \"examples/radix/dropdown-menu-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-radio-group\": {\n      name: \"dropdown-menu-radio-group\",\n      filePath: \"examples/radix/dropdown-menu-radio-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-radio-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-radio-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-radio-icons\": {\n      name: \"dropdown-menu-radio-icons\",\n      filePath: \"examples/radix/dropdown-menu-radio-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-radio-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-radio-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-rtl\": {\n      name: \"dropdown-menu-rtl\",\n      filePath: \"examples/radix/dropdown-menu-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-shortcuts\": {\n      name: \"dropdown-menu-shortcuts\",\n      filePath: \"examples/radix/dropdown-menu-shortcuts.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-shortcuts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-shortcuts\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-submenu\": {\n      name: \"dropdown-menu-submenu\",\n      filePath: \"examples/radix/dropdown-menu-submenu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/dropdown-menu-submenu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-submenu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-avatar-group\": {\n      name: \"empty-avatar-group\",\n      filePath: \"examples/radix/empty-avatar-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/empty-avatar-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-avatar-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-avatar\": {\n      name: \"empty-avatar\",\n      filePath: \"examples/radix/empty-avatar.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/empty-avatar\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-avatar\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-background\": {\n      name: \"empty-background\",\n      filePath: \"examples/radix/empty-background.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/empty-background\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-background\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-card\": {\n      name: \"empty-card\",\n      filePath: \"examples/radix/empty-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/empty-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-demo\": {\n      name: \"empty-demo\",\n      filePath: \"examples/radix/empty-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/empty-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-input-group\": {\n      name: \"empty-input-group\",\n      filePath: \"examples/radix/empty-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/empty-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-outline\": {\n      name: \"empty-outline\",\n      filePath: \"examples/radix/empty-outline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/empty-outline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-outline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-rtl\": {\n      name: \"empty-rtl\",\n      filePath: \"examples/radix/empty-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/empty-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-checkbox\": {\n      name: \"field-checkbox\",\n      filePath: \"examples/radix/field-checkbox.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-checkbox\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-checkbox\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-choice-card\": {\n      name: \"field-choice-card\",\n      filePath: \"examples/radix/field-choice-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-choice-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-choice-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-demo\": {\n      name: \"field-demo\",\n      filePath: \"examples/radix/field-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-fieldset\": {\n      name: \"field-fieldset\",\n      filePath: \"examples/radix/field-fieldset.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-fieldset\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-fieldset\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-group\": {\n      name: \"field-group\",\n      filePath: \"examples/radix/field-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-input\": {\n      name: \"field-input\",\n      filePath: \"examples/radix/field-input.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-input\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-input\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-radio\": {\n      name: \"field-radio\",\n      filePath: \"examples/radix/field-radio.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-radio\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-radio\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-responsive\": {\n      name: \"field-responsive\",\n      filePath: \"examples/radix/field-responsive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-responsive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-responsive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-rtl\": {\n      name: \"field-rtl\",\n      filePath: \"examples/radix/field-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-select\": {\n      name: \"field-select\",\n      filePath: \"examples/radix/field-select.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-select\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-select\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-slider\": {\n      name: \"field-slider\",\n      filePath: \"examples/radix/field-slider.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-slider\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-slider\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-switch\": {\n      name: \"field-switch\",\n      filePath: \"examples/radix/field-switch.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-switch\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-switch\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-textarea\": {\n      name: \"field-textarea\",\n      filePath: \"examples/radix/field-textarea.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/field-textarea\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-textarea\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"file-upload-list\": {\n      name: \"file-upload-list\",\n      filePath: \"examples/radix/file-upload-list.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/file-upload-list\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"file-upload-list\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"hover-card-demo\": {\n      name: \"hover-card-demo\",\n      filePath: \"examples/radix/hover-card-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/hover-card-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"hover-card-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"hover-card-rtl\": {\n      name: \"hover-card-rtl\",\n      filePath: \"examples/radix/hover-card-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/hover-card-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"hover-card-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"hover-card-sides\": {\n      name: \"hover-card-sides\",\n      filePath: \"examples/radix/hover-card-sides.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/hover-card-sides\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"hover-card-sides\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-badge\": {\n      name: \"input-badge\",\n      filePath: \"examples/radix/input-badge.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-badge\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-badge\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-basic\": {\n      name: \"input-basic\",\n      filePath: \"examples/radix/input-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-button-group\": {\n      name: \"input-button-group\",\n      filePath: \"examples/radix/input-button-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-button-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-button-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-demo\": {\n      name: \"input-demo\",\n      filePath: \"examples/radix/input-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-disabled\": {\n      name: \"input-disabled\",\n      filePath: \"examples/radix/input-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-field\": {\n      name: \"input-field\",\n      filePath: \"examples/radix/input-field.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-field\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-field\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-fieldgroup\": {\n      name: \"input-fieldgroup\",\n      filePath: \"examples/radix/input-fieldgroup.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-fieldgroup\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-fieldgroup\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-file\": {\n      name: \"input-file\",\n      filePath: \"examples/radix/input-file.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-file\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-file\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-form\": {\n      name: \"input-form\",\n      filePath: \"examples/radix/input-form.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-form\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-form\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-grid\": {\n      name: \"input-grid\",\n      filePath: \"examples/radix/input-grid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-grid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-grid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-basic\": {\n      name: \"input-group-basic\",\n      filePath: \"examples/radix/input-group-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-block-end\": {\n      name: \"input-group-block-end\",\n      filePath: \"examples/radix/input-group-block-end.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-block-end\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-block-end\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-block-start\": {\n      name: \"input-group-block-start\",\n      filePath: \"examples/radix/input-group-block-start.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-block-start\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-block-start\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-button-group\": {\n      name: \"input-group-button-group\",\n      filePath: \"examples/radix/input-group-button-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-button-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-button-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-button\": {\n      name: \"input-group-button\",\n      filePath: \"examples/radix/input-group-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-custom\": {\n      name: \"input-group-custom\",\n      filePath: \"examples/radix/input-group-custom.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-custom\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-custom\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-demo\": {\n      name: \"input-group-demo\",\n      filePath: \"examples/radix/input-group-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-dropdown\": {\n      name: \"input-group-dropdown\",\n      filePath: \"examples/radix/input-group-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-icon\": {\n      name: \"input-group-icon\",\n      filePath: \"examples/radix/input-group-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-in-card\": {\n      name: \"input-group-in-card\",\n      filePath: \"examples/radix/input-group-in-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-in-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-in-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-inline-end\": {\n      name: \"input-group-inline-end\",\n      filePath: \"examples/radix/input-group-inline-end.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-inline-end\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-inline-end\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-inline-start\": {\n      name: \"input-group-inline-start\",\n      filePath: \"examples/radix/input-group-inline-start.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-inline-start\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-inline-start\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-kbd\": {\n      name: \"input-group-kbd\",\n      filePath: \"examples/radix/input-group-kbd.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-kbd\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-kbd\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-label\": {\n      name: \"input-group-label\",\n      filePath: \"examples/radix/input-group-label.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-label\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-label\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-rtl\": {\n      name: \"input-group-rtl\",\n      filePath: \"examples/radix/input-group-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-spinner\": {\n      name: \"input-group-spinner\",\n      filePath: \"examples/radix/input-group-spinner.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-spinner\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-spinner\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-text\": {\n      name: \"input-group-text\",\n      filePath: \"examples/radix/input-group-text.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-text\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-text\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-textarea-examples\": {\n      name: \"input-group-textarea-examples\",\n      filePath: \"examples/radix/input-group-textarea-examples.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-textarea-examples\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-textarea-examples\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-textarea\": {\n      name: \"input-group-textarea\",\n      filePath: \"examples/radix/input-group-textarea.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-textarea\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-textarea\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-tooltip\": {\n      name: \"input-group-tooltip\",\n      filePath: \"examples/radix/input-group-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-with-addons\": {\n      name: \"input-group-with-addons\",\n      filePath: \"examples/radix/input-group-with-addons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-with-addons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-with-addons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-with-buttons\": {\n      name: \"input-group-with-buttons\",\n      filePath: \"examples/radix/input-group-with-buttons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-with-buttons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-with-buttons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-with-kbd\": {\n      name: \"input-group-with-kbd\",\n      filePath: \"examples/radix/input-group-with-kbd.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-with-kbd\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-with-kbd\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-with-tooltip\": {\n      name: \"input-group-with-tooltip\",\n      filePath: \"examples/radix/input-group-with-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-group-with-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-with-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-inline\": {\n      name: \"input-inline\",\n      filePath: \"examples/radix/input-inline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-inline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-inline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-input-group\": {\n      name: \"input-input-group\",\n      filePath: \"examples/radix/input-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-invalid\": {\n      name: \"input-invalid\",\n      filePath: \"examples/radix/input-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-alphanumeric\": {\n      name: \"input-otp-alphanumeric\",\n      filePath: \"examples/radix/input-otp-alphanumeric.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-alphanumeric\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-alphanumeric\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-controlled\": {\n      name: \"input-otp-controlled\",\n      filePath: \"examples/radix/input-otp-controlled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-controlled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-controlled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-demo\": {\n      name: \"input-otp-demo\",\n      filePath: \"examples/radix/input-otp-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-disabled\": {\n      name: \"input-otp-disabled\",\n      filePath: \"examples/radix/input-otp-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-form\": {\n      name: \"input-otp-form\",\n      filePath: \"examples/radix/input-otp-form.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-form\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-form\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-four-digits\": {\n      name: \"input-otp-four-digits\",\n      filePath: \"examples/radix/input-otp-four-digits.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-four-digits\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-four-digits\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-invalid\": {\n      name: \"input-otp-invalid\",\n      filePath: \"examples/radix/input-otp-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-pattern\": {\n      name: \"input-otp-pattern\",\n      filePath: \"examples/radix/input-otp-pattern.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-pattern\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-pattern\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-rtl\": {\n      name: \"input-otp-rtl\",\n      filePath: \"examples/radix/input-otp-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-separator\": {\n      name: \"input-otp-separator\",\n      filePath: \"examples/radix/input-otp-separator.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-otp-separator\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-separator\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-required\": {\n      name: \"input-required\",\n      filePath: \"examples/radix/input-required.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-required\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-required\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-rtl\": {\n      name: \"input-rtl\",\n      filePath: \"examples/radix/input-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/input-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-avatar\": {\n      name: \"item-avatar\",\n      filePath: \"examples/radix/item-avatar.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-avatar\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-avatar\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-demo\": {\n      name: \"item-demo\",\n      filePath: \"examples/radix/item-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-dropdown\": {\n      name: \"item-dropdown\",\n      filePath: \"examples/radix/item-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-group\": {\n      name: \"item-group\",\n      filePath: \"examples/radix/item-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-header\": {\n      name: \"item-header\",\n      filePath: \"examples/radix/item-header.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-header\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-header\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-icon\": {\n      name: \"item-icon\",\n      filePath: \"examples/radix/item-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-image\": {\n      name: \"item-image\",\n      filePath: \"examples/radix/item-image.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-image\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-image\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-link\": {\n      name: \"item-link\",\n      filePath: \"examples/radix/item-link.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-link\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-link\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-rtl\": {\n      name: \"item-rtl\",\n      filePath: \"examples/radix/item-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-size\": {\n      name: \"item-size\",\n      filePath: \"examples/radix/item-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-variant\": {\n      name: \"item-variant\",\n      filePath: \"examples/radix/item-variant.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/item-variant\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-variant\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-button\": {\n      name: \"kbd-button\",\n      filePath: \"examples/radix/kbd-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/kbd-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-demo\": {\n      name: \"kbd-demo\",\n      filePath: \"examples/radix/kbd-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/kbd-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-group\": {\n      name: \"kbd-group\",\n      filePath: \"examples/radix/kbd-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/kbd-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-input-group\": {\n      name: \"kbd-input-group\",\n      filePath: \"examples/radix/kbd-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/kbd-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-rtl\": {\n      name: \"kbd-rtl\",\n      filePath: \"examples/radix/kbd-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/kbd-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-tooltip\": {\n      name: \"kbd-tooltip\",\n      filePath: \"examples/radix/kbd-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/kbd-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"label-demo\": {\n      name: \"label-demo\",\n      filePath: \"examples/radix/label-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/label-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"label-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"label-rtl\": {\n      name: \"label-rtl\",\n      filePath: \"examples/radix/label-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/label-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"label-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-checkbox\": {\n      name: \"menubar-checkbox\",\n      filePath: \"examples/radix/menubar-checkbox.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/menubar-checkbox\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-checkbox\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-demo\": {\n      name: \"menubar-demo\",\n      filePath: \"examples/radix/menubar-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/menubar-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-icons\": {\n      name: \"menubar-icons\",\n      filePath: \"examples/radix/menubar-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/menubar-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-radio\": {\n      name: \"menubar-radio\",\n      filePath: \"examples/radix/menubar-radio.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/menubar-radio\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-radio\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-rtl\": {\n      name: \"menubar-rtl\",\n      filePath: \"examples/radix/menubar-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/menubar-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-submenu\": {\n      name: \"menubar-submenu\",\n      filePath: \"examples/radix/menubar-submenu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/menubar-submenu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-submenu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"muted-item-group\": {\n      name: \"muted-item-group\",\n      filePath: \"examples/radix/muted-item-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/muted-item-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"muted-item-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-demo\": {\n      name: \"native-select-demo\",\n      filePath: \"examples/radix/native-select-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/native-select-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-disabled\": {\n      name: \"native-select-disabled\",\n      filePath: \"examples/radix/native-select-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/native-select-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-groups\": {\n      name: \"native-select-groups\",\n      filePath: \"examples/radix/native-select-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/native-select-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-invalid\": {\n      name: \"native-select-invalid\",\n      filePath: \"examples/radix/native-select-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/native-select-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-rtl\": {\n      name: \"native-select-rtl\",\n      filePath: \"examples/radix/native-select-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/native-select-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"navigation-menu-demo\": {\n      name: \"navigation-menu-demo\",\n      filePath: \"examples/radix/navigation-menu-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/navigation-menu-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"navigation-menu-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"navigation-menu-rtl\": {\n      name: \"navigation-menu-rtl\",\n      filePath: \"examples/radix/navigation-menu-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/navigation-menu-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"navigation-menu-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"outline-item-group\": {\n      name: \"outline-item-group\",\n      filePath: \"examples/radix/outline-item-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/outline-item-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"outline-item-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"pagination-demo\": {\n      name: \"pagination-demo\",\n      filePath: \"examples/radix/pagination-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/pagination-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"pagination-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"pagination-icons-only\": {\n      name: \"pagination-icons-only\",\n      filePath: \"examples/radix/pagination-icons-only.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/pagination-icons-only\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"pagination-icons-only\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"pagination-rtl\": {\n      name: \"pagination-rtl\",\n      filePath: \"examples/radix/pagination-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/pagination-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"pagination-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"pagination-simple\": {\n      name: \"pagination-simple\",\n      filePath: \"examples/radix/pagination-simple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/pagination-simple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"pagination-simple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-alignments\": {\n      name: \"popover-alignments\",\n      filePath: \"examples/radix/popover-alignments.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/popover-alignments\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-alignments\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-basic\": {\n      name: \"popover-basic\",\n      filePath: \"examples/radix/popover-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/popover-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-demo\": {\n      name: \"popover-demo\",\n      filePath: \"examples/radix/popover-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/popover-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-form\": {\n      name: \"popover-form\",\n      filePath: \"examples/radix/popover-form.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/popover-form\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-form\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-rtl\": {\n      name: \"popover-rtl\",\n      filePath: \"examples/radix/popover-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/popover-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"progress-controlled\": {\n      name: \"progress-controlled\",\n      filePath: \"examples/radix/progress-controlled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/progress-controlled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"progress-controlled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"progress-demo\": {\n      name: \"progress-demo\",\n      filePath: \"examples/radix/progress-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/progress-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"progress-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"progress-label\": {\n      name: \"progress-label\",\n      filePath: \"examples/radix/progress-label.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/progress-label\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"progress-label\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"progress-rtl\": {\n      name: \"progress-rtl\",\n      filePath: \"examples/radix/progress-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/progress-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"progress-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-fields\": {\n      name: \"radio-fields\",\n      filePath: \"examples/radix/radio-fields.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/radio-fields\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-fields\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-choice-card\": {\n      name: \"radio-group-choice-card\",\n      filePath: \"examples/radix/radio-group-choice-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/radio-group-choice-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-choice-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-demo\": {\n      name: \"radio-group-demo\",\n      filePath: \"examples/radix/radio-group-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/radio-group-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-description\": {\n      name: \"radio-group-description\",\n      filePath: \"examples/radix/radio-group-description.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/radio-group-description\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-description\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-disabled\": {\n      name: \"radio-group-disabled\",\n      filePath: \"examples/radix/radio-group-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/radio-group-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-fieldset\": {\n      name: \"radio-group-fieldset\",\n      filePath: \"examples/radix/radio-group-fieldset.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/radio-group-fieldset\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-fieldset\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-invalid\": {\n      name: \"radio-group-invalid\",\n      filePath: \"examples/radix/radio-group-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/radio-group-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-rtl\": {\n      name: \"radio-group-rtl\",\n      filePath: \"examples/radix/radio-group-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/radio-group-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"resizable-demo\": {\n      name: \"resizable-demo\",\n      filePath: \"examples/radix/resizable-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/resizable-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"resizable-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"resizable-handle\": {\n      name: \"resizable-handle\",\n      filePath: \"examples/radix/resizable-handle.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/resizable-handle\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"resizable-handle\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"resizable-rtl\": {\n      name: \"resizable-rtl\",\n      filePath: \"examples/radix/resizable-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/resizable-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"resizable-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"resizable-vertical\": {\n      name: \"resizable-vertical\",\n      filePath: \"examples/radix/resizable-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/resizable-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"resizable-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"scroll-area-demo\": {\n      name: \"scroll-area-demo\",\n      filePath: \"examples/radix/scroll-area-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/scroll-area-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"scroll-area-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"scroll-area-horizontal-demo\": {\n      name: \"scroll-area-horizontal-demo\",\n      filePath: \"examples/radix/scroll-area-horizontal-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/scroll-area-horizontal-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"scroll-area-horizontal-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"scroll-area-rtl\": {\n      name: \"scroll-area-rtl\",\n      filePath: \"examples/radix/scroll-area-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/scroll-area-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"scroll-area-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-align-item\": {\n      name: \"select-align-item\",\n      filePath: \"examples/radix/select-align-item.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/select-align-item\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-align-item\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-demo\": {\n      name: \"select-demo\",\n      filePath: \"examples/radix/select-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/select-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-disabled\": {\n      name: \"select-disabled\",\n      filePath: \"examples/radix/select-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/select-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-groups\": {\n      name: \"select-groups\",\n      filePath: \"examples/radix/select-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/select-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-invalid\": {\n      name: \"select-invalid\",\n      filePath: \"examples/radix/select-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/select-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-rtl\": {\n      name: \"select-rtl\",\n      filePath: \"examples/radix/select-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/select-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-scrollable\": {\n      name: \"select-scrollable\",\n      filePath: \"examples/radix/select-scrollable.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/select-scrollable\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-scrollable\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-demo\": {\n      name: \"separator-demo\",\n      filePath: \"examples/radix/separator-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/separator-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-list\": {\n      name: \"separator-list\",\n      filePath: \"examples/radix/separator-list.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/separator-list\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-list\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-menu\": {\n      name: \"separator-menu\",\n      filePath: \"examples/radix/separator-menu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/separator-menu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-menu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-rtl\": {\n      name: \"separator-rtl\",\n      filePath: \"examples/radix/separator-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/separator-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-vertical\": {\n      name: \"separator-vertical\",\n      filePath: \"examples/radix/separator-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/separator-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sheet-demo\": {\n      name: \"sheet-demo\",\n      filePath: \"examples/radix/sheet-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sheet-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sheet-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sheet-no-close-button\": {\n      name: \"sheet-no-close-button\",\n      filePath: \"examples/radix/sheet-no-close-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sheet-no-close-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sheet-no-close-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sheet-rtl\": {\n      name: \"sheet-rtl\",\n      filePath: \"examples/radix/sheet-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sheet-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sheet-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sheet-side\": {\n      name: \"sheet-side\",\n      filePath: \"examples/radix/sheet-side.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sheet-side\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sheet-side\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-controlled\": {\n      name: \"sidebar-controlled\",\n      filePath: \"examples/radix/sidebar-controlled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-controlled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-controlled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-demo\": {\n      name: \"sidebar-demo\",\n      filePath: \"examples/radix/sidebar-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-footer\": {\n      name: \"sidebar-footer\",\n      filePath: \"examples/radix/sidebar-footer.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-footer\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-footer\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-group-action\": {\n      name: \"sidebar-group-action\",\n      filePath: \"examples/radix/sidebar-group-action.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-group-action\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-group-action\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-group-collapsible\": {\n      name: \"sidebar-group-collapsible\",\n      filePath: \"examples/radix/sidebar-group-collapsible.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-group-collapsible\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-group-collapsible\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-group\": {\n      name: \"sidebar-group\",\n      filePath: \"examples/radix/sidebar-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-header\": {\n      name: \"sidebar-header\",\n      filePath: \"examples/radix/sidebar-header.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-header\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-header\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu-action\": {\n      name: \"sidebar-menu-action\",\n      filePath: \"examples/radix/sidebar-menu-action.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-menu-action\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu-action\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu-badge\": {\n      name: \"sidebar-menu-badge\",\n      filePath: \"examples/radix/sidebar-menu-badge.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-menu-badge\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu-badge\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu-collapsible\": {\n      name: \"sidebar-menu-collapsible\",\n      filePath: \"examples/radix/sidebar-menu-collapsible.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-menu-collapsible\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu-collapsible\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu-sub\": {\n      name: \"sidebar-menu-sub\",\n      filePath: \"examples/radix/sidebar-menu-sub.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-menu-sub\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu-sub\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu\": {\n      name: \"sidebar-menu\",\n      filePath: \"examples/radix/sidebar-menu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-menu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-rsc\": {\n      name: \"sidebar-rsc\",\n      filePath: \"examples/radix/sidebar-rsc.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-rsc\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-rsc\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-rtl\": {\n      name: \"sidebar-rtl\",\n      filePath: \"examples/radix/sidebar-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sidebar-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-avatar\": {\n      name: \"skeleton-avatar\",\n      filePath: \"examples/radix/skeleton-avatar.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/skeleton-avatar\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-avatar\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-card\": {\n      name: \"skeleton-card\",\n      filePath: \"examples/radix/skeleton-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/skeleton-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-demo\": {\n      name: \"skeleton-demo\",\n      filePath: \"examples/radix/skeleton-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/skeleton-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-form\": {\n      name: \"skeleton-form\",\n      filePath: \"examples/radix/skeleton-form.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/skeleton-form\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-form\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-rtl\": {\n      name: \"skeleton-rtl\",\n      filePath: \"examples/radix/skeleton-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/skeleton-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-table\": {\n      name: \"skeleton-table\",\n      filePath: \"examples/radix/skeleton-table.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/skeleton-table\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-table\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-text\": {\n      name: \"skeleton-text\",\n      filePath: \"examples/radix/skeleton-text.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/skeleton-text\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-text\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-controlled\": {\n      name: \"slider-controlled\",\n      filePath: \"examples/radix/slider-controlled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/slider-controlled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-controlled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-demo\": {\n      name: \"slider-demo\",\n      filePath: \"examples/radix/slider-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/slider-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-disabled\": {\n      name: \"slider-disabled\",\n      filePath: \"examples/radix/slider-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/slider-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-multiple\": {\n      name: \"slider-multiple\",\n      filePath: \"examples/radix/slider-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/slider-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-range\": {\n      name: \"slider-range\",\n      filePath: \"examples/radix/slider-range.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/slider-range\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-range\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-rtl\": {\n      name: \"slider-rtl\",\n      filePath: \"examples/radix/slider-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/slider-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-vertical\": {\n      name: \"slider-vertical\",\n      filePath: \"examples/radix/slider-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/slider-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sonner-demo\": {\n      name: \"sonner-demo\",\n      filePath: \"examples/radix/sonner-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sonner-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sonner-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sonner-description\": {\n      name: \"sonner-description\",\n      filePath: \"examples/radix/sonner-description.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sonner-description\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sonner-description\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sonner-position\": {\n      name: \"sonner-position\",\n      filePath: \"examples/radix/sonner-position.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sonner-position\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sonner-position\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sonner-types\": {\n      name: \"sonner-types\",\n      filePath: \"examples/radix/sonner-types.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/sonner-types\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sonner-types\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-badge\": {\n      name: \"spinner-badge\",\n      filePath: \"examples/radix/spinner-badge.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/spinner-badge\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-badge\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-button\": {\n      name: \"spinner-button\",\n      filePath: \"examples/radix/spinner-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/spinner-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-custom\": {\n      name: \"spinner-custom\",\n      filePath: \"examples/radix/spinner-custom.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/spinner-custom\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-custom\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-demo\": {\n      name: \"spinner-demo\",\n      filePath: \"examples/radix/spinner-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/spinner-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-empty\": {\n      name: \"spinner-empty\",\n      filePath: \"examples/radix/spinner-empty.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/spinner-empty\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-empty\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-input-group\": {\n      name: \"spinner-input-group\",\n      filePath: \"examples/radix/spinner-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/spinner-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-rtl\": {\n      name: \"spinner-rtl\",\n      filePath: \"examples/radix/spinner-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/spinner-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-size\": {\n      name: \"spinner-size\",\n      filePath: \"examples/radix/spinner-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/spinner-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-choice-card\": {\n      name: \"switch-choice-card\",\n      filePath: \"examples/radix/switch-choice-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/switch-choice-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-choice-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-demo\": {\n      name: \"switch-demo\",\n      filePath: \"examples/radix/switch-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/switch-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-description\": {\n      name: \"switch-description\",\n      filePath: \"examples/radix/switch-description.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/switch-description\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-description\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-disabled\": {\n      name: \"switch-disabled\",\n      filePath: \"examples/radix/switch-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/switch-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-invalid\": {\n      name: \"switch-invalid\",\n      filePath: \"examples/radix/switch-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/switch-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-rtl\": {\n      name: \"switch-rtl\",\n      filePath: \"examples/radix/switch-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/switch-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-sizes\": {\n      name: \"switch-sizes\",\n      filePath: \"examples/radix/switch-sizes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/switch-sizes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-sizes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"table-actions\": {\n      name: \"table-actions\",\n      filePath: \"examples/radix/table-actions.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/table-actions\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"table-actions\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"table-demo\": {\n      name: \"table-demo\",\n      filePath: \"examples/radix/table-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/table-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"table-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"table-footer\": {\n      name: \"table-footer\",\n      filePath: \"examples/radix/table-footer.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/table-footer\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"table-footer\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"table-rtl\": {\n      name: \"table-rtl\",\n      filePath: \"examples/radix/table-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/table-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"table-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-demo\": {\n      name: \"tabs-demo\",\n      filePath: \"examples/radix/tabs-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tabs-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-disabled\": {\n      name: \"tabs-disabled\",\n      filePath: \"examples/radix/tabs-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tabs-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-icons\": {\n      name: \"tabs-icons\",\n      filePath: \"examples/radix/tabs-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tabs-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-line\": {\n      name: \"tabs-line\",\n      filePath: \"examples/radix/tabs-line.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tabs-line\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-line\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-rtl\": {\n      name: \"tabs-rtl\",\n      filePath: \"examples/radix/tabs-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tabs-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-vertical\": {\n      name: \"tabs-vertical\",\n      filePath: \"examples/radix/tabs-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tabs-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-button\": {\n      name: \"textarea-button\",\n      filePath: \"examples/radix/textarea-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/textarea-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-demo\": {\n      name: \"textarea-demo\",\n      filePath: \"examples/radix/textarea-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/textarea-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-disabled\": {\n      name: \"textarea-disabled\",\n      filePath: \"examples/radix/textarea-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/textarea-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-field\": {\n      name: \"textarea-field\",\n      filePath: \"examples/radix/textarea-field.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/textarea-field\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-field\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-invalid\": {\n      name: \"textarea-invalid\",\n      filePath: \"examples/radix/textarea-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/textarea-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-rtl\": {\n      name: \"textarea-rtl\",\n      filePath: \"examples/radix/textarea-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/textarea-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-demo\": {\n      name: \"toggle-demo\",\n      filePath: \"examples/radix/toggle-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-disabled\": {\n      name: \"toggle-disabled\",\n      filePath: \"examples/radix/toggle-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-demo\": {\n      name: \"toggle-group-demo\",\n      filePath: \"examples/radix/toggle-group-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-group-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-disabled\": {\n      name: \"toggle-group-disabled\",\n      filePath: \"examples/radix/toggle-group-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-group-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-font-weight-selector\": {\n      name: \"toggle-group-font-weight-selector\",\n      filePath: \"examples/radix/toggle-group-font-weight-selector.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-group-font-weight-selector\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-font-weight-selector\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-outline\": {\n      name: \"toggle-group-outline\",\n      filePath: \"examples/radix/toggle-group-outline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-group-outline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-outline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-rtl\": {\n      name: \"toggle-group-rtl\",\n      filePath: \"examples/radix/toggle-group-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-group-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-sizes\": {\n      name: \"toggle-group-sizes\",\n      filePath: \"examples/radix/toggle-group-sizes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-group-sizes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-sizes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-spacing\": {\n      name: \"toggle-group-spacing\",\n      filePath: \"examples/radix/toggle-group-spacing.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-group-spacing\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-spacing\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-vertical\": {\n      name: \"toggle-group-vertical\",\n      filePath: \"examples/radix/toggle-group-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-group-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-outline\": {\n      name: \"toggle-outline\",\n      filePath: \"examples/radix/toggle-outline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-outline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-outline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-rtl\": {\n      name: \"toggle-rtl\",\n      filePath: \"examples/radix/toggle-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-sizes\": {\n      name: \"toggle-sizes\",\n      filePath: \"examples/radix/toggle-sizes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-sizes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-sizes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-text\": {\n      name: \"toggle-text\",\n      filePath: \"examples/radix/toggle-text.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/toggle-text\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-text\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-demo\": {\n      name: \"tooltip-demo\",\n      filePath: \"examples/radix/tooltip-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tooltip-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-disabled\": {\n      name: \"tooltip-disabled\",\n      filePath: \"examples/radix/tooltip-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tooltip-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-keyboard\": {\n      name: \"tooltip-keyboard\",\n      filePath: \"examples/radix/tooltip-keyboard.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tooltip-keyboard\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-keyboard\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-rtl\": {\n      name: \"tooltip-rtl\",\n      filePath: \"examples/radix/tooltip-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tooltip-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-sides\": {\n      name: \"tooltip-sides\",\n      filePath: \"examples/radix/tooltip-sides.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/tooltip-sides\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-sides\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-blockquote\": {\n      name: \"typography-blockquote\",\n      filePath: \"examples/radix/typography-blockquote.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-blockquote\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-blockquote\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-demo\": {\n      name: \"typography-demo\",\n      filePath: \"examples/radix/typography-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-h1\": {\n      name: \"typography-h1\",\n      filePath: \"examples/radix/typography-h1.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-h1\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-h1\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-h2\": {\n      name: \"typography-h2\",\n      filePath: \"examples/radix/typography-h2.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-h2\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-h2\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-h3\": {\n      name: \"typography-h3\",\n      filePath: \"examples/radix/typography-h3.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-h3\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-h3\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-h4\": {\n      name: \"typography-h4\",\n      filePath: \"examples/radix/typography-h4.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-h4\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-h4\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-inline-code\": {\n      name: \"typography-inline-code\",\n      filePath: \"examples/radix/typography-inline-code.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-inline-code\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-inline-code\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-large\": {\n      name: \"typography-large\",\n      filePath: \"examples/radix/typography-large.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-large\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-large\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-lead\": {\n      name: \"typography-lead\",\n      filePath: \"examples/radix/typography-lead.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-lead\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-lead\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-list\": {\n      name: \"typography-list\",\n      filePath: \"examples/radix/typography-list.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-list\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-list\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-muted\": {\n      name: \"typography-muted\",\n      filePath: \"examples/radix/typography-muted.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-muted\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-muted\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-p\": {\n      name: \"typography-p\",\n      filePath: \"examples/radix/typography-p.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-p\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-p\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-rtl\": {\n      name: \"typography-rtl\",\n      filePath: \"examples/radix/typography-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-small\": {\n      name: \"typography-small\",\n      filePath: \"examples/radix/typography-small.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-small\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-small\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-table\": {\n      name: \"typography-table\",\n      filePath: \"examples/radix/typography-table.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./radix/typography-table\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-table\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n  },\n  base: {\n    \"accordion-basic\": {\n      name: \"accordion-basic\",\n      filePath: \"examples/base/accordion-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/accordion-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-borders\": {\n      name: \"accordion-borders\",\n      filePath: \"examples/base/accordion-borders.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/accordion-borders\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-borders\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-card\": {\n      name: \"accordion-card\",\n      filePath: \"examples/base/accordion-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/accordion-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-demo\": {\n      name: \"accordion-demo\",\n      filePath: \"examples/base/accordion-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/accordion-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-disabled\": {\n      name: \"accordion-disabled\",\n      filePath: \"examples/base/accordion-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/accordion-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-multiple\": {\n      name: \"accordion-multiple\",\n      filePath: \"examples/base/accordion-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/accordion-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"accordion-rtl\": {\n      name: \"accordion-rtl\",\n      filePath: \"examples/base/accordion-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/accordion-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"accordion-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-action\": {\n      name: \"alert-action\",\n      filePath: \"examples/base/alert-action.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-action\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-action\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-basic\": {\n      name: \"alert-basic\",\n      filePath: \"examples/base/alert-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-colors\": {\n      name: \"alert-colors\",\n      filePath: \"examples/base/alert-colors.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-colors\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-colors\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-demo\": {\n      name: \"alert-demo\",\n      filePath: \"examples/base/alert-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-destructive\": {\n      name: \"alert-destructive\",\n      filePath: \"examples/base/alert-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-basic\": {\n      name: \"alert-dialog-basic\",\n      filePath: \"examples/base/alert-dialog-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-dialog-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-demo\": {\n      name: \"alert-dialog-demo\",\n      filePath: \"examples/base/alert-dialog-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-dialog-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-destructive\": {\n      name: \"alert-dialog-destructive\",\n      filePath: \"examples/base/alert-dialog-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-dialog-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-media\": {\n      name: \"alert-dialog-media\",\n      filePath: \"examples/base/alert-dialog-media.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-dialog-media\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-media\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-rtl\": {\n      name: \"alert-dialog-rtl\",\n      filePath: \"examples/base/alert-dialog-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-dialog-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-small-media\": {\n      name: \"alert-dialog-small-media\",\n      filePath: \"examples/base/alert-dialog-small-media.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-dialog-small-media\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-small-media\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-dialog-small\": {\n      name: \"alert-dialog-small\",\n      filePath: \"examples/base/alert-dialog-small.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-dialog-small\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-dialog-small\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"alert-rtl\": {\n      name: \"alert-rtl\",\n      filePath: \"examples/base/alert-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/alert-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"alert-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"aspect-ratio-demo\": {\n      name: \"aspect-ratio-demo\",\n      filePath: \"examples/base/aspect-ratio-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/aspect-ratio-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"aspect-ratio-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"aspect-ratio-portrait\": {\n      name: \"aspect-ratio-portrait\",\n      filePath: \"examples/base/aspect-ratio-portrait.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/aspect-ratio-portrait\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"aspect-ratio-portrait\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"aspect-ratio-rtl\": {\n      name: \"aspect-ratio-rtl\",\n      filePath: \"examples/base/aspect-ratio-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/aspect-ratio-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"aspect-ratio-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"aspect-ratio-square\": {\n      name: \"aspect-ratio-square\",\n      filePath: \"examples/base/aspect-ratio-square.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/aspect-ratio-square\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"aspect-ratio-square\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-badge-icon\": {\n      name: \"avatar-badge-icon\",\n      filePath: \"examples/base/avatar-badge-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-badge-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-badge-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-badge\": {\n      name: \"avatar-badge\",\n      filePath: \"examples/base/avatar-badge.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-badge\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-badge\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-basic\": {\n      name: \"avatar-basic\",\n      filePath: \"examples/base/avatar-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-demo\": {\n      name: \"avatar-demo\",\n      filePath: \"examples/base/avatar-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-dropdown\": {\n      name: \"avatar-dropdown\",\n      filePath: \"examples/base/avatar-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-group-count-icon\": {\n      name: \"avatar-group-count-icon\",\n      filePath: \"examples/base/avatar-group-count-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-group-count-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-group-count-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-group-count\": {\n      name: \"avatar-group-count\",\n      filePath: \"examples/base/avatar-group-count.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-group-count\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-group-count\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-group\": {\n      name: \"avatar-group\",\n      filePath: \"examples/base/avatar-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-rtl\": {\n      name: \"avatar-rtl\",\n      filePath: \"examples/base/avatar-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"avatar-size\": {\n      name: \"avatar-size\",\n      filePath: \"examples/base/avatar-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/avatar-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"avatar-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-colors\": {\n      name: \"badge-colors\",\n      filePath: \"examples/base/badge-colors.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/badge-colors\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-colors\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-demo\": {\n      name: \"badge-demo\",\n      filePath: \"examples/base/badge-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/badge-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-icon\": {\n      name: \"badge-icon\",\n      filePath: \"examples/base/badge-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/badge-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-link\": {\n      name: \"badge-link\",\n      filePath: \"examples/base/badge-link.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/badge-link\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-link\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-rtl\": {\n      name: \"badge-rtl\",\n      filePath: \"examples/base/badge-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/badge-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-spinner\": {\n      name: \"badge-spinner\",\n      filePath: \"examples/base/badge-spinner.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/badge-spinner\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-spinner\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"badge-variants\": {\n      name: \"badge-variants\",\n      filePath: \"examples/base/badge-variants.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/badge-variants\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"badge-variants\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-basic\": {\n      name: \"breadcrumb-basic\",\n      filePath: \"examples/base/breadcrumb-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/breadcrumb-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-demo\": {\n      name: \"breadcrumb-demo\",\n      filePath: \"examples/base/breadcrumb-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/breadcrumb-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-dropdown\": {\n      name: \"breadcrumb-dropdown\",\n      filePath: \"examples/base/breadcrumb-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/breadcrumb-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-ellipsis\": {\n      name: \"breadcrumb-ellipsis\",\n      filePath: \"examples/base/breadcrumb-ellipsis.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/breadcrumb-ellipsis\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-ellipsis\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-link\": {\n      name: \"breadcrumb-link\",\n      filePath: \"examples/base/breadcrumb-link.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/breadcrumb-link\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-link\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-rtl\": {\n      name: \"breadcrumb-rtl\",\n      filePath: \"examples/base/breadcrumb-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/breadcrumb-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"breadcrumb-separator\": {\n      name: \"breadcrumb-separator\",\n      filePath: \"examples/base/breadcrumb-separator.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/breadcrumb-separator\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"breadcrumb-separator\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-default\": {\n      name: \"button-default\",\n      filePath: \"examples/base/button-default.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-default\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-default\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-demo\": {\n      name: \"button-demo\",\n      filePath: \"examples/base/button-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-destructive\": {\n      name: \"button-destructive\",\n      filePath: \"examples/base/button-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-ghost\": {\n      name: \"button-ghost\",\n      filePath: \"examples/base/button-ghost.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-ghost\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-ghost\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-demo\": {\n      name: \"button-group-demo\",\n      filePath: \"examples/base/button-group-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-dropdown\": {\n      name: \"button-group-dropdown\",\n      filePath: \"examples/base/button-group-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-input-group\": {\n      name: \"button-group-input-group\",\n      filePath: \"examples/base/button-group-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-input\": {\n      name: \"button-group-input\",\n      filePath: \"examples/base/button-group-input.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-input\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-input\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-nested\": {\n      name: \"button-group-nested\",\n      filePath: \"examples/base/button-group-nested.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-nested\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-nested\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-orientation\": {\n      name: \"button-group-orientation\",\n      filePath: \"examples/base/button-group-orientation.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-orientation\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-orientation\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-popover\": {\n      name: \"button-group-popover\",\n      filePath: \"examples/base/button-group-popover.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-popover\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-popover\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-rtl\": {\n      name: \"button-group-rtl\",\n      filePath: \"examples/base/button-group-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-select\": {\n      name: \"button-group-select\",\n      filePath: \"examples/base/button-group-select.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-select\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-select\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-separator\": {\n      name: \"button-group-separator\",\n      filePath: \"examples/base/button-group-separator.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-separator\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-separator\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-size\": {\n      name: \"button-group-size\",\n      filePath: \"examples/base/button-group-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-group-split\": {\n      name: \"button-group-split\",\n      filePath: \"examples/base/button-group-split.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-group-split\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-group-split\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-icon\": {\n      name: \"button-icon\",\n      filePath: \"examples/base/button-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-link\": {\n      name: \"button-link\",\n      filePath: \"examples/base/button-link.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-link\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-link\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-outline\": {\n      name: \"button-outline\",\n      filePath: \"examples/base/button-outline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-outline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-outline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-render\": {\n      name: \"button-render\",\n      filePath: \"examples/base/button-render.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-render\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-render\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-rounded\": {\n      name: \"button-rounded\",\n      filePath: \"examples/base/button-rounded.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-rounded\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-rounded\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-rtl\": {\n      name: \"button-rtl\",\n      filePath: \"examples/base/button-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-secondary\": {\n      name: \"button-secondary\",\n      filePath: \"examples/base/button-secondary.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-secondary\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-secondary\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-size\": {\n      name: \"button-size\",\n      filePath: \"examples/base/button-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-spinner\": {\n      name: \"button-spinner\",\n      filePath: \"examples/base/button-spinner.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-spinner\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-spinner\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"button-with-icon\": {\n      name: \"button-with-icon\",\n      filePath: \"examples/base/button-with-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/button-with-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"button-with-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-basic\": {\n      name: \"calendar-basic\",\n      filePath: \"examples/base/calendar-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-booked-dates\": {\n      name: \"calendar-booked-dates\",\n      filePath: \"examples/base/calendar-booked-dates.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-booked-dates\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-booked-dates\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-caption\": {\n      name: \"calendar-caption\",\n      filePath: \"examples/base/calendar-caption.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-caption\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-caption\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-custom-days\": {\n      name: \"calendar-custom-days\",\n      filePath: \"examples/base/calendar-custom-days.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-custom-days\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-custom-days\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-demo\": {\n      name: \"calendar-demo\",\n      filePath: \"examples/base/calendar-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-hijri\": {\n      name: \"calendar-hijri\",\n      filePath: \"examples/base/calendar-hijri.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-hijri\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-hijri\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-multiple\": {\n      name: \"calendar-multiple\",\n      filePath: \"examples/base/calendar-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-presets\": {\n      name: \"calendar-presets\",\n      filePath: \"examples/base/calendar-presets.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-presets\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-presets\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-range\": {\n      name: \"calendar-range\",\n      filePath: \"examples/base/calendar-range.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-range\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-range\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-rtl\": {\n      name: \"calendar-rtl\",\n      filePath: \"examples/base/calendar-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-time\": {\n      name: \"calendar-time\",\n      filePath: \"examples/base/calendar-time.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-time\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-time\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"calendar-week-numbers\": {\n      name: \"calendar-week-numbers\",\n      filePath: \"examples/base/calendar-week-numbers.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/calendar-week-numbers\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"calendar-week-numbers\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"card-demo\": {\n      name: \"card-demo\",\n      filePath: \"examples/base/card-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/card-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"card-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"card-image\": {\n      name: \"card-image\",\n      filePath: \"examples/base/card-image.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/card-image\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"card-image\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"card-rtl\": {\n      name: \"card-rtl\",\n      filePath: \"examples/base/card-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/card-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"card-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"card-small\": {\n      name: \"card-small\",\n      filePath: \"examples/base/card-small.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/card-small\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"card-small\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-api\": {\n      name: \"carousel-api\",\n      filePath: \"examples/base/carousel-api.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/carousel-api\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-api\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-demo\": {\n      name: \"carousel-demo\",\n      filePath: \"examples/base/carousel-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/carousel-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-multiple\": {\n      name: \"carousel-multiple\",\n      filePath: \"examples/base/carousel-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/carousel-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-orientation\": {\n      name: \"carousel-orientation\",\n      filePath: \"examples/base/carousel-orientation.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/carousel-orientation\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-orientation\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-plugin\": {\n      name: \"carousel-plugin\",\n      filePath: \"examples/base/carousel-plugin.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/carousel-plugin\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-plugin\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-rtl\": {\n      name: \"carousel-rtl\",\n      filePath: \"examples/base/carousel-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/carousel-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-size\": {\n      name: \"carousel-size\",\n      filePath: \"examples/base/carousel-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/carousel-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"carousel-spacing\": {\n      name: \"carousel-spacing\",\n      filePath: \"examples/base/carousel-spacing.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/carousel-spacing\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"carousel-spacing\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-demo\": {\n      name: \"chart-demo\",\n      filePath: \"examples/base/chart-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/chart-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example-axis\": {\n      name: \"chart-example-axis\",\n      filePath: \"examples/base/chart-example-axis.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/chart-example-axis\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example-axis\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example-grid\": {\n      name: \"chart-example-grid\",\n      filePath: \"examples/base/chart-example-grid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/chart-example-grid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example-grid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example-legend\": {\n      name: \"chart-example-legend\",\n      filePath: \"examples/base/chart-example-legend.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/chart-example-legend\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example-legend\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example-tooltip\": {\n      name: \"chart-example-tooltip\",\n      filePath: \"examples/base/chart-example-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/chart-example-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-example\": {\n      name: \"chart-example\",\n      filePath: \"examples/base/chart-example.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/chart-example\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-example\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-rtl\": {\n      name: \"chart-rtl\",\n      filePath: \"examples/base/chart-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/chart-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"chart-tooltip\": {\n      name: \"chart-tooltip\",\n      filePath: \"examples/base/chart-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/chart-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"chart-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-basic\": {\n      name: \"checkbox-basic\",\n      filePath: \"examples/base/checkbox-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/checkbox-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-demo\": {\n      name: \"checkbox-demo\",\n      filePath: \"examples/base/checkbox-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/checkbox-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-description\": {\n      name: \"checkbox-description\",\n      filePath: \"examples/base/checkbox-description.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/checkbox-description\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-description\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-disabled\": {\n      name: \"checkbox-disabled\",\n      filePath: \"examples/base/checkbox-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/checkbox-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-group\": {\n      name: \"checkbox-group\",\n      filePath: \"examples/base/checkbox-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/checkbox-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-invalid\": {\n      name: \"checkbox-invalid\",\n      filePath: \"examples/base/checkbox-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/checkbox-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-rtl\": {\n      name: \"checkbox-rtl\",\n      filePath: \"examples/base/checkbox-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/checkbox-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"checkbox-table\": {\n      name: \"checkbox-table\",\n      filePath: \"examples/base/checkbox-table.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/checkbox-table\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"checkbox-table\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-basic\": {\n      name: \"collapsible-basic\",\n      filePath: \"examples/base/collapsible-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/collapsible-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-demo\": {\n      name: \"collapsible-demo\",\n      filePath: \"examples/base/collapsible-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/collapsible-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-file-tree\": {\n      name: \"collapsible-file-tree\",\n      filePath: \"examples/base/collapsible-file-tree.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/collapsible-file-tree\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-file-tree\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-rtl\": {\n      name: \"collapsible-rtl\",\n      filePath: \"examples/base/collapsible-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/collapsible-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"collapsible-settings\": {\n      name: \"collapsible-settings\",\n      filePath: \"examples/base/collapsible-settings.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/collapsible-settings\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"collapsible-settings\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-auto-highlight\": {\n      name: \"combobox-auto-highlight\",\n      filePath: \"examples/base/combobox-auto-highlight.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-auto-highlight\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-auto-highlight\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-basic\": {\n      name: \"combobox-basic\",\n      filePath: \"examples/base/combobox-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-clear\": {\n      name: \"combobox-clear\",\n      filePath: \"examples/base/combobox-clear.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-clear\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-clear\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-custom\": {\n      name: \"combobox-custom\",\n      filePath: \"examples/base/combobox-custom.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-custom\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-custom\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-demo\": {\n      name: \"combobox-demo\",\n      filePath: \"examples/base/combobox-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-disabled\": {\n      name: \"combobox-disabled\",\n      filePath: \"examples/base/combobox-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-groups\": {\n      name: \"combobox-groups\",\n      filePath: \"examples/base/combobox-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-input-group\": {\n      name: \"combobox-input-group\",\n      filePath: \"examples/base/combobox-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-invalid\": {\n      name: \"combobox-invalid\",\n      filePath: \"examples/base/combobox-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-multiple\": {\n      name: \"combobox-multiple\",\n      filePath: \"examples/base/combobox-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-popup\": {\n      name: \"combobox-popup\",\n      filePath: \"examples/base/combobox-popup.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-popup\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-popup\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"combobox-rtl\": {\n      name: \"combobox-rtl\",\n      filePath: \"examples/base/combobox-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/combobox-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"combobox-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-basic\": {\n      name: \"command-basic\",\n      filePath: \"examples/base/command-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/command-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-demo\": {\n      name: \"command-demo\",\n      filePath: \"examples/base/command-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/command-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-dialog\": {\n      name: \"command-dialog\",\n      filePath: \"examples/base/command-dialog.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/command-dialog\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-dialog\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-groups\": {\n      name: \"command-groups\",\n      filePath: \"examples/base/command-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/command-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-rtl\": {\n      name: \"command-rtl\",\n      filePath: \"examples/base/command-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/command-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-scrollable\": {\n      name: \"command-scrollable\",\n      filePath: \"examples/base/command-scrollable.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/command-scrollable\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-scrollable\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"command-shortcuts\": {\n      name: \"command-shortcuts\",\n      filePath: \"examples/base/command-shortcuts.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/command-shortcuts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"command-shortcuts\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-basic\": {\n      name: \"context-menu-basic\",\n      filePath: \"examples/base/context-menu-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-checkboxes\": {\n      name: \"context-menu-checkboxes\",\n      filePath: \"examples/base/context-menu-checkboxes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-checkboxes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-checkboxes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-demo\": {\n      name: \"context-menu-demo\",\n      filePath: \"examples/base/context-menu-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-destructive\": {\n      name: \"context-menu-destructive\",\n      filePath: \"examples/base/context-menu-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-groups\": {\n      name: \"context-menu-groups\",\n      filePath: \"examples/base/context-menu-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-icons\": {\n      name: \"context-menu-icons\",\n      filePath: \"examples/base/context-menu-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-radio\": {\n      name: \"context-menu-radio\",\n      filePath: \"examples/base/context-menu-radio.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-radio\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-radio\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-rtl\": {\n      name: \"context-menu-rtl\",\n      filePath: \"examples/base/context-menu-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-shortcuts\": {\n      name: \"context-menu-shortcuts\",\n      filePath: \"examples/base/context-menu-shortcuts.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-shortcuts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-shortcuts\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-sides\": {\n      name: \"context-menu-sides\",\n      filePath: \"examples/base/context-menu-sides.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-sides\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-sides\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"context-menu-submenu\": {\n      name: \"context-menu-submenu\",\n      filePath: \"examples/base/context-menu-submenu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/context-menu-submenu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"context-menu-submenu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"data-picker-with-dropdowns\": {\n      name: \"data-picker-with-dropdowns\",\n      filePath: \"examples/base/data-picker-with-dropdowns.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/data-picker-with-dropdowns\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"data-picker-with-dropdowns\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"data-table-demo\": {\n      name: \"data-table-demo\",\n      filePath: \"examples/base/data-table-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/data-table-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"data-table-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"data-table-rtl\": {\n      name: \"data-table-rtl\",\n      filePath: \"examples/base/data-table-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/data-table-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"data-table-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-basic\": {\n      name: \"date-picker-basic\",\n      filePath: \"examples/base/date-picker-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/date-picker-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-demo\": {\n      name: \"date-picker-demo\",\n      filePath: \"examples/base/date-picker-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/date-picker-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-dob\": {\n      name: \"date-picker-dob\",\n      filePath: \"examples/base/date-picker-dob.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/date-picker-dob\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-dob\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-input\": {\n      name: \"date-picker-input\",\n      filePath: \"examples/base/date-picker-input.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/date-picker-input\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-input\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-natural-language\": {\n      name: \"date-picker-natural-language\",\n      filePath: \"examples/base/date-picker-natural-language.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/date-picker-natural-language\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-natural-language\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-range\": {\n      name: \"date-picker-range\",\n      filePath: \"examples/base/date-picker-range.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/date-picker-range\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-range\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-rtl\": {\n      name: \"date-picker-rtl\",\n      filePath: \"examples/base/date-picker-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/date-picker-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"date-picker-time\": {\n      name: \"date-picker-time\",\n      filePath: \"examples/base/date-picker-time.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/date-picker-time\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"date-picker-time\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-close-button\": {\n      name: \"dialog-close-button\",\n      filePath: \"examples/base/dialog-close-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dialog-close-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-close-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-demo\": {\n      name: \"dialog-demo\",\n      filePath: \"examples/base/dialog-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dialog-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-no-close-button\": {\n      name: \"dialog-no-close-button\",\n      filePath: \"examples/base/dialog-no-close-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dialog-no-close-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-no-close-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-rtl\": {\n      name: \"dialog-rtl\",\n      filePath: \"examples/base/dialog-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dialog-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-scrollable-content\": {\n      name: \"dialog-scrollable-content\",\n      filePath: \"examples/base/dialog-scrollable-content.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dialog-scrollable-content\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-scrollable-content\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dialog-sticky-footer\": {\n      name: \"dialog-sticky-footer\",\n      filePath: \"examples/base/dialog-sticky-footer.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dialog-sticky-footer\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dialog-sticky-footer\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-demo\": {\n      name: \"drawer-demo\",\n      filePath: \"examples/base/drawer-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/drawer-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-dialog\": {\n      name: \"drawer-dialog\",\n      filePath: \"examples/base/drawer-dialog.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/drawer-dialog\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-dialog\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-rtl\": {\n      name: \"drawer-rtl\",\n      filePath: \"examples/base/drawer-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/drawer-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-scrollable-content\": {\n      name: \"drawer-scrollable-content\",\n      filePath: \"examples/base/drawer-scrollable-content.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/drawer-scrollable-content\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-scrollable-content\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"drawer-sides\": {\n      name: \"drawer-sides\",\n      filePath: \"examples/base/drawer-sides.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/drawer-sides\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"drawer-sides\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-avatar\": {\n      name: \"dropdown-menu-avatar\",\n      filePath: \"examples/base/dropdown-menu-avatar.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-avatar\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-avatar\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-basic\": {\n      name: \"dropdown-menu-basic\",\n      filePath: \"examples/base/dropdown-menu-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-checkboxes-icons\": {\n      name: \"dropdown-menu-checkboxes-icons\",\n      filePath: \"examples/base/dropdown-menu-checkboxes-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-checkboxes-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-checkboxes-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-checkboxes\": {\n      name: \"dropdown-menu-checkboxes\",\n      filePath: \"examples/base/dropdown-menu-checkboxes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-checkboxes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-checkboxes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-complex\": {\n      name: \"dropdown-menu-complex\",\n      filePath: \"examples/base/dropdown-menu-complex.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-complex\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-complex\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-demo\": {\n      name: \"dropdown-menu-demo\",\n      filePath: \"examples/base/dropdown-menu-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-destructive\": {\n      name: \"dropdown-menu-destructive\",\n      filePath: \"examples/base/dropdown-menu-destructive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-destructive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-destructive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-icons\": {\n      name: \"dropdown-menu-icons\",\n      filePath: \"examples/base/dropdown-menu-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-radio-group\": {\n      name: \"dropdown-menu-radio-group\",\n      filePath: \"examples/base/dropdown-menu-radio-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-radio-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-radio-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-radio-icons\": {\n      name: \"dropdown-menu-radio-icons\",\n      filePath: \"examples/base/dropdown-menu-radio-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-radio-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-radio-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-rtl\": {\n      name: \"dropdown-menu-rtl\",\n      filePath: \"examples/base/dropdown-menu-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-shortcuts\": {\n      name: \"dropdown-menu-shortcuts\",\n      filePath: \"examples/base/dropdown-menu-shortcuts.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-shortcuts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-shortcuts\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"dropdown-menu-submenu\": {\n      name: \"dropdown-menu-submenu\",\n      filePath: \"examples/base/dropdown-menu-submenu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/dropdown-menu-submenu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"dropdown-menu-submenu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-avatar-group\": {\n      name: \"empty-avatar-group\",\n      filePath: \"examples/base/empty-avatar-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/empty-avatar-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-avatar-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-avatar\": {\n      name: \"empty-avatar\",\n      filePath: \"examples/base/empty-avatar.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/empty-avatar\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-avatar\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-background\": {\n      name: \"empty-background\",\n      filePath: \"examples/base/empty-background.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/empty-background\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-background\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-card\": {\n      name: \"empty-card\",\n      filePath: \"examples/base/empty-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/empty-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-demo\": {\n      name: \"empty-demo\",\n      filePath: \"examples/base/empty-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/empty-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-input-group\": {\n      name: \"empty-input-group\",\n      filePath: \"examples/base/empty-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/empty-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-outline\": {\n      name: \"empty-outline\",\n      filePath: \"examples/base/empty-outline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/empty-outline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-outline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"empty-rtl\": {\n      name: \"empty-rtl\",\n      filePath: \"examples/base/empty-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/empty-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"empty-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-checkbox\": {\n      name: \"field-checkbox\",\n      filePath: \"examples/base/field-checkbox.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-checkbox\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-checkbox\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-choice-card\": {\n      name: \"field-choice-card\",\n      filePath: \"examples/base/field-choice-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-choice-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-choice-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-demo\": {\n      name: \"field-demo\",\n      filePath: \"examples/base/field-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-fieldset\": {\n      name: \"field-fieldset\",\n      filePath: \"examples/base/field-fieldset.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-fieldset\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-fieldset\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-group\": {\n      name: \"field-group\",\n      filePath: \"examples/base/field-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-input\": {\n      name: \"field-input\",\n      filePath: \"examples/base/field-input.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-input\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-input\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-radio\": {\n      name: \"field-radio\",\n      filePath: \"examples/base/field-radio.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-radio\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-radio\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-responsive\": {\n      name: \"field-responsive\",\n      filePath: \"examples/base/field-responsive.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-responsive\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-responsive\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-rtl\": {\n      name: \"field-rtl\",\n      filePath: \"examples/base/field-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-select\": {\n      name: \"field-select\",\n      filePath: \"examples/base/field-select.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-select\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-select\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-slider\": {\n      name: \"field-slider\",\n      filePath: \"examples/base/field-slider.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-slider\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-slider\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-switch\": {\n      name: \"field-switch\",\n      filePath: \"examples/base/field-switch.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-switch\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-switch\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"field-textarea\": {\n      name: \"field-textarea\",\n      filePath: \"examples/base/field-textarea.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/field-textarea\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"field-textarea\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"file-upload-list\": {\n      name: \"file-upload-list\",\n      filePath: \"examples/base/file-upload-list.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/file-upload-list\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"file-upload-list\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"hover-card-demo\": {\n      name: \"hover-card-demo\",\n      filePath: \"examples/base/hover-card-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/hover-card-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"hover-card-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"hover-card-rtl\": {\n      name: \"hover-card-rtl\",\n      filePath: \"examples/base/hover-card-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/hover-card-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"hover-card-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"hover-card-sides\": {\n      name: \"hover-card-sides\",\n      filePath: \"examples/base/hover-card-sides.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/hover-card-sides\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"hover-card-sides\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-badge\": {\n      name: \"input-badge\",\n      filePath: \"examples/base/input-badge.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-badge\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-badge\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-basic\": {\n      name: \"input-basic\",\n      filePath: \"examples/base/input-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-button-group\": {\n      name: \"input-button-group\",\n      filePath: \"examples/base/input-button-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-button-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-button-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-demo\": {\n      name: \"input-demo\",\n      filePath: \"examples/base/input-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-disabled\": {\n      name: \"input-disabled\",\n      filePath: \"examples/base/input-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-field\": {\n      name: \"input-field\",\n      filePath: \"examples/base/input-field.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-field\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-field\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-fieldgroup\": {\n      name: \"input-fieldgroup\",\n      filePath: \"examples/base/input-fieldgroup.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-fieldgroup\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-fieldgroup\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-file\": {\n      name: \"input-file\",\n      filePath: \"examples/base/input-file.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-file\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-file\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-form\": {\n      name: \"input-form\",\n      filePath: \"examples/base/input-form.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-form\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-form\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-grid\": {\n      name: \"input-grid\",\n      filePath: \"examples/base/input-grid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-grid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-grid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-basic\": {\n      name: \"input-group-basic\",\n      filePath: \"examples/base/input-group-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-block-end\": {\n      name: \"input-group-block-end\",\n      filePath: \"examples/base/input-group-block-end.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-block-end\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-block-end\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-block-start\": {\n      name: \"input-group-block-start\",\n      filePath: \"examples/base/input-group-block-start.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-block-start\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-block-start\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-button-group\": {\n      name: \"input-group-button-group\",\n      filePath: \"examples/base/input-group-button-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-button-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-button-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-button\": {\n      name: \"input-group-button\",\n      filePath: \"examples/base/input-group-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-custom\": {\n      name: \"input-group-custom\",\n      filePath: \"examples/base/input-group-custom.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-custom\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-custom\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-demo\": {\n      name: \"input-group-demo\",\n      filePath: \"examples/base/input-group-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-dropdown\": {\n      name: \"input-group-dropdown\",\n      filePath: \"examples/base/input-group-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-icon\": {\n      name: \"input-group-icon\",\n      filePath: \"examples/base/input-group-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-in-card\": {\n      name: \"input-group-in-card\",\n      filePath: \"examples/base/input-group-in-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-in-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-in-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-inline-end\": {\n      name: \"input-group-inline-end\",\n      filePath: \"examples/base/input-group-inline-end.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-inline-end\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-inline-end\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-inline-start\": {\n      name: \"input-group-inline-start\",\n      filePath: \"examples/base/input-group-inline-start.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-inline-start\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-inline-start\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-kbd\": {\n      name: \"input-group-kbd\",\n      filePath: \"examples/base/input-group-kbd.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-kbd\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-kbd\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-label\": {\n      name: \"input-group-label\",\n      filePath: \"examples/base/input-group-label.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-label\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-label\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-rtl\": {\n      name: \"input-group-rtl\",\n      filePath: \"examples/base/input-group-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-spinner\": {\n      name: \"input-group-spinner\",\n      filePath: \"examples/base/input-group-spinner.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-spinner\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-spinner\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-text\": {\n      name: \"input-group-text\",\n      filePath: \"examples/base/input-group-text.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-text\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-text\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-textarea-examples\": {\n      name: \"input-group-textarea-examples\",\n      filePath: \"examples/base/input-group-textarea-examples.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-textarea-examples\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-textarea-examples\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-textarea\": {\n      name: \"input-group-textarea\",\n      filePath: \"examples/base/input-group-textarea.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-textarea\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-textarea\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-tooltip\": {\n      name: \"input-group-tooltip\",\n      filePath: \"examples/base/input-group-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-with-addons\": {\n      name: \"input-group-with-addons\",\n      filePath: \"examples/base/input-group-with-addons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-with-addons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-with-addons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-with-buttons\": {\n      name: \"input-group-with-buttons\",\n      filePath: \"examples/base/input-group-with-buttons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-with-buttons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-with-buttons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-with-kbd\": {\n      name: \"input-group-with-kbd\",\n      filePath: \"examples/base/input-group-with-kbd.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-with-kbd\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-with-kbd\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-group-with-tooltip\": {\n      name: \"input-group-with-tooltip\",\n      filePath: \"examples/base/input-group-with-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-group-with-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-group-with-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-inline\": {\n      name: \"input-inline\",\n      filePath: \"examples/base/input-inline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-inline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-inline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-input-group\": {\n      name: \"input-input-group\",\n      filePath: \"examples/base/input-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-invalid\": {\n      name: \"input-invalid\",\n      filePath: \"examples/base/input-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-alphanumeric\": {\n      name: \"input-otp-alphanumeric\",\n      filePath: \"examples/base/input-otp-alphanumeric.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-alphanumeric\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-alphanumeric\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-controlled\": {\n      name: \"input-otp-controlled\",\n      filePath: \"examples/base/input-otp-controlled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-controlled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-controlled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-demo\": {\n      name: \"input-otp-demo\",\n      filePath: \"examples/base/input-otp-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-disabled\": {\n      name: \"input-otp-disabled\",\n      filePath: \"examples/base/input-otp-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-form\": {\n      name: \"input-otp-form\",\n      filePath: \"examples/base/input-otp-form.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-form\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-form\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-four-digits\": {\n      name: \"input-otp-four-digits\",\n      filePath: \"examples/base/input-otp-four-digits.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-four-digits\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-four-digits\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-invalid\": {\n      name: \"input-otp-invalid\",\n      filePath: \"examples/base/input-otp-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-pattern\": {\n      name: \"input-otp-pattern\",\n      filePath: \"examples/base/input-otp-pattern.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-pattern\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-pattern\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-rtl\": {\n      name: \"input-otp-rtl\",\n      filePath: \"examples/base/input-otp-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-otp-separator\": {\n      name: \"input-otp-separator\",\n      filePath: \"examples/base/input-otp-separator.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-otp-separator\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-otp-separator\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-required\": {\n      name: \"input-required\",\n      filePath: \"examples/base/input-required.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-required\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-required\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"input-rtl\": {\n      name: \"input-rtl\",\n      filePath: \"examples/base/input-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/input-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"input-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-avatar\": {\n      name: \"item-avatar\",\n      filePath: \"examples/base/item-avatar.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-avatar\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-avatar\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-demo\": {\n      name: \"item-demo\",\n      filePath: \"examples/base/item-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-dropdown\": {\n      name: \"item-dropdown\",\n      filePath: \"examples/base/item-dropdown.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-dropdown\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-dropdown\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-group\": {\n      name: \"item-group\",\n      filePath: \"examples/base/item-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-header\": {\n      name: \"item-header\",\n      filePath: \"examples/base/item-header.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-header\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-header\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-icon\": {\n      name: \"item-icon\",\n      filePath: \"examples/base/item-icon.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-icon\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-icon\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-image\": {\n      name: \"item-image\",\n      filePath: \"examples/base/item-image.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-image\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-image\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-link\": {\n      name: \"item-link\",\n      filePath: \"examples/base/item-link.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-link\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-link\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-rtl\": {\n      name: \"item-rtl\",\n      filePath: \"examples/base/item-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-size\": {\n      name: \"item-size\",\n      filePath: \"examples/base/item-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"item-variant\": {\n      name: \"item-variant\",\n      filePath: \"examples/base/item-variant.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/item-variant\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"item-variant\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-button\": {\n      name: \"kbd-button\",\n      filePath: \"examples/base/kbd-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/kbd-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-demo\": {\n      name: \"kbd-demo\",\n      filePath: \"examples/base/kbd-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/kbd-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-group\": {\n      name: \"kbd-group\",\n      filePath: \"examples/base/kbd-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/kbd-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-input-group\": {\n      name: \"kbd-input-group\",\n      filePath: \"examples/base/kbd-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/kbd-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-rtl\": {\n      name: \"kbd-rtl\",\n      filePath: \"examples/base/kbd-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/kbd-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"kbd-tooltip\": {\n      name: \"kbd-tooltip\",\n      filePath: \"examples/base/kbd-tooltip.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/kbd-tooltip\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"kbd-tooltip\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"label-demo\": {\n      name: \"label-demo\",\n      filePath: \"examples/base/label-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/label-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"label-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"label-rtl\": {\n      name: \"label-rtl\",\n      filePath: \"examples/base/label-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/label-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"label-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-checkbox\": {\n      name: \"menubar-checkbox\",\n      filePath: \"examples/base/menubar-checkbox.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/menubar-checkbox\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-checkbox\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-demo\": {\n      name: \"menubar-demo\",\n      filePath: \"examples/base/menubar-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/menubar-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-icons\": {\n      name: \"menubar-icons\",\n      filePath: \"examples/base/menubar-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/menubar-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-radio\": {\n      name: \"menubar-radio\",\n      filePath: \"examples/base/menubar-radio.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/menubar-radio\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-radio\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-rtl\": {\n      name: \"menubar-rtl\",\n      filePath: \"examples/base/menubar-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/menubar-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"menubar-submenu\": {\n      name: \"menubar-submenu\",\n      filePath: \"examples/base/menubar-submenu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/menubar-submenu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"menubar-submenu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"muted-item-group\": {\n      name: \"muted-item-group\",\n      filePath: \"examples/base/muted-item-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/muted-item-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"muted-item-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-demo\": {\n      name: \"native-select-demo\",\n      filePath: \"examples/base/native-select-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/native-select-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-disabled\": {\n      name: \"native-select-disabled\",\n      filePath: \"examples/base/native-select-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/native-select-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-groups\": {\n      name: \"native-select-groups\",\n      filePath: \"examples/base/native-select-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/native-select-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-invalid\": {\n      name: \"native-select-invalid\",\n      filePath: \"examples/base/native-select-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/native-select-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"native-select-rtl\": {\n      name: \"native-select-rtl\",\n      filePath: \"examples/base/native-select-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/native-select-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"native-select-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"navigation-menu-demo\": {\n      name: \"navigation-menu-demo\",\n      filePath: \"examples/base/navigation-menu-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/navigation-menu-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"navigation-menu-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"navigation-menu-rtl\": {\n      name: \"navigation-menu-rtl\",\n      filePath: \"examples/base/navigation-menu-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/navigation-menu-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"navigation-menu-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"outline-item-group\": {\n      name: \"outline-item-group\",\n      filePath: \"examples/base/outline-item-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/outline-item-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"outline-item-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"pagination-demo\": {\n      name: \"pagination-demo\",\n      filePath: \"examples/base/pagination-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/pagination-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"pagination-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"pagination-icons-only\": {\n      name: \"pagination-icons-only\",\n      filePath: \"examples/base/pagination-icons-only.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/pagination-icons-only\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"pagination-icons-only\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"pagination-rtl\": {\n      name: \"pagination-rtl\",\n      filePath: \"examples/base/pagination-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/pagination-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"pagination-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"pagination-simple\": {\n      name: \"pagination-simple\",\n      filePath: \"examples/base/pagination-simple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/pagination-simple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"pagination-simple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-alignments\": {\n      name: \"popover-alignments\",\n      filePath: \"examples/base/popover-alignments.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/popover-alignments\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-alignments\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-basic\": {\n      name: \"popover-basic\",\n      filePath: \"examples/base/popover-basic.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/popover-basic\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-basic\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-demo\": {\n      name: \"popover-demo\",\n      filePath: \"examples/base/popover-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/popover-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-form\": {\n      name: \"popover-form\",\n      filePath: \"examples/base/popover-form.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/popover-form\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-form\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"popover-rtl\": {\n      name: \"popover-rtl\",\n      filePath: \"examples/base/popover-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/popover-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"popover-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"progress-controlled\": {\n      name: \"progress-controlled\",\n      filePath: \"examples/base/progress-controlled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/progress-controlled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"progress-controlled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"progress-demo\": {\n      name: \"progress-demo\",\n      filePath: \"examples/base/progress-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/progress-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"progress-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"progress-label\": {\n      name: \"progress-label\",\n      filePath: \"examples/base/progress-label.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/progress-label\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"progress-label\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"progress-rtl\": {\n      name: \"progress-rtl\",\n      filePath: \"examples/base/progress-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/progress-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"progress-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-fields\": {\n      name: \"radio-fields\",\n      filePath: \"examples/base/radio-fields.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/radio-fields\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-fields\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-choice-card\": {\n      name: \"radio-group-choice-card\",\n      filePath: \"examples/base/radio-group-choice-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/radio-group-choice-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-choice-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-demo\": {\n      name: \"radio-group-demo\",\n      filePath: \"examples/base/radio-group-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/radio-group-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-description\": {\n      name: \"radio-group-description\",\n      filePath: \"examples/base/radio-group-description.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/radio-group-description\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-description\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-disabled\": {\n      name: \"radio-group-disabled\",\n      filePath: \"examples/base/radio-group-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/radio-group-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-fieldset\": {\n      name: \"radio-group-fieldset\",\n      filePath: \"examples/base/radio-group-fieldset.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/radio-group-fieldset\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-fieldset\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-invalid\": {\n      name: \"radio-group-invalid\",\n      filePath: \"examples/base/radio-group-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/radio-group-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"radio-group-rtl\": {\n      name: \"radio-group-rtl\",\n      filePath: \"examples/base/radio-group-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/radio-group-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"radio-group-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"resizable-demo\": {\n      name: \"resizable-demo\",\n      filePath: \"examples/base/resizable-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/resizable-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"resizable-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"resizable-handle\": {\n      name: \"resizable-handle\",\n      filePath: \"examples/base/resizable-handle.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/resizable-handle\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"resizable-handle\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"resizable-rtl\": {\n      name: \"resizable-rtl\",\n      filePath: \"examples/base/resizable-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/resizable-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"resizable-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"resizable-vertical\": {\n      name: \"resizable-vertical\",\n      filePath: \"examples/base/resizable-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/resizable-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"resizable-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"scroll-area-demo\": {\n      name: \"scroll-area-demo\",\n      filePath: \"examples/base/scroll-area-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/scroll-area-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"scroll-area-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"scroll-area-horizontal-demo\": {\n      name: \"scroll-area-horizontal-demo\",\n      filePath: \"examples/base/scroll-area-horizontal-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/scroll-area-horizontal-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"scroll-area-horizontal-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"scroll-area-rtl\": {\n      name: \"scroll-area-rtl\",\n      filePath: \"examples/base/scroll-area-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/scroll-area-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"scroll-area-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-align-item\": {\n      name: \"select-align-item\",\n      filePath: \"examples/base/select-align-item.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/select-align-item\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-align-item\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-demo\": {\n      name: \"select-demo\",\n      filePath: \"examples/base/select-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/select-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-disabled\": {\n      name: \"select-disabled\",\n      filePath: \"examples/base/select-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/select-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-groups\": {\n      name: \"select-groups\",\n      filePath: \"examples/base/select-groups.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/select-groups\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-groups\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-invalid\": {\n      name: \"select-invalid\",\n      filePath: \"examples/base/select-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/select-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-rtl\": {\n      name: \"select-rtl\",\n      filePath: \"examples/base/select-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/select-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"select-scrollable\": {\n      name: \"select-scrollable\",\n      filePath: \"examples/base/select-scrollable.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/select-scrollable\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"select-scrollable\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-demo\": {\n      name: \"separator-demo\",\n      filePath: \"examples/base/separator-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/separator-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-list\": {\n      name: \"separator-list\",\n      filePath: \"examples/base/separator-list.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/separator-list\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-list\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-menu\": {\n      name: \"separator-menu\",\n      filePath: \"examples/base/separator-menu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/separator-menu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-menu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-rtl\": {\n      name: \"separator-rtl\",\n      filePath: \"examples/base/separator-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/separator-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"separator-vertical\": {\n      name: \"separator-vertical\",\n      filePath: \"examples/base/separator-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/separator-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"separator-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sheet-demo\": {\n      name: \"sheet-demo\",\n      filePath: \"examples/base/sheet-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sheet-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sheet-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sheet-no-close-button\": {\n      name: \"sheet-no-close-button\",\n      filePath: \"examples/base/sheet-no-close-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sheet-no-close-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sheet-no-close-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sheet-rtl\": {\n      name: \"sheet-rtl\",\n      filePath: \"examples/base/sheet-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sheet-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sheet-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sheet-side\": {\n      name: \"sheet-side\",\n      filePath: \"examples/base/sheet-side.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sheet-side\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sheet-side\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-controlled\": {\n      name: \"sidebar-controlled\",\n      filePath: \"examples/base/sidebar-controlled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-controlled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-controlled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-demo\": {\n      name: \"sidebar-demo\",\n      filePath: \"examples/base/sidebar-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-footer\": {\n      name: \"sidebar-footer\",\n      filePath: \"examples/base/sidebar-footer.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-footer\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-footer\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-group-action\": {\n      name: \"sidebar-group-action\",\n      filePath: \"examples/base/sidebar-group-action.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-group-action\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-group-action\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-group-collapsible\": {\n      name: \"sidebar-group-collapsible\",\n      filePath: \"examples/base/sidebar-group-collapsible.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-group-collapsible\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-group-collapsible\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-group\": {\n      name: \"sidebar-group\",\n      filePath: \"examples/base/sidebar-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-header\": {\n      name: \"sidebar-header\",\n      filePath: \"examples/base/sidebar-header.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-header\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-header\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu-action\": {\n      name: \"sidebar-menu-action\",\n      filePath: \"examples/base/sidebar-menu-action.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-menu-action\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu-action\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu-badge\": {\n      name: \"sidebar-menu-badge\",\n      filePath: \"examples/base/sidebar-menu-badge.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-menu-badge\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu-badge\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu-collapsible\": {\n      name: \"sidebar-menu-collapsible\",\n      filePath: \"examples/base/sidebar-menu-collapsible.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-menu-collapsible\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu-collapsible\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu-sub\": {\n      name: \"sidebar-menu-sub\",\n      filePath: \"examples/base/sidebar-menu-sub.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-menu-sub\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu-sub\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-menu\": {\n      name: \"sidebar-menu\",\n      filePath: \"examples/base/sidebar-menu.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-menu\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-menu\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-rsc\": {\n      name: \"sidebar-rsc\",\n      filePath: \"examples/base/sidebar-rsc.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-rsc\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-rsc\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sidebar-rtl\": {\n      name: \"sidebar-rtl\",\n      filePath: \"examples/base/sidebar-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sidebar-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sidebar-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-avatar\": {\n      name: \"skeleton-avatar\",\n      filePath: \"examples/base/skeleton-avatar.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/skeleton-avatar\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-avatar\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-card\": {\n      name: \"skeleton-card\",\n      filePath: \"examples/base/skeleton-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/skeleton-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-demo\": {\n      name: \"skeleton-demo\",\n      filePath: \"examples/base/skeleton-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/skeleton-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-form\": {\n      name: \"skeleton-form\",\n      filePath: \"examples/base/skeleton-form.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/skeleton-form\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-form\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-rtl\": {\n      name: \"skeleton-rtl\",\n      filePath: \"examples/base/skeleton-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/skeleton-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-table\": {\n      name: \"skeleton-table\",\n      filePath: \"examples/base/skeleton-table.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/skeleton-table\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-table\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"skeleton-text\": {\n      name: \"skeleton-text\",\n      filePath: \"examples/base/skeleton-text.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/skeleton-text\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"skeleton-text\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-controlled\": {\n      name: \"slider-controlled\",\n      filePath: \"examples/base/slider-controlled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/slider-controlled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-controlled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-demo\": {\n      name: \"slider-demo\",\n      filePath: \"examples/base/slider-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/slider-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-disabled\": {\n      name: \"slider-disabled\",\n      filePath: \"examples/base/slider-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/slider-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-multiple\": {\n      name: \"slider-multiple\",\n      filePath: \"examples/base/slider-multiple.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/slider-multiple\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-multiple\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-range\": {\n      name: \"slider-range\",\n      filePath: \"examples/base/slider-range.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/slider-range\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-range\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-rtl\": {\n      name: \"slider-rtl\",\n      filePath: \"examples/base/slider-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/slider-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"slider-vertical\": {\n      name: \"slider-vertical\",\n      filePath: \"examples/base/slider-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/slider-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"slider-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sonner-demo\": {\n      name: \"sonner-demo\",\n      filePath: \"examples/base/sonner-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sonner-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sonner-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sonner-description\": {\n      name: \"sonner-description\",\n      filePath: \"examples/base/sonner-description.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sonner-description\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sonner-description\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sonner-position\": {\n      name: \"sonner-position\",\n      filePath: \"examples/base/sonner-position.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sonner-position\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sonner-position\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"sonner-types\": {\n      name: \"sonner-types\",\n      filePath: \"examples/base/sonner-types.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/sonner-types\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"sonner-types\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-badge\": {\n      name: \"spinner-badge\",\n      filePath: \"examples/base/spinner-badge.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/spinner-badge\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-badge\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-button\": {\n      name: \"spinner-button\",\n      filePath: \"examples/base/spinner-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/spinner-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-custom\": {\n      name: \"spinner-custom\",\n      filePath: \"examples/base/spinner-custom.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/spinner-custom\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-custom\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-demo\": {\n      name: \"spinner-demo\",\n      filePath: \"examples/base/spinner-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/spinner-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-empty\": {\n      name: \"spinner-empty\",\n      filePath: \"examples/base/spinner-empty.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/spinner-empty\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-empty\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-input-group\": {\n      name: \"spinner-input-group\",\n      filePath: \"examples/base/spinner-input-group.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/spinner-input-group\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-input-group\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-rtl\": {\n      name: \"spinner-rtl\",\n      filePath: \"examples/base/spinner-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/spinner-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"spinner-size\": {\n      name: \"spinner-size\",\n      filePath: \"examples/base/spinner-size.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/spinner-size\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"spinner-size\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-choice-card\": {\n      name: \"switch-choice-card\",\n      filePath: \"examples/base/switch-choice-card.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/switch-choice-card\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-choice-card\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-demo\": {\n      name: \"switch-demo\",\n      filePath: \"examples/base/switch-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/switch-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-description\": {\n      name: \"switch-description\",\n      filePath: \"examples/base/switch-description.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/switch-description\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-description\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-disabled\": {\n      name: \"switch-disabled\",\n      filePath: \"examples/base/switch-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/switch-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-invalid\": {\n      name: \"switch-invalid\",\n      filePath: \"examples/base/switch-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/switch-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-rtl\": {\n      name: \"switch-rtl\",\n      filePath: \"examples/base/switch-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/switch-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"switch-sizes\": {\n      name: \"switch-sizes\",\n      filePath: \"examples/base/switch-sizes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/switch-sizes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"switch-sizes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"table-actions\": {\n      name: \"table-actions\",\n      filePath: \"examples/base/table-actions.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/table-actions\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"table-actions\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"table-demo\": {\n      name: \"table-demo\",\n      filePath: \"examples/base/table-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/table-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"table-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"table-footer\": {\n      name: \"table-footer\",\n      filePath: \"examples/base/table-footer.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/table-footer\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"table-footer\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"table-rtl\": {\n      name: \"table-rtl\",\n      filePath: \"examples/base/table-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/table-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"table-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-demo\": {\n      name: \"tabs-demo\",\n      filePath: \"examples/base/tabs-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tabs-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-disabled\": {\n      name: \"tabs-disabled\",\n      filePath: \"examples/base/tabs-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tabs-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-icons\": {\n      name: \"tabs-icons\",\n      filePath: \"examples/base/tabs-icons.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tabs-icons\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-icons\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-line\": {\n      name: \"tabs-line\",\n      filePath: \"examples/base/tabs-line.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tabs-line\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-line\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-rtl\": {\n      name: \"tabs-rtl\",\n      filePath: \"examples/base/tabs-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tabs-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tabs-vertical\": {\n      name: \"tabs-vertical\",\n      filePath: \"examples/base/tabs-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tabs-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tabs-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-button\": {\n      name: \"textarea-button\",\n      filePath: \"examples/base/textarea-button.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/textarea-button\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-button\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-demo\": {\n      name: \"textarea-demo\",\n      filePath: \"examples/base/textarea-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/textarea-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-disabled\": {\n      name: \"textarea-disabled\",\n      filePath: \"examples/base/textarea-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/textarea-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-field\": {\n      name: \"textarea-field\",\n      filePath: \"examples/base/textarea-field.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/textarea-field\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-field\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-invalid\": {\n      name: \"textarea-invalid\",\n      filePath: \"examples/base/textarea-invalid.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/textarea-invalid\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-invalid\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"textarea-rtl\": {\n      name: \"textarea-rtl\",\n      filePath: \"examples/base/textarea-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/textarea-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"textarea-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-demo\": {\n      name: \"toggle-demo\",\n      filePath: \"examples/base/toggle-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-disabled\": {\n      name: \"toggle-disabled\",\n      filePath: \"examples/base/toggle-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-demo\": {\n      name: \"toggle-group-demo\",\n      filePath: \"examples/base/toggle-group-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-group-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-disabled\": {\n      name: \"toggle-group-disabled\",\n      filePath: \"examples/base/toggle-group-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-group-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-font-weight-selector\": {\n      name: \"toggle-group-font-weight-selector\",\n      filePath: \"examples/base/toggle-group-font-weight-selector.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-group-font-weight-selector\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-font-weight-selector\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-outline\": {\n      name: \"toggle-group-outline\",\n      filePath: \"examples/base/toggle-group-outline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-group-outline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-outline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-rtl\": {\n      name: \"toggle-group-rtl\",\n      filePath: \"examples/base/toggle-group-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-group-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-sizes\": {\n      name: \"toggle-group-sizes\",\n      filePath: \"examples/base/toggle-group-sizes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-group-sizes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-sizes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-spacing\": {\n      name: \"toggle-group-spacing\",\n      filePath: \"examples/base/toggle-group-spacing.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-group-spacing\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-spacing\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-group-vertical\": {\n      name: \"toggle-group-vertical\",\n      filePath: \"examples/base/toggle-group-vertical.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-group-vertical\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-group-vertical\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-outline\": {\n      name: \"toggle-outline\",\n      filePath: \"examples/base/toggle-outline.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-outline\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-outline\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-rtl\": {\n      name: \"toggle-rtl\",\n      filePath: \"examples/base/toggle-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-sizes\": {\n      name: \"toggle-sizes\",\n      filePath: \"examples/base/toggle-sizes.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-sizes\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-sizes\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"toggle-text\": {\n      name: \"toggle-text\",\n      filePath: \"examples/base/toggle-text.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/toggle-text\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"toggle-text\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-demo\": {\n      name: \"tooltip-demo\",\n      filePath: \"examples/base/tooltip-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tooltip-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-disabled\": {\n      name: \"tooltip-disabled\",\n      filePath: \"examples/base/tooltip-disabled.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tooltip-disabled\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-disabled\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-keyboard\": {\n      name: \"tooltip-keyboard\",\n      filePath: \"examples/base/tooltip-keyboard.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tooltip-keyboard\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-keyboard\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-rtl\": {\n      name: \"tooltip-rtl\",\n      filePath: \"examples/base/tooltip-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tooltip-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"tooltip-sides\": {\n      name: \"tooltip-sides\",\n      filePath: \"examples/base/tooltip-sides.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/tooltip-sides\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"tooltip-sides\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-blockquote\": {\n      name: \"typography-blockquote\",\n      filePath: \"examples/base/typography-blockquote.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-blockquote\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-blockquote\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-demo\": {\n      name: \"typography-demo\",\n      filePath: \"examples/base/typography-demo.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-demo\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-demo\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-h1\": {\n      name: \"typography-h1\",\n      filePath: \"examples/base/typography-h1.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-h1\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-h1\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-h2\": {\n      name: \"typography-h2\",\n      filePath: \"examples/base/typography-h2.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-h2\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-h2\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-h3\": {\n      name: \"typography-h3\",\n      filePath: \"examples/base/typography-h3.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-h3\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-h3\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-h4\": {\n      name: \"typography-h4\",\n      filePath: \"examples/base/typography-h4.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-h4\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-h4\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-inline-code\": {\n      name: \"typography-inline-code\",\n      filePath: \"examples/base/typography-inline-code.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-inline-code\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-inline-code\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-large\": {\n      name: \"typography-large\",\n      filePath: \"examples/base/typography-large.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-large\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-large\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-lead\": {\n      name: \"typography-lead\",\n      filePath: \"examples/base/typography-lead.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-lead\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-lead\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-list\": {\n      name: \"typography-list\",\n      filePath: \"examples/base/typography-list.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-list\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-list\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-muted\": {\n      name: \"typography-muted\",\n      filePath: \"examples/base/typography-muted.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-muted\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-muted\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-p\": {\n      name: \"typography-p\",\n      filePath: \"examples/base/typography-p.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-p\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-p\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-rtl\": {\n      name: \"typography-rtl\",\n      filePath: \"examples/base/typography-rtl.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-rtl\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-rtl\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-small\": {\n      name: \"typography-small\",\n      filePath: \"examples/base/typography-small.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-small\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-small\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n    \"typography-table\": {\n      name: \"typography-table\",\n      filePath: \"examples/base/typography-table.tsx\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./base/typography-table\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || \"typography-table\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },\n  },\n}\n"
  },
  {
    "path": "apps/v4/examples/base/accordion-basic.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/base/ui/accordion\"\n\nconst items = [\n  {\n    value: \"item-1\",\n    trigger: \"How do I reset my password?\",\n    content:\n      \"Click on 'Forgot Password' on the login page, enter your email address, and we'll send you a link to reset your password. The link will expire in 24 hours.\",\n  },\n  {\n    value: \"item-2\",\n    trigger: \"Can I change my subscription plan?\",\n    content:\n      \"Yes, you can upgrade or downgrade your plan at any time from your account settings. Changes will be reflected in your next billing cycle.\",\n  },\n  {\n    value: \"item-3\",\n    trigger: \"What payment methods do you accept?\",\n    content:\n      \"We accept all major credit cards, PayPal, and bank transfers. All payments are processed securely through our payment partners.\",\n  },\n]\n\nexport function AccordionBasic() {\n  return (\n    <Accordion defaultValue={[\"item-1\"]} className=\"max-w-lg\">\n      {items.map((item) => (\n        <AccordionItem key={item.value} value={item.value}>\n          <AccordionTrigger>{item.trigger}</AccordionTrigger>\n          <AccordionContent>{item.content}</AccordionContent>\n        </AccordionItem>\n      ))}\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/accordion-borders.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/base/ui/accordion\"\n\nconst items = [\n  {\n    value: \"billing\",\n    trigger: \"How does billing work?\",\n    content:\n      \"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members.\",\n  },\n  {\n    value: \"security\",\n    trigger: \"Is my data secure?\",\n    content:\n      \"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols.\",\n  },\n  {\n    value: \"integration\",\n    trigger: \"What integrations do you support?\",\n    content:\n      \"We integrate with 500+ popular tools including Slack, Zapier, Salesforce, HubSpot, and more. You can also build custom integrations using our REST API and webhooks.\",\n  },\n]\n\nexport default function AccordionBorders() {\n  return (\n    <Accordion\n      className=\"max-w-lg rounded-lg border\"\n      defaultValue={[\"billing\"]}\n    >\n      {items.map((item) => (\n        <AccordionItem\n          key={item.value}\n          value={item.value}\n          className=\"border-b px-4 last:border-b-0\"\n        >\n          <AccordionTrigger>{item.trigger}</AccordionTrigger>\n          <AccordionContent>{item.content}</AccordionContent>\n        </AccordionItem>\n      ))}\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/accordion-card.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/base/ui/accordion\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui/card\"\n\nconst items = [\n  {\n    value: \"plans\",\n    trigger: \"What subscription plans do you offer?\",\n    content:\n      \"We offer three subscription tiers: Starter ($9/month), Professional ($29/month), and Enterprise ($99/month). Each plan includes increasing storage limits, API access, priority support, and team collaboration features.\",\n  },\n  {\n    value: \"billing\",\n    trigger: \"How does billing work?\",\n    content:\n      \"Billing occurs automatically at the start of each billing cycle. We accept all major credit cards, PayPal, and ACH transfers for enterprise customers. You'll receive an invoice via email after each payment.\",\n  },\n  {\n    value: \"cancel\",\n    trigger: \"How do I cancel my subscription?\",\n    content:\n      \"You can cancel your subscription anytime from your account settings. There are no cancellation fees or penalties. Your access will continue until the end of your current billing period.\",\n  },\n]\n\nexport default function AccordionCard() {\n  return (\n    <Card className=\"w-full max-w-sm\">\n      <CardHeader>\n        <CardTitle>Subscription & Billing</CardTitle>\n        <CardDescription>\n          Common questions about your account, plans, payments and\n          cancellations.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Accordion defaultValue={[\"plans\"]}>\n          {items.map((item) => (\n            <AccordionItem key={item.value} value={item.value}>\n              <AccordionTrigger>{item.trigger}</AccordionTrigger>\n              <AccordionContent>{item.content}</AccordionContent>\n            </AccordionItem>\n          ))}\n        </Accordion>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/accordion-demo.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/base/ui/accordion\"\n\nexport default function AccordionDemo() {\n  return (\n    <Accordion defaultValue={[\"shipping\"]} className=\"max-w-lg\">\n      <AccordionItem value=\"shipping\">\n        <AccordionTrigger>What are your shipping options?</AccordionTrigger>\n        <AccordionContent>\n          We offer standard (5-7 days), express (2-3 days), and overnight\n          shipping. Free shipping on international orders.\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"returns\">\n        <AccordionTrigger>What is your return policy?</AccordionTrigger>\n        <AccordionContent>\n          Returns accepted within 30 days. Items must be unused and in original\n          packaging. Refunds processed within 5-7 business days.\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"support\">\n        <AccordionTrigger>How can I contact customer support?</AccordionTrigger>\n        <AccordionContent>\n          Reach us via email, live chat, or phone. We respond within 24 hours\n          during business days.\n        </AccordionContent>\n      </AccordionItem>\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/accordion-disabled.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/base/ui/accordion\"\n\nexport default function AccordionDisabled() {\n  return (\n    <Accordion className=\"w-full\">\n      <AccordionItem value=\"item-1\">\n        <AccordionTrigger>Can I access my account history?</AccordionTrigger>\n        <AccordionContent>\n          Yes, you can view your complete account history including all\n          transactions, plan changes, and support tickets in the Account History\n          section of your dashboard.\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"item-2\" disabled>\n        <AccordionTrigger>Premium feature information</AccordionTrigger>\n        <AccordionContent>\n          This section contains information about premium features. Upgrade your\n          plan to access this content.\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"item-3\">\n        <AccordionTrigger>How do I update my email address?</AccordionTrigger>\n        <AccordionContent>\n          You can update your email address in your account settings.\n          You&apos;ll receive a verification email at your new address to\n          confirm the change.\n        </AccordionContent>\n      </AccordionItem>\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/accordion-multiple.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/base/ui/accordion\"\n\nconst items = [\n  {\n    value: \"notifications\",\n    trigger: \"Notification Settings\",\n    content:\n      \"Manage how you receive notifications. You can enable email alerts for updates or push notifications for mobile devices.\",\n  },\n  {\n    value: \"privacy\",\n    trigger: \"Privacy & Security\",\n    content:\n      \"Control your privacy settings and security preferences. Enable two-factor authentication, manage connected devices, review active sessions, and configure data sharing preferences. You can also download your data or delete your account.\",\n  },\n  {\n    value: \"billing\",\n    trigger: \"Billing & Subscription\",\n    content:\n      \"View your current plan, payment history, and upcoming invoices. Update your payment method, change your subscription tier, or cancel your subscription.\",\n  },\n]\n\nexport function AccordionMultiple() {\n  return (\n    <Accordion multiple className=\"max-w-lg\" defaultValue={[\"notifications\"]}>\n      {items.map((item) => (\n        <AccordionItem key={item.value} value={item.value}>\n          <AccordionTrigger>{item.trigger}</AccordionTrigger>\n          <AccordionContent>{item.content}</AccordionContent>\n        </AccordionItem>\n      ))}\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/accordion-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/base/ui-rtl/accordion\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      question1: \"How do I reset my password?\",\n      answer1:\n        \"Click on 'Forgot Password' on the login page, enter your email address, and we'll send you a link to reset your password.\",\n      question2: \"Can I change my subscription plan?\",\n      answer2:\n        \"Yes, you can upgrade or downgrade your plan at any time from your account settings. Changes will be reflected in your next billing cycle.\",\n      question3: \"What payment methods do you accept?\",\n      answer3:\n        \"We accept all major credit cards, PayPal, and bank transfers. All payments are processed securely through our payment partners.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      question1: \"كيف يمكنني إعادة تعيين كلمة المرور؟\",\n      answer1:\n        \"انقر على 'نسيت كلمة المرور' في صفحة تسجيل الدخول، أدخل عنوان بريدك الإلكتروني، وسنرسل لك رابطًا لإعادة تعيين كلمة المرور. سينتهي صلاحية الرابط خلال 24 ساعة.\",\n      question2: \"هل يمكنني تغيير خطة الاشتراك الخاصة بي؟\",\n      answer2:\n        \"نعم، يمكنك ترقية أو تخفيض خطتك في أي وقت من إعدادات حسابك. ستظهر التغييرات في دورة الفوترة التالية.\",\n      question3: \"ما هي طرق الدفع التي تقبلونها؟\",\n      answer3:\n        \"نقبل جميع بطاقات الائتمان الرئيسية و PayPal والتحويلات المصرفية. تتم معالجة جميع المدفوعات بأمان من خلال شركاء الدفع لدينا.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      question1: \"איך אני מאפס את הסיסמה שלי?\",\n      answer1:\n        \"לחץ על 'שכחתי סיסמה' בעמוד ההתחברות, הזן את כתובת האימייל שלך, ונשלח לך קישור לאיפוס הסיסמה. הקישור יפוג תוך 24 שעות.\",\n      question2: \"האם אני יכול לשנות את תוכנית המנוי שלי?\",\n      answer2:\n        \"כן, אתה יכול לשדרג או להוריד את התוכנית שלך בכל עת מההגדרות של החשבון שלך. השינויים יבואו לידי ביטוי במחזור החיוב הבא.\",\n      question3: \"אילו אמצעי תשלום אתם מקבלים?\",\n      answer3: \"אנו מקבלים כרטיסי אשראי, PayPal והעברות בנקאיות.\",\n    },\n  },\n}\n\nconst items = [\n  {\n    value: \"item-1\",\n    questionKey: \"question1\" as const,\n    answerKey: \"answer1\" as const,\n  },\n  {\n    value: \"item-2\",\n    questionKey: \"question2\" as const,\n    answerKey: \"answer2\" as const,\n  },\n  {\n    value: \"item-3\",\n    questionKey: \"question3\" as const,\n    answerKey: \"answer3\" as const,\n  },\n] as const\n\nexport function AccordionRtl() {\n  const { t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Accordion defaultValue={[\"item-1\"]} className=\"max-w-md\">\n      {items.map((item) => (\n        <AccordionItem key={item.value} value={item.value}>\n          <AccordionTrigger>{t[item.questionKey]}</AccordionTrigger>\n          <AccordionContent>{t[item.answerKey]}</AccordionContent>\n        </AccordionItem>\n      ))}\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-action.tsx",
    "content": "import {\n  Alert,\n  AlertAction,\n  AlertDescription,\n  AlertTitle,\n} from \"@/examples/base/ui/alert\"\nimport { Button } from \"@/examples/base/ui/button\"\n\nexport default function AlertActionExample() {\n  return (\n    <Alert className=\"max-w-md\">\n      <AlertTitle>Dark mode is now available</AlertTitle>\n      <AlertDescription>\n        Enable it under your profile settings to get started.\n      </AlertDescription>\n      <AlertAction>\n        <Button size=\"xs\" variant=\"default\">\n          Enable\n        </Button>\n      </AlertAction>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-basic.tsx",
    "content": "import { Alert, AlertDescription, AlertTitle } from \"@/examples/base/ui/alert\"\nimport { CheckCircle2Icon } from \"lucide-react\"\n\nexport default function AlertBasic() {\n  return (\n    <Alert className=\"max-w-md\">\n      <CheckCircle2Icon />\n      <AlertTitle>Account updated successfully</AlertTitle>\n      <AlertDescription>\n        Your profile information has been saved. Changes will be reflected\n        immediately.\n      </AlertDescription>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-colors.tsx",
    "content": "import { Alert, AlertDescription, AlertTitle } from \"@/examples/base/ui/alert\"\nimport { AlertTriangleIcon } from \"lucide-react\"\n\nexport default function AlertColors() {\n  return (\n    <Alert className=\"max-w-md border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-50\">\n      <AlertTriangleIcon />\n      <AlertTitle>Your subscription will expire in 3 days.</AlertTitle>\n      <AlertDescription>\n        Renew now to avoid service interruption or upgrade to a paid plan to\n        continue using the service.\n      </AlertDescription>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-demo.tsx",
    "content": "import { Alert, AlertDescription, AlertTitle } from \"@/examples/base/ui/alert\"\nimport { CheckCircle2Icon, InfoIcon } from \"lucide-react\"\n\nexport default function AlertDemo() {\n  return (\n    <div className=\"grid w-full max-w-md items-start gap-4\">\n      <Alert>\n        <CheckCircle2Icon />\n        <AlertTitle>Payment successful</AlertTitle>\n        <AlertDescription>\n          Your payment of $29.99 has been processed. A receipt has been sent to\n          your email address.\n        </AlertDescription>\n      </Alert>\n      <Alert>\n        <InfoIcon />\n        <AlertTitle>New feature available</AlertTitle>\n        <AlertDescription>\n          We&apos;ve added dark mode support. You can enable it in your account\n          settings.\n        </AlertDescription>\n      </Alert>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-destructive.tsx",
    "content": "import { Alert, AlertDescription, AlertTitle } from \"@/examples/base/ui/alert\"\nimport { AlertCircleIcon } from \"lucide-react\"\n\nexport default function AlertDestructive() {\n  return (\n    <Alert variant=\"destructive\" className=\"max-w-md\">\n      <AlertCircleIcon />\n      <AlertTitle>Payment failed</AlertTitle>\n      <AlertDescription>\n        Your payment could not be processed. Please check your payment method\n        and try again.\n      </AlertDescription>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-dialog-basic.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/base/ui/alert-dialog\"\nimport { Button } from \"@/examples/base/ui/button\"\n\nexport function AlertDialogBasic() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger\n        render={<Button variant=\"outline\">Show Dialog</Button>}\n      />\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n          <AlertDialogDescription>\n            This action cannot be undone. This will permanently delete your\n            account and remove your data from our servers.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction>Continue</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-dialog-demo.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/base/ui/alert-dialog\"\nimport { Button } from \"@/examples/base/ui/button\"\n\nexport default function AlertDialogDemo() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger render={<Button variant=\"outline\" />}>\n        Show Dialog\n      </AlertDialogTrigger>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n          <AlertDialogDescription>\n            This action cannot be undone. This will permanently delete your\n            account from our servers.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction>Continue</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-dialog-destructive.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/base/ui/alert-dialog\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Trash2Icon } from \"lucide-react\"\n\nexport function AlertDialogDestructive() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger\n        render={<Button variant=\"destructive\">Delete Chat</Button>}\n      />\n      <AlertDialogContent size=\"sm\">\n        <AlertDialogHeader>\n          <AlertDialogMedia className=\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\">\n            <Trash2Icon />\n          </AlertDialogMedia>\n          <AlertDialogTitle>Delete chat?</AlertDialogTitle>\n          <AlertDialogDescription>\n            This will permanently delete this chat conversation. View{\" \"}\n            <a href=\"#\">Settings</a> delete any memories saved during this chat.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel variant=\"outline\">Cancel</AlertDialogCancel>\n          <AlertDialogAction variant=\"destructive\">Delete</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-dialog-media.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/base/ui/alert-dialog\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { CircleFadingPlusIcon } from \"lucide-react\"\n\nexport function AlertDialogWithMedia() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger\n        render={<Button variant=\"outline\">Share Project</Button>}\n      />\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogMedia>\n            <CircleFadingPlusIcon />\n          </AlertDialogMedia>\n          <AlertDialogTitle>Share this project?</AlertDialogTitle>\n          <AlertDialogDescription>\n            Anyone with the link will be able to view and edit this project.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction>Share</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-dialog-rtl.tsx",
    "content": "\"use client\"\n\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/base/ui-rtl/alert-dialog\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { BluetoothIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      showDialog: \"Show Dialog\",\n      showDialogSm: \"Show Dialog (sm)\",\n      title: \"Are you absolutely sure?\",\n      description:\n        \"This action cannot be undone. This will permanently delete your account from our servers.\",\n      cancel: \"Cancel\",\n      continue: \"Continue\",\n      smallTitle: \"Allow accessory to connect?\",\n      smallDescription:\n        \"Do you want to allow the USB accessory to connect to this device?\",\n      dontAllow: \"Don't allow\",\n      allow: \"Allow\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      showDialog: \"إظهار الحوار\",\n      showDialogSm: \"إظهار الحوار (صغير)\",\n      title: \"هل أنت متأكد تمامًا؟\",\n      description:\n        \"لا يمكن التراجع عن هذا الإجراء. سيؤدي هذا إلى حذف حسابك نهائيًا من خوادمنا.\",\n      cancel: \"إلغاء\",\n      continue: \"متابعة\",\n      smallTitle: \"السماح للملحق بالاتصال؟\",\n      smallDescription: \"هل تريد السماح لملحق USB بالاتصال بهذا الجهاز؟\",\n      dontAllow: \"عدم السماح\",\n      allow: \"السماح\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      showDialog: \"הצג דיאלוג\",\n      showDialogSm: \"הצג דיאלוג (קטן)\",\n      title: \"האם אתה בטוח לחלוטין?\",\n      description:\n        \"פעולה זו לא ניתנת לביטול. זה ימחק לצמיתות את החשבון שלך מהשרתים שלנו.\",\n      cancel: \"ביטול\",\n      continue: \"המשך\",\n      smallTitle: \"לאפשר להתקן להתחבר?\",\n      smallDescription: \"האם אתה רוצה לאפשר להתקן USB להתחבר למכשיר זה?\",\n      dontAllow: \"אל תאפשר\",\n      allow: \"אפשר\",\n    },\n  },\n}\n\nexport function AlertDialogRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex gap-4\" dir={dir}>\n      <AlertDialog>\n        <AlertDialogTrigger render={<Button variant=\"outline\" />}>\n          {t.showDialog}\n        </AlertDialogTrigger>\n        <AlertDialogContent\n          dir={dir}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <AlertDialogHeader>\n            <AlertDialogTitle>{t.title}</AlertDialogTitle>\n            <AlertDialogDescription>{t.description}</AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>{t.cancel}</AlertDialogCancel>\n            <AlertDialogAction>{t.continue}</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n      <AlertDialog>\n        <AlertDialogTrigger render={<Button variant=\"outline\" />}>\n          {t.showDialogSm}\n        </AlertDialogTrigger>\n        <AlertDialogContent\n          size=\"sm\"\n          dir={dir}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <AlertDialogHeader>\n            <AlertDialogMedia>\n              <BluetoothIcon />\n            </AlertDialogMedia>\n            <AlertDialogTitle>{t.smallTitle}</AlertDialogTitle>\n            <AlertDialogDescription>\n              {t.smallDescription}\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>{t.dontAllow}</AlertDialogCancel>\n            <AlertDialogAction>{t.allow}</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-dialog-small-media.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/base/ui/alert-dialog\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { BluetoothIcon } from \"lucide-react\"\n\nexport function AlertDialogSmallWithMedia() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger\n        render={<Button variant=\"outline\">Show Dialog</Button>}\n      />\n\n      <AlertDialogContent size=\"sm\">\n        <AlertDialogHeader>\n          <AlertDialogMedia>\n            <BluetoothIcon />\n          </AlertDialogMedia>\n          <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n          <AlertDialogDescription>\n            Do you want to allow the USB accessory to connect to this device?\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n          <AlertDialogAction>Allow</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-dialog-small.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/base/ui/alert-dialog\"\nimport { Button } from \"@/examples/base/ui/button\"\n\nexport function AlertDialogSmall() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger\n        render={<Button variant=\"outline\">Show Dialog</Button>}\n      />\n      <AlertDialogContent size=\"sm\">\n        <AlertDialogHeader>\n          <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n          <AlertDialogDescription>\n            Do you want to allow the USB accessory to connect to this device?\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n          <AlertDialogAction>Allow</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/alert-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/examples/base/ui-rtl/alert\"\nimport { CheckCircle2Icon, InfoIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      paymentTitle: \"Payment successful\",\n      paymentDescription:\n        \"Your payment of $29.99 has been processed. A receipt has been sent to your email address.\",\n      featureTitle: \"New feature available\",\n      featureDescription:\n        \"We've added dark mode support. You can enable it in your account settings.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      paymentTitle: \"تم الدفع بنجاح\",\n      paymentDescription:\n        \"تمت معالجة دفعتك البالغة 29.99 دولارًا. تم إرسال إيصال إلى عنوان بريدك الإلكتروني.\",\n      featureTitle: \"ميزة جديدة متاحة\",\n      featureDescription:\n        \"لقد أضفنا دعم الوضع الداكن. يمكنك تفعيله في إعدادات حسابك.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      paymentTitle: \"התשלום בוצע בהצלחה\",\n      paymentDescription:\n        \"התשלום שלך בסך 29.99 דולר עובד. קבלה נשלחה לכתובת האימייל שלך.\",\n      featureTitle: \"תכונה חדשה זמינה\",\n      featureDescription:\n        \"הוספנו תמיכה במצב כהה. אתה יכול להפעיל אותו בהגדרות החשבון שלך.\",\n    },\n  },\n}\n\nconst alerts = [\n  {\n    icon: CheckCircle2Icon,\n    titleKey: \"paymentTitle\" as const,\n    descriptionKey: \"paymentDescription\" as const,\n  },\n  {\n    icon: InfoIcon,\n    titleKey: \"featureTitle\" as const,\n    descriptionKey: \"featureDescription\" as const,\n  },\n] as const\n\nexport function AlertRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"grid w-full max-w-md items-start gap-4\" dir={dir}>\n      {alerts.map((alert, index) => {\n        const Icon = alert.icon\n        return (\n          <Alert key={index}>\n            <Icon />\n            <AlertTitle>{t[alert.titleKey]}</AlertTitle>\n            <AlertDescription>{t[alert.descriptionKey]}</AlertDescription>\n          </Alert>\n        )\n      })}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/aspect-ratio-demo.tsx",
    "content": "import Image from \"next/image\"\nimport { AspectRatio } from \"@/examples/base/ui/aspect-ratio\"\n\nexport default function AspectRatioDemo() {\n  return (\n    <AspectRatio ratio={16 / 9} className=\"w-full max-w-sm rounded-lg bg-muted\">\n      <Image\n        src=\"https://avatar.vercel.sh/shadcn1\"\n        alt=\"Photo\"\n        fill\n        className=\"rounded-lg object-cover grayscale dark:brightness-20\"\n      />\n    </AspectRatio>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/aspect-ratio-portrait.tsx",
    "content": "import Image from \"next/image\"\nimport { AspectRatio } from \"@/examples/base/ui/aspect-ratio\"\n\nexport function AspectRatioPortrait() {\n  return (\n    <AspectRatio\n      ratio={9 / 16}\n      className=\"w-full max-w-[10rem] rounded-lg bg-muted\"\n    >\n      <Image\n        src=\"https://avatar.vercel.sh/shadcn1\"\n        alt=\"Photo\"\n        fill\n        className=\"rounded-lg object-cover grayscale dark:brightness-20\"\n      />\n    </AspectRatio>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/aspect-ratio-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Image from \"next/image\"\nimport { AspectRatio } from \"@/examples/base/ui-rtl/aspect-ratio\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      caption: \"Beautiful landscape\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      caption: \"منظر طبيعي جميل\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      caption: \"נוף יפה\",\n    },\n  },\n}\n\nexport function AspectRatioRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <figure className=\"w-full max-w-sm\" dir={dir}>\n      <AspectRatio ratio={16 / 9} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n      <figcaption className=\"mt-2 text-center text-sm text-muted-foreground\">\n        {t.caption}\n      </figcaption>\n    </figure>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/aspect-ratio-square.tsx",
    "content": "import Image from \"next/image\"\nimport { AspectRatio } from \"@/examples/base/ui/aspect-ratio\"\n\nexport function AspectRatioSquare() {\n  return (\n    <AspectRatio\n      ratio={1 / 1}\n      className=\"w-full max-w-[12rem] rounded-lg bg-muted\"\n    >\n      <Image\n        src=\"https://avatar.vercel.sh/shadcn1\"\n        alt=\"Photo\"\n        fill\n        className=\"rounded-lg object-cover grayscale dark:brightness-20\"\n      />\n    </AspectRatio>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-badge-icon.tsx",
    "content": "import {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/examples/base/ui/avatar\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport function AvatarBadgeIconExample() {\n  return (\n    <Avatar className=\"grayscale\">\n      <AvatarImage src=\"https://github.com/pranathip.png\" alt=\"@pranathip\" />\n      <AvatarFallback>PP</AvatarFallback>\n      <AvatarBadge>\n        <PlusIcon />\n      </AvatarBadge>\n    </Avatar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-badge.tsx",
    "content": "import {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/examples/base/ui/avatar\"\n\nexport function AvatarWithBadge() {\n  return (\n    <Avatar>\n      <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n      <AvatarFallback>CN</AvatarFallback>\n      <AvatarBadge className=\"bg-green-600 dark:bg-green-800\" />\n    </Avatar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-basic.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\n\nexport default function AvatarDemo() {\n  return (\n    <Avatar>\n      <AvatarImage\n        src=\"https://github.com/shadcn.png\"\n        alt=\"@shadcn\"\n        className=\"grayscale\"\n      />\n      <AvatarFallback>CN</AvatarFallback>\n    </Avatar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-demo.tsx",
    "content": "import {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/examples/base/ui/avatar\"\n\nexport default function AvatarDemo() {\n  return (\n    <div className=\"flex flex-row flex-wrap items-center gap-6 md:gap-12\">\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/shadcn.png\"\n          alt=\"@shadcn\"\n          className=\"grayscale\"\n        />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n        <AvatarBadge className=\"bg-green-600 dark:bg-green-800\" />\n      </Avatar>\n      <AvatarGroup className=\"grayscale\">\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>+3</AvatarGroupCount>\n      </AvatarGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-dropdown.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\n\nexport function AvatarDropdown() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger\n        render={<Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\" />}\n      >\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-32\">\n        <DropdownMenuGroup>\n          <DropdownMenuItem>Profile</DropdownMenuItem>\n          <DropdownMenuItem>Billing</DropdownMenuItem>\n          <DropdownMenuItem>Settings</DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem variant=\"destructive\">Log out</DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-group-count-icon.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/examples/base/ui/avatar\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport function AvatarGroupCountIconExample() {\n  return (\n    <AvatarGroup className=\"grayscale\">\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage src=\"https://github.com/maxleiter.png\" alt=\"@maxleiter\" />\n        <AvatarFallback>LR</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n      </Avatar>\n      <AvatarGroupCount>\n        <PlusIcon />\n      </AvatarGroupCount>\n    </AvatarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-group-count.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/examples/base/ui/avatar\"\n\nexport function AvatarGroupCountExample() {\n  return (\n    <AvatarGroup className=\"grayscale\">\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage src=\"https://github.com/maxleiter.png\" alt=\"@maxleiter\" />\n        <AvatarFallback>LR</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n      </Avatar>\n      <AvatarGroupCount>+3</AvatarGroupCount>\n    </AvatarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-group.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarImage,\n} from \"@/examples/base/ui/avatar\"\n\nexport function AvatarGroupExample() {\n  return (\n    <AvatarGroup className=\"grayscale\">\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage src=\"https://github.com/maxleiter.png\" alt=\"@maxleiter\" />\n        <AvatarFallback>LR</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n      </Avatar>\n    </AvatarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/examples/base/ui-rtl/avatar\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      moreUsers: \"+3\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      moreUsers: \"+٣\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      moreUsers: \"+3\",\n    },\n  },\n}\n\nexport function AvatarRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div\n      className=\"flex flex-row flex-wrap items-center gap-6 md:gap-12\"\n      dir={dir}\n    >\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/shadcn.png\"\n          alt=\"@shadcn\"\n          className=\"grayscale\"\n        />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n        <AvatarBadge className=\"bg-green-600 dark:bg-green-800\" />\n      </Avatar>\n      <AvatarGroup className=\"grayscale\">\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>{t.moreUsers}</AvatarGroupCount>\n      </AvatarGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/avatar-size.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\n\nexport function AvatarSizeExample() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2 grayscale\">\n      <Avatar size=\"sm\">\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar size=\"lg\">\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/badge-colors.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\n\nexport function BadgeCustomColors() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Badge className=\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\">\n        Blue\n      </Badge>\n      <Badge className=\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\">\n        Green\n      </Badge>\n      <Badge className=\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\">\n        Sky\n      </Badge>\n      <Badge className=\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\">\n        Purple\n      </Badge>\n      <Badge className=\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\">\n        Red\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/badge-demo.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\n\nexport default function BadgeDemo() {\n  return (\n    <div className=\"flex w-full flex-wrap justify-center gap-2\">\n      <Badge>Badge</Badge>\n      <Badge variant=\"secondary\">Secondary</Badge>\n      <Badge variant=\"destructive\">Destructive</Badge>\n      <Badge variant=\"outline\">Outline</Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/badge-icon.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\nimport { BadgeCheck, BookmarkIcon } from \"lucide-react\"\n\nexport function BadgeWithIconLeft() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Badge variant=\"secondary\">\n        <BadgeCheck data-icon=\"inline-start\" />\n        Verified\n      </Badge>\n      <Badge variant=\"outline\">\n        Bookmark\n        <BookmarkIcon data-icon=\"inline-end\" />\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/badge-link.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nexport function BadgeAsLink() {\n  return (\n    <Badge render={<a href=\"#link\" />}>\n      Open Link <ArrowUpRightIcon data-icon=\"inline-end\" />\n    </Badge>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/badge-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Badge } from \"@/examples/base/ui-rtl/badge\"\nimport { BadgeCheck, BookmarkIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      badge: \"Badge\",\n      secondary: \"Secondary\",\n      destructive: \"Destructive\",\n      outline: \"Outline\",\n      verified: \"Verified\",\n      bookmark: \"Bookmark\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      badge: \"شارة\",\n      secondary: \"ثانوي\",\n      destructive: \"مدمر\",\n      outline: \"مخطط\",\n      verified: \"متحقق\",\n      bookmark: \"إشارة مرجعية\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      badge: \"תג\",\n      secondary: \"משני\",\n      destructive: \"הרסני\",\n      outline: \"קווי מתאר\",\n      verified: \"מאומת\",\n      bookmark: \"סימנייה\",\n    },\n  },\n}\n\nexport function BadgeRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex w-full flex-wrap justify-center gap-2\" dir={dir}>\n      <Badge>{t.badge}</Badge>\n      <Badge variant=\"secondary\">{t.secondary}</Badge>\n      <Badge variant=\"destructive\">{t.destructive}</Badge>\n      <Badge variant=\"outline\">{t.outline}</Badge>\n      <Badge variant=\"secondary\">\n        <BadgeCheck data-icon=\"inline-start\" />\n        {t.verified}\n      </Badge>\n      <Badge variant=\"outline\">\n        {t.bookmark}\n        <BookmarkIcon data-icon=\"inline-end\" />\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/badge-spinner.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\n\nexport function BadgeWithSpinner() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Badge variant=\"destructive\">\n        <Spinner data-icon=\"inline-start\" />\n        Deleting\n      </Badge>\n      <Badge variant=\"secondary\">\n        Generating\n        <Spinner data-icon=\"inline-end\" />\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/badge-variants.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\n\nexport function BadgeVariants() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Badge>Default</Badge>\n      <Badge variant=\"secondary\">Secondary</Badge>\n      <Badge variant=\"destructive\">Destructive</Badge>\n      <Badge variant=\"outline\">Outline</Badge>\n      <Badge variant=\"ghost\">Ghost</Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/breadcrumb-basic.tsx",
    "content": "import {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/base/ui/breadcrumb\"\n\nexport function BreadcrumbBasic() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink href=\"#\">Home</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink href=\"#\">Components</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/breadcrumb-demo.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/base/ui/breadcrumb\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\n\nexport function BreadcrumbDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<a href=\"#\" />}>Home</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={<Button size=\"icon-sm\" variant=\"ghost\" />}\n            >\n              <BreadcrumbEllipsis />\n              <span className=\"sr-only\">Toggle menu</span>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"start\">\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\n                <DropdownMenuItem>Themes</DropdownMenuItem>\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<a href=\"#\" />}>Components</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/breadcrumb-dropdown.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/base/ui/breadcrumb\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport { ChevronDownIcon, DotIcon } from \"lucide-react\"\n\nexport function BreadcrumbDropdown() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<Link href=\"/\" />}>Home</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={<button className=\"flex items-center gap-1\" />}\n            >\n              Components\n              <ChevronDownIcon data-icon=\"inline-end\" />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"start\">\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\n                <DropdownMenuItem>Themes</DropdownMenuItem>\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/breadcrumb-ellipsis.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/base/ui/breadcrumb\"\n\nexport function BreadcrumbEllipsisDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<Link href=\"/\" />}>Home</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbEllipsis />\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<Link href=\"/docs/components\" />}>\n            Components\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/breadcrumb-link.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/base/ui/breadcrumb\"\n\nexport function BreadcrumbLinkDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<Link href=\"#link-component\" />}>\n            Home\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<Link href=\"#link-component\" />}>\n            Components\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/breadcrumb-rtl.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/base/ui-rtl/breadcrumb\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport { ChevronDownIcon, DotIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      home: \"Home\",\n      components: \"Components\",\n      documentation: \"Documentation\",\n      themes: \"Themes\",\n      github: \"GitHub\",\n      breadcrumb: \"Breadcrumb\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      home: \"الرئيسية\",\n      components: \"المكونات\",\n      documentation: \"التوثيق\",\n      themes: \"السمات\",\n      github: \"جيت هاب\",\n      breadcrumb: \"مسار التنقل\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      home: \"בית\",\n      components: \"רכיבים\",\n      documentation: \"תיעוד\",\n      themes: \"ערכות נושא\",\n      github: \"גיטהאב\",\n      breadcrumb: \"פירורי לחם\",\n    },\n  },\n}\n\nexport function BreadcrumbRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <Breadcrumb dir={dir}>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<Link href=\"/\" />}>{t.home}</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={<button className=\"flex items-center gap-1\" />}\n            >\n              {t.components}\n              <ChevronDownIcon data-icon=\"inline-end\" className=\"size-3.5\" />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent\n              align={dir === \"rtl\" ? \"end\" : \"start\"}\n              data-lang={dir === \"rtl\" ? language : undefined}\n              dir={dir}\n            >\n              <DropdownMenuGroup>\n                <DropdownMenuItem>{t.documentation}</DropdownMenuItem>\n                <DropdownMenuItem>{t.themes}</DropdownMenuItem>\n                <DropdownMenuItem>{t.github}</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbPage>{t.breadcrumb}</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/breadcrumb-separator.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/base/ui/breadcrumb\"\nimport { DotIcon } from \"lucide-react\"\n\nexport function BreadcrumbSeparatorDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<Link href=\"/\" />}>Home</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbLink render={<Link href=\"/components\" />}>\n            Components\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-default.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\n\nexport default function ButtonDefault() {\n  return <Button>Button</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ArrowUpIcon } from \"lucide-react\"\n\nexport default function ButtonDemo() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2 md:flex-row\">\n      <Button variant=\"outline\">Button</Button>\n      <Button variant=\"outline\" size=\"icon\" aria-label=\"Submit\">\n        <ArrowUpIcon />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-destructive.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\n\nexport default function ButtonDestructive() {\n  return <Button variant=\"destructive\">Destructive</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-ghost.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\n\nexport default function ButtonGhost() {\n  return <Button variant=\"ghost\">Ghost</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  ArchiveIcon,\n  ArrowLeftIcon,\n  CalendarPlusIcon,\n  ClockIcon,\n  ListFilterIcon,\n  MailCheckIcon,\n  MoreHorizontalIcon,\n  TagIcon,\n  Trash2Icon,\n} from \"lucide-react\"\n\nexport default function ButtonGroupDemo() {\n  const [label, setLabel] = React.useState(\"personal\")\n\n  return (\n    <ButtonGroup>\n      <ButtonGroup className=\"hidden sm:flex\">\n        <Button variant=\"outline\" size=\"icon\" aria-label=\"Go Back\">\n          <ArrowLeftIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Archive</Button>\n        <Button variant=\"outline\">Report</Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Snooze</Button>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <Button variant=\"outline\" size=\"icon\" aria-label=\"More Options\" />\n            }\n          >\n            <MoreHorizontalIcon />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" className=\"w-40\">\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <MailCheckIcon />\n                Mark as Read\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <ArchiveIcon />\n                Archive\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <ClockIcon />\n                Snooze\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CalendarPlusIcon />\n                Add to Calendar\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <ListFilterIcon />\n                Add to List\n              </DropdownMenuItem>\n              <DropdownMenuSub>\n                <DropdownMenuSubTrigger>\n                  <TagIcon />\n                  Label As...\n                </DropdownMenuSubTrigger>\n                <DropdownMenuSubContent>\n                  <DropdownMenuRadioGroup\n                    value={label}\n                    onValueChange={setLabel}\n                  >\n                    <DropdownMenuRadioItem value=\"personal\">\n                      Personal\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"work\">\n                      Work\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"other\">\n                      Other\n                    </DropdownMenuRadioItem>\n                  </DropdownMenuRadioGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuSub>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem variant=\"destructive\">\n                <Trash2Icon />\n                Trash\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-dropdown.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  AlertTriangleIcon,\n  CheckIcon,\n  ChevronDownIcon,\n  CopyIcon,\n  ShareIcon,\n  TrashIcon,\n  UserRoundXIcon,\n  VolumeOffIcon,\n} from \"lucide-react\"\n\nexport default function ButtonGroupDropdown() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"outline\">Follow</Button>\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"pl-2!\" />}\n        >\n          <ChevronDownIcon />\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-44\">\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              <VolumeOffIcon />\n              Mute Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <CheckIcon />\n              Mark as Read\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <AlertTriangleIcon />\n              Report Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <UserRoundXIcon />\n              Block User\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <ShareIcon />\n              Share Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <CopyIcon />\n              Copy Conversation\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem variant=\"destructive\">\n              <TrashIcon />\n              Delete Conversation\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\nimport { AudioLinesIcon, PlusIcon } from \"lucide-react\"\n\nexport default function ButtonGroupInputGroup() {\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\n\n  return (\n    <ButtonGroup className=\"[--radius:9999rem]\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <InputGroup>\n          <InputGroupInput\n            placeholder={\n              voiceEnabled ? \"Record and send audio...\" : \"Send a message...\"\n            }\n            disabled={voiceEnabled}\n          />\n          <InputGroupAddon align=\"inline-end\">\n            <Tooltip>\n              <TooltipTrigger\n                render={\n                  <InputGroupButton\n                    onClick={() => setVoiceEnabled(!voiceEnabled)}\n                    size=\"icon-xs\"\n                    data-active={voiceEnabled}\n                    className=\"data-[active=true]:bg-orange-100 data-[active=true]:text-orange-700 dark:data-[active=true]:bg-orange-800 dark:data-[active=true]:text-orange-100\"\n                    aria-pressed={voiceEnabled}\n                  />\n                }\n              >\n                <AudioLinesIcon />\n              </TooltipTrigger>\n              <TooltipContent>Voice Mode</TooltipContent>\n            </Tooltip>\n          </InputGroupAddon>\n        </InputGroup>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-input.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport default function ButtonGroupInput() {\n  return (\n    <ButtonGroup>\n      <Input placeholder=\"Search...\" />\n      <Button variant=\"outline\" aria-label=\"Search\">\n        <SearchIcon />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-nested.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\nimport { AudioLinesIcon, PlusIcon } from \"lucide-react\"\n\nexport function ButtonGroupNested() {\n  return (\n    <ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <InputGroup>\n          <InputGroupInput placeholder=\"Send a message...\" />\n          <Tooltip>\n            <TooltipTrigger render={<InputGroupAddon align=\"inline-end\" />}>\n              <AudioLinesIcon />\n            </TooltipTrigger>\n            <TooltipContent>Voice Mode</TooltipContent>\n          </Tooltip>\n        </InputGroup>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-orientation.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport { MinusIcon, PlusIcon } from \"lucide-react\"\n\nexport default function ButtonGroupOrientation() {\n  return (\n    <ButtonGroup\n      orientation=\"vertical\"\n      aria-label=\"Media controls\"\n      className=\"h-fit\"\n    >\n      <Button variant=\"outline\" size=\"icon\">\n        <PlusIcon />\n      </Button>\n      <Button variant=\"outline\" size=\"icon\">\n        <MinusIcon />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-popover.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\nimport { BotIcon, ChevronDownIcon } from \"lucide-react\"\n\nexport default function ButtonGroupPopover() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"outline\">\n        <BotIcon /> Copilot\n      </Button>\n      <Popover>\n        <PopoverTrigger\n          render={\n            <Button variant=\"outline\" size=\"icon\" aria-label=\"Open Popover\" />\n          }\n        >\n          <ChevronDownIcon />\n        </PopoverTrigger>\n        <PopoverContent align=\"end\" className=\"rounded-xl text-sm\">\n          <PopoverHeader>\n            <PopoverTitle>Start a new task with Copilot</PopoverTitle>\n            <PopoverDescription>\n              Describe your task in natural language.\n            </PopoverDescription>\n          </PopoverHeader>\n          <Field>\n            <FieldLabel htmlFor=\"task\" className=\"sr-only\">\n              Task Description\n            </FieldLabel>\n            <Textarea\n              id=\"task\"\n              placeholder=\"I need to...\"\n              className=\"resize-none\"\n            />\n            <FieldDescription>\n              Copilot will open a pull request for review.\n            </FieldDescription>\n          </Field>\n        </PopoverContent>\n      </Popover>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { ButtonGroup } from \"@/examples/base/ui-rtl/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport {\n  ArchiveIcon,\n  ArrowLeftIcon,\n  CalendarPlusIcon,\n  ClockIcon,\n  ListFilterIcon,\n  MailCheckIcon,\n  MoreHorizontalIcon,\n  TagIcon,\n  Trash2Icon,\n} from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      archive: \"Archive\",\n      report: \"Report\",\n      snooze: \"Snooze\",\n      markAsRead: \"Mark as Read\",\n      addToCalendar: \"Add to Calendar\",\n      addToList: \"Add to List\",\n      labelAs: \"Label As...\",\n      personal: \"Personal\",\n      work: \"Work\",\n      other: \"Other\",\n      trash: \"Trash\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      archive: \"أرشفة\",\n      report: \"تقرير\",\n      snooze: \"تأجيل\",\n      markAsRead: \"وضع علامة كمقروء\",\n      addToCalendar: \"إضافة إلى التقويم\",\n      addToList: \"إضافة إلى القائمة\",\n      labelAs: \"تصنيف كـ...\",\n      personal: \"شخصي\",\n      work: \"عمل\",\n      other: \"آخر\",\n      trash: \"سلة المهملات\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      archive: \"ארכיון\",\n      report: \"דוח\",\n      snooze: \"דחה\",\n      markAsRead: \"סמן כנקרא\",\n      addToCalendar: \"הוסף ליומן\",\n      addToList: \"הוסף לרשימה\",\n      labelAs: \"תייג כ...\",\n      personal: \"אישי\",\n      work: \"עבודה\",\n      other: \"אחר\",\n      trash: \"פח\",\n    },\n  },\n}\n\nexport function ButtonGroupRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [label, setLabel] = React.useState(\"personal\")\n\n  return (\n    <div dir={dir}>\n      <ButtonGroup>\n        <ButtonGroup className=\"hidden sm:flex\">\n          <Button variant=\"outline\" size=\"icon\" aria-label=\"Go Back\">\n            <ArrowLeftIcon className=\"rtl:rotate-180\" />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">{t.archive}</Button>\n          <Button variant=\"outline\">{t.report}</Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">{t.snooze}</Button>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={\n                <Button\n                  variant=\"outline\"\n                  size=\"icon\"\n                  aria-label=\"More Options\"\n                />\n              }\n            >\n              <MoreHorizontalIcon />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent\n              align={dir === \"rtl\" ? \"start\" : \"end\"}\n              data-lang={dir === \"rtl\" ? language : undefined}\n              dir={dir}\n              className=\"w-40\"\n            >\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <MailCheckIcon />\n                  {t.markAsRead}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <ArchiveIcon />\n                  {t.archive}\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <ClockIcon />\n                  {t.snooze}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <CalendarPlusIcon />\n                  {t.addToCalendar}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <ListFilterIcon />\n                  {t.addToList}\n                </DropdownMenuItem>\n                <DropdownMenuSub>\n                  <DropdownMenuSubTrigger>\n                    <TagIcon />\n                    {t.labelAs}\n                  </DropdownMenuSubTrigger>\n                  <DropdownMenuSubContent\n                    dir={dir}\n                    data-lang={dir === \"rtl\" ? language : undefined}\n                  >\n                    <DropdownMenuRadioGroup\n                      value={label}\n                      onValueChange={setLabel}\n                    >\n                      <DropdownMenuRadioItem value=\"personal\">\n                        {t.personal}\n                      </DropdownMenuRadioItem>\n                      <DropdownMenuRadioItem value=\"work\">\n                        {t.work}\n                      </DropdownMenuRadioItem>\n                      <DropdownMenuRadioItem value=\"other\">\n                        {t.other}\n                      </DropdownMenuRadioItem>\n                    </DropdownMenuRadioGroup>\n                  </DropdownMenuSubContent>\n                </DropdownMenuSub>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem variant=\"destructive\">\n                  <Trash2Icon />\n                  {t.trash}\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </ButtonGroup>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n} from \"@/examples/base/ui/select\"\nimport { ArrowRightIcon } from \"lucide-react\"\n\nconst CURRENCIES = [\n  { label: \"US Dollar\", value: \"$\" },\n  { label: \"Euro\", value: \"€\" },\n  { label: \"British Pound\", value: \"£\" },\n]\n\nexport default function ButtonGroupSelect() {\n  const [currency, setCurrency] = React.useState(\"$\")\n\n  return (\n    <ButtonGroup>\n      <ButtonGroup>\n        <Select\n          items={CURRENCIES}\n          value={currency}\n          onValueChange={(value) => setCurrency(value as string)}\n        >\n          <SelectTrigger className=\"font-mono\">{currency}</SelectTrigger>\n          <SelectContent alignItemWithTrigger={false} align=\"start\">\n            <SelectGroup>\n              {CURRENCIES.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.value}{\" \"}\n                  <span className=\"text-muted-foreground\">{item.label}</span>\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Input placeholder=\"10.00\" pattern=\"[0-9]*\" />\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button aria-label=\"Send\" size=\"icon\" variant=\"outline\">\n          <ArrowRightIcon />\n        </Button>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-separator.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n} from \"@/examples/base/ui/button-group\"\n\nexport default function ButtonGroupSeparatorDemo() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"secondary\" size=\"sm\">\n        Copy\n      </Button>\n      <ButtonGroupSeparator />\n      <Button variant=\"secondary\" size=\"sm\">\n        Paste\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-size.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport default function ButtonGroupSize() {\n  return (\n    <div className=\"flex flex-col items-start gap-8\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          Small\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Button\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Group\n        </Button>\n        <Button variant=\"outline\" size=\"icon-sm\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Default</Button>\n        <Button variant=\"outline\">Button</Button>\n        <Button variant=\"outline\">Group</Button>\n        <Button variant=\"outline\" size=\"icon\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"lg\">\n          Large\n        </Button>\n        <Button variant=\"outline\" size=\"lg\">\n          Button\n        </Button>\n        <Button variant=\"outline\" size=\"lg\">\n          Group\n        </Button>\n        <Button variant=\"outline\" size=\"icon-lg\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-group-split.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n} from \"@/examples/base/ui/button-group\"\nimport { IconPlus } from \"@tabler/icons-react\"\n\nexport default function ButtonGroupSplit() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"secondary\">Button</Button>\n      <ButtonGroupSeparator />\n      <Button size=\"icon\" variant=\"secondary\">\n        <IconPlus />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-icon.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { CircleFadingArrowUpIcon } from \"lucide-react\"\n\nexport default function ButtonIcon() {\n  return (\n    <Button variant=\"outline\" size=\"icon\">\n      <CircleFadingArrowUpIcon />\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-link.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\n\nexport default function ButtonLink() {\n  return <Button variant=\"link\">Link</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-outline.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\n\nexport default function ButtonOutline() {\n  return <Button variant=\"outline\">Outline</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-render.tsx",
    "content": "\"use client\"\n\nimport { buttonVariants } from \"@/examples/base/ui/button\"\n\nexport default function ButtonRender() {\n  return (\n    <a\n      href=\"#\"\n      className={buttonVariants({ variant: \"secondary\", size: \"sm\" })}\n    >\n      Login\n    </a>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-rounded.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ArrowUpIcon } from \"lucide-react\"\n\nexport default function ButtonRounded() {\n  return (\n    <div className=\"flex gap-2\">\n      <Button className=\"rounded-full\">Get Started</Button>\n      <Button variant=\"outline\" size=\"icon\" className=\"rounded-full\">\n        <ArrowUpIcon />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Spinner } from \"@/examples/base/ui-rtl/spinner\"\nimport { ArrowRightIcon, PlusIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      button: \"Button\",\n      submit: \"Submit\",\n      delete: \"Delete\",\n      loading: \"Loading\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      button: \"زر\",\n      submit: \"إرسال\",\n      delete: \"حذف\",\n      loading: \"جاري التحميل\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      button: \"כפתור\",\n      submit: \"שלח\",\n      delete: \"מחק\",\n      loading: \"טוען\",\n    },\n  },\n}\n\nexport function ButtonRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex flex-wrap items-center gap-2 md:flex-row\" dir={dir}>\n      <Button variant=\"outline\">{t.button}</Button>\n      <Button variant=\"destructive\">{t.delete}</Button>\n      <Button variant=\"outline\">\n        {t.submit}{\" \"}\n        <ArrowRightIcon className=\"rtl:rotate-180\" data-icon=\"inline-end\" />\n      </Button>\n      <Button variant=\"outline\" size=\"icon\" aria-label=\"Add\">\n        <PlusIcon />\n      </Button>\n      <Button variant=\"secondary\" disabled>\n        <Spinner data-icon=\"inline-start\" /> {t.loading}\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-secondary.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\n\nexport default function ButtonSecondary() {\n  return <Button variant=\"secondary\">Secondary</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-size.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nexport default function ButtonSize() {\n  return (\n    <div className=\"flex flex-col items-start gap-8 sm:flex-row\">\n      <div className=\"flex items-start gap-2\">\n        <Button size=\"xs\" variant=\"outline\">\n          Extra Small\n        </Button>\n        <Button size=\"icon-xs\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n      <div className=\"flex items-start gap-2\">\n        <Button size=\"sm\" variant=\"outline\">\n          Small\n        </Button>\n        <Button size=\"icon-sm\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n      <div className=\"flex items-start gap-2\">\n        <Button variant=\"outline\">Default</Button>\n        <Button size=\"icon\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n      <div className=\"flex items-start gap-2\">\n        <Button variant=\"outline\" size=\"lg\">\n          Large\n        </Button>\n        <Button size=\"icon-lg\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-spinner.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\n\nexport default function ButtonLoading() {\n  return (\n    <div className=\"flex gap-2\">\n      <Button variant=\"outline\" disabled>\n        <Spinner data-icon=\"inline-start\" />\n        Generating\n      </Button>\n      <Button variant=\"secondary\" disabled>\n        Downloading\n        <Spinner data-icon=\"inline-start\" />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/button-with-icon.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { IconGitBranch, IconGitFork } from \"@tabler/icons-react\"\n\nexport default function ButtonWithIcon() {\n  return (\n    <div className=\"flex gap-2\">\n      <Button variant=\"outline\">\n        <IconGitBranch data-icon=\"inline-start\" /> New Branch\n      </Button>\n      <Button variant=\"outline\">\n        Fork\n        <IconGitFork data-icon=\"inline-end\" />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-basic.tsx",
    "content": "\"use client\"\n\nimport { Calendar } from \"@/examples/base/ui/calendar\"\n\nexport default function CalendarBasic() {\n  return <Calendar mode=\"single\" className=\"rounded-lg border\" />\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-booked-dates.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\n\nexport function CalendarBookedDates() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 0, 6)\n  )\n  const bookedDates = Array.from(\n    { length: 15 },\n    (_, i) => new Date(new Date().getFullYear(), 0, 12 + i)\n  )\n\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar\n          mode=\"single\"\n          defaultMonth={date}\n          selected={date}\n          onSelect={setDate}\n          disabled={bookedDates}\n          modifiers={{\n            booked: bookedDates,\n          }}\n          modifiersClassNames={{\n            booked: \"[&>button]:line-through opacity-100\",\n          }}\n        />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-caption.tsx",
    "content": "\"use client\"\n\nimport { Calendar } from \"@/examples/base/ui/calendar\"\n\nexport function CalendarCaption() {\n  return (\n    <Calendar\n      mode=\"single\"\n      captionLayout=\"dropdown\"\n      className=\"rounded-lg border\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-custom-days.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar, CalendarDayButton } from \"@/examples/base/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport { addDays } from \"date-fns\"\nimport { type DateRange } from \"react-day-picker\"\n\nexport function CalendarCustomDays() {\n  const [range, setRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 11, 8),\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\n  })\n\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar\n          mode=\"range\"\n          defaultMonth={range?.from}\n          selected={range}\n          onSelect={setRange}\n          numberOfMonths={1}\n          captionLayout=\"dropdown\"\n          className=\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\"\n          formatters={{\n            formatMonthDropdown: (date) => {\n              return date.toLocaleString(\"default\", { month: \"long\" })\n            },\n          }}\n          components={{\n            DayButton: ({ children, modifiers, day, ...props }) => {\n              const isWeekend =\n                day.date.getDay() === 0 || day.date.getDay() === 6\n\n              return (\n                <CalendarDayButton day={day} modifiers={modifiers} {...props}>\n                  {children}\n                  {!modifiers.outside && (\n                    <span>{isWeekend ? \"$120\" : \"$100\"}</span>\n                  )}\n                </CalendarDayButton>\n              )\n            },\n          }}\n        />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\n\nexport default function CalendarDemo() {\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\n\n  return (\n    <Calendar\n      mode=\"single\"\n      selected={date}\n      onSelect={setDate}\n      className=\"rounded-lg border\"\n      captionLayout=\"dropdown\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-hijri.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Vazirmatn } from \"next/font/google\"\nimport { Button, buttonVariants } from \"@/examples/base/ui/button\"\nimport {\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"lucide-react\"\nimport { getDefaultClassNames, type DayButton } from \"react-day-picker\"\nimport { DayPicker } from \"react-day-picker/persian\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst vazirmatn = Vazirmatn({ subsets: [\"arabic\"] })\n\nexport default function CalendarHijri() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(2025, 5, 12)\n  )\n\n  return (\n    <div className={vazirmatn.className}>\n      <Calendar\n        mode=\"single\"\n        defaultMonth={date}\n        selected={date}\n        onSelect={setDate}\n        className=\"rounded-lg border\"\n      />\n    </div>\n  )\n}\n\n// ----------------------------------------------------------------------------\n// The code below is for this example only.\n// For your own calendar, you would edit the calendar.tsx component directly.\n// ----------------------------------------------------------------------------\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(\"default\", { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\"absolute inset-0 opacity-0\", defaultClassNames.dropdown),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"rounded-l-md bg-accent\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n        today: cn(\n          \"rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <ChevronRightIcon\n                className={cn(\"size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n          )\n        },\n        DayButton: CalendarDayButton,\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  ...props\n}: React.ComponentProps<typeof DayButton>) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString()}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-multiple.tsx",
    "content": "import { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\n\nexport function CalendarMultiple() {\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar mode=\"multiple\" />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-presets.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/examples/base/ui/card\"\nimport { addDays } from \"date-fns\"\n\nexport function CalendarWithPresets() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 12)\n  )\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\n  )\n\n  return (\n    <Card className=\"mx-auto w-fit max-w-[300px]\" size=\"sm\">\n      <CardContent>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          month={currentMonth}\n          onMonthChange={setCurrentMonth}\n          fixedWeeks\n          className=\"p-0 [--cell-size:--spacing(9.5)]\"\n        />\n      </CardContent>\n      <CardFooter className=\"flex flex-wrap gap-2 border-t\">\n        {[\n          { label: \"Today\", value: 0 },\n          { label: \"Tomorrow\", value: 1 },\n          { label: \"In 3 days\", value: 3 },\n          { label: \"In a week\", value: 7 },\n          { label: \"In 2 weeks\", value: 14 },\n        ].map((preset) => (\n          <Button\n            key={preset.value}\n            variant=\"outline\"\n            size=\"sm\"\n            className=\"flex-1\"\n            onClick={() => {\n              const newDate = addDays(new Date(), preset.value)\n              setDate(newDate)\n              setCurrentMonth(\n                new Date(newDate.getFullYear(), newDate.getMonth(), 1)\n              )\n            }}\n          >\n            {preset.label}\n          </Button>\n        ))}\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-range.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport { addDays } from \"date-fns\"\nimport { type DateRange } from \"react-day-picker\"\n\nexport function CalendarRange() {\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 12),\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\n  })\n\n  return (\n    <Calendar\n      mode=\"range\"\n      defaultMonth={dateRange?.from}\n      selected={dateRange}\n      onSelect={setDateRange}\n      numberOfMonths={2}\n      className=\"rounded-lg border\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/base/ui-rtl/calendar\"\nimport { arSA, he } from \"react-day-picker/locale\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nconst locales = {\n  ar: arSA,\n  he: he,\n} as const\n\nexport function CalendarRtl() {\n  const { dir, language } = useTranslation(translations, \"ar\")\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\n\n  return (\n    <Calendar\n      mode=\"single\"\n      selected={date}\n      onSelect={setDate}\n      className=\"rounded-lg border [--cell-size:--spacing(9)]\"\n      captionLayout=\"dropdown\"\n      dir={dir}\n      locale={\n        dir === \"rtl\" ? locales[language as keyof typeof locales] : undefined\n      }\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-time.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/examples/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Clock2Icon } from \"lucide-react\"\n\nexport function CalendarWithTime() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n\n  return (\n    <Card size=\"sm\" className=\"mx-auto w-fit\">\n      <CardContent>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          className=\"p-0\"\n        />\n      </CardContent>\n      <CardFooter className=\"border-t bg-card\">\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"time-from\">Start Time</FieldLabel>\n            <InputGroup>\n              <InputGroupInput\n                id=\"time-from\"\n                type=\"time\"\n                step=\"1\"\n                defaultValue=\"10:30:00\"\n                className=\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n              />\n              <InputGroupAddon>\n                <Clock2Icon className=\"text-muted-foreground\" />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"time-to\">End Time</FieldLabel>\n            <InputGroup>\n              <InputGroupInput\n                id=\"time-to\"\n                type=\"time\"\n                step=\"1\"\n                defaultValue=\"12:30:00\"\n                className=\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n              />\n              <InputGroupAddon>\n                <Clock2Icon className=\"text-muted-foreground\" />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n        </FieldGroup>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/calendar-week-numbers.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\n\nexport function CalendarWeekNumbers() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 0, 12)\n  )\n\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar\n          mode=\"single\"\n          defaultMonth={date}\n          selected={date}\n          onSelect={setDate}\n          showWeekNumber\n        />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/card-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui/card\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { Label } from \"@/examples/base/ui/label\"\n\nexport default function CardDemo() {\n  return (\n    <Card className=\"w-full max-w-sm\">\n      <CardHeader>\n        <CardTitle>Login to your account</CardTitle>\n        <CardDescription>\n          Enter your email below to login to your account\n        </CardDescription>\n        <CardAction>\n          <Button variant=\"link\">Sign Up</Button>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <div className=\"flex flex-col gap-6\">\n            <div className=\"grid gap-2\">\n              <Label htmlFor=\"email\">Email</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"m@example.com\"\n                required\n              />\n            </div>\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center\">\n                <Label htmlFor=\"password\">Password</Label>\n                <a\n                  href=\"#\"\n                  className=\"ml-auto inline-block text-sm underline-offset-4 hover:underline\"\n                >\n                  Forgot your password?\n                </a>\n              </div>\n              <Input id=\"password\" type=\"password\" required />\n            </div>\n          </div>\n        </form>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2\">\n        <Button type=\"submit\" className=\"w-full\">\n          Login\n        </Button>\n        <Button variant=\"outline\" className=\"w-full\">\n          Login with Google\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/card-image.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui/card\"\n\nexport function CardImage() {\n  return (\n    <Card className=\"relative mx-auto w-full max-w-sm pt-0\">\n      <div className=\"absolute inset-0 z-30 aspect-video bg-black/35\" />\n      <img\n        src=\"https://avatar.vercel.sh/shadcn1\"\n        alt=\"Event cover\"\n        className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale dark:brightness-40\"\n      />\n      <CardHeader>\n        <CardAction>\n          <Badge variant=\"secondary\">Featured</Badge>\n        </CardAction>\n        <CardTitle>Design systems meetup</CardTitle>\n        <CardDescription>\n          A practical talk on component APIs, accessibility, and shipping\n          faster.\n        </CardDescription>\n      </CardHeader>\n      <CardFooter>\n        <Button className=\"w-full\">View Event</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/card-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui-rtl/card\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport { Label } from \"@/examples/base/ui-rtl/label\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"Login to your account\",\n      description: \"Enter your email below to login to your account\",\n      signUp: \"Sign Up\",\n      email: \"Email\",\n      emailPlaceholder: \"m@example.com\",\n      password: \"Password\",\n      forgotPassword: \"Forgot your password?\",\n      login: \"Login\",\n      loginWithGoogle: \"Login with Google\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"تسجيل الدخول إلى حسابك\",\n      description: \"أدخل بريدك الإلكتروني أدناه لتسجيل الدخول إلى حسابك\",\n      signUp: \"إنشاء حساب\",\n      email: \"البريد الإلكتروني\",\n      emailPlaceholder: \"m@example.com\",\n      password: \"كلمة المرور\",\n      forgotPassword: \"نسيت كلمة المرور؟\",\n      login: \"تسجيل الدخول\",\n      loginWithGoogle: \"تسجيل الدخول باستخدام Google\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"התחבר לחשבון שלך\",\n      description: \"הזן את האימייל שלך למטה כדי להתחבר לחשבון שלך\",\n      signUp: \"הירשם\",\n      email: \"אימייל\",\n      emailPlaceholder: \"m@example.com\",\n      password: \"סיסמה\",\n      forgotPassword: \"שכחת את הסיסמה?\",\n      login: \"התחבר\",\n      loginWithGoogle: \"התחבר עם Google\",\n    },\n  },\n}\n\nexport function CardRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Card className=\"w-full max-w-sm\" dir={dir}>\n      <CardHeader>\n        <CardTitle>{t.title}</CardTitle>\n        <CardDescription>{t.description}</CardDescription>\n        <CardAction>\n          <Button variant=\"link\">{t.signUp}</Button>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <div className=\"flex flex-col gap-6\">\n            <div className=\"grid gap-2\">\n              <Label htmlFor=\"email-rtl\">{t.email}</Label>\n              <Input\n                id=\"email-rtl\"\n                type=\"email\"\n                placeholder={t.emailPlaceholder}\n                required\n              />\n            </div>\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center\">\n                <Label htmlFor=\"password-rtl\">{t.password}</Label>\n                <a\n                  href=\"#\"\n                  className=\"ms-auto inline-block text-sm underline-offset-4 hover:underline\"\n                >\n                  {t.forgotPassword}\n                </a>\n              </div>\n              <Input id=\"password-rtl\" type=\"password\" required />\n            </div>\n          </div>\n        </form>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2\">\n        <Button type=\"submit\" className=\"w-full\">\n          {t.login}\n        </Button>\n        <Button variant=\"outline\" className=\"w-full\">\n          {t.loginWithGoogle}\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/card-small.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui/card\"\nimport { ChevronRightIcon } from \"lucide-react\"\n\nexport function CardSmall() {\n  const featureName = \"Scheduled reports\"\n\n  return (\n    <Card size=\"sm\" className=\"mx-auto w-full max-w-xs\">\n      <CardHeader>\n        <CardTitle>{featureName}</CardTitle>\n        <CardDescription>\n          Weekly snapshots. No more manual exports.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ul className=\"grid gap-2 py-2 text-sm\">\n          <li className=\"flex gap-2\">\n            <ChevronRightIcon className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n            <span>Choose a schedule (daily, or weekly).</span>\n          </li>\n          <li className=\"flex gap-2\">\n            <ChevronRightIcon className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n            <span>Send to channels or specific teammates.</span>\n          </li>\n          <li className=\"flex gap-2\">\n            <ChevronRightIcon className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n            <span>Include charts, tables, and key metrics.</span>\n          </li>\n        </ul>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2\">\n        <Button size=\"sm\" className=\"w-full\">\n          Set up scheduled reports\n        </Button>\n        <Button variant=\"outline\" size=\"sm\" className=\"w-full\">\n          See what&apos;s new\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/carousel-api.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n  type CarouselApi,\n} from \"@/examples/base/ui/carousel\"\n\nexport default function CarouselDApiDemo() {\n  const [api, setApi] = React.useState<CarouselApi>()\n  const [current, setCurrent] = React.useState(0)\n  const [count, setCount] = React.useState(0)\n\n  React.useEffect(() => {\n    if (!api) {\n      return\n    }\n\n    setCount(api.scrollSnapList().length)\n    setCurrent(api.selectedScrollSnap() + 1)\n\n    api.on(\"select\", () => {\n      setCurrent(api.selectedScrollSnap() + 1)\n    })\n  }, [api])\n\n  return (\n    <div className=\"mx-auto max-w-[10rem] sm:max-w-xs\">\n      <Carousel setApi={setApi} className=\"w-full max-w-xs\">\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index}>\n              <Card className=\"m-px\">\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious />\n        <CarouselNext />\n      </Carousel>\n      <div className=\"py-2 text-center text-sm text-muted-foreground\">\n        Slide {current} of {count}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/carousel-demo.tsx",
    "content": "import * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/base/ui/carousel\"\n\nexport default function CarouselDemo() {\n  return (\n    <Carousel className=\"w-full max-w-[12rem] sm:max-w-xs\">\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index}>\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/carousel-multiple.tsx",
    "content": "import { Card, CardContent } from \"@/examples/base/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/base/ui/carousel\"\n\nexport function CarouselMultiple() {\n  return (\n    <Carousel\n      className=\"mx-auto max-w-xs sm:max-w-sm\"\n      opts={{\n        align: \"start\",\n      }}\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"sm:basis-1/2 lg:basis-1/3\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious className=\"hidden sm:inline-flex\" />\n      <CarouselNext className=\"hidden sm:inline-flex\" />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/carousel-orientation.tsx",
    "content": "import * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/base/ui/carousel\"\n\nexport default function CarouselOrientation() {\n  return (\n    <Carousel\n      opts={{\n        align: \"start\",\n      }}\n      orientation=\"vertical\"\n      className=\"w-full max-w-xs\"\n    >\n      <CarouselContent className=\"-mt-1 h-[270px]\">\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"basis-1/2 pt-1\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex items-center justify-center p-6\">\n                  <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/carousel-plugin.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/base/ui/carousel\"\nimport Autoplay from \"embla-carousel-autoplay\"\n\nexport default function CarouselPlugin() {\n  const plugin = React.useRef(\n    Autoplay({ delay: 2000, stopOnInteraction: true })\n  )\n\n  return (\n    <Carousel\n      plugins={[plugin.current]}\n      className=\"w-full max-w-[10rem] sm:max-w-xs\"\n      onMouseEnter={plugin.current.stop}\n      onMouseLeave={plugin.current.reset}\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index}>\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/carousel-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/base/ui-rtl/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/base/ui-rtl/carousel\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nfunction toArabicNumerals(num: number): string {\n  const arabicNumerals = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"]\n  return num\n    .toString()\n    .split(\"\")\n    .map((digit) => arabicNumerals[parseInt(digit, 10)])\n    .join(\"\")\n}\n\nexport function CarouselRtl() {\n  const { dir, language } = useTranslation(translations, \"ar\")\n\n  const formatNumber = (num: number): string => {\n    if (language === \"ar\") {\n      return toArabicNumerals(num)\n    }\n    return num.toString()\n  }\n\n  return (\n    <Carousel\n      dir={dir}\n      className=\"w-full max-w-[12rem] sm:max-w-xs\"\n      opts={{\n        direction: dir,\n      }}\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index}>\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">\n                    {formatNumber(index + 1)}\n                  </span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/carousel-size.tsx",
    "content": "import * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/base/ui/carousel\"\n\nexport default function CarouselSize() {\n  return (\n    <Carousel\n      opts={{\n        align: \"start\",\n      }}\n      className=\"w-full max-w-[12rem] sm:max-w-xs md:max-w-sm\"\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"basis-1/2 lg:basis-1/3\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/carousel-spacing.tsx",
    "content": "import * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/base/ui/carousel\"\n\nexport default function CarouselSpacing() {\n  return (\n    <Carousel className=\"w-full max-w-[12rem] sm:max-w-xs md:max-w-sm\">\n      <CarouselContent className=\"-ml-1\">\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"basis-1/2 pl-1 lg:basis-1/3\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-2xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/chart-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"An interactive bar chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n]\n\nconst chartConfig = {\n  views: {\n    label: \"Page Views\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-2)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartDemo() {\n  const [activeChart, setActiveChart] =\n    React.useState<keyof typeof chartConfig>(\"desktop\")\n\n  const total = React.useMemo(\n    () => ({\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\n    }),\n    []\n  )\n\n  return (\n    <Card className=\"py-0 pb-4\">\n      <CardHeader className=\"flex flex-col items-stretch border-b p-0! sm:flex-row\">\n        <div className=\"flex flex-1 flex-col justify-center gap-1 px-6 pt-4 pb-3 sm:py-0!\">\n          <CardTitle>Bar Chart - Interactive</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 3 months\n          </CardDescription>\n        </div>\n        <div className=\"flex\">\n          {[\"desktop\", \"mobile\"].map((key) => {\n            const chart = key as keyof typeof chartConfig\n            return (\n              <button\n                key={chart}\n                data-active={activeChart === chart}\n                className=\"relative z-30 flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-t-0 sm:border-l sm:px-8 sm:py-6\"\n                onClick={() => setActiveChart(chart)}\n              >\n                <span className=\"text-xs text-muted-foreground\">\n                  {chartConfig[chart].label}\n                </span>\n                <span className=\"text-lg leading-none font-bold sm:text-3xl\">\n                  {total[key as keyof typeof total].toLocaleString()}\n                </span>\n              </button>\n            )\n          })}\n        </div>\n      </CardHeader>\n      <CardContent className=\"px-2 sm:p-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              content={\n                <ChartTooltipContent\n                  className=\"w-[150px]\"\n                  nameKey=\"views\"\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                      year: \"numeric\",\n                    })\n                  }}\n                />\n              }\n            />\n            <Bar dataKey={activeChart} fill={`var(--color-${activeChart})`} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/chart-example-axis.tsx",
    "content": "\"use client\"\n\nimport { ChartContainer, type ChartConfig } from \"@/examples/base/ui/chart\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemoAxis() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/chart-example-grid.tsx",
    "content": "\"use client\"\n\nimport { ChartContainer, type ChartConfig } from \"@/examples/base/ui/chart\"\nimport { Bar, BarChart, CartesianGrid } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemoGrid() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/chart-example-legend.tsx",
    "content": "\"use client\"\n\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/examples/base/ui/chart\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemoLegend() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <ChartTooltip content={<ChartTooltipContent />} />\n        <ChartLegend content={<ChartLegendContent />} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/chart-example-tooltip.tsx",
    "content": "\"use client\"\n\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/examples/base/ui/chart\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemoTooltip() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <ChartTooltip content={<ChartTooltipContent />} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/chart-example.tsx",
    "content": "\"use client\"\n\nimport { ChartContainer, type ChartConfig } from \"@/examples/base/ui/chart\"\nimport { Bar, BarChart } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartExample() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/chart-rtl.tsx",
    "content": "\"use client\"\n\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/examples/base/ui-rtl/chart\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      january: \"January\",\n      february: \"February\",\n      march: \"March\",\n      april: \"April\",\n      may: \"May\",\n      june: \"June\",\n      desktop: \"Desktop\",\n      mobile: \"Mobile\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      january: \"يناير\",\n      february: \"فبراير\",\n      march: \"مارس\",\n      april: \"أبريل\",\n      may: \"مايو\",\n      june: \"يونيو\",\n      desktop: \"سطح المكتب\",\n      mobile: \"الجوال\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      january: \"ינואר\",\n      february: \"פברואר\",\n      march: \"מרץ\",\n      april: \"אפריל\",\n      may: \"מאי\",\n      june: \"יוני\",\n      desktop: \"מחשב\",\n      mobile: \"נייד\",\n    },\n  },\n}\n\nconst chartData = [\n  { month: \"january\", desktop: 186, mobile: 80 },\n  { month: \"february\", desktop: 305, mobile: 200 },\n  { month: \"march\", desktop: 237, mobile: 120 },\n  { month: \"april\", desktop: 73, mobile: 190 },\n  { month: \"may\", desktop: 209, mobile: 130 },\n  { month: \"june\", desktop: 214, mobile: 140 },\n]\n\nexport function ChartRtl() {\n  const { t, dir } = useTranslation(translations, \"ar\")\n\n  const chartConfig = {\n    desktop: {\n      label: t.desktop,\n      color: \"var(--chart-2)\",\n    },\n    mobile: {\n      label: t.mobile,\n      color: \"var(--chart-1)\",\n    },\n  } satisfies ChartConfig\n\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid\n          vertical={false}\n          orientation={dir === \"rtl\" ? \"right\" : \"left\"}\n        />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) =>\n            (t[value as keyof typeof t] as string).slice(0, 3)\n          }\n          reversed={dir === \"rtl\"}\n        />\n        <ChartTooltip\n          content={\n            <ChartTooltipContent\n              labelFormatter={(value) => t[value as keyof typeof t] as string}\n            />\n          }\n          labelClassName=\"w-32\"\n        />\n        <ChartLegend content={<ChartLegendContent />} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/chart-tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport function ChartTooltipDemo() {\n  return (\n    <div className=\"grid aspect-video w-full max-w-md justify-center text-foreground md:grid-cols-2 [&>div]:relative [&>div]:flex [&>div]:h-[137px] [&>div]:w-[224px] [&>div]:items-center [&>div]:justify-center [&>div]:p-4\">\n      <div>\n        <div className=\"absolute top-[45px] left-[-35px] z-10 text-sm font-medium\">\n          Label\n        </div>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          viewBox=\"0 0 193 40\"\n          width=\"50\"\n          height=\"12\"\n          fill=\"none\"\n          className=\"absolute top-[50px] left-[5px] z-10\"\n        >\n          <g clipPath=\"url(#a)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M173.928 21.13C115.811 44.938 58.751 45.773 0 26.141c4.227-4.386 7.82-2.715 10.567-1.88 21.133 5.64 42.9 6.266 64.457 7.101 31.066 1.253 60.441-5.848 89.183-17.335 1.268-.418 2.325-1.253 4.861-2.924-14.582-2.924-29.165 2.089-41.845-3.76.212-.835.212-1.879.423-2.714 9.51-.627 19.231-1.253 28.742-2.089 9.51-.835 18.808-1.88 28.318-2.506 6.974-.418 9.933 2.924 7.397 9.19-3.17 8.145-7.608 15.664-11.623 23.391-.423.836-1.057 1.88-1.902 2.298-2.325.835-4.65 1.044-7.186 1.67-.422-2.088-1.479-4.386-1.268-6.265.423-2.506 1.902-4.595 3.804-9.19Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"a\">\n              <path fill=\"currentColor\" d=\"M0 0h193v40H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n        <TooltipDemo\n          label=\"Page Views\"\n          payload={[\n            { name: \"Desktop\", value: 186, fill: \"var(--chart-1)\" },\n            { name: \"Mobile\", value: 80, fill: \"var(--chart-2)\" },\n          ]}\n          className=\"w-[8rem]\"\n        />\n      </div>\n      <div className=\"items-end\">\n        <div className=\"absolute top-[0px] left-[122px] z-10 text-sm font-medium\">\n          Name\n        </div>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"35\"\n          height=\"42\"\n          fill=\"none\"\n          viewBox=\"0 0 122 148\"\n          className=\"absolute top-[10px] left-[85px] z-10 -scale-x-100\"\n        >\n          <g clipPath=\"url(#ab)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M0 2.65c6.15-4.024 12.299-2.753 17.812-.847a115.56 115.56 0 0 1 21.84 10.59C70.4 32.727 88.849 61.744 96.483 97.54c1.908 9.108 2.544 18.639 3.817 29.017 8.481-4.871 12.934-14.402 21.416-19.909 1.061 4.236-1.06 6.989-2.756 9.319-6.998 9.531-14.207 19.062-21.63 28.382-3.604 4.448-6.36 4.871-10.177 1.059-8.058-7.837-12.935-17.368-14.42-28.382 0-.424.636-1.059 1.485-2.118 9.118 2.33 6.997 13.979 14.843 18.215 3.393-14.614.848-28.593-2.969-42.149-4.029-14.19-9.33-27.746-17.812-39.82-8.27-11.86-18.66-21.392-30.11-30.287C26.93 11.758 14.207 6.039 0 2.65Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"ab\">\n              <path fill=\"currentColor\" d=\"M0 0h122v148H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n        <TooltipDemo\n          label=\"Browser\"\n          hideLabel\n          payload={[\n            { name: \"Chrome\", value: 1286, fill: \"var(--chart-3)\" },\n            { name: \"Firefox\", value: 1000, fill: \"var(--chart-4)\" },\n          ]}\n          indicator=\"dashed\"\n          className=\"w-[8rem]\"\n        />\n      </div>\n      <div className=\"hidden! md:flex!\">\n        <TooltipDemo\n          label=\"Page Views\"\n          payload={[{ name: \"Desktop\", value: 12486, fill: \"var(--chart-3)\" }]}\n          className=\"w-[9rem]\"\n          indicator=\"line\"\n        />\n      </div>\n      <div className=\"items-start! justify-start!\">\n        <div className=\"absolute top-[60px] left-[50px] z-10 text-sm font-medium\">\n          Indicator\n        </div>\n        <TooltipDemo\n          label=\"Browser\"\n          hideLabel\n          payload={[{ name: \"Chrome\", value: 1286, fill: \"var(--chart-1)\" }]}\n          indicator=\"dot\"\n          className=\"w-[8rem]\"\n        />\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"15\"\n          height=\"34\"\n          fill=\"none\"\n          viewBox=\"0 0 75 175\"\n          className=\"absolute top-[38px] left-[30px] z-10 rotate-[-40deg]\"\n        >\n          <g clipPath=\"url(#abc)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M20.187 175c-4.439-2.109-7.186-2.531-8.032-4.008-3.17-5.484-6.763-10.968-8.454-17.084-5.073-16.242-4.439-32.694-1.057-49.146 5.707-28.053 18.388-52.942 34.24-76.565 1.692-2.531 3.171-5.063 4.862-7.805 0-.21-.211-.632-.634-1.265-4.65 1.265-9.511 2.53-14.161 3.585-2.537.422-5.496.422-8.032-.421-1.48-.422-3.593-2.742-3.593-4.219 0-1.898 1.48-4.218 2.747-5.906 1.057-1.054 2.96-1.265 4.65-1.687C35.406 7.315 48.088 3.729 60.98.776c10.99-2.53 14.584 1.055 13.95 11.812-.634 11.18-.846 22.358-1.268 33.326-.212 3.375-.846 6.96-1.268 10.757-8.878-4.007-8.878-4.007-12.048-38.177C47.03 33.259 38.153 49.289 29.91 65.741 21.667 82.193 16.17 99.49 13.212 117.84c-2.959 18.984.634 36.912 6.975 57.161Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"abc\">\n              <path fill=\"currentColor\" d=\"M0 0h75v175H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n      </div>\n    </div>\n  )\n}\n\nfunction TooltipDemo({\n  indicator = \"dot\",\n  label,\n  payload,\n  hideLabel,\n  hideIndicator,\n  className,\n}: {\n  label: string\n  hideLabel?: boolean\n  hideIndicator?: boolean\n  indicator?: \"line\" | \"dot\" | \"dashed\"\n  payload: {\n    name: string\n    value: number\n    fill: string\n  }[]\n  nameKey?: string\n  labelKey?: string\n} & React.ComponentProps<\"div\">) {\n  const tooltipLabel = hideLabel ? null : (\n    <div className=\"font-medium\">{label}</div>\n  )\n\n  if (!payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\n        \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl transition-all ease-in-out hover:-translate-y-0.5\",\n        className\n      )}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload.map((item, index) => {\n          const indicatorColor = item.fill\n\n          return (\n            <div\n              key={index}\n              className={cn(\n                \"flex w-full items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                indicator === \"dot\" && \"items-center\"\n              )}\n            >\n              <>\n                {!hideIndicator && (\n                  <div\n                    className={cn(\n                      \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n                      {\n                        \"h-2.5 w-2.5\": indicator === \"dot\",\n                        \"w-1\": indicator === \"line\",\n                        \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                          indicator === \"dashed\",\n                        \"my-0.5\": nestLabel && indicator === \"dashed\",\n                      }\n                    )}\n                    style={\n                      {\n                        \"--color-bg\": indicatorColor,\n                        \"--color-border\": indicatorColor,\n                      } as React.CSSProperties\n                    }\n                  />\n                )}\n                <div\n                  className={cn(\n                    \"flex flex-1 justify-between leading-none\",\n                    nestLabel ? \"items-end\" : \"items-center\"\n                  )}\n                >\n                  <div className=\"grid gap-1.5\">\n                    {nestLabel ? tooltipLabel : null}\n                    <span className=\"text-muted-foreground\">{item.name}</span>\n                  </div>\n                  <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                    {item.value.toLocaleString()}\n                  </span>\n                </div>\n              </>\n            </div>\n          )\n        })}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/checkbox-basic.tsx",
    "content": "import { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\n\nexport function CheckboxBasic() {\n  return (\n    <FieldGroup className=\"mx-auto w-56\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms-checkbox-basic\" name=\"terms-checkbox-basic\" />\n        <FieldLabel htmlFor=\"terms-checkbox-basic\">\n          Accept terms and conditions\n        </FieldLabel>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/checkbox-demo.tsx",
    "content": "\"use client\"\n\nimport { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldTitle,\n} from \"@/examples/base/ui/field\"\nimport { Label } from \"@/examples/base/ui/label\"\n\nexport default function CheckboxDemo() {\n  return (\n    <FieldGroup className=\"max-w-sm\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms-checkbox\" name=\"terms-checkbox\" />\n        <Label htmlFor=\"terms-checkbox\">Accept terms and conditions</Label>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <Checkbox\n          id=\"terms-checkbox-2\"\n          name=\"terms-checkbox-2\"\n          defaultChecked\n        />\n        <FieldContent>\n          <FieldLabel htmlFor=\"terms-checkbox-2\">\n            Accept terms and conditions\n          </FieldLabel>\n          <FieldDescription>\n            By clicking this checkbox, you agree to the terms.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\" data-disabled>\n        <Checkbox id=\"toggle-checkbox\" name=\"toggle-checkbox\" disabled />\n        <FieldLabel htmlFor=\"toggle-checkbox\">Enable notifications</FieldLabel>\n      </Field>\n      <FieldLabel>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"toggle-checkbox-2\" name=\"toggle-checkbox-2\" />\n          <FieldContent>\n            <FieldTitle>Enable notifications</FieldTitle>\n            <FieldDescription>\n              You can enable or disable notifications at any time.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n      </FieldLabel>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/checkbox-description.tsx",
    "content": "import { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\n\nexport function CheckboxDescription() {\n  return (\n    <FieldGroup className=\"mx-auto w-72\">\n      <Field orientation=\"horizontal\">\n        <Checkbox\n          id=\"terms-checkbox-desc\"\n          name=\"terms-checkbox-desc\"\n          defaultChecked\n        />\n        <FieldContent>\n          <FieldLabel htmlFor=\"terms-checkbox-desc\">\n            Accept terms and conditions\n          </FieldLabel>\n          <FieldDescription>\n            By clicking this checkbox, you agree to the terms and conditions.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/checkbox-disabled.tsx",
    "content": "import { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\n\nexport function CheckboxDisabled() {\n  return (\n    <FieldGroup className=\"mx-auto w-56\">\n      <Field orientation=\"horizontal\" data-disabled>\n        <Checkbox\n          id=\"toggle-checkbox-disabled\"\n          name=\"toggle-checkbox-disabled\"\n          disabled\n        />\n        <FieldLabel htmlFor=\"toggle-checkbox-disabled\">\n          Enable notifications\n        </FieldLabel>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/checkbox-group.tsx",
    "content": "import { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\n\nexport function CheckboxGroup() {\n  return (\n    <FieldSet>\n      <FieldLegend variant=\"label\">\n        Show these items on the desktop:\n      </FieldLegend>\n      <FieldDescription>\n        Select the items you want to show on the desktop.\n      </FieldDescription>\n      <FieldGroup className=\"gap-3\">\n        <Field orientation=\"horizontal\">\n          <Checkbox\n            id=\"finder-pref-9k2-hard-disks-ljj-checkbox\"\n            name=\"finder-pref-9k2-hard-disks-ljj-checkbox\"\n            defaultChecked\n          />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-hard-disks-ljj-checkbox\"\n            className=\"font-normal\"\n          >\n            Hard disks\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox\n            id=\"finder-pref-9k2-external-disks-1yg-checkbox\"\n            name=\"finder-pref-9k2-external-disks-1yg-checkbox\"\n            defaultChecked\n          />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-external-disks-1yg-checkbox\"\n            className=\"font-normal\"\n          >\n            External disks\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox\n            id=\"finder-pref-9k2-cds-dvds-fzt-checkbox\"\n            name=\"finder-pref-9k2-cds-dvds-fzt-checkbox\"\n          />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-cds-dvds-fzt-checkbox\"\n            className=\"font-normal\"\n          >\n            CDs, DVDs, and iPods\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox\n            id=\"finder-pref-9k2-connected-servers-6l2-checkbox\"\n            name=\"finder-pref-9k2-connected-servers-6l2-checkbox\"\n          />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-connected-servers-6l2-checkbox\"\n            className=\"font-normal\"\n          >\n            Connected servers\n          </FieldLabel>\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/checkbox-invalid.tsx",
    "content": "import { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\n\nexport function CheckboxInvalid() {\n  return (\n    <FieldGroup className=\"mx-auto w-56\">\n      <Field orientation=\"horizontal\" data-invalid>\n        <Checkbox\n          id=\"terms-checkbox-invalid\"\n          name=\"terms-checkbox-invalid\"\n          aria-invalid\n        />\n        <FieldLabel htmlFor=\"terms-checkbox-invalid\">\n          Accept terms and conditions\n        </FieldLabel>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/checkbox-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Checkbox } from \"@/examples/base/ui-rtl/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldTitle,\n} from \"@/examples/base/ui-rtl/field\"\nimport { Label } from \"@/examples/base/ui-rtl/label\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      acceptTerms: \"Accept terms and conditions\",\n      acceptTermsDescription:\n        \"By clicking this checkbox, you agree to the terms.\",\n      enableNotifications: \"Enable notifications\",\n      enableNotificationsDescription:\n        \"You can enable or disable notifications at any time.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      acceptTerms: \"قبول الشروط والأحكام\",\n      acceptTermsDescription: \"بالنقر على هذا المربع، فإنك توافق على الشروط.\",\n      enableNotifications: \"تفعيل الإشعارات\",\n      enableNotificationsDescription:\n        \"يمكنك تفعيل أو إلغاء تفعيل الإشعارات في أي وقت.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      acceptTerms: \"קבל תנאים והגבלות\",\n      acceptTermsDescription:\n        \"על ידי לחיצה על תיבת הסימון הזו, אתה מסכים לתנאים.\",\n      enableNotifications: \"הפעל התראות\",\n      enableNotificationsDescription:\n        \"אתה יכול להפעיל או להשבית התראות בכל עת.\",\n    },\n  },\n}\n\nexport function CheckboxRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <FieldGroup className=\"max-w-sm\" dir={dir}>\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms-checkbox-rtl\" name=\"terms-checkbox\" />\n        <Label htmlFor=\"terms-checkbox-rtl\">{t.acceptTerms}</Label>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <Checkbox\n          id=\"terms-checkbox-2-rtl\"\n          name=\"terms-checkbox-2\"\n          defaultChecked\n        />\n        <FieldContent>\n          <FieldLabel htmlFor=\"terms-checkbox-2-rtl\">\n            {t.acceptTerms}\n          </FieldLabel>\n          <FieldDescription>{t.acceptTermsDescription}</FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\" data-disabled>\n        <Checkbox id=\"toggle-checkbox-rtl\" name=\"toggle-checkbox\" disabled />\n        <FieldLabel htmlFor=\"toggle-checkbox-rtl\">\n          {t.enableNotifications}\n        </FieldLabel>\n      </Field>\n      <FieldLabel>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"toggle-checkbox-2\" name=\"toggle-checkbox-2\" />\n          <FieldContent>\n            <FieldTitle>{t.enableNotifications}</FieldTitle>\n            <FieldDescription>\n              {t.enableNotificationsDescription}\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n      </FieldLabel>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/checkbox-table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/base/ui/table\"\n\nconst tableData = [\n  {\n    id: \"1\",\n    name: \"Sarah Chen\",\n    email: \"sarah.chen@example.com\",\n    role: \"Admin\",\n  },\n  {\n    id: \"2\",\n    name: \"Marcus Rodriguez\",\n    email: \"marcus.rodriguez@example.com\",\n    role: \"User\",\n  },\n  {\n    id: \"3\",\n    name: \"Priya Patel\",\n    email: \"priya.patel@example.com\",\n    role: \"User\",\n  },\n  {\n    id: \"4\",\n    name: \"David Kim\",\n    email: \"david.kim@example.com\",\n    role: \"Editor\",\n  },\n]\n\nexport function CheckboxInTable() {\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\n    new Set([\"1\"])\n  )\n\n  const selectAll = selectedRows.size === tableData.length\n\n  const handleSelectAll = (checked: boolean) => {\n    if (checked) {\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\n    } else {\n      setSelectedRows(new Set())\n    }\n  }\n\n  const handleSelectRow = (id: string, checked: boolean) => {\n    const newSelected = new Set(selectedRows)\n    if (checked) {\n      newSelected.add(id)\n    } else {\n      newSelected.delete(id)\n    }\n    setSelectedRows(newSelected)\n  }\n\n  return (\n    <Table>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-8\">\n            <Checkbox\n              id=\"select-all-checkbox\"\n              name=\"select-all-checkbox\"\n              checked={selectAll}\n              onCheckedChange={handleSelectAll}\n            />\n          </TableHead>\n          <TableHead>Name</TableHead>\n          <TableHead>Email</TableHead>\n          <TableHead>Role</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {tableData.map((row) => (\n          <TableRow\n            key={row.id}\n            data-state={selectedRows.has(row.id) ? \"selected\" : undefined}\n          >\n            <TableCell>\n              <Checkbox\n                id={`row-${row.id}-checkbox`}\n                name={`row-${row.id}-checkbox`}\n                checked={selectedRows.has(row.id)}\n                onCheckedChange={(checked) =>\n                  handleSelectRow(row.id, checked === true)\n                }\n              />\n            </TableCell>\n            <TableCell className=\"font-medium\">{row.name}</TableCell>\n            <TableCell>{row.email}</TableCell>\n            <TableCell>{row.role}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/collapsible-basic.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Card, CardContent } from \"@/examples/base/ui/card\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui/collapsible\"\n\nimport { ChevronDownIcon } from \"@/registry/icons/__lucide__\"\n\nexport function CollapsibleBasic() {\n  return (\n    <Card className=\"mx-auto w-full max-w-sm\">\n      <CardContent>\n        <Collapsible className=\"rounded-md data-open:bg-muted\">\n          <CollapsibleTrigger\n            render={<Button variant=\"ghost\" className=\"w-full\" />}\n          >\n            Product details\n            <ChevronDownIcon className=\"ml-auto group-data-panel-open/button:rotate-180\" />\n          </CollapsibleTrigger>\n          <CollapsibleContent className=\"flex flex-col items-start gap-2 p-2.5 pt-0 text-sm\">\n            <div>\n              This panel can be expanded or collapsed to reveal additional\n              content.\n            </div>\n            <Button size=\"xs\">Learn More</Button>\n          </CollapsibleContent>\n        </Collapsible>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/collapsible-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui/collapsible\"\nimport { ChevronsUpDown } from \"lucide-react\"\n\nexport default function CollapsibleDemo() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Collapsible\n      open={isOpen}\n      onOpenChange={setIsOpen}\n      className=\"flex w-[350px] flex-col gap-2\"\n    >\n      <div className=\"flex items-center justify-between gap-4 px-4\">\n        <h4 className=\"text-sm font-semibold\">Order #4189</h4>\n        <CollapsibleTrigger\n          render={<Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />}\n        >\n          <ChevronsUpDown />\n          <span className=\"sr-only\">Toggle details</span>\n        </CollapsibleTrigger>\n      </div>\n      <div className=\"flex items-center justify-between rounded-md border px-4 py-2 text-sm\">\n        <span className=\"text-muted-foreground\">Status</span>\n        <span className=\"font-medium\">Shipped</span>\n      </div>\n      <CollapsibleContent className=\"flex flex-col gap-2\">\n        <div className=\"rounded-md border px-4 py-2 text-sm\">\n          <p className=\"font-medium\">Shipping address</p>\n          <p className=\"text-muted-foreground\">100 Market St, San Francisco</p>\n        </div>\n        <div className=\"rounded-md border px-4 py-2 text-sm\">\n          <p className=\"font-medium\">Items</p>\n          <p className=\"text-muted-foreground\">2x Studio Headphones</p>\n        </div>\n      </CollapsibleContent>\n    </Collapsible>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/collapsible-file-tree.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/examples/base/ui/card\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui/collapsible\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/examples/base/ui/tabs\"\nimport { ChevronRightIcon, FileIcon, FolderIcon } from \"lucide-react\"\n\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\n\nexport function CollapsibleFileTree() {\n  const fileTree: FileTreeItem[] = [\n    {\n      name: \"components\",\n      items: [\n        {\n          name: \"ui\",\n          items: [\n            { name: \"button.tsx\" },\n            { name: \"card.tsx\" },\n            { name: \"dialog.tsx\" },\n            { name: \"input.tsx\" },\n            { name: \"select.tsx\" },\n            { name: \"table.tsx\" },\n          ],\n        },\n        { name: \"login-form.tsx\" },\n        { name: \"register-form.tsx\" },\n      ],\n    },\n    {\n      name: \"lib\",\n      items: [{ name: \"utils.ts\" }, { name: \"cn.ts\" }, { name: \"api.ts\" }],\n    },\n    {\n      name: \"hooks\",\n      items: [\n        { name: \"use-media-query.ts\" },\n        { name: \"use-debounce.ts\" },\n        { name: \"use-local-storage.ts\" },\n      ],\n    },\n    {\n      name: \"types\",\n      items: [{ name: \"index.d.ts\" }, { name: \"api.d.ts\" }],\n    },\n    {\n      name: \"public\",\n      items: [\n        { name: \"favicon.ico\" },\n        { name: \"logo.svg\" },\n        { name: \"images\" },\n      ],\n    },\n    { name: \"app.tsx\" },\n    { name: \"layout.tsx\" },\n    { name: \"globals.css\" },\n    { name: \"package.json\" },\n    { name: \"tsconfig.json\" },\n    { name: \"README.md\" },\n    { name: \".gitignore\" },\n  ]\n\n  const renderItem = (fileItem: FileTreeItem) => {\n    if (\"items\" in fileItem) {\n      return (\n        <Collapsible key={fileItem.name}>\n          <CollapsibleTrigger\n            render={\n              <Button\n                variant=\"ghost\"\n                size=\"sm\"\n                className=\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\"\n              />\n            }\n          >\n            <ChevronRightIcon className=\"transition-transform group-data-[state=open]:rotate-90\" />\n            <FolderIcon />\n            {fileItem.name}\n          </CollapsibleTrigger>\n          <CollapsibleContent className=\"mt-1 ml-5 style-lyra:ml-4\">\n            <div className=\"flex flex-col gap-1\">\n              {fileItem.items.map((child) => renderItem(child))}\n            </div>\n          </CollapsibleContent>\n        </Collapsible>\n      )\n    }\n    return (\n      <Button\n        key={fileItem.name}\n        variant=\"link\"\n        size=\"sm\"\n        className=\"w-full justify-start gap-2 text-foreground\"\n      >\n        <FileIcon />\n        <span>{fileItem.name}</span>\n      </Button>\n    )\n  }\n\n  return (\n    <Card className=\"mx-auto w-full max-w-[16rem] gap-2\" size=\"sm\">\n      <CardHeader>\n        <Tabs defaultValue=\"explorer\">\n          <TabsList className=\"w-full\">\n            <TabsTrigger value=\"explorer\">Explorer</TabsTrigger>\n            <TabsTrigger value=\"settings\">Outline</TabsTrigger>\n          </TabsList>\n        </Tabs>\n      </CardHeader>\n      <CardContent>\n        <div className=\"flex flex-col gap-1\">\n          {fileTree.map((item) => renderItem(item))}\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/collapsible-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui-rtl/collapsible\"\nimport { ChevronsUpDown } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      orderNumber: \"Order #4189\",\n      status: \"Status\",\n      shipped: \"Shipped\",\n      shippingAddress: \"Shipping address\",\n      address: \"100 Market St, San Francisco\",\n      items: \"Items\",\n      itemsDescription: \"2x Studio Headphones\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      orderNumber: \"الطلب #4189\",\n      status: \"الحالة\",\n      shipped: \"تم الشحن\",\n      shippingAddress: \"عنوان الشحن\",\n      address: \"100 Market St, San Francisco\",\n      items: \"العناصر\",\n      itemsDescription: \"2x سماعات الاستوديو\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      orderNumber: \"הזמנה #4189\",\n      status: \"סטטוס\",\n      shipped: \"נשלח\",\n      shippingAddress: \"כתובת משלוח\",\n      address: \"100 Market St, San Francisco\",\n      items: \"פריטים\",\n      itemsDescription: \"2x אוזניות סטודיו\",\n    },\n  },\n}\n\nexport function CollapsibleRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Collapsible\n      open={isOpen}\n      onOpenChange={setIsOpen}\n      className=\"flex w-[350px] flex-col gap-2\"\n      dir={dir}\n    >\n      <div className=\"flex items-center justify-between gap-4 px-4\">\n        <h4 className=\"text-sm font-semibold\">{t.orderNumber}</h4>\n        <CollapsibleTrigger\n          render={<Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />}\n        >\n          <ChevronsUpDown />\n          <span className=\"sr-only\">Toggle details</span>\n        </CollapsibleTrigger>\n      </div>\n      <div className=\"flex items-center justify-between rounded-md border px-4 py-2 text-sm\">\n        <span className=\"text-muted-foreground\">{t.status}</span>\n        <span className=\"font-medium\">{t.shipped}</span>\n      </div>\n      <CollapsibleContent className=\"flex flex-col gap-2\">\n        <div className=\"rounded-md border px-4 py-2 text-sm\">\n          <p className=\"font-medium\">{t.shippingAddress}</p>\n          <p className=\"text-muted-foreground\">{t.address}</p>\n        </div>\n        <div className=\"rounded-md border px-4 py-2 text-sm\">\n          <p className=\"font-medium\">{t.items}</p>\n          <p className=\"text-muted-foreground\">{t.itemsDescription}</p>\n        </div>\n      </CollapsibleContent>\n    </Collapsible>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/collapsible-settings.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui/card\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui/collapsible\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { MaximizeIcon, MinimizeIcon } from \"lucide-react\"\n\nexport function CollapsibleSettings() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Card className=\"mx-auto w-full max-w-xs\" size=\"sm\">\n      <CardHeader>\n        <CardTitle>Radius</CardTitle>\n        <CardDescription>Set the corner radius of the element.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Collapsible\n          open={isOpen}\n          onOpenChange={setIsOpen}\n          className=\"flex items-start gap-2\"\n        >\n          <FieldGroup className=\"grid w-full grid-cols-2 gap-2\">\n            <Field>\n              <FieldLabel htmlFor=\"radius-x\" className=\"sr-only\">\n                Radius X\n              </FieldLabel>\n              <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"radius-y\" className=\"sr-only\">\n                Radius Y\n              </FieldLabel>\n              <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n            </Field>\n            <CollapsibleContent className=\"col-span-full grid grid-cols-subgrid gap-2\">\n              <Field>\n                <FieldLabel htmlFor=\"radius-x\" className=\"sr-only\">\n                  Radius X\n                </FieldLabel>\n                <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"radius-y\" className=\"sr-only\">\n                  Radius Y\n                </FieldLabel>\n                <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n              </Field>\n            </CollapsibleContent>\n          </FieldGroup>\n          <CollapsibleTrigger render={<Button variant=\"outline\" size=\"icon\" />}>\n            {isOpen ? <MinimizeIcon /> : <MaximizeIcon />}\n          </CollapsibleTrigger>\n        </Collapsible>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-auto-highlight.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/base/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxAutoHighlight() {\n  return (\n    <Combobox items={frameworks} autoHighlight>\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-basic.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/base/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport default function ComboboxBasic() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-clear.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/base/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxWithClear() {\n  return (\n    <Combobox items={frameworks} defaultValue={frameworks[0]}>\n      <ComboboxInput placeholder=\"Select a framework\" showClear />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-custom.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/base/ui/combobox\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\n\nconst countries = [\n  { code: \"\", value: \"\", continent: \"\", label: \"Select country\" },\n  {\n    code: \"ar\",\n    value: \"argentina\",\n    label: \"Argentina\",\n    continent: \"South America\",\n  },\n  { code: \"au\", value: \"australia\", label: \"Australia\", continent: \"Oceania\" },\n  { code: \"br\", value: \"brazil\", label: \"Brazil\", continent: \"South America\" },\n  { code: \"ca\", value: \"canada\", label: \"Canada\", continent: \"North America\" },\n  { code: \"cn\", value: \"china\", label: \"China\", continent: \"Asia\" },\n  {\n    code: \"co\",\n    value: \"colombia\",\n    label: \"Colombia\",\n    continent: \"South America\",\n  },\n  { code: \"eg\", value: \"egypt\", label: \"Egypt\", continent: \"Africa\" },\n  { code: \"fr\", value: \"france\", label: \"France\", continent: \"Europe\" },\n  { code: \"de\", value: \"germany\", label: \"Germany\", continent: \"Europe\" },\n  { code: \"it\", value: \"italy\", label: \"Italy\", continent: \"Europe\" },\n  { code: \"jp\", value: \"japan\", label: \"Japan\", continent: \"Asia\" },\n  { code: \"ke\", value: \"kenya\", label: \"Kenya\", continent: \"Africa\" },\n  { code: \"mx\", value: \"mexico\", label: \"Mexico\", continent: \"North America\" },\n  {\n    code: \"nz\",\n    value: \"new-zealand\",\n    label: \"New Zealand\",\n    continent: \"Oceania\",\n  },\n  { code: \"ng\", value: \"nigeria\", label: \"Nigeria\", continent: \"Africa\" },\n  {\n    code: \"za\",\n    value: \"south-africa\",\n    label: \"South Africa\",\n    continent: \"Africa\",\n  },\n  { code: \"kr\", value: \"south-korea\", label: \"South Korea\", continent: \"Asia\" },\n  {\n    code: \"gb\",\n    value: \"united-kingdom\",\n    label: \"United Kingdom\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"us\",\n    value: \"united-states\",\n    label: \"United States\",\n    continent: \"North America\",\n  },\n]\n\nexport function ComboboxWithCustomItems() {\n  return (\n    <Combobox\n      items={countries.filter((country) => country.code !== \"\")}\n      itemToStringValue={(country: (typeof countries)[number]) => country.label}\n    >\n      <ComboboxInput placeholder=\"Search countries...\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No countries found.</ComboboxEmpty>\n        <ComboboxList>\n          {(country) => (\n            <ComboboxItem key={country.code} value={country}>\n              <Item size=\"xs\" className=\"p-0\">\n                <ItemContent>\n                  <ItemTitle className=\"whitespace-nowrap\">\n                    {country.label}\n                  </ItemTitle>\n                  <ItemDescription>\n                    {country.continent} ({country.code})\n                  </ItemDescription>\n                </ItemContent>\n              </Item>\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-demo.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/base/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport default function ComboboxBasic() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-disabled.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/base/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxDisabled() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" disabled />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-groups.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxCollection,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxGroup,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxLabel,\n  ComboboxList,\n  ComboboxSeparator,\n} from \"@/examples/base/ui/combobox\"\n\nconst timezones = [\n  {\n    value: \"Americas\",\n    items: [\n      \"(GMT-5) New York\",\n      \"(GMT-8) Los Angeles\",\n      \"(GMT-6) Chicago\",\n      \"(GMT-5) Toronto\",\n      \"(GMT-8) Vancouver\",\n      \"(GMT-3) São Paulo\",\n    ],\n  },\n  {\n    value: \"Europe\",\n    items: [\n      \"(GMT+0) London\",\n      \"(GMT+1) Paris\",\n      \"(GMT+1) Berlin\",\n      \"(GMT+1) Rome\",\n      \"(GMT+1) Madrid\",\n      \"(GMT+1) Amsterdam\",\n    ],\n  },\n  {\n    value: \"Asia/Pacific\",\n    items: [\n      \"(GMT+9) Tokyo\",\n      \"(GMT+8) Shanghai\",\n      \"(GMT+8) Singapore\",\n      \"(GMT+4) Dubai\",\n      \"(GMT+11) Sydney\",\n      \"(GMT+9) Seoul\",\n    ],\n  },\n] as const\n\nexport function ComboboxWithGroupsAndSeparator() {\n  return (\n    <Combobox items={timezones}>\n      <ComboboxInput placeholder=\"Select a timezone\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n        <ComboboxList>\n          {(group, index) => (\n            <ComboboxGroup key={group.value} items={group.items}>\n              <ComboboxLabel>{group.value}</ComboboxLabel>\n              <ComboboxCollection>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxCollection>\n              {index < timezones.length - 1 && <ComboboxSeparator />}\n            </ComboboxGroup>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-input-group.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxCollection,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxGroup,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxLabel,\n  ComboboxList,\n} from \"@/examples/base/ui/combobox\"\nimport { InputGroupAddon } from \"@/examples/base/ui/input-group\"\nimport { GlobeIcon } from \"lucide-react\"\n\nconst timezones = [\n  {\n    value: \"Americas\",\n    items: [\n      \"(GMT-5) New York\",\n      \"(GMT-8) Los Angeles\",\n      \"(GMT-6) Chicago\",\n      \"(GMT-5) Toronto\",\n      \"(GMT-8) Vancouver\",\n      \"(GMT-3) São Paulo\",\n    ],\n  },\n  {\n    value: \"Europe\",\n    items: [\n      \"(GMT+0) London\",\n      \"(GMT+1) Paris\",\n      \"(GMT+1) Berlin\",\n      \"(GMT+1) Rome\",\n      \"(GMT+1) Madrid\",\n      \"(GMT+1) Amsterdam\",\n    ],\n  },\n  {\n    value: \"Asia/Pacific\",\n    items: [\n      \"(GMT+9) Tokyo\",\n      \"(GMT+8) Shanghai\",\n      \"(GMT+8) Singapore\",\n      \"(GMT+4) Dubai\",\n      \"(GMT+11) Sydney\",\n      \"(GMT+9) Seoul\",\n    ],\n  },\n] as const\n\nexport function ComboxboxInputGroup() {\n  return (\n    <Combobox items={timezones}>\n      <ComboboxInput placeholder=\"Select a timezone\">\n        <InputGroupAddon>\n          <GlobeIcon />\n        </InputGroupAddon>\n      </ComboboxInput>\n      <ComboboxContent alignOffset={-28} className=\"w-60\">\n        <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n        <ComboboxList>\n          {(group) => (\n            <ComboboxGroup key={group.value} items={group.items}>\n              <ComboboxLabel>{group.value}</ComboboxLabel>\n              <ComboboxCollection>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxCollection>\n            </ComboboxGroup>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-invalid.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/base/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxInvalid() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" aria-invalid=\"true\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-multiple.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/examples/base/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxMultiple() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <Combobox\n      multiple\n      autoHighlight\n      items={frameworks}\n      defaultValue={[frameworks[0]]}\n    >\n      <ComboboxChips ref={anchor} className=\"w-full max-w-xs\">\n        <ComboboxValue>\n          {(values) => (\n            <React.Fragment>\n              {values.map((value: string) => (\n                <ComboboxChip key={value}>{value}</ComboboxChip>\n              ))}\n              <ComboboxChipsInput />\n            </React.Fragment>\n          )}\n        </ComboboxValue>\n      </ComboboxChips>\n      <ComboboxContent anchor={anchor}>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-popup.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxTrigger,\n  ComboboxValue,\n} from \"@/examples/base/ui/combobox\"\n\nconst countries = [\n  { code: \"\", value: \"\", continent: \"\", label: \"Select country\" },\n  {\n    code: \"ar\",\n    value: \"argentina\",\n    label: \"Argentina\",\n    continent: \"South America\",\n  },\n  { code: \"au\", value: \"australia\", label: \"Australia\", continent: \"Oceania\" },\n  { code: \"br\", value: \"brazil\", label: \"Brazil\", continent: \"South America\" },\n  { code: \"ca\", value: \"canada\", label: \"Canada\", continent: \"North America\" },\n  { code: \"cn\", value: \"china\", label: \"China\", continent: \"Asia\" },\n  {\n    code: \"co\",\n    value: \"colombia\",\n    label: \"Colombia\",\n    continent: \"South America\",\n  },\n  { code: \"eg\", value: \"egypt\", label: \"Egypt\", continent: \"Africa\" },\n  { code: \"fr\", value: \"france\", label: \"France\", continent: \"Europe\" },\n  { code: \"de\", value: \"germany\", label: \"Germany\", continent: \"Europe\" },\n  { code: \"it\", value: \"italy\", label: \"Italy\", continent: \"Europe\" },\n  { code: \"jp\", value: \"japan\", label: \"Japan\", continent: \"Asia\" },\n  { code: \"ke\", value: \"kenya\", label: \"Kenya\", continent: \"Africa\" },\n  { code: \"mx\", value: \"mexico\", label: \"Mexico\", continent: \"North America\" },\n  {\n    code: \"nz\",\n    value: \"new-zealand\",\n    label: \"New Zealand\",\n    continent: \"Oceania\",\n  },\n  { code: \"ng\", value: \"nigeria\", label: \"Nigeria\", continent: \"Africa\" },\n  {\n    code: \"za\",\n    value: \"south-africa\",\n    label: \"South Africa\",\n    continent: \"Africa\",\n  },\n  { code: \"kr\", value: \"south-korea\", label: \"South Korea\", continent: \"Asia\" },\n  {\n    code: \"gb\",\n    value: \"united-kingdom\",\n    label: \"United Kingdom\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"us\",\n    value: \"united-states\",\n    label: \"United States\",\n    continent: \"North America\",\n  },\n]\n\nexport function ComboboxPopup() {\n  return (\n    <>\n      <Combobox items={countries} defaultValue={countries[0]}>\n        <ComboboxTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              className=\"w-64 justify-between font-normal\"\n            />\n          }\n        >\n          <ComboboxValue />\n        </ComboboxTrigger>\n        <ComboboxContent>\n          <ComboboxInput showTrigger={false} placeholder=\"Search\" />\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item.code} value={item}>\n                {item.label}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/combobox-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/examples/base/ui-rtl/combobox\"\nimport { Field, FieldLabel } from \"@/examples/base/ui-rtl/field\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst categories = [\n  \"technology\",\n  \"design\",\n  \"business\",\n  \"marketing\",\n  \"education\",\n  \"health\",\n] as const\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Categories\",\n      placeholder: \"Add categories\",\n      empty: \"No categories found.\",\n      technology: \"Technology\",\n      design: \"Design\",\n      business: \"Business\",\n      marketing: \"Marketing\",\n      education: \"Education\",\n      health: \"Health\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"الفئات\",\n      placeholder: \"أضف فئات\",\n      empty: \"لم يتم العثور على فئات.\",\n      technology: \"التكنولوجيا\",\n      design: \"التصميم\",\n      business: \"الأعمال\",\n      marketing: \"التسويق\",\n      education: \"التعليم\",\n      health: \"الصحة\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"קטגוריות\",\n      placeholder: \"הוסף קטגוריות\",\n      empty: \"לא נמצאו קטגוריות.\",\n      technology: \"טכנולוגיה\",\n      design: \"עיצוב\",\n      business: \"עסקים\",\n      marketing: \"שיווק\",\n      education: \"חינוך\",\n      health: \"בריאות\",\n    },\n  },\n}\n\nexport function ComboboxRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const anchor = useComboboxAnchor()\n\n  const categoryLabels: Record<string, string> = {\n    technology: t.technology,\n    design: t.design,\n    business: t.business,\n    marketing: t.marketing,\n    education: t.education,\n    health: t.health,\n  }\n\n  return (\n    <Field className=\"mx-auto w-full max-w-xs\">\n      <FieldLabel>{t.label}</FieldLabel>\n      <Combobox\n        multiple\n        autoHighlight\n        items={categories}\n        defaultValue={[categories[0]]}\n        itemToStringValue={(item: (typeof categories)[number]) =>\n          categoryLabels[item] || item\n        }\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value}>\n                    {categoryLabels[value] || value}\n                  </ComboboxChip>\n                ))}\n                <ComboboxChipsInput placeholder={t.placeholder} />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent\n          anchor={anchor}\n          dir={dir}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <ComboboxEmpty>{t.empty}</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {categoryLabels[item] || item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/command-basic.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/examples/base/ui/command\"\n\nexport function CommandBasic() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button onClick={() => setOpen(true)} variant=\"outline\" className=\"w-fit\">\n        Open Menu\n      </Button>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <Command>\n          <CommandInput placeholder=\"Type a command or search...\" />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup heading=\"Suggestions\">\n              <CommandItem>Calendar</CommandItem>\n              <CommandItem>Search Emoji</CommandItem>\n              <CommandItem>Calculator</CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </CommandDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/command-demo.tsx",
    "content": "import {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/base/ui/command\"\nimport {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nexport function CommandDemo() {\n  return (\n    <Command className=\"max-w-sm rounded-lg border\">\n      <CommandInput placeholder=\"Type a command or search...\" />\n      <CommandList>\n        <CommandEmpty>No results found.</CommandEmpty>\n        <CommandGroup heading=\"Suggestions\">\n          <CommandItem>\n            <Calendar />\n            <span>Calendar</span>\n          </CommandItem>\n          <CommandItem>\n            <Smile />\n            <span>Search Emoji</span>\n          </CommandItem>\n          <CommandItem disabled>\n            <Calculator />\n            <span>Calculator</span>\n          </CommandItem>\n        </CommandGroup>\n        <CommandSeparator />\n        <CommandGroup heading=\"Settings\">\n          <CommandItem>\n            <User />\n            <span>Profile</span>\n            <CommandShortcut>⌘P</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <CreditCard />\n            <span>Billing</span>\n            <CommandShortcut>⌘B</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <Settings />\n            <span>Settings</span>\n            <CommandShortcut>⌘S</CommandShortcut>\n          </CommandItem>\n        </CommandGroup>\n      </CommandList>\n    </Command>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/command-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/base/ui/command\"\nimport {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nexport function CommandDialogDemo() {\n  const [open, setOpen] = React.useState(false)\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if (e.key === \"j\" && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault()\n        setOpen((open) => !open)\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => document.removeEventListener(\"keydown\", down)\n  }, [])\n\n  return (\n    <>\n      <p className=\"text-sm text-muted-foreground\">\n        Press{\" \"}\n        <kbd className=\"pointer-events-none inline-flex h-5 items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100 select-none\">\n          <span className=\"text-xs\">⌘</span>J\n        </kbd>\n      </p>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <CommandInput placeholder=\"Type a command or search...\" />\n        <CommandList>\n          <CommandEmpty>No results found.</CommandEmpty>\n          <CommandGroup heading=\"Suggestions\">\n            <CommandItem>\n              <Calendar />\n              <span>Calendar</span>\n            </CommandItem>\n            <CommandItem>\n              <Smile />\n              <span>Search Emoji</span>\n            </CommandItem>\n            <CommandItem>\n              <Calculator />\n              <span>Calculator</span>\n            </CommandItem>\n          </CommandGroup>\n          <CommandSeparator />\n          <CommandGroup heading=\"Settings\">\n            <CommandItem>\n              <User />\n              <span>Profile</span>\n              <CommandShortcut>⌘P</CommandShortcut>\n            </CommandItem>\n            <CommandItem>\n              <CreditCard />\n              <span>Billing</span>\n              <CommandShortcut>⌘B</CommandShortcut>\n            </CommandItem>\n            <CommandItem>\n              <Settings />\n              <span>Settings</span>\n              <CommandShortcut>⌘S</CommandShortcut>\n            </CommandItem>\n          </CommandGroup>\n        </CommandList>\n      </CommandDialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/command-groups.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/base/ui/command\"\nimport {\n  CalculatorIcon,\n  CalendarIcon,\n  CreditCardIcon,\n  SettingsIcon,\n  SmileIcon,\n  UserIcon,\n} from \"lucide-react\"\n\nexport function CommandWithGroups() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button onClick={() => setOpen(true)} variant=\"outline\" className=\"w-fit\">\n        Open Menu\n      </Button>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <Command>\n          <CommandInput placeholder=\"Type a command or search...\" />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup heading=\"Suggestions\">\n              <CommandItem>\n                <CalendarIcon />\n                <span>Calendar</span>\n              </CommandItem>\n              <CommandItem>\n                <SmileIcon />\n                <span>Search Emoji</span>\n              </CommandItem>\n              <CommandItem>\n                <CalculatorIcon />\n                <span>Calculator</span>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Settings\">\n              <CommandItem>\n                <UserIcon />\n                <span>Profile</span>\n                <CommandShortcut>⌘P</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <CreditCardIcon />\n                <span>Billing</span>\n                <CommandShortcut>⌘B</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <SettingsIcon />\n                <span>Settings</span>\n                <CommandShortcut>⌘S</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </CommandDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/command-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/base/ui-rtl/command\"\nimport {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      placeholder: \"Type a command or search...\",\n      empty: \"No results found.\",\n      suggestions: \"Suggestions\",\n      calendar: \"Calendar\",\n      searchEmoji: \"Search Emoji\",\n      calculator: \"Calculator\",\n      settings: \"Settings\",\n      profile: \"Profile\",\n      billing: \"Billing\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"اكتب أمرًا أو ابحث...\",\n      empty: \"لم يتم العثور على نتائج.\",\n      suggestions: \"اقتراحات\",\n      calendar: \"التقويم\",\n      searchEmoji: \"البحث عن الرموز التعبيرية\",\n      calculator: \"الآلة الحاسبة\",\n      settings: \"الإعدادات\",\n      profile: \"الملف الشخصي\",\n      billing: \"الفوترة\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"הקלד פקודה או חפש...\",\n      empty: \"לא נמצאו תוצאות.\",\n      suggestions: \"הצעות\",\n      calendar: \"לוח שנה\",\n      searchEmoji: \"חפש אמוג'י\",\n      calculator: \"מחשבון\",\n      settings: \"הגדרות\",\n      profile: \"פרופיל\",\n      billing: \"חיוב\",\n    },\n  },\n}\n\nexport function CommandRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Command className=\"max-w-sm rounded-lg border\" dir={dir}>\n      <CommandInput placeholder={t.placeholder} dir={dir} />\n      <CommandList>\n        <CommandEmpty>{t.empty}</CommandEmpty>\n        <CommandGroup heading={t.suggestions}>\n          <CommandItem>\n            <Calendar />\n            <span>{t.calendar}</span>\n          </CommandItem>\n          <CommandItem>\n            <Smile />\n            <span>{t.searchEmoji}</span>\n          </CommandItem>\n          <CommandItem disabled>\n            <Calculator />\n            <span>{t.calculator}</span>\n          </CommandItem>\n        </CommandGroup>\n        <CommandSeparator />\n        <CommandGroup heading={t.settings}>\n          <CommandItem>\n            <User />\n            <span>{t.profile}</span>\n            <CommandShortcut>⌘P</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <CreditCard />\n            <span>{t.billing}</span>\n            <CommandShortcut>⌘B</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <Settings />\n            <span>{t.settings}</span>\n            <CommandShortcut>⌘S</CommandShortcut>\n          </CommandItem>\n        </CommandGroup>\n      </CommandList>\n    </Command>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/command-scrollable.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/base/ui/command\"\nimport {\n  BellIcon,\n  CalculatorIcon,\n  CalendarIcon,\n  ClipboardPasteIcon,\n  CodeIcon,\n  CopyIcon,\n  CreditCardIcon,\n  FileTextIcon,\n  FolderIcon,\n  FolderPlusIcon,\n  HelpCircleIcon,\n  HomeIcon,\n  ImageIcon,\n  InboxIcon,\n  LayoutGridIcon,\n  ListIcon,\n  PlusIcon,\n  ScissorsIcon,\n  SettingsIcon,\n  TrashIcon,\n  UserIcon,\n  ZoomInIcon,\n  ZoomOutIcon,\n} from \"lucide-react\"\n\nexport function CommandManyItems() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button onClick={() => setOpen(true)} variant=\"outline\" className=\"w-fit\">\n        Open Menu\n      </Button>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <Command>\n          <CommandInput placeholder=\"Type a command or search...\" />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup heading=\"Navigation\">\n              <CommandItem>\n                <HomeIcon />\n                <span>Home</span>\n                <CommandShortcut>⌘H</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <InboxIcon />\n                <span>Inbox</span>\n                <CommandShortcut>⌘I</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <FileTextIcon />\n                <span>Documents</span>\n                <CommandShortcut>⌘D</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <FolderIcon />\n                <span>Folders</span>\n                <CommandShortcut>⌘F</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Actions\">\n              <CommandItem>\n                <PlusIcon />\n                <span>New File</span>\n                <CommandShortcut>⌘N</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <FolderPlusIcon />\n                <span>New Folder</span>\n                <CommandShortcut>⇧⌘N</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <CopyIcon />\n                <span>Copy</span>\n                <CommandShortcut>⌘C</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <ScissorsIcon />\n                <span>Cut</span>\n                <CommandShortcut>⌘X</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <ClipboardPasteIcon />\n                <span>Paste</span>\n                <CommandShortcut>⌘V</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <TrashIcon />\n                <span>Delete</span>\n                <CommandShortcut>⌫</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"View\">\n              <CommandItem>\n                <LayoutGridIcon />\n                <span>Grid View</span>\n              </CommandItem>\n              <CommandItem>\n                <ListIcon />\n                <span>List View</span>\n              </CommandItem>\n              <CommandItem>\n                <ZoomInIcon />\n                <span>Zoom In</span>\n                <CommandShortcut>⌘+</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <ZoomOutIcon />\n                <span>Zoom Out</span>\n                <CommandShortcut>⌘-</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Account\">\n              <CommandItem>\n                <UserIcon />\n                <span>Profile</span>\n                <CommandShortcut>⌘P</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <CreditCardIcon />\n                <span>Billing</span>\n                <CommandShortcut>⌘B</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <SettingsIcon />\n                <span>Settings</span>\n                <CommandShortcut>⌘S</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <BellIcon />\n                <span>Notifications</span>\n              </CommandItem>\n              <CommandItem>\n                <HelpCircleIcon />\n                <span>Help & Support</span>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Tools\">\n              <CommandItem>\n                <CalculatorIcon />\n                <span>Calculator</span>\n              </CommandItem>\n              <CommandItem>\n                <CalendarIcon />\n                <span>Calendar</span>\n              </CommandItem>\n              <CommandItem>\n                <ImageIcon />\n                <span>Image Editor</span>\n              </CommandItem>\n              <CommandItem>\n                <CodeIcon />\n                <span>Code Editor</span>\n              </CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </CommandDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/command-shortcuts.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandShortcut,\n} from \"@/examples/base/ui/command\"\nimport { CreditCardIcon, SettingsIcon, UserIcon } from \"lucide-react\"\n\nexport function CommandWithShortcuts() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button onClick={() => setOpen(true)} variant=\"outline\" className=\"w-fit\">\n        Open Menu\n      </Button>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <Command>\n          <CommandInput placeholder=\"Type a command or search...\" />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup heading=\"Settings\">\n              <CommandItem>\n                <UserIcon />\n                <span>Profile</span>\n                <CommandShortcut>⌘P</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <CreditCardIcon />\n                <span>Billing</span>\n                <CommandShortcut>⌘B</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <SettingsIcon />\n                <span>Settings</span>\n                <CommandShortcut>⌘S</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </CommandDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-basic.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\n\nexport function ContextMenuBasic() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>Back</ContextMenuItem>\n          <ContextMenuItem disabled>Forward</ContextMenuItem>\n          <ContextMenuItem>Reload</ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-checkboxes.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\n\nexport function ContextMenuCheckboxes() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuCheckboxItem defaultChecked>\n            Show Bookmarks Bar\n          </ContextMenuCheckboxItem>\n          <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\n          <ContextMenuCheckboxItem defaultChecked>\n            Show Developer Tools\n          </ContextMenuCheckboxItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-demo.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\n\nexport function ContextMenuDemo() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent className=\"w-48\">\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Back\n            <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem disabled>\n            Forward\n            <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Reload\n            <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuSub>\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\n            <ContextMenuSubContent className=\"w-44\">\n              <ContextMenuGroup>\n                <ContextMenuItem>Save Page...</ContextMenuItem>\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n                <ContextMenuItem>Name Window...</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuCheckboxItem checked>\n            Show Bookmarks\n          </ContextMenuCheckboxItem>\n          <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuRadioGroup value=\"pedro\">\n            <ContextMenuLabel>People</ContextMenuLabel>\n            <ContextMenuRadioItem value=\"pedro\">\n              Pedro Duarte\n            </ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"colm\">Colm Tuite</ContextMenuRadioItem>\n          </ContextMenuRadioGroup>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-destructive.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuSeparator,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\nimport { ArchiveIcon, PencilIcon, ShareIcon, TrashIcon } from \"lucide-react\"\n\nexport function ContextMenuDestructive() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            <PencilIcon />\n            Edit\n          </ContextMenuItem>\n          <ContextMenuItem>\n            <ShareIcon />\n            Share\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem variant=\"destructive\">\n            <TrashIcon />\n            Delete\n          </ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-groups.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\n\nexport function ContextMenuGroups() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuLabel>File</ContextMenuLabel>\n          <ContextMenuItem>\n            New File\n            <ContextMenuShortcut>⌘N</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Open File\n            <ContextMenuShortcut>⌘O</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Save\n            <ContextMenuShortcut>⌘S</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuLabel>Edit</ContextMenuLabel>\n          <ContextMenuItem>\n            Undo\n            <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Redo\n            <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Cut\n            <ContextMenuShortcut>⌘X</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Copy\n            <ContextMenuShortcut>⌘C</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Paste\n            <ContextMenuShortcut>⌘V</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem variant=\"destructive\">\n            Delete\n            <ContextMenuShortcut>⌫</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-icons.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuSeparator,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\nimport {\n  ClipboardPasteIcon,\n  CopyIcon,\n  ScissorsIcon,\n  TrashIcon,\n} from \"lucide-react\"\n\nexport function ContextMenuIcons() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            <CopyIcon />\n            Copy\n          </ContextMenuItem>\n          <ContextMenuItem>\n            <ScissorsIcon />\n            Cut\n          </ContextMenuItem>\n          <ContextMenuItem>\n            <ClipboardPasteIcon />\n            Paste\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem variant=\"destructive\">\n            <TrashIcon />\n            Delete\n          </ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-radio.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\n\nexport function ContextMenuRadio() {\n  const [user, setUser] = React.useState(\"pedro\")\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuLabel>People</ContextMenuLabel>\n          <ContextMenuRadioGroup value={user} onValueChange={setUser}>\n            <ContextMenuRadioItem value=\"pedro\">\n              Pedro Duarte\n            </ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"colm\">Colm Tuite</ContextMenuRadioItem>\n          </ContextMenuRadioGroup>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuLabel>Theme</ContextMenuLabel>\n          <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\n            <ContextMenuRadioItem value=\"light\">Light</ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"dark\">Dark</ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"system\">System</ContextMenuRadioItem>\n          </ContextMenuRadioGroup>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui-rtl/context-menu\"\nimport { ArrowLeftIcon, ArrowRightIcon, RotateCwIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      rightClick: \"Right click here\",\n      longPress: \"Long press here\",\n      navigation: \"Navigation\",\n      back: \"Back\",\n      forward: \"Forward\",\n      reload: \"Reload\",\n      moreTools: \"More Tools\",\n      savePage: \"Save Page...\",\n      createShortcut: \"Create Shortcut...\",\n      nameWindow: \"Name Window...\",\n      developerTools: \"Developer Tools\",\n      delete: \"Delete\",\n      showBookmarks: \"Show Bookmarks\",\n      showFullUrls: \"Show Full URLs\",\n      people: \"People\",\n      pedro: \"Pedro Duarte\",\n      colm: \"Colm Tuite\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      rightClick: \"انقر بزر الماوس الأيمن هنا\",\n      longPress: \"اضغط مطولاً هنا\",\n      navigation: \"التنقل\",\n      back: \"رجوع\",\n      forward: \"تقدم\",\n      reload: \"إعادة تحميل\",\n      moreTools: \"المزيد من الأدوات\",\n      savePage: \"حفظ الصفحة...\",\n      createShortcut: \"إنشاء اختصار...\",\n      nameWindow: \"تسمية النافذة...\",\n      developerTools: \"أدوات المطور\",\n      delete: \"حذف\",\n      showBookmarks: \"إظهار الإشارات المرجعية\",\n      showFullUrls: \"إظهار عناوين URL الكاملة\",\n      people: \"الأشخاص\",\n      pedro: \"Pedro Duarte\",\n      colm: \"Colm Tuite\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      rightClick: \"לחץ לחיצה ימנית כאן\",\n      longPress: \"לחץ לחיצה ארוכה כאן\",\n      navigation: \"ניווט\",\n      back: \"חזור\",\n      forward: \"קדימה\",\n      reload: \"רענן\",\n      moreTools: \"כלים נוספים\",\n      savePage: \"שמור עמוד...\",\n      createShortcut: \"צור קיצור דרך...\",\n      nameWindow: \"שם חלון...\",\n      developerTools: \"כלי מפתח\",\n      delete: \"מחק\",\n      showBookmarks: \"הצג סימניות\",\n      showFullUrls: \"הצג כתובות URL מלאות\",\n      people: \"אנשים\",\n      pedro: \"Pedro Duarte\",\n      colm: \"Colm Tuite\",\n    },\n  },\n}\n\nexport function ContextMenuRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [people, setPeople] = React.useState(\"pedro\")\n\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">{t.rightClick}</span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          {t.longPress}\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent\n        className=\"w-48\"\n        dir={dir}\n        data-lang={dir === \"rtl\" ? language : undefined}\n      >\n        <ContextMenuGroup>\n          <ContextMenuSub>\n            <ContextMenuSubTrigger>{t.navigation}</ContextMenuSubTrigger>\n            <ContextMenuSubContent\n              className=\"w-44\"\n              dir={dir}\n              data-lang={dir === \"rtl\" ? language : undefined}\n            >\n              <ContextMenuGroup>\n                <ContextMenuItem>\n                  <ArrowLeftIcon />\n                  {t.back}\n                  <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n                </ContextMenuItem>\n                <ContextMenuItem disabled>\n                  <ArrowRightIcon />\n                  {t.forward}\n                  <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n                </ContextMenuItem>\n                <ContextMenuItem>\n                  <RotateCwIcon />\n                  {t.reload}\n                  <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n                </ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n          <ContextMenuSub>\n            <ContextMenuSubTrigger>{t.moreTools}</ContextMenuSubTrigger>\n            <ContextMenuSubContent\n              className=\"w-44\"\n              dir={dir}\n              data-lang={dir === \"rtl\" ? language : undefined}\n            >\n              <ContextMenuGroup>\n                <ContextMenuItem>{t.savePage}</ContextMenuItem>\n                <ContextMenuItem>{t.createShortcut}</ContextMenuItem>\n                <ContextMenuItem>{t.nameWindow}</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem>{t.developerTools}</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem variant=\"destructive\">\n                  {t.delete}\n                </ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuCheckboxItem checked>\n            {t.showBookmarks}\n          </ContextMenuCheckboxItem>\n          <ContextMenuCheckboxItem>{t.showFullUrls}</ContextMenuCheckboxItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuRadioGroup value={people} onValueChange={setPeople}>\n            <ContextMenuLabel>{t.people}</ContextMenuLabel>\n            <ContextMenuRadioItem value=\"pedro\">{t.pedro}</ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"colm\">{t.colm}</ContextMenuRadioItem>\n          </ContextMenuRadioGroup>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-shortcuts.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\n\nexport function ContextMenuShortcuts() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Back\n            <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem disabled>\n            Forward\n            <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Reload\n            <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Save\n            <ContextMenuShortcut>⌘S</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Save As...\n            <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-sides.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\n\nexport function ContextMenuSides() {\n  return (\n    <div className=\"grid w-full max-w-sm grid-cols-2 gap-4\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n          <span className=\"hidden pointer-fine:inline-block\">\n            Right click (top)\n          </span>\n          <span className=\"hidden pointer-coarse:inline-block\">\n            Long press (top)\n          </span>\n        </ContextMenuTrigger>\n        <ContextMenuContent side=\"top\">\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n          <span className=\"hidden pointer-fine:inline-block\">\n            Right click (right)\n          </span>\n          <span className=\"hidden pointer-coarse:inline-block\">\n            Long press (right)\n          </span>\n        </ContextMenuTrigger>\n        <ContextMenuContent side=\"right\">\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n          <span className=\"hidden pointer-fine:inline-block\">\n            Right click (bottom)\n          </span>\n          <span className=\"hidden pointer-coarse:inline-block\">\n            Long press (bottom)\n          </span>\n        </ContextMenuTrigger>\n        <ContextMenuContent side=\"bottom\">\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n          <span className=\"hidden pointer-fine:inline-block\">\n            Right click (left)\n          </span>\n          <span className=\"hidden pointer-coarse:inline-block\">\n            Long press (left)\n          </span>\n        </ContextMenuTrigger>\n        <ContextMenuContent side=\"left\">\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/context-menu-submenu.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/examples/base/ui/context-menu\"\n\nexport function ContextMenuSubmenu() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Copy\n            <ContextMenuShortcut>⌘C</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Cut\n            <ContextMenuShortcut>⌘X</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSub>\n          <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\n          <ContextMenuSubContent>\n            <ContextMenuGroup>\n              <ContextMenuItem>Save Page...</ContextMenuItem>\n              <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n              <ContextMenuItem>Name Window...</ContextMenuItem>\n            </ContextMenuGroup>\n            <ContextMenuSeparator />\n            <ContextMenuGroup>\n              <ContextMenuItem>Developer Tools</ContextMenuItem>\n            </ContextMenuGroup>\n            <ContextMenuSeparator />\n            <ContextMenuGroup>\n              <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n            </ContextMenuGroup>\n          </ContextMenuSubContent>\n        </ContextMenuSub>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/data-picker-with-dropdowns.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { format } from \"date-fns\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nexport function DataPickerWithDropdowns() {\n  const [date, setDate] = React.useState<Date>()\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Field className=\"mx-auto w-72\">\n      <Popover open={open} onOpenChange={setOpen}>\n        <FieldLabel htmlFor=\"date-picker-with-dropdowns-desktop\">\n          Date\n        </FieldLabel>\n        <PopoverTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              id=\"date-picker-with-dropdowns-desktop\"\n              className=\"justify-start px-2.5 font-normal\"\n            />\n          }\n        >\n          <ChevronDownIcon className=\"ml-auto\" />\n          {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            captionLayout=\"dropdown\"\n          />\n          <div className=\"flex gap-2 border-t p-2\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"w-full\"\n              onClick={() => setOpen(false)}\n            >\n              Done\n            </Button>\n          </div>\n        </PopoverContent>\n      </Popover>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/data-table-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/base/ui/table\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \"lucide-react\"\n\nconst data: Payment[] = [\n  {\n    id: \"m5gr84i9\",\n    amount: 316,\n    status: \"success\",\n    email: \"ken99@example.com\",\n  },\n  {\n    id: \"3u1reuv4\",\n    amount: 242,\n    status: \"success\",\n    email: \"Abe45@example.com\",\n  },\n  {\n    id: \"derv1ws0\",\n    amount: 837,\n    status: \"processing\",\n    email: \"Monserrat44@example.com\",\n  },\n  {\n    id: \"5kma53ae\",\n    amount: 874,\n    status: \"success\",\n    email: \"Silas22@example.com\",\n  },\n  {\n    id: \"bhqecj4p\",\n    amount: 721,\n    status: \"failed\",\n    email: \"carmella@example.com\",\n  },\n]\n\nexport type Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <Checkbox\n        checked={\n          table.getIsAllPageRowsSelected() ||\n          (table.getIsSomePageRowsSelected() ? true : false)\n        }\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n        aria-label=\"Select all\"\n      />\n    ),\n    cell: ({ row }) => (\n      <Checkbox\n        checked={row.getIsSelected()}\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\n        aria-label=\"Select row\"\n      />\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <div className=\"capitalize\">{row.getValue(\"status\")}</div>\n    ),\n  },\n  {\n    accessorKey: \"email\",\n    header: ({ column }) => {\n      return (\n        <Button\n          variant=\"ghost\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n        >\n          Email\n          <ArrowUpDown />\n        </Button>\n      )\n    },\n    cell: ({ row }) => <div className=\"lowercase\">{row.getValue(\"email\")}</div>,\n  },\n  {\n    accessorKey: \"amount\",\n    header: () => <div className=\"text-right\">Amount</div>,\n    cell: ({ row }) => {\n      const amount = parseFloat(row.getValue(\"amount\"))\n\n      // Format the amount as a dollar amount.\n      const formatted = new Intl.NumberFormat(\"en-US\", {\n        style: \"currency\",\n        currency: \"USD\",\n      }).format(amount)\n\n      return <div className=\"text-right font-medium\">{formatted}</div>\n    },\n  },\n  {\n    id: \"actions\",\n    enableHiding: false,\n    cell: ({ row }) => {\n      const payment = row.original\n\n      return (\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n          >\n            <span className=\"sr-only\">Open menu</span>\n            <MoreHorizontal />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" className=\"w-44\">\n            <DropdownMenuGroup>\n              <DropdownMenuLabel>Actions</DropdownMenuLabel>\n              <DropdownMenuItem\n                onClick={() => navigator.clipboard.writeText(payment.id)}\n              >\n                Copy payment ID\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>View customer</DropdownMenuItem>\n              <DropdownMenuItem>View payment details</DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      )\n    },\n  },\n]\n\nexport function DataTableDemo() {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [rowSelection, setRowSelection] = React.useState({})\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  })\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"flex items-center py-4\">\n        <Input\n          placeholder=\"Filter emails...\"\n          value={(table.getColumn(\"email\")?.getFilterValue() as string) ?? \"\"}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={<Button variant=\"outline\" className=\"ml-auto\" />}\n          >\n            Columns <ChevronDown />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" className=\"w-44\">\n            <DropdownMenuGroup>\n              {table\n                .getAllColumns()\n                .filter((column) => column.getCanHide())\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>\n          <TableHeader>\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id}>\n                {headerGroup.headers.map((header) => {\n                  return (\n                    <TableHead key={header.id}>\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(\n                            header.column.columnDef.header,\n                            header.getContext()\n                          )}\n                    </TableHead>\n                  )\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody>\n            {table.getRowModel().rows?.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && \"selected\"}\n                >\n                  {row.getVisibleCells().map((cell) => (\n                    <TableCell key={cell.id}>\n                      {flexRender(\n                        cell.column.columnDef.cell,\n                        cell.getContext()\n                      )}\n                    </TableCell>\n                  ))}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell\n                  colSpan={columns.length}\n                  className=\"h-24 text-center\"\n                >\n                  No results.\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n      <div className=\"flex items-center justify-end space-x-2 py-4\">\n        <div className=\"flex-1 text-sm text-muted-foreground\">\n          {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n          {table.getFilteredRowModel().rows.length} row(s) selected.\n        </div>\n        <div className=\"space-x-2\">\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.previousPage()}\n            disabled={!table.getCanPreviousPage()}\n          >\n            Previous\n          </Button>\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.nextPage()}\n            disabled={!table.getCanNextPage()}\n          >\n            Next\n          </Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/data-table-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Checkbox } from \"@/examples/base/ui-rtl/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/base/ui-rtl/table\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      filterEmails: \"Filter emails...\",\n      columns: \"Columns\",\n      status: \"Status\",\n      email: \"Email\",\n      amount: \"Amount\",\n      actions: \"Actions\",\n      copyPaymentId: \"Copy payment ID\",\n      viewCustomer: \"View customer\",\n      viewPaymentDetails: \"View payment details\",\n      selectAll: \"Select all\",\n      selectRow: \"Select row\",\n      openMenu: \"Open menu\",\n      noResults: \"No results.\",\n      rowsSelected: \"of\",\n      rowsSelectedSuffix: \"row(s) selected.\",\n      previous: \"Previous\",\n      next: \"Next\",\n      success: \"Success\",\n      processing: \"Processing\",\n      failed: \"Failed\",\n      pending: \"Pending\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      filterEmails: \"تصفية البريد الإلكتروني...\",\n      columns: \"الأعمدة\",\n      status: \"الحالة\",\n      email: \"البريد الإلكتروني\",\n      amount: \"المبلغ\",\n      actions: \"الإجراءات\",\n      copyPaymentId: \"نسخ معرف الدفع\",\n      viewCustomer: \"عرض العميل\",\n      viewPaymentDetails: \"عرض تفاصيل الدفع\",\n      selectAll: \"تحديد الكل\",\n      selectRow: \"تحديد الصف\",\n      openMenu: \"فتح القائمة\",\n      noResults: \"لا توجد نتائج.\",\n      rowsSelected: \"من\",\n      rowsSelectedSuffix: \"صف(وف) محدد.\",\n      previous: \"السابق\",\n      next: \"التالي\",\n      success: \"ناجح\",\n      processing: \"قيد المعالجة\",\n      failed: \"فشل\",\n      pending: \"قيد الانتظار\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      filterEmails: \"סנן אימיילים...\",\n      columns: \"עמודות\",\n      status: \"סטטוס\",\n      email: \"אימייל\",\n      amount: \"סכום\",\n      actions: \"פעולות\",\n      copyPaymentId: \"העתק מזהה תשלום\",\n      viewCustomer: \"צפה בלקוח\",\n      viewPaymentDetails: \"צפה בפרטי תשלום\",\n      selectAll: \"בחר הכל\",\n      selectRow: \"בחר שורה\",\n      openMenu: \"פתח תפריט\",\n      noResults: \"אין תוצאות.\",\n      rowsSelected: \"מתוך\",\n      rowsSelectedSuffix: \"שורות נבחרו.\",\n      previous: \"הקודם\",\n      next: \"הבא\",\n      success: \"הצליח\",\n      processing: \"מעבד\",\n      failed: \"נכשל\",\n      pending: \"ממתין\",\n    },\n  },\n}\n\ntype Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nconst data: Payment[] = [\n  {\n    id: \"m5gr84i9\",\n    amount: 316,\n    status: \"success\",\n    email: \"ken99@example.com\",\n  },\n  {\n    id: \"3u1reuv4\",\n    amount: 242,\n    status: \"success\",\n    email: \"Abe45@example.com\",\n  },\n  {\n    id: \"derv1ws0\",\n    amount: 837,\n    status: \"processing\",\n    email: \"Monserrat44@example.com\",\n  },\n  {\n    id: \"5kma53ae\",\n    amount: 874,\n    status: \"success\",\n    email: \"Silas22@example.com\",\n  },\n  {\n    id: \"bhqecj4p\",\n    amount: 721,\n    status: \"failed\",\n    email: \"carmella@example.com\",\n  },\n]\n\nexport function DataTableRtl() {\n  const { t, dir, language } = useTranslation(translations, \"ar\")\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [rowSelection, setRowSelection] = React.useState({})\n\n  const columns: ColumnDef<Payment>[] = React.useMemo(\n    () => [\n      {\n        id: \"select\",\n        header: ({ table }) => (\n          <Checkbox\n            checked={\n              table.getIsAllPageRowsSelected() ||\n              (table.getIsSomePageRowsSelected() ? true : false)\n            }\n            onCheckedChange={(value) =>\n              table.toggleAllPageRowsSelected(!!value)\n            }\n            aria-label={t.selectAll}\n          />\n        ),\n        cell: ({ row }) => (\n          <Checkbox\n            checked={row.getIsSelected()}\n            onCheckedChange={(value) => row.toggleSelected(!!value)}\n            aria-label={t.selectRow}\n          />\n        ),\n        enableSorting: false,\n        enableHiding: false,\n      },\n      {\n        accessorKey: \"status\",\n        header: t.status,\n        cell: ({ row }) => {\n          const status = row.getValue(\"status\") as string\n          const statusMap: Record<string, string> = {\n            success: t.success,\n            processing: t.processing,\n            failed: t.failed,\n            pending: t.pending,\n          }\n          return <div className=\"capitalize\">{statusMap[status]}</div>\n        },\n      },\n      {\n        accessorKey: \"email\",\n        header: ({ column }) => {\n          return (\n            <Button\n              variant=\"ghost\"\n              onClick={() =>\n                column.toggleSorting(column.getIsSorted() === \"asc\")\n              }\n            >\n              {t.email}\n              <ArrowUpDown />\n            </Button>\n          )\n        },\n        cell: ({ row }) => (\n          <div className=\"lowercase\">{row.getValue(\"email\")}</div>\n        ),\n      },\n      {\n        accessorKey: \"amount\",\n        header: () => <div className=\"text-start\">{t.amount}</div>,\n        cell: ({ row }) => {\n          const amount = parseFloat(row.getValue(\"amount\"))\n          const formatted = new Intl.NumberFormat(\n            dir === \"rtl\" ? \"ar-SA\" : \"en-US\",\n            {\n              style: \"currency\",\n              currency: \"USD\",\n            }\n          ).format(amount)\n\n          return <div className=\"text-start font-medium\">{formatted}</div>\n        },\n      },\n      {\n        id: \"actions\",\n        enableHiding: false,\n        cell: ({ row }) => {\n          const payment = row.original\n\n          return (\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n              >\n                <span className=\"sr-only\">{t.openMenu}</span>\n                <MoreHorizontal />\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                align={dir === \"rtl\" ? \"start\" : \"end\"}\n                data-lang={dir === \"rtl\" ? language : undefined}\n                className=\"w-40\"\n              >\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>{t.actions}</DropdownMenuLabel>\n                  <DropdownMenuItem\n                    onClick={() => navigator.clipboard.writeText(payment.id)}\n                  >\n                    {t.copyPaymentId}\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>{t.viewCustomer}</DropdownMenuItem>\n                  <DropdownMenuItem>{t.viewPaymentDetails}</DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          )\n        },\n      },\n    ],\n    [t, dir, language]\n  )\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  })\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"flex items-center gap-2 py-4\">\n        <Input\n          placeholder={t.filterEmails}\n          value={(table.getColumn(\"email\")?.getFilterValue() as string) ?? \"\"}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={<Button variant=\"outline\" className=\"ms-auto\" />}\n          >\n            {t.columns} <ChevronDown />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            align={dir === \"rtl\" ? \"start\" : \"end\"}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            <DropdownMenuGroup>\n              {table\n                .getAllColumns()\n                .filter((column) => column.getCanHide())\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>\n          <TableHeader>\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id}>\n                {headerGroup.headers.map((header) => {\n                  return (\n                    <TableHead key={header.id}>\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(\n                            header.column.columnDef.header,\n                            header.getContext()\n                          )}\n                    </TableHead>\n                  )\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody>\n            {table.getRowModel().rows?.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && \"selected\"}\n                >\n                  {row.getVisibleCells().map((cell) => (\n                    <TableCell key={cell.id}>\n                      {flexRender(\n                        cell.column.columnDef.cell,\n                        cell.getContext()\n                      )}\n                    </TableCell>\n                  ))}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell\n                  colSpan={columns.length}\n                  className=\"h-24 text-center\"\n                >\n                  {t.noResults}\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n      <div className=\"flex items-center justify-end gap-2 py-4\">\n        <div className=\"flex-1 text-sm text-muted-foreground\">\n          {table.getFilteredSelectedRowModel().rows.length} {t.rowsSelected}{\" \"}\n          {table.getFilteredRowModel().rows.length} {t.rowsSelectedSuffix}\n        </div>\n        <div className=\"flex gap-2\">\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.previousPage()}\n            disabled={!table.getCanPreviousPage()}\n          >\n            {t.previous}\n          </Button>\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.nextPage()}\n            disabled={!table.getCanNextPage()}\n          >\n            {t.next}\n          </Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/date-picker-basic.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { format } from \"date-fns\"\n\nexport function DatePickerSimple() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Field className=\"mx-auto w-44\">\n      <FieldLabel htmlFor=\"date-picker-simple\">Date</FieldLabel>\n      <Popover>\n        <PopoverTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              id=\"date-picker-simple\"\n              className=\"justify-start font-normal\"\n            />\n          }\n        >\n          {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            defaultMonth={date}\n          />\n        </PopoverContent>\n      </Popover>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/date-picker-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { format } from \"date-fns\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nexport function DatePickerDemo() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Popover>\n      <PopoverTrigger\n        render={\n          <Button\n            variant={\"outline\"}\n            data-empty={!date}\n            className=\"w-[212px] justify-between text-left font-normal data-[empty=true]:text-muted-foreground\"\n          />\n        }\n      >\n        {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n        <ChevronDownIcon data-icon=\"inline-end\" />\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\">\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          defaultMonth={date}\n        />\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/date-picker-dob.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\n\nexport function DatePickerSimple() {\n  const [open, setOpen] = React.useState(false)\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\n\n  return (\n    <Field className=\"mx-auto w-44\">\n      <FieldLabel htmlFor=\"date\">Date of birth</FieldLabel>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              id=\"date\"\n              className=\"justify-start font-normal\"\n            />\n          }\n        >\n          {date ? date.toLocaleDateString() : \"Select date\"}\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            defaultMonth={date}\n            captionLayout=\"dropdown\"\n            onSelect={(date) => {\n              setDate(date)\n              setOpen(false)\n            }}\n          />\n        </PopoverContent>\n      </Popover>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/date-picker-input.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { CalendarIcon } from \"lucide-react\"\n\nfunction formatDate(date: Date | undefined) {\n  if (!date) {\n    return \"\"\n  }\n\n  return date.toLocaleDateString(\"en-US\", {\n    day: \"2-digit\",\n    month: \"long\",\n    year: \"numeric\",\n  })\n}\n\nfunction isValidDate(date: Date | undefined) {\n  if (!date) {\n    return false\n  }\n  return !isNaN(date.getTime())\n}\n\nexport function DatePickerInput() {\n  const [open, setOpen] = React.useState(false)\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(\"2025-06-01\")\n  )\n  const [month, setMonth] = React.useState<Date | undefined>(date)\n  const [value, setValue] = React.useState(formatDate(date))\n\n  return (\n    <Field className=\"mx-auto w-48\">\n      <FieldLabel htmlFor=\"date-required\">Subscription Date</FieldLabel>\n      <InputGroup>\n        <InputGroupInput\n          id=\"date-required\"\n          value={value}\n          placeholder=\"June 01, 2025\"\n          onChange={(e) => {\n            const date = new Date(e.target.value)\n            setValue(e.target.value)\n            if (isValidDate(date)) {\n              setDate(date)\n              setMonth(date)\n            }\n          }}\n          onKeyDown={(e) => {\n            if (e.key === \"ArrowDown\") {\n              e.preventDefault()\n              setOpen(true)\n            }\n          }}\n        />\n        <InputGroupAddon align=\"inline-end\">\n          <Popover open={open} onOpenChange={setOpen}>\n            <PopoverTrigger\n              render={\n                <InputGroupButton\n                  id=\"date-picker\"\n                  variant=\"ghost\"\n                  size=\"icon-xs\"\n                  aria-label=\"Select date\"\n                />\n              }\n            >\n              <CalendarIcon />\n              <span className=\"sr-only\">Select date</span>\n            </PopoverTrigger>\n            <PopoverContent\n              className=\"w-auto overflow-hidden p-0\"\n              align=\"end\"\n              alignOffset={-8}\n              sideOffset={10}\n            >\n              <Calendar\n                mode=\"single\"\n                selected={date}\n                month={month}\n                onMonthChange={setMonth}\n                onSelect={(date) => {\n                  setDate(date)\n                  setValue(formatDate(date))\n                  setOpen(false)\n                }}\n              />\n            </PopoverContent>\n          </Popover>\n        </InputGroupAddon>\n      </InputGroup>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/date-picker-natural-language.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { parseDate } from \"chrono-node\"\nimport { CalendarIcon } from \"lucide-react\"\n\nfunction formatDate(date: Date | undefined) {\n  if (!date) {\n    return \"\"\n  }\n\n  return date.toLocaleDateString(\"en-US\", {\n    day: \"2-digit\",\n    month: \"long\",\n    year: \"numeric\",\n  })\n}\n\nexport function DatePickerNaturalLanguage() {\n  const [open, setOpen] = React.useState(false)\n  const [value, setValue] = React.useState(\"In 2 days\")\n  const [date, setDate] = React.useState<Date | undefined>(\n    parseDate(value) || undefined\n  )\n\n  return (\n    <Field className=\"mx-auto max-w-xs\">\n      <FieldLabel htmlFor=\"date-optional\">Schedule Date</FieldLabel>\n      <InputGroup>\n        <InputGroupInput\n          id=\"date-optional\"\n          value={value}\n          placeholder=\"Tomorrow or next week\"\n          onChange={(e) => {\n            setValue(e.target.value)\n            const date = parseDate(e.target.value)\n            if (date) {\n              setDate(date)\n            }\n          }}\n          onKeyDown={(e) => {\n            if (e.key === \"ArrowDown\") {\n              e.preventDefault()\n              setOpen(true)\n            }\n          }}\n        />\n        <InputGroupAddon align=\"inline-end\">\n          <Popover open={open} onOpenChange={setOpen}>\n            <PopoverTrigger\n              render={\n                <InputGroupButton\n                  id=\"date-picker\"\n                  variant=\"ghost\"\n                  size=\"icon-xs\"\n                  aria-label=\"Select date\"\n                />\n              }\n            >\n              <CalendarIcon />\n              <span className=\"sr-only\">Select date</span>\n            </PopoverTrigger>\n            <PopoverContent\n              className=\"w-auto overflow-hidden p-0\"\n              align=\"end\"\n              sideOffset={8}\n            >\n              <Calendar\n                mode=\"single\"\n                selected={date}\n                captionLayout=\"dropdown\"\n                defaultMonth={date}\n                onSelect={(date) => {\n                  setDate(date)\n                  setValue(formatDate(date))\n                  setOpen(false)\n                }}\n              />\n            </PopoverContent>\n          </Popover>\n        </InputGroupAddon>\n      </InputGroup>\n      <div className=\"px-1 text-sm text-muted-foreground\">\n        Your post will be published on{\" \"}\n        <span className=\"font-medium\">{formatDate(date)}</span>.\n      </div>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/date-picker-range.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { addDays, format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { type DateRange } from \"react-day-picker\"\n\nexport function DatePickerWithRange() {\n  const [date, setDate] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 20),\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\n  })\n\n  return (\n    <Field className=\"mx-auto w-60\">\n      <FieldLabel htmlFor=\"date-picker-range\">Date Picker Range</FieldLabel>\n      <Popover>\n        <PopoverTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              id=\"date-picker-range\"\n              className=\"justify-start px-2.5 font-normal\"\n            />\n          }\n        >\n          <CalendarIcon data-icon=\"inline-start\" />\n          {date?.from ? (\n            date.to ? (\n              <>\n                {format(date.from, \"LLL dd, y\")} -{\" \"}\n                {format(date.to, \"LLL dd, y\")}\n              </>\n            ) : (\n              format(date.from, \"LLL dd, y\")\n            )\n          ) : (\n            <span>Pick a date</span>\n          )}\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar\n            mode=\"range\"\n            defaultMonth={date?.from}\n            selected={date}\n            onSelect={setDate}\n            numberOfMonths={2}\n          />\n        </PopoverContent>\n      </Popover>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/date-picker-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Calendar } from \"@/examples/base/ui-rtl/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui-rtl/popover\"\nimport { format } from \"date-fns\"\nimport { arSA, he } from \"date-fns/locale\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport {\n  arSA as arSADayPicker,\n  he as heDayPicker,\n} from \"react-day-picker/locale\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      placeholder: \"Pick a date\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"اختر تاريخًا\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"בחר תאריך\",\n    },\n  },\n}\n\nconst dayPickerLocales = {\n  ar: arSADayPicker,\n  he: heDayPicker,\n} as const\n\nconst dateFnsLocales = {\n  ar: arSA,\n  he: he,\n} as const\n\nexport function DatePickerRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [date, setDate] = React.useState<Date>()\n\n  const dateFnsLocale =\n    dir === \"rtl\"\n      ? dateFnsLocales[language as keyof typeof dateFnsLocales]\n      : undefined\n  const dayPickerLocale =\n    dir === \"rtl\"\n      ? dayPickerLocales[language as keyof typeof dayPickerLocales]\n      : undefined\n\n  return (\n    <Popover>\n      <PopoverTrigger\n        render={\n          <Button\n            variant={\"outline\"}\n            data-empty={!date}\n            className=\"w-[212px] justify-between text-left font-normal data-[empty=true]:text-muted-foreground\"\n            dir={dir}\n          />\n        }\n      >\n        {date ? (\n          format(date, \"PPP\", { locale: dateFnsLocale })\n        ) : (\n          <span>{t.placeholder}</span>\n        )}\n        <ChevronDownIcon data-icon=\"inline-end\" />\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\" dir={dir}>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          defaultMonth={date}\n          dir={dir}\n          locale={dayPickerLocale}\n        />\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/date-picker-time.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Calendar } from \"@/examples/base/ui/calendar\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport { format } from \"date-fns\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nexport function DatePickerTime() {\n  const [open, setOpen] = React.useState(false)\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\n\n  return (\n    <FieldGroup className=\"mx-auto max-w-xs flex-row\">\n      <Field>\n        <FieldLabel htmlFor=\"date-picker-optional\">Date</FieldLabel>\n        <Popover open={open} onOpenChange={setOpen}>\n          <PopoverTrigger\n            render={\n              <Button\n                variant=\"outline\"\n                id=\"date-picker-optional\"\n                className=\"w-32 justify-between font-normal\"\n              />\n            }\n          >\n            {date ? format(date, \"PPP\") : \"Select date\"}\n            <ChevronDownIcon data-icon=\"inline-end\" />\n          </PopoverTrigger>\n          <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n            <Calendar\n              mode=\"single\"\n              selected={date}\n              captionLayout=\"dropdown\"\n              defaultMonth={date}\n              onSelect={(date) => {\n                setDate(date)\n                setOpen(false)\n              }}\n            />\n          </PopoverContent>\n        </Popover>\n      </Field>\n      <Field className=\"w-32\">\n        <FieldLabel htmlFor=\"time-picker-optional\">Time</FieldLabel>\n        <Input\n          type=\"time\"\n          id=\"time-picker-optional\"\n          step=\"1\"\n          defaultValue=\"10:30:00\"\n          className=\"appearance-none bg-background [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n        />\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dialog-close-button.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/base/ui/dialog\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { Label } from \"@/examples/base/ui/label\"\n\nexport function DialogCloseButton() {\n  return (\n    <Dialog>\n      <DialogTrigger render={<Button variant=\"outline\" />}>Share</DialogTrigger>\n      <DialogContent className=\"sm:max-w-md\">\n        <DialogHeader>\n          <DialogTitle>Share link</DialogTitle>\n          <DialogDescription>\n            Anyone who has this link will be able to view this.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"flex items-center gap-2\">\n          <div className=\"grid flex-1 gap-2\">\n            <Label htmlFor=\"link\" className=\"sr-only\">\n              Link\n            </Label>\n            <Input\n              id=\"link\"\n              defaultValue=\"https://ui.shadcn.com/docs/installation\"\n              readOnly\n            />\n          </div>\n        </div>\n        <DialogFooter className=\"sm:justify-start\">\n          <DialogClose render={<Button type=\"button\" />}>Close</DialogClose>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dialog-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/base/ui/dialog\"\nimport { Field, FieldGroup } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { Label } from \"@/examples/base/ui/label\"\n\nexport function DialogDemo() {\n  return (\n    <Dialog>\n      <form>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-sm\">\n          <DialogHeader>\n            <DialogTitle>Edit profile</DialogTitle>\n            <DialogDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </DialogDescription>\n          </DialogHeader>\n          <FieldGroup>\n            <Field>\n              <Label htmlFor=\"name-1\">Name</Label>\n              <Input id=\"name-1\" name=\"name\" defaultValue=\"Pedro Duarte\" />\n            </Field>\n            <Field>\n              <Label htmlFor=\"username-1\">Username</Label>\n              <Input id=\"username-1\" name=\"username\" defaultValue=\"@peduarte\" />\n            </Field>\n          </FieldGroup>\n          <DialogFooter>\n            <DialogClose render={<Button variant=\"outline\" />}>\n              Cancel\n            </DialogClose>\n            <Button type=\"submit\">Save changes</Button>\n          </DialogFooter>\n        </DialogContent>\n      </form>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dialog-no-close-button.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/base/ui/dialog\"\n\nexport function DialogNoCloseButton() {\n  return (\n    <Dialog>\n      <DialogTrigger render={<Button variant=\"outline\" />}>\n        No Close Button\n      </DialogTrigger>\n      <DialogContent showCloseButton={false}>\n        <DialogHeader>\n          <DialogTitle>No Close Button</DialogTitle>\n          <DialogDescription>\n            This dialog doesn&apos;t have a close button in the top-right\n            corner.\n          </DialogDescription>\n        </DialogHeader>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dialog-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/base/ui-rtl/dialog\"\nimport { Field, FieldGroup } from \"@/examples/base/ui-rtl/field\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport { Label } from \"@/examples/base/ui-rtl/label\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      openDialog: \"Open Dialog\",\n      editProfile: \"Edit profile\",\n      description:\n        \"Make changes to your profile here. Click save when you're done.\",\n      name: \"Name\",\n      username: \"Username\",\n      cancel: \"Cancel\",\n      saveChanges: \"Save changes\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      openDialog: \"فتح الحوار\",\n      editProfile: \"تعديل الملف الشخصي\",\n      description:\n        \"قم بإجراء تغييرات على ملفك الشخصي هنا. انقر فوق حفظ عند الانتهاء.\",\n      name: \"الاسم\",\n      username: \"اسم المستخدم\",\n      cancel: \"إلغاء\",\n      saveChanges: \"حفظ التغييرات\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      openDialog: \"פתח דיאלוג\",\n      editProfile: \"ערוך פרופיל\",\n      description: \"בצע שינויים בפרופיל שלך כאן. לחץ על שמור כשתסיים.\",\n      name: \"שם\",\n      username: \"שם משתמש\",\n      cancel: \"בטל\",\n      saveChanges: \"שמור שינויים\",\n    },\n  },\n}\n\nexport function DialogRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <Dialog>\n      <form>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          {t.openDialog}\n        </DialogTrigger>\n        <DialogContent\n          className=\"sm:max-w-sm\"\n          dir={dir}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <DialogHeader>\n            <DialogTitle>{t.editProfile}</DialogTitle>\n            <DialogDescription>{t.description}</DialogDescription>\n          </DialogHeader>\n          <FieldGroup>\n            <Field>\n              <Label htmlFor=\"name-1\">{t.name}</Label>\n              <Input id=\"name-1\" name=\"name\" defaultValue=\"Pedro Duarte\" />\n            </Field>\n            <Field>\n              <Label htmlFor=\"username-1\">{t.username}</Label>\n              <Input id=\"username-1\" name=\"username\" defaultValue=\"@peduarte\" />\n            </Field>\n          </FieldGroup>\n          <DialogFooter>\n            <DialogClose render={<Button variant=\"outline\" />}>\n              {t.cancel}\n            </DialogClose>\n            <Button type=\"submit\">{t.saveChanges}</Button>\n          </DialogFooter>\n        </DialogContent>\n      </form>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dialog-scrollable-content.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/base/ui/dialog\"\n\nexport function DialogScrollableContent() {\n  return (\n    <Dialog>\n      <DialogTrigger render={<Button variant=\"outline\" />}>\n        Scrollable Content\n      </DialogTrigger>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>Scrollable Content</DialogTitle>\n          <DialogDescription>\n            This is a dialog with scrollable content.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"-mx-4 no-scrollbar max-h-[50vh] overflow-y-auto px-4\">\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p key={index} className=\"mb-4 leading-normal\">\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dialog-sticky-footer.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/base/ui/dialog\"\n\nexport function DialogStickyFooter() {\n  return (\n    <Dialog>\n      <DialogTrigger render={<Button variant=\"outline\" />}>\n        Sticky Footer\n      </DialogTrigger>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>Sticky Footer</DialogTitle>\n          <DialogDescription>\n            This dialog has a sticky footer that stays visible while the content\n            scrolls.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"-mx-4 no-scrollbar max-h-[50vh] overflow-y-auto px-4\">\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p key={index} className=\"mb-4 leading-normal\">\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n        <DialogFooter>\n          <DialogClose render={<Button variant=\"outline\" />}>Close</DialogClose>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/drawer-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/base/ui/drawer\"\nimport { Minus, Plus } from \"lucide-react\"\nimport { Bar, BarChart, ResponsiveContainer } from \"recharts\"\n\nconst data = [\n  {\n    goal: 400,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 239,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 349,\n  },\n]\n\nexport function DrawerDemo() {\n  const [goal, setGoal] = React.useState(350)\n\n  function onClick(adjustment: number) {\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\n  }\n\n  return (\n    <Drawer>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Open Drawer</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <div className=\"mx-auto w-full max-w-sm\">\n          <DrawerHeader>\n            <DrawerTitle>Move Goal</DrawerTitle>\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"p-4 pb-0\">\n            <div className=\"flex items-center justify-center space-x-2\">\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(-10)}\n                disabled={goal <= 200}\n              >\n                <Minus />\n                <span className=\"sr-only\">Decrease</span>\n              </Button>\n              <div className=\"flex-1 text-center\">\n                <div className=\"text-7xl font-bold tracking-tighter\">\n                  {goal}\n                </div>\n                <div className=\"text-[0.70rem] text-muted-foreground uppercase\">\n                  Calories/day\n                </div>\n              </div>\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(10)}\n                disabled={goal >= 400}\n              >\n                <Plus />\n                <span className=\"sr-only\">Increase</span>\n              </Button>\n            </div>\n            <div className=\"mt-3 h-[120px]\">\n              <ResponsiveContainer width=\"100%\" height=\"100%\">\n                <BarChart data={data}>\n                  <Bar\n                    dataKey=\"goal\"\n                    style={\n                      {\n                        fill: \"var(--chart-1)\",\n                      } as React.CSSProperties\n                    }\n                  />\n                </BarChart>\n              </ResponsiveContainer>\n            </div>\n          </div>\n          <DrawerFooter>\n            <Button>Submit</Button>\n            <DrawerClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </div>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/drawer-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/base/ui/dialog\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/base/ui/drawer\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { Label } from \"@/examples/base/ui/label\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\n\nexport function DrawerDialogDemo() {\n  const [open, setOpen] = React.useState(false)\n  const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n\n  if (isDesktop) {\n    return (\n      <Dialog open={open} onOpenChange={setOpen}>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Edit Profile\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Edit profile</DialogTitle>\n            <DialogDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </DialogDescription>\n          </DialogHeader>\n          <ProfileForm />\n        </DialogContent>\n      </Dialog>\n    )\n  }\n\n  return (\n    <Drawer open={open} onOpenChange={setOpen}>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Edit Profile</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader className=\"text-left\">\n          <DrawerTitle>Edit profile</DrawerTitle>\n          <DrawerDescription>\n            Make changes to your profile here. Click save when you&apos;re done.\n          </DrawerDescription>\n        </DrawerHeader>\n        <ProfileForm className=\"px-4\" />\n        <DrawerFooter className=\"pt-2\">\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Cancel</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n\nfunction ProfileForm({ className }: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"grid items-start gap-6\", className)}>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"email\">Email</Label>\n        <Input type=\"email\" id=\"email\" defaultValue=\"shadcn@example.com\" />\n      </div>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"username\">Username</Label>\n        <Input id=\"username\" defaultValue=\"@shadcn\" />\n      </div>\n      <Button type=\"submit\">Save changes</Button>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/drawer-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/base/ui-rtl/drawer\"\nimport { Minus, Plus } from \"lucide-react\"\nimport { Bar, BarChart, ResponsiveContainer, XAxis } from \"recharts\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst data = [\n  {\n    goal: 400,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 239,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 349,\n  },\n]\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    locale: \"en-US\",\n    values: {\n      trigger: \"Open Drawer\",\n      title: \"Move Goal\",\n      description: \"Set your daily activity goal.\",\n      caloriesPerDay: \"Calories/day\",\n      decrease: \"Decrease\",\n      increase: \"Increase\",\n      submit: \"Submit\",\n      cancel: \"Cancel\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    locale: \"ar-EG\",\n    values: {\n      trigger: \"فتح الدرج\",\n      title: \"نقل الهدف\",\n      description: \"حدد هدف نشاطك اليومي.\",\n      caloriesPerDay: \"سعرات حرارية/يوم\",\n      decrease: \"تقليل\",\n      increase: \"زيادة\",\n      submit: \"إرسال\",\n      cancel: \"إلغاء\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    locale: \"he-IL\",\n    values: {\n      trigger: \"פתח מגירה\",\n      title: \"הזז מטרה\",\n      description: \"הגדר את יעד הפעילות היומי שלך.\",\n      caloriesPerDay: \"קלוריות/יום\",\n      decrease: \"הקטן\",\n      increase: \"הגדל\",\n      submit: \"שלח\",\n      cancel: \"בטל\",\n    },\n  },\n}\n\nexport function DrawerRtl() {\n  const { dir, locale, language, t } = useTranslation(translations, \"ar\")\n  const [goal, setGoal] = React.useState(350)\n\n  function onClick(adjustment: number) {\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\n  }\n\n  return (\n    <Drawer>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">{t.trigger}</Button>\n      </DrawerTrigger>\n      <DrawerContent dir={dir} data-lang={dir === \"rtl\" ? language : undefined}>\n        <div className=\"mx-auto w-full max-w-sm\">\n          <DrawerHeader>\n            <DrawerTitle>{t.title}</DrawerTitle>\n            <DrawerDescription>{t.description}</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"p-4 pb-0\">\n            <div className=\"flex items-center justify-center space-x-2\">\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(-10)}\n                disabled={goal <= 200}\n              >\n                <Minus />\n                <span className=\"sr-only\">{t.decrease}</span>\n              </Button>\n              <div className=\"flex-1 text-center\">\n                <div className=\"text-7xl font-bold tracking-tighter\">\n                  {goal.toLocaleString(locale)}\n                </div>\n                <div className=\"text-[0.70rem] text-muted-foreground uppercase\">\n                  {t.caloriesPerDay}\n                </div>\n              </div>\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(10)}\n                disabled={goal >= 400}\n              >\n                <Plus />\n                <span className=\"sr-only\">{t.increase}</span>\n              </Button>\n            </div>\n            <div className=\"mt-3 h-[120px]\">\n              <ResponsiveContainer width=\"100%\" height=\"100%\">\n                <BarChart data={data}>\n                  <XAxis\n                    dataKey=\"goal\"\n                    tickLine={false}\n                    tickMargin={10}\n                    axisLine={false}\n                    tickFormatter={(value) => value.toLocaleString(locale)}\n                    reversed={dir === \"rtl\"}\n                  />\n                  <Bar\n                    dataKey=\"goal\"\n                    style={\n                      {\n                        fill: \"var(--chart-2)\",\n                      } as React.CSSProperties\n                    }\n                  />\n                </BarChart>\n              </ResponsiveContainer>\n            </div>\n          </div>\n          <DrawerFooter>\n            <Button>{t.submit}</Button>\n            <DrawerClose asChild>\n              <Button variant=\"outline\">{t.cancel}</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </div>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/drawer-scrollable-content.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/base/ui/drawer\"\n\nexport function DrawerScrollableContent() {\n  return (\n    <Drawer direction=\"right\">\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Scrollable Content</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader>\n          <DrawerTitle>Move Goal</DrawerTitle>\n          <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n        </DrawerHeader>\n        <div className=\"no-scrollbar overflow-y-auto px-4\">\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p key={index} className=\"mb-4 leading-normal\">\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n        <DrawerFooter>\n          <Button>Submit</Button>\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Cancel</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/drawer-sides.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/base/ui/drawer\"\n\nconst DRAWER_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nexport function DrawerWithSides() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {DRAWER_SIDES.map((side) => (\n        <Drawer\n          key={side}\n          direction={\n            side === \"bottom\" ? undefined : (side as \"top\" | \"right\" | \"left\")\n          }\n        >\n          <DrawerTrigger asChild>\n            <Button variant=\"outline\" className=\"capitalize\">\n              {side}\n            </Button>\n          </DrawerTrigger>\n          <DrawerContent className=\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\">\n            <DrawerHeader>\n              <DrawerTitle>Move Goal</DrawerTitle>\n              <DrawerDescription>\n                Set your daily activity goal.\n              </DrawerDescription>\n            </DrawerHeader>\n            <div className=\"no-scrollbar overflow-y-auto px-4\">\n              {Array.from({ length: 10 }).map((_, index) => (\n                <p key={index} className=\"mb-4 leading-normal\">\n                  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                  do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n                  Ut enim ad minim veniam, quis nostrud exercitation ullamco\n                  laboris nisi ut aliquip ex ea commodo consequat. Duis aute\n                  irure dolor in reprehenderit in voluptate velit esse cillum\n                  dolore eu fugiat nulla pariatur. Excepteur sint occaecat\n                  cupidatat non proident, sunt in culpa qui officia deserunt\n                  mollit anim id est laborum.\n                </p>\n              ))}\n            </div>\n            <DrawerFooter>\n              <Button>Submit</Button>\n              <DrawerClose asChild>\n                <Button variant=\"outline\">Cancel</Button>\n              </DrawerClose>\n            </DrawerFooter>\n          </DrawerContent>\n        </Drawer>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-avatar.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  BadgeCheckIcon,\n  BellIcon,\n  CreditCardIcon,\n  LogOutIcon,\n} from \"lucide-react\"\n\nexport function DropdownMenuAvatar() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger\n        render={<Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\" />}\n      >\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"shadcn\" />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <BadgeCheckIcon />\n            Account\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <CreditCardIcon />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <BellIcon />\n            Notifications\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          <LogOutIcon />\n          Sign Out\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-basic.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\n\nexport function DropdownMenuBasic() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Open\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>My Account</DropdownMenuLabel>\n          <DropdownMenuItem>Profile</DropdownMenuItem>\n          <DropdownMenuItem>Billing</DropdownMenuItem>\n          <DropdownMenuItem>Settings</DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>GitHub</DropdownMenuItem>\n        <DropdownMenuItem>Support</DropdownMenuItem>\n        <DropdownMenuItem disabled>API</DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-checkboxes-icons.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport { BellIcon, MailIcon, MessageSquareIcon } from \"lucide-react\"\n\nexport function DropdownMenuCheckboxesIcons() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Notifications\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-48\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={notifications.email}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, email: checked === true })\n            }\n          >\n            <MailIcon />\n            Email notifications\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={notifications.sms}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, sms: checked === true })\n            }\n          >\n            <MessageSquareIcon />\n            SMS notifications\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={notifications.push}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, push: checked === true })\n            }\n          >\n            <BellIcon />\n            Push notifications\n          </DropdownMenuCheckboxItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-checkboxes.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\n\nexport function DropdownMenuCheckboxes() {\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\n  const [showPanel, setShowPanel] = React.useState(false)\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Open\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-40\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={showStatusBar ?? false}\n            onCheckedChange={setShowStatusBar}\n          >\n            Status Bar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showActivityBar}\n            onCheckedChange={setShowActivityBar}\n            disabled\n          >\n            Activity Bar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showPanel}\n            onCheckedChange={setShowPanel}\n          >\n            Panel\n          </DropdownMenuCheckboxItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-complex.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  BellIcon,\n  CreditCardIcon,\n  DownloadIcon,\n  EyeIcon,\n  FileCodeIcon,\n  FileIcon,\n  FileTextIcon,\n  FolderIcon,\n  FolderOpenIcon,\n  FolderSearchIcon,\n  HelpCircleIcon,\n  KeyboardIcon,\n  LanguagesIcon,\n  LayoutIcon,\n  LogOutIcon,\n  MailIcon,\n  MonitorIcon,\n  MoonIcon,\n  MoreHorizontalIcon,\n  PaletteIcon,\n  SaveIcon,\n  SettingsIcon,\n  ShieldIcon,\n  SunIcon,\n  UserIcon,\n} from \"lucide-react\"\n\nexport function DropdownMenuComplex() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Complex Menu\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-44\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>File</DropdownMenuLabel>\n          <DropdownMenuItem>\n            <FileIcon />\n            New File\n            <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <FolderIcon />\n            New Folder\n            <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>\n              <FolderOpenIcon />\n              Open Recent\n            </DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\n                  <DropdownMenuItem>\n                    <FileCodeIcon />\n                    Project Alpha\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <FileCodeIcon />\n                    Project Beta\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <MoreHorizontalIcon />\n                      More Projects\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuItem>\n                          <FileCodeIcon />\n                          Project Gamma\n                        </DropdownMenuItem>\n                        <DropdownMenuItem>\n                          <FileCodeIcon />\n                          Project Delta\n                        </DropdownMenuItem>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <FolderSearchIcon />\n                    Browse...\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem>\n            <SaveIcon />\n            Save\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <DownloadIcon />\n            Export\n            <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>View</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={notifications.email}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, email: checked === true })\n            }\n          >\n            <EyeIcon />\n            Show Sidebar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={notifications.sms}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, sms: checked === true })\n            }\n          >\n            <LayoutIcon />\n            Show Status Bar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>\n              <PaletteIcon />\n              Theme\n            </DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n                  <DropdownMenuRadioGroup\n                    value={theme}\n                    onValueChange={setTheme}\n                  >\n                    <DropdownMenuRadioItem value=\"light\">\n                      <SunIcon />\n                      Light\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"dark\">\n                      <MoonIcon />\n                      Dark\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"system\">\n                      <MonitorIcon />\n                      System\n                    </DropdownMenuRadioItem>\n                  </DropdownMenuRadioGroup>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Account</DropdownMenuLabel>\n          <DropdownMenuItem>\n            <UserIcon />\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <CreditCardIcon />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>\n              <SettingsIcon />\n              Settings\n            </DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Preferences</DropdownMenuLabel>\n                  <DropdownMenuItem>\n                    <KeyboardIcon />\n                    Keyboard Shortcuts\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <LanguagesIcon />\n                    Language\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <BellIcon />\n                      Notifications\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuGroup>\n                          <DropdownMenuLabel>\n                            Notification Types\n                          </DropdownMenuLabel>\n                          <DropdownMenuCheckboxItem\n                            checked={notifications.push}\n                            onCheckedChange={(checked) =>\n                              setNotifications({\n                                ...notifications,\n                                push: checked === true,\n                              })\n                            }\n                          >\n                            <BellIcon />\n                            Push Notifications\n                          </DropdownMenuCheckboxItem>\n                          <DropdownMenuCheckboxItem\n                            checked={notifications.email}\n                            onCheckedChange={(checked) =>\n                              setNotifications({\n                                ...notifications,\n                                email: checked === true,\n                              })\n                            }\n                          >\n                            <MailIcon />\n                            Email Notifications\n                          </DropdownMenuCheckboxItem>\n                        </DropdownMenuGroup>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <ShieldIcon />\n                    Privacy & Security\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <HelpCircleIcon />\n            Help & Support\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <FileTextIcon />\n            Documentation\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem variant=\"destructive\">\n            <LogOutIcon />\n            Sign Out\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-demo.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\n\nexport function DropdownMenuDemo() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Open\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-40\" align=\"start\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>My Account</DropdownMenuLabel>\n          <DropdownMenuItem>\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Billing\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Settings\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>Team</DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuItem>Email</DropdownMenuItem>\n                <DropdownMenuItem>Message</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>More...</DropdownMenuItem>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuItem>\n            New Team\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>GitHub</DropdownMenuItem>\n          <DropdownMenuItem>Support</DropdownMenuItem>\n          <DropdownMenuItem disabled>API</DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            Log out\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-destructive.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport { PencilIcon, ShareIcon, TrashIcon } from \"lucide-react\"\n\nexport function DropdownMenuDestructive() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Actions\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <PencilIcon />\n            Edit\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <ShareIcon />\n            Share\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem variant=\"destructive\">\n            <TrashIcon />\n            Delete\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-icons.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  CreditCardIcon,\n  LogOutIcon,\n  SettingsIcon,\n  UserIcon,\n} from \"lucide-react\"\n\nexport function DropdownMenuIcons() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Open\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuItem>\n          <UserIcon />\n          Profile\n        </DropdownMenuItem>\n        <DropdownMenuItem>\n          <CreditCardIcon />\n          Billing\n        </DropdownMenuItem>\n        <DropdownMenuItem>\n          <SettingsIcon />\n          Settings\n        </DropdownMenuItem>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem variant=\"destructive\">\n          <LogOutIcon />\n          Log out\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\n\nexport function DropdownMenuRadioGroupDemo() {\n  const [position, setPosition] = React.useState(\"bottom\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Open\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-32\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\n          <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\n            <DropdownMenuRadioItem value=\"top\">Top</DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"bottom\">Bottom</DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"right\">Right</DropdownMenuRadioItem>\n          </DropdownMenuRadioGroup>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-radio-icons.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport { Building2Icon, CreditCardIcon, WalletIcon } from \"lucide-react\"\n\nexport function DropdownMenuRadioIcons() {\n  const [paymentMethod, setPaymentMethod] = React.useState(\"card\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Payment Method\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"min-w-56\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\n          <DropdownMenuRadioGroup\n            value={paymentMethod}\n            onValueChange={setPaymentMethod}\n          >\n            <DropdownMenuRadioItem value=\"card\">\n              <CreditCardIcon />\n              Credit Card\n            </DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"paypal\">\n              <WalletIcon />\n              PayPal\n            </DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"bank\">\n              <Building2Icon />\n              Bank Transfer\n            </DropdownMenuRadioItem>\n          </DropdownMenuRadioGroup>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport { CreditCardIcon, SettingsIcon, UserIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      open: \"Open\",\n      account: \"Account\",\n      profile: \"Profile\",\n      billing: \"Billing\",\n      settings: \"Settings\",\n      logout: \"Log out\",\n      team: \"Team\",\n      inviteUsers: \"Invite users\",\n      email: \"Email\",\n      message: \"Message\",\n      more: \"More\",\n      calendar: \"Calendar\",\n      chat: \"Chat\",\n      webhook: \"Webhook\",\n      advanced: \"Advanced...\",\n      newTeam: \"New Team\",\n      view: \"View\",\n      statusBar: \"Status Bar\",\n      activityBar: \"Activity Bar\",\n      panel: \"Panel\",\n      position: \"Position\",\n      top: \"Top\",\n      bottom: \"Bottom\",\n      right: \"Right\",\n      left: \"Left\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      open: \"افتح القائمة\",\n      account: \"الحساب\",\n      profile: \"الملف الشخصي\",\n      billing: \"الفوترة\",\n      settings: \"الإعدادات\",\n      logout: \"تسجيل الخروج\",\n      team: \"الفريق\",\n      inviteUsers: \"دعوة المستخدمين\",\n      email: \"البريد الإلكتروني\",\n      message: \"رسالة\",\n      more: \"المزيد\",\n      calendar: \"تقويم\",\n      chat: \"دردشة\",\n      webhook: \"خطاف ويب\",\n      advanced: \"متقدم...\",\n      newTeam: \"فريق جديد\",\n      view: \"عرض\",\n      statusBar: \"شريط الحالة\",\n      activityBar: \"شريط النشاط\",\n      panel: \"اللوحة\",\n      position: \"الموضع\",\n      top: \"أعلى\",\n      bottom: \"أسفل\",\n      right: \"يمين\",\n      left: \"يسار\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      open: \"פתח תפריט\",\n      account: \"חשבון\",\n      profile: \"פרופיל\",\n      billing: \"חיוב\",\n      settings: \"הגדרות\",\n      logout: \"התנתק\",\n      team: \"הצוות\",\n      inviteUsers: \"הזמן משתמשים\",\n      email: \"אימייל\",\n      message: \"הודעה\",\n      more: \"עוד\",\n      calendar: \"יומן\",\n      chat: \"צ'אט\",\n      webhook: \"Webhook\",\n      advanced: \"מתקדם...\",\n      newTeam: \"צוות חדש\",\n      view: \"תצוגה\",\n      statusBar: \"שורת סטטוס\",\n      activityBar: \"שורת פעילות\",\n      panel: \"לוח\",\n      position: \"מיקום\",\n      top: \"למעלה\",\n      bottom: \"למטה\",\n      right: \"ימין\",\n      left: \"שמאל\",\n    },\n  },\n}\n\nexport function DropdownMenuRtl() {\n  const { dir, language, t } = useTranslation(translations, \"ar\")\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\n  const [showPanel, setShowPanel] = React.useState(false)\n  const [position, setPosition] = React.useState(\"bottom\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        {t.open}\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        align={dir === \"rtl\" ? \"end\" : \"start\"}\n        dir={dir}\n        className=\"w-36\"\n        data-lang={dir === \"rtl\" ? language : undefined}\n      >\n        <DropdownMenuGroup>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>{t.account}</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent\n                dir={dir}\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <UserIcon />\n                    {t.profile}\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <CreditCardIcon />\n                    {t.billing}\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <SettingsIcon />\n                    {t.settings}\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>{t.team}</DropdownMenuLabel>\n          <DropdownMenuItem>{t.team}</DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>{t.inviteUsers}</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent\n                dir={dir}\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <DropdownMenuItem>{t.email}</DropdownMenuItem>\n                <DropdownMenuItem>{t.message}</DropdownMenuItem>\n                <DropdownMenuSub>\n                  <DropdownMenuSubTrigger>{t.more}</DropdownMenuSubTrigger>\n                  <DropdownMenuPortal>\n                    <DropdownMenuSubContent\n                      dir={dir}\n                      data-lang={dir === \"rtl\" ? language : undefined}\n                    >\n                      <DropdownMenuItem>{t.calendar}</DropdownMenuItem>\n                      <DropdownMenuItem>{t.chat}</DropdownMenuItem>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuItem>{t.webhook}</DropdownMenuItem>\n                    </DropdownMenuSubContent>\n                  </DropdownMenuPortal>\n                </DropdownMenuSub>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>{t.advanced}</DropdownMenuItem>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuItem>\n            {t.newTeam}\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>{t.view}</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={showStatusBar}\n            onCheckedChange={setShowStatusBar}\n          >\n            {t.statusBar}\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showActivityBar}\n            onCheckedChange={setShowActivityBar}\n          >\n            {t.activityBar}\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showPanel}\n            onCheckedChange={setShowPanel}\n          >\n            {t.panel}\n          </DropdownMenuCheckboxItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>{t.position}</DropdownMenuLabel>\n          <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\n            <DropdownMenuRadioItem value=\"top\">{t.top}</DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"bottom\">\n              {t.bottom}\n            </DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"right\">\n              {t.right}\n            </DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"left\">{t.left}</DropdownMenuRadioItem>\n          </DropdownMenuRadioGroup>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem variant=\"destructive\">{t.logout}</DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-shortcuts.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\n\nexport function DropdownMenuShortcuts() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Open\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>My Account</DropdownMenuLabel>\n          <DropdownMenuItem>\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Billing\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Settings\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          Log out\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/dropdown-menu-submenu.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuPortal,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\n\nexport function DropdownMenuSubmenu() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Open\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuGroup>\n          <DropdownMenuItem>Team</DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuItem>Email</DropdownMenuItem>\n                <DropdownMenuItem>Message</DropdownMenuItem>\n                <DropdownMenuSub>\n                  <DropdownMenuSubTrigger>More options</DropdownMenuSubTrigger>\n                  <DropdownMenuPortal>\n                    <DropdownMenuSubContent>\n                      <DropdownMenuItem>Calendly</DropdownMenuItem>\n                      <DropdownMenuItem>Slack</DropdownMenuItem>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuItem>Webhook</DropdownMenuItem>\n                    </DropdownMenuSubContent>\n                  </DropdownMenuPortal>\n                </DropdownMenuSub>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>Advanced...</DropdownMenuItem>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuItem>\n            New Team\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/empty-avatar-group.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui/empty\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport default function EmptyAvatarGroup() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia>\n          <div className=\"flex -space-x-2 *:data-[slot=avatar]:size-12 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </div>\n        </EmptyMedia>\n        <EmptyTitle>No Team Members</EmptyTitle>\n        <EmptyDescription>\n          Invite your team to collaborate on this project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button size=\"sm\">\n          <PlusIcon />\n          Invite Members\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/empty-avatar.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui/empty\"\n\nexport default function EmptyAvatar() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia variant=\"default\">\n          <Avatar className=\"size-12\">\n            <AvatarImage\n              src=\"https://github.com/shadcn.png\"\n              className=\"grayscale\"\n            />\n            <AvatarFallback>LR</AvatarFallback>\n          </Avatar>\n        </EmptyMedia>\n        <EmptyTitle>User Offline</EmptyTitle>\n        <EmptyDescription>\n          This user is currently offline. You can leave a message to notify them\n          or try again later.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button size=\"sm\">Leave Message</Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/empty-background.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui/empty\"\nimport { IconBell } from \"@tabler/icons-react\"\nimport { RefreshCcwIcon } from \"lucide-react\"\n\nexport function EmptyMuted() {\n  return (\n    <Empty className=\"h-full bg-muted/30\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconBell />\n        </EmptyMedia>\n        <EmptyTitle>No Notifications</EmptyTitle>\n        <EmptyDescription className=\"max-w-xs text-pretty\">\n          You&apos;re all caught up. New notifications will appear here.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\">\n          <RefreshCcwIcon data-icon=\"inline-start\" />\n          Refresh\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/empty-card.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui/empty\"\nimport { ArrowUpRightIcon, FolderIcon } from \"lucide-react\"\n\nexport function EmptyInCard() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <FolderIcon />\n        </EmptyMedia>\n        <EmptyTitle>No projects yet</EmptyTitle>\n        <EmptyDescription>\n          You haven&apos;t created any projects yet. Get started by creating\n          your first project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <div className=\"flex gap-2\">\n          <Button render={<a href=\"#\" />} nativeButton={false}>\n            Create project\n          </Button>\n          <Button variant=\"outline\">Import project</Button>\n        </div>\n        <Button\n          variant=\"link\"\n          render={<a href=\"#\" />}\n          className=\"text-muted-foreground\"\n          nativeButton={false}\n        >\n          Learn more <ArrowUpRightIcon />\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/empty-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui/empty\"\nimport { IconFolderCode } from \"@tabler/icons-react\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nexport default function EmptyDemo() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconFolderCode />\n        </EmptyMedia>\n        <EmptyTitle>No Projects Yet</EmptyTitle>\n        <EmptyDescription>\n          You haven&apos;t created any projects yet. Get started by creating\n          your first project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent className=\"flex-row justify-center gap-2\">\n        <Button>Create Project</Button>\n        <Button variant=\"outline\">Import Project</Button>\n      </EmptyContent>\n      <Button\n        variant=\"link\"\n        render={<a href=\"#\" />}\n        className=\"text-muted-foreground\"\n        size=\"sm\"\n        nativeButton={false}\n      >\n        Learn More <ArrowUpRightIcon />\n      </Button>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/empty-input-group.tsx",
    "content": "import {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyTitle,\n} from \"@/examples/base/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Kbd } from \"@/examples/base/ui/kbd\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport default function EmptyInputGroup() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyTitle>404 - Not Found</EmptyTitle>\n        <EmptyDescription>\n          The page you&apos;re looking for doesn&apos;t exist. Try searching for\n          what you need below.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <InputGroup className=\"sm:w-3/4\">\n          <InputGroupInput placeholder=\"Try searching for pages...\" />\n          <InputGroupAddon>\n            <SearchIcon />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <Kbd>/</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <EmptyDescription>\n          Need help? <a href=\"#\">Contact support</a>\n        </EmptyDescription>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/empty-outline.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui/empty\"\nimport { IconCloud } from \"@tabler/icons-react\"\n\nexport default function EmptyOutline() {\n  return (\n    <Empty className=\"border border-dashed\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconCloud />\n        </EmptyMedia>\n        <EmptyTitle>Cloud Storage Empty</EmptyTitle>\n        <EmptyDescription>\n          Upload files to your cloud storage to access them anywhere.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          Upload Files\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/empty-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui-rtl/empty\"\nimport { IconFolderCode } from \"@tabler/icons-react\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"No Projects Yet\",\n      description:\n        \"You haven't created any projects yet. Get started by creating your first project.\",\n      createProject: \"Create Project\",\n      importProject: \"Import Project\",\n      learnMore: \"Learn More\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"لا توجد مشاريع بعد\",\n      description: \"لم تقم بإنشاء أي مشاريع بعد. ابدأ بإنشاء مشروعك الأول.\",\n      createProject: \"إنشاء مشروع\",\n      importProject: \"استيراد مشروع\",\n      learnMore: \"تعرف على المزيد\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"אין פרויקטים עדיין\",\n      description:\n        \"עדיין לא יצרת פרויקטים. התחל על ידי יצירת הפרויקט הראשון שלך.\",\n      createProject: \"צור פרויקט\",\n      importProject: \"ייבא פרויקט\",\n      learnMore: \"למד עוד\",\n    },\n  },\n}\n\nexport function EmptyRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Empty dir={dir}>\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconFolderCode />\n        </EmptyMedia>\n        <EmptyTitle>{t.title}</EmptyTitle>\n        <EmptyDescription>{t.description}</EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent className=\"flex-row justify-center gap-2\">\n        <Button>{t.createProject}</Button>\n        <Button variant=\"outline\">{t.importProject}</Button>\n      </EmptyContent>\n      <Button\n        variant=\"link\"\n        render={<a href=\"#\" />}\n        className=\"text-muted-foreground\"\n        size=\"sm\"\n        nativeButton={false}\n      >\n        {t.learnMore}{\" \"}\n        <ArrowUpRightIcon className=\"rtl:rotate-270\" data-icon=\"inline-end\" />\n      </Button>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-checkbox.tsx",
    "content": "import { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\n\nexport function FieldCheckbox() {\n  return (\n    <FieldGroup className=\"w-full max-w-xs\">\n      <FieldSet>\n        <FieldLegend variant=\"label\">\n          Show these items on the desktop\n        </FieldLegend>\n        <FieldDescription>\n          Select the items you want to show on the desktop.\n        </FieldDescription>\n        <FieldGroup className=\"gap-3\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"finder-pref-9k2-hard-disks-ljj\" />\n            <FieldLabel\n              htmlFor=\"finder-pref-9k2-hard-disks-ljj\"\n              className=\"font-normal\"\n              defaultChecked\n            >\n              Hard disks\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"finder-pref-9k2-external-disks-1yg\" />\n            <FieldLabel\n              htmlFor=\"finder-pref-9k2-external-disks-1yg\"\n              className=\"font-normal\"\n            >\n              External disks\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"finder-pref-9k2-cds-dvds-fzt\" />\n            <FieldLabel\n              htmlFor=\"finder-pref-9k2-cds-dvds-fzt\"\n              className=\"font-normal\"\n            >\n              CDs, DVDs, and iPods\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"finder-pref-9k2-connected-servers-6l2\" />\n            <FieldLabel\n              htmlFor=\"finder-pref-9k2-connected-servers-6l2\"\n              className=\"font-normal\"\n            >\n              Connected servers\n            </FieldLabel>\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n      <FieldSeparator />\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"finder-pref-9k2-sync-folders-nep\" defaultChecked />\n        <FieldContent>\n          <FieldLabel htmlFor=\"finder-pref-9k2-sync-folders-nep\">\n            Sync Desktop & Documents folders\n          </FieldLabel>\n          <FieldDescription>\n            Your Desktop & Documents folders are being synced with iCloud Drive.\n            You can access them from other devices.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-choice-card.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport default function FieldChoiceCard() {\n  return (\n    <FieldGroup className=\"w-full max-w-xs\">\n      <FieldSet>\n        <FieldLegend variant=\"label\">Compute Environment</FieldLegend>\n        <FieldDescription>\n          Select the compute environment for your cluster.\n        </FieldDescription>\n        <RadioGroup defaultValue=\"kubernetes\">\n          <FieldLabel htmlFor=\"kubernetes-r2h\">\n            <Field orientation=\"horizontal\">\n              <FieldContent>\n                <FieldTitle>Kubernetes</FieldTitle>\n                <FieldDescription>\n                  Run GPU workloads on a K8s cluster.\n                </FieldDescription>\n              </FieldContent>\n              <RadioGroupItem value=\"kubernetes\" id=\"kubernetes-r2h\" />\n            </Field>\n          </FieldLabel>\n          <FieldLabel htmlFor=\"vm-z4k\">\n            <Field orientation=\"horizontal\">\n              <FieldContent>\n                <FieldTitle>Virtual Machine</FieldTitle>\n                <FieldDescription>\n                  Access a cluster to run GPU workloads.\n                </FieldDescription>\n              </FieldContent>\n              <RadioGroupItem value=\"vm\" id=\"vm-z4k\" />\n            </Field>\n          </FieldLabel>\n        </RadioGroup>\n      </FieldSet>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\n\nconst months = [\n  { label: \"MM\", value: null },\n  { label: \"01\", value: \"01\" },\n  { label: \"02\", value: \"02\" },\n  { label: \"03\", value: \"03\" },\n  { label: \"04\", value: \"04\" },\n  { label: \"05\", value: \"05\" },\n  { label: \"06\", value: \"06\" },\n  { label: \"07\", value: \"07\" },\n  { label: \"08\", value: \"08\" },\n  { label: \"09\", value: \"09\" },\n  { label: \"10\", value: \"10\" },\n  { label: \"11\", value: \"11\" },\n  { label: \"12\", value: \"12\" },\n]\n\nconst years = [\n  { label: \"YYYY\", value: null },\n  { label: \"2024\", value: \"2024\" },\n  { label: \"2025\", value: \"2025\" },\n  { label: \"2026\", value: \"2026\" },\n  { label: \"2027\", value: \"2027\" },\n  { label: \"2028\", value: \"2028\" },\n  { label: \"2029\", value: \"2029\" },\n]\n\nexport default function FieldDemo() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <form>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>Payment Method</FieldLegend>\n            <FieldDescription>\n              All transactions are secure and encrypted\n            </FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-name-43j\">\n                  Name on Card\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-name-43j\"\n                  placeholder=\"Evil Rabbit\"\n                  required\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-number-uw1\">\n                  Card Number\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-number-uw1\"\n                  placeholder=\"1234 5678 9012 3456\"\n                  required\n                />\n                <FieldDescription>\n                  Enter your 16-digit card number\n                </FieldDescription>\n              </Field>\n              <div className=\"grid grid-cols-3 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-exp-month-ts6\">\n                    Month\n                  </FieldLabel>\n                  <Select items={months}>\n                    <SelectTrigger id=\"checkout-exp-month-ts6\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        {months.map((item) => (\n                          <SelectItem key={item.value} value={item.value}>\n                            {item.label}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-exp-year-f59\">\n                    Year\n                  </FieldLabel>\n                  <Select items={years}>\n                    <SelectTrigger id=\"checkout-7j9-exp-year-f59\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        {years.map((item) => (\n                          <SelectItem key={item.value} value={item.value}>\n                            {item.label}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-cvv\">CVV</FieldLabel>\n                  <Input id=\"checkout-7j9-cvv\" placeholder=\"123\" required />\n                </Field>\n              </div>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>Billing Address</FieldLegend>\n            <FieldDescription>\n              The billing address associated with your payment method\n            </FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  id=\"checkout-7j9-same-as-shipping-wgm\"\n                  defaultChecked\n                />\n                <FieldLabel\n                  htmlFor=\"checkout-7j9-same-as-shipping-wgm\"\n                  className=\"font-normal\"\n                >\n                  Same as shipping address\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-optional-comments\">\n                  Comments\n                </FieldLabel>\n                <Textarea\n                  id=\"checkout-7j9-optional-comments\"\n                  placeholder=\"Add any additional comments\"\n                  className=\"resize-none\"\n                />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <Field orientation=\"horizontal\">\n            <Button type=\"submit\">Submit</Button>\n            <Button variant=\"outline\" type=\"button\">\n              Cancel\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-fieldset.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function FieldFieldset() {\n  return (\n    <FieldSet className=\"w-full max-w-sm\">\n      <FieldLegend>Address Information</FieldLegend>\n      <FieldDescription>\n        We need your address to deliver your order.\n      </FieldDescription>\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"street\">Street Address</FieldLabel>\n          <Input id=\"street\" type=\"text\" placeholder=\"123 Main St\" />\n        </Field>\n        <div className=\"grid grid-cols-2 gap-4\">\n          <Field>\n            <FieldLabel htmlFor=\"city\">City</FieldLabel>\n            <Input id=\"city\" type=\"text\" placeholder=\"New York\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"zip\">Postal Code</FieldLabel>\n            <Input id=\"zip\" type=\"text\" placeholder=\"90502\" />\n          </Field>\n        </div>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-group.tsx",
    "content": "import { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\n\nexport default function FieldGroupExample() {\n  return (\n    <FieldGroup className=\"w-full max-w-xs\">\n      <FieldSet>\n        <FieldLabel>Responses</FieldLabel>\n        <FieldDescription>\n          Get notified when ChatGPT responds to requests that take time, like\n          research or image generation.\n        </FieldDescription>\n        <FieldGroup data-slot=\"checkbox-group\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"push\" defaultChecked disabled />\n            <FieldLabel htmlFor=\"push\" className=\"font-normal\">\n              Push notifications\n            </FieldLabel>\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n      <FieldSeparator />\n      <FieldSet>\n        <FieldLabel>Tasks</FieldLabel>\n        <FieldDescription>\n          Get notified when tasks you&apos;ve created have updates.{\" \"}\n          <a href=\"#\">Manage tasks</a>\n        </FieldDescription>\n        <FieldGroup data-slot=\"checkbox-group\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"push-tasks\" />\n            <FieldLabel htmlFor=\"push-tasks\" className=\"font-normal\">\n              Push notifications\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"email-tasks\" />\n            <FieldLabel htmlFor=\"email-tasks\" className=\"font-normal\">\n              Email notifications\n            </FieldLabel>\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-input.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport default function FieldInput() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"username\">Username</FieldLabel>\n          <Input id=\"username\" type=\"text\" placeholder=\"Max Leiter\" />\n          <FieldDescription>\n            Choose a unique username for your account.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n          <FieldDescription>\n            Must be at least 8 characters long.\n          </FieldDescription>\n          <Input id=\"password\" type=\"password\" placeholder=\"••••••••\" />\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-radio.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport function FieldRadio() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n      <FieldDescription>\n        Yearly and lifetime plans offer significant savings.\n      </FieldDescription>\n      <RadioGroup defaultValue=\"monthly\">\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"monthly\" id=\"plan-monthly\" />\n          <FieldLabel htmlFor=\"plan-monthly\" className=\"font-normal\">\n            Monthly ($9.99/month)\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"yearly\" id=\"plan-yearly\" />\n          <FieldLabel htmlFor=\"plan-yearly\" className=\"font-normal\">\n            Yearly ($99.99/year)\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"lifetime\" id=\"plan-lifetime\" />\n          <FieldLabel htmlFor=\"plan-lifetime\" className=\"font-normal\">\n            Lifetime ($299.99)\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-responsive.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function FieldResponsive() {\n  return (\n    <div className=\"w-full max-w-lg\">\n      <form>\n        <FieldSet>\n          <FieldLegend>Profile</FieldLegend>\n          <FieldDescription>Fill in your profile information.</FieldDescription>\n          <FieldGroup>\n            <Field orientation=\"responsive\">\n              <FieldContent>\n                <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n                <FieldDescription>\n                  Provide your full name for identification\n                </FieldDescription>\n              </FieldContent>\n              <Input id=\"name\" placeholder=\"Evil Rabbit\" required />\n            </Field>\n            <Field orientation=\"responsive\">\n              <Button type=\"submit\">Submit</Button>\n              <Button type=\"button\" variant=\"outline\">\n                Cancel\n              </Button>\n            </Field>\n          </FieldGroup>\n        </FieldSet>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Checkbox } from \"@/examples/base/ui-rtl/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/base/ui-rtl/field\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui-rtl/select\"\nimport { Textarea } from \"@/examples/base/ui-rtl/textarea\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst months = [\n  { label: \"MM\", value: null },\n  { label: \"01\", value: \"01\" },\n  { label: \"02\", value: \"02\" },\n  { label: \"03\", value: \"03\" },\n  { label: \"04\", value: \"04\" },\n  { label: \"05\", value: \"05\" },\n  { label: \"06\", value: \"06\" },\n  { label: \"07\", value: \"07\" },\n  { label: \"08\", value: \"08\" },\n  { label: \"09\", value: \"09\" },\n  { label: \"10\", value: \"10\" },\n  { label: \"11\", value: \"11\" },\n  { label: \"12\", value: \"12\" },\n]\n\nconst years = [\n  { label: \"YYYY\", value: null },\n  { label: \"2024\", value: \"2024\" },\n  { label: \"2025\", value: \"2025\" },\n  { label: \"2026\", value: \"2026\" },\n  { label: \"2027\", value: \"2027\" },\n  { label: \"2028\", value: \"2028\" },\n  { label: \"2029\", value: \"2029\" },\n]\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      paymentMethod: \"Payment Method\",\n      secureTransactions: \"All transactions are secure and encrypted\",\n      nameOnCard: \"Name on Card\",\n      cardNumber: \"Card Number\",\n      cardNumberDescription: \"Enter your 16-digit card number\",\n      month: \"Month\",\n      year: \"Year\",\n      cvv: \"CVV\",\n      monthPlaceholder: \"MM\",\n      month01: \"01\",\n      month02: \"02\",\n      month03: \"03\",\n      month04: \"04\",\n      month05: \"05\",\n      month06: \"06\",\n      month07: \"07\",\n      month08: \"08\",\n      month09: \"09\",\n      month10: \"10\",\n      month11: \"11\",\n      month12: \"12\",\n      billingAddress: \"Billing Address\",\n      billingAddressDescription:\n        \"The billing address associated with your payment method\",\n      sameAsShipping: \"Same as shipping address\",\n      comments: \"Comments\",\n      commentsPlaceholder: \"Add any additional comments\",\n      submit: \"Submit\",\n      cancel: \"Cancel\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      paymentMethod: \"طريقة الدفع\",\n      secureTransactions: \"جميع المعاملات آمنة ومشفرة\",\n      nameOnCard: \"الاسم على البطاقة\",\n      cardNumber: \"رقم البطاقة\",\n      cardNumberDescription: \"أدخل رقم البطاقة المكون من 16 رقمًا\",\n      month: \"الشهر\",\n      year: \"السنة\",\n      cvv: \"CVV\",\n      monthPlaceholder: \"ش.ش\",\n      month01: \"٠١\",\n      month02: \"٠٢\",\n      month03: \"٠٣\",\n      month04: \"٠٤\",\n      month05: \"٠٥\",\n      month06: \"٠٦\",\n      month07: \"٠٧\",\n      month08: \"٠٨\",\n      month09: \"٠٩\",\n      month10: \"١٠\",\n      month11: \"١١\",\n      month12: \"١٢\",\n      billingAddress: \"عنوان الفوترة\",\n      billingAddressDescription: \"عنوان الفوترة المرتبط بطريقة الدفع الخاصة بك\",\n      sameAsShipping: \"نفس عنوان الشحن\",\n      comments: \"تعليقات\",\n      commentsPlaceholder: \"أضف أي تعليقات إضافية\",\n      submit: \"إرسال\",\n      cancel: \"إلغاء\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      paymentMethod: \"אמצעי תשלום\",\n      secureTransactions: \"כל העסקאות מאובטחות ומוצפנות\",\n      nameOnCard: \"שם על הכרטיס\",\n      cardNumber: \"מספר כרטיס\",\n      cardNumberDescription: \"הזן את מספר הכרטיס בן 16 הספרות שלך\",\n      month: \"חודש\",\n      year: \"שנה\",\n      cvv: \"CVV\",\n      monthPlaceholder: \"MM\",\n      month01: \"01\",\n      month02: \"02\",\n      month03: \"03\",\n      month04: \"04\",\n      month05: \"05\",\n      month06: \"06\",\n      month07: \"07\",\n      month08: \"08\",\n      month09: \"09\",\n      month10: \"10\",\n      month11: \"11\",\n      month12: \"12\",\n      billingAddress: \"כתובת חיוב\",\n      billingAddressDescription: \"כתובת החיוב המשויכת לאמצעי התשלום שלך\",\n      sameAsShipping: \"זהה לכתובת המשלוח\",\n      comments: \"הערות\",\n      commentsPlaceholder: \"הוסף הערות נוספות\",\n      submit: \"שלח\",\n      cancel: \"בטל\",\n    },\n  },\n}\n\nexport function FieldRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  const getMonthLabel = (value: string | null): string => {\n    if (value === null) return t.monthPlaceholder\n    const monthKey = `month${value}` as keyof typeof t\n    return t[monthKey] || value\n  }\n\n  return (\n    <div className=\"w-full max-w-md py-6\" dir={dir}>\n      <form>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>{t.paymentMethod}</FieldLegend>\n            <FieldDescription>{t.secureTransactions}</FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-name-43j-rtl\">\n                  {t.nameOnCard}\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-name-43j-rtl\"\n                  placeholder=\"Evil Rabbit\"\n                  required\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-number-uw1-rtl\">\n                  {t.cardNumber}\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-number-uw1-rtl\"\n                  placeholder=\"1234 5678 9012 3456\"\n                  required\n                />\n                <FieldDescription>{t.cardNumberDescription}</FieldDescription>\n              </Field>\n              <div className=\"grid grid-cols-3 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-exp-month-ts6-rtl\">\n                    {t.month}\n                  </FieldLabel>\n                  <Select items={months}>\n                    <SelectTrigger id=\"checkout-exp-month-ts6-rtl\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent dir={dir}>\n                      <SelectGroup>\n                        {months.map((item) => (\n                          <SelectItem key={item.value} value={item.value}>\n                            {getMonthLabel(item.value)}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-exp-year-f59-rtl\">\n                    {t.year}\n                  </FieldLabel>\n                  <Select items={years}>\n                    <SelectTrigger id=\"checkout-7j9-exp-year-f59-rtl\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent dir={dir}>\n                      <SelectGroup>\n                        {years.map((item) => (\n                          <SelectItem key={item.value} value={item.value}>\n                            {item.label}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-cvv-rtl\">\n                    {t.cvv}\n                  </FieldLabel>\n                  <Input id=\"checkout-7j9-cvv-rtl\" placeholder=\"123\" required />\n                </Field>\n              </div>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>{t.billingAddress}</FieldLegend>\n            <FieldDescription>{t.billingAddressDescription}</FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  id=\"checkout-7j9-same-as-shipping-wgm-rtl\"\n                  defaultChecked\n                />\n                <FieldLabel\n                  htmlFor=\"checkout-7j9-same-as-shipping-wgm-rtl\"\n                  className=\"font-normal\"\n                >\n                  {t.sameAsShipping}\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-optional-comments-rtl\">\n                  {t.comments}\n                </FieldLabel>\n                <Textarea\n                  id=\"checkout-7j9-optional-comments-rtl\"\n                  placeholder={t.commentsPlaceholder}\n                  className=\"resize-none\"\n                />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <Field orientation=\"horizontal\">\n            <Button type=\"submit\">{t.submit}</Button>\n            <Button variant=\"outline\" type=\"button\">\n              {t.cancel}\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-select.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nconst items = [\n  { label: \"Choose department\", value: null },\n  { label: \"Engineering\", value: \"engineering\" },\n  { label: \"Design\", value: \"design\" },\n  { label: \"Marketing\", value: \"marketing\" },\n  { label: \"Sales\", value: \"sales\" },\n  { label: \"Customer Support\", value: \"support\" },\n  { label: \"Human Resources\", value: \"hr\" },\n  { label: \"Finance\", value: \"finance\" },\n  { label: \"Operations\", value: \"operations\" },\n]\n\nexport default function FieldSelect() {\n  return (\n    <Field className=\"w-full max-w-xs\">\n      <FieldLabel>Department</FieldLabel>\n      <Select items={items}>\n        <SelectTrigger>\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {items.map((item) => (\n              <SelectItem key={item.value} value={item.value}>\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n      <FieldDescription>\n        Select your department or area of work.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Field, FieldDescription, FieldTitle } from \"@/examples/base/ui/field\"\nimport { Slider } from \"@/examples/base/ui/slider\"\n\nexport default function FieldSlider() {\n  const [value, setValue] = React.useState([200, 800])\n\n  return (\n    <Field className=\"w-full max-w-xs\">\n      <FieldTitle>Price Range</FieldTitle>\n      <FieldDescription>\n        Set your budget range ($\n        <span className=\"font-medium tabular-nums\">{value[0]}</span> -{\" \"}\n        <span className=\"font-medium tabular-nums\">{value[1]}</span>).\n      </FieldDescription>\n      <Slider\n        value={value}\n        onValueChange={(value) => setValue(value as [number, number])}\n        max={1000}\n        min={0}\n        step={10}\n        className=\"mt-2 w-full\"\n        aria-label=\"Price Range\"\n      />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-switch.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Switch } from \"@/examples/base/ui/switch\"\n\nexport default function FieldSwitch() {\n  return (\n    <Field orientation=\"horizontal\" className=\"w-fit\">\n      <FieldLabel htmlFor=\"2fa\">Multi-factor authentication</FieldLabel>\n      <Switch id=\"2fa\" />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/field-textarea.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\n\nexport default function FieldTextarea() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"feedback\">Feedback</FieldLabel>\n          <Textarea\n            id=\"feedback\"\n            placeholder=\"Your feedback helps us improve...\"\n            rows={4}\n          />\n          <FieldDescription>\n            Share your thoughts about our service.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/file-upload-list.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { Progress } from \"@/examples/base/ui/progress\"\nimport { FileIcon } from \"lucide-react\"\n\nexport function FileUploadList() {\n  const files = React.useMemo(\n    () => [\n      {\n        id: \"1\",\n        name: \"document.pdf\",\n        progress: 45,\n        timeRemaining: \"2m 30s\",\n      },\n      {\n        id: \"2\",\n        name: \"presentation.pptx\",\n        progress: 78,\n        timeRemaining: \"45s\",\n      },\n      {\n        id: \"3\",\n        name: \"spreadsheet.xlsx\",\n        progress: 12,\n        timeRemaining: \"5m 12s\",\n      },\n      {\n        id: \"4\",\n        name: \"image.jpg\",\n        progress: 100,\n        timeRemaining: \"Complete\",\n      },\n    ],\n    []\n  )\n\n  return (\n    <ItemGroup>\n      {files.map((file) => (\n        <Item key={file.id} size=\"xs\" className=\"px-0\">\n          <ItemMedia variant=\"icon\">\n            <FileIcon className=\"size-5\" />\n          </ItemMedia>\n          <ItemContent className=\"inline-block truncate\">\n            <ItemTitle className=\"inline\">{file.name}</ItemTitle>\n          </ItemContent>\n          <ItemContent>\n            <Progress value={file.progress} className=\"w-32\" />\n          </ItemContent>\n          <ItemActions className=\"w-16 justify-end\">\n            <span className=\"text-sm text-muted-foreground\">\n              {file.timeRemaining}\n            </span>\n          </ItemActions>\n        </Item>\n      ))}\n    </ItemGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/hooks/use-mobile.ts",
    "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n  React.useEffect(() => {\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n    const onChange = () => {\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    }\n    mql.addEventListener(\"change\", onChange)\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    return () => mql.removeEventListener(\"change\", onChange)\n  }, [])\n\n  return !!isMobile\n}\n"
  },
  {
    "path": "apps/v4/examples/base/hover-card-demo.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/examples/base/ui/hover-card\"\n\nexport default function HoverCardDemo() {\n  return (\n    <HoverCard>\n      <HoverCardTrigger\n        delay={10}\n        closeDelay={100}\n        render={<Button variant=\"link\" />}\n      >\n        Hover Here\n      </HoverCardTrigger>\n      <HoverCardContent className=\"flex w-64 flex-col gap-0.5\">\n        <div className=\"font-semibold\">@nextjs</div>\n        <div>The React Framework – created and maintained by @vercel.</div>\n        <div className=\"mt-1 text-xs text-muted-foreground\">\n          Joined December 2021\n        </div>\n      </HoverCardContent>\n    </HoverCard>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/hover-card-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/examples/base/ui-rtl/hover-card\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      trigger: \"Wireless Headphones\",\n      name: \"Wireless Headphones\",\n      price: \"$99.99\",\n      \"inline-start\": \"Inline Start\",\n      left: \"Left\",\n      top: \"Top\",\n      bottom: \"Bottom\",\n      right: \"Right\",\n      \"inline-end\": \"Inline End\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      trigger: \"سماعات لاسلكية\",\n      name: \"سماعات لاسلكية\",\n      price: \"٩٩.٩٩ $\",\n      \"inline-start\": \"بداية السطر\",\n      left: \"يسار\",\n      top: \"أعلى\",\n      bottom: \"أسفل\",\n      right: \"يمين\",\n      \"inline-end\": \"نهاية السطر\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      trigger: \"אוזניות אלחוטיות\",\n      name: \"אוזניות אלחוטיות\",\n      price: \"99.99 $\",\n      \"inline-start\": \"תחילת השורה\",\n      left: \"שמאל\",\n      top: \"למעלה\",\n      bottom: \"למטה\",\n      right: \"ימין\",\n      \"inline-end\": \"סוף השורה\",\n    },\n  },\n}\n\nconst physicalSides = [\"left\", \"top\", \"bottom\", \"right\"] as const\nconst logicalSides = [\"inline-start\", \"inline-end\"] as const\n\nexport function HoverCardRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"grid gap-4\">\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {physicalSides.map((side) => (\n          <HoverCard key={side}>\n            <HoverCardTrigger\n              delay={10}\n              closeDelay={100}\n              render={<Button variant=\"outline\" />}\n            >\n              {t[side]}\n            </HoverCardTrigger>\n            <HoverCardContent\n              side={side}\n              className=\"flex w-64 flex-col gap-1\"\n              dir={dir}\n            >\n              <div className=\"font-semibold\">{t.name}</div>\n              <div className=\"text-sm text-muted-foreground\">{t.price}</div>\n            </HoverCardContent>\n          </HoverCard>\n        ))}\n      </div>\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {logicalSides.map((side) => (\n          <HoverCard key={side}>\n            <HoverCardTrigger\n              delay={10}\n              closeDelay={100}\n              render={<Button variant=\"outline\" />}\n            >\n              {t[side]}\n            </HoverCardTrigger>\n            <HoverCardContent\n              side={side}\n              className=\"flex w-64 flex-col gap-1\"\n              dir={dir}\n            >\n              <div className=\"font-semibold\">{t.name}</div>\n              <div className=\"text-sm text-muted-foreground\">{t.price}</div>\n            </HoverCardContent>\n          </HoverCard>\n        ))}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/hover-card-sides.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/examples/base/ui/hover-card\"\n\nconst HOVER_CARD_SIDES = [\"left\", \"top\", \"bottom\", \"right\"] as const\n\nexport function HoverCardSides() {\n  return (\n    <div className=\"flex flex-wrap justify-center gap-2\">\n      {HOVER_CARD_SIDES.map((side) => (\n        <HoverCard key={side}>\n          <HoverCardTrigger\n            delay={100}\n            closeDelay={100}\n            render={<Button variant=\"outline\" className=\"capitalize\" />}\n          >\n            {side}\n          </HoverCardTrigger>\n          <HoverCardContent side={side}>\n            <div className=\"flex flex-col gap-1\">\n              <h4 className=\"font-medium\">Hover Card</h4>\n              <p>This hover card appears on the {side} side of the trigger.</p>\n            </div>\n          </HoverCardContent>\n        </HoverCard>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-badge.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputBadge() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-badge\">\n        Webhook URL{\" \"}\n        <Badge variant=\"secondary\" className=\"ml-auto\">\n          Beta\n        </Badge>\n      </FieldLabel>\n      <Input\n        id=\"input-badge\"\n        type=\"url\"\n        placeholder=\"https://api.example.com/webhook\"\n      />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-basic.tsx",
    "content": "import { Input } from \"@/examples/base/ui/input\"\n\nexport function InputBasic() {\n  return <Input placeholder=\"Enter text\" />\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-button-group.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputButtonGroup() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-button-group\">Search</FieldLabel>\n      <ButtonGroup>\n        <Input id=\"input-button-group\" placeholder=\"Type to search...\" />\n        <Button variant=\"outline\">Search</Button>\n      </ButtonGroup>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-demo.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputDemo() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-demo-api-key\">API Key</FieldLabel>\n      <Input id=\"input-demo-api-key\" type=\"password\" placeholder=\"sk-...\" />\n      <FieldDescription>\n        Your API key is encrypted and stored securely.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-disabled.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputDisabled() {\n  return (\n    <Field data-disabled>\n      <FieldLabel htmlFor=\"input-demo-disabled\">Email</FieldLabel>\n      <Input\n        id=\"input-demo-disabled\"\n        type=\"email\"\n        placeholder=\"Email\"\n        disabled\n      />\n      <FieldDescription>This field is currently disabled.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-field.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputField() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-field-username\">Username</FieldLabel>\n      <Input\n        id=\"input-field-username\"\n        type=\"text\"\n        placeholder=\"Enter your username\"\n      />\n      <FieldDescription>\n        Choose a unique username for your account.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-fieldgroup.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputFieldgroup() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"fieldgroup-name\">Name</FieldLabel>\n        <Input id=\"fieldgroup-name\" placeholder=\"Jordan Lee\" />\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"fieldgroup-email\">Email</FieldLabel>\n        <Input\n          id=\"fieldgroup-email\"\n          type=\"email\"\n          placeholder=\"name@example.com\"\n        />\n        <FieldDescription>\n          We&apos;ll send updates to this address.\n        </FieldDescription>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <Button type=\"reset\" variant=\"outline\">\n          Reset\n        </Button>\n        <Button type=\"submit\">Submit</Button>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-file.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputFile() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"picture\">Picture</FieldLabel>\n      <Input id=\"picture\" type=\"file\" />\n      <FieldDescription>Select a picture to upload.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-form.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nexport function InputForm() {\n  const countries = [\n    { label: \"United States\", value: \"us\" },\n    { label: \"United Kingdom\", value: \"uk\" },\n    { label: \"Canada\", value: \"ca\" },\n  ]\n  return (\n    <form className=\"w-full max-w-sm\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"form-name\">Name</FieldLabel>\n          <Input\n            id=\"form-name\"\n            type=\"text\"\n            placeholder=\"Evil Rabbit\"\n            required\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"form-email\">Email</FieldLabel>\n          <Input id=\"form-email\" type=\"email\" placeholder=\"john@example.com\" />\n          <FieldDescription>\n            We&apos;ll never share your email with anyone.\n          </FieldDescription>\n        </Field>\n        <div className=\"grid grid-cols-2 gap-4\">\n          <Field>\n            <FieldLabel htmlFor=\"form-phone\">Phone</FieldLabel>\n            <Input id=\"form-phone\" type=\"tel\" placeholder=\"+1 (555) 123-4567\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"form-country\">Country</FieldLabel>\n            <Select items={countries} defaultValue=\"us\">\n              <SelectTrigger id=\"form-country\">\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectGroup>\n                  {countries.map((country) => (\n                    <SelectItem key={country.value} value={country.value}>\n                      {country.label}\n                    </SelectItem>\n                  ))}\n                </SelectGroup>\n              </SelectContent>\n            </Select>\n          </Field>\n        </div>\n        <Field>\n          <FieldLabel htmlFor=\"form-address\">Address</FieldLabel>\n          <Input id=\"form-address\" type=\"text\" placeholder=\"123 Main St\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\">\n            Cancel\n          </Button>\n          <Button type=\"submit\">Submit</Button>\n        </Field>\n      </FieldGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-grid.tsx",
    "content": "import { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputGrid() {\n  return (\n    <FieldGroup className=\"grid max-w-sm grid-cols-2\">\n      <Field>\n        <FieldLabel htmlFor=\"first-name\">First Name</FieldLabel>\n        <Input id=\"first-name\" placeholder=\"Jordan\" />\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"last-name\">Last Name</FieldLabel>\n        <Input id=\"last-name\" placeholder=\"Lee\" />\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-basic.tsx",
    "content": "import { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { InputGroup, InputGroupInput } from \"@/examples/base/ui/input-group\"\n\nexport function InputGroupBasic() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-default-01\">\n          Default (No Input Group)\n        </FieldLabel>\n        <Input placeholder=\"Placeholder\" id=\"input-default-01\" />\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-group-02\">Input Group</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-group-02\" placeholder=\"Placeholder\" />\n        </InputGroup>\n      </Field>\n      <Field data-disabled=\"true\">\n        <FieldLabel htmlFor=\"input-disabled-03\">Disabled</FieldLabel>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-disabled-03\"\n            placeholder=\"This field is disabled\"\n            disabled\n          />\n        </InputGroup>\n      </Field>\n      <Field data-invalid=\"true\">\n        <FieldLabel htmlFor=\"input-invalid-04\">Invalid</FieldLabel>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-invalid-04\"\n            placeholder=\"This field is invalid\"\n            aria-invalid=\"true\"\n          />\n        </InputGroup>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-block-end.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/base/ui/input-group\"\n\nexport function InputGroupBlockEnd() {\n  return (\n    <FieldGroup className=\"max-w-sm\">\n      <Field>\n        <FieldLabel htmlFor=\"block-end-input\">Input</FieldLabel>\n        <InputGroup className=\"h-auto\">\n          <InputGroupInput id=\"block-end-input\" placeholder=\"Enter amount\" />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupText>USD</InputGroupText>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>Footer positioned below the input.</FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"block-end-textarea\">Textarea</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"block-end-textarea\"\n            placeholder=\"Write a comment...\"\n          />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupText>0/280</InputGroupText>\n            <InputGroupButton variant=\"default\" size=\"sm\" className=\"ml-auto\">\n              Post\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          Footer positioned below the textarea.\n        </FieldDescription>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-block-start.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/base/ui/input-group\"\nimport { CopyIcon, FileCodeIcon } from \"lucide-react\"\n\nexport function InputGroupBlockStart() {\n  return (\n    <FieldGroup className=\"max-w-sm\">\n      <Field>\n        <FieldLabel htmlFor=\"block-start-input\">Input</FieldLabel>\n        <InputGroup className=\"h-auto\">\n          <InputGroupInput\n            id=\"block-start-input\"\n            placeholder=\"Enter your name\"\n          />\n          <InputGroupAddon align=\"block-start\">\n            <InputGroupText>Full Name</InputGroupText>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>Header positioned above the input.</FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"block-start-textarea\">Textarea</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"block-start-textarea\"\n            placeholder=\"console.log('Hello, world!');\"\n            className=\"font-mono text-sm\"\n          />\n          <InputGroupAddon align=\"block-start\">\n            <FileCodeIcon className=\"text-muted-foreground\" />\n            <InputGroupText className=\"font-mono\">script.js</InputGroupText>\n            <InputGroupButton size=\"icon-xs\" className=\"ml-auto\">\n              <CopyIcon />\n              <span className=\"sr-only\">Copy</span>\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          Header positioned above the textarea.\n        </FieldDescription>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-button-group.tsx",
    "content": "import { ButtonGroup, ButtonGroupText } from \"@/examples/base/ui/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Label } from \"@/examples/base/ui/label\"\nimport { Link2Icon } from \"lucide-react\"\n\nexport default function InputGroupButtonGroup() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <ButtonGroup>\n        <ButtonGroupText render={<Label htmlFor=\"url\" />}>\n          https://\n        </ButtonGroupText>\n        <InputGroup>\n          <InputGroupInput id=\"url\" />\n          <InputGroupAddon align=\"inline-end\">\n            <Link2Icon />\n          </InputGroupAddon>\n        </InputGroup>\n        <ButtonGroupText>.com</ButtonGroupText>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport {\n  IconCheck,\n  IconCopy,\n  IconInfoCircle,\n  IconStar,\n} from \"@tabler/icons-react\"\n\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\"\n\nexport default function InputGroupButtonExample() {\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\n  const [isFavorite, setIsFavorite] = React.useState(false)\n\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"https://x.com/shadcn\" readOnly />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            aria-label=\"Copy\"\n            title=\"Copy\"\n            size=\"icon-xs\"\n            onClick={() => {\n              copyToClipboard(\"https://x.com/shadcn\")\n            }}\n          >\n            {isCopied ? <IconCheck /> : <IconCopy />}\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup className=\"[--radius:9999px]\">\n        <Popover>\n          <PopoverTrigger render={<InputGroupAddon />}>\n            <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n              <IconInfoCircle />\n            </InputGroupButton>\n          </PopoverTrigger>\n          <PopoverContent\n            align=\"start\"\n            className=\"flex flex-col gap-1 rounded-xl text-sm\"\n          >\n            <p className=\"font-medium\">Your connection is not secure.</p>\n            <p>You should not enter any sensitive information on this site.</p>\n          </PopoverContent>\n        </Popover>\n        <InputGroupAddon className=\"pl-1.5 text-muted-foreground\">\n          https://\n        </InputGroupAddon>\n        <InputGroupInput id=\"input-secure-19\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            onClick={() => setIsFavorite(!isFavorite)}\n            size=\"icon-xs\"\n          >\n            <IconStar\n              data-favorite={isFavorite}\n              className=\"data-[favorite=true]:fill-blue-600 data-[favorite=true]:stroke-blue-600\"\n            />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Type to search...\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton variant=\"secondary\">Search</InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-custom.tsx",
    "content": "\"use client\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n} from \"@/examples/base/ui/input-group\"\nimport TextareaAutosize from \"react-textarea-autosize\"\n\nexport default function InputGroupCustom() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <TextareaAutosize\n          data-slot=\"input-group-control\"\n          className=\"flex field-sizing-content min-h-16 w-full resize-none rounded-md bg-transparent px-3 py-2.5 text-base transition-[color,box-shadow] outline-none md:text-sm\"\n          placeholder=\"Autoresize textarea...\"\n        />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupButton className=\"ml-auto\" size=\"sm\" variant=\"default\">\n            Submit\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-demo.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Search } from \"lucide-react\"\n\nexport function InputGroupDemo() {\n  return (\n    <InputGroup className=\"max-w-xs\">\n      <InputGroupInput placeholder=\"Search...\" />\n      <InputGroupAddon>\n        <Search />\n      </InputGroupAddon>\n      <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n    </InputGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-dropdown.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { ChevronDownIcon, MoreHorizontal } from \"lucide-react\"\n\nexport function InputGroupDropdown() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter file name\" />\n        <InputGroupAddon align=\"inline-end\">\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={\n                <InputGroupButton\n                  variant=\"ghost\"\n                  aria-label=\"More\"\n                  size=\"icon-xs\"\n                />\n              }\n            >\n              <MoreHorizontal />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" sideOffset={8} alignOffset={-4}>\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Settings</DropdownMenuItem>\n                <DropdownMenuItem>Copy path</DropdownMenuItem>\n                <DropdownMenuItem>Open location</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter search query\" />\n        <InputGroupAddon align=\"inline-end\">\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={\n                <InputGroupButton variant=\"ghost\" className=\"pr-1.5! text-xs\" />\n              }\n            >\n              Search In... <ChevronDownIcon className=\"size-3\" />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" sideOffset={8} alignOffset={-4}>\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\n                <DropdownMenuItem>Blog Posts</DropdownMenuItem>\n                <DropdownMenuItem>Changelog</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-icon.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  CheckIcon,\n  CreditCardIcon,\n  InfoIcon,\n  MailIcon,\n  SearchIcon,\n  StarIcon,\n} from \"lucide-react\"\n\nexport default function InputGroupIcon() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Search...\" />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput type=\"email\" placeholder=\"Enter your email\" />\n        <InputGroupAddon>\n          <MailIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Card number\" />\n        <InputGroupAddon>\n          <CreditCardIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <CheckIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Card number\" />\n        <InputGroupAddon align=\"inline-end\">\n          <StarIcon />\n          <InfoIcon />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-in-card.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/base/ui/input-group\"\nimport { ExternalLinkIcon, MailIcon } from \"lucide-react\"\n\nexport function InputGroupInCard() {\n  return (\n    <Card className=\"w-full\">\n      <CardHeader>\n        <CardTitle>Card with Input Group</CardTitle>\n        <CardDescription>This is a card with an input group.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"email-input\">Email Address</FieldLabel>\n            <InputGroup>\n              <InputGroupInput\n                id=\"email-input\"\n                type=\"email\"\n                placeholder=\"you@example.com\"\n              />\n              <InputGroupAddon align=\"inline-end\">\n                <MailIcon />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"website-input\">Website URL</FieldLabel>\n            <InputGroup>\n              <InputGroupAddon>\n                <InputGroupText>https://</InputGroupText>\n              </InputGroupAddon>\n              <InputGroupInput id=\"website-input\" placeholder=\"example.com\" />\n              <InputGroupAddon align=\"inline-end\">\n                <ExternalLinkIcon />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"feedback-textarea\">\n              Feedback & Comments\n            </FieldLabel>\n            <InputGroup>\n              <InputGroupTextarea\n                id=\"feedback-textarea\"\n                placeholder=\"Share your thoughts...\"\n                className=\"min-h-[100px]\"\n              />\n              <InputGroupAddon align=\"block-end\">\n                <InputGroupText>0/500 characters</InputGroupText>\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n      <CardFooter className=\"justify-end gap-2\">\n        <Button variant=\"outline\">Cancel</Button>\n        <Button>Submit</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-inline-end.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { EyeOffIcon } from \"lucide-react\"\n\nexport function InputGroupInlineEnd() {\n  return (\n    <Field className=\"max-w-sm\">\n      <FieldLabel htmlFor=\"inline-end-input\">Input</FieldLabel>\n      <InputGroup>\n        <InputGroupInput\n          id=\"inline-end-input\"\n          type=\"password\"\n          placeholder=\"Enter password\"\n        />\n        <InputGroupAddon align=\"inline-end\">\n          <EyeOffIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <FieldDescription>Icon positioned at the end.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-inline-start.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport function InputGroupInlineStart() {\n  return (\n    <Field className=\"max-w-sm\">\n      <FieldLabel htmlFor=\"inline-start-input\">Input</FieldLabel>\n      <InputGroup>\n        <InputGroupInput id=\"inline-start-input\" placeholder=\"Search...\" />\n        <InputGroupAddon align=\"inline-start\">\n          <SearchIcon className=\"text-muted-foreground\" />\n        </InputGroupAddon>\n      </InputGroup>\n      <FieldDescription>Icon positioned at the start.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-kbd.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Kbd } from \"@/examples/base/ui/kbd\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport function InputGroupKbd() {\n  return (\n    <InputGroup className=\"max-w-sm\">\n      <InputGroupInput placeholder=\"Search...\" />\n      <InputGroupAddon>\n        <SearchIcon className=\"text-muted-foreground\" />\n      </InputGroupAddon>\n      <InputGroupAddon align=\"inline-end\">\n        <Kbd>⌘K</Kbd>\n      </InputGroupAddon>\n    </InputGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-label.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Label } from \"@/examples/base/ui/label\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\nimport { InfoIcon } from \"lucide-react\"\n\nexport default function InputGroupLabel() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput id=\"email\" placeholder=\"shadcn\" />\n        <InputGroupAddon>\n          <Label htmlFor=\"email\">@</Label>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput id=\"email-2\" placeholder=\"shadcn@vercel.com\" />\n        <InputGroupAddon align=\"block-start\">\n          <Label htmlFor=\"email-2\" className=\"text-foreground\">\n            Email\n          </Label>\n          <Tooltip>\n            <TooltipTrigger\n              render={\n                <InputGroupButton\n                  variant=\"ghost\"\n                  aria-label=\"Help\"\n                  className=\"ml-auto rounded-full\"\n                  size=\"icon-xs\"\n                />\n              }\n            >\n              <InfoIcon />\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>We&apos;ll use this to send you notifications</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui-rtl/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/base/ui-rtl/input-group\"\nimport { Spinner } from \"@/examples/base/ui-rtl/spinner\"\nimport { Search } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      placeholder: \"Search...\",\n      results: \"12 results\",\n      searching: \"Searching...\",\n      saving: \"Saving...\",\n      savingChanges: \"Saving changes...\",\n      textareaLabel: \"Textarea\",\n      textareaPlaceholder: \"Write a comment...\",\n      characterCount: \"0/280\",\n      post: \"Post\",\n      textareaDescription: \"Footer positioned below the textarea.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"بحث...\",\n      results: \"١٢ نتيجة\",\n      searching: \"جاري البحث...\",\n      saving: \"جاري الحفظ...\",\n      savingChanges: \"جاري حفظ التغييرات...\",\n      textareaLabel: \"منطقة النص\",\n      textareaPlaceholder: \"اكتب تعليقًا...\",\n      characterCount: \"٠/٢٨٠\",\n      post: \"نشر\",\n      textareaDescription: \"تذييل موضع أسفل منطقة النص.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"חפש...\",\n      results: \"12 תוצאות\",\n      searching: \"מחפש...\",\n      saving: \"שומר...\",\n      savingChanges: \"שומר שינויים...\",\n      textareaLabel: \"אזור טקסט\",\n      textareaPlaceholder: \"כתוב תגובה...\",\n      characterCount: \"0/280\",\n      post: \"פרסם\",\n      textareaDescription: \"כותרת תחתונה ממוקמת מתחת לאזור הטקסט.\",\n    },\n  },\n}\n\nexport function InputGroupRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup className=\"max-w-xs\">\n        <InputGroupInput placeholder={t.placeholder} />\n        <InputGroupAddon>\n          <Search />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">{t.results}</InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder={t.searching} />\n        <InputGroupAddon align=\"inline-end\">\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder={t.savingChanges} />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>{t.saving}</InputGroupText>\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <FieldGroup className=\"max-w-sm\">\n        <Field>\n          <FieldLabel htmlFor=\"rtl-textarea\">{t.textareaLabel}</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"rtl-textarea\"\n              placeholder={t.textareaPlaceholder}\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupText>{t.characterCount}</InputGroupText>\n              <InputGroupButton variant=\"default\" size=\"sm\" className=\"ms-auto\">\n                {t.post}\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>{t.textareaDescription}</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-spinner.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/examples/base/ui/input-group\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\nimport { LoaderIcon } from \"lucide-react\"\n\nexport default function InputGroupSpinner() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Searching...\" />\n        <InputGroupAddon align=\"inline-end\">\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Processing...\" />\n        <InputGroupAddon>\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Saving changes...\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>Saving...</InputGroupText>\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Refreshing data...\" />\n        <InputGroupAddon>\n          <LoaderIcon className=\"animate-spin\" />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText className=\"text-muted-foreground\">\n            Please wait...\n          </InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-text.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/base/ui/input-group\"\n\nexport default function InputGroupTextExample() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupAddon>\n          <InputGroupText>$</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupInput placeholder=\"0.00\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>USD</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupAddon>\n          <InputGroupText>https://</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupInput placeholder=\"example.com\" className=\"pl-0.5!\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>.com</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter your username\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>@company.com</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder=\"Enter your message\" />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupText className=\"text-xs text-muted-foreground\">\n            120 characters left\n          </InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-textarea-examples.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/base/ui/input-group\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\nimport {\n  ArrowUpIcon,\n  CodeIcon,\n  CopyIcon,\n  InfoIcon,\n  RefreshCwIcon,\n} from \"lucide-react\"\n\nexport function InputGroupTextareaExamples() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-header-footer-12\">\n          Default Textarea (No Input Group)\n        </FieldLabel>\n        <Textarea\n          id=\"textarea-header-footer-12\"\n          placeholder=\"Enter your text here...\"\n        />\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-header-footer-13\">Input Group</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-header-footer-13\"\n            placeholder=\"Enter your text here...\"\n          />\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field data-invalid=\"true\">\n        <FieldLabel htmlFor=\"textarea-header-footer-14\">Invalid</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-header-footer-14\"\n            placeholder=\"Enter your text here...\"\n            aria-invalid=\"true\"\n          />\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field data-disabled=\"true\">\n        <FieldLabel htmlFor=\"textarea-header-footer-15\">Disabled</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-header-footer-15\"\n            placeholder=\"Enter your text here...\"\n            disabled\n          />\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"prompt-31\">Addon (block-start)</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea id=\"prompt-31\" />\n          <InputGroupAddon align=\"block-start\">\n            <InputGroupText>Ask, Search or Chat...</InputGroupText>\n            <InfoIcon className=\"ml-auto text-muted-foreground\" />\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-header-footer-30\">\n          Addon (block-end)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-header-footer-30\"\n            placeholder=\"Enter your text here...\"\n          />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupText>0/280 characters</InputGroupText>\n            <InputGroupButton\n              variant=\"default\"\n              size=\"icon-xs\"\n              className=\"ml-auto rounded-full\"\n            >\n              <ArrowUpIcon />\n              <span className=\"sr-only\">Send</span>\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-comment-31\">Addon (Buttons)</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-comment-31\"\n            placeholder=\"Share your thoughts...\"\n            className=\"min-h-[120px]\"\n          />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupButton variant=\"ghost\" className=\"ml-auto\" size=\"sm\">\n              Cancel\n            </InputGroupButton>\n            <InputGroupButton variant=\"default\" size=\"sm\">\n              Post Comment\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-code-32\">Code Editor</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-code-32\"\n            placeholder=\"console.log('Hello, world!');\"\n            className=\"min-h-[300px] py-3\"\n          />\n          <InputGroupAddon align=\"block-start\" className=\"border-b\">\n            <InputGroupText className=\"font-mono font-medium\">\n              <CodeIcon />\n              script.js\n            </InputGroupText>\n            <InputGroupButton size=\"icon-xs\" className=\"ml-auto\">\n              <RefreshCwIcon />\n            </InputGroupButton>\n            <InputGroupButton size=\"icon-xs\" variant=\"ghost\">\n              <CopyIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n          <InputGroupAddon align=\"block-end\" className=\"border-t\">\n            <InputGroupText>Line 1, Column 1</InputGroupText>\n            <InputGroupText className=\"ml-auto\">JavaScript</InputGroupText>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-textarea.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  IconBrandJavascript,\n  IconCopy,\n  IconCornerDownLeft,\n  IconRefresh,\n} from \"@tabler/icons-react\"\n\nexport default function InputGroupTextareaExample() {\n  return (\n    <div className=\"grid w-full max-w-md gap-4\">\n      <InputGroup>\n        <InputGroupTextarea\n          id=\"textarea-code-32\"\n          placeholder=\"console.log('Hello, world!');\"\n          className=\"min-h-[200px]\"\n        />\n        <InputGroupAddon align=\"block-end\" className=\"border-t\">\n          <InputGroupText>Line 1, Column 1</InputGroupText>\n          <InputGroupButton size=\"sm\" className=\"ml-auto\" variant=\"default\">\n            Run <IconCornerDownLeft />\n          </InputGroupButton>\n        </InputGroupAddon>\n        <InputGroupAddon align=\"block-start\" className=\"border-b\">\n          <InputGroupText className=\"font-mono font-medium\">\n            <IconBrandJavascript />\n            script.js\n          </InputGroupText>\n          <InputGroupButton className=\"ml-auto\" size=\"icon-xs\">\n            <IconRefresh />\n          </InputGroupButton>\n          <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n            <IconCopy />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-tooltip.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\nimport { HelpCircle, InfoIcon } from \"lucide-react\"\n\nexport default function InputGroupTooltip() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter password\" type=\"password\" />\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger\n              render={\n                <InputGroupButton\n                  variant=\"ghost\"\n                  aria-label=\"Info\"\n                  size=\"icon-xs\"\n                />\n              }\n            >\n              <InfoIcon />\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>Password must be at least 8 characters</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Your email address\" />\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger\n              render={\n                <InputGroupButton\n                  variant=\"ghost\"\n                  aria-label=\"Help\"\n                  size=\"icon-xs\"\n                />\n              }\n            >\n              <HelpCircle />\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>We&apos;ll use this to send you notifications</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter API key\" />\n        <Tooltip>\n          <TooltipTrigger render={<InputGroupAddon />}>\n            <InputGroupButton variant=\"ghost\" aria-label=\"Help\" size=\"icon-xs\">\n              <HelpCircle />\n            </InputGroupButton>\n          </TooltipTrigger>\n          <TooltipContent side=\"left\">\n            <p>Click for help with API keys</p>\n          </TooltipContent>\n        </Tooltip>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-with-addons.tsx",
    "content": "\"use client\"\n\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  CopyIcon,\n  EyeOffIcon,\n  InfoIcon,\n  MicIcon,\n  RadioIcon,\n  SearchIcon,\n  StarIcon,\n} from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nexport function InputGroupWithAddons() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-icon-left-05\">\n          Addon (inline-start)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-icon-left-05\" />\n          <InputGroupAddon>\n            <SearchIcon className=\"text-muted-foreground\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-icon-right-07\">\n          Addon (inline-end)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-icon-right-07\" />\n          <InputGroupAddon align=\"inline-end\">\n            <EyeOffIcon />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-icon-both-09\">\n          Addon (inline-start and inline-end)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-icon-both-09\" />\n          <InputGroupAddon>\n            <MicIcon className=\"text-muted-foreground\" />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <RadioIcon className=\"animate-pulse text-red-500\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-addon-20\">Addon (block-start)</FieldLabel>\n        <InputGroup className=\"h-auto\">\n          <InputGroupInput id=\"input-addon-20\" />\n          <InputGroupAddon align=\"block-start\">\n            <InputGroupText>First Name</InputGroupText>\n            <InfoIcon className=\"ml-auto text-muted-foreground\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-addon-21\">Addon (block-end)</FieldLabel>\n        <InputGroup className=\"h-auto\">\n          <InputGroupInput id=\"input-addon-21\" />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupText>20/240 characters</InputGroupText>\n            <InfoIcon className=\"ml-auto text-muted-foreground\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-icon-both-10\">Multiple Icons</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-icon-both-10\" />\n          <InputGroupAddon align=\"inline-end\">\n            <StarIcon />\n            <InputGroupButton\n              size=\"icon-xs\"\n              onClick={() => toast(\"Copied to clipboard\")}\n            >\n              <CopyIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n          <InputGroupAddon>\n            <RadioIcon className=\"animate-pulse text-red-500\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-description-10\">Description</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-description-10\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InfoIcon />\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n        <InputGroup>\n          <InputGroupAddon>\n            <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n          </InputGroupAddon>\n          <InputGroupInput id=\"input-label-10\" />\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-optional-12\" aria-label=\"Optional\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupText>(optional)</InputGroupText>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-with-buttons.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { CopyIcon, TrashIcon } from \"lucide-react\"\n\nexport function InputGroupWithButtons() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-button-13\">Button</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-13\" />\n          <InputGroupAddon>\n            <InputGroupButton>Default</InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-14\" />\n          <InputGroupAddon>\n            <InputGroupButton variant=\"outline\">Outline</InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-15\" />\n          <InputGroupAddon>\n            <InputGroupButton variant=\"secondary\">Secondary</InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-16\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupButton variant=\"secondary\">Button</InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-17\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupButton size=\"icon-xs\">\n              <CopyIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-18\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n              <TrashIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-with-kbd.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/examples/base/ui/kbd\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\nimport { CheckIcon, InfoIcon, SearchIcon, SparklesIcon } from \"lucide-react\"\n\nexport function InputGroupWithKbd() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-kbd-22\">Input Group with Kbd</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-kbd-22\" />\n          <InputGroupAddon>\n            <Kbd>⌘K</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-kbd-23\" />\n          <InputGroupAddon align=\"inline-end\">\n            <Kbd>⌘K</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-search-apps-24\"\n            placeholder=\"Search for Apps...\"\n          />\n          <InputGroupAddon align=\"inline-end\">Ask AI</InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <Kbd>Tab</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-search-type-25\"\n            placeholder=\"Type to search...\"\n          />\n          <InputGroupAddon align=\"inline-start\">\n            <SparklesIcon />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <KbdGroup>\n              <Kbd>Ctrl</Kbd>\n              <Kbd>C</Kbd>\n            </KbdGroup>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-username-26\">Username</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-username-26\" defaultValue=\"shadcn\" />\n          <InputGroupAddon align=\"inline-end\">\n            <div className=\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\">\n              <CheckIcon className=\"size-3 text-white\" />\n            </div>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription className=\"text-green-700\">\n          This username is available.\n        </FieldDescription>\n      </Field>\n      <InputGroup>\n        <InputGroupInput\n          id=\"input-search-docs-27\"\n          placeholder=\"Search documentation...\"\n        />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n      </InputGroup>\n      <InputGroup data-disabled=\"true\">\n        <InputGroupInput\n          id=\"input-search-disabled-28\"\n          placeholder=\"Search documentation...\"\n          disabled\n        />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">Disabled</InputGroupAddon>\n      </InputGroup>\n      <FieldGroup className=\"grid grid-cols-2 gap-4\">\n        <Field>\n          <FieldLabel htmlFor=\"input-group-11\">First Name</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-group-11\" placeholder=\"First Name\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InfoIcon />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-group-12\">Last Name</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-group-12\" placeholder=\"Last Name\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InfoIcon />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n      <Field data-disabled=\"true\">\n        <FieldLabel htmlFor=\"input-group-29\">\n          Loading (&quot;data-disabled=&quot;true&quot;)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-group-29\" disabled defaultValue=\"shadcn\" />\n          <InputGroupAddon align=\"inline-end\">\n            <Spinner />\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-group-with-tooltip.tsx",
    "content": "\"use client\"\n\nimport { ButtonGroup, ButtonGroupText } from \"@/examples/base/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\nimport { ChevronDownIcon, InfoIcon, StarIcon } from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nexport function InputGroupWithTooltip({\n  country,\n  setCountry,\n}: {\n  country: string\n  setCountry: (value: string) => void\n}) {\n  return (\n    <>\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-tooltip-20\">Tooltip</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-tooltip-20\" />\n            <InputGroupAddon align=\"inline-end\">\n              <Tooltip>\n                <TooltipTrigger\n                  render={\n                    <InputGroupButton className=\"rounded-full\" size=\"icon-xs\" />\n                  }\n                >\n                  <InfoIcon />\n                </TooltipTrigger>\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\n              </Tooltip>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-dropdown-21\">Dropdown</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-dropdown-21\" />\n            <InputGroupAddon>\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <InputGroupButton className=\"text-muted-foreground tabular-nums\" />\n                  }\n                >\n                  {country} <ChevronDownIcon />\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  align=\"start\"\n                  className=\"min-w-16\"\n                  sideOffset={10}\n                  alignOffset={-8}\n                >\n                  <DropdownMenuItem onClick={() => setCountry(\"+1\")}>\n                    +1\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={() => setCountry(\"+44\")}>\n                    +44\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={() => setCountry(\"+46\")}>\n                    +46\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-secure-19\">Popover</FieldLabel>\n          <InputGroup>\n            <Popover>\n              <PopoverTrigger render={<InputGroupAddon />} nativeButton={false}>\n                <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                  <InfoIcon />\n                </InputGroupButton>\n              </PopoverTrigger>\n              <PopoverContent align=\"start\">\n                <PopoverHeader>\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\n                  <PopoverDescription>\n                    You should not enter any sensitive information on this site.\n                  </PopoverDescription>\n                </PopoverHeader>\n              </PopoverContent>\n            </Popover>\n            <InputGroupAddon className=\"pl-1 text-muted-foreground\">\n              https://\n            </InputGroupAddon>\n            <InputGroupInput id=\"input-secure-19\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton\n                size=\"icon-xs\"\n                onClick={() => toast(\"Added to favorites\")}\n              >\n                <StarIcon />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"url\">Button Group</FieldLabel>\n          <ButtonGroup>\n            <ButtonGroupText>https://</ButtonGroupText>\n            <InputGroup>\n              <InputGroupInput id=\"url\" />\n              <InputGroupAddon align=\"inline-end\">\n                <InfoIcon />\n              </InputGroupAddon>\n            </InputGroup>\n            <ButtonGroupText>.com</ButtonGroupText>\n          </ButtonGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-inline.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Field } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputInline() {\n  return (\n    <Field orientation=\"horizontal\">\n      <Input type=\"search\" placeholder=\"Search...\" />\n      <Button>Search</Button>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-input-group.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/examples/base/ui/input-group\"\nimport { InfoIcon } from \"lucide-react\"\n\nexport function InputInputGroup() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-group-url\">Website URL</FieldLabel>\n      <InputGroup>\n        <InputGroupInput id=\"input-group-url\" placeholder=\"example.com\" />\n        <InputGroupAddon>\n          <InputGroupText>https://</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <InfoIcon />\n        </InputGroupAddon>\n      </InputGroup>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-invalid.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputInvalid() {\n  return (\n    <Field data-invalid>\n      <FieldLabel htmlFor=\"input-invalid\">Invalid Input</FieldLabel>\n      <Input id=\"input-invalid\" placeholder=\"Error\" aria-invalid />\n      <FieldDescription>\n        This field contains validation errors.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-alphanumeric.tsx",
    "content": "\"use client\"\n\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\nimport { REGEXP_ONLY_DIGITS_AND_CHARS } from \"input-otp\"\n\nexport function InputOTPAlphanumeric() {\n  return (\n    <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={3} />\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\n\nexport default function InputOTPControlled() {\n  const [value, setValue] = React.useState(\"\")\n\n  return (\n    <div className=\"space-y-2\">\n      <InputOTP\n        maxLength={6}\n        value={value}\n        onChange={(value) => setValue(value)}\n      >\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n      <div className=\"text-center text-sm\">\n        {value === \"\" ? (\n          <>Enter your one-time password.</>\n        ) : (\n          <>You entered: {value}</>\n        )}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-demo.tsx",
    "content": "import {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\n\nexport function InputOTPDemo() {\n  return (\n    <InputOTP maxLength={6} defaultValue=\"123456\">\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n        <InputOTPSlot index={3} />\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-disabled.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\n\nexport function InputOTPDisabled() {\n  return (\n    <InputOTP id=\"disabled\" maxLength={6} disabled value=\"123456\">\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={3} />\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-form.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui/card\"\nimport { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\nimport { RefreshCwIcon } from \"lucide-react\"\n\nexport function InputOTPForm() {\n  return (\n    <Card className=\"mx-auto max-w-md\">\n      <CardHeader>\n        <CardTitle>Verify your login</CardTitle>\n        <CardDescription>\n          Enter the verification code we sent to your email address:{\" \"}\n          <span className=\"font-medium\">m@example.com</span>.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Field>\n          <div className=\"flex items-center justify-between\">\n            <FieldLabel htmlFor=\"otp-verification\">\n              Verification code\n            </FieldLabel>\n            <Button variant=\"outline\" size=\"xs\">\n              <RefreshCwIcon />\n              Resend Code\n            </Button>\n          </div>\n          <InputOTP maxLength={6} id=\"otp-verification\" required>\n            <InputOTPGroup className=\"*:data-[slot=input-otp-slot]:h-12 *:data-[slot=input-otp-slot]:w-11 *:data-[slot=input-otp-slot]:text-xl\">\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n            </InputOTPGroup>\n            <InputOTPSeparator className=\"mx-2\" />\n            <InputOTPGroup className=\"*:data-[slot=input-otp-slot]:h-12 *:data-[slot=input-otp-slot]:w-11 *:data-[slot=input-otp-slot]:text-xl\">\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            <a href=\"#\">I no longer have access to this email address.</a>\n          </FieldDescription>\n        </Field>\n      </CardContent>\n      <CardFooter>\n        <Field>\n          <Button type=\"submit\" className=\"w-full\">\n            Verify\n          </Button>\n          <div className=\"text-sm text-muted-foreground\">\n            Having trouble signing in?{\" \"}\n            <a\n              href=\"#\"\n              className=\"underline underline-offset-4 transition-colors hover:text-primary\"\n            >\n              Contact support\n            </a>\n          </div>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-four-digits.tsx",
    "content": "\"use client\"\n\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\"\n\nexport function InputOTPFourDigits() {\n  return (\n    <InputOTP maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n        <InputOTPSlot index={3} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-invalid.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\n\nexport function InputOTPInvalid() {\n  const [value, setValue] = React.useState(\"000000\")\n\n  return (\n    <InputOTP maxLength={6} value={value} onChange={setValue}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} aria-invalid />\n        <InputOTPSlot index={1} aria-invalid />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={2} aria-invalid />\n        <InputOTPSlot index={3} aria-invalid />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={4} aria-invalid />\n        <InputOTPSlot index={5} aria-invalid />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-pattern.tsx",
    "content": "\"use client\"\n\nimport { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\"\n\nexport function InputOTPPattern() {\n  return (\n    <Field className=\"w-fit\">\n      <FieldLabel htmlFor=\"digits-only\">Digits Only</FieldLabel>\n      <InputOTP id=\"digits-only\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Field, FieldLabel } from \"@/examples/base/ui-rtl/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/base/ui-rtl/input-otp\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      verificationCode: \"Verification code\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      verificationCode: \"رمز التحقق\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      verificationCode: \"קוד אימות\",\n    },\n  },\n}\n\nexport function InputOTPRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Field className=\"mx-auto max-w-xs\">\n      <FieldLabel htmlFor=\"input-otp-rtl\">{t.verificationCode}</FieldLabel>\n      <InputOTP\n        maxLength={6}\n        defaultValue=\"123456\"\n        dir={dir}\n        id=\"input-otp-rtl\"\n      >\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-otp-separator.tsx",
    "content": "import {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/base/ui/input-otp\"\n\nexport default function InputOTPWithSeparator() {\n  return (\n    <InputOTP maxLength={6}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={2} />\n        <InputOTPSlot index={3} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-required.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\n\nexport function InputRequired() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-required\">\n        Required Field <span className=\"text-destructive\">*</span>\n      </FieldLabel>\n      <Input\n        id=\"input-required\"\n        placeholder=\"This field is required\"\n        required\n      />\n      <FieldDescription>This field must be filled out.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/input-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/base/ui-rtl/field\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      apiKey: \"API Key\",\n      placeholder: \"sk-...\",\n      description: \"Your API key is encrypted and stored securely.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      apiKey: \"مفتاح API\",\n      placeholder: \"sk-...\",\n      description: \"مفتاح API الخاص بك مشفر ومخزن بأمان.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      apiKey: \"מפתח API\",\n      placeholder: \"sk-...\",\n      description: \"מפתח ה-API שלך מוצפן ונשמר בצורה מאובטחת.\",\n    },\n  },\n}\n\nexport function InputRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Field dir={dir}>\n      <FieldLabel htmlFor=\"input-rtl-api-key\">{t.apiKey}</FieldLabel>\n      <Input\n        id=\"input-rtl-api-key\"\n        type=\"password\"\n        placeholder={t.placeholder}\n        dir={dir}\n      />\n      <FieldDescription>{t.description}</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-avatar.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { Plus } from \"lucide-react\"\n\nexport function ItemAvatar() {\n  return (\n    <div className=\"flex w-full max-w-lg flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemMedia>\n          <Avatar className=\"size-10\">\n            <AvatarImage src=\"https://github.com/evilrabbit.png\" />\n            <AvatarFallback>ER</AvatarFallback>\n          </Avatar>\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Evil Rabbit</ItemTitle>\n          <ItemDescription>Last seen 5 months ago</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button\n            size=\"icon-sm\"\n            variant=\"outline\"\n            className=\"rounded-full\"\n            aria-label=\"Invite\"\n          >\n            <Plus />\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia>\n          <div className=\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n            <Avatar className=\"hidden sm:flex\">\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar className=\"hidden sm:flex\">\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </div>\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>No Team Members</ItemTitle>\n          <ItemDescription>\n            Invite your team to collaborate on this project.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\" variant=\"outline\">\n            Invite\n          </Button>\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { BadgeCheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nexport function ItemDemo() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Basic Item</ItemTitle>\n          <ItemDescription>\n            A simple item with title and description.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\" render={<a href=\"#\" />}>\n        <ItemMedia>\n          <BadgeCheckIcon className=\"size-5\" />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Your profile has been verified.</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <ChevronRightIcon className=\"size-4\" />\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-dropdown.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nconst people = [\n  {\n    username: \"shadcn\",\n    avatar: \"https://github.com/shadcn.png\",\n    email: \"shadcn@vercel.com\",\n  },\n  {\n    username: \"maxleiter\",\n    avatar: \"https://github.com/maxleiter.png\",\n    email: \"maxleiter@vercel.com\",\n  },\n  {\n    username: \"evilrabbit\",\n    avatar: \"https://github.com/evilrabbit.png\",\n    email: \"evilrabbit@vercel.com\",\n  },\n]\n\nexport function ItemDropdown() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger render={<Button variant=\"outline\" />}>\n        Select <ChevronDownIcon />\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-48\" align=\"end\">\n        <DropdownMenuGroup>\n          {people.map((person) => (\n            <DropdownMenuItem key={person.username}>\n              <Item size=\"xs\" className=\"w-full p-2\">\n                <ItemMedia>\n                  <Avatar className=\"size-[--spacing(6.5)]\">\n                    <AvatarImage src={person.avatar} className=\"grayscale\" />\n                    <AvatarFallback>{person.username.charAt(0)}</AvatarFallback>\n                  </Avatar>\n                </ItemMedia>\n                <ItemContent className=\"gap-0\">\n                  <ItemTitle>{person.username}</ItemTitle>\n                  <ItemDescription className=\"leading-none\">\n                    {person.email}\n                  </ItemDescription>\n                </ItemContent>\n              </Item>\n            </DropdownMenuItem>\n          ))}\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-group.tsx",
    "content": "import * as React from \"react\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemMedia,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { PlusIcon } from \"lucide-react\"\n\nconst people = [\n  {\n    username: \"shadcn\",\n    avatar: \"https://github.com/shadcn.png\",\n    email: \"shadcn@vercel.com\",\n  },\n  {\n    username: \"maxleiter\",\n    avatar: \"https://github.com/maxleiter.png\",\n    email: \"maxleiter@vercel.com\",\n  },\n  {\n    username: \"evilrabbit\",\n    avatar: \"https://github.com/evilrabbit.png\",\n    email: \"evilrabbit@vercel.com\",\n  },\n]\n\nexport function ItemGroupExample() {\n  return (\n    <ItemGroup className=\"max-w-sm\">\n      {people.map((person, index) => (\n        <Item key={person.username} variant=\"outline\">\n          <ItemMedia>\n            <Avatar>\n              <AvatarImage src={person.avatar} className=\"grayscale\" />\n              <AvatarFallback>{person.username.charAt(0)}</AvatarFallback>\n            </Avatar>\n          </ItemMedia>\n          <ItemContent className=\"gap-1\">\n            <ItemTitle>{person.username}</ItemTitle>\n            <ItemDescription>{person.email}</ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\">\n              <PlusIcon />\n            </Button>\n          </ItemActions>\n        </Item>\n      ))}\n    </ItemGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-header.tsx",
    "content": "import Image from \"next/image\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemHeader,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\n\nconst models = [\n  {\n    name: \"v0-1.5-sm\",\n    description: \"Everyday tasks and UI generation.\",\n    image:\n      \"https://images.unsplash.com/photo-1650804068570-7fb2e3dbf888?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Valeria Reverdo on Unsplash\",\n  },\n  {\n    name: \"v0-1.5-lg\",\n    description: \"Advanced thinking or reasoning.\",\n    image:\n      \"https://images.unsplash.com/photo-1610280777472-54133d004c8c?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Michael Oeser on Unsplash\",\n  },\n  {\n    name: \"v0-2.0-mini\",\n    description: \"Open Source model for everyone.\",\n    image:\n      \"https://images.unsplash.com/photo-1602146057681-08560aee8cde?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Cherry Laithang on Unsplash\",\n  },\n]\n\nexport function ItemHeaderDemo() {\n  return (\n    <div className=\"flex w-full max-w-xl flex-col gap-6\">\n      <ItemGroup className=\"grid grid-cols-3 gap-4\">\n        {models.map((model) => (\n          <Item key={model.name} variant=\"outline\">\n            <ItemHeader>\n              <Image\n                src={model.image}\n                alt={model.name}\n                width={128}\n                height={128}\n                className=\"aspect-square w-full rounded-sm object-cover\"\n              />\n            </ItemHeader>\n            <ItemContent>\n              <ItemTitle>{model.name}</ItemTitle>\n              <ItemDescription>{model.description}</ItemDescription>\n            </ItemContent>\n          </Item>\n        ))}\n      </ItemGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-icon.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { ShieldAlertIcon } from \"lucide-react\"\n\nexport function ItemIcon() {\n  return (\n    <div className=\"flex w-full max-w-lg flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <ShieldAlertIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Security Alert</ItemTitle>\n          <ItemDescription>\n            New login detected from unknown device.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\" variant=\"outline\">\n            Review\n          </Button>\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-image.tsx",
    "content": "import Image from \"next/image\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\n\nconst music = [\n  {\n    title: \"Midnight City Lights\",\n    artist: \"Neon Dreams\",\n    album: \"Electric Nights\",\n    duration: \"3:45\",\n  },\n  {\n    title: \"Coffee Shop Conversations\",\n    artist: \"The Morning Brew\",\n    album: \"Urban Stories\",\n    duration: \"4:05\",\n  },\n  {\n    title: \"Digital Rain\",\n    artist: \"Cyber Symphony\",\n    album: \"Binary Beats\",\n    duration: \"3:30\",\n  },\n]\n\nexport function ItemImage() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <ItemGroup className=\"gap-4\">\n        {music.map((song) => (\n          <Item\n            key={song.title}\n            variant=\"outline\"\n            render={<a href=\"#\" />}\n            role=\"listitem\"\n          >\n            <ItemMedia variant=\"image\">\n              <Image\n                src={`https://avatar.vercel.sh/${song.title}`}\n                alt={song.title}\n                width={32}\n                height={32}\n                className=\"object-cover grayscale\"\n              />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle className=\"line-clamp-1\">\n                {song.title} -{\" \"}\n                <span className=\"text-muted-foreground\">{song.album}</span>\n              </ItemTitle>\n              <ItemDescription>{song.artist}</ItemDescription>\n            </ItemContent>\n            <ItemContent className=\"flex-none text-center\">\n              <ItemDescription>{song.duration}</ItemDescription>\n            </ItemContent>\n          </Item>\n        ))}\n      </ItemGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-link.tsx",
    "content": "import {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { ChevronRightIcon, ExternalLinkIcon } from \"lucide-react\"\n\nexport function ItemLink() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-4\">\n      <Item render={<a href=\"#\" />}>\n        <ItemContent>\n          <ItemTitle>Visit our documentation</ItemTitle>\n          <ItemDescription>\n            Learn how to get started with our components.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <ChevronRightIcon className=\"size-4\" />\n        </ItemActions>\n      </Item>\n      <Item\n        variant=\"outline\"\n        render={<a href=\"#\" target=\"_blank\" rel=\"noopener noreferrer\" />}\n      >\n        <ItemContent>\n          <ItemTitle>External resource</ItemTitle>\n          <ItemDescription>\n            Opens in a new tab with security attributes.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <ExternalLinkIcon className=\"size-4\" />\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui-rtl/item\"\nimport { BadgeCheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      basicItem: \"Basic Item\",\n      basicItemDesc: \"A simple item with title and description.\",\n      action: \"Action\",\n      verifiedTitle: \"Your profile has been verified.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      basicItem: \"عنصر أساسي\",\n      basicItemDesc: \"عنصر بسيط يحتوي على عنوان ووصف.\",\n      action: \"إجراء\",\n      verifiedTitle: \"تم التحقق من ملفك الشخصي.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      basicItem: \"פריט בסיסי\",\n      basicItemDesc: \"פריט פשוט עם כותרת ותיאור.\",\n      action: \"פעולה\",\n      verifiedTitle: \"הפרופיל שלך אומת.\",\n    },\n  },\n}\n\nexport function ItemRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\" dir={dir}>\n      <Item variant=\"outline\" dir={dir}>\n        <ItemContent>\n          <ItemTitle>{t.basicItem}</ItemTitle>\n          <ItemDescription>{t.basicItemDesc}</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            {t.action}\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\" render={<a href=\"#\" />} dir={dir}>\n        <ItemMedia>\n          <BadgeCheckIcon className=\"size-5\" />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>{t.verifiedTitle}</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <ChevronRightIcon className=\"size-4\" />\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-size.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { InboxIcon } from \"lucide-react\"\n\nexport function ItemSizeDemo() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Default Size</ItemTitle>\n          <ItemDescription>\n            The standard size for most use cases.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Small Size</ItemTitle>\n          <ItemDescription>A compact size for dense layouts.</ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Extra Small Size</ItemTitle>\n          <ItemDescription>The most compact size available.</ItemDescription>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/item-variant.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { InboxIcon } from \"lucide-react\"\n\nexport function ItemVariant() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Default Variant</ItemTitle>\n          <ItemDescription>\n            Transparent background with no border.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Outline Variant</ItemTitle>\n          <ItemDescription>\n            Outlined style with a visible border.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Muted Variant</ItemTitle>\n          <ItemDescription>\n            Muted background for secondary content.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/kbd-button.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Kbd } from \"@/examples/base/ui/kbd\"\n\nexport default function KbdButton() {\n  return (\n    <Button variant=\"outline\">\n      Accept{\" \"}\n      <Kbd data-icon=\"inline-end\" className=\"translate-x-0.5\">\n        ⏎\n      </Kbd>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/kbd-demo.tsx",
    "content": "import { Kbd, KbdGroup } from \"@/examples/base/ui/kbd\"\n\nexport default function KbdDemo() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <KbdGroup>\n        <Kbd>⌘</Kbd>\n        <Kbd>⇧</Kbd>\n        <Kbd>⌥</Kbd>\n        <Kbd>⌃</Kbd>\n      </KbdGroup>\n      <KbdGroup>\n        <Kbd>Ctrl</Kbd>\n        <span>+</span>\n        <Kbd>B</Kbd>\n      </KbdGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/kbd-group.tsx",
    "content": "import { Kbd, KbdGroup } from \"@/examples/base/ui/kbd\"\n\nexport default function KbdGroupExample() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <p className=\"text-sm text-muted-foreground\">\n        Use{\" \"}\n        <KbdGroup>\n          <Kbd>Ctrl + B</Kbd>\n          <Kbd>Ctrl + K</Kbd>\n        </KbdGroup>{\" \"}\n        to open the command palette\n      </p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/kbd-input-group.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Kbd } from \"@/examples/base/ui/kbd\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport default function KbdInputGroup() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Search...\" />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <Kbd>⌘</Kbd>\n          <Kbd>K</Kbd>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/kbd-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Kbd, KbdGroup } from \"@/examples/base/ui-rtl/kbd\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nexport function KbdRtl() {\n  const { dir } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex flex-col items-center gap-4\" dir={dir}>\n      <KbdGroup>\n        <Kbd>⌘</Kbd>\n        <Kbd>⇧</Kbd>\n        <Kbd>⌥</Kbd>\n        <Kbd>⌃</Kbd>\n      </KbdGroup>\n      <KbdGroup>\n        <Kbd>Ctrl</Kbd>\n        <span>+</span>\n        <Kbd>B</Kbd>\n      </KbdGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/kbd-tooltip.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { ButtonGroup } from \"@/examples/base/ui/button-group\"\nimport { Kbd, KbdGroup } from \"@/examples/base/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\n\nexport default function KbdTooltip() {\n  return (\n    <div className=\"flex flex-wrap gap-4\">\n      <ButtonGroup>\n        <Tooltip>\n          <TooltipTrigger render={<Button variant=\"outline\" />}>\n            Save\n          </TooltipTrigger>\n          <TooltipContent>\n            Save Changes <Kbd>S</Kbd>\n          </TooltipContent>\n        </Tooltip>\n        <Tooltip>\n          <TooltipTrigger render={<Button variant=\"outline\" />}>\n            Print\n          </TooltipTrigger>\n          <TooltipContent>\n            Print Document{\" \"}\n            <KbdGroup>\n              <Kbd>Ctrl</Kbd>\n              <Kbd>P</Kbd>\n            </KbdGroup>\n          </TooltipContent>\n        </Tooltip>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/label-demo.tsx",
    "content": "import { Checkbox } from \"@/examples/base/ui/checkbox\"\nimport { Label } from \"@/examples/base/ui/label\"\n\nexport default function LabelDemo() {\n  return (\n    <div className=\"flex gap-2\">\n      <Checkbox id=\"terms\" />\n      <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/label-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Checkbox } from \"@/examples/base/ui-rtl/checkbox\"\nimport { Label } from \"@/examples/base/ui-rtl/label\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Accept terms and conditions\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"قبول الشروط والأحكام\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"קבל תנאים והגבלות\",\n    },\n  },\n}\n\nexport function LabelRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex gap-2\" dir={dir}>\n      <Checkbox id=\"terms-rtl\" dir={dir} />\n      <Label htmlFor=\"terms-rtl\" dir={dir}>\n        {t.label}\n      </Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "apps/v4/examples/base/menubar-checkbox.tsx",
    "content": "import {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarTrigger,\n} from \"@/examples/base/ui/menubar\"\n\nexport function MenubarCheckbox() {\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>View</MenubarTrigger>\n        <MenubarContent className=\"w-64\">\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\n          <MenubarCheckboxItem checked>\n            Always Show Full URLs\n          </MenubarCheckboxItem>\n          <MenubarSeparator />\n          <MenubarItem inset>\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem disabled inset>\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\n          </MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Format</MenubarTrigger>\n        <MenubarContent>\n          <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\n          <MenubarCheckboxItem>Code</MenubarCheckboxItem>\n          <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/menubar-demo.tsx",
    "content": "import {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/examples/base/ui/menubar\"\n\nexport default function MenubarDemo() {\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>File</MenubarTrigger>\n        <MenubarContent>\n          <MenubarGroup>\n            <MenubarItem>\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled>New Incognito Window</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarSub>\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Email link</MenubarItem>\n                  <MenubarItem>Messages</MenubarItem>\n                  <MenubarItem>Notes</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem>\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Edit</MenubarTrigger>\n        <MenubarContent>\n          <MenubarGroup>\n            <MenubarItem>\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarSub>\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Search the web</MenubarItem>\n                </MenubarGroup>\n                <MenubarSeparator />\n                <MenubarGroup>\n                  <MenubarItem>Find...</MenubarItem>\n                  <MenubarItem>Find Next</MenubarItem>\n                  <MenubarItem>Find Previous</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem>Cut</MenubarItem>\n            <MenubarItem>Copy</MenubarItem>\n            <MenubarItem>Paste</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>View</MenubarTrigger>\n        <MenubarContent className=\"w-44\">\n          <MenubarGroup>\n            <MenubarCheckboxItem>Bookmarks Bar</MenubarCheckboxItem>\n            <MenubarCheckboxItem checked>Full URLs</MenubarCheckboxItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>\n              Reload <MenubarShortcut>⌘R</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled inset>\n              Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>Toggle Fullscreen</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>Hide Sidebar</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Profiles</MenubarTrigger>\n        <MenubarContent>\n          <MenubarRadioGroup value=\"benoit\">\n            <MenubarRadioItem value=\"andy\">Andy</MenubarRadioItem>\n            <MenubarRadioItem value=\"benoit\">Benoit</MenubarRadioItem>\n            <MenubarRadioItem value=\"Luis\">Luis</MenubarRadioItem>\n          </MenubarRadioGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>Edit...</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>Add Profile...</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/menubar-icons.tsx",
    "content": "import {\n  Menubar,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarTrigger,\n} from \"@/examples/base/ui/menubar\"\nimport {\n  FileIcon,\n  FolderIcon,\n  HelpCircleIcon,\n  SaveIcon,\n  SettingsIcon,\n  TrashIcon,\n} from \"lucide-react\"\n\nexport function MenubarIcons() {\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>File</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem>\n            <FileIcon />\n            New File <MenubarShortcut>⌘N</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem>\n            <FolderIcon />\n            Open Folder\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem>\n            <SaveIcon />\n            Save <MenubarShortcut>⌘S</MenubarShortcut>\n          </MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>More</MenubarTrigger>\n        <MenubarContent>\n          <MenubarGroup>\n            <MenubarItem>\n              <SettingsIcon />\n              Settings\n            </MenubarItem>\n            <MenubarItem>\n              <HelpCircleIcon />\n              Help\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem variant=\"destructive\">\n              <TrashIcon />\n              Delete\n            </MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/menubar-radio.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Menubar,\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarTrigger,\n} from \"@/examples/base/ui/menubar\"\n\nexport function MenubarRadio() {\n  const [user, setUser] = React.useState(\"benoit\")\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>Profiles</MenubarTrigger>\n        <MenubarContent>\n          <MenubarRadioGroup value={user} onValueChange={setUser}>\n            <MenubarRadioItem value=\"andy\">Andy</MenubarRadioItem>\n            <MenubarRadioItem value=\"benoit\">Benoit</MenubarRadioItem>\n            <MenubarRadioItem value=\"luis\">Luis</MenubarRadioItem>\n          </MenubarRadioGroup>\n          <MenubarSeparator />\n          <MenubarItem inset>Edit...</MenubarItem>\n          <MenubarItem inset>Add Profile...</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Theme</MenubarTrigger>\n        <MenubarContent>\n          <MenubarRadioGroup value={theme} onValueChange={setTheme}>\n            <MenubarRadioItem value=\"light\">Light</MenubarRadioItem>\n            <MenubarRadioItem value=\"dark\">Dark</MenubarRadioItem>\n            <MenubarRadioItem value=\"system\">System</MenubarRadioItem>\n          </MenubarRadioGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/menubar-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/examples/base/ui-rtl/menubar\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      file: \"File\",\n      newTab: \"New Tab\",\n      newWindow: \"New Window\",\n      newIncognitoWindow: \"New Incognito Window\",\n      share: \"Share\",\n      emailLink: \"Email link\",\n      messages: \"Messages\",\n      notes: \"Notes\",\n      print: \"Print...\",\n      edit: \"Edit\",\n      undo: \"Undo\",\n      redo: \"Redo\",\n      find: \"Find\",\n      searchTheWeb: \"Search the web\",\n      findItem: \"Find...\",\n      findNext: \"Find Next\",\n      findPrevious: \"Find Previous\",\n      cut: \"Cut\",\n      copy: \"Copy\",\n      paste: \"Paste\",\n      view: \"View\",\n      bookmarksBar: \"Bookmarks Bar\",\n      fullUrls: \"Full URLs\",\n      reload: \"Reload\",\n      forceReload: \"Force Reload\",\n      toggleFullscreen: \"Toggle Fullscreen\",\n      hideSidebar: \"Hide Sidebar\",\n      profiles: \"Profiles\",\n      andy: \"Andy\",\n      benoit: \"Benoit\",\n      luis: \"Luis\",\n      editProfile: \"Edit...\",\n      addProfile: \"Add Profile...\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      file: \"ملف\",\n      newTab: \"علامة تبويب جديدة\",\n      newWindow: \"نافذة جديدة\",\n      newIncognitoWindow: \"نافذة التصفح المتخفي الجديدة\",\n      share: \"مشاركة\",\n      emailLink: \"رابط البريد الإلكتروني\",\n      messages: \"الرسائل\",\n      notes: \"الملاحظات\",\n      print: \"طباعة...\",\n      edit: \"تعديل\",\n      undo: \"تراجع\",\n      redo: \"إعادة\",\n      find: \"بحث\",\n      searchTheWeb: \"البحث على الويب\",\n      findItem: \"بحث...\",\n      findNext: \"البحث التالي\",\n      findPrevious: \"البحث السابق\",\n      cut: \"قص\",\n      copy: \"نسخ\",\n      paste: \"لصق\",\n      view: \"عرض\",\n      bookmarksBar: \"شريط الإشارات المرجعية\",\n      fullUrls: \"عناوين URL الكاملة\",\n      reload: \"إعادة تحميل\",\n      forceReload: \"إعادة تحميل قسري\",\n      toggleFullscreen: \"تبديل وضع ملء الشاشة\",\n      hideSidebar: \"إخفاء الشريط الجانبي\",\n      profiles: \"الملفات الشخصية\",\n      andy: \"Andy\",\n      benoit: \"Benoit\",\n      luis: \"Luis\",\n      editProfile: \"تعديل...\",\n      addProfile: \"إضافة ملف شخصي...\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      file: \"קובץ\",\n      newTab: \"כרטיסייה חדשה\",\n      newWindow: \"חלון חדש\",\n      newIncognitoWindow: \"חלון גלישה בסתר חדש\",\n      share: \"שתף\",\n      emailLink: \"קישור אימייל\",\n      messages: \"הודעות\",\n      notes: \"הערות\",\n      print: \"הדפס...\",\n      edit: \"ערוך\",\n      undo: \"בטל\",\n      redo: \"בצע שוב\",\n      find: \"מצא\",\n      searchTheWeb: \"חפש באינטרנט\",\n      findItem: \"מצא...\",\n      findNext: \"מצא הבא\",\n      findPrevious: \"מצא הקודם\",\n      cut: \"גזור\",\n      copy: \"העתק\",\n      paste: \"הדבק\",\n      view: \"תצוגה\",\n      bookmarksBar: \"סרגל סימניות\",\n      fullUrls: \"כתובות URL מלאות\",\n      reload: \"רענן\",\n      forceReload: \"רענן בכוח\",\n      toggleFullscreen: \"החלף מסך מלא\",\n      hideSidebar: \"הסתר סרגל צד\",\n      profiles: \"פרופילים\",\n      andy: \"Andy\",\n      benoit: \"Benoit\",\n      luis: \"Luis\",\n      editProfile: \"ערוך...\",\n      addProfile: \"הוסף פרופיל...\",\n    },\n  },\n}\n\nexport function MenubarRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [profile, setProfile] = React.useState(\"benoit\")\n\n  return (\n    <Menubar className=\"w-72\" dir={dir}>\n      <MenubarMenu>\n        <MenubarTrigger>{t.file}</MenubarTrigger>\n        <MenubarContent dir={dir} align={dir === \"rtl\" ? \"end\" : \"start\"}>\n          <MenubarGroup>\n            <MenubarItem>\n              {t.newTab} <MenubarShortcut>⌘T</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              {t.newWindow} <MenubarShortcut>⌘N</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled>{t.newIncognitoWindow}</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarSub>\n              <MenubarSubTrigger>{t.share}</MenubarSubTrigger>\n              <MenubarSubContent\n                dir={dir}\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <MenubarGroup>\n                  <MenubarItem>{t.emailLink}</MenubarItem>\n                  <MenubarItem>{t.messages}</MenubarItem>\n                  <MenubarItem>{t.notes}</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem>\n              {t.print} <MenubarShortcut>⌘P</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>{t.edit}</MenubarTrigger>\n        <MenubarContent\n          dir={dir}\n          align={dir === \"rtl\" ? \"end\" : \"start\"}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <MenubarGroup>\n            <MenubarItem>\n              {t.undo} <MenubarShortcut>⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              {t.redo} <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarSub>\n              <MenubarSubTrigger>{t.find}</MenubarSubTrigger>\n              <MenubarSubContent\n                dir={dir}\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <MenubarGroup>\n                  <MenubarItem>{t.searchTheWeb}</MenubarItem>\n                </MenubarGroup>\n                <MenubarSeparator />\n                <MenubarGroup>\n                  <MenubarItem>{t.findItem}</MenubarItem>\n                  <MenubarItem>{t.findNext}</MenubarItem>\n                  <MenubarItem>{t.findPrevious}</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem>{t.cut}</MenubarItem>\n            <MenubarItem>{t.copy}</MenubarItem>\n            <MenubarItem>{t.paste}</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>{t.view}</MenubarTrigger>\n        <MenubarContent\n          className=\"w-44\"\n          dir={dir}\n          align={dir === \"rtl\" ? \"end\" : \"start\"}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <MenubarGroup>\n            <MenubarCheckboxItem>{t.bookmarksBar}</MenubarCheckboxItem>\n            <MenubarCheckboxItem checked>{t.fullUrls}</MenubarCheckboxItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>\n              {t.reload} <MenubarShortcut>⌘R</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled inset>\n              {t.forceReload} <MenubarShortcut>⇧⌘R</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>{t.toggleFullscreen}</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>{t.hideSidebar}</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>{t.profiles}</MenubarTrigger>\n        <MenubarContent\n          dir={dir}\n          align={dir === \"rtl\" ? \"end\" : \"start\"}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <MenubarRadioGroup value={profile} onValueChange={setProfile}>\n            <MenubarRadioItem value=\"andy\">{t.andy}</MenubarRadioItem>\n            <MenubarRadioItem value=\"benoit\">{t.benoit}</MenubarRadioItem>\n            <MenubarRadioItem value=\"Luis\">{t.luis}</MenubarRadioItem>\n          </MenubarRadioGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>{t.editProfile}</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>{t.addProfile}</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/menubar-submenu.tsx",
    "content": "import {\n  Menubar,\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/examples/base/ui/menubar\"\n\nexport function MenubarSubmenu() {\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>File</MenubarTrigger>\n        <MenubarContent>\n          <MenubarSub>\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem>Email link</MenubarItem>\n              <MenubarItem>Messages</MenubarItem>\n              <MenubarItem>Notes</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n          <MenubarSeparator />\n          <MenubarItem>\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\n          </MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Edit</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem>\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem>\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarSub>\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem>Find...</MenubarItem>\n              <MenubarItem>Find Next</MenubarItem>\n              <MenubarItem>Find Previous</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n          <MenubarSeparator />\n          <MenubarItem>Cut</MenubarItem>\n          <MenubarItem>Copy</MenubarItem>\n          <MenubarItem>Paste</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/muted-item-group.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\n\nexport function MutedItemGroup() {\n  return (\n    <ItemGroup>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Item 1</ItemTitle>\n          <ItemDescription>First item in muted group.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Item 2</ItemTitle>\n          <ItemDescription>Second item in muted group.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Item 3</ItemTitle>\n          <ItemDescription>Third item in muted group.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n    </ItemGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/native-select-demo.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/examples/base/ui/native-select\"\n\nexport default function NativeSelectDemo() {\n  return (\n    <NativeSelect>\n      <NativeSelectOption value=\"\">Select status</NativeSelectOption>\n      <NativeSelectOption value=\"todo\">Todo</NativeSelectOption>\n      <NativeSelectOption value=\"in-progress\">In Progress</NativeSelectOption>\n      <NativeSelectOption value=\"done\">Done</NativeSelectOption>\n      <NativeSelectOption value=\"cancelled\">Cancelled</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/native-select-disabled.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/examples/base/ui/native-select\"\n\nexport function NativeSelectDisabled() {\n  return (\n    <NativeSelect disabled>\n      <NativeSelectOption value=\"\">Disabled</NativeSelectOption>\n      <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n      <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n      <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/native-select-groups.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/examples/base/ui/native-select\"\n\nexport default function NativeSelectGroups() {\n  return (\n    <NativeSelect>\n      <NativeSelectOption value=\"\">Select department</NativeSelectOption>\n      <NativeSelectOptGroup label=\"Engineering\">\n        <NativeSelectOption value=\"frontend\">Frontend</NativeSelectOption>\n        <NativeSelectOption value=\"backend\">Backend</NativeSelectOption>\n        <NativeSelectOption value=\"devops\">DevOps</NativeSelectOption>\n      </NativeSelectOptGroup>\n      <NativeSelectOptGroup label=\"Sales\">\n        <NativeSelectOption value=\"sales-rep\">Sales Rep</NativeSelectOption>\n        <NativeSelectOption value=\"account-manager\">\n          Account Manager\n        </NativeSelectOption>\n        <NativeSelectOption value=\"sales-director\">\n          Sales Director\n        </NativeSelectOption>\n      </NativeSelectOptGroup>\n      <NativeSelectOptGroup label=\"Operations\">\n        <NativeSelectOption value=\"support\">\n          Customer Support\n        </NativeSelectOption>\n        <NativeSelectOption value=\"product-manager\">\n          Product Manager\n        </NativeSelectOption>\n        <NativeSelectOption value=\"ops-manager\">\n          Operations Manager\n        </NativeSelectOption>\n      </NativeSelectOptGroup>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/native-select-invalid.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/examples/base/ui/native-select\"\n\nexport function NativeSelectInvalid() {\n  return (\n    <NativeSelect aria-invalid=\"true\">\n      <NativeSelectOption value=\"\">Error state</NativeSelectOption>\n      <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n      <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n      <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/native-select-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/examples/base/ui-rtl/native-select\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      placeholder: \"Select status\",\n      todo: \"Todo\",\n      inProgress: \"In Progress\",\n      done: \"Done\",\n      cancelled: \"Cancelled\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"اختر الحالة\",\n      todo: \"مهام\",\n      inProgress: \"قيد التنفيذ\",\n      done: \"منجز\",\n      cancelled: \"ملغي\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"בחר סטטוס\",\n      todo: \"לעשות\",\n      inProgress: \"בתהליך\",\n      done: \"הושלם\",\n      cancelled: \"בוטל\",\n    },\n  },\n}\n\nexport function NativeSelectRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <NativeSelect dir={dir}>\n      <NativeSelectOption value=\"\">{t.placeholder}</NativeSelectOption>\n      <NativeSelectOption value=\"todo\">{t.todo}</NativeSelectOption>\n      <NativeSelectOption value=\"in-progress\">\n        {t.inProgress}\n      </NativeSelectOption>\n      <NativeSelectOption value=\"done\">{t.done}</NativeSelectOption>\n      <NativeSelectOption value=\"cancelled\">{t.cancelled}</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/navigation-menu-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"@/examples/base/ui/navigation-menu\"\nimport {\n  CircleAlertIcon,\n  CircleCheckIcon,\n  CircleDashedIcon,\n} from \"lucide-react\"\n\nconst components: { title: string; href: string; description: string }[] = [\n  {\n    title: \"Alert Dialog\",\n    href: \"/docs/primitives/alert-dialog\",\n    description:\n      \"A modal dialog that interrupts the user with important content and expects a response.\",\n  },\n  {\n    title: \"Hover Card\",\n    href: \"/docs/primitives/hover-card\",\n    description:\n      \"For sighted users to preview content available behind a link.\",\n  },\n  {\n    title: \"Progress\",\n    href: \"/docs/primitives/progress\",\n    description:\n      \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n  },\n  {\n    title: \"Scroll-area\",\n    href: \"/docs/primitives/scroll-area\",\n    description: \"Visually or semantically separates content.\",\n  },\n  {\n    title: \"Tabs\",\n    href: \"/docs/primitives/tabs\",\n    description:\n      \"A set of layered sections of content—known as tab panels—that are displayed one at a time.\",\n  },\n  {\n    title: \"Tooltip\",\n    href: \"/docs/primitives/tooltip\",\n    description:\n      \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n  },\n]\n\nexport default function NavigationMenuDemo() {\n  return (\n    <NavigationMenu>\n      <NavigationMenuList>\n        <NavigationMenuItem>\n          <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"w-96\">\n              <ListItem href=\"/docs\" title=\"Introduction\">\n                Re-usable components built with Tailwind CSS.\n              </ListItem>\n              <ListItem href=\"/docs/installation\" title=\"Installation\">\n                How to install dependencies and structure your app.\n              </ListItem>\n              <ListItem href=\"/docs/primitives/typography\" title=\"Typography\">\n                Styles for headings, paragraphs, lists...etc\n              </ListItem>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem className=\"hidden md:flex\">\n          <NavigationMenuTrigger>Components</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n              {components.map((component) => (\n                <ListItem\n                  key={component.title}\n                  title={component.title}\n                  href={component.href}\n                >\n                  {component.description}\n                </ListItem>\n              ))}\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"grid w-[200px]\">\n              <li>\n                <NavigationMenuLink\n                  render={\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                  }\n                >\n                  <CircleAlertIcon />\n                  Backlog\n                </NavigationMenuLink>\n                <NavigationMenuLink\n                  render={\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                  }\n                >\n                  <CircleDashedIcon />\n                  To Do\n                </NavigationMenuLink>\n                <NavigationMenuLink\n                  render={\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                  }\n                >\n                  <CircleCheckIcon />\n                  Done\n                </NavigationMenuLink>\n              </li>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuLink\n            render={<Link href=\"/docs\" />}\n            className={navigationMenuTriggerStyle()}\n          >\n            Docs\n          </NavigationMenuLink>\n        </NavigationMenuItem>\n      </NavigationMenuList>\n    </NavigationMenu>\n  )\n}\n\nfunction ListItem({\n  title,\n  children,\n  href,\n  ...props\n}: React.ComponentPropsWithoutRef<\"li\"> & { href: string }) {\n  return (\n    <li {...props}>\n      <NavigationMenuLink render={<Link href={href} />}>\n        <div className=\"flex flex-col gap-1 text-sm\">\n          <div className=\"leading-none font-medium\">{title}</div>\n          <div className=\"line-clamp-2 text-muted-foreground\">{children}</div>\n        </div>\n      </NavigationMenuLink>\n    </li>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/navigation-menu-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"@/examples/base/ui-rtl/navigation-menu\"\nimport {\n  CircleAlertIcon,\n  CircleCheckIcon,\n  CircleDashedIcon,\n} from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      gettingStarted: \"Getting started\",\n      introduction: \"Introduction\",\n      introductionDesc: \"Re-usable components built with Tailwind CSS.\",\n      installation: \"Installation\",\n      installationDesc: \"How to install dependencies and structure your app.\",\n      typography: \"Typography\",\n      typographyDesc: \"Styles for headings, paragraphs, lists...etc\",\n      components: \"Components\",\n      alertDialog: \"Alert Dialog\",\n      alertDialogDesc:\n        \"A modal dialog that interrupts the user with important content and expects a response.\",\n      hoverCard: \"Hover Card\",\n      hoverCardDesc:\n        \"For sighted users to preview content available behind a link.\",\n      progress: \"Progress\",\n      progressDesc:\n        \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n      scrollArea: \"Scroll-area\",\n      scrollAreaDesc: \"Visually or semantically separates content.\",\n      tabs: \"Tabs\",\n      tabsDesc:\n        \"A set of layered sections of content—known as tab panels—that are displayed one at a time.\",\n      tooltip: \"Tooltip\",\n      tooltipDesc:\n        \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n      withIcon: \"With Icon\",\n      backlog: \"Backlog\",\n      toDo: \"To Do\",\n      done: \"Done\",\n      docs: \"Docs\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      gettingStarted: \"البدء\",\n      introduction: \"مقدمة\",\n      introductionDesc:\n        \"مكونات قابلة لإعادة الاستخدام مبنية باستخدام Tailwind CSS.\",\n      installation: \"التثبيت\",\n      installationDesc: \"كيفية تثبيت التبعيات وتنظيم تطبيقك.\",\n      typography: \"الطباعة\",\n      typographyDesc: \"أنماط للعناوين والفقرات والقوائم...إلخ\",\n      components: \"المكونات\",\n      alertDialog: \"حوار التنبيه\",\n      alertDialogDesc: \"حوار نافذة يقطع المستخدم بمحتوى مهم ويتوقع استجابة.\",\n      hoverCard: \"بطاقة التحويم\",\n      hoverCardDesc: \"للمستخدمين المبصرين لمعاينة المحتوى المتاح خلف الرابط.\",\n      progress: \"التقدم\",\n      progressDesc:\n        \"يعرض مؤشرًا يوضح تقدم إتمام المهمة، عادةً يتم عرضه كشريط تقدم.\",\n      scrollArea: \"منطقة التمرير\",\n      scrollAreaDesc: \"يفصل المحتوى بصريًا أو دلاليًا.\",\n      tabs: \"التبويبات\",\n      tabsDesc:\n        \"مجموعة من أقسام المحتوى المتعددة الطبقات—المعروفة بألواح التبويب—التي يتم عرضها واحدة في كل مرة.\",\n      tooltip: \"تلميح\",\n      tooltipDesc:\n        \"نافذة منبثقة تعرض معلومات متعلقة بعنصر عندما يتلقى العنصر التركيز على لوحة المفاتيح أو عند تحويم الماوس فوقه.\",\n      withIcon: \"مع أيقونة\",\n      backlog: \"قائمة الانتظار\",\n      toDo: \"المهام\",\n      done: \"منجز\",\n      docs: \"الوثائق\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      gettingStarted: \"התחלה\",\n      introduction: \"הקדמה\",\n      introductionDesc: \"רכיבים לשימוש חוזר שנבנו עם Tailwind CSS.\",\n      installation: \"התקנה\",\n      installationDesc: \"כיצד להתקין תלויות ולבנות את האפליקציה שלך.\",\n      typography: \"טיפוגרפיה\",\n      typographyDesc: \"סגנונות לכותרות, פסקאות, רשימות...וכו'\",\n      components: \"רכיבים\",\n      alertDialog: \"דיאלוג התראה\",\n      alertDialogDesc: \"דיאלוג מודאלי שמפריע למשתמש עם תוכן חשוב ומצפה לתגובה.\",\n      hoverCard: \"כרטיס ריחוף\",\n      hoverCardDesc:\n        \"למשתמשים רואים כדי להציג תצוגה מקדימה של תוכן זמין מאחורי קישור.\",\n      progress: \"התקדמות\",\n      progressDesc:\n        \"מציג אינדיקטור המציג את התקדמות ההשלמה של משימה, בדרך כלל מוצג כסרגל התקדמות.\",\n      scrollArea: \"אזור גלילה\",\n      scrollAreaDesc: \"מפריד תוכן חזותית או סמנטית.\",\n      tabs: \"כרטיסיות\",\n      tabsDesc:\n        \"קבוצה של חלקי תוכן מרובדים—המכונים לוחות כרטיסיות—המוצגים אחד בכל פעם.\",\n      tooltip: \"טולטיפ\",\n      tooltipDesc:\n        \"חלון קופץ המציג מידע הקשור לאלמנט כאשר האלמנט מקבל מיקוד מקלדת או כאשר העכבר מרחף מעליו.\",\n      withIcon: \"עם אייקון\",\n      backlog: \"רשימת המתנה\",\n      toDo: \"לעשות\",\n      done: \"הושלם\",\n      docs: \"תיעוד\",\n    },\n  },\n}\n\nconst components = [\n  {\n    titleKey: \"alertDialog\" as const,\n    descriptionKey: \"alertDialogDesc\" as const,\n    href: \"/docs/primitives/alert-dialog\",\n  },\n  {\n    titleKey: \"hoverCard\" as const,\n    descriptionKey: \"hoverCardDesc\" as const,\n    href: \"/docs/primitives/hover-card\",\n  },\n  {\n    titleKey: \"progress\" as const,\n    descriptionKey: \"progressDesc\" as const,\n    href: \"/docs/primitives/progress\",\n  },\n  {\n    titleKey: \"scrollArea\" as const,\n    descriptionKey: \"scrollAreaDesc\" as const,\n    href: \"/docs/primitives/scroll-area\",\n  },\n  {\n    titleKey: \"tabs\" as const,\n    descriptionKey: \"tabsDesc\" as const,\n    href: \"/docs/primitives/tabs\",\n  },\n  {\n    titleKey: \"tooltip\" as const,\n    descriptionKey: \"tooltipDesc\" as const,\n    href: \"/docs/primitives/tooltip\",\n  },\n] as const\n\nexport function NavigationMenuRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <NavigationMenu dir={dir} align={dir === \"rtl\" ? \"end\" : \"start\"}>\n      <NavigationMenuList>\n        <NavigationMenuItem>\n          <NavigationMenuTrigger>{t.gettingStarted}</NavigationMenuTrigger>\n          <NavigationMenuContent\n            dir={dir}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            <ul className=\"w-96\">\n              <ListItem href=\"/docs\" title={t.introduction}>\n                {t.introductionDesc}\n              </ListItem>\n              <ListItem href=\"/docs/installation\" title={t.installation}>\n                {t.installationDesc}\n              </ListItem>\n              <ListItem href=\"/docs/primitives/typography\" title={t.typography}>\n                {t.typographyDesc}\n              </ListItem>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem className=\"hidden md:flex\">\n          <NavigationMenuTrigger>{t.components}</NavigationMenuTrigger>\n          <NavigationMenuContent\n            dir={dir}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            <ul className=\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n              {components.map((component) => (\n                <ListItem\n                  key={component.titleKey}\n                  title={t[component.titleKey]}\n                  href={component.href}\n                >\n                  {t[component.descriptionKey]}\n                </ListItem>\n              ))}\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuTrigger>{t.withIcon}</NavigationMenuTrigger>\n          <NavigationMenuContent\n            dir={dir}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            <ul className=\"grid w-[200px]\">\n              <li>\n                <NavigationMenuLink\n                  render={\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                  }\n                >\n                  <CircleAlertIcon />\n                  {t.backlog}\n                </NavigationMenuLink>\n                <NavigationMenuLink\n                  render={\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                  }\n                >\n                  <CircleDashedIcon />\n                  {t.toDo}\n                </NavigationMenuLink>\n                <NavigationMenuLink\n                  render={\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                  }\n                >\n                  <CircleCheckIcon />\n                  {t.done}\n                </NavigationMenuLink>\n              </li>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuLink\n            render={<Link href=\"/docs\" />}\n            className={navigationMenuTriggerStyle()}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            {t.docs}\n          </NavigationMenuLink>\n        </NavigationMenuItem>\n      </NavigationMenuList>\n    </NavigationMenu>\n  )\n}\n\nfunction ListItem({\n  title,\n  children,\n  href,\n  ...props\n}: React.ComponentPropsWithoutRef<\"li\"> & { href: string }) {\n  return (\n    <li {...props}>\n      <NavigationMenuLink render={<Link href={href} />}>\n        <div className=\"flex flex-col gap-1 text-sm\">\n          <div className=\"leading-none font-medium\">{title}</div>\n          <div className=\"line-clamp-2 text-muted-foreground\">{children}</div>\n        </div>\n      </NavigationMenuLink>\n    </li>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/outline-item-group.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { InboxIcon } from \"lucide-react\"\n\nexport function OutlineItemGroup() {\n  return (\n    <ItemGroup>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Item 1</ItemTitle>\n          <ItemDescription>First item with icon.</ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Item 2</ItemTitle>\n          <ItemDescription>Second item with icon.</ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Item 3</ItemTitle>\n          <ItemDescription>Third item with icon.</ItemDescription>\n        </ItemContent>\n      </Item>\n    </ItemGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/pagination-demo.tsx",
    "content": "import {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/examples/base/ui/pagination\"\n\nexport default function PaginationDemo() {\n  return (\n    <Pagination>\n      <PaginationContent>\n        <PaginationItem>\n          <PaginationPrevious href=\"#\" />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">1</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\" isActive>\n            2\n          </PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">3</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationEllipsis />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationNext href=\"#\" />\n        </PaginationItem>\n      </PaginationContent>\n    </Pagination>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/pagination-icons-only.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationItem,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/examples/base/ui/pagination\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nexport function PaginationIconsOnly() {\n  return (\n    <div className=\"flex items-center justify-between gap-4\">\n      <Field orientation=\"horizontal\" className=\"w-fit\">\n        <FieldLabel htmlFor=\"select-rows-per-page\">Rows per page</FieldLabel>\n        <Select defaultValue=\"25\">\n          <SelectTrigger className=\"w-20\" id=\"select-rows-per-page\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent align=\"start\">\n            <SelectGroup>\n              <SelectItem value=\"10\">10</SelectItem>\n              <SelectItem value=\"25\">25</SelectItem>\n              <SelectItem value=\"50\">50</SelectItem>\n              <SelectItem value=\"100\">100</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </Field>\n      <Pagination className=\"mx-0 w-auto\">\n        <PaginationContent>\n          <PaginationItem>\n            <PaginationPrevious href=\"#\" />\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationNext href=\"#\" />\n          </PaginationItem>\n        </PaginationContent>\n      </Pagination>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/pagination-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/examples/base/ui-rtl/pagination\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      previous: \"Previous\",\n      next: \"Next\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      previous: \"السابق\",\n      next: \"التالي\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      previous: \"הקודם\",\n      next: \"הבא\",\n    },\n  },\n}\n\nfunction toArabicNumerals(num: number): string {\n  const arabicNumerals = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"]\n  return num\n    .toString()\n    .split(\"\")\n    .map((digit) => arabicNumerals[parseInt(digit, 10)])\n    .join(\"\")\n}\n\nexport function PaginationRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  const formatNumber = (num: number): string => {\n    if (language === \"ar\") {\n      return toArabicNumerals(num)\n    }\n    return num.toString()\n  }\n\n  return (\n    <Pagination dir={dir}>\n      <PaginationContent>\n        <PaginationItem>\n          <PaginationPrevious href=\"#\" text={t.previous} />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">{formatNumber(1)}</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\" isActive>\n            {formatNumber(2)}\n          </PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">{formatNumber(3)}</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationEllipsis />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationNext href=\"#\" text={t.next} />\n        </PaginationItem>\n      </PaginationContent>\n    </Pagination>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/pagination-simple.tsx",
    "content": "import {\n  Pagination,\n  PaginationContent,\n  PaginationItem,\n  PaginationLink,\n} from \"@/examples/base/ui/pagination\"\n\nexport function PaginationSimple() {\n  return (\n    <Pagination>\n      <PaginationContent>\n        <PaginationItem>\n          <PaginationLink href=\"#\">1</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\" isActive>\n            2\n          </PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">3</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">4</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">5</PaginationLink>\n        </PaginationItem>\n      </PaginationContent>\n    </Pagination>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/popover-alignments.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\n\nexport function PopoverAlignments() {\n  return (\n    <>\n      <div className=\"flex gap-6\">\n        <Popover>\n          <PopoverTrigger render={<Button variant=\"outline\" size=\"sm\" />}>\n            Start\n          </PopoverTrigger>\n          <PopoverContent align=\"start\" className=\"w-40\">\n            Aligned to start\n          </PopoverContent>\n        </Popover>\n        <Popover>\n          <PopoverTrigger render={<Button variant=\"outline\" size=\"sm\" />}>\n            Center\n          </PopoverTrigger>\n          <PopoverContent align=\"center\" className=\"w-40\">\n            Aligned to center\n          </PopoverContent>\n        </Popover>\n        <Popover>\n          <PopoverTrigger render={<Button variant=\"outline\" size=\"sm\" />}>\n            End\n          </PopoverTrigger>\n          <PopoverContent align=\"end\" className=\"w-40\">\n            Aligned to end\n          </PopoverContent>\n        </Popover>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/popover-basic.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\n\nexport function PopoverBasic() {\n  return (\n    <>\n      <Popover>\n        <PopoverTrigger render={<Button variant=\"outline\" className=\"w-fit\" />}>\n          Open Popover\n        </PopoverTrigger>\n        <PopoverContent align=\"start\">\n          <PopoverHeader>\n            <PopoverTitle>Dimensions</PopoverTitle>\n            <PopoverDescription>\n              Set the dimensions for the layer.\n            </PopoverDescription>\n          </PopoverHeader>\n        </PopoverContent>\n      </Popover>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/popover-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { Label } from \"@/examples/base/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\n\nexport default function PopoverDemo() {\n  return (\n    <Popover>\n      <PopoverTrigger render={<Button variant=\"outline\" />}>\n        Open popover\n      </PopoverTrigger>\n      <PopoverContent className=\"w-80\">\n        <div className=\"grid gap-4\">\n          <div className=\"space-y-2\">\n            <h4 className=\"leading-none font-medium\">Dimensions</h4>\n            <p className=\"text-sm text-muted-foreground\">\n              Set the dimensions for the layer.\n            </p>\n          </div>\n          <div className=\"grid gap-2\">\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"width\">Width</Label>\n              <Input\n                id=\"width\"\n                defaultValue=\"100%\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"maxWidth\">Max. width</Label>\n              <Input\n                id=\"maxWidth\"\n                defaultValue=\"300px\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"height\">Height</Label>\n              <Input\n                id=\"height\"\n                defaultValue=\"25px\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"maxHeight\">Max. height</Label>\n              <Input\n                id=\"maxHeight\"\n                defaultValue=\"none\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n          </div>\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/popover-form.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/base/ui/popover\"\n\nexport function PopoverForm() {\n  return (\n    <>\n      <Popover>\n        <PopoverTrigger render={<Button variant=\"outline\" />}>\n          Open Popover\n        </PopoverTrigger>\n        <PopoverContent className=\"w-64\" align=\"start\">\n          <PopoverHeader>\n            <PopoverTitle>Dimensions</PopoverTitle>\n            <PopoverDescription>\n              Set the dimensions for the layer.\n            </PopoverDescription>\n          </PopoverHeader>\n          <FieldGroup className=\"gap-4\">\n            <Field orientation=\"horizontal\">\n              <FieldLabel htmlFor=\"width\" className=\"w-1/2\">\n                Width\n              </FieldLabel>\n              <Input id=\"width\" defaultValue=\"100%\" />\n            </Field>\n            <Field orientation=\"horizontal\">\n              <FieldLabel htmlFor=\"height\" className=\"w-1/2\">\n                Height\n              </FieldLabel>\n              <Input id=\"height\" defaultValue=\"25px\" />\n            </Field>\n          </FieldGroup>\n        </PopoverContent>\n      </Popover>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/popover-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/base/ui-rtl/popover\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"Dimensions\",\n      description: \"Set the dimensions for the layer.\",\n      \"inline-start\": \"Inline Start\",\n      left: \"Left\",\n      top: \"Top\",\n      bottom: \"Bottom\",\n      right: \"Right\",\n      \"inline-end\": \"Inline End\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"الأبعاد\",\n      description: \"تعيين الأبعاد للطبقة.\",\n      \"inline-start\": \"بداية السطر\",\n      left: \"يسار\",\n      top: \"أعلى\",\n      bottom: \"أسفل\",\n      right: \"يمين\",\n      \"inline-end\": \"نهاية السطر\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"מימדים\",\n      description: \"הגדר את המימדים לשכבה.\",\n      \"inline-start\": \"תחילת השורה\",\n      left: \"שמאל\",\n      top: \"למעלה\",\n      bottom: \"למטה\",\n      right: \"ימין\",\n      \"inline-end\": \"סוף השורה\",\n    },\n  },\n}\n\nconst physicalSides = [\"left\", \"top\", \"bottom\", \"right\"] as const\nconst logicalSides = [\"inline-start\", \"inline-end\"] as const\n\nexport function PopoverRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"grid gap-4\">\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {physicalSides.map((side) => (\n          <Popover key={side}>\n            <PopoverTrigger render={<Button variant=\"outline\" />}>\n              {t[side]}\n            </PopoverTrigger>\n            <PopoverContent side={side} dir={dir}>\n              <PopoverHeader>\n                <PopoverTitle>{t.title}</PopoverTitle>\n                <PopoverDescription>{t.description}</PopoverDescription>\n              </PopoverHeader>\n            </PopoverContent>\n          </Popover>\n        ))}\n      </div>\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {logicalSides.map((side) => (\n          <Popover key={side}>\n            <PopoverTrigger render={<Button variant=\"outline\" />}>\n              {t[side]}\n            </PopoverTrigger>\n            <PopoverContent side={side} dir={dir}>\n              <PopoverHeader>\n                <PopoverTitle>{t.title}</PopoverTitle>\n                <PopoverDescription>{t.description}</PopoverDescription>\n              </PopoverHeader>\n            </PopoverContent>\n          </Popover>\n        ))}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/progress-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Progress } from \"@/examples/base/ui/progress\"\nimport { Slider } from \"@/examples/base/ui/slider\"\n\nexport function ProgressControlled() {\n  const [value, setValue] = React.useState(50)\n\n  return (\n    <div className=\"flex w-full max-w-sm flex-col gap-4\">\n      <Progress value={value} className=\"w-full\" />\n      <Slider\n        value={value}\n        onValueChange={(value) => setValue(value as number)}\n        min={0}\n        max={100}\n        step={1}\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/progress-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Progress } from \"@/examples/base/ui/progress\"\n\nexport default function ProgressDemo() {\n  const [progress, setProgress] = React.useState(13)\n\n  React.useEffect(() => {\n    const timer = setTimeout(() => setProgress(66), 500)\n    return () => clearTimeout(timer)\n  }, [])\n\n  return <Progress value={progress} className=\"w-[60%]\" />\n}\n"
  },
  {
    "path": "apps/v4/examples/base/progress-label.tsx",
    "content": "import {\n  Progress,\n  ProgressLabel,\n  ProgressValue,\n} from \"@/examples/base/ui/progress\"\n\nexport function ProgressWithLabel() {\n  return (\n    <Progress value={56} className=\"w-full max-w-sm\">\n      <ProgressLabel>Upload progress</ProgressLabel>\n      <ProgressValue />\n    </Progress>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/progress-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Progress,\n  ProgressLabel,\n  ProgressValue,\n} from \"@/examples/base/ui-rtl/progress\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Upload progress\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"تقدم الرفع\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"התקדמות העלאה\",\n    },\n  },\n}\n\nfunction toArabicNumerals(num: number): string {\n  const arabicNumerals = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"]\n  return num\n    .toString()\n    .split(\"\")\n    .map((digit) => arabicNumerals[parseInt(digit, 10)])\n    .join(\"\")\n}\n\nexport function ProgressRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  const formatNumber = (num: number): string => {\n    if (language === \"ar\") {\n      return toArabicNumerals(num)\n    }\n    return num.toString()\n  }\n\n  return (\n    <Progress value={56} className=\"w-full max-w-sm\" dir={dir}>\n      <ProgressLabel>{t.label}</ProgressLabel>\n      <ProgressValue>\n        {(value) => (\n          <span className=\"ms-auto\">\n            {formatNumber(parseFloat(value ?? \"0\"))}%\n          </span>\n        )}\n      </ProgressValue>\n    </Progress>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/radio-fields.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport function RadioFields() {\n  return (\n    <FieldGroup>\n      <FieldSet>\n        <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n        <RadioGroup defaultValue=\"free\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"free\" id=\"radio-free\" />\n            <FieldLabel htmlFor=\"radio-free\" className=\"font-normal\">\n              Free Plan\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"pro\" id=\"radio-pro\" />\n            <FieldLabel htmlFor=\"radio-pro\" className=\"font-normal\">\n              Pro Plan\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"enterprise\" id=\"radio-enterprise\" />\n            <FieldLabel htmlFor=\"radio-enterprise\" className=\"font-normal\">\n              Enterprise\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n      <FieldSet>\n        <FieldLegend variant=\"label\">Battery Level</FieldLegend>\n        <FieldDescription>\n          Choose your preferred battery level.\n        </FieldDescription>\n        <RadioGroup>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"high\" id=\"battery-high\" />\n            <FieldLabel htmlFor=\"battery-high\">High</FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"medium\" id=\"battery-medium\" />\n            <FieldLabel htmlFor=\"battery-medium\">Medium</FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"low\" id=\"battery-low\" />\n            <FieldLabel htmlFor=\"battery-low\">Low</FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n      <RadioGroup className=\"gap-6\">\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option1\" id=\"radio-content-1\" />\n          <FieldContent>\n            <FieldLabel htmlFor=\"radio-content-1\">Enable Touch ID</FieldLabel>\n            <FieldDescription>\n              Enable Touch ID to quickly unlock your device.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option2\" id=\"radio-content-2\" />\n          <FieldContent>\n            <FieldLabel htmlFor=\"radio-content-2\">\n              Enable Touch ID and Face ID to make it even faster to unlock your\n              device. This is a long label to test the layout.\n            </FieldLabel>\n            <FieldDescription>\n              Enable Touch ID to quickly unlock your device.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n      </RadioGroup>\n      <RadioGroup className=\"gap-3\">\n        <FieldLabel htmlFor=\"radio-title-1\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"title1\" id=\"radio-title-1\" />\n            <FieldContent>\n              <FieldTitle>Enable Touch ID</FieldTitle>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"radio-title-2\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"title2\" id=\"radio-title-2\" />\n            <FieldContent>\n              <FieldTitle>\n                Enable Touch ID and Face ID to make it even faster to unlock\n                your device. This is a long label to test the layout.\n              </FieldTitle>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n      </RadioGroup>\n      <FieldSet>\n        <FieldLegend variant=\"label\">Invalid Radio Group</FieldLegend>\n        <RadioGroup>\n          <Field data-invalid orientation=\"horizontal\">\n            <RadioGroupItem\n              value=\"invalid1\"\n              id=\"radio-invalid-1\"\n              aria-invalid\n            />\n            <FieldLabel htmlFor=\"radio-invalid-1\">Invalid Option 1</FieldLabel>\n          </Field>\n          <Field data-invalid orientation=\"horizontal\">\n            <RadioGroupItem\n              value=\"invalid2\"\n              id=\"radio-invalid-2\"\n              aria-invalid\n            />\n            <FieldLabel htmlFor=\"radio-invalid-2\">Invalid Option 2</FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n      <FieldSet>\n        <FieldLegend variant=\"label\">Disabled Radio Group</FieldLegend>\n        <RadioGroup disabled>\n          <Field data-disabled orientation=\"horizontal\">\n            <RadioGroupItem value=\"disabled1\" id=\"radio-disabled-1\" disabled />\n            <FieldLabel htmlFor=\"radio-disabled-1\">\n              Disabled Option 1\n            </FieldLabel>\n          </Field>\n          <Field data-disabled orientation=\"horizontal\">\n            <RadioGroupItem value=\"disabled2\" id=\"radio-disabled-2\" disabled />\n            <FieldLabel htmlFor=\"radio-disabled-2\">\n              Disabled Option 2\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/radio-group-choice-card.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n  FieldTitle,\n} from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport function RadioGroupChoiceCard() {\n  return (\n    <RadioGroup defaultValue=\"plus\" className=\"max-w-sm\">\n      <FieldLabel htmlFor=\"plus-plan\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Plus</FieldTitle>\n            <FieldDescription>\n              For individuals and small teams.\n            </FieldDescription>\n          </FieldContent>\n          <RadioGroupItem value=\"plus\" id=\"plus-plan\" />\n        </Field>\n      </FieldLabel>\n      <FieldLabel htmlFor=\"pro-plan\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Pro</FieldTitle>\n            <FieldDescription>For growing businesses.</FieldDescription>\n          </FieldContent>\n          <RadioGroupItem value=\"pro\" id=\"pro-plan\" />\n        </Field>\n      </FieldLabel>\n      <FieldLabel htmlFor=\"enterprise-plan\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Enterprise</FieldTitle>\n            <FieldDescription>\n              For large teams and enterprises.\n            </FieldDescription>\n          </FieldContent>\n          <RadioGroupItem value=\"enterprise\" id=\"enterprise-plan\" />\n        </Field>\n      </FieldLabel>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/radio-group-demo.tsx",
    "content": "import { Label } from \"@/examples/base/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport function RadioGroupDemo() {\n  return (\n    <RadioGroup defaultValue=\"comfortable\" className=\"w-fit\">\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"default\" id=\"r1\" />\n        <Label htmlFor=\"r1\">Default</Label>\n      </div>\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"comfortable\" id=\"r2\" />\n        <Label htmlFor=\"r2\">Comfortable</Label>\n      </div>\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"compact\" id=\"r3\" />\n        <Label htmlFor=\"r3\">Compact</Label>\n      </div>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/radio-group-description.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport function RadioGroupDescription() {\n  return (\n    <RadioGroup defaultValue=\"comfortable\" className=\"w-fit\">\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"default\" id=\"desc-r1\" />\n        <FieldContent>\n          <FieldLabel htmlFor=\"desc-r1\">Default</FieldLabel>\n          <FieldDescription>\n            Standard spacing for most use cases.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"comfortable\" id=\"desc-r2\" />\n        <FieldContent>\n          <FieldLabel htmlFor=\"desc-r2\">Comfortable</FieldLabel>\n          <FieldDescription>More space between elements.</FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"compact\" id=\"desc-r3\" />\n        <FieldContent>\n          <FieldLabel htmlFor=\"desc-r3\">Compact</FieldLabel>\n          <FieldDescription>\n            Minimal spacing for dense layouts.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/radio-group-disabled.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport function RadioGroupDisabled() {\n  return (\n    <RadioGroup defaultValue=\"option2\" className=\"w-fit\">\n      <Field orientation=\"horizontal\" data-disabled>\n        <RadioGroupItem value=\"option1\" id=\"disabled-1\" disabled />\n        <FieldLabel htmlFor=\"disabled-1\" className=\"font-normal\">\n          Disabled\n        </FieldLabel>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"option2\" id=\"disabled-2\" />\n        <FieldLabel htmlFor=\"disabled-2\" className=\"font-normal\">\n          Option 2\n        </FieldLabel>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"option3\" id=\"disabled-3\" />\n        <FieldLabel htmlFor=\"disabled-3\" className=\"font-normal\">\n          Option 3\n        </FieldLabel>\n      </Field>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/radio-group-fieldset.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport function RadioGroupFieldset() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n      <FieldDescription>\n        Yearly and lifetime plans offer significant savings.\n      </FieldDescription>\n      <RadioGroup defaultValue=\"monthly\">\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"monthly\" id=\"plan-monthly\" />\n          <FieldLabel htmlFor=\"plan-monthly\" className=\"font-normal\">\n            Monthly ($9.99/month)\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"yearly\" id=\"plan-yearly\" />\n          <FieldLabel htmlFor=\"plan-yearly\" className=\"font-normal\">\n            Yearly ($99.99/year)\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"lifetime\" id=\"plan-lifetime\" />\n          <FieldLabel htmlFor=\"plan-lifetime\" className=\"font-normal\">\n            Lifetime ($299.99)\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/radio-group-invalid.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/base/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui/radio-group\"\n\nexport function RadioGroupInvalid() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldLegend variant=\"label\">Notification Preferences</FieldLegend>\n      <FieldDescription>\n        Choose how you want to receive notifications.\n      </FieldDescription>\n      <RadioGroup defaultValue=\"email\">\n        <Field orientation=\"horizontal\" data-invalid>\n          <RadioGroupItem value=\"email\" id=\"invalid-email\" aria-invalid />\n          <FieldLabel htmlFor=\"invalid-email\" className=\"font-normal\">\n            Email only\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\" data-invalid>\n          <RadioGroupItem value=\"sms\" id=\"invalid-sms\" aria-invalid />\n          <FieldLabel htmlFor=\"invalid-sms\" className=\"font-normal\">\n            SMS only\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\" data-invalid>\n          <RadioGroupItem value=\"both\" id=\"invalid-both\" aria-invalid />\n          <FieldLabel htmlFor=\"invalid-both\" className=\"font-normal\">\n            Both Email & SMS\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/radio-group-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/base/ui-rtl/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/base/ui-rtl/radio-group\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      default: \"Default\",\n      defaultDescription: \"Standard spacing for most use cases.\",\n      comfortable: \"Comfortable\",\n      comfortableDescription: \"More space between elements.\",\n      compact: \"Compact\",\n      compactDescription: \"Minimal spacing for dense layouts.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      default: \"افتراضي\",\n      defaultDescription: \"تباعد قياسي لمعظم حالات الاستخدام.\",\n      comfortable: \"مريح\",\n      comfortableDescription: \"مساحة أكبر بين العناصر.\",\n      compact: \"مضغوط\",\n      compactDescription: \"تباعد أدنى للتخطيطات الكثيفة.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      default: \"ברירת מחדל\",\n      defaultDescription: \"ריווח סטנדרטי לרוב מקרי השימוש.\",\n      comfortable: \"נוח\",\n      comfortableDescription: \"יותר מקום בין האלמנטים.\",\n      compact: \"קומפקטי\",\n      compactDescription: \"ריווח מינימלי לפריסות צפופות.\",\n    },\n  },\n}\n\nexport function RadioGroupRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <RadioGroup defaultValue=\"comfortable\" className=\"w-fit\" dir={dir}>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"default\" id=\"r1-rtl\" dir={dir} />\n        <FieldContent>\n          <FieldLabel htmlFor=\"r1-rtl\" dir={dir}>\n            {t.default}\n          </FieldLabel>\n          <FieldDescription dir={dir}>{t.defaultDescription}</FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"comfortable\" id=\"r2-rtl\" dir={dir} />\n        <FieldContent>\n          <FieldLabel htmlFor=\"r2-rtl\" dir={dir}>\n            {t.comfortable}\n          </FieldLabel>\n          <FieldDescription dir={dir}>\n            {t.comfortableDescription}\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"compact\" id=\"r3-rtl\" dir={dir} />\n        <FieldContent>\n          <FieldLabel htmlFor=\"r3-rtl\" dir={dir}>\n            {t.compact}\n          </FieldLabel>\n          <FieldDescription dir={dir}>{t.compactDescription}</FieldDescription>\n        </FieldContent>\n      </Field>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/resizable-demo.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/examples/base/ui/resizable\"\n\nexport default function ResizableDemo() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"max-w-sm rounded-lg border\"\n    >\n      <ResizablePanel defaultSize=\"50%\">\n        <div className=\"flex h-[200px] items-center justify-center p-6\">\n          <span className=\"font-semibold\">One</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle withHandle />\n      <ResizablePanel defaultSize=\"50%\">\n        <ResizablePanelGroup orientation=\"vertical\">\n          <ResizablePanel defaultSize=\"25%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">Two</span>\n            </div>\n          </ResizablePanel>\n          <ResizableHandle withHandle />\n          <ResizablePanel defaultSize=\"75%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">Three</span>\n            </div>\n          </ResizablePanel>\n        </ResizablePanelGroup>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/resizable-handle.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/examples/base/ui/resizable\"\n\nexport default function ResizableHandleDemo() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"min-h-[200px] max-w-sm rounded-lg border\"\n    >\n      <ResizablePanel defaultSize=\"25%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Sidebar</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle withHandle />\n      <ResizablePanel defaultSize=\"75%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Content</span>\n        </div>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/resizable-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/examples/base/ui-rtl/resizable\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      one: \"One\",\n      two: \"Two\",\n      three: \"Three\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      one: \"واحد\",\n      two: \"اثنان\",\n      three: \"ثلاثة\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      one: \"אחד\",\n      two: \"שניים\",\n      three: \"שלושה\",\n    },\n  },\n}\n\nexport function ResizableRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"max-w-sm rounded-lg border\"\n      dir={dir}\n    >\n      <ResizablePanel defaultSize=\"50%\">\n        <div className=\"flex h-[200px] items-center justify-center p-6\">\n          <span className=\"font-semibold\">{t.one}</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle withHandle />\n      <ResizablePanel defaultSize=\"50%\">\n        <ResizablePanelGroup orientation=\"vertical\" dir={dir}>\n          <ResizablePanel defaultSize=\"25%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">{t.two}</span>\n            </div>\n          </ResizablePanel>\n          <ResizableHandle withHandle />\n          <ResizablePanel defaultSize=\"75%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">{t.three}</span>\n            </div>\n          </ResizablePanel>\n        </ResizablePanelGroup>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/resizable-vertical.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/examples/base/ui/resizable\"\n\nexport function ResizableVertical() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"vertical\"\n      className=\"min-h-[200px] max-w-sm rounded-lg border\"\n    >\n      <ResizablePanel defaultSize=\"25%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Header</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle />\n      <ResizablePanel defaultSize=\"75%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Content</span>\n        </div>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/scroll-area-demo.tsx",
    "content": "import * as React from \"react\"\nimport { ScrollArea } from \"@/examples/base/ui/scroll-area\"\nimport { Separator } from \"@/examples/base/ui/separator\"\n\nconst tags = Array.from({ length: 50 }).map(\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\n)\n\nexport function ScrollAreaDemo() {\n  return (\n    <ScrollArea className=\"h-72 w-48 rounded-md border\">\n      <div className=\"p-4\">\n        <h4 className=\"mb-4 text-sm leading-none font-medium\">Tags</h4>\n        {tags.map((tag) => (\n          <React.Fragment key={tag}>\n            <div className=\"text-sm\">{tag}</div>\n            <Separator className=\"my-2\" />\n          </React.Fragment>\n        ))}\n      </div>\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/scroll-area-horizontal-demo.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\nimport { ScrollArea, ScrollBar } from \"@/examples/base/ui/scroll-area\"\n\nexport interface Artwork {\n  artist: string\n  art: string\n}\n\nexport const works: Artwork[] = [\n  {\n    artist: \"Ornella Binni\",\n    art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Tom Byrom\",\n    art: \"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Vladimir Malyavko\",\n    art: \"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\",\n  },\n]\n\nexport function ScrollAreaHorizontalDemo() {\n  return (\n    <ScrollArea className=\"w-96 rounded-md border whitespace-nowrap\">\n      <div className=\"flex w-max space-x-4 p-4\">\n        {works.map((artwork) => (\n          <figure key={artwork.artist} className=\"shrink-0\">\n            <div className=\"overflow-hidden rounded-md\">\n              <Image\n                src={artwork.art}\n                alt={`Photo by ${artwork.artist}`}\n                className=\"aspect-[3/4] h-fit w-fit object-cover\"\n                width={300}\n                height={400}\n              />\n            </div>\n            <figcaption className=\"pt-2 text-xs text-muted-foreground\">\n              Photo by{\" \"}\n              <span className=\"font-semibold text-foreground\">\n                {artwork.artist}\n              </span>\n            </figcaption>\n          </figure>\n        ))}\n      </div>\n      <ScrollBar orientation=\"horizontal\" />\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/scroll-area-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea } from \"@/examples/base/ui-rtl/scroll-area\"\nimport { Separator } from \"@/examples/base/ui-rtl/separator\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst tags = Array.from({ length: 50 }).map(\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\n)\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      tags: \"Tags\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      tags: \"العلامات\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      tags: \"תגיות\",\n    },\n  },\n}\n\nexport function ScrollAreaRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <ScrollArea className=\"h-72 w-48 rounded-md border\" dir={dir}>\n      <div className=\"p-4\">\n        <h4 className=\"mb-4 text-sm leading-none font-medium\">{t.tags}</h4>\n        {tags.map((tag) => (\n          <React.Fragment key={tag}>\n            <div className=\"text-sm\">{tag}</div>\n            <Separator className=\"my-2\" />\n          </React.Fragment>\n        ))}\n      </div>\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/select-align-item.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport { Label } from \"@/examples/base/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\nimport { Switch } from \"@/examples/base/ui/switch\"\n\nconst items = [\n  { label: \"Select a fruit\", value: null },\n  { label: \"Apple\", value: \"apple\" },\n  { label: \"Banana\", value: \"banana\" },\n  { label: \"Blueberry\", value: \"blueberry\" },\n  { label: \"Grapes\", value: \"grapes\" },\n  { label: \"Pineapple\", value: \"pineapple\" },\n]\n\nexport function SelectAlignItem() {\n  const [alignItemWithTrigger, setAlignItemWithTrigger] = React.useState(true)\n\n  return (\n    <FieldGroup className=\"w-full max-w-xs\">\n      <Field orientation=\"horizontal\">\n        <FieldContent>\n          <FieldLabel htmlFor=\"align-item\">Align Item</FieldLabel>\n          <FieldDescription>\n            Toggle to align the item with the trigger.\n          </FieldDescription>\n        </FieldContent>\n        <Switch\n          id=\"align-item\"\n          checked={alignItemWithTrigger}\n          onCheckedChange={setAlignItemWithTrigger}\n        />\n      </Field>\n      <Field>\n        <Select items={items} defaultValue=\"banana\">\n          <SelectTrigger>\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent alignItemWithTrigger={alignItemWithTrigger}>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/select-demo.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nconst items = [\n  { label: \"Select a fruit\", value: null },\n  { label: \"Apple\", value: \"apple\" },\n  { label: \"Banana\", value: \"banana\" },\n  { label: \"Blueberry\", value: \"blueberry\" },\n  { label: \"Grapes\", value: \"grapes\" },\n  { label: \"Pineapple\", value: \"pineapple\" },\n]\n\nexport function SelectDemo() {\n  return (\n    <Select items={items}>\n      <SelectTrigger className=\"w-full max-w-48\">\n        <SelectValue />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectLabel>Fruits</SelectLabel>\n          {items.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/select-disabled.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nexport function SelectDisabled() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n    { label: \"Grapes\", value: \"grapes\", disabled: true },\n    { label: \"Pineapple\", value: \"pineapple\" },\n  ]\n  return (\n    <Select items={items} disabled>\n      <SelectTrigger className=\"w-full max-w-48\">\n        <SelectValue />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          {items.map((item) => (\n            <SelectItem\n              key={item.value}\n              value={item.value}\n              disabled={item.disabled}\n            >\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/select-groups.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nexport function SelectGroups() {\n  const fruits = [\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n  ]\n  const vegetables = [\n    { label: \"Carrot\", value: \"carrot\" },\n    { label: \"Broccoli\", value: \"broccoli\" },\n    { label: \"Spinach\", value: \"spinach\" },\n  ]\n  const allItems = [\n    { label: \"Select a fruit\", value: null },\n    ...fruits,\n    ...vegetables,\n  ]\n  return (\n    <Select items={allItems}>\n      <SelectTrigger className=\"w-full max-w-48\">\n        <SelectValue />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectLabel>Fruits</SelectLabel>\n          {fruits.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n        <SelectSeparator />\n        <SelectGroup>\n          <SelectLabel>Vegetables</SelectLabel>\n          {vegetables.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/select-invalid.tsx",
    "content": "import { Field, FieldError, FieldLabel } from \"@/examples/base/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nconst items = [\n  { label: \"Select a fruit\", value: null },\n  { label: \"Apple\", value: \"apple\" },\n  { label: \"Banana\", value: \"banana\" },\n  { label: \"Blueberry\", value: \"blueberry\" },\n]\n\nexport function SelectInvalid() {\n  return (\n    <Field data-invalid className=\"w-full max-w-48\">\n      <FieldLabel>Fruit</FieldLabel>\n      <Select items={items}>\n        <SelectTrigger aria-invalid>\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {items.map((item) => (\n              <SelectItem key={item.value} value={item.value}>\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n      <FieldError>Please select a fruit.</FieldError>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/select-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui-rtl/select\"\n\nimport {\n  useTranslation,\n  type Language,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      selectFruit: \"Select a fruit\",\n      fruits: \"Fruits\",\n      apple: \"Apple\",\n      banana: \"Banana\",\n      blueberry: \"Blueberry\",\n      grapes: \"Grapes\",\n      pineapple: \"Pineapple\",\n      vegetables: \"Vegetables\",\n      carrot: \"Carrot\",\n      broccoli: \"Broccoli\",\n      spinach: \"Spinach\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      selectFruit: \"اختر فاكهة\",\n      fruits: \"الفواكه\",\n      apple: \"تفاح\",\n      banana: \"موز\",\n      blueberry: \"توت أزرق\",\n      grapes: \"عنب\",\n      pineapple: \"أناناس\",\n      vegetables: \"الخضروات\",\n      carrot: \"جزر\",\n      broccoli: \"بروكلي\",\n      spinach: \"سبانخ\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      selectFruit: \"בחר פרי\",\n      fruits: \"פירות\",\n      apple: \"תפוח\",\n      banana: \"בננה\",\n      blueberry: \"אוכמניה\",\n      grapes: \"ענבים\",\n      pineapple: \"אננס\",\n      vegetables: \"ירקות\",\n      carrot: \"גזר\",\n      broccoli: \"ברוקולי\",\n      spinach: \"תרד\",\n    },\n  },\n}\n\nexport function SelectRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [selectedFruit, setSelectedFruit] = React.useState<string | null>(null)\n\n  const fruits = [\n    { label: t.apple, value: \"apple\" },\n    { label: t.banana, value: \"banana\" },\n    { label: t.blueberry, value: \"blueberry\" },\n    { label: t.grapes, value: \"grapes\" },\n    { label: t.pineapple, value: \"pineapple\" },\n  ]\n\n  const vegetables = [\n    { label: t.carrot, value: \"carrot\" },\n    { label: t.broccoli, value: \"broccoli\" },\n    { label: t.spinach, value: \"spinach\" },\n  ]\n\n  const allItems = [\n    { label: t.selectFruit, value: null },\n    ...fruits,\n    ...vegetables,\n  ]\n\n  return (\n    <Select\n      items={allItems}\n      value={selectedFruit}\n      onValueChange={setSelectedFruit}\n    >\n      <SelectTrigger className=\"w-32\" dir={dir}>\n        <SelectValue />\n      </SelectTrigger>\n      <SelectContent dir={dir} data-lang={dir === \"rtl\" ? language : undefined}>\n        <SelectGroup>\n          <SelectLabel>{t.fruits}</SelectLabel>\n          {fruits.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n        <SelectSeparator />\n        <SelectGroup>\n          <SelectLabel>{t.vegetables}</SelectLabel>\n          {vegetables.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/select-scrollable.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/base/ui/select\"\n\nconst northAmerica = [\n  { label: \"Eastern Standard Time\", value: \"est\" },\n  { label: \"Central Standard Time\", value: \"cst\" },\n  { label: \"Mountain Standard Time\", value: \"mst\" },\n  { label: \"Pacific Standard Time\", value: \"pst\" },\n  { label: \"Alaska Standard Time\", value: \"akst\" },\n  { label: \"Hawaii Standard Time\", value: \"hst\" },\n]\n\nconst europeAfrica = [\n  { label: \"Greenwich Mean Time\", value: \"gmt\" },\n  { label: \"Central European Time\", value: \"cet\" },\n  { label: \"Eastern European Time\", value: \"eet\" },\n  { label: \"Western European Summer Time\", value: \"west\" },\n  { label: \"Central Africa Time\", value: \"cat\" },\n  { label: \"East Africa Time\", value: \"eat\" },\n]\n\nconst asia = [\n  { label: \"Moscow Time\", value: \"msk\" },\n  { label: \"India Standard Time\", value: \"ist\" },\n  { label: \"China Standard Time\", value: \"cst_china\" },\n  { label: \"Japan Standard Time\", value: \"jst\" },\n  { label: \"Korea Standard Time\", value: \"kst\" },\n  { label: \"Indonesia Central Standard Time\", value: \"ist_indonesia\" },\n]\n\nconst australiaPacific = [\n  { label: \"Australian Western Standard Time\", value: \"awst\" },\n  { label: \"Australian Central Standard Time\", value: \"acst\" },\n  { label: \"Australian Eastern Standard Time\", value: \"aest\" },\n  { label: \"New Zealand Standard Time\", value: \"nzst\" },\n  { label: \"Fiji Time\", value: \"fjt\" },\n]\n\nconst southAmerica = [\n  { label: \"Argentina Time\", value: \"art\" },\n  { label: \"Bolivia Time\", value: \"bot\" },\n  { label: \"Brasilia Time\", value: \"brt\" },\n  { label: \"Chile Standard Time\", value: \"clt\" },\n]\n\nconst items = [\n  { label: \"Select a timezone\", value: null },\n  ...northAmerica,\n  ...europeAfrica,\n  ...asia,\n  ...australiaPacific,\n  ...southAmerica,\n]\n\nexport function SelectScrollable() {\n  return (\n    <Select items={items}>\n      <SelectTrigger className=\"w-full max-w-64\">\n        <SelectValue />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectLabel>North America</SelectLabel>\n          {northAmerica.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Europe & Africa</SelectLabel>\n          {europeAfrica.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Asia</SelectLabel>\n          {asia.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Australia & Pacific</SelectLabel>\n          {australiaPacific.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>South America</SelectLabel>\n          {southAmerica.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/separator-demo.tsx",
    "content": "import { Separator } from \"@/examples/base/ui/separator\"\n\nexport default function SeparatorDemo() {\n  return (\n    <div className=\"flex max-w-sm flex-col gap-4 text-sm\">\n      <div className=\"flex flex-col gap-1.5\">\n        <div className=\"leading-none font-medium\">shadcn/ui</div>\n        <div className=\"text-muted-foreground\">\n          The Foundation for your Design System\n        </div>\n      </div>\n      <Separator />\n      <div>\n        A set of beautifully designed components that you can customize, extend,\n        and build on.\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/separator-list.tsx",
    "content": "import { Separator } from \"@/examples/base/ui/separator\"\n\nexport function SeparatorList() {\n  return (\n    <div className=\"flex w-full max-w-sm flex-col gap-2 text-sm\">\n      <dl className=\"flex items-center justify-between\">\n        <dt>Item 1</dt>\n        <dd className=\"text-muted-foreground\">Value 1</dd>\n      </dl>\n      <Separator />\n      <dl className=\"flex items-center justify-between\">\n        <dt>Item 2</dt>\n        <dd className=\"text-muted-foreground\">Value 2</dd>\n      </dl>\n      <Separator />\n      <dl className=\"flex items-center justify-between\">\n        <dt>Item 3</dt>\n        <dd className=\"text-muted-foreground\">Value 3</dd>\n      </dl>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/separator-menu.tsx",
    "content": "import { Separator } from \"@/examples/base/ui/separator\"\n\nexport function SeparatorMenu() {\n  return (\n    <div className=\"flex items-center gap-2 text-sm md:gap-4\">\n      <div className=\"flex flex-col gap-1\">\n        <span className=\"font-medium\">Settings</span>\n        <span className=\"text-xs text-muted-foreground\">\n          Manage preferences\n        </span>\n      </div>\n      <Separator orientation=\"vertical\" />\n      <div className=\"flex flex-col gap-1\">\n        <span className=\"font-medium\">Account</span>\n        <span className=\"text-xs text-muted-foreground\">\n          Profile & security\n        </span>\n      </div>\n      <Separator orientation=\"vertical\" className=\"hidden md:block\" />\n      <div className=\"hidden flex-col gap-1 md:flex\">\n        <span className=\"font-medium\">Help</span>\n        <span className=\"text-xs text-muted-foreground\">Support & docs</span>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/separator-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Separator } from \"@/examples/base/ui-rtl/separator\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"shadcn/ui\",\n      subtitle: \"The Foundation for your Design System\",\n      description:\n        \"A set of beautifully designed components that you can customize, extend, and build on.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"shadcn/ui\",\n      subtitle: \"الأساس لنظام التصميم الخاص بك\",\n      description:\n        \"مجموعة من المكونات المصممة بشكل جميل يمكنك تخصيصها وتوسيعها والبناء عليها.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"shadcn/ui\",\n      subtitle: \"הבסיס למערכת העיצוב שלך\",\n      description:\n        \"סט של רכיבים מעוצבים בצורה יפה שאתה יכול להתאים אישית, להרחיב ולבנות עליהם.\",\n    },\n  },\n}\n\nexport function SeparatorRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex max-w-sm flex-col gap-4 text-sm\" dir={dir}>\n      <div className=\"flex flex-col gap-1.5\">\n        <div className=\"leading-none font-medium\">{t.title}</div>\n        <div className=\"text-muted-foreground\">{t.subtitle}</div>\n      </div>\n      <Separator />\n      <div>{t.description}</div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/separator-vertical.tsx",
    "content": "import { Separator } from \"@/examples/base/ui/separator\"\n\nexport function SeparatorVertical() {\n  return (\n    <div className=\"flex h-5 items-center gap-4 text-sm\">\n      <div>Blog</div>\n      <Separator orientation=\"vertical\" />\n      <div>Docs</div>\n      <Separator orientation=\"vertical\" />\n      <div>Source</div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sheet-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { Label } from \"@/examples/base/ui/label\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/examples/base/ui/sheet\"\n\nexport default function SheetDemo() {\n  return (\n    <Sheet>\n      <SheetTrigger render={<Button variant=\"outline\" />}>Open</SheetTrigger>\n      <SheetContent>\n        <SheetHeader>\n          <SheetTitle>Edit profile</SheetTitle>\n          <SheetDescription>\n            Make changes to your profile here. Click save when you&apos;re done.\n          </SheetDescription>\n        </SheetHeader>\n        <div className=\"grid flex-1 auto-rows-min gap-6 px-4\">\n          <div className=\"grid gap-3\">\n            <Label htmlFor=\"sheet-demo-name\">Name</Label>\n            <Input id=\"sheet-demo-name\" defaultValue=\"Pedro Duarte\" />\n          </div>\n          <div className=\"grid gap-3\">\n            <Label htmlFor=\"sheet-demo-username\">Username</Label>\n            <Input id=\"sheet-demo-username\" defaultValue=\"@peduarte\" />\n          </div>\n        </div>\n        <SheetFooter>\n          <Button type=\"submit\">Save changes</Button>\n          <SheetClose render={<Button variant=\"outline\" />}>Close</SheetClose>\n        </SheetFooter>\n      </SheetContent>\n    </Sheet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sheet-no-close-button.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/examples/base/ui/sheet\"\n\nexport default function SheetNoCloseButton() {\n  return (\n    <Sheet>\n      <SheetTrigger render={<Button variant=\"outline\" />}>\n        Open Sheet\n      </SheetTrigger>\n      <SheetContent showCloseButton={false}>\n        <SheetHeader>\n          <SheetTitle>No Close Button</SheetTitle>\n          <SheetDescription>\n            This sheet doesn&apos;t have a close button in the top-right corner.\n            Click outside to close.\n          </SheetDescription>\n        </SheetHeader>\n      </SheetContent>\n    </Sheet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sheet-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui-rtl/field\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/examples/base/ui-rtl/sheet\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      open: \"Open\",\n      editProfile: \"Edit profile\",\n      description:\n        \"Make changes to your profile here. Click save when you're done.\",\n      name: \"Name\",\n      username: \"Username\",\n      save: \"Save changes\",\n      close: \"Close\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      open: \"فتح\",\n      editProfile: \"تعديل الملف الشخصي\",\n      description:\n        \"قم بإجراء تغييرات على ملفك الشخصي هنا. انقر حفظ عند الانتهاء.\",\n      name: \"الاسم\",\n      username: \"اسم المستخدم\",\n      save: \"حفظ التغييرات\",\n      close: \"إغلاق\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      open: \"פתח\",\n      editProfile: \"עריכת פרופיל\",\n      description: \"בצע שינויים בפרופיל שלך כאן. לחץ שמור כשתסיים.\",\n      name: \"שם\",\n      username: \"שם משתמש\",\n      save: \"שמור שינויים\",\n      close: \"סגור\",\n    },\n  },\n}\n\nexport function SheetRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <Sheet>\n      <SheetTrigger render={<Button variant=\"outline\" />}>\n        {t.open}\n      </SheetTrigger>\n      <SheetContent\n        dir={dir}\n        side={dir === \"rtl\" ? \"left\" : \"right\"}\n        data-lang={dir === \"rtl\" ? language : undefined}\n      >\n        <SheetHeader>\n          <SheetTitle>{t.editProfile}</SheetTitle>\n          <SheetDescription>{t.description}</SheetDescription>\n        </SheetHeader>\n        <FieldGroup className=\"px-4\">\n          <Field>\n            <FieldLabel htmlFor=\"sheet-rtl-name\">{t.name}</FieldLabel>\n            <Input id=\"sheet-rtl-name\" defaultValue=\"Pedro Duarte\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"sheet-rtl-username\">{t.username}</FieldLabel>\n            <Input id=\"sheet-rtl-username\" defaultValue=\"peduarte\" />\n          </Field>\n        </FieldGroup>\n        <SheetFooter>\n          <Button type=\"submit\">{t.save}</Button>\n          <SheetClose render={<Button variant=\"outline\" />}>\n            {t.close}\n          </SheetClose>\n        </SheetFooter>\n      </SheetContent>\n    </Sheet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sheet-side.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/examples/base/ui/sheet\"\n\nconst SHEET_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nexport default function SheetSide() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {SHEET_SIDES.map((side) => (\n        <Sheet key={side}>\n          <SheetTrigger\n            render={<Button variant=\"outline\" className=\"capitalize\" />}\n          >\n            {side}\n          </SheetTrigger>\n          <SheetContent\n            side={side}\n            className=\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\"\n          >\n            <SheetHeader>\n              <SheetTitle>Edit profile</SheetTitle>\n              <SheetDescription>\n                Make changes to your profile here. Click save when you&apos;re\n                done.\n              </SheetDescription>\n            </SheetHeader>\n            <div className=\"no-scrollbar overflow-y-auto px-4\">\n              {Array.from({ length: 10 }).map((_, index) => (\n                <p key={index} className=\"mb-2 leading-relaxed\">\n                  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                  do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n                  Ut enim ad minim veniam, quis nostrud exercitation ullamco\n                  laboris nisi ut aliquip ex ea commodo consequat. Duis aute\n                  irure dolor in reprehenderit in voluptate velit esse cillum\n                  dolore eu fugiat nulla pariatur. Excepteur sint occaecat\n                  cupidatat non proident, sunt in culpa qui officia deserunt\n                  mollit anim id est laborum.\n                </p>\n              ))}\n            </div>\n            <SheetFooter>\n              <Button type=\"submit\">Save changes</Button>\n              <SheetClose render={<Button variant=\"outline\" />}>\n                Cancel\n              </SheetClose>\n            </SheetFooter>\n          </SheetContent>\n        </Sheet>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PanelLeftCloseIcon,\n  PanelLeftOpenIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  const [open, setOpen] = React.useState(true)\n\n  return (\n    <SidebarProvider open={open} onOpenChange={setOpen}>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton render={<a href={project.url} />}>\n                      <project.icon />\n                      <span>{project.name}</span>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <Button\n            onClick={() => setOpen((open) => !open)}\n            size=\"sm\"\n            variant=\"ghost\"\n          >\n            {open ? <PanelLeftCloseIcon /> : <PanelLeftOpenIcon />}\n            <span>{open ? \"Close\" : \"Open\"} Sidebar</span>\n          </Button>\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/base/ui/avatar\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui/collapsible\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n  useSidebar,\n} from \"@/examples/base/ui/sidebar\"\nimport {\n  AudioWaveform,\n  BadgeCheck,\n  Bell,\n  BookOpen,\n  Bot,\n  ChevronRight,\n  ChevronsUpDown,\n  Command,\n  CreditCard,\n  Folder,\n  Forward,\n  Frame,\n  GalleryVerticalEnd,\n  LogOut,\n  Map,\n  MoreHorizontal,\n  PieChart,\n  Plus,\n  Settings2,\n  Sparkles,\n  SquareTerminal,\n  Trash2,\n} from \"lucide-react\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: GalleryVerticalEnd,\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: AudioWaveform,\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: Command,\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: SquareTerminal,\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: Bot,\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: BookOpen,\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: Settings2,\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: Frame,\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: PieChart,\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: Map,\n    },\n  ],\n}\n\nfunction TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ElementType\n    plan: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n\n  if (!activeTeam) {\n    return null\n  }\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton\n                size=\"lg\"\n                className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n              />\n            }\n          >\n            <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n              <activeTeam.logo className=\"size-4\" />\n            </div>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{activeTeam.name}</span>\n              <span className=\"truncate text-xs\">{activeTeam.plan}</span>\n            </div>\n            <ChevronsUpDown className=\"ml-auto\" />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            align=\"start\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                Teams\n              </DropdownMenuLabel>\n              {teams.map((team, index) => (\n                <DropdownMenuItem\n                  key={team.name}\n                  onClick={() => setActiveTeam(team)}\n                  className=\"gap-2 p-2\"\n                >\n                  <div className=\"flex size-6 items-center justify-center rounded-md border\">\n                    <team.logo className=\"size-3.5 shrink-0\" />\n                  </div>\n                  {team.name}\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n                </DropdownMenuItem>\n              ))}\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem className=\"gap-2 p-2\">\n                <div className=\"flex size-6 items-center justify-center rounded-md border bg-transparent\">\n                  <Plus className=\"size-4\" />\n                </div>\n                <div className=\"font-medium text-muted-foreground\">\n                  Add team\n                </div>\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n\nfunction NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: React.ElementType\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible\n            key={item.title}\n            defaultOpen={item.isActive}\n            className=\"group/collapsible\"\n          >\n            <SidebarMenuItem>\n              <CollapsibleTrigger\n                render={<SidebarMenuButton tooltip={item.title} />}\n              >\n                {item.icon && <item.icon />}\n                <span>{item.title}</span>\n                <ChevronRight className=\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\" />\n              </CollapsibleTrigger>\n              <CollapsibleContent>\n                <SidebarMenuSub>\n                  {item.items?.map((subItem) => (\n                    <SidebarMenuSubItem key={subItem.title}>\n                      <SidebarMenuSubButton render={<a href={subItem.url} />}>\n                        <span>{subItem.title}</span>\n                      </SidebarMenuSubButton>\n                    </SidebarMenuSubItem>\n                  ))}\n                </SidebarMenuSub>\n              </CollapsibleContent>\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n\nfunction NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: React.ElementType\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton render={<a href={item.url} />}>\n              <item.icon />\n              <span>{item.name}</span>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger render={<SidebarMenuAction showOnHover />}>\n                <MoreHorizontal />\n                <span className=\"sr-only\">More</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <Folder className=\"text-muted-foreground\" />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <Forward className=\"text-muted-foreground\" />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <Trash2 className=\"text-muted-foreground\" />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <MoreHorizontal className=\"text-sidebar-foreground/70\" />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n\nfunction NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton\n                size=\"lg\"\n                className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n              />\n            }\n          >\n            <Avatar className=\"h-8 w-8 rounded-lg\">\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs\">{user.email}</span>\n            </div>\n            <ChevronsUpDown className=\"ml-auto size-4\" />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"p-0 font-normal\">\n                <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                  <Avatar className=\"h-8 w-8 rounded-lg\">\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs\">{user.email}</span>\n                  </div>\n                </div>\n              </DropdownMenuLabel>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <LogOut />\n                Log out\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n\nexport default function AppSidebar({\n  ...props\n}: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <SidebarProvider>\n      <Sidebar collapsible=\"icon\" {...props}>\n        <SidebarHeader>\n          <TeamSwitcher teams={data.teams} />\n        </SidebarHeader>\n        <SidebarContent>\n          <NavMain items={data.navMain} />\n          <NavProjects projects={data.projects} />\n        </SidebarContent>\n        <SidebarFooter>\n          <NavUser user={data.user} />\n        </SidebarFooter>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n          </div>\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-footer.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/examples/base/ui/sidebar\"\nimport { ChevronUpIcon } from \"lucide-react\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarHeader />\n        <SidebarContent />\n        <SidebarFooter>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\" />\n                  }\n                >\n                  Username\n                  <ChevronUpIcon className=\"ml-auto\" />\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  side=\"top\"\n                  className=\"w-(--radix-popper-anchor-width)\"\n                >\n                  <DropdownMenuItem>\n                    <span>Account</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Billing</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Sign out</span>\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarFooter>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <SidebarTrigger />\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-group-action.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport { FrameIcon, MapIcon, PieChartIcon, PlusIcon } from \"lucide-react\"\nimport { toast, Toaster } from \"sonner\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Toaster\n        position=\"bottom-left\"\n        toastOptions={{\n          className: \"ml-[160px]\",\n        }}\n      />\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupAction\n              title=\"Add Project\"\n              onClick={() => toast(\"You clicked the group action!\")}\n            >\n              <PlusIcon /> <span className=\"sr-only\">Add Project</span>\n            </SidebarGroupAction>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                <SidebarMenuItem>\n                  <SidebarMenuButton render={<a href=\"#\" />}>\n                    <FrameIcon />\n                    <span>Design Engineering</span>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton render={<a href=\"#\" />}>\n                    <PieChartIcon />\n                    <span>Sales & Marketing</span>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton render={<a href=\"#\" />}>\n                    <MapIcon />\n                    <span>Travel</span>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-group-collapsible.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport { ChevronDownIcon, LifeBuoyIcon, SendIcon } from \"lucide-react\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <Collapsible defaultOpen className=\"group/collapsible\">\n            <SidebarGroup>\n              <SidebarGroupLabel\n                render={<CollapsibleTrigger />}\n                className=\"text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                Help\n                <ChevronDownIcon className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-180\" />\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    <SidebarMenuItem>\n                      <SidebarMenuButton>\n                        <LifeBuoyIcon />\n                        Support\n                      </SidebarMenuButton>\n                    </SidebarMenuItem>\n                    <SidebarMenuItem>\n                      <SidebarMenuButton>\n                        <SendIcon />\n                        Feedback\n                      </SidebarMenuButton>\n                    </SidebarMenuItem>\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </SidebarGroup>\n          </Collapsible>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-group.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport { LifeBuoyIcon, SendIcon } from \"lucide-react\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Help</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                <SidebarMenuItem>\n                  <SidebarMenuButton>\n                    <LifeBuoyIcon />\n                    Support\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton>\n                    <SendIcon />\n                    Feedback\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-header.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/examples/base/ui/sidebar\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\" />\n                  }\n                >\n                  Select Workspace\n                  <ChevronDownIcon className=\"ml-auto\" />\n                </DropdownMenuTrigger>\n                <DropdownMenuContent className=\"w-(--radix-popper-anchor-width)\">\n                  <DropdownMenuItem>\n                    <span>Acme Inc</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Acme Corp.</span>\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <SidebarTrigger />\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-menu-action.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  MoreHorizontalIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton\n                      render={<a href={project.url} />}\n                      className=\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\"\n                    >\n                      <project.icon />\n                      <span>{project.name}</span>\n                    </SidebarMenuButton>\n                    <DropdownMenu>\n                      <DropdownMenuTrigger render={<SidebarMenuAction />}>\n                        <MoreHorizontalIcon />\n                        <span className=\"sr-only\">More</span>\n                      </DropdownMenuTrigger>\n                      <DropdownMenuContent side=\"right\" align=\"start\">\n                        <DropdownMenuItem>\n                          <span>Edit Project</span>\n                        </DropdownMenuItem>\n                        <DropdownMenuItem>\n                          <span>Delete Project</span>\n                        </DropdownMenuItem>\n                      </DropdownMenuContent>\n                    </DropdownMenu>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-menu-badge.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n    badge: \"24\",\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n    badge: \"12\",\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n    badge: \"3\",\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n    badge: \"21\",\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n    badge: \"8\",\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton\n                      render={<a href={project.url} />}\n                      className=\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\"\n                    >\n                      <project.icon />\n                      <span>{project.name}</span>\n                    </SidebarMenuButton>\n                    <SidebarMenuBadge>{project.badge}</SidebarMenuBadge>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-menu-collapsible.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport { ChevronRightIcon } from \"lucide-react\"\n\nconst items = [\n  {\n    title: \"Getting Started\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Installation\",\n        url: \"#\",\n      },\n      {\n        title: \"Project Structure\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Build Your Application\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Routing\",\n        url: \"#\",\n      },\n      {\n        title: \"Data Fetching\",\n        url: \"#\",\n        isActive: true,\n      },\n      {\n        title: \"Rendering\",\n        url: \"#\",\n      },\n      {\n        title: \"Caching\",\n        url: \"#\",\n      },\n      {\n        title: \"Styling\",\n        url: \"#\",\n      },\n      {\n        title: \"Optimizing\",\n        url: \"#\",\n      },\n      {\n        title: \"Configuring\",\n        url: \"#\",\n      },\n      {\n        title: \"Testing\",\n        url: \"#\",\n      },\n      {\n        title: \"Authentication\",\n        url: \"#\",\n      },\n      {\n        title: \"Deploying\",\n        url: \"#\",\n      },\n      {\n        title: \"Upgrading\",\n        url: \"#\",\n      },\n      {\n        title: \"Examples\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"API Reference\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Components\",\n        url: \"#\",\n      },\n      {\n        title: \"File Conventions\",\n        url: \"#\",\n      },\n      {\n        title: \"Functions\",\n        url: \"#\",\n      },\n      {\n        title: \"next.config.js Options\",\n        url: \"#\",\n      },\n      {\n        title: \"CLI\",\n        url: \"#\",\n      },\n      {\n        title: \"Edge Runtime\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Architecture\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Accessibility\",\n        url: \"#\",\n      },\n      {\n        title: \"Fast Refresh\",\n        url: \"#\",\n      },\n      {\n        title: \"Next.js Compiler\",\n        url: \"#\",\n      },\n      {\n        title: \"Supported Browsers\",\n        url: \"#\",\n      },\n      {\n        title: \"Turbopack\",\n        url: \"#\",\n      },\n    ],\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {items.map((item, index) => (\n                  <Collapsible\n                    key={index}\n                    className=\"group/collapsible\"\n                    defaultOpen={index === 0}\n                  >\n                    <SidebarMenuItem>\n                      <CollapsibleTrigger render={<SidebarMenuButton />}>\n                        <span>{item.title}</span>\n                        <ChevronRightIcon className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\" />\n                      </CollapsibleTrigger>\n                      <CollapsibleContent>\n                        <SidebarMenuSub>\n                          {item.items.map((subItem, subIndex) => (\n                            <SidebarMenuSubItem key={subIndex}>\n                              <SidebarMenuSubButton\n                                render={<a href={subItem.url} />}\n                              >\n                                <span>{subItem.title}</span>\n                              </SidebarMenuSubButton>\n                            </SidebarMenuSubItem>\n                          ))}\n                        </SidebarMenuSub>\n                      </CollapsibleContent>\n                    </SidebarMenuItem>\n                  </Collapsible>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-menu-sub.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\n\nconst items = [\n  {\n    title: \"Getting Started\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Installation\",\n        url: \"#\",\n      },\n      {\n        title: \"Project Structure\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Build Your Application\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Routing\",\n        url: \"#\",\n      },\n      {\n        title: \"Data Fetching\",\n        url: \"#\",\n        isActive: true,\n      },\n      {\n        title: \"Rendering\",\n        url: \"#\",\n      },\n      {\n        title: \"Caching\",\n        url: \"#\",\n      },\n      {\n        title: \"Styling\",\n        url: \"#\",\n      },\n      {\n        title: \"Optimizing\",\n        url: \"#\",\n      },\n      {\n        title: \"Configuring\",\n        url: \"#\",\n      },\n      {\n        title: \"Testing\",\n        url: \"#\",\n      },\n      {\n        title: \"Authentication\",\n        url: \"#\",\n      },\n      {\n        title: \"Deploying\",\n        url: \"#\",\n      },\n      {\n        title: \"Upgrading\",\n        url: \"#\",\n      },\n      {\n        title: \"Examples\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"API Reference\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Components\",\n        url: \"#\",\n      },\n      {\n        title: \"File Conventions\",\n        url: \"#\",\n      },\n      {\n        title: \"Functions\",\n        url: \"#\",\n      },\n      {\n        title: \"next.config.js Options\",\n        url: \"#\",\n      },\n      {\n        title: \"CLI\",\n        url: \"#\",\n      },\n      {\n        title: \"Edge Runtime\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Architecture\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Accessibility\",\n        url: \"#\",\n      },\n      {\n        title: \"Fast Refresh\",\n        url: \"#\",\n      },\n      {\n        title: \"Next.js Compiler\",\n        url: \"#\",\n      },\n      {\n        title: \"Supported Browsers\",\n        url: \"#\",\n      },\n      {\n        title: \"Turbopack\",\n        url: \"#\",\n      },\n    ],\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {items.map((item, index) => (\n                  <SidebarMenuItem key={index}>\n                    <SidebarMenuButton render={<a href={item.url} />}>\n                      <span>{item.title}</span>\n                    </SidebarMenuButton>\n                    <SidebarMenuSub>\n                      {item.items.map((subItem, subIndex) => (\n                        <SidebarMenuSubItem key={subIndex}>\n                          <SidebarMenuSubButton\n                            render={<a href={subItem.url} />}\n                          >\n                            <span>{subItem.title}</span>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-menu.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton render={<a href={project.url} />}>\n                      <project.icon />\n                      <span>{project.name}</span>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-rsc.tsx",
    "content": "import * as React from \"react\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarProvider,\n} from \"@/examples/base/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n    badge: \"24\",\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n    badge: \"12\",\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n    badge: \"3\",\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n    badge: \"21\",\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n    badge: \"8\",\n  },\n]\n\n// Dummy fetch function.\nasync function fetchProjects() {\n  await new Promise((resolve) => setTimeout(resolve, 3000))\n  return projects\n}\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <React.Suspense fallback={<NavProjectsSkeleton />}>\n                <NavProjects />\n              </React.Suspense>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n\nfunction NavProjectsSkeleton() {\n  return (\n    <SidebarMenu>\n      {Array.from({ length: 5 }).map((_, index) => (\n        <SidebarMenuItem key={index}>\n          <SidebarMenuSkeleton showIcon />\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n\nasync function NavProjects() {\n  const projects = await fetchProjects()\n\n  return (\n    <SidebarMenu>\n      {projects.map((project) => (\n        <SidebarMenuItem key={project.name}>\n          <SidebarMenuButton render={<a href={project.url} />}>\n            <project.icon />\n            <span>{project.name}</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sidebar-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/examples/base/ui-rtl/avatar\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/base/ui-rtl/collapsible\"\nimport { DirectionProvider } from \"@/examples/base/ui-rtl/direction\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n  useSidebar,\n} from \"@/examples/base/ui-rtl/sidebar\"\nimport {\n  BadgeCheck,\n  Bell,\n  BookOpen,\n  Bot,\n  ChevronRight,\n  ChevronsUpDown,\n  CreditCard,\n  Folder,\n  Forward,\n  Frame,\n  GalleryVerticalEnd,\n  LogOut,\n  Map,\n  MoreHorizontal,\n  PieChart,\n  Settings2,\n  Sparkles,\n  SquareTerminal,\n  Trash2,\n} from \"lucide-react\"\n\nimport {\n  LanguageProvider,\n  LanguageSelector,\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      teamName: \"Acme Inc\",\n      teamPlan: \"Enterprise\",\n      platform: \"Platform\",\n      projects: \"Projects\",\n      viewProject: \"View Project\",\n      shareProject: \"Share Project\",\n      deleteProject: \"Delete Project\",\n      more: \"More\",\n      upgradeToPro: \"Upgrade to Pro\",\n      account: \"Account\",\n      billing: \"Billing\",\n      notifications: \"Notifications\",\n      logOut: \"Log out\",\n      playground: \"Playground\",\n      history: \"History\",\n      starred: \"Starred\",\n      settings: \"Settings\",\n      models: \"Models\",\n      genesis: \"Genesis\",\n      explorer: \"Explorer\",\n      quantum: \"Quantum\",\n      documentation: \"Documentation\",\n      introduction: \"Introduction\",\n      getStarted: \"Get Started\",\n      tutorials: \"Tutorials\",\n      changelog: \"Changelog\",\n      general: \"General\",\n      team: \"Team\",\n      limits: \"Limits\",\n      designEngineering: \"Design Engineering\",\n      salesMarketing: \"Sales & Marketing\",\n      travel: \"Travel\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      teamName: \"شركة أكمي\",\n      teamPlan: \"المؤسسة\",\n      platform: \"المنصة\",\n      projects: \"المشاريع\",\n      viewProject: \"عرض المشروع\",\n      shareProject: \"مشاركة المشروع\",\n      deleteProject: \"حذف المشروع\",\n      more: \"المزيد\",\n      upgradeToPro: \"ترقية إلى Pro\",\n      account: \"الحساب\",\n      billing: \"الفوترة\",\n      notifications: \"الإشعارات\",\n      logOut: \"تسجيل الخروج\",\n      playground: \"ملعب\",\n      history: \"السجل\",\n      starred: \"المميز\",\n      settings: \"الإعدادات\",\n      models: \"النماذج\",\n      genesis: \"جينيسيس\",\n      explorer: \"إكسبلورر\",\n      quantum: \"كوانتوم\",\n      documentation: \"التوثيق\",\n      introduction: \"مقدمة\",\n      getStarted: \"ابدأ\",\n      tutorials: \"الدروس\",\n      changelog: \"سجل التغييرات\",\n      general: \"عام\",\n      team: \"الفريق\",\n      limits: \"الحدود\",\n      designEngineering: \"هندسة التصميم\",\n      salesMarketing: \"المبيعات والتسويق\",\n      travel: \"السفر\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      teamName: \"אקמי בע״מ\",\n      teamPlan: \"ארגוני\",\n      platform: \"פלטפורמה\",\n      projects: \"פרויקטים\",\n      viewProject: \"הצג פרויקט\",\n      shareProject: \"שתף פרויקט\",\n      deleteProject: \"מחק פרויקט\",\n      more: \"עוד\",\n      upgradeToPro: \"שדרג ל-Pro\",\n      account: \"חשבון\",\n      billing: \"חיוב\",\n      notifications: \"התראות\",\n      logOut: \"התנתק\",\n      playground: \"מגרש משחקים\",\n      history: \"היסטוריה\",\n      starred: \"מועדפים\",\n      settings: \"הגדרות\",\n      models: \"מודלים\",\n      genesis: \"ג'נסיס\",\n      explorer: \"אקספלורר\",\n      quantum: \"קוונטום\",\n      documentation: \"תיעוד\",\n      introduction: \"מבוא\",\n      getStarted: \"התחל\",\n      tutorials: \"מדריכים\",\n      changelog: \"יומן שינויים\",\n      general: \"כללי\",\n      team: \"צוות\",\n      limits: \"מגבלות\",\n      designEngineering: \"הנדסת עיצוב\",\n      salesMarketing: \"מכירות ושיווק\",\n      travel: \"נסיעות\",\n    },\n  },\n}\n\nexport function SidebarRtl() {\n  return (\n    <LanguageProvider defaultLanguage=\"ar\">\n      <AppSidebarWithProvider />\n    </LanguageProvider>\n  )\n}\n\nfunction AppSidebarWithProvider() {\n  const { language, setLanguage, dir } = useTranslation(translations, \"ar\")\n\n  return (\n    <DirectionProvider direction={dir}>\n      <div className=\"relative\" dir={dir}>\n        <LanguageSelector\n          value={language}\n          onValueChange={setLanguage}\n          className=\"absolute top-4 right-4 z-10 rtl:right-auto rtl:left-4\"\n        />\n        <AppSidebar />\n      </div>\n    </DirectionProvider>\n  )\n}\n\nfunction AppSidebar() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  const navMain = [\n    {\n      title: t.playground,\n      url: \"#\",\n      icon: SquareTerminal,\n      isActive: true,\n      items: [\n        { title: t.history, url: \"#\" },\n        { title: t.starred, url: \"#\" },\n        { title: t.settings, url: \"#\" },\n      ],\n    },\n    {\n      title: t.models,\n      url: \"#\",\n      icon: Bot,\n      items: [\n        { title: t.genesis, url: \"#\" },\n        { title: t.explorer, url: \"#\" },\n        { title: t.quantum, url: \"#\" },\n      ],\n    },\n    {\n      title: t.documentation,\n      url: \"#\",\n      icon: BookOpen,\n      items: [\n        { title: t.introduction, url: \"#\" },\n        { title: t.getStarted, url: \"#\" },\n        { title: t.tutorials, url: \"#\" },\n        { title: t.changelog, url: \"#\" },\n      ],\n    },\n    {\n      title: t.settings,\n      url: \"#\",\n      icon: Settings2,\n      items: [\n        { title: t.general, url: \"#\" },\n        { title: t.team, url: \"#\" },\n        { title: t.billing, url: \"#\" },\n        { title: t.limits, url: \"#\" },\n      ],\n    },\n  ]\n\n  const projects = [\n    { name: t.designEngineering, url: \"#\", icon: Frame },\n    { name: t.salesMarketing, url: \"#\", icon: PieChart },\n    { name: t.travel, url: \"#\", icon: Map },\n  ]\n\n  const user = {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  }\n\n  return (\n    <SidebarProvider>\n      <SidebarContentInner\n        dir={dir}\n        t={t}\n        navMain={navMain}\n        projects={projects}\n        user={user}\n      />\n    </SidebarProvider>\n  )\n}\n\nfunction SidebarContentInner({\n  dir,\n  t,\n  navMain,\n  projects,\n  user,\n}: {\n  dir: \"ltr\" | \"rtl\"\n  t: typeof translations.ar.values\n  navMain: Array<{\n    title: string\n    url: string\n    icon?: React.ElementType\n    isActive?: boolean\n    items?: Array<{ title: string; url: string }>\n  }>\n  projects: Array<{\n    name: string\n    url: string\n    icon: React.ElementType\n  }>\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <>\n      <Sidebar\n        collapsible=\"icon\"\n        dir={dir}\n        side={dir === \"ltr\" ? \"left\" : \"right\"}\n        variant=\"floating\"\n      >\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <SidebarMenuButton size=\"lg\" render={<a href=\"#\" />}>\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <GalleryVerticalEnd className=\"size-4\" />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">{t.teamName}</span>\n                  <span className=\"\">{t.teamPlan}</span>\n                </div>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>{t.platform}</SidebarGroupLabel>\n            <SidebarMenu>\n              {navMain.map((item) => (\n                <Collapsible\n                  key={item.title}\n                  defaultOpen={item.isActive}\n                  className=\"group/collapsible\"\n                >\n                  <SidebarMenuItem>\n                    <CollapsibleTrigger\n                      render={<SidebarMenuButton tooltip={item.title} />}\n                    >\n                      {item.icon && <item.icon />}\n                      <span>{item.title}</span>\n                      <ChevronRight className=\"ms-auto transition-transform duration-200 group-data-open/collapsible:rotate-90 rtl:rotate-180 rtl:group-data-open/collapsible:rotate-90\" />\n                    </CollapsibleTrigger>\n                    <CollapsibleContent>\n                      <SidebarMenuSub>\n                        {item.items?.map((subItem) => (\n                          <SidebarMenuSubItem key={subItem.title}>\n                            <SidebarMenuSubButton\n                              render={<a href={subItem.url} />}\n                            >\n                              <span>{subItem.title}</span>\n                            </SidebarMenuSubButton>\n                          </SidebarMenuSubItem>\n                        ))}\n                      </SidebarMenuSub>\n                    </CollapsibleContent>\n                  </SidebarMenuItem>\n                </Collapsible>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n          <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n            <SidebarGroupLabel>{t.projects}</SidebarGroupLabel>\n            <SidebarMenu>\n              {projects.map((item) => (\n                <SidebarMenuItem key={item.name}>\n                  <SidebarMenuButton render={<a href={item.url} />}>\n                    <item.icon />\n                    <span>{item.name}</span>\n                  </SidebarMenuButton>\n                  <DropdownMenu>\n                    <DropdownMenuTrigger\n                      render={<SidebarMenuAction showOnHover />}\n                    >\n                      <MoreHorizontal />\n                      <span className=\"sr-only\">{t.more}</span>\n                    </DropdownMenuTrigger>\n                    <DropdownMenuContent\n                      className=\"w-48 rounded-lg\"\n                      side={isMobile ? \"bottom\" : \"inline-end\"}\n                      align={isMobile ? \"end\" : \"start\"}\n                      dir={dir}\n                    >\n                      <DropdownMenuGroup>\n                        <DropdownMenuItem>\n                          <Folder className=\"text-muted-foreground\" />\n                          <span>{t.viewProject}</span>\n                        </DropdownMenuItem>\n                        <DropdownMenuItem>\n                          <Forward className=\"text-muted-foreground\" />\n                          <span>{t.shareProject}</span>\n                        </DropdownMenuItem>\n                      </DropdownMenuGroup>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuGroup>\n                        <DropdownMenuItem>\n                          <Trash2 className=\"text-muted-foreground\" />\n                          <span>{t.deleteProject}</span>\n                        </DropdownMenuItem>\n                      </DropdownMenuGroup>\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n                </SidebarMenuItem>\n              ))}\n              <SidebarMenuItem>\n                <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n                  <MoreHorizontal className=\"text-sidebar-foreground/70\" />\n                  <span>{t.more}</span>\n                </SidebarMenuButton>\n              </SidebarMenuItem>\n            </SidebarMenu>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <SidebarMenuButton\n                      size=\"lg\"\n                      className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n                    />\n                  }\n                >\n                  <Avatar className=\"rounded-lg\">\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-start text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs\">{user.email}</span>\n                  </div>\n                  <ChevronsUpDown className=\"ms-auto size-4\" />\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n                  side={isMobile ? \"bottom\" : \"inline-end\"}\n                  align=\"end\"\n                  sideOffset={4}\n                  dir={dir}\n                >\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel className=\"p-0 font-normal\">\n                      <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                        <Avatar>\n                          <AvatarImage src={user.avatar} alt={user.name} />\n                          <AvatarFallback className=\"rounded-lg\">\n                            CN\n                          </AvatarFallback>\n                        </Avatar>\n                        <div className=\"grid flex-1 text-start text-sm leading-tight\">\n                          <span className=\"truncate font-medium\">\n                            {user.name}\n                          </span>\n                          <span className=\"truncate text-xs\">{user.email}</span>\n                        </div>\n                      </div>\n                    </DropdownMenuLabel>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <Sparkles />\n                      {t.upgradeToPro}\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <BadgeCheck />\n                      {t.account}\n                    </DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <CreditCard />\n                      {t.billing}\n                    </DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <Bell />\n                      {t.notifications}\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <LogOut />\n                      {t.logOut}\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarFooter>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header\n          className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\"\n          dir={dir}\n        >\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n          </div>\n        </header>\n      </SidebarInset>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/skeleton-avatar.tsx",
    "content": "import { Skeleton } from \"@/examples/base/ui/skeleton\"\n\nexport function SkeletonAvatar() {\n  return (\n    <div className=\"flex w-fit items-center gap-4\">\n      <Skeleton className=\"size-10 shrink-0 rounded-full\" />\n      <div className=\"grid gap-2\">\n        <Skeleton className=\"h-4 w-[150px]\" />\n        <Skeleton className=\"h-4 w-[100px]\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/skeleton-card.tsx",
    "content": "import { Card, CardContent, CardHeader } from \"@/examples/base/ui/card\"\nimport { Skeleton } from \"@/examples/base/ui/skeleton\"\n\nexport function SkeletonCard() {\n  return (\n    <Card className=\"w-full max-w-xs\">\n      <CardHeader>\n        <Skeleton className=\"h-4 w-2/3\" />\n        <Skeleton className=\"h-4 w-1/2\" />\n      </CardHeader>\n      <CardContent>\n        <Skeleton className=\"aspect-video w-full\" />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/skeleton-demo.tsx",
    "content": "import { Skeleton } from \"@/examples/base/ui/skeleton\"\n\nexport function SkeletonDemo() {\n  return (\n    <div className=\"flex items-center gap-4\">\n      <Skeleton className=\"h-12 w-12 rounded-full\" />\n      <div className=\"space-y-2\">\n        <Skeleton className=\"h-4 w-[250px]\" />\n        <Skeleton className=\"h-4 w-[200px]\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/skeleton-form.tsx",
    "content": "import { Skeleton } from \"@/examples/base/ui/skeleton\"\n\nexport function SkeletonForm() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-7\">\n      <div className=\"flex flex-col gap-3\">\n        <Skeleton className=\"h-4 w-20\" />\n        <Skeleton className=\"h-8 w-full\" />\n      </div>\n      <div className=\"flex flex-col gap-3\">\n        <Skeleton className=\"h-4 w-24\" />\n        <Skeleton className=\"h-8 w-full\" />\n      </div>\n      <Skeleton className=\"h-8 w-24\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/skeleton-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Skeleton } from \"@/examples/base/ui-rtl/skeleton\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nexport function SkeletonRtl() {\n  const { dir } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex items-center gap-4\" dir={dir}>\n      <Skeleton className=\"h-12 w-12 rounded-full\" />\n      <div className=\"space-y-2\">\n        <Skeleton className=\"h-4 w-[250px]\" />\n        <Skeleton className=\"h-4 w-[200px]\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/skeleton-table.tsx",
    "content": "import { Skeleton } from \"@/examples/base/ui/skeleton\"\n\nexport function SkeletonTable() {\n  return (\n    <div className=\"flex w-full max-w-sm flex-col gap-2\">\n      {Array.from({ length: 5 }).map((_, index) => (\n        <div className=\"flex gap-4\" key={index}>\n          <Skeleton className=\"h-4 flex-1\" />\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-4 w-20\" />\n        </div>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/skeleton-text.tsx",
    "content": "import { Skeleton } from \"@/examples/base/ui/skeleton\"\n\nexport function SkeletonText() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-2\">\n      <Skeleton className=\"h-4 w-full\" />\n      <Skeleton className=\"h-4 w-full\" />\n      <Skeleton className=\"h-4 w-3/4\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/slider-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Label } from \"@/examples/base/ui/label\"\nimport { Slider } from \"@/examples/base/ui/slider\"\n\nexport function SliderControlled() {\n  const [value, setValue] = React.useState([0.3, 0.7])\n\n  return (\n    <div className=\"mx-auto grid w-full max-w-xs gap-3\">\n      <div className=\"flex items-center justify-between gap-2\">\n        <Label htmlFor=\"slider-demo-temperature\">Temperature</Label>\n        <span className=\"text-sm text-muted-foreground\">\n          {value.join(\", \")}\n        </span>\n      </div>\n      <Slider\n        id=\"slider-demo-temperature\"\n        value={value}\n        onValueChange={(value) => setValue(value as number[])}\n        min={0}\n        max={1}\n        step={0.1}\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/slider-demo.tsx",
    "content": "import { Slider } from \"@/examples/base/ui/slider\"\n\nexport function SliderDemo() {\n  return (\n    <Slider\n      defaultValue={[75]}\n      max={100}\n      step={1}\n      className=\"mx-auto w-full max-w-xs\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/slider-disabled.tsx",
    "content": "import { Slider } from \"@/examples/base/ui/slider\"\n\nexport function SliderDisabled() {\n  return (\n    <Slider\n      defaultValue={[50]}\n      max={100}\n      step={1}\n      disabled\n      className=\"mx-auto w-full max-w-xs\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/slider-multiple.tsx",
    "content": "import { Slider } from \"@/examples/base/ui/slider\"\n\nexport function SliderMultiple() {\n  return (\n    <Slider\n      defaultValue={[10, 20, 70]}\n      max={100}\n      step={10}\n      className=\"mx-auto w-full max-w-xs\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/slider-range.tsx",
    "content": "import { Slider } from \"@/examples/base/ui/slider\"\n\nexport function SliderRange() {\n  return (\n    <Slider\n      defaultValue={[25, 50]}\n      max={100}\n      step={5}\n      className=\"mx-auto w-full max-w-xs\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/slider-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slider } from \"@/examples/base/ui-rtl/slider\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nexport function SliderRtl() {\n  const { dir } = useTranslation(translations, \"ar\")\n\n  return (\n    <Slider\n      defaultValue={[75]}\n      max={100}\n      step={1}\n      className=\"mx-auto w-full max-w-xs\"\n      dir={dir}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/slider-vertical.tsx",
    "content": "import { Slider } from \"@/examples/base/ui/slider\"\n\nexport function SliderVertical() {\n  return (\n    <div className=\"mx-auto flex w-full max-w-xs items-center justify-center gap-6\">\n      <Slider\n        defaultValue={[50]}\n        max={100}\n        step={1}\n        orientation=\"vertical\"\n        className=\"h-40\"\n      />\n      <Slider\n        defaultValue={[25]}\n        max={100}\n        step={1}\n        orientation=\"vertical\"\n        className=\"h-40\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sonner-demo.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport { toast } from \"sonner\"\n\nexport function SonnerDemo() {\n  return (\n    <Button\n      variant=\"outline\"\n      onClick={() =>\n        toast(\"Event has been created\", {\n          description: \"Sunday, December 03, 2023 at 9:00 AM\",\n          action: {\n            label: \"Undo\",\n            onClick: () => console.log(\"Undo\"),\n          },\n        })\n      }\n    >\n      Show Toast\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sonner-description.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport { toast } from \"sonner\"\n\nexport function SonnerDescription() {\n  return (\n    <Button\n      onClick={() =>\n        toast(\"Event has been created\", {\n          description: \"Monday, January 3rd at 6:00pm\",\n        })\n      }\n      variant=\"outline\"\n      className=\"w-fit\"\n    >\n      Show Toast\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sonner-position.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport { toast } from \"sonner\"\n\nexport function SonnerPosition() {\n  return (\n    <div className=\"flex flex-wrap justify-center gap-2\">\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"top-left\" })\n        }\n      >\n        Top Left\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"top-center\" })\n        }\n      >\n        Top Center\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"top-right\" })\n        }\n      >\n        Top Right\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"bottom-left\" })\n        }\n      >\n        Bottom Left\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"bottom-center\" })\n        }\n      >\n        Bottom Center\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"bottom-right\" })\n        }\n      >\n        Bottom Right\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/sonner-types.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui/button\"\nimport { toast } from \"sonner\"\n\nexport function SonnerTypes() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Button variant=\"outline\" onClick={() => toast(\"Event has been created\")}>\n        Default\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => toast.success(\"Event has been created\")}\n      >\n        Success\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast.info(\"Be at the area 10 minutes before the event time\")\n        }\n      >\n        Info\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast.warning(\"Event start time cannot be earlier than 8am\")\n        }\n      >\n        Warning\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => toast.error(\"Event has not been created\")}\n      >\n        Error\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => {\n          toast.promise<{ name: string }>(\n            () =>\n              new Promise((resolve) =>\n                setTimeout(() => resolve({ name: \"Event\" }), 2000)\n              ),\n            {\n              loading: \"Loading...\",\n              success: (data) => `${data.name} has been created`,\n              error: \"Error\",\n            }\n          )\n        }}\n      >\n        Promise\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/spinner-badge.tsx",
    "content": "import { Badge } from \"@/examples/base/ui/badge\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\n\nexport function SpinnerBadge() {\n  return (\n    <div className=\"flex items-center gap-4 [--radius:1.2rem]\">\n      <Badge>\n        <Spinner data-icon=\"inline-start\" />\n        Syncing\n      </Badge>\n      <Badge variant=\"secondary\">\n        <Spinner data-icon=\"inline-start\" />\n        Updating\n      </Badge>\n      <Badge variant=\"outline\">\n        <Spinner data-icon=\"inline-start\" />\n        Processing\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/spinner-button.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\n\nexport function SpinnerButton() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <Button disabled size=\"sm\">\n        <Spinner data-icon=\"inline-start\" />\n        Loading...\n      </Button>\n      <Button variant=\"outline\" disabled size=\"sm\">\n        <Spinner data-icon=\"inline-start\" />\n        Please wait\n      </Button>\n      <Button variant=\"secondary\" disabled size=\"sm\">\n        <Spinner data-icon=\"inline-start\" />\n        Processing\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/spinner-custom.tsx",
    "content": "import { LoaderIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <LoaderIcon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport function SpinnerCustom() {\n  return (\n    <div className=\"flex items-center gap-4\">\n      <Spinner />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/spinner-demo.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui/item\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\n\nexport function SpinnerDemo() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-4 [--radius:1rem]\">\n      <Item variant=\"muted\">\n        <ItemMedia>\n          <Spinner />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle className=\"line-clamp-1\">Processing payment...</ItemTitle>\n        </ItemContent>\n        <ItemContent className=\"flex-none justify-end\">\n          <span className=\"text-sm tabular-nums\">$100.00</span>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/spinner-empty.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/base/ui/empty\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\n\nexport function SpinnerEmpty() {\n  return (\n    <Empty className=\"w-full\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <Spinner />\n        </EmptyMedia>\n        <EmptyTitle>Processing your request</EmptyTitle>\n        <EmptyDescription>\n          Please wait while we process your request. Do not refresh the page.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          Cancel\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/spinner-input-group.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupTextarea,\n} from \"@/examples/base/ui/input-group\"\nimport { Spinner } from \"@/examples/base/ui/spinner\"\nimport { ArrowUpIcon } from \"lucide-react\"\n\nexport function SpinnerInputGroup() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Send a message...\" disabled />\n        <InputGroupAddon align=\"inline-end\">\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder=\"Send a message...\" disabled />\n        <InputGroupAddon align=\"block-end\">\n          <Spinner /> Validating...\n          <InputGroupButton className=\"ml-auto\" variant=\"default\">\n            <ArrowUpIcon />\n            <span className=\"sr-only\">Send</span>\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/spinner-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Item,\n  ItemContent,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/base/ui-rtl/item\"\nimport { Spinner } from \"@/examples/base/ui-rtl/spinner\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"Processing payment...\",\n      amount: \"$100.00\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"جاري معالجة الدفع...\",\n      amount: \"١٠٠.٠٠ دولار\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"מעבד תשלום...\",\n      amount: \"$100.00\",\n    },\n  },\n}\n\nexport function SpinnerRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div\n      className=\"flex w-full max-w-xs flex-col gap-4 [--radius:1rem]\"\n      dir={dir}\n    >\n      <Item variant=\"muted\" dir={dir}>\n        <ItemMedia>\n          <Spinner />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle className=\"line-clamp-1\">{t.title}</ItemTitle>\n        </ItemContent>\n        <ItemContent className=\"flex-none justify-end\">\n          <span className=\"text-sm tabular-nums\">{t.amount}</span>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/spinner-size.tsx",
    "content": "import { Spinner } from \"@/examples/base/ui/spinner\"\n\nexport function SpinnerSize() {\n  return (\n    <div className=\"flex items-center gap-6\">\n      <Spinner className=\"size-3\" />\n      <Spinner className=\"size-4\" />\n      <Spinner className=\"size-6\" />\n      <Spinner className=\"size-8\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/switch-choice-card.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldTitle,\n} from \"@/examples/base/ui/field\"\nimport { Switch } from \"@/examples/base/ui/switch\"\n\nexport function SwitchChoiceCard() {\n  return (\n    <FieldGroup className=\"w-full max-w-sm\">\n      <FieldLabel htmlFor=\"switch-share\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Share across devices</FieldTitle>\n            <FieldDescription>\n              Focus is shared across devices, and turns off when you leave the\n              app.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-share\" />\n        </Field>\n      </FieldLabel>\n      <FieldLabel htmlFor=\"switch-notifications\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Enable notifications</FieldTitle>\n            <FieldDescription>\n              Receive notifications when focus mode is enabled or disabled.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-notifications\" defaultChecked />\n        </Field>\n      </FieldLabel>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/switch-demo.tsx",
    "content": "import { Label } from \"@/examples/base/ui/label\"\nimport { Switch } from \"@/examples/base/ui/switch\"\n\nexport function SwitchDemo() {\n  return (\n    <div className=\"flex items-center space-x-2\">\n      <Switch id=\"airplane-mode\" />\n      <Label htmlFor=\"airplane-mode\">Airplane Mode</Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/switch-description.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport { Switch } from \"@/examples/base/ui/switch\"\n\nexport function SwitchDescription() {\n  return (\n    <Field orientation=\"horizontal\" className=\"max-w-sm\">\n      <FieldContent>\n        <FieldLabel htmlFor=\"switch-focus-mode\">\n          Share across devices\n        </FieldLabel>\n        <FieldDescription>\n          Focus is shared across devices, and turns off when you leave the app.\n        </FieldDescription>\n      </FieldContent>\n      <Switch id=\"switch-focus-mode\" />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/switch-disabled.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Switch } from \"@/examples/base/ui/switch\"\n\nexport function SwitchDisabled() {\n  return (\n    <Field orientation=\"horizontal\" data-disabled className=\"w-fit\">\n      <Switch id=\"switch-disabled-unchecked\" disabled />\n      <FieldLabel htmlFor=\"switch-disabled-unchecked\">Disabled</FieldLabel>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/switch-invalid.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/base/ui/field\"\nimport { Switch } from \"@/examples/base/ui/switch\"\n\nexport function SwitchInvalid() {\n  return (\n    <Field orientation=\"horizontal\" className=\"max-w-sm\" data-invalid>\n      <FieldContent>\n        <FieldLabel htmlFor=\"switch-terms\">\n          Accept terms and conditions\n        </FieldLabel>\n        <FieldDescription>\n          You must accept the terms and conditions to continue.\n        </FieldDescription>\n      </FieldContent>\n      <Switch id=\"switch-terms\" aria-invalid />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/switch-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/base/ui-rtl/field\"\nimport { Switch } from \"@/examples/base/ui-rtl/switch\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Share across devices\",\n      description:\n        \"Focus is shared across devices, and turns off when you leave the app.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"المشاركة عبر الأجهزة\",\n      description:\n        \"يتم مشاركة التركيز عبر الأجهزة، ويتم إيقاف تشغيله عند مغادرة التطبيق.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"שיתוף בין מכשירים\",\n      description: \"המיקוד משותף בין מכשירים, וכבה כשאתה עוזב את האפליקציה.\",\n    },\n  },\n}\n\nexport function SwitchRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Field orientation=\"horizontal\" className=\"max-w-sm\" dir={dir}>\n      <FieldContent>\n        <FieldLabel htmlFor=\"switch-focus-mode-rtl\" dir={dir}>\n          {t.label}\n        </FieldLabel>\n        <FieldDescription dir={dir}>{t.description}</FieldDescription>\n      </FieldContent>\n      <Switch id=\"switch-focus-mode-rtl\" dir={dir} />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/switch-sizes.tsx",
    "content": "import { Field, FieldGroup, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Switch } from \"@/examples/base/ui/switch\"\n\nexport function SwitchSizes() {\n  return (\n    <FieldGroup className=\"w-full max-w-[10rem]\">\n      <Field orientation=\"horizontal\">\n        <Switch id=\"switch-size-sm\" size=\"sm\" />\n        <FieldLabel htmlFor=\"switch-size-sm\">Small</FieldLabel>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <Switch id=\"switch-size-default\" size=\"default\" />\n        <FieldLabel htmlFor=\"switch-size-default\">Default</FieldLabel>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/table-actions.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/base/ui/table\"\nimport { MoreHorizontalIcon } from \"lucide-react\"\n\nexport function TableActions() {\n  return (\n    <Table>\n      <TableHeader>\n        <TableRow>\n          <TableHead>Product</TableHead>\n          <TableHead>Price</TableHead>\n          <TableHead className=\"text-right\">Actions</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        <TableRow>\n          <TableCell className=\"font-medium\">Wireless Mouse</TableCell>\n          <TableCell>$29.99</TableCell>\n          <TableCell className=\"text-right\">\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />\n                }\n              >\n                <MoreHorizontalIcon />\n                <span className=\"sr-only\">Open menu</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\">\n                <DropdownMenuItem>Edit</DropdownMenuItem>\n                <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  Delete\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </TableCell>\n        </TableRow>\n        <TableRow>\n          <TableCell className=\"font-medium\">Mechanical Keyboard</TableCell>\n          <TableCell>$129.99</TableCell>\n          <TableCell className=\"text-right\">\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />\n                }\n              >\n                <MoreHorizontalIcon />\n                <span className=\"sr-only\">Open menu</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\">\n                <DropdownMenuItem>Edit</DropdownMenuItem>\n                <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  Delete\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </TableCell>\n        </TableRow>\n        <TableRow>\n          <TableCell className=\"font-medium\">USB-C Hub</TableCell>\n          <TableCell>$49.99</TableCell>\n          <TableCell className=\"text-right\">\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />\n                }\n              >\n                <MoreHorizontalIcon />\n                <span className=\"sr-only\">Open menu</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\">\n                <DropdownMenuItem>Edit</DropdownMenuItem>\n                <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  Delete\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </TableCell>\n        </TableRow>\n      </TableBody>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/table-demo.tsx",
    "content": "import {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/base/ui/table\"\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$250.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$150.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$350.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$450.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$550.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$200.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$300.00\",\n    paymentMethod: \"Credit Card\",\n  },\n]\n\nexport function TableDemo() {\n  return (\n    <Table>\n      <TableCaption>A list of your recent invoices.</TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">Invoice</TableHead>\n          <TableHead>Status</TableHead>\n          <TableHead>Method</TableHead>\n          <TableHead className=\"text-right\">Amount</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {invoices.map((invoice) => (\n          <TableRow key={invoice.invoice}>\n            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n            <TableCell>{invoice.paymentStatus}</TableCell>\n            <TableCell>{invoice.paymentMethod}</TableCell>\n            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n      <TableFooter>\n        <TableRow>\n          <TableCell colSpan={3}>Total</TableCell>\n          <TableCell className=\"text-right\">$2,500.00</TableCell>\n        </TableRow>\n      </TableFooter>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/table-footer.tsx",
    "content": "import {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/base/ui/table\"\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$250.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$150.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$350.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$450.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$550.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$200.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$300.00\",\n    paymentMethod: \"Credit Card\",\n  },\n]\n\nexport function TableFooterExample() {\n  return (\n    <Table>\n      <TableCaption>A list of your recent invoices.</TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">Invoice</TableHead>\n          <TableHead>Status</TableHead>\n          <TableHead>Method</TableHead>\n          <TableHead className=\"text-right\">Amount</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {invoices.slice(0, 3).map((invoice) => (\n          <TableRow key={invoice.invoice}>\n            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n            <TableCell>{invoice.paymentStatus}</TableCell>\n            <TableCell>{invoice.paymentMethod}</TableCell>\n            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n      <TableFooter>\n        <TableRow>\n          <TableCell colSpan={3}>Total</TableCell>\n          <TableCell className=\"text-right\">$2,500.00</TableCell>\n        </TableRow>\n      </TableFooter>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/table-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/base/ui-rtl/table\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      caption: \"A list of your recent invoices.\",\n      invoice: \"Invoice\",\n      status: \"Status\",\n      method: \"Method\",\n      amount: \"Amount\",\n      paid: \"Paid\",\n      pending: \"Pending\",\n      unpaid: \"Unpaid\",\n      creditCard: \"Credit Card\",\n      paypal: \"PayPal\",\n      bankTransfer: \"Bank Transfer\",\n      total: \"Total\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      caption: \"قائمة بفواتيرك الأخيرة.\",\n      invoice: \"الفاتورة\",\n      status: \"الحالة\",\n      method: \"الطريقة\",\n      amount: \"المبلغ\",\n      paid: \"مدفوع\",\n      pending: \"قيد الانتظار\",\n      unpaid: \"غير مدفوع\",\n      creditCard: \"بطاقة ائتمانية\",\n      paypal: \"PayPal\",\n      bankTransfer: \"تحويل بنكي\",\n      total: \"المجموع\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      caption: \"רשימת החשבוניות האחרונות שלך.\",\n      invoice: \"חשבונית\",\n      status: \"סטטוס\",\n      method: \"שיטה\",\n      amount: \"סכום\",\n      paid: \"שולם\",\n      pending: \"ממתין\",\n      unpaid: \"לא שולם\",\n      creditCard: \"כרטיס אשראי\",\n      paypal: \"PayPal\",\n      bankTransfer: \"העברה בנקאית\",\n      total: 'סה\"כ',\n    },\n  },\n}\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"paid\" as const,\n    totalAmount: \"$250.00\",\n    paymentMethod: \"creditCard\" as const,\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"pending\" as const,\n    totalAmount: \"$150.00\",\n    paymentMethod: \"paypal\" as const,\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"unpaid\" as const,\n    totalAmount: \"$350.00\",\n    paymentMethod: \"bankTransfer\" as const,\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"paid\" as const,\n    totalAmount: \"$450.00\",\n    paymentMethod: \"creditCard\" as const,\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"paid\" as const,\n    totalAmount: \"$550.00\",\n    paymentMethod: \"paypal\" as const,\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"pending\" as const,\n    totalAmount: \"$200.00\",\n    paymentMethod: \"bankTransfer\" as const,\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"unpaid\" as const,\n    totalAmount: \"$300.00\",\n    paymentMethod: \"creditCard\" as const,\n  },\n]\n\nexport function TableRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Table dir={dir}>\n      <TableCaption>{t.caption}</TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">{t.invoice}</TableHead>\n          <TableHead>{t.status}</TableHead>\n          <TableHead>{t.method}</TableHead>\n          <TableHead className=\"text-right\">{t.amount}</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {invoices.map((invoice) => (\n          <TableRow key={invoice.invoice}>\n            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n            <TableCell>{t[invoice.paymentStatus]}</TableCell>\n            <TableCell>{t[invoice.paymentMethod]}</TableCell>\n            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n      <TableFooter>\n        <TableRow>\n          <TableCell colSpan={3}>{t.total}</TableCell>\n          <TableCell className=\"text-right\">$2,500.00</TableCell>\n        </TableRow>\n      </TableFooter>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tabs-demo.tsx",
    "content": "import {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui/card\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/examples/base/ui/tabs\"\n\nexport function TabsDemo() {\n  return (\n    <Tabs defaultValue=\"overview\" className=\"w-[400px]\">\n      <TabsList>\n        <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n        <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n        <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n        <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n      </TabsList>\n      <TabsContent value=\"overview\">\n        <Card>\n          <CardHeader>\n            <CardTitle>Overview</CardTitle>\n            <CardDescription>\n              View your key metrics and recent project activity. Track progress\n              across all your active projects.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            You have 12 active projects and 3 pending tasks.\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"analytics\">\n        <Card>\n          <CardHeader>\n            <CardTitle>Analytics</CardTitle>\n            <CardDescription>\n              Track performance and user engagement metrics. Monitor trends and\n              identify growth opportunities.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            Page views are up 25% compared to last month.\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"reports\">\n        <Card>\n          <CardHeader>\n            <CardTitle>Reports</CardTitle>\n            <CardDescription>\n              Generate and download your detailed reports. Export data in\n              multiple formats for analysis.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            You have 5 reports ready and available to export.\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"settings\">\n        <Card>\n          <CardHeader>\n            <CardTitle>Settings</CardTitle>\n            <CardDescription>\n              Manage your account preferences and options. Customize your\n              experience to fit your needs.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            Configure notifications, security, and themes.\n          </CardContent>\n        </Card>\n      </TabsContent>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tabs-disabled.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/examples/base/ui/tabs\"\n\nexport function TabsDisabled() {\n  return (\n    <Tabs defaultValue=\"home\">\n      <TabsList>\n        <TabsTrigger value=\"home\">Home</TabsTrigger>\n        <TabsTrigger value=\"settings\" disabled>\n          Disabled\n        </TabsTrigger>\n      </TabsList>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tabs-icons.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/examples/base/ui/tabs\"\nimport { AppWindowIcon, CodeIcon } from \"lucide-react\"\n\nexport function TabsIcons() {\n  return (\n    <Tabs defaultValue=\"preview\">\n      <TabsList>\n        <TabsTrigger value=\"preview\">\n          <AppWindowIcon />\n          Preview\n        </TabsTrigger>\n        <TabsTrigger value=\"code\">\n          <CodeIcon />\n          Code\n        </TabsTrigger>\n      </TabsList>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tabs-line.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/examples/base/ui/tabs\"\n\nexport function TabsLine() {\n  return (\n    <Tabs defaultValue=\"overview\">\n      <TabsList variant=\"line\">\n        <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n        <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n        <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n      </TabsList>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tabs-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/base/ui-rtl/card\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/examples/base/ui-rtl/tabs\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      overview: \"Overview\",\n      analytics: \"Analytics\",\n      reports: \"Reports\",\n      settings: \"Settings\",\n      overviewTitle: \"Overview\",\n      overviewDesc:\n        \"View your key metrics and recent project activity. Track progress across all your active projects.\",\n      overviewContent: \"You have 12 active projects and 3 pending tasks.\",\n      analyticsTitle: \"Analytics\",\n      analyticsDesc:\n        \"Track performance and user engagement metrics. Monitor trends and identify growth opportunities.\",\n      analyticsContent: \"Page views are up 25% compared to last month.\",\n      reportsTitle: \"Reports\",\n      reportsDesc:\n        \"Generate and download your detailed reports. Export data in multiple formats for analysis.\",\n      reportsContent: \"You have 5 reports ready and available to export.\",\n      settingsTitle: \"Settings\",\n      settingsDesc:\n        \"Manage your account preferences and options. Customize your experience to fit your needs.\",\n      settingsContent: \"Configure notifications, security, and themes.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      overview: \"نظرة عامة\",\n      analytics: \"التحليلات\",\n      reports: \"التقارير\",\n      settings: \"الإعدادات\",\n      overviewTitle: \"نظرة عامة\",\n      overviewDesc:\n        \"عرض مقاييسك الرئيسية وأنشطة المشروع الأخيرة. تتبع التقدم عبر جميع مشاريعك النشطة.\",\n      overviewContent: \"لديك ١٢ مشروعًا نشطًا و٣ مهام معلقة.\",\n      analyticsTitle: \"التحليلات\",\n      analyticsDesc:\n        \"تتبع مقاييس الأداء ومشاركة المستخدمين. راقب الاتجاهات وحدد فرص النمو.\",\n      analyticsContent: \"زادت مشاهدات الصفحة بنسبة ٢٥٪ مقارنة بالشهر الماضي.\",\n      reportsTitle: \"التقارير\",\n      reportsDesc:\n        \"إنشاء وتنزيل تقاريرك التفصيلية. تصدير البيانات بتنسيقات متعددة للتحليل.\",\n      reportsContent: \"لديك ٥ تقارير جاهزة ومتاحة للتصدير.\",\n      settingsTitle: \"الإعدادات\",\n      settingsDesc:\n        \"إدارة تفضيلات حسابك وخياراته. تخصيص تجربتك لتناسب احتياجاتك.\",\n      settingsContent: \"تكوين الإشعارات والأمان والسمات.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      overview: \"סקירה כללית\",\n      analytics: \"אנליטיקה\",\n      reports: \"דוחות\",\n      settings: \"הגדרות\",\n      overviewTitle: \"סקירה כללית\",\n      overviewDesc:\n        \"הצג את המדדים העיקריים שלך ופעילות הפרויקט האחרונה. עקוב אחר התקדמות בכל הפרויקטים הפעילים שלך.\",\n      overviewContent: \"יש לך 12 פרויקטים פעילים ו-3 משימות ממתינות.\",\n      analyticsTitle: \"אנליטיקה\",\n      analyticsDesc:\n        \"עקוב אחר ביצועים ומדדי מעורבות משתמשים. עקוב אחר מגמות וזהה הזדמנויות צמיחה.\",\n      analyticsContent: \"צפיות בדף עלו ב-25% בהשוואה לחודש שעבר.\",\n      reportsTitle: \"דוחות\",\n      reportsDesc:\n        \"צור והורד את הדוחות המפורטים שלך. ייצא נתונים בפורמטים מרובים לניתוח.\",\n      reportsContent: \"יש לך 5 דוחות מוכנים וזמינים לייצוא.\",\n      settingsTitle: \"הגדרות\",\n      settingsDesc:\n        \"נהל את העדפות החשבון והאפשרויות שלך. התאם אישית את החוויה שלך כך שתתאים לצרכים שלך.\",\n      settingsContent: \"הגדר התראות, אבטחה וערכות נושא.\",\n    },\n  },\n}\n\nexport function TabsRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Tabs defaultValue=\"overview\" className=\"w-full max-w-sm\" dir={dir}>\n      <TabsList dir={dir}>\n        <TabsTrigger value=\"overview\">{t.overview}</TabsTrigger>\n        <TabsTrigger value=\"analytics\">{t.analytics}</TabsTrigger>\n        <TabsTrigger value=\"reports\">{t.reports}</TabsTrigger>\n        <TabsTrigger value=\"settings\">{t.settings}</TabsTrigger>\n      </TabsList>\n      <TabsContent value=\"overview\">\n        <Card dir={dir}>\n          <CardHeader>\n            <CardTitle>{t.overviewTitle}</CardTitle>\n            <CardDescription>{t.overviewDesc}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            {t.overviewContent}\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"analytics\">\n        <Card dir={dir}>\n          <CardHeader>\n            <CardTitle>{t.analyticsTitle}</CardTitle>\n            <CardDescription>{t.analyticsDesc}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            {t.analyticsContent}\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"reports\">\n        <Card dir={dir}>\n          <CardHeader>\n            <CardTitle>{t.reportsTitle}</CardTitle>\n            <CardDescription>{t.reportsDesc}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            {t.reportsContent}\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"settings\">\n        <Card dir={dir}>\n          <CardHeader>\n            <CardTitle>{t.settingsTitle}</CardTitle>\n            <CardDescription>{t.settingsDesc}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            {t.settingsContent}\n          </CardContent>\n        </Card>\n      </TabsContent>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tabs-vertical.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/examples/base/ui/tabs\"\n\nexport function TabsVertical() {\n  return (\n    <Tabs defaultValue=\"account\" orientation=\"vertical\">\n      <TabsList>\n        <TabsTrigger value=\"account\">Account</TabsTrigger>\n        <TabsTrigger value=\"password\">Password</TabsTrigger>\n        <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n      </TabsList>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/textarea-button.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\n\nexport function TextareaButton() {\n  return (\n    <div className=\"grid w-full gap-2\">\n      <Textarea placeholder=\"Type your message here.\" />\n      <Button>Send message</Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/textarea-demo.tsx",
    "content": "import { Textarea } from \"@/examples/base/ui/textarea\"\n\nexport default function TextareaDemo() {\n  return <Textarea placeholder=\"Type your message here.\" />\n}\n"
  },
  {
    "path": "apps/v4/examples/base/textarea-disabled.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\n\nexport function TextareaDisabled() {\n  return (\n    <Field data-disabled>\n      <FieldLabel htmlFor=\"textarea-disabled\">Message</FieldLabel>\n      <Textarea\n        id=\"textarea-disabled\"\n        placeholder=\"Type your message here.\"\n        disabled\n      />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/textarea-field.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\n\nexport function TextareaField() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"textarea-message\">Message</FieldLabel>\n      <FieldDescription>Enter your message below.</FieldDescription>\n      <Textarea id=\"textarea-message\" placeholder=\"Type your message here.\" />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/textarea-invalid.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\n\nexport function TextareaInvalid() {\n  return (\n    <Field data-invalid>\n      <FieldLabel htmlFor=\"textarea-invalid\">Message</FieldLabel>\n      <Textarea\n        id=\"textarea-invalid\"\n        placeholder=\"Type your message here.\"\n        aria-invalid\n      />\n      <FieldDescription>Please enter a valid message.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/textarea-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/base/ui-rtl/field\"\nimport { Textarea } from \"@/examples/base/ui-rtl/textarea\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Feedback\",\n      placeholder: \"Your feedback helps us improve...\",\n      description: \"Share your thoughts about our service.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"التعليقات\",\n      placeholder: \"تعليقاتك تساعدنا على التحسين...\",\n      description: \"شاركنا أفكارك حول خدمتنا.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"משוב\",\n      placeholder: \"המשוב שלך עוזר לנו להשתפר...\",\n      description: \"שתף את מחשבותיך על השירות שלנו.\",\n    },\n  },\n}\n\nexport default function TextareaRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Field className=\"w-full max-w-xs\" dir={dir}>\n      <FieldLabel htmlFor=\"feedback\" dir={dir}>\n        {t.label}\n      </FieldLabel>\n      <Textarea id=\"feedback\" placeholder={t.placeholder} dir={dir} rows={4} />\n      <FieldDescription dir={dir}>{t.description}</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-demo.tsx",
    "content": "import { Toggle } from \"@/examples/base/ui/toggle\"\nimport { BookmarkIcon } from \"lucide-react\"\n\nexport function ToggleDemo() {\n  return (\n    <Toggle aria-label=\"Toggle bookmark\" size=\"sm\" variant=\"outline\">\n      <BookmarkIcon className=\"group-aria-pressed/toggle:fill-foreground\" />\n      Bookmark\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-disabled.tsx",
    "content": "import { Toggle } from \"@/examples/base/ui/toggle\"\n\nexport function ToggleDisabled() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2\">\n      <Toggle aria-label=\"Toggle disabled\" disabled>\n        Disabled\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle disabled outline\" disabled>\n        Disabled\n      </Toggle>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-group-demo.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/base/ui/toggle-group\"\nimport { Bold, Italic, Underline } from \"lucide-react\"\n\nexport function ToggleGroupDemo() {\n  return (\n    <ToggleGroup variant=\"outline\" multiple>\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-group-disabled.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/base/ui/toggle-group\"\nimport { Bold, Italic, Underline } from \"lucide-react\"\n\nexport function ToggleGroupDisabled() {\n  return (\n    <ToggleGroup disabled>\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-group-font-weight-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Field, FieldDescription, FieldLabel } from \"@/examples/base/ui/field\"\nimport { ToggleGroup, ToggleGroupItem } from \"@/examples/base/ui/toggle-group\"\n\nexport function ToggleGroupFontWeightSelector() {\n  const [fontWeight, setFontWeight] = React.useState(\"normal\")\n  return (\n    <Field>\n      <FieldLabel>Font Weight</FieldLabel>\n      <ToggleGroup\n        value={[fontWeight]}\n        onValueChange={(value) => setFontWeight(value[0])}\n        variant=\"outline\"\n        spacing={2}\n        size=\"lg\"\n      >\n        <ToggleGroupItem\n          value=\"light\"\n          aria-label=\"Light\"\n          className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n        >\n          <span className=\"text-2xl leading-none font-light\">Aa</span>\n          <span className=\"text-xs text-muted-foreground\">Light</span>\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"normal\"\n          aria-label=\"Normal\"\n          className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n        >\n          <span className=\"text-2xl leading-none font-normal\">Aa</span>\n          <span className=\"text-xs text-muted-foreground\">Normal</span>\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"medium\"\n          aria-label=\"Medium\"\n          className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n        >\n          <span className=\"text-2xl leading-none font-medium\">Aa</span>\n          <span className=\"text-xs text-muted-foreground\">Medium</span>\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"bold\"\n          aria-label=\"Bold\"\n          className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n        >\n          <span className=\"text-2xl leading-none font-bold\">Aa</span>\n          <span className=\"text-xs text-muted-foreground\">Bold</span>\n        </ToggleGroupItem>\n      </ToggleGroup>\n      <FieldDescription>\n        Use{\" \"}\n        <code className=\"rounded-md bg-muted px-1 py-0.5 font-mono\">\n          font-{fontWeight}\n        </code>{\" \"}\n        to set the font weight.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-group-outline.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/base/ui/toggle-group\"\n\nexport function ToggleGroupOutline() {\n  return (\n    <ToggleGroup variant=\"outline\" defaultValue={[\"all\"]}>\n      <ToggleGroupItem value=\"all\" aria-label=\"Toggle all\">\n        All\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"missed\" aria-label=\"Toggle missed\">\n        Missed\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-group-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/examples/base/ui-rtl/toggle-group\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      list: \"List\",\n      grid: \"Grid\",\n      cards: \"Cards\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      list: \"قائمة\",\n      grid: \"شبكة\",\n      cards: \"بطاقات\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      list: \"רשימה\",\n      grid: \"רשת\",\n      cards: \"כרטיסים\",\n    },\n  },\n}\n\nexport function ToggleGroupRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <ToggleGroup variant=\"outline\" defaultValue={[\"list\"]} dir={dir}>\n      <ToggleGroupItem value=\"list\" aria-label={t.list}>\n        {t.list}\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"grid\" aria-label={t.grid}>\n        {t.grid}\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"cards\" aria-label={t.cards}>\n        {t.cards}\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-group-sizes.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/base/ui/toggle-group\"\n\nexport function ToggleGroupSizes() {\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <ToggleGroup size=\"sm\" defaultValue={[\"top\"]} variant=\"outline\">\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n      <ToggleGroup defaultValue={[\"top\"]} variant=\"outline\">\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-group-spacing.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/base/ui/toggle-group\"\n\nexport function ToggleGroupSpacing() {\n  return (\n    <ToggleGroup size=\"sm\" defaultValue={[\"top\"]} variant=\"outline\" spacing={2}>\n      <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n        Top\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n        Bottom\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n        Left\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n        Right\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-group-vertical.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/base/ui/toggle-group\"\nimport { BoldIcon, ItalicIcon, UnderlineIcon } from \"lucide-react\"\n\nexport function ToggleGroupVertical() {\n  return (\n    <ToggleGroup\n      multiple\n      orientation=\"vertical\"\n      spacing={1}\n      defaultValue={[\"bold\", \"italic\"]}\n    >\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <BoldIcon />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <ItalicIcon />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n        <UnderlineIcon />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-outline.tsx",
    "content": "import { Toggle } from \"@/examples/base/ui/toggle\"\nimport { BoldIcon, ItalicIcon } from \"lucide-react\"\n\nexport function ToggleOutline() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2\">\n      <Toggle variant=\"outline\" aria-label=\"Toggle italic\">\n        <ItalicIcon />\n        Italic\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle bold\">\n        <BoldIcon />\n        Bold\n      </Toggle>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Toggle } from \"@/examples/base/ui-rtl/toggle\"\nimport { BookmarkIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Bookmark\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"إشارة مرجعية\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"סימנייה\",\n    },\n  },\n}\n\nexport function ToggleRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Toggle aria-label=\"Toggle bookmark\" size=\"sm\" variant=\"outline\" dir={dir}>\n      <BookmarkIcon className=\"group-aria-pressed/toggle:fill-foreground\" />\n      {t.label}\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-sizes.tsx",
    "content": "import { Toggle } from \"@/examples/base/ui/toggle\"\n\nexport function ToggleSizes() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2\">\n      <Toggle variant=\"outline\" aria-label=\"Toggle small\" size=\"sm\">\n        Small\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle default\" size=\"default\">\n        Default\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle large\" size=\"lg\">\n        Large\n      </Toggle>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/toggle-text.tsx",
    "content": "import { Toggle } from \"@/examples/base/ui/toggle\"\nimport { ItalicIcon } from \"lucide-react\"\n\nexport function ToggleText() {\n  return (\n    <Toggle aria-label=\"Toggle italic\">\n      <ItalicIcon />\n      Italic\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tooltip-demo.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\n\nexport function TooltipDemo() {\n  return (\n    <Tooltip>\n      <TooltipTrigger render={<Button variant=\"outline\" />}>\n        Hover\n      </TooltipTrigger>\n      <TooltipContent>\n        <p>Add to library</p>\n      </TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tooltip-disabled.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\n\nexport function TooltipDisabled() {\n  return (\n    <>\n      <Tooltip>\n        <TooltipTrigger render={<span className=\"inline-block w-fit\" />}>\n          <Button variant=\"outline\" disabled>\n            Disabled\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>This feature is currently unavailable</p>\n        </TooltipContent>\n      </Tooltip>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tooltip-keyboard.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport { Kbd } from \"@/examples/base/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\nimport { SaveIcon } from \"lucide-react\"\n\nexport function TooltipKeyboard() {\n  return (\n    <Tooltip>\n      <TooltipTrigger render={<Button variant=\"outline\" size=\"icon-sm\" />}>\n        <SaveIcon />\n      </TooltipTrigger>\n      <TooltipContent>\n        Save Changes <Kbd>S</Kbd>\n      </TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tooltip-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui-rtl/tooltip\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      content: \"Add to library\",\n      \"inline-start\": \"Inline Start\",\n      left: \"Left\",\n      top: \"Top\",\n      bottom: \"Bottom\",\n      right: \"Right\",\n      \"inline-end\": \"Inline End\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      content: \"إضافة إلى المكتبة\",\n      \"inline-start\": \"بداية السطر\",\n      left: \"يسار\",\n      top: \"أعلى\",\n      bottom: \"أسفل\",\n      right: \"يمين\",\n      \"inline-end\": \"نهاية السطر\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      content: \"הוסף לספרייה\",\n      \"inline-start\": \"תחילת השורה\",\n      left: \"שמאל\",\n      top: \"למעלה\",\n      bottom: \"למטה\",\n      right: \"ימין\",\n      \"inline-end\": \"סוף השורה\",\n    },\n  },\n}\n\nconst physicalSides = [\"left\", \"top\", \"bottom\", \"right\"] as const\nconst logicalSides = [\"inline-start\", \"inline-end\"] as const\n\nexport function TooltipRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"grid gap-4\">\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {physicalSides.map((side) => (\n          <Tooltip key={side}>\n            <TooltipTrigger render={<Button variant=\"outline\" />}>\n              {t[side]}\n            </TooltipTrigger>\n            <TooltipContent side={side} dir={dir}>\n              {t.content}\n            </TooltipContent>\n          </Tooltip>\n        ))}\n      </div>\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {logicalSides.map((side) => (\n          <Tooltip key={side}>\n            <TooltipTrigger render={<Button variant=\"outline\" />}>\n              {t[side]}\n            </TooltipTrigger>\n            <TooltipContent side={side} dir={dir}>\n              {t.content}\n            </TooltipContent>\n          </Tooltip>\n        ))}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/tooltip-sides.tsx",
    "content": "import { Button } from \"@/examples/base/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\n\nexport function TooltipSides() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {([\"left\", \"top\", \"bottom\", \"right\"] as const).map((side) => (\n        <Tooltip key={side}>\n          <TooltipTrigger\n            render={<Button variant=\"outline\" className=\"w-fit capitalize\" />}\n          >\n            {side}\n          </TooltipTrigger>\n          <TooltipContent side={side}>\n            <p>Add to library</p>\n          </TooltipContent>\n        </Tooltip>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-blockquote.tsx",
    "content": "export function TypographyBlockquote() {\n  return (\n    <blockquote className=\"mt-6 border-l-2 pl-6 italic\">\n      &quot;After all,&quot; he said, &quot;everyone enjoys a good joke, so\n      it&apos;s only fair that they should pay for the privilege.&quot;\n    </blockquote>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-demo.tsx",
    "content": "export function TypographyDemo() {\n  return (\n    <div>\n      <h1 className=\"scroll-m-20 text-4xl font-extrabold tracking-tight text-balance\">\n        Taxing Laughter: The Joke Tax Chronicles\n      </h1>\n      <p className=\"text-xl leading-7 text-muted-foreground [&:not(:first-child)]:mt-6\">\n        Once upon a time, in a far-off land, there was a very lazy king who\n        spent all day lounging on his throne. One day, his advisors came to him\n        with a problem: the kingdom was running out of money.\n      </p>\n      <h2 className=\"mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0\">\n        The King&apos;s Plan\n      </h2>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king thought long and hard, and finally came up with{\" \"}\n        <a\n          href=\"#\"\n          className=\"font-medium text-primary underline underline-offset-4\"\n        >\n          a brilliant plan\n        </a>\n        : he would tax the jokes in the kingdom.\n      </p>\n      <blockquote className=\"mt-6 border-l-2 pl-6 italic\">\n        &quot;After all,&quot; he said, &quot;everyone enjoys a good joke, so\n        it&apos;s only fair that they should pay for the privilege.&quot;\n      </blockquote>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        The Joke Tax\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king&apos;s subjects were not amused. They grumbled and complained,\n        but the king was firm:\n      </p>\n      <ul className=\"my-6 ml-6 list-disc [&>li]:mt-2\">\n        <li>1st level of puns: 5 gold coins</li>\n        <li>2nd level of jokes: 10 gold coins</li>\n        <li>3rd level of one-liners : 20 gold coins</li>\n      </ul>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        As a result, people stopped telling jokes, and the kingdom fell into a\n        gloom. But there was one person who refused to let the king&apos;s\n        foolishness get him down: a court jester named Jokester.\n      </p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        Jokester&apos;s Revolt\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        Jokester began sneaking into the castle in the middle of the night and\n        leaving jokes all over the place: under the king&apos;s pillow, in his\n        soup, even in the royal toilet. The king was furious, but he\n        couldn&apos;t seem to stop Jokester.\n      </p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        And then, one day, the people of the kingdom discovered that the jokes\n        left by Jokester were so funny that they couldn&apos;t help but laugh.\n        And once they started laughing, they couldn&apos;t stop.\n      </p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        The People&apos;s Rebellion\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The people of the kingdom, feeling uplifted by the laughter, started to\n        tell jokes and puns again, and soon the entire kingdom was in on the\n        joke.\n      </p>\n      <div className=\"my-6 w-full overflow-y-auto\">\n        <table className=\"w-full\">\n          <thead>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n                King&apos;s Treasury\n              </th>\n              <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n                People&apos;s happiness\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Empty\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Overflowing\n              </td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Modest\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Satisfied\n              </td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Full\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Ecstatic\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king, seeing how much happier his subjects were, realized the error\n        of his ways and repealed the joke tax. Jokester was declared a hero, and\n        the kingdom lived happily ever after.\n      </p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The moral of the story is: never underestimate the power of a good laugh\n        and always be careful of bad ideas.\n      </p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-h1.tsx",
    "content": "export function TypographyH1() {\n  return (\n    <h1 className=\"scroll-m-20 text-center text-4xl font-extrabold tracking-tight text-balance\">\n      Taxing Laughter: The Joke Tax Chronicles\n    </h1>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-h2.tsx",
    "content": "export function TypographyH2() {\n  return (\n    <h2 className=\"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\">\n      The People of the Kingdom\n    </h2>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-h3.tsx",
    "content": "export function TypographyH3() {\n  return (\n    <h3 className=\"scroll-m-20 text-2xl font-semibold tracking-tight\">\n      The Joke Tax\n    </h3>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-h4.tsx",
    "content": "export function TypographyH4() {\n  return (\n    <h4 className=\"scroll-m-20 text-xl font-semibold tracking-tight\">\n      People stopped telling jokes\n    </h4>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-inline-code.tsx",
    "content": "export function TypographyInlineCode() {\n  return (\n    <code className=\"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\">\n      @radix-ui/react-alert-dialog\n    </code>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-large.tsx",
    "content": "export function TypographyLarge() {\n  return <div className=\"text-lg font-semibold\">Are you absolutely sure?</div>\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-lead.tsx",
    "content": "export function TypographyLead() {\n  return (\n    <p className=\"text-xl text-muted-foreground\">\n      A modal dialog that interrupts the user with important content and expects\n      a response.\n    </p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-list.tsx",
    "content": "export function TypographyList() {\n  return (\n    <ul className=\"my-6 ml-6 list-disc [&>li]:mt-2\">\n      <li>1st level of puns: 5 gold coins</li>\n      <li>2nd level of jokes: 10 gold coins</li>\n      <li>3rd level of one-liners : 20 gold coins</li>\n    </ul>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-muted.tsx",
    "content": "export function TypographyMuted() {\n  return (\n    <p className=\"text-sm text-muted-foreground\">Enter your email address.</p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-p.tsx",
    "content": "export function TypographyP() {\n  return (\n    <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n      The king, seeing how much happier his subjects were, realized the error of\n      his ways and repealed the joke tax.\n    </p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"Taxing Laughter: The Joke Tax Chronicles\",\n      leadParagraph:\n        \"Once upon a time, in a far-off land, there was a very lazy king who spent all day lounging on his throne. One day, his advisors came to him with a problem: the kingdom was running out of money.\",\n      kingsPlan: \"The King's Plan\",\n      kingThought: \"The king thought long and hard, and finally came up with\",\n      brilliantPlan: \"a brilliant plan\",\n      taxJokes: \": he would tax the jokes in the kingdom.\",\n      blockquote:\n        '\"After all,\" he said, \"everyone enjoys a good joke, so it\\'s only fair that they should pay for the privilege.\"',\n      jokeTax: \"The Joke Tax\",\n      subjectsNotAmused:\n        \"The king's subjects were not amused. They grumbled and complained, but the king was firm:\",\n      level1: \"1st level of puns: 5 gold coins\",\n      level2: \"2nd level of jokes: 10 gold coins\",\n      level3: \"3rd level of one-liners: 20 gold coins\",\n      stoppedTelling:\n        \"As a result, people stopped telling jokes, and the kingdom fell into a gloom. But there was one person who refused to let the king's foolishness get him down: a court jester named Jokester.\",\n      jokestersRevolt: \"Jokester's Revolt\",\n      sneaking:\n        \"Jokester began sneaking into the castle in the middle of the night and leaving jokes all over the place: under the king's pillow, in his soup, even in the royal toilet. The king was furious, but he couldn't seem to stop Jokester.\",\n      discovered:\n        \"And then, one day, the people of the kingdom discovered that the jokes left by Jokester were so funny that they couldn't help but laugh. And once they started laughing, they couldn't stop.\",\n      peoplesRebellion: \"The People's Rebellion\",\n      uplifted:\n        \"The people of the kingdom, feeling uplifted by the laughter, started to tell jokes and puns again, and soon the entire kingdom was in on the joke.\",\n      kingsTreasury: \"King's Treasury\",\n      peoplesHappiness: \"People's happiness\",\n      empty: \"Empty\",\n      overflowing: \"Overflowing\",\n      modest: \"Modest\",\n      satisfied: \"Satisfied\",\n      full: \"Full\",\n      ecstatic: \"Ecstatic\",\n      realized:\n        \"The king, seeing how much happier his subjects were, realized the error of his ways and repealed the joke tax. Jokester was declared a hero, and the kingdom lived happily ever after.\",\n      moral:\n        \"The moral of the story is: never underestimate the power of a good laugh and always be careful of bad ideas.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"فرض الضرائب على الضحك: سجلات ضريبة النكتة\",\n      leadParagraph:\n        \"في قديم الزمان، في أرض بعيدة، كان هناك ملك كسول جداً يقضي يومه كله مستلقياً على عرشه. في أحد الأيام، جاءه مستشاروه بمشكلة: المملكة كانت تنفد من المال.\",\n      kingsPlan: \"خطة الملك\",\n      kingThought: \"فكر الملك طويلاً وبجد، وأخيراً توصل إلى\",\n      brilliantPlan: \"خطة عبقرية\",\n      taxJokes: \": سيفرض ضريبة على النكات في المملكة.\",\n      blockquote:\n        '\"في النهاية،\" قال، \"الجميع يستمتع بنكتة جيدة، لذا من العدل أن يدفعوا مقابل هذا الامتياز.\"',\n      jokeTax: \"ضريبة النكتة\",\n      subjectsNotAmused:\n        \"لم يكن رعايا الملك سعداء. تذمروا واشتكوا، لكن الملك كان حازماً:\",\n      level1: \"المستوى الأول من التورية: 5 قطع ذهبية\",\n      level2: \"المستوى الثاني من النكات: 10 قطع ذهبية\",\n      level3: \"المستوى الثالث من النكات القصيرة: 20 قطعة ذهبية\",\n      stoppedTelling:\n        \"نتيجة لذلك، توقف الناس عن رواية النكات، وغرقت المملكة في الكآبة. لكن كان هناك شخص واحد رفض أن تحبطه حماقة الملك: مهرج البلاط المسمى المازح.\",\n      jokestersRevolt: \"ثورة المازح\",\n      sneaking:\n        \"بدأ المازح يتسلل إلى القلعة في منتصف الليل ويترك النكات في كل مكان: تحت وسادة الملك، في حسائه، حتى في المرحاض الملكي. كان الملك غاضباً، لكنه لم يستطع إيقاف المازح.\",\n      discovered:\n        \"وبعد ذلك، في يوم من الأيام، اكتشف سكان المملكة أن النكات التي تركها المازح كانت مضحكة جداً لدرجة أنهم لم يستطيعوا منع أنفسهم من الضحك. وبمجرد أن بدأوا بالضحك، لم يستطيعوا التوقف.\",\n      peoplesRebellion: \"ثورة الشعب\",\n      uplifted:\n        \"شعر سكان المملكة بالبهجة من الضحك، وبدأوا في رواية النكات والتورية مرة أخرى، وسرعان ما أصبحت المملكة بأكملها جزءاً من النكتة.\",\n      kingsTreasury: \"خزينة الملك\",\n      peoplesHappiness: \"سعادة الشعب\",\n      empty: \"فارغة\",\n      overflowing: \"فائضة\",\n      modest: \"متواضعة\",\n      satisfied: \"راضٍ\",\n      full: \"ممتلئة\",\n      ecstatic: \"منتشٍ\",\n      realized:\n        \"الملك، عندما رأى مدى سعادة رعاياه، أدرك خطأ طرقه وألغى ضريبة النكتة. أُعلن المازح بطلاً، وعاشت المملكة في سعادة دائمة.\",\n      moral:\n        \"مغزى القصة هو: لا تستهن أبداً بقوة الضحك الجيد وكن دائماً حذراً من الأفكار السيئة.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"מיסוי הצחוק: כרוניקות מס הבדיחה\",\n      leadParagraph:\n        \"היה היה פעם, בארץ רחוקה, מלך עצלן מאוד שבילה את כל היום בהתרווחות על כס מלכותו. יום אחד, יועציו באו אליו עם בעיה: הממלכה נגמר לה הכסף.\",\n      kingsPlan: \"התוכנית של המלך\",\n      kingThought: \"המלך חשב ארוכות וקשות, ולבסוף העלה\",\n      brilliantPlan: \"תוכנית גאונית\",\n      taxJokes: \": הוא ימסה את הבדיחות בממלכה.\",\n      blockquote:\n        '\"אחרי הכל,\" אמר, \"כולם נהנים מבדיחה טובה, אז זה רק הוגן שישלמו על הזכות הזו.\"',\n      jokeTax: \"מס הבדיחה\",\n      subjectsNotAmused:\n        \"נתיני המלך לא היו מרוצים. הם התלוננו והתרעמו, אבל המלך היה נחוש:\",\n      level1: \"רמה ראשונה של משחקי מילים: 5 מטבעות זהב\",\n      level2: \"רמה שנייה של בדיחות: 10 מטבעות זהב\",\n      level3: \"רמה שלישית של חידודים: 20 מטבעות זהב\",\n      stoppedTelling:\n        \"כתוצאה מכך, אנשים הפסיקו לספר בדיחות, והממלכה שקעה בעצב. אבל היה אדם אחד שסירב לתת לטיפשות המלך להפיל אותו: ליצן חצר בשם הבדחן.\",\n      jokestersRevolt: \"המרד של הבדחן\",\n      sneaking:\n        \"הבדחן התחיל להתגנב לטירה באמצע הלילה ולהשאיר בדיחות בכל מקום: מתחת לכרית המלך, במרק שלו, אפילו בשירותים המלכותיים. המלך היה זועם, אבל הוא לא הצליח לעצור את הבדחן.\",\n      discovered:\n        \"ואז, יום אחד, תושבי הממלכה גילו שהבדיחות שהבדחן השאיר היו כל כך מצחיקות שהם לא יכלו להתאפק מלצחוק. וברגע שהתחילו לצחוק, הם לא יכלו להפסיק.\",\n      peoplesRebellion: \"המרד של העם\",\n      uplifted:\n        \"תושבי הממלכה, שהרגישו מרוממים מהצחוק, התחילו לספר בדיחות ומשחקי מילים שוב, ובקרוב כל הממלכה הייתה חלק מהבדיחה.\",\n      kingsTreasury: \"אוצר המלך\",\n      peoplesHappiness: \"אושר העם\",\n      empty: \"ריק\",\n      overflowing: \"גדוש\",\n      modest: \"צנוע\",\n      satisfied: \"מרוצה\",\n      full: \"מלא\",\n      ecstatic: \"אקסטטי\",\n      realized:\n        \"המלך, כשראה כמה מאושרים נתיניו, הבין את טעותו וביטל את מס הבדיחה. הבדחן הוכרז כגיבור, והממלכה חיה באושר לנצח.\",\n      moral:\n        \"המוסר של הסיפור הוא: לעולם אל תזלזל בכוח של צחוק טוב ותמיד היזהר מרעיונות רעים.\",\n    },\n  },\n}\n\nexport function TypographyRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div dir={dir}>\n      <h1 className=\"scroll-m-20 text-4xl font-extrabold tracking-tight text-balance\">\n        {t.title}\n      </h1>\n      <p className=\"text-xl leading-7 text-muted-foreground [&:not(:first-child)]:mt-6\">\n        {t.leadParagraph}\n      </p>\n      <h2 className=\"mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0\">\n        {t.kingsPlan}\n      </h2>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        {t.kingThought}{\" \"}\n        <a\n          href=\"#\"\n          className=\"font-medium text-primary underline underline-offset-4\"\n        >\n          {t.brilliantPlan}\n        </a>\n        {t.taxJokes}\n      </p>\n      <blockquote className=\"mt-6 border-s-2 ps-6 italic\">\n        {t.blockquote}\n      </blockquote>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        {t.jokeTax}\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        {t.subjectsNotAmused}\n      </p>\n      <ul className=\"my-6 ms-6 list-disc [&>li]:mt-2\">\n        <li>{t.level1}</li>\n        <li>{t.level2}</li>\n        <li>{t.level3}</li>\n      </ul>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.stoppedTelling}</p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        {t.jokestersRevolt}\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.sneaking}</p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.discovered}</p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        {t.peoplesRebellion}\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.uplifted}</p>\n      <div className=\"my-6 w-full overflow-y-auto\">\n        <table className=\"w-full\">\n          <thead>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <th className=\"border px-4 py-2 text-start font-bold\">\n                {t.kingsTreasury}\n              </th>\n              <th className=\"border px-4 py-2 text-start font-bold\">\n                {t.peoplesHappiness}\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-start\">{t.empty}</td>\n              <td className=\"border px-4 py-2 text-start\">{t.overflowing}</td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-start\">{t.modest}</td>\n              <td className=\"border px-4 py-2 text-start\">{t.satisfied}</td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-start\">{t.full}</td>\n              <td className=\"border px-4 py-2 text-start\">{t.ecstatic}</td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.realized}</p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.moral}</p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-small.tsx",
    "content": "export function TypographySmall() {\n  return (\n    <small className=\"text-sm leading-none font-medium\">Email address</small>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/typography-table.tsx",
    "content": "export function TypographyTable() {\n  return (\n    <div className=\"my-6 w-full overflow-y-auto\">\n      <table className=\"w-full\">\n        <thead>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n              King&apos;s Treasury\n            </th>\n            <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n              People&apos;s happiness\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Empty\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Overflowing\n            </td>\n          </tr>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Modest\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Satisfied\n            </td>\n          </tr>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Full\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Ecstatic\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/accordion.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\nimport { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n  return (\n    <AccordionPrimitive.Root\n      data-slot=\"accordion\"\n      className={cn(\"flex w-full flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n  return (\n    <AccordionPrimitive.Item\n      data-slot=\"accordion-item\"\n      className={cn(\"not-last:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionTrigger({\n  className,\n  children,\n  ...props\n}: AccordionPrimitive.Trigger.Props) {\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        data-slot=\"accordion-trigger\"\n        className={cn(\n          \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <ChevronDownIcon\n          data-slot=\"accordion-trigger-icon\"\n          className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n        />\n        <ChevronUpIcon\n          data-slot=\"accordion-trigger-icon\"\n          className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n        />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\nfunction AccordionContent({\n  className,\n  children,\n  ...props\n}: AccordionPrimitive.Panel.Props) {\n  return (\n    <AccordionPrimitive.Panel\n      data-slot=\"accordion-content\"\n      className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n      {...props}\n    >\n      <div\n        className={cn(\n          \"h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n          className\n        )}\n      >\n        {children}\n      </div>\n    </AccordionPrimitive.Panel>\n  )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/alert-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n  return (\n    <AlertDialogPrimitive.Backdrop\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  size = \"default\",\n  ...props\n}: AlertDialogPrimitive.Popup.Props & {\n  size?: \"default\" | \"sm\"\n}) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Popup\n        data-slot=\"alert-dialog-content\"\n        data-size={size}\n        className={cn(\n          \"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\n        \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\n        \"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\n        \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  return (\n    <Button\n      data-slot=\"alert-dialog-action\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = \"outline\",\n  size = \"default\",\n  ...props\n}: AlertDialogPrimitive.Close.Props &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <AlertDialogPrimitive.Close\n      data-slot=\"alert-dialog-cancel\"\n      className={cn(className)}\n      render={<Button variant={variant} size={size} />}\n      {...props}\n    />\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst alertVariants = cva(\n  \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-card text-card-foreground\",\n        destructive:\n          \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-action\"\n      className={cn(\"absolute top-2 right-2\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/aspect-ratio.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\n\nfunction AspectRatio({\n  ratio,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & { ratio: number }) {\n  return (\n    <div\n      data-slot=\"aspect-ratio\"\n      style={\n        {\n          \"--ratio\": ratio,\n        } as React.CSSProperties\n      }\n      className={cn(\"relative aspect-(--ratio)\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { AspectRatio }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nfunction Avatar({\n  className,\n  size = \"default\",\n  ...props\n}: AvatarPrimitive.Root.Props & {\n  size?: \"default\" | \"sm\" | \"lg\"\n}) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(\n        \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\n        \"aspect-square size-full rounded-full object-cover\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: AvatarPrimitive.Fallback.Props) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"avatar-badge\"\n      className={cn(\n        \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n        \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n        \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n        \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroupCount({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Avatar,\n  AvatarImage,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarBadge,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/badge.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst badgeVariants = cva(\n  \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        secondary:\n          \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n        destructive:\n          \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n        outline:\n          \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n        ghost:\n          \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  render,\n  ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n  return useRender({\n    defaultTagName: \"span\",\n    props: mergeProps<\"span\">(\n      {\n        className: cn(badgeVariants({ variant }), className),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"badge\",\n      variant,\n    },\n  })\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/breadcrumb.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      aria-label=\"breadcrumb\"\n      data-slot=\"breadcrumb\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n  return (\n    <ol\n      data-slot=\"breadcrumb-list\"\n      className={cn(\n        \"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-item\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbLink({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"a\">) {\n  return useRender({\n    defaultTagName: \"a\",\n    props: mergeProps<\"a\">(\n      {\n        className: cn(\"transition-colors hover:text-foreground\", className),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"breadcrumb-link\",\n    },\n  })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-page\"\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      className={cn(\"font-normal text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\"[&>svg]:size-3.5\", className)}\n      {...props}\n    >\n      {children ?? <ChevronRightIcon className=\"cn-rtl-flip\" />}\n    </li>\n  )\n}\n\nfunction BreadcrumbEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"flex size-5 items-center justify-center [&>svg]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More</span>\n    </span>\n  )\n}\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/button-group.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { Separator } from \"@/examples/base/ui/separator\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst buttonGroupVariants = cva(\n  \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n  {\n    variants: {\n      orientation: {\n        horizontal:\n          \"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\",\n        vertical:\n          \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"horizontal\",\n    },\n  }\n)\n\nfunction ButtonGroup({\n  className,\n  orientation,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"button-group\"\n      data-orientation={orientation}\n      className={cn(buttonGroupVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupText({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\">) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(\n          \"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"button-group-text\",\n    },\n  })\n}\n\nfunction ButtonGroupSeparator({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"button-group-separator\"\n      orientation={orientation}\n      className={cn(\n        \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n  buttonGroupVariants,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/button.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst buttonVariants = cva(\n  \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        outline:\n          \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n        secondary:\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n        ghost:\n          \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n        destructive:\n          \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default:\n          \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n        xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n        sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n        lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n        icon: \"size-8\",\n        \"icon-xs\":\n          \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n        \"icon-sm\":\n          \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n        \"icon-lg\": \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n  return (\n    <ButtonPrimitive\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/calendar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button, buttonVariants } from \"@/examples/base/ui/button\"\nimport {\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n  DayPicker,\n  getDefaultClassNames,\n  type DayButton,\n  type Locale,\n} from \"react-day-picker\"\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  locale,\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      locale={locale}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(locale?.code, { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"cn-calendar-dropdown-root relative rounded-(--cell-radius)\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute inset-0 bg-popover opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\",\n          props.showWeekNumber\n            ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n            : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\n          \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_end\n        ),\n        today: cn(\n          \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <ChevronLeftIcon\n                className={cn(\"cn-rtl-flip size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <ChevronRightIcon\n                className={cn(\"cn-rtl-flip size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n          )\n        },\n        DayButton: ({ ...props }) => (\n          <CalendarDayButton locale={locale} {...props} />\n        ),\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  locale,\n  ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString(locale?.code)}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/card.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\n\nfunction Card({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n  return (\n    <div\n      data-slot=\"card\"\n      data-size={size}\n      className={cn(\n        \"group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      className={cn(\n        \"cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn(\n        \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\n        \"flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardAction,\n  CardDescription,\n  CardContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/carousel.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nfunction Carousel({\n  orientation = \"horizontal\",\n  opts,\n  setApi,\n  plugins,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n  const [carouselRef, api] = useEmblaCarousel(\n    {\n      ...opts,\n      axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n    },\n    plugins\n  )\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n  const onSelect = React.useCallback((api: CarouselApi) => {\n    if (!api) return\n    setCanScrollPrev(api.canScrollPrev())\n    setCanScrollNext(api.canScrollNext())\n  }, [])\n\n  const scrollPrev = React.useCallback(() => {\n    api?.scrollPrev()\n  }, [api])\n\n  const scrollNext = React.useCallback(() => {\n    api?.scrollNext()\n  }, [api])\n\n  const handleKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === \"ArrowLeft\") {\n        event.preventDefault()\n        scrollPrev()\n      } else if (event.key === \"ArrowRight\") {\n        event.preventDefault()\n        scrollNext()\n      }\n    },\n    [scrollPrev, scrollNext]\n  )\n\n  React.useEffect(() => {\n    if (!api || !setApi) return\n    setApi(api)\n  }, [api, setApi])\n\n  React.useEffect(() => {\n    if (!api) return\n    onSelect(api)\n    api.on(\"reInit\", onSelect)\n    api.on(\"select\", onSelect)\n\n    return () => {\n      api?.off(\"select\", onSelect)\n    }\n  }, [api, onSelect])\n\n  return (\n    <CarouselContext.Provider\n      value={{\n        carouselRef,\n        api: api,\n        opts,\n        orientation:\n          orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n        scrollPrev,\n        scrollNext,\n        canScrollPrev,\n        canScrollNext,\n      }}\n    >\n      <div\n        onKeyDownCapture={handleKeyDown}\n        className={cn(\"relative\", className)}\n        role=\"region\"\n        aria-roledescription=\"carousel\"\n        data-slot=\"carousel\"\n        {...props}\n      >\n        {children}\n      </div>\n    </CarouselContext.Provider>\n  )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div\n      ref={carouselRef}\n      className=\"overflow-hidden\"\n      data-slot=\"carousel-content\"\n    >\n      <div\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      data-slot=\"carousel-item\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CarouselPrevious({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-previous\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute touch-manipulation rounded-full\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -left-12 -translate-y-1/2\"\n          : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <ChevronLeftIcon className=\"cn-rtl-flip\" />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n}\n\nfunction CarouselNext({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-next\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute touch-manipulation rounded-full\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -right-12 -translate-y-1/2\"\n          : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <ChevronRightIcon className=\"cn-rtl-flip\" />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n}\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n  useCarousel,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/chart.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport * as RechartsPrimitive from \"recharts\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode\n    icon?: React.ComponentType\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  )\n}\n\ntype ChartContextProps = {\n  config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n  const context = React.useContext(ChartContext)\n\n  if (!context) {\n    throw new Error(\"useChart must be used within a <ChartContainer />\")\n  }\n\n  return context\n}\n\nfunction ChartContainer({\n  id,\n  className,\n  children,\n  config,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  config: ChartConfig\n  children: React.ComponentProps<\n    typeof RechartsPrimitive.ResponsiveContainer\n  >[\"children\"]\n}) {\n  const uniqueId = React.useId()\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-slot=\"chart\"\n        data-chart={chartId}\n        className={cn(\n          \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n          className\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([, config]) => config.theme || config.color\n  )\n\n  if (!colorConfig.length) {\n    return null\n  }\n\n  return (\n    <style\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color\n    return color ? `  --color-${key}: ${color};` : null\n  })\n  .join(\"\\n\")}\n}\n`\n          )\n          .join(\"\\n\"),\n      }}\n    />\n  )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n  active,\n  payload,\n  className,\n  indicator = \"dot\",\n  hideLabel = false,\n  hideIndicator = false,\n  label,\n  labelFormatter,\n  labelClassName,\n  formatter,\n  color,\n  nameKey,\n  labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n  React.ComponentProps<\"div\"> & {\n    hideLabel?: boolean\n    hideIndicator?: boolean\n    indicator?: \"line\" | \"dot\" | \"dashed\"\n    nameKey?: string\n    labelKey?: string\n  }) {\n  const { config } = useChart()\n\n  const tooltipLabel = React.useMemo(() => {\n    if (hideLabel || !payload?.length) {\n      return null\n    }\n\n    const [item] = payload\n    const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\n    const value =\n      !labelKey && typeof label === \"string\"\n        ? config[label as keyof typeof config]?.label || label\n        : itemConfig?.label\n\n    if (labelFormatter) {\n      return (\n        <div className={cn(\"font-medium\", labelClassName)}>\n          {labelFormatter(value, payload)}\n        </div>\n      )\n    }\n\n    if (!value) {\n      return null\n    }\n\n    return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n  }, [\n    label,\n    labelFormatter,\n    payload,\n    hideLabel,\n    labelClassName,\n    config,\n    labelKey,\n  ])\n\n  if (!active || !payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\n        \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n        className\n      )}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload\n          .filter((item) => item.type !== \"none\")\n          .map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\n            const indicatorColor = color || item.payload.fill || item.color\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                  indicator === \"dot\" && \"items-center\"\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n                            {\n                              \"h-2.5 w-2.5\": indicator === \"dot\",\n                              \"w-1\": indicator === \"line\",\n                              \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                                indicator === \"dashed\",\n                              \"my-0.5\": nestLabel && indicator === \"dashed\",\n                            }\n                          )}\n                          style={\n                            {\n                              \"--color-bg\": indicatorColor,\n                              \"--color-border\": indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        \"flex flex-1 justify-between leading-none\",\n                        nestLabel ? \"items-end\" : \"items-center\"\n                      )}\n                    >\n                      <div className=\"grid gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            )\n          })}\n      </div>\n    </div>\n  )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n  className,\n  hideIcon = false,\n  payload,\n  verticalAlign = \"bottom\",\n  nameKey,\n}: React.ComponentProps<\"div\"> &\n  Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n    hideIcon?: boolean\n    nameKey?: string\n  }) {\n  const { config } = useChart()\n\n  if (!payload?.length) {\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\n        \"flex items-center justify-center gap-4\",\n        verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n        className\n      )}\n    >\n      {payload\n        .filter((item) => item.type !== \"none\")\n        .map((item) => {\n          const key = `${nameKey || item.dataKey || \"value\"}`\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          )\n        })}\n    </div>\n  )\n}\n\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string\n) {\n  if (typeof payload !== \"object\" || payload === null) {\n    return undefined\n  }\n\n  const payloadPayload =\n    \"payload\" in payload &&\n    typeof payload.payload === \"object\" &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined\n\n  let configLabelKey: string = key\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === \"string\"\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config]\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/checkbox.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n      >\n        <CheckIcon />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/collapsible.tsx",
    "content": "\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"@base-ui/react/collapsible\"\n\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\n  return (\n    <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />\n  )\n}\n\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\n  return (\n    <CollapsiblePrimitive.Panel data-slot=\"collapsible-content\" {...props} />\n  )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/combobox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui/input-group\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"lucide-react\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n  return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Trigger.Props) {\n  return (\n    <ComboboxPrimitive.Trigger\n      data-slot=\"combobox-trigger\"\n      className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n      {...props}\n    >\n      {children}\n      <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n    </ComboboxPrimitive.Trigger>\n  )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n  return (\n    <ComboboxPrimitive.Clear\n      data-slot=\"combobox-clear\"\n      render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n      className={cn(className)}\n      {...props}\n    >\n      <XIcon className=\"pointer-events-none\" />\n    </ComboboxPrimitive.Clear>\n  )\n}\n\nfunction ComboboxInput({\n  className,\n  children,\n  disabled = false,\n  showTrigger = true,\n  showClear = false,\n  ...props\n}: ComboboxPrimitive.Input.Props & {\n  showTrigger?: boolean\n  showClear?: boolean\n}) {\n  return (\n    <InputGroup className={cn(\"w-auto\", className)}>\n      <ComboboxPrimitive.Input\n        render={<InputGroupInput disabled={disabled} />}\n        {...props}\n      />\n      <InputGroupAddon align=\"inline-end\">\n        {showTrigger && (\n          <InputGroupButton\n            size=\"icon-xs\"\n            variant=\"ghost\"\n            render={<ComboboxTrigger />}\n            data-slot=\"input-group-button\"\n            className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n            disabled={disabled}\n          />\n        )}\n        {showClear && <ComboboxClear disabled={disabled} />}\n      </InputGroupAddon>\n      {children}\n    </InputGroup>\n  )\n}\n\nfunction ComboboxContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 6,\n  align = \"start\",\n  alignOffset = 0,\n  anchor,\n  ...props\n}: ComboboxPrimitive.Popup.Props &\n  Pick<\n    ComboboxPrimitive.Positioner.Props,\n    \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n  >) {\n  return (\n    <ComboboxPrimitive.Portal>\n      <ComboboxPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        anchor={anchor}\n        className=\"isolate z-50\"\n      >\n        <ComboboxPrimitive.Popup\n          data-slot=\"combobox-content\"\n          data-chips={!!anchor}\n          className={cn(\n            \"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </ComboboxPrimitive.Positioner>\n    </ComboboxPrimitive.Portal>\n  )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n  return (\n    <ComboboxPrimitive.List\n      data-slot=\"combobox-list\"\n      className={cn(\n        \"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxItem({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Item.Props) {\n  return (\n    <ComboboxPrimitive.Item\n      data-slot=\"combobox-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ComboboxPrimitive.ItemIndicator\n        render={\n          <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n        }\n      >\n        <CheckIcon className=\"pointer-events-none\" />\n      </ComboboxPrimitive.ItemIndicator>\n    </ComboboxPrimitive.Item>\n  )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n  return (\n    <ComboboxPrimitive.Group\n      data-slot=\"combobox-group\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxLabel({\n  className,\n  ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n  return (\n    <ComboboxPrimitive.GroupLabel\n      data-slot=\"combobox-label\"\n      className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n  return (\n    <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n  )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n  return (\n    <ComboboxPrimitive.Empty\n      data-slot=\"combobox-empty\"\n      className={cn(\n        \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxSeparator({\n  className,\n  ...props\n}: ComboboxPrimitive.Separator.Props) {\n  return (\n    <ComboboxPrimitive.Separator\n      data-slot=\"combobox-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChips({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n  ComboboxPrimitive.Chips.Props) {\n  return (\n    <ComboboxPrimitive.Chips\n      data-slot=\"combobox-chips\"\n      className={cn(\n        \"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChip({\n  className,\n  children,\n  showRemove = true,\n  ...props\n}: ComboboxPrimitive.Chip.Props & {\n  showRemove?: boolean\n}) {\n  return (\n    <ComboboxPrimitive.Chip\n      data-slot=\"combobox-chip\"\n      className={cn(\n        \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showRemove && (\n        <ComboboxPrimitive.ChipRemove\n          render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n          className=\"-ml-1 opacity-50 hover:opacity-100\"\n          data-slot=\"combobox-chip-remove\"\n        >\n          <XIcon className=\"pointer-events-none\" />\n        </ComboboxPrimitive.ChipRemove>\n      )}\n    </ComboboxPrimitive.Chip>\n  )\n}\n\nfunction ComboboxChipsInput({\n  className,\n  ...props\n}: ComboboxPrimitive.Input.Props) {\n  return (\n    <ComboboxPrimitive.Input\n      data-slot=\"combobox-chip-input\"\n      className={cn(\"min-w-16 flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction useComboboxAnchor() {\n  return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n  Combobox,\n  ComboboxInput,\n  ComboboxContent,\n  ComboboxList,\n  ComboboxItem,\n  ComboboxGroup,\n  ComboboxLabel,\n  ComboboxCollection,\n  ComboboxEmpty,\n  ComboboxSeparator,\n  ComboboxChips,\n  ComboboxChip,\n  ComboboxChipsInput,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/examples/base/ui/dialog\"\nimport { InputGroup, InputGroupAddon } from \"@/examples/base/ui/input-group\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { CheckIcon, SearchIcon } from \"lucide-react\"\n\nfunction Command({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n  return (\n    <CommandPrimitive\n      data-slot=\"command\"\n      className={cn(\n        \"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandDialog({\n  title = \"Command Palette\",\n  description = \"Search for a command to run...\",\n  children,\n  className,\n  showCloseButton = false,\n  ...props\n}: Omit<React.ComponentProps<typeof Dialog>, \"children\"> & {\n  title?: string\n  description?: string\n  className?: string\n  showCloseButton?: boolean\n  children: React.ReactNode\n}) {\n  return (\n    <Dialog {...props}>\n      <DialogHeader className=\"sr-only\">\n        <DialogTitle>{title}</DialogTitle>\n        <DialogDescription>{description}</DialogDescription>\n      </DialogHeader>\n      <DialogContent\n        className={cn(\n          \"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\",\n          className\n        )}\n        showCloseButton={showCloseButton}\n      >\n        {children}\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction CommandInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n  return (\n    <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n      <InputGroup className=\"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\">\n        <CommandPrimitive.Input\n          data-slot=\"command-input\"\n          className={cn(\n            \"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n            className\n          )}\n          {...props}\n        />\n        <InputGroupAddon>\n          <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n\nfunction CommandList({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n  return (\n    <CommandPrimitive.List\n      data-slot=\"command-list\"\n      className={cn(\n        \"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandEmpty({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n  return (\n    <CommandPrimitive.Empty\n      data-slot=\"command-empty\"\n      className={cn(\"py-6 text-center text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n  return (\n    <CommandPrimitive.Group\n      data-slot=\"command-group\"\n      className={cn(\n        \"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n  return (\n    <CommandPrimitive.Separator\n      data-slot=\"command-separator\"\n      className={cn(\"-mx-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n  return (\n    <CommandPrimitive.Item\n      data-slot=\"command-item\"\n      className={cn(\n        \"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <CheckIcon className=\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n    </CommandPrimitive.Item>\n  )\n}\n\nfunction CommandShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"command-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { ContextMenu as ContextMenuPrimitive } from \"@base-ui/react/context-menu\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\n  return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\n  return (\n    <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n  )\n}\n\nfunction ContextMenuTrigger({\n  className,\n  ...props\n}: ContextMenuPrimitive.Trigger.Props) {\n  return (\n    <ContextMenuPrimitive.Trigger\n      data-slot=\"context-menu-trigger\"\n      className={cn(\"select-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuContent({\n  className,\n  align = \"start\",\n  alignOffset = 4,\n  side = \"right\",\n  sideOffset = 0,\n  ...props\n}: ContextMenuPrimitive.Popup.Props &\n  Pick<\n    ContextMenuPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <ContextMenuPrimitive.Portal>\n      <ContextMenuPrimitive.Positioner\n        className=\"isolate z-50 outline-none\"\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n      >\n        <ContextMenuPrimitive.Popup\n          data-slot=\"context-menu-content\"\n          className={cn(\n            \"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </ContextMenuPrimitive.Positioner>\n    </ContextMenuPrimitive.Portal>\n  )\n}\n\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\n  return (\n    <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n  )\n}\n\nfunction ContextMenuLabel({\n  className,\n  inset,\n  ...props\n}: ContextMenuPrimitive.GroupLabel.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.GroupLabel\n      data-slot=\"context-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: ContextMenuPrimitive.Item.Props & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <ContextMenuPrimitive.Item\n      data-slot=\"context-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\n  return (\n    <ContextMenuPrimitive.SubmenuRoot data-slot=\"context-menu-sub\" {...props} />\n  )\n}\n\nfunction ContextMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.SubmenuTrigger\n      data-slot=\"context-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n    </ContextMenuPrimitive.SubmenuTrigger>\n  )\n}\n\nfunction ContextMenuSubContent({\n  ...props\n}: React.ComponentProps<typeof ContextMenuContent>) {\n  return (\n    <ContextMenuContent\n      data-slot=\"context-menu-sub-content\"\n      className=\"cn-menu-target cn-menu-translucent shadow-lg\"\n      side=\"right\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: ContextMenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      data-slot=\"context-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute right-2\">\n        <ContextMenuPrimitive.CheckboxItemIndicator>\n          <CheckIcon />\n        </ContextMenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction ContextMenuRadioGroup({\n  ...props\n}: ContextMenuPrimitive.RadioGroup.Props) {\n  return (\n    <ContextMenuPrimitive.RadioGroup\n      data-slot=\"context-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: ContextMenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.RadioItem\n      data-slot=\"context-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute right-2\">\n        <ContextMenuPrimitive.RadioItemIndicator>\n          <CheckIcon />\n        </ContextMenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.RadioItem>\n  )\n}\n\nfunction ContextMenuSeparator({\n  className,\n  ...props\n}: ContextMenuPrimitive.Separator.Props) {\n  return (\n    <ContextMenuPrimitive.Separator\n      data-slot=\"context-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"context-menu-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ContextMenu,\n  ContextMenuTrigger,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuCheckboxItem,\n  ContextMenuRadioItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuGroup,\n  ContextMenuPortal,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuRadioGroup,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: DialogPrimitive.Backdrop.Props) {\n  return (\n    <DialogPrimitive.Backdrop\n      data-slot=\"dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: DialogPrimitive.Popup.Props & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal>\n      <DialogOverlay />\n      <DialogPrimitive.Popup\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close\n            data-slot=\"dialog-close\"\n            render={\n              <Button\n                variant=\"ghost\"\n                className=\"absolute top-2 right-2\"\n                size=\"icon-sm\"\n              />\n            }\n          >\n            <XIcon />\n            <span className=\"sr-only\">Close</span>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Popup>\n    </DialogPortal>\n  )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-header\"\n      className={cn(\"flex flex-col gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogFooter({\n  className,\n  showCloseButton = false,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n          Close\n        </DialogPrimitive.Close>\n      )}\n    </div>\n  )\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn(\n        \"cn-font-heading text-base leading-none font-medium\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: DialogPrimitive.Description.Props) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\n        \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/direction.tsx",
    "content": "\"use client\"\n\nexport {\n  DirectionProvider,\n  useDirection,\n} from \"@base-ui/react/direction-provider\"\n"
  },
  {
    "path": "apps/v4/examples/base/ui/drawer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n  return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n  return (\n    <DrawerPortal data-slot=\"drawer-portal\">\n      <DrawerOverlay />\n      <DrawerPrimitive.Content\n        data-slot=\"drawer-content\"\n        className={cn(\n          \"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n        {children}\n      </DrawerPrimitive.Content>\n    </DrawerPortal>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\n        \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n  return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n  return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n  return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n  align = \"start\",\n  alignOffset = 0,\n  side = \"bottom\",\n  sideOffset = 4,\n  className,\n  ...props\n}: MenuPrimitive.Popup.Props &\n  Pick<\n    MenuPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <MenuPrimitive.Portal>\n      <MenuPrimitive.Positioner\n        className=\"isolate z-50 outline-none\"\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n      >\n        <MenuPrimitive.Popup\n          data-slot=\"dropdown-menu-content\"\n          className={cn(\n            \"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </MenuPrimitive.Positioner>\n    </MenuPrimitive.Portal>\n  )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n  return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: MenuPrimitive.GroupLabel.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.GroupLabel\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: MenuPrimitive.Item.Props & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <MenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n  return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.SubmenuTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n    </MenuPrimitive.SubmenuTrigger>\n  )\n}\n\nfunction DropdownMenuSubContent({\n  align = \"start\",\n  alignOffset = -3,\n  side = \"right\",\n  sideOffset = 0,\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n  return (\n    <DropdownMenuContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      align={align}\n      alignOffset={alignOffset}\n      side={side}\n      sideOffset={sideOffset}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-checkbox-item-indicator\"\n      >\n        <MenuPrimitive.CheckboxItemIndicator>\n          <CheckIcon />\n        </MenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n  return (\n    <MenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: MenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-radio-item-indicator\"\n      >\n        <MenuPrimitive.RadioItemIndicator>\n          <CheckIcon />\n        </MenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.RadioItem>\n  )\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: MenuPrimitive.Separator.Props) {\n  return (\n    <MenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/empty.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty\"\n      className={cn(\n        \"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-header\"\n      className={cn(\"flex max-w-sm flex-col items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nconst emptyMediaVariants = cva(\n  \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction EmptyMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n  return (\n    <div\n      data-slot=\"empty-icon\"\n      data-variant={variant}\n      className={cn(emptyMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-title\"\n      className={cn(\n        \"cn-font-heading text-sm font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <div\n      data-slot=\"empty-description\"\n      className={cn(\n        \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-content\"\n      className={cn(\n        \"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Empty,\n  EmptyHeader,\n  EmptyTitle,\n  EmptyDescription,\n  EmptyContent,\n  EmptyMedia,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/field.tsx",
    "content": "\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Label } from \"@/examples/base/ui/label\"\nimport { Separator } from \"@/examples/base/ui/separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n  return (\n    <fieldset\n      data-slot=\"field-set\"\n      className={cn(\n        \"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLegend({\n  className,\n  variant = \"legend\",\n  ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n  return (\n    <legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\n        \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\n        \"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst fieldVariants = cva(\n  \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n  {\n    variants: {\n      orientation: {\n        vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n        horizontal:\n          \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n        responsive:\n          \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"vertical\",\n    },\n  }\n)\n\nfunction Field({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"field\"\n      data-orientation={orientation}\n      className={cn(fieldVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn(\n        \"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof Label>) {\n  return (\n    <Label\n      data-slot=\"field-label\"\n      className={cn(\n        \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n        \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-label\"\n      className={cn(\n        \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        \"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n        \"last:mt-0 nth-last-2:-mt-1\",\n        \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  children?: React.ReactNode\n}) {\n  return (\n    <div\n      data-slot=\"field-separator\"\n      data-content={!!children}\n      className={cn(\n        \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n        className\n      )}\n      {...props}\n    >\n      <Separator className=\"absolute inset-0 top-1/2\" />\n      {children && (\n        <span\n          className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n          data-slot=\"field-separator-content\"\n        >\n          {children}\n        </span>\n      )}\n    </div>\n  )\n}\n\nfunction FieldError({\n  className,\n  children,\n  errors,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  errors?: Array<{ message?: string } | undefined>\n}) {\n  const content = useMemo(() => {\n    if (children) {\n      return children\n    }\n\n    if (!errors?.length) {\n      return null\n    }\n\n    const uniqueErrors = [\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\n    ]\n\n    if (uniqueErrors?.length == 1) {\n      return uniqueErrors[0]?.message\n    }\n\n    return (\n      <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n        {uniqueErrors.map(\n          (error, index) =>\n            error?.message && <li key={index}>{error.message}</li>\n        )}\n      </ul>\n    )\n  }, [children, errors])\n\n  if (!content) {\n    return null\n  }\n\n  return (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      className={cn(\"text-sm font-normal text-destructive\", className)}\n      {...props}\n    >\n      {content}\n    </div>\n  )\n}\n\nexport {\n  Field,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldContent,\n  FieldTitle,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/hover-card.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\"\n\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\n  return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n  return (\n    <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n  )\n}\n\nfunction HoverCardContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 4,\n  ...props\n}: PreviewCardPrimitive.Popup.Props &\n  Pick<\n    PreviewCardPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n      <PreviewCardPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <PreviewCardPrimitive.Popup\n          data-slot=\"hover-card-content\"\n          className={cn(\n            \"z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </PreviewCardPrimitive.Positioner>\n    </PreviewCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { Textarea } from \"@/examples/base/ui/textarea\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-group\"\n      role=\"group\"\n      className={cn(\n        \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupAddonVariants = cva(\n  \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      align: {\n        \"inline-start\":\n          \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n        \"inline-end\":\n          \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n        \"block-start\":\n          \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n        \"block-end\":\n          \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n      },\n    },\n    defaultVariants: {\n      align: \"inline-start\",\n    },\n  }\n)\n\nfunction InputGroupAddon({\n  className,\n  align = \"inline-start\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"input-group-addon\"\n      data-align={align}\n      className={cn(inputGroupAddonVariants({ align }), className)}\n      onClick={(e) => {\n        if ((e.target as HTMLElement).closest(\"button\")) {\n          return\n        }\n        e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n      }}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupButtonVariants = cva(\n  \"flex items-center gap-2 text-sm shadow-none\",\n  {\n    variants: {\n      size: {\n        xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n        sm: \"\",\n        \"icon-xs\":\n          \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n        \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n      },\n    },\n    defaultVariants: {\n      size: \"xs\",\n    },\n  }\n)\n\nfunction InputGroupButton({\n  className,\n  type = \"button\",\n  variant = \"ghost\",\n  size = \"xs\",\n  ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\" | \"type\"> &\n  VariantProps<typeof inputGroupButtonVariants> & {\n    type?: \"button\" | \"submit\" | \"reset\"\n  }) {\n  return (\n    <Button\n      type={type}\n      data-size={size}\n      variant={variant}\n      className={cn(inputGroupButtonVariants({ size }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      className={cn(\n        \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupInput({\n  className,\n  ...props\n}: React.ComponentProps<\"input\">) {\n  return (\n    <Input\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupTextarea({\n  className,\n  ...props\n}: React.ComponentProps<\"textarea\">) {\n  return (\n    <Textarea\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupInput,\n  InputGroupTextarea,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/input-otp.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        \"cn-input-otp flex items-center has-disabled:opacity-50\",\n        containerClassName\n      )}\n      spellCheck={false}\n      className={cn(\"disabled:cursor-not-allowed\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\n        \"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  index: number\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext)\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        \"relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-separator\"\n      className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n      role=\"separator\"\n      {...props}\n    >\n      <MinusIcon />\n    </div>\n  )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/input.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <InputPrimitive\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/item.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Separator } from \"@/examples/base/ui/separator\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      role=\"list\"\n      data-slot=\"item-group\"\n      className={cn(\n        \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"item-separator\"\n      orientation=\"horizontal\"\n      className={cn(\"my-2\", className)}\n      {...props}\n    />\n  )\n}\n\nconst itemVariants = cva(\n  \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\",\n  {\n    variants: {\n      variant: {\n        default: \"border-transparent\",\n        outline: \"border-border\",\n        muted: \"border-transparent bg-muted/50\",\n      },\n      size: {\n        default: \"gap-2.5 px-3 py-2.5\",\n        sm: \"gap-2.5 px-3 py-2.5\",\n        xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Item({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\"> & VariantProps<typeof itemVariants>) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(itemVariants({ variant, size, className })),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"item\",\n      variant,\n      size,\n    },\n  })\n}\n\nconst itemMediaVariants = cva(\n  \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"[&_svg:not([class*='size-'])]:size-4\",\n        image:\n          \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction ItemMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n  return (\n    <div\n      data-slot=\"item-media\"\n      data-variant={variant}\n      className={cn(itemMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-content\"\n      className={cn(\n        \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-title\"\n      className={cn(\n        \"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"item-description\"\n      className={cn(\n        \"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-actions\"\n      className={cn(\"flex items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-header\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-footer\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Item,\n  ItemMedia,\n  ItemContent,\n  ItemActions,\n  ItemGroup,\n  ItemSeparator,\n  ItemTitle,\n  ItemDescription,\n  ItemHeader,\n  ItemFooter,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/kbd.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      data-slot=\"kbd\"\n      className={cn(\n        \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <kbd\n      data-slot=\"kbd-group\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Kbd, KbdGroup }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n  return (\n    <label\n      data-slot=\"label\"\n      className={cn(\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui/dropdown-menu\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\nimport { Menubar as MenubarPrimitive } from \"@base-ui/react/menubar\"\nimport { CheckIcon } from \"lucide-react\"\n\nfunction Menubar({ className, ...props }: MenubarPrimitive.Props) {\n  return (\n    <MenubarPrimitive\n      data-slot=\"menubar\"\n      className={cn(\n        \"flex h-8 items-center gap-0.5 rounded-lg border p-[3px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\n  return <DropdownMenu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuGroup>) {\n  return <DropdownMenuGroup data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPortal>) {\n  return <DropdownMenuPortal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuTrigger>) {\n  return (\n    <DropdownMenuTrigger\n      data-slot=\"menubar-trigger\"\n      className={cn(\n        \"flex items-center rounded-sm px-1.5 py-[2px] text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarContent({\n  className,\n  align = \"start\",\n  alignOffset = -4,\n  sideOffset = 8,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n  return (\n    <DropdownMenuContent\n      data-slot=\"menubar-content\"\n      align={align}\n      alignOffset={alignOffset}\n      sideOffset={sideOffset}\n      className={cn(\n        \"cn-menu-target cn-menu-translucent min-w-36 rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof DropdownMenuItem>) {\n  return (\n    <DropdownMenuItem\n      data-slot=\"menubar-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/menubar-item gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.CheckboxItem\n      data-slot=\"menubar-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\">\n        <MenuPrimitive.CheckboxItemIndicator>\n          <CheckIcon />\n        </MenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction MenubarRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {\n  return <DropdownMenuRadioGroup data-slot=\"menubar-radio-group\" {...props} />\n}\n\nfunction MenubarRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: MenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.RadioItem\n      data-slot=\"menubar-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\">\n        <MenuPrimitive.RadioItemIndicator>\n          <CheckIcon />\n        </MenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.RadioItem>\n  )\n}\n\nfunction MenubarLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuLabel> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuLabel\n      data-slot=\"menubar-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-sm font-medium data-inset:pl-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSeparator>) {\n  return (\n    <DropdownMenuSeparator\n      data-slot=\"menubar-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarShortcut({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuShortcut>) {\n  return (\n    <DropdownMenuShortcut\n      data-slot=\"menubar-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSub>) {\n  return <DropdownMenuSub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuSubTrigger\n      data-slot=\"menubar-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSubContent>) {\n  return (\n    <DropdownMenuSubContent\n      data-slot=\"menubar-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent min-w-32 rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Menubar,\n  MenubarPortal,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarGroup,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarItem,\n  MenubarShortcut,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSub,\n  MenubarSubTrigger,\n  MenubarSubContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/native-select.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\ntype NativeSelectProps = Omit<React.ComponentProps<\"select\">, \"size\"> & {\n  size?: \"sm\" | \"default\"\n}\n\nfunction NativeSelect({\n  className,\n  size = \"default\",\n  ...props\n}: NativeSelectProps) {\n  return (\n    <div\n      className={cn(\n        \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n        className\n      )}\n      data-slot=\"native-select-wrapper\"\n      data-size={size}\n    >\n      <select\n        data-slot=\"native-select\"\n        data-size={size}\n        className=\"h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\"\n        {...props}\n      />\n      <ChevronDownIcon\n        className=\"pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none\"\n        aria-hidden=\"true\"\n        data-slot=\"native-select-icon\"\n      />\n    </div>\n  )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n  return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n  className,\n  ...props\n}: React.ComponentProps<\"optgroup\">) {\n  return (\n    <optgroup\n      data-slot=\"native-select-optgroup\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/navigation-menu.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"@base-ui/react/navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nfunction NavigationMenu({\n  align = \"start\",\n  className,\n  children,\n  ...props\n}: NavigationMenuPrimitive.Root.Props &\n  Pick<NavigationMenuPrimitive.Positioner.Props, \"align\">) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      className={cn(\n        \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <NavigationMenuPositioner align={align} />\n    </NavigationMenuPrimitive.Root>\n  )\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"group flex flex-1 list-none items-center justify-center gap-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg bg-background px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\"\n)\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: NavigationMenuPrimitive.Trigger.Props) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}{\" \"}\n      <ChevronDownIcon\n        className=\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\"\n        aria-hidden=\"true\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  )\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: NavigationMenuPrimitive.Content.Props) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-1 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuPositioner({\n  className,\n  side = \"bottom\",\n  sideOffset = 8,\n  align = \"start\",\n  alignOffset = 0,\n  ...props\n}: NavigationMenuPrimitive.Positioner.Props) {\n  return (\n    <NavigationMenuPrimitive.Portal>\n      <NavigationMenuPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        className={cn(\n          \"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0\",\n          className\n        )}\n        {...props}\n      >\n        <NavigationMenuPrimitive.Popup className=\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\">\n          <NavigationMenuPrimitive.Viewport className=\"relative size-full overflow-hidden\" />\n        </NavigationMenuPrimitive.Popup>\n      </NavigationMenuPrimitive.Positioner>\n    </NavigationMenuPrimitive.Portal>\n  )\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: NavigationMenuPrimitive.Link.Props) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\n        \"flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {\n  return (\n    <NavigationMenuPrimitive.Icon\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n    </NavigationMenuPrimitive.Icon>\n  )\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuIndicator,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n  NavigationMenuPositioner,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/pagination.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport {\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  MoreHorizontalIcon,\n} from \"lucide-react\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      role=\"navigation\"\n      aria-label=\"pagination\"\n      data-slot=\"pagination\"\n      className={cn(\"mx-auto flex w-full justify-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationContent({\n  className,\n  ...props\n}: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"pagination-content\"\n      className={cn(\"flex items-center gap-0.5\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n  return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n  isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n  React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n  className,\n  isActive,\n  size = \"icon\",\n  ...props\n}: PaginationLinkProps) {\n  return (\n    <Button\n      variant={isActive ? \"outline\" : \"ghost\"}\n      size={size}\n      className={cn(className)}\n      nativeButton={false}\n      render={\n        <a\n          aria-current={isActive ? \"page\" : undefined}\n          data-slot=\"pagination-link\"\n          data-active={isActive}\n          {...props}\n        />\n      }\n    />\n  )\n}\n\nfunction PaginationPrevious({\n  className,\n  text = \"Previous\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to previous page\"\n      size=\"default\"\n      className={cn(\"pl-1.5!\", className)}\n      {...props}\n    >\n      <ChevronLeftIcon data-icon=\"inline-start\" className=\"cn-rtl-flip\" />\n      <span className=\"hidden sm:block\">{text}</span>\n    </PaginationLink>\n  )\n}\n\nfunction PaginationNext({\n  className,\n  text = \"Next\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to next page\"\n      size=\"default\"\n      className={cn(\"pr-1.5!\", className)}\n      {...props}\n    >\n      <span className=\"hidden sm:block\">{text}</span>\n      <ChevronRightIcon data-icon=\"inline-end\" className=\"cn-rtl-flip\" />\n    </PaginationLink>\n  )\n}\n\nfunction PaginationEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden\n      data-slot=\"pagination-ellipsis\"\n      className={cn(\n        \"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More pages</span>\n    </span>\n  )\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\"\n\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  alignOffset = 0,\n  side = \"bottom\",\n  sideOffset = 4,\n  ...props\n}: PopoverPrimitive.Popup.Props &\n  Pick<\n    PopoverPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <PopoverPrimitive.Popup\n          data-slot=\"popover-content\"\n          className={cn(\n            \"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </PopoverPrimitive.Positioner>\n    </PopoverPrimitive.Portal>\n  )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-header\"\n      className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n  return (\n    <PopoverPrimitive.Title\n      data-slot=\"popover-title\"\n      className={cn(\"cn-font-heading font-medium\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverDescription({\n  className,\n  ...props\n}: PopoverPrimitive.Description.Props) {\n  return (\n    <PopoverPrimitive.Description\n      data-slot=\"popover-description\"\n      className={cn(\"text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/progress.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Progress as ProgressPrimitive } from \"@base-ui/react/progress\"\n\nfunction Progress({\n  className,\n  children,\n  value,\n  ...props\n}: ProgressPrimitive.Root.Props) {\n  return (\n    <ProgressPrimitive.Root\n      value={value}\n      data-slot=\"progress\"\n      className={cn(\"flex flex-wrap gap-3\", className)}\n      {...props}\n    >\n      {children}\n      <ProgressTrack>\n        <ProgressIndicator />\n      </ProgressTrack>\n    </ProgressPrimitive.Root>\n  )\n}\n\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\n  return (\n    <ProgressPrimitive.Track\n      className={cn(\n        \"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted\",\n        className\n      )}\n      data-slot=\"progress-track\"\n      {...props}\n    />\n  )\n}\n\nfunction ProgressIndicator({\n  className,\n  ...props\n}: ProgressPrimitive.Indicator.Props) {\n  return (\n    <ProgressPrimitive.Indicator\n      data-slot=\"progress-indicator\"\n      className={cn(\"h-full bg-primary transition-all\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\n  return (\n    <ProgressPrimitive.Label\n      className={cn(\"text-sm font-medium\", className)}\n      data-slot=\"progress-label\"\n      {...props}\n    />\n  )\n}\n\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\n  return (\n    <ProgressPrimitive.Value\n      className={cn(\n        \"ml-auto text-sm text-muted-foreground tabular-nums\",\n        className\n      )}\n      data-slot=\"progress-value\"\n      {...props}\n    />\n  )\n}\n\nexport {\n  Progress,\n  ProgressTrack,\n  ProgressIndicator,\n  ProgressLabel,\n  ProgressValue,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/radio-group.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\"\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\"\n\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\n  return (\n    <RadioGroupPrimitive\n      data-slot=\"radio-group\"\n      className={cn(\"grid w-full gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\n  return (\n    <RadioPrimitive.Root\n      data-slot=\"radio-group-item\"\n      className={cn(\n        \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <RadioPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"flex size-4 items-center justify-center\"\n      >\n        <span className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\" />\n      </RadioPrimitive.Indicator>\n    </RadioPrimitive.Root>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/resizable.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nfunction ResizablePanelGroup({\n  className,\n  ...props\n}: ResizablePrimitive.GroupProps) {\n  return (\n    <ResizablePrimitive.Group\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: ResizablePrimitive.SeparatorProps & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.Separator\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\" />\n      )}\n    </ResizablePrimitive.Separator>\n  )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/scroll-area.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nfunction ScrollArea({\n  className,\n  children,\n  ...props\n}: ScrollAreaPrimitive.Root.Props) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn(\"relative\", className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        data-slot=\"scroll-area-viewport\"\n        className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  )\n}\n\nfunction ScrollBar({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n  return (\n    <ScrollAreaPrimitive.Scrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      data-orientation={orientation}\n      orientation={orientation}\n      className={cn(\n        \"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\",\n        className\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Thumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"relative flex-1 rounded-full bg-border\"\n      />\n    </ScrollAreaPrimitive.Scrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n  return (\n    <SelectPrimitive.Group\n      data-slot=\"select-group\"\n      className={cn(\"scroll-my-1 p-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n  return (\n    <SelectPrimitive.Value\n      data-slot=\"select-value\"\n      className={cn(\"flex flex-1 text-left\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: SelectPrimitive.Trigger.Props & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon\n        render={\n          <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n        }\n      />\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  side = \"bottom\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 0,\n  alignItemWithTrigger = true,\n  ...props\n}: SelectPrimitive.Popup.Props &\n  Pick<\n    SelectPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n  >) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        alignItemWithTrigger={alignItemWithTrigger}\n        className=\"isolate z-50\"\n      >\n        <SelectPrimitive.Popup\n          data-slot=\"select-content\"\n          data-align-trigger={alignItemWithTrigger}\n          className={cn(\n            \"cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        >\n          <SelectScrollUpButton />\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\n          <SelectScrollDownButton />\n        </SelectPrimitive.Popup>\n      </SelectPrimitive.Positioner>\n    </SelectPrimitive.Portal>\n  )\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: SelectPrimitive.GroupLabel.Props) {\n  return (\n    <SelectPrimitive.GroupLabel\n      data-slot=\"select-label\"\n      className={cn(\"px-1.5 py-1 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: SelectPrimitive.Item.Props) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n        className\n      )}\n      {...props}\n    >\n      <SelectPrimitive.ItemText className=\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\">\n        {children}\n      </SelectPrimitive.ItemText>\n      <SelectPrimitive.ItemIndicator\n        render={\n          <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n        }\n      >\n        <CheckIcon className=\"pointer-events-none\" />\n      </SelectPrimitive.ItemIndicator>\n    </SelectPrimitive.Item>\n  )\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: SelectPrimitive.Separator.Props) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n  return (\n    <SelectPrimitive.ScrollUpArrow\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronUpIcon />\n    </SelectPrimitive.ScrollUpArrow>\n  )\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n  return (\n    <SelectPrimitive.ScrollDownArrow\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronDownIcon />\n    </SelectPrimitive.ScrollDownArrow>\n  )\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/separator.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nfunction Separator({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: SeparatorPrimitive.Props) {\n  return (\n    <SeparatorPrimitive\n      data-slot=\"separator\"\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Separator }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\n\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n  return (\n    <SheetPrimitive.Backdrop\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  showCloseButton = true,\n  ...props\n}: SheetPrimitive.Popup.Props & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n  showCloseButton?: boolean\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Popup\n        data-slot=\"sheet-content\"\n        data-side={side}\n        className={cn(\n          \"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <SheetPrimitive.Close\n            data-slot=\"sheet-close\"\n            render={\n              <Button\n                variant=\"ghost\"\n                className=\"absolute top-3 right-3\"\n                size=\"icon-sm\"\n              />\n            }\n          >\n            <XIcon />\n            <span className=\"sr-only\">Close</span>\n          </SheetPrimitive.Close>\n        )}\n      </SheetPrimitive.Popup>\n    </SheetPortal>\n  )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn(\"flex flex-col gap-0.5 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: SheetPrimitive.Description.Props) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useIsMobile } from \"@/examples/base/hooks/use-mobile\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui/button\"\nimport { Input } from \"@/examples/base/ui/input\"\nimport { Separator } from \"@/examples/base/ui/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/examples/base/ui/sheet\"\nimport { Skeleton } from \"@/examples/base/ui/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui/tooltip\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n  state: \"expanded\" | \"collapsed\"\n  open: boolean\n  setOpen: (open: boolean) => void\n  openMobile: boolean\n  setOpenMobile: (open: boolean) => void\n  isMobile: boolean\n  toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n  const context = React.useContext(SidebarContext)\n  if (!context) {\n    throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n  }\n\n  return context\n}\n\nfunction SidebarProvider({\n  defaultOpen = true,\n  open: openProp,\n  onOpenChange: setOpenProp,\n  className,\n  style,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  defaultOpen?: boolean\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}) {\n  const isMobile = useIsMobile()\n  const [openMobile, setOpenMobile] = React.useState(false)\n\n  // This is the internal state of the sidebar.\n  // We use openProp and setOpenProp for control from outside the component.\n  const [_open, _setOpen] = React.useState(defaultOpen)\n  const open = openProp ?? _open\n  const setOpen = React.useCallback(\n    (value: boolean | ((value: boolean) => boolean)) => {\n      const openState = typeof value === \"function\" ? value(open) : value\n      if (setOpenProp) {\n        setOpenProp(openState)\n      } else {\n        _setOpen(openState)\n      }\n\n      // This sets the cookie to keep the sidebar state.\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n    },\n    [setOpenProp, open]\n  )\n\n  // Helper to toggle the sidebar.\n  const toggleSidebar = React.useCallback(() => {\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n  }, [isMobile, setOpen, setOpenMobile])\n\n  // Adds a keyboard shortcut to toggle the sidebar.\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n        (event.metaKey || event.ctrlKey)\n      ) {\n        event.preventDefault()\n        toggleSidebar()\n      }\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n    return () => window.removeEventListener(\"keydown\", handleKeyDown)\n  }, [toggleSidebar])\n\n  // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n  // This makes it easier to style the sidebar with Tailwind classes.\n  const state = open ? \"expanded\" : \"collapsed\"\n\n  const contextValue = React.useMemo<SidebarContextProps>(\n    () => ({\n      state,\n      open,\n      setOpen,\n      isMobile,\n      openMobile,\n      setOpenMobile,\n      toggleSidebar,\n    }),\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n  )\n\n  return (\n    <SidebarContext.Provider value={contextValue}>\n      <div\n        data-slot=\"sidebar-wrapper\"\n        style={\n          {\n            \"--sidebar-width\": SIDEBAR_WIDTH,\n            \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n            ...style,\n          } as React.CSSProperties\n        }\n        className={cn(\n          \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    </SidebarContext.Provider>\n  )\n}\n\nfunction Sidebar({\n  side = \"left\",\n  variant = \"sidebar\",\n  collapsible = \"offcanvas\",\n  className,\n  children,\n  dir,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  side?: \"left\" | \"right\"\n  variant?: \"sidebar\" | \"floating\" | \"inset\"\n  collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n  if (collapsible === \"none\") {\n    return (\n      <div\n        data-slot=\"sidebar\"\n        className={cn(\n          \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n\n  if (isMobile) {\n    return (\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n        <SheetContent\n          dir={dir}\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar\"\n          data-mobile=\"true\"\n          className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n          style={\n            {\n              \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n            } as React.CSSProperties\n          }\n          side={side}\n        >\n          <SheetHeader className=\"sr-only\">\n            <SheetTitle>Sidebar</SheetTitle>\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n          </SheetHeader>\n          <div className=\"flex h-full w-full flex-col\">{children}</div>\n        </SheetContent>\n      </Sheet>\n    )\n  }\n\n  return (\n    <div\n      className=\"group peer hidden text-sidebar-foreground md:block\"\n      data-state={state}\n      data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n      data-variant={variant}\n      data-side={side}\n      data-slot=\"sidebar\"\n    >\n      {/* This is what handles the sidebar gap on desktop */}\n      <div\n        data-slot=\"sidebar-gap\"\n        className={cn(\n          \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n          \"group-data-[collapsible=offcanvas]:w-0\",\n          \"group-data-[side=right]:rotate-180\",\n          variant === \"floating\" || variant === \"inset\"\n            ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n        )}\n      />\n      <div\n        data-slot=\"sidebar-container\"\n        data-side={side}\n        className={cn(\n          \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n          // Adjust the padding for floating and inset variants.\n          variant === \"floating\" || variant === \"inset\"\n            ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n          className\n        )}\n        {...props}\n      >\n        <div\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar-inner\"\n          className=\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\"\n        >\n          {children}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction SidebarTrigger({\n  className,\n  onClick,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <Button\n      data-sidebar=\"trigger\"\n      data-slot=\"sidebar-trigger\"\n      variant=\"ghost\"\n      size=\"icon-sm\"\n      className={cn(className)}\n      onClick={(event) => {\n        onClick?.(event)\n        toggleSidebar()\n      }}\n      {...props}\n    >\n      <PanelLeftIcon className=\"cn-rtl-flip\" />\n      <span className=\"sr-only\">Toggle Sidebar</span>\n    </Button>\n  )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <button\n      data-sidebar=\"rail\"\n      data-slot=\"sidebar-rail\"\n      aria-label=\"Toggle Sidebar\"\n      tabIndex={-1}\n      onClick={toggleSidebar}\n      title=\"Toggle Sidebar\"\n      className={cn(\n        \"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n        \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n        \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n        \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n        \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n        \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n  return (\n    <main\n      data-slot=\"sidebar-inset\"\n      className={cn(\n        \"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof Input>) {\n  return (\n    <Input\n      data-slot=\"sidebar-input\"\n      data-sidebar=\"input\"\n      className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-header\"\n      data-sidebar=\"header\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-footer\"\n      data-sidebar=\"footer\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"sidebar-separator\"\n      data-sidebar=\"separator\"\n      className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-content\"\n      data-sidebar=\"content\"\n      className={cn(\n        \"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group\"\n      data-sidebar=\"group\"\n      className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupLabel({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\"> & React.ComponentProps<\"div\">) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(\n          \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-group-label\",\n      sidebar: \"group-label\",\n    },\n  })\n}\n\nfunction SidebarGroupAction({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"button\"> & React.ComponentProps<\"button\">) {\n  return useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(\n          \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-group-action\",\n      sidebar: \"group-action\",\n    },\n  })\n}\n\nfunction SidebarGroupContent({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group-content\"\n      data-sidebar=\"group-content\"\n      className={cn(\"w-full text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu\"\n      data-sidebar=\"menu\"\n      className={cn(\"flex w-full min-w-0 flex-col gap-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-item\"\n      data-sidebar=\"menu-item\"\n      className={cn(\"group/menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst sidebarMenuButtonVariants = cva(\n  \"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n  {\n    variants: {\n      variant: {\n        default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n        outline:\n          \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n      },\n      size: {\n        default: \"h-8 text-sm\",\n        sm: \"h-7 text-xs\",\n        lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction SidebarMenuButton({\n  render,\n  isActive = false,\n  variant = \"default\",\n  size = \"default\",\n  tooltip,\n  className,\n  ...props\n}: useRender.ComponentProps<\"button\"> &\n  React.ComponentProps<\"button\"> & {\n    isActive?: boolean\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\n  } & VariantProps<typeof sidebarMenuButtonVariants>) {\n  const { isMobile, state } = useSidebar()\n  const comp = useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n      },\n      props\n    ),\n    render: !tooltip ? render : <TooltipTrigger render={render} />,\n    state: {\n      slot: \"sidebar-menu-button\",\n      sidebar: \"menu-button\",\n      size,\n      active: isActive,\n    },\n  })\n\n  if (!tooltip) {\n    return comp\n  }\n\n  if (typeof tooltip === \"string\") {\n    tooltip = {\n      children: tooltip,\n    }\n  }\n\n  return (\n    <Tooltip>\n      {comp}\n      <TooltipContent\n        side=\"right\"\n        align=\"center\"\n        hidden={state !== \"collapsed\" || isMobile}\n        {...tooltip}\n      />\n    </Tooltip>\n  )\n}\n\nfunction SidebarMenuAction({\n  className,\n  render,\n  showOnHover = false,\n  ...props\n}: useRender.ComponentProps<\"button\"> &\n  React.ComponentProps<\"button\"> & {\n    showOnHover?: boolean\n  }) {\n  return useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(\n          \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n          showOnHover &&\n            \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-menu-action\",\n      sidebar: \"menu-action\",\n    },\n  })\n}\n\nfunction SidebarMenuBadge({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-menu-badge\"\n      data-sidebar=\"menu-badge\"\n      className={cn(\n        \"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSkeleton({\n  className,\n  showIcon = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showIcon?: boolean\n}) {\n  // Random width between 50 to 90%.\n  const [width] = React.useState(() => {\n    return `${Math.floor(Math.random() * 40) + 50}%`\n  })\n\n  return (\n    <div\n      data-slot=\"sidebar-menu-skeleton\"\n      data-sidebar=\"menu-skeleton\"\n      className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n      {...props}\n    >\n      {showIcon && (\n        <Skeleton\n          className=\"size-4 rounded-md\"\n          data-sidebar=\"menu-skeleton-icon\"\n        />\n      )}\n      <Skeleton\n        className=\"h-4 max-w-(--skeleton-width) flex-1\"\n        data-sidebar=\"menu-skeleton-text\"\n        style={\n          {\n            \"--skeleton-width\": width,\n          } as React.CSSProperties\n        }\n      />\n    </div>\n  )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu-sub\"\n      data-sidebar=\"menu-sub\"\n      className={cn(\n        \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubItem({\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-sub-item\"\n      data-sidebar=\"menu-sub-item\"\n      className={cn(\"group/menu-sub-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubButton({\n  render,\n  size = \"md\",\n  isActive = false,\n  className,\n  ...props\n}: useRender.ComponentProps<\"a\"> &\n  React.ComponentProps<\"a\"> & {\n    size?: \"sm\" | \"md\"\n    isActive?: boolean\n  }) {\n  return useRender({\n    defaultTagName: \"a\",\n    props: mergeProps<\"a\">(\n      {\n        className: cn(\n          \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-menu-sub-button\",\n      sidebar: \"menu-sub-button\",\n      size,\n      active: isActive,\n    },\n  })\n}\n\nexport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarSeparator,\n  SidebarTrigger,\n  useSidebar,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/skeleton.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\"\n\nfunction Slider({\n  className,\n  defaultValue,\n  value,\n  min = 0,\n  max = 100,\n  ...props\n}: SliderPrimitive.Root.Props) {\n  const _values = React.useMemo(\n    () =>\n      Array.isArray(value)\n        ? value\n        : Array.isArray(defaultValue)\n          ? defaultValue\n          : [min, max],\n    [value, defaultValue, min, max]\n  )\n\n  return (\n    <SliderPrimitive.Root\n      className={cn(\"data-horizontal:w-full data-vertical:h-full\", className)}\n      data-slot=\"slider\"\n      defaultValue={defaultValue}\n      value={value}\n      min={min}\n      max={max}\n      thumbAlignment=\"edge\"\n      {...props}\n    >\n      <SliderPrimitive.Control className=\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\">\n        <SliderPrimitive.Track\n          data-slot=\"slider-track\"\n          className=\"relative grow overflow-hidden rounded-full bg-muted select-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\"\n        >\n          <SliderPrimitive.Indicator\n            data-slot=\"slider-range\"\n            className=\"bg-primary select-none data-horizontal:h-full data-vertical:w-full\"\n          />\n        </SliderPrimitive.Track>\n        {Array.from({ length: _values.length }, (_, index) => (\n          <SliderPrimitive.Thumb\n            data-slot=\"slider-thumb\"\n            key={index}\n            className=\"relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50\"\n          />\n        ))}\n      </SliderPrimitive.Control>\n    </SliderPrimitive.Root>\n  )\n}\n\nexport { Slider }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/sonner.tsx",
    "content": "\"use client\"\n\nimport {\n  CircleCheckIcon,\n  InfoIcon,\n  Loader2Icon,\n  OctagonXIcon,\n  TriangleAlertIcon,\n} from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = \"system\" } = useTheme()\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps[\"theme\"]}\n      className=\"toaster group\"\n      icons={{\n        success: <CircleCheckIcon className=\"size-4\" />,\n        info: <InfoIcon className=\"size-4\" />,\n        warning: <TriangleAlertIcon className=\"size-4\" />,\n        error: <OctagonXIcon className=\"size-4\" />,\n        loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n      }}\n      style={\n        {\n          \"--normal-bg\": \"var(--popover)\",\n          \"--normal-text\": \"var(--popover-foreground)\",\n          \"--normal-border\": \"var(--border)\",\n          \"--border-radius\": \"var(--radius)\",\n        } as React.CSSProperties\n      }\n      toastOptions={{\n        classNames: {\n          toast: \"cn-toast\",\n        },\n      }}\n      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/spinner.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { Loader2Icon } from \"lucide-react\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <Loader2Icon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/switch.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\"\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: SwitchPrimitive.Root.Props & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      data-size={size}\n      className={cn(\n        \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n  return (\n    <div\n      data-slot=\"table-container\"\n      className=\"relative w-full overflow-x-auto\"\n    >\n      <table\n        data-slot=\"table\"\n        className={cn(\"w-full caption-bottom text-sm\", className)}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n  return (\n    <thead\n      data-slot=\"table-header\"\n      className={cn(\"[&_tr]:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n  return (\n    <tbody\n      data-slot=\"table-body\"\n      className={cn(\"[&_tr:last-child]:border-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n  return (\n    <tfoot\n      data-slot=\"table-footer\"\n      className={cn(\n        \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n  return (\n    <tr\n      data-slot=\"table-row\"\n      className={cn(\n        \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n  return (\n    <th\n      data-slot=\"table-head\"\n      className={cn(\n        \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n  return (\n    <td\n      data-slot=\"table-cell\"\n      className={cn(\n        \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCaption({\n  className,\n  ...props\n}: React.ComponentProps<\"caption\">) {\n  return (\n    <caption\n      data-slot=\"table-caption\"\n      className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: TabsPrimitive.Root.Props) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      data-orientation={orientation}\n      className={cn(\n        \"group/tabs flex gap-2 data-horizontal:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst tabsListVariants = cva(\n  \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-muted\",\n        line: \"gap-1 bg-transparent\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction TabsList({\n  className,\n  variant = \"default\",\n  ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={cn(tabsListVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n  return (\n    <TabsPrimitive.Tab\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n        \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n        \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n  return (\n    <TabsPrimitive.Panel\n      data-slot=\"tabs-content\"\n      className={cn(\"flex-1 text-sm outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/textarea.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/toggle-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { toggleVariants } from \"@/examples/base/ui/toggle\"\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"@base-ui/react/toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }\n>({\n  size: \"default\",\n  variant: \"default\",\n  spacing: 0,\n  orientation: \"horizontal\",\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  spacing = 0,\n  orientation = \"horizontal\",\n  children,\n  ...props\n}: ToggleGroupPrimitive.Props &\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }) {\n  return (\n    <ToggleGroupPrimitive\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      data-spacing={spacing}\n      data-orientation={orientation}\n      style={{ \"--gap\": spacing } as React.CSSProperties}\n      className={cn(\n        \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider\n        value={{ variant, size, spacing, orientation }}\n      >\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive>\n  )\n}\n\nfunction ToggleGroupItem({\n  className,\n  children,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n  const context = React.useContext(ToggleGroupContext)\n\n  return (\n    <TogglePrimitive\n      data-slot=\"toggle-group-item\"\n      data-variant={context.variant || variant}\n      data-size={context.size || size}\n      data-spacing={context.spacing}\n      className={cn(\n        \"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </TogglePrimitive>\n  )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/toggle.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst toggleVariants = cva(\n  \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline: \"border border-input bg-transparent hover:bg-muted\",\n      },\n      size: {\n        default: \"h-8 min-w-8 px-2\",\n        sm: \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]\",\n        lg: \"h-9 min-w-9 px-2.5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Toggle({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n  return (\n    <TogglePrimitive\n      data-slot=\"toggle\"\n      className={cn(toggleVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Toggle, toggleVariants }\n"
  },
  {
    "path": "apps/v4/examples/base/ui/tooltip.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nfunction TooltipProvider({\n  delay = 0,\n  ...props\n}: TooltipPrimitive.Provider.Props) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delay={delay}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n  return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n  className,\n  side = \"top\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 0,\n  children,\n  ...props\n}: TooltipPrimitive.Popup.Props &\n  Pick<\n    TooltipPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <TooltipPrimitive.Popup\n          data-slot=\"tooltip-content\"\n          className={cn(\n            \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        >\n          {children}\n          <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n        </TooltipPrimitive.Popup>\n      </TooltipPrimitive.Positioner>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/accordion.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\nimport { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n  return (\n    <AccordionPrimitive.Root\n      data-slot=\"accordion\"\n      className={cn(\"flex w-full flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n  return (\n    <AccordionPrimitive.Item\n      data-slot=\"accordion-item\"\n      className={cn(\"not-last:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionTrigger({\n  className,\n  children,\n  ...props\n}: AccordionPrimitive.Trigger.Props) {\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        data-slot=\"accordion-trigger\"\n        className={cn(\n          \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-start text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ms-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <ChevronDownIcon\n          data-slot=\"accordion-trigger-icon\"\n          className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n        />\n        <ChevronUpIcon\n          data-slot=\"accordion-trigger-icon\"\n          className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n        />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\nfunction AccordionContent({\n  className,\n  children,\n  ...props\n}: AccordionPrimitive.Panel.Props) {\n  return (\n    <AccordionPrimitive.Panel\n      data-slot=\"accordion-content\"\n      className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n      {...props}\n    >\n      <div\n        className={cn(\n          \"h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n          className\n        )}\n      >\n        {children}\n      </div>\n    </AccordionPrimitive.Panel>\n  )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/alert-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n  return (\n    <AlertDialogPrimitive.Backdrop\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  size = \"default\",\n  ...props\n}: AlertDialogPrimitive.Popup.Props & {\n  size?: \"default\" | \"sm\"\n}) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Popup\n        data-slot=\"alert-dialog-content\"\n        data-size={size}\n        className={cn(\n          \"group/alert-dialog-content fixed start-1/2 top-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm rtl:translate-x-1/2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\n        \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\n        \"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\n        \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  return (\n    <Button\n      data-slot=\"alert-dialog-action\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = \"outline\",\n  size = \"default\",\n  ...props\n}: AlertDialogPrimitive.Close.Props &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <AlertDialogPrimitive.Close\n      data-slot=\"alert-dialog-cancel\"\n      className={cn(className)}\n      render={<Button variant={variant} size={size} />}\n      {...props}\n    />\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst alertVariants = cva(\n  \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-start text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pe-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-card text-card-foreground\",\n        destructive:\n          \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-action\"\n      className={cn(\"absolute end-2 top-2\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/aspect-ratio.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\n\nfunction AspectRatio({\n  ratio,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & { ratio: number }) {\n  return (\n    <div\n      data-slot=\"aspect-ratio\"\n      style={\n        {\n          \"--ratio\": ratio,\n        } as React.CSSProperties\n      }\n      className={cn(\"relative aspect-(--ratio)\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { AspectRatio }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nfunction Avatar({\n  className,\n  size = \"default\",\n  ...props\n}: AvatarPrimitive.Root.Props & {\n  size?: \"default\" | \"sm\" | \"lg\"\n}) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(\n        \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\n        \"aspect-square size-full rounded-full object-cover\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: AvatarPrimitive.Fallback.Props) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"avatar-badge\"\n      className={cn(\n        \"absolute end-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n        \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n        \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n        \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroupCount({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Avatar,\n  AvatarImage,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarBadge,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/badge.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst badgeVariants = cva(\n  \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        secondary:\n          \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n        destructive:\n          \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n        outline:\n          \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n        ghost:\n          \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  render,\n  ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n  return useRender({\n    defaultTagName: \"span\",\n    props: mergeProps<\"span\">(\n      {\n        className: cn(badgeVariants({ variant }), className),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"badge\",\n      variant,\n    },\n  })\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/breadcrumb.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      aria-label=\"breadcrumb\"\n      data-slot=\"breadcrumb\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n  return (\n    <ol\n      data-slot=\"breadcrumb-list\"\n      className={cn(\n        \"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-item\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbLink({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"a\">) {\n  return useRender({\n    defaultTagName: \"a\",\n    props: mergeProps<\"a\">(\n      {\n        className: cn(\"transition-colors hover:text-foreground\", className),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"breadcrumb-link\",\n    },\n  })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-page\"\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      className={cn(\"font-normal text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\"[&>svg]:size-3.5\", className)}\n      {...props}\n    >\n      {children ?? <ChevronRightIcon className=\"rtl:rotate-180\" />}\n    </li>\n  )\n}\n\nfunction BreadcrumbEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"flex size-5 items-center justify-center [&>svg]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More</span>\n    </span>\n  )\n}\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/button-group.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { Separator } from \"@/examples/base/ui-rtl/separator\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst buttonGroupVariants = cva(\n  \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n  {\n    variants: {\n      orientation: {\n        horizontal:\n          \"*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-lg! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0\",\n        vertical:\n          \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"horizontal\",\n    },\n  }\n)\n\nfunction ButtonGroup({\n  className,\n  orientation,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"button-group\"\n      data-orientation={orientation}\n      className={cn(buttonGroupVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupText({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\">) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(\n          \"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"button-group-text\",\n    },\n  })\n}\n\nfunction ButtonGroupSeparator({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"button-group-separator\"\n      orientation={orientation}\n      className={cn(\n        \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n  buttonGroupVariants,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/button.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst buttonVariants = cva(\n  \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        outline:\n          \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n        secondary:\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n        ghost:\n          \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n        destructive:\n          \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default:\n          \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n        xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3\",\n        sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n        lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3\",\n        icon: \"size-8\",\n        \"icon-xs\":\n          \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n        \"icon-sm\":\n          \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n        \"icon-lg\": \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n  return (\n    <ButtonPrimitive\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/calendar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button, buttonVariants } from \"@/examples/base/ui-rtl/button\"\nimport {\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n  DayPicker,\n  getDefaultClassNames,\n  type DayButton,\n  type Locale,\n} from \"react-day-picker\"\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  locale,\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      locale={locale}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(locale?.code, { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"cn-calendar-dropdown-root relative rounded-(--cell-radius)\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute inset-0 bg-popover opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\",\n          props.showWeekNumber\n            ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-s-(--cell-radius)\"\n            : \"[&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius)\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"relative isolate z-0 rounded-s-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:end-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\n          \"relative isolate z-0 rounded-e-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:start-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_end\n        ),\n        today: cn(\n          \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <ChevronLeftIcon\n                className={cn(\"size-4 rtl:rotate-180\", className)}\n                {...props}\n              />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <ChevronRightIcon\n                className={cn(\"size-4 rtl:rotate-180\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n          )\n        },\n        DayButton: ({ ...props }) => (\n          <CalendarDayButton locale={locale} {...props} />\n        ),\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  locale,\n  ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString(locale?.code)}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/card.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\n\nfunction Card({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n  return (\n    <div\n      data-slot=\"card\"\n      data-size={size}\n      className={cn(\n        \"group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      className={cn(\n        \"cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn(\n        \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\n        \"flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardAction,\n  CardDescription,\n  CardContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/carousel.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nfunction Carousel({\n  orientation = \"horizontal\",\n  opts,\n  setApi,\n  plugins,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n  const [carouselRef, api] = useEmblaCarousel(\n    {\n      ...opts,\n      axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n    },\n    plugins\n  )\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n  const onSelect = React.useCallback((api: CarouselApi) => {\n    if (!api) return\n    setCanScrollPrev(api.canScrollPrev())\n    setCanScrollNext(api.canScrollNext())\n  }, [])\n\n  const scrollPrev = React.useCallback(() => {\n    api?.scrollPrev()\n  }, [api])\n\n  const scrollNext = React.useCallback(() => {\n    api?.scrollNext()\n  }, [api])\n\n  const handleKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === \"ArrowLeft\") {\n        event.preventDefault()\n        scrollPrev()\n      } else if (event.key === \"ArrowRight\") {\n        event.preventDefault()\n        scrollNext()\n      }\n    },\n    [scrollPrev, scrollNext]\n  )\n\n  React.useEffect(() => {\n    if (!api || !setApi) return\n    setApi(api)\n  }, [api, setApi])\n\n  React.useEffect(() => {\n    if (!api) return\n    onSelect(api)\n    api.on(\"reInit\", onSelect)\n    api.on(\"select\", onSelect)\n\n    return () => {\n      api?.off(\"select\", onSelect)\n    }\n  }, [api, onSelect])\n\n  return (\n    <CarouselContext.Provider\n      value={{\n        carouselRef,\n        api: api,\n        opts,\n        orientation:\n          orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n        scrollPrev,\n        scrollNext,\n        canScrollPrev,\n        canScrollNext,\n      }}\n    >\n      <div\n        onKeyDownCapture={handleKeyDown}\n        className={cn(\"relative\", className)}\n        role=\"region\"\n        aria-roledescription=\"carousel\"\n        data-slot=\"carousel\"\n        {...props}\n      >\n        {children}\n      </div>\n    </CarouselContext.Provider>\n  )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div\n      ref={carouselRef}\n      className=\"overflow-hidden\"\n      data-slot=\"carousel-content\"\n    >\n      <div\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ms-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      data-slot=\"carousel-item\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"ps-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CarouselPrevious({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-previous\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute touch-manipulation rounded-full\",\n        orientation === \"horizontal\"\n          ? \"-start-12 top-1/2 -translate-y-1/2\"\n          : \"start-1/2 -top-12 -translate-x-1/2 rotate-90 rtl:translate-x-1/2\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <ChevronLeftIcon className=\"rtl:rotate-180\" />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n}\n\nfunction CarouselNext({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-next\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute touch-manipulation rounded-full\",\n        orientation === \"horizontal\"\n          ? \"-end-12 top-1/2 -translate-y-1/2\"\n          : \"start-1/2 -bottom-12 -translate-x-1/2 rotate-90 rtl:translate-x-1/2\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <ChevronRightIcon className=\"rtl:rotate-180\" />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n}\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n  useCarousel,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/chart.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport * as RechartsPrimitive from \"recharts\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode\n    icon?: React.ComponentType\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  )\n}\n\ntype ChartContextProps = {\n  config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n  const context = React.useContext(ChartContext)\n\n  if (!context) {\n    throw new Error(\"useChart must be used within a <ChartContainer />\")\n  }\n\n  return context\n}\n\nfunction ChartContainer({\n  id,\n  className,\n  children,\n  config,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  config: ChartConfig\n  children: React.ComponentProps<\n    typeof RechartsPrimitive.ResponsiveContainer\n  >[\"children\"]\n}) {\n  const uniqueId = React.useId()\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-slot=\"chart\"\n        data-chart={chartId}\n        className={cn(\n          \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n          className\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([, config]) => config.theme || config.color\n  )\n\n  if (!colorConfig.length) {\n    return null\n  }\n\n  return (\n    <style\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color\n    return color ? `  --color-${key}: ${color};` : null\n  })\n  .join(\"\\n\")}\n}\n`\n          )\n          .join(\"\\n\"),\n      }}\n    />\n  )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n  active,\n  payload,\n  className,\n  indicator = \"dot\",\n  hideLabel = false,\n  hideIndicator = false,\n  label,\n  labelFormatter,\n  labelClassName,\n  formatter,\n  color,\n  nameKey,\n  labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n  React.ComponentProps<\"div\"> & {\n    hideLabel?: boolean\n    hideIndicator?: boolean\n    indicator?: \"line\" | \"dot\" | \"dashed\"\n    nameKey?: string\n    labelKey?: string\n  }) {\n  const { config } = useChart()\n\n  const tooltipLabel = React.useMemo(() => {\n    if (hideLabel || !payload?.length) {\n      return null\n    }\n\n    const [item] = payload\n    const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\n    const value =\n      !labelKey && typeof label === \"string\"\n        ? config[label as keyof typeof config]?.label || label\n        : itemConfig?.label\n\n    if (labelFormatter) {\n      return (\n        <div className={cn(\"font-medium\", labelClassName)}>\n          {labelFormatter(value, payload)}\n        </div>\n      )\n    }\n\n    if (!value) {\n      return null\n    }\n\n    return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n  }, [\n    label,\n    labelFormatter,\n    payload,\n    hideLabel,\n    labelClassName,\n    config,\n    labelKey,\n  ])\n\n  if (!active || !payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\n        \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n        className\n      )}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload\n          .filter((item) => item.type !== \"none\")\n          .map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\n            const indicatorColor = color || item.payload.fill || item.color\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                  indicator === \"dot\" && \"items-center\"\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n                            {\n                              \"h-2.5 w-2.5\": indicator === \"dot\",\n                              \"w-1\": indicator === \"line\",\n                              \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                                indicator === \"dashed\",\n                              \"my-0.5\": nestLabel && indicator === \"dashed\",\n                            }\n                          )}\n                          style={\n                            {\n                              \"--color-bg\": indicatorColor,\n                              \"--color-border\": indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        \"flex flex-1 justify-between leading-none\",\n                        nestLabel ? \"items-end\" : \"items-center\"\n                      )}\n                    >\n                      <div className=\"grid gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            )\n          })}\n      </div>\n    </div>\n  )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n  className,\n  hideIcon = false,\n  payload,\n  verticalAlign = \"bottom\",\n  nameKey,\n}: React.ComponentProps<\"div\"> &\n  Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n    hideIcon?: boolean\n    nameKey?: string\n  }) {\n  const { config } = useChart()\n\n  if (!payload?.length) {\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\n        \"flex items-center justify-center gap-4\",\n        verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n        className\n      )}\n    >\n      {payload\n        .filter((item) => item.type !== \"none\")\n        .map((item) => {\n          const key = `${nameKey || item.dataKey || \"value\"}`\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          )\n        })}\n    </div>\n  )\n}\n\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string\n) {\n  if (typeof payload !== \"object\" || payload === null) {\n    return undefined\n  }\n\n  const payloadPayload =\n    \"payload\" in payload &&\n    typeof payload.payload === \"object\" &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined\n\n  let configLabelKey: string = key\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === \"string\"\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config]\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/checkbox.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n      >\n        <CheckIcon />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/collapsible.tsx",
    "content": "\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"@base-ui/react/collapsible\"\n\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\n  return (\n    <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />\n  )\n}\n\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\n  return (\n    <CollapsiblePrimitive.Panel data-slot=\"collapsible-content\" {...props} />\n  )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/combobox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/base/ui-rtl/input-group\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"lucide-react\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n  return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Trigger.Props) {\n  return (\n    <ComboboxPrimitive.Trigger\n      data-slot=\"combobox-trigger\"\n      className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n      {...props}\n    >\n      {children}\n      <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n    </ComboboxPrimitive.Trigger>\n  )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n  return (\n    <ComboboxPrimitive.Clear\n      data-slot=\"combobox-clear\"\n      render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n      className={cn(className)}\n      {...props}\n    >\n      <XIcon className=\"pointer-events-none\" />\n    </ComboboxPrimitive.Clear>\n  )\n}\n\nfunction ComboboxInput({\n  className,\n  children,\n  disabled = false,\n  showTrigger = true,\n  showClear = false,\n  ...props\n}: ComboboxPrimitive.Input.Props & {\n  showTrigger?: boolean\n  showClear?: boolean\n}) {\n  return (\n    <InputGroup className={cn(\"w-auto\", className)}>\n      <ComboboxPrimitive.Input\n        render={<InputGroupInput disabled={disabled} />}\n        {...props}\n      />\n      <InputGroupAddon align=\"inline-end\">\n        {showTrigger && (\n          <InputGroupButton\n            size=\"icon-xs\"\n            variant=\"ghost\"\n            render={<ComboboxTrigger />}\n            data-slot=\"input-group-button\"\n            className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n            disabled={disabled}\n          />\n        )}\n        {showClear && <ComboboxClear disabled={disabled} />}\n      </InputGroupAddon>\n      {children}\n    </InputGroup>\n  )\n}\n\nfunction ComboboxContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 6,\n  align = \"start\",\n  alignOffset = 0,\n  anchor,\n  ...props\n}: ComboboxPrimitive.Popup.Props &\n  Pick<\n    ComboboxPrimitive.Positioner.Props,\n    \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n  >) {\n  return (\n    <ComboboxPrimitive.Portal>\n      <ComboboxPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        anchor={anchor}\n        className=\"isolate z-50\"\n      >\n        <ComboboxPrimitive.Popup\n          data-slot=\"combobox-content\"\n          data-chips={!!anchor}\n          className={cn(\n            \"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </ComboboxPrimitive.Positioner>\n    </ComboboxPrimitive.Portal>\n  )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n  return (\n    <ComboboxPrimitive.List\n      data-slot=\"combobox-list\"\n      className={cn(\n        \"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxItem({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Item.Props) {\n  return (\n    <ComboboxPrimitive.Item\n      data-slot=\"combobox-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ComboboxPrimitive.ItemIndicator\n        render={\n          <span className=\"pointer-events-none absolute end-2 flex size-4 items-center justify-center\" />\n        }\n      >\n        <CheckIcon className=\"pointer-events-none\" />\n      </ComboboxPrimitive.ItemIndicator>\n    </ComboboxPrimitive.Item>\n  )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n  return (\n    <ComboboxPrimitive.Group\n      data-slot=\"combobox-group\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxLabel({\n  className,\n  ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n  return (\n    <ComboboxPrimitive.GroupLabel\n      data-slot=\"combobox-label\"\n      className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n  return (\n    <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n  )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n  return (\n    <ComboboxPrimitive.Empty\n      data-slot=\"combobox-empty\"\n      className={cn(\n        \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxSeparator({\n  className,\n  ...props\n}: ComboboxPrimitive.Separator.Props) {\n  return (\n    <ComboboxPrimitive.Separator\n      data-slot=\"combobox-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChips({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n  ComboboxPrimitive.Chips.Props) {\n  return (\n    <ComboboxPrimitive.Chips\n      data-slot=\"combobox-chips\"\n      className={cn(\n        \"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChip({\n  className,\n  children,\n  showRemove = true,\n  ...props\n}: ComboboxPrimitive.Chip.Props & {\n  showRemove?: boolean\n}) {\n  return (\n    <ComboboxPrimitive.Chip\n      data-slot=\"combobox-chip\"\n      className={cn(\n        \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pe-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showRemove && (\n        <ComboboxPrimitive.ChipRemove\n          render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n          className=\"-ms-1 opacity-50 hover:opacity-100\"\n          data-slot=\"combobox-chip-remove\"\n        >\n          <XIcon className=\"pointer-events-none\" />\n        </ComboboxPrimitive.ChipRemove>\n      )}\n    </ComboboxPrimitive.Chip>\n  )\n}\n\nfunction ComboboxChipsInput({\n  className,\n  ...props\n}: ComboboxPrimitive.Input.Props) {\n  return (\n    <ComboboxPrimitive.Input\n      data-slot=\"combobox-chip-input\"\n      className={cn(\"min-w-16 flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction useComboboxAnchor() {\n  return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n  Combobox,\n  ComboboxInput,\n  ComboboxContent,\n  ComboboxList,\n  ComboboxItem,\n  ComboboxGroup,\n  ComboboxLabel,\n  ComboboxCollection,\n  ComboboxEmpty,\n  ComboboxSeparator,\n  ComboboxChips,\n  ComboboxChip,\n  ComboboxChipsInput,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/examples/base/ui-rtl/dialog\"\nimport { InputGroup, InputGroupAddon } from \"@/examples/base/ui-rtl/input-group\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { CheckIcon, SearchIcon } from \"lucide-react\"\n\nfunction Command({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n  return (\n    <CommandPrimitive\n      data-slot=\"command\"\n      className={cn(\n        \"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandDialog({\n  title = \"Command Palette\",\n  description = \"Search for a command to run...\",\n  children,\n  className,\n  showCloseButton = false,\n  ...props\n}: Omit<React.ComponentProps<typeof Dialog>, \"children\"> & {\n  title?: string\n  description?: string\n  className?: string\n  showCloseButton?: boolean\n  children: React.ReactNode\n}) {\n  return (\n    <Dialog {...props}>\n      <DialogHeader className=\"sr-only\">\n        <DialogTitle>{title}</DialogTitle>\n        <DialogDescription>{description}</DialogDescription>\n      </DialogHeader>\n      <DialogContent\n        className={cn(\n          \"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\",\n          className\n        )}\n        showCloseButton={showCloseButton}\n      >\n        {children}\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction CommandInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n  return (\n    <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n      <InputGroup className=\"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:ps-2!\">\n        <CommandPrimitive.Input\n          data-slot=\"command-input\"\n          className={cn(\n            \"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n            className\n          )}\n          {...props}\n        />\n        <InputGroupAddon>\n          <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n\nfunction CommandList({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n  return (\n    <CommandPrimitive.List\n      data-slot=\"command-list\"\n      className={cn(\n        \"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandEmpty({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n  return (\n    <CommandPrimitive.Empty\n      data-slot=\"command-empty\"\n      className={cn(\"py-6 text-center text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n  return (\n    <CommandPrimitive.Group\n      data-slot=\"command-group\"\n      className={cn(\n        \"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n  return (\n    <CommandPrimitive.Separator\n      data-slot=\"command-separator\"\n      className={cn(\"-mx-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n  return (\n    <CommandPrimitive.Item\n      data-slot=\"command-item\"\n      className={cn(\n        \"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <CheckIcon className=\"ms-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n    </CommandPrimitive.Item>\n  )\n}\n\nfunction CommandShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"command-shortcut\"\n      className={cn(\n        \"ms-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { ContextMenu as ContextMenuPrimitive } from \"@base-ui/react/context-menu\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\n  return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\n  return (\n    <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n  )\n}\n\nfunction ContextMenuTrigger({\n  className,\n  ...props\n}: ContextMenuPrimitive.Trigger.Props) {\n  return (\n    <ContextMenuPrimitive.Trigger\n      data-slot=\"context-menu-trigger\"\n      className={cn(\"select-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuContent({\n  className,\n  align = \"start\",\n  alignOffset = 4,\n  side = \"inline-end\",\n  sideOffset = 0,\n  ...props\n}: ContextMenuPrimitive.Popup.Props &\n  Pick<\n    ContextMenuPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <ContextMenuPrimitive.Portal>\n      <ContextMenuPrimitive.Positioner\n        className=\"isolate z-50 outline-none\"\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n      >\n        <ContextMenuPrimitive.Popup\n          data-slot=\"context-menu-content\"\n          className={cn(\n            \"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </ContextMenuPrimitive.Positioner>\n    </ContextMenuPrimitive.Portal>\n  )\n}\n\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\n  return (\n    <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n  )\n}\n\nfunction ContextMenuLabel({\n  className,\n  inset,\n  ...props\n}: ContextMenuPrimitive.GroupLabel.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.GroupLabel\n      data-slot=\"context-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:ps-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: ContextMenuPrimitive.Item.Props & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <ContextMenuPrimitive.Item\n      data-slot=\"context-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\n  return (\n    <ContextMenuPrimitive.SubmenuRoot data-slot=\"context-menu-sub\" {...props} />\n  )\n}\n\nfunction ContextMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.SubmenuTrigger\n      data-slot=\"context-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ms-auto rtl:rotate-180\" />\n    </ContextMenuPrimitive.SubmenuTrigger>\n  )\n}\n\nfunction ContextMenuSubContent({\n  ...props\n}: React.ComponentProps<typeof ContextMenuContent>) {\n  return (\n    <ContextMenuContent\n      data-slot=\"context-menu-sub-content\"\n      className=\"cn-menu-target cn-menu-translucent shadow-lg\"\n      side=\"inline-end\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: ContextMenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      data-slot=\"context-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute end-2\">\n        <ContextMenuPrimitive.CheckboxItemIndicator>\n          <CheckIcon />\n        </ContextMenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction ContextMenuRadioGroup({\n  ...props\n}: ContextMenuPrimitive.RadioGroup.Props) {\n  return (\n    <ContextMenuPrimitive.RadioGroup\n      data-slot=\"context-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: ContextMenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.RadioItem\n      data-slot=\"context-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute end-2\">\n        <ContextMenuPrimitive.RadioItemIndicator>\n          <CheckIcon />\n        </ContextMenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.RadioItem>\n  )\n}\n\nfunction ContextMenuSeparator({\n  className,\n  ...props\n}: ContextMenuPrimitive.Separator.Props) {\n  return (\n    <ContextMenuPrimitive.Separator\n      data-slot=\"context-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"context-menu-shortcut\"\n      className={cn(\n        \"ms-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ContextMenu,\n  ContextMenuTrigger,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuCheckboxItem,\n  ContextMenuRadioItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuGroup,\n  ContextMenuPortal,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuRadioGroup,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: DialogPrimitive.Backdrop.Props) {\n  return (\n    <DialogPrimitive.Backdrop\n      data-slot=\"dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: DialogPrimitive.Popup.Props & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal>\n      <DialogOverlay />\n      <DialogPrimitive.Popup\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"fixed start-1/2 top-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm rtl:translate-x-1/2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close\n            data-slot=\"dialog-close\"\n            render={\n              <Button\n                variant=\"ghost\"\n                className=\"absolute end-2 top-2\"\n                size=\"icon-sm\"\n              />\n            }\n          >\n            <XIcon />\n            <span className=\"sr-only\">Close</span>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Popup>\n    </DialogPortal>\n  )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-header\"\n      className={cn(\"flex flex-col gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogFooter({\n  className,\n  showCloseButton = false,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n          Close\n        </DialogPrimitive.Close>\n      )}\n    </div>\n  )\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn(\n        \"cn-font-heading text-base leading-none font-medium\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: DialogPrimitive.Description.Props) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\n        \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/direction.tsx",
    "content": "\"use client\"\n\nexport {\n  DirectionProvider,\n  useDirection,\n} from \"@base-ui/react/direction-provider\"\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/drawer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n  return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n  return (\n    <DrawerPortal data-slot=\"drawer-portal\">\n      <DrawerOverlay />\n      <DrawerPrimitive.Content\n        data-slot=\"drawer-content\"\n        className={cn(\n          \"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:start-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-e-xl data-[vaul-drawer-direction=left]:border-e data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:end-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-s-xl data-[vaul-drawer-direction=right]:border-s data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n        {children}\n      </DrawerPrimitive.Content>\n    </DrawerPortal>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\n        \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-start\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n  return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n  return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n  return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n  align = \"start\",\n  alignOffset = 0,\n  side = \"bottom\",\n  sideOffset = 4,\n  className,\n  ...props\n}: MenuPrimitive.Popup.Props &\n  Pick<\n    MenuPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <MenuPrimitive.Portal>\n      <MenuPrimitive.Positioner\n        className=\"isolate z-50 outline-none\"\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n      >\n        <MenuPrimitive.Popup\n          data-slot=\"dropdown-menu-content\"\n          className={cn(\n            \"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </MenuPrimitive.Positioner>\n    </MenuPrimitive.Portal>\n  )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n  return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: MenuPrimitive.GroupLabel.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.GroupLabel\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:ps-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: MenuPrimitive.Item.Props & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <MenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n  return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.SubmenuTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ms-auto rtl:rotate-180\" />\n    </MenuPrimitive.SubmenuTrigger>\n  )\n}\n\nfunction DropdownMenuSubContent({\n  align = \"start\",\n  alignOffset = -3,\n  side = \"inline-end\",\n  sideOffset = 0,\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n  return (\n    <DropdownMenuContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      align={align}\n      alignOffset={alignOffset}\n      side={side}\n      sideOffset={sideOffset}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-checkbox-item-indicator\"\n      >\n        <MenuPrimitive.CheckboxItemIndicator>\n          <CheckIcon />\n        </MenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n  return (\n    <MenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: MenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-radio-item-indicator\"\n      >\n        <MenuPrimitive.RadioItemIndicator>\n          <CheckIcon />\n        </MenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.RadioItem>\n  )\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: MenuPrimitive.Separator.Props) {\n  return (\n    <MenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        \"ms-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/empty.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty\"\n      className={cn(\n        \"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-header\"\n      className={cn(\"flex max-w-sm flex-col items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nconst emptyMediaVariants = cva(\n  \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction EmptyMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n  return (\n    <div\n      data-slot=\"empty-icon\"\n      data-variant={variant}\n      className={cn(emptyMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-title\"\n      className={cn(\n        \"cn-font-heading text-sm font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <div\n      data-slot=\"empty-description\"\n      className={cn(\n        \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-content\"\n      className={cn(\n        \"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Empty,\n  EmptyHeader,\n  EmptyTitle,\n  EmptyDescription,\n  EmptyContent,\n  EmptyMedia,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/field.tsx",
    "content": "\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Label } from \"@/examples/base/ui-rtl/label\"\nimport { Separator } from \"@/examples/base/ui-rtl/separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n  return (\n    <fieldset\n      data-slot=\"field-set\"\n      className={cn(\n        \"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLegend({\n  className,\n  variant = \"legend\",\n  ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n  return (\n    <legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\n        \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\n        \"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst fieldVariants = cva(\n  \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n  {\n    variants: {\n      orientation: {\n        vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n        horizontal:\n          \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n        responsive:\n          \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"vertical\",\n    },\n  }\n)\n\nfunction Field({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"field\"\n      data-orientation={orientation}\n      className={cn(fieldVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn(\n        \"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof Label>) {\n  return (\n    <Label\n      data-slot=\"field-label\"\n      className={cn(\n        \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n        \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-label\"\n      className={cn(\n        \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        \"text-start text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n        \"last:mt-0 nth-last-2:-mt-1\",\n        \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  children?: React.ReactNode\n}) {\n  return (\n    <div\n      data-slot=\"field-separator\"\n      data-content={!!children}\n      className={cn(\n        \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n        className\n      )}\n      {...props}\n    >\n      <Separator className=\"absolute inset-0 top-1/2\" />\n      {children && (\n        <span\n          className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n          data-slot=\"field-separator-content\"\n        >\n          {children}\n        </span>\n      )}\n    </div>\n  )\n}\n\nfunction FieldError({\n  className,\n  children,\n  errors,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  errors?: Array<{ message?: string } | undefined>\n}) {\n  const content = useMemo(() => {\n    if (children) {\n      return children\n    }\n\n    if (!errors?.length) {\n      return null\n    }\n\n    const uniqueErrors = [\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\n    ]\n\n    if (uniqueErrors?.length == 1) {\n      return uniqueErrors[0]?.message\n    }\n\n    return (\n      <ul className=\"ms-4 flex list-disc flex-col gap-1\">\n        {uniqueErrors.map(\n          (error, index) =>\n            error?.message && <li key={index}>{error.message}</li>\n        )}\n      </ul>\n    )\n  }, [children, errors])\n\n  if (!content) {\n    return null\n  }\n\n  return (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      className={cn(\"text-sm font-normal text-destructive\", className)}\n      {...props}\n    >\n      {content}\n    </div>\n  )\n}\n\nexport {\n  Field,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldContent,\n  FieldTitle,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/hover-card.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\"\n\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\n  return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n  return (\n    <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n  )\n}\n\nfunction HoverCardContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 4,\n  ...props\n}: PreviewCardPrimitive.Popup.Props &\n  Pick<\n    PreviewCardPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n      <PreviewCardPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <PreviewCardPrimitive.Popup\n          data-slot=\"hover-card-content\"\n          className={cn(\n            \"z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </PreviewCardPrimitive.Positioner>\n    </PreviewCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport { Textarea } from \"@/examples/base/ui-rtl/textarea\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-group\"\n      role=\"group\"\n      className={cn(\n        \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pe-1.5 has-[>[data-align=inline-start]]:[&>input]:ps-1.5\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupAddonVariants = cva(\n  \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      align: {\n        \"inline-start\":\n          \"order-first ps-2 has-[>button]:ms-[-0.3rem] has-[>kbd]:ms-[-0.15rem]\",\n        \"inline-end\":\n          \"order-last pe-2 has-[>button]:me-[-0.3rem] has-[>kbd]:me-[-0.15rem]\",\n        \"block-start\":\n          \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n        \"block-end\":\n          \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n      },\n    },\n    defaultVariants: {\n      align: \"inline-start\",\n    },\n  }\n)\n\nfunction InputGroupAddon({\n  className,\n  align = \"inline-start\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"input-group-addon\"\n      data-align={align}\n      className={cn(inputGroupAddonVariants({ align }), className)}\n      onClick={(e) => {\n        if ((e.target as HTMLElement).closest(\"button\")) {\n          return\n        }\n        e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n      }}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupButtonVariants = cva(\n  \"flex items-center gap-2 text-sm shadow-none\",\n  {\n    variants: {\n      size: {\n        xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n        sm: \"\",\n        \"icon-xs\":\n          \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n        \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n      },\n    },\n    defaultVariants: {\n      size: \"xs\",\n    },\n  }\n)\n\nfunction InputGroupButton({\n  className,\n  type = \"button\",\n  variant = \"ghost\",\n  size = \"xs\",\n  ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\" | \"type\"> &\n  VariantProps<typeof inputGroupButtonVariants> & {\n    type?: \"button\" | \"submit\" | \"reset\"\n  }) {\n  return (\n    <Button\n      type={type}\n      data-size={size}\n      variant={variant}\n      className={cn(inputGroupButtonVariants({ size }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      className={cn(\n        \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupInput({\n  className,\n  ...props\n}: React.ComponentProps<\"input\">) {\n  return (\n    <Input\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupTextarea({\n  className,\n  ...props\n}: React.ComponentProps<\"textarea\">) {\n  return (\n    <Textarea\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupInput,\n  InputGroupTextarea,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/input-otp.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        \"cn-input-otp flex items-center has-disabled:opacity-50\",\n        containerClassName\n      )}\n      spellCheck={false}\n      className={cn(\"disabled:cursor-not-allowed\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\n        \"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  index: number\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext)\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        \"relative flex size-8 items-center justify-center border-y border-e border-input text-sm transition-all outline-none first:rounded-s-lg first:border-s last:rounded-e-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-separator\"\n      className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n      role=\"separator\"\n      {...props}\n    >\n      <MinusIcon />\n    </div>\n  )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/input.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <InputPrimitive\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/item.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Separator } from \"@/examples/base/ui-rtl/separator\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      role=\"list\"\n      data-slot=\"item-group\"\n      className={cn(\n        \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"item-separator\"\n      orientation=\"horizontal\"\n      className={cn(\"my-2\", className)}\n      {...props}\n    />\n  )\n}\n\nconst itemVariants = cva(\n  \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\",\n  {\n    variants: {\n      variant: {\n        default: \"border-transparent\",\n        outline: \"border-border\",\n        muted: \"border-transparent bg-muted/50\",\n      },\n      size: {\n        default: \"gap-2.5 px-3 py-2.5\",\n        sm: \"gap-2.5 px-3 py-2.5\",\n        xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Item({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\"> & VariantProps<typeof itemVariants>) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(itemVariants({ variant, size, className })),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"item\",\n      variant,\n      size,\n    },\n  })\n}\n\nconst itemMediaVariants = cva(\n  \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"[&_svg:not([class*='size-'])]:size-4\",\n        image:\n          \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction ItemMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n  return (\n    <div\n      data-slot=\"item-media\"\n      data-variant={variant}\n      className={cn(itemMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-content\"\n      className={cn(\n        \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-title\"\n      className={cn(\n        \"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"item-description\"\n      className={cn(\n        \"line-clamp-2 text-start text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-actions\"\n      className={cn(\"flex items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-header\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-footer\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Item,\n  ItemMedia,\n  ItemContent,\n  ItemActions,\n  ItemGroup,\n  ItemSeparator,\n  ItemTitle,\n  ItemDescription,\n  ItemHeader,\n  ItemFooter,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/kbd.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      data-slot=\"kbd\"\n      className={cn(\n        \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <kbd\n      data-slot=\"kbd-group\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Kbd, KbdGroup }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n  return (\n    <label\n      data-slot=\"label\"\n      className={cn(\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/base/ui-rtl/dropdown-menu\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\nimport { Menubar as MenubarPrimitive } from \"@base-ui/react/menubar\"\nimport { CheckIcon } from \"lucide-react\"\n\nfunction Menubar({ className, ...props }: MenubarPrimitive.Props) {\n  return (\n    <MenubarPrimitive\n      data-slot=\"menubar\"\n      className={cn(\n        \"flex h-8 items-center gap-0.5 rounded-lg border p-[3px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\n  return <DropdownMenu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuGroup>) {\n  return <DropdownMenuGroup data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPortal>) {\n  return <DropdownMenuPortal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuTrigger>) {\n  return (\n    <DropdownMenuTrigger\n      data-slot=\"menubar-trigger\"\n      className={cn(\n        \"flex items-center rounded-sm px-1.5 py-[2px] text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarContent({\n  className,\n  align = \"start\",\n  alignOffset = -4,\n  sideOffset = 8,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n  return (\n    <DropdownMenuContent\n      data-slot=\"menubar-content\"\n      align={align}\n      alignOffset={alignOffset}\n      sideOffset={sideOffset}\n      className={cn(\n        \"cn-menu-target cn-menu-translucent min-w-36 rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof DropdownMenuItem>) {\n  return (\n    <DropdownMenuItem\n      data-slot=\"menubar-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/menubar-item gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.CheckboxItem\n      data-slot=\"menubar-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-7 pe-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\">\n        <MenuPrimitive.CheckboxItemIndicator>\n          <CheckIcon />\n        </MenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction MenubarRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {\n  return <DropdownMenuRadioGroup data-slot=\"menubar-radio-group\" {...props} />\n}\n\nfunction MenubarRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: MenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.RadioItem\n      data-slot=\"menubar-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-7 pe-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\">\n        <MenuPrimitive.RadioItemIndicator>\n          <CheckIcon />\n        </MenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.RadioItem>\n  )\n}\n\nfunction MenubarLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuLabel> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuLabel\n      data-slot=\"menubar-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-sm font-medium data-inset:ps-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSeparator>) {\n  return (\n    <DropdownMenuSeparator\n      data-slot=\"menubar-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarShortcut({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuShortcut>) {\n  return (\n    <DropdownMenuShortcut\n      data-slot=\"menubar-shortcut\"\n      className={cn(\n        \"ms-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSub>) {\n  return <DropdownMenuSub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuSubTrigger\n      data-slot=\"menubar-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSubContent>) {\n  return (\n    <DropdownMenuSubContent\n      data-slot=\"menubar-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent min-w-32 rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Menubar,\n  MenubarPortal,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarGroup,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarItem,\n  MenubarShortcut,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSub,\n  MenubarSubTrigger,\n  MenubarSubContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/native-select.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\ntype NativeSelectProps = Omit<React.ComponentProps<\"select\">, \"size\"> & {\n  size?: \"sm\" | \"default\"\n}\n\nfunction NativeSelect({\n  className,\n  size = \"default\",\n  ...props\n}: NativeSelectProps) {\n  return (\n    <div\n      className={cn(\n        \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n        className\n      )}\n      data-slot=\"native-select-wrapper\"\n      data-size={size}\n    >\n      <select\n        data-slot=\"native-select\"\n        data-size={size}\n        className=\"h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 ps-2.5 pe-8 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\"\n        {...props}\n      />\n      <ChevronDownIcon\n        className=\"pointer-events-none absolute end-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground select-none\"\n        aria-hidden=\"true\"\n        data-slot=\"native-select-icon\"\n      />\n    </div>\n  )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n  return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n  className,\n  ...props\n}: React.ComponentProps<\"optgroup\">) {\n  return (\n    <optgroup\n      data-slot=\"native-select-optgroup\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/navigation-menu.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"@base-ui/react/navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nfunction NavigationMenu({\n  align = \"start\",\n  className,\n  children,\n  ...props\n}: NavigationMenuPrimitive.Root.Props &\n  Pick<NavigationMenuPrimitive.Positioner.Props, \"align\">) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      className={cn(\n        \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <NavigationMenuPositioner align={align} />\n    </NavigationMenuPrimitive.Root>\n  )\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"group flex flex-1 list-none items-center justify-center gap-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg bg-background px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\"\n)\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: NavigationMenuPrimitive.Trigger.Props) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}{\" \"}\n      <ChevronDownIcon\n        className=\"relative top-px ms-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\"\n        aria-hidden=\"true\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  )\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: NavigationMenuPrimitive.Content.Props) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"data-ending-style:data-activation-direction=left:translate-x-[50%] rtl:data-ending-style:data-activation-direction=left:-translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] rtl:data-ending-style:data-activation-direction=right:-translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] rtl:data-starting-style:data-activation-direction=left:-translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] rtl:data-starting-style:data-activation-direction=right:-translate-x-[50%] h-full w-auto p-1 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuPositioner({\n  className,\n  side = \"bottom\",\n  sideOffset = 8,\n  align = \"start\",\n  alignOffset = 0,\n  ...props\n}: NavigationMenuPrimitive.Positioner.Props) {\n  return (\n    <NavigationMenuPrimitive.Portal>\n      <NavigationMenuPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        className={cn(\n          \"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:start-0 data-[side=bottom]:before:end-0 data-[side=bottom]:before:top-[-10px]\",\n          className\n        )}\n        {...props}\n      >\n        <NavigationMenuPrimitive.Popup className=\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\">\n          <NavigationMenuPrimitive.Viewport className=\"relative size-full overflow-hidden\" />\n        </NavigationMenuPrimitive.Popup>\n      </NavigationMenuPrimitive.Positioner>\n    </NavigationMenuPrimitive.Portal>\n  )\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: NavigationMenuPrimitive.Link.Props) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\n        \"flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {\n  return (\n    <NavigationMenuPrimitive.Icon\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-ss-sm bg-border shadow-md\" />\n    </NavigationMenuPrimitive.Icon>\n  )\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuIndicator,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n  NavigationMenuPositioner,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/pagination.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport {\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  MoreHorizontalIcon,\n} from \"lucide-react\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      role=\"navigation\"\n      aria-label=\"pagination\"\n      data-slot=\"pagination\"\n      className={cn(\"mx-auto flex w-full justify-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationContent({\n  className,\n  ...props\n}: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"pagination-content\"\n      className={cn(\"flex items-center gap-0.5\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n  return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n  isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n  React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n  className,\n  isActive,\n  size = \"icon\",\n  ...props\n}: PaginationLinkProps) {\n  return (\n    <Button\n      variant={isActive ? \"outline\" : \"ghost\"}\n      size={size}\n      className={cn(className)}\n      nativeButton={false}\n      render={\n        <a\n          aria-current={isActive ? \"page\" : undefined}\n          data-slot=\"pagination-link\"\n          data-active={isActive}\n          {...props}\n        />\n      }\n    />\n  )\n}\n\nfunction PaginationPrevious({\n  className,\n  text = \"Previous\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to previous page\"\n      size=\"default\"\n      className={cn(\"ps-1.5!\", className)}\n      {...props}\n    >\n      <ChevronLeftIcon data-icon=\"inline-start\" className=\"rtl:rotate-180\" />\n      <span className=\"hidden sm:block\">{text}</span>\n    </PaginationLink>\n  )\n}\n\nfunction PaginationNext({\n  className,\n  text = \"Next\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to next page\"\n      size=\"default\"\n      className={cn(\"pe-1.5!\", className)}\n      {...props}\n    >\n      <span className=\"hidden sm:block\">{text}</span>\n      <ChevronRightIcon data-icon=\"inline-end\" className=\"rtl:rotate-180\" />\n    </PaginationLink>\n  )\n}\n\nfunction PaginationEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden\n      data-slot=\"pagination-ellipsis\"\n      className={cn(\n        \"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More pages</span>\n    </span>\n  )\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\"\n\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  alignOffset = 0,\n  side = \"bottom\",\n  sideOffset = 4,\n  ...props\n}: PopoverPrimitive.Popup.Props &\n  Pick<\n    PopoverPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <PopoverPrimitive.Popup\n          data-slot=\"popover-content\"\n          className={cn(\n            \"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </PopoverPrimitive.Positioner>\n    </PopoverPrimitive.Portal>\n  )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-header\"\n      className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n  return (\n    <PopoverPrimitive.Title\n      data-slot=\"popover-title\"\n      className={cn(\"cn-font-heading font-medium\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverDescription({\n  className,\n  ...props\n}: PopoverPrimitive.Description.Props) {\n  return (\n    <PopoverPrimitive.Description\n      data-slot=\"popover-description\"\n      className={cn(\"text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/progress.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Progress as ProgressPrimitive } from \"@base-ui/react/progress\"\n\nfunction Progress({\n  className,\n  children,\n  value,\n  ...props\n}: ProgressPrimitive.Root.Props) {\n  return (\n    <ProgressPrimitive.Root\n      value={value}\n      data-slot=\"progress\"\n      className={cn(\"flex flex-wrap gap-3\", className)}\n      {...props}\n    >\n      {children}\n      <ProgressTrack>\n        <ProgressIndicator />\n      </ProgressTrack>\n    </ProgressPrimitive.Root>\n  )\n}\n\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\n  return (\n    <ProgressPrimitive.Track\n      className={cn(\n        \"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted\",\n        className\n      )}\n      data-slot=\"progress-track\"\n      {...props}\n    />\n  )\n}\n\nfunction ProgressIndicator({\n  className,\n  ...props\n}: ProgressPrimitive.Indicator.Props) {\n  return (\n    <ProgressPrimitive.Indicator\n      data-slot=\"progress-indicator\"\n      className={cn(\"h-full bg-primary transition-all\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\n  return (\n    <ProgressPrimitive.Label\n      className={cn(\"text-sm font-medium\", className)}\n      data-slot=\"progress-label\"\n      {...props}\n    />\n  )\n}\n\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\n  return (\n    <ProgressPrimitive.Value\n      className={cn(\n        \"ms-auto text-sm text-muted-foreground tabular-nums\",\n        className\n      )}\n      data-slot=\"progress-value\"\n      {...props}\n    />\n  )\n}\n\nexport {\n  Progress,\n  ProgressTrack,\n  ProgressIndicator,\n  ProgressLabel,\n  ProgressValue,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/radio-group.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\"\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\"\n\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\n  return (\n    <RadioGroupPrimitive\n      data-slot=\"radio-group\"\n      className={cn(\"grid w-full gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\n  return (\n    <RadioPrimitive.Root\n      data-slot=\"radio-group-item\"\n      className={cn(\n        \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <RadioPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"flex size-4 items-center justify-center\"\n      >\n        <span className=\"absolute start-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground rtl:translate-x-1/2\" />\n      </RadioPrimitive.Indicator>\n    </RadioPrimitive.Root>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/resizable.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nfunction ResizablePanelGroup({\n  className,\n  ...props\n}: ResizablePrimitive.GroupProps) {\n  return (\n    <ResizablePrimitive.Group\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: ResizablePrimitive.SeparatorProps & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.Separator\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:start-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:start-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 rtl:after:translate-x-1/2 rtl:aria-[orientation=horizontal]:after:-translate-x-0 [&[aria-orientation=horizontal]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\" />\n      )}\n    </ResizablePrimitive.Separator>\n  )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/scroll-area.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nfunction ScrollArea({\n  className,\n  children,\n  ...props\n}: ScrollAreaPrimitive.Root.Props) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn(\"relative\", className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        data-slot=\"scroll-area-viewport\"\n        className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  )\n}\n\nfunction ScrollBar({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n  return (\n    <ScrollAreaPrimitive.Scrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      data-orientation={orientation}\n      orientation={orientation}\n      className={cn(\n        \"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-s data-vertical:border-s-transparent\",\n        className\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Thumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"relative flex-1 rounded-full bg-border\"\n      />\n    </ScrollAreaPrimitive.Scrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n  return (\n    <SelectPrimitive.Group\n      data-slot=\"select-group\"\n      className={cn(\"scroll-my-1 p-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n  return (\n    <SelectPrimitive.Value\n      data-slot=\"select-value\"\n      className={cn(\"flex flex-1 text-start\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: SelectPrimitive.Trigger.Props & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 ps-2.5 pe-2 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon\n        render={\n          <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n        }\n      />\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  side = \"bottom\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 0,\n  alignItemWithTrigger = true,\n  ...props\n}: SelectPrimitive.Popup.Props &\n  Pick<\n    SelectPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n  >) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        alignItemWithTrigger={alignItemWithTrigger}\n        className=\"isolate z-50\"\n      >\n        <SelectPrimitive.Popup\n          data-slot=\"select-content\"\n          data-align-trigger={alignItemWithTrigger}\n          className={cn(\n            \"cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        >\n          <SelectScrollUpButton />\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\n          <SelectScrollDownButton />\n        </SelectPrimitive.Popup>\n      </SelectPrimitive.Positioner>\n    </SelectPrimitive.Portal>\n  )\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: SelectPrimitive.GroupLabel.Props) {\n  return (\n    <SelectPrimitive.GroupLabel\n      data-slot=\"select-label\"\n      className={cn(\"px-1.5 py-1 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: SelectPrimitive.Item.Props) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n        className\n      )}\n      {...props}\n    >\n      <SelectPrimitive.ItemText className=\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\">\n        {children}\n      </SelectPrimitive.ItemText>\n      <SelectPrimitive.ItemIndicator\n        render={\n          <span className=\"pointer-events-none absolute end-2 flex size-4 items-center justify-center\" />\n        }\n      >\n        <CheckIcon className=\"pointer-events-none\" />\n      </SelectPrimitive.ItemIndicator>\n    </SelectPrimitive.Item>\n  )\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: SelectPrimitive.Separator.Props) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n  return (\n    <SelectPrimitive.ScrollUpArrow\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronUpIcon />\n    </SelectPrimitive.ScrollUpArrow>\n  )\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n  return (\n    <SelectPrimitive.ScrollDownArrow\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronDownIcon />\n    </SelectPrimitive.ScrollDownArrow>\n  )\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/separator.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nfunction Separator({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: SeparatorPrimitive.Props) {\n  return (\n    <SeparatorPrimitive\n      data-slot=\"separator\"\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Separator }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\n\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n  return (\n    <SheetPrimitive.Backdrop\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  showCloseButton = true,\n  ...props\n}: SheetPrimitive.Popup.Props & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n  showCloseButton?: boolean\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Popup\n        data-slot=\"sheet-content\"\n        data-side={side}\n        className={cn(\n          \"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-e data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-s data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm rtl:data-[side=left]:data-ending-style:-translate-x-[-2.5rem] rtl:data-[side=left]:data-starting-style:-translate-x-[-2.5rem] rtl:data-[side=right]:data-ending-style:-translate-x-[2.5rem] rtl:data-[side=right]:data-starting-style:-translate-x-[2.5rem]\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <SheetPrimitive.Close\n            data-slot=\"sheet-close\"\n            render={\n              <Button\n                variant=\"ghost\"\n                className=\"absolute end-3 top-3\"\n                size=\"icon-sm\"\n              />\n            }\n          >\n            <XIcon />\n            <span className=\"sr-only\">Close</span>\n          </SheetPrimitive.Close>\n        )}\n      </SheetPrimitive.Popup>\n    </SheetPortal>\n  )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn(\"flex flex-col gap-0.5 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: SheetPrimitive.Description.Props) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useIsMobile } from \"@/examples/base/hooks/use-mobile\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Button } from \"@/examples/base/ui-rtl/button\"\nimport { Input } from \"@/examples/base/ui-rtl/input\"\nimport { Separator } from \"@/examples/base/ui-rtl/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/examples/base/ui-rtl/sheet\"\nimport { Skeleton } from \"@/examples/base/ui-rtl/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/base/ui-rtl/tooltip\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n  state: \"expanded\" | \"collapsed\"\n  open: boolean\n  setOpen: (open: boolean) => void\n  openMobile: boolean\n  setOpenMobile: (open: boolean) => void\n  isMobile: boolean\n  toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n  const context = React.useContext(SidebarContext)\n  if (!context) {\n    throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n  }\n\n  return context\n}\n\nfunction SidebarProvider({\n  defaultOpen = true,\n  open: openProp,\n  onOpenChange: setOpenProp,\n  className,\n  style,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  defaultOpen?: boolean\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}) {\n  const isMobile = useIsMobile()\n  const [openMobile, setOpenMobile] = React.useState(false)\n\n  // This is the internal state of the sidebar.\n  // We use openProp and setOpenProp for control from outside the component.\n  const [_open, _setOpen] = React.useState(defaultOpen)\n  const open = openProp ?? _open\n  const setOpen = React.useCallback(\n    (value: boolean | ((value: boolean) => boolean)) => {\n      const openState = typeof value === \"function\" ? value(open) : value\n      if (setOpenProp) {\n        setOpenProp(openState)\n      } else {\n        _setOpen(openState)\n      }\n\n      // This sets the cookie to keep the sidebar state.\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n    },\n    [setOpenProp, open]\n  )\n\n  // Helper to toggle the sidebar.\n  const toggleSidebar = React.useCallback(() => {\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n  }, [isMobile, setOpen, setOpenMobile])\n\n  // Adds a keyboard shortcut to toggle the sidebar.\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n        (event.metaKey || event.ctrlKey)\n      ) {\n        event.preventDefault()\n        toggleSidebar()\n      }\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n    return () => window.removeEventListener(\"keydown\", handleKeyDown)\n  }, [toggleSidebar])\n\n  // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n  // This makes it easier to style the sidebar with Tailwind classes.\n  const state = open ? \"expanded\" : \"collapsed\"\n\n  const contextValue = React.useMemo<SidebarContextProps>(\n    () => ({\n      state,\n      open,\n      setOpen,\n      isMobile,\n      openMobile,\n      setOpenMobile,\n      toggleSidebar,\n    }),\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n  )\n\n  return (\n    <SidebarContext.Provider value={contextValue}>\n      <div\n        data-slot=\"sidebar-wrapper\"\n        style={\n          {\n            \"--sidebar-width\": SIDEBAR_WIDTH,\n            \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n            ...style,\n          } as React.CSSProperties\n        }\n        className={cn(\n          \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    </SidebarContext.Provider>\n  )\n}\n\nfunction Sidebar({\n  side = \"left\",\n  variant = \"sidebar\",\n  collapsible = \"offcanvas\",\n  className,\n  children,\n  dir,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  side?: \"left\" | \"right\"\n  variant?: \"sidebar\" | \"floating\" | \"inset\"\n  collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n  if (collapsible === \"none\") {\n    return (\n      <div\n        data-slot=\"sidebar\"\n        className={cn(\n          \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n\n  if (isMobile) {\n    return (\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n        <SheetContent\n          dir={dir}\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar\"\n          data-mobile=\"true\"\n          className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n          style={\n            {\n              \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n            } as React.CSSProperties\n          }\n          side={side}\n        >\n          <SheetHeader className=\"sr-only\">\n            <SheetTitle>Sidebar</SheetTitle>\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n          </SheetHeader>\n          <div className=\"flex h-full w-full flex-col\">{children}</div>\n        </SheetContent>\n      </Sheet>\n    )\n  }\n\n  return (\n    <div\n      className=\"group peer hidden text-sidebar-foreground md:block\"\n      data-state={state}\n      data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n      data-variant={variant}\n      data-side={side}\n      data-slot=\"sidebar\"\n    >\n      {/* This is what handles the sidebar gap on desktop */}\n      <div\n        data-slot=\"sidebar-gap\"\n        className={cn(\n          \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n          \"group-data-[collapsible=offcanvas]:w-0\",\n          \"group-data-[side=right]:rotate-180\",\n          variant === \"floating\" || variant === \"inset\"\n            ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n        )}\n      />\n      <div\n        data-slot=\"sidebar-container\"\n        data-side={side}\n        className={cn(\n          \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n          // Adjust the padding for floating and inset variants.\n          variant === \"floating\" || variant === \"inset\"\n            ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-e group-data-[side=right]:border-s\",\n          className\n        )}\n        {...props}\n      >\n        <div\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar-inner\"\n          className=\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\"\n        >\n          {children}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction SidebarTrigger({\n  className,\n  onClick,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <Button\n      data-sidebar=\"trigger\"\n      data-slot=\"sidebar-trigger\"\n      variant=\"ghost\"\n      size=\"icon-sm\"\n      className={cn(className)}\n      onClick={(event) => {\n        onClick?.(event)\n        toggleSidebar()\n      }}\n      {...props}\n    >\n      <PanelLeftIcon className=\"rtl:rotate-180\" />\n      <span className=\"sr-only\">Toggle Sidebar</span>\n    </Button>\n  )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <button\n      data-sidebar=\"rail\"\n      data-slot=\"sidebar-rail\"\n      aria-label=\"Toggle Sidebar\"\n      tabIndex={-1}\n      onClick={toggleSidebar}\n      title=\"Toggle Sidebar\"\n      className={cn(\n        \"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n        \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize rtl:in-data-[side=left]:cursor-e-resize rtl:in-data-[side=right]:cursor-w-resize\",\n        \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize rtl:[[data-side=left][data-state=collapsed]_&]:cursor-w-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize rtl:[[data-side=right][data-state=collapsed]_&]:cursor-e-resize\",\n        \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:start-full hover:group-data-[collapsible=offcanvas]:bg-sidebar rtl:group-data-[collapsible=offcanvas]:-translate-x-0\",\n        \"[[data-side=left][data-collapsible=offcanvas]_&]:-end-2\",\n        \"[[data-side=right][data-collapsible=offcanvas]_&]:-start-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n  return (\n    <main\n      data-slot=\"sidebar-inset\"\n      className={cn(\n        \"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof Input>) {\n  return (\n    <Input\n      data-slot=\"sidebar-input\"\n      data-sidebar=\"input\"\n      className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-header\"\n      data-sidebar=\"header\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-footer\"\n      data-sidebar=\"footer\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"sidebar-separator\"\n      data-sidebar=\"separator\"\n      className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-content\"\n      data-sidebar=\"content\"\n      className={cn(\n        \"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group\"\n      data-sidebar=\"group\"\n      className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupLabel({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\"> & React.ComponentProps<\"div\">) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(\n          \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-group-label\",\n      sidebar: \"group-label\",\n    },\n  })\n}\n\nfunction SidebarGroupAction({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"button\"> & React.ComponentProps<\"button\">) {\n  return useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(\n          \"absolute end-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-group-action\",\n      sidebar: \"group-action\",\n    },\n  })\n}\n\nfunction SidebarGroupContent({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group-content\"\n      data-sidebar=\"group-content\"\n      className={cn(\"w-full text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu\"\n      data-sidebar=\"menu\"\n      className={cn(\"flex w-full min-w-0 flex-col gap-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-item\"\n      data-sidebar=\"menu-item\"\n      className={cn(\"group/menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst sidebarMenuButtonVariants = cva(\n  \"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-start text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n  {\n    variants: {\n      variant: {\n        default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n        outline:\n          \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n      },\n      size: {\n        default: \"h-8 text-sm\",\n        sm: \"h-7 text-xs\",\n        lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction SidebarMenuButton({\n  render,\n  isActive = false,\n  variant = \"default\",\n  size = \"default\",\n  tooltip,\n  className,\n  ...props\n}: useRender.ComponentProps<\"button\"> &\n  React.ComponentProps<\"button\"> & {\n    isActive?: boolean\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\n  } & VariantProps<typeof sidebarMenuButtonVariants>) {\n  const { isMobile, state } = useSidebar()\n  const comp = useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n      },\n      props\n    ),\n    render: !tooltip ? render : <TooltipTrigger render={render} />,\n    state: {\n      slot: \"sidebar-menu-button\",\n      sidebar: \"menu-button\",\n      size,\n      active: isActive,\n    },\n  })\n\n  if (!tooltip) {\n    return comp\n  }\n\n  if (typeof tooltip === \"string\") {\n    tooltip = {\n      children: tooltip,\n    }\n  }\n\n  return (\n    <Tooltip>\n      {comp}\n      <TooltipContent\n        side=\"right\"\n        align=\"center\"\n        hidden={state !== \"collapsed\" || isMobile}\n        {...tooltip}\n      />\n    </Tooltip>\n  )\n}\n\nfunction SidebarMenuAction({\n  className,\n  render,\n  showOnHover = false,\n  ...props\n}: useRender.ComponentProps<\"button\"> &\n  React.ComponentProps<\"button\"> & {\n    showOnHover?: boolean\n  }) {\n  return useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(\n          \"absolute end-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n          showOnHover &&\n            \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-menu-action\",\n      sidebar: \"menu-action\",\n    },\n  })\n}\n\nfunction SidebarMenuBadge({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-menu-badge\"\n      data-sidebar=\"menu-badge\"\n      className={cn(\n        \"pointer-events-none absolute end-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSkeleton({\n  className,\n  showIcon = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showIcon?: boolean\n}) {\n  // Random width between 50 to 90%.\n  const [width] = React.useState(() => {\n    return `${Math.floor(Math.random() * 40) + 50}%`\n  })\n\n  return (\n    <div\n      data-slot=\"sidebar-menu-skeleton\"\n      data-sidebar=\"menu-skeleton\"\n      className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n      {...props}\n    >\n      {showIcon && (\n        <Skeleton\n          className=\"size-4 rounded-md\"\n          data-sidebar=\"menu-skeleton-icon\"\n        />\n      )}\n      <Skeleton\n        className=\"h-4 max-w-(--skeleton-width) flex-1\"\n        data-sidebar=\"menu-skeleton-text\"\n        style={\n          {\n            \"--skeleton-width\": width,\n          } as React.CSSProperties\n        }\n      />\n    </div>\n  )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu-sub\"\n      data-sidebar=\"menu-sub\"\n      className={cn(\n        \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-s border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden rtl:-translate-x-px\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubItem({\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-sub-item\"\n      data-sidebar=\"menu-sub-item\"\n      className={cn(\"group/menu-sub-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubButton({\n  render,\n  size = \"md\",\n  isActive = false,\n  className,\n  ...props\n}: useRender.ComponentProps<\"a\"> &\n  React.ComponentProps<\"a\"> & {\n    size?: \"sm\" | \"md\"\n    isActive?: boolean\n  }) {\n  return useRender({\n    defaultTagName: \"a\",\n    props: mergeProps<\"a\">(\n      {\n        className: cn(\n          \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs rtl:translate-x-px data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-menu-sub-button\",\n      sidebar: \"menu-sub-button\",\n      size,\n      active: isActive,\n    },\n  })\n}\n\nexport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarSeparator,\n  SidebarTrigger,\n  useSidebar,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/skeleton.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\"\n\nfunction Slider({\n  className,\n  defaultValue,\n  value,\n  min = 0,\n  max = 100,\n  ...props\n}: SliderPrimitive.Root.Props) {\n  const _values = React.useMemo(\n    () =>\n      Array.isArray(value)\n        ? value\n        : Array.isArray(defaultValue)\n          ? defaultValue\n          : [min, max],\n    [value, defaultValue, min, max]\n  )\n\n  return (\n    <SliderPrimitive.Root\n      className={cn(\"data-horizontal:w-full data-vertical:h-full\", className)}\n      data-slot=\"slider\"\n      defaultValue={defaultValue}\n      value={value}\n      min={min}\n      max={max}\n      thumbAlignment=\"edge\"\n      {...props}\n    >\n      <SliderPrimitive.Control className=\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\">\n        <SliderPrimitive.Track\n          data-slot=\"slider-track\"\n          className=\"relative grow overflow-hidden rounded-full bg-muted select-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\"\n        >\n          <SliderPrimitive.Indicator\n            data-slot=\"slider-range\"\n            className=\"bg-primary select-none data-horizontal:h-full data-vertical:w-full\"\n          />\n        </SliderPrimitive.Track>\n        {Array.from({ length: _values.length }, (_, index) => (\n          <SliderPrimitive.Thumb\n            data-slot=\"slider-thumb\"\n            key={index}\n            className=\"relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50\"\n          />\n        ))}\n      </SliderPrimitive.Control>\n    </SliderPrimitive.Root>\n  )\n}\n\nexport { Slider }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/sonner.tsx",
    "content": "\"use client\"\n\nimport {\n  CircleCheckIcon,\n  InfoIcon,\n  Loader2Icon,\n  OctagonXIcon,\n  TriangleAlertIcon,\n} from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = \"system\" } = useTheme()\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps[\"theme\"]}\n      className=\"toaster group\"\n      icons={{\n        success: <CircleCheckIcon className=\"size-4\" />,\n        info: <InfoIcon className=\"size-4\" />,\n        warning: <TriangleAlertIcon className=\"size-4\" />,\n        error: <OctagonXIcon className=\"size-4\" />,\n        loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n      }}\n      style={\n        {\n          \"--normal-bg\": \"var(--popover)\",\n          \"--normal-text\": \"var(--popover-foreground)\",\n          \"--normal-border\": \"var(--border)\",\n          \"--border-radius\": \"var(--radius)\",\n        } as React.CSSProperties\n      }\n      toastOptions={{\n        classNames: {\n          toast: \"cn-toast\",\n        },\n      }}\n      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/spinner.tsx",
    "content": "import { cn } from \"@/examples/base/lib/utils\"\nimport { Loader2Icon } from \"lucide-react\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <Loader2Icon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/switch.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\"\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: SwitchPrimitive.Root.Props & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      data-size={size}\n      className={cn(\n        \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] rtl:group-data-[size=default]/switch:data-checked:-translate-x-[calc(100%-2px)] rtl:group-data-[size=sm]/switch:data-checked:-translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 rtl:group-data-[size=default]/switch:data-unchecked:-translate-x-0 rtl:group-data-[size=sm]/switch:data-unchecked:-translate-x-0 dark:data-unchecked:bg-foreground\"\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n  return (\n    <div\n      data-slot=\"table-container\"\n      className=\"relative w-full overflow-x-auto\"\n    >\n      <table\n        data-slot=\"table\"\n        className={cn(\"w-full caption-bottom text-sm\", className)}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n  return (\n    <thead\n      data-slot=\"table-header\"\n      className={cn(\"[&_tr]:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n  return (\n    <tbody\n      data-slot=\"table-body\"\n      className={cn(\"[&_tr:last-child]:border-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n  return (\n    <tfoot\n      data-slot=\"table-footer\"\n      className={cn(\n        \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n  return (\n    <tr\n      data-slot=\"table-row\"\n      className={cn(\n        \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n  return (\n    <th\n      data-slot=\"table-head\"\n      className={cn(\n        \"h-10 px-2 text-start align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pe-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n  return (\n    <td\n      data-slot=\"table-cell\"\n      className={cn(\n        \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pe-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCaption({\n  className,\n  ...props\n}: React.ComponentProps<\"caption\">) {\n  return (\n    <caption\n      data-slot=\"table-caption\"\n      className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/tabs.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: TabsPrimitive.Root.Props) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      data-orientation={orientation}\n      className={cn(\n        \"group/tabs flex gap-2 data-horizontal:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst tabsListVariants = cva(\n  \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-muted\",\n        line: \"gap-1 bg-transparent\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction TabsList({\n  className,\n  variant = \"default\",\n  ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={cn(tabsListVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n  return (\n    <TabsPrimitive.Tab\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n        \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n        \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-end-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n  return (\n    <TabsPrimitive.Panel\n      data-slot=\"tabs-content\"\n      className={cn(\"flex-1 text-sm outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/textarea.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/toggle-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { toggleVariants } from \"@/examples/base/ui-rtl/toggle\"\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"@base-ui/react/toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }\n>({\n  size: \"default\",\n  variant: \"default\",\n  spacing: 0,\n  orientation: \"horizontal\",\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  spacing = 0,\n  orientation = \"horizontal\",\n  children,\n  ...props\n}: ToggleGroupPrimitive.Props &\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }) {\n  return (\n    <ToggleGroupPrimitive\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      data-spacing={spacing}\n      data-orientation={orientation}\n      style={{ \"--gap\": spacing } as React.CSSProperties}\n      className={cn(\n        \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider\n        value={{ variant, size, spacing, orientation }}\n      >\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive>\n  )\n}\n\nfunction ToggleGroupItem({\n  className,\n  children,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n  const context = React.useContext(ToggleGroupContext)\n\n  return (\n    <TogglePrimitive\n      data-slot=\"toggle-group-item\"\n      data-variant={context.variant || variant}\n      data-size={context.size || size}\n      data-spacing={context.spacing}\n      className={cn(\n        \"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-s-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-e-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-s-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-s group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </TogglePrimitive>\n  )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/toggle.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst toggleVariants = cva(\n  \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline: \"border border-input bg-transparent hover:bg-muted\",\n      },\n      size: {\n        default: \"h-8 min-w-8 px-2\",\n        sm: \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]\",\n        lg: \"h-9 min-w-9 px-2.5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Toggle({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n  return (\n    <TogglePrimitive\n      data-slot=\"toggle\"\n      className={cn(toggleVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Toggle, toggleVariants }\n"
  },
  {
    "path": "apps/v4/examples/base/ui-rtl/tooltip.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/base/lib/utils\"\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nfunction TooltipProvider({\n  delay = 0,\n  ...props\n}: TooltipPrimitive.Provider.Props) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delay={delay}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n  return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n  className,\n  side = \"top\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 0,\n  children,\n  ...props\n}: TooltipPrimitive.Popup.Props &\n  Pick<\n    TooltipPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <TooltipPrimitive.Popup\n          data-slot=\"tooltip-content\"\n          className={cn(\n            \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        >\n          {children}\n          <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:-start-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:-end-1 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n        </TooltipPrimitive.Popup>\n      </TooltipPrimitive.Positioner>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "apps/v4/examples/radix/accordion-basic.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/radix/ui/accordion\"\n\nconst items = [\n  {\n    value: \"item-1\",\n    trigger: \"How do I reset my password?\",\n    content:\n      \"Click on 'Forgot Password' on the login page, enter your email address, and we'll send you a link to reset your password. The link will expire in 24 hours.\",\n  },\n  {\n    value: \"item-2\",\n    trigger: \"Can I change my subscription plan?\",\n    content:\n      \"Yes, you can upgrade or downgrade your plan at any time from your account settings. Changes will be reflected in your next billing cycle.\",\n  },\n  {\n    value: \"item-3\",\n    trigger: \"What payment methods do you accept?\",\n    content:\n      \"We accept all major credit cards, PayPal, and bank transfers. All payments are processed securely through our payment partners.\",\n  },\n]\n\nexport function AccordionBasic() {\n  return (\n    <Accordion\n      type=\"single\"\n      collapsible\n      defaultValue=\"item-1\"\n      className=\"max-w-lg\"\n    >\n      {items.map((item) => (\n        <AccordionItem key={item.value} value={item.value}>\n          <AccordionTrigger>{item.trigger}</AccordionTrigger>\n          <AccordionContent>{item.content}</AccordionContent>\n        </AccordionItem>\n      ))}\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/accordion-borders.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/radix/ui/accordion\"\n\nconst items = [\n  {\n    value: \"billing\",\n    trigger: \"How does billing work?\",\n    content:\n      \"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members.\",\n  },\n  {\n    value: \"security\",\n    trigger: \"Is my data secure?\",\n    content:\n      \"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols.\",\n  },\n  {\n    value: \"integration\",\n    trigger: \"What integrations do you support?\",\n    content:\n      \"We integrate with 500+ popular tools including Slack, Zapier, Salesforce, HubSpot, and more. You can also build custom integrations using our REST API and webhooks.\",\n  },\n]\n\nexport default function AccordionBorders() {\n  return (\n    <Accordion\n      type=\"single\"\n      collapsible\n      className=\"max-w-lg rounded-lg border\"\n      defaultValue=\"billing\"\n    >\n      {items.map((item) => (\n        <AccordionItem\n          key={item.value}\n          value={item.value}\n          className=\"border-b px-4 last:border-b-0\"\n        >\n          <AccordionTrigger>{item.trigger}</AccordionTrigger>\n          <AccordionContent>{item.content}</AccordionContent>\n        </AccordionItem>\n      ))}\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/accordion-card.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/radix/ui/accordion\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui/card\"\n\nconst items = [\n  {\n    value: \"plans\",\n    trigger: \"What subscription plans do you offer?\",\n    content:\n      \"We offer three subscription tiers: Starter ($9/month), Professional ($29/month), and Enterprise ($99/month). Each plan includes increasing storage limits, API access, priority support, and team collaboration features.\",\n  },\n  {\n    value: \"billing\",\n    trigger: \"How does billing work?\",\n    content:\n      \"Billing occurs automatically at the start of each billing cycle. We accept all major credit cards, PayPal, and ACH transfers for enterprise customers. You'll receive an invoice via email after each payment.\",\n  },\n  {\n    value: \"cancel\",\n    trigger: \"How do I cancel my subscription?\",\n    content:\n      \"You can cancel your subscription anytime from your account settings. There are no cancellation fees or penalties. Your access will continue until the end of your current billing period.\",\n  },\n]\n\nexport default function AccordionCard() {\n  return (\n    <Card className=\"w-full max-w-sm\">\n      <CardHeader>\n        <CardTitle>Subscription & Billing</CardTitle>\n        <CardDescription>\n          Common questions about your account, plans, payments and\n          cancellations.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Accordion type=\"single\" collapsible defaultValue=\"plans\">\n          {items.map((item) => (\n            <AccordionItem key={item.value} value={item.value}>\n              <AccordionTrigger>{item.trigger}</AccordionTrigger>\n              <AccordionContent>{item.content}</AccordionContent>\n            </AccordionItem>\n          ))}\n        </Accordion>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/accordion-demo.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/radix/ui/accordion\"\n\nexport default function AccordionDemo() {\n  return (\n    <Accordion\n      type=\"single\"\n      collapsible\n      defaultValue=\"shipping\"\n      className=\"max-w-lg\"\n    >\n      <AccordionItem value=\"shipping\">\n        <AccordionTrigger>What are your shipping options?</AccordionTrigger>\n        <AccordionContent>\n          We offer standard (5-7 days), express (2-3 days), and overnight\n          shipping. Free shipping on international orders.\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"returns\">\n        <AccordionTrigger>What is your return policy?</AccordionTrigger>\n        <AccordionContent>\n          Returns accepted within 30 days. Items must be unused and in original\n          packaging. Refunds processed within 5-7 business days.\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"support\">\n        <AccordionTrigger>How can I contact customer support?</AccordionTrigger>\n        <AccordionContent>\n          Reach us via email, live chat, or phone. We respond within 24 hours\n          during business days.\n        </AccordionContent>\n      </AccordionItem>\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/accordion-disabled.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/radix/ui/accordion\"\n\nexport default function AccordionDisabled() {\n  return (\n    <Accordion type=\"single\" collapsible className=\"w-full\">\n      <AccordionItem value=\"item-1\">\n        <AccordionTrigger>Can I access my account history?</AccordionTrigger>\n        <AccordionContent>\n          Yes, you can view your complete account history including all\n          transactions, plan changes, and support tickets in the Account History\n          section of your dashboard.\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"item-2\" disabled>\n        <AccordionTrigger>Premium feature information</AccordionTrigger>\n        <AccordionContent>\n          This section contains information about premium features. Upgrade your\n          plan to access this content.\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"item-3\">\n        <AccordionTrigger>How do I update my email address?</AccordionTrigger>\n        <AccordionContent>\n          You can update your email address in your account settings.\n          You&apos;ll receive a verification email at your new address to\n          confirm the change.\n        </AccordionContent>\n      </AccordionItem>\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/accordion-multiple.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/radix/ui/accordion\"\n\nconst items = [\n  {\n    value: \"notifications\",\n    trigger: \"Notification Settings\",\n    content:\n      \"Manage how you receive notifications. You can enable email alerts for updates or push notifications for mobile devices.\",\n  },\n  {\n    value: \"privacy\",\n    trigger: \"Privacy & Security\",\n    content:\n      \"Control your privacy settings and security preferences. Enable two-factor authentication, manage connected devices, review active sessions, and configure data sharing preferences. You can also download your data or delete your account.\",\n  },\n  {\n    value: \"billing\",\n    trigger: \"Billing & Subscription\",\n    content:\n      \"View your current plan, payment history, and upcoming invoices. Update your payment method, change your subscription tier, or cancel your subscription.\",\n  },\n]\n\nexport function AccordionMultiple() {\n  return (\n    <Accordion\n      type=\"multiple\"\n      className=\"max-w-lg\"\n      defaultValue={[\"notifications\"]}\n    >\n      {items.map((item) => (\n        <AccordionItem key={item.value} value={item.value}>\n          <AccordionTrigger>{item.trigger}</AccordionTrigger>\n          <AccordionContent>{item.content}</AccordionContent>\n        </AccordionItem>\n      ))}\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/accordion-rtl.tsx",
    "content": "\"use client\"\n\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/examples/radix/ui-rtl/accordion\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      question1: \"How do I reset my password?\",\n      answer1:\n        \"Click on 'Forgot Password' on the login page, enter your email address, and we'll send you a link to reset your password. \",\n      question2: \"Can I change my subscription plan?\",\n      answer2:\n        \"Yes, you can upgrade or downgrade your plan at any time from your account settings. Changes will be reflected in your next billing cycle.\",\n      question3: \"What payment methods do you accept?\",\n      answer3:\n        \"We accept all major credit cards, PayPal, and bank transfers. All payments are processed securely through our payment partners.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      question1: \"كيف يمكنني إعادة تعيين كلمة المرور؟\",\n      answer1:\n        \"انقر على 'نسيت كلمة المرور' في صفحة تسجيل الدخول، أدخل عنوان بريدك الإلكتروني، وسنرسل لك رابطًا لإعادة تعيين كلمة المرور. سينتهي صلاحية الرابط خلال 24 ساعة.\",\n      question2: \"هل يمكنني تغيير خطة الاشتراك الخاصة بي؟\",\n      answer2:\n        \"نعم، يمكنك ترقية أو تخفيض خطتك في أي وقت من إعدادات حسابك. ستظهر التغييرات في دورة الفوترة التالية.\",\n      question3: \"ما هي طرق الدفع التي تقبلونها؟\",\n      answer3:\n        \"نقبل جميع بطاقات الائتمان الرئيسية و PayPal والتحويلات المصرفية. تتم معالجة جميع المدفوعات بأمان من خلال شركاء الدفع لدينا.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      question1: \"איך אני מאפס את הסיסמה שלי?\",\n      answer1:\n        \"לחץ על 'שכחתי סיסמה' בעמוד ההתחברות, הזן את כתובת האימייל שלך, ונשלח לך קישור לאיפוס הסיסמה. הקישור יפוג תוך 24 שעות.\",\n      question2: \"האם אני יכול לשנות את תוכנית המנוי שלי?\",\n      answer2:\n        \"כן, אתה יכול לשדרג או להוריד את התוכנית שלך בכל עת מההגדרות של החשבון שלך. השינויים יבואו לידי ביטוי במחזור החיוב הבא.\",\n      question3: \"אילו אמצעי תשלום אתם מקבלים?\",\n      answer3: \"אנו מקבלים כרטיסי אשראי, PayPal והעברות בנקאיות.\",\n    },\n  },\n}\n\nconst items = [\n  {\n    value: \"item-1\",\n    questionKey: \"question1\" as const,\n    answerKey: \"answer1\" as const,\n  },\n  {\n    value: \"item-2\",\n    questionKey: \"question2\" as const,\n    answerKey: \"answer2\" as const,\n  },\n  {\n    value: \"item-3\",\n    questionKey: \"question3\" as const,\n    answerKey: \"answer3\" as const,\n  },\n] as const\n\nexport function AccordionRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Accordion\n      type=\"single\"\n      collapsible\n      defaultValue=\"item-1\"\n      className=\"max-w-md\"\n    >\n      {items.map((item) => (\n        <AccordionItem key={item.value} value={item.value}>\n          <AccordionTrigger>{t[item.questionKey]}</AccordionTrigger>\n          <AccordionContent>{t[item.answerKey]}</AccordionContent>\n        </AccordionItem>\n      ))}\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-action.tsx",
    "content": "import {\n  Alert,\n  AlertAction,\n  AlertDescription,\n  AlertTitle,\n} from \"@/examples/radix/ui/alert\"\nimport { Button } from \"@/examples/radix/ui/button\"\n\nexport default function AlertActionExample() {\n  return (\n    <Alert className=\"max-w-md\">\n      <AlertTitle>Dark mode is now available</AlertTitle>\n      <AlertDescription>\n        Enable it under your profile settings to get started.\n      </AlertDescription>\n      <AlertAction>\n        <Button size=\"xs\" variant=\"default\">\n          Enable\n        </Button>\n      </AlertAction>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-basic.tsx",
    "content": "import { Alert, AlertDescription, AlertTitle } from \"@/examples/radix/ui/alert\"\nimport { CheckCircle2Icon } from \"lucide-react\"\n\nexport default function AlertBasic() {\n  return (\n    <Alert className=\"max-w-md\">\n      <CheckCircle2Icon />\n      <AlertTitle>Account updated successfully</AlertTitle>\n      <AlertDescription>\n        Your profile information has been saved. Changes will be reflected\n        immediately.\n      </AlertDescription>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-colors.tsx",
    "content": "import { Alert, AlertDescription, AlertTitle } from \"@/examples/radix/ui/alert\"\nimport { AlertTriangleIcon } from \"lucide-react\"\n\nexport default function AlertColors() {\n  return (\n    <Alert className=\"max-w-md border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-50\">\n      <AlertTriangleIcon />\n      <AlertTitle>Your subscription will expire in 3 days.</AlertTitle>\n      <AlertDescription>\n        Renew now to avoid service interruption or upgrade to a paid plan to\n        continue using the service.\n      </AlertDescription>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-demo.tsx",
    "content": "import { Alert, AlertDescription, AlertTitle } from \"@/examples/radix/ui/alert\"\nimport { CheckCircle2Icon, InfoIcon } from \"lucide-react\"\n\nexport default function AlertDemo() {\n  return (\n    <div className=\"grid w-full max-w-md items-start gap-4\">\n      <Alert>\n        <CheckCircle2Icon />\n        <AlertTitle>Payment successful</AlertTitle>\n        <AlertDescription>\n          Your payment of $29.99 has been processed. A receipt has been sent to\n          your email address.\n        </AlertDescription>\n      </Alert>\n      <Alert>\n        <InfoIcon />\n        <AlertTitle>New feature available</AlertTitle>\n        <AlertDescription>\n          We&apos;ve added dark mode support. You can enable it in your account\n          settings.\n        </AlertDescription>\n      </Alert>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-destructive.tsx",
    "content": "import { Alert, AlertDescription, AlertTitle } from \"@/examples/radix/ui/alert\"\nimport { AlertCircleIcon } from \"lucide-react\"\n\nexport default function AlertDestructive() {\n  return (\n    <Alert variant=\"destructive\" className=\"max-w-md\">\n      <AlertCircleIcon />\n      <AlertTitle>Payment failed</AlertTitle>\n      <AlertDescription>\n        Your payment could not be processed. Please check your payment method\n        and try again.\n      </AlertDescription>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-dialog-basic.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/radix/ui/alert-dialog\"\nimport { Button } from \"@/examples/radix/ui/button\"\n\nexport function AlertDialogBasic() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>\n        <Button variant=\"outline\">Show Dialog</Button>\n      </AlertDialogTrigger>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n          <AlertDialogDescription>\n            This action cannot be undone. This will permanently delete your\n            account and remove your data from our servers.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction>Continue</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-dialog-demo.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/radix/ui/alert-dialog\"\nimport { Button } from \"@/examples/radix/ui/button\"\n\nexport default function AlertDialogDemo() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>\n        <Button variant=\"outline\">Show Dialog</Button>\n      </AlertDialogTrigger>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n          <AlertDialogDescription>\n            This action cannot be undone. This will permanently delete your\n            account from our servers.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction>Continue</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-dialog-destructive.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/radix/ui/alert-dialog\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Trash2Icon } from \"lucide-react\"\n\nexport function AlertDialogDestructive() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>\n        <Button variant=\"destructive\">Delete Chat</Button>\n      </AlertDialogTrigger>\n      <AlertDialogContent size=\"sm\">\n        <AlertDialogHeader>\n          <AlertDialogMedia className=\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\">\n            <Trash2Icon />\n          </AlertDialogMedia>\n          <AlertDialogTitle>Delete chat?</AlertDialogTitle>\n          <AlertDialogDescription>\n            This will permanently delete this chat conversation. View{\" \"}\n            <a href=\"#\">Settings</a> delete any memories saved during this chat.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel variant=\"outline\">Cancel</AlertDialogCancel>\n          <AlertDialogAction variant=\"destructive\">Delete</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-dialog-media.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/radix/ui/alert-dialog\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { CircleFadingPlusIcon } from \"lucide-react\"\n\nexport function AlertDialogWithMedia() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>\n        <Button variant=\"outline\">Share Project</Button>\n      </AlertDialogTrigger>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogMedia>\n            <CircleFadingPlusIcon />\n          </AlertDialogMedia>\n          <AlertDialogTitle>Share this project?</AlertDialogTitle>\n          <AlertDialogDescription>\n            Anyone with the link will be able to view and edit this project.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction>Share</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-dialog-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/radix/ui-rtl/alert-dialog\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { BluetoothIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      showDialog: \"Show Dialog\",\n      showDialogSm: \"Show Dialog (sm)\",\n      title: \"Are you absolutely sure?\",\n      description:\n        \"This action cannot be undone. This will permanently delete your account from our servers.\",\n      cancel: \"Cancel\",\n      continue: \"Continue\",\n      smallTitle: \"Allow accessory to connect?\",\n      smallDescription:\n        \"Do you want to allow the USB accessory to connect to this device?\",\n      dontAllow: \"Don't allow\",\n      allow: \"Allow\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      showDialog: \"إظهار الحوار\",\n      showDialogSm: \"إظهار الحوار (صغير)\",\n      title: \"هل أنت متأكد تمامًا؟\",\n      description:\n        \"لا يمكن التراجع عن هذا الإجراء. سيؤدي هذا إلى حذف حسابك نهائيًا من خوادمنا.\",\n      cancel: \"إلغاء\",\n      continue: \"متابعة\",\n      smallTitle: \"السماح للملحق بالاتصال؟\",\n      smallDescription: \"هل تريد السماح لملحق USB بالاتصال بهذا الجهاز؟\",\n      dontAllow: \"عدم السماح\",\n      allow: \"السماح\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      showDialog: \"הצג דיאלוג\",\n      showDialogSm: \"הצג דיאלוג (קטן)\",\n      title: \"האם אתה בטוח לחלוטין?\",\n      description:\n        \"פעולה זו לא ניתנת לביטול. זה ימחק לצמיתות את החשבון שלך מהשרתים שלנו.\",\n      cancel: \"ביטול\",\n      continue: \"המשך\",\n      smallTitle: \"לאפשר להתקן להתחבר?\",\n      smallDescription: \"האם אתה רוצה לאפשר להתקן USB להתחבר למכשיר זה?\",\n      dontAllow: \"אל תאפשר\",\n      allow: \"אפשר\",\n    },\n  },\n}\n\nexport function AlertDialogRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex gap-4\" dir={dir}>\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">{t.showDialog}</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent\n          dir={dir}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <AlertDialogHeader>\n            <AlertDialogTitle>{t.title}</AlertDialogTitle>\n            <AlertDialogDescription>{t.description}</AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>{t.cancel}</AlertDialogCancel>\n            <AlertDialogAction>{t.continue}</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">{t.showDialogSm}</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent\n          size=\"sm\"\n          dir={dir}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <AlertDialogHeader>\n            <AlertDialogMedia>\n              <BluetoothIcon />\n            </AlertDialogMedia>\n            <AlertDialogTitle>{t.smallTitle}</AlertDialogTitle>\n            <AlertDialogDescription>\n              {t.smallDescription}\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>{t.dontAllow}</AlertDialogCancel>\n            <AlertDialogAction>{t.allow}</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-dialog-small-media.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/radix/ui/alert-dialog\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { BluetoothIcon } from \"lucide-react\"\n\nexport function AlertDialogSmallWithMedia() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>\n        <Button variant=\"outline\">Show Dialog</Button>\n      </AlertDialogTrigger>\n\n      <AlertDialogContent size=\"sm\">\n        <AlertDialogHeader>\n          <AlertDialogMedia>\n            <BluetoothIcon />\n          </AlertDialogMedia>\n          <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n          <AlertDialogDescription>\n            Do you want to allow the USB accessory to connect to this device?\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n          <AlertDialogAction>Allow</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-dialog-small.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/examples/radix/ui/alert-dialog\"\nimport { Button } from \"@/examples/radix/ui/button\"\n\nexport function AlertDialogSmall() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>\n        <Button variant=\"outline\">Show Dialog</Button>\n      </AlertDialogTrigger>\n      <AlertDialogContent size=\"sm\">\n        <AlertDialogHeader>\n          <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n          <AlertDialogDescription>\n            Do you want to allow the USB accessory to connect to this device?\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n          <AlertDialogAction>Allow</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/alert-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/examples/radix/ui-rtl/alert\"\nimport { CheckCircle2Icon, InfoIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      paymentTitle: \"Payment successful\",\n      paymentDescription:\n        \"Your payment of $29.99 has been processed. A receipt has been sent to your email address.\",\n      featureTitle: \"New feature available\",\n      featureDescription:\n        \"We've added dark mode support. You can enable it in your account settings.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      paymentTitle: \"تم الدفع بنجاح\",\n      paymentDescription:\n        \"تمت معالجة دفعتك البالغة 29.99 دولارًا. تم إرسال إيصال إلى عنوان بريدك الإلكتروني.\",\n      featureTitle: \"ميزة جديدة متاحة\",\n      featureDescription:\n        \"لقد أضفنا دعم الوضع الداكن. يمكنك تفعيله في إعدادات حسابك.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      paymentTitle: \"התשלום בוצע בהצלחה\",\n      paymentDescription:\n        \"התשלום שלך בסך 29.99 דולר עובד. קבלה נשלחה לכתובת האימייל שלך.\",\n      featureTitle: \"תכונה חדשה זמינה\",\n      featureDescription:\n        \"הוספנו תמיכה במצב כהה. אתה יכול להפעיל אותו בהגדרות החשבון שלך.\",\n    },\n  },\n}\n\nconst alerts = [\n  {\n    icon: CheckCircle2Icon,\n    titleKey: \"paymentTitle\" as const,\n    descriptionKey: \"paymentDescription\" as const,\n  },\n  {\n    icon: InfoIcon,\n    titleKey: \"featureTitle\" as const,\n    descriptionKey: \"featureDescription\" as const,\n  },\n] as const\n\nexport function AlertRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"grid w-full max-w-md items-start gap-4\" dir={dir}>\n      {alerts.map((alert, index) => {\n        const Icon = alert.icon\n        return (\n          <Alert key={index}>\n            <Icon />\n            <AlertTitle>{t[alert.titleKey]}</AlertTitle>\n            <AlertDescription>{t[alert.descriptionKey]}</AlertDescription>\n          </Alert>\n        )\n      })}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/aspect-ratio-demo.tsx",
    "content": "import Image from \"next/image\"\nimport { AspectRatio } from \"@/examples/radix/ui/aspect-ratio\"\n\nexport default function AspectRatioDemo() {\n  return (\n    <div className=\"w-full max-w-sm\">\n      <AspectRatio ratio={16 / 9} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/aspect-ratio-portrait.tsx",
    "content": "import Image from \"next/image\"\nimport { AspectRatio } from \"@/examples/radix/ui/aspect-ratio\"\n\nexport function AspectRatioPortrait() {\n  return (\n    <div className=\"w-full max-w-[10rem]\">\n      <AspectRatio ratio={9 / 16} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/aspect-ratio-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Image from \"next/image\"\nimport { AspectRatio } from \"@/examples/radix/ui-rtl/aspect-ratio\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      caption: \"Beautiful landscape\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      caption: \"منظر طبيعي جميل\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      caption: \"נוף יפה\",\n    },\n  },\n}\n\nexport function AspectRatioRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <figure className=\"w-full max-w-sm\" dir={dir}>\n      <AspectRatio ratio={16 / 9} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n      <figcaption className=\"mt-2 text-center text-sm text-muted-foreground\">\n        {t.caption}\n      </figcaption>\n    </figure>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/aspect-ratio-square.tsx",
    "content": "import Image from \"next/image\"\nimport { AspectRatio } from \"@/examples/radix/ui/aspect-ratio\"\n\nexport function AspectRatioSquare() {\n  return (\n    <div className=\"w-full max-w-[12rem]\">\n      <AspectRatio ratio={1 / 1} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-badge-icon.tsx",
    "content": "import {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/examples/radix/ui/avatar\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport function AvatarBadgeIconExample() {\n  return (\n    <Avatar className=\"grayscale\">\n      <AvatarImage src=\"https://github.com/pranathip.png\" alt=\"@pranathip\" />\n      <AvatarFallback>PP</AvatarFallback>\n      <AvatarBadge>\n        <PlusIcon />\n      </AvatarBadge>\n    </Avatar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-badge.tsx",
    "content": "import {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/examples/radix/ui/avatar\"\n\nexport function AvatarWithBadge() {\n  return (\n    <Avatar>\n      <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n      <AvatarFallback>CN</AvatarFallback>\n      <AvatarBadge className=\"bg-green-600 dark:bg-green-800\" />\n    </Avatar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-basic.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\n\nexport default function AvatarDemo() {\n  return (\n    <Avatar>\n      <AvatarImage\n        src=\"https://github.com/shadcn.png\"\n        alt=\"@shadcn\"\n        className=\"grayscale\"\n      />\n      <AvatarFallback>CN</AvatarFallback>\n    </Avatar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-demo.tsx",
    "content": "import {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/examples/radix/ui/avatar\"\n\nexport default function AvatarDemo() {\n  return (\n    <div className=\"flex flex-row flex-wrap items-center gap-6 md:gap-12\">\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/shadcn.png\"\n          alt=\"@shadcn\"\n          className=\"grayscale\"\n        />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n        <AvatarBadge className=\"bg-green-600 dark:bg-green-800\" />\n      </Avatar>\n      <AvatarGroup className=\"grayscale\">\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>+3</AvatarGroupCount>\n      </AvatarGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-dropdown.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\n\nexport function AvatarDropdown() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\">\n          <Avatar>\n            <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"shadcn\" />\n            <AvatarFallback>CN</AvatarFallback>\n          </Avatar>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-32\">\n        <DropdownMenuGroup>\n          <DropdownMenuItem>Profile</DropdownMenuItem>\n          <DropdownMenuItem>Billing</DropdownMenuItem>\n          <DropdownMenuItem>Settings</DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem variant=\"destructive\">Log out</DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-group-count-icon.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/examples/radix/ui/avatar\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport function AvatarGroupCountIconExample() {\n  return (\n    <AvatarGroup className=\"grayscale\">\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage src=\"https://github.com/maxleiter.png\" alt=\"@maxleiter\" />\n        <AvatarFallback>LR</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n      </Avatar>\n      <AvatarGroupCount>\n        <PlusIcon />\n      </AvatarGroupCount>\n    </AvatarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-group-count.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/examples/radix/ui/avatar\"\n\nexport function AvatarGroupCountExample() {\n  return (\n    <AvatarGroup className=\"grayscale\">\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage src=\"https://github.com/maxleiter.png\" alt=\"@maxleiter\" />\n        <AvatarFallback>LR</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n      </Avatar>\n      <AvatarGroupCount>+3</AvatarGroupCount>\n    </AvatarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-group.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarImage,\n} from \"@/examples/radix/ui/avatar\"\n\nexport function AvatarGroupExample() {\n  return (\n    <AvatarGroup className=\"grayscale\">\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage src=\"https://github.com/maxleiter.png\" alt=\"@maxleiter\" />\n        <AvatarFallback>LR</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n      </Avatar>\n    </AvatarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/examples/radix/ui-rtl/avatar\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      moreUsers: \"+3\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      moreUsers: \"+٣\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      moreUsers: \"+3\",\n    },\n  },\n}\n\nexport function AvatarRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div\n      className=\"flex flex-row flex-wrap items-center gap-6 md:gap-12\"\n      dir={dir}\n    >\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/shadcn.png\"\n          alt=\"@shadcn\"\n          className=\"grayscale\"\n        />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n        <AvatarBadge className=\"bg-green-600 dark:bg-green-800\" />\n      </Avatar>\n      <AvatarGroup className=\"grayscale\">\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>{t.moreUsers}</AvatarGroupCount>\n      </AvatarGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/avatar-size.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\n\nexport function AvatarSizeExample() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2 grayscale\">\n      <Avatar size=\"sm\">\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar size=\"lg\">\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/badge-colors.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\n\nexport function BadgeCustomColors() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Badge className=\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\">\n        Blue\n      </Badge>\n      <Badge className=\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\">\n        Green\n      </Badge>\n      <Badge className=\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\">\n        Sky\n      </Badge>\n      <Badge className=\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\">\n        Purple\n      </Badge>\n      <Badge className=\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\">\n        Red\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/badge-demo.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\n\nexport default function BadgeDemo() {\n  return (\n    <div className=\"flex w-full flex-wrap justify-center gap-2\">\n      <Badge>Badge</Badge>\n      <Badge variant=\"secondary\">Secondary</Badge>\n      <Badge variant=\"destructive\">Destructive</Badge>\n      <Badge variant=\"outline\">Outline</Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/badge-icon.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\nimport { BadgeCheck, BookmarkIcon } from \"lucide-react\"\n\nexport function BadgeWithIconLeft() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Badge variant=\"secondary\">\n        <BadgeCheck data-icon=\"inline-start\" />\n        Verified\n      </Badge>\n      <Badge variant=\"outline\">\n        Bookmark\n        <BookmarkIcon data-icon=\"inline-end\" />\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/badge-link.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nexport function BadgeAsLink() {\n  return (\n    <Badge asChild>\n      <a href=\"#link\">\n        Open Link <ArrowUpRightIcon data-icon=\"inline-end\" />\n      </a>\n    </Badge>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/badge-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Badge } from \"@/examples/radix/ui-rtl/badge\"\nimport { BadgeCheck, BookmarkIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      badge: \"Badge\",\n      secondary: \"Secondary\",\n      destructive: \"Destructive\",\n      outline: \"Outline\",\n      verified: \"Verified\",\n      bookmark: \"Bookmark\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      badge: \"شارة\",\n      secondary: \"ثانوي\",\n      destructive: \"مدمر\",\n      outline: \"مخطط\",\n      verified: \"متحقق\",\n      bookmark: \"إشارة مرجعية\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      badge: \"תג\",\n      secondary: \"משני\",\n      destructive: \"הרסני\",\n      outline: \"קווי מתאר\",\n      verified: \"מאומת\",\n      bookmark: \"סימנייה\",\n    },\n  },\n}\n\nexport function BadgeRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex w-full flex-wrap justify-center gap-2\" dir={dir}>\n      <Badge>{t.badge}</Badge>\n      <Badge variant=\"secondary\">{t.secondary}</Badge>\n      <Badge variant=\"destructive\">{t.destructive}</Badge>\n      <Badge variant=\"outline\">{t.outline}</Badge>\n      <Badge variant=\"secondary\">\n        <BadgeCheck data-icon=\"inline-start\" />\n        {t.verified}\n      </Badge>\n      <Badge variant=\"outline\">\n        {t.bookmark}\n        <BookmarkIcon data-icon=\"inline-end\" />\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/badge-spinner.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport function BadgeWithSpinner() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Badge variant=\"destructive\">\n        <Spinner data-icon=\"inline-start\" />\n        Deleting\n      </Badge>\n      <Badge variant=\"secondary\">\n        Generating\n        <Spinner data-icon=\"inline-end\" />\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/badge-variants.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\n\nexport function BadgeVariants() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Badge>Default</Badge>\n      <Badge variant=\"secondary\">Secondary</Badge>\n      <Badge variant=\"destructive\">Destructive</Badge>\n      <Badge variant=\"outline\">Outline</Badge>\n      <Badge variant=\"ghost\">Ghost</Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/breadcrumb-basic.tsx",
    "content": "import {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/radix/ui/breadcrumb\"\n\nexport function BreadcrumbBasic() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink href=\"#\">Home</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink href=\"#\">Components</BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/breadcrumb-demo.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/radix/ui/breadcrumb\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\n\nexport function BreadcrumbDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"#\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button size=\"icon-sm\" variant=\"ghost\">\n                <BreadcrumbEllipsis />\n                <span className=\"sr-only\">Toggle menu</span>\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"start\">\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\n                <DropdownMenuItem>Themes</DropdownMenuItem>\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"#\">Components</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/breadcrumb-dropdown.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/radix/ui/breadcrumb\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport { ChevronDownIcon, DotIcon } from \"lucide-react\"\n\nexport function BreadcrumbDropdown() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <button className=\"flex items-center gap-1\">\n                Components\n                <ChevronDownIcon className=\"size-3.5\" />\n              </button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"start\">\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\n                <DropdownMenuItem>Themes</DropdownMenuItem>\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/breadcrumb-ellipsis.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/radix/ui/breadcrumb\"\n\nexport function BreadcrumbEllipsisDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbEllipsis />\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/docs/components\">Components</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/breadcrumb-link.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/radix/ui/breadcrumb\"\n\nexport function BreadcrumbLinkDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/components\">Components</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/breadcrumb-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/radix/ui-rtl/breadcrumb\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui-rtl/dropdown-menu\"\nimport { ChevronDownIcon, DotIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      home: \"Home\",\n      components: \"Components\",\n      documentation: \"Documentation\",\n      themes: \"Themes\",\n      github: \"GitHub\",\n      breadcrumb: \"Breadcrumb\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      home: \"الرئيسية\",\n      components: \"المكونات\",\n      documentation: \"التوثيق\",\n      themes: \"السمات\",\n      github: \"جيت هاب\",\n      breadcrumb: \"مسار التنقل\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      home: \"בית\",\n      components: \"רכיבים\",\n      documentation: \"תיעוד\",\n      themes: \"ערכות נושא\",\n      github: \"גיטהאב\",\n      breadcrumb: \"פירורי לחם\",\n    },\n  },\n}\n\nexport function BreadcrumbRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <Breadcrumb dir={dir}>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">{t.home}</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <button className=\"flex items-center gap-1\">\n                {t.components}\n                <ChevronDownIcon className=\"size-3.5\" />\n              </button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent\n              data-lang={dir === \"rtl\" ? language : undefined}\n            >\n              <DropdownMenuGroup>\n                <DropdownMenuItem>{t.documentation}</DropdownMenuItem>\n                <DropdownMenuItem>{t.themes}</DropdownMenuItem>\n                <DropdownMenuItem>{t.github}</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbPage>{t.breadcrumb}</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/breadcrumb-separator.tsx",
    "content": "import Link from \"next/link\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/examples/radix/ui/breadcrumb\"\nimport { DotIcon } from \"lucide-react\"\n\nexport function BreadcrumbSeparatorDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/components\">Components</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <DotIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-aschild.tsx",
    "content": "import Link from \"next/link\"\nimport { Button } from \"@/examples/radix/ui/button\"\n\nexport default function ButtonAsChild() {\n  return (\n    <Button asChild>\n      <Link href=\"/login\">Login</Link>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-default.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\n\nexport default function ButtonDefault() {\n  return <Button>Button</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ArrowUpIcon } from \"lucide-react\"\n\nexport default function ButtonDemo() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2 md:flex-row\">\n      <Button variant=\"outline\">Button</Button>\n      <Button variant=\"outline\" size=\"icon\" aria-label=\"Submit\">\n        <ArrowUpIcon />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-destructive.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\n\nexport default function ButtonDestructive() {\n  return <Button variant=\"destructive\">Destructive</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-ghost.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\n\nexport default function ButtonGhost() {\n  return <Button variant=\"ghost\">Ghost</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  ArchiveIcon,\n  ArrowLeftIcon,\n  CalendarPlusIcon,\n  ClockIcon,\n  ListFilterIcon,\n  MailCheckIcon,\n  MoreHorizontalIcon,\n  TagIcon,\n  Trash2Icon,\n} from \"lucide-react\"\n\nexport default function ButtonGroupDemo() {\n  const [label, setLabel] = React.useState(\"personal\")\n\n  return (\n    <ButtonGroup>\n      <ButtonGroup className=\"hidden sm:flex\">\n        <Button variant=\"outline\" size=\"icon\" aria-label=\"Go Back\">\n          <ArrowLeftIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Archive</Button>\n        <Button variant=\"outline\">Report</Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Snooze</Button>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" size=\"icon\" aria-label=\"More Options\">\n              <MoreHorizontalIcon />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" className=\"w-40\">\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <MailCheckIcon />\n                Mark as Read\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <ArchiveIcon />\n                Archive\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <ClockIcon />\n                Snooze\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CalendarPlusIcon />\n                Add to Calendar\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <ListFilterIcon />\n                Add to List\n              </DropdownMenuItem>\n              <DropdownMenuSub>\n                <DropdownMenuSubTrigger>\n                  <TagIcon />\n                  Label As...\n                </DropdownMenuSubTrigger>\n                <DropdownMenuSubContent>\n                  <DropdownMenuRadioGroup\n                    value={label}\n                    onValueChange={setLabel}\n                  >\n                    <DropdownMenuRadioItem value=\"personal\">\n                      Personal\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"work\">\n                      Work\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"other\">\n                      Other\n                    </DropdownMenuRadioItem>\n                  </DropdownMenuRadioGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuSub>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem variant=\"destructive\">\n                <Trash2Icon />\n                Trash\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-dropdown.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  AlertTriangleIcon,\n  CheckIcon,\n  ChevronDownIcon,\n  CopyIcon,\n  ShareIcon,\n  TrashIcon,\n  UserRoundXIcon,\n  VolumeOffIcon,\n} from \"lucide-react\"\n\nexport default function ButtonGroupDropdown() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"outline\">Follow</Button>\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"pl-2!\">\n            <ChevronDownIcon />\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-44\">\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              <VolumeOffIcon />\n              Mute Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <CheckIcon />\n              Mark as Read\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <AlertTriangleIcon />\n              Report Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <UserRoundXIcon />\n              Block User\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <ShareIcon />\n              Share Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <CopyIcon />\n              Copy Conversation\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem variant=\"destructive\">\n              <TrashIcon />\n              Delete Conversation\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { AudioLinesIcon, PlusIcon } from \"lucide-react\"\n\nexport default function ButtonGroupInputGroup() {\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\n\n  return (\n    <ButtonGroup className=\"[--radius:9999rem]\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <InputGroup>\n          <InputGroupInput\n            placeholder={\n              voiceEnabled ? \"Record and send audio...\" : \"Send a message...\"\n            }\n            disabled={voiceEnabled}\n          />\n          <InputGroupAddon align=\"inline-end\">\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <InputGroupButton\n                  onClick={() => setVoiceEnabled(!voiceEnabled)}\n                  size=\"icon-xs\"\n                  data-active={voiceEnabled}\n                  className=\"data-[active=true]:bg-orange-100 data-[active=true]:text-orange-700 dark:data-[active=true]:bg-orange-800 dark:data-[active=true]:text-orange-100\"\n                  aria-pressed={voiceEnabled}\n                >\n                  <AudioLinesIcon />\n                </InputGroupButton>\n              </TooltipTrigger>\n              <TooltipContent>Voice Mode</TooltipContent>\n            </Tooltip>\n          </InputGroupAddon>\n        </InputGroup>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-input.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport default function ButtonGroupInput() {\n  return (\n    <ButtonGroup>\n      <Input placeholder=\"Search...\" />\n      <Button variant=\"outline\" aria-label=\"Search\">\n        <SearchIcon />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-nested.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { AudioLinesIcon, PlusIcon } from \"lucide-react\"\n\nexport function ButtonGroupNested() {\n  return (\n    <ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <InputGroup>\n          <InputGroupInput placeholder=\"Send a message...\" />\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupAddon align=\"inline-end\">\n                <AudioLinesIcon />\n              </InputGroupAddon>\n            </TooltipTrigger>\n            <TooltipContent>Voice Mode</TooltipContent>\n          </Tooltip>\n        </InputGroup>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-orientation.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { MinusIcon, PlusIcon } from \"lucide-react\"\n\nexport default function ButtonGroupOrientation() {\n  return (\n    <ButtonGroup\n      orientation=\"vertical\"\n      aria-label=\"Media controls\"\n      className=\"h-fit\"\n    >\n      <Button variant=\"outline\" size=\"icon\">\n        <PlusIcon />\n      </Button>\n      <Button variant=\"outline\" size=\"icon\">\n        <MinusIcon />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-popover.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\nimport { BotIcon, ChevronDownIcon } from \"lucide-react\"\n\nexport default function ButtonGroupPopover() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"outline\">\n        <BotIcon /> Copilot\n      </Button>\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" size=\"icon\" aria-label=\"Open Popover\">\n            <ChevronDownIcon />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent align=\"end\" className=\"rounded-xl text-sm\">\n          <PopoverHeader>\n            <PopoverTitle>Start a new task with Copilot</PopoverTitle>\n            <PopoverDescription>\n              Describe your task in natural language.\n            </PopoverDescription>\n          </PopoverHeader>\n          <Field>\n            <FieldLabel htmlFor=\"task\" className=\"sr-only\">\n              Task Description\n            </FieldLabel>\n            <Textarea\n              id=\"task\"\n              placeholder=\"I need to...\"\n              className=\"resize-none\"\n            />\n            <FieldDescription>\n              Copilot will open a pull request for review.\n            </FieldDescription>\n          </Field>\n        </PopoverContent>\n      </Popover>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui-rtl/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui-rtl/dropdown-menu\"\nimport {\n  ArchiveIcon,\n  ArrowLeftIcon,\n  CalendarPlusIcon,\n  ClockIcon,\n  ListFilterIcon,\n  MailCheckIcon,\n  MoreHorizontalIcon,\n  TagIcon,\n  Trash2Icon,\n} from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      archive: \"Archive\",\n      report: \"Report\",\n      snooze: \"Snooze\",\n      markAsRead: \"Mark as Read\",\n      addToCalendar: \"Add to Calendar\",\n      addToList: \"Add to List\",\n      labelAs: \"Label As...\",\n      personal: \"Personal\",\n      work: \"Work\",\n      other: \"Other\",\n      trash: \"Trash\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      archive: \"أرشفة\",\n      report: \"تقرير\",\n      snooze: \"تأجيل\",\n      markAsRead: \"وضع علامة كمقروء\",\n      addToCalendar: \"إضافة إلى التقويم\",\n      addToList: \"إضافة إلى القائمة\",\n      labelAs: \"تصنيف كـ...\",\n      personal: \"شخصي\",\n      work: \"عمل\",\n      other: \"آخر\",\n      trash: \"سلة المهملات\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      archive: \"ארכיון\",\n      report: \"דוח\",\n      snooze: \"דחה\",\n      markAsRead: \"סמן כנקרא\",\n      addToCalendar: \"הוסף ליומן\",\n      addToList: \"הוסף לרשימה\",\n      labelAs: \"תייג כ...\",\n      personal: \"אישי\",\n      work: \"עבודה\",\n      other: \"אחר\",\n      trash: \"פח\",\n    },\n  },\n}\n\nexport function ButtonGroupRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [label, setLabel] = React.useState(\"personal\")\n\n  return (\n    <div dir={dir}>\n      <ButtonGroup>\n        <ButtonGroup className=\"hidden sm:flex\">\n          <Button variant=\"outline\" size=\"icon\" aria-label=\"Go Back\">\n            <ArrowLeftIcon className=\"rtl:rotate-180\" />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">{t.archive}</Button>\n          <Button variant=\"outline\">{t.report}</Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">{t.snooze}</Button>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"outline\" size=\"icon\" aria-label=\"More Options\">\n                <MoreHorizontalIcon />\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent\n              align={dir === \"rtl\" ? \"end\" : \"end\"}\n              data-lang={dir === \"rtl\" ? language : undefined}\n              className=\"w-40\"\n            >\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <MailCheckIcon />\n                  {t.markAsRead}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <ArchiveIcon />\n                  {t.archive}\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <ClockIcon />\n                  {t.snooze}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <CalendarPlusIcon />\n                  {t.addToCalendar}\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <ListFilterIcon />\n                  {t.addToList}\n                </DropdownMenuItem>\n                <DropdownMenuSub>\n                  <DropdownMenuSubTrigger>\n                    <TagIcon />\n                    {t.labelAs}\n                  </DropdownMenuSubTrigger>\n                  <DropdownMenuSubContent\n                    data-lang={dir === \"rtl\" ? language : undefined}\n                  >\n                    <DropdownMenuRadioGroup\n                      value={label}\n                      onValueChange={setLabel}\n                    >\n                      <DropdownMenuRadioItem value=\"personal\">\n                        {t.personal}\n                      </DropdownMenuRadioItem>\n                      <DropdownMenuRadioItem value=\"work\">\n                        {t.work}\n                      </DropdownMenuRadioItem>\n                      <DropdownMenuRadioItem value=\"other\">\n                        {t.other}\n                      </DropdownMenuRadioItem>\n                    </DropdownMenuRadioGroup>\n                  </DropdownMenuSubContent>\n                </DropdownMenuSub>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem variant=\"destructive\">\n                  <Trash2Icon />\n                  {t.trash}\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </ButtonGroup>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n} from \"@/examples/radix/ui/select\"\nimport { ArrowRightIcon } from \"lucide-react\"\n\nconst CURRENCIES = [\n  {\n    value: \"$\",\n    label: \"US Dollar\",\n  },\n  {\n    value: \"€\",\n    label: \"Euro\",\n  },\n  {\n    value: \"£\",\n    label: \"British Pound\",\n  },\n]\n\nexport default function ButtonGroupSelect() {\n  const [currency, setCurrency] = React.useState(\"$\")\n\n  return (\n    <ButtonGroup>\n      <ButtonGroup>\n        <Select value={currency} onValueChange={setCurrency}>\n          <SelectTrigger className=\"font-mono\">{currency}</SelectTrigger>\n          <SelectContent className=\"min-w-24\">\n            <SelectGroup>\n              {CURRENCIES.map((currency) => (\n                <SelectItem key={currency.value} value={currency.value}>\n                  {currency.value}{\" \"}\n                  <span className=\"text-muted-foreground\">\n                    {currency.label}\n                  </span>\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Input placeholder=\"10.00\" pattern=\"[0-9]*\" />\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button aria-label=\"Send\" size=\"icon\" variant=\"outline\">\n          <ArrowRightIcon />\n        </Button>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-separator.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n} from \"@/examples/radix/ui/button-group\"\n\nexport default function ButtonGroupSeparatorDemo() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"secondary\" size=\"sm\">\n        Copy\n      </Button>\n      <ButtonGroupSeparator />\n      <Button variant=\"secondary\" size=\"sm\">\n        Paste\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-size.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport default function ButtonGroupSize() {\n  return (\n    <div className=\"flex flex-col items-start gap-8\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          Small\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Button\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Group\n        </Button>\n        <Button variant=\"outline\" size=\"icon-sm\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Default</Button>\n        <Button variant=\"outline\">Button</Button>\n        <Button variant=\"outline\">Group</Button>\n        <Button variant=\"outline\" size=\"icon\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"lg\">\n          Large\n        </Button>\n        <Button variant=\"outline\" size=\"lg\">\n          Button\n        </Button>\n        <Button variant=\"outline\" size=\"lg\">\n          Group\n        </Button>\n        <Button variant=\"outline\" size=\"icon-lg\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-group-split.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n} from \"@/examples/radix/ui/button-group\"\nimport { IconPlus } from \"@tabler/icons-react\"\n\nexport default function ButtonGroupSplit() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"secondary\">Button</Button>\n      <ButtonGroupSeparator />\n      <Button size=\"icon\" variant=\"secondary\">\n        <IconPlus />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-icon.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { CircleFadingArrowUpIcon } from \"lucide-react\"\n\nexport default function ButtonIcon() {\n  return (\n    <Button variant=\"outline\" size=\"icon\">\n      <CircleFadingArrowUpIcon />\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-link.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\n\nexport default function ButtonLink() {\n  return <Button variant=\"link\">Link</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-outline.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\n\nexport default function ButtonOutline() {\n  return <Button variant=\"outline\">Outline</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-rounded.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ArrowUpIcon } from \"lucide-react\"\n\nexport default function ButtonRounded() {\n  return (\n    <div className=\"flex flex-col gap-8\">\n      <Button variant=\"outline\" size=\"icon\" className=\"rounded-full\">\n        <ArrowUpIcon />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { Spinner } from \"@/examples/radix/ui-rtl/spinner\"\nimport { ArrowRightIcon, PlusIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      button: \"Button\",\n      submit: \"Submit\",\n      delete: \"Delete\",\n      loading: \"Loading\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      button: \"زر\",\n      submit: \"إرسال\",\n      delete: \"حذف\",\n      loading: \"جاري التحميل\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      button: \"כפתור\",\n      submit: \"שלח\",\n      delete: \"מחק\",\n      loading: \"טוען\",\n    },\n  },\n}\n\nexport function ButtonRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex flex-wrap items-center gap-2 md:flex-row\" dir={dir}>\n      <Button variant=\"outline\">{t.button}</Button>\n      <Button variant=\"destructive\">{t.delete}</Button>\n      <Button variant=\"outline\">\n        {t.submit}{\" \"}\n        <ArrowRightIcon className=\"rtl:rotate-180\" data-icon=\"inline-end\" />\n      </Button>\n      <Button variant=\"outline\" size=\"icon\" aria-label=\"Add\">\n        <PlusIcon />\n      </Button>\n      <Button variant=\"secondary\" disabled>\n        <Spinner data-icon=\"inline-start\" /> {t.loading}\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-secondary.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\n\nexport default function ButtonSecondary() {\n  return <Button variant=\"secondary\">Secondary</Button>\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-size.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nexport default function ButtonSize() {\n  return (\n    <div className=\"flex flex-col items-start gap-8 sm:flex-row\">\n      <div className=\"flex items-start gap-2\">\n        <Button size=\"xs\" variant=\"outline\">\n          Extra Small\n        </Button>\n        <Button size=\"icon-xs\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n      <div className=\"flex items-start gap-2\">\n        <Button size=\"sm\" variant=\"outline\">\n          Small\n        </Button>\n        <Button size=\"icon-sm\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n      <div className=\"flex items-start gap-2\">\n        <Button variant=\"outline\">Default</Button>\n        <Button size=\"icon\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n      <div className=\"flex items-start gap-2\">\n        <Button variant=\"outline\" size=\"lg\">\n          Large\n        </Button>\n        <Button size=\"icon-lg\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-spinner.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport default function ButtonSpinner() {\n  return (\n    <div className=\"flex gap-2\">\n      <Button variant=\"outline\" disabled>\n        <Spinner data-icon=\"inline-start\" />\n        Generating\n      </Button>\n      <Button variant=\"secondary\" disabled>\n        Downloading\n        <Spinner data-icon=\"inline-start\" />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/button-with-icon.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { IconGitBranch } from \"@tabler/icons-react\"\n\nexport default function ButtonWithIcon() {\n  return (\n    <Button variant=\"outline\" size=\"sm\">\n      <IconGitBranch /> New Branch\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-basic.tsx",
    "content": "\"use client\"\n\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\n\nexport default function CalendarBasic() {\n  return <Calendar mode=\"single\" className=\"rounded-lg border\" />\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-booked-dates.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport { es } from \"react-day-picker/locale\"\n\nexport function CalendarBookedDates() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 3)\n  )\n  const bookedDates = Array.from(\n    { length: 15 },\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\n  )\n\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar\n          mode=\"single\"\n          defaultMonth={date}\n          selected={date}\n          onSelect={setDate}\n          disabled={bookedDates}\n          modifiers={{\n            booked: bookedDates,\n          }}\n          modifiersClassNames={{\n            booked: \"[&>button]:line-through opacity-100\",\n          }}\n        />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-caption.tsx",
    "content": "\"use client\"\n\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\n\nexport function CalendarCaption() {\n  return (\n    <Calendar\n      mode=\"single\"\n      captionLayout=\"dropdown\"\n      className=\"rounded-lg border\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-custom-days.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar, CalendarDayButton } from \"@/examples/radix/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport { addDays } from \"date-fns\"\nimport { type DateRange } from \"react-day-picker\"\n\nexport function CalendarCustomDays() {\n  const [range, setRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 11, 8),\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\n  })\n\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar\n          mode=\"range\"\n          defaultMonth={range?.from}\n          selected={range}\n          onSelect={setRange}\n          numberOfMonths={1}\n          captionLayout=\"dropdown\"\n          className=\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\"\n          formatters={{\n            formatMonthDropdown: (date) => {\n              return date.toLocaleString(\"default\", { month: \"long\" })\n            },\n          }}\n          components={{\n            DayButton: ({ children, modifiers, day, ...props }) => {\n              const isWeekend =\n                day.date.getDay() === 0 || day.date.getDay() === 6\n\n              return (\n                <CalendarDayButton day={day} modifiers={modifiers} {...props}>\n                  {children}\n                  {!modifiers.outside && (\n                    <span>{isWeekend ? \"$120\" : \"$100\"}</span>\n                  )}\n                </CalendarDayButton>\n              )\n            },\n          }}\n        />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\n\nexport default function CalendarDemo() {\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\n\n  return (\n    <Calendar\n      mode=\"single\"\n      selected={date}\n      onSelect={setDate}\n      className=\"rounded-lg border\"\n      captionLayout=\"dropdown\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-hijri.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Vazirmatn } from \"next/font/google\"\nimport { Button, buttonVariants } from \"@/examples/radix/ui/button\"\nimport {\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"lucide-react\"\nimport { getDefaultClassNames, type DayButton } from \"react-day-picker\"\nimport { DayPicker } from \"react-day-picker/persian\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst vazirmatn = Vazirmatn({ subsets: [\"arabic\"] })\n\nexport default function CalendarHijri() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(2025, 5, 12)\n  )\n\n  return (\n    <div className={vazirmatn.className}>\n      <Calendar\n        mode=\"single\"\n        defaultMonth={date}\n        selected={date}\n        onSelect={setDate}\n        className=\"rounded-lg border\"\n      />\n    </div>\n  )\n}\n\n// ----------------------------------------------------------------------------\n// The code below is for this example only.\n// For your own calendar, you would edit the calendar.tsx component directly.\n// ----------------------------------------------------------------------------\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(\"default\", { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\"absolute inset-0 opacity-0\", defaultClassNames.dropdown),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"rounded-l-md bg-accent\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n        today: cn(\n          \"rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <ChevronRightIcon\n                className={cn(\"size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n          )\n        },\n        DayButton: CalendarDayButton,\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  ...props\n}: React.ComponentProps<typeof DayButton>) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      ref={ref}\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString()}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-multiple.tsx",
    "content": "import { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\n\nexport function CalendarMultiple() {\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar mode=\"multiple\" />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-presets.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/examples/radix/ui/card\"\nimport { addDays } from \"date-fns\"\n\nexport function CalendarWithPresets() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 12)\n  )\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\n  )\n\n  return (\n    <Card className=\"mx-auto w-fit max-w-[300px]\" size=\"sm\">\n      <CardContent>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          month={currentMonth}\n          onMonthChange={setCurrentMonth}\n          fixedWeeks\n          className=\"p-0 [--cell-size:--spacing(9.5)]\"\n        />\n      </CardContent>\n      <CardFooter className=\"flex flex-wrap gap-2 border-t\">\n        {[\n          { label: \"Today\", value: 0 },\n          { label: \"Tomorrow\", value: 1 },\n          { label: \"In 3 days\", value: 3 },\n          { label: \"In a week\", value: 7 },\n          { label: \"In 2 weeks\", value: 14 },\n        ].map((preset) => (\n          <Button\n            key={preset.value}\n            variant=\"outline\"\n            size=\"sm\"\n            className=\"flex-1\"\n            onClick={() => {\n              const newDate = addDays(new Date(), preset.value)\n              setDate(newDate)\n              setCurrentMonth(\n                new Date(newDate.getFullYear(), newDate.getMonth(), 1)\n              )\n            }}\n          >\n            {preset.label}\n          </Button>\n        ))}\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-range.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport { addDays } from \"date-fns\"\nimport { type DateRange } from \"react-day-picker\"\n\nexport function CalendarRange() {\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 12),\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\n  })\n\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar\n          mode=\"range\"\n          defaultMonth={dateRange?.from}\n          selected={dateRange}\n          onSelect={setDateRange}\n          numberOfMonths={2}\n          disabled={(date) =>\n            date > new Date() || date < new Date(\"1900-01-01\")\n          }\n        />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/radix/ui-rtl/calendar\"\nimport { arSA, he } from \"react-day-picker/locale\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nconst locales = {\n  ar: arSA,\n  he: he,\n} as const\n\nexport function CalendarRtl() {\n  const { dir, language } = useTranslation(translations, \"ar\")\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\n\n  return (\n    <Calendar\n      mode=\"single\"\n      selected={date}\n      onSelect={setDate}\n      className=\"rounded-lg border [--cell-size:--spacing(9)]\"\n      captionLayout=\"dropdown\"\n      dir={dir}\n      locale={\n        dir === \"rtl\" ? locales[language as keyof typeof locales] : undefined\n      }\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-time.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/examples/radix/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Clock2Icon } from \"lucide-react\"\n\nexport function CalendarWithTime() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n\n  return (\n    <Card size=\"sm\" className=\"mx-auto w-fit\">\n      <CardContent>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          className=\"p-0\"\n        />\n      </CardContent>\n      <CardFooter className=\"border-t bg-card\">\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"time-from\">Start Time</FieldLabel>\n            <InputGroup>\n              <InputGroupInput\n                id=\"time-from\"\n                type=\"time\"\n                step=\"1\"\n                defaultValue=\"10:30:00\"\n                className=\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n              />\n              <InputGroupAddon>\n                <Clock2Icon className=\"text-muted-foreground\" />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"time-to\">End Time</FieldLabel>\n            <InputGroup>\n              <InputGroupInput\n                id=\"time-to\"\n                type=\"time\"\n                step=\"1\"\n                defaultValue=\"12:30:00\"\n                className=\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n              />\n              <InputGroupAddon>\n                <Clock2Icon className=\"text-muted-foreground\" />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n        </FieldGroup>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/calendar-week-numbers.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\n\nexport function CalendarWeekNumbers() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 3)\n  )\n\n  return (\n    <Card className=\"mx-auto w-fit p-0\">\n      <CardContent className=\"p-0\">\n        <Calendar\n          mode=\"single\"\n          defaultMonth={date}\n          selected={date}\n          onSelect={setDate}\n          showWeekNumber\n        />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/card-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui/card\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { Label } from \"@/examples/radix/ui/label\"\n\nexport default function CardDemo() {\n  return (\n    <Card className=\"w-full max-w-sm\">\n      <CardHeader>\n        <CardTitle>Login to your account</CardTitle>\n        <CardDescription>\n          Enter your email below to login to your account\n        </CardDescription>\n        <CardAction>\n          <Button variant=\"link\">Sign Up</Button>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <div className=\"flex flex-col gap-6\">\n            <div className=\"grid gap-2\">\n              <Label htmlFor=\"email\">Email</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"m@example.com\"\n                required\n              />\n            </div>\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center\">\n                <Label htmlFor=\"password\">Password</Label>\n                <a\n                  href=\"#\"\n                  className=\"ml-auto inline-block text-sm underline-offset-4 hover:underline\"\n                >\n                  Forgot your password?\n                </a>\n              </div>\n              <Input id=\"password\" type=\"password\" required />\n            </div>\n          </div>\n        </form>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2\">\n        <Button type=\"submit\" className=\"w-full\">\n          Login\n        </Button>\n        <Button variant=\"outline\" className=\"w-full\">\n          Login with Google\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/card-image.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui/card\"\n\nexport function CardImage() {\n  return (\n    <Card className=\"relative mx-auto w-full max-w-sm pt-0\">\n      <div className=\"absolute inset-0 z-30 aspect-video bg-black/35\" />\n      <img\n        src=\"https://avatar.vercel.sh/shadcn1\"\n        alt=\"Event cover\"\n        className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale dark:brightness-40\"\n      />\n      <CardHeader>\n        <CardAction>\n          <Badge variant=\"secondary\">Featured</Badge>\n        </CardAction>\n        <CardTitle>Design systems meetup</CardTitle>\n        <CardDescription>\n          A practical talk on component APIs, accessibility, and shipping\n          faster.\n        </CardDescription>\n      </CardHeader>\n      <CardFooter>\n        <Button className=\"w-full\">View Event</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/card-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui-rtl/card\"\nimport { Input } from \"@/examples/radix/ui-rtl/input\"\nimport { Label } from \"@/examples/radix/ui-rtl/label\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"Login to your account\",\n      description: \"Enter your email below to login to your account\",\n      signUp: \"Sign Up\",\n      email: \"Email\",\n      emailPlaceholder: \"m@example.com\",\n      password: \"Password\",\n      forgotPassword: \"Forgot your password?\",\n      login: \"Login\",\n      loginWithGoogle: \"Login with Google\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"تسجيل الدخول إلى حسابك\",\n      description: \"أدخل بريدك الإلكتروني أدناه لتسجيل الدخول إلى حسابك\",\n      signUp: \"إنشاء حساب\",\n      email: \"البريد الإلكتروني\",\n      emailPlaceholder: \"m@example.com\",\n      password: \"كلمة المرور\",\n      forgotPassword: \"نسيت كلمة المرور؟\",\n      login: \"تسجيل الدخول\",\n      loginWithGoogle: \"تسجيل الدخول باستخدام Google\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"התחבר לחשבון שלך\",\n      description: \"הזן את האימייל שלך למטה כדי להתחבר לחשבון שלך\",\n      signUp: \"הירשם\",\n      email: \"אימייל\",\n      emailPlaceholder: \"m@example.com\",\n      password: \"סיסמה\",\n      forgotPassword: \"שכחת את הסיסמה?\",\n      login: \"התחבר\",\n      loginWithGoogle: \"התחבר עם Google\",\n    },\n  },\n}\n\nexport function CardRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Card className=\"w-full max-w-sm\" dir={dir}>\n      <CardHeader>\n        <CardTitle>{t.title}</CardTitle>\n        <CardDescription>{t.description}</CardDescription>\n        <CardAction>\n          <Button variant=\"link\">{t.signUp}</Button>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <div className=\"flex flex-col gap-6\">\n            <div className=\"grid gap-2\">\n              <Label htmlFor=\"email-rtl\">{t.email}</Label>\n              <Input\n                id=\"email-rtl\"\n                type=\"email\"\n                placeholder={t.emailPlaceholder}\n                required\n              />\n            </div>\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center\">\n                <Label htmlFor=\"password-rtl\">{t.password}</Label>\n                <a\n                  href=\"#\"\n                  className=\"ms-auto inline-block text-sm underline-offset-4 hover:underline\"\n                >\n                  {t.forgotPassword}\n                </a>\n              </div>\n              <Input id=\"password-rtl\" type=\"password\" required />\n            </div>\n          </div>\n        </form>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2\">\n        <Button type=\"submit\" className=\"w-full\">\n          {t.login}\n        </Button>\n        <Button variant=\"outline\" className=\"w-full\">\n          {t.loginWithGoogle}\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/card-small.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui/card\"\n\nexport function CardSmall() {\n  return (\n    <Card size=\"sm\" className=\"mx-auto w-full max-w-sm\">\n      <CardHeader>\n        <CardTitle>Small Card</CardTitle>\n        <CardDescription>\n          This card uses the small size variant.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <p>\n          The card component supports a size prop that can be set to\n          &quot;sm&quot; for a more compact appearance.\n        </p>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\" size=\"sm\" className=\"w-full\">\n          Action\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/carousel-api.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n  type CarouselApi,\n} from \"@/examples/radix/ui/carousel\"\n\nexport default function CarouselDApiDemo() {\n  const [api, setApi] = React.useState<CarouselApi>()\n  const [current, setCurrent] = React.useState(0)\n  const [count, setCount] = React.useState(0)\n\n  React.useEffect(() => {\n    if (!api) {\n      return\n    }\n\n    setCount(api.scrollSnapList().length)\n    setCurrent(api.selectedScrollSnap() + 1)\n\n    api.on(\"select\", () => {\n      setCurrent(api.selectedScrollSnap() + 1)\n    })\n  }, [api])\n\n  return (\n    <div className=\"mx-auto max-w-[10rem] sm:max-w-xs\">\n      <Carousel setApi={setApi} className=\"w-full max-w-xs\">\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index}>\n              <Card className=\"m-px\">\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious />\n        <CarouselNext />\n      </Carousel>\n      <div className=\"py-2 text-center text-sm text-muted-foreground\">\n        Slide {current} of {count}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/carousel-demo.tsx",
    "content": "import * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/radix/ui/carousel\"\n\nexport default function CarouselDemo() {\n  return (\n    <Carousel className=\"w-full max-w-[12rem] sm:max-w-xs\">\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index}>\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/carousel-multiple.tsx",
    "content": "import { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/radix/ui/carousel\"\n\nexport function CarouselMultiple() {\n  return (\n    <Carousel\n      className=\"mx-auto max-w-xs sm:max-w-sm\"\n      opts={{\n        align: \"start\",\n      }}\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"sm:basis-1/2 lg:basis-1/3\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious className=\"hidden sm:inline-flex\" />\n      <CarouselNext className=\"hidden sm:inline-flex\" />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/carousel-orientation.tsx",
    "content": "import * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/radix/ui/carousel\"\n\nexport default function CarouselOrientation() {\n  return (\n    <Carousel\n      opts={{\n        align: \"start\",\n      }}\n      orientation=\"vertical\"\n      className=\"w-full max-w-xs\"\n    >\n      <CarouselContent className=\"-mt-1 h-[270px]\">\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"basis-1/2 pt-1\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex items-center justify-center p-6\">\n                  <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/carousel-plugin.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/radix/ui/carousel\"\nimport Autoplay from \"embla-carousel-autoplay\"\n\nexport default function CarouselPlugin() {\n  const plugin = React.useRef(\n    Autoplay({ delay: 2000, stopOnInteraction: true })\n  )\n\n  return (\n    <Carousel\n      plugins={[plugin.current]}\n      className=\"w-full max-w-[10rem] sm:max-w-xs\"\n      onMouseEnter={plugin.current.stop}\n      onMouseLeave={plugin.current.reset}\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index}>\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/carousel-rtl.tsx",
    "content": "\"use client\"\n\nimport { Card, CardContent } from \"@/examples/radix/ui-rtl/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/radix/ui-rtl/carousel\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nfunction toArabicNumerals(num: number): string {\n  const arabicNumerals = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"]\n  return num\n    .toString()\n    .split(\"\")\n    .map((digit) => arabicNumerals[parseInt(digit, 10)])\n    .join(\"\")\n}\n\nexport function CarouselRtl() {\n  const { dir, language } = useTranslation(translations, \"ar\")\n\n  const formatNumber = (num: number): string => {\n    if (language === \"ar\") {\n      return toArabicNumerals(num)\n    }\n    return num.toString()\n  }\n\n  return (\n    <Carousel\n      dir={dir}\n      className=\"w-full max-w-[12rem] sm:max-w-xs\"\n      opts={{\n        direction: dir,\n      }}\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index}>\n            <div className=\"p-1\">\n              <Card dir={dir}>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">\n                    {formatNumber(index + 1)}\n                  </span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/carousel-size.tsx",
    "content": "import * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/radix/ui/carousel\"\n\nexport default function CarouselSize() {\n  return (\n    <Carousel\n      opts={{\n        align: \"start\",\n      }}\n      className=\"w-full max-w-[12rem] sm:max-w-xs md:max-w-sm\"\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"basis-1/2 lg:basis-1/3\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/carousel-spacing.tsx",
    "content": "import * as React from \"react\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/examples/radix/ui/carousel\"\n\nexport default function CarouselSpacing() {\n  return (\n    <Carousel className=\"w-full max-w-[12rem] sm:max-w-xs md:max-w-sm\">\n      <CarouselContent className=\"-ml-1\">\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"basis-1/2 pl-1 lg:basis-1/3\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-2xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/chart-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"An interactive bar chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n]\n\nconst chartConfig = {\n  views: {\n    label: \"Page Views\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-2)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartDemo() {\n  const [activeChart, setActiveChart] =\n    React.useState<keyof typeof chartConfig>(\"desktop\")\n\n  const total = React.useMemo(\n    () => ({\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\n    }),\n    []\n  )\n\n  return (\n    <Card className=\"py-0 pb-4\">\n      <CardHeader className=\"flex flex-col items-stretch border-b p-0! sm:flex-row\">\n        <div className=\"flex flex-1 flex-col justify-center gap-1 px-6 pt-4 pb-3 sm:py-0!\">\n          <CardTitle>Bar Chart - Interactive</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 3 months\n          </CardDescription>\n        </div>\n        <div className=\"flex\">\n          {[\"desktop\", \"mobile\"].map((key) => {\n            const chart = key as keyof typeof chartConfig\n            return (\n              <button\n                key={chart}\n                data-active={activeChart === chart}\n                className=\"relative z-30 flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-t-0 sm:border-l sm:px-8 sm:py-6\"\n                onClick={() => setActiveChart(chart)}\n              >\n                <span className=\"text-xs text-muted-foreground\">\n                  {chartConfig[chart].label}\n                </span>\n                <span className=\"text-lg leading-none font-bold sm:text-3xl\">\n                  {total[key as keyof typeof total].toLocaleString()}\n                </span>\n              </button>\n            )\n          })}\n        </div>\n      </CardHeader>\n      <CardContent className=\"px-2 sm:p-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              content={\n                <ChartTooltipContent\n                  className=\"w-[150px]\"\n                  nameKey=\"views\"\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                      year: \"numeric\",\n                    })\n                  }}\n                />\n              }\n            />\n            <Bar dataKey={activeChart} fill={`var(--color-${activeChart})`} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/chart-example-axis.tsx",
    "content": "\"use client\"\n\nimport { ChartContainer, type ChartConfig } from \"@/examples/radix/ui/chart\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemoAxis() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/chart-example-grid.tsx",
    "content": "\"use client\"\n\nimport { ChartContainer, type ChartConfig } from \"@/examples/radix/ui/chart\"\nimport { Bar, BarChart, CartesianGrid } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemoGrid() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/chart-example-legend.tsx",
    "content": "\"use client\"\n\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/examples/radix/ui/chart\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemoLegend() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <ChartTooltip content={<ChartTooltipContent />} />\n        <ChartLegend content={<ChartLegendContent />} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/chart-example-tooltip.tsx",
    "content": "\"use client\"\n\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/examples/radix/ui/chart\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDemoTooltip() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <ChartTooltip content={<ChartTooltipContent />} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/chart-example.tsx",
    "content": "\"use client\"\n\nimport { ChartContainer, type ChartConfig } from \"@/examples/radix/ui/chart\"\nimport { Bar, BarChart } from \"recharts\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport function ChartExample() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/chart-rtl.tsx",
    "content": "\"use client\"\n\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/examples/radix/ui-rtl/chart\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      january: \"January\",\n      february: \"February\",\n      march: \"March\",\n      april: \"April\",\n      may: \"May\",\n      june: \"June\",\n      desktop: \"Desktop\",\n      mobile: \"Mobile\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      january: \"يناير\",\n      february: \"فبراير\",\n      march: \"مارس\",\n      april: \"أبريل\",\n      may: \"مايو\",\n      june: \"يونيو\",\n      desktop: \"سطح المكتب\",\n      mobile: \"الجوال\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      january: \"ינואר\",\n      february: \"פברואר\",\n      march: \"מרץ\",\n      april: \"אפריל\",\n      may: \"מאי\",\n      june: \"יוני\",\n      desktop: \"מחשב\",\n      mobile: \"נייד\",\n    },\n  },\n}\n\nconst chartData = [\n  { month: \"january\", desktop: 186, mobile: 80 },\n  { month: \"february\", desktop: 305, mobile: 200 },\n  { month: \"march\", desktop: 237, mobile: 120 },\n  { month: \"april\", desktop: 73, mobile: 190 },\n  { month: \"may\", desktop: 209, mobile: 130 },\n  { month: \"june\", desktop: 214, mobile: 140 },\n]\n\nexport function ChartRtl() {\n  const { t, dir } = useTranslation(translations, \"ar\")\n\n  const chartConfig = {\n    desktop: {\n      label: t.desktop,\n      color: \"var(--chart-2)\",\n    },\n    mobile: {\n      label: t.mobile,\n      color: \"var(--chart-1)\",\n    },\n  } satisfies ChartConfig\n\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid\n          vertical={false}\n          orientation={dir === \"rtl\" ? \"right\" : \"left\"}\n        />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) =>\n            (t[value as keyof typeof t] as string).slice(0, 3)\n          }\n          reversed={dir === \"rtl\"}\n        />\n        <ChartTooltip\n          content={\n            <ChartTooltipContent\n              labelFormatter={(value) => t[value as keyof typeof t] as string}\n            />\n          }\n          labelClassName=\"w-32\"\n        />\n        <ChartLegend content={<ChartLegendContent />} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/chart-tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport function ChartTooltipDemo() {\n  return (\n    <div className=\"grid aspect-video w-full max-w-md justify-center text-foreground md:grid-cols-2 [&>div]:relative [&>div]:flex [&>div]:h-[137px] [&>div]:w-[224px] [&>div]:items-center [&>div]:justify-center [&>div]:p-4\">\n      <div>\n        <div className=\"absolute top-[45px] left-[-35px] z-10 text-sm font-medium\">\n          Label\n        </div>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          viewBox=\"0 0 193 40\"\n          width=\"50\"\n          height=\"12\"\n          fill=\"none\"\n          className=\"absolute top-[50px] left-[5px] z-10\"\n        >\n          <g clipPath=\"url(#a)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M173.928 21.13C115.811 44.938 58.751 45.773 0 26.141c4.227-4.386 7.82-2.715 10.567-1.88 21.133 5.64 42.9 6.266 64.457 7.101 31.066 1.253 60.441-5.848 89.183-17.335 1.268-.418 2.325-1.253 4.861-2.924-14.582-2.924-29.165 2.089-41.845-3.76.212-.835.212-1.879.423-2.714 9.51-.627 19.231-1.253 28.742-2.089 9.51-.835 18.808-1.88 28.318-2.506 6.974-.418 9.933 2.924 7.397 9.19-3.17 8.145-7.608 15.664-11.623 23.391-.423.836-1.057 1.88-1.902 2.298-2.325.835-4.65 1.044-7.186 1.67-.422-2.088-1.479-4.386-1.268-6.265.423-2.506 1.902-4.595 3.804-9.19Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"a\">\n              <path fill=\"currentColor\" d=\"M0 0h193v40H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n        <TooltipDemo\n          label=\"Page Views\"\n          payload={[\n            { name: \"Desktop\", value: 186, fill: \"var(--chart-1)\" },\n            { name: \"Mobile\", value: 80, fill: \"var(--chart-2)\" },\n          ]}\n          className=\"w-[8rem]\"\n        />\n      </div>\n      <div className=\"items-end\">\n        <div className=\"absolute top-[0px] left-[122px] z-10 text-sm font-medium\">\n          Name\n        </div>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"35\"\n          height=\"42\"\n          fill=\"none\"\n          viewBox=\"0 0 122 148\"\n          className=\"absolute top-[10px] left-[85px] z-10 -scale-x-100\"\n        >\n          <g clipPath=\"url(#ab)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M0 2.65c6.15-4.024 12.299-2.753 17.812-.847a115.56 115.56 0 0 1 21.84 10.59C70.4 32.727 88.849 61.744 96.483 97.54c1.908 9.108 2.544 18.639 3.817 29.017 8.481-4.871 12.934-14.402 21.416-19.909 1.061 4.236-1.06 6.989-2.756 9.319-6.998 9.531-14.207 19.062-21.63 28.382-3.604 4.448-6.36 4.871-10.177 1.059-8.058-7.837-12.935-17.368-14.42-28.382 0-.424.636-1.059 1.485-2.118 9.118 2.33 6.997 13.979 14.843 18.215 3.393-14.614.848-28.593-2.969-42.149-4.029-14.19-9.33-27.746-17.812-39.82-8.27-11.86-18.66-21.392-30.11-30.287C26.93 11.758 14.207 6.039 0 2.65Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"ab\">\n              <path fill=\"currentColor\" d=\"M0 0h122v148H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n        <TooltipDemo\n          label=\"Browser\"\n          hideLabel\n          payload={[\n            { name: \"Chrome\", value: 1286, fill: \"var(--chart-3)\" },\n            { name: \"Firefox\", value: 1000, fill: \"var(--chart-4)\" },\n          ]}\n          indicator=\"dashed\"\n          className=\"w-[8rem]\"\n        />\n      </div>\n      <div className=\"hidden! md:flex!\">\n        <TooltipDemo\n          label=\"Page Views\"\n          payload={[{ name: \"Desktop\", value: 12486, fill: \"var(--chart-3)\" }]}\n          className=\"w-[9rem]\"\n          indicator=\"line\"\n        />\n      </div>\n      <div className=\"items-start! justify-start!\">\n        <div className=\"absolute top-[60px] left-[50px] z-10 text-sm font-medium\">\n          Indicator\n        </div>\n        <TooltipDemo\n          label=\"Browser\"\n          hideLabel\n          payload={[{ name: \"Chrome\", value: 1286, fill: \"var(--chart-1)\" }]}\n          indicator=\"dot\"\n          className=\"w-[8rem]\"\n        />\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"15\"\n          height=\"34\"\n          fill=\"none\"\n          viewBox=\"0 0 75 175\"\n          className=\"absolute top-[38px] left-[30px] z-10 rotate-[-40deg]\"\n        >\n          <g clipPath=\"url(#abc)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M20.187 175c-4.439-2.109-7.186-2.531-8.032-4.008-3.17-5.484-6.763-10.968-8.454-17.084-5.073-16.242-4.439-32.694-1.057-49.146 5.707-28.053 18.388-52.942 34.24-76.565 1.692-2.531 3.171-5.063 4.862-7.805 0-.21-.211-.632-.634-1.265-4.65 1.265-9.511 2.53-14.161 3.585-2.537.422-5.496.422-8.032-.421-1.48-.422-3.593-2.742-3.593-4.219 0-1.898 1.48-4.218 2.747-5.906 1.057-1.054 2.96-1.265 4.65-1.687C35.406 7.315 48.088 3.729 60.98.776c10.99-2.53 14.584 1.055 13.95 11.812-.634 11.18-.846 22.358-1.268 33.326-.212 3.375-.846 6.96-1.268 10.757-8.878-4.007-8.878-4.007-12.048-38.177C47.03 33.259 38.153 49.289 29.91 65.741 21.667 82.193 16.17 99.49 13.212 117.84c-2.959 18.984.634 36.912 6.975 57.161Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"abc\">\n              <path fill=\"currentColor\" d=\"M0 0h75v175H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n      </div>\n    </div>\n  )\n}\n\nfunction TooltipDemo({\n  indicator = \"dot\",\n  label,\n  payload,\n  hideLabel,\n  hideIndicator,\n  className,\n}: {\n  label: string\n  hideLabel?: boolean\n  hideIndicator?: boolean\n  indicator?: \"line\" | \"dot\" | \"dashed\"\n  payload: {\n    name: string\n    value: number\n    fill: string\n  }[]\n  nameKey?: string\n  labelKey?: string\n} & React.ComponentProps<\"div\">) {\n  const tooltipLabel = hideLabel ? null : (\n    <div className=\"font-medium\">{label}</div>\n  )\n\n  if (!payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\n        \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl transition-all ease-in-out hover:-translate-y-0.5\",\n        className\n      )}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload.map((item, index) => {\n          const indicatorColor = item.fill\n\n          return (\n            <div\n              key={index}\n              className={cn(\n                \"flex w-full items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                indicator === \"dot\" && \"items-center\"\n              )}\n            >\n              <>\n                {!hideIndicator && (\n                  <div\n                    className={cn(\n                      \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n                      {\n                        \"h-2.5 w-2.5\": indicator === \"dot\",\n                        \"w-1\": indicator === \"line\",\n                        \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                          indicator === \"dashed\",\n                        \"my-0.5\": nestLabel && indicator === \"dashed\",\n                      }\n                    )}\n                    style={\n                      {\n                        \"--color-bg\": indicatorColor,\n                        \"--color-border\": indicatorColor,\n                      } as React.CSSProperties\n                    }\n                  />\n                )}\n                <div\n                  className={cn(\n                    \"flex flex-1 justify-between leading-none\",\n                    nestLabel ? \"items-end\" : \"items-center\"\n                  )}\n                >\n                  <div className=\"grid gap-1.5\">\n                    {nestLabel ? tooltipLabel : null}\n                    <span className=\"text-muted-foreground\">{item.name}</span>\n                  </div>\n                  <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                    {item.value.toLocaleString()}\n                  </span>\n                </div>\n              </>\n            </div>\n          )\n        })}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/checkbox-basic.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\n\nexport function CheckboxBasic() {\n  return (\n    <FieldGroup className=\"mx-auto w-56\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms-checkbox-basic\" name=\"terms-checkbox-basic\" />\n        <FieldLabel htmlFor=\"terms-checkbox-basic\">\n          Accept terms and conditions\n        </FieldLabel>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/checkbox-demo.tsx",
    "content": "\"use client\"\n\nimport { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldTitle,\n} from \"@/examples/radix/ui/field\"\nimport { Label } from \"@/examples/radix/ui/label\"\n\nexport default function CheckboxDemo() {\n  return (\n    <FieldGroup className=\"max-w-sm\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms-checkbox\" name=\"terms-checkbox\" />\n        <Label htmlFor=\"terms-checkbox\">Accept terms and conditions</Label>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <Checkbox\n          id=\"terms-checkbox-2\"\n          name=\"terms-checkbox-2\"\n          defaultChecked\n        />\n        <FieldContent>\n          <FieldLabel htmlFor=\"terms-checkbox-2\">\n            Accept terms and conditions\n          </FieldLabel>\n          <FieldDescription>\n            By clicking this checkbox, you agree to the terms.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\" data-disabled>\n        <Checkbox id=\"toggle-checkbox\" name=\"toggle-checkbox\" disabled />\n        <FieldLabel htmlFor=\"toggle-checkbox\">Enable notifications</FieldLabel>\n      </Field>\n      <FieldLabel>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"toggle-checkbox-2\" name=\"toggle-checkbox-2\" />\n          <FieldContent>\n            <FieldTitle>Enable notifications</FieldTitle>\n            <FieldDescription>\n              You can enable or disable notifications at any time.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n      </FieldLabel>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/checkbox-description.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\n\nexport function CheckboxDescription() {\n  return (\n    <FieldGroup className=\"mx-auto w-72\">\n      <Field orientation=\"horizontal\">\n        <Checkbox\n          id=\"terms-checkbox-desc\"\n          name=\"terms-checkbox-desc\"\n          defaultChecked\n        />\n        <FieldContent>\n          <FieldLabel htmlFor=\"terms-checkbox-desc\">\n            Accept terms and conditions\n          </FieldLabel>\n          <FieldDescription>\n            By clicking this checkbox, you agree to the terms and conditions.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/checkbox-disabled.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\n\nexport function CheckboxDisabled() {\n  return (\n    <FieldGroup className=\"mx-auto w-56\">\n      <Field orientation=\"horizontal\" data-disabled>\n        <Checkbox\n          id=\"toggle-checkbox-disabled\"\n          name=\"toggle-checkbox-disabled\"\n          disabled\n        />\n        <FieldLabel htmlFor=\"toggle-checkbox-disabled\">\n          Enable notifications\n        </FieldLabel>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/checkbox-group.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\n\nexport function CheckboxGroup() {\n  return (\n    <FieldSet>\n      <FieldLegend variant=\"label\">\n        Show these items on the desktop:\n      </FieldLegend>\n      <FieldDescription>\n        Select the items you want to show on the desktop.\n      </FieldDescription>\n      <FieldGroup className=\"gap-3\">\n        <Field orientation=\"horizontal\">\n          <Checkbox\n            id=\"finder-pref-9k2-hard-disks-ljj-checkbox\"\n            name=\"finder-pref-9k2-hard-disks-ljj-checkbox\"\n            defaultChecked\n          />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-hard-disks-ljj-checkbox\"\n            className=\"font-normal\"\n          >\n            Hard disks\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox\n            id=\"finder-pref-9k2-external-disks-1yg-checkbox\"\n            name=\"finder-pref-9k2-external-disks-1yg-checkbox\"\n            defaultChecked\n          />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-external-disks-1yg-checkbox\"\n            className=\"font-normal\"\n          >\n            External disks\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox\n            id=\"finder-pref-9k2-cds-dvds-fzt-checkbox\"\n            name=\"finder-pref-9k2-cds-dvds-fzt-checkbox\"\n          />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-cds-dvds-fzt-checkbox\"\n            className=\"font-normal\"\n          >\n            CDs, DVDs, and iPods\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox\n            id=\"finder-pref-9k2-connected-servers-6l2-checkbox\"\n            name=\"finder-pref-9k2-connected-servers-6l2-checkbox\"\n          />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-connected-servers-6l2-checkbox\"\n            className=\"font-normal\"\n          >\n            Connected servers\n          </FieldLabel>\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/checkbox-invalid.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\n\nexport function CheckboxInvalid() {\n  return (\n    <FieldGroup className=\"mx-auto w-56\">\n      <Field orientation=\"horizontal\" data-invalid>\n        <Checkbox\n          id=\"terms-checkbox-invalid\"\n          name=\"terms-checkbox-invalid\"\n          aria-invalid\n        />\n        <FieldLabel htmlFor=\"terms-checkbox-invalid\">\n          Accept terms and conditions\n        </FieldLabel>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/checkbox-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Checkbox } from \"@/examples/radix/ui-rtl/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldTitle,\n} from \"@/examples/radix/ui-rtl/field\"\nimport { Label } from \"@/examples/radix/ui-rtl/label\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      acceptTerms: \"Accept terms and conditions\",\n      acceptTermsDescription:\n        \"By clicking this checkbox, you agree to the terms.\",\n      enableNotifications: \"Enable notifications\",\n      enableNotificationsDescription:\n        \"You can enable or disable notifications at any time.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      acceptTerms: \"قبول الشروط والأحكام\",\n      acceptTermsDescription: \"بالنقر على هذا المربع، فإنك توافق على الشروط.\",\n      enableNotifications: \"تفعيل الإشعارات\",\n      enableNotificationsDescription:\n        \"يمكنك تفعيل أو إلغاء تفعيل الإشعارات في أي وقت.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      acceptTerms: \"קבל תנאים והגבלות\",\n      acceptTermsDescription:\n        \"על ידי לחיצה על תיבת הסימון הזו, אתה מסכים לתנאים.\",\n      enableNotifications: \"הפעל התראות\",\n      enableNotificationsDescription:\n        \"אתה יכול להפעיל או להשבית התראות בכל עת.\",\n    },\n  },\n}\n\nexport function CheckboxRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <FieldGroup className=\"max-w-sm\" dir={dir}>\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms-checkbox-rtl\" name=\"terms-checkbox\" />\n        <Label htmlFor=\"terms-checkbox-rtl\">{t.acceptTerms}</Label>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <Checkbox\n          id=\"terms-checkbox-2-rtl\"\n          name=\"terms-checkbox-2\"\n          defaultChecked\n        />\n        <FieldContent>\n          <FieldLabel htmlFor=\"terms-checkbox-2-rtl\">\n            {t.acceptTerms}\n          </FieldLabel>\n          <FieldDescription>{t.acceptTermsDescription}</FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\" data-disabled>\n        <Checkbox id=\"toggle-checkbox-rtl\" name=\"toggle-checkbox\" disabled />\n        <FieldLabel htmlFor=\"toggle-checkbox-rtl\">\n          {t.enableNotifications}\n        </FieldLabel>\n      </Field>\n      <FieldLabel>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"toggle-checkbox-2\" name=\"toggle-checkbox-2\" />\n          <FieldContent>\n            <FieldTitle>{t.enableNotifications}</FieldTitle>\n            <FieldDescription>\n              {t.enableNotificationsDescription}\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n      </FieldLabel>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/checkbox-table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/radix/ui/table\"\n\nconst tableData = [\n  {\n    id: \"1\",\n    name: \"Sarah Chen\",\n    email: \"sarah.chen@example.com\",\n    role: \"Admin\",\n  },\n  {\n    id: \"2\",\n    name: \"Marcus Rodriguez\",\n    email: \"marcus.rodriguez@example.com\",\n    role: \"User\",\n  },\n  {\n    id: \"3\",\n    name: \"Priya Patel\",\n    email: \"priya.patel@example.com\",\n    role: \"User\",\n  },\n  {\n    id: \"4\",\n    name: \"David Kim\",\n    email: \"david.kim@example.com\",\n    role: \"Editor\",\n  },\n]\n\nexport function CheckboxInTable() {\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\n    new Set([\"1\"])\n  )\n\n  const selectAll = selectedRows.size === tableData.length\n\n  const handleSelectAll = (checked: boolean) => {\n    if (checked) {\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\n    } else {\n      setSelectedRows(new Set())\n    }\n  }\n\n  const handleSelectRow = (id: string, checked: boolean) => {\n    const newSelected = new Set(selectedRows)\n    if (checked) {\n      newSelected.add(id)\n    } else {\n      newSelected.delete(id)\n    }\n    setSelectedRows(newSelected)\n  }\n\n  return (\n    <Table>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-8\">\n            <Checkbox\n              id=\"select-all-checkbox\"\n              name=\"select-all-checkbox\"\n              checked={selectAll}\n              onCheckedChange={handleSelectAll}\n            />\n          </TableHead>\n          <TableHead>Name</TableHead>\n          <TableHead>Email</TableHead>\n          <TableHead>Role</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {tableData.map((row) => (\n          <TableRow\n            key={row.id}\n            data-state={selectedRows.has(row.id) ? \"selected\" : undefined}\n          >\n            <TableCell>\n              <Checkbox\n                id={`row-${row.id}-checkbox`}\n                name={`row-${row.id}-checkbox`}\n                checked={selectedRows.has(row.id)}\n                onCheckedChange={(checked) =>\n                  handleSelectRow(row.id, checked === true)\n                }\n              />\n            </TableCell>\n            <TableCell className=\"font-medium\">{row.name}</TableCell>\n            <TableCell>{row.email}</TableCell>\n            <TableCell>{row.role}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/collapsible-basic.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Card, CardContent } from \"@/examples/radix/ui/card\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui/collapsible\"\n\nimport { ChevronDownIcon } from \"@/registry/icons/__lucide__\"\n\nexport function CollapsibleBasic() {\n  return (\n    <Card className=\"mx-auto w-full max-w-sm\">\n      <CardContent>\n        <Collapsible className=\"rounded-md data-[state=open]:bg-muted\">\n          <CollapsibleTrigger asChild>\n            <Button variant=\"ghost\" className=\"group w-full\">\n              Product details\n              <ChevronDownIcon className=\"ml-auto group-data-[state=open]:rotate-180\" />\n            </Button>\n          </CollapsibleTrigger>\n          <CollapsibleContent className=\"flex flex-col items-start gap-2 p-2.5 pt-0 text-sm\">\n            <div>\n              This panel can be expanded or collapsed to reveal additional\n              content.\n            </div>\n            <Button size=\"xs\">Learn More</Button>\n          </CollapsibleContent>\n        </Collapsible>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/collapsible-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui/collapsible\"\nimport { ChevronsUpDown } from \"lucide-react\"\n\nexport default function CollapsibleDemo() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Collapsible\n      open={isOpen}\n      onOpenChange={setIsOpen}\n      className=\"flex w-[350px] flex-col gap-2\"\n    >\n      <div className=\"flex items-center justify-between gap-4 px-4\">\n        <h4 className=\"text-sm font-semibold\">Order #4189</h4>\n        <CollapsibleTrigger asChild>\n          <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n            <ChevronsUpDown />\n            <span className=\"sr-only\">Toggle details</span>\n          </Button>\n        </CollapsibleTrigger>\n      </div>\n      <div className=\"flex items-center justify-between rounded-md border px-4 py-2 text-sm\">\n        <span className=\"text-muted-foreground\">Status</span>\n        <span className=\"font-medium\">Shipped</span>\n      </div>\n      <CollapsibleContent className=\"flex flex-col gap-2\">\n        <div className=\"rounded-md border px-4 py-2 text-sm\">\n          <p className=\"font-medium\">Shipping address</p>\n          <p className=\"text-muted-foreground\">100 Market St, San Francisco</p>\n        </div>\n        <div className=\"rounded-md border px-4 py-2 text-sm\">\n          <p className=\"font-medium\">Items</p>\n          <p className=\"text-muted-foreground\">2x Studio Headphones</p>\n        </div>\n      </CollapsibleContent>\n    </Collapsible>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/collapsible-file-tree.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/examples/radix/ui/card\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui/collapsible\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/examples/radix/ui/tabs\"\nimport { ChevronRightIcon, FileIcon, FolderIcon } from \"lucide-react\"\n\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\n\nexport function CollapsibleFileTree() {\n  const fileTree: FileTreeItem[] = [\n    {\n      name: \"components\",\n      items: [\n        {\n          name: \"ui\",\n          items: [\n            { name: \"button.tsx\" },\n            { name: \"card.tsx\" },\n            { name: \"dialog.tsx\" },\n            { name: \"input.tsx\" },\n            { name: \"select.tsx\" },\n            { name: \"table.tsx\" },\n          ],\n        },\n        { name: \"login-form.tsx\" },\n        { name: \"register-form.tsx\" },\n      ],\n    },\n    {\n      name: \"lib\",\n      items: [{ name: \"utils.ts\" }, { name: \"cn.ts\" }, { name: \"api.ts\" }],\n    },\n    {\n      name: \"hooks\",\n      items: [\n        { name: \"use-media-query.ts\" },\n        { name: \"use-debounce.ts\" },\n        { name: \"use-local-storage.ts\" },\n      ],\n    },\n    {\n      name: \"types\",\n      items: [{ name: \"index.d.ts\" }, { name: \"api.d.ts\" }],\n    },\n    {\n      name: \"public\",\n      items: [\n        { name: \"favicon.ico\" },\n        { name: \"logo.svg\" },\n        { name: \"images\" },\n      ],\n    },\n    { name: \"app.tsx\" },\n    { name: \"layout.tsx\" },\n    { name: \"globals.css\" },\n    { name: \"package.json\" },\n    { name: \"tsconfig.json\" },\n    { name: \"README.md\" },\n    { name: \".gitignore\" },\n  ]\n\n  const renderItem = (fileItem: FileTreeItem) => {\n    if (\"items\" in fileItem) {\n      return (\n        <Collapsible key={fileItem.name}>\n          <CollapsibleTrigger asChild>\n            <Button\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\"\n            >\n              <ChevronRightIcon className=\"transition-transform group-data-[state=open]:rotate-90\" />\n              <FolderIcon />\n              {fileItem.name}\n            </Button>\n          </CollapsibleTrigger>\n          <CollapsibleContent className=\"mt-1 ml-5 style-lyra:ml-4\">\n            <div className=\"flex flex-col gap-1\">\n              {fileItem.items.map((child) => renderItem(child))}\n            </div>\n          </CollapsibleContent>\n        </Collapsible>\n      )\n    }\n    return (\n      <Button\n        key={fileItem.name}\n        variant=\"link\"\n        size=\"sm\"\n        className=\"w-full justify-start gap-2 text-foreground\"\n      >\n        <FileIcon />\n        <span>{fileItem.name}</span>\n      </Button>\n    )\n  }\n\n  return (\n    <Card className=\"mx-auto w-full max-w-[16rem] gap-2\" size=\"sm\">\n      <CardHeader>\n        <Tabs defaultValue=\"explorer\">\n          <TabsList className=\"w-full\">\n            <TabsTrigger value=\"explorer\">Explorer</TabsTrigger>\n            <TabsTrigger value=\"settings\">Outline</TabsTrigger>\n          </TabsList>\n        </Tabs>\n      </CardHeader>\n      <CardContent>\n        <div className=\"flex flex-col gap-1\">\n          {fileTree.map((item) => renderItem(item))}\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/collapsible-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui-rtl/collapsible\"\nimport { ChevronsUpDown } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      orderNumber: \"Order #4189\",\n      status: \"Status\",\n      shipped: \"Shipped\",\n      shippingAddress: \"Shipping address\",\n      address: \"100 Market St, San Francisco\",\n      items: \"Items\",\n      itemsDescription: \"2x Studio Headphones\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      orderNumber: \"الطلب #4189\",\n      status: \"الحالة\",\n      shipped: \"تم الشحن\",\n      shippingAddress: \"عنوان الشحن\",\n      address: \"100 Market St, San Francisco\",\n      items: \"العناصر\",\n      itemsDescription: \"2x سماعات الاستوديو\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      orderNumber: \"הזמנה #4189\",\n      status: \"סטטוס\",\n      shipped: \"נשלח\",\n      shippingAddress: \"כתובת משלוח\",\n      address: \"100 Market St, San Francisco\",\n      items: \"פריטים\",\n      itemsDescription: \"2x אוזניות סטודיו\",\n    },\n  },\n}\n\nexport function CollapsibleRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Collapsible\n      open={isOpen}\n      onOpenChange={setIsOpen}\n      className=\"flex w-[350px] flex-col gap-2\"\n      dir={dir}\n    >\n      <div className=\"flex items-center justify-between gap-4 px-4\">\n        <h4 className=\"text-sm font-semibold\">{t.orderNumber}</h4>\n        <CollapsibleTrigger asChild>\n          <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n            <ChevronsUpDown />\n            <span className=\"sr-only\">Toggle details</span>\n          </Button>\n        </CollapsibleTrigger>\n      </div>\n      <div className=\"flex items-center justify-between rounded-md border px-4 py-2 text-sm\">\n        <span className=\"text-muted-foreground\">{t.status}</span>\n        <span className=\"font-medium\">{t.shipped}</span>\n      </div>\n      <CollapsibleContent className=\"flex flex-col gap-2\">\n        <div className=\"rounded-md border px-4 py-2 text-sm\">\n          <p className=\"font-medium\">{t.shippingAddress}</p>\n          <p className=\"text-muted-foreground\">{t.address}</p>\n        </div>\n        <div className=\"rounded-md border px-4 py-2 text-sm\">\n          <p className=\"font-medium\">{t.items}</p>\n          <p className=\"text-muted-foreground\">{t.itemsDescription}</p>\n        </div>\n      </CollapsibleContent>\n    </Collapsible>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/collapsible-settings.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui/card\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui/collapsible\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { MaximizeIcon, MinimizeIcon } from \"lucide-react\"\n\nexport function CollapsibleSettings() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Card className=\"mx-auto w-full max-w-xs\" size=\"sm\">\n      <CardHeader>\n        <CardTitle>Radius</CardTitle>\n        <CardDescription>Set the corner radius of the element.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Collapsible\n          open={isOpen}\n          onOpenChange={setIsOpen}\n          className=\"flex items-start gap-2\"\n        >\n          <FieldGroup className=\"grid w-full grid-cols-2 gap-2\">\n            <Field>\n              <FieldLabel htmlFor=\"radius-x\" className=\"sr-only\">\n                Radius X\n              </FieldLabel>\n              <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"radius-y\" className=\"sr-only\">\n                Radius Y\n              </FieldLabel>\n              <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n            </Field>\n            <CollapsibleContent className=\"col-span-full grid grid-cols-subgrid gap-2\">\n              <Field>\n                <FieldLabel htmlFor=\"radius-x\" className=\"sr-only\">\n                  Radius X\n                </FieldLabel>\n                <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"radius-y\" className=\"sr-only\">\n                  Radius Y\n                </FieldLabel>\n                <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n              </Field>\n            </CollapsibleContent>\n          </FieldGroup>\n          <CollapsibleTrigger asChild>\n            <Button variant=\"outline\" size=\"icon\">\n              {isOpen ? <MinimizeIcon /> : <MaximizeIcon />}\n            </Button>\n          </CollapsibleTrigger>\n        </Collapsible>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-auto-highlight.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/radix/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxAutoHighlight() {\n  return (\n    <Combobox items={frameworks} autoHighlight>\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-basic.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/radix/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport default function ComboboxBasic() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-clear.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/radix/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxWithClear() {\n  return (\n    <Combobox items={frameworks} defaultValue={frameworks[0]}>\n      <ComboboxInput placeholder=\"Select a framework\" showClear />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-custom.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/radix/ui/combobox\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\n\nconst countries = [\n  { code: \"\", value: \"\", continent: \"\", label: \"Select country\" },\n  {\n    code: \"ar\",\n    value: \"argentina\",\n    label: \"Argentina\",\n    continent: \"South America\",\n  },\n  { code: \"au\", value: \"australia\", label: \"Australia\", continent: \"Oceania\" },\n  { code: \"br\", value: \"brazil\", label: \"Brazil\", continent: \"South America\" },\n  { code: \"ca\", value: \"canada\", label: \"Canada\", continent: \"North America\" },\n  { code: \"cn\", value: \"china\", label: \"China\", continent: \"Asia\" },\n  {\n    code: \"co\",\n    value: \"colombia\",\n    label: \"Colombia\",\n    continent: \"South America\",\n  },\n  { code: \"eg\", value: \"egypt\", label: \"Egypt\", continent: \"Africa\" },\n  { code: \"fr\", value: \"france\", label: \"France\", continent: \"Europe\" },\n  { code: \"de\", value: \"germany\", label: \"Germany\", continent: \"Europe\" },\n  { code: \"it\", value: \"italy\", label: \"Italy\", continent: \"Europe\" },\n  { code: \"jp\", value: \"japan\", label: \"Japan\", continent: \"Asia\" },\n  { code: \"ke\", value: \"kenya\", label: \"Kenya\", continent: \"Africa\" },\n  { code: \"mx\", value: \"mexico\", label: \"Mexico\", continent: \"North America\" },\n  {\n    code: \"nz\",\n    value: \"new-zealand\",\n    label: \"New Zealand\",\n    continent: \"Oceania\",\n  },\n  { code: \"ng\", value: \"nigeria\", label: \"Nigeria\", continent: \"Africa\" },\n  {\n    code: \"za\",\n    value: \"south-africa\",\n    label: \"South Africa\",\n    continent: \"Africa\",\n  },\n  { code: \"kr\", value: \"south-korea\", label: \"South Korea\", continent: \"Asia\" },\n  {\n    code: \"gb\",\n    value: \"united-kingdom\",\n    label: \"United Kingdom\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"us\",\n    value: \"united-states\",\n    label: \"United States\",\n    continent: \"North America\",\n  },\n]\n\nexport function ComboboxWithCustomItems() {\n  return (\n    <Combobox\n      items={countries.filter((country) => country.code !== \"\")}\n      itemToStringValue={(country: (typeof countries)[number]) => country.label}\n    >\n      <ComboboxInput placeholder=\"Search countries...\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No countries found.</ComboboxEmpty>\n        <ComboboxList>\n          {(country) => (\n            <ComboboxItem key={country.code} value={country}>\n              <Item size=\"xs\" className=\"p-0\">\n                <ItemContent>\n                  <ItemTitle className=\"whitespace-nowrap\">\n                    {country.label}\n                  </ItemTitle>\n                  <ItemDescription>\n                    {country.continent} ({country.code})\n                  </ItemDescription>\n                </ItemContent>\n              </Item>\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-demo.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/radix/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport default function ComboboxBasic() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-disabled.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/radix/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxDisabled() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" disabled />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-groups.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxCollection,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxGroup,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxLabel,\n  ComboboxList,\n  ComboboxSeparator,\n} from \"@/examples/radix/ui/combobox\"\n\nconst timezones = [\n  {\n    value: \"Americas\",\n    items: [\n      \"(GMT-5) New York\",\n      \"(GMT-8) Los Angeles\",\n      \"(GMT-6) Chicago\",\n      \"(GMT-5) Toronto\",\n      \"(GMT-8) Vancouver\",\n      \"(GMT-3) São Paulo\",\n    ],\n  },\n  {\n    value: \"Europe\",\n    items: [\n      \"(GMT+0) London\",\n      \"(GMT+1) Paris\",\n      \"(GMT+1) Berlin\",\n      \"(GMT+1) Rome\",\n      \"(GMT+1) Madrid\",\n      \"(GMT+1) Amsterdam\",\n    ],\n  },\n  {\n    value: \"Asia/Pacific\",\n    items: [\n      \"(GMT+9) Tokyo\",\n      \"(GMT+8) Shanghai\",\n      \"(GMT+8) Singapore\",\n      \"(GMT+4) Dubai\",\n      \"(GMT+11) Sydney\",\n      \"(GMT+9) Seoul\",\n    ],\n  },\n] as const\n\nexport function ComboboxWithGroupsAndSeparator() {\n  return (\n    <Combobox items={timezones}>\n      <ComboboxInput placeholder=\"Select a timezone\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n        <ComboboxList>\n          {(group, index) => (\n            <ComboboxGroup key={group.value} items={group.items}>\n              <ComboboxLabel>{group.value}</ComboboxLabel>\n              <ComboboxCollection>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxCollection>\n              {index < timezones.length - 1 && <ComboboxSeparator />}\n            </ComboboxGroup>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-input-group.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxCollection,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxGroup,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxLabel,\n  ComboboxList,\n} from \"@/examples/radix/ui/combobox\"\nimport { InputGroupAddon } from \"@/examples/radix/ui/input-group\"\nimport { GlobeIcon } from \"lucide-react\"\n\nconst timezones = [\n  {\n    value: \"Americas\",\n    items: [\n      \"(GMT-5) New York\",\n      \"(GMT-8) Los Angeles\",\n      \"(GMT-6) Chicago\",\n      \"(GMT-5) Toronto\",\n      \"(GMT-8) Vancouver\",\n      \"(GMT-3) São Paulo\",\n    ],\n  },\n  {\n    value: \"Europe\",\n    items: [\n      \"(GMT+0) London\",\n      \"(GMT+1) Paris\",\n      \"(GMT+1) Berlin\",\n      \"(GMT+1) Rome\",\n      \"(GMT+1) Madrid\",\n      \"(GMT+1) Amsterdam\",\n    ],\n  },\n  {\n    value: \"Asia/Pacific\",\n    items: [\n      \"(GMT+9) Tokyo\",\n      \"(GMT+8) Shanghai\",\n      \"(GMT+8) Singapore\",\n      \"(GMT+4) Dubai\",\n      \"(GMT+11) Sydney\",\n      \"(GMT+9) Seoul\",\n    ],\n  },\n] as const\n\nexport function ComboxboxInputGroup() {\n  return (\n    <Combobox items={timezones}>\n      <ComboboxInput placeholder=\"Select a timezone\">\n        <InputGroupAddon>\n          <GlobeIcon />\n        </InputGroupAddon>\n      </ComboboxInput>\n      <ComboboxContent alignOffset={-28} className=\"w-60\">\n        <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n        <ComboboxList>\n          {(group) => (\n            <ComboboxGroup key={group.value} items={group.items}>\n              <ComboboxLabel>{group.value}</ComboboxLabel>\n              <ComboboxCollection>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxCollection>\n            </ComboboxGroup>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-invalid.tsx",
    "content": "\"use client\"\n\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/examples/radix/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxInvalid() {\n  return (\n    <Combobox items={frameworks}>\n      <ComboboxInput placeholder=\"Select a framework\" aria-invalid=\"true\" />\n      <ComboboxContent>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-multiple.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/examples/radix/ui/combobox\"\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nexport function ComboboxMultiple() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <Combobox\n      multiple\n      autoHighlight\n      items={frameworks}\n      defaultValue={[frameworks[0]]}\n    >\n      <ComboboxChips ref={anchor} className=\"w-full max-w-xs\">\n        <ComboboxValue>\n          {(values) => (\n            <React.Fragment>\n              {values.map((value: string) => (\n                <ComboboxChip key={value}>{value}</ComboboxChip>\n              ))}\n              <ComboboxChipsInput />\n            </React.Fragment>\n          )}\n        </ComboboxValue>\n      </ComboboxChips>\n      <ComboboxContent anchor={anchor}>\n        <ComboboxEmpty>No items found.</ComboboxEmpty>\n        <ComboboxList>\n          {(item) => (\n            <ComboboxItem key={item} value={item}>\n              {item}\n            </ComboboxItem>\n          )}\n        </ComboboxList>\n      </ComboboxContent>\n    </Combobox>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-popup.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxTrigger,\n  ComboboxValue,\n} from \"@/examples/radix/ui/combobox\"\n\nconst countries = [\n  { code: \"\", value: \"\", continent: \"\", label: \"Select country\" },\n  {\n    code: \"ar\",\n    value: \"argentina\",\n    label: \"Argentina\",\n    continent: \"South America\",\n  },\n  { code: \"au\", value: \"australia\", label: \"Australia\", continent: \"Oceania\" },\n  { code: \"br\", value: \"brazil\", label: \"Brazil\", continent: \"South America\" },\n  { code: \"ca\", value: \"canada\", label: \"Canada\", continent: \"North America\" },\n  { code: \"cn\", value: \"china\", label: \"China\", continent: \"Asia\" },\n  {\n    code: \"co\",\n    value: \"colombia\",\n    label: \"Colombia\",\n    continent: \"South America\",\n  },\n  { code: \"eg\", value: \"egypt\", label: \"Egypt\", continent: \"Africa\" },\n  { code: \"fr\", value: \"france\", label: \"France\", continent: \"Europe\" },\n  { code: \"de\", value: \"germany\", label: \"Germany\", continent: \"Europe\" },\n  { code: \"it\", value: \"italy\", label: \"Italy\", continent: \"Europe\" },\n  { code: \"jp\", value: \"japan\", label: \"Japan\", continent: \"Asia\" },\n  { code: \"ke\", value: \"kenya\", label: \"Kenya\", continent: \"Africa\" },\n  { code: \"mx\", value: \"mexico\", label: \"Mexico\", continent: \"North America\" },\n  {\n    code: \"nz\",\n    value: \"new-zealand\",\n    label: \"New Zealand\",\n    continent: \"Oceania\",\n  },\n  { code: \"ng\", value: \"nigeria\", label: \"Nigeria\", continent: \"Africa\" },\n  {\n    code: \"za\",\n    value: \"south-africa\",\n    label: \"South Africa\",\n    continent: \"Africa\",\n  },\n  { code: \"kr\", value: \"south-korea\", label: \"South Korea\", continent: \"Asia\" },\n  {\n    code: \"gb\",\n    value: \"united-kingdom\",\n    label: \"United Kingdom\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"us\",\n    value: \"united-states\",\n    label: \"United States\",\n    continent: \"North America\",\n  },\n]\n\nexport function ComboboxPopup() {\n  return (\n    <>\n      <Combobox items={countries} defaultValue={countries[0]}>\n        <ComboboxTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              className=\"w-64 justify-between font-normal\"\n            />\n          }\n        >\n          <ComboboxValue />\n        </ComboboxTrigger>\n        <ComboboxContent>\n          <ComboboxInput showTrigger={false} placeholder=\"Search\" />\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item.code} value={item}>\n                {item.label}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/combobox-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/examples/radix/ui-rtl/combobox\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui-rtl/field\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst categories = [\n  \"technology\",\n  \"design\",\n  \"business\",\n  \"marketing\",\n  \"education\",\n  \"health\",\n] as const\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Categories\",\n      placeholder: \"Add categories\",\n      empty: \"No categories found.\",\n      technology: \"Technology\",\n      design: \"Design\",\n      business: \"Business\",\n      marketing: \"Marketing\",\n      education: \"Education\",\n      health: \"Health\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"الفئات\",\n      placeholder: \"أضف فئات\",\n      empty: \"لم يتم العثور على فئات.\",\n      technology: \"التكنولوجيا\",\n      design: \"التصميم\",\n      business: \"الأعمال\",\n      marketing: \"التسويق\",\n      education: \"التعليم\",\n      health: \"الصحة\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"קטגוריות\",\n      placeholder: \"הוסף קטגוריות\",\n      empty: \"לא נמצאו קטגוריות.\",\n      technology: \"טכנולוגיה\",\n      design: \"עיצוב\",\n      business: \"עסקים\",\n      marketing: \"שיווק\",\n      education: \"חינוך\",\n      health: \"בריאות\",\n    },\n  },\n}\n\nexport function ComboboxRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const anchor = useComboboxAnchor()\n\n  const categoryLabels: Record<string, string> = {\n    technology: t.technology,\n    design: t.design,\n    business: t.business,\n    marketing: t.marketing,\n    education: t.education,\n    health: t.health,\n  }\n\n  return (\n    <Field className=\"mx-auto w-full max-w-xs\">\n      <FieldLabel>{t.label}</FieldLabel>\n      <Combobox\n        multiple\n        autoHighlight\n        items={categories}\n        defaultValue={[categories[0]]}\n        itemToStringValue={(item: (typeof categories)[number]) =>\n          categoryLabels[item] || item\n        }\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value}>\n                    {categoryLabels[value] || value}\n                  </ComboboxChip>\n                ))}\n                <ComboboxChipsInput placeholder={t.placeholder} />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent\n          anchor={anchor}\n          dir={dir}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <ComboboxEmpty>{t.empty}</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {categoryLabels[item] || item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/command-basic.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/examples/radix/ui/command\"\n\nexport function CommandBasic() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button onClick={() => setOpen(true)} variant=\"outline\" className=\"w-fit\">\n        Open Menu\n      </Button>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <Command>\n          <CommandInput placeholder=\"Type a command or search...\" />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup heading=\"Suggestions\">\n              <CommandItem>Calendar</CommandItem>\n              <CommandItem>Search Emoji</CommandItem>\n              <CommandItem>Calculator</CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </CommandDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/command-demo.tsx",
    "content": "import {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/radix/ui/command\"\nimport {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nexport function CommandDemo() {\n  return (\n    <Command className=\"max-w-sm rounded-lg border\">\n      <CommandInput placeholder=\"Type a command or search...\" />\n      <CommandList>\n        <CommandEmpty>No results found.</CommandEmpty>\n        <CommandGroup heading=\"Suggestions\">\n          <CommandItem>\n            <Calendar />\n            <span>Calendar</span>\n          </CommandItem>\n          <CommandItem>\n            <Smile />\n            <span>Search Emoji</span>\n          </CommandItem>\n          <CommandItem disabled>\n            <Calculator />\n            <span>Calculator</span>\n          </CommandItem>\n        </CommandGroup>\n        <CommandSeparator />\n        <CommandGroup heading=\"Settings\">\n          <CommandItem>\n            <User />\n            <span>Profile</span>\n            <CommandShortcut>⌘P</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <CreditCard />\n            <span>Billing</span>\n            <CommandShortcut>⌘B</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <Settings />\n            <span>Settings</span>\n            <CommandShortcut>⌘S</CommandShortcut>\n          </CommandItem>\n        </CommandGroup>\n      </CommandList>\n    </Command>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/command-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/radix/ui/command\"\nimport {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nexport function CommandDialogDemo() {\n  const [open, setOpen] = React.useState(false)\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if (e.key === \"j\" && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault()\n        setOpen((open) => !open)\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => document.removeEventListener(\"keydown\", down)\n  }, [])\n\n  return (\n    <>\n      <p className=\"text-sm text-muted-foreground\">\n        Press{\" \"}\n        <kbd className=\"pointer-events-none inline-flex h-5 items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100 select-none\">\n          <span className=\"text-xs\">⌘</span>J\n        </kbd>\n      </p>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <CommandInput placeholder=\"Type a command or search...\" />\n        <CommandList>\n          <CommandEmpty>No results found.</CommandEmpty>\n          <CommandGroup heading=\"Suggestions\">\n            <CommandItem>\n              <Calendar />\n              <span>Calendar</span>\n            </CommandItem>\n            <CommandItem>\n              <Smile />\n              <span>Search Emoji</span>\n            </CommandItem>\n            <CommandItem>\n              <Calculator />\n              <span>Calculator</span>\n            </CommandItem>\n          </CommandGroup>\n          <CommandSeparator />\n          <CommandGroup heading=\"Settings\">\n            <CommandItem>\n              <User />\n              <span>Profile</span>\n              <CommandShortcut>⌘P</CommandShortcut>\n            </CommandItem>\n            <CommandItem>\n              <CreditCard />\n              <span>Billing</span>\n              <CommandShortcut>⌘B</CommandShortcut>\n            </CommandItem>\n            <CommandItem>\n              <Settings />\n              <span>Settings</span>\n              <CommandShortcut>⌘S</CommandShortcut>\n            </CommandItem>\n          </CommandGroup>\n        </CommandList>\n      </CommandDialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/command-groups.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/radix/ui/command\"\nimport {\n  CalculatorIcon,\n  CalendarIcon,\n  CreditCardIcon,\n  SettingsIcon,\n  SmileIcon,\n  UserIcon,\n} from \"lucide-react\"\n\nexport function CommandWithGroups() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button onClick={() => setOpen(true)} variant=\"outline\" className=\"w-fit\">\n        Open Menu\n      </Button>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <Command>\n          <CommandInput placeholder=\"Type a command or search...\" />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup heading=\"Suggestions\">\n              <CommandItem>\n                <CalendarIcon />\n                <span>Calendar</span>\n              </CommandItem>\n              <CommandItem>\n                <SmileIcon />\n                <span>Search Emoji</span>\n              </CommandItem>\n              <CommandItem>\n                <CalculatorIcon />\n                <span>Calculator</span>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Settings\">\n              <CommandItem>\n                <UserIcon />\n                <span>Profile</span>\n                <CommandShortcut>⌘P</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <CreditCardIcon />\n                <span>Billing</span>\n                <CommandShortcut>⌘B</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <SettingsIcon />\n                <span>Settings</span>\n                <CommandShortcut>⌘S</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </CommandDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/command-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/radix/ui-rtl/command\"\nimport {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      placeholder: \"Type a command or search...\",\n      empty: \"No results found.\",\n      suggestions: \"Suggestions\",\n      calendar: \"Calendar\",\n      searchEmoji: \"Search Emoji\",\n      calculator: \"Calculator\",\n      settings: \"Settings\",\n      profile: \"Profile\",\n      billing: \"Billing\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"اكتب أمرًا أو ابحث...\",\n      empty: \"لم يتم العثور على نتائج.\",\n      suggestions: \"اقتراحات\",\n      calendar: \"التقويم\",\n      searchEmoji: \"البحث عن الرموز التعبيرية\",\n      calculator: \"الآلة الحاسبة\",\n      settings: \"الإعدادات\",\n      profile: \"الملف الشخصي\",\n      billing: \"الفوترة\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"הקלד פקודה או חפש...\",\n      empty: \"לא נמצאו תוצאות.\",\n      suggestions: \"הצעות\",\n      calendar: \"לוח שנה\",\n      searchEmoji: \"חפש אמוג'י\",\n      calculator: \"מחשבון\",\n      settings: \"הגדרות\",\n      profile: \"פרופיל\",\n      billing: \"חיוב\",\n    },\n  },\n}\n\nexport function CommandRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Command className=\"max-w-sm rounded-lg border\" dir={dir}>\n      <CommandInput placeholder={t.placeholder} dir={dir} />\n      <CommandList>\n        <CommandEmpty>{t.empty}</CommandEmpty>\n        <CommandGroup heading={t.suggestions}>\n          <CommandItem>\n            <Calendar />\n            <span>{t.calendar}</span>\n          </CommandItem>\n          <CommandItem>\n            <Smile />\n            <span>{t.searchEmoji}</span>\n          </CommandItem>\n          <CommandItem disabled>\n            <Calculator />\n            <span>{t.calculator}</span>\n          </CommandItem>\n        </CommandGroup>\n        <CommandSeparator />\n        <CommandGroup heading={t.settings}>\n          <CommandItem>\n            <User />\n            <span>{t.profile}</span>\n            <CommandShortcut>⌘P</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <CreditCard />\n            <span>{t.billing}</span>\n            <CommandShortcut>⌘B</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <Settings />\n            <span>{t.settings}</span>\n            <CommandShortcut>⌘S</CommandShortcut>\n          </CommandItem>\n        </CommandGroup>\n      </CommandList>\n    </Command>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/command-scrollable.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/examples/radix/ui/command\"\nimport {\n  BellIcon,\n  CalculatorIcon,\n  CalendarIcon,\n  ClipboardPasteIcon,\n  CodeIcon,\n  CopyIcon,\n  CreditCardIcon,\n  FileTextIcon,\n  FolderIcon,\n  FolderPlusIcon,\n  HelpCircleIcon,\n  HomeIcon,\n  ImageIcon,\n  InboxIcon,\n  LayoutGridIcon,\n  ListIcon,\n  PlusIcon,\n  ScissorsIcon,\n  SettingsIcon,\n  TrashIcon,\n  UserIcon,\n  ZoomInIcon,\n  ZoomOutIcon,\n} from \"lucide-react\"\n\nexport function CommandManyItems() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button onClick={() => setOpen(true)} variant=\"outline\" className=\"w-fit\">\n        Open Menu\n      </Button>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <Command>\n          <CommandInput placeholder=\"Type a command or search...\" />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup heading=\"Navigation\">\n              <CommandItem>\n                <HomeIcon />\n                <span>Home</span>\n                <CommandShortcut>⌘H</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <InboxIcon />\n                <span>Inbox</span>\n                <CommandShortcut>⌘I</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <FileTextIcon />\n                <span>Documents</span>\n                <CommandShortcut>⌘D</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <FolderIcon />\n                <span>Folders</span>\n                <CommandShortcut>⌘F</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Actions\">\n              <CommandItem>\n                <PlusIcon />\n                <span>New File</span>\n                <CommandShortcut>⌘N</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <FolderPlusIcon />\n                <span>New Folder</span>\n                <CommandShortcut>⇧⌘N</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <CopyIcon />\n                <span>Copy</span>\n                <CommandShortcut>⌘C</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <ScissorsIcon />\n                <span>Cut</span>\n                <CommandShortcut>⌘X</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <ClipboardPasteIcon />\n                <span>Paste</span>\n                <CommandShortcut>⌘V</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <TrashIcon />\n                <span>Delete</span>\n                <CommandShortcut>⌫</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"View\">\n              <CommandItem>\n                <LayoutGridIcon />\n                <span>Grid View</span>\n              </CommandItem>\n              <CommandItem>\n                <ListIcon />\n                <span>List View</span>\n              </CommandItem>\n              <CommandItem>\n                <ZoomInIcon />\n                <span>Zoom In</span>\n                <CommandShortcut>⌘+</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <ZoomOutIcon />\n                <span>Zoom Out</span>\n                <CommandShortcut>⌘-</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Account\">\n              <CommandItem>\n                <UserIcon />\n                <span>Profile</span>\n                <CommandShortcut>⌘P</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <CreditCardIcon />\n                <span>Billing</span>\n                <CommandShortcut>⌘B</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <SettingsIcon />\n                <span>Settings</span>\n                <CommandShortcut>⌘S</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <BellIcon />\n                <span>Notifications</span>\n              </CommandItem>\n              <CommandItem>\n                <HelpCircleIcon />\n                <span>Help & Support</span>\n              </CommandItem>\n            </CommandGroup>\n            <CommandSeparator />\n            <CommandGroup heading=\"Tools\">\n              <CommandItem>\n                <CalculatorIcon />\n                <span>Calculator</span>\n              </CommandItem>\n              <CommandItem>\n                <CalendarIcon />\n                <span>Calendar</span>\n              </CommandItem>\n              <CommandItem>\n                <ImageIcon />\n                <span>Image Editor</span>\n              </CommandItem>\n              <CommandItem>\n                <CodeIcon />\n                <span>Code Editor</span>\n              </CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </CommandDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/command-shortcuts.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandShortcut,\n} from \"@/examples/radix/ui/command\"\nimport { CreditCardIcon, SettingsIcon, UserIcon } from \"lucide-react\"\n\nexport function CommandWithShortcuts() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <Button onClick={() => setOpen(true)} variant=\"outline\" className=\"w-fit\">\n        Open Menu\n      </Button>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <Command>\n          <CommandInput placeholder=\"Type a command or search...\" />\n          <CommandList>\n            <CommandEmpty>No results found.</CommandEmpty>\n            <CommandGroup heading=\"Settings\">\n              <CommandItem>\n                <UserIcon />\n                <span>Profile</span>\n                <CommandShortcut>⌘P</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <CreditCardIcon />\n                <span>Billing</span>\n                <CommandShortcut>⌘B</CommandShortcut>\n              </CommandItem>\n              <CommandItem>\n                <SettingsIcon />\n                <span>Settings</span>\n                <CommandShortcut>⌘S</CommandShortcut>\n              </CommandItem>\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </CommandDialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-basic.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\n\nexport function ContextMenuBasic() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>Back</ContextMenuItem>\n          <ContextMenuItem disabled>Forward</ContextMenuItem>\n          <ContextMenuItem>Reload</ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-checkboxes.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\n\nexport function ContextMenuCheckboxes() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuCheckboxItem defaultChecked>\n            Show Bookmarks Bar\n          </ContextMenuCheckboxItem>\n          <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\n          <ContextMenuCheckboxItem defaultChecked>\n            Show Developer Tools\n          </ContextMenuCheckboxItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-demo.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\n\nexport function ContextMenuDemo() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent className=\"w-48\">\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Back\n            <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem disabled>\n            Forward\n            <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Reload\n            <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuSub>\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\n            <ContextMenuSubContent className=\"w-44\">\n              <ContextMenuGroup>\n                <ContextMenuItem>Save Page...</ContextMenuItem>\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n                <ContextMenuItem>Name Window...</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuCheckboxItem checked>\n            Show Bookmarks\n          </ContextMenuCheckboxItem>\n          <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuRadioGroup value=\"pedro\">\n            <ContextMenuLabel>People</ContextMenuLabel>\n            <ContextMenuRadioItem value=\"pedro\">\n              Pedro Duarte\n            </ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"colm\">Colm Tuite</ContextMenuRadioItem>\n          </ContextMenuRadioGroup>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-destructive.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuSeparator,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\nimport { PencilIcon, ShareIcon, TrashIcon } from \"lucide-react\"\n\nexport function ContextMenuDestructive() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            <PencilIcon />\n            Edit\n          </ContextMenuItem>\n          <ContextMenuItem>\n            <ShareIcon />\n            Share\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem variant=\"destructive\">\n            <TrashIcon />\n            Delete\n          </ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-groups.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\n\nexport function ContextMenuGroups() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuLabel>File</ContextMenuLabel>\n          <ContextMenuItem>\n            New File\n            <ContextMenuShortcut>⌘N</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Open File\n            <ContextMenuShortcut>⌘O</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Save\n            <ContextMenuShortcut>⌘S</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuLabel>Edit</ContextMenuLabel>\n          <ContextMenuItem>\n            Undo\n            <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Redo\n            <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Cut\n            <ContextMenuShortcut>⌘X</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Copy\n            <ContextMenuShortcut>⌘C</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Paste\n            <ContextMenuShortcut>⌘V</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem variant=\"destructive\">\n            Delete\n            <ContextMenuShortcut>⌫</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-icons.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuSeparator,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\nimport {\n  ClipboardPasteIcon,\n  CopyIcon,\n  ScissorsIcon,\n  TrashIcon,\n} from \"lucide-react\"\n\nexport function ContextMenuIcons() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            <CopyIcon />\n            Copy\n          </ContextMenuItem>\n          <ContextMenuItem>\n            <ScissorsIcon />\n            Cut\n          </ContextMenuItem>\n          <ContextMenuItem>\n            <ClipboardPasteIcon />\n            Paste\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem variant=\"destructive\">\n            <TrashIcon />\n            Delete\n          </ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-radio.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\n\nexport function ContextMenuRadio() {\n  const [user, setUser] = React.useState(\"pedro\")\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuLabel>People</ContextMenuLabel>\n          <ContextMenuRadioGroup value={user} onValueChange={setUser}>\n            <ContextMenuRadioItem value=\"pedro\">\n              Pedro Duarte\n            </ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"colm\">Colm Tuite</ContextMenuRadioItem>\n          </ContextMenuRadioGroup>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuLabel>Theme</ContextMenuLabel>\n          <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\n            <ContextMenuRadioItem value=\"light\">Light</ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"dark\">Dark</ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"system\">System</ContextMenuRadioItem>\n          </ContextMenuRadioGroup>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui-rtl/context-menu\"\nimport { ArrowLeftIcon, ArrowRightIcon, RotateCwIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      rightClick: \"Right click here\",\n      longPress: \"Long press here\",\n      navigation: \"Navigation\",\n      back: \"Back\",\n      forward: \"Forward\",\n      reload: \"Reload\",\n      moreTools: \"More Tools\",\n      savePage: \"Save Page...\",\n      createShortcut: \"Create Shortcut...\",\n      nameWindow: \"Name Window...\",\n      developerTools: \"Developer Tools\",\n      delete: \"Delete\",\n      showBookmarks: \"Show Bookmarks\",\n      showFullUrls: \"Show Full URLs\",\n      people: \"People\",\n      pedro: \"Pedro Duarte\",\n      colm: \"Colm Tuite\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      rightClick: \"انقر بزر الماوس الأيمن هنا\",\n      longPress: \"اضغط مطولاً هنا\",\n      navigation: \"التنقل\",\n      back: \"رجوع\",\n      forward: \"تقدم\",\n      reload: \"إعادة تحميل\",\n      moreTools: \"المزيد من الأدوات\",\n      savePage: \"حفظ الصفحة...\",\n      createShortcut: \"إنشاء اختصار...\",\n      nameWindow: \"تسمية النافذة...\",\n      developerTools: \"أدوات المطور\",\n      delete: \"حذف\",\n      showBookmarks: \"إظهار الإشارات المرجعية\",\n      showFullUrls: \"إظهار عناوين URL الكاملة\",\n      people: \"الأشخاص\",\n      pedro: \"Pedro Duarte\",\n      colm: \"Colm Tuite\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      rightClick: \"לחץ לחיצה ימנית כאן\",\n      longPress: \"לחץ לחיצה ארוכה כאן\",\n      navigation: \"ניווט\",\n      back: \"חזור\",\n      forward: \"קדימה\",\n      reload: \"רענן\",\n      moreTools: \"כלים נוספים\",\n      savePage: \"שמור עמוד...\",\n      createShortcut: \"צור קיצור דרך...\",\n      nameWindow: \"שם חלון...\",\n      developerTools: \"כלי מפתח\",\n      delete: \"מחק\",\n      showBookmarks: \"הצג סימניות\",\n      showFullUrls: \"הצג כתובות URL מלאות\",\n      people: \"אנשים\",\n      pedro: \"Pedro Duarte\",\n      colm: \"Colm Tuite\",\n    },\n  },\n}\n\nexport function ContextMenuRtl() {\n  const { t, dir, language } = useTranslation(translations, \"ar\")\n  const [people, setPeople] = React.useState(\"pedro\")\n\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">{t.rightClick}</span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          {t.longPress}\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent\n        className=\"w-48\"\n        data-lang={dir === \"rtl\" ? language : undefined}\n      >\n        <ContextMenuGroup>\n          <ContextMenuSub>\n            <ContextMenuSubTrigger>{t.navigation}</ContextMenuSubTrigger>\n            <ContextMenuSubContent\n              className=\"w-44\"\n              data-lang={dir === \"rtl\" ? language : undefined}\n            >\n              <ContextMenuGroup>\n                <ContextMenuItem>\n                  <ArrowLeftIcon />\n                  {t.back}\n                  <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n                </ContextMenuItem>\n                <ContextMenuItem disabled>\n                  <ArrowRightIcon />\n                  {t.forward}\n                  <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n                </ContextMenuItem>\n                <ContextMenuItem>\n                  <RotateCwIcon />\n                  {t.reload}\n                  <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n                </ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n          <ContextMenuSub>\n            <ContextMenuSubTrigger>{t.moreTools}</ContextMenuSubTrigger>\n            <ContextMenuSubContent\n              className=\"w-44\"\n              data-lang={dir === \"rtl\" ? language : undefined}\n            >\n              <ContextMenuGroup>\n                <ContextMenuItem>{t.savePage}</ContextMenuItem>\n                <ContextMenuItem>{t.createShortcut}</ContextMenuItem>\n                <ContextMenuItem>{t.nameWindow}</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem>{t.developerTools}</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem variant=\"destructive\">\n                  {t.delete}\n                </ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuCheckboxItem checked>\n            {t.showBookmarks}\n          </ContextMenuCheckboxItem>\n          <ContextMenuCheckboxItem>{t.showFullUrls}</ContextMenuCheckboxItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuRadioGroup value={people} onValueChange={setPeople}>\n            <ContextMenuLabel>{t.people}</ContextMenuLabel>\n            <ContextMenuRadioItem value=\"pedro\">{t.pedro}</ContextMenuRadioItem>\n            <ContextMenuRadioItem value=\"colm\">{t.colm}</ContextMenuRadioItem>\n          </ContextMenuRadioGroup>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-shortcuts.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\n\nexport function ContextMenuShortcuts() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Back\n            <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem disabled>\n            Forward\n            <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Reload\n            <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSeparator />\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Save\n            <ContextMenuShortcut>⌘S</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Save As...\n            <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-sides.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\n\nexport function ContextMenuSides() {\n  return (\n    <div className=\"grid w-full max-w-sm grid-cols-2 gap-4\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n          <span className=\"hidden pointer-fine:inline-block\">\n            Right click (top)\n          </span>\n          <span className=\"hidden pointer-coarse:inline-block\">\n            Long press (top)\n          </span>\n        </ContextMenuTrigger>\n        <ContextMenuContent side=\"top\">\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n          <span className=\"hidden pointer-fine:inline-block\">\n            Right click (right)\n          </span>\n          <span className=\"hidden pointer-coarse:inline-block\">\n            Long press (right)\n          </span>\n        </ContextMenuTrigger>\n        <ContextMenuContent side=\"right\">\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n          <span className=\"hidden pointer-fine:inline-block\">\n            Right click (bottom)\n          </span>\n          <span className=\"hidden pointer-coarse:inline-block\">\n            Long press (bottom)\n          </span>\n        </ContextMenuTrigger>\n        <ContextMenuContent side=\"bottom\">\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n          <span className=\"hidden pointer-fine:inline-block\">\n            Right click (left)\n          </span>\n          <span className=\"hidden pointer-coarse:inline-block\">\n            Long press (left)\n          </span>\n        </ContextMenuTrigger>\n        <ContextMenuContent side=\"left\">\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/context-menu-submenu.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/examples/radix/ui/context-menu\"\n\nexport function ContextMenuSubmenu() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm\">\n        <span className=\"hidden pointer-fine:inline-block\">\n          Right click here\n        </span>\n        <span className=\"hidden pointer-coarse:inline-block\">\n          Long press here\n        </span>\n      </ContextMenuTrigger>\n      <ContextMenuContent>\n        <ContextMenuGroup>\n          <ContextMenuItem>\n            Copy\n            <ContextMenuShortcut>⌘C</ContextMenuShortcut>\n          </ContextMenuItem>\n          <ContextMenuItem>\n            Cut\n            <ContextMenuShortcut>⌘X</ContextMenuShortcut>\n          </ContextMenuItem>\n        </ContextMenuGroup>\n        <ContextMenuSub>\n          <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\n          <ContextMenuSubContent>\n            <ContextMenuGroup>\n              <ContextMenuItem>Save Page...</ContextMenuItem>\n              <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n              <ContextMenuItem>Name Window...</ContextMenuItem>\n            </ContextMenuGroup>\n            <ContextMenuSeparator />\n            <ContextMenuGroup>\n              <ContextMenuItem>Developer Tools</ContextMenuItem>\n            </ContextMenuGroup>\n            <ContextMenuSeparator />\n            <ContextMenuGroup>\n              <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n            </ContextMenuGroup>\n          </ContextMenuSubContent>\n        </ContextMenuSub>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/data-picker-with-dropdowns.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { format } from \"date-fns\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nexport function DataPickerWithDropdowns() {\n  const [date, setDate] = React.useState<Date>()\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Field className=\"mx-auto w-72\">\n      <Popover open={open} onOpenChange={setOpen}>\n        <FieldLabel htmlFor=\"date-picker-with-dropdowns-desktop\">\n          Date\n        </FieldLabel>\n        <PopoverTrigger asChild>\n          <Button\n            variant=\"outline\"\n            id=\"date-picker-with-dropdowns-desktop\"\n            className=\"justify-start px-2.5 font-normal\"\n          >\n            {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n            <ChevronDownIcon className=\"ml-auto\" />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            captionLayout=\"dropdown\"\n          />\n          <div className=\"flex gap-2 border-t p-2\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"w-full\"\n              onClick={() => setOpen(false)}\n            >\n              Done\n            </Button>\n          </div>\n        </PopoverContent>\n      </Popover>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/data-table-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/radix/ui/table\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \"lucide-react\"\n\nconst data: Payment[] = [\n  {\n    id: \"m5gr84i9\",\n    amount: 316,\n    status: \"success\",\n    email: \"ken99@example.com\",\n  },\n  {\n    id: \"3u1reuv4\",\n    amount: 242,\n    status: \"success\",\n    email: \"Abe45@example.com\",\n  },\n  {\n    id: \"derv1ws0\",\n    amount: 837,\n    status: \"processing\",\n    email: \"Monserrat44@example.com\",\n  },\n  {\n    id: \"5kma53ae\",\n    amount: 874,\n    status: \"success\",\n    email: \"Silas22@example.com\",\n  },\n  {\n    id: \"bhqecj4p\",\n    amount: 721,\n    status: \"failed\",\n    email: \"carmella@example.com\",\n  },\n]\n\nexport type Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <Checkbox\n        checked={\n          table.getIsAllPageRowsSelected() ||\n          (table.getIsSomePageRowsSelected() && \"indeterminate\")\n        }\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n        aria-label=\"Select all\"\n      />\n    ),\n    cell: ({ row }) => (\n      <Checkbox\n        checked={row.getIsSelected()}\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\n        aria-label=\"Select row\"\n      />\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <div className=\"capitalize\">{row.getValue(\"status\")}</div>\n    ),\n  },\n  {\n    accessorKey: \"email\",\n    header: ({ column }) => {\n      return (\n        <Button\n          variant=\"ghost\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n        >\n          Email\n          <ArrowUpDown />\n        </Button>\n      )\n    },\n    cell: ({ row }) => <div className=\"lowercase\">{row.getValue(\"email\")}</div>,\n  },\n  {\n    accessorKey: \"amount\",\n    header: () => <div className=\"text-right\">Amount</div>,\n    cell: ({ row }) => {\n      const amount = parseFloat(row.getValue(\"amount\"))\n\n      // Format the amount as a dollar amount.\n      const formatted = new Intl.NumberFormat(\"en-US\", {\n        style: \"currency\",\n        currency: \"USD\",\n      }).format(amount)\n\n      return <div className=\"text-right font-medium\">{formatted}</div>\n    },\n  },\n  {\n    id: \"actions\",\n    enableHiding: false,\n    cell: ({ row }) => {\n      const payment = row.original\n\n      return (\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"ghost\" size=\"icon-xs\">\n              <span className=\"sr-only\">Open menu</span>\n              <MoreHorizontal />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" className=\"w-40\">\n            <DropdownMenuGroup>\n              <DropdownMenuLabel>Actions</DropdownMenuLabel>\n              <DropdownMenuItem\n                onClick={() => navigator.clipboard.writeText(payment.id)}\n              >\n                Copy payment ID\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuGroup>\n              <DropdownMenuItem>View customer</DropdownMenuItem>\n              <DropdownMenuItem>View payment details</DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      )\n    },\n  },\n]\n\nexport function DataTableDemo() {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [rowSelection, setRowSelection] = React.useState({})\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  })\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"flex items-center py-4\">\n        <Input\n          placeholder=\"Filter emails...\"\n          value={(table.getColumn(\"email\")?.getFilterValue() as string) ?? \"\"}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" className=\"ml-auto\">\n              Columns <ChevronDown />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\">\n            <DropdownMenuGroup>\n              {table\n                .getAllColumns()\n                .filter((column) => column.getCanHide())\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>\n          <TableHeader>\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id}>\n                {headerGroup.headers.map((header) => {\n                  return (\n                    <TableHead key={header.id}>\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(\n                            header.column.columnDef.header,\n                            header.getContext()\n                          )}\n                    </TableHead>\n                  )\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody>\n            {table.getRowModel().rows?.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && \"selected\"}\n                >\n                  {row.getVisibleCells().map((cell) => (\n                    <TableCell key={cell.id}>\n                      {flexRender(\n                        cell.column.columnDef.cell,\n                        cell.getContext()\n                      )}\n                    </TableCell>\n                  ))}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell\n                  colSpan={columns.length}\n                  className=\"h-24 text-center\"\n                >\n                  No results.\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n      <div className=\"flex items-center justify-end space-x-2 py-4\">\n        <div className=\"flex-1 text-sm text-muted-foreground\">\n          {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n          {table.getFilteredRowModel().rows.length} row(s) selected.\n        </div>\n        <div className=\"space-x-2\">\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.previousPage()}\n            disabled={!table.getCanPreviousPage()}\n          >\n            Previous\n          </Button>\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.nextPage()}\n            disabled={!table.getCanNextPage()}\n          >\n            Next\n          </Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/data-table-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { Checkbox } from \"@/examples/radix/ui-rtl/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui-rtl/dropdown-menu\"\nimport { Input } from \"@/examples/radix/ui-rtl/input\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/radix/ui-rtl/table\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      filterEmails: \"Filter emails...\",\n      columns: \"Columns\",\n      status: \"Status\",\n      email: \"Email\",\n      amount: \"Amount\",\n      actions: \"Actions\",\n      copyPaymentId: \"Copy payment ID\",\n      viewCustomer: \"View customer\",\n      viewPaymentDetails: \"View payment details\",\n      selectAll: \"Select all\",\n      selectRow: \"Select row\",\n      openMenu: \"Open menu\",\n      noResults: \"No results.\",\n      rowsSelected: \"of\",\n      rowsSelectedSuffix: \"row(s) selected.\",\n      previous: \"Previous\",\n      next: \"Next\",\n      success: \"Success\",\n      processing: \"Processing\",\n      failed: \"Failed\",\n      pending: \"Pending\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      filterEmails: \"تصفية البريد الإلكتروني...\",\n      columns: \"الأعمدة\",\n      status: \"الحالة\",\n      email: \"البريد الإلكتروني\",\n      amount: \"المبلغ\",\n      actions: \"الإجراءات\",\n      copyPaymentId: \"نسخ معرف الدفع\",\n      viewCustomer: \"عرض العميل\",\n      viewPaymentDetails: \"عرض تفاصيل الدفع\",\n      selectAll: \"تحديد الكل\",\n      selectRow: \"تحديد الصف\",\n      openMenu: \"فتح القائمة\",\n      noResults: \"لا توجد نتائج.\",\n      rowsSelected: \"من\",\n      rowsSelectedSuffix: \"صف(وف) محدد.\",\n      previous: \"السابق\",\n      next: \"التالي\",\n      success: \"ناجح\",\n      processing: \"قيد المعالجة\",\n      failed: \"فشل\",\n      pending: \"قيد الانتظار\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      filterEmails: \"סנן אימיילים...\",\n      columns: \"עמודות\",\n      status: \"סטטוס\",\n      email: \"אימייל\",\n      amount: \"סכום\",\n      actions: \"פעולות\",\n      copyPaymentId: \"העתק מזהה תשלום\",\n      viewCustomer: \"צפה בלקוח\",\n      viewPaymentDetails: \"צפה בפרטי תשלום\",\n      selectAll: \"בחר הכל\",\n      selectRow: \"בחר שורה\",\n      openMenu: \"פתח תפריט\",\n      noResults: \"אין תוצאות.\",\n      rowsSelected: \"מתוך\",\n      rowsSelectedSuffix: \"שורות נבחרו.\",\n      previous: \"הקודם\",\n      next: \"הבא\",\n      success: \"הצליח\",\n      processing: \"מעבד\",\n      failed: \"נכשל\",\n      pending: \"ממתין\",\n    },\n  },\n}\n\ntype Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nconst data: Payment[] = [\n  {\n    id: \"m5gr84i9\",\n    amount: 316,\n    status: \"success\",\n    email: \"ken99@example.com\",\n  },\n  {\n    id: \"3u1reuv4\",\n    amount: 242,\n    status: \"success\",\n    email: \"Abe45@example.com\",\n  },\n  {\n    id: \"derv1ws0\",\n    amount: 837,\n    status: \"processing\",\n    email: \"Monserrat44@example.com\",\n  },\n  {\n    id: \"5kma53ae\",\n    amount: 874,\n    status: \"success\",\n    email: \"Silas22@example.com\",\n  },\n  {\n    id: \"bhqecj4p\",\n    amount: 721,\n    status: \"failed\",\n    email: \"carmella@example.com\",\n  },\n]\n\nexport function DataTableRtl() {\n  const { t, dir, language } = useTranslation(translations, \"ar\")\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [rowSelection, setRowSelection] = React.useState({})\n\n  const columns: ColumnDef<Payment>[] = React.useMemo(\n    () => [\n      {\n        id: \"select\",\n        header: ({ table }) => (\n          <Checkbox\n            checked={\n              table.getIsAllPageRowsSelected() ||\n              (table.getIsSomePageRowsSelected() ? true : false)\n            }\n            onCheckedChange={(value) =>\n              table.toggleAllPageRowsSelected(!!value)\n            }\n            aria-label={t.selectAll}\n          />\n        ),\n        cell: ({ row }) => (\n          <Checkbox\n            checked={row.getIsSelected()}\n            onCheckedChange={(value) => row.toggleSelected(!!value)}\n            aria-label={t.selectRow}\n          />\n        ),\n        enableSorting: false,\n        enableHiding: false,\n      },\n      {\n        accessorKey: \"status\",\n        header: t.status,\n        cell: ({ row }) => {\n          const status = row.getValue(\"status\") as string\n          const statusMap: Record<string, string> = {\n            success: t.success,\n            processing: t.processing,\n            failed: t.failed,\n            pending: t.pending,\n          }\n          return <div className=\"capitalize\">{statusMap[status]}</div>\n        },\n      },\n      {\n        accessorKey: \"email\",\n        header: ({ column }) => {\n          return (\n            <Button\n              variant=\"ghost\"\n              onClick={() =>\n                column.toggleSorting(column.getIsSorted() === \"asc\")\n              }\n            >\n              {t.email}\n              <ArrowUpDown />\n            </Button>\n          )\n        },\n        cell: ({ row }) => (\n          <div className=\"lowercase\">{row.getValue(\"email\")}</div>\n        ),\n      },\n      {\n        accessorKey: \"amount\",\n        header: () => <div className=\"text-start\">{t.amount}</div>,\n        cell: ({ row }) => {\n          const amount = parseFloat(row.getValue(\"amount\"))\n          const formatted = new Intl.NumberFormat(\n            dir === \"rtl\" ? \"ar-SA\" : \"en-US\",\n            {\n              style: \"currency\",\n              currency: \"USD\",\n            }\n          ).format(amount)\n\n          return <div className=\"text-start font-medium\">{formatted}</div>\n        },\n      },\n      {\n        id: \"actions\",\n        enableHiding: false,\n        cell: ({ row }) => {\n          const payment = row.original\n\n          return (\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"ghost\" size=\"icon-xs\">\n                  <span className=\"sr-only\">{t.openMenu}</span>\n                  <MoreHorizontal />\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                align=\"end\"\n                className=\"w-40\"\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>{t.actions}</DropdownMenuLabel>\n                  <DropdownMenuItem\n                    onClick={() => navigator.clipboard.writeText(payment.id)}\n                  >\n                    {t.copyPaymentId}\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>{t.viewCustomer}</DropdownMenuItem>\n                  <DropdownMenuItem>{t.viewPaymentDetails}</DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          )\n        },\n      },\n    ],\n    [t, dir, language]\n  )\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  })\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"flex items-center gap-2 py-4\">\n        <Input\n          placeholder={t.filterEmails}\n          value={(table.getColumn(\"email\")?.getFilterValue() as string) ?? \"\"}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" className=\"ms-auto\">\n              {t.columns} <ChevronDown />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            align={dir === \"rtl\" ? \"start\" : \"end\"}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            <DropdownMenuGroup>\n              {table\n                .getAllColumns()\n                .filter((column) => column.getCanHide())\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>\n          <TableHeader>\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id}>\n                {headerGroup.headers.map((header) => {\n                  return (\n                    <TableHead key={header.id}>\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(\n                            header.column.columnDef.header,\n                            header.getContext()\n                          )}\n                    </TableHead>\n                  )\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody>\n            {table.getRowModel().rows?.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && \"selected\"}\n                >\n                  {row.getVisibleCells().map((cell) => (\n                    <TableCell key={cell.id}>\n                      {flexRender(\n                        cell.column.columnDef.cell,\n                        cell.getContext()\n                      )}\n                    </TableCell>\n                  ))}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell\n                  colSpan={columns.length}\n                  className=\"h-24 text-center\"\n                >\n                  {t.noResults}\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n      <div className=\"flex items-center justify-end gap-2 py-4\">\n        <div className=\"flex-1 text-sm text-muted-foreground\">\n          {table.getFilteredSelectedRowModel().rows.length} {t.rowsSelected}{\" \"}\n          {table.getFilteredRowModel().rows.length} {t.rowsSelectedSuffix}\n        </div>\n        <div className=\"flex gap-2\">\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.previousPage()}\n            disabled={!table.getCanPreviousPage()}\n          >\n            {t.previous}\n          </Button>\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.nextPage()}\n            disabled={!table.getCanNextPage()}\n          >\n            {t.next}\n          </Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/date-picker-basic.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { format } from \"date-fns\"\n\nexport function DatePickerSimple() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Field className=\"mx-auto w-44\">\n      <FieldLabel htmlFor=\"date-picker-simple\">Date</FieldLabel>\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button\n            variant=\"outline\"\n            id=\"date-picker-simple\"\n            className=\"justify-start font-normal\"\n          >\n            {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            defaultMonth={date}\n          />\n        </PopoverContent>\n      </Popover>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/date-picker-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { format } from \"date-fns\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nexport function DatePickerDemo() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"outline\"\n          data-empty={!date}\n          className=\"w-[212px] justify-between text-left font-normal data-[empty=true]:text-muted-foreground\"\n        >\n          {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n          <ChevronDownIcon />\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\">\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          defaultMonth={date}\n        />\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/date-picker-dob.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\n\nexport function DatePickerSimple() {\n  const [open, setOpen] = React.useState(false)\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\n\n  return (\n    <Field className=\"mx-auto w-44\">\n      <FieldLabel htmlFor=\"date\">Date of birth</FieldLabel>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <Button\n            variant=\"outline\"\n            id=\"date\"\n            className=\"justify-start font-normal\"\n          >\n            {date ? date.toLocaleDateString() : \"Select date\"}\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            defaultMonth={date}\n            captionLayout=\"dropdown\"\n            onSelect={(date) => {\n              setDate(date)\n              setOpen(false)\n            }}\n          />\n        </PopoverContent>\n      </Popover>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/date-picker-input.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { CalendarIcon } from \"lucide-react\"\n\nfunction formatDate(date: Date | undefined) {\n  if (!date) {\n    return \"\"\n  }\n\n  return date.toLocaleDateString(\"en-US\", {\n    day: \"2-digit\",\n    month: \"long\",\n    year: \"numeric\",\n  })\n}\n\nfunction isValidDate(date: Date | undefined) {\n  if (!date) {\n    return false\n  }\n  return !isNaN(date.getTime())\n}\n\nexport function DatePickerInput() {\n  const [open, setOpen] = React.useState(false)\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(\"2025-06-01\")\n  )\n  const [month, setMonth] = React.useState<Date | undefined>(date)\n  const [value, setValue] = React.useState(formatDate(date))\n\n  return (\n    <Field className=\"mx-auto w-48\">\n      <FieldLabel htmlFor=\"date-required\">Subscription Date</FieldLabel>\n      <InputGroup>\n        <InputGroupInput\n          id=\"date-required\"\n          value={value}\n          placeholder=\"June 01, 2025\"\n          onChange={(e) => {\n            const date = new Date(e.target.value)\n            setValue(e.target.value)\n            if (isValidDate(date)) {\n              setDate(date)\n              setMonth(date)\n            }\n          }}\n          onKeyDown={(e) => {\n            if (e.key === \"ArrowDown\") {\n              e.preventDefault()\n              setOpen(true)\n            }\n          }}\n        />\n        <InputGroupAddon align=\"inline-end\">\n          <Popover open={open} onOpenChange={setOpen}>\n            <PopoverTrigger asChild>\n              <InputGroupButton\n                id=\"date-picker\"\n                variant=\"ghost\"\n                size=\"icon-xs\"\n                aria-label=\"Select date\"\n              >\n                <CalendarIcon />\n                <span className=\"sr-only\">Select date</span>\n              </InputGroupButton>\n            </PopoverTrigger>\n            <PopoverContent\n              className=\"w-auto overflow-hidden p-0\"\n              align=\"end\"\n              alignOffset={-8}\n              sideOffset={10}\n            >\n              <Calendar\n                mode=\"single\"\n                selected={date}\n                month={month}\n                onMonthChange={setMonth}\n                onSelect={(date) => {\n                  setDate(date)\n                  setValue(formatDate(date))\n                  setOpen(false)\n                }}\n              />\n            </PopoverContent>\n          </Popover>\n        </InputGroupAddon>\n      </InputGroup>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/date-picker-natural-language.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { parseDate } from \"chrono-node\"\nimport { CalendarIcon } from \"lucide-react\"\n\nfunction formatDate(date: Date | undefined) {\n  if (!date) {\n    return \"\"\n  }\n\n  return date.toLocaleDateString(\"en-US\", {\n    day: \"2-digit\",\n    month: \"long\",\n    year: \"numeric\",\n  })\n}\n\nexport function DatePickerNaturalLanguage() {\n  const [open, setOpen] = React.useState(false)\n  const [value, setValue] = React.useState(\"In 2 days\")\n  const [date, setDate] = React.useState<Date | undefined>(\n    parseDate(value) || undefined\n  )\n\n  return (\n    <Field className=\"mx-auto max-w-xs\">\n      <FieldLabel htmlFor=\"date-optional\">Schedule Date</FieldLabel>\n      <InputGroup>\n        <InputGroupInput\n          id=\"date-optional\"\n          value={value}\n          placeholder=\"Tomorrow or next week\"\n          onChange={(e) => {\n            setValue(e.target.value)\n            const date = parseDate(e.target.value)\n            if (date) {\n              setDate(date)\n            }\n          }}\n          onKeyDown={(e) => {\n            if (e.key === \"ArrowDown\") {\n              e.preventDefault()\n              setOpen(true)\n            }\n          }}\n        />\n        <InputGroupAddon align=\"inline-end\">\n          <Popover open={open} onOpenChange={setOpen}>\n            <PopoverTrigger asChild>\n              <InputGroupButton\n                id=\"date-picker\"\n                variant=\"ghost\"\n                size=\"icon-xs\"\n                aria-label=\"Select date\"\n              >\n                <CalendarIcon />\n                <span className=\"sr-only\">Select date</span>\n              </InputGroupButton>\n            </PopoverTrigger>\n            <PopoverContent\n              className=\"w-auto overflow-hidden p-0\"\n              align=\"end\"\n              sideOffset={8}\n            >\n              <Calendar\n                mode=\"single\"\n                selected={date}\n                captionLayout=\"dropdown\"\n                defaultMonth={date}\n                onSelect={(date) => {\n                  setDate(date)\n                  setValue(formatDate(date))\n                  setOpen(false)\n                }}\n              />\n            </PopoverContent>\n          </Popover>\n        </InputGroupAddon>\n      </InputGroup>\n      <div className=\"px-1 text-sm text-muted-foreground\">\n        Your post will be published on{\" \"}\n        <span className=\"font-medium\">{formatDate(date)}</span>.\n      </div>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/date-picker-range.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { addDays, format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { type DateRange } from \"react-day-picker\"\n\nexport function DatePickerWithRange() {\n  const [date, setDate] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 20),\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\n  })\n\n  return (\n    <Field className=\"mx-auto w-60\">\n      <FieldLabel htmlFor=\"date-picker-range\">Date Picker Range</FieldLabel>\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button\n            variant=\"outline\"\n            id=\"date-picker-range\"\n            className=\"justify-start px-2.5 font-normal\"\n          >\n            <CalendarIcon />\n            {date?.from ? (\n              date.to ? (\n                <>\n                  {format(date.from, \"LLL dd, y\")} -{\" \"}\n                  {format(date.to, \"LLL dd, y\")}\n                </>\n              ) : (\n                format(date.from, \"LLL dd, y\")\n              )\n            ) : (\n              <span>Pick a date</span>\n            )}\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar\n            mode=\"range\"\n            defaultMonth={date?.from}\n            selected={date}\n            onSelect={setDate}\n            numberOfMonths={2}\n          />\n        </PopoverContent>\n      </Popover>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/date-picker-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { Calendar } from \"@/examples/radix/ui-rtl/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui-rtl/popover\"\nimport { format } from \"date-fns\"\nimport { arSA, he } from \"date-fns/locale\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport {\n  arSA as arSADayPicker,\n  he as heDayPicker,\n} from \"react-day-picker/locale\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      placeholder: \"Pick a date\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"اختر تاريخًا\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"בחר תאריך\",\n    },\n  },\n}\n\nconst dayPickerLocales = {\n  ar: arSADayPicker,\n  he: heDayPicker,\n} as const\n\nconst dateFnsLocales = {\n  ar: arSA,\n  he: he,\n} as const\n\nexport function DatePickerRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [date, setDate] = React.useState<Date>()\n\n  const dateFnsLocale =\n    dir === \"rtl\"\n      ? dateFnsLocales[language as keyof typeof dateFnsLocales]\n      : undefined\n  const dayPickerLocale =\n    dir === \"rtl\"\n      ? dayPickerLocales[language as keyof typeof dayPickerLocales]\n      : undefined\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"outline\"\n          data-empty={!date}\n          className=\"w-[212px] justify-between text-left font-normal data-[empty=true]:text-muted-foreground\"\n          dir={dir}\n        >\n          {date ? (\n            format(date, \"PPP\", { locale: dateFnsLocale })\n          ) : (\n            <span>{t.placeholder}</span>\n          )}\n          <ChevronDownIcon />\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\" dir={dir}>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          defaultMonth={date}\n          dir={dir}\n          locale={dayPickerLocale}\n        />\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/date-picker-time.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Calendar } from \"@/examples/radix/ui/calendar\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport { format } from \"date-fns\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nexport function DatePickerTime() {\n  const [open, setOpen] = React.useState(false)\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\n\n  return (\n    <FieldGroup className=\"mx-auto max-w-xs flex-row\">\n      <Field>\n        <FieldLabel htmlFor=\"date-picker-optional\">Date</FieldLabel>\n        <Popover open={open} onOpenChange={setOpen}>\n          <PopoverTrigger asChild>\n            <Button\n              variant=\"outline\"\n              id=\"date-picker-optional\"\n              className=\"w-32 justify-between font-normal\"\n            >\n              {date ? format(date, \"PPP\") : \"Select date\"}\n              <ChevronDownIcon />\n            </Button>\n          </PopoverTrigger>\n          <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n            <Calendar\n              mode=\"single\"\n              selected={date}\n              captionLayout=\"dropdown\"\n              defaultMonth={date}\n              onSelect={(date) => {\n                setDate(date)\n                setOpen(false)\n              }}\n            />\n          </PopoverContent>\n        </Popover>\n      </Field>\n      <Field className=\"w-32\">\n        <FieldLabel htmlFor=\"time-picker-optional\">Time</FieldLabel>\n        <Input\n          type=\"time\"\n          id=\"time-picker-optional\"\n          step=\"1\"\n          defaultValue=\"10:30:00\"\n          className=\"appearance-none bg-background [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n        />\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dialog-close-button.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/radix/ui/dialog\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { Label } from \"@/examples/radix/ui/label\"\n\nexport function DialogCloseButton() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">Share</Button>\n      </DialogTrigger>\n      <DialogContent className=\"sm:max-w-md\">\n        <DialogHeader>\n          <DialogTitle>Share link</DialogTitle>\n          <DialogDescription>\n            Anyone who has this link will be able to view this.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"flex items-center gap-2\">\n          <div className=\"grid flex-1 gap-2\">\n            <Label htmlFor=\"link\" className=\"sr-only\">\n              Link\n            </Label>\n            <Input\n              id=\"link\"\n              defaultValue=\"https://ui.shadcn.com/docs/installation\"\n              readOnly\n            />\n          </div>\n        </div>\n        <DialogFooter className=\"sm:justify-start\">\n          <DialogClose asChild>\n            <Button type=\"button\">Close</Button>\n          </DialogClose>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dialog-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/radix/ui/dialog\"\nimport { Field, FieldGroup } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { Label } from \"@/examples/radix/ui/label\"\n\nexport function DialogDemo() {\n  return (\n    <Dialog>\n      <form>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-sm\">\n          <DialogHeader>\n            <DialogTitle>Edit profile</DialogTitle>\n            <DialogDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </DialogDescription>\n          </DialogHeader>\n          <FieldGroup>\n            <Field>\n              <Label htmlFor=\"name-1\">Name</Label>\n              <Input id=\"name-1\" name=\"name\" defaultValue=\"Pedro Duarte\" />\n            </Field>\n            <Field>\n              <Label htmlFor=\"username-1\">Username</Label>\n              <Input id=\"username-1\" name=\"username\" defaultValue=\"@peduarte\" />\n            </Field>\n          </FieldGroup>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DialogClose>\n            <Button type=\"submit\">Save changes</Button>\n          </DialogFooter>\n        </DialogContent>\n      </form>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dialog-no-close-button.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/radix/ui/dialog\"\n\nexport function DialogNoCloseButton() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">No Close Button</Button>\n      </DialogTrigger>\n      <DialogContent showCloseButton={false}>\n        <DialogHeader>\n          <DialogTitle>No Close Button</DialogTitle>\n          <DialogDescription>\n            This dialog doesn&apos;t have a close button in the top-right\n            corner.\n          </DialogDescription>\n        </DialogHeader>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dialog-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/radix/ui-rtl/dialog\"\nimport { Field, FieldGroup } from \"@/examples/radix/ui-rtl/field\"\nimport { Input } from \"@/examples/radix/ui-rtl/input\"\nimport { Label } from \"@/examples/radix/ui-rtl/label\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      openDialog: \"Open Dialog\",\n      editProfile: \"Edit profile\",\n      description:\n        \"Make changes to your profile here. Click save when you're done.\",\n      name: \"Name\",\n      username: \"Username\",\n      cancel: \"Cancel\",\n      saveChanges: \"Save changes\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      openDialog: \"فتح الحوار\",\n      editProfile: \"تعديل الملف الشخصي\",\n      description:\n        \"قم بإجراء تغييرات على ملفك الشخصي هنا. انقر فوق حفظ عند الانتهاء.\",\n      name: \"الاسم\",\n      username: \"اسم المستخدم\",\n      cancel: \"إلغاء\",\n      saveChanges: \"حفظ التغييرات\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      openDialog: \"פתח דיאלוג\",\n      editProfile: \"ערוך פרופיל\",\n      description: \"בצע שינויים בפרופיל שלך כאן. לחץ על שמור כשתסיים.\",\n      name: \"שם\",\n      username: \"שם משתמש\",\n      cancel: \"בטל\",\n      saveChanges: \"שמור שינויים\",\n    },\n  },\n}\n\nexport function DialogRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <Dialog>\n      <form>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">{t.openDialog}</Button>\n        </DialogTrigger>\n        <DialogContent\n          className=\"sm:max-w-sm\"\n          dir={dir}\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <DialogHeader>\n            <DialogTitle>{t.editProfile}</DialogTitle>\n            <DialogDescription>{t.description}</DialogDescription>\n          </DialogHeader>\n          <FieldGroup>\n            <Field>\n              <Label htmlFor=\"name-1\">{t.name}</Label>\n              <Input id=\"name-1\" name=\"name\" defaultValue=\"Pedro Duarte\" />\n            </Field>\n            <Field>\n              <Label htmlFor=\"username-1\">{t.username}</Label>\n              <Input id=\"username-1\" name=\"username\" defaultValue=\"@peduarte\" />\n            </Field>\n          </FieldGroup>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"outline\">{t.cancel}</Button>\n            </DialogClose>\n            <Button type=\"submit\">{t.saveChanges}</Button>\n          </DialogFooter>\n        </DialogContent>\n      </form>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dialog-scrollable-content.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/radix/ui/dialog\"\n\nexport function DialogScrollableContent() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">Scrollable Content</Button>\n      </DialogTrigger>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>Scrollable Content</DialogTitle>\n          <DialogDescription>\n            This is a dialog with scrollable content.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"-mx-4 no-scrollbar max-h-[50vh] overflow-y-auto px-4\">\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p key={index} className=\"mb-4 leading-normal\">\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dialog-sticky-footer.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/radix/ui/dialog\"\n\nexport function DialogStickyFooter() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">Sticky Footer</Button>\n      </DialogTrigger>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>Sticky Footer</DialogTitle>\n          <DialogDescription>\n            This dialog has a sticky footer that stays visible while the content\n            scrolls.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"-mx-4 no-scrollbar max-h-[50vh] overflow-y-auto px-4\">\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p key={index} className=\"mb-4 leading-normal\">\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n        <DialogFooter>\n          <DialogClose asChild>\n            <Button variant=\"outline\">Close</Button>\n          </DialogClose>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/drawer-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/radix/ui/drawer\"\nimport { Minus, Plus } from \"lucide-react\"\nimport { Bar, BarChart, ResponsiveContainer } from \"recharts\"\n\nconst data = [\n  {\n    goal: 400,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 239,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 349,\n  },\n]\n\nexport function DrawerDemo() {\n  const [goal, setGoal] = React.useState(350)\n\n  function onClick(adjustment: number) {\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\n  }\n\n  return (\n    <Drawer>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Open Drawer</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <div className=\"mx-auto w-full max-w-sm\">\n          <DrawerHeader>\n            <DrawerTitle>Move Goal</DrawerTitle>\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"p-4 pb-0\">\n            <div className=\"flex items-center justify-center space-x-2\">\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(-10)}\n                disabled={goal <= 200}\n              >\n                <Minus />\n                <span className=\"sr-only\">Decrease</span>\n              </Button>\n              <div className=\"flex-1 text-center\">\n                <div className=\"text-7xl font-bold tracking-tighter\">\n                  {goal}\n                </div>\n                <div className=\"text-[0.70rem] text-muted-foreground uppercase\">\n                  Calories/day\n                </div>\n              </div>\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(10)}\n                disabled={goal >= 400}\n              >\n                <Plus />\n                <span className=\"sr-only\">Increase</span>\n              </Button>\n            </div>\n            <div className=\"mt-3 h-[120px]\">\n              <ResponsiveContainer width=\"100%\" height=\"100%\">\n                <BarChart data={data}>\n                  <Bar\n                    dataKey=\"goal\"\n                    style={\n                      {\n                        fill: \"var(--chart-1)\",\n                      } as React.CSSProperties\n                    }\n                  />\n                </BarChart>\n              </ResponsiveContainer>\n            </div>\n          </div>\n          <DrawerFooter>\n            <Button>Submit</Button>\n            <DrawerClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </div>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/drawer-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/examples/radix/ui/dialog\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/radix/ui/drawer\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { Label } from \"@/examples/radix/ui/label\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\n\nexport function DrawerDialogDemo() {\n  const [open, setOpen] = React.useState(false)\n  const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n\n  if (isDesktop) {\n    return (\n      <Dialog open={open} onOpenChange={setOpen}>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Edit Profile</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Edit profile</DialogTitle>\n            <DialogDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </DialogDescription>\n          </DialogHeader>\n          <ProfileForm />\n        </DialogContent>\n      </Dialog>\n    )\n  }\n\n  return (\n    <Drawer open={open} onOpenChange={setOpen}>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Edit Profile</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader className=\"text-left\">\n          <DrawerTitle>Edit profile</DrawerTitle>\n          <DrawerDescription>\n            Make changes to your profile here. Click save when you&apos;re done.\n          </DrawerDescription>\n        </DrawerHeader>\n        <ProfileForm className=\"px-4\" />\n        <DrawerFooter className=\"pt-2\">\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Cancel</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n\nfunction ProfileForm({ className }: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"grid items-start gap-6\", className)}>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"email\">Email</Label>\n        <Input type=\"email\" id=\"email\" defaultValue=\"shadcn@example.com\" />\n      </div>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"username\">Username</Label>\n        <Input id=\"username\" defaultValue=\"@shadcn\" />\n      </div>\n      <Button type=\"submit\">Save changes</Button>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/drawer-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/radix/ui-rtl/drawer\"\nimport { Minus, Plus } from \"lucide-react\"\nimport { Bar, BarChart, ResponsiveContainer, XAxis } from \"recharts\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst data = [\n  {\n    goal: 400,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 239,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 349,\n  },\n]\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    locale: \"en-US\",\n    values: {\n      trigger: \"Open Drawer\",\n      title: \"Move Goal\",\n      description: \"Set your daily activity goal.\",\n      caloriesPerDay: \"Calories/day\",\n      decrease: \"Decrease\",\n      increase: \"Increase\",\n      submit: \"Submit\",\n      cancel: \"Cancel\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    locale: \"ar-EG\",\n    values: {\n      trigger: \"فتح الدرج\",\n      title: \"نقل الهدف\",\n      description: \"حدد هدف نشاطك اليومي.\",\n      caloriesPerDay: \"سعرات حرارية/يوم\",\n      decrease: \"تقليل\",\n      increase: \"زيادة\",\n      submit: \"إرسال\",\n      cancel: \"إلغاء\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    locale: \"he-IL\",\n    values: {\n      trigger: \"פתח מגירה\",\n      title: \"הזז מטרה\",\n      description: \"הגדר את יעד הפעילות היומי שלך.\",\n      caloriesPerDay: \"קלוריות/יום\",\n      decrease: \"הקטן\",\n      increase: \"הגדל\",\n      submit: \"שלח\",\n      cancel: \"בטל\",\n    },\n  },\n}\n\nexport function DrawerRtl() {\n  const { dir, locale, language, t } = useTranslation(translations, \"ar\")\n  const [goal, setGoal] = React.useState(350)\n\n  function onClick(adjustment: number) {\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\n  }\n\n  return (\n    <Drawer>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">{t.trigger}</Button>\n      </DrawerTrigger>\n      <DrawerContent dir={dir} data-lang={dir === \"rtl\" ? language : undefined}>\n        <div className=\"mx-auto w-full max-w-sm\">\n          <DrawerHeader>\n            <DrawerTitle>{t.title}</DrawerTitle>\n            <DrawerDescription>{t.description}</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"p-4 pb-0\">\n            <div className=\"flex items-center justify-center space-x-2\">\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(-10)}\n                disabled={goal <= 200}\n              >\n                <Minus />\n                <span className=\"sr-only\">{t.decrease}</span>\n              </Button>\n              <div className=\"flex-1 text-center\">\n                <div className=\"text-7xl font-bold tracking-tighter\">\n                  {goal.toLocaleString(locale)}\n                </div>\n                <div className=\"text-[0.70rem] text-muted-foreground uppercase\">\n                  {t.caloriesPerDay}\n                </div>\n              </div>\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(10)}\n                disabled={goal >= 400}\n              >\n                <Plus />\n                <span className=\"sr-only\">{t.increase}</span>\n              </Button>\n            </div>\n            <div className=\"mt-3 h-[120px]\">\n              <ResponsiveContainer width=\"100%\" height=\"100%\">\n                <BarChart data={data}>\n                  <XAxis\n                    dataKey=\"goal\"\n                    tickLine={false}\n                    tickMargin={10}\n                    axisLine={false}\n                    tickFormatter={(value) => value.toLocaleString(locale)}\n                    reversed={dir === \"rtl\"}\n                  />\n                  <Bar\n                    dataKey=\"goal\"\n                    style={\n                      {\n                        fill: \"var(--chart-2)\",\n                      } as React.CSSProperties\n                    }\n                  />\n                </BarChart>\n              </ResponsiveContainer>\n            </div>\n          </div>\n          <DrawerFooter>\n            <Button>{t.submit}</Button>\n            <DrawerClose asChild>\n              <Button variant=\"outline\">{t.cancel}</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </div>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/drawer-scrollable-content.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/radix/ui/drawer\"\n\nexport function DrawerScrollableContent() {\n  return (\n    <Drawer direction=\"right\">\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Scrollable Content</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader>\n          <DrawerTitle>Move Goal</DrawerTitle>\n          <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n        </DrawerHeader>\n        <div className=\"no-scrollbar overflow-y-auto px-4\">\n          {Array.from({ length: 10 }).map((_, index) => (\n            <p\n              key={index}\n              className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n            >\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n              enim ad minim veniam, quis nostrud exercitation ullamco laboris\n              nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in\n              reprehenderit in voluptate velit esse cillum dolore eu fugiat\n              nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n              sunt in culpa qui officia deserunt mollit anim id est laborum.\n            </p>\n          ))}\n        </div>\n        <DrawerFooter>\n          <Button>Submit</Button>\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Cancel</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/drawer-sides.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/examples/radix/ui/drawer\"\n\nconst DRAWER_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nexport function DrawerWithSides() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {DRAWER_SIDES.map((side) => (\n        <Drawer\n          key={side}\n          direction={\n            side === \"bottom\" ? undefined : (side as \"top\" | \"right\" | \"left\")\n          }\n        >\n          <DrawerTrigger asChild>\n            <Button variant=\"outline\" className=\"capitalize\">\n              {side}\n            </Button>\n          </DrawerTrigger>\n          <DrawerContent className=\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\">\n            <DrawerHeader>\n              <DrawerTitle>Move Goal</DrawerTitle>\n              <DrawerDescription>\n                Set your daily activity goal.\n              </DrawerDescription>\n            </DrawerHeader>\n            <div className=\"no-scrollbar overflow-y-auto px-4\">\n              {Array.from({ length: 10 }).map((_, index) => (\n                <p\n                  key={index}\n                  className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n                >\n                  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                  do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n                  Ut enim ad minim veniam, quis nostrud exercitation ullamco\n                  laboris nisi ut aliquip ex ea commodo consequat. Duis aute\n                  irure dolor in reprehenderit in voluptate velit esse cillum\n                  dolore eu fugiat nulla pariatur. Excepteur sint occaecat\n                  cupidatat non proident, sunt in culpa qui officia deserunt\n                  mollit anim id est laborum.\n                </p>\n              ))}\n            </div>\n            <DrawerFooter>\n              <Button>Submit</Button>\n              <DrawerClose asChild>\n                <Button variant=\"outline\">Cancel</Button>\n              </DrawerClose>\n            </DrawerFooter>\n          </DrawerContent>\n        </Drawer>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-avatar.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  BadgeCheckIcon,\n  BellIcon,\n  CreditCardIcon,\n  LogOutIcon,\n} from \"lucide-react\"\n\nexport function DropdownMenuAvatar() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\">\n          <Avatar>\n            <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"shadcn\" />\n            <AvatarFallback>LR</AvatarFallback>\n          </Avatar>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <BadgeCheckIcon />\n            Account\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <CreditCardIcon />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <BellIcon />\n            Notifications\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          <LogOutIcon />\n          Sign Out\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-basic.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\n\nexport function DropdownMenuBasic() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>My Account</DropdownMenuLabel>\n          <DropdownMenuItem>Profile</DropdownMenuItem>\n          <DropdownMenuItem>Billing</DropdownMenuItem>\n          <DropdownMenuItem>Settings</DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>GitHub</DropdownMenuItem>\n        <DropdownMenuItem>Support</DropdownMenuItem>\n        <DropdownMenuItem disabled>API</DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-checkboxes-icons.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport { BellIcon, MailIcon, MessageSquareIcon } from \"lucide-react\"\n\nexport function DropdownMenuCheckboxesIcons() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Notifications</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-48\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={notifications.email}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, email: checked === true })\n            }\n          >\n            <MailIcon />\n            Email notifications\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={notifications.sms}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, sms: checked === true })\n            }\n          >\n            <MessageSquareIcon />\n            SMS notifications\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={notifications.push}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, push: checked === true })\n            }\n          >\n            <BellIcon />\n            Push notifications\n          </DropdownMenuCheckboxItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-checkboxes.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\n\nexport function DropdownMenuCheckboxes() {\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\n  const [showPanel, setShowPanel] = React.useState(false)\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-40\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={showStatusBar ?? false}\n            onCheckedChange={setShowStatusBar}\n          >\n            Status Bar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showActivityBar}\n            onCheckedChange={setShowActivityBar}\n            disabled\n          >\n            Activity Bar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showPanel}\n            onCheckedChange={setShowPanel}\n          >\n            Panel\n          </DropdownMenuCheckboxItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-complex.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  BellIcon,\n  CreditCardIcon,\n  DownloadIcon,\n  EyeIcon,\n  FileCodeIcon,\n  FileIcon,\n  FileTextIcon,\n  FolderIcon,\n  FolderOpenIcon,\n  FolderSearchIcon,\n  HelpCircleIcon,\n  KeyboardIcon,\n  LanguagesIcon,\n  LayoutIcon,\n  LogOutIcon,\n  MailIcon,\n  MonitorIcon,\n  MoonIcon,\n  MoreHorizontalIcon,\n  PaletteIcon,\n  SaveIcon,\n  SettingsIcon,\n  ShieldIcon,\n  SunIcon,\n  UserIcon,\n} from \"lucide-react\"\n\nexport function DropdownMenuComplex() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Complex Menu</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-44\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>File</DropdownMenuLabel>\n          <DropdownMenuItem>\n            <FileIcon />\n            New File\n            <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <FolderIcon />\n            New Folder\n            <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>\n              <FolderOpenIcon />\n              Open Recent\n            </DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\n                  <DropdownMenuItem>\n                    <FileCodeIcon />\n                    Project Alpha\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <FileCodeIcon />\n                    Project Beta\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <MoreHorizontalIcon />\n                      More Projects\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuItem>\n                          <FileCodeIcon />\n                          Project Gamma\n                        </DropdownMenuItem>\n                        <DropdownMenuItem>\n                          <FileCodeIcon />\n                          Project Delta\n                        </DropdownMenuItem>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <FolderSearchIcon />\n                    Browse...\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem>\n            <SaveIcon />\n            Save\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <DownloadIcon />\n            Export\n            <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>View</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={notifications.email}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, email: checked === true })\n            }\n          >\n            <EyeIcon />\n            Show Sidebar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={notifications.sms}\n            onCheckedChange={(checked) =>\n              setNotifications({ ...notifications, sms: checked === true })\n            }\n          >\n            <LayoutIcon />\n            Show Status Bar\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>\n              <PaletteIcon />\n              Theme\n            </DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n                  <DropdownMenuRadioGroup\n                    value={theme}\n                    onValueChange={setTheme}\n                  >\n                    <DropdownMenuRadioItem value=\"light\">\n                      <SunIcon />\n                      Light\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"dark\">\n                      <MoonIcon />\n                      Dark\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"system\">\n                      <MonitorIcon />\n                      System\n                    </DropdownMenuRadioItem>\n                  </DropdownMenuRadioGroup>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Account</DropdownMenuLabel>\n          <DropdownMenuItem>\n            <UserIcon />\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <CreditCardIcon />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>\n              <SettingsIcon />\n              Settings\n            </DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Preferences</DropdownMenuLabel>\n                  <DropdownMenuItem>\n                    <KeyboardIcon />\n                    Keyboard Shortcuts\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <LanguagesIcon />\n                    Language\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <BellIcon />\n                      Notifications\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuGroup>\n                          <DropdownMenuLabel>\n                            Notification Types\n                          </DropdownMenuLabel>\n                          <DropdownMenuCheckboxItem\n                            checked={notifications.push}\n                            onCheckedChange={(checked) =>\n                              setNotifications({\n                                ...notifications,\n                                push: checked === true,\n                              })\n                            }\n                          >\n                            <BellIcon />\n                            Push Notifications\n                          </DropdownMenuCheckboxItem>\n                          <DropdownMenuCheckboxItem\n                            checked={notifications.email}\n                            onCheckedChange={(checked) =>\n                              setNotifications({\n                                ...notifications,\n                                email: checked === true,\n                              })\n                            }\n                          >\n                            <MailIcon />\n                            Email Notifications\n                          </DropdownMenuCheckboxItem>\n                        </DropdownMenuGroup>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <ShieldIcon />\n                    Privacy & Security\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <HelpCircleIcon />\n            Help & Support\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <FileTextIcon />\n            Documentation\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem variant=\"destructive\">\n            <LogOutIcon />\n            Sign Out\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\n\nexport function DropdownMenuDemo() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-40\" align=\"start\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>My Account</DropdownMenuLabel>\n          <DropdownMenuItem>\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Billing\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Settings\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>Team</DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuItem>Email</DropdownMenuItem>\n                <DropdownMenuItem>Message</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>More...</DropdownMenuItem>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuItem>\n            New Team\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>GitHub</DropdownMenuItem>\n          <DropdownMenuItem>Support</DropdownMenuItem>\n          <DropdownMenuItem disabled>API</DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            Log out\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-destructive.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport { PencilIcon, ShareIcon, TrashIcon } from \"lucide-react\"\n\nexport function DropdownMenuDestructive() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Actions</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            <PencilIcon />\n            Edit\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <ShareIcon />\n            Share\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem variant=\"destructive\">\n            <TrashIcon />\n            Delete\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-icons.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  CreditCardIcon,\n  LogOutIcon,\n  SettingsIcon,\n  UserIcon,\n} from \"lucide-react\"\n\nexport function DropdownMenuIcons() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuItem>\n          <UserIcon />\n          Profile\n        </DropdownMenuItem>\n        <DropdownMenuItem>\n          <CreditCardIcon />\n          Billing\n        </DropdownMenuItem>\n        <DropdownMenuItem>\n          <SettingsIcon />\n          Settings\n        </DropdownMenuItem>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem variant=\"destructive\">\n          <LogOutIcon />\n          Log out\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\n\nexport function DropdownMenuRadioGroupDemo() {\n  const [position, setPosition] = React.useState(\"bottom\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-32\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\n          <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\n            <DropdownMenuRadioItem value=\"top\">Top</DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"bottom\">Bottom</DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"right\">Right</DropdownMenuRadioItem>\n          </DropdownMenuRadioGroup>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-radio-icons.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport { Building2Icon, CreditCardIcon, WalletIcon } from \"lucide-react\"\n\nexport function DropdownMenuRadioIcons() {\n  const [paymentMethod, setPaymentMethod] = React.useState(\"card\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Payment Method</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"min-w-56\">\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\n          <DropdownMenuRadioGroup\n            value={paymentMethod}\n            onValueChange={setPaymentMethod}\n          >\n            <DropdownMenuRadioItem value=\"card\">\n              <CreditCardIcon />\n              Credit Card\n            </DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"paypal\">\n              <WalletIcon />\n              PayPal\n            </DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"bank\">\n              <Building2Icon />\n              Bank Transfer\n            </DropdownMenuRadioItem>\n          </DropdownMenuRadioGroup>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui-rtl/dropdown-menu\"\nimport { CreditCardIcon, SettingsIcon, UserIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      open: \"Open\",\n      account: \"Account\",\n      profile: \"Profile\",\n      billing: \"Billing\",\n      settings: \"Settings\",\n      logout: \"Log out\",\n      team: \"Team\",\n      inviteUsers: \"Invite users\",\n      email: \"Email\",\n      message: \"Message\",\n      more: \"More\",\n      calendar: \"Calendar\",\n      chat: \"Chat\",\n      webhook: \"Webhook\",\n      advanced: \"Advanced...\",\n      newTeam: \"New Team\",\n      view: \"View\",\n      statusBar: \"Status Bar\",\n      activityBar: \"Activity Bar\",\n      panel: \"Panel\",\n      position: \"Position\",\n      top: \"Top\",\n      bottom: \"Bottom\",\n      right: \"Right\",\n      left: \"Left\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      open: \"افتح القائمة\",\n      account: \"الحساب\",\n      profile: \"الملف الشخصي\",\n      billing: \"الفوترة\",\n      settings: \"الإعدادات\",\n      logout: \"تسجيل الخروج\",\n      team: \"الفريق\",\n      inviteUsers: \"دعوة المستخدمين\",\n      email: \"البريد الإلكتروني\",\n      message: \"رسالة\",\n      more: \"المزيد\",\n      calendar: \"تقويم\",\n      chat: \"دردشة\",\n      webhook: \"خطاف ويب\",\n      advanced: \"متقدم...\",\n      newTeam: \"فريق جديد\",\n      view: \"عرض\",\n      statusBar: \"شريط الحالة\",\n      activityBar: \"شريط النشاط\",\n      panel: \"اللوحة\",\n      position: \"الموضع\",\n      top: \"أعلى\",\n      bottom: \"أسفل\",\n      right: \"يمين\",\n      left: \"يسار\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      open: \"פתח תפריט\",\n      account: \"חשבון\",\n      profile: \"פרופיל\",\n      billing: \"חיוב\",\n      settings: \"הגדרות\",\n      logout: \"התנתק\",\n      team: \"הצוות\",\n      inviteUsers: \"הזמן משתמשים\",\n      email: \"אימייל\",\n      message: \"הודעה\",\n      more: \"עוד\",\n      calendar: \"יומן\",\n      chat: \"צ'אט\",\n      webhook: \"Webhook\",\n      advanced: \"מתקדם...\",\n      newTeam: \"צוות חדש\",\n      view: \"תצוגה\",\n      statusBar: \"שורת סטטוס\",\n      activityBar: \"שורת פעילות\",\n      panel: \"לוח\",\n      position: \"מיקום\",\n      top: \"למעלה\",\n      bottom: \"למטה\",\n      right: \"ימין\",\n      left: \"שמאל\",\n    },\n  },\n}\n\nexport function DropdownMenuRtl() {\n  const { dir, language, t } = useTranslation(translations, \"ar\")\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\n  const [showPanel, setShowPanel] = React.useState(false)\n  const [position, setPosition] = React.useState(\"bottom\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">{t.open}</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        className=\"w-36\"\n        data-lang={dir === \"rtl\" ? language : undefined}\n      >\n        <DropdownMenuGroup>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>{t.account}</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <UserIcon />\n                    {t.profile}\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <CreditCardIcon />\n                    {t.billing}\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <SettingsIcon />\n                    {t.settings}\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>{t.team}</DropdownMenuLabel>\n          <DropdownMenuItem>{t.team}</DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>{t.inviteUsers}</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <DropdownMenuItem>{t.email}</DropdownMenuItem>\n                <DropdownMenuItem>{t.message}</DropdownMenuItem>\n                <DropdownMenuSub>\n                  <DropdownMenuSubTrigger>{t.more}</DropdownMenuSubTrigger>\n                  <DropdownMenuPortal>\n                    <DropdownMenuSubContent\n                      data-lang={dir === \"rtl\" ? language : undefined}\n                    >\n                      <DropdownMenuItem>{t.calendar}</DropdownMenuItem>\n                      <DropdownMenuItem>{t.chat}</DropdownMenuItem>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuItem>{t.webhook}</DropdownMenuItem>\n                    </DropdownMenuSubContent>\n                  </DropdownMenuPortal>\n                </DropdownMenuSub>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>{t.advanced}</DropdownMenuItem>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuItem>\n            {t.newTeam}\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>{t.view}</DropdownMenuLabel>\n          <DropdownMenuCheckboxItem\n            checked={showStatusBar}\n            onCheckedChange={setShowStatusBar}\n          >\n            {t.statusBar}\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showActivityBar}\n            onCheckedChange={setShowActivityBar}\n          >\n            {t.activityBar}\n          </DropdownMenuCheckboxItem>\n          <DropdownMenuCheckboxItem\n            checked={showPanel}\n            onCheckedChange={setShowPanel}\n          >\n            {t.panel}\n          </DropdownMenuCheckboxItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>{t.position}</DropdownMenuLabel>\n          <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\n            <DropdownMenuRadioItem value=\"top\">{t.top}</DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"bottom\">\n              {t.bottom}\n            </DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"right\">\n              {t.right}\n            </DropdownMenuRadioItem>\n            <DropdownMenuRadioItem value=\"left\">{t.left}</DropdownMenuRadioItem>\n          </DropdownMenuRadioGroup>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem variant=\"destructive\">{t.logout}</DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-shortcuts.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\n\nexport function DropdownMenuShortcuts() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuGroup>\n          <DropdownMenuLabel>My Account</DropdownMenuLabel>\n          <DropdownMenuItem>\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Billing\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Settings\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          Log out\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/dropdown-menu-submenu.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuPortal,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\n\nexport function DropdownMenuSubmenu() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent>\n        <DropdownMenuGroup>\n          <DropdownMenuItem>Team</DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuItem>Email</DropdownMenuItem>\n                <DropdownMenuItem>Message</DropdownMenuItem>\n                <DropdownMenuSub>\n                  <DropdownMenuSubTrigger>More options</DropdownMenuSubTrigger>\n                  <DropdownMenuPortal>\n                    <DropdownMenuSubContent>\n                      <DropdownMenuItem>Calendly</DropdownMenuItem>\n                      <DropdownMenuItem>Slack</DropdownMenuItem>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuItem>Webhook</DropdownMenuItem>\n                    </DropdownMenuSubContent>\n                  </DropdownMenuPortal>\n                </DropdownMenuSub>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>Advanced...</DropdownMenuItem>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuItem>\n            New Team\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/empty-avatar-group.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport { PlusIcon } from \"lucide-react\"\n\nexport default function EmptyAvatarGroup() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia>\n          <div className=\"flex -space-x-2 *:data-[slot=avatar]:size-12 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </div>\n        </EmptyMedia>\n        <EmptyTitle>No Team Members</EmptyTitle>\n        <EmptyDescription>\n          Invite your team to collaborate on this project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button size=\"sm\">\n          <PlusIcon />\n          Invite Members\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/empty-avatar.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\n\nexport default function EmptyAvatar() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia variant=\"default\">\n          <Avatar className=\"size-12\">\n            <AvatarImage\n              src=\"https://github.com/shadcn.png\"\n              className=\"grayscale\"\n            />\n            <AvatarFallback>LR</AvatarFallback>\n          </Avatar>\n        </EmptyMedia>\n        <EmptyTitle>User Offline</EmptyTitle>\n        <EmptyDescription>\n          This user is currently offline. You can leave a message to notify them\n          or try again later.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button size=\"sm\">Leave Message</Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/empty-background.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport { IconBell } from \"@tabler/icons-react\"\nimport { RefreshCcwIcon } from \"lucide-react\"\n\nexport function EmptyMuted() {\n  return (\n    <Empty className=\"h-full bg-muted/30\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconBell />\n        </EmptyMedia>\n        <EmptyTitle>No Notifications</EmptyTitle>\n        <EmptyDescription className=\"max-w-xs text-pretty\">\n          You&apos;re all caught up. New notifications will appear here.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\">\n          <RefreshCcwIcon />\n          Refresh\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/empty-card.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport { ArrowUpRightIcon, FolderIcon } from \"lucide-react\"\n\nexport function EmptyInCard() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <FolderIcon />\n        </EmptyMedia>\n        <EmptyTitle>No projects yet</EmptyTitle>\n        <EmptyDescription>\n          You haven&apos;t created any projects yet. Get started by creating\n          your first project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <div className=\"flex gap-2\">\n          <Button asChild>\n            <a href=\"#\">Create project</a>\n          </Button>\n          <Button variant=\"outline\">Import project</Button>\n        </div>\n        <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n          <a href=\"#\">\n            Learn more <ArrowUpRightIcon />\n          </a>\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/empty-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport { IconFolderCode } from \"@tabler/icons-react\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nexport default function EmptyDemo() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconFolderCode />\n        </EmptyMedia>\n        <EmptyTitle>No Projects Yet</EmptyTitle>\n        <EmptyDescription>\n          You haven&apos;t created any projects yet. Get started by creating\n          your first project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent className=\"flex-row justify-center gap-2\">\n        <Button>Create Project</Button>\n        <Button variant=\"outline\">Import Project</Button>\n      </EmptyContent>\n      <Button\n        variant=\"link\"\n        asChild\n        className=\"text-muted-foreground\"\n        size=\"sm\"\n      >\n        <a href=\"#\">\n          Learn More <ArrowUpRightIcon />\n        </a>\n      </Button>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/empty-input-group.tsx",
    "content": "import {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Kbd } from \"@/examples/radix/ui/kbd\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport default function EmptyInputGroup() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyTitle>404 - Not Found</EmptyTitle>\n        <EmptyDescription>\n          The page you&apos;re looking for doesn&apos;t exist. Try searching for\n          what you need below.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <InputGroup className=\"sm:w-3/4\">\n          <InputGroupInput placeholder=\"Try searching for pages...\" />\n          <InputGroupAddon>\n            <SearchIcon />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <Kbd>/</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <EmptyDescription>\n          Need help? <a href=\"#\">Contact support</a>\n        </EmptyDescription>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/empty-outline.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport { IconCloud } from \"@tabler/icons-react\"\n\nexport default function EmptyOutline() {\n  return (\n    <Empty className=\"border border-dashed\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconCloud />\n        </EmptyMedia>\n        <EmptyTitle>Cloud Storage Empty</EmptyTitle>\n        <EmptyDescription>\n          Upload files to your cloud storage to access them anywhere.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          Upload Files\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/empty-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui-rtl/empty\"\nimport { IconFolderCode } from \"@tabler/icons-react\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"No Projects Yet\",\n      description:\n        \"You haven't created any projects yet. Get started by creating your first project.\",\n      createProject: \"Create Project\",\n      importProject: \"Import Project\",\n      learnMore: \"Learn More\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"لا توجد مشاريع بعد\",\n      description: \"لم تقم بإنشاء أي مشاريع بعد. ابدأ بإنشاء مشروعك الأول.\",\n      createProject: \"إنشاء مشروع\",\n      importProject: \"استيراد مشروع\",\n      learnMore: \"تعرف على المزيد\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"אין פרויקטים עדיין\",\n      description:\n        \"עדיין לא יצרת פרויקטים. התחל על ידי יצירת הפרויקט הראשון שלך.\",\n      createProject: \"צור פרויקט\",\n      importProject: \"ייבא פרויקט\",\n      learnMore: \"למד עוד\",\n    },\n  },\n}\n\nexport function EmptyRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Empty dir={dir}>\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconFolderCode />\n        </EmptyMedia>\n        <EmptyTitle>{t.title}</EmptyTitle>\n        <EmptyDescription>{t.description}</EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent className=\"flex-row justify-center gap-2\">\n        <Button>{t.createProject}</Button>\n        <Button variant=\"outline\">{t.importProject}</Button>\n      </EmptyContent>\n      <Button\n        variant=\"link\"\n        asChild\n        className=\"text-muted-foreground\"\n        size=\"sm\"\n      >\n        <a href=\"#\">\n          {t.learnMore}{\" \"}\n          <ArrowUpRightIcon className=\"rtl:rotate-270\" data-icon=\"inline-end\" />\n        </a>\n      </Button>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-checkbox.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\n\nexport function FieldCheckbox() {\n  return (\n    <FieldGroup className=\"w-full max-w-xs\">\n      <FieldSet>\n        <FieldLegend variant=\"label\">\n          Show these items on the desktop\n        </FieldLegend>\n        <FieldDescription>\n          Select the items you want to show on the desktop.\n        </FieldDescription>\n        <FieldGroup className=\"gap-3\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"finder-pref-9k2-hard-disks-ljj\" />\n            <FieldLabel\n              htmlFor=\"finder-pref-9k2-hard-disks-ljj\"\n              className=\"font-normal\"\n              defaultChecked\n            >\n              Hard disks\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"finder-pref-9k2-external-disks-1yg\" />\n            <FieldLabel\n              htmlFor=\"finder-pref-9k2-external-disks-1yg\"\n              className=\"font-normal\"\n            >\n              External disks\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"finder-pref-9k2-cds-dvds-fzt\" />\n            <FieldLabel\n              htmlFor=\"finder-pref-9k2-cds-dvds-fzt\"\n              className=\"font-normal\"\n            >\n              CDs, DVDs, and iPods\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"finder-pref-9k2-connected-servers-6l2\" />\n            <FieldLabel\n              htmlFor=\"finder-pref-9k2-connected-servers-6l2\"\n              className=\"font-normal\"\n            >\n              Connected servers\n            </FieldLabel>\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n      <FieldSeparator />\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"finder-pref-9k2-sync-folders-nep\" defaultChecked />\n        <FieldContent>\n          <FieldLabel htmlFor=\"finder-pref-9k2-sync-folders-nep\">\n            Sync Desktop & Documents folders\n          </FieldLabel>\n          <FieldDescription>\n            Your Desktop & Documents folders are being synced with iCloud Drive.\n            You can access them from other devices.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-choice-card.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/radix/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport default function FieldChoiceCard() {\n  return (\n    <FieldGroup className=\"w-full max-w-xs\">\n      <FieldSet>\n        <FieldLegend variant=\"label\">Compute Environment</FieldLegend>\n        <FieldDescription>\n          Select the compute environment for your cluster.\n        </FieldDescription>\n        <RadioGroup defaultValue=\"kubernetes\">\n          <FieldLabel htmlFor=\"kubernetes-r2h\">\n            <Field orientation=\"horizontal\">\n              <FieldContent>\n                <FieldTitle>Kubernetes</FieldTitle>\n                <FieldDescription>\n                  Run GPU workloads on a K8s cluster.\n                </FieldDescription>\n              </FieldContent>\n              <RadioGroupItem value=\"kubernetes\" id=\"kubernetes-r2h\" />\n            </Field>\n          </FieldLabel>\n          <FieldLabel htmlFor=\"vm-z4k\">\n            <Field orientation=\"horizontal\">\n              <FieldContent>\n                <FieldTitle>Virtual Machine</FieldTitle>\n                <FieldDescription>\n                  Access a cluster to run GPU workloads.\n                </FieldDescription>\n              </FieldContent>\n              <RadioGroupItem value=\"vm\" id=\"vm-z4k\" />\n            </Field>\n          </FieldLabel>\n        </RadioGroup>\n      </FieldSet>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\n\nexport default function FieldDemo() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <form>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>Payment Method</FieldLegend>\n            <FieldDescription>\n              All transactions are secure and encrypted\n            </FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-name-43j\">\n                  Name on Card\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-name-43j\"\n                  placeholder=\"Evil Rabbit\"\n                  required\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-number-uw1\">\n                  Card Number\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-number-uw1\"\n                  placeholder=\"1234 5678 9012 3456\"\n                  required\n                />\n                <FieldDescription>\n                  Enter your 16-digit card number\n                </FieldDescription>\n              </Field>\n              <div className=\"grid grid-cols-3 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-exp-month-ts6\">\n                    Month\n                  </FieldLabel>\n                  <Select defaultValue=\"\">\n                    <SelectTrigger id=\"checkout-exp-month-ts6\">\n                      <SelectValue placeholder=\"MM\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        <SelectItem value=\"01\">01</SelectItem>\n                        <SelectItem value=\"02\">02</SelectItem>\n                        <SelectItem value=\"03\">03</SelectItem>\n                        <SelectItem value=\"04\">04</SelectItem>\n                        <SelectItem value=\"05\">05</SelectItem>\n                        <SelectItem value=\"06\">06</SelectItem>\n                        <SelectItem value=\"07\">07</SelectItem>\n                        <SelectItem value=\"08\">08</SelectItem>\n                        <SelectItem value=\"09\">09</SelectItem>\n                        <SelectItem value=\"10\">10</SelectItem>\n                        <SelectItem value=\"11\">11</SelectItem>\n                        <SelectItem value=\"12\">12</SelectItem>\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-exp-year-f59\">\n                    Year\n                  </FieldLabel>\n                  <Select defaultValue=\"\">\n                    <SelectTrigger id=\"checkout-7j9-exp-year-f59\">\n                      <SelectValue placeholder=\"YYYY\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        <SelectItem value=\"2024\">2024</SelectItem>\n                        <SelectItem value=\"2025\">2025</SelectItem>\n                        <SelectItem value=\"2026\">2026</SelectItem>\n                        <SelectItem value=\"2027\">2027</SelectItem>\n                        <SelectItem value=\"2028\">2028</SelectItem>\n                        <SelectItem value=\"2029\">2029</SelectItem>\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-cvv\">CVV</FieldLabel>\n                  <Input id=\"checkout-7j9-cvv\" placeholder=\"123\" required />\n                </Field>\n              </div>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>Billing Address</FieldLegend>\n            <FieldDescription>\n              The billing address associated with your payment method\n            </FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  id=\"checkout-7j9-same-as-shipping-wgm\"\n                  defaultChecked\n                />\n                <FieldLabel\n                  htmlFor=\"checkout-7j9-same-as-shipping-wgm\"\n                  className=\"font-normal\"\n                >\n                  Same as shipping address\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-optional-comments\">\n                  Comments\n                </FieldLabel>\n                <Textarea\n                  id=\"checkout-7j9-optional-comments\"\n                  placeholder=\"Add any additional comments\"\n                  className=\"resize-none\"\n                />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <Field orientation=\"horizontal\">\n            <Button type=\"submit\">Submit</Button>\n            <Button variant=\"outline\" type=\"button\">\n              Cancel\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-fieldset.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function FieldFieldset() {\n  return (\n    <FieldSet className=\"w-full max-w-sm\">\n      <FieldLegend>Address Information</FieldLegend>\n      <FieldDescription>\n        We need your address to deliver your order.\n      </FieldDescription>\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"street\">Street Address</FieldLabel>\n          <Input id=\"street\" type=\"text\" placeholder=\"123 Main St\" />\n        </Field>\n        <div className=\"grid grid-cols-2 gap-4\">\n          <Field>\n            <FieldLabel htmlFor=\"city\">City</FieldLabel>\n            <Input id=\"city\" type=\"text\" placeholder=\"New York\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"zip\">Postal Code</FieldLabel>\n            <Input id=\"zip\" type=\"text\" placeholder=\"90502\" />\n          </Field>\n        </div>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-group.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\n\nexport default function FieldGroupExample() {\n  return (\n    <FieldGroup className=\"w-full max-w-xs\">\n      <FieldSet>\n        <FieldLabel>Responses</FieldLabel>\n        <FieldDescription>\n          Get notified when ChatGPT responds to requests that take time, like\n          research or image generation.\n        </FieldDescription>\n        <FieldGroup data-slot=\"checkbox-group\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"push\" defaultChecked disabled />\n            <FieldLabel htmlFor=\"push\" className=\"font-normal\">\n              Push notifications\n            </FieldLabel>\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n      <FieldSeparator />\n      <FieldSet>\n        <FieldLabel>Tasks</FieldLabel>\n        <FieldDescription>\n          Get notified when tasks you&apos;ve created have updates.{\" \"}\n          <a href=\"#\">Manage tasks</a>\n        </FieldDescription>\n        <FieldGroup data-slot=\"checkbox-group\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"push-tasks\" />\n            <FieldLabel htmlFor=\"push-tasks\" className=\"font-normal\">\n              Push notifications\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"email-tasks\" />\n            <FieldLabel htmlFor=\"email-tasks\" className=\"font-normal\">\n              Email notifications\n            </FieldLabel>\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-input.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport default function FieldInput() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"username\">Username</FieldLabel>\n          <Input id=\"username\" type=\"text\" placeholder=\"Max Leiter\" />\n          <FieldDescription>\n            Choose a unique username for your account.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n          <FieldDescription>\n            Must be at least 8 characters long.\n          </FieldDescription>\n          <Input id=\"password\" type=\"password\" placeholder=\"••••••••\" />\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-radio.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport function FieldRadio() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n      <FieldDescription>\n        Yearly and lifetime plans offer significant savings.\n      </FieldDescription>\n      <RadioGroup defaultValue=\"monthly\">\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"monthly\" id=\"plan-monthly\" />\n          <FieldLabel htmlFor=\"plan-monthly\" className=\"font-normal\">\n            Monthly ($9.99/month)\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"yearly\" id=\"plan-yearly\" />\n          <FieldLabel htmlFor=\"plan-yearly\" className=\"font-normal\">\n            Yearly ($99.99/year)\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"lifetime\" id=\"plan-lifetime\" />\n          <FieldLabel htmlFor=\"plan-lifetime\" className=\"font-normal\">\n            Lifetime ($299.99)\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-responsive.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function FieldResponsive() {\n  return (\n    <div className=\"w-full max-w-lg\">\n      <form>\n        <FieldSet>\n          <FieldLegend>Profile</FieldLegend>\n          <FieldDescription>Fill in your profile information.</FieldDescription>\n          <FieldGroup>\n            <Field orientation=\"responsive\">\n              <FieldContent>\n                <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n                <FieldDescription>\n                  Provide your full name for identification\n                </FieldDescription>\n              </FieldContent>\n              <Input id=\"name\" placeholder=\"Evil Rabbit\" required />\n            </Field>\n            <Field orientation=\"responsive\">\n              <Button type=\"submit\">Submit</Button>\n              <Button type=\"button\" variant=\"outline\">\n                Cancel\n              </Button>\n            </Field>\n          </FieldGroup>\n        </FieldSet>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { Checkbox } from \"@/examples/radix/ui-rtl/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/examples/radix/ui-rtl/field\"\nimport { Input } from \"@/examples/radix/ui-rtl/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui-rtl/select\"\nimport { Textarea } from \"@/examples/radix/ui-rtl/textarea\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst months = [\n  { label: \"MM\", value: null },\n  { label: \"01\", value: \"01\" },\n  { label: \"02\", value: \"02\" },\n  { label: \"03\", value: \"03\" },\n  { label: \"04\", value: \"04\" },\n  { label: \"05\", value: \"05\" },\n  { label: \"06\", value: \"06\" },\n  { label: \"07\", value: \"07\" },\n  { label: \"08\", value: \"08\" },\n  { label: \"09\", value: \"09\" },\n  { label: \"10\", value: \"10\" },\n  { label: \"11\", value: \"11\" },\n  { label: \"12\", value: \"12\" },\n]\n\nconst years = [\n  { label: \"YYYY\", value: null },\n  { label: \"2024\", value: \"2024\" },\n  { label: \"2025\", value: \"2025\" },\n  { label: \"2026\", value: \"2026\" },\n  { label: \"2027\", value: \"2027\" },\n  { label: \"2028\", value: \"2028\" },\n  { label: \"2029\", value: \"2029\" },\n]\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      paymentMethod: \"Payment Method\",\n      secureTransactions: \"All transactions are secure and encrypted\",\n      nameOnCard: \"Name on Card\",\n      cardNumber: \"Card Number\",\n      cardNumberDescription: \"Enter your 16-digit card number\",\n      month: \"Month\",\n      year: \"Year\",\n      cvv: \"CVV\",\n      monthPlaceholder: \"MM\",\n      month01: \"01\",\n      month02: \"02\",\n      month03: \"03\",\n      month04: \"04\",\n      month05: \"05\",\n      month06: \"06\",\n      month07: \"07\",\n      month08: \"08\",\n      month09: \"09\",\n      month10: \"10\",\n      month11: \"11\",\n      month12: \"12\",\n      billingAddress: \"Billing Address\",\n      billingAddressDescription:\n        \"The billing address associated with your payment method\",\n      sameAsShipping: \"Same as shipping address\",\n      comments: \"Comments\",\n      commentsPlaceholder: \"Add any additional comments\",\n      submit: \"Submit\",\n      cancel: \"Cancel\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      paymentMethod: \"طريقة الدفع\",\n      secureTransactions: \"جميع المعاملات آمنة ومشفرة\",\n      nameOnCard: \"الاسم على البطاقة\",\n      cardNumber: \"رقم البطاقة\",\n      cardNumberDescription: \"أدخل رقم البطاقة المكون من 16 رقمًا\",\n      month: \"الشهر\",\n      year: \"السنة\",\n      cvv: \"CVV\",\n      monthPlaceholder: \"ش.ش\",\n      month01: \"٠١\",\n      month02: \"٠٢\",\n      month03: \"٠٣\",\n      month04: \"٠٤\",\n      month05: \"٠٥\",\n      month06: \"٠٦\",\n      month07: \"٠٧\",\n      month08: \"٠٨\",\n      month09: \"٠٩\",\n      month10: \"١٠\",\n      month11: \"١١\",\n      month12: \"١٢\",\n      billingAddress: \"عنوان الفوترة\",\n      billingAddressDescription: \"عنوان الفوترة المرتبط بطريقة الدفع الخاصة بك\",\n      sameAsShipping: \"نفس عنوان الشحن\",\n      comments: \"تعليقات\",\n      commentsPlaceholder: \"أضف أي تعليقات إضافية\",\n      submit: \"إرسال\",\n      cancel: \"إلغاء\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      paymentMethod: \"אמצעי תשלום\",\n      secureTransactions: \"כל העסקאות מאובטחות ומוצפנות\",\n      nameOnCard: \"שם על הכרטיס\",\n      cardNumber: \"מספר כרטיס\",\n      cardNumberDescription: \"הזן את מספר הכרטיס בן 16 הספרות שלך\",\n      month: \"חודש\",\n      year: \"שנה\",\n      cvv: \"CVV\",\n      monthPlaceholder: \"MM\",\n      month01: \"01\",\n      month02: \"02\",\n      month03: \"03\",\n      month04: \"04\",\n      month05: \"05\",\n      month06: \"06\",\n      month07: \"07\",\n      month08: \"08\",\n      month09: \"09\",\n      month10: \"10\",\n      month11: \"11\",\n      month12: \"12\",\n      billingAddress: \"כתובת חיוב\",\n      billingAddressDescription: \"כתובת החיוב המשויכת לאמצעי התשלום שלך\",\n      sameAsShipping: \"זהה לכתובת המשלוח\",\n      comments: \"הערות\",\n      commentsPlaceholder: \"הוסף הערות נוספות\",\n      submit: \"שלח\",\n      cancel: \"בטל\",\n    },\n  },\n}\n\nexport function FieldRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  const getMonthLabel = (value: string | null): string => {\n    if (value === null) return t.monthPlaceholder\n    const monthKey = `month${value}` as keyof typeof t\n    return t[monthKey] || value\n  }\n\n  return (\n    <div className=\"w-full max-w-md py-6\" dir={dir}>\n      <form>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>{t.paymentMethod}</FieldLegend>\n            <FieldDescription>{t.secureTransactions}</FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-name-43j-rtl\">\n                  {t.nameOnCard}\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-name-43j-rtl\"\n                  placeholder=\"Evil Rabbit\"\n                  required\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-number-uw1-rtl\">\n                  {t.cardNumber}\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-number-uw1-rtl\"\n                  placeholder=\"1234 5678 9012 3456\"\n                  required\n                />\n                <FieldDescription>{t.cardNumberDescription}</FieldDescription>\n              </Field>\n              <div className=\"grid grid-cols-3 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-exp-month-ts6-rtl\">\n                    {t.month}\n                  </FieldLabel>\n                  <Select>\n                    <SelectTrigger id=\"checkout-exp-month-ts6-rtl\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent dir={dir}>\n                      <SelectGroup>\n                        {months.map((item) => (\n                          <SelectItem\n                            key={item.label}\n                            value={item.value ?? item.label}\n                          >\n                            {getMonthLabel(item.value)}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-exp-year-f59-rtl\">\n                    {t.year}\n                  </FieldLabel>\n                  <Select>\n                    <SelectTrigger id=\"checkout-7j9-exp-year-f59-rtl\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent dir={dir}>\n                      <SelectGroup>\n                        {years.map((item) => (\n                          <SelectItem\n                            key={item.label}\n                            value={item.value ?? item.label}\n                          >\n                            {item.label}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-cvv-rtl\">\n                    {t.cvv}\n                  </FieldLabel>\n                  <Input id=\"checkout-7j9-cvv-rtl\" placeholder=\"123\" required />\n                </Field>\n              </div>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>{t.billingAddress}</FieldLegend>\n            <FieldDescription>{t.billingAddressDescription}</FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  id=\"checkout-7j9-same-as-shipping-wgm-rtl\"\n                  defaultChecked\n                />\n                <FieldLabel\n                  htmlFor=\"checkout-7j9-same-as-shipping-wgm-rtl\"\n                  className=\"font-normal\"\n                >\n                  {t.sameAsShipping}\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-optional-comments-rtl\">\n                  {t.comments}\n                </FieldLabel>\n                <Textarea\n                  id=\"checkout-7j9-optional-comments-rtl\"\n                  placeholder={t.commentsPlaceholder}\n                  className=\"resize-none\"\n                />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <Field orientation=\"horizontal\">\n            <Button type=\"submit\">{t.submit}</Button>\n            <Button variant=\"outline\" type=\"button\">\n              {t.cancel}\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-select.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\n\nexport default function FieldSelect() {\n  return (\n    <Field className=\"w-full max-w-xs\">\n      <FieldLabel>Department</FieldLabel>\n      <Select>\n        <SelectTrigger>\n          <SelectValue placeholder=\"Choose department\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            <SelectItem value=\"engineering\">Engineering</SelectItem>\n            <SelectItem value=\"design\">Design</SelectItem>\n            <SelectItem value=\"marketing\">Marketing</SelectItem>\n            <SelectItem value=\"sales\">Sales</SelectItem>\n            <SelectItem value=\"support\">Customer Support</SelectItem>\n            <SelectItem value=\"hr\">Human Resources</SelectItem>\n            <SelectItem value=\"finance\">Finance</SelectItem>\n            <SelectItem value=\"operations\">Operations</SelectItem>\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n      <FieldDescription>\n        Select your department or area of work.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Field, FieldDescription, FieldTitle } from \"@/examples/radix/ui/field\"\nimport { Slider } from \"@/examples/radix/ui/slider\"\n\nexport default function FieldSlider() {\n  const [value, setValue] = React.useState([200, 800])\n\n  return (\n    <Field className=\"w-full max-w-xs\">\n      <FieldTitle>Price Range</FieldTitle>\n      <FieldDescription>\n        Set your budget range ($\n        <span className=\"font-medium tabular-nums\">{value[0]}</span> -{\" \"}\n        <span className=\"font-medium tabular-nums\">{value[1]}</span>).\n      </FieldDescription>\n      <Slider\n        value={value}\n        onValueChange={(value) => setValue(value as [number, number])}\n        max={1000}\n        min={0}\n        step={10}\n        className=\"mt-2 w-full\"\n        aria-label=\"Price Range\"\n      />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-switch.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\n\nexport default function FieldSwitch() {\n  return (\n    <Field orientation=\"horizontal\" className=\"w-fit\">\n      <FieldLabel htmlFor=\"2fa\">Multi-factor authentication</FieldLabel>\n      <Switch id=\"2fa\" />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/field-textarea.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\n\nexport default function FieldTextarea() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"feedback\">Feedback</FieldLabel>\n          <Textarea\n            id=\"feedback\"\n            placeholder=\"Your feedback helps us improve...\"\n            rows={4}\n          />\n          <FieldDescription>\n            Share your thoughts about our service.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/file-upload-list.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { Progress } from \"@/examples/radix/ui/progress\"\nimport { FileIcon } from \"lucide-react\"\n\nexport function FileUploadList() {\n  const files = React.useMemo(\n    () => [\n      {\n        id: \"1\",\n        name: \"document.pdf\",\n        progress: 45,\n        timeRemaining: \"2m 30s\",\n      },\n      {\n        id: \"2\",\n        name: \"presentation.pptx\",\n        progress: 78,\n        timeRemaining: \"45s\",\n      },\n      {\n        id: \"3\",\n        name: \"spreadsheet.xlsx\",\n        progress: 12,\n        timeRemaining: \"5m 12s\",\n      },\n      {\n        id: \"4\",\n        name: \"image.jpg\",\n        progress: 100,\n        timeRemaining: \"Complete\",\n      },\n    ],\n    []\n  )\n\n  return (\n    <ItemGroup>\n      {files.map((file) => (\n        <Item key={file.id} size=\"xs\" className=\"px-0\">\n          <ItemMedia variant=\"icon\">\n            <FileIcon className=\"size-5\" />\n          </ItemMedia>\n          <ItemContent className=\"inline-block truncate\">\n            <ItemTitle className=\"inline\">{file.name}</ItemTitle>\n          </ItemContent>\n          <ItemContent>\n            <Progress value={file.progress} className=\"w-32\" />\n          </ItemContent>\n          <ItemActions className=\"w-16 justify-end\">\n            <span className=\"text-sm text-muted-foreground\">\n              {file.timeRemaining}\n            </span>\n          </ItemActions>\n        </Item>\n      ))}\n    </ItemGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/hooks/use-mobile.ts",
    "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n  React.useEffect(() => {\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n    const onChange = () => {\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    }\n    mql.addEventListener(\"change\", onChange)\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    return () => mql.removeEventListener(\"change\", onChange)\n  }, [])\n\n  return !!isMobile\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/hover-card-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/examples/radix/ui/hover-card\"\n\nexport default function HoverCardDemo() {\n  return (\n    <HoverCard openDelay={10} closeDelay={100}>\n      <HoverCardTrigger asChild>\n        <Button variant=\"link\">Hover Here</Button>\n      </HoverCardTrigger>\n      <HoverCardContent className=\"flex w-64 flex-col gap-0.5\">\n        <div className=\"font-semibold\">@nextjs</div>\n        <div>The React Framework – created and maintained by @vercel.</div>\n        <div className=\"mt-1 text-xs text-muted-foreground\">\n          Joined December 2021\n        </div>\n      </HoverCardContent>\n    </HoverCard>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/hover-card-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/examples/radix/ui-rtl/hover-card\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      trigger: \"Wireless Headphones\",\n      name: \"Wireless Headphones\",\n      price: \"$99.99\",\n      left: \"Left\",\n      top: \"Top\",\n      bottom: \"Bottom\",\n      right: \"Right\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      trigger: \"سماعات لاسلكية\",\n      name: \"سماعات لاسلكية\",\n      price: \"٩٩.٩٩ $\",\n      left: \"يسار\",\n      top: \"أعلى\",\n      bottom: \"أسفل\",\n      right: \"يمين\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      trigger: \"אוזניות אלחוטיות\",\n      name: \"אוזניות אלחוטיות\",\n      price: \"99.99 $\",\n      left: \"שמאל\",\n      top: \"למעלה\",\n      bottom: \"למטה\",\n      right: \"ימין\",\n    },\n  },\n}\n\nconst physicalSides: Array<\"left\" | \"top\" | \"bottom\" | \"right\"> = [\n  \"left\",\n  \"top\",\n  \"bottom\",\n  \"right\",\n]\n\nexport function HoverCardRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex flex-wrap justify-center gap-2\">\n      {physicalSides.map((side) => (\n        <HoverCard key={side} openDelay={10} closeDelay={100}>\n          <HoverCardTrigger asChild>\n            <Button variant=\"outline\">{t[side]}</Button>\n          </HoverCardTrigger>\n          <HoverCardContent\n            side={side}\n            className=\"flex w-64 flex-col gap-1\"\n            dir={dir}\n          >\n            <div className=\"font-semibold\">{t.name}</div>\n            <div className=\"text-sm text-muted-foreground\">{t.price}</div>\n          </HoverCardContent>\n        </HoverCard>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/hover-card-sides.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/examples/radix/ui/hover-card\"\n\nconst HOVER_CARD_SIDES = [\"left\", \"top\", \"bottom\", \"right\"] as const\n\nexport function HoverCardSides() {\n  return (\n    <div className=\"flex flex-wrap justify-center gap-2\">\n      {HOVER_CARD_SIDES.map((side) => (\n        <HoverCard key={side} openDelay={100} closeDelay={100}>\n          <HoverCardTrigger asChild>\n            <Button variant=\"outline\" className=\"capitalize\">\n              {side}\n            </Button>\n          </HoverCardTrigger>\n          <HoverCardContent side={side}>\n            <div className=\"flex flex-col gap-1\">\n              <h4 className=\"font-medium\">Hover Card</h4>\n              <p>This hover card appears on the {side} side of the trigger.</p>\n            </div>\n          </HoverCardContent>\n        </HoverCard>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-badge.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputBadge() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-badge\">\n        Webhook URL{\" \"}\n        <Badge variant=\"secondary\" className=\"ml-auto\">\n          Beta\n        </Badge>\n      </FieldLabel>\n      <Input\n        id=\"input-badge\"\n        type=\"url\"\n        placeholder=\"https://api.example.com/webhook\"\n      />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-basic.tsx",
    "content": "import { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputBasic() {\n  return <Input placeholder=\"Enter text\" />\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-button-group.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputButtonGroup() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-button-group\">Search</FieldLabel>\n      <ButtonGroup>\n        <Input id=\"input-button-group\" placeholder=\"Type to search...\" />\n        <Button variant=\"outline\">Search</Button>\n      </ButtonGroup>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-demo.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputDemo() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-demo-api-key\">API Key</FieldLabel>\n      <Input id=\"input-demo-api-key\" type=\"password\" placeholder=\"sk-...\" />\n      <FieldDescription>\n        Your API key is encrypted and stored securely.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-disabled.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputDisabled() {\n  return (\n    <Field data-disabled>\n      <FieldLabel htmlFor=\"input-demo-disabled\">Email</FieldLabel>\n      <Input\n        id=\"input-demo-disabled\"\n        type=\"email\"\n        placeholder=\"Email\"\n        disabled\n      />\n      <FieldDescription>This field is currently disabled.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-field.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputField() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-field-username\">Username</FieldLabel>\n      <Input\n        id=\"input-field-username\"\n        type=\"text\"\n        placeholder=\"Enter your username\"\n      />\n      <FieldDescription>\n        Choose a unique username for your account.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-fieldgroup.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputFieldgroup() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"fieldgroup-name\">Name</FieldLabel>\n        <Input id=\"fieldgroup-name\" placeholder=\"Jordan Lee\" />\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"fieldgroup-email\">Email</FieldLabel>\n        <Input\n          id=\"fieldgroup-email\"\n          type=\"email\"\n          placeholder=\"name@example.com\"\n        />\n        <FieldDescription>\n          We&apos;ll send updates to this address.\n        </FieldDescription>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <Button type=\"reset\" variant=\"outline\">\n          Reset\n        </Button>\n        <Button type=\"submit\">Submit</Button>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-file.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputFile() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"picture\">Picture</FieldLabel>\n      <Input id=\"picture\" type=\"file\" />\n      <FieldDescription>Select a picture to upload.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-form.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\n\nexport function InputForm() {\n  return (\n    <form className=\"w-full max-w-sm\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"form-name\">Name</FieldLabel>\n          <Input\n            id=\"form-name\"\n            type=\"text\"\n            placeholder=\"Evil Rabbit\"\n            required\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"form-email\">Email</FieldLabel>\n          <Input id=\"form-email\" type=\"email\" placeholder=\"john@example.com\" />\n          <FieldDescription>\n            We&apos;ll never share your email with anyone.\n          </FieldDescription>\n        </Field>\n        <div className=\"grid grid-cols-2 gap-4\">\n          <Field>\n            <FieldLabel htmlFor=\"form-phone\">Phone</FieldLabel>\n            <Input id=\"form-phone\" type=\"tel\" placeholder=\"+1 (555) 123-4567\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"form-country\">Country</FieldLabel>\n            <Select defaultValue=\"us\">\n              <SelectTrigger id=\"form-country\">\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"us\">United States</SelectItem>\n                <SelectItem value=\"uk\">United Kingdom</SelectItem>\n                <SelectItem value=\"ca\">Canada</SelectItem>\n              </SelectContent>\n            </Select>\n          </Field>\n        </div>\n        <Field>\n          <FieldLabel htmlFor=\"form-address\">Address</FieldLabel>\n          <Input id=\"form-address\" type=\"text\" placeholder=\"123 Main St\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\">\n            Cancel\n          </Button>\n          <Button type=\"submit\">Submit</Button>\n        </Field>\n      </FieldGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-grid.tsx",
    "content": "import { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputGrid() {\n  return (\n    <FieldGroup className=\"grid max-w-sm grid-cols-2\">\n      <Field>\n        <FieldLabel htmlFor=\"first-name\">First Name</FieldLabel>\n        <Input id=\"first-name\" placeholder=\"Jordan\" />\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"last-name\">Last Name</FieldLabel>\n        <Input id=\"last-name\" placeholder=\"Lee\" />\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-basic.tsx",
    "content": "import { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { InputGroup, InputGroupInput } from \"@/examples/radix/ui/input-group\"\n\nexport function InputGroupBasic() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-default-01\">\n          Default (No Input Group)\n        </FieldLabel>\n        <Input placeholder=\"Placeholder\" id=\"input-default-01\" />\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-group-02\">Input Group</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-group-02\" placeholder=\"Placeholder\" />\n        </InputGroup>\n      </Field>\n      <Field data-disabled=\"true\">\n        <FieldLabel htmlFor=\"input-disabled-03\">Disabled</FieldLabel>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-disabled-03\"\n            placeholder=\"This field is disabled\"\n            disabled\n          />\n        </InputGroup>\n      </Field>\n      <Field data-invalid=\"true\">\n        <FieldLabel htmlFor=\"input-invalid-04\">Invalid</FieldLabel>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-invalid-04\"\n            placeholder=\"This field is invalid\"\n            aria-invalid=\"true\"\n          />\n        </InputGroup>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-block-end.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\n\nexport function InputGroupBlockEnd() {\n  return (\n    <FieldGroup className=\"max-w-sm\">\n      <Field>\n        <FieldLabel htmlFor=\"block-end-input\">Input</FieldLabel>\n        <InputGroup className=\"h-auto\">\n          <InputGroupInput id=\"block-end-input\" placeholder=\"Enter amount\" />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupText>USD</InputGroupText>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>Footer positioned below the input.</FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"block-end-textarea\">Textarea</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"block-end-textarea\"\n            placeholder=\"Write a comment...\"\n          />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupText>0/280</InputGroupText>\n            <InputGroupButton variant=\"default\" size=\"sm\" className=\"ml-auto\">\n              Post\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          Footer positioned below the textarea.\n        </FieldDescription>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-block-start.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\nimport { CopyIcon, FileCodeIcon } from \"lucide-react\"\n\nexport function InputGroupBlockStart() {\n  return (\n    <FieldGroup className=\"max-w-sm\">\n      <Field>\n        <FieldLabel htmlFor=\"block-start-input\">Input</FieldLabel>\n        <InputGroup className=\"h-auto\">\n          <InputGroupInput\n            id=\"block-start-input\"\n            placeholder=\"Enter your name\"\n          />\n          <InputGroupAddon align=\"block-start\">\n            <InputGroupText>Full Name</InputGroupText>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>Header positioned above the input.</FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"block-start-textarea\">Textarea</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"block-start-textarea\"\n            placeholder=\"console.log('Hello, world!');\"\n            className=\"font-mono text-sm\"\n          />\n          <InputGroupAddon align=\"block-start\">\n            <FileCodeIcon className=\"text-muted-foreground\" />\n            <InputGroupText className=\"font-mono\">script.js</InputGroupText>\n            <InputGroupButton size=\"icon-xs\" className=\"ml-auto\">\n              <CopyIcon />\n              <span className=\"sr-only\">Copy</span>\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          Header positioned above the textarea.\n        </FieldDescription>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-button-group.tsx",
    "content": "import { ButtonGroup, ButtonGroupText } from \"@/examples/radix/ui/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Label } from \"@/examples/radix/ui/label\"\nimport { Link2Icon } from \"lucide-react\"\n\nexport default function InputGroupButtonGroup() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <ButtonGroup>\n        <ButtonGroupText asChild>\n          <Label htmlFor=\"url\">https://</Label>\n        </ButtonGroupText>\n        <InputGroup>\n          <InputGroupInput id=\"url\" />\n          <InputGroupAddon align=\"inline-end\">\n            <Link2Icon />\n          </InputGroupAddon>\n        </InputGroup>\n        <ButtonGroupText>.com</ButtonGroupText>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport {\n  IconCheck,\n  IconCopy,\n  IconInfoCircle,\n  IconStar,\n} from \"@tabler/icons-react\"\n\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\"\n\nexport default function InputGroupButtonExample() {\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\n  const [isFavorite, setIsFavorite] = React.useState(false)\n\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"https://x.com/shadcn\" readOnly />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            aria-label=\"Copy\"\n            title=\"Copy\"\n            size=\"icon-xs\"\n            onClick={() => {\n              copyToClipboard(\"https://x.com/shadcn\")\n            }}\n          >\n            {isCopied ? <IconCheck /> : <IconCopy />}\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup className=\"[--radius:9999px]\">\n        <Popover>\n          <PopoverTrigger asChild>\n            <InputGroupAddon>\n              <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                <IconInfoCircle />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </PopoverTrigger>\n          <PopoverContent\n            align=\"start\"\n            className=\"flex flex-col gap-1 rounded-xl text-sm\"\n          >\n            <p className=\"font-medium\">Your connection is not secure.</p>\n            <p>You should not enter any sensitive information on this site.</p>\n          </PopoverContent>\n        </Popover>\n        <InputGroupAddon className=\"pl-1.5 text-muted-foreground\">\n          https://\n        </InputGroupAddon>\n        <InputGroupInput id=\"input-secure-19\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            onClick={() => setIsFavorite(!isFavorite)}\n            size=\"icon-xs\"\n          >\n            <IconStar\n              data-favorite={isFavorite}\n              className=\"data-[favorite=true]:fill-blue-600 data-[favorite=true]:stroke-blue-600\"\n            />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Type to search...\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton variant=\"secondary\">Search</InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-custom.tsx",
    "content": "\"use client\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n} from \"@/examples/radix/ui/input-group\"\nimport TextareaAutosize from \"react-textarea-autosize\"\n\nexport default function InputGroupCustom() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <TextareaAutosize\n          data-slot=\"input-group-control\"\n          className=\"flex field-sizing-content min-h-16 w-full resize-none rounded-md bg-transparent px-3 py-2.5 text-base transition-[color,box-shadow] outline-none md:text-sm\"\n          placeholder=\"Autoresize textarea...\"\n        />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupButton className=\"ml-auto\" size=\"sm\" variant=\"default\">\n            Submit\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-demo.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Search } from \"lucide-react\"\n\nexport function InputGroupDemo() {\n  return (\n    <InputGroup className=\"max-w-xs\">\n      <InputGroupInput placeholder=\"Search...\" />\n      <InputGroupAddon>\n        <Search />\n      </InputGroupAddon>\n      <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n    </InputGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-dropdown.tsx",
    "content": "import {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { ChevronDownIcon, MoreHorizontal } from \"lucide-react\"\n\nexport default function InputGroupDropdown() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter file name\" />\n        <InputGroupAddon align=\"inline-end\">\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"More\"\n                size=\"icon-xs\"\n              >\n                <MoreHorizontal />\n              </InputGroupButton>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\">\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Settings</DropdownMenuItem>\n                <DropdownMenuItem>Copy path</DropdownMenuItem>\n                <DropdownMenuItem>Open location</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup className=\"[--radius:1rem]\">\n        <InputGroupInput placeholder=\"Enter search query\" />\n        <InputGroupAddon align=\"inline-end\">\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <InputGroupButton variant=\"ghost\" className=\"pr-1.5! text-xs\">\n                Search In... <ChevronDownIcon className=\"size-3\" />\n              </InputGroupButton>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"[--radius:0.95rem]\">\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\n                <DropdownMenuItem>Blog Posts</DropdownMenuItem>\n                <DropdownMenuItem>Changelog</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-icon.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  CheckIcon,\n  CreditCardIcon,\n  InfoIcon,\n  MailIcon,\n  SearchIcon,\n  StarIcon,\n} from \"lucide-react\"\n\nexport default function InputGroupIcon() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Search...\" />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput type=\"email\" placeholder=\"Enter your email\" />\n        <InputGroupAddon>\n          <MailIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Card number\" />\n        <InputGroupAddon>\n          <CreditCardIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <CheckIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Card number\" />\n        <InputGroupAddon align=\"inline-end\">\n          <StarIcon />\n          <InfoIcon />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-in-card.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\nimport { ExternalLinkIcon, MailIcon } from \"lucide-react\"\n\nexport function InputGroupInCard() {\n  return (\n    <Card className=\"w-full\">\n      <CardHeader>\n        <CardTitle>Card with Input Group</CardTitle>\n        <CardDescription>This is a card with an input group.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"email-input\">Email Address</FieldLabel>\n            <InputGroup>\n              <InputGroupInput\n                id=\"email-input\"\n                type=\"email\"\n                placeholder=\"you@example.com\"\n              />\n              <InputGroupAddon align=\"inline-end\">\n                <MailIcon />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"website-input\">Website URL</FieldLabel>\n            <InputGroup>\n              <InputGroupAddon>\n                <InputGroupText>https://</InputGroupText>\n              </InputGroupAddon>\n              <InputGroupInput id=\"website-input\" placeholder=\"example.com\" />\n              <InputGroupAddon align=\"inline-end\">\n                <ExternalLinkIcon />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"feedback-textarea\">\n              Feedback & Comments\n            </FieldLabel>\n            <InputGroup>\n              <InputGroupTextarea\n                id=\"feedback-textarea\"\n                placeholder=\"Share your thoughts...\"\n                className=\"min-h-[100px]\"\n              />\n              <InputGroupAddon align=\"block-end\">\n                <InputGroupText>0/500 characters</InputGroupText>\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n      <CardFooter className=\"justify-end gap-2\">\n        <Button variant=\"outline\">Cancel</Button>\n        <Button>Submit</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-inline-end.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { EyeOffIcon } from \"lucide-react\"\n\nexport function InputGroupInlineEnd() {\n  return (\n    <Field className=\"max-w-sm\">\n      <FieldLabel htmlFor=\"inline-end-input\">Input</FieldLabel>\n      <InputGroup>\n        <InputGroupInput\n          id=\"inline-end-input\"\n          type=\"password\"\n          placeholder=\"Enter password\"\n        />\n        <InputGroupAddon align=\"inline-end\">\n          <EyeOffIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <FieldDescription>Icon positioned at the end.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-inline-start.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport function InputGroupInlineStart() {\n  return (\n    <Field className=\"max-w-sm\">\n      <FieldLabel htmlFor=\"inline-start-input\">Input</FieldLabel>\n      <InputGroup>\n        <InputGroupInput id=\"inline-start-input\" placeholder=\"Search...\" />\n        <InputGroupAddon align=\"inline-start\">\n          <SearchIcon className=\"text-muted-foreground\" />\n        </InputGroupAddon>\n      </InputGroup>\n      <FieldDescription>Icon positioned at the start.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-kbd.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Kbd } from \"@/examples/radix/ui/kbd\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport function InputGroupKbd() {\n  return (\n    <InputGroup className=\"max-w-sm\">\n      <InputGroupInput placeholder=\"Search...\" />\n      <InputGroupAddon>\n        <SearchIcon className=\"text-muted-foreground\" />\n      </InputGroupAddon>\n      <InputGroupAddon align=\"inline-end\">\n        <Kbd>⌘K</Kbd>\n      </InputGroupAddon>\n    </InputGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-label.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Label } from \"@/examples/radix/ui/label\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { InfoIcon } from \"lucide-react\"\n\nexport default function InputGroupLabel() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput id=\"email\" placeholder=\"shadcn\" />\n        <InputGroupAddon>\n          <Label htmlFor=\"email\">@</Label>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput id=\"email-2\" placeholder=\"shadcn@vercel.com\" />\n        <InputGroupAddon align=\"block-start\">\n          <Label htmlFor=\"email-2\" className=\"text-foreground\">\n            Email\n          </Label>\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"Help\"\n                className=\"ml-auto rounded-full\"\n                size=\"icon-xs\"\n              >\n                <InfoIcon />\n              </InputGroupButton>\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>We&apos;ll use this to send you notifications</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui-rtl/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui-rtl/input-group\"\nimport { Spinner } from \"@/examples/radix/ui-rtl/spinner\"\nimport { Search } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      placeholder: \"Search...\",\n      results: \"12 results\",\n      searching: \"Searching...\",\n      saving: \"Saving...\",\n      savingChanges: \"Saving changes...\",\n      textareaLabel: \"Textarea\",\n      textareaPlaceholder: \"Write a comment...\",\n      characterCount: \"0/280\",\n      post: \"Post\",\n      textareaDescription: \"Footer positioned below the textarea.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"بحث...\",\n      results: \"١٢ نتيجة\",\n      searching: \"جاري البحث...\",\n      saving: \"جاري الحفظ...\",\n      savingChanges: \"جاري حفظ التغييرات...\",\n      textareaLabel: \"منطقة النص\",\n      textareaPlaceholder: \"اكتب تعليقًا...\",\n      characterCount: \"٠/٢٨٠\",\n      post: \"نشر\",\n      textareaDescription: \"تذييل موضع أسفل منطقة النص.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"חפש...\",\n      results: \"12 תוצאות\",\n      searching: \"מחפש...\",\n      saving: \"שומר...\",\n      savingChanges: \"שומר שינויים...\",\n      textareaLabel: \"אזור טקסט\",\n      textareaPlaceholder: \"כתוב תגובה...\",\n      characterCount: \"0/280\",\n      post: \"פרסם\",\n      textareaDescription: \"כותרת תחתונה ממוקמת מתחת לאזור הטקסט.\",\n    },\n  },\n}\n\nexport function InputGroupRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup className=\"max-w-xs\" dir={dir}>\n        <InputGroupInput placeholder={t.placeholder} />\n        <InputGroupAddon>\n          <Search />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">{t.results}</InputGroupAddon>\n      </InputGroup>\n      <InputGroup dir={dir}>\n        <InputGroupInput placeholder={t.searching} />\n        <InputGroupAddon align=\"inline-end\">\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup dir={dir}>\n        <InputGroupInput placeholder={t.savingChanges} />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>{t.saving}</InputGroupText>\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <FieldGroup className=\"max-w-sm\" dir={dir}>\n        <Field>\n          <FieldLabel htmlFor=\"rtl-textarea\">{t.textareaLabel}</FieldLabel>\n          <InputGroup dir={dir}>\n            <InputGroupTextarea\n              id=\"rtl-textarea\"\n              placeholder={t.textareaPlaceholder}\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupText>{t.characterCount}</InputGroupText>\n              <InputGroupButton variant=\"default\" size=\"sm\" className=\"ml-auto\">\n                {t.post}\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>{t.textareaDescription}</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-spinner.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/examples/radix/ui/input-group\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\nimport { LoaderIcon } from \"lucide-react\"\n\nexport default function InputGroupSpinner() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Searching...\" />\n        <InputGroupAddon align=\"inline-end\">\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Processing...\" />\n        <InputGroupAddon>\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Saving changes...\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>Saving...</InputGroupText>\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Refreshing data...\" />\n        <InputGroupAddon>\n          <LoaderIcon className=\"animate-spin\" />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText className=\"text-muted-foreground\">\n            Please wait...\n          </InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-text.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\n\nexport default function InputGroupTextExample() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupAddon>\n          <InputGroupText>$</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupInput placeholder=\"0.00\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>USD</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupAddon>\n          <InputGroupText>https://</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupInput placeholder=\"example.com\" className=\"pl-0.5!\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>.com</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter your username\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>@company.com</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder=\"Enter your message\" />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupText className=\"text-xs text-muted-foreground\">\n            120 characters left\n          </InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-textarea-examples.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\nimport {\n  ArrowUpIcon,\n  CodeIcon,\n  CopyIcon,\n  InfoIcon,\n  RefreshCwIcon,\n} from \"lucide-react\"\n\nexport function InputGroupTextareaExamples() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-header-footer-12\">\n          Default Textarea (No Input Group)\n        </FieldLabel>\n        <Textarea\n          id=\"textarea-header-footer-12\"\n          placeholder=\"Enter your text here...\"\n        />\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-header-footer-13\">Input Group</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-header-footer-13\"\n            placeholder=\"Enter your text here...\"\n          />\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field data-invalid=\"true\">\n        <FieldLabel htmlFor=\"textarea-header-footer-14\">Invalid</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-header-footer-14\"\n            placeholder=\"Enter your text here...\"\n            aria-invalid=\"true\"\n          />\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field data-disabled=\"true\">\n        <FieldLabel htmlFor=\"textarea-header-footer-15\">Disabled</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-header-footer-15\"\n            placeholder=\"Enter your text here...\"\n            disabled\n          />\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"prompt-31\">Addon (block-start)</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea id=\"prompt-31\" />\n          <InputGroupAddon align=\"block-start\">\n            <InputGroupText>Ask, Search or Chat...</InputGroupText>\n            <InfoIcon className=\"ml-auto text-muted-foreground\" />\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-header-footer-30\">\n          Addon (block-end)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-header-footer-30\"\n            placeholder=\"Enter your text here...\"\n          />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupText>0/280 characters</InputGroupText>\n            <InputGroupButton\n              variant=\"default\"\n              size=\"icon-xs\"\n              className=\"ml-auto rounded-full\"\n            >\n              <ArrowUpIcon />\n              <span className=\"sr-only\">Send</span>\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-comment-31\">Addon (Buttons)</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-comment-31\"\n            placeholder=\"Share your thoughts...\"\n            className=\"min-h-[120px]\"\n          />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupButton variant=\"ghost\" className=\"ml-auto\" size=\"sm\">\n              Cancel\n            </InputGroupButton>\n            <InputGroupButton variant=\"default\" size=\"sm\">\n              Post Comment\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"textarea-code-32\">Code Editor</FieldLabel>\n        <InputGroup>\n          <InputGroupTextarea\n            id=\"textarea-code-32\"\n            placeholder=\"console.log('Hello, world!');\"\n            className=\"min-h-[300px] py-3\"\n          />\n          <InputGroupAddon align=\"block-start\" className=\"border-b\">\n            <InputGroupText className=\"font-mono font-medium\">\n              <CodeIcon />\n              script.js\n            </InputGroupText>\n            <InputGroupButton size=\"icon-xs\" className=\"ml-auto\">\n              <RefreshCwIcon />\n            </InputGroupButton>\n            <InputGroupButton size=\"icon-xs\" variant=\"ghost\">\n              <CopyIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n          <InputGroupAddon align=\"block-end\" className=\"border-t\">\n            <InputGroupText>Line 1, Column 1</InputGroupText>\n            <InputGroupText className=\"ml-auto\">JavaScript</InputGroupText>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-textarea.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  IconBrandJavascript,\n  IconCopy,\n  IconCornerDownLeft,\n  IconRefresh,\n} from \"@tabler/icons-react\"\n\nexport default function InputGroupTextareaExample() {\n  return (\n    <div className=\"grid w-full max-w-md gap-4\">\n      <InputGroup>\n        <InputGroupTextarea\n          id=\"textarea-code-32\"\n          placeholder=\"console.log('Hello, world!');\"\n          className=\"min-h-[200px]\"\n        />\n        <InputGroupAddon align=\"block-end\" className=\"border-t\">\n          <InputGroupText>Line 1, Column 1</InputGroupText>\n          <InputGroupButton size=\"sm\" className=\"ml-auto\" variant=\"default\">\n            Run <IconCornerDownLeft />\n          </InputGroupButton>\n        </InputGroupAddon>\n        <InputGroupAddon align=\"block-start\" className=\"border-b\">\n          <InputGroupText className=\"font-mono font-medium\">\n            <IconBrandJavascript />\n            script.js\n          </InputGroupText>\n          <InputGroupButton className=\"ml-auto\" size=\"icon-xs\">\n            <IconRefresh />\n          </InputGroupButton>\n          <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n            <IconCopy />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-tooltip.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { HelpCircle, InfoIcon } from \"lucide-react\"\n\nexport default function InputGroupTooltip() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter password\" type=\"password\" />\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"Info\"\n                size=\"icon-xs\"\n              >\n                <InfoIcon />\n              </InputGroupButton>\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>Password must be at least 8 characters</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Your email address\" />\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"Help\"\n                size=\"icon-xs\"\n              >\n                <HelpCircle />\n              </InputGroupButton>\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>We&apos;ll use this to send you notifications</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter API key\" />\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <InputGroupAddon>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"Help\"\n                size=\"icon-xs\"\n              >\n                <HelpCircle />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </TooltipTrigger>\n          <TooltipContent side=\"left\">\n            <p>Click for help with API keys</p>\n          </TooltipContent>\n        </Tooltip>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-with-addons.tsx",
    "content": "\"use client\"\n\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  CopyIcon,\n  EyeOffIcon,\n  InfoIcon,\n  MicIcon,\n  RadioIcon,\n  SearchIcon,\n  StarIcon,\n} from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nexport function InputGroupWithAddons() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-icon-left-05\">\n          Addon (inline-start)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-icon-left-05\" />\n          <InputGroupAddon>\n            <SearchIcon className=\"text-muted-foreground\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-icon-right-07\">\n          Addon (inline-end)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-icon-right-07\" />\n          <InputGroupAddon align=\"inline-end\">\n            <EyeOffIcon />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-icon-both-09\">\n          Addon (inline-start and inline-end)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-icon-both-09\" />\n          <InputGroupAddon>\n            <MicIcon className=\"text-muted-foreground\" />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <RadioIcon className=\"animate-pulse text-red-500\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-addon-20\">Addon (block-start)</FieldLabel>\n        <InputGroup className=\"h-auto\">\n          <InputGroupInput id=\"input-addon-20\" />\n          <InputGroupAddon align=\"block-start\">\n            <InputGroupText>First Name</InputGroupText>\n            <InfoIcon className=\"ml-auto text-muted-foreground\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-addon-21\">Addon (block-end)</FieldLabel>\n        <InputGroup className=\"h-auto\">\n          <InputGroupInput id=\"input-addon-21\" />\n          <InputGroupAddon align=\"block-end\">\n            <InputGroupText>20/240 characters</InputGroupText>\n            <InfoIcon className=\"ml-auto text-muted-foreground\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-icon-both-10\">Multiple Icons</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-icon-both-10\" />\n          <InputGroupAddon align=\"inline-end\">\n            <StarIcon />\n            <InputGroupButton\n              size=\"icon-xs\"\n              onClick={() => toast(\"Copied to clipboard\")}\n            >\n              <CopyIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n          <InputGroupAddon>\n            <RadioIcon className=\"animate-pulse text-red-500\" />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-description-10\">Description</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-description-10\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InfoIcon />\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n        <InputGroup>\n          <InputGroupAddon>\n            <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n          </InputGroupAddon>\n          <InputGroupInput id=\"input-label-10\" />\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-optional-12\" aria-label=\"Optional\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupText>(optional)</InputGroupText>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-with-buttons.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { CopyIcon, TrashIcon } from \"lucide-react\"\n\nexport function InputGroupWithButtons() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-button-13\">Button</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-13\" />\n          <InputGroupAddon>\n            <InputGroupButton>Default</InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-14\" />\n          <InputGroupAddon>\n            <InputGroupButton variant=\"outline\">Outline</InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-15\" />\n          <InputGroupAddon>\n            <InputGroupButton variant=\"secondary\">Secondary</InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-16\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupButton variant=\"secondary\">Button</InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-17\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupButton size=\"icon-xs\">\n              <CopyIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-button-18\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n              <TrashIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-with-kbd.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/examples/radix/ui/kbd\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\nimport { CheckIcon, InfoIcon, SearchIcon, SparklesIcon } from \"lucide-react\"\n\nexport function InputGroupWithKbd() {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-kbd-22\">Input Group with Kbd</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-kbd-22\" />\n          <InputGroupAddon>\n            <Kbd>⌘K</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput id=\"input-kbd-23\" />\n          <InputGroupAddon align=\"inline-end\">\n            <Kbd>⌘K</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-search-apps-24\"\n            placeholder=\"Search for Apps...\"\n          />\n          <InputGroupAddon align=\"inline-end\">Ask AI</InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <Kbd>Tab</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-search-type-25\"\n            placeholder=\"Type to search...\"\n          />\n          <InputGroupAddon align=\"inline-start\">\n            <SparklesIcon />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <KbdGroup>\n              <Kbd>Ctrl</Kbd>\n              <Kbd>C</Kbd>\n            </KbdGroup>\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-username-26\">Username</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-username-26\" defaultValue=\"shadcn\" />\n          <InputGroupAddon align=\"inline-end\">\n            <div className=\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\">\n              <CheckIcon className=\"size-3 text-white\" />\n            </div>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription className=\"text-green-700\">\n          This username is available.\n        </FieldDescription>\n      </Field>\n      <InputGroup>\n        <InputGroupInput\n          id=\"input-search-docs-27\"\n          placeholder=\"Search documentation...\"\n        />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n      </InputGroup>\n      <InputGroup data-disabled=\"true\">\n        <InputGroupInput\n          id=\"input-search-disabled-28\"\n          placeholder=\"Search documentation...\"\n          disabled\n        />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">Disabled</InputGroupAddon>\n      </InputGroup>\n      <FieldGroup className=\"grid grid-cols-2 gap-4\">\n        <Field>\n          <FieldLabel htmlFor=\"input-group-11\">First Name</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-group-11\" placeholder=\"First Name\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InfoIcon />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-group-12\">Last Name</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-group-12\" placeholder=\"Last Name\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InfoIcon />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n      <Field data-disabled=\"true\">\n        <FieldLabel htmlFor=\"input-group-29\">\n          Loading (&quot;data-disabled=&quot;true&quot;)\n        </FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-group-29\" disabled defaultValue=\"shadcn\" />\n          <InputGroupAddon align=\"inline-end\">\n            <Spinner />\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-group-with-tooltip.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup, ButtonGroupText } from \"@/examples/radix/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { ChevronDownIcon, InfoIcon, StarIcon } from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nexport function InputGroupWithTooltip({\n  country,\n  setCountry,\n}: {\n  country: string\n  setCountry: (value: string) => void\n}) {\n  return (\n    <FieldGroup>\n      <Field>\n        <FieldLabel htmlFor=\"input-tooltip-20\">Tooltip</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-tooltip-20\" />\n          <InputGroupAddon align=\"inline-end\">\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <InputGroupButton className=\"rounded-full\" size=\"icon-xs\">\n                  <InfoIcon />\n                </InputGroupButton>\n              </TooltipTrigger>\n              <TooltipContent>This is content in a tooltip.</TooltipContent>\n            </Tooltip>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-dropdown-21\">Dropdown</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-dropdown-21\" />\n          <InputGroupAddon>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <InputGroupButton className=\"text-muted-foreground tabular-nums\">\n                  {country} <ChevronDownIcon />\n                </InputGroupButton>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                align=\"start\"\n                className=\"min-w-16\"\n                sideOffset={10}\n                alignOffset={-8}\n              >\n                <DropdownMenuItem onClick={() => setCountry(\"+1\")}>\n                  +1\n                </DropdownMenuItem>\n                <DropdownMenuItem onClick={() => setCountry(\"+44\")}>\n                  +44\n                </DropdownMenuItem>\n                <DropdownMenuItem onClick={() => setCountry(\"+46\")}>\n                  +46\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"input-secure-19\">Popover</FieldLabel>\n        <InputGroup>\n          <Popover>\n            <PopoverTrigger asChild>\n              <InputGroupAddon>\n                <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                  <InfoIcon />\n                </InputGroupButton>\n              </InputGroupAddon>\n            </PopoverTrigger>\n            <PopoverContent align=\"start\">\n              <PopoverHeader>\n                <PopoverTitle>Your connection is not secure.</PopoverTitle>\n                <PopoverDescription>\n                  You should not enter any sensitive information on this site.\n                </PopoverDescription>\n              </PopoverHeader>\n            </PopoverContent>\n          </Popover>\n          <InputGroupAddon className=\"pl-1 text-muted-foreground\">\n            https://\n          </InputGroupAddon>\n          <InputGroupInput id=\"input-secure-19\" />\n          <InputGroupAddon align=\"inline-end\">\n            <InputGroupButton\n              size=\"icon-xs\"\n              onClick={() => toast(\"Added to favorites\")}\n            >\n              <StarIcon />\n            </InputGroupButton>\n          </InputGroupAddon>\n        </InputGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n      <Field>\n        <FieldLabel htmlFor=\"url\">Button Group</FieldLabel>\n        <ButtonGroup>\n          <ButtonGroupText>https://</ButtonGroupText>\n          <InputGroup>\n            <InputGroupInput id=\"url\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InfoIcon />\n            </InputGroupAddon>\n          </InputGroup>\n          <ButtonGroupText>.com</ButtonGroupText>\n        </ButtonGroup>\n        <FieldDescription>\n          This is a description of the input group.\n        </FieldDescription>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-inline.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Field } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputInline() {\n  return (\n    <Field orientation=\"horizontal\">\n      <Input type=\"search\" placeholder=\"Search...\" />\n      <Button>Search</Button>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-input-group.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/examples/radix/ui/input-group\"\nimport { InfoIcon } from \"lucide-react\"\n\nexport function InputInputGroup() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-group-url\">Website URL</FieldLabel>\n      <InputGroup>\n        <InputGroupInput id=\"input-group-url\" placeholder=\"example.com\" />\n        <InputGroupAddon>\n          <InputGroupText>https://</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <InfoIcon />\n        </InputGroupAddon>\n      </InputGroup>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-invalid.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputInvalid() {\n  return (\n    <Field data-invalid>\n      <FieldLabel htmlFor=\"input-invalid\">Invalid Input</FieldLabel>\n      <Input id=\"input-invalid\" placeholder=\"Error\" aria-invalid />\n      <FieldDescription>\n        This field contains validation errors.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-alphanumeric.tsx",
    "content": "\"use client\"\n\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\nimport { REGEXP_ONLY_DIGITS_AND_CHARS } from \"input-otp\"\n\nexport function InputOTPAlphanumeric() {\n  return (\n    <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={3} />\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\n\nexport default function InputOTPControlled() {\n  const [value, setValue] = React.useState(\"\")\n\n  return (\n    <div className=\"space-y-2\">\n      <InputOTP\n        maxLength={6}\n        value={value}\n        onChange={(value) => setValue(value)}\n      >\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n      <div className=\"text-center text-sm\">\n        {value === \"\" ? (\n          <>Enter your one-time password.</>\n        ) : (\n          <>You entered: {value}</>\n        )}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-demo.tsx",
    "content": "import {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\n\nexport function InputOTPDemo() {\n  return (\n    <InputOTP maxLength={6} defaultValue=\"123456\">\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n        <InputOTPSlot index={3} />\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-disabled.tsx",
    "content": "import {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\n\nexport function InputOTPDisabled() {\n  return (\n    <InputOTP id=\"disabled\" maxLength={6} disabled value=\"123456\">\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={3} />\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-form.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui/card\"\nimport { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\nimport { RefreshCwIcon } from \"lucide-react\"\n\nexport function InputOTPForm() {\n  return (\n    <Card className=\"mx-auto max-w-md\">\n      <CardHeader>\n        <CardTitle>Verify your login</CardTitle>\n        <CardDescription>\n          Enter the verification code we sent to your email address:{\" \"}\n          <span className=\"font-medium\">m@example.com</span>.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Field>\n          <div className=\"flex items-center justify-between\">\n            <FieldLabel htmlFor=\"otp-verification\">\n              Verification code\n            </FieldLabel>\n            <Button variant=\"outline\" size=\"xs\">\n              <RefreshCwIcon />\n              Resend Code\n            </Button>\n          </div>\n          <InputOTP maxLength={6} id=\"otp-verification\" required>\n            <InputOTPGroup className=\"*:data-[slot=input-otp-slot]:h-12 *:data-[slot=input-otp-slot]:w-11 *:data-[slot=input-otp-slot]:text-xl\">\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n            </InputOTPGroup>\n            <InputOTPSeparator className=\"mx-2\" />\n            <InputOTPGroup className=\"*:data-[slot=input-otp-slot]:h-12 *:data-[slot=input-otp-slot]:w-11 *:data-[slot=input-otp-slot]:text-xl\">\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            <a href=\"#\">I no longer have access to this email address.</a>\n          </FieldDescription>\n        </Field>\n      </CardContent>\n      <CardFooter>\n        <Field>\n          <Button type=\"submit\" className=\"w-full\">\n            Verify\n          </Button>\n          <div className=\"text-sm text-muted-foreground\">\n            Having trouble signing in?{\" \"}\n            <a\n              href=\"#\"\n              className=\"underline underline-offset-4 transition-colors hover:text-primary\"\n            >\n              Contact support\n            </a>\n          </div>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-four-digits.tsx",
    "content": "\"use client\"\n\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\"\n\nexport function InputOTPFourDigits() {\n  return (\n    <InputOTP maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n        <InputOTPSlot index={3} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-invalid.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\n\nexport function InputOTPInvalid() {\n  const [value, setValue] = React.useState(\"000000\")\n\n  return (\n    <InputOTP maxLength={6} value={value} onChange={setValue}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} aria-invalid />\n        <InputOTPSlot index={1} aria-invalid />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={2} aria-invalid />\n        <InputOTPSlot index={3} aria-invalid />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={4} aria-invalid />\n        <InputOTPSlot index={5} aria-invalid />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-pattern.tsx",
    "content": "\"use client\"\n\nimport { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\"\n\nexport function InputOTPPattern() {\n  return (\n    <Field className=\"w-fit\">\n      <FieldLabel htmlFor=\"digits-only\">Digits Only</FieldLabel>\n      <InputOTP id=\"digits-only\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui-rtl/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/examples/radix/ui-rtl/input-otp\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      verificationCode: \"Verification code\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      verificationCode: \"رمز التحقق\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      verificationCode: \"קוד אימות\",\n    },\n  },\n}\n\nexport function InputOTPRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Field className=\"mx-auto max-w-xs\">\n      <FieldLabel htmlFor=\"input-otp-rtl\">{t.verificationCode}</FieldLabel>\n      <InputOTP\n        maxLength={6}\n        defaultValue=\"123456\"\n        dir={dir}\n        id=\"input-otp-rtl\"\n      >\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-otp-separator.tsx",
    "content": "import {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/examples/radix/ui/input-otp\"\n\nexport default function InputOTPWithSeparator() {\n  return (\n    <InputOTP maxLength={6}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={2} />\n        <InputOTPSlot index={3} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-required.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\n\nexport function InputRequired() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"input-required\">\n        Required Field <span className=\"text-destructive\">*</span>\n      </FieldLabel>\n      <Input\n        id=\"input-required\"\n        placeholder=\"This field is required\"\n        required\n      />\n      <FieldDescription>This field must be filled out.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/input-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/radix/ui-rtl/field\"\nimport { Input } from \"@/examples/radix/ui-rtl/input\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      apiKey: \"API Key\",\n      placeholder: \"sk-...\",\n      description: \"Your API key is encrypted and stored securely.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      apiKey: \"مفتاح API\",\n      placeholder: \"sk-...\",\n      description: \"مفتاح API الخاص بك مشفر ومخزن بأمان.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      apiKey: \"מפתח API\",\n      placeholder: \"sk-...\",\n      description: \"מפתח ה-API שלך מוצפן ונשמר בצורה מאובטחת.\",\n    },\n  },\n}\n\nexport function InputRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Field dir={dir}>\n      <FieldLabel htmlFor=\"input-rtl-api-key\">{t.apiKey}</FieldLabel>\n      <Input\n        id=\"input-rtl-api-key\"\n        type=\"password\"\n        placeholder={t.placeholder}\n        dir={dir}\n      />\n      <FieldDescription>{t.description}</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-avatar.tsx",
    "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { Plus } from \"lucide-react\"\n\nexport function ItemAvatar() {\n  return (\n    <div className=\"flex w-full max-w-lg flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemMedia>\n          <Avatar className=\"size-10\">\n            <AvatarImage src=\"https://github.com/evilrabbit.png\" />\n            <AvatarFallback>ER</AvatarFallback>\n          </Avatar>\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Evil Rabbit</ItemTitle>\n          <ItemDescription>Last seen 5 months ago</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button\n            size=\"icon-sm\"\n            variant=\"outline\"\n            className=\"rounded-full\"\n            aria-label=\"Invite\"\n          >\n            <Plus />\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia>\n          <div className=\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n            <Avatar className=\"hidden sm:flex\">\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar className=\"hidden sm:flex\">\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </div>\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>No Team Members</ItemTitle>\n          <ItemDescription>\n            Invite your team to collaborate on this project.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\" variant=\"outline\">\n            Invite\n          </Button>\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { BadgeCheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nexport function ItemDemo() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Basic Item</ItemTitle>\n          <ItemDescription>\n            A simple item with title and description.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\" asChild>\n        <a href=\"#\">\n          <ItemMedia>\n            <BadgeCheckIcon className=\"size-5\" />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Your profile has been verified.</ItemTitle>\n          </ItemContent>\n          <ItemActions>\n            <ChevronRightIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-dropdown.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nconst people = [\n  {\n    username: \"shadcn\",\n    avatar: \"https://github.com/shadcn.png\",\n    email: \"shadcn@vercel.com\",\n  },\n  {\n    username: \"maxleiter\",\n    avatar: \"https://github.com/maxleiter.png\",\n    email: \"maxleiter@vercel.com\",\n  },\n  {\n    username: \"evilrabbit\",\n    avatar: \"https://github.com/evilrabbit.png\",\n    email: \"evilrabbit@vercel.com\",\n  },\n]\n\nexport function ItemDropdown() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">\n          Select <ChevronDownIcon />\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-48\" align=\"end\">\n        <DropdownMenuGroup>\n          {people.map((person) => (\n            <DropdownMenuItem key={person.username}>\n              <Item size=\"xs\" className=\"w-full p-2\">\n                <ItemMedia>\n                  <Avatar className=\"size-[--spacing(6.5)]\">\n                    <AvatarImage src={person.avatar} className=\"grayscale\" />\n                    <AvatarFallback>{person.username.charAt(0)}</AvatarFallback>\n                  </Avatar>\n                </ItemMedia>\n                <ItemContent className=\"gap-0\">\n                  <ItemTitle>{person.username}</ItemTitle>\n                  <ItemDescription className=\"leading-none\">\n                    {person.email}\n                  </ItemDescription>\n                </ItemContent>\n              </Item>\n            </DropdownMenuItem>\n          ))}\n        </DropdownMenuGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-group.tsx",
    "content": "import * as React from \"react\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemMedia,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { PlusIcon } from \"lucide-react\"\n\nconst people = [\n  {\n    username: \"shadcn\",\n    avatar: \"https://github.com/shadcn.png\",\n    email: \"shadcn@vercel.com\",\n  },\n  {\n    username: \"maxleiter\",\n    avatar: \"https://github.com/maxleiter.png\",\n    email: \"maxleiter@vercel.com\",\n  },\n  {\n    username: \"evilrabbit\",\n    avatar: \"https://github.com/evilrabbit.png\",\n    email: \"evilrabbit@vercel.com\",\n  },\n]\n\nexport function ItemGroupExample() {\n  return (\n    <ItemGroup className=\"max-w-sm\">\n      {people.map((person, index) => (\n        <Item key={person.username} variant=\"outline\">\n          <ItemMedia>\n            <Avatar>\n              <AvatarImage src={person.avatar} className=\"grayscale\" />\n              <AvatarFallback>{person.username.charAt(0)}</AvatarFallback>\n            </Avatar>\n          </ItemMedia>\n          <ItemContent className=\"gap-1\">\n            <ItemTitle>{person.username}</ItemTitle>\n            <ItemDescription>{person.email}</ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\">\n              <PlusIcon />\n            </Button>\n          </ItemActions>\n        </Item>\n      ))}\n    </ItemGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-header.tsx",
    "content": "import Image from \"next/image\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemHeader,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\n\nconst models = [\n  {\n    name: \"v0-1.5-sm\",\n    description: \"Everyday tasks and UI generation.\",\n    image:\n      \"https://images.unsplash.com/photo-1650804068570-7fb2e3dbf888?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Valeria Reverdo on Unsplash\",\n  },\n  {\n    name: \"v0-1.5-lg\",\n    description: \"Advanced thinking or reasoning.\",\n    image:\n      \"https://images.unsplash.com/photo-1610280777472-54133d004c8c?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Michael Oeser on Unsplash\",\n  },\n  {\n    name: \"v0-2.0-mini\",\n    description: \"Open Source model for everyone.\",\n    image:\n      \"https://images.unsplash.com/photo-1602146057681-08560aee8cde?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Cherry Laithang on Unsplash\",\n  },\n]\n\nexport function ItemHeaderDemo() {\n  return (\n    <div className=\"flex w-full max-w-xl flex-col gap-6\">\n      <ItemGroup className=\"grid grid-cols-3 gap-4\">\n        {models.map((model) => (\n          <Item key={model.name} variant=\"outline\">\n            <ItemHeader>\n              <Image\n                src={model.image}\n                alt={model.name}\n                width={128}\n                height={128}\n                className=\"aspect-square w-full rounded-sm object-cover\"\n              />\n            </ItemHeader>\n            <ItemContent>\n              <ItemTitle>{model.name}</ItemTitle>\n              <ItemDescription>{model.description}</ItemDescription>\n            </ItemContent>\n          </Item>\n        ))}\n      </ItemGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-icon.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { ShieldAlertIcon } from \"lucide-react\"\n\nexport function ItemIcon() {\n  return (\n    <div className=\"flex w-full max-w-lg flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <ShieldAlertIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Security Alert</ItemTitle>\n          <ItemDescription>\n            New login detected from unknown device.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\" variant=\"outline\">\n            Review\n          </Button>\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-image.tsx",
    "content": "import Image from \"next/image\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\n\nconst music = [\n  {\n    title: \"Midnight City Lights\",\n    artist: \"Neon Dreams\",\n    album: \"Electric Nights\",\n    duration: \"3:45\",\n  },\n  {\n    title: \"Coffee Shop Conversations\",\n    artist: \"The Morning Brew\",\n    album: \"Urban Stories\",\n    duration: \"4:05\",\n  },\n  {\n    title: \"Digital Rain\",\n    artist: \"Cyber Symphony\",\n    album: \"Binary Beats\",\n    duration: \"3:30\",\n  },\n]\n\nexport function ItemImage() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <ItemGroup className=\"gap-4\">\n        {music.map((song) => (\n          <Item key={song.title} variant=\"outline\" asChild role=\"listitem\">\n            <a href=\"#\">\n              <ItemMedia variant=\"image\">\n                <Image\n                  src={`https://avatar.vercel.sh/${song.title}`}\n                  alt={song.title}\n                  width={32}\n                  height={32}\n                  className=\"object-cover grayscale\"\n                />\n              </ItemMedia>\n              <ItemContent>\n                <ItemTitle className=\"line-clamp-1\">\n                  {song.title} -{\" \"}\n                  <span className=\"text-muted-foreground\">{song.album}</span>\n                </ItemTitle>\n                <ItemDescription>{song.artist}</ItemDescription>\n              </ItemContent>\n              <ItemContent className=\"flex-none text-center\">\n                <ItemDescription>{song.duration}</ItemDescription>\n              </ItemContent>\n            </a>\n          </Item>\n        ))}\n      </ItemGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-link.tsx",
    "content": "import {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { ChevronRightIcon, ExternalLinkIcon } from \"lucide-react\"\n\nexport function ItemLink() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-4\">\n      <Item asChild>\n        <a href=\"#\">\n          <ItemContent>\n            <ItemTitle>Visit our documentation</ItemTitle>\n            <ItemDescription>\n              Learn how to get started with our components.\n            </ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <ChevronRightIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n      <Item variant=\"outline\" asChild>\n        <a href=\"#\" target=\"_blank\" rel=\"noopener noreferrer\">\n          <ItemContent>\n            <ItemTitle>External resource</ItemTitle>\n            <ItemDescription>\n              Opens in a new tab with security attributes.\n            </ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <ExternalLinkIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui-rtl/item\"\nimport { BadgeCheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      basicItem: \"Basic Item\",\n      basicItemDesc: \"A simple item with title and description.\",\n      action: \"Action\",\n      verifiedTitle: \"Your profile has been verified.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      basicItem: \"عنصر أساسي\",\n      basicItemDesc: \"عنصر بسيط يحتوي على عنوان ووصف.\",\n      action: \"إجراء\",\n      verifiedTitle: \"تم التحقق من ملفك الشخصي.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      basicItem: \"פריט בסיסי\",\n      basicItemDesc: \"פריט פשוט עם כותרת ותיאור.\",\n      action: \"פעולה\",\n      verifiedTitle: \"הפרופיל שלך אומת.\",\n    },\n  },\n}\n\nexport function ItemRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\" dir={dir}>\n      <Item variant=\"outline\" dir={dir}>\n        <ItemContent>\n          <ItemTitle>{t.basicItem}</ItemTitle>\n          <ItemDescription>{t.basicItemDesc}</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            {t.action}\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\" asChild dir={dir}>\n        <a href=\"#\">\n          <ItemMedia>\n            <BadgeCheckIcon className=\"size-5\" />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>{t.verifiedTitle}</ItemTitle>\n          </ItemContent>\n          <ItemActions>\n            <ChevronRightIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-size.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { InboxIcon } from \"lucide-react\"\n\nexport function ItemSizeDemo() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Default Size</ItemTitle>\n          <ItemDescription>\n            The standard size for most use cases.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Small Size</ItemTitle>\n          <ItemDescription>A compact size for dense layouts.</ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Extra Small Size</ItemTitle>\n          <ItemDescription>The most compact size available.</ItemDescription>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/item-variant.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { InboxIcon } from \"lucide-react\"\n\nexport function ItemVariant() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Default Variant</ItemTitle>\n          <ItemDescription>\n            Transparent background with no border.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Outline Variant</ItemTitle>\n          <ItemDescription>\n            Outlined style with a visible border.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Muted Variant</ItemTitle>\n          <ItemDescription>\n            Muted background for secondary content.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/kbd-button.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Kbd } from \"@/examples/radix/ui/kbd\"\n\nexport default function KbdButton() {\n  return (\n    <Button variant=\"outline\">\n      Accept{\" \"}\n      <Kbd data-icon=\"inline-end\" className=\"translate-x-0.5\">\n        ⏎\n      </Kbd>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/kbd-demo.tsx",
    "content": "import { Kbd, KbdGroup } from \"@/examples/radix/ui/kbd\"\n\nexport default function KbdDemo() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <KbdGroup>\n        <Kbd>⌘</Kbd>\n        <Kbd>⇧</Kbd>\n        <Kbd>⌥</Kbd>\n        <Kbd>⌃</Kbd>\n      </KbdGroup>\n      <KbdGroup>\n        <Kbd>Ctrl</Kbd>\n        <span>+</span>\n        <Kbd>B</Kbd>\n      </KbdGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/kbd-group.tsx",
    "content": "import { Kbd, KbdGroup } from \"@/examples/radix/ui/kbd\"\n\nexport default function KbdGroupExample() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <p className=\"text-sm text-muted-foreground\">\n        Use{\" \"}\n        <KbdGroup>\n          <Kbd>Ctrl + B</Kbd>\n          <Kbd>Ctrl + K</Kbd>\n        </KbdGroup>{\" \"}\n        to open the command palette\n      </p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/kbd-input-group.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Kbd } from \"@/examples/radix/ui/kbd\"\nimport { SearchIcon } from \"lucide-react\"\n\nexport default function KbdInputGroup() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Search...\" />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <Kbd>⌘</Kbd>\n          <Kbd>K</Kbd>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/kbd-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Kbd, KbdGroup } from \"@/examples/radix/ui-rtl/kbd\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nexport function KbdRtl() {\n  const { dir } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex flex-col items-center gap-4\" dir={dir}>\n      <KbdGroup>\n        <Kbd>⌘</Kbd>\n        <Kbd>⇧</Kbd>\n        <Kbd>⌥</Kbd>\n        <Kbd>⌃</Kbd>\n      </KbdGroup>\n      <KbdGroup>\n        <Kbd>Ctrl</Kbd>\n        <span>+</span>\n        <Kbd>B</Kbd>\n      </KbdGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/kbd-tooltip.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { ButtonGroup } from \"@/examples/radix/ui/button-group\"\nimport { Kbd, KbdGroup } from \"@/examples/radix/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\n\nexport default function KbdTooltip() {\n  return (\n    <div className=\"flex flex-wrap gap-4\">\n      <ButtonGroup>\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <Button variant=\"outline\">Save</Button>\n          </TooltipTrigger>\n          <TooltipContent>\n            Save Changes <Kbd>S</Kbd>\n          </TooltipContent>\n        </Tooltip>\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <Button variant=\"outline\">Print</Button>\n          </TooltipTrigger>\n          <TooltipContent>\n            Print Document{\" \"}\n            <KbdGroup>\n              <Kbd>Ctrl</Kbd>\n              <Kbd>P</Kbd>\n            </KbdGroup>\n          </TooltipContent>\n        </Tooltip>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/label-demo.tsx",
    "content": "import { Checkbox } from \"@/examples/radix/ui/checkbox\"\nimport { Label } from \"@/examples/radix/ui/label\"\n\nexport default function LabelDemo() {\n  return (\n    <div className=\"flex gap-2\">\n      <Checkbox id=\"terms\" />\n      <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/label-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Checkbox } from \"@/examples/radix/ui-rtl/checkbox\"\nimport { Label } from \"@/examples/radix/ui-rtl/label\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Accept terms and conditions\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"قبول الشروط والأحكام\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"קבל תנאים והגבלות\",\n    },\n  },\n}\n\nexport function LabelRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex gap-2\" dir={dir}>\n      <Checkbox id=\"terms-rtl\" dir={dir} />\n      <Label htmlFor=\"terms-rtl\" dir={dir}>\n        {t.label}\n      </Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/menubar-checkbox.tsx",
    "content": "import {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarTrigger,\n} from \"@/examples/radix/ui/menubar\"\n\nexport function MenubarCheckbox() {\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>View</MenubarTrigger>\n        <MenubarContent className=\"w-64\">\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\n          <MenubarCheckboxItem checked>\n            Always Show Full URLs\n          </MenubarCheckboxItem>\n          <MenubarSeparator />\n          <MenubarItem inset>\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem disabled inset>\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\n          </MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Format</MenubarTrigger>\n        <MenubarContent>\n          <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\n          <MenubarCheckboxItem>Code</MenubarCheckboxItem>\n          <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/menubar-demo.tsx",
    "content": "import {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/examples/radix/ui/menubar\"\n\nexport default function MenubarDemo() {\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>File</MenubarTrigger>\n        <MenubarContent>\n          <MenubarGroup>\n            <MenubarItem>\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled>New Incognito Window</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarSub>\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Email link</MenubarItem>\n                  <MenubarItem>Messages</MenubarItem>\n                  <MenubarItem>Notes</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem>\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Edit</MenubarTrigger>\n        <MenubarContent>\n          <MenubarGroup>\n            <MenubarItem>\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarSub>\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Search the web</MenubarItem>\n                </MenubarGroup>\n                <MenubarSeparator />\n                <MenubarGroup>\n                  <MenubarItem>Find...</MenubarItem>\n                  <MenubarItem>Find Next</MenubarItem>\n                  <MenubarItem>Find Previous</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem>Cut</MenubarItem>\n            <MenubarItem>Copy</MenubarItem>\n            <MenubarItem>Paste</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>View</MenubarTrigger>\n        <MenubarContent className=\"w-44\">\n          <MenubarGroup>\n            <MenubarCheckboxItem>Bookmarks Bar</MenubarCheckboxItem>\n            <MenubarCheckboxItem checked>Full URLs</MenubarCheckboxItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>\n              Reload <MenubarShortcut>⌘R</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled inset>\n              Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>Toggle Fullscreen</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>Hide Sidebar</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Profiles</MenubarTrigger>\n        <MenubarContent>\n          <MenubarRadioGroup value=\"benoit\">\n            <MenubarRadioItem value=\"andy\">Andy</MenubarRadioItem>\n            <MenubarRadioItem value=\"benoit\">Benoit</MenubarRadioItem>\n            <MenubarRadioItem value=\"Luis\">Luis</MenubarRadioItem>\n          </MenubarRadioGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>Edit...</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>Add Profile...</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/menubar-icons.tsx",
    "content": "import {\n  Menubar,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarTrigger,\n} from \"@/examples/radix/ui/menubar\"\nimport {\n  FileIcon,\n  FolderIcon,\n  HelpCircleIcon,\n  SaveIcon,\n  SettingsIcon,\n  TrashIcon,\n} from \"lucide-react\"\n\nexport function MenubarIcons() {\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>File</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem>\n            <FileIcon />\n            New File <MenubarShortcut>⌘N</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem>\n            <FolderIcon />\n            Open Folder\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem>\n            <SaveIcon />\n            Save <MenubarShortcut>⌘S</MenubarShortcut>\n          </MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>More</MenubarTrigger>\n        <MenubarContent>\n          <MenubarGroup>\n            <MenubarItem>\n              <SettingsIcon />\n              Settings\n            </MenubarItem>\n            <MenubarItem>\n              <HelpCircleIcon />\n              Help\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem variant=\"destructive\">\n              <TrashIcon />\n              Delete\n            </MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/menubar-radio.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Menubar,\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarTrigger,\n} from \"@/examples/radix/ui/menubar\"\n\nexport function MenubarRadio() {\n  const [user, setUser] = React.useState(\"benoit\")\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>Profiles</MenubarTrigger>\n        <MenubarContent>\n          <MenubarRadioGroup value={user} onValueChange={setUser}>\n            <MenubarRadioItem value=\"andy\">Andy</MenubarRadioItem>\n            <MenubarRadioItem value=\"benoit\">Benoit</MenubarRadioItem>\n            <MenubarRadioItem value=\"luis\">Luis</MenubarRadioItem>\n          </MenubarRadioGroup>\n          <MenubarSeparator />\n          <MenubarItem inset>Edit...</MenubarItem>\n          <MenubarItem inset>Add Profile...</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Theme</MenubarTrigger>\n        <MenubarContent>\n          <MenubarRadioGroup value={theme} onValueChange={setTheme}>\n            <MenubarRadioItem value=\"light\">Light</MenubarRadioItem>\n            <MenubarRadioItem value=\"dark\">Dark</MenubarRadioItem>\n            <MenubarRadioItem value=\"system\">System</MenubarRadioItem>\n          </MenubarRadioGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/menubar-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/examples/radix/ui-rtl/menubar\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      file: \"File\",\n      newTab: \"New Tab\",\n      newWindow: \"New Window\",\n      newIncognitoWindow: \"New Incognito Window\",\n      share: \"Share\",\n      emailLink: \"Email link\",\n      messages: \"Messages\",\n      notes: \"Notes\",\n      print: \"Print...\",\n      edit: \"Edit\",\n      undo: \"Undo\",\n      redo: \"Redo\",\n      find: \"Find\",\n      searchTheWeb: \"Search the web\",\n      findItem: \"Find...\",\n      findNext: \"Find Next\",\n      findPrevious: \"Find Previous\",\n      cut: \"Cut\",\n      copy: \"Copy\",\n      paste: \"Paste\",\n      view: \"View\",\n      bookmarksBar: \"Bookmarks Bar\",\n      fullUrls: \"Full URLs\",\n      reload: \"Reload\",\n      forceReload: \"Force Reload\",\n      toggleFullscreen: \"Toggle Fullscreen\",\n      hideSidebar: \"Hide Sidebar\",\n      profiles: \"Profiles\",\n      andy: \"Andy\",\n      benoit: \"Benoit\",\n      luis: \"Luis\",\n      editProfile: \"Edit...\",\n      addProfile: \"Add Profile...\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      file: \"ملف\",\n      newTab: \"علامة تبويب جديدة\",\n      newWindow: \"نافذة جديدة\",\n      newIncognitoWindow: \"نافذة التصفح المتخفي الجديدة\",\n      share: \"مشاركة\",\n      emailLink: \"رابط البريد الإلكتروني\",\n      messages: \"الرسائل\",\n      notes: \"الملاحظات\",\n      print: \"طباعة...\",\n      edit: \"تعديل\",\n      undo: \"تراجع\",\n      redo: \"إعادة\",\n      find: \"بحث\",\n      searchTheWeb: \"البحث على الويب\",\n      findItem: \"بحث...\",\n      findNext: \"البحث التالي\",\n      findPrevious: \"البحث السابق\",\n      cut: \"قص\",\n      copy: \"نسخ\",\n      paste: \"لصق\",\n      view: \"عرض\",\n      bookmarksBar: \"شريط الإشارات المرجعية\",\n      fullUrls: \"عناوين URL الكاملة\",\n      reload: \"إعادة تحميل\",\n      forceReload: \"إعادة تحميل قسري\",\n      toggleFullscreen: \"تبديل وضع ملء الشاشة\",\n      hideSidebar: \"إخفاء الشريط الجانبي\",\n      profiles: \"الملفات الشخصية\",\n      andy: \"Andy\",\n      benoit: \"Benoit\",\n      luis: \"Luis\",\n      editProfile: \"تعديل...\",\n      addProfile: \"إضافة ملف شخصي...\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      file: \"קובץ\",\n      newTab: \"כרטיסייה חדשה\",\n      newWindow: \"חלון חדש\",\n      newIncognitoWindow: \"חלון גלישה בסתר חדש\",\n      share: \"שתף\",\n      emailLink: \"קישור אימייל\",\n      messages: \"הודעות\",\n      notes: \"הערות\",\n      print: \"הדפס...\",\n      edit: \"ערוך\",\n      undo: \"בטל\",\n      redo: \"בצע שוב\",\n      find: \"מצא\",\n      searchTheWeb: \"חפש באינטרנט\",\n      findItem: \"מצא...\",\n      findNext: \"מצא הבא\",\n      findPrevious: \"מצא הקודם\",\n      cut: \"גזור\",\n      copy: \"העתק\",\n      paste: \"הדבק\",\n      view: \"תצוגה\",\n      bookmarksBar: \"סרגל סימניות\",\n      fullUrls: \"כתובות URL מלאות\",\n      reload: \"רענן\",\n      forceReload: \"רענן בכוח\",\n      toggleFullscreen: \"החלף מסך מלא\",\n      hideSidebar: \"הסתר סרגל צד\",\n      profiles: \"פרופילים\",\n      andy: \"Andy\",\n      benoit: \"Benoit\",\n      luis: \"Luis\",\n      editProfile: \"ערוך...\",\n      addProfile: \"הוסף פרופיל...\",\n    },\n  },\n}\n\nexport function MenubarRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [profile, setProfile] = React.useState(\"benoit\")\n\n  return (\n    <Menubar className=\"w-72\" dir={dir}>\n      <MenubarMenu>\n        <MenubarTrigger>{t.file}</MenubarTrigger>\n        <MenubarContent data-lang={dir === \"rtl\" ? language : undefined}>\n          <MenubarGroup>\n            <MenubarItem>\n              {t.newTab} <MenubarShortcut>⌘T</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              {t.newWindow} <MenubarShortcut>⌘N</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled>{t.newIncognitoWindow}</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarSub>\n              <MenubarSubTrigger>{t.share}</MenubarSubTrigger>\n              <MenubarSubContent\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <MenubarGroup>\n                  <MenubarItem>{t.emailLink}</MenubarItem>\n                  <MenubarItem>{t.messages}</MenubarItem>\n                  <MenubarItem>{t.notes}</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem>\n              {t.print} <MenubarShortcut>⌘P</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>{t.edit}</MenubarTrigger>\n        <MenubarContent data-lang={dir === \"rtl\" ? language : undefined}>\n          <MenubarGroup>\n            <MenubarItem>\n              {t.undo} <MenubarShortcut>⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              {t.redo} <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarSub>\n              <MenubarSubTrigger>{t.find}</MenubarSubTrigger>\n              <MenubarSubContent\n                data-lang={dir === \"rtl\" ? language : undefined}\n              >\n                <MenubarGroup>\n                  <MenubarItem>{t.searchTheWeb}</MenubarItem>\n                </MenubarGroup>\n                <MenubarSeparator />\n                <MenubarGroup>\n                  <MenubarItem>{t.findItem}</MenubarItem>\n                  <MenubarItem>{t.findNext}</MenubarItem>\n                  <MenubarItem>{t.findPrevious}</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem>{t.cut}</MenubarItem>\n            <MenubarItem>{t.copy}</MenubarItem>\n            <MenubarItem>{t.paste}</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>{t.view}</MenubarTrigger>\n        <MenubarContent\n          className=\"w-44\"\n          data-lang={dir === \"rtl\" ? language : undefined}\n        >\n          <MenubarGroup>\n            <MenubarCheckboxItem>{t.bookmarksBar}</MenubarCheckboxItem>\n            <MenubarCheckboxItem checked>{t.fullUrls}</MenubarCheckboxItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>\n              {t.reload} <MenubarShortcut>⌘R</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled inset>\n              {t.forceReload} <MenubarShortcut>⇧⌘R</MenubarShortcut>\n            </MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>{t.toggleFullscreen}</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>{t.hideSidebar}</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>{t.profiles}</MenubarTrigger>\n        <MenubarContent data-lang={dir === \"rtl\" ? language : undefined}>\n          <MenubarRadioGroup value={profile} onValueChange={setProfile}>\n            <MenubarRadioItem value=\"andy\">{t.andy}</MenubarRadioItem>\n            <MenubarRadioItem value=\"benoit\">{t.benoit}</MenubarRadioItem>\n            <MenubarRadioItem value=\"Luis\">{t.luis}</MenubarRadioItem>\n          </MenubarRadioGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>{t.editProfile}</MenubarItem>\n          </MenubarGroup>\n          <MenubarSeparator />\n          <MenubarGroup>\n            <MenubarItem inset>{t.addProfile}</MenubarItem>\n          </MenubarGroup>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/menubar-submenu.tsx",
    "content": "import {\n  Menubar,\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/examples/radix/ui/menubar\"\n\nexport function MenubarSubmenu() {\n  return (\n    <Menubar className=\"w-72\">\n      <MenubarMenu>\n        <MenubarTrigger>File</MenubarTrigger>\n        <MenubarContent>\n          <MenubarSub>\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem>Email link</MenubarItem>\n              <MenubarItem>Messages</MenubarItem>\n              <MenubarItem>Notes</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n          <MenubarSeparator />\n          <MenubarItem>\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\n          </MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Edit</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem>\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem>\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarSub>\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem>Find...</MenubarItem>\n              <MenubarItem>Find Next</MenubarItem>\n              <MenubarItem>Find Previous</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n          <MenubarSeparator />\n          <MenubarItem>Cut</MenubarItem>\n          <MenubarItem>Copy</MenubarItem>\n          <MenubarItem>Paste</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/muted-item-group.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\n\nexport function MutedItemGroup() {\n  return (\n    <ItemGroup>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Item 1</ItemTitle>\n          <ItemDescription>First item in muted group.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Item 2</ItemTitle>\n          <ItemDescription>Second item in muted group.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Item 3</ItemTitle>\n          <ItemDescription>Third item in muted group.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n    </ItemGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/native-select-demo.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/examples/radix/ui/native-select\"\n\nexport default function NativeSelectDemo() {\n  return (\n    <NativeSelect>\n      <NativeSelectOption value=\"\">Select status</NativeSelectOption>\n      <NativeSelectOption value=\"todo\">Todo</NativeSelectOption>\n      <NativeSelectOption value=\"in-progress\">In Progress</NativeSelectOption>\n      <NativeSelectOption value=\"done\">Done</NativeSelectOption>\n      <NativeSelectOption value=\"cancelled\">Cancelled</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/native-select-disabled.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/examples/radix/ui/native-select\"\n\nexport function NativeSelectDisabled() {\n  return (\n    <NativeSelect disabled>\n      <NativeSelectOption value=\"\">Disabled</NativeSelectOption>\n      <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n      <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n      <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/native-select-groups.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/examples/radix/ui/native-select\"\n\nexport default function NativeSelectGroups() {\n  return (\n    <NativeSelect>\n      <NativeSelectOption value=\"\">Select department</NativeSelectOption>\n      <NativeSelectOptGroup label=\"Engineering\">\n        <NativeSelectOption value=\"frontend\">Frontend</NativeSelectOption>\n        <NativeSelectOption value=\"backend\">Backend</NativeSelectOption>\n        <NativeSelectOption value=\"devops\">DevOps</NativeSelectOption>\n      </NativeSelectOptGroup>\n      <NativeSelectOptGroup label=\"Sales\">\n        <NativeSelectOption value=\"sales-rep\">Sales Rep</NativeSelectOption>\n        <NativeSelectOption value=\"account-manager\">\n          Account Manager\n        </NativeSelectOption>\n        <NativeSelectOption value=\"sales-director\">\n          Sales Director\n        </NativeSelectOption>\n      </NativeSelectOptGroup>\n      <NativeSelectOptGroup label=\"Operations\">\n        <NativeSelectOption value=\"support\">\n          Customer Support\n        </NativeSelectOption>\n        <NativeSelectOption value=\"product-manager\">\n          Product Manager\n        </NativeSelectOption>\n        <NativeSelectOption value=\"ops-manager\">\n          Operations Manager\n        </NativeSelectOption>\n      </NativeSelectOptGroup>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/native-select-invalid.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/examples/radix/ui/native-select\"\n\nexport function NativeSelectInvalid() {\n  return (\n    <NativeSelect aria-invalid=\"true\">\n      <NativeSelectOption value=\"\">Error state</NativeSelectOption>\n      <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n      <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n      <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/native-select-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/examples/radix/ui-rtl/native-select\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      placeholder: \"Select status\",\n      todo: \"Todo\",\n      inProgress: \"In Progress\",\n      done: \"Done\",\n      cancelled: \"Cancelled\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"اختر الحالة\",\n      todo: \"مهام\",\n      inProgress: \"قيد التنفيذ\",\n      done: \"منجز\",\n      cancelled: \"ملغي\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      placeholder: \"בחר סטטוס\",\n      todo: \"לעשות\",\n      inProgress: \"בתהליך\",\n      done: \"הושלם\",\n      cancelled: \"בוטל\",\n    },\n  },\n}\n\nexport function NativeSelectRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <NativeSelect dir={dir}>\n      <NativeSelectOption value=\"\">{t.placeholder}</NativeSelectOption>\n      <NativeSelectOption value=\"todo\">{t.todo}</NativeSelectOption>\n      <NativeSelectOption value=\"in-progress\">\n        {t.inProgress}\n      </NativeSelectOption>\n      <NativeSelectOption value=\"done\">{t.done}</NativeSelectOption>\n      <NativeSelectOption value=\"cancelled\">{t.cancelled}</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/navigation-menu-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"@/examples/radix/ui/navigation-menu\"\n\nconst components: { title: string; href: string; description: string }[] = [\n  {\n    title: \"Alert Dialog\",\n    href: \"/docs/primitives/alert-dialog\",\n    description:\n      \"A modal dialog that interrupts the user with important content and expects a response.\",\n  },\n  {\n    title: \"Hover Card\",\n    href: \"/docs/primitives/hover-card\",\n    description:\n      \"For sighted users to preview content available behind a link.\",\n  },\n  {\n    title: \"Progress\",\n    href: \"/docs/primitives/progress\",\n    description:\n      \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n  },\n  {\n    title: \"Scroll-area\",\n    href: \"/docs/primitives/scroll-area\",\n    description: \"Visually or semantically separates content.\",\n  },\n  {\n    title: \"Tabs\",\n    href: \"/docs/primitives/tabs\",\n    description:\n      \"A set of layered sections of content—known as tab panels—that are displayed one at a time.\",\n  },\n  {\n    title: \"Tooltip\",\n    href: \"/docs/primitives/tooltip\",\n    description:\n      \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n  },\n]\n\nexport default function NavigationMenuDemo() {\n  return (\n    <NavigationMenu>\n      <NavigationMenuList>\n        <NavigationMenuItem>\n          <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"w-96\">\n              <ListItem href=\"/docs\" title=\"Introduction\">\n                Re-usable components built with Tailwind CSS.\n              </ListItem>\n              <ListItem href=\"/docs/installation\" title=\"Installation\">\n                How to install dependencies and structure your app.\n              </ListItem>\n              <ListItem href=\"/docs/primitives/typography\" title=\"Typography\">\n                Styles for headings, paragraphs, lists...etc\n              </ListItem>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem className=\"hidden md:flex\">\n          <NavigationMenuTrigger>Components</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n              {components.map((component) => (\n                <ListItem\n                  key={component.title}\n                  title={component.title}\n                  href={component.href}\n                >\n                  {component.description}\n                </ListItem>\n              ))}\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>\n            <Link href=\"/docs\">Docs</Link>\n          </NavigationMenuLink>\n        </NavigationMenuItem>\n      </NavigationMenuList>\n    </NavigationMenu>\n  )\n}\n\nfunction ListItem({\n  title,\n  children,\n  href,\n  ...props\n}: React.ComponentPropsWithoutRef<\"li\"> & { href: string }) {\n  return (\n    <li {...props}>\n      <NavigationMenuLink asChild>\n        <Link href={href}>\n          <div className=\"flex flex-col gap-1 text-sm\">\n            <div className=\"leading-none font-medium\">{title}</div>\n            <div className=\"line-clamp-2 text-muted-foreground\">{children}</div>\n          </div>\n        </Link>\n      </NavigationMenuLink>\n    </li>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/navigation-menu-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"@/examples/radix/ui-rtl/navigation-menu\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      gettingStarted: \"Getting started\",\n      introduction: \"Introduction\",\n      introductionDesc: \"Re-usable components built with Tailwind CSS.\",\n      installation: \"Installation\",\n      installationDesc: \"How to install dependencies and structure your app.\",\n      typography: \"Typography\",\n      typographyDesc: \"Styles for headings, paragraphs, lists...etc\",\n      components: \"Components\",\n      alertDialog: \"Alert Dialog\",\n      alertDialogDesc:\n        \"A modal dialog that interrupts the user with important content and expects a response.\",\n      hoverCard: \"Hover Card\",\n      hoverCardDesc:\n        \"For sighted users to preview content available behind a link.\",\n      progress: \"Progress\",\n      progressDesc:\n        \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n      scrollArea: \"Scroll-area\",\n      scrollAreaDesc: \"Visually or semantically separates content.\",\n      tabs: \"Tabs\",\n      tabsDesc:\n        \"A set of layered sections of content—known as tab panels—that are displayed one at a time.\",\n      tooltip: \"Tooltip\",\n      tooltipDesc:\n        \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n      withIcon: \"With Icon\",\n      backlog: \"Backlog\",\n      toDo: \"To Do\",\n      done: \"Done\",\n      docs: \"Docs\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      gettingStarted: \"البدء\",\n      introduction: \"مقدمة\",\n      introductionDesc:\n        \"مكونات قابلة لإعادة الاستخدام مبنية باستخدام Tailwind CSS.\",\n      installation: \"التثبيت\",\n      installationDesc: \"كيفية تثبيت التبعيات وتنظيم تطبيقك.\",\n      typography: \"الطباعة\",\n      typographyDesc: \"أنماط للعناوين والفقرات والقوائم...إلخ\",\n      components: \"المكونات\",\n      alertDialog: \"حوار التنبيه\",\n      alertDialogDesc: \"حوار نافذة يقطع المستخدم بمحتوى مهم ويتوقع استجابة.\",\n      hoverCard: \"بطاقة التحويم\",\n      hoverCardDesc: \"للمستخدمين المبصرين لمعاينة المحتوى المتاح خلف الرابط.\",\n      progress: \"التقدم\",\n      progressDesc:\n        \"يعرض مؤشرًا يوضح تقدم إتمام المهمة، عادةً يتم عرضه كشريط تقدم.\",\n      scrollArea: \"منطقة التمرير\",\n      scrollAreaDesc: \"يفصل المحتوى بصريًا أو دلاليًا.\",\n      tabs: \"التبويبات\",\n      tabsDesc:\n        \"مجموعة من أقسام المحتوى المتعددة الطبقات—المعروفة بألواح التبويب—التي يتم عرضها واحدة في كل مرة.\",\n      tooltip: \"تلميح\",\n      tooltipDesc:\n        \"نافذة منبثقة تعرض معلومات متعلقة بعنصر عندما يتلقى العنصر التركيز على لوحة المفاتيح أو عند تحويم الماوس فوقه.\",\n      withIcon: \"مع أيقونة\",\n      backlog: \"قائمة الانتظار\",\n      toDo: \"المهام\",\n      done: \"منجز\",\n      docs: \"الوثائق\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      gettingStarted: \"התחלה\",\n      introduction: \"הקדמה\",\n      introductionDesc: \"רכיבים לשימוש חוזר שנבנו עם Tailwind CSS.\",\n      installation: \"התקנה\",\n      installationDesc: \"כיצד להתקין תלויות ולבנות את האפליקציה שלך.\",\n      typography: \"טיפוגרפיה\",\n      typographyDesc: \"סגנונות לכותרות, פסקאות, רשימות...וכו'\",\n      components: \"רכיבים\",\n      alertDialog: \"דיאלוג התראה\",\n      alertDialogDesc: \"דיאלוג מודאלי שמפריע למשתמש עם תוכן חשוב ומצפה לתגובה.\",\n      hoverCard: \"כרטיס ריחוף\",\n      hoverCardDesc:\n        \"למשתמשים רואים כדי להציג תצוגה מקדימה של תוכן זמין מאחורי קישור.\",\n      progress: \"התקדמות\",\n      progressDesc:\n        \"מציג אינדיקטור המציג את התקדמות ההשלמה של משימה, בדרך כלל מוצג כסרגל התקדמות.\",\n      scrollArea: \"אזור גלילה\",\n      scrollAreaDesc: \"מפריד תוכן חזותית או סמנטית.\",\n      tabs: \"כרטיסיות\",\n      tabsDesc:\n        \"קבוצה של חלקי תוכן מרובדים—המכונים לוחות כרטיסיות—המוצגים אחד בכל פעם.\",\n      tooltip: \"טולטיפ\",\n      tooltipDesc:\n        \"חלון קופץ המציג מידע הקשור לאלמנט כאשר האלמנט מקבל מיקוד מקלדת או כאשר העכבר מרחף מעליו.\",\n      withIcon: \"עם אייקון\",\n      backlog: \"רשימת המתנה\",\n      toDo: \"לעשות\",\n      done: \"הושלם\",\n      docs: \"תיעוד\",\n    },\n  },\n}\n\nconst components = [\n  {\n    titleKey: \"alertDialog\" as const,\n    descriptionKey: \"alertDialogDesc\" as const,\n    href: \"/docs/primitives/alert-dialog\",\n  },\n  {\n    titleKey: \"hoverCard\" as const,\n    descriptionKey: \"hoverCardDesc\" as const,\n    href: \"/docs/primitives/hover-card\",\n  },\n  {\n    titleKey: \"progress\" as const,\n    descriptionKey: \"progressDesc\" as const,\n    href: \"/docs/primitives/progress\",\n  },\n  {\n    titleKey: \"scrollArea\" as const,\n    descriptionKey: \"scrollAreaDesc\" as const,\n    href: \"/docs/primitives/scroll-area\",\n  },\n  {\n    titleKey: \"tabs\" as const,\n    descriptionKey: \"tabsDesc\" as const,\n    href: \"/docs/primitives/tabs\",\n  },\n  {\n    titleKey: \"tooltip\" as const,\n    descriptionKey: \"tooltipDesc\" as const,\n    href: \"/docs/primitives/tooltip\",\n  },\n] as const\n\nexport function NavigationMenuRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <NavigationMenu dir={dir}>\n      <NavigationMenuList>\n        <NavigationMenuItem>\n          <NavigationMenuTrigger>{t.gettingStarted}</NavigationMenuTrigger>\n          <NavigationMenuContent\n            dir={dir}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            <ul className=\"w-96\">\n              <ListItem href=\"/docs\" title={t.introduction}>\n                {t.introductionDesc}\n              </ListItem>\n              <ListItem href=\"/docs/installation\" title={t.installation}>\n                {t.installationDesc}\n              </ListItem>\n              <ListItem href=\"/docs/primitives/typography\" title={t.typography}>\n                {t.typographyDesc}\n              </ListItem>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem className=\"hidden md:flex\">\n          <NavigationMenuTrigger>{t.components}</NavigationMenuTrigger>\n          <NavigationMenuContent\n            dir={dir}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            <ul className=\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n              {components.map((component) => (\n                <ListItem\n                  key={component.titleKey}\n                  title={t[component.titleKey]}\n                  href={component.href}\n                >\n                  {t[component.descriptionKey]}\n                </ListItem>\n              ))}\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuLink\n            asChild\n            className={navigationMenuTriggerStyle()}\n            data-lang={dir === \"rtl\" ? language : undefined}\n          >\n            <Link href=\"/docs\">{t.docs}</Link>\n          </NavigationMenuLink>\n        </NavigationMenuItem>\n      </NavigationMenuList>\n    </NavigationMenu>\n  )\n}\n\nfunction ListItem({\n  title,\n  children,\n  href,\n  ...props\n}: React.ComponentPropsWithoutRef<\"li\"> & { href: string }) {\n  return (\n    <li {...props}>\n      <NavigationMenuLink asChild>\n        <Link href={href}>\n          <div className=\"flex flex-col gap-1 text-sm\">\n            <div className=\"leading-none font-medium\">{title}</div>\n            <div className=\"line-clamp-2 text-muted-foreground\">{children}</div>\n          </div>\n        </Link>\n      </NavigationMenuLink>\n    </li>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/outline-item-group.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { InboxIcon } from \"lucide-react\"\n\nexport function OutlineItemGroup() {\n  return (\n    <ItemGroup>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Item 1</ItemTitle>\n          <ItemDescription>First item with icon.</ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Item 2</ItemTitle>\n          <ItemDescription>Second item with icon.</ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <InboxIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Item 3</ItemTitle>\n          <ItemDescription>Third item with icon.</ItemDescription>\n        </ItemContent>\n      </Item>\n    </ItemGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/pagination-demo.tsx",
    "content": "import {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/examples/radix/ui/pagination\"\n\nexport default function PaginationDemo() {\n  return (\n    <Pagination>\n      <PaginationContent>\n        <PaginationItem>\n          <PaginationPrevious href=\"#\" />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">1</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\" isActive>\n            2\n          </PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">3</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationEllipsis />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationNext href=\"#\" />\n        </PaginationItem>\n      </PaginationContent>\n    </Pagination>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/pagination-icons-only.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationItem,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/examples/radix/ui/pagination\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\n\nexport function PaginationIconsOnly() {\n  return (\n    <div className=\"flex items-center justify-between gap-4\">\n      <Field orientation=\"horizontal\" className=\"w-fit\">\n        <FieldLabel htmlFor=\"select-rows-per-page\">Rows per page</FieldLabel>\n        <Select defaultValue=\"25\">\n          <SelectTrigger className=\"w-20\" id=\"select-rows-per-page\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent align=\"start\">\n            <SelectGroup>\n              <SelectItem value=\"10\">10</SelectItem>\n              <SelectItem value=\"25\">25</SelectItem>\n              <SelectItem value=\"50\">50</SelectItem>\n              <SelectItem value=\"100\">100</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </Field>\n      <Pagination className=\"mx-0 w-auto\">\n        <PaginationContent>\n          <PaginationItem>\n            <PaginationPrevious href=\"#\" />\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationNext href=\"#\" />\n          </PaginationItem>\n        </PaginationContent>\n      </Pagination>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/pagination-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/examples/radix/ui-rtl/pagination\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      previous: \"Previous\",\n      next: \"Next\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      previous: \"السابق\",\n      next: \"التالي\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      previous: \"הקודם\",\n      next: \"הבא\",\n    },\n  },\n}\n\nfunction toArabicNumerals(num: number): string {\n  const arabicNumerals = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"]\n  return num\n    .toString()\n    .split(\"\")\n    .map((digit) => arabicNumerals[parseInt(digit, 10)])\n    .join(\"\")\n}\n\nexport function PaginationRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  const formatNumber = (num: number): string => {\n    if (language === \"ar\") {\n      return toArabicNumerals(num)\n    }\n    return num.toString()\n  }\n\n  return (\n    <Pagination dir={dir}>\n      <PaginationContent>\n        <PaginationItem>\n          <PaginationPrevious href=\"#\" text={t.previous} />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">{formatNumber(1)}</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\" isActive>\n            {formatNumber(2)}\n          </PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">{formatNumber(3)}</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationEllipsis />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationNext href=\"#\" text={t.next} />\n        </PaginationItem>\n      </PaginationContent>\n    </Pagination>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/pagination-simple.tsx",
    "content": "import {\n  Pagination,\n  PaginationContent,\n  PaginationItem,\n  PaginationLink,\n} from \"@/examples/radix/ui/pagination\"\n\nexport function PaginationSimple() {\n  return (\n    <Pagination>\n      <PaginationContent>\n        <PaginationItem>\n          <PaginationLink href=\"#\">1</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\" isActive>\n            2\n          </PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">3</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">4</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">5</PaginationLink>\n        </PaginationItem>\n      </PaginationContent>\n    </Pagination>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/popover-alignments.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\n\nexport function PopoverAlignments() {\n  return (\n    <div className=\"flex gap-6\">\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" size=\"sm\">\n            Start\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent align=\"start\" className=\"w-40\">\n          Aligned to start\n        </PopoverContent>\n      </Popover>\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" size=\"sm\">\n            Center\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent align=\"center\" className=\"w-40\">\n          Aligned to center\n        </PopoverContent>\n      </Popover>\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" size=\"sm\">\n            End\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent align=\"end\" className=\"w-40\">\n          Aligned to end\n        </PopoverContent>\n      </Popover>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/popover-basic.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\n\nexport function PopoverBasic() {\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button variant=\"outline\">Open Popover</Button>\n      </PopoverTrigger>\n      <PopoverContent align=\"start\">\n        <PopoverHeader>\n          <PopoverTitle>Dimensions</PopoverTitle>\n          <PopoverDescription>\n            Set the dimensions for the layer.\n          </PopoverDescription>\n        </PopoverHeader>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/popover-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { Label } from \"@/examples/radix/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\n\nexport default function PopoverDemo() {\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button variant=\"outline\">Open popover</Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-80\">\n        <div className=\"grid gap-4\">\n          <div className=\"space-y-2\">\n            <h4 className=\"leading-none font-medium\">Dimensions</h4>\n            <p className=\"text-sm text-muted-foreground\">\n              Set the dimensions for the layer.\n            </p>\n          </div>\n          <div className=\"grid gap-2\">\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"width\">Width</Label>\n              <Input\n                id=\"width\"\n                defaultValue=\"100%\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"maxWidth\">Max. width</Label>\n              <Input\n                id=\"maxWidth\"\n                defaultValue=\"300px\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"height\">Height</Label>\n              <Input\n                id=\"height\"\n                defaultValue=\"25px\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"maxHeight\">Max. height</Label>\n              <Input\n                id=\"maxHeight\"\n                defaultValue=\"none\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n          </div>\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/popover-form.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/radix/ui/popover\"\n\nexport function PopoverForm() {\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button variant=\"outline\">Open Popover</Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-64\" align=\"start\">\n        <PopoverHeader>\n          <PopoverTitle>Dimensions</PopoverTitle>\n          <PopoverDescription>\n            Set the dimensions for the layer.\n          </PopoverDescription>\n        </PopoverHeader>\n        <FieldGroup className=\"gap-4\">\n          <Field orientation=\"horizontal\">\n            <FieldLabel htmlFor=\"width\" className=\"w-1/2\">\n              Width\n            </FieldLabel>\n            <Input id=\"width\" defaultValue=\"100%\" />\n          </Field>\n          <Field orientation=\"horizontal\">\n            <FieldLabel htmlFor=\"height\" className=\"w-1/2\">\n              Height\n            </FieldLabel>\n            <Input id=\"height\" defaultValue=\"25px\" />\n          </Field>\n        </FieldGroup>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/popover-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/examples/radix/ui-rtl/popover\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"Dimensions\",\n      description: \"Set the dimensions for the layer.\",\n      left: \"Left\",\n      top: \"Top\",\n      bottom: \"Bottom\",\n      right: \"Right\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"الأبعاد\",\n      description: \"تعيين الأبعاد للطبقة.\",\n      left: \"يسار\",\n      top: \"أعلى\",\n      bottom: \"أسفل\",\n      right: \"يمين\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"מימדים\",\n      description: \"הגדר את המימדים לשכבה.\",\n      left: \"שמאל\",\n      top: \"למעלה\",\n      bottom: \"למטה\",\n      right: \"ימין\",\n    },\n  },\n}\n\nconst physicalSides = [\"left\", \"top\", \"bottom\", \"right\"] as const\n\nexport function PopoverRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex flex-wrap justify-center gap-2\">\n      {physicalSides.map((side) => (\n        <Popover key={side}>\n          <PopoverTrigger asChild>\n            <Button variant=\"outline\">{t[side]}</Button>\n          </PopoverTrigger>\n          <PopoverContent side={side} dir={dir}>\n            <PopoverHeader>\n              <PopoverTitle>{t.title}</PopoverTitle>\n              <PopoverDescription>{t.description}</PopoverDescription>\n            </PopoverHeader>\n          </PopoverContent>\n        </Popover>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/progress-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Progress } from \"@/examples/radix/ui/progress\"\nimport { Slider } from \"@/examples/radix/ui/slider\"\n\nexport function ProgressControlled() {\n  const [value, setValue] = React.useState([50])\n\n  return (\n    <div className=\"flex w-full max-w-sm flex-col gap-4\">\n      <Progress value={value[0]} />\n      <Slider\n        value={value}\n        onValueChange={setValue}\n        min={0}\n        max={100}\n        step={1}\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/progress-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Progress } from \"@/examples/radix/ui/progress\"\n\nexport default function ProgressDemo() {\n  const [progress, setProgress] = React.useState(13)\n\n  React.useEffect(() => {\n    const timer = setTimeout(() => setProgress(66), 500)\n    return () => clearTimeout(timer)\n  }, [])\n\n  return <Progress value={progress} className=\"w-[60%]\" />\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/progress-label.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Progress } from \"@/examples/radix/ui/progress\"\n\nexport function ProgressWithLabel() {\n  return (\n    <Field className=\"w-full max-w-sm\">\n      <FieldLabel htmlFor=\"progress-upload\">\n        <span>Upload progress</span>\n        <span className=\"ml-auto\">66%</span>\n      </FieldLabel>\n      <Progress value={66} id=\"progress-upload\" />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/progress-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Field, FieldLabel } from \"@/examples/radix/ui-rtl/field\"\nimport { Progress } from \"@/examples/radix/ui-rtl/progress\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Upload progress\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"تقدم الرفع\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"התקדמות העלאה\",\n    },\n  },\n}\n\nfunction toArabicNumerals(num: number): string {\n  const arabicNumerals = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"]\n  return num\n    .toString()\n    .split(\"\")\n    .map((digit) => arabicNumerals[parseInt(digit, 10)])\n    .join(\"\")\n}\n\nexport function ProgressRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  const formatNumber = (num: number): string => {\n    if (language === \"ar\") {\n      return toArabicNumerals(num)\n    }\n    return num.toString()\n  }\n\n  return (\n    <Field className=\"w-full max-w-sm\" dir={dir}>\n      <FieldLabel htmlFor=\"progress-upload\">\n        <span>{t.label}</span>\n        <span className=\"ms-auto\">{formatNumber(66)}%</span>\n      </FieldLabel>\n      <Progress value={66} id=\"progress-upload\" className=\"rtl:rotate-180\" />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/radio-fields.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/examples/radix/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport function RadioFields() {\n  return (\n    <FieldGroup>\n      <FieldSet>\n        <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n        <RadioGroup defaultValue=\"free\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"free\" id=\"radio-free\" />\n            <FieldLabel htmlFor=\"radio-free\" className=\"font-normal\">\n              Free Plan\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"pro\" id=\"radio-pro\" />\n            <FieldLabel htmlFor=\"radio-pro\" className=\"font-normal\">\n              Pro Plan\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"enterprise\" id=\"radio-enterprise\" />\n            <FieldLabel htmlFor=\"radio-enterprise\" className=\"font-normal\">\n              Enterprise\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n      <FieldSet>\n        <FieldLegend variant=\"label\">Battery Level</FieldLegend>\n        <FieldDescription>\n          Choose your preferred battery level.\n        </FieldDescription>\n        <RadioGroup>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"high\" id=\"battery-high\" />\n            <FieldLabel htmlFor=\"battery-high\">High</FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"medium\" id=\"battery-medium\" />\n            <FieldLabel htmlFor=\"battery-medium\">Medium</FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"low\" id=\"battery-low\" />\n            <FieldLabel htmlFor=\"battery-low\">Low</FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n      <RadioGroup className=\"gap-6\">\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option1\" id=\"radio-content-1\" />\n          <FieldContent>\n            <FieldLabel htmlFor=\"radio-content-1\">Enable Touch ID</FieldLabel>\n            <FieldDescription>\n              Enable Touch ID to quickly unlock your device.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option2\" id=\"radio-content-2\" />\n          <FieldContent>\n            <FieldLabel htmlFor=\"radio-content-2\">\n              Enable Touch ID and Face ID to make it even faster to unlock your\n              device. This is a long label to test the layout.\n            </FieldLabel>\n            <FieldDescription>\n              Enable Touch ID to quickly unlock your device.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n      </RadioGroup>\n      <RadioGroup className=\"gap-3\">\n        <FieldLabel htmlFor=\"radio-title-1\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"title1\" id=\"radio-title-1\" />\n            <FieldContent>\n              <FieldTitle>Enable Touch ID</FieldTitle>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"radio-title-2\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"title2\" id=\"radio-title-2\" />\n            <FieldContent>\n              <FieldTitle>\n                Enable Touch ID and Face ID to make it even faster to unlock\n                your device. This is a long label to test the layout.\n              </FieldTitle>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n      </RadioGroup>\n      <FieldSet>\n        <FieldLegend variant=\"label\">Invalid Radio Group</FieldLegend>\n        <RadioGroup>\n          <Field data-invalid orientation=\"horizontal\">\n            <RadioGroupItem\n              value=\"invalid1\"\n              id=\"radio-invalid-1\"\n              aria-invalid\n            />\n            <FieldLabel htmlFor=\"radio-invalid-1\">Invalid Option 1</FieldLabel>\n          </Field>\n          <Field data-invalid orientation=\"horizontal\">\n            <RadioGroupItem\n              value=\"invalid2\"\n              id=\"radio-invalid-2\"\n              aria-invalid\n            />\n            <FieldLabel htmlFor=\"radio-invalid-2\">Invalid Option 2</FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n      <FieldSet>\n        <FieldLegend variant=\"label\">Disabled Radio Group</FieldLegend>\n        <RadioGroup disabled>\n          <Field data-disabled orientation=\"horizontal\">\n            <RadioGroupItem value=\"disabled1\" id=\"radio-disabled-1\" disabled />\n            <FieldLabel htmlFor=\"radio-disabled-1\">\n              Disabled Option 1\n            </FieldLabel>\n          </Field>\n          <Field data-disabled orientation=\"horizontal\">\n            <RadioGroupItem value=\"disabled2\" id=\"radio-disabled-2\" disabled />\n            <FieldLabel htmlFor=\"radio-disabled-2\">\n              Disabled Option 2\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/radio-group-choice-card.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n  FieldTitle,\n} from \"@/examples/radix/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport function RadioGroupChoiceCard() {\n  return (\n    <RadioGroup defaultValue=\"plus\" className=\"max-w-sm\">\n      <FieldLabel htmlFor=\"plus-plan\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Plus</FieldTitle>\n            <FieldDescription>\n              For individuals and small teams.\n            </FieldDescription>\n          </FieldContent>\n          <RadioGroupItem value=\"plus\" id=\"plus-plan\" />\n        </Field>\n      </FieldLabel>\n      <FieldLabel htmlFor=\"pro-plan\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Pro</FieldTitle>\n            <FieldDescription>For growing businesses.</FieldDescription>\n          </FieldContent>\n          <RadioGroupItem value=\"pro\" id=\"pro-plan\" />\n        </Field>\n      </FieldLabel>\n      <FieldLabel htmlFor=\"enterprise-plan\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Enterprise</FieldTitle>\n            <FieldDescription>\n              For large teams and enterprises.\n            </FieldDescription>\n          </FieldContent>\n          <RadioGroupItem value=\"enterprise\" id=\"enterprise-plan\" />\n        </Field>\n      </FieldLabel>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/radio-group-demo.tsx",
    "content": "import { Label } from \"@/examples/radix/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport function RadioGroupDemo() {\n  return (\n    <RadioGroup defaultValue=\"comfortable\" className=\"w-fit\">\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"default\" id=\"r1\" />\n        <Label htmlFor=\"r1\">Default</Label>\n      </div>\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"comfortable\" id=\"r2\" />\n        <Label htmlFor=\"r2\">Comfortable</Label>\n      </div>\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"compact\" id=\"r3\" />\n        <Label htmlFor=\"r3\">Compact</Label>\n      </div>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/radio-group-description.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport function RadioGroupDescription() {\n  return (\n    <RadioGroup defaultValue=\"comfortable\" className=\"w-fit\">\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"default\" id=\"desc-r1\" />\n        <FieldContent>\n          <FieldLabel htmlFor=\"desc-r1\">Default</FieldLabel>\n          <FieldDescription>\n            Standard spacing for most use cases.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"comfortable\" id=\"desc-r2\" />\n        <FieldContent>\n          <FieldLabel htmlFor=\"desc-r2\">Comfortable</FieldLabel>\n          <FieldDescription>More space between elements.</FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"compact\" id=\"desc-r3\" />\n        <FieldContent>\n          <FieldLabel htmlFor=\"desc-r3\">Compact</FieldLabel>\n          <FieldDescription>\n            Minimal spacing for dense layouts.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/radio-group-disabled.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport function RadioGroupDisabled() {\n  return (\n    <RadioGroup defaultValue=\"option2\" className=\"w-fit\">\n      <Field orientation=\"horizontal\" data-disabled>\n        <RadioGroupItem value=\"option1\" id=\"disabled-1\" disabled />\n        <FieldLabel htmlFor=\"disabled-1\" className=\"font-normal\">\n          Disabled\n        </FieldLabel>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"option2\" id=\"disabled-2\" />\n        <FieldLabel htmlFor=\"disabled-2\" className=\"font-normal\">\n          Option 2\n        </FieldLabel>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"option3\" id=\"disabled-3\" />\n        <FieldLabel htmlFor=\"disabled-3\" className=\"font-normal\">\n          Option 3\n        </FieldLabel>\n      </Field>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/radio-group-fieldset.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport function RadioGroupFieldset() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n      <FieldDescription>\n        Yearly and lifetime plans offer significant savings.\n      </FieldDescription>\n      <RadioGroup defaultValue=\"monthly\">\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"monthly\" id=\"plan-monthly\" />\n          <FieldLabel htmlFor=\"plan-monthly\" className=\"font-normal\">\n            Monthly ($9.99/month)\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"yearly\" id=\"plan-yearly\" />\n          <FieldLabel htmlFor=\"plan-yearly\" className=\"font-normal\">\n            Yearly ($99.99/year)\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"lifetime\" id=\"plan-lifetime\" />\n          <FieldLabel htmlFor=\"plan-lifetime\" className=\"font-normal\">\n            Lifetime ($299.99)\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/radio-group-invalid.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/examples/radix/ui/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui/radio-group\"\n\nexport function RadioGroupInvalid() {\n  return (\n    <FieldSet className=\"w-full max-w-xs\">\n      <FieldLegend variant=\"label\">Notification Preferences</FieldLegend>\n      <FieldDescription>\n        Choose how you want to receive notifications.\n      </FieldDescription>\n      <RadioGroup defaultValue=\"email\">\n        <Field orientation=\"horizontal\" data-invalid>\n          <RadioGroupItem value=\"email\" id=\"invalid-email\" aria-invalid />\n          <FieldLabel htmlFor=\"invalid-email\" className=\"font-normal\">\n            Email only\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\" data-invalid>\n          <RadioGroupItem value=\"sms\" id=\"invalid-sms\" aria-invalid />\n          <FieldLabel htmlFor=\"invalid-sms\" className=\"font-normal\">\n            SMS only\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\" data-invalid>\n          <RadioGroupItem value=\"both\" id=\"invalid-both\" aria-invalid />\n          <FieldLabel htmlFor=\"invalid-both\" className=\"font-normal\">\n            Both Email & SMS\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </FieldSet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/radio-group-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/radix/ui-rtl/field\"\nimport { RadioGroup, RadioGroupItem } from \"@/examples/radix/ui-rtl/radio-group\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      default: \"Default\",\n      defaultDescription: \"Standard spacing for most use cases.\",\n      comfortable: \"Comfortable\",\n      comfortableDescription: \"More space between elements.\",\n      compact: \"Compact\",\n      compactDescription: \"Minimal spacing for dense layouts.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      default: \"افتراضي\",\n      defaultDescription: \"تباعد قياسي لمعظم حالات الاستخدام.\",\n      comfortable: \"مريح\",\n      comfortableDescription: \"مساحة أكبر بين العناصر.\",\n      compact: \"مضغوط\",\n      compactDescription: \"تباعد أدنى للتخطيطات الكثيفة.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      default: \"ברירת מחדל\",\n      defaultDescription: \"ריווח סטנדרטי לרוב מקרי השימוש.\",\n      comfortable: \"נוח\",\n      comfortableDescription: \"יותר מקום בין האלמנטים.\",\n      compact: \"קומפקטי\",\n      compactDescription: \"ריווח מינימלי לפריסות צפופות.\",\n    },\n  },\n}\n\nexport function RadioGroupRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <RadioGroup defaultValue=\"comfortable\" className=\"w-fit\" dir={dir}>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"default\" id=\"r1-rtl\" dir={dir} />\n        <FieldContent>\n          <FieldLabel htmlFor=\"r1-rtl\" dir={dir}>\n            {t.default}\n          </FieldLabel>\n          <FieldDescription dir={dir}>{t.defaultDescription}</FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"comfortable\" id=\"r2-rtl\" dir={dir} />\n        <FieldContent>\n          <FieldLabel htmlFor=\"r2-rtl\" dir={dir}>\n            {t.comfortable}\n          </FieldLabel>\n          <FieldDescription dir={dir}>\n            {t.comfortableDescription}\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <RadioGroupItem value=\"compact\" id=\"r3-rtl\" dir={dir} />\n        <FieldContent>\n          <FieldLabel htmlFor=\"r3-rtl\" dir={dir}>\n            {t.compact}\n          </FieldLabel>\n          <FieldDescription dir={dir}>{t.compactDescription}</FieldDescription>\n        </FieldContent>\n      </Field>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/resizable-demo.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/examples/radix/ui/resizable\"\n\nexport default function ResizableDemo() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"max-w-sm rounded-lg border\"\n    >\n      <ResizablePanel defaultSize=\"50%\">\n        <div className=\"flex h-[200px] items-center justify-center p-6\">\n          <span className=\"font-semibold\">One</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle withHandle />\n      <ResizablePanel defaultSize=\"50%\">\n        <ResizablePanelGroup orientation=\"vertical\">\n          <ResizablePanel defaultSize=\"25%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">Two</span>\n            </div>\n          </ResizablePanel>\n          <ResizableHandle withHandle />\n          <ResizablePanel defaultSize=\"75%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">Three</span>\n            </div>\n          </ResizablePanel>\n        </ResizablePanelGroup>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/resizable-handle.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/examples/radix/ui/resizable\"\n\nexport default function ResizableHandleDemo() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\"\n    >\n      <ResizablePanel defaultSize=\"25%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Sidebar</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle withHandle />\n      <ResizablePanel defaultSize=\"75%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Content</span>\n        </div>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/resizable-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/examples/radix/ui-rtl/resizable\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      one: \"One\",\n      two: \"Two\",\n      three: \"Three\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      one: \"واحد\",\n      two: \"اثنان\",\n      three: \"ثلاثة\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      one: \"אחד\",\n      two: \"שניים\",\n      three: \"שלושה\",\n    },\n  },\n}\n\nexport function ResizableRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"max-w-sm rounded-lg border\"\n      dir={dir}\n    >\n      <ResizablePanel defaultSize=\"50%\">\n        <div className=\"flex h-[200px] items-center justify-center p-6\">\n          <span className=\"font-semibold\">{t.one}</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle withHandle />\n      <ResizablePanel defaultSize=\"50%\">\n        <ResizablePanelGroup orientation=\"vertical\" dir={dir}>\n          <ResizablePanel defaultSize=\"25%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">{t.two}</span>\n            </div>\n          </ResizablePanel>\n          <ResizableHandle withHandle />\n          <ResizablePanel defaultSize=\"75%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">{t.three}</span>\n            </div>\n          </ResizablePanel>\n        </ResizablePanelGroup>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/resizable-vertical.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/examples/radix/ui/resizable\"\n\nexport function ResizableVertical() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"vertical\"\n      className=\"min-h-[200px] max-w-sm rounded-lg border\"\n    >\n      <ResizablePanel defaultSize=\"25%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Header</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle />\n      <ResizablePanel defaultSize=\"75%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Content</span>\n        </div>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/scroll-area-demo.tsx",
    "content": "import * as React from \"react\"\nimport { ScrollArea } from \"@/examples/radix/ui/scroll-area\"\nimport { Separator } from \"@/examples/radix/ui/separator\"\n\nconst tags = Array.from({ length: 50 }).map(\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\n)\n\nexport function ScrollAreaDemo() {\n  return (\n    <ScrollArea className=\"h-72 w-48 rounded-md border\">\n      <div className=\"p-4\">\n        <h4 className=\"mb-4 text-sm leading-none font-medium\">Tags</h4>\n        {tags.map((tag) => (\n          <React.Fragment key={tag}>\n            <div className=\"text-sm\">{tag}</div>\n            <Separator className=\"my-2\" />\n          </React.Fragment>\n        ))}\n      </div>\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/scroll-area-horizontal-demo.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\nimport { ScrollArea, ScrollBar } from \"@/examples/radix/ui/scroll-area\"\n\nexport interface Artwork {\n  artist: string\n  art: string\n}\n\nexport const works: Artwork[] = [\n  {\n    artist: \"Ornella Binni\",\n    art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Tom Byrom\",\n    art: \"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Vladimir Malyavko\",\n    art: \"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\",\n  },\n]\n\nexport function ScrollAreaHorizontalDemo() {\n  return (\n    <ScrollArea className=\"w-96 rounded-md border whitespace-nowrap\">\n      <div className=\"flex w-max space-x-4 p-4\">\n        {works.map((artwork) => (\n          <figure key={artwork.artist} className=\"shrink-0\">\n            <div className=\"overflow-hidden rounded-md\">\n              <Image\n                src={artwork.art}\n                alt={`Photo by ${artwork.artist}`}\n                className=\"aspect-[3/4] h-fit w-fit object-cover\"\n                width={300}\n                height={400}\n              />\n            </div>\n            <figcaption className=\"pt-2 text-xs text-muted-foreground\">\n              Photo by{\" \"}\n              <span className=\"font-semibold text-foreground\">\n                {artwork.artist}\n              </span>\n            </figcaption>\n          </figure>\n        ))}\n      </div>\n      <ScrollBar orientation=\"horizontal\" />\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/scroll-area-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea } from \"@/examples/radix/ui-rtl/scroll-area\"\nimport { Separator } from \"@/examples/radix/ui-rtl/separator\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst tags = Array.from({ length: 50 }).map(\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\n)\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      tags: \"Tags\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      tags: \"العلامات\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      tags: \"תגיות\",\n    },\n  },\n}\n\nexport function ScrollAreaRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <ScrollArea className=\"h-72 w-48 rounded-md border\" dir={dir}>\n      <div className=\"p-4\">\n        <h4 className=\"mb-4 text-sm leading-none font-medium\">{t.tags}</h4>\n        {tags.map((tag) => (\n          <React.Fragment key={tag}>\n            <div className=\"text-sm\">{tag}</div>\n            <Separator className=\"my-2\" />\n          </React.Fragment>\n        ))}\n      </div>\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/select-align-item.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\n\nexport function SelectAlignItem() {\n  const [alignItemWithTrigger, setAlignItemWithTrigger] = React.useState(true)\n\n  return (\n    <FieldGroup className=\"w-full max-w-xs\">\n      <Field orientation=\"horizontal\">\n        <FieldContent>\n          <FieldLabel htmlFor=\"align-item\">Align Item</FieldLabel>\n          <FieldDescription>\n            Toggle to align the item with the trigger.\n          </FieldDescription>\n        </FieldContent>\n        <Switch\n          id=\"align-item\"\n          checked={alignItemWithTrigger}\n          onCheckedChange={setAlignItemWithTrigger}\n        />\n      </Field>\n      <Field>\n        <Select defaultValue=\"banana\">\n          <SelectTrigger>\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent\n            position={alignItemWithTrigger ? \"item-aligned\" : \"popper\"}\n          >\n            <SelectGroup>\n              <SelectItem value=\"apple\">Apple</SelectItem>\n              <SelectItem value=\"banana\">Banana</SelectItem>\n              <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n              <SelectItem value=\"grapes\">Grapes</SelectItem>\n              <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/select-demo.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\n\nexport function SelectDemo() {\n  return (\n    <Select>\n      <SelectTrigger className=\"w-full max-w-48\">\n        <SelectValue placeholder=\"Select a fruit\" />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectLabel>Fruits</SelectLabel>\n          <SelectItem value=\"apple\">Apple</SelectItem>\n          <SelectItem value=\"banana\">Banana</SelectItem>\n          <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n          <SelectItem value=\"grapes\">Grapes</SelectItem>\n          <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/select-disabled.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\n\nexport function SelectDisabled() {\n  return (\n    <Select disabled>\n      <SelectTrigger className=\"w-full max-w-48\">\n        <SelectValue placeholder=\"Select a fruit\" />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectItem value=\"apple\">Apple</SelectItem>\n          <SelectItem value=\"banana\">Banana</SelectItem>\n          <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n          <SelectItem value=\"grapes\" disabled>\n            Grapes\n          </SelectItem>\n          <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/select-groups.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\n\nexport function SelectGroups() {\n  return (\n    <Select>\n      <SelectTrigger className=\"w-full max-w-48\">\n        <SelectValue placeholder=\"Select a fruit\" />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectLabel>Fruits</SelectLabel>\n          <SelectItem value=\"apple\">Apple</SelectItem>\n          <SelectItem value=\"banana\">Banana</SelectItem>\n          <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n        </SelectGroup>\n        <SelectSeparator />\n        <SelectGroup>\n          <SelectLabel>Vegetables</SelectLabel>\n          <SelectItem value=\"carrot\">Carrot</SelectItem>\n          <SelectItem value=\"broccoli\">Broccoli</SelectItem>\n          <SelectItem value=\"spinach\">Spinach</SelectItem>\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/select-invalid.tsx",
    "content": "import { Field, FieldError, FieldLabel } from \"@/examples/radix/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\n\nexport function SelectInvalid() {\n  return (\n    <Field data-invalid className=\"w-full max-w-48\">\n      <FieldLabel>Fruit</FieldLabel>\n      <Select>\n        <SelectTrigger aria-invalid>\n          <SelectValue placeholder=\"Select a fruit\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            <SelectItem value=\"apple\">Apple</SelectItem>\n            <SelectItem value=\"banana\">Banana</SelectItem>\n            <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n      <FieldError>Please select a fruit.</FieldError>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/select-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui-rtl/select\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      selectFruit: \"Select a fruit\",\n      fruits: \"Fruits\",\n      apple: \"Apple\",\n      banana: \"Banana\",\n      blueberry: \"Blueberry\",\n      grapes: \"Grapes\",\n      pineapple: \"Pineapple\",\n      vegetables: \"Vegetables\",\n      carrot: \"Carrot\",\n      broccoli: \"Broccoli\",\n      spinach: \"Spinach\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      selectFruit: \"اختر فاكهة\",\n      fruits: \"الفواكه\",\n      apple: \"تفاح\",\n      banana: \"موز\",\n      blueberry: \"توت أزرق\",\n      grapes: \"عنب\",\n      pineapple: \"أناناس\",\n      vegetables: \"الخضروات\",\n      carrot: \"جزر\",\n      broccoli: \"بروكلي\",\n      spinach: \"سبانخ\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      selectFruit: \"בחר פרי\",\n      fruits: \"פירות\",\n      apple: \"תפוח\",\n      banana: \"בננה\",\n      blueberry: \"אוכמניה\",\n      grapes: \"ענבים\",\n      pineapple: \"אננס\",\n      vegetables: \"ירקות\",\n      carrot: \"גזר\",\n      broccoli: \"ברוקולי\",\n      spinach: \"תרד\",\n    },\n  },\n}\n\nexport function SelectRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n  const [selectedFruit, setSelectedFruit] = React.useState<string>(\"\")\n\n  const fruits = [\n    { label: t.apple, value: \"apple\" },\n    { label: t.banana, value: \"banana\" },\n    { label: t.blueberry, value: \"blueberry\" },\n    { label: t.grapes, value: \"grapes\" },\n    { label: t.pineapple, value: \"pineapple\" },\n  ]\n\n  const vegetables = [\n    { label: t.carrot, value: \"carrot\" },\n    { label: t.broccoli, value: \"broccoli\" },\n    { label: t.spinach, value: \"spinach\" },\n  ]\n\n  return (\n    <Select value={selectedFruit} onValueChange={setSelectedFruit}>\n      <SelectTrigger className=\"w-32\" dir={dir}>\n        <SelectValue placeholder={t.selectFruit} />\n      </SelectTrigger>\n      <SelectContent dir={dir} data-lang={dir === \"rtl\" ? language : undefined}>\n        <SelectGroup>\n          <SelectLabel>{t.fruits}</SelectLabel>\n          {fruits.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n        <SelectSeparator />\n        <SelectGroup>\n          <SelectLabel>{t.vegetables}</SelectLabel>\n          {vegetables.map((item) => (\n            <SelectItem key={item.value} value={item.value}>\n              {item.label}\n            </SelectItem>\n          ))}\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/select-scrollable.tsx",
    "content": "import {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/examples/radix/ui/select\"\n\nexport function SelectScrollable() {\n  return (\n    <Select>\n      <SelectTrigger className=\"w-full max-w-64\">\n        <SelectValue placeholder=\"Select a timezone\" />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectLabel>North America</SelectLabel>\n          <SelectItem value=\"est\">Eastern Standard Time</SelectItem>\n          <SelectItem value=\"cst\">Central Standard Time</SelectItem>\n          <SelectItem value=\"mst\">Mountain Standard Time</SelectItem>\n          <SelectItem value=\"pst\">Pacific Standard Time</SelectItem>\n          <SelectItem value=\"akst\">Alaska Standard Time</SelectItem>\n          <SelectItem value=\"hst\">Hawaii Standard Time</SelectItem>\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Europe & Africa</SelectLabel>\n          <SelectItem value=\"gmt\">Greenwich Mean Time</SelectItem>\n          <SelectItem value=\"cet\">Central European Time</SelectItem>\n          <SelectItem value=\"eet\">Eastern European Time</SelectItem>\n          <SelectItem value=\"west\">Western European Summer Time</SelectItem>\n          <SelectItem value=\"cat\">Central Africa Time</SelectItem>\n          <SelectItem value=\"eat\">East Africa Time</SelectItem>\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Asia</SelectLabel>\n          <SelectItem value=\"msk\">Moscow Time</SelectItem>\n          <SelectItem value=\"ist\">India Standard Time</SelectItem>\n          <SelectItem value=\"cst_china\">China Standard Time</SelectItem>\n          <SelectItem value=\"jst\">Japan Standard Time</SelectItem>\n          <SelectItem value=\"kst\">Korea Standard Time</SelectItem>\n          <SelectItem value=\"ist_indonesia\">\n            Indonesia Central Standard Time\n          </SelectItem>\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Australia & Pacific</SelectLabel>\n          <SelectItem value=\"awst\">Australian Western Standard Time</SelectItem>\n          <SelectItem value=\"acst\">Australian Central Standard Time</SelectItem>\n          <SelectItem value=\"aest\">Australian Eastern Standard Time</SelectItem>\n          <SelectItem value=\"nzst\">New Zealand Standard Time</SelectItem>\n          <SelectItem value=\"fjt\">Fiji Time</SelectItem>\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>South America</SelectLabel>\n          <SelectItem value=\"art\">Argentina Time</SelectItem>\n          <SelectItem value=\"bot\">Bolivia Time</SelectItem>\n          <SelectItem value=\"brt\">Brasilia Time</SelectItem>\n          <SelectItem value=\"clt\">Chile Standard Time</SelectItem>\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/separator-demo.tsx",
    "content": "import { Separator } from \"@/examples/radix/ui/separator\"\n\nexport default function SeparatorDemo() {\n  return (\n    <div className=\"flex max-w-sm flex-col gap-4 text-sm\">\n      <div className=\"flex flex-col gap-1.5\">\n        <div className=\"leading-none font-medium\">shadcn/ui</div>\n        <div className=\"text-muted-foreground\">\n          The Foundation for your Design System\n        </div>\n      </div>\n      <Separator />\n      <div>\n        A set of beautifully designed components that you can customize, extend,\n        and build on.\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/separator-list.tsx",
    "content": "import { Separator } from \"@/examples/radix/ui/separator\"\n\nexport function SeparatorList() {\n  return (\n    <div className=\"flex w-full max-w-sm flex-col gap-2 text-sm\">\n      <dl className=\"flex items-center justify-between\">\n        <dt>Item 1</dt>\n        <dd className=\"text-muted-foreground\">Value 1</dd>\n      </dl>\n      <Separator />\n      <dl className=\"flex items-center justify-between\">\n        <dt>Item 2</dt>\n        <dd className=\"text-muted-foreground\">Value 2</dd>\n      </dl>\n      <Separator />\n      <dl className=\"flex items-center justify-between\">\n        <dt>Item 3</dt>\n        <dd className=\"text-muted-foreground\">Value 3</dd>\n      </dl>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/separator-menu.tsx",
    "content": "import { Separator } from \"@/examples/radix/ui/separator\"\n\nexport function SeparatorMenu() {\n  return (\n    <div className=\"flex items-center gap-2 text-sm md:gap-4\">\n      <div className=\"flex flex-col gap-1\">\n        <span className=\"font-medium\">Settings</span>\n        <span className=\"text-xs text-muted-foreground\">\n          Manage preferences\n        </span>\n      </div>\n      <Separator orientation=\"vertical\" />\n      <div className=\"flex flex-col gap-1\">\n        <span className=\"font-medium\">Account</span>\n        <span className=\"text-xs text-muted-foreground\">\n          Profile & security\n        </span>\n      </div>\n      <Separator orientation=\"vertical\" className=\"hidden md:block\" />\n      <div className=\"hidden flex-col gap-1 md:flex\">\n        <span className=\"font-medium\">Help</span>\n        <span className=\"text-xs text-muted-foreground\">Support & docs</span>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/separator-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Separator } from \"@/examples/radix/ui-rtl/separator\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"shadcn/ui\",\n      subtitle: \"The Foundation for your Design System\",\n      description:\n        \"A set of beautifully designed components that you can customize, extend, and build on.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"shadcn/ui\",\n      subtitle: \"الأساس لنظام التصميم الخاص بك\",\n      description:\n        \"مجموعة من المكونات المصممة بشكل جميل يمكنك تخصيصها وتوسيعها والبناء عليها.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"shadcn/ui\",\n      subtitle: \"הבסיס למערכת העיצוב שלך\",\n      description:\n        \"סט של רכיבים מעוצבים בצורה יפה שאתה יכול להתאים אישית, להרחיב ולבנות עליהם.\",\n    },\n  },\n}\n\nexport function SeparatorRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex max-w-sm flex-col gap-4 text-sm\" dir={dir}>\n      <div className=\"flex flex-col gap-1.5\">\n        <div className=\"leading-none font-medium\">{t.title}</div>\n        <div className=\"text-muted-foreground\">{t.subtitle}</div>\n      </div>\n      <Separator />\n      <div>{t.description}</div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/separator-vertical.tsx",
    "content": "import { Separator } from \"@/examples/radix/ui/separator\"\n\nexport function SeparatorVertical() {\n  return (\n    <div className=\"flex h-5 items-center gap-4 text-sm\">\n      <div>Blog</div>\n      <Separator orientation=\"vertical\" />\n      <div>Docs</div>\n      <Separator orientation=\"vertical\" />\n      <div>Source</div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sheet-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { Label } from \"@/examples/radix/ui/label\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/examples/radix/ui/sheet\"\n\nexport default function SheetDemo() {\n  return (\n    <Sheet>\n      <SheetTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </SheetTrigger>\n      <SheetContent>\n        <SheetHeader>\n          <SheetTitle>Edit profile</SheetTitle>\n          <SheetDescription>\n            Make changes to your profile here. Click save when you&apos;re done.\n          </SheetDescription>\n        </SheetHeader>\n        <div className=\"grid flex-1 auto-rows-min gap-6 px-4\">\n          <div className=\"grid gap-3\">\n            <Label htmlFor=\"sheet-demo-name\">Name</Label>\n            <Input id=\"sheet-demo-name\" defaultValue=\"Pedro Duarte\" />\n          </div>\n          <div className=\"grid gap-3\">\n            <Label htmlFor=\"sheet-demo-username\">Username</Label>\n            <Input id=\"sheet-demo-username\" defaultValue=\"@peduarte\" />\n          </div>\n        </div>\n        <SheetFooter>\n          <Button type=\"submit\">Save changes</Button>\n          <SheetClose asChild>\n            <Button variant=\"outline\">Close</Button>\n          </SheetClose>\n        </SheetFooter>\n      </SheetContent>\n    </Sheet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sheet-no-close-button.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/examples/radix/ui/sheet\"\n\nexport default function SheetNoCloseButton() {\n  return (\n    <Sheet>\n      <SheetTrigger asChild>\n        <Button variant=\"outline\">Open Sheet</Button>\n      </SheetTrigger>\n      <SheetContent showCloseButton={false}>\n        <SheetHeader>\n          <SheetTitle>No Close Button</SheetTitle>\n          <SheetDescription>\n            This sheet doesn&apos;t have a close button in the top-right corner.\n            Click outside to close.\n          </SheetDescription>\n        </SheetHeader>\n      </SheetContent>\n    </Sheet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sheet-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui-rtl/field\"\nimport { Input } from \"@/examples/radix/ui-rtl/input\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/examples/radix/ui-rtl/sheet\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      open: \"Open\",\n      editProfile: \"Edit profile\",\n      description:\n        \"Make changes to your profile here. Click save when you're done.\",\n      name: \"Name\",\n      username: \"Username\",\n      save: \"Save changes\",\n      close: \"Close\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      open: \"فتح\",\n      editProfile: \"تعديل الملف الشخصي\",\n      description:\n        \"قم بإجراء تغييرات على ملفك الشخصي هنا. انقر حفظ عند الانتهاء.\",\n      name: \"الاسم\",\n      username: \"اسم المستخدم\",\n      save: \"حفظ التغييرات\",\n      close: \"إغلاق\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      open: \"פתח\",\n      editProfile: \"עריכת פרופיל\",\n      description: \"בצע שינויים בפרופיל שלך כאן. לחץ שמור כשתסיים.\",\n      name: \"שם\",\n      username: \"שם משתמש\",\n      save: \"שמור שינויים\",\n      close: \"סגור\",\n    },\n  },\n}\n\nexport function SheetRtl() {\n  const { dir, t, language } = useTranslation(translations, \"ar\")\n\n  return (\n    <Sheet>\n      <SheetTrigger asChild>\n        <Button variant=\"outline\">{t.open}</Button>\n      </SheetTrigger>\n      <SheetContent\n        dir={dir}\n        side={dir === \"rtl\" ? \"left\" : \"right\"}\n        data-lang={dir === \"rtl\" ? language : undefined}\n      >\n        <SheetHeader>\n          <SheetTitle>{t.editProfile}</SheetTitle>\n          <SheetDescription>{t.description}</SheetDescription>\n        </SheetHeader>\n        <FieldGroup className=\"px-4\">\n          <Field>\n            <FieldLabel htmlFor=\"sheet-rtl-name\">{t.name}</FieldLabel>\n            <Input id=\"sheet-rtl-name\" defaultValue=\"Pedro Duarte\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"sheet-rtl-username\">{t.username}</FieldLabel>\n            <Input id=\"sheet-rtl-username\" defaultValue=\"peduarte\" />\n          </Field>\n        </FieldGroup>\n        <SheetFooter>\n          <Button type=\"submit\">{t.save}</Button>\n          <SheetClose asChild>\n            <Button variant=\"outline\">{t.close}</Button>\n          </SheetClose>\n        </SheetFooter>\n      </SheetContent>\n    </Sheet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sheet-side.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/examples/radix/ui/sheet\"\n\nconst SHEET_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nexport default function SheetSide() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {SHEET_SIDES.map((side) => (\n        <Sheet key={side}>\n          <SheetTrigger asChild>\n            <Button variant=\"outline\" className=\"capitalize\">\n              {side}\n            </Button>\n          </SheetTrigger>\n          <SheetContent\n            side={side}\n            className=\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\"\n          >\n            <SheetHeader>\n              <SheetTitle>Edit profile</SheetTitle>\n              <SheetDescription>\n                Make changes to your profile here. Click save when you&apos;re\n                done.\n              </SheetDescription>\n            </SheetHeader>\n            <div className=\"no-scrollbar overflow-y-auto px-4\">\n              {Array.from({ length: 10 }).map((_, index) => (\n                <p key={index} className=\"mb-2 leading-relaxed\">\n                  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                  do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n                  Ut enim ad minim veniam, quis nostrud exercitation ullamco\n                  laboris nisi ut aliquip ex ea commodo consequat. Duis aute\n                  irure dolor in reprehenderit in voluptate velit esse cillum\n                  dolore eu fugiat nulla pariatur. Excepteur sint occaecat\n                  cupidatat non proident, sunt in culpa qui officia deserunt\n                  mollit anim id est laborum.\n                </p>\n              ))}\n            </div>\n            <SheetFooter>\n              <Button type=\"submit\">Save changes</Button>\n              <SheetClose asChild>\n                <Button variant=\"outline\">Cancel</Button>\n              </SheetClose>\n            </SheetFooter>\n          </SheetContent>\n        </Sheet>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PanelLeftCloseIcon,\n  PanelLeftOpenIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  const [open, setOpen] = React.useState(true)\n\n  return (\n    <SidebarProvider open={open} onOpenChange={setOpen}>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton asChild>\n                      <a href={project.url}>\n                        <project.icon />\n                        <span>{project.name}</span>\n                      </a>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <Button\n            onClick={() => setOpen((open) => !open)}\n            size=\"sm\"\n            variant=\"ghost\"\n          >\n            {open ? <PanelLeftCloseIcon /> : <PanelLeftOpenIcon />}\n            <span>{open ? \"Close\" : \"Open\"} Sidebar</span>\n          </Button>\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/examples/radix/ui/avatar\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui/collapsible\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n  useSidebar,\n} from \"@/examples/radix/ui/sidebar\"\nimport {\n  AudioWaveform,\n  BadgeCheck,\n  Bell,\n  BookOpen,\n  Bot,\n  ChevronRight,\n  ChevronsUpDown,\n  Command,\n  CreditCard,\n  Folder,\n  Forward,\n  Frame,\n  GalleryVerticalEnd,\n  LogOut,\n  Map,\n  MoreHorizontal,\n  PieChart,\n  Plus,\n  Settings2,\n  Sparkles,\n  SquareTerminal,\n  Trash2,\n} from \"lucide-react\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: GalleryVerticalEnd,\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: AudioWaveform,\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: Command,\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: SquareTerminal,\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: Bot,\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: BookOpen,\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: Settings2,\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: Frame,\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: PieChart,\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: Map,\n    },\n  ],\n}\n\nfunction TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ElementType\n    plan: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n\n  if (!activeTeam) {\n    return null\n  }\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <activeTeam.logo className=\"size-4\" />\n              </div>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{activeTeam.name}</span>\n                <span className=\"truncate text-xs\">{activeTeam.plan}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            align=\"start\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                Teams\n              </DropdownMenuLabel>\n              {teams.map((team, index) => (\n                <DropdownMenuItem\n                  key={team.name}\n                  onClick={() => setActiveTeam(team)}\n                  className=\"gap-2 p-2\"\n                >\n                  <div className=\"flex size-6 items-center justify-center rounded-md border\">\n                    <team.logo className=\"size-3.5 shrink-0\" />\n                  </div>\n                  {team.name}\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n                </DropdownMenuItem>\n              ))}\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem className=\"gap-2 p-2\">\n                <div className=\"flex size-6 items-center justify-center rounded-md border bg-transparent\">\n                  <Plus className=\"size-4\" />\n                </div>\n                <div className=\"font-medium text-muted-foreground\">\n                  Add team\n                </div>\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n\nfunction NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: React.ElementType\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible\n            key={item.title}\n            asChild\n            defaultOpen={item.isActive}\n            className=\"group/collapsible\"\n          >\n            <SidebarMenuItem>\n              <CollapsibleTrigger asChild>\n                <SidebarMenuButton tooltip={item.title}>\n                  {item.icon && <item.icon />}\n                  <span>{item.title}</span>\n                  <ChevronRight className=\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\" />\n                </SidebarMenuButton>\n              </CollapsibleTrigger>\n              <CollapsibleContent>\n                <SidebarMenuSub>\n                  {item.items?.map((subItem) => (\n                    <SidebarMenuSubItem key={subItem.title}>\n                      <SidebarMenuSubButton asChild>\n                        <a href={subItem.url}>\n                          <span>{subItem.title}</span>\n                        </a>\n                      </SidebarMenuSubButton>\n                    </SidebarMenuSubItem>\n                  ))}\n                </SidebarMenuSub>\n              </CollapsibleContent>\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n\nfunction NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: React.ElementType\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                <item.icon />\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction showOnHover>\n                  <MoreHorizontal />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <Folder className=\"text-muted-foreground\" />\n                    <span>View Project</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <Forward className=\"text-muted-foreground\" />\n                    <span>Share Project</span>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <Trash2 className=\"text-muted-foreground\" />\n                    <span>Delete Project</span>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <MoreHorizontal className=\"text-sidebar-foreground/70\" />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n\nfunction NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"p-0 font-normal\">\n                <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                  <Avatar className=\"h-8 w-8 rounded-lg\">\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs\">{user.email}</span>\n                  </div>\n                </div>\n              </DropdownMenuLabel>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <LogOut />\n                Log out\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n\nexport default function AppSidebar({\n  ...props\n}: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <SidebarProvider>\n      <Sidebar collapsible=\"icon\" {...props}>\n        <SidebarHeader>\n          <TeamSwitcher teams={data.teams} />\n        </SidebarHeader>\n        <SidebarContent>\n          <NavMain items={data.navMain} />\n          <NavProjects projects={data.projects} />\n        </SidebarContent>\n        <SidebarFooter>\n          <NavUser user={data.user} />\n        </SidebarFooter>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n          </div>\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-footer.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/examples/radix/ui/sidebar\"\nimport { ChevronUpIcon } from \"lucide-react\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarHeader />\n        <SidebarContent />\n        <SidebarFooter>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\">\n                    Username\n                    <ChevronUpIcon className=\"ml-auto\" />\n                  </SidebarMenuButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  side=\"top\"\n                  className=\"w-(--radix-popper-anchor-width)\"\n                >\n                  <DropdownMenuItem>\n                    <span>Account</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Billing</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Sign out</span>\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarFooter>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <SidebarTrigger />\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-group-action.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport { FrameIcon, MapIcon, PieChartIcon, PlusIcon } from \"lucide-react\"\nimport { toast, Toaster } from \"sonner\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Toaster\n        position=\"bottom-left\"\n        toastOptions={{\n          className: \"ml-[160px]\",\n        }}\n      />\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupAction\n              title=\"Add Project\"\n              onClick={() => toast(\"You clicked the group action!\")}\n            >\n              <PlusIcon /> <span className=\"sr-only\">Add Project</span>\n            </SidebarGroupAction>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                <SidebarMenuItem>\n                  <SidebarMenuButton asChild>\n                    <a href=\"#\">\n                      <FrameIcon />\n                      <span>Design Engineering</span>\n                    </a>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton asChild>\n                    <a href=\"#\">\n                      <PieChartIcon />\n                      <span>Sales & Marketing</span>\n                    </a>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton asChild>\n                    <a href=\"#\">\n                      <MapIcon />\n                      <span>Travel</span>\n                    </a>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-group-collapsible.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport { ChevronDownIcon, LifeBuoyIcon, SendIcon } from \"lucide-react\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <Collapsible defaultOpen className=\"group/collapsible\">\n            <SidebarGroup>\n              <SidebarGroupLabel\n                asChild\n                className=\"text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                <CollapsibleTrigger>\n                  Help\n                  <ChevronDownIcon className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-180\" />\n                </CollapsibleTrigger>\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    <SidebarMenuItem>\n                      <SidebarMenuButton>\n                        <LifeBuoyIcon />\n                        Support\n                      </SidebarMenuButton>\n                    </SidebarMenuItem>\n                    <SidebarMenuItem>\n                      <SidebarMenuButton>\n                        <SendIcon />\n                        Feedback\n                      </SidebarMenuButton>\n                    </SidebarMenuItem>\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </SidebarGroup>\n          </Collapsible>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-group.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport { LifeBuoyIcon, SendIcon } from \"lucide-react\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Help</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                <SidebarMenuItem>\n                  <SidebarMenuButton>\n                    <LifeBuoyIcon />\n                    Support\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton>\n                    <SendIcon />\n                    Feedback\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-header.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/examples/radix/ui/sidebar\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\">\n                    Select Workspace\n                    <ChevronDownIcon className=\"ml-auto\" />\n                  </SidebarMenuButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent className=\"w-(--radix-popper-anchor-width)\">\n                  <DropdownMenuItem>\n                    <span>Acme Inc</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Acme Corp.</span>\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <SidebarTrigger />\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-menu-action.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  MoreHorizontalIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton\n                      asChild\n                      className=\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\"\n                    >\n                      <a href={project.url}>\n                        <project.icon />\n                        <span>{project.name}</span>\n                      </a>\n                    </SidebarMenuButton>\n                    <DropdownMenu>\n                      <DropdownMenuTrigger asChild>\n                        <SidebarMenuAction>\n                          <MoreHorizontalIcon />\n                          <span className=\"sr-only\">More</span>\n                        </SidebarMenuAction>\n                      </DropdownMenuTrigger>\n                      <DropdownMenuContent side=\"right\" align=\"start\">\n                        <DropdownMenuItem>\n                          <span>Edit Project</span>\n                        </DropdownMenuItem>\n                        <DropdownMenuItem>\n                          <span>Delete Project</span>\n                        </DropdownMenuItem>\n                      </DropdownMenuContent>\n                    </DropdownMenu>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-menu-badge.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n    badge: \"24\",\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n    badge: \"12\",\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n    badge: \"3\",\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n    badge: \"21\",\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n    badge: \"8\",\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton\n                      asChild\n                      className=\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\"\n                    >\n                      <a href={project.url}>\n                        <project.icon />\n                        <span>{project.name}</span>\n                      </a>\n                    </SidebarMenuButton>\n                    <SidebarMenuBadge>{project.badge}</SidebarMenuBadge>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-menu-collapsible.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport { ChevronRightIcon } from \"lucide-react\"\n\nconst items = [\n  {\n    title: \"Getting Started\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Installation\",\n        url: \"#\",\n      },\n      {\n        title: \"Project Structure\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Build Your Application\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Routing\",\n        url: \"#\",\n      },\n      {\n        title: \"Data Fetching\",\n        url: \"#\",\n        isActive: true,\n      },\n      {\n        title: \"Rendering\",\n        url: \"#\",\n      },\n      {\n        title: \"Caching\",\n        url: \"#\",\n      },\n      {\n        title: \"Styling\",\n        url: \"#\",\n      },\n      {\n        title: \"Optimizing\",\n        url: \"#\",\n      },\n      {\n        title: \"Configuring\",\n        url: \"#\",\n      },\n      {\n        title: \"Testing\",\n        url: \"#\",\n      },\n      {\n        title: \"Authentication\",\n        url: \"#\",\n      },\n      {\n        title: \"Deploying\",\n        url: \"#\",\n      },\n      {\n        title: \"Upgrading\",\n        url: \"#\",\n      },\n      {\n        title: \"Examples\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"API Reference\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Components\",\n        url: \"#\",\n      },\n      {\n        title: \"File Conventions\",\n        url: \"#\",\n      },\n      {\n        title: \"Functions\",\n        url: \"#\",\n      },\n      {\n        title: \"next.config.js Options\",\n        url: \"#\",\n      },\n      {\n        title: \"CLI\",\n        url: \"#\",\n      },\n      {\n        title: \"Edge Runtime\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Architecture\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Accessibility\",\n        url: \"#\",\n      },\n      {\n        title: \"Fast Refresh\",\n        url: \"#\",\n      },\n      {\n        title: \"Next.js Compiler\",\n        url: \"#\",\n      },\n      {\n        title: \"Supported Browsers\",\n        url: \"#\",\n      },\n      {\n        title: \"Turbopack\",\n        url: \"#\",\n      },\n    ],\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {items.map((item, index) => (\n                  <Collapsible\n                    key={index}\n                    className=\"group/collapsible\"\n                    defaultOpen={index === 0}\n                  >\n                    <SidebarMenuItem>\n                      <CollapsibleTrigger asChild>\n                        <SidebarMenuButton>\n                          <span>{item.title}</span>\n                          <ChevronRightIcon className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\" />\n                        </SidebarMenuButton>\n                      </CollapsibleTrigger>\n                      <CollapsibleContent>\n                        <SidebarMenuSub>\n                          {item.items.map((subItem, subIndex) => (\n                            <SidebarMenuSubItem key={subIndex}>\n                              <SidebarMenuSubButton asChild>\n                                <a href={subItem.url}>\n                                  <span>{subItem.title}</span>\n                                </a>\n                              </SidebarMenuSubButton>\n                            </SidebarMenuSubItem>\n                          ))}\n                        </SidebarMenuSub>\n                      </CollapsibleContent>\n                    </SidebarMenuItem>\n                  </Collapsible>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-menu-sub.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\n\nconst items = [\n  {\n    title: \"Getting Started\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Installation\",\n        url: \"#\",\n      },\n      {\n        title: \"Project Structure\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Build Your Application\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Routing\",\n        url: \"#\",\n      },\n      {\n        title: \"Data Fetching\",\n        url: \"#\",\n        isActive: true,\n      },\n      {\n        title: \"Rendering\",\n        url: \"#\",\n      },\n      {\n        title: \"Caching\",\n        url: \"#\",\n      },\n      {\n        title: \"Styling\",\n        url: \"#\",\n      },\n      {\n        title: \"Optimizing\",\n        url: \"#\",\n      },\n      {\n        title: \"Configuring\",\n        url: \"#\",\n      },\n      {\n        title: \"Testing\",\n        url: \"#\",\n      },\n      {\n        title: \"Authentication\",\n        url: \"#\",\n      },\n      {\n        title: \"Deploying\",\n        url: \"#\",\n      },\n      {\n        title: \"Upgrading\",\n        url: \"#\",\n      },\n      {\n        title: \"Examples\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"API Reference\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Components\",\n        url: \"#\",\n      },\n      {\n        title: \"File Conventions\",\n        url: \"#\",\n      },\n      {\n        title: \"Functions\",\n        url: \"#\",\n      },\n      {\n        title: \"next.config.js Options\",\n        url: \"#\",\n      },\n      {\n        title: \"CLI\",\n        url: \"#\",\n      },\n      {\n        title: \"Edge Runtime\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Architecture\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Accessibility\",\n        url: \"#\",\n      },\n      {\n        title: \"Fast Refresh\",\n        url: \"#\",\n      },\n      {\n        title: \"Next.js Compiler\",\n        url: \"#\",\n      },\n      {\n        title: \"Supported Browsers\",\n        url: \"#\",\n      },\n      {\n        title: \"Turbopack\",\n        url: \"#\",\n      },\n    ],\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {items.map((item, index) => (\n                  <SidebarMenuItem key={index}>\n                    <SidebarMenuButton asChild>\n                      <a href={item.url}>\n                        <span>{item.title}</span>\n                      </a>\n                    </SidebarMenuButton>\n                    <SidebarMenuSub>\n                      {item.items.map((subItem, subIndex) => (\n                        <SidebarMenuSubItem key={subIndex}>\n                          <SidebarMenuSubButton asChild>\n                            <a href={subItem.url}>\n                              <span>{subItem.title}</span>\n                            </a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-menu.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton asChild>\n                      <a href={project.url}>\n                        <project.icon />\n                        <span>{project.name}</span>\n                      </a>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-rsc.tsx",
    "content": "import * as React from \"react\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarProvider,\n} from \"@/examples/radix/ui/sidebar\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n    badge: \"24\",\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n    badge: \"12\",\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n    badge: \"3\",\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n    badge: \"21\",\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n    badge: \"8\",\n  },\n]\n\n// Dummy fetch function.\nasync function fetchProjects() {\n  await new Promise((resolve) => setTimeout(resolve, 3000))\n  return projects\n}\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <React.Suspense fallback={<NavProjectsSkeleton />}>\n                <NavProjects />\n              </React.Suspense>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n\nfunction NavProjectsSkeleton() {\n  return (\n    <SidebarMenu>\n      {Array.from({ length: 5 }).map((_, index) => (\n        <SidebarMenuItem key={index}>\n          <SidebarMenuSkeleton showIcon />\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n\nasync function NavProjects() {\n  const projects = await fetchProjects()\n\n  return (\n    <SidebarMenu>\n      {projects.map((project) => (\n        <SidebarMenuItem key={project.name}>\n          <SidebarMenuButton asChild>\n            <a href={project.url}>\n              <project.icon />\n              <span>{project.name}</span>\n            </a>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sidebar-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/examples/radix/ui-rtl/avatar\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/examples/radix/ui-rtl/collapsible\"\nimport { DirectionProvider } from \"@/examples/radix/ui-rtl/direction\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui-rtl/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n  useSidebar,\n} from \"@/examples/radix/ui-rtl/sidebar\"\nimport {\n  BadgeCheck,\n  Bell,\n  BookOpen,\n  Bot,\n  ChevronRight,\n  ChevronsUpDown,\n  CreditCard,\n  Folder,\n  Forward,\n  Frame,\n  GalleryVerticalEnd,\n  LogOut,\n  Map,\n  MoreHorizontal,\n  PieChart,\n  Settings2,\n  Sparkles,\n  SquareTerminal,\n  Trash2,\n} from \"lucide-react\"\n\nimport {\n  LanguageProvider,\n  LanguageSelector,\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      teamName: \"Acme Inc\",\n      teamPlan: \"Enterprise\",\n      platform: \"Platform\",\n      projects: \"Projects\",\n      viewProject: \"View Project\",\n      shareProject: \"Share Project\",\n      deleteProject: \"Delete Project\",\n      more: \"More\",\n      upgradeToPro: \"Upgrade to Pro\",\n      account: \"Account\",\n      billing: \"Billing\",\n      notifications: \"Notifications\",\n      logOut: \"Log out\",\n      playground: \"Playground\",\n      history: \"History\",\n      starred: \"Starred\",\n      settings: \"Settings\",\n      models: \"Models\",\n      genesis: \"Genesis\",\n      explorer: \"Explorer\",\n      quantum: \"Quantum\",\n      documentation: \"Documentation\",\n      introduction: \"Introduction\",\n      getStarted: \"Get Started\",\n      tutorials: \"Tutorials\",\n      changelog: \"Changelog\",\n      general: \"General\",\n      team: \"Team\",\n      limits: \"Limits\",\n      designEngineering: \"Design Engineering\",\n      salesMarketing: \"Sales & Marketing\",\n      travel: \"Travel\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      teamName: \"شركة أكمي\",\n      teamPlan: \"المؤسسة\",\n      platform: \"المنصة\",\n      projects: \"المشاريع\",\n      viewProject: \"عرض المشروع\",\n      shareProject: \"مشاركة المشروع\",\n      deleteProject: \"حذف المشروع\",\n      more: \"المزيد\",\n      upgradeToPro: \"ترقية إلى Pro\",\n      account: \"الحساب\",\n      billing: \"الفوترة\",\n      notifications: \"الإشعارات\",\n      logOut: \"تسجيل الخروج\",\n      playground: \"ملعب\",\n      history: \"السجل\",\n      starred: \"المميز\",\n      settings: \"الإعدادات\",\n      models: \"النماذج\",\n      genesis: \"جينيسيس\",\n      explorer: \"إكسبلورر\",\n      quantum: \"كوانتوم\",\n      documentation: \"التوثيق\",\n      introduction: \"مقدمة\",\n      getStarted: \"ابدأ\",\n      tutorials: \"الدروس\",\n      changelog: \"سجل التغييرات\",\n      general: \"عام\",\n      team: \"الفريق\",\n      limits: \"الحدود\",\n      designEngineering: \"هندسة التصميم\",\n      salesMarketing: \"المبيعات والتسويق\",\n      travel: \"السفر\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      teamName: \"אקמי בע״מ\",\n      teamPlan: \"ארגוני\",\n      platform: \"פלטפורמה\",\n      projects: \"פרויקטים\",\n      viewProject: \"הצג פרויקט\",\n      shareProject: \"שתף פרויקט\",\n      deleteProject: \"מחק פרויקט\",\n      more: \"עוד\",\n      upgradeToPro: \"שדרג ל-Pro\",\n      account: \"חשבון\",\n      billing: \"חיוב\",\n      notifications: \"התראות\",\n      logOut: \"התנתק\",\n      playground: \"מגרש משחקים\",\n      history: \"היסטוריה\",\n      starred: \"מועדפים\",\n      settings: \"הגדרות\",\n      models: \"מודלים\",\n      genesis: \"ג'נסיס\",\n      explorer: \"אקספלורר\",\n      quantum: \"קוונטום\",\n      documentation: \"תיעוד\",\n      introduction: \"מבוא\",\n      getStarted: \"התחל\",\n      tutorials: \"מדריכים\",\n      changelog: \"יומן שינויים\",\n      general: \"כללי\",\n      team: \"צוות\",\n      limits: \"מגבלות\",\n      designEngineering: \"הנדסת עיצוב\",\n      salesMarketing: \"מכירות ושיווק\",\n      travel: \"נסיעות\",\n    },\n  },\n}\n\nexport function SidebarRtl() {\n  return (\n    <LanguageProvider defaultLanguage=\"ar\">\n      <AppSidebarWithProvider />\n    </LanguageProvider>\n  )\n}\n\nfunction AppSidebarWithProvider() {\n  const { language, setLanguage, dir } = useTranslation(translations, \"ar\")\n\n  return (\n    <DirectionProvider dir={dir}>\n      <div className=\"relative\" dir={dir}>\n        <LanguageSelector\n          value={language}\n          onValueChange={setLanguage}\n          className=\"absolute top-4 right-4 z-10 rtl:right-auto rtl:left-4\"\n        />\n        <AppSidebar />\n      </div>\n    </DirectionProvider>\n  )\n}\n\nfunction AppSidebar() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  const navMain = [\n    {\n      title: t.playground,\n      url: \"#\",\n      icon: SquareTerminal,\n      isActive: true,\n      items: [\n        { title: t.history, url: \"#\" },\n        { title: t.starred, url: \"#\" },\n        { title: t.settings, url: \"#\" },\n      ],\n    },\n    {\n      title: t.models,\n      url: \"#\",\n      icon: Bot,\n      items: [\n        { title: t.genesis, url: \"#\" },\n        { title: t.explorer, url: \"#\" },\n        { title: t.quantum, url: \"#\" },\n      ],\n    },\n    {\n      title: t.documentation,\n      url: \"#\",\n      icon: BookOpen,\n      items: [\n        { title: t.introduction, url: \"#\" },\n        { title: t.getStarted, url: \"#\" },\n        { title: t.tutorials, url: \"#\" },\n        { title: t.changelog, url: \"#\" },\n      ],\n    },\n    {\n      title: t.settings,\n      url: \"#\",\n      icon: Settings2,\n      items: [\n        { title: t.general, url: \"#\" },\n        { title: t.team, url: \"#\" },\n        { title: t.billing, url: \"#\" },\n        { title: t.limits, url: \"#\" },\n      ],\n    },\n  ]\n\n  const projects = [\n    { name: t.designEngineering, url: \"#\", icon: Frame },\n    { name: t.salesMarketing, url: \"#\", icon: PieChart },\n    { name: t.travel, url: \"#\", icon: Map },\n  ]\n\n  const user = {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  }\n\n  return (\n    <SidebarProvider>\n      <SidebarContentInner\n        dir={dir}\n        t={t}\n        navMain={navMain}\n        projects={projects}\n        user={user}\n      />\n    </SidebarProvider>\n  )\n}\n\nfunction SidebarContentInner({\n  dir,\n  t,\n  navMain,\n  projects,\n  user,\n}: {\n  dir: \"ltr\" | \"rtl\"\n  t: typeof translations.ar.values\n  navMain: Array<{\n    title: string\n    url: string\n    icon?: React.ElementType\n    isActive?: boolean\n    items?: Array<{ title: string; url: string }>\n  }>\n  projects: Array<{\n    name: string\n    url: string\n    icon: React.ElementType\n  }>\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <>\n      <Sidebar\n        collapsible=\"icon\"\n        dir={dir}\n        side={dir === \"ltr\" ? \"left\" : \"right\"}\n      >\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <SidebarMenuButton size=\"lg\" asChild>\n                <a href=\"#\">\n                  <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                    <GalleryVerticalEnd className=\"size-4\" />\n                  </div>\n                  <div className=\"flex flex-col gap-0.5 leading-none\">\n                    <span className=\"font-medium\">{t.teamName}</span>\n                    <span className=\"\">{t.teamPlan}</span>\n                  </div>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>{t.platform}</SidebarGroupLabel>\n            <SidebarMenu>\n              {navMain.map((item) => (\n                <Collapsible\n                  key={item.title}\n                  asChild\n                  defaultOpen={item.isActive}\n                  className=\"group/collapsible\"\n                >\n                  <SidebarMenuItem>\n                    <CollapsibleTrigger asChild>\n                      <SidebarMenuButton tooltip={item.title}>\n                        {item.icon && <item.icon />}\n                        <span>{item.title}</span>\n                        <ChevronRight className=\"ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180 rtl:group-data-[state=open]/collapsible:rotate-90\" />\n                      </SidebarMenuButton>\n                    </CollapsibleTrigger>\n                    <CollapsibleContent>\n                      <SidebarMenuSub>\n                        {item.items?.map((subItem) => (\n                          <SidebarMenuSubItem key={subItem.title}>\n                            <SidebarMenuSubButton asChild>\n                              <a href={subItem.url}>\n                                <span>{subItem.title}</span>\n                              </a>\n                            </SidebarMenuSubButton>\n                          </SidebarMenuSubItem>\n                        ))}\n                      </SidebarMenuSub>\n                    </CollapsibleContent>\n                  </SidebarMenuItem>\n                </Collapsible>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n          <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n            <SidebarGroupLabel>{t.projects}</SidebarGroupLabel>\n            <SidebarMenu>\n              {projects.map((item) => (\n                <SidebarMenuItem key={item.name}>\n                  <SidebarMenuButton asChild>\n                    <a href={item.url}>\n                      <item.icon />\n                      <span>{item.name}</span>\n                    </a>\n                  </SidebarMenuButton>\n                  <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                      <SidebarMenuAction showOnHover>\n                        <MoreHorizontal />\n                        <span className=\"sr-only\">{t.more}</span>\n                      </SidebarMenuAction>\n                    </DropdownMenuTrigger>\n                    <DropdownMenuContent\n                      className=\"w-48 rounded-lg\"\n                      side={isMobile ? \"bottom\" : \"right\"}\n                      align={isMobile ? \"end\" : \"start\"}\n                    >\n                      <DropdownMenuGroup>\n                        <DropdownMenuItem>\n                          <Folder className=\"text-muted-foreground\" />\n                          <span>{t.viewProject}</span>\n                        </DropdownMenuItem>\n                        <DropdownMenuItem>\n                          <Forward className=\"text-muted-foreground\" />\n                          <span>{t.shareProject}</span>\n                        </DropdownMenuItem>\n                      </DropdownMenuGroup>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuGroup>\n                        <DropdownMenuItem>\n                          <Trash2 className=\"text-muted-foreground\" />\n                          <span>{t.deleteProject}</span>\n                        </DropdownMenuItem>\n                      </DropdownMenuGroup>\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n                </SidebarMenuItem>\n              ))}\n              <SidebarMenuItem>\n                <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n                  <MoreHorizontal className=\"text-sidebar-foreground/70\" />\n                  <span>{t.more}</span>\n                </SidebarMenuButton>\n              </SidebarMenuItem>\n            </SidebarMenu>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <SidebarMenuButton\n                    size=\"lg\"\n                    className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n                  >\n                    <Avatar className=\"rounded-lg\">\n                      <AvatarImage src={user.avatar} alt={user.name} />\n                      <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                    </Avatar>\n                    <div className=\"grid flex-1 text-start text-sm leading-tight\">\n                      <span className=\"truncate font-medium\">{user.name}</span>\n                      <span className=\"truncate text-xs\">{user.email}</span>\n                    </div>\n                    <ChevronsUpDown className=\"ms-auto size-4\" />\n                  </SidebarMenuButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n                  side={isMobile ? \"bottom\" : \"right\"}\n                  align=\"end\"\n                  sideOffset={4}\n                >\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel className=\"p-0 font-normal\">\n                      <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                        <Avatar>\n                          <AvatarImage src={user.avatar} alt={user.name} />\n                          <AvatarFallback className=\"rounded-lg\">\n                            CN\n                          </AvatarFallback>\n                        </Avatar>\n                        <div className=\"grid flex-1 text-start text-sm leading-tight\">\n                          <span className=\"truncate font-medium\">\n                            {user.name}\n                          </span>\n                          <span className=\"truncate text-xs\">{user.email}</span>\n                        </div>\n                      </div>\n                    </DropdownMenuLabel>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <Sparkles />\n                      {t.upgradeToPro}\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <BadgeCheck />\n                      {t.account}\n                    </DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <CreditCard />\n                      {t.billing}\n                    </DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <Bell />\n                      {t.notifications}\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <LogOut />\n                      {t.logOut}\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarFooter>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header\n          className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\"\n          dir={dir}\n        >\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n          </div>\n        </header>\n      </SidebarInset>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/skeleton-avatar.tsx",
    "content": "import { Skeleton } from \"@/examples/radix/ui/skeleton\"\n\nexport function SkeletonAvatar() {\n  return (\n    <div className=\"flex w-fit items-center gap-4\">\n      <Skeleton className=\"size-10 shrink-0 rounded-full\" />\n      <div className=\"grid gap-2\">\n        <Skeleton className=\"h-4 w-[150px]\" />\n        <Skeleton className=\"h-4 w-[100px]\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/skeleton-card.tsx",
    "content": "import { Card, CardContent, CardHeader } from \"@/examples/radix/ui/card\"\nimport { Skeleton } from \"@/examples/radix/ui/skeleton\"\n\nexport function SkeletonCard() {\n  return (\n    <Card className=\"w-full max-w-xs\">\n      <CardHeader>\n        <Skeleton className=\"h-4 w-2/3\" />\n        <Skeleton className=\"h-4 w-1/2\" />\n      </CardHeader>\n      <CardContent>\n        <Skeleton className=\"aspect-video w-full\" />\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/skeleton-demo.tsx",
    "content": "import { Skeleton } from \"@/examples/radix/ui/skeleton\"\n\nexport function SkeletonDemo() {\n  return (\n    <div className=\"flex items-center gap-4\">\n      <Skeleton className=\"h-12 w-12 rounded-full\" />\n      <div className=\"space-y-2\">\n        <Skeleton className=\"h-4 w-[250px]\" />\n        <Skeleton className=\"h-4 w-[200px]\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/skeleton-form.tsx",
    "content": "import { Skeleton } from \"@/examples/radix/ui/skeleton\"\n\nexport function SkeletonForm() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-7\">\n      <div className=\"flex flex-col gap-3\">\n        <Skeleton className=\"h-4 w-20\" />\n        <Skeleton className=\"h-8 w-full\" />\n      </div>\n      <div className=\"flex flex-col gap-3\">\n        <Skeleton className=\"h-4 w-24\" />\n        <Skeleton className=\"h-8 w-full\" />\n      </div>\n      <Skeleton className=\"h-8 w-24\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/skeleton-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Skeleton } from \"@/examples/radix/ui-rtl/skeleton\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nexport function SkeletonRtl() {\n  const { dir } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex items-center gap-4\" dir={dir}>\n      <Skeleton className=\"h-12 w-12 rounded-full\" />\n      <div className=\"space-y-2\">\n        <Skeleton className=\"h-4 w-[250px]\" />\n        <Skeleton className=\"h-4 w-[200px]\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/skeleton-table.tsx",
    "content": "import { Skeleton } from \"@/examples/radix/ui/skeleton\"\n\nexport function SkeletonTable() {\n  return (\n    <div className=\"flex w-full max-w-sm flex-col gap-2\">\n      {Array.from({ length: 5 }).map((_, index) => (\n        <div className=\"flex gap-4\" key={index}>\n          <Skeleton className=\"h-4 flex-1\" />\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-4 w-20\" />\n        </div>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/skeleton-text.tsx",
    "content": "import { Skeleton } from \"@/examples/radix/ui/skeleton\"\n\nexport function SkeletonText() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-2\">\n      <Skeleton className=\"h-4 w-full\" />\n      <Skeleton className=\"h-4 w-full\" />\n      <Skeleton className=\"h-4 w-3/4\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/slider-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Label } from \"@/examples/radix/ui/label\"\nimport { Slider } from \"@/examples/radix/ui/slider\"\n\nexport function SliderControlled() {\n  const [value, setValue] = React.useState([0.3, 0.7])\n\n  return (\n    <div className=\"mx-auto grid w-full max-w-xs gap-3\">\n      <div className=\"flex items-center justify-between gap-2\">\n        <Label htmlFor=\"slider-demo-temperature\">Temperature</Label>\n        <span className=\"text-sm text-muted-foreground\">\n          {value.join(\", \")}\n        </span>\n      </div>\n      <Slider\n        id=\"slider-demo-temperature\"\n        value={value}\n        onValueChange={setValue}\n        min={0}\n        max={1}\n        step={0.1}\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/slider-demo.tsx",
    "content": "import { Slider } from \"@/examples/radix/ui/slider\"\n\nexport function SliderDemo() {\n  return (\n    <Slider\n      defaultValue={[75]}\n      max={100}\n      step={1}\n      className=\"mx-auto w-full max-w-xs\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/slider-disabled.tsx",
    "content": "import { Slider } from \"@/examples/radix/ui/slider\"\n\nexport function SliderDisabled() {\n  return (\n    <Slider\n      defaultValue={[50]}\n      max={100}\n      step={1}\n      disabled\n      className=\"mx-auto w-full max-w-xs\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/slider-multiple.tsx",
    "content": "import { Slider } from \"@/examples/radix/ui/slider\"\n\nexport function SliderMultiple() {\n  return (\n    <Slider\n      defaultValue={[10, 20, 70]}\n      max={100}\n      step={10}\n      className=\"mx-auto w-full max-w-xs\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/slider-range.tsx",
    "content": "import { Slider } from \"@/examples/radix/ui/slider\"\n\nexport function SliderRange() {\n  return (\n    <Slider\n      defaultValue={[25, 50]}\n      max={100}\n      step={5}\n      className=\"mx-auto w-full max-w-xs\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/slider-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slider } from \"@/examples/radix/ui-rtl/slider\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {},\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {},\n  },\n  he: {\n    dir: \"rtl\",\n    values: {},\n  },\n}\n\nexport function SliderRtl() {\n  const { dir } = useTranslation(translations, \"ar\")\n\n  return (\n    <Slider\n      defaultValue={[75]}\n      max={100}\n      step={1}\n      className=\"mx-auto w-full max-w-xs\"\n      dir={dir}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/slider-vertical.tsx",
    "content": "import { Slider } from \"@/examples/radix/ui/slider\"\n\nexport function SliderVertical() {\n  return (\n    <div className=\"mx-auto flex w-full max-w-xs items-center justify-center gap-6\">\n      <Slider\n        defaultValue={[50]}\n        max={100}\n        step={1}\n        orientation=\"vertical\"\n        className=\"h-40\"\n      />\n      <Slider\n        defaultValue={[25]}\n        max={100}\n        step={1}\n        orientation=\"vertical\"\n        className=\"h-40\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sonner-demo.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { toast } from \"sonner\"\n\nexport function SonnerDemo() {\n  return (\n    <Button\n      variant=\"outline\"\n      onClick={() =>\n        toast(\"Event has been created\", {\n          description: \"Sunday, December 03, 2023 at 9:00 AM\",\n          action: {\n            label: \"Undo\",\n            onClick: () => console.log(\"Undo\"),\n          },\n        })\n      }\n    >\n      Show Toast\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sonner-description.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { toast } from \"sonner\"\n\nexport function SonnerDescription() {\n  return (\n    <Button\n      onClick={() =>\n        toast(\"Event has been created\", {\n          description: \"Monday, January 3rd at 6:00pm\",\n        })\n      }\n      variant=\"outline\"\n      className=\"w-fit\"\n    >\n      Show Toast\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sonner-position.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { toast } from \"sonner\"\n\nexport function SonnerPosition() {\n  return (\n    <div className=\"flex flex-wrap justify-center gap-2\">\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"top-left\" })\n        }\n      >\n        Top Left\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"top-center\" })\n        }\n      >\n        Top Center\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"top-right\" })\n        }\n      >\n        Top Right\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"bottom-left\" })\n        }\n      >\n        Bottom Left\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"bottom-center\" })\n        }\n      >\n        Bottom Center\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast(\"Event has been created\", { position: \"bottom-right\" })\n        }\n      >\n        Bottom Right\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/sonner-types.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { toast } from \"sonner\"\n\nexport function SonnerTypes() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Button variant=\"outline\" onClick={() => toast(\"Event has been created\")}>\n        Default\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => toast.success(\"Event has been created\")}\n      >\n        Success\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast.info(\"Be at the area 10 minutes before the event time\")\n        }\n      >\n        Info\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast.warning(\"Event start time cannot be earlier than 8am\")\n        }\n      >\n        Warning\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => toast.error(\"Event has not been created\")}\n      >\n        Error\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => {\n          toast.promise<{ name: string }>(\n            () =>\n              new Promise((resolve) =>\n                setTimeout(() => resolve({ name: \"Event\" }), 2000)\n              ),\n            {\n              loading: \"Loading...\",\n              success: (data) => `${data.name} has been created`,\n              error: \"Error\",\n            }\n          )\n        }}\n      >\n        Promise\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/spinner-badge.tsx",
    "content": "import { Badge } from \"@/examples/radix/ui/badge\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport function SpinnerBadge() {\n  return (\n    <div className=\"flex items-center gap-4 [--radius:1.2rem]\">\n      <Badge>\n        <Spinner data-icon=\"inline-start\" />\n        Syncing\n      </Badge>\n      <Badge variant=\"secondary\">\n        <Spinner data-icon=\"inline-start\" />\n        Updating\n      </Badge>\n      <Badge variant=\"outline\">\n        <Spinner data-icon=\"inline-start\" />\n        Processing\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/spinner-button.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport function SpinnerButton() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <Button disabled size=\"sm\">\n        <Spinner data-icon=\"inline-start\" />\n        Loading...\n      </Button>\n      <Button variant=\"outline\" disabled size=\"sm\">\n        <Spinner data-icon=\"inline-start\" />\n        Please wait\n      </Button>\n      <Button variant=\"secondary\" disabled size=\"sm\">\n        <Spinner data-icon=\"inline-start\" />\n        Processing\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/spinner-custom.tsx",
    "content": "import { LoaderIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <LoaderIcon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport function SpinnerCustom() {\n  return (\n    <div className=\"flex items-center gap-4\">\n      <Spinner />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/spinner-demo.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui/item\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport function SpinnerDemo() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-4 [--radius:1rem]\">\n      <Item variant=\"muted\">\n        <ItemMedia>\n          <Spinner />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle className=\"line-clamp-1\">Processing payment...</ItemTitle>\n        </ItemContent>\n        <ItemContent className=\"flex-none justify-end\">\n          <span className=\"text-sm tabular-nums\">$100.00</span>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/spinner-empty.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/examples/radix/ui/empty\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport function SpinnerEmpty() {\n  return (\n    <Empty className=\"w-full\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <Spinner />\n        </EmptyMedia>\n        <EmptyTitle>Processing your request</EmptyTitle>\n        <EmptyDescription>\n          Please wait while we process your request. Do not refresh the page.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          Cancel\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/spinner-input-group.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupTextarea,\n} from \"@/examples/radix/ui/input-group\"\nimport { Spinner } from \"@/examples/radix/ui/spinner\"\nimport { ArrowUpIcon } from \"lucide-react\"\n\nexport function SpinnerInputGroup() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Send a message...\" disabled />\n        <InputGroupAddon align=\"inline-end\">\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder=\"Send a message...\" disabled />\n        <InputGroupAddon align=\"block-end\">\n          <Spinner /> Validating...\n          <InputGroupButton className=\"ml-auto\" variant=\"default\">\n            <ArrowUpIcon />\n            <span className=\"sr-only\">Send</span>\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/spinner-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Item,\n  ItemContent,\n  ItemMedia,\n  ItemTitle,\n} from \"@/examples/radix/ui-rtl/item\"\nimport { Spinner } from \"@/examples/radix/ui-rtl/spinner\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"Processing payment...\",\n      amount: \"$100.00\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"جاري معالجة الدفع...\",\n      amount: \"١٠٠.٠٠ دولار\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"מעבד תשלום...\",\n      amount: \"$100.00\",\n    },\n  },\n}\n\nexport function SpinnerRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div\n      className=\"flex w-full max-w-xs flex-col gap-4 [--radius:1rem]\"\n      dir={dir}\n    >\n      <Item variant=\"muted\" dir={dir}>\n        <ItemMedia>\n          <Spinner />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle className=\"line-clamp-1\">{t.title}</ItemTitle>\n        </ItemContent>\n        <ItemContent className=\"flex-none justify-end\">\n          <span className=\"text-sm tabular-nums\">{t.amount}</span>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/spinner-size.tsx",
    "content": "import { Spinner } from \"@/examples/radix/ui/spinner\"\n\nexport function SpinnerSize() {\n  return (\n    <div className=\"flex items-center gap-6\">\n      <Spinner className=\"size-3\" />\n      <Spinner className=\"size-4\" />\n      <Spinner className=\"size-6\" />\n      <Spinner className=\"size-8\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/switch-choice-card.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldTitle,\n} from \"@/examples/radix/ui/field\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\n\nexport function SwitchChoiceCard() {\n  return (\n    <FieldGroup className=\"w-full max-w-sm\">\n      <FieldLabel htmlFor=\"switch-share\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Share across devices</FieldTitle>\n            <FieldDescription>\n              Focus is shared across devices, and turns off when you leave the\n              app.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-share\" />\n        </Field>\n      </FieldLabel>\n      <FieldLabel htmlFor=\"switch-notifications\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Enable notifications</FieldTitle>\n            <FieldDescription>\n              Receive notifications when focus mode is enabled or disabled.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-notifications\" defaultChecked />\n        </Field>\n      </FieldLabel>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/switch-demo.tsx",
    "content": "import { Label } from \"@/examples/radix/ui/label\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\n\nexport function SwitchDemo() {\n  return (\n    <div className=\"flex items-center space-x-2\">\n      <Switch id=\"airplane-mode\" />\n      <Label htmlFor=\"airplane-mode\">Airplane Mode</Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/switch-description.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\n\nexport function SwitchDescription() {\n  return (\n    <Field orientation=\"horizontal\" className=\"max-w-sm\">\n      <FieldContent>\n        <FieldLabel htmlFor=\"switch-focus-mode\">\n          Share across devices\n        </FieldLabel>\n        <FieldDescription>\n          Focus is shared across devices, and turns off when you leave the app.\n        </FieldDescription>\n      </FieldContent>\n      <Switch id=\"switch-focus-mode\" />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/switch-disabled.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\n\nexport function SwitchDisabled() {\n  return (\n    <Field orientation=\"horizontal\" data-disabled className=\"w-fit\">\n      <Switch id=\"switch-disabled-unchecked\" disabled />\n      <FieldLabel htmlFor=\"switch-disabled-unchecked\">Disabled</FieldLabel>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/switch-invalid.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/radix/ui/field\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\n\nexport function SwitchInvalid() {\n  return (\n    <Field orientation=\"horizontal\" className=\"max-w-sm\" data-invalid>\n      <FieldContent>\n        <FieldLabel htmlFor=\"switch-terms\">\n          Accept terms and conditions\n        </FieldLabel>\n        <FieldDescription>\n          You must accept the terms and conditions to continue.\n        </FieldDescription>\n      </FieldContent>\n      <Switch id=\"switch-terms\" aria-invalid />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/switch-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/radix/ui-rtl/field\"\nimport { Switch } from \"@/examples/radix/ui-rtl/switch\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Share across devices\",\n      description:\n        \"Focus is shared across devices, and turns off when you leave the app.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"المشاركة عبر الأجهزة\",\n      description:\n        \"يتم مشاركة التركيز عبر الأجهزة، ويتم إيقاف تشغيله عند مغادرة التطبيق.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"שיתוף בין מכשירים\",\n      description: \"המיקוד משותף בין מכשירים, וכבה כשאתה עוזב את האפליקציה.\",\n    },\n  },\n}\n\nexport function SwitchRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Field orientation=\"horizontal\" className=\"max-w-sm\" dir={dir}>\n      <FieldContent>\n        <FieldLabel htmlFor=\"switch-focus-mode-rtl\" dir={dir}>\n          {t.label}\n        </FieldLabel>\n        <FieldDescription dir={dir}>{t.description}</FieldDescription>\n      </FieldContent>\n      <Switch id=\"switch-focus-mode-rtl\" dir={dir} />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/switch-sizes.tsx",
    "content": "import { Field, FieldGroup, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Switch } from \"@/examples/radix/ui/switch\"\n\nexport function SwitchSizes() {\n  return (\n    <FieldGroup className=\"w-full max-w-[10rem]\">\n      <Field orientation=\"horizontal\">\n        <Switch id=\"switch-size-sm\" size=\"sm\" />\n        <FieldLabel htmlFor=\"switch-size-sm\">Small</FieldLabel>\n      </Field>\n      <Field orientation=\"horizontal\">\n        <Switch id=\"switch-size-default\" size=\"default\" />\n        <FieldLabel htmlFor=\"switch-size-default\">Default</FieldLabel>\n      </Field>\n    </FieldGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/table-actions.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/examples/radix/ui/dropdown-menu\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/radix/ui/table\"\nimport { MoreHorizontalIcon } from \"lucide-react\"\n\nexport function TableActions() {\n  return (\n    <Table>\n      <TableHeader>\n        <TableRow>\n          <TableHead>Product</TableHead>\n          <TableHead>Price</TableHead>\n          <TableHead className=\"text-right\">Actions</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        <TableRow>\n          <TableCell className=\"font-medium\">Wireless Mouse</TableCell>\n          <TableCell>$29.99</TableCell>\n          <TableCell className=\"text-right\">\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n                  <MoreHorizontalIcon />\n                  <span className=\"sr-only\">Open menu</span>\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\">\n                <DropdownMenuItem>Edit</DropdownMenuItem>\n                <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  Delete\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </TableCell>\n        </TableRow>\n        <TableRow>\n          <TableCell className=\"font-medium\">Mechanical Keyboard</TableCell>\n          <TableCell>$129.99</TableCell>\n          <TableCell className=\"text-right\">\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n                  <MoreHorizontalIcon />\n                  <span className=\"sr-only\">Open menu</span>\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\">\n                <DropdownMenuItem>Edit</DropdownMenuItem>\n                <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  Delete\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </TableCell>\n        </TableRow>\n        <TableRow>\n          <TableCell className=\"font-medium\">USB-C Hub</TableCell>\n          <TableCell>$49.99</TableCell>\n          <TableCell className=\"text-right\">\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n                  <MoreHorizontalIcon />\n                  <span className=\"sr-only\">Open menu</span>\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\">\n                <DropdownMenuItem>Edit</DropdownMenuItem>\n                <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  Delete\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </TableCell>\n        </TableRow>\n      </TableBody>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/table-demo.tsx",
    "content": "import {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/radix/ui/table\"\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$250.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$150.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$350.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$450.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$550.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$200.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$300.00\",\n    paymentMethod: \"Credit Card\",\n  },\n]\n\nexport function TableDemo() {\n  return (\n    <Table>\n      <TableCaption>A list of your recent invoices.</TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">Invoice</TableHead>\n          <TableHead>Status</TableHead>\n          <TableHead>Method</TableHead>\n          <TableHead className=\"text-right\">Amount</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {invoices.map((invoice) => (\n          <TableRow key={invoice.invoice}>\n            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n            <TableCell>{invoice.paymentStatus}</TableCell>\n            <TableCell>{invoice.paymentMethod}</TableCell>\n            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n      <TableFooter>\n        <TableRow>\n          <TableCell colSpan={3}>Total</TableCell>\n          <TableCell className=\"text-right\">$2,500.00</TableCell>\n        </TableRow>\n      </TableFooter>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/table-footer.tsx",
    "content": "import {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/radix/ui/table\"\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$250.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$150.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$350.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$450.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$550.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$200.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$300.00\",\n    paymentMethod: \"Credit Card\",\n  },\n]\n\nexport function TableFooterExample() {\n  return (\n    <Table>\n      <TableCaption>A list of your recent invoices.</TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">Invoice</TableHead>\n          <TableHead>Status</TableHead>\n          <TableHead>Method</TableHead>\n          <TableHead className=\"text-right\">Amount</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {invoices.slice(0, 3).map((invoice) => (\n          <TableRow key={invoice.invoice}>\n            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n            <TableCell>{invoice.paymentStatus}</TableCell>\n            <TableCell>{invoice.paymentMethod}</TableCell>\n            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n      <TableFooter>\n        <TableRow>\n          <TableCell colSpan={3}>Total</TableCell>\n          <TableCell className=\"text-right\">$2,500.00</TableCell>\n        </TableRow>\n      </TableFooter>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/table-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/examples/radix/ui-rtl/table\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      caption: \"A list of your recent invoices.\",\n      invoice: \"Invoice\",\n      status: \"Status\",\n      method: \"Method\",\n      amount: \"Amount\",\n      paid: \"Paid\",\n      pending: \"Pending\",\n      unpaid: \"Unpaid\",\n      creditCard: \"Credit Card\",\n      paypal: \"PayPal\",\n      bankTransfer: \"Bank Transfer\",\n      total: \"Total\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      caption: \"قائمة بفواتيرك الأخيرة.\",\n      invoice: \"الفاتورة\",\n      status: \"الحالة\",\n      method: \"الطريقة\",\n      amount: \"المبلغ\",\n      paid: \"مدفوع\",\n      pending: \"قيد الانتظار\",\n      unpaid: \"غير مدفوع\",\n      creditCard: \"بطاقة ائتمانية\",\n      paypal: \"PayPal\",\n      bankTransfer: \"تحويل بنكي\",\n      total: \"المجموع\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      caption: \"רשימת החשבוניות האחרונות שלך.\",\n      invoice: \"חשבונית\",\n      status: \"סטטוס\",\n      method: \"שיטה\",\n      amount: \"סכום\",\n      paid: \"שולם\",\n      pending: \"ממתין\",\n      unpaid: \"לא שולם\",\n      creditCard: \"כרטיס אשראי\",\n      paypal: \"PayPal\",\n      bankTransfer: \"העברה בנקאית\",\n      total: 'סה\"כ',\n    },\n  },\n}\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"paid\" as const,\n    totalAmount: \"$250.00\",\n    paymentMethod: \"creditCard\" as const,\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"pending\" as const,\n    totalAmount: \"$150.00\",\n    paymentMethod: \"paypal\" as const,\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"unpaid\" as const,\n    totalAmount: \"$350.00\",\n    paymentMethod: \"bankTransfer\" as const,\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"paid\" as const,\n    totalAmount: \"$450.00\",\n    paymentMethod: \"creditCard\" as const,\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"paid\" as const,\n    totalAmount: \"$550.00\",\n    paymentMethod: \"paypal\" as const,\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"pending\" as const,\n    totalAmount: \"$200.00\",\n    paymentMethod: \"bankTransfer\" as const,\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"unpaid\" as const,\n    totalAmount: \"$300.00\",\n    paymentMethod: \"creditCard\" as const,\n  },\n]\n\nexport function TableRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Table dir={dir}>\n      <TableCaption>{t.caption}</TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">{t.invoice}</TableHead>\n          <TableHead>{t.status}</TableHead>\n          <TableHead>{t.method}</TableHead>\n          <TableHead className=\"text-right\">{t.amount}</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {invoices.map((invoice) => (\n          <TableRow key={invoice.invoice}>\n            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n            <TableCell>{t[invoice.paymentStatus]}</TableCell>\n            <TableCell>{t[invoice.paymentMethod]}</TableCell>\n            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n      <TableFooter>\n        <TableRow>\n          <TableCell colSpan={3}>{t.total}</TableCell>\n          <TableCell className=\"text-right\">$2,500.00</TableCell>\n        </TableRow>\n      </TableFooter>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tabs-demo.tsx",
    "content": "import {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui/card\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/examples/radix/ui/tabs\"\n\nexport function TabsDemo() {\n  return (\n    <Tabs defaultValue=\"overview\" className=\"w-[400px]\">\n      <TabsList>\n        <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n        <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n        <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n        <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n      </TabsList>\n      <TabsContent value=\"overview\">\n        <Card>\n          <CardHeader>\n            <CardTitle>Overview</CardTitle>\n            <CardDescription>\n              View your key metrics and recent project activity. Track progress\n              across all your active projects.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            You have 12 active projects and 3 pending tasks.\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"analytics\">\n        <Card>\n          <CardHeader>\n            <CardTitle>Analytics</CardTitle>\n            <CardDescription>\n              Track performance and user engagement metrics. Monitor trends and\n              identify growth opportunities.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            Page views are up 25% compared to last month.\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"reports\">\n        <Card>\n          <CardHeader>\n            <CardTitle>Reports</CardTitle>\n            <CardDescription>\n              Generate and download your detailed reports. Export data in\n              multiple formats for analysis.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            You have 5 reports ready and available to export.\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"settings\">\n        <Card>\n          <CardHeader>\n            <CardTitle>Settings</CardTitle>\n            <CardDescription>\n              Manage your account preferences and options. Customize your\n              experience to fit your needs.\n            </CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            Configure notifications, security, and themes.\n          </CardContent>\n        </Card>\n      </TabsContent>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tabs-disabled.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/examples/radix/ui/tabs\"\n\nexport function TabsDisabled() {\n  return (\n    <Tabs defaultValue=\"home\">\n      <TabsList>\n        <TabsTrigger value=\"home\">Home</TabsTrigger>\n        <TabsTrigger value=\"settings\" disabled>\n          Disabled\n        </TabsTrigger>\n      </TabsList>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tabs-icons.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/examples/radix/ui/tabs\"\nimport { AppWindowIcon, CodeIcon } from \"lucide-react\"\n\nexport function TabsIcons() {\n  return (\n    <Tabs defaultValue=\"preview\">\n      <TabsList>\n        <TabsTrigger value=\"preview\">\n          <AppWindowIcon />\n          Preview\n        </TabsTrigger>\n        <TabsTrigger value=\"code\">\n          <CodeIcon />\n          Code\n        </TabsTrigger>\n      </TabsList>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tabs-line.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/examples/radix/ui/tabs\"\n\nexport function TabsLine() {\n  return (\n    <Tabs defaultValue=\"overview\">\n      <TabsList variant=\"line\">\n        <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n        <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n        <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n      </TabsList>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tabs-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/examples/radix/ui-rtl/card\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/examples/radix/ui-rtl/tabs\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      overview: \"Overview\",\n      analytics: \"Analytics\",\n      reports: \"Reports\",\n      settings: \"Settings\",\n      overviewTitle: \"Overview\",\n      overviewDesc:\n        \"View your key metrics and recent project activity. Track progress across all your active projects.\",\n      overviewContent: \"You have 12 active projects and 3 pending tasks.\",\n      analyticsTitle: \"Analytics\",\n      analyticsDesc:\n        \"Track performance and user engagement metrics. Monitor trends and identify growth opportunities.\",\n      analyticsContent: \"Page views are up 25% compared to last month.\",\n      reportsTitle: \"Reports\",\n      reportsDesc:\n        \"Generate and download your detailed reports. Export data in multiple formats for analysis.\",\n      reportsContent: \"You have 5 reports ready and available to export.\",\n      settingsTitle: \"Settings\",\n      settingsDesc:\n        \"Manage your account preferences and options. Customize your experience to fit your needs.\",\n      settingsContent: \"Configure notifications, security, and themes.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      overview: \"نظرة عامة\",\n      analytics: \"التحليلات\",\n      reports: \"التقارير\",\n      settings: \"الإعدادات\",\n      overviewTitle: \"نظرة عامة\",\n      overviewDesc:\n        \"عرض مقاييسك الرئيسية وأنشطة المشروع الأخيرة. تتبع التقدم عبر جميع مشاريعك النشطة.\",\n      overviewContent: \"لديك ١٢ مشروعًا نشطًا و٣ مهام معلقة.\",\n      analyticsTitle: \"التحليلات\",\n      analyticsDesc:\n        \"تتبع مقاييس الأداء ومشاركة المستخدمين. راقب الاتجاهات وحدد فرص النمو.\",\n      analyticsContent: \"زادت مشاهدات الصفحة بنسبة ٢٥٪ مقارنة بالشهر الماضي.\",\n      reportsTitle: \"التقارير\",\n      reportsDesc:\n        \"إنشاء وتنزيل تقاريرك التفصيلية. تصدير البيانات بتنسيقات متعددة للتحليل.\",\n      reportsContent: \"لديك ٥ تقارير جاهزة ومتاحة للتصدير.\",\n      settingsTitle: \"الإعدادات\",\n      settingsDesc:\n        \"إدارة تفضيلات حسابك وخياراته. تخصيص تجربتك لتناسب احتياجاتك.\",\n      settingsContent: \"تكوين الإشعارات والأمان والسمات.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      overview: \"סקירה כללית\",\n      analytics: \"אנליטיקה\",\n      reports: \"דוחות\",\n      settings: \"הגדרות\",\n      overviewTitle: \"סקירה כללית\",\n      overviewDesc:\n        \"הצג את המדדים העיקריים שלך ופעילות הפרויקט האחרונה. עקוב אחר התקדמות בכל הפרויקטים הפעילים שלך.\",\n      overviewContent: \"יש לך 12 פרויקטים פעילים ו-3 משימות ממתינות.\",\n      analyticsTitle: \"אנליטיקה\",\n      analyticsDesc:\n        \"עקוב אחר ביצועים ומדדי מעורבות משתמשים. עקוב אחר מגמות וזהה הזדמנויות צמיחה.\",\n      analyticsContent: \"צפיות בדף עלו ב-25% בהשוואה לחודש שעבר.\",\n      reportsTitle: \"דוחות\",\n      reportsDesc:\n        \"צור והורד את הדוחות המפורטים שלך. ייצא נתונים בפורמטים מרובים לניתוח.\",\n      reportsContent: \"יש לך 5 דוחות מוכנים וזמינים לייצוא.\",\n      settingsTitle: \"הגדרות\",\n      settingsDesc:\n        \"נהל את העדפות החשבון והאפשרויות שלך. התאם אישית את החוויה שלך כך שתתאים לצרכים שלך.\",\n      settingsContent: \"הגדר התראות, אבטחה וערכות נושא.\",\n    },\n  },\n}\n\nexport function TabsRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Tabs defaultValue=\"overview\" className=\"w-full max-w-sm\" dir={dir}>\n      <TabsList dir={dir}>\n        <TabsTrigger value=\"overview\">{t.overview}</TabsTrigger>\n        <TabsTrigger value=\"analytics\">{t.analytics}</TabsTrigger>\n        <TabsTrigger value=\"reports\">{t.reports}</TabsTrigger>\n        <TabsTrigger value=\"settings\">{t.settings}</TabsTrigger>\n      </TabsList>\n      <TabsContent value=\"overview\">\n        <Card dir={dir}>\n          <CardHeader>\n            <CardTitle>{t.overviewTitle}</CardTitle>\n            <CardDescription>{t.overviewDesc}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            {t.overviewContent}\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"analytics\">\n        <Card dir={dir}>\n          <CardHeader>\n            <CardTitle>{t.analyticsTitle}</CardTitle>\n            <CardDescription>{t.analyticsDesc}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            {t.analyticsContent}\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"reports\">\n        <Card dir={dir}>\n          <CardHeader>\n            <CardTitle>{t.reportsTitle}</CardTitle>\n            <CardDescription>{t.reportsDesc}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            {t.reportsContent}\n          </CardContent>\n        </Card>\n      </TabsContent>\n      <TabsContent value=\"settings\">\n        <Card dir={dir}>\n          <CardHeader>\n            <CardTitle>{t.settingsTitle}</CardTitle>\n            <CardDescription>{t.settingsDesc}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"text-sm text-muted-foreground\">\n            {t.settingsContent}\n          </CardContent>\n        </Card>\n      </TabsContent>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tabs-vertical.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/examples/radix/ui/tabs\"\n\nexport function TabsVertical() {\n  return (\n    <Tabs defaultValue=\"account\" orientation=\"vertical\">\n      <TabsList>\n        <TabsTrigger value=\"account\">Account</TabsTrigger>\n        <TabsTrigger value=\"password\">Password</TabsTrigger>\n        <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n      </TabsList>\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/textarea-button.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\n\nexport function TextareaButton() {\n  return (\n    <div className=\"grid w-full gap-2\">\n      <Textarea placeholder=\"Type your message here.\" />\n      <Button>Send message</Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/textarea-demo.tsx",
    "content": "import { Textarea } from \"@/examples/radix/ui/textarea\"\n\nexport default function TextareaDemo() {\n  return <Textarea placeholder=\"Type your message here.\" />\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/textarea-disabled.tsx",
    "content": "import { Field, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\n\nexport function TextareaDisabled() {\n  return (\n    <Field data-disabled>\n      <FieldLabel htmlFor=\"textarea-disabled\">Message</FieldLabel>\n      <Textarea\n        id=\"textarea-disabled\"\n        placeholder=\"Type your message here.\"\n        disabled\n      />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/textarea-field.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\n\nexport function TextareaField() {\n  return (\n    <Field>\n      <FieldLabel htmlFor=\"textarea-message\">Message</FieldLabel>\n      <FieldDescription>Enter your message below.</FieldDescription>\n      <Textarea id=\"textarea-message\" placeholder=\"Type your message here.\" />\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/textarea-invalid.tsx",
    "content": "import { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\n\nexport function TextareaInvalid() {\n  return (\n    <Field data-invalid>\n      <FieldLabel htmlFor=\"textarea-invalid\">Message</FieldLabel>\n      <Textarea\n        id=\"textarea-invalid\"\n        placeholder=\"Type your message here.\"\n        aria-invalid\n      />\n      <FieldDescription>Please enter a valid message.</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/textarea-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/examples/radix/ui-rtl/field\"\nimport { Textarea } from \"@/examples/radix/ui-rtl/textarea\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Feedback\",\n      placeholder: \"Your feedback helps us improve...\",\n      description: \"Share your thoughts about our service.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"التعليقات\",\n      placeholder: \"تعليقاتك تساعدنا على التحسين...\",\n      description: \"شاركنا أفكارك حول خدمتنا.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"משוב\",\n      placeholder: \"המשוב שלך עוזר לנו להשתפר...\",\n      description: \"שתף את מחשבותיך על השירות שלנו.\",\n    },\n  },\n}\n\nexport default function TextareaRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Field className=\"w-full max-w-xs\" dir={dir}>\n      <FieldLabel htmlFor=\"feedback\" dir={dir}>\n        {t.label}\n      </FieldLabel>\n      <Textarea id=\"feedback\" placeholder={t.placeholder} dir={dir} rows={4} />\n      <FieldDescription dir={dir}>{t.description}</FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-demo.tsx",
    "content": "import { Toggle } from \"@/examples/radix/ui/toggle\"\nimport { BookmarkIcon } from \"lucide-react\"\n\nexport function ToggleDemo() {\n  return (\n    <Toggle aria-label=\"Toggle bookmark\" size=\"sm\" variant=\"outline\">\n      <BookmarkIcon className=\"group-data-[state=on]/toggle:fill-foreground\" />\n      Bookmark\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-disabled.tsx",
    "content": "import { Toggle } from \"@/examples/radix/ui/toggle\"\n\nexport function ToggleDisabled() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2\">\n      <Toggle aria-label=\"Toggle disabled\" disabled>\n        Disabled\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle disabled outline\" disabled>\n        Disabled\n      </Toggle>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-group-demo.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/radix/ui/toggle-group\"\nimport { Bold, Italic, Underline } from \"lucide-react\"\n\nexport function ToggleGroupDemo() {\n  return (\n    <ToggleGroup variant=\"outline\" type=\"multiple\">\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-group-disabled.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/radix/ui/toggle-group\"\nimport { Bold, Italic, Underline } from \"lucide-react\"\n\nexport function ToggleGroupDisabled() {\n  return (\n    <ToggleGroup disabled type=\"multiple\">\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-group-font-weight-selector.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Field, FieldDescription, FieldLabel } from \"@/examples/radix/ui/field\"\nimport { ToggleGroup, ToggleGroupItem } from \"@/examples/radix/ui/toggle-group\"\n\nexport function ToggleGroupFontWeightSelector() {\n  const [fontWeight, setFontWeight] = React.useState(\"normal\")\n  return (\n    <Field>\n      <FieldLabel>Font Weight</FieldLabel>\n      <ToggleGroup\n        type=\"single\"\n        value={fontWeight}\n        onValueChange={(value) => setFontWeight(value)}\n        variant=\"outline\"\n        spacing={2}\n        size=\"lg\"\n      >\n        <ToggleGroupItem\n          value=\"light\"\n          aria-label=\"Light\"\n          className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n        >\n          <span className=\"text-2xl leading-none font-light\">Aa</span>\n          <span className=\"text-xs text-muted-foreground\">Light</span>\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"normal\"\n          aria-label=\"Normal\"\n          className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n        >\n          <span className=\"text-2xl leading-none font-normal\">Aa</span>\n          <span className=\"text-xs text-muted-foreground\">Normal</span>\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"medium\"\n          aria-label=\"Medium\"\n          className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n        >\n          <span className=\"text-2xl leading-none font-medium\">Aa</span>\n          <span className=\"text-xs text-muted-foreground\">Medium</span>\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"bold\"\n          aria-label=\"Bold\"\n          className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n        >\n          <span className=\"text-2xl leading-none font-bold\">Aa</span>\n          <span className=\"text-xs text-muted-foreground\">Bold</span>\n        </ToggleGroupItem>\n      </ToggleGroup>\n      <FieldDescription>\n        Use{\" \"}\n        <code className=\"rounded-md bg-muted px-1 py-0.5 font-mono\">\n          font-{fontWeight}\n        </code>{\" \"}\n        to set the font weight.\n      </FieldDescription>\n    </Field>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-group-outline.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/radix/ui/toggle-group\"\n\nexport function ToggleGroupOutline() {\n  return (\n    <ToggleGroup variant=\"outline\" type=\"single\" defaultValue=\"all\">\n      <ToggleGroupItem value=\"all\" aria-label=\"Toggle all\">\n        All\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"missed\" aria-label=\"Toggle missed\">\n        Missed\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-group-rtl.tsx",
    "content": "\"use client\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/examples/radix/ui-rtl/toggle-group\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      list: \"List\",\n      grid: \"Grid\",\n      cards: \"Cards\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      list: \"قائمة\",\n      grid: \"شبكة\",\n      cards: \"بطاقات\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      list: \"רשימה\",\n      grid: \"רשת\",\n      cards: \"כרטיסים\",\n    },\n  },\n}\n\nexport function ToggleGroupRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <ToggleGroup variant=\"outline\" type=\"single\" defaultValue=\"list\">\n      <ToggleGroupItem value=\"list\" aria-label={t.list}>\n        {t.list}\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"grid\" aria-label={t.grid}>\n        {t.grid}\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"cards\" aria-label={t.cards}>\n        {t.cards}\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-group-sizes.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/radix/ui/toggle-group\"\n\nexport function ToggleGroupSizes() {\n  return (\n    <div className=\"flex flex-col gap-4\">\n      <ToggleGroup type=\"single\" size=\"sm\" defaultValue=\"top\" variant=\"outline\">\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n      <ToggleGroup type=\"single\" defaultValue=\"top\" variant=\"outline\">\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-group-spacing.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/radix/ui/toggle-group\"\n\nexport function ToggleGroupSpacing() {\n  return (\n    <ToggleGroup\n      type=\"single\"\n      size=\"sm\"\n      defaultValue=\"top\"\n      variant=\"outline\"\n      spacing={2}\n    >\n      <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n        Top\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n        Bottom\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n        Left\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n        Right\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-group-vertical.tsx",
    "content": "import { ToggleGroup, ToggleGroupItem } from \"@/examples/radix/ui/toggle-group\"\nimport { BoldIcon, ItalicIcon, UnderlineIcon } from \"lucide-react\"\n\nexport function ToggleGroupVertical() {\n  return (\n    <ToggleGroup\n      type=\"multiple\"\n      orientation=\"vertical\"\n      spacing={1}\n      defaultValue={[\"bold\", \"italic\"]}\n    >\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <BoldIcon />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <ItalicIcon />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n        <UnderlineIcon />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-outline.tsx",
    "content": "import { Toggle } from \"@/examples/radix/ui/toggle\"\nimport { BoldIcon, ItalicIcon } from \"lucide-react\"\n\nexport function ToggleOutline() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2\">\n      <Toggle variant=\"outline\" aria-label=\"Toggle italic\">\n        <ItalicIcon />\n        Italic\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle bold\">\n        <BoldIcon />\n        Bold\n      </Toggle>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Toggle } from \"@/examples/radix/ui-rtl/toggle\"\nimport { BookmarkIcon } from \"lucide-react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      label: \"Bookmark\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      label: \"إشارة مرجعية\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      label: \"סימנייה\",\n    },\n  },\n}\n\nexport function ToggleRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <Toggle aria-label=\"Toggle bookmark\" size=\"sm\" variant=\"outline\" dir={dir}>\n      <BookmarkIcon className=\"group-aria-pressed/toggle:fill-foreground\" />\n      {t.label}\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-sizes.tsx",
    "content": "import { Toggle } from \"@/examples/radix/ui/toggle\"\n\nexport function ToggleSizes() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2\">\n      <Toggle variant=\"outline\" aria-label=\"Toggle small\" size=\"sm\">\n        Small\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle default\" size=\"default\">\n        Default\n      </Toggle>\n      <Toggle variant=\"outline\" aria-label=\"Toggle large\" size=\"lg\">\n        Large\n      </Toggle>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/toggle-text.tsx",
    "content": "import { Toggle } from \"@/examples/radix/ui/toggle\"\nimport { ItalicIcon } from \"lucide-react\"\n\nexport function ToggleText() {\n  return (\n    <Toggle aria-label=\"Toggle italic\">\n      <ItalicIcon />\n      Italic\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tooltip-demo.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\n\nexport function TooltipDemo() {\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <Button variant=\"outline\">Hover</Button>\n      </TooltipTrigger>\n      <TooltipContent>\n        <p>Add to library</p>\n      </TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tooltip-disabled.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\n\nexport function TooltipDisabled() {\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <span className=\"inline-block w-fit\">\n          <Button variant=\"outline\" disabled>\n            Disabled\n          </Button>\n        </span>\n      </TooltipTrigger>\n      <TooltipContent>\n        <p>This feature is currently unavailable</p>\n      </TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tooltip-keyboard.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport { Kbd } from \"@/examples/radix/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { SaveIcon } from \"lucide-react\"\n\nexport function TooltipKeyboard() {\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <Button variant=\"outline\" size=\"icon-sm\">\n          <SaveIcon />\n        </Button>\n      </TooltipTrigger>\n      <TooltipContent>\n        Save Changes <Kbd>S</Kbd>\n      </TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tooltip-rtl.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui-rtl/tooltip\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      content: \"Add to library\",\n      left: \"Left\",\n      top: \"Top\",\n      bottom: \"Bottom\",\n      right: \"Right\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      content: \"إضافة إلى المكتبة\",\n      left: \"يسار\",\n      top: \"أعلى\",\n      bottom: \"أسفل\",\n      right: \"يمين\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      content: \"הוסף לספרייה\",\n      left: \"שמאל\",\n      top: \"למעלה\",\n      bottom: \"למטה\",\n      right: \"ימין\",\n    },\n  },\n}\n\nconst sides = [\"left\", \"top\", \"bottom\", \"right\"] as const\n\nexport function TooltipRtl() {\n  const { t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {sides.map((side) => (\n        <Tooltip key={side}>\n          <TooltipTrigger asChild>\n            <Button variant=\"outline\" className=\"w-fit capitalize\">\n              {t[side]}\n            </Button>\n          </TooltipTrigger>\n          <TooltipContent side={side}>{t.content}</TooltipContent>\n        </Tooltip>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/tooltip-sides.tsx",
    "content": "import { Button } from \"@/examples/radix/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\n\nexport function TooltipSides() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {([\"left\", \"top\", \"bottom\", \"right\"] as const).map((side) => (\n        <Tooltip key={side}>\n          <TooltipTrigger asChild>\n            <Button variant=\"outline\" className=\"w-fit capitalize\">\n              {side}\n            </Button>\n          </TooltipTrigger>\n          <TooltipContent side={side}>\n            <p>Add to library</p>\n          </TooltipContent>\n        </Tooltip>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-blockquote.tsx",
    "content": "export function TypographyBlockquote() {\n  return (\n    <blockquote className=\"mt-6 border-l-2 pl-6 italic\">\n      &quot;After all,&quot; he said, &quot;everyone enjoys a good joke, so\n      it&apos;s only fair that they should pay for the privilege.&quot;\n    </blockquote>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-demo.tsx",
    "content": "export function TypographyDemo() {\n  return (\n    <div>\n      <h1 className=\"scroll-m-20 text-4xl font-extrabold tracking-tight text-balance\">\n        Taxing Laughter: The Joke Tax Chronicles\n      </h1>\n      <p className=\"text-xl leading-7 text-muted-foreground [&:not(:first-child)]:mt-6\">\n        Once upon a time, in a far-off land, there was a very lazy king who\n        spent all day lounging on his throne. One day, his advisors came to him\n        with a problem: the kingdom was running out of money.\n      </p>\n      <h2 className=\"mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0\">\n        The King&apos;s Plan\n      </h2>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king thought long and hard, and finally came up with{\" \"}\n        <a\n          href=\"#\"\n          className=\"font-medium text-primary underline underline-offset-4\"\n        >\n          a brilliant plan\n        </a>\n        : he would tax the jokes in the kingdom.\n      </p>\n      <blockquote className=\"mt-6 border-l-2 pl-6 italic\">\n        &quot;After all,&quot; he said, &quot;everyone enjoys a good joke, so\n        it&apos;s only fair that they should pay for the privilege.&quot;\n      </blockquote>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        The Joke Tax\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king&apos;s subjects were not amused. They grumbled and complained,\n        but the king was firm:\n      </p>\n      <ul className=\"my-6 ml-6 list-disc [&>li]:mt-2\">\n        <li>1st level of puns: 5 gold coins</li>\n        <li>2nd level of jokes: 10 gold coins</li>\n        <li>3rd level of one-liners : 20 gold coins</li>\n      </ul>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        As a result, people stopped telling jokes, and the kingdom fell into a\n        gloom. But there was one person who refused to let the king&apos;s\n        foolishness get him down: a court jester named Jokester.\n      </p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        Jokester&apos;s Revolt\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        Jokester began sneaking into the castle in the middle of the night and\n        leaving jokes all over the place: under the king&apos;s pillow, in his\n        soup, even in the royal toilet. The king was furious, but he\n        couldn&apos;t seem to stop Jokester.\n      </p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        And then, one day, the people of the kingdom discovered that the jokes\n        left by Jokester were so funny that they couldn&apos;t help but laugh.\n        And once they started laughing, they couldn&apos;t stop.\n      </p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        The People&apos;s Rebellion\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The people of the kingdom, feeling uplifted by the laughter, started to\n        tell jokes and puns again, and soon the entire kingdom was in on the\n        joke.\n      </p>\n      <div className=\"my-6 w-full overflow-y-auto\">\n        <table className=\"w-full\">\n          <thead>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n                King&apos;s Treasury\n              </th>\n              <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n                People&apos;s happiness\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Empty\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Overflowing\n              </td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Modest\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Satisfied\n              </td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Full\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Ecstatic\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king, seeing how much happier his subjects were, realized the error\n        of his ways and repealed the joke tax. Jokester was declared a hero, and\n        the kingdom lived happily ever after.\n      </p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The moral of the story is: never underestimate the power of a good laugh\n        and always be careful of bad ideas.\n      </p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-h1.tsx",
    "content": "export function TypographyH1() {\n  return (\n    <h1 className=\"scroll-m-20 text-center text-4xl font-extrabold tracking-tight text-balance\">\n      Taxing Laughter: The Joke Tax Chronicles\n    </h1>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-h2.tsx",
    "content": "export function TypographyH2() {\n  return (\n    <h2 className=\"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\">\n      The People of the Kingdom\n    </h2>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-h3.tsx",
    "content": "export function TypographyH3() {\n  return (\n    <h3 className=\"scroll-m-20 text-2xl font-semibold tracking-tight\">\n      The Joke Tax\n    </h3>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-h4.tsx",
    "content": "export function TypographyH4() {\n  return (\n    <h4 className=\"scroll-m-20 text-xl font-semibold tracking-tight\">\n      People stopped telling jokes\n    </h4>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-inline-code.tsx",
    "content": "export function TypographyInlineCode() {\n  return (\n    <code className=\"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\">\n      @radix-ui/react-alert-dialog\n    </code>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-large.tsx",
    "content": "export function TypographyLarge() {\n  return <div className=\"text-lg font-semibold\">Are you absolutely sure?</div>\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-lead.tsx",
    "content": "export function TypographyLead() {\n  return (\n    <p className=\"text-xl text-muted-foreground\">\n      A modal dialog that interrupts the user with important content and expects\n      a response.\n    </p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-list.tsx",
    "content": "export function TypographyList() {\n  return (\n    <ul className=\"my-6 ml-6 list-disc [&>li]:mt-2\">\n      <li>1st level of puns: 5 gold coins</li>\n      <li>2nd level of jokes: 10 gold coins</li>\n      <li>3rd level of one-liners : 20 gold coins</li>\n    </ul>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-muted.tsx",
    "content": "export function TypographyMuted() {\n  return (\n    <p className=\"text-sm text-muted-foreground\">Enter your email address.</p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-p.tsx",
    "content": "export function TypographyP() {\n  return (\n    <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n      The king, seeing how much happier his subjects were, realized the error of\n      his ways and repealed the joke tax.\n    </p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-rtl.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  useTranslation,\n  type Translations,\n} from \"@/components/language-selector\"\n\nconst translations: Translations = {\n  en: {\n    dir: \"ltr\",\n    values: {\n      title: \"Taxing Laughter: The Joke Tax Chronicles\",\n      leadParagraph:\n        \"Once upon a time, in a far-off land, there was a very lazy king who spent all day lounging on his throne. One day, his advisors came to him with a problem: the kingdom was running out of money.\",\n      kingsPlan: \"The King's Plan\",\n      kingThought: \"The king thought long and hard, and finally came up with\",\n      brilliantPlan: \"a brilliant plan\",\n      taxJokes: \": he would tax the jokes in the kingdom.\",\n      blockquote:\n        '\"After all,\" he said, \"everyone enjoys a good joke, so it\\'s only fair that they should pay for the privilege.\"',\n      jokeTax: \"The Joke Tax\",\n      subjectsNotAmused:\n        \"The king's subjects were not amused. They grumbled and complained, but the king was firm:\",\n      level1: \"1st level of puns: 5 gold coins\",\n      level2: \"2nd level of jokes: 10 gold coins\",\n      level3: \"3rd level of one-liners: 20 gold coins\",\n      stoppedTelling:\n        \"As a result, people stopped telling jokes, and the kingdom fell into a gloom. But there was one person who refused to let the king's foolishness get him down: a court jester named Jokester.\",\n      jokestersRevolt: \"Jokester's Revolt\",\n      sneaking:\n        \"Jokester began sneaking into the castle in the middle of the night and leaving jokes all over the place: under the king's pillow, in his soup, even in the royal toilet. The king was furious, but he couldn't seem to stop Jokester.\",\n      discovered:\n        \"And then, one day, the people of the kingdom discovered that the jokes left by Jokester were so funny that they couldn't help but laugh. And once they started laughing, they couldn't stop.\",\n      peoplesRebellion: \"The People's Rebellion\",\n      uplifted:\n        \"The people of the kingdom, feeling uplifted by the laughter, started to tell jokes and puns again, and soon the entire kingdom was in on the joke.\",\n      kingsTreasury: \"King's Treasury\",\n      peoplesHappiness: \"People's happiness\",\n      empty: \"Empty\",\n      overflowing: \"Overflowing\",\n      modest: \"Modest\",\n      satisfied: \"Satisfied\",\n      full: \"Full\",\n      ecstatic: \"Ecstatic\",\n      realized:\n        \"The king, seeing how much happier his subjects were, realized the error of his ways and repealed the joke tax. Jokester was declared a hero, and the kingdom lived happily ever after.\",\n      moral:\n        \"The moral of the story is: never underestimate the power of a good laugh and always be careful of bad ideas.\",\n    },\n  },\n  ar: {\n    dir: \"rtl\",\n    values: {\n      title: \"فرض الضرائب على الضحك: سجلات ضريبة النكتة\",\n      leadParagraph:\n        \"في قديم الزمان، في أرض بعيدة، كان هناك ملك كسول جداً يقضي يومه كله مستلقياً على عرشه. في أحد الأيام، جاءه مستشاروه بمشكلة: المملكة كانت تنفد من المال.\",\n      kingsPlan: \"خطة الملك\",\n      kingThought: \"فكر الملك طويلاً وبجد، وأخيراً توصل إلى\",\n      brilliantPlan: \"خطة عبقرية\",\n      taxJokes: \": سيفرض ضريبة على النكات في المملكة.\",\n      blockquote:\n        '\"في النهاية،\" قال، \"الجميع يستمتع بنكتة جيدة، لذا من العدل أن يدفعوا مقابل هذا الامتياز.\"',\n      jokeTax: \"ضريبة النكتة\",\n      subjectsNotAmused:\n        \"لم يكن رعايا الملك سعداء. تذمروا واشتكوا، لكن الملك كان حازماً:\",\n      level1: \"المستوى الأول من التورية: 5 قطع ذهبية\",\n      level2: \"المستوى الثاني من النكات: 10 قطع ذهبية\",\n      level3: \"المستوى الثالث من النكات القصيرة: 20 قطعة ذهبية\",\n      stoppedTelling:\n        \"نتيجة لذلك، توقف الناس عن رواية النكات، وغرقت المملكة في الكآبة. لكن كان هناك شخص واحد رفض أن تحبطه حماقة الملك: مهرج البلاط المسمى المازح.\",\n      jokestersRevolt: \"ثورة المازح\",\n      sneaking:\n        \"بدأ المازح يتسلل إلى القلعة في منتصف الليل ويترك النكات في كل مكان: تحت وسادة الملك، في حسائه، حتى في المرحاض الملكي. كان الملك غاضباً، لكنه لم يستطع إيقاف المازح.\",\n      discovered:\n        \"وبعد ذلك، في يوم من الأيام، اكتشف سكان المملكة أن النكات التي تركها المازح كانت مضحكة جداً لدرجة أنهم لم يستطيعوا منع أنفسهم من الضحك. وبمجرد أن بدأوا بالضحك، لم يستطيعوا التوقف.\",\n      peoplesRebellion: \"ثورة الشعب\",\n      uplifted:\n        \"شعر سكان المملكة بالبهجة من الضحك، وبدأوا في رواية النكات والتورية مرة أخرى، وسرعان ما أصبحت المملكة بأكملها جزءاً من النكتة.\",\n      kingsTreasury: \"خزينة الملك\",\n      peoplesHappiness: \"سعادة الشعب\",\n      empty: \"فارغة\",\n      overflowing: \"فائضة\",\n      modest: \"متواضعة\",\n      satisfied: \"راضٍ\",\n      full: \"ممتلئة\",\n      ecstatic: \"منتشٍ\",\n      realized:\n        \"الملك، عندما رأى مدى سعادة رعاياه، أدرك خطأ طرقه وألغى ضريبة النكتة. أُعلن المازح بطلاً، وعاشت المملكة في سعادة دائمة.\",\n      moral:\n        \"مغزى القصة هو: لا تستهن أبداً بقوة الضحك الجيد وكن دائماً حذراً من الأفكار السيئة.\",\n    },\n  },\n  he: {\n    dir: \"rtl\",\n    values: {\n      title: \"מיסוי הצחוק: כרוניקות מס הבדיחה\",\n      leadParagraph:\n        \"היה היה פעם, בארץ רחוקה, מלך עצלן מאוד שבילה את כל היום בהתרווחות על כס מלכותו. יום אחד, יועציו באו אליו עם בעיה: הממלכה נגמר לה הכסף.\",\n      kingsPlan: \"התוכנית של המלך\",\n      kingThought: \"המלך חשב ארוכות וקשות, ולבסוף העלה\",\n      brilliantPlan: \"תוכנית גאונית\",\n      taxJokes: \": הוא ימסה את הבדיחות בממלכה.\",\n      blockquote:\n        '\"אחרי הכל,\" אמר, \"כולם נהנים מבדיחה טובה, אז זה רק הוגן שישלמו על הזכות הזו.\"',\n      jokeTax: \"מס הבדיחה\",\n      subjectsNotAmused:\n        \"נתיני המלך לא היו מרוצים. הם התלוננו והתרעמו, אבל המלך היה נחוש:\",\n      level1: \"רמה ראשונה של משחקי מילים: 5 מטבעות זהב\",\n      level2: \"רמה שנייה של בדיחות: 10 מטבעות זהב\",\n      level3: \"רמה שלישית של חידודים: 20 מטבעות זהב\",\n      stoppedTelling:\n        \"כתוצאה מכך, אנשים הפסיקו לספר בדיחות, והממלכה שקעה בעצב. אבל היה אדם אחד שסירב לתת לטיפשות המלך להפיל אותו: ליצן חצר בשם הבדחן.\",\n      jokestersRevolt: \"המרד של הבדחן\",\n      sneaking:\n        \"הבדחן התחיל להתגנב לטירה באמצע הלילה ולהשאיר בדיחות בכל מקום: מתחת לכרית המלך, במרק שלו, אפילו בשירותים המלכותיים. המלך היה זועם, אבל הוא לא הצליח לעצור את הבדחן.\",\n      discovered:\n        \"ואז, יום אחד, תושבי הממלכה גילו שהבדיחות שהבדחן השאיר היו כל כך מצחיקות שהם לא יכלו להתאפק מלצחוק. וברגע שהתחילו לצחוק, הם לא יכלו להפסיק.\",\n      peoplesRebellion: \"המרד של העם\",\n      uplifted:\n        \"תושבי הממלכה, שהרגישו מרוממים מהצחוק, התחילו לספר בדיחות ומשחקי מילים שוב, ובקרוב כל הממלכה הייתה חלק מהבדיחה.\",\n      kingsTreasury: \"אוצר המלך\",\n      peoplesHappiness: \"אושר העם\",\n      empty: \"ריק\",\n      overflowing: \"גדוש\",\n      modest: \"צנוע\",\n      satisfied: \"מרוצה\",\n      full: \"מלא\",\n      ecstatic: \"אקסטטי\",\n      realized:\n        \"המלך, כשראה כמה מאושרים נתיניו, הבין את טעותו וביטל את מס הבדיחה. הבדחן הוכרז כגיבור, והממלכה חיה באושר לנצח.\",\n      moral:\n        \"המוסר של הסיפור הוא: לעולם אל תזלזל בכוח של צחוק טוב ותמיד היזהר מרעיונות רעים.\",\n    },\n  },\n}\n\nexport function TypographyRtl() {\n  const { dir, t } = useTranslation(translations, \"ar\")\n\n  return (\n    <div dir={dir}>\n      <h1 className=\"scroll-m-20 text-4xl font-extrabold tracking-tight text-balance\">\n        {t.title}\n      </h1>\n      <p className=\"text-xl leading-7 text-muted-foreground [&:not(:first-child)]:mt-6\">\n        {t.leadParagraph}\n      </p>\n      <h2 className=\"mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0\">\n        {t.kingsPlan}\n      </h2>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        {t.kingThought}{\" \"}\n        <a\n          href=\"#\"\n          className=\"font-medium text-primary underline underline-offset-4\"\n        >\n          {t.brilliantPlan}\n        </a>\n        {t.taxJokes}\n      </p>\n      <blockquote className=\"mt-6 border-s-2 ps-6 italic\">\n        {t.blockquote}\n      </blockquote>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        {t.jokeTax}\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        {t.subjectsNotAmused}\n      </p>\n      <ul className=\"my-6 ms-6 list-disc [&>li]:mt-2\">\n        <li>{t.level1}</li>\n        <li>{t.level2}</li>\n        <li>{t.level3}</li>\n      </ul>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.stoppedTelling}</p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        {t.jokestersRevolt}\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.sneaking}</p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.discovered}</p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        {t.peoplesRebellion}\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.uplifted}</p>\n      <div className=\"my-6 w-full overflow-y-auto\">\n        <table className=\"w-full\">\n          <thead>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <th className=\"border px-4 py-2 text-start font-bold\">\n                {t.kingsTreasury}\n              </th>\n              <th className=\"border px-4 py-2 text-start font-bold\">\n                {t.peoplesHappiness}\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-start\">{t.empty}</td>\n              <td className=\"border px-4 py-2 text-start\">{t.overflowing}</td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-start\">{t.modest}</td>\n              <td className=\"border px-4 py-2 text-start\">{t.satisfied}</td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-start\">{t.full}</td>\n              <td className=\"border px-4 py-2 text-start\">{t.ecstatic}</td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.realized}</p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">{t.moral}</p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-small.tsx",
    "content": "export function TypographySmall() {\n  return (\n    <small className=\"text-sm leading-none font-medium\">Email address</small>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/typography-table.tsx",
    "content": "export function TypographyTable() {\n  return (\n    <div className=\"my-6 w-full overflow-y-auto\">\n      <table className=\"w-full\">\n        <thead>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n              King&apos;s Treasury\n            </th>\n            <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n              People&apos;s happiness\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Empty\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Overflowing\n            </td>\n          </tr>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Modest\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Satisfied\n            </td>\n          </tr>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Full\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Ecstatic\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/accordion.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nfunction Accordion({\n  className,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n  return (\n    <AccordionPrimitive.Root\n      data-slot=\"accordion\"\n      className={cn(\"flex w-full flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n  return (\n    <AccordionPrimitive.Item\n      data-slot=\"accordion-item\"\n      className={cn(\"not-last:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        data-slot=\"accordion-trigger\"\n        className={cn(\n          \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <ChevronDownIcon\n          data-slot=\"accordion-trigger-icon\"\n          className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n        />\n        <ChevronUpIcon\n          data-slot=\"accordion-trigger-icon\"\n          className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n        />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\nfunction AccordionContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n  return (\n    <AccordionPrimitive.Content\n      data-slot=\"accordion-content\"\n      className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n      {...props}\n    >\n      <div\n        className={cn(\n          \"h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n          className\n        )}\n      >\n        {children}\n      </div>\n    </AccordionPrimitive.Content>\n  )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/alert-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nfunction AlertDialog({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n  return (\n    <AlertDialogPrimitive.Overlay\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n  size?: \"default\" | \"sm\"\n}) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content\n        data-slot=\"alert-dialog-content\"\n        data-size={size}\n        className={cn(\n          \"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\n        \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\n        \"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\n        \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Action\n        data-slot=\"alert-dialog-action\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = \"outline\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Cancel\n        data-slot=\"alert-dialog-cancel\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst alertVariants = cva(\n  \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-card text-card-foreground\",\n        destructive:\n          \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-action\"\n      className={cn(\"absolute top-2 right-2\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/aspect-ratio.tsx",
    "content": "\"use client\"\n\nimport { AspectRatio as AspectRatioPrimitive } from \"radix-ui\"\n\nfunction AspectRatio({\n  ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n  return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nfunction Avatar({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n  size?: \"default\" | \"sm\" | \"lg\"\n}) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(\n        \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarImage({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\n        \"aspect-square size-full rounded-full object-cover\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"avatar-badge\"\n      className={cn(\n        \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n        \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n        \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n        \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroupCount({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Avatar,\n  AvatarImage,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarBadge,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/badge.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nconst badgeVariants = cva(\n  \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        secondary:\n          \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n        destructive:\n          \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n        outline:\n          \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n        ghost:\n          \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"span\"\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      data-variant={variant}\n      className={cn(badgeVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/breadcrumb.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      aria-label=\"breadcrumb\"\n      data-slot=\"breadcrumb\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n  return (\n    <ol\n      data-slot=\"breadcrumb-list\"\n      className={cn(\n        \"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-item\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbLink({\n  asChild,\n  className,\n  ...props\n}: React.ComponentProps<\"a\"> & {\n  asChild?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"breadcrumb-link\"\n      className={cn(\"transition-colors hover:text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-page\"\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      className={cn(\"font-normal text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\"[&>svg]:size-3.5\", className)}\n      {...props}\n    >\n      {children ?? <ChevronRightIcon className=\"cn-rtl-flip\" />}\n    </li>\n  )\n}\n\nfunction BreadcrumbEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"flex size-5 items-center justify-center [&>svg]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More</span>\n    </span>\n  )\n}\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/button-group.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\nimport { Separator } from \"@/examples/radix/ui/separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nconst buttonGroupVariants = cva(\n  \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n  {\n    variants: {\n      orientation: {\n        horizontal:\n          \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n        vertical:\n          \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"horizontal\",\n    },\n  }\n)\n\nfunction ButtonGroup({\n  className,\n  orientation,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"button-group\"\n      data-orientation={orientation}\n      className={cn(buttonGroupVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupText({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  asChild?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"div\"\n\n  return (\n    <Comp\n      className={cn(\n        \"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupSeparator({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"button-group-separator\"\n      orientation={orientation}\n      className={cn(\n        \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n  buttonGroupVariants,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nconst buttonVariants = cva(\n  \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        outline:\n          \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n        secondary:\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n        ghost:\n          \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n        destructive:\n          \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default:\n          \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n        xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n        sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n        lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n        icon: \"size-8\",\n        \"icon-xs\":\n          \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n        \"icon-sm\":\n          \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n        \"icon-lg\": \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/calendar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button, buttonVariants } from \"@/examples/radix/ui/button\"\nimport {\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n  DayPicker,\n  getDefaultClassNames,\n  type DayButton,\n  type Locale,\n} from \"react-day-picker\"\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  locale,\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      locale={locale}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(locale?.code, { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"cn-calendar-dropdown-root relative rounded-(--cell-radius)\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute inset-0 bg-popover opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\",\n          props.showWeekNumber\n            ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n            : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\n          \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_end\n        ),\n        today: cn(\n          \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <ChevronLeftIcon\n                className={cn(\"cn-rtl-flip size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <ChevronRightIcon\n                className={cn(\"cn-rtl-flip size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n          )\n        },\n        DayButton: ({ ...props }) => (\n          <CalendarDayButton locale={locale} {...props} />\n        ),\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  locale,\n  ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      ref={ref}\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString(locale?.code)}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/card.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Card({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n  return (\n    <div\n      data-slot=\"card\"\n      data-size={size}\n      className={cn(\n        \"group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      className={cn(\n        \"cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn(\n        \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\n        \"flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardAction,\n  CardDescription,\n  CardContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/carousel.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nfunction Carousel({\n  orientation = \"horizontal\",\n  opts,\n  setApi,\n  plugins,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n  const [carouselRef, api] = useEmblaCarousel(\n    {\n      ...opts,\n      axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n    },\n    plugins\n  )\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n  const onSelect = React.useCallback((api: CarouselApi) => {\n    if (!api) return\n    setCanScrollPrev(api.canScrollPrev())\n    setCanScrollNext(api.canScrollNext())\n  }, [])\n\n  const scrollPrev = React.useCallback(() => {\n    api?.scrollPrev()\n  }, [api])\n\n  const scrollNext = React.useCallback(() => {\n    api?.scrollNext()\n  }, [api])\n\n  const handleKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === \"ArrowLeft\") {\n        event.preventDefault()\n        scrollPrev()\n      } else if (event.key === \"ArrowRight\") {\n        event.preventDefault()\n        scrollNext()\n      }\n    },\n    [scrollPrev, scrollNext]\n  )\n\n  React.useEffect(() => {\n    if (!api || !setApi) return\n    setApi(api)\n  }, [api, setApi])\n\n  React.useEffect(() => {\n    if (!api) return\n    onSelect(api)\n    api.on(\"reInit\", onSelect)\n    api.on(\"select\", onSelect)\n\n    return () => {\n      api?.off(\"select\", onSelect)\n    }\n  }, [api, onSelect])\n\n  return (\n    <CarouselContext.Provider\n      value={{\n        carouselRef,\n        api: api,\n        opts,\n        orientation:\n          orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n        scrollPrev,\n        scrollNext,\n        canScrollPrev,\n        canScrollNext,\n      }}\n    >\n      <div\n        onKeyDownCapture={handleKeyDown}\n        className={cn(\"relative\", className)}\n        role=\"region\"\n        aria-roledescription=\"carousel\"\n        data-slot=\"carousel\"\n        {...props}\n      >\n        {children}\n      </div>\n    </CarouselContext.Provider>\n  )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div\n      ref={carouselRef}\n      className=\"overflow-hidden\"\n      data-slot=\"carousel-content\"\n    >\n      <div\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      data-slot=\"carousel-item\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CarouselPrevious({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-previous\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute touch-manipulation rounded-full\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -left-12 -translate-y-1/2\"\n          : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <ChevronLeftIcon className=\"cn-rtl-flip\" />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n}\n\nfunction CarouselNext({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-next\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute touch-manipulation rounded-full\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -right-12 -translate-y-1/2\"\n          : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <ChevronRightIcon className=\"cn-rtl-flip\" />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n}\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n  useCarousel,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/chart.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport * as RechartsPrimitive from \"recharts\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode\n    icon?: React.ComponentType\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  )\n}\n\ntype ChartContextProps = {\n  config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n  const context = React.useContext(ChartContext)\n\n  if (!context) {\n    throw new Error(\"useChart must be used within a <ChartContainer />\")\n  }\n\n  return context\n}\n\nfunction ChartContainer({\n  id,\n  className,\n  children,\n  config,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  config: ChartConfig\n  children: React.ComponentProps<\n    typeof RechartsPrimitive.ResponsiveContainer\n  >[\"children\"]\n}) {\n  const uniqueId = React.useId()\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-slot=\"chart\"\n        data-chart={chartId}\n        className={cn(\n          \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n          className\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([, config]) => config.theme || config.color\n  )\n\n  if (!colorConfig.length) {\n    return null\n  }\n\n  return (\n    <style\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color\n    return color ? `  --color-${key}: ${color};` : null\n  })\n  .join(\"\\n\")}\n}\n`\n          )\n          .join(\"\\n\"),\n      }}\n    />\n  )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n  active,\n  payload,\n  className,\n  indicator = \"dot\",\n  hideLabel = false,\n  hideIndicator = false,\n  label,\n  labelFormatter,\n  labelClassName,\n  formatter,\n  color,\n  nameKey,\n  labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n  React.ComponentProps<\"div\"> & {\n    hideLabel?: boolean\n    hideIndicator?: boolean\n    indicator?: \"line\" | \"dot\" | \"dashed\"\n    nameKey?: string\n    labelKey?: string\n  }) {\n  const { config } = useChart()\n\n  const tooltipLabel = React.useMemo(() => {\n    if (hideLabel || !payload?.length) {\n      return null\n    }\n\n    const [item] = payload\n    const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\n    const value =\n      !labelKey && typeof label === \"string\"\n        ? config[label as keyof typeof config]?.label || label\n        : itemConfig?.label\n\n    if (labelFormatter) {\n      return (\n        <div className={cn(\"font-medium\", labelClassName)}>\n          {labelFormatter(value, payload)}\n        </div>\n      )\n    }\n\n    if (!value) {\n      return null\n    }\n\n    return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n  }, [\n    label,\n    labelFormatter,\n    payload,\n    hideLabel,\n    labelClassName,\n    config,\n    labelKey,\n  ])\n\n  if (!active || !payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\n        \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n        className\n      )}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload\n          .filter((item) => item.type !== \"none\")\n          .map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\n            const indicatorColor = color || item.payload.fill || item.color\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                  indicator === \"dot\" && \"items-center\"\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n                            {\n                              \"h-2.5 w-2.5\": indicator === \"dot\",\n                              \"w-1\": indicator === \"line\",\n                              \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                                indicator === \"dashed\",\n                              \"my-0.5\": nestLabel && indicator === \"dashed\",\n                            }\n                          )}\n                          style={\n                            {\n                              \"--color-bg\": indicatorColor,\n                              \"--color-border\": indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        \"flex flex-1 justify-between leading-none\",\n                        nestLabel ? \"items-end\" : \"items-center\"\n                      )}\n                    >\n                      <div className=\"grid gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            )\n          })}\n      </div>\n    </div>\n  )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n  className,\n  hideIcon = false,\n  payload,\n  verticalAlign = \"bottom\",\n  nameKey,\n}: React.ComponentProps<\"div\"> &\n  Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n    hideIcon?: boolean\n    nameKey?: string\n  }) {\n  const { config } = useChart()\n\n  if (!payload?.length) {\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\n        \"flex items-center justify-center gap-4\",\n        verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n        className\n      )}\n    >\n      {payload\n        .filter((item) => item.type !== \"none\")\n        .map((item) => {\n          const key = `${nameKey || item.dataKey || \"value\"}`\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          )\n        })}\n    </div>\n  )\n}\n\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string\n) {\n  if (typeof payload !== \"object\" || payload === null) {\n    return undefined\n  }\n\n  const payloadPayload =\n    \"payload\" in payload &&\n    typeof payload.payload === \"object\" &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined\n\n  let configLabelKey: string = key\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === \"string\"\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config]\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/checkbox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon } from \"lucide-react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nfunction Checkbox({\n  className,\n  ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n      >\n        <CheckIcon />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/collapsible.tsx",
    "content": "\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nfunction Collapsible({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleTrigger\n      data-slot=\"collapsible-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction CollapsibleContent({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleContent\n      data-slot=\"collapsible-content\"\n      {...props}\n    />\n  )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/combobox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui/input-group\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"lucide-react\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n  return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Trigger.Props) {\n  return (\n    <ComboboxPrimitive.Trigger\n      data-slot=\"combobox-trigger\"\n      className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n      {...props}\n    >\n      {children}\n      <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n    </ComboboxPrimitive.Trigger>\n  )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n  return (\n    <ComboboxPrimitive.Clear\n      data-slot=\"combobox-clear\"\n      render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n      className={cn(className)}\n      {...props}\n    >\n      <XIcon className=\"pointer-events-none\" />\n    </ComboboxPrimitive.Clear>\n  )\n}\n\nfunction ComboboxInput({\n  className,\n  children,\n  disabled = false,\n  showTrigger = true,\n  showClear = false,\n  ...props\n}: ComboboxPrimitive.Input.Props & {\n  showTrigger?: boolean\n  showClear?: boolean\n}) {\n  return (\n    <InputGroup className={cn(\"w-auto\", className)}>\n      <ComboboxPrimitive.Input\n        render={<InputGroupInput disabled={disabled} />}\n        {...props}\n      />\n      <InputGroupAddon align=\"inline-end\">\n        {showTrigger && (\n          <InputGroupButton\n            size=\"icon-xs\"\n            variant=\"ghost\"\n            asChild\n            data-slot=\"input-group-button\"\n            className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n            disabled={disabled}\n          >\n            <ComboboxTrigger />\n          </InputGroupButton>\n        )}\n        {showClear && <ComboboxClear disabled={disabled} />}\n      </InputGroupAddon>\n      {children}\n    </InputGroup>\n  )\n}\n\nfunction ComboboxContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 6,\n  align = \"start\",\n  alignOffset = 0,\n  anchor,\n  ...props\n}: ComboboxPrimitive.Popup.Props &\n  Pick<\n    ComboboxPrimitive.Positioner.Props,\n    \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n  >) {\n  return (\n    <ComboboxPrimitive.Portal>\n      <ComboboxPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        anchor={anchor}\n        className=\"isolate z-50\"\n      >\n        <ComboboxPrimitive.Popup\n          data-slot=\"combobox-content\"\n          data-chips={!!anchor}\n          className={cn(\n            \"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </ComboboxPrimitive.Positioner>\n    </ComboboxPrimitive.Portal>\n  )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n  return (\n    <ComboboxPrimitive.List\n      data-slot=\"combobox-list\"\n      className={cn(\n        \"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxItem({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Item.Props) {\n  return (\n    <ComboboxPrimitive.Item\n      data-slot=\"combobox-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ComboboxPrimitive.ItemIndicator\n        render={\n          <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n        }\n      >\n        <CheckIcon className=\"pointer-events-none\" />\n      </ComboboxPrimitive.ItemIndicator>\n    </ComboboxPrimitive.Item>\n  )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n  return (\n    <ComboboxPrimitive.Group\n      data-slot=\"combobox-group\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxLabel({\n  className,\n  ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n  return (\n    <ComboboxPrimitive.GroupLabel\n      data-slot=\"combobox-label\"\n      className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n  return (\n    <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n  )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n  return (\n    <ComboboxPrimitive.Empty\n      data-slot=\"combobox-empty\"\n      className={cn(\n        \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxSeparator({\n  className,\n  ...props\n}: ComboboxPrimitive.Separator.Props) {\n  return (\n    <ComboboxPrimitive.Separator\n      data-slot=\"combobox-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChips({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n  ComboboxPrimitive.Chips.Props) {\n  return (\n    <ComboboxPrimitive.Chips\n      data-slot=\"combobox-chips\"\n      className={cn(\n        \"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChip({\n  className,\n  children,\n  showRemove = true,\n  ...props\n}: ComboboxPrimitive.Chip.Props & {\n  showRemove?: boolean\n}) {\n  return (\n    <ComboboxPrimitive.Chip\n      data-slot=\"combobox-chip\"\n      className={cn(\n        \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showRemove && (\n        <ComboboxPrimitive.ChipRemove\n          render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n          className=\"-ml-1 opacity-50 hover:opacity-100\"\n          data-slot=\"combobox-chip-remove\"\n        >\n          <XIcon className=\"pointer-events-none\" />\n        </ComboboxPrimitive.ChipRemove>\n      )}\n    </ComboboxPrimitive.Chip>\n  )\n}\n\nfunction ComboboxChipsInput({\n  className,\n  ...props\n}: ComboboxPrimitive.Input.Props) {\n  return (\n    <ComboboxPrimitive.Input\n      data-slot=\"combobox-chip-input\"\n      className={cn(\"min-w-16 flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction useComboboxAnchor() {\n  return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n  Combobox,\n  ComboboxInput,\n  ComboboxContent,\n  ComboboxList,\n  ComboboxItem,\n  ComboboxGroup,\n  ComboboxLabel,\n  ComboboxCollection,\n  ComboboxEmpty,\n  ComboboxSeparator,\n  ComboboxChips,\n  ComboboxChip,\n  ComboboxChipsInput,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/examples/radix/ui/dialog\"\nimport { InputGroup, InputGroupAddon } from \"@/examples/radix/ui/input-group\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { CheckIcon, SearchIcon } from \"lucide-react\"\n\nfunction Command({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n  return (\n    <CommandPrimitive\n      data-slot=\"command\"\n      className={cn(\n        \"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandDialog({\n  title = \"Command Palette\",\n  description = \"Search for a command to run...\",\n  children,\n  className,\n  showCloseButton = false,\n  ...props\n}: React.ComponentProps<typeof Dialog> & {\n  title?: string\n  description?: string\n  className?: string\n  showCloseButton?: boolean\n}) {\n  return (\n    <Dialog {...props}>\n      <DialogHeader className=\"sr-only\">\n        <DialogTitle>{title}</DialogTitle>\n        <DialogDescription>{description}</DialogDescription>\n      </DialogHeader>\n      <DialogContent\n        className={cn(\n          \"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\",\n          className\n        )}\n        showCloseButton={showCloseButton}\n      >\n        {children}\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction CommandInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n  return (\n    <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n      <InputGroup className=\"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\">\n        <CommandPrimitive.Input\n          data-slot=\"command-input\"\n          className={cn(\n            \"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n            className\n          )}\n          {...props}\n        />\n        <InputGroupAddon>\n          <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n\nfunction CommandList({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n  return (\n    <CommandPrimitive.List\n      data-slot=\"command-list\"\n      className={cn(\n        \"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandEmpty({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n  return (\n    <CommandPrimitive.Empty\n      data-slot=\"command-empty\"\n      className={cn(\"py-6 text-center text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n  return (\n    <CommandPrimitive.Group\n      data-slot=\"command-group\"\n      className={cn(\n        \"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n  return (\n    <CommandPrimitive.Separator\n      data-slot=\"command-separator\"\n      className={cn(\"-mx-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n  return (\n    <CommandPrimitive.Item\n      data-slot=\"command-item\"\n      className={cn(\n        \"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <CheckIcon className=\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n    </CommandPrimitive.Item>\n  )\n}\n\nfunction CommandShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"command-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\n\nfunction ContextMenu({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n  return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n  return (\n    <ContextMenuPrimitive.Trigger\n      data-slot=\"context-menu-trigger\"\n      className={cn(\"select-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuGroup({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n  return (\n    <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n  )\n}\n\nfunction ContextMenuPortal({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n  return (\n    <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n  )\n}\n\nfunction ContextMenuSub({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n  return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n  return (\n    <ContextMenuPrimitive.RadioGroup\n      data-slot=\"context-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n  return (\n    <ContextMenuPrimitive.Portal>\n      <ContextMenuPrimitive.Content\n        data-slot=\"context-menu-content\"\n        className={cn(\n          \"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </ContextMenuPrimitive.Portal>\n  )\n}\n\nfunction ContextMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <ContextMenuPrimitive.Item\n      data-slot=\"context-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.SubTrigger\n      data-slot=\"context-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n    </ContextMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction ContextMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n  return (\n    <ContextMenuPrimitive.SubContent\n      data-slot=\"context-menu-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-lg duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      data-slot=\"context-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute right-2\">\n        <ContextMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </ContextMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction ContextMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.RadioItem\n      data-slot=\"context-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute right-2\">\n        <ContextMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </ContextMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.RadioItem>\n  )\n}\n\nfunction ContextMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.Label\n      data-slot=\"context-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n  return (\n    <ContextMenuPrimitive.Separator\n      data-slot=\"context-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"context-menu-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ContextMenu,\n  ContextMenuTrigger,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuCheckboxItem,\n  ContextMenuRadioItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuGroup,\n  ContextMenuPortal,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuRadioGroup,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nfunction Dialog({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n  return (\n    <DialogPrimitive.Overlay\n      data-slot=\"dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal>\n      <DialogOverlay />\n      <DialogPrimitive.Content\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n            <Button\n              variant=\"ghost\"\n              className=\"absolute top-2 right-2\"\n              size=\"icon-sm\"\n            >\n              <XIcon />\n              <span className=\"sr-only\">Close</span>\n            </Button>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Content>\n    </DialogPortal>\n  )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-header\"\n      className={cn(\"flex flex-col gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogFooter({\n  className,\n  showCloseButton = false,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close asChild>\n          <Button variant=\"outline\">Close</Button>\n        </DialogPrimitive.Close>\n      )}\n    </div>\n  )\n}\n\nfunction DialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn(\n        \"cn-font-heading text-base leading-none font-medium\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\n        \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/direction.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Direction } from \"radix-ui\"\n\nfunction DirectionProvider({\n  dir,\n  direction,\n  children,\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\"dir\"]\n}) {\n  return (\n    <Direction.DirectionProvider dir={direction ?? dir}>\n      {children}\n    </Direction.DirectionProvider>\n  )\n}\n\nconst useDirection = Direction.useDirection\n\nexport { DirectionProvider, useDirection }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/drawer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n  return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n  return (\n    <DrawerPortal data-slot=\"drawer-portal\">\n      <DrawerOverlay />\n      <DrawerPrimitive.Content\n        data-slot=\"drawer-content\"\n        className={cn(\n          \"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n        {children}\n      </DrawerPrimitive.Content>\n    </DrawerPortal>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\n        \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nfunction DropdownMenu({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n  return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n  return (\n    <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n  )\n}\n\nfunction DropdownMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n  return (\n    <DropdownMenuPrimitive.Trigger\n      data-slot=\"dropdown-menu-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuContent({\n  className,\n  align = \"start\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n  return (\n    <DropdownMenuPrimitive.Portal>\n      <DropdownMenuPrimitive.Content\n        data-slot=\"dropdown-menu-content\"\n        sideOffset={sideOffset}\n        align={align}\n        className={cn(\n          \"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </DropdownMenuPrimitive.Portal>\n  )\n}\n\nfunction DropdownMenuGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n  return (\n    <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n  )\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <DropdownMenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-checkbox-item-indicator\"\n      >\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction DropdownMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n  return (\n    <DropdownMenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-radio-item-indicator\"\n      >\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.RadioItem>\n  )\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.Label\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n  return (\n    <DropdownMenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n  return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.SubTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n    </DropdownMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction DropdownMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n  return (\n    <DropdownMenuPrimitive.SubContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/empty.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty\"\n      className={cn(\n        \"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-header\"\n      className={cn(\"flex max-w-sm flex-col items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nconst emptyMediaVariants = cva(\n  \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction EmptyMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n  return (\n    <div\n      data-slot=\"empty-icon\"\n      data-variant={variant}\n      className={cn(emptyMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-title\"\n      className={cn(\n        \"cn-font-heading text-sm font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <div\n      data-slot=\"empty-description\"\n      className={cn(\n        \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-content\"\n      className={cn(\n        \"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Empty,\n  EmptyHeader,\n  EmptyTitle,\n  EmptyDescription,\n  EmptyContent,\n  EmptyMedia,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/field.tsx",
    "content": "\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Label } from \"@/examples/radix/ui/label\"\nimport { Separator } from \"@/examples/radix/ui/separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n  return (\n    <fieldset\n      data-slot=\"field-set\"\n      className={cn(\n        \"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLegend({\n  className,\n  variant = \"legend\",\n  ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n  return (\n    <legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\n        \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\n        \"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst fieldVariants = cva(\n  \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n  {\n    variants: {\n      orientation: {\n        vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n        horizontal:\n          \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n        responsive:\n          \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"vertical\",\n    },\n  }\n)\n\nfunction Field({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"field\"\n      data-orientation={orientation}\n      className={cn(fieldVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn(\n        \"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof Label>) {\n  return (\n    <Label\n      data-slot=\"field-label\"\n      className={cn(\n        \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n        \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-label\"\n      className={cn(\n        \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        \"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n        \"last:mt-0 nth-last-2:-mt-1\",\n        \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  children?: React.ReactNode\n}) {\n  return (\n    <div\n      data-slot=\"field-separator\"\n      data-content={!!children}\n      className={cn(\n        \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n        className\n      )}\n      {...props}\n    >\n      <Separator className=\"absolute inset-0 top-1/2\" />\n      {children && (\n        <span\n          className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n          data-slot=\"field-separator-content\"\n        >\n          {children}\n        </span>\n      )}\n    </div>\n  )\n}\n\nfunction FieldError({\n  className,\n  children,\n  errors,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  errors?: Array<{ message?: string } | undefined>\n}) {\n  const content = useMemo(() => {\n    if (children) {\n      return children\n    }\n\n    if (!errors?.length) {\n      return null\n    }\n\n    const uniqueErrors = [\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\n    ]\n\n    if (uniqueErrors?.length == 1) {\n      return uniqueErrors[0]?.message\n    }\n\n    return (\n      <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n        {uniqueErrors.map(\n          (error, index) =>\n            error?.message && <li key={index}>{error.message}</li>\n        )}\n      </ul>\n    )\n  }, [children, errors])\n\n  if (!content) {\n    return null\n  }\n\n  return (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      className={cn(\"text-sm font-normal text-destructive\", className)}\n      {...props}\n    >\n      {content}\n    </div>\n  )\n}\n\nexport {\n  Field,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldContent,\n  FieldTitle,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/hover-card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nfunction HoverCard({\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n  return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n  return (\n    <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n  )\n}\n\nfunction HoverCardContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n  return (\n    <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n      <HoverCardPrimitive.Content\n        data-slot=\"hover-card-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </HoverCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { Textarea } from \"@/examples/radix/ui/textarea\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-group\"\n      role=\"group\"\n      className={cn(\n        \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupAddonVariants = cva(\n  \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      align: {\n        \"inline-start\":\n          \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n        \"inline-end\":\n          \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n        \"block-start\":\n          \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n        \"block-end\":\n          \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n      },\n    },\n    defaultVariants: {\n      align: \"inline-start\",\n    },\n  }\n)\n\nfunction InputGroupAddon({\n  className,\n  align = \"inline-start\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"input-group-addon\"\n      data-align={align}\n      className={cn(inputGroupAddonVariants({ align }), className)}\n      onClick={(e) => {\n        if ((e.target as HTMLElement).closest(\"button\")) {\n          return\n        }\n        e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n      }}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupButtonVariants = cva(\n  \"flex items-center gap-2 text-sm shadow-none\",\n  {\n    variants: {\n      size: {\n        xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n        sm: \"\",\n        \"icon-xs\":\n          \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n        \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n      },\n    },\n    defaultVariants: {\n      size: \"xs\",\n    },\n  }\n)\n\nfunction InputGroupButton({\n  className,\n  type = \"button\",\n  variant = \"ghost\",\n  size = \"xs\",\n  ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n  VariantProps<typeof inputGroupButtonVariants>) {\n  return (\n    <Button\n      type={type}\n      data-size={size}\n      variant={variant}\n      className={cn(inputGroupButtonVariants({ size }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      className={cn(\n        \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupInput({\n  className,\n  ...props\n}: React.ComponentProps<\"input\">) {\n  return (\n    <Input\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupTextarea({\n  className,\n  ...props\n}: React.ComponentProps<\"textarea\">) {\n  return (\n    <Textarea\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupInput,\n  InputGroupTextarea,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/input-otp.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        \"cn-input-otp flex items-center has-disabled:opacity-50\",\n        containerClassName\n      )}\n      spellCheck={false}\n      className={cn(\"disabled:cursor-not-allowed\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\n        \"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  index: number\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext)\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        \"relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-separator\"\n      className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n      role=\"separator\"\n      {...props}\n    >\n      <MinusIcon />\n    </div>\n  )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/input.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <input\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/item.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Separator } from \"@/examples/radix/ui/separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      role=\"list\"\n      data-slot=\"item-group\"\n      className={cn(\n        \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"item-separator\"\n      orientation=\"horizontal\"\n      className={cn(\"my-2\", className)}\n      {...props}\n    />\n  )\n}\n\nconst itemVariants = cva(\n  \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\",\n  {\n    variants: {\n      variant: {\n        default: \"border-transparent\",\n        outline: \"border-border\",\n        muted: \"border-transparent bg-muted/50\",\n      },\n      size: {\n        default: \"gap-2.5 px-3 py-2.5\",\n        sm: \"gap-2.5 px-3 py-2.5\",\n        xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Item({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> &\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"div\"\n  return (\n    <Comp\n      data-slot=\"item\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(itemVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nconst itemMediaVariants = cva(\n  \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"[&_svg:not([class*='size-'])]:size-4\",\n        image:\n          \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction ItemMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n  return (\n    <div\n      data-slot=\"item-media\"\n      data-variant={variant}\n      className={cn(itemMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-content\"\n      className={cn(\n        \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-title\"\n      className={cn(\n        \"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"item-description\"\n      className={cn(\n        \"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-actions\"\n      className={cn(\"flex items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-header\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-footer\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Item,\n  ItemMedia,\n  ItemContent,\n  ItemActions,\n  ItemGroup,\n  ItemSeparator,\n  ItemTitle,\n  ItemDescription,\n  ItemHeader,\n  ItemFooter,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/kbd.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      data-slot=\"kbd\"\n      className={cn(\n        \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <kbd\n      data-slot=\"kbd-group\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Kbd, KbdGroup }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nfunction Label({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  return (\n    <LabelPrimitive.Root\n      data-slot=\"label\"\n      className={cn(\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\nimport { Menubar as MenubarPrimitive } from \"radix-ui\"\n\nfunction Menubar({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n  return (\n    <MenubarPrimitive.Root\n      data-slot=\"menubar\"\n      className={cn(\n        \"flex h-8 items-center gap-0.5 rounded-lg border p-[3px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarMenu({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n  return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n  return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n  return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n  return (\n    <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n  )\n}\n\nfunction MenubarTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n  return (\n    <MenubarPrimitive.Trigger\n      data-slot=\"menubar-trigger\"\n      className={cn(\n        \"flex items-center rounded-sm px-1.5 py-[2px] text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarContent({\n  className,\n  align = \"start\",\n  alignOffset = -4,\n  sideOffset = 8,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n  return (\n    <MenubarPortal>\n      <MenubarPrimitive.Content\n        data-slot=\"menubar-content\"\n        align={align}\n        alignOffset={alignOffset}\n        sideOffset={sideOffset}\n        className={cn(\n          \"cn-menu-target cn-menu-translucent z-50 min-w-36 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\",\n          className\n        )}\n        {...props}\n      />\n    </MenubarPortal>\n  )\n}\n\nfunction MenubarItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <MenubarPrimitive.Item\n      data-slot=\"menubar-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/menubar-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.CheckboxItem\n      data-slot=\"menubar-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\">\n        <MenubarPrimitive.ItemIndicator>\n          <CheckIcon />\n        </MenubarPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </MenubarPrimitive.CheckboxItem>\n  )\n}\n\nfunction MenubarRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.RadioItem\n      data-slot=\"menubar-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\">\n        <MenubarPrimitive.ItemIndicator>\n          <CheckIcon />\n        </MenubarPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </MenubarPrimitive.RadioItem>\n  )\n}\n\nfunction MenubarLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.Label\n      data-slot=\"menubar-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-sm font-medium data-inset:pl-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n  return (\n    <MenubarPrimitive.Separator\n      data-slot=\"menubar-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"menubar-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSub({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n  return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.SubTrigger\n      data-slot=\"menubar-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"cn-rtl-flip ml-auto size-4\" />\n    </MenubarPrimitive.SubTrigger>\n  )\n}\n\nfunction MenubarSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n  return (\n    <MenubarPrimitive.SubContent\n      data-slot=\"menubar-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Menubar,\n  MenubarPortal,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarGroup,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarItem,\n  MenubarShortcut,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSub,\n  MenubarSubTrigger,\n  MenubarSubContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/native-select.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\ntype NativeSelectProps = Omit<React.ComponentProps<\"select\">, \"size\"> & {\n  size?: \"sm\" | \"default\"\n}\n\nfunction NativeSelect({\n  className,\n  size = \"default\",\n  ...props\n}: NativeSelectProps) {\n  return (\n    <div\n      className={cn(\n        \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n        className\n      )}\n      data-slot=\"native-select-wrapper\"\n      data-size={size}\n    >\n      <select\n        data-slot=\"native-select\"\n        data-size={size}\n        className=\"h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\"\n        {...props}\n      />\n      <ChevronDownIcon\n        className=\"pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none\"\n        aria-hidden=\"true\"\n        data-slot=\"native-select-icon\"\n      />\n    </div>\n  )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n  return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n  className,\n  ...props\n}: React.ComponentProps<\"optgroup\">) {\n  return (\n    <optgroup\n      data-slot=\"native-select-optgroup\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/navigation-menu.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\"\n\nfunction NavigationMenu({\n  className,\n  children,\n  viewport = true,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n  viewport?: boolean\n}) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      data-viewport={viewport}\n      className={cn(\n        \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {viewport && <NavigationMenuViewport />}\n    </NavigationMenuPrimitive.Root>\n  )\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"group flex flex-1 list-none items-center justify-center gap-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg bg-background px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\"\n)\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}{\" \"}\n      <ChevronDownIcon\n        className=\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\"\n        aria-hidden=\"true\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  )\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"top-0 left-0 w-full p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuViewport({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n  return (\n    <div\n      className={cn(\n        \"absolute top-full left-0 isolate z-50 flex justify-center\"\n      )}\n    >\n      <NavigationMenuPrimitive.Viewport\n        data-slot=\"navigation-menu-viewport\"\n        className={cn(\n          \"origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\n        \"flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n  return (\n    <NavigationMenuPrimitive.Indicator\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n    </NavigationMenuPrimitive.Indicator>\n  )\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuList,\n  NavigationMenuItem,\n  NavigationMenuContent,\n  NavigationMenuTrigger,\n  NavigationMenuLink,\n  NavigationMenuIndicator,\n  NavigationMenuViewport,\n  navigationMenuTriggerStyle,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/pagination.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport {\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  MoreHorizontalIcon,\n} from \"lucide-react\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      role=\"navigation\"\n      aria-label=\"pagination\"\n      data-slot=\"pagination\"\n      className={cn(\"mx-auto flex w-full justify-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationContent({\n  className,\n  ...props\n}: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"pagination-content\"\n      className={cn(\"flex items-center gap-0.5\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n  return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n  isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n  React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n  className,\n  isActive,\n  size = \"icon\",\n  ...props\n}: PaginationLinkProps) {\n  return (\n    <Button\n      asChild\n      variant={isActive ? \"outline\" : \"ghost\"}\n      size={size}\n      className={cn(className)}\n    >\n      <a\n        aria-current={isActive ? \"page\" : undefined}\n        data-slot=\"pagination-link\"\n        data-active={isActive}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nfunction PaginationPrevious({\n  className,\n  text = \"Previous\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to previous page\"\n      size=\"default\"\n      className={cn(\"pl-1.5!\", className)}\n      {...props}\n    >\n      <ChevronLeftIcon data-icon=\"inline-start\" className=\"cn-rtl-flip\" />\n      <span className=\"hidden sm:block\">{text}</span>\n    </PaginationLink>\n  )\n}\n\nfunction PaginationNext({\n  className,\n  text = \"Next\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to next page\"\n      size=\"default\"\n      className={cn(\"pr-1.5!\", className)}\n      {...props}\n    >\n      <span className=\"hidden sm:block\">{text}</span>\n      <ChevronRightIcon data-icon=\"inline-end\" className=\"cn-rtl-flip\" />\n    </PaginationLink>\n  )\n}\n\nfunction PaginationEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden\n      data-slot=\"pagination-ellipsis\"\n      className={cn(\n        \"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More pages</span>\n    </span>\n  )\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nfunction Popover({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Content\n        data-slot=\"popover-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </PopoverPrimitive.Portal>\n  )\n}\n\nfunction PopoverAnchor({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n  return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-header\"\n      className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n  return (\n    <div\n      data-slot=\"popover-title\"\n      className={cn(\"cn-font-heading font-medium\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"popover-description\"\n      className={cn(\"text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Popover,\n  PopoverAnchor,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/progress.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nfunction Progress({\n  className,\n  value,\n  ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n  return (\n    <ProgressPrimitive.Root\n      data-slot=\"progress\"\n      className={cn(\n        \"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted\",\n        className\n      )}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className=\"size-full flex-1 bg-primary transition-all\"\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  )\n}\n\nexport { Progress }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nfunction RadioGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n  return (\n    <RadioGroupPrimitive.Root\n      data-slot=\"radio-group\"\n      className={cn(\"grid w-full gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction RadioGroupItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n  return (\n    <RadioGroupPrimitive.Item\n      data-slot=\"radio-group-item\"\n      className={cn(\n        \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"flex size-4 items-center justify-center\"\n      >\n        <span className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/resizable.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nfunction ResizablePanelGroup({\n  className,\n  ...props\n}: ResizablePrimitive.GroupProps) {\n  return (\n    <ResizablePrimitive.Group\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: ResizablePrimitive.SeparatorProps & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.Separator\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\" />\n      )}\n    </ResizablePrimitive.Separator>\n  )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/scroll-area.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nfunction ScrollArea({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn(\"relative\", className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        data-slot=\"scroll-area-viewport\"\n        className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  )\n}\n\nfunction ScrollBar({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n  return (\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      data-orientation={orientation}\n      orientation={orientation}\n      className={cn(\n        \"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\",\n        className\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.ScrollAreaThumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"relative flex-1 rounded-full bg-border\"\n      />\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nfunction Select({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n  return (\n    <SelectPrimitive.Group\n      data-slot=\"select-group\"\n      className={cn(\"scroll-my-1 p-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectValue({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon asChild>\n        <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = \"item-aligned\",\n  align = \"center\",\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Content\n        data-slot=\"select-content\"\n        data-align-trigger={position === \"item-aligned\"}\n        className={cn(\n          \"cn-menu-target cn-menu-translucent relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          position === \"popper\" &&\n            \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n          className\n        )}\n        position={position}\n        align={align}\n        {...props}\n      >\n        <SelectScrollUpButton />\n        <SelectPrimitive.Viewport\n          data-position={position}\n          className={cn(\n            \"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\",\n            position === \"popper\" && \"\"\n          )}\n        >\n          {children}\n        </SelectPrimitive.Viewport>\n        <SelectScrollDownButton />\n      </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n  )\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n  return (\n    <SelectPrimitive.Label\n      data-slot=\"select-label\"\n      className={cn(\"px-1.5 py-1 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\">\n        <SelectPrimitive.ItemIndicator>\n          <CheckIcon className=\"pointer-events-none\" />\n        </SelectPrimitive.ItemIndicator>\n      </span>\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  )\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n  return (\n    <SelectPrimitive.ScrollUpButton\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronUpIcon />\n    </SelectPrimitive.ScrollUpButton>\n  )\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n  return (\n    <SelectPrimitive.ScrollDownButton\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronDownIcon />\n    </SelectPrimitive.ScrollDownButton>\n  )\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/separator.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nfunction Separator({\n  className,\n  orientation = \"horizontal\",\n  decorative = true,\n  ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n  return (\n    <SeparatorPrimitive.Root\n      data-slot=\"separator\"\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Separator }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n  return (\n    <SheetPrimitive.Overlay\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n  showCloseButton?: boolean\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Content\n        data-slot=\"sheet-content\"\n        data-side={side}\n        className={cn(\n          \"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <SheetPrimitive.Close data-slot=\"sheet-close\" asChild>\n            <Button\n              variant=\"ghost\"\n              className=\"absolute top-3 right-3\"\n              size=\"icon-sm\"\n            >\n              <XIcon />\n              <span className=\"sr-only\">Close</span>\n            </Button>\n          </SheetPrimitive.Close>\n        )}\n      </SheetPrimitive.Content>\n    </SheetPortal>\n  )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn(\"flex flex-col gap-0.5 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useIsMobile } from \"@/examples/radix/hooks/use-mobile\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui/button\"\nimport { Input } from \"@/examples/radix/ui/input\"\nimport { Separator } from \"@/examples/radix/ui/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/examples/radix/ui/sheet\"\nimport { Skeleton } from \"@/examples/radix/ui/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui/tooltip\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n  state: \"expanded\" | \"collapsed\"\n  open: boolean\n  setOpen: (open: boolean) => void\n  openMobile: boolean\n  setOpenMobile: (open: boolean) => void\n  isMobile: boolean\n  toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n  const context = React.useContext(SidebarContext)\n  if (!context) {\n    throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n  }\n\n  return context\n}\n\nfunction SidebarProvider({\n  defaultOpen = true,\n  open: openProp,\n  onOpenChange: setOpenProp,\n  className,\n  style,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  defaultOpen?: boolean\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}) {\n  const isMobile = useIsMobile()\n  const [openMobile, setOpenMobile] = React.useState(false)\n\n  // This is the internal state of the sidebar.\n  // We use openProp and setOpenProp for control from outside the component.\n  const [_open, _setOpen] = React.useState(defaultOpen)\n  const open = openProp ?? _open\n  const setOpen = React.useCallback(\n    (value: boolean | ((value: boolean) => boolean)) => {\n      const openState = typeof value === \"function\" ? value(open) : value\n      if (setOpenProp) {\n        setOpenProp(openState)\n      } else {\n        _setOpen(openState)\n      }\n\n      // This sets the cookie to keep the sidebar state.\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n    },\n    [setOpenProp, open]\n  )\n\n  // Helper to toggle the sidebar.\n  const toggleSidebar = React.useCallback(() => {\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n  }, [isMobile, setOpen, setOpenMobile])\n\n  // Adds a keyboard shortcut to toggle the sidebar.\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n        (event.metaKey || event.ctrlKey)\n      ) {\n        event.preventDefault()\n        toggleSidebar()\n      }\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n    return () => window.removeEventListener(\"keydown\", handleKeyDown)\n  }, [toggleSidebar])\n\n  // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n  // This makes it easier to style the sidebar with Tailwind classes.\n  const state = open ? \"expanded\" : \"collapsed\"\n\n  const contextValue = React.useMemo<SidebarContextProps>(\n    () => ({\n      state,\n      open,\n      setOpen,\n      isMobile,\n      openMobile,\n      setOpenMobile,\n      toggleSidebar,\n    }),\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n  )\n\n  return (\n    <SidebarContext.Provider value={contextValue}>\n      <div\n        data-slot=\"sidebar-wrapper\"\n        style={\n          {\n            \"--sidebar-width\": SIDEBAR_WIDTH,\n            \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n            ...style,\n          } as React.CSSProperties\n        }\n        className={cn(\n          \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    </SidebarContext.Provider>\n  )\n}\n\nfunction Sidebar({\n  side = \"left\",\n  variant = \"sidebar\",\n  collapsible = \"offcanvas\",\n  className,\n  children,\n  dir,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  side?: \"left\" | \"right\"\n  variant?: \"sidebar\" | \"floating\" | \"inset\"\n  collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n  if (collapsible === \"none\") {\n    return (\n      <div\n        data-slot=\"sidebar\"\n        className={cn(\n          \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n\n  if (isMobile) {\n    return (\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n        <SheetContent\n          dir={dir}\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar\"\n          data-mobile=\"true\"\n          className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n          style={\n            {\n              \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n            } as React.CSSProperties\n          }\n          side={side}\n        >\n          <SheetHeader className=\"sr-only\">\n            <SheetTitle>Sidebar</SheetTitle>\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n          </SheetHeader>\n          <div className=\"flex h-full w-full flex-col\">{children}</div>\n        </SheetContent>\n      </Sheet>\n    )\n  }\n\n  return (\n    <div\n      className=\"group peer hidden text-sidebar-foreground md:block\"\n      data-state={state}\n      data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n      data-variant={variant}\n      data-side={side}\n      data-slot=\"sidebar\"\n    >\n      {/* This is what handles the sidebar gap on desktop */}\n      <div\n        data-slot=\"sidebar-gap\"\n        className={cn(\n          \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n          \"group-data-[collapsible=offcanvas]:w-0\",\n          \"group-data-[side=right]:rotate-180\",\n          variant === \"floating\" || variant === \"inset\"\n            ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n        )}\n      />\n      <div\n        data-slot=\"sidebar-container\"\n        data-side={side}\n        className={cn(\n          \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n          // Adjust the padding for floating and inset variants.\n          variant === \"floating\" || variant === \"inset\"\n            ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n          className\n        )}\n        {...props}\n      >\n        <div\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar-inner\"\n          className=\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\"\n        >\n          {children}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction SidebarTrigger({\n  className,\n  onClick,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <Button\n      data-sidebar=\"trigger\"\n      data-slot=\"sidebar-trigger\"\n      variant=\"ghost\"\n      size=\"icon-sm\"\n      className={cn(className)}\n      onClick={(event) => {\n        onClick?.(event)\n        toggleSidebar()\n      }}\n      {...props}\n    >\n      <PanelLeftIcon className=\"cn-rtl-flip\" />\n      <span className=\"sr-only\">Toggle Sidebar</span>\n    </Button>\n  )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <button\n      data-sidebar=\"rail\"\n      data-slot=\"sidebar-rail\"\n      aria-label=\"Toggle Sidebar\"\n      tabIndex={-1}\n      onClick={toggleSidebar}\n      title=\"Toggle Sidebar\"\n      className={cn(\n        \"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n        \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n        \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n        \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n        \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n        \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n  return (\n    <main\n      data-slot=\"sidebar-inset\"\n      className={cn(\n        \"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof Input>) {\n  return (\n    <Input\n      data-slot=\"sidebar-input\"\n      data-sidebar=\"input\"\n      className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-header\"\n      data-sidebar=\"header\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-footer\"\n      data-sidebar=\"footer\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"sidebar-separator\"\n      data-sidebar=\"separator\"\n      className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-content\"\n      data-sidebar=\"content\"\n      className={cn(\n        \"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group\"\n      data-sidebar=\"group\"\n      className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupLabel({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"div\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-label\"\n      data-sidebar=\"group-label\"\n      className={cn(\n        \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupAction({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-action\"\n      data-sidebar=\"group-action\"\n      className={cn(\n        \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupContent({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group-content\"\n      data-sidebar=\"group-content\"\n      className={cn(\"w-full text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu\"\n      data-sidebar=\"menu\"\n      className={cn(\"flex w-full min-w-0 flex-col gap-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-item\"\n      data-sidebar=\"menu-item\"\n      className={cn(\"group/menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst sidebarMenuButtonVariants = cva(\n  \"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n  {\n    variants: {\n      variant: {\n        default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n        outline:\n          \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n      },\n      size: {\n        default: \"h-8 text-sm\",\n        sm: \"h-7 text-xs\",\n        lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction SidebarMenuButton({\n  asChild = false,\n  isActive = false,\n  variant = \"default\",\n  size = \"default\",\n  tooltip,\n  className,\n  ...props\n}: React.ComponentProps<\"button\"> & {\n  asChild?: boolean\n  isActive?: boolean\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n  const Comp = asChild ? Slot.Root : \"button\"\n  const { isMobile, state } = useSidebar()\n\n  const button = (\n    <Comp\n      data-slot=\"sidebar-menu-button\"\n      data-sidebar=\"menu-button\"\n      data-size={size}\n      data-active={isActive}\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n      {...props}\n    />\n  )\n\n  if (!tooltip) {\n    return button\n  }\n\n  if (typeof tooltip === \"string\") {\n    tooltip = {\n      children: tooltip,\n    }\n  }\n\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\n      <TooltipContent\n        side=\"right\"\n        align=\"center\"\n        hidden={state !== \"collapsed\" || isMobile}\n        {...tooltip}\n      />\n    </Tooltip>\n  )\n}\n\nfunction SidebarMenuAction({\n  className,\n  asChild = false,\n  showOnHover = false,\n  ...props\n}: React.ComponentProps<\"button\"> & {\n  asChild?: boolean\n  showOnHover?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-action\"\n      data-sidebar=\"menu-action\"\n      className={cn(\n        \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n        showOnHover &&\n          \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuBadge({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-menu-badge\"\n      data-sidebar=\"menu-badge\"\n      className={cn(\n        \"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSkeleton({\n  className,\n  showIcon = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showIcon?: boolean\n}) {\n  // Random width between 50 to 90%.\n  const [width] = React.useState(() => {\n    return `${Math.floor(Math.random() * 40) + 50}%`\n  })\n\n  return (\n    <div\n      data-slot=\"sidebar-menu-skeleton\"\n      data-sidebar=\"menu-skeleton\"\n      className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n      {...props}\n    >\n      {showIcon && (\n        <Skeleton\n          className=\"size-4 rounded-md\"\n          data-sidebar=\"menu-skeleton-icon\"\n        />\n      )}\n      <Skeleton\n        className=\"h-4 max-w-(--skeleton-width) flex-1\"\n        data-sidebar=\"menu-skeleton-text\"\n        style={\n          {\n            \"--skeleton-width\": width,\n          } as React.CSSProperties\n        }\n      />\n    </div>\n  )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu-sub\"\n      data-sidebar=\"menu-sub\"\n      className={cn(\n        \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubItem({\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-sub-item\"\n      data-sidebar=\"menu-sub-item\"\n      className={cn(\"group/menu-sub-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubButton({\n  asChild = false,\n  size = \"md\",\n  isActive = false,\n  className,\n  ...props\n}: React.ComponentProps<\"a\"> & {\n  asChild?: boolean\n  size?: \"sm\" | \"md\"\n  isActive?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-sub-button\"\n      data-sidebar=\"menu-sub-button\"\n      data-size={size}\n      data-active={isActive}\n      className={cn(\n        \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarSeparator,\n  SidebarTrigger,\n  useSidebar,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/skeleton.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Slider as SliderPrimitive } from \"radix-ui\"\n\nfunction Slider({\n  className,\n  defaultValue,\n  value,\n  min = 0,\n  max = 100,\n  ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n  const _values = React.useMemo(\n    () =>\n      Array.isArray(value)\n        ? value\n        : Array.isArray(defaultValue)\n          ? defaultValue\n          : [min, max],\n    [value, defaultValue, min, max]\n  )\n\n  return (\n    <SliderPrimitive.Root\n      data-slot=\"slider\"\n      defaultValue={defaultValue}\n      value={value}\n      min={min}\n      max={max}\n      className={cn(\n        \"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\",\n        className\n      )}\n      {...props}\n    >\n      <SliderPrimitive.Track\n        data-slot=\"slider-track\"\n        className=\"relative grow overflow-hidden rounded-full bg-muted data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\"\n      >\n        <SliderPrimitive.Range\n          data-slot=\"slider-range\"\n          className=\"absolute bg-primary select-none data-horizontal:h-full data-vertical:w-full\"\n        />\n      </SliderPrimitive.Track>\n      {Array.from({ length: _values.length }, (_, index) => (\n        <SliderPrimitive.Thumb\n          data-slot=\"slider-thumb\"\n          key={index}\n          className=\"relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50\"\n        />\n      ))}\n    </SliderPrimitive.Root>\n  )\n}\n\nexport { Slider }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/sonner.tsx",
    "content": "\"use client\"\n\nimport {\n  CircleCheckIcon,\n  InfoIcon,\n  Loader2Icon,\n  OctagonXIcon,\n  TriangleAlertIcon,\n} from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = \"system\" } = useTheme()\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps[\"theme\"]}\n      className=\"toaster group\"\n      icons={{\n        success: <CircleCheckIcon className=\"size-4\" />,\n        info: <InfoIcon className=\"size-4\" />,\n        warning: <TriangleAlertIcon className=\"size-4\" />,\n        error: <OctagonXIcon className=\"size-4\" />,\n        loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n      }}\n      style={\n        {\n          \"--normal-bg\": \"var(--popover)\",\n          \"--normal-text\": \"var(--popover-foreground)\",\n          \"--normal-border\": \"var(--border)\",\n          \"--border-radius\": \"var(--radius)\",\n        } as React.CSSProperties\n      }\n      toastOptions={{\n        classNames: {\n          toast: \"cn-toast\",\n        },\n      }}\n      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/spinner.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\nimport { Loader2Icon } from \"lucide-react\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <Loader2Icon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/switch.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      data-size={size}\n      className={cn(\n        \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n  return (\n    <div\n      data-slot=\"table-container\"\n      className=\"relative w-full overflow-x-auto\"\n    >\n      <table\n        data-slot=\"table\"\n        className={cn(\"w-full caption-bottom text-sm\", className)}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n  return (\n    <thead\n      data-slot=\"table-header\"\n      className={cn(\"[&_tr]:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n  return (\n    <tbody\n      data-slot=\"table-body\"\n      className={cn(\"[&_tr:last-child]:border-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n  return (\n    <tfoot\n      data-slot=\"table-footer\"\n      className={cn(\n        \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n  return (\n    <tr\n      data-slot=\"table-row\"\n      className={cn(\n        \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n  return (\n    <th\n      data-slot=\"table-head\"\n      className={cn(\n        \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n  return (\n    <td\n      data-slot=\"table-cell\"\n      className={cn(\n        \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCaption({\n  className,\n  ...props\n}: React.ComponentProps<\"caption\">) {\n  return (\n    <caption\n      data-slot=\"table-caption\"\n      className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      data-orientation={orientation}\n      className={cn(\n        \"group/tabs flex gap-2 data-horizontal:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst tabsListVariants = cva(\n  \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-muted\",\n        line: \"gap-1 bg-transparent\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction TabsList({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n  VariantProps<typeof tabsListVariants>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={cn(tabsListVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n  return (\n    <TabsPrimitive.Trigger\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n        \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n        \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n  return (\n    <TabsPrimitive.Content\n      data-slot=\"tabs-content\"\n      className={cn(\"flex-1 text-sm outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/textarea.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/toggle-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { toggleVariants } from \"@/examples/radix/ui/toggle\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }\n>({\n  size: \"default\",\n  variant: \"default\",\n  spacing: 0,\n  orientation: \"horizontal\",\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  spacing = 0,\n  orientation = \"horizontal\",\n  children,\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }) {\n  return (\n    <ToggleGroupPrimitive.Root\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      data-spacing={spacing}\n      data-orientation={orientation}\n      style={{ \"--gap\": spacing } as React.CSSProperties}\n      className={cn(\n        \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider\n        value={{ variant, size, spacing, orientation }}\n      >\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive.Root>\n  )\n}\n\nfunction ToggleGroupItem({\n  className,\n  children,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n  VariantProps<typeof toggleVariants>) {\n  const context = React.useContext(ToggleGroupContext)\n\n  return (\n    <ToggleGroupPrimitive.Item\n      data-slot=\"toggle-group-item\"\n      data-variant={context.variant || variant}\n      data-size={context.size || size}\n      data-spacing={context.spacing}\n      className={cn(\n        \"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </ToggleGroupPrimitive.Item>\n  )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nconst toggleVariants = cva(\n  \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline: \"border border-input bg-transparent hover:bg-muted\",\n      },\n      size: {\n        default: \"h-8 min-w-8 px-2\",\n        sm: \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]\",\n        lg: \"h-9 min-w-9 px-2.5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Toggle({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n  VariantProps<typeof toggleVariants>) {\n  return (\n    <TogglePrimitive.Root\n      data-slot=\"toggle\"\n      className={cn(toggleVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Toggle, toggleVariants }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui/tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nfunction TooltipProvider({\n  delayDuration = 0,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delayDuration={delayDuration}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n  return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n  className,\n  sideOffset = 0,\n  children,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Content\n        data-slot=\"tooltip-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\" />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/accordion.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nfunction Accordion({\n  className,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n  return (\n    <AccordionPrimitive.Root\n      data-slot=\"accordion\"\n      className={cn(\"flex w-full flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n  return (\n    <AccordionPrimitive.Item\n      data-slot=\"accordion-item\"\n      className={cn(\"not-last:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        data-slot=\"accordion-trigger\"\n        className={cn(\n          \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-start text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ms-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <ChevronDownIcon\n          data-slot=\"accordion-trigger-icon\"\n          className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n        />\n        <ChevronUpIcon\n          data-slot=\"accordion-trigger-icon\"\n          className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n        />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\nfunction AccordionContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n  return (\n    <AccordionPrimitive.Content\n      data-slot=\"accordion-content\"\n      className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n      {...props}\n    >\n      <div\n        className={cn(\n          \"h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n          className\n        )}\n      >\n        {children}\n      </div>\n    </AccordionPrimitive.Content>\n  )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/alert-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nfunction AlertDialog({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n  return (\n    <AlertDialogPrimitive.Overlay\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n  size?: \"default\" | \"sm\"\n}) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content\n        data-slot=\"alert-dialog-content\"\n        data-size={size}\n        className={cn(\n          \"group/alert-dialog-content fixed start-1/2 top-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm rtl:translate-x-1/2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\n        \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\n        \"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\n        \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Action\n        data-slot=\"alert-dialog-action\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = \"outline\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Cancel\n        data-slot=\"alert-dialog-cancel\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst alertVariants = cva(\n  \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-start text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pe-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-card text-card-foreground\",\n        destructive:\n          \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-action\"\n      className={cn(\"absolute end-2 top-2\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/aspect-ratio.tsx",
    "content": "\"use client\"\n\nimport { AspectRatio as AspectRatioPrimitive } from \"radix-ui\"\n\nfunction AspectRatio({\n  ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n  return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nfunction Avatar({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n  size?: \"default\" | \"sm\" | \"lg\"\n}) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(\n        \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarImage({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\n        \"aspect-square size-full rounded-full object-cover\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"avatar-badge\"\n      className={cn(\n        \"absolute end-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n        \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n        \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n        \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroupCount({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Avatar,\n  AvatarImage,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarBadge,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/badge.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nconst badgeVariants = cva(\n  \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        secondary:\n          \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n        destructive:\n          \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n        outline:\n          \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n        ghost:\n          \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"span\"\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      data-variant={variant}\n      className={cn(badgeVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/breadcrumb.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      aria-label=\"breadcrumb\"\n      data-slot=\"breadcrumb\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n  return (\n    <ol\n      data-slot=\"breadcrumb-list\"\n      className={cn(\n        \"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-item\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbLink({\n  asChild,\n  className,\n  ...props\n}: React.ComponentProps<\"a\"> & {\n  asChild?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"breadcrumb-link\"\n      className={cn(\"transition-colors hover:text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-page\"\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      className={cn(\"font-normal text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\"[&>svg]:size-3.5\", className)}\n      {...props}\n    >\n      {children ?? <ChevronRightIcon className=\"rtl:rotate-180\" />}\n    </li>\n  )\n}\n\nfunction BreadcrumbEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"flex size-5 items-center justify-center [&>svg]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More</span>\n    </span>\n  )\n}\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/button-group.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\nimport { Separator } from \"@/examples/radix/ui-rtl/separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nconst buttonGroupVariants = cva(\n  \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n  {\n    variants: {\n      orientation: {\n        horizontal:\n          \"[&>*:not(:first-child)]:rounded-s-none [&>*:not(:first-child)]:border-s-0 [&>*:not(:last-child)]:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-lg!\",\n        vertical:\n          \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"horizontal\",\n    },\n  }\n)\n\nfunction ButtonGroup({\n  className,\n  orientation,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"button-group\"\n      data-orientation={orientation}\n      className={cn(buttonGroupVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupText({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  asChild?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"div\"\n\n  return (\n    <Comp\n      className={cn(\n        \"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupSeparator({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"button-group-separator\"\n      orientation={orientation}\n      className={cn(\n        \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n  buttonGroupVariants,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/button.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nconst buttonVariants = cva(\n  \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        outline:\n          \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n        secondary:\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n        ghost:\n          \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n        destructive:\n          \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default:\n          \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n        xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3\",\n        sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n        lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3\",\n        icon: \"size-8\",\n        \"icon-xs\":\n          \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n        \"icon-sm\":\n          \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n        \"icon-lg\": \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/calendar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button, buttonVariants } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n  DayPicker,\n  getDefaultClassNames,\n  type DayButton,\n  type Locale,\n} from \"react-day-picker\"\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  locale,\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      locale={locale}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(locale?.code, { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"cn-calendar-dropdown-root relative rounded-(--cell-radius)\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute inset-0 bg-popover opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\",\n          props.showWeekNumber\n            ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-s-(--cell-radius)\"\n            : \"[&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius)\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"relative isolate z-0 rounded-s-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:end-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\n          \"relative isolate z-0 rounded-e-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:start-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_end\n        ),\n        today: cn(\n          \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <ChevronLeftIcon\n                className={cn(\"size-4 rtl:rotate-180\", className)}\n                {...props}\n              />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <ChevronRightIcon\n                className={cn(\"size-4 rtl:rotate-180\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n          )\n        },\n        DayButton: ({ ...props }) => (\n          <CalendarDayButton locale={locale} {...props} />\n        ),\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  locale,\n  ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      ref={ref}\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString(locale?.code)}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/card.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Card({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n  return (\n    <div\n      data-slot=\"card\"\n      data-size={size}\n      className={cn(\n        \"group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      className={cn(\n        \"cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn(\n        \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\n        \"flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardAction,\n  CardDescription,\n  CardContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/carousel.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nfunction Carousel({\n  orientation = \"horizontal\",\n  opts,\n  setApi,\n  plugins,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n  const [carouselRef, api] = useEmblaCarousel(\n    {\n      ...opts,\n      axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n    },\n    plugins\n  )\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n  const onSelect = React.useCallback((api: CarouselApi) => {\n    if (!api) return\n    setCanScrollPrev(api.canScrollPrev())\n    setCanScrollNext(api.canScrollNext())\n  }, [])\n\n  const scrollPrev = React.useCallback(() => {\n    api?.scrollPrev()\n  }, [api])\n\n  const scrollNext = React.useCallback(() => {\n    api?.scrollNext()\n  }, [api])\n\n  const handleKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === \"ArrowLeft\") {\n        event.preventDefault()\n        scrollPrev()\n      } else if (event.key === \"ArrowRight\") {\n        event.preventDefault()\n        scrollNext()\n      }\n    },\n    [scrollPrev, scrollNext]\n  )\n\n  React.useEffect(() => {\n    if (!api || !setApi) return\n    setApi(api)\n  }, [api, setApi])\n\n  React.useEffect(() => {\n    if (!api) return\n    onSelect(api)\n    api.on(\"reInit\", onSelect)\n    api.on(\"select\", onSelect)\n\n    return () => {\n      api?.off(\"select\", onSelect)\n    }\n  }, [api, onSelect])\n\n  return (\n    <CarouselContext.Provider\n      value={{\n        carouselRef,\n        api: api,\n        opts,\n        orientation:\n          orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n        scrollPrev,\n        scrollNext,\n        canScrollPrev,\n        canScrollNext,\n      }}\n    >\n      <div\n        onKeyDownCapture={handleKeyDown}\n        className={cn(\"relative\", className)}\n        role=\"region\"\n        aria-roledescription=\"carousel\"\n        data-slot=\"carousel\"\n        {...props}\n      >\n        {children}\n      </div>\n    </CarouselContext.Provider>\n  )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div\n      ref={carouselRef}\n      className=\"overflow-hidden\"\n      data-slot=\"carousel-content\"\n    >\n      <div\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ms-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      data-slot=\"carousel-item\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"ps-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CarouselPrevious({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-previous\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute touch-manipulation rounded-full\",\n        orientation === \"horizontal\"\n          ? \"-start-12 top-1/2 -translate-y-1/2\"\n          : \"start-1/2 -top-12 -translate-x-1/2 rotate-90 rtl:translate-x-1/2\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <ChevronLeftIcon className=\"rtl:rotate-180\" />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n}\n\nfunction CarouselNext({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-next\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute touch-manipulation rounded-full\",\n        orientation === \"horizontal\"\n          ? \"-end-12 top-1/2 -translate-y-1/2\"\n          : \"start-1/2 -bottom-12 -translate-x-1/2 rotate-90 rtl:translate-x-1/2\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <ChevronRightIcon className=\"rtl:rotate-180\" />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n}\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n  useCarousel,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/chart.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport * as RechartsPrimitive from \"recharts\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode\n    icon?: React.ComponentType\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  )\n}\n\ntype ChartContextProps = {\n  config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n  const context = React.useContext(ChartContext)\n\n  if (!context) {\n    throw new Error(\"useChart must be used within a <ChartContainer />\")\n  }\n\n  return context\n}\n\nfunction ChartContainer({\n  id,\n  className,\n  children,\n  config,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  config: ChartConfig\n  children: React.ComponentProps<\n    typeof RechartsPrimitive.ResponsiveContainer\n  >[\"children\"]\n}) {\n  const uniqueId = React.useId()\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-slot=\"chart\"\n        data-chart={chartId}\n        className={cn(\n          \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n          className\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([, config]) => config.theme || config.color\n  )\n\n  if (!colorConfig.length) {\n    return null\n  }\n\n  return (\n    <style\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color\n    return color ? `  --color-${key}: ${color};` : null\n  })\n  .join(\"\\n\")}\n}\n`\n          )\n          .join(\"\\n\"),\n      }}\n    />\n  )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n  active,\n  payload,\n  className,\n  indicator = \"dot\",\n  hideLabel = false,\n  hideIndicator = false,\n  label,\n  labelFormatter,\n  labelClassName,\n  formatter,\n  color,\n  nameKey,\n  labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n  React.ComponentProps<\"div\"> & {\n    hideLabel?: boolean\n    hideIndicator?: boolean\n    indicator?: \"line\" | \"dot\" | \"dashed\"\n    nameKey?: string\n    labelKey?: string\n  }) {\n  const { config } = useChart()\n\n  const tooltipLabel = React.useMemo(() => {\n    if (hideLabel || !payload?.length) {\n      return null\n    }\n\n    const [item] = payload\n    const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\n    const value =\n      !labelKey && typeof label === \"string\"\n        ? config[label as keyof typeof config]?.label || label\n        : itemConfig?.label\n\n    if (labelFormatter) {\n      return (\n        <div className={cn(\"font-medium\", labelClassName)}>\n          {labelFormatter(value, payload)}\n        </div>\n      )\n    }\n\n    if (!value) {\n      return null\n    }\n\n    return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n  }, [\n    label,\n    labelFormatter,\n    payload,\n    hideLabel,\n    labelClassName,\n    config,\n    labelKey,\n  ])\n\n  if (!active || !payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\n        \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n        className\n      )}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload\n          .filter((item) => item.type !== \"none\")\n          .map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\n            const indicatorColor = color || item.payload.fill || item.color\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                  indicator === \"dot\" && \"items-center\"\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n                            {\n                              \"h-2.5 w-2.5\": indicator === \"dot\",\n                              \"w-1\": indicator === \"line\",\n                              \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                                indicator === \"dashed\",\n                              \"my-0.5\": nestLabel && indicator === \"dashed\",\n                            }\n                          )}\n                          style={\n                            {\n                              \"--color-bg\": indicatorColor,\n                              \"--color-border\": indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        \"flex flex-1 justify-between leading-none\",\n                        nestLabel ? \"items-end\" : \"items-center\"\n                      )}\n                    >\n                      <div className=\"grid gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            )\n          })}\n      </div>\n    </div>\n  )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n  className,\n  hideIcon = false,\n  payload,\n  verticalAlign = \"bottom\",\n  nameKey,\n}: React.ComponentProps<\"div\"> &\n  Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n    hideIcon?: boolean\n    nameKey?: string\n  }) {\n  const { config } = useChart()\n\n  if (!payload?.length) {\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\n        \"flex items-center justify-center gap-4\",\n        verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n        className\n      )}\n    >\n      {payload\n        .filter((item) => item.type !== \"none\")\n        .map((item) => {\n          const key = `${nameKey || item.dataKey || \"value\"}`\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          )\n        })}\n    </div>\n  )\n}\n\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string\n) {\n  if (typeof payload !== \"object\" || payload === null) {\n    return undefined\n  }\n\n  const payloadPayload =\n    \"payload\" in payload &&\n    typeof payload.payload === \"object\" &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined\n\n  let configLabelKey: string = key\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === \"string\"\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config]\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/checkbox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon } from \"lucide-react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nfunction Checkbox({\n  className,\n  ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n      >\n        <CheckIcon />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/collapsible.tsx",
    "content": "\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nfunction Collapsible({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleTrigger\n      data-slot=\"collapsible-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction CollapsibleContent({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleContent\n      data-slot=\"collapsible-content\"\n      {...props}\n    />\n  )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/combobox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/examples/radix/ui-rtl/input-group\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"lucide-react\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n  return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Trigger.Props) {\n  return (\n    <ComboboxPrimitive.Trigger\n      data-slot=\"combobox-trigger\"\n      className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n      {...props}\n    >\n      {children}\n      <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n    </ComboboxPrimitive.Trigger>\n  )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n  return (\n    <ComboboxPrimitive.Clear\n      data-slot=\"combobox-clear\"\n      render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n      className={cn(className)}\n      {...props}\n    >\n      <XIcon className=\"pointer-events-none\" />\n    </ComboboxPrimitive.Clear>\n  )\n}\n\nfunction ComboboxInput({\n  className,\n  children,\n  disabled = false,\n  showTrigger = true,\n  showClear = false,\n  ...props\n}: ComboboxPrimitive.Input.Props & {\n  showTrigger?: boolean\n  showClear?: boolean\n}) {\n  return (\n    <InputGroup className={cn(\"w-auto\", className)}>\n      <ComboboxPrimitive.Input\n        render={<InputGroupInput disabled={disabled} />}\n        {...props}\n      />\n      <InputGroupAddon align=\"inline-end\">\n        {showTrigger && (\n          <InputGroupButton\n            size=\"icon-xs\"\n            variant=\"ghost\"\n            asChild\n            data-slot=\"input-group-button\"\n            className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n            disabled={disabled}\n          >\n            <ComboboxTrigger />\n          </InputGroupButton>\n        )}\n        {showClear && <ComboboxClear disabled={disabled} />}\n      </InputGroupAddon>\n      {children}\n    </InputGroup>\n  )\n}\n\nfunction ComboboxContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 6,\n  align = \"start\",\n  alignOffset = 0,\n  anchor,\n  ...props\n}: ComboboxPrimitive.Popup.Props &\n  Pick<\n    ComboboxPrimitive.Positioner.Props,\n    \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n  >) {\n  return (\n    <ComboboxPrimitive.Portal>\n      <ComboboxPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        anchor={anchor}\n        className=\"isolate z-50\"\n      >\n        <ComboboxPrimitive.Popup\n          data-slot=\"combobox-content\"\n          data-chips={!!anchor}\n          className={cn(\n            \"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </ComboboxPrimitive.Positioner>\n    </ComboboxPrimitive.Portal>\n  )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n  return (\n    <ComboboxPrimitive.List\n      data-slot=\"combobox-list\"\n      className={cn(\n        \"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxItem({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Item.Props) {\n  return (\n    <ComboboxPrimitive.Item\n      data-slot=\"combobox-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ComboboxPrimitive.ItemIndicator\n        render={\n          <span className=\"pointer-events-none absolute end-2 flex size-4 items-center justify-center\" />\n        }\n      >\n        <CheckIcon className=\"pointer-events-none\" />\n      </ComboboxPrimitive.ItemIndicator>\n    </ComboboxPrimitive.Item>\n  )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n  return (\n    <ComboboxPrimitive.Group\n      data-slot=\"combobox-group\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxLabel({\n  className,\n  ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n  return (\n    <ComboboxPrimitive.GroupLabel\n      data-slot=\"combobox-label\"\n      className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n  return (\n    <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n  )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n  return (\n    <ComboboxPrimitive.Empty\n      data-slot=\"combobox-empty\"\n      className={cn(\n        \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxSeparator({\n  className,\n  ...props\n}: ComboboxPrimitive.Separator.Props) {\n  return (\n    <ComboboxPrimitive.Separator\n      data-slot=\"combobox-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChips({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n  ComboboxPrimitive.Chips.Props) {\n  return (\n    <ComboboxPrimitive.Chips\n      data-slot=\"combobox-chips\"\n      className={cn(\n        \"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChip({\n  className,\n  children,\n  showRemove = true,\n  ...props\n}: ComboboxPrimitive.Chip.Props & {\n  showRemove?: boolean\n}) {\n  return (\n    <ComboboxPrimitive.Chip\n      data-slot=\"combobox-chip\"\n      className={cn(\n        \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pe-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showRemove && (\n        <ComboboxPrimitive.ChipRemove\n          render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n          className=\"-ms-1 opacity-50 hover:opacity-100\"\n          data-slot=\"combobox-chip-remove\"\n        >\n          <XIcon className=\"pointer-events-none\" />\n        </ComboboxPrimitive.ChipRemove>\n      )}\n    </ComboboxPrimitive.Chip>\n  )\n}\n\nfunction ComboboxChipsInput({\n  className,\n  ...props\n}: ComboboxPrimitive.Input.Props) {\n  return (\n    <ComboboxPrimitive.Input\n      data-slot=\"combobox-chip-input\"\n      className={cn(\"min-w-16 flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction useComboboxAnchor() {\n  return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n  Combobox,\n  ComboboxInput,\n  ComboboxContent,\n  ComboboxList,\n  ComboboxItem,\n  ComboboxGroup,\n  ComboboxLabel,\n  ComboboxCollection,\n  ComboboxEmpty,\n  ComboboxSeparator,\n  ComboboxChips,\n  ComboboxChip,\n  ComboboxChipsInput,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/examples/radix/ui-rtl/dialog\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n} from \"@/examples/radix/ui-rtl/input-group\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { CheckIcon, SearchIcon } from \"lucide-react\"\n\nfunction Command({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n  return (\n    <CommandPrimitive\n      data-slot=\"command\"\n      className={cn(\n        \"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandDialog({\n  title = \"Command Palette\",\n  description = \"Search for a command to run...\",\n  children,\n  className,\n  showCloseButton = false,\n  ...props\n}: React.ComponentProps<typeof Dialog> & {\n  title?: string\n  description?: string\n  className?: string\n  showCloseButton?: boolean\n}) {\n  return (\n    <Dialog {...props}>\n      <DialogHeader className=\"sr-only\">\n        <DialogTitle>{title}</DialogTitle>\n        <DialogDescription>{description}</DialogDescription>\n      </DialogHeader>\n      <DialogContent\n        className={cn(\n          \"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\",\n          className\n        )}\n        showCloseButton={showCloseButton}\n      >\n        {children}\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction CommandInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n  return (\n    <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n      <InputGroup className=\"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:ps-2!\">\n        <CommandPrimitive.Input\n          data-slot=\"command-input\"\n          className={cn(\n            \"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n            className\n          )}\n          {...props}\n        />\n        <InputGroupAddon>\n          <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n\nfunction CommandList({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n  return (\n    <CommandPrimitive.List\n      data-slot=\"command-list\"\n      className={cn(\n        \"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandEmpty({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n  return (\n    <CommandPrimitive.Empty\n      data-slot=\"command-empty\"\n      className={cn(\"py-6 text-center text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n  return (\n    <CommandPrimitive.Group\n      data-slot=\"command-group\"\n      className={cn(\n        \"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n  return (\n    <CommandPrimitive.Separator\n      data-slot=\"command-separator\"\n      className={cn(\"-mx-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n  return (\n    <CommandPrimitive.Item\n      data-slot=\"command-item\"\n      className={cn(\n        \"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <CheckIcon className=\"ms-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n    </CommandPrimitive.Item>\n  )\n}\n\nfunction CommandShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"command-shortcut\"\n      className={cn(\n        \"ms-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\n\nfunction ContextMenu({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n  return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n  return (\n    <ContextMenuPrimitive.Trigger\n      data-slot=\"context-menu-trigger\"\n      className={cn(\"select-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuGroup({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n  return (\n    <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n  )\n}\n\nfunction ContextMenuPortal({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n  return (\n    <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n  )\n}\n\nfunction ContextMenuSub({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n  return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n  return (\n    <ContextMenuPrimitive.RadioGroup\n      data-slot=\"context-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n  return (\n    <ContextMenuPrimitive.Portal>\n      <ContextMenuPrimitive.Content\n        data-slot=\"context-menu-content\"\n        className={cn(\n          \"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </ContextMenuPrimitive.Portal>\n  )\n}\n\nfunction ContextMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <ContextMenuPrimitive.Item\n      data-slot=\"context-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.SubTrigger\n      data-slot=\"context-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ms-auto rtl:rotate-180\" />\n    </ContextMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction ContextMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n  return (\n    <ContextMenuPrimitive.SubContent\n      data-slot=\"context-menu-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-lg duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      data-slot=\"context-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute end-2\">\n        <ContextMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </ContextMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction ContextMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.RadioItem\n      data-slot=\"context-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute end-2\">\n        <ContextMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </ContextMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.RadioItem>\n  )\n}\n\nfunction ContextMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.Label\n      data-slot=\"context-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:ps-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n  return (\n    <ContextMenuPrimitive.Separator\n      data-slot=\"context-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"context-menu-shortcut\"\n      className={cn(\n        \"ms-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ContextMenu,\n  ContextMenuTrigger,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuCheckboxItem,\n  ContextMenuRadioItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuGroup,\n  ContextMenuPortal,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuRadioGroup,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nfunction Dialog({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n  return (\n    <DialogPrimitive.Overlay\n      data-slot=\"dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal>\n      <DialogOverlay />\n      <DialogPrimitive.Content\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"fixed start-1/2 top-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm rtl:translate-x-1/2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n            <Button\n              variant=\"ghost\"\n              className=\"absolute end-2 top-2\"\n              size=\"icon-sm\"\n            >\n              <XIcon />\n              <span className=\"sr-only\">Close</span>\n            </Button>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Content>\n    </DialogPortal>\n  )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-header\"\n      className={cn(\"flex flex-col gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogFooter({\n  className,\n  showCloseButton = false,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close asChild>\n          <Button variant=\"outline\">Close</Button>\n        </DialogPrimitive.Close>\n      )}\n    </div>\n  )\n}\n\nfunction DialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn(\n        \"cn-font-heading text-base leading-none font-medium\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\n        \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/direction.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Direction } from \"radix-ui\"\n\nfunction DirectionProvider({\n  dir,\n  direction,\n  children,\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\"dir\"]\n}) {\n  return (\n    <Direction.DirectionProvider dir={direction ?? dir}>\n      {children}\n    </Direction.DirectionProvider>\n  )\n}\n\nconst useDirection = Direction.useDirection\n\nexport { DirectionProvider, useDirection }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/drawer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n  return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n  return (\n    <DrawerPortal data-slot=\"drawer-portal\">\n      <DrawerOverlay />\n      <DrawerPrimitive.Content\n        data-slot=\"drawer-content\"\n        className={cn(\n          \"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:start-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-e-xl data-[vaul-drawer-direction=left]:border-e data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:end-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-s-xl data-[vaul-drawer-direction=right]:border-s data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n        {children}\n      </DrawerPrimitive.Content>\n    </DrawerPortal>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\n        \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-start\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nfunction DropdownMenu({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n  return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n  return (\n    <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n  )\n}\n\nfunction DropdownMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n  return (\n    <DropdownMenuPrimitive.Trigger\n      data-slot=\"dropdown-menu-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuContent({\n  className,\n  align = \"start\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n  return (\n    <DropdownMenuPrimitive.Portal>\n      <DropdownMenuPrimitive.Content\n        data-slot=\"dropdown-menu-content\"\n        sideOffset={sideOffset}\n        align={align}\n        className={cn(\n          \"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </DropdownMenuPrimitive.Portal>\n  )\n}\n\nfunction DropdownMenuGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n  return (\n    <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n  )\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <DropdownMenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-checkbox-item-indicator\"\n      >\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction DropdownMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n  return (\n    <DropdownMenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-radio-item-indicator\"\n      >\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.RadioItem>\n  )\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.Label\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:ps-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n  return (\n    <DropdownMenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        \"ms-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n  return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.SubTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ms-auto rtl:rotate-180\" />\n    </DropdownMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction DropdownMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n  return (\n    <DropdownMenuPrimitive.SubContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/empty.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty\"\n      className={cn(\n        \"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-header\"\n      className={cn(\"flex max-w-sm flex-col items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nconst emptyMediaVariants = cva(\n  \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction EmptyMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n  return (\n    <div\n      data-slot=\"empty-icon\"\n      data-variant={variant}\n      className={cn(emptyMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-title\"\n      className={cn(\n        \"cn-font-heading text-sm font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <div\n      data-slot=\"empty-description\"\n      className={cn(\n        \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-content\"\n      className={cn(\n        \"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Empty,\n  EmptyHeader,\n  EmptyTitle,\n  EmptyDescription,\n  EmptyContent,\n  EmptyMedia,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/field.tsx",
    "content": "\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Label } from \"@/examples/radix/ui-rtl/label\"\nimport { Separator } from \"@/examples/radix/ui-rtl/separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n  return (\n    <fieldset\n      data-slot=\"field-set\"\n      className={cn(\n        \"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLegend({\n  className,\n  variant = \"legend\",\n  ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n  return (\n    <legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\n        \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\n        \"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst fieldVariants = cva(\n  \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n  {\n    variants: {\n      orientation: {\n        vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n        horizontal:\n          \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n        responsive:\n          \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"vertical\",\n    },\n  }\n)\n\nfunction Field({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"field\"\n      data-orientation={orientation}\n      className={cn(fieldVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn(\n        \"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof Label>) {\n  return (\n    <Label\n      data-slot=\"field-label\"\n      className={cn(\n        \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n        \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-label\"\n      className={cn(\n        \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        \"text-start text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n        \"last:mt-0 nth-last-2:-mt-1\",\n        \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  children?: React.ReactNode\n}) {\n  return (\n    <div\n      data-slot=\"field-separator\"\n      data-content={!!children}\n      className={cn(\n        \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n        className\n      )}\n      {...props}\n    >\n      <Separator className=\"absolute inset-0 top-1/2\" />\n      {children && (\n        <span\n          className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n          data-slot=\"field-separator-content\"\n        >\n          {children}\n        </span>\n      )}\n    </div>\n  )\n}\n\nfunction FieldError({\n  className,\n  children,\n  errors,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  errors?: Array<{ message?: string } | undefined>\n}) {\n  const content = useMemo(() => {\n    if (children) {\n      return children\n    }\n\n    if (!errors?.length) {\n      return null\n    }\n\n    const uniqueErrors = [\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\n    ]\n\n    if (uniqueErrors?.length == 1) {\n      return uniqueErrors[0]?.message\n    }\n\n    return (\n      <ul className=\"ms-4 flex list-disc flex-col gap-1\">\n        {uniqueErrors.map(\n          (error, index) =>\n            error?.message && <li key={index}>{error.message}</li>\n        )}\n      </ul>\n    )\n  }, [children, errors])\n\n  if (!content) {\n    return null\n  }\n\n  return (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      className={cn(\"text-sm font-normal text-destructive\", className)}\n      {...props}\n    >\n      {content}\n    </div>\n  )\n}\n\nexport {\n  Field,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldContent,\n  FieldTitle,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/hover-card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nfunction HoverCard({\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n  return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n  return (\n    <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n  )\n}\n\nfunction HoverCardContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n  return (\n    <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n      <HoverCardPrimitive.Content\n        data-slot=\"hover-card-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </HoverCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { Input } from \"@/examples/radix/ui-rtl/input\"\nimport { Textarea } from \"@/examples/radix/ui-rtl/textarea\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-group\"\n      role=\"group\"\n      className={cn(\n        \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pe-1.5 has-[>[data-align=inline-start]]:[&>input]:ps-1.5\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupAddonVariants = cva(\n  \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      align: {\n        \"inline-start\":\n          \"order-first ps-2 has-[>button]:ms-[-0.3rem] has-[>kbd]:ms-[-0.15rem]\",\n        \"inline-end\":\n          \"order-last pe-2 has-[>button]:me-[-0.3rem] has-[>kbd]:me-[-0.15rem]\",\n        \"block-start\":\n          \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n        \"block-end\":\n          \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n      },\n    },\n    defaultVariants: {\n      align: \"inline-start\",\n    },\n  }\n)\n\nfunction InputGroupAddon({\n  className,\n  align = \"inline-start\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"input-group-addon\"\n      data-align={align}\n      className={cn(inputGroupAddonVariants({ align }), className)}\n      onClick={(e) => {\n        if ((e.target as HTMLElement).closest(\"button\")) {\n          return\n        }\n        e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n      }}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupButtonVariants = cva(\n  \"flex items-center gap-2 text-sm shadow-none\",\n  {\n    variants: {\n      size: {\n        xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n        sm: \"\",\n        \"icon-xs\":\n          \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n        \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n      },\n    },\n    defaultVariants: {\n      size: \"xs\",\n    },\n  }\n)\n\nfunction InputGroupButton({\n  className,\n  type = \"button\",\n  variant = \"ghost\",\n  size = \"xs\",\n  ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n  VariantProps<typeof inputGroupButtonVariants>) {\n  return (\n    <Button\n      type={type}\n      data-size={size}\n      variant={variant}\n      className={cn(inputGroupButtonVariants({ size }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      className={cn(\n        \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupInput({\n  className,\n  ...props\n}: React.ComponentProps<\"input\">) {\n  return (\n    <Input\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupTextarea({\n  className,\n  ...props\n}: React.ComponentProps<\"textarea\">) {\n  return (\n    <Textarea\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupInput,\n  InputGroupTextarea,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/input-otp.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        \"cn-input-otp flex items-center has-disabled:opacity-50\",\n        containerClassName\n      )}\n      spellCheck={false}\n      className={cn(\"disabled:cursor-not-allowed\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\n        \"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  index: number\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext)\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        \"relative flex size-8 items-center justify-center border-y border-e border-input text-sm transition-all outline-none first:rounded-s-lg first:border-s last:rounded-e-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-separator\"\n      className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n      role=\"separator\"\n      {...props}\n    >\n      <MinusIcon />\n    </div>\n  )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/input.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <input\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/item.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Separator } from \"@/examples/radix/ui-rtl/separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      role=\"list\"\n      data-slot=\"item-group\"\n      className={cn(\n        \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"item-separator\"\n      orientation=\"horizontal\"\n      className={cn(\"my-2\", className)}\n      {...props}\n    />\n  )\n}\n\nconst itemVariants = cva(\n  \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\",\n  {\n    variants: {\n      variant: {\n        default: \"border-transparent\",\n        outline: \"border-border\",\n        muted: \"border-transparent bg-muted/50\",\n      },\n      size: {\n        default: \"gap-2.5 px-3 py-2.5\",\n        sm: \"gap-2.5 px-3 py-2.5\",\n        xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Item({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> &\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"div\"\n  return (\n    <Comp\n      data-slot=\"item\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(itemVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nconst itemMediaVariants = cva(\n  \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"[&_svg:not([class*='size-'])]:size-4\",\n        image:\n          \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction ItemMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n  return (\n    <div\n      data-slot=\"item-media\"\n      data-variant={variant}\n      className={cn(itemMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-content\"\n      className={cn(\n        \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-title\"\n      className={cn(\n        \"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"item-description\"\n      className={cn(\n        \"line-clamp-2 text-start text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-actions\"\n      className={cn(\"flex items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-header\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-footer\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Item,\n  ItemMedia,\n  ItemContent,\n  ItemActions,\n  ItemGroup,\n  ItemSeparator,\n  ItemTitle,\n  ItemDescription,\n  ItemHeader,\n  ItemFooter,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/kbd.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      data-slot=\"kbd\"\n      className={cn(\n        \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <kbd\n      data-slot=\"kbd-group\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Kbd, KbdGroup }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nfunction Label({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  return (\n    <LabelPrimitive.Root\n      data-slot=\"label\"\n      className={cn(\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\nimport { Menubar as MenubarPrimitive } from \"radix-ui\"\n\nfunction Menubar({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n  return (\n    <MenubarPrimitive.Root\n      data-slot=\"menubar\"\n      className={cn(\n        \"flex h-8 items-center gap-0.5 rounded-lg border p-[3px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarMenu({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n  return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n  return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n  return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n  return (\n    <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n  )\n}\n\nfunction MenubarTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n  return (\n    <MenubarPrimitive.Trigger\n      data-slot=\"menubar-trigger\"\n      className={cn(\n        \"flex items-center rounded-sm px-1.5 py-[2px] text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarContent({\n  className,\n  align = \"start\",\n  alignOffset = -4,\n  sideOffset = 8,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n  return (\n    <MenubarPortal>\n      <MenubarPrimitive.Content\n        data-slot=\"menubar-content\"\n        align={align}\n        alignOffset={alignOffset}\n        sideOffset={sideOffset}\n        className={cn(\n          \"cn-menu-target cn-menu-translucent z-50 min-w-36 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\",\n          className\n        )}\n        {...props}\n      />\n    </MenubarPortal>\n  )\n}\n\nfunction MenubarItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <MenubarPrimitive.Item\n      data-slot=\"menubar-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/menubar-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.CheckboxItem\n      data-slot=\"menubar-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-7 pe-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\">\n        <MenubarPrimitive.ItemIndicator>\n          <CheckIcon />\n        </MenubarPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </MenubarPrimitive.CheckboxItem>\n  )\n}\n\nfunction MenubarRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.RadioItem\n      data-slot=\"menubar-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 ps-7 pe-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\">\n        <MenubarPrimitive.ItemIndicator>\n          <CheckIcon />\n        </MenubarPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </MenubarPrimitive.RadioItem>\n  )\n}\n\nfunction MenubarLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.Label\n      data-slot=\"menubar-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-1.5 py-1 text-sm font-medium data-inset:ps-7\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n  return (\n    <MenubarPrimitive.Separator\n      data-slot=\"menubar-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"menubar-shortcut\"\n      className={cn(\n        \"ms-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSub({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n  return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.SubTrigger\n      data-slot=\"menubar-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ms-auto size-4 rtl:rotate-180\" />\n    </MenubarPrimitive.SubTrigger>\n  )\n}\n\nfunction MenubarSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n  return (\n    <MenubarPrimitive.SubContent\n      data-slot=\"menubar-sub-content\"\n      className={cn(\n        \"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Menubar,\n  MenubarPortal,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarGroup,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarItem,\n  MenubarShortcut,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSub,\n  MenubarSubTrigger,\n  MenubarSubContent,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/native-select.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\ntype NativeSelectProps = Omit<React.ComponentProps<\"select\">, \"size\"> & {\n  size?: \"sm\" | \"default\"\n}\n\nfunction NativeSelect({\n  className,\n  size = \"default\",\n  ...props\n}: NativeSelectProps) {\n  return (\n    <div\n      className={cn(\n        \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n        className\n      )}\n      data-slot=\"native-select-wrapper\"\n      data-size={size}\n    >\n      <select\n        data-slot=\"native-select\"\n        data-size={size}\n        className=\"h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 ps-2.5 pe-8 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\"\n        {...props}\n      />\n      <ChevronDownIcon\n        className=\"pointer-events-none absolute end-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground select-none\"\n        aria-hidden=\"true\"\n        data-slot=\"native-select-icon\"\n      />\n    </div>\n  )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n  return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n  className,\n  ...props\n}: React.ComponentProps<\"optgroup\">) {\n  return (\n    <optgroup\n      data-slot=\"native-select-optgroup\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/navigation-menu.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\"\n\nfunction NavigationMenu({\n  className,\n  children,\n  viewport = true,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n  viewport?: boolean\n}) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      data-viewport={viewport}\n      className={cn(\n        \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {viewport && <NavigationMenuViewport />}\n    </NavigationMenuPrimitive.Root>\n  )\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"group flex flex-1 list-none items-center justify-center gap-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg bg-background px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\"\n)\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}{\" \"}\n      <ChevronDownIcon\n        className=\"relative top-px ms-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\"\n        aria-hidden=\"true\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  )\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"start-0 top-0 w-full p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuViewport({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n  return (\n    <div\n      className={cn(\n        \"absolute start-0 top-full isolate z-50 flex justify-center\"\n      )}\n    >\n      <NavigationMenuPrimitive.Viewport\n        data-slot=\"navigation-menu-viewport\"\n        className={cn(\n          \"origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\n        \"flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n  return (\n    <NavigationMenuPrimitive.Indicator\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-ss-sm bg-border shadow-md\" />\n    </NavigationMenuPrimitive.Indicator>\n  )\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuList,\n  NavigationMenuItem,\n  NavigationMenuContent,\n  NavigationMenuTrigger,\n  NavigationMenuLink,\n  NavigationMenuIndicator,\n  NavigationMenuViewport,\n  navigationMenuTriggerStyle,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/pagination.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport {\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  MoreHorizontalIcon,\n} from \"lucide-react\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      role=\"navigation\"\n      aria-label=\"pagination\"\n      data-slot=\"pagination\"\n      className={cn(\"mx-auto flex w-full justify-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationContent({\n  className,\n  ...props\n}: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"pagination-content\"\n      className={cn(\"flex items-center gap-0.5\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n  return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n  isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n  React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n  className,\n  isActive,\n  size = \"icon\",\n  ...props\n}: PaginationLinkProps) {\n  return (\n    <Button\n      asChild\n      variant={isActive ? \"outline\" : \"ghost\"}\n      size={size}\n      className={cn(className)}\n    >\n      <a\n        aria-current={isActive ? \"page\" : undefined}\n        data-slot=\"pagination-link\"\n        data-active={isActive}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nfunction PaginationPrevious({\n  className,\n  text = \"Previous\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to previous page\"\n      size=\"default\"\n      className={cn(\"ps-1.5!\", className)}\n      {...props}\n    >\n      <ChevronLeftIcon data-icon=\"inline-start\" className=\"rtl:rotate-180\" />\n      <span className=\"hidden sm:block\">{text}</span>\n    </PaginationLink>\n  )\n}\n\nfunction PaginationNext({\n  className,\n  text = \"Next\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to next page\"\n      size=\"default\"\n      className={cn(\"pe-1.5!\", className)}\n      {...props}\n    >\n      <span className=\"hidden sm:block\">{text}</span>\n      <ChevronRightIcon data-icon=\"inline-end\" className=\"rtl:rotate-180\" />\n    </PaginationLink>\n  )\n}\n\nfunction PaginationEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden\n      data-slot=\"pagination-ellipsis\"\n      className={cn(\n        \"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More pages</span>\n    </span>\n  )\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nfunction Popover({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Content\n        data-slot=\"popover-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      />\n    </PopoverPrimitive.Portal>\n  )\n}\n\nfunction PopoverAnchor({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n  return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-header\"\n      className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n  return (\n    <div\n      data-slot=\"popover-title\"\n      className={cn(\"cn-font-heading font-medium\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"popover-description\"\n      className={cn(\"text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Popover,\n  PopoverAnchor,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/progress.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nfunction Progress({\n  className,\n  value,\n  ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n  return (\n    <ProgressPrimitive.Root\n      data-slot=\"progress\"\n      className={cn(\n        \"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted\",\n        className\n      )}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className=\"size-full flex-1 bg-primary transition-all\"\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  )\n}\n\nexport { Progress }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nfunction RadioGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n  return (\n    <RadioGroupPrimitive.Root\n      data-slot=\"radio-group\"\n      className={cn(\"grid w-full gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction RadioGroupItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n  return (\n    <RadioGroupPrimitive.Item\n      data-slot=\"radio-group-item\"\n      className={cn(\n        \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"flex size-4 items-center justify-center\"\n      >\n        <span className=\"absolute start-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground rtl:translate-x-1/2\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/resizable.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nfunction ResizablePanelGroup({\n  className,\n  ...props\n}: ResizablePrimitive.GroupProps) {\n  return (\n    <ResizablePrimitive.Group\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: ResizablePrimitive.SeparatorProps & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.Separator\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:start-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:start-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 rtl:after:translate-x-1/2 rtl:aria-[orientation=horizontal]:after:-translate-x-0 [&[aria-orientation=horizontal]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\" />\n      )}\n    </ResizablePrimitive.Separator>\n  )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/scroll-area.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nfunction ScrollArea({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn(\"relative\", className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        data-slot=\"scroll-area-viewport\"\n        className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  )\n}\n\nfunction ScrollBar({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n  return (\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      data-orientation={orientation}\n      orientation={orientation}\n      className={cn(\n        \"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-s data-vertical:border-s-transparent\",\n        className\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.ScrollAreaThumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"relative flex-1 rounded-full bg-border\"\n      />\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nfunction Select({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n  return (\n    <SelectPrimitive.Group\n      data-slot=\"select-group\"\n      className={cn(\"scroll-my-1 p-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectValue({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 ps-2.5 pe-2 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon asChild>\n        <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = \"item-aligned\",\n  align = \"center\",\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Content\n        data-slot=\"select-content\"\n        data-align-trigger={position === \"item-aligned\"}\n        className={cn(\n          \"cn-menu-target cn-menu-translucent relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          position === \"popper\" &&\n            \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1 rtl:data-[side=left]:translate-x-1 rtl:data-[side=right]:-translate-x-1\",\n          className\n        )}\n        position={position}\n        align={align}\n        {...props}\n      >\n        <SelectScrollUpButton />\n        <SelectPrimitive.Viewport\n          data-position={position}\n          className={cn(\n            \"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\",\n            position === \"popper\" && \"\"\n          )}\n        >\n          {children}\n        </SelectPrimitive.Viewport>\n        <SelectScrollDownButton />\n      </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n  )\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n  return (\n    <SelectPrimitive.Label\n      data-slot=\"select-label\"\n      className={cn(\"px-1.5 py-1 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 ps-1.5 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute end-2 flex size-4 items-center justify-center\">\n        <SelectPrimitive.ItemIndicator>\n          <CheckIcon className=\"pointer-events-none\" />\n        </SelectPrimitive.ItemIndicator>\n      </span>\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  )\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n  return (\n    <SelectPrimitive.ScrollUpButton\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronUpIcon />\n    </SelectPrimitive.ScrollUpButton>\n  )\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n  return (\n    <SelectPrimitive.ScrollDownButton\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronDownIcon />\n    </SelectPrimitive.ScrollDownButton>\n  )\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/separator.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nfunction Separator({\n  className,\n  orientation = \"horizontal\",\n  decorative = true,\n  ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n  return (\n    <SeparatorPrimitive.Root\n      data-slot=\"separator\"\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Separator }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n  return (\n    <SheetPrimitive.Overlay\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n  showCloseButton?: boolean\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Content\n        data-slot=\"sheet-content\"\n        data-side={side}\n        className={cn(\n          \"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-e data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-s data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <SheetPrimitive.Close data-slot=\"sheet-close\" asChild>\n            <Button\n              variant=\"ghost\"\n              className=\"absolute end-3 top-3\"\n              size=\"icon-sm\"\n            >\n              <XIcon />\n              <span className=\"sr-only\">Close</span>\n            </Button>\n          </SheetPrimitive.Close>\n        )}\n      </SheetPrimitive.Content>\n    </SheetPortal>\n  )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn(\"flex flex-col gap-0.5 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn(\n        \"cn-font-heading text-base font-medium text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useIsMobile } from \"@/examples/radix/hooks/use-mobile\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Button } from \"@/examples/radix/ui-rtl/button\"\nimport { Input } from \"@/examples/radix/ui-rtl/input\"\nimport { Separator } from \"@/examples/radix/ui-rtl/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/examples/radix/ui-rtl/sheet\"\nimport { Skeleton } from \"@/examples/radix/ui-rtl/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/examples/radix/ui-rtl/tooltip\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n  state: \"expanded\" | \"collapsed\"\n  open: boolean\n  setOpen: (open: boolean) => void\n  openMobile: boolean\n  setOpenMobile: (open: boolean) => void\n  isMobile: boolean\n  toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n  const context = React.useContext(SidebarContext)\n  if (!context) {\n    throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n  }\n\n  return context\n}\n\nfunction SidebarProvider({\n  defaultOpen = true,\n  open: openProp,\n  onOpenChange: setOpenProp,\n  className,\n  style,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  defaultOpen?: boolean\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}) {\n  const isMobile = useIsMobile()\n  const [openMobile, setOpenMobile] = React.useState(false)\n\n  // This is the internal state of the sidebar.\n  // We use openProp and setOpenProp for control from outside the component.\n  const [_open, _setOpen] = React.useState(defaultOpen)\n  const open = openProp ?? _open\n  const setOpen = React.useCallback(\n    (value: boolean | ((value: boolean) => boolean)) => {\n      const openState = typeof value === \"function\" ? value(open) : value\n      if (setOpenProp) {\n        setOpenProp(openState)\n      } else {\n        _setOpen(openState)\n      }\n\n      // This sets the cookie to keep the sidebar state.\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n    },\n    [setOpenProp, open]\n  )\n\n  // Helper to toggle the sidebar.\n  const toggleSidebar = React.useCallback(() => {\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n  }, [isMobile, setOpen, setOpenMobile])\n\n  // Adds a keyboard shortcut to toggle the sidebar.\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n        (event.metaKey || event.ctrlKey)\n      ) {\n        event.preventDefault()\n        toggleSidebar()\n      }\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n    return () => window.removeEventListener(\"keydown\", handleKeyDown)\n  }, [toggleSidebar])\n\n  // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n  // This makes it easier to style the sidebar with Tailwind classes.\n  const state = open ? \"expanded\" : \"collapsed\"\n\n  const contextValue = React.useMemo<SidebarContextProps>(\n    () => ({\n      state,\n      open,\n      setOpen,\n      isMobile,\n      openMobile,\n      setOpenMobile,\n      toggleSidebar,\n    }),\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n  )\n\n  return (\n    <SidebarContext.Provider value={contextValue}>\n      <div\n        data-slot=\"sidebar-wrapper\"\n        style={\n          {\n            \"--sidebar-width\": SIDEBAR_WIDTH,\n            \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n            ...style,\n          } as React.CSSProperties\n        }\n        className={cn(\n          \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    </SidebarContext.Provider>\n  )\n}\n\nfunction Sidebar({\n  side = \"left\",\n  variant = \"sidebar\",\n  collapsible = \"offcanvas\",\n  className,\n  children,\n  dir,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  side?: \"left\" | \"right\"\n  variant?: \"sidebar\" | \"floating\" | \"inset\"\n  collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n  if (collapsible === \"none\") {\n    return (\n      <div\n        data-slot=\"sidebar\"\n        className={cn(\n          \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n\n  if (isMobile) {\n    return (\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n        <SheetContent\n          dir={dir}\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar\"\n          data-mobile=\"true\"\n          className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n          style={\n            {\n              \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n            } as React.CSSProperties\n          }\n          side={side}\n        >\n          <SheetHeader className=\"sr-only\">\n            <SheetTitle>Sidebar</SheetTitle>\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n          </SheetHeader>\n          <div className=\"flex h-full w-full flex-col\">{children}</div>\n        </SheetContent>\n      </Sheet>\n    )\n  }\n\n  return (\n    <div\n      className=\"group peer hidden text-sidebar-foreground md:block\"\n      data-state={state}\n      data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n      data-variant={variant}\n      data-side={side}\n      data-slot=\"sidebar\"\n    >\n      {/* This is what handles the sidebar gap on desktop */}\n      <div\n        data-slot=\"sidebar-gap\"\n        className={cn(\n          \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n          \"group-data-[collapsible=offcanvas]:w-0\",\n          \"group-data-[side=right]:rotate-180\",\n          variant === \"floating\" || variant === \"inset\"\n            ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n        )}\n      />\n      <div\n        data-slot=\"sidebar-container\"\n        data-side={side}\n        className={cn(\n          \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n          // Adjust the padding for floating and inset variants.\n          variant === \"floating\" || variant === \"inset\"\n            ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-e group-data-[side=right]:border-s\",\n          className\n        )}\n        {...props}\n      >\n        <div\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar-inner\"\n          className=\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\"\n        >\n          {children}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction SidebarTrigger({\n  className,\n  onClick,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <Button\n      data-sidebar=\"trigger\"\n      data-slot=\"sidebar-trigger\"\n      variant=\"ghost\"\n      size=\"icon-sm\"\n      className={cn(className)}\n      onClick={(event) => {\n        onClick?.(event)\n        toggleSidebar()\n      }}\n      {...props}\n    >\n      <PanelLeftIcon className=\"rtl:rotate-180\" />\n      <span className=\"sr-only\">Toggle Sidebar</span>\n    </Button>\n  )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <button\n      data-sidebar=\"rail\"\n      data-slot=\"sidebar-rail\"\n      aria-label=\"Toggle Sidebar\"\n      tabIndex={-1}\n      onClick={toggleSidebar}\n      title=\"Toggle Sidebar\"\n      className={cn(\n        \"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n        \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize rtl:in-data-[side=left]:cursor-e-resize rtl:in-data-[side=right]:cursor-w-resize\",\n        \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize rtl:[[data-side=left][data-state=collapsed]_&]:cursor-w-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize rtl:[[data-side=right][data-state=collapsed]_&]:cursor-e-resize\",\n        \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:start-full hover:group-data-[collapsible=offcanvas]:bg-sidebar rtl:group-data-[collapsible=offcanvas]:-translate-x-0\",\n        \"[[data-side=left][data-collapsible=offcanvas]_&]:-end-2\",\n        \"[[data-side=right][data-collapsible=offcanvas]_&]:-start-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n  return (\n    <main\n      data-slot=\"sidebar-inset\"\n      className={cn(\n        \"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof Input>) {\n  return (\n    <Input\n      data-slot=\"sidebar-input\"\n      data-sidebar=\"input\"\n      className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-header\"\n      data-sidebar=\"header\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-footer\"\n      data-sidebar=\"footer\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"sidebar-separator\"\n      data-sidebar=\"separator\"\n      className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-content\"\n      data-sidebar=\"content\"\n      className={cn(\n        \"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group\"\n      data-sidebar=\"group\"\n      className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupLabel({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"div\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-label\"\n      data-sidebar=\"group-label\"\n      className={cn(\n        \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupAction({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-action\"\n      data-sidebar=\"group-action\"\n      className={cn(\n        \"absolute end-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupContent({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group-content\"\n      data-sidebar=\"group-content\"\n      className={cn(\"w-full text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu\"\n      data-sidebar=\"menu\"\n      className={cn(\"flex w-full min-w-0 flex-col gap-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-item\"\n      data-sidebar=\"menu-item\"\n      className={cn(\"group/menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst sidebarMenuButtonVariants = cva(\n  \"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-start text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n  {\n    variants: {\n      variant: {\n        default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n        outline:\n          \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n      },\n      size: {\n        default: \"h-8 text-sm\",\n        sm: \"h-7 text-xs\",\n        lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction SidebarMenuButton({\n  asChild = false,\n  isActive = false,\n  variant = \"default\",\n  size = \"default\",\n  tooltip,\n  className,\n  ...props\n}: React.ComponentProps<\"button\"> & {\n  asChild?: boolean\n  isActive?: boolean\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n  const Comp = asChild ? Slot.Root : \"button\"\n  const { isMobile, state } = useSidebar()\n\n  const button = (\n    <Comp\n      data-slot=\"sidebar-menu-button\"\n      data-sidebar=\"menu-button\"\n      data-size={size}\n      data-active={isActive}\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n      {...props}\n    />\n  )\n\n  if (!tooltip) {\n    return button\n  }\n\n  if (typeof tooltip === \"string\") {\n    tooltip = {\n      children: tooltip,\n    }\n  }\n\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\n      <TooltipContent\n        side=\"right\"\n        align=\"center\"\n        hidden={state !== \"collapsed\" || isMobile}\n        {...tooltip}\n      />\n    </Tooltip>\n  )\n}\n\nfunction SidebarMenuAction({\n  className,\n  asChild = false,\n  showOnHover = false,\n  ...props\n}: React.ComponentProps<\"button\"> & {\n  asChild?: boolean\n  showOnHover?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-action\"\n      data-sidebar=\"menu-action\"\n      className={cn(\n        \"absolute end-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n        showOnHover &&\n          \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuBadge({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-menu-badge\"\n      data-sidebar=\"menu-badge\"\n      className={cn(\n        \"pointer-events-none absolute end-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSkeleton({\n  className,\n  showIcon = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showIcon?: boolean\n}) {\n  // Random width between 50 to 90%.\n  const [width] = React.useState(() => {\n    return `${Math.floor(Math.random() * 40) + 50}%`\n  })\n\n  return (\n    <div\n      data-slot=\"sidebar-menu-skeleton\"\n      data-sidebar=\"menu-skeleton\"\n      className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n      {...props}\n    >\n      {showIcon && (\n        <Skeleton\n          className=\"size-4 rounded-md\"\n          data-sidebar=\"menu-skeleton-icon\"\n        />\n      )}\n      <Skeleton\n        className=\"h-4 max-w-(--skeleton-width) flex-1\"\n        data-sidebar=\"menu-skeleton-text\"\n        style={\n          {\n            \"--skeleton-width\": width,\n          } as React.CSSProperties\n        }\n      />\n    </div>\n  )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu-sub\"\n      data-sidebar=\"menu-sub\"\n      className={cn(\n        \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-s border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden rtl:-translate-x-px\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubItem({\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-sub-item\"\n      data-sidebar=\"menu-sub-item\"\n      className={cn(\"group/menu-sub-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubButton({\n  asChild = false,\n  size = \"md\",\n  isActive = false,\n  className,\n  ...props\n}: React.ComponentProps<\"a\"> & {\n  asChild?: boolean\n  size?: \"sm\" | \"md\"\n  isActive?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-sub-button\"\n      data-sidebar=\"menu-sub-button\"\n      data-size={size}\n      data-active={isActive}\n      className={cn(\n        \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs rtl:translate-x-px data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarSeparator,\n  SidebarTrigger,\n  useSidebar,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/skeleton.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Slider as SliderPrimitive } from \"radix-ui\"\n\nfunction Slider({\n  className,\n  defaultValue,\n  value,\n  min = 0,\n  max = 100,\n  ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n  const _values = React.useMemo(\n    () =>\n      Array.isArray(value)\n        ? value\n        : Array.isArray(defaultValue)\n          ? defaultValue\n          : [min, max],\n    [value, defaultValue, min, max]\n  )\n\n  return (\n    <SliderPrimitive.Root\n      data-slot=\"slider\"\n      defaultValue={defaultValue}\n      value={value}\n      min={min}\n      max={max}\n      className={cn(\n        \"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\",\n        className\n      )}\n      {...props}\n    >\n      <SliderPrimitive.Track\n        data-slot=\"slider-track\"\n        className=\"relative grow overflow-hidden rounded-full bg-muted data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\"\n      >\n        <SliderPrimitive.Range\n          data-slot=\"slider-range\"\n          className=\"absolute bg-primary select-none data-horizontal:h-full data-vertical:w-full\"\n        />\n      </SliderPrimitive.Track>\n      {Array.from({ length: _values.length }, (_, index) => (\n        <SliderPrimitive.Thumb\n          data-slot=\"slider-thumb\"\n          key={index}\n          className=\"relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50\"\n        />\n      ))}\n    </SliderPrimitive.Root>\n  )\n}\n\nexport { Slider }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/sonner.tsx",
    "content": "\"use client\"\n\nimport {\n  CircleCheckIcon,\n  InfoIcon,\n  Loader2Icon,\n  OctagonXIcon,\n  TriangleAlertIcon,\n} from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = \"system\" } = useTheme()\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps[\"theme\"]}\n      className=\"toaster group\"\n      icons={{\n        success: <CircleCheckIcon className=\"size-4\" />,\n        info: <InfoIcon className=\"size-4\" />,\n        warning: <TriangleAlertIcon className=\"size-4\" />,\n        error: <OctagonXIcon className=\"size-4\" />,\n        loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n      }}\n      style={\n        {\n          \"--normal-bg\": \"var(--popover)\",\n          \"--normal-text\": \"var(--popover-foreground)\",\n          \"--normal-border\": \"var(--border)\",\n          \"--border-radius\": \"var(--radius)\",\n        } as React.CSSProperties\n      }\n      toastOptions={{\n        classNames: {\n          toast: \"cn-toast\",\n        },\n      }}\n      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/spinner.tsx",
    "content": "import { cn } from \"@/examples/radix/lib/utils\"\nimport { Loader2Icon } from \"lucide-react\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <Loader2Icon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/switch.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      data-size={size}\n      className={cn(\n        \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] rtl:group-data-[size=default]/switch:data-checked:-translate-x-[calc(100%-2px)] rtl:group-data-[size=sm]/switch:data-checked:-translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 rtl:group-data-[size=default]/switch:data-unchecked:-translate-x-0 rtl:group-data-[size=sm]/switch:data-unchecked:-translate-x-0 dark:data-unchecked:bg-foreground\"\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n  return (\n    <div\n      data-slot=\"table-container\"\n      className=\"relative w-full overflow-x-auto\"\n    >\n      <table\n        data-slot=\"table\"\n        className={cn(\"w-full caption-bottom text-sm\", className)}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n  return (\n    <thead\n      data-slot=\"table-header\"\n      className={cn(\"[&_tr]:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n  return (\n    <tbody\n      data-slot=\"table-body\"\n      className={cn(\"[&_tr:last-child]:border-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n  return (\n    <tfoot\n      data-slot=\"table-footer\"\n      className={cn(\n        \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n  return (\n    <tr\n      data-slot=\"table-row\"\n      className={cn(\n        \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n  return (\n    <th\n      data-slot=\"table-head\"\n      className={cn(\n        \"h-10 px-2 text-start align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pe-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n  return (\n    <td\n      data-slot=\"table-cell\"\n      className={cn(\n        \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pe-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCaption({\n  className,\n  ...props\n}: React.ComponentProps<\"caption\">) {\n  return (\n    <caption\n      data-slot=\"table-caption\"\n      className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      data-orientation={orientation}\n      className={cn(\n        \"group/tabs flex gap-2 data-horizontal:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst tabsListVariants = cva(\n  \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-muted\",\n        line: \"gap-1 bg-transparent\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction TabsList({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n  VariantProps<typeof tabsListVariants>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={cn(tabsListVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n  return (\n    <TabsPrimitive.Trigger\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n        \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n        \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-end-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n  return (\n    <TabsPrimitive.Content\n      data-slot=\"tabs-content\"\n      className={cn(\"flex-1 text-sm outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/textarea.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/toggle-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { toggleVariants } from \"@/examples/radix/ui-rtl/toggle\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }\n>({\n  size: \"default\",\n  variant: \"default\",\n  spacing: 0,\n  orientation: \"horizontal\",\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  spacing = 0,\n  orientation = \"horizontal\",\n  children,\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }) {\n  return (\n    <ToggleGroupPrimitive.Root\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      data-spacing={spacing}\n      data-orientation={orientation}\n      style={{ \"--gap\": spacing } as React.CSSProperties}\n      className={cn(\n        \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider\n        value={{ variant, size, spacing, orientation }}\n      >\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive.Root>\n  )\n}\n\nfunction ToggleGroupItem({\n  className,\n  children,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n  VariantProps<typeof toggleVariants>) {\n  const context = React.useContext(ToggleGroupContext)\n\n  return (\n    <ToggleGroupPrimitive.Item\n      data-slot=\"toggle-group-item\"\n      data-variant={context.variant || variant}\n      data-size={context.size || size}\n      data-spacing={context.spacing}\n      className={cn(\n        \"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-s-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-e-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-s-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-s group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </ToggleGroupPrimitive.Item>\n  )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nconst toggleVariants = cva(\n  \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline: \"border border-input bg-transparent hover:bg-muted\",\n      },\n      size: {\n        default: \"h-8 min-w-8 px-2\",\n        sm: \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]\",\n        lg: \"h-9 min-w-9 px-2.5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Toggle({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n  VariantProps<typeof toggleVariants>) {\n  return (\n    <TogglePrimitive.Root\n      data-slot=\"toggle\"\n      className={cn(toggleVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Toggle, toggleVariants }\n"
  },
  {
    "path": "apps/v4/examples/radix/ui-rtl/tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/examples/radix/lib/utils\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nfunction TooltipProvider({\n  delayDuration = 0,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delayDuration={delayDuration}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n  return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n  className,\n  sideOffset = 0,\n  children,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Content\n        data-slot=\"tooltip-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\" />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\n"
  },
  {
    "path": "apps/v4/hooks/use-colors.ts",
    "content": "import { useAtom } from \"jotai\"\nimport { atomWithStorage } from \"jotai/utils\"\n\nimport { type ColorFormat } from \"@/lib/colors\"\nimport { useMounted } from \"@/hooks/use-mounted\"\n\ntype Config = {\n  format: ColorFormat\n  lastCopied: string\n}\n\nconst colorsAtom = atomWithStorage<Config>(\"colors\", {\n  format: \"hsl\",\n  lastCopied: \"\",\n})\n\nexport function useColors() {\n  const [colors, setColors] = useAtom(colorsAtom)\n  const mounted = useMounted()\n\n  return {\n    isLoading: !mounted,\n    format: colors.format,\n    lastCopied: colors.lastCopied,\n    setFormat: (format: ColorFormat) => setColors({ ...colors, format }),\n    setLastCopied: (lastCopied: string) => setColors({ ...colors, lastCopied }),\n  }\n}\n"
  },
  {
    "path": "apps/v4/hooks/use-config.ts",
    "content": "import { useAtom } from \"jotai\"\nimport { atomWithStorage } from \"jotai/utils\"\n\ntype Config = {\n  style: \"new-york-v4\"\n  packageManager: \"npm\" | \"yarn\" | \"pnpm\" | \"bun\"\n  installationType: \"cli\" | \"manual\"\n}\n\nconst configAtom = atomWithStorage<Config>(\"config\", {\n  style: \"new-york-v4\",\n  packageManager: \"pnpm\",\n  installationType: \"cli\",\n})\n\nexport function useConfig() {\n  return useAtom(configAtom)\n}\n"
  },
  {
    "path": "apps/v4/hooks/use-copy-to-clipboard.ts",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nfunction legacyCopyToClipboard(value: string) {\n  const textArea = document.createElement(\"textarea\")\n  textArea.value = value\n  textArea.setAttribute(\"readonly\", \"\")\n  textArea.style.position = \"fixed\"\n  textArea.style.opacity = \"0\"\n  textArea.style.pointerEvents = \"none\"\n\n  document.body.appendChild(textArea)\n  textArea.focus()\n  textArea.select()\n  textArea.setSelectionRange(0, value.length)\n\n  let hasCopied = false\n  try {\n    hasCopied = document.execCommand(\"copy\")\n  } catch {\n    hasCopied = false\n  }\n\n  document.body.removeChild(textArea)\n  return hasCopied\n}\n\nexport function useCopyToClipboard({\n  timeout = 2000,\n  onCopy,\n}: {\n  timeout?: number\n  onCopy?: () => void\n} = {}) {\n  const [isCopied, setIsCopied] = React.useState(false)\n\n  const copyToClipboard = async (value: string) => {\n    if (typeof window === \"undefined\") {\n      return false\n    }\n\n    if (!value) {\n      return false\n    }\n\n    let hasCopied = false\n\n    if (navigator.clipboard?.writeText) {\n      try {\n        await navigator.clipboard.writeText(value)\n        hasCopied = true\n      } catch {\n        hasCopied = legacyCopyToClipboard(value)\n      }\n    } else {\n      hasCopied = legacyCopyToClipboard(value)\n    }\n\n    if (!hasCopied) {\n      return false\n    }\n\n    setIsCopied(true)\n\n    if (onCopy) {\n      onCopy()\n    }\n\n    if (timeout !== 0) {\n      setTimeout(() => {\n        setIsCopied(false)\n      }, timeout)\n    }\n\n    return true\n  }\n\n  return { isCopied, copyToClipboard }\n}\n"
  },
  {
    "path": "apps/v4/hooks/use-layout.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\ntype Layout = \"fixed\" | \"full\"\n\ninterface LayoutProviderProps {\n  children: React.ReactNode\n  defaultLayout?: Layout\n  forcedLayout?: Layout\n  storageKey?: string\n  attribute?: string | string[]\n  value?: Record<string, string>\n}\n\ninterface LayoutProviderState {\n  layout: Layout\n  setLayout: (layout: Layout | ((prev: Layout) => Layout)) => void\n  forcedLayout?: Layout\n}\n\nconst isServer = typeof window === \"undefined\"\nconst LayoutContext = React.createContext<LayoutProviderState | undefined>(\n  undefined\n)\n\nconst saveToLS = (storageKey: string, value: string) => {\n  try {\n    localStorage.setItem(storageKey, value)\n  } catch {\n    // Unsupported\n  }\n}\n\nconst useLayout = () => {\n  const context = React.useContext(LayoutContext)\n  if (context === undefined) {\n    throw new Error(\"useLayout must be used within a LayoutProvider\")\n  }\n  return context\n}\n\nconst Layout = ({\n  forcedLayout,\n  storageKey = \"layout\",\n  defaultLayout = \"full\",\n  attribute = \"class\",\n  value,\n  children,\n}: LayoutProviderProps) => {\n  const [layout, setLayoutState] = React.useState<Layout>(() => {\n    if (isServer) return defaultLayout\n    try {\n      const saved = localStorage.getItem(storageKey)\n      if (saved === \"fixed\" || saved === \"full\") {\n        return saved\n      }\n      return defaultLayout\n    } catch {\n      return defaultLayout\n    }\n  })\n\n  const attrs = React.useMemo(\n    () => (!value ? [\"layout-fixed\", \"layout-full\"] : Object.values(value)),\n    [value]\n  )\n\n  const applyLayout = React.useCallback(\n    (layout: Layout) => {\n      if (!layout) return\n\n      const name = value ? value[layout] : `layout-${layout}`\n      const d = document.documentElement\n\n      const handleAttribute = (attr: string) => {\n        if (attr === \"class\") {\n          d.classList.remove(...attrs)\n          if (name) d.classList.add(name)\n        } else if (attr.startsWith(\"data-\")) {\n          if (name) {\n            d.setAttribute(attr, name)\n          } else {\n            d.removeAttribute(attr)\n          }\n        }\n      }\n\n      if (Array.isArray(attribute)) attribute.forEach(handleAttribute)\n      else handleAttribute(attribute)\n    },\n    [attrs, attribute, value]\n  )\n\n  const setLayout = React.useCallback(\n    (value: Layout | ((prev: Layout) => Layout)) => {\n      if (typeof value === \"function\") {\n        setLayoutState((prevLayout) => {\n          const newLayout = value(prevLayout)\n          saveToLS(storageKey, newLayout)\n          return newLayout\n        })\n      } else {\n        setLayoutState(value)\n        saveToLS(storageKey, value)\n      }\n    },\n    [storageKey]\n  )\n\n  // localStorage event handling\n  React.useEffect(() => {\n    const handleStorage = (e: StorageEvent) => {\n      if (e.key !== storageKey) return\n\n      if (!e.newValue) {\n        setLayout(defaultLayout)\n      } else if (e.newValue === \"fixed\" || e.newValue === \"full\") {\n        setLayoutState(e.newValue)\n      }\n    }\n\n    window.addEventListener(\"storage\", handleStorage)\n    return () => window.removeEventListener(\"storage\", handleStorage)\n  }, [setLayout, storageKey, defaultLayout])\n\n  // Apply layout on mount and when it changes\n  React.useEffect(() => {\n    const currentLayout = forcedLayout ?? layout\n    applyLayout(currentLayout)\n  }, [forcedLayout, layout, applyLayout])\n\n  // Prevent layout changes during hydration\n  const [isHydrated, setIsHydrated] = React.useState(false)\n  React.useEffect(() => {\n    setIsHydrated(true)\n  }, [])\n\n  const providerValue = React.useMemo(\n    () => ({\n      layout: isHydrated ? layout : defaultLayout,\n      setLayout,\n      forcedLayout,\n    }),\n    [layout, setLayout, forcedLayout, isHydrated, defaultLayout]\n  )\n\n  return (\n    <LayoutContext.Provider value={providerValue}>\n      {children}\n    </LayoutContext.Provider>\n  )\n}\n\nconst LayoutProvider = (props: LayoutProviderProps) => {\n  const context = React.useContext(LayoutContext)\n\n  // Ignore nested context providers, just passthrough children\n  if (context) return <>{props.children}</>\n  return <Layout {...props} />\n}\n\nexport { useLayout, LayoutProvider }\n"
  },
  {
    "path": "apps/v4/hooks/use-media-query.tsx",
    "content": "import * as React from \"react\"\n\nexport function useMediaQuery(query: string) {\n  const [value, setValue] = React.useState(false)\n\n  React.useEffect(() => {\n    function onChange(event: MediaQueryListEvent) {\n      setValue(event.matches)\n    }\n\n    const result = matchMedia(query)\n    result.addEventListener(\"change\", onChange)\n    setValue(result.matches)\n\n    return () => result.removeEventListener(\"change\", onChange)\n  }, [query])\n\n  return value\n}\n"
  },
  {
    "path": "apps/v4/hooks/use-meta-color.ts",
    "content": "import * as React from \"react\"\nimport { useTheme } from \"next-themes\"\n\nexport const META_THEME_COLORS = {\n  light: \"#ffffff\",\n  dark: \"#0a0a0a\",\n}\n\nexport function useMetaColor() {\n  const { resolvedTheme } = useTheme()\n\n  const metaColor = React.useMemo(() => {\n    return resolvedTheme !== \"dark\"\n      ? META_THEME_COLORS.light\n      : META_THEME_COLORS.dark\n  }, [resolvedTheme])\n\n  const setMetaColor = React.useCallback((color: string) => {\n    document\n      .querySelector('meta[name=\"theme-color\"]')\n      ?.setAttribute(\"content\", color)\n  }, [])\n\n  return {\n    metaColor,\n    setMetaColor,\n  }\n}\n"
  },
  {
    "path": "apps/v4/hooks/use-mobile.ts",
    "content": "import * as React from \"react\"\n\nexport function useIsMobile(mobileBreakpoint = 768) {\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n  React.useEffect(() => {\n    const mql = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`)\n    const onChange = () => {\n      setIsMobile(window.innerWidth < mobileBreakpoint)\n    }\n    mql.addEventListener(\"change\", onChange)\n    setIsMobile(window.innerWidth < mobileBreakpoint)\n    return () => mql.removeEventListener(\"change\", onChange)\n  }, [mobileBreakpoint])\n\n  return !!isMobile\n}\n"
  },
  {
    "path": "apps/v4/hooks/use-mounted.ts",
    "content": "import * as React from \"react\"\n\nexport function useMounted() {\n  const [mounted, setMounted] = React.useState(false)\n\n  React.useEffect(() => {\n    setMounted(true)\n  }, [])\n\n  return mounted\n}\n"
  },
  {
    "path": "apps/v4/hooks/use-mutation-observer.ts",
    "content": "import * as React from \"react\"\n\nexport const useMutationObserver = (\n  ref: React.RefObject<HTMLElement | null>,\n  callback: MutationCallback,\n  options: MutationObserverInit = {\n    attributes: true,\n    characterData: true,\n    childList: true,\n    subtree: true,\n  }\n) => {\n  React.useEffect(() => {\n    if (ref.current) {\n      const observer = new MutationObserver(callback)\n      observer.observe(ref.current, options)\n      return () => observer.disconnect()\n    }\n  }, [ref, callback, options])\n}\n"
  },
  {
    "path": "apps/v4/hooks/use-search-registry.ts",
    "content": "import { debounce, useQueryState } from \"nuqs\"\n\nimport globalRegistries from \"@/registry/directory.json\"\n\nconst normalizeQuery = (query: string) =>\n  query.toLowerCase().replaceAll(\" \", \"\").replaceAll(\"@\", \"\")\n\nfunction finderFn<T extends (typeof globalRegistries)[0]>(\n  registry: T,\n  query: string\n) {\n  const normalizedName = normalizeQuery(registry.name)\n  const normalizedDecription = normalizeQuery(registry.description)\n  const normalizedQuery = normalizeQuery(query)\n\n  return (\n    normalizedName.includes(normalizedQuery) ||\n    normalizedDecription.includes(normalizedQuery)\n  )\n}\n\nconst searchDirectory = (query: string | null) => {\n  if (!query) return globalRegistries\n\n  return globalRegistries.filter((registry) => finderFn(registry, query))\n}\n\nexport const useSearchRegistry = () => {\n  const [query, setQuery] = useQueryState(\"q\", {\n    defaultValue: \"\",\n    limitUrlUpdates: debounce(250),\n  })\n\n  return {\n    query,\n    registries: searchDirectory(query),\n    setQuery,\n  }\n}\n"
  },
  {
    "path": "apps/v4/lib/blocks.ts",
    "content": "\"use server\"\n\nimport { registryItemSchema } from \"shadcn/schema\"\nimport { type z } from \"zod\"\n\nexport async function getAllBlockIds(\n  types: z.infer<typeof registryItemSchema>[\"type\"][] = [\n    \"registry:block\",\n    \"registry:internal\",\n  ],\n  categories: string[] = []\n): Promise<string[]> {\n  const blocks = await getAllBlocks(types, categories)\n\n  return blocks.map((block) => block.name)\n}\n\nexport async function getAllBlocks(\n  types: z.infer<typeof registryItemSchema>[\"type\"][] = [\n    \"registry:block\",\n    \"registry:internal\",\n  ],\n  categories: string[] = []\n) {\n  const { Index } = await import(\"@/registry/__index__\")\n\n  // Collect all blocks from all styles.\n  const allBlocks: z.infer<typeof registryItemSchema>[] = []\n\n  for (const style in Index) {\n    const styleIndex = Index[style]\n    if (typeof styleIndex === \"object\" && styleIndex !== null) {\n      for (const itemName in styleIndex) {\n        const item = styleIndex[itemName]\n        allBlocks.push(item)\n      }\n    }\n  }\n\n  // Validate each block.\n  const validatedBlocks = allBlocks\n    .map((block) => {\n      const result = registryItemSchema.safeParse(block)\n      return result.success ? result.data : null\n    })\n    .filter(\n      (block): block is z.infer<typeof registryItemSchema> => block !== null\n    )\n\n  return validatedBlocks.filter(\n    (block) =>\n      types.includes(block.type) &&\n      (categories.length === 0 ||\n        block.categories?.some((category) => categories.includes(category))) &&\n      !block.name.startsWith(\"chart-\")\n  )\n}\n"
  },
  {
    "path": "apps/v4/lib/categories.ts",
    "content": "export const registryCategories = [\n  {\n    name: \"Sidebar\",\n    slug: \"sidebar\",\n    hidden: false,\n  },\n  {\n    name: \"Dashboard\",\n    slug: \"dashboard\",\n    hidden: true,\n  },\n  {\n    name: \"Authentication\",\n    slug: \"authentication\",\n    hidden: true,\n  },\n  {\n    name: \"Login\",\n    slug: \"login\",\n    hidden: false,\n  },\n  {\n    name: \"Signup\",\n    slug: \"signup\",\n    hidden: false,\n  },\n]\n"
  },
  {
    "path": "apps/v4/lib/changelog.ts",
    "content": "import fs from \"fs\"\nimport path from \"path\"\nimport fm from \"front-matter\"\n\nimport { source } from \"@/lib/source\"\n\nexport type ChangelogPageData = {\n  title: string\n  description?: string\n}\n\nexport type ChangelogPage = ReturnType<typeof source.getPages>[number] & {\n  date: Date | null\n}\n\n// Reads the date from the frontmatter of a changelog file.\nexport function getDateFromFile(slugs: string[]) {\n  const filePath = path.join(\n    process.cwd(),\n    \"content/docs\",\n    ...slugs.slice(0, -1),\n    `${slugs[slugs.length - 1]}.mdx`\n  )\n  try {\n    const content = fs.readFileSync(filePath, \"utf-8\")\n    const { attributes } = fm<{ date?: string | Date }>(content)\n    if (attributes.date) {\n      return new Date(attributes.date)\n    }\n  } catch {\n    // File not found or parse error.\n  }\n  return null\n}\n\n// Gets all changelog pages sorted by date descending.\nexport function getChangelogPages() {\n  return source\n    .getPages()\n    .filter((page) => page.slugs[0] === \"changelog\" && page.slugs.length > 1)\n    .map((page) => ({\n      ...page,\n      date: getDateFromFile(page.slugs),\n    }))\n    .sort((a, b) => {\n      const dateA = a.date?.getTime() ?? 0\n      const dateB = b.date?.getTime() ?? 0\n      return dateB - dateA\n    })\n}\n"
  },
  {
    "path": "apps/v4/lib/colors.ts",
    "content": "import { z } from \"zod\"\n\nimport { colors } from \"@/registry/_legacy-colors\"\n\nconst colorSchema = z.object({\n  name: z.string(),\n  id: z.string(),\n  scale: z.number(),\n  className: z.string(),\n  hex: z.string(),\n  rgb: z.string(),\n  hsl: z.string(),\n  foreground: z.string(),\n  oklch: z.string(),\n  var: z.string(),\n})\n\nconst colorPaletteSchema = z.object({\n  name: z.string(),\n  colors: z.array(colorSchema),\n})\n\nexport type ColorPalette = z.infer<typeof colorPaletteSchema>\n\nexport function getColorFormat(color: Color) {\n  return {\n    className: `bg-${color.name}-100`,\n    hex: color.hex,\n    rgb: color.rgb,\n    hsl: color.hsl,\n    oklch: color.oklch,\n    var: `--color-${color.name}-${color.scale}`,\n  }\n}\n\nexport type ColorFormat = keyof ReturnType<typeof getColorFormat>\n\nexport function getColors() {\n  const tailwindColors = colorPaletteSchema.array().parse(\n    Object.entries(colors)\n      .map(([name, color]) => {\n        if (!Array.isArray(color)) {\n          return null\n        }\n\n        return {\n          name,\n          colors: color.map((color) => {\n            const rgb = color.rgb.replace(\n              /^rgb\\((\\d+),(\\d+),(\\d+)\\)$/,\n              \"$1 $2 $3\"\n            )\n\n            return {\n              ...color,\n              name,\n              id: `${name}-${color.scale}`,\n              className: `${name}-${color.scale}`,\n              var: `--color-${name}-${color.scale}`,\n              rgb,\n              hsl: color.hsl.replace(\n                /^hsl\\(([\\d.]+),([\\d.]+%),([\\d.]+%)\\)$/,\n                \"$1 $2 $3\"\n              ),\n              oklch: `oklch(${color.oklch.replace(\n                /^oklch\\(([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\)$/,\n                \"$1 $2 $3\"\n              )})`,\n              foreground: getForegroundFromBackground(rgb),\n            }\n          }),\n        }\n      })\n      .filter(Boolean)\n  )\n\n  return tailwindColors\n}\n\nexport type Color = ReturnType<typeof getColors>[number][\"colors\"][number]\n\nfunction getForegroundFromBackground(rgb: string) {\n  const [r, g, b] = rgb.split(\" \").map(Number)\n\n  function toLinear(number: number): number {\n    const base = number / 255\n    return base <= 0.04045\n      ? base / 12.92\n      : Math.pow((base + 0.055) / 1.055, 2.4)\n  }\n\n  const luminance =\n    0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b)\n\n  return luminance > 0.179 ? \"#000\" : \"#fff\"\n}\n"
  },
  {
    "path": "apps/v4/lib/components.ts",
    "content": "// All available UI components.\nexport const UI_COMPONENTS = [\n  \"accordion\",\n  \"alert\",\n  \"alert-dialog\",\n  \"aspect-ratio\",\n  \"avatar\",\n  \"badge\",\n  \"breadcrumb\",\n  \"button\",\n  \"button-group\",\n  \"calendar\",\n  \"card\",\n  \"carousel\",\n  \"chart\",\n  \"checkbox\",\n  \"collapsible\",\n  \"combobox\",\n  \"command\",\n  \"context-menu\",\n  \"data-table\",\n  \"date-picker\",\n  \"dialog\",\n  \"direction\",\n  \"drawer\",\n  \"dropdown-menu\",\n  \"empty\",\n  \"field\",\n  \"form\",\n  \"hover-card\",\n  \"input\",\n  \"input-group\",\n  \"input-otp\",\n  \"item\",\n  \"kbd\",\n  \"label\",\n  \"menubar\",\n  \"native-select\",\n  \"navigation-menu\",\n  \"pagination\",\n  \"popover\",\n  \"progress\",\n  \"radio-group\",\n  \"resizable\",\n  \"scroll-area\",\n  \"select\",\n  \"separator\",\n  \"sheet\",\n  \"sidebar\",\n  \"skeleton\",\n  \"slider\",\n  \"sonner\",\n  \"spinner\",\n  \"switch\",\n  \"table\",\n  \"tabs\",\n  \"textarea\",\n  \"toast\",\n  \"toggle\",\n  \"toggle-group\",\n  \"tooltip\",\n  \"typography\",\n] as const\n\nexport type UIComponent = (typeof UI_COMPONENTS)[number]\n"
  },
  {
    "path": "apps/v4/lib/config.ts",
    "content": "export const siteConfig = {\n  name: \"shadcn/ui\",\n  url: \"https://ui.shadcn.com\",\n  ogImage: \"https://ui.shadcn.com/og.jpg\",\n  description:\n    \"A set of beautifully designed components that you can customize, extend, and build on. Start here then make it your own. Open Source. Open Code.\",\n  links: {\n    twitter: \"https://twitter.com/shadcn\",\n    github: \"https://github.com/shadcn-ui/ui\",\n  },\n  navItems: [\n    {\n      href: \"/docs/installation\",\n      label: \"Docs\",\n    },\n    {\n      href: \"/docs/components\",\n      label: \"Components\",\n    },\n    {\n      href: \"/blocks\",\n      label: \"Blocks\",\n    },\n    {\n      href: \"/charts/area\",\n      label: \"Charts\",\n    },\n    {\n      href: \"/docs/directory\",\n      label: \"Directory\",\n    },\n    {\n      href: \"/create\",\n      label: \"Create\",\n    },\n  ],\n}\n\nexport const META_THEME_COLORS = {\n  light: \"#ffffff\",\n  dark: \"#09090b\",\n}\n"
  },
  {
    "path": "apps/v4/lib/docs.ts",
    "content": "export const PAGES_NEW = [\n  \"/create\",\n  \"/docs/cli\",\n  \"/docs/changelog\",\n  \"/docs/skills\",\n]\n\nexport const PAGES_UPDATED = [\"/docs/components/button\"]\n"
  },
  {
    "path": "apps/v4/lib/events.ts",
    "content": "import va from \"@vercel/analytics\"\nimport { z } from \"zod\"\n\nconst eventSchema = z.object({\n  name: z.enum([\n    \"copy_npm_command\",\n    \"copy_usage_import_code\",\n    \"copy_usage_code\",\n    \"copy_primitive_code\",\n    \"copy_theme_code\",\n    \"copy_block_code\",\n    \"copy_chunk_code\",\n    \"enable_lift_mode\",\n    \"copy_chart_code\",\n    \"copy_chart_theme\",\n    \"copy_chart_data\",\n    \"copy_color\",\n    \"set_layout\",\n    \"search_query\",\n    \"create_app\",\n    \"copy_create_share_url\",\n    \"copy_registry_add_command\",\n    \"copy_preset_command\",\n  ]),\n  // declare type AllowedPropertyValues = string | number | boolean | null\n  properties: z\n    .record(z.union([z.string(), z.number(), z.boolean(), z.null()]))\n    .optional(),\n})\n\nexport type Event = z.infer<typeof eventSchema>\n\nexport function trackEvent(input: Event): void {\n  const event = eventSchema.parse(input)\n  if (event) {\n    va.track(event.name, event.properties)\n  }\n}\n"
  },
  {
    "path": "apps/v4/lib/explore.ts",
    "content": "export const EXPLORE_PRESETS: string[] = [\n  \"auFzoPZ\",\n  \"a1zDJJ\",\n  \"a1DN5Lx2\",\n  \"abZIu0W\",\n  \"a2r6bw\",\n  \"a2He4G\",\n  \"a1DOCw6i\",\n  \"a1D5CKfo\",\n  \"abYAmrx\",\n]\n"
  },
  {
    "path": "apps/v4/lib/flags.ts",
    "content": "export const showMcpDocs = true\n"
  },
  {
    "path": "apps/v4/lib/font-definitions.ts",
    "content": "export type FontDefinition = {\n  name: string\n  title: string\n  type: \"sans\" | \"mono\" | \"serif\"\n  family: string\n  registryVariable: \"--font-sans\" | \"--font-mono\" | \"--font-serif\"\n  previewVariable: string\n  provider: \"google\"\n  import: string\n  dependency: string\n  subsets: readonly string[]\n  weight?: readonly string[]\n}\n\nexport const FONT_DEFINITIONS = [\n  {\n    name: \"geist\",\n    title: \"Geist\",\n    type: \"sans\",\n    family: \"'Geist Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-geist-sans\",\n    provider: \"google\",\n    import: \"Geist\",\n    dependency: \"@fontsource-variable/geist\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"inter\",\n    title: \"Inter\",\n    type: \"sans\",\n    family: \"'Inter Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-inter\",\n    provider: \"google\",\n    import: \"Inter\",\n    dependency: \"@fontsource-variable/inter\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"noto-sans\",\n    title: \"Noto Sans\",\n    type: \"sans\",\n    family: \"'Noto Sans Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-noto-sans\",\n    provider: \"google\",\n    import: \"Noto_Sans\",\n    dependency: \"@fontsource-variable/noto-sans\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"nunito-sans\",\n    title: \"Nunito Sans\",\n    type: \"sans\",\n    family: \"'Nunito Sans Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-nunito-sans\",\n    provider: \"google\",\n    import: \"Nunito_Sans\",\n    dependency: \"@fontsource-variable/nunito-sans\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"figtree\",\n    title: \"Figtree\",\n    type: \"sans\",\n    family: \"'Figtree Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-figtree\",\n    provider: \"google\",\n    import: \"Figtree\",\n    dependency: \"@fontsource-variable/figtree\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"roboto\",\n    title: \"Roboto\",\n    type: \"sans\",\n    family: \"'Roboto Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-roboto\",\n    provider: \"google\",\n    import: \"Roboto\",\n    dependency: \"@fontsource-variable/roboto\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"raleway\",\n    title: \"Raleway\",\n    type: \"sans\",\n    family: \"'Raleway Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-raleway\",\n    provider: \"google\",\n    import: \"Raleway\",\n    dependency: \"@fontsource-variable/raleway\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"dm-sans\",\n    title: \"DM Sans\",\n    type: \"sans\",\n    family: \"'DM Sans Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-dm-sans\",\n    provider: \"google\",\n    import: \"DM_Sans\",\n    dependency: \"@fontsource-variable/dm-sans\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"public-sans\",\n    title: \"Public Sans\",\n    type: \"sans\",\n    family: \"'Public Sans Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-public-sans\",\n    provider: \"google\",\n    import: \"Public_Sans\",\n    dependency: \"@fontsource-variable/public-sans\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"outfit\",\n    title: \"Outfit\",\n    type: \"sans\",\n    family: \"'Outfit Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-outfit\",\n    provider: \"google\",\n    import: \"Outfit\",\n    dependency: \"@fontsource-variable/outfit\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"oxanium\",\n    title: \"Oxanium\",\n    type: \"sans\",\n    family: \"'Oxanium Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-oxanium\",\n    provider: \"google\",\n    import: \"Oxanium\",\n    dependency: \"@fontsource-variable/oxanium\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"manrope\",\n    title: \"Manrope\",\n    type: \"sans\",\n    family: \"'Manrope Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-manrope\",\n    provider: \"google\",\n    import: \"Manrope\",\n    dependency: \"@fontsource-variable/manrope\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"space-grotesk\",\n    title: \"Space Grotesk\",\n    type: \"sans\",\n    family: \"'Space Grotesk Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-space-grotesk\",\n    provider: \"google\",\n    import: \"Space_Grotesk\",\n    dependency: \"@fontsource-variable/space-grotesk\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"montserrat\",\n    title: \"Montserrat\",\n    type: \"sans\",\n    family: \"'Montserrat Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-montserrat\",\n    provider: \"google\",\n    import: \"Montserrat\",\n    dependency: \"@fontsource-variable/montserrat\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"ibm-plex-sans\",\n    title: \"IBM Plex Sans\",\n    type: \"sans\",\n    family: \"'IBM Plex Sans Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-ibm-plex-sans\",\n    provider: \"google\",\n    import: \"IBM_Plex_Sans\",\n    dependency: \"@fontsource-variable/ibm-plex-sans\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"source-sans-3\",\n    title: \"Source Sans 3\",\n    type: \"sans\",\n    family: \"'Source Sans 3 Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-source-sans-3\",\n    provider: \"google\",\n    import: \"Source_Sans_3\",\n    dependency: \"@fontsource-variable/source-sans-3\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"instrument-sans\",\n    title: \"Instrument Sans\",\n    type: \"sans\",\n    family: \"'Instrument Sans Variable', sans-serif\",\n    registryVariable: \"--font-sans\",\n    previewVariable: \"--font-instrument-sans\",\n    provider: \"google\",\n    import: \"Instrument_Sans\",\n    dependency: \"@fontsource-variable/instrument-sans\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"jetbrains-mono\",\n    title: \"JetBrains Mono\",\n    type: \"mono\",\n    family: \"'JetBrains Mono Variable', monospace\",\n    registryVariable: \"--font-mono\",\n    previewVariable: \"--font-jetbrains-mono\",\n    provider: \"google\",\n    import: \"JetBrains_Mono\",\n    dependency: \"@fontsource-variable/jetbrains-mono\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"geist-mono\",\n    title: \"Geist Mono\",\n    type: \"mono\",\n    family: \"'Geist Mono Variable', monospace\",\n    registryVariable: \"--font-mono\",\n    previewVariable: \"--font-geist-mono\",\n    provider: \"google\",\n    import: \"Geist_Mono\",\n    dependency: \"@fontsource-variable/geist-mono\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"noto-serif\",\n    title: \"Noto Serif\",\n    type: \"serif\",\n    family: \"'Noto Serif Variable', serif\",\n    registryVariable: \"--font-serif\",\n    previewVariable: \"--font-noto-serif\",\n    provider: \"google\",\n    import: \"Noto_Serif\",\n    dependency: \"@fontsource-variable/noto-serif\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"roboto-slab\",\n    title: \"Roboto Slab\",\n    type: \"serif\",\n    family: \"'Roboto Slab Variable', serif\",\n    registryVariable: \"--font-serif\",\n    previewVariable: \"--font-roboto-slab\",\n    provider: \"google\",\n    import: \"Roboto_Slab\",\n    dependency: \"@fontsource-variable/roboto-slab\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"merriweather\",\n    title: \"Merriweather\",\n    type: \"serif\",\n    family: \"'Merriweather Variable', serif\",\n    registryVariable: \"--font-serif\",\n    previewVariable: \"--font-merriweather\",\n    provider: \"google\",\n    import: \"Merriweather\",\n    dependency: \"@fontsource-variable/merriweather\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"lora\",\n    title: \"Lora\",\n    type: \"serif\",\n    family: \"'Lora Variable', serif\",\n    registryVariable: \"--font-serif\",\n    previewVariable: \"--font-lora\",\n    provider: \"google\",\n    import: \"Lora\",\n    dependency: \"@fontsource-variable/lora\",\n    subsets: [\"latin\"],\n  },\n  {\n    name: \"playfair-display\",\n    title: \"Playfair Display\",\n    type: \"serif\",\n    family: \"'Playfair Display Variable', serif\",\n    registryVariable: \"--font-serif\",\n    previewVariable: \"--font-playfair-display\",\n    provider: \"google\",\n    import: \"Playfair_Display\",\n    dependency: \"@fontsource-variable/playfair-display\",\n    subsets: [\"latin\"],\n  },\n] as const satisfies readonly FontDefinition[]\n\nexport type FontName = (typeof FONT_DEFINITIONS)[number][\"name\"]\n"
  },
  {
    "path": "apps/v4/lib/fonts.ts",
    "content": "import {\n  Geist_Mono as FontMono,\n  Noto_Sans_Arabic as FontNotoSansArabic,\n  Noto_Sans_Hebrew as FontNotoSansHebrew,\n  Geist as FontSans,\n  Inter,\n} from \"next/font/google\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst fontSans = FontSans({\n  subsets: [\"latin\"],\n  variable: \"--font-sans\",\n})\n\nconst fontMono = FontMono({\n  subsets: [\"latin\"],\n  variable: \"--font-mono\",\n  weight: [\"400\"],\n})\n\nconst fontInter = Inter({\n  subsets: [\"latin\"],\n  variable: \"--font-inter\",\n})\n\nconst fontNotoSansArabic = FontNotoSansArabic({\n  subsets: [\"latin\"],\n  variable: \"--font-ar\",\n})\n\nconst fontNotoSansHebrew = FontNotoSansHebrew({\n  subsets: [\"latin\"],\n  variable: \"--font-he\",\n})\n\nexport const fontVariables = cn(\n  fontSans.variable,\n  fontMono.variable,\n  fontInter.variable,\n  fontNotoSansArabic.variable,\n  fontNotoSansHebrew.variable\n)\n"
  },
  {
    "path": "apps/v4/lib/format-code.ts",
    "content": "import { promises as fsPromises } from \"fs\"\nimport path from \"path\"\nimport {\n  createStyleMap,\n  transformIcons,\n  transformMenu,\n  transformRender,\n  transformStyle,\n} from \"shadcn/utils\"\nimport { Project, ScriptKind, type SourceFile } from \"ts-morph\"\n\nimport { BASES } from \"@/registry/bases\"\n\nfunction getStyleFromStyleName(styleName: string) {\n  const parts = styleName.split(\"-\")\n  return parts.length > 1 ? parts.slice(1).join(\"-\") : styleName\n}\n\nfunction buildDisplayConfig(styleName: string) {\n  return {\n    $schema: \"https://ui.shadcn.com/schema.json\",\n    style: styleName,\n    rsc: true,\n    tsx: true,\n    tailwind: {\n      config: \"\",\n      css: \"\",\n      baseColor: \"neutral\",\n      cssVariables: true,\n      prefix: \"\",\n    },\n    iconLibrary: \"lucide\",\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n      ui: \"@/components/ui\",\n      lib: \"@/lib\",\n      hooks: \"@/hooks\",\n    },\n    resolvedPaths: {\n      cwd: \"/\",\n      tailwindConfig: \"\",\n      tailwindCss: \"\",\n      utils: \"@/lib/utils\",\n      components: \"@/components\",\n      lib: \"@/lib\",\n      hooks: \"@/hooks\",\n      ui: \"@/components/ui\",\n    },\n  }\n}\n\ntype DisplayTransformer = (opts: {\n  filename: string\n  raw: string\n  sourceFile: SourceFile\n  config: ReturnType<typeof buildDisplayConfig>\n}) => Promise<unknown>\n\nconst styleMapCache = new Map<string, Record<string, string>>()\n\nasync function getStyleMap(styleName: string) {\n  const style = getStyleFromStyleName(styleName)\n\n  if (styleMapCache.has(style)) {\n    return styleMapCache.get(style)!\n  }\n\n  try {\n    const cssPath = path.join(\n      process.cwd(),\n      `registry/styles/style-${style}.css`\n    )\n    const css = await fsPromises.readFile(cssPath, \"utf-8\")\n    const styleMap = createStyleMap(css)\n    styleMapCache.set(style, styleMap)\n    return styleMap\n  } catch {\n    return {}\n  }\n}\n\nexport async function formatCode(code: string, styleName: string) {\n  code = code.replaceAll(`@/registry/${styleName}/`, \"@/components/\")\n\n  for (const base of BASES) {\n    code = code.replaceAll(`@/registry/bases/${base.name}/`, \"@/components/\")\n    code = code.replaceAll(`@/examples/${base.name}/ui/`, \"@/components/ui/\")\n    code = code.replaceAll(`@/examples/${base.name}/lib/`, \"@/lib/\")\n    code = code.replaceAll(`@/examples/${base.name}/hooks/`, \"@/hooks/\")\n  }\n\n  code = code.replaceAll(\"export default\", \"export\")\n\n  try {\n    const styleMap = await getStyleMap(styleName)\n    const transformed = await transformStyle(code, { styleMap })\n    const config = buildDisplayConfig(styleName)\n    const project = new Project({ compilerOptions: {} })\n    const sourceFile = project.createSourceFile(\"component.tsx\", transformed, {\n      scriptKind: ScriptKind.TSX,\n    })\n\n    const transformers: DisplayTransformer[] = [\n      transformIcons as DisplayTransformer,\n      transformMenu as DisplayTransformer,\n      transformRender as DisplayTransformer,\n    ]\n    for (const transformer of transformers) {\n      await transformer({\n        filename: \"component.tsx\",\n        raw: transformed,\n        sourceFile,\n        config,\n      })\n    }\n\n    return sourceFile.getText()\n  } catch (error) {\n    console.error(\"Transform failed:\", error)\n    return code\n  }\n}\n"
  },
  {
    "path": "apps/v4/lib/highlight-code.ts",
    "content": "import { createHash } from \"crypto\"\nimport { LRUCache } from \"lru-cache\"\nimport { codeToHtml } from \"shiki\"\nimport type { ShikiTransformer } from \"shiki\"\n\n// LRU cache for cross-request caching of highlighted code.\n// Shiki highlighting is CPU-intensive and deterministic, so caching is safe.\nconst highlightCache = new LRUCache<string, string>({\n  max: 500,\n  ttl: 1000 * 60 * 60, // 1 hour.\n})\n\nexport const transformers = [\n  {\n    code(node) {\n      if (node.tagName === \"code\") {\n        const raw = this.source\n        node.properties[\"__raw__\"] = raw\n\n        if (raw.startsWith(\"npm install\")) {\n          node.properties[\"__npm__\"] = raw\n          node.properties[\"__yarn__\"] = raw.replace(\"npm install\", \"yarn add\")\n          node.properties[\"__pnpm__\"] = raw.replace(\"npm install\", \"pnpm add\")\n          node.properties[\"__bun__\"] = raw.replace(\"npm install\", \"bun add\")\n        }\n\n        if (raw.startsWith(\"npx create-\")) {\n          node.properties[\"__npm__\"] = raw\n          node.properties[\"__yarn__\"] = raw.replace(\n            \"npx create-\",\n            \"yarn create \"\n          )\n          node.properties[\"__pnpm__\"] = raw.replace(\n            \"npx create-\",\n            \"pnpm create \"\n          )\n          node.properties[\"__bun__\"] = raw.replace(\"npx\", \"bunx --bun\")\n        }\n\n        // npm create.\n        if (raw.startsWith(\"npm create\")) {\n          node.properties[\"__npm__\"] = raw\n          node.properties[\"__yarn__\"] = raw.replace(\"npm create\", \"yarn create\")\n          node.properties[\"__pnpm__\"] = raw.replace(\"npm create\", \"pnpm create\")\n          node.properties[\"__bun__\"] = raw.replace(\"npm create\", \"bun create\")\n        }\n\n        // npx.\n        if (raw.startsWith(\"npx\")) {\n          node.properties[\"__npm__\"] = raw\n          node.properties[\"__yarn__\"] = raw.replace(\"npx\", \"yarn\")\n          node.properties[\"__pnpm__\"] = raw.replace(\"npx\", \"pnpm dlx\")\n          node.properties[\"__bun__\"] = raw.replace(\"npx\", \"bunx --bun\")\n        }\n\n        // npm run.\n        if (raw.startsWith(\"npm run\")) {\n          node.properties[\"__npm__\"] = raw\n          node.properties[\"__yarn__\"] = raw.replace(\"npm run\", \"yarn\")\n          node.properties[\"__pnpm__\"] = raw.replace(\"npm run\", \"pnpm\")\n          node.properties[\"__bun__\"] = raw.replace(\"npm run\", \"bun\")\n        }\n      }\n    },\n  },\n] as ShikiTransformer[]\n\nexport async function highlightCode(code: string, language: string = \"tsx\") {\n  // Create cache key from code content and language.\n  const cacheKey = createHash(\"sha256\")\n    .update(`${language}:${code}`)\n    .digest(\"hex\")\n\n  // Check cache first.\n  const cached = highlightCache.get(cacheKey)\n  if (cached) {\n    return cached\n  }\n\n  const html = await codeToHtml(code, {\n    lang: language,\n    themes: {\n      dark: \"github-dark\",\n      light: \"github-light\",\n    },\n    transformers: [\n      {\n        pre(node) {\n          node.properties[\"class\"] =\n            \"no-scrollbar min-w-0 overflow-x-auto overflow-y-auto overscroll-x-contain overscroll-y-auto px-4 py-3.5 outline-none has-[[data-highlighted-line]]:px-0 has-[[data-line-numbers]]:px-0 has-[[data-slot=tabs]]:p-0 !bg-transparent\"\n        },\n        code(node) {\n          node.properties[\"data-line-numbers\"] = \"\"\n        },\n        line(node) {\n          node.properties[\"data-line\"] = \"\"\n        },\n      },\n    ],\n  })\n\n  // Cache the result.\n  highlightCache.set(cacheKey, html)\n\n  return html\n}\n"
  },
  {
    "path": "apps/v4/lib/llm.ts",
    "content": "import fs from \"fs\"\nimport { ExamplesIndex } from \"@/examples/__index__\"\n\nimport { source } from \"@/lib/source\"\nimport { Index as StylesIndex } from \"@/registry/__index__\"\nimport { type Style } from \"@/registry/_legacy-styles\"\nimport { BASES } from \"@/registry/bases\"\nimport { Index as BasesIndex } from \"@/registry/bases/__index__\"\n\nfunction getBaseForStyle(styleName: string) {\n  for (const base of BASES) {\n    if (styleName.startsWith(`${base.name}-`)) {\n      return base.name\n    }\n  }\n  return null\n}\n\nfunction getDemoFilePath(name: string, styleName: string) {\n  const base = getBaseForStyle(styleName)\n  if (!base) {\n    return null\n  }\n  const demo = ExamplesIndex[base]?.[name]\n  if (!demo) {\n    return null\n  }\n  return demo.filePath\n}\n\nfunction getIndexForStyle(styleName: string) {\n  const base = getBaseForStyle(styleName)\n  if (base) {\n    return { index: BasesIndex, key: base }\n  }\n  return { index: StylesIndex, key: styleName }\n}\n\nfunction getComponentsList() {\n  const components = source.pageTree.children.find(\n    (page) => page.$id === \"components\"\n  )\n\n  if (components?.type !== \"folder\") {\n    return \"\"\n  }\n\n  const list = components.children.filter(\n    (component) => component.type === \"page\"\n  )\n\n  return list\n    .map((component) => `- [${component.name}](${component.url})`)\n    .join(\"\\n\")\n}\n\nexport function processMdxForLLMs(content: string, style: Style[\"name\"]) {\n  // Replace <ComponentsList /> with a markdown list of components.\n  const componentsListRegex = /<ComponentsList\\s*\\/>/g\n  content = content.replace(componentsListRegex, getComponentsList())\n\n  const componentPreviewRegex =\n    /<ComponentPreview[\\s\\S]*?name=\"([^\"]+)\"[\\s\\S]*?\\/>/g\n\n  return content.replace(componentPreviewRegex, (match, name) => {\n    try {\n      // Try to extract styleName from the match.\n      const styleNameMatch = match.match(/styleName=\"([^\"]+)\"/)\n      const effectiveStyle = styleNameMatch ? styleNameMatch[1] : style\n\n      let src = getDemoFilePath(name, effectiveStyle)\n\n      if (!src) {\n        const { index, key } = getIndexForStyle(effectiveStyle)\n        const component = index[key]?.[name]\n        if (!component?.files) {\n          return match\n        }\n        src = component.files[0]?.path\n      }\n\n      if (!src) {\n        return match\n      }\n\n      let source = fs.readFileSync(src, \"utf8\")\n\n      // Replace all base-specific paths.\n      for (const base of BASES) {\n        source = source.replaceAll(\n          `@/registry/bases/${base.name}/`,\n          \"@/components/\"\n        )\n        source = source.replaceAll(\n          `@/examples/${base.name}/ui/`,\n          \"@/components/ui/\"\n        )\n        source = source.replaceAll(`@/examples/${base.name}/lib/`, \"@/lib/\")\n        source = source.replaceAll(`@/examples/${base.name}/hooks/`, \"@/hooks/\")\n      }\n      source = source.replaceAll(\n        `@/registry/${effectiveStyle}/`,\n        \"@/components/\"\n      )\n      source = source.replaceAll(\"export default\", \"export\")\n\n      return `\\`\\`\\`tsx\n${source}\n\\`\\`\\``\n    } catch (error) {\n      console.error(`Error processing ComponentPreview ${name}:`, error)\n      return match\n    }\n  })\n}\n"
  },
  {
    "path": "apps/v4/lib/page-tree.ts",
    "content": "import type { source } from \"@/lib/source\"\n\nexport type PageTreeNode = (typeof source.pageTree)[\"children\"][number]\nexport type PageTreeFolder = Extract<PageTreeNode, { type: \"folder\" }>\nexport type PageTreePage = Extract<PageTreeNode, { type: \"page\" }>\n\n// Recursively find all pages in a folder tree.\nexport function getAllPagesFromFolder(folder: PageTreeFolder): PageTreePage[] {\n  const pages: PageTreePage[] = []\n\n  for (const child of folder.children) {\n    if (child.type === \"page\") {\n      pages.push(child)\n    } else if (child.type === \"folder\") {\n      pages.push(...getAllPagesFromFolder(child))\n    }\n  }\n\n  return pages\n}\n\n// Get the pages from a folder, handling nested base folders (radix/base).\nexport function getPagesFromFolder(\n  folder: PageTreeFolder,\n  currentBase: string\n): PageTreePage[] {\n  // For the components folder, find the base subfolder.\n  if (folder.$id === \"components\" || folder.name === \"Components\") {\n    for (const child of folder.children) {\n      if (child.type === \"folder\") {\n        // Match by $id or by name.\n        const isRadix = child.$id === \"radix\" || child.name === \"Radix UI\"\n        const isBase = child.$id === \"base\" || child.name === \"Base UI\"\n\n        if (\n          (currentBase === \"radix\" && isRadix) ||\n          (currentBase === \"base\" && isBase)\n        ) {\n          return child.children.filter(\n            (c): c is PageTreePage => c.type === \"page\"\n          )\n        }\n      }\n    }\n\n    // Fallback: return all pages from nested folders.\n    return getAllPagesFromFolder(folder).filter(\n      (page) => !page.url.endsWith(\"/components\")\n    )\n  }\n\n  // For other folders, return direct page children.\n  return folder.children.filter(\n    (child): child is PageTreePage => child.type === \"page\"\n  )\n}\n\n// Get current base (radix or base) from pathname.\nexport function getCurrentBase(pathname: string): string {\n  const baseMatch = pathname.match(/\\/docs\\/components\\/(radix|base)\\//)\n  return baseMatch ? baseMatch[1] : \"radix\" // Default to radix.\n}\n"
  },
  {
    "path": "apps/v4/lib/read-file.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\n\nexport async function readFileFromRoot(relativePath: string) {\n  const absolutePath = path.join(process.cwd(), relativePath)\n  return fs.readFile(absolutePath, \"utf-8\")\n}\n"
  },
  {
    "path": "apps/v4/lib/registry.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { ExamplesIndex } from \"@/examples/__index__\"\nimport { LRUCache } from \"lru-cache\"\nimport { registryItemSchema, type registryItemFileSchema } from \"shadcn/schema\"\nimport { type z } from \"zod\"\n\nimport { readFileFromRoot } from \"@/lib/read-file\"\nimport { Index as StylesIndex } from \"@/registry/__index__\"\nimport { BASES } from \"@/registry/bases\"\nimport { Index as BasesIndex } from \"@/registry/bases/__index__\"\n\nconst INDEXED_STYLES = [\"new-york-v4\"]\n\n// LRU cache for cross-request caching of registry items.\n// File reads are I/O-bound, so caching improves dev server performance.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst registryCache = new LRUCache<string, any>({\n  max: 500,\n  ttl: 1000 * 60 * 5, // 5 minutes (shorter for dev to pick up changes).\n})\n\nfunction getBaseForStyle(styleName: string) {\n  for (const base of BASES) {\n    if (styleName.startsWith(`${base.name}-`)) {\n      return base.name\n    }\n  }\n  return null\n}\n\nexport function getDemoComponent(name: string, styleName: string) {\n  const base = getBaseForStyle(styleName)\n  if (!base) return undefined\n  return ExamplesIndex[base]?.[name]?.component\n}\n\nexport async function getDemoItem(name: string, styleName: string) {\n  const base = getBaseForStyle(styleName)\n  if (!base) return null\n\n  const demo = ExamplesIndex[base]?.[name]\n  if (!demo) {\n    return null\n  }\n\n  const content = await readFileFromRoot(demo.filePath)\n\n  return {\n    name: demo.name,\n    type: \"registry:internal\" as const,\n    files: [\n      {\n        path: demo.filePath,\n        content,\n        type: \"registry:internal\" as const,\n      },\n    ],\n  }\n}\n\nfunction getIndexForStyle(styleName: string) {\n  if (INDEXED_STYLES.includes(styleName)) {\n    return { index: StylesIndex, key: styleName }\n  }\n\n  const base = getBaseForStyle(styleName)\n  if (base) {\n    return { index: BasesIndex, key: base }\n  }\n\n  return { index: StylesIndex, key: styleName }\n}\n\nexport function getRegistryComponent(name: string, styleName: string) {\n  const demoComponent = getDemoComponent(name, styleName)\n  if (demoComponent) {\n    return demoComponent\n  }\n\n  const { index, key } = getIndexForStyle(styleName)\n  return index[key]?.[name]?.component\n}\n\nexport async function getRegistryItems(\n  styleName: string,\n  filter?: (item: z.infer<typeof registryItemSchema>) => boolean\n) {\n  const { index, key } = getIndexForStyle(styleName)\n  const styleIndex = index[key]\n\n  if (!styleIndex) {\n    return []\n  }\n\n  const entries = Object.values(styleIndex)\n\n  const filteredEntries = filter ? entries.filter(filter) : entries\n\n  return await Promise.all(\n    filteredEntries.map(async (entry) => {\n      const item = await getRegistryItem(entry.name, styleName)\n      return item\n    })\n  ).then((results) => results.filter(Boolean))\n}\n\nexport async function getRegistryItem(name: string, styleName: string) {\n  const cacheKey = `${styleName}:${name}`\n\n  // Check cache first.\n  if (registryCache.has(cacheKey)) {\n    return registryCache.get(cacheKey)\n  }\n\n  const { index, key } = getIndexForStyle(styleName)\n  const item = index[key]?.[name]\n\n  if (!item) {\n    registryCache.set(cacheKey, null)\n    return null\n  }\n\n  // Convert all file paths to object.\n  // TODO: remove when we migrate to new registry.\n  item.files = item.files.map((file: unknown) =>\n    typeof file === \"string\" ? { path: file } : file\n  )\n\n  // Fail early before doing expensive file operations.\n  const result = registryItemSchema.safeParse(item)\n  if (!result.success) {\n    registryCache.set(cacheKey, null)\n    return null\n  }\n\n  // Read all files in parallel.\n  let files: typeof result.data.files = await Promise.all(\n    item.files.map(async (file: z.infer<typeof registryItemFileSchema>) => {\n      const content = await getFileContent(file)\n      const relativePath = path.relative(process.cwd(), file.path)\n\n      return {\n        ...file,\n        path: relativePath,\n        content,\n      }\n    })\n  )\n\n  // Fix file paths.\n  files = fixFilePaths(files)\n\n  const parsed = registryItemSchema.safeParse({\n    ...result.data,\n    files,\n  })\n\n  if (!parsed.success) {\n    console.error(parsed.error.message)\n    registryCache.set(cacheKey, null)\n    return null\n  }\n\n  // Cache the result.\n  registryCache.set(cacheKey, parsed.data)\n\n  return parsed.data\n}\n\nasync function getFileContent(file: z.infer<typeof registryItemFileSchema>) {\n  let code = await fs.readFile(file.path, \"utf-8\")\n\n  // Some registry items uses default export.\n  // We want to use named export instead.\n  if (file.type !== \"registry:page\") {\n    code = code.replaceAll(\"export default\", \"export\")\n  }\n\n  // Fix imports.\n  code = fixImport(code)\n\n  return code\n}\n\nfunction getFileTarget(file: z.infer<typeof registryItemFileSchema>) {\n  let target = file.target\n\n  if (!target || target === \"\") {\n    const fileName = file.path.split(\"/\").pop()\n    if (\n      file.type === \"registry:block\" ||\n      file.type === \"registry:component\" ||\n      file.type === \"registry:example\"\n    ) {\n      target = `components/${fileName}`\n    }\n\n    if (file.type === \"registry:ui\") {\n      target = `components/ui/${fileName}`\n    }\n\n    if (file.type === \"registry:hook\") {\n      target = `hooks/${fileName}`\n    }\n\n    if (file.type === \"registry:lib\") {\n      target = `lib/${fileName}`\n    }\n  }\n\n  return target ?? \"\"\n}\n\nfunction fixFilePaths(files: z.infer<typeof registryItemSchema>[\"files\"]) {\n  if (!files) {\n    return []\n  }\n\n  // Resolve all paths relative to the first file's directory.\n  const firstFilePath = files[0].path\n  const firstFilePathDir = path.dirname(firstFilePath)\n\n  return files.map((file) => {\n    return {\n      ...file,\n      path: path.relative(firstFilePathDir, file.path),\n      target: getFileTarget(file),\n    }\n  })\n}\n\nexport function fixImport(content: string) {\n  const regex = /@\\/(.+?)\\/((?:.*?\\/)?(?:components|ui|hooks|lib))\\/([\\w-]+)/g\n\n  const replacement = (\n    match: string,\n    path: string,\n    type: string,\n    component: string\n  ) => {\n    if (type.endsWith(\"components\")) {\n      return `@/components/${component}`\n    } else if (type.endsWith(\"ui\")) {\n      return `@/components/ui/${component}`\n    } else if (type.endsWith(\"hooks\")) {\n      return `@/hooks/${component}`\n    } else if (type.endsWith(\"lib\")) {\n      return `@/lib/${component}`\n    }\n\n    return match\n  }\n\n  return content.replace(regex, replacement)\n}\n\nexport type FileTree = {\n  name: string\n  path?: string\n  children?: FileTree[]\n}\n\nexport function createFileTreeForRegistryItemFiles(\n  files: Array<{ path: string; target?: string }>\n) {\n  const root: FileTree[] = []\n\n  for (const file of files) {\n    const path = file.target ?? file.path\n    const parts = path.split(\"/\")\n    let currentLevel = root\n\n    for (let i = 0; i < parts.length; i++) {\n      const part = parts[i]\n      const isFile = i === parts.length - 1\n      const existingNode = currentLevel.find((node) => node.name === part)\n\n      if (existingNode) {\n        if (isFile) {\n          // Update existing file node with full path\n          existingNode.path = path\n        } else {\n          // Move to next level in the tree\n          currentLevel = existingNode.children!\n        }\n      } else {\n        const newNode: FileTree = isFile\n          ? { name: part, path }\n          : { name: part, children: [] }\n\n        currentLevel.push(newNode)\n\n        if (!isFile) {\n          currentLevel = newNode.children!\n        }\n      }\n    }\n  }\n\n  return root\n}\n"
  },
  {
    "path": "apps/v4/lib/rehype.ts",
    "content": "import fs from \"fs\"\nimport path from \"path\"\nimport { ExamplesIndex } from \"@/examples/__index__\"\nimport { u } from \"unist-builder\"\nimport { visit } from \"unist-util-visit\"\n\nimport { formatCode } from \"@/lib/format-code\"\nimport { Index as StylesIndex } from \"@/registry/__index__\"\nimport { getActiveStyle } from \"@/registry/_legacy-styles\"\nimport { BASES } from \"@/registry/bases\"\nimport { Index as BasesIndex } from \"@/registry/bases/__index__\"\n\nexport { formatCode } from \"@/lib/format-code\"\n\nfunction getBaseForStyle(styleName: string) {\n  for (const base of BASES) {\n    if (styleName.startsWith(`${base.name}-`)) {\n      return base.name\n    }\n  }\n  return null\n}\n\nfunction getDemoFilePath(name: string, styleName: string) {\n  const base = getBaseForStyle(styleName)\n  if (!base) return null\n\n  const demo = ExamplesIndex[base]?.[name]\n  if (!demo) return null\n\n  return path.join(process.cwd(), demo.filePath)\n}\n\nfunction getIndexForStyle(styleName: string) {\n  const base = getBaseForStyle(styleName)\n  if (base) {\n    return { index: BasesIndex, key: base }\n  }\n  return { index: StylesIndex, key: styleName }\n}\n\ninterface UnistNode {\n  type: string\n  name?: string\n  tagName?: string\n  value?: string\n  properties?: Record<string, unknown>\n  attributes?: {\n    name: string\n    value: unknown\n    type?: string\n  }[]\n  children?: UnistNode[]\n}\n\nexport interface UnistTree {\n  type: string\n  children: UnistNode[]\n}\n\ninterface NodeToProcess {\n  node: UnistNode\n  type: \"ComponentSource\" | \"ComponentPreview\"\n  name: string\n  styleName: string\n  fileName?: string\n  srcPath?: string\n  hideCode?: boolean\n}\n\nexport function rehypeComponent() {\n  return async (tree: UnistTree) => {\n    const activeStyle = await getActiveStyle()\n    const nodesToProcess: NodeToProcess[] = []\n\n    visit(tree, (node: UnistNode) => {\n      const { value: srcPath } =\n        (getNodeAttributeByName(node, \"src\") as {\n          name: string\n          value?: string\n          type?: string\n        }) || {}\n\n      if (node.name === \"ComponentSource\") {\n        const name = getNodeAttributeByName(node, \"name\")?.value as string\n        const fileName = getNodeAttributeByName(node, \"fileName\")?.value as\n          | string\n          | undefined\n        const styleName =\n          (getNodeAttributeByName(node, \"styleName\")?.value as string) ||\n          activeStyle.name\n\n        if (name || srcPath) {\n          nodesToProcess.push({\n            node,\n            type: \"ComponentSource\",\n            name,\n            styleName,\n            fileName,\n            srcPath,\n          })\n        }\n      }\n\n      if (node.name === \"ComponentPreview\") {\n        const name = getNodeAttributeByName(node, \"name\")?.value as string\n        const styleName =\n          (getNodeAttributeByName(node, \"styleName\")?.value as string) ||\n          activeStyle.name\n        const hideCode = isTruthyMdxAttribute(\n          getNodeAttributeByName(node, \"hideCode\")\n        )\n\n        if (name) {\n          nodesToProcess.push({\n            node,\n            type: \"ComponentPreview\",\n            name,\n            styleName,\n            hideCode,\n          })\n        }\n      }\n    })\n\n    await Promise.all(\n      nodesToProcess.map(async (item) => {\n        try {\n          if (item.type === \"ComponentPreview\" && item.hideCode) {\n            return\n          }\n\n          let src: string | null = null\n\n          if (item.srcPath) {\n            src = path.join(process.cwd(), item.srcPath)\n          } else {\n            src = getDemoFilePath(item.name, item.styleName)\n\n            if (!src) {\n              const { index, key } = getIndexForStyle(item.styleName)\n              const component = index[key]?.[item.name]\n\n              if (item.type === \"ComponentSource\" && item.fileName) {\n                src =\n                  component.files.find((file: unknown) => {\n                    if (typeof file === \"string\") {\n                      return (\n                        file.endsWith(`${item.fileName}.tsx`) ||\n                        file.endsWith(`${item.fileName}.ts`)\n                      )\n                    }\n                    return false\n                  }) || component.files[0]?.path\n              } else {\n                src = component.files[0]?.path\n              }\n            }\n          }\n\n          if (!src) {\n            return\n          }\n\n          const raw = fs.readFileSync(src, \"utf8\")\n          const source = await formatCode(raw, item.styleName)\n\n          item.node.children?.push(\n            u(\"element\", {\n              tagName: \"pre\",\n              properties: {\n                __src__: src,\n              },\n              children: [\n                u(\"element\", {\n                  tagName: \"code\",\n                  properties: {\n                    className: [\"language-tsx\"],\n                  },\n                  children: [\n                    {\n                      type: \"text\",\n                      value: source,\n                    },\n                  ],\n                }),\n              ],\n            })\n          )\n        } catch (error) {\n          console.error(error)\n        }\n      })\n    )\n  }\n}\n\nfunction getNodeAttributeByName(node: UnistNode, name: string) {\n  return node.attributes?.find((attribute) => attribute.name === name)\n}\n\nfunction isTruthyMdxAttribute(\n  attribute?: {\n    value?: unknown\n  } | null\n) {\n  if (!attribute) return false\n\n  if (!(\"value\" in attribute)) return true\n\n  const { value } = attribute\n\n  if (value === undefined || value === null) return true\n  if (typeof value === \"boolean\") return value\n  if (typeof value === \"string\") return value !== \"false\"\n  return Boolean(value)\n}\n"
  },
  {
    "path": "apps/v4/lib/source.ts",
    "content": "import { docs } from \"@/.source\"\nimport { loader } from \"fumadocs-core/source\"\n\nexport const source = loader({\n  baseUrl: \"/docs\",\n  source: docs.toFumadocsSource(),\n})\n"
  },
  {
    "path": "apps/v4/lib/themes.ts",
    "content": "import { baseColors } from \"@/registry/_legacy-base-colors\"\n\nexport const THEMES = baseColors\n  .filter((theme) => ![\"slate\", \"stone\", \"gray\", \"zinc\"].includes(theme.name))\n  .sort((a, b) => a.name.localeCompare(b.name))\n"
  },
  {
    "path": "apps/v4/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n\nexport function absoluteUrl(path: string) {\n  return `${process.env.NEXT_PUBLIC_APP_URL}${path}`\n}\n"
  },
  {
    "path": "apps/v4/mdx-components.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\nimport Link from \"next/link\"\n\nimport { type PageTreeFolder } from \"@/lib/page-tree\"\nimport { source } from \"@/lib/source\"\nimport { cn } from \"@/lib/utils\"\nimport { Callout } from \"@/components/callout\"\nimport { CodeBlockCommand } from \"@/components/code-block-command\"\nimport { CodeCollapsibleWrapper } from \"@/components/code-collapsible-wrapper\"\nimport { CodeTabs } from \"@/components/code-tabs\"\nimport { ComponentPreview } from \"@/components/component-preview\"\nimport { ComponentSource } from \"@/components/component-source\"\nimport { ComponentsList } from \"@/components/components-list\"\nimport { CopyButton } from \"@/components/copy-button\"\nimport { DirectoryList } from \"@/components/directory-list\"\nimport { getIconForLanguageExtension } from \"@/components/icons\"\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/registry/new-york-v4/ui/accordion\"\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/new-york-v4/ui/alert\"\nimport { AspectRatio } from \"@/registry/new-york-v4/ui/aspect-ratio\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Kbd } from \"@/registry/new-york-v4/ui/kbd\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\n\n// Wrapper component that passes the components folder from the server.\n// This is only used on /docs/components/ index page, so default to radix.\nfunction ComponentsListWrapper() {\n  const componentsFolder = source.pageTree.children.find(\n    (page) => page.$id === \"components\"\n  )\n\n  if (componentsFolder?.type !== \"folder\") {\n    return null\n  }\n\n  return (\n    <ComponentsList\n      componentsFolder={componentsFolder as PageTreeFolder}\n      currentBase=\"radix\"\n    />\n  )\n}\n\nexport const mdxComponents = {\n  h1: ({ className, ...props }: React.ComponentProps<\"h1\">) => (\n    <h1\n      className={cn(\n        \"mt-2 scroll-m-28 font-heading text-3xl font-bold tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  h2: ({ className, ...props }: React.ComponentProps<\"h2\">) => {\n    return (\n      <h2\n        id={props.children\n          ?.toString()\n          .replace(/ /g, \"-\")\n          .replace(/'/g, \"\")\n          .replace(/\\?/g, \"\")\n          .toLowerCase()}\n        className={cn(\n          \"[&+]*:[code]:text-xl mt-10 scroll-m-28 font-heading text-xl font-medium tracking-tight first:mt-0 lg:mt-12 [&+.steps]:mt-0! [&+.steps>h3]:mt-4! [&+h3]:mt-6! [&+p]:mt-4!\",\n          className\n        )}\n        {...props}\n      />\n    )\n  },\n  h3: ({ className, ...props }: React.ComponentProps<\"h3\">) => (\n    <h3\n      className={cn(\n        \"mt-12 scroll-m-28 font-heading text-lg font-medium tracking-tight [&+p]:mt-4! *:[code]:text-xl\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  h4: ({ className, ...props }: React.ComponentProps<\"h4\">) => (\n    <h4\n      className={cn(\n        \"mt-8 scroll-m-28 font-heading text-base font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  h5: ({ className, ...props }: React.ComponentProps<\"h5\">) => (\n    <h5\n      className={cn(\n        \"mt-8 scroll-m-28 text-base font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  h6: ({ className, ...props }: React.ComponentProps<\"h6\">) => (\n    <h6\n      className={cn(\n        \"mt-8 scroll-m-28 text-base font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  a: ({ className, ...props }: React.ComponentProps<\"a\">) => (\n    <a\n      className={cn(\"font-medium underline underline-offset-4\", className)}\n      {...props}\n    />\n  ),\n  p: ({ className, ...props }: React.ComponentProps<\"p\">) => (\n    <p\n      className={cn(\"leading-relaxed [&:not(:first-child)]:mt-6\", className)}\n      {...props}\n    />\n  ),\n  strong: ({ className, ...props }: React.HTMLAttributes<HTMLElement>) => (\n    <strong className={cn(\"font-medium\", className)} {...props} />\n  ),\n  ul: ({ className, ...props }: React.ComponentProps<\"ul\">) => (\n    <ul className={cn(\"my-6 ml-6 list-disc\", className)} {...props} />\n  ),\n  ol: ({ className, ...props }: React.ComponentProps<\"ol\">) => (\n    <ol className={cn(\"my-6 ml-6 list-decimal\", className)} {...props} />\n  ),\n  li: ({ className, ...props }: React.ComponentProps<\"li\">) => (\n    <li className={cn(\"mt-2\", className)} {...props} />\n  ),\n  blockquote: ({ className, ...props }: React.ComponentProps<\"blockquote\">) => (\n    <blockquote\n      className={cn(\"mt-6 border-l-2 pl-6 italic\", className)}\n      {...props}\n    />\n  ),\n  img: ({ className, alt, ...props }: React.ComponentProps<\"img\">) => (\n    <img className={cn(\"rounded-md\", className)} alt={alt} {...props} />\n  ),\n  hr: ({ ...props }: React.ComponentProps<\"hr\">) => (\n    <hr className=\"my-4 md:my-8\" {...props} />\n  ),\n  table: ({ className, ...props }: React.ComponentProps<\"table\">) => (\n    <div className=\"my-6 no-scrollbar w-full overflow-y-auto rounded-xl border\">\n      <table\n        className={cn(\n          \"relative w-full overflow-hidden border-none text-sm [&_tbody_tr:last-child]:border-b-0\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  ),\n  tr: ({ className, ...props }: React.ComponentProps<\"tr\">) => (\n    <tr className={cn(\"m-0 border-b\", className)} {...props} />\n  ),\n  th: ({ className, ...props }: React.ComponentProps<\"th\">) => (\n    <th\n      className={cn(\n        \"px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  td: ({ className, ...props }: React.ComponentProps<\"td\">) => (\n    <td\n      className={cn(\n        \"px-4 py-2 text-left whitespace-nowrap [&[align=center]]:text-center [&[align=right]]:text-right\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  pre: ({ className, children, ...props }: React.ComponentProps<\"pre\">) => {\n    return (\n      <pre\n        className={cn(\n          \"no-scrollbar min-w-0 overflow-x-auto overflow-y-auto overscroll-x-contain overscroll-y-auto px-4 py-3.5 outline-none has-[[data-highlighted-line]]:px-0 has-[[data-line-numbers]]:px-0 has-[[data-slot=tabs]]:p-0\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </pre>\n    )\n  },\n  figure: ({ className, ...props }: React.ComponentProps<\"figure\">) => {\n    return <figure className={cn(className)} {...props} />\n  },\n  figcaption: ({\n    className,\n    children,\n    ...props\n  }: React.ComponentProps<\"figcaption\">) => {\n    const iconExtension =\n      \"data-language\" in props && typeof props[\"data-language\"] === \"string\"\n        ? getIconForLanguageExtension(props[\"data-language\"])\n        : null\n\n    return (\n      <figcaption\n        className={cn(\n          \"flex items-center gap-2 text-code-foreground [&_svg]:size-4 [&_svg]:text-code-foreground [&_svg]:opacity-70\",\n          className\n        )}\n        {...props}\n      >\n        {iconExtension}\n        {children}\n      </figcaption>\n    )\n  },\n  code: ({\n    className,\n    __raw__,\n    __src__,\n    __npm__,\n    __yarn__,\n    __pnpm__,\n    __bun__,\n    ...props\n  }: React.ComponentProps<\"code\"> & {\n    __raw__?: string\n    __src__?: string\n    __npm__?: string\n    __yarn__?: string\n    __pnpm__?: string\n    __bun__?: string\n  }) => {\n    // Inline Code.\n    if (typeof props.children === \"string\") {\n      return (\n        <code\n          className={cn(\n            \"relative rounded-md bg-muted px-[0.3rem] py-[0.2rem] font-mono text-[0.8rem] break-words outline-none\",\n            className\n          )}\n          {...props}\n        />\n      )\n    }\n\n    // npm command.\n    const isNpmCommand = __npm__ && __yarn__ && __pnpm__ && __bun__\n    if (isNpmCommand) {\n      return (\n        <CodeBlockCommand\n          __npm__={__npm__}\n          __yarn__={__yarn__}\n          __pnpm__={__pnpm__}\n          __bun__={__bun__}\n        />\n      )\n    }\n\n    // Default codeblock.\n    return (\n      <>\n        {__raw__ && <CopyButton value={__raw__} src={__src__} />}\n        <code {...props} />\n      </>\n    )\n  },\n  Step: ({ className, ...props }: React.ComponentProps<\"h3\">) => (\n    <h3\n      className={cn(\n        \"mt-8 scroll-m-32 font-heading text-lg font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  Steps: ({ className, ...props }: React.ComponentProps<\"div\">) => (\n    <div\n      className={cn(\n        \"steps mb-12 [counter-reset:step] md:ml-4 md:border-l md:pl-8 [&>h3]:step\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  Image: ({\n    src,\n    className,\n    width,\n    height,\n    alt,\n    ...props\n  }: React.ComponentProps<\"img\">) => (\n    <Image\n      className={cn(\"mt-6 rounded-md border\", className)}\n      src={(src as string) || \"\"}\n      width={Number(width)}\n      height={Number(height)}\n      alt={alt || \"\"}\n      {...props}\n    />\n  ),\n  Tabs: ({ className, ...props }: React.ComponentProps<typeof Tabs>) => {\n    return <Tabs className={cn(\"relative mt-6 w-full\", className)} {...props} />\n  },\n  TabsList: ({\n    className,\n    ...props\n  }: React.ComponentProps<typeof TabsList>) => (\n    <TabsList\n      className={cn(\n        \"justify-start gap-4 rounded-none bg-transparent px-0\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  TabsTrigger: ({\n    className,\n    ...props\n  }: React.ComponentProps<typeof TabsTrigger>) => (\n    <TabsTrigger\n      className={cn(\n        \"rounded-none border-0 border-b-2 border-transparent bg-transparent px-0 pb-3 text-base text-muted-foreground hover:text-primary data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:shadow-none! dark:data-[state=active]:border-primary dark:data-[state=active]:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  TabsContent: ({\n    className,\n    ...props\n  }: React.ComponentProps<typeof TabsContent>) => (\n    <TabsContent\n      className={cn(\n        \"relative [&_h3.font-heading]:text-base [&_h3.font-heading]:font-medium *:[figure]:first:mt-0 [&>.steps]:mt-6\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  Tab: ({ className, ...props }: React.ComponentProps<\"div\">) => (\n    <div className={cn(className)} {...props} />\n  ),\n  Button,\n  Callout,\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n  Alert,\n  AlertTitle,\n  AlertDescription,\n  AspectRatio,\n  CodeTabs,\n  ComponentPreview,\n  ComponentSource,\n  CodeCollapsibleWrapper,\n  ComponentsList: ComponentsListWrapper,\n  DirectoryList,\n  Link: ({ className, ...props }: React.ComponentProps<typeof Link>) => (\n    <Link\n      className={cn(\"font-medium underline underline-offset-4\", className)}\n      {...props}\n    />\n  ),\n  LinkedCard: ({ className, ...props }: React.ComponentProps<typeof Link>) => (\n    <Link\n      className={cn(\n        \"flex w-full flex-col items-center rounded-xl bg-surface p-6 text-surface-foreground transition-colors hover:bg-surface/80 sm:p-10\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  Kbd,\n}\n"
  },
  {
    "path": "apps/v4/next.config.mjs",
    "content": "import { createMDX } from \"fumadocs-mdx/next\"\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  devIndicators: false,\n  typescript: {\n    ignoreBuildErrors: true,\n  },\n  outputFileTracingIncludes: {\n    \"/*\": [\"./registry/**/*\"],\n  },\n  images: {\n    remotePatterns: [\n      {\n        protocol: \"https\",\n        hostname: \"avatars.githubusercontent.com\",\n      },\n      {\n        protocol: \"https\",\n        hostname: \"images.unsplash.com\",\n      },\n      {\n        protocol: \"https\",\n        hostname: \"avatar.vercel.sh\",\n      },\n    ],\n  },\n  experimental: {\n    turbopackFileSystemCacheForDev: true,\n  },\n  redirects() {\n    return [\n      // Form redirects to /docs/forms.\n      {\n        source: \"/docs/components/form\",\n        destination: \"/docs/forms\",\n        permanent: true,\n      },\n      {\n        source: \"/docs/components/radix/form\",\n        destination: \"/docs/forms\",\n        permanent: true,\n      },\n      {\n        source: \"/docs/components/base/form\",\n        destination: \"/docs/forms\",\n        permanent: true,\n      },\n      // Component redirects (default to radix).\n      {\n        source: \"/docs/components/:name((?!radix|base|form)[^/]+)\",\n        destination: \"/docs/components/radix/:name\",\n        permanent: false,\n      },\n      {\n        source: \"/docs/components/:name((?!radix|base|form)[^/]+).md\",\n        destination: \"/docs/components/radix/:name.md\",\n        permanent: false,\n      },\n      // Other redirects.\n      {\n        source: \"/components\",\n        destination: \"/docs/components\",\n        permanent: true,\n      },\n      {\n        source: \"/docs/primitives/:path*\",\n        destination: \"/docs/components/:path*\",\n        permanent: true,\n      },\n      {\n        source: \"/figma\",\n        destination: \"/docs/figma\",\n        permanent: true,\n      },\n      {\n        source: \"/sidebar\",\n        destination: \"/docs/components/sidebar\",\n        permanent: true,\n      },\n      {\n        source: \"/react-19\",\n        destination: \"/docs/react-19\",\n        permanent: true,\n      },\n      {\n        source: \"/charts\",\n        destination: \"/charts/area\",\n        permanent: true,\n      },\n      {\n        source: \"/view/styles/:style/:name\",\n        destination: \"/view/:name\",\n        permanent: true,\n      },\n      {\n        source: \"/docs/:path*.mdx\",\n        destination: \"/docs/:path*.md\",\n        permanent: true,\n      },\n      {\n        source: \"/mcp\",\n        destination: \"/docs/mcp\",\n        permanent: false,\n      },\n      {\n        source: \"/directory\",\n        destination: \"/docs/directory\",\n        permanent: false,\n      },\n      {\n        source: \"/new\",\n        destination: \"/docs/new\",\n        permanent: false,\n      },\n      {\n        source: \"/skills\",\n        destination: \"/docs/skills\",\n        permanent: true,\n      },\n      {\n        source: \"/cli\",\n        destination: \"/docs/cli\",\n        permanent: true,\n      },\n    ]\n  },\n  rewrites() {\n    return [\n      {\n        source: \"/docs/:path*.md\",\n        destination: \"/llm/:path*\",\n      },\n      {\n        source: \"/init.md\",\n        destination: \"/init/md\",\n      },\n    ]\n  },\n}\n\nconst withMDX = createMDX({})\n\nexport default withMDX(nextConfig)\n"
  },
  {
    "path": "apps/v4/package.json",
    "content": "{\n  \"name\": \"v4\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"pnpm --filter=shadcn build && pnpm icons:dev & next dev --turbopack --port 4000\",\n    \"build\": \"pnpm --filter=shadcn build && next build\",\n    \"start\": \"next start --port 4000\",\n    \"preview\": \"pnpm --filter=shadcn build && next build && next start --port 4000\",\n    \"lint\": \"eslint .\",\n    \"lint:fix\": \"eslint --fix .\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"format:write\": \"prettier --write \\\"**/*.{ts,tsx,mdx}\\\" --cache\",\n    \"format:check\": \"prettier --check \\\"**/*.{ts,tsx,mdx}\\\" --cache\",\n    \"icons:dev\": \"tsx --tsconfig ./tsconfig.scripts.json ./scripts/build-icons.ts --watch\",\n    \"registry:build\": \"bun run ./scripts/build-registry.mts && pnpm examples:build && prettier --log-level silent --write \\\"registry/**/*.{ts,tsx,json,mdx}\\\" \\\"examples/**/*.{ts,tsx}\\\" --cache\",\n    \"registry\": \"bun run ./scripts/build-registry.mts\",\n    \"examples:build\": \"bun run ./scripts/build-examples.ts && prettier --log-level silent --write \\\"examples/**/*.{ts,tsx}\\\" --cache\",\n    \"registry:capture\": \"tsx --tsconfig ./tsconfig.scripts.json ./scripts/capture-registry.mts\",\n    \"explore:capture\": \"tsx --tsconfig ./tsconfig.scripts.json ./scripts/capture-explore.mts\",\n    \"validate:registries\": \"tsx --tsconfig ./tsconfig.scripts.json ./scripts/validate-registries.mts\",\n    \"test:apps\": \"bun run ./scripts/build-test-app.mts\",\n    \"postinstall\": \"fumadocs-mdx\"\n  },\n  \"dependencies\": {\n    \"@base-ui/react\": \"1.1.0\",\n    \"@dnd-kit/core\": \"^6.3.1\",\n    \"@dnd-kit/modifiers\": \"^9.0.0\",\n    \"@dnd-kit/sortable\": \"^10.0.0\",\n    \"@dnd-kit/utilities\": \"^3.2.2\",\n    \"@faker-js/faker\": \"^10.1.0\",\n    \"@hookform/resolvers\": \"^3.10.0\",\n    \"@hugeicons/core-free-icons\": \"^1.2.1\",\n    \"@hugeicons/react\": \"^1.1.1\",\n    \"@phosphor-icons/react\": \"^2.1.10\",\n    \"@remixicon/react\": \"^4.7.0\",\n    \"@tabler/icons-react\": \"^3.31.0\",\n    \"@tailwindcss/postcss\": \"^4\",\n    \"@tanstack/react-form\": \"^1.20.0\",\n    \"@tanstack/react-table\": \"^8.9.1\",\n    \"@vercel/analytics\": \"^1.4.1\",\n    \"change-case\": \"^5.4.4\",\n    \"chrono-node\": \"^2.8.2\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"cmdk\": \"^1.1.1\",\n    \"date-fns\": \"^4.1.0\",\n    \"dedent\": \"^1.6.0\",\n    \"embla-carousel-autoplay\": \"8.5.2\",\n    \"embla-carousel-react\": \"8.5.2\",\n    \"front-matter\": \"^4.0.2\",\n    \"fumadocs-core\": \"16.0.5\",\n    \"fumadocs-docgen\": \"2.0.0\",\n    \"fumadocs-mdx\": \"13.0.2\",\n    \"fumadocs-ui\": \"16.0.5\",\n    \"input-otp\": \"^1.4.2\",\n    \"jotai\": \"^2.15.0\",\n    \"little-date\": \"^1.0.0\",\n    \"lodash\": \"^4.17.23\",\n    \"lru-cache\": \"^11.2.4\",\n    \"lucide-react\": \"0.474.0\",\n    \"motion\": \"^12.12.1\",\n    \"next\": \"16.1.6\",\n    \"next-themes\": \"0.4.6\",\n    \"nuqs\": \"^2.7.2\",\n    \"postcss\": \"^8.5.1\",\n    \"radix-ui\": \"^1.4.3\",\n    \"react\": \"19.2.3\",\n    \"react-day-picker\": \"^9.7.0\",\n    \"react-dom\": \"19.2.3\",\n    \"react-hook-form\": \"^7.62.0\",\n    \"react-resizable-panels\": \"^4\",\n    \"react-textarea-autosize\": \"^8.5.9\",\n    \"recharts\": \"2.15.1\",\n    \"rehype-pretty-code\": \"^0.14.1\",\n    \"rimraf\": \"^6.0.1\",\n    \"server-only\": \"^0.0.1\",\n    \"shadcn\": \"4.1.0\",\n    \"shiki\": \"^1.10.1\",\n    \"sonner\": \"^2.0.0\",\n    \"swr\": \"^2.3.6\",\n    \"tailwind-merge\": \"^3.0.1\",\n    \"ts-morph\": \"26.0.0\",\n    \"vaul\": \"1.1.2\",\n    \"zod\": \"^3.25.76\"\n  },\n  \"devDependencies\": {\n    \"@ianvs/prettier-plugin-sort-imports\": \"^4.4.1\",\n    \"@tailwindcss/postcss\": \"^4\",\n    \"@types/lodash\": \"^4.17.7\",\n    \"@types/mdx\": \"^2.0.13\",\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"19.2.2\",\n    \"@types/react-dom\": \"19.2.2\",\n    \"@typescript-eslint/parser\": \"^8.31.0\",\n    \"agentation\": \"^2.2.1\",\n    \"baseline-browser-mapping\": \"^2.10.0\",\n    \"eslint\": \"^9\",\n    \"eslint-config-next\": \"16.0.0\",\n    \"prettier\": \"^3.4.2\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"tailwindcss\": \"^4\",\n    \"tw-animate-css\": \"^1.4.0\",\n    \"typescript\": \"^5\",\n    \"unist-builder\": \"3.0.0\",\n    \"unist-util-visit\": \"^4.1.2\"\n  },\n  \"prettier\": {\n    \"endOfLine\": \"lf\",\n    \"semi\": false,\n    \"singleQuote\": false,\n    \"tabWidth\": 2,\n    \"trailingComma\": \"es5\",\n    \"importOrder\": [\n      \"^(react/(.*)$)|^(react$)\",\n      \"^(next/(.*)$)|^(next$)\",\n      \"<THIRD_PARTY_MODULES>\",\n      \"\",\n      \"^@workspace/(.*)$\",\n      \"\",\n      \"^types$\",\n      \"^@/types/(.*)$\",\n      \"^@/config/(.*)$\",\n      \"^@/lib/(.*)$\",\n      \"^@/hooks/(.*)$\",\n      \"^@/components/ui/(.*)$\",\n      \"^@/components/(.*)$\",\n      \"^@/registry/(.*)$\",\n      \"^@/styles/(.*)$\",\n      \"^@/app/(.*)$\",\n      \"^@/www/(.*)$\",\n      \"\",\n      \"^[./]\"\n    ],\n    \"importOrderParserPlugins\": [\n      \"typescript\",\n      \"jsx\",\n      \"decorators-legacy\"\n    ],\n    \"tailwindStylesheet\": \"./styles/globals.css\",\n    \"tailwindFunctions\": [\n      \"cn\",\n      \"cva\"\n    ],\n    \"plugins\": [\n      \"@ianvs/prettier-plugin-sort-imports\",\n      \"prettier-plugin-tailwindcss\"\n    ]\n  }\n}\n"
  },
  {
    "path": "apps/v4/postcss.config.mjs",
    "content": "const config = {\n  plugins: {\n    \"@tailwindcss/postcss\": {},\n  },\n}\nexport default config\n"
  },
  {
    "path": "apps/v4/public/llms.txt",
    "content": "# shadcn/ui\n\n> shadcn/ui is a collection of beautifully-designed, accessible components and a code distribution platform. It is built with TypeScript, Tailwind CSS, and Radix UI primitives. It supports multiple frameworks including Next.js, Vite, Remix, Astro, and more. Open Source. Open Code. AI-Ready. It also comes with a command-line tool to install and manage components and a registry system to publish and distribute code.\n\n## Overview\n\n- [Introduction](https://ui.shadcn.com/docs): Core principles—Open Code, Composition, Distribution, Beautiful Defaults, and AI-Ready design.\n- [CLI](https://ui.shadcn.com/docs/cli): Command-line tool for installing and managing components.\n- [components.json](https://ui.shadcn.com/docs/components-json): Configuration file for customizing the CLI and component installation.\n- [Theming](https://ui.shadcn.com/docs/theming): Guide to customizing colors, typography, and design tokens.\n- [Changelog](https://ui.shadcn.com/docs/changelog): Release notes and version history.\n- [About](https://ui.shadcn.com/docs/about): Credits and project information.\n\n## Installation\n\n- [Next.js](https://ui.shadcn.com/docs/installation/next): Install shadcn/ui in a Next.js project.\n- [Vite](https://ui.shadcn.com/docs/installation/vite): Install shadcn/ui in a Vite project.\n- [Remix](https://ui.shadcn.com/docs/installation/remix): Install shadcn/ui in a Remix project.\n- [Astro](https://ui.shadcn.com/docs/installation/astro): Install shadcn/ui in an Astro project.\n- [Laravel](https://ui.shadcn.com/docs/installation/laravel): Install shadcn/ui in a Laravel project.\n- [Gatsby](https://ui.shadcn.com/docs/installation/gatsby): Install shadcn/ui in a Gatsby project.\n- [React Router](https://ui.shadcn.com/docs/installation/react-router): Install shadcn/ui in a React Router project.\n- [TanStack Router](https://ui.shadcn.com/docs/installation/tanstack-router): Install shadcn/ui in a TanStack Router project.\n- [TanStack Start](https://ui.shadcn.com/docs/installation/tanstack): Install shadcn/ui in a TanStack Start project.\n- [Manual Installation](https://ui.shadcn.com/docs/installation/manual): Manually install shadcn/ui without the CLI.\n\n## Components\n\n### Form & Input\n\n- [Form](https://ui.shadcn.com/docs/components/form): Building forms with React Hook Form and Zod validation.\n- [Field](https://ui.shadcn.com/docs/components/field): Field component for form inputs with labels and error messages.\n- [Button](https://ui.shadcn.com/docs/components/button): Button component with multiple variants.\n- [Button Group](https://ui.shadcn.com/docs/components/button-group): Group multiple buttons together.\n- [Input](https://ui.shadcn.com/docs/components/input): Text input component.\n- [Input Group](https://ui.shadcn.com/docs/components/input-group): Input component with prefix and suffix addons.\n- [Input OTP](https://ui.shadcn.com/docs/components/input-otp): One-time password input component.\n- [Textarea](https://ui.shadcn.com/docs/components/textarea): Multi-line text input component.\n- [Checkbox](https://ui.shadcn.com/docs/components/checkbox): Checkbox input component.\n- [Radio Group](https://ui.shadcn.com/docs/components/radio-group): Radio button group component.\n- [Select](https://ui.shadcn.com/docs/components/select): Select dropdown component.\n- [Switch](https://ui.shadcn.com/docs/components/switch): Toggle switch component.\n- [Slider](https://ui.shadcn.com/docs/components/slider): Slider input component.\n- [Calendar](https://ui.shadcn.com/docs/components/calendar): Calendar component for date selection.\n- [Date Picker](https://ui.shadcn.com/docs/components/date-picker): Date picker component combining input and calendar.\n- [Combobox](https://ui.shadcn.com/docs/components/combobox): Searchable select component with autocomplete.\n- [Label](https://ui.shadcn.com/docs/components/label): Form label component.\n\n### Layout & Navigation\n\n- [Accordion](https://ui.shadcn.com/docs/components/accordion): Collapsible accordion component.\n- [Breadcrumb](https://ui.shadcn.com/docs/components/breadcrumb): Breadcrumb navigation component.\n- [Navigation Menu](https://ui.shadcn.com/docs/components/navigation-menu): Accessible navigation menu with dropdowns.\n- [Sidebar](https://ui.shadcn.com/docs/components/sidebar): Collapsible sidebar component for app layouts.\n- [Tabs](https://ui.shadcn.com/docs/components/tabs): Tabbed interface component.\n- [Separator](https://ui.shadcn.com/docs/components/separator): Visual divider between content sections.\n- [Scroll Area](https://ui.shadcn.com/docs/components/scroll-area): Custom scrollable area with styled scrollbars.\n- [Resizable](https://ui.shadcn.com/docs/components/resizable): Resizable panel layout component.\n\n### Overlays & Dialogs\n\n- [Dialog](https://ui.shadcn.com/docs/components/dialog): Modal dialog component.\n- [Alert Dialog](https://ui.shadcn.com/docs/components/alert-dialog): Alert dialog for confirmation prompts.\n- [Sheet](https://ui.shadcn.com/docs/components/sheet): Slide-out panel component (drawer).\n- [Drawer](https://ui.shadcn.com/docs/components/drawer): Mobile-friendly drawer component using Vaul.\n- [Popover](https://ui.shadcn.com/docs/components/popover): Floating popover component.\n- [Tooltip](https://ui.shadcn.com/docs/components/tooltip): Tooltip component for additional context.\n- [Hover Card](https://ui.shadcn.com/docs/components/hover-card): Card that appears on hover.\n- [Context Menu](https://ui.shadcn.com/docs/components/context-menu): Right-click context menu.\n- [Dropdown Menu](https://ui.shadcn.com/docs/components/dropdown-menu): Dropdown menu component.\n- [Menubar](https://ui.shadcn.com/docs/components/menubar): Horizontal menubar component.\n- [Command](https://ui.shadcn.com/docs/components/command): Command palette component (cmdk).\n\n### Feedback & Status\n\n- [Alert](https://ui.shadcn.com/docs/components/alert): Alert component for messages and notifications.\n- [Toast](https://ui.shadcn.com/docs/components/toast): Toast notification component using Sonner.\n- [Progress](https://ui.shadcn.com/docs/components/progress): Progress bar component.\n- [Spinner](https://ui.shadcn.com/docs/components/spinner): Loading spinner component.\n- [Skeleton](https://ui.shadcn.com/docs/components/skeleton): Skeleton loading placeholder.\n- [Badge](https://ui.shadcn.com/docs/components/badge): Badge component for labels and status indicators.\n- [Empty](https://ui.shadcn.com/docs/components/empty): Empty state component for no data scenarios.\n\n### Display & Media\n\n- [Avatar](https://ui.shadcn.com/docs/components/avatar): Avatar component for user profiles.\n- [Card](https://ui.shadcn.com/docs/components/card): Card container component.\n- [Table](https://ui.shadcn.com/docs/components/table): Table component for displaying data.\n- [Data Table](https://ui.shadcn.com/docs/components/data-table): Advanced data table with sorting, filtering, and pagination.\n- [Chart](https://ui.shadcn.com/docs/components/chart): Chart components using Recharts.\n- [Carousel](https://ui.shadcn.com/docs/components/carousel): Carousel component using Embla Carousel.\n- [Aspect Ratio](https://ui.shadcn.com/docs/components/aspect-ratio): Container that maintains aspect ratio.\n- [Typography](https://ui.shadcn.com/docs/components/typography): Typography styles and components.\n- [Item](https://ui.shadcn.com/docs/components/item): Generic item component for lists and menus.\n- [Kbd](https://ui.shadcn.com/docs/components/kbd): Keyboard shortcut display component.\n\n### Misc\n\n- [Collapsible](https://ui.shadcn.com/docs/components/collapsible): Collapsible container component.\n- [Toggle](https://ui.shadcn.com/docs/components/toggle): Toggle button component.\n- [Toggle Group](https://ui.shadcn.com/docs/components/toggle-group): Group of toggle buttons.\n- [Pagination](https://ui.shadcn.com/docs/components/pagination): Pagination component for lists and tables.\n\n## Dark Mode\n\n- [Dark Mode](https://ui.shadcn.com/docs/dark-mode): Overview of dark mode implementation.\n- [Dark Mode - Next.js](https://ui.shadcn.com/docs/dark-mode/next): Dark mode setup for Next.js.\n- [Dark Mode - Vite](https://ui.shadcn.com/docs/dark-mode/vite): Dark mode setup for Vite.\n- [Dark Mode - Astro](https://ui.shadcn.com/docs/dark-mode/astro): Dark mode setup for Astro.\n- [Dark Mode - Remix](https://ui.shadcn.com/docs/dark-mode/remix): Dark mode setup for Remix.\n\n## Forms\n\n- [Forms Overview](https://ui.shadcn.com/docs/forms): Guide to building forms with shadcn/ui.\n- [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form): Using shadcn/ui with React Hook Form.\n- [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form): Using shadcn/ui with TanStack Form.\n- [Forms - Next.js](https://ui.shadcn.com/docs/forms/next): Building forms in Next.js with Server Actions.\n\n## Advanced\n\n- [Monorepo](https://ui.shadcn.com/docs/monorepo): Using shadcn/ui in a monorepo setup.\n- [React 19](https://ui.shadcn.com/docs/react-19): React 19 support and migration guide.\n- [Tailwind CSS v4](https://ui.shadcn.com/docs/tailwind-v4): Tailwind CSS v4 support and setup.\n- [JavaScript](https://ui.shadcn.com/docs/javascript): Using shadcn/ui with JavaScript (no TypeScript).\n- [Figma](https://ui.shadcn.com/docs/figma): Figma design resources.\n- [v0](https://ui.shadcn.com/docs/v0): Generating UI with v0 by Vercel.\n\n## MCP Server\n\n- [MCP Server](https://ui.shadcn.com/docs/mcp): Model Context Protocol server for AI integrations. Allows AI assistants to browse, search, and install components from registries using natural language. Works with Claude Code, Cursor, VS Code (GitHub Copilot), Codex and more.\n\n## Registry\n\n- [Registry Overview](https://ui.shadcn.com/docs/registry): Creating and publishing your own component registry.\n- [Getting Started](https://ui.shadcn.com/docs/registry/getting-started): Set up your own registry.\n- [Examples](https://ui.shadcn.com/docs/registry/examples): Example registries.\n- [FAQ](https://ui.shadcn.com/docs/registry/faq): Common questions about registries.\n- [Authentication](https://ui.shadcn.com/docs/registry/authentication): Adding authentication to your registry.\n- [Registry MCP](https://ui.shadcn.com/docs/registry/mcp): MCP integration for registries.\n\n### Registry Schemas\n\n- [Registry Schema](https://ui.shadcn.com/schema/registry.json): JSON Schema for registry index files. Defines the structure for a collection of components, hooks, pages, etc. Requires name, homepage, and items array.\n- [Registry Item Schema](https://ui.shadcn.com/schema/registry-item.json): JSON Schema for individual registry items. Defines components, hooks, themes, and other distributable code with properties for dependencies, files, Tailwind config, CSS variables, and more.\n\n"
  },
  {
    "path": "apps/v4/public/r/colors/gray.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"white\",\n      \"foreground\": \"gray-950\",\n      \"card\": \"white\",\n      \"card-foreground\": \"gray-950\",\n      \"popover\": \"white\",\n      \"popover-foreground\": \"gray-950\",\n      \"primary\": \"gray-900\",\n      \"primary-foreground\": \"gray-50\",\n      \"secondary\": \"gray-100\",\n      \"secondary-foreground\": \"gray-900\",\n      \"muted\": \"gray-100\",\n      \"muted-foreground\": \"gray-500\",\n      \"accent\": \"gray-100\",\n      \"accent-foreground\": \"gray-900\",\n      \"destructive\": \"red-500\",\n      \"destructive-foreground\": \"gray-50\",\n      \"border\": \"gray-200\",\n      \"input\": \"gray-200\",\n      \"ring\": \"gray-950\"\n    },\n    \"dark\": {\n      \"background\": \"gray-950\",\n      \"foreground\": \"gray-50\",\n      \"card\": \"gray-950\",\n      \"card-foreground\": \"gray-50\",\n      \"popover\": \"gray-950\",\n      \"popover-foreground\": \"gray-50\",\n      \"primary\": \"gray-50\",\n      \"primary-foreground\": \"gray-900\",\n      \"secondary\": \"gray-800\",\n      \"secondary-foreground\": \"gray-50\",\n      \"muted\": \"gray-800\",\n      \"muted-foreground\": \"gray-400\",\n      \"accent\": \"gray-800\",\n      \"accent-foreground\": \"gray-50\",\n      \"destructive\": \"red-900\",\n      \"destructive-foreground\": \"gray-50\",\n      \"border\": \"gray-800\",\n      \"input\": \"gray-800\",\n      \"ring\": \"gray-300\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"224 71.4% 4.1%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"224 71.4% 4.1%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"224 71.4% 4.1%\",\n      \"primary\": \"220.9 39.3% 11%\",\n      \"primary-foreground\": \"210 20% 98%\",\n      \"secondary\": \"220 14.3% 95.9%\",\n      \"secondary-foreground\": \"220.9 39.3% 11%\",\n      \"muted\": \"220 14.3% 95.9%\",\n      \"muted-foreground\": \"220 8.9% 46.1%\",\n      \"accent\": \"220 14.3% 95.9%\",\n      \"accent-foreground\": \"220.9 39.3% 11%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"210 20% 98%\",\n      \"border\": \"220 13% 91%\",\n      \"input\": \"220 13% 91%\",\n      \"ring\": \"224 71.4% 4.1%\",\n      \"chart-1\": \"12 76% 61%\",\n      \"chart-2\": \"173 58% 39%\",\n      \"chart-3\": \"197 37% 24%\",\n      \"chart-4\": \"43 74% 66%\",\n      \"chart-5\": \"27 87% 67%\"\n    },\n    \"dark\": {\n      \"background\": \"224 71.4% 4.1%\",\n      \"foreground\": \"210 20% 98%\",\n      \"card\": \"224 71.4% 4.1%\",\n      \"card-foreground\": \"210 20% 98%\",\n      \"popover\": \"224 71.4% 4.1%\",\n      \"popover-foreground\": \"210 20% 98%\",\n      \"primary\": \"210 20% 98%\",\n      \"primary-foreground\": \"220.9 39.3% 11%\",\n      \"secondary\": \"215 27.9% 16.9%\",\n      \"secondary-foreground\": \"210 20% 98%\",\n      \"muted\": \"215 27.9% 16.9%\",\n      \"muted-foreground\": \"217.9 10.6% 64.9%\",\n      \"accent\": \"215 27.9% 16.9%\",\n      \"accent-foreground\": \"210 20% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"210 20% 98%\",\n      \"border\": \"215 27.9% 16.9%\",\n      \"input\": \"215 27.9% 16.9%\",\n      \"ring\": \"216 12.2% 83.9%\",\n      \"chart-1\": \"220 70% 50%\",\n      \"chart-2\": \"160 60% 45%\",\n      \"chart-3\": \"30 80% 55%\",\n      \"chart-4\": \"280 65% 60%\",\n      \"chart-5\": \"340 75% 55%\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.13 0.028 261.692)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.13 0.028 261.692)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.13 0.028 261.692)\",\n      \"primary\": \"oklch(0.21 0.034 264.665)\",\n      \"primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"secondary\": \"oklch(0.967 0.003 264.542)\",\n      \"secondary-foreground\": \"oklch(0.21 0.034 264.665)\",\n      \"muted\": \"oklch(0.967 0.003 264.542)\",\n      \"muted-foreground\": \"oklch(0.551 0.027 264.364)\",\n      \"accent\": \"oklch(0.967 0.003 264.542)\",\n      \"accent-foreground\": \"oklch(0.21 0.034 264.665)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.928 0.006 264.531)\",\n      \"input\": \"oklch(0.928 0.006 264.531)\",\n      \"ring\": \"oklch(0.707 0.022 261.325)\",\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-foreground\": \"oklch(0.13 0.028 261.692)\",\n      \"sidebar-primary\": \"oklch(0.21 0.034 264.665)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-accent\": \"oklch(0.967 0.003 264.542)\",\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.034 264.665)\",\n      \"sidebar-border\": \"oklch(0.928 0.006 264.531)\",\n      \"sidebar-ring\": \"oklch(0.707 0.022 261.325)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.13 0.028 261.692)\",\n      \"foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"card\": \"oklch(0.21 0.034 264.665)\",\n      \"card-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"popover\": \"oklch(0.21 0.034 264.665)\",\n      \"popover-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"primary\": \"oklch(0.928 0.006 264.531)\",\n      \"primary-foreground\": \"oklch(0.21 0.034 264.665)\",\n      \"secondary\": \"oklch(0.278 0.033 256.848)\",\n      \"secondary-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"muted\": \"oklch(0.278 0.033 256.848)\",\n      \"muted-foreground\": \"oklch(0.707 0.022 261.325)\",\n      \"accent\": \"oklch(0.278 0.033 256.848)\",\n      \"accent-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.551 0.027 264.364)\",\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n      \"sidebar\": \"oklch(0.21 0.034 264.665)\",\n      \"sidebar-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-accent\": \"oklch(0.278 0.033 256.848)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: 0 0% 100%;\\n    --foreground: 224 71.4% 4.1%;\\n    --card: 0 0% 100%;\\n    --card-foreground: 224 71.4% 4.1%;\\n    --popover: 0 0% 100%;\\n    --popover-foreground: 224 71.4% 4.1%;\\n    --primary: 220.9 39.3% 11%;\\n    --primary-foreground: 210 20% 98%;\\n    --secondary: 220 14.3% 95.9%;\\n    --secondary-foreground: 220.9 39.3% 11%;\\n    --muted: 220 14.3% 95.9%;\\n    --muted-foreground: 220 8.9% 46.1%;\\n    --accent: 220 14.3% 95.9%;\\n    --accent-foreground: 220.9 39.3% 11%;\\n    --destructive: 0 84.2% 60.2%;\\n    --destructive-foreground: 210 20% 98%;\\n    --border: 220 13% 91%;\\n    --input: 220 13% 91%;\\n    --ring: 224 71.4% 4.1%;\\n    --radius: 0.5rem;\\n    --chart-1: 12 76% 61%;\\n    --chart-2: 173 58% 39%;\\n    --chart-3: 197 37% 24%;\\n    --chart-4: 43 74% 66%;\\n    --chart-5: 27 87% 67%;\\n  }\\n\\n  .dark {\\n    --background: 224 71.4% 4.1%;\\n    --foreground: 210 20% 98%;\\n    --card: 224 71.4% 4.1%;\\n    --card-foreground: 210 20% 98%;\\n    --popover: 224 71.4% 4.1%;\\n    --popover-foreground: 210 20% 98%;\\n    --primary: 210 20% 98%;\\n    --primary-foreground: 220.9 39.3% 11%;\\n    --secondary: 215 27.9% 16.9%;\\n    --secondary-foreground: 210 20% 98%;\\n    --muted: 215 27.9% 16.9%;\\n    --muted-foreground: 217.9 10.6% 64.9%;\\n    --accent: 215 27.9% 16.9%;\\n    --accent-foreground: 210 20% 98%;\\n    --destructive: 0 62.8% 30.6%;\\n    --destructive-foreground: 210 20% 98%;\\n    --border: 215 27.9% 16.9%;\\n    --input: 215 27.9% 16.9%;\\n    --ring: 216 12.2% 83.9%;\\n    --chart-1: 220 70% 50%;\\n    --chart-2: 160 60% 45%;\\n    --chart-3: 30 80% 55%;\\n    --chart-4: 280 65% 60%;\\n    --chart-5: 340 75% 55%;\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}"
  },
  {
    "path": "apps/v4/public/r/colors/index.json",
    "content": "{\n  \"inherit\": \"inherit\",\n  \"current\": \"currentColor\",\n  \"transparent\": \"transparent\",\n  \"black\": {\n    \"hex\": \"#000000\",\n    \"rgb\": \"rgb(0,0,0)\",\n    \"hsl\": \"hsl(0,0%,0%)\",\n    \"oklch\": \"oklch(0.00,0.00,0)\",\n    \"rgbChannel\": \"0 0 0\",\n    \"hslChannel\": \"0 0% 0%\"\n  },\n  \"white\": {\n    \"hex\": \"#ffffff\",\n    \"rgb\": \"rgb(255,255,255)\",\n    \"hsl\": \"hsl(0,0%,100%)\",\n    \"oklch\": \"oklch(1.00,0.00,0)\",\n    \"rgbChannel\": \"255 255 255\",\n    \"hslChannel\": \"0 0% 100%\"\n  },\n  \"slate\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#f8fafc\",\n      \"rgb\": \"rgb(248,250,252)\",\n      \"hsl\": \"hsl(210,40%,98%)\",\n      \"oklch\": \"oklch(0.98,0.00,248)\",\n      \"rgbChannel\": \"248 250 252\",\n      \"hslChannel\": \"210 40% 98%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#f1f5f9\",\n      \"rgb\": \"rgb(241,245,249)\",\n      \"hsl\": \"hsl(210,40%,96.1%)\",\n      \"oklch\": \"oklch(0.97,0.01,248)\",\n      \"rgbChannel\": \"241 245 249\",\n      \"hslChannel\": \"210 40% 96.1%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#e2e8f0\",\n      \"rgb\": \"rgb(226,232,240)\",\n      \"hsl\": \"hsl(214.3,31.8%,91.4%)\",\n      \"oklch\": \"oklch(0.93,0.01,256)\",\n      \"rgbChannel\": \"226 232 240\",\n      \"hslChannel\": \"214.3 31.8% 91.4%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#cbd5e1\",\n      \"rgb\": \"rgb(203,213,225)\",\n      \"hsl\": \"hsl(212.7,26.8%,83.9%)\",\n      \"oklch\": \"oklch(0.87,0.02,253)\",\n      \"rgbChannel\": \"203 213 225\",\n      \"hslChannel\": \"212.7 26.8% 83.9%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#94a3b8\",\n      \"rgb\": \"rgb(148,163,184)\",\n      \"hsl\": \"hsl(215,20.2%,65.1%)\",\n      \"oklch\": \"oklch(0.71,0.04,257)\",\n      \"rgbChannel\": \"148 163 184\",\n      \"hslChannel\": \"215 20.2% 65.1%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#64748b\",\n      \"rgb\": \"rgb(100,116,139)\",\n      \"hsl\": \"hsl(215.4,16.3%,46.9%)\",\n      \"oklch\": \"oklch(0.55,0.04,257)\",\n      \"rgbChannel\": \"100 116 139\",\n      \"hslChannel\": \"215.4 16.3% 46.9%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#475569\",\n      \"rgb\": \"rgb(71,85,105)\",\n      \"hsl\": \"hsl(215.3,19.3%,34.5%)\",\n      \"oklch\": \"oklch(0.45,0.04,257)\",\n      \"rgbChannel\": \"71 85 105\",\n      \"hslChannel\": \"215.3 19.3% 34.5%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#334155\",\n      \"rgb\": \"rgb(51,65,85)\",\n      \"hsl\": \"hsl(215.3,25%,26.7%)\",\n      \"oklch\": \"oklch(0.37,0.04,257)\",\n      \"rgbChannel\": \"51 65 85\",\n      \"hslChannel\": \"215.3 25% 26.7%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#1e293b\",\n      \"rgb\": \"rgb(30,41,59)\",\n      \"hsl\": \"hsl(217.2,32.6%,17.5%)\",\n      \"oklch\": \"oklch(0.28,0.04,260)\",\n      \"rgbChannel\": \"30 41 59\",\n      \"hslChannel\": \"217.2 32.6% 17.5%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#0f172a\",\n      \"rgb\": \"rgb(15,23,42)\",\n      \"hsl\": \"hsl(222.2,47.4%,11.2%)\",\n      \"oklch\": \"oklch(0.21,0.04,266)\",\n      \"rgbChannel\": \"15 23 42\",\n      \"hslChannel\": \"222.2 47.4% 11.2%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#020617\",\n      \"rgb\": \"rgb(2,6,23)\",\n      \"hsl\": \"hsl(222.2,84%,4.9%)\",\n      \"oklch\": \"oklch(0.13,0.04,265)\",\n      \"rgbChannel\": \"2 6 23\",\n      \"hslChannel\": \"222.2 84% 4.9%\"\n    }\n  ],\n  \"gray\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#f9fafb\",\n      \"rgb\": \"rgb(249,250,251)\",\n      \"hsl\": \"hsl(210,20%,98%)\",\n      \"oklch\": \"oklch(0.98,0.00,248)\",\n      \"rgbChannel\": \"249 250 251\",\n      \"hslChannel\": \"210 20% 98%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#f3f4f6\",\n      \"rgb\": \"rgb(243,244,246)\",\n      \"hsl\": \"hsl(220,14.3%,95.9%)\",\n      \"oklch\": \"oklch(0.97,0.00,265)\",\n      \"rgbChannel\": \"243 244 246\",\n      \"hslChannel\": \"220 14.3% 95.9%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#e5e7eb\",\n      \"rgb\": \"rgb(229,231,235)\",\n      \"hsl\": \"hsl(220,13%,91%)\",\n      \"oklch\": \"oklch(0.93,0.01,265)\",\n      \"rgbChannel\": \"229 231 235\",\n      \"hslChannel\": \"220 13% 91%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#d1d5db\",\n      \"rgb\": \"rgb(209,213,219)\",\n      \"hsl\": \"hsl(216,12.2%,83.9%)\",\n      \"oklch\": \"oklch(0.87,0.01,258)\",\n      \"rgbChannel\": \"209 213 219\",\n      \"hslChannel\": \"216 12.2% 83.9%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#9ca3af\",\n      \"rgb\": \"rgb(156,163,175)\",\n      \"hsl\": \"hsl(217.9,10.6%,64.9%)\",\n      \"oklch\": \"oklch(0.71,0.02,261)\",\n      \"rgbChannel\": \"156 163 175\",\n      \"hslChannel\": \"217.9 10.6% 64.9%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#6b7280\",\n      \"rgb\": \"rgb(107,114,128)\",\n      \"hsl\": \"hsl(220,8.9%,46.1%)\",\n      \"oklch\": \"oklch(0.55,0.02,264)\",\n      \"rgbChannel\": \"107 114 128\",\n      \"hslChannel\": \"220 8.9% 46.1%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#4b5563\",\n      \"rgb\": \"rgb(75,85,99)\",\n      \"hsl\": \"hsl(215,13.8%,34.1%)\",\n      \"oklch\": \"oklch(0.45,0.03,257)\",\n      \"rgbChannel\": \"75 85 99\",\n      \"hslChannel\": \"215 13.8% 34.1%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#374151\",\n      \"rgb\": \"rgb(55,65,81)\",\n      \"hsl\": \"hsl(216.9,19.1%,26.7%)\",\n      \"oklch\": \"oklch(0.37,0.03,260)\",\n      \"rgbChannel\": \"55 65 81\",\n      \"hslChannel\": \"216.9 19.1% 26.7%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#1f2937\",\n      \"rgb\": \"rgb(31,41,55)\",\n      \"hsl\": \"hsl(215,27.9%,16.9%)\",\n      \"oklch\": \"oklch(0.28,0.03,257)\",\n      \"rgbChannel\": \"31 41 55\",\n      \"hslChannel\": \"215 27.9% 16.9%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#111827\",\n      \"rgb\": \"rgb(17,24,39)\",\n      \"hsl\": \"hsl(220.9,39.3%,11%)\",\n      \"oklch\": \"oklch(0.21,0.03,265)\",\n      \"rgbChannel\": \"17 24 39\",\n      \"hslChannel\": \"220.9 39.3% 11%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#030712\",\n      \"rgb\": \"rgb(3,7,18)\",\n      \"hsl\": \"hsl(224,71.4%,4.1%)\",\n      \"oklch\": \"oklch(0.13,0.03,262)\",\n      \"rgbChannel\": \"3 7 18\",\n      \"hslChannel\": \"224 71.4% 4.1%\"\n    }\n  ],\n  \"zinc\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fafafa\",\n      \"rgb\": \"rgb(250,250,250)\",\n      \"hsl\": \"hsl(0,0%,98%)\",\n      \"oklch\": \"oklch(0.99,0.00,0)\",\n      \"rgbChannel\": \"250 250 250\",\n      \"hslChannel\": \"0 0% 98%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#f4f4f5\",\n      \"rgb\": \"rgb(244,244,245)\",\n      \"hsl\": \"hsl(240,4.8%,95.9%)\",\n      \"oklch\": \"oklch(0.97,0.00,286)\",\n      \"rgbChannel\": \"244 244 245\",\n      \"hslChannel\": \"240 4.8% 95.9%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#e4e4e7\",\n      \"rgb\": \"rgb(228,228,231)\",\n      \"hsl\": \"hsl(240,5.9%,90%)\",\n      \"oklch\": \"oklch(0.92,0.00,286)\",\n      \"rgbChannel\": \"228 228 231\",\n      \"hslChannel\": \"240 5.9% 90%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#d4d4d8\",\n      \"rgb\": \"rgb(212,212,216)\",\n      \"hsl\": \"hsl(240,4.9%,83.9%)\",\n      \"oklch\": \"oklch(0.87,0.01,286)\",\n      \"rgbChannel\": \"212 212 216\",\n      \"hslChannel\": \"240 4.9% 83.9%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#a1a1aa\",\n      \"rgb\": \"rgb(161,161,170)\",\n      \"hsl\": \"hsl(240,5%,64.9%)\",\n      \"oklch\": \"oklch(0.71,0.01,286)\",\n      \"rgbChannel\": \"161 161 170\",\n      \"hslChannel\": \"240 5% 64.9%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#71717a\",\n      \"rgb\": \"rgb(113,113,122)\",\n      \"hsl\": \"hsl(240,3.8%,46.1%)\",\n      \"oklch\": \"oklch(0.55,0.01,286)\",\n      \"rgbChannel\": \"113 113 122\",\n      \"hslChannel\": \"240 3.8% 46.1%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#52525b\",\n      \"rgb\": \"rgb(82,82,91)\",\n      \"hsl\": \"hsl(240,5.2%,33.9%)\",\n      \"oklch\": \"oklch(0.44,0.01,286)\",\n      \"rgbChannel\": \"82 82 91\",\n      \"hslChannel\": \"240 5.2% 33.9%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#3f3f46\",\n      \"rgb\": \"rgb(63,63,70)\",\n      \"hsl\": \"hsl(240,5.3%,26.1%)\",\n      \"oklch\": \"oklch(0.37,0.01,286)\",\n      \"rgbChannel\": \"63 63 70\",\n      \"hslChannel\": \"240 5.3% 26.1%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#27272a\",\n      \"rgb\": \"rgb(39,39,42)\",\n      \"hsl\": \"hsl(240,3.7%,15.9%)\",\n      \"oklch\": \"oklch(0.27,0.01,286)\",\n      \"rgbChannel\": \"39 39 42\",\n      \"hslChannel\": \"240 3.7% 15.9%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#18181b\",\n      \"rgb\": \"rgb(24,24,27)\",\n      \"hsl\": \"hsl(240,5.9%,10%)\",\n      \"oklch\": \"oklch(0.21,0.01,286)\",\n      \"rgbChannel\": \"24 24 27\",\n      \"hslChannel\": \"240 5.9% 10%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#09090b\",\n      \"rgb\": \"rgb(9,9,11)\",\n      \"hsl\": \"hsl(240,10%,3.9%)\",\n      \"oklch\": \"oklch(0.14,0.00,286)\",\n      \"rgbChannel\": \"9 9 11\",\n      \"hslChannel\": \"240 10% 3.9%\"\n    }\n  ],\n  \"neutral\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fafafa\",\n      \"rgb\": \"rgb(250,250,250)\",\n      \"hsl\": \"hsl(0,0%,98%)\",\n      \"oklch\": \"oklch(0.99,0.00,0)\",\n      \"rgbChannel\": \"250 250 250\",\n      \"hslChannel\": \"0 0% 98%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#f5f5f5\",\n      \"rgb\": \"rgb(245,245,245)\",\n      \"hsl\": \"hsl(0,0%,96.1%)\",\n      \"oklch\": \"oklch(0.97,0.00,0)\",\n      \"rgbChannel\": \"245 245 245\",\n      \"hslChannel\": \"0 0% 96.1%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#e5e5e5\",\n      \"rgb\": \"rgb(229,229,229)\",\n      \"hsl\": \"hsl(0,0%,89.8%)\",\n      \"oklch\": \"oklch(0.92,0.00,0)\",\n      \"rgbChannel\": \"229 229 229\",\n      \"hslChannel\": \"0 0% 89.8%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#d4d4d4\",\n      \"rgb\": \"rgb(212,212,212)\",\n      \"hsl\": \"hsl(0,0%,83.1%)\",\n      \"oklch\": \"oklch(0.87,0.00,0)\",\n      \"rgbChannel\": \"212 212 212\",\n      \"hslChannel\": \"0 0% 83.1%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#a3a3a3\",\n      \"rgb\": \"rgb(163,163,163)\",\n      \"hsl\": \"hsl(0,0%,63.9%)\",\n      \"oklch\": \"oklch(0.72,0.00,0)\",\n      \"rgbChannel\": \"163 163 163\",\n      \"hslChannel\": \"0 0% 63.9%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#737373\",\n      \"rgb\": \"rgb(115,115,115)\",\n      \"hsl\": \"hsl(0,0%,45.1%)\",\n      \"oklch\": \"oklch(0.56,0.00,0)\",\n      \"rgbChannel\": \"115 115 115\",\n      \"hslChannel\": \"0 0% 45.1%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#525252\",\n      \"rgb\": \"rgb(82,82,82)\",\n      \"hsl\": \"hsl(0,0%,32.2%)\",\n      \"oklch\": \"oklch(0.44,0.00,0)\",\n      \"rgbChannel\": \"82 82 82\",\n      \"hslChannel\": \"0 0% 32.2%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#404040\",\n      \"rgb\": \"rgb(64,64,64)\",\n      \"hsl\": \"hsl(0,0%,25.1%)\",\n      \"oklch\": \"oklch(0.37,0.00,0)\",\n      \"rgbChannel\": \"64 64 64\",\n      \"hslChannel\": \"0 0% 25.1%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#262626\",\n      \"rgb\": \"rgb(38,38,38)\",\n      \"hsl\": \"hsl(0,0%,14.9%)\",\n      \"oklch\": \"oklch(0.27,0.00,0)\",\n      \"rgbChannel\": \"38 38 38\",\n      \"hslChannel\": \"0 0% 14.9%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#171717\",\n      \"rgb\": \"rgb(23,23,23)\",\n      \"hsl\": \"hsl(0,0%,9%)\",\n      \"oklch\": \"oklch(0.20,0.00,0)\",\n      \"rgbChannel\": \"23 23 23\",\n      \"hslChannel\": \"0 0% 9%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#0a0a0a\",\n      \"rgb\": \"rgb(10,10,10)\",\n      \"hsl\": \"hsl(0,0%,3.9%)\",\n      \"oklch\": \"oklch(0.14,0.00,0)\",\n      \"rgbChannel\": \"10 10 10\",\n      \"hslChannel\": \"0 0% 3.9%\"\n    }\n  ],\n  \"stone\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fafaf9\",\n      \"rgb\": \"rgb(250,250,249)\",\n      \"hsl\": \"hsl(60,9.1%,97.8%)\",\n      \"oklch\": \"oklch(0.98,0.00,106)\",\n      \"rgbChannel\": \"250 250 249\",\n      \"hslChannel\": \"60 9.1% 97.8%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#f5f5f4\",\n      \"rgb\": \"rgb(245,245,244)\",\n      \"hsl\": \"hsl(60,4.8%,95.9%)\",\n      \"oklch\": \"oklch(0.97,0.00,106)\",\n      \"rgbChannel\": \"245 245 244\",\n      \"hslChannel\": \"60 4.8% 95.9%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#e7e5e4\",\n      \"rgb\": \"rgb(231,229,228)\",\n      \"hsl\": \"hsl(20,5.9%,90%)\",\n      \"oklch\": \"oklch(0.92,0.00,49)\",\n      \"rgbChannel\": \"231 229 228\",\n      \"hslChannel\": \"20 5.9% 90%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#d6d3d1\",\n      \"rgb\": \"rgb(214,211,209)\",\n      \"hsl\": \"hsl(24,5.7%,82.9%)\",\n      \"oklch\": \"oklch(0.87,0.00,56)\",\n      \"rgbChannel\": \"214 211 209\",\n      \"hslChannel\": \"24 5.7% 82.9%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#a8a29e\",\n      \"rgb\": \"rgb(168,162,158)\",\n      \"hsl\": \"hsl(24,5.4%,63.9%)\",\n      \"oklch\": \"oklch(0.72,0.01,56)\",\n      \"rgbChannel\": \"168 162 158\",\n      \"hslChannel\": \"24 5.4% 63.9%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#78716c\",\n      \"rgb\": \"rgb(120,113,108)\",\n      \"hsl\": \"hsl(25,5.3%,44.7%)\",\n      \"oklch\": \"oklch(0.55,0.01,58)\",\n      \"rgbChannel\": \"120 113 108\",\n      \"hslChannel\": \"25 5.3% 44.7%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#57534e\",\n      \"rgb\": \"rgb(87,83,78)\",\n      \"hsl\": \"hsl(33.3,5.5%,32.4%)\",\n      \"oklch\": \"oklch(0.44,0.01,74)\",\n      \"rgbChannel\": \"87 83 78\",\n      \"hslChannel\": \"33.3 5.5% 32.4%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#44403c\",\n      \"rgb\": \"rgb(68,64,60)\",\n      \"hsl\": \"hsl(30,6.3%,25.1%)\",\n      \"oklch\": \"oklch(0.37,0.01,68)\",\n      \"rgbChannel\": \"68 64 60\",\n      \"hslChannel\": \"30 6.3% 25.1%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#292524\",\n      \"rgb\": \"rgb(41,37,36)\",\n      \"hsl\": \"hsl(12,6.5%,15.1%)\",\n      \"oklch\": \"oklch(0.27,0.01,34)\",\n      \"rgbChannel\": \"41 37 36\",\n      \"hslChannel\": \"12 6.5% 15.1%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#1c1917\",\n      \"rgb\": \"rgb(28,25,23)\",\n      \"hsl\": \"hsl(24,9.8%,10%)\",\n      \"oklch\": \"oklch(0.22,0.01,56)\",\n      \"rgbChannel\": \"28 25 23\",\n      \"hslChannel\": \"24 9.8% 10%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#0c0a09\",\n      \"rgb\": \"rgb(12,10,9)\",\n      \"hsl\": \"hsl(20,14.3%,4.1%)\",\n      \"oklch\": \"oklch(0.15,0.00,49)\",\n      \"rgbChannel\": \"12 10 9\",\n      \"hslChannel\": \"20 14.3% 4.1%\"\n    }\n  ],\n  \"red\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fef2f2\",\n      \"rgb\": \"rgb(254,242,242)\",\n      \"hsl\": \"hsl(0,85.7%,97.3%)\",\n      \"oklch\": \"oklch(0.97,0.01,17)\",\n      \"rgbChannel\": \"254 242 242\",\n      \"hslChannel\": \"0 85.7% 97.3%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#fee2e2\",\n      \"rgb\": \"rgb(254,226,226)\",\n      \"hsl\": \"hsl(0,93.3%,94.1%)\",\n      \"oklch\": \"oklch(0.94,0.03,18)\",\n      \"rgbChannel\": \"254 226 226\",\n      \"hslChannel\": \"0 93.3% 94.1%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#fecaca\",\n      \"rgb\": \"rgb(254,202,202)\",\n      \"hsl\": \"hsl(0,96.3%,89.4%)\",\n      \"oklch\": \"oklch(0.88,0.06,18)\",\n      \"rgbChannel\": \"254 202 202\",\n      \"hslChannel\": \"0 96.3% 89.4%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#fca5a5\",\n      \"rgb\": \"rgb(252,165,165)\",\n      \"hsl\": \"hsl(0,93.5%,81.8%)\",\n      \"oklch\": \"oklch(0.81,0.10,20)\",\n      \"rgbChannel\": \"252 165 165\",\n      \"hslChannel\": \"0 93.5% 81.8%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#f87171\",\n      \"rgb\": \"rgb(248,113,113)\",\n      \"hsl\": \"hsl(0,90.6%,70.8%)\",\n      \"oklch\": \"oklch(0.71,0.17,22)\",\n      \"rgbChannel\": \"248 113 113\",\n      \"hslChannel\": \"0 90.6% 70.8%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#ef4444\",\n      \"rgb\": \"rgb(239,68,68)\",\n      \"hsl\": \"hsl(0,84.2%,60.2%)\",\n      \"oklch\": \"oklch(0.64,0.21,25)\",\n      \"rgbChannel\": \"239 68 68\",\n      \"hslChannel\": \"0 84.2% 60.2%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#dc2626\",\n      \"rgb\": \"rgb(220,38,38)\",\n      \"hsl\": \"hsl(0,72.2%,50.6%)\",\n      \"oklch\": \"oklch(0.58,0.22,27)\",\n      \"rgbChannel\": \"220 38 38\",\n      \"hslChannel\": \"0 72.2% 50.6%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#b91c1c\",\n      \"rgb\": \"rgb(185,28,28)\",\n      \"hsl\": \"hsl(0,73.7%,41.8%)\",\n      \"oklch\": \"oklch(0.51,0.19,28)\",\n      \"rgbChannel\": \"185 28 28\",\n      \"hslChannel\": \"0 73.7% 41.8%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#991b1b\",\n      \"rgb\": \"rgb(153,27,27)\",\n      \"hsl\": \"hsl(0,70%,35.3%)\",\n      \"oklch\": \"oklch(0.44,0.16,27)\",\n      \"rgbChannel\": \"153 27 27\",\n      \"hslChannel\": \"0 70% 35.3%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#7f1d1d\",\n      \"rgb\": \"rgb(127,29,29)\",\n      \"hsl\": \"hsl(0,62.8%,30.6%)\",\n      \"oklch\": \"oklch(0.40,0.13,26)\",\n      \"rgbChannel\": \"127 29 29\",\n      \"hslChannel\": \"0 62.8% 30.6%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#450a0a\",\n      \"rgb\": \"rgb(69,10,10)\",\n      \"hsl\": \"hsl(0,74.7%,15.5%)\",\n      \"oklch\": \"oklch(0.26,0.09,26)\",\n      \"rgbChannel\": \"69 10 10\",\n      \"hslChannel\": \"0 74.7% 15.5%\"\n    }\n  ],\n  \"orange\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fff7ed\",\n      \"rgb\": \"rgb(255,247,237)\",\n      \"hsl\": \"hsl(33.3,100%,96.5%)\",\n      \"oklch\": \"oklch(0.98,0.02,74)\",\n      \"rgbChannel\": \"255 247 237\",\n      \"hslChannel\": \"33.3 100% 96.5%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#ffedd5\",\n      \"rgb\": \"rgb(255,237,213)\",\n      \"hsl\": \"hsl(34.3,100%,91.8%)\",\n      \"oklch\": \"oklch(0.95,0.04,75)\",\n      \"rgbChannel\": \"255 237 213\",\n      \"hslChannel\": \"34.3 100% 91.8%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#fed7aa\",\n      \"rgb\": \"rgb(254,215,170)\",\n      \"hsl\": \"hsl(32.1,97.7%,83.1%)\",\n      \"oklch\": \"oklch(0.90,0.07,71)\",\n      \"rgbChannel\": \"254 215 170\",\n      \"hslChannel\": \"32.1 97.7% 83.1%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#fdba74\",\n      \"rgb\": \"rgb(253,186,116)\",\n      \"hsl\": \"hsl(30.7,97.2%,72.4%)\",\n      \"oklch\": \"oklch(0.84,0.12,66)\",\n      \"rgbChannel\": \"253 186 116\",\n      \"hslChannel\": \"30.7 97.2% 72.4%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#fb923c\",\n      \"rgb\": \"rgb(251,146,60)\",\n      \"hsl\": \"hsl(27,96%,61%)\",\n      \"oklch\": \"oklch(0.76,0.16,56)\",\n      \"rgbChannel\": \"251 146 60\",\n      \"hslChannel\": \"27 96% 61%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#f97316\",\n      \"rgb\": \"rgb(249,115,22)\",\n      \"hsl\": \"hsl(24.6,95%,53.1%)\",\n      \"oklch\": \"oklch(0.70,0.19,48)\",\n      \"rgbChannel\": \"249 115 22\",\n      \"hslChannel\": \"24.6 95% 53.1%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#ea580c\",\n      \"rgb\": \"rgb(234,88,12)\",\n      \"hsl\": \"hsl(20.5,90.2%,48.2%)\",\n      \"oklch\": \"oklch(0.65,0.19,41)\",\n      \"rgbChannel\": \"234 88 12\",\n      \"hslChannel\": \"20.5 90.2% 48.2%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#c2410c\",\n      \"rgb\": \"rgb(194,65,12)\",\n      \"hsl\": \"hsl(17.5,88.3%,40.4%)\",\n      \"oklch\": \"oklch(0.55,0.17,38)\",\n      \"rgbChannel\": \"194 65 12\",\n      \"hslChannel\": \"17.5 88.3% 40.4%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#9a3412\",\n      \"rgb\": \"rgb(154,52,18)\",\n      \"hsl\": \"hsl(15,79.1%,33.7%)\",\n      \"oklch\": \"oklch(0.47,0.14,37)\",\n      \"rgbChannel\": \"154 52 18\",\n      \"hslChannel\": \"15 79.1% 33.7%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#7c2d12\",\n      \"rgb\": \"rgb(124,45,18)\",\n      \"hsl\": \"hsl(15.3,74.6%,27.8%)\",\n      \"oklch\": \"oklch(0.41,0.12,38)\",\n      \"rgbChannel\": \"124 45 18\",\n      \"hslChannel\": \"15.3 74.6% 27.8%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#431407\",\n      \"rgb\": \"rgb(67,20,7)\",\n      \"hsl\": \"hsl(13,81.1%,14.5%)\",\n      \"oklch\": \"oklch(0.27,0.08,36)\",\n      \"rgbChannel\": \"67 20 7\",\n      \"hslChannel\": \"13 81.1% 14.5%\"\n    }\n  ],\n  \"amber\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fffbeb\",\n      \"rgb\": \"rgb(255,251,235)\",\n      \"hsl\": \"hsl(48,100%,96.1%)\",\n      \"oklch\": \"oklch(0.99,0.02,95)\",\n      \"rgbChannel\": \"255 251 235\",\n      \"hslChannel\": \"48 100% 96.1%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#fef3c7\",\n      \"rgb\": \"rgb(254,243,199)\",\n      \"hsl\": \"hsl(48,96.5%,88.8%)\",\n      \"oklch\": \"oklch(0.96,0.06,96)\",\n      \"rgbChannel\": \"254 243 199\",\n      \"hslChannel\": \"48 96.5% 88.8%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#fde68a\",\n      \"rgb\": \"rgb(253,230,138)\",\n      \"hsl\": \"hsl(48,96.6%,76.7%)\",\n      \"oklch\": \"oklch(0.92,0.12,96)\",\n      \"rgbChannel\": \"253 230 138\",\n      \"hslChannel\": \"48 96.6% 76.7%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#fcd34d\",\n      \"rgb\": \"rgb(252,211,77)\",\n      \"hsl\": \"hsl(45.9,96.7%,64.5%)\",\n      \"oklch\": \"oklch(0.88,0.15,92)\",\n      \"rgbChannel\": \"252 211 77\",\n      \"hslChannel\": \"45.9 96.7% 64.5%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#fbbf24\",\n      \"rgb\": \"rgb(251,191,36)\",\n      \"hsl\": \"hsl(43.3,96.4%,56.3%)\",\n      \"oklch\": \"oklch(0.84,0.16,84)\",\n      \"rgbChannel\": \"251 191 36\",\n      \"hslChannel\": \"43.3 96.4% 56.3%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#f59e0b\",\n      \"rgb\": \"rgb(245,158,11)\",\n      \"hsl\": \"hsl(37.7,92.1%,50.2%)\",\n      \"oklch\": \"oklch(0.77,0.16,70)\",\n      \"rgbChannel\": \"245 158 11\",\n      \"hslChannel\": \"37.7 92.1% 50.2%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#d97706\",\n      \"rgb\": \"rgb(217,119,6)\",\n      \"hsl\": \"hsl(32.1,94.6%,43.7%)\",\n      \"oklch\": \"oklch(0.67,0.16,58)\",\n      \"rgbChannel\": \"217 119 6\",\n      \"hslChannel\": \"32.1 94.6% 43.7%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#b45309\",\n      \"rgb\": \"rgb(180,83,9)\",\n      \"hsl\": \"hsl(26,90.5%,37.1%)\",\n      \"oklch\": \"oklch(0.56,0.15,49)\",\n      \"rgbChannel\": \"180 83 9\",\n      \"hslChannel\": \"26 90.5% 37.1%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#92400e\",\n      \"rgb\": \"rgb(146,64,14)\",\n      \"hsl\": \"hsl(22.7,82.5%,31.4%)\",\n      \"oklch\": \"oklch(0.47,0.12,46)\",\n      \"rgbChannel\": \"146 64 14\",\n      \"hslChannel\": \"22.7 82.5% 31.4%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#78350f\",\n      \"rgb\": \"rgb(120,53,15)\",\n      \"hsl\": \"hsl(21.7,77.8%,26.5%)\",\n      \"oklch\": \"oklch(0.41,0.11,46)\",\n      \"rgbChannel\": \"120 53 15\",\n      \"hslChannel\": \"21.7 77.8% 26.5%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#451a03\",\n      \"rgb\": \"rgb(69,26,3)\",\n      \"hsl\": \"hsl(20.9,91.7%,14.1%)\",\n      \"oklch\": \"oklch(0.28,0.07,46)\",\n      \"rgbChannel\": \"69 26 3\",\n      \"hslChannel\": \"20.9 91.7% 14.1%\"\n    }\n  ],\n  \"yellow\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fefce8\",\n      \"rgb\": \"rgb(254,252,232)\",\n      \"hsl\": \"hsl(54.5,91.7%,95.3%)\",\n      \"oklch\": \"oklch(0.99,0.03,102)\",\n      \"rgbChannel\": \"254 252 232\",\n      \"hslChannel\": \"54.5 91.7% 95.3%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#fef9c3\",\n      \"rgb\": \"rgb(254,249,195)\",\n      \"hsl\": \"hsl(54.9,96.7%,88%)\",\n      \"oklch\": \"oklch(0.97,0.07,103)\",\n      \"rgbChannel\": \"254 249 195\",\n      \"hslChannel\": \"54.9 96.7% 88%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#fef08a\",\n      \"rgb\": \"rgb(254,240,138)\",\n      \"hsl\": \"hsl(52.8,98.3%,76.9%)\",\n      \"oklch\": \"oklch(0.95,0.12,102)\",\n      \"rgbChannel\": \"254 240 138\",\n      \"hslChannel\": \"52.8 98.3% 76.9%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#fde047\",\n      \"rgb\": \"rgb(253,224,71)\",\n      \"hsl\": \"hsl(50.4,97.8%,63.5%)\",\n      \"oklch\": \"oklch(0.91,0.17,98)\",\n      \"rgbChannel\": \"253 224 71\",\n      \"hslChannel\": \"50.4 97.8% 63.5%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#facc15\",\n      \"rgb\": \"rgb(250,204,21)\",\n      \"hsl\": \"hsl(47.9,95.8%,53.1%)\",\n      \"oklch\": \"oklch(0.86,0.17,92)\",\n      \"rgbChannel\": \"250 204 21\",\n      \"hslChannel\": \"47.9 95.8% 53.1%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#eab308\",\n      \"rgb\": \"rgb(234,179,8)\",\n      \"hsl\": \"hsl(45.4,93.4%,47.5%)\",\n      \"oklch\": \"oklch(0.80,0.16,86)\",\n      \"rgbChannel\": \"234 179 8\",\n      \"hslChannel\": \"45.4 93.4% 47.5%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#ca8a04\",\n      \"rgb\": \"rgb(202,138,4)\",\n      \"hsl\": \"hsl(40.6,96.1%,40.4%)\",\n      \"oklch\": \"oklch(0.68,0.14,76)\",\n      \"rgbChannel\": \"202 138 4\",\n      \"hslChannel\": \"40.6 96.1% 40.4%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#a16207\",\n      \"rgb\": \"rgb(161,98,7)\",\n      \"hsl\": \"hsl(35.5,91.7%,32.9%)\",\n      \"oklch\": \"oklch(0.55,0.12,66)\",\n      \"rgbChannel\": \"161 98 7\",\n      \"hslChannel\": \"35.5 91.7% 32.9%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#854d0e\",\n      \"rgb\": \"rgb(133,77,14)\",\n      \"hsl\": \"hsl(31.8,81%,28.8%)\",\n      \"oklch\": \"oklch(0.48,0.10,62)\",\n      \"rgbChannel\": \"133 77 14\",\n      \"hslChannel\": \"31.8 81% 28.8%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#713f12\",\n      \"rgb\": \"rgb(113,63,18)\",\n      \"hsl\": \"hsl(28.4,72.5%,25.7%)\",\n      \"oklch\": \"oklch(0.42,0.09,58)\",\n      \"rgbChannel\": \"113 63 18\",\n      \"hslChannel\": \"28.4 72.5% 25.7%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#422006\",\n      \"rgb\": \"rgb(66,32,6)\",\n      \"hsl\": \"hsl(26,83.3%,14.1%)\",\n      \"oklch\": \"oklch(0.29,0.06,54)\",\n      \"rgbChannel\": \"66 32 6\",\n      \"hslChannel\": \"26 83.3% 14.1%\"\n    }\n  ],\n  \"lime\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#f7fee7\",\n      \"rgb\": \"rgb(247,254,231)\",\n      \"hsl\": \"hsl(78.3,92%,95.1%)\",\n      \"oklch\": \"oklch(0.99,0.03,121)\",\n      \"rgbChannel\": \"247 254 231\",\n      \"hslChannel\": \"78.3 92% 95.1%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#ecfccb\",\n      \"rgb\": \"rgb(236,252,203)\",\n      \"hsl\": \"hsl(79.6,89.1%,89.2%)\",\n      \"oklch\": \"oklch(0.97,0.07,122)\",\n      \"rgbChannel\": \"236 252 203\",\n      \"hslChannel\": \"79.6 89.1% 89.2%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#d9f99d\",\n      \"rgb\": \"rgb(217,249,157)\",\n      \"hsl\": \"hsl(80.9,88.5%,79.6%)\",\n      \"oklch\": \"oklch(0.94,0.12,124)\",\n      \"rgbChannel\": \"217 249 157\",\n      \"hslChannel\": \"80.9 88.5% 79.6%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#bef264\",\n      \"rgb\": \"rgb(190,242,100)\",\n      \"hsl\": \"hsl(82,84.5%,67.1%)\",\n      \"oklch\": \"oklch(0.90,0.18,127)\",\n      \"rgbChannel\": \"190 242 100\",\n      \"hslChannel\": \"82 84.5% 67.1%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#a3e635\",\n      \"rgb\": \"rgb(163,230,53)\",\n      \"hsl\": \"hsl(82.7,78%,55.5%)\",\n      \"oklch\": \"oklch(0.85,0.21,129)\",\n      \"rgbChannel\": \"163 230 53\",\n      \"hslChannel\": \"82.7 78% 55.5%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#84cc16\",\n      \"rgb\": \"rgb(132,204,22)\",\n      \"hsl\": \"hsl(83.7,80.5%,44.3%)\",\n      \"oklch\": \"oklch(0.77,0.20,131)\",\n      \"rgbChannel\": \"132 204 22\",\n      \"hslChannel\": \"83.7 80.5% 44.3%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#65a30d\",\n      \"rgb\": \"rgb(101,163,13)\",\n      \"hsl\": \"hsl(84.8,85.2%,34.5%)\",\n      \"oklch\": \"oklch(0.65,0.18,132)\",\n      \"rgbChannel\": \"101 163 13\",\n      \"hslChannel\": \"84.8 85.2% 34.5%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#4d7c0f\",\n      \"rgb\": \"rgb(77,124,15)\",\n      \"hsl\": \"hsl(85.9,78.4%,27.3%)\",\n      \"oklch\": \"oklch(0.53,0.14,132)\",\n      \"rgbChannel\": \"77 124 15\",\n      \"hslChannel\": \"85.9 78.4% 27.3%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#3f6212\",\n      \"rgb\": \"rgb(63,98,18)\",\n      \"hsl\": \"hsl(86.3,69%,22.7%)\",\n      \"oklch\": \"oklch(0.45,0.11,131)\",\n      \"rgbChannel\": \"63 98 18\",\n      \"hslChannel\": \"86.3 69% 22.7%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#365314\",\n      \"rgb\": \"rgb(54,83,20)\",\n      \"hsl\": \"hsl(87.6,61.2%,20.2%)\",\n      \"oklch\": \"oklch(0.41,0.10,131)\",\n      \"rgbChannel\": \"54 83 20\",\n      \"hslChannel\": \"87.6 61.2% 20.2%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#1a2e05\",\n      \"rgb\": \"rgb(26,46,5)\",\n      \"hsl\": \"hsl(89.3,80.4%,10%)\",\n      \"oklch\": \"oklch(0.27,0.07,132)\",\n      \"rgbChannel\": \"26 46 5\",\n      \"hslChannel\": \"89.3 80.4% 10%\"\n    }\n  ],\n  \"green\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#f0fdf4\",\n      \"rgb\": \"rgb(240,253,244)\",\n      \"hsl\": \"hsl(138.5,76.5%,96.7%)\",\n      \"oklch\": \"oklch(0.98,0.02,156)\",\n      \"rgbChannel\": \"240 253 244\",\n      \"hslChannel\": \"138.5 76.5% 96.7%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#dcfce7\",\n      \"rgb\": \"rgb(220,252,231)\",\n      \"hsl\": \"hsl(140.6,84.2%,92.5%)\",\n      \"oklch\": \"oklch(0.96,0.04,157)\",\n      \"rgbChannel\": \"220 252 231\",\n      \"hslChannel\": \"140.6 84.2% 92.5%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#bbf7d0\",\n      \"rgb\": \"rgb(187,247,208)\",\n      \"hsl\": \"hsl(141,78.9%,85.1%)\",\n      \"oklch\": \"oklch(0.93,0.08,156)\",\n      \"rgbChannel\": \"187 247 208\",\n      \"hslChannel\": \"141 78.9% 85.1%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#86efac\",\n      \"rgb\": \"rgb(134,239,172)\",\n      \"hsl\": \"hsl(141.7,76.6%,73.1%)\",\n      \"oklch\": \"oklch(0.87,0.14,154)\",\n      \"rgbChannel\": \"134 239 172\",\n      \"hslChannel\": \"141.7 76.6% 73.1%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#4ade80\",\n      \"rgb\": \"rgb(74,222,128)\",\n      \"hsl\": \"hsl(141.9,69.2%,58%)\",\n      \"oklch\": \"oklch(0.80,0.18,152)\",\n      \"rgbChannel\": \"74 222 128\",\n      \"hslChannel\": \"141.9 69.2% 58%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#22c55e\",\n      \"rgb\": \"rgb(34,197,94)\",\n      \"hsl\": \"hsl(142.1,70.6%,45.3%)\",\n      \"oklch\": \"oklch(0.72,0.19,150)\",\n      \"rgbChannel\": \"34 197 94\",\n      \"hslChannel\": \"142.1 70.6% 45.3%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#16a34a\",\n      \"rgb\": \"rgb(22,163,74)\",\n      \"hsl\": \"hsl(142.1,76.2%,36.3%)\",\n      \"oklch\": \"oklch(0.63,0.17,149)\",\n      \"rgbChannel\": \"22 163 74\",\n      \"hslChannel\": \"142.1 76.2% 36.3%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#15803d\",\n      \"rgb\": \"rgb(21,128,61)\",\n      \"hsl\": \"hsl(142.4,71.8%,29.2%)\",\n      \"oklch\": \"oklch(0.53,0.14,150)\",\n      \"rgbChannel\": \"21 128 61\",\n      \"hslChannel\": \"142.4 71.8% 29.2%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#166534\",\n      \"rgb\": \"rgb(22,101,52)\",\n      \"hsl\": \"hsl(142.8,64.2%,24.1%)\",\n      \"oklch\": \"oklch(0.45,0.11,151)\",\n      \"rgbChannel\": \"22 101 52\",\n      \"hslChannel\": \"142.8 64.2% 24.1%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#14532d\",\n      \"rgb\": \"rgb(20,83,45)\",\n      \"hsl\": \"hsl(143.8,61.2%,20.2%)\",\n      \"oklch\": \"oklch(0.39,0.09,153)\",\n      \"rgbChannel\": \"20 83 45\",\n      \"hslChannel\": \"143.8 61.2% 20.2%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#052e16\",\n      \"rgb\": \"rgb(5,46,22)\",\n      \"hsl\": \"hsl(144.9,80.4%,10%)\",\n      \"oklch\": \"oklch(0.27,0.06,153)\",\n      \"rgbChannel\": \"5 46 22\",\n      \"hslChannel\": \"144.9 80.4% 10%\"\n    }\n  ],\n  \"emerald\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#ecfdf5\",\n      \"rgb\": \"rgb(236,253,245)\",\n      \"hsl\": \"hsl(151.8,81%,95.9%)\",\n      \"oklch\": \"oklch(0.98,0.02,166)\",\n      \"rgbChannel\": \"236 253 245\",\n      \"hslChannel\": \"151.8 81% 95.9%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#d1fae5\",\n      \"rgb\": \"rgb(209,250,229)\",\n      \"hsl\": \"hsl(149.3,80.4%,90%)\",\n      \"oklch\": \"oklch(0.95,0.05,163)\",\n      \"rgbChannel\": \"209 250 229\",\n      \"hslChannel\": \"149.3 80.4% 90%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#a7f3d0\",\n      \"rgb\": \"rgb(167,243,208)\",\n      \"hsl\": \"hsl(152.4,76%,80.4%)\",\n      \"oklch\": \"oklch(0.90,0.09,164)\",\n      \"rgbChannel\": \"167 243 208\",\n      \"hslChannel\": \"152.4 76% 80.4%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#6ee7b7\",\n      \"rgb\": \"rgb(110,231,183)\",\n      \"hsl\": \"hsl(156.2,71.6%,66.9%)\",\n      \"oklch\": \"oklch(0.85,0.13,165)\",\n      \"rgbChannel\": \"110 231 183\",\n      \"hslChannel\": \"156.2 71.6% 66.9%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#34d399\",\n      \"rgb\": \"rgb(52,211,153)\",\n      \"hsl\": \"hsl(158.1,64.4%,51.6%)\",\n      \"oklch\": \"oklch(0.77,0.15,163)\",\n      \"rgbChannel\": \"52 211 153\",\n      \"hslChannel\": \"158.1 64.4% 51.6%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#10b981\",\n      \"rgb\": \"rgb(16,185,129)\",\n      \"hsl\": \"hsl(160.1,84.1%,39.4%)\",\n      \"oklch\": \"oklch(0.70,0.15,162)\",\n      \"rgbChannel\": \"16 185 129\",\n      \"hslChannel\": \"160.1 84.1% 39.4%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#059669\",\n      \"rgb\": \"rgb(5,150,105)\",\n      \"hsl\": \"hsl(161.4,93.5%,30.4%)\",\n      \"oklch\": \"oklch(0.60,0.13,163)\",\n      \"rgbChannel\": \"5 150 105\",\n      \"hslChannel\": \"161.4 93.5% 30.4%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#047857\",\n      \"rgb\": \"rgb(4,120,87)\",\n      \"hsl\": \"hsl(162.9,93.5%,24.3%)\",\n      \"oklch\": \"oklch(0.51,0.10,166)\",\n      \"rgbChannel\": \"4 120 87\",\n      \"hslChannel\": \"162.9 93.5% 24.3%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#065f46\",\n      \"rgb\": \"rgb(6,95,70)\",\n      \"hsl\": \"hsl(163.1,88.1%,19.8%)\",\n      \"oklch\": \"oklch(0.43,0.09,167)\",\n      \"rgbChannel\": \"6 95 70\",\n      \"hslChannel\": \"163.1 88.1% 19.8%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#064e3b\",\n      \"rgb\": \"rgb(6,78,59)\",\n      \"hsl\": \"hsl(164.2,85.7%,16.5%)\",\n      \"oklch\": \"oklch(0.38,0.07,169)\",\n      \"rgbChannel\": \"6 78 59\",\n      \"hslChannel\": \"164.2 85.7% 16.5%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#022c22\",\n      \"rgb\": \"rgb(2,44,34)\",\n      \"hsl\": \"hsl(165.7,91.3%,9%)\",\n      \"oklch\": \"oklch(0.26,0.05,173)\",\n      \"rgbChannel\": \"2 44 34\",\n      \"hslChannel\": \"165.7 91.3% 9%\"\n    }\n  ],\n  \"teal\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#f0fdfa\",\n      \"rgb\": \"rgb(240,253,250)\",\n      \"hsl\": \"hsl(166.2,76.5%,96.7%)\",\n      \"oklch\": \"oklch(0.98,0.01,181)\",\n      \"rgbChannel\": \"240 253 250\",\n      \"hslChannel\": \"166.2 76.5% 96.7%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#ccfbf1\",\n      \"rgb\": \"rgb(204,251,241)\",\n      \"hsl\": \"hsl(167.2,85.5%,89.2%)\",\n      \"oklch\": \"oklch(0.95,0.05,181)\",\n      \"rgbChannel\": \"204 251 241\",\n      \"hslChannel\": \"167.2 85.5% 89.2%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#99f6e4\",\n      \"rgb\": \"rgb(153,246,228)\",\n      \"hsl\": \"hsl(168.4,83.8%,78.2%)\",\n      \"oklch\": \"oklch(0.91,0.09,180)\",\n      \"rgbChannel\": \"153 246 228\",\n      \"hslChannel\": \"168.4 83.8% 78.2%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#5eead4\",\n      \"rgb\": \"rgb(94,234,212)\",\n      \"hsl\": \"hsl(170.6,76.9%,64.3%)\",\n      \"oklch\": \"oklch(0.85,0.13,181)\",\n      \"rgbChannel\": \"94 234 212\",\n      \"hslChannel\": \"170.6 76.9% 64.3%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#2dd4bf\",\n      \"rgb\": \"rgb(45,212,191)\",\n      \"hsl\": \"hsl(172.5,66%,50.4%)\",\n      \"oklch\": \"oklch(0.78,0.13,182)\",\n      \"rgbChannel\": \"45 212 191\",\n      \"hslChannel\": \"172.5 66% 50.4%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#14b8a6\",\n      \"rgb\": \"rgb(20,184,166)\",\n      \"hsl\": \"hsl(173.4,80.4%,40%)\",\n      \"oklch\": \"oklch(0.70,0.12,183)\",\n      \"rgbChannel\": \"20 184 166\",\n      \"hslChannel\": \"173.4 80.4% 40%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#0d9488\",\n      \"rgb\": \"rgb(13,148,136)\",\n      \"hsl\": \"hsl(174.7,83.9%,31.6%)\",\n      \"oklch\": \"oklch(0.60,0.10,185)\",\n      \"rgbChannel\": \"13 148 136\",\n      \"hslChannel\": \"174.7 83.9% 31.6%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#0f766e\",\n      \"rgb\": \"rgb(15,118,110)\",\n      \"hsl\": \"hsl(175.3,77.4%,26.1%)\",\n      \"oklch\": \"oklch(0.51,0.09,186)\",\n      \"rgbChannel\": \"15 118 110\",\n      \"hslChannel\": \"175.3 77.4% 26.1%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#115e59\",\n      \"rgb\": \"rgb(17,94,89)\",\n      \"hsl\": \"hsl(176.1,69.4%,21.8%)\",\n      \"oklch\": \"oklch(0.44,0.07,188)\",\n      \"rgbChannel\": \"17 94 89\",\n      \"hslChannel\": \"176.1 69.4% 21.8%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#134e4a\",\n      \"rgb\": \"rgb(19,78,74)\",\n      \"hsl\": \"hsl(175.9,60.8%,19%)\",\n      \"oklch\": \"oklch(0.39,0.06,188)\",\n      \"rgbChannel\": \"19 78 74\",\n      \"hslChannel\": \"175.9 60.8% 19%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#042f2e\",\n      \"rgb\": \"rgb(4,47,46)\",\n      \"hsl\": \"hsl(178.6,84.3%,10%)\",\n      \"oklch\": \"oklch(0.28,0.04,193)\",\n      \"rgbChannel\": \"4 47 46\",\n      \"hslChannel\": \"178.6 84.3% 10%\"\n    }\n  ],\n  \"cyan\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#ecfeff\",\n      \"rgb\": \"rgb(236,254,255)\",\n      \"hsl\": \"hsl(183.2,100%,96.3%)\",\n      \"oklch\": \"oklch(0.98,0.02,201)\",\n      \"rgbChannel\": \"236 254 255\",\n      \"hslChannel\": \"183.2 100% 96.3%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#cffafe\",\n      \"rgb\": \"rgb(207,250,254)\",\n      \"hsl\": \"hsl(185.1,95.9%,90.4%)\",\n      \"oklch\": \"oklch(0.96,0.04,203)\",\n      \"rgbChannel\": \"207 250 254\",\n      \"hslChannel\": \"185.1 95.9% 90.4%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#a5f3fc\",\n      \"rgb\": \"rgb(165,243,252)\",\n      \"hsl\": \"hsl(186.2,93.5%,81.8%)\",\n      \"oklch\": \"oklch(0.92,0.08,205)\",\n      \"rgbChannel\": \"165 243 252\",\n      \"hslChannel\": \"186.2 93.5% 81.8%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#67e8f9\",\n      \"rgb\": \"rgb(103,232,249)\",\n      \"hsl\": \"hsl(187,92.4%,69%)\",\n      \"oklch\": \"oklch(0.87,0.12,207)\",\n      \"rgbChannel\": \"103 232 249\",\n      \"hslChannel\": \"187 92.4% 69%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#22d3ee\",\n      \"rgb\": \"rgb(34,211,238)\",\n      \"hsl\": \"hsl(187.9,85.7%,53.3%)\",\n      \"oklch\": \"oklch(0.80,0.13,212)\",\n      \"rgbChannel\": \"34 211 238\",\n      \"hslChannel\": \"187.9 85.7% 53.3%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#06b6d4\",\n      \"rgb\": \"rgb(6,182,212)\",\n      \"hsl\": \"hsl(188.7,94.5%,42.7%)\",\n      \"oklch\": \"oklch(0.71,0.13,215)\",\n      \"rgbChannel\": \"6 182 212\",\n      \"hslChannel\": \"188.7 94.5% 42.7%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#0891b2\",\n      \"rgb\": \"rgb(8,145,178)\",\n      \"hsl\": \"hsl(191.6,91.4%,36.5%)\",\n      \"oklch\": \"oklch(0.61,0.11,222)\",\n      \"rgbChannel\": \"8 145 178\",\n      \"hslChannel\": \"191.6 91.4% 36.5%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#0e7490\",\n      \"rgb\": \"rgb(14,116,144)\",\n      \"hsl\": \"hsl(192.9,82.3%,31%)\",\n      \"oklch\": \"oklch(0.52,0.09,223)\",\n      \"rgbChannel\": \"14 116 144\",\n      \"hslChannel\": \"192.9 82.3% 31%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#155e75\",\n      \"rgb\": \"rgb(21,94,117)\",\n      \"hsl\": \"hsl(194.4,69.6%,27.1%)\",\n      \"oklch\": \"oklch(0.45,0.08,224)\",\n      \"rgbChannel\": \"21 94 117\",\n      \"hslChannel\": \"194.4 69.6% 27.1%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#164e63\",\n      \"rgb\": \"rgb(22,78,99)\",\n      \"hsl\": \"hsl(196.4,63.6%,23.7%)\",\n      \"oklch\": \"oklch(0.40,0.07,227)\",\n      \"rgbChannel\": \"22 78 99\",\n      \"hslChannel\": \"196.4 63.6% 23.7%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#083344\",\n      \"rgb\": \"rgb(8,51,68)\",\n      \"hsl\": \"hsl(197,78.9%,14.9%)\",\n      \"oklch\": \"oklch(0.30,0.05,230)\",\n      \"rgbChannel\": \"8 51 68\",\n      \"hslChannel\": \"197 78.9% 14.9%\"\n    }\n  ],\n  \"sky\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#f0f9ff\",\n      \"rgb\": \"rgb(240,249,255)\",\n      \"hsl\": \"hsl(204,100%,97.1%)\",\n      \"oklch\": \"oklch(0.98,0.01,237)\",\n      \"rgbChannel\": \"240 249 255\",\n      \"hslChannel\": \"204 100% 97.1%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#e0f2fe\",\n      \"rgb\": \"rgb(224,242,254)\",\n      \"hsl\": \"hsl(204,93.8%,93.7%)\",\n      \"oklch\": \"oklch(0.95,0.03,237)\",\n      \"rgbChannel\": \"224 242 254\",\n      \"hslChannel\": \"204 93.8% 93.7%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#bae6fd\",\n      \"rgb\": \"rgb(186,230,253)\",\n      \"hsl\": \"hsl(200.6,94.4%,86.1%)\",\n      \"oklch\": \"oklch(0.90,0.06,231)\",\n      \"rgbChannel\": \"186 230 253\",\n      \"hslChannel\": \"200.6 94.4% 86.1%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#7dd3fc\",\n      \"rgb\": \"rgb(125,211,252)\",\n      \"hsl\": \"hsl(199.4,95.5%,73.9%)\",\n      \"oklch\": \"oklch(0.83,0.10,230)\",\n      \"rgbChannel\": \"125 211 252\",\n      \"hslChannel\": \"199.4 95.5% 73.9%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#38bdf8\",\n      \"rgb\": \"rgb(56,189,248)\",\n      \"hsl\": \"hsl(198.4,93.2%,59.6%)\",\n      \"oklch\": \"oklch(0.75,0.14,233)\",\n      \"rgbChannel\": \"56 189 248\",\n      \"hslChannel\": \"198.4 93.2% 59.6%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#0ea5e9\",\n      \"rgb\": \"rgb(14,165,233)\",\n      \"hsl\": \"hsl(198.6,88.7%,48.4%)\",\n      \"oklch\": \"oklch(0.68,0.15,237)\",\n      \"rgbChannel\": \"14 165 233\",\n      \"hslChannel\": \"198.6 88.7% 48.4%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#0284c7\",\n      \"rgb\": \"rgb(2,132,199)\",\n      \"hsl\": \"hsl(200.4,98%,39.4%)\",\n      \"oklch\": \"oklch(0.59,0.14,242)\",\n      \"rgbChannel\": \"2 132 199\",\n      \"hslChannel\": \"200.4 98% 39.4%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#0369a1\",\n      \"rgb\": \"rgb(3,105,161)\",\n      \"hsl\": \"hsl(201.3,96.3%,32.2%)\",\n      \"oklch\": \"oklch(0.50,0.12,243)\",\n      \"rgbChannel\": \"3 105 161\",\n      \"hslChannel\": \"201.3 96.3% 32.2%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#075985\",\n      \"rgb\": \"rgb(7,89,133)\",\n      \"hsl\": \"hsl(201,90%,27.5%)\",\n      \"oklch\": \"oklch(0.44,0.10,241)\",\n      \"rgbChannel\": \"7 89 133\",\n      \"hslChannel\": \"201 90% 27.5%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#0c4a6e\",\n      \"rgb\": \"rgb(12,74,110)\",\n      \"hsl\": \"hsl(202,80.3%,23.9%)\",\n      \"oklch\": \"oklch(0.39,0.08,241)\",\n      \"rgbChannel\": \"12 74 110\",\n      \"hslChannel\": \"202 80.3% 23.9%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#082f49\",\n      \"rgb\": \"rgb(8,47,73)\",\n      \"hsl\": \"hsl(204,80.2%,15.9%)\",\n      \"oklch\": \"oklch(0.29,0.06,243)\",\n      \"rgbChannel\": \"8 47 73\",\n      \"hslChannel\": \"204 80.2% 15.9%\"\n    }\n  ],\n  \"blue\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#eff6ff\",\n      \"rgb\": \"rgb(239,246,255)\",\n      \"hsl\": \"hsl(213.8,100%,96.9%)\",\n      \"oklch\": \"oklch(0.97,0.01,255)\",\n      \"rgbChannel\": \"239 246 255\",\n      \"hslChannel\": \"213.8 100% 96.9%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#dbeafe\",\n      \"rgb\": \"rgb(219,234,254)\",\n      \"hsl\": \"hsl(214.3,94.6%,92.7%)\",\n      \"oklch\": \"oklch(0.93,0.03,256)\",\n      \"rgbChannel\": \"219 234 254\",\n      \"hslChannel\": \"214.3 94.6% 92.7%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#bfdbfe\",\n      \"rgb\": \"rgb(191,219,254)\",\n      \"hsl\": \"hsl(213.3,96.9%,87.3%)\",\n      \"oklch\": \"oklch(0.88,0.06,254)\",\n      \"rgbChannel\": \"191 219 254\",\n      \"hslChannel\": \"213.3 96.9% 87.3%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#93c5fd\",\n      \"rgb\": \"rgb(147,197,253)\",\n      \"hsl\": \"hsl(211.7,96.4%,78.4%)\",\n      \"oklch\": \"oklch(0.81,0.10,252)\",\n      \"rgbChannel\": \"147 197 253\",\n      \"hslChannel\": \"211.7 96.4% 78.4%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#60a5fa\",\n      \"rgb\": \"rgb(96,165,250)\",\n      \"hsl\": \"hsl(213.1,93.9%,67.8%)\",\n      \"oklch\": \"oklch(0.71,0.14,255)\",\n      \"rgbChannel\": \"96 165 250\",\n      \"hslChannel\": \"213.1 93.9% 67.8%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#3b82f6\",\n      \"rgb\": \"rgb(59,130,246)\",\n      \"hsl\": \"hsl(217.2,91.2%,59.8%)\",\n      \"oklch\": \"oklch(0.62,0.19,260)\",\n      \"rgbChannel\": \"59 130 246\",\n      \"hslChannel\": \"217.2 91.2% 59.8%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#2563eb\",\n      \"rgb\": \"rgb(37,99,235)\",\n      \"hsl\": \"hsl(221.2,83.2%,53.3%)\",\n      \"oklch\": \"oklch(0.55,0.22,263)\",\n      \"rgbChannel\": \"37 99 235\",\n      \"hslChannel\": \"221.2 83.2% 53.3%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#1d4ed8\",\n      \"rgb\": \"rgb(29,78,216)\",\n      \"hsl\": \"hsl(224.3,76.3%,48%)\",\n      \"oklch\": \"oklch(0.49,0.22,264)\",\n      \"rgbChannel\": \"29 78 216\",\n      \"hslChannel\": \"224.3 76.3% 48%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#1e40af\",\n      \"rgb\": \"rgb(30,64,175)\",\n      \"hsl\": \"hsl(225.9,70.7%,40.2%)\",\n      \"oklch\": \"oklch(0.42,0.18,266)\",\n      \"rgbChannel\": \"30 64 175\",\n      \"hslChannel\": \"225.9 70.7% 40.2%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#1e3a8a\",\n      \"rgb\": \"rgb(30,58,138)\",\n      \"hsl\": \"hsl(224.4,64.3%,32.9%)\",\n      \"oklch\": \"oklch(0.38,0.14,266)\",\n      \"rgbChannel\": \"30 58 138\",\n      \"hslChannel\": \"224.4 64.3% 32.9%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#172554\",\n      \"rgb\": \"rgb(23,37,84)\",\n      \"hsl\": \"hsl(226.2,57%,21%)\",\n      \"oklch\": \"oklch(0.28,0.09,268)\",\n      \"rgbChannel\": \"23 37 84\",\n      \"hslChannel\": \"226.2 57% 21%\"\n    }\n  ],\n  \"indigo\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#eef2ff\",\n      \"rgb\": \"rgb(238,242,255)\",\n      \"hsl\": \"hsl(225.9,100%,96.7%)\",\n      \"oklch\": \"oklch(0.96,0.02,272)\",\n      \"rgbChannel\": \"238 242 255\",\n      \"hslChannel\": \"225.9 100% 96.7%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#e0e7ff\",\n      \"rgb\": \"rgb(224,231,255)\",\n      \"hsl\": \"hsl(226.5,100%,93.9%)\",\n      \"oklch\": \"oklch(0.93,0.03,273)\",\n      \"rgbChannel\": \"224 231 255\",\n      \"hslChannel\": \"226.5 100% 93.9%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#c7d2fe\",\n      \"rgb\": \"rgb(199,210,254)\",\n      \"hsl\": \"hsl(228,96.5%,88.8%)\",\n      \"oklch\": \"oklch(0.87,0.06,274)\",\n      \"rgbChannel\": \"199 210 254\",\n      \"hslChannel\": \"228 96.5% 88.8%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#a5b4fc\",\n      \"rgb\": \"rgb(165,180,252)\",\n      \"hsl\": \"hsl(229.7,93.5%,81.8%)\",\n      \"oklch\": \"oklch(0.79,0.10,275)\",\n      \"rgbChannel\": \"165 180 252\",\n      \"hslChannel\": \"229.7 93.5% 81.8%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#818cf8\",\n      \"rgb\": \"rgb(129,140,248)\",\n      \"hsl\": \"hsl(234.5,89.5%,73.9%)\",\n      \"oklch\": \"oklch(0.68,0.16,277)\",\n      \"rgbChannel\": \"129 140 248\",\n      \"hslChannel\": \"234.5 89.5% 73.9%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#6366f1\",\n      \"rgb\": \"rgb(99,102,241)\",\n      \"hsl\": \"hsl(238.7,83.5%,66.7%)\",\n      \"oklch\": \"oklch(0.59,0.20,277)\",\n      \"rgbChannel\": \"99 102 241\",\n      \"hslChannel\": \"238.7 83.5% 66.7%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#4f46e5\",\n      \"rgb\": \"rgb(79,70,229)\",\n      \"hsl\": \"hsl(243.4,75.4%,58.6%)\",\n      \"oklch\": \"oklch(0.51,0.23,277)\",\n      \"rgbChannel\": \"79 70 229\",\n      \"hslChannel\": \"243.4 75.4% 58.6%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#4338ca\",\n      \"rgb\": \"rgb(67,56,202)\",\n      \"hsl\": \"hsl(244.5,57.9%,50.6%)\",\n      \"oklch\": \"oklch(0.46,0.21,277)\",\n      \"rgbChannel\": \"67 56 202\",\n      \"hslChannel\": \"244.5 57.9% 50.6%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#3730a3\",\n      \"rgb\": \"rgb(55,48,163)\",\n      \"hsl\": \"hsl(243.7,54.5%,41.4%)\",\n      \"oklch\": \"oklch(0.40,0.18,277)\",\n      \"rgbChannel\": \"55 48 163\",\n      \"hslChannel\": \"243.7 54.5% 41.4%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#312e81\",\n      \"rgb\": \"rgb(49,46,129)\",\n      \"hsl\": \"hsl(242.2,47.4%,34.3%)\",\n      \"oklch\": \"oklch(0.36,0.14,279)\",\n      \"rgbChannel\": \"49 46 129\",\n      \"hslChannel\": \"242.2 47.4% 34.3%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#1e1b4b\",\n      \"rgb\": \"rgb(30,27,75)\",\n      \"hsl\": \"hsl(243.8,47.1%,20%)\",\n      \"oklch\": \"oklch(0.26,0.09,281)\",\n      \"rgbChannel\": \"30 27 75\",\n      \"hslChannel\": \"243.8 47.1% 20%\"\n    }\n  ],\n  \"violet\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#f5f3ff\",\n      \"rgb\": \"rgb(245,243,255)\",\n      \"hsl\": \"hsl(250,100%,97.6%)\",\n      \"oklch\": \"oklch(0.97,0.02,294)\",\n      \"rgbChannel\": \"245 243 255\",\n      \"hslChannel\": \"250 100% 97.6%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#ede9fe\",\n      \"rgb\": \"rgb(237,233,254)\",\n      \"hsl\": \"hsl(251.4,91.3%,95.5%)\",\n      \"oklch\": \"oklch(0.94,0.03,295)\",\n      \"rgbChannel\": \"237 233 254\",\n      \"hslChannel\": \"251.4 91.3% 95.5%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#ddd6fe\",\n      \"rgb\": \"rgb(221,214,254)\",\n      \"hsl\": \"hsl(250.5,95.2%,91.8%)\",\n      \"oklch\": \"oklch(0.89,0.05,293)\",\n      \"rgbChannel\": \"221 214 254\",\n      \"hslChannel\": \"250.5 95.2% 91.8%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#c4b5fd\",\n      \"rgb\": \"rgb(196,181,253)\",\n      \"hsl\": \"hsl(252.5,94.7%,85.1%)\",\n      \"oklch\": \"oklch(0.81,0.10,294)\",\n      \"rgbChannel\": \"196 181 253\",\n      \"hslChannel\": \"252.5 94.7% 85.1%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#a78bfa\",\n      \"rgb\": \"rgb(167,139,250)\",\n      \"hsl\": \"hsl(255.1,91.7%,76.3%)\",\n      \"oklch\": \"oklch(0.71,0.16,294)\",\n      \"rgbChannel\": \"167 139 250\",\n      \"hslChannel\": \"255.1 91.7% 76.3%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#8b5cf6\",\n      \"rgb\": \"rgb(139,92,246)\",\n      \"hsl\": \"hsl(258.3,89.5%,66.3%)\",\n      \"oklch\": \"oklch(0.61,0.22,293)\",\n      \"rgbChannel\": \"139 92 246\",\n      \"hslChannel\": \"258.3 89.5% 66.3%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#7c3aed\",\n      \"rgb\": \"rgb(124,58,237)\",\n      \"hsl\": \"hsl(262.1,83.3%,57.8%)\",\n      \"oklch\": \"oklch(0.54,0.25,293)\",\n      \"rgbChannel\": \"124 58 237\",\n      \"hslChannel\": \"262.1 83.3% 57.8%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#6d28d9\",\n      \"rgb\": \"rgb(109,40,217)\",\n      \"hsl\": \"hsl(263.4,70%,50.4%)\",\n      \"oklch\": \"oklch(0.49,0.24,293)\",\n      \"rgbChannel\": \"109 40 217\",\n      \"hslChannel\": \"263.4 70% 50.4%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#5b21b6\",\n      \"rgb\": \"rgb(91,33,182)\",\n      \"hsl\": \"hsl(263.4,69.3%,42.2%)\",\n      \"oklch\": \"oklch(0.43,0.21,293)\",\n      \"rgbChannel\": \"91 33 182\",\n      \"hslChannel\": \"263.4 69.3% 42.2%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#4c1d95\",\n      \"rgb\": \"rgb(76,29,149)\",\n      \"hsl\": \"hsl(263.5,67.4%,34.9%)\",\n      \"oklch\": \"oklch(0.38,0.18,294)\",\n      \"rgbChannel\": \"76 29 149\",\n      \"hslChannel\": \"263.5 67.4% 34.9%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#1e1b4b\",\n      \"rgb\": \"rgb(46,16,101)\",\n      \"hsl\": \"hsl(261.2,72.6%,22.9%)\",\n      \"oklch\": \"oklch(0.28,0.14,291)\",\n      \"rgbChannel\": \"46 16 101\",\n      \"hslChannel\": \"261.2 72.6% 22.9%\"\n    }\n  ],\n  \"purple\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#faf5ff\",\n      \"rgb\": \"rgb(250,245,255)\",\n      \"hsl\": \"hsl(270,100%,98%)\",\n      \"oklch\": \"oklch(0.98,0.01,308)\",\n      \"rgbChannel\": \"250 245 255\",\n      \"hslChannel\": \"270 100% 98%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#f3e8ff\",\n      \"rgb\": \"rgb(243,232,255)\",\n      \"hsl\": \"hsl(268.7,100%,95.5%)\",\n      \"oklch\": \"oklch(0.95,0.03,307)\",\n      \"rgbChannel\": \"243 232 255\",\n      \"hslChannel\": \"268.7 100% 95.5%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#e9d5ff\",\n      \"rgb\": \"rgb(233,213,255)\",\n      \"hsl\": \"hsl(268.6,100%,91.8%)\",\n      \"oklch\": \"oklch(0.90,0.06,307)\",\n      \"rgbChannel\": \"233 213 255\",\n      \"hslChannel\": \"268.6 100% 91.8%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#d8b4fe\",\n      \"rgb\": \"rgb(216,180,254)\",\n      \"hsl\": \"hsl(269.2,97.4%,85.1%)\",\n      \"oklch\": \"oklch(0.83,0.11,306)\",\n      \"rgbChannel\": \"216 180 254\",\n      \"hslChannel\": \"269.2 97.4% 85.1%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#c084fc\",\n      \"rgb\": \"rgb(192,132,252)\",\n      \"hsl\": \"hsl(270,95.2%,75.3%)\",\n      \"oklch\": \"oklch(0.72,0.18,306)\",\n      \"rgbChannel\": \"192 132 252\",\n      \"hslChannel\": \"270 95.2% 75.3%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#a855f7\",\n      \"rgb\": \"rgb(168,85,247)\",\n      \"hsl\": \"hsl(270.7,91%,65.1%)\",\n      \"oklch\": \"oklch(0.63,0.23,304)\",\n      \"rgbChannel\": \"168 85 247\",\n      \"hslChannel\": \"270.7 91% 65.1%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#9333ea\",\n      \"rgb\": \"rgb(147,51,234)\",\n      \"hsl\": \"hsl(271.5,81.3%,55.9%)\",\n      \"oklch\": \"oklch(0.56,0.25,302)\",\n      \"rgbChannel\": \"147 51 234\",\n      \"hslChannel\": \"271.5 81.3% 55.9%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#7e22ce\",\n      \"rgb\": \"rgb(126,34,206)\",\n      \"hsl\": \"hsl(272.1,71.7%,47.1%)\",\n      \"oklch\": \"oklch(0.50,0.24,302)\",\n      \"rgbChannel\": \"126 34 206\",\n      \"hslChannel\": \"272.1 71.7% 47.1%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#6b21a8\",\n      \"rgb\": \"rgb(107,33,168)\",\n      \"hsl\": \"hsl(272.9,67.2%,39.4%)\",\n      \"oklch\": \"oklch(0.44,0.20,304)\",\n      \"rgbChannel\": \"107 33 168\",\n      \"hslChannel\": \"272.9 67.2% 39.4%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#581c87\",\n      \"rgb\": \"rgb(88,28,135)\",\n      \"hsl\": \"hsl(273.6,65.6%,32%)\",\n      \"oklch\": \"oklch(0.38,0.17,305)\",\n      \"rgbChannel\": \"88 28 135\",\n      \"hslChannel\": \"273.6 65.6% 32%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#3b0764\",\n      \"rgb\": \"rgb(59,7,100)\",\n      \"hsl\": \"hsl(273.5,86.9%,21%)\",\n      \"oklch\": \"oklch(0.29,0.14,303)\",\n      \"rgbChannel\": \"59 7 100\",\n      \"hslChannel\": \"273.5 86.9% 21%\"\n    }\n  ],\n  \"fuchsia\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fdf4ff\",\n      \"rgb\": \"rgb(253,244,255)\",\n      \"hsl\": \"hsl(289.1,100%,97.8%)\",\n      \"oklch\": \"oklch(0.98,0.02,320)\",\n      \"rgbChannel\": \"253 244 255\",\n      \"hslChannel\": \"289.1 100% 97.8%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#fae8ff\",\n      \"rgb\": \"rgb(250,232,255)\",\n      \"hsl\": \"hsl(287,100%,95.5%)\",\n      \"oklch\": \"oklch(0.95,0.04,319)\",\n      \"rgbChannel\": \"250 232 255\",\n      \"hslChannel\": \"287 100% 95.5%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#f5d0fe\",\n      \"rgb\": \"rgb(245,208,254)\",\n      \"hsl\": \"hsl(288.3,95.8%,90.6%)\",\n      \"oklch\": \"oklch(0.90,0.07,320)\",\n      \"rgbChannel\": \"245 208 254\",\n      \"hslChannel\": \"288.3 95.8% 90.6%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#f0abfc\",\n      \"rgb\": \"rgb(240,171,252)\",\n      \"hsl\": \"hsl(291.1,93.1%,82.9%)\",\n      \"oklch\": \"oklch(0.83,0.13,321)\",\n      \"rgbChannel\": \"240 171 252\",\n      \"hslChannel\": \"291.1 93.1% 82.9%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#e879f9\",\n      \"rgb\": \"rgb(232,121,249)\",\n      \"hsl\": \"hsl(292,91.4%,72.5%)\",\n      \"oklch\": \"oklch(0.75,0.21,322)\",\n      \"rgbChannel\": \"232 121 249\",\n      \"hslChannel\": \"292 91.4% 72.5%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#d946ef\",\n      \"rgb\": \"rgb(217,70,239)\",\n      \"hsl\": \"hsl(292.2,84.1%,60.6%)\",\n      \"oklch\": \"oklch(0.67,0.26,322)\",\n      \"rgbChannel\": \"217 70 239\",\n      \"hslChannel\": \"292.2 84.1% 60.6%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#c026d3\",\n      \"rgb\": \"rgb(192,38,211)\",\n      \"hsl\": \"hsl(293.4,69.5%,48.8%)\",\n      \"oklch\": \"oklch(0.59,0.26,323)\",\n      \"rgbChannel\": \"192 38 211\",\n      \"hslChannel\": \"293.4 69.5% 48.8%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#a21caf\",\n      \"rgb\": \"rgb(162,28,175)\",\n      \"hsl\": \"hsl(294.7,72.4%,39.8%)\",\n      \"oklch\": \"oklch(0.52,0.23,324)\",\n      \"rgbChannel\": \"162 28 175\",\n      \"hslChannel\": \"294.7 72.4% 39.8%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#86198f\",\n      \"rgb\": \"rgb(134,25,143)\",\n      \"hsl\": \"hsl(295.4,70.2%,32.9%)\",\n      \"oklch\": \"oklch(0.45,0.19,325)\",\n      \"rgbChannel\": \"134 25 143\",\n      \"hslChannel\": \"295.4 70.2% 32.9%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#701a75\",\n      \"rgb\": \"rgb(112,26,117)\",\n      \"hsl\": \"hsl(296.7,63.6%,28%)\",\n      \"oklch\": \"oklch(0.40,0.16,326)\",\n      \"rgbChannel\": \"112 26 117\",\n      \"hslChannel\": \"296.7 63.6% 28%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#4a044e\",\n      \"rgb\": \"rgb(74,4,78)\",\n      \"hsl\": \"hsl(296.8,90.2%,16.1%)\",\n      \"oklch\": \"oklch(0.29,0.13,326)\",\n      \"rgbChannel\": \"74 4 78\",\n      \"hslChannel\": \"296.8 90.2% 16.1%\"\n    }\n  ],\n  \"pink\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fdf2f8\",\n      \"rgb\": \"rgb(253,242,248)\",\n      \"hsl\": \"hsl(327.3,73.3%,97.1%)\",\n      \"oklch\": \"oklch(0.97,0.01,343)\",\n      \"rgbChannel\": \"253 242 248\",\n      \"hslChannel\": \"327.3 73.3% 97.1%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#fce7f3\",\n      \"rgb\": \"rgb(252,231,243)\",\n      \"hsl\": \"hsl(325.7,77.8%,94.7%)\",\n      \"oklch\": \"oklch(0.95,0.03,342)\",\n      \"rgbChannel\": \"252 231 243\",\n      \"hslChannel\": \"325.7 77.8% 94.7%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#fbcfe8\",\n      \"rgb\": \"rgb(251,207,232)\",\n      \"hsl\": \"hsl(325.9,84.6%,89.8%)\",\n      \"oklch\": \"oklch(0.90,0.06,343)\",\n      \"rgbChannel\": \"251 207 232\",\n      \"hslChannel\": \"325.9 84.6% 89.8%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#f9a8d4\",\n      \"rgb\": \"rgb(249,168,212)\",\n      \"hsl\": \"hsl(327.4,87.1%,81.8%)\",\n      \"oklch\": \"oklch(0.82,0.11,346)\",\n      \"rgbChannel\": \"249 168 212\",\n      \"hslChannel\": \"327.4 87.1% 81.8%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#f472b6\",\n      \"rgb\": \"rgb(244,114,182)\",\n      \"hsl\": \"hsl(328.6,85.5%,70.2%)\",\n      \"oklch\": \"oklch(0.73,0.18,350)\",\n      \"rgbChannel\": \"244 114 182\",\n      \"hslChannel\": \"328.6 85.5% 70.2%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#ec4899\",\n      \"rgb\": \"rgb(236,72,153)\",\n      \"hsl\": \"hsl(330.4,81.2%,60.4%)\",\n      \"oklch\": \"oklch(0.66,0.21,354)\",\n      \"rgbChannel\": \"236 72 153\",\n      \"hslChannel\": \"330.4 81.2% 60.4%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#db2777\",\n      \"rgb\": \"rgb(219,39,119)\",\n      \"hsl\": \"hsl(333.3,71.4%,50.6%)\",\n      \"oklch\": \"oklch(0.59,0.22,1)\",\n      \"rgbChannel\": \"219 39 119\",\n      \"hslChannel\": \"333.3 71.4% 50.6%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#be185d\",\n      \"rgb\": \"rgb(190,24,93)\",\n      \"hsl\": \"hsl(335.1,77.6%,42%)\",\n      \"oklch\": \"oklch(0.52,0.20,4)\",\n      \"rgbChannel\": \"190 24 93\",\n      \"hslChannel\": \"335.1 77.6% 42%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#9d174d\",\n      \"rgb\": \"rgb(157,23,77)\",\n      \"hsl\": \"hsl(335.8,74.4%,35.3%)\",\n      \"oklch\": \"oklch(0.46,0.17,4)\",\n      \"rgbChannel\": \"157 23 77\",\n      \"hslChannel\": \"335.8 74.4% 35.3%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#831843\",\n      \"rgb\": \"rgb(131,24,67)\",\n      \"hsl\": \"hsl(335.9,69%,30.4%)\",\n      \"oklch\": \"oklch(0.41,0.14,2)\",\n      \"rgbChannel\": \"131 24 67\",\n      \"hslChannel\": \"335.9 69% 30.4%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#500724\",\n      \"rgb\": \"rgb(80,7,36)\",\n      \"hsl\": \"hsl(336.2,83.9%,17.1%)\",\n      \"oklch\": \"oklch(0.28,0.10,4)\",\n      \"rgbChannel\": \"80 7 36\",\n      \"hslChannel\": \"336.2 83.9% 17.1%\"\n    }\n  ],\n  \"rose\": [\n    {\n      \"scale\": 50,\n      \"hex\": \"#fff1f2\",\n      \"rgb\": \"rgb(255,241,242)\",\n      \"hsl\": \"hsl(355.7,100%,97.3%)\",\n      \"oklch\": \"oklch(0.97,0.02,12)\",\n      \"rgbChannel\": \"255 241 242\",\n      \"hslChannel\": \"355.7 100% 97.3%\"\n    },\n    {\n      \"scale\": 100,\n      \"hex\": \"#ffe4e6\",\n      \"rgb\": \"rgb(255,228,230)\",\n      \"hsl\": \"hsl(355.6,100%,94.7%)\",\n      \"oklch\": \"oklch(0.94,0.03,13)\",\n      \"rgbChannel\": \"255 228 230\",\n      \"hslChannel\": \"355.6 100% 94.7%\"\n    },\n    {\n      \"scale\": 200,\n      \"hex\": \"#fecdd3\",\n      \"rgb\": \"rgb(254,205,211)\",\n      \"hsl\": \"hsl(352.7,96.1%,90%)\",\n      \"oklch\": \"oklch(0.89,0.06,10)\",\n      \"rgbChannel\": \"254 205 211\",\n      \"hslChannel\": \"352.7 96.1% 90%\"\n    },\n    {\n      \"scale\": 300,\n      \"hex\": \"#fda4af\",\n      \"rgb\": \"rgb(253,164,175)\",\n      \"hsl\": \"hsl(352.6,95.7%,81.8%)\",\n      \"oklch\": \"oklch(0.81,0.11,12)\",\n      \"rgbChannel\": \"253 164 175\",\n      \"hslChannel\": \"352.6 95.7% 81.8%\"\n    },\n    {\n      \"scale\": 400,\n      \"hex\": \"#fb7185\",\n      \"rgb\": \"rgb(251,113,133)\",\n      \"hsl\": \"hsl(351.3,94.5%,71.4%)\",\n      \"oklch\": \"oklch(0.72,0.17,13)\",\n      \"rgbChannel\": \"251 113 133\",\n      \"hslChannel\": \"351.3 94.5% 71.4%\"\n    },\n    {\n      \"scale\": 500,\n      \"hex\": \"#f43f5e\",\n      \"rgb\": \"rgb(244,63,94)\",\n      \"hsl\": \"hsl(349.7,89.2%,60.2%)\",\n      \"oklch\": \"oklch(0.65,0.22,16)\",\n      \"rgbChannel\": \"244 63 94\",\n      \"hslChannel\": \"349.7 89.2% 60.2%\"\n    },\n    {\n      \"scale\": 600,\n      \"hex\": \"#e11d48\",\n      \"rgb\": \"rgb(225,29,72)\",\n      \"hsl\": \"hsl(346.8,77.2%,49.8%)\",\n      \"oklch\": \"oklch(0.59,0.22,18)\",\n      \"rgbChannel\": \"225 29 72\",\n      \"hslChannel\": \"346.8 77.2% 49.8%\"\n    },\n    {\n      \"scale\": 700,\n      \"hex\": \"#be123c\",\n      \"rgb\": \"rgb(190,18,60)\",\n      \"hsl\": \"hsl(345.3,82.7%,40.8%)\",\n      \"oklch\": \"oklch(0.51,0.20,17)\",\n      \"rgbChannel\": \"190 18 60\",\n      \"hslChannel\": \"345.3 82.7% 40.8%\"\n    },\n    {\n      \"scale\": 800,\n      \"hex\": \"#9f1239\",\n      \"rgb\": \"rgb(159,18,57)\",\n      \"hsl\": \"hsl(343.4,79.7%,34.7%)\",\n      \"oklch\": \"oklch(0.45,0.17,14)\",\n      \"rgbChannel\": \"159 18 57\",\n      \"hslChannel\": \"343.4 79.7% 34.7%\"\n    },\n    {\n      \"scale\": 900,\n      \"hex\": \"#881337\",\n      \"rgb\": \"rgb(136,19,55)\",\n      \"hsl\": \"hsl(341.5,75.5%,30.4%)\",\n      \"oklch\": \"oklch(0.41,0.15,10)\",\n      \"rgbChannel\": \"136 19 55\",\n      \"hslChannel\": \"341.5 75.5% 30.4%\"\n    },\n    {\n      \"scale\": 950,\n      \"hex\": \"#4c0519\",\n      \"rgb\": \"rgb(76,5,25)\",\n      \"hsl\": \"hsl(343.1,87.7%,15.9%)\",\n      \"oklch\": \"oklch(0.27,0.10,12)\",\n      \"rgbChannel\": \"76 5 25\",\n      \"hslChannel\": \"343.1 87.7% 15.9%\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/colors/mauve.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.145 0.008 326)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.145 0.008 326)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.145 0.008 326)\",\n      \"primary\": \"oklch(0.212 0.019 322.12)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.96 0.003 325.6)\",\n      \"secondary-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"muted\": \"oklch(0.96 0.003 325.6)\",\n      \"muted-foreground\": \"oklch(0.542 0.034 322.5)\",\n      \"accent\": \"oklch(0.96 0.003 325.6)\",\n      \"accent-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0.005 325.62)\",\n      \"input\": \"oklch(0.922 0.005 325.62)\",\n      \"ring\": \"oklch(0.711 0.019 323.02)\",\n      \"chart-1\": \"oklch(0.865 0.012 325.68)\",\n      \"chart-2\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-3\": \"oklch(0.435 0.029 321.78)\",\n      \"chart-4\": \"oklch(0.364 0.029 323.89)\",\n      \"chart-5\": \"oklch(0.263 0.024 320.12)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.145 0.008 326)\",\n      \"sidebar-primary\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.96 0.003 325.6)\",\n      \"sidebar-accent-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-border\": \"oklch(0.922 0.005 325.62)\",\n      \"sidebar-ring\": \"oklch(0.711 0.019 323.02)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.145 0.008 326)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.212 0.019 322.12)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.212 0.019 322.12)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.922 0.005 325.62)\",\n      \"primary-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"secondary\": \"oklch(0.263 0.024 320.12)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.263 0.024 320.12)\",\n      \"muted-foreground\": \"oklch(0.711 0.019 323.02)\",\n      \"accent\": \"oklch(0.263 0.024 320.12)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-1\": \"oklch(0.865 0.012 325.68)\",\n      \"chart-2\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-3\": \"oklch(0.435 0.029 321.78)\",\n      \"chart-4\": \"oklch(0.364 0.029 323.89)\",\n      \"chart-5\": \"oklch(0.263 0.024 320.12)\",\n      \"sidebar\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.263 0.024 320.12)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.542 0.034 322.5)\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.145 0.008 326)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.145 0.008 326)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.145 0.008 326)\",\n      \"primary\": \"oklch(0.212 0.019 322.12)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.96 0.003 325.6)\",\n      \"secondary-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"muted\": \"oklch(0.96 0.003 325.6)\",\n      \"muted-foreground\": \"oklch(0.542 0.034 322.5)\",\n      \"accent\": \"oklch(0.96 0.003 325.6)\",\n      \"accent-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0.005 325.62)\",\n      \"input\": \"oklch(0.922 0.005 325.62)\",\n      \"ring\": \"oklch(0.711 0.019 323.02)\",\n      \"chart-1\": \"oklch(0.865 0.012 325.68)\",\n      \"chart-2\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-3\": \"oklch(0.435 0.029 321.78)\",\n      \"chart-4\": \"oklch(0.364 0.029 323.89)\",\n      \"chart-5\": \"oklch(0.263 0.024 320.12)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.145 0.008 326)\",\n      \"sidebar-primary\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.96 0.003 325.6)\",\n      \"sidebar-accent-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-border\": \"oklch(0.922 0.005 325.62)\",\n      \"sidebar-ring\": \"oklch(0.711 0.019 323.02)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.145 0.008 326)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.212 0.019 322.12)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.212 0.019 322.12)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.922 0.005 325.62)\",\n      \"primary-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"secondary\": \"oklch(0.263 0.024 320.12)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.263 0.024 320.12)\",\n      \"muted-foreground\": \"oklch(0.711 0.019 323.02)\",\n      \"accent\": \"oklch(0.263 0.024 320.12)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-1\": \"oklch(0.865 0.012 325.68)\",\n      \"chart-2\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-3\": \"oklch(0.435 0.029 321.78)\",\n      \"chart-4\": \"oklch(0.364 0.029 323.89)\",\n      \"chart-5\": \"oklch(0.263 0.024 320.12)\",\n      \"sidebar\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.263 0.024 320.12)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.542 0.034 322.5)\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.145 0.008 326)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.145 0.008 326)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.145 0.008 326)\",\n      \"primary\": \"oklch(0.212 0.019 322.12)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.96 0.003 325.6)\",\n      \"secondary-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"muted\": \"oklch(0.96 0.003 325.6)\",\n      \"muted-foreground\": \"oklch(0.542 0.034 322.5)\",\n      \"accent\": \"oklch(0.96 0.003 325.6)\",\n      \"accent-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0.005 325.62)\",\n      \"input\": \"oklch(0.922 0.005 325.62)\",\n      \"ring\": \"oklch(0.711 0.019 323.02)\",\n      \"chart-1\": \"oklch(0.865 0.012 325.68)\",\n      \"chart-2\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-3\": \"oklch(0.435 0.029 321.78)\",\n      \"chart-4\": \"oklch(0.364 0.029 323.89)\",\n      \"chart-5\": \"oklch(0.263 0.024 320.12)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.145 0.008 326)\",\n      \"sidebar-primary\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.96 0.003 325.6)\",\n      \"sidebar-accent-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-border\": \"oklch(0.922 0.005 325.62)\",\n      \"sidebar-ring\": \"oklch(0.711 0.019 323.02)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.145 0.008 326)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.212 0.019 322.12)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.212 0.019 322.12)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.922 0.005 325.62)\",\n      \"primary-foreground\": \"oklch(0.212 0.019 322.12)\",\n      \"secondary\": \"oklch(0.263 0.024 320.12)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.263 0.024 320.12)\",\n      \"muted-foreground\": \"oklch(0.711 0.019 323.02)\",\n      \"accent\": \"oklch(0.263 0.024 320.12)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-1\": \"oklch(0.865 0.012 325.68)\",\n      \"chart-2\": \"oklch(0.542 0.034 322.5)\",\n      \"chart-3\": \"oklch(0.435 0.029 321.78)\",\n      \"chart-4\": \"oklch(0.364 0.029 323.89)\",\n      \"chart-5\": \"oklch(0.263 0.024 320.12)\",\n      \"sidebar\": \"oklch(0.212 0.019 322.12)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.263 0.024 320.12)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.542 0.034 322.5)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: oklch(1 0 0);\\n    --foreground: oklch(0.145 0.008 326);\\n    --card: oklch(1 0 0);\\n    --card-foreground: oklch(0.145 0.008 326);\\n    --popover: oklch(1 0 0);\\n    --popover-foreground: oklch(0.145 0.008 326);\\n    --primary: oklch(0.212 0.019 322.12);\\n    --primary-foreground: oklch(0.985 0 0);\\n    --secondary: oklch(0.96 0.003 325.6);\\n    --secondary-foreground: oklch(0.212 0.019 322.12);\\n    --muted: oklch(0.96 0.003 325.6);\\n    --muted-foreground: oklch(0.542 0.034 322.5);\\n    --accent: oklch(0.96 0.003 325.6);\\n    --accent-foreground: oklch(0.212 0.019 322.12);\\n    --destructive: oklch(0.577 0.245 27.325);\\n    --border: oklch(0.922 0.005 325.62);\\n    --input: oklch(0.922 0.005 325.62);\\n    --ring: oklch(0.711 0.019 323.02);\\n    --chart-1: oklch(0.865 0.012 325.68);\\n    --chart-2: oklch(0.542 0.034 322.5);\\n    --chart-3: oklch(0.435 0.029 321.78);\\n    --chart-4: oklch(0.364 0.029 323.89);\\n    --chart-5: oklch(0.263 0.024 320.12);\\n    --radius: 0.625rem;\\n  }\\n\\n  .dark {\\n    --background: oklch(0.145 0.008 326);\\n    --foreground: oklch(0.985 0 0);\\n    --card: oklch(0.212 0.019 322.12);\\n    --card-foreground: oklch(0.985 0 0);\\n    --popover: oklch(0.212 0.019 322.12);\\n    --popover-foreground: oklch(0.985 0 0);\\n    --primary: oklch(0.922 0.005 325.62);\\n    --primary-foreground: oklch(0.212 0.019 322.12);\\n    --secondary: oklch(0.263 0.024 320.12);\\n    --secondary-foreground: oklch(0.985 0 0);\\n    --muted: oklch(0.263 0.024 320.12);\\n    --muted-foreground: oklch(0.711 0.019 323.02);\\n    --accent: oklch(0.263 0.024 320.12);\\n    --accent-foreground: oklch(0.985 0 0);\\n    --destructive: oklch(0.704 0.191 22.216);\\n    --border: oklch(1 0 0 / 10%);\\n    --input: oklch(1 0 0 / 15%);\\n    --ring: oklch(0.542 0.034 322.5);\\n    --chart-1: oklch(0.865 0.012 325.68);\\n    --chart-2: oklch(0.542 0.034 322.5);\\n    --chart-3: oklch(0.435 0.029 321.78);\\n    --chart-4: oklch(0.364 0.029 323.89);\\n    --chart-5: oklch(0.263 0.024 320.12);\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}\n"
  },
  {
    "path": "apps/v4/public/r/colors/mist.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"primary\": \"oklch(0.218 0.008 223.9)\",\n      \"primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"secondary\": \"oklch(0.963 0.002 197.1)\",\n      \"secondary-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"muted\": \"oklch(0.963 0.002 197.1)\",\n      \"muted-foreground\": \"oklch(0.56 0.021 213.5)\",\n      \"accent\": \"oklch(0.963 0.002 197.1)\",\n      \"accent-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.925 0.005 214.3)\",\n      \"input\": \"oklch(0.925 0.005 214.3)\",\n      \"ring\": \"oklch(0.723 0.014 214.4)\",\n      \"chart-1\": \"oklch(0.872 0.007 219.6)\",\n      \"chart-2\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-3\": \"oklch(0.45 0.017 213.2)\",\n      \"chart-4\": \"oklch(0.378 0.015 216)\",\n      \"chart-5\": \"oklch(0.275 0.011 216.9)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"sidebar-primary\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-accent\": \"oklch(0.963 0.002 197.1)\",\n      \"sidebar-accent-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-border\": \"oklch(0.925 0.005 214.3)\",\n      \"sidebar-ring\": \"oklch(0.723 0.014 214.4)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.148 0.004 228.8)\",\n      \"foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"card\": \"oklch(0.218 0.008 223.9)\",\n      \"card-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"popover\": \"oklch(0.218 0.008 223.9)\",\n      \"popover-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"primary\": \"oklch(0.925 0.005 214.3)\",\n      \"primary-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"secondary\": \"oklch(0.275 0.011 216.9)\",\n      \"secondary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"muted\": \"oklch(0.275 0.011 216.9)\",\n      \"muted-foreground\": \"oklch(0.723 0.014 214.4)\",\n      \"accent\": \"oklch(0.275 0.011 216.9)\",\n      \"accent-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-1\": \"oklch(0.872 0.007 219.6)\",\n      \"chart-2\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-3\": \"oklch(0.45 0.017 213.2)\",\n      \"chart-4\": \"oklch(0.378 0.015 216)\",\n      \"chart-5\": \"oklch(0.275 0.011 216.9)\",\n      \"sidebar\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-accent\": \"oklch(0.275 0.011 216.9)\",\n      \"sidebar-accent-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.56 0.021 213.5)\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"primary\": \"oklch(0.218 0.008 223.9)\",\n      \"primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"secondary\": \"oklch(0.963 0.002 197.1)\",\n      \"secondary-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"muted\": \"oklch(0.963 0.002 197.1)\",\n      \"muted-foreground\": \"oklch(0.56 0.021 213.5)\",\n      \"accent\": \"oklch(0.963 0.002 197.1)\",\n      \"accent-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.925 0.005 214.3)\",\n      \"input\": \"oklch(0.925 0.005 214.3)\",\n      \"ring\": \"oklch(0.723 0.014 214.4)\",\n      \"chart-1\": \"oklch(0.872 0.007 219.6)\",\n      \"chart-2\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-3\": \"oklch(0.45 0.017 213.2)\",\n      \"chart-4\": \"oklch(0.378 0.015 216)\",\n      \"chart-5\": \"oklch(0.275 0.011 216.9)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"sidebar-primary\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-accent\": \"oklch(0.963 0.002 197.1)\",\n      \"sidebar-accent-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-border\": \"oklch(0.925 0.005 214.3)\",\n      \"sidebar-ring\": \"oklch(0.723 0.014 214.4)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.148 0.004 228.8)\",\n      \"foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"card\": \"oklch(0.218 0.008 223.9)\",\n      \"card-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"popover\": \"oklch(0.218 0.008 223.9)\",\n      \"popover-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"primary\": \"oklch(0.925 0.005 214.3)\",\n      \"primary-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"secondary\": \"oklch(0.275 0.011 216.9)\",\n      \"secondary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"muted\": \"oklch(0.275 0.011 216.9)\",\n      \"muted-foreground\": \"oklch(0.723 0.014 214.4)\",\n      \"accent\": \"oklch(0.275 0.011 216.9)\",\n      \"accent-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-1\": \"oklch(0.872 0.007 219.6)\",\n      \"chart-2\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-3\": \"oklch(0.45 0.017 213.2)\",\n      \"chart-4\": \"oklch(0.378 0.015 216)\",\n      \"chart-5\": \"oklch(0.275 0.011 216.9)\",\n      \"sidebar\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-accent\": \"oklch(0.275 0.011 216.9)\",\n      \"sidebar-accent-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.56 0.021 213.5)\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"primary\": \"oklch(0.218 0.008 223.9)\",\n      \"primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"secondary\": \"oklch(0.963 0.002 197.1)\",\n      \"secondary-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"muted\": \"oklch(0.963 0.002 197.1)\",\n      \"muted-foreground\": \"oklch(0.56 0.021 213.5)\",\n      \"accent\": \"oklch(0.963 0.002 197.1)\",\n      \"accent-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.925 0.005 214.3)\",\n      \"input\": \"oklch(0.925 0.005 214.3)\",\n      \"ring\": \"oklch(0.723 0.014 214.4)\",\n      \"chart-1\": \"oklch(0.872 0.007 219.6)\",\n      \"chart-2\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-3\": \"oklch(0.45 0.017 213.2)\",\n      \"chart-4\": \"oklch(0.378 0.015 216)\",\n      \"chart-5\": \"oklch(0.275 0.011 216.9)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-foreground\": \"oklch(0.148 0.004 228.8)\",\n      \"sidebar-primary\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-accent\": \"oklch(0.963 0.002 197.1)\",\n      \"sidebar-accent-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-border\": \"oklch(0.925 0.005 214.3)\",\n      \"sidebar-ring\": \"oklch(0.723 0.014 214.4)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.148 0.004 228.8)\",\n      \"foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"card\": \"oklch(0.218 0.008 223.9)\",\n      \"card-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"popover\": \"oklch(0.218 0.008 223.9)\",\n      \"popover-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"primary\": \"oklch(0.925 0.005 214.3)\",\n      \"primary-foreground\": \"oklch(0.218 0.008 223.9)\",\n      \"secondary\": \"oklch(0.275 0.011 216.9)\",\n      \"secondary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"muted\": \"oklch(0.275 0.011 216.9)\",\n      \"muted-foreground\": \"oklch(0.723 0.014 214.4)\",\n      \"accent\": \"oklch(0.275 0.011 216.9)\",\n      \"accent-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-1\": \"oklch(0.872 0.007 219.6)\",\n      \"chart-2\": \"oklch(0.56 0.021 213.5)\",\n      \"chart-3\": \"oklch(0.45 0.017 213.2)\",\n      \"chart-4\": \"oklch(0.378 0.015 216)\",\n      \"chart-5\": \"oklch(0.275 0.011 216.9)\",\n      \"sidebar\": \"oklch(0.218 0.008 223.9)\",\n      \"sidebar-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-accent\": \"oklch(0.275 0.011 216.9)\",\n      \"sidebar-accent-foreground\": \"oklch(0.987 0.002 197.1)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.56 0.021 213.5)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: oklch(1 0 0);\\n    --foreground: oklch(0.148 0.004 228.8);\\n    --card: oklch(1 0 0);\\n    --card-foreground: oklch(0.148 0.004 228.8);\\n    --popover: oklch(1 0 0);\\n    --popover-foreground: oklch(0.148 0.004 228.8);\\n    --primary: oklch(0.218 0.008 223.9);\\n    --primary-foreground: oklch(0.987 0.002 197.1);\\n    --secondary: oklch(0.963 0.002 197.1);\\n    --secondary-foreground: oklch(0.218 0.008 223.9);\\n    --muted: oklch(0.963 0.002 197.1);\\n    --muted-foreground: oklch(0.56 0.021 213.5);\\n    --accent: oklch(0.963 0.002 197.1);\\n    --accent-foreground: oklch(0.218 0.008 223.9);\\n    --destructive: oklch(0.577 0.245 27.325);\\n    --border: oklch(0.925 0.005 214.3);\\n    --input: oklch(0.925 0.005 214.3);\\n    --ring: oklch(0.723 0.014 214.4);\\n    --chart-1: oklch(0.872 0.007 219.6);\\n    --chart-2: oklch(0.56 0.021 213.5);\\n    --chart-3: oklch(0.45 0.017 213.2);\\n    --chart-4: oklch(0.378 0.015 216);\\n    --chart-5: oklch(0.275 0.011 216.9);\\n    --radius: 0.625rem;\\n  }\\n\\n  .dark {\\n    --background: oklch(0.148 0.004 228.8);\\n    --foreground: oklch(0.987 0.002 197.1);\\n    --card: oklch(0.218 0.008 223.9);\\n    --card-foreground: oklch(0.987 0.002 197.1);\\n    --popover: oklch(0.218 0.008 223.9);\\n    --popover-foreground: oklch(0.987 0.002 197.1);\\n    --primary: oklch(0.925 0.005 214.3);\\n    --primary-foreground: oklch(0.218 0.008 223.9);\\n    --secondary: oklch(0.275 0.011 216.9);\\n    --secondary-foreground: oklch(0.987 0.002 197.1);\\n    --muted: oklch(0.275 0.011 216.9);\\n    --muted-foreground: oklch(0.723 0.014 214.4);\\n    --accent: oklch(0.275 0.011 216.9);\\n    --accent-foreground: oklch(0.987 0.002 197.1);\\n    --destructive: oklch(0.704 0.191 22.216);\\n    --border: oklch(1 0 0 / 10%);\\n    --input: oklch(1 0 0 / 15%);\\n    --ring: oklch(0.56 0.021 213.5);\\n    --chart-1: oklch(0.872 0.007 219.6);\\n    --chart-2: oklch(0.56 0.021 213.5);\\n    --chart-3: oklch(0.45 0.017 213.2);\\n    --chart-4: oklch(0.378 0.015 216);\\n    --chart-5: oklch(0.275 0.011 216.9);\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}\n"
  },
  {
    "path": "apps/v4/public/r/colors/neutral.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.145 0 0)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.145 0 0)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.145 0 0)\",\n      \"primary\": \"oklch(0.205 0 0)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.97 0 0)\",\n      \"secondary-foreground\": \"oklch(0.205 0 0)\",\n      \"muted\": \"oklch(0.97 0 0)\",\n      \"muted-foreground\": \"oklch(0.556 0 0)\",\n      \"accent\": \"oklch(0.97 0 0)\",\n      \"accent-foreground\": \"oklch(0.205 0 0)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0 0)\",\n      \"input\": \"oklch(0.922 0 0)\",\n      \"ring\": \"oklch(0.708 0 0)\",\n      \"chart-1\": \"oklch(0.87 0 0)\",\n      \"chart-2\": \"oklch(0.556 0 0)\",\n      \"chart-3\": \"oklch(0.439 0 0)\",\n      \"chart-4\": \"oklch(0.371 0 0)\",\n      \"chart-5\": \"oklch(0.269 0 0)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.145 0 0)\",\n      \"sidebar-primary\": \"oklch(0.205 0 0)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.97 0 0)\",\n      \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\",\n      \"sidebar-border\": \"oklch(0.922 0 0)\",\n      \"sidebar-ring\": \"oklch(0.708 0 0)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.145 0 0)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.205 0 0)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.205 0 0)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.922 0 0)\",\n      \"primary-foreground\": \"oklch(0.205 0 0)\",\n      \"secondary\": \"oklch(0.269 0 0)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.269 0 0)\",\n      \"muted-foreground\": \"oklch(0.708 0 0)\",\n      \"accent\": \"oklch(0.269 0 0)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.556 0 0)\",\n      \"chart-1\": \"oklch(0.87 0 0)\",\n      \"chart-2\": \"oklch(0.556 0 0)\",\n      \"chart-3\": \"oklch(0.439 0 0)\",\n      \"chart-4\": \"oklch(0.371 0 0)\",\n      \"chart-5\": \"oklch(0.269 0 0)\",\n      \"sidebar\": \"oklch(0.205 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.269 0 0)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.556 0 0)\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.145 0 0)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.145 0 0)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.145 0 0)\",\n      \"primary\": \"oklch(0.205 0 0)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.97 0 0)\",\n      \"secondary-foreground\": \"oklch(0.205 0 0)\",\n      \"muted\": \"oklch(0.97 0 0)\",\n      \"muted-foreground\": \"oklch(0.556 0 0)\",\n      \"accent\": \"oklch(0.97 0 0)\",\n      \"accent-foreground\": \"oklch(0.205 0 0)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0 0)\",\n      \"input\": \"oklch(0.922 0 0)\",\n      \"ring\": \"oklch(0.708 0 0)\",\n      \"chart-1\": \"oklch(0.87 0 0)\",\n      \"chart-2\": \"oklch(0.556 0 0)\",\n      \"chart-3\": \"oklch(0.439 0 0)\",\n      \"chart-4\": \"oklch(0.371 0 0)\",\n      \"chart-5\": \"oklch(0.269 0 0)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.145 0 0)\",\n      \"sidebar-primary\": \"oklch(0.205 0 0)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.97 0 0)\",\n      \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\",\n      \"sidebar-border\": \"oklch(0.922 0 0)\",\n      \"sidebar-ring\": \"oklch(0.708 0 0)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.145 0 0)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.205 0 0)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.205 0 0)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.922 0 0)\",\n      \"primary-foreground\": \"oklch(0.205 0 0)\",\n      \"secondary\": \"oklch(0.269 0 0)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.269 0 0)\",\n      \"muted-foreground\": \"oklch(0.708 0 0)\",\n      \"accent\": \"oklch(0.269 0 0)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.556 0 0)\",\n      \"chart-1\": \"oklch(0.87 0 0)\",\n      \"chart-2\": \"oklch(0.556 0 0)\",\n      \"chart-3\": \"oklch(0.439 0 0)\",\n      \"chart-4\": \"oklch(0.371 0 0)\",\n      \"chart-5\": \"oklch(0.269 0 0)\",\n      \"sidebar\": \"oklch(0.205 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.269 0 0)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.556 0 0)\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.145 0 0)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.145 0 0)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.145 0 0)\",\n      \"primary\": \"oklch(0.205 0 0)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.97 0 0)\",\n      \"secondary-foreground\": \"oklch(0.205 0 0)\",\n      \"muted\": \"oklch(0.97 0 0)\",\n      \"muted-foreground\": \"oklch(0.556 0 0)\",\n      \"accent\": \"oklch(0.97 0 0)\",\n      \"accent-foreground\": \"oklch(0.205 0 0)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0 0)\",\n      \"input\": \"oklch(0.922 0 0)\",\n      \"ring\": \"oklch(0.708 0 0)\",\n      \"chart-1\": \"oklch(0.87 0 0)\",\n      \"chart-2\": \"oklch(0.556 0 0)\",\n      \"chart-3\": \"oklch(0.439 0 0)\",\n      \"chart-4\": \"oklch(0.371 0 0)\",\n      \"chart-5\": \"oklch(0.269 0 0)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.145 0 0)\",\n      \"sidebar-primary\": \"oklch(0.205 0 0)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.97 0 0)\",\n      \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\",\n      \"sidebar-border\": \"oklch(0.922 0 0)\",\n      \"sidebar-ring\": \"oklch(0.708 0 0)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.145 0 0)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.205 0 0)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.205 0 0)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.922 0 0)\",\n      \"primary-foreground\": \"oklch(0.205 0 0)\",\n      \"secondary\": \"oklch(0.269 0 0)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.269 0 0)\",\n      \"muted-foreground\": \"oklch(0.708 0 0)\",\n      \"accent\": \"oklch(0.269 0 0)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.556 0 0)\",\n      \"chart-1\": \"oklch(0.87 0 0)\",\n      \"chart-2\": \"oklch(0.556 0 0)\",\n      \"chart-3\": \"oklch(0.439 0 0)\",\n      \"chart-4\": \"oklch(0.371 0 0)\",\n      \"chart-5\": \"oklch(0.269 0 0)\",\n      \"sidebar\": \"oklch(0.205 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.269 0 0)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.556 0 0)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: oklch(1 0 0);\\n    --foreground: oklch(0.145 0 0);\\n    --card: oklch(1 0 0);\\n    --card-foreground: oklch(0.145 0 0);\\n    --popover: oklch(1 0 0);\\n    --popover-foreground: oklch(0.145 0 0);\\n    --primary: oklch(0.205 0 0);\\n    --primary-foreground: oklch(0.985 0 0);\\n    --secondary: oklch(0.97 0 0);\\n    --secondary-foreground: oklch(0.205 0 0);\\n    --muted: oklch(0.97 0 0);\\n    --muted-foreground: oklch(0.556 0 0);\\n    --accent: oklch(0.97 0 0);\\n    --accent-foreground: oklch(0.205 0 0);\\n    --destructive: oklch(0.577 0.245 27.325);\\n    --border: oklch(0.922 0 0);\\n    --input: oklch(0.922 0 0);\\n    --ring: oklch(0.708 0 0);\\n    --chart-1: oklch(0.87 0 0);\\n    --chart-2: oklch(0.556 0 0);\\n    --chart-3: oklch(0.439 0 0);\\n    --chart-4: oklch(0.371 0 0);\\n    --chart-5: oklch(0.269 0 0);\\n    --radius: 0.625rem;\\n  }\\n\\n  .dark {\\n    --background: oklch(0.145 0 0);\\n    --foreground: oklch(0.985 0 0);\\n    --card: oklch(0.205 0 0);\\n    --card-foreground: oklch(0.985 0 0);\\n    --popover: oklch(0.205 0 0);\\n    --popover-foreground: oklch(0.985 0 0);\\n    --primary: oklch(0.922 0 0);\\n    --primary-foreground: oklch(0.205 0 0);\\n    --secondary: oklch(0.269 0 0);\\n    --secondary-foreground: oklch(0.985 0 0);\\n    --muted: oklch(0.269 0 0);\\n    --muted-foreground: oklch(0.708 0 0);\\n    --accent: oklch(0.269 0 0);\\n    --accent-foreground: oklch(0.985 0 0);\\n    --destructive: oklch(0.704 0.191 22.216);\\n    --border: oklch(1 0 0 / 10%);\\n    --input: oklch(1 0 0 / 15%);\\n    --ring: oklch(0.556 0 0);\\n    --chart-1: oklch(0.87 0 0);\\n    --chart-2: oklch(0.556 0 0);\\n    --chart-3: oklch(0.439 0 0);\\n    --chart-4: oklch(0.371 0 0);\\n    --chart-5: oklch(0.269 0 0);\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}\n"
  },
  {
    "path": "apps/v4/public/r/colors/olive.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"primary\": \"oklch(0.228 0.013 107.4)\",\n      \"primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"secondary\": \"oklch(0.966 0.005 106.5)\",\n      \"secondary-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"muted\": \"oklch(0.966 0.005 106.5)\",\n      \"muted-foreground\": \"oklch(0.58 0.031 107.3)\",\n      \"accent\": \"oklch(0.966 0.005 106.5)\",\n      \"accent-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.93 0.007 106.5)\",\n      \"input\": \"oklch(0.93 0.007 106.5)\",\n      \"ring\": \"oklch(0.737 0.021 106.9)\",\n      \"chart-1\": \"oklch(0.88 0.011 106.6)\",\n      \"chart-2\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-3\": \"oklch(0.466 0.025 107.3)\",\n      \"chart-4\": \"oklch(0.394 0.023 107.4)\",\n      \"chart-5\": \"oklch(0.286 0.016 107.4)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"sidebar-primary\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-accent\": \"oklch(0.966 0.005 106.5)\",\n      \"sidebar-accent-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-border\": \"oklch(0.93 0.007 106.5)\",\n      \"sidebar-ring\": \"oklch(0.737 0.021 106.9)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.153 0.006 107.1)\",\n      \"foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"card\": \"oklch(0.228 0.013 107.4)\",\n      \"card-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"popover\": \"oklch(0.228 0.013 107.4)\",\n      \"popover-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"primary\": \"oklch(0.93 0.007 106.5)\",\n      \"primary-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"secondary\": \"oklch(0.286 0.016 107.4)\",\n      \"secondary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"muted\": \"oklch(0.286 0.016 107.4)\",\n      \"muted-foreground\": \"oklch(0.737 0.021 106.9)\",\n      \"accent\": \"oklch(0.286 0.016 107.4)\",\n      \"accent-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-1\": \"oklch(0.88 0.011 106.6)\",\n      \"chart-2\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-3\": \"oklch(0.466 0.025 107.3)\",\n      \"chart-4\": \"oklch(0.394 0.023 107.4)\",\n      \"chart-5\": \"oklch(0.286 0.016 107.4)\",\n      \"sidebar\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-accent\": \"oklch(0.286 0.016 107.4)\",\n      \"sidebar-accent-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.58 0.031 107.3)\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"primary\": \"oklch(0.228 0.013 107.4)\",\n      \"primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"secondary\": \"oklch(0.966 0.005 106.5)\",\n      \"secondary-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"muted\": \"oklch(0.966 0.005 106.5)\",\n      \"muted-foreground\": \"oklch(0.58 0.031 107.3)\",\n      \"accent\": \"oklch(0.966 0.005 106.5)\",\n      \"accent-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.93 0.007 106.5)\",\n      \"input\": \"oklch(0.93 0.007 106.5)\",\n      \"ring\": \"oklch(0.737 0.021 106.9)\",\n      \"chart-1\": \"oklch(0.88 0.011 106.6)\",\n      \"chart-2\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-3\": \"oklch(0.466 0.025 107.3)\",\n      \"chart-4\": \"oklch(0.394 0.023 107.4)\",\n      \"chart-5\": \"oklch(0.286 0.016 107.4)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"sidebar-primary\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-accent\": \"oklch(0.966 0.005 106.5)\",\n      \"sidebar-accent-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-border\": \"oklch(0.93 0.007 106.5)\",\n      \"sidebar-ring\": \"oklch(0.737 0.021 106.9)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.153 0.006 107.1)\",\n      \"foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"card\": \"oklch(0.228 0.013 107.4)\",\n      \"card-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"popover\": \"oklch(0.228 0.013 107.4)\",\n      \"popover-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"primary\": \"oklch(0.93 0.007 106.5)\",\n      \"primary-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"secondary\": \"oklch(0.286 0.016 107.4)\",\n      \"secondary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"muted\": \"oklch(0.286 0.016 107.4)\",\n      \"muted-foreground\": \"oklch(0.737 0.021 106.9)\",\n      \"accent\": \"oklch(0.286 0.016 107.4)\",\n      \"accent-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-1\": \"oklch(0.88 0.011 106.6)\",\n      \"chart-2\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-3\": \"oklch(0.466 0.025 107.3)\",\n      \"chart-4\": \"oklch(0.394 0.023 107.4)\",\n      \"chart-5\": \"oklch(0.286 0.016 107.4)\",\n      \"sidebar\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-accent\": \"oklch(0.286 0.016 107.4)\",\n      \"sidebar-accent-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.58 0.031 107.3)\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"primary\": \"oklch(0.228 0.013 107.4)\",\n      \"primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"secondary\": \"oklch(0.966 0.005 106.5)\",\n      \"secondary-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"muted\": \"oklch(0.966 0.005 106.5)\",\n      \"muted-foreground\": \"oklch(0.58 0.031 107.3)\",\n      \"accent\": \"oklch(0.966 0.005 106.5)\",\n      \"accent-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.93 0.007 106.5)\",\n      \"input\": \"oklch(0.93 0.007 106.5)\",\n      \"ring\": \"oklch(0.737 0.021 106.9)\",\n      \"chart-1\": \"oklch(0.88 0.011 106.6)\",\n      \"chart-2\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-3\": \"oklch(0.466 0.025 107.3)\",\n      \"chart-4\": \"oklch(0.394 0.023 107.4)\",\n      \"chart-5\": \"oklch(0.286 0.016 107.4)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-foreground\": \"oklch(0.153 0.006 107.1)\",\n      \"sidebar-primary\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-accent\": \"oklch(0.966 0.005 106.5)\",\n      \"sidebar-accent-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-border\": \"oklch(0.93 0.007 106.5)\",\n      \"sidebar-ring\": \"oklch(0.737 0.021 106.9)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.153 0.006 107.1)\",\n      \"foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"card\": \"oklch(0.228 0.013 107.4)\",\n      \"card-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"popover\": \"oklch(0.228 0.013 107.4)\",\n      \"popover-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"primary\": \"oklch(0.93 0.007 106.5)\",\n      \"primary-foreground\": \"oklch(0.228 0.013 107.4)\",\n      \"secondary\": \"oklch(0.286 0.016 107.4)\",\n      \"secondary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"muted\": \"oklch(0.286 0.016 107.4)\",\n      \"muted-foreground\": \"oklch(0.737 0.021 106.9)\",\n      \"accent\": \"oklch(0.286 0.016 107.4)\",\n      \"accent-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-1\": \"oklch(0.88 0.011 106.6)\",\n      \"chart-2\": \"oklch(0.58 0.031 107.3)\",\n      \"chart-3\": \"oklch(0.466 0.025 107.3)\",\n      \"chart-4\": \"oklch(0.394 0.023 107.4)\",\n      \"chart-5\": \"oklch(0.286 0.016 107.4)\",\n      \"sidebar\": \"oklch(0.228 0.013 107.4)\",\n      \"sidebar-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-accent\": \"oklch(0.286 0.016 107.4)\",\n      \"sidebar-accent-foreground\": \"oklch(0.988 0.003 106.5)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.58 0.031 107.3)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: oklch(1 0 0);\\n    --foreground: oklch(0.153 0.006 107.1);\\n    --card: oklch(1 0 0);\\n    --card-foreground: oklch(0.153 0.006 107.1);\\n    --popover: oklch(1 0 0);\\n    --popover-foreground: oklch(0.153 0.006 107.1);\\n    --primary: oklch(0.228 0.013 107.4);\\n    --primary-foreground: oklch(0.988 0.003 106.5);\\n    --secondary: oklch(0.966 0.005 106.5);\\n    --secondary-foreground: oklch(0.228 0.013 107.4);\\n    --muted: oklch(0.966 0.005 106.5);\\n    --muted-foreground: oklch(0.58 0.031 107.3);\\n    --accent: oklch(0.966 0.005 106.5);\\n    --accent-foreground: oklch(0.228 0.013 107.4);\\n    --destructive: oklch(0.577 0.245 27.325);\\n    --border: oklch(0.93 0.007 106.5);\\n    --input: oklch(0.93 0.007 106.5);\\n    --ring: oklch(0.737 0.021 106.9);\\n    --chart-1: oklch(0.88 0.011 106.6);\\n    --chart-2: oklch(0.58 0.031 107.3);\\n    --chart-3: oklch(0.466 0.025 107.3);\\n    --chart-4: oklch(0.394 0.023 107.4);\\n    --chart-5: oklch(0.286 0.016 107.4);\\n    --radius: 0.625rem;\\n  }\\n\\n  .dark {\\n    --background: oklch(0.153 0.006 107.1);\\n    --foreground: oklch(0.988 0.003 106.5);\\n    --card: oklch(0.228 0.013 107.4);\\n    --card-foreground: oklch(0.988 0.003 106.5);\\n    --popover: oklch(0.228 0.013 107.4);\\n    --popover-foreground: oklch(0.988 0.003 106.5);\\n    --primary: oklch(0.93 0.007 106.5);\\n    --primary-foreground: oklch(0.228 0.013 107.4);\\n    --secondary: oklch(0.286 0.016 107.4);\\n    --secondary-foreground: oklch(0.988 0.003 106.5);\\n    --muted: oklch(0.286 0.016 107.4);\\n    --muted-foreground: oklch(0.737 0.021 106.9);\\n    --accent: oklch(0.286 0.016 107.4);\\n    --accent-foreground: oklch(0.988 0.003 106.5);\\n    --destructive: oklch(0.704 0.191 22.216);\\n    --border: oklch(1 0 0 / 10%);\\n    --input: oklch(1 0 0 / 15%);\\n    --ring: oklch(0.58 0.031 107.3);\\n    --chart-1: oklch(0.88 0.011 106.6);\\n    --chart-2: oklch(0.58 0.031 107.3);\\n    --chart-3: oklch(0.466 0.025 107.3);\\n    --chart-4: oklch(0.394 0.023 107.4);\\n    --chart-5: oklch(0.286 0.016 107.4);\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}\n"
  },
  {
    "path": "apps/v4/public/r/colors/slate.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"white\",\n      \"foreground\": \"slate-950\",\n      \"card\": \"white\",\n      \"card-foreground\": \"slate-950\",\n      \"popover\": \"white\",\n      \"popover-foreground\": \"slate-950\",\n      \"primary\": \"slate-900\",\n      \"primary-foreground\": \"slate-50\",\n      \"secondary\": \"slate-100\",\n      \"secondary-foreground\": \"slate-900\",\n      \"muted\": \"slate-100\",\n      \"muted-foreground\": \"slate-500\",\n      \"accent\": \"slate-100\",\n      \"accent-foreground\": \"slate-900\",\n      \"destructive\": \"red-500\",\n      \"destructive-foreground\": \"slate-50\",\n      \"border\": \"slate-200\",\n      \"input\": \"slate-200\",\n      \"ring\": \"slate-950\"\n    },\n    \"dark\": {\n      \"background\": \"slate-950\",\n      \"foreground\": \"slate-50\",\n      \"card\": \"slate-950\",\n      \"card-foreground\": \"slate-50\",\n      \"popover\": \"slate-950\",\n      \"popover-foreground\": \"slate-50\",\n      \"primary\": \"slate-50\",\n      \"primary-foreground\": \"slate-900\",\n      \"secondary\": \"slate-800\",\n      \"secondary-foreground\": \"slate-50\",\n      \"muted\": \"slate-800\",\n      \"muted-foreground\": \"slate-400\",\n      \"accent\": \"slate-800\",\n      \"accent-foreground\": \"slate-50\",\n      \"destructive\": \"red-900\",\n      \"destructive-foreground\": \"slate-50\",\n      \"border\": \"slate-800\",\n      \"input\": \"slate-800\",\n      \"ring\": \"slate-300\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"222.2 84% 4.9%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"222.2 84% 4.9%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"222.2 84% 4.9%\",\n      \"primary\": \"222.2 47.4% 11.2%\",\n      \"primary-foreground\": \"210 40% 98%\",\n      \"secondary\": \"210 40% 96.1%\",\n      \"secondary-foreground\": \"222.2 47.4% 11.2%\",\n      \"muted\": \"210 40% 96.1%\",\n      \"muted-foreground\": \"215.4 16.3% 46.9%\",\n      \"accent\": \"210 40% 96.1%\",\n      \"accent-foreground\": \"222.2 47.4% 11.2%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"210 40% 98%\",\n      \"border\": \"214.3 31.8% 91.4%\",\n      \"input\": \"214.3 31.8% 91.4%\",\n      \"ring\": \"222.2 84% 4.9%\",\n      \"chart-1\": \"12 76% 61%\",\n      \"chart-2\": \"173 58% 39%\",\n      \"chart-3\": \"197 37% 24%\",\n      \"chart-4\": \"43 74% 66%\",\n      \"chart-5\": \"27 87% 67%\"\n    },\n    \"dark\": {\n      \"background\": \"222.2 84% 4.9%\",\n      \"foreground\": \"210 40% 98%\",\n      \"card\": \"222.2 84% 4.9%\",\n      \"card-foreground\": \"210 40% 98%\",\n      \"popover\": \"222.2 84% 4.9%\",\n      \"popover-foreground\": \"210 40% 98%\",\n      \"primary\": \"210 40% 98%\",\n      \"primary-foreground\": \"222.2 47.4% 11.2%\",\n      \"secondary\": \"217.2 32.6% 17.5%\",\n      \"secondary-foreground\": \"210 40% 98%\",\n      \"muted\": \"217.2 32.6% 17.5%\",\n      \"muted-foreground\": \"215 20.2% 65.1%\",\n      \"accent\": \"217.2 32.6% 17.5%\",\n      \"accent-foreground\": \"210 40% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"210 40% 98%\",\n      \"border\": \"217.2 32.6% 17.5%\",\n      \"input\": \"217.2 32.6% 17.5%\",\n      \"ring\": \"212.7 26.8% 83.9%\",\n      \"chart-1\": \"220 70% 50%\",\n      \"chart-2\": \"160 60% 45%\",\n      \"chart-3\": \"30 80% 55%\",\n      \"chart-4\": \"280 65% 60%\",\n      \"chart-5\": \"340 75% 55%\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.129 0.042 264.695)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.129 0.042 264.695)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.129 0.042 264.695)\",\n      \"primary\": \"oklch(0.208 0.042 265.755)\",\n      \"primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"secondary\": \"oklch(0.968 0.007 247.896)\",\n      \"secondary-foreground\": \"oklch(0.208 0.042 265.755)\",\n      \"muted\": \"oklch(0.968 0.007 247.896)\",\n      \"muted-foreground\": \"oklch(0.554 0.046 257.417)\",\n      \"accent\": \"oklch(0.968 0.007 247.896)\",\n      \"accent-foreground\": \"oklch(0.208 0.042 265.755)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.929 0.013 255.508)\",\n      \"input\": \"oklch(0.929 0.013 255.508)\",\n      \"ring\": \"oklch(0.704 0.04 256.788)\",\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-foreground\": \"oklch(0.129 0.042 264.695)\",\n      \"sidebar-primary\": \"oklch(0.208 0.042 265.755)\",\n      \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-accent\": \"oklch(0.968 0.007 247.896)\",\n      \"sidebar-accent-foreground\": \"oklch(0.208 0.042 265.755)\",\n      \"sidebar-border\": \"oklch(0.929 0.013 255.508)\",\n      \"sidebar-ring\": \"oklch(0.704 0.04 256.788)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.129 0.042 264.695)\",\n      \"foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"card\": \"oklch(0.208 0.042 265.755)\",\n      \"card-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"popover\": \"oklch(0.208 0.042 265.755)\",\n      \"popover-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"primary\": \"oklch(0.929 0.013 255.508)\",\n      \"primary-foreground\": \"oklch(0.208 0.042 265.755)\",\n      \"secondary\": \"oklch(0.279 0.041 260.031)\",\n      \"secondary-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"muted\": \"oklch(0.279 0.041 260.031)\",\n      \"muted-foreground\": \"oklch(0.704 0.04 256.788)\",\n      \"accent\": \"oklch(0.279 0.041 260.031)\",\n      \"accent-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.551 0.027 264.364)\",\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n      \"sidebar\": \"oklch(0.208 0.042 265.755)\",\n      \"sidebar-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-accent\": \"oklch(0.279 0.041 260.031)\",\n      \"sidebar-accent-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: 0 0% 100%;\\n    --foreground: 222.2 84% 4.9%;\\n    --card: 0 0% 100%;\\n    --card-foreground: 222.2 84% 4.9%;\\n    --popover: 0 0% 100%;\\n    --popover-foreground: 222.2 84% 4.9%;\\n    --primary: 222.2 47.4% 11.2%;\\n    --primary-foreground: 210 40% 98%;\\n    --secondary: 210 40% 96.1%;\\n    --secondary-foreground: 222.2 47.4% 11.2%;\\n    --muted: 210 40% 96.1%;\\n    --muted-foreground: 215.4 16.3% 46.9%;\\n    --accent: 210 40% 96.1%;\\n    --accent-foreground: 222.2 47.4% 11.2%;\\n    --destructive: 0 84.2% 60.2%;\\n    --destructive-foreground: 210 40% 98%;\\n    --border: 214.3 31.8% 91.4%;\\n    --input: 214.3 31.8% 91.4%;\\n    --ring: 222.2 84% 4.9%;\\n    --radius: 0.5rem;\\n    --chart-1: 12 76% 61%;\\n    --chart-2: 173 58% 39%;\\n    --chart-3: 197 37% 24%;\\n    --chart-4: 43 74% 66%;\\n    --chart-5: 27 87% 67%;\\n  }\\n\\n  .dark {\\n    --background: 222.2 84% 4.9%;\\n    --foreground: 210 40% 98%;\\n    --card: 222.2 84% 4.9%;\\n    --card-foreground: 210 40% 98%;\\n    --popover: 222.2 84% 4.9%;\\n    --popover-foreground: 210 40% 98%;\\n    --primary: 210 40% 98%;\\n    --primary-foreground: 222.2 47.4% 11.2%;\\n    --secondary: 217.2 32.6% 17.5%;\\n    --secondary-foreground: 210 40% 98%;\\n    --muted: 217.2 32.6% 17.5%;\\n    --muted-foreground: 215 20.2% 65.1%;\\n    --accent: 217.2 32.6% 17.5%;\\n    --accent-foreground: 210 40% 98%;\\n    --destructive: 0 62.8% 30.6%;\\n    --destructive-foreground: 210 40% 98%;\\n    --border: 217.2 32.6% 17.5%;\\n    --input: 217.2 32.6% 17.5%;\\n    --ring: 212.7 26.8% 83.9%;\\n    --chart-1: 220 70% 50%;\\n    --chart-2: 160 60% 45%;\\n    --chart-3: 30 80% 55%;\\n    --chart-4: 280 65% 60%;\\n    --chart-5: 340 75% 55%;\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}"
  },
  {
    "path": "apps/v4/public/r/colors/stone.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"primary\": \"oklch(0.216 0.006 56.043)\",\n      \"primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"secondary\": \"oklch(0.97 0.001 106.424)\",\n      \"secondary-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"muted\": \"oklch(0.97 0.001 106.424)\",\n      \"muted-foreground\": \"oklch(0.553 0.013 58.071)\",\n      \"accent\": \"oklch(0.97 0.001 106.424)\",\n      \"accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.923 0.003 48.717)\",\n      \"input\": \"oklch(0.923 0.003 48.717)\",\n      \"ring\": \"oklch(0.709 0.01 56.259)\",\n      \"chart-1\": \"oklch(0.869 0.005 56.366)\",\n      \"chart-2\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-3\": \"oklch(0.444 0.011 73.639)\",\n      \"chart-4\": \"oklch(0.374 0.01 67.558)\",\n      \"chart-5\": \"oklch(0.268 0.007 34.298)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"sidebar-primary\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-accent\": \"oklch(0.97 0.001 106.424)\",\n      \"sidebar-accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-border\": \"oklch(0.923 0.003 48.717)\",\n      \"sidebar-ring\": \"oklch(0.709 0.01 56.259)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.147 0.004 49.25)\",\n      \"foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"card\": \"oklch(0.216 0.006 56.043)\",\n      \"card-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"popover\": \"oklch(0.216 0.006 56.043)\",\n      \"popover-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"primary\": \"oklch(0.923 0.003 48.717)\",\n      \"primary-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"secondary\": \"oklch(0.268 0.007 34.298)\",\n      \"secondary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"muted\": \"oklch(0.268 0.007 34.298)\",\n      \"muted-foreground\": \"oklch(0.709 0.01 56.259)\",\n      \"accent\": \"oklch(0.268 0.007 34.298)\",\n      \"accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-1\": \"oklch(0.869 0.005 56.366)\",\n      \"chart-2\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-3\": \"oklch(0.444 0.011 73.639)\",\n      \"chart-4\": \"oklch(0.374 0.01 67.558)\",\n      \"chart-5\": \"oklch(0.268 0.007 34.298)\",\n      \"sidebar\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-accent\": \"oklch(0.268 0.007 34.298)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.553 0.013 58.071)\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"primary\": \"oklch(0.216 0.006 56.043)\",\n      \"primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"secondary\": \"oklch(0.97 0.001 106.424)\",\n      \"secondary-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"muted\": \"oklch(0.97 0.001 106.424)\",\n      \"muted-foreground\": \"oklch(0.553 0.013 58.071)\",\n      \"accent\": \"oklch(0.97 0.001 106.424)\",\n      \"accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.923 0.003 48.717)\",\n      \"input\": \"oklch(0.923 0.003 48.717)\",\n      \"ring\": \"oklch(0.709 0.01 56.259)\",\n      \"chart-1\": \"oklch(0.869 0.005 56.366)\",\n      \"chart-2\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-3\": \"oklch(0.444 0.011 73.639)\",\n      \"chart-4\": \"oklch(0.374 0.01 67.558)\",\n      \"chart-5\": \"oklch(0.268 0.007 34.298)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"sidebar-primary\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-accent\": \"oklch(0.97 0.001 106.424)\",\n      \"sidebar-accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-border\": \"oklch(0.923 0.003 48.717)\",\n      \"sidebar-ring\": \"oklch(0.709 0.01 56.259)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.147 0.004 49.25)\",\n      \"foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"card\": \"oklch(0.216 0.006 56.043)\",\n      \"card-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"popover\": \"oklch(0.216 0.006 56.043)\",\n      \"popover-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"primary\": \"oklch(0.923 0.003 48.717)\",\n      \"primary-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"secondary\": \"oklch(0.268 0.007 34.298)\",\n      \"secondary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"muted\": \"oklch(0.268 0.007 34.298)\",\n      \"muted-foreground\": \"oklch(0.709 0.01 56.259)\",\n      \"accent\": \"oklch(0.268 0.007 34.298)\",\n      \"accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-1\": \"oklch(0.869 0.005 56.366)\",\n      \"chart-2\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-3\": \"oklch(0.444 0.011 73.639)\",\n      \"chart-4\": \"oklch(0.374 0.01 67.558)\",\n      \"chart-5\": \"oklch(0.268 0.007 34.298)\",\n      \"sidebar\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-accent\": \"oklch(0.268 0.007 34.298)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.553 0.013 58.071)\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"primary\": \"oklch(0.216 0.006 56.043)\",\n      \"primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"secondary\": \"oklch(0.97 0.001 106.424)\",\n      \"secondary-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"muted\": \"oklch(0.97 0.001 106.424)\",\n      \"muted-foreground\": \"oklch(0.553 0.013 58.071)\",\n      \"accent\": \"oklch(0.97 0.001 106.424)\",\n      \"accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.923 0.003 48.717)\",\n      \"input\": \"oklch(0.923 0.003 48.717)\",\n      \"ring\": \"oklch(0.709 0.01 56.259)\",\n      \"chart-1\": \"oklch(0.869 0.005 56.366)\",\n      \"chart-2\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-3\": \"oklch(0.444 0.011 73.639)\",\n      \"chart-4\": \"oklch(0.374 0.01 67.558)\",\n      \"chart-5\": \"oklch(0.268 0.007 34.298)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"sidebar-primary\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-accent\": \"oklch(0.97 0.001 106.424)\",\n      \"sidebar-accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-border\": \"oklch(0.923 0.003 48.717)\",\n      \"sidebar-ring\": \"oklch(0.709 0.01 56.259)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.147 0.004 49.25)\",\n      \"foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"card\": \"oklch(0.216 0.006 56.043)\",\n      \"card-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"popover\": \"oklch(0.216 0.006 56.043)\",\n      \"popover-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"primary\": \"oklch(0.923 0.003 48.717)\",\n      \"primary-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"secondary\": \"oklch(0.268 0.007 34.298)\",\n      \"secondary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"muted\": \"oklch(0.268 0.007 34.298)\",\n      \"muted-foreground\": \"oklch(0.709 0.01 56.259)\",\n      \"accent\": \"oklch(0.268 0.007 34.298)\",\n      \"accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-1\": \"oklch(0.869 0.005 56.366)\",\n      \"chart-2\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-3\": \"oklch(0.444 0.011 73.639)\",\n      \"chart-4\": \"oklch(0.374 0.01 67.558)\",\n      \"chart-5\": \"oklch(0.268 0.007 34.298)\",\n      \"sidebar\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-accent\": \"oklch(0.268 0.007 34.298)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.553 0.013 58.071)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: oklch(1 0 0);\\n    --foreground: oklch(0.147 0.004 49.25);\\n    --card: oklch(1 0 0);\\n    --card-foreground: oklch(0.147 0.004 49.25);\\n    --popover: oklch(1 0 0);\\n    --popover-foreground: oklch(0.147 0.004 49.25);\\n    --primary: oklch(0.216 0.006 56.043);\\n    --primary-foreground: oklch(0.985 0.001 106.423);\\n    --secondary: oklch(0.97 0.001 106.424);\\n    --secondary-foreground: oklch(0.216 0.006 56.043);\\n    --muted: oklch(0.97 0.001 106.424);\\n    --muted-foreground: oklch(0.553 0.013 58.071);\\n    --accent: oklch(0.97 0.001 106.424);\\n    --accent-foreground: oklch(0.216 0.006 56.043);\\n    --destructive: oklch(0.577 0.245 27.325);\\n    --border: oklch(0.923 0.003 48.717);\\n    --input: oklch(0.923 0.003 48.717);\\n    --ring: oklch(0.709 0.01 56.259);\\n    --chart-1: oklch(0.869 0.005 56.366);\\n    --chart-2: oklch(0.553 0.013 58.071);\\n    --chart-3: oklch(0.444 0.011 73.639);\\n    --chart-4: oklch(0.374 0.01 67.558);\\n    --chart-5: oklch(0.268 0.007 34.298);\\n    --radius: 0.625rem;\\n  }\\n\\n  .dark {\\n    --background: oklch(0.147 0.004 49.25);\\n    --foreground: oklch(0.985 0.001 106.423);\\n    --card: oklch(0.216 0.006 56.043);\\n    --card-foreground: oklch(0.985 0.001 106.423);\\n    --popover: oklch(0.216 0.006 56.043);\\n    --popover-foreground: oklch(0.985 0.001 106.423);\\n    --primary: oklch(0.923 0.003 48.717);\\n    --primary-foreground: oklch(0.216 0.006 56.043);\\n    --secondary: oklch(0.268 0.007 34.298);\\n    --secondary-foreground: oklch(0.985 0.001 106.423);\\n    --muted: oklch(0.268 0.007 34.298);\\n    --muted-foreground: oklch(0.709 0.01 56.259);\\n    --accent: oklch(0.268 0.007 34.298);\\n    --accent-foreground: oklch(0.985 0.001 106.423);\\n    --destructive: oklch(0.704 0.191 22.216);\\n    --border: oklch(1 0 0 / 10%);\\n    --input: oklch(1 0 0 / 15%);\\n    --ring: oklch(0.553 0.013 58.071);\\n    --chart-1: oklch(0.869 0.005 56.366);\\n    --chart-2: oklch(0.553 0.013 58.071);\\n    --chart-3: oklch(0.444 0.011 73.639);\\n    --chart-4: oklch(0.374 0.01 67.558);\\n    --chart-5: oklch(0.268 0.007 34.298);\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}\n"
  },
  {
    "path": "apps/v4/public/r/colors/taupe.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"primary\": \"oklch(0.214 0.009 43.1)\",\n      \"primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"secondary\": \"oklch(0.96 0.002 17.2)\",\n      \"secondary-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"muted\": \"oklch(0.96 0.002 17.2)\",\n      \"muted-foreground\": \"oklch(0.547 0.021 43.1)\",\n      \"accent\": \"oklch(0.96 0.002 17.2)\",\n      \"accent-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0.005 34.3)\",\n      \"input\": \"oklch(0.922 0.005 34.3)\",\n      \"ring\": \"oklch(0.714 0.014 41.2)\",\n      \"chart-1\": \"oklch(0.868 0.007 39.5)\",\n      \"chart-2\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-3\": \"oklch(0.438 0.017 39.3)\",\n      \"chart-4\": \"oklch(0.367 0.016 35.7)\",\n      \"chart-5\": \"oklch(0.268 0.011 36.5)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"sidebar-primary\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-accent\": \"oklch(0.96 0.002 17.2)\",\n      \"sidebar-accent-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-border\": \"oklch(0.922 0.005 34.3)\",\n      \"sidebar-ring\": \"oklch(0.714 0.014 41.2)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.147 0.004 49.3)\",\n      \"foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"card\": \"oklch(0.214 0.009 43.1)\",\n      \"card-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"popover\": \"oklch(0.214 0.009 43.1)\",\n      \"popover-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"primary\": \"oklch(0.922 0.005 34.3)\",\n      \"primary-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"secondary\": \"oklch(0.268 0.011 36.5)\",\n      \"secondary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"muted\": \"oklch(0.268 0.011 36.5)\",\n      \"muted-foreground\": \"oklch(0.714 0.014 41.2)\",\n      \"accent\": \"oklch(0.268 0.011 36.5)\",\n      \"accent-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-1\": \"oklch(0.868 0.007 39.5)\",\n      \"chart-2\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-3\": \"oklch(0.438 0.017 39.3)\",\n      \"chart-4\": \"oklch(0.367 0.016 35.7)\",\n      \"chart-5\": \"oklch(0.268 0.011 36.5)\",\n      \"sidebar\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-accent\": \"oklch(0.268 0.011 36.5)\",\n      \"sidebar-accent-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.547 0.021 43.1)\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"primary\": \"oklch(0.214 0.009 43.1)\",\n      \"primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"secondary\": \"oklch(0.96 0.002 17.2)\",\n      \"secondary-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"muted\": \"oklch(0.96 0.002 17.2)\",\n      \"muted-foreground\": \"oklch(0.547 0.021 43.1)\",\n      \"accent\": \"oklch(0.96 0.002 17.2)\",\n      \"accent-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0.005 34.3)\",\n      \"input\": \"oklch(0.922 0.005 34.3)\",\n      \"ring\": \"oklch(0.714 0.014 41.2)\",\n      \"chart-1\": \"oklch(0.868 0.007 39.5)\",\n      \"chart-2\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-3\": \"oklch(0.438 0.017 39.3)\",\n      \"chart-4\": \"oklch(0.367 0.016 35.7)\",\n      \"chart-5\": \"oklch(0.268 0.011 36.5)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"sidebar-primary\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-accent\": \"oklch(0.96 0.002 17.2)\",\n      \"sidebar-accent-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-border\": \"oklch(0.922 0.005 34.3)\",\n      \"sidebar-ring\": \"oklch(0.714 0.014 41.2)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.147 0.004 49.3)\",\n      \"foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"card\": \"oklch(0.214 0.009 43.1)\",\n      \"card-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"popover\": \"oklch(0.214 0.009 43.1)\",\n      \"popover-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"primary\": \"oklch(0.922 0.005 34.3)\",\n      \"primary-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"secondary\": \"oklch(0.268 0.011 36.5)\",\n      \"secondary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"muted\": \"oklch(0.268 0.011 36.5)\",\n      \"muted-foreground\": \"oklch(0.714 0.014 41.2)\",\n      \"accent\": \"oklch(0.268 0.011 36.5)\",\n      \"accent-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-1\": \"oklch(0.868 0.007 39.5)\",\n      \"chart-2\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-3\": \"oklch(0.438 0.017 39.3)\",\n      \"chart-4\": \"oklch(0.367 0.016 35.7)\",\n      \"chart-5\": \"oklch(0.268 0.011 36.5)\",\n      \"sidebar\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-accent\": \"oklch(0.268 0.011 36.5)\",\n      \"sidebar-accent-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.547 0.021 43.1)\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"primary\": \"oklch(0.214 0.009 43.1)\",\n      \"primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"secondary\": \"oklch(0.96 0.002 17.2)\",\n      \"secondary-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"muted\": \"oklch(0.96 0.002 17.2)\",\n      \"muted-foreground\": \"oklch(0.547 0.021 43.1)\",\n      \"accent\": \"oklch(0.96 0.002 17.2)\",\n      \"accent-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0.005 34.3)\",\n      \"input\": \"oklch(0.922 0.005 34.3)\",\n      \"ring\": \"oklch(0.714 0.014 41.2)\",\n      \"chart-1\": \"oklch(0.868 0.007 39.5)\",\n      \"chart-2\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-3\": \"oklch(0.438 0.017 39.3)\",\n      \"chart-4\": \"oklch(0.367 0.016 35.7)\",\n      \"chart-5\": \"oklch(0.268 0.011 36.5)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-foreground\": \"oklch(0.147 0.004 49.3)\",\n      \"sidebar-primary\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-accent\": \"oklch(0.96 0.002 17.2)\",\n      \"sidebar-accent-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-border\": \"oklch(0.922 0.005 34.3)\",\n      \"sidebar-ring\": \"oklch(0.714 0.014 41.2)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.147 0.004 49.3)\",\n      \"foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"card\": \"oklch(0.214 0.009 43.1)\",\n      \"card-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"popover\": \"oklch(0.214 0.009 43.1)\",\n      \"popover-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"primary\": \"oklch(0.922 0.005 34.3)\",\n      \"primary-foreground\": \"oklch(0.214 0.009 43.1)\",\n      \"secondary\": \"oklch(0.268 0.011 36.5)\",\n      \"secondary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"muted\": \"oklch(0.268 0.011 36.5)\",\n      \"muted-foreground\": \"oklch(0.714 0.014 41.2)\",\n      \"accent\": \"oklch(0.268 0.011 36.5)\",\n      \"accent-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-1\": \"oklch(0.868 0.007 39.5)\",\n      \"chart-2\": \"oklch(0.547 0.021 43.1)\",\n      \"chart-3\": \"oklch(0.438 0.017 39.3)\",\n      \"chart-4\": \"oklch(0.367 0.016 35.7)\",\n      \"chart-5\": \"oklch(0.268 0.011 36.5)\",\n      \"sidebar\": \"oklch(0.214 0.009 43.1)\",\n      \"sidebar-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-accent\": \"oklch(0.268 0.011 36.5)\",\n      \"sidebar-accent-foreground\": \"oklch(0.986 0.002 67.8)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.547 0.021 43.1)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: oklch(1 0 0);\\n    --foreground: oklch(0.147 0.004 49.3);\\n    --card: oklch(1 0 0);\\n    --card-foreground: oklch(0.147 0.004 49.3);\\n    --popover: oklch(1 0 0);\\n    --popover-foreground: oklch(0.147 0.004 49.3);\\n    --primary: oklch(0.214 0.009 43.1);\\n    --primary-foreground: oklch(0.986 0.002 67.8);\\n    --secondary: oklch(0.96 0.002 17.2);\\n    --secondary-foreground: oklch(0.214 0.009 43.1);\\n    --muted: oklch(0.96 0.002 17.2);\\n    --muted-foreground: oklch(0.547 0.021 43.1);\\n    --accent: oklch(0.96 0.002 17.2);\\n    --accent-foreground: oklch(0.214 0.009 43.1);\\n    --destructive: oklch(0.577 0.245 27.325);\\n    --border: oklch(0.922 0.005 34.3);\\n    --input: oklch(0.922 0.005 34.3);\\n    --ring: oklch(0.714 0.014 41.2);\\n    --chart-1: oklch(0.868 0.007 39.5);\\n    --chart-2: oklch(0.547 0.021 43.1);\\n    --chart-3: oklch(0.438 0.017 39.3);\\n    --chart-4: oklch(0.367 0.016 35.7);\\n    --chart-5: oklch(0.268 0.011 36.5);\\n    --radius: 0.625rem;\\n  }\\n\\n  .dark {\\n    --background: oklch(0.147 0.004 49.3);\\n    --foreground: oklch(0.986 0.002 67.8);\\n    --card: oklch(0.214 0.009 43.1);\\n    --card-foreground: oklch(0.986 0.002 67.8);\\n    --popover: oklch(0.214 0.009 43.1);\\n    --popover-foreground: oklch(0.986 0.002 67.8);\\n    --primary: oklch(0.922 0.005 34.3);\\n    --primary-foreground: oklch(0.214 0.009 43.1);\\n    --secondary: oklch(0.268 0.011 36.5);\\n    --secondary-foreground: oklch(0.986 0.002 67.8);\\n    --muted: oklch(0.268 0.011 36.5);\\n    --muted-foreground: oklch(0.714 0.014 41.2);\\n    --accent: oklch(0.268 0.011 36.5);\\n    --accent-foreground: oklch(0.986 0.002 67.8);\\n    --destructive: oklch(0.704 0.191 22.216);\\n    --border: oklch(1 0 0 / 10%);\\n    --input: oklch(1 0 0 / 15%);\\n    --ring: oklch(0.547 0.021 43.1);\\n    --chart-1: oklch(0.868 0.007 39.5);\\n    --chart-2: oklch(0.547 0.021 43.1);\\n    --chart-3: oklch(0.438 0.017 39.3);\\n    --chart-4: oklch(0.367 0.016 35.7);\\n    --chart-5: oklch(0.268 0.011 36.5);\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}\n"
  },
  {
    "path": "apps/v4/public/r/colors/zinc.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"primary\": \"oklch(0.21 0.006 285.885)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.967 0.001 286.375)\",\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"muted\": \"oklch(0.967 0.001 286.375)\",\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\",\n      \"accent\": \"oklch(0.967 0.001 286.375)\",\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.92 0.004 286.32)\",\n      \"input\": \"oklch(0.92 0.004 286.32)\",\n      \"ring\": \"oklch(0.705 0.015 286.067)\",\n      \"chart-1\": \"oklch(0.871 0.006 286.286)\",\n      \"chart-2\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-3\": \"oklch(0.442 0.017 285.786)\",\n      \"chart-4\": \"oklch(0.37 0.013 285.805)\",\n      \"chart-5\": \"oklch(0.274 0.006 286.033)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\",\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\",\n      \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.141 0.005 285.823)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.21 0.006 285.885)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.21 0.006 285.885)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.92 0.004 286.32)\",\n      \"primary-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"secondary\": \"oklch(0.274 0.006 286.033)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.274 0.006 286.033)\",\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\",\n      \"accent\": \"oklch(0.274 0.006 286.033)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-1\": \"oklch(0.871 0.006 286.286)\",\n      \"chart-2\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-3\": \"oklch(0.442 0.017 285.786)\",\n      \"chart-4\": \"oklch(0.37 0.013 285.805)\",\n      \"chart-5\": \"oklch(0.274 0.006 286.033)\",\n      \"sidebar\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"primary\": \"oklch(0.21 0.006 285.885)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.967 0.001 286.375)\",\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"muted\": \"oklch(0.967 0.001 286.375)\",\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\",\n      \"accent\": \"oklch(0.967 0.001 286.375)\",\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.92 0.004 286.32)\",\n      \"input\": \"oklch(0.92 0.004 286.32)\",\n      \"ring\": \"oklch(0.705 0.015 286.067)\",\n      \"chart-1\": \"oklch(0.871 0.006 286.286)\",\n      \"chart-2\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-3\": \"oklch(0.442 0.017 285.786)\",\n      \"chart-4\": \"oklch(0.37 0.013 285.805)\",\n      \"chart-5\": \"oklch(0.274 0.006 286.033)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\",\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\",\n      \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.141 0.005 285.823)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.21 0.006 285.885)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.21 0.006 285.885)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.92 0.004 286.32)\",\n      \"primary-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"secondary\": \"oklch(0.274 0.006 286.033)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.274 0.006 286.033)\",\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\",\n      \"accent\": \"oklch(0.274 0.006 286.033)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-1\": \"oklch(0.871 0.006 286.286)\",\n      \"chart-2\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-3\": \"oklch(0.442 0.017 285.786)\",\n      \"chart-4\": \"oklch(0.37 0.013 285.805)\",\n      \"chart-5\": \"oklch(0.274 0.006 286.033)\",\n      \"sidebar\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\"\n    }\n  },\n  \"cssVarsV4\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"primary\": \"oklch(0.21 0.006 285.885)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.967 0.001 286.375)\",\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"muted\": \"oklch(0.967 0.001 286.375)\",\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\",\n      \"accent\": \"oklch(0.967 0.001 286.375)\",\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.92 0.004 286.32)\",\n      \"input\": \"oklch(0.92 0.004 286.32)\",\n      \"ring\": \"oklch(0.705 0.015 286.067)\",\n      \"chart-1\": \"oklch(0.871 0.006 286.286)\",\n      \"chart-2\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-3\": \"oklch(0.442 0.017 285.786)\",\n      \"chart-4\": \"oklch(0.37 0.013 285.805)\",\n      \"chart-5\": \"oklch(0.274 0.006 286.033)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\",\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\",\n      \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.141 0.005 285.823)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.21 0.006 285.885)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.21 0.006 285.885)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.92 0.004 286.32)\",\n      \"primary-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"secondary\": \"oklch(0.274 0.006 286.033)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.274 0.006 286.033)\",\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\",\n      \"accent\": \"oklch(0.274 0.006 286.033)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-1\": \"oklch(0.871 0.006 286.286)\",\n      \"chart-2\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-3\": \"oklch(0.442 0.017 285.786)\",\n      \"chart-4\": \"oklch(0.37 0.013 285.805)\",\n      \"chart-5\": \"oklch(0.274 0.006 286.033)\",\n      \"sidebar\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n    --background: oklch(1 0 0);\\n    --foreground: oklch(0.141 0.005 285.823);\\n    --card: oklch(1 0 0);\\n    --card-foreground: oklch(0.141 0.005 285.823);\\n    --popover: oklch(1 0 0);\\n    --popover-foreground: oklch(0.141 0.005 285.823);\\n    --primary: oklch(0.21 0.006 285.885);\\n    --primary-foreground: oklch(0.985 0 0);\\n    --secondary: oklch(0.967 0.001 286.375);\\n    --secondary-foreground: oklch(0.21 0.006 285.885);\\n    --muted: oklch(0.967 0.001 286.375);\\n    --muted-foreground: oklch(0.552 0.016 285.938);\\n    --accent: oklch(0.967 0.001 286.375);\\n    --accent-foreground: oklch(0.21 0.006 285.885);\\n    --destructive: oklch(0.577 0.245 27.325);\\n    --border: oklch(0.92 0.004 286.32);\\n    --input: oklch(0.92 0.004 286.32);\\n    --ring: oklch(0.705 0.015 286.067);\\n    --chart-1: oklch(0.871 0.006 286.286);\\n    --chart-2: oklch(0.552 0.016 285.938);\\n    --chart-3: oklch(0.442 0.017 285.786);\\n    --chart-4: oklch(0.37 0.013 285.805);\\n    --chart-5: oklch(0.274 0.006 286.033);\\n    --radius: 0.625rem;\\n  }\\n\\n  .dark {\\n    --background: oklch(0.141 0.005 285.823);\\n    --foreground: oklch(0.985 0 0);\\n    --card: oklch(0.21 0.006 285.885);\\n    --card-foreground: oklch(0.985 0 0);\\n    --popover: oklch(0.21 0.006 285.885);\\n    --popover-foreground: oklch(0.985 0 0);\\n    --primary: oklch(0.92 0.004 286.32);\\n    --primary-foreground: oklch(0.21 0.006 285.885);\\n    --secondary: oklch(0.274 0.006 286.033);\\n    --secondary-foreground: oklch(0.985 0 0);\\n    --muted: oklch(0.274 0.006 286.033);\\n    --muted-foreground: oklch(0.705 0.015 286.067);\\n    --accent: oklch(0.274 0.006 286.033);\\n    --accent-foreground: oklch(0.985 0 0);\\n    --destructive: oklch(0.704 0.191 22.216);\\n    --border: oklch(1 0 0 / 10%);\\n    --input: oklch(1 0 0 / 15%);\\n    --ring: oklch(0.552 0.016 285.938);\\n    --chart-1: oklch(0.871 0.006 286.286);\\n    --chart-2: oklch(0.552 0.016 285.938);\\n    --chart-3: oklch(0.442 0.017 285.786);\\n    --chart-4: oklch(0.37 0.013 285.805);\\n    --chart-5: oklch(0.274 0.006 286.033);\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}\n"
  },
  {
    "path": "apps/v4/public/r/config.json",
    "content": "{\n  \"presets\": [\n    {\n      \"name\": \"radix-vega\",\n      \"title\": \"Vega (Radix)\",\n      \"description\": \"Vega / Lucide / Inter\",\n      \"base\": \"radix\",\n      \"style\": \"vega\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"lucide\",\n      \"font\": \"inter\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"radix-nova\",\n      \"title\": \"Nova (Radix)\",\n      \"description\": \"Nova / Lucide / Geist\",\n      \"base\": \"radix\",\n      \"style\": \"nova\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"lucide\",\n      \"font\": \"geist\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"radix-maia\",\n      \"title\": \"Maia (Radix)\",\n      \"description\": \"Maia / Hugeicons / Figtree\",\n      \"base\": \"radix\",\n      \"style\": \"maia\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"hugeicons\",\n      \"font\": \"figtree\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"radix-lyra\",\n      \"title\": \"Lyra (Radix)\",\n      \"description\": \"Lyra / Tabler / JetBrains Mono\",\n      \"base\": \"radix\",\n      \"style\": \"lyra\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"phosphor\",\n      \"font\": \"jetbrains-mono\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"base-vega\",\n      \"title\": \"Vega (Base)\",\n      \"description\": \"Vega / Lucide / Inter\",\n      \"base\": \"base\",\n      \"style\": \"vega\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"lucide\",\n      \"font\": \"inter\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"base-nova\",\n      \"title\": \"Nova (Base)\",\n      \"description\": \"Nova / Lucide / Geist\",\n      \"base\": \"base\",\n      \"style\": \"nova\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"lucide\",\n      \"font\": \"geist\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"base-maia\",\n      \"title\": \"Maia (Base)\",\n      \"description\": \"Maia / Hugeicons / Figtree\",\n      \"base\": \"base\",\n      \"style\": \"maia\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"hugeicons\",\n      \"font\": \"figtree\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"base-lyra\",\n      \"title\": \"Lyra (Base)\",\n      \"description\": \"Lyra / Tabler / JetBrains Mono\",\n      \"base\": \"base\",\n      \"style\": \"lyra\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"phosphor\",\n      \"font\": \"jetbrains-mono\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"radix-mira\",\n      \"title\": \"Mira (Radix)\",\n      \"description\": \"Mira / Hugeicons / Inter\",\n      \"base\": \"radix\",\n      \"style\": \"mira\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"hugeicons\",\n      \"font\": \"inter\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    },\n    {\n      \"name\": \"base-mira\",\n      \"title\": \"Mira (Base)\",\n      \"description\": \"Mira / Hugeicons / Inter\",\n      \"base\": \"base\",\n      \"style\": \"mira\",\n      \"baseColor\": \"neutral\",\n      \"theme\": \"neutral\",\n      \"chartColor\": \"neutral\",\n      \"iconLibrary\": \"hugeicons\",\n      \"font\": \"inter\",\n      \"fontHeading\": \"inherit\",\n      \"item\": \"Item\",\n      \"rtl\": false,\n      \"menuAccent\": \"subtle\",\n      \"menuColor\": \"default\",\n      \"radius\": \"default\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/icons/index.json",
    "content": "{\n  \"AlertCircle\": {\n    \"lucide\": \"AlertCircle\",\n    \"radix\": \"ExclamationTriangleIcon\"\n  },\n  \"ArrowLeft\": {\n    \"lucide\": \"ArrowLeft\",\n    \"radix\": \"ArrowLeftIcon\"\n  },\n  \"ArrowRight\": {\n    \"lucide\": \"ArrowRight\",\n    \"radix\": \"ArrowRightIcon\"\n  },\n  \"ArrowUpDown\": {\n    \"lucide\": \"ArrowUpDown\",\n    \"radix\": \"CaretSortIcon\"\n  },\n  \"BellRing\": {\n    \"lucide\": \"BellRing\",\n    \"radix\": \"BellIcon\"\n  },\n  \"Bold\": {\n    \"lucide\": \"Bold\",\n    \"radix\": \"FontBoldIcon\"\n  },\n  \"Calculator\": {\n    \"lucide\": \"Calculator\",\n    \"radix\": \"ComponentPlaceholderIcon\"\n  },\n  \"Calendar\": {\n    \"lucide\": \"Calendar\",\n    \"radix\": \"CalendarIcon\"\n  },\n  \"Check\": {\n    \"lucide\": \"Check\",\n    \"radix\": \"CheckIcon\"\n  },\n  \"ChevronDown\": {\n    \"lucide\": \"ChevronDown\",\n    \"radix\": \"ChevronDownIcon\"\n  },\n  \"ChevronLeft\": {\n    \"lucide\": \"ChevronLeft\",\n    \"radix\": \"ChevronLeftIcon\"\n  },\n  \"ChevronRight\": {\n    \"lucide\": \"ChevronRight\",\n    \"radix\": \"ChevronRightIcon\"\n  },\n  \"ChevronUp\": {\n    \"lucide\": \"ChevronUp\",\n    \"radix\": \"ChevronUpIcon\"\n  },\n  \"ChevronsUpDown\": {\n    \"lucide\": \"ChevronsUpDown\",\n    \"radix\": \"CaretSortIcon\"\n  },\n  \"Circle\": {\n    \"lucide\": \"Circle\",\n    \"radix\": \"DotFilledIcon\"\n  },\n  \"Copy\": {\n    \"lucide\": \"Copy\",\n    \"radix\": \"CopyIcon\"\n  },\n  \"CreditCard\": {\n    \"lucide\": \"CreditCard\",\n    \"radix\": \"ComponentPlaceholderIcon\"\n  },\n  \"GripVertical\": {\n    \"lucide\": \"GripVertical\",\n    \"radix\": \"DragHandleDots2Icon\"\n  },\n  \"Italic\": {\n    \"lucide\": \"Italic\",\n    \"radix\": \"FontItalicIcon\"\n  },\n  \"Loader2\": {\n    \"lucide\": \"Loader2\",\n    \"radix\": \"ReloadIcon\"\n  },\n  \"Mail\": {\n    \"lucide\": \"Mail\",\n    \"radix\": \"EnvelopeClosedIcon\"\n  },\n  \"MailOpen\": {\n    \"lucide\": \"MailOpen\",\n    \"radix\": \"EnvelopeOpenIcon\"\n  },\n  \"Minus\": {\n    \"lucide\": \"Minus\",\n    \"radix\": \"MinusIcon\"\n  },\n  \"Moon\": {\n    \"lucide\": \"Moon\",\n    \"radix\": \"MoonIcon\"\n  },\n  \"MoreHorizontal\": {\n    \"lucide\": \"MoreHorizontal\",\n    \"radix\": \"DotsHorizontalIcon\"\n  },\n  \"PanelLeft\": {\n    \"lucide\": \"PanelLeft\",\n    \"radix\": \"ViewVerticalIcon\"\n  },\n  \"Plus\": {\n    \"lucide\": \"Plus\",\n    \"radix\": \"PlusIcon\"\n  },\n  \"Search\": {\n    \"lucide\": \"Search\",\n    \"radix\": \"MagnifyingGlassIcon\"\n  },\n  \"Send\": {\n    \"lucide\": \"Send\",\n    \"radix\": \"PaperPlaneIcon\"\n  },\n  \"Settings\": {\n    \"lucide\": \"Settings\",\n    \"radix\": \"GearIcon\"\n  },\n  \"Slash\": {\n    \"lucide\": \"Slash\",\n    \"radix\": \"SlashIcon\"\n  },\n  \"Smile\": {\n    \"lucide\": \"Smile\",\n    \"radix\": \"FaceIcon\"\n  },\n  \"Sun\": {\n    \"lucide\": \"Sun\",\n    \"radix\": \"SunIcon\"\n  },\n  \"Terminal\": {\n    \"lucide\": \"Terminal\",\n    \"radix\": \"RocketIcon\"\n  },\n  \"Underline\": {\n    \"lucide\": \"Underline\",\n    \"radix\": \"UnderlineIcon\"\n  },\n  \"User\": {\n    \"lucide\": \"User\",\n    \"radix\": \"PersonIcon\"\n  },\n  \"X\": {\n    \"lucide\": \"X\",\n    \"radix\": \"Cross2Icon\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/index.json",
    "content": "[\n  {\n    \"name\": \"accordion\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/accordion.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/accordion.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"alert\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/alert.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"alert-dialog\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"button\"],\n    \"files\": [\n      {\n        \"path\": \"ui/alert-dialog.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"aspect-ratio\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/aspect-ratio.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"avatar\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/avatar.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/avatar.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"badge\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/badge.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"breadcrumb\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/breadcrumb.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"button\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/button.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"button-group\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"separator\"],\n    \"files\": [\n      {\n        \"path\": \"ui/button-group.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"calendar\",\n    \"type\": \"registry:ui\",\n    \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n    \"registryDependencies\": [\"button\"],\n    \"files\": [\n      {\n        \"path\": \"ui/calendar.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"card\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/card.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"carousel\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/carousel.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"registryDependencies\": [\"button\"],\n    \"dependencies\": [\"embla-carousel-react\"],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"chart\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/chart.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"dependencies\": [\"recharts@2.15.4\"],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"checkbox\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/checkbox.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"collapsible\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/collapsible.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"combobox\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"button\", \"input-group\"],\n    \"dependencies\": [\"@base-ui/react\"],\n    \"files\": [\n      {\n        \"path\": \"ui/combobox.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"command\",\n    \"type\": \"registry:ui\",\n    \"dependencies\": [\"cmdk\"],\n    \"registryDependencies\": [\"dialog\", \"input-group\"],\n    \"files\": [\n      {\n        \"path\": \"ui/command.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"context-menu\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/context-menu.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"dialog\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"button\"],\n    \"files\": [\n      {\n        \"path\": \"ui/dialog.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"direction\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/direction.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n          \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"drawer\",\n    \"type\": \"registry:ui\",\n    \"dependencies\": [\"vaul\"],\n    \"files\": [\n      {\n        \"path\": \"ui/drawer.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"dropdown-menu\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/dropdown-menu.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menu.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"empty\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/empty.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"field\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"label\", \"separator\"],\n    \"files\": [\n      {\n        \"path\": \"ui/field.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"form\",\n    \"type\": \"registry:ui\"\n  },\n  {\n    \"name\": \"hover-card\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/hover-card.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"input\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/input.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"input-group\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n    \"files\": [\n      {\n        \"path\": \"ui/input-group.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"input-otp\",\n    \"type\": \"registry:ui\",\n    \"dependencies\": [\"input-otp\"],\n    \"files\": [\n      {\n        \"path\": \"ui/input-otp.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"item\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"separator\"],\n    \"files\": [\n      {\n        \"path\": \"ui/item.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"kbd\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/kbd.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"label\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/label.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/label.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"menubar\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/menubar.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menubar.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"native-select\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/native-select.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"navigation-menu\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/navigation-menu.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"pagination\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"button\"],\n    \"files\": [\n      {\n        \"path\": \"ui/pagination.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"popover\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/popover.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/popover.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"progress\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/progress.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/progress.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"radio-group\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/radio-group.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"resizable\",\n    \"type\": \"registry:ui\",\n    \"dependencies\": [\"react-resizable-panels\"],\n    \"files\": [\n      {\n        \"path\": \"ui/resizable.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"scroll-area\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/scroll-area.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"select\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/select.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/select.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"separator\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/separator.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/separator.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"sheet\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"button\"],\n    \"files\": [\n      {\n        \"path\": \"ui/sheet.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"sidebar\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\n      \"button\",\n      \"separator\",\n      \"sheet\",\n      \"tooltip\",\n      \"input\",\n      \"use-mobile\",\n      \"skeleton\"\n    ],\n    \"files\": [\n      {\n        \"path\": \"ui/sidebar.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"skeleton\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/skeleton.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"slider\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/slider.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/slider.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"sonner\",\n    \"type\": \"registry:ui\",\n    \"dependencies\": [\"sonner\", \"next-themes\"],\n    \"files\": [\n      {\n        \"path\": \"ui/sonner.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"spinner\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/spinner.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"switch\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/switch.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/switch.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"table\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/table.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"tabs\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/tabs.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tabs.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"textarea\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/textarea.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"toggle\",\n    \"type\": \"registry:ui\",\n    \"files\": [\n      {\n        \"path\": \"ui/toggle.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"toggle-group\",\n    \"type\": \"registry:ui\",\n    \"registryDependencies\": [\"toggle\"],\n    \"files\": [\n      {\n        \"path\": \"ui/toggle-group.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n        }\n      }\n    }\n  },\n  {\n    \"name\": \"tooltip\",\n    \"type\": \"registry:ui\",\n    \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n    \"files\": [\n      {\n        \"path\": \"ui/tooltip.tsx\",\n        \"type\": \"registry:ui\"\n      }\n    ],\n    \"meta\": {\n      \"links\": {\n        \"radix\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n        },\n        \"base\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n        }\n      }\n    }\n  }\n]\n"
  },
  {
    "path": "apps/v4/public/r/registries-legacy.json",
    "content": "{\n  \"@8bitcn\": \"https://8bitcn.com/r/{name}.json\",\n  \"@8starlabs-ui\": \"https://ui.8starlabs.com/r/{name}.json\",\n  \"@97cn\": \"https://97cn.itzik.co/r/{name}.json\",\n  \"@abstract\": \"https://build.abs.xyz/r/{name}/json\",\n  \"@abui\": \"https://abui.io/r/{name}.json\",\n  \"@aceternity\": \"https://ui.aceternity.com/registry/{name}.json\",\n  \"@aevr\": \"https://ui.aevr.space/r/{name}.json\",\n  \"@ai-blocks\": \"https://webllm.org/r/{name}.json\",\n  \"@ai-elements\": \"https://registry.ai-sdk.dev/{name}.json\",\n  \"@alexcarpenter\": \"https://ui.alexcarpenter.me/r/{name}.json\",\n  \"@algolia\": \"https://sitesearch.algolia.com/r/{name}.json\",\n  \"@alpine\": \"https://alpine-registry.vercel.app/r/{name}.json\",\n  \"@aliimam\": \"https://aliimam.in/r/{name}.json\",\n  \"@animate-ui\": \"https://animate-ui.com/r/{name}.json\",\n  \"@assistant-ui\": \"https://r.assistant-ui.com/{name}.json\",\n  \"@austin-ui\": \"https://austin-ui.netlify.app/r/{name}.json\",\n  \"@basecn\": \"https://basecn.dev/r/{name}.json\",\n  \"@better-upload\": \"https://better-upload.com/r/{name}.json\",\n  \"@billingsdk\": \"https://billingsdk.com/r/{name}.json\",\n  \"@blocks-so\": \"https://blocks.so/r/{name}.json\",\n  \"@bucharitesh\": \"https://bucharitesh.in/r/{name}.json\",\n  \"@bundui\": \"https://bundui.io/r/{name}.json\",\n  \"@cardcn\": \"https://cardcn.dev/r/{name}.json\",\n  \"@chamaac\": \"https://chamaac.com/r/{name}.json\",\n  \"@clerk\": \"https://clerk.com/r/{name}.json\",\n  \"@coss\": \"https://coss.com/ui/r/{name}.json\",\n  \"@commercn\": \"https://commercn.com/r/{name}.json\",\n  \"@chisom-ui\": \"https://chisom-ui.netlify.app/r/{name}.json\",\n  \"@creative-tim\": \"https://www.creative-tim.com/ui/r/{name}.json\",\n  \"@cult-ui\": \"https://cult-ui.com/r/{name}.json\",\n  \"@diceui\": \"https://diceui.com/r/{name}.json\",\n  \"@doras-ui\": \"https://ui.doras.to/r/{name}.json\",\n  \"@efferd\": \"https://efferd.com/r/{name}.json\",\n  \"@einui\": \"https://ui.eindev.ir/r/{name}.json\",\n  \"@eldoraui\": \"https://eldoraui.site/r/{name}.json\",\n  \"@elements\": \"https://tryelements.dev/r/{name}.json\",\n  \"@elevenlabs-ui\": \"https://ui.elevenlabs.io/r/{name}.json\",\n  \"@fancy\": \"https://fancycomponents.dev/r/{name}.json\",\n  \"@formcn\": \"https://formcn.dev/r/{name}.json\",\n  \"@gaia\": \"https://ui.heygaia.io/r/{name}.json\",\n  \"@glass-ui\": \"https://glass-ui.crenspire.com/r/{name}.json\",\n  \"@heseui\": \"https://www.heseui.com/r/{name}.json\",\n  \"@shadcnhooks\": \"https://shadcn-hooks.com/r/{name}.json\",\n  \"@intentui\": \"https://intentui.com/r/{name}\",\n  \"@kibo-ui\": \"https://www.kibo-ui.com/r/{name}.json\",\n  \"@kanpeki\": \"https://kanpeki.vercel.app/r/{name}.json\",\n  \"@kokonutui\": \"https://kokonutui.com/r/{name}.json\",\n  \"@lens-blocks\": \"https://lensblocks.com/r/{name}.json\",\n  \"@limeplay\": \"https://limeplay.winoffrg.dev/r/{name}.json\",\n  \"@lucide-animated\": \"https://lucide-animated.com/r/{name}.json\",\n  \"@lytenyte\": \"https://www.1771technologies.com/r/{name}.json\",\n  \"@marmelab\": \"https://marmelab.com/shadcn-admin-kit/r/{name}.json\",\n  \"@magicui\": \"https://magicui.design/r/{name}.json\",\n  \"@magicui-pro\": \"https://pro.magicui.design/registry/{name}\",\n  \"@motion-primitives\": \"https://motion-primitives.com/c/{name}.json\",\n  \"@manifest\": \"https://ui.manifest.build/r/{name}.json\",\n  \"@mui-treasury\": \"https://mui-treasury.com/r/{name}.json\",\n  \"@nativeui\": \"https://nativeui.io/registry/{name}.json\",\n  \"@nexus-elements\": \"https://elements.nexus.availproject.org/r/{name}.json\",\n  \"@ncdai\": \"https://chanhdai.com/r/{name}.json\",\n  \"@neobrutalism\": \"https://www.neobrutalism.dev/r/{name}.json\",\n  \"@nuqs\": \"https://nuqs.dev/r/{name}.json\",\n  \"@optics\": \"https://optics.agusmayol.com.ar/r/{name}.json\",\n  \"@oui\": \"https://oui.mw10013.workers.dev/r/{name}.json\",\n  \"@paceui\": \"https://ui.paceui.com/r/{name}.json\",\n  \"@plate\": \"https://platejs.org/r/{name}.json\",\n  \"@prompt-kit\": \"https://prompt-kit.com/c/{name}.json\",\n  \"@prosekit\": \"https://prosekit.dev/r/{name}.json\",\n  \"@phucbm\": \"https://phucbm.com/r/{name}.json\",\n  \"@react-aria\": \"https://react-aria.adobe.com/registry/{name}.json\",\n  \"@react-bits\": \"https://reactbits.dev/r/{name}.json\",\n  \"@react-market\": \"https://www.react-market.com/get/{name}.json\",\n  \"@retroui\": \"https://retroui.dev/r/{name}.json\",\n  \"@reui\": \"https://reui.io/r/{name}.json\",\n  \"@rigidui\": \"https://rigidui.com/r/{name}.json\",\n  \"@roiui\": \"https://roiui.com/r/{name}.json\",\n  \"@solaceui\": \"https://www.solaceui.com/r/{name}.json\",\n  \"@scrollxui\": \"https://www.scrollxui.dev/registry/{name}.json\",\n  \"@systaliko-ui\": \"https://systaliko-ui.vercel.app/r/{name}.json\",\n  \"@shadcn-editor\": \"https://shadcn-editor.vercel.app/r/{name}.json\",\n  \"@shadcn-map\": \"http://shadcn-map.vercel.app/r/{name}.json\",\n  \"@shadcn-studio\": \"https://shadcnstudio.com/r/{name}.json\",\n  \"@shadcnblocks\": \"https://shadcnblocks.com/r/{name}.json\",\n  \"@shadcnui-blocks\": \"https://shadcnui-blocks.com/r/{name}.json\",\n  \"@shadcraft\": \"https://shadcraft-free.vercel.app/r/{name}.json\",\n  \"@simple-ai\": \"https://simple-ai.dev/r/{name}.json\",\n  \"@skiper-ui\": \"https://skiper-ui.com/registry/{name}.json\",\n  \"@skyr\": \"https://ui-play.skyroc.me/r/{name}.json\",\n  \"@smoothui\": \"https://smoothui.dev/r/{name}.json\",\n  \"@spectrumui\": \"https://ui.spectrumhq.in/r/{name}.json\",\n  \"@supabase\": \"https://supabase.com/ui/r/{name}.json\",\n  \"@svgl\": \"https://svgl.app/r/{name}.json\",\n  \"@tailark\": \"https://tailark.com/r/{name}.json\",\n  \"@tailwind-admin\": \"https://tailwind-admin.com/r/{name}.json\",\n  \"@tailwind-builder\": \"https://tailwindbuilder.ai/r/{name}.json\",\n  \"@tweakcn\": \"https://tweakcn.com/r/themes/{name}.json\",\n  \"@wds\": \"https://wds-shadcn-registry.netlify.app/r/{name}.json\",\n  \"@animbits\": \"https://animbits.dev/r/{name}.json\",\n  \"@wandry-ui\": \"https://ui.wandry.com.ua/r/{name}.json\",\n  \"@wigggle-ui\": \"https://wigggle-ui.vercel.app/r/{name}.json\",\n  \"@paykit-sdk\": \"https://www.usepaykit.dev/r/{name}.json\",\n  \"@pixelact-ui\": \"https://www.pixelactui.com/r/{name}.json\",\n  \"@zippystarter\": \"https://zippystarter.com/r/{name}.json\",\n  \"@shadcndesign\": \"https://shadcndesign-free.vercel.app/r/{name}.json\",\n  \"@ha-components\": \"https://hacomponents.keshuac.com/r/{name}.json\",\n  \"@shadix-ui\": \"https://shadix-ui.vercel.app/r/{name}.json\",\n  \"@utilcn\": \"https://utilcn.dev/r/{name}.json\",\n  \"@hextaui\": \"https://hextaui.com/r/{name}.json\",\n  \"@taki\": \"https://taki-ui.com/r/{name}.json\",\n  \"@square-ui\": \"https://square.lndev.me/registry/{name}.json\",\n  \"@moleculeui\": \"https://moleculeui.design/r/{name}.json\",\n  \"@uicapsule\": \"https://uicapsule.com/r/{name}.json\",\n  \"@uitripled\": \"https://ui.tripled.work/r/{name}.json\",\n  \"@ui-layouts\": \"https://ui-layouts.com/r/{name}.json\",\n  \"@pureui\": \"https://pure.kam-ui.com/r/{name}.json\",\n  \"@tour\": \"https://onboarding-tour.vercel.app/r/{name}.json\",\n  \"@tb-blocks\": \"https://tailwindbuilder.ai/r/blocks/{name}.json\",\n  \"@heroicons-animated\": \"https://www.heroicons-animated.com/r/{name}.json\",\n  \"@icons-animated\": \"https://icons.lndev.me/r/{name}.json\",\n  \"@forgeui\": \"https://forgeui.in/r/{name}.json\",\n  \"@darx\": \"https://darshitdev.in/r/{name}.json\",\n  \"@gamifykit\": \"https://gamifykit.com/r/{name}.json\",\n  \"@beste-ui\": \"https://ui.beste.co/r/{name}.json\",\n  \"@tokenui\": \"https://www.tokenui.dev/r/{name}.json\",\n  \"@lumiui\": \"https://www.lumiui.dev/r/{name}.json\",\n  \"@uselayouts\": \"https://uselayouts.com/r/{name}.json\",\n  \"@joyco\": \"https://registry.joyco.studio/r/{name}.json\",\n  \"@gooseui\": \"https://gooseui.pro/r/{name}.json\",\n  \"@baselayer\": \"https://www.baselayer.dev/r/{name}.json\",\n  \"@jolyui\": \"https://www.jolyui.dev/r/{name}.json\",\n  \"@fab-ui\": \"https://fab-ui.com/r/{name}.json\",\n  \"@asanshay\": \"https://ds.asanshay.com/r/{name}.json\",\n  \"@headcodecms\": \"https://headcodecms.com/r/{name}.json\",\n  \"@typedora-ui\": \"https://typedora-ui.netlify.app/r/{name}.json\",\n  \"@agents-ui\": \"https://livekit.io/ui/r/{name}.json\"\n}\n"
  },
  {
    "path": "apps/v4/public/r/registries.json",
    "content": "[\n  {\n    \"name\": \"@8bitcn\",\n    \"homepage\": \"https://www.8bitcn.com\",\n    \"url\": \"https://www.8bitcn.com/r/{name}.json\",\n    \"description\": \"A set of 8-bit styled retro components. Works with your favorite frameworks. Open Source. Open Code.\"\n  },\n  {\n    \"name\": \"@8starlabs-ui\",\n    \"homepage\": \"https://ui.8starlabs.com\",\n    \"url\": \"https://ui.8starlabs.com/r/{name}.json\",\n    \"description\": \"A set of beautifully designed components designed for developers who want niche, high-utility UI elements that you won't find in standard libraries.\"\n  },\n  {\n    \"name\": \"@unlumen-ui\",\n    \"homepage\": \"https://ui.unlumen.com\",\n    \"url\": \"https://ui.unlumen.com/r/{name}.json\",\n    \"description\": \"Primitives and components with serious attention to animation and design. Copy, own, ship.\"\n  },\n  {\n    \"name\": \"@auth0\",\n    \"homepage\": \"https://auth0.com\",\n    \"url\": \"https://ui.auth0.com/r/{name}.json\",\n    \"description\": \"Official Auth0 Universal Components for Web. Accelerate development with pre-built, embeddable UI for enterprise SSO, MFA, and organization management\"\n  },\n  {\n    \"name\": \"@abui\",\n    \"homepage\": \"https://abui.io\",\n    \"url\": \"https://abui.io/r/{name}.json\",\n    \"description\": \"A shadcn-compatible registry of reusable components, blocks, and utilities conforming to Vercel's components.build specification\"\n  },\n  {\n    \"name\": \"@abstract\",\n    \"homepage\": \"https://build.abs.xyz\",\n    \"url\": \"https://build.abs.xyz/r/{name}/json\",\n    \"description\": \"A collection of React components for the most common crypto patterns\"\n  },\n  {\n    \"name\": \"@arc\",\n    \"homepage\": \"https://witharc.co/components\",\n    \"url\": \"https://witharc.co/r/{name}.json\",\n    \"description\": \"Animated, accessible UI components built with React and Tailwind CSS.\"\n  },\n  {\n    \"name\": \"@aceternity\",\n    \"homepage\": \"https://ui.aceternity.com\",\n    \"url\": \"https://ui.aceternity.com/registry/{name}.json\",\n    \"description\": \"A modern component library built with Tailwind CSS and Motion for React, Aceternity UI contains unique and interactive components that can make your landing pages look 100x better.\"\n  },\n  {\n    \"name\": \"@agents-ui\",\n    \"homepage\": \"https://livekit.com/ui\",\n    \"url\": \"https://livekit.com/ui/r/{name}.json\",\n    \"description\": \"This is a shadcn/ui component registry that distributes copy-paste React components for building LiveKit AI Agent interfaces.\"\n  },\n  {\n    \"name\": \"@aevr\",\n    \"homepage\": \"https://ui.aevr.space\",\n    \"url\": \"https://ui.aevr.space/r/{name}.json\",\n    \"description\": \"A small collection of focused, production‑ready components and primitives for React/Next.js projects—built on shadcn/ui and complementary libraries.\"\n  },\n  {\n    \"name\": \"@ai-blocks\",\n    \"homepage\": \"https://webllm.org/blocks\",\n    \"url\": \"https://webllm.org/r/{name}.json\",\n    \"description\": \"AI components for the web. No server. No API keys. Built on WebLLM.\"\n  },\n  {\n    \"name\": \"@ai-elements\",\n    \"homepage\": \"https://ai-sdk.dev/elements\",\n    \"url\": \"https://ai-sdk.dev/elements/api/registry/{name}.json\",\n    \"description\": \"Pre-built components like conversations, messages and more to help you build AI-native applications faster.\"\n  },\n  {\n    \"name\": \"@algolia\",\n    \"homepage\": \"https://sitesearch.algolia.com\",\n    \"url\": \"https://sitesearch.algolia.com/r/{name}.json\",\n    \"description\": \"Enterprises and developers use Algolia's AI search infrastructure to understand users and show them what they're looking for.\"\n  },\n  {\n    \"name\": \"@aliimam\",\n    \"homepage\": \"https://aliimam.in\",\n    \"url\": \"https://aliimam.in/r/{name}.json\",\n    \"description\": \"I create digital experiences that connect and inspire. I build apps, websites, brands, and products end-to-end.\"\n  },\n  {\n    \"name\": \"@animate-ui\",\n    \"homepage\": \"https://animate-ui.com\",\n    \"url\": \"https://animate-ui.com/r/{name}.json\",\n    \"description\": \"A fully animated, open-source React component distribution. Browse a list of animated primitives, components and icons you can install and use in your projects.\"\n  },\n  {\n    \"name\": \"@assistant-ui\",\n    \"homepage\": \"https://www.assistant-ui.com\",\n    \"url\": \"https://r.assistant-ui.com/{name}.json\",\n    \"description\": \"Radix-style React primitives for AI chat with adapters for AI SDK, LangGraph, Mastra, and custom backends.\"\n  },\n  {\n    \"name\": \"@tool-ui\",\n    \"homepage\": \"https://www.tool-ui.com\",\n    \"url\": \"https://www.tool-ui.com/r/{name}.json\",\n    \"description\": \"Open source React components for rendering AI tool call widgets and rich assistant outputs.\"\n  },\n  {\n    \"name\": \"@better-upload\",\n    \"homepage\": \"https://better-upload.com\",\n    \"url\": \"https://better-upload.com/r/{name}.json\",\n    \"description\": \"Simple and easy file uploads for React. Upload directly to any S3-compatible service with minimal setup.\"\n  },\n  {\n    \"name\": \"@basecn\",\n    \"homepage\": \"https://basecn.dev\",\n    \"url\": \"https://basecn.dev/r/{name}.json\",\n    \"description\": \"Beautifully crafted shadcn/ui components powered by Base UI\"\n  },\n  {\n    \"name\": \"@billingsdk\",\n    \"homepage\": \"https://billingsdk.com\",\n    \"url\": \"https://billingsdk.com/r/{name}.json\",\n    \"description\": \"BillingSDK is an open-source React and Next.js component library for SaaS billing and payments. It offers ready-to-use, customizable components for subscriptions, invoices, usage-based pricing and billing - fully compatible with Dodo Payments and Stripe.\"\n  },\n  {\n    \"name\": \"@blocks-so\",\n    \"homepage\": \"https://blocks.so\",\n    \"url\": \"https://blocks.so/r/{name}.json\",\n    \"description\": \"A set of clean, modern application building blocks for you in your applications. Free and Open Source\"\n  },\n  {\n    \"name\": \"@boldkit\",\n    \"homepage\": \"https://boldkit.dev\",\n    \"url\": \"https://boldkit.dev/r/{name}.json\",\n    \"description\": \"Neubrutalism component library with 43 components, 42 SVG shapes, thick borders, and hard shadows. Supports React, Vue, and Nuxt. Built on shadcn/ui.\"\n  },\n  {\n    \"name\": \"@bundui\",\n    \"homepage\": \"https://bundui.io\",\n    \"url\": \"https://bundui.io/r/{name}.json\",\n    \"description\": \"A collection of 150+ handcrafted UI components built with Tailwind CSS and shadcn/ui, covering marketing, e-commerce, dashboards, real estate, and more.\"\n  },\n  {\n    \"name\": \"@cardcn\",\n    \"homepage\": \"https://cardcn.dev\",\n    \"url\": \"https://cardcn.dev/r/{name}.json\",\n    \"description\": \"A set of beautifully-designed shadcn card components\"\n  },\n  {\n    \"name\": \"@chamaac\",\n    \"homepage\": \"https://chamaac.com\",\n    \"url\": \"https://chamaac.com/r/{name}.json\",\n    \"description\": \"A collection of beautiful, animated components to elevate your web projects instantly.\"\n  },\n  {\n    \"name\": \"@clerk\",\n    \"homepage\": \"https://clerk.com/docs/guides/development/shadcn-cli\",\n    \"url\": \"https://clerk.com/r/{name}.json\",\n    \"description\": \"The easiest way to add authentication and user management to your application. Purpose-built for React, Next.js, Remix, and The Modern Web.\"\n  },\n  {\n    \"name\": \"@commercn\",\n    \"homepage\": \"https://commercn.com\",\n    \"url\": \"https://commercn.com/r/{name}.json\",\n    \"description\": \"Shadcn UI Blocks for Ecommerce websites\"\n  },\n  {\n    \"name\": \"@coss\",\n    \"homepage\": \"https://coss.com/ui\",\n    \"url\": \"https://coss.com/ui/r/{name}.json\",\n    \"description\": \"A new, modern UI component library built on top of Base UI. Built for developers and AI.\"\n  },\n  {\n    \"name\": \"@creative-tim\",\n    \"homepage\": \"https://www.creative-tim.com/ui\",\n    \"url\": \"https://www.creative-tim.com/ui/r/{name}.json\",\n    \"description\": \"A collection of open-source UI components, blocks and AI Agents. Integrate them in v0, Lovable, Claude or in your application.\"\n  },\n  {\n    \"name\": \"@cult-ui\",\n    \"homepage\": \"https://www.cult-ui.com\",\n    \"url\": \"https://cult-ui.com/r/{name}.json\",\n    \"description\": \"Cult UI is a rare, curated set of shadcn-compatible, headless and composable components—tastefully animated with Framer Motion.\"\n  },\n  {\n    \"name\": \"@diceui\",\n    \"homepage\": \"https://www.diceui.com/\",\n    \"url\": \"https://diceui.com/r/{name}.json\",\n    \"description\": \"Accessible shadcn/ui components built with React, TypeScript, and Tailwind CSS. Copy-paste ready, and customizable.\"\n  },\n  {\n    \"name\": \"@doras-ui\",\n    \"homepage\": \"https://ui.doras.to/\",\n    \"url\": \"https://ui.doras.to/r/{name}.json\",\n    \"description\": \"A collection of beautiful, reusable component blocks built with React\"\n  },\n  {\n    \"name\": \"@elements\",\n    \"homepage\": \"https://www.tryelements.dev\",\n    \"url\": \"https://www.tryelements.dev/r/{name}.json\",\n    \"description\": \"Full-stack shadcn/ui components that go beyond UI. Add auth, monetization, uploads, and AI to your app in seconds.\"\n  },\n  {\n    \"name\": \"@elevenlabs-ui\",\n    \"homepage\": \"https://ui.elevenlabs.io\",\n    \"url\": \"https://ui.elevenlabs.io/r/{name}.json\",\n    \"description\": \"A collection of Open Source agent and audio components that you can customize and extend.\"\n  },\n  {\n    \"name\": \"@efferd\",\n    \"homepage\": \"https://efferd.com/\",\n    \"url\": \"https://efferd.com/r/{name}.json\",\n    \"description\": \"A collection of beautifully crafted Shadcn/UI blocks, designed to help developers build modern websites with ease.\"\n  },\n  {\n    \"name\": \"@einui\",\n    \"homepage\": \"https://ui.eindev.ir\",\n    \"url\": \"https://ui.eindev.ir/r/{name}.json\",\n    \"description\": \"Beautiful, responsive Shadcn components with frosted glass morphism. Built for modern web applications with full dark mode support.\"\n  },\n  {\n    \"name\": \"@eldoraui\",\n    \"homepage\": \"https://eldoraui.site\",\n    \"url\": \"https://eldoraui.site/r/{name}.json\",\n    \"description\": \"An open-source, modern UI component library for React, built with TypeScript, Tailwind CSS, and Framer Motion. Eldora UI offers beautifully crafted, reusable components designed for performance and elegance.\"\n  },\n  {\n    \"name\": \"@formcn\",\n    \"homepage\": \"https://formcn.dev\",\n    \"url\": \"https://formcn.dev/r/{name}.json\",\n    \"description\": \"Build production-ready forms with a few clicks using shadcn components and modern tools.\"\n  },\n  {\n    \"name\": \"@gaia\",\n    \"homepage\": \"https://ui.heygaia.io\",\n    \"url\": \"https://ui.heygaia.io/r/{name}.json\",\n    \"description\": \"Production-ready UI components designed for building beautiful AI assistants and conversational interfaces, from the team behind GAIA.\"\n  },\n  {\n    \"name\": \"@gc-solid\",\n    \"homepage\": \"https://binnodon.github.io/gc-solid-ui\",\n    \"url\": \"https://binnodon.github.io/gc-solid-ui/r/{name}.json\",\n    \"description\": \"SolidJS port of shadcn-ui components built with Kobalte primitives. 57+ components with full TypeScript support and Vega theme.\"\n  },\n  {\n    \"name\": \"@glass-ui\",\n    \"homepage\": \"https://glass-ui.crenspire.com\",\n    \"url\": \"https://glass-ui.crenspire.com/r/{name}.json\",\n    \"description\": \"A shadcn-ui compatible registry distributing 40+ glassmorphic React/TypeScript components with Apple-inspired design. Components include enhanced visual effects (glow, shimmer, ripple), theme support, and customizable glassmorphism styling.\"\n  },\n  {\n    \"name\": \"@ha-components\",\n    \"homepage\": \"https://hacomponents.keshuac.com\",\n    \"url\": \"https://hacomponents.keshuac.com/r/{name}.json\",\n    \"description\": \"A collection of customisable components to build Home Assistant dashboards.\"\n  },\n  {\n    \"name\": \"@hextaui\",\n    \"homepage\": \"https://hextaui.com\",\n    \"url\": \"https://hextaui.com/r/{name}.json\",\n    \"description\": \"Ready-to-use foundation components/blocks built on top of shadcn/ui.\"\n  },\n  {\n    \"name\": \"@shadcnhooks\",\n    \"homepage\": \"https://shadcn-hooks.com\",\n    \"url\": \"https://shadcn-hooks.com/r/{name}.json\",\n    \"description\": \"A comprehensive React Hooks Collection built with Shadcn.\"\n  },\n  {\n    \"name\": \"@inferencesh\",\n    \"homepage\": \"https://ui.inference.sh\",\n    \"url\": \"https://ui.inference.sh/r/{name}.json\",\n    \"description\": \"batteries-included agent components by inference.sh. chat interfaces with streaming, tool invocation rendering, syntax-highlighted code blocks, markdown renderer, and more.\"\n  },\n  {\n    \"name\": \"@intentui\",\n    \"homepage\": \"https://intentui.com\",\n    \"url\": \"https://intentui.com/r/{name}\",\n    \"description\": \"Accessible React component library to copy, customize, and own your UI.\"\n  },\n  {\n    \"name\": \"@jalco\",\n    \"homepage\": \"https://ui.justinlevine.me\",\n    \"url\": \"https://ui.justinlevine.me/r/{name}.json\",\n    \"description\": \"A curated collection of GitHub-integrated, documentation, and developer-facing components. Self-contained, zero-dependency, and production-ready.\"\n  },\n  {\n    \"name\": \"@kibo-ui\",\n    \"homepage\": \"https://www.kibo-ui.com/\",\n    \"url\": \"https://www.kibo-ui.com/r/{name}.json\",\n    \"description\": \"Kibo UI is a custom registry of composable, accessible and open source components designed for use with shadcn/ui.\"\n  },\n  {\n    \"name\": \"@kanpeki\",\n    \"homepage\": \"https://kanpeki.vercel.app\",\n    \"url\": \"https://kanpeki.vercel.app/r/{name}.json\",\n    \"description\": \"A set of perfect-designed components built on top of React Aria and Motion.\"\n  },\n  {\n    \"name\": \"@kapwa\",\n    \"homepage\": \"https://kapwa-two.vercel.app\",\n    \"url\": \"https://kapwa-two.vercel.app/r/{name}.json\",\n    \"description\": \"Cleanly designed components purposely built for open-source government portals.\"\n  },\n  {\n    \"name\": \"@kokonutui\",\n    \"homepage\": \"https://kokonutui.com\",\n    \"url\": \"https://kokonutui.com/r/{name}.json\",\n    \"description\": \"Collection of stunning components built with Tailwind CSS, shadcn/ui and Motion to use on your websites.\"\n  },\n  {\n    \"name\": \"@lens-blocks\",\n    \"homepage\": \"https://lensblocks.com\",\n    \"url\": \"https://lensblocks.com/r/{name}.json\",\n    \"description\": \"A collection of social media components for use with Lens Social Protocol.\"\n  },\n  {\n    \"name\": \"@limeplay\",\n    \"homepage\": \"https://limeplay.winoffrg.dev\",\n    \"url\": \"https://limeplay.winoffrg.dev/r/{name}.json\",\n    \"description\": \"Modern UI Library for building media players in React. Powered by Shaka Player.\"\n  },\n  {\n    \"name\": \"@lmscn\",\n    \"homepage\": \"https://lmscn.vercel.app\",\n    \"url\": \"https://lmscn.vercel.app/r/{name}.json\",\n    \"description\": \"LMS components for building interactive learning experiences — quiz, flashcards, matching, fill-in-the-blank, word scramble, sequencing, reading comprehension, spaced repetition and more.\"\n  },\n  {\n    \"name\": \"@lucide-animated\",\n    \"homepage\": \"https://lucide-animated.com\",\n    \"url\": \"https://lucide-animated.com/r/{name}.json\",\n    \"description\": \"An open-source collection of smooth animated lucide icons for your projects\"\n  },\n  {\n    \"name\": \"@lytenyte\",\n    \"homepage\": \"https://www.1771technologies.com\",\n    \"url\": \"https://www.1771technologies.com/r/{name}.json\",\n    \"description\": \"LyteNyte Grid is a high performance, light weight, headless, React data grid. Our registry provides LyteNyte Grid themed using Tailwind and the Shadcn theme variables.\"\n  },\n  {\n    \"name\": \"@magicui\",\n    \"homepage\": \"https://magicui.design\",\n    \"url\": \"https://magicui.design/r/{name}\",\n    \"description\": \"UI Library for Design Engineers. 150+ free and open-source animated components and effects built with React, Typescript, Tailwind CSS, and Motion. Perfect companion for shadcn/ui.\"\n  },\n  {\n    \"name\": \"@manifest\",\n    \"homepage\": \"https://ui.manifest.build\",\n    \"url\": \"https://ui.manifest.build/r/{name}.json\",\n    \"description\": \"Agentic UI toolkit for building MCP Apps. Open-source components and blocks ready to use within your chat app.\"\n  },\n  {\n    \"name\": \"@mapcn\",\n    \"homepage\": \"https://mapcn.dev\",\n    \"url\": \"https://mapcn.dev/r/{name}.json\",\n    \"description\": \"Beautiful maps, made simple. Ready to use, customizable map components for React. Built on MapLibre. Styled with Tailwind CSS.\"\n  },\n  {\n    \"name\": \"@mui-treasury\",\n    \"homepage\": \"https://www.mui-treasury.com\",\n    \"url\": \"https://mui-treasury.com/r/{name}.json\",\n    \"description\": \"A collection of hand-crafted interfaces built on top of MUI components\"\n  },\n  {\n    \"name\": \"@moleculeui\",\n    \"homepage\": \"https://www.moleculeui.design/\",\n    \"url\": \"https://www.moleculeui.design/r/{name}.json\",\n    \"description\": \"A modern React component library focused on intuitive interactions and seamless user experiences.\"\n  },\n  {\n    \"name\": \"@motion-primitives\",\n    \"homepage\": \"https://www.motion-primitives.com\",\n    \"url\": \"https://motion-primitives.com/c/{name}.json\",\n    \"description\": \"Beautifully designed motions components. Easy copy-paste. Customizable. Open Source. Built for engineers and designers.\"\n  },\n  {\n    \"name\": \"@ncdai\",\n    \"homepage\": \"https://chanhdai.com/components\",\n    \"url\": \"https://chanhdai.com/r/{name}.json\",\n    \"description\": \"A collection of reusable components.\"\n  },\n  {\n    \"name\": \"@nteract\",\n    \"homepage\": \"https://nteract-elements.vercel.app/\",\n    \"url\": \"https://nteract-elements.vercel.app/r/{name}.json\",\n    \"description\": \"Components for interactive computing notebooks.\"\n  },\n  {\n    \"name\": \"@nuqs\",\n    \"homepage\": \"https://nuqs.dev/registry\",\n    \"url\": \"https://nuqs.dev/r/{name}.json\",\n    \"description\": \"Custom parsers, adapters and utilities from the community for type-safe URL state management.\"\n  },\n  {\n    \"name\": \"@neobrutalism\",\n    \"homepage\": \"https://www.neobrutalism.dev\",\n    \"url\": \"https://www.neobrutalism.dev/r/{name}.json\",\n    \"description\": \"A collection of neobrutalism-styled components based on shadcn/ui\"\n  },\n  {\n    \"name\": \"@nessra-ui\",\n    \"homepage\": \"https://nessra-ui.vercel.app\",\n    \"url\": \"https://nessra-ui.vercel.app/r/{name}.json\",\n    \"description\": \"Beautiful, accessible components built with Tailwind CSS v4 and Radix UI. Includes auth blocks, data tables, and TanStack Form integration.\"\n  },\n  {\n    \"name\": \"@nexus-elements\",\n    \"homepage\": \"https://elements.nexus.availproject.org/docs/view-components\",\n    \"url\": \"https://elements.nexus.availproject.org/r/{name}.json\",\n    \"description\": \"Ready-made React components for almost any use case. Use as is or customise and go to market fast\"\n  },\n  {\n    \"name\": \"@openstatus\",\n    \"homepage\": \"https://openstatus.dev/registry\",\n    \"url\": \"https://openstatus.dev/r/{name}.json\",\n    \"description\": \"Hand-crafted, accessible components for building beautiful status pages.\"\n  },\n  {\n    \"name\": \"@optics\",\n    \"homepage\": \"https://optics.agusmayol.com.ar\",\n    \"url\": \"https://optics.agusmayol.com.ar/r/{name}.json\",\n    \"description\": \"A design system that distributes re-styled components, utilities, and hooks ready to use.\"\n  },\n  {\n    \"name\": \"@oui\",\n    \"homepage\": \"https://oui.mw10013.workers.dev\",\n    \"url\": \"https://oui.mw10013.workers.dev/r/{name}.json\",\n    \"description\": \"React Aria Components with shadcn characteristics.Copy-and-paste react aria components that run side-by-side with shadcn components.\"\n  },\n  {\n    \"name\": \"@pacekit\",\n    \"homepage\": \"https://ui.pacekit.dev\",\n    \"url\": \"https://ui.pacekit.dev/r/{name}.json\",\n    \"description\": \"Carefully built UI blocks for real apps and dashboards, designed to integrate smoothly from early ideas to production releases.\"\n  },\n  {\n    \"name\": \"@pacekit-gsap\",\n    \"homepage\": \"https://gsap.pacekit.dev\",\n    \"url\": \"https://gsap.pacekit.dev/r/{name}.json\",\n    \"description\": \"Animated GSAP components crafted for smooth interaction and rich detail.\"\n  },\n  {\n    \"name\": \"@pastecn\",\n    \"homepage\": \"https://pastecn.com\",\n    \"url\": \"https://pastecn.com/r/{name}\",\n    \"description\": \"pastebin + shadcn = pastecn. Paste your code and get a shadcn-compatible registry URL instantly.\"\n  },\n  {\n    \"name\": \"@paykit-sdk\",\n    \"homepage\": \"https://www.usepaykit.dev\",\n    \"url\": \"https://www.usepaykit.dev/r/{name}.json\",\n    \"description\": \"Unified payments SDK for builders — handle checkout, billing, and webhooks across Stripe, PayPal, Adyen, and regional gateways with a single integration.\"\n  },\n  {\n    \"name\": \"@plate\",\n    \"homepage\": \"https://platejs.org\",\n    \"url\": \"https://platejs.org/r/{name}.json\",\n    \"description\": \"AI-powered rich text editor for React.\"\n  },\n  {\n    \"name\": \"@prompt-kit\",\n    \"homepage\": \"https://www.prompt-kit.com\",\n    \"url\": \"https://www.prompt-kit.com/c/{name}.json\",\n    \"description\": \"Core building blocks for AI apps. High-quality, accessible, and customizable components for AI interfaces.\"\n  },\n  {\n    \"name\": \"@prosekit\",\n    \"homepage\": \"https://prosekit.dev\",\n    \"url\": \"https://prosekit.dev/r/{name}.json\",\n    \"description\": \"Powerful and flexible rich text editor for React, Vue, Preact, Svelte, and SolidJS.\"\n  },\n  {\n    \"name\": \"@phucbm\",\n    \"homepage\": \"https://phucbm.com/components\",\n    \"url\": \"https://phucbm.com/r/{name}.json\",\n    \"description\": \"A collection of modern React UI components with GSAP animations.\"\n  },\n  {\n    \"name\": \"@react-aria\",\n    \"homepage\": \"https://react-aria.adobe.com\",\n    \"url\": \"https://react-aria.adobe.com/registry/{name}.json\",\n    \"description\": \"Customizable Tailwind and Vanilla CSS components with adaptive interactions, top-tier accessibility, and internationalization.\"\n  },\n  {\n    \"name\": \"@react-bits\",\n    \"homepage\": \"https://reactbits.dev\",\n    \"url\": \"https://reactbits.dev/r/{name}.json\",\n    \"description\": \"A large collection of animated, interactive & fully customizable React components for building memorable websites. From smooth text animations all the way to eye-catching backgrounds, you can find it here.\"\n  },\n  {\n    \"name\": \"@retroui\",\n    \"homepage\": \"https://retroui.dev\",\n    \"url\": \"https://retroui.dev/r/{name}.json\",\n    \"description\": \"A Neobrutalism styled React + TailwindCSS UI library for building bold, modern web apps. Perfect for any project using Shadcn/ui.\"\n  },\n  {\n    \"name\": \"@reui\",\n    \"homepage\": \"https://reui.io\",\n    \"url\": \"https://reui.io/r/{style}/{name}.json\",\n    \"description\": \"Free & open-source library of 1,000+ components and patterns to 10x your productivity in shadcn projects.\"\n  },\n  {\n    \"name\": \"@scrollxui\",\n    \"homepage\": \"https://www.scrollxui.dev\",\n    \"url\": \"https://www.scrollxui.dev/registry/{name}.json\",\n    \"description\": \"ScrollX UI is an open-source React and shadcn-compatible component library for animated, interactive, and customizable user interfaces. It offers motion-driven components that blend seamlessly with modern ShadCN setups.\"\n  },\n  {\n    \"name\": \"@spell\",\n    \"homepage\": \"https://spell.sh\",\n    \"url\": \"https://spell.sh/r/{name}.json\",\n    \"description\": \"Beautiful, sophisticated UI components designed for modern React and Tailwind CSS applications.\"\n  },\n  {\n    \"name\": \"@square-ui\",\n    \"homepage\": \"https://square.lndev.me\",\n    \"url\": \"https://square.lndev.me/registry/{name}.json\",\n    \"description\": \"Collection of beautifully crafted open-source layouts UI built with shadcn/ui.\"\n  },\n  {\n    \"name\": \"@systaliko-ui\",\n    \"homepage\": \"https://systaliko-ui.vercel.app\",\n    \"url\": \"https://systaliko-ui.vercel.app/r/{name}.json\",\n    \"description\": \"UI component library, Designed for flexibility, built for customization, and crafted to scale across variants and use cases.\"\n  },\n  {\n    \"name\": \"@roiui\",\n    \"homepage\": \"https://roiui.com\",\n    \"url\": \"https://roiui.com/r/{name}.json\",\n    \"description\": \"Roi UI is a library that offers UI components and blocks built with Base UI primitives. Some blocks and components use motion (framer). Everything is open-source and will be forever.\"\n  },\n  {\n    \"name\": \"@slide-cn\",\n    \"homepage\": \"https://slide-cn.com\",\n    \"url\": \"https://slide-cn.com/r/{name}.json\",\n    \"description\": \"A component library to build slide decks using code.\"\n  },\n  {\n    \"name\": \"@satoriui\",\n    \"homepage\": \"https://satoriui.site\",\n    \"url\": \"https://satoriui.site/r/{name}.json\",\n    \"description\": \"A comprehensive suite of high-fidelity interaction components. It offers motion-driven components that designed with motion-react and tailwindcss, that blends seamlessly.\"\n  },\n  {\n    \"name\": \"@solaceui\",\n    \"homepage\": \"https://www.solaceui.com\",\n    \"url\": \"https://www.solaceui.com/r/{name}.json\",\n    \"description\": \"Production-ready and tastefully crafted sections, animated components, and full-page templates for Next.js, Tailwind CSS & Motion\"\n  },\n  {\n    \"name\": \"@shadcnblocks\",\n    \"homepage\": \"https://shadcnblocks.com\",\n    \"url\": \"https://shadcnblocks.com/r/{name}.json\",\n    \"description\": \"A registry with hundreds of extra blocks for shadcn ui.\"\n  },\n  {\n    \"name\": \"@shadcndesign\",\n    \"homepage\": \"https://www.shadcndesign.com\",\n    \"url\": \"https://shadcndesign-free.vercel.app/r/{name}.json\",\n    \"description\": \"A growing collection of high-quality blocks and themes for shadcn/ui.\"\n  },\n  {\n    \"name\": \"@shadcnmaps\",\n    \"homepage\": \"https://shadcnmaps.com\",\n    \"url\": \"https://shadcnmaps.com/r/{name}.json\",\n    \"description\": \"Beautiful map components powered by pure SVG.\"\n  },\n  {\n    \"name\": \"@shadcnstore\",\n    \"homepage\": \"https://www.shadcnstore.com\",\n    \"url\": \"https://shadcnstore.com/r/{name}.json\",\n    \"description\": \"A growing collection of shadcn/ui components, blocks, and templates for building modern web apps.\"\n  },\n  {\n    \"name\": \"@shadcn-map\",\n    \"homepage\": \"https://shadcn-map.vercel.app\",\n    \"url\": \"http://shadcn-map.vercel.app/r/{name}.json\",\n    \"description\": \"A map component for shadcn/ui. Built with Leaflet and React Leaflet.\"\n  },\n  {\n    \"name\": \"@shadcn-studio\",\n    \"homepage\": \"https://shadcnstudio.com\",\n    \"url\": \"https://shadcnstudio.com/r/{name}.json\",\n    \"description\": \"An open-source set of shadcn/ui components, blocks, and templates with a powerful theme generator.\"\n  },\n  {\n    \"name\": \"@waves-cn\",\n    \"homepage\": \"https://waves-cn.vercel.app\",\n    \"url\": \"https://waves-cn.vercel.app/r/{name}.json\",\n    \"description\": \"A collection of wave players and waveform components built with wavesurfer.js and shadcn/ui.\"\n  },\n  {\n    \"name\": \"@shadcn-editor\",\n    \"homepage\": \"https://shadcn-editor.vercel.app\",\n    \"url\": \"https://shadcn-editor.vercel.app/r/{name}.json\",\n    \"description\": \"Accessible, Customizable, Rich Text Editor. Made with Lexical and Shadcn/UI. Open Source. Open Code.\"\n  },\n  {\n    \"name\": \"@shadcnui-blocks\",\n    \"homepage\": \"https://shadcnui-blocks.com\",\n    \"url\": \"https://shadcnui-blocks.com/r/{name}.json\",\n    \"description\": \"A collection of premium, production-ready shadcn/ui blocks, components and templates.\"\n  },\n  {\n    \"name\": \"@shadcnuikit\",\n    \"homepage\": \"https://shadcnuikit.com\",\n    \"url\": \"https://shadcnuikit.com/r/{name}.json\",\n    \"description\": \"Launch your projects faster with admin dashboards, website templates, components, blocks, and pre-built real-world examples.\"\n  },\n  {\n    \"name\": \"@shadcraft\",\n    \"homepage\": \"https://free.shadcraft.com\",\n    \"url\": \"https://free.shadcraft.com/r/{name}.json\",\n    \"description\": \"A collection of polished shadcn/ui components and marketing blocks built to production standards. Fast to use, easy to extend, and ready for any modern web project.\"\n  },\n  {\n    \"name\": \"@smoothui\",\n    \"homepage\": \"https://smoothui.dev\",\n    \"url\": \"https://smoothui.dev/r/{name}.json\",\n    \"description\": \"A collection of beautifully crafted motion components built with React, Framer Motion, and TailwindCSS. Designed to elevate microinteractions, each component focuses on smooth animations, subtle feedback, and delightful UX. Perfect for designers and developers who want to add refined motion to their interfaces — copy, paste, and make your UI come alive.\"\n  },\n  {\n    \"name\": \"@spectrumui\",\n    \"homepage\": \"https://ui.spectrumhq.in\",\n    \"url\": \"https://ui.spectrumhq.in/r/{name}.json\",\n    \"description\": \"A modern component library built with shadcn/ui and Tailwind CSS. Spectrum UI offers elegant, responsive components and smooth animations designed for high-quality interfaces.\"\n  },\n  {\n    \"name\": \"@supabase\",\n    \"homepage\": \"https://supabase.com/ui\",\n    \"url\": \"https://supabase.com/ui/r/{name}.json\",\n    \"description\": \"A collection of React components and blocks built on the shadcn/ui library that connect your front-end to your Supabase back-end via a single command.\"\n  },\n  {\n    \"name\": \"@svgl\",\n    \"homepage\": \"https://svgl.app\",\n    \"url\": \"https://svgl.app/r/{name}.json\",\n    \"description\": \"A beautiful library with SVG logos.\"\n  },\n  {\n    \"name\": \"@tailark\",\n    \"homepage\": \"https://tailark.com\",\n    \"url\": \"https://tailark.com/r/{name}.json\",\n    \"description\": \"Shadcn blocks designed for building modern marketing websites.\"\n  },\n  {\n    \"name\": \"@taki\",\n    \"homepage\": \"https://taki-ui.com\",\n    \"url\": \"https://taki-ui.com/r/{name}.json\",\n    \"description\": \"Beautifully designed, accessible components that you can copy and paste into your apps. Made with React Aria Components and Shadcn tokens.\"\n  },\n  {\n    \"name\": \"@terrae\",\n    \"homepage\": \"https://www.terrae.dev\",\n    \"url\": \"https://www.terrae.dev/{name}.json\",\n    \"description\": \"Composable, animated map components for React. Built with TypeScript, Tailwind CSS, Mapbox GL JS, and MapLibre GL. Perfect companion for shadcn/ui.\"\n  },\n  {\n    \"name\": \"@thegridcn\",\n    \"homepage\": \"https://thegridcn.com\",\n    \"url\": \"https://thegridcn.com/r/{name}.json\",\n    \"description\": \"A Tron-inspired shadcn/ui theme system with Greek god color schemes, glow intensity levels, and sci-fi components like DataCard, HUD, Radar, and more.\"\n  },\n  {\n    \"name\": \"@tour\",\n    \"homepage\": \"https://onboarding-tour.vercel.app\",\n    \"url\": \"https://onboarding-tour.vercel.app/r/{name}.json\",\n    \"description\": \"A component for building onboarding tours. Designed to integrate with shadcn/ui.\"\n  },\n  {\n    \"name\": \"@uitripled\",\n    \"homepage\": \"https://ui.tripled.work\",\n    \"url\": \"https://ui.tripled.work/r/{name}.json\",\n    \"description\": \"An open-source, Production-ready UI components and blocks powered by shadcn/ui and Framer Motion\"\n  },\n  {\n    \"name\": \"@utilcn\",\n    \"homepage\": \"https://utilcn.dev\",\n    \"url\": \"https://utilcn.dev/r/{name}.json\",\n    \"description\": \"Fullstack registry items to start those big features. Utilcn has ChatGPT Apps, file uploading (with progress bars) and downloading, and a way to make your env vars typesafe on the backend.\"\n  },\n  {\n    \"name\": \"@wandry-ui\",\n    \"homepage\": \"http://ui.wandry.com.ua/\",\n    \"url\": \"https://ui.wandry.com.ua/r/{name}.json\",\n    \"description\": \"A set of open source fully controlled React Inertia form elements\"\n  },\n  {\n    \"name\": \"@wds\",\n    \"homepage\": \"https://wds-shadcn-registry.netlify.app/\",\n    \"url\": \"https://wds-shadcn-registry.netlify.app/r/{name}.json\",\n    \"description\": \"A collection of accessible components built for use with Shadcn.\"\n  },\n  {\n    \"name\": \"@wigggle-ui\",\n    \"homepage\": \"https://wigggle-ui.vercel.app\",\n    \"url\": \"https://wigggle-ui.vercel.app/r/{name}.json\",\n    \"description\": \"A beautiful collection of copy-and-paste widgets for your next project.\"\n  },\n  {\n    \"name\": \"@zippystarter\",\n    \"homepage\": \"https://zippystarter.com\",\n    \"url\": \"https://zippystarter.com/r/{name}.json\",\n    \"description\": \"Expertly crafted blocks, components & themes for shadcn/ui.\"\n  },\n  {\n    \"name\": \"@uicapsule\",\n    \"homepage\": \"https://uicapsule.com\",\n    \"url\": \"https://uicapsule.com/r/{name}.json\",\n    \"description\": \"A curated collection of components that spark joy. Featuring interactive concepts, design experiments, and components in the intersection of AI/UI.\"\n  },\n  {\n    \"name\": \"@ui-layouts\",\n    \"homepage\": \"https://ui-layouts.com/\",\n    \"url\": \"https://ui-layouts.com/r/{name}.json\",\n    \"description\": \"UI Layouts offers components, effects, design tools, and ready-made blocks that make building modern interfaces more efficient—built with React, Next.js, Tailwind CSS, and shadcn/ui.\"\n  },\n  {\n    \"name\": \"@pureui\",\n    \"homepage\": \"https://pure.kam-ui.com/\",\n    \"url\": \"https://pure.kam-ui.com/r/{name}.json\",\n    \"description\": \"Pure UI is a curated collection of refined, animated, and accessible components built with Base UI, Tailwind CSS, Motion, and other high-quality open source libraries.\"\n  },\n  {\n    \"name\": \"@tailwind-builder\",\n    \"homepage\": \"https://tailwindbuilder.ai/\",\n    \"url\": \"https://tailwindbuilder.ai/r/{name}.json\",\n    \"description\": \"Tailwind Builder is a collection of free ui blocks and components and provide ai tools to generate production-ready forms, tables, and charts in seconds. Built with React, Next.js, Tailwind & ShadCN.\"\n  },\n  {\n    \"name\": \"@tailwind-admin\",\n    \"homepage\": \"https://tailwind-admin.com/\",\n    \"url\": \"https://tailwind-admin.com/r/{name}.json\",\n    \"description\": \"Tailwind Builder provides free tailwind admin dashboard templates, components and ui-blocks built with React, Next.js, Tailwind CSS, and shadcn/ui to help you build admin panels quickly and efficiently.\"\n  },\n  {\n    \"name\": \"@forgeui\",\n    \"homepage\": \"https://forgeui.in/\",\n    \"url\": \"https://forgeui.in/r/{name}.json\",\n    \"description\": \"Beautifully designed components that you can copy and paste into your apps. Accessible. Customizable. Open Source.\"\n  },\n  {\n    \"name\": \"@skiper-ui\",\n    \"homepage\": \"https://skiper-ui.com/\",\n    \"url\": \"https://skiper-ui.com/registry/{name}.json\",\n    \"description\": \"Brand new uncommon components for your Next.js project. Use with ease through shadcn CLI 3.0, featuring fast-growing components and collections that are easy to edit and use.\"\n  },\n  {\n    \"name\": \"@animbits\",\n    \"homepage\": \"https://animbits.dev\",\n    \"url\": \"https://animbits.dev/r/{name}.json\",\n    \"description\": \"AnimBits is a collection animated UI components for React that use Framer Motion. The components provided include buttons, cards, text, icons, lists, loaders, and page transitions, animation hooks all of which have general-purpose effects that are not flashy and easy on the eyes, making them easy to use.\"\n  },\n  {\n    \"name\": \"@shadcn-space\",\n    \"homepage\": \"https://shadcnspace.com\",\n    \"url\": \"https://shadcnspace.com/r/{name}.json\",\n    \"description\": \"ShadcnSpace is a collection of extra-ordinary, highly customizable shadcn/ui components, blocks, and themes to build modern UIs with speed and clarity.\"\n  },\n  {\n    \"name\": \"@shadcn-dashboard\",\n    \"homepage\": \"https://shadcn-dashboard.com\",\n    \"url\": \"https://shadcn-dashboard.com/r/{name}.json\",\n    \"description\": \"ShadcnDashboard is a collection of modern, production-ready dashboard layouts, components, and UI patterns built on top of shadcn/ui and Tailwind CSS. It’s designed to help developers build clean, scalable, and data-driven dashboards faster—without compromising on performance, accessibility, or customization.\"\n  },\n  {\n    \"name\": \"@icons-animated\",\n    \"homepage\": \"https://icons.lndev.me\",\n    \"url\": \"https://icons.lndev.me/r/{name}.json\",\n    \"description\": \"An open-source library of meticulously animated icons (Tabler, Phosphor, and more) for your projects, inspired by lucide-animated.com\"\n  },\n  {\n    \"name\": \"@heroicons-animated\",\n    \"homepage\": \"https://www.heroicons-animated.com/\",\n    \"url\": \"https://www.heroicons-animated.com/r/{name}.json\",\n    \"description\": \"An open-source collection of 316 beautifully animated heroicons for your projects.\"\n  },\n  {\n    \"name\": \"@darx\",\n    \"homepage\": \"https://darshitdev.in/arts\",\n    \"url\": \"https://darshitdev.in/r/{name}.json\",\n    \"description\": \"Magic 3D Tabs component featuring mouse-interactive 3D rotation, floating particles background effect, and smooth spring animations.\"\n  },\n  {\n    \"name\": \"@beste-ui\",\n    \"homepage\": \"https://ui.beste.co\",\n    \"url\": \"https://ui.beste.co/r/{name}.json\",\n    \"description\": \"Production-ready UI blocks for landing pages, dashboards, and web apps.\"\n  },\n  {\n    \"name\": \"@tokenui\",\n    \"homepage\": \"https://www.tokenui.dev\",\n    \"url\": \"https://www.tokenui.dev/r/{name}.json\",\n    \"description\": \"Beautiful, interactive documentation components for your design tokens following industry standards.\"\n  },\n  {\n    \"name\": \"@lumiui\",\n    \"homepage\": \"https://www.lumiui.dev\",\n    \"url\": \"https://www.lumiui.dev/r/{name}.json\",\n    \"description\": \"Composable React components powered by Base UI and Tailwind CSS — Build fast, customize everything.\"\n  },\n  {\n    \"name\": \"@uselayouts\",\n    \"homepage\": \"https://uselayouts.com\",\n    \"url\": \"https://uselayouts.com/r/{name}.json\",\n    \"description\": \"A collection of premium animated React components and micro-interactions built with Motion for building fluid, professional interfaces.\"\n  },\n  {\n    \"name\": \"@joyco\",\n    \"homepage\": \"https://registry.joyco.studio\",\n    \"url\": \"https://registry.joyco.studio/r/{name}.json\",\n    \"description\": \"Components including MobileMenu, ScrollArea with gradients, Chat UI, HLSVideoPlayer, and Marquee.\"\n  },\n  {\n    \"name\": \"@gooseui\",\n    \"homepage\": \"https://gooseui.pro\",\n    \"url\": \"https://gooseui.pro/r/{name}.json\",\n    \"description\": \"Open source component library with animated components, beautiful effects, and custom toast notifications. Built with Radix UI and Tailwind CSS.\"\n  },\n  {\n    \"name\": \"@baselayer\",\n    \"homepage\": \"https://www.baselayer.dev\",\n    \"url\": \"https://www.baselayer.dev/r/{name}.json\",\n    \"description\": \"A collection of components built on React Aria, Tailwind CSS, and tailwind-variants.\"\n  },\n  {\n    \"name\": \"@jolyui\",\n    \"homepage\": \"https://www.jolyui.dev\",\n    \"url\": \"https://www.jolyui.dev/r/{name}.json\",\n    \"description\": \"JolyUI is a modern React component library built with TypeScript and Tailwind CSS.\"\n  },\n  {\n    \"name\": \"@fab-ui\",\n    \"homepage\": \"https://fab-ui.com\",\n    \"url\": \"https://fab-ui.com/r/{name}.json\",\n    \"description\": \"A collection of beautifully designed UI components for building modern web applications.\"\n  },\n  {\n    \"name\": \"@asanshay\",\n    \"homepage\": \"https://ds.asanshay.com\",\n    \"url\": \"https://ds.asanshay.com/r/{name}.json\",\n    \"description\": \"Clean, beautiful, and simple UI primitives and AI elements.\"\n  },\n  {\n    \"name\": \"@headcodecms\",\n    \"homepage\": \"https://headcodecms.com\",\n    \"url\": \"https://headcodecms.com/r/{name}.json\",\n    \"description\": \"A Minimalistic Web CMS for Next.js, optimized for Cache Components.\"\n  },\n  {\n    \"name\": \"@typedora-ui\",\n    \"homepage\": \"https://typedora-ui.netlify.app\",\n    \"url\": \"https://typedora-ui.netlify.app/r/{name}.json\",\n    \"description\": \"Typedora UI is a next-generation extension layer for shadcn/ui, designed to bring full type-safety to your UI components.\"\n  },\n  {\n    \"name\": \"@sona-ui\",\n    \"homepage\": \"https://sona-ui.vercel.app\",\n    \"url\": \"https://sona-ui.vercel.app/r/{name}.json\",\n    \"description\": \"A modern UI component library built with React and TailwindCSS to help you build beautiful and accessible web applications faster.\"\n  },\n  {\n    \"name\": \"@soundcn\",\n    \"homepage\": \"https://soundcn.xyz\",\n    \"url\": \"https://soundcn.xyz/r/{name}.json\",\n    \"description\": \"Large collection of game, interface, retro, and voice sound effects for web applications\"\n  },\n  {\n    \"name\": \"@pixelact-ui\",\n    \"homepage\": \"https://pixelactui.com\",\n    \"url\": \"https://pixelactui.com/r/{name}.json\",\n    \"description\": \"Playful pixel art style components library built on top of shadcn. Perfect for retro style projects and games.\"\n  },\n  {\n    \"name\": \"@emerald-ui\",\n    \"homepage\": \"https://emerald-ui.com\",\n    \"url\": \"https://emerald-ui.com/r/{name}.json\",\n    \"description\": \"Emerald UI - collection of components built with Motion, GSAP, Tailwind CSS and shadcn/ui.\"\n  },\n  {\n    \"name\": \"@iconiq\",\n    \"homepage\": \"https://iconiqui.com\",\n    \"url\": \"https://iconiqui.com/r/{name}.json\",\n    \"description\": \"Iconiq is a collection of icons designed for web applications. It is a modern, clean, and minimalistic icon set that is perfect for web applications.\"\n  },\n  {\n    \"name\": \"@fonttrio\",\n    \"homepage\": \"https://www.fonttrio.xyz\",\n    \"url\": \"https://www.fonttrio.xyz/r/{name}.json\",\n    \"description\": \"Curated font pairing registry for shadcn. Three fonts. One command. Install perfectly configured typography (heading + body + mono) with shadcn add. Includes editorial-grade type scales, CSS variables, and a live preview site.\"\n  },\n  {\n    \"name\": \"@componentry\",\n    \"homepage\": \"https://componentry.fun\",\n    \"url\": \"https://componentry.fun/r/{name}.json\",\n    \"description\": \"Beautiful, interactive React + Tailwind components for modern product UIs.\"\n  },\n  {\n    \"name\": \"@paletteui\",\n    \"homepage\": \"https://paletteui.xyz\",\n    \"url\": \"https://paletteui.xyz/r/{name}.json\",\n    \"description\": \"Curated OKLCH color themes for shadcn/ui + visual theme editor with CSS, Tailwind v4, and Figma export.\"\n  },\n  {\n    \"name\": \"@fluid\",\n    \"homepage\": \"https://www.fluidfunctionalism.com\",\n    \"url\": \"https://www.fluidfunctionalism.com/r/{name}.json\",\n    \"description\": \"Fluid components used exclusively in service of functional clarity. Proximity hover, spring animations, font-weight transitions, and animated focus rings.\"\n  },\n  {\n    \"name\": \"@gammaui\",\n    \"homepage\": \"https://www.gammaui.com\",\n    \"url\": \"https://www.gammaui.com/r/{name}.json\",\n    \"description\": \"Beautifully designed landing page components built with React & Tailwind CSS & Motion.\"\n  },\n  {\n    \"name\": \"@flx\",\n    \"homepage\": \"https://ui.flexnative.com\",\n    \"url\": \"https://ui.flexnative.com/r/{name}.json\",\n    \"description\": \"A collection of customizable UI blocks with interactive live previews\"\n  },\n  {\n    \"name\": \"@nexus-ui\",\n    \"homepage\": \"https://nexus-ui.dev\",\n    \"url\": \"https://nexus-ui.dev/r/{name}.json\",\n    \"description\": \"Open-source component library of composable, copy-paste primitives for building AI interfaces (chat, streaming, multimodal)\"\n  },\n  {\n    \"name\": \"@sabraman\",\n    \"homepage\": \"https://sabraman.ru/components\",\n    \"url\": \"https://sabraman.ru/r/{name}.json\",\n    \"description\": \"Legacy skeuomorphic UI components and blocks for shadcn.\"\n  }\n]\n"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/base-lyra/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion multiple className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            multiple\\n            defaultValue={[\\\"plans\\\"]}\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Accordion as AccordionPrimitive } from \\\"@base-ui/react/accordion\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\\"flex w-full flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Trigger.Props) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-none border border-transparent py-2.5 text-left text-xs font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Panel.Props) {\\n  return (\\n    <AccordionPrimitive.Panel\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden text-xs data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Panel>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger render={<Button variant=\\\"outline\\\">Small</Button>} />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default (Media)</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Small (Media)</Button>}\\n        />\\n\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"destructive\\\">Delete Chat</Button>}\\n        />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger render={<Button />}>\\n                Open Alert Dialog\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"@base-ui/react/alert-dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\n\\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: AlertDialogPrimitive.Backdrop.Props) {\\n  return (\\n    <AlertDialogPrimitive.Backdrop\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Popup.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Popup\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-none bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-10 items-center justify-center rounded-none bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  return (\\n    <Button\\n      data-slot=\\\"alert-dialog-action\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Close.Props &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <AlertDialogPrimitive.Close\\n      data-slot=\\\"alert-dialog-cancel\\\"\\n      className={cn(className)}\\n      render={<Button variant={variant} size={size} />}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/base-lyra/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/base-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\n        \\\"absolute top-[calc(--spacing(1.25))] right-[calc(--spacing(1.25))]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/base-lyra/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/aspect-ratio.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction AspectRatio({\\n  ratio,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { ratio: number }) {\\n  return (\\n    <div\\n      data-slot=\\\"aspect-ratio\\\"\\n      style={\\n        {\\n          \\\"--ratio\\\": ratio,\\n        } as React.CSSProperties\\n      }\\n      className={cn(\\\"relative aspect-(--ratio)\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-lyra/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"@base-ui/react/avatar\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AvatarPrimitive.Root.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: AvatarPrimitive.Fallback.Props) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-lyra/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/base-lyra/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"secondary\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"destructive\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"ghost\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/badge.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-none border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"span\\\"> & VariantProps<typeof badgeVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"span\\\",\\n    props: mergeProps<\\\"span\\\">(\\n      {\\n        className: cn(badgeVariants({ variant }), className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"badge\\\",\\n      variant,\\n    },\\n  })\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\" />}\\n              >\\n                <BreadcrumbEllipsis />\\n                <span className=\\\"sr-only\\\">Toggle menu</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Home</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Components</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-xs wrap-break-word text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\\"transition-colors hover:text-foreground\\\", className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"breadcrumb-link\\\",\\n    },\\n  })\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-5 items-center justify-center [&>svg]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/button-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <a href=\\\"#\\\" className={buttonVariants()}>\\n          Link\\n        </a>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-lyra/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText render={<Label htmlFor=\\\"input-text\\\" />}>\\n            GPU Size\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeX\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nconst currencyItems = [\\n  { label: \\\"$\\\", value: \\\"$\\\" },\\n  { label: \\\"€\\\", value: \\\"€\\\" },\\n  { label: \\\"£\\\", value: \\\"£\\\" },\\n]\\n\\nfunction ButtonGroupWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select items={currencyItems} defaultValue={currencyItems[0]}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {currencyItems.map((item) => (\\n                  <SelectItem key={item.value} value={item}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button\\n          variant=\\\"outline\\\"\\n          size=\\\"icon\\\"\\n          className=\\\"w-12\\\"\\n          render={<span />}\\n          nativeButton={false}\\n        >\\n          1.2K\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nconst durationItems = [\\n  { label: \\\"Hours\\\", value: \\\"hours\\\" },\\n  { label: \\\"Days\\\", value: \\\"days\\\" },\\n  { label: \\\"Weeks\\\", value: \\\"weeks\\\" },\\n]\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select items={durationItems} defaultValue={durationItems[0]}>\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              {durationItems.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger render={<InputGroupAddon align=\\\"inline-end\\\" />}>\\n                <IconPlaceholder\\n                  lucide=\\\"AudioLinesIcon\\\"\\n                  tabler=\\\"IconHeadphones\\\"\\n                  hugeicons=\\\"AudioWave01Icon\\\"\\n                  phosphor=\\\"MicrophoneIcon\\\"\\n                  remixicon=\\\"RiMicLine\\\"\\n                />\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft02Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/button-group.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch rounded-none *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-none [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"*:data-slot:rounded-r-none [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\\\",\\n        vertical:\\n          \\\"flex-col *:data-slot:rounded-b-none [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex items-center gap-2 rounded-none border bg-muted px-2.5 text-xs font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"button-group-text\\\",\\n    },\\n  })\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/button.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button as ButtonPrimitive } from \\\"@base-ui/react/button\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-none border border-transparent bg-clip-padding text-xs font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\\\",\\n        xs: \\\"h-6 gap-1 rounded-none px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-7 gap-1 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        lg: \\\"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\\\",\\n        icon: \\\"size-8\\\",\\n        \\\"icon-xs\\\": \\\"size-6 rounded-none [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\": \\\"size-7 rounded-none\\\",\\n        \\\"icon-lg\\\": \\\"size-9\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\\n  return (\\n    <ButtonPrimitive\\n      data-slot=\\\"button\\\"\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/base-lyra/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-lyra/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-lyra/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\" />}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"CalendarIcon\\\"\\n            tabler=\\\"IconCalendar\\\"\\n            hugeicons=\\\"CalendarIcon\\\"\\n            phosphor=\\\"CalendarBlankIcon\\\"\\n            remixicon=\\\"RiCalendarLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Open Calendar\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-simple\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-range\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date?.from ? (\\n              date.to ? (\\n                <>\\n                  {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                  {format(date.to, \\\"LLL dd, y\\\")}\\n                </>\\n              ) : (\\n                format(date.from, \\\"LLL dd, y\\\")\\n              )\\n            ) : (\\n              <span>Pick a date</span>\\n            )}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-with-dropdowns-desktop\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-2 [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-4 overflow-hidden rounded-none bg-card py-4 text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-none px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium group-data-[size=sm]/card:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-4 group-data-[size=sm]/card:px-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-none border-t p-4 group-data-[size=sm]/card:p-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/base-lyra/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-lyra/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-none border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-lyra/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-lyra/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox as CheckboxPrimitive } from \\\"@base-ui/react/checkbox\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-none border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/base-lyra/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {fileItem.name}\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              {isOpen ? (\\n                <IconPlaceholder\\n                  lucide=\\\"MinimizeIcon\\\"\\n                  tabler=\\\"IconMinimize\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              ) : (\\n                <IconPlaceholder\\n                  lucide=\\\"MaximizeIcon\\\"\\n                  tabler=\\\"IconMaximize\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              )}\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"@base-ui/react/collapsible\\\"\\n\\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\\n  return (\\n    <CollapsiblePrimitive.Trigger data-slot=\\\"collapsible-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\\n  return (\\n    <CollapsiblePrimitive.Panel data-slot=\\\"collapsible-content\\\" {...props} />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/base-lyra/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-lyra/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxSides />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Combobox key={side} items={frameworks}>\\n            <ComboboxInput\\n              placeholder={side.replace(\\\"-\\\", \\\" \\\")}\\n              className=\\\"w-32 **:data-[slot=input-group-control]:capitalize\\\"\\n            />\\n            <ComboboxContent side={side}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen}>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst items = [\\n  {\\n    label: \\\"Select a framework\\\",\\n    value: null,\\n  },\\n  {\\n    label: \\\"React\\\",\\n    value: \\\"react\\\",\\n  },\\n  {\\n    label: \\\"Vue\\\",\\n    value: \\\"vue\\\",\\n  },\\n  {\\n    label: \\\"Angular\\\",\\n    value: \\\"angular\\\",\\n  },\\n  {\\n    label: \\\"Svelte\\\",\\n    value: \\\"svelte\\\",\\n  },\\n  {\\n    label: \\\"Solid\\\",\\n    value: \\\"solid\\\",\\n  },\\n  {\\n    label: \\\"Preact\\\",\\n    value: \\\"preact\\\",\\n  },\\n  {\\n    label: \\\"Next.js\\\",\\n    value: \\\"next.js\\\",\\n  },\\n]\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select items={items}>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            render={<ComboboxTrigger />}\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          />\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-2 py-2 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-xs text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-8 flex-wrap items-center gap-1 rounded-none border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-xs transition-colors focus-within:border-ring focus-within:ring-1 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-1 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-none bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/base-lyra/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-none bg-popover text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: Omit<React.ComponentProps<typeof Dialog>, \\\"children\\\"> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n  children: React.ReactNode\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-none p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"border-b pb-0\\\">\\n      <InputGroup className=\\\"h-8 border-none border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-xs outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-4 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-0 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none in-data-[slot=dialog-content]:rounded-none! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/base-lyra/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/base-lyra/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger render={<Button />}>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Show Dialog\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst roleItems = [\\n  { label: \\\"Developer\\\", value: \\\"developer\\\" },\\n  { label: \\\"Designer\\\", value: \\\"designer\\\" },\\n  { label: \\\"Manager\\\", value: \\\"manager\\\" },\\n  { label: \\\"Other\\\", value: \\\"other\\\" },\\n]\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreVerticalIcon\\\"\\n                  tabler=\\\"IconDotsVertical\\\"\\n                  hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                  remixicon=\\\"RiMore2Line\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select items={roleItems} defaultValue={null}>\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        {roleItems.map((item) => (\\n                          <SelectItem key={item.value} value={item.value}>\\n                            {item.label}\\n                          </SelectItem>\\n                        ))}\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <ContextMenu key={side}>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] items-center justify-center rounded-lg border p-4 text-sm capitalize\\\">\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </ContextMenuTrigger>\\n            <ContextMenuContent side={side}>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Back</ContextMenuItem>\\n                <ContextMenuItem>Forward</ContextMenuItem>\\n                <ContextMenuItem>Reload</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"@base-ui/react/context-menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Trigger.Props) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = 4,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  ...props\\n}: ContextMenuPrimitive.Popup.Props &\\n  Pick<\\n    ContextMenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <ContextMenuPrimitive.Popup\\n          data-slot=\\\"context-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ContextMenuPrimitive.Positioner>\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.GroupLabel\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-2 text-xs text-muted-foreground data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: ContextMenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuRoot data-slot=\\\"context-menu-sub\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuContent>) {\\n  return (\\n    <ContextMenuContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className=\\\"cn-menu-target cn-menu-translucent shadow-lg\\\"\\n      side=\\\"right\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: ContextMenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Separator.Props) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-lyra/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n              render={<a href=\\\"#\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CommandIcon\\\"\\n                tabler=\\\"IconInnerShadowTop\\\"\\n                hugeicons=\\\"CommandIcon\\\"\\n                phosphor=\\\"CommandIcon\\\"\\n                remixicon=\\\"RiCommandLine\\\"\\n                className=\\\"size-5!\\\"\\n              />\\n              <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-lyra/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-lyra/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-lyra/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            multiple={false}\\n            value={timeRange ? [timeRange] : []}\\n            onValueChange={(value) => {\\n              setTimeRange(value[0] ?? \\\"90d\\\")\\n            }}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select\\n            value={timeRange}\\n            onValueChange={(value) => {\\n              if (value !== null) {\\n                setTimeRange(value)\\n              }\\n            }}\\n          >\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-lyra/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/base-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-lyra/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/base-lyra/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-lyra/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-lyra/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-lyra/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={table.getIsAllPageRowsSelected()}\\n          indeterminate={\\n            table.getIsSomePageRowsSelected() &&\\n            !table.getIsAllPageRowsSelected()\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select\\n            items={[\\n              { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n              { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n            ]}\\n          >\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"flex size-8 text-muted-foreground data-open:bg-muted\\\"\\n              size=\\\"icon\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"EllipsisVerticalIcon\\\"\\n            tabler=\\\"IconDotsVertical\\\"\\n            hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeVerticalIcon\\\"\\n            remixicon=\\\"RiMore2Line\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Open menu</span>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select\\n          defaultValue=\\\"outline\\\"\\n          items={[\\n            { label: \\\"Outline\\\", value: \\\"outline\\\" },\\n            { label: \\\"Past Performance\\\", value: \\\"past-performance\\\" },\\n            { label: \\\"Key Personnel\\\", value: \\\"key-personnel\\\" },\\n            { label: \\\"Focus Documents\\\", value: \\\"focus-documents\\\" },\\n          ]}\\n        >\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"Columns3Icon\\\"\\n                tabler=\\\"IconLayoutColumns\\\"\\n                hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                phosphor=\\\"ColumnsIcon\\\"\\n                remixicon=\\\"RiLayoutColumnLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Columns\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n                items={[10, 20, 30, 40, 50].map((pageSize) => ({\\n                  label: `${pageSize}`,\\n                  value: `${pageSize}`,\\n                }))}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\nconst chartData = [\\n  {\\n    month: \\\"January\\\",\\n    desktop: 186,\\n    mobile: 80,\\n  },\\n  {\\n    month: \\\"February\\\",\\n    desktop: 305,\\n    mobile: 200,\\n  },\\n  {\\n    month: \\\"March\\\",\\n    desktop: 237,\\n    mobile: 120,\\n  },\\n  {\\n    month: \\\"April\\\",\\n    desktop: 73,\\n    mobile: 190,\\n  },\\n  {\\n    month: \\\"May\\\",\\n    desktop: 209,\\n    mobile: 130,\\n  },\\n  {\\n    month: \\\"June\\\",\\n    desktop: 214,\\n    mobile: 140,\\n  },\\n]\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select\\n                  defaultValue={item.type}\\n                  items={[\\n                    { label: \\\"Table of Contents\\\", value: \\\"Table of Contents\\\" },\\n                    { label: \\\"Executive Summary\\\", value: \\\"Executive Summary\\\" },\\n                    {\\n                      label: \\\"Technical Approach\\\",\\n                      value: \\\"Technical Approach\\\",\\n                    },\\n                    { label: \\\"Design\\\", value: \\\"Design\\\" },\\n                    { label: \\\"Capabilities\\\", value: \\\"Capabilities\\\" },\\n                    { label: \\\"Focus Documents\\\", value: \\\"Focus Documents\\\" },\\n                    { label: \\\"Narrative\\\", value: \\\"Narrative\\\" },\\n                    { label: \\\"Cover Page\\\", value: \\\"Cover Page\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select\\n                  defaultValue={item.status}\\n                  items={[\\n                    { label: \\\"Done\\\", value: \\\"Done\\\" },\\n                    { label: \\\"In Progress\\\", value: \\\"In Progress\\\" },\\n                    { label: \\\"Not Started\\\", value: \\\"Not Started\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select\\n                defaultValue={item.reviewer}\\n                items={[\\n                  { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n                  { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n                  { label: \\\"Emily Whalen\\\", value: \\\"Emily Whalen\\\" },\\n                ]}\\n              >\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\" />\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar className=\\\"size-8 rounded-lg grayscale\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs text-foreground/70\\\">\\n                {user.email}\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar className=\\\"size-8\\\">\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                      {user.email}\\n                    </span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/base-lyra/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 h-4 data-vertical:self-auto\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/base-lyra/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/base-lyra/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-lyra/ui/item\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-lyra/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/base-lyra/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-lyra/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-lyra/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback(\\n    (value: number | readonly number[]) => {\\n      if (typeof value === \\\"number\\\") {\\n        setSliderValue([value])\\n      } else {\\n        setSliderValue([...value])\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n                    <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                    <span className=\\\"block md:hidden\\\">Dialog</span>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger\\n                      render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronUpIcon\\\"\\n                        tabler=\\\"IconChevronUp\\\"\\n                        hugeicons=\\\"ArrowUp01Icon\\\"\\n                        phosphor=\\\"CaretUpIcon\\\"\\n                        remixicon=\\\"RiArrowUpSLine\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/base-lyra/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-lyra/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-lyra/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport { Switch } from \\\"@/registry/base-lyra/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-lyra/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/base-lyra/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n            Edit Profile\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n                Cancel\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Scrollable Content\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Sticky Footer\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"Auto\\\", value: \\\"auto\\\" },\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nconst themes = [\\n  { label: \\\"Light\\\", value: \\\"light\\\" },\\n  { label: \\\"Dark\\\", value: \\\"dark\\\" },\\n  { label: \\\"System\\\", value: \\\"system\\\" },\\n]\\n\\nconst accents = [\\n  { label: \\\"Default\\\", value: \\\"default\\\" },\\n  { label: \\\"Red\\\", value: \\\"red\\\" },\\n  { label: \\\"Blue\\\", value: \\\"blue\\\" },\\n  { label: \\\"Green\\\", value: \\\"green\\\" },\\n  { label: \\\"Purple\\\", value: \\\"purple\\\" },\\n  { label: \\\"Pink\\\", value: \\\"pink\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Chat Settings\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select\\n                          items={themes}\\n                          value={theme}\\n                          onValueChange={(value) => setTheme(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {themes.map((theme) => (\\n                                <SelectItem\\n                                  key={theme.value}\\n                                  value={theme.value}\\n                                >\\n                                  {theme.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          items={accents}\\n                          value={accentColor}\\n                          onValueChange={(value) =>\\n                            setAccentColor(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {accents.map((accent) => (\\n                                <SelectItem\\n                                  key={accent.value}\\n                                  value={accent.value}\\n                                >\\n                                  {accent.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          items={spokenLanguages}\\n                          value={spokenLanguage}\\n                          onValueChange={(value) =>\\n                            setSpokenLanguage(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select\\n                          items={voices}\\n                          value={voice}\\n                          onValueChange={(value) => setVoice(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger\\n                              render={<InputGroupButton size=\\\"icon-xs\\\" />}\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"InfoIcon\\\"\\n                                tabler=\\\"IconInfoCircle\\\"\\n                                hugeicons=\\\"AlertCircleIcon\\\"\\n                                phosphor=\\\"InfoIcon\\\"\\n                                remixicon=\\\"RiInformationLine\\\"\\n                              />\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: DialogPrimitive.Backdrop.Props) {\\n  return (\\n    <DialogPrimitive.Backdrop\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: DialogPrimitive.Popup.Props & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Popup\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-none bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-2 right-2\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Popup>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-left\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close render={<Button variant=\\\"outline\\\" />}>\\n          Close\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: DialogPrimitive.Description.Props) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nexport {\\n  DirectionProvider,\\n  useDirection,\\n} from \\\"@base-ui/react/direction-provider\\\"\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n      \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-lyra/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-xs/relaxed data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-none data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-none data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-none data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-none data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-none bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuSides />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>GitHub</DropdownMenuItem>\\n          <DropdownMenuItem>Support</DropdownMenuItem>\\n          <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <DropdownMenu key={side}>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent side={side}>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>Profile</DropdownMenuItem>\\n                <DropdownMenuItem>Billing</DropdownMenuItem>\\n                <DropdownMenuItem>Settings</DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"UserIcon\\\"\\n              tabler=\\\"IconUser\\\"\\n              hugeicons=\\\"UserIcon\\\"\\n              phosphor=\\\"UserIcon\\\"\\n              remixicon=\\\"RiUserLine\\\"\\n            />\\n            Profile\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"CreditCardIcon\\\"\\n              tabler=\\\"IconCreditCard\\\"\\n              hugeicons=\\\"CreditCardIcon\\\"\\n              phosphor=\\\"CreditCardIcon\\\"\\n              remixicon=\\\"RiBankCardLine\\\"\\n            />\\n            Billing\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n            Settings\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"LogOutIcon\\\"\\n              tabler=\\\"IconLogout\\\"\\n              hugeicons=\\\"LogoutIcon\\\"\\n              phosphor=\\\"SignOutIcon\\\"\\n              remixicon=\\\"RiLogoutBoxLine\\\"\\n            />\\n            Log out\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            Log out\\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuItem>Email</DropdownMenuItem>\\n                  <DropdownMenuItem>Message</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>More...</DropdownMenuItem>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Checkboxes\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Radio Group\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Notifications\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Payment Method\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Actions\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"PencilIcon\\\"\\n              tabler=\\\"IconPencil\\\"\\n              hugeicons=\\\"EditIcon\\\"\\n              phosphor=\\\"PencilIcon\\\"\\n              remixicon=\\\"RiPencilLine\\\"\\n            />\\n            Edit\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"ShareIcon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n            Share\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ArchiveIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n            Archive\\n          </DropdownMenuItem>\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"DeleteIcon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n            Delete\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuItem>\\n        <IconPlaceholder\\n          lucide=\\\"LogOutIcon\\\"\\n          tabler=\\\"IconLogout\\\"\\n          hugeicons=\\\"LogoutIcon\\\"\\n          phosphor=\\\"SignOutIcon\\\"\\n          remixicon=\\\"RiLogoutBoxLine\\\"\\n        />\\n        Sign Out\\n      </DropdownMenuItem>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n              <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                shadcn@example.com\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto text-muted-foreground\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--anchor-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Menu\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ClipboardPasteIcon\\\"\\n                  tabler=\\\"IconClipboard\\\"\\n                  hugeicons=\\\"ClipboardIcon\\\"\\n                  phosphor=\\\"ClipboardIcon\\\"\\n                  remixicon=\\\"RiClipboardLine\\\"\\n                />\\n                Paste\\n              </DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                    <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                    <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Complex Menu\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\\n  return <MenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\\n  return <MenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n}\\n\\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\\n  return <MenuPrimitive.Trigger data-slot=\\\"dropdown-menu-trigger\\\" {...props} />\\n}\\n\\nfunction DropdownMenuContent({\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  className,\\n  ...props\\n}: MenuPrimitive.Popup.Props &\\n  Pick<\\n    MenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <MenuPrimitive.Portal>\\n      <MenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <MenuPrimitive.Popup\\n          data-slot=\\\"dropdown-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </MenuPrimitive.Positioner>\\n    </MenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\\n  return <MenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: MenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.GroupLabel\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-2 text-xs text-muted-foreground data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: MenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\\n  return <MenuPrimitive.SubmenuRoot data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: MenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </MenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  align = \\\"start\\\",\\n  alignOffset = -3,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent w-auto min-w-[96px] rounded-none bg-popover text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      align={align}\\n      alignOffset={alignOffset}\\n      side={side}\\n      sideOffset={sideOffset}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <MenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: MenuPrimitive.Separator.Props) {\\n  return (\\n    <MenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-lyra/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-lyra/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-none border-dashed p-6 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-8 shrink-0 items-center justify-center rounded-none bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-xs text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-lyra/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/base-lyra/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-lyra/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-lyra/ui/native-select\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-lyra/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport { Slider } from \\\"@/registry/base-lyra/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-lyra/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-lyra/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  const basicItems = [\\n    { label: \\\"Choose an option\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const countryItems = [\\n    { label: \\\"Select your country\\\", value: null },\\n    { label: \\\"United States\\\", value: \\\"us\\\" },\\n    { label: \\\"United Kingdom\\\", value: \\\"uk\\\" },\\n    { label: \\\"Canada\\\", value: \\\"ca\\\" },\\n  ]\\n  const timezoneItems = [\\n    { label: \\\"Select timezone\\\", value: null },\\n    { label: \\\"UTC\\\", value: \\\"utc\\\" },\\n    { label: \\\"Eastern Time\\\", value: \\\"est\\\" },\\n    { label: \\\"Pacific Time\\\", value: \\\"pst\\\" },\\n  ]\\n  const invalidItems = [\\n    { label: \\\"This field has an error\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const disabledItems = [\\n    { label: \\\"Cannot select\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select items={countryItems}>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {countryItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select items={timezoneItems}>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {timezoneItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select items={invalidItems}>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {invalidItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select items={disabledItems} disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {disabledItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={(value) => setVolume(value as number[])}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={(value) => setBrightness(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={(value) => setTemperature(value as number[])}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={(value) => setPriceRange(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={(value) => setColorBalance(value as number[])}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  const basicItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Orange\\\", value: \\\"orange\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-2.5 font-medium data-[variant=label]:text-xs data-[variant=legend]:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-2 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-xs/relaxed leading-snug group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-xs/relaxed leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-xs group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-xs font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/base-lyra/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\n  \\\"inline-start\\\",\\n  \\\"left\\\",\\n  \\\"top\\\",\\n  \\\"bottom\\\",\\n  \\\"right\\\",\\n  \\\"inline-end\\\",\\n] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-2\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side}>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side}>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side.replace(\\\"-\\\", \\\" \\\")} side\\n                  of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Hover me\\n            </HoverCardTrigger>\\n            <HoverCardContent>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { PreviewCard as PreviewCardPrimitive } from \\\"@base-ui/react/preview-card\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\\n  return <PreviewCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\\n  return (\\n    <PreviewCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 4,\\n  ...props\\n}: PreviewCardPrimitive.Popup.Props &\\n  Pick<\\n    PreviewCardPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PreviewCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <PreviewCardPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PreviewCardPrimitive.Popup\\n          data-slot=\\\"hover-card-content\\\"\\n          className={cn(\\n            \\\"z-50 w-64 origin-(--transform-origin) rounded-none bg-popover p-2.5 text-xs/relaxed text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PreviewCardPrimitive.Positioner>\\n    </PreviewCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-lyra/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-lyra/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-lyra/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-lyra/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/base-lyra/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/base-lyra/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\" />\\n                  }\\n                >\\n                  {country}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDownIcon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger render={<InputGroupAddon />} nativeButton={false}>\\n                <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/base-lyra/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-none border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-1 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-xs font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-none [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-xs shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"gap-1\\\",\\n        \\\"icon-xs\\\": \\\"size-6 rounded-none p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-7 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\" | \\\"type\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants> & {\\n    type?: \\\"button\\\" | \\\"submit\\\" | \\\"reset\\\"\\n  }) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-xs text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-lyra/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-none has-aria-invalid:border-destructive has-aria-invalid:ring-1 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-8 items-center justify-center border-y border-r border-input text-xs transition-all outline-none first:rounded-none first:border-l last:rounded-none aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-1 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Input as InputPrimitive } from \\\"@base-ui/react/input\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <InputPrimitive\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-8 w-full min-w-0 rounded-none border border-input bg-transparent px-2.5 py-1 text-xs transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-xs file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 md:text-xs dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/base-lyra/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-none border text-xs transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-2.5 px-3 py-2.5\\\",\\n        sm: \\\"gap-2.5 px-3 py-2.5\\\",\\n        xs: \\\"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(itemVariants({ variant, size, className })),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"item\\\",\\n      variant,\\n      size,\\n    },\\n  })\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-none group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-xs font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-xs/relaxed font-normal text-muted-foreground group-data-[size=xs]/item:text-xs/relaxed [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-lyra/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button size=\\\"icon-sm\\\" variant=\\\"outline\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-none bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-lyra/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/base-lyra/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Label({ className, ...props }: React.ComponentProps<\\\"label\\\">) {\\n  return (\\n    <label\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-xs leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-lyra/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-lyra/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-lyra/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-lyra/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-lyra/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/base-lyra/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarSides />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Menubar key={side}>\\n            <MenubarMenu>\\n              <MenubarTrigger className=\\\"capitalize\\\">\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </MenubarTrigger>\\n              <MenubarContent side={side}>\\n                <MenubarGroup>\\n                  <MenubarItem>New Tab</MenubarItem>\\n                  <MenubarItem>New Window</MenubarItem>\\n                  <MenubarItem>New Incognito Window</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Email link</MenubarItem>\\n                <MenubarItem>Messages</MenubarItem>\\n                <MenubarItem>Notes</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Find...</MenubarItem>\\n                <MenubarItem>Find Next</MenubarItem>\\n                <MenubarItem>Find Previous</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>\\n              Always Show Full URLs\\n            </MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>\\n              Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled inset>\\n              Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Edit...</MenubarItem>\\n            <MenubarItem inset>Add Profile...</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save <MenubarShortcut>⌘S</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"BoldIcon\\\"\\n                tabler=\\\"IconBold\\\"\\n                hugeicons=\\\"TextBoldIcon\\\"\\n                phosphor=\\\"TextBIcon\\\"\\n                remixicon=\\\"RiBold\\\"\\n              />\\n              Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"ItalicIcon\\\"\\n                tabler=\\\"IconItalic\\\"\\n                hugeicons=\\\"TextItalicIcon\\\"\\n                phosphor=\\\"TextItalicIcon\\\"\\n                remixicon=\\\"RiItalic\\\"\\n              />\\n              Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UnderlineIcon\\\"\\n                tabler=\\\"IconUnderline\\\"\\n                hugeicons=\\\"TextUnderlineIcon\\\"\\n                phosphor=\\\"TextUnderlineIcon\\\"\\n                remixicon=\\\"RiUnderline\\\"\\n              />\\n              Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Zoom In</MenubarItem>\\n            <MenubarItem inset>Zoom Out</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Image</MenubarItem>\\n                <MenubarItem>Video</MenubarItem>\\n                <MenubarItem>Audio</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"LinkIcon\\\"\\n                tabler=\\\"IconLink\\\"\\n                hugeicons=\\\"LinkIcon\\\"\\n                phosphor=\\\"LinkIcon\\\"\\n                remixicon=\\\"RiLinksLine\\\"\\n              />\\n              Link <MenubarShortcut>⌘K</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"TableIcon\\\"\\n                tabler=\\\"IconTable\\\"\\n                hugeicons=\\\"TableIcon\\\"\\n                phosphor=\\\"TableIcon\\\"\\n                remixicon=\\\"RiTableLine\\\"\\n              />\\n              Table\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n              />\\n              Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"CheckIcon\\\"\\n                tabler=\\\"IconCheck\\\"\\n                hugeicons=\\\"Tick02Icon\\\"\\n                phosphor=\\\"CheckIcon\\\"\\n                remixicon=\\\"RiCheckLine\\\"\\n              />\\n              Spell Check\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign out\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </MenubarItem>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarItem>Save Page...</MenubarItem>\\n                    <MenubarItem>Create Shortcut...</MenubarItem>\\n                    <MenubarItem>Name Window...</MenubarItem>\\n                    <MenubarSeparator />\\n                    <MenubarItem>Developer Tools</MenubarItem>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n                <MenubarItem>\\n                  Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"registryDependencies\": [\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"@base-ui/react/menubar\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({ className, ...props }: MenubarPrimitive.Props) {\\n  return (\\n    <MenubarPrimitive\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\n        \\\"flex h-8 items-center gap-0.5 rounded-none border p-1\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\\n  return <DropdownMenu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuGroup>) {\\n  return <DropdownMenuGroup data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPortal>) {\\n  return <DropdownMenuPortal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuTrigger>) {\\n  return (\\n    <DropdownMenuTrigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-none px-1.5 py-[calc(--spacing(0.8))] text-xs font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"menubar-content\\\"\\n      align={align}\\n      alignOffset={alignOffset}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-36 rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuItem>) {\\n  return (\\n    <DropdownMenuItem\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item gap-2 rounded-none px-2 py-2 text-xs focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-28 pl-8 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {\\n  return <DropdownMenuRadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-2 pl-8 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuLabel> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuLabel\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\\"px-2 py-2 text-xs data-inset:pl-8\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSeparator>) {\\n  return (\\n    <DropdownMenuSeparator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuShortcut>) {\\n  return (\\n    <DropdownMenuShortcut\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSub>) {\\n  return <DropdownMenuSub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuSubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"gap-2 rounded-none px-2 py-2 text-xs focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubContent>) {\\n  return (\\n    <DropdownMenuSubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-32 rounded-none bg-popover text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-lyra/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-8 w-full min-w-0 appearance-none rounded-none border border-input bg-transparent py-1 pr-8 pl-2.5 text-xs transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-none data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/base-lyra/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuBasic />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Backlog\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    To Do\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Done\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              render={<Link href=\\\"/docs\\\" />}\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              Documentation\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink render={<Link href={href} />}>\\n        <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n          <div className=\\\"leading-none font-medium\\\">{title}</div>\\n          <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n        </div>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/navigation-menu.tsx\",\n      \"content\": \"import { NavigationMenu as NavigationMenuPrimitive } from \\\"@base-ui/react/navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  align = \\\"start\\\",\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Root.Props &\\n  Pick<NavigationMenuPrimitive.Positioner.Props, \\\"align\\\">) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <NavigationMenuPositioner align={align} />\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-none bg-background px-2.5 py-1.5 text-xs font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Trigger.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Content.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-1 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-none group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuPositioner({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 8,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  ...props\\n}: NavigationMenuPrimitive.Positioner.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Portal>\\n      <NavigationMenuPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        className={cn(\\n          \\\"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <NavigationMenuPrimitive.Popup className=\\\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-none bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\\\">\\n          <NavigationMenuPrimitive.Viewport className=\\\"relative size-full overflow-hidden\\\" />\\n        </NavigationMenuPrimitive.Popup>\\n      </NavigationMenuPrimitive.Positioner>\\n    </NavigationMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Link.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-none p-2 text-xs transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-none data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {\\n  return (\\n    <NavigationMenuPrimitive.Icon\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-none bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Icon>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuIndicator,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n  NavigationMenuPositioner,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/pagination-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/base-lyra/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-0.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n      nativeButton={false}\\n      render={\\n        <a\\n          aria-current={isActive ? \\\"page\\\" : undefined}\\n          data-slot=\\\"pagination-link\\\"\\n          data-active={isActive}\\n          {...props}\\n        />\\n      }\\n    />\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-1.5!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-1.5!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-lyra/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverSides />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-col gap-2\\\">\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"inline-start\\\", \\\"left\\\", \\\"top\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"bottom\\\", \\\"right\\\", \\\"inline-end\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Start\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Center\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            End\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Popover\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"@base-ui/react/popover\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  ...props\\n}: PopoverPrimitive.Popup.Props &\\n  Pick<\\n    PopoverPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PopoverPrimitive.Popup\\n          data-slot=\\\"popover-content\\\"\\n          className={cn(\\n            \\\"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-none bg-popover p-2.5 text-xs text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PopoverPrimitive.Positioner>\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\\n  return (\\n    <PopoverPrimitive.Title\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: PopoverPrimitive.Description.Props) {\\n  return (\\n    <PopoverPrimitive.Description\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"chart\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/base-lyra/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/base-lyra/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/base-lyra/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/base-lyra/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/base-lyra/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/base-lyra/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/base-lyra/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/base-lyra/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/base-lyra/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/base-lyra/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/base-lyra/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/base-lyra/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/base-lyra/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/base-lyra/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/base-lyra/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/base-lyra/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/base-lyra/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/base-lyra/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/base-lyra/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/base-lyra/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/base-lyra/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/base-lyra/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/base-lyra/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/base-lyra/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/base-lyra/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/base-lyra/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/base-lyra/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/base-lyra/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/base-lyra/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/base-lyra/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/base-lyra/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-lyra/ui/item\\\"\\nimport {\\n  Progress,\\n  ProgressLabel,\\n  ProgressValue,\\n} from \\\"@/registry/base-lyra/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/base-lyra/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Progress value={56}>\\n        <ProgressLabel>Upload progress</ProgressLabel>\\n        <ProgressValue />\\n      </Progress>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState(50)\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={(value) => setValue(value as number)}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Progress as ProgressPrimitive } from \\\"@base-ui/react/progress\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  children,\\n  value,\\n  ...props\\n}: ProgressPrimitive.Root.Props) {\\n  return (\\n    <ProgressPrimitive.Root\\n      value={value}\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\\"flex flex-wrap gap-3\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <ProgressTrack>\\n        <ProgressIndicator />\\n      </ProgressTrack>\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\\n  return (\\n    <ProgressPrimitive.Track\\n      className={cn(\\n        \\\"relative flex h-1 w-full items-center overflow-x-hidden rounded-none bg-muted\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-track\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressIndicator({\\n  className,\\n  ...props\\n}: ProgressPrimitive.Indicator.Props) {\\n  return (\\n    <ProgressPrimitive.Indicator\\n      data-slot=\\\"progress-indicator\\\"\\n      className={cn(\\\"h-full bg-primary transition-all\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\\n  return (\\n    <ProgressPrimitive.Label\\n      className={cn(\\\"text-xs\\\", className)}\\n      data-slot=\\\"progress-label\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\\n  return (\\n    <ProgressPrimitive.Value\\n      className={cn(\\n        \\\"ml-auto text-xs text-muted-foreground tabular-nums\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-value\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Progress,\\n  ProgressTrack,\\n  ProgressIndicator,\\n  ProgressLabel,\\n  ProgressValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-lyra/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Radio as RadioPrimitive } from \\\"@base-ui/react/radio\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"@base-ui/react/radio-group\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\\n  return (\\n    <RadioGroupPrimitive\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\\n  return (\\n    <RadioPrimitive.Root\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioPrimitive.Indicator>\\n    </RadioPrimitive.Root>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"registryDependencies\": [\"dropdown-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\",\n        \"use-mobile\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n          \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"chart\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-lyra/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-lyra/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/base-lyra/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-none bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/base-lyra/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"@base-ui/react/scroll-area\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: ScrollAreaPrimitive.Root.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: ScrollAreaPrimitive.Scrollbar.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Scrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Thumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-none bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.Scrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-lyra/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-lyra/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectSides />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectMultiple />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSides() {\\n  const items = [\\n    { label: \\\"Select\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Select key={side} items={items}>\\n            <SelectTrigger className=\\\"w-28 capitalize\\\">\\n              <SelectValue placeholder={side.replace(\\\"-\\\", \\\" \\\")} />\\n            </SelectTrigger>\\n            <SelectContent side={side} alignItemWithTrigger={false}>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  const items = [\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Chart Type\\n        </>\\n      ),\\n      value: null,\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Line\\n        </>\\n      ),\\n      value: \\\"line\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartBarIcon\\\"\\n            tabler=\\\"IconChartBar\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartBarIcon\\\"\\n            remixicon=\\\"RiBarChartLine\\\"\\n          />\\n          Bar\\n        </>\\n      ),\\n      value: \\\"bar\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartPieIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n          Pie\\n        </>\\n      ),\\n      value: \\\"pie\\\",\\n    },\\n  ]\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  const fruits = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  const vegetables = [\\n    { label: \\\"Carrot\\\", value: \\\"carrot\\\" },\\n    { label: \\\"Broccoli\\\", value: \\\"broccoli\\\" },\\n    { label: \\\"Spinach\\\", value: \\\"spinach\\\" },\\n  ]\\n  const allItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    ...fruits,\\n    ...vegetables,\\n  ]\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select items={allItems}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            {fruits.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            {vegetables.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  const items = [\\n    { label: \\\"Select an item\\\", value: null },\\n    ...Array.from({ length: 100 }).map((_, i) => ({\\n      label: `Item ${i}`,\\n      value: `item-${i}`,\\n    })),\\n  ]\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Item Aligned\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent alignItemWithTrigger={true}>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select items={items}>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select items={items}>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  const items = [\\n    { label: \\\"Filter\\\", value: null },\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Inactive\\\", value: \\\"inactive\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items}>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select items={items} disabled>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select\\n        defaultValue={plans[0]}\\n        itemToStringValue={(plan: (typeof plans)[number]) => plan.name}\\n      >\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {(value: (typeof plans)[number]) => <SelectPlanItem plan={value} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectMultiple() {\\n  const items = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n    { label: \\\"Strawberry\\\", value: \\\"strawberry\\\" },\\n    { label: \\\"Watermelon\\\", value: \\\"watermelon\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Multiple Selection\\\">\\n      <Select items={items} multiple defaultValue={[]}>\\n        <SelectTrigger className=\\\"w-72\\\">\\n          <SelectValue>\\n            {(value: string[]) => {\\n              if (value.length === 0) {\\n                return \\\"Select fruits\\\"\\n              }\\n              if (value.length === 1) {\\n                return items.find((item) => item.value === value[0])?.label\\n              }\\n              return `${value.length} fruits selected`\\n            }}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"@base-ui/react/select\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Select = SelectPrimitive.Root\\n\\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\\n  return (\\n    <SelectPrimitive.Value\\n      data-slot=\\\"select-value\\\"\\n      className={cn(\\\"flex flex-1 text-left\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: SelectPrimitive.Trigger.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-none border border-input bg-transparent py-2 pr-2 pl-2.5 text-xs whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-none *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon\\n        render={\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n            className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n          />\\n        }\\n      />\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  alignItemWithTrigger = true,\\n  ...props\\n}: SelectPrimitive.Popup.Props &\\n  Pick<\\n    SelectPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\" | \\\"alignItemWithTrigger\\\"\\n  >) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        alignItemWithTrigger={alignItemWithTrigger}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <SelectPrimitive.Popup\\n          data-slot=\\\"select-content\\\"\\n          data-align-trigger={alignItemWithTrigger}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <SelectScrollUpButton />\\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\\n          <SelectScrollDownButton />\\n        </SelectPrimitive.Popup>\\n      </SelectPrimitive.Positioner>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: SelectPrimitive.GroupLabel.Props) {\\n  return (\\n    <SelectPrimitive.GroupLabel\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-2 py-2 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: SelectPrimitive.Item.Props) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SelectPrimitive.ItemText className=\\\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\\\">\\n        {children}\\n      </SelectPrimitive.ItemText>\\n      <SelectPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </SelectPrimitive.ItemIndicator>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: SelectPrimitive.Separator.Props) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\\"pointer-events-none -mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollUpArrow\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpArrow>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollDownArrow\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownArrow>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Separator as SeparatorPrimitive } from \\\"@base-ui/react/separator\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: SeparatorPrimitive.Props) {\\n  return (\\n    <SeparatorPrimitive\\n      data-slot=\\\"separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/base-lyra/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>Open</SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose render={<Button variant=\\\"outline\\\" />}>Close</SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side}\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose render={<Button variant=\\\"outline\\\" />}>\\n                  Cancel\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\\n  return (\\n    <SheetPrimitive.Backdrop\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 text-xs/relaxed transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: SheetPrimitive.Popup.Props & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Popup\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col bg-background bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close\\n            data-slot=\\\"sheet-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-3 right-3\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Popup>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-0.5 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: SheetPrimitive.Description.Props) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-lyra/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-lyra/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      isActive={item.isActive}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-lyra/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-lyra/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-lyra/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton render={<CollapsibleTrigger />}>\\n                    {item.title}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"PlusIcon\\\"\\n                      tabler=\\\"IconPlus\\\"\\n                      hugeicons=\\\"PlusSignIcon\\\"\\n                      phosphor=\\\"PlusIcon\\\"\\n                      remixicon=\\\"RiAddLine\\\"\\n                      className=\\\"ml-auto group-aria-expanded/menu-button:hidden\\\"\\n                    />\\n                    <IconPlaceholder\\n                      lucide=\\\"MinusIcon\\\"\\n                      tabler=\\\"IconMinus\\\"\\n                      hugeicons=\\\"MinusSignIcon\\\"\\n                      phosphor=\\\"MinusIcon\\\"\\n                      remixicon=\\\"RiSubtractLine\\\"\\n                      className=\\\"ml-auto hidden group-aria-expanded/menu-button:block\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              isActive={item.isActive}\\n                              render={<a href={item.url} />}\\n                            >\\n                              {item.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-lyra/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/base-lyra/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuButton className=\\\"aria-expanded:bg-muted\\\" />\\n                }\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                  className=\\\"ml-auto\\\"\\n                />\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem\\n                      key={item.title}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-lyra/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-lyra/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/base-lyra/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-lyra/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n            render={<SidebarMenuItem />}\\n          >\\n            <CollapsibleTrigger\\n              render={<SidebarMenuButton tooltip={item.title} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"ml-auto transition-transform duration-200 group-data-open/collapsible:rotate-90\\\"\\n              />\\n            </CollapsibleTrigger>\\n            <CollapsibleContent>\\n              <SidebarMenuSub>\\n                {item.items?.map((subItem) => (\\n                  <SidebarMenuSubItem key={subItem.title}>\\n                    <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                      <span>{subItem.title}</span>\\n                    </SidebarMenuSubButton>\\n                  </SidebarMenuSubItem>\\n                ))}\\n              </SidebarMenuSub>\\n            </CollapsibleContent>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-lyra/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-lyra/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-lyra/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-lyra/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <CollapsibleTrigger\\n                  render={\\n                    <SidebarMenuAction className=\\\"aria-expanded:rotate-90\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </CollapsibleTrigger>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/base-lyra/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/base-lyra/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0\\\"\\n                render={<a href=\\\"#\\\" />}\\n              >\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0 data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/base-lyra/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-lyra/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-lyra/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-lyra/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-lyra/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-lyra/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-lyra/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"icon\\\"\\n              className=\\\"h-7 w-7 data-open:bg-accent\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"MoreHorizontalIcon\\\"\\n            tabler=\\\"IconDots\\\"\\n            hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeOutlineIcon\\\"\\n            remixicon=\\\"RiMoreLine\\\"\\n          />\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"StarOffIcon\\\"\\n                      tabler=\\\"IconStarOff\\\"\\n                      hugeicons=\\\"StarOffIcon\\\"\\n                      phosphor=\\\"StarIcon\\\"\\n                      remixicon=\\\"RiStarOffLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Remove from Favorites</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"LinkIcon\\\"\\n                      tabler=\\\"IconLink\\\"\\n                      hugeicons=\\\"LinkIcon\\\"\\n                      phosphor=\\\"LinkIcon\\\"\\n                      remixicon=\\\"RiLinksLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Copy Link</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArrowUpRightIcon\\\"\\n                      tabler=\\\"IconArrowUpRight\\\"\\n                      hugeicons=\\\"ArrowUpRightIcon\\\"\\n                      phosphor=\\\"ArrowUpRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightUpLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Open in New Tab</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Delete</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={<SidebarMenuButton className=\\\"w-fit px-1.5\\\" />}\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\ntype TreeItem = string | TreeItem[]\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <SidebarMenuButton render={<CollapsibleTrigger />}>\\n          <IconPlaceholder\\n            lucide=\\\"ChevronRightIcon\\\"\\n            tabler=\\\"IconChevronRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"CaretRightIcon\\\"\\n            remixicon=\\\"RiArrowRightSLine\\\"\\n            className=\\\"transition-transform\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"FolderIcon\\\"\\n            tabler=\\\"IconFolder\\\"\\n            hugeicons=\\\"FolderIcon\\\"\\n            phosphor=\\\"FolderIcon\\\"\\n            remixicon=\\\"RiFolderLine\\\"\\n          />\\n          {name}\\n        </SidebarMenuButton>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-lyra/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-lyra/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-lyra/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-lyra/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/base-lyra/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-lyra/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger render={<Button size=\\\"sm\\\" />}>Open Dialog</DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                          render={<a href=\\\"#\\\" />}\\n                        >\\n                          {item.icon}\\n                          <span>{item.name}</span>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({\\n                length: 10,\\n              }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                  >\\n                    {item.title}\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            isActive={item.isActive}\\n                            render={<a href={item.url} />}\\n                          >\\n                            {item.title}\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-lyra/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-lyra/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton className=\\\"w-fit px-1.5 aria-expanded:bg-muted aria-expanded:text-foreground\\\" />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-lyra/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/base-lyra/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-lyra/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-lyra/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-lyra/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-lyra/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"aria-expanded:rotate-90\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"aria-expanded:bg-muted aria-expanded:text-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-lyra/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-lyra/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-lyra/ui/item\\\"\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v{selectedVersion}</ItemDescription>\\n                    </ItemContent>\\n                    <ItemActions>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronsUpDownIcon\\\"\\n                        tabler=\\\"IconSelector\\\"\\n                        hugeicons=\\\"UnfoldMoreIcon\\\"\\n                        phosphor=\\\"CaretUpDownIcon\\\"\\n                        remixicon=\\\"RiArrowUpDownLine\\\"\\n                      />\\n                    </ItemActions>\\n                  </Item>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <IconPlaceholder\\n                          lucide=\\\"CheckIcon\\\"\\n                          tabler=\\\"IconCheck\\\"\\n                          hugeicons=\\\"Tick02Icon\\\"\\n                          phosphor=\\\"CheckIcon\\\"\\n                          remixicon=\\\"RiCheckLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton\\n                        render={<a href={subItem.url} />}\\n                        isActive={subItem.isActive}\\n                      >\\n                        {subItem.title}\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-lyra/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n                <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                    <ItemDescription>v1.0.0</ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger\\n                      render={\\n                        <SidebarMenuButton className=\\\"data-popup-open:bg-sidebar-accent data-popup-open:text-sidebar-accent-foreground\\\" />\\n                      }\\n                    >\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"MoreHorizontalIcon\\\"\\n                        tabler=\\\"IconDots\\\"\\n                        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                        phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                        remixicon=\\\"RiMoreLine\\\"\\n                        className=\\\"ml-auto\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem\\n                              render={<a href={subItem.url} />}\\n                              key={subItem.title}\\n                            >\\n                              {subItem.title}\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-lyra/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-lyra/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Button\\n                    size=\\\"icon-sm\\\"\\n                    render={<span />}\\n                    nativeButton={false}\\n                    className=\\\"size-8\\\"\\n                  >\\n                    <svg\\n                      xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                      viewBox=\\\"0 0 256 256\\\"\\n                    >\\n                      <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                      <line\\n                        x1=\\\"208\\\"\\n                        y1=\\\"128\\\"\\n                        x2=\\\"128\\\"\\n                        y2=\\\"208\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                      <line\\n                        x1=\\\"192\\\"\\n                        y1=\\\"40\\\"\\n                        x2=\\\"40\\\"\\n                        y2=\\\"192\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                    </svg>\\n                  </Button>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {activeTeam.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuGroup>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger\\n                      render={<SidebarMenuButton tooltip={item.title} />}\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                        className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                      />\\n                    </CollapsibleTrigger>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton\\n                              render={<a href={subItem.url} />}\\n                            >\\n                              {subItem.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton render={<a href={item.url} />}>\\n                    {item.icon}\\n                    {item.name}\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Avatar>\\n                    <AvatarImage src={data.user.avatar} alt={data.user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {data.user.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{data.user.email}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-lyra/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  render={<SidebarMenuItem />}\\n                >\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} />}\\n                    isActive={item.isActive}\\n                  >\\n                    {item.icon}\\n                    <span>{item.title}</span>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <>\\n                      <CollapsibleTrigger\\n                        render={\\n                          <SidebarMenuAction className=\\\"data-open:rotate-90\\\" />\\n                        }\\n                      >\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                        />\\n                        <span className=\\\"sr-only\\\">Toggle</span>\\n                      </CollapsibleTrigger>\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((subItem) => (\\n                            <SidebarMenuSubItem key={subItem.title}>\\n                              <SidebarMenuSubButton\\n                                render={<a href={subItem.url} />}\\n                              >\\n                                {subItem.title}\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    </>\\n                  ) : null}\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton render={<a href={item.url} />} size=\\\"sm\\\">\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"separator\",\n    \"sheet\",\n    \"skeleton\",\n    \"tooltip\",\n    \"use-mobile\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-lyra/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport { Separator } from \\\"@/registry/base-lyra/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/base-lyra/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/base-lyra/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-none group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-none md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & React.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-8 shrink-0 items-center rounded-none px-2 text-xs text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-label\\\",\\n      sidebar: \\\"group-label\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> & React.ComponentProps<\\\"button\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-none p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-action\\\",\\n      sidebar: \\\"group-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-none p-2 text-left text-xs ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-xs\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-xs group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  render,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    isActive?: boolean\\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n  } & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const { isMobile, state } = useSidebar()\\n  const comp = useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(sidebarMenuButtonVariants({ variant, size }), className),\\n      },\\n      props\\n    ),\\n    render: !tooltip ? render : <TooltipTrigger render={render} />,\\n    state: {\\n      slot: \\\"sidebar-menu-button\\\",\\n      sidebar: \\\"menu-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n\\n  if (!tooltip) {\\n    return comp\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      {comp}\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  render,\\n  showOnHover = false,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    showOnHover?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-none p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          showOnHover &&\\n            \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-action\\\",\\n      sidebar: \\\"menu-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-none px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-none px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-none\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  render,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\"> &\\n  React.ComponentProps<\\\"a\\\"> & {\\n    size?: \\\"sm\\\" | \\\"md\\\"\\n    isActive?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-none px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-xs data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-sub-button\\\",\\n      sidebar: \\\"menu-sub-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-lyra/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-lyra/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-lyra/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-lyra/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-lyra/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-lyra/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/base-lyra/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/base-lyra/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-none bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport { Slider } from \\\"@/registry/base-lyra/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={50} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={(value) => setValue(value as number[])}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"@base-ui/react/slider\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: SliderPrimitive.Root.Props) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      className={cn(\\\"data-horizontal:w-full data-vertical:h-full\\\", className)}\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      thumbAlignment=\\\"edge\\\"\\n      {...props}\\n    >\\n      <SliderPrimitive.Control className=\\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\">\\n        <SliderPrimitive.Track\\n          data-slot=\\\"slider-track\\\"\\n          className=\\\"relative grow overflow-hidden rounded-none bg-muted select-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\\\"\\n        >\\n          <SliderPrimitive.Indicator\\n            data-slot=\\\"slider-range\\\"\\n            className=\\\"bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n          />\\n        </SliderPrimitive.Track>\\n        {Array.from({ length: _values.length }, (_, index) => (\\n          <SliderPrimitive.Thumb\\n            data-slot=\\\"slider-thumb\\\"\\n            key={index}\\n            className=\\\"relative block size-3 shrink-0 rounded-none border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-1 focus-visible:ring-1 focus-visible:outline-hidden active:ring-1 disabled:pointer-events-none disabled:opacity-50\\\"\\n          />\\n        ))}\\n      </SliderPrimitive.Control>\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-lyra/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-lyra/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-lyra/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/base-lyra/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            nativeButton={false}\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Label } from \\\"@/registry/base-lyra/ui/label\\\"\\nimport { Switch } from \\\"@/registry/base-lyra/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Switch as SwitchPrimitive } from \\\"@base-ui/react/switch\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: SwitchPrimitive.Root.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/table-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-lyra/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nconst people = [\\n  { value: \\\"sarah\\\", label: \\\"Sarah Chen\\\" },\\n  { value: \\\"marcus\\\", label: \\\"Marc Rodriguez\\\" },\\n  { value: \\\"emily\\\", label: \\\"Emily Watson\\\" },\\n  { value: \\\"david\\\", label: \\\"David Kim\\\" },\\n]\\n\\nconst tasks = [\\n  {\\n    task: \\\"Design homepage\\\",\\n    assignee: \\\"sarah\\\",\\n    status: \\\"In Progress\\\",\\n  },\\n  {\\n    task: \\\"Implement API\\\",\\n    assignee: \\\"marcus\\\",\\n    status: \\\"Pending\\\",\\n  },\\n  {\\n    task: \\\"Write tests\\\",\\n    assignee: \\\"emily\\\",\\n    status: \\\"Not Started\\\",\\n  },\\n]\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tasks.map((item) => (\\n            <TableRow key={item.task}>\\n              <TableCell className=\\\"font-medium\\\">{item.task}</TableCell>\\n              <TableCell>\\n                <Select\\n                  items={people}\\n                  defaultValue={people.find(\\n                    (person) => person.value === item.assignee\\n                  )}\\n                  itemToStringValue={(item) => {\\n                    return item.value\\n                  }}\\n                >\\n                  <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      {people.map((person) => (\\n                        <SelectItem key={person.value} value={person}>\\n                          {person.label}\\n                        </SelectItem>\\n                      ))}\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </TableCell>\\n              <TableCell>{item.status}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-xs\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-lyra/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-lyra/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">More options</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tabs as TabsPrimitive } from \\\"@base-ui/react/tabs\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: TabsPrimitive.Root.Props) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-none p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\\n  return (\\n    <TabsPrimitive.Tab\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-none border border-transparent px-1.5 py-0.5 text-xs font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:py-[calc(--spacing(1.25))] hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\\n  return (\\n    <TabsPrimitive.Panel\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-xs/relaxed outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/base-lyra/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full rounded-none border border-input bg-transparent px-2.5 py-2 text-xs transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 md:text-xs dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/base-lyra/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-lyra/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-lyra/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-lyra/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup multiple spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" defaultValue={[\\\"all\\\"]}>\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup size=\\\"sm\\\" defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup multiple variant=\\\"outline\\\" spacing={2} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup defaultValue={[\\\"all\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        defaultValue={[\\\"today\\\"]}\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup defaultValue={[\\\"newest\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  const items = [\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Archived\\\", value: \\\"archived\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items} defaultValue={items[0]}>\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup defaultValue={[\\\"grid\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup multiple orientation=\\\"vertical\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        defaultValue={[\\\"all\\\"]}\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple orientation=\\\"vertical\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          value={[fontWeight]}\\n          onValueChange={(value) => setFontWeight(value[0])}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={1}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"@base-ui/react/toggle-group\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/base-lyra/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: ToggleGroupPrimitive.Props &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-none data-[size=sm]:rounded-none data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-none group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-none group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </TogglePrimitive>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-none text-xs font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 min-w-8 px-2\\\",\\n        sm: \\\"h-7 min-w-7 rounded-none px-1.5\\\",\\n        lg: \\\"h-9 min-w-9 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/base-lyra/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/base-lyra/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Info</span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<span className=\\\"inline-block w-fit\\\" />}>\\n          <Button variant=\\\"outline\\\" disabled>\\n            Disabled\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger\\n          render={\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n              onClick={(e) => e.preventDefault()}\\n            />\\n          }\\n        >\\n          Learn more\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Status\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tooltip as TooltipPrimitive } from \\\"@base-ui/react/tooltip\\\"\\n\\nimport { cn } from \\\"@/registry/base-lyra/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delay = 0,\\n  ...props\\n}: TooltipPrimitive.Provider.Props) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delay={delay}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  side = \\\"top\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  children,\\n  ...props\\n}: TooltipPrimitive.Popup.Props &\\n  Pick<\\n    TooltipPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <TooltipPrimitive.Popup\\n          data-slot=\\\"tooltip-content\\\"\\n          className={cn(\\n            \\\"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-none bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-none data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          {children}\\n          <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-none bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\\\" />\\n        </TooltipPrimitive.Popup>\\n      </TooltipPrimitive.Positioner>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-lyra/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-lyra/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/base-maia/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion multiple className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            multiple\\n            defaultValue={[\\\"plans\\\"]}\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Accordion as AccordionPrimitive } from \\\"@base-ui/react/accordion\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\n        \\\"flex w-full flex-col overflow-hidden rounded-2xl border\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b data-open:bg-muted/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Trigger.Props) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between gap-6 border border-transparent p-4 text-left text-sm font-medium transition-all outline-none hover:underline aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Panel.Props) {\\n  return (\\n    <AccordionPrimitive.Panel\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden px-4 text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--accordion-panel-height) pt-0 pb-4 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Panel>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-maia/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger render={<Button variant=\\\"outline\\\">Small</Button>} />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default (Media)</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Small (Media)</Button>}\\n        />\\n\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"destructive\\\">Delete Chat</Button>}\\n        />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger render={<Button />}>\\n                Open Alert Dialog\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"@base-ui/react/alert-dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\n\\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: AlertDialogPrimitive.Backdrop.Props) {\\n  return (\\n    <AlertDialogPrimitive.Backdrop\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Popup.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Popup\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-background p-6 ring-1 ring-foreground/5 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  return (\\n    <Button\\n      data-slot=\\\"alert-dialog-action\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Close.Props &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <AlertDialogPrimitive.Close\\n      data-slot=\\\"alert-dialog-cancel\\\"\\n      className={cn(className)}\\n      render={<Button variant={variant} size={size} />}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/base-maia/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/base-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\\"absolute top-2.5 right-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/base-maia/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/aspect-ratio.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction AspectRatio({\\n  ratio,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { ratio: number }) {\\n  return (\\n    <div\\n      data-slot=\\\"aspect-ratio\\\"\\n      style={\\n        {\\n          \\\"--ratio\\\": ratio,\\n        } as React.CSSProperties\\n      }\\n      className={cn(\\\"relative aspect-(--ratio)\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-maia/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"@base-ui/react/avatar\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AvatarPrimitive.Root.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: AvatarPrimitive.Fallback.Props) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-maia/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/base-maia/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"secondary\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"destructive\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"ghost\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/badge.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border bg-input/30 text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"span\\\"> & VariantProps<typeof badgeVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"span\\\",\\n    props: mergeProps<\\\"span\\\">(\\n      {\\n        className: cn(badgeVariants({ variant }), className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"badge\\\",\\n      variant,\\n    },\\n  })\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\" />}\\n              >\\n                <BreadcrumbEllipsis />\\n                <span className=\\\"sr-only\\\">Toggle menu</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Home</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Components</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\\"transition-colors hover:text-foreground\\\", className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"breadcrumb-link\\\",\\n    },\\n  })\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-5 items-center justify-center [&>svg]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/button-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <a href=\\\"#\\\" className={buttonVariants()}>\\n          Link\\n        </a>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-maia/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText render={<Label htmlFor=\\\"input-text\\\" />}>\\n            GPU Size\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeX\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nconst currencyItems = [\\n  { label: \\\"$\\\", value: \\\"$\\\" },\\n  { label: \\\"€\\\", value: \\\"€\\\" },\\n  { label: \\\"£\\\", value: \\\"£\\\" },\\n]\\n\\nfunction ButtonGroupWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select items={currencyItems} defaultValue={currencyItems[0]}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {currencyItems.map((item) => (\\n                  <SelectItem key={item.value} value={item}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button\\n          variant=\\\"outline\\\"\\n          size=\\\"icon\\\"\\n          className=\\\"w-12\\\"\\n          render={<span />}\\n          nativeButton={false}\\n        >\\n          1.2K\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nconst durationItems = [\\n  { label: \\\"Hours\\\", value: \\\"hours\\\" },\\n  { label: \\\"Days\\\", value: \\\"days\\\" },\\n  { label: \\\"Weeks\\\", value: \\\"weeks\\\" },\\n]\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select items={durationItems} defaultValue={durationItems[0]}>\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              {durationItems.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger render={<InputGroupAddon align=\\\"inline-end\\\" />}>\\n                <IconPlaceholder\\n                  lucide=\\\"AudioLinesIcon\\\"\\n                  tabler=\\\"IconHeadphones\\\"\\n                  hugeicons=\\\"AudioWave01Icon\\\"\\n                  phosphor=\\\"MicrophoneIcon\\\"\\n                  remixicon=\\\"RiMicLine\\\"\\n                />\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft02Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/button-group.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-4xl [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-4xl! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\\\",\\n        vertical:\\n          \\\"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-4xl! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex items-center gap-2 rounded-4xl border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"button-group-text\\\",\\n    },\\n  })\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/button.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button as ButtonPrimitive } from \\\"@base-ui/react/button\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-4xl border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\\\",\\n        xs: \\\"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\\\",\\n        lg: \\\"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\\\",\\n        icon: \\\"size-9\\\",\\n        \\\"icon-xs\\\": \\\"size-6 [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\": \\\"size-8\\\",\\n        \\\"icon-lg\\\": \\\"size-10\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\\n  return (\\n    <ButtonPrimitive\\n      data-slot=\\\"button\\\"\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/base-maia/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-maia/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-maia/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-maia/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\" />}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"CalendarIcon\\\"\\n            tabler=\\\"IconCalendar\\\"\\n            hugeicons=\\\"CalendarIcon\\\"\\n            phosphor=\\\"CalendarBlankIcon\\\"\\n            remixicon=\\\"RiCalendarLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Open Calendar\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-simple\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-range\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date?.from ? (\\n              date.to ? (\\n                <>\\n                  {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                  {format(date.to, \\\"LLL dd, y\\\")}\\n                </>\\n              ) : (\\n                format(date.from, \\\"LLL dd, y\\\")\\n              )\\n            ) : (\\n              <span>Pick a date</span>\\n            )}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-with-dropdowns-desktop\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-3 [--cell-radius:var(--radius-4xl)] [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-6 overflow-hidden rounded-2xl bg-card py-6 text-sm text-card-foreground ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-2 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\\"cn-font-heading text-base font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-6 group-data-[size=sm]/card:px-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/base-maia/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-maia/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-maia/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-maia/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox as CheckboxPrimitive } from \\\"@base-ui/react/checkbox\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-[6px] border border-input transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/base-maia/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {fileItem.name}\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              {isOpen ? (\\n                <IconPlaceholder\\n                  lucide=\\\"MinimizeIcon\\\"\\n                  tabler=\\\"IconMinimize\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              ) : (\\n                <IconPlaceholder\\n                  lucide=\\\"MaximizeIcon\\\"\\n                  tabler=\\\"IconMaximize\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              )}\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"@base-ui/react/collapsible\\\"\\n\\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\\n  return (\\n    <CollapsiblePrimitive.Trigger data-slot=\\\"collapsible-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\\n  return (\\n    <CollapsiblePrimitive.Panel data-slot=\\\"collapsible-content\\\" {...props} />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/base-maia/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-maia/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxSides />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Combobox key={side} items={frameworks}>\\n            <ComboboxInput\\n              placeholder={side.replace(\\\"-\\\", \\\" \\\")}\\n              className=\\\"w-32 **:data-[slot=input-group-control]:capitalize\\\"\\n            />\\n            <ComboboxContent side={side}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen}>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst items = [\\n  {\\n    label: \\\"Select a framework\\\",\\n    value: null,\\n  },\\n  {\\n    label: \\\"React\\\",\\n    value: \\\"react\\\",\\n  },\\n  {\\n    label: \\\"Vue\\\",\\n    value: \\\"vue\\\",\\n  },\\n  {\\n    label: \\\"Angular\\\",\\n    value: \\\"angular\\\",\\n  },\\n  {\\n    label: \\\"Svelte\\\",\\n    value: \\\"svelte\\\",\\n  },\\n  {\\n    label: \\\"Solid\\\",\\n    value: \\\"solid\\\",\\n  },\\n  {\\n    label: \\\"Preact\\\",\\n    value: \\\"preact\\\",\\n  },\\n  {\\n    label: \\\"Next.js\\\",\\n    value: \\\"next.js\\\",\\n  },\\n]\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select items={items}>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            render={<ComboboxTrigger />}\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          />\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-2xl bg-popover text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-9 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-3.5 py-2.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-9 flex-wrap items-center gap-1.5 rounded-4xl border border-input bg-input/30 bg-clip-padding px-2.5 py-1.5 text-sm transition-colors focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-4xl bg-muted-foreground/10 px-2 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/base-maia/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-4xl bg-popover p-1 text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: Omit<React.ComponentProps<typeof Dialog>, \\\"children\\\"> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n  children: React.ReactNode\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-4xl! p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"p-1 pb-0\\\">\\n      <InputGroup className=\\\"h-9 bg-input/30\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-4 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-3 **:[[cmdk-group-heading]]:py-2 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex cursor-default items-center gap-2 rounded-lg px-3 py-2 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-2xl data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-maia/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/base-maia/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/base-maia/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger render={<Button />}>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Show Dialog\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst roleItems = [\\n  { label: \\\"Developer\\\", value: \\\"developer\\\" },\\n  { label: \\\"Designer\\\", value: \\\"designer\\\" },\\n  { label: \\\"Manager\\\", value: \\\"manager\\\" },\\n  { label: \\\"Other\\\", value: \\\"other\\\" },\\n]\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreVerticalIcon\\\"\\n                  tabler=\\\"IconDotsVertical\\\"\\n                  hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                  remixicon=\\\"RiMore2Line\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select items={roleItems} defaultValue={null}>\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        {roleItems.map((item) => (\\n                          <SelectItem key={item.value} value={item.value}>\\n                            {item.label}\\n                          </SelectItem>\\n                        ))}\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <ContextMenu key={side}>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] items-center justify-center rounded-lg border p-4 text-sm capitalize\\\">\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </ContextMenuTrigger>\\n            <ContextMenuContent side={side}>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Back</ContextMenuItem>\\n                <ContextMenuItem>Forward</ContextMenuItem>\\n                <ContextMenuItem>Reload</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"@base-ui/react/context-menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Trigger.Props) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = 4,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  ...props\\n}: ContextMenuPrimitive.Popup.Props &\\n  Pick<\\n    ContextMenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <ContextMenuPrimitive.Popup\\n          data-slot=\\\"context-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) min-w-48 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ContextMenuPrimitive.Positioner>\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.GroupLabel\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-3 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: ContextMenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex cursor-default items-center gap-2.5 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuRoot data-slot=\\\"context-menu-sub\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuContent>) {\\n  return (\\n    <ContextMenuContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className=\\\"cn-menu-target cn-menu-translucent shadow-lg\\\"\\n      side=\\\"right\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: ContextMenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Separator.Props) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/base-maia/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/base-maia/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/base-maia/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/base-maia/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/base-maia/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/base-maia/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-maia/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-maia/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n              render={<a href=\\\"#\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CommandIcon\\\"\\n                tabler=\\\"IconInnerShadowTop\\\"\\n                hugeicons=\\\"CommandIcon\\\"\\n                phosphor=\\\"CommandIcon\\\"\\n                remixicon=\\\"RiCommandLine\\\"\\n                className=\\\"size-5!\\\"\\n              />\\n              <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-maia/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-maia/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-maia/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            multiple={false}\\n            value={timeRange ? [timeRange] : []}\\n            onValueChange={(value) => {\\n              setTimeRange(value[0] ?? \\\"90d\\\")\\n            }}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select\\n            value={timeRange}\\n            onValueChange={(value) => {\\n              if (value !== null) {\\n                setTimeRange(value)\\n              }\\n            }}\\n          >\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-maia/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/base-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-maia/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/base-maia/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-maia/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-maia/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-maia/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={table.getIsAllPageRowsSelected()}\\n          indeterminate={\\n            table.getIsSomePageRowsSelected() &&\\n            !table.getIsAllPageRowsSelected()\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select\\n            items={[\\n              { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n              { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n            ]}\\n          >\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"flex size-8 text-muted-foreground data-open:bg-muted\\\"\\n              size=\\\"icon\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"EllipsisVerticalIcon\\\"\\n            tabler=\\\"IconDotsVertical\\\"\\n            hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeVerticalIcon\\\"\\n            remixicon=\\\"RiMore2Line\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Open menu</span>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select\\n          defaultValue=\\\"outline\\\"\\n          items={[\\n            { label: \\\"Outline\\\", value: \\\"outline\\\" },\\n            { label: \\\"Past Performance\\\", value: \\\"past-performance\\\" },\\n            { label: \\\"Key Personnel\\\", value: \\\"key-personnel\\\" },\\n            { label: \\\"Focus Documents\\\", value: \\\"focus-documents\\\" },\\n          ]}\\n        >\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"Columns3Icon\\\"\\n                tabler=\\\"IconLayoutColumns\\\"\\n                hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                phosphor=\\\"ColumnsIcon\\\"\\n                remixicon=\\\"RiLayoutColumnLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Columns\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n                items={[10, 20, 30, 40, 50].map((pageSize) => ({\\n                  label: `${pageSize}`,\\n                  value: `${pageSize}`,\\n                }))}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\nconst chartData = [\\n  {\\n    month: \\\"January\\\",\\n    desktop: 186,\\n    mobile: 80,\\n  },\\n  {\\n    month: \\\"February\\\",\\n    desktop: 305,\\n    mobile: 200,\\n  },\\n  {\\n    month: \\\"March\\\",\\n    desktop: 237,\\n    mobile: 120,\\n  },\\n  {\\n    month: \\\"April\\\",\\n    desktop: 73,\\n    mobile: 190,\\n  },\\n  {\\n    month: \\\"May\\\",\\n    desktop: 209,\\n    mobile: 130,\\n  },\\n  {\\n    month: \\\"June\\\",\\n    desktop: 214,\\n    mobile: 140,\\n  },\\n]\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select\\n                  defaultValue={item.type}\\n                  items={[\\n                    { label: \\\"Table of Contents\\\", value: \\\"Table of Contents\\\" },\\n                    { label: \\\"Executive Summary\\\", value: \\\"Executive Summary\\\" },\\n                    {\\n                      label: \\\"Technical Approach\\\",\\n                      value: \\\"Technical Approach\\\",\\n                    },\\n                    { label: \\\"Design\\\", value: \\\"Design\\\" },\\n                    { label: \\\"Capabilities\\\", value: \\\"Capabilities\\\" },\\n                    { label: \\\"Focus Documents\\\", value: \\\"Focus Documents\\\" },\\n                    { label: \\\"Narrative\\\", value: \\\"Narrative\\\" },\\n                    { label: \\\"Cover Page\\\", value: \\\"Cover Page\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select\\n                  defaultValue={item.status}\\n                  items={[\\n                    { label: \\\"Done\\\", value: \\\"Done\\\" },\\n                    { label: \\\"In Progress\\\", value: \\\"In Progress\\\" },\\n                    { label: \\\"Not Started\\\", value: \\\"Not Started\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select\\n                defaultValue={item.reviewer}\\n                items={[\\n                  { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n                  { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n                  { label: \\\"Emily Whalen\\\", value: \\\"Emily Whalen\\\" },\\n                ]}\\n              >\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\" />\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar className=\\\"size-8 rounded-lg grayscale\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs text-foreground/70\\\">\\n                {user.email}\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar className=\\\"size-8\\\">\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                      {user.email}\\n                    </span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/base-maia/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 h-4 data-vertical:self-auto\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-maia/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/base-maia/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/base-maia/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-maia/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-maia/ui/item\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-maia/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/base-maia/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-maia/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-maia/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback(\\n    (value: number | readonly number[]) => {\\n      if (typeof value === \\\"number\\\") {\\n        setSliderValue([value])\\n      } else {\\n        setSliderValue([...value])\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n                    <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                    <span className=\\\"block md:hidden\\\">Dialog</span>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger\\n                      render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronUpIcon\\\"\\n                        tabler=\\\"IconChevronUp\\\"\\n                        hugeicons=\\\"ArrowUp01Icon\\\"\\n                        phosphor=\\\"CaretUpIcon\\\"\\n                        remixicon=\\\"RiArrowUpSLine\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/base-maia/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-maia/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-maia/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport { Switch } from \\\"@/registry/base-maia/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-maia/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/base-maia/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n            Edit Profile\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n                Cancel\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Scrollable Content\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Sticky Footer\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"Auto\\\", value: \\\"auto\\\" },\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nconst themes = [\\n  { label: \\\"Light\\\", value: \\\"light\\\" },\\n  { label: \\\"Dark\\\", value: \\\"dark\\\" },\\n  { label: \\\"System\\\", value: \\\"system\\\" },\\n]\\n\\nconst accents = [\\n  { label: \\\"Default\\\", value: \\\"default\\\" },\\n  { label: \\\"Red\\\", value: \\\"red\\\" },\\n  { label: \\\"Blue\\\", value: \\\"blue\\\" },\\n  { label: \\\"Green\\\", value: \\\"green\\\" },\\n  { label: \\\"Purple\\\", value: \\\"purple\\\" },\\n  { label: \\\"Pink\\\", value: \\\"pink\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Chat Settings\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select\\n                          items={themes}\\n                          value={theme}\\n                          onValueChange={(value) => setTheme(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {themes.map((theme) => (\\n                                <SelectItem\\n                                  key={theme.value}\\n                                  value={theme.value}\\n                                >\\n                                  {theme.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          items={accents}\\n                          value={accentColor}\\n                          onValueChange={(value) =>\\n                            setAccentColor(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {accents.map((accent) => (\\n                                <SelectItem\\n                                  key={accent.value}\\n                                  value={accent.value}\\n                                >\\n                                  {accent.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          items={spokenLanguages}\\n                          value={spokenLanguage}\\n                          onValueChange={(value) =>\\n                            setSpokenLanguage(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select\\n                          items={voices}\\n                          value={voice}\\n                          onValueChange={(value) => setVoice(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger\\n                              render={<InputGroupButton size=\\\"icon-xs\\\" />}\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"InfoIcon\\\"\\n                                tabler=\\\"IconInfoCircle\\\"\\n                                hugeicons=\\\"AlertCircleIcon\\\"\\n                                phosphor=\\\"InfoIcon\\\"\\n                                remixicon=\\\"RiInformationLine\\\"\\n                              />\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: DialogPrimitive.Backdrop.Props) {\\n  return (\\n    <DialogPrimitive.Backdrop\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: DialogPrimitive.Popup.Props & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Popup\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-background p-6 text-sm ring-1 ring-foreground/5 duration-100 outline-none sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-4 right-4\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Popup>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close render={<Button variant=\\\"outline\\\" />}>\\n          Close\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base leading-none font-medium\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: DialogPrimitive.Description.Props) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nexport {\\n  DirectionProvider,\\n  useDirection,\\n} from \\\"@base-ui/react/direction-provider\\\"\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n      \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-maia/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-transparent p-4 text-sm before:absolute before:inset-2 before:-z-10 before:rounded-4xl before:border before:border-border before:bg-background data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuSides />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>GitHub</DropdownMenuItem>\\n          <DropdownMenuItem>Support</DropdownMenuItem>\\n          <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <DropdownMenu key={side}>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent side={side}>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>Profile</DropdownMenuItem>\\n                <DropdownMenuItem>Billing</DropdownMenuItem>\\n                <DropdownMenuItem>Settings</DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"UserIcon\\\"\\n              tabler=\\\"IconUser\\\"\\n              hugeicons=\\\"UserIcon\\\"\\n              phosphor=\\\"UserIcon\\\"\\n              remixicon=\\\"RiUserLine\\\"\\n            />\\n            Profile\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"CreditCardIcon\\\"\\n              tabler=\\\"IconCreditCard\\\"\\n              hugeicons=\\\"CreditCardIcon\\\"\\n              phosphor=\\\"CreditCardIcon\\\"\\n              remixicon=\\\"RiBankCardLine\\\"\\n            />\\n            Billing\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n            Settings\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"LogOutIcon\\\"\\n              tabler=\\\"IconLogout\\\"\\n              hugeicons=\\\"LogoutIcon\\\"\\n              phosphor=\\\"SignOutIcon\\\"\\n              remixicon=\\\"RiLogoutBoxLine\\\"\\n            />\\n            Log out\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            Log out\\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuItem>Email</DropdownMenuItem>\\n                  <DropdownMenuItem>Message</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>More...</DropdownMenuItem>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Checkboxes\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Radio Group\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Notifications\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Payment Method\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Actions\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"PencilIcon\\\"\\n              tabler=\\\"IconPencil\\\"\\n              hugeicons=\\\"EditIcon\\\"\\n              phosphor=\\\"PencilIcon\\\"\\n              remixicon=\\\"RiPencilLine\\\"\\n            />\\n            Edit\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"ShareIcon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n            Share\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ArchiveIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n            Archive\\n          </DropdownMenuItem>\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"DeleteIcon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n            Delete\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuItem>\\n        <IconPlaceholder\\n          lucide=\\\"LogOutIcon\\\"\\n          tabler=\\\"IconLogout\\\"\\n          hugeicons=\\\"LogoutIcon\\\"\\n          phosphor=\\\"SignOutIcon\\\"\\n          remixicon=\\\"RiLogoutBoxLine\\\"\\n        />\\n        Sign Out\\n      </DropdownMenuItem>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n              <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                shadcn@example.com\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto text-muted-foreground\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--anchor-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Menu\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ClipboardPasteIcon\\\"\\n                  tabler=\\\"IconClipboard\\\"\\n                  hugeicons=\\\"ClipboardIcon\\\"\\n                  phosphor=\\\"ClipboardIcon\\\"\\n                  remixicon=\\\"RiClipboardLine\\\"\\n                />\\n                Paste\\n              </DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                    <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                    <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Complex Menu\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\\n  return <MenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\\n  return <MenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n}\\n\\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\\n  return <MenuPrimitive.Trigger data-slot=\\\"dropdown-menu-trigger\\\" {...props} />\\n}\\n\\nfunction DropdownMenuContent({\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  className,\\n  ...props\\n}: MenuPrimitive.Popup.Props &\\n  Pick<\\n    MenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <MenuPrimitive.Portal>\\n      <MenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <MenuPrimitive.Popup\\n          data-slot=\\\"dropdown-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-48 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </MenuPrimitive.Positioner>\\n    </MenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\\n  return <MenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: MenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.GroupLabel\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-3 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: MenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex cursor-default items-center gap-2.5 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\\n  return <MenuPrimitive.SubmenuRoot data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: MenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </MenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  align = \\\"start\\\",\\n  alignOffset = -3,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent w-auto min-w-36 rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      align={align}\\n      alignOffset={alignOffset}\\n      side={side}\\n      sideOffset={sideOffset}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <MenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: MenuPrimitive.Separator.Props) {\\n  return (\\n    <MenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-maia/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-maia/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-lg border-dashed p-12 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-lg font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-maia/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/base-maia/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-maia/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-maia/ui/native-select\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-maia/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport { Slider } from \\\"@/registry/base-maia/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-maia/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-maia/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  const basicItems = [\\n    { label: \\\"Choose an option\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const countryItems = [\\n    { label: \\\"Select your country\\\", value: null },\\n    { label: \\\"United States\\\", value: \\\"us\\\" },\\n    { label: \\\"United Kingdom\\\", value: \\\"uk\\\" },\\n    { label: \\\"Canada\\\", value: \\\"ca\\\" },\\n  ]\\n  const timezoneItems = [\\n    { label: \\\"Select timezone\\\", value: null },\\n    { label: \\\"UTC\\\", value: \\\"utc\\\" },\\n    { label: \\\"Eastern Time\\\", value: \\\"est\\\" },\\n    { label: \\\"Pacific Time\\\", value: \\\"pst\\\" },\\n  ]\\n  const invalidItems = [\\n    { label: \\\"This field has an error\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const disabledItems = [\\n    { label: \\\"Cannot select\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select items={countryItems}>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {countryItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select items={timezoneItems}>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {timezoneItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select items={invalidItems}>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {invalidItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select items={disabledItems} disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {disabledItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={(value) => setVolume(value as number[])}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={(value) => setBrightness(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={(value) => setTemperature(value as number[])}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={(value) => setPriceRange(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={(value) => setColorBalance(value as number[])}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  const basicItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Orange\\\", value: \\\"orange\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-1 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-sm font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/base-maia/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\n  \\\"inline-start\\\",\\n  \\\"left\\\",\\n  \\\"top\\\",\\n  \\\"bottom\\\",\\n  \\\"right\\\",\\n  \\\"inline-end\\\",\\n] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-2\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side}>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side}>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side.replace(\\\"-\\\", \\\" \\\")} side\\n                  of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Hover me\\n            </HoverCardTrigger>\\n            <HoverCardContent>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { PreviewCard as PreviewCardPrimitive } from \\\"@base-ui/react/preview-card\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\\n  return <PreviewCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\\n  return (\\n    <PreviewCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 4,\\n  ...props\\n}: PreviewCardPrimitive.Popup.Props &\\n  Pick<\\n    PreviewCardPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PreviewCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <PreviewCardPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PreviewCardPrimitive.Popup\\n          data-slot=\\\"hover-card-content\\\"\\n          className={cn(\\n            \\\"z-50 w-72 origin-(--transform-origin) rounded-2xl bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PreviewCardPrimitive.Positioner>\\n    </PreviewCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-maia/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-maia/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-maia/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-maia/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/base-maia/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/base-maia/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\" />\\n                  }\\n                >\\n                  {country}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDownIcon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger render={<InputGroupAddon />} nativeButton={false}>\\n                <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/base-maia/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-9 w-full min-w-0 items-center rounded-4xl border border-input bg-input/30 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-2xl has-data-[align=block-start]:rounded-2xl has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-xl has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-2 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-4xl **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:px-1.5 [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-3 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-3 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-3 [.border-b]:pb-3\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-3 [.border-t]:pt-3\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 rounded-4xl text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 px-1.5 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"\\\",\\n        \\\"icon-xs\\\": \\\"size-6 p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\" | \\\"type\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants> & {\\n    type?: \\\"button\\\" | \\\"submit\\\" | \\\"reset\\\"\\n  }) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-maia/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-4xl has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-9 items-center justify-center border-y border-r border-input bg-input/30 text-sm transition-all outline-none first:rounded-l-4xl first:border-l last:rounded-r-4xl aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Input as InputPrimitive } from \\\"@base-ui/react/input\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <InputPrimitive\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-9 w-full min-w-0 rounded-4xl border border-input bg-input/30 px-3 py-1 text-base transition-colors outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/base-maia/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-2xl border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-3.5 px-4 py-3.5\\\",\\n        sm: \\\"gap-3.5 px-3.5 py-3\\\",\\n        xs: \\\"gap-2.5 px-3 py-2.5 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(itemVariants({ variant, size, className })),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"item\\\",\\n      variant,\\n      size,\\n    },\\n  })\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-lg group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 group-data-[size=xs]/item:rounded-md [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0.5 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-sm font-normal text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-maia/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button size=\\\"icon-sm\\\" variant=\\\"outline\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-maia/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/base-maia/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Label({ className, ...props }: React.ComponentProps<\\\"label\\\">) {\\n  return (\\n    <label\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-maia/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-maia/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-maia/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-maia/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-maia/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/base-maia/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarSides />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Menubar key={side}>\\n            <MenubarMenu>\\n              <MenubarTrigger className=\\\"capitalize\\\">\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </MenubarTrigger>\\n              <MenubarContent side={side}>\\n                <MenubarGroup>\\n                  <MenubarItem>New Tab</MenubarItem>\\n                  <MenubarItem>New Window</MenubarItem>\\n                  <MenubarItem>New Incognito Window</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Email link</MenubarItem>\\n                <MenubarItem>Messages</MenubarItem>\\n                <MenubarItem>Notes</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Find...</MenubarItem>\\n                <MenubarItem>Find Next</MenubarItem>\\n                <MenubarItem>Find Previous</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>\\n              Always Show Full URLs\\n            </MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>\\n              Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled inset>\\n              Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Edit...</MenubarItem>\\n            <MenubarItem inset>Add Profile...</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save <MenubarShortcut>⌘S</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"BoldIcon\\\"\\n                tabler=\\\"IconBold\\\"\\n                hugeicons=\\\"TextBoldIcon\\\"\\n                phosphor=\\\"TextBIcon\\\"\\n                remixicon=\\\"RiBold\\\"\\n              />\\n              Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"ItalicIcon\\\"\\n                tabler=\\\"IconItalic\\\"\\n                hugeicons=\\\"TextItalicIcon\\\"\\n                phosphor=\\\"TextItalicIcon\\\"\\n                remixicon=\\\"RiItalic\\\"\\n              />\\n              Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UnderlineIcon\\\"\\n                tabler=\\\"IconUnderline\\\"\\n                hugeicons=\\\"TextUnderlineIcon\\\"\\n                phosphor=\\\"TextUnderlineIcon\\\"\\n                remixicon=\\\"RiUnderline\\\"\\n              />\\n              Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Zoom In</MenubarItem>\\n            <MenubarItem inset>Zoom Out</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Image</MenubarItem>\\n                <MenubarItem>Video</MenubarItem>\\n                <MenubarItem>Audio</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"LinkIcon\\\"\\n                tabler=\\\"IconLink\\\"\\n                hugeicons=\\\"LinkIcon\\\"\\n                phosphor=\\\"LinkIcon\\\"\\n                remixicon=\\\"RiLinksLine\\\"\\n              />\\n              Link <MenubarShortcut>⌘K</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"TableIcon\\\"\\n                tabler=\\\"IconTable\\\"\\n                hugeicons=\\\"TableIcon\\\"\\n                phosphor=\\\"TableIcon\\\"\\n                remixicon=\\\"RiTableLine\\\"\\n              />\\n              Table\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n              />\\n              Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"CheckIcon\\\"\\n                tabler=\\\"IconCheck\\\"\\n                hugeicons=\\\"Tick02Icon\\\"\\n                phosphor=\\\"CheckIcon\\\"\\n                remixicon=\\\"RiCheckLine\\\"\\n              />\\n              Spell Check\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign out\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </MenubarItem>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarItem>Save Page...</MenubarItem>\\n                    <MenubarItem>Create Shortcut...</MenubarItem>\\n                    <MenubarItem>Name Window...</MenubarItem>\\n                    <MenubarSeparator />\\n                    <MenubarItem>Developer Tools</MenubarItem>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n                <MenubarItem>\\n                  Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"registryDependencies\": [\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"@base-ui/react/menubar\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({ className, ...props }: MenubarPrimitive.Props) {\\n  return (\\n    <MenubarPrimitive\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\\"flex h-9 items-center rounded-4xl border p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\\n  return <DropdownMenu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuGroup>) {\\n  return <DropdownMenuGroup data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPortal>) {\\n  return <DropdownMenuPortal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuTrigger>) {\\n  return (\\n    <DropdownMenuTrigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-xl px-2 py-0.75 text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"menubar-content\\\"\\n      align={align}\\n      alignOffset={alignOffset}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-48 rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuItem>) {\\n  return (\\n    <DropdownMenuItem\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item gap-2.5 rounded-xl px-3 py-2 text-sm focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-3 pl-9.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-3 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {\\n  return <DropdownMenuRadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-3 pl-9.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-3 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuLabel> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuLabel\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-3.5 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSeparator>) {\\n  return (\\n    <DropdownMenuSeparator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuShortcut>) {\\n  return (\\n    <DropdownMenuShortcut\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSub>) {\\n  return <DropdownMenuSub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuSubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"gap-2 rounded-xl px-3 py-2 text-sm focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubContent>) {\\n  return (\\n    <DropdownMenuSubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-32 rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-maia/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-9 w-full min-w-0 appearance-none rounded-4xl border border-input bg-input/30 py-1 pr-8 pl-3 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-[size=sm]:h-8 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-muted-foreground select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/base-maia/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuBasic />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Backlog\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    To Do\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Done\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              render={<Link href=\\\"/docs\\\" />}\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              Documentation\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink render={<Link href={href} />}>\\n        <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n          <div className=\\\"leading-none font-medium\\\">{title}</div>\\n          <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n        </div>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/navigation-menu.tsx\",\n      \"content\": \"import { NavigationMenu as NavigationMenuPrimitive } from \\\"@base-ui/react/navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  align = \\\"start\\\",\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Root.Props &\\n  Pick<NavigationMenuPrimitive.Positioner.Props, \\\"align\\\">) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <NavigationMenuPositioner align={align} />\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-2xl bg-background px-4.5 py-2.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Trigger.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Content.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-2.5 pr-3 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/5 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuPositioner({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 8,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  ...props\\n}: NavigationMenuPrimitive.Positioner.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Portal>\\n      <NavigationMenuPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        className={cn(\\n          \\\"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <NavigationMenuPrimitive.Popup className=\\\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-2xl bg-popover text-popover-foreground shadow ring-1 ring-foreground/5 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\\\">\\n          <NavigationMenuPrimitive.Viewport className=\\\"relative size-full overflow-hidden\\\" />\\n        </NavigationMenuPrimitive.Popup>\\n      </NavigationMenuPrimitive.Positioner>\\n    </NavigationMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Link.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-1.5 rounded-xl p-3 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-muted/50 data-[active=true]:hover:bg-muted data-[active=true]:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {\\n  return (\\n    <NavigationMenuPrimitive.Icon\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Icon>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuIndicator,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n  NavigationMenuPositioner,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/pagination-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-maia/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/base-maia/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n      nativeButton={false}\\n      render={\\n        <a\\n          aria-current={isActive ? \\\"page\\\" : undefined}\\n          data-slot=\\\"pagination-link\\\"\\n          data-active={isActive}\\n          {...props}\\n        />\\n      }\\n    />\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-2!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-2!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-maia/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverSides />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-col gap-2\\\">\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"inline-start\\\", \\\"left\\\", \\\"top\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"bottom\\\", \\\"right\\\", \\\"inline-end\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Start\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Center\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            End\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Popover\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"@base-ui/react/popover\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  ...props\\n}: PopoverPrimitive.Popup.Props &\\n  Pick<\\n    PopoverPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PopoverPrimitive.Popup\\n          data-slot=\\\"popover-content\\\"\\n          className={cn(\\n            \\\"z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-2xl bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PopoverPrimitive.Positioner>\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\\n  return (\\n    <PopoverPrimitive.Title\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading text-base font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: PopoverPrimitive.Description.Props) {\\n  return (\\n    <PopoverPrimitive.Description\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"chart\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/base-maia/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/base-maia/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/base-maia/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/base-maia/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/base-maia/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/base-maia/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/base-maia/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/base-maia/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/base-maia/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/base-maia/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/base-maia/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/base-maia/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/base-maia/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/base-maia/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/base-maia/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/base-maia/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/base-maia/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/base-maia/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/base-maia/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/base-maia/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/base-maia/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/base-maia/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/base-maia/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/base-maia/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/base-maia/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/base-maia/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/base-maia/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/base-maia/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/base-maia/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/base-maia/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/base-maia/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-maia/ui/item\\\"\\nimport {\\n  Progress,\\n  ProgressLabel,\\n  ProgressValue,\\n} from \\\"@/registry/base-maia/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/base-maia/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Progress value={56}>\\n        <ProgressLabel>Upload progress</ProgressLabel>\\n        <ProgressValue />\\n      </Progress>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState(50)\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={(value) => setValue(value as number)}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Progress as ProgressPrimitive } from \\\"@base-ui/react/progress\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  children,\\n  value,\\n  ...props\\n}: ProgressPrimitive.Root.Props) {\\n  return (\\n    <ProgressPrimitive.Root\\n      value={value}\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\\"flex flex-wrap gap-3\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <ProgressTrack>\\n        <ProgressIndicator />\\n      </ProgressTrack>\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\\n  return (\\n    <ProgressPrimitive.Track\\n      className={cn(\\n        \\\"relative flex h-3 w-full items-center overflow-x-hidden rounded-4xl bg-muted\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-track\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressIndicator({\\n  className,\\n  ...props\\n}: ProgressPrimitive.Indicator.Props) {\\n  return (\\n    <ProgressPrimitive.Indicator\\n      data-slot=\\\"progress-indicator\\\"\\n      className={cn(\\\"h-full bg-primary transition-all\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\\n  return (\\n    <ProgressPrimitive.Label\\n      className={cn(\\\"text-sm font-medium\\\", className)}\\n      data-slot=\\\"progress-label\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\\n  return (\\n    <ProgressPrimitive.Value\\n      className={cn(\\n        \\\"ml-auto text-sm text-muted-foreground tabular-nums\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-value\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Progress,\\n  ProgressTrack,\\n  ProgressIndicator,\\n  ProgressLabel,\\n  ProgressValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-maia/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Radio as RadioPrimitive } from \\\"@base-ui/react/radio\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"@base-ui/react/radio-group\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\\n  return (\\n    <RadioGroupPrimitive\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\\n  return (\\n    <RadioPrimitive.Root\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioPrimitive.Indicator>\\n    </RadioPrimitive.Root>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"registryDependencies\": [\"dropdown-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\",\n        \"use-mobile\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n          \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"chart\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-maia/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-maia/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/base-maia/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/base-maia/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"@base-ui/react/scroll-area\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: ScrollAreaPrimitive.Root.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: ScrollAreaPrimitive.Scrollbar.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Scrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Thumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.Scrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-maia/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-maia/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectSides />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectMultiple />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSides() {\\n  const items = [\\n    { label: \\\"Select\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Select key={side} items={items}>\\n            <SelectTrigger className=\\\"w-28 capitalize\\\">\\n              <SelectValue placeholder={side.replace(\\\"-\\\", \\\" \\\")} />\\n            </SelectTrigger>\\n            <SelectContent side={side} alignItemWithTrigger={false}>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  const items = [\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Chart Type\\n        </>\\n      ),\\n      value: null,\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Line\\n        </>\\n      ),\\n      value: \\\"line\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartBarIcon\\\"\\n            tabler=\\\"IconChartBar\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartBarIcon\\\"\\n            remixicon=\\\"RiBarChartLine\\\"\\n          />\\n          Bar\\n        </>\\n      ),\\n      value: \\\"bar\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartPieIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n          Pie\\n        </>\\n      ),\\n      value: \\\"pie\\\",\\n    },\\n  ]\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  const fruits = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  const vegetables = [\\n    { label: \\\"Carrot\\\", value: \\\"carrot\\\" },\\n    { label: \\\"Broccoli\\\", value: \\\"broccoli\\\" },\\n    { label: \\\"Spinach\\\", value: \\\"spinach\\\" },\\n  ]\\n  const allItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    ...fruits,\\n    ...vegetables,\\n  ]\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select items={allItems}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            {fruits.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            {vegetables.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  const items = [\\n    { label: \\\"Select an item\\\", value: null },\\n    ...Array.from({ length: 100 }).map((_, i) => ({\\n      label: `Item ${i}`,\\n      value: `item-${i}`,\\n    })),\\n  ]\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Item Aligned\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent alignItemWithTrigger={true}>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select items={items}>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select items={items}>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  const items = [\\n    { label: \\\"Filter\\\", value: null },\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Inactive\\\", value: \\\"inactive\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items}>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select items={items} disabled>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select\\n        defaultValue={plans[0]}\\n        itemToStringValue={(plan: (typeof plans)[number]) => plan.name}\\n      >\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {(value: (typeof plans)[number]) => <SelectPlanItem plan={value} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectMultiple() {\\n  const items = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n    { label: \\\"Strawberry\\\", value: \\\"strawberry\\\" },\\n    { label: \\\"Watermelon\\\", value: \\\"watermelon\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Multiple Selection\\\">\\n      <Select items={items} multiple defaultValue={[]}>\\n        <SelectTrigger className=\\\"w-72\\\">\\n          <SelectValue>\\n            {(value: string[]) => {\\n              if (value.length === 0) {\\n                return \\\"Select fruits\\\"\\n              }\\n              if (value.length === 1) {\\n                return items.find((item) => item.value === value[0])?.label\\n              }\\n              return `${value.length} fruits selected`\\n            }}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"@base-ui/react/select\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Select = SelectPrimitive.Root\\n\\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1 p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\\n  return (\\n    <SelectPrimitive.Value\\n      data-slot=\\\"select-value\\\"\\n      className={cn(\\\"flex flex-1 text-left\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: SelectPrimitive.Trigger.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-4xl border border-input bg-input/30 px-3 py-2 text-sm whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon\\n        render={\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n            className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n          />\\n        }\\n      />\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  alignItemWithTrigger = true,\\n  ...props\\n}: SelectPrimitive.Popup.Props &\\n  Pick<\\n    SelectPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\" | \\\"alignItemWithTrigger\\\"\\n  >) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        alignItemWithTrigger={alignItemWithTrigger}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <SelectPrimitive.Popup\\n          data-slot=\\\"select-content\\\"\\n          data-align-trigger={alignItemWithTrigger}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <SelectScrollUpButton />\\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\\n          <SelectScrollDownButton />\\n        </SelectPrimitive.Popup>\\n      </SelectPrimitive.Positioner>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: SelectPrimitive.GroupLabel.Props) {\\n  return (\\n    <SelectPrimitive.GroupLabel\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-3 py-2.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: SelectPrimitive.Item.Props) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SelectPrimitive.ItemText className=\\\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\\\">\\n        {children}\\n      </SelectPrimitive.ItemText>\\n      <SelectPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </SelectPrimitive.ItemIndicator>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: SelectPrimitive.Separator.Props) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\n        \\\"pointer-events-none -mx-1 my-1 h-px bg-border/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollUpArrow\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpArrow>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollDownArrow\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownArrow>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Separator as SeparatorPrimitive } from \\\"@base-ui/react/separator\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: SeparatorPrimitive.Props) {\\n  return (\\n    <SeparatorPrimitive\\n      data-slot=\\\"separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/base-maia/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>Open</SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose render={<Button variant=\\\"outline\\\" />}>Close</SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side}\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose render={<Button variant=\\\"outline\\\" />}>\\n                  Cancel\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\\n  return (\\n    <SheetPrimitive.Backdrop\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: SheetPrimitive.Popup.Props & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Popup\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close\\n            data-slot=\\\"sheet-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-4 right-4\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Popup>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-1.5 p-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: SheetPrimitive.Description.Props) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-maia/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-maia/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      isActive={item.isActive}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-maia/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-maia/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-maia/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton render={<CollapsibleTrigger />}>\\n                    {item.title}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"PlusIcon\\\"\\n                      tabler=\\\"IconPlus\\\"\\n                      hugeicons=\\\"PlusSignIcon\\\"\\n                      phosphor=\\\"PlusIcon\\\"\\n                      remixicon=\\\"RiAddLine\\\"\\n                      className=\\\"ml-auto group-aria-expanded/menu-button:hidden\\\"\\n                    />\\n                    <IconPlaceholder\\n                      lucide=\\\"MinusIcon\\\"\\n                      tabler=\\\"IconMinus\\\"\\n                      hugeicons=\\\"MinusSignIcon\\\"\\n                      phosphor=\\\"MinusIcon\\\"\\n                      remixicon=\\\"RiSubtractLine\\\"\\n                      className=\\\"ml-auto hidden group-aria-expanded/menu-button:block\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              isActive={item.isActive}\\n                              render={<a href={item.url} />}\\n                            >\\n                              {item.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-maia/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/base-maia/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuButton className=\\\"aria-expanded:bg-muted\\\" />\\n                }\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                  className=\\\"ml-auto\\\"\\n                />\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem\\n                      key={item.title}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-maia/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-maia/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/base-maia/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-maia/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n            render={<SidebarMenuItem />}\\n          >\\n            <CollapsibleTrigger\\n              render={<SidebarMenuButton tooltip={item.title} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"ml-auto transition-transform duration-200 group-data-open/collapsible:rotate-90\\\"\\n              />\\n            </CollapsibleTrigger>\\n            <CollapsibleContent>\\n              <SidebarMenuSub>\\n                {item.items?.map((subItem) => (\\n                  <SidebarMenuSubItem key={subItem.title}>\\n                    <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                      <span>{subItem.title}</span>\\n                    </SidebarMenuSubButton>\\n                  </SidebarMenuSubItem>\\n                ))}\\n              </SidebarMenuSub>\\n            </CollapsibleContent>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-maia/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-maia/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-maia/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-maia/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <CollapsibleTrigger\\n                  render={\\n                    <SidebarMenuAction className=\\\"aria-expanded:rotate-90\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </CollapsibleTrigger>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/base-maia/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/base-maia/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0\\\"\\n                render={<a href=\\\"#\\\" />}\\n              >\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0 data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/base-maia/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-maia/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-maia/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-maia/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-maia/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-maia/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-maia/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"icon\\\"\\n              className=\\\"h-7 w-7 data-open:bg-accent\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"MoreHorizontalIcon\\\"\\n            tabler=\\\"IconDots\\\"\\n            hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeOutlineIcon\\\"\\n            remixicon=\\\"RiMoreLine\\\"\\n          />\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"StarOffIcon\\\"\\n                      tabler=\\\"IconStarOff\\\"\\n                      hugeicons=\\\"StarOffIcon\\\"\\n                      phosphor=\\\"StarIcon\\\"\\n                      remixicon=\\\"RiStarOffLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Remove from Favorites</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"LinkIcon\\\"\\n                      tabler=\\\"IconLink\\\"\\n                      hugeicons=\\\"LinkIcon\\\"\\n                      phosphor=\\\"LinkIcon\\\"\\n                      remixicon=\\\"RiLinksLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Copy Link</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArrowUpRightIcon\\\"\\n                      tabler=\\\"IconArrowUpRight\\\"\\n                      hugeicons=\\\"ArrowUpRightIcon\\\"\\n                      phosphor=\\\"ArrowUpRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightUpLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Open in New Tab</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Delete</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={<SidebarMenuButton className=\\\"w-fit px-1.5\\\" />}\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\ntype TreeItem = string | TreeItem[]\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <SidebarMenuButton render={<CollapsibleTrigger />}>\\n          <IconPlaceholder\\n            lucide=\\\"ChevronRightIcon\\\"\\n            tabler=\\\"IconChevronRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"CaretRightIcon\\\"\\n            remixicon=\\\"RiArrowRightSLine\\\"\\n            className=\\\"transition-transform\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"FolderIcon\\\"\\n            tabler=\\\"IconFolder\\\"\\n            hugeicons=\\\"FolderIcon\\\"\\n            phosphor=\\\"FolderIcon\\\"\\n            remixicon=\\\"RiFolderLine\\\"\\n          />\\n          {name}\\n        </SidebarMenuButton>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-maia/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-maia/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-maia/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-maia/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/base-maia/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-maia/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger render={<Button size=\\\"sm\\\" />}>Open Dialog</DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                          render={<a href=\\\"#\\\" />}\\n                        >\\n                          {item.icon}\\n                          <span>{item.name}</span>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({\\n                length: 10,\\n              }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                  >\\n                    {item.title}\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            isActive={item.isActive}\\n                            render={<a href={item.url} />}\\n                          >\\n                            {item.title}\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/base-maia/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/base-maia/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-maia/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-maia/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-maia/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-maia/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-maia/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-maia/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-maia/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-maia/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-maia/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton className=\\\"w-fit px-1.5 aria-expanded:bg-muted aria-expanded:text-foreground\\\" />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-maia/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/base-maia/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-maia/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-maia/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-maia/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-maia/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"aria-expanded:rotate-90\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"aria-expanded:bg-muted aria-expanded:text-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-maia/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-maia/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-maia/ui/item\\\"\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v{selectedVersion}</ItemDescription>\\n                    </ItemContent>\\n                    <ItemActions>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronsUpDownIcon\\\"\\n                        tabler=\\\"IconSelector\\\"\\n                        hugeicons=\\\"UnfoldMoreIcon\\\"\\n                        phosphor=\\\"CaretUpDownIcon\\\"\\n                        remixicon=\\\"RiArrowUpDownLine\\\"\\n                      />\\n                    </ItemActions>\\n                  </Item>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <IconPlaceholder\\n                          lucide=\\\"CheckIcon\\\"\\n                          tabler=\\\"IconCheck\\\"\\n                          hugeicons=\\\"Tick02Icon\\\"\\n                          phosphor=\\\"CheckIcon\\\"\\n                          remixicon=\\\"RiCheckLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton\\n                        render={<a href={subItem.url} />}\\n                        isActive={subItem.isActive}\\n                      >\\n                        {subItem.title}\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/base-maia/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-maia/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n                <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                    <ItemDescription>v1.0.0</ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger\\n                      render={\\n                        <SidebarMenuButton className=\\\"data-popup-open:bg-sidebar-accent data-popup-open:text-sidebar-accent-foreground\\\" />\\n                      }\\n                    >\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"MoreHorizontalIcon\\\"\\n                        tabler=\\\"IconDots\\\"\\n                        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                        phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                        remixicon=\\\"RiMoreLine\\\"\\n                        className=\\\"ml-auto\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem\\n                              render={<a href={subItem.url} />}\\n                              key={subItem.title}\\n                            >\\n                              {subItem.title}\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-maia/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-maia/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Button\\n                    size=\\\"icon-sm\\\"\\n                    render={<span />}\\n                    nativeButton={false}\\n                    className=\\\"size-8\\\"\\n                  >\\n                    <svg\\n                      xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                      viewBox=\\\"0 0 256 256\\\"\\n                    >\\n                      <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                      <line\\n                        x1=\\\"208\\\"\\n                        y1=\\\"128\\\"\\n                        x2=\\\"128\\\"\\n                        y2=\\\"208\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                      <line\\n                        x1=\\\"192\\\"\\n                        y1=\\\"40\\\"\\n                        x2=\\\"40\\\"\\n                        y2=\\\"192\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                    </svg>\\n                  </Button>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {activeTeam.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuGroup>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger\\n                      render={<SidebarMenuButton tooltip={item.title} />}\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                        className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                      />\\n                    </CollapsibleTrigger>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton\\n                              render={<a href={subItem.url} />}\\n                            >\\n                              {subItem.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton render={<a href={item.url} />}>\\n                    {item.icon}\\n                    {item.name}\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Avatar>\\n                    <AvatarImage src={data.user.avatar} alt={data.user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {data.user.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{data.user.email}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-maia/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  render={<SidebarMenuItem />}\\n                >\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} />}\\n                    isActive={item.isActive}\\n                  >\\n                    {item.icon}\\n                    <span>{item.title}</span>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <>\\n                      <CollapsibleTrigger\\n                        render={\\n                          <SidebarMenuAction className=\\\"data-open:rotate-90\\\" />\\n                        }\\n                      >\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                        />\\n                        <span className=\\\"sr-only\\\">Toggle</span>\\n                      </CollapsibleTrigger>\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((subItem) => (\\n                            <SidebarMenuSubItem key={subItem.title}>\\n                              <SidebarMenuSubButton\\n                                render={<a href={subItem.url} />}\\n                              >\\n                                {subItem.title}\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    </>\\n                  ) : null}\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton render={<a href={item.url} />} size=\\\"sm\\\">\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"separator\",\n    \"sheet\",\n    \"skeleton\",\n    \"tooltip\",\n    \"use-mobile\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-maia/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport { Separator } from \\\"@/registry/base-maia/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/base-maia/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/base-maia/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-2 p-2 [--radius:var(--radius-xl)]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-2 overflow-auto [--radius:var(--radius-xl)] group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & React.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-label\\\",\\n      sidebar: \\\"group-label\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> & React.ComponentProps<\\\"button\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-action\\\",\\n      sidebar: \\\"group-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-lg px-3 py-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 text-sm\\\",\\n        sm: \\\"h-8 text-xs\\\",\\n        lg: \\\"h-14 px-3 text-sm group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  render,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    isActive?: boolean\\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n  } & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const { isMobile, state } = useSidebar()\\n  const comp = useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(sidebarMenuButtonVariants({ variant, size }), className),\\n      },\\n      props\\n    ),\\n    render: !tooltip ? render : <TooltipTrigger render={render} />,\\n    state: {\\n      slot: \\\"sidebar-menu-button\\\",\\n      sidebar: \\\"menu-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n\\n  if (!tooltip) {\\n    return comp\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      {comp}\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  render,\\n  showOnHover = false,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    showOnHover?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-2 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          showOnHover &&\\n            \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-action\\\",\\n      sidebar: \\\"menu-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  render,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\"> &\\n  React.ComponentProps<\\\"a\\\"> & {\\n    size?: \\\"sm\\\" | \\\"md\\\"\\n    isActive?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-sub-button\\\",\\n      sidebar: \\\"menu-sub-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-maia/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-maia/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-maia/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-maia/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-maia/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-maia/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/base-maia/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/base-maia/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-xl bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport { Slider } from \\\"@/registry/base-maia/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={50} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={(value) => setValue(value as number[])}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"@base-ui/react/slider\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: SliderPrimitive.Root.Props) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      className={cn(\\\"data-horizontal:w-full data-vertical:h-full\\\", className)}\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      thumbAlignment=\\\"edge\\\"\\n      {...props}\\n    >\\n      <SliderPrimitive.Control className=\\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\">\\n        <SliderPrimitive.Track\\n          data-slot=\\\"slider-track\\\"\\n          className=\\\"relative grow overflow-hidden rounded-4xl bg-muted select-none data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3\\\"\\n        >\\n          <SliderPrimitive.Indicator\\n            data-slot=\\\"slider-range\\\"\\n            className=\\\"bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n          />\\n        </SliderPrimitive.Track>\\n        {Array.from({ length: _values.length }, (_, index) => (\\n          <SliderPrimitive.Thumb\\n            data-slot=\\\"slider-thumb\\\"\\n            key={index}\\n            className=\\\"block size-4 shrink-0 rounded-4xl border border-primary bg-white shadow-sm ring-ring/50 transition-colors select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\\\"\\n          />\\n        ))}\\n      </SliderPrimitive.Control>\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-maia/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-maia/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-maia/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/base-maia/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            nativeButton={false}\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Label } from \\\"@/registry/base-maia/ui/label\\\"\\nimport { Switch } from \\\"@/registry/base-maia/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Switch as SwitchPrimitive } from \\\"@base-ui/react/switch\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: SwitchPrimitive.Root.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/table-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-maia/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nconst people = [\\n  { value: \\\"sarah\\\", label: \\\"Sarah Chen\\\" },\\n  { value: \\\"marcus\\\", label: \\\"Marc Rodriguez\\\" },\\n  { value: \\\"emily\\\", label: \\\"Emily Watson\\\" },\\n  { value: \\\"david\\\", label: \\\"David Kim\\\" },\\n]\\n\\nconst tasks = [\\n  {\\n    task: \\\"Design homepage\\\",\\n    assignee: \\\"sarah\\\",\\n    status: \\\"In Progress\\\",\\n  },\\n  {\\n    task: \\\"Implement API\\\",\\n    assignee: \\\"marcus\\\",\\n    status: \\\"Pending\\\",\\n  },\\n  {\\n    task: \\\"Write tests\\\",\\n    assignee: \\\"emily\\\",\\n    status: \\\"Not Started\\\",\\n  },\\n]\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tasks.map((item) => (\\n            <TableRow key={item.task}>\\n              <TableCell className=\\\"font-medium\\\">{item.task}</TableCell>\\n              <TableCell>\\n                <Select\\n                  items={people}\\n                  defaultValue={people.find(\\n                    (person) => person.value === item.assignee\\n                  )}\\n                  itemToStringValue={(item) => {\\n                    return item.value\\n                  }}\\n                >\\n                  <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      {people.map((person) => (\\n                        <SelectItem key={person.value} value={person}>\\n                          {person.label}\\n                        </SelectItem>\\n                      ))}\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </TableCell>\\n              <TableCell>{item.status}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-12 px-3 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-maia/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-maia/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">More options</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tabs as TabsPrimitive } from \\\"@base-ui/react/tabs\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: TabsPrimitive.Root.Props) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-4xl p-[3px] text-muted-foreground group-data-horizontal/tabs:h-9 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col group-data-vertical/tabs:rounded-2xl data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\\n  return (\\n    <TabsPrimitive.Tab\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:px-2.5 group-data-vertical/tabs:py-1.5 hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\\n  return (\\n    <TabsPrimitive.Panel\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-sm outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/base-maia/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full resize-none rounded-xl border border-input bg-input/30 px-3 py-3 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/base-maia/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-maia/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-maia/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-maia/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup multiple spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" defaultValue={[\\\"all\\\"]}>\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup size=\\\"sm\\\" defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup multiple variant=\\\"outline\\\" spacing={2} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup defaultValue={[\\\"all\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        defaultValue={[\\\"today\\\"]}\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup defaultValue={[\\\"newest\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  const items = [\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Archived\\\", value: \\\"archived\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items} defaultValue={items[0]}>\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup defaultValue={[\\\"grid\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup multiple orientation=\\\"vertical\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        defaultValue={[\\\"all\\\"]}\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple orientation=\\\"vertical\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          value={[fontWeight]}\\n          onValueChange={(value) => setFontWeight(value[0])}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={1}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"@base-ui/react/toggle-group\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/base-maia/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: ToggleGroupPrimitive.Props &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-[spacing=0]:data-[variant=outline]:rounded-4xl data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-3 group-data-[spacing=0]/toggle-group:shadow-none focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-4xl group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-xl group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-4xl group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-xl data-[state=on]:bg-muted group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </TogglePrimitive>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-4xl text-sm font-medium whitespace-nowrap transition-colors outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 min-w-9 rounded-[min(var(--radius-2xl),12px)] px-2.5\\\",\\n        sm: \\\"h-8 min-w-8 px-3\\\",\\n        lg: \\\"h-10 min-w-10 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/base-maia/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/base-maia/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Info</span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<span className=\\\"inline-block w-fit\\\" />}>\\n          <Button variant=\\\"outline\\\" disabled>\\n            Disabled\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger\\n          render={\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n              onClick={(e) => e.preventDefault()}\\n            />\\n          }\\n        >\\n          Learn more\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Status\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tooltip as TooltipPrimitive } from \\\"@base-ui/react/tooltip\\\"\\n\\nimport { cn } from \\\"@/registry/base-maia/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delay = 0,\\n  ...props\\n}: TooltipPrimitive.Provider.Props) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delay={delay}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  side = \\\"top\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  children,\\n  ...props\\n}: TooltipPrimitive.Popup.Props &\\n  Pick<\\n    TooltipPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <TooltipPrimitive.Popup\\n          data-slot=\\\"tooltip-content\\\"\\n          className={cn(\\n            \\\"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-2xl bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-4xl data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          {children}\\n          <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:translate-x-[1.5px] data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:translate-x-[-1.5px] data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:translate-x-[-1.5px] data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:translate-x-[1.5px] data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\\\" />\\n        </TooltipPrimitive.Popup>\\n      </TooltipPrimitive.Positioner>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-maia/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-maia/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/base-mira/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion multiple className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            multiple\\n            defaultValue={[\\\"plans\\\"]}\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Accordion as AccordionPrimitive } from \\\"@base-ui/react/accordion\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\n        \\\"flex w-full flex-col overflow-hidden rounded-md border\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b data-open:bg-muted/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Trigger.Props) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between gap-6 border border-transparent p-2 text-left text-xs/relaxed font-medium transition-all outline-none hover:underline aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Panel.Props) {\\n  return (\\n    <AccordionPrimitive.Panel\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden px-2 text-xs/relaxed data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--accordion-panel-height) pt-0 pb-4 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Panel>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-mira/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger render={<Button variant=\\\"outline\\\">Small</Button>} />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default (Media)</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Small (Media)</Button>}\\n        />\\n\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"destructive\\\">Delete Chat</Button>}\\n        />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger render={<Button />}>\\n                Open Alert Dialog\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"@base-ui/react/alert-dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\n\\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: AlertDialogPrimitive.Backdrop.Props) {\\n  return (\\n    <AlertDialogPrimitive.Backdrop\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Popup.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Popup\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-3 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-64 data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-8 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  return (\\n    <Button\\n      data-slot=\\\"alert-dialog-action\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Close.Props &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <AlertDialogPrimitive.Close\\n      data-slot=\\\"alert-dialog-cancel\\\"\\n      className={cn(className)}\\n      render={<Button variant={variant} size={size} />}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/base-mira/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/base-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-lg border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\\"absolute top-1.5 right-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/base-mira/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/aspect-ratio.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction AspectRatio({\\n  ratio,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { ratio: number }) {\\n  return (\\n    <div\\n      data-slot=\\\"aspect-ratio\\\"\\n      style={\\n        {\\n          \\\"--ratio\\\": ratio,\\n        } as React.CSSProperties\\n      }\\n      className={cn(\\\"relative aspect-(--ratio)\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-mira/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"@base-ui/react/avatar\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AvatarPrimitive.Root.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: AvatarPrimitive.Fallback.Props) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs/relaxed text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-mira/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/base-mira/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"secondary\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"destructive\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"ghost\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/badge.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border bg-input/20 text-foreground dark:bg-input/30 [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"span\\\"> & VariantProps<typeof badgeVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"span\\\",\\n    props: mergeProps<\\\"span\\\">(\\n      {\\n        className: cn(badgeVariants({ variant }), className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"badge\\\",\\n      variant,\\n    },\\n  })\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\" />}\\n              >\\n                <BreadcrumbEllipsis />\\n                <span className=\\\"sr-only\\\">Toggle menu</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Home</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Components</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-xs/relaxed wrap-break-word text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\\"transition-colors hover:text-foreground\\\", className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"breadcrumb-link\\\",\\n    },\\n  })\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-4 items-center justify-center [&>svg]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/button-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <a href=\\\"#\\\" className={buttonVariants()}>\\n          Link\\n        </a>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-mira/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText render={<Label htmlFor=\\\"input-text\\\" />}>\\n            GPU Size\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeX\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nconst currencyItems = [\\n  { label: \\\"$\\\", value: \\\"$\\\" },\\n  { label: \\\"€\\\", value: \\\"€\\\" },\\n  { label: \\\"£\\\", value: \\\"£\\\" },\\n]\\n\\nfunction ButtonGroupWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select items={currencyItems} defaultValue={currencyItems[0]}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {currencyItems.map((item) => (\\n                  <SelectItem key={item.value} value={item}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button\\n          variant=\\\"outline\\\"\\n          size=\\\"icon\\\"\\n          className=\\\"w-12\\\"\\n          render={<span />}\\n          nativeButton={false}\\n        >\\n          1.2K\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nconst durationItems = [\\n  { label: \\\"Hours\\\", value: \\\"hours\\\" },\\n  { label: \\\"Days\\\", value: \\\"days\\\" },\\n  { label: \\\"Weeks\\\", value: \\\"weeks\\\" },\\n]\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select items={durationItems} defaultValue={durationItems[0]}>\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              {durationItems.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger render={<InputGroupAddon align=\\\"inline-end\\\" />}>\\n                <IconPlaceholder\\n                  lucide=\\\"AudioLinesIcon\\\"\\n                  tabler=\\\"IconHeadphones\\\"\\n                  hugeicons=\\\"AudioWave01Icon\\\"\\n                  phosphor=\\\"MicrophoneIcon\\\"\\n                  remixicon=\\\"RiMicLine\\\"\\n                />\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft02Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/button-group.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\\\",\\n        vertical:\\n          \\\"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex items-center gap-2 rounded-md border bg-muted px-2.5 text-xs/relaxed font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"button-group-text\\\",\\n    },\\n  })\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/button.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button as ButtonPrimitive } from \\\"@base-ui/react/button\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-xs/relaxed font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:bg-input/30\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-7 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        xs: \\\"h-5 gap-1 rounded-sm px-2 text-[0.625rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-2.5\\\",\\n        sm: \\\"h-6 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        lg: \\\"h-8 gap-1 px-2.5 text-xs/relaxed has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-4\\\",\\n        icon: \\\"size-7 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        \\\"icon-xs\\\": \\\"size-5 rounded-sm [&_svg:not([class*='size-'])]:size-2.5\\\",\\n        \\\"icon-sm\\\": \\\"size-6 [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-lg\\\": \\\"size-8 [&_svg:not([class*='size-'])]:size-4\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\\n  return (\\n    <ButtonPrimitive\\n      data-slot=\\\"button\\\"\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/base-mira/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-mira/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-mira/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-mira/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\" />}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"CalendarIcon\\\"\\n            tabler=\\\"IconCalendar\\\"\\n            hugeicons=\\\"CalendarIcon\\\"\\n            phosphor=\\\"CalendarBlankIcon\\\"\\n            remixicon=\\\"RiCalendarLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Open Calendar\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-simple\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-range\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date?.from ? (\\n              date.to ? (\\n                <>\\n                  {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                  {format(date.to, \\\"LLL dd, y\\\")}\\n                </>\\n              ) : (\\n                format(date.from, \\\"LLL dd, y\\\")\\n              )\\n            ) : (\\n              <span>Pick a date</span>\\n            )}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-with-dropdowns-desktop\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(6)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-4 overflow-hidden rounded-lg bg-card py-4 text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-4 group-data-[size=sm]/card:px-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-b-lg px-4 group-data-[size=sm]/card:px-3 [.border-t]:pt-4 group-data-[size=sm]/card:[.border-t]:pt-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/base-mira/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-mira/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs/relaxed shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-mira/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-mira/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox as CheckboxPrimitive } from \\\"@base-ui/react/checkbox\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/base-mira/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {fileItem.name}\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              {isOpen ? (\\n                <IconPlaceholder\\n                  lucide=\\\"MinimizeIcon\\\"\\n                  tabler=\\\"IconMinimize\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              ) : (\\n                <IconPlaceholder\\n                  lucide=\\\"MaximizeIcon\\\"\\n                  tabler=\\\"IconMaximize\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              )}\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"@base-ui/react/collapsible\\\"\\n\\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\\n  return (\\n    <CollapsiblePrimitive.Trigger data-slot=\\\"collapsible-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\\n  return (\\n    <CollapsiblePrimitive.Panel data-slot=\\\"collapsible-content\\\" {...props} />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/base-mira/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-mira/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxSides />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Combobox key={side} items={frameworks}>\\n            <ComboboxInput\\n              placeholder={side.replace(\\\"-\\\", \\\" \\\")}\\n              className=\\\"w-32 **:data-[slot=input-group-control]:capitalize\\\"\\n            />\\n            <ComboboxContent side={side}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen}>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst items = [\\n  {\\n    label: \\\"Select a framework\\\",\\n    value: null,\\n  },\\n  {\\n    label: \\\"React\\\",\\n    value: \\\"react\\\",\\n  },\\n  {\\n    label: \\\"Vue\\\",\\n    value: \\\"vue\\\",\\n  },\\n  {\\n    label: \\\"Angular\\\",\\n    value: \\\"angular\\\",\\n  },\\n  {\\n    label: \\\"Svelte\\\",\\n    value: \\\"svelte\\\",\\n  },\\n  {\\n    label: \\\"Solid\\\",\\n    value: \\\"solid\\\",\\n  },\\n  {\\n    label: \\\"Preact\\\",\\n    value: \\\"preact\\\",\\n  },\\n  {\\n    label: \\\"Next.js\\\",\\n    value: \\\"next.js\\\",\\n  },\\n]\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select items={items}>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-3.5 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            render={<ComboboxTrigger />}\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          />\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-7 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:bg-input/20 *:data-[slot=input-group]:shadow-none dark:bg-popover data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex min-h-7 w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-xs/relaxed text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-7 flex-wrap items-center gap-1 rounded-md border border-input bg-input/20 bg-clip-padding px-2 py-0.5 text-xs/relaxed transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/30 has-aria-invalid:border-destructive has-aria-invalid:ring-2 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(4.75))] w-fit items-center justify-center gap-1 rounded-[calc(var(--radius-sm)-2px)] bg-muted-foreground/10 px-1.5 text-xs/relaxed font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/base-mira/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-xl bg-popover p-1 text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: Omit<React.ComponentProps<typeof Dialog>, \\\"children\\\"> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n  children: React.ReactNode\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"p-1 pb-0\\\">\\n      <InputGroup className=\\\"h-8! bg-input/20 dark:bg-input/30\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-xs/relaxed outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-3.5 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-xs/relaxed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2.5 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none in-data-[slot=dialog-content]:rounded-md data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-selected:*:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-[0.625rem] tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-mira/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/base-mira/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/base-mira/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger render={<Button />}>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Show Dialog\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst roleItems = [\\n  { label: \\\"Developer\\\", value: \\\"developer\\\" },\\n  { label: \\\"Designer\\\", value: \\\"designer\\\" },\\n  { label: \\\"Manager\\\", value: \\\"manager\\\" },\\n  { label: \\\"Other\\\", value: \\\"other\\\" },\\n]\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreVerticalIcon\\\"\\n                  tabler=\\\"IconDotsVertical\\\"\\n                  hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                  remixicon=\\\"RiMore2Line\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select items={roleItems} defaultValue={null}>\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        {roleItems.map((item) => (\\n                          <SelectItem key={item.value} value={item.value}>\\n                            {item.label}\\n                          </SelectItem>\\n                        ))}\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <ContextMenu key={side}>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] items-center justify-center rounded-lg border p-4 text-sm capitalize\\\">\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </ContextMenuTrigger>\\n            <ContextMenuContent side={side}>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Back</ContextMenuItem>\\n                <ContextMenuItem>Forward</ContextMenuItem>\\n                <ContextMenuItem>Reload</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"@base-ui/react/context-menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Trigger.Props) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = 4,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  ...props\\n}: ContextMenuPrimitive.Popup.Props &\\n  Pick<\\n    ContextMenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <ContextMenuPrimitive.Popup\\n          data-slot=\\\"context-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ContextMenuPrimitive.Positioner>\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.GroupLabel\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs text-muted-foreground data-inset:pl-7.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: ContextMenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuRoot data-slot=\\\"context-menu-sub\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuContent>) {\\n  return (\\n    <ContextMenuContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className=\\\"cn-menu-target cn-menu-translucent shadow-lg\\\"\\n      side=\\\"right\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\">\\n        <ContextMenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: ContextMenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\">\\n        <ContextMenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Separator.Props) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-[0.625rem] tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/base-mira/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/base-mira/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/base-mira/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/base-mira/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/base-mira/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/base-mira/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-mira/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-mira/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n              render={<a href=\\\"#\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CommandIcon\\\"\\n                tabler=\\\"IconInnerShadowTop\\\"\\n                hugeicons=\\\"CommandIcon\\\"\\n                phosphor=\\\"CommandIcon\\\"\\n                remixicon=\\\"RiCommandLine\\\"\\n                className=\\\"size-5!\\\"\\n              />\\n              <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-mira/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-mira/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-mira/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            multiple={false}\\n            value={timeRange ? [timeRange] : []}\\n            onValueChange={(value) => {\\n              setTimeRange(value[0] ?? \\\"90d\\\")\\n            }}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select\\n            value={timeRange}\\n            onValueChange={(value) => {\\n              if (value !== null) {\\n                setTimeRange(value)\\n              }\\n            }}\\n          >\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-mira/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/base-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-mira/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/base-mira/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-mira/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-mira/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-mira/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={table.getIsAllPageRowsSelected()}\\n          indeterminate={\\n            table.getIsSomePageRowsSelected() &&\\n            !table.getIsAllPageRowsSelected()\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select\\n            items={[\\n              { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n              { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n            ]}\\n          >\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"flex size-8 text-muted-foreground data-open:bg-muted\\\"\\n              size=\\\"icon\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"EllipsisVerticalIcon\\\"\\n            tabler=\\\"IconDotsVertical\\\"\\n            hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeVerticalIcon\\\"\\n            remixicon=\\\"RiMore2Line\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Open menu</span>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select\\n          defaultValue=\\\"outline\\\"\\n          items={[\\n            { label: \\\"Outline\\\", value: \\\"outline\\\" },\\n            { label: \\\"Past Performance\\\", value: \\\"past-performance\\\" },\\n            { label: \\\"Key Personnel\\\", value: \\\"key-personnel\\\" },\\n            { label: \\\"Focus Documents\\\", value: \\\"focus-documents\\\" },\\n          ]}\\n        >\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"Columns3Icon\\\"\\n                tabler=\\\"IconLayoutColumns\\\"\\n                hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                phosphor=\\\"ColumnsIcon\\\"\\n                remixicon=\\\"RiLayoutColumnLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Columns\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n                items={[10, 20, 30, 40, 50].map((pageSize) => ({\\n                  label: `${pageSize}`,\\n                  value: `${pageSize}`,\\n                }))}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\nconst chartData = [\\n  {\\n    month: \\\"January\\\",\\n    desktop: 186,\\n    mobile: 80,\\n  },\\n  {\\n    month: \\\"February\\\",\\n    desktop: 305,\\n    mobile: 200,\\n  },\\n  {\\n    month: \\\"March\\\",\\n    desktop: 237,\\n    mobile: 120,\\n  },\\n  {\\n    month: \\\"April\\\",\\n    desktop: 73,\\n    mobile: 190,\\n  },\\n  {\\n    month: \\\"May\\\",\\n    desktop: 209,\\n    mobile: 130,\\n  },\\n  {\\n    month: \\\"June\\\",\\n    desktop: 214,\\n    mobile: 140,\\n  },\\n]\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select\\n                  defaultValue={item.type}\\n                  items={[\\n                    { label: \\\"Table of Contents\\\", value: \\\"Table of Contents\\\" },\\n                    { label: \\\"Executive Summary\\\", value: \\\"Executive Summary\\\" },\\n                    {\\n                      label: \\\"Technical Approach\\\",\\n                      value: \\\"Technical Approach\\\",\\n                    },\\n                    { label: \\\"Design\\\", value: \\\"Design\\\" },\\n                    { label: \\\"Capabilities\\\", value: \\\"Capabilities\\\" },\\n                    { label: \\\"Focus Documents\\\", value: \\\"Focus Documents\\\" },\\n                    { label: \\\"Narrative\\\", value: \\\"Narrative\\\" },\\n                    { label: \\\"Cover Page\\\", value: \\\"Cover Page\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select\\n                  defaultValue={item.status}\\n                  items={[\\n                    { label: \\\"Done\\\", value: \\\"Done\\\" },\\n                    { label: \\\"In Progress\\\", value: \\\"In Progress\\\" },\\n                    { label: \\\"Not Started\\\", value: \\\"Not Started\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select\\n                defaultValue={item.reviewer}\\n                items={[\\n                  { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n                  { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n                  { label: \\\"Emily Whalen\\\", value: \\\"Emily Whalen\\\" },\\n                ]}\\n              >\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\" />\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar className=\\\"size-8 rounded-lg grayscale\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs text-foreground/70\\\">\\n                {user.email}\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar className=\\\"size-8\\\">\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                      {user.email}\\n                    </span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/base-mira/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 h-4 data-vertical:self-auto\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-mira/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/base-mira/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/base-mira/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-mira/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-mira/ui/item\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-mira/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/base-mira/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-mira/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-mira/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback(\\n    (value: number | readonly number[]) => {\\n      if (typeof value === \\\"number\\\") {\\n        setSliderValue([value])\\n      } else {\\n        setSliderValue([...value])\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n                    <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                    <span className=\\\"block md:hidden\\\">Dialog</span>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger\\n                      render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronUpIcon\\\"\\n                        tabler=\\\"IconChevronUp\\\"\\n                        hugeicons=\\\"ArrowUp01Icon\\\"\\n                        phosphor=\\\"CaretUpIcon\\\"\\n                        remixicon=\\\"RiArrowUpSLine\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/base-mira/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-mira/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-mira/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport { Switch } from \\\"@/registry/base-mira/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-mira/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/base-mira/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n            Edit Profile\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n                Cancel\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Scrollable Content\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Sticky Footer\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"Auto\\\", value: \\\"auto\\\" },\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nconst themes = [\\n  { label: \\\"Light\\\", value: \\\"light\\\" },\\n  { label: \\\"Dark\\\", value: \\\"dark\\\" },\\n  { label: \\\"System\\\", value: \\\"system\\\" },\\n]\\n\\nconst accents = [\\n  { label: \\\"Default\\\", value: \\\"default\\\" },\\n  { label: \\\"Red\\\", value: \\\"red\\\" },\\n  { label: \\\"Blue\\\", value: \\\"blue\\\" },\\n  { label: \\\"Green\\\", value: \\\"green\\\" },\\n  { label: \\\"Purple\\\", value: \\\"purple\\\" },\\n  { label: \\\"Pink\\\", value: \\\"pink\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Chat Settings\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select\\n                          items={themes}\\n                          value={theme}\\n                          onValueChange={(value) => setTheme(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {themes.map((theme) => (\\n                                <SelectItem\\n                                  key={theme.value}\\n                                  value={theme.value}\\n                                >\\n                                  {theme.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          items={accents}\\n                          value={accentColor}\\n                          onValueChange={(value) =>\\n                            setAccentColor(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {accents.map((accent) => (\\n                                <SelectItem\\n                                  key={accent.value}\\n                                  value={accent.value}\\n                                >\\n                                  {accent.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          items={spokenLanguages}\\n                          value={spokenLanguage}\\n                          onValueChange={(value) =>\\n                            setSpokenLanguage(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select\\n                          items={voices}\\n                          value={voice}\\n                          onValueChange={(value) => setVoice(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger\\n                              render={<InputGroupButton size=\\\"icon-xs\\\" />}\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"InfoIcon\\\"\\n                                tabler=\\\"IconInfoCircle\\\"\\n                                hugeicons=\\\"AlertCircleIcon\\\"\\n                                phosphor=\\\"InfoIcon\\\"\\n                                remixicon=\\\"RiInformationLine\\\"\\n                              />\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: DialogPrimitive.Backdrop.Props) {\\n  return (\\n    <DialogPrimitive.Backdrop\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: DialogPrimitive.Popup.Props & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Popup\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-2 right-2\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Popup>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close render={<Button variant=\\\"outline\\\" />}>\\n          Close\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: DialogPrimitive.Description.Props) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nexport {\\n  DirectionProvider,\\n  useDirection,\\n} from \\\"@base-ui/react/direction-provider\\\"\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n      \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-mira/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-transparent p-2 text-xs/relaxed before:absolute before:inset-2 before:-z-10 before:rounded-xl before:border before:border-border before:bg-background data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-1 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuSides />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>GitHub</DropdownMenuItem>\\n          <DropdownMenuItem>Support</DropdownMenuItem>\\n          <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <DropdownMenu key={side}>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent side={side}>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>Profile</DropdownMenuItem>\\n                <DropdownMenuItem>Billing</DropdownMenuItem>\\n                <DropdownMenuItem>Settings</DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"UserIcon\\\"\\n              tabler=\\\"IconUser\\\"\\n              hugeicons=\\\"UserIcon\\\"\\n              phosphor=\\\"UserIcon\\\"\\n              remixicon=\\\"RiUserLine\\\"\\n            />\\n            Profile\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"CreditCardIcon\\\"\\n              tabler=\\\"IconCreditCard\\\"\\n              hugeicons=\\\"CreditCardIcon\\\"\\n              phosphor=\\\"CreditCardIcon\\\"\\n              remixicon=\\\"RiBankCardLine\\\"\\n            />\\n            Billing\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n            Settings\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"LogOutIcon\\\"\\n              tabler=\\\"IconLogout\\\"\\n              hugeicons=\\\"LogoutIcon\\\"\\n              phosphor=\\\"SignOutIcon\\\"\\n              remixicon=\\\"RiLogoutBoxLine\\\"\\n            />\\n            Log out\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            Log out\\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuItem>Email</DropdownMenuItem>\\n                  <DropdownMenuItem>Message</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>More...</DropdownMenuItem>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Checkboxes\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Radio Group\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Notifications\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Payment Method\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Actions\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"PencilIcon\\\"\\n              tabler=\\\"IconPencil\\\"\\n              hugeicons=\\\"EditIcon\\\"\\n              phosphor=\\\"PencilIcon\\\"\\n              remixicon=\\\"RiPencilLine\\\"\\n            />\\n            Edit\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"ShareIcon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n            Share\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ArchiveIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n            Archive\\n          </DropdownMenuItem>\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"DeleteIcon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n            Delete\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuItem>\\n        <IconPlaceholder\\n          lucide=\\\"LogOutIcon\\\"\\n          tabler=\\\"IconLogout\\\"\\n          hugeicons=\\\"LogoutIcon\\\"\\n          phosphor=\\\"SignOutIcon\\\"\\n          remixicon=\\\"RiLogoutBoxLine\\\"\\n        />\\n        Sign Out\\n      </DropdownMenuItem>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n              <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                shadcn@example.com\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto text-muted-foreground\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--anchor-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Menu\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ClipboardPasteIcon\\\"\\n                  tabler=\\\"IconClipboard\\\"\\n                  hugeicons=\\\"ClipboardIcon\\\"\\n                  phosphor=\\\"ClipboardIcon\\\"\\n                  remixicon=\\\"RiClipboardLine\\\"\\n                />\\n                Paste\\n              </DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                    <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                    <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Complex Menu\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\\n  return <MenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\\n  return <MenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n}\\n\\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\\n  return <MenuPrimitive.Trigger data-slot=\\\"dropdown-menu-trigger\\\" {...props} />\\n}\\n\\nfunction DropdownMenuContent({\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  className,\\n  ...props\\n}: MenuPrimitive.Popup.Props &\\n  Pick<\\n    MenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <MenuPrimitive.Portal>\\n      <MenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <MenuPrimitive.Popup\\n          data-slot=\\\"dropdown-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </MenuPrimitive.Positioner>\\n    </MenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\\n  return <MenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: MenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.GroupLabel\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs text-muted-foreground data-inset:pl-7.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: MenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\\n  return <MenuPrimitive.SubmenuRoot data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: MenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </MenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  align = \\\"start\\\",\\n  alignOffset = -3,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent w-auto min-w-32 rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      align={align}\\n      alignOffset={alignOffset}\\n      side={side}\\n      sideOffset={sideOffset}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <MenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: MenuPrimitive.Separator.Props) {\\n  return (\\n    <MenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-[0.625rem] tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-mira/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-mira/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-8 shrink-0 items-center justify-center rounded-md bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-xs/relaxed text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-mira/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/base-mira/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-mira/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-mira/ui/native-select\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-mira/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport { Slider } from \\\"@/registry/base-mira/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-mira/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-mira/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  const basicItems = [\\n    { label: \\\"Choose an option\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const countryItems = [\\n    { label: \\\"Select your country\\\", value: null },\\n    { label: \\\"United States\\\", value: \\\"us\\\" },\\n    { label: \\\"United Kingdom\\\", value: \\\"uk\\\" },\\n    { label: \\\"Canada\\\", value: \\\"ca\\\" },\\n  ]\\n  const timezoneItems = [\\n    { label: \\\"Select timezone\\\", value: null },\\n    { label: \\\"UTC\\\", value: \\\"utc\\\" },\\n    { label: \\\"Eastern Time\\\", value: \\\"est\\\" },\\n    { label: \\\"Pacific Time\\\", value: \\\"pst\\\" },\\n  ]\\n  const invalidItems = [\\n    { label: \\\"This field has an error\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const disabledItems = [\\n    { label: \\\"Cannot select\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select items={countryItems}>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {countryItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select items={timezoneItems}>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {timezoneItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select items={invalidItems}>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {invalidItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select items={disabledItems} disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {disabledItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={(value) => setVolume(value as number[])}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={(value) => setBrightness(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={(value) => setTemperature(value as number[])}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={(value) => setPriceRange(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={(value) => setColorBalance(value as number[])}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  const basicItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Orange\\\", value: \\\"orange\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-2 font-medium data-[variant=label]:text-xs/relaxed data-[variant=legend]:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-4 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-2 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-xs/relaxed leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-xs/relaxed leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-xs/relaxed group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-xs/relaxed font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/base-mira/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\n  \\\"inline-start\\\",\\n  \\\"left\\\",\\n  \\\"top\\\",\\n  \\\"bottom\\\",\\n  \\\"right\\\",\\n  \\\"inline-end\\\",\\n] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-2\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side}>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side}>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side.replace(\\\"-\\\", \\\" \\\")} side\\n                  of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Hover me\\n            </HoverCardTrigger>\\n            <HoverCardContent>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { PreviewCard as PreviewCardPrimitive } from \\\"@base-ui/react/preview-card\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\\n  return <PreviewCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\\n  return (\\n    <PreviewCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 4,\\n  ...props\\n}: PreviewCardPrimitive.Popup.Props &\\n  Pick<\\n    PreviewCardPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PreviewCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <PreviewCardPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PreviewCardPrimitive.Popup\\n          data-slot=\\\"hover-card-content\\\"\\n          className={cn(\\n            \\\"z-50 w-72 origin-(--transform-origin) rounded-lg bg-popover p-2.5 text-xs/relaxed text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PreviewCardPrimitive.Positioner>\\n    </PreviewCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-mira/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-mira/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-mira/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-mira/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/base-mira/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/base-mira/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\" />\\n                  }\\n                >\\n                  {country}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDownIcon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger render={<InputGroupAddon />} nativeButton={false}>\\n                <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/base-mira/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-7 w-full min-w-0 items-center rounded-md border border-input bg-input/20 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-md has-data-[align=block-start]:rounded-md has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/30 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-md has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-1 py-2 text-xs/relaxed font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-[calc(var(--radius-sm)-2px)] **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:px-1 **:data-[slot=kbd]:text-[0.625rem] [&>svg:not([class*='size-'])]:size-3.5\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-2 has-[>button]:ml-[-0.275rem] has-[>kbd]:ml-[-0.275rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-2 has-[>button]:mr-[-0.275rem] has-[>kbd]:mr-[-0.275rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-2 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-2 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 rounded-md text-xs/relaxed shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-5 gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1 [&>svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"gap-1\\\",\\n        \\\"icon-xs\\\": \\\"size-6 p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-7 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\" | \\\"type\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants> & {\\n    type?: \\\"button\\\" | \\\"submit\\\" | \\\"reset\\\"\\n  }) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-xs/relaxed text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-mira/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-2 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-7 items-center justify-center border-y border-r border-input bg-input/20 text-xs/relaxed transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-2 data-[active=true]:ring-ring/30 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Input as InputPrimitive } from \\\"@base-ui/react/input\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <InputPrimitive\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-7 w-full min-w-0 rounded-md border border-input bg-input/20 px-2 py-0.5 text-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-xs/relaxed file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/base-mira/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-md border text-xs/relaxed transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-2.5 px-3 py-2.5\\\",\\n        sm: \\\"gap-2.5 px-3 py-2.5\\\",\\n        xs: \\\"gap-2.5 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(itemVariants({ variant, size, className })),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"item\\\",\\n      variant,\\n      size,\\n    },\\n  })\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-8 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0.5 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-xs/relaxed leading-snug font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-xs/relaxed font-normal text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-mira/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button size=\\\"icon-sm\\\" variant=\\\"outline\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-xs bg-muted px-1 font-sans text-[0.625rem] font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-mira/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/base-mira/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Label({ className, ...props }: React.ComponentProps<\\\"label\\\">) {\\n  return (\\n    <label\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-xs/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-mira/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-mira/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-mira/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-mira/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-mira/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/base-mira/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarSides />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Menubar key={side}>\\n            <MenubarMenu>\\n              <MenubarTrigger className=\\\"capitalize\\\">\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </MenubarTrigger>\\n              <MenubarContent side={side}>\\n                <MenubarGroup>\\n                  <MenubarItem>New Tab</MenubarItem>\\n                  <MenubarItem>New Window</MenubarItem>\\n                  <MenubarItem>New Incognito Window</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Email link</MenubarItem>\\n                <MenubarItem>Messages</MenubarItem>\\n                <MenubarItem>Notes</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Find...</MenubarItem>\\n                <MenubarItem>Find Next</MenubarItem>\\n                <MenubarItem>Find Previous</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>\\n              Always Show Full URLs\\n            </MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>\\n              Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled inset>\\n              Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Edit...</MenubarItem>\\n            <MenubarItem inset>Add Profile...</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save <MenubarShortcut>⌘S</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"BoldIcon\\\"\\n                tabler=\\\"IconBold\\\"\\n                hugeicons=\\\"TextBoldIcon\\\"\\n                phosphor=\\\"TextBIcon\\\"\\n                remixicon=\\\"RiBold\\\"\\n              />\\n              Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"ItalicIcon\\\"\\n                tabler=\\\"IconItalic\\\"\\n                hugeicons=\\\"TextItalicIcon\\\"\\n                phosphor=\\\"TextItalicIcon\\\"\\n                remixicon=\\\"RiItalic\\\"\\n              />\\n              Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UnderlineIcon\\\"\\n                tabler=\\\"IconUnderline\\\"\\n                hugeicons=\\\"TextUnderlineIcon\\\"\\n                phosphor=\\\"TextUnderlineIcon\\\"\\n                remixicon=\\\"RiUnderline\\\"\\n              />\\n              Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Zoom In</MenubarItem>\\n            <MenubarItem inset>Zoom Out</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Image</MenubarItem>\\n                <MenubarItem>Video</MenubarItem>\\n                <MenubarItem>Audio</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"LinkIcon\\\"\\n                tabler=\\\"IconLink\\\"\\n                hugeicons=\\\"LinkIcon\\\"\\n                phosphor=\\\"LinkIcon\\\"\\n                remixicon=\\\"RiLinksLine\\\"\\n              />\\n              Link <MenubarShortcut>⌘K</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"TableIcon\\\"\\n                tabler=\\\"IconTable\\\"\\n                hugeicons=\\\"TableIcon\\\"\\n                phosphor=\\\"TableIcon\\\"\\n                remixicon=\\\"RiTableLine\\\"\\n              />\\n              Table\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n              />\\n              Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"CheckIcon\\\"\\n                tabler=\\\"IconCheck\\\"\\n                hugeicons=\\\"Tick02Icon\\\"\\n                phosphor=\\\"CheckIcon\\\"\\n                remixicon=\\\"RiCheckLine\\\"\\n              />\\n              Spell Check\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign out\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </MenubarItem>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarItem>Save Page...</MenubarItem>\\n                    <MenubarItem>Create Shortcut...</MenubarItem>\\n                    <MenubarItem>Name Window...</MenubarItem>\\n                    <MenubarSeparator />\\n                    <MenubarItem>Developer Tools</MenubarItem>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n                <MenubarItem>\\n                  Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"registryDependencies\": [\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"@base-ui/react/menubar\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({ className, ...props }: MenubarPrimitive.Props) {\\n  return (\\n    <MenubarPrimitive\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\\"flex h-9 items-center rounded-lg border p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\\n  return <DropdownMenu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuGroup>) {\\n  return <DropdownMenuGroup data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPortal>) {\\n  return <DropdownMenuPortal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuTrigger>) {\\n  return (\\n    <DropdownMenuTrigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-[calc(var(--radius-md)-2px)] px-2 py-[calc(--spacing(0.85))] text-xs/relaxed font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"menubar-content\\\"\\n      align={align}\\n      alignOffset={alignOffset}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-32 rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuItem>) {\\n  return (\\n    <DropdownMenuItem\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-3.5 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-7.5 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {\\n  return <DropdownMenuRadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-7.5 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuLabel> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuLabel\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs text-muted-foreground data-inset:pl-7.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSeparator>) {\\n  return (\\n    <DropdownMenuSeparator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuShortcut>) {\\n  return (\\n    <DropdownMenuShortcut\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-[0.625rem] tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSub>) {\\n  return <DropdownMenuSub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuSubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"min-h-7 gap-2 rounded-md px-2 py-1 text-xs focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubContent>) {\\n  return (\\n    <DropdownMenuSubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-32 rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-mira/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-7 w-full min-w-0 appearance-none rounded-md border border-input bg-input/20 py-0.5 pr-6 pl-2 text-xs/relaxed transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-[size=sm]:h-6 data-[size=sm]:text-[0.625rem] dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-muted-foreground select-none group-data-[size=sm]/native-select:size-3 group-data-[size=sm]/native-select:-translate-y-[calc(--spacing(1.25))]\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/base-mira/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuBasic />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Backlog\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    To Do\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Done\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              render={<Link href=\\\"/docs\\\" />}\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              Documentation\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink render={<Link href={href} />}>\\n        <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n          <div className=\\\"leading-none font-medium\\\">{title}</div>\\n          <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n        </div>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/navigation-menu.tsx\",\n      \"content\": \"import { NavigationMenu as NavigationMenuPrimitive } from \\\"@base-ui/react/navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  align = \\\"start\\\",\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Root.Props &\\n  Pick<NavigationMenuPrimitive.Positioner.Props, \\\"align\\\">) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <NavigationMenuPositioner align={align} />\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-2.5 py-1.5 text-xs/relaxed font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Trigger.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Content.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-1.5 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-xl group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow-md group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuPositioner({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 8,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  ...props\\n}: NavigationMenuPrimitive.Positioner.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Portal>\\n      <NavigationMenuPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        className={cn(\\n          \\\"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <NavigationMenuPrimitive.Popup className=\\\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-xl bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\\\">\\n          <NavigationMenuPrimitive.Viewport className=\\\"relative size-full overflow-hidden\\\" />\\n        </NavigationMenuPrimitive.Popup>\\n      </NavigationMenuPrimitive.Positioner>\\n    </NavigationMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Link.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-1.5 rounded-lg p-2 text-xs/relaxed transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:outline-1 data-[active=true]:bg-muted/50 data-[active=true]:hover:bg-muted data-[active=true]:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {\\n  return (\\n    <NavigationMenuPrimitive.Icon\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Icon>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuIndicator,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n  NavigationMenuPositioner,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/pagination-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-mira/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/base-mira/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-0.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n      nativeButton={false}\\n      render={\\n        <a\\n          aria-current={isActive ? \\\"page\\\" : undefined}\\n          data-slot=\\\"pagination-link\\\"\\n          data-active={isActive}\\n          {...props}\\n        />\\n      }\\n    />\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-2!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-2!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-7 items-center justify-center [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-mira/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverSides />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-col gap-2\\\">\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"inline-start\\\", \\\"left\\\", \\\"top\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"bottom\\\", \\\"right\\\", \\\"inline-end\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Start\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Center\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            End\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Popover\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"@base-ui/react/popover\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  ...props\\n}: PopoverPrimitive.Popup.Props &\\n  Pick<\\n    PopoverPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PopoverPrimitive.Popup\\n          data-slot=\\\"popover-content\\\"\\n          className={cn(\\n            \\\"z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-lg bg-popover p-2.5 text-xs text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PopoverPrimitive.Positioner>\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\\n  return (\\n    <PopoverPrimitive.Title\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: PopoverPrimitive.Description.Props) {\\n  return (\\n    <PopoverPrimitive.Description\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"chart\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/base-mira/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/base-mira/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/base-mira/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/base-mira/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/base-mira/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/base-mira/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/base-mira/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/base-mira/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/base-mira/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/base-mira/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/base-mira/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/base-mira/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/base-mira/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/base-mira/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/base-mira/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/base-mira/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/base-mira/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/base-mira/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/base-mira/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/base-mira/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/base-mira/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/base-mira/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/base-mira/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/base-mira/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/base-mira/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/base-mira/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/base-mira/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/base-mira/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/base-mira/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/base-mira/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/base-mira/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-mira/ui/item\\\"\\nimport {\\n  Progress,\\n  ProgressLabel,\\n  ProgressValue,\\n} from \\\"@/registry/base-mira/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/base-mira/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Progress value={56}>\\n        <ProgressLabel>Upload progress</ProgressLabel>\\n        <ProgressValue />\\n      </Progress>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState(50)\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={(value) => setValue(value as number)}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Progress as ProgressPrimitive } from \\\"@base-ui/react/progress\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  children,\\n  value,\\n  ...props\\n}: ProgressPrimitive.Root.Props) {\\n  return (\\n    <ProgressPrimitive.Root\\n      value={value}\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\\"flex flex-wrap gap-3\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <ProgressTrack>\\n        <ProgressIndicator />\\n      </ProgressTrack>\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\\n  return (\\n    <ProgressPrimitive.Track\\n      className={cn(\\n        \\\"relative flex h-1 w-full items-center overflow-x-hidden rounded-md bg-muted\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-track\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressIndicator({\\n  className,\\n  ...props\\n}: ProgressPrimitive.Indicator.Props) {\\n  return (\\n    <ProgressPrimitive.Indicator\\n      data-slot=\\\"progress-indicator\\\"\\n      className={cn(\\\"h-full bg-primary transition-all\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\\n  return (\\n    <ProgressPrimitive.Label\\n      className={cn(\\\"text-xs/relaxed font-medium\\\", className)}\\n      data-slot=\\\"progress-label\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\\n  return (\\n    <ProgressPrimitive.Value\\n      className={cn(\\n        \\\"ml-auto text-xs/relaxed text-muted-foreground tabular-nums\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-value\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Progress,\\n  ProgressTrack,\\n  ProgressIndicator,\\n  ProgressLabel,\\n  ProgressValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-mira/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Radio as RadioPrimitive } from \\\"@base-ui/react/radio\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"@base-ui/react/radio-group\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\\n  return (\\n    <RadioGroupPrimitive\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\\n  return (\\n    <RadioPrimitive.Root\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioPrimitive.Indicator>\\n    </RadioPrimitive.Root>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"registryDependencies\": [\"dropdown-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\",\n        \"use-mobile\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n          \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"chart\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-mira/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-mira/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/base-mira/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/base-mira/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"@base-ui/react/scroll-area\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: ScrollAreaPrimitive.Root.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: ScrollAreaPrimitive.Scrollbar.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Scrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Thumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.Scrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-mira/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-mira/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectSides />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectMultiple />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSides() {\\n  const items = [\\n    { label: \\\"Select\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Select key={side} items={items}>\\n            <SelectTrigger className=\\\"w-28 capitalize\\\">\\n              <SelectValue placeholder={side.replace(\\\"-\\\", \\\" \\\")} />\\n            </SelectTrigger>\\n            <SelectContent side={side} alignItemWithTrigger={false}>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  const items = [\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Chart Type\\n        </>\\n      ),\\n      value: null,\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Line\\n        </>\\n      ),\\n      value: \\\"line\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartBarIcon\\\"\\n            tabler=\\\"IconChartBar\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartBarIcon\\\"\\n            remixicon=\\\"RiBarChartLine\\\"\\n          />\\n          Bar\\n        </>\\n      ),\\n      value: \\\"bar\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartPieIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n          Pie\\n        </>\\n      ),\\n      value: \\\"pie\\\",\\n    },\\n  ]\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  const fruits = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  const vegetables = [\\n    { label: \\\"Carrot\\\", value: \\\"carrot\\\" },\\n    { label: \\\"Broccoli\\\", value: \\\"broccoli\\\" },\\n    { label: \\\"Spinach\\\", value: \\\"spinach\\\" },\\n  ]\\n  const allItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    ...fruits,\\n    ...vegetables,\\n  ]\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select items={allItems}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            {fruits.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            {vegetables.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  const items = [\\n    { label: \\\"Select an item\\\", value: null },\\n    ...Array.from({ length: 100 }).map((_, i) => ({\\n      label: `Item ${i}`,\\n      value: `item-${i}`,\\n    })),\\n  ]\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Item Aligned\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent alignItemWithTrigger={true}>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select items={items}>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select items={items}>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  const items = [\\n    { label: \\\"Filter\\\", value: null },\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Inactive\\\", value: \\\"inactive\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items}>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select items={items} disabled>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select\\n        defaultValue={plans[0]}\\n        itemToStringValue={(plan: (typeof plans)[number]) => plan.name}\\n      >\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {(value: (typeof plans)[number]) => <SelectPlanItem plan={value} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectMultiple() {\\n  const items = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n    { label: \\\"Strawberry\\\", value: \\\"strawberry\\\" },\\n    { label: \\\"Watermelon\\\", value: \\\"watermelon\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Multiple Selection\\\">\\n      <Select items={items} multiple defaultValue={[]}>\\n        <SelectTrigger className=\\\"w-72\\\">\\n          <SelectValue>\\n            {(value: string[]) => {\\n              if (value.length === 0) {\\n                return \\\"Select fruits\\\"\\n              }\\n              if (value.length === 1) {\\n                return items.find((item) => item.value === value[0])?.label\\n              }\\n              return `${value.length} fruits selected`\\n            }}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"@base-ui/react/select\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Select = SelectPrimitive.Root\\n\\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1 p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\\n  return (\\n    <SelectPrimitive.Value\\n      data-slot=\\\"select-value\\\"\\n      className={cn(\\\"flex flex-1 text-left\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: SelectPrimitive.Trigger.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-input/20 px-2 py-1.5 text-xs/relaxed whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon\\n        render={\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n            className=\\\"pointer-events-none size-3.5 text-muted-foreground\\\"\\n          />\\n        }\\n      />\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  alignItemWithTrigger = true,\\n  ...props\\n}: SelectPrimitive.Popup.Props &\\n  Pick<\\n    SelectPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\" | \\\"alignItemWithTrigger\\\"\\n  >) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        alignItemWithTrigger={alignItemWithTrigger}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <SelectPrimitive.Popup\\n          data-slot=\\\"select-content\\\"\\n          data-align-trigger={alignItemWithTrigger}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <SelectScrollUpButton />\\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\\n          <SelectScrollDownButton />\\n        </SelectPrimitive.Popup>\\n      </SelectPrimitive.Positioner>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: SelectPrimitive.GroupLabel.Props) {\\n  return (\\n    <SelectPrimitive.GroupLabel\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: SelectPrimitive.Item.Props) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex min-h-7 w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SelectPrimitive.ItemText className=\\\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\\\">\\n        {children}\\n      </SelectPrimitive.ItemText>\\n      <SelectPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </SelectPrimitive.ItemIndicator>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: SelectPrimitive.Separator.Props) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\n        \\\"pointer-events-none -mx-1 my-1 h-px bg-border/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollUpArrow\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpArrow>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollDownArrow\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownArrow>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Separator as SeparatorPrimitive } from \\\"@base-ui/react/separator\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: SeparatorPrimitive.Props) {\\n  return (\\n    <SeparatorPrimitive\\n      data-slot=\\\"separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/base-mira/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>Open</SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose render={<Button variant=\\\"outline\\\" />}>Close</SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side}\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose render={<Button variant=\\\"outline\\\" />}>\\n                  Cancel\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\\n  return (\\n    <SheetPrimitive.Backdrop\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: SheetPrimitive.Popup.Props & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Popup\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col bg-background bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close\\n            data-slot=\\\"sheet-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-4 right-4\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Popup>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-1.5 p-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: SheetPrimitive.Description.Props) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-mira/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-mira/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      isActive={item.isActive}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-mira/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-mira/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-mira/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton render={<CollapsibleTrigger />}>\\n                    {item.title}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"PlusIcon\\\"\\n                      tabler=\\\"IconPlus\\\"\\n                      hugeicons=\\\"PlusSignIcon\\\"\\n                      phosphor=\\\"PlusIcon\\\"\\n                      remixicon=\\\"RiAddLine\\\"\\n                      className=\\\"ml-auto group-aria-expanded/menu-button:hidden\\\"\\n                    />\\n                    <IconPlaceholder\\n                      lucide=\\\"MinusIcon\\\"\\n                      tabler=\\\"IconMinus\\\"\\n                      hugeicons=\\\"MinusSignIcon\\\"\\n                      phosphor=\\\"MinusIcon\\\"\\n                      remixicon=\\\"RiSubtractLine\\\"\\n                      className=\\\"ml-auto hidden group-aria-expanded/menu-button:block\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              isActive={item.isActive}\\n                              render={<a href={item.url} />}\\n                            >\\n                              {item.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-mira/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/base-mira/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuButton className=\\\"aria-expanded:bg-muted\\\" />\\n                }\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                  className=\\\"ml-auto\\\"\\n                />\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem\\n                      key={item.title}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-mira/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-mira/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/base-mira/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-mira/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n            render={<SidebarMenuItem />}\\n          >\\n            <CollapsibleTrigger\\n              render={<SidebarMenuButton tooltip={item.title} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"ml-auto transition-transform duration-200 group-data-open/collapsible:rotate-90\\\"\\n              />\\n            </CollapsibleTrigger>\\n            <CollapsibleContent>\\n              <SidebarMenuSub>\\n                {item.items?.map((subItem) => (\\n                  <SidebarMenuSubItem key={subItem.title}>\\n                    <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                      <span>{subItem.title}</span>\\n                    </SidebarMenuSubButton>\\n                  </SidebarMenuSubItem>\\n                ))}\\n              </SidebarMenuSub>\\n            </CollapsibleContent>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-mira/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-mira/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-mira/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-mira/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <CollapsibleTrigger\\n                  render={\\n                    <SidebarMenuAction className=\\\"aria-expanded:rotate-90\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </CollapsibleTrigger>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/base-mira/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/base-mira/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0\\\"\\n                render={<a href=\\\"#\\\" />}\\n              >\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0 data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/base-mira/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-mira/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-mira/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-mira/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-mira/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-mira/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-mira/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"icon\\\"\\n              className=\\\"h-7 w-7 data-open:bg-accent\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"MoreHorizontalIcon\\\"\\n            tabler=\\\"IconDots\\\"\\n            hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeOutlineIcon\\\"\\n            remixicon=\\\"RiMoreLine\\\"\\n          />\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"StarOffIcon\\\"\\n                      tabler=\\\"IconStarOff\\\"\\n                      hugeicons=\\\"StarOffIcon\\\"\\n                      phosphor=\\\"StarIcon\\\"\\n                      remixicon=\\\"RiStarOffLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Remove from Favorites</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"LinkIcon\\\"\\n                      tabler=\\\"IconLink\\\"\\n                      hugeicons=\\\"LinkIcon\\\"\\n                      phosphor=\\\"LinkIcon\\\"\\n                      remixicon=\\\"RiLinksLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Copy Link</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArrowUpRightIcon\\\"\\n                      tabler=\\\"IconArrowUpRight\\\"\\n                      hugeicons=\\\"ArrowUpRightIcon\\\"\\n                      phosphor=\\\"ArrowUpRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightUpLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Open in New Tab</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Delete</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={<SidebarMenuButton className=\\\"w-fit px-1.5\\\" />}\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\ntype TreeItem = string | TreeItem[]\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <SidebarMenuButton render={<CollapsibleTrigger />}>\\n          <IconPlaceholder\\n            lucide=\\\"ChevronRightIcon\\\"\\n            tabler=\\\"IconChevronRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"CaretRightIcon\\\"\\n            remixicon=\\\"RiArrowRightSLine\\\"\\n            className=\\\"transition-transform\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"FolderIcon\\\"\\n            tabler=\\\"IconFolder\\\"\\n            hugeicons=\\\"FolderIcon\\\"\\n            phosphor=\\\"FolderIcon\\\"\\n            remixicon=\\\"RiFolderLine\\\"\\n          />\\n          {name}\\n        </SidebarMenuButton>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-mira/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-mira/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-mira/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-mira/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/base-mira/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-mira/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger render={<Button size=\\\"sm\\\" />}>Open Dialog</DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                          render={<a href=\\\"#\\\" />}\\n                        >\\n                          {item.icon}\\n                          <span>{item.name}</span>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({\\n                length: 10,\\n              }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                  >\\n                    {item.title}\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            isActive={item.isActive}\\n                            render={<a href={item.url} />}\\n                          >\\n                            {item.title}\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/base-mira/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/base-mira/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-mira/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-mira/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-mira/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-mira/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-mira/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-mira/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-mira/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-mira/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-mira/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton className=\\\"w-fit px-1.5 aria-expanded:bg-muted aria-expanded:text-foreground\\\" />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-mira/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/base-mira/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-mira/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-mira/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-mira/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-mira/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"aria-expanded:rotate-90\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"aria-expanded:bg-muted aria-expanded:text-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-mira/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-mira/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-mira/ui/item\\\"\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v{selectedVersion}</ItemDescription>\\n                    </ItemContent>\\n                    <ItemActions>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronsUpDownIcon\\\"\\n                        tabler=\\\"IconSelector\\\"\\n                        hugeicons=\\\"UnfoldMoreIcon\\\"\\n                        phosphor=\\\"CaretUpDownIcon\\\"\\n                        remixicon=\\\"RiArrowUpDownLine\\\"\\n                      />\\n                    </ItemActions>\\n                  </Item>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <IconPlaceholder\\n                          lucide=\\\"CheckIcon\\\"\\n                          tabler=\\\"IconCheck\\\"\\n                          hugeicons=\\\"Tick02Icon\\\"\\n                          phosphor=\\\"CheckIcon\\\"\\n                          remixicon=\\\"RiCheckLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton\\n                        render={<a href={subItem.url} />}\\n                        isActive={subItem.isActive}\\n                      >\\n                        {subItem.title}\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/base-mira/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-mira/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n                <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                    <ItemDescription>v1.0.0</ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger\\n                      render={\\n                        <SidebarMenuButton className=\\\"data-popup-open:bg-sidebar-accent data-popup-open:text-sidebar-accent-foreground\\\" />\\n                      }\\n                    >\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"MoreHorizontalIcon\\\"\\n                        tabler=\\\"IconDots\\\"\\n                        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                        phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                        remixicon=\\\"RiMoreLine\\\"\\n                        className=\\\"ml-auto\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem\\n                              render={<a href={subItem.url} />}\\n                              key={subItem.title}\\n                            >\\n                              {subItem.title}\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-mira/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-mira/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Button\\n                    size=\\\"icon-sm\\\"\\n                    render={<span />}\\n                    nativeButton={false}\\n                    className=\\\"size-8\\\"\\n                  >\\n                    <svg\\n                      xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                      viewBox=\\\"0 0 256 256\\\"\\n                    >\\n                      <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                      <line\\n                        x1=\\\"208\\\"\\n                        y1=\\\"128\\\"\\n                        x2=\\\"128\\\"\\n                        y2=\\\"208\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                      <line\\n                        x1=\\\"192\\\"\\n                        y1=\\\"40\\\"\\n                        x2=\\\"40\\\"\\n                        y2=\\\"192\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                    </svg>\\n                  </Button>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {activeTeam.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuGroup>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger\\n                      render={<SidebarMenuButton tooltip={item.title} />}\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                        className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                      />\\n                    </CollapsibleTrigger>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton\\n                              render={<a href={subItem.url} />}\\n                            >\\n                              {subItem.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton render={<a href={item.url} />}>\\n                    {item.icon}\\n                    {item.name}\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Avatar>\\n                    <AvatarImage src={data.user.avatar} alt={data.user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {data.user.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{data.user.email}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-mira/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  render={<SidebarMenuItem />}\\n                >\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} />}\\n                    isActive={item.isActive}\\n                  >\\n                    {item.icon}\\n                    <span>{item.title}</span>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <>\\n                      <CollapsibleTrigger\\n                        render={\\n                          <SidebarMenuAction className=\\\"data-open:rotate-90\\\" />\\n                        }\\n                      >\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                        />\\n                        <span className=\\\"sr-only\\\">Toggle</span>\\n                      </CollapsibleTrigger>\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((subItem) => (\\n                            <SidebarMenuSubItem key={subItem.title}>\\n                              <SidebarMenuSubButton\\n                                render={<a href={subItem.url} />}\\n                              >\\n                                {subItem.title}\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    </>\\n                  ) : null}\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton render={<a href={item.url} />} size=\\\"sm\\\">\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"separator\",\n    \"sheet\",\n    \"skeleton\",\n    \"tooltip\",\n    \"use-mobile\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-mira/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport { Separator } from \\\"@/registry/base-mira/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/base-mira/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/base-mira/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\n        \\\"h-8 w-full border-input bg-muted/20 dark:bg-muted/30\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\n        \\\"relative flex w-full min-w-0 flex-col px-2 py-1\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & React.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-label\\\",\\n      sidebar: \\\"group-label\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> & React.ComponentProps<\\\"button\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-action\\\",\\n      sidebar: \\\"group-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-px\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-[calc(var(--radius-sm)+2px)] p-2 text-left text-xs ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-xs\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-xs group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  render,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    isActive?: boolean\\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n  } & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const { isMobile, state } = useSidebar()\\n  const comp = useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(sidebarMenuButtonVariants({ variant, size }), className),\\n      },\\n      props\\n    ),\\n    render: !tooltip ? render : <TooltipTrigger render={render} />,\\n    state: {\\n      slot: \\\"sidebar-menu-button\\\",\\n      sidebar: \\\"menu-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n\\n  if (!tooltip) {\\n    return comp\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      {comp}\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  render,\\n  showOnHover = false,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    showOnHover?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-[calc(var(--radius-sm)-2px)] p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          showOnHover &&\\n            \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-action\\\",\\n      sidebar: \\\"menu-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-[calc(var(--radius-sm)-2px)] px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  render,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\"> &\\n  React.ComponentProps<\\\"a\\\"> & {\\n    size?: \\\"sm\\\" | \\\"md\\\"\\n    isActive?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-xs data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-sub-button\\\",\\n      sidebar: \\\"menu-sub-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-mira/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-mira/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-mira/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-mira/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-mira/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-mira/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/base-mira/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/base-mira/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-md bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport { Slider } from \\\"@/registry/base-mira/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={50} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={(value) => setValue(value as number[])}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"@base-ui/react/slider\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: SliderPrimitive.Root.Props) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      className={cn(\\\"data-horizontal:w-full data-vertical:h-full\\\", className)}\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      thumbAlignment=\\\"edge\\\"\\n      {...props}\\n    >\\n      <SliderPrimitive.Control className=\\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\">\\n        <SliderPrimitive.Track\\n          data-slot=\\\"slider-track\\\"\\n          className=\\\"relative grow overflow-hidden rounded-md bg-muted select-none data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3\\\"\\n        >\\n          <SliderPrimitive.Indicator\\n            data-slot=\\\"slider-range\\\"\\n            className=\\\"bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n          />\\n        </SliderPrimitive.Track>\\n        {Array.from({ length: _values.length }, (_, index) => (\\n          <SliderPrimitive.Thumb\\n            data-slot=\\\"slider-thumb\\\"\\n            key={index}\\n            className=\\\"block size-4 shrink-0 rounded-md border border-primary bg-white shadow-sm ring-ring/30 transition-colors select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\\\"\\n          />\\n        ))}\\n      </SliderPrimitive.Control>\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-mira/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-mira/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-mira/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/base-mira/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            nativeButton={false}\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Label } from \\\"@/registry/base-mira/ui/label\\\"\\nimport { Switch } from \\\"@/registry/base-mira/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Switch as SwitchPrimitive } from \\\"@base-ui/react/switch\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: SwitchPrimitive.Root.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-[size=default]:h-[16.6px] data-[size=default]:w-[28px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/table-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-mira/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nconst people = [\\n  { value: \\\"sarah\\\", label: \\\"Sarah Chen\\\" },\\n  { value: \\\"marcus\\\", label: \\\"Marc Rodriguez\\\" },\\n  { value: \\\"emily\\\", label: \\\"Emily Watson\\\" },\\n  { value: \\\"david\\\", label: \\\"David Kim\\\" },\\n]\\n\\nconst tasks = [\\n  {\\n    task: \\\"Design homepage\\\",\\n    assignee: \\\"sarah\\\",\\n    status: \\\"In Progress\\\",\\n  },\\n  {\\n    task: \\\"Implement API\\\",\\n    assignee: \\\"marcus\\\",\\n    status: \\\"Pending\\\",\\n  },\\n  {\\n    task: \\\"Write tests\\\",\\n    assignee: \\\"emily\\\",\\n    status: \\\"Not Started\\\",\\n  },\\n]\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tasks.map((item) => (\\n            <TableRow key={item.task}>\\n              <TableCell className=\\\"font-medium\\\">{item.task}</TableCell>\\n              <TableCell>\\n                <Select\\n                  items={people}\\n                  defaultValue={people.find(\\n                    (person) => person.value === item.assignee\\n                  )}\\n                  itemToStringValue={(item) => {\\n                    return item.value\\n                  }}\\n                >\\n                  <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      {people.map((person) => (\\n                        <SelectItem key={person.value} value={person}>\\n                          {person.label}\\n                        </SelectItem>\\n                      ))}\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </TableCell>\\n              <TableCell>{item.status}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-xs\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-mira/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-mira/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">More options</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tabs as TabsPrimitive } from \\\"@base-ui/react/tabs\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: TabsPrimitive.Root.Props) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\\n  return (\\n    <TabsPrimitive.Tab\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-xs font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:py-[calc(--spacing(1.25))] hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\\n  return (\\n    <TabsPrimitive.Panel\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-xs/relaxed outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/base-mira/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full resize-none rounded-md border border-input bg-input/20 px-2 py-2 text-sm transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/base-mira/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-mira/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-mira/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-mira/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup multiple spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" defaultValue={[\\\"all\\\"]}>\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup size=\\\"sm\\\" defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup multiple variant=\\\"outline\\\" spacing={2} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup defaultValue={[\\\"all\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        defaultValue={[\\\"today\\\"]}\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup defaultValue={[\\\"newest\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  const items = [\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Archived\\\", value: \\\"archived\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items} defaultValue={items[0]}>\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup defaultValue={[\\\"grid\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup multiple orientation=\\\"vertical\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        defaultValue={[\\\"all\\\"]}\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple orientation=\\\"vertical\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          value={[fontWeight]}\\n          onValueChange={(value) => setFontWeight(value[0])}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={1}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"@base-ui/react/toggle-group\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/base-mira/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: ToggleGroupPrimitive.Props &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-md data-[size=sm]:rounded-[min(var(--radius-md),8px)] data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </TogglePrimitive>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-xs font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-7 min-w-7 px-2\\\",\\n        sm: \\\"h-6 min-w-6 rounded-[min(var(--radius-md),8px)] px-1.5 text-[0.625rem] [&_svg:not([class*='size-'])]:size-3\\\",\\n        lg: \\\"h-8 min-w-8 px-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/base-mira/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/base-mira/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Info</span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<span className=\\\"inline-block w-fit\\\" />}>\\n          <Button variant=\\\"outline\\\" disabled>\\n            Disabled\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger\\n          render={\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n              onClick={(e) => e.preventDefault()}\\n            />\\n          }\\n        >\\n          Learn more\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Status\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tooltip as TooltipPrimitive } from \\\"@base-ui/react/tooltip\\\"\\n\\nimport { cn } from \\\"@/registry/base-mira/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delay = 0,\\n  ...props\\n}: TooltipPrimitive.Provider.Props) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delay={delay}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  side = \\\"top\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  children,\\n  ...props\\n}: TooltipPrimitive.Popup.Props &\\n  Pick<\\n    TooltipPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <TooltipPrimitive.Popup\\n          data-slot=\\\"tooltip-content\\\"\\n          className={cn(\\n            \\\"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          {children}\\n          <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\\\" />\\n        </TooltipPrimitive.Popup>\\n      </TooltipPrimitive.Positioner>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-mira/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-mira/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/base-nova/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion multiple className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            multiple\\n            defaultValue={[\\\"plans\\\"]}\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Accordion as AccordionPrimitive } from \\\"@base-ui/react/accordion\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\\"flex w-full flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Trigger.Props) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Panel.Props) {\\n  return (\\n    <AccordionPrimitive.Panel\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Panel>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-nova/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger render={<Button variant=\\\"outline\\\">Small</Button>} />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default (Media)</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Small (Media)</Button>}\\n        />\\n\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"destructive\\\">Delete Chat</Button>}\\n        />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger render={<Button />}>\\n                Open Alert Dialog\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"@base-ui/react/alert-dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\n\\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: AlertDialogPrimitive.Backdrop.Props) {\\n  return (\\n    <AlertDialogPrimitive.Backdrop\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Popup.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Popup\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  return (\\n    <Button\\n      data-slot=\\\"alert-dialog-action\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Close.Props &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <AlertDialogPrimitive.Close\\n      data-slot=\\\"alert-dialog-cancel\\\"\\n      className={cn(className)}\\n      render={<Button variant={variant} size={size} />}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/base-nova/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/base-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\\"absolute top-2 right-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/base-nova/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/aspect-ratio.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction AspectRatio({\\n  ratio,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { ratio: number }) {\\n  return (\\n    <div\\n      data-slot=\\\"aspect-ratio\\\"\\n      style={\\n        {\\n          \\\"--ratio\\\": ratio,\\n        } as React.CSSProperties\\n      }\\n      className={cn(\\\"relative aspect-(--ratio)\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-nova/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"@base-ui/react/avatar\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AvatarPrimitive.Root.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: AvatarPrimitive.Fallback.Props) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-nova/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/base-nova/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"secondary\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"destructive\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"ghost\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/badge.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"span\\\"> & VariantProps<typeof badgeVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"span\\\",\\n    props: mergeProps<\\\"span\\\">(\\n      {\\n        className: cn(badgeVariants({ variant }), className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"badge\\\",\\n      variant,\\n    },\\n  })\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\" />}\\n              >\\n                <BreadcrumbEllipsis />\\n                <span className=\\\"sr-only\\\">Toggle menu</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Home</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Components</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\\"transition-colors hover:text-foreground\\\", className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"breadcrumb-link\\\",\\n    },\\n  })\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-5 items-center justify-center [&>svg]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/button-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <a href=\\\"#\\\" className={buttonVariants()}>\\n          Link\\n        </a>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-nova/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText render={<Label htmlFor=\\\"input-text\\\" />}>\\n            GPU Size\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeX\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nconst currencyItems = [\\n  { label: \\\"$\\\", value: \\\"$\\\" },\\n  { label: \\\"€\\\", value: \\\"€\\\" },\\n  { label: \\\"£\\\", value: \\\"£\\\" },\\n]\\n\\nfunction ButtonGroupWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select items={currencyItems} defaultValue={currencyItems[0]}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {currencyItems.map((item) => (\\n                  <SelectItem key={item.value} value={item}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button\\n          variant=\\\"outline\\\"\\n          size=\\\"icon\\\"\\n          className=\\\"w-12\\\"\\n          render={<span />}\\n          nativeButton={false}\\n        >\\n          1.2K\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nconst durationItems = [\\n  { label: \\\"Hours\\\", value: \\\"hours\\\" },\\n  { label: \\\"Days\\\", value: \\\"days\\\" },\\n  { label: \\\"Weeks\\\", value: \\\"weeks\\\" },\\n]\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select items={durationItems} defaultValue={durationItems[0]}>\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              {durationItems.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger render={<InputGroupAddon align=\\\"inline-end\\\" />}>\\n                <IconPlaceholder\\n                  lucide=\\\"AudioLinesIcon\\\"\\n                  tabler=\\\"IconHeadphones\\\"\\n                  hugeicons=\\\"AudioWave01Icon\\\"\\n                  phosphor=\\\"MicrophoneIcon\\\"\\n                  remixicon=\\\"RiMicLine\\\"\\n                />\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft02Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/button-group.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\\\",\\n        vertical:\\n          \\\"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"button-group-text\\\",\\n    },\\n  })\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/button.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button as ButtonPrimitive } from \\\"@base-ui/react/button\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\\\",\\n        xs: \\\"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        lg: \\\"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\\\",\\n        icon: \\\"size-8\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\":\\n          \\\"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\\\",\\n        \\\"icon-lg\\\": \\\"size-9\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\\n  return (\\n    <ButtonPrimitive\\n      data-slot=\\\"button\\\"\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/base-nova/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-nova/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-nova/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-nova/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\" />}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"CalendarIcon\\\"\\n            tabler=\\\"IconCalendar\\\"\\n            hugeicons=\\\"CalendarIcon\\\"\\n            phosphor=\\\"CalendarBlankIcon\\\"\\n            remixicon=\\\"RiCalendarLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Open Calendar\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-simple\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-range\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date?.from ? (\\n              date.to ? (\\n                <>\\n                  {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                  {format(date.to, \\\"LLL dd, y\\\")}\\n                </>\\n              ) : (\\n                format(date.from, \\\"LLL dd, y\\\")\\n              )\\n            ) : (\\n              <span>Pick a date</span>\\n            )}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-with-dropdowns-desktop\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-4 group-data-[size=sm]/card:px-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/base-nova/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-nova/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-nova/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-nova/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox as CheckboxPrimitive } from \\\"@base-ui/react/checkbox\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/base-nova/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {fileItem.name}\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              {isOpen ? (\\n                <IconPlaceholder\\n                  lucide=\\\"MinimizeIcon\\\"\\n                  tabler=\\\"IconMinimize\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              ) : (\\n                <IconPlaceholder\\n                  lucide=\\\"MaximizeIcon\\\"\\n                  tabler=\\\"IconMaximize\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              )}\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"@base-ui/react/collapsible\\\"\\n\\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\\n  return (\\n    <CollapsiblePrimitive.Trigger data-slot=\\\"collapsible-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\\n  return (\\n    <CollapsiblePrimitive.Panel data-slot=\\\"collapsible-content\\\" {...props} />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/base-nova/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-nova/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxSides />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Combobox key={side} items={frameworks}>\\n            <ComboboxInput\\n              placeholder={side.replace(\\\"-\\\", \\\" \\\")}\\n              className=\\\"w-32 **:data-[slot=input-group-control]:capitalize\\\"\\n            />\\n            <ComboboxContent side={side}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen}>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst items = [\\n  {\\n    label: \\\"Select a framework\\\",\\n    value: null,\\n  },\\n  {\\n    label: \\\"React\\\",\\n    value: \\\"react\\\",\\n  },\\n  {\\n    label: \\\"Vue\\\",\\n    value: \\\"vue\\\",\\n  },\\n  {\\n    label: \\\"Angular\\\",\\n    value: \\\"angular\\\",\\n  },\\n  {\\n    label: \\\"Svelte\\\",\\n    value: \\\"svelte\\\",\\n  },\\n  {\\n    label: \\\"Solid\\\",\\n    value: \\\"solid\\\",\\n  },\\n  {\\n    label: \\\"Preact\\\",\\n    value: \\\"preact\\\",\\n  },\\n  {\\n    label: \\\"Next.js\\\",\\n    value: \\\"next.js\\\",\\n  },\\n]\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select items={items}>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            render={<ComboboxTrigger />}\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          />\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/base-nova/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: Omit<React.ComponentProps<typeof Dialog>, \\\"children\\\"> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n  children: React.ReactNode\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"p-1 pb-0\\\">\\n      <InputGroup className=\\\"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-4 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-nova/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/base-nova/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/base-nova/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger render={<Button />}>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Show Dialog\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst roleItems = [\\n  { label: \\\"Developer\\\", value: \\\"developer\\\" },\\n  { label: \\\"Designer\\\", value: \\\"designer\\\" },\\n  { label: \\\"Manager\\\", value: \\\"manager\\\" },\\n  { label: \\\"Other\\\", value: \\\"other\\\" },\\n]\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreVerticalIcon\\\"\\n                  tabler=\\\"IconDotsVertical\\\"\\n                  hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                  remixicon=\\\"RiMore2Line\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select items={roleItems} defaultValue={null}>\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        {roleItems.map((item) => (\\n                          <SelectItem key={item.value} value={item.value}>\\n                            {item.label}\\n                          </SelectItem>\\n                        ))}\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <ContextMenu key={side}>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] items-center justify-center rounded-lg border p-4 text-sm capitalize\\\">\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </ContextMenuTrigger>\\n            <ContextMenuContent side={side}>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Back</ContextMenuItem>\\n                <ContextMenuItem>Forward</ContextMenuItem>\\n                <ContextMenuItem>Reload</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"@base-ui/react/context-menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Trigger.Props) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = 4,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  ...props\\n}: ContextMenuPrimitive.Popup.Props &\\n  Pick<\\n    ContextMenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <ContextMenuPrimitive.Popup\\n          data-slot=\\\"context-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ContextMenuPrimitive.Positioner>\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.GroupLabel\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: ContextMenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuRoot data-slot=\\\"context-menu-sub\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuContent>) {\\n  return (\\n    <ContextMenuContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className=\\\"cn-menu-target cn-menu-translucent shadow-lg\\\"\\n      side=\\\"right\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: ContextMenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Separator.Props) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/base-nova/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/base-nova/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/base-nova/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/base-nova/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/base-nova/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/base-nova/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-nova/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-nova/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n              render={<a href=\\\"#\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CommandIcon\\\"\\n                tabler=\\\"IconInnerShadowTop\\\"\\n                hugeicons=\\\"CommandIcon\\\"\\n                phosphor=\\\"CommandIcon\\\"\\n                remixicon=\\\"RiCommandLine\\\"\\n                className=\\\"size-5!\\\"\\n              />\\n              <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-nova/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-nova/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-nova/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            multiple={false}\\n            value={timeRange ? [timeRange] : []}\\n            onValueChange={(value) => {\\n              setTimeRange(value[0] ?? \\\"90d\\\")\\n            }}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select\\n            value={timeRange}\\n            onValueChange={(value) => {\\n              if (value !== null) {\\n                setTimeRange(value)\\n              }\\n            }}\\n          >\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-nova/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/base-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-nova/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/base-nova/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-nova/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-nova/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-nova/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={table.getIsAllPageRowsSelected()}\\n          indeterminate={\\n            table.getIsSomePageRowsSelected() &&\\n            !table.getIsAllPageRowsSelected()\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select\\n            items={[\\n              { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n              { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n            ]}\\n          >\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"flex size-8 text-muted-foreground data-open:bg-muted\\\"\\n              size=\\\"icon\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"EllipsisVerticalIcon\\\"\\n            tabler=\\\"IconDotsVertical\\\"\\n            hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeVerticalIcon\\\"\\n            remixicon=\\\"RiMore2Line\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Open menu</span>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select\\n          defaultValue=\\\"outline\\\"\\n          items={[\\n            { label: \\\"Outline\\\", value: \\\"outline\\\" },\\n            { label: \\\"Past Performance\\\", value: \\\"past-performance\\\" },\\n            { label: \\\"Key Personnel\\\", value: \\\"key-personnel\\\" },\\n            { label: \\\"Focus Documents\\\", value: \\\"focus-documents\\\" },\\n          ]}\\n        >\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"Columns3Icon\\\"\\n                tabler=\\\"IconLayoutColumns\\\"\\n                hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                phosphor=\\\"ColumnsIcon\\\"\\n                remixicon=\\\"RiLayoutColumnLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Columns\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n                items={[10, 20, 30, 40, 50].map((pageSize) => ({\\n                  label: `${pageSize}`,\\n                  value: `${pageSize}`,\\n                }))}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\nconst chartData = [\\n  {\\n    month: \\\"January\\\",\\n    desktop: 186,\\n    mobile: 80,\\n  },\\n  {\\n    month: \\\"February\\\",\\n    desktop: 305,\\n    mobile: 200,\\n  },\\n  {\\n    month: \\\"March\\\",\\n    desktop: 237,\\n    mobile: 120,\\n  },\\n  {\\n    month: \\\"April\\\",\\n    desktop: 73,\\n    mobile: 190,\\n  },\\n  {\\n    month: \\\"May\\\",\\n    desktop: 209,\\n    mobile: 130,\\n  },\\n  {\\n    month: \\\"June\\\",\\n    desktop: 214,\\n    mobile: 140,\\n  },\\n]\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select\\n                  defaultValue={item.type}\\n                  items={[\\n                    { label: \\\"Table of Contents\\\", value: \\\"Table of Contents\\\" },\\n                    { label: \\\"Executive Summary\\\", value: \\\"Executive Summary\\\" },\\n                    {\\n                      label: \\\"Technical Approach\\\",\\n                      value: \\\"Technical Approach\\\",\\n                    },\\n                    { label: \\\"Design\\\", value: \\\"Design\\\" },\\n                    { label: \\\"Capabilities\\\", value: \\\"Capabilities\\\" },\\n                    { label: \\\"Focus Documents\\\", value: \\\"Focus Documents\\\" },\\n                    { label: \\\"Narrative\\\", value: \\\"Narrative\\\" },\\n                    { label: \\\"Cover Page\\\", value: \\\"Cover Page\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select\\n                  defaultValue={item.status}\\n                  items={[\\n                    { label: \\\"Done\\\", value: \\\"Done\\\" },\\n                    { label: \\\"In Progress\\\", value: \\\"In Progress\\\" },\\n                    { label: \\\"Not Started\\\", value: \\\"Not Started\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select\\n                defaultValue={item.reviewer}\\n                items={[\\n                  { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n                  { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n                  { label: \\\"Emily Whalen\\\", value: \\\"Emily Whalen\\\" },\\n                ]}\\n              >\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\" />\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar className=\\\"size-8 rounded-lg grayscale\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs text-foreground/70\\\">\\n                {user.email}\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar className=\\\"size-8\\\">\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                      {user.email}\\n                    </span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/base-nova/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 h-4 data-vertical:self-auto\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-nova/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/base-nova/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/base-nova/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-nova/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-nova/ui/item\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-nova/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/base-nova/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-nova/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-nova/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback(\\n    (value: number | readonly number[]) => {\\n      if (typeof value === \\\"number\\\") {\\n        setSliderValue([value])\\n      } else {\\n        setSliderValue([...value])\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n                    <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                    <span className=\\\"block md:hidden\\\">Dialog</span>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger\\n                      render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronUpIcon\\\"\\n                        tabler=\\\"IconChevronUp\\\"\\n                        hugeicons=\\\"ArrowUp01Icon\\\"\\n                        phosphor=\\\"CaretUpIcon\\\"\\n                        remixicon=\\\"RiArrowUpSLine\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/base-nova/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-nova/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-nova/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport { Switch } from \\\"@/registry/base-nova/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-nova/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/base-nova/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n            Edit Profile\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n                Cancel\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Scrollable Content\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Sticky Footer\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"Auto\\\", value: \\\"auto\\\" },\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nconst themes = [\\n  { label: \\\"Light\\\", value: \\\"light\\\" },\\n  { label: \\\"Dark\\\", value: \\\"dark\\\" },\\n  { label: \\\"System\\\", value: \\\"system\\\" },\\n]\\n\\nconst accents = [\\n  { label: \\\"Default\\\", value: \\\"default\\\" },\\n  { label: \\\"Red\\\", value: \\\"red\\\" },\\n  { label: \\\"Blue\\\", value: \\\"blue\\\" },\\n  { label: \\\"Green\\\", value: \\\"green\\\" },\\n  { label: \\\"Purple\\\", value: \\\"purple\\\" },\\n  { label: \\\"Pink\\\", value: \\\"pink\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Chat Settings\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select\\n                          items={themes}\\n                          value={theme}\\n                          onValueChange={(value) => setTheme(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {themes.map((theme) => (\\n                                <SelectItem\\n                                  key={theme.value}\\n                                  value={theme.value}\\n                                >\\n                                  {theme.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          items={accents}\\n                          value={accentColor}\\n                          onValueChange={(value) =>\\n                            setAccentColor(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {accents.map((accent) => (\\n                                <SelectItem\\n                                  key={accent.value}\\n                                  value={accent.value}\\n                                >\\n                                  {accent.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          items={spokenLanguages}\\n                          value={spokenLanguage}\\n                          onValueChange={(value) =>\\n                            setSpokenLanguage(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select\\n                          items={voices}\\n                          value={voice}\\n                          onValueChange={(value) => setVoice(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger\\n                              render={<InputGroupButton size=\\\"icon-xs\\\" />}\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"InfoIcon\\\"\\n                                tabler=\\\"IconInfoCircle\\\"\\n                                hugeicons=\\\"AlertCircleIcon\\\"\\n                                phosphor=\\\"InfoIcon\\\"\\n                                remixicon=\\\"RiInformationLine\\\"\\n                              />\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: DialogPrimitive.Backdrop.Props) {\\n  return (\\n    <DialogPrimitive.Backdrop\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: DialogPrimitive.Popup.Props & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Popup\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-2 right-2\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Popup>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close render={<Button variant=\\\"outline\\\" />}>\\n          Close\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base leading-none font-medium\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: DialogPrimitive.Description.Props) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nexport {\\n  DirectionProvider,\\n  useDirection,\\n} from \\\"@base-ui/react/direction-provider\\\"\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n      \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-nova/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuSides />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>GitHub</DropdownMenuItem>\\n          <DropdownMenuItem>Support</DropdownMenuItem>\\n          <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <DropdownMenu key={side}>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent side={side}>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>Profile</DropdownMenuItem>\\n                <DropdownMenuItem>Billing</DropdownMenuItem>\\n                <DropdownMenuItem>Settings</DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"UserIcon\\\"\\n              tabler=\\\"IconUser\\\"\\n              hugeicons=\\\"UserIcon\\\"\\n              phosphor=\\\"UserIcon\\\"\\n              remixicon=\\\"RiUserLine\\\"\\n            />\\n            Profile\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"CreditCardIcon\\\"\\n              tabler=\\\"IconCreditCard\\\"\\n              hugeicons=\\\"CreditCardIcon\\\"\\n              phosphor=\\\"CreditCardIcon\\\"\\n              remixicon=\\\"RiBankCardLine\\\"\\n            />\\n            Billing\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n            Settings\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"LogOutIcon\\\"\\n              tabler=\\\"IconLogout\\\"\\n              hugeicons=\\\"LogoutIcon\\\"\\n              phosphor=\\\"SignOutIcon\\\"\\n              remixicon=\\\"RiLogoutBoxLine\\\"\\n            />\\n            Log out\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            Log out\\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuItem>Email</DropdownMenuItem>\\n                  <DropdownMenuItem>Message</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>More...</DropdownMenuItem>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Checkboxes\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Radio Group\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Notifications\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Payment Method\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Actions\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"PencilIcon\\\"\\n              tabler=\\\"IconPencil\\\"\\n              hugeicons=\\\"EditIcon\\\"\\n              phosphor=\\\"PencilIcon\\\"\\n              remixicon=\\\"RiPencilLine\\\"\\n            />\\n            Edit\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"ShareIcon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n            Share\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ArchiveIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n            Archive\\n          </DropdownMenuItem>\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"DeleteIcon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n            Delete\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuItem>\\n        <IconPlaceholder\\n          lucide=\\\"LogOutIcon\\\"\\n          tabler=\\\"IconLogout\\\"\\n          hugeicons=\\\"LogoutIcon\\\"\\n          phosphor=\\\"SignOutIcon\\\"\\n          remixicon=\\\"RiLogoutBoxLine\\\"\\n        />\\n        Sign Out\\n      </DropdownMenuItem>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n              <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                shadcn@example.com\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto text-muted-foreground\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--anchor-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Menu\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ClipboardPasteIcon\\\"\\n                  tabler=\\\"IconClipboard\\\"\\n                  hugeicons=\\\"ClipboardIcon\\\"\\n                  phosphor=\\\"ClipboardIcon\\\"\\n                  remixicon=\\\"RiClipboardLine\\\"\\n                />\\n                Paste\\n              </DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                    <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                    <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Complex Menu\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\\n  return <MenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\\n  return <MenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n}\\n\\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\\n  return <MenuPrimitive.Trigger data-slot=\\\"dropdown-menu-trigger\\\" {...props} />\\n}\\n\\nfunction DropdownMenuContent({\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  className,\\n  ...props\\n}: MenuPrimitive.Popup.Props &\\n  Pick<\\n    MenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <MenuPrimitive.Portal>\\n      <MenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <MenuPrimitive.Popup\\n          data-slot=\\\"dropdown-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </MenuPrimitive.Positioner>\\n    </MenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\\n  return <MenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: MenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.GroupLabel\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: MenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\\n  return <MenuPrimitive.SubmenuRoot data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: MenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </MenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  align = \\\"start\\\",\\n  alignOffset = -3,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      align={align}\\n      alignOffset={alignOffset}\\n      side={side}\\n      sideOffset={sideOffset}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <MenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: MenuPrimitive.Separator.Props) {\\n  return (\\n    <MenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-nova/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-nova/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-nova/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/base-nova/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-nova/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-nova/ui/native-select\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-nova/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport { Slider } from \\\"@/registry/base-nova/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-nova/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-nova/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  const basicItems = [\\n    { label: \\\"Choose an option\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const countryItems = [\\n    { label: \\\"Select your country\\\", value: null },\\n    { label: \\\"United States\\\", value: \\\"us\\\" },\\n    { label: \\\"United Kingdom\\\", value: \\\"uk\\\" },\\n    { label: \\\"Canada\\\", value: \\\"ca\\\" },\\n  ]\\n  const timezoneItems = [\\n    { label: \\\"Select timezone\\\", value: null },\\n    { label: \\\"UTC\\\", value: \\\"utc\\\" },\\n    { label: \\\"Eastern Time\\\", value: \\\"est\\\" },\\n    { label: \\\"Pacific Time\\\", value: \\\"pst\\\" },\\n  ]\\n  const invalidItems = [\\n    { label: \\\"This field has an error\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const disabledItems = [\\n    { label: \\\"Cannot select\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select items={countryItems}>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {countryItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select items={timezoneItems}>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {timezoneItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select items={invalidItems}>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {invalidItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select items={disabledItems} disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {disabledItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={(value) => setVolume(value as number[])}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={(value) => setBrightness(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={(value) => setTemperature(value as number[])}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={(value) => setPriceRange(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={(value) => setColorBalance(value as number[])}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  const basicItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Orange\\\", value: \\\"orange\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-sm font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/base-nova/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\n  \\\"inline-start\\\",\\n  \\\"left\\\",\\n  \\\"top\\\",\\n  \\\"bottom\\\",\\n  \\\"right\\\",\\n  \\\"inline-end\\\",\\n] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-2\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side}>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side}>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side.replace(\\\"-\\\", \\\" \\\")} side\\n                  of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Hover me\\n            </HoverCardTrigger>\\n            <HoverCardContent>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { PreviewCard as PreviewCardPrimitive } from \\\"@base-ui/react/preview-card\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\\n  return <PreviewCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\\n  return (\\n    <PreviewCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 4,\\n  ...props\\n}: PreviewCardPrimitive.Popup.Props &\\n  Pick<\\n    PreviewCardPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PreviewCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <PreviewCardPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PreviewCardPrimitive.Popup\\n          data-slot=\\\"hover-card-content\\\"\\n          className={cn(\\n            \\\"z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PreviewCardPrimitive.Positioner>\\n    </PreviewCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-nova/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-nova/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-nova/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-nova/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/base-nova/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/base-nova/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\" />\\n                  }\\n                >\\n                  {country}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDownIcon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger render={<InputGroupAddon />} nativeButton={false}>\\n                <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/base-nova/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\" | \\\"type\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants> & {\\n    type?: \\\"button\\\" | \\\"submit\\\" | \\\"reset\\\"\\n  }) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-nova/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Input as InputPrimitive } from \\\"@base-ui/react/input\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <InputPrimitive\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/base-nova/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-2.5 px-3 py-2.5\\\",\\n        sm: \\\"gap-2.5 px-3 py-2.5\\\",\\n        xs: \\\"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(itemVariants({ variant, size, className })),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"item\\\",\\n      variant,\\n      size,\\n    },\\n  })\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-nova/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button size=\\\"icon-sm\\\" variant=\\\"outline\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-nova/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/base-nova/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Label({ className, ...props }: React.ComponentProps<\\\"label\\\">) {\\n  return (\\n    <label\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-nova/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-nova/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-nova/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-nova/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-nova/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/base-nova/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarSides />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Menubar key={side}>\\n            <MenubarMenu>\\n              <MenubarTrigger className=\\\"capitalize\\\">\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </MenubarTrigger>\\n              <MenubarContent side={side}>\\n                <MenubarGroup>\\n                  <MenubarItem>New Tab</MenubarItem>\\n                  <MenubarItem>New Window</MenubarItem>\\n                  <MenubarItem>New Incognito Window</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Email link</MenubarItem>\\n                <MenubarItem>Messages</MenubarItem>\\n                <MenubarItem>Notes</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Find...</MenubarItem>\\n                <MenubarItem>Find Next</MenubarItem>\\n                <MenubarItem>Find Previous</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>\\n              Always Show Full URLs\\n            </MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>\\n              Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled inset>\\n              Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Edit...</MenubarItem>\\n            <MenubarItem inset>Add Profile...</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save <MenubarShortcut>⌘S</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"BoldIcon\\\"\\n                tabler=\\\"IconBold\\\"\\n                hugeicons=\\\"TextBoldIcon\\\"\\n                phosphor=\\\"TextBIcon\\\"\\n                remixicon=\\\"RiBold\\\"\\n              />\\n              Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"ItalicIcon\\\"\\n                tabler=\\\"IconItalic\\\"\\n                hugeicons=\\\"TextItalicIcon\\\"\\n                phosphor=\\\"TextItalicIcon\\\"\\n                remixicon=\\\"RiItalic\\\"\\n              />\\n              Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UnderlineIcon\\\"\\n                tabler=\\\"IconUnderline\\\"\\n                hugeicons=\\\"TextUnderlineIcon\\\"\\n                phosphor=\\\"TextUnderlineIcon\\\"\\n                remixicon=\\\"RiUnderline\\\"\\n              />\\n              Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Zoom In</MenubarItem>\\n            <MenubarItem inset>Zoom Out</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Image</MenubarItem>\\n                <MenubarItem>Video</MenubarItem>\\n                <MenubarItem>Audio</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"LinkIcon\\\"\\n                tabler=\\\"IconLink\\\"\\n                hugeicons=\\\"LinkIcon\\\"\\n                phosphor=\\\"LinkIcon\\\"\\n                remixicon=\\\"RiLinksLine\\\"\\n              />\\n              Link <MenubarShortcut>⌘K</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"TableIcon\\\"\\n                tabler=\\\"IconTable\\\"\\n                hugeicons=\\\"TableIcon\\\"\\n                phosphor=\\\"TableIcon\\\"\\n                remixicon=\\\"RiTableLine\\\"\\n              />\\n              Table\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n              />\\n              Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"CheckIcon\\\"\\n                tabler=\\\"IconCheck\\\"\\n                hugeicons=\\\"Tick02Icon\\\"\\n                phosphor=\\\"CheckIcon\\\"\\n                remixicon=\\\"RiCheckLine\\\"\\n              />\\n              Spell Check\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign out\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </MenubarItem>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarItem>Save Page...</MenubarItem>\\n                    <MenubarItem>Create Shortcut...</MenubarItem>\\n                    <MenubarItem>Name Window...</MenubarItem>\\n                    <MenubarSeparator />\\n                    <MenubarItem>Developer Tools</MenubarItem>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n                <MenubarItem>\\n                  Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"registryDependencies\": [\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"@base-ui/react/menubar\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({ className, ...props }: MenubarPrimitive.Props) {\\n  return (\\n    <MenubarPrimitive\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\n        \\\"flex h-8 items-center gap-0.5 rounded-lg border p-[3px]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\\n  return <DropdownMenu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuGroup>) {\\n  return <DropdownMenuGroup data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPortal>) {\\n  return <DropdownMenuPortal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuTrigger>) {\\n  return (\\n    <DropdownMenuTrigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-sm px-1.5 py-[2px] text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"menubar-content\\\"\\n      align={align}\\n      alignOffset={alignOffset}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-36 rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuItem>) {\\n  return (\\n    <DropdownMenuItem\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {\\n  return <DropdownMenuRadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuLabel> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuLabel\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-1.5 py-1 text-sm font-medium data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSeparator>) {\\n  return (\\n    <DropdownMenuSeparator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuShortcut>) {\\n  return (\\n    <DropdownMenuShortcut\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSub>) {\\n  return <DropdownMenuSub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuSubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubContent>) {\\n  return (\\n    <DropdownMenuSubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-32 rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-nova/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/base-nova/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuBasic />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Backlog\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    To Do\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Done\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              render={<Link href=\\\"/docs\\\" />}\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              Documentation\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink render={<Link href={href} />}>\\n        <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n          <div className=\\\"leading-none font-medium\\\">{title}</div>\\n          <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n        </div>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/navigation-menu.tsx\",\n      \"content\": \"import { NavigationMenu as NavigationMenuPrimitive } from \\\"@base-ui/react/navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  align = \\\"start\\\",\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Root.Props &\\n  Pick<NavigationMenuPrimitive.Positioner.Props, \\\"align\\\">) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <NavigationMenuPositioner align={align} />\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg bg-background px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Trigger.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Content.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-1 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuPositioner({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 8,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  ...props\\n}: NavigationMenuPrimitive.Positioner.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Portal>\\n      <NavigationMenuPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        className={cn(\\n          \\\"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <NavigationMenuPrimitive.Popup className=\\\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\\\">\\n          <NavigationMenuPrimitive.Viewport className=\\\"relative size-full overflow-hidden\\\" />\\n        </NavigationMenuPrimitive.Popup>\\n      </NavigationMenuPrimitive.Positioner>\\n    </NavigationMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Link.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {\\n  return (\\n    <NavigationMenuPrimitive.Icon\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Icon>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuIndicator,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n  NavigationMenuPositioner,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/pagination-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-nova/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/base-nova/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-0.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n      nativeButton={false}\\n      render={\\n        <a\\n          aria-current={isActive ? \\\"page\\\" : undefined}\\n          data-slot=\\\"pagination-link\\\"\\n          data-active={isActive}\\n          {...props}\\n        />\\n      }\\n    />\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-1.5!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-1.5!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-nova/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverSides />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-col gap-2\\\">\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"inline-start\\\", \\\"left\\\", \\\"top\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"bottom\\\", \\\"right\\\", \\\"inline-end\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Start\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Center\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            End\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Popover\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"@base-ui/react/popover\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  ...props\\n}: PopoverPrimitive.Popup.Props &\\n  Pick<\\n    PopoverPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PopoverPrimitive.Popup\\n          data-slot=\\\"popover-content\\\"\\n          className={cn(\\n            \\\"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PopoverPrimitive.Positioner>\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-0.5 text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\\n  return (\\n    <PopoverPrimitive.Title\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: PopoverPrimitive.Description.Props) {\\n  return (\\n    <PopoverPrimitive.Description\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"chart\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/base-nova/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/base-nova/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/base-nova/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/base-nova/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/base-nova/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/base-nova/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/base-nova/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/base-nova/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/base-nova/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/base-nova/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/base-nova/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/base-nova/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/base-nova/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/base-nova/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/base-nova/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/base-nova/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/base-nova/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/base-nova/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/base-nova/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/base-nova/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/base-nova/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/base-nova/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/base-nova/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/base-nova/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/base-nova/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/base-nova/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/base-nova/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/base-nova/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/base-nova/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/base-nova/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/base-nova/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-nova/ui/item\\\"\\nimport {\\n  Progress,\\n  ProgressLabel,\\n  ProgressValue,\\n} from \\\"@/registry/base-nova/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/base-nova/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Progress value={56}>\\n        <ProgressLabel>Upload progress</ProgressLabel>\\n        <ProgressValue />\\n      </Progress>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState(50)\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={(value) => setValue(value as number)}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Progress as ProgressPrimitive } from \\\"@base-ui/react/progress\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  children,\\n  value,\\n  ...props\\n}: ProgressPrimitive.Root.Props) {\\n  return (\\n    <ProgressPrimitive.Root\\n      value={value}\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\\"flex flex-wrap gap-3\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <ProgressTrack>\\n        <ProgressIndicator />\\n      </ProgressTrack>\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\\n  return (\\n    <ProgressPrimitive.Track\\n      className={cn(\\n        \\\"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-track\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressIndicator({\\n  className,\\n  ...props\\n}: ProgressPrimitive.Indicator.Props) {\\n  return (\\n    <ProgressPrimitive.Indicator\\n      data-slot=\\\"progress-indicator\\\"\\n      className={cn(\\\"h-full bg-primary transition-all\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\\n  return (\\n    <ProgressPrimitive.Label\\n      className={cn(\\\"text-sm font-medium\\\", className)}\\n      data-slot=\\\"progress-label\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\\n  return (\\n    <ProgressPrimitive.Value\\n      className={cn(\\n        \\\"ml-auto text-sm text-muted-foreground tabular-nums\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-value\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Progress,\\n  ProgressTrack,\\n  ProgressIndicator,\\n  ProgressLabel,\\n  ProgressValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-nova/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Radio as RadioPrimitive } from \\\"@base-ui/react/radio\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"@base-ui/react/radio-group\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\\n  return (\\n    <RadioGroupPrimitive\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\\n  return (\\n    <RadioPrimitive.Root\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioPrimitive.Indicator>\\n    </RadioPrimitive.Root>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"registryDependencies\": [\"dropdown-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\",\n        \"use-mobile\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n          \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"chart\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-nova/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-nova/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/base-nova/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/base-nova/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"@base-ui/react/scroll-area\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: ScrollAreaPrimitive.Root.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: ScrollAreaPrimitive.Scrollbar.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Scrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Thumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.Scrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-nova/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-nova/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectSides />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectMultiple />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSides() {\\n  const items = [\\n    { label: \\\"Select\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Select key={side} items={items}>\\n            <SelectTrigger className=\\\"w-28 capitalize\\\">\\n              <SelectValue placeholder={side.replace(\\\"-\\\", \\\" \\\")} />\\n            </SelectTrigger>\\n            <SelectContent side={side} alignItemWithTrigger={false}>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  const items = [\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Chart Type\\n        </>\\n      ),\\n      value: null,\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Line\\n        </>\\n      ),\\n      value: \\\"line\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartBarIcon\\\"\\n            tabler=\\\"IconChartBar\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartBarIcon\\\"\\n            remixicon=\\\"RiBarChartLine\\\"\\n          />\\n          Bar\\n        </>\\n      ),\\n      value: \\\"bar\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartPieIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n          Pie\\n        </>\\n      ),\\n      value: \\\"pie\\\",\\n    },\\n  ]\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  const fruits = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  const vegetables = [\\n    { label: \\\"Carrot\\\", value: \\\"carrot\\\" },\\n    { label: \\\"Broccoli\\\", value: \\\"broccoli\\\" },\\n    { label: \\\"Spinach\\\", value: \\\"spinach\\\" },\\n  ]\\n  const allItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    ...fruits,\\n    ...vegetables,\\n  ]\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select items={allItems}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            {fruits.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            {vegetables.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  const items = [\\n    { label: \\\"Select an item\\\", value: null },\\n    ...Array.from({ length: 100 }).map((_, i) => ({\\n      label: `Item ${i}`,\\n      value: `item-${i}`,\\n    })),\\n  ]\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Item Aligned\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent alignItemWithTrigger={true}>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select items={items}>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select items={items}>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  const items = [\\n    { label: \\\"Filter\\\", value: null },\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Inactive\\\", value: \\\"inactive\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items}>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select items={items} disabled>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select\\n        defaultValue={plans[0]}\\n        itemToStringValue={(plan: (typeof plans)[number]) => plan.name}\\n      >\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {(value: (typeof plans)[number]) => <SelectPlanItem plan={value} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectMultiple() {\\n  const items = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n    { label: \\\"Strawberry\\\", value: \\\"strawberry\\\" },\\n    { label: \\\"Watermelon\\\", value: \\\"watermelon\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Multiple Selection\\\">\\n      <Select items={items} multiple defaultValue={[]}>\\n        <SelectTrigger className=\\\"w-72\\\">\\n          <SelectValue>\\n            {(value: string[]) => {\\n              if (value.length === 0) {\\n                return \\\"Select fruits\\\"\\n              }\\n              if (value.length === 1) {\\n                return items.find((item) => item.value === value[0])?.label\\n              }\\n              return `${value.length} fruits selected`\\n            }}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"@base-ui/react/select\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Select = SelectPrimitive.Root\\n\\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1 p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\\n  return (\\n    <SelectPrimitive.Value\\n      data-slot=\\\"select-value\\\"\\n      className={cn(\\\"flex flex-1 text-left\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: SelectPrimitive.Trigger.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon\\n        render={\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n            className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n          />\\n        }\\n      />\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  alignItemWithTrigger = true,\\n  ...props\\n}: SelectPrimitive.Popup.Props &\\n  Pick<\\n    SelectPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\" | \\\"alignItemWithTrigger\\\"\\n  >) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        alignItemWithTrigger={alignItemWithTrigger}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <SelectPrimitive.Popup\\n          data-slot=\\\"select-content\\\"\\n          data-align-trigger={alignItemWithTrigger}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <SelectScrollUpButton />\\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\\n          <SelectScrollDownButton />\\n        </SelectPrimitive.Popup>\\n      </SelectPrimitive.Positioner>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: SelectPrimitive.GroupLabel.Props) {\\n  return (\\n    <SelectPrimitive.GroupLabel\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-1.5 py-1 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: SelectPrimitive.Item.Props) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SelectPrimitive.ItemText className=\\\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\\\">\\n        {children}\\n      </SelectPrimitive.ItemText>\\n      <SelectPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </SelectPrimitive.ItemIndicator>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: SelectPrimitive.Separator.Props) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\\"pointer-events-none -mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollUpArrow\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpArrow>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollDownArrow\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownArrow>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Separator as SeparatorPrimitive } from \\\"@base-ui/react/separator\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: SeparatorPrimitive.Props) {\\n  return (\\n    <SeparatorPrimitive\\n      data-slot=\\\"separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/base-nova/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>Open</SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose render={<Button variant=\\\"outline\\\" />}>Close</SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side}\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose render={<Button variant=\\\"outline\\\" />}>\\n                  Cancel\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\\n  return (\\n    <SheetPrimitive.Backdrop\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: SheetPrimitive.Popup.Props & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Popup\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close\\n            data-slot=\\\"sheet-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-3 right-3\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Popup>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-0.5 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: SheetPrimitive.Description.Props) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-nova/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-nova/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      isActive={item.isActive}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-nova/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-nova/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-nova/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton render={<CollapsibleTrigger />}>\\n                    {item.title}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"PlusIcon\\\"\\n                      tabler=\\\"IconPlus\\\"\\n                      hugeicons=\\\"PlusSignIcon\\\"\\n                      phosphor=\\\"PlusIcon\\\"\\n                      remixicon=\\\"RiAddLine\\\"\\n                      className=\\\"ml-auto group-aria-expanded/menu-button:hidden\\\"\\n                    />\\n                    <IconPlaceholder\\n                      lucide=\\\"MinusIcon\\\"\\n                      tabler=\\\"IconMinus\\\"\\n                      hugeicons=\\\"MinusSignIcon\\\"\\n                      phosphor=\\\"MinusIcon\\\"\\n                      remixicon=\\\"RiSubtractLine\\\"\\n                      className=\\\"ml-auto hidden group-aria-expanded/menu-button:block\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              isActive={item.isActive}\\n                              render={<a href={item.url} />}\\n                            >\\n                              {item.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-nova/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/base-nova/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuButton className=\\\"aria-expanded:bg-muted\\\" />\\n                }\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                  className=\\\"ml-auto\\\"\\n                />\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem\\n                      key={item.title}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-nova/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-nova/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/base-nova/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-nova/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n            render={<SidebarMenuItem />}\\n          >\\n            <CollapsibleTrigger\\n              render={<SidebarMenuButton tooltip={item.title} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"ml-auto transition-transform duration-200 group-data-open/collapsible:rotate-90\\\"\\n              />\\n            </CollapsibleTrigger>\\n            <CollapsibleContent>\\n              <SidebarMenuSub>\\n                {item.items?.map((subItem) => (\\n                  <SidebarMenuSubItem key={subItem.title}>\\n                    <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                      <span>{subItem.title}</span>\\n                    </SidebarMenuSubButton>\\n                  </SidebarMenuSubItem>\\n                ))}\\n              </SidebarMenuSub>\\n            </CollapsibleContent>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-nova/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-nova/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-nova/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-nova/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <CollapsibleTrigger\\n                  render={\\n                    <SidebarMenuAction className=\\\"aria-expanded:rotate-90\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </CollapsibleTrigger>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/base-nova/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/base-nova/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0\\\"\\n                render={<a href=\\\"#\\\" />}\\n              >\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0 data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/base-nova/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-nova/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-nova/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-nova/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-nova/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-nova/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-nova/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"icon\\\"\\n              className=\\\"h-7 w-7 data-open:bg-accent\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"MoreHorizontalIcon\\\"\\n            tabler=\\\"IconDots\\\"\\n            hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeOutlineIcon\\\"\\n            remixicon=\\\"RiMoreLine\\\"\\n          />\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"StarOffIcon\\\"\\n                      tabler=\\\"IconStarOff\\\"\\n                      hugeicons=\\\"StarOffIcon\\\"\\n                      phosphor=\\\"StarIcon\\\"\\n                      remixicon=\\\"RiStarOffLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Remove from Favorites</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"LinkIcon\\\"\\n                      tabler=\\\"IconLink\\\"\\n                      hugeicons=\\\"LinkIcon\\\"\\n                      phosphor=\\\"LinkIcon\\\"\\n                      remixicon=\\\"RiLinksLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Copy Link</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArrowUpRightIcon\\\"\\n                      tabler=\\\"IconArrowUpRight\\\"\\n                      hugeicons=\\\"ArrowUpRightIcon\\\"\\n                      phosphor=\\\"ArrowUpRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightUpLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Open in New Tab</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Delete</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={<SidebarMenuButton className=\\\"w-fit px-1.5\\\" />}\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\ntype TreeItem = string | TreeItem[]\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <SidebarMenuButton render={<CollapsibleTrigger />}>\\n          <IconPlaceholder\\n            lucide=\\\"ChevronRightIcon\\\"\\n            tabler=\\\"IconChevronRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"CaretRightIcon\\\"\\n            remixicon=\\\"RiArrowRightSLine\\\"\\n            className=\\\"transition-transform\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"FolderIcon\\\"\\n            tabler=\\\"IconFolder\\\"\\n            hugeicons=\\\"FolderIcon\\\"\\n            phosphor=\\\"FolderIcon\\\"\\n            remixicon=\\\"RiFolderLine\\\"\\n          />\\n          {name}\\n        </SidebarMenuButton>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-nova/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-nova/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-nova/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-nova/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/base-nova/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-nova/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger render={<Button size=\\\"sm\\\" />}>Open Dialog</DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                          render={<a href=\\\"#\\\" />}\\n                        >\\n                          {item.icon}\\n                          <span>{item.name}</span>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({\\n                length: 10,\\n              }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                  >\\n                    {item.title}\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            isActive={item.isActive}\\n                            render={<a href={item.url} />}\\n                          >\\n                            {item.title}\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/base-nova/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/base-nova/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-nova/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-nova/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-nova/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-nova/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-nova/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-nova/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-nova/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-nova/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-nova/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton className=\\\"w-fit px-1.5 aria-expanded:bg-muted aria-expanded:text-foreground\\\" />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-nova/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/base-nova/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-nova/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-nova/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-nova/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-nova/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"aria-expanded:rotate-90\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"aria-expanded:bg-muted aria-expanded:text-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-nova/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-nova/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-nova/ui/item\\\"\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v{selectedVersion}</ItemDescription>\\n                    </ItemContent>\\n                    <ItemActions>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronsUpDownIcon\\\"\\n                        tabler=\\\"IconSelector\\\"\\n                        hugeicons=\\\"UnfoldMoreIcon\\\"\\n                        phosphor=\\\"CaretUpDownIcon\\\"\\n                        remixicon=\\\"RiArrowUpDownLine\\\"\\n                      />\\n                    </ItemActions>\\n                  </Item>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <IconPlaceholder\\n                          lucide=\\\"CheckIcon\\\"\\n                          tabler=\\\"IconCheck\\\"\\n                          hugeicons=\\\"Tick02Icon\\\"\\n                          phosphor=\\\"CheckIcon\\\"\\n                          remixicon=\\\"RiCheckLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton\\n                        render={<a href={subItem.url} />}\\n                        isActive={subItem.isActive}\\n                      >\\n                        {subItem.title}\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/base-nova/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-nova/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n                <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                    <ItemDescription>v1.0.0</ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger\\n                      render={\\n                        <SidebarMenuButton className=\\\"data-popup-open:bg-sidebar-accent data-popup-open:text-sidebar-accent-foreground\\\" />\\n                      }\\n                    >\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"MoreHorizontalIcon\\\"\\n                        tabler=\\\"IconDots\\\"\\n                        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                        phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                        remixicon=\\\"RiMoreLine\\\"\\n                        className=\\\"ml-auto\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem\\n                              render={<a href={subItem.url} />}\\n                              key={subItem.title}\\n                            >\\n                              {subItem.title}\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-nova/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-nova/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Button\\n                    size=\\\"icon-sm\\\"\\n                    render={<span />}\\n                    nativeButton={false}\\n                    className=\\\"size-8\\\"\\n                  >\\n                    <svg\\n                      xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                      viewBox=\\\"0 0 256 256\\\"\\n                    >\\n                      <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                      <line\\n                        x1=\\\"208\\\"\\n                        y1=\\\"128\\\"\\n                        x2=\\\"128\\\"\\n                        y2=\\\"208\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                      <line\\n                        x1=\\\"192\\\"\\n                        y1=\\\"40\\\"\\n                        x2=\\\"40\\\"\\n                        y2=\\\"192\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                    </svg>\\n                  </Button>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {activeTeam.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuGroup>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger\\n                      render={<SidebarMenuButton tooltip={item.title} />}\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                        className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                      />\\n                    </CollapsibleTrigger>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton\\n                              render={<a href={subItem.url} />}\\n                            >\\n                              {subItem.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton render={<a href={item.url} />}>\\n                    {item.icon}\\n                    {item.name}\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Avatar>\\n                    <AvatarImage src={data.user.avatar} alt={data.user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {data.user.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{data.user.email}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-nova/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  render={<SidebarMenuItem />}\\n                >\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} />}\\n                    isActive={item.isActive}\\n                  >\\n                    {item.icon}\\n                    <span>{item.title}</span>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <>\\n                      <CollapsibleTrigger\\n                        render={\\n                          <SidebarMenuAction className=\\\"data-open:rotate-90\\\" />\\n                        }\\n                      >\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                        />\\n                        <span className=\\\"sr-only\\\">Toggle</span>\\n                      </CollapsibleTrigger>\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((subItem) => (\\n                            <SidebarMenuSubItem key={subItem.title}>\\n                              <SidebarMenuSubButton\\n                                render={<a href={subItem.url} />}\\n                              >\\n                                {subItem.title}\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    </>\\n                  ) : null}\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton render={<a href={item.url} />} size=\\\"sm\\\">\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"separator\",\n    \"sheet\",\n    \"skeleton\",\n    \"tooltip\",\n    \"use-mobile\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-nova/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport { Separator } from \\\"@/registry/base-nova/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/base-nova/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/base-nova/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & React.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-label\\\",\\n      sidebar: \\\"group-label\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> & React.ComponentProps<\\\"button\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-action\\\",\\n      sidebar: \\\"group-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-sm\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-sm group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  render,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    isActive?: boolean\\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n  } & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const { isMobile, state } = useSidebar()\\n  const comp = useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(sidebarMenuButtonVariants({ variant, size }), className),\\n      },\\n      props\\n    ),\\n    render: !tooltip ? render : <TooltipTrigger render={render} />,\\n    state: {\\n      slot: \\\"sidebar-menu-button\\\",\\n      sidebar: \\\"menu-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n\\n  if (!tooltip) {\\n    return comp\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      {comp}\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  render,\\n  showOnHover = false,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    showOnHover?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          showOnHover &&\\n            \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-action\\\",\\n      sidebar: \\\"menu-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  render,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\"> &\\n  React.ComponentProps<\\\"a\\\"> & {\\n    size?: \\\"sm\\\" | \\\"md\\\"\\n    isActive?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-sub-button\\\",\\n      sidebar: \\\"menu-sub-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-nova/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-nova/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-nova/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-nova/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-nova/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-nova/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/base-nova/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/base-nova/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-md bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport { Slider } from \\\"@/registry/base-nova/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={50} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={(value) => setValue(value as number[])}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"@base-ui/react/slider\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: SliderPrimitive.Root.Props) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      className={cn(\\\"data-horizontal:w-full data-vertical:h-full\\\", className)}\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      thumbAlignment=\\\"edge\\\"\\n      {...props}\\n    >\\n      <SliderPrimitive.Control className=\\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\">\\n        <SliderPrimitive.Track\\n          data-slot=\\\"slider-track\\\"\\n          className=\\\"relative grow overflow-hidden rounded-full bg-muted select-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\\\"\\n        >\\n          <SliderPrimitive.Indicator\\n            data-slot=\\\"slider-range\\\"\\n            className=\\\"bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n          />\\n        </SliderPrimitive.Track>\\n        {Array.from({ length: _values.length }, (_, index) => (\\n          <SliderPrimitive.Thumb\\n            data-slot=\\\"slider-thumb\\\"\\n            key={index}\\n            className=\\\"relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50\\\"\\n          />\\n        ))}\\n      </SliderPrimitive.Control>\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-nova/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-nova/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-nova/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/base-nova/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            nativeButton={false}\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Label } from \\\"@/registry/base-nova/ui/label\\\"\\nimport { Switch } from \\\"@/registry/base-nova/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Switch as SwitchPrimitive } from \\\"@base-ui/react/switch\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: SwitchPrimitive.Root.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/table-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-nova/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nconst people = [\\n  { value: \\\"sarah\\\", label: \\\"Sarah Chen\\\" },\\n  { value: \\\"marcus\\\", label: \\\"Marc Rodriguez\\\" },\\n  { value: \\\"emily\\\", label: \\\"Emily Watson\\\" },\\n  { value: \\\"david\\\", label: \\\"David Kim\\\" },\\n]\\n\\nconst tasks = [\\n  {\\n    task: \\\"Design homepage\\\",\\n    assignee: \\\"sarah\\\",\\n    status: \\\"In Progress\\\",\\n  },\\n  {\\n    task: \\\"Implement API\\\",\\n    assignee: \\\"marcus\\\",\\n    status: \\\"Pending\\\",\\n  },\\n  {\\n    task: \\\"Write tests\\\",\\n    assignee: \\\"emily\\\",\\n    status: \\\"Not Started\\\",\\n  },\\n]\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tasks.map((item) => (\\n            <TableRow key={item.task}>\\n              <TableCell className=\\\"font-medium\\\">{item.task}</TableCell>\\n              <TableCell>\\n                <Select\\n                  items={people}\\n                  defaultValue={people.find(\\n                    (person) => person.value === item.assignee\\n                  )}\\n                  itemToStringValue={(item) => {\\n                    return item.value\\n                  }}\\n                >\\n                  <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      {people.map((person) => (\\n                        <SelectItem key={person.value} value={person}>\\n                          {person.label}\\n                        </SelectItem>\\n                      ))}\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </TableCell>\\n              <TableCell>{item.status}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-nova/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-nova/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">More options</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tabs as TabsPrimitive } from \\\"@base-ui/react/tabs\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: TabsPrimitive.Root.Props) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\\n  return (\\n    <TabsPrimitive.Tab\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\\n  return (\\n    <TabsPrimitive.Panel\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-sm outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/base-nova/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/base-nova/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-nova/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-nova/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-nova/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup multiple spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" defaultValue={[\\\"all\\\"]}>\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup size=\\\"sm\\\" defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup multiple variant=\\\"outline\\\" spacing={2} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup defaultValue={[\\\"all\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        defaultValue={[\\\"today\\\"]}\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup defaultValue={[\\\"newest\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  const items = [\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Archived\\\", value: \\\"archived\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items} defaultValue={items[0]}>\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup defaultValue={[\\\"grid\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup multiple orientation=\\\"vertical\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        defaultValue={[\\\"all\\\"]}\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple orientation=\\\"vertical\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          value={[fontWeight]}\\n          onValueChange={(value) => setFontWeight(value[0])}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={1}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"@base-ui/react/toggle-group\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/base-nova/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: ToggleGroupPrimitive.Props &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </TogglePrimitive>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 min-w-8 px-2\\\",\\n        sm: \\\"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]\\\",\\n        lg: \\\"h-9 min-w-9 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/base-nova/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/base-nova/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Info</span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<span className=\\\"inline-block w-fit\\\" />}>\\n          <Button variant=\\\"outline\\\" disabled>\\n            Disabled\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger\\n          render={\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n              onClick={(e) => e.preventDefault()}\\n            />\\n          }\\n        >\\n          Learn more\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Status\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tooltip as TooltipPrimitive } from \\\"@base-ui/react/tooltip\\\"\\n\\nimport { cn } from \\\"@/registry/base-nova/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delay = 0,\\n  ...props\\n}: TooltipPrimitive.Provider.Props) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delay={delay}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  side = \\\"top\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  children,\\n  ...props\\n}: TooltipPrimitive.Popup.Props &\\n  Pick<\\n    TooltipPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <TooltipPrimitive.Popup\\n          data-slot=\\\"tooltip-content\\\"\\n          className={cn(\\n            \\\"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          {children}\\n          <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\\\" />\\n        </TooltipPrimitive.Popup>\\n      </TooltipPrimitive.Positioner>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-nova/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-nova/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/base-vega/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion multiple className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            multiple\\n            defaultValue={[\\\"plans\\\"]}\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Accordion as AccordionPrimitive } from \\\"@base-ui/react/accordion\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\\"flex w-full flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Trigger.Props) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-md border border-transparent py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: AccordionPrimitive.Panel.Props) {\\n  return (\\n    <AccordionPrimitive.Panel\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--accordion-panel-height) pt-0 pb-4 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Panel>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-vega/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger render={<Button variant=\\\"outline\\\">Small</Button>} />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Default (Media)</Button>}\\n        />\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"outline\\\">Small (Media)</Button>}\\n        />\\n\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger\\n          render={<Button variant=\\\"destructive\\\">Delete Chat</Button>}\\n        />\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger render={<Button />}>\\n                Open Alert Dialog\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"@base-ui/react/alert-dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\n\\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: AlertDialogPrimitive.Backdrop.Props) {\\n  return (\\n    <AlertDialogPrimitive.Backdrop\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Popup.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Popup\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-background p-6 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  return (\\n    <Button\\n      data-slot=\\\"alert-dialog-action\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: AlertDialogPrimitive.Close.Props &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <AlertDialogPrimitive.Close\\n      data-slot=\\\"alert-dialog-cancel\\\"\\n      className={cn(className)}\\n      render={<Button variant={variant} size={size} />}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/base-vega/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/base-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\\"absolute top-2.5 right-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/base-vega/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/aspect-ratio.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction AspectRatio({\\n  ratio,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { ratio: number }) {\\n  return (\\n    <div\\n      data-slot=\\\"aspect-ratio\\\"\\n      style={\\n        {\\n          \\\"--ratio\\\": ratio,\\n        } as React.CSSProperties\\n      }\\n      className={cn(\\\"relative aspect-(--ratio)\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-vega/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"@base-ui/react/avatar\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: AvatarPrimitive.Root.Props & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: AvatarPrimitive.Fallback.Props) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-vega/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/base-vega/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"secondary\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"destructive\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRightIcon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n        <Badge\\n          variant=\\\"ghost\\\"\\n          render={\\n            <a href=\\\"#\\\">\\n              Link{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </a>\\n          }\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/badge.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"span\\\"> & VariantProps<typeof badgeVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"span\\\",\\n    props: mergeProps<\\\"span\\\">(\\n      {\\n        className: cn(badgeVariants({ variant }), className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"badge\\\",\\n      variant,\\n    },\\n  })\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\" />}\\n              >\\n                <BreadcrumbEllipsis />\\n                <span className=\\\"sr-only\\\">Toggle menu</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Home</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink render={<Link href=\\\"#\\\">Components</Link>} />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\\"transition-colors hover:text-foreground\\\", className),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"breadcrumb-link\\\",\\n    },\\n  })\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-5 items-center justify-center [&>svg]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/button-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <a href=\\\"#\\\" className={buttonVariants()}>\\n          Link\\n        </a>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-vega/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText render={<Label htmlFor=\\\"input-text\\\" />}>\\n            GPU Size\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeX\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nconst currencyItems = [\\n  { label: \\\"$\\\", value: \\\"$\\\" },\\n  { label: \\\"€\\\", value: \\\"€\\\" },\\n  { label: \\\"£\\\", value: \\\"£\\\" },\\n]\\n\\nfunction ButtonGroupWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select items={currencyItems} defaultValue={currencyItems[0]}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {currencyItems.map((item) => (\\n                  <SelectItem key={item.value} value={item}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button\\n          variant=\\\"outline\\\"\\n          size=\\\"icon\\\"\\n          className=\\\"w-12\\\"\\n          render={<span />}\\n          nativeButton={false}\\n        >\\n          1.2K\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nconst durationItems = [\\n  { label: \\\"Hours\\\", value: \\\"hours\\\" },\\n  { label: \\\"Days\\\", value: \\\"days\\\" },\\n  { label: \\\"Weeks\\\", value: \\\"weeks\\\" },\\n]\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select items={durationItems} defaultValue={durationItems[0]}>\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              {durationItems.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger render={<InputGroupAddon align=\\\"inline-end\\\" />}>\\n                <IconPlaceholder\\n                  lucide=\\\"AudioLinesIcon\\\"\\n                  tabler=\\\"IconHeadphones\\\"\\n                  hugeicons=\\\"AudioWave01Icon\\\"\\n                  phosphor=\\\"MicrophoneIcon\\\"\\n                  remixicon=\\\"RiMicLine\\\"\\n                />\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft02Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/button-group.tsx\",\n      \"content\": \"import { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\\\",\\n        vertical:\\n          \\\"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex items-center gap-2 rounded-md border bg-muted px-2.5 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"button-group-text\\\",\\n    },\\n  })\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/button.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button as ButtonPrimitive } from \\\"@base-ui/react/button\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border bg-background shadow-xs hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\\\",\\n        xs: \\\"h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\\\",\\n        lg: \\\"h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\\\",\\n        icon: \\\"size-9\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\":\\n          \\\"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md\\\",\\n        \\\"icon-lg\\\": \\\"size-10\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\\n  return (\\n    <ButtonPrimitive\\n      data-slot=\\\"button\\\"\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/base-vega/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-vega/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-vega/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-vega/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\" />}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"CalendarIcon\\\"\\n            tabler=\\\"IconCalendar\\\"\\n            hugeicons=\\\"CalendarIcon\\\"\\n            phosphor=\\\"CalendarBlankIcon\\\"\\n            remixicon=\\\"RiCalendarLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Open Calendar\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-simple\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-range\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            {date?.from ? (\\n              date.to ? (\\n                <>\\n                  {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                  {format(date.to, \\\"LLL dd, y\\\")}\\n                </>\\n              ) : (\\n                format(date.from, \\\"LLL dd, y\\\")\\n              )\\n            ) : (\\n              <span>Pick a date</span>\\n            )}\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-picker-with-dropdowns-desktop\\\"\\n                className=\\\"justify-start px-2.5 font-normal\\\"\\n              />\\n            }\\n          >\\n            {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-6 overflow-hidden rounded-xl bg-card py-6 text-sm text-card-foreground shadow-xs ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base leading-normal font-medium group-data-[size=sm]/card:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-6 group-data-[size=sm]/card:px-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/base-vega/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-vega/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-vega/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-vega/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox as CheckboxPrimitive } from \\\"@base-ui/react/checkbox\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input shadow-xs transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/base-vega/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {fileItem.name}\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n            >\\n              {isOpen ? (\\n                <IconPlaceholder\\n                  lucide=\\\"MinimizeIcon\\\"\\n                  tabler=\\\"IconMinimize\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              ) : (\\n                <IconPlaceholder\\n                  lucide=\\\"MaximizeIcon\\\"\\n                  tabler=\\\"IconMaximize\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              )}\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"@base-ui/react/collapsible\\\"\\n\\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\\n  return (\\n    <CollapsiblePrimitive.Trigger data-slot=\\\"collapsible-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\\n  return (\\n    <CollapsiblePrimitive.Panel data-slot=\\\"collapsible-content\\\" {...props} />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/base-vega/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-vega/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxSides />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Combobox key={side} items={frameworks}>\\n            <ComboboxInput\\n              placeholder={side.replace(\\\"-\\\", \\\" \\\")}\\n              className=\\\"w-32 **:data-[slot=input-group-control]:capitalize\\\"\\n            />\\n            <ComboboxContent side={side}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen}>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst items = [\\n  {\\n    label: \\\"Select a framework\\\",\\n    value: null,\\n  },\\n  {\\n    label: \\\"React\\\",\\n    value: \\\"react\\\",\\n  },\\n  {\\n    label: \\\"Vue\\\",\\n    value: \\\"vue\\\",\\n  },\\n  {\\n    label: \\\"Angular\\\",\\n    value: \\\"angular\\\",\\n  },\\n  {\\n    label: \\\"Svelte\\\",\\n    value: \\\"svelte\\\",\\n  },\\n  {\\n    label: \\\"Solid\\\",\\n    value: \\\"solid\\\",\\n  },\\n  {\\n    label: \\\"Preact\\\",\\n    value: \\\"preact\\\",\\n  },\\n  {\\n    label: \\\"Next.js\\\",\\n    value: \\\"next.js\\\",\\n  },\\n]\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select items={items}>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            render={<ComboboxTrigger />}\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          />\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/base-vega/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: Omit<React.ComponentProps<typeof Dialog>, \\\"children\\\"> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n  children: React.ReactNode\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"p-1 pb-0\\\">\\n      <InputGroup className=\\\"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-4 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 h-px w-auto bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:**:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-vega/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/base-vega/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/base-vega/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger render={<Button />}>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Show Dialog\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst roleItems = [\\n  { label: \\\"Developer\\\", value: \\\"developer\\\" },\\n  { label: \\\"Designer\\\", value: \\\"designer\\\" },\\n  { label: \\\"Manager\\\", value: \\\"manager\\\" },\\n  { label: \\\"Other\\\", value: \\\"other\\\" },\\n]\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreVerticalIcon\\\"\\n                  tabler=\\\"IconDotsVertical\\\"\\n                  hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                  remixicon=\\\"RiMore2Line\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select items={roleItems} defaultValue={null}>\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        {roleItems.map((item) => (\\n                          <SelectItem key={item.value} value={item.value}>\\n                            {item.label}\\n                          </SelectItem>\\n                        ))}\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem defaultChecked>\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <ContextMenu key={side}>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] items-center justify-center rounded-lg border p-4 text-sm capitalize\\\">\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </ContextMenuTrigger>\\n            <ContextMenuContent side={side}>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Back</ContextMenuItem>\\n                <ContextMenuItem>Forward</ContextMenuItem>\\n                <ContextMenuItem>Reload</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"@base-ui/react/context-menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Trigger.Props) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = 4,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  ...props\\n}: ContextMenuPrimitive.Popup.Props &\\n  Pick<\\n    ContextMenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <ContextMenuPrimitive.Popup\\n          data-slot=\\\"context-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ContextMenuPrimitive.Positioner>\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.GroupLabel\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: ContextMenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuRoot data-slot=\\\"context-menu-sub\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuContent>) {\\n  return (\\n    <ContextMenuContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className=\\\"cn-menu-target cn-menu-translucent shadow-lg\\\"\\n      side=\\\"right\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: ContextMenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: ContextMenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: ContextMenuPrimitive.Separator.Props) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/base-vega/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/base-vega/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/base-vega/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/base-vega/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/base-vega/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/base-vega/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-vega/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-vega/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n              render={<a href=\\\"#\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CommandIcon\\\"\\n                tabler=\\\"IconInnerShadowTop\\\"\\n                hugeicons=\\\"CommandIcon\\\"\\n                phosphor=\\\"CommandIcon\\\"\\n                remixicon=\\\"RiCommandLine\\\"\\n                className=\\\"size-5!\\\"\\n              />\\n              <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-vega/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-vega/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-vega/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            multiple={false}\\n            value={timeRange ? [timeRange] : []}\\n            onValueChange={(value) => {\\n              setTimeRange(value[0] ?? \\\"90d\\\")\\n            }}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select\\n            value={timeRange}\\n            onValueChange={(value) => {\\n              if (value !== null) {\\n                setTimeRange(value)\\n              }\\n            }}\\n          >\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-vega/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/base-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/base-vega/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/base-vega/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-vega/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-vega/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-vega/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={table.getIsAllPageRowsSelected()}\\n          indeterminate={\\n            table.getIsSomePageRowsSelected() &&\\n            !table.getIsAllPageRowsSelected()\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select\\n            items={[\\n              { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n              { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n            ]}\\n          >\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"flex size-8 text-muted-foreground data-open:bg-muted\\\"\\n              size=\\\"icon\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"EllipsisVerticalIcon\\\"\\n            tabler=\\\"IconDotsVertical\\\"\\n            hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeVerticalIcon\\\"\\n            remixicon=\\\"RiMore2Line\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Open menu</span>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select\\n          defaultValue=\\\"outline\\\"\\n          items={[\\n            { label: \\\"Outline\\\", value: \\\"outline\\\" },\\n            { label: \\\"Past Performance\\\", value: \\\"past-performance\\\" },\\n            { label: \\\"Key Personnel\\\", value: \\\"key-personnel\\\" },\\n            { label: \\\"Focus Documents\\\", value: \\\"focus-documents\\\" },\\n          ]}\\n        >\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"Columns3Icon\\\"\\n                tabler=\\\"IconLayoutColumns\\\"\\n                hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                phosphor=\\\"ColumnsIcon\\\"\\n                remixicon=\\\"RiLayoutColumnLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Columns\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-end\\\"\\n              />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n                items={[10, 20, 30, 40, 50].map((pageSize) => ({\\n                  label: `${pageSize}`,\\n                  value: `${pageSize}`,\\n                }))}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\nconst chartData = [\\n  {\\n    month: \\\"January\\\",\\n    desktop: 186,\\n    mobile: 80,\\n  },\\n  {\\n    month: \\\"February\\\",\\n    desktop: 305,\\n    mobile: 200,\\n  },\\n  {\\n    month: \\\"March\\\",\\n    desktop: 237,\\n    mobile: 120,\\n  },\\n  {\\n    month: \\\"April\\\",\\n    desktop: 73,\\n    mobile: 190,\\n  },\\n  {\\n    month: \\\"May\\\",\\n    desktop: 209,\\n    mobile: 130,\\n  },\\n  {\\n    month: \\\"June\\\",\\n    desktop: 214,\\n    mobile: 140,\\n  },\\n]\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select\\n                  defaultValue={item.type}\\n                  items={[\\n                    { label: \\\"Table of Contents\\\", value: \\\"Table of Contents\\\" },\\n                    { label: \\\"Executive Summary\\\", value: \\\"Executive Summary\\\" },\\n                    {\\n                      label: \\\"Technical Approach\\\",\\n                      value: \\\"Technical Approach\\\",\\n                    },\\n                    { label: \\\"Design\\\", value: \\\"Design\\\" },\\n                    { label: \\\"Capabilities\\\", value: \\\"Capabilities\\\" },\\n                    { label: \\\"Focus Documents\\\", value: \\\"Focus Documents\\\" },\\n                    { label: \\\"Narrative\\\", value: \\\"Narrative\\\" },\\n                    { label: \\\"Cover Page\\\", value: \\\"Cover Page\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select\\n                  defaultValue={item.status}\\n                  items={[\\n                    { label: \\\"Done\\\", value: \\\"Done\\\" },\\n                    { label: \\\"In Progress\\\", value: \\\"In Progress\\\" },\\n                    { label: \\\"Not Started\\\", value: \\\"Not Started\\\" },\\n                  ]}\\n                >\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select\\n                defaultValue={item.reviewer}\\n                items={[\\n                  { label: \\\"Eddie Lake\\\", value: \\\"Eddie Lake\\\" },\\n                  { label: \\\"Jamik Tashpulatov\\\", value: \\\"Jamik Tashpulatov\\\" },\\n                  { label: \\\"Emily Whalen\\\", value: \\\"Emily Whalen\\\" },\\n                ]}\\n              >\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\" />\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar className=\\\"size-8 rounded-lg grayscale\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs text-foreground/70\\\">\\n                {user.email}\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar className=\\\"size-8\\\">\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                      {user.email}\\n                    </span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/base-vega/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 h-4 data-vertical:self-auto\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/base-vega/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/base-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/base-vega/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/base-vega/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/base-vega/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-vega/ui/item\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-vega/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/base-vega/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-vega/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-vega/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback(\\n    (value: number | readonly number[]) => {\\n      if (typeof value === \\\"number\\\") {\\n        setSliderValue([value])\\n      } else {\\n        setSliderValue([...value])\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n                    <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                    <span className=\\\"block md:hidden\\\">Dialog</span>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger\\n                      render={<Button variant=\\\"outline\\\" size=\\\"icon\\\" />}\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronUpIcon\\\"\\n                        tabler=\\\"IconChevronUp\\\"\\n                        hugeicons=\\\"ArrowUp01Icon\\\"\\n                        phosphor=\\\"CaretUpIcon\\\"\\n                        remixicon=\\\"RiArrowUpSLine\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/base-vega/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-vega/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-vega/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport { Switch } from \\\"@/registry/base-vega/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-vega/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/base-vega/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n            Edit Profile\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n                Cancel\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Scrollable Content\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Sticky Footer\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose render={<Button variant=\\\"outline\\\" />}>\\n              Close\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"Auto\\\", value: \\\"auto\\\" },\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nconst themes = [\\n  { label: \\\"Light\\\", value: \\\"light\\\" },\\n  { label: \\\"Dark\\\", value: \\\"dark\\\" },\\n  { label: \\\"System\\\", value: \\\"system\\\" },\\n]\\n\\nconst accents = [\\n  { label: \\\"Default\\\", value: \\\"default\\\" },\\n  { label: \\\"Red\\\", value: \\\"red\\\" },\\n  { label: \\\"Blue\\\", value: \\\"blue\\\" },\\n  { label: \\\"Green\\\", value: \\\"green\\\" },\\n  { label: \\\"Purple\\\", value: \\\"purple\\\" },\\n  { label: \\\"Pink\\\", value: \\\"pink\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Chat Settings\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select\\n                          items={themes}\\n                          value={theme}\\n                          onValueChange={(value) => setTheme(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {themes.map((theme) => (\\n                                <SelectItem\\n                                  key={theme.value}\\n                                  value={theme.value}\\n                                >\\n                                  {theme.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          items={accents}\\n                          value={accentColor}\\n                          onValueChange={(value) =>\\n                            setAccentColor(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {accents.map((accent) => (\\n                                <SelectItem\\n                                  key={accent.value}\\n                                  value={accent.value}\\n                                >\\n                                  {accent.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          items={spokenLanguages}\\n                          value={spokenLanguage}\\n                          onValueChange={(value) =>\\n                            setSpokenLanguage(value as string)\\n                          }\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select\\n                          items={voices}\\n                          value={voice}\\n                          onValueChange={(value) => setVoice(value as string)}\\n                        >\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger\\n                              render={<InputGroupButton size=\\\"icon-xs\\\" />}\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"InfoIcon\\\"\\n                                tabler=\\\"IconInfoCircle\\\"\\n                                hugeicons=\\\"AlertCircleIcon\\\"\\n                                phosphor=\\\"InfoIcon\\\"\\n                                remixicon=\\\"RiInformationLine\\\"\\n                              />\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: DialogPrimitive.Backdrop.Props) {\\n  return (\\n    <DialogPrimitive.Backdrop\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: DialogPrimitive.Popup.Props & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Popup\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-background p-6 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-4 right-4\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Popup>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close render={<Button variant=\\\"outline\\\" />}>\\n          Close\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\\"cn-font-heading leading-none font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: DialogPrimitive.Description.Props) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nexport {\\n  DirectionProvider,\\n  useDirection,\\n} from \\\"@base-ui/react/direction-provider\\\"\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n      \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/base-vega/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\\"cn-font-heading font-medium text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuSides />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>GitHub</DropdownMenuItem>\\n          <DropdownMenuItem>Support</DropdownMenuItem>\\n          <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <DropdownMenu key={side}>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent side={side}>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>Profile</DropdownMenuItem>\\n                <DropdownMenuItem>Billing</DropdownMenuItem>\\n                <DropdownMenuItem>Settings</DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"UserIcon\\\"\\n              tabler=\\\"IconUser\\\"\\n              hugeicons=\\\"UserIcon\\\"\\n              phosphor=\\\"UserIcon\\\"\\n              remixicon=\\\"RiUserLine\\\"\\n            />\\n            Profile\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"CreditCardIcon\\\"\\n              tabler=\\\"IconCreditCard\\\"\\n              hugeicons=\\\"CreditCardIcon\\\"\\n              phosphor=\\\"CreditCardIcon\\\"\\n              remixicon=\\\"RiBankCardLine\\\"\\n            />\\n            Billing\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n            Settings\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"LogOutIcon\\\"\\n              tabler=\\\"IconLogout\\\"\\n              hugeicons=\\\"LogoutIcon\\\"\\n              phosphor=\\\"SignOutIcon\\\"\\n              remixicon=\\\"RiLogoutBoxLine\\\"\\n            />\\n            Log out\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            Log out\\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuItem>Email</DropdownMenuItem>\\n                  <DropdownMenuItem>Message</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>More...</DropdownMenuItem>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Checkboxes\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Radio Group\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Notifications\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Payment Method\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Actions\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"PencilIcon\\\"\\n              tabler=\\\"IconPencil\\\"\\n              hugeicons=\\\"EditIcon\\\"\\n              phosphor=\\\"PencilIcon\\\"\\n              remixicon=\\\"RiPencilLine\\\"\\n            />\\n            Edit\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"ShareIcon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n            Share\\n          </DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>\\n            <IconPlaceholder\\n              lucide=\\\"ArchiveIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n            Archive\\n          </DropdownMenuItem>\\n          <DropdownMenuItem variant=\\\"destructive\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"DeleteIcon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n            Delete\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuItem>\\n        <IconPlaceholder\\n          lucide=\\\"LogOutIcon\\\"\\n          tabler=\\\"IconLogout\\\"\\n          hugeicons=\\\"LogoutIcon\\\"\\n          phosphor=\\\"SignOutIcon\\\"\\n          remixicon=\\\"RiLogoutBoxLine\\\"\\n        />\\n        Sign Out\\n      </DropdownMenuItem>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n              <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                shadcn@example.com\\n              </span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto text-muted-foreground\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--anchor-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Menu\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ClipboardPasteIcon\\\"\\n                  tabler=\\\"IconClipboard\\\"\\n                  hugeicons=\\\"ClipboardIcon\\\"\\n                  phosphor=\\\"ClipboardIcon\\\"\\n                  remixicon=\\\"RiClipboardLine\\\"\\n                />\\n                Paste\\n              </DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                    <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                    <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Open\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger\\n          render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n        >\\n          Complex Menu\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"FileCodeIcon\\\"\\n                              remixicon=\\\"RiFileCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\\n  return <MenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\\n  return <MenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n}\\n\\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\\n  return <MenuPrimitive.Trigger data-slot=\\\"dropdown-menu-trigger\\\" {...props} />\\n}\\n\\nfunction DropdownMenuContent({\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  className,\\n  ...props\\n}: MenuPrimitive.Popup.Props &\\n  Pick<\\n    MenuPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <MenuPrimitive.Portal>\\n      <MenuPrimitive.Positioner\\n        className=\\\"isolate z-50 outline-none\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n      >\\n        <MenuPrimitive.Popup\\n          data-slot=\\\"dropdown-menu-content\\\"\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </MenuPrimitive.Positioner>\\n    </MenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\\n  return <MenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: MenuPrimitive.GroupLabel.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.GroupLabel\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: MenuPrimitive.Item.Props & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\\n  return <MenuPrimitive.SubmenuRoot data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: MenuPrimitive.SubmenuTrigger.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.SubmenuTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </MenuPrimitive.SubmenuTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  align = \\\"start\\\",\\n  alignOffset = -3,\\n  side = \\\"right\\\",\\n  sideOffset = 0,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent w-auto min-w-[96px] rounded-md bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      align={align}\\n      alignOffset={alignOffset}\\n      side={side}\\n      sideOffset={sideOffset}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\\n  return (\\n    <MenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: MenuPrimitive.Separator.Props) {\\n  return (\\n    <MenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-vega/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/base-vega/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            className=\\\"text-muted-foreground\\\"\\n            nativeButton={false}\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-lg border-dashed p-12 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-lg font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-vega/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/base-vega/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-vega/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-vega/ui/native-select\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-vega/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport { Slider } from \\\"@/registry/base-vega/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/base-vega/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/base-vega/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  const basicItems = [\\n    { label: \\\"Choose an option\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const countryItems = [\\n    { label: \\\"Select your country\\\", value: null },\\n    { label: \\\"United States\\\", value: \\\"us\\\" },\\n    { label: \\\"United Kingdom\\\", value: \\\"uk\\\" },\\n    { label: \\\"Canada\\\", value: \\\"ca\\\" },\\n  ]\\n  const timezoneItems = [\\n    { label: \\\"Select timezone\\\", value: null },\\n    { label: \\\"UTC\\\", value: \\\"utc\\\" },\\n    { label: \\\"Eastern Time\\\", value: \\\"est\\\" },\\n    { label: \\\"Pacific Time\\\", value: \\\"pst\\\" },\\n  ]\\n  const invalidItems = [\\n    { label: \\\"This field has an error\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n  const disabledItems = [\\n    { label: \\\"Cannot select\\\", value: null },\\n    { label: \\\"Option 1\\\", value: \\\"option1\\\" },\\n    { label: \\\"Option 2\\\", value: \\\"option2\\\" },\\n    { label: \\\"Option 3\\\", value: \\\"option3\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select items={countryItems}>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {countryItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select items={timezoneItems}>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {timezoneItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select items={invalidItems}>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {invalidItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select items={disabledItems} disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {disabledItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={(value) => setVolume(value as number[])}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={(value) => setBrightness(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={(value) => setTemperature(value as number[])}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={(value) => setPriceRange(value as number[])}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={(value) => setColorBalance(value as number[])}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  const basicItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Orange\\\", value: \\\"orange\\\" },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select items={basicItems}>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {basicItems.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-1 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-3 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-sm font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/base-vega/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\n  \\\"inline-start\\\",\\n  \\\"left\\\",\\n  \\\"top\\\",\\n  \\\"bottom\\\",\\n  \\\"right\\\",\\n  \\\"inline-end\\\",\\n] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-2\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side}>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side}>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side.replace(\\\"-\\\", \\\" \\\")} side\\n                  of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard>\\n            <HoverCardTrigger\\n              delay={100}\\n              closeDelay={100}\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Hover me\\n            </HoverCardTrigger>\\n            <HoverCardContent>\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { PreviewCard as PreviewCardPrimitive } from \\\"@base-ui/react/preview-card\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\\n  return <PreviewCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\\n  return (\\n    <PreviewCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 4,\\n  ...props\\n}: PreviewCardPrimitive.Popup.Props &\\n  Pick<\\n    PreviewCardPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PreviewCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <PreviewCardPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PreviewCardPrimitive.Popup\\n          data-slot=\\\"hover-card-content\\\"\\n          className={cn(\\n            \\\"z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PreviewCardPrimitive.Positioner>\\n    </PreviewCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-vega/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/base-vega/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-vega/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-vega/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/base-vega/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/base-vega/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\" />\\n                  }\\n                >\\n                  {country}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDownIcon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger render={<InputGroupAddon />} nativeButton={false}>\\n                <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/base-vega/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-9 w-full min-w-0 items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\" | \\\"type\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants> & {\\n    type?: \\\"button\\\" | \\\"submit\\\" | \\\"reset\\\"\\n  }) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/base-vega/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Input as InputPrimitive } from \\\"@base-ui/react/input\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <InputPrimitive\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/base-vega/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title Only (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Clickable item with title and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title (Link)</ItemTitle>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n            <ItemDescription>\\n              Complete link item with media, title, and description.\\n            </ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"muted\\\" render={<a href=\\\"#\\\" />}>\\n          <ItemContent>\\n            <ItemTitle>With Actions (Link)</ItemTitle>\\n            <ItemDescription>\\n              Link item that also has action buttons.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Share\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"ArchiveIcon\\\"\\n              remixicon=\\\"RiArchiveLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-md border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-3.5 px-4 py-3.5\\\",\\n        sm: \\\"gap-2.5 px-3 py-2.5\\\",\\n        xs: \\\"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemVariants>) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(itemVariants({ variant, size, className })),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"item\\\",\\n      variant,\\n      size,\\n    },\\n  })\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/base-vega/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button size=\\\"icon-sm\\\" variant=\\\"outline\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/base-vega/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/base-vega/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Label({ className, ...props }: React.ComponentProps<\\\"label\\\">) {\\n  return (\\n    <label\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-vega/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-vega/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/base-vega/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-vega/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/base-vega/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/base-vega/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarSides />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarSides() {\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Menubar key={side}>\\n            <MenubarMenu>\\n              <MenubarTrigger className=\\\"capitalize\\\">\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </MenubarTrigger>\\n              <MenubarContent side={side}>\\n                <MenubarGroup>\\n                  <MenubarItem>New Tab</MenubarItem>\\n                  <MenubarItem>New Window</MenubarItem>\\n                  <MenubarItem>New Incognito Window</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Email link</MenubarItem>\\n                <MenubarItem>Messages</MenubarItem>\\n                <MenubarItem>Notes</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Find...</MenubarItem>\\n                <MenubarItem>Find Next</MenubarItem>\\n                <MenubarItem>Find Previous</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>Cut</MenubarItem>\\n            <MenubarItem>Copy</MenubarItem>\\n            <MenubarItem>Paste</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>\\n              Always Show Full URLs\\n            </MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>\\n              Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem disabled inset>\\n              Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Edit...</MenubarItem>\\n            <MenubarItem inset>Add Profile...</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save <MenubarShortcut>⌘S</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"BoldIcon\\\"\\n                tabler=\\\"IconBold\\\"\\n                hugeicons=\\\"TextBoldIcon\\\"\\n                phosphor=\\\"TextBIcon\\\"\\n                remixicon=\\\"RiBold\\\"\\n              />\\n              Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"ItalicIcon\\\"\\n                tabler=\\\"IconItalic\\\"\\n                hugeicons=\\\"TextItalicIcon\\\"\\n                phosphor=\\\"TextItalicIcon\\\"\\n                remixicon=\\\"RiItalic\\\"\\n              />\\n              Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UnderlineIcon\\\"\\n                tabler=\\\"IconUnderline\\\"\\n                hugeicons=\\\"TextUnderlineIcon\\\"\\n                phosphor=\\\"TextUnderlineIcon\\\"\\n                remixicon=\\\"RiUnderline\\\"\\n              />\\n              Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarItem inset>Zoom In</MenubarItem>\\n            <MenubarItem inset>Zoom Out</MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarItem>Image</MenubarItem>\\n                <MenubarItem>Video</MenubarItem>\\n                <MenubarItem>Audio</MenubarItem>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"LinkIcon\\\"\\n                tabler=\\\"IconLink\\\"\\n                hugeicons=\\\"LinkIcon\\\"\\n                phosphor=\\\"LinkIcon\\\"\\n                remixicon=\\\"RiLinksLine\\\"\\n              />\\n              Link <MenubarShortcut>⌘K</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"TableIcon\\\"\\n                tabler=\\\"IconTable\\\"\\n                hugeicons=\\\"TableIcon\\\"\\n                phosphor=\\\"TableIcon\\\"\\n                remixicon=\\\"RiTableLine\\\"\\n              />\\n              Table\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n              />\\n              Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"CheckIcon\\\"\\n                tabler=\\\"IconCheck\\\"\\n                hugeicons=\\\"Tick02Icon\\\"\\n                phosphor=\\\"CheckIcon\\\"\\n                remixicon=\\\"RiCheckLine\\\"\\n              />\\n              Spell Check\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              Open Folder\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </MenubarItem>\\n            <MenubarItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign out\\n            </MenubarItem>\\n            <MenubarSeparator />\\n            <MenubarItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </MenubarItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </MenubarItem>\\n                <MenubarItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </MenubarItem>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarItem>Save Page...</MenubarItem>\\n                    <MenubarItem>Create Shortcut...</MenubarItem>\\n                    <MenubarItem>Name Window...</MenubarItem>\\n                    <MenubarSeparator />\\n                    <MenubarItem>Developer Tools</MenubarItem>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarItem>\\n                  Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n                <MenubarItem>\\n                  Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                </MenubarItem>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"registryDependencies\": [\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menu as MenuPrimitive } from \\\"@base-ui/react/menu\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"@base-ui/react/menubar\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({ className, ...props }: MenubarPrimitive.Props) {\\n  return (\\n    <MenubarPrimitive\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\n        \\\"flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\\n  return <DropdownMenu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuGroup>) {\\n  return <DropdownMenuGroup data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPortal>) {\\n  return <DropdownMenuPortal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuTrigger>) {\\n  return (\\n    <DropdownMenuTrigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuContent>) {\\n  return (\\n    <DropdownMenuContent\\n      data-slot=\\\"menubar-content\\\"\\n      align={align}\\n      alignOffset={alignOffset}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-36 rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuItem>) {\\n  return (\\n    <DropdownMenuItem\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item gap-2 rounded-sm px-2 py-1.5 text-sm focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: MenuPrimitive.CheckboxItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.CheckboxItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.CheckboxItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {\\n  return <DropdownMenuRadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: MenuPrimitive.RadioItem.Props & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenuPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenuPrimitive.RadioItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenuPrimitive.RadioItemIndicator>\\n      </span>\\n      {children}\\n    </MenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuLabel> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuLabel\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-sm font-medium data-inset:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSeparator>) {\\n  return (\\n    <DropdownMenuSeparator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuShortcut>) {\\n  return (\\n    <DropdownMenuShortcut\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSub>) {\\n  return <DropdownMenuSub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuSubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"gap-2 rounded-sm px-2 py-1.5 text-sm focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuSubContent>) {\\n  return (\\n    <DropdownMenuSubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent min-w-32 rounded-md bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-vega/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-8 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/base-vega/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuBasic />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Backlog\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    To Do\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink\\n                    render={\\n                      <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\" />\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"CircleAlertIcon\\\"\\n                      tabler=\\\"IconExclamationCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"WarningCircleIcon\\\"\\n                      remixicon=\\\"RiErrorWarningLine\\\"\\n                    />\\n                    Done\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              render={<Link href=\\\"/docs\\\" />}\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              Documentation\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink render={<Link href={href} />}>\\n        <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n          <div className=\\\"leading-none font-medium\\\">{title}</div>\\n          <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n        </div>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/navigation-menu.tsx\",\n      \"content\": \"import { NavigationMenu as NavigationMenuPrimitive } from \\\"@base-ui/react/navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  align = \\\"start\\\",\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Root.Props &\\n  Pick<NavigationMenuPrimitive.Positioner.Props, \\\"align\\\">) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <NavigationMenuPositioner align={align} />\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: NavigationMenuPrimitive.Trigger.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Content.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-2 pr-2.5 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuPositioner({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 8,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  ...props\\n}: NavigationMenuPrimitive.Positioner.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Portal>\\n      <NavigationMenuPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        className={cn(\\n          \\\"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <NavigationMenuPrimitive.Popup className=\\\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\\\">\\n          <NavigationMenuPrimitive.Viewport className=\\\"relative size-full overflow-hidden\\\" />\\n        </NavigationMenuPrimitive.Popup>\\n      </NavigationMenuPrimitive.Positioner>\\n    </NavigationMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: NavigationMenuPrimitive.Link.Props) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-1.5 rounded-sm p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-muted/50 data-[active=true]:hover:bg-muted data-[active=true]:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {\\n  return (\\n    <NavigationMenuPrimitive.Icon\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Icon>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuIndicator,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n  NavigationMenuPositioner,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/pagination-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-vega/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/base-vega/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n      nativeButton={false}\\n      render={\\n        <a\\n          aria-current={isActive ? \\\"page\\\" : undefined}\\n          data-slot=\\\"pagination-link\\\"\\n          data-active={isActive}\\n          {...props}\\n        />\\n      }\\n    />\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-2!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-2!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-vega/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverSides />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-col gap-2\\\">\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"inline-start\\\", \\\"left\\\", \\\"top\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n        <div className=\\\"flex flex-wrap gap-2\\\">\\n          {([\\\"bottom\\\", \\\"right\\\", \\\"inline-end\\\"] as const).map((side) => (\\n            <Popover key={side}>\\n              <PopoverTrigger\\n                render={\\n                  <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />\\n                }\\n              >\\n                {side.replace(\\\"-\\\", \\\" \\\")}\\n              </PopoverTrigger>\\n              <PopoverContent side={side} className=\\\"w-40\\\">\\n                <p>Popover on {side.replace(\\\"-\\\", \\\" \\\")}</p>\\n              </PopoverContent>\\n            </Popover>\\n          ))}\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Popover\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Start\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            Center\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger render={<Button variant=\\\"outline\\\" size=\\\"sm\\\" />}>\\n            End\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}\\n            >\\n              Open Popover\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"@base-ui/react/popover\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  ...props\\n}: PopoverPrimitive.Popup.Props &\\n  Pick<\\n    PopoverPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <PopoverPrimitive.Popup\\n          data-slot=\\\"popover-content\\\"\\n          className={cn(\\n            \\\"z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-md bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </PopoverPrimitive.Positioner>\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\\n  return (\\n    <PopoverPrimitive.Title\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: PopoverPrimitive.Description.Props) {\\n  return (\\n    <PopoverPrimitive.Description\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"chart\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/base-vega/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/base-vega/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/base-vega/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/base-vega/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/base-vega/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/base-vega/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/base-vega/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/base-vega/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/base-vega/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/base-vega/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/base-vega/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/base-vega/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/base-vega/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/base-vega/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/base-vega/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/base-vega/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/base-vega/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/base-vega/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/base-vega/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/base-vega/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/base-vega/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/base-vega/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/base-vega/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/base-vega/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/base-vega/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/base-vega/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/base-vega/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/base-vega/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/base-vega/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/base-vega/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/base-vega/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-vega/ui/item\\\"\\nimport {\\n  Progress,\\n  ProgressLabel,\\n  ProgressValue,\\n} from \\\"@/registry/base-vega/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/base-vega/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Progress value={56}>\\n        <ProgressLabel>Upload progress</ProgressLabel>\\n        <ProgressValue />\\n      </Progress>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState(50)\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={(value) => setValue(value as number)}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Progress as ProgressPrimitive } from \\\"@base-ui/react/progress\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  children,\\n  value,\\n  ...props\\n}: ProgressPrimitive.Root.Props) {\\n  return (\\n    <ProgressPrimitive.Root\\n      value={value}\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\\"flex flex-wrap gap-3\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <ProgressTrack>\\n        <ProgressIndicator />\\n      </ProgressTrack>\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\\n  return (\\n    <ProgressPrimitive.Track\\n      className={cn(\\n        \\\"relative flex h-1.5 w-full items-center overflow-x-hidden rounded-full bg-muted\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-track\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressIndicator({\\n  className,\\n  ...props\\n}: ProgressPrimitive.Indicator.Props) {\\n  return (\\n    <ProgressPrimitive.Indicator\\n      data-slot=\\\"progress-indicator\\\"\\n      className={cn(\\\"h-full bg-primary transition-all\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\\n  return (\\n    <ProgressPrimitive.Label\\n      className={cn(\\\"text-sm font-medium\\\", className)}\\n      data-slot=\\\"progress-label\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\\n  return (\\n    <ProgressPrimitive.Value\\n      className={cn(\\n        \\\"ml-auto text-sm text-muted-foreground tabular-nums\\\",\\n        className\\n      )}\\n      data-slot=\\\"progress-value\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Progress,\\n  ProgressTrack,\\n  ProgressIndicator,\\n  ProgressLabel,\\n  ProgressValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/base-vega/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Radio as RadioPrimitive } from \\\"@base-ui/react/radio\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"@base-ui/react/radio-group\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\\n  return (\\n    <RadioGroupPrimitive\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\\n  return (\\n    <RadioPrimitive.Root\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioPrimitive.Indicator>\\n    </RadioPrimitive.Root>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\",\n        \"@base-ui/react\"\n      ],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"registryDependencies\": [\"dropdown-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\",\n        \"use-mobile\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/base/direction\",\n          \"api\": \"https://base-ui.com/react/utils/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"chart\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/base-vega/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/base-vega/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/base-vega/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/base-vega/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"@base-ui/react/scroll-area\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: ScrollAreaPrimitive.Root.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: ScrollAreaPrimitive.Scrollbar.Props) {\\n  return (\\n    <ScrollAreaPrimitive.Scrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Thumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.Scrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-vega/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/base-vega/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectSides />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectMultiple />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSides() {\\n  const items = [\\n    { label: \\\"Select\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sides\\\" containerClassName=\\\"col-span-2\\\">\\n      <div className=\\\"flex flex-wrap justify-center gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Select key={side} items={items}>\\n            <SelectTrigger className=\\\"w-28 capitalize\\\">\\n              <SelectValue placeholder={side.replace(\\\"-\\\", \\\" \\\")} />\\n            </SelectTrigger>\\n            <SelectContent side={side} alignItemWithTrigger={false}>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  const items = [\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Chart Type\\n        </>\\n      ),\\n      value: null,\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Line\\n        </>\\n      ),\\n      value: \\\"line\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartBarIcon\\\"\\n            tabler=\\\"IconChartBar\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartBarIcon\\\"\\n            remixicon=\\\"RiBarChartLine\\\"\\n          />\\n          Bar\\n        </>\\n      ),\\n      value: \\\"bar\\\",\\n    },\\n    {\\n      label: (\\n        <>\\n          <IconPlaceholder\\n            lucide=\\\"ChartPieIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"Chart03Icon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n          Pie\\n        </>\\n      ),\\n      value: \\\"pie\\\",\\n    },\\n  ]\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  const fruits = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  const vegetables = [\\n    { label: \\\"Carrot\\\", value: \\\"carrot\\\" },\\n    { label: \\\"Broccoli\\\", value: \\\"broccoli\\\" },\\n    { label: \\\"Spinach\\\", value: \\\"spinach\\\" },\\n  ]\\n  const allItems = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    ...fruits,\\n    ...vegetables,\\n  ]\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select items={allItems}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            {fruits.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            {vegetables.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  const items = [\\n    { label: \\\"Select an item\\\", value: null },\\n    ...Array.from({ length: 100 }).map((_, i) => ({\\n      label: `Item ${i}`,\\n      value: `item-${i}`,\\n    })),\\n  ]\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select items={items}>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Item Aligned\\\">\\n      <Select items={items}>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent alignItemWithTrigger={true}>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select items={items}>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select items={items}>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select items={items}>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  const items = [\\n    { label: \\\"Filter\\\", value: null },\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Inactive\\\", value: \\\"inactive\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items}>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\", disabled: true },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select items={items} disabled>\\n        <SelectTrigger>\\n          <SelectValue />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem\\n                key={item.value}\\n                value={item.value}\\n                disabled={item.disabled}\\n              >\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select\\n        defaultValue={plans[0]}\\n        itemToStringValue={(plan: (typeof plans)[number]) => plan.name}\\n      >\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {(value: (typeof plans)[number]) => <SelectPlanItem plan={value} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectMultiple() {\\n  const items = [\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n    { label: \\\"Strawberry\\\", value: \\\"strawberry\\\" },\\n    { label: \\\"Watermelon\\\", value: \\\"watermelon\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"Multiple Selection\\\">\\n      <Select items={items} multiple defaultValue={[]}>\\n        <SelectTrigger className=\\\"w-72\\\">\\n          <SelectValue>\\n            {(value: string[]) => {\\n              if (value.length === 0) {\\n                return \\\"Select fruits\\\"\\n              }\\n              if (value.length === 1) {\\n                return items.find((item) => item.value === value[0])?.label\\n              }\\n              return `${value.length} fruits selected`\\n            }}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {items.map((item) => (\\n              <SelectItem key={item.value} value={item.value}>\\n                {item.label}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  const items = [\\n    { label: \\\"Select a fruit\\\", value: null },\\n    { label: \\\"Apple\\\", value: \\\"apple\\\" },\\n    { label: \\\"Banana\\\", value: \\\"banana\\\" },\\n    { label: \\\"Blueberry\\\", value: \\\"blueberry\\\" },\\n    { label: \\\"Grapes\\\", value: \\\"grapes\\\" },\\n    { label: \\\"Pineapple\\\", value: \\\"pineapple\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger render={<Button variant=\\\"outline\\\" />}>\\n          Open Dialog\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select items={items}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                {items.map((item) => (\\n                  <SelectItem key={item.value} value={item.value}>\\n                    {item.label}\\n                  </SelectItem>\\n                ))}\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"@base-ui/react/select\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Select = SelectPrimitive.Root\\n\\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1 p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\\n  return (\\n    <SelectPrimitive.Value\\n      data-slot=\\\"select-value\\\"\\n      className={cn(\\\"flex flex-1 text-left\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: SelectPrimitive.Trigger.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon\\n        render={\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n            className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n          />\\n        }\\n      />\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  side = \\\"bottom\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  alignItemWithTrigger = true,\\n  ...props\\n}: SelectPrimitive.Popup.Props &\\n  Pick<\\n    SelectPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\" | \\\"alignItemWithTrigger\\\"\\n  >) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        alignItemWithTrigger={alignItemWithTrigger}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <SelectPrimitive.Popup\\n          data-slot=\\\"select-content\\\"\\n          data-align-trigger={alignItemWithTrigger}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <SelectScrollUpButton />\\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\\n          <SelectScrollDownButton />\\n        </SelectPrimitive.Popup>\\n      </SelectPrimitive.Positioner>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: SelectPrimitive.GroupLabel.Props) {\\n  return (\\n    <SelectPrimitive.GroupLabel\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: SelectPrimitive.Item.Props) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SelectPrimitive.ItemText className=\\\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\\\">\\n        {children}\\n      </SelectPrimitive.ItemText>\\n      <SelectPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </SelectPrimitive.ItemIndicator>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: SelectPrimitive.Separator.Props) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\\"pointer-events-none -mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollUpArrow\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpArrow>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\\n  return (\\n    <SelectPrimitive.ScrollDownArrow\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownArrow>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Separator as SeparatorPrimitive } from \\\"@base-ui/react/separator\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: SeparatorPrimitive.Props) {\\n  return (\\n    <SeparatorPrimitive\\n      data-slot=\\\"separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/base-vega/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>Open</SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose render={<Button variant=\\\"outline\\\" />}>Close</SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger render={<Button variant=\\\"outline\\\" />}>\\n          No Close Button\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"capitalize\\\" />}\\n            >\\n              {side}\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose render={<Button variant=\\\"outline\\\" />}>\\n                  Cancel\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"@base-ui/react/dialog\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\\n  return (\\n    <SheetPrimitive.Backdrop\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: SheetPrimitive.Popup.Props & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Popup\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close\\n            data-slot=\\\"sheet-close\\\"\\n            render={\\n              <Button\\n                variant=\\\"ghost\\\"\\n                className=\\\"absolute top-4 right-4\\\"\\n                size=\\\"icon-sm\\\"\\n              />\\n            }\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"XIcon\\\"\\n              tabler=\\\"IconX\\\"\\n              hugeicons=\\\"Cancel01Icon\\\"\\n              phosphor=\\\"XIcon\\\"\\n              remixicon=\\\"RiCloseLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Popup>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-1.5 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\\"cn-font-heading font-medium text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: SheetPrimitive.Description.Props) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-vega/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-vega/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      isActive={item.isActive}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-vega/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/base-vega/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n              <span className=\\\"font-medium\\\">Documentation</span>\\n              <span className=\\\"\\\">v{selectedVersion}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"start\\\">\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton\\n                  render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                >\\n                  {item.title}\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton\\n                          isActive={item.isActive}\\n                          render={<a href={item.url} />}\\n                        >\\n                          {item.title}\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-vega/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton render={<CollapsibleTrigger />}>\\n                    {item.title}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"PlusIcon\\\"\\n                      tabler=\\\"IconPlus\\\"\\n                      hugeicons=\\\"PlusSignIcon\\\"\\n                      phosphor=\\\"PlusIcon\\\"\\n                      remixicon=\\\"RiAddLine\\\"\\n                      className=\\\"ml-auto group-aria-expanded/menu-button:hidden\\\"\\n                    />\\n                    <IconPlaceholder\\n                      lucide=\\\"MinusIcon\\\"\\n                      tabler=\\\"IconMinus\\\"\\n                      hugeicons=\\\"MinusSignIcon\\\"\\n                      phosphor=\\\"MinusIcon\\\"\\n                      remixicon=\\\"RiSubtractLine\\\"\\n                      className=\\\"ml-auto hidden group-aria-expanded/menu-button:block\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              isActive={item.isActive}\\n                              render={<a href={item.url} />}\\n                            >\\n                              {item.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-vega/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/base-vega/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v1.0.0</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuButton className=\\\"aria-expanded:bg-muted\\\" />\\n                }\\n              >\\n                {item.title}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                  className=\\\"ml-auto\\\"\\n                />\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem\\n                      key={item.title}\\n                      render={<a href={item.url} />}\\n                    >\\n                      {item.title}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-vega/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-vega/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/base-vega/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-vega/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n            render={<SidebarMenuItem />}\\n          >\\n            <CollapsibleTrigger\\n              render={<SidebarMenuButton tooltip={item.title} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"ml-auto transition-transform duration-200 group-data-open/collapsible:rotate-90\\\"\\n              />\\n            </CollapsibleTrigger>\\n            <CollapsibleContent>\\n              <SidebarMenuSub>\\n                {item.items?.map((subItem) => (\\n                  <SidebarMenuSubItem key={subItem.title}>\\n                    <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                      <span>{subItem.title}</span>\\n                    </SidebarMenuSubButton>\\n                  </SidebarMenuSubItem>\\n                ))}\\n              </SidebarMenuSub>\\n            </CollapsibleContent>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-vega/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-vega/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-vega/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-vega/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <CollapsibleTrigger\\n                  render={\\n                    <SidebarMenuAction className=\\\"aria-expanded:rotate-90\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </CollapsibleTrigger>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/base-vega/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/base-vega/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0\\\"\\n                render={<a href=\\\"#\\\" />}\\n              >\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"md:h-8 md:p-0 data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/base-vega/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-vega/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-vega/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-vega/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-vega/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-vega/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/base-vega/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger\\n          render={\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"icon\\\"\\n              className=\\\"h-7 w-7 data-open:bg-accent\\\"\\n            />\\n          }\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"MoreHorizontalIcon\\\"\\n            tabler=\\\"IconDots\\\"\\n            hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n            phosphor=\\\"DotsThreeOutlineIcon\\\"\\n            remixicon=\\\"RiMoreLine\\\"\\n          />\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"StarOffIcon\\\"\\n                      tabler=\\\"IconStarOff\\\"\\n                      hugeicons=\\\"StarOffIcon\\\"\\n                      phosphor=\\\"StarIcon\\\"\\n                      remixicon=\\\"RiStarOffLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Remove from Favorites</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"LinkIcon\\\"\\n                      tabler=\\\"IconLink\\\"\\n                      hugeicons=\\\"LinkIcon\\\"\\n                      phosphor=\\\"LinkIcon\\\"\\n                      remixicon=\\\"RiLinksLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Copy Link</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArrowUpRightIcon\\\"\\n                      tabler=\\\"IconArrowUpRight\\\"\\n                      hugeicons=\\\"ArrowUpRightIcon\\\"\\n                      phosphor=\\\"ArrowUpRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightUpLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Open in New Tab</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                      className=\\\"text-muted-foreground\\\"\\n                    />\\n                    <span>Delete</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={<SidebarMenuButton className=\\\"w-fit px-1.5\\\" />}\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\ntype TreeItem = string | TreeItem[]\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <SidebarMenuButton render={<CollapsibleTrigger />}>\\n          <IconPlaceholder\\n            lucide=\\\"ChevronRightIcon\\\"\\n            tabler=\\\"IconChevronRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"CaretRightIcon\\\"\\n            remixicon=\\\"RiArrowRightSLine\\\"\\n            className=\\\"transition-transform\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"FolderIcon\\\"\\n            tabler=\\\"IconFolder\\\"\\n            hugeicons=\\\"FolderIcon\\\"\\n            phosphor=\\\"FolderIcon\\\"\\n            remixicon=\\\"RiFolderLine\\\"\\n          />\\n          {name}\\n        </SidebarMenuButton>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-vega/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-vega/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-vega/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-vega/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/base-vega/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/base-vega/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger render={<Button size=\\\"sm\\\" />}>Open Dialog</DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                          render={<a href=\\\"#\\\" />}\\n                        >\\n                          {item.icon}\\n                          <span>{item.name}</span>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({\\n                length: 10,\\n              }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} className=\\\"font-medium\\\" />}\\n                  >\\n                    {item.title}\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            isActive={item.isActive}\\n                            render={<a href={item.url} />}\\n                          >\\n                            {item.title}\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/base-vega/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/base-vega/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                render={<CollapsibleTrigger />}\\n              >\\n                {calendar.name}{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                  className=\\\"ml-auto transition-transform group-data-open/collapsible:rotate-90\\\"\\n                />\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/base-vega/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\\n              <span>{item.emoji}</span>\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton\\n            isActive={item.isActive}\\n            render={<a href={item.url} />}\\n          >\\n            {item.icon}\\n            <span>{item.title}</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton size=\\\"lg\\\" className=\\\"aria-expanded:bg-muted\\\" />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton render={<a href=\\\"#\\\" />}>\\n                  <span>{workspace.emoji}</span>\\n                  <span>{workspace.name}</span>\\n                </SidebarMenuButton>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\\\"\\n                  showOnHover\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton render={<a href=\\\"#\\\" />}>\\n                          <span>{page.emoji}</span>\\n                          <span>{page.name}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/base-vega/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/base-vega/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/base-vega/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/base-vega/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/base-vega/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/base-vega/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/base-vega/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/base-vega/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n  if (!activeTeam) {\\n    return null\\n  }\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton className=\\\"w-fit px-1.5 aria-expanded:bg-muted aria-expanded:text-foreground\\\" />\\n            }\\n          >\\n            <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              {activeTeam.logo}\\n            </div>\\n            <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDown01Icon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className=\\\"opacity-50\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                Teams\\n              </DropdownMenuLabel>\\n              {teams.map((team, index) => (\\n                <DropdownMenuItem\\n                  key={team.name}\\n                  onClick={() => setActiveTeam(team)}\\n                  className=\\\"gap-2 p-2\\\"\\n                >\\n                  <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                    {team.logo}\\n                  </div>\\n                  {team.name}\\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                </DropdownMenuItem>\\n              ))}\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"font-medium text-muted-foreground\\\">\\n                  Add team\\n                </div>\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/base-vega/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/base-vega/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/base-vega/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/base-vega/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/base-vega/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/base-vega/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TerminalIcon\\\"\\n                  tabler=\\\"IconCommand\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n              </div>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            defaultOpen={item.isActive}\\n            render={<SidebarMenuItem />}\\n          >\\n            <SidebarMenuButton\\n              tooltip={item.title}\\n              render={<a href={item.url} />}\\n            >\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </SidebarMenuButton>\\n            {item.items?.length ? (\\n              <>\\n                <SidebarMenuAction\\n                  render={<CollapsibleTrigger />}\\n                  className=\\\"aria-expanded:rotate-90\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Toggle</span>\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {item.items?.map((subItem) => (\\n                      <SidebarMenuSubItem key={subItem.title}>\\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\\n                          <span>{subItem.title}</span>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </>\\n            ) : null}\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton render={<a href={item.url} />}>\\n              {item.icon}\\n              <span>{item.name}</span>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger\\n                render={\\n                  <SidebarMenuAction\\n                    showOnHover\\n                    className=\\\"aria-expanded:bg-muted\\\"\\n                  />\\n                }\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More</span>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton size=\\\"sm\\\" render={<a href={item.url} />}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger\\n            render={\\n              <SidebarMenuButton\\n                size=\\\"lg\\\"\\n                className=\\\"aria-expanded:bg-muted aria-expanded:text-foreground\\\"\\n              />\\n            }\\n          >\\n            <Avatar>\\n              <AvatarImage src={user.avatar} alt={user.name} />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n              <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n              <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n            </div>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronsUpDownIcon\\\"\\n              tabler=\\\"IconSelector\\\"\\n              hugeicons=\\\"UnfoldMoreIcon\\\"\\n              phosphor=\\\"CaretUpDownIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n              className=\\\"ml-auto size-4\\\"\\n            />\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuGroup>\\n              <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                  <Avatar>\\n                    <AvatarImage src={user.avatar} alt={user.name} />\\n                    <AvatarFallback>CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                    <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                  </div>\\n                </div>\\n              </DropdownMenuLabel>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Log out\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/base-vega/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/base-vega/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-vega/ui/item\\\"\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v{selectedVersion}</ItemDescription>\\n                    </ItemContent>\\n                    <ItemActions>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronsUpDownIcon\\\"\\n                        tabler=\\\"IconSelector\\\"\\n                        hugeicons=\\\"UnfoldMoreIcon\\\"\\n                        phosphor=\\\"CaretUpDownIcon\\\"\\n                        remixicon=\\\"RiArrowUpDownLine\\\"\\n                      />\\n                    </ItemActions>\\n                  </Item>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <IconPlaceholder\\n                          lucide=\\\"CheckIcon\\\"\\n                          tabler=\\\"IconCheck\\\"\\n                          hugeicons=\\\"Tick02Icon\\\"\\n                          phosphor=\\\"CheckIcon\\\"\\n                          remixicon=\\\"RiCheckLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton\\n                        render={<a href={subItem.url} />}\\n                        isActive={subItem.isActive}\\n                      >\\n                        {subItem.title}\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/base-vega/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/base-vega/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" render={<a href=\\\"#\\\" />}>\\n                <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                    <ItemDescription>v1.0.0</ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger\\n                      render={\\n                        <SidebarMenuButton className=\\\"data-popup-open:bg-sidebar-accent data-popup-open:text-sidebar-accent-foreground\\\" />\\n                      }\\n                    >\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"MoreHorizontalIcon\\\"\\n                        tabler=\\\"IconDots\\\"\\n                        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                        phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                        remixicon=\\\"RiMoreLine\\\"\\n                        className=\\\"ml-auto\\\"\\n                      />\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem\\n                              render={<a href={subItem.url} />}\\n                              key={subItem.title}\\n                            >\\n                              {subItem.title}\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/base-vega/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/base-vega/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Button\\n                    size=\\\"icon-sm\\\"\\n                    render={<span />}\\n                    nativeButton={false}\\n                    className=\\\"size-8\\\"\\n                  >\\n                    <svg\\n                      xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                      viewBox=\\\"0 0 256 256\\\"\\n                    >\\n                      <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                      <line\\n                        x1=\\\"208\\\"\\n                        y1=\\\"128\\\"\\n                        x2=\\\"128\\\"\\n                        y2=\\\"208\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                      <line\\n                        x1=\\\"192\\\"\\n                        y1=\\\"40\\\"\\n                        x2=\\\"40\\\"\\n                        y2=\\\"192\\\"\\n                        fill=\\\"none\\\"\\n                        stroke=\\\"currentColor\\\"\\n                        strokeLinecap=\\\"round\\\"\\n                        strokeLinejoin=\\\"round\\\"\\n                        strokeWidth=\\\"32\\\"\\n                      ></line>\\n                    </svg>\\n                  </Button>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {activeTeam.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuGroup>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger\\n                      render={<SidebarMenuButton tooltip={item.title} />}\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                        className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                      />\\n                    </CollapsibleTrigger>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton\\n                              render={<a href={subItem.url} />}\\n                            >\\n                              {subItem.title}\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton render={<a href={item.url} />}>\\n                    {item.icon}\\n                    {item.name}\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                    />\\n                  }\\n                >\\n                  <Avatar>\\n                    <AvatarImage src={data.user.avatar} alt={data.user.name} />\\n                    <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">\\n                      {data.user.name}\\n                    </span>\\n                    <span className=\\\"truncate text-xs\\\">{data.user.email}</span>\\n                  </div>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronsUpDownIcon\\\"\\n                    tabler=\\\"IconSelector\\\"\\n                    hugeicons=\\\"UnfoldMoreIcon\\\"\\n                    phosphor=\\\"CaretUpDownIcon\\\"\\n                    remixicon=\\\"RiArrowUpDownLine\\\"\\n                  />\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/base-vega/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/base-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={item.isActive}\\n                  render={<SidebarMenuItem />}\\n                >\\n                  <SidebarMenuButton\\n                    render={<a href={item.url} />}\\n                    isActive={item.isActive}\\n                  >\\n                    {item.icon}\\n                    <span>{item.title}</span>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <>\\n                      <CollapsibleTrigger\\n                        render={\\n                          <SidebarMenuAction className=\\\"data-open:rotate-90\\\" />\\n                        }\\n                      >\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                        />\\n                        <span className=\\\"sr-only\\\">Toggle</span>\\n                      </CollapsibleTrigger>\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((subItem) => (\\n                            <SidebarMenuSubItem key={subItem.title}>\\n                              <SidebarMenuSubButton\\n                                render={<a href={subItem.url} />}\\n                              >\\n                                {subItem.title}\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    </>\\n                  ) : null}\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton render={<a href={item.url} />} size=\\\"sm\\\">\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"separator\",\n    \"sheet\",\n    \"skeleton\",\n    \"tooltip\",\n    \"use-mobile\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { mergeProps } from \\\"@base-ui/react/merge-props\\\"\\nimport { useRender } from \\\"@base-ui/react/use-render\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/base-vega/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport { Separator } from \\\"@/registry/base-vega/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/base-vega/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/base-vega/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"div\\\"> & React.ComponentProps<\\\"div\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"div\\\",\\n    props: mergeProps<\\\"div\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-label\\\",\\n      sidebar: \\\"group-label\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  render,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> & React.ComponentProps<\\\"button\\\">) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-group-action\\\",\\n      sidebar: \\\"group-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-sm\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-sm group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  render,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    isActive?: boolean\\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n  } & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const { isMobile, state } = useSidebar()\\n  const comp = useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(sidebarMenuButtonVariants({ variant, size }), className),\\n      },\\n      props\\n    ),\\n    render: !tooltip ? render : <TooltipTrigger render={render} />,\\n    state: {\\n      slot: \\\"sidebar-menu-button\\\",\\n      sidebar: \\\"menu-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n\\n  if (!tooltip) {\\n    return comp\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      {comp}\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  render,\\n  showOnHover = false,\\n  ...props\\n}: useRender.ComponentProps<\\\"button\\\"> &\\n  React.ComponentProps<\\\"button\\\"> & {\\n    showOnHover?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"button\\\",\\n    props: mergeProps<\\\"button\\\">(\\n      {\\n        className: cn(\\n          \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n          showOnHover &&\\n            \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-action\\\",\\n      sidebar: \\\"menu-action\\\",\\n    },\\n  })\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  render,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: useRender.ComponentProps<\\\"a\\\"> &\\n  React.ComponentProps<\\\"a\\\"> & {\\n    size?: \\\"sm\\\" | \\\"md\\\"\\n    isActive?: boolean\\n  }) {\\n  return useRender({\\n    defaultTagName: \\\"a\\\",\\n    props: mergeProps<\\\"a\\\">(\\n      {\\n        className: cn(\\n          \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n          className\\n        ),\\n      },\\n      props\\n    ),\\n    render,\\n    state: {\\n      slot: \\\"sidebar-menu-sub-button\\\",\\n      sidebar: \\\"menu-sub-button\\\",\\n      size,\\n      active: isActive,\\n    },\\n  })\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-vega/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-vega/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/base-vega/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-vega/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/base-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/base-vega/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/base-vega/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/base-vega/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/base-vega/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-md bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport { Slider } from \\\"@/registry/base-vega/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={50} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={(value) => setValue(value as number[])}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"@base-ui/react/slider\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: SliderPrimitive.Root.Props) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      className={cn(\\\"data-horizontal:w-full data-vertical:h-full\\\", className)}\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      thumbAlignment=\\\"edge\\\"\\n      {...props}\\n    >\\n      <SliderPrimitive.Control className=\\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\">\\n        <SliderPrimitive.Track\\n          data-slot=\\\"slider-track\\\"\\n          className=\\\"relative grow overflow-hidden rounded-full bg-muted select-none data-horizontal:h-1.5 data-horizontal:w-full data-vertical:h-full data-vertical:w-1.5\\\"\\n        >\\n          <SliderPrimitive.Indicator\\n            data-slot=\\\"slider-range\\\"\\n            className=\\\"bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n          />\\n        </SliderPrimitive.Track>\\n        {Array.from({ length: _values.length }, (_, index) => (\\n          <SliderPrimitive.Thumb\\n            data-slot=\\\"slider-thumb\\\"\\n            key={index}\\n            className=\\\"block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\\\"\\n          />\\n        ))}\\n      </SliderPrimitive.Control>\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Badge } from \\\"@/registry/base-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/base-vega/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/base-vega/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/base-vega/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/base-vega/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button render={<a href=\\\"#\\\" />} nativeButton={false}>\\n              Create project\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button\\n            variant=\\\"link\\\"\\n            render={<a href=\\\"#\\\" />}\\n            nativeButton={false}\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            Learn more{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"@base-ui/react\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Label } from \\\"@/registry/base-vega/ui/label\\\"\\nimport { Switch } from \\\"@/registry/base-vega/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Switch as SwitchPrimitive } from \\\"@base-ui/react/switch\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: SwitchPrimitive.Root.Props & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/table-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/base-vega/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger\\n                  render={\\n                    <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />\\n                  }\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">Open menu</span>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nconst people = [\\n  { value: \\\"sarah\\\", label: \\\"Sarah Chen\\\" },\\n  { value: \\\"marcus\\\", label: \\\"Marc Rodriguez\\\" },\\n  { value: \\\"emily\\\", label: \\\"Emily Watson\\\" },\\n  { value: \\\"david\\\", label: \\\"David Kim\\\" },\\n]\\n\\nconst tasks = [\\n  {\\n    task: \\\"Design homepage\\\",\\n    assignee: \\\"sarah\\\",\\n    status: \\\"In Progress\\\",\\n  },\\n  {\\n    task: \\\"Implement API\\\",\\n    assignee: \\\"marcus\\\",\\n    status: \\\"Pending\\\",\\n  },\\n  {\\n    task: \\\"Write tests\\\",\\n    assignee: \\\"emily\\\",\\n    status: \\\"Not Started\\\",\\n  },\\n]\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tasks.map((item) => (\\n            <TableRow key={item.task}>\\n              <TableCell className=\\\"font-medium\\\">{item.task}</TableCell>\\n              <TableCell>\\n                <Select\\n                  items={people}\\n                  defaultValue={people.find(\\n                    (person) => person.value === item.assignee\\n                  )}\\n                  itemToStringValue={(item) => {\\n                    return item.value\\n                  }}\\n                >\\n                  <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      {people.map((person) => (\\n                        <SelectItem key={person.value} value={person}>\\n                          {person.label}\\n                        </SelectItem>\\n                      ))}\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </TableCell>\\n              <TableCell>{item.status}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/base-vega/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/base-vega/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger\\n              render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\" />}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">More options</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tabs as TabsPrimitive } from \\\"@base-ui/react/tabs\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: TabsPrimitive.Root.Props) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-9 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\\n  return (\\n    <TabsPrimitive.Tab\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\\n  return (\\n    <TabsPrimitive.Panel\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-sm outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/base-vega/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/base-vega/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/base-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/base-vega/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/base-vega/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/base-vega/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup multiple spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" defaultValue={[\\\"all\\\"]}>\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup size=\\\"sm\\\" defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup defaultValue={[\\\"top\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup multiple variant=\\\"outline\\\" spacing={2} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup defaultValue={[\\\"all\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        defaultValue={[\\\"today\\\"]}\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup defaultValue={[\\\"newest\\\"]} variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  const items = [\\n    { label: \\\"All\\\", value: \\\"all\\\" },\\n    { label: \\\"Active\\\", value: \\\"active\\\" },\\n    { label: \\\"Archived\\\", value: \\\"archived\\\" },\\n  ]\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select items={items} defaultValue={items[0]}>\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              {items.map((item) => (\\n                <SelectItem key={item.value} value={item.value}>\\n                  {item.label}\\n                </SelectItem>\\n              ))}\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup defaultValue={[\\\"grid\\\"]} variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup multiple orientation=\\\"vertical\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        defaultValue={[\\\"all\\\"]}\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" multiple orientation=\\\"vertical\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          value={[fontWeight]}\\n          onValueChange={(value) => setFontWeight(value[0])}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        size=\\\"sm\\\"\\n        defaultValue={[\\\"top\\\"]}\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={1}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"@base-ui/react/toggle-group\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/base-vega/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: ToggleGroupPrimitive.Props &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=0]:data-[variant=outline]:shadow-xs data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:shadow-none focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md data-[state=on]:bg-muted group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </TogglePrimitive>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Toggle as TogglePrimitive } from \\\"@base-ui/react/toggle\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent shadow-xs hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 min-w-9 px-2\\\",\\n        sm: \\\"h-8 min-w-8 px-1.5\\\",\\n        lg: \\\"h-10 min-w-10 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/base-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/base-vega/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/base-vega/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/base-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {(\\n          [\\n            \\\"inline-start\\\",\\n            \\\"left\\\",\\n            \\\"top\\\",\\n            \\\"bottom\\\",\\n            \\\"right\\\",\\n            \\\"inline-end\\\",\\n          ] as const\\n        ).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger\\n              render={<Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\" />}\\n            >\\n              {side.replace(\\\"-\\\", \\\" \\\")}\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"ghost\\\" size=\\\"icon\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n          />\\n          <span className=\\\"sr-only\\\">Info</span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Show Tooltip\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<span className=\\\"inline-block w-fit\\\" />}>\\n          <Button variant=\\\"outline\\\" disabled>\\n            Disabled\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" />}>\\n          <IconPlaceholder\\n            lucide=\\\"SaveIcon\\\"\\n            tabler=\\\"IconDeviceFloppy\\\"\\n            hugeicons=\\\"FloppyDiskIcon\\\"\\n            phosphor=\\\"FloppyDiskIcon\\\"\\n            remixicon=\\\"RiSaveLine\\\"\\n          />\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger\\n          render={\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n              onClick={(e) => e.preventDefault()}\\n            />\\n          }\\n        >\\n          Learn more\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger render={<Button variant=\\\"outline\\\" className=\\\"w-fit\\\" />}>\\n          Status\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Tooltip as TooltipPrimitive } from \\\"@base-ui/react/tooltip\\\"\\n\\nimport { cn } from \\\"@/registry/base-vega/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delay = 0,\\n  ...props\\n}: TooltipPrimitive.Provider.Props) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delay={delay}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  side = \\\"top\\\",\\n  sideOffset = 4,\\n  align = \\\"center\\\",\\n  alignOffset = 0,\\n  children,\\n  ...props\\n}: TooltipPrimitive.Popup.Props &\\n  Pick<\\n    TooltipPrimitive.Positioner.Props,\\n    \\\"align\\\" | \\\"alignOffset\\\" | \\\"side\\\" | \\\"sideOffset\\\"\\n  >) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Positioner\\n        align={align}\\n        alignOffset={alignOffset}\\n        side={side}\\n        sideOffset={sideOffset}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <TooltipPrimitive.Popup\\n          data-slot=\\\"tooltip-content\\\"\\n          className={cn(\\n            \\\"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          {children}\\n          <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\\\" />\\n        </TooltipPrimitive.Popup>\\n      </TooltipPrimitive.Positioner>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/base/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/base-vega/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/base-vega/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/accordion-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"accordion\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/accordion-demo.tsx\",\n      \"content\": \"import {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/default/ui/accordion\\\"\\n\\nexport default function AccordionDemo() {\\n  return (\\n    <Accordion type=\\\"single\\\" collapsible className=\\\"w-full\\\">\\n      <AccordionItem value=\\\"item-1\\\">\\n        <AccordionTrigger>Is it accessible?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It adheres to the WAI-ARIA design pattern.\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-2\\\">\\n        <AccordionTrigger>Is it styled?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It comes with default styles that matches the other\\n          components&apos; aesthetic.\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-3\\\">\\n        <AccordionTrigger>Is it animated?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It&apos;s animated by default, but you can disable it if you\\n          prefer.\\n        </AccordionContent>\\n      </AccordionItem>\\n    </Accordion>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-accordion\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AccordionPrimitive from \\\"@radix-ui/react-accordion\\\"\\nimport { ChevronDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Accordion = AccordionPrimitive.Root\\n\\nconst AccordionItem = React.forwardRef<\\n  React.ElementRef<typeof AccordionPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\\n>(({ className, ...props }, ref) => (\\n  <AccordionPrimitive.Item\\n    ref={ref}\\n    className={cn(\\\"border-b\\\", className)}\\n    {...props}\\n  />\\n))\\nAccordionItem.displayName = \\\"AccordionItem\\\"\\n\\nconst AccordionTrigger = React.forwardRef<\\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\\n>(({ className, children, ...props }, ref) => (\\n  <AccordionPrimitive.Header className=\\\"flex\\\">\\n    <AccordionPrimitive.Trigger\\n      ref={ref}\\n      className={cn(\\n        \\\"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ChevronDown className=\\\"h-4 w-4 shrink-0 transition-transform duration-200\\\" />\\n    </AccordionPrimitive.Trigger>\\n  </AccordionPrimitive.Header>\\n))\\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\\n\\nconst AccordionContent = React.forwardRef<\\n  React.ElementRef<typeof AccordionPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\\n>(({ className, children, ...props }, ref) => (\\n  <AccordionPrimitive.Content\\n    ref={ref}\\n    className=\\\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\\\"\\n    {...props}\\n  >\\n    <div className={cn(\\\"pb-4 pt-0\\\", className)}>{children}</div>\\n  </AccordionPrimitive.Content>\\n))\\n\\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ],\n  \"tailwind\": {\n    \"config\": {\n      \"theme\": {\n        \"extend\": {\n          \"keyframes\": {\n            \"accordion-down\": {\n              \"from\": {\n                \"height\": \"0\"\n              },\n              \"to\": {\n                \"height\": \"var(--radix-accordion-content-height)\"\n              }\n            },\n            \"accordion-up\": {\n              \"from\": {\n                \"height\": \"var(--radix-accordion-content-height)\"\n              },\n              \"to\": {\n                \"height\": \"0\"\n              }\n            }\n          },\n          \"animation\": {\n            \"accordion-down\": \"accordion-down 0.2s ease-out\",\n            \"accordion-up\": \"accordion-up 0.2s ease-out\"\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/alert-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"alert\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/alert-demo.tsx\",\n      \"content\": \"import { Terminal } from \\\"lucide-react\\\"\\n\\nimport {\\n  Alert,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/default/ui/alert\\\"\\n\\nexport default function AlertDemo() {\\n  return (\\n    <Alert>\\n      <Terminal className=\\\"h-4 w-4\\\" />\\n      <AlertTitle>Heads up!</AlertTitle>\\n      <AlertDescription>\\n        You can add components to your app using the cli.\\n      </AlertDescription>\\n    </Alert>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/alert-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-destructive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"alert\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/alert-destructive.tsx\",\n      \"content\": \"import { AlertCircle } from \\\"lucide-react\\\"\\n\\nimport {\\n  Alert,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/default/ui/alert\\\"\\n\\nexport default function AlertDestructive() {\\n  return (\\n    <Alert variant=\\\"destructive\\\">\\n      <AlertCircle className=\\\"h-4 w-4\\\" />\\n      <AlertTitle>Error</AlertTitle>\\n      <AlertDescription>\\n        Your session has expired. Please log in again.\\n      </AlertDescription>\\n    </Alert>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/alert-dialog-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/alert-dialog-demo.tsx\",\n      \"content\": \"import {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/default/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function AlertDialogDemo() {\\n  return (\\n    <AlertDialog>\\n      <AlertDialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Show Dialog</Button>\\n      </AlertDialogTrigger>\\n      <AlertDialogContent>\\n        <AlertDialogHeader>\\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n          <AlertDialogDescription>\\n            This action cannot be undone. This will permanently delete your\\n            account and remove your data from our servers.\\n          </AlertDialogDescription>\\n        </AlertDialogHeader>\\n        <AlertDialogFooter>\\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\\n          <AlertDialogAction>Continue</AlertDialogAction>\\n        </AlertDialogFooter>\\n      </AlertDialogContent>\\n    </AlertDialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-alert-dialog\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AlertDialogPrimitive from \\\"@radix-ui/react-alert-dialog\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { buttonVariants } from \\\"@/registry/default/ui/button\\\"\\n\\nconst AlertDialog = AlertDialogPrimitive.Root\\n\\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\\n\\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\\n\\nconst AlertDialogOverlay = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Overlay\\n    className={cn(\\n      \\\"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\\\",\\n      className\\n    )}\\n    {...props}\\n    ref={ref}\\n  />\\n))\\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\\n\\nconst AlertDialogContent = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPortal>\\n    <AlertDialogOverlay />\\n    <AlertDialogPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </AlertDialogPortal>\\n))\\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\\n\\nconst AlertDialogHeader = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col space-y-2 text-center sm:text-left\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nAlertDialogHeader.displayName = \\\"AlertDialogHeader\\\"\\n\\nconst AlertDialogFooter = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nAlertDialogFooter.displayName = \\\"AlertDialogFooter\\\"\\n\\nconst AlertDialogTitle = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Title>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Title\\n    ref={ref}\\n    className={cn(\\\"text-lg font-semibold\\\", className)}\\n    {...props}\\n  />\\n))\\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\\n\\nconst AlertDialogDescription = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Description>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nAlertDialogDescription.displayName =\\n  AlertDialogPrimitive.Description.displayName\\n\\nconst AlertDialogAction = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Action>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Action\\n    ref={ref}\\n    className={cn(buttonVariants(), className)}\\n    {...props}\\n  />\\n))\\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\\n\\nconst AlertDialogCancel = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Cancel\\n    ref={ref}\\n    className={cn(\\n      buttonVariants({ variant: \\\"outline\\\" }),\\n      \\\"mt-2 sm:mt-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogPortal,\\n  AlertDialogOverlay,\\n  AlertDialogTrigger,\\n  AlertDialogContent,\\n  AlertDialogHeader,\\n  AlertDialogFooter,\\n  AlertDialogTitle,\\n  AlertDialogDescription,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-background text-foreground\\\",\\n        destructive:\\n          \\\"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nconst Alert = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\\n>(({ className, variant, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    role=\\\"alert\\\"\\n    className={cn(alertVariants({ variant }), className)}\\n    {...props}\\n  />\\n))\\nAlert.displayName = \\\"Alert\\\"\\n\\nconst AlertTitle = React.forwardRef<\\n  HTMLParagraphElement,\\n  React.HTMLAttributes<HTMLHeadingElement>\\n>(({ className, ...props }, ref) => (\\n  <h5\\n    ref={ref}\\n    className={cn(\\\"mb-1 font-medium leading-none tracking-tight\\\", className)}\\n    {...props}\\n  />\\n))\\nAlertTitle.displayName = \\\"AlertTitle\\\"\\n\\nconst AlertDescription = React.forwardRef<\\n  HTMLParagraphElement,\\n  React.HTMLAttributes<HTMLParagraphElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"text-sm [&_p]:leading-relaxed\\\", className)}\\n    {...props}\\n  />\\n))\\nAlertDescription.displayName = \\\"AlertDescription\\\"\\n\\nexport { Alert, AlertTitle, AlertDescription }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/aspect-ratio-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"aspect-ratio\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/aspect-ratio-demo.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport { AspectRatio } from \\\"@/registry/default/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioDemo() {\\n  return (\\n    <AspectRatio ratio={16 / 9} className=\\\"bg-muted\\\">\\n      <Image\\n        src=\\\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\\\"\\n        alt=\\\"Photo by Drew Beamer\\\"\\n        fill\\n        className=\\\"h-full w-full rounded-md object-cover\\\"\\n      />\\n    </AspectRatio>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-aspect-ratio\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as AspectRatioPrimitive from \\\"@radix-ui/react-aspect-ratio\\\"\\n\\nconst AspectRatio = AspectRatioPrimitive.Root\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/avatar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/avatar-demo.tsx\",\n      \"content\": \"import {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\n\\nexport default function AvatarDemo() {\\n  return (\\n    <Avatar>\\n      <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n      <AvatarFallback>CN</AvatarFallback>\\n    </Avatar>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AvatarPrimitive from \\\"@radix-ui/react-avatar\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Avatar = React.forwardRef<\\n  React.ElementRef<typeof AvatarPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\\n>(({ className, ...props }, ref) => (\\n  <AvatarPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nAvatar.displayName = AvatarPrimitive.Root.displayName\\n\\nconst AvatarImage = React.forwardRef<\\n  React.ElementRef<typeof AvatarPrimitive.Image>,\\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\\n>(({ className, ...props }, ref) => (\\n  <AvatarPrimitive.Image\\n    ref={ref}\\n    className={cn(\\\"aspect-square h-full w-full\\\", className)}\\n    {...props}\\n  />\\n))\\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\\n\\nconst AvatarFallback = React.forwardRef<\\n  React.ElementRef<typeof AvatarPrimitive.Fallback>,\\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\\n>(({ className, ...props }, ref) => (\\n  <AvatarPrimitive.Fallback\\n    ref={ref}\\n    className={cn(\\n      \\\"flex h-full w-full items-center justify-center rounded-full bg-muted\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\\n\\nexport { Avatar, AvatarImage, AvatarFallback }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/badge-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/badge-demo.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/default/ui/badge\\\"\\n\\nexport default function BadgeDemo() {\\n  return <Badge>Badge</Badge>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/badge-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-destructive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/badge-destructive.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/default/ui/badge\\\"\\n\\nexport default function BadgeDestructive() {\\n  return <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/badge-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-outline\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/badge-outline.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/default/ui/badge\\\"\\n\\nexport default function BadgeOutline() {\\n  return <Badge variant=\\\"outline\\\">Outline</Badge>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/badge-secondary.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-secondary\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/badge-secondary.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/default/ui/badge\\\"\\n\\nexport default function BadgeSecondary() {\\n  return <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/badge.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default:\\n          \\\"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\\\",\\n        outline: \\\"text-foreground\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nexport interface BadgeProps\\n  extends React.HTMLAttributes<HTMLDivElement>,\\n    VariantProps<typeof badgeVariants> {}\\n\\nfunction Badge({ className, variant, ...props }: BadgeProps) {\\n  return (\\n    <div className={cn(badgeVariants({ variant }), className)} {...props} />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/breadcrumb-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-demo.tsx\",\n      \"content\": \"import {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbDemo() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/\\\">Home</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger className=\\\"flex items-center gap-1\\\">\\n              <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n              <span className=\\\"sr-only\\\">Toggle menu</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"start\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Themes</DropdownMenuItem>\\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/docs/components\\\">Components</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/breadcrumb-dropdown.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-dropdown\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-dropdown.tsx\",\n      \"content\": \"import { ChevronDown, Slash } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbWithDropdown() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/\\\">Home</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <Slash />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger className=\\\"flex items-center gap-1\\\">\\n              Components\\n              <ChevronDown className=\\\"h-4 w-4\\\" />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"start\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Themes</DropdownMenuItem>\\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <Slash />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/breadcrumb-ellipsis.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-ellipsis\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-ellipsis.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbCollapsed() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbEllipsis />\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/docs/components\\\">Components</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/breadcrumb-link.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-link\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-link.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbWithCustomSeparator() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink>\\n            <Link href=\\\"/components\\\">Components</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/breadcrumb-responsive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-responsive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-responsive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/default/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nconst items = [\\n  { href: \\\"#\\\", label: \\\"Home\\\" },\\n  { href: \\\"#\\\", label: \\\"Documentation\\\" },\\n  { href: \\\"#\\\", label: \\\"Building Your Application\\\" },\\n  { href: \\\"#\\\", label: \\\"Data Fetching\\\" },\\n  { label: \\\"Caching and Revalidating\\\" },\\n]\\n\\nconst ITEMS_TO_DISPLAY = 3\\n\\nexport default function BreadcrumbResponsive() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href={items[0].href}>{items[0].label}</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        {items.length > ITEMS_TO_DISPLAY ? (\\n          <>\\n            <BreadcrumbItem>\\n              {isDesktop ? (\\n                <DropdownMenu open={open} onOpenChange={setOpen}>\\n                  <DropdownMenuTrigger\\n                    className=\\\"flex items-center gap-1\\\"\\n                    aria-label=\\\"Toggle menu\\\"\\n                  >\\n                    <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n                  </DropdownMenuTrigger>\\n                  <DropdownMenuContent align=\\\"start\\\">\\n                    {items.slice(1, -2).map((item, index) => (\\n                      <DropdownMenuItem key={index}>\\n                        <Link href={item.href ? item.href : \\\"#\\\"}>\\n                          {item.label}\\n                        </Link>\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuContent>\\n                </DropdownMenu>\\n              ) : (\\n                <Drawer open={open} onOpenChange={setOpen}>\\n                  <DrawerTrigger aria-label=\\\"Toggle Menu\\\">\\n                    <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n                  </DrawerTrigger>\\n                  <DrawerContent>\\n                    <DrawerHeader className=\\\"text-left\\\">\\n                      <DrawerTitle>Navigate to</DrawerTitle>\\n                      <DrawerDescription>\\n                        Select a page to navigate to.\\n                      </DrawerDescription>\\n                    </DrawerHeader>\\n                    <div className=\\\"grid gap-1 px-4\\\">\\n                      {items.slice(1, -2).map((item, index) => (\\n                        <Link\\n                          key={index}\\n                          href={item.href ? item.href : \\\"#\\\"}\\n                          className=\\\"py-1 text-sm\\\"\\n                        >\\n                          {item.label}\\n                        </Link>\\n                      ))}\\n                    </div>\\n                    <DrawerFooter className=\\\"pt-4\\\">\\n                      <DrawerClose asChild>\\n                        <Button variant=\\\"outline\\\">Close</Button>\\n                      </DrawerClose>\\n                    </DrawerFooter>\\n                  </DrawerContent>\\n                </Drawer>\\n              )}\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n          </>\\n        ) : null}\\n        {items.slice(-ITEMS_TO_DISPLAY + 1).map((item, index) => (\\n          <BreadcrumbItem key={index}>\\n            {item.href ? (\\n              <>\\n                <BreadcrumbLink\\n                  asChild\\n                  className=\\\"max-w-20 truncate md:max-w-none\\\"\\n                >\\n                  <Link href={item.href}>{item.label}</Link>\\n                </BreadcrumbLink>\\n                <BreadcrumbSeparator />\\n              </>\\n            ) : (\\n              <BreadcrumbPage className=\\\"max-w-20 truncate md:max-w-none\\\">\\n                {item.label}\\n              </BreadcrumbPage>\\n            )}\\n          </BreadcrumbItem>\\n        ))}\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/breadcrumb-separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-separator\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-separator.tsx\",\n      \"content\": \"import { Slash } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbWithCustomSeparator() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/\\\">Home</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <Slash />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/components\\\">Components</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <Slash />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { ChevronRight, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Breadcrumb = React.forwardRef<\\n  HTMLElement,\\n  React.ComponentPropsWithoutRef<\\\"nav\\\"> & {\\n    separator?: React.ReactNode\\n  }\\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\\\"breadcrumb\\\" {...props} />)\\nBreadcrumb.displayName = \\\"Breadcrumb\\\"\\n\\nconst BreadcrumbList = React.forwardRef<\\n  HTMLOListElement,\\n  React.ComponentPropsWithoutRef<\\\"ol\\\">\\n>(({ className, ...props }, ref) => (\\n  <ol\\n    ref={ref}\\n    className={cn(\\n      \\\"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nBreadcrumbList.displayName = \\\"BreadcrumbList\\\"\\n\\nconst BreadcrumbItem = React.forwardRef<\\n  HTMLLIElement,\\n  React.ComponentPropsWithoutRef<\\\"li\\\">\\n>(({ className, ...props }, ref) => (\\n  <li\\n    ref={ref}\\n    className={cn(\\\"inline-flex items-center gap-1.5\\\", className)}\\n    {...props}\\n  />\\n))\\nBreadcrumbItem.displayName = \\\"BreadcrumbItem\\\"\\n\\nconst BreadcrumbLink = React.forwardRef<\\n  HTMLAnchorElement,\\n  React.ComponentPropsWithoutRef<\\\"a\\\"> & {\\n    asChild?: boolean\\n  }\\n>(({ asChild, className, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      className={cn(\\\"transition-colors hover:text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nBreadcrumbLink.displayName = \\\"BreadcrumbLink\\\"\\n\\nconst BreadcrumbPage = React.forwardRef<\\n  HTMLSpanElement,\\n  React.ComponentPropsWithoutRef<\\\"span\\\">\\n>(({ className, ...props }, ref) => (\\n  <span\\n    ref={ref}\\n    role=\\\"link\\\"\\n    aria-disabled=\\\"true\\\"\\n    aria-current=\\\"page\\\"\\n    className={cn(\\\"font-normal text-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nBreadcrumbPage.displayName = \\\"BreadcrumbPage\\\"\\n\\nconst BreadcrumbSeparator = ({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) => (\\n  <li\\n    role=\\\"presentation\\\"\\n    aria-hidden=\\\"true\\\"\\n    className={cn(\\\"[&>svg]:w-3.5 [&>svg]:h-3.5\\\", className)}\\n    {...props}\\n  >\\n    {children ?? <ChevronRight />}\\n  </li>\\n)\\nBreadcrumbSeparator.displayName = \\\"BreadcrumbSeparator\\\"\\n\\nconst BreadcrumbEllipsis = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) => (\\n  <span\\n    role=\\\"presentation\\\"\\n    aria-hidden=\\\"true\\\"\\n    className={cn(\\\"flex h-9 w-9 items-center justify-center\\\", className)}\\n    {...props}\\n  >\\n    <MoreHorizontal className=\\\"h-4 w-4\\\" />\\n    <span className=\\\"sr-only\\\">More</span>\\n  </span>\\n)\\nBreadcrumbEllipsis.displayName = \\\"BreadcrumbElipssis\\\"\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-as-child.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-as-child\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-as-child.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonAsChild() {\\n  return (\\n    <Button asChild>\\n      <Link href=\\\"/login\\\">Login</Link>\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonDemo() {\\n  return <Button>Button</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-destructive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-destructive.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonDestructive() {\\n  return <Button variant=\\\"destructive\\\">Destructive</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-ghost.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-ghost\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-ghost.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonGhost() {\\n  return <Button variant=\\\"ghost\\\">Ghost</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/button-group.tsx\",\n      \"content\": \"import { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\\\",\\n        vertical:\\n          \\\"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      className={cn(\\n        \\\"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-icon\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-icon.tsx\",\n      \"content\": \"import { ChevronRight } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonIcon() {\\n  return (\\n    <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n      <ChevronRight />\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-link.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-link\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-link.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonLink() {\\n  return <Button variant=\\\"link\\\">Link</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-loading.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-loading\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-loading.tsx\",\n      \"content\": \"import { Loader2 } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonLoading() {\\n  return (\\n    <Button disabled>\\n      <Loader2 className=\\\"animate-spin\\\" />\\n      Please wait\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-outline\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-outline.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonOutline() {\\n  return <Button variant=\\\"outline\\\">Outline</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-secondary.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-secondary\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-secondary.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonSecondary() {\\n  return <Button variant=\\\"secondary\\\">Secondary</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button-with-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-with-icon\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-with-icon.tsx\",\n      \"content\": \"import { Mail } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ButtonWithIcon() {\\n  return (\\n    <Button>\\n      <Mail /> Login with Email\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/button.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground hover:bg-primary/90\\\",\\n        destructive:\\n          \\\"bg-destructive text-destructive-foreground hover:bg-destructive/90\\\",\\n        outline:\\n          \\\"border border-input bg-background hover:bg-accent hover:text-accent-foreground\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80\\\",\\n        ghost: \\\"hover:bg-accent hover:text-accent-foreground\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default: \\\"h-10 px-4 py-2\\\",\\n        sm: \\\"h-9 rounded-md px-3\\\",\\n        lg: \\\"h-11 rounded-md px-8\\\",\\n        icon: \\\"h-10 w-10\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nexport interface ButtonProps\\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\\n    VariantProps<typeof buttonVariants> {\\n  asChild?: boolean\\n}\\n\\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\\n    const Comp = asChild ? Slot : \\\"button\\\"\\n    return (\\n      <Comp\\n        className={cn(buttonVariants({ variant, size, className }))}\\n        ref={ref}\\n        {...props}\\n      />\\n    )\\n  }\\n)\\nButton.displayName = \\\"Button\\\"\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-01\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A simple calendar.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-01.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar01() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-02\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Multiple months with single selection.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-02.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar02() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      numberOfMonths={2}\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-03\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Multiple months with multiple selection.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-03.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar03() {\\n  const [dates, setDates] = React.useState<Date[]>([\\n    new Date(2025, 5, 12),\\n    new Date(2025, 6, 24),\\n  ])\\n\\n  return (\\n    <Calendar\\n      mode=\\\"multiple\\\"\\n      numberOfMonths={2}\\n      defaultMonth={dates[0]}\\n      required\\n      selected={dates}\\n      onSelect={setDates}\\n      max={5}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-04\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Single month with range selection\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-04.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar04() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 9),\\n    to: new Date(2025, 5, 26),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0 xl:pt-28\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-05\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Multiple months with range selection\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-05.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar05() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 6, 15),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      numberOfMonths={2}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-06\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Range selection with minimum days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-06.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar06() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 5, 26),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        defaultMonth={dateRange?.from}\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={1}\\n        min={5}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        A minimum of 5 days is required\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-07\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Range selection with minimum and maximum days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-07.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar07() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 18),\\n    to: new Date(2025, 6, 7),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        defaultMonth={dateRange?.from}\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={2}\\n        min={2}\\n        max={20}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        Your stay must be between 2 and 20 nights\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-08\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Calendar with disabled days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-08.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar08() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      disabled={{\\n        before: new Date(2025, 5, 12),\\n      }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-09\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Calendar with disabled weekends\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-09.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar09() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 17),\\n    to: new Date(2025, 5, 20),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      numberOfMonths={2}\\n      disabled={{ dayOfWeek: [0, 6] }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n      excludeDisabled\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-10\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Today button\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-10.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\n\\nexport default function Calendar10() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(new Date())\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"relative\\\">\\n        <CardTitle>Appointment</CardTitle>\\n        <CardDescription>Find a date</CardDescription>\\n        <Button\\n          size=\\\"sm\\\"\\n          variant=\\\"outline\\\"\\n          className=\\\"absolute right-4 top-4\\\"\\n          onClick={() => {\\n            setMonth(new Date())\\n            setDate(new Date())\\n          }}\\n        >\\n          Today\\n        </Button>\\n      </CardHeader>\\n      <CardContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          month={month}\\n          onMonthChange={setMonth}\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n        />\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-11\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Start and end of month\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-11.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar11() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 17),\\n    to: new Date(2025, 5, 20),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={2}\\n        startMonth={new Date(2025, 5, 1)}\\n        endMonth={new Date(2025, 6, 31)}\\n        disableNavigation\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        We are open in June and July only.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-12\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Localized calendar\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-12.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { enUS, es } from \\\"react-day-picker/locale\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\n\\nconst localizedStrings = {\\n  en: {\\n    title: \\\"Book an appointment\\\",\\n    description: \\\"Select the dates for your appointment\\\",\\n  },\\n  es: {\\n    title: \\\"Reserva una cita\\\",\\n    description: \\\"Selecciona las fechas para tu cita\\\",\\n  },\\n} as const\\n\\nexport default function Calendar12() {\\n  const [locale, setLocale] =\\n    React.useState<keyof typeof localizedStrings>(\\\"es\\\")\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 8, 9),\\n    to: new Date(2025, 8, 17),\\n  })\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"relative border-b\\\">\\n        <CardTitle>{localizedStrings[locale].title}</CardTitle>\\n        <CardDescription>\\n          {localizedStrings[locale].description}\\n        </CardDescription>\\n        <Select\\n          value={locale}\\n          onValueChange={(value) =>\\n            setLocale(value as keyof typeof localizedStrings)\\n          }\\n        >\\n          <SelectTrigger className=\\\"absolute right-4 top-4 w-[100px]\\\">\\n            <SelectValue placeholder=\\\"Language\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"end\\\">\\n            <SelectItem value=\\\"es\\\">Español</SelectItem>\\n            <SelectItem value=\\\"en\\\">English</SelectItem>\\n          </SelectContent>\\n        </Select>\\n      </CardHeader>\\n      <CardContent className=\\\"pt-4\\\">\\n        <Calendar\\n          mode=\\\"range\\\"\\n          selected={dateRange}\\n          onSelect={setDateRange}\\n          defaultMonth={dateRange?.from}\\n          numberOfMonths={2}\\n          locale={locale === \\\"es\\\" ? es : enUS}\\n          className=\\\"bg-transparent p-0\\\"\\n          buttonVariant=\\\"outline\\\"\\n        />\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-13\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With Month and Year Dropdown\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"label\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-13.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\n\\nexport default function Calendar13() {\\n  const [dropdown, setDropdown] =\\n    React.useState<React.ComponentProps<typeof Calendar>[\\\"captionLayout\\\"]>(\\n      \\\"dropdown\\\"\\n    )\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-4\\\">\\n      <Calendar\\n        mode=\\\"single\\\"\\n        defaultMonth={date}\\n        selected={date}\\n        onSelect={setDate}\\n        captionLayout={dropdown}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"dropdown\\\" className=\\\"px-1\\\">\\n          Dropdown\\n        </Label>\\n        <Select\\n          value={dropdown}\\n          onValueChange={(value) =>\\n            setDropdown(\\n              value as React.ComponentProps<typeof Calendar>[\\\"captionLayout\\\"]\\n            )\\n          }\\n        >\\n          <SelectTrigger id=\\\"dropdown\\\" className=\\\"bg-background w-full\\\">\\n            <SelectValue placeholder=\\\"Dropdown\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"center\\\">\\n            <SelectItem value=\\\"dropdown\\\">Month and Year</SelectItem>\\n            <SelectItem value=\\\"dropdown-months\\\">Month Only</SelectItem>\\n            <SelectItem value=\\\"dropdown-years\\\">Year Only</SelectItem>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-14\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With Booked/Unavailable Days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-14.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar14() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 12 },\\n    (_, i) => new Date(2025, 5, 15 + i)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      disabled={bookedDates}\\n      modifiers={{\\n        booked: bookedDates,\\n      }}\\n      modifiersClassNames={{\\n        booked: \\\"[&>button]:line-through opacity-100\\\",\\n      }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-15\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With Week Numbers\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-15.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar15() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n      showWeekNumber\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-16\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With time picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-16.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Clock2Icon } from \\\"lucide-react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/default/ui/card\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function Calendar16() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col gap-6 border-t px-4 pb-0 pt-4\\\">\\n        <div className=\\\"flex w-full flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\">Start Time</Label>\\n          <div className=\\\"relative flex w-full items-center gap-2\\\">\\n            <Clock2Icon className=\\\"text-muted-foreground pointer-events-none absolute left-2.5 size-4 select-none\\\" />\\n            <Input\\n              id=\\\"time-from\\\"\\n              type=\\\"time\\\"\\n              step=\\\"1\\\"\\n              defaultValue=\\\"10:30:00\\\"\\n              className=\\\"appearance-none pl-8 [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n            />\\n          </div>\\n        </div>\\n        <div className=\\\"flex w-full flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\">End Time</Label>\\n          <div className=\\\"relative flex w-full items-center gap-2\\\">\\n            <Clock2Icon className=\\\"text-muted-foreground pointer-events-none absolute left-2.5 size-4 select-none\\\" />\\n            <Input\\n              id=\\\"time-to\\\"\\n              type=\\\"time\\\"\\n              step=\\\"1\\\"\\n              defaultValue=\\\"12:30:00\\\"\\n              className=\\\"appearance-none pl-8 [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n            />\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-17.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-17\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With time picker inline\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-17.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/default/ui/card\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function Calendar17() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0 [--cell-size:2.8rem]\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"*:[div]:w-full flex gap-2 border-t px-4 pb-0 pt-4\\\">\\n        <div className=\\\"flex-1\\\">\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"sr-only\\\">\\n            Start Time\\n          </Label>\\n          <Input\\n            id=\\\"time-from\\\"\\n            type=\\\"time\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n        <span>-</span>\\n        <div className=\\\"flex-1\\\">\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"sr-only\\\">\\n            End Time\\n          </Label>\\n          <Input\\n            id=\\\"time-to\\\"\\n            type=\\\"time\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-18.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-18\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Variable size\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-18.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar18() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border [--cell-size:2.75rem] md:[--cell-size:3rem]\\\"\\n      buttonVariant=\\\"ghost\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-19.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-19\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With presets\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-19.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays } from \\\"date-fns\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/default/ui/card\\\"\\n\\nexport default function Calendar19() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"max-w-[300px] py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          defaultMonth={date}\\n          className=\\\"bg-transparent p-0 [--cell-size:2.375rem]\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-wrap gap-2 border-t px-4 pb-0 pt-4\\\">\\n        {[\\n          { label: \\\"Today\\\", value: 0 },\\n          { label: \\\"Tomorrow\\\", value: 1 },\\n          { label: \\\"In 3 days\\\", value: 3 },\\n          { label: \\\"In a week\\\", value: 7 },\\n          { label: \\\"In 2 weeks\\\", value: 14 },\\n        ].map((preset) => (\\n          <Button\\n            key={preset.value}\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            className=\\\"flex-1\\\"\\n            onClick={() => {\\n              const newDate = addDays(new Date(), preset.value)\\n              setDate(newDate)\\n            }}\\n          >\\n            {preset.label}\\n          </Button>\\n        ))}\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-20.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-20\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With time presets\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-20.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/default/ui/card\\\"\\n\\nexport default function Calendar20() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const [selectedTime, setSelectedTime] = React.useState<string | null>(\\\"10:00\\\")\\n  const timeSlots = Array.from({ length: 37 }, (_, i) => {\\n    const totalMinutes = i * 15\\n    const hour = Math.floor(totalMinutes / 60) + 9\\n    const minute = totalMinutes % 60\\n    return `${hour.toString().padStart(2, \\\"0\\\")}:${minute\\n      .toString()\\n      .padStart(2, \\\"0\\\")}`\\n  })\\n\\n  const bookedDates = Array.from(\\n    { length: 3 },\\n    (_, i) => new Date(2025, 5, 17 + i)\\n  )\\n\\n  return (\\n    <Card className=\\\"gap-0 p-0\\\">\\n      <CardContent className=\\\"relative p-0 md:pr-48\\\">\\n        <div className=\\\"p-6\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            defaultMonth={date}\\n            disabled={bookedDates}\\n            showOutsideDays={false}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n            className=\\\"bg-transparent p-0 [--cell-size:2.5rem] md:[--cell-size:3rem]\\\"\\n            formatters={{\\n              formatWeekdayName: (date) => {\\n                return date.toLocaleString(\\\"en-US\\\", { weekday: \\\"short\\\" })\\n              },\\n            }}\\n          />\\n        </div>\\n        <div className=\\\"no-scrollbar inset-y-0 right-0 flex max-h-72 w-full scroll-pb-6 flex-col gap-4 overflow-y-auto border-t p-6 md:absolute md:max-h-none md:w-48 md:border-l md:border-t-0\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            {timeSlots.map((time) => (\\n              <Button\\n                key={time}\\n                variant={selectedTime === time ? \\\"default\\\" : \\\"outline\\\"}\\n                onClick={() => setSelectedTime(time)}\\n                className=\\\"w-full shadow-none\\\"\\n              >\\n                {time}\\n              </Button>\\n            ))}\\n          </div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col gap-4 border-t !py-5 px-6 md:flex-row\\\">\\n        <div className=\\\"text-sm\\\">\\n          {date && selectedTime ? (\\n            <>\\n              Your meeting is booked for{\\\" \\\"}\\n              <span className=\\\"font-medium\\\">\\n                {\\\" \\\"}\\n                {date?.toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"long\\\",\\n                  day: \\\"numeric\\\",\\n                  month: \\\"long\\\",\\n                })}{\\\" \\\"}\\n              </span>\\n              at <span className=\\\"font-medium\\\">{selectedTime}</span>.\\n            </>\\n          ) : (\\n            <>Select a date and time for your meeting.</>\\n          )}\\n        </div>\\n        <Button\\n          disabled={!date || !selectedTime}\\n          className=\\\"w-full md:ml-auto md:w-auto\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          Continue\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-21.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-21\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Custom days and formatters\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-21.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function Calendar21() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 5, 17),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={range?.from}\\n      selected={range}\\n      onSelect={setRange}\\n      numberOfMonths={1}\\n      captionLayout=\\\"dropdown\\\"\\n      className=\\\"rounded-lg border shadow-sm [--cell-size:2.75rem] md:[--cell-size:3rem]\\\"\\n      formatters={{\\n        formatMonthDropdown: (date) => {\\n          return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n        },\\n      }}\\n      components={{\\n        DayButton: ({ children, modifiers, day, ...props }) => {\\n          const isWeekend = day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n          return (\\n            <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n              {children}\\n              {!modifiers.outside && <span>{isWeekend ? \\\"$220\\\" : \\\"$100\\\"}</span>}\\n            </CalendarDayButton>\\n          )\\n        },\\n      }}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-22.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-22\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-22.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function Calendar22() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Date of birth\\n      </Label>\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"date\\\"\\n            className=\\\"w-48 justify-between font-normal\\\"\\n          >\\n            {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(date) => {\\n              setDate(date)\\n              setOpen(false)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-23.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-23\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date range picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-23.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function Calendar23() {\\n  const [range, setRange] = React.useState<DateRange | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"dates\\\" className=\\\"px-1\\\">\\n        Select your stay\\n      </Label>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"dates\\\"\\n            className=\\\"w-56 justify-between font-normal\\\"\\n          >\\n            {range?.from && range?.to\\n              ? `${range.from.toLocaleDateString()} - ${range.to.toLocaleDateString()}`\\n              : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            selected={range}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(range) => {\\n              setRange(range)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-24.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-24\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date and Time picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-24.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function Calendar24() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex gap-4\\\">\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n          Date\\n        </Label>\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date\\\"\\n              className=\\\"w-32 justify-between font-normal\\\"\\n            >\\n              {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n              <ChevronDownIcon />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              onSelect={(date) => {\\n                setDate(date)\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"time\\\" className=\\\"px-1\\\">\\n          Time\\n        </Label>\\n        <Input\\n          type=\\\"time\\\"\\n          id=\\\"time\\\"\\n          step=\\\"1\\\"\\n          defaultValue=\\\"10:30:00\\\"\\n          className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-25.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-25\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date and Time range picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-25.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function Calendar25() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-6\\\">\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n          Date\\n        </Label>\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date\\\"\\n              className=\\\"w-full justify-between font-normal\\\"\\n            >\\n              {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n              <ChevronDownIcon />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              onSelect={(date) => {\\n                setDate(date)\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"px-1\\\">\\n            From\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-from\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"px-1\\\">\\n            To\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-to\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-26.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-26\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date range picker with time\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-26.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function Calendar26() {\\n  const [openFrom, setOpenFrom] = React.useState(false)\\n  const [openTo, setOpenTo] = React.useState(false)\\n  const [dateFrom, setDateFrom] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-01\\\")\\n  )\\n  const [dateTo, setDateTo] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-03\\\")\\n  )\\n\\n  return (\\n    <div className=\\\"flex w-full max-w-64 min-w-0 flex-col gap-6\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-1 flex-col gap-3\\\">\\n          <Label htmlFor=\\\"date-from\\\" className=\\\"px-1\\\">\\n            Check-in\\n          </Label>\\n          <Popover open={openFrom} onOpenChange={setOpenFrom}>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-from\\\"\\n                className=\\\"w-full justify-between font-normal\\\"\\n              >\\n                {dateFrom\\n                  ? dateFrom.toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"2-digit\\\",\\n                      month: \\\"short\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  : \\\"Select date\\\"}\\n                <ChevronDownIcon />\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent\\n              className=\\\"w-auto overflow-hidden p-0\\\"\\n              align=\\\"start\\\"\\n            >\\n              <Calendar\\n                mode=\\\"single\\\"\\n                selected={dateFrom}\\n                captionLayout=\\\"dropdown\\\"\\n                onSelect={(date) => {\\n                  setDateFrom(date)\\n                  setOpenFrom(false)\\n                }}\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"invisible px-1\\\">\\n            From\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-from\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-1 flex-col gap-3\\\">\\n          <Label htmlFor=\\\"date-to\\\" className=\\\"px-1\\\">\\n            Check-out\\n          </Label>\\n          <Popover open={openTo} onOpenChange={setOpenTo}>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-to\\\"\\n                className=\\\"w-full justify-between font-normal\\\"\\n              >\\n                {dateTo\\n                  ? dateTo.toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"2-digit\\\",\\n                      month: \\\"short\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  : \\\"Select date\\\"}\\n                <ChevronDownIcon />\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent\\n              className=\\\"w-auto overflow-hidden p-0\\\"\\n              align=\\\"start\\\"\\n            >\\n              <Calendar\\n                mode=\\\"single\\\"\\n                selected={dateTo}\\n                captionLayout=\\\"dropdown\\\"\\n                onSelect={(date) => {\\n                  setDateTo(date)\\n                  setOpenTo(false)\\n                }}\\n                disabled={dateFrom && { before: dateFrom }}\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"invisible px-1\\\">\\n            To\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-to\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-27.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-27\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Chart filter\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"chart\",\n    \"card\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-27.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { DateRange } from \\\"react-day-picker\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nconst chartData = [\\n  { date: \\\"2025-06-01\\\", visitors: 178 },\\n  { date: \\\"2025-06-02\\\", visitors: 470 },\\n  { date: \\\"2025-06-03\\\", visitors: 103 },\\n  { date: \\\"2025-06-04\\\", visitors: 439 },\\n  { date: \\\"2025-06-05\\\", visitors: 88 },\\n  { date: \\\"2025-06-06\\\", visitors: 294 },\\n  { date: \\\"2025-06-07\\\", visitors: 323 },\\n  { date: \\\"2025-06-08\\\", visitors: 385 },\\n  { date: \\\"2025-06-09\\\", visitors: 438 },\\n  { date: \\\"2025-06-10\\\", visitors: 155 },\\n  { date: \\\"2025-06-11\\\", visitors: 92 },\\n  { date: \\\"2025-06-12\\\", visitors: 492 },\\n  { date: \\\"2025-06-13\\\", visitors: 81 },\\n  { date: \\\"2025-06-14\\\", visitors: 426 },\\n  { date: \\\"2025-06-15\\\", visitors: 307 },\\n  { date: \\\"2025-06-16\\\", visitors: 371 },\\n  { date: \\\"2025-06-17\\\", visitors: 475 },\\n  { date: \\\"2025-06-18\\\", visitors: 107 },\\n  { date: \\\"2025-06-19\\\", visitors: 341 },\\n  { date: \\\"2025-06-20\\\", visitors: 408 },\\n  { date: \\\"2025-06-21\\\", visitors: 169 },\\n  { date: \\\"2025-06-22\\\", visitors: 317 },\\n  { date: \\\"2025-06-23\\\", visitors: 480 },\\n  { date: \\\"2025-06-24\\\", visitors: 132 },\\n  { date: \\\"2025-06-25\\\", visitors: 141 },\\n  { date: \\\"2025-06-26\\\", visitors: 434 },\\n  { date: \\\"2025-06-27\\\", visitors: 448 },\\n  { date: \\\"2025-06-28\\\", visitors: 149 },\\n  { date: \\\"2025-06-29\\\", visitors: 103 },\\n  { date: \\\"2025-06-30\\\", visitors: 446 },\\n]\\n\\nconst total = chartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"hsl(var(--primary))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Calendar27() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 5),\\n    to: new Date(2025, 5, 20),\\n  })\\n  const filteredData = React.useMemo(() => {\\n    if (!range?.from && !range?.to) {\\n      return chartData\\n    }\\n\\n    return chartData.filter((item) => {\\n      const date = new Date(item.date)\\n      return date >= range.from! && date <= range.to!\\n    })\\n  }, [range])\\n\\n  return (\\n    <Card className=\\\"@container/card w-full max-w-xl\\\">\\n      <CardHeader className=\\\"@md/card:grid relative flex flex-col border-b\\\">\\n        <CardTitle>Web Analytics</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for this month.\\n        </CardDescription>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" className=\\\"absolute right-4 top-4\\\">\\n              <CalendarIcon />\\n              {range?.from && range?.to\\n                ? `${range.from.toLocaleDateString()} - ${range.to.toLocaleDateString()}`\\n                : \\\"June 2025\\\"}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"end\\\">\\n            <Calendar\\n              className=\\\"w-full\\\"\\n              mode=\\\"range\\\"\\n              defaultMonth={range?.from}\\n              selected={range}\\n              onSelect={setRange}\\n              disableNavigation\\n              startMonth={range?.from}\\n              fixedWeeks\\n              showOutsideDays\\n              disabled={{\\n                after: new Date(2025, 5, 31),\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <BarChart\\n            accessibilityLayer\\n            data={filteredData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={20}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Bar dataKey=\\\"visitors\\\" fill={`var(--color-visitors)`} radius={4} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"border-t pt-6\\\">\\n        <div className=\\\"text-sm\\\">\\n          You had{\\\" \\\"}\\n          <span className=\\\"font-semibold\\\">{total.toLocaleString()}</span>{\\\" \\\"}\\n          visitors for the month of June.\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-28.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-28\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Input with date picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-28.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nfunction formatDate(date: Date | undefined) {\\n  if (!date) {\\n    return \\\"\\\"\\n  }\\n\\n  return date.toLocaleDateString(\\\"en-US\\\", {\\n    day: \\\"2-digit\\\",\\n    month: \\\"long\\\",\\n    year: \\\"numeric\\\",\\n  })\\n}\\n\\nfunction isValidDate(date: Date | undefined) {\\n  if (!date) {\\n    return false\\n  }\\n  return !isNaN(date.getTime())\\n}\\n\\nexport default function Calendar28() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-01\\\")\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(date)\\n  const [value, setValue] = React.useState(formatDate(date))\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Subscription Date\\n      </Label>\\n      <div className=\\\"relative flex gap-2\\\">\\n        <Input\\n          id=\\\"date\\\"\\n          value={value}\\n          placeholder=\\\"June 01, 2025\\\"\\n          className=\\\"bg-background pr-10\\\"\\n          onChange={(e) => {\\n            const date = new Date(e.target.value)\\n            setValue(e.target.value)\\n            if (isValidDate(date)) {\\n              setDate(date)\\n              setMonth(date)\\n            }\\n          }}\\n          onKeyDown={(e) => {\\n            if (e.key === \\\"ArrowDown\\\") {\\n              e.preventDefault()\\n              setOpen(true)\\n            }\\n          }}\\n        />\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker\\\"\\n              variant=\\\"ghost\\\"\\n              size=\\\"icon\\\"\\n              className=\\\"absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2\\\"\\n            >\\n              <CalendarIcon className=\\\"size-3\\\" />\\n              <span className=\\\"sr-only\\\">Select date</span>\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent\\n            className=\\\"w-auto overflow-hidden p-0\\\"\\n            align=\\\"end\\\"\\n            alignOffset={-8}\\n            sideOffset={10}\\n          >\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              month={month}\\n              onMonthChange={setMonth}\\n              onSelect={(date) => {\\n                setDate(date)\\n                setValue(formatDate(date))\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-29.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-29\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Natural language date picker\",\n  \"dependencies\": [\n    \"chrono-node\"\n  ],\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-29.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { parseDate } from \\\"chrono-node\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nfunction formatDate(date: Date | undefined) {\\n  if (!date) {\\n    return \\\"\\\"\\n  }\\n\\n  return date.toLocaleDateString(\\\"en-US\\\", {\\n    day: \\\"2-digit\\\",\\n    month: \\\"long\\\",\\n    year: \\\"numeric\\\",\\n  })\\n}\\n\\nexport default function Calendar29() {\\n  const [open, setOpen] = React.useState(false)\\n  const [value, setValue] = React.useState(\\\"In 2 days\\\")\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    parseDate(value) || undefined\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(date)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Schedule Date\\n      </Label>\\n      <div className=\\\"relative flex gap-2\\\">\\n        <Input\\n          id=\\\"date\\\"\\n          value={value}\\n          placeholder=\\\"Tomorrow or next week\\\"\\n          className=\\\"bg-background pr-10\\\"\\n          onChange={(e) => {\\n            setValue(e.target.value)\\n            const date = parseDate(e.target.value)\\n            if (date) {\\n              setDate(date)\\n              setMonth(date)\\n            }\\n          }}\\n          onKeyDown={(e) => {\\n            if (e.key === \\\"ArrowDown\\\") {\\n              e.preventDefault()\\n              setOpen(true)\\n            }\\n          }}\\n        />\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker\\\"\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-1/2 right-2 size-6 -translate-y-1/2\\\"\\n            >\\n              <CalendarIcon className=\\\"size-3.5\\\" />\\n              <span className=\\\"sr-only\\\">Select date</span>\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"end\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              month={month}\\n              onMonthChange={setMonth}\\n              onSelect={(date) => {\\n                setDate(date)\\n                setValue(formatDate(date))\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"text-muted-foreground px-1 text-sm\\\">\\n        Your post will be published on{\\\" \\\"}\\n        <span className=\\\"font-medium\\\">{formatDate(date)}</span>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-30.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-30\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With little-date\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-30.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { formatDateRange } from \\\"little-date\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function Calendar30() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 4),\\n    to: new Date(2025, 5, 10),\\n  })\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"dates\\\" className=\\\"px-1\\\">\\n        Select your stay\\n      </Label>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"dates\\\"\\n            className=\\\"w-56 justify-between font-normal\\\"\\n          >\\n            {range?.from && range?.to\\n              ? formatDateRange(range.from, range.to, {\\n                  includeTime: false,\\n                })\\n              : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            selected={range}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(range) => {\\n              setRange(range)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-31.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-31\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With event slots\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-31.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { formatDateRange } from \\\"little-date\\\"\\nimport { PlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/default/ui/card\\\"\\n\\nconst events = [\\n  {\\n    title: \\\"Team Sync Meeting\\\",\\n    from: \\\"2025-06-12T09:00:00\\\",\\n    to: \\\"2025-06-12T10:00:00\\\",\\n  },\\n  {\\n    title: \\\"Design Review\\\",\\n    from: \\\"2025-06-12T11:30:00\\\",\\n    to: \\\"2025-06-12T12:30:00\\\",\\n  },\\n  {\\n    title: \\\"Client Presentation\\\",\\n    from: \\\"2025-06-12T14:00:00\\\",\\n    to: \\\"2025-06-12T15:00:00\\\",\\n  },\\n]\\n\\nexport default function Calendar31() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n          required\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col items-start gap-3 border-t px-4 pb-0 pt-4\\\">\\n        <div className=\\\"flex w-full items-center justify-between px-1\\\">\\n          <div className=\\\"text-sm font-medium\\\">\\n            {date?.toLocaleDateString(\\\"en-US\\\", {\\n              day: \\\"numeric\\\",\\n              month: \\\"long\\\",\\n              year: \\\"numeric\\\",\\n            })}\\n          </div>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-6 w-6\\\"\\n            title=\\\"Add Event\\\"\\n          >\\n            <PlusIcon />\\n            <span className=\\\"sr-only\\\">Add Event</span>\\n          </Button>\\n        </div>\\n        <div className=\\\"flex w-full flex-col gap-2\\\">\\n          {events.map((event) => (\\n            <div\\n              key={event.title}\\n              className=\\\"bg-muted after:bg-primary/70 relative rounded-md p-2 pl-6 text-sm after:absolute after:inset-y-2 after:left-2 after:w-1 after:rounded-full\\\"\\n            >\\n              <div className=\\\"font-medium\\\">{event.title}</div>\\n              <div className=\\\"text-muted-foreground text-xs\\\">\\n                {formatDateRange(new Date(event.from), new Date(event.to))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-32.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-32\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date picker in a drawer\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"button\",\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-32.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarPlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Drawer,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/default/ui/drawer\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function Calendar32() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Date of birth\\n      </Label>\\n      <Drawer open={open} onOpenChange={setOpen}>\\n        <DrawerTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"date\\\"\\n            className=\\\"w-48 justify-between font-normal\\\"\\n          >\\n            {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n            <CalendarPlusIcon />\\n          </Button>\\n        </DrawerTrigger>\\n        <DrawerContent className=\\\"w-auto overflow-hidden p-0\\\">\\n          <DrawerHeader className=\\\"sr-only\\\">\\n            <DrawerTitle>Select date</DrawerTitle>\\n            <DrawerDescription>Set your date of birth</DrawerDescription>\\n          </DrawerHeader>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(date) => {\\n              setDate(date)\\n              setOpen(false)\\n            }}\\n            className=\\\"mx-auto [--cell-size:clamp(0px,calc(100vw/7.5),52px)]\\\"\\n          />\\n        </DrawerContent>\\n      </Drawer>\\n      <div className=\\\"text-muted-foreground px-1 text-sm\\\">\\n        This example works best on mobile.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/calendar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport default function CalendarDemo() {\\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-md border\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"form\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/calendar-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nconst FormSchema = z.object({\\n  dob: z.date({\\n    required_error: \\\"A date of birth is required.\\\",\\n  }),\\n})\\n\\nexport default function CalendarForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"dob\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Date of birth</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant={\\\"outline\\\"}\\n                      className={cn(\\n                        \\\"w-[240px] pl-3 text-left font-normal\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value ? (\\n                        format(field.value, \\\"PPP\\\")\\n                      ) : (\\n                        <span>Pick a date</span>\\n                      )}\\n                      <CalendarIcon className=\\\"ml-auto h-4 w-4 opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n                  <Calendar\\n                    mode=\\\"single\\\"\\n                    selected={field.value}\\n                    onSelect={field.onChange}\\n                    disabled={(date) =>\\n                      date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n                    }\\n                    initialFocus\\n                  />\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                Your date of birth is used to calculate your age.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ChevronDownIcon,\\n  ChevronLeftIcon,\\n  ChevronRightIcon,\\n} from \\\"lucide-react\\\"\\nimport { DayButton, DayPicker, getDefaultClassNames } from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/new-york/ui/button\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(\\\"default\\\", { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"bg-popover absolute inset-0 opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"select-none font-medium\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-[--cell-size] select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-muted-foreground select-none text-[0.8rem]\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"bg-accent rounded-l-md\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\\"bg-accent rounded-r-md\\\", defaultClassNames.range_end),\\n        today: cn(\\n          \\\"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <ChevronLeftIcon className={cn(\\\"size-4\\\", className)} {...props} />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <ChevronRightIcon\\n                className={cn(\\\"size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <ChevronDownIcon className={cn(\\\"size-4\\\", className)} {...props} />\\n          )\\n        },\\n        DayButton: CalendarDayButton,\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-[--cell-size] items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  ...props\\n}: React.ComponentProps<typeof DayButton>) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString()}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"button\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/card-demo.tsx\",\n      \"content\": \"import { BellRing, Check } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { Switch } from \\\"@/registry/default/ui/switch\\\"\\n\\nconst notifications = [\\n  {\\n    title: \\\"Your call has been confirmed.\\\",\\n    description: \\\"1 hour ago\\\",\\n  },\\n  {\\n    title: \\\"You have a new message!\\\",\\n    description: \\\"1 hour ago\\\",\\n  },\\n  {\\n    title: \\\"Your subscription is expiring soon!\\\",\\n    description: \\\"2 hours ago\\\",\\n  },\\n]\\n\\ntype CardProps = React.ComponentProps<typeof Card>\\n\\nexport default function CardDemo({ className, ...props }: CardProps) {\\n  return (\\n    <Card className={cn(\\\"w-[380px]\\\", className)} {...props}>\\n      <CardHeader>\\n        <CardTitle>Notifications</CardTitle>\\n        <CardDescription>You have 3 unread messages.</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"grid gap-4\\\">\\n        <div className=\\\" flex items-center space-x-4 rounded-md border p-4\\\">\\n          <BellRing />\\n          <div className=\\\"flex-1 space-y-1\\\">\\n            <p className=\\\"text-sm font-medium leading-none\\\">\\n              Push Notifications\\n            </p>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Send notifications to device.\\n            </p>\\n          </div>\\n          <Switch />\\n        </div>\\n        <div>\\n          {notifications.map((notification, index) => (\\n            <div\\n              key={index}\\n              className=\\\"mb-4 grid grid-cols-[25px_1fr] items-start pb-4 last:mb-0 last:pb-0\\\"\\n            >\\n              <span className=\\\"flex h-2 w-2 translate-y-1 rounded-full bg-sky-500\\\" />\\n              <div className=\\\"space-y-1\\\">\\n                <p className=\\\"text-sm font-medium leading-none\\\">\\n                  {notification.title}\\n                </p>\\n                <p className=\\\"text-sm text-muted-foreground\\\">\\n                  {notification.description}\\n                </p>\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </CardContent>\\n      <CardFooter>\\n        <Button className=\\\"w-full\\\">\\n          <Check /> Mark all as read\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/card-with-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-with-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/card-with-form.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\n\\nexport default function CardWithForm() {\\n  return (\\n    <Card className=\\\"w-[350px]\\\">\\n      <CardHeader>\\n        <CardTitle>Create project</CardTitle>\\n        <CardDescription>Deploy your new project in one-click.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <div className=\\\"grid w-full items-center gap-4\\\">\\n            <div className=\\\"flex flex-col space-y-1.5\\\">\\n              <Label htmlFor=\\\"name\\\">Name</Label>\\n              <Input id=\\\"name\\\" placeholder=\\\"Name of your project\\\" />\\n            </div>\\n            <div className=\\\"flex flex-col space-y-1.5\\\">\\n              <Label htmlFor=\\\"framework\\\">Framework</Label>\\n              <Select>\\n                <SelectTrigger id=\\\"framework\\\">\\n                  <SelectValue placeholder=\\\"Select\\\" />\\n                </SelectTrigger>\\n                <SelectContent position=\\\"popper\\\">\\n                  <SelectItem value=\\\"next\\\">Next.js</SelectItem>\\n                  <SelectItem value=\\\"sveltekit\\\">SvelteKit</SelectItem>\\n                  <SelectItem value=\\\"astro\\\">Astro</SelectItem>\\n                  <SelectItem value=\\\"nuxt\\\">Nuxt.js</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </form>\\n      </CardContent>\\n      <CardFooter className=\\\"flex justify-between\\\">\\n        <Button variant=\\\"outline\\\">Cancel</Button>\\n        <Button>Deploy</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Card = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\n      \\\"rounded-lg border bg-card text-card-foreground shadow-sm\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nCard.displayName = \\\"Card\\\"\\n\\nconst CardHeader = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"flex flex-col space-y-1.5 p-6\\\", className)}\\n    {...props}\\n  />\\n))\\nCardHeader.displayName = \\\"CardHeader\\\"\\n\\nconst CardTitle = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\n      \\\"text-2xl font-semibold leading-none tracking-tight\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nCardTitle.displayName = \\\"CardTitle\\\"\\n\\nconst CardDescription = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nCardDescription.displayName = \\\"CardDescription\\\"\\n\\nconst CardContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div ref={ref} className={cn(\\\"p-6 pt-0\\\", className)} {...props} />\\n))\\nCardContent.displayName = \\\"CardContent\\\"\\n\\nconst CardFooter = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"flex items-center p-6 pt-0\\\", className)}\\n    {...props}\\n  />\\n))\\nCardFooter.displayName = \\\"CardFooter\\\"\\n\\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/carousel-api.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-api\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-api.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n  type CarouselApi,\\n} from \\\"@/registry/default/ui/carousel\\\"\\n\\nexport default function CarouselDApiDemo() {\\n  const [api, setApi] = React.useState<CarouselApi>()\\n  const [current, setCurrent] = React.useState(0)\\n  const [count, setCount] = React.useState(0)\\n\\n  React.useEffect(() => {\\n    if (!api) {\\n      return\\n    }\\n\\n    setCount(api.scrollSnapList().length)\\n    setCurrent(api.selectedScrollSnap() + 1)\\n\\n    api.on(\\\"select\\\", () => {\\n      setCurrent(api.selectedScrollSnap() + 1)\\n    })\\n  }, [api])\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-xs\\\">\\n      <Carousel setApi={setApi} className=\\\"w-full max-w-xs\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious />\\n        <CarouselNext />\\n      </Carousel>\\n      <div className=\\\"py-2 text-center text-sm text-muted-foreground\\\">\\n        Slide {current} of {count}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/carousel-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/default/ui/carousel\\\"\\n\\nexport default function CarouselDemo() {\\n  return (\\n    <Carousel className=\\\"w-full max-w-xs\\\">\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index}>\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/carousel-orientation.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-orientation\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-orientation.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/default/ui/carousel\\\"\\n\\nexport default function CarouselOrientation() {\\n  return (\\n    <Carousel\\n      opts={{\\n        align: \\\"start\\\",\\n      }}\\n      orientation=\\\"vertical\\\"\\n      className=\\\"w-full max-w-xs\\\"\\n    >\\n      <CarouselContent className=\\\"-mt-1 h-[200px]\\\">\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"pt-1 md:basis-1/2\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex items-center justify-center p-6\\\">\\n                  <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/carousel-plugin.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-plugin\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-plugin.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Autoplay from \\\"embla-carousel-autoplay\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/default/ui/carousel\\\"\\n\\nexport default function CarouselPlugin() {\\n  const plugin = React.useRef(\\n    Autoplay({ delay: 2000, stopOnInteraction: true })\\n  )\\n\\n  return (\\n    <Carousel\\n      plugins={[plugin.current]}\\n      className=\\\"w-full max-w-xs\\\"\\n      onMouseEnter={plugin.current.stop}\\n      onMouseLeave={plugin.current.reset}\\n    >\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index}>\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/carousel-size.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-size\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-size.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/default/ui/carousel\\\"\\n\\nexport default function CarouselSize() {\\n  return (\\n    <Carousel\\n      opts={{\\n        align: \\\"start\\\",\\n      }}\\n      className=\\\"w-full max-w-sm\\\"\\n    >\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"md:basis-1/2 lg:basis-1/3\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/carousel-spacing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-spacing\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-spacing.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/default/ui/carousel\\\"\\n\\nexport default function CarouselSpacing() {\\n  return (\\n    <Carousel className=\\\"w-full max-w-sm\\\">\\n      <CarouselContent className=\\\"-ml-1\\\">\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2 lg:basis-1/3\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\nimport { ArrowLeft, ArrowRight } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nconst Carousel = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement> & CarouselProps\\n>(\\n  (\\n    {\\n      orientation = \\\"horizontal\\\",\\n      opts,\\n      setApi,\\n      plugins,\\n      className,\\n      children,\\n      ...props\\n    },\\n    ref\\n  ) => {\\n    const [carouselRef, api] = useEmblaCarousel(\\n      {\\n        ...opts,\\n        axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n      },\\n      plugins\\n    )\\n    const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n    const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n    const onSelect = React.useCallback((api: CarouselApi) => {\\n      if (!api) {\\n        return\\n      }\\n\\n      setCanScrollPrev(api.canScrollPrev())\\n      setCanScrollNext(api.canScrollNext())\\n    }, [])\\n\\n    const scrollPrev = React.useCallback(() => {\\n      api?.scrollPrev()\\n    }, [api])\\n\\n    const scrollNext = React.useCallback(() => {\\n      api?.scrollNext()\\n    }, [api])\\n\\n    const handleKeyDown = React.useCallback(\\n      (event: React.KeyboardEvent<HTMLDivElement>) => {\\n        if (event.key === \\\"ArrowLeft\\\") {\\n          event.preventDefault()\\n          scrollPrev()\\n        } else if (event.key === \\\"ArrowRight\\\") {\\n          event.preventDefault()\\n          scrollNext()\\n        }\\n      },\\n      [scrollPrev, scrollNext]\\n    )\\n\\n    React.useEffect(() => {\\n      if (!api || !setApi) {\\n        return\\n      }\\n\\n      setApi(api)\\n    }, [api, setApi])\\n\\n    React.useEffect(() => {\\n      if (!api) {\\n        return\\n      }\\n\\n      onSelect(api)\\n      api.on(\\\"reInit\\\", onSelect)\\n      api.on(\\\"select\\\", onSelect)\\n\\n      return () => {\\n        api?.off(\\\"select\\\", onSelect)\\n      }\\n    }, [api, onSelect])\\n\\n    return (\\n      <CarouselContext.Provider\\n        value={{\\n          carouselRef,\\n          api: api,\\n          opts,\\n          orientation:\\n            orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n          scrollPrev,\\n          scrollNext,\\n          canScrollPrev,\\n          canScrollNext,\\n        }}\\n      >\\n        <div\\n          ref={ref}\\n          onKeyDownCapture={handleKeyDown}\\n          className={cn(\\\"relative\\\", className)}\\n          role=\\\"region\\\"\\n          aria-roledescription=\\\"carousel\\\"\\n          {...props}\\n        >\\n          {children}\\n        </div>\\n      </CarouselContext.Provider>\\n    )\\n  }\\n)\\nCarousel.displayName = \\\"Carousel\\\"\\n\\nconst CarouselContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div ref={carouselRef} className=\\\"overflow-hidden\\\">\\n      <div\\n        ref={ref}\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n})\\nCarouselContent.displayName = \\\"CarouselContent\\\"\\n\\nconst CarouselItem = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={ref}\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nCarouselItem.displayName = \\\"CarouselItem\\\"\\n\\nconst CarouselPrevious = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<typeof Button>\\n>(({ className, variant = \\\"outline\\\", size = \\\"icon\\\", ...props }, ref) => {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute  h-8 w-8 rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"-left-12 top-1/2 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <ArrowLeft className=\\\"h-4 w-4\\\" />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n})\\nCarouselPrevious.displayName = \\\"CarouselPrevious\\\"\\n\\nconst CarouselNext = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<typeof Button>\\n>(({ className, variant = \\\"outline\\\", size = \\\"icon\\\", ...props }, ref) => {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute h-8 w-8 rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"-right-12 top-1/2 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <ArrowRight className=\\\"h-4 w-4\\\" />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n})\\nCarouselNext.displayName = \\\"CarouselNext\\\"\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-axes.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-axes\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-axes.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Axes</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: -20,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <YAxis\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickCount={3}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-gradient.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-gradient\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-gradient.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Gradient</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-icons\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingDown, TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n    icon: TrendingDown,\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n    icon: TrendingUp,\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Icons</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-interactive\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"flex items-center gap-2 space-y-0 border-b py-5 sm:flex-row\\\">\\n        <div className=\\\"grid flex-1 gap-1 text-center sm:text-left\\\">\\n          <CardTitle>Area Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <Select value={timeRange} onValueChange={setTimeRange}>\\n          <SelectTrigger\\n            className=\\\"w-[160px] rounded-lg sm:ml-auto\\\"\\n            aria-label=\\\"Select a value\\\"\\n          >\\n            <SelectValue placeholder=\\\"Last 3 months\\\" />\\n          </SelectTrigger>\\n          <SelectContent className=\\\"rounded-xl\\\">\\n            <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n              Last 3 months\\n            </SelectItem>\\n            <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n              Last 30 days\\n            </SelectItem>\\n            <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n              Last 7 days\\n            </SelectItem>\\n          </SelectContent>\\n        </Select>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-legend\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Legend</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-linear.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-linear\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-linear.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Linear</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dot\\\" hideLabel />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"linear\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-stacked-expand.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-stacked-expand\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-stacked-expand.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80, other: 45 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200, other: 100 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120, other: 150 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190, other: 50 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130, other: 100 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140, other: 160 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Stacked Expanded</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n              top: 12,\\n            }}\\n            stackOffset=\\\"expand\\\"\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"other\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-other)\\\"\\n              fillOpacity={0.1}\\n              stroke=\\\"var(--color-other)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-stacked\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Stacked</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-area-step.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-step\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-step.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Activity, TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n    icon: Activity,\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Step</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"step\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-active.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-active\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-active.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, Rectangle, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 187, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 275, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Active</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"browser\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) =>\\n                chartConfig[value as keyof typeof chartConfig]?.label\\n              }\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar\\n              dataKey=\\\"visitors\\\"\\n              strokeWidth={2}\\n              radius={8}\\n              activeIndex={2}\\n              activeBar={({ ...props }) => {\\n                return (\\n                  <Rectangle\\n                    {...props}\\n                    fillOpacity={0.8}\\n                    stroke={props.payload.fill}\\n                    strokeDasharray={4}\\n                    strokeDashoffset={4}\\n                  />\\n                )\\n              }}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={8} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-demo-axis.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-axis\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo-axis.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/default/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-demo-grid.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-grid\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo-grid.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid } from \\\"recharts\\\"\\n\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/default/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-demo-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-legend\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <ChartTooltip content={<ChartTooltipContent />} />\\n        <ChartLegend content={<ChartLegendContent />} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-demo-tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-tooltip\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo-tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <ChartTooltip content={<ChartTooltipContent />} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart } from \\\"recharts\\\"\\n\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/default/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-horizontal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-horizontal\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-horizontal.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Horizontal</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              left: -20,\\n            }}\\n          >\\n            <XAxis type=\\\"number\\\" dataKey=\\\"desktop\\\" hide />\\n            <YAxis\\n              dataKey=\\\"month\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={5} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-interactive\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  views: {\\n    label: \\\"Page Views\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const [activeChart, setActiveChart] =\\n    React.useState<keyof typeof chartConfig>(\\\"desktop\\\")\\n\\n  const total = React.useMemo(\\n    () => ({\\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\\n    }),\\n    []\\n  )\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"flex flex-col items-stretch space-y-0 border-b p-0 sm:flex-row\\\">\\n        <div className=\\\"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6\\\">\\n          <CardTitle>Bar Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <div className=\\\"flex\\\">\\n          {[\\\"desktop\\\", \\\"mobile\\\"].map((key) => {\\n            const chart = key as keyof typeof chartConfig\\n            return (\\n              <button\\n                key={chart}\\n                data-active={activeChart === chart}\\n                className=\\\"relative z-30 flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-l sm:border-t-0 sm:px-8 sm:py-6\\\"\\n                onClick={() => setActiveChart(chart)}\\n              >\\n                <span className=\\\"text-xs text-muted-foreground\\\">\\n                  {chartConfig[chart].label}\\n                </span>\\n                <span className=\\\"text-lg font-bold leading-none sm:text-3xl\\\">\\n                  {total[key as keyof typeof total].toLocaleString()}\\n                </span>\\n              </button>\\n            )\\n          })}\\n        </div>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 sm:p-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"views\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Bar dataKey={activeChart} fill={`var(--color-${activeChart})`} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, LabelList, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  label: {\\n    color: \\\"hsl(var(--background))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              right: 16,\\n            }}\\n          >\\n            <CartesianGrid horizontal={false} />\\n            <YAxis\\n              dataKey=\\\"month\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n              hide\\n            />\\n            <XAxis dataKey=\\\"desktop\\\" type=\\\"number\\\" hide />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Bar\\n              dataKey=\\\"desktop\\\"\\n              layout=\\\"vertical\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              radius={4}\\n            >\\n              <LabelList\\n                dataKey=\\\"month\\\"\\n                position=\\\"insideLeft\\\"\\n                offset={8}\\n                className=\\\"fill-[--color-label]\\\"\\n                fontSize={12}\\n              />\\n              <LabelList\\n                dataKey=\\\"desktop\\\"\\n                position=\\\"right\\\"\\n                offset={8}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-label\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, LabelList, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 20,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={8}>\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-mixed.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-mixed\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-mixed.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Mixed</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              left: 0,\\n            }}\\n          >\\n            <YAxis\\n              dataKey=\\\"browser\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) =>\\n                chartConfig[value as keyof typeof chartConfig]?.label\\n              }\\n            />\\n            <XAxis dataKey=\\\"visitors\\\" type=\\\"number\\\" hide />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"visitors\\\" layout=\\\"vertical\\\" radius={5} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-multiple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Multiple</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n            <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-negative.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-negative\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-negative.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, Cell, LabelList } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", visitors: 186 },\\n  { month: \\\"February\\\", visitors: 205 },\\n  { month: \\\"March\\\", visitors: -207 },\\n  { month: \\\"April\\\", visitors: 173 },\\n  { month: \\\"May\\\", visitors: -209 },\\n  { month: \\\"June\\\", visitors: 214 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Negative</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel hideIndicator />}\\n            />\\n            <Bar dataKey=\\\"visitors\\\">\\n              <LabelList position=\\\"top\\\" dataKey=\\\"month\\\" fillOpacity={1} />\\n              {chartData.map((item) => (\\n                <Cell\\n                  key={item.month}\\n                  fill={\\n                    item.visitors > 0\\n                      ? \\\"hsl(var(--chart-1))\\\"\\n                      : \\\"hsl(var(--chart-2))\\\"\\n                  }\\n                />\\n              ))}\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-bar-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-stacked\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Stacked + Legend</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip content={<ChartTooltipContent hideLabel />} />\\n            <ChartLegend content={<ChartLegendContent />} />\\n            <Bar\\n              dataKey=\\\"desktop\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"mobile\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-dots-colors.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots-colors\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-dots-colors.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Dot, Line, LineChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Dots Colors</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 24,\\n              left: 24,\\n              right: 24,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  indicator=\\\"line\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  hideLabel\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey=\\\"visitors\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-visitors)\\\"\\n              strokeWidth={2}\\n              dot={({ payload, ...props }) => {\\n                return (\\n                  <Dot\\n                    key={payload.browser}\\n                    r={5}\\n                    cx={props.cx}\\n                    cy={props.cy}\\n                    fill={payload.fill}\\n                    stroke={payload.fill}\\n                  />\\n                )\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-dots-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-dots-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { GitCommitVertical, TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Custom Dots</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={({ cx, cy, payload }) => {\\n                const r = 24\\n                return (\\n                  <GitCommitVertical\\n                    key={payload.month}\\n                    x={cx - r / 2}\\n                    y={cy - r / 2}\\n                    width={r}\\n                    height={r}\\n                    fill=\\\"hsl(var(--background))\\\"\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                  />\\n                )\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-dots.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-dots.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Dots</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-desktop)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-interactive\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  views: {\\n    label: \\\"Page Views\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const [activeChart, setActiveChart] =\\n    React.useState<keyof typeof chartConfig>(\\\"desktop\\\")\\n\\n  const total = React.useMemo(\\n    () => ({\\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\\n    }),\\n    []\\n  )\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"flex flex-col items-stretch space-y-0 border-b p-0 sm:flex-row\\\">\\n        <div className=\\\"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6\\\">\\n          <CardTitle>Line Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <div className=\\\"flex\\\">\\n          {[\\\"desktop\\\", \\\"mobile\\\"].map((key) => {\\n            const chart = key as keyof typeof chartConfig\\n            return (\\n              <button\\n                key={chart}\\n                data-active={activeChart === chart}\\n                className=\\\"flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-l sm:border-t-0 sm:px-8 sm:py-6\\\"\\n                onClick={() => setActiveChart(chart)}\\n              >\\n                <span className=\\\"text-xs text-muted-foreground\\\">\\n                  {chartConfig[chart].label}\\n                </span>\\n                <span className=\\\"text-lg font-bold leading-none sm:text-3xl\\\">\\n                  {total[key as keyof typeof total].toLocaleString()}\\n                </span>\\n              </button>\\n            )\\n          })}\\n        </div>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 sm:p-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"views\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey={activeChart}\\n              type=\\\"monotone\\\"\\n              stroke={`var(--color-${activeChart})`}\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, LabelList, Line, LineChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 24,\\n              left: 24,\\n              right: 24,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  indicator=\\\"line\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  hideLabel\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey=\\\"visitors\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-visitors)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-visitors)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            >\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n                dataKey=\\\"browser\\\"\\n                formatter={(value: keyof typeof chartConfig) =>\\n                  chartConfig[value]?.label\\n                }\\n              />\\n            </Line>\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-label\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, LabelList, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 20,\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-desktop)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            >\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Line>\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-linear.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-linear\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-linear.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Linear</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"linear\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-multiple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Multiple</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"monotone\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n            <Line\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"monotone\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              Showing total visitors for the last 6 months\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-line-step.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-step\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-step.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Step</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"step\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-donut-active.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut-active\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-donut-active.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart, Sector } from \\\"recharts\\\"\\nimport { PieSectorDataItem } from \\\"recharts/types/polar/Pie\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut Active</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n              activeIndex={0}\\n              activeShape={({\\n                outerRadius = 0,\\n                ...props\\n              }: PieSectorDataItem) => (\\n                <Sector {...props} outerRadius={outerRadius + 10} />\\n              )}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-donut-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut-text\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-donut-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const totalVisitors = React.useMemo(() => {\\n    return chartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n            >\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-3xl font-bold\\\"\\n                        >\\n                          {totalVisitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-donut.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-donut.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-interactive\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label, Pie, PieChart, Sector } from \\\"recharts\\\"\\nimport { PieSectorDataItem } from \\\"recharts/types/polar/Pie\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartStyle,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\nconst desktopData = [\\n  { month: \\\"january\\\", desktop: 186, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", desktop: 305, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", desktop: 237, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", desktop: 173, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", desktop: 209, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n  },\\n  january: {\\n    label: \\\"January\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  february: {\\n    label: \\\"February\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  march: {\\n    label: \\\"March\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  april: {\\n    label: \\\"April\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  may: {\\n    label: \\\"May\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const id = \\\"pie-interactive\\\"\\n  const [activeMonth, setActiveMonth] = React.useState(desktopData[0].month)\\n\\n  const activeIndex = React.useMemo(\\n    () => desktopData.findIndex((item) => item.month === activeMonth),\\n    [activeMonth]\\n  )\\n  const months = React.useMemo(() => desktopData.map((item) => item.month), [])\\n\\n  return (\\n    <Card data-chart={id} className=\\\"flex flex-col\\\">\\n      <ChartStyle id={id} config={chartConfig} />\\n      <CardHeader className=\\\"flex-row items-start space-y-0 pb-0\\\">\\n        <div className=\\\"grid gap-1\\\">\\n          <CardTitle>Pie Chart - Interactive</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </div>\\n        <Select value={activeMonth} onValueChange={setActiveMonth}>\\n          <SelectTrigger\\n            className=\\\"ml-auto h-7 w-[130px] rounded-lg pl-2.5\\\"\\n            aria-label=\\\"Select a value\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select month\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"end\\\" className=\\\"rounded-xl\\\">\\n            {months.map((key) => {\\n              const config = chartConfig[key as keyof typeof chartConfig]\\n\\n              if (!config) {\\n                return null\\n              }\\n\\n              return (\\n                <SelectItem\\n                  key={key}\\n                  value={key}\\n                  className=\\\"rounded-lg [&_span]:flex\\\"\\n                >\\n                  <div className=\\\"flex items-center gap-2 text-xs\\\">\\n                    <span\\n                      className=\\\"flex h-3 w-3 shrink-0 rounded-sm\\\"\\n                      style={{\\n                        backgroundColor: `var(--color-${key})`,\\n                      }}\\n                    />\\n                    {config?.label}\\n                  </div>\\n                </SelectItem>\\n              )\\n            })}\\n          </SelectContent>\\n        </Select>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-1 justify-center pb-0\\\">\\n        <ChartContainer\\n          id={id}\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square w-full max-w-[300px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={desktopData}\\n              dataKey=\\\"desktop\\\"\\n              nameKey=\\\"month\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n              activeIndex={activeIndex}\\n              activeShape={({\\n                outerRadius = 0,\\n                ...props\\n              }: PieSectorDataItem) => (\\n                <g>\\n                  <Sector {...props} outerRadius={outerRadius + 10} />\\n                  <Sector\\n                    {...props}\\n                    outerRadius={outerRadius + 25}\\n                    innerRadius={outerRadius + 12}\\n                  />\\n                </g>\\n              )}\\n            >\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-3xl font-bold\\\"\\n                        >\\n                          {desktopData[activeIndex].desktop.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] px-0\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={<ChartTooltipContent nameKey=\\\"visitors\\\" hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              labelLine={false}\\n              label={({ payload, ...props }) => {\\n                return (\\n                  <text\\n                    cx={props.cx}\\n                    cy={props.cy}\\n                    x={props.x}\\n                    y={props.y}\\n                    textAnchor={props.textAnchor}\\n                    dominantBaseline={props.dominantBaseline}\\n                    fill=\\\"hsla(var(--foreground))\\\"\\n                  >\\n                    {payload.visitors}\\n                  </text>\\n                )\\n              }}\\n              nameKey=\\\"browser\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-label-list.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label-list\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-label-list.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { LabelList, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Label List</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] [&_.recharts-text]:fill-background\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={<ChartTooltipContent nameKey=\\\"visitors\\\" hideLabel />}\\n            />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\">\\n              <LabelList\\n                dataKey=\\\"browser\\\"\\n                className=\\\"fill-background\\\"\\n                stroke=\\\"none\\\"\\n                fontSize={12}\\n                formatter={(value: keyof typeof chartConfig) =>\\n                  chartConfig[value]?.label\\n                }\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] pb-0 [&_.recharts-pie-label-text]:fill-foreground\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip content={<ChartTooltipContent hideLabel />} />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" label nameKey=\\\"browser\\\" />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-legend\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Legend</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[300px]\\\"\\n        >\\n          <PieChart>\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" />\\n            <ChartLegend\\n              content={<ChartLegendContent nameKey=\\\"browser\\\" />}\\n              className=\\\"-translate-y-2 flex-wrap gap-2 [&>*]:basis-1/4 [&>*]:justify-center\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-separator-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-separator-none\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-separator-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Separator None</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              stroke=\\\"0\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-simple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" nameKey=\\\"browser\\\" />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-pie-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-stacked\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst desktopData = [\\n  { month: \\\"january\\\", desktop: 186, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", desktop: 305, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", desktop: 237, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", desktop: 173, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", desktop: 209, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst mobileData = [\\n  { month: \\\"january\\\", mobile: 80, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", mobile: 200, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", mobile: 120, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", mobile: 190, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", mobile: 130, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n  },\\n  january: {\\n    label: \\\"January\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  february: {\\n    label: \\\"February\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  march: {\\n    label: \\\"March\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  april: {\\n    label: \\\"April\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  may: {\\n    label: \\\"May\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Stacked</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  labelKey=\\\"visitors\\\"\\n                  nameKey=\\\"month\\\"\\n                  indicator=\\\"line\\\"\\n                  labelFormatter={(_, payload) => {\\n                    return chartConfig[\\n                      payload?.[0].dataKey as keyof typeof chartConfig\\n                    ].label\\n                  }}\\n                />\\n              }\\n            />\\n            <Pie data={desktopData} dataKey=\\\"desktop\\\" outerRadius={60} />\\n            <Pie\\n              data={mobileData}\\n              dataKey=\\\"mobile\\\"\\n              innerRadius={70}\\n              outerRadius={90}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-dots.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-dots\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-dots.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center\\\">\\n        <CardTitle>Radar Chart - Dots</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-grid-circle-fill.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle-fill\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-circle-fill.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 285 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 264 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle Filled</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarGrid\\n              className=\\\"fill-[--color-desktop] opacity-20\\\"\\n              gridType=\\\"circle\\\"\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.5}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-grid-circle-no-lines.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle-no-lines\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-circle-no-lines.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle - No lines</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" radialLines={false} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-grid-circle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-circle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-grid-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Custom</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid radialLines={false} polarRadius={[90]} strokeWidth={1} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-grid-fill.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-fill\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-fill.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 285 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 264 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Filled</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid className=\\\"fill-[--color-desktop] opacity-20\\\" />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.5}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-grid-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-none\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid None</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-icons\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowDownFromLine, ArrowUpFromLine, TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n    icon: ArrowDownFromLine,\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n    icon: ArrowUpFromLine,\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Icons</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: -40,\\n              bottom: -10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <ChartLegend className=\\\"mt-8\\\" content={<ChartLegendContent />} />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 pt-4 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Custom Label</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: 10,\\n              right: 10,\\n              bottom: 10,\\n              left: 10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis\\n              dataKey=\\\"month\\\"\\n              tick={({ x, y, textAnchor, value, index, ...props }) => {\\n                const data = chartData[index]\\n\\n                return (\\n                  <text\\n                    x={x}\\n                    y={index === 0 ? y - 10 : y}\\n                    textAnchor={textAnchor}\\n                    fontSize={13}\\n                    fontWeight={500}\\n                    {...props}\\n                  >\\n                    <tspan>{data.desktop}</tspan>\\n                    <tspan className=\\\"fill-muted-foreground\\\">/</tspan>\\n                    <tspan>{data.mobile}</tspan>\\n                    <tspan\\n                      x={x}\\n                      dy={\\\"1rem\\\"}\\n                      fontSize={12}\\n                      className=\\\"fill-muted-foreground\\\"\\n                    >\\n                      {data.month}\\n                    </tspan>\\n                  </text>\\n                )\\n              }}\\n            />\\n\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-legend\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Legend</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: -40,\\n              bottom: -10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <ChartLegend className=\\\"mt-8\\\" content={<ChartLegendContent />} />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 pt-4 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-lines-only.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-lines-only\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-lines-only.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 160 },\\n  { month: \\\"February\\\", desktop: 185, mobile: 170 },\\n  { month: \\\"March\\\", desktop: 207, mobile: 180 },\\n  { month: \\\"April\\\", desktop: 173, mobile: 160 },\\n  { month: \\\"May\\\", desktop: 160, mobile: 190 },\\n  { month: \\\"June\\\", desktop: 174, mobile: 204 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Lines Only</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid radialLines={false} />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n            />\\n            <Radar\\n              dataKey=\\\"mobile\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              strokeWidth={2}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-multiple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Multiple</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radar-radius.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-radius\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-radius.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Radius Axis</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent indicator=\\\"line\\\" labelKey=\\\"month\\\" />\\n              }\\n            />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <PolarRadiusAxis\\n              angle={60}\\n              stroke=\\\"hsla(var(--foreground))\\\"\\n              orientation=\\\"middle\\\"\\n              axisLine={false}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radial-grid.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-grid\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-grid.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarGrid, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Grid</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart data={chartData} innerRadius={30} outerRadius={100}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" />\\n            <RadialBar dataKey=\\\"visitors\\\" />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radial-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-label\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { LabelList, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            startAngle={-90}\\n            endAngle={380}\\n            innerRadius={30}\\n            outerRadius={110}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background>\\n              <LabelList\\n                position=\\\"insideStart\\\"\\n                dataKey=\\\"browser\\\"\\n                className=\\\"fill-white capitalize mix-blend-luminosity\\\"\\n                fontSize={11}\\n              />\\n            </RadialBar>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radial-shape.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-shape\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-shape.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  Label,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  RadialBar,\\n  RadialBarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Shape</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            endAngle={100}\\n            innerRadius={80}\\n            outerRadius={140}\\n          >\\n            <PolarGrid\\n              gridType=\\\"circle\\\"\\n              radialLines={false}\\n              stroke=\\\"none\\\"\\n              className=\\\"first:fill-muted last:fill-background\\\"\\n              polarRadius={[86, 74]}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-4xl font-bold\\\"\\n                        >\\n                          {chartData[0].visitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radial-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-simple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart data={chartData} innerRadius={30} outerRadius={110}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radial-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-stacked\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, PolarRadiusAxis, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [{ month: \\\"january\\\", desktop: 1260, mobile: 570 }]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const totalVisitors = chartData[0].desktop + chartData[0].mobile\\n\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Stacked</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-1 items-center pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square w-full max-w-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            endAngle={180}\\n            innerRadius={80}\\n            outerRadius={130}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text x={viewBox.cx} y={viewBox.cy} textAnchor=\\\"middle\\\">\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) - 16}\\n                          className=\\\"fill-foreground text-2xl font-bold\\\"\\n                        >\\n                          {totalVisitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 4}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n            <RadialBar\\n              dataKey=\\\"desktop\\\"\\n              stackId=\\\"a\\\"\\n              cornerRadius={5}\\n              fill=\\\"var(--color-desktop)\\\"\\n              className=\\\"stroke-transparent stroke-2\\\"\\n            />\\n            <RadialBar\\n              dataKey=\\\"mobile\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n              cornerRadius={5}\\n              className=\\\"stroke-transparent stroke-2\\\"\\n            />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-radial-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-text\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  Label,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  RadialBar,\\n  RadialBarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Text</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            startAngle={0}\\n            endAngle={250}\\n            innerRadius={80}\\n            outerRadius={110}\\n          >\\n            <PolarGrid\\n              gridType=\\\"circle\\\"\\n              radialLines={false}\\n              stroke=\\\"none\\\"\\n              className=\\\"first:fill-muted last:fill-background\\\"\\n              polarRadius={[86, 74]}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background cornerRadius={10} />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-4xl font-bold\\\"\\n                        >\\n                          {chartData[0].visitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-advanced.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-advanced\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-advanced.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Advanced</CardTitle>\\n        <CardDescription>\\n          Tooltip with custom formatter and total.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  hideLabel\\n                  className=\\\"w-[180px]\\\"\\n                  formatter={(value, name, item, index) => (\\n                    <>\\n                      <div\\n                        className=\\\"h-2.5 w-2.5 shrink-0 rounded-[2px] bg-[--color-bg]\\\"\\n                        style={\\n                          {\\n                            \\\"--color-bg\\\": `var(--color-${name})`,\\n                          } as React.CSSProperties\\n                        }\\n                      />\\n                      {chartConfig[name as keyof typeof chartConfig]?.label ||\\n                        name}\\n                      <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground\\\">\\n                        {value}\\n                        <span className=\\\"font-normal text-muted-foreground\\\">\\n                          kcal\\n                        </span>\\n                      </div>\\n                      {/* Add this after the last item */}\\n                      {index === 1 && (\\n                        <div className=\\\"mt-1.5 flex basis-full items-center border-t pt-1.5 text-xs font-medium text-foreground\\\">\\n                          Total\\n                          <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground\\\">\\n                            {item.payload.running + item.payload.swimming}\\n                            <span className=\\\"font-normal text-muted-foreground\\\">\\n                              kcal\\n                            </span>\\n                          </div>\\n                        </div>\\n                      )}\\n                    </>\\n                  )}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Default</CardTitle>\\n        <CardDescription>\\n          Default tooltip with ChartTooltipContent.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-tooltip-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nexport default function Component() {\\n  return (\\n    <div className=\\\"grid aspect-video w-full max-w-md justify-center text-foreground md:grid-cols-2 [&>div]:relative [&>div]:flex [&>div]:h-[137px] [&>div]:w-[224px] [&>div]:items-center [&>div]:justify-center [&>div]:p-4\\\">\\n      <div>\\n        <div className=\\\"absolute left-[-35px] top-[45px] z-10 text-sm font-medium\\\">\\n          Label\\n        </div>\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          viewBox=\\\"0 0 193 40\\\"\\n          width=\\\"50\\\"\\n          height=\\\"12\\\"\\n          fill=\\\"none\\\"\\n          className=\\\"absolute left-[5px] top-[50px] z-10\\\"\\n        >\\n          <g clip-path=\\\"url(#a)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M173.928 21.13C115.811 44.938 58.751 45.773 0 26.141c4.227-4.386 7.82-2.715 10.567-1.88 21.133 5.64 42.9 6.266 64.457 7.101 31.066 1.253 60.441-5.848 89.183-17.335 1.268-.418 2.325-1.253 4.861-2.924-14.582-2.924-29.165 2.089-41.845-3.76.212-.835.212-1.879.423-2.714 9.51-.627 19.231-1.253 28.742-2.089 9.51-.835 18.808-1.88 28.318-2.506 6.974-.418 9.933 2.924 7.397 9.19-3.17 8.145-7.608 15.664-11.623 23.391-.423.836-1.057 1.88-1.902 2.298-2.325.835-4.65 1.044-7.186 1.67-.422-2.088-1.479-4.386-1.268-6.265.423-2.506 1.902-4.595 3.804-9.19Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"a\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h193v40H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n        <TooltipDemo\\n          label=\\\"Page Views\\\"\\n          payload={[\\n            { name: \\\"Desktop\\\", value: 186, fill: \\\"hsl(var(--chart-1))\\\" },\\n            { name: \\\"Mobile\\\", value: 80, fill: \\\"hsl(var(--chart-2))\\\" },\\n          ]}\\n          className=\\\"w-[8rem]\\\"\\n        />\\n      </div>\\n      <div className=\\\"items-end\\\">\\n        <div className=\\\"absolute left-[122px] top-[0px] z-10 text-sm font-medium\\\">\\n          Name\\n        </div>\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          width=\\\"35\\\"\\n          height=\\\"42\\\"\\n          fill=\\\"none\\\"\\n          viewBox=\\\"0 0 122 148\\\"\\n          className=\\\"absolute left-[85px] top-[10px] z-10 -scale-x-100\\\"\\n        >\\n          <g clip-path=\\\"url(#ab)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M0 2.65c6.15-4.024 12.299-2.753 17.812-.847a115.56 115.56 0 0 1 21.84 10.59C70.4 32.727 88.849 61.744 96.483 97.54c1.908 9.108 2.544 18.639 3.817 29.017 8.481-4.871 12.934-14.402 21.416-19.909 1.061 4.236-1.06 6.989-2.756 9.319-6.998 9.531-14.207 19.062-21.63 28.382-3.604 4.448-6.36 4.871-10.177 1.059-8.058-7.837-12.935-17.368-14.42-28.382 0-.424.636-1.059 1.485-2.118 9.118 2.33 6.997 13.979 14.843 18.215 3.393-14.614.848-28.593-2.969-42.149-4.029-14.19-9.33-27.746-17.812-39.82-8.27-11.86-18.66-21.392-30.11-30.287C26.93 11.758 14.207 6.039 0 2.65Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"ab\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h122v148H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n        <TooltipDemo\\n          label=\\\"Browser\\\"\\n          hideLabel\\n          payload={[\\n            { name: \\\"Chrome\\\", value: 1286, fill: \\\"hsl(var(--chart-3))\\\" },\\n            { name: \\\"Firefox\\\", value: 1000, fill: \\\"hsl(var(--chart-4))\\\" },\\n          ]}\\n          indicator=\\\"dashed\\\"\\n          className=\\\"w-[8rem]\\\"\\n        />\\n      </div>\\n      <div className=\\\"!hidden md:!flex\\\">\\n        <TooltipDemo\\n          label=\\\"Page Views\\\"\\n          payload={[\\n            { name: \\\"Desktop\\\", value: 12486, fill: \\\"hsl(var(--chart-3))\\\" },\\n          ]}\\n          className=\\\"w-[9rem]\\\"\\n          indicator=\\\"line\\\"\\n        />\\n      </div>\\n      <div className=\\\"!items-start !justify-start\\\">\\n        <div className=\\\"absolute left-[50px] top-[60px] z-10 text-sm font-medium\\\">\\n          Indicator\\n        </div>\\n        <TooltipDemo\\n          label=\\\"Browser\\\"\\n          hideLabel\\n          payload={[\\n            { name: \\\"Chrome\\\", value: 1286, fill: \\\"hsl(var(--chart-1))\\\" },\\n          ]}\\n          indicator=\\\"dot\\\"\\n          className=\\\"w-[8rem]\\\"\\n        />\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          width=\\\"15\\\"\\n          height=\\\"34\\\"\\n          fill=\\\"none\\\"\\n          viewBox=\\\"0 0 75 175\\\"\\n          className=\\\"absolute left-[30px] top-[38px] z-10 rotate-[-40deg]\\\"\\n        >\\n          <g clip-path=\\\"url(#abc)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M20.187 175c-4.439-2.109-7.186-2.531-8.032-4.008-3.17-5.484-6.763-10.968-8.454-17.084-5.073-16.242-4.439-32.694-1.057-49.146 5.707-28.053 18.388-52.942 34.24-76.565 1.692-2.531 3.171-5.063 4.862-7.805 0-.21-.211-.632-.634-1.265-4.65 1.265-9.511 2.53-14.161 3.585-2.537.422-5.496.422-8.032-.421-1.48-.422-3.593-2.742-3.593-4.219 0-1.898 1.48-4.218 2.747-5.906 1.057-1.054 2.96-1.265 4.65-1.687C35.406 7.315 48.088 3.729 60.98.776c10.99-2.53 14.584 1.055 13.95 11.812-.634 11.18-.846 22.358-1.268 33.326-.212 3.375-.846 6.96-1.268 10.757-8.878-4.007-8.878-4.007-12.048-38.177C47.03 33.259 38.153 49.289 29.91 65.741 21.667 82.193 16.17 99.49 13.212 117.84c-2.959 18.984.634 36.912 6.975 57.161Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"abc\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h75v175H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction TooltipDemo({\\n  indicator = \\\"dot\\\",\\n  label,\\n  payload,\\n  hideLabel,\\n  hideIndicator,\\n  className,\\n}: {\\n  label: string\\n  hideLabel?: boolean\\n  hideIndicator?: boolean\\n  indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n  payload: {\\n    name: string\\n    value: number\\n    fill: string\\n  }[]\\n  nameKey?: string\\n  labelKey?: string\\n} & React.ComponentProps<\\\"div\\\">) {\\n  const tooltipLabel = hideLabel ? null : (\\n    <div className=\\\"font-medium\\\">{label}</div>\\n  )\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl transition-all ease-in-out hover:-translate-y-0.5\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload.map((item, index) => {\\n          const indicatorColor = item.fill\\n\\n          return (\\n            <div\\n              key={index}\\n              className={cn(\\n                \\\"flex w-full items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                indicator === \\\"dot\\\" && \\\"items-center\\\"\\n              )}\\n            >\\n              <>\\n                {!hideIndicator && (\\n                  <div\\n                    className={cn(\\n                      \\\"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\\\",\\n                      {\\n                        \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                        \\\"w-1\\\": indicator === \\\"line\\\",\\n                        \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                          indicator === \\\"dashed\\\",\\n                        \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                      }\\n                    )}\\n                    style={\\n                      {\\n                        \\\"--color-bg\\\": indicatorColor,\\n                        \\\"--color-border\\\": indicatorColor,\\n                      } as React.CSSProperties\\n                    }\\n                  />\\n                )}\\n                <div\\n                  className={cn(\\n                    \\\"flex flex-1 justify-between leading-none\\\",\\n                    nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                  )}\\n                >\\n                  <div className=\\\"grid gap-1.5\\\">\\n                    {nestLabel ? tooltipLabel : null}\\n                    <span className=\\\"text-muted-foreground\\\">{item.name}</span>\\n                  </div>\\n                  <span className=\\\"font-mono font-medium tabular-nums text-foreground\\\">\\n                    {item.value.toLocaleString()}\\n                  </span>\\n                </div>\\n              </>\\n            </div>\\n          )\\n        })}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-formatter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-formatter\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-formatter.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Formatter</CardTitle>\\n        <CardDescription>Tooltip with custom formatter .</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  hideLabel\\n                  formatter={(value, name) => (\\n                    <div className=\\\"flex min-w-[130px] items-center text-xs text-muted-foreground\\\">\\n                      {chartConfig[name as keyof typeof chartConfig]?.label ||\\n                        name}\\n                      <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground\\\">\\n                        {value}\\n                        <span className=\\\"font-normal text-muted-foreground\\\">\\n                          kcal\\n                        </span>\\n                      </div>\\n                    </div>\\n                  )}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-icons\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Footprints, Waves } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n    icon: Footprints,\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n    icon: Waves,\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Icons</CardTitle>\\n        <CardDescription>Tooltip with icons.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideLabel />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-indicator-line.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-indicator-line\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-indicator-line.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Line Indicator</CardTitle>\\n        <CardDescription>Tooltip with line indicator.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-indicator-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-indicator-none\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-indicator-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - No Indicator</CardTitle>\\n        <CardDescription>Tooltip with no indicator.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideIndicator />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  activities: {\\n    label: \\\"Activities\\\",\\n  },\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Custom label</CardTitle>\\n        <CardDescription>\\n          Tooltip with custom label from chartConfig.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent labelKey=\\\"activities\\\" indicator=\\\"line\\\" />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-label-formatter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-formatter\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-label-formatter.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Label Formatter</CardTitle>\\n        <CardDescription>Tooltip with label formatter.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"numeric\\\",\\n                      month: \\\"long\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart-tooltip-label-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-none\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-label-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - No Label</CardTitle>\\n        <CardDescription>Tooltip with no label.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideIndicator hideLabel />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"recharts@2.15.4\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nconst ChartContainer = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & {\\n    config: ChartConfig\\n    children: React.ComponentProps<\\n      typeof RechartsPrimitive.ResponsiveContainer\\n    >[\\\"children\\\"]\\n  }\\n>(({ id, className, children, config, ...props }, ref) => {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-chart={chartId}\\n        ref={ref}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n})\\nChartContainer.displayName = \\\"Chart\\\"\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nconst ChartTooltipContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n    React.ComponentProps<\\\"div\\\"> & {\\n      hideLabel?: boolean\\n      hideIndicator?: boolean\\n      indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n      nameKey?: string\\n      labelKey?: string\\n    }\\n>(\\n  (\\n    {\\n      active,\\n      payload,\\n      className,\\n      indicator = \\\"dot\\\",\\n      hideLabel = false,\\n      hideIndicator = false,\\n      label,\\n      labelFormatter,\\n      labelClassName,\\n      formatter,\\n      color,\\n      nameKey,\\n      labelKey,\\n    },\\n    ref\\n  ) => {\\n    const { config } = useChart()\\n\\n    const tooltipLabel = React.useMemo(() => {\\n      if (hideLabel || !payload?.length) {\\n        return null\\n      }\\n\\n      const [item] = payload\\n      const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n      const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n      const value =\\n        !labelKey && typeof label === \\\"string\\\"\\n          ? config[label as keyof typeof config]?.label || label\\n          : itemConfig?.label\\n\\n      if (labelFormatter) {\\n        return (\\n          <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n            {labelFormatter(value, payload)}\\n          </div>\\n        )\\n      }\\n\\n      if (!value) {\\n        return null\\n      }\\n\\n      return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n    }, [\\n      label,\\n      labelFormatter,\\n      payload,\\n      hideLabel,\\n      labelClassName,\\n      config,\\n      labelKey,\\n    ])\\n\\n    if (!active || !payload?.length) {\\n      return null\\n    }\\n\\n    const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n    return (\\n      <div\\n        ref={ref}\\n        className={cn(\\n          \\\"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n          className\\n        )}\\n      >\\n        {!nestLabel ? tooltipLabel : null}\\n        <div className=\\\"grid gap-1.5\\\">\\n          {payload\\n            .filter((item) => item.type !== \\\"none\\\")\\n            .map((item, index) => {\\n              const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n              const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n              const indicatorColor = color || item.payload.fill || item.color\\n\\n              return (\\n                <div\\n                  key={item.dataKey}\\n                  className={cn(\\n                    \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                    indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                  )}\\n                >\\n                  {formatter && item?.value !== undefined && item.name ? (\\n                    formatter(item.value, item.name, item, index, item.payload)\\n                  ) : (\\n                    <>\\n                      {itemConfig?.icon ? (\\n                        <itemConfig.icon />\\n                      ) : (\\n                        !hideIndicator && (\\n                          <div\\n                            className={cn(\\n                              \\\"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\\\",\\n                              {\\n                                \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                                \\\"w-1\\\": indicator === \\\"line\\\",\\n                                \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                  indicator === \\\"dashed\\\",\\n                                \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                              }\\n                            )}\\n                            style={\\n                              {\\n                                \\\"--color-bg\\\": indicatorColor,\\n                                \\\"--color-border\\\": indicatorColor,\\n                              } as React.CSSProperties\\n                            }\\n                          />\\n                        )\\n                      )}\\n                      <div\\n                        className={cn(\\n                          \\\"flex flex-1 justify-between leading-none\\\",\\n                          nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                        )}\\n                      >\\n                        <div className=\\\"grid gap-1.5\\\">\\n                          {nestLabel ? tooltipLabel : null}\\n                          <span className=\\\"text-muted-foreground\\\">\\n                            {itemConfig?.label || item.name}\\n                          </span>\\n                        </div>\\n                        {item.value && (\\n                          <span className=\\\"font-mono font-medium tabular-nums text-foreground\\\">\\n                            {item.value.toLocaleString()}\\n                          </span>\\n                        )}\\n                      </div>\\n                    </>\\n                  )}\\n                </div>\\n              )\\n            })}\\n        </div>\\n      </div>\\n    )\\n  }\\n)\\nChartTooltipContent.displayName = \\\"ChartTooltip\\\"\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nconst ChartLegendContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> &\\n    Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n      hideIcon?: boolean\\n      nameKey?: string\\n    }\\n>(\\n  (\\n    { className, hideIcon = false, payload, verticalAlign = \\\"bottom\\\", nameKey },\\n    ref\\n  ) => {\\n    const { config } = useChart()\\n\\n    if (!payload?.length) {\\n      return null\\n    }\\n\\n    return (\\n      <div\\n        ref={ref}\\n        className={cn(\\n          \\\"flex items-center justify-center gap-4\\\",\\n          verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n          className\\n        )}\\n      >\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item) => {\\n            const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n            return (\\n              <div\\n                key={item.value}\\n                className={cn(\\n                  \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n                )}\\n              >\\n                {itemConfig?.icon && !hideIcon ? (\\n                  <itemConfig.icon />\\n                ) : (\\n                  <div\\n                    className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                    style={{\\n                      backgroundColor: item.color,\\n                    }}\\n                  />\\n                )}\\n                {itemConfig?.label}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    )\\n  }\\n)\\nChartLegendContent.displayName = \\\"ChartLegend\\\"\\n\\n// Helper to extract item config from a payload.\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/checkbox-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\n\\nexport default function CheckboxDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Checkbox id=\\\"terms\\\" />\\n      <label\\n        htmlFor=\\\"terms\\\"\\n        className=\\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n      >\\n        Accept terms and conditions\\n      </label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/checkbox-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-disabled.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\n\\nexport default function CheckboxDisabled() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Checkbox id=\\\"terms2\\\" disabled />\\n      <label\\n        htmlFor=\\\"terms2\\\"\\n        className=\\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n      >\\n        Accept terms and conditions\\n      </label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/checkbox-form-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-form-multiple\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-form-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\n\\nconst items = [\\n  {\\n    id: \\\"recents\\\",\\n    label: \\\"Recents\\\",\\n  },\\n  {\\n    id: \\\"home\\\",\\n    label: \\\"Home\\\",\\n  },\\n  {\\n    id: \\\"applications\\\",\\n    label: \\\"Applications\\\",\\n  },\\n  {\\n    id: \\\"desktop\\\",\\n    label: \\\"Desktop\\\",\\n  },\\n  {\\n    id: \\\"downloads\\\",\\n    label: \\\"Downloads\\\",\\n  },\\n  {\\n    id: \\\"documents\\\",\\n    label: \\\"Documents\\\",\\n  },\\n] as const\\n\\nconst FormSchema = z.object({\\n  items: z.array(z.string()).refine((value) => value.some((item) => item), {\\n    message: \\\"You have to select at least one item.\\\",\\n  }),\\n})\\n\\nexport default function CheckboxReactHookFormMultiple() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      items: [\\\"recents\\\", \\\"home\\\"],\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"items\\\"\\n          render={() => (\\n            <FormItem>\\n              <div className=\\\"mb-4\\\">\\n                <FormLabel className=\\\"text-base\\\">Sidebar</FormLabel>\\n                <FormDescription>\\n                  Select the items you want to display in the sidebar.\\n                </FormDescription>\\n              </div>\\n              {items.map((item) => (\\n                <FormField\\n                  key={item.id}\\n                  control={form.control}\\n                  name=\\\"items\\\"\\n                  render={({ field }) => {\\n                    return (\\n                      <FormItem\\n                        key={item.id}\\n                        className=\\\"flex flex-row items-start space-x-3 space-y-0\\\"\\n                      >\\n                        <FormControl>\\n                          <Checkbox\\n                            checked={field.value?.includes(item.id)}\\n                            onCheckedChange={(checked) => {\\n                              return checked\\n                                ? field.onChange([...field.value, item.id])\\n                                : field.onChange(\\n                                    field.value?.filter(\\n                                      (value) => value !== item.id\\n                                    )\\n                                  )\\n                            }}\\n                          />\\n                        </FormControl>\\n                        <FormLabel className=\\\"font-normal\\\">\\n                          {item.label}\\n                        </FormLabel>\\n                      </FormItem>\\n                    )\\n                  }}\\n                />\\n              ))}\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/checkbox-form-single.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-form-single\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-form-single.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport Link from \\\"next/link\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n} from \\\"@/registry/default/ui/form\\\"\\n\\nconst FormSchema = z.object({\\n  mobile: z.boolean().default(false).optional(),\\n})\\n\\nexport default function CheckboxReactHookFormSingle() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      mobile: true,\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"mobile\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-row items-start space-x-3 space-y-0 rounded-md border p-4\\\">\\n              <FormControl>\\n                <Checkbox\\n                  checked={field.value}\\n                  onCheckedChange={field.onChange}\\n                />\\n              </FormControl>\\n              <div className=\\\"space-y-1 leading-none\\\">\\n                <FormLabel>\\n                  Use different settings for my mobile devices\\n                </FormLabel>\\n                <FormDescription>\\n                  You can manage your mobile notifications in the{\\\" \\\"}\\n                  <Link href=\\\"/examples/forms\\\">mobile settings</Link> page.\\n                </FormDescription>\\n              </div>\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/checkbox-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-with-text\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-with-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\n\\nexport default function CheckboxWithText() {\\n  return (\\n    <div className=\\\"items-top flex space-x-2\\\">\\n      <Checkbox id=\\\"terms1\\\" />\\n      <div className=\\\"grid gap-1.5 leading-none\\\">\\n        <label\\n          htmlFor=\\\"terms1\\\"\\n          className=\\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n        >\\n          Accept terms and conditions\\n        </label>\\n        <p className=\\\"text-sm text-muted-foreground\\\">\\n          You agree to our Terms of Service and Privacy Policy.\\n        </p>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as CheckboxPrimitive from \\\"@radix-ui/react-checkbox\\\"\\nimport { Check } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Checkbox = React.forwardRef<\\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\\n>(({ className, ...props }, ref) => (\\n  <CheckboxPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <CheckboxPrimitive.Indicator\\n      className={cn(\\\"grid place-content-center text-current\\\")}\\n    >\\n      <Check className=\\\"h-4 w-4\\\" />\\n    </CheckboxPrimitive.Indicator>\\n  </CheckboxPrimitive.Root>\\n))\\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/collapsible-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/collapsible-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\n\\nexport default function CollapsibleDemo() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Collapsible\\n      open={isOpen}\\n      onOpenChange={setIsOpen}\\n      className=\\\"w-[350px] space-y-2\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between space-x-4 px-4\\\">\\n        <h4 className=\\\"text-sm font-semibold\\\">\\n          @peduarte starred 3 repositories\\n        </h4>\\n        <CollapsibleTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\" className=\\\"w-9 p-0\\\">\\n            <ChevronsUpDown className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Toggle</span>\\n          </Button>\\n        </CollapsibleTrigger>\\n      </div>\\n      <div className=\\\"rounded-md border px-4 py-3 font-mono text-sm\\\">\\n        @radix-ui/primitives\\n      </div>\\n      <CollapsibleContent className=\\\"space-y-2\\\">\\n        <div className=\\\"rounded-md border px-4 py-3 font-mono text-sm\\\">\\n          @radix-ui/colors\\n        </div>\\n        <div className=\\\"rounded-md border px-4 py-3 font-mono text-sm\\\">\\n          @stitches/react\\n        </div>\\n      </CollapsibleContent>\\n    </Collapsible>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as CollapsiblePrimitive from \\\"@radix-ui/react-collapsible\\\"\\n\\nconst Collapsible = CollapsiblePrimitive.Root\\n\\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\\n\\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/combobox-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/default/ui/command\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nconst frameworks = [\\n  {\\n    value: \\\"next.js\\\",\\n    label: \\\"Next.js\\\",\\n  },\\n  {\\n    value: \\\"sveltekit\\\",\\n    label: \\\"SvelteKit\\\",\\n  },\\n  {\\n    value: \\\"nuxt.js\\\",\\n    label: \\\"Nuxt.js\\\",\\n  },\\n  {\\n    value: \\\"remix\\\",\\n    label: \\\"Remix\\\",\\n  },\\n  {\\n    value: \\\"astro\\\",\\n    label: \\\"Astro\\\",\\n  },\\n]\\n\\nexport default function ComboboxDemo() {\\n  const [open, setOpen] = React.useState(false)\\n  const [value, setValue] = React.useState(\\\"\\\")\\n\\n  return (\\n    <Popover open={open} onOpenChange={setOpen}>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant=\\\"outline\\\"\\n          role=\\\"combobox\\\"\\n          aria-expanded={open}\\n          className=\\\"w-[200px] justify-between\\\"\\n        >\\n          {value\\n            ? frameworks.find((framework) => framework.value === value)?.label\\n            : \\\"Select framework...\\\"}\\n          <ChevronsUpDown className=\\\"opacity-50\\\" />\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-[200px] p-0\\\">\\n        <Command>\\n          <CommandInput placeholder=\\\"Search framework...\\\" />\\n          <CommandList>\\n            <CommandEmpty>No framework found.</CommandEmpty>\\n            <CommandGroup>\\n              {frameworks.map((framework) => (\\n                <CommandItem\\n                  key={framework.value}\\n                  value={framework.value}\\n                  onSelect={(currentValue) => {\\n                    setValue(currentValue === value ? \\\"\\\" : currentValue)\\n                    setOpen(false)\\n                  }}\\n                >\\n                  {framework.label}\\n                  <Check\\n                    className={cn(\\n                      \\\"ml-auto\\\",\\n                      value === framework.value ? \\\"opacity-100\\\" : \\\"opacity-0\\\"\\n                    )}\\n                  />\\n                </CommandItem>\\n              ))}\\n            </CommandGroup>\\n          </CommandList>\\n        </Command>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/combobox-dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-dropdown-menu\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\",\n    \"dropdown-menu\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Calendar, MoreHorizontal, Tags, Trash, User } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/default/ui/command\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nconst labels = [\\n  \\\"feature\\\",\\n  \\\"bug\\\",\\n  \\\"enhancement\\\",\\n  \\\"documentation\\\",\\n  \\\"design\\\",\\n  \\\"question\\\",\\n  \\\"maintenance\\\",\\n]\\n\\nexport default function ComboboxDropdownMenu() {\\n  const [label, setLabel] = React.useState(\\\"feature\\\")\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"flex w-full flex-col items-start justify-between rounded-md border px-4 py-3 sm:flex-row sm:items-center\\\">\\n      <p className=\\\"text-sm font-medium leading-none\\\">\\n        <span className=\\\"mr-2 rounded-lg bg-primary px-2 py-1 text-xs text-primary-foreground\\\">\\n          {label}\\n        </span>\\n        <span className=\\\"text-muted-foreground\\\">Create a new project</span>\\n      </p>\\n      <DropdownMenu open={open} onOpenChange={setOpen}>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            <MoreHorizontal />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-[200px]\\\">\\n          <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <User />\\n              Assign to...\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <Calendar />\\n              Set due date...\\n            </DropdownMenuItem>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <Tags />\\n                Apply label\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuSubContent className=\\\"p-0\\\">\\n                <Command>\\n                  <CommandInput\\n                    placeholder=\\\"Filter label...\\\"\\n                    autoFocus={true}\\n                  />\\n                  <CommandList>\\n                    <CommandEmpty>No label found.</CommandEmpty>\\n                    <CommandGroup>\\n                      {labels.map((label) => (\\n                        <CommandItem\\n                          key={label}\\n                          value={label}\\n                          onSelect={(value) => {\\n                            setLabel(value)\\n                            setOpen(false)\\n                          }}\\n                        >\\n                          {label}\\n                        </CommandItem>\\n                      ))}\\n                    </CommandGroup>\\n                  </CommandList>\\n                </Command>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"text-red-600\\\">\\n              <Trash />\\n              Delete\\n              <DropdownMenuShortcut>⌘⌫</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/combobox-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Check, ChevronsUpDown } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/default/ui/command\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nconst languages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n] as const\\n\\nconst FormSchema = z.object({\\n  language: z.string({\\n    required_error: \\\"Please select a language.\\\",\\n  }),\\n})\\n\\nexport default function ComboboxForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"language\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Language</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      role=\\\"combobox\\\"\\n                      className={cn(\\n                        \\\"w-[200px] justify-between\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value\\n                        ? languages.find(\\n                            (language) => language.value === field.value\\n                          )?.label\\n                        : \\\"Select language\\\"}\\n                      <ChevronsUpDown className=\\\"ml-2 h-4 w-4 shrink-0 opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-[200px] p-0\\\">\\n                  <Command>\\n                    <CommandInput placeholder=\\\"Search language...\\\" />\\n                    <CommandList>\\n                      <CommandEmpty>No language found.</CommandEmpty>\\n                      <CommandGroup>\\n                        {languages.map((language) => (\\n                          <CommandItem\\n                            value={language.label}\\n                            key={language.value}\\n                            onSelect={() => {\\n                              form.setValue(\\\"language\\\", language.value)\\n                            }}\\n                          >\\n                            {language.label}\\n                            <Check\\n                              className={cn(\\n                                \\\"ml-auto\\\",\\n                                language.value === field.value\\n                                  ? \\\"opacity-100\\\"\\n                                  : \\\"opacity-0\\\"\\n                              )}\\n                            />\\n                          </CommandItem>\\n                        ))}\\n                      </CommandGroup>\\n                    </CommandList>\\n                  </Command>\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                This is the language that will be used in the dashboard.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/combobox-popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-popover\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"combobox\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowUpCircle,\\n  CheckCircle2,\\n  Circle,\\n  HelpCircle,\\n  LucideIcon,\\n  XCircle,\\n} from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/default/ui/command\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\ntype Status = {\\n  value: string\\n  label: string\\n  icon: LucideIcon\\n}\\n\\nconst statuses: Status[] = [\\n  {\\n    value: \\\"backlog\\\",\\n    label: \\\"Backlog\\\",\\n    icon: HelpCircle,\\n  },\\n  {\\n    value: \\\"todo\\\",\\n    label: \\\"Todo\\\",\\n    icon: Circle,\\n  },\\n  {\\n    value: \\\"in progress\\\",\\n    label: \\\"In Progress\\\",\\n    icon: ArrowUpCircle,\\n  },\\n  {\\n    value: \\\"done\\\",\\n    label: \\\"Done\\\",\\n    icon: CheckCircle2,\\n  },\\n  {\\n    value: \\\"canceled\\\",\\n    label: \\\"Canceled\\\",\\n    icon: XCircle,\\n  },\\n]\\n\\nexport default function ComboboxPopover() {\\n  const [open, setOpen] = React.useState(false)\\n  const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\\n    null\\n  )\\n\\n  return (\\n    <div className=\\\"flex items-center space-x-4\\\">\\n      <p className=\\\"text-sm text-muted-foreground\\\">Status</p>\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            className=\\\"w-[150px] justify-start\\\"\\n          >\\n            {selectedStatus ? (\\n              <>\\n                <selectedStatus.icon className=\\\"mr-2 h-4 w-4 shrink-0\\\" />\\n                {selectedStatus.label}\\n              </>\\n            ) : (\\n              <>+ Set status</>\\n            )}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"p-0\\\" side=\\\"right\\\" align=\\\"start\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Change status...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup>\\n                {statuses.map((status) => (\\n                  <CommandItem\\n                    key={status.value}\\n                    value={status.value}\\n                    onSelect={(value) => {\\n                      setSelectedStatus(\\n                        statuses.find((priority) => priority.value === value) ||\\n                          null\\n                      )\\n                      setOpen(false)\\n                    }}\\n                  >\\n                    <status.icon\\n                      className={cn(\\n                        \\\"mr-2 h-4 w-4\\\",\\n                        status.value === selectedStatus?.value\\n                          ? \\\"opacity-100\\\"\\n                          : \\\"opacity-40\\\"\\n                      )}\\n                    />\\n                    <span>{status.label}</span>\\n                  </CommandItem>\\n                ))}\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/combobox-responsive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-responsive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"combobox\",\n    \"popover\",\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-responsive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/default/ui/command\\\"\\nimport {\\n  Drawer,\\n  DrawerContent,\\n  DrawerTrigger,\\n} from \\\"@/registry/default/ui/drawer\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\ntype Status = {\\n  value: string\\n  label: string\\n}\\n\\nconst statuses: Status[] = [\\n  {\\n    value: \\\"backlog\\\",\\n    label: \\\"Backlog\\\",\\n  },\\n  {\\n    value: \\\"todo\\\",\\n    label: \\\"Todo\\\",\\n  },\\n  {\\n    value: \\\"in progress\\\",\\n    label: \\\"In Progress\\\",\\n  },\\n  {\\n    value: \\\"done\\\",\\n    label: \\\"Done\\\",\\n  },\\n  {\\n    value: \\\"canceled\\\",\\n    label: \\\"Canceled\\\",\\n  },\\n]\\n\\nexport default function ComboBoxResponsive() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n  const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\\n    null\\n  )\\n\\n  if (isDesktop) {\\n    return (\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-[150px] justify-start\\\">\\n            {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-[200px] p-0\\\" align=\\\"start\\\">\\n          <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\\n        </PopoverContent>\\n      </Popover>\\n    )\\n  }\\n\\n  return (\\n    <Drawer open={open} onOpenChange={setOpen}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\" className=\\\"w-[150px] justify-start\\\">\\n          {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <div className=\\\"mt-4 border-t\\\">\\n          <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\\n        </div>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\\nfunction StatusList({\\n  setOpen,\\n  setSelectedStatus,\\n}: {\\n  setOpen: (open: boolean) => void\\n  setSelectedStatus: (status: Status | null) => void\\n}) {\\n  return (\\n    <Command>\\n      <CommandInput placeholder=\\\"Filter status...\\\" />\\n      <CommandList>\\n        <CommandEmpty>No results found.</CommandEmpty>\\n        <CommandGroup>\\n          {statuses.map((status) => (\\n            <CommandItem\\n              key={status.value}\\n              value={status.value}\\n              onSelect={(value) => {\\n                setSelectedStatus(\\n                  statuses.find((priority) => priority.value === value) || null\\n                )\\n                setOpen(false)\\n              }}\\n            >\\n              {status.label}\\n            </CommandItem>\\n          ))}\\n        </CommandGroup>\\n      </CommandList>\\n    </Command>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/command-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/command-demo.tsx\",\n      \"content\": \"import {\\n  Calculator,\\n  Calendar,\\n  CreditCard,\\n  Settings,\\n  Smile,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/default/ui/command\\\"\\n\\nexport default function CommandDemo() {\\n  return (\\n    <Command className=\\\"rounded-lg border shadow-md md:min-w-[450px]\\\">\\n      <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n      <CommandList>\\n        <CommandEmpty>No results found.</CommandEmpty>\\n        <CommandGroup heading=\\\"Suggestions\\\">\\n          <CommandItem>\\n            <Calendar />\\n            <span>Calendar</span>\\n          </CommandItem>\\n          <CommandItem>\\n            <Smile />\\n            <span>Search Emoji</span>\\n          </CommandItem>\\n          <CommandItem disabled>\\n            <Calculator />\\n            <span>Calculator</span>\\n          </CommandItem>\\n        </CommandGroup>\\n        <CommandSeparator />\\n        <CommandGroup heading=\\\"Settings\\\">\\n          <CommandItem>\\n            <User />\\n            <span>Profile</span>\\n            <CommandShortcut>⌘P</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <CreditCard />\\n            <span>Billing</span>\\n            <CommandShortcut>⌘B</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <Settings />\\n            <span>Settings</span>\\n            <CommandShortcut>⌘S</CommandShortcut>\\n          </CommandItem>\\n        </CommandGroup>\\n      </CommandList>\\n    </Command>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/command-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-dialog\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/command-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Calculator,\\n  Calendar,\\n  CreditCard,\\n  Settings,\\n  Smile,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/default/ui/command\\\"\\n\\nexport default function CommandDialogDemo() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    const down = (e: KeyboardEvent) => {\\n      if (e.key === \\\"j\\\" && (e.metaKey || e.ctrlKey)) {\\n        e.preventDefault()\\n        setOpen((open) => !open)\\n      }\\n    }\\n\\n    document.addEventListener(\\\"keydown\\\", down)\\n    return () => document.removeEventListener(\\\"keydown\\\", down)\\n  }, [])\\n\\n  return (\\n    <>\\n      <p className=\\\"text-sm text-muted-foreground\\\">\\n        Press{\\\" \\\"}\\n        <kbd className=\\\"pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100\\\">\\n          <span className=\\\"text-xs\\\">⌘</span>J\\n        </kbd>\\n      </p>\\n      <CommandDialog open={open} onOpenChange={setOpen}>\\n        <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n        <CommandList>\\n          <CommandEmpty>No results found.</CommandEmpty>\\n          <CommandGroup heading=\\\"Suggestions\\\">\\n            <CommandItem>\\n              <Calendar />\\n              <span>Calendar</span>\\n            </CommandItem>\\n            <CommandItem>\\n              <Smile />\\n              <span>Search Emoji</span>\\n            </CommandItem>\\n            <CommandItem>\\n              <Calculator />\\n              <span>Calculator</span>\\n            </CommandItem>\\n          </CommandGroup>\\n          <CommandSeparator />\\n          <CommandGroup heading=\\\"Settings\\\">\\n            <CommandItem>\\n              <User />\\n              <span>Profile</span>\\n              <CommandShortcut>⌘P</CommandShortcut>\\n            </CommandItem>\\n            <CommandItem>\\n              <CreditCard />\\n              <span>Billing</span>\\n              <CommandShortcut>⌘B</CommandShortcut>\\n            </CommandItem>\\n            <CommandItem>\\n              <Settings />\\n              <span>Settings</span>\\n              <CommandShortcut>⌘S</CommandShortcut>\\n            </CommandItem>\\n          </CommandGroup>\\n        </CommandList>\\n      </CommandDialog>\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DialogProps } from \\\"@radix-ui/react-dialog\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\nimport { Search } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Dialog, DialogContent } from \\\"@/registry/default/ui/dialog\\\"\\n\\nconst Command = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive\\n    ref={ref}\\n    className={cn(\\n      \\\"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nCommand.displayName = CommandPrimitive.displayName\\n\\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\\n  return (\\n    <Dialog {...props}>\\n      <DialogContent className=\\\"overflow-hidden p-0 shadow-lg\\\">\\n        <Command className=\\\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\\\">\\n          {children}\\n        </Command>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nconst CommandInput = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Input>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\\n>(({ className, ...props }, ref) => (\\n  <div className=\\\"flex items-center border-b px-3\\\" cmdk-input-wrapper=\\\"\\\">\\n    <Search className=\\\"mr-2 h-4 w-4 shrink-0 opacity-50\\\" />\\n    <CommandPrimitive.Input\\n      ref={ref}\\n      className={cn(\\n        \\\"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </div>\\n))\\n\\nCommandInput.displayName = CommandPrimitive.Input.displayName\\n\\nconst CommandList = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.List>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive.List\\n    ref={ref}\\n    className={cn(\\\"max-h-[300px] overflow-y-auto overflow-x-hidden\\\", className)}\\n    {...props}\\n  />\\n))\\n\\nCommandList.displayName = CommandPrimitive.List.displayName\\n\\nconst CommandEmpty = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Empty>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\\n>((props, ref) => (\\n  <CommandPrimitive.Empty\\n    ref={ref}\\n    className=\\\"py-6 text-center text-sm\\\"\\n    {...props}\\n  />\\n))\\n\\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\\n\\nconst CommandGroup = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Group>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive.Group\\n    ref={ref}\\n    className={cn(\\n      \\\"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\n\\nCommandGroup.displayName = CommandPrimitive.Group.displayName\\n\\nconst CommandSeparator = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n    {...props}\\n  />\\n))\\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\\n\\nconst CommandItem = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\n\\nCommandItem.displayName = CommandPrimitive.Item.displayName\\n\\nconst CommandShortcut = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLSpanElement>) => {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\nCommandShortcut.displayName = \\\"CommandShortcut\\\"\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/context-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"context-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/context-menu-demo.tsx\",\n      \"content\": \"import {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/default/ui/context-menu\\\"\\n\\nexport default function ContextMenuDemo() {\\n  return (\\n    <ContextMenu>\\n      <ContextMenuTrigger className=\\\"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm\\\">\\n        Right click here\\n      </ContextMenuTrigger>\\n      <ContextMenuContent className=\\\"w-64\\\">\\n        <ContextMenuItem inset>\\n          Back\\n          <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset disabled>\\n          Forward\\n          <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset>\\n          Reload\\n          <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuSub>\\n          <ContextMenuSubTrigger inset>More Tools</ContextMenuSubTrigger>\\n          <ContextMenuSubContent className=\\\"w-48\\\">\\n            <ContextMenuItem>\\n              Save Page As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n            <ContextMenuItem>Name Window...</ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>Developer Tools</ContextMenuItem>\\n          </ContextMenuSubContent>\\n        </ContextMenuSub>\\n        <ContextMenuSeparator />\\n        <ContextMenuCheckboxItem checked>\\n          Show Bookmarks Bar\\n          <ContextMenuShortcut>⌘⇧B</ContextMenuShortcut>\\n        </ContextMenuCheckboxItem>\\n        <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n        <ContextMenuSeparator />\\n        <ContextMenuRadioGroup value=\\\"pedro\\\">\\n          <ContextMenuLabel inset>People</ContextMenuLabel>\\n          <ContextMenuSeparator />\\n          <ContextMenuRadioItem value=\\\"pedro\\\">\\n            Pedro Duarte\\n          </ContextMenuRadioItem>\\n          <ContextMenuRadioItem value=\\\"colm\\\">Colm Tuite</ContextMenuRadioItem>\\n        </ContextMenuRadioGroup>\\n      </ContextMenuContent>\\n    </ContextMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-context-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ContextMenuPrimitive from \\\"@radix-ui/react-context-menu\\\"\\nimport { Check, ChevronRight, Circle } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst ContextMenu = ContextMenuPrimitive.Root\\n\\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\\n\\nconst ContextMenuGroup = ContextMenuPrimitive.Group\\n\\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\\n\\nconst ContextMenuSub = ContextMenuPrimitive.Sub\\n\\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\\n\\nconst ContextMenuSubTrigger = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, children, ...props }, ref) => (\\n  <ContextMenuPrimitive.SubTrigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <ChevronRight className=\\\"ml-auto h-4 w-4\\\" />\\n  </ContextMenuPrimitive.SubTrigger>\\n))\\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\\n\\nconst ContextMenuSubContent = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\\n>(({ className, ...props }, ref) => (\\n  <ContextMenuPrimitive.SubContent\\n    ref={ref}\\n    className={cn(\\n      \\\"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\\n\\nconst ContextMenuContent = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\\n>(({ className, ...props }, ref) => (\\n  <ContextMenuPrimitive.Portal>\\n    <ContextMenuPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </ContextMenuPrimitive.Portal>\\n))\\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\\n\\nconst ContextMenuItem = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <ContextMenuPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\\n\\nconst ContextMenuCheckboxItem = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\\n>(({ className, children, checked, ...props }, ref) => (\\n  <ContextMenuPrimitive.CheckboxItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    checked={checked}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <ContextMenuPrimitive.ItemIndicator>\\n        <Check className=\\\"h-4 w-4\\\" />\\n      </ContextMenuPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </ContextMenuPrimitive.CheckboxItem>\\n))\\nContextMenuCheckboxItem.displayName =\\n  ContextMenuPrimitive.CheckboxItem.displayName\\n\\nconst ContextMenuRadioItem = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\\n>(({ className, children, ...props }, ref) => (\\n  <ContextMenuPrimitive.RadioItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <ContextMenuPrimitive.ItemIndicator>\\n        <Circle className=\\\"h-2 w-2 fill-current\\\" />\\n      </ContextMenuPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </ContextMenuPrimitive.RadioItem>\\n))\\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\\n\\nconst ContextMenuLabel = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.Label>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <ContextMenuPrimitive.Label\\n    ref={ref}\\n    className={cn(\\n      \\\"px-2 py-1.5 text-sm font-semibold text-foreground\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\\n\\nconst ContextMenuSeparator = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <ContextMenuPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n    {...props}\\n  />\\n))\\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\\n\\nconst ContextMenuShortcut = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLSpanElement>) => {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\nContextMenuShortcut.displayName = \\\"ContextMenuShortcut\\\"\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/default/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/default/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/default/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/default/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/default/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowUpCircleIcon,\\n  BarChartIcon,\\n  CameraIcon,\\n  ClipboardListIcon,\\n  DatabaseIcon,\\n  FileCodeIcon,\\n  FileIcon,\\n  FileTextIcon,\\n  FolderIcon,\\n  HelpCircleIcon,\\n  LayoutDashboardIcon,\\n  ListIcon,\\n  SearchIcon,\\n  SettingsIcon,\\n  UsersIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/default/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/default/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/default/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/default/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: LayoutDashboardIcon,\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: ListIcon,\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: BarChartIcon,\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: FolderIcon,\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: UsersIcon,\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: CameraIcon,\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: FileTextIcon,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: FileCodeIcon,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: SettingsIcon,\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: HelpCircleIcon,\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: SearchIcon,\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: DatabaseIcon,\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: ClipboardListIcon,\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: FileIcon,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              asChild\\n              className=\\\"data-[slot=sidebar-menu-button]:!p-1.5\\\"\\n            >\\n              <a href=\\\"#\\\">\\n                <ArrowUpCircleIcon className=\\\"h-5 w-5\\\" />\\n                <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/default/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/default/ui/toggle-group\\\"\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"30d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader className=\\\"relative\\\">\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"@[540px]/card:block hidden\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <div className=\\\"absolute right-4 top-4\\\">\\n          <ToggleGroup\\n            type=\\\"single\\\"\\n            value={timeRange}\\n            onValueChange={setTimeRange}\\n            variant=\\\"outline\\\"\\n            className=\\\"@[767px]/card:flex hidden\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\" className=\\\"h-8 px-2.5\\\">\\n              Last 3 months\\n            </ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\" className=\\\"h-8 px-2.5\\\">\\n              Last 30 days\\n            </ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\" className=\\\"h-8 px-2.5\\\">\\n              Last 7 days\\n            </ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select value={timeRange} onValueChange={setTimeRange}>\\n            <SelectTrigger\\n              className=\\\"@[767px]/card:hidden flex w-40\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </div>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  closestCenter,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  SortableContext,\\n  arrayMove,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  ColumnDef,\\n  ColumnFiltersState,\\n  Row,\\n  SortingState,\\n  VisibilityState,\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n} from \\\"@tanstack/react-table\\\"\\nimport {\\n  CheckCircle2Icon,\\n  CheckCircleIcon,\\n  ChevronDownIcon,\\n  ChevronLeftIcon,\\n  ChevronRightIcon,\\n  ChevronsLeftIcon,\\n  ChevronsRightIcon,\\n  ColumnsIcon,\\n  GripVerticalIcon,\\n  LoaderIcon,\\n  MoreVerticalIcon,\\n  PlusIcon,\\n  TrendingUpIcon,\\n} from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/default/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/default/ui/badge\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/default/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/default/ui/sheet\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/default/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/default/ui/tabs\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <GripVerticalIcon className=\\\"size-3 text-muted-foreground\\\" />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\n\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={\\n            table.getIsAllPageRowsSelected() ||\\n            (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge\\n        variant=\\\"outline\\\"\\n        className=\\\"flex gap-1 px-1.5 text-muted-foreground [&_svg]:size-3\\\"\\n      >\\n        {row.original.status === \\\"Done\\\" ? (\\n          <CheckCircle2Icon className=\\\"text-green-500 dark:text-green-400\\\" />\\n        ) : (\\n          <LoaderIcon />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select>\\n            <SelectTrigger\\n              className=\\\"h-8 w-40\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n              <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                Jamik Tashpulatov\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            className=\\\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\\\"\\n            size=\\\"icon\\\"\\n          >\\n            <MoreVerticalIcon />\\n            <span className=\\\"sr-only\\\">Open menu</span>\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\n\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\n\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"flex w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select defaultValue=\\\"outline\\\">\\n          <SelectTrigger\\n            className=\\\"@4xl/main:hidden flex w-fit\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n            <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n            <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n            <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"@4xl/main:flex hidden\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\" className=\\\"gap-1\\\">\\n            Past Performance{\\\" \\\"}\\n            <Badge\\n              variant=\\\"secondary\\\"\\n              className=\\\"flex h-5 w-5 items-center justify-center rounded-full bg-muted-foreground/30\\\"\\n            >\\n              3\\n            </Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\" className=\\\"gap-1\\\">\\n            Key Personnel{\\\" \\\"}\\n            <Badge\\n              variant=\\\"secondary\\\"\\n              className=\\\"flex h-5 w-5 items-center justify-center rounded-full bg-muted-foreground/30\\\"\\n            >\\n              2\\n            </Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                <ColumnsIcon />\\n                <span className=\\\"hidden lg:inline\\\">Customize Columns</span>\\n                <span className=\\\"lg:hidden\\\">Columns</span>\\n                <ChevronDownIcon />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <PlusIcon />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n              >\\n                <SelectTrigger className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  {[10, 20, 30, 40, 50].map((pageSize) => (\\n                    <SelectItem key={pageSize} value={`${pageSize}`}>\\n                      {pageSize}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <ChevronsLeftIcon />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <ChevronLeftIcon />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <ChevronRightIcon />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <ChevronsRightIcon />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <Sheet>\\n      <SheetTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </SheetTrigger>\\n      <SheetContent side=\\\"right\\\" className=\\\"flex flex-col\\\">\\n        <SheetHeader className=\\\"gap-1\\\">\\n          <SheetTitle>{item.header}</SheetTitle>\\n          <SheetDescription>\\n            Showing total visitors for the last 6 months\\n          </SheetDescription>\\n        </SheetHeader>\\n        <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto py-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <TrendingUpIcon className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select defaultValue={item.type}>\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"Table of Contents\\\">\\n                      Table of Contents\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Executive Summary\\\">\\n                      Executive Summary\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Technical Approach\\\">\\n                      Technical Approach\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                    <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                    <SelectItem value=\\\"Focus Documents\\\">\\n                      Focus Documents\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                    <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select defaultValue={item.status}>\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                    <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                    <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select defaultValue={item.reviewer}>\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                  <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                    Jamik Tashpulatov\\n                  </SelectItem>\\n                  <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <SheetFooter className=\\\"mt-auto flex gap-2 sm:flex-col sm:space-x-0\\\">\\n          <Button className=\\\"w-full\\\">Submit</Button>\\n          <SheetClose asChild>\\n            <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n              Done\\n            </Button>\\n          </SheetClose>\\n        </SheetFooter>\\n      </SheetContent>\\n    </Sheet>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  FolderIcon,\\n  MoreHorizontalIcon,\\n  ShareIcon,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"rounded-sm data-[state=open]:bg-accent\\\"\\n                >\\n                  <MoreHorizontalIcon />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <FolderIcon />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ShareIcon />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontalIcon className=\\\"text-sidebar-foreground/70\\\" />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { MailIcon, PlusCircleIcon, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <PlusCircleIcon />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"h-9 w-9 shrink-0 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <MailIcon />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon && <item.icon />}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BellIcon,\\n  CreditCardIcon,\\n  LogOutIcon,\\n  MoreVerticalIcon,\\n  UserCircleIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg grayscale\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  {user.email}\\n                </span>\\n              </div>\\n              <MoreVerticalIcon className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                    {user.email}\\n                  </span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <UserCircleIcon />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCardIcon />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <BellIcon />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOutIcon />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"import { TrendingDownIcon, TrendingUpIcon } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/registry/default/ui/badge\\\"\\nimport {\\n  Card,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"*:data-[slot=card]:shadow-xs @xl/main:grid-cols-2 @5xl/main:grid-cols-4 grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card dark:*:data-[slot=card]:bg-card lg:px-6\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader className=\\\"relative\\\">\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"@[250px]/card:text-3xl text-2xl font-semibold tabular-nums\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <div className=\\\"absolute right-4 top-4\\\">\\n            <Badge variant=\\\"outline\\\" className=\\\"flex gap-1 rounded-lg text-xs\\\">\\n              <TrendingUpIcon className=\\\"size-3\\\" />\\n              +12.5%\\n            </Badge>\\n          </div>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month <TrendingUpIcon className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader className=\\\"relative\\\">\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"@[250px]/card:text-3xl text-2xl font-semibold tabular-nums\\\">\\n            1,234\\n          </CardTitle>\\n          <div className=\\\"absolute right-4 top-4\\\">\\n            <Badge variant=\\\"outline\\\" className=\\\"flex gap-1 rounded-lg text-xs\\\">\\n              <TrendingDownIcon className=\\\"size-3\\\" />\\n              -20%\\n            </Badge>\\n          </div>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period <TrendingDownIcon className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader className=\\\"relative\\\">\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"@[250px]/card:text-3xl text-2xl font-semibold tabular-nums\\\">\\n            45,678\\n          </CardTitle>\\n          <div className=\\\"absolute right-4 top-4\\\">\\n            <Badge variant=\\\"outline\\\" className=\\\"flex gap-1 rounded-lg text-xs\\\">\\n              <TrendingUpIcon className=\\\"size-3\\\" />\\n              +12.5%\\n            </Badge>\\n          </div>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention <TrendingUpIcon className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader className=\\\"relative\\\">\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"@[250px]/card:text-3xl text-2xl font-semibold tabular-nums\\\">\\n            4.5%\\n          </CardTitle>\\n          <div className=\\\"absolute right-4 top-4\\\">\\n            <Badge variant=\\\"outline\\\" className=\\\"flex gap-1 rounded-lg text-xs\\\">\\n              <TrendingUpIcon className=\\\"size-3\\\" />\\n              +4.5%\\n            </Badge>\\n          </div>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance <TrendingUpIcon className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 flex h-12 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 data-[orientation=vertical]:h-4\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/data-table-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"data-table-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"data-table\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/data-table-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ColumnDef,\\n  ColumnFiltersState,\\n  SortingState,\\n  VisibilityState,\\n  flexRender,\\n  getCoreRowModel,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n} from \\\"@tanstack/react-table\\\"\\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/default/ui/table\\\"\\n\\nconst data: Payment[] = [\\n  {\\n    id: \\\"m5gr84i9\\\",\\n    amount: 316,\\n    status: \\\"success\\\",\\n    email: \\\"ken99@example.com\\\",\\n  },\\n  {\\n    id: \\\"3u1reuv4\\\",\\n    amount: 242,\\n    status: \\\"success\\\",\\n    email: \\\"Abe45@example.com\\\",\\n  },\\n  {\\n    id: \\\"derv1ws0\\\",\\n    amount: 837,\\n    status: \\\"processing\\\",\\n    email: \\\"Monserrat44@example.com\\\",\\n  },\\n  {\\n    id: \\\"5kma53ae\\\",\\n    amount: 874,\\n    status: \\\"success\\\",\\n    email: \\\"Silas22@example.com\\\",\\n  },\\n  {\\n    id: \\\"bhqecj4p\\\",\\n    amount: 721,\\n    status: \\\"failed\\\",\\n    email: \\\"carmella@example.com\\\",\\n  },\\n]\\n\\nexport type Payment = {\\n  id: string\\n  amount: number\\n  status: \\\"pending\\\" | \\\"processing\\\" | \\\"success\\\" | \\\"failed\\\"\\n  email: string\\n}\\n\\nexport const columns: ColumnDef<Payment>[] = [\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <Checkbox\\n        checked={\\n          table.getIsAllPageRowsSelected() ||\\n          (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n        }\\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n        aria-label=\\\"Select all\\\"\\n      />\\n    ),\\n    cell: ({ row }) => (\\n      <Checkbox\\n        checked={row.getIsSelected()}\\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\\n        aria-label=\\\"Select row\\\"\\n      />\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"capitalize\\\">{row.getValue(\\\"status\\\")}</div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"email\\\",\\n    header: ({ column }) => {\\n      return (\\n        <Button\\n          variant=\\\"ghost\\\"\\n          onClick={() => column.toggleSorting(column.getIsSorted() === \\\"asc\\\")}\\n        >\\n          Email\\n          <ArrowUpDown />\\n        </Button>\\n      )\\n    },\\n    cell: ({ row }) => <div className=\\\"lowercase\\\">{row.getValue(\\\"email\\\")}</div>,\\n  },\\n  {\\n    accessorKey: \\\"amount\\\",\\n    header: () => <div className=\\\"text-right\\\">Amount</div>,\\n    cell: ({ row }) => {\\n      const amount = parseFloat(row.getValue(\\\"amount\\\"))\\n\\n      // Format the amount as a dollar amount\\n      const formatted = new Intl.NumberFormat(\\\"en-US\\\", {\\n        style: \\\"currency\\\",\\n        currency: \\\"USD\\\",\\n      }).format(amount)\\n\\n      return <div className=\\\"text-right font-medium\\\">{formatted}</div>\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    enableHiding: false,\\n    cell: ({ row }) => {\\n      const payment = row.original\\n\\n      return (\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"ghost\\\" className=\\\"h-8 w-8 p-0\\\">\\n              <span className=\\\"sr-only\\\">Open menu</span>\\n              <MoreHorizontal />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\">\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem\\n              onClick={() => navigator.clipboard.writeText(payment.id)}\\n            >\\n              Copy payment ID\\n            </DropdownMenuItem>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>View customer</DropdownMenuItem>\\n            <DropdownMenuItem>View payment details</DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      )\\n    },\\n  },\\n]\\n\\nexport default function DataTableDemo() {\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [rowSelection, setRowSelection] = React.useState({})\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    getCoreRowModel: getCoreRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onRowSelectionChange: setRowSelection,\\n    state: {\\n      sorting,\\n      columnFilters,\\n      columnVisibility,\\n      rowSelection,\\n    },\\n  })\\n\\n  return (\\n    <div className=\\\"w-full\\\">\\n      <div className=\\\"flex items-center py-4\\\">\\n        <Input\\n          placeholder=\\\"Filter emails...\\\"\\n          value={(table.getColumn(\\\"email\\\")?.getFilterValue() as string) ?? \\\"\\\"}\\n          onChange={(event) =>\\n            table.getColumn(\\\"email\\\")?.setFilterValue(event.target.value)\\n          }\\n          className=\\\"max-w-sm\\\"\\n        />\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"outline\\\" className=\\\"ml-auto\\\">\\n              Columns <ChevronDown />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\">\\n            {table\\n              .getAllColumns()\\n              .filter((column) => column.getCanHide())\\n              .map((column) => {\\n                return (\\n                  <DropdownMenuCheckboxItem\\n                    key={column.id}\\n                    className=\\\"capitalize\\\"\\n                    checked={column.getIsVisible()}\\n                    onCheckedChange={(value) =>\\n                      column.toggleVisibility(!!value)\\n                    }\\n                  >\\n                    {column.id}\\n                  </DropdownMenuCheckboxItem>\\n                )\\n              })}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n      <div className=\\\"overflow-hidden rounded-md border\\\">\\n        <Table>\\n          <TableHeader>\\n            {table.getHeaderGroups().map((headerGroup) => (\\n              <TableRow key={headerGroup.id}>\\n                {headerGroup.headers.map((header) => {\\n                  return (\\n                    <TableHead key={header.id}>\\n                      {header.isPlaceholder\\n                        ? null\\n                        : flexRender(\\n                            header.column.columnDef.header,\\n                            header.getContext()\\n                          )}\\n                    </TableHead>\\n                  )\\n                })}\\n              </TableRow>\\n            ))}\\n          </TableHeader>\\n          <TableBody>\\n            {table.getRowModel().rows?.length ? (\\n              table.getRowModel().rows.map((row) => (\\n                <TableRow\\n                  key={row.id}\\n                  data-state={row.getIsSelected() && \\\"selected\\\"}\\n                >\\n                  {row.getVisibleCells().map((cell) => (\\n                    <TableCell key={cell.id}>\\n                      {flexRender(\\n                        cell.column.columnDef.cell,\\n                        cell.getContext()\\n                      )}\\n                    </TableCell>\\n                  ))}\\n                </TableRow>\\n              ))\\n            ) : (\\n              <TableRow>\\n                <TableCell\\n                  colSpan={columns.length}\\n                  className=\\\"h-24 text-center\\\"\\n                >\\n                  No results.\\n                </TableCell>\\n              </TableRow>\\n            )}\\n          </TableBody>\\n        </Table>\\n      </div>\\n      <div className=\\\"flex items-center justify-end space-x-2 py-4\\\">\\n        <div className=\\\"flex-1 text-sm text-muted-foreground\\\">\\n          {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n          {table.getFilteredRowModel().rows.length} row(s) selected.\\n        </div>\\n        <div className=\\\"space-x-2\\\">\\n          <Button\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            onClick={() => table.previousPage()}\\n            disabled={!table.getCanPreviousPage()}\\n          >\\n            Previous\\n          </Button>\\n          <Button\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            onClick={() => table.nextPage()}\\n            disabled={!table.getCanNextPage()}\\n          >\\n            Next\\n          </Button>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/date-picker-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/date-picker-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function DatePickerDemo() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant={\\\"outline\\\"}\\n          className={cn(\\n            \\\"w-[280px] justify-start text-left font-normal\\\",\\n            !date && \\\"text-muted-foreground\\\"\\n          )}\\n        >\\n          <CalendarIcon />\\n          {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-auto p-0\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          initialFocus\\n        />\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/date-picker-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"form\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/date-picker-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nconst FormSchema = z.object({\\n  dob: z.date({\\n    required_error: \\\"A date of birth is required.\\\",\\n  }),\\n})\\n\\nexport default function DatePickerForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"dob\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Date of birth</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant={\\\"outline\\\"}\\n                      className={cn(\\n                        \\\"w-[240px] pl-3 text-left font-normal\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value ? (\\n                        format(field.value, \\\"PPP\\\")\\n                      ) : (\\n                        <span>Pick a date</span>\\n                      )}\\n                      <CalendarIcon className=\\\"ml-auto h-4 w-4 opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n                  <Calendar\\n                    mode=\\\"single\\\"\\n                    selected={field.value}\\n                    onSelect={field.onChange}\\n                    disabled={(date) =>\\n                      date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n                    }\\n                    initialFocus\\n                  />\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                Your date of birth is used to calculate your age.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/date-picker-with-presets.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-with-presets\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/date-picker-with-presets.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { Calendar as CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\n\\nexport default function DatePickerWithPresets() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant={\\\"outline\\\"}\\n          className={cn(\\n            \\\"w-[280px] justify-start text-left font-normal\\\",\\n            !date && \\\"text-muted-foreground\\\"\\n          )}\\n        >\\n          <CalendarIcon />\\n          {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"flex w-auto flex-col space-y-2 p-2\\\">\\n        <Select\\n          onValueChange={(value) =>\\n            setDate(addDays(new Date(), parseInt(value)))\\n          }\\n        >\\n          <SelectTrigger>\\n            <SelectValue placeholder=\\\"Select\\\" />\\n          </SelectTrigger>\\n          <SelectContent position=\\\"popper\\\">\\n            <SelectItem value=\\\"0\\\">Today</SelectItem>\\n            <SelectItem value=\\\"1\\\">Tomorrow</SelectItem>\\n            <SelectItem value=\\\"3\\\">In 3 days</SelectItem>\\n            <SelectItem value=\\\"7\\\">In a week</SelectItem>\\n          </SelectContent>\\n        </Select>\\n        <div className=\\\"rounded-md border\\\">\\n          <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n        </div>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/date-picker-with-range.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-with-range\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/date-picker-with-range.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { Calendar as CalendarIcon } from \\\"lucide-react\\\"\\nimport { DateRange } from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function DatePickerWithRange({\\n  className,\\n}: React.HTMLAttributes<HTMLDivElement>) {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(2022, 0, 20),\\n    to: addDays(new Date(2022, 0, 20), 20),\\n  })\\n\\n  return (\\n    <div className={cn(\\\"grid gap-2\\\", className)}>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            id=\\\"date\\\"\\n            variant={\\\"outline\\\"}\\n            className={cn(\\n              \\\"w-[300px] justify-start text-left font-normal\\\",\\n              !date && \\\"text-muted-foreground\\\"\\n            )}\\n          >\\n            <CalendarIcon />\\n            {date?.from ? (\\n              date.to ? (\\n                <>\\n                  {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                  {format(date.to, \\\"LLL dd, y\\\")}\\n                </>\\n              ) : (\\n                format(date.from, \\\"LLL dd, y\\\")\\n              )\\n            ) : (\\n              <span>Pick a date</span>\\n            )}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            initialFocus\\n            mode=\\\"range\\\"\\n            defaultMonth={date?.from}\\n            selected={date}\\n            onSelect={setDate}\\n            numberOfMonths={2}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/dialog-close-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-close-button\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dialog-close-button.tsx\",\n      \"content\": \"import { Copy } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/default/ui/dialog\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function DialogCloseButton() {\\n  return (\\n    <Dialog>\\n      <DialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Share</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"sm:max-w-md\\\">\\n        <DialogHeader>\\n          <DialogTitle>Share link</DialogTitle>\\n          <DialogDescription>\\n            Anyone who has this link will be able to view this.\\n          </DialogDescription>\\n        </DialogHeader>\\n        <div className=\\\"flex items-center space-x-2\\\">\\n          <div className=\\\"grid flex-1 gap-2\\\">\\n            <Label htmlFor=\\\"link\\\" className=\\\"sr-only\\\">\\n              Link\\n            </Label>\\n            <Input\\n              id=\\\"link\\\"\\n              defaultValue=\\\"https://ui.shadcn.com/docs/installation\\\"\\n              readOnly\\n            />\\n          </div>\\n          <Button type=\\\"submit\\\" size=\\\"sm\\\" className=\\\"px-3\\\">\\n            <span className=\\\"sr-only\\\">Copy</span>\\n            <Copy />\\n          </Button>\\n        </div>\\n        <DialogFooter className=\\\"sm:justify-start\\\">\\n          <DialogClose asChild>\\n            <Button type=\\\"button\\\" variant=\\\"secondary\\\">\\n              Close\\n            </Button>\\n          </DialogClose>\\n        </DialogFooter>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/dialog-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dialog-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/default/ui/dialog\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function DialogDemo() {\\n  return (\\n    <Dialog>\\n      <DialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Edit Profile</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n        <DialogHeader>\\n          <DialogTitle>Edit profile</DialogTitle>\\n          <DialogDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </DialogDescription>\\n        </DialogHeader>\\n        <div className=\\\"grid gap-4 py-4\\\">\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n              Name\\n            </Label>\\n            <Input\\n              id=\\\"name\\\"\\n              defaultValue=\\\"Pedro Duarte\\\"\\n              className=\\\"col-span-3\\\"\\n            />\\n          </div>\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n              Username\\n            </Label>\\n            <Input\\n              id=\\\"username\\\"\\n              defaultValue=\\\"@peduarte\\\"\\n              className=\\\"col-span-3\\\"\\n            />\\n          </div>\\n        </div>\\n        <DialogFooter>\\n          <Button type=\\\"submit\\\">Save changes</Button>\\n        </DialogFooter>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DialogPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Dialog = DialogPrimitive.Root\\n\\nconst DialogTrigger = DialogPrimitive.Trigger\\n\\nconst DialogPortal = DialogPrimitive.Portal\\n\\nconst DialogClose = DialogPrimitive.Close\\n\\nconst DialogOverlay = React.forwardRef<\\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\\n>(({ className, ...props }, ref) => (\\n  <DialogPrimitive.Overlay\\n    ref={ref}\\n    className={cn(\\n      \\\"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\\n\\nconst DialogContent = React.forwardRef<\\n  React.ElementRef<typeof DialogPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\\n>(({ className, children, ...props }, ref) => (\\n  <DialogPortal>\\n    <DialogOverlay />\\n    <DialogPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <DialogPrimitive.Close className=\\\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\\\">\\n        <X className=\\\"h-4 w-4\\\" />\\n        <span className=\\\"sr-only\\\">Close</span>\\n      </DialogPrimitive.Close>\\n    </DialogPrimitive.Content>\\n  </DialogPortal>\\n))\\nDialogContent.displayName = DialogPrimitive.Content.displayName\\n\\nconst DialogHeader = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col space-y-1.5 text-center sm:text-left\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nDialogHeader.displayName = \\\"DialogHeader\\\"\\n\\nconst DialogFooter = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nDialogFooter.displayName = \\\"DialogFooter\\\"\\n\\nconst DialogTitle = React.forwardRef<\\n  React.ElementRef<typeof DialogPrimitive.Title>,\\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\\n>(({ className, ...props }, ref) => (\\n  <DialogPrimitive.Title\\n    ref={ref}\\n    className={cn(\\n      \\\"text-lg font-semibold leading-none tracking-tight\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDialogTitle.displayName = DialogPrimitive.Title.displayName\\n\\nconst DialogDescription = React.forwardRef<\\n  React.ElementRef<typeof DialogPrimitive.Description>,\\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\\n>(({ className, ...props }, ref) => (\\n  <DialogPrimitive.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nDialogDescription.displayName = DialogPrimitive.Description.displayName\\n\\nexport {\\n  Dialog,\\n  DialogPortal,\\n  DialogOverlay,\\n  DialogClose,\\n  DialogTrigger,\\n  DialogContent,\\n  DialogHeader,\\n  DialogFooter,\\n  DialogTitle,\\n  DialogDescription,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/drawer-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/drawer-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Minus, Plus } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, ResponsiveContainer } from \\\"recharts\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/default/ui/drawer\\\"\\n\\nconst data = [\\n  {\\n    goal: 400,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 239,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 349,\\n  },\\n]\\n\\nexport default function DrawerDemo() {\\n  const [goal, setGoal] = React.useState(350)\\n\\n  function onClick(adjustment: number) {\\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\\n  }\\n\\n  return (\\n    <Drawer>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open Drawer</Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <div className=\\\"mx-auto w-full max-w-sm\\\">\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"p-4 pb-0\\\">\\n            <div className=\\\"flex items-center justify-center space-x-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(-10)}\\n                disabled={goal <= 200}\\n              >\\n                <Minus />\\n                <span className=\\\"sr-only\\\">Decrease</span>\\n              </Button>\\n              <div className=\\\"flex-1 text-center\\\">\\n                <div className=\\\"text-7xl font-bold tracking-tighter\\\">\\n                  {goal}\\n                </div>\\n                <div className=\\\"text-[0.70rem] uppercase text-muted-foreground\\\">\\n                  Calories/day\\n                </div>\\n              </div>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(10)}\\n                disabled={goal >= 400}\\n              >\\n                <Plus />\\n                <span className=\\\"sr-only\\\">Increase</span>\\n              </Button>\\n            </div>\\n            <div className=\\\"mt-3 h-[120px]\\\">\\n              <ResponsiveContainer width=\\\"100%\\\" height=\\\"100%\\\">\\n                <BarChart data={data}>\\n                  <Bar\\n                    dataKey=\\\"goal\\\"\\n                    style={\\n                      {\\n                        fill: \\\"hsl(var(--foreground))\\\",\\n                        opacity: 0.9,\\n                      } as React.CSSProperties\\n                    }\\n                  />\\n                </BarChart>\\n              </ResponsiveContainer>\\n            </div>\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </div>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/drawer-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-dialog\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/drawer-dialog.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/default/ui/dialog\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/default/ui/drawer\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function DrawerDialogDemo() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n\\n  if (isDesktop) {\\n    return (\\n      <Dialog open={open} onOpenChange={setOpen}>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Edit Profile</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Edit profile</DialogTitle>\\n            <DialogDescription>\\n              Make changes to your profile here. Click save when you're done.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ProfileForm />\\n        </DialogContent>\\n      </Dialog>\\n    )\\n  }\\n\\n  return (\\n    <Drawer open={open} onOpenChange={setOpen}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\">Edit Profile</Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"text-left\\\">\\n          <DrawerTitle>Edit profile</DrawerTitle>\\n          <DrawerDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <ProfileForm className=\\\"px-4\\\" />\\n        <DrawerFooter className=\\\"pt-2\\\">\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Cancel</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\\nfunction ProfileForm({ className }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"grid items-start gap-4\\\", className)}>\\n      <div className=\\\"grid gap-2\\\">\\n        <Label htmlFor=\\\"email\\\">Email</Label>\\n        <Input type=\\\"email\\\" id=\\\"email\\\" defaultValue=\\\"shadcn@example.com\\\" />\\n      </div>\\n      <div className=\\\"grid gap-2\\\">\\n        <Label htmlFor=\\\"username\\\">Username</Label>\\n        <Input id=\\\"username\\\" defaultValue=\\\"@shadcn\\\" />\\n      </div>\\n      <Button type=\\\"submit\\\">Save changes</Button>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"vaul\",\n    \"@radix-ui/react-dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Drawer = ({\\n  shouldScaleBackground = true,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\\n  <DrawerPrimitive.Root\\n    shouldScaleBackground={shouldScaleBackground}\\n    {...props}\\n  />\\n)\\nDrawer.displayName = \\\"Drawer\\\"\\n\\nconst DrawerTrigger = DrawerPrimitive.Trigger\\n\\nconst DrawerPortal = DrawerPrimitive.Portal\\n\\nconst DrawerClose = DrawerPrimitive.Close\\n\\nconst DrawerOverlay = React.forwardRef<\\n  React.ElementRef<typeof DrawerPrimitive.Overlay>,\\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\\n>(({ className, ...props }, ref) => (\\n  <DrawerPrimitive.Overlay\\n    ref={ref}\\n    className={cn(\\\"fixed inset-0 z-50 bg-black/80\\\", className)}\\n    {...props}\\n  />\\n))\\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\\n\\nconst DrawerContent = React.forwardRef<\\n  React.ElementRef<typeof DrawerPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\\n>(({ className, children, ...props }, ref) => (\\n  <DrawerPortal>\\n    <DrawerOverlay />\\n    <DrawerPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\\\" />\\n      {children}\\n    </DrawerPrimitive.Content>\\n  </DrawerPortal>\\n))\\nDrawerContent.displayName = \\\"DrawerContent\\\"\\n\\nconst DrawerHeader = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\\"grid gap-1.5 p-4 text-center sm:text-left\\\", className)}\\n    {...props}\\n  />\\n)\\nDrawerHeader.displayName = \\\"DrawerHeader\\\"\\n\\nconst DrawerFooter = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n    {...props}\\n  />\\n)\\nDrawerFooter.displayName = \\\"DrawerFooter\\\"\\n\\nconst DrawerTitle = React.forwardRef<\\n  React.ElementRef<typeof DrawerPrimitive.Title>,\\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\\n>(({ className, ...props }, ref) => (\\n  <DrawerPrimitive.Title\\n    ref={ref}\\n    className={cn(\\n      \\\"text-lg font-semibold leading-none tracking-tight\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\\n\\nconst DrawerDescription = React.forwardRef<\\n  React.ElementRef<typeof DrawerPrimitive.Description>,\\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\\n>(({ className, ...props }, ref) => (\\n  <DrawerPrimitive.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/dropdown-menu-checkboxes.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-checkboxes\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dropdown-menu\",\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dropdown-menu-checkboxes.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DropdownMenuCheckboxItemProps } from \\\"@radix-ui/react-dropdown-menu\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\ntype Checked = DropdownMenuCheckboxItemProps[\\\"checked\\\"]\\n\\nexport default function DropdownMenuCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState<Checked>(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState<Checked>(false)\\n  const [showPanel, setShowPanel] = React.useState<Checked>(false)\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuCheckboxItem\\n          checked={showStatusBar}\\n          onCheckedChange={setShowStatusBar}\\n        >\\n          Status Bar\\n        </DropdownMenuCheckboxItem>\\n        <DropdownMenuCheckboxItem\\n          checked={showActivityBar}\\n          onCheckedChange={setShowActivityBar}\\n          disabled\\n        >\\n          Activity Bar\\n        </DropdownMenuCheckboxItem>\\n        <DropdownMenuCheckboxItem\\n          checked={showPanel}\\n          onCheckedChange={setShowPanel}\\n        >\\n          Panel\\n        </DropdownMenuCheckboxItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/dropdown-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dropdown-menu-demo.tsx\",\n      \"content\": \"import {\\n  Cloud,\\n  CreditCard,\\n  Github,\\n  Keyboard,\\n  LifeBuoy,\\n  LogOut,\\n  Mail,\\n  MessageSquare,\\n  Plus,\\n  PlusCircle,\\n  Settings,\\n  User,\\n  UserPlus,\\n  Users,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nexport default function DropdownMenuDemo() {\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>\\n            <User />\\n            <span>Profile</span>\\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <CreditCard />\\n            <span>Billing</span>\\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <Settings />\\n            <span>Settings</span>\\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            <Keyboard />\\n            <span>Keyboard shortcuts</span>\\n            <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>\\n            <Users />\\n            <span>Team</span>\\n          </DropdownMenuItem>\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger>\\n              <UserPlus />\\n              <span>Invite users</span>\\n            </DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuItem>\\n                  <Mail />\\n                  <span>Email</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <MessageSquare />\\n                  <span>Message</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <PlusCircle />\\n                  <span>More...</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n          <DropdownMenuItem>\\n            <Plus />\\n            <span>New Team</span>\\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>\\n          <Github />\\n          <span>GitHub</span>\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <LifeBuoy />\\n          <span>Support</span>\\n        </DropdownMenuItem>\\n        <DropdownMenuItem disabled>\\n          <Cloud />\\n          <span>API</span>\\n        </DropdownMenuItem>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>\\n          <LogOut />\\n          <span>Log out</span>\\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n        </DropdownMenuItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/dropdown-menu-radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-radio-group\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dropdown-menu\",\n    \"radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dropdown-menu-radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuLabel,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nexport default function DropdownMenuRadioGroupDemo() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\\n          <DropdownMenuRadioItem value=\\\"top\\\">Top</DropdownMenuRadioItem>\\n          <DropdownMenuRadioItem value=\\\"bottom\\\">Bottom</DropdownMenuRadioItem>\\n          <DropdownMenuRadioItem value=\\\"right\\\">Right</DropdownMenuRadioItem>\\n        </DropdownMenuRadioGroup>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DropdownMenuPrimitive from \\\"@radix-ui/react-dropdown-menu\\\"\\nimport { Check, ChevronRight, Circle } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst DropdownMenu = DropdownMenuPrimitive.Root\\n\\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\\n\\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\\n\\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\\n\\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\\n\\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\\n\\nconst DropdownMenuSubTrigger = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, children, ...props }, ref) => (\\n  <DropdownMenuPrimitive.SubTrigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <ChevronRight className=\\\"ml-auto\\\" />\\n  </DropdownMenuPrimitive.SubTrigger>\\n))\\nDropdownMenuSubTrigger.displayName =\\n  DropdownMenuPrimitive.SubTrigger.displayName\\n\\nconst DropdownMenuSubContent = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\\n>(({ className, ...props }, ref) => (\\n  <DropdownMenuPrimitive.SubContent\\n    ref={ref}\\n    className={cn(\\n      \\\"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDropdownMenuSubContent.displayName =\\n  DropdownMenuPrimitive.SubContent.displayName\\n\\nconst DropdownMenuContent = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\\n>(({ className, sideOffset = 4, ...props }, ref) => (\\n  <DropdownMenuPrimitive.Portal>\\n    <DropdownMenuPrimitive.Content\\n      ref={ref}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </DropdownMenuPrimitive.Portal>\\n))\\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\\n\\nconst DropdownMenuItem = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <DropdownMenuPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\\n\\nconst DropdownMenuCheckboxItem = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\\n>(({ className, children, checked, ...props }, ref) => (\\n  <DropdownMenuPrimitive.CheckboxItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    checked={checked}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <DropdownMenuPrimitive.ItemIndicator>\\n        <Check className=\\\"h-4 w-4\\\" />\\n      </DropdownMenuPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </DropdownMenuPrimitive.CheckboxItem>\\n))\\nDropdownMenuCheckboxItem.displayName =\\n  DropdownMenuPrimitive.CheckboxItem.displayName\\n\\nconst DropdownMenuRadioItem = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\\n>(({ className, children, ...props }, ref) => (\\n  <DropdownMenuPrimitive.RadioItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <DropdownMenuPrimitive.ItemIndicator>\\n        <Circle className=\\\"h-2 w-2 fill-current\\\" />\\n      </DropdownMenuPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </DropdownMenuPrimitive.RadioItem>\\n))\\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\\n\\nconst DropdownMenuLabel = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <DropdownMenuPrimitive.Label\\n    ref={ref}\\n    className={cn(\\n      \\\"px-2 py-1.5 text-sm font-semibold\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\\n\\nconst DropdownMenuSeparator = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <DropdownMenuPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 my-1 h-px bg-muted\\\", className)}\\n    {...props}\\n  />\\n))\\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\\n\\nconst DropdownMenuShortcut = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLSpanElement>) => {\\n  return (\\n    <span\\n      className={cn(\\\"ml-auto text-xs tracking-widest opacity-60\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\nDropdownMenuShortcut.displayName = \\\"DropdownMenuShortcut\\\"\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuGroup,\\n  DropdownMenuPortal,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\n        \\\"flex max-w-sm flex-col items-center gap-2 text-center\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\\"text-lg font-medium tracking-tight\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-6\\\",\\n        \\\"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-3 font-medium\\\",\\n        \\\"data-[variant=legend]:text-base\\\",\\n        \\\"data-[variant=label]:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field data-[invalid=true]:text-destructive flex w-full gap-3\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: [\\\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\\\"],\\n        horizontal: [\\n          \\\"flex-row items-center\\\",\\n          \\\"[&>[data-slot=field-label]]:flex-auto\\\",\\n          \\\"has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start\\\",\\n        ],\\n        responsive: [\\n          \\\"@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto\\\",\\n          \\\"@md/field-group:[&>[data-slot=field-label]]:flex-auto\\\",\\n          \\\"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        ],\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4\\\",\\n        \\\"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance\\\",\\n        \\\"nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors) {\\n      return null\\n    }\\n\\n    if (errors?.length === 1 && errors[0]?.message) {\\n      return errors[0].message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {errors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-destructive text-sm font-normal\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-label\",\n    \"@radix-ui/react-slot\",\n    \"@hookform/resolvers\",\n    \"zod\",\n    \"react-hook-form\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as LabelPrimitive from \\\"@radix-ui/react-label\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport {\\n  Controller,\\n  FormProvider,\\n  useFormContext,\\n  type ControllerProps,\\n  type FieldPath,\\n  type FieldValues,\\n} from \\\"react-hook-form\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nconst Form = FormProvider\\n\\ntype FormFieldContextValue<\\n  TFieldValues extends FieldValues = FieldValues,\\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\\n> = {\\n  name: TName\\n}\\n\\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null)\\n\\nconst FormField = <\\n  TFieldValues extends FieldValues = FieldValues,\\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\\n>({\\n  ...props\\n}: ControllerProps<TFieldValues, TName>) => {\\n  return (\\n    <FormFieldContext.Provider value={{ name: props.name }}>\\n      <Controller {...props} />\\n    </FormFieldContext.Provider>\\n  )\\n}\\n\\nconst useFormField = () => {\\n  const fieldContext = React.useContext(FormFieldContext)\\n  const itemContext = React.useContext(FormItemContext)\\n  const { getFieldState, formState } = useFormContext()\\n\\n  if (!fieldContext) {\\n    throw new Error(\\\"useFormField should be used within <FormField>\\\")\\n  }\\n\\n  if (!itemContext) {\\n    throw new Error(\\\"useFormField should be used within <FormItem>\\\")\\n  }\\n\\n  const fieldState = getFieldState(fieldContext.name, formState)\\n\\n  const { id } = itemContext\\n\\n  return {\\n    id,\\n    name: fieldContext.name,\\n    formItemId: `${id}-form-item`,\\n    formDescriptionId: `${id}-form-item-description`,\\n    formMessageId: `${id}-form-item-message`,\\n    ...fieldState,\\n  }\\n}\\n\\ntype FormItemContextValue = {\\n  id: string\\n}\\n\\nconst FormItemContext = React.createContext<FormItemContextValue | null>(null)\\n\\nconst FormItem = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => {\\n  const id = React.useId()\\n\\n  return (\\n    <FormItemContext.Provider value={{ id }}>\\n      <div ref={ref} className={cn(\\\"space-y-2\\\", className)} {...props} />\\n    </FormItemContext.Provider>\\n  )\\n})\\nFormItem.displayName = \\\"FormItem\\\"\\n\\nconst FormLabel = React.forwardRef<\\n  React.ElementRef<typeof LabelPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\\n>(({ className, ...props }, ref) => {\\n  const { error, formItemId } = useFormField()\\n\\n  return (\\n    <Label\\n      ref={ref}\\n      className={cn(error && \\\"text-destructive\\\", className)}\\n      htmlFor={formItemId}\\n      {...props}\\n    />\\n  )\\n})\\nFormLabel.displayName = \\\"FormLabel\\\"\\n\\nconst FormControl = React.forwardRef<\\n  React.ElementRef<typeof Slot>,\\n  React.ComponentPropsWithoutRef<typeof Slot>\\n>(({ ...props }, ref) => {\\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\\n\\n  return (\\n    <Slot\\n      ref={ref}\\n      id={formItemId}\\n      aria-describedby={\\n        !error\\n          ? `${formDescriptionId}`\\n          : `${formDescriptionId} ${formMessageId}`\\n      }\\n      aria-invalid={!!error}\\n      {...props}\\n    />\\n  )\\n})\\nFormControl.displayName = \\\"FormControl\\\"\\n\\nconst FormDescription = React.forwardRef<\\n  HTMLParagraphElement,\\n  React.HTMLAttributes<HTMLParagraphElement>\\n>(({ className, ...props }, ref) => {\\n  const { formDescriptionId } = useFormField()\\n\\n  return (\\n    <p\\n      ref={ref}\\n      id={formDescriptionId}\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nFormDescription.displayName = \\\"FormDescription\\\"\\n\\nconst FormMessage = React.forwardRef<\\n  HTMLParagraphElement,\\n  React.HTMLAttributes<HTMLParagraphElement>\\n>(({ className, children, ...props }, ref) => {\\n  const { error, formMessageId } = useFormField()\\n  const body = error ? String(error?.message ?? \\\"\\\") : children\\n\\n  if (!body) {\\n    return null\\n  }\\n\\n  return (\\n    <p\\n      ref={ref}\\n      id={formMessageId}\\n      className={cn(\\\"text-sm font-medium text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {body}\\n    </p>\\n  )\\n})\\nFormMessage.displayName = \\\"FormMessage\\\"\\n\\nexport {\\n  useFormField,\\n  Form,\\n  FormItem,\\n  FormLabel,\\n  FormControl,\\n  FormDescription,\\n  FormMessage,\\n  FormField,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/hover-card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"hover-card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/hover-card-demo.tsx\",\n      \"content\": \"import { CalendarDays } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/default/ui/hover-card\\\"\\n\\nexport default function HoverCardDemo() {\\n  return (\\n    <HoverCard>\\n      <HoverCardTrigger asChild>\\n        <Button variant=\\\"link\\\">@nextjs</Button>\\n      </HoverCardTrigger>\\n      <HoverCardContent className=\\\"w-80\\\">\\n        <div className=\\\"flex justify-between space-x-4\\\">\\n          <Avatar>\\n            <AvatarImage src=\\\"https://github.com/vercel.png\\\" />\\n            <AvatarFallback>VC</AvatarFallback>\\n          </Avatar>\\n          <div className=\\\"space-y-1\\\">\\n            <h4 className=\\\"text-sm font-semibold\\\">@nextjs</h4>\\n            <p className=\\\"text-sm\\\">\\n              The React Framework – created and maintained by @vercel.\\n            </p>\\n            <div className=\\\"flex items-center pt-2\\\">\\n              <CalendarDays className=\\\"mr-2 h-4 w-4 opacity-70\\\" />{\\\" \\\"}\\n              <span className=\\\"text-xs text-muted-foreground\\\">\\n                Joined December 2021\\n              </span>\\n            </div>\\n          </div>\\n        </div>\\n      </HoverCardContent>\\n    </HoverCard>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-hover-card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as HoverCardPrimitive from \\\"@radix-ui/react-hover-card\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst HoverCard = HoverCardPrimitive.Root\\n\\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\\n\\nconst HoverCardContent = React.forwardRef<\\n  React.ElementRef<typeof HoverCardPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\\n>(({ className, align = \\\"center\\\", sideOffset = 4, ...props }, ref) => (\\n  <HoverCardPrimitive.Content\\n    ref={ref}\\n    align={align}\\n    sideOffset={sideOffset}\\n    className={cn(\\n      \\\"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"type\": \"registry:style\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"tailwindcss-animate\",\n    \"class-variance-authority\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"tailwind\": {\n    \"config\": {\n      \"plugins\": [\n        \"require(\\\"tailwindcss-animate\\\")\"\n      ]\n    }\n  },\n  \"cssVars\": {}\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-demo.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/default/ui/input\\\"\\n\\nexport default function InputDemo() {\\n  return <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-disabled.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/default/ui/input\\\"\\n\\nexport default function InputDisabled() {\\n  return <Input disabled type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-file.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-file\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-file.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function InputFile() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-1.5\\\">\\n      <Label htmlFor=\\\"picture\\\">Picture</Label>\\n      <Input id=\\\"picture\\\" type=\\\"file\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\n\\nconst FormSchema = z.object({\\n  username: z.string().min(2, {\\n    message: \\\"Username must be at least 2 characters.\\\",\\n  }),\\n})\\n\\nexport default function InputForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      username: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"username\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Username</FormLabel>\\n              <FormControl>\\n                <Input placeholder=\\\"shadcn\\\" {...field} />\\n              </FormControl>\\n              <FormDescription>\\n                This is your public display name.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/default/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group border-input dark:bg-input/30 shadow-xs relative flex w-full items-center rounded-md border outline-none transition-[color,box-shadow]\\\",\\n        \\\"h-9 has-[>textarea]:h-auto\\\",\\n\\n        // Variants based on alignment.\\n        \\\"has-[>[data-align=inline-start]]:[&>input]:pl-2\\\",\\n        \\\"has-[>[data-align=inline-end]]:[&>input]:pr-2\\\",\\n        \\\"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\\\",\\n        \\\"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\\\",\\n\\n        // Focus state.\\n        \\\"has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1\\\",\\n\\n        // Error state.\\n        \\\"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\\\",\\n\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5\\\",\\n        \\\"block-end\\\":\\n          \\\"[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants>) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"text-muted-foreground flex items-center gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-otp-controlled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-controlled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-controlled.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/default/ui/input-otp\\\"\\n\\nexport default function InputOTPControlled() {\\n  const [value, setValue] = React.useState(\\\"\\\")\\n\\n  return (\\n    <div className=\\\"space-y-2\\\">\\n      <InputOTP\\n        maxLength={6}\\n        value={value}\\n        onChange={(value) => setValue(value)}\\n      >\\n        <InputOTPGroup>\\n          <InputOTPSlot index={0} />\\n          <InputOTPSlot index={1} />\\n          <InputOTPSlot index={2} />\\n          <InputOTPSlot index={3} />\\n          <InputOTPSlot index={4} />\\n          <InputOTPSlot index={5} />\\n        </InputOTPGroup>\\n      </InputOTP>\\n      <div className=\\\"text-center text-sm\\\">\\n        {value === \\\"\\\" ? (\\n          <>Enter your one-time password.</>\\n        ) : (\\n          <>You entered: {value}</>\\n        )}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-otp-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-demo.tsx\",\n      \"content\": \"import {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/default/ui/input-otp\\\"\\n\\nexport default function InputOTPDemo() {\\n  return (\\n    <InputOTP maxLength={6}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n        <InputOTPSlot index={2} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={3} />\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-otp-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/default/ui/input-otp\\\"\\n\\nconst FormSchema = z.object({\\n  pin: z.string().min(6, {\\n    message: \\\"Your one-time password must be 6 characters.\\\",\\n  }),\\n})\\n\\nexport default function InputOTPForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      pin: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"pin\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>One-Time Password</FormLabel>\\n              <FormControl>\\n                <InputOTP maxLength={6} {...field}>\\n                  <InputOTPGroup>\\n                    <InputOTPSlot index={0} />\\n                    <InputOTPSlot index={1} />\\n                    <InputOTPSlot index={2} />\\n                    <InputOTPSlot index={3} />\\n                    <InputOTPSlot index={4} />\\n                    <InputOTPSlot index={5} />\\n                  </InputOTPGroup>\\n                </InputOTP>\\n              </FormControl>\\n              <FormDescription>\\n                Please enter the one-time password sent to your phone.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-otp-pattern.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-pattern\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-pattern.tsx\",\n      \"content\": \"import { REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/default/ui/input-otp\\\"\\n\\nexport default function InputOTPPattern() {\\n  return (\\n    <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n        <InputOTPSlot index={2} />\\n        <InputOTPSlot index={3} />\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-otp-separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-separator\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-separator.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/default/ui/input-otp\\\"\\n\\nexport default function InputOTPWithSeparator() {\\n  return (\\n    <InputOTP maxLength={6}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={2} />\\n        <InputOTPSlot index={3} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\nimport { Dot } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst InputOTP = React.forwardRef<\\n  React.ElementRef<typeof OTPInput>,\\n  React.ComponentPropsWithoutRef<typeof OTPInput>\\n>(({ className, containerClassName, ...props }, ref) => (\\n  <OTPInput\\n    ref={ref}\\n    containerClassName={cn(\\n      \\\"flex items-center gap-2 has-[:disabled]:opacity-50\\\",\\n      containerClassName\\n    )}\\n    className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n    {...props}\\n  />\\n))\\nInputOTP.displayName = \\\"InputOTP\\\"\\n\\nconst InputOTPGroup = React.forwardRef<\\n  React.ElementRef<\\\"div\\\">,\\n  React.ComponentPropsWithoutRef<\\\"div\\\">\\n>(({ className, ...props }, ref) => (\\n  <div ref={ref} className={cn(\\\"flex items-center\\\", className)} {...props} />\\n))\\nInputOTPGroup.displayName = \\\"InputOTPGroup\\\"\\n\\nconst InputOTPSlot = React.forwardRef<\\n  React.ElementRef<\\\"div\\\">,\\n  React.ComponentPropsWithoutRef<\\\"div\\\"> & { index: number }\\n>(({ index, className, ...props }, ref) => {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]\\n\\n  return (\\n    <div\\n      ref={ref}\\n      className={cn(\\n        \\\"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\\\",\\n        isActive && \\\"z-10 ring-2 ring-ring ring-offset-background\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n})\\nInputOTPSlot.displayName = \\\"InputOTPSlot\\\"\\n\\nconst InputOTPSeparator = React.forwardRef<\\n  React.ElementRef<\\\"div\\\">,\\n  React.ComponentPropsWithoutRef<\\\"div\\\">\\n>(({ ...props }, ref) => (\\n  <div ref={ref} role=\\\"separator\\\" {...props}>\\n    <Dot />\\n  </div>\\n))\\nInputOTPSeparator.displayName = \\\"InputOTPSeparator\\\"\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-with-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-button\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-with-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\n\\nexport default function InputWithButton() {\\n  return (\\n    <div className=\\\"flex w-full max-w-sm items-center space-x-2\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n      <Button type=\\\"submit\\\">Subscribe</Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-with-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-label\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-with-label.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function InputWithLabel() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-1.5\\\">\\n      <Label htmlFor=\\\"email\\\">Email</Label>\\n      <Input type=\\\"email\\\" id=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-text\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-with-text.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function InputWithText() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-1.5\\\">\\n      <Label htmlFor=\\\"email-2\\\">Email</Label>\\n      <Input type=\\\"email\\\" id=\\\"email-2\\\" placeholder=\\\"Email\\\" />\\n      <p className=\\\"text-sm text-muted-foreground\\\">Enter your email address.</p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\\\"input\\\">>(\\n  ({ className, type, ...props }, ref) => {\\n    return (\\n      <input\\n        type={type}\\n        className={cn(\\n          \\\"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n          className\\n        )}\\n        ref={ref}\\n        {...props}\\n      />\\n    )\\n  }\\n)\\nInput.displayName = \\\"Input\\\"\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\\"group/item-group flex flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 [a]:transition-colors flex flex-wrap items-center rounded-md border border-transparent text-sm outline-none transition-colors duration-100 focus-visible:ring-[3px]\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-4 p-4 \\\",\\n        sm: \\\"gap-2.5 px-4 py-3\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> &\\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot : \\\"div\\\"\\n  return (\\n    <Comp\\n      data-slot=\\\"item\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(itemVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"bg-muted size-8 rounded-sm border [&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm font-medium leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"text-muted-foreground line-clamp-2 text-balance text-sm font-normal leading-normal\\\",\\n        \\\"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 select-none items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium\\\",\\n        \\\"[&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/label-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/label-demo.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport default function LabelDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <Label htmlFor=\\\"terms\\\">Accept terms and conditions</Label>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as LabelPrimitive from \\\"@radix-ui/react-label\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst labelVariants = cva(\\n  \\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n)\\n\\nconst Label = React.forwardRef<\\n  React.ElementRef<typeof LabelPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\\n    VariantProps<typeof labelVariants>\\n>(({ className, ...props }, ref) => (\\n  <LabelPrimitive.Root\\n    ref={ref}\\n    className={cn(labelVariants(), className)}\\n    {...props}\\n  />\\n))\\nLabel.displayName = LabelPrimitive.Root.displayName\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/default/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/default/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle className=\\\"text-2xl\\\">Login</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <div className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"grid gap-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </div>\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex items-center\\\">\\n                  <Label htmlFor=\\\"password\\\">Password</Label>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </div>\\n              <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n                Login\\n              </Button>\\n              <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                Login with Google\\n              </Button>\\n            </div>\\n            <div className=\\\"mt-4 text-center text-sm\\\">\\n              Don&apos;t have an account?{\\\" \\\"}\\n              <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n                Sign up\\n              </a>\\n            </div>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-02/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { LoginForm } from \\\"@/registry/default/blocks/login-02/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex h-6 w-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <GalleryVerticalEnd className=\\\"size-4\\\" />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/default/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n        <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n        <p className=\\\"text-balance text-sm text-muted-foreground\\\">\\n          Enter your email below to login to your account\\n        </p>\\n      </div>\\n      <div className=\\\"grid gap-6\\\">\\n        <div className=\\\"grid gap-2\\\">\\n          <Label htmlFor=\\\"email\\\">Email</Label>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n        </div>\\n        <div className=\\\"grid gap-2\\\">\\n          <div className=\\\"flex items-center\\\">\\n            <Label htmlFor=\\\"password\\\">Password</Label>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n        </div>\\n        <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n          Login\\n        </Button>\\n        <div className=\\\"relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border\\\">\\n          <span className=\\\"relative z-10 bg-background px-2 text-muted-foreground\\\">\\n            Or continue with\\n          </span>\\n        </div>\\n        <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n          <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n            <path\\n              d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n              fill=\\\"currentColor\\\"\\n            />\\n          </svg>\\n          Login with GitHub\\n        </Button>\\n      </div>\\n      <div className=\\\"text-center text-sm\\\">\\n        Don&apos;t have an account?{\\\" \\\"}\\n        <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n          Sign up\\n        </a>\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-03/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { LoginForm } from \\\"@/registry/default/blocks/login-03/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex h-6 w-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <GalleryVerticalEnd className=\\\"size-4\\\" />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/default/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <div className=\\\"grid gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </div>\\n              <div className=\\\"relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border\\\">\\n                <span className=\\\"relative z-10 bg-background px-2 text-muted-foreground\\\">\\n                  Or continue with\\n                </span>\\n              </div>\\n              <div className=\\\"grid gap-6\\\">\\n                <div className=\\\"grid gap-2\\\">\\n                  <Label htmlFor=\\\"email\\\">Email</Label>\\n                  <Input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"m@example.com\\\"\\n                    required\\n                  />\\n                </div>\\n                <div className=\\\"grid gap-2\\\">\\n                  <div className=\\\"flex items-center\\\">\\n                    <Label htmlFor=\\\"password\\\">Password</Label>\\n                    <a\\n                      href=\\\"#\\\"\\n                      className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                    >\\n                      Forgot your password?\\n                    </a>\\n                  </div>\\n                  <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                </div>\\n                <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n                  Login\\n                </Button>\\n              </div>\\n              <div className=\\\"text-center text-sm\\\">\\n                Don&apos;t have an account?{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n                  Sign up\\n                </a>\\n              </div>\\n            </div>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <div className=\\\"text-balance text-center text-xs text-muted-foreground [&_a]:underline [&_a]:underline-offset-4 [&_a]:hover:text-primary  \\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/default/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-3xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/default/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/default/ui/card\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <div className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col items-center text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <div className=\\\"grid gap-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </div>\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex items-center\\\">\\n                  <Label htmlFor=\\\"password\\\">Password</Label>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </div>\\n              <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n                Login\\n              </Button>\\n              <div className=\\\"relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border\\\">\\n                <span className=\\\"relative z-10 bg-background px-2 text-muted-foreground\\\">\\n                  Or continue with\\n                </span>\\n              </div>\\n              <div className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </div>\\n              <div className=\\\"text-center text-sm\\\">\\n                Don&apos;t have an account?{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n                  Sign up\\n                </a>\\n              </div>\\n            </div>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <div className=\\\"text-balance text-center text-xs text-muted-foreground [&_a]:underline [&_a]:underline-offset-4 hover:[&_a]:text-primary\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/default/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-05/components/login-form.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/registry/default/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <div className=\\\"flex flex-col gap-6\\\">\\n          <div className=\\\"flex flex-col items-center gap-2\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex h-8 w-8 items-center justify-center rounded-md\\\">\\n                <GalleryVerticalEnd className=\\\"size-6\\\" />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <div className=\\\"text-center text-sm\\\">\\n              Don&apos;t have an account?{\\\" \\\"}\\n              <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n                Sign up\\n              </a>\\n            </div>\\n          </div>\\n          <div className=\\\"flex flex-col gap-6\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n            </div>\\n            <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n              Login\\n            </Button>\\n          </div>\\n          <div className=\\\"relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border\\\">\\n            <span className=\\\"relative z-10 bg-background px-2 text-muted-foreground\\\">\\n              Or\\n            </span>\\n          </div>\\n          <div className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </div>\\n        </div>\\n      </form>\\n      <div className=\\\"text-balance text-center text-xs text-muted-foreground [&_a]:underline [&_a]:underline-offset-4 hover:[&_a]:text-primary  \\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/menubar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"menubar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/menubar-demo.tsx\",\n      \"content\": \"import {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarItem,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/default/ui/menubar\\\"\\n\\nexport default function MenubarDemo() {\\n  return (\\n    <Menubar>\\n      <MenubarMenu>\\n        <MenubarTrigger>File</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled>New Incognito Window</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Email link</MenubarItem>\\n              <MenubarItem>Messages</MenubarItem>\\n              <MenubarItem>Notes</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>\\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n          </MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Edit</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Search the web</MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem>Find...</MenubarItem>\\n              <MenubarItem>Find Next</MenubarItem>\\n              <MenubarItem>Find Previous</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>Cut</MenubarItem>\\n          <MenubarItem>Copy</MenubarItem>\\n          <MenubarItem>Paste</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>View</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n          <MenubarCheckboxItem checked>\\n            Always Show Full URLs\\n          </MenubarCheckboxItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>\\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled inset>\\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Toggle Fullscreen</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Hide Sidebar</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Profiles</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarRadioGroup value=\\\"benoit\\\">\\n            <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"Luis\\\">Luis</MenubarRadioItem>\\n          </MenubarRadioGroup>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Edit...</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Add Profile...</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n    </Menubar>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-menubar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as MenubarPrimitive from \\\"@radix-ui/react-menubar\\\"\\nimport { Check, ChevronRight, Circle } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction MenubarMenu({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\\n  return <MenubarPrimitive.Menu {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\\n  return <MenubarPrimitive.Group {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\\n  return <MenubarPrimitive.Portal {...props} />\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\\n  return <MenubarPrimitive.RadioGroup {...props} />\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\\n  return <MenubarPrimitive.Sub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nconst Menubar = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\\n>(({ className, ...props }, ref) => (\\n  <MenubarPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"flex h-10 items-center space-x-1 rounded-md border bg-background p-1\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubar.displayName = MenubarPrimitive.Root.displayName\\n\\nconst MenubarTrigger = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\\n>(({ className, ...props }, ref) => (\\n  <MenubarPrimitive.Trigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\\n\\nconst MenubarSubTrigger = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, children, ...props }, ref) => (\\n  <MenubarPrimitive.SubTrigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <ChevronRight className=\\\"ml-auto h-4 w-4\\\" />\\n  </MenubarPrimitive.SubTrigger>\\n))\\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\\n\\nconst MenubarSubContent = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.SubContent>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\\n>(({ className, ...props }, ref) => (\\n  <MenubarPrimitive.SubContent\\n    ref={ref}\\n    className={cn(\\n      \\\"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\\n\\nconst MenubarContent = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\\n>(\\n  (\\n    { className, align = \\\"start\\\", alignOffset = -4, sideOffset = 8, ...props },\\n    ref\\n  ) => (\\n    <MenubarPrimitive.Portal>\\n      <MenubarPrimitive.Content\\n        ref={ref}\\n        align={align}\\n        alignOffset={alignOffset}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </MenubarPrimitive.Portal>\\n  )\\n)\\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\\n\\nconst MenubarItem = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <MenubarPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\\n\\nconst MenubarCheckboxItem = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\\n>(({ className, children, checked, ...props }, ref) => (\\n  <MenubarPrimitive.CheckboxItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    checked={checked}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <MenubarPrimitive.ItemIndicator>\\n        <Check className=\\\"h-4 w-4\\\" />\\n      </MenubarPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </MenubarPrimitive.CheckboxItem>\\n))\\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\\n\\nconst MenubarRadioItem = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.RadioItem>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\\n>(({ className, children, ...props }, ref) => (\\n  <MenubarPrimitive.RadioItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <MenubarPrimitive.ItemIndicator>\\n        <Circle className=\\\"h-2 w-2 fill-current\\\" />\\n      </MenubarPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </MenubarPrimitive.RadioItem>\\n))\\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\\n\\nconst MenubarLabel = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Label>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <MenubarPrimitive.Label\\n    ref={ref}\\n    className={cn(\\n      \\\"px-2 py-1.5 text-sm font-semibold\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\\n\\nconst MenubarSeparator = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <MenubarPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 my-1 h-px bg-muted\\\", className)}\\n    {...props}\\n  />\\n))\\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\\n\\nconst MenubarShortcut = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLSpanElement>) => {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\nMenubarShortcut.displayname = \\\"MenubarShortcut\\\"\\n\\nexport {\\n  Menubar,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarItem,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarPortal,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarGroup,\\n  MenubarSub,\\n  MenubarShortcut,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/mode-toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"mode-toggle\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/mode-toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Moon, Sun } from \\\"lucide-react\\\"\\nimport { useTheme } from \\\"next-themes\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nexport default function ModeToggle() {\\n  const { setTheme } = useTheme()\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n          <Sun className=\\\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\\\" />\\n          <Moon className=\\\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\\\" />\\n          <span className=\\\"sr-only\\\">Toggle theme</span>\\n        </Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent align=\\\"end\\\">\\n        <DropdownMenuItem onClick={() => setTheme(\\\"light\\\")}>\\n          Light\\n        </DropdownMenuItem>\\n        <DropdownMenuItem onClick={() => setTheme(\\\"dark\\\")}>\\n          Dark\\n        </DropdownMenuItem>\\n        <DropdownMenuItem onClick={() => setTheme(\\\"system\\\")}>\\n          System\\n        </DropdownMenuItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/navigation-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"navigation-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/navigation-menu-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Icons } from \\\"@/components/icons\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/default/ui/navigation-menu\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuDemo() {\\n  return (\\n    <NavigationMenu>\\n      <NavigationMenuList>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid gap-3 p-6 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\\\">\\n              <li className=\\\"row-span-3\\\">\\n                <NavigationMenuLink asChild>\\n                  <a\\n                    className=\\\"flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md\\\"\\n                    href=\\\"/\\\"\\n                  >\\n                    <Icons.logo className=\\\"h-6 w-6\\\" />\\n                    <div className=\\\"mb-2 mt-4 text-lg font-medium\\\">\\n                      shadcn/ui\\n                    </div>\\n                    <p className=\\\"text-sm leading-tight text-muted-foreground\\\">\\n                      Beautifully designed components that you can copy and\\n                      paste into your apps. Accessible. Customizable. Open\\n                      Source.\\n                    </p>\\n                  </a>\\n                </NavigationMenuLink>\\n              </li>\\n              <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                Re-usable components built using Radix UI and Tailwind CSS.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                How to install dependencies and structure your app.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                Styles for headings, paragraphs, lists...etc\\n              </ListItem>\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px] \\\">\\n              {components.map((component) => (\\n                <ListItem\\n                  key={component.title}\\n                  title={component.title}\\n                  href={component.href}\\n                >\\n                  {component.description}\\n                </ListItem>\\n              ))}\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <Link href=\\\"/docs\\\" legacyBehavior passHref>\\n            <NavigationMenuLink className={navigationMenuTriggerStyle()}>\\n              Documentation\\n            </NavigationMenuLink>\\n          </Link>\\n        </NavigationMenuItem>\\n      </NavigationMenuList>\\n    </NavigationMenu>\\n  )\\n}\\n\\nconst ListItem = React.forwardRef<\\n  React.ElementRef<\\\"a\\\">,\\n  React.ComponentPropsWithoutRef<\\\"a\\\">\\n>(({ className, title, children, ...props }, ref) => {\\n  return (\\n    <li>\\n      <NavigationMenuLink asChild>\\n        <a\\n          ref={ref}\\n          className={cn(\\n            \\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <div className=\\\"text-sm font-medium leading-none\\\">{title}</div>\\n          <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n            {children}\\n          </p>\\n        </a>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n})\\nListItem.displayName = \\\"ListItem\\\"\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-navigation-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/navigation-menu.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport * as NavigationMenuPrimitive from \\\"@radix-ui/react-navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { ChevronDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst NavigationMenu = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\\n>(({ className, children, ...props }, ref) => (\\n  <NavigationMenuPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"relative z-10 flex max-w-max flex-1 items-center justify-center\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <NavigationMenuViewport />\\n  </NavigationMenuPrimitive.Root>\\n))\\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\\n\\nconst NavigationMenuList = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.List>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\\n>(({ className, ...props }, ref) => (\\n  <NavigationMenuPrimitive.List\\n    ref={ref}\\n    className={cn(\\n      \\\"group flex flex-1 list-none items-center justify-center space-x-1\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\\n\\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent\\\"\\n)\\n\\nconst NavigationMenuTrigger = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\\n>(({ className, children, ...props }, ref) => (\\n  <NavigationMenuPrimitive.Trigger\\n    ref={ref}\\n    className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n    {...props}\\n  >\\n    {children}{\\\" \\\"}\\n    <ChevronDown\\n      className=\\\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\\\"\\n      aria-hidden=\\\"true\\\"\\n    />\\n  </NavigationMenuPrimitive.Trigger>\\n))\\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\\n\\nconst NavigationMenuContent = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\\n>(({ className, ...props }, ref) => (\\n  <NavigationMenuPrimitive.Content\\n    ref={ref}\\n    className={cn(\\n      \\\"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto \\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\\n\\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\\n\\nconst NavigationMenuViewport = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\\n>(({ className, ...props }, ref) => (\\n  <div className={cn(\\\"absolute left-0 top-full flex justify-center\\\")}>\\n    <NavigationMenuPrimitive.Viewport\\n      className={cn(\\n        \\\"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\\\",\\n        className\\n      )}\\n      ref={ref}\\n      {...props}\\n    />\\n  </div>\\n))\\nNavigationMenuViewport.displayName =\\n  NavigationMenuPrimitive.Viewport.displayName\\n\\nconst NavigationMenuIndicator = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\\n>(({ className, ...props }, ref) => (\\n  <NavigationMenuPrimitive.Indicator\\n    ref={ref}\\n    className={cn(\\n      \\\"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n  </NavigationMenuPrimitive.Indicator>\\n))\\nNavigationMenuIndicator.displayName =\\n  NavigationMenuPrimitive.Indicator.displayName\\n\\nexport {\\n  navigationMenuTriggerStyle,\\n  NavigationMenu,\\n  NavigationMenuList,\\n  NavigationMenuItem,\\n  NavigationMenuContent,\\n  NavigationMenuTrigger,\\n  NavigationMenuLink,\\n  NavigationMenuIndicator,\\n  NavigationMenuViewport,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/pagination-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"pagination\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/pagination-demo.tsx\",\n      \"content\": \"import {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/default/ui/pagination\\\"\\n\\nexport default function PaginationDemo() {\\n  return (\\n    <Pagination>\\n      <PaginationContent>\\n        <PaginationItem>\\n          <PaginationPrevious href=\\\"#\\\" />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\" isActive>\\n            2\\n          </PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationEllipsis />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationNext href=\\\"#\\\" />\\n        </PaginationItem>\\n      </PaginationContent>\\n    </Pagination>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { ButtonProps, buttonVariants } from \\\"@/registry/default/ui/button\\\"\\n\\nconst Pagination = ({ className, ...props }: React.ComponentProps<\\\"nav\\\">) => (\\n  <nav\\n    role=\\\"navigation\\\"\\n    aria-label=\\\"pagination\\\"\\n    className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n    {...props}\\n  />\\n)\\nPagination.displayName = \\\"Pagination\\\"\\n\\nconst PaginationContent = React.forwardRef<\\n  HTMLUListElement,\\n  React.ComponentProps<\\\"ul\\\">\\n>(({ className, ...props }, ref) => (\\n  <ul\\n    ref={ref}\\n    className={cn(\\\"flex flex-row items-center gap-1\\\", className)}\\n    {...props}\\n  />\\n))\\nPaginationContent.displayName = \\\"PaginationContent\\\"\\n\\nconst PaginationItem = React.forwardRef<\\n  HTMLLIElement,\\n  React.ComponentProps<\\\"li\\\">\\n>(({ className, ...props }, ref) => (\\n  <li ref={ref} className={cn(\\\"\\\", className)} {...props} />\\n))\\nPaginationItem.displayName = \\\"PaginationItem\\\"\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<ButtonProps, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nconst PaginationLink = ({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) => (\\n  <a\\n    aria-current={isActive ? \\\"page\\\" : undefined}\\n    className={cn(\\n      buttonVariants({\\n        variant: isActive ? \\\"outline\\\" : \\\"ghost\\\",\\n        size,\\n      }),\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nPaginationLink.displayName = \\\"PaginationLink\\\"\\n\\nconst PaginationPrevious = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink>) => (\\n  <PaginationLink\\n    aria-label=\\\"Go to previous page\\\"\\n    size=\\\"default\\\"\\n    className={cn(\\\"gap-1 pl-2.5\\\", className)}\\n    {...props}\\n  >\\n    <ChevronLeft className=\\\"h-4 w-4\\\" />\\n    <span>Previous</span>\\n  </PaginationLink>\\n)\\nPaginationPrevious.displayName = \\\"PaginationPrevious\\\"\\n\\nconst PaginationNext = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink>) => (\\n  <PaginationLink\\n    aria-label=\\\"Go to next page\\\"\\n    size=\\\"default\\\"\\n    className={cn(\\\"gap-1 pr-2.5\\\", className)}\\n    {...props}\\n  >\\n    <span>Next</span>\\n    <ChevronRight className=\\\"h-4 w-4\\\" />\\n  </PaginationLink>\\n)\\nPaginationNext.displayName = \\\"PaginationNext\\\"\\n\\nconst PaginationEllipsis = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) => (\\n  <span\\n    aria-hidden\\n    className={cn(\\\"flex h-9 w-9 items-center justify-center\\\", className)}\\n    {...props}\\n  >\\n    <MoreHorizontal className=\\\"h-4 w-4\\\" />\\n    <span className=\\\"sr-only\\\">More pages</span>\\n  </span>\\n)\\nPaginationEllipsis.displayName = \\\"PaginationEllipsis\\\"\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/popover-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/popover-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport default function PopoverDemo() {\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open popover</Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-80\\\">\\n        <div className=\\\"grid gap-4\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <h4 className=\\\"font-medium leading-none\\\">Dimensions</h4>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Set the dimensions for the layer.\\n            </p>\\n          </div>\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"width\\\">Width</Label>\\n              <Input\\n                id=\\\"width\\\"\\n                defaultValue=\\\"100%\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxWidth\\\">Max. width</Label>\\n              <Input\\n                id=\\\"maxWidth\\\"\\n                defaultValue=\\\"300px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"height\\\">Height</Label>\\n              <Input\\n                id=\\\"height\\\"\\n                defaultValue=\\\"25px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxHeight\\\">Max. height</Label>\\n              <Input\\n                id=\\\"maxHeight\\\"\\n                defaultValue=\\\"none\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n          </div>\\n        </div>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as PopoverPrimitive from \\\"@radix-ui/react-popover\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Popover = PopoverPrimitive.Root\\n\\nconst PopoverTrigger = PopoverPrimitive.Trigger\\n\\nconst PopoverContent = React.forwardRef<\\n  React.ElementRef<typeof PopoverPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\\n>(({ className, align = \\\"center\\\", sideOffset = 4, ...props }, ref) => (\\n  <PopoverPrimitive.Portal>\\n    <PopoverPrimitive.Content\\n      ref={ref}\\n      align={align}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </PopoverPrimitive.Portal>\\n))\\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\\n\\nexport { Popover, PopoverTrigger, PopoverContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/progress-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"progress\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/progress-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Progress } from \\\"@/registry/default/ui/progress\\\"\\n\\nexport default function ProgressDemo() {\\n  const [progress, setProgress] = React.useState(13)\\n\\n  React.useEffect(() => {\\n    const timer = setTimeout(() => setProgress(66), 500)\\n    return () => clearTimeout(timer)\\n  }, [])\\n\\n  return <Progress value={progress} className=\\\"w-[60%]\\\" />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-progress\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ProgressPrimitive from \\\"@radix-ui/react-progress\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Progress = React.forwardRef<\\n  React.ElementRef<typeof ProgressPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\\n>(({ className, value, ...props }, ref) => (\\n  <ProgressPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"relative h-4 w-full overflow-hidden rounded-full bg-secondary\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <ProgressPrimitive.Indicator\\n      className=\\\"h-full w-full flex-1 bg-primary transition-all\\\"\\n      style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n    />\\n  </ProgressPrimitive.Root>\\n))\\nProgress.displayName = ProgressPrimitive.Root.displayName\\n\\nexport { Progress }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/radio-group-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/radio-group-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/default/ui/radio-group\\\"\\n\\nexport default function RadioGroupDemo() {\\n  return (\\n    <RadioGroup defaultValue=\\\"comfortable\\\">\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n        <Label htmlFor=\\\"r1\\\">Default</Label>\\n      </div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n        <Label htmlFor=\\\"r2\\\">Comfortable</Label>\\n      </div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n        <Label htmlFor=\\\"r3\\\">Compact</Label>\\n      </div>\\n    </RadioGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/radio-group-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"radio-group\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/radio-group-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/default/ui/radio-group\\\"\\n\\nconst FormSchema = z.object({\\n  type: z.enum([\\\"all\\\", \\\"mentions\\\", \\\"none\\\"], {\\n    required_error: \\\"You need to select a notification type.\\\",\\n  }),\\n})\\n\\nexport default function RadioGroupForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"type\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"space-y-3\\\">\\n              <FormLabel>Notify me about...</FormLabel>\\n              <FormControl>\\n                <RadioGroup\\n                  onValueChange={field.onChange}\\n                  defaultValue={field.value}\\n                  className=\\\"flex flex-col space-y-1\\\"\\n                >\\n                  <FormItem className=\\\"flex items-center space-x-3 space-y-0\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"all\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">\\n                      All new messages\\n                    </FormLabel>\\n                  </FormItem>\\n                  <FormItem className=\\\"flex items-center space-x-3 space-y-0\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"mentions\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">\\n                      Direct messages and mentions\\n                    </FormLabel>\\n                  </FormItem>\\n                  <FormItem className=\\\"flex items-center space-x-3 space-y-0\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"none\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">Nothing</FormLabel>\\n                  </FormItem>\\n                </RadioGroup>\\n              </FormControl>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RadioGroupPrimitive from \\\"@radix-ui/react-radio-group\\\"\\nimport { Circle } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst RadioGroup = React.forwardRef<\\n  React.ElementRef<typeof RadioGroupPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <RadioGroupPrimitive.Root\\n      className={cn(\\\"grid gap-2\\\", className)}\\n      {...props}\\n      ref={ref}\\n    />\\n  )\\n})\\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\\n\\nconst RadioGroupItem = React.forwardRef<\\n  React.ElementRef<typeof RadioGroupPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <RadioGroupPrimitive.Item\\n      ref={ref}\\n      className={cn(\\n        \\\"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioGroupPrimitive.Indicator className=\\\"flex items-center justify-center\\\">\\n        <Circle className=\\\"h-2.5 w-2.5 fill-current text-current\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n})\\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\n        \"tailwindcss-animate\",\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"utils\"\n      ],\n      \"files\": [],\n      \"tailwind\": {\n        \"config\": {\n          \"plugins\": [\n            \"require(\\\"tailwindcss-animate\\\")\"\n          ]\n        }\n      },\n      \"cssVars\": {}\n    },\n    {\n      \"name\": \"style\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\n        \"tailwindcss-animate\",\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"utils\"\n      ],\n      \"files\": [],\n      \"tailwind\": {\n        \"config\": {\n          \"plugins\": [\n            \"require(\\\"tailwindcss-animate\\\")\"\n          ]\n        }\n      },\n      \"cssVars\": {}\n    },\n    {\n      \"name\": \"accordion\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-accordion\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/accordion.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ],\n      \"tailwind\": {\n        \"config\": {\n          \"theme\": {\n            \"extend\": {\n              \"keyframes\": {\n                \"accordion-down\": {\n                  \"from\": {\n                    \"height\": \"0\"\n                  },\n                  \"to\": {\n                    \"height\": \"var(--radix-accordion-content-height)\"\n                  }\n                },\n                \"accordion-up\": {\n                  \"from\": {\n                    \"height\": \"var(--radix-accordion-content-height)\"\n                  },\n                  \"to\": {\n                    \"height\": \"0\"\n                  }\n                }\n              },\n              \"animation\": {\n                \"accordion-down\": \"accordion-down 0.2s ease-out\",\n                \"accordion-up\": \"accordion-up 0.2s ease-out\"\n              }\n            }\n          }\n        }\n      }\n    },\n    {\n      \"name\": \"alert\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/alert.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-alert-dialog\"\n      ],\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-aspect-ratio\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"avatar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/avatar.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/badge.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/button.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/button-group.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-day-picker@latest\",\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/calendar.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/card.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"embla-carousel-react\"\n      ],\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/carousel.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"recharts@2.15.4\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/chart.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"collapsible\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"cmdk\"\n      ],\n      \"registryDependencies\": [\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/command.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"context-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-context-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/dialog.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"vaul\",\n        \"@radix-ui/react-dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/drawer.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/empty.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"label\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/field.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-label\",\n        \"@radix-ui/react-slot\",\n        \"@hookform/resolvers\",\n        \"zod\",\n        \"react-hook-form\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/form.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hover-card\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-hover-card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/input.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/input-group.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/item.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"kbd\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/kbd.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"label\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/label.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"menubar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-menubar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/menubar.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-navigation-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pagination\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/pagination.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"popover\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/popover.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"progress\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-progress\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/progress.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-resizable-panels\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/resizable.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-scroll-area\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/select.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"separator\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/separator.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/sheet.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\",\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ],\n      \"tailwind\": {\n        \"config\": {\n          \"theme\": {\n            \"extend\": {\n              \"colors\": {\n                \"sidebar\": {\n                  \"DEFAULT\": \"hsl(var(--sidebar-background))\",\n                  \"foreground\": \"hsl(var(--sidebar-foreground))\",\n                  \"primary\": \"hsl(var(--sidebar-primary))\",\n                  \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n                  \"accent\": \"hsl(var(--sidebar-accent))\",\n                  \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n                  \"border\": \"hsl(var(--sidebar-border))\",\n                  \"ring\": \"hsl(var(--sidebar-ring))\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"cssVars\": {\n        \"light\": {\n          \"sidebar-background\": \"0 0% 98%\",\n          \"sidebar-foreground\": \"240 5.3% 26.1%\",\n          \"sidebar-primary\": \"240 5.9% 10%\",\n          \"sidebar-primary-foreground\": \"0 0% 98%\",\n          \"sidebar-accent\": \"240 4.8% 95.9%\",\n          \"sidebar-accent-foreground\": \"240 5.9% 10%\",\n          \"sidebar-border\": \"220 13% 91%\",\n          \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n        },\n        \"dark\": {\n          \"sidebar-background\": \"240 5.9% 10%\",\n          \"sidebar-foreground\": \"240 4.8% 95.9%\",\n          \"sidebar-primary\": \"224.3 76.3% 48%\",\n          \"sidebar-primary-foreground\": \"0 0% 100%\",\n          \"sidebar-accent\": \"240 3.7% 15.9%\",\n          \"sidebar-accent-foreground\": \"240 4.8% 95.9%\",\n          \"sidebar-border\": \"240 3.7% 15.9%\",\n          \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n        }\n      }\n    },\n    {\n      \"name\": \"skeleton\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"slider\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slider\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/slider.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"sonner\",\n        \"next-themes\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/sonner.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"class-variance-authority\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/spinner.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/switch.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/table.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tabs\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-tabs\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/tabs.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/textarea.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/toast.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/hooks/use-toast.ts\",\n          \"type\": \"registry:hook\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/ui/toaster.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/toggle.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-toggle-group\"\n      ],\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tooltip\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"button\",\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"login-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"login-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"login-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"login-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"login-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"calendar-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple calendar.\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-01.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Multiple months with single selection.\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-02.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Multiple months with multiple selection.\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-03.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Single month with range selection\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-04.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0 xl:pt-28\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Multiple months with range selection\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-05.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Range selection with minimum days\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-06.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Range selection with minimum and maximum days\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-07.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Calendar with disabled days\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-08.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Calendar with disabled weekends\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-09.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Today button\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-10.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Start and end of month\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-11.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Localized calendar\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-12.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"With Month and Year Dropdown\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"label\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-13.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"With Booked/Unavailable Days\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-14.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"With Week Numbers\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-15.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-16\",\n      \"type\": \"registry:block\",\n      \"description\": \"With time picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-16.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-17\",\n      \"type\": \"registry:block\",\n      \"description\": \"With time picker inline\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-17.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-18\",\n      \"type\": \"registry:block\",\n      \"description\": \"Variable size\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-18.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-19\",\n      \"type\": \"registry:block\",\n      \"description\": \"With presets\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-19.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-20\",\n      \"type\": \"registry:block\",\n      \"description\": \"With time presets\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-20.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-21\",\n      \"type\": \"registry:block\",\n      \"description\": \"Custom days and formatters\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-21.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-22\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-22.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-23\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date range picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-23.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-24\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date and Time picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-24.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-25\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date and Time range picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-25.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-26\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date range picker with time\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-26.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-27\",\n      \"type\": \"registry:block\",\n      \"description\": \"Chart filter\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"chart\",\n        \"card\",\n        \"popover\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-27.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-28\",\n      \"type\": \"registry:block\",\n      \"description\": \"Input with date picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-28.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-29\",\n      \"type\": \"registry:block\",\n      \"description\": \"Natural language date picker\",\n      \"dependencies\": [\n        \"chrono-node\"\n      ],\n      \"registryDependencies\": [\n        \"calendar\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-29.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-30\",\n      \"type\": \"registry:block\",\n      \"description\": \"With little-date\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-30.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-31\",\n      \"type\": \"registry:block\",\n      \"description\": \"With event slots\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-31.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-32\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date picker in a drawer\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"button\",\n        \"drawer\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/blocks/calendar-32.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-axes\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-axes.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-gradient\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-gradient.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-icons.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-legend.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-linear\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-linear.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-stacked-expand\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-stacked-expand.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-stacked.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-step\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-area-step.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-active\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-active.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-horizontal\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-horizontal.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-interactive.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-label.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-mixed\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-mixed.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-multiple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-negative\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-negative.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-bar-stacked.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-dots-colors\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-dots-colors.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-dots-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-dots-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-dots\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-dots.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-interactive.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-label.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-linear\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-linear.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-multiple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-step\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-line-step.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-donut-active\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-donut-active.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-donut-text\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-donut-text.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-donut\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-donut.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-interactive.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-label-list\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-label-list.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-label.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-legend.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-separator-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-separator-none.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-simple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-simple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-pie-stacked.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-dots\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-dots.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle-fill\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-grid-circle-fill.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle-no-lines\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-grid-circle-no-lines.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-grid-circle.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-grid-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-fill\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-grid-fill.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-grid-none.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-icons.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-legend.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-lines-only\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-lines-only.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-multiple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-radius\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radar-radius.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-grid\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radial-grid.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radial-label.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-shape\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radial-shape.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-simple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radial-simple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radial-stacked.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-text\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-radial-text.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-indicator-line\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-indicator-line.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-indicator-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-indicator-none.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-label-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-label-none.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-label-formatter\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-label-formatter.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-formatter\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-formatter.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-icons.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-advanced\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/charts/chart-tooltip-advanced.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"utils\",\n      \"type\": \"registry:lib\",\n      \"dependencies\": [\n        \"clsx\",\n        \"tailwind-merge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/lib/utils.ts\",\n          \"type\": \"registry:lib\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"type\": \"registry:hook\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/hooks/use-mobile.tsx\",\n          \"type\": \"registry:hook\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"use-toast\",\n      \"type\": \"registry:hook\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/hooks/use-toast.ts\",\n          \"type\": \"registry:hook\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"theme-daylight\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"36 39% 88%\",\n          \"foreground\": \"36 45% 15%\",\n          \"primary\": \"36 45% 70%\",\n          \"primary-foreground\": \"36 45% 11%\",\n          \"secondary\": \"40 35% 77%\",\n          \"secondary-foreground\": \"36 45% 25%\",\n          \"accent\": \"36 64% 57%\",\n          \"accent-foreground\": \"36 72% 17%\",\n          \"destructive\": \"0 84% 37%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"muted\": \"36 33% 75%\",\n          \"muted-foreground\": \"36 45% 25%\",\n          \"card\": \"36 46% 82%\",\n          \"card-foreground\": \"36 45% 20%\",\n          \"popover\": \"0 0% 100%\",\n          \"popover-foreground\": \"240 10% 3.9%\",\n          \"border\": \"36 45% 60%\",\n          \"input\": \"36 45% 60%\",\n          \"ring\": \"36 45% 30%\",\n          \"chart-1\": \"25 34% 28%\",\n          \"chart-2\": \"26 36% 34%\",\n          \"chart-3\": \"28 40% 40%\",\n          \"chart-4\": \"31 41% 48%\",\n          \"chart-5\": \"35 43% 53%\"\n        },\n        \"dark\": {\n          \"background\": \"36 39% 88%\",\n          \"foreground\": \"36 45% 15%\",\n          \"primary\": \"36 45% 70%\",\n          \"primary-foreground\": \"36 45% 11%\",\n          \"secondary\": \"40 35% 77%\",\n          \"secondary-foreground\": \"36 45% 25%\",\n          \"accent\": \"36 64% 57%\",\n          \"accent-foreground\": \"36 72% 17%\",\n          \"destructive\": \"0 84% 37%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"muted\": \"36 33% 75%\",\n          \"muted-foreground\": \"36 45% 25%\",\n          \"card\": \"36 46% 82%\",\n          \"card-foreground\": \"36 45% 20%\",\n          \"popover\": \"0 0% 100%\",\n          \"popover-foreground\": \"240 10% 3.9%\",\n          \"border\": \"36 45% 60%\",\n          \"input\": \"36 45% 60%\",\n          \"ring\": \"36 45% 30%\",\n          \"chart-1\": \"25 34% 28%\",\n          \"chart-2\": \"26 36% 34%\",\n          \"chart-3\": \"28 40% 40%\",\n          \"chart-4\": \"31 41% 48%\",\n          \"chart-5\": \"35 43% 53%\"\n        }\n      }\n    },\n    {\n      \"name\": \"theme-midnight\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"240 5% 6%\",\n          \"foreground\": \"60 5% 90%\",\n          \"primary\": \"240 0% 90%\",\n          \"primary-foreground\": \"60 0% 0%\",\n          \"secondary\": \"240 4% 15%\",\n          \"secondary-foreground\": \"60 5% 85%\",\n          \"accent\": \"240 0% 13%\",\n          \"accent-foreground\": \"60 0% 100%\",\n          \"destructive\": \"0 60% 50%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"muted\": \"240 5% 25%\",\n          \"muted-foreground\": \"60 5% 85%\",\n          \"card\": \"240 4% 10%\",\n          \"card-foreground\": \"60 5% 90%\",\n          \"popover\": \"240 5% 15%\",\n          \"popover-foreground\": \"60 5% 85%\",\n          \"border\": \"240 6% 20%\",\n          \"input\": \"240 6% 20%\",\n          \"ring\": \"240 5% 90%\",\n          \"chart-1\": \"359 2% 90%\",\n          \"chart-2\": \"240 1% 74%\",\n          \"chart-3\": \"240 1% 58%\",\n          \"chart-4\": \"240 1% 42%\",\n          \"chart-5\": \"240 2% 26%\"\n        },\n        \"dark\": {\n          \"background\": \"240 5% 6%\",\n          \"foreground\": \"60 5% 90%\",\n          \"primary\": \"240 0% 90%\",\n          \"primary-foreground\": \"60 0% 0%\",\n          \"secondary\": \"240 4% 15%\",\n          \"secondary-foreground\": \"60 5% 85%\",\n          \"accent\": \"240 0% 13%\",\n          \"accent-foreground\": \"60 0% 100%\",\n          \"destructive\": \"0 60% 50%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"muted\": \"240 5% 25%\",\n          \"muted-foreground\": \"60 5% 85%\",\n          \"card\": \"240 4% 10%\",\n          \"card-foreground\": \"60 5% 90%\",\n          \"popover\": \"240 5% 15%\",\n          \"popover-foreground\": \"60 5% 85%\",\n          \"border\": \"240 6% 20%\",\n          \"input\": \"240 6% 20%\",\n          \"ring\": \"240 5% 90%\",\n          \"chart-1\": \"359 2% 90%\",\n          \"chart-2\": \"240 1% 74%\",\n          \"chart-3\": \"240 1% 58%\",\n          \"chart-4\": \"240 1% 42%\",\n          \"chart-5\": \"240 2% 26%\"\n        }\n      }\n    },\n    {\n      \"name\": \"theme-emerald\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"0 0% 100%\",\n          \"foreground\": \"240 10% 3.9%\",\n          \"card\": \"0 0% 100%\",\n          \"card-foreground\": \"240 10% 3.9%\",\n          \"popover\": \"0 0% 100%\",\n          \"popover-foreground\": \"240 10% 3.9%\",\n          \"primary\": \"142 86% 28%\",\n          \"primary-foreground\": \"356 29% 98%\",\n          \"secondary\": \"240 4.8% 95.9%\",\n          \"secondary-foreground\": \"240 5.9% 10%\",\n          \"muted\": \"240 4.8% 95.9%\",\n          \"muted-foreground\": \"240 3.8% 45%\",\n          \"accent\": \"240 4.8% 95.9%\",\n          \"accent-foreground\": \"240 5.9% 10%\",\n          \"destructive\": \"0 72% 51%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"border\": \"240 5.9% 90%\",\n          \"input\": \"240 5.9% 90%\",\n          \"ring\": \"142 86% 28%\",\n          \"chart-1\": \"139 65% 20%\",\n          \"chart-2\": \"140 74% 44%\",\n          \"chart-3\": \"142 88% 28%\",\n          \"chart-4\": \"137 55% 15%\",\n          \"chart-5\": \"141 40% 9%\"\n        },\n        \"dark\": {\n          \"background\": \"240 10% 3.9%\",\n          \"foreground\": \"0 0% 98%\",\n          \"card\": \"240 10% 3.9%\",\n          \"card-foreground\": \"0 0% 98%\",\n          \"popover\": \"240 10% 3.9%\",\n          \"popover-foreground\": \"0 0% 98%\",\n          \"primary\": \"142 86% 28%\",\n          \"primary-foreground\": \"356 29% 98%\",\n          \"secondary\": \"240 4.8% 95.9%\",\n          \"secondary-foreground\": \"240 5.9% 10%\",\n          \"muted\": \"240 3.7% 15.9%\",\n          \"muted-foreground\": \"240 5% 64.9%\",\n          \"accent\": \"240 3.7% 15.9%\",\n          \"accent-foreground\": \"0 0% 98%\",\n          \"destructive\": \"0 72% 51%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"border\": \"240 3.7% 15.9%\",\n          \"input\": \"240 3.7% 15.9%\",\n          \"ring\": \"142 86% 28%\",\n          \"chart-1\": \"142 88% 28%\",\n          \"chart-2\": \"139 65% 20%\",\n          \"chart-3\": \"140 74% 24%\",\n          \"chart-4\": \"137 55% 15%\",\n          \"chart-5\": \"141 40% 9%\"\n        }\n      }\n    },\n    {\n      \"name\": \"sink\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"accordion\",\n        \"alert\",\n        \"alert-dialog\",\n        \"aspect-ratio\",\n        \"avatar\",\n        \"badge\",\n        \"breadcrumb\",\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"carousel\",\n        \"chart\",\n        \"checkbox\",\n        \"collapsible\",\n        \"command\",\n        \"context-menu\",\n        \"dialog\",\n        \"drawer\",\n        \"dropdown-menu\",\n        \"hover-card\",\n        \"input\",\n        \"input-otp\",\n        \"label\",\n        \"menubar\",\n        \"navigation-menu\",\n        \"pagination\",\n        \"popover\",\n        \"progress\",\n        \"radio-group\",\n        \"resizable\",\n        \"scroll-area\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"sidebar\",\n        \"skeleton\",\n        \"slider\",\n        \"sonner\",\n        \"switch\",\n        \"table\",\n        \"tabs\",\n        \"textarea\",\n        \"toast\",\n        \"toggle\",\n        \"toggle-group\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sink/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/sink/page.tsx\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/component-wrapper.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/nav-projects.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/team-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/accordion-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/alert-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/alert-dialog-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/aspect-ratio-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/avatar-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/badge-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/breadcrumb-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/button-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/calendar-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/card-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/carousel-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/checkbox-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/collapsible-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/combobox-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/command-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/context-menu-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/date-picker-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/dialog-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/drawer-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/dropdown-menu-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/hover-card-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/input-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/input-otp-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/label-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/menubar-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/navigation-menu-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/pagination-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/popover-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/progress-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/radio-group-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/resizable-handle.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/scroll-area-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/select-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/separator-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/sheet-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/skeleton-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/slider-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/sonner-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/switch-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/table-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/tabs-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/textarea-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/toast-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/toggle-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/toggle-group-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/tooltip-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/badge-destructive.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/badge-outline.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/badge-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/button-destructive.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/button-ghost.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/button-link.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/button-loading.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/button-outline.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/button-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/button-with-icon.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/toggle-disabled.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/toggle-outline.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/default/internal/sink/components/toggle-with-text.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-demo\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-header\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-header.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-footer\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-footer.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-group.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group-collapsible\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-group-collapsible.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group-action\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-group-action.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-menu.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-action\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-menu-action.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-sub\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-menu-sub.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-collapsible\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-menu-collapsible.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-badge\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-menu-badge.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-rsc\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-rsc.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-controlled\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-controlled.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-01\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-01.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"components/sidebar-01.tsx\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-02\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-02.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-03\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-03.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-04\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-04.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-05\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-05.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-06\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-06.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-07\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-07.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-08\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-08.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-09\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-09.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-10\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-10.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-11\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-11.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-12\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-12.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-13\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"button\",\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-13.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-14\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-14.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-15\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/sidebar-15.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-login-01\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/internal/login-01.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"accordion-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"accordion\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/accordion-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"alert\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/alert-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"alert\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/alert-destructive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-dialog-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/alert-dialog-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"aspect-ratio-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"aspect-ratio\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/aspect-ratio-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"avatar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/avatar-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/badge-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/badge-destructive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/badge-outline.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-secondary\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/badge-secondary.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/breadcrumb-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-separator\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/breadcrumb-separator.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-dropdown\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/breadcrumb-dropdown.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-ellipsis\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/breadcrumb-ellipsis.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-link\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/breadcrumb-link.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-responsive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/breadcrumb-responsive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-secondary\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-secondary.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-destructive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-outline.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-ghost\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-ghost.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-link\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-link.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-with-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-with-icon.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-loading\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-loading.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-icon.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-as-child\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/button-as-child.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/calendar-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"form\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/calendar-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/card-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-with-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/card-with-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/carousel-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-size\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/carousel-size.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-spacing\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/carousel-spacing.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-orientation\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/carousel-orientation.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-api\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/carousel-api.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-plugin\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/carousel-plugin.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/checkbox-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/checkbox-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-form-multiple\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/checkbox-form-multiple.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-form-single\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/checkbox-form-single.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/checkbox-with-text.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"collapsible-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/collapsible-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/combobox-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-dropdown-menu\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\",\n        \"dropdown-menu\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/combobox-dropdown-menu.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/combobox-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-popover\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"combobox\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/combobox-popover.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-responsive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"combobox\",\n        \"popover\",\n        \"drawer\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/combobox-responsive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/command-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command-dialog\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\",\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/command-dialog.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"context-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"context-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/context-menu-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"data-table-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"data-table\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/data-table-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-demo\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/date-picker-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-form\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"form\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/date-picker-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-with-presets\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"popover\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/date-picker-with-presets.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-with-range\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/date-picker-with-range.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/dialog-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog-close-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/dialog-close-button.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"drawer\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/drawer-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer-dialog\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"drawer\",\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/drawer-dialog.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/dropdown-menu-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-checkboxes\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dropdown-menu\",\n        \"checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/dropdown-menu-checkboxes.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-radio-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dropdown-menu\",\n        \"radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/dropdown-menu-radio-group.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hover-card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"hover-card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/hover-card-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-file\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-file.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\",\n        \"button\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-with-button.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-label\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-with-label.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-with-text.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-otp-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-pattern\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-otp-pattern.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-separator\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-otp-separator.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-controlled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-otp-controlled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/input-otp-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"label-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/label-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"menubar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"menubar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/menubar-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"navigation-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"navigation-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/navigation-menu-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pagination-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"pagination\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/pagination-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"popover-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/popover-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"progress-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"progress\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/progress-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/radio-group-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"radio-group\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/radio-group-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"resizable\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/resizable-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-demo-with-handle\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"resizable\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/resizable-demo-with-handle.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-vertical\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"resizable\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/resizable-vertical.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-handle\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"resizable\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/resizable-handle.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"scroll-area\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/scroll-area-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area-horizontal-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"scroll-area\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/scroll-area-horizontal-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/select-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-scrollable\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/select-scrollable.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/select-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"separator-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/separator-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"sheet\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/sheet-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet-side\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"sheet\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/sheet-side.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/skeleton-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton-card\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/skeleton-card.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"slider-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"slider\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/slider-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/sonner-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/switch-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"switch\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/switch-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"table\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/table-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tabs-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"tabs\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/tabs-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/textarea-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/textarea-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/textarea-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/textarea-with-button.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-label\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/textarea-with-label.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/textarea-with-text.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toast-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toast-destructive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-simple\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toast-simple.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-with-action\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toast-with-action.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-with-title\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toast-with-title.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-group-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-group-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-lg\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-group-lg.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-group-outline.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-sm\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-group-sm.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-single\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-group-single.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-lg\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-lg.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-outline.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-sm\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-sm.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/toggle-with-text.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tooltip-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/tooltip-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-blockquote\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-blockquote.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h1\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-h1.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h2\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-h2.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h3\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-h3.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h4\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-h4.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-inline-code\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-inline-code.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-large\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-large.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-lead\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-lead.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-list\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-list.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-muted\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-muted.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-p\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-p.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-small\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-small.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-table\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/typography-table.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mode-toggle\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/mode-toggle.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/chart-bar-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-grid\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/chart-bar-demo-grid.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-axis\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/chart-bar-demo-axis.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-tooltip\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/chart-bar-demo-tooltip.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-legend\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/chart-bar-demo-legend.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/default/examples/chart-tooltip-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/resizable-demo-with-handle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-demo-with-handle\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/resizable-demo-with-handle.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/default/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"horizontal\\\"\\n      className=\\\"max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={50}>\\n        <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">One</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle withHandle />\\n      <ResizablePanel defaultSize={50}>\\n        <ResizablePanelGroup direction=\\\"vertical\\\">\\n          <ResizablePanel defaultSize={25}>\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Two</span>\\n            </div>\\n          </ResizablePanel>\\n          <ResizableHandle withHandle />\\n          <ResizablePanel defaultSize={75}>\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Three</span>\\n            </div>\\n          </ResizablePanel>\\n        </ResizablePanelGroup>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/resizable-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/resizable-demo.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/default/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"horizontal\\\"\\n      className=\\\"max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={50}>\\n        <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">One</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle />\\n      <ResizablePanel defaultSize={50}>\\n        <ResizablePanelGroup direction=\\\"vertical\\\">\\n          <ResizablePanel defaultSize={25}>\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Two</span>\\n            </div>\\n          </ResizablePanel>\\n          <ResizableHandle />\\n          <ResizablePanel defaultSize={75}>\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Three</span>\\n            </div>\\n          </ResizablePanel>\\n        </ResizablePanelGroup>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/resizable-handle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-handle\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/resizable-handle.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/default/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"horizontal\\\"\\n      className=\\\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={25}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Sidebar</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle withHandle />\\n      <ResizablePanel defaultSize={75}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Content</span>\\n        </div>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/resizable-vertical.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-vertical\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/resizable-vertical.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/default/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"vertical\\\"\\n      className=\\\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={25}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Header</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle />\\n      <ResizablePanel defaultSize={75}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Content</span>\\n        </div>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { GripVertical } from \\\"lucide-react\\\"\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst ResizablePanelGroup = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\\n  <ResizablePrimitive.PanelGroup\\n    className={cn(\\n      \\\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\n\\nconst ResizablePanel = ResizablePrimitive.Panel\\n\\nconst ResizableHandle = ({\\n  withHandle,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\\n  withHandle?: boolean\\n}) => (\\n  <ResizablePrimitive.PanelResizeHandle\\n    className={cn(\\n      \\\"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {withHandle && (\\n      <div className=\\\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\\\">\\n        <GripVertical className=\\\"h-2.5 w-2.5\\\" />\\n      </div>\\n    )}\\n  </ResizablePrimitive.PanelResizeHandle>\\n)\\n\\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/scroll-area-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/scroll-area-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { ScrollArea } from \\\"@/registry/default/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nexport default function ScrollAreaDemo() {\\n  return (\\n    <ScrollArea className=\\\"h-72 w-48 rounded-md border\\\">\\n      <div className=\\\"p-4\\\">\\n        <h4 className=\\\"mb-4 text-sm font-medium leading-none\\\">Tags</h4>\\n        {tags.map((tag) => (\\n          <>\\n            <div key={tag} className=\\\"text-sm\\\">\\n              {tag}\\n            </div>\\n            <Separator className=\\\"my-2\\\" />\\n          </>\\n        ))}\\n      </div>\\n    </ScrollArea>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/scroll-area-horizontal-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-horizontal-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/scroll-area-horizontal-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/default/ui/scroll-area\\\"\\n\\nexport interface Artwork {\\n  artist: string\\n  art: string\\n}\\n\\nexport const works: Artwork[] = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyavko\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n]\\n\\nexport default function ScrollAreaHorizontalDemo() {\\n  return (\\n    <ScrollArea className=\\\"w-96 whitespace-nowrap rounded-md border\\\">\\n      <div className=\\\"flex w-max space-x-4 p-4\\\">\\n        {works.map((artwork) => (\\n          <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n            <div className=\\\"overflow-hidden rounded-md\\\">\\n              <Image\\n                src={artwork.art}\\n                alt={`Photo by ${artwork.artist}`}\\n                className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                width={300}\\n                height={400}\\n              />\\n            </div>\\n            <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n              Photo by{\\\" \\\"}\\n              <span className=\\\"font-semibold text-foreground\\\">\\n                {artwork.artist}\\n              </span>\\n            </figcaption>\\n          </figure>\\n        ))}\\n      </div>\\n      <ScrollBar orientation=\\\"horizontal\\\" />\\n    </ScrollArea>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ScrollAreaPrimitive from \\\"@radix-ui/react-scroll-area\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst ScrollArea = React.forwardRef<\\n  React.ElementRef<typeof ScrollAreaPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\\n>(({ className, children, ...props }, ref) => (\\n  <ScrollAreaPrimitive.Root\\n    ref={ref}\\n    className={cn(\\\"relative overflow-hidden\\\", className)}\\n    {...props}\\n  >\\n    <ScrollAreaPrimitive.Viewport className=\\\"h-full w-full rounded-[inherit]\\\">\\n      {children}\\n    </ScrollAreaPrimitive.Viewport>\\n    <ScrollBar />\\n    <ScrollAreaPrimitive.Corner />\\n  </ScrollAreaPrimitive.Root>\\n))\\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\\n\\nconst ScrollBar = React.forwardRef<\\n  React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\\n  React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\\n>(({ className, orientation = \\\"vertical\\\", ...props }, ref) => (\\n  <ScrollAreaPrimitive.ScrollAreaScrollbar\\n    ref={ref}\\n    orientation={orientation}\\n    className={cn(\\n      \\\"flex touch-none select-none transition-colors\\\",\\n      orientation === \\\"vertical\\\" &&\\n        \\\"h-full w-2.5 border-l border-l-transparent p-[1px]\\\",\\n      orientation === \\\"horizontal\\\" &&\\n        \\\"h-2.5 flex-col border-t border-t-transparent p-[1px]\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <ScrollAreaPrimitive.ScrollAreaThumb className=\\\"relative flex-1 rounded-full bg-border\\\" />\\n  </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n))\\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/select-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/select-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\n\\nexport default function SelectDemo() {\\n  return (\\n    <Select>\\n      <SelectTrigger className=\\\"w-[180px]\\\">\\n        <SelectValue placeholder=\\\"Select a fruit\\\" />\\n      </SelectTrigger>\\n      <SelectContent>\\n        <SelectGroup>\\n          <SelectLabel>Fruits</SelectLabel>\\n          <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n          <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n          <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n          <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n        </SelectGroup>\\n      </SelectContent>\\n    </Select>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/select-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/select-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport Link from \\\"next/link\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\n\\nconst FormSchema = z.object({\\n  email: z\\n    .string({\\n      required_error: \\\"Please select an email to display.\\\",\\n    })\\n    .email(),\\n})\\n\\nexport default function SelectForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"email\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Email</FormLabel>\\n              <Select onValueChange={field.onChange} defaultValue={field.value}>\\n                <FormControl>\\n                  <SelectTrigger>\\n                    <SelectValue placeholder=\\\"Select a verified email to display\\\" />\\n                  </SelectTrigger>\\n                </FormControl>\\n                <SelectContent>\\n                  <SelectItem value=\\\"m@example.com\\\">m@example.com</SelectItem>\\n                  <SelectItem value=\\\"m@google.com\\\">m@google.com</SelectItem>\\n                  <SelectItem value=\\\"m@support.com\\\">m@support.com</SelectItem>\\n                </SelectContent>\\n              </Select>\\n              <FormDescription>\\n                You can manage email addresses in your{\\\" \\\"}\\n                <Link href=\\\"/examples/forms\\\">email settings</Link>.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/select-scrollable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-scrollable\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/select-scrollable.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\n\\nexport default function SelectScrollable() {\\n  return (\\n    <Select>\\n      <SelectTrigger className=\\\"w-[280px]\\\">\\n        <SelectValue placeholder=\\\"Select a timezone\\\" />\\n      </SelectTrigger>\\n      <SelectContent>\\n        <SelectGroup>\\n          <SelectLabel>North America</SelectLabel>\\n          <SelectItem value=\\\"est\\\">Eastern Standard Time (EST)</SelectItem>\\n          <SelectItem value=\\\"cst\\\">Central Standard Time (CST)</SelectItem>\\n          <SelectItem value=\\\"mst\\\">Mountain Standard Time (MST)</SelectItem>\\n          <SelectItem value=\\\"pst\\\">Pacific Standard Time (PST)</SelectItem>\\n          <SelectItem value=\\\"akst\\\">Alaska Standard Time (AKST)</SelectItem>\\n          <SelectItem value=\\\"hst\\\">Hawaii Standard Time (HST)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Europe & Africa</SelectLabel>\\n          <SelectItem value=\\\"gmt\\\">Greenwich Mean Time (GMT)</SelectItem>\\n          <SelectItem value=\\\"cet\\\">Central European Time (CET)</SelectItem>\\n          <SelectItem value=\\\"eet\\\">Eastern European Time (EET)</SelectItem>\\n          <SelectItem value=\\\"west\\\">\\n            Western European Summer Time (WEST)\\n          </SelectItem>\\n          <SelectItem value=\\\"cat\\\">Central Africa Time (CAT)</SelectItem>\\n          <SelectItem value=\\\"eat\\\">East Africa Time (EAT)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Asia</SelectLabel>\\n          <SelectItem value=\\\"msk\\\">Moscow Time (MSK)</SelectItem>\\n          <SelectItem value=\\\"ist\\\">India Standard Time (IST)</SelectItem>\\n          <SelectItem value=\\\"cst_china\\\">China Standard Time (CST)</SelectItem>\\n          <SelectItem value=\\\"jst\\\">Japan Standard Time (JST)</SelectItem>\\n          <SelectItem value=\\\"kst\\\">Korea Standard Time (KST)</SelectItem>\\n          <SelectItem value=\\\"ist_indonesia\\\">\\n            Indonesia Central Standard Time (WITA)\\n          </SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Australia & Pacific</SelectLabel>\\n          <SelectItem value=\\\"awst\\\">\\n            Australian Western Standard Time (AWST)\\n          </SelectItem>\\n          <SelectItem value=\\\"acst\\\">\\n            Australian Central Standard Time (ACST)\\n          </SelectItem>\\n          <SelectItem value=\\\"aest\\\">\\n            Australian Eastern Standard Time (AEST)\\n          </SelectItem>\\n          <SelectItem value=\\\"nzst\\\">New Zealand Standard Time (NZST)</SelectItem>\\n          <SelectItem value=\\\"fjt\\\">Fiji Time (FJT)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>South America</SelectLabel>\\n          <SelectItem value=\\\"art\\\">Argentina Time (ART)</SelectItem>\\n          <SelectItem value=\\\"bot\\\">Bolivia Time (BOT)</SelectItem>\\n          <SelectItem value=\\\"brt\\\">Brasilia Time (BRT)</SelectItem>\\n          <SelectItem value=\\\"clt\\\">Chile Standard Time (CLT)</SelectItem>\\n        </SelectGroup>\\n      </SelectContent>\\n    </Select>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SelectPrimitive from \\\"@radix-ui/react-select\\\"\\nimport { Check, ChevronDown, ChevronUp } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Select = SelectPrimitive.Root\\n\\nconst SelectGroup = SelectPrimitive.Group\\n\\nconst SelectValue = SelectPrimitive.Value\\n\\nconst SelectTrigger = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\\n>(({ className, children, ...props }, ref) => (\\n  <SelectPrimitive.Trigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <SelectPrimitive.Icon asChild>\\n      <ChevronDown className=\\\"h-4 w-4 opacity-50\\\" />\\n    </SelectPrimitive.Icon>\\n  </SelectPrimitive.Trigger>\\n))\\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\\n\\nconst SelectScrollUpButton = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\\n>(({ className, ...props }, ref) => (\\n  <SelectPrimitive.ScrollUpButton\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default items-center justify-center py-1\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <ChevronUp className=\\\"h-4 w-4\\\" />\\n  </SelectPrimitive.ScrollUpButton>\\n))\\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\\n\\nconst SelectScrollDownButton = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\\n>(({ className, ...props }, ref) => (\\n  <SelectPrimitive.ScrollDownButton\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default items-center justify-center py-1\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <ChevronDown className=\\\"h-4 w-4\\\" />\\n  </SelectPrimitive.ScrollDownButton>\\n))\\nSelectScrollDownButton.displayName =\\n  SelectPrimitive.ScrollDownButton.displayName\\n\\nconst SelectContent = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\\n>(({ className, children, position = \\\"popper\\\", ...props }, ref) => (\\n  <SelectPrimitive.Portal>\\n    <SelectPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]\\\",\\n        position === \\\"popper\\\" &&\\n          \\\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\\\",\\n        className\\n      )}\\n      position={position}\\n      {...props}\\n    >\\n      <SelectScrollUpButton />\\n      <SelectPrimitive.Viewport\\n        className={cn(\\n          \\\"p-1\\\",\\n          position === \\\"popper\\\" &&\\n            \\\"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\\\"\\n        )}\\n      >\\n        {children}\\n      </SelectPrimitive.Viewport>\\n      <SelectScrollDownButton />\\n    </SelectPrimitive.Content>\\n  </SelectPrimitive.Portal>\\n))\\nSelectContent.displayName = SelectPrimitive.Content.displayName\\n\\nconst SelectLabel = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Label>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\\n>(({ className, ...props }, ref) => (\\n  <SelectPrimitive.Label\\n    ref={ref}\\n    className={cn(\\\"py-1.5 pl-8 pr-2 text-sm font-semibold\\\", className)}\\n    {...props}\\n  />\\n))\\nSelectLabel.displayName = SelectPrimitive.Label.displayName\\n\\nconst SelectItem = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\\n>(({ className, children, ...props }, ref) => (\\n  <SelectPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <SelectPrimitive.ItemIndicator>\\n        <Check className=\\\"h-4 w-4\\\" />\\n      </SelectPrimitive.ItemIndicator>\\n    </span>\\n\\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\\n  </SelectPrimitive.Item>\\n))\\nSelectItem.displayName = SelectPrimitive.Item.displayName\\n\\nconst SelectSeparator = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <SelectPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 my-1 h-px bg-muted\\\", className)}\\n    {...props}\\n  />\\n))\\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\\n\\nexport {\\n  Select,\\n  SelectGroup,\\n  SelectValue,\\n  SelectTrigger,\\n  SelectContent,\\n  SelectLabel,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectScrollUpButton,\\n  SelectScrollDownButton,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/separator-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/separator-demo.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/default/ui/separator\\\"\\n\\nexport default function SeparatorDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"space-y-1\\\">\\n        <h4 className=\\\"text-sm font-medium leading-none\\\">Radix Primitives</h4>\\n        <p className=\\\"text-sm text-muted-foreground\\\">\\n          An open-source UI component library.\\n        </p>\\n      </div>\\n      <Separator className=\\\"my-4\\\" />\\n      <div className=\\\"flex h-5 items-center space-x-4 text-sm\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SeparatorPrimitive from \\\"@radix-ui/react-separator\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Separator = React.forwardRef<\\n  React.ElementRef<typeof SeparatorPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\\n>(\\n  (\\n    { className, orientation = \\\"horizontal\\\", decorative = true, ...props },\\n    ref\\n  ) => (\\n    <SeparatorPrimitive.Root\\n      ref={ref}\\n      decorative={decorative}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"h-[1px] w-full\\\" : \\\"h-full w-[1px]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n)\\nSeparator.displayName = SeparatorPrimitive.Root.displayName\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sheet-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sheet\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/sheet-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/default/ui/sheet\\\"\\n\\nexport default function SheetDemo() {\\n  return (\\n    <Sheet>\\n      <SheetTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </SheetTrigger>\\n      <SheetContent>\\n        <SheetHeader>\\n          <SheetTitle>Edit profile</SheetTitle>\\n          <SheetDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </SheetDescription>\\n        </SheetHeader>\\n        <div className=\\\"grid gap-4 py-4\\\">\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n              Name\\n            </Label>\\n            <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n              Username\\n            </Label>\\n            <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n        </div>\\n        <SheetFooter>\\n          <SheetClose asChild>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n          </SheetClose>\\n        </SheetFooter>\\n      </SheetContent>\\n    </Sheet>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sheet-side.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-side\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sheet\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/sheet-side.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/default/ui/sheet\\\"\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\ntype SheetSide = (typeof SHEET_SIDES)[number]\\n\\nexport default function SheetSide() {\\n  return (\\n    <div className=\\\"grid grid-cols-2 gap-2\\\">\\n      {SHEET_SIDES.map((side) => (\\n        <Sheet key={side}>\\n          <SheetTrigger asChild>\\n            <Button variant=\\\"outline\\\">{side}</Button>\\n          </SheetTrigger>\\n          <SheetContent side={side}>\\n            <SheetHeader>\\n              <SheetTitle>Edit profile</SheetTitle>\\n              <SheetDescription>\\n                Make changes to your profile here. Click save when you're done.\\n              </SheetDescription>\\n            </SheetHeader>\\n            <div className=\\\"grid gap-4 py-4\\\">\\n              <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n                  Name\\n                </Label>\\n                <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n              </div>\\n              <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n                <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n                  Username\\n                </Label>\\n                <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n              </div>\\n            </div>\\n            <SheetFooter>\\n              <SheetClose asChild>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n              </SheetClose>\\n            </SheetFooter>\\n          </SheetContent>\\n        </Sheet>\\n      ))}\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SheetPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Sheet = SheetPrimitive.Root\\n\\nconst SheetTrigger = SheetPrimitive.Trigger\\n\\nconst SheetClose = SheetPrimitive.Close\\n\\nconst SheetPortal = SheetPrimitive.Portal\\n\\nconst SheetOverlay = React.forwardRef<\\n  React.ElementRef<typeof SheetPrimitive.Overlay>,\\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\\n>(({ className, ...props }, ref) => (\\n  <SheetPrimitive.Overlay\\n    className={cn(\\n      \\\"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\\\",\\n      className\\n    )}\\n    {...props}\\n    ref={ref}\\n  />\\n))\\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\\n\\nconst sheetVariants = cva(\\n  \\\"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\\\",\\n  {\\n    variants: {\\n      side: {\\n        top: \\\"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\\\",\\n        bottom:\\n          \\\"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\\\",\\n        left: \\\"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\\\",\\n        right:\\n          \\\"inset-y-0 right-0 h-full w-3/4  border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      side: \\\"right\\\",\\n    },\\n  }\\n)\\n\\ninterface SheetContentProps\\n  extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\\n    VariantProps<typeof sheetVariants> {}\\n\\nconst SheetContent = React.forwardRef<\\n  React.ElementRef<typeof SheetPrimitive.Content>,\\n  SheetContentProps\\n>(({ side = \\\"right\\\", className, children, ...props }, ref) => (\\n  <SheetPortal>\\n    <SheetOverlay />\\n    <SheetPrimitive.Content\\n      ref={ref}\\n      className={cn(sheetVariants({ side }), className)}\\n      {...props}\\n    >\\n      {children}\\n      <SheetPrimitive.Close className=\\\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\\\">\\n        <X className=\\\"h-4 w-4\\\" />\\n        <span className=\\\"sr-only\\\">Close</span>\\n      </SheetPrimitive.Close>\\n    </SheetPrimitive.Content>\\n  </SheetPortal>\\n))\\nSheetContent.displayName = SheetPrimitive.Content.displayName\\n\\nconst SheetHeader = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col space-y-2 text-center sm:text-left\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nSheetHeader.displayName = \\\"SheetHeader\\\"\\n\\nconst SheetFooter = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nSheetFooter.displayName = \\\"SheetFooter\\\"\\n\\nconst SheetTitle = React.forwardRef<\\n  React.ElementRef<typeof SheetPrimitive.Title>,\\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\\n>(({ className, ...props }, ref) => (\\n  <SheetPrimitive.Title\\n    ref={ref}\\n    className={cn(\\\"text-lg font-semibold text-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nSheetTitle.displayName = SheetPrimitive.Title.displayName\\n\\nconst SheetDescription = React.forwardRef<\\n  React.ElementRef<typeof SheetPrimitive.Description>,\\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\\n>(({ className, ...props }, ref) => (\\n  <SheetPrimitive.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nSheetDescription.displayName = SheetPrimitive.Description.displayName\\n\\nexport {\\n  Sheet,\\n  SheetPortal,\\n  SheetOverlay,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/default/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/default/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {/* We create a SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild isActive={item.isActive}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <GalleryVerticalEnd className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-semibold\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width]\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && <Check className=\\\"ml-auto\\\" />}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex sticky top-0 bg-background h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/default/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/default/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {item.title}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <GalleryVerticalEnd className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-semibold\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width]\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && <Check className=\\\"ml-auto\\\" />}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-semibold\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-semibold\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd, Minus, Plus } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/default/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-semibold\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuButton>\\n                      {item.title}{\\\" \\\"}\\n                      <Plus className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\" />\\n                      <Minus className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\" />\\n                    </SidebarMenuButton>\\n                  </CollapsibleTrigger>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              asChild\\n                              isActive={item.isActive}\\n                            >\\n                              <a href={item.url}>{item.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/default/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/default/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-semibold\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { MoreHorizontal, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                  {item.title} <MoreHorizontal className=\\\"ml-auto\\\" />\\n                </SidebarMenuButton>\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem asChild key={item.title}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"shadow-none\\\">\\n      <form>\\n        <CardHeader className=\\\"p-4 pb-0\\\">\\n          <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n          <CardDescription>\\n            Opt-in to receive updates and news about the sidebar.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"grid gap-2.5 p-4\\\">\\n          <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n          <Button\\n            className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\"\\n            size=\\\"sm\\\"\\n          >\\n            Subscribe\\n          </Button>\\n        </CardContent>\\n      </form>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  GalleryVerticalEnd,\\n  Map,\\n  PieChart,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/default/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/default/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/default/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/default/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: GalleryVerticalEnd,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon && <item.icon />}\\n                  <span>{item.title}</span>\\n                  <ChevronRight className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  Forward,\\n  MoreHorizontal,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Forward className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal className=\\\"text-sidebar-foreground/70\\\" />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">\\n                  {activeTeam.name}\\n                </span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/default/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/default/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/default/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/default/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <Command className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <ChevronRight />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  MoreHorizontal,\\n  Share,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Share className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ArchiveX, Command, File, Inbox, Send, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { NavUser } from \\\"@/registry/default/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/default/ui/switch\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: File,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: ArchiveX,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden [&>[data-sidebar=sidebar]]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"!w-[calc(var(--sidebar-width-icon)_+_1px)] border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <Command className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      <item.icon />\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 whitespace-nowrap border-b p-4 text-sm leading-tight last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] whitespace-break-spaces text-xs\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/default/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  Blocks,\\n  Calendar,\\n  Command,\\n  Home,\\n  Inbox,\\n  MessageCircleQuestion,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/default/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/default/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/default/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/default/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/default/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: Calendar,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowDown,\\n  ArrowUp,\\n  Bell,\\n  Copy,\\n  CornerUpLeft,\\n  CornerUpRight,\\n  FileText,\\n  GalleryVerticalEnd,\\n  LineChart,\\n  Link,\\n  MoreHorizontal,\\n  Settings2,\\n  Star,\\n  Trash,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: FileText,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: Link,\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: Copy,\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: CornerUpRight,\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: Trash2,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: CornerUpLeft,\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: LineChart,\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: GalleryVerticalEnd,\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: Trash,\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: Bell,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: ArrowUp,\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: ArrowDown,\\n    },\\n  ],\\n]\\n\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <Star />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <MoreHorizontal />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            <item.icon /> <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  ArrowUpRight,\\n  Link,\\n  MoreHorizontal,\\n  StarOff,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"import { ChevronRight, MoreHorizontal, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-semibold\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight, File, Folder } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <File />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction Tree({ item }: { item: string | any[] }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <File />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <ChevronRight className=\\\"transition-transform\\\" />\\n            <Folder />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Plus } from \\\"lucide-react\\\"\\n\\nimport { Calendars } from \\\"@/registry/default/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/default/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/default/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Check, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground [&_[role=gridcell]]:w-[33px]\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/default/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Bell,\\n  Check,\\n  Globe,\\n  Home,\\n  Keyboard,\\n  Link,\\n  Lock,\\n  Menu,\\n  MessageCircle,\\n  Paintbrush,\\n  Settings,\\n  Video,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/default/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst data = {\\n  nav: [\\n    { name: \\\"Notifications\\\", icon: Bell },\\n    { name: \\\"Navigation\\\", icon: Menu },\\n    { name: \\\"Home\\\", icon: Home },\\n    { name: \\\"Appearance\\\", icon: Paintbrush },\\n    { name: \\\"Messages & media\\\", icon: MessageCircle },\\n    { name: \\\"Language & region\\\", icon: Globe },\\n    { name: \\\"Accessibility\\\", icon: Keyboard },\\n    { name: \\\"Mark as read\\\", icon: Check },\\n    { name: \\\"Audio & video\\\", icon: Video },\\n    { name: \\\"Connected accounts\\\", icon: Link },\\n    { name: \\\"Privacy & visibility\\\", icon: Lock },\\n    { name: \\\"Advanced\\\", icon: Settings },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            <item.icon />\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/default/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/default/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Check, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground [&_[role=gridcell]]:w-[33px]\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  ArrowUpRight,\\n  Link,\\n  MoreHorizontal,\\n  StarOff,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"import { ChevronRight, MoreHorizontal, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  Blocks,\\n  Calendar,\\n  Command,\\n  Home,\\n  Inbox,\\n  MessageCircleQuestion,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/default/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/default/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/default/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/default/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/default/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: Calendar,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Plus } from \\\"lucide-react\\\"\\n\\nimport { Calendars } from \\\"@/registry/default/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/default/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/default/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky hidden lg:flex top-0 h-svh border-l\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-semibold\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/default/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/default/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(theme(spacing.14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/default/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/default/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/default/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/default/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-[--header-height] !h-[calc(100svh-var(--header-height))]\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <Command className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <ChevronRight />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  MoreHorizontal,\\n  Share,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Share className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SidebarIcon } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/default/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"flex sticky top-0 z-50 w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-[--header-height] w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <SidebarIcon />\\n        </Button>\\n        <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">\\n                Building Your Application\\n              </BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-controlled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-controlled\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-controlled.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PanelLeftClose,\\n  PanelLeftOpen,\\n  PieChart,\\n  Send,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <SidebarProvider open={open} onOpenChange={setOpen}>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex items-center h-12 px-4 justify-between\\\">\\n          <Button\\n            onClick={() => setOpen((open) => !open)}\\n            size=\\\"sm\\\"\\n            variant=\\\"ghost\\\"\\n          >\\n            {open ? <PanelLeftClose /> : <PanelLeftOpen />}\\n            <span>{open ? \\\"Close\\\" : \\\"Open\\\"} Sidebar</span>\\n          </Button>\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-demo\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar, Home, Inbox, Search, Settings } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// Menu items.\\nconst items = [\\n  {\\n    title: \\\"Home\\\",\\n    url: \\\"#\\\",\\n    icon: Home,\\n  },\\n  {\\n    title: \\\"Inbox\\\",\\n    url: \\\"#\\\",\\n    icon: Inbox,\\n  },\\n  {\\n    title: \\\"Calendar\\\",\\n    url: \\\"#\\\",\\n    icon: Calendar,\\n  },\\n  {\\n    title: \\\"Search\\\",\\n    url: \\\"#\\\",\\n    icon: Search,\\n  },\\n  {\\n    title: \\\"Settings\\\",\\n    url: \\\"#\\\",\\n    icon: Settings,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Application</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex items-center justify-between px-4 h-12\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-footer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-footer\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-footer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDown, ChevronUp, User2 } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader />\\n        <SidebarContent />\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                    Username\\n                    <ChevronUp className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  side=\\\"top\\\"\\n                  className=\\\"w-[--radix-popper-anchor-width]\\\"\\n                >\\n                  <DropdownMenuItem>\\n                    <span>Account</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Billing</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Sign out</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex items-center justify-between px-4 h-12\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-group-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group-action\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-group-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  ChevronDown,\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PieChart,\\n  Plus,\\n  Send,\\n} from \\\"lucide-react\\\"\\nimport { Toaster, toast } from \\\"sonner\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Toaster\\n        position=\\\"bottom-left\\\"\\n        toastOptions={{\\n          className: \\\"ml-[160px]\\\",\\n        }}\\n      />\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupAction\\n              title=\\\"Add Project\\\"\\n              onClick={() => toast(\\\"You clicked the group action!\\\")}\\n            >\\n              <Plus /> <span className=\\\"sr-only\\\">Add Project</span>\\n            </SidebarGroupAction>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <Frame />\\n                      <span>Design Engineering</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <PieChart />\\n                      <span>Sales & Marketing</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <Map />\\n                      <span>Travel</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-group-collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group-collapsible\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-group-collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDown, LifeBuoy, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <Collapsible defaultOpen className=\\\"group/collapsible\\\">\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  Help\\n                  <ChevronDown className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-180\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    <SidebarMenuItem>\\n                      <SidebarMenuButton>\\n                        <LifeBuoy />\\n                        Support\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                    <SidebarMenuItem>\\n                      <SidebarMenuButton>\\n                        <Send />\\n                        Feedback\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LifeBuoy, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Help</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton>\\n                    <LifeBuoy />\\n                    Support\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton>\\n                    <Send />\\n                    Feedback\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-header.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-header\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDown } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                    Select Workspace\\n                    <ChevronDown className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent className=\\\"w-[--radix-popper-anchor-width]\\\">\\n                  <DropdownMenuItem>\\n                    <span>Acme Inc</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Acme Corp.</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex items-center justify-between px-4 h-12\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-menu-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-action\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  MoreHorizontal,\\n  PieChart,\\n  Send,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project, index) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton\\n                      asChild\\n                      className=\\\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\\\"\\n                    >\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <DropdownMenu>\\n                      <DropdownMenuTrigger asChild>\\n                        <SidebarMenuAction>\\n                          <MoreHorizontal />\\n                          <span className=\\\"sr-only\\\">More</span>\\n                        </SidebarMenuAction>\\n                      </DropdownMenuTrigger>\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuItem>\\n                          <span>Edit Project</span>\\n                        </DropdownMenuItem>\\n                        <DropdownMenuItem>\\n                          <span>Delete Project</span>\\n                        </DropdownMenuItem>\\n                      </DropdownMenuContent>\\n                    </DropdownMenu>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-menu-badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-badge\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu-badge.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Frame, LifeBuoy, Map, PieChart, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n    badge: \\\"24\\\",\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n    badge: \\\"12\\\",\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n    badge: \\\"3\\\",\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n    badge: \\\"21\\\",\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n    badge: \\\"8\\\",\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton\\n                      asChild\\n                      className=\\\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\\\"\\n                    >\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <SidebarMenuBadge>{project.badge}</SidebarMenuBadge>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-menu-collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-collapsible\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu-collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst items = [\\n  {\\n    title: \\\"Getting Started\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Installation\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Project Structure\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Building Your Application\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Routing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Data Fetching\\\",\\n        url: \\\"#\\\",\\n        isActive: true,\\n      },\\n      {\\n        title: \\\"Rendering\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Caching\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Styling\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Optimizing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Configuring\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Testing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Authentication\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Deploying\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Upgrading\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Examples\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"API Reference\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Components\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"File Conventions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Functions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"next.config.js Options\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"CLI\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Edge Runtime\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Architecture\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Accessibility\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Fast Refresh\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Next.js Compiler\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Supported Browsers\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Turbopack\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item, index) => (\\n                  <Collapsible\\n                    key={index}\\n                    className=\\\"group/collapsible\\\"\\n                    defaultOpen={index === 0}\\n                  >\\n                    <SidebarMenuItem>\\n                      <CollapsibleTrigger asChild>\\n                        <SidebarMenuButton>\\n                          <span>{item.title}</span>\\n                          <ChevronRight className=\\\"transition-transform ml-auto group-data-[state=open]/collapsible:rotate-90\\\" />\\n                        </SidebarMenuButton>\\n                      </CollapsibleTrigger>\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((subItem, subIndex) => (\\n                            <SidebarMenuSubItem key={subIndex}>\\n                              <SidebarMenuSubButton asChild>\\n                                <a href={subItem.url}>\\n                                  <span>{subItem.title}</span>\\n                                </a>\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    </SidebarMenuItem>\\n                  </Collapsible>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-menu-sub.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-sub\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu-sub.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst items = [\\n  {\\n    title: \\\"Getting Started\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Installation\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Project Structure\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Building Your Application\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Routing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Data Fetching\\\",\\n        url: \\\"#\\\",\\n        isActive: true,\\n      },\\n      {\\n        title: \\\"Rendering\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Caching\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Styling\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Optimizing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Configuring\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Testing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Authentication\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Deploying\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Upgrading\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Examples\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"API Reference\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Components\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"File Conventions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Functions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"next.config.js Options\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"CLI\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Edge Runtime\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Architecture\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Accessibility\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Fast Refresh\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Next.js Compiler\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Supported Browsers\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Turbopack\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item, index) => (\\n                  <SidebarMenuItem key={index}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={item.url}>\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <SidebarMenuSub>\\n                      {item.items.map((subItem, subIndex) => (\\n                        <SidebarMenuSubItem key={subIndex}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Frame, LifeBuoy, Map, PieChart, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar-rsc.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-rsc\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-rsc.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Frame, LifeBuoy, Map, PieChart, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarProvider,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n    badge: \\\"24\\\",\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n    badge: \\\"12\\\",\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n    badge: \\\"3\\\",\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n    badge: \\\"21\\\",\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n    badge: \\\"8\\\",\\n  },\\n]\\n\\n// Dummy fetch function\\nasync function fetchProjects() {\\n  await new Promise((resolve) => setTimeout(resolve, 3000))\\n  return projects\\n}\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <React.Suspense fallback={<NavProjectsSkeleton />}>\\n                <NavProjects />\\n              </React.Suspense>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction NavProjectsSkeleton() {\\n  return (\\n    <SidebarMenu>\\n      {Array.from({ length: 5 }).map((_, index) => (\\n        <SidebarMenuItem key={index}>\\n          <SidebarMenuSkeleton showIcon />\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\\nasync function NavProjects() {\\n  const projects = await fetchProjects()\\n\\n  return (\\n    <SidebarMenu>\\n      {projects.map((project) => (\\n        <SidebarMenuItem key={project.name}>\\n          <SidebarMenuButton asChild>\\n            <a href={project.url}>\\n              <project.icon />\\n              <span>{project.name}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\",\n    \"class-variance-authority\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"tooltip\",\n    \"input\",\n    \"use-mobile\",\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { PanelLeft } from \\\"lucide-react\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/default/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/default/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/default/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/default/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/registry/default/ui/tooltip\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nconst SidebarProvider = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & {\\n    defaultOpen?: boolean\\n    open?: boolean\\n    onOpenChange?: (open: boolean) => void\\n  }\\n>(\\n  (\\n    {\\n      defaultOpen = true,\\n      open: openProp,\\n      onOpenChange: setOpenProp,\\n      className,\\n      style,\\n      children,\\n      ...props\\n    },\\n    ref\\n  ) => {\\n    const isMobile = useIsMobile()\\n    const [openMobile, setOpenMobile] = React.useState(false)\\n\\n    // This is the internal state of the sidebar.\\n    // We use openProp and setOpenProp for control from outside the component.\\n    const [_open, _setOpen] = React.useState(defaultOpen)\\n    const open = openProp ?? _open\\n    const setOpen = React.useCallback(\\n      (value: boolean | ((value: boolean) => boolean)) => {\\n        const openState = typeof value === \\\"function\\\" ? value(open) : value\\n        if (setOpenProp) {\\n          setOpenProp(openState)\\n        } else {\\n          _setOpen(openState)\\n        }\\n\\n        // This sets the cookie to keep the sidebar state.\\n        document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n      },\\n      [setOpenProp, open]\\n    )\\n\\n    // Helper to toggle the sidebar.\\n    const toggleSidebar = React.useCallback(() => {\\n      return isMobile\\n        ? setOpenMobile((open) => !open)\\n        : setOpen((open) => !open)\\n    }, [isMobile, setOpen, setOpenMobile])\\n\\n    // Adds a keyboard shortcut to toggle the sidebar.\\n    React.useEffect(() => {\\n      const handleKeyDown = (event: KeyboardEvent) => {\\n        if (\\n          event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n          (event.metaKey || event.ctrlKey)\\n        ) {\\n          event.preventDefault()\\n          toggleSidebar()\\n        }\\n      }\\n\\n      window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n      return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n    }, [toggleSidebar])\\n\\n    // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n    // This makes it easier to style the sidebar with Tailwind classes.\\n    const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n    const contextValue = React.useMemo<SidebarContextProps>(\\n      () => ({\\n        state,\\n        open,\\n        setOpen,\\n        isMobile,\\n        openMobile,\\n        setOpenMobile,\\n        toggleSidebar,\\n      }),\\n      [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n    )\\n\\n    return (\\n      <SidebarContext.Provider value={contextValue}>\\n        <TooltipProvider delayDuration={0}>\\n          <div\\n            style={\\n              {\\n                \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n                \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n                ...style,\\n              } as React.CSSProperties\\n            }\\n            className={cn(\\n              \\\"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\\\",\\n              className\\n            )}\\n            ref={ref}\\n            {...props}\\n          >\\n            {children}\\n          </div>\\n        </TooltipProvider>\\n      </SidebarContext.Provider>\\n    )\\n  }\\n)\\nSidebarProvider.displayName = \\\"SidebarProvider\\\"\\n\\nconst Sidebar = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & {\\n    side?: \\\"left\\\" | \\\"right\\\"\\n    variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n    collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n  }\\n>(\\n  (\\n    {\\n      side = \\\"left\\\",\\n      variant = \\\"sidebar\\\",\\n      collapsible = \\\"offcanvas\\\",\\n      className,\\n      children,\\n      ...props\\n    },\\n    ref\\n  ) => {\\n    const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n    if (collapsible === \\\"none\\\") {\\n      return (\\n        <div\\n          className={cn(\\n            \\\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\\\",\\n            className\\n          )}\\n          ref={ref}\\n          {...props}\\n        >\\n          {children}\\n        </div>\\n      )\\n    }\\n\\n    if (isMobile) {\\n      return (\\n        <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n          <SheetContent\\n            data-sidebar=\\\"sidebar\\\"\\n            data-mobile=\\\"true\\\"\\n            className=\\\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n            style={\\n              {\\n                \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n              } as React.CSSProperties\\n            }\\n            side={side}\\n          >\\n            <SheetHeader className=\\\"sr-only\\\">\\n              <SheetTitle>Sidebar</SheetTitle>\\n              <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n            </SheetHeader>\\n            <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n          </SheetContent>\\n        </Sheet>\\n      )\\n    }\\n\\n    return (\\n      <div\\n        ref={ref}\\n        className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n        data-state={state}\\n        data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n        data-variant={variant}\\n        data-side={side}\\n      >\\n        {/* This is what handles the sidebar gap on desktop */}\\n        <div\\n          className={cn(\\n            \\\"relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\\\",\\n            \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n            \\\"group-data-[side=right]:rotate-180\\\",\\n            variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n              ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\\\"\\n              : \\\"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\\\"\\n          )}\\n        />\\n        <div\\n          className={cn(\\n            \\\"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex\\\",\\n            side === \\\"left\\\"\\n              ? \\\"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\\\"\\n              : \\\"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\\\",\\n            // Adjust the padding for floating and inset variants.\\n            variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n              ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\\\"\\n              : \\\"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <div\\n            data-sidebar=\\\"sidebar\\\"\\n            className=\\\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\\\"\\n          >\\n            {children}\\n          </div>\\n        </div>\\n      </div>\\n    )\\n  }\\n)\\nSidebar.displayName = \\\"Sidebar\\\"\\n\\nconst SidebarTrigger = React.forwardRef<\\n  React.ElementRef<typeof Button>,\\n  React.ComponentProps<typeof Button>\\n>(({ className, onClick, ...props }, ref) => {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      data-sidebar=\\\"trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className={cn(\\\"h-7 w-7\\\", className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <PanelLeft />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n})\\nSidebarTrigger.displayName = \\\"SidebarTrigger\\\"\\n\\nconst SidebarRail = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<\\\"button\\\">\\n>(({ className, ...props }, ref) => {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      ref={ref}\\n      data-sidebar=\\\"rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\\\",\\n        \\\"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarRail.displayName = \\\"SidebarRail\\\"\\n\\nconst SidebarInset = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"main\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <main\\n      ref={ref}\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background\\\",\\n        \\\"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarInset.displayName = \\\"SidebarInset\\\"\\n\\nconst SidebarInput = React.forwardRef<\\n  React.ElementRef<typeof Input>,\\n  React.ComponentProps<typeof Input>\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <Input\\n      ref={ref}\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\n        \\\"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarInput.displayName = \\\"SidebarInput\\\"\\n\\nconst SidebarHeader = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarHeader.displayName = \\\"SidebarHeader\\\"\\n\\nconst SidebarFooter = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarFooter.displayName = \\\"SidebarFooter\\\"\\n\\nconst SidebarSeparator = React.forwardRef<\\n  React.ElementRef<typeof Separator>,\\n  React.ComponentProps<typeof Separator>\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <Separator\\n      ref={ref}\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarSeparator.displayName = \\\"SidebarSeparator\\\"\\n\\nconst SidebarContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarContent.displayName = \\\"SidebarContent\\\"\\n\\nconst SidebarGroup = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarGroup.displayName = \\\"SidebarGroup\\\"\\n\\nconst SidebarGroupLabel = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & { asChild?: boolean }\\n>(({ className, asChild = false, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        \\\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarGroupLabel.displayName = \\\"SidebarGroupLabel\\\"\\n\\nconst SidebarGroupAction = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<\\\"button\\\"> & { asChild?: boolean }\\n>(({ className, asChild = false, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        // Increases the hit area of the button on mobile.\\n        \\\"after:absolute after:-inset-2 after:md:hidden\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarGroupAction.displayName = \\\"SidebarGroupAction\\\"\\n\\nconst SidebarGroupContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    data-sidebar=\\\"group-content\\\"\\n    className={cn(\\\"w-full text-sm\\\", className)}\\n    {...props}\\n  />\\n))\\nSidebarGroupContent.displayName = \\\"SidebarGroupContent\\\"\\n\\nconst SidebarMenu = React.forwardRef<\\n  HTMLUListElement,\\n  React.ComponentProps<\\\"ul\\\">\\n>(({ className, ...props }, ref) => (\\n  <ul\\n    ref={ref}\\n    data-sidebar=\\\"menu\\\"\\n    className={cn(\\\"flex w-full min-w-0 flex-col gap-1\\\", className)}\\n    {...props}\\n  />\\n))\\nSidebarMenu.displayName = \\\"SidebarMenu\\\"\\n\\nconst SidebarMenuItem = React.forwardRef<\\n  HTMLLIElement,\\n  React.ComponentProps<\\\"li\\\">\\n>(({ className, ...props }, ref) => (\\n  <li\\n    ref={ref}\\n    data-sidebar=\\\"menu-item\\\"\\n    className={cn(\\\"group/menu-item relative\\\", className)}\\n    {...props}\\n  />\\n))\\nSidebarMenuItem.displayName = \\\"SidebarMenuItem\\\"\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-sm\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-sm group-data-[collapsible=icon]:!p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nconst SidebarMenuButton = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<\\\"button\\\"> & {\\n    asChild?: boolean\\n    isActive?: boolean\\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n  } & VariantProps<typeof sidebarMenuButtonVariants>\\n>(\\n  (\\n    {\\n      asChild = false,\\n      isActive = false,\\n      variant = \\\"default\\\",\\n      size = \\\"default\\\",\\n      tooltip,\\n      className,\\n      ...props\\n    },\\n    ref\\n  ) => {\\n    const Comp = asChild ? Slot : \\\"button\\\"\\n    const { isMobile, state } = useSidebar()\\n\\n    const button = (\\n      <Comp\\n        ref={ref}\\n        data-sidebar=\\\"menu-button\\\"\\n        data-size={size}\\n        data-active={isActive}\\n        className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\\n        {...props}\\n      />\\n    )\\n\\n    if (!tooltip) {\\n      return button\\n    }\\n\\n    if (typeof tooltip === \\\"string\\\") {\\n      tooltip = {\\n        children: tooltip,\\n      }\\n    }\\n\\n    return (\\n      <Tooltip>\\n        <TooltipTrigger asChild>{button}</TooltipTrigger>\\n        <TooltipContent\\n          side=\\\"right\\\"\\n          align=\\\"center\\\"\\n          hidden={state !== \\\"collapsed\\\" || isMobile}\\n          {...tooltip}\\n        />\\n      </Tooltip>\\n    )\\n  }\\n)\\nSidebarMenuButton.displayName = \\\"SidebarMenuButton\\\"\\n\\nconst SidebarMenuAction = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<\\\"button\\\"> & {\\n    asChild?: boolean\\n    showOnHover?: boolean\\n  }\\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        // Increases the hit area of the button on mobile.\\n        \\\"after:absolute after:-inset-2 after:md:hidden\\\",\\n        \\\"peer-data-[size=sm]/menu-button:top-1\\\",\\n        \\\"peer-data-[size=default]/menu-button:top-1.5\\\",\\n        \\\"peer-data-[size=lg]/menu-button:top-2.5\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        showOnHover &&\\n          \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarMenuAction.displayName = \\\"SidebarMenuAction\\\"\\n\\nconst SidebarMenuBadge = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    data-sidebar=\\\"menu-badge\\\"\\n    className={cn(\\n      \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\\\",\\n      \\\"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\\\",\\n      \\\"peer-data-[size=sm]/menu-button:top-1\\\",\\n      \\\"peer-data-[size=default]/menu-button:top-1.5\\\",\\n      \\\"peer-data-[size=lg]/menu-button:top-2.5\\\",\\n      \\\"group-data-[collapsible=icon]:hidden\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nSidebarMenuBadge.displayName = \\\"SidebarMenuBadge\\\"\\n\\nconst SidebarMenuSkeleton = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & {\\n    showIcon?: boolean\\n  }\\n>(({ className, showIcon = false, ...props }, ref) => {\\n  // Random width between 50 to 90%.\\n  const width = React.useMemo(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  }, [])\\n\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-[--skeleton-width] flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n})\\nSidebarMenuSkeleton.displayName = \\\"SidebarMenuSkeleton\\\"\\n\\nconst SidebarMenuSub = React.forwardRef<\\n  HTMLUListElement,\\n  React.ComponentProps<\\\"ul\\\">\\n>(({ className, ...props }, ref) => (\\n  <ul\\n    ref={ref}\\n    data-sidebar=\\\"menu-sub\\\"\\n    className={cn(\\n      \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\\\",\\n      \\\"group-data-[collapsible=icon]:hidden\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nSidebarMenuSub.displayName = \\\"SidebarMenuSub\\\"\\n\\nconst SidebarMenuSubItem = React.forwardRef<\\n  HTMLLIElement,\\n  React.ComponentProps<\\\"li\\\">\\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\\nSidebarMenuSubItem.displayName = \\\"SidebarMenuSubItem\\\"\\n\\nconst SidebarMenuSubButton = React.forwardRef<\\n  HTMLAnchorElement,\\n  React.ComponentProps<\\\"a\\\"> & {\\n    asChild?: boolean\\n    size?: \\\"sm\\\" | \\\"md\\\"\\n    isActive?: boolean\\n  }\\n>(({ asChild = false, size = \\\"md\\\", isActive, className, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      data-sidebar=\\\"menu-sub-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(\\n        \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n        \\\"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\\\",\\n        size === \\\"sm\\\" && \\\"text-xs\\\",\\n        size === \\\"md\\\" && \\\"text-sm\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarMenuSubButton.displayName = \\\"SidebarMenuSubButton\\\"\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ],\n  \"tailwind\": {\n    \"config\": {\n      \"theme\": {\n        \"extend\": {\n          \"colors\": {\n            \"sidebar\": {\n              \"DEFAULT\": \"hsl(var(--sidebar-background))\",\n              \"foreground\": \"hsl(var(--sidebar-foreground))\",\n              \"primary\": \"hsl(var(--sidebar-primary))\",\n              \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n              \"accent\": \"hsl(var(--sidebar-accent))\",\n              \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n              \"border\": \"hsl(var(--sidebar-border))\",\n              \"ring\": \"hsl(var(--sidebar-ring))\"\n            }\n          }\n        }\n      }\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"sidebar-background\": \"0 0% 98%\",\n      \"sidebar-foreground\": \"240 5.3% 26.1%\",\n      \"sidebar-primary\": \"240 5.9% 10%\",\n      \"sidebar-primary-foreground\": \"0 0% 98%\",\n      \"sidebar-accent\": \"240 4.8% 95.9%\",\n      \"sidebar-accent-foreground\": \"240 5.9% 10%\",\n      \"sidebar-border\": \"220 13% 91%\",\n      \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n    },\n    \"dark\": {\n      \"sidebar-background\": \"240 5.9% 10%\",\n      \"sidebar-foreground\": \"240 4.8% 95.9%\",\n      \"sidebar-primary\": \"224.3 76.3% 48%\",\n      \"sidebar-primary-foreground\": \"0 0% 100%\",\n      \"sidebar-accent\": \"240 3.7% 15.9%\",\n      \"sidebar-accent-foreground\": \"240 4.8% 95.9%\",\n      \"sidebar-border\": \"240 3.7% 15.9%\",\n      \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sink.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sink\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"alert\",\n    \"alert-dialog\",\n    \"aspect-ratio\",\n    \"avatar\",\n    \"badge\",\n    \"breadcrumb\",\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"carousel\",\n    \"chart\",\n    \"checkbox\",\n    \"collapsible\",\n    \"command\",\n    \"context-menu\",\n    \"dialog\",\n    \"drawer\",\n    \"dropdown-menu\",\n    \"hover-card\",\n    \"input\",\n    \"input-otp\",\n    \"label\",\n    \"menubar\",\n    \"navigation-menu\",\n    \"pagination\",\n    \"popover\",\n    \"progress\",\n    \"radio-group\",\n    \"resizable\",\n    \"scroll-area\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"sidebar\",\n    \"skeleton\",\n    \"slider\",\n    \"sonner\",\n    \"switch\",\n    \"table\",\n    \"tabs\",\n    \"textarea\",\n    \"toast\",\n    \"toggle\",\n    \"toggle-group\",\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sink/page.tsx\",\n      \"content\": \"import { AccordionDemo } from \\\"@/registry/default/internal/sink/components/accordion-demo\\\"\\nimport { AlertDemo } from \\\"@/registry/default/internal/sink/components/alert-demo\\\"\\nimport { AlertDialogDemo } from \\\"@/registry/default/internal/sink/components/alert-dialog-demo\\\"\\nimport { AppSidebar } from \\\"@/registry/default/internal/sink/components/app-sidebar\\\"\\nimport { AspectRatioDemo } from \\\"@/registry/default/internal/sink/components/aspect-ratio-demo\\\"\\nimport { AvatarDemo } from \\\"@/registry/default/internal/sink/components/avatar-demo\\\"\\nimport { BadgeDemo } from \\\"@/registry/default/internal/sink/components/badge-demo\\\"\\nimport { BadgeDestructive } from \\\"@/registry/default/internal/sink/components/badge-destructive\\\"\\nimport { BadgeOutline } from \\\"@/registry/default/internal/sink/components/badge-outline\\\"\\nimport { BadgeSecondary } from \\\"@/registry/default/internal/sink/components/badge-secondary\\\"\\nimport { BreadcrumbDemo } from \\\"@/registry/default/internal/sink/components/breadcrumb-demo\\\"\\nimport { ButtonDemo } from \\\"@/registry/default/internal/sink/components/button-demo\\\"\\nimport { ButtonDestructive } from \\\"@/registry/default/internal/sink/components/button-destructive\\\"\\nimport { ButtonGhost } from \\\"@/registry/default/internal/sink/components/button-ghost\\\"\\nimport { ButtonLink } from \\\"@/registry/default/internal/sink/components/button-link\\\"\\nimport { ButtonLoading } from \\\"@/registry/default/internal/sink/components/button-loading\\\"\\nimport { ButtonOutline } from \\\"@/registry/default/internal/sink/components/button-outline\\\"\\nimport { ButtonSecondary } from \\\"@/registry/default/internal/sink/components/button-secondary\\\"\\nimport { ButtonWithIcon } from \\\"@/registry/default/internal/sink/components/button-with-icon\\\"\\nimport { CalendarDemo } from \\\"@/registry/default/internal/sink/components/calendar-demo\\\"\\nimport { CardDemo } from \\\"@/registry/default/internal/sink/components/card-demo\\\"\\nimport { CarouselDemo } from \\\"@/registry/default/internal/sink/components/carousel-demo\\\"\\nimport { CheckboxDemo } from \\\"@/registry/default/internal/sink/components/checkbox-demo\\\"\\nimport { CollapsibleDemo } from \\\"@/registry/default/internal/sink/components/collapsible-demo\\\"\\nimport { ComboboxDemo } from \\\"@/registry/default/internal/sink/components/combobox-demo\\\"\\nimport { CommandDemo } from \\\"@/registry/default/internal/sink/components/command-demo\\\"\\nimport { ComponentWrapper } from \\\"@/registry/default/internal/sink/components/component-wrapper\\\"\\nimport { ContextMenuDemo } from \\\"@/registry/default/internal/sink/components/context-menu-demo\\\"\\nimport { DatePickerDemo } from \\\"@/registry/default/internal/sink/components/date-picker-demo\\\"\\nimport { DialogDemo } from \\\"@/registry/default/internal/sink/components/dialog-demo\\\"\\nimport { DrawerDemo } from \\\"@/registry/default/internal/sink/components/drawer-demo\\\"\\nimport { DropdownMenuDemo } from \\\"@/registry/default/internal/sink/components/dropdown-menu-demo\\\"\\nimport { HoverCardDemo } from \\\"@/registry/default/internal/sink/components/hover-card-demo\\\"\\nimport { InputDemo } from \\\"@/registry/default/internal/sink/components/input-demo\\\"\\nimport { InputOTPDemo } from \\\"@/registry/default/internal/sink/components/input-otp-demo\\\"\\nimport { LabelDemo } from \\\"@/registry/default/internal/sink/components/label-demo\\\"\\nimport { MenubarDemo } from \\\"@/registry/default/internal/sink/components/menubar-demo\\\"\\nimport { NavigationMenuDemo } from \\\"@/registry/default/internal/sink/components/navigation-menu-demo\\\"\\nimport { PaginationDemo } from \\\"@/registry/default/internal/sink/components/pagination-demo\\\"\\nimport { PopoverDemo } from \\\"@/registry/default/internal/sink/components/popover-demo\\\"\\nimport { ProgressDemo } from \\\"@/registry/default/internal/sink/components/progress-demo\\\"\\nimport { RadioGroupDemo } from \\\"@/registry/default/internal/sink/components/radio-group-demo\\\"\\nimport { ResizableHandleDemo } from \\\"@/registry/default/internal/sink/components/resizable-handle\\\"\\nimport { ScrollAreaDemo } from \\\"@/registry/default/internal/sink/components/scroll-area-demo\\\"\\nimport { SelectDemo } from \\\"@/registry/default/internal/sink/components/select-demo\\\"\\nimport { SeparatorDemo } from \\\"@/registry/default/internal/sink/components/separator-demo\\\"\\nimport { SheetDemo } from \\\"@/registry/default/internal/sink/components/sheet-demo\\\"\\nimport { SkeletonDemo } from \\\"@/registry/default/internal/sink/components/skeleton-demo\\\"\\nimport { SliderDemo } from \\\"@/registry/default/internal/sink/components/slider-demo\\\"\\nimport { SonnerDemo } from \\\"@/registry/default/internal/sink/components/sonner-demo\\\"\\nimport { SwitchDemo } from \\\"@/registry/default/internal/sink/components/switch-demo\\\"\\nimport { TableDemo } from \\\"@/registry/default/internal/sink/components/table-demo\\\"\\nimport { TabsDemo } from \\\"@/registry/default/internal/sink/components/tabs-demo\\\"\\nimport { TextareaDemo } from \\\"@/registry/default/internal/sink/components/textarea-demo\\\"\\nimport { ToastDemo } from \\\"@/registry/default/internal/sink/components/toast-demo\\\"\\nimport { ToggleDemo } from \\\"@/registry/default/internal/sink/components/toggle-demo\\\"\\nimport { ToggleDisabled } from \\\"@/registry/default/internal/sink/components/toggle-disabled\\\"\\nimport { ToggleGroupDemo } from \\\"@/registry/default/internal/sink/components/toggle-group-demo\\\"\\nimport { ToggleOutline } from \\\"@/registry/default/internal/sink/components/toggle-outline\\\"\\nimport { ToggleWithText } from \\\"@/registry/default/internal/sink/components/toggle-with-text\\\"\\nimport { TooltipDemo } from \\\"@/registry/default/internal/sink/components/tooltip-demo\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport default function SinkPage() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\\\">\\n            <ComponentWrapper name=\\\"Accordion\\\">\\n              <AccordionDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Alert\\\">\\n              <AlertDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"AlertDialog\\\">\\n              <AlertDialogDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"AspectRatio\\\">\\n              <AspectRatioDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Avatar\\\">\\n              <AvatarDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Badge\\\">\\n              <BadgeDemo />\\n              <BadgeDestructive />\\n              <BadgeOutline />\\n              <BadgeSecondary />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Breadcrumb\\\">\\n              <BreadcrumbDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Button\\\">\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <ButtonDemo />\\n                <ButtonDestructive />\\n                <ButtonGhost />\\n                <ButtonLink />\\n              </div>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <ButtonLoading />\\n                <ButtonOutline />\\n                <ButtonSecondary />\\n              </div>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <ButtonWithIcon />\\n              </div>\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Calendar\\\">\\n              <CalendarDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Card\\\">\\n              <CardDemo className=\\\"w-full\\\" />\\n            </ComponentWrapper>\\n            <ComponentWrapper\\n              name=\\\"Carousel\\\"\\n              className=\\\"[&_.max-w-xs]:max-w-[70%]\\\"\\n            >\\n              <CarouselDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Checkbox\\\">\\n              <CheckboxDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Collapsible\\\">\\n              <CollapsibleDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Combobox\\\">\\n              <ComboboxDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper\\n              name=\\\"Command\\\"\\n              className=\\\"[&_[cmdk-root]]:md:min-w-max\\\"\\n            >\\n              <CommandDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"ContextMenu\\\">\\n              <ContextMenuDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"DatePicker\\\">\\n              <DatePickerDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Dialog\\\">\\n              <DialogDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Drawer\\\">\\n              <DrawerDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"DropdownMenu\\\">\\n              <DropdownMenuDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"HoverCard\\\">\\n              <HoverCardDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Input\\\">\\n              <InputDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"InputOTP\\\">\\n              <InputOTPDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Label\\\">\\n              <LabelDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Menubar\\\">\\n              <MenubarDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"NavigationMenu\\\" className=\\\"col-span-2\\\">\\n              <NavigationMenuDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Pagination\\\">\\n              <PaginationDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Popover\\\">\\n              <PopoverDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Progress\\\">\\n              <ProgressDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"RadioGroup\\\">\\n              <RadioGroupDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Resizable\\\" className=\\\"col-span-2\\\">\\n              <ResizableHandleDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"ScrollArea\\\">\\n              <ScrollAreaDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Select\\\">\\n              <SelectDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Separator\\\">\\n              <SeparatorDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Sheet\\\">\\n              <SheetDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Skeleton\\\">\\n              <SkeletonDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Slider\\\">\\n              <SliderDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Sonner\\\">\\n              <SonnerDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Switch\\\">\\n              <SwitchDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Table\\\" className=\\\"col-span-2\\\">\\n              <TableDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Tabs\\\">\\n              <TabsDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Textarea\\\">\\n              <TextareaDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Toast\\\">\\n              <ToastDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Toggle\\\">\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <ToggleDemo />\\n                <ToggleDisabled />\\n                <ToggleOutline />\\n                <ToggleWithText />\\n              </div>\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"ToggleGroup\\\">\\n              <ToggleGroupDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Tooltip\\\">\\n              <TooltipDemo />\\n            </ComponentWrapper>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/sink/page.tsx\"\n    },\n    {\n      \"path\": \"internal/sink/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  GalleryVerticalEnd,\\n  Map,\\n  PieChart,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/default/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/default/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/default/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/default/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: GalleryVerticalEnd,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/component-wrapper.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/default/lib/utils\\\"\\n\\nexport function ComponentWrapper({\\n  className,\\n  name,\\n  children,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"div\\\"> & { name: string }) {\\n  return (\\n    <div\\n      className={cn(\\\"flex w-full flex-col rounded-lg border\\\", className)}\\n      {...props}\\n    >\\n      <div className=\\\"border-b px-4 py-3\\\">\\n        <div className=\\\"text-sm font-medium\\\">{name}</div>\\n      </div>\\n      <div className=\\\"flex flex-1 flex-col items-center justify-center gap-2 p-4 [&>div]:max-w-full\\\">\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon && <item.icon />}\\n                  <span>{item.title}</span>\\n                  <ChevronRight className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  Forward,\\n  MoreHorizontal,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Forward className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal className=\\\"text-sidebar-foreground/70\\\" />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/default/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">\\n                  {activeTeam.name}\\n                </span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/accordion-demo.tsx\",\n      \"content\": \"import {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/default/ui/accordion\\\"\\n\\nexport function AccordionDemo() {\\n  return (\\n    <Accordion type=\\\"single\\\" collapsible className=\\\"w-full\\\">\\n      <AccordionItem value=\\\"item-1\\\">\\n        <AccordionTrigger>Is it accessible?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It adheres to the WAI-ARIA design pattern.\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-2\\\">\\n        <AccordionTrigger>Is it styled?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It comes with default styles that matches the other\\n          components&apos; aesthetic.\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-3\\\">\\n        <AccordionTrigger>Is it animated?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It's animated by default, but you can disable it if you prefer.\\n        </AccordionContent>\\n      </AccordionItem>\\n    </Accordion>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/alert-demo.tsx\",\n      \"content\": \"import { Terminal } from \\\"lucide-react\\\"\\n\\nimport {\\n  Alert,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/default/ui/alert\\\"\\n\\nexport function AlertDemo() {\\n  return (\\n    <Alert>\\n      <Terminal className=\\\"h-4 w-4\\\" />\\n      <AlertTitle>Heads up!</AlertTitle>\\n      <AlertDescription>\\n        You can add components to your app using the cli.\\n      </AlertDescription>\\n    </Alert>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/alert-dialog-demo.tsx\",\n      \"content\": \"import {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/default/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function AlertDialogDemo() {\\n  return (\\n    <AlertDialog>\\n      <AlertDialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Show Dialog</Button>\\n      </AlertDialogTrigger>\\n      <AlertDialogContent>\\n        <AlertDialogHeader>\\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n          <AlertDialogDescription>\\n            This action cannot be undone. This will permanently delete your\\n            account and remove your data from our servers.\\n          </AlertDialogDescription>\\n        </AlertDialogHeader>\\n        <AlertDialogFooter>\\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\\n          <AlertDialogAction>Continue</AlertDialogAction>\\n        </AlertDialogFooter>\\n      </AlertDialogContent>\\n    </AlertDialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/aspect-ratio-demo.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport { AspectRatio } from \\\"@/registry/default/ui/aspect-ratio\\\"\\n\\nexport function AspectRatioDemo() {\\n  return (\\n    <AspectRatio ratio={16 / 9} className=\\\"bg-muted\\\">\\n      <Image\\n        src=\\\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\\\"\\n        alt=\\\"Photo by Drew Beamer\\\"\\n        fill\\n        className=\\\"h-full w-full rounded-md object-cover\\\"\\n      />\\n    </AspectRatio>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/avatar-demo.tsx\",\n      \"content\": \"import {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\n\\nexport function AvatarDemo() {\\n  return (\\n    <Avatar>\\n      <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n      <AvatarFallback>CN</AvatarFallback>\\n    </Avatar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/badge-demo.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/default/ui/badge\\\"\\n\\nexport function BadgeDemo() {\\n  return <Badge>Badge</Badge>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/breadcrumb-demo.tsx\",\n      \"content\": \"import {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/default/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nexport function BreadcrumbDemo() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/\\\">Home</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger className=\\\"flex items-center gap-1\\\">\\n              <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n              <span className=\\\"sr-only\\\">Toggle menu</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"start\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Themes</DropdownMenuItem>\\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/docs/components\\\">Components</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function ButtonDemo() {\\n  return <Button>Button</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/calendar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\n\\nexport function CalendarDemo() {\\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-md border shadow\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/card-demo.tsx\",\n      \"content\": \"import { BellRing, Check } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { Switch } from \\\"@/registry/default/ui/switch\\\"\\n\\nconst notifications = [\\n  {\\n    title: \\\"Your call has been confirmed.\\\",\\n    description: \\\"1 hour ago\\\",\\n  },\\n  {\\n    title: \\\"You have a new message!\\\",\\n    description: \\\"1 hour ago\\\",\\n  },\\n  {\\n    title: \\\"Your subscription is expiring soon!\\\",\\n    description: \\\"2 hours ago\\\",\\n  },\\n]\\n\\ntype CardProps = React.ComponentProps<typeof Card>\\n\\nexport function CardDemo({ className, ...props }: CardProps) {\\n  return (\\n    <Card className={cn(\\\"w-[380px]\\\", className)} {...props}>\\n      <CardHeader>\\n        <CardTitle>Notifications</CardTitle>\\n        <CardDescription>You have 3 unread messages.</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"grid gap-4\\\">\\n        <div className=\\\" flex items-center space-x-4 rounded-md border p-4\\\">\\n          <BellRing />\\n          <div className=\\\"flex-1 space-y-1\\\">\\n            <p className=\\\"text-sm font-medium leading-none\\\">\\n              Push Notifications\\n            </p>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Send notifications to device.\\n            </p>\\n          </div>\\n          <Switch />\\n        </div>\\n        <div>\\n          {notifications.map((notification, index) => (\\n            <div\\n              key={index}\\n              className=\\\"mb-4 grid grid-cols-[25px_1fr] items-start pb-4 last:mb-0 last:pb-0\\\"\\n            >\\n              <span className=\\\"flex h-2 w-2 translate-y-1 rounded-full bg-sky-500\\\" />\\n              <div className=\\\"space-y-1\\\">\\n                <p className=\\\"text-sm font-medium leading-none\\\">\\n                  {notification.title}\\n                </p>\\n                <p className=\\\"text-sm text-muted-foreground\\\">\\n                  {notification.description}\\n                </p>\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </CardContent>\\n      <CardFooter>\\n        <Button className=\\\"w-full\\\">\\n          <Check /> Mark all as read\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/carousel-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/default/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/default/ui/carousel\\\"\\n\\nexport function CarouselDemo() {\\n  return (\\n    <Carousel className=\\\"w-full max-w-xs\\\">\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index}>\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/checkbox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\n\\nexport function CheckboxDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Checkbox id=\\\"terms\\\" />\\n      <label\\n        htmlFor=\\\"terms\\\"\\n        className=\\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n      >\\n        Accept terms and conditions\\n      </label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/collapsible-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/default/ui/collapsible\\\"\\n\\nexport function CollapsibleDemo() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Collapsible\\n      open={isOpen}\\n      onOpenChange={setIsOpen}\\n      className=\\\"w-[350px] space-y-2\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between space-x-4 px-4\\\">\\n        <h4 className=\\\"text-sm font-semibold\\\">\\n          @peduarte starred 3 repositories\\n        </h4>\\n        <CollapsibleTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            <ChevronsUpDown className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Toggle</span>\\n          </Button>\\n        </CollapsibleTrigger>\\n      </div>\\n      <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n        @radix-ui/primitives\\n      </div>\\n      <CollapsibleContent className=\\\"space-y-2\\\">\\n        <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n          @radix-ui/colors\\n        </div>\\n        <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n          @stitches/react\\n        </div>\\n      </CollapsibleContent>\\n    </Collapsible>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/combobox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/default/ui/command\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nconst frameworks = [\\n  {\\n    value: \\\"next.js\\\",\\n    label: \\\"Next.js\\\",\\n  },\\n  {\\n    value: \\\"sveltekit\\\",\\n    label: \\\"SvelteKit\\\",\\n  },\\n  {\\n    value: \\\"nuxt.js\\\",\\n    label: \\\"Nuxt.js\\\",\\n  },\\n  {\\n    value: \\\"remix\\\",\\n    label: \\\"Remix\\\",\\n  },\\n  {\\n    value: \\\"astro\\\",\\n    label: \\\"Astro\\\",\\n  },\\n]\\n\\nexport function ComboboxDemo() {\\n  const [open, setOpen] = React.useState(false)\\n  const [value, setValue] = React.useState(\\\"\\\")\\n\\n  return (\\n    <Popover open={open} onOpenChange={setOpen}>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant=\\\"outline\\\"\\n          role=\\\"combobox\\\"\\n          aria-expanded={open}\\n          className=\\\"w-[200px] justify-between\\\"\\n        >\\n          {value\\n            ? frameworks.find((framework) => framework.value === value)?.label\\n            : \\\"Select framework...\\\"}\\n          <ChevronsUpDown className=\\\"opacity-50\\\" />\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-[200px] p-0\\\">\\n        <Command>\\n          <CommandInput placeholder=\\\"Search framework...\\\" className=\\\"h-9\\\" />\\n          <CommandList>\\n            <CommandEmpty>No framework found.</CommandEmpty>\\n            <CommandGroup>\\n              {frameworks.map((framework) => (\\n                <CommandItem\\n                  key={framework.value}\\n                  value={framework.value}\\n                  onSelect={(currentValue) => {\\n                    setValue(currentValue === value ? \\\"\\\" : currentValue)\\n                    setOpen(false)\\n                  }}\\n                >\\n                  {framework.label}\\n                  <Check\\n                    className={cn(\\n                      \\\"ml-auto\\\",\\n                      value === framework.value ? \\\"opacity-100\\\" : \\\"opacity-0\\\"\\n                    )}\\n                  />\\n                </CommandItem>\\n              ))}\\n            </CommandGroup>\\n          </CommandList>\\n        </Command>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/command-demo.tsx\",\n      \"content\": \"import {\\n  Calculator,\\n  Calendar,\\n  CreditCard,\\n  Settings,\\n  Smile,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/default/ui/command\\\"\\n\\nexport function CommandDemo() {\\n  return (\\n    <Command className=\\\"rounded-lg border shadow-md md:min-w-[450px]\\\">\\n      <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n      <CommandList>\\n        <CommandEmpty>No results found.</CommandEmpty>\\n        <CommandGroup heading=\\\"Suggestions\\\">\\n          <CommandItem>\\n            <Calendar />\\n            <span>Calendar</span>\\n          </CommandItem>\\n          <CommandItem>\\n            <Smile />\\n            <span>Search Emoji</span>\\n          </CommandItem>\\n          <CommandItem disabled>\\n            <Calculator />\\n            <span>Calculator</span>\\n          </CommandItem>\\n        </CommandGroup>\\n        <CommandSeparator />\\n        <CommandGroup heading=\\\"Settings\\\">\\n          <CommandItem>\\n            <User />\\n            <span>Profile</span>\\n            <CommandShortcut>⌘P</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <CreditCard />\\n            <span>Billing</span>\\n            <CommandShortcut>⌘B</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <Settings />\\n            <span>Settings</span>\\n            <CommandShortcut>⌘S</CommandShortcut>\\n          </CommandItem>\\n        </CommandGroup>\\n      </CommandList>\\n    </Command>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/context-menu-demo.tsx\",\n      \"content\": \"import {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/default/ui/context-menu\\\"\\n\\nexport function ContextMenuDemo() {\\n  return (\\n    <ContextMenu>\\n      <ContextMenuTrigger className=\\\"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm\\\">\\n        Right click here\\n      </ContextMenuTrigger>\\n      <ContextMenuContent className=\\\"w-64\\\">\\n        <ContextMenuItem inset>\\n          Back\\n          <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset disabled>\\n          Forward\\n          <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset>\\n          Reload\\n          <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuSub>\\n          <ContextMenuSubTrigger inset>More Tools</ContextMenuSubTrigger>\\n          <ContextMenuSubContent className=\\\"w-48\\\">\\n            <ContextMenuItem>\\n              Save Page As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n            <ContextMenuItem>Name Window...</ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>Developer Tools</ContextMenuItem>\\n          </ContextMenuSubContent>\\n        </ContextMenuSub>\\n        <ContextMenuSeparator />\\n        <ContextMenuCheckboxItem checked>\\n          Show Bookmarks Bar\\n          <ContextMenuShortcut>⌘⇧B</ContextMenuShortcut>\\n        </ContextMenuCheckboxItem>\\n        <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n        <ContextMenuSeparator />\\n        <ContextMenuRadioGroup value=\\\"pedro\\\">\\n          <ContextMenuLabel inset>People</ContextMenuLabel>\\n          <ContextMenuSeparator />\\n          <ContextMenuRadioItem value=\\\"pedro\\\">\\n            Pedro Duarte\\n          </ContextMenuRadioItem>\\n          <ContextMenuRadioItem value=\\\"colm\\\">Colm Tuite</ContextMenuRadioItem>\\n        </ContextMenuRadioGroup>\\n      </ContextMenuContent>\\n    </ContextMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/date-picker-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/default/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport function DatePickerDemo() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant={\\\"outline\\\"}\\n          className={cn(\\n            \\\"w-[240px] justify-start text-left font-normal\\\",\\n            !date && \\\"text-muted-foreground\\\"\\n          )}\\n        >\\n          <CalendarIcon />\\n          {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          initialFocus\\n        />\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/dialog-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/default/ui/dialog\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport function DialogDemo() {\\n  return (\\n    <Dialog>\\n      <DialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Edit Profile</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n        <DialogHeader>\\n          <DialogTitle>Edit profile</DialogTitle>\\n          <DialogDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </DialogDescription>\\n        </DialogHeader>\\n        <div className=\\\"grid gap-4 py-4\\\">\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n              Name\\n            </Label>\\n            <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n              Username\\n            </Label>\\n            <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n        </div>\\n        <DialogFooter>\\n          <Button type=\\\"submit\\\">Save changes</Button>\\n        </DialogFooter>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/drawer-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Minus, Plus } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, ResponsiveContainer } from \\\"recharts\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/default/ui/drawer\\\"\\n\\nconst data = [\\n  {\\n    goal: 400,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 239,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 349,\\n  },\\n]\\n\\nexport function DrawerDemo() {\\n  const [goal, setGoal] = React.useState(350)\\n\\n  function onClick(adjustment: number) {\\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\\n  }\\n\\n  return (\\n    <Drawer>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open Drawer</Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <div className=\\\"mx-auto w-full max-w-sm\\\">\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"p-4 pb-0\\\">\\n            <div className=\\\"flex items-center justify-center space-x-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(-10)}\\n                disabled={goal <= 200}\\n              >\\n                <Minus />\\n                <span className=\\\"sr-only\\\">Decrease</span>\\n              </Button>\\n              <div className=\\\"flex-1 text-center\\\">\\n                <div className=\\\"text-7xl font-bold tracking-tighter\\\">\\n                  {goal}\\n                </div>\\n                <div className=\\\"text-[0.70rem] uppercase text-muted-foreground\\\">\\n                  Calories/day\\n                </div>\\n              </div>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(10)}\\n                disabled={goal >= 400}\\n              >\\n                <Plus />\\n                <span className=\\\"sr-only\\\">Increase</span>\\n              </Button>\\n            </div>\\n            <div className=\\\"mt-3 h-[120px]\\\">\\n              <ResponsiveContainer width=\\\"100%\\\" height=\\\"100%\\\">\\n                <BarChart data={data}>\\n                  <Bar\\n                    dataKey=\\\"goal\\\"\\n                    style={\\n                      {\\n                        fill: \\\"hsl(var(--foreground))\\\",\\n                        opacity: 0.9,\\n                      } as React.CSSProperties\\n                    }\\n                  />\\n                </BarChart>\\n              </ResponsiveContainer>\\n            </div>\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </div>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/dropdown-menu-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/default/ui/dropdown-menu\\\"\\n\\nexport function DropdownMenuDemo() {\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>\\n            Profile\\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Billing\\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Settings\\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Keyboard shortcuts\\n            <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>Team</DropdownMenuItem>\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuItem>Email</DropdownMenuItem>\\n                <DropdownMenuItem>Message</DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>More...</DropdownMenuItem>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n          <DropdownMenuItem>\\n            New Team\\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>GitHub</DropdownMenuItem>\\n        <DropdownMenuItem>Support</DropdownMenuItem>\\n        <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>\\n          Log out\\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n        </DropdownMenuItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/hover-card-demo.tsx\",\n      \"content\": \"import { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/default/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/default/ui/hover-card\\\"\\n\\nexport function HoverCardDemo() {\\n  return (\\n    <HoverCard>\\n      <HoverCardTrigger asChild>\\n        <Button variant=\\\"link\\\">@nextjs</Button>\\n      </HoverCardTrigger>\\n      <HoverCardContent className=\\\"w-80\\\">\\n        <div className=\\\"flex justify-between space-x-4\\\">\\n          <Avatar>\\n            <AvatarImage src=\\\"https://github.com/vercel.png\\\" />\\n            <AvatarFallback>VC</AvatarFallback>\\n          </Avatar>\\n          <div className=\\\"space-y-1\\\">\\n            <h4 className=\\\"text-sm font-semibold\\\">@nextjs</h4>\\n            <p className=\\\"text-sm\\\">\\n              The React Framework – created and maintained by @vercel.\\n            </p>\\n            <div className=\\\"flex items-center pt-2\\\">\\n              <CalendarIcon className=\\\"mr-2 h-4 w-4 opacity-70\\\" />{\\\" \\\"}\\n              <span className=\\\"text-xs text-muted-foreground\\\">\\n                Joined December 2021\\n              </span>\\n            </div>\\n          </div>\\n        </div>\\n      </HoverCardContent>\\n    </HoverCard>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/input-demo.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/default/ui/input\\\"\\n\\nexport function InputDemo() {\\n  return <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/input-otp-demo.tsx\",\n      \"content\": \"import {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/default/ui/input-otp\\\"\\n\\nexport function InputOTPDemo() {\\n  return (\\n    <InputOTP maxLength={6}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n        <InputOTPSlot index={2} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={3} />\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/label-demo.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/default/ui/checkbox\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\n\\nexport function LabelDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <Label htmlFor=\\\"terms\\\">Accept terms and conditions</Label>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/menubar-demo.tsx\",\n      \"content\": \"import {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarItem,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/default/ui/menubar\\\"\\n\\nexport function MenubarDemo() {\\n  return (\\n    <Menubar>\\n      <MenubarMenu>\\n        <MenubarTrigger>File</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled>New Incognito Window</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Email link</MenubarItem>\\n              <MenubarItem>Messages</MenubarItem>\\n              <MenubarItem>Notes</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>\\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n          </MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Edit</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Search the web</MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem>Find...</MenubarItem>\\n              <MenubarItem>Find Next</MenubarItem>\\n              <MenubarItem>Find Previous</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>Cut</MenubarItem>\\n          <MenubarItem>Copy</MenubarItem>\\n          <MenubarItem>Paste</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>View</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n          <MenubarCheckboxItem checked>\\n            Always Show Full URLs\\n          </MenubarCheckboxItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>\\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled inset>\\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Toggle Fullscreen</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Hide Sidebar</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Profiles</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarRadioGroup value=\\\"benoit\\\">\\n            <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"Luis\\\">Luis</MenubarRadioItem>\\n          </MenubarRadioGroup>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Edit...</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Add Profile...</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n    </Menubar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/navigation-menu-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/default/ui/navigation-menu\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport function NavigationMenuDemo() {\\n  return (\\n    <NavigationMenu>\\n      <NavigationMenuList>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid gap-3 p-4 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\\\">\\n              <li className=\\\"row-span-3\\\">\\n                <NavigationMenuLink asChild>\\n                  <a\\n                    className=\\\"flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md\\\"\\n                    href=\\\"/\\\"\\n                  >\\n                    <div className=\\\"mb-2 mt-4 text-lg font-medium\\\">\\n                      shadcn/ui\\n                    </div>\\n                    <p className=\\\"text-sm leading-tight text-muted-foreground\\\">\\n                      Beautifully designed components built with Radix UI and\\n                      Tailwind CSS.\\n                    </p>\\n                  </a>\\n                </NavigationMenuLink>\\n              </li>\\n              <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                Re-usable components built using Radix UI and Tailwind CSS.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                How to install dependencies and structure your app.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                Styles for headings, paragraphs, lists...etc\\n              </ListItem>\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px] \\\">\\n              {components.map((component) => (\\n                <ListItem\\n                  key={component.title}\\n                  title={component.title}\\n                  href={component.href}\\n                >\\n                  {component.description}\\n                </ListItem>\\n              ))}\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <Link href=\\\"/docs\\\" legacyBehavior passHref>\\n            <NavigationMenuLink className={navigationMenuTriggerStyle()}>\\n              Documentation\\n            </NavigationMenuLink>\\n          </Link>\\n        </NavigationMenuItem>\\n      </NavigationMenuList>\\n    </NavigationMenu>\\n  )\\n}\\n\\nconst ListItem = React.forwardRef<\\n  React.ElementRef<\\\"a\\\">,\\n  React.ComponentPropsWithoutRef<\\\"a\\\">\\n>(({ className, title, children, ...props }, ref) => {\\n  return (\\n    <li>\\n      <NavigationMenuLink asChild>\\n        <a\\n          ref={ref}\\n          className={cn(\\n            \\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <div className=\\\"text-sm font-medium leading-none\\\">{title}</div>\\n          <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n            {children}\\n          </p>\\n        </a>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n})\\nListItem.displayName = \\\"ListItem\\\"\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/pagination-demo.tsx\",\n      \"content\": \"import {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/default/ui/pagination\\\"\\n\\nexport function PaginationDemo() {\\n  return (\\n    <Pagination>\\n      <PaginationContent>\\n        <PaginationItem>\\n          <PaginationPrevious href=\\\"#\\\" />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\" isActive>\\n            2\\n          </PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationEllipsis />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationNext href=\\\"#\\\" />\\n        </PaginationItem>\\n      </PaginationContent>\\n    </Pagination>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/popover-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/default/ui/popover\\\"\\n\\nexport function PopoverDemo() {\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open popover</Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-80\\\">\\n        <div className=\\\"grid gap-4\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <h4 className=\\\"font-medium leading-none\\\">Dimensions</h4>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Set the dimensions for the layer.\\n            </p>\\n          </div>\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"width\\\">Width</Label>\\n              <Input\\n                id=\\\"width\\\"\\n                defaultValue=\\\"100%\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxWidth\\\">Max. width</Label>\\n              <Input\\n                id=\\\"maxWidth\\\"\\n                defaultValue=\\\"300px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"height\\\">Height</Label>\\n              <Input\\n                id=\\\"height\\\"\\n                defaultValue=\\\"25px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxHeight\\\">Max. height</Label>\\n              <Input\\n                id=\\\"maxHeight\\\"\\n                defaultValue=\\\"none\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n          </div>\\n        </div>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/progress-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Progress } from \\\"@/registry/default/ui/progress\\\"\\n\\nexport function ProgressDemo() {\\n  const [progress, setProgress] = React.useState(13)\\n\\n  React.useEffect(() => {\\n    const timer = setTimeout(() => setProgress(66), 500)\\n    return () => clearTimeout(timer)\\n  }, [])\\n\\n  return <Progress value={progress} className=\\\"w-[60%]\\\" />\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/radio-group-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/default/ui/radio-group\\\"\\n\\nexport function RadioGroupDemo() {\\n  return (\\n    <RadioGroup defaultValue=\\\"comfortable\\\">\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n        <Label htmlFor=\\\"r1\\\">Default</Label>\\n      </div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n        <Label htmlFor=\\\"r2\\\">Comfortable</Label>\\n      </div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n        <Label htmlFor=\\\"r3\\\">Compact</Label>\\n      </div>\\n    </RadioGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/resizable-handle.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/default/ui/resizable\\\"\\n\\nexport function ResizableHandleDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"horizontal\\\"\\n      className=\\\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={25}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Sidebar</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle withHandle />\\n      <ResizablePanel defaultSize={75}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Content</span>\\n        </div>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/scroll-area-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { ScrollArea } from \\\"@/registry/default/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/default/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nexport function ScrollAreaDemo() {\\n  return (\\n    <ScrollArea className=\\\"h-72 w-48 rounded-md border\\\">\\n      <div className=\\\"p-4\\\">\\n        <h4 className=\\\"mb-4 text-sm font-medium leading-none\\\">Tags</h4>\\n        {tags.map((tag) => (\\n          <React.Fragment key={tag}>\\n            <div className=\\\"text-sm\\\">{tag}</div>\\n            <Separator className=\\\"my-2\\\" />\\n          </React.Fragment>\\n        ))}\\n      </div>\\n    </ScrollArea>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/select-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/default/ui/select\\\"\\n\\nexport function SelectDemo() {\\n  return (\\n    <Select>\\n      <SelectTrigger className=\\\"w-[180px]\\\">\\n        <SelectValue placeholder=\\\"Select a fruit\\\" />\\n      </SelectTrigger>\\n      <SelectContent>\\n        <SelectGroup>\\n          <SelectLabel>Fruits</SelectLabel>\\n          <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n          <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n          <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n          <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n        </SelectGroup>\\n      </SelectContent>\\n    </Select>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/separator-demo.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/default/ui/separator\\\"\\n\\nexport function SeparatorDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"space-y-1\\\">\\n        <h4 className=\\\"text-sm font-medium leading-none\\\">Radix Primitives</h4>\\n        <p className=\\\"text-sm text-muted-foreground\\\">\\n          An open-source UI component library.\\n        </p>\\n      </div>\\n      <Separator className=\\\"my-4\\\" />\\n      <div className=\\\"flex h-5 items-center space-x-4 text-sm\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/sheet-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/default/ui/sheet\\\"\\n\\nexport function SheetDemo() {\\n  return (\\n    <Sheet>\\n      <SheetTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </SheetTrigger>\\n      <SheetContent>\\n        <SheetHeader>\\n          <SheetTitle>Edit profile</SheetTitle>\\n          <SheetDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </SheetDescription>\\n        </SheetHeader>\\n        <div className=\\\"grid gap-4 py-4\\\">\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n              Name\\n            </Label>\\n            <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n              Username\\n            </Label>\\n            <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n        </div>\\n        <SheetFooter>\\n          <SheetClose asChild>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n          </SheetClose>\\n        </SheetFooter>\\n      </SheetContent>\\n    </Sheet>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/skeleton-demo.tsx\",\n      \"content\": \"import { Skeleton } from \\\"@/registry/default/ui/skeleton\\\"\\n\\nexport function SkeletonDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-4\\\">\\n      <Skeleton className=\\\"h-12 w-12 rounded-full\\\" />\\n      <div className=\\\"space-y-2\\\">\\n        <Skeleton className=\\\"h-4 w-[250px]\\\" />\\n        <Skeleton className=\\\"h-4 w-[200px]\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/slider-demo.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\nimport { Slider } from \\\"@/registry/default/ui/slider\\\"\\n\\ntype SliderProps = React.ComponentProps<typeof Slider>\\n\\nexport function SliderDemo({ className, ...props }: SliderProps) {\\n  return (\\n    <Slider\\n      defaultValue={[50]}\\n      max={100}\\n      step={1}\\n      className={cn(\\\"w-[60%]\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/sonner-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function SonnerDemo() {\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() =>\\n        toast(\\\"Event has been created\\\", {\\n          description: \\\"Sunday, December 03, 2023 at 9:00 AM\\\",\\n          action: {\\n            label: \\\"Undo\\\",\\n            onClick: () => console.log(\\\"Undo\\\"),\\n          },\\n        })\\n      }\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/switch-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { Switch } from \\\"@/registry/default/ui/switch\\\"\\n\\nexport function SwitchDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Switch id=\\\"airplane-mode\\\" />\\n      <Label htmlFor=\\\"airplane-mode\\\">Airplane Mode</Label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/table-demo.tsx\",\n      \"content\": \"import {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/default/ui/table\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport function TableDemo() {\\n  return (\\n    <Table>\\n      <TableCaption>A list of your recent invoices.</TableCaption>\\n      <TableHeader>\\n        <TableRow>\\n          <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n          <TableHead>Status</TableHead>\\n          <TableHead>Method</TableHead>\\n          <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n        </TableRow>\\n      </TableHeader>\\n      <TableBody>\\n        {invoices.map((invoice) => (\\n          <TableRow key={invoice.invoice}>\\n            <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n            <TableCell>{invoice.paymentStatus}</TableCell>\\n            <TableCell>{invoice.paymentMethod}</TableCell>\\n            <TableCell className=\\\"text-right\\\">{invoice.totalAmount}</TableCell>\\n          </TableRow>\\n        ))}\\n      </TableBody>\\n      <TableFooter>\\n        <TableRow>\\n          <TableCell colSpan={3}>Total</TableCell>\\n          <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n        </TableRow>\\n      </TableFooter>\\n    </Table>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/tabs-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/default/ui/tabs\\\"\\n\\nexport function TabsDemo() {\\n  return (\\n    <Tabs defaultValue=\\\"account\\\" className=\\\"w-[400px]\\\">\\n      <TabsList className=\\\"grid w-full grid-cols-2\\\">\\n        <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n        <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n      </TabsList>\\n      <TabsContent value=\\\"account\\\">\\n        <Card>\\n          <CardHeader>\\n            <CardTitle>Account</CardTitle>\\n            <CardDescription>\\n              Make changes to your account here. Click save when you're done.\\n            </CardDescription>\\n          </CardHeader>\\n          <CardContent className=\\\"space-y-2\\\">\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"name\\\">Name</Label>\\n              <Input id=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n            </div>\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"username\\\">Username</Label>\\n              <Input id=\\\"username\\\" defaultValue=\\\"@peduarte\\\" />\\n            </div>\\n          </CardContent>\\n          <CardFooter>\\n            <Button>Save changes</Button>\\n          </CardFooter>\\n        </Card>\\n      </TabsContent>\\n      <TabsContent value=\\\"password\\\">\\n        <Card>\\n          <CardHeader>\\n            <CardTitle>Password</CardTitle>\\n            <CardDescription>\\n              Change your password here. After saving, you'll be logged out.\\n            </CardDescription>\\n          </CardHeader>\\n          <CardContent className=\\\"space-y-2\\\">\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"current\\\">Current password</Label>\\n              <Input id=\\\"current\\\" type=\\\"password\\\" />\\n            </div>\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"new\\\">New password</Label>\\n              <Input id=\\\"new\\\" type=\\\"password\\\" />\\n            </div>\\n          </CardContent>\\n          <CardFooter>\\n            <Button>Save password</Button>\\n          </CardFooter>\\n        </Card>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/textarea-demo.tsx\",\n      \"content\": \"import { Textarea } from \\\"@/registry/default/ui/textarea\\\"\\n\\nexport function TextareaDemo() {\\n  return <Textarea placeholder=\\\"Type your message here.\\\" />\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toast-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/default/ui/toast\\\"\\n\\nexport function ToastDemo() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Scheduled: Catch up \\\",\\n          description: \\\"Friday, February 10, 2023 at 5:57 PM\\\",\\n          action: (\\n            <ToastAction altText=\\\"Goto schedule to undo\\\">Undo</ToastAction>\\n          ),\\n        })\\n      }}\\n    >\\n      Add to calendar\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-demo.tsx\",\n      \"content\": \"import { Bold } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport function ToggleDemo() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\">\\n      <Bold className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-group-demo.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/default/ui/toggle-group\\\"\\n\\nexport function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/tooltip-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/registry/default/ui/tooltip\\\"\\n\\nexport function TooltipDemo() {\\n  return (\\n    <TooltipProvider>\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\">Hover</Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </TooltipProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/badge-destructive.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/default/ui/badge\\\"\\n\\nexport function BadgeDestructive() {\\n  return <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/badge-outline.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/default/ui/badge\\\"\\n\\nexport function BadgeOutline() {\\n  return <Badge variant=\\\"outline\\\">Outline</Badge>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/badge-secondary.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/default/ui/badge\\\"\\n\\nexport function BadgeSecondary() {\\n  return <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-destructive.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function ButtonDestructive() {\\n  return <Button variant=\\\"destructive\\\">Destructive</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-ghost.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function ButtonGhost() {\\n  return <Button variant=\\\"ghost\\\">Ghost</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-link.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function ButtonLink() {\\n  return <Button variant=\\\"link\\\">Link</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-loading.tsx\",\n      \"content\": \"import { Loader2 } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function ButtonLoading() {\\n  return (\\n    <Button disabled>\\n      <Loader2 className=\\\"animate-spin\\\" />\\n      Please wait\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-outline.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function ButtonOutline() {\\n  return <Button variant=\\\"outline\\\">Outline</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-secondary.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function ButtonSecondary() {\\n  return <Button variant=\\\"secondary\\\">Secondary</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-with-icon.tsx\",\n      \"content\": \"import { MailOpen } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport function ButtonWithIcon() {\\n  return (\\n    <Button>\\n      <MailOpen /> Login with Email\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-disabled.tsx\",\n      \"content\": \"import { Underline } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport function ToggleDisabled() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\" disabled>\\n      <Underline className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-outline.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport function ToggleOutline() {\\n  return (\\n    <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-with-text.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport function ToggleWithText() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n      Italic\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/skeleton-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-card\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/skeleton-card.tsx\",\n      \"content\": \"import { Skeleton } from \\\"@/registry/default/ui/skeleton\\\"\\n\\nexport default function SkeletonCard() {\\n  return (\\n    <div className=\\\"flex flex-col space-y-3\\\">\\n      <Skeleton className=\\\"h-[125px] w-[250px] rounded-xl\\\" />\\n      <div className=\\\"space-y-2\\\">\\n        <Skeleton className=\\\"h-4 w-[250px]\\\" />\\n        <Skeleton className=\\\"h-4 w-[200px]\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/skeleton-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/skeleton-demo.tsx\",\n      \"content\": \"import { Skeleton } from \\\"@/registry/default/ui/skeleton\\\"\\n\\nexport default function SkeletonDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-4\\\">\\n      <Skeleton className=\\\"h-12 w-12 rounded-full\\\" />\\n      <div className=\\\"space-y-2\\\">\\n        <Skeleton className=\\\"h-4 w-[250px]\\\" />\\n        <Skeleton className=\\\"h-4 w-[200px]\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Skeleton({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) {\\n  return (\\n    <div\\n      className={cn(\\\"animate-pulse rounded-md bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/slider-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"slider\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/slider-demo.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\nimport { Slider } from \\\"@/registry/default/ui/slider\\\"\\n\\ntype SliderProps = React.ComponentProps<typeof Slider>\\n\\nexport default function SliderDemo({ className, ...props }: SliderProps) {\\n  return (\\n    <Slider\\n      defaultValue={[50]}\\n      max={100}\\n      step={1}\\n      className={cn(\\\"w-[60%]\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slider\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SliderPrimitive from \\\"@radix-ui/react-slider\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Slider = React.forwardRef<\\n  React.ElementRef<typeof SliderPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\\n>(({ className, ...props }, ref) => (\\n  <SliderPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex w-full touch-none select-none items-center\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <SliderPrimitive.Track className=\\\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\\\">\\n      <SliderPrimitive.Range className=\\\"absolute h-full bg-primary\\\" />\\n    </SliderPrimitive.Track>\\n    <SliderPrimitive.Thumb className=\\\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\\\" />\\n  </SliderPrimitive.Root>\\n))\\nSlider.displayName = SliderPrimitive.Root.displayName\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sonner-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/sonner-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function SonnerDemo() {\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() =>\\n        toast(\\\"Event has been created\\\", {\\n          description: \\\"Sunday, December 03, 2023 at 9:00 AM\\\",\\n          action: {\\n            label: \\\"Undo\\\",\\n            onClick: () => console.log(\\\"Undo\\\"),\\n          },\\n        })\\n      }\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  CircleCheck,\\n  Info,\\n  LoaderCircle,\\n  OctagonX,\\n  TriangleAlert,\\n} from \\\"lucide-react\\\"\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner } from \\\"sonner\\\"\\n\\ntype ToasterProps = React.ComponentProps<typeof Sonner>\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: <CircleCheck className=\\\"h-4 w-4\\\" />,\\n        info: <Info className=\\\"h-4 w-4\\\" />,\\n        warning: <TriangleAlert className=\\\"h-4 w-4\\\" />,\\n        error: <OctagonX className=\\\"h-4 w-4\\\" />,\\n        loading: <LoaderCircle className=\\\"h-4 w-4 animate-spin\\\" />,\\n      }}\\n      toastOptions={{\\n        classNames: {\\n          toast:\\n            \\\"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\\\",\\n          description: \\\"group-[.toast]:text-muted-foreground\\\",\\n          actionButton:\\n            \\\"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\\\",\\n          cancelButton:\\n            \\\"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"class-variance-authority\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/spinner.tsx\",\n      \"content\": \"import { Loader2Icon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <Loader2Icon\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"type\": \"registry:style\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"tailwindcss-animate\",\n    \"class-variance-authority\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"tailwind\": {\n    \"config\": {\n      \"plugins\": [\n        \"require(\\\"tailwindcss-animate\\\")\"\n      ]\n    }\n  },\n  \"cssVars\": {}\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/switch-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/switch-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { Switch } from \\\"@/registry/default/ui/switch\\\"\\n\\nexport default function SwitchDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Switch id=\\\"airplane-mode\\\" />\\n      <Label htmlFor=\\\"airplane-mode\\\">Airplane Mode</Label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/switch-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"switch\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/switch-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport { Switch } from \\\"@/registry/default/ui/switch\\\"\\n\\nconst FormSchema = z.object({\\n  marketing_emails: z.boolean().default(false).optional(),\\n  security_emails: z.boolean(),\\n})\\n\\nexport default function SwitchForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      security_emails: true,\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-full space-y-6\\\">\\n        <div>\\n          <h3 className=\\\"mb-4 text-lg font-medium\\\">Email Notifications</h3>\\n          <div className=\\\"space-y-4\\\">\\n            <FormField\\n              control={form.control}\\n              name=\\\"marketing_emails\\\"\\n              render={({ field }) => (\\n                <FormItem className=\\\"flex flex-row items-center justify-between rounded-lg border p-4\\\">\\n                  <div className=\\\"space-y-0.5\\\">\\n                    <FormLabel className=\\\"text-base\\\">\\n                      Marketing emails\\n                    </FormLabel>\\n                    <FormDescription>\\n                      Receive emails about new products, features, and more.\\n                    </FormDescription>\\n                  </div>\\n                  <FormControl>\\n                    <Switch\\n                      checked={field.value}\\n                      onCheckedChange={field.onChange}\\n                    />\\n                  </FormControl>\\n                </FormItem>\\n              )}\\n            />\\n            <FormField\\n              control={form.control}\\n              name=\\\"security_emails\\\"\\n              render={({ field }) => (\\n                <FormItem className=\\\"flex flex-row items-center justify-between rounded-lg border p-4\\\">\\n                  <div className=\\\"space-y-0.5\\\">\\n                    <FormLabel className=\\\"text-base\\\">Security emails</FormLabel>\\n                    <FormDescription>\\n                      Receive emails about your account security.\\n                    </FormDescription>\\n                  </div>\\n                  <FormControl>\\n                    <Switch\\n                      checked={field.value}\\n                      onCheckedChange={field.onChange}\\n                      disabled\\n                      aria-readonly\\n                    />\\n                  </FormControl>\\n                </FormItem>\\n              )}\\n            />\\n          </div>\\n        </div>\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SwitchPrimitives from \\\"@radix-ui/react-switch\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Switch = React.forwardRef<\\n  React.ElementRef<typeof SwitchPrimitives.Root>,\\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\\n>(({ className, ...props }, ref) => (\\n  <SwitchPrimitives.Root\\n    className={cn(\\n      \\\"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\\\",\\n      className\\n    )}\\n    {...props}\\n    ref={ref}\\n  >\\n    <SwitchPrimitives.Thumb\\n      className={cn(\\n        \\\"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\\\"\\n      )}\\n    />\\n  </SwitchPrimitives.Root>\\n))\\nSwitch.displayName = SwitchPrimitives.Root.displayName\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/table-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"table\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/table-demo.tsx\",\n      \"content\": \"import {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/default/ui/table\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableDemo() {\\n  return (\\n    <Table>\\n      <TableCaption>A list of your recent invoices.</TableCaption>\\n      <TableHeader>\\n        <TableRow>\\n          <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n          <TableHead>Status</TableHead>\\n          <TableHead>Method</TableHead>\\n          <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n        </TableRow>\\n      </TableHeader>\\n      <TableBody>\\n        {invoices.map((invoice) => (\\n          <TableRow key={invoice.invoice}>\\n            <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n            <TableCell>{invoice.paymentStatus}</TableCell>\\n            <TableCell>{invoice.paymentMethod}</TableCell>\\n            <TableCell className=\\\"text-right\\\">{invoice.totalAmount}</TableCell>\\n          </TableRow>\\n        ))}\\n      </TableBody>\\n      <TableFooter>\\n        <TableRow>\\n          <TableCell colSpan={3}>Total</TableCell>\\n          <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n        </TableRow>\\n      </TableFooter>\\n    </Table>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/table.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Table = React.forwardRef<\\n  HTMLTableElement,\\n  React.HTMLAttributes<HTMLTableElement>\\n>(({ className, ...props }, ref) => (\\n  <div className=\\\"relative w-full overflow-auto\\\">\\n    <table\\n      ref={ref}\\n      className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n      {...props}\\n    />\\n  </div>\\n))\\nTable.displayName = \\\"Table\\\"\\n\\nconst TableHeader = React.forwardRef<\\n  HTMLTableSectionElement,\\n  React.HTMLAttributes<HTMLTableSectionElement>\\n>(({ className, ...props }, ref) => (\\n  <thead ref={ref} className={cn(\\\"[&_tr]:border-b\\\", className)} {...props} />\\n))\\nTableHeader.displayName = \\\"TableHeader\\\"\\n\\nconst TableBody = React.forwardRef<\\n  HTMLTableSectionElement,\\n  React.HTMLAttributes<HTMLTableSectionElement>\\n>(({ className, ...props }, ref) => (\\n  <tbody\\n    ref={ref}\\n    className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n    {...props}\\n  />\\n))\\nTableBody.displayName = \\\"TableBody\\\"\\n\\nconst TableFooter = React.forwardRef<\\n  HTMLTableSectionElement,\\n  React.HTMLAttributes<HTMLTableSectionElement>\\n>(({ className, ...props }, ref) => (\\n  <tfoot\\n    ref={ref}\\n    className={cn(\\n      \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTableFooter.displayName = \\\"TableFooter\\\"\\n\\nconst TableRow = React.forwardRef<\\n  HTMLTableRowElement,\\n  React.HTMLAttributes<HTMLTableRowElement>\\n>(({ className, ...props }, ref) => (\\n  <tr\\n    ref={ref}\\n    className={cn(\\n      \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTableRow.displayName = \\\"TableRow\\\"\\n\\nconst TableHead = React.forwardRef<\\n  HTMLTableCellElement,\\n  React.ThHTMLAttributes<HTMLTableCellElement>\\n>(({ className, ...props }, ref) => (\\n  <th\\n    ref={ref}\\n    className={cn(\\n      \\\"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTableHead.displayName = \\\"TableHead\\\"\\n\\nconst TableCell = React.forwardRef<\\n  HTMLTableCellElement,\\n  React.TdHTMLAttributes<HTMLTableCellElement>\\n>(({ className, ...props }, ref) => (\\n  <td\\n    ref={ref}\\n    className={cn(\\\"p-4 align-middle [&:has([role=checkbox])]:pr-0\\\", className)}\\n    {...props}\\n  />\\n))\\nTableCell.displayName = \\\"TableCell\\\"\\n\\nconst TableCaption = React.forwardRef<\\n  HTMLTableCaptionElement,\\n  React.HTMLAttributes<HTMLTableCaptionElement>\\n>(({ className, ...props }, ref) => (\\n  <caption\\n    ref={ref}\\n    className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nTableCaption.displayName = \\\"TableCaption\\\"\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/tabs-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"tabs\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/tabs-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/default/ui/card\\\"\\nimport { Input } from \\\"@/registry/default/ui/input\\\"\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/default/ui/tabs\\\"\\n\\nexport default function TabsDemo() {\\n  return (\\n    <Tabs defaultValue=\\\"account\\\" className=\\\"w-[400px]\\\">\\n      <TabsList className=\\\"grid w-full grid-cols-2\\\">\\n        <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n        <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n      </TabsList>\\n      <TabsContent value=\\\"account\\\">\\n        <Card>\\n          <CardHeader>\\n            <CardTitle>Account</CardTitle>\\n            <CardDescription>\\n              Make changes to your account here. Click save when you're done.\\n            </CardDescription>\\n          </CardHeader>\\n          <CardContent className=\\\"space-y-2\\\">\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"name\\\">Name</Label>\\n              <Input id=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n            </div>\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"username\\\">Username</Label>\\n              <Input id=\\\"username\\\" defaultValue=\\\"@peduarte\\\" />\\n            </div>\\n          </CardContent>\\n          <CardFooter>\\n            <Button>Save changes</Button>\\n          </CardFooter>\\n        </Card>\\n      </TabsContent>\\n      <TabsContent value=\\\"password\\\">\\n        <Card>\\n          <CardHeader>\\n            <CardTitle>Password</CardTitle>\\n            <CardDescription>\\n              Change your password here. After saving, you'll be logged out.\\n            </CardDescription>\\n          </CardHeader>\\n          <CardContent className=\\\"space-y-2\\\">\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"current\\\">Current password</Label>\\n              <Input id=\\\"current\\\" type=\\\"password\\\" />\\n            </div>\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"new\\\">New password</Label>\\n              <Input id=\\\"new\\\" type=\\\"password\\\" />\\n            </div>\\n          </CardContent>\\n          <CardFooter>\\n            <Button>Save password</Button>\\n          </CardFooter>\\n        </Card>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-tabs\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as TabsPrimitive from \\\"@radix-ui/react-tabs\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Tabs = TabsPrimitive.Root\\n\\nconst TabsList = React.forwardRef<\\n  React.ElementRef<typeof TabsPrimitive.List>,\\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\\n>(({ className, ...props }, ref) => (\\n  <TabsPrimitive.List\\n    ref={ref}\\n    className={cn(\\n      \\\"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTabsList.displayName = TabsPrimitive.List.displayName\\n\\nconst TabsTrigger = React.forwardRef<\\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\\n>(({ className, ...props }, ref) => (\\n  <TabsPrimitive.Trigger\\n    ref={ref}\\n    className={cn(\\n      \\\"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\\n\\nconst TabsContent = React.forwardRef<\\n  React.ElementRef<typeof TabsPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\\n>(({ className, ...props }, ref) => (\\n  <TabsPrimitive.Content\\n    ref={ref}\\n    className={cn(\\n      \\\"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTabsContent.displayName = TabsPrimitive.Content.displayName\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/textarea-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-demo.tsx\",\n      \"content\": \"import { Textarea } from \\\"@/registry/default/ui/textarea\\\"\\n\\nexport default function TextareaDemo() {\\n  return <Textarea placeholder=\\\"Type your message here.\\\" />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/textarea-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-disabled.tsx\",\n      \"content\": \"import { Textarea } from \\\"@/registry/default/ui/textarea\\\"\\n\\nexport default function TextareaDisabled() {\\n  return <Textarea placeholder=\\\"Type your message here.\\\" disabled />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/textarea-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/default/ui/form\\\"\\nimport { Textarea } from \\\"@/registry/default/ui/textarea\\\"\\n\\nconst FormSchema = z.object({\\n  bio: z\\n    .string()\\n    .min(10, {\\n      message: \\\"Bio must be at least 10 characters.\\\",\\n    })\\n    .max(160, {\\n      message: \\\"Bio must not be longer than 30 characters.\\\",\\n    }),\\n})\\n\\nexport default function TextareaForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"bio\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Bio</FormLabel>\\n              <FormControl>\\n                <Textarea\\n                  placeholder=\\\"Tell us a little bit about yourself\\\"\\n                  className=\\\"resize-none\\\"\\n                  {...field}\\n                />\\n              </FormControl>\\n              <FormDescription>\\n                You can <span>@mention</span> other users and organizations.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/textarea-with-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-button\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-with-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { Textarea } from \\\"@/registry/default/ui/textarea\\\"\\n\\nexport default function TextareaWithButton() {\\n  return (\\n    <div className=\\\"grid w-full gap-2\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n      <Button>Send message</Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/textarea-with-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-label\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-with-label.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/default/ui/textarea\\\"\\n\\nexport default function TextareaWithLabel() {\\n  return (\\n    <div className=\\\"grid w-full gap-1.5\\\">\\n      <Label htmlFor=\\\"message\\\">Your message</Label>\\n      <Textarea placeholder=\\\"Type your message here.\\\" id=\\\"message\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/textarea-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-text\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-with-text.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/default/ui/textarea\\\"\\n\\nexport default function TextareaWithText() {\\n  return (\\n    <div className=\\\"grid w-full gap-1.5\\\">\\n      <Label htmlFor=\\\"message-2\\\">Your Message</Label>\\n      <Textarea placeholder=\\\"Type your message here.\\\" id=\\\"message-2\\\" />\\n      <p className=\\\"text-sm text-muted-foreground\\\">\\n        Your message will be copied to the support team.\\n      </p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Textarea = React.forwardRef<\\n  HTMLTextAreaElement,\\n  React.ComponentProps<\\\"textarea\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <textarea\\n      className={cn(\\n        \\\"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n        className\\n      )}\\n      ref={ref}\\n      {...props}\\n    />\\n  )\\n})\\nTextarea.displayName = \\\"Textarea\\\"\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/theme-daylight.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-daylight\",\n  \"type\": \"registry:theme\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"36 39% 88%\",\n      \"foreground\": \"36 45% 15%\",\n      \"primary\": \"36 45% 70%\",\n      \"primary-foreground\": \"36 45% 11%\",\n      \"secondary\": \"40 35% 77%\",\n      \"secondary-foreground\": \"36 45% 25%\",\n      \"accent\": \"36 64% 57%\",\n      \"accent-foreground\": \"36 72% 17%\",\n      \"destructive\": \"0 84% 37%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"muted\": \"36 33% 75%\",\n      \"muted-foreground\": \"36 45% 25%\",\n      \"card\": \"36 46% 82%\",\n      \"card-foreground\": \"36 45% 20%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"240 10% 3.9%\",\n      \"border\": \"36 45% 60%\",\n      \"input\": \"36 45% 60%\",\n      \"ring\": \"36 45% 30%\",\n      \"chart-1\": \"25 34% 28%\",\n      \"chart-2\": \"26 36% 34%\",\n      \"chart-3\": \"28 40% 40%\",\n      \"chart-4\": \"31 41% 48%\",\n      \"chart-5\": \"35 43% 53%\"\n    },\n    \"dark\": {\n      \"background\": \"36 39% 88%\",\n      \"foreground\": \"36 45% 15%\",\n      \"primary\": \"36 45% 70%\",\n      \"primary-foreground\": \"36 45% 11%\",\n      \"secondary\": \"40 35% 77%\",\n      \"secondary-foreground\": \"36 45% 25%\",\n      \"accent\": \"36 64% 57%\",\n      \"accent-foreground\": \"36 72% 17%\",\n      \"destructive\": \"0 84% 37%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"muted\": \"36 33% 75%\",\n      \"muted-foreground\": \"36 45% 25%\",\n      \"card\": \"36 46% 82%\",\n      \"card-foreground\": \"36 45% 20%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"240 10% 3.9%\",\n      \"border\": \"36 45% 60%\",\n      \"input\": \"36 45% 60%\",\n      \"ring\": \"36 45% 30%\",\n      \"chart-1\": \"25 34% 28%\",\n      \"chart-2\": \"26 36% 34%\",\n      \"chart-3\": \"28 40% 40%\",\n      \"chart-4\": \"31 41% 48%\",\n      \"chart-5\": \"35 43% 53%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/theme-emerald.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-emerald\",\n  \"type\": \"registry:theme\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"240 10% 3.9%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"240 10% 3.9%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"240 10% 3.9%\",\n      \"primary\": \"142 86% 28%\",\n      \"primary-foreground\": \"356 29% 98%\",\n      \"secondary\": \"240 4.8% 95.9%\",\n      \"secondary-foreground\": \"240 5.9% 10%\",\n      \"muted\": \"240 4.8% 95.9%\",\n      \"muted-foreground\": \"240 3.8% 45%\",\n      \"accent\": \"240 4.8% 95.9%\",\n      \"accent-foreground\": \"240 5.9% 10%\",\n      \"destructive\": \"0 72% 51%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"border\": \"240 5.9% 90%\",\n      \"input\": \"240 5.9% 90%\",\n      \"ring\": \"142 86% 28%\",\n      \"chart-1\": \"139 65% 20%\",\n      \"chart-2\": \"140 74% 44%\",\n      \"chart-3\": \"142 88% 28%\",\n      \"chart-4\": \"137 55% 15%\",\n      \"chart-5\": \"141 40% 9%\"\n    },\n    \"dark\": {\n      \"background\": \"240 10% 3.9%\",\n      \"foreground\": \"0 0% 98%\",\n      \"card\": \"240 10% 3.9%\",\n      \"card-foreground\": \"0 0% 98%\",\n      \"popover\": \"240 10% 3.9%\",\n      \"popover-foreground\": \"0 0% 98%\",\n      \"primary\": \"142 86% 28%\",\n      \"primary-foreground\": \"356 29% 98%\",\n      \"secondary\": \"240 4.8% 95.9%\",\n      \"secondary-foreground\": \"240 5.9% 10%\",\n      \"muted\": \"240 3.7% 15.9%\",\n      \"muted-foreground\": \"240 5% 64.9%\",\n      \"accent\": \"240 3.7% 15.9%\",\n      \"accent-foreground\": \"0 0% 98%\",\n      \"destructive\": \"0 72% 51%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"border\": \"240 3.7% 15.9%\",\n      \"input\": \"240 3.7% 15.9%\",\n      \"ring\": \"142 86% 28%\",\n      \"chart-1\": \"142 88% 28%\",\n      \"chart-2\": \"139 65% 20%\",\n      \"chart-3\": \"140 74% 24%\",\n      \"chart-4\": \"137 55% 15%\",\n      \"chart-5\": \"141 40% 9%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/theme-midnight.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-midnight\",\n  \"type\": \"registry:theme\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"240 5% 6%\",\n      \"foreground\": \"60 5% 90%\",\n      \"primary\": \"240 0% 90%\",\n      \"primary-foreground\": \"60 0% 0%\",\n      \"secondary\": \"240 4% 15%\",\n      \"secondary-foreground\": \"60 5% 85%\",\n      \"accent\": \"240 0% 13%\",\n      \"accent-foreground\": \"60 0% 100%\",\n      \"destructive\": \"0 60% 50%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"muted\": \"240 5% 25%\",\n      \"muted-foreground\": \"60 5% 85%\",\n      \"card\": \"240 4% 10%\",\n      \"card-foreground\": \"60 5% 90%\",\n      \"popover\": \"240 5% 15%\",\n      \"popover-foreground\": \"60 5% 85%\",\n      \"border\": \"240 6% 20%\",\n      \"input\": \"240 6% 20%\",\n      \"ring\": \"240 5% 90%\",\n      \"chart-1\": \"359 2% 90%\",\n      \"chart-2\": \"240 1% 74%\",\n      \"chart-3\": \"240 1% 58%\",\n      \"chart-4\": \"240 1% 42%\",\n      \"chart-5\": \"240 2% 26%\"\n    },\n    \"dark\": {\n      \"background\": \"240 5% 6%\",\n      \"foreground\": \"60 5% 90%\",\n      \"primary\": \"240 0% 90%\",\n      \"primary-foreground\": \"60 0% 0%\",\n      \"secondary\": \"240 4% 15%\",\n      \"secondary-foreground\": \"60 5% 85%\",\n      \"accent\": \"240 0% 13%\",\n      \"accent-foreground\": \"60 0% 100%\",\n      \"destructive\": \"0 60% 50%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"muted\": \"240 5% 25%\",\n      \"muted-foreground\": \"60 5% 85%\",\n      \"card\": \"240 4% 10%\",\n      \"card-foreground\": \"60 5% 90%\",\n      \"popover\": \"240 5% 15%\",\n      \"popover-foreground\": \"60 5% 85%\",\n      \"border\": \"240 6% 20%\",\n      \"input\": \"240 6% 20%\",\n      \"ring\": \"240 5% 90%\",\n      \"chart-1\": \"359 2% 90%\",\n      \"chart-2\": \"240 1% 74%\",\n      \"chart-3\": \"240 1% 58%\",\n      \"chart-4\": \"240 1% 42%\",\n      \"chart-5\": \"240 2% 26%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toast-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/default/ui/toast\\\"\\n\\nexport default function ToastDemo() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Scheduled: Catch up \\\",\\n          description: \\\"Friday, February 10, 2023 at 5:57 PM\\\",\\n          action: (\\n            <ToastAction altText=\\\"Goto schedule to undo\\\">Undo</ToastAction>\\n          ),\\n        })\\n      }}\\n    >\\n      Add to calendar\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toast-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-destructive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-destructive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/default/ui/toast\\\"\\n\\nexport default function ToastDestructive() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          variant: \\\"destructive\\\",\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n          action: <ToastAction altText=\\\"Try again\\\">Try again</ToastAction>,\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toast-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-simple\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ToastSimple() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          description: \\\"Your message has been sent.\\\",\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toast-with-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-with-action\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-with-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/default/ui/toast\\\"\\n\\nexport default function ToastWithAction() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n          action: <ToastAction altText=\\\"Try again\\\">Try again</ToastAction>,\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toast-with-title.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-with-title\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-with-title.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/default/ui/button\\\"\\n\\nexport default function ToastWithTitle() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toast.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/toast.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ToastPrimitives from \\\"@radix-ui/react-toast\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst ToastProvider = ToastPrimitives.Provider\\n\\nconst ToastViewport = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Viewport>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Viewport\\n    ref={ref}\\n    className={cn(\\n      \\\"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\\n\\nconst toastVariants = cva(\\n  \\\"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border bg-background text-foreground\\\",\\n        destructive:\\n          \\\"destructive group border-destructive bg-destructive text-destructive-foreground\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nconst Toast = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Root>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\\n    VariantProps<typeof toastVariants>\\n>(({ className, variant, ...props }, ref) => {\\n  return (\\n    <ToastPrimitives.Root\\n      ref={ref}\\n      className={cn(toastVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n})\\nToast.displayName = ToastPrimitives.Root.displayName\\n\\nconst ToastAction = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Action>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Action\\n    ref={ref}\\n    className={cn(\\n      \\\"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nToastAction.displayName = ToastPrimitives.Action.displayName\\n\\nconst ToastClose = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Close>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Close\\n    ref={ref}\\n    className={cn(\\n      \\\"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\\\",\\n      className\\n    )}\\n    toast-close=\\\"\\\"\\n    {...props}\\n  >\\n    <X className=\\\"h-4 w-4\\\" />\\n  </ToastPrimitives.Close>\\n))\\nToastClose.displayName = ToastPrimitives.Close.displayName\\n\\nconst ToastTitle = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Title>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Title\\n    ref={ref}\\n    className={cn(\\\"text-sm font-semibold\\\", className)}\\n    {...props}\\n  />\\n))\\nToastTitle.displayName = ToastPrimitives.Title.displayName\\n\\nconst ToastDescription = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Description>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm opacity-90\\\", className)}\\n    {...props}\\n  />\\n))\\nToastDescription.displayName = ToastPrimitives.Description.displayName\\n\\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\\n\\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\\n\\nexport {\\n  type ToastProps,\\n  type ToastActionElement,\\n  ToastProvider,\\n  ToastViewport,\\n  Toast,\\n  ToastTitle,\\n  ToastDescription,\\n  ToastClose,\\n  ToastAction,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"hooks/use-toast.ts\",\n      \"content\": \"\\\"use client\\\"\\n\\n// Inspired by react-hot-toast library\\nimport * as React from \\\"react\\\"\\n\\nimport type {\\n  ToastActionElement,\\n  ToastProps,\\n} from \\\"@/registry/default/ui/toast\\\"\\n\\nconst TOAST_LIMIT = 1\\nconst TOAST_REMOVE_DELAY = 1000000\\n\\ntype ToasterToast = ToastProps & {\\n  id: string\\n  title?: React.ReactNode\\n  description?: React.ReactNode\\n  action?: ToastActionElement\\n}\\n\\nconst actionTypes = {\\n  ADD_TOAST: \\\"ADD_TOAST\\\",\\n  UPDATE_TOAST: \\\"UPDATE_TOAST\\\",\\n  DISMISS_TOAST: \\\"DISMISS_TOAST\\\",\\n  REMOVE_TOAST: \\\"REMOVE_TOAST\\\",\\n} as const\\n\\nlet count = 0\\n\\nfunction genId() {\\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\\n  return count.toString()\\n}\\n\\ntype ActionType = typeof actionTypes\\n\\ntype Action =\\n  | {\\n      type: ActionType[\\\"ADD_TOAST\\\"]\\n      toast: ToasterToast\\n    }\\n  | {\\n      type: ActionType[\\\"UPDATE_TOAST\\\"]\\n      toast: Partial<ToasterToast>\\n    }\\n  | {\\n      type: ActionType[\\\"DISMISS_TOAST\\\"]\\n      toastId?: ToasterToast[\\\"id\\\"]\\n    }\\n  | {\\n      type: ActionType[\\\"REMOVE_TOAST\\\"]\\n      toastId?: ToasterToast[\\\"id\\\"]\\n    }\\n\\ninterface State {\\n  toasts: ToasterToast[]\\n}\\n\\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\\n\\nconst addToRemoveQueue = (toastId: string) => {\\n  if (toastTimeouts.has(toastId)) {\\n    return\\n  }\\n\\n  const timeout = setTimeout(() => {\\n    toastTimeouts.delete(toastId)\\n    dispatch({\\n      type: \\\"REMOVE_TOAST\\\",\\n      toastId: toastId,\\n    })\\n  }, TOAST_REMOVE_DELAY)\\n\\n  toastTimeouts.set(toastId, timeout)\\n}\\n\\nexport const reducer = (state: State, action: Action): State => {\\n  switch (action.type) {\\n    case \\\"ADD_TOAST\\\":\\n      return {\\n        ...state,\\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\\n      }\\n\\n    case \\\"UPDATE_TOAST\\\":\\n      return {\\n        ...state,\\n        toasts: state.toasts.map((t) =>\\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\\n        ),\\n      }\\n\\n    case \\\"DISMISS_TOAST\\\": {\\n      const { toastId } = action\\n\\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\\n      // but I'll keep it here for simplicity\\n      if (toastId) {\\n        addToRemoveQueue(toastId)\\n      } else {\\n        state.toasts.forEach((toast) => {\\n          addToRemoveQueue(toast.id)\\n        })\\n      }\\n\\n      return {\\n        ...state,\\n        toasts: state.toasts.map((t) =>\\n          t.id === toastId || toastId === undefined\\n            ? {\\n                ...t,\\n                open: false,\\n              }\\n            : t\\n        ),\\n      }\\n    }\\n    case \\\"REMOVE_TOAST\\\":\\n      if (action.toastId === undefined) {\\n        return {\\n          ...state,\\n          toasts: [],\\n        }\\n      }\\n      return {\\n        ...state,\\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\\n      }\\n  }\\n}\\n\\nconst listeners: Array<(state: State) => void> = []\\n\\nlet memoryState: State = { toasts: [] }\\n\\nfunction dispatch(action: Action) {\\n  memoryState = reducer(memoryState, action)\\n  listeners.forEach((listener) => {\\n    listener(memoryState)\\n  })\\n}\\n\\ntype Toast = Omit<ToasterToast, \\\"id\\\">\\n\\nfunction toast({ ...props }: Toast) {\\n  const id = genId()\\n\\n  const update = (props: ToasterToast) =>\\n    dispatch({\\n      type: \\\"UPDATE_TOAST\\\",\\n      toast: { ...props, id },\\n    })\\n  const dismiss = () => dispatch({ type: \\\"DISMISS_TOAST\\\", toastId: id })\\n\\n  dispatch({\\n    type: \\\"ADD_TOAST\\\",\\n    toast: {\\n      ...props,\\n      id,\\n      open: true,\\n      onOpenChange: (open) => {\\n        if (!open) dismiss()\\n      },\\n    },\\n  })\\n\\n  return {\\n    id: id,\\n    dismiss,\\n    update,\\n  }\\n}\\n\\nfunction useToast() {\\n  const [state, setState] = React.useState<State>(memoryState)\\n\\n  React.useEffect(() => {\\n    listeners.push(setState)\\n    return () => {\\n      const index = listeners.indexOf(setState)\\n      if (index > -1) {\\n        listeners.splice(index, 1)\\n      }\\n    }\\n  }, [state])\\n\\n  return {\\n    ...state,\\n    toast,\\n    dismiss: (toastId?: string) => dispatch({ type: \\\"DISMISS_TOAST\\\", toastId }),\\n  }\\n}\\n\\nexport { useToast, toast }\\n\",\n      \"type\": \"registry:hook\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"ui/toaster.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/default/hooks/use-toast\\\"\\nimport {\\n  Toast,\\n  ToastClose,\\n  ToastDescription,\\n  ToastProvider,\\n  ToastTitle,\\n  ToastViewport,\\n} from \\\"@/registry/default/ui/toast\\\"\\n\\nexport function Toaster() {\\n  const { toasts } = useToast()\\n\\n  return (\\n    <ToastProvider>\\n      {toasts.map(function ({ id, title, description, action, ...props }) {\\n        return (\\n          <Toast key={id} {...props}>\\n            <div className=\\\"grid gap-1\\\">\\n              {title && <ToastTitle>{title}</ToastTitle>}\\n              {description && (\\n                <ToastDescription>{description}</ToastDescription>\\n              )}\\n            </div>\\n            {action}\\n            <ToastClose />\\n          </Toast>\\n        )\\n      })}\\n      <ToastViewport />\\n    </ToastProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-demo.tsx\",\n      \"content\": \"import { Bold } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport default function ToggleDemo() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle bold\\\">\\n      <Bold className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-disabled.tsx\",\n      \"content\": \"import { Underline } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport default function ToggleDisabled() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle underline\\\" disabled>\\n      <Underline className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-group-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-demo.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/default/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-group-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-disabled.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/default/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup disabled type=\\\"single\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-group-lg.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-lg\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-lg.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/default/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup size={\\\"lg\\\"} type=\\\"multiple\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-group-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-outline\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-outline.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/default/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup variant=\\\"outline\\\" type=\\\"multiple\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-group-single.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-single\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-single.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/default/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"single\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-group-sm.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-sm\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-sm.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/default/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup size={\\\"sm\\\"} type=\\\"multiple\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-toggle-group\"\n  ],\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ToggleGroupPrimitive from \\\"@radix-ui/react-toggle-group\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/default/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants>\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n})\\n\\nconst ToggleGroup = React.forwardRef<\\n  React.ElementRef<typeof ToggleGroupPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\\n    VariantProps<typeof toggleVariants>\\n>(({ className, variant, size, children, ...props }, ref) => (\\n  <ToggleGroupPrimitive.Root\\n    ref={ref}\\n    className={cn(\\\"flex items-center justify-center gap-1\\\", className)}\\n    {...props}\\n  >\\n    <ToggleGroupContext.Provider value={{ variant, size }}>\\n      {children}\\n    </ToggleGroupContext.Provider>\\n  </ToggleGroupPrimitive.Root>\\n))\\n\\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\\n\\nconst ToggleGroupItem = React.forwardRef<\\n  React.ElementRef<typeof ToggleGroupPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\\n    VariantProps<typeof toggleVariants>\\n>(({ className, children, variant, size, ...props }, ref) => {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <ToggleGroupPrimitive.Item\\n      ref={ref}\\n      className={cn(\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </ToggleGroupPrimitive.Item>\\n  )\\n})\\n\\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-lg.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-lg\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-lg.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport default function ToggleLg() {\\n  return (\\n    <Toggle size=\\\"lg\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-outline\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-outline.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport default function ToggleOutline() {\\n  return (\\n    <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-sm.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-sm\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-sm.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport default function ToggleSm() {\\n  return (\\n    <Toggle size=\\\"sm\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-with-text\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-with-text.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/default/ui/toggle\\\"\\n\\nexport default function ToggleWithText() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n      Italic\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as TogglePrimitive from \\\"@radix-ui/react-toggle\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 gap-2\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline:\\n          \\\"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\\\",\\n      },\\n      size: {\\n        default: \\\"h-10 px-3 min-w-10\\\",\\n        sm: \\\"h-9 px-2.5 min-w-9\\\",\\n        lg: \\\"h-11 px-5 min-w-11\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nconst Toggle = React.forwardRef<\\n  React.ElementRef<typeof TogglePrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\\n    VariantProps<typeof toggleVariants>\\n>(({ className, variant, size, ...props }, ref) => (\\n  <TogglePrimitive.Root\\n    ref={ref}\\n    className={cn(toggleVariants({ variant, size, className }))}\\n    {...props}\\n  />\\n))\\n\\nToggle.displayName = TogglePrimitive.Root.displayName\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/tooltip-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/tooltip-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/default/ui/button\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/registry/default/ui/tooltip\\\"\\n\\nexport default function TooltipDemo() {\\n  return (\\n    <TooltipProvider>\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\">Hover</Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </TooltipProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as TooltipPrimitive from \\\"@radix-ui/react-tooltip\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst TooltipProvider = TooltipPrimitive.Provider\\n\\nconst Tooltip = TooltipPrimitive.Root\\n\\nconst TooltipTrigger = TooltipPrimitive.Trigger\\n\\nconst TooltipContent = React.forwardRef<\\n  React.ElementRef<typeof TooltipPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\\n>(({ className, sideOffset = 4, ...props }, ref) => (\\n  <TooltipPrimitive.Content\\n    ref={ref}\\n    sideOffset={sideOffset}\\n    className={cn(\\n      \\\"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-blockquote.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-blockquote\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-blockquote.tsx\",\n      \"content\": \"export default function TypographyBlockquote() {\\n  return (\\n    <blockquote className=\\\"mt-6 border-l-2 pl-6 italic\\\">\\n      \\\"After all,\\\" he said, \\\"everyone enjoys a good joke, so it's only fair that\\n      they should pay for the privilege.\\\"\\n    </blockquote>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-demo.tsx\",\n      \"content\": \"export default function TypographyDemo() {\\n  return (\\n    <div>\\n      <h1 className=\\\"scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl\\\">\\n        The Joke Tax Chronicles\\n      </h1>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        Once upon a time, in a far-off land, there was a very lazy king who\\n        spent all day lounging on his throne. One day, his advisors came to him\\n        with a problem: the kingdom was running out of money.\\n      </p>\\n      <h2 className=\\\"mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0\\\">\\n        The King's Plan\\n      </h2>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king thought long and hard, and finally came up with{\\\" \\\"}\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"font-medium text-primary underline underline-offset-4\\\"\\n        >\\n          a brilliant plan\\n        </a>\\n        : he would tax the jokes in the kingdom.\\n      </p>\\n      <blockquote className=\\\"mt-6 border-l-2 pl-6 italic\\\">\\n        \\\"After all,\\\" he said, \\\"everyone enjoys a good joke, so it's only fair\\n        that they should pay for the privilege.\\\"\\n      </blockquote>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        The Joke Tax\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king's subjects were not amused. They grumbled and complained, but\\n        the king was firm:\\n      </p>\\n      <ul className=\\\"my-6 ml-6 list-disc [&>li]:mt-2\\\">\\n        <li>1st level of puns: 5 gold coins</li>\\n        <li>2nd level of jokes: 10 gold coins</li>\\n        <li>3rd level of one-liners : 20 gold coins</li>\\n      </ul>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        As a result, people stopped telling jokes, and the kingdom fell into a\\n        gloom. But there was one person who refused to let the king's\\n        foolishness get him down: a court jester named Jokester.\\n      </p>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        Jokester's Revolt\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        Jokester began sneaking into the castle in the middle of the night and\\n        leaving jokes all over the place: under the king's pillow, in his soup,\\n        even in the royal toilet. The king was furious, but he couldn't seem to\\n        stop Jokester.\\n      </p>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        And then, one day, the people of the kingdom discovered that the jokes\\n        left by Jokester were so funny that they couldn't help but laugh. And\\n        once they started laughing, they couldn't stop.\\n      </p>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        The People's Rebellion\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The people of the kingdom, feeling uplifted by the laughter, started to\\n        tell jokes and puns again, and soon the entire kingdom was in on the\\n        joke.\\n      </p>\\n      <div className=\\\"my-6 w-full overflow-y-auto\\\">\\n        <table className=\\\"w-full\\\">\\n          <thead>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                King's Treasury\\n              </th>\\n              <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                People's happiness\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Empty\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Overflowing\\n              </td>\\n            </tr>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Modest\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Satisfied\\n              </td>\\n            </tr>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Full\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Ecstatic\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king, seeing how much happier his subjects were, realized the error\\n        of his ways and repealed the joke tax. Jokester was declared a hero, and\\n        the kingdom lived happily ever after.\\n      </p>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The moral of the story is: never underestimate the power of a good laugh\\n        and always be careful of bad ideas.\\n      </p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-h1.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h1\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-h1.tsx\",\n      \"content\": \"export default function TypographyH1() {\\n  return (\\n    <h1 className=\\\"scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl\\\">\\n      Taxing Laughter: The Joke Tax Chronicles\\n    </h1>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-h2.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h2\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-h2.tsx\",\n      \"content\": \"export default function TypographyH2() {\\n  return (\\n    <h2 className=\\\"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\\\">\\n      The People of the Kingdom\\n    </h2>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-h3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h3\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-h3.tsx\",\n      \"content\": \"export default function TypographyH3() {\\n  return (\\n    <h3 className=\\\"scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n      The Joke Tax\\n    </h3>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-h4.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h4\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-h4.tsx\",\n      \"content\": \"export default function TypographyH4() {\\n  return (\\n    <h4 className=\\\"scroll-m-20 text-xl font-semibold tracking-tight\\\">\\n      People stopped telling jokes\\n    </h4>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-inline-code.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-inline-code\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-inline-code.tsx\",\n      \"content\": \"export default function TypographyInlineCode() {\\n  return (\\n    <code className=\\\"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\\\">\\n      @radix-ui/react-alert-dialog\\n    </code>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-large.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-large\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-large.tsx\",\n      \"content\": \"export default function TypographyLarge() {\\n  return <div className=\\\"text-lg font-semibold\\\">Are you absolutely sure?</div>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-lead.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-lead\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-lead.tsx\",\n      \"content\": \"export default function TypographyLead() {\\n  return (\\n    <p className=\\\"text-xl text-muted-foreground\\\">\\n      A modal dialog that interrupts the user with important content and expects\\n      a response.\\n    </p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-list.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-list\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-list.tsx\",\n      \"content\": \"export default function TypographyList() {\\n  return (\\n    <ul className=\\\"my-6 ml-6 list-disc [&>li]:mt-2\\\">\\n      <li>1st level of puns: 5 gold coins</li>\\n      <li>2nd level of jokes: 10 gold coins</li>\\n      <li>3rd level of one-liners : 20 gold coins</li>\\n    </ul>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-muted.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-muted\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-muted.tsx\",\n      \"content\": \"export default function TypographyMuted() {\\n  return (\\n    <p className=\\\"text-sm text-muted-foreground\\\">Enter your email address.</p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-p.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-p\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-p.tsx\",\n      \"content\": \"export default function TypographyP() {\\n  return (\\n    <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n      The king, seeing how much happier his subjects were, realized the error of\\n      his ways and repealed the joke tax.\\n    </p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-small.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-small\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-small.tsx\",\n      \"content\": \"export default function TypographySmall() {\\n  return (\\n    <small className=\\\"text-sm font-medium leading-none\\\">Email address</small>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/typography-table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-table\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-table.tsx\",\n      \"content\": \"export default function TypographyTable() {\\n  return (\\n    <div className=\\\"my-6 w-full overflow-y-auto\\\">\\n      <table className=\\\"w-full\\\">\\n        <thead>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              King's Treasury\\n            </th>\\n            <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              People's happiness\\n            </th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Empty\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Overflowing\\n            </td>\\n          </tr>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Modest\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Satisfied\\n            </td>\\n          </tr>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Full\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Ecstatic\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"type\": \"registry:hook\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"hooks/use-mobile.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/use-toast.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-toast\",\n  \"type\": \"registry:hook\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"hooks/use-toast.ts\",\n      \"content\": \"\\\"use client\\\"\\n\\n// Inspired by react-hot-toast library\\nimport * as React from \\\"react\\\"\\n\\nimport type {\\n  ToastActionElement,\\n  ToastProps,\\n} from \\\"@/registry/default/ui/toast\\\"\\n\\nconst TOAST_LIMIT = 1\\nconst TOAST_REMOVE_DELAY = 1000000\\n\\ntype ToasterToast = ToastProps & {\\n  id: string\\n  title?: React.ReactNode\\n  description?: React.ReactNode\\n  action?: ToastActionElement\\n}\\n\\nconst actionTypes = {\\n  ADD_TOAST: \\\"ADD_TOAST\\\",\\n  UPDATE_TOAST: \\\"UPDATE_TOAST\\\",\\n  DISMISS_TOAST: \\\"DISMISS_TOAST\\\",\\n  REMOVE_TOAST: \\\"REMOVE_TOAST\\\",\\n} as const\\n\\nlet count = 0\\n\\nfunction genId() {\\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\\n  return count.toString()\\n}\\n\\ntype ActionType = typeof actionTypes\\n\\ntype Action =\\n  | {\\n      type: ActionType[\\\"ADD_TOAST\\\"]\\n      toast: ToasterToast\\n    }\\n  | {\\n      type: ActionType[\\\"UPDATE_TOAST\\\"]\\n      toast: Partial<ToasterToast>\\n    }\\n  | {\\n      type: ActionType[\\\"DISMISS_TOAST\\\"]\\n      toastId?: ToasterToast[\\\"id\\\"]\\n    }\\n  | {\\n      type: ActionType[\\\"REMOVE_TOAST\\\"]\\n      toastId?: ToasterToast[\\\"id\\\"]\\n    }\\n\\ninterface State {\\n  toasts: ToasterToast[]\\n}\\n\\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\\n\\nconst addToRemoveQueue = (toastId: string) => {\\n  if (toastTimeouts.has(toastId)) {\\n    return\\n  }\\n\\n  const timeout = setTimeout(() => {\\n    toastTimeouts.delete(toastId)\\n    dispatch({\\n      type: \\\"REMOVE_TOAST\\\",\\n      toastId: toastId,\\n    })\\n  }, TOAST_REMOVE_DELAY)\\n\\n  toastTimeouts.set(toastId, timeout)\\n}\\n\\nexport const reducer = (state: State, action: Action): State => {\\n  switch (action.type) {\\n    case \\\"ADD_TOAST\\\":\\n      return {\\n        ...state,\\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\\n      }\\n\\n    case \\\"UPDATE_TOAST\\\":\\n      return {\\n        ...state,\\n        toasts: state.toasts.map((t) =>\\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\\n        ),\\n      }\\n\\n    case \\\"DISMISS_TOAST\\\": {\\n      const { toastId } = action\\n\\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\\n      // but I'll keep it here for simplicity\\n      if (toastId) {\\n        addToRemoveQueue(toastId)\\n      } else {\\n        state.toasts.forEach((toast) => {\\n          addToRemoveQueue(toast.id)\\n        })\\n      }\\n\\n      return {\\n        ...state,\\n        toasts: state.toasts.map((t) =>\\n          t.id === toastId || toastId === undefined\\n            ? {\\n                ...t,\\n                open: false,\\n              }\\n            : t\\n        ),\\n      }\\n    }\\n    case \\\"REMOVE_TOAST\\\":\\n      if (action.toastId === undefined) {\\n        return {\\n          ...state,\\n          toasts: [],\\n        }\\n      }\\n      return {\\n        ...state,\\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\\n      }\\n  }\\n}\\n\\nconst listeners: Array<(state: State) => void> = []\\n\\nlet memoryState: State = { toasts: [] }\\n\\nfunction dispatch(action: Action) {\\n  memoryState = reducer(memoryState, action)\\n  listeners.forEach((listener) => {\\n    listener(memoryState)\\n  })\\n}\\n\\ntype Toast = Omit<ToasterToast, \\\"id\\\">\\n\\nfunction toast({ ...props }: Toast) {\\n  const id = genId()\\n\\n  const update = (props: ToasterToast) =>\\n    dispatch({\\n      type: \\\"UPDATE_TOAST\\\",\\n      toast: { ...props, id },\\n    })\\n  const dismiss = () => dispatch({ type: \\\"DISMISS_TOAST\\\", toastId: id })\\n\\n  dispatch({\\n    type: \\\"ADD_TOAST\\\",\\n    toast: {\\n      ...props,\\n      id,\\n      open: true,\\n      onOpenChange: (open) => {\\n        if (!open) dismiss()\\n      },\\n    },\\n  })\\n\\n  return {\\n    id: id,\\n    dismiss,\\n    update,\\n  }\\n}\\n\\nfunction useToast() {\\n  const [state, setState] = React.useState<State>(memoryState)\\n\\n  React.useEffect(() => {\\n    listeners.push(setState)\\n    return () => {\\n      const index = listeners.indexOf(setState)\\n      if (index > -1) {\\n        listeners.splice(index, 1)\\n      }\\n    }\\n  }, [state])\\n\\n  return {\\n    ...state,\\n    toast,\\n    dismiss: (toastId?: string) => dispatch({ type: \\\"DISMISS_TOAST\\\", toastId }),\\n  }\\n}\\n\\nexport { useToast, toast }\\n\",\n      \"type\": \"registry:hook\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"type\": \"registry:lib\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-login-01\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/login-01.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-screen w-full items-center justify-center px-4\\\">\\n      <Card className=\\\"mx-auto max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"text-2xl\\\">Login</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"grid gap-4\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n            </div>\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center\\\">\\n                <Label htmlFor=\\\"password\\\">Password</Label>\\n                <Link\\n                  href=\\\"#\\\"\\n                  className=\\\"ml-auto inline-block text-sm underline\\\"\\n                >\\n                  Forgot your password?\\n                </Link>\\n              </div>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n            </div>\\n            <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n              Login\\n            </Button>\\n            <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n              Login with Google\\n            </Button>\\n          </div>\\n          <div className=\\\"mt-4 text-center text-sm\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <Link href=\\\"#\\\" className=\\\"underline\\\">\\n              Sign up\\n            </Link>\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-01\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-01.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd, Search } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                      <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                      <span className=\\\"font-semibold\\\">Documentation</span>\\n                      <span className=\\\"\\\">v{selectedVersion}</span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width]\\\"\\n                  align=\\\"start\\\"\\n                >\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <Check className=\\\"ml-auto\\\" />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {/* We create a SidebarGroup for each parent. */}\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((item) => (\\n                    <SidebarMenuItem key={item.title}>\\n                      <SidebarMenuButton asChild isActive={item.isActive}>\\n                        <a href={item.url}>{item.title}</a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"components/sidebar-01.tsx\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-02\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-02.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Check,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  GalleryVerticalEnd,\\n  Search,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                      <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                      <span className=\\\"font-semibold\\\">Documentation</span>\\n                      <span className=\\\"\\\">v{selectedVersion}</span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width]\\\"\\n                  align=\\\"start\\\"\\n                >\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <Check className=\\\"ml-auto\\\" />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent className=\\\"gap-0\\\">\\n          {/* We create a collapsible SidebarGroup for each parent. */}\\n          {data.navMain.map((item) => (\\n            <Collapsible\\n              key={item.title}\\n              title={item.title}\\n              defaultOpen\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroup>\\n                <SidebarGroupLabel\\n                  asChild\\n                  className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <CollapsibleTrigger>\\n                    {item.title}{\\\" \\\"}\\n                    <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                  </CollapsibleTrigger>\\n                </SidebarGroupLabel>\\n                <CollapsibleContent>\\n                  <SidebarGroupContent>\\n                    <SidebarMenu>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuItem key={item.title}>\\n                          <SidebarMenuButton asChild isActive={item.isActive}>\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </CollapsibleContent>\\n              </SidebarGroup>\\n            </Collapsible>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex sticky top-0 bg-background h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-03\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-03.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd, Search } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                    <span className=\\\"font-semibold\\\">Documentation</span>\\n                    <span className=\\\"\\\">v1.0.0</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-04\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-04.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                    <span className=\\\"font-semibold\\\">Documentation</span>\\n                    <span className=\\\"\\\">v1.0.0</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu className=\\\"gap-2\\\">\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-05\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-05.tsx\",\n      \"content\": \"import { GalleryVerticalEnd, Minus, Plus, Search } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                    <span className=\\\"font-semibold\\\">Documentation</span>\\n                    <span className=\\\"\\\">v1.0.0</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item, index) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={index === 1}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger asChild>\\n                      <SidebarMenuButton>\\n                        {item.title}{\\\" \\\"}\\n                        <Plus className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\" />\\n                        <Minus className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\" />\\n                      </SidebarMenuButton>\\n                    </CollapsibleTrigger>\\n                    {item.items?.length ? (\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((item) => (\\n                            <SidebarMenuSubItem key={item.title}>\\n                              <SidebarMenuSubButton\\n                                asChild\\n                                isActive={item.isActive}\\n                              >\\n                                <a href={item.url}>{item.title}</a>\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-06\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-06.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { GalleryVerticalEnd, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                    <span className=\\\"font-semibold\\\">Documentation</span>\\n                    <span className=\\\"\\\">v1.0.0</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                        {item.title} <MoreHorizontal className=\\\"ml-auto\\\" />\\n                      </SidebarMenuButton>\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent\\n                        side=\\\"bottom\\\"\\n                        align=\\\"end\\\"\\n                        className=\\\"min-w-56 rounded-lg\\\"\\n                      >\\n                        {item.items.map((item) => (\\n                          <DropdownMenuItem asChild key={item.title}>\\n                            <a href={item.url}>{item.title}</a>\\n                          </DropdownMenuItem>\\n                        ))}\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <div className=\\\"p-1\\\">\\n            <Card className=\\\"shadow-none\\\">\\n              <form>\\n                <CardHeader className=\\\"p-4 pb-0\\\">\\n                  <CardTitle className=\\\"text-sm\\\">\\n                    Subscribe to our newsletter\\n                  </CardTitle>\\n                  <CardDescription>\\n                    Opt-in to receive updates and news about the sidebar.\\n                  </CardDescription>\\n                </CardHeader>\\n                <CardContent className=\\\"grid gap-2.5 p-4\\\">\\n                  <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                  <Button\\n                    className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\"\\n                    size=\\\"sm\\\"\\n                  >\\n                    Subscribe\\n                  </Button>\\n                </CardContent>\\n              </form>\\n            </Card>\\n          </div>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-07\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-07.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  BadgeCheck,\\n  Bell,\\n  BookOpen,\\n  Bot,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  Folder,\\n  Forward,\\n  Frame,\\n  GalleryVerticalEnd,\\n  LogOut,\\n  Map,\\n  MoreHorizontal,\\n  PieChart,\\n  Plus,\\n  Settings2,\\n  Sparkles,\\n  SquareTerminal,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: GalleryVerticalEnd,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                      <activeTeam.logo className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-semibold\\\">\\n                        {activeTeam.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {activeTeam.plan}\\n                      </span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n                  align=\\\"start\\\"\\n                  side=\\\"bottom\\\"\\n                  sideOffset={4}\\n                >\\n                  <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                    Teams\\n                  </DropdownMenuLabel>\\n                  {data.teams.map((team, index) => (\\n                    <DropdownMenuItem\\n                      key={team.name}\\n                      onClick={() => setActiveTeam(team)}\\n                      className=\\\"gap-2 p-2\\\"\\n                    >\\n                      <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                        <team.logo className=\\\"size-4 shrink-0\\\" />\\n                      </div>\\n                      {team.name}\\n                      <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                    </DropdownMenuItem>\\n                  ))}\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                    <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                      <Plus className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"font-medium text-muted-foreground\\\">\\n                      Add team\\n                    </div>\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger asChild>\\n                      <SidebarMenuButton tooltip={item.title}>\\n                        {item.icon && <item.icon />}\\n                        <span>{item.title}</span>\\n                        <ChevronRight className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\" />\\n                      </SidebarMenuButton>\\n                    </CollapsibleTrigger>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton asChild>\\n                              <a href={subItem.url}>\\n                                <span>{subItem.title}</span>\\n                              </a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      <item.icon />\\n                      <span>{item.name}</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuAction showOnHover>\\n                        <MoreHorizontal />\\n                        <span className=\\\"sr-only\\\">More</span>\\n                      </SidebarMenuAction>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      className=\\\"w-48 rounded-lg\\\"\\n                      side=\\\"bottom\\\"\\n                      align=\\\"end\\\"\\n                    >\\n                      <DropdownMenuItem>\\n                        <Folder className=\\\"text-muted-foreground\\\" />\\n                        <span>View Project</span>\\n                      </DropdownMenuItem>\\n                      <DropdownMenuItem>\\n                        <Forward className=\\\"text-muted-foreground\\\" />\\n                        <span>Share Project</span>\\n                      </DropdownMenuItem>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuItem>\\n                        <Trash2 className=\\\"text-muted-foreground\\\" />\\n                        <span>Delete Project</span>\\n                      </DropdownMenuItem>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </SidebarMenuItem>\\n              ))}\\n              <SidebarMenuItem>\\n                <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n                  <MoreHorizontal className=\\\"text-sidebar-foreground/70\\\" />\\n                  <span>More</span>\\n                </SidebarMenuButton>\\n              </SidebarMenuItem>\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-semibold\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n                  side=\\\"bottom\\\"\\n                  align=\\\"end\\\"\\n                  sideOffset={4}\\n                >\\n                  <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                    <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                      <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                        <AvatarImage\\n                          src={data.user.avatar}\\n                          alt={data.user.name}\\n                        />\\n                        <AvatarFallback className=\\\"rounded-lg\\\">\\n                          CN\\n                        </AvatarFallback>\\n                      </Avatar>\\n                      <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                        <span className=\\\"truncate font-semibold\\\">\\n                          {data.user.name}\\n                        </span>\\n                        <span className=\\\"truncate text-xs\\\">\\n                          {data.user.email}\\n                        </span>\\n                      </div>\\n                    </div>\\n                  </DropdownMenuLabel>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <Sparkles />\\n                      Upgrade to Pro\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <BadgeCheck />\\n                      Account\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <CreditCard />\\n                      Billing\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <Bell />\\n                      Notifications\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <LogOut />\\n                    Log out\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-08\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-08.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  BookOpen,\\n  Bot,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  Folder,\\n  Frame,\\n  LifeBuoy,\\n  LogOut,\\n  Map,\\n  MoreHorizontal,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  Share,\\n  Sparkles,\\n  SquareTerminal,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <Command className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton asChild tooltip={item.title}>\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    {item.items?.length ? (\\n                      <>\\n                        <CollapsibleTrigger asChild>\\n                          <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                            <ChevronRight />\\n                            <span className=\\\"sr-only\\\">Toggle</span>\\n                          </SidebarMenuAction>\\n                        </CollapsibleTrigger>\\n                        <CollapsibleContent>\\n                          <SidebarMenuSub>\\n                            {item.items?.map((subItem) => (\\n                              <SidebarMenuSubItem key={subItem.title}>\\n                                <SidebarMenuSubButton asChild>\\n                                  <a href={subItem.url}>\\n                                    <span>{subItem.title}</span>\\n                                  </a>\\n                                </SidebarMenuSubButton>\\n                              </SidebarMenuSubItem>\\n                            ))}\\n                          </SidebarMenuSub>\\n                        </CollapsibleContent>\\n                      </>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      <item.icon />\\n                      <span>{item.name}</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuAction showOnHover>\\n                        <MoreHorizontal />\\n                        <span className=\\\"sr-only\\\">More</span>\\n                      </SidebarMenuAction>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      className=\\\"w-48\\\"\\n                      side=\\\"bottom\\\"\\n                      align=\\\"end\\\"\\n                    >\\n                      <DropdownMenuItem>\\n                        <Folder className=\\\"text-muted-foreground\\\" />\\n                        <span>View Project</span>\\n                      </DropdownMenuItem>\\n                      <DropdownMenuItem>\\n                        <Share className=\\\"text-muted-foreground\\\" />\\n                        <span>Share Project</span>\\n                      </DropdownMenuItem>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuItem>\\n                        <Trash2 className=\\\"text-muted-foreground\\\" />\\n                        <span>Delete Project</span>\\n                      </DropdownMenuItem>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </SidebarMenuItem>\\n              ))}\\n              <SidebarMenuItem>\\n                <SidebarMenuButton>\\n                  <MoreHorizontal />\\n                  <span>More</span>\\n                </SidebarMenuButton>\\n              </SidebarMenuItem>\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild size=\\\"sm\\\">\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-semibold\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n                  side=\\\"bottom\\\"\\n                  align=\\\"end\\\"\\n                  sideOffset={4}\\n                >\\n                  <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                    <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                      <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                        <AvatarImage\\n                          src={data.user.avatar}\\n                          alt={data.user.name}\\n                        />\\n                        <AvatarFallback className=\\\"rounded-lg\\\">\\n                          CN\\n                        </AvatarFallback>\\n                      </Avatar>\\n                      <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                        <span className=\\\"truncate font-semibold\\\">\\n                          {data.user.name}\\n                        </span>\\n                        <span className=\\\"truncate text-xs\\\">\\n                          {data.user.email}\\n                        </span>\\n                      </div>\\n                    </div>\\n                  </DropdownMenuLabel>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <Sparkles />\\n                      Upgrade to Pro\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <BadgeCheck />\\n                      Account\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <CreditCard />\\n                      Billing\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <Bell />\\n                      Notifications\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <LogOut />\\n                    Log out\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-09\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-09.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArchiveX,\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  File,\\n  Inbox,\\n  LogOut,\\n  Send,\\n  Sparkles,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: File,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: ArchiveX,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden [&>[data-sidebar=sidebar]]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"!w-[calc(var(--sidebar-width-icon)_+_1px)] border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <Command className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      <item.icon />\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 whitespace-nowrap border-b p-4 text-sm leading-tight last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] whitespace-break-spaces text-xs\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\\nfunction NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-10\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-10.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowDown,\\n  ArrowUp,\\n  ArrowUpRight,\\n  AudioWaveform,\\n  Bell,\\n  Blocks,\\n  Calendar,\\n  ChevronDown,\\n  ChevronRight,\\n  Command,\\n  Copy,\\n  CornerUpLeft,\\n  CornerUpRight,\\n  FileText,\\n  GalleryVerticalEnd,\\n  Home,\\n  Inbox,\\n  LineChart,\\n  Link,\\n  MessageCircleQuestion,\\n  MoreHorizontal,\\n  Plus,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  Star,\\n  StarOff,\\n  Trash,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/components/ui/popover\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: Calendar,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  actions: [\\n    [\\n      {\\n        label: \\\"Customize Page\\\",\\n        icon: Settings2,\\n      },\\n      {\\n        label: \\\"Turn into wiki\\\",\\n        icon: FileText,\\n      },\\n    ],\\n    [\\n      {\\n        label: \\\"Copy Link\\\",\\n        icon: Link,\\n      },\\n      {\\n        label: \\\"Duplicate\\\",\\n        icon: Copy,\\n      },\\n      {\\n        label: \\\"Move to\\\",\\n        icon: CornerUpRight,\\n      },\\n      {\\n        label: \\\"Move to Trash\\\",\\n        icon: Trash2,\\n      },\\n    ],\\n    [\\n      {\\n        label: \\\"Undo\\\",\\n        icon: CornerUpLeft,\\n      },\\n      {\\n        label: \\\"View analytics\\\",\\n        icon: LineChart,\\n      },\\n      {\\n        label: \\\"Version History\\\",\\n        icon: GalleryVerticalEnd,\\n      },\\n      {\\n        label: \\\"Show delete pages\\\",\\n        icon: Trash,\\n      },\\n      {\\n        label: \\\"Notifications\\\",\\n        icon: Bell,\\n      },\\n    ],\\n    [\\n      {\\n        label: \\\"Import\\\",\\n        icon: ArrowUp,\\n      },\\n      {\\n        label: \\\"Export\\\",\\n        icon: ArrowDown,\\n      },\\n    ],\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions actions={data.actions} />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction NavActions({\\n  actions,\\n}: {\\n  actions: {\\n    label: string\\n    icon: LucideIcon\\n  }[][]\\n}) {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <Star />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <MoreHorizontal />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {actions.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            <item.icon /> <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\\nfunction NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\\nfunction NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-semibold\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-11\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-11.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight, File, Folder } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <File />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction Tree({ item }: { item: string | any[] }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <File />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <ChevronRight className=\\\"transition-transform\\\" />\\n            <Folder />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-12\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-12.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  Check,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Plus,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\\nfunction DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground [&_[role=gridcell]]:w-[33px]\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-13\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-13.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Bell,\\n  Check,\\n  Globe,\\n  Home,\\n  Keyboard,\\n  Link,\\n  Lock,\\n  Menu,\\n  MessageCircle,\\n  Paintbrush,\\n  Settings,\\n  Video,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/components/ui/sidebar\\\"\\nconst data = {\\n  nav: [\\n    { name: \\\"Notifications\\\", icon: Bell },\\n    { name: \\\"Navigation\\\", icon: Menu },\\n    { name: \\\"Home\\\", icon: Home },\\n    { name: \\\"Appearance\\\", icon: Paintbrush },\\n    { name: \\\"Messages & media\\\", icon: MessageCircle },\\n    { name: \\\"Language & region\\\", icon: Globe },\\n    { name: \\\"Accessibility\\\", icon: Keyboard },\\n    { name: \\\"Mark as read\\\", icon: Check },\\n    { name: \\\"Audio & video\\\", icon: Video },\\n    { name: \\\"Connected accounts\\\", icon: Link },\\n    { name: \\\"Privacy & visibility\\\", icon: Lock },\\n    { name: \\\"Advanced\\\", icon: Settings },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\\nfunction SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            <item.icon />\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-14\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-14.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-15\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-15.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowUpRight,\\n  AudioWaveform,\\n  BadgeCheck,\\n  Bell,\\n  Blocks,\\n  CalendarIcon,\\n  Check,\\n  ChevronDown,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  Home,\\n  Inbox,\\n  Link,\\n  LogOut,\\n  MessageCircleQuestion,\\n  MoreHorizontal,\\n  Plus,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  StarOff,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst sidebarLeftData = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: CalendarIcon,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\n// This is sample data.\\nconst sidebarRightData = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction SidebarLeft({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={sidebarLeftData.teams} />\\n        <NavMain items={sidebarLeftData.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={sidebarLeftData.favorites} />\\n        <NavWorkspaces workspaces={sidebarLeftData.workspaces} />\\n        <NavSecondary\\n          items={sidebarLeftData.navSecondary}\\n          className=\\\"mt-auto\\\"\\n        />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction SidebarRight({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={sidebarRightData.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={sidebarRightData.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\\nfunction Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\\nfunction DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground [&_[role=gridcell]]:w-[33px]\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\\nfunction NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\\nfunction NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-semibold\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/default/v0-sidebar-16.json",
    "content": "{\n  \"name\": \"v0-sidebar-16\",\n  \"type\": \"registry:block\",\n  \"description\": \"An inset sidebar with site header navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"navigation-menu\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"v0/sidebar-16.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  BookOpen,\\n  Bot,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  Folder,\\n  Frame,\\n  LifeBuoy,\\n  LogOut,\\n  Map,\\n  MoreHorizontal,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  Share,\\n  Sparkles,\\n  SquareTerminal,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Icons } from \\\"@/components/icons\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/components/ui/navigation-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\nconst HEADER_HEIGHT = \\\"4rem\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function Page() {\\n  const [open, setOpen] = React.useState(true)\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <div\\n      style={\\n        {\\n          \\\"--header-height\\\": HEADER_HEIGHT,\\n        } as React.CSSProperties\\n      }\\n    >\\n      <header className=\\\"sticky top-0 bg-sidebar flex h-[--header-height] shrink-0 items-center gap-2 border-b px-4 isolate z-20\\\">\\n        <div className=\\\"flex items-center gap-2 w-full\\\">\\n          <Button\\n            className=\\\"hidden md:flex\\\"\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            onClick={() => setOpen(!open)}\\n          >\\n            <Sidebar />\\n          </Button>\\n\\n          <div className=\\\"mx-auto flex items-center gap-2\\\">\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <Command className=\\\"size-4\\\" />\\n            </div>\\n            <Separator orientation=\\\"vertical\\\" className=\\\"ml-4 h-4\\\" />\\n            <NavigationMenu>\\n              <NavigationMenuList>\\n                <NavigationMenuItem>\\n                  <NavigationMenuTrigger className=\\\"bg-sidebar\\\">\\n                    Getting started\\n                  </NavigationMenuTrigger>\\n                  <NavigationMenuContent>\\n                    <ul className=\\\"grid gap-3 p-4 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\\\">\\n                      <li className=\\\"row-span-3\\\">\\n                        <NavigationMenuLink asChild>\\n                          <a\\n                            className=\\\"flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md\\\"\\n                            href=\\\"/\\\"\\n                          >\\n                            <Icons.logo className=\\\"h-6 w-6\\\" />\\n                            <div className=\\\"mb-2 mt-4 text-lg font-medium\\\">\\n                              shadcn/ui\\n                            </div>\\n                            <p className=\\\"text-sm leading-tight text-muted-foreground\\\">\\n                              Beautifully designed components built with Radix\\n                              UI and Tailwind CSS.\\n                            </p>\\n                          </a>\\n                        </NavigationMenuLink>\\n                      </li>\\n\\n                      <li>\\n                        <NavigationMenuLink asChild>\\n                          <a className=\\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\">\\n                            <div className=\\\"text-sm font-medium leading-none\\\">\\n                              Introduction\\n                            </div>\\n                            <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n                              Re-usable components built using Radix UI and\\n                              Tailwind CSS.\\n                            </p>\\n                          </a>\\n                        </NavigationMenuLink>\\n                      </li>\\n\\n                      <li>\\n                        <NavigationMenuLink asChild>\\n                          <a className=\\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\">\\n                            <div className=\\\"text-sm font-medium leading-none\\\">\\n                              Installation\\n                            </div>\\n                            <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n                              How to install dependencies and structure your\\n                              app.\\n                            </p>\\n                          </a>\\n                        </NavigationMenuLink>\\n                      </li>\\n\\n                      <li>\\n                        <NavigationMenuLink asChild>\\n                          <a className=\\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\">\\n                            <div className=\\\"text-sm font-medium leading-none\\\">\\n                              Typography\\n                            </div>\\n                            <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n                              Styles for headings, paragraphs, lists...etc\\n                            </p>\\n                          </a>\\n                        </NavigationMenuLink>\\n                      </li>\\n                    </ul>\\n                  </NavigationMenuContent>\\n                </NavigationMenuItem>\\n                <NavigationMenuItem>\\n                  <NavigationMenuTrigger className=\\\"bg-sidebar\\\">\\n                    Components\\n                  </NavigationMenuTrigger>\\n                  <NavigationMenuContent>\\n                    <ul className=\\\"grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px] \\\">\\n                      {components.map((component) => (\\n                        <li>\\n                          <NavigationMenuLink key={component.title} asChild>\\n                            <a className=\\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\">\\n                              <div className=\\\"text-sm font-medium leading-none\\\">\\n                                {component.title}\\n                              </div>\\n                              <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n                                {component.description}\\n                              </p>\\n                            </a>\\n                          </NavigationMenuLink>\\n                        </li>\\n                      ))}\\n                    </ul>\\n                  </NavigationMenuContent>\\n                </NavigationMenuItem>\\n                <NavigationMenuItem>\\n                  <Link href=\\\"/docs\\\" legacyBehavior passHref>\\n                    <NavigationMenuLink\\n                      className={cn(navigationMenuTriggerStyle(), \\\"bg-sidebar\\\")}\\n                    >\\n                      Documentation\\n                    </NavigationMenuLink>\\n                  </Link>\\n                </NavigationMenuItem>\\n              </NavigationMenuList>\\n            </NavigationMenu>\\n          </div>\\n        </div>\\n      </header>\\n      <SidebarProvider open={open} onOpenChange={setOpen}>\\n        <Sidebar\\n          className=\\\"top-[--header-height] pb-[--header-height]\\\"\\n          variant=\\\"inset\\\"\\n        >\\n          <SidebarHeader>\\n            <SidebarMenu>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                  <a href=\\\"#\\\">\\n                    <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                      <Command className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                      <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                    </div>\\n                  </a>\\n                </SidebarMenuButton>\\n              </SidebarMenuItem>\\n            </SidebarMenu>\\n          </SidebarHeader>\\n          <SidebarContent>\\n            <SidebarGroup>\\n              <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <Collapsible\\n                    key={item.title}\\n                    asChild\\n                    defaultOpen={item.isActive}\\n                  >\\n                    <SidebarMenuItem>\\n                      <SidebarMenuButton asChild tooltip={item.title}>\\n                        <a href={item.url}>\\n                          <item.icon />\\n                          <span>{item.title}</span>\\n                        </a>\\n                      </SidebarMenuButton>\\n                      {item.items?.length ? (\\n                        <>\\n                          <CollapsibleTrigger asChild>\\n                            <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                              <ChevronRight />\\n                              <span className=\\\"sr-only\\\">Toggle</span>\\n                            </SidebarMenuAction>\\n                          </CollapsibleTrigger>\\n                          <CollapsibleContent>\\n                            <SidebarMenuSub>\\n                              {item.items?.map((subItem) => (\\n                                <SidebarMenuSubItem key={subItem.title}>\\n                                  <SidebarMenuSubButton asChild>\\n                                    <a href={subItem.url}>\\n                                      <span>{subItem.title}</span>\\n                                    </a>\\n                                  </SidebarMenuSubButton>\\n                                </SidebarMenuSubItem>\\n                              ))}\\n                            </SidebarMenuSub>\\n                          </CollapsibleContent>\\n                        </>\\n                      ) : null}\\n                    </SidebarMenuItem>\\n                  </Collapsible>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroup>\\n            <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n              <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n              <SidebarMenu>\\n                {data.projects.map((item) => (\\n                  <SidebarMenuItem key={item.name}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <DropdownMenu>\\n                      <DropdownMenuTrigger asChild>\\n                        <SidebarMenuAction showOnHover>\\n                          <MoreHorizontal />\\n                          <span className=\\\"sr-only\\\">More</span>\\n                        </SidebarMenuAction>\\n                      </DropdownMenuTrigger>\\n                      <DropdownMenuContent\\n                        className=\\\"w-48\\\"\\n                        side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                        align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                      >\\n                        <DropdownMenuItem>\\n                          <Folder className=\\\"text-muted-foreground\\\" />\\n                          <span>View Project</span>\\n                        </DropdownMenuItem>\\n                        <DropdownMenuItem>\\n                          <Share className=\\\"text-muted-foreground\\\" />\\n                          <span>Share Project</span>\\n                        </DropdownMenuItem>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuItem>\\n                          <Trash2 className=\\\"text-muted-foreground\\\" />\\n                          <span>Delete Project</span>\\n                        </DropdownMenuItem>\\n                      </DropdownMenuContent>\\n                    </DropdownMenu>\\n                  </SidebarMenuItem>\\n                ))}\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton>\\n                    <MoreHorizontal />\\n                    <span>More</span>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              </SidebarMenu>\\n            </SidebarGroup>\\n            <SidebarGroup className=\\\"mt-auto\\\">\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {data.navSecondary.map((item) => (\\n                    <SidebarMenuItem key={item.title}>\\n                      <SidebarMenuButton asChild size=\\\"sm\\\">\\n                        <a href={item.url}>\\n                          <item.icon />\\n                          <span>{item.title}</span>\\n                        </a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </SidebarContent>\\n          <SidebarFooter>\\n            <SidebarMenu>\\n              <SidebarMenuItem>\\n                <DropdownMenu>\\n                  <DropdownMenuTrigger asChild>\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                    >\\n                      <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                        <AvatarImage\\n                          src={data.user.avatar}\\n                          alt={data.user.name}\\n                        />\\n                        <AvatarFallback className=\\\"rounded-lg\\\">\\n                          CN\\n                        </AvatarFallback>\\n                      </Avatar>\\n                      <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                        <span className=\\\"truncate font-semibold\\\">\\n                          {data.user.name}\\n                        </span>\\n                        <span className=\\\"truncate text-xs\\\">\\n                          {data.user.email}\\n                        </span>\\n                      </div>\\n                      <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n                    </SidebarMenuButton>\\n                  </DropdownMenuTrigger>\\n                  <DropdownMenuContent\\n                    className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n                    side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                    align=\\\"end\\\"\\n                    sideOffset={4}\\n                  >\\n                    <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                      <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                        <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                          <AvatarImage\\n                            src={data.user.avatar}\\n                            alt={data.user.name}\\n                          />\\n                          <AvatarFallback className=\\\"rounded-lg\\\">\\n                            CN\\n                          </AvatarFallback>\\n                        </Avatar>\\n                        <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                          <span className=\\\"truncate font-semibold\\\">\\n                            {data.user.name}\\n                          </span>\\n                          <span className=\\\"truncate text-xs\\\">\\n                            {data.user.email}\\n                          </span>\\n                        </div>\\n                      </div>\\n                    </DropdownMenuLabel>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>\\n                        <Sparkles />\\n                        Upgrade to Pro\\n                      </DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>\\n                        <BadgeCheck />\\n                        Account\\n                      </DropdownMenuItem>\\n                      <DropdownMenuItem>\\n                        <CreditCard />\\n                        Billing\\n                      </DropdownMenuItem>\\n                      <DropdownMenuItem>\\n                        <Bell />\\n                        Notifications\\n                      </DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuItem>\\n                      <LogOut />\\n                      Log out\\n                    </DropdownMenuItem>\\n                  </DropdownMenuContent>\\n                </DropdownMenu>\\n              </SidebarMenuItem>\\n            </SidebarMenu>\\n          </SidebarFooter>\\n        </Sidebar>\\n\\n        <SidebarInset>\\n          <header className=\\\" flex shrink-0 items-center gap-2 border-b py-2\\\">\\n            <div className=\\\"flex items-center gap-2 px-4 py-2\\\">\\n              <div className=\\\"flex md:hidden items-center gap-2\\\">\\n                <SidebarTrigger />\\n                <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n              </div>\\n              <Breadcrumb>\\n                <BreadcrumbList>\\n                  <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                    <BreadcrumbLink href=\\\"#\\\">\\n                      Building Your Application\\n                    </BreadcrumbLink>\\n                  </BreadcrumbItem>\\n                  <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                  <BreadcrumbItem>\\n                    <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                  </BreadcrumbItem>\\n                </BreadcrumbList>\\n              </Breadcrumb>\\n            </div>\\n          </header>\\n          <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n            <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n              <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            </div>\\n            <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n          </div>\\n        </SidebarInset>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"components/sidebar-16.tsx\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/index.json",
    "content": "[\n  {\n    \"name\": \"new-york\",\n    \"label\": \"New York\"\n  },\n  {\n    \"name\": \"default\",\n    \"label\": \"Default\"\n  }\n]"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/accordion-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"accordion\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/accordion-demo.tsx\",\n      \"content\": \"import {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/new-york/ui/accordion\\\"\\n\\nexport default function AccordionDemo() {\\n  return (\\n    <Accordion type=\\\"single\\\" collapsible className=\\\"w-full\\\">\\n      <AccordionItem value=\\\"item-1\\\">\\n        <AccordionTrigger>Is it accessible?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It adheres to the WAI-ARIA design pattern.\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-2\\\">\\n        <AccordionTrigger>Is it styled?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It comes with default styles that matches the other\\n          components&apos; aesthetic.\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-3\\\">\\n        <AccordionTrigger>Is it animated?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It's animated by default, but you can disable it if you prefer.\\n        </AccordionContent>\\n      </AccordionItem>\\n    </Accordion>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-accordion\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AccordionPrimitive from \\\"@radix-ui/react-accordion\\\"\\nimport { ChevronDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Accordion = AccordionPrimitive.Root\\n\\nconst AccordionItem = React.forwardRef<\\n  React.ElementRef<typeof AccordionPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\\n>(({ className, ...props }, ref) => (\\n  <AccordionPrimitive.Item\\n    ref={ref}\\n    className={cn(\\\"border-b\\\", className)}\\n    {...props}\\n  />\\n))\\nAccordionItem.displayName = \\\"AccordionItem\\\"\\n\\nconst AccordionTrigger = React.forwardRef<\\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\\n>(({ className, children, ...props }, ref) => (\\n  <AccordionPrimitive.Header className=\\\"flex\\\">\\n    <AccordionPrimitive.Trigger\\n      ref={ref}\\n      className={cn(\\n        \\\"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ChevronDown className=\\\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\\\" />\\n    </AccordionPrimitive.Trigger>\\n  </AccordionPrimitive.Header>\\n))\\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\\n\\nconst AccordionContent = React.forwardRef<\\n  React.ElementRef<typeof AccordionPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\\n>(({ className, children, ...props }, ref) => (\\n  <AccordionPrimitive.Content\\n    ref={ref}\\n    className=\\\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\\\"\\n    {...props}\\n  >\\n    <div className={cn(\\\"pb-4 pt-0\\\", className)}>{children}</div>\\n  </AccordionPrimitive.Content>\\n))\\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ],\n  \"tailwind\": {\n    \"config\": {\n      \"theme\": {\n        \"extend\": {\n          \"keyframes\": {\n            \"accordion-down\": {\n              \"from\": {\n                \"height\": \"0\"\n              },\n              \"to\": {\n                \"height\": \"var(--radix-accordion-content-height)\"\n              }\n            },\n            \"accordion-up\": {\n              \"from\": {\n                \"height\": \"var(--radix-accordion-content-height)\"\n              },\n              \"to\": {\n                \"height\": \"0\"\n              }\n            }\n          },\n          \"animation\": {\n            \"accordion-down\": \"accordion-down 0.2s ease-out\",\n            \"accordion-up\": \"accordion-up 0.2s ease-out\"\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/alert-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"alert\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/alert-demo.tsx\",\n      \"content\": \"import { Terminal } from \\\"lucide-react\\\"\\n\\nimport {\\n  Alert,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/new-york/ui/alert\\\"\\n\\nexport default function AlertDemo() {\\n  return (\\n    <Alert>\\n      <Terminal className=\\\"h-4 w-4\\\" />\\n      <AlertTitle>Heads up!</AlertTitle>\\n      <AlertDescription>\\n        You can add components to your app using the cli.\\n      </AlertDescription>\\n    </Alert>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/alert-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-destructive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"alert\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/alert-destructive.tsx\",\n      \"content\": \"import { AlertCircle } from \\\"lucide-react\\\"\\n\\nimport {\\n  Alert,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/new-york/ui/alert\\\"\\n\\nexport default function AlertDestructive() {\\n  return (\\n    <Alert variant=\\\"destructive\\\">\\n      <AlertCircle className=\\\"h-4 w-4\\\" />\\n      <AlertTitle>Error</AlertTitle>\\n      <AlertDescription>\\n        Your session has expired. Please log in again.\\n      </AlertDescription>\\n    </Alert>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/alert-dialog-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/alert-dialog-demo.tsx\",\n      \"content\": \"import {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/new-york/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function AlertDialogDemo() {\\n  return (\\n    <AlertDialog>\\n      <AlertDialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Show Dialog</Button>\\n      </AlertDialogTrigger>\\n      <AlertDialogContent>\\n        <AlertDialogHeader>\\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n          <AlertDialogDescription>\\n            This action cannot be undone. This will permanently delete your\\n            account and remove your data from our servers.\\n          </AlertDialogDescription>\\n        </AlertDialogHeader>\\n        <AlertDialogFooter>\\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\\n          <AlertDialogAction>Continue</AlertDialogAction>\\n        </AlertDialogFooter>\\n      </AlertDialogContent>\\n    </AlertDialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-alert-dialog\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AlertDialogPrimitive from \\\"@radix-ui/react-alert-dialog\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { buttonVariants } from \\\"@/registry/new-york/ui/button\\\"\\n\\nconst AlertDialog = AlertDialogPrimitive.Root\\n\\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\\n\\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\\n\\nconst AlertDialogOverlay = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Overlay\\n    className={cn(\\n      \\\"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\\\",\\n      className\\n    )}\\n    {...props}\\n    ref={ref}\\n  />\\n))\\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\\n\\nconst AlertDialogContent = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPortal>\\n    <AlertDialogOverlay />\\n    <AlertDialogPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </AlertDialogPortal>\\n))\\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\\n\\nconst AlertDialogHeader = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col space-y-2 text-center sm:text-left\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nAlertDialogHeader.displayName = \\\"AlertDialogHeader\\\"\\n\\nconst AlertDialogFooter = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nAlertDialogFooter.displayName = \\\"AlertDialogFooter\\\"\\n\\nconst AlertDialogTitle = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Title>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Title\\n    ref={ref}\\n    className={cn(\\\"text-lg font-semibold\\\", className)}\\n    {...props}\\n  />\\n))\\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\\n\\nconst AlertDialogDescription = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Description>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nAlertDialogDescription.displayName =\\n  AlertDialogPrimitive.Description.displayName\\n\\nconst AlertDialogAction = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Action>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Action\\n    ref={ref}\\n    className={cn(buttonVariants(), className)}\\n    {...props}\\n  />\\n))\\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\\n\\nconst AlertDialogCancel = React.forwardRef<\\n  React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\\n>(({ className, ...props }, ref) => (\\n  <AlertDialogPrimitive.Cancel\\n    ref={ref}\\n    className={cn(\\n      buttonVariants({ variant: \\\"outline\\\" }),\\n      \\\"mt-2 sm:mt-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogPortal,\\n  AlertDialogOverlay,\\n  AlertDialogTrigger,\\n  AlertDialogContent,\\n  AlertDialogHeader,\\n  AlertDialogFooter,\\n  AlertDialogTitle,\\n  AlertDialogDescription,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-background text-foreground\\\",\\n        destructive:\\n          \\\"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nconst Alert = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\\n>(({ className, variant, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    role=\\\"alert\\\"\\n    className={cn(alertVariants({ variant }), className)}\\n    {...props}\\n  />\\n))\\nAlert.displayName = \\\"Alert\\\"\\n\\nconst AlertTitle = React.forwardRef<\\n  HTMLParagraphElement,\\n  React.HTMLAttributes<HTMLHeadingElement>\\n>(({ className, ...props }, ref) => (\\n  <h5\\n    ref={ref}\\n    className={cn(\\\"mb-1 font-medium leading-none tracking-tight\\\", className)}\\n    {...props}\\n  />\\n))\\nAlertTitle.displayName = \\\"AlertTitle\\\"\\n\\nconst AlertDescription = React.forwardRef<\\n  HTMLParagraphElement,\\n  React.HTMLAttributes<HTMLParagraphElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"text-sm [&_p]:leading-relaxed\\\", className)}\\n    {...props}\\n  />\\n))\\nAlertDescription.displayName = \\\"AlertDescription\\\"\\n\\nexport { Alert, AlertTitle, AlertDescription }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/app-01.json",
    "content": "{\n  \"name\": \"app-01\",\n  \"type\": \"registry:block\",\n  \"description\": \"A simple task app.\",\n  \"dependencies\": [\n    \"swr\"\n  ],\n  \"registryDependencies\": [\n    \"card\",\n    \"input\",\n    \"button\",\n    \"skeleton\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/app-01/page.tsx\",\n      \"content\": \"import { AddTaskForm } from \\\"@/registry/new-york/blocks/app-01/components/add-task-form\\\"\\nimport { TasksList } from \\\"@/registry/new-york/blocks/app-01/components/tasks-list\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\n\\nexport default function AppPage() {\\n  return (\\n    <div className=\\\"h-screen flex flex-col items-center justify-center\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Add Task</CardTitle>\\n        </CardHeader>\\n        <CardContent>\\n          <TasksList />\\n        </CardContent>\\n        <CardFooter>\\n          <AddTaskForm />\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/app-01/api/tasks/route.ts\",\n      \"content\": \"import { NextResponse } from \\\"next/server\\\"\\n\\nimport { API_URL } from \\\"@/registry/new-york/blocks/app-01/lib/constants\\\"\\n\\nexport async function GET() {\\n  const response = await fetch(API_URL)\\n  const data = await response.json()\\n  return NextResponse.json(data)\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/api/tasks/route.ts\"\n    },\n    {\n      \"path\": \"blocks/app-01/components/add-task-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Label } from \\\"@/registry/default/ui/label\\\"\\nimport { SubmitButton } from \\\"@/registry/new-york/blocks/app-01/components/submit-button\\\"\\nimport { useTasks } from \\\"@/registry/new-york/blocks/app-01/hooks/use-tasks\\\"\\nimport { saveTask } from \\\"@/registry/new-york/blocks/app-01/lib/actions\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\n\\nexport function AddTaskForm() {\\n  const { mutate } = useTasks()\\n  const formRef = React.useRef<HTMLFormElement>(null)\\n\\n  return (\\n    <form\\n      action={async (formData) => {\\n        await saveTask(formData)\\n        void mutate()\\n        formRef.current?.reset()\\n      }}\\n      className=\\\"w-full\\\"\\n      ref={formRef}\\n    >\\n      <div className=\\\"flex flex-col gap-2\\\">\\n        <Label htmlFor=\\\"name\\\" className=\\\"sr-only\\\">\\n          Task Name\\n        </Label>\\n        <Input\\n          type=\\\"text\\\"\\n          name=\\\"name\\\"\\n          required\\n          autoComplete=\\\"off\\\"\\n          placeholder=\\\"Remember the milk\\\"\\n        />\\n        <SubmitButton className=\\\"w-full\\\">Add Task</SubmitButton>\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/app-01/components/submit-button.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Loader2 } from \\\"lucide-react\\\"\\nimport { useFormStatus } from \\\"react-dom\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function SubmitButton({\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { pending } = useFormStatus()\\n\\n  return (\\n    <Button type=\\\"submit\\\" disabled={pending} {...props}>\\n      {pending && <Loader2 className=\\\"animate-spin\\\" />}\\n      {children}\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/app-01/components/tasks-list.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTasks } from \\\"@/registry/new-york/blocks/app-01/hooks/use-tasks\\\"\\nimport { Skeleton } from \\\"@/registry/new-york/ui/skeleton\\\"\\n\\nexport function TasksList() {\\n  const { tasks, isLoading } = useTasks()\\n\\n  if (isLoading)\\n    return (\\n      <div className=\\\"grid gap-2\\\">\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <Skeleton className=\\\"h-5 w-full\\\" key={index} />\\n        ))}\\n      </div>\\n    )\\n\\n  return (\\n    <div className=\\\"grid gap-2\\\">\\n      {tasks.map((task, index) => (\\n        <div key={index} className=\\\"h-5 text-sm\\\">\\n          {task}\\n        </div>\\n      ))}\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/app-01/hooks/use-tasks.ts\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport useSWR from \\\"swr\\\"\\n\\nimport { API_URL } from \\\"@/registry/new-york/blocks/app-01/lib/constants\\\"\\n\\nexport function useTasks() {\\n  const { data, isLoading, mutate } = useSWR<{ tasks: string[] }>(\\n    \\\"/api/tasks\\\",\\n    async () => {\\n      const response = await fetch(API_URL)\\n      return response.json()\\n    }\\n  )\\n\\n  return { tasks: data?.tasks || [], isLoading, mutate }\\n}\\n\",\n      \"type\": \"registry:hook\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/app-01/lib/constants.ts\",\n      \"content\": \"export const API_URL = \\\"https://api.npoint.io/40ac2c2a67c912fa2120\\\"\\n\",\n      \"type\": \"registry:lib\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/app-01/lib/actions.ts\",\n      \"content\": \"\\\"use server\\\"\\n\\nimport { API_URL } from \\\"@/registry/new-york/blocks/app-01/lib/constants\\\"\\n\\nexport async function saveTask(formData: FormData) {\\n  const name = formData.get(\\\"name\\\")\\n\\n  // Get current tasks\\n  const response = await fetch(API_URL)\\n  const data = await response.json()\\n  const tasks = data.tasks || []\\n\\n  // Add new task to array\\n  tasks.push(name)\\n\\n  // Save updated tasks array\\n  await fetch(API_URL, {\\n    method: \\\"POST\\\",\\n    body: JSON.stringify({ tasks }),\\n  })\\n\\n  return { success: true }\\n}\\n\",\n      \"type\": \"registry:lib\",\n      \"target\": \"\"\n    }\n  ],\n  \"cssVars\": {\n    \"light\": {\n      \"primary\": \"224.3 76.3% 48%\",\n      \"primary-foreground\": \"0 0% 100%\"\n    }\n  },\n  \"categories\": [\n    \"apps\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/aspect-ratio-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"aspect-ratio\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/aspect-ratio-demo.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport { AspectRatio } from \\\"@/registry/new-york/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioDemo() {\\n  return (\\n    <AspectRatio ratio={16 / 9} className=\\\"bg-muted\\\">\\n      <Image\\n        src=\\\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\\\"\\n        alt=\\\"Photo by Drew Beamer\\\"\\n        fill\\n        className=\\\"h-full w-full rounded-md object-cover\\\"\\n      />\\n    </AspectRatio>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-aspect-ratio\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as AspectRatioPrimitive from \\\"@radix-ui/react-aspect-ratio\\\"\\n\\nconst AspectRatio = AspectRatioPrimitive.Root\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/avatar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/avatar-demo.tsx\",\n      \"content\": \"import {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\n\\nexport default function AvatarDemo() {\\n  return (\\n    <Avatar>\\n      <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n      <AvatarFallback>CN</AvatarFallback>\\n    </Avatar>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AvatarPrimitive from \\\"@radix-ui/react-avatar\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Avatar = React.forwardRef<\\n  React.ElementRef<typeof AvatarPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\\n>(({ className, ...props }, ref) => (\\n  <AvatarPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nAvatar.displayName = AvatarPrimitive.Root.displayName\\n\\nconst AvatarImage = React.forwardRef<\\n  React.ElementRef<typeof AvatarPrimitive.Image>,\\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\\n>(({ className, ...props }, ref) => (\\n  <AvatarPrimitive.Image\\n    ref={ref}\\n    className={cn(\\\"aspect-square h-full w-full\\\", className)}\\n    {...props}\\n  />\\n))\\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\\n\\nconst AvatarFallback = React.forwardRef<\\n  React.ElementRef<typeof AvatarPrimitive.Fallback>,\\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\\n>(({ className, ...props }, ref) => (\\n  <AvatarPrimitive.Fallback\\n    ref={ref}\\n    className={cn(\\n      \\\"flex h-full w-full items-center justify-center rounded-full bg-muted\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\\n\\nexport { Avatar, AvatarImage, AvatarFallback }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/badge-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/badge-demo.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\n\\nexport default function BadgeDemo() {\\n  return <Badge>Badge</Badge>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/badge-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-destructive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/badge-destructive.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\n\\nexport default function BadgeDestructive() {\\n  return <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/badge-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-outline\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/badge-outline.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\n\\nexport default function BadgeOutline() {\\n  return <Badge variant=\\\"outline\\\">Outline</Badge>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/badge-secondary.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-secondary\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/badge-secondary.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\n\\nexport default function BadgeSecondary() {\\n  return <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/badge.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default:\\n          \\\"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\\\",\\n        outline: \\\"text-foreground\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nexport interface BadgeProps\\n  extends React.HTMLAttributes<HTMLDivElement>,\\n    VariantProps<typeof badgeVariants> {}\\n\\nfunction Badge({ className, variant, ...props }: BadgeProps) {\\n  return (\\n    <div className={cn(badgeVariants({ variant }), className)} {...props} />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/breadcrumb-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-demo.tsx\",\n      \"content\": \"import {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbDemo() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/\\\">Home</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger className=\\\"flex items-center gap-1\\\">\\n              <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n              <span className=\\\"sr-only\\\">Toggle menu</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"start\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Themes</DropdownMenuItem>\\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/docs/components\\\">Components</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/breadcrumb-dropdown.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-dropdown\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-dropdown.tsx\",\n      \"content\": \"import { ChevronDown, Slash } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbWithDropdown() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/\\\">Home</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <Slash />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger className=\\\"flex items-center gap-1\\\">\\n              Components\\n              <ChevronDown />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"start\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Themes</DropdownMenuItem>\\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <Slash />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/breadcrumb-ellipsis.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-ellipsis\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-ellipsis.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbCollapsed() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbEllipsis />\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/docs/components\\\">Components</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/breadcrumb-link.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-link\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-link.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbWithCustomSeparator() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink>\\n            <Link href=\\\"/components\\\">Components</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/breadcrumb-responsive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-responsive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-responsive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nconst items = [\\n  { href: \\\"#\\\", label: \\\"Home\\\" },\\n  { href: \\\"#\\\", label: \\\"Documentation\\\" },\\n  { href: \\\"#\\\", label: \\\"Building Your Application\\\" },\\n  { href: \\\"#\\\", label: \\\"Data Fetching\\\" },\\n  { label: \\\"Caching and Revalidating\\\" },\\n]\\n\\nconst ITEMS_TO_DISPLAY = 3\\n\\nexport default function BreadcrumbResponsive() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href={items[0].href}>{items[0].label}</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        {items.length > ITEMS_TO_DISPLAY ? (\\n          <>\\n            <BreadcrumbItem>\\n              {isDesktop ? (\\n                <DropdownMenu open={open} onOpenChange={setOpen}>\\n                  <DropdownMenuTrigger\\n                    className=\\\"flex items-center gap-1\\\"\\n                    aria-label=\\\"Toggle menu\\\"\\n                  >\\n                    <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n                  </DropdownMenuTrigger>\\n                  <DropdownMenuContent align=\\\"start\\\">\\n                    {items.slice(1, -2).map((item, index) => (\\n                      <DropdownMenuItem key={index}>\\n                        <Link href={item.href ? item.href : \\\"#\\\"}>\\n                          {item.label}\\n                        </Link>\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuContent>\\n                </DropdownMenu>\\n              ) : (\\n                <Drawer open={open} onOpenChange={setOpen}>\\n                  <DrawerTrigger aria-label=\\\"Toggle Menu\\\">\\n                    <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n                  </DrawerTrigger>\\n                  <DrawerContent>\\n                    <DrawerHeader className=\\\"text-left\\\">\\n                      <DrawerTitle>Navigate to</DrawerTitle>\\n                      <DrawerDescription>\\n                        Select a page to navigate to.\\n                      </DrawerDescription>\\n                    </DrawerHeader>\\n                    <div className=\\\"grid gap-1 px-4\\\">\\n                      {items.slice(1, -2).map((item, index) => (\\n                        <Link\\n                          key={index}\\n                          href={item.href ? item.href : \\\"#\\\"}\\n                          className=\\\"py-1 text-sm\\\"\\n                        >\\n                          {item.label}\\n                        </Link>\\n                      ))}\\n                    </div>\\n                    <DrawerFooter className=\\\"pt-4\\\">\\n                      <DrawerClose asChild>\\n                        <Button variant=\\\"outline\\\">Close</Button>\\n                      </DrawerClose>\\n                    </DrawerFooter>\\n                  </DrawerContent>\\n                </Drawer>\\n              )}\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n          </>\\n        ) : null}\\n        {items.slice(-ITEMS_TO_DISPLAY + 1).map((item, index) => (\\n          <BreadcrumbItem key={index}>\\n            {item.href ? (\\n              <>\\n                <BreadcrumbLink\\n                  asChild\\n                  className=\\\"max-w-20 truncate md:max-w-none\\\"\\n                >\\n                  <Link href={item.href}>{item.label}</Link>\\n                </BreadcrumbLink>\\n                <BreadcrumbSeparator />\\n              </>\\n            ) : (\\n              <BreadcrumbPage className=\\\"max-w-20 truncate md:max-w-none\\\">\\n                {item.label}\\n              </BreadcrumbPage>\\n            )}\\n          </BreadcrumbItem>\\n        ))}\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/breadcrumb-separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-separator\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/breadcrumb-separator.tsx\",\n      \"content\": \"import { Slash } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbWithCustomSeparator() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/\\\">Home</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <Slash />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/components\\\">Components</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <Slash />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { ChevronRight, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Breadcrumb = React.forwardRef<\\n  HTMLElement,\\n  React.ComponentPropsWithoutRef<\\\"nav\\\"> & {\\n    separator?: React.ReactNode\\n  }\\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\\\"breadcrumb\\\" {...props} />)\\nBreadcrumb.displayName = \\\"Breadcrumb\\\"\\n\\nconst BreadcrumbList = React.forwardRef<\\n  HTMLOListElement,\\n  React.ComponentPropsWithoutRef<\\\"ol\\\">\\n>(({ className, ...props }, ref) => (\\n  <ol\\n    ref={ref}\\n    className={cn(\\n      \\\"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nBreadcrumbList.displayName = \\\"BreadcrumbList\\\"\\n\\nconst BreadcrumbItem = React.forwardRef<\\n  HTMLLIElement,\\n  React.ComponentPropsWithoutRef<\\\"li\\\">\\n>(({ className, ...props }, ref) => (\\n  <li\\n    ref={ref}\\n    className={cn(\\\"inline-flex items-center gap-1.5\\\", className)}\\n    {...props}\\n  />\\n))\\nBreadcrumbItem.displayName = \\\"BreadcrumbItem\\\"\\n\\nconst BreadcrumbLink = React.forwardRef<\\n  HTMLAnchorElement,\\n  React.ComponentPropsWithoutRef<\\\"a\\\"> & {\\n    asChild?: boolean\\n  }\\n>(({ asChild, className, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      className={cn(\\\"transition-colors hover:text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nBreadcrumbLink.displayName = \\\"BreadcrumbLink\\\"\\n\\nconst BreadcrumbPage = React.forwardRef<\\n  HTMLSpanElement,\\n  React.ComponentPropsWithoutRef<\\\"span\\\">\\n>(({ className, ...props }, ref) => (\\n  <span\\n    ref={ref}\\n    role=\\\"link\\\"\\n    aria-disabled=\\\"true\\\"\\n    aria-current=\\\"page\\\"\\n    className={cn(\\\"font-normal text-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nBreadcrumbPage.displayName = \\\"BreadcrumbPage\\\"\\n\\nconst BreadcrumbSeparator = ({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) => (\\n  <li\\n    role=\\\"presentation\\\"\\n    aria-hidden=\\\"true\\\"\\n    className={cn(\\\"[&>svg]:w-3.5 [&>svg]:h-3.5\\\", className)}\\n    {...props}\\n  >\\n    {children ?? <ChevronRight />}\\n  </li>\\n)\\nBreadcrumbSeparator.displayName = \\\"BreadcrumbSeparator\\\"\\n\\nconst BreadcrumbEllipsis = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) => (\\n  <span\\n    role=\\\"presentation\\\"\\n    aria-hidden=\\\"true\\\"\\n    className={cn(\\\"flex h-9 w-9 items-center justify-center\\\", className)}\\n    {...props}\\n  >\\n    <MoreHorizontal className=\\\"h-4 w-4\\\" />\\n    <span className=\\\"sr-only\\\">More</span>\\n  </span>\\n)\\nBreadcrumbEllipsis.displayName = \\\"BreadcrumbElipssis\\\"\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-01.json",
    "content": "{\n  \"name\": \"button-01\",\n  \"type\": \"registry:block\",\n  \"description\": \"A simple button.\",\n  \"files\": [\n    {\n      \"path\": \"blocks/button-01/page.tsx\",\n      \"content\": \"import { AmazingButton } from \\\"@/registry/new-york/blocks/button-01/components/amazing-button\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"h-svh flex items-center justify-center\\\">\\n      <AmazingButton />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/button-01/components/amazing-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function AmazingButton() {\\n  return (\\n    <Button className=\\\"bg-gradient-to-r from-purple-500 to-pink-500 hover:from-purple-600 hover:to-pink-600 text-white\\\">\\n      Amazing Button\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"300px\"\n  },\n  \"categories\": [\n    \"misc\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-as-child.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-as-child\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-as-child.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonAsChild() {\\n  return (\\n    <Button asChild>\\n      <Link href=\\\"/login\\\">Login</Link>\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonDemo() {\\n  return <Button>Button</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-destructive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-destructive.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonDestructive() {\\n  return <Button variant=\\\"destructive\\\">Destructive</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-ghost.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-ghost\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-ghost.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonGhost() {\\n  return <Button variant=\\\"ghost\\\">Ghost</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/button-group.tsx\",\n      \"content\": \"import { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\\\",\\n        vertical:\\n          \\\"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      className={cn(\\n        \\\"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-icon\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-icon.tsx\",\n      \"content\": \"import { ChevronRight } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonIcon() {\\n  return (\\n    <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n      <ChevronRight />\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-link.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-link\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-link.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonLink() {\\n  return <Button variant=\\\"link\\\">Link</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-loading.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-loading\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-loading.tsx\",\n      \"content\": \"import { Loader2 } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonLoading() {\\n  return (\\n    <Button disabled>\\n      <Loader2 className=\\\"animate-spin\\\" />\\n      Please wait\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-outline\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-outline.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonOutline() {\\n  return <Button variant=\\\"outline\\\">Outline</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-secondary.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-secondary\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-secondary.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonSecondary() {\\n  return <Button variant=\\\"secondary\\\">Secondary</Button>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button-with-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-with-icon\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/button-with-icon.tsx\",\n      \"content\": \"import { MailOpen } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ButtonWithIcon() {\\n  return (\\n    <Button>\\n      <MailOpen /> Login with Email\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/button.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default:\\n          \\\"bg-primary text-primary-foreground shadow hover:bg-primary/90\\\",\\n        destructive:\\n          \\\"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\\\",\\n        outline:\\n          \\\"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\\\",\\n        ghost: \\\"hover:bg-accent hover:text-accent-foreground\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 px-4 py-2\\\",\\n        sm: \\\"h-8 rounded-md px-3 text-xs\\\",\\n        lg: \\\"h-10 rounded-md px-8\\\",\\n        icon: \\\"h-9 w-9\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nexport interface ButtonProps\\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\\n    VariantProps<typeof buttonVariants> {\\n  asChild?: boolean\\n}\\n\\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\\n    const Comp = asChild ? Slot : \\\"button\\\"\\n    return (\\n      <Comp\\n        className={cn(buttonVariants({ variant, size, className }))}\\n        ref={ref}\\n        {...props}\\n      />\\n    )\\n  }\\n)\\nButton.displayName = \\\"Button\\\"\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-01\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A simple calendar.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-01.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar01() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-02\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Multiple months with single selection.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-02.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar02() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      numberOfMonths={2}\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-03\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Multiple months with multiple selection.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-03.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar03() {\\n  const [dates, setDates] = React.useState<Date[]>([\\n    new Date(2025, 5, 12),\\n    new Date(2025, 6, 24),\\n  ])\\n\\n  return (\\n    <Calendar\\n      mode=\\\"multiple\\\"\\n      numberOfMonths={2}\\n      defaultMonth={dates[0]}\\n      required\\n      selected={dates}\\n      onSelect={setDates}\\n      max={5}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-04\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Single month with range selection\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-04.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar04() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 9),\\n    to: new Date(2025, 5, 26),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0 xl:pt-28\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-05\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Multiple months with range selection\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-05.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar05() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 6, 15),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      numberOfMonths={2}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-06\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Range selection with minimum days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-06.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar06() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 5, 26),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        defaultMonth={dateRange?.from}\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={1}\\n        min={5}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        A minimum of 5 days is required\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-07\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Range selection with minimum and maximum days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-07.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar07() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 18),\\n    to: new Date(2025, 6, 7),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        defaultMonth={dateRange?.from}\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={2}\\n        min={2}\\n        max={20}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        Your stay must be between 2 and 20 nights\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-08\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Calendar with disabled days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-08.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar08() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      disabled={{\\n        before: new Date(2025, 5, 12),\\n      }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-09\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Calendar with disabled weekends\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-09.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar09() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 17),\\n    to: new Date(2025, 5, 20),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      numberOfMonths={2}\\n      disabled={{ dayOfWeek: [0, 6] }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n      excludeDisabled\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-10\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Today button\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-10.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\n\\nexport default function Calendar10() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(new Date())\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"relative\\\">\\n        <CardTitle>Appointment</CardTitle>\\n        <CardDescription>Find a date</CardDescription>\\n        <Button\\n          size=\\\"sm\\\"\\n          variant=\\\"outline\\\"\\n          className=\\\"absolute right-4 top-4\\\"\\n          onClick={() => {\\n            setMonth(new Date())\\n            setDate(new Date())\\n          }}\\n        >\\n          Today\\n        </Button>\\n      </CardHeader>\\n      <CardContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          month={month}\\n          onMonthChange={setMonth}\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n        />\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-11\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Start and end of month\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-11.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar11() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 17),\\n    to: new Date(2025, 5, 20),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={2}\\n        startMonth={new Date(2025, 5, 1)}\\n        endMonth={new Date(2025, 6, 31)}\\n        disableNavigation\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        We are open in June and July only.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-12\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Localized calendar\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-12.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { enUS, es } from \\\"react-day-picker/locale\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\n\\nconst localizedStrings = {\\n  en: {\\n    title: \\\"Book an appointment\\\",\\n    description: \\\"Select the dates for your appointment\\\",\\n  },\\n  es: {\\n    title: \\\"Reserva una cita\\\",\\n    description: \\\"Selecciona las fechas para tu cita\\\",\\n  },\\n} as const\\n\\nexport default function Calendar12() {\\n  const [locale, setLocale] =\\n    React.useState<keyof typeof localizedStrings>(\\\"es\\\")\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 8, 9),\\n    to: new Date(2025, 8, 17),\\n  })\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"relative border-b\\\">\\n        <CardTitle>{localizedStrings[locale].title}</CardTitle>\\n        <CardDescription>\\n          {localizedStrings[locale].description}\\n        </CardDescription>\\n        <Select\\n          value={locale}\\n          onValueChange={(value) =>\\n            setLocale(value as keyof typeof localizedStrings)\\n          }\\n        >\\n          <SelectTrigger className=\\\"absolute right-4 top-4 w-[100px]\\\">\\n            <SelectValue placeholder=\\\"Language\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"end\\\">\\n            <SelectItem value=\\\"es\\\">Español</SelectItem>\\n            <SelectItem value=\\\"en\\\">English</SelectItem>\\n          </SelectContent>\\n        </Select>\\n      </CardHeader>\\n      <CardContent className=\\\"pt-4\\\">\\n        <Calendar\\n          mode=\\\"range\\\"\\n          selected={dateRange}\\n          onSelect={setDateRange}\\n          defaultMonth={dateRange?.from}\\n          numberOfMonths={2}\\n          locale={locale === \\\"es\\\" ? es : enUS}\\n          className=\\\"bg-transparent p-0\\\"\\n          buttonVariant=\\\"outline\\\"\\n        />\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-13\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With Month and Year Dropdown\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"label\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-13.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\n\\nexport default function Calendar13() {\\n  const [dropdown, setDropdown] =\\n    React.useState<React.ComponentProps<typeof Calendar>[\\\"captionLayout\\\"]>(\\n      \\\"dropdown\\\"\\n    )\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-4\\\">\\n      <Calendar\\n        mode=\\\"single\\\"\\n        defaultMonth={date}\\n        selected={date}\\n        onSelect={setDate}\\n        captionLayout={dropdown}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"dropdown\\\" className=\\\"px-1\\\">\\n          Dropdown\\n        </Label>\\n        <Select\\n          value={dropdown}\\n          onValueChange={(value) =>\\n            setDropdown(\\n              value as React.ComponentProps<typeof Calendar>[\\\"captionLayout\\\"]\\n            )\\n          }\\n        >\\n          <SelectTrigger id=\\\"dropdown\\\" className=\\\"bg-background w-full\\\">\\n            <SelectValue placeholder=\\\"Dropdown\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"center\\\">\\n            <SelectItem value=\\\"dropdown\\\">Month and Year</SelectItem>\\n            <SelectItem value=\\\"dropdown-months\\\">Month Only</SelectItem>\\n            <SelectItem value=\\\"dropdown-years\\\">Year Only</SelectItem>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-14\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With Booked/Unavailable Days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-14.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar14() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 12 },\\n    (_, i) => new Date(2025, 5, 15 + i)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      disabled={bookedDates}\\n      modifiers={{\\n        booked: bookedDates,\\n      }}\\n      modifiersClassNames={{\\n        booked: \\\"[&>button]:line-through opacity-100\\\",\\n      }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-15\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With Week Numbers\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-15.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar15() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n      showWeekNumber\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-16\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With time picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-16.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Clock2Icon } from \\\"lucide-react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function Calendar16() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col gap-6 border-t px-4 pb-0 pt-4\\\">\\n        <div className=\\\"flex w-full flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\">Start Time</Label>\\n          <div className=\\\"relative flex w-full items-center gap-2\\\">\\n            <Clock2Icon className=\\\"text-muted-foreground pointer-events-none absolute left-2.5 size-4 select-none\\\" />\\n            <Input\\n              id=\\\"time-from\\\"\\n              type=\\\"time\\\"\\n              step=\\\"1\\\"\\n              defaultValue=\\\"10:30:00\\\"\\n              className=\\\"appearance-none pl-8 [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n            />\\n          </div>\\n        </div>\\n        <div className=\\\"flex w-full flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\">End Time</Label>\\n          <div className=\\\"relative flex w-full items-center gap-2\\\">\\n            <Clock2Icon className=\\\"text-muted-foreground pointer-events-none absolute left-2.5 size-4 select-none\\\" />\\n            <Input\\n              id=\\\"time-to\\\"\\n              type=\\\"time\\\"\\n              step=\\\"1\\\"\\n              defaultValue=\\\"12:30:00\\\"\\n              className=\\\"appearance-none pl-8 [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n            />\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-17.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-17\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With time picker inline\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-17.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function Calendar17() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0 [--cell-size:2.8rem]\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"*:[div]:w-full flex gap-2 border-t px-4 pb-0 pt-4\\\">\\n        <div className=\\\"flex-1\\\">\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"sr-only\\\">\\n            Start Time\\n          </Label>\\n          <Input\\n            id=\\\"time-from\\\"\\n            type=\\\"time\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n        <span>-</span>\\n        <div className=\\\"flex-1\\\">\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"sr-only\\\">\\n            End Time\\n          </Label>\\n          <Input\\n            id=\\\"time-to\\\"\\n            type=\\\"time\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-18.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-18\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Variable size\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-18.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar18() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border [--cell-size:2.75rem] md:[--cell-size:3rem]\\\"\\n      buttonVariant=\\\"ghost\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-19.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-19\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With presets\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-19.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays } from \\\"date-fns\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york/ui/card\\\"\\n\\nexport default function Calendar19() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"max-w-[300px] py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          defaultMonth={date}\\n          className=\\\"bg-transparent p-0 [--cell-size:2.375rem]\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-wrap gap-2 border-t px-4 pb-0 pt-4\\\">\\n        {[\\n          { label: \\\"Today\\\", value: 0 },\\n          { label: \\\"Tomorrow\\\", value: 1 },\\n          { label: \\\"In 3 days\\\", value: 3 },\\n          { label: \\\"In a week\\\", value: 7 },\\n          { label: \\\"In 2 weeks\\\", value: 14 },\\n        ].map((preset) => (\\n          <Button\\n            key={preset.value}\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            className=\\\"flex-1\\\"\\n            onClick={() => {\\n              const newDate = addDays(new Date(), preset.value)\\n              setDate(newDate)\\n            }}\\n          >\\n            {preset.label}\\n          </Button>\\n        ))}\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-20.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-20\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With time presets\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-20.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york/ui/card\\\"\\n\\nexport default function Calendar20() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const [selectedTime, setSelectedTime] = React.useState<string | null>(\\\"10:00\\\")\\n  const timeSlots = Array.from({ length: 37 }, (_, i) => {\\n    const totalMinutes = i * 15\\n    const hour = Math.floor(totalMinutes / 60) + 9\\n    const minute = totalMinutes % 60\\n    return `${hour.toString().padStart(2, \\\"0\\\")}:${minute\\n      .toString()\\n      .padStart(2, \\\"0\\\")}`\\n  })\\n\\n  const bookedDates = Array.from(\\n    { length: 3 },\\n    (_, i) => new Date(2025, 5, 17 + i)\\n  )\\n\\n  return (\\n    <Card className=\\\"gap-0 p-0\\\">\\n      <CardContent className=\\\"relative p-0 md:pr-48\\\">\\n        <div className=\\\"p-6\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            defaultMonth={date}\\n            disabled={bookedDates}\\n            showOutsideDays={false}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n            className=\\\"bg-transparent p-0 [--cell-size:2.5rem] md:[--cell-size:3rem]\\\"\\n            formatters={{\\n              formatWeekdayName: (date) => {\\n                return date.toLocaleString(\\\"en-US\\\", { weekday: \\\"short\\\" })\\n              },\\n            }}\\n          />\\n        </div>\\n        <div className=\\\"no-scrollbar inset-y-0 right-0 flex max-h-72 w-full scroll-pb-6 flex-col gap-4 overflow-y-auto border-t p-6 md:absolute md:max-h-none md:w-48 md:border-l md:border-t-0\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            {timeSlots.map((time) => (\\n              <Button\\n                key={time}\\n                variant={selectedTime === time ? \\\"default\\\" : \\\"outline\\\"}\\n                onClick={() => setSelectedTime(time)}\\n                className=\\\"w-full shadow-none\\\"\\n              >\\n                {time}\\n              </Button>\\n            ))}\\n          </div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col gap-4 border-t !py-5 px-6 md:flex-row\\\">\\n        <div className=\\\"text-sm\\\">\\n          {date && selectedTime ? (\\n            <>\\n              Your meeting is booked for{\\\" \\\"}\\n              <span className=\\\"font-medium\\\">\\n                {\\\" \\\"}\\n                {date?.toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"long\\\",\\n                  day: \\\"numeric\\\",\\n                  month: \\\"long\\\",\\n                })}{\\\" \\\"}\\n              </span>\\n              at <span className=\\\"font-medium\\\">{selectedTime}</span>.\\n            </>\\n          ) : (\\n            <>Select a date and time for your meeting.</>\\n          )}\\n        </div>\\n        <Button\\n          disabled={!date || !selectedTime}\\n          className=\\\"w-full md:ml-auto md:w-auto\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          Continue\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-21.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-21\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Custom days and formatters\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-21.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function Calendar21() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 5, 17),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={range?.from}\\n      selected={range}\\n      onSelect={setRange}\\n      numberOfMonths={1}\\n      captionLayout=\\\"dropdown\\\"\\n      className=\\\"rounded-lg border shadow-sm [--cell-size:2.75rem] md:[--cell-size:3rem]\\\"\\n      formatters={{\\n        formatMonthDropdown: (date) => {\\n          return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n        },\\n      }}\\n      components={{\\n        DayButton: ({ children, modifiers, day, ...props }) => {\\n          const isWeekend = day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n          return (\\n            <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n              {children}\\n              {!modifiers.outside && <span>{isWeekend ? \\\"$220\\\" : \\\"$100\\\"}</span>}\\n            </CalendarDayButton>\\n          )\\n        },\\n      }}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-22.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-22\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-22.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function Calendar22() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Date of birth\\n      </Label>\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"date\\\"\\n            className=\\\"w-48 justify-between font-normal\\\"\\n          >\\n            {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(date) => {\\n              setDate(date)\\n              setOpen(false)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-23.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-23\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date range picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-23.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function Calendar23() {\\n  const [range, setRange] = React.useState<DateRange | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"dates\\\" className=\\\"px-1\\\">\\n        Select your stay\\n      </Label>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"dates\\\"\\n            className=\\\"w-56 justify-between font-normal\\\"\\n          >\\n            {range?.from && range?.to\\n              ? `${range.from.toLocaleDateString()} - ${range.to.toLocaleDateString()}`\\n              : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            selected={range}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(range) => {\\n              setRange(range)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-24.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-24\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date and Time picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-24.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function Calendar24() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex gap-4\\\">\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n          Date\\n        </Label>\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date\\\"\\n              className=\\\"w-32 justify-between font-normal\\\"\\n            >\\n              {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n              <ChevronDownIcon />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              onSelect={(date) => {\\n                setDate(date)\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"time\\\" className=\\\"px-1\\\">\\n          Time\\n        </Label>\\n        <Input\\n          type=\\\"time\\\"\\n          id=\\\"time\\\"\\n          step=\\\"1\\\"\\n          defaultValue=\\\"10:30:00\\\"\\n          className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-25.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-25\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date and Time range picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-25.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function Calendar25() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-6\\\">\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n          Date\\n        </Label>\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date\\\"\\n              className=\\\"w-full justify-between font-normal\\\"\\n            >\\n              {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n              <ChevronDownIcon />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              onSelect={(date) => {\\n                setDate(date)\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"px-1\\\">\\n            From\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-from\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"px-1\\\">\\n            To\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-to\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-26.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-26\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date range picker with time\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-26.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function Calendar26() {\\n  const [openFrom, setOpenFrom] = React.useState(false)\\n  const [openTo, setOpenTo] = React.useState(false)\\n  const [dateFrom, setDateFrom] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-01\\\")\\n  )\\n  const [dateTo, setDateTo] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-03\\\")\\n  )\\n\\n  return (\\n    <div className=\\\"flex w-full max-w-64 min-w-0 flex-col gap-6\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-1 flex-col gap-3\\\">\\n          <Label htmlFor=\\\"date-from\\\" className=\\\"px-1\\\">\\n            Check-in\\n          </Label>\\n          <Popover open={openFrom} onOpenChange={setOpenFrom}>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-from\\\"\\n                className=\\\"w-full justify-between font-normal\\\"\\n              >\\n                {dateFrom\\n                  ? dateFrom.toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"2-digit\\\",\\n                      month: \\\"short\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  : \\\"Select date\\\"}\\n                <ChevronDownIcon />\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent\\n              className=\\\"w-auto overflow-hidden p-0\\\"\\n              align=\\\"start\\\"\\n            >\\n              <Calendar\\n                mode=\\\"single\\\"\\n                selected={dateFrom}\\n                captionLayout=\\\"dropdown\\\"\\n                onSelect={(date) => {\\n                  setDateFrom(date)\\n                  setOpenFrom(false)\\n                }}\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"invisible px-1\\\">\\n            From\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-from\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-1 flex-col gap-3\\\">\\n          <Label htmlFor=\\\"date-to\\\" className=\\\"px-1\\\">\\n            Check-out\\n          </Label>\\n          <Popover open={openTo} onOpenChange={setOpenTo}>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-to\\\"\\n                className=\\\"w-full justify-between font-normal\\\"\\n              >\\n                {dateTo\\n                  ? dateTo.toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"2-digit\\\",\\n                      month: \\\"short\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  : \\\"Select date\\\"}\\n                <ChevronDownIcon />\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent\\n              className=\\\"w-auto overflow-hidden p-0\\\"\\n              align=\\\"start\\\"\\n            >\\n              <Calendar\\n                mode=\\\"single\\\"\\n                selected={dateTo}\\n                captionLayout=\\\"dropdown\\\"\\n                onSelect={(date) => {\\n                  setDateTo(date)\\n                  setOpenTo(false)\\n                }}\\n                disabled={dateFrom && { before: dateFrom }}\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"invisible px-1\\\">\\n            To\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-to\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-27.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-27\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Chart filter\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"chart\",\n    \"card\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-27.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { DateRange } from \\\"react-day-picker\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nconst chartData = [\\n  { date: \\\"2025-06-01\\\", visitors: 178 },\\n  { date: \\\"2025-06-02\\\", visitors: 470 },\\n  { date: \\\"2025-06-03\\\", visitors: 103 },\\n  { date: \\\"2025-06-04\\\", visitors: 439 },\\n  { date: \\\"2025-06-05\\\", visitors: 88 },\\n  { date: \\\"2025-06-06\\\", visitors: 294 },\\n  { date: \\\"2025-06-07\\\", visitors: 323 },\\n  { date: \\\"2025-06-08\\\", visitors: 385 },\\n  { date: \\\"2025-06-09\\\", visitors: 438 },\\n  { date: \\\"2025-06-10\\\", visitors: 155 },\\n  { date: \\\"2025-06-11\\\", visitors: 92 },\\n  { date: \\\"2025-06-12\\\", visitors: 492 },\\n  { date: \\\"2025-06-13\\\", visitors: 81 },\\n  { date: \\\"2025-06-14\\\", visitors: 426 },\\n  { date: \\\"2025-06-15\\\", visitors: 307 },\\n  { date: \\\"2025-06-16\\\", visitors: 371 },\\n  { date: \\\"2025-06-17\\\", visitors: 475 },\\n  { date: \\\"2025-06-18\\\", visitors: 107 },\\n  { date: \\\"2025-06-19\\\", visitors: 341 },\\n  { date: \\\"2025-06-20\\\", visitors: 408 },\\n  { date: \\\"2025-06-21\\\", visitors: 169 },\\n  { date: \\\"2025-06-22\\\", visitors: 317 },\\n  { date: \\\"2025-06-23\\\", visitors: 480 },\\n  { date: \\\"2025-06-24\\\", visitors: 132 },\\n  { date: \\\"2025-06-25\\\", visitors: 141 },\\n  { date: \\\"2025-06-26\\\", visitors: 434 },\\n  { date: \\\"2025-06-27\\\", visitors: 448 },\\n  { date: \\\"2025-06-28\\\", visitors: 149 },\\n  { date: \\\"2025-06-29\\\", visitors: 103 },\\n  { date: \\\"2025-06-30\\\", visitors: 446 },\\n]\\n\\nconst total = chartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"hsl(var(--primary))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Calendar27() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 5),\\n    to: new Date(2025, 5, 20),\\n  })\\n  const filteredData = React.useMemo(() => {\\n    if (!range?.from && !range?.to) {\\n      return chartData\\n    }\\n\\n    return chartData.filter((item) => {\\n      const date = new Date(item.date)\\n      return date >= range.from! && date <= range.to!\\n    })\\n  }, [range])\\n\\n  return (\\n    <Card className=\\\"@container/card w-full max-w-xl\\\">\\n      <CardHeader className=\\\"@md/card:grid relative flex flex-col border-b\\\">\\n        <CardTitle>Web Analytics</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for this month.\\n        </CardDescription>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" className=\\\"absolute right-4 top-4\\\">\\n              <CalendarIcon />\\n              {range?.from && range?.to\\n                ? `${range.from.toLocaleDateString()} - ${range.to.toLocaleDateString()}`\\n                : \\\"June 2025\\\"}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"end\\\">\\n            <Calendar\\n              className=\\\"w-full\\\"\\n              mode=\\\"range\\\"\\n              defaultMonth={range?.from}\\n              selected={range}\\n              onSelect={setRange}\\n              disableNavigation\\n              startMonth={range?.from}\\n              fixedWeeks\\n              showOutsideDays\\n              disabled={{\\n                after: new Date(2025, 5, 31),\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <BarChart\\n            accessibilityLayer\\n            data={filteredData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={20}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Bar dataKey=\\\"visitors\\\" fill={`var(--color-visitors)`} radius={4} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"border-t pt-6\\\">\\n        <div className=\\\"text-sm\\\">\\n          You had{\\\" \\\"}\\n          <span className=\\\"font-semibold\\\">{total.toLocaleString()}</span>{\\\" \\\"}\\n          visitors for the month of June.\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-28.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-28\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Input with date picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-28.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nfunction formatDate(date: Date | undefined) {\\n  if (!date) {\\n    return \\\"\\\"\\n  }\\n\\n  return date.toLocaleDateString(\\\"en-US\\\", {\\n    day: \\\"2-digit\\\",\\n    month: \\\"long\\\",\\n    year: \\\"numeric\\\",\\n  })\\n}\\n\\nfunction isValidDate(date: Date | undefined) {\\n  if (!date) {\\n    return false\\n  }\\n  return !isNaN(date.getTime())\\n}\\n\\nexport default function Calendar28() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-01\\\")\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(date)\\n  const [value, setValue] = React.useState(formatDate(date))\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Subscription Date\\n      </Label>\\n      <div className=\\\"relative flex gap-2\\\">\\n        <Input\\n          id=\\\"date\\\"\\n          value={value}\\n          placeholder=\\\"June 01, 2025\\\"\\n          className=\\\"bg-background pr-10\\\"\\n          onChange={(e) => {\\n            const date = new Date(e.target.value)\\n            setValue(e.target.value)\\n            if (isValidDate(date)) {\\n              setDate(date)\\n              setMonth(date)\\n            }\\n          }}\\n          onKeyDown={(e) => {\\n            if (e.key === \\\"ArrowDown\\\") {\\n              e.preventDefault()\\n              setOpen(true)\\n            }\\n          }}\\n        />\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker\\\"\\n              variant=\\\"ghost\\\"\\n              size=\\\"icon\\\"\\n              className=\\\"absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2\\\"\\n            >\\n              <CalendarIcon className=\\\"size-3\\\" />\\n              <span className=\\\"sr-only\\\">Select date</span>\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent\\n            className=\\\"w-auto overflow-hidden p-0\\\"\\n            align=\\\"end\\\"\\n            alignOffset={-8}\\n            sideOffset={10}\\n          >\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              month={month}\\n              onMonthChange={setMonth}\\n              onSelect={(date) => {\\n                setDate(date)\\n                setValue(formatDate(date))\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-29.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-29\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Natural language date picker\",\n  \"dependencies\": [\n    \"chrono-node\"\n  ],\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-29.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { parseDate } from \\\"chrono-node\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nfunction formatDate(date: Date | undefined) {\\n  if (!date) {\\n    return \\\"\\\"\\n  }\\n\\n  return date.toLocaleDateString(\\\"en-US\\\", {\\n    day: \\\"2-digit\\\",\\n    month: \\\"long\\\",\\n    year: \\\"numeric\\\",\\n  })\\n}\\n\\nexport default function Calendar29() {\\n  const [open, setOpen] = React.useState(false)\\n  const [value, setValue] = React.useState(\\\"In 2 days\\\")\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    parseDate(value) || undefined\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(date)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Schedule Date\\n      </Label>\\n      <div className=\\\"relative flex gap-2\\\">\\n        <Input\\n          id=\\\"date\\\"\\n          value={value}\\n          placeholder=\\\"Tomorrow or next week\\\"\\n          className=\\\"bg-background pr-10\\\"\\n          onChange={(e) => {\\n            setValue(e.target.value)\\n            const date = parseDate(e.target.value)\\n            if (date) {\\n              setDate(date)\\n              setMonth(date)\\n            }\\n          }}\\n          onKeyDown={(e) => {\\n            if (e.key === \\\"ArrowDown\\\") {\\n              e.preventDefault()\\n              setOpen(true)\\n            }\\n          }}\\n        />\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker\\\"\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-1/2 right-2 size-6 -translate-y-1/2\\\"\\n            >\\n              <CalendarIcon className=\\\"size-3.5\\\" />\\n              <span className=\\\"sr-only\\\">Select date</span>\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"end\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              month={month}\\n              onMonthChange={setMonth}\\n              onSelect={(date) => {\\n                setDate(date)\\n                setValue(formatDate(date))\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"text-muted-foreground px-1 text-sm\\\">\\n        Your post will be published on{\\\" \\\"}\\n        <span className=\\\"font-medium\\\">{formatDate(date)}</span>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-30.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-30\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With little-date\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-30.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { formatDateRange } from \\\"little-date\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function Calendar30() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 4),\\n    to: new Date(2025, 5, 10),\\n  })\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"dates\\\" className=\\\"px-1\\\">\\n        Select your stay\\n      </Label>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"dates\\\"\\n            className=\\\"w-56 justify-between font-normal\\\"\\n          >\\n            {range?.from && range?.to\\n              ? formatDateRange(range.from, range.to, {\\n                  includeTime: false,\\n                })\\n              : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            selected={range}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(range) => {\\n              setRange(range)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-31.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-31\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"With event slots\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-31.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { formatDateRange } from \\\"little-date\\\"\\nimport { PlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york/ui/card\\\"\\n\\nconst events = [\\n  {\\n    title: \\\"Team Sync Meeting\\\",\\n    from: \\\"2025-06-12T09:00:00\\\",\\n    to: \\\"2025-06-12T10:00:00\\\",\\n  },\\n  {\\n    title: \\\"Design Review\\\",\\n    from: \\\"2025-06-12T11:30:00\\\",\\n    to: \\\"2025-06-12T12:30:00\\\",\\n  },\\n  {\\n    title: \\\"Client Presentation\\\",\\n    from: \\\"2025-06-12T14:00:00\\\",\\n    to: \\\"2025-06-12T15:00:00\\\",\\n  },\\n]\\n\\nexport default function Calendar31() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n          required\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col items-start gap-3 border-t px-4 pb-0 pt-4\\\">\\n        <div className=\\\"flex w-full items-center justify-between px-1\\\">\\n          <div className=\\\"text-sm font-medium\\\">\\n            {date?.toLocaleDateString(\\\"en-US\\\", {\\n              day: \\\"numeric\\\",\\n              month: \\\"long\\\",\\n              year: \\\"numeric\\\",\\n            })}\\n          </div>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-6 w-6\\\"\\n            title=\\\"Add Event\\\"\\n          >\\n            <PlusIcon />\\n            <span className=\\\"sr-only\\\">Add Event</span>\\n          </Button>\\n        </div>\\n        <div className=\\\"flex w-full flex-col gap-2\\\">\\n          {events.map((event) => (\\n            <div\\n              key={event.title}\\n              className=\\\"bg-muted after:bg-primary/70 relative rounded-md p-2 pl-6 text-sm after:absolute after:inset-y-2 after:left-2 after:w-1 after:rounded-full\\\"\\n            >\\n              <div className=\\\"font-medium\\\">{event.title}</div>\\n              <div className=\\\"text-muted-foreground text-xs\\\">\\n                {formatDateRange(new Date(event.from), new Date(event.to))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-32.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-32\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Date picker in a drawer\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"button\",\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/calendar-32.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarPlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Drawer,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york/ui/drawer\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function Calendar32() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Date of birth\\n      </Label>\\n      <Drawer open={open} onOpenChange={setOpen}>\\n        <DrawerTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"date\\\"\\n            className=\\\"w-48 justify-between font-normal\\\"\\n          >\\n            {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n            <CalendarPlusIcon />\\n          </Button>\\n        </DrawerTrigger>\\n        <DrawerContent className=\\\"w-auto overflow-hidden p-0\\\">\\n          <DrawerHeader className=\\\"sr-only\\\">\\n            <DrawerTitle>Select date</DrawerTitle>\\n            <DrawerDescription>Set your date of birth</DrawerDescription>\\n          </DrawerHeader>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(date) => {\\n              setDate(date)\\n              setOpen(false)\\n            }}\\n            className=\\\"mx-auto [--cell-size:clamp(0px,calc(100vw/7.5),52px)]\\\"\\n          />\\n        </DrawerContent>\\n      </Drawer>\\n      <div className=\\\"text-muted-foreground px-1 text-sm\\\">\\n        This example works best on mobile.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/calendar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport default function CalendarDemo() {\\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-md border shadow\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"form\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/calendar-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nconst FormSchema = z.object({\\n  dob: z.date({\\n    required_error: \\\"A date of birth is required.\\\",\\n  }),\\n})\\n\\nexport default function CalendarForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"dob\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Date of birth</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant={\\\"outline\\\"}\\n                      className={cn(\\n                        \\\"w-[240px] pl-3 text-left font-normal\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value ? (\\n                        format(field.value, \\\"PPP\\\")\\n                      ) : (\\n                        <span>Pick a date</span>\\n                      )}\\n                      <CalendarIcon className=\\\"ml-auto h-4 w-4 opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n                  <Calendar\\n                    mode=\\\"single\\\"\\n                    selected={field.value}\\n                    onSelect={field.onChange}\\n                    disabled={(date) =>\\n                      date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n                    }\\n                    initialFocus\\n                  />\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                Your date of birth is used to calculate your age.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ChevronDownIcon,\\n  ChevronLeftIcon,\\n  ChevronRightIcon,\\n} from \\\"lucide-react\\\"\\nimport { DayButton, DayPicker, getDefaultClassNames } from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/new-york/ui/button\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(\\\"default\\\", { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"bg-popover absolute inset-0 opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"select-none font-medium\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-[--cell-size] select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-muted-foreground select-none text-[0.8rem]\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"bg-accent rounded-l-md\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\\"bg-accent rounded-r-md\\\", defaultClassNames.range_end),\\n        today: cn(\\n          \\\"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <ChevronLeftIcon className={cn(\\\"size-4\\\", className)} {...props} />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <ChevronRightIcon\\n                className={cn(\\\"size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <ChevronDownIcon className={cn(\\\"size-4\\\", className)} {...props} />\\n          )\\n        },\\n        DayButton: CalendarDayButton,\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-[--cell-size] items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  ...props\\n}: React.ComponentProps<typeof DayButton>) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString()}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"button\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/card-demo.tsx\",\n      \"content\": \"import { BellRing, Check } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { Switch } from \\\"@/registry/new-york/ui/switch\\\"\\n\\nconst notifications = [\\n  {\\n    title: \\\"Your call has been confirmed.\\\",\\n    description: \\\"1 hour ago\\\",\\n  },\\n  {\\n    title: \\\"You have a new message!\\\",\\n    description: \\\"1 hour ago\\\",\\n  },\\n  {\\n    title: \\\"Your subscription is expiring soon!\\\",\\n    description: \\\"2 hours ago\\\",\\n  },\\n]\\n\\ntype CardProps = React.ComponentProps<typeof Card>\\n\\nexport default function CardDemo({ className, ...props }: CardProps) {\\n  return (\\n    <Card className={cn(\\\"w-[380px]\\\", className)} {...props}>\\n      <CardHeader>\\n        <CardTitle>Notifications</CardTitle>\\n        <CardDescription>You have 3 unread messages.</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"grid gap-4\\\">\\n        <div className=\\\" flex items-center space-x-4 rounded-md border p-4\\\">\\n          <BellRing />\\n          <div className=\\\"flex-1 space-y-1\\\">\\n            <p className=\\\"text-sm font-medium leading-none\\\">\\n              Push Notifications\\n            </p>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Send notifications to device.\\n            </p>\\n          </div>\\n          <Switch />\\n        </div>\\n        <div>\\n          {notifications.map((notification, index) => (\\n            <div\\n              key={index}\\n              className=\\\"mb-4 grid grid-cols-[25px_1fr] items-start pb-4 last:mb-0 last:pb-0\\\"\\n            >\\n              <span className=\\\"flex h-2 w-2 translate-y-1 rounded-full bg-sky-500\\\" />\\n              <div className=\\\"space-y-1\\\">\\n                <p className=\\\"text-sm font-medium leading-none\\\">\\n                  {notification.title}\\n                </p>\\n                <p className=\\\"text-sm text-muted-foreground\\\">\\n                  {notification.description}\\n                </p>\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </CardContent>\\n      <CardFooter>\\n        <Button className=\\\"w-full\\\">\\n          <Check /> Mark all as read\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/card-with-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-with-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/card-with-form.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\n\\nexport default function CardWithForm() {\\n  return (\\n    <Card className=\\\"w-[350px]\\\">\\n      <CardHeader>\\n        <CardTitle>Create project</CardTitle>\\n        <CardDescription>Deploy your new project in one-click.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <div className=\\\"grid w-full items-center gap-4\\\">\\n            <div className=\\\"flex flex-col space-y-1.5\\\">\\n              <Label htmlFor=\\\"name\\\">Name</Label>\\n              <Input id=\\\"name\\\" placeholder=\\\"Name of your project\\\" />\\n            </div>\\n            <div className=\\\"flex flex-col space-y-1.5\\\">\\n              <Label htmlFor=\\\"framework\\\">Framework</Label>\\n              <Select>\\n                <SelectTrigger id=\\\"framework\\\">\\n                  <SelectValue placeholder=\\\"Select\\\" />\\n                </SelectTrigger>\\n                <SelectContent position=\\\"popper\\\">\\n                  <SelectItem value=\\\"next\\\">Next.js</SelectItem>\\n                  <SelectItem value=\\\"sveltekit\\\">SvelteKit</SelectItem>\\n                  <SelectItem value=\\\"astro\\\">Astro</SelectItem>\\n                  <SelectItem value=\\\"nuxt\\\">Nuxt.js</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </form>\\n      </CardContent>\\n      <CardFooter className=\\\"flex justify-between\\\">\\n        <Button variant=\\\"outline\\\">Cancel</Button>\\n        <Button>Deploy</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Card = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\n      \\\"rounded-xl border bg-card text-card-foreground shadow\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nCard.displayName = \\\"Card\\\"\\n\\nconst CardHeader = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"flex flex-col space-y-1.5 p-6\\\", className)}\\n    {...props}\\n  />\\n))\\nCardHeader.displayName = \\\"CardHeader\\\"\\n\\nconst CardTitle = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"font-semibold leading-none tracking-tight\\\", className)}\\n    {...props}\\n  />\\n))\\nCardTitle.displayName = \\\"CardTitle\\\"\\n\\nconst CardDescription = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nCardDescription.displayName = \\\"CardDescription\\\"\\n\\nconst CardContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div ref={ref} className={cn(\\\"p-6 pt-0\\\", className)} {...props} />\\n))\\nCardContent.displayName = \\\"CardContent\\\"\\n\\nconst CardFooter = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    className={cn(\\\"flex items-center p-6 pt-0\\\", className)}\\n    {...props}\\n  />\\n))\\nCardFooter.displayName = \\\"CardFooter\\\"\\n\\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/carousel-api.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-api\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-api.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n  type CarouselApi,\\n} from \\\"@/registry/new-york/ui/carousel\\\"\\n\\nexport default function CarouselDApiDemo() {\\n  const [api, setApi] = React.useState<CarouselApi>()\\n  const [current, setCurrent] = React.useState(0)\\n  const [count, setCount] = React.useState(0)\\n\\n  React.useEffect(() => {\\n    if (!api) {\\n      return\\n    }\\n\\n    setCount(api.scrollSnapList().length)\\n    setCurrent(api.selectedScrollSnap() + 1)\\n\\n    api.on(\\\"select\\\", () => {\\n      setCurrent(api.selectedScrollSnap() + 1)\\n    })\\n  }, [api])\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-xs\\\">\\n      <Carousel setApi={setApi} className=\\\"w-full max-w-xs\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious />\\n        <CarouselNext />\\n      </Carousel>\\n      <div className=\\\"py-2 text-center text-sm text-muted-foreground\\\">\\n        Slide {current} of {count}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/carousel-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york/ui/carousel\\\"\\n\\nexport default function CarouselDemo() {\\n  return (\\n    <Carousel className=\\\"w-full max-w-xs\\\">\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index}>\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/carousel-orientation.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-orientation\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-orientation.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york/ui/carousel\\\"\\n\\nexport default function CarouselOrientation() {\\n  return (\\n    <Carousel\\n      opts={{\\n        align: \\\"start\\\",\\n      }}\\n      orientation=\\\"vertical\\\"\\n      className=\\\"w-full max-w-xs\\\"\\n    >\\n      <CarouselContent className=\\\"-mt-1 h-[200px]\\\">\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"pt-1 md:basis-1/2\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex items-center justify-center p-6\\\">\\n                  <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/carousel-plugin.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-plugin\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-plugin.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Autoplay from \\\"embla-carousel-autoplay\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york/ui/carousel\\\"\\n\\nexport default function CarouselPlugin() {\\n  const plugin = React.useRef(\\n    Autoplay({ delay: 2000, stopOnInteraction: true })\\n  )\\n\\n  return (\\n    <Carousel\\n      plugins={[plugin.current]}\\n      className=\\\"w-full max-w-xs\\\"\\n      onMouseEnter={plugin.current.stop}\\n      onMouseLeave={plugin.current.reset}\\n    >\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index}>\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/carousel-size.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-size\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-size.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york/ui/carousel\\\"\\n\\nexport default function CarouselSize() {\\n  return (\\n    <Carousel\\n      opts={{\\n        align: \\\"start\\\",\\n      }}\\n      className=\\\"w-full max-w-sm\\\"\\n    >\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"md:basis-1/2 lg:basis-1/3\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/carousel-spacing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-spacing\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/carousel-spacing.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york/ui/carousel\\\"\\n\\nexport default function CarouselSpacing() {\\n  return (\\n    <Carousel className=\\\"w-full max-w-sm\\\">\\n      <CarouselContent className=\\\"-ml-1\\\">\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2 lg:basis-1/3\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\nimport { ArrowLeft, ArrowRight } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nconst Carousel = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement> & CarouselProps\\n>(\\n  (\\n    {\\n      orientation = \\\"horizontal\\\",\\n      opts,\\n      setApi,\\n      plugins,\\n      className,\\n      children,\\n      ...props\\n    },\\n    ref\\n  ) => {\\n    const [carouselRef, api] = useEmblaCarousel(\\n      {\\n        ...opts,\\n        axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n      },\\n      plugins\\n    )\\n    const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n    const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n    const onSelect = React.useCallback((api: CarouselApi) => {\\n      if (!api) {\\n        return\\n      }\\n\\n      setCanScrollPrev(api.canScrollPrev())\\n      setCanScrollNext(api.canScrollNext())\\n    }, [])\\n\\n    const scrollPrev = React.useCallback(() => {\\n      api?.scrollPrev()\\n    }, [api])\\n\\n    const scrollNext = React.useCallback(() => {\\n      api?.scrollNext()\\n    }, [api])\\n\\n    const handleKeyDown = React.useCallback(\\n      (event: React.KeyboardEvent<HTMLDivElement>) => {\\n        if (event.key === \\\"ArrowLeft\\\") {\\n          event.preventDefault()\\n          scrollPrev()\\n        } else if (event.key === \\\"ArrowRight\\\") {\\n          event.preventDefault()\\n          scrollNext()\\n        }\\n      },\\n      [scrollPrev, scrollNext]\\n    )\\n\\n    React.useEffect(() => {\\n      if (!api || !setApi) {\\n        return\\n      }\\n\\n      setApi(api)\\n    }, [api, setApi])\\n\\n    React.useEffect(() => {\\n      if (!api) {\\n        return\\n      }\\n\\n      onSelect(api)\\n      api.on(\\\"reInit\\\", onSelect)\\n      api.on(\\\"select\\\", onSelect)\\n\\n      return () => {\\n        api?.off(\\\"select\\\", onSelect)\\n      }\\n    }, [api, onSelect])\\n\\n    return (\\n      <CarouselContext.Provider\\n        value={{\\n          carouselRef,\\n          api: api,\\n          opts,\\n          orientation:\\n            orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n          scrollPrev,\\n          scrollNext,\\n          canScrollPrev,\\n          canScrollNext,\\n        }}\\n      >\\n        <div\\n          ref={ref}\\n          onKeyDownCapture={handleKeyDown}\\n          className={cn(\\\"relative\\\", className)}\\n          role=\\\"region\\\"\\n          aria-roledescription=\\\"carousel\\\"\\n          {...props}\\n        >\\n          {children}\\n        </div>\\n      </CarouselContext.Provider>\\n    )\\n  }\\n)\\nCarousel.displayName = \\\"Carousel\\\"\\n\\nconst CarouselContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div ref={carouselRef} className=\\\"overflow-hidden\\\">\\n      <div\\n        ref={ref}\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n})\\nCarouselContent.displayName = \\\"CarouselContent\\\"\\n\\nconst CarouselItem = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={ref}\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nCarouselItem.displayName = \\\"CarouselItem\\\"\\n\\nconst CarouselPrevious = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<typeof Button>\\n>(({ className, variant = \\\"outline\\\", size = \\\"icon\\\", ...props }, ref) => {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute  h-8 w-8 rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"-left-12 top-1/2 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <ArrowLeft className=\\\"h-4 w-4\\\" />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n})\\nCarouselPrevious.displayName = \\\"CarouselPrevious\\\"\\n\\nconst CarouselNext = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<typeof Button>\\n>(({ className, variant = \\\"outline\\\", size = \\\"icon\\\", ...props }, ref) => {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute h-8 w-8 rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"-right-12 top-1/2 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <ArrowRight className=\\\"h-4 w-4\\\" />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n})\\nCarouselNext.displayName = \\\"CarouselNext\\\"\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-axes.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-axes\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-axes.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Axes</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: -20,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <YAxis\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickCount={3}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-gradient.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-gradient\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-gradient.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Gradient</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-icons\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingDown, TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n    icon: TrendingDown,\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n    icon: TrendingUp,\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Icons</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-interactive\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"flex items-center gap-2 space-y-0 border-b py-5 sm:flex-row\\\">\\n        <div className=\\\"grid flex-1 gap-1 text-center sm:text-left\\\">\\n          <CardTitle>Area Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <Select value={timeRange} onValueChange={setTimeRange}>\\n          <SelectTrigger\\n            className=\\\"w-[160px] rounded-lg sm:ml-auto\\\"\\n            aria-label=\\\"Select a value\\\"\\n          >\\n            <SelectValue placeholder=\\\"Last 3 months\\\" />\\n          </SelectTrigger>\\n          <SelectContent className=\\\"rounded-xl\\\">\\n            <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n              Last 3 months\\n            </SelectItem>\\n            <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n              Last 30 days\\n            </SelectItem>\\n            <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n              Last 7 days\\n            </SelectItem>\\n          </SelectContent>\\n        </Select>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-legend\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Legend</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-linear.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-linear\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-linear.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Linear</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dot\\\" hideLabel />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"linear\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-stacked-expand.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-stacked-expand\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-stacked-expand.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80, other: 45 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200, other: 100 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120, other: 150 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190, other: 50 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130, other: 100 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140, other: 160 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Stacked Expanded</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n              top: 12,\\n            }}\\n            stackOffset=\\\"expand\\\"\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"other\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-other)\\\"\\n              fillOpacity={0.1}\\n              stroke=\\\"var(--color-other)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-stacked\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Stacked</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-area-step.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-step\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-area-step.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Activity, TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n    icon: Activity,\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Step</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"step\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-active.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-active\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-active.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, Rectangle, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 187, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 275, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Active</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"browser\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) =>\\n                chartConfig[value as keyof typeof chartConfig]?.label\\n              }\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar\\n              dataKey=\\\"visitors\\\"\\n              strokeWidth={2}\\n              radius={8}\\n              activeIndex={2}\\n              activeBar={({ ...props }) => {\\n                return (\\n                  <Rectangle\\n                    {...props}\\n                    fillOpacity={0.8}\\n                    stroke={props.payload.fill}\\n                    strokeDasharray={4}\\n                    strokeDashoffset={4}\\n                  />\\n                )\\n              }}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={8} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-demo-axis.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-axis\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo-axis.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/new-york/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-demo-grid.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-grid\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo-grid.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid } from \\\"recharts\\\"\\n\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/new-york/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-demo-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-legend\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <ChartTooltip content={<ChartTooltipContent />} />\\n        <ChartLegend content={<ChartLegendContent />} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-demo-tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-tooltip\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo-tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <ChartTooltip content={<ChartTooltipContent />} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-bar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart } from \\\"recharts\\\"\\n\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/new-york/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-horizontal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-horizontal\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-horizontal.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Horizontal</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              left: -20,\\n            }}\\n          >\\n            <XAxis type=\\\"number\\\" dataKey=\\\"desktop\\\" hide />\\n            <YAxis\\n              dataKey=\\\"month\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={5} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-interactive\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  views: {\\n    label: \\\"Page Views\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const [activeChart, setActiveChart] =\\n    React.useState<keyof typeof chartConfig>(\\\"desktop\\\")\\n\\n  const total = React.useMemo(\\n    () => ({\\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\\n    }),\\n    []\\n  )\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"flex flex-col items-stretch space-y-0 border-b p-0 sm:flex-row\\\">\\n        <div className=\\\"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6\\\">\\n          <CardTitle>Bar Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <div className=\\\"flex\\\">\\n          {[\\\"desktop\\\", \\\"mobile\\\"].map((key) => {\\n            const chart = key as keyof typeof chartConfig\\n            return (\\n              <button\\n                key={chart}\\n                data-active={activeChart === chart}\\n                className=\\\"relative z-30 flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-l sm:border-t-0 sm:px-8 sm:py-6\\\"\\n                onClick={() => setActiveChart(chart)}\\n              >\\n                <span className=\\\"text-xs text-muted-foreground\\\">\\n                  {chartConfig[chart].label}\\n                </span>\\n                <span className=\\\"text-lg font-bold leading-none sm:text-3xl\\\">\\n                  {total[key as keyof typeof total].toLocaleString()}\\n                </span>\\n              </button>\\n            )\\n          })}\\n        </div>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 sm:p-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"views\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Bar dataKey={activeChart} fill={`var(--color-${activeChart})`} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, LabelList, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  label: {\\n    color: \\\"hsl(var(--background))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              right: 16,\\n            }}\\n          >\\n            <CartesianGrid horizontal={false} />\\n            <YAxis\\n              dataKey=\\\"month\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n              hide\\n            />\\n            <XAxis dataKey=\\\"desktop\\\" type=\\\"number\\\" hide />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Bar\\n              dataKey=\\\"desktop\\\"\\n              layout=\\\"vertical\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              radius={4}\\n            >\\n              <LabelList\\n                dataKey=\\\"month\\\"\\n                position=\\\"insideLeft\\\"\\n                offset={8}\\n                className=\\\"fill-[--color-label]\\\"\\n                fontSize={12}\\n              />\\n              <LabelList\\n                dataKey=\\\"desktop\\\"\\n                position=\\\"right\\\"\\n                offset={8}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-label\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, LabelList, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 20,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={8}>\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-mixed.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-mixed\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-mixed.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Mixed</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              left: 0,\\n            }}\\n          >\\n            <YAxis\\n              dataKey=\\\"browser\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) =>\\n                chartConfig[value as keyof typeof chartConfig]?.label\\n              }\\n            />\\n            <XAxis dataKey=\\\"visitors\\\" type=\\\"number\\\" hide />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"visitors\\\" layout=\\\"vertical\\\" radius={5} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-multiple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Multiple</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n            <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-negative.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-negative\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-negative.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, Cell, LabelList } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", visitors: 186 },\\n  { month: \\\"February\\\", visitors: 205 },\\n  { month: \\\"March\\\", visitors: -207 },\\n  { month: \\\"April\\\", visitors: 173 },\\n  { month: \\\"May\\\", visitors: -209 },\\n  { month: \\\"June\\\", visitors: 214 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Negative</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel hideIndicator />}\\n            />\\n            <Bar dataKey=\\\"visitors\\\">\\n              <LabelList position=\\\"top\\\" dataKey=\\\"month\\\" fillOpacity={1} />\\n              {chartData.map((item) => (\\n                <Cell\\n                  key={item.month}\\n                  fill={\\n                    item.visitors > 0\\n                      ? \\\"hsl(var(--chart-1))\\\"\\n                      : \\\"hsl(var(--chart-2))\\\"\\n                  }\\n                />\\n              ))}\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-bar-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-stacked\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-bar-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Stacked + Legend</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip content={<ChartTooltipContent hideLabel />} />\\n            <ChartLegend content={<ChartLegendContent />} />\\n            <Bar\\n              dataKey=\\\"desktop\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"mobile\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-dots-colors.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots-colors\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-dots-colors.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Dot, Line, LineChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Dots Colors</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 24,\\n              left: 24,\\n              right: 24,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  indicator=\\\"line\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  hideLabel\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey=\\\"visitors\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-visitors)\\\"\\n              strokeWidth={2}\\n              dot={({ payload, ...props }) => {\\n                return (\\n                  <Dot\\n                    key={payload.browser}\\n                    r={5}\\n                    cx={props.cx}\\n                    cy={props.cy}\\n                    fill={payload.fill}\\n                    stroke={payload.fill}\\n                  />\\n                )\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-dots-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-dots-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { GitCommitVertical, TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Custom Dots</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={({ cx, cy, payload }) => {\\n                const r = 24\\n                return (\\n                  <GitCommitVertical\\n                    key={payload.month}\\n                    x={cx - r / 2}\\n                    y={cy - r / 2}\\n                    width={r}\\n                    height={r}\\n                    fill=\\\"hsl(var(--background))\\\"\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                  />\\n                )\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-dots.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-dots.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Dots</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-desktop)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-interactive\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  views: {\\n    label: \\\"Page Views\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const [activeChart, setActiveChart] =\\n    React.useState<keyof typeof chartConfig>(\\\"desktop\\\")\\n\\n  const total = React.useMemo(\\n    () => ({\\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\\n    }),\\n    []\\n  )\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"flex flex-col items-stretch space-y-0 border-b p-0 sm:flex-row\\\">\\n        <div className=\\\"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6\\\">\\n          <CardTitle>Line Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <div className=\\\"flex\\\">\\n          {[\\\"desktop\\\", \\\"mobile\\\"].map((key) => {\\n            const chart = key as keyof typeof chartConfig\\n            return (\\n              <button\\n                key={chart}\\n                data-active={activeChart === chart}\\n                className=\\\"flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-l sm:border-t-0 sm:px-8 sm:py-6\\\"\\n                onClick={() => setActiveChart(chart)}\\n              >\\n                <span className=\\\"text-xs text-muted-foreground\\\">\\n                  {chartConfig[chart].label}\\n                </span>\\n                <span className=\\\"text-lg font-bold leading-none sm:text-3xl\\\">\\n                  {total[key as keyof typeof total].toLocaleString()}\\n                </span>\\n              </button>\\n            )\\n          })}\\n        </div>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 sm:p-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"views\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey={activeChart}\\n              type=\\\"monotone\\\"\\n              stroke={`var(--color-${activeChart})`}\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, LabelList, Line, LineChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 24,\\n              left: 24,\\n              right: 24,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  indicator=\\\"line\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  hideLabel\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey=\\\"visitors\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-visitors)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-visitors)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            >\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n                dataKey=\\\"browser\\\"\\n                formatter={(value: keyof typeof chartConfig) =>\\n                  chartConfig[value]?.label\\n                }\\n              />\\n            </Line>\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-label\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, LabelList, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 20,\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-desktop)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            >\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Line>\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-linear.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-linear\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-linear.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Linear</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"linear\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-multiple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Multiple</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"monotone\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n            <Line\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"monotone\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              Showing total visitors for the last 6 months\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-line-step.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-step\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-line-step.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Step</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"step\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-donut-active.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut-active\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-donut-active.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart, Sector } from \\\"recharts\\\"\\nimport { PieSectorDataItem } from \\\"recharts/types/polar/Pie\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut Active</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n              activeIndex={0}\\n              activeShape={({\\n                outerRadius = 0,\\n                ...props\\n              }: PieSectorDataItem) => (\\n                <Sector {...props} outerRadius={outerRadius + 10} />\\n              )}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-donut-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut-text\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-donut-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const totalVisitors = React.useMemo(() => {\\n    return chartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n            >\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-3xl font-bold\\\"\\n                        >\\n                          {totalVisitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-donut.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-donut.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-interactive\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label, Pie, PieChart, Sector } from \\\"recharts\\\"\\nimport { PieSectorDataItem } from \\\"recharts/types/polar/Pie\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartStyle,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\nconst desktopData = [\\n  { month: \\\"january\\\", desktop: 186, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", desktop: 305, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", desktop: 237, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", desktop: 173, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", desktop: 209, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n  },\\n  january: {\\n    label: \\\"January\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  february: {\\n    label: \\\"February\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  march: {\\n    label: \\\"March\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  april: {\\n    label: \\\"April\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  may: {\\n    label: \\\"May\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const id = \\\"pie-interactive\\\"\\n  const [activeMonth, setActiveMonth] = React.useState(desktopData[0].month)\\n\\n  const activeIndex = React.useMemo(\\n    () => desktopData.findIndex((item) => item.month === activeMonth),\\n    [activeMonth]\\n  )\\n  const months = React.useMemo(() => desktopData.map((item) => item.month), [])\\n\\n  return (\\n    <Card data-chart={id} className=\\\"flex flex-col\\\">\\n      <ChartStyle id={id} config={chartConfig} />\\n      <CardHeader className=\\\"flex-row items-start space-y-0 pb-0\\\">\\n        <div className=\\\"grid gap-1\\\">\\n          <CardTitle>Pie Chart - Interactive</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </div>\\n        <Select value={activeMonth} onValueChange={setActiveMonth}>\\n          <SelectTrigger\\n            className=\\\"ml-auto h-7 w-[130px] rounded-lg pl-2.5\\\"\\n            aria-label=\\\"Select a value\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select month\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"end\\\" className=\\\"rounded-xl\\\">\\n            {months.map((key) => {\\n              const config = chartConfig[key as keyof typeof chartConfig]\\n\\n              if (!config) {\\n                return null\\n              }\\n\\n              return (\\n                <SelectItem\\n                  key={key}\\n                  value={key}\\n                  className=\\\"rounded-lg [&_span]:flex\\\"\\n                >\\n                  <div className=\\\"flex items-center gap-2 text-xs\\\">\\n                    <span\\n                      className=\\\"flex h-3 w-3 shrink-0 rounded-sm\\\"\\n                      style={{\\n                        backgroundColor: `var(--color-${key})`,\\n                      }}\\n                    />\\n                    {config?.label}\\n                  </div>\\n                </SelectItem>\\n              )\\n            })}\\n          </SelectContent>\\n        </Select>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-1 justify-center pb-0\\\">\\n        <ChartContainer\\n          id={id}\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square w-full max-w-[300px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={desktopData}\\n              dataKey=\\\"desktop\\\"\\n              nameKey=\\\"month\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n              activeIndex={activeIndex}\\n              activeShape={({\\n                outerRadius = 0,\\n                ...props\\n              }: PieSectorDataItem) => (\\n                <g>\\n                  <Sector {...props} outerRadius={outerRadius + 10} />\\n                  <Sector\\n                    {...props}\\n                    outerRadius={outerRadius + 25}\\n                    innerRadius={outerRadius + 12}\\n                  />\\n                </g>\\n              )}\\n            >\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-3xl font-bold\\\"\\n                        >\\n                          {desktopData[activeIndex].desktop.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] px-0\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={<ChartTooltipContent nameKey=\\\"visitors\\\" hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              labelLine={false}\\n              label={({ payload, ...props }) => {\\n                return (\\n                  <text\\n                    cx={props.cx}\\n                    cy={props.cy}\\n                    x={props.x}\\n                    y={props.y}\\n                    textAnchor={props.textAnchor}\\n                    dominantBaseline={props.dominantBaseline}\\n                    fill=\\\"hsla(var(--foreground))\\\"\\n                  >\\n                    {payload.visitors}\\n                  </text>\\n                )\\n              }}\\n              nameKey=\\\"browser\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-label-list.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label-list\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-label-list.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { LabelList, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Label List</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] [&_.recharts-text]:fill-background\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={<ChartTooltipContent nameKey=\\\"visitors\\\" hideLabel />}\\n            />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\">\\n              <LabelList\\n                dataKey=\\\"browser\\\"\\n                className=\\\"fill-background\\\"\\n                stroke=\\\"none\\\"\\n                fontSize={12}\\n                formatter={(value: keyof typeof chartConfig) =>\\n                  chartConfig[value]?.label\\n                }\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] pb-0 [&_.recharts-pie-label-text]:fill-foreground\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip content={<ChartTooltipContent hideLabel />} />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" label nameKey=\\\"browser\\\" />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-legend\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Legend</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[300px]\\\"\\n        >\\n          <PieChart>\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" />\\n            <ChartLegend\\n              content={<ChartLegendContent nameKey=\\\"browser\\\" />}\\n              className=\\\"-translate-y-2 flex-wrap gap-2 [&>*]:basis-1/4 [&>*]:justify-center\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-separator-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-separator-none\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-separator-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Separator None</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              stroke=\\\"0\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-simple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" nameKey=\\\"browser\\\" />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-pie-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-stacked\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-pie-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst desktopData = [\\n  { month: \\\"january\\\", desktop: 186, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", desktop: 305, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", desktop: 237, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", desktop: 173, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", desktop: 209, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst mobileData = [\\n  { month: \\\"january\\\", mobile: 80, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", mobile: 200, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", mobile: 120, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", mobile: 190, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", mobile: 130, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n  },\\n  january: {\\n    label: \\\"January\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  february: {\\n    label: \\\"February\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  march: {\\n    label: \\\"March\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  april: {\\n    label: \\\"April\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  may: {\\n    label: \\\"May\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Stacked</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  labelKey=\\\"visitors\\\"\\n                  nameKey=\\\"month\\\"\\n                  indicator=\\\"line\\\"\\n                  labelFormatter={(_, payload) => {\\n                    return chartConfig[\\n                      payload?.[0].dataKey as keyof typeof chartConfig\\n                    ].label\\n                  }}\\n                />\\n              }\\n            />\\n            <Pie data={desktopData} dataKey=\\\"desktop\\\" outerRadius={60} />\\n            <Pie\\n              data={mobileData}\\n              dataKey=\\\"mobile\\\"\\n              innerRadius={70}\\n              outerRadius={90}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-dots.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-dots\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-dots.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center\\\">\\n        <CardTitle>Radar Chart - Dots</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-grid-circle-fill.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle-fill\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-circle-fill.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 285 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 264 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle Filled</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarGrid\\n              className=\\\"fill-[--color-desktop] opacity-20\\\"\\n              gridType=\\\"circle\\\"\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.5}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-grid-circle-no-lines.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle-no-lines\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-circle-no-lines.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle - No lines</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" radialLines={false} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-grid-circle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-circle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-grid-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Custom</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid radialLines={false} polarRadius={[90]} strokeWidth={1} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-grid-fill.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-fill\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-fill.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 285 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 264 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Filled</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid className=\\\"fill-[--color-desktop] opacity-20\\\" />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.5}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-grid-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-none\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-grid-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid None</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-icons\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowDownFromLine, ArrowUpFromLine, TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n    icon: ArrowDownFromLine,\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n    icon: ArrowUpFromLine,\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Icons</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: -40,\\n              bottom: -10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <ChartLegend className=\\\"mt-8\\\" content={<ChartLegendContent />} />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 pt-4 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Custom Label</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: 10,\\n              right: 10,\\n              bottom: 10,\\n              left: 10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis\\n              dataKey=\\\"month\\\"\\n              tick={({ x, y, textAnchor, value, index, ...props }) => {\\n                const data = chartData[index]\\n\\n                return (\\n                  <text\\n                    x={x}\\n                    y={index === 0 ? y - 10 : y}\\n                    textAnchor={textAnchor}\\n                    fontSize={13}\\n                    fontWeight={500}\\n                    {...props}\\n                  >\\n                    <tspan>{data.desktop}</tspan>\\n                    <tspan className=\\\"fill-muted-foreground\\\">/</tspan>\\n                    <tspan>{data.mobile}</tspan>\\n                    <tspan\\n                      x={x}\\n                      dy={\\\"1rem\\\"}\\n                      fontSize={12}\\n                      className=\\\"fill-muted-foreground\\\"\\n                    >\\n                      {data.month}\\n                    </tspan>\\n                  </text>\\n                )\\n              }}\\n            />\\n\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-legend\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Legend</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: -40,\\n              bottom: -10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <ChartLegend className=\\\"mt-8\\\" content={<ChartLegendContent />} />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 pt-4 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-lines-only.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-lines-only\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-lines-only.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 160 },\\n  { month: \\\"February\\\", desktop: 185, mobile: 170 },\\n  { month: \\\"March\\\", desktop: 207, mobile: 180 },\\n  { month: \\\"April\\\", desktop: 173, mobile: 160 },\\n  { month: \\\"May\\\", desktop: 160, mobile: 190 },\\n  { month: \\\"June\\\", desktop: 174, mobile: 204 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Lines Only</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid radialLines={false} />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n            />\\n            <Radar\\n              dataKey=\\\"mobile\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              strokeWidth={2}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-multiple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Multiple</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radar-radius.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-radius\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radar-radius.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Radius Axis</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent indicator=\\\"line\\\" labelKey=\\\"month\\\" />\\n              }\\n            />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <PolarRadiusAxis\\n              angle={60}\\n              stroke=\\\"hsla(var(--foreground))\\\"\\n              orientation=\\\"middle\\\"\\n              axisLine={false}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radial-grid.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-grid\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-grid.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarGrid, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Grid</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart data={chartData} innerRadius={30} outerRadius={100}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" />\\n            <RadialBar dataKey=\\\"visitors\\\" />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radial-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-label\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { LabelList, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            startAngle={-90}\\n            endAngle={380}\\n            innerRadius={30}\\n            outerRadius={110}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background>\\n              <LabelList\\n                position=\\\"insideStart\\\"\\n                dataKey=\\\"browser\\\"\\n                className=\\\"fill-white capitalize mix-blend-luminosity\\\"\\n                fontSize={11}\\n              />\\n            </RadialBar>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radial-shape.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-shape\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-shape.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  Label,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  RadialBar,\\n  RadialBarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Shape</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            endAngle={100}\\n            innerRadius={80}\\n            outerRadius={140}\\n          >\\n            <PolarGrid\\n              gridType=\\\"circle\\\"\\n              radialLines={false}\\n              stroke=\\\"none\\\"\\n              className=\\\"first:fill-muted last:fill-background\\\"\\n              polarRadius={[86, 74]}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-4xl font-bold\\\"\\n                        >\\n                          {chartData[0].visitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radial-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-simple\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"hsl(var(--chart-3))\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"hsl(var(--chart-4))\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"hsl(var(--chart-5))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart data={chartData} innerRadius={30} outerRadius={110}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radial-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-stacked\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, PolarRadiusAxis, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [{ month: \\\"january\\\", desktop: 1260, mobile: 570 }]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  const totalVisitors = chartData[0].desktop + chartData[0].mobile\\n\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Stacked</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-1 items-center pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square w-full max-w-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            endAngle={180}\\n            innerRadius={80}\\n            outerRadius={130}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text x={viewBox.cx} y={viewBox.cy} textAnchor=\\\"middle\\\">\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) - 16}\\n                          className=\\\"fill-foreground text-2xl font-bold\\\"\\n                        >\\n                          {totalVisitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 4}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n            <RadialBar\\n              dataKey=\\\"desktop\\\"\\n              stackId=\\\"a\\\"\\n              cornerRadius={5}\\n              fill=\\\"var(--color-desktop)\\\"\\n              className=\\\"stroke-transparent stroke-2\\\"\\n            />\\n            <RadialBar\\n              dataKey=\\\"mobile\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n              cornerRadius={5}\\n              className=\\\"stroke-transparent stroke-2\\\"\\n            />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-radial-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-text\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-radial-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  Label,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  RadialBar,\\n  RadialBarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { ChartConfig, ChartContainer } from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Text</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            startAngle={0}\\n            endAngle={250}\\n            innerRadius={80}\\n            outerRadius={110}\\n          >\\n            <PolarGrid\\n              gridType=\\\"circle\\\"\\n              radialLines={false}\\n              stroke=\\\"none\\\"\\n              className=\\\"first:fill-muted last:fill-background\\\"\\n              polarRadius={[86, 74]}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background cornerRadius={10} />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-4xl font-bold\\\"\\n                        >\\n                          {chartData[0].visitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 font-medium leading-none\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-advanced.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-advanced\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-advanced.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Advanced</CardTitle>\\n        <CardDescription>\\n          Tooltip with custom formatter and total.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  hideLabel\\n                  className=\\\"w-[180px]\\\"\\n                  formatter={(value, name, item, index) => (\\n                    <>\\n                      <div\\n                        className=\\\"h-2.5 w-2.5 shrink-0 rounded-[2px] bg-[--color-bg]\\\"\\n                        style={\\n                          {\\n                            \\\"--color-bg\\\": `var(--color-${name})`,\\n                          } as React.CSSProperties\\n                        }\\n                      />\\n                      {chartConfig[name as keyof typeof chartConfig]?.label ||\\n                        name}\\n                      <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground\\\">\\n                        {value}\\n                        <span className=\\\"font-normal text-muted-foreground\\\">\\n                          kcal\\n                        </span>\\n                      </div>\\n                      {/* Add this after the last item */}\\n                      {index === 1 && (\\n                        <div className=\\\"mt-1.5 flex basis-full items-center border-t pt-1.5 text-xs font-medium text-foreground\\\">\\n                          Total\\n                          <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground\\\">\\n                            {item.payload.running + item.payload.swimming}\\n                            <span className=\\\"font-normal text-muted-foreground\\\">\\n                              kcal\\n                            </span>\\n                          </div>\\n                        </div>\\n                      )}\\n                    </>\\n                  )}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-default\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Default</CardTitle>\\n        <CardDescription>\\n          Default tooltip with ChartTooltipContent.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/chart-tooltip-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nexport default function Component() {\\n  return (\\n    <div className=\\\"grid aspect-video w-full max-w-md justify-center text-foreground md:grid-cols-2 [&>div]:relative [&>div]:flex [&>div]:h-[137px] [&>div]:w-[224px] [&>div]:items-center [&>div]:justify-center [&>div]:p-4\\\">\\n      <div>\\n        <div className=\\\"absolute left-[-35px] top-[45px] z-10 text-sm font-medium\\\">\\n          Label\\n        </div>\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          viewBox=\\\"0 0 193 40\\\"\\n          width=\\\"50\\\"\\n          height=\\\"12\\\"\\n          fill=\\\"none\\\"\\n          className=\\\"absolute left-[5px] top-[50px] z-10\\\"\\n        >\\n          <g clip-path=\\\"url(#a)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M173.928 21.13C115.811 44.938 58.751 45.773 0 26.141c4.227-4.386 7.82-2.715 10.567-1.88 21.133 5.64 42.9 6.266 64.457 7.101 31.066 1.253 60.441-5.848 89.183-17.335 1.268-.418 2.325-1.253 4.861-2.924-14.582-2.924-29.165 2.089-41.845-3.76.212-.835.212-1.879.423-2.714 9.51-.627 19.231-1.253 28.742-2.089 9.51-.835 18.808-1.88 28.318-2.506 6.974-.418 9.933 2.924 7.397 9.19-3.17 8.145-7.608 15.664-11.623 23.391-.423.836-1.057 1.88-1.902 2.298-2.325.835-4.65 1.044-7.186 1.67-.422-2.088-1.479-4.386-1.268-6.265.423-2.506 1.902-4.595 3.804-9.19Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"a\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h193v40H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n        <TooltipDemo\\n          label=\\\"Page Views\\\"\\n          payload={[\\n            { name: \\\"Desktop\\\", value: 186, fill: \\\"hsl(var(--chart-1))\\\" },\\n            { name: \\\"Mobile\\\", value: 80, fill: \\\"hsl(var(--chart-2))\\\" },\\n          ]}\\n          className=\\\"w-[8rem]\\\"\\n        />\\n      </div>\\n      <div className=\\\"items-end\\\">\\n        <div className=\\\"absolute left-[122px] top-[0px] z-10 text-sm font-medium\\\">\\n          Name\\n        </div>\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          width=\\\"35\\\"\\n          height=\\\"42\\\"\\n          fill=\\\"none\\\"\\n          viewBox=\\\"0 0 122 148\\\"\\n          className=\\\"absolute left-[85px] top-[10px] z-10 -scale-x-100\\\"\\n        >\\n          <g clip-path=\\\"url(#ab)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M0 2.65c6.15-4.024 12.299-2.753 17.812-.847a115.56 115.56 0 0 1 21.84 10.59C70.4 32.727 88.849 61.744 96.483 97.54c1.908 9.108 2.544 18.639 3.817 29.017 8.481-4.871 12.934-14.402 21.416-19.909 1.061 4.236-1.06 6.989-2.756 9.319-6.998 9.531-14.207 19.062-21.63 28.382-3.604 4.448-6.36 4.871-10.177 1.059-8.058-7.837-12.935-17.368-14.42-28.382 0-.424.636-1.059 1.485-2.118 9.118 2.33 6.997 13.979 14.843 18.215 3.393-14.614.848-28.593-2.969-42.149-4.029-14.19-9.33-27.746-17.812-39.82-8.27-11.86-18.66-21.392-30.11-30.287C26.93 11.758 14.207 6.039 0 2.65Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"ab\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h122v148H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n        <TooltipDemo\\n          label=\\\"Browser\\\"\\n          hideLabel\\n          payload={[\\n            { name: \\\"Chrome\\\", value: 1286, fill: \\\"hsl(var(--chart-3))\\\" },\\n            { name: \\\"Firefox\\\", value: 1000, fill: \\\"hsl(var(--chart-4))\\\" },\\n          ]}\\n          indicator=\\\"dashed\\\"\\n          className=\\\"w-[8rem]\\\"\\n        />\\n      </div>\\n      <div className=\\\"!hidden md:!flex\\\">\\n        <TooltipDemo\\n          label=\\\"Page Views\\\"\\n          payload={[\\n            { name: \\\"Desktop\\\", value: 12486, fill: \\\"hsl(var(--chart-3))\\\" },\\n          ]}\\n          className=\\\"w-[9rem]\\\"\\n          indicator=\\\"line\\\"\\n        />\\n      </div>\\n      <div className=\\\"!items-start !justify-start\\\">\\n        <div className=\\\"absolute left-[50px] top-[60px] z-10 text-sm font-medium\\\">\\n          Indicator\\n        </div>\\n        <TooltipDemo\\n          label=\\\"Browser\\\"\\n          hideLabel\\n          payload={[\\n            { name: \\\"Chrome\\\", value: 1286, fill: \\\"hsl(var(--chart-1))\\\" },\\n          ]}\\n          indicator=\\\"dot\\\"\\n          className=\\\"w-[8rem]\\\"\\n        />\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          width=\\\"15\\\"\\n          height=\\\"34\\\"\\n          fill=\\\"none\\\"\\n          viewBox=\\\"0 0 75 175\\\"\\n          className=\\\"absolute left-[30px] top-[38px] z-10 rotate-[-40deg]\\\"\\n        >\\n          <g clip-path=\\\"url(#abc)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M20.187 175c-4.439-2.109-7.186-2.531-8.032-4.008-3.17-5.484-6.763-10.968-8.454-17.084-5.073-16.242-4.439-32.694-1.057-49.146 5.707-28.053 18.388-52.942 34.24-76.565 1.692-2.531 3.171-5.063 4.862-7.805 0-.21-.211-.632-.634-1.265-4.65 1.265-9.511 2.53-14.161 3.585-2.537.422-5.496.422-8.032-.421-1.48-.422-3.593-2.742-3.593-4.219 0-1.898 1.48-4.218 2.747-5.906 1.057-1.054 2.96-1.265 4.65-1.687C35.406 7.315 48.088 3.729 60.98.776c10.99-2.53 14.584 1.055 13.95 11.812-.634 11.18-.846 22.358-1.268 33.326-.212 3.375-.846 6.96-1.268 10.757-8.878-4.007-8.878-4.007-12.048-38.177C47.03 33.259 38.153 49.289 29.91 65.741 21.667 82.193 16.17 99.49 13.212 117.84c-2.959 18.984.634 36.912 6.975 57.161Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"abc\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h75v175H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction TooltipDemo({\\n  indicator = \\\"dot\\\",\\n  label,\\n  payload,\\n  hideLabel,\\n  hideIndicator,\\n  className,\\n}: {\\n  label: string\\n  hideLabel?: boolean\\n  hideIndicator?: boolean\\n  indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n  payload: {\\n    name: string\\n    value: number\\n    fill: string\\n  }[]\\n  nameKey?: string\\n  labelKey?: string\\n} & React.ComponentProps<\\\"div\\\">) {\\n  const tooltipLabel = hideLabel ? null : (\\n    <div className=\\\"font-medium\\\">{label}</div>\\n  )\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl transition-all ease-in-out hover:-translate-y-0.5\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload.map((item, index) => {\\n          const indicatorColor = item.fill\\n\\n          return (\\n            <div\\n              key={index}\\n              className={cn(\\n                \\\"flex w-full items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                indicator === \\\"dot\\\" && \\\"items-center\\\"\\n              )}\\n            >\\n              <>\\n                {!hideIndicator && (\\n                  <div\\n                    className={cn(\\n                      \\\"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\\\",\\n                      {\\n                        \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                        \\\"w-1\\\": indicator === \\\"line\\\",\\n                        \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                          indicator === \\\"dashed\\\",\\n                        \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                      }\\n                    )}\\n                    style={\\n                      {\\n                        \\\"--color-bg\\\": indicatorColor,\\n                        \\\"--color-border\\\": indicatorColor,\\n                      } as React.CSSProperties\\n                    }\\n                  />\\n                )}\\n                <div\\n                  className={cn(\\n                    \\\"flex flex-1 justify-between leading-none\\\",\\n                    nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                  )}\\n                >\\n                  <div className=\\\"grid gap-1.5\\\">\\n                    {nestLabel ? tooltipLabel : null}\\n                    <span className=\\\"text-muted-foreground\\\">{item.name}</span>\\n                  </div>\\n                  <span className=\\\"font-mono font-medium tabular-nums text-foreground\\\">\\n                    {item.value.toLocaleString()}\\n                  </span>\\n                </div>\\n              </>\\n            </div>\\n          )\\n        })}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-formatter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-formatter\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-formatter.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Formatter</CardTitle>\\n        <CardDescription>Tooltip with custom formatter .</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  hideLabel\\n                  formatter={(value, name) => (\\n                    <div className=\\\"flex min-w-[130px] items-center text-xs text-muted-foreground\\\">\\n                      {chartConfig[name as keyof typeof chartConfig]?.label ||\\n                        name}\\n                      <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground\\\">\\n                        {value}\\n                        <span className=\\\"font-normal text-muted-foreground\\\">\\n                          kcal\\n                        </span>\\n                      </div>\\n                    </div>\\n                  )}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-icons\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Footprints, Waves } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n    icon: Footprints,\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n    icon: Waves,\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Icons</CardTitle>\\n        <CardDescription>Tooltip with icons.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideLabel />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-indicator-line.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-indicator-line\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-indicator-line.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Line Indicator</CardTitle>\\n        <CardDescription>Tooltip with line indicator.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-indicator-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-indicator-none\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-indicator-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - No Indicator</CardTitle>\\n        <CardDescription>Tooltip with no indicator.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideIndicator />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-custom\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  activities: {\\n    label: \\\"Activities\\\",\\n  },\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Custom label</CardTitle>\\n        <CardDescription>\\n          Tooltip with custom label from chartConfig.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent labelKey=\\\"activities\\\" indicator=\\\"line\\\" />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-label-formatter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-formatter\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-label-formatter.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Label Formatter</CardTitle>\\n        <CardDescription>Tooltip with label formatter.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"numeric\\\",\\n                      month: \\\"long\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart-tooltip-label-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-none\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"charts/chart-tooltip-label-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - No Label</CardTitle>\\n        <CardDescription>Tooltip with no label.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideIndicator hideLabel />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"recharts@2.15.4\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nconst ChartContainer = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & {\\n    config: ChartConfig\\n    children: React.ComponentProps<\\n      typeof RechartsPrimitive.ResponsiveContainer\\n    >[\\\"children\\\"]\\n  }\\n>(({ id, className, children, config, ...props }, ref) => {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-chart={chartId}\\n        ref={ref}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n})\\nChartContainer.displayName = \\\"Chart\\\"\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nconst ChartTooltipContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n    React.ComponentProps<\\\"div\\\"> & {\\n      hideLabel?: boolean\\n      hideIndicator?: boolean\\n      indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n      nameKey?: string\\n      labelKey?: string\\n    }\\n>(\\n  (\\n    {\\n      active,\\n      payload,\\n      className,\\n      indicator = \\\"dot\\\",\\n      hideLabel = false,\\n      hideIndicator = false,\\n      label,\\n      labelFormatter,\\n      labelClassName,\\n      formatter,\\n      color,\\n      nameKey,\\n      labelKey,\\n    },\\n    ref\\n  ) => {\\n    const { config } = useChart()\\n\\n    const tooltipLabel = React.useMemo(() => {\\n      if (hideLabel || !payload?.length) {\\n        return null\\n      }\\n\\n      const [item] = payload\\n      const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n      const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n      const value =\\n        !labelKey && typeof label === \\\"string\\\"\\n          ? config[label as keyof typeof config]?.label || label\\n          : itemConfig?.label\\n\\n      if (labelFormatter) {\\n        return (\\n          <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n            {labelFormatter(value, payload)}\\n          </div>\\n        )\\n      }\\n\\n      if (!value) {\\n        return null\\n      }\\n\\n      return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n    }, [\\n      label,\\n      labelFormatter,\\n      payload,\\n      hideLabel,\\n      labelClassName,\\n      config,\\n      labelKey,\\n    ])\\n\\n    if (!active || !payload?.length) {\\n      return null\\n    }\\n\\n    const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n    return (\\n      <div\\n        ref={ref}\\n        className={cn(\\n          \\\"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n          className\\n        )}\\n      >\\n        {!nestLabel ? tooltipLabel : null}\\n        <div className=\\\"grid gap-1.5\\\">\\n          {payload\\n            .filter((item) => item.type !== \\\"none\\\")\\n            .map((item, index) => {\\n              const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n              const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n              const indicatorColor = color || item.payload.fill || item.color\\n\\n              return (\\n                <div\\n                  key={item.dataKey}\\n                  className={cn(\\n                    \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                    indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                  )}\\n                >\\n                  {formatter && item?.value !== undefined && item.name ? (\\n                    formatter(item.value, item.name, item, index, item.payload)\\n                  ) : (\\n                    <>\\n                      {itemConfig?.icon ? (\\n                        <itemConfig.icon />\\n                      ) : (\\n                        !hideIndicator && (\\n                          <div\\n                            className={cn(\\n                              \\\"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\\\",\\n                              {\\n                                \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                                \\\"w-1\\\": indicator === \\\"line\\\",\\n                                \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                  indicator === \\\"dashed\\\",\\n                                \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                              }\\n                            )}\\n                            style={\\n                              {\\n                                \\\"--color-bg\\\": indicatorColor,\\n                                \\\"--color-border\\\": indicatorColor,\\n                              } as React.CSSProperties\\n                            }\\n                          />\\n                        )\\n                      )}\\n                      <div\\n                        className={cn(\\n                          \\\"flex flex-1 justify-between leading-none\\\",\\n                          nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                        )}\\n                      >\\n                        <div className=\\\"grid gap-1.5\\\">\\n                          {nestLabel ? tooltipLabel : null}\\n                          <span className=\\\"text-muted-foreground\\\">\\n                            {itemConfig?.label || item.name}\\n                          </span>\\n                        </div>\\n                        {item.value && (\\n                          <span className=\\\"font-mono font-medium tabular-nums text-foreground\\\">\\n                            {item.value.toLocaleString()}\\n                          </span>\\n                        )}\\n                      </div>\\n                    </>\\n                  )}\\n                </div>\\n              )\\n            })}\\n        </div>\\n      </div>\\n    )\\n  }\\n)\\nChartTooltipContent.displayName = \\\"ChartTooltip\\\"\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nconst ChartLegendContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> &\\n    Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n      hideIcon?: boolean\\n      nameKey?: string\\n    }\\n>(\\n  (\\n    { className, hideIcon = false, payload, verticalAlign = \\\"bottom\\\", nameKey },\\n    ref\\n  ) => {\\n    const { config } = useChart()\\n\\n    if (!payload?.length) {\\n      return null\\n    }\\n\\n    return (\\n      <div\\n        ref={ref}\\n        className={cn(\\n          \\\"flex items-center justify-center gap-4\\\",\\n          verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n          className\\n        )}\\n      >\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item) => {\\n            const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n            return (\\n              <div\\n                key={item.value}\\n                className={cn(\\n                  \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n                )}\\n              >\\n                {itemConfig?.icon && !hideIcon ? (\\n                  <itemConfig.icon />\\n                ) : (\\n                  <div\\n                    className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                    style={{\\n                      backgroundColor: item.color,\\n                    }}\\n                  />\\n                )}\\n                {itemConfig?.label}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    )\\n  }\\n)\\nChartLegendContent.displayName = \\\"ChartLegend\\\"\\n\\n// Helper to extract item config from a payload.\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/checkbox-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\n\\nexport default function CheckboxDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Checkbox id=\\\"terms\\\" />\\n      <label\\n        htmlFor=\\\"terms\\\"\\n        className=\\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n      >\\n        Accept terms and conditions\\n      </label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/checkbox-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-disabled.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\n\\nexport default function CheckboxDisabled() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Checkbox id=\\\"terms2\\\" disabled />\\n      <label\\n        htmlFor=\\\"terms2\\\"\\n        className=\\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n      >\\n        Accept terms and conditions\\n      </label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/checkbox-form-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-form-multiple\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-form-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\n\\nconst items = [\\n  {\\n    id: \\\"recents\\\",\\n    label: \\\"Recents\\\",\\n  },\\n  {\\n    id: \\\"home\\\",\\n    label: \\\"Home\\\",\\n  },\\n  {\\n    id: \\\"applications\\\",\\n    label: \\\"Applications\\\",\\n  },\\n  {\\n    id: \\\"desktop\\\",\\n    label: \\\"Desktop\\\",\\n  },\\n  {\\n    id: \\\"downloads\\\",\\n    label: \\\"Downloads\\\",\\n  },\\n  {\\n    id: \\\"documents\\\",\\n    label: \\\"Documents\\\",\\n  },\\n] as const\\n\\nconst FormSchema = z.object({\\n  items: z.array(z.string()).refine((value) => value.some((item) => item), {\\n    message: \\\"You have to select at least one item.\\\",\\n  }),\\n})\\n\\nexport default function CheckboxReactHookFormMultiple() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      items: [\\\"recents\\\", \\\"home\\\"],\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"items\\\"\\n          render={() => (\\n            <FormItem>\\n              <div className=\\\"mb-4\\\">\\n                <FormLabel className=\\\"text-base\\\">Sidebar</FormLabel>\\n                <FormDescription>\\n                  Select the items you want to display in the sidebar.\\n                </FormDescription>\\n              </div>\\n              {items.map((item) => (\\n                <FormField\\n                  key={item.id}\\n                  control={form.control}\\n                  name=\\\"items\\\"\\n                  render={({ field }) => {\\n                    return (\\n                      <FormItem\\n                        key={item.id}\\n                        className=\\\"flex flex-row items-start space-x-3 space-y-0\\\"\\n                      >\\n                        <FormControl>\\n                          <Checkbox\\n                            checked={field.value?.includes(item.id)}\\n                            onCheckedChange={(checked) => {\\n                              return checked\\n                                ? field.onChange([...field.value, item.id])\\n                                : field.onChange(\\n                                    field.value?.filter(\\n                                      (value) => value !== item.id\\n                                    )\\n                                  )\\n                            }}\\n                          />\\n                        </FormControl>\\n                        <FormLabel className=\\\"text-sm font-normal\\\">\\n                          {item.label}\\n                        </FormLabel>\\n                      </FormItem>\\n                    )\\n                  }}\\n                />\\n              ))}\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/checkbox-form-single.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-form-single\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-form-single.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport Link from \\\"next/link\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n} from \\\"@/registry/new-york/ui/form\\\"\\n\\nconst FormSchema = z.object({\\n  mobile: z.boolean().default(false).optional(),\\n})\\n\\nexport default function CheckboxReactHookFormSingle() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      mobile: true,\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"mobile\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-row items-start space-x-3 space-y-0 rounded-md border p-4 shadow\\\">\\n              <FormControl>\\n                <Checkbox\\n                  checked={field.value}\\n                  onCheckedChange={field.onChange}\\n                />\\n              </FormControl>\\n              <div className=\\\"space-y-1 leading-none\\\">\\n                <FormLabel>\\n                  Use different settings for my mobile devices\\n                </FormLabel>\\n                <FormDescription>\\n                  You can manage your mobile notifications in the{\\\" \\\"}\\n                  <Link href=\\\"/examples/forms\\\">mobile settings</Link> page.\\n                </FormDescription>\\n              </div>\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/checkbox-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-with-text\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/checkbox-with-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\n\\nexport default function CheckboxWithText() {\\n  return (\\n    <div className=\\\"items-top flex space-x-2\\\">\\n      <Checkbox id=\\\"terms1\\\" />\\n      <div className=\\\"grid gap-1.5 leading-none\\\">\\n        <label\\n          htmlFor=\\\"terms1\\\"\\n          className=\\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n        >\\n          Accept terms and conditions\\n        </label>\\n        <p className=\\\"text-sm text-muted-foreground\\\">\\n          You agree to our Terms of Service and Privacy Policy.\\n        </p>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as CheckboxPrimitive from \\\"@radix-ui/react-checkbox\\\"\\nimport { Check } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Checkbox = React.forwardRef<\\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\\n>(({ className, ...props }, ref) => (\\n  <CheckboxPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <CheckboxPrimitive.Indicator\\n      className={cn(\\\"grid place-content-center text-current\\\")}\\n    >\\n      <Check className=\\\"h-4 w-4\\\" />\\n    </CheckboxPrimitive.Indicator>\\n  </CheckboxPrimitive.Root>\\n))\\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/collapsible-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/collapsible-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\n\\nexport default function CollapsibleDemo() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Collapsible\\n      open={isOpen}\\n      onOpenChange={setIsOpen}\\n      className=\\\"w-[350px] space-y-2\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between space-x-4 px-4\\\">\\n        <h4 className=\\\"text-sm font-semibold\\\">\\n          @peduarte starred 3 repositories\\n        </h4>\\n        <CollapsibleTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            <ChevronsUpDown className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Toggle</span>\\n          </Button>\\n        </CollapsibleTrigger>\\n      </div>\\n      <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n        @radix-ui/primitives\\n      </div>\\n      <CollapsibleContent className=\\\"space-y-2\\\">\\n        <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n          @radix-ui/colors\\n        </div>\\n        <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n          @stitches/react\\n        </div>\\n      </CollapsibleContent>\\n    </Collapsible>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as CollapsiblePrimitive from \\\"@radix-ui/react-collapsible\\\"\\n\\nconst Collapsible = CollapsiblePrimitive.Root\\n\\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\\n\\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/combobox-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york/ui/command\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nconst frameworks = [\\n  {\\n    value: \\\"next.js\\\",\\n    label: \\\"Next.js\\\",\\n  },\\n  {\\n    value: \\\"sveltekit\\\",\\n    label: \\\"SvelteKit\\\",\\n  },\\n  {\\n    value: \\\"nuxt.js\\\",\\n    label: \\\"Nuxt.js\\\",\\n  },\\n  {\\n    value: \\\"remix\\\",\\n    label: \\\"Remix\\\",\\n  },\\n  {\\n    value: \\\"astro\\\",\\n    label: \\\"Astro\\\",\\n  },\\n]\\n\\nexport default function ComboboxDemo() {\\n  const [open, setOpen] = React.useState(false)\\n  const [value, setValue] = React.useState(\\\"\\\")\\n\\n  return (\\n    <Popover open={open} onOpenChange={setOpen}>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant=\\\"outline\\\"\\n          role=\\\"combobox\\\"\\n          aria-expanded={open}\\n          className=\\\"w-[200px] justify-between\\\"\\n        >\\n          {value\\n            ? frameworks.find((framework) => framework.value === value)?.label\\n            : \\\"Select framework...\\\"}\\n          <ChevronsUpDown className=\\\"opacity-50\\\" />\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-[200px] p-0\\\">\\n        <Command>\\n          <CommandInput placeholder=\\\"Search framework...\\\" className=\\\"h-9\\\" />\\n          <CommandList>\\n            <CommandEmpty>No framework found.</CommandEmpty>\\n            <CommandGroup>\\n              {frameworks.map((framework) => (\\n                <CommandItem\\n                  key={framework.value}\\n                  value={framework.value}\\n                  onSelect={(currentValue) => {\\n                    setValue(currentValue === value ? \\\"\\\" : currentValue)\\n                    setOpen(false)\\n                  }}\\n                >\\n                  {framework.label}\\n                  <Check\\n                    className={cn(\\n                      \\\"ml-auto\\\",\\n                      value === framework.value ? \\\"opacity-100\\\" : \\\"opacity-0\\\"\\n                    )}\\n                  />\\n                </CommandItem>\\n              ))}\\n            </CommandGroup>\\n          </CommandList>\\n        </Command>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/combobox-dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-dropdown-menu\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\",\n    \"dropdown-menu\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york/ui/command\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nconst labels = [\\n  \\\"feature\\\",\\n  \\\"bug\\\",\\n  \\\"enhancement\\\",\\n  \\\"documentation\\\",\\n  \\\"design\\\",\\n  \\\"question\\\",\\n  \\\"maintenance\\\",\\n]\\n\\nexport default function ComboboxDropdownMenu() {\\n  const [label, setLabel] = React.useState(\\\"feature\\\")\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"flex w-full flex-col items-start justify-between rounded-md border px-4 py-3 sm:flex-row sm:items-center\\\">\\n      <p className=\\\"text-sm font-medium leading-none\\\">\\n        <span className=\\\"mr-2 rounded-lg bg-primary px-2 py-1 text-xs text-primary-foreground\\\">\\n          {label}\\n        </span>\\n        <span className=\\\"text-muted-foreground\\\">Create a new project</span>\\n      </p>\\n      <DropdownMenu open={open} onOpenChange={setOpen}>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            <MoreHorizontal />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-[200px]\\\">\\n          <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Assign to...</DropdownMenuItem>\\n            <DropdownMenuItem>Set due date...</DropdownMenuItem>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Apply label</DropdownMenuSubTrigger>\\n              <DropdownMenuSubContent className=\\\"p-0\\\">\\n                <Command>\\n                  <CommandInput\\n                    placeholder=\\\"Filter label...\\\"\\n                    autoFocus={true}\\n                    className=\\\"h-9\\\"\\n                  />\\n                  <CommandList>\\n                    <CommandEmpty>No label found.</CommandEmpty>\\n                    <CommandGroup>\\n                      {labels.map((label) => (\\n                        <CommandItem\\n                          key={label}\\n                          value={label}\\n                          onSelect={(value) => {\\n                            setLabel(value)\\n                            setOpen(false)\\n                          }}\\n                        >\\n                          {label}\\n                        </CommandItem>\\n                      ))}\\n                    </CommandGroup>\\n                  </CommandList>\\n                </Command>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"text-red-600\\\">\\n              Delete\\n              <DropdownMenuShortcut>⌘⌫</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/combobox-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Check, ChevronsUpDown } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york/ui/command\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nconst languages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n] as const\\n\\nconst FormSchema = z.object({\\n  language: z.string({\\n    required_error: \\\"Please select a language.\\\",\\n  }),\\n})\\n\\nexport default function ComboboxForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"language\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Language</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      role=\\\"combobox\\\"\\n                      className={cn(\\n                        \\\"w-[200px] justify-between\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value\\n                        ? languages.find(\\n                            (language) => language.value === field.value\\n                          )?.label\\n                        : \\\"Select language\\\"}\\n                      <ChevronsUpDown className=\\\"opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-[200px] p-0\\\">\\n                  <Command>\\n                    <CommandInput\\n                      placeholder=\\\"Search framework...\\\"\\n                      className=\\\"h-9\\\"\\n                    />\\n                    <CommandList>\\n                      <CommandEmpty>No framework found.</CommandEmpty>\\n                      <CommandGroup>\\n                        {languages.map((language) => (\\n                          <CommandItem\\n                            value={language.label}\\n                            key={language.value}\\n                            onSelect={() => {\\n                              form.setValue(\\\"language\\\", language.value)\\n                            }}\\n                          >\\n                            {language.label}\\n                            <Check\\n                              className={cn(\\n                                \\\"ml-auto\\\",\\n                                language.value === field.value\\n                                  ? \\\"opacity-100\\\"\\n                                  : \\\"opacity-0\\\"\\n                              )}\\n                            />\\n                          </CommandItem>\\n                        ))}\\n                      </CommandGroup>\\n                    </CommandList>\\n                  </Command>\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                This is the language that will be used in the dashboard.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/combobox-popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-popover\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"combobox\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york/ui/command\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\ntype Status = {\\n  value: string\\n  label: string\\n}\\n\\nconst statuses: Status[] = [\\n  {\\n    value: \\\"backlog\\\",\\n    label: \\\"Backlog\\\",\\n  },\\n  {\\n    value: \\\"todo\\\",\\n    label: \\\"Todo\\\",\\n  },\\n  {\\n    value: \\\"in progress\\\",\\n    label: \\\"In Progress\\\",\\n  },\\n  {\\n    value: \\\"done\\\",\\n    label: \\\"Done\\\",\\n  },\\n  {\\n    value: \\\"canceled\\\",\\n    label: \\\"Canceled\\\",\\n  },\\n]\\n\\nexport default function ComboboxPopover() {\\n  const [open, setOpen] = React.useState(false)\\n  const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\\n    null\\n  )\\n\\n  return (\\n    <div className=\\\"flex items-center space-x-4\\\">\\n      <p className=\\\"text-sm text-muted-foreground\\\">Status</p>\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-[150px] justify-start\\\">\\n            {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"p-0\\\" side=\\\"right\\\" align=\\\"start\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Change status...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup>\\n                {statuses.map((status) => (\\n                  <CommandItem\\n                    key={status.value}\\n                    value={status.value}\\n                    onSelect={(value) => {\\n                      setSelectedStatus(\\n                        statuses.find((priority) => priority.value === value) ||\\n                          null\\n                      )\\n                      setOpen(false)\\n                    }}\\n                  >\\n                    {status.label}\\n                  </CommandItem>\\n                ))}\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/combobox-responsive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-responsive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"combobox\",\n    \"popover\",\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/combobox-responsive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york/ui/command\\\"\\nimport {\\n  Drawer,\\n  DrawerContent,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york/ui/drawer\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\ntype Status = {\\n  value: string\\n  label: string\\n}\\n\\nconst statuses: Status[] = [\\n  {\\n    value: \\\"backlog\\\",\\n    label: \\\"Backlog\\\",\\n  },\\n  {\\n    value: \\\"todo\\\",\\n    label: \\\"Todo\\\",\\n  },\\n  {\\n    value: \\\"in progress\\\",\\n    label: \\\"In Progress\\\",\\n  },\\n  {\\n    value: \\\"done\\\",\\n    label: \\\"Done\\\",\\n  },\\n  {\\n    value: \\\"canceled\\\",\\n    label: \\\"Canceled\\\",\\n  },\\n]\\n\\nexport default function ComboBoxResponsive() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n  const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\\n    null\\n  )\\n\\n  if (isDesktop) {\\n    return (\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-[150px] justify-start\\\">\\n            {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-[200px] p-0\\\" align=\\\"start\\\">\\n          <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\\n        </PopoverContent>\\n      </Popover>\\n    )\\n  }\\n\\n  return (\\n    <Drawer open={open} onOpenChange={setOpen}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\" className=\\\"w-[150px] justify-start\\\">\\n          {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <div className=\\\"mt-4 border-t\\\">\\n          <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\\n        </div>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\\nfunction StatusList({\\n  setOpen,\\n  setSelectedStatus,\\n}: {\\n  setOpen: (open: boolean) => void\\n  setSelectedStatus: (status: Status | null) => void\\n}) {\\n  return (\\n    <Command>\\n      <CommandInput placeholder=\\\"Filter status...\\\" />\\n      <CommandList>\\n        <CommandEmpty>No results found.</CommandEmpty>\\n        <CommandGroup>\\n          {statuses.map((status) => (\\n            <CommandItem\\n              key={status.value}\\n              value={status.value}\\n              onSelect={(value) => {\\n                setSelectedStatus(\\n                  statuses.find((priority) => priority.value === value) || null\\n                )\\n                setOpen(false)\\n              }}\\n            >\\n              {status.label}\\n            </CommandItem>\\n          ))}\\n        </CommandGroup>\\n      </CommandList>\\n    </Command>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/command-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/command-demo.tsx\",\n      \"content\": \"import {\\n  Calculator,\\n  Calendar,\\n  CreditCard,\\n  Settings,\\n  Smile,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/new-york/ui/command\\\"\\n\\nexport default function CommandDemo() {\\n  return (\\n    <Command className=\\\"rounded-lg border shadow-md md:min-w-[450px]\\\">\\n      <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n      <CommandList>\\n        <CommandEmpty>No results found.</CommandEmpty>\\n        <CommandGroup heading=\\\"Suggestions\\\">\\n          <CommandItem>\\n            <Calendar />\\n            <span>Calendar</span>\\n          </CommandItem>\\n          <CommandItem>\\n            <Smile />\\n            <span>Search Emoji</span>\\n          </CommandItem>\\n          <CommandItem disabled>\\n            <Calculator />\\n            <span>Calculator</span>\\n          </CommandItem>\\n        </CommandGroup>\\n        <CommandSeparator />\\n        <CommandGroup heading=\\\"Settings\\\">\\n          <CommandItem>\\n            <User />\\n            <span>Profile</span>\\n            <CommandShortcut>⌘P</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <CreditCard />\\n            <span>Billing</span>\\n            <CommandShortcut>⌘B</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <Settings />\\n            <span>Settings</span>\\n            <CommandShortcut>⌘S</CommandShortcut>\\n          </CommandItem>\\n        </CommandGroup>\\n      </CommandList>\\n    </Command>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/command-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-dialog\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"command\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/command-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Calculator,\\n  Calendar,\\n  CreditCard,\\n  Settings,\\n  Smile,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/new-york/ui/command\\\"\\n\\nexport default function CommandDialogDemo() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    const down = (e: KeyboardEvent) => {\\n      if (e.key === \\\"j\\\" && (e.metaKey || e.ctrlKey)) {\\n        e.preventDefault()\\n        setOpen((open) => !open)\\n      }\\n    }\\n\\n    document.addEventListener(\\\"keydown\\\", down)\\n    return () => document.removeEventListener(\\\"keydown\\\", down)\\n  }, [])\\n\\n  return (\\n    <>\\n      <p className=\\\"text-sm text-muted-foreground\\\">\\n        Press{\\\" \\\"}\\n        <kbd className=\\\"pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100\\\">\\n          <span className=\\\"text-xs\\\">⌘</span>J\\n        </kbd>\\n      </p>\\n      <CommandDialog open={open} onOpenChange={setOpen}>\\n        <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n        <CommandList>\\n          <CommandEmpty>No results found.</CommandEmpty>\\n          <CommandGroup heading=\\\"Suggestions\\\">\\n            <CommandItem>\\n              <Calendar />\\n              <span>Calendar</span>\\n            </CommandItem>\\n            <CommandItem>\\n              <Smile />\\n              <span>Search Emoji</span>\\n            </CommandItem>\\n            <CommandItem>\\n              <Calculator />\\n              <span>Calculator</span>\\n            </CommandItem>\\n          </CommandGroup>\\n          <CommandSeparator />\\n          <CommandGroup heading=\\\"Settings\\\">\\n            <CommandItem>\\n              <User />\\n              <span>Profile</span>\\n              <CommandShortcut>⌘P</CommandShortcut>\\n            </CommandItem>\\n            <CommandItem>\\n              <CreditCard />\\n              <span>Billing</span>\\n              <CommandShortcut>⌘B</CommandShortcut>\\n            </CommandItem>\\n            <CommandItem>\\n              <Settings />\\n              <span>Settings</span>\\n              <CommandShortcut>⌘S</CommandShortcut>\\n            </CommandItem>\\n          </CommandGroup>\\n        </CommandList>\\n      </CommandDialog>\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DialogProps } from \\\"@radix-ui/react-dialog\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\nimport { Search } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Dialog, DialogContent } from \\\"@/registry/new-york/ui/dialog\\\"\\n\\nconst Command = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive\\n    ref={ref}\\n    className={cn(\\n      \\\"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nCommand.displayName = CommandPrimitive.displayName\\n\\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\\n  return (\\n    <Dialog {...props}>\\n      <DialogContent className=\\\"overflow-hidden p-0\\\">\\n        <Command className=\\\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\\\">\\n          {children}\\n        </Command>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nconst CommandInput = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Input>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\\n>(({ className, ...props }, ref) => (\\n  <div className=\\\"flex items-center border-b px-3\\\" cmdk-input-wrapper=\\\"\\\">\\n    <Search className=\\\"mr-2 h-4 w-4 shrink-0 opacity-50\\\" />\\n    <CommandPrimitive.Input\\n      ref={ref}\\n      className={cn(\\n        \\\"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </div>\\n))\\n\\nCommandInput.displayName = CommandPrimitive.Input.displayName\\n\\nconst CommandList = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.List>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive.List\\n    ref={ref}\\n    className={cn(\\\"max-h-[300px] overflow-y-auto overflow-x-hidden\\\", className)}\\n    {...props}\\n  />\\n))\\n\\nCommandList.displayName = CommandPrimitive.List.displayName\\n\\nconst CommandEmpty = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Empty>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\\n>((props, ref) => (\\n  <CommandPrimitive.Empty\\n    ref={ref}\\n    className=\\\"py-6 text-center text-sm\\\"\\n    {...props}\\n  />\\n))\\n\\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\\n\\nconst CommandGroup = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Group>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive.Group\\n    ref={ref}\\n    className={cn(\\n      \\\"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\n\\nCommandGroup.displayName = CommandPrimitive.Group.displayName\\n\\nconst CommandSeparator = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n    {...props}\\n  />\\n))\\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\\n\\nconst CommandItem = React.forwardRef<\\n  React.ElementRef<typeof CommandPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\\n>(({ className, ...props }, ref) => (\\n  <CommandPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\n\\nCommandItem.displayName = CommandPrimitive.Item.displayName\\n\\nconst CommandShortcut = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLSpanElement>) => {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\nCommandShortcut.displayName = \\\"CommandShortcut\\\"\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/context-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"context-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/context-menu-demo.tsx\",\n      \"content\": \"import {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/new-york/ui/context-menu\\\"\\n\\nexport default function ContextMenuDemo() {\\n  return (\\n    <ContextMenu>\\n      <ContextMenuTrigger className=\\\"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm\\\">\\n        Right click here\\n      </ContextMenuTrigger>\\n      <ContextMenuContent className=\\\"w-64\\\">\\n        <ContextMenuItem inset>\\n          Back\\n          <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset disabled>\\n          Forward\\n          <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset>\\n          Reload\\n          <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuSub>\\n          <ContextMenuSubTrigger inset>More Tools</ContextMenuSubTrigger>\\n          <ContextMenuSubContent className=\\\"w-48\\\">\\n            <ContextMenuItem>\\n              Save Page As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n            <ContextMenuItem>Name Window...</ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>Developer Tools</ContextMenuItem>\\n          </ContextMenuSubContent>\\n        </ContextMenuSub>\\n        <ContextMenuSeparator />\\n        <ContextMenuCheckboxItem checked>\\n          Show Bookmarks Bar\\n          <ContextMenuShortcut>⌘⇧B</ContextMenuShortcut>\\n        </ContextMenuCheckboxItem>\\n        <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n        <ContextMenuSeparator />\\n        <ContextMenuRadioGroup value=\\\"pedro\\\">\\n          <ContextMenuLabel inset>People</ContextMenuLabel>\\n          <ContextMenuSeparator />\\n          <ContextMenuRadioItem value=\\\"pedro\\\">\\n            Pedro Duarte\\n          </ContextMenuRadioItem>\\n          <ContextMenuRadioItem value=\\\"colm\\\">Colm Tuite</ContextMenuRadioItem>\\n        </ContextMenuRadioGroup>\\n      </ContextMenuContent>\\n    </ContextMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-context-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ContextMenuPrimitive from \\\"@radix-ui/react-context-menu\\\"\\nimport { Check, ChevronRight, Circle } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst ContextMenu = ContextMenuPrimitive.Root\\n\\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\\n\\nconst ContextMenuGroup = ContextMenuPrimitive.Group\\n\\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\\n\\nconst ContextMenuSub = ContextMenuPrimitive.Sub\\n\\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\\n\\nconst ContextMenuSubTrigger = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, children, ...props }, ref) => (\\n  <ContextMenuPrimitive.SubTrigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <ChevronRight className=\\\"ml-auto h-4 w-4\\\" />\\n  </ContextMenuPrimitive.SubTrigger>\\n))\\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\\n\\nconst ContextMenuSubContent = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\\n>(({ className, ...props }, ref) => (\\n  <ContextMenuPrimitive.SubContent\\n    ref={ref}\\n    className={cn(\\n      \\\"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\\n\\nconst ContextMenuContent = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\\n>(({ className, ...props }, ref) => (\\n  <ContextMenuPrimitive.Portal>\\n    <ContextMenuPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </ContextMenuPrimitive.Portal>\\n))\\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\\n\\nconst ContextMenuItem = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <ContextMenuPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\\n\\nconst ContextMenuCheckboxItem = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\\n>(({ className, children, checked, ...props }, ref) => (\\n  <ContextMenuPrimitive.CheckboxItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    checked={checked}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <ContextMenuPrimitive.ItemIndicator>\\n        <Check className=\\\"h-4 w-4\\\" />\\n      </ContextMenuPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </ContextMenuPrimitive.CheckboxItem>\\n))\\nContextMenuCheckboxItem.displayName =\\n  ContextMenuPrimitive.CheckboxItem.displayName\\n\\nconst ContextMenuRadioItem = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\\n>(({ className, children, ...props }, ref) => (\\n  <ContextMenuPrimitive.RadioItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <ContextMenuPrimitive.ItemIndicator>\\n        <Circle className=\\\"h-4 w-4 fill-current\\\" />\\n      </ContextMenuPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </ContextMenuPrimitive.RadioItem>\\n))\\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\\n\\nconst ContextMenuLabel = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.Label>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <ContextMenuPrimitive.Label\\n    ref={ref}\\n    className={cn(\\n      \\\"px-2 py-1.5 text-sm font-semibold text-foreground\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\\n\\nconst ContextMenuSeparator = React.forwardRef<\\n  React.ElementRef<typeof ContextMenuPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <ContextMenuPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n    {...props}\\n  />\\n))\\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\\n\\nconst ContextMenuShortcut = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLSpanElement>) => {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\nContextMenuShortcut.displayName = \\\"ContextMenuShortcut\\\"\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/new-york/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/new-york/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/new-york/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/new-york/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowUpCircleIcon,\\n  BarChartIcon,\\n  CameraIcon,\\n  ClipboardListIcon,\\n  DatabaseIcon,\\n  FileCodeIcon,\\n  FileIcon,\\n  FileTextIcon,\\n  FolderIcon,\\n  HelpCircleIcon,\\n  LayoutDashboardIcon,\\n  ListIcon,\\n  SearchIcon,\\n  SettingsIcon,\\n  UsersIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/new-york/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/new-york/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/new-york/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: LayoutDashboardIcon,\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: ListIcon,\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: BarChartIcon,\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: FolderIcon,\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: UsersIcon,\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: CameraIcon,\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: FileTextIcon,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: FileCodeIcon,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: SettingsIcon,\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: HelpCircleIcon,\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: SearchIcon,\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: DatabaseIcon,\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: ClipboardListIcon,\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: FileIcon,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              asChild\\n              className=\\\"data-[slot=sidebar-menu-button]:!p-1.5\\\"\\n            >\\n              <a href=\\\"#\\\">\\n                <ArrowUpCircleIcon className=\\\"h-5 w-5\\\" />\\n                <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/new-york/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york/ui/toggle-group\\\"\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"hsl(var(--chart-1))\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"hsl(var(--chart-2))\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"30d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader className=\\\"relative\\\">\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"@[540px]/card:block hidden\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <div className=\\\"absolute right-4 top-4\\\">\\n          <ToggleGroup\\n            type=\\\"single\\\"\\n            value={timeRange}\\n            onValueChange={setTimeRange}\\n            variant=\\\"outline\\\"\\n            className=\\\"@[767px]/card:flex hidden\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\" className=\\\"h-8 px-2.5\\\">\\n              Last 3 months\\n            </ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\" className=\\\"h-8 px-2.5\\\">\\n              Last 30 days\\n            </ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\" className=\\\"h-8 px-2.5\\\">\\n              Last 7 days\\n            </ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select value={timeRange} onValueChange={setTimeRange}>\\n            <SelectTrigger\\n              className=\\\"@[767px]/card:hidden flex w-40\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </div>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  closestCenter,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  SortableContext,\\n  arrayMove,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  ColumnDef,\\n  ColumnFiltersState,\\n  Row,\\n  SortingState,\\n  VisibilityState,\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n} from \\\"@tanstack/react-table\\\"\\nimport {\\n  CheckCircle2Icon,\\n  CheckCircleIcon,\\n  ChevronDownIcon,\\n  ChevronLeftIcon,\\n  ChevronRightIcon,\\n  ChevronsLeftIcon,\\n  ChevronsRightIcon,\\n  ColumnsIcon,\\n  GripVerticalIcon,\\n  LoaderIcon,\\n  MoreVerticalIcon,\\n  PlusIcon,\\n  TrendingUpIcon,\\n} from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/new-york/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  ChartConfig,\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n} from \\\"@/registry/new-york/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/new-york/ui/sheet\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/new-york/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/new-york/ui/tabs\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <GripVerticalIcon className=\\\"size-3 text-muted-foreground\\\" />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\n\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={\\n            table.getIsAllPageRowsSelected() ||\\n            (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge\\n        variant=\\\"outline\\\"\\n        className=\\\"flex gap-1 px-1.5 text-muted-foreground [&_svg]:size-3\\\"\\n      >\\n        {row.original.status === \\\"Done\\\" ? (\\n          <CheckCircle2Icon className=\\\"text-green-500 dark:text-green-400\\\" />\\n        ) : (\\n          <LoaderIcon />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select>\\n            <SelectTrigger\\n              className=\\\"h-8 w-40\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n              <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                Jamik Tashpulatov\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            className=\\\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\\\"\\n            size=\\\"icon\\\"\\n          >\\n            <MoreVerticalIcon />\\n            <span className=\\\"sr-only\\\">Open menu</span>\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem>Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\n\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\n\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"flex w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select defaultValue=\\\"outline\\\">\\n          <SelectTrigger\\n            className=\\\"@4xl/main:hidden flex w-fit\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n            <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n            <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n            <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"@4xl/main:flex hidden\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\" className=\\\"gap-1\\\">\\n            Past Performance{\\\" \\\"}\\n            <Badge\\n              variant=\\\"secondary\\\"\\n              className=\\\"flex h-5 w-5 items-center justify-center rounded-full bg-muted-foreground/30\\\"\\n            >\\n              3\\n            </Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\" className=\\\"gap-1\\\">\\n            Key Personnel{\\\" \\\"}\\n            <Badge\\n              variant=\\\"secondary\\\"\\n              className=\\\"flex h-5 w-5 items-center justify-center rounded-full bg-muted-foreground/30\\\"\\n            >\\n              2\\n            </Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                <ColumnsIcon />\\n                <span className=\\\"hidden lg:inline\\\">Customize Columns</span>\\n                <span className=\\\"lg:hidden\\\">Columns</span>\\n                <ChevronDownIcon />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <PlusIcon />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n              >\\n                <SelectTrigger className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  {[10, 20, 30, 40, 50].map((pageSize) => (\\n                    <SelectItem key={pageSize} value={`${pageSize}`}>\\n                      {pageSize}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <ChevronsLeftIcon />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <ChevronLeftIcon />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <ChevronRightIcon />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <ChevronsRightIcon />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <Sheet>\\n      <SheetTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </SheetTrigger>\\n      <SheetContent side=\\\"right\\\" className=\\\"flex flex-col\\\">\\n        <SheetHeader className=\\\"gap-1\\\">\\n          <SheetTitle>{item.header}</SheetTitle>\\n          <SheetDescription>\\n            Showing total visitors for the last 6 months\\n          </SheetDescription>\\n        </SheetHeader>\\n        <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto py-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 font-medium leading-none\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <TrendingUpIcon className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select defaultValue={item.type}>\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"Table of Contents\\\">\\n                      Table of Contents\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Executive Summary\\\">\\n                      Executive Summary\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Technical Approach\\\">\\n                      Technical Approach\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                    <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                    <SelectItem value=\\\"Focus Documents\\\">\\n                      Focus Documents\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                    <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select defaultValue={item.status}>\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                    <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                    <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select defaultValue={item.reviewer}>\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                  <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                    Jamik Tashpulatov\\n                  </SelectItem>\\n                  <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <SheetFooter className=\\\"mt-auto flex gap-2 sm:flex-col sm:space-x-0\\\">\\n          <Button className=\\\"w-full\\\">Submit</Button>\\n          <SheetClose asChild>\\n            <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n              Done\\n            </Button>\\n          </SheetClose>\\n        </SheetFooter>\\n      </SheetContent>\\n    </Sheet>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  FolderIcon,\\n  MoreHorizontalIcon,\\n  ShareIcon,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"rounded-sm data-[state=open]:bg-accent\\\"\\n                >\\n                  <MoreHorizontalIcon />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <FolderIcon />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ShareIcon />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontalIcon className=\\\"text-sidebar-foreground/70\\\" />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { MailIcon, PlusCircleIcon, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <PlusCircleIcon />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"h-9 w-9 shrink-0 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <MailIcon />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon && <item.icon />}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BellIcon,\\n  CreditCardIcon,\\n  LogOutIcon,\\n  MoreVerticalIcon,\\n  UserCircleIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg grayscale\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  {user.email}\\n                </span>\\n              </div>\\n              <MoreVerticalIcon className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                    {user.email}\\n                  </span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <UserCircleIcon />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCardIcon />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <BellIcon />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOutIcon />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"import { TrendingDownIcon, TrendingUpIcon } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\nimport {\\n  Card,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"*:data-[slot=card]:shadow-xs @xl/main:grid-cols-2 @5xl/main:grid-cols-4 grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card dark:*:data-[slot=card]:bg-card lg:px-6\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader className=\\\"relative\\\">\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"@[250px]/card:text-3xl text-2xl font-semibold tabular-nums\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <div className=\\\"absolute right-4 top-4\\\">\\n            <Badge variant=\\\"outline\\\" className=\\\"flex gap-1 rounded-lg text-xs\\\">\\n              <TrendingUpIcon className=\\\"size-3\\\" />\\n              +12.5%\\n            </Badge>\\n          </div>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month <TrendingUpIcon className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader className=\\\"relative\\\">\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"@[250px]/card:text-3xl text-2xl font-semibold tabular-nums\\\">\\n            1,234\\n          </CardTitle>\\n          <div className=\\\"absolute right-4 top-4\\\">\\n            <Badge variant=\\\"outline\\\" className=\\\"flex gap-1 rounded-lg text-xs\\\">\\n              <TrendingDownIcon className=\\\"size-3\\\" />\\n              -20%\\n            </Badge>\\n          </div>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period <TrendingDownIcon className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader className=\\\"relative\\\">\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"@[250px]/card:text-3xl text-2xl font-semibold tabular-nums\\\">\\n            45,678\\n          </CardTitle>\\n          <div className=\\\"absolute right-4 top-4\\\">\\n            <Badge variant=\\\"outline\\\" className=\\\"flex gap-1 rounded-lg text-xs\\\">\\n              <TrendingUpIcon className=\\\"size-3\\\" />\\n              +12.5%\\n            </Badge>\\n          </div>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention <TrendingUpIcon className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader className=\\\"relative\\\">\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"@[250px]/card:text-3xl text-2xl font-semibold tabular-nums\\\">\\n            4.5%\\n          </CardTitle>\\n          <div className=\\\"absolute right-4 top-4\\\">\\n            <Badge variant=\\\"outline\\\" className=\\\"flex gap-1 rounded-lg text-xs\\\">\\n              <TrendingUpIcon className=\\\"size-3\\\" />\\n              +4.5%\\n            </Badge>\\n          </div>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance <TrendingUpIcon className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 flex h-12 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 data-[orientation=vertical]:h-4\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/data-table-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"data-table-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"data-table\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/data-table-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ColumnDef,\\n  ColumnFiltersState,\\n  SortingState,\\n  VisibilityState,\\n  flexRender,\\n  getCoreRowModel,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n} from \\\"@tanstack/react-table\\\"\\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/new-york/ui/table\\\"\\n\\nconst data: Payment[] = [\\n  {\\n    id: \\\"m5gr84i9\\\",\\n    amount: 316,\\n    status: \\\"success\\\",\\n    email: \\\"ken99@example.com\\\",\\n  },\\n  {\\n    id: \\\"3u1reuv4\\\",\\n    amount: 242,\\n    status: \\\"success\\\",\\n    email: \\\"Abe45@example.com\\\",\\n  },\\n  {\\n    id: \\\"derv1ws0\\\",\\n    amount: 837,\\n    status: \\\"processing\\\",\\n    email: \\\"Monserrat44@example.com\\\",\\n  },\\n  {\\n    id: \\\"5kma53ae\\\",\\n    amount: 874,\\n    status: \\\"success\\\",\\n    email: \\\"Silas22@example.com\\\",\\n  },\\n  {\\n    id: \\\"bhqecj4p\\\",\\n    amount: 721,\\n    status: \\\"failed\\\",\\n    email: \\\"carmella@example.com\\\",\\n  },\\n]\\n\\nexport type Payment = {\\n  id: string\\n  amount: number\\n  status: \\\"pending\\\" | \\\"processing\\\" | \\\"success\\\" | \\\"failed\\\"\\n  email: string\\n}\\n\\nexport const columns: ColumnDef<Payment>[] = [\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <Checkbox\\n        checked={\\n          table.getIsAllPageRowsSelected() ||\\n          (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n        }\\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n        aria-label=\\\"Select all\\\"\\n      />\\n    ),\\n    cell: ({ row }) => (\\n      <Checkbox\\n        checked={row.getIsSelected()}\\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\\n        aria-label=\\\"Select row\\\"\\n      />\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"capitalize\\\">{row.getValue(\\\"status\\\")}</div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"email\\\",\\n    header: ({ column }) => {\\n      return (\\n        <Button\\n          variant=\\\"ghost\\\"\\n          onClick={() => column.toggleSorting(column.getIsSorted() === \\\"asc\\\")}\\n        >\\n          Email\\n          <ArrowUpDown />\\n        </Button>\\n      )\\n    },\\n    cell: ({ row }) => <div className=\\\"lowercase\\\">{row.getValue(\\\"email\\\")}</div>,\\n  },\\n  {\\n    accessorKey: \\\"amount\\\",\\n    header: () => <div className=\\\"text-right\\\">Amount</div>,\\n    cell: ({ row }) => {\\n      const amount = parseFloat(row.getValue(\\\"amount\\\"))\\n\\n      // Format the amount as a dollar amount\\n      const formatted = new Intl.NumberFormat(\\\"en-US\\\", {\\n        style: \\\"currency\\\",\\n        currency: \\\"USD\\\",\\n      }).format(amount)\\n\\n      return <div className=\\\"text-right font-medium\\\">{formatted}</div>\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    enableHiding: false,\\n    cell: ({ row }) => {\\n      const payment = row.original\\n\\n      return (\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"ghost\\\" className=\\\"h-8 w-8 p-0\\\">\\n              <span className=\\\"sr-only\\\">Open menu</span>\\n              <MoreHorizontal />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\">\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem\\n              onClick={() => navigator.clipboard.writeText(payment.id)}\\n            >\\n              Copy payment ID\\n            </DropdownMenuItem>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>View customer</DropdownMenuItem>\\n            <DropdownMenuItem>View payment details</DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      )\\n    },\\n  },\\n]\\n\\nexport default function DataTableDemo() {\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [rowSelection, setRowSelection] = React.useState({})\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    getCoreRowModel: getCoreRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onRowSelectionChange: setRowSelection,\\n    state: {\\n      sorting,\\n      columnFilters,\\n      columnVisibility,\\n      rowSelection,\\n    },\\n  })\\n\\n  return (\\n    <div className=\\\"w-full\\\">\\n      <div className=\\\"flex items-center py-4\\\">\\n        <Input\\n          placeholder=\\\"Filter emails...\\\"\\n          value={(table.getColumn(\\\"email\\\")?.getFilterValue() as string) ?? \\\"\\\"}\\n          onChange={(event) =>\\n            table.getColumn(\\\"email\\\")?.setFilterValue(event.target.value)\\n          }\\n          className=\\\"max-w-sm\\\"\\n        />\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"outline\\\" className=\\\"ml-auto\\\">\\n              Columns <ChevronDown />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\">\\n            {table\\n              .getAllColumns()\\n              .filter((column) => column.getCanHide())\\n              .map((column) => {\\n                return (\\n                  <DropdownMenuCheckboxItem\\n                    key={column.id}\\n                    className=\\\"capitalize\\\"\\n                    checked={column.getIsVisible()}\\n                    onCheckedChange={(value) =>\\n                      column.toggleVisibility(!!value)\\n                    }\\n                  >\\n                    {column.id}\\n                  </DropdownMenuCheckboxItem>\\n                )\\n              })}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n      <div className=\\\"overflow-hidden rounded-md border\\\">\\n        <Table>\\n          <TableHeader>\\n            {table.getHeaderGroups().map((headerGroup) => (\\n              <TableRow key={headerGroup.id}>\\n                {headerGroup.headers.map((header) => {\\n                  return (\\n                    <TableHead key={header.id}>\\n                      {header.isPlaceholder\\n                        ? null\\n                        : flexRender(\\n                            header.column.columnDef.header,\\n                            header.getContext()\\n                          )}\\n                    </TableHead>\\n                  )\\n                })}\\n              </TableRow>\\n            ))}\\n          </TableHeader>\\n          <TableBody>\\n            {table.getRowModel().rows?.length ? (\\n              table.getRowModel().rows.map((row) => (\\n                <TableRow\\n                  key={row.id}\\n                  data-state={row.getIsSelected() && \\\"selected\\\"}\\n                >\\n                  {row.getVisibleCells().map((cell) => (\\n                    <TableCell key={cell.id}>\\n                      {flexRender(\\n                        cell.column.columnDef.cell,\\n                        cell.getContext()\\n                      )}\\n                    </TableCell>\\n                  ))}\\n                </TableRow>\\n              ))\\n            ) : (\\n              <TableRow>\\n                <TableCell\\n                  colSpan={columns.length}\\n                  className=\\\"h-24 text-center\\\"\\n                >\\n                  No results.\\n                </TableCell>\\n              </TableRow>\\n            )}\\n          </TableBody>\\n        </Table>\\n      </div>\\n      <div className=\\\"flex items-center justify-end space-x-2 py-4\\\">\\n        <div className=\\\"flex-1 text-sm text-muted-foreground\\\">\\n          {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n          {table.getFilteredRowModel().rows.length} row(s) selected.\\n        </div>\\n        <div className=\\\"space-x-2\\\">\\n          <Button\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            onClick={() => table.previousPage()}\\n            disabled={!table.getCanPreviousPage()}\\n          >\\n            Previous\\n          </Button>\\n          <Button\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            onClick={() => table.nextPage()}\\n            disabled={!table.getCanNextPage()}\\n          >\\n            Next\\n          </Button>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/date-picker-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/date-picker-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function DatePickerDemo() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant={\\\"outline\\\"}\\n          className={cn(\\n            \\\"w-[240px] justify-start text-left font-normal\\\",\\n            !date && \\\"text-muted-foreground\\\"\\n          )}\\n        >\\n          <CalendarIcon />\\n          {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          initialFocus\\n        />\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/date-picker-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"form\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/date-picker-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nconst FormSchema = z.object({\\n  dob: z.date({\\n    required_error: \\\"A date of birth is required.\\\",\\n  }),\\n})\\n\\nexport default function DatePickerForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"dob\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Date of birth</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant={\\\"outline\\\"}\\n                      className={cn(\\n                        \\\"w-[240px] pl-3 text-left font-normal\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value ? (\\n                        format(field.value, \\\"PPP\\\")\\n                      ) : (\\n                        <span>Pick a date</span>\\n                      )}\\n                      <CalendarIcon className=\\\"ml-auto h-4 w-4 opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n                  <Calendar\\n                    mode=\\\"single\\\"\\n                    selected={field.value}\\n                    onSelect={field.onChange}\\n                    disabled={(date) =>\\n                      date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n                    }\\n                    initialFocus\\n                  />\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                Your date of birth is used to calculate your age.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/date-picker-with-presets.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-with-presets\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/date-picker-with-presets.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\n\\nexport default function DatePickerWithPresets() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant={\\\"outline\\\"}\\n          className={cn(\\n            \\\"w-[240px] justify-start text-left font-normal\\\",\\n            !date && \\\"text-muted-foreground\\\"\\n          )}\\n        >\\n          <CalendarIcon />\\n          {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent\\n        align=\\\"start\\\"\\n        className=\\\"flex w-auto flex-col space-y-2 p-2\\\"\\n      >\\n        <Select\\n          onValueChange={(value) =>\\n            setDate(addDays(new Date(), parseInt(value)))\\n          }\\n        >\\n          <SelectTrigger>\\n            <SelectValue placeholder=\\\"Select\\\" />\\n          </SelectTrigger>\\n          <SelectContent position=\\\"popper\\\">\\n            <SelectItem value=\\\"0\\\">Today</SelectItem>\\n            <SelectItem value=\\\"1\\\">Tomorrow</SelectItem>\\n            <SelectItem value=\\\"3\\\">In 3 days</SelectItem>\\n            <SelectItem value=\\\"7\\\">In a week</SelectItem>\\n          </SelectContent>\\n        </Select>\\n        <div className=\\\"rounded-md border\\\">\\n          <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n        </div>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/date-picker-with-range.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-with-range\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/date-picker-with-range.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { DateRange } from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function DatePickerWithRange({\\n  className,\\n}: React.HTMLAttributes<HTMLDivElement>) {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(2022, 0, 20),\\n    to: addDays(new Date(2022, 0, 20), 20),\\n  })\\n\\n  return (\\n    <div className={cn(\\\"grid gap-2\\\", className)}>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            id=\\\"date\\\"\\n            variant={\\\"outline\\\"}\\n            className={cn(\\n              \\\"w-[300px] justify-start text-left font-normal\\\",\\n              !date && \\\"text-muted-foreground\\\"\\n            )}\\n          >\\n            <CalendarIcon />\\n            {date?.from ? (\\n              date.to ? (\\n                <>\\n                  {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                  {format(date.to, \\\"LLL dd, y\\\")}\\n                </>\\n              ) : (\\n                format(date.from, \\\"LLL dd, y\\\")\\n              )\\n            ) : (\\n              <span>Pick a date</span>\\n            )}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            initialFocus\\n            mode=\\\"range\\\"\\n            defaultMonth={date?.from}\\n            selected={date}\\n            onSelect={setDate}\\n            numberOfMonths={2}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/dialog-close-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-close-button\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dialog-close-button.tsx\",\n      \"content\": \"import { Copy } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york/ui/dialog\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function DialogCloseButton() {\\n  return (\\n    <Dialog>\\n      <DialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Share</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"sm:max-w-md\\\">\\n        <DialogHeader>\\n          <DialogTitle>Share link</DialogTitle>\\n          <DialogDescription>\\n            Anyone who has this link will be able to view this.\\n          </DialogDescription>\\n        </DialogHeader>\\n        <div className=\\\"flex items-center space-x-2\\\">\\n          <div className=\\\"grid flex-1 gap-2\\\">\\n            <Label htmlFor=\\\"link\\\" className=\\\"sr-only\\\">\\n              Link\\n            </Label>\\n            <Input\\n              id=\\\"link\\\"\\n              defaultValue=\\\"https://ui.shadcn.com/docs/installation\\\"\\n              readOnly\\n            />\\n          </div>\\n          <Button type=\\\"submit\\\" size=\\\"sm\\\" className=\\\"px-3\\\">\\n            <span className=\\\"sr-only\\\">Copy</span>\\n            <Copy />\\n          </Button>\\n        </div>\\n        <DialogFooter className=\\\"sm:justify-start\\\">\\n          <DialogClose asChild>\\n            <Button type=\\\"button\\\" variant=\\\"secondary\\\">\\n              Close\\n            </Button>\\n          </DialogClose>\\n        </DialogFooter>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/dialog-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dialog-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york/ui/dialog\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function DialogDemo() {\\n  return (\\n    <Dialog>\\n      <DialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Edit Profile</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n        <DialogHeader>\\n          <DialogTitle>Edit profile</DialogTitle>\\n          <DialogDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </DialogDescription>\\n        </DialogHeader>\\n        <div className=\\\"grid gap-4 py-4\\\">\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n              Name\\n            </Label>\\n            <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n              Username\\n            </Label>\\n            <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n        </div>\\n        <DialogFooter>\\n          <Button type=\\\"submit\\\">Save changes</Button>\\n        </DialogFooter>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DialogPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Dialog = DialogPrimitive.Root\\n\\nconst DialogTrigger = DialogPrimitive.Trigger\\n\\nconst DialogPortal = DialogPrimitive.Portal\\n\\nconst DialogClose = DialogPrimitive.Close\\n\\nconst DialogOverlay = React.forwardRef<\\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\\n>(({ className, ...props }, ref) => (\\n  <DialogPrimitive.Overlay\\n    ref={ref}\\n    className={cn(\\n      \\\"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\\n\\nconst DialogContent = React.forwardRef<\\n  React.ElementRef<typeof DialogPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\\n>(({ className, children, ...props }, ref) => (\\n  <DialogPortal>\\n    <DialogOverlay />\\n    <DialogPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <DialogPrimitive.Close className=\\\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\\\">\\n        <X className=\\\"h-4 w-4\\\" />\\n        <span className=\\\"sr-only\\\">Close</span>\\n      </DialogPrimitive.Close>\\n    </DialogPrimitive.Content>\\n  </DialogPortal>\\n))\\nDialogContent.displayName = DialogPrimitive.Content.displayName\\n\\nconst DialogHeader = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col space-y-1.5 text-center sm:text-left\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nDialogHeader.displayName = \\\"DialogHeader\\\"\\n\\nconst DialogFooter = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nDialogFooter.displayName = \\\"DialogFooter\\\"\\n\\nconst DialogTitle = React.forwardRef<\\n  React.ElementRef<typeof DialogPrimitive.Title>,\\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\\n>(({ className, ...props }, ref) => (\\n  <DialogPrimitive.Title\\n    ref={ref}\\n    className={cn(\\n      \\\"text-lg font-semibold leading-none tracking-tight\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDialogTitle.displayName = DialogPrimitive.Title.displayName\\n\\nconst DialogDescription = React.forwardRef<\\n  React.ElementRef<typeof DialogPrimitive.Description>,\\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\\n>(({ className, ...props }, ref) => (\\n  <DialogPrimitive.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nDialogDescription.displayName = DialogPrimitive.Description.displayName\\n\\nexport {\\n  Dialog,\\n  DialogPortal,\\n  DialogOverlay,\\n  DialogTrigger,\\n  DialogClose,\\n  DialogContent,\\n  DialogHeader,\\n  DialogFooter,\\n  DialogTitle,\\n  DialogDescription,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/drawer-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/drawer-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Minus, Plus } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, ResponsiveContainer } from \\\"recharts\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york/ui/drawer\\\"\\n\\nconst data = [\\n  {\\n    goal: 400,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 239,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 349,\\n  },\\n]\\n\\nexport default function DrawerDemo() {\\n  const [goal, setGoal] = React.useState(350)\\n\\n  function onClick(adjustment: number) {\\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\\n  }\\n\\n  return (\\n    <Drawer>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open Drawer</Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <div className=\\\"mx-auto w-full max-w-sm\\\">\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"p-4 pb-0\\\">\\n            <div className=\\\"flex items-center justify-center space-x-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(-10)}\\n                disabled={goal <= 200}\\n              >\\n                <Minus />\\n                <span className=\\\"sr-only\\\">Decrease</span>\\n              </Button>\\n              <div className=\\\"flex-1 text-center\\\">\\n                <div className=\\\"text-7xl font-bold tracking-tighter\\\">\\n                  {goal}\\n                </div>\\n                <div className=\\\"text-[0.70rem] uppercase text-muted-foreground\\\">\\n                  Calories/day\\n                </div>\\n              </div>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(10)}\\n                disabled={goal >= 400}\\n              >\\n                <Plus />\\n                <span className=\\\"sr-only\\\">Increase</span>\\n              </Button>\\n            </div>\\n            <div className=\\\"mt-3 h-[120px]\\\">\\n              <ResponsiveContainer width=\\\"100%\\\" height=\\\"100%\\\">\\n                <BarChart data={data}>\\n                  <Bar\\n                    dataKey=\\\"goal\\\"\\n                    style={\\n                      {\\n                        fill: \\\"hsl(var(--foreground))\\\",\\n                        opacity: 0.9,\\n                      } as React.CSSProperties\\n                    }\\n                  />\\n                </BarChart>\\n              </ResponsiveContainer>\\n            </div>\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </div>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/drawer-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-dialog\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/drawer-dialog.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york/ui/dialog\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york/ui/drawer\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function DrawerDialogDemo() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n\\n  if (isDesktop) {\\n    return (\\n      <Dialog open={open} onOpenChange={setOpen}>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Edit Profile</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Edit profile</DialogTitle>\\n            <DialogDescription>\\n              Make changes to your profile here. Click save when you're done.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ProfileForm />\\n        </DialogContent>\\n      </Dialog>\\n    )\\n  }\\n\\n  return (\\n    <Drawer open={open} onOpenChange={setOpen}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\">Edit Profile</Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"text-left\\\">\\n          <DrawerTitle>Edit profile</DrawerTitle>\\n          <DrawerDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <ProfileForm className=\\\"px-4\\\" />\\n        <DrawerFooter className=\\\"pt-2\\\">\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Cancel</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\\nfunction ProfileForm({ className }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"grid items-start gap-4\\\", className)}>\\n      <div className=\\\"grid gap-2\\\">\\n        <Label htmlFor=\\\"email\\\">Email</Label>\\n        <Input type=\\\"email\\\" id=\\\"email\\\" defaultValue=\\\"shadcn@example.com\\\" />\\n      </div>\\n      <div className=\\\"grid gap-2\\\">\\n        <Label htmlFor=\\\"username\\\">Username</Label>\\n        <Input id=\\\"username\\\" defaultValue=\\\"@shadcn\\\" />\\n      </div>\\n      <Button type=\\\"submit\\\">Save changes</Button>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"vaul\",\n    \"@radix-ui/react-dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Drawer = ({\\n  shouldScaleBackground = true,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\\n  <DrawerPrimitive.Root\\n    shouldScaleBackground={shouldScaleBackground}\\n    {...props}\\n  />\\n)\\nDrawer.displayName = \\\"Drawer\\\"\\n\\nconst DrawerTrigger = DrawerPrimitive.Trigger\\n\\nconst DrawerPortal = DrawerPrimitive.Portal\\n\\nconst DrawerClose = DrawerPrimitive.Close\\n\\nconst DrawerOverlay = React.forwardRef<\\n  React.ElementRef<typeof DrawerPrimitive.Overlay>,\\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\\n>(({ className, ...props }, ref) => (\\n  <DrawerPrimitive.Overlay\\n    ref={ref}\\n    className={cn(\\\"fixed inset-0 z-50 bg-black/80\\\", className)}\\n    {...props}\\n  />\\n))\\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\\n\\nconst DrawerContent = React.forwardRef<\\n  React.ElementRef<typeof DrawerPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\\n>(({ className, children, ...props }, ref) => (\\n  <DrawerPortal>\\n    <DrawerOverlay />\\n    <DrawerPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\\\" />\\n      {children}\\n    </DrawerPrimitive.Content>\\n  </DrawerPortal>\\n))\\nDrawerContent.displayName = \\\"DrawerContent\\\"\\n\\nconst DrawerHeader = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\\"grid gap-1.5 p-4 text-center sm:text-left\\\", className)}\\n    {...props}\\n  />\\n)\\nDrawerHeader.displayName = \\\"DrawerHeader\\\"\\n\\nconst DrawerFooter = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n    {...props}\\n  />\\n)\\nDrawerFooter.displayName = \\\"DrawerFooter\\\"\\n\\nconst DrawerTitle = React.forwardRef<\\n  React.ElementRef<typeof DrawerPrimitive.Title>,\\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\\n>(({ className, ...props }, ref) => (\\n  <DrawerPrimitive.Title\\n    ref={ref}\\n    className={cn(\\n      \\\"text-lg font-semibold leading-none tracking-tight\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\\n\\nconst DrawerDescription = React.forwardRef<\\n  React.ElementRef<typeof DrawerPrimitive.Description>,\\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\\n>(({ className, ...props }, ref) => (\\n  <DrawerPrimitive.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/dropdown-menu-checkboxes.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-checkboxes\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dropdown-menu\",\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dropdown-menu-checkboxes.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DropdownMenuCheckboxItemProps } from \\\"@radix-ui/react-dropdown-menu\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\ntype Checked = DropdownMenuCheckboxItemProps[\\\"checked\\\"]\\n\\nexport default function DropdownMenuCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState<Checked>(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState<Checked>(false)\\n  const [showPanel, setShowPanel] = React.useState<Checked>(false)\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuCheckboxItem\\n          checked={showStatusBar}\\n          onCheckedChange={setShowStatusBar}\\n        >\\n          Status Bar\\n        </DropdownMenuCheckboxItem>\\n        <DropdownMenuCheckboxItem\\n          checked={showActivityBar}\\n          onCheckedChange={setShowActivityBar}\\n          disabled\\n        >\\n          Activity Bar\\n        </DropdownMenuCheckboxItem>\\n        <DropdownMenuCheckboxItem\\n          checked={showPanel}\\n          onCheckedChange={setShowPanel}\\n        >\\n          Panel\\n        </DropdownMenuCheckboxItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/dropdown-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dropdown-menu-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nexport default function DropdownMenuDemo() {\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>\\n            Profile\\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Billing\\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Settings\\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Keyboard shortcuts\\n            <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>Team</DropdownMenuItem>\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuItem>Email</DropdownMenuItem>\\n                <DropdownMenuItem>Message</DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>More...</DropdownMenuItem>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n          <DropdownMenuItem>\\n            New Team\\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>GitHub</DropdownMenuItem>\\n        <DropdownMenuItem>Support</DropdownMenuItem>\\n        <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>\\n          Log out\\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n        </DropdownMenuItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/dropdown-menu-radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-radio-group\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"dropdown-menu\",\n    \"radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/dropdown-menu-radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuLabel,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nexport default function DropdownMenuRadioGroupDemo() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\\n          <DropdownMenuRadioItem value=\\\"top\\\">Top</DropdownMenuRadioItem>\\n          <DropdownMenuRadioItem value=\\\"bottom\\\">Bottom</DropdownMenuRadioItem>\\n          <DropdownMenuRadioItem value=\\\"right\\\">Right</DropdownMenuRadioItem>\\n        </DropdownMenuRadioGroup>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DropdownMenuPrimitive from \\\"@radix-ui/react-dropdown-menu\\\"\\nimport { Check, ChevronRight, Circle } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst DropdownMenu = DropdownMenuPrimitive.Root\\n\\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\\n\\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\\n\\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\\n\\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\\n\\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\\n\\nconst DropdownMenuSubTrigger = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, children, ...props }, ref) => (\\n  <DropdownMenuPrimitive.SubTrigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <ChevronRight className=\\\"ml-auto\\\" />\\n  </DropdownMenuPrimitive.SubTrigger>\\n))\\nDropdownMenuSubTrigger.displayName =\\n  DropdownMenuPrimitive.SubTrigger.displayName\\n\\nconst DropdownMenuSubContent = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\\n>(({ className, ...props }, ref) => (\\n  <DropdownMenuPrimitive.SubContent\\n    ref={ref}\\n    className={cn(\\n      \\\"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDropdownMenuSubContent.displayName =\\n  DropdownMenuPrimitive.SubContent.displayName\\n\\nconst DropdownMenuContent = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\\n>(({ className, sideOffset = 4, ...props }, ref) => (\\n  <DropdownMenuPrimitive.Portal>\\n    <DropdownMenuPrimitive.Content\\n      ref={ref}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\\\",\\n        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </DropdownMenuPrimitive.Portal>\\n))\\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\\n\\nconst DropdownMenuItem = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <DropdownMenuPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\\n\\nconst DropdownMenuCheckboxItem = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\\n>(({ className, children, checked, ...props }, ref) => (\\n  <DropdownMenuPrimitive.CheckboxItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    checked={checked}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <DropdownMenuPrimitive.ItemIndicator>\\n        <Check className=\\\"h-4 w-4\\\" />\\n      </DropdownMenuPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </DropdownMenuPrimitive.CheckboxItem>\\n))\\nDropdownMenuCheckboxItem.displayName =\\n  DropdownMenuPrimitive.CheckboxItem.displayName\\n\\nconst DropdownMenuRadioItem = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\\n>(({ className, children, ...props }, ref) => (\\n  <DropdownMenuPrimitive.RadioItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <DropdownMenuPrimitive.ItemIndicator>\\n        <Circle className=\\\"h-2 w-2 fill-current\\\" />\\n      </DropdownMenuPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </DropdownMenuPrimitive.RadioItem>\\n))\\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\\n\\nconst DropdownMenuLabel = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <DropdownMenuPrimitive.Label\\n    ref={ref}\\n    className={cn(\\n      \\\"px-2 py-1.5 text-sm font-semibold\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\\n\\nconst DropdownMenuSeparator = React.forwardRef<\\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <DropdownMenuPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 my-1 h-px bg-muted\\\", className)}\\n    {...props}\\n  />\\n))\\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\\n\\nconst DropdownMenuShortcut = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLSpanElement>) => {\\n  return (\\n    <span\\n      className={cn(\\\"ml-auto text-xs tracking-widest opacity-60\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\nDropdownMenuShortcut.displayName = \\\"DropdownMenuShortcut\\\"\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuGroup,\\n  DropdownMenuPortal,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\n        \\\"flex max-w-sm flex-col items-center gap-2 text-center\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\\"text-lg font-medium tracking-tight\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-6\\\",\\n        \\\"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-3 font-medium\\\",\\n        \\\"data-[variant=legend]:text-base\\\",\\n        \\\"data-[variant=label]:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field data-[invalid=true]:text-destructive flex w-full gap-3\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: [\\\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\\\"],\\n        horizontal: [\\n          \\\"flex-row items-center\\\",\\n          \\\"[&>[data-slot=field-label]]:flex-auto\\\",\\n          \\\"has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start\\\",\\n        ],\\n        responsive: [\\n          \\\"@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto\\\",\\n          \\\"@md/field-group:[&>[data-slot=field-label]]:flex-auto\\\",\\n          \\\"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        ],\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4\\\",\\n        \\\"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance\\\",\\n        \\\"nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors) {\\n      return null\\n    }\\n\\n    if (errors?.length === 1 && errors[0]?.message) {\\n      return errors[0].message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {errors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-destructive text-sm font-normal\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-label\",\n    \"@radix-ui/react-slot\",\n    \"@hookform/resolvers\",\n    \"zod\",\n    \"react-hook-form\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as LabelPrimitive from \\\"@radix-ui/react-label\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport {\\n  Controller,\\n  FormProvider,\\n  useFormContext,\\n  type ControllerProps,\\n  type FieldPath,\\n  type FieldValues,\\n} from \\\"react-hook-form\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nconst Form = FormProvider\\n\\ntype FormFieldContextValue<\\n  TFieldValues extends FieldValues = FieldValues,\\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\\n> = {\\n  name: TName\\n}\\n\\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null)\\n\\nconst FormField = <\\n  TFieldValues extends FieldValues = FieldValues,\\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\\n>({\\n  ...props\\n}: ControllerProps<TFieldValues, TName>) => {\\n  return (\\n    <FormFieldContext.Provider value={{ name: props.name }}>\\n      <Controller {...props} />\\n    </FormFieldContext.Provider>\\n  )\\n}\\n\\nconst useFormField = () => {\\n  const fieldContext = React.useContext(FormFieldContext)\\n  const itemContext = React.useContext(FormItemContext)\\n  const { getFieldState, formState } = useFormContext()\\n\\n  if (!fieldContext) {\\n    throw new Error(\\\"useFormField should be used within <FormField>\\\")\\n  }\\n\\n  if (!itemContext) {\\n    throw new Error(\\\"useFormField should be used within <FormItem>\\\")\\n  }\\n\\n  const fieldState = getFieldState(fieldContext.name, formState)\\n\\n  const { id } = itemContext\\n\\n  return {\\n    id,\\n    name: fieldContext.name,\\n    formItemId: `${id}-form-item`,\\n    formDescriptionId: `${id}-form-item-description`,\\n    formMessageId: `${id}-form-item-message`,\\n    ...fieldState,\\n  }\\n}\\n\\ntype FormItemContextValue = {\\n  id: string\\n}\\n\\nconst FormItemContext = React.createContext<FormItemContextValue | null>(null)\\n\\nconst FormItem = React.forwardRef<\\n  HTMLDivElement,\\n  React.HTMLAttributes<HTMLDivElement>\\n>(({ className, ...props }, ref) => {\\n  const id = React.useId()\\n\\n  return (\\n    <FormItemContext.Provider value={{ id }}>\\n      <div ref={ref} className={cn(\\\"space-y-2\\\", className)} {...props} />\\n    </FormItemContext.Provider>\\n  )\\n})\\nFormItem.displayName = \\\"FormItem\\\"\\n\\nconst FormLabel = React.forwardRef<\\n  React.ElementRef<typeof LabelPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\\n>(({ className, ...props }, ref) => {\\n  const { error, formItemId } = useFormField()\\n\\n  return (\\n    <Label\\n      ref={ref}\\n      className={cn(error && \\\"text-destructive\\\", className)}\\n      htmlFor={formItemId}\\n      {...props}\\n    />\\n  )\\n})\\nFormLabel.displayName = \\\"FormLabel\\\"\\n\\nconst FormControl = React.forwardRef<\\n  React.ElementRef<typeof Slot>,\\n  React.ComponentPropsWithoutRef<typeof Slot>\\n>(({ ...props }, ref) => {\\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\\n\\n  return (\\n    <Slot\\n      ref={ref}\\n      id={formItemId}\\n      aria-describedby={\\n        !error\\n          ? `${formDescriptionId}`\\n          : `${formDescriptionId} ${formMessageId}`\\n      }\\n      aria-invalid={!!error}\\n      {...props}\\n    />\\n  )\\n})\\nFormControl.displayName = \\\"FormControl\\\"\\n\\nconst FormDescription = React.forwardRef<\\n  HTMLParagraphElement,\\n  React.HTMLAttributes<HTMLParagraphElement>\\n>(({ className, ...props }, ref) => {\\n  const { formDescriptionId } = useFormField()\\n\\n  return (\\n    <p\\n      ref={ref}\\n      id={formDescriptionId}\\n      className={cn(\\\"text-[0.8rem] text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nFormDescription.displayName = \\\"FormDescription\\\"\\n\\nconst FormMessage = React.forwardRef<\\n  HTMLParagraphElement,\\n  React.HTMLAttributes<HTMLParagraphElement>\\n>(({ className, children, ...props }, ref) => {\\n  const { error, formMessageId } = useFormField()\\n  const body = error ? String(error?.message ?? \\\"\\\") : children\\n\\n  if (!body) {\\n    return null\\n  }\\n\\n  return (\\n    <p\\n      ref={ref}\\n      id={formMessageId}\\n      className={cn(\\\"text-[0.8rem] font-medium text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {body}\\n    </p>\\n  )\\n})\\nFormMessage.displayName = \\\"FormMessage\\\"\\n\\nexport {\\n  useFormField,\\n  Form,\\n  FormItem,\\n  FormLabel,\\n  FormControl,\\n  FormDescription,\\n  FormMessage,\\n  FormField,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/hover-card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"hover-card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/hover-card-demo.tsx\",\n      \"content\": \"import { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/new-york/ui/hover-card\\\"\\n\\nexport default function HoverCardDemo() {\\n  return (\\n    <HoverCard>\\n      <HoverCardTrigger asChild>\\n        <Button variant=\\\"link\\\">@nextjs</Button>\\n      </HoverCardTrigger>\\n      <HoverCardContent className=\\\"w-80\\\">\\n        <div className=\\\"flex justify-between space-x-4\\\">\\n          <Avatar>\\n            <AvatarImage src=\\\"https://github.com/vercel.png\\\" />\\n            <AvatarFallback>VC</AvatarFallback>\\n          </Avatar>\\n          <div className=\\\"space-y-1\\\">\\n            <h4 className=\\\"text-sm font-semibold\\\">@nextjs</h4>\\n            <p className=\\\"text-sm\\\">\\n              The React Framework – created and maintained by @vercel.\\n            </p>\\n            <div className=\\\"flex items-center pt-2\\\">\\n              <CalendarIcon className=\\\"mr-2 h-4 w-4 opacity-70\\\" />{\\\" \\\"}\\n              <span className=\\\"text-xs text-muted-foreground\\\">\\n                Joined December 2021\\n              </span>\\n            </div>\\n          </div>\\n        </div>\\n      </HoverCardContent>\\n    </HoverCard>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-hover-card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as HoverCardPrimitive from \\\"@radix-ui/react-hover-card\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst HoverCard = HoverCardPrimitive.Root\\n\\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\\n\\nconst HoverCardContent = React.forwardRef<\\n  React.ElementRef<typeof HoverCardPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\\n>(({ className, align = \\\"center\\\", sideOffset = 4, ...props }, ref) => (\\n  <HoverCardPrimitive.Content\\n    ref={ref}\\n    align={align}\\n    sideOffset={sideOffset}\\n    className={cn(\\n      \\\"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"type\": \"registry:style\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"tailwindcss-animate\",\n    \"class-variance-authority\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"tailwind\": {\n    \"config\": {\n      \"plugins\": [\n        \"require(\\\"tailwindcss-animate\\\")\"\n      ]\n    }\n  },\n  \"cssVars\": {}\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-demo.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york/ui/input\\\"\\n\\nexport default function InputDemo() {\\n  return <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-disabled.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york/ui/input\\\"\\n\\nexport default function InputDisabled() {\\n  return <Input disabled type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-file.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-file\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-file.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function InputFile() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-1.5\\\">\\n      <Label htmlFor=\\\"picture\\\">Picture</Label>\\n      <Input id=\\\"picture\\\" type=\\\"file\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\n\\nconst FormSchema = z.object({\\n  username: z.string().min(2, {\\n    message: \\\"Username must be at least 2 characters.\\\",\\n  }),\\n})\\n\\nexport default function InputForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      username: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"username\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Username</FormLabel>\\n              <FormControl>\\n                <Input placeholder=\\\"shadcn\\\" {...field} />\\n              </FormControl>\\n              <FormDescription>\\n                This is your public display name.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/new-york/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group border-input dark:bg-input/30 shadow-xs relative flex w-full items-center rounded-md border outline-none transition-[color,box-shadow]\\\",\\n        \\\"h-9 has-[>textarea]:h-auto\\\",\\n\\n        // Variants based on alignment.\\n        \\\"has-[>[data-align=inline-start]]:[&>input]:pl-2\\\",\\n        \\\"has-[>[data-align=inline-end]]:[&>input]:pr-2\\\",\\n        \\\"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\\\",\\n        \\\"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\\\",\\n\\n        // Focus state.\\n        \\\"has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1\\\",\\n\\n        // Error state.\\n        \\\"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\\\",\\n\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5\\\",\\n        \\\"block-end\\\":\\n          \\\"[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants>) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"text-muted-foreground flex items-center gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-otp-controlled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-controlled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-controlled.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york/ui/input-otp\\\"\\n\\nexport default function InputOTPControlled() {\\n  const [value, setValue] = React.useState(\\\"\\\")\\n\\n  return (\\n    <div className=\\\"space-y-2\\\">\\n      <InputOTP\\n        maxLength={6}\\n        value={value}\\n        onChange={(value) => setValue(value)}\\n      >\\n        <InputOTPGroup>\\n          <InputOTPSlot index={0} />\\n          <InputOTPSlot index={1} />\\n          <InputOTPSlot index={2} />\\n          <InputOTPSlot index={3} />\\n          <InputOTPSlot index={4} />\\n          <InputOTPSlot index={5} />\\n        </InputOTPGroup>\\n      </InputOTP>\\n      <div className=\\\"text-center text-sm\\\">\\n        {value === \\\"\\\" ? (\\n          <>Enter your one-time password.</>\\n        ) : (\\n          <>You entered: {value}</>\\n        )}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-otp-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-demo.tsx\",\n      \"content\": \"import {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york/ui/input-otp\\\"\\n\\nexport default function InputOTPDemo() {\\n  return (\\n    <InputOTP maxLength={6}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n        <InputOTPSlot index={2} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={3} />\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-otp-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york/ui/input-otp\\\"\\n\\nconst FormSchema = z.object({\\n  pin: z.string().min(6, {\\n    message: \\\"Your one-time password must be 6 characters.\\\",\\n  }),\\n})\\n\\nexport default function InputOTPForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      pin: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"pin\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>One-Time Password</FormLabel>\\n              <FormControl>\\n                <InputOTP maxLength={6} {...field}>\\n                  <InputOTPGroup>\\n                    <InputOTPSlot index={0} />\\n                    <InputOTPSlot index={1} />\\n                    <InputOTPSlot index={2} />\\n                    <InputOTPSlot index={3} />\\n                    <InputOTPSlot index={4} />\\n                    <InputOTPSlot index={5} />\\n                  </InputOTPGroup>\\n                </InputOTP>\\n              </FormControl>\\n              <FormDescription>\\n                Please enter the one-time password sent to your phone.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-otp-pattern.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-pattern\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-pattern.tsx\",\n      \"content\": \"import { REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york/ui/input-otp\\\"\\n\\nexport default function InputOTPPattern() {\\n  return (\\n    <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n        <InputOTPSlot index={2} />\\n        <InputOTPSlot index={3} />\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-otp-separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-separator\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-otp-separator.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york/ui/input-otp\\\"\\n\\nexport default function InputOTPWithSeparator() {\\n  return (\\n    <InputOTP maxLength={6}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={2} />\\n        <InputOTPSlot index={3} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\nimport { Minus } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst InputOTP = React.forwardRef<\\n  React.ElementRef<typeof OTPInput>,\\n  React.ComponentPropsWithoutRef<typeof OTPInput>\\n>(({ className, containerClassName, ...props }, ref) => (\\n  <OTPInput\\n    ref={ref}\\n    containerClassName={cn(\\n      \\\"flex items-center gap-2 has-[:disabled]:opacity-50\\\",\\n      containerClassName\\n    )}\\n    className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n    {...props}\\n  />\\n))\\nInputOTP.displayName = \\\"InputOTP\\\"\\n\\nconst InputOTPGroup = React.forwardRef<\\n  React.ElementRef<\\\"div\\\">,\\n  React.ComponentPropsWithoutRef<\\\"div\\\">\\n>(({ className, ...props }, ref) => (\\n  <div ref={ref} className={cn(\\\"flex items-center\\\", className)} {...props} />\\n))\\nInputOTPGroup.displayName = \\\"InputOTPGroup\\\"\\n\\nconst InputOTPSlot = React.forwardRef<\\n  React.ElementRef<\\\"div\\\">,\\n  React.ComponentPropsWithoutRef<\\\"div\\\"> & { index: number }\\n>(({ index, className, ...props }, ref) => {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]\\n\\n  return (\\n    <div\\n      ref={ref}\\n      className={cn(\\n        \\\"relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\\\",\\n        isActive && \\\"z-10 ring-1 ring-ring\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n})\\nInputOTPSlot.displayName = \\\"InputOTPSlot\\\"\\n\\nconst InputOTPSeparator = React.forwardRef<\\n  React.ElementRef<\\\"div\\\">,\\n  React.ComponentPropsWithoutRef<\\\"div\\\">\\n>(({ ...props }, ref) => (\\n  <div ref={ref} role=\\\"separator\\\" {...props}>\\n    <Minus />\\n  </div>\\n))\\nInputOTPSeparator.displayName = \\\"InputOTPSeparator\\\"\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-with-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-button\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-with-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\n\\nexport default function InputWithButton() {\\n  return (\\n    <div className=\\\"flex w-full max-w-sm items-center space-x-2\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n      <Button type=\\\"submit\\\">Subscribe</Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-with-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-label\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-with-label.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function InputWithLabel() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-1.5\\\">\\n      <Label htmlFor=\\\"email\\\">Email</Label>\\n      <Input type=\\\"email\\\" id=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-text\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/input-with-text.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function InputWithText() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-1.5\\\">\\n      <Label htmlFor=\\\"email-2\\\">Email</Label>\\n      <Input type=\\\"email\\\" id=\\\"email-2\\\" placeholder=\\\"Email\\\" />\\n      <p className=\\\"text-sm text-muted-foreground\\\">Enter your email address.</p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\\\"input\\\">>(\\n  ({ className, type, ...props }, ref) => {\\n    return (\\n      <input\\n        type={type}\\n        className={cn(\\n          \\\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n          className\\n        )}\\n        ref={ref}\\n        {...props}\\n      />\\n    )\\n  }\\n)\\nInput.displayName = \\\"Input\\\"\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\\"group/item-group flex flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 [a]:transition-colors flex flex-wrap items-center rounded-md border border-transparent text-sm outline-none transition-colors duration-100 focus-visible:ring-[3px]\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-4 p-4 \\\",\\n        sm: \\\"gap-2.5 px-4 py-3\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> &\\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot : \\\"div\\\"\\n  return (\\n    <Comp\\n      data-slot=\\\"item\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(itemVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"bg-muted size-8 rounded-sm border [&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm font-medium leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"text-muted-foreground line-clamp-2 text-balance text-sm font-normal leading-normal\\\",\\n        \\\"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 select-none items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium\\\",\\n        \\\"[&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/label-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/label-demo.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport default function LabelDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <Label htmlFor=\\\"terms\\\">Accept terms and conditions</Label>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as LabelPrimitive from \\\"@radix-ui/react-label\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst labelVariants = cva(\\n  \\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n)\\n\\nconst Label = React.forwardRef<\\n  React.ElementRef<typeof LabelPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\\n    VariantProps<typeof labelVariants>\\n>(({ className, ...props }, ref) => (\\n  <LabelPrimitive.Root\\n    ref={ref}\\n    className={cn(labelVariants(), className)}\\n    {...props}\\n  />\\n))\\nLabel.displayName = LabelPrimitive.Root.displayName\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/new-york/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle className=\\\"text-2xl\\\">Login</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <div className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"grid gap-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </div>\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex items-center\\\">\\n                  <Label htmlFor=\\\"password\\\">Password</Label>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </div>\\n              <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n                Login\\n              </Button>\\n              <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                Login with Google\\n              </Button>\\n            </div>\\n            <div className=\\\"mt-4 text-center text-sm\\\">\\n              Don&apos;t have an account?{\\\" \\\"}\\n              <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n                Sign up\\n              </a>\\n            </div>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-02/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { LoginForm } from \\\"@/registry/new-york/blocks/login-02/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex h-6 w-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <GalleryVerticalEnd className=\\\"size-4\\\" />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/default/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n        <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n        <p className=\\\"text-balance text-sm text-muted-foreground\\\">\\n          Enter your email below to login to your account\\n        </p>\\n      </div>\\n      <div className=\\\"grid gap-6\\\">\\n        <div className=\\\"grid gap-2\\\">\\n          <Label htmlFor=\\\"email\\\">Email</Label>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n        </div>\\n        <div className=\\\"grid gap-2\\\">\\n          <div className=\\\"flex items-center\\\">\\n            <Label htmlFor=\\\"password\\\">Password</Label>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n        </div>\\n        <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n          Login\\n        </Button>\\n        <div className=\\\"relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border\\\">\\n          <span className=\\\"relative z-10 bg-background px-2 text-muted-foreground\\\">\\n            Or continue with\\n          </span>\\n        </div>\\n        <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n          <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n            <path\\n              d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n              fill=\\\"currentColor\\\"\\n            />\\n          </svg>\\n          Login with GitHub\\n        </Button>\\n      </div>\\n      <div className=\\\"text-center text-sm\\\">\\n        Don&apos;t have an account?{\\\" \\\"}\\n        <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n          Sign up\\n        </a>\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-03/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { LoginForm } from \\\"@/registry/new-york/blocks/login-03/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex h-6 w-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <GalleryVerticalEnd className=\\\"size-4\\\" />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <div className=\\\"grid gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </div>\\n              <div className=\\\"relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border\\\">\\n                <span className=\\\"relative z-10 bg-background px-2 text-muted-foreground\\\">\\n                  Or continue with\\n                </span>\\n              </div>\\n              <div className=\\\"grid gap-6\\\">\\n                <div className=\\\"grid gap-2\\\">\\n                  <Label htmlFor=\\\"email\\\">Email</Label>\\n                  <Input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"m@example.com\\\"\\n                    required\\n                  />\\n                </div>\\n                <div className=\\\"grid gap-2\\\">\\n                  <div className=\\\"flex items-center\\\">\\n                    <Label htmlFor=\\\"password\\\">Password</Label>\\n                    <a\\n                      href=\\\"#\\\"\\n                      className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                    >\\n                      Forgot your password?\\n                    </a>\\n                  </div>\\n                  <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                </div>\\n                <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n                  Login\\n                </Button>\\n              </div>\\n              <div className=\\\"text-center text-sm\\\">\\n                Don&apos;t have an account?{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n                  Sign up\\n                </a>\\n              </div>\\n            </div>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <div className=\\\"text-balance text-center text-xs text-muted-foreground [&_a]:underline [&_a]:underline-offset-4 [&_a]:hover:text-primary  \\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/new-york/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-3xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/new-york/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <div className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col items-center text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <div className=\\\"grid gap-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </div>\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex items-center\\\">\\n                  <Label htmlFor=\\\"password\\\">Password</Label>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </div>\\n              <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n                Login\\n              </Button>\\n              <div className=\\\"relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border\\\">\\n                <span className=\\\"relative z-10 bg-background px-2 text-muted-foreground\\\">\\n                  Or continue with\\n                </span>\\n              </div>\\n              <div className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </div>\\n              <div className=\\\"text-center text-sm\\\">\\n                Don&apos;t have an account?{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n                  Sign up\\n                </a>\\n              </div>\\n            </div>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <div className=\\\"text-balance text-center text-xs text-muted-foreground [&_a]:underline [&_a]:underline-offset-4 hover:[&_a]:text-primary\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/new-york/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/login-05/components/login-form.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/registry/new-york/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <div className=\\\"flex flex-col gap-6\\\">\\n          <div className=\\\"flex flex-col items-center gap-2\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex h-8 w-8 items-center justify-center rounded-md\\\">\\n                <GalleryVerticalEnd className=\\\"size-6\\\" />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <div className=\\\"text-center text-sm\\\">\\n              Don&apos;t have an account?{\\\" \\\"}\\n              <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n                Sign up\\n              </a>\\n            </div>\\n          </div>\\n          <div className=\\\"flex flex-col gap-6\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n            </div>\\n            <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n              Login\\n            </Button>\\n          </div>\\n          <div className=\\\"relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border\\\">\\n            <span className=\\\"relative z-10 bg-background px-2 text-muted-foreground\\\">\\n              Or\\n            </span>\\n          </div>\\n          <div className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </div>\\n        </div>\\n      </form>\\n      <div className=\\\"text-balance text-center text-xs text-muted-foreground [&_a]:underline [&_a]:underline-offset-4 hover:[&_a]:text-primary  \\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/menubar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"menubar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/menubar-demo.tsx\",\n      \"content\": \"import {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarItem,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/new-york/ui/menubar\\\"\\n\\nexport default function MenubarDemo() {\\n  return (\\n    <Menubar>\\n      <MenubarMenu>\\n        <MenubarTrigger>File</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled>New Incognito Window</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Email link</MenubarItem>\\n              <MenubarItem>Messages</MenubarItem>\\n              <MenubarItem>Notes</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>\\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n          </MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Edit</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Search the web</MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem>Find...</MenubarItem>\\n              <MenubarItem>Find Next</MenubarItem>\\n              <MenubarItem>Find Previous</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>Cut</MenubarItem>\\n          <MenubarItem>Copy</MenubarItem>\\n          <MenubarItem>Paste</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>View</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n          <MenubarCheckboxItem checked>\\n            Always Show Full URLs\\n          </MenubarCheckboxItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>\\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled inset>\\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Toggle Fullscreen</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Hide Sidebar</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Profiles</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarRadioGroup value=\\\"benoit\\\">\\n            <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"Luis\\\">Luis</MenubarRadioItem>\\n          </MenubarRadioGroup>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Edit...</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Add Profile...</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n    </Menubar>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-menubar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as MenubarPrimitive from \\\"@radix-ui/react-menubar\\\"\\nimport { Check, ChevronRight, Circle } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction MenubarMenu({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\\n  return <MenubarPrimitive.Menu {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\\n  return <MenubarPrimitive.Group {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\\n  return <MenubarPrimitive.Portal {...props} />\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\\n  return <MenubarPrimitive.RadioGroup {...props} />\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\\n  return <MenubarPrimitive.Sub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nconst Menubar = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\\n>(({ className, ...props }, ref) => (\\n  <MenubarPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubar.displayName = MenubarPrimitive.Root.displayName\\n\\nconst MenubarTrigger = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\\n>(({ className, ...props }, ref) => (\\n  <MenubarPrimitive.Trigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\\n\\nconst MenubarSubTrigger = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, children, ...props }, ref) => (\\n  <MenubarPrimitive.SubTrigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <ChevronRight className=\\\"ml-auto h-4 w-4\\\" />\\n  </MenubarPrimitive.SubTrigger>\\n))\\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\\n\\nconst MenubarSubContent = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.SubContent>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\\n>(({ className, ...props }, ref) => (\\n  <MenubarPrimitive.SubContent\\n    ref={ref}\\n    className={cn(\\n      \\\"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\\n\\nconst MenubarContent = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\\n>(\\n  (\\n    { className, align = \\\"start\\\", alignOffset = -4, sideOffset = 8, ...props },\\n    ref\\n  ) => (\\n    <MenubarPrimitive.Portal>\\n      <MenubarPrimitive.Content\\n        ref={ref}\\n        align={align}\\n        alignOffset={alignOffset}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </MenubarPrimitive.Portal>\\n  )\\n)\\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\\n\\nconst MenubarItem = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <MenubarPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\\n\\nconst MenubarCheckboxItem = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\\n>(({ className, children, checked, ...props }, ref) => (\\n  <MenubarPrimitive.CheckboxItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    checked={checked}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <MenubarPrimitive.ItemIndicator>\\n        <Check className=\\\"h-4 w-4\\\" />\\n      </MenubarPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </MenubarPrimitive.CheckboxItem>\\n))\\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\\n\\nconst MenubarRadioItem = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.RadioItem>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\\n>(({ className, children, ...props }, ref) => (\\n  <MenubarPrimitive.RadioItem\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <span className=\\\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <MenubarPrimitive.ItemIndicator>\\n        <Circle className=\\\"h-4 w-4 fill-current\\\" />\\n      </MenubarPrimitive.ItemIndicator>\\n    </span>\\n    {children}\\n  </MenubarPrimitive.RadioItem>\\n))\\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\\n\\nconst MenubarLabel = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Label>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\\n    inset?: boolean\\n  }\\n>(({ className, inset, ...props }, ref) => (\\n  <MenubarPrimitive.Label\\n    ref={ref}\\n    className={cn(\\n      \\\"px-2 py-1.5 text-sm font-semibold\\\",\\n      inset && \\\"pl-8\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\\n\\nconst MenubarSeparator = React.forwardRef<\\n  React.ElementRef<typeof MenubarPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <MenubarPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 my-1 h-px bg-muted\\\", className)}\\n    {...props}\\n  />\\n))\\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\\n\\nconst MenubarShortcut = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLSpanElement>) => {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\nMenubarShortcut.displayname = \\\"MenubarShortcut\\\"\\n\\nexport {\\n  Menubar,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarItem,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarPortal,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarGroup,\\n  MenubarSub,\\n  MenubarShortcut,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/mode-toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"mode-toggle\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/mode-toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Moon, Sun } from \\\"lucide-react\\\"\\nimport { useTheme } from \\\"next-themes\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nexport default function ModeToggle() {\\n  const { setTheme } = useTheme()\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n          <Sun className=\\\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\\\" />\\n          <Moon className=\\\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\\\" />\\n          <span className=\\\"sr-only\\\">Toggle theme</span>\\n        </Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent align=\\\"end\\\">\\n        <DropdownMenuItem onClick={() => setTheme(\\\"light\\\")}>\\n          Light\\n        </DropdownMenuItem>\\n        <DropdownMenuItem onClick={() => setTheme(\\\"dark\\\")}>\\n          Dark\\n        </DropdownMenuItem>\\n        <DropdownMenuItem onClick={() => setTheme(\\\"system\\\")}>\\n          System\\n        </DropdownMenuItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/navigation-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"navigation-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/navigation-menu-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Icons } from \\\"@/components/icons\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/new-york/ui/navigation-menu\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuDemo() {\\n  return (\\n    <NavigationMenu>\\n      <NavigationMenuList>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid gap-3 p-4 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\\\">\\n              <li className=\\\"row-span-3\\\">\\n                <NavigationMenuLink asChild>\\n                  <a\\n                    className=\\\"flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md\\\"\\n                    href=\\\"/\\\"\\n                  >\\n                    <Icons.logo className=\\\"h-6 w-6\\\" />\\n                    <div className=\\\"mb-2 mt-4 text-lg font-medium\\\">\\n                      shadcn/ui\\n                    </div>\\n                    <p className=\\\"text-sm leading-tight text-muted-foreground\\\">\\n                      Beautifully designed components built with Radix UI and\\n                      Tailwind CSS.\\n                    </p>\\n                  </a>\\n                </NavigationMenuLink>\\n              </li>\\n              <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                Re-usable components built using Radix UI and Tailwind CSS.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                How to install dependencies and structure your app.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                Styles for headings, paragraphs, lists...etc\\n              </ListItem>\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px] \\\">\\n              {components.map((component) => (\\n                <ListItem\\n                  key={component.title}\\n                  title={component.title}\\n                  href={component.href}\\n                >\\n                  {component.description}\\n                </ListItem>\\n              ))}\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <Link href=\\\"/docs\\\" legacyBehavior passHref>\\n            <NavigationMenuLink className={navigationMenuTriggerStyle()}>\\n              Documentation\\n            </NavigationMenuLink>\\n          </Link>\\n        </NavigationMenuItem>\\n      </NavigationMenuList>\\n    </NavigationMenu>\\n  )\\n}\\n\\nconst ListItem = React.forwardRef<\\n  React.ElementRef<\\\"a\\\">,\\n  React.ComponentPropsWithoutRef<\\\"a\\\">\\n>(({ className, title, children, ...props }, ref) => {\\n  return (\\n    <li>\\n      <NavigationMenuLink asChild>\\n        <a\\n          ref={ref}\\n          className={cn(\\n            \\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <div className=\\\"text-sm font-medium leading-none\\\">{title}</div>\\n          <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n            {children}\\n          </p>\\n        </a>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n})\\nListItem.displayName = \\\"ListItem\\\"\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-navigation-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/navigation-menu.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport * as NavigationMenuPrimitive from \\\"@radix-ui/react-navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { ChevronDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst NavigationMenu = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\\n>(({ className, children, ...props }, ref) => (\\n  <NavigationMenuPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"relative z-10 flex max-w-max flex-1 items-center justify-center\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <NavigationMenuViewport />\\n  </NavigationMenuPrimitive.Root>\\n))\\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\\n\\nconst NavigationMenuList = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.List>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\\n>(({ className, ...props }, ref) => (\\n  <NavigationMenuPrimitive.List\\n    ref={ref}\\n    className={cn(\\n      \\\"group flex flex-1 list-none items-center justify-center space-x-1\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\\n\\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent\\\"\\n)\\n\\nconst NavigationMenuTrigger = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\\n>(({ className, children, ...props }, ref) => (\\n  <NavigationMenuPrimitive.Trigger\\n    ref={ref}\\n    className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n    {...props}\\n  >\\n    {children}{\\\" \\\"}\\n    <ChevronDown\\n      className=\\\"relative top-[1px] ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180\\\"\\n      aria-hidden=\\\"true\\\"\\n    />\\n  </NavigationMenuPrimitive.Trigger>\\n))\\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\\n\\nconst NavigationMenuContent = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\\n>(({ className, ...props }, ref) => (\\n  <NavigationMenuPrimitive.Content\\n    ref={ref}\\n    className={cn(\\n      \\\"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto \\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\\n\\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\\n\\nconst NavigationMenuViewport = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\\n>(({ className, ...props }, ref) => (\\n  <div className={cn(\\\"absolute left-0 top-full flex justify-center\\\")}>\\n    <NavigationMenuPrimitive.Viewport\\n      className={cn(\\n        \\\"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\\\",\\n        className\\n      )}\\n      ref={ref}\\n      {...props}\\n    />\\n  </div>\\n))\\nNavigationMenuViewport.displayName =\\n  NavigationMenuPrimitive.Viewport.displayName\\n\\nconst NavigationMenuIndicator = React.forwardRef<\\n  React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\\n>(({ className, ...props }, ref) => (\\n  <NavigationMenuPrimitive.Indicator\\n    ref={ref}\\n    className={cn(\\n      \\\"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n  </NavigationMenuPrimitive.Indicator>\\n))\\nNavigationMenuIndicator.displayName =\\n  NavigationMenuPrimitive.Indicator.displayName\\n\\nexport {\\n  navigationMenuTriggerStyle,\\n  NavigationMenu,\\n  NavigationMenuList,\\n  NavigationMenuItem,\\n  NavigationMenuContent,\\n  NavigationMenuTrigger,\\n  NavigationMenuLink,\\n  NavigationMenuIndicator,\\n  NavigationMenuViewport,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/pagination-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"pagination\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/pagination-demo.tsx\",\n      \"content\": \"import {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/new-york/ui/pagination\\\"\\n\\nexport default function PaginationDemo() {\\n  return (\\n    <Pagination>\\n      <PaginationContent>\\n        <PaginationItem>\\n          <PaginationPrevious href=\\\"#\\\" />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\" isActive>\\n            2\\n          </PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationEllipsis />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationNext href=\\\"#\\\" />\\n        </PaginationItem>\\n      </PaginationContent>\\n    </Pagination>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { ButtonProps, buttonVariants } from \\\"@/registry/new-york/ui/button\\\"\\n\\nconst Pagination = ({ className, ...props }: React.ComponentProps<\\\"nav\\\">) => (\\n  <nav\\n    role=\\\"navigation\\\"\\n    aria-label=\\\"pagination\\\"\\n    className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n    {...props}\\n  />\\n)\\nPagination.displayName = \\\"Pagination\\\"\\n\\nconst PaginationContent = React.forwardRef<\\n  HTMLUListElement,\\n  React.ComponentProps<\\\"ul\\\">\\n>(({ className, ...props }, ref) => (\\n  <ul\\n    ref={ref}\\n    className={cn(\\\"flex flex-row items-center gap-1\\\", className)}\\n    {...props}\\n  />\\n))\\nPaginationContent.displayName = \\\"PaginationContent\\\"\\n\\nconst PaginationItem = React.forwardRef<\\n  HTMLLIElement,\\n  React.ComponentProps<\\\"li\\\">\\n>(({ className, ...props }, ref) => (\\n  <li ref={ref} className={cn(\\\"\\\", className)} {...props} />\\n))\\nPaginationItem.displayName = \\\"PaginationItem\\\"\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<ButtonProps, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nconst PaginationLink = ({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) => (\\n  <a\\n    aria-current={isActive ? \\\"page\\\" : undefined}\\n    className={cn(\\n      buttonVariants({\\n        variant: isActive ? \\\"outline\\\" : \\\"ghost\\\",\\n        size,\\n      }),\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nPaginationLink.displayName = \\\"PaginationLink\\\"\\n\\nconst PaginationPrevious = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink>) => (\\n  <PaginationLink\\n    aria-label=\\\"Go to previous page\\\"\\n    size=\\\"default\\\"\\n    className={cn(\\\"gap-1 pl-2.5\\\", className)}\\n    {...props}\\n  >\\n    <ChevronLeft className=\\\"h-4 w-4\\\" />\\n    <span>Previous</span>\\n  </PaginationLink>\\n)\\nPaginationPrevious.displayName = \\\"PaginationPrevious\\\"\\n\\nconst PaginationNext = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink>) => (\\n  <PaginationLink\\n    aria-label=\\\"Go to next page\\\"\\n    size=\\\"default\\\"\\n    className={cn(\\\"gap-1 pr-2.5\\\", className)}\\n    {...props}\\n  >\\n    <span>Next</span>\\n    <ChevronRight className=\\\"h-4 w-4\\\" />\\n  </PaginationLink>\\n)\\nPaginationNext.displayName = \\\"PaginationNext\\\"\\n\\nconst PaginationEllipsis = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) => (\\n  <span\\n    aria-hidden\\n    className={cn(\\\"flex h-9 w-9 items-center justify-center\\\", className)}\\n    {...props}\\n  >\\n    <MoreHorizontal className=\\\"h-4 w-4\\\" />\\n    <span className=\\\"sr-only\\\">More pages</span>\\n  </span>\\n)\\nPaginationEllipsis.displayName = \\\"PaginationEllipsis\\\"\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationLink,\\n  PaginationItem,\\n  PaginationPrevious,\\n  PaginationNext,\\n  PaginationEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/popover-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/popover-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport default function PopoverDemo() {\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open popover</Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-80\\\">\\n        <div className=\\\"grid gap-4\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <h4 className=\\\"font-medium leading-none\\\">Dimensions</h4>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Set the dimensions for the layer.\\n            </p>\\n          </div>\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"width\\\">Width</Label>\\n              <Input\\n                id=\\\"width\\\"\\n                defaultValue=\\\"100%\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxWidth\\\">Max. width</Label>\\n              <Input\\n                id=\\\"maxWidth\\\"\\n                defaultValue=\\\"300px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"height\\\">Height</Label>\\n              <Input\\n                id=\\\"height\\\"\\n                defaultValue=\\\"25px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxHeight\\\">Max. height</Label>\\n              <Input\\n                id=\\\"maxHeight\\\"\\n                defaultValue=\\\"none\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n          </div>\\n        </div>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as PopoverPrimitive from \\\"@radix-ui/react-popover\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Popover = PopoverPrimitive.Root\\n\\nconst PopoverTrigger = PopoverPrimitive.Trigger\\n\\nconst PopoverAnchor = PopoverPrimitive.Anchor\\n\\nconst PopoverContent = React.forwardRef<\\n  React.ElementRef<typeof PopoverPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\\n>(({ className, align = \\\"center\\\", sideOffset = 4, ...props }, ref) => (\\n  <PopoverPrimitive.Portal>\\n    <PopoverPrimitive.Content\\n      ref={ref}\\n      align={align}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </PopoverPrimitive.Portal>\\n))\\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\\n\\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/progress-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"progress\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/progress-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Progress } from \\\"@/registry/new-york/ui/progress\\\"\\n\\nexport default function ProgressDemo() {\\n  const [progress, setProgress] = React.useState(13)\\n\\n  React.useEffect(() => {\\n    const timer = setTimeout(() => setProgress(66), 500)\\n    return () => clearTimeout(timer)\\n  }, [])\\n\\n  return <Progress value={progress} className=\\\"w-[60%]\\\" />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-progress\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ProgressPrimitive from \\\"@radix-ui/react-progress\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Progress = React.forwardRef<\\n  React.ElementRef<typeof ProgressPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\\n>(({ className, value, ...props }, ref) => (\\n  <ProgressPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <ProgressPrimitive.Indicator\\n      className=\\\"h-full w-full flex-1 bg-primary transition-all\\\"\\n      style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n    />\\n  </ProgressPrimitive.Root>\\n))\\nProgress.displayName = ProgressPrimitive.Root.displayName\\n\\nexport { Progress }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/radio-group-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/radio-group-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/new-york/ui/radio-group\\\"\\n\\nexport default function RadioGroupDemo() {\\n  return (\\n    <RadioGroup defaultValue=\\\"comfortable\\\">\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n        <Label htmlFor=\\\"r1\\\">Default</Label>\\n      </div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n        <Label htmlFor=\\\"r2\\\">Comfortable</Label>\\n      </div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n        <Label htmlFor=\\\"r3\\\">Compact</Label>\\n      </div>\\n    </RadioGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/radio-group-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"radio-group\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/radio-group-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/new-york/ui/radio-group\\\"\\n\\nconst FormSchema = z.object({\\n  type: z.enum([\\\"all\\\", \\\"mentions\\\", \\\"none\\\"], {\\n    required_error: \\\"You need to select a notification type.\\\",\\n  }),\\n})\\n\\nexport default function RadioGroupForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"type\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"space-y-3\\\">\\n              <FormLabel>Notify me about...</FormLabel>\\n              <FormControl>\\n                <RadioGroup\\n                  onValueChange={field.onChange}\\n                  defaultValue={field.value}\\n                  className=\\\"flex flex-col space-y-1\\\"\\n                >\\n                  <FormItem className=\\\"flex items-center space-x-3 space-y-0\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"all\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">\\n                      All new messages\\n                    </FormLabel>\\n                  </FormItem>\\n                  <FormItem className=\\\"flex items-center space-x-3 space-y-0\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"mentions\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">\\n                      Direct messages and mentions\\n                    </FormLabel>\\n                  </FormItem>\\n                  <FormItem className=\\\"flex items-center space-x-3 space-y-0\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"none\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">Nothing</FormLabel>\\n                  </FormItem>\\n                </RadioGroup>\\n              </FormControl>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RadioGroupPrimitive from \\\"@radix-ui/react-radio-group\\\"\\nimport { Circle } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst RadioGroup = React.forwardRef<\\n  React.ElementRef<typeof RadioGroupPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <RadioGroupPrimitive.Root\\n      className={cn(\\\"grid gap-2\\\", className)}\\n      {...props}\\n      ref={ref}\\n    />\\n  )\\n})\\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\\n\\nconst RadioGroupItem = React.forwardRef<\\n  React.ElementRef<typeof RadioGroupPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <RadioGroupPrimitive.Item\\n      ref={ref}\\n      className={cn(\\n        \\\"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioGroupPrimitive.Indicator className=\\\"flex items-center justify-center\\\">\\n        <Circle className=\\\"h-3.5 w-3.5 fill-primary\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n})\\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\n        \"tailwindcss-animate\",\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"utils\"\n      ],\n      \"files\": [],\n      \"tailwind\": {\n        \"config\": {\n          \"plugins\": [\n            \"require(\\\"tailwindcss-animate\\\")\"\n          ]\n        }\n      },\n      \"cssVars\": {}\n    },\n    {\n      \"name\": \"style\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\n        \"tailwindcss-animate\",\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"utils\"\n      ],\n      \"files\": [],\n      \"tailwind\": {\n        \"config\": {\n          \"plugins\": [\n            \"require(\\\"tailwindcss-animate\\\")\"\n          ]\n        }\n      },\n      \"cssVars\": {}\n    },\n    {\n      \"name\": \"accordion\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-accordion\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/accordion.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ],\n      \"tailwind\": {\n        \"config\": {\n          \"theme\": {\n            \"extend\": {\n              \"keyframes\": {\n                \"accordion-down\": {\n                  \"from\": {\n                    \"height\": \"0\"\n                  },\n                  \"to\": {\n                    \"height\": \"var(--radix-accordion-content-height)\"\n                  }\n                },\n                \"accordion-up\": {\n                  \"from\": {\n                    \"height\": \"var(--radix-accordion-content-height)\"\n                  },\n                  \"to\": {\n                    \"height\": \"0\"\n                  }\n                }\n              },\n              \"animation\": {\n                \"accordion-down\": \"accordion-down 0.2s ease-out\",\n                \"accordion-up\": \"accordion-up 0.2s ease-out\"\n              }\n            }\n          }\n        }\n      }\n    },\n    {\n      \"name\": \"alert\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/alert.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-alert-dialog\"\n      ],\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-aspect-ratio\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"avatar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/avatar.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/badge.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/button.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/button-group.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-day-picker@latest\",\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/calendar.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/card.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"embla-carousel-react\"\n      ],\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/carousel.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"recharts@2.15.4\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/chart.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"collapsible\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"cmdk\"\n      ],\n      \"registryDependencies\": [\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/command.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"context-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-context-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/dialog.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"vaul\",\n        \"@radix-ui/react-dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/drawer.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/empty.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"label\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/field.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-label\",\n        \"@radix-ui/react-slot\",\n        \"@hookform/resolvers\",\n        \"zod\",\n        \"react-hook-form\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/form.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hover-card\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-hover-card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/input.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/input-group.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/item.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"kbd\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/kbd.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"label\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/label.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"menubar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-menubar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/menubar.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-navigation-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pagination\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/pagination.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"popover\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/popover.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"progress\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-progress\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/progress.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-resizable-panels\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/resizable.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-scroll-area\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/select.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"separator\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/separator.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/sheet.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\",\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ],\n      \"tailwind\": {\n        \"config\": {\n          \"theme\": {\n            \"extend\": {\n              \"colors\": {\n                \"sidebar\": {\n                  \"DEFAULT\": \"hsl(var(--sidebar-background))\",\n                  \"foreground\": \"hsl(var(--sidebar-foreground))\",\n                  \"primary\": \"hsl(var(--sidebar-primary))\",\n                  \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n                  \"accent\": \"hsl(var(--sidebar-accent))\",\n                  \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n                  \"border\": \"hsl(var(--sidebar-border))\",\n                  \"ring\": \"hsl(var(--sidebar-ring))\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"cssVars\": {\n        \"light\": {\n          \"sidebar-background\": \"0 0% 98%\",\n          \"sidebar-foreground\": \"240 5.3% 26.1%\",\n          \"sidebar-primary\": \"240 5.9% 10%\",\n          \"sidebar-primary-foreground\": \"0 0% 98%\",\n          \"sidebar-accent\": \"240 4.8% 95.9%\",\n          \"sidebar-accent-foreground\": \"240 5.9% 10%\",\n          \"sidebar-border\": \"220 13% 91%\",\n          \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n        },\n        \"dark\": {\n          \"sidebar-background\": \"240 5.9% 10%\",\n          \"sidebar-foreground\": \"240 4.8% 95.9%\",\n          \"sidebar-primary\": \"224.3 76.3% 48%\",\n          \"sidebar-primary-foreground\": \"0 0% 100%\",\n          \"sidebar-accent\": \"240 3.7% 15.9%\",\n          \"sidebar-accent-foreground\": \"240 4.8% 95.9%\",\n          \"sidebar-border\": \"240 3.7% 15.9%\",\n          \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n        }\n      }\n    },\n    {\n      \"name\": \"skeleton\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"slider\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slider\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/slider.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"sonner\",\n        \"next-themes\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/sonner.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"class-variance-authority\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/spinner.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/switch.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/table.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tabs\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-tabs\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/tabs.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/textarea.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/toast.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/hooks/use-toast.ts\",\n          \"type\": \"registry:hook\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/ui/toaster.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/toggle.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-toggle-group\"\n      ],\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tooltip\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"button\",\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"sidebar\",\n        \"dashboard\"\n      ]\n    },\n    {\n      \"name\": \"login-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"login-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"login-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"login-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"login-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"authentication\",\n        \"login\"\n      ]\n    },\n    {\n      \"name\": \"calendar-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple calendar.\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-01.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Multiple months with single selection.\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-02.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Multiple months with multiple selection.\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-03.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Single month with range selection\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-04.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0 xl:pt-28\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Multiple months with range selection\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-05.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Range selection with minimum days\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-06.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Range selection with minimum and maximum days\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-07.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Calendar with disabled days\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-08.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Calendar with disabled weekends\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-09.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Today button\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-10.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Start and end of month\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-11.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Localized calendar\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-12.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"With Month and Year Dropdown\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"label\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-13.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"With Booked/Unavailable Days\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-14.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"With Week Numbers\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-15.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-16\",\n      \"type\": \"registry:block\",\n      \"description\": \"With time picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-16.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-17\",\n      \"type\": \"registry:block\",\n      \"description\": \"With time picker inline\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-17.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-18\",\n      \"type\": \"registry:block\",\n      \"description\": \"Variable size\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-18.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-19\",\n      \"type\": \"registry:block\",\n      \"description\": \"With presets\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-19.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-20\",\n      \"type\": \"registry:block\",\n      \"description\": \"With time presets\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-20.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-21\",\n      \"type\": \"registry:block\",\n      \"description\": \"Custom days and formatters\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-21.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-22\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-22.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-23\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date range picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-23.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-24\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date and Time picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-24.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-25\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date and Time range picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-25.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-26\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date range picker with time\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"popover\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-26.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-27\",\n      \"type\": \"registry:block\",\n      \"description\": \"Chart filter\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"chart\",\n        \"card\",\n        \"popover\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-27.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-28\",\n      \"type\": \"registry:block\",\n      \"description\": \"Input with date picker\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-28.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-29\",\n      \"type\": \"registry:block\",\n      \"description\": \"Natural language date picker\",\n      \"dependencies\": [\n        \"chrono-node\"\n      ],\n      \"registryDependencies\": [\n        \"calendar\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-29.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-30\",\n      \"type\": \"registry:block\",\n      \"description\": \"With little-date\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-30.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-31\",\n      \"type\": \"registry:block\",\n      \"description\": \"With event slots\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-31.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"calendar-32\",\n      \"type\": \"registry:block\",\n      \"description\": \"Date picker in a drawer\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"button\",\n        \"drawer\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/blocks/calendar-32.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"calendar\",\n        \"date\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-axes\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-axes.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-gradient\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-gradient.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-icons.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-legend.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-linear\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-linear.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-stacked-expand\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-stacked-expand.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-stacked.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-area-step\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-area-step.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-area\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-active\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-active.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-horizontal\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-horizontal.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-interactive.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-label.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-mixed\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-mixed.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-multiple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-negative\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-negative.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-bar-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-bar-stacked.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-bar\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-dots-colors\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-dots-colors.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-dots-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-dots-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-dots\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-dots.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-interactive.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-label.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-linear\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-linear.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-multiple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-line-step\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-line-step.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-line\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-donut-active\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-donut-active.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-donut-text\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-donut-text.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-donut\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-donut.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-interactive.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-label-list\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-label-list.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-label.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-legend.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-separator-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-separator-none.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-simple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-simple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-pie-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-pie-stacked.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-pie\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-dots\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-dots.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle-fill\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-grid-circle-fill.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle-no-lines\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-grid-circle-no-lines.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-grid-circle.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-grid-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-fill\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-grid-fill.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-grid-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-grid-none.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-icons.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-legend.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-lines-only\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-lines-only.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-multiple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radar-radius\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radar-radius.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radar\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-grid\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radial-grid.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radial-label.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-shape\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radial-shape.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-simple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radial-simple.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radial-stacked.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-radial-text\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-radial-text.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-radial\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-default.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-indicator-line\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-indicator-line.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-indicator-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-indicator-none.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-label-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-label-none.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-label-custom.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-label-formatter\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-label-formatter.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-formatter\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-formatter.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-icons.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-advanced\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\n        \"card\",\n        \"chart\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/charts/chart-tooltip-advanced.tsx\",\n          \"type\": \"registry:block\",\n          \"target\": \"\"\n        }\n      ],\n      \"categories\": [\n        \"charts\",\n        \"charts-tooltip\"\n      ]\n    },\n    {\n      \"name\": \"utils\",\n      \"type\": \"registry:lib\",\n      \"dependencies\": [\n        \"clsx\",\n        \"tailwind-merge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/lib/utils.ts\",\n          \"type\": \"registry:lib\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"type\": \"registry:hook\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/hooks/use-mobile.tsx\",\n          \"type\": \"registry:hook\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"use-toast\",\n      \"type\": \"registry:hook\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/hooks/use-toast.ts\",\n          \"type\": \"registry:hook\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"theme-daylight\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"36 39% 88%\",\n          \"foreground\": \"36 45% 15%\",\n          \"primary\": \"36 45% 70%\",\n          \"primary-foreground\": \"36 45% 11%\",\n          \"secondary\": \"40 35% 77%\",\n          \"secondary-foreground\": \"36 45% 25%\",\n          \"accent\": \"36 64% 57%\",\n          \"accent-foreground\": \"36 72% 17%\",\n          \"destructive\": \"0 84% 37%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"muted\": \"36 33% 75%\",\n          \"muted-foreground\": \"36 45% 25%\",\n          \"card\": \"36 46% 82%\",\n          \"card-foreground\": \"36 45% 20%\",\n          \"popover\": \"0 0% 100%\",\n          \"popover-foreground\": \"240 10% 3.9%\",\n          \"border\": \"36 45% 60%\",\n          \"input\": \"36 45% 60%\",\n          \"ring\": \"36 45% 30%\",\n          \"chart-1\": \"25 34% 28%\",\n          \"chart-2\": \"26 36% 34%\",\n          \"chart-3\": \"28 40% 40%\",\n          \"chart-4\": \"31 41% 48%\",\n          \"chart-5\": \"35 43% 53%\"\n        },\n        \"dark\": {\n          \"background\": \"36 39% 88%\",\n          \"foreground\": \"36 45% 15%\",\n          \"primary\": \"36 45% 70%\",\n          \"primary-foreground\": \"36 45% 11%\",\n          \"secondary\": \"40 35% 77%\",\n          \"secondary-foreground\": \"36 45% 25%\",\n          \"accent\": \"36 64% 57%\",\n          \"accent-foreground\": \"36 72% 17%\",\n          \"destructive\": \"0 84% 37%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"muted\": \"36 33% 75%\",\n          \"muted-foreground\": \"36 45% 25%\",\n          \"card\": \"36 46% 82%\",\n          \"card-foreground\": \"36 45% 20%\",\n          \"popover\": \"0 0% 100%\",\n          \"popover-foreground\": \"240 10% 3.9%\",\n          \"border\": \"36 45% 60%\",\n          \"input\": \"36 45% 60%\",\n          \"ring\": \"36 45% 30%\",\n          \"chart-1\": \"25 34% 28%\",\n          \"chart-2\": \"26 36% 34%\",\n          \"chart-3\": \"28 40% 40%\",\n          \"chart-4\": \"31 41% 48%\",\n          \"chart-5\": \"35 43% 53%\"\n        }\n      }\n    },\n    {\n      \"name\": \"theme-midnight\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"240 5% 6%\",\n          \"foreground\": \"60 5% 90%\",\n          \"primary\": \"240 0% 90%\",\n          \"primary-foreground\": \"60 0% 0%\",\n          \"secondary\": \"240 4% 15%\",\n          \"secondary-foreground\": \"60 5% 85%\",\n          \"accent\": \"240 0% 13%\",\n          \"accent-foreground\": \"60 0% 100%\",\n          \"destructive\": \"0 60% 50%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"muted\": \"240 5% 25%\",\n          \"muted-foreground\": \"60 5% 85%\",\n          \"card\": \"240 4% 10%\",\n          \"card-foreground\": \"60 5% 90%\",\n          \"popover\": \"240 5% 15%\",\n          \"popover-foreground\": \"60 5% 85%\",\n          \"border\": \"240 6% 20%\",\n          \"input\": \"240 6% 20%\",\n          \"ring\": \"240 5% 90%\",\n          \"chart-1\": \"359 2% 90%\",\n          \"chart-2\": \"240 1% 74%\",\n          \"chart-3\": \"240 1% 58%\",\n          \"chart-4\": \"240 1% 42%\",\n          \"chart-5\": \"240 2% 26%\"\n        },\n        \"dark\": {\n          \"background\": \"240 5% 6%\",\n          \"foreground\": \"60 5% 90%\",\n          \"primary\": \"240 0% 90%\",\n          \"primary-foreground\": \"60 0% 0%\",\n          \"secondary\": \"240 4% 15%\",\n          \"secondary-foreground\": \"60 5% 85%\",\n          \"accent\": \"240 0% 13%\",\n          \"accent-foreground\": \"60 0% 100%\",\n          \"destructive\": \"0 60% 50%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"muted\": \"240 5% 25%\",\n          \"muted-foreground\": \"60 5% 85%\",\n          \"card\": \"240 4% 10%\",\n          \"card-foreground\": \"60 5% 90%\",\n          \"popover\": \"240 5% 15%\",\n          \"popover-foreground\": \"60 5% 85%\",\n          \"border\": \"240 6% 20%\",\n          \"input\": \"240 6% 20%\",\n          \"ring\": \"240 5% 90%\",\n          \"chart-1\": \"359 2% 90%\",\n          \"chart-2\": \"240 1% 74%\",\n          \"chart-3\": \"240 1% 58%\",\n          \"chart-4\": \"240 1% 42%\",\n          \"chart-5\": \"240 2% 26%\"\n        }\n      }\n    },\n    {\n      \"name\": \"theme-emerald\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"0 0% 100%\",\n          \"foreground\": \"240 10% 3.9%\",\n          \"card\": \"0 0% 100%\",\n          \"card-foreground\": \"240 10% 3.9%\",\n          \"popover\": \"0 0% 100%\",\n          \"popover-foreground\": \"240 10% 3.9%\",\n          \"primary\": \"142 86% 28%\",\n          \"primary-foreground\": \"356 29% 98%\",\n          \"secondary\": \"240 4.8% 95.9%\",\n          \"secondary-foreground\": \"240 5.9% 10%\",\n          \"muted\": \"240 4.8% 95.9%\",\n          \"muted-foreground\": \"240 3.8% 45%\",\n          \"accent\": \"240 4.8% 95.9%\",\n          \"accent-foreground\": \"240 5.9% 10%\",\n          \"destructive\": \"0 72% 51%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"border\": \"240 5.9% 90%\",\n          \"input\": \"240 5.9% 90%\",\n          \"ring\": \"142 86% 28%\",\n          \"chart-1\": \"139 65% 20%\",\n          \"chart-2\": \"140 74% 44%\",\n          \"chart-3\": \"142 88% 28%\",\n          \"chart-4\": \"137 55% 15%\",\n          \"chart-5\": \"141 40% 9%\"\n        },\n        \"dark\": {\n          \"background\": \"240 10% 3.9%\",\n          \"foreground\": \"0 0% 98%\",\n          \"card\": \"240 10% 3.9%\",\n          \"card-foreground\": \"0 0% 98%\",\n          \"popover\": \"240 10% 3.9%\",\n          \"popover-foreground\": \"0 0% 98%\",\n          \"primary\": \"142 86% 28%\",\n          \"primary-foreground\": \"356 29% 98%\",\n          \"secondary\": \"240 4.8% 95.9%\",\n          \"secondary-foreground\": \"240 5.9% 10%\",\n          \"muted\": \"240 3.7% 15.9%\",\n          \"muted-foreground\": \"240 5% 64.9%\",\n          \"accent\": \"240 3.7% 15.9%\",\n          \"accent-foreground\": \"0 0% 98%\",\n          \"destructive\": \"0 72% 51%\",\n          \"destructive-foreground\": \"0 0% 98%\",\n          \"border\": \"240 3.7% 15.9%\",\n          \"input\": \"240 3.7% 15.9%\",\n          \"ring\": \"142 86% 28%\",\n          \"chart-1\": \"142 88% 28%\",\n          \"chart-2\": \"139 65% 20%\",\n          \"chart-3\": \"140 74% 24%\",\n          \"chart-4\": \"137 55% 15%\",\n          \"chart-5\": \"141 40% 9%\"\n        }\n      }\n    },\n    {\n      \"name\": \"sink\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"accordion\",\n        \"alert\",\n        \"alert-dialog\",\n        \"aspect-ratio\",\n        \"avatar\",\n        \"badge\",\n        \"breadcrumb\",\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"carousel\",\n        \"chart\",\n        \"checkbox\",\n        \"collapsible\",\n        \"command\",\n        \"context-menu\",\n        \"dialog\",\n        \"drawer\",\n        \"dropdown-menu\",\n        \"hover-card\",\n        \"input\",\n        \"input-otp\",\n        \"label\",\n        \"menubar\",\n        \"navigation-menu\",\n        \"pagination\",\n        \"popover\",\n        \"progress\",\n        \"radio-group\",\n        \"resizable\",\n        \"scroll-area\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"sidebar\",\n        \"skeleton\",\n        \"slider\",\n        \"sonner\",\n        \"switch\",\n        \"table\",\n        \"tabs\",\n        \"textarea\",\n        \"toast\",\n        \"toggle\",\n        \"toggle-group\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sink/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/sink/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/component-wrapper.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/nav-main.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/nav-projects.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/nav-user.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/team-switcher.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/accordion-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/alert-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/alert-dialog-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/aspect-ratio-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/avatar-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/badge-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/breadcrumb-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/button-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/calendar-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/card-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/carousel-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/checkbox-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/collapsible-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/combobox-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/command-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/context-menu-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/date-picker-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/dialog-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/drawer-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/dropdown-menu-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/hover-card-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/input-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/input-otp-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/label-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/menubar-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/navigation-menu-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/pagination-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/popover-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/progress-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/radio-group-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/resizable-handle.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/scroll-area-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/select-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/separator-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/sheet-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/skeleton-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/slider-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/sonner-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/switch-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/table-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/tabs-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/textarea-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/toast-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/toggle-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/toggle-group-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/tooltip-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/badge-destructive.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/badge-outline.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/badge-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/button-destructive.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/button-ghost.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/button-link.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/button-loading.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/button-outline.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/button-secondary.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/button-with-icon.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/toggle-disabled.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/toggle-outline.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        },\n        {\n          \"path\": \"registry/new-york/internal/sink/components/toggle-with-text.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-demo\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-demo.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-header\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-header.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-footer\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-footer.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-group.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group-collapsible\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-group-collapsible.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group-action\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-group-action.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-menu.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-action\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-menu-action.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-sub\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-menu-sub.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-collapsible\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-menu-collapsible.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-badge\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-menu-badge.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-rsc\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-rsc.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-controlled\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-controlled.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-01\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-01.tsx\",\n          \"type\": \"registry:component\",\n          \"target\": \"components/sidebar-01.tsx\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-02\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-02.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-03\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-03.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-04\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-04.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-05\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-05.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-06\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-06.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-07\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-07.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-08\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-08.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-09\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-09.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-10\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-10.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-11\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-11.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-12\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-12.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-13\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"button\",\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-13.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-14\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-14.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-sidebar-15\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/sidebar-15.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"v0-login-01\",\n      \"type\": \"registry:internal\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/internal/login-01.tsx\",\n          \"type\": \"registry:internal\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"accordion-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"accordion\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/accordion-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"alert\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/alert-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"alert\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/alert-destructive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-dialog-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/alert-dialog-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"aspect-ratio-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"aspect-ratio\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/aspect-ratio-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"avatar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/avatar-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/badge-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/badge-destructive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/badge-outline.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-secondary\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/badge-secondary.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/breadcrumb-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-separator\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/breadcrumb-separator.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-dropdown\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/breadcrumb-dropdown.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-ellipsis\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/breadcrumb-ellipsis.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-link\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/breadcrumb-link.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-responsive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"breadcrumb\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/breadcrumb-responsive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-secondary\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-secondary.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-destructive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-outline.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-ghost\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-ghost.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-link\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-link.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-with-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-with-icon.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-loading\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-loading.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-icon.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-as-child\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/button-as-child.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"calendar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/calendar-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"calendar\",\n        \"form\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/calendar-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/card-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-with-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/card-with-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/carousel-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-size\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/carousel-size.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-spacing\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/carousel-spacing.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-orientation\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/carousel-orientation.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-api\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/carousel-api.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-plugin\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"carousel\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/carousel-plugin.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/checkbox-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/checkbox-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-form-multiple\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/checkbox-form-multiple.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-form-single\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/checkbox-form-single.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/checkbox-with-text.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"collapsible-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/collapsible-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/combobox-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-dropdown-menu\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\",\n        \"dropdown-menu\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/combobox-dropdown-menu.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/combobox-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-popover\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"combobox\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/combobox-popover.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-responsive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"combobox\",\n        \"popover\",\n        \"drawer\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/combobox-responsive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/command-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command-dialog\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"command\",\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/command-dialog.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"context-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"context-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/context-menu-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"data-table-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"data-table\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/data-table-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-demo\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/date-picker-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-form\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"form\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/date-picker-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-with-presets\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"popover\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/date-picker-with-presets.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-with-range\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/date-picker-with-range.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/dialog-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog-close-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/dialog-close-button.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"drawer\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/drawer-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer-dialog\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"drawer\",\n        \"dialog\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/drawer-dialog.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/dropdown-menu-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-checkboxes\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dropdown-menu\",\n        \"checkbox\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/dropdown-menu-checkboxes.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-radio-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dropdown-menu\",\n        \"radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/dropdown-menu-radio-group.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hover-card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"hover-card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/hover-card-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-file\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-file.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\",\n        \"button\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-with-button.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-label\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-with-label.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-with-text.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-otp-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-pattern\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-otp-pattern.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-separator\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-otp-separator.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-controlled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-otp-controlled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-otp\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/input-otp-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"label-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/label-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"menubar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"menubar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/menubar-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"navigation-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"navigation-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/navigation-menu-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pagination-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"pagination\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/pagination-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"popover-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/popover-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"progress-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"progress\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/progress-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/radio-group-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"radio-group\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/radio-group-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"resizable\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/resizable-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-demo-with-handle\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"resizable\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/resizable-demo-with-handle.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-vertical\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"resizable\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/resizable-vertical.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-handle\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"resizable\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/resizable-handle.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"scroll-area\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/scroll-area-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area-horizontal-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"scroll-area\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/scroll-area-horizontal-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/select-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-scrollable\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/select-scrollable.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/select-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"separator-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/separator-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"sheet\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/sheet-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet-side\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"sheet\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/sheet-side.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/skeleton-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton-card\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/skeleton-card.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"slider-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"slider\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/slider-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/sonner-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/switch-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"switch\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/switch-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"table\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/table-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tabs-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"tabs\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/tabs-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/textarea-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/textarea-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\",\n        \"form\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/textarea-form.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/textarea-with-button.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-label\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/textarea-with-label.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"textarea\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/textarea-with-text.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toast-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toast-destructive.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-simple\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toast-simple.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-with-action\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toast-with-action.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toast-with-title\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toast\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toast-with-title.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-group-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-group-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-lg\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-group-lg.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-group-outline.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-sm\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-group-sm.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-single\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-group-single.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-disabled.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-lg\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-lg.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-outline.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-sm\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-sm.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"toggle\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/toggle-with-text.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tooltip-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/tooltip-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-blockquote\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-blockquote.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h1\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-h1.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h2\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-h2.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h3\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-h3.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h4\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-h4.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-inline-code\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-inline-code.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-large\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-large.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-lead\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-lead.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-list\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-list.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-muted\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-muted.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-p\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-p.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-small\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-small.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-table\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/typography-table.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mode-toggle\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/mode-toggle.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/chart-bar-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-grid\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/chart-bar-demo-grid.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-axis\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/chart-bar-demo-axis.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-tooltip\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/chart-bar-demo-tooltip.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-legend\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/chart-bar-demo-legend.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york/examples/chart-tooltip-demo.tsx\",\n          \"type\": \"registry:example\",\n          \"target\": \"\"\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/resizable-demo-with-handle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-demo-with-handle\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/resizable-demo-with-handle.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"horizontal\\\"\\n      className=\\\"max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={50}>\\n        <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">One</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle withHandle />\\n      <ResizablePanel defaultSize={50}>\\n        <ResizablePanelGroup direction=\\\"vertical\\\">\\n          <ResizablePanel defaultSize={25}>\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Two</span>\\n            </div>\\n          </ResizablePanel>\\n          <ResizableHandle withHandle />\\n          <ResizablePanel defaultSize={75}>\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Three</span>\\n            </div>\\n          </ResizablePanel>\\n        </ResizablePanelGroup>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/resizable-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/resizable-demo.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"horizontal\\\"\\n      className=\\\"max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={50}>\\n        <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">One</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle />\\n      <ResizablePanel defaultSize={50}>\\n        <ResizablePanelGroup direction=\\\"vertical\\\">\\n          <ResizablePanel defaultSize={25}>\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Two</span>\\n            </div>\\n          </ResizablePanel>\\n          <ResizableHandle />\\n          <ResizablePanel defaultSize={75}>\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Three</span>\\n            </div>\\n          </ResizablePanel>\\n        </ResizablePanelGroup>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/resizable-handle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-handle\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/resizable-handle.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york/ui/resizable\\\"\\n\\nexport default function ResizableHandleDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"horizontal\\\"\\n      className=\\\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={25}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Sidebar</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle withHandle />\\n      <ResizablePanel defaultSize={75}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Content</span>\\n        </div>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/resizable-vertical.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-vertical\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/resizable-vertical.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"vertical\\\"\\n      className=\\\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={25}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Header</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle />\\n      <ResizablePanel defaultSize={75}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Content</span>\\n        </div>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { GripVertical } from \\\"lucide-react\\\"\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst ResizablePanelGroup = ({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\\n  <ResizablePrimitive.PanelGroup\\n    className={cn(\\n      \\\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\n\\nconst ResizablePanel = ResizablePrimitive.Panel\\n\\nconst ResizableHandle = ({\\n  withHandle,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\\n  withHandle?: boolean\\n}) => (\\n  <ResizablePrimitive.PanelResizeHandle\\n    className={cn(\\n      \\\"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {withHandle && (\\n      <div className=\\\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\\\">\\n        <GripVertical className=\\\"h-2.5 w-2.5\\\" />\\n      </div>\\n    )}\\n  </ResizablePrimitive.PanelResizeHandle>\\n)\\n\\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/scroll-area-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/scroll-area-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { ScrollArea } from \\\"@/registry/new-york/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nexport default function ScrollAreaDemo() {\\n  return (\\n    <ScrollArea className=\\\"h-72 w-48 rounded-md border\\\">\\n      <div className=\\\"p-4\\\">\\n        <h4 className=\\\"mb-4 text-sm font-medium leading-none\\\">Tags</h4>\\n        {tags.map((tag) => (\\n          <>\\n            <div key={tag} className=\\\"text-sm\\\">\\n              {tag}\\n            </div>\\n            <Separator className=\\\"my-2\\\" />\\n          </>\\n        ))}\\n      </div>\\n    </ScrollArea>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/scroll-area-horizontal-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-horizontal-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/scroll-area-horizontal-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/new-york/ui/scroll-area\\\"\\n\\nexport interface Artwork {\\n  artist: string\\n  art: string\\n}\\n\\nexport const works: Artwork[] = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyavko\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n]\\n\\nexport default function ScrollAreaHorizontalDemo() {\\n  return (\\n    <ScrollArea className=\\\"w-96 whitespace-nowrap rounded-md border\\\">\\n      <div className=\\\"flex w-max space-x-4 p-4\\\">\\n        {works.map((artwork) => (\\n          <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n            <div className=\\\"overflow-hidden rounded-md\\\">\\n              <Image\\n                src={artwork.art}\\n                alt={`Photo by ${artwork.artist}`}\\n                className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                width={300}\\n                height={400}\\n              />\\n            </div>\\n            <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n              Photo by{\\\" \\\"}\\n              <span className=\\\"font-semibold text-foreground\\\">\\n                {artwork.artist}\\n              </span>\\n            </figcaption>\\n          </figure>\\n        ))}\\n      </div>\\n      <ScrollBar orientation=\\\"horizontal\\\" />\\n    </ScrollArea>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ScrollAreaPrimitive from \\\"@radix-ui/react-scroll-area\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst ScrollArea = React.forwardRef<\\n  React.ElementRef<typeof ScrollAreaPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\\n>(({ className, children, ...props }, ref) => (\\n  <ScrollAreaPrimitive.Root\\n    ref={ref}\\n    className={cn(\\\"relative overflow-hidden\\\", className)}\\n    {...props}\\n  >\\n    <ScrollAreaPrimitive.Viewport className=\\\"h-full w-full rounded-[inherit]\\\">\\n      {children}\\n    </ScrollAreaPrimitive.Viewport>\\n    <ScrollBar />\\n    <ScrollAreaPrimitive.Corner />\\n  </ScrollAreaPrimitive.Root>\\n))\\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\\n\\nconst ScrollBar = React.forwardRef<\\n  React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\\n  React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\\n>(({ className, orientation = \\\"vertical\\\", ...props }, ref) => (\\n  <ScrollAreaPrimitive.ScrollAreaScrollbar\\n    ref={ref}\\n    orientation={orientation}\\n    className={cn(\\n      \\\"flex touch-none select-none transition-colors\\\",\\n      orientation === \\\"vertical\\\" &&\\n        \\\"h-full w-2.5 border-l border-l-transparent p-[1px]\\\",\\n      orientation === \\\"horizontal\\\" &&\\n        \\\"h-2.5 flex-col border-t border-t-transparent p-[1px]\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <ScrollAreaPrimitive.ScrollAreaThumb className=\\\"relative flex-1 rounded-full bg-border\\\" />\\n  </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n))\\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/select-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/select-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\n\\nexport default function SelectDemo() {\\n  return (\\n    <Select>\\n      <SelectTrigger className=\\\"w-[180px]\\\">\\n        <SelectValue placeholder=\\\"Select a fruit\\\" />\\n      </SelectTrigger>\\n      <SelectContent>\\n        <SelectGroup>\\n          <SelectLabel>Fruits</SelectLabel>\\n          <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n          <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n          <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n          <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n        </SelectGroup>\\n      </SelectContent>\\n    </Select>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/select-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/select-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport Link from \\\"next/link\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\n\\nconst FormSchema = z.object({\\n  email: z\\n    .string({\\n      required_error: \\\"Please select an email to display.\\\",\\n    })\\n    .email(),\\n})\\n\\nexport default function SelectForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"email\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Email</FormLabel>\\n              <Select onValueChange={field.onChange} defaultValue={field.value}>\\n                <FormControl>\\n                  <SelectTrigger>\\n                    <SelectValue placeholder=\\\"Select a verified email to display\\\" />\\n                  </SelectTrigger>\\n                </FormControl>\\n                <SelectContent>\\n                  <SelectItem value=\\\"m@example.com\\\">m@example.com</SelectItem>\\n                  <SelectItem value=\\\"m@google.com\\\">m@google.com</SelectItem>\\n                  <SelectItem value=\\\"m@support.com\\\">m@support.com</SelectItem>\\n                </SelectContent>\\n              </Select>\\n              <FormDescription>\\n                You can manage email addresses in your{\\\" \\\"}\\n                <Link href=\\\"/examples/forms\\\">email settings</Link>.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/select-scrollable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-scrollable\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/select-scrollable.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\n\\nexport default function SelectScrollable() {\\n  return (\\n    <Select>\\n      <SelectTrigger className=\\\"w-[280px]\\\">\\n        <SelectValue placeholder=\\\"Select a timezone\\\" />\\n      </SelectTrigger>\\n      <SelectContent>\\n        <SelectGroup>\\n          <SelectLabel>North America</SelectLabel>\\n          <SelectItem value=\\\"est\\\">Eastern Standard Time (EST)</SelectItem>\\n          <SelectItem value=\\\"cst\\\">Central Standard Time (CST)</SelectItem>\\n          <SelectItem value=\\\"mst\\\">Mountain Standard Time (MST)</SelectItem>\\n          <SelectItem value=\\\"pst\\\">Pacific Standard Time (PST)</SelectItem>\\n          <SelectItem value=\\\"akst\\\">Alaska Standard Time (AKST)</SelectItem>\\n          <SelectItem value=\\\"hst\\\">Hawaii Standard Time (HST)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Europe & Africa</SelectLabel>\\n          <SelectItem value=\\\"gmt\\\">Greenwich Mean Time (GMT)</SelectItem>\\n          <SelectItem value=\\\"cet\\\">Central European Time (CET)</SelectItem>\\n          <SelectItem value=\\\"eet\\\">Eastern European Time (EET)</SelectItem>\\n          <SelectItem value=\\\"west\\\">\\n            Western European Summer Time (WEST)\\n          </SelectItem>\\n          <SelectItem value=\\\"cat\\\">Central Africa Time (CAT)</SelectItem>\\n          <SelectItem value=\\\"eat\\\">East Africa Time (EAT)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Asia</SelectLabel>\\n          <SelectItem value=\\\"msk\\\">Moscow Time (MSK)</SelectItem>\\n          <SelectItem value=\\\"ist\\\">India Standard Time (IST)</SelectItem>\\n          <SelectItem value=\\\"cst_china\\\">China Standard Time (CST)</SelectItem>\\n          <SelectItem value=\\\"jst\\\">Japan Standard Time (JST)</SelectItem>\\n          <SelectItem value=\\\"kst\\\">Korea Standard Time (KST)</SelectItem>\\n          <SelectItem value=\\\"ist_indonesia\\\">\\n            Indonesia Central Standard Time (WITA)\\n          </SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Australia & Pacific</SelectLabel>\\n          <SelectItem value=\\\"awst\\\">\\n            Australian Western Standard Time (AWST)\\n          </SelectItem>\\n          <SelectItem value=\\\"acst\\\">\\n            Australian Central Standard Time (ACST)\\n          </SelectItem>\\n          <SelectItem value=\\\"aest\\\">\\n            Australian Eastern Standard Time (AEST)\\n          </SelectItem>\\n          <SelectItem value=\\\"nzst\\\">New Zealand Standard Time (NZST)</SelectItem>\\n          <SelectItem value=\\\"fjt\\\">Fiji Time (FJT)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>South America</SelectLabel>\\n          <SelectItem value=\\\"art\\\">Argentina Time (ART)</SelectItem>\\n          <SelectItem value=\\\"bot\\\">Bolivia Time (BOT)</SelectItem>\\n          <SelectItem value=\\\"brt\\\">Brasilia Time (BRT)</SelectItem>\\n          <SelectItem value=\\\"clt\\\">Chile Standard Time (CLT)</SelectItem>\\n        </SelectGroup>\\n      </SelectContent>\\n    </Select>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SelectPrimitive from \\\"@radix-ui/react-select\\\"\\nimport { Check, ChevronDown, ChevronUp } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Select = SelectPrimitive.Root\\n\\nconst SelectGroup = SelectPrimitive.Group\\n\\nconst SelectValue = SelectPrimitive.Value\\n\\nconst SelectTrigger = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\\n>(({ className, children, ...props }, ref) => (\\n  <SelectPrimitive.Trigger\\n    ref={ref}\\n    className={cn(\\n      \\\"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    {children}\\n    <SelectPrimitive.Icon asChild>\\n      <ChevronDown className=\\\"h-4 w-4 opacity-50\\\" />\\n    </SelectPrimitive.Icon>\\n  </SelectPrimitive.Trigger>\\n))\\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\\n\\nconst SelectScrollUpButton = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\\n>(({ className, ...props }, ref) => (\\n  <SelectPrimitive.ScrollUpButton\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default items-center justify-center py-1\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <ChevronUp className=\\\"h-4 w-4\\\" />\\n  </SelectPrimitive.ScrollUpButton>\\n))\\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\\n\\nconst SelectScrollDownButton = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\\n>(({ className, ...props }, ref) => (\\n  <SelectPrimitive.ScrollDownButton\\n    ref={ref}\\n    className={cn(\\n      \\\"flex cursor-default items-center justify-center py-1\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <ChevronDown className=\\\"h-4 w-4\\\" />\\n  </SelectPrimitive.ScrollDownButton>\\n))\\nSelectScrollDownButton.displayName =\\n  SelectPrimitive.ScrollDownButton.displayName\\n\\nconst SelectContent = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\\n>(({ className, children, position = \\\"popper\\\", ...props }, ref) => (\\n  <SelectPrimitive.Portal>\\n    <SelectPrimitive.Content\\n      ref={ref}\\n      className={cn(\\n        \\\"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]\\\",\\n        position === \\\"popper\\\" &&\\n          \\\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\\\",\\n        className\\n      )}\\n      position={position}\\n      {...props}\\n    >\\n      <SelectScrollUpButton />\\n      <SelectPrimitive.Viewport\\n        className={cn(\\n          \\\"p-1\\\",\\n          position === \\\"popper\\\" &&\\n            \\\"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\\\"\\n        )}\\n      >\\n        {children}\\n      </SelectPrimitive.Viewport>\\n      <SelectScrollDownButton />\\n    </SelectPrimitive.Content>\\n  </SelectPrimitive.Portal>\\n))\\nSelectContent.displayName = SelectPrimitive.Content.displayName\\n\\nconst SelectLabel = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Label>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\\n>(({ className, ...props }, ref) => (\\n  <SelectPrimitive.Label\\n    ref={ref}\\n    className={cn(\\\"px-2 py-1.5 text-sm font-semibold\\\", className)}\\n    {...props}\\n  />\\n))\\nSelectLabel.displayName = SelectPrimitive.Label.displayName\\n\\nconst SelectItem = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\\n>(({ className, children, ...props }, ref) => (\\n  <SelectPrimitive.Item\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <span className=\\\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\\\">\\n      <SelectPrimitive.ItemIndicator>\\n        <Check className=\\\"h-4 w-4\\\" />\\n      </SelectPrimitive.ItemIndicator>\\n    </span>\\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\\n  </SelectPrimitive.Item>\\n))\\nSelectItem.displayName = SelectPrimitive.Item.displayName\\n\\nconst SelectSeparator = React.forwardRef<\\n  React.ElementRef<typeof SelectPrimitive.Separator>,\\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\\n>(({ className, ...props }, ref) => (\\n  <SelectPrimitive.Separator\\n    ref={ref}\\n    className={cn(\\\"-mx-1 my-1 h-px bg-muted\\\", className)}\\n    {...props}\\n  />\\n))\\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\\n\\nexport {\\n  Select,\\n  SelectGroup,\\n  SelectValue,\\n  SelectTrigger,\\n  SelectContent,\\n  SelectLabel,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectScrollUpButton,\\n  SelectScrollDownButton,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/separator-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/separator-demo.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\n\\nexport default function SeparatorDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"space-y-1\\\">\\n        <h4 className=\\\"text-sm font-medium leading-none\\\">Radix Primitives</h4>\\n        <p className=\\\"text-sm text-muted-foreground\\\">\\n          An open-source UI component library.\\n        </p>\\n      </div>\\n      <Separator className=\\\"my-4\\\" />\\n      <div className=\\\"flex h-5 items-center space-x-4 text-sm\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SeparatorPrimitive from \\\"@radix-ui/react-separator\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Separator = React.forwardRef<\\n  React.ElementRef<typeof SeparatorPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\\n>(\\n  (\\n    { className, orientation = \\\"horizontal\\\", decorative = true, ...props },\\n    ref\\n  ) => (\\n    <SeparatorPrimitive.Root\\n      ref={ref}\\n      decorative={decorative}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"h-[1px] w-full\\\" : \\\"h-full w-[1px]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n)\\nSeparator.displayName = SeparatorPrimitive.Root.displayName\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sheet-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sheet\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/sheet-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/new-york/ui/sheet\\\"\\n\\nexport default function SheetDemo() {\\n  return (\\n    <Sheet>\\n      <SheetTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </SheetTrigger>\\n      <SheetContent>\\n        <SheetHeader>\\n          <SheetTitle>Edit profile</SheetTitle>\\n          <SheetDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </SheetDescription>\\n        </SheetHeader>\\n        <div className=\\\"grid gap-4 py-4\\\">\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n              Name\\n            </Label>\\n            <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n              Username\\n            </Label>\\n            <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n        </div>\\n        <SheetFooter>\\n          <SheetClose asChild>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n          </SheetClose>\\n        </SheetFooter>\\n      </SheetContent>\\n    </Sheet>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sheet-side.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-side\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sheet\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/sheet-side.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/new-york/ui/sheet\\\"\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\ntype SheetSide = (typeof SHEET_SIDES)[number]\\n\\nexport default function SheetSide() {\\n  return (\\n    <div className=\\\"grid grid-cols-2 gap-2\\\">\\n      {SHEET_SIDES.map((side) => (\\n        <Sheet key={side}>\\n          <SheetTrigger asChild>\\n            <Button variant=\\\"outline\\\">{side}</Button>\\n          </SheetTrigger>\\n          <SheetContent side={side}>\\n            <SheetHeader>\\n              <SheetTitle>Edit profile</SheetTitle>\\n              <SheetDescription>\\n                Make changes to your profile here. Click save when you're done.\\n              </SheetDescription>\\n            </SheetHeader>\\n            <div className=\\\"grid gap-4 py-4\\\">\\n              <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n                  Name\\n                </Label>\\n                <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n              </div>\\n              <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n                <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n                  Username\\n                </Label>\\n                <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n              </div>\\n            </div>\\n            <SheetFooter>\\n              <SheetClose asChild>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n              </SheetClose>\\n            </SheetFooter>\\n          </SheetContent>\\n        </Sheet>\\n      ))}\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SheetPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Sheet = SheetPrimitive.Root\\n\\nconst SheetTrigger = SheetPrimitive.Trigger\\n\\nconst SheetClose = SheetPrimitive.Close\\n\\nconst SheetPortal = SheetPrimitive.Portal\\n\\nconst SheetOverlay = React.forwardRef<\\n  React.ElementRef<typeof SheetPrimitive.Overlay>,\\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\\n>(({ className, ...props }, ref) => (\\n  <SheetPrimitive.Overlay\\n    className={cn(\\n      \\\"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\\\",\\n      className\\n    )}\\n    {...props}\\n    ref={ref}\\n  />\\n))\\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\\n\\nconst sheetVariants = cva(\\n  \\\"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\\\",\\n  {\\n    variants: {\\n      side: {\\n        top: \\\"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\\\",\\n        bottom:\\n          \\\"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\\\",\\n        left: \\\"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\\\",\\n        right:\\n          \\\"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      side: \\\"right\\\",\\n    },\\n  }\\n)\\n\\ninterface SheetContentProps\\n  extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\\n    VariantProps<typeof sheetVariants> {}\\n\\nconst SheetContent = React.forwardRef<\\n  React.ElementRef<typeof SheetPrimitive.Content>,\\n  SheetContentProps\\n>(({ side = \\\"right\\\", className, children, ...props }, ref) => (\\n  <SheetPortal>\\n    <SheetOverlay />\\n    <SheetPrimitive.Content\\n      ref={ref}\\n      className={cn(sheetVariants({ side }), className)}\\n      {...props}\\n    >\\n      <SheetPrimitive.Close className=\\\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\\\">\\n        <X className=\\\"h-4 w-4\\\" />\\n        <span className=\\\"sr-only\\\">Close</span>\\n      </SheetPrimitive.Close>\\n      {children}\\n    </SheetPrimitive.Content>\\n  </SheetPortal>\\n))\\nSheetContent.displayName = SheetPrimitive.Content.displayName\\n\\nconst SheetHeader = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col space-y-2 text-center sm:text-left\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nSheetHeader.displayName = \\\"SheetHeader\\\"\\n\\nconst SheetFooter = ({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) => (\\n  <div\\n    className={cn(\\n      \\\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n)\\nSheetFooter.displayName = \\\"SheetFooter\\\"\\n\\nconst SheetTitle = React.forwardRef<\\n  React.ElementRef<typeof SheetPrimitive.Title>,\\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\\n>(({ className, ...props }, ref) => (\\n  <SheetPrimitive.Title\\n    ref={ref}\\n    className={cn(\\\"text-lg font-semibold text-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nSheetTitle.displayName = SheetPrimitive.Title.displayName\\n\\nconst SheetDescription = React.forwardRef<\\n  React.ElementRef<typeof SheetPrimitive.Description>,\\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\\n>(({ className, ...props }, ref) => (\\n  <SheetPrimitive.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nSheetDescription.displayName = SheetPrimitive.Description.displayName\\n\\nexport {\\n  Sheet,\\n  SheetPortal,\\n  SheetOverlay,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/new-york/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/new-york/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {/* We create a SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild isActive={item.isActive}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <GalleryVerticalEnd className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-semibold\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width]\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && <Check className=\\\"ml-auto\\\" />}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex sticky top-0 bg-background h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/new-york/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/new-york/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {item.title}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <GalleryVerticalEnd className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-semibold\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width]\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && <Check className=\\\"ml-auto\\\" />}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-semibold\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-semibold\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd, Minus, Plus } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/new-york/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-semibold\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuButton>\\n                      {item.title}{\\\" \\\"}\\n                      <Plus className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\" />\\n                      <Minus className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\" />\\n                    </SidebarMenuButton>\\n                  </CollapsibleTrigger>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              asChild\\n                              isActive={item.isActive}\\n                            >\\n                              <a href={item.url}>{item.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/new-york/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-semibold\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { MoreHorizontal, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                  {item.title} <MoreHorizontal className=\\\"ml-auto\\\" />\\n                </SidebarMenuButton>\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem asChild key={item.title}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"shadow-none\\\">\\n      <form>\\n        <CardHeader className=\\\"p-4 pb-0\\\">\\n          <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n          <CardDescription>\\n            Opt-in to receive updates and news about the sidebar.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"grid gap-2.5 p-4\\\">\\n          <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n          <Button\\n            className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\"\\n            size=\\\"sm\\\"\\n          >\\n            Subscribe\\n          </Button>\\n        </CardContent>\\n      </form>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  GalleryVerticalEnd,\\n  Map,\\n  PieChart,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/new-york/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/new-york/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/new-york/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: GalleryVerticalEnd,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon && <item.icon />}\\n                  <span>{item.title}</span>\\n                  <ChevronRight className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  Forward,\\n  MoreHorizontal,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Forward className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal className=\\\"text-sidebar-foreground/70\\\" />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">\\n                  {activeTeam.name}\\n                </span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/new-york/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/new-york/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <Command className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <ChevronRight />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  MoreHorizontal,\\n  Share,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Share className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ArchiveX, Command, File, Inbox, Send, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { NavUser } from \\\"@/registry/new-york/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/new-york/ui/switch\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: File,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: ArchiveX,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden [&>[data-sidebar=sidebar]]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"!w-[calc(var(--sidebar-width-icon)_+_1px)] border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <Command className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      <item.icon />\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 whitespace-nowrap border-b p-4 text-sm leading-tight last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] whitespace-break-spaces text-xs\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/new-york/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  Blocks,\\n  Calendar,\\n  Command,\\n  Home,\\n  Inbox,\\n  MessageCircleQuestion,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/new-york/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/new-york/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/new-york/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/new-york/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: Calendar,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowDown,\\n  ArrowUp,\\n  Bell,\\n  Copy,\\n  CornerUpLeft,\\n  CornerUpRight,\\n  FileText,\\n  GalleryVerticalEnd,\\n  LineChart,\\n  Link,\\n  MoreHorizontal,\\n  Settings2,\\n  Star,\\n  Trash,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: FileText,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: Link,\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: Copy,\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: CornerUpRight,\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: Trash2,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: CornerUpLeft,\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: LineChart,\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: GalleryVerticalEnd,\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: Trash,\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: Bell,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: ArrowUp,\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: ArrowDown,\\n    },\\n  ],\\n]\\n\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <Star />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <MoreHorizontal />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            <item.icon /> <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  ArrowUpRight,\\n  Link,\\n  MoreHorizontal,\\n  StarOff,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"import { ChevronRight, MoreHorizontal, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-semibold\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight, File, Folder } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <File />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction Tree({ item }: { item: string | any[] }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <File />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <ChevronRight className=\\\"transition-transform\\\" />\\n            <Folder />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Plus } from \\\"lucide-react\\\"\\n\\nimport { Calendars } from \\\"@/registry/new-york/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/new-york/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/new-york/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Check, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground [&_[role=gridcell]]:w-[33px]\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/new-york/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Bell,\\n  Check,\\n  Globe,\\n  Home,\\n  Keyboard,\\n  Link,\\n  Lock,\\n  Menu,\\n  MessageCircle,\\n  Paintbrush,\\n  Settings,\\n  Video,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst data = {\\n  nav: [\\n    { name: \\\"Notifications\\\", icon: Bell },\\n    { name: \\\"Navigation\\\", icon: Menu },\\n    { name: \\\"Home\\\", icon: Home },\\n    { name: \\\"Appearance\\\", icon: Paintbrush },\\n    { name: \\\"Messages & media\\\", icon: MessageCircle },\\n    { name: \\\"Language & region\\\", icon: Globe },\\n    { name: \\\"Accessibility\\\", icon: Keyboard },\\n    { name: \\\"Mark as read\\\", icon: Check },\\n    { name: \\\"Audio & video\\\", icon: Video },\\n    { name: \\\"Connected accounts\\\", icon: Link },\\n    { name: \\\"Privacy & visibility\\\", icon: Lock },\\n    { name: \\\"Advanced\\\", icon: Settings },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            <item.icon />\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/new-york/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/new-york/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Check, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground [&_[role=gridcell]]:w-[33px]\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  ArrowUpRight,\\n  Link,\\n  MoreHorizontal,\\n  StarOff,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"import { ChevronRight, MoreHorizontal, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  Blocks,\\n  Calendar,\\n  Command,\\n  Home,\\n  Inbox,\\n  MessageCircleQuestion,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/new-york/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/new-york/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/new-york/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/new-york/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: Calendar,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Plus } from \\\"lucide-react\\\"\\n\\nimport { Calendars } from \\\"@/registry/new-york/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/new-york/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/new-york/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky hidden lg:flex top-0 h-svh border-l\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-semibold\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"type\": \"registry:block\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/new-york/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(theme(spacing.14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/new-york/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/new-york/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-[--header-height] !h-[calc(100svh-var(--header-height))]\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <Command className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <ChevronRight />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  MoreHorizontal,\\n  Share,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Share className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SidebarIcon } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/new-york/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"flex sticky top-0 z-50 w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-[--header-height] w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <SidebarIcon />\\n        </Button>\\n        <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">\\n                Building Your Application\\n              </BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-controlled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-controlled\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-controlled.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PanelLeftClose,\\n  PanelLeftOpen,\\n  PieChart,\\n  Send,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <SidebarProvider open={open} onOpenChange={setOpen}>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex items-center h-12 px-4 justify-between\\\">\\n          <Button\\n            onClick={() => setOpen((open) => !open)}\\n            size=\\\"sm\\\"\\n            variant=\\\"ghost\\\"\\n          >\\n            {open ? <PanelLeftClose /> : <PanelLeftOpen />}\\n            <span>{open ? \\\"Close\\\" : \\\"Open\\\"} Sidebar</span>\\n          </Button>\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-demo\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar, Home, Inbox, Search, Settings } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// Menu items.\\nconst items = [\\n  {\\n    title: \\\"Home\\\",\\n    url: \\\"#\\\",\\n    icon: Home,\\n  },\\n  {\\n    title: \\\"Inbox\\\",\\n    url: \\\"#\\\",\\n    icon: Inbox,\\n  },\\n  {\\n    title: \\\"Calendar\\\",\\n    url: \\\"#\\\",\\n    icon: Calendar,\\n  },\\n  {\\n    title: \\\"Search\\\",\\n    url: \\\"#\\\",\\n    icon: Search,\\n  },\\n  {\\n    title: \\\"Settings\\\",\\n    url: \\\"#\\\",\\n    icon: Settings,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Application</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex items-center justify-between px-4 h-12\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-footer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-footer\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-footer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDown, ChevronUp, User2 } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader />\\n        <SidebarContent />\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                    Username\\n                    <ChevronUp className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  side=\\\"top\\\"\\n                  className=\\\"w-[--radix-popper-anchor-width]\\\"\\n                >\\n                  <DropdownMenuItem>\\n                    <span>Account</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Billing</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Sign out</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex items-center justify-between px-4 h-12\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-group-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group-action\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-group-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  ChevronDown,\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PieChart,\\n  Plus,\\n  Send,\\n} from \\\"lucide-react\\\"\\nimport { Toaster, toast } from \\\"sonner\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Toaster\\n        position=\\\"bottom-left\\\"\\n        toastOptions={{\\n          className: \\\"ml-[160px]\\\",\\n        }}\\n      />\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupAction\\n              title=\\\"Add Project\\\"\\n              onClick={() => toast(\\\"You clicked the group action!\\\")}\\n            >\\n              <Plus /> <span className=\\\"sr-only\\\">Add Project</span>\\n            </SidebarGroupAction>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <Frame />\\n                      <span>Design Engineering</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <PieChart />\\n                      <span>Sales & Marketing</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <Map />\\n                      <span>Travel</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-group-collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group-collapsible\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-group-collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDown, LifeBuoy, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <Collapsible defaultOpen className=\\\"group/collapsible\\\">\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  Help\\n                  <ChevronDown className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-180\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    <SidebarMenuItem>\\n                      <SidebarMenuButton>\\n                        <LifeBuoy />\\n                        Support\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                    <SidebarMenuItem>\\n                      <SidebarMenuButton>\\n                        <Send />\\n                        Feedback\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LifeBuoy, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Help</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton>\\n                    <LifeBuoy />\\n                    Support\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton>\\n                    <Send />\\n                    Feedback\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-header.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-header\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDown } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                    Select Workspace\\n                    <ChevronDown className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent className=\\\"w-[--radix-popper-anchor-width]\\\">\\n                  <DropdownMenuItem>\\n                    <span>Acme Inc</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Acme Corp.</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex items-center justify-between px-4 h-12\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-menu-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-action\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  MoreHorizontal,\\n  PieChart,\\n  Send,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project, index) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton\\n                      asChild\\n                      className=\\\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\\\"\\n                    >\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <DropdownMenu>\\n                      <DropdownMenuTrigger asChild>\\n                        <SidebarMenuAction>\\n                          <MoreHorizontal />\\n                          <span className=\\\"sr-only\\\">More</span>\\n                        </SidebarMenuAction>\\n                      </DropdownMenuTrigger>\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuItem>\\n                          <span>Edit Project</span>\\n                        </DropdownMenuItem>\\n                        <DropdownMenuItem>\\n                          <span>Delete Project</span>\\n                        </DropdownMenuItem>\\n                      </DropdownMenuContent>\\n                    </DropdownMenu>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-menu-badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-badge\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu-badge.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Frame, LifeBuoy, Map, PieChart, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n    badge: \\\"24\\\",\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n    badge: \\\"12\\\",\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n    badge: \\\"3\\\",\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n    badge: \\\"21\\\",\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n    badge: \\\"8\\\",\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton\\n                      asChild\\n                      className=\\\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\\\"\\n                    >\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <SidebarMenuBadge>{project.badge}</SidebarMenuBadge>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-menu-collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-collapsible\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu-collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst items = [\\n  {\\n    title: \\\"Getting Started\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Installation\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Project Structure\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Building Your Application\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Routing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Data Fetching\\\",\\n        url: \\\"#\\\",\\n        isActive: true,\\n      },\\n      {\\n        title: \\\"Rendering\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Caching\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Styling\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Optimizing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Configuring\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Testing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Authentication\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Deploying\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Upgrading\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Examples\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"API Reference\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Components\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"File Conventions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Functions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"next.config.js Options\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"CLI\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Edge Runtime\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Architecture\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Accessibility\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Fast Refresh\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Next.js Compiler\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Supported Browsers\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Turbopack\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item, index) => (\\n                  <Collapsible\\n                    key={index}\\n                    className=\\\"group/collapsible\\\"\\n                    defaultOpen={index === 0}\\n                  >\\n                    <SidebarMenuItem>\\n                      <CollapsibleTrigger asChild>\\n                        <SidebarMenuButton>\\n                          <span>{item.title}</span>\\n                          <ChevronRight className=\\\"transition-transform ml-auto group-data-[state=open]/collapsible:rotate-90\\\" />\\n                        </SidebarMenuButton>\\n                      </CollapsibleTrigger>\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((subItem, subIndex) => (\\n                            <SidebarMenuSubItem key={subIndex}>\\n                              <SidebarMenuSubButton asChild>\\n                                <a href={subItem.url}>\\n                                  <span>{subItem.title}</span>\\n                                </a>\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    </SidebarMenuItem>\\n                  </Collapsible>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-menu-sub.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-sub\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu-sub.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst items = [\\n  {\\n    title: \\\"Getting Started\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Installation\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Project Structure\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Building Your Application\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Routing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Data Fetching\\\",\\n        url: \\\"#\\\",\\n        isActive: true,\\n      },\\n      {\\n        title: \\\"Rendering\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Caching\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Styling\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Optimizing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Configuring\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Testing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Authentication\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Deploying\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Upgrading\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Examples\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"API Reference\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Components\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"File Conventions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Functions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"next.config.js Options\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"CLI\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Edge Runtime\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Architecture\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Accessibility\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Fast Refresh\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Next.js Compiler\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Supported Browsers\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Turbopack\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item, index) => (\\n                  <SidebarMenuItem key={index}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={item.url}>\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <SidebarMenuSub>\\n                      {item.items.map((subItem, subIndex) => (\\n                        <SidebarMenuSubItem key={subIndex}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Frame, LifeBuoy, Map, PieChart, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar-rsc.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-rsc\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-rsc.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Frame, LifeBuoy, Map, PieChart, Send } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: Frame,\\n    badge: \\\"24\\\",\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChart,\\n    badge: \\\"12\\\",\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: Map,\\n    badge: \\\"3\\\",\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoy,\\n    badge: \\\"21\\\",\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: Send,\\n    badge: \\\"8\\\",\\n  },\\n]\\n\\n// Dummy fetch function\\nasync function fetchProjects() {\\n  await new Promise((resolve) => setTimeout(resolve, 3000))\\n  return projects\\n}\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <React.Suspense fallback={<NavProjectsSkeleton />}>\\n                <NavProjects />\\n              </React.Suspense>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction NavProjectsSkeleton() {\\n  return (\\n    <SidebarMenu>\\n      {Array.from({ length: 5 }).map((_, index) => (\\n        <SidebarMenuItem key={index}>\\n          <SidebarMenuSkeleton showIcon />\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\\nasync function NavProjects() {\\n  const projects = await fetchProjects()\\n\\n  return (\\n    <SidebarMenu>\\n      {projects.map((project) => (\\n        <SidebarMenuItem key={project.name}>\\n          <SidebarMenuButton asChild>\\n            <a href={project.url}>\\n              <project.icon />\\n              <span>{project.name}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\",\n    \"class-variance-authority\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"tooltip\",\n    \"input\",\n    \"use-mobile\",\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { PanelLeft } from \\\"lucide-react\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/new-york/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/new-york/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/new-york/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/new-york/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york/ui/tooltip\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nconst SidebarProvider = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & {\\n    defaultOpen?: boolean\\n    open?: boolean\\n    onOpenChange?: (open: boolean) => void\\n  }\\n>(\\n  (\\n    {\\n      defaultOpen = true,\\n      open: openProp,\\n      onOpenChange: setOpenProp,\\n      className,\\n      style,\\n      children,\\n      ...props\\n    },\\n    ref\\n  ) => {\\n    const isMobile = useIsMobile()\\n    const [openMobile, setOpenMobile] = React.useState(false)\\n\\n    // This is the internal state of the sidebar.\\n    // We use openProp and setOpenProp for control from outside the component.\\n    const [_open, _setOpen] = React.useState(defaultOpen)\\n    const open = openProp ?? _open\\n    const setOpen = React.useCallback(\\n      (value: boolean | ((value: boolean) => boolean)) => {\\n        const openState = typeof value === \\\"function\\\" ? value(open) : value\\n        if (setOpenProp) {\\n          setOpenProp(openState)\\n        } else {\\n          _setOpen(openState)\\n        }\\n\\n        // This sets the cookie to keep the sidebar state.\\n        document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n      },\\n      [setOpenProp, open]\\n    )\\n\\n    // Helper to toggle the sidebar.\\n    const toggleSidebar = React.useCallback(() => {\\n      return isMobile\\n        ? setOpenMobile((open) => !open)\\n        : setOpen((open) => !open)\\n    }, [isMobile, setOpen, setOpenMobile])\\n\\n    // Adds a keyboard shortcut to toggle the sidebar.\\n    React.useEffect(() => {\\n      const handleKeyDown = (event: KeyboardEvent) => {\\n        if (\\n          event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n          (event.metaKey || event.ctrlKey)\\n        ) {\\n          event.preventDefault()\\n          toggleSidebar()\\n        }\\n      }\\n\\n      window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n      return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n    }, [toggleSidebar])\\n\\n    // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n    // This makes it easier to style the sidebar with Tailwind classes.\\n    const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n    const contextValue = React.useMemo<SidebarContextProps>(\\n      () => ({\\n        state,\\n        open,\\n        setOpen,\\n        isMobile,\\n        openMobile,\\n        setOpenMobile,\\n        toggleSidebar,\\n      }),\\n      [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n    )\\n\\n    return (\\n      <SidebarContext.Provider value={contextValue}>\\n        <TooltipProvider delayDuration={0}>\\n          <div\\n            style={\\n              {\\n                \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n                \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n                ...style,\\n              } as React.CSSProperties\\n            }\\n            className={cn(\\n              \\\"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\\\",\\n              className\\n            )}\\n            ref={ref}\\n            {...props}\\n          >\\n            {children}\\n          </div>\\n        </TooltipProvider>\\n      </SidebarContext.Provider>\\n    )\\n  }\\n)\\nSidebarProvider.displayName = \\\"SidebarProvider\\\"\\n\\nconst Sidebar = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & {\\n    side?: \\\"left\\\" | \\\"right\\\"\\n    variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n    collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n  }\\n>(\\n  (\\n    {\\n      side = \\\"left\\\",\\n      variant = \\\"sidebar\\\",\\n      collapsible = \\\"offcanvas\\\",\\n      className,\\n      children,\\n      ...props\\n    },\\n    ref\\n  ) => {\\n    const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n    if (collapsible === \\\"none\\\") {\\n      return (\\n        <div\\n          className={cn(\\n            \\\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\\\",\\n            className\\n          )}\\n          ref={ref}\\n          {...props}\\n        >\\n          {children}\\n        </div>\\n      )\\n    }\\n\\n    if (isMobile) {\\n      return (\\n        <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n          <SheetContent\\n            data-sidebar=\\\"sidebar\\\"\\n            data-mobile=\\\"true\\\"\\n            className=\\\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n            style={\\n              {\\n                \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n              } as React.CSSProperties\\n            }\\n            side={side}\\n          >\\n            <SheetHeader className=\\\"sr-only\\\">\\n              <SheetTitle>Sidebar</SheetTitle>\\n              <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n            </SheetHeader>\\n            <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n          </SheetContent>\\n        </Sheet>\\n      )\\n    }\\n\\n    return (\\n      <div\\n        ref={ref}\\n        className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n        data-state={state}\\n        data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n        data-variant={variant}\\n        data-side={side}\\n      >\\n        {/* This is what handles the sidebar gap on desktop */}\\n        <div\\n          className={cn(\\n            \\\"relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\\\",\\n            \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n            \\\"group-data-[side=right]:rotate-180\\\",\\n            variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n              ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\\\"\\n              : \\\"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\\\"\\n          )}\\n        />\\n        <div\\n          className={cn(\\n            \\\"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex\\\",\\n            side === \\\"left\\\"\\n              ? \\\"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\\\"\\n              : \\\"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\\\",\\n            // Adjust the padding for floating and inset variants.\\n            variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n              ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\\\"\\n              : \\\"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <div\\n            data-sidebar=\\\"sidebar\\\"\\n            className=\\\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\\\"\\n          >\\n            {children}\\n          </div>\\n        </div>\\n      </div>\\n    )\\n  }\\n)\\nSidebar.displayName = \\\"Sidebar\\\"\\n\\nconst SidebarTrigger = React.forwardRef<\\n  React.ElementRef<typeof Button>,\\n  React.ComponentProps<typeof Button>\\n>(({ className, onClick, ...props }, ref) => {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      data-sidebar=\\\"trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className={cn(\\\"h-7 w-7\\\", className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <PanelLeft />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n})\\nSidebarTrigger.displayName = \\\"SidebarTrigger\\\"\\n\\nconst SidebarRail = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<\\\"button\\\">\\n>(({ className, ...props }, ref) => {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      ref={ref}\\n      data-sidebar=\\\"rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\\\",\\n        \\\"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarRail.displayName = \\\"SidebarRail\\\"\\n\\nconst SidebarInset = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"main\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <main\\n      ref={ref}\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background\\\",\\n        \\\"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarInset.displayName = \\\"SidebarInset\\\"\\n\\nconst SidebarInput = React.forwardRef<\\n  React.ElementRef<typeof Input>,\\n  React.ComponentProps<typeof Input>\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <Input\\n      ref={ref}\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\n        \\\"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarInput.displayName = \\\"SidebarInput\\\"\\n\\nconst SidebarHeader = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarHeader.displayName = \\\"SidebarHeader\\\"\\n\\nconst SidebarFooter = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarFooter.displayName = \\\"SidebarFooter\\\"\\n\\nconst SidebarSeparator = React.forwardRef<\\n  React.ElementRef<typeof Separator>,\\n  React.ComponentProps<typeof Separator>\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <Separator\\n      ref={ref}\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarSeparator.displayName = \\\"SidebarSeparator\\\"\\n\\nconst SidebarContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarContent.displayName = \\\"SidebarContent\\\"\\n\\nconst SidebarGroup = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarGroup.displayName = \\\"SidebarGroup\\\"\\n\\nconst SidebarGroupLabel = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & { asChild?: boolean }\\n>(({ className, asChild = false, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        \\\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarGroupLabel.displayName = \\\"SidebarGroupLabel\\\"\\n\\nconst SidebarGroupAction = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<\\\"button\\\"> & { asChild?: boolean }\\n>(({ className, asChild = false, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        // Increases the hit area of the button on mobile.\\n        \\\"after:absolute after:-inset-2 after:md:hidden\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarGroupAction.displayName = \\\"SidebarGroupAction\\\"\\n\\nconst SidebarGroupContent = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    data-sidebar=\\\"group-content\\\"\\n    className={cn(\\\"w-full text-sm\\\", className)}\\n    {...props}\\n  />\\n))\\nSidebarGroupContent.displayName = \\\"SidebarGroupContent\\\"\\n\\nconst SidebarMenu = React.forwardRef<\\n  HTMLUListElement,\\n  React.ComponentProps<\\\"ul\\\">\\n>(({ className, ...props }, ref) => (\\n  <ul\\n    ref={ref}\\n    data-sidebar=\\\"menu\\\"\\n    className={cn(\\\"flex w-full min-w-0 flex-col gap-1\\\", className)}\\n    {...props}\\n  />\\n))\\nSidebarMenu.displayName = \\\"SidebarMenu\\\"\\n\\nconst SidebarMenuItem = React.forwardRef<\\n  HTMLLIElement,\\n  React.ComponentProps<\\\"li\\\">\\n>(({ className, ...props }, ref) => (\\n  <li\\n    ref={ref}\\n    data-sidebar=\\\"menu-item\\\"\\n    className={cn(\\\"group/menu-item relative\\\", className)}\\n    {...props}\\n  />\\n))\\nSidebarMenuItem.displayName = \\\"SidebarMenuItem\\\"\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-sm\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-sm group-data-[collapsible=icon]:!p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nconst SidebarMenuButton = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<\\\"button\\\"> & {\\n    asChild?: boolean\\n    isActive?: boolean\\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n  } & VariantProps<typeof sidebarMenuButtonVariants>\\n>(\\n  (\\n    {\\n      asChild = false,\\n      isActive = false,\\n      variant = \\\"default\\\",\\n      size = \\\"default\\\",\\n      tooltip,\\n      className,\\n      ...props\\n    },\\n    ref\\n  ) => {\\n    const Comp = asChild ? Slot : \\\"button\\\"\\n    const { isMobile, state } = useSidebar()\\n\\n    const button = (\\n      <Comp\\n        ref={ref}\\n        data-sidebar=\\\"menu-button\\\"\\n        data-size={size}\\n        data-active={isActive}\\n        className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\\n        {...props}\\n      />\\n    )\\n\\n    if (!tooltip) {\\n      return button\\n    }\\n\\n    if (typeof tooltip === \\\"string\\\") {\\n      tooltip = {\\n        children: tooltip,\\n      }\\n    }\\n\\n    return (\\n      <Tooltip>\\n        <TooltipTrigger asChild>{button}</TooltipTrigger>\\n        <TooltipContent\\n          side=\\\"right\\\"\\n          align=\\\"center\\\"\\n          hidden={state !== \\\"collapsed\\\" || isMobile}\\n          {...tooltip}\\n        />\\n      </Tooltip>\\n    )\\n  }\\n)\\nSidebarMenuButton.displayName = \\\"SidebarMenuButton\\\"\\n\\nconst SidebarMenuAction = React.forwardRef<\\n  HTMLButtonElement,\\n  React.ComponentProps<\\\"button\\\"> & {\\n    asChild?: boolean\\n    showOnHover?: boolean\\n  }\\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        // Increases the hit area of the button on mobile.\\n        \\\"after:absolute after:-inset-2 after:md:hidden\\\",\\n        \\\"peer-data-[size=sm]/menu-button:top-1\\\",\\n        \\\"peer-data-[size=default]/menu-button:top-1.5\\\",\\n        \\\"peer-data-[size=lg]/menu-button:top-2.5\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        showOnHover &&\\n          \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarMenuAction.displayName = \\\"SidebarMenuAction\\\"\\n\\nconst SidebarMenuBadge = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\">\\n>(({ className, ...props }, ref) => (\\n  <div\\n    ref={ref}\\n    data-sidebar=\\\"menu-badge\\\"\\n    className={cn(\\n      \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\\\",\\n      \\\"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\\\",\\n      \\\"peer-data-[size=sm]/menu-button:top-1\\\",\\n      \\\"peer-data-[size=default]/menu-button:top-1.5\\\",\\n      \\\"peer-data-[size=lg]/menu-button:top-2.5\\\",\\n      \\\"group-data-[collapsible=icon]:hidden\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nSidebarMenuBadge.displayName = \\\"SidebarMenuBadge\\\"\\n\\nconst SidebarMenuSkeleton = React.forwardRef<\\n  HTMLDivElement,\\n  React.ComponentProps<\\\"div\\\"> & {\\n    showIcon?: boolean\\n  }\\n>(({ className, showIcon = false, ...props }, ref) => {\\n  // Random width between 50 to 90%.\\n  const width = React.useMemo(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  }, [])\\n\\n  return (\\n    <div\\n      ref={ref}\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-[--skeleton-width] flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n})\\nSidebarMenuSkeleton.displayName = \\\"SidebarMenuSkeleton\\\"\\n\\nconst SidebarMenuSub = React.forwardRef<\\n  HTMLUListElement,\\n  React.ComponentProps<\\\"ul\\\">\\n>(({ className, ...props }, ref) => (\\n  <ul\\n    ref={ref}\\n    data-sidebar=\\\"menu-sub\\\"\\n    className={cn(\\n      \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\\\",\\n      \\\"group-data-[collapsible=icon]:hidden\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nSidebarMenuSub.displayName = \\\"SidebarMenuSub\\\"\\n\\nconst SidebarMenuSubItem = React.forwardRef<\\n  HTMLLIElement,\\n  React.ComponentProps<\\\"li\\\">\\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\\nSidebarMenuSubItem.displayName = \\\"SidebarMenuSubItem\\\"\\n\\nconst SidebarMenuSubButton = React.forwardRef<\\n  HTMLAnchorElement,\\n  React.ComponentProps<\\\"a\\\"> & {\\n    asChild?: boolean\\n    size?: \\\"sm\\\" | \\\"md\\\"\\n    isActive?: boolean\\n  }\\n>(({ asChild = false, size = \\\"md\\\", isActive, className, ...props }, ref) => {\\n  const Comp = asChild ? Slot : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      ref={ref}\\n      data-sidebar=\\\"menu-sub-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(\\n        \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n        \\\"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\\\",\\n        size === \\\"sm\\\" && \\\"text-xs\\\",\\n        size === \\\"md\\\" && \\\"text-sm\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n})\\nSidebarMenuSubButton.displayName = \\\"SidebarMenuSubButton\\\"\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ],\n  \"tailwind\": {\n    \"config\": {\n      \"theme\": {\n        \"extend\": {\n          \"colors\": {\n            \"sidebar\": {\n              \"DEFAULT\": \"hsl(var(--sidebar-background))\",\n              \"foreground\": \"hsl(var(--sidebar-foreground))\",\n              \"primary\": \"hsl(var(--sidebar-primary))\",\n              \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n              \"accent\": \"hsl(var(--sidebar-accent))\",\n              \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n              \"border\": \"hsl(var(--sidebar-border))\",\n              \"ring\": \"hsl(var(--sidebar-ring))\"\n            }\n          }\n        }\n      }\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"sidebar-background\": \"0 0% 98%\",\n      \"sidebar-foreground\": \"240 5.3% 26.1%\",\n      \"sidebar-primary\": \"240 5.9% 10%\",\n      \"sidebar-primary-foreground\": \"0 0% 98%\",\n      \"sidebar-accent\": \"240 4.8% 95.9%\",\n      \"sidebar-accent-foreground\": \"240 5.9% 10%\",\n      \"sidebar-border\": \"220 13% 91%\",\n      \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n    },\n    \"dark\": {\n      \"sidebar-background\": \"240 5.9% 10%\",\n      \"sidebar-foreground\": \"240 4.8% 95.9%\",\n      \"sidebar-primary\": \"224.3 76.3% 48%\",\n      \"sidebar-primary-foreground\": \"0 0% 100%\",\n      \"sidebar-accent\": \"240 3.7% 15.9%\",\n      \"sidebar-accent-foreground\": \"240 4.8% 95.9%\",\n      \"sidebar-border\": \"240 3.7% 15.9%\",\n      \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sink.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sink\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"alert\",\n    \"alert-dialog\",\n    \"aspect-ratio\",\n    \"avatar\",\n    \"badge\",\n    \"breadcrumb\",\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"carousel\",\n    \"chart\",\n    \"checkbox\",\n    \"collapsible\",\n    \"command\",\n    \"context-menu\",\n    \"dialog\",\n    \"drawer\",\n    \"dropdown-menu\",\n    \"hover-card\",\n    \"input\",\n    \"input-otp\",\n    \"label\",\n    \"menubar\",\n    \"navigation-menu\",\n    \"pagination\",\n    \"popover\",\n    \"progress\",\n    \"radio-group\",\n    \"resizable\",\n    \"scroll-area\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"sidebar\",\n    \"skeleton\",\n    \"slider\",\n    \"sonner\",\n    \"switch\",\n    \"table\",\n    \"tabs\",\n    \"textarea\",\n    \"toast\",\n    \"toggle\",\n    \"toggle-group\",\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sink/page.tsx\",\n      \"content\": \"import { AccordionDemo } from \\\"@/registry/new-york/internal/sink/components/accordion-demo\\\"\\nimport { AlertDemo } from \\\"@/registry/new-york/internal/sink/components/alert-demo\\\"\\nimport { AlertDialogDemo } from \\\"@/registry/new-york/internal/sink/components/alert-dialog-demo\\\"\\nimport { AppSidebar } from \\\"@/registry/new-york/internal/sink/components/app-sidebar\\\"\\nimport { AspectRatioDemo } from \\\"@/registry/new-york/internal/sink/components/aspect-ratio-demo\\\"\\nimport { AvatarDemo } from \\\"@/registry/new-york/internal/sink/components/avatar-demo\\\"\\nimport { BadgeDemo } from \\\"@/registry/new-york/internal/sink/components/badge-demo\\\"\\nimport { BadgeDestructive } from \\\"@/registry/new-york/internal/sink/components/badge-destructive\\\"\\nimport { BadgeOutline } from \\\"@/registry/new-york/internal/sink/components/badge-outline\\\"\\nimport { BadgeSecondary } from \\\"@/registry/new-york/internal/sink/components/badge-secondary\\\"\\nimport { BreadcrumbDemo } from \\\"@/registry/new-york/internal/sink/components/breadcrumb-demo\\\"\\nimport { ButtonDemo } from \\\"@/registry/new-york/internal/sink/components/button-demo\\\"\\nimport { ButtonDestructive } from \\\"@/registry/new-york/internal/sink/components/button-destructive\\\"\\nimport { ButtonGhost } from \\\"@/registry/new-york/internal/sink/components/button-ghost\\\"\\nimport { ButtonLink } from \\\"@/registry/new-york/internal/sink/components/button-link\\\"\\nimport { ButtonLoading } from \\\"@/registry/new-york/internal/sink/components/button-loading\\\"\\nimport { ButtonOutline } from \\\"@/registry/new-york/internal/sink/components/button-outline\\\"\\nimport { ButtonSecondary } from \\\"@/registry/new-york/internal/sink/components/button-secondary\\\"\\nimport { ButtonWithIcon } from \\\"@/registry/new-york/internal/sink/components/button-with-icon\\\"\\nimport { CalendarDemo } from \\\"@/registry/new-york/internal/sink/components/calendar-demo\\\"\\nimport { CardDemo } from \\\"@/registry/new-york/internal/sink/components/card-demo\\\"\\nimport { CarouselDemo } from \\\"@/registry/new-york/internal/sink/components/carousel-demo\\\"\\nimport { CheckboxDemo } from \\\"@/registry/new-york/internal/sink/components/checkbox-demo\\\"\\nimport { CollapsibleDemo } from \\\"@/registry/new-york/internal/sink/components/collapsible-demo\\\"\\nimport { ComboboxDemo } from \\\"@/registry/new-york/internal/sink/components/combobox-demo\\\"\\nimport { CommandDemo } from \\\"@/registry/new-york/internal/sink/components/command-demo\\\"\\nimport { ComponentWrapper } from \\\"@/registry/new-york/internal/sink/components/component-wrapper\\\"\\nimport { ContextMenuDemo } from \\\"@/registry/new-york/internal/sink/components/context-menu-demo\\\"\\nimport { DatePickerDemo } from \\\"@/registry/new-york/internal/sink/components/date-picker-demo\\\"\\nimport { DialogDemo } from \\\"@/registry/new-york/internal/sink/components/dialog-demo\\\"\\nimport { DrawerDemo } from \\\"@/registry/new-york/internal/sink/components/drawer-demo\\\"\\nimport { DropdownMenuDemo } from \\\"@/registry/new-york/internal/sink/components/dropdown-menu-demo\\\"\\nimport { HoverCardDemo } from \\\"@/registry/new-york/internal/sink/components/hover-card-demo\\\"\\nimport { InputDemo } from \\\"@/registry/new-york/internal/sink/components/input-demo\\\"\\nimport { InputOTPDemo } from \\\"@/registry/new-york/internal/sink/components/input-otp-demo\\\"\\nimport { LabelDemo } from \\\"@/registry/new-york/internal/sink/components/label-demo\\\"\\nimport { MenubarDemo } from \\\"@/registry/new-york/internal/sink/components/menubar-demo\\\"\\nimport { NavigationMenuDemo } from \\\"@/registry/new-york/internal/sink/components/navigation-menu-demo\\\"\\nimport { PaginationDemo } from \\\"@/registry/new-york/internal/sink/components/pagination-demo\\\"\\nimport { PopoverDemo } from \\\"@/registry/new-york/internal/sink/components/popover-demo\\\"\\nimport { ProgressDemo } from \\\"@/registry/new-york/internal/sink/components/progress-demo\\\"\\nimport { RadioGroupDemo } from \\\"@/registry/new-york/internal/sink/components/radio-group-demo\\\"\\nimport { ResizableHandleDemo } from \\\"@/registry/new-york/internal/sink/components/resizable-handle\\\"\\nimport { ScrollAreaDemo } from \\\"@/registry/new-york/internal/sink/components/scroll-area-demo\\\"\\nimport { SelectDemo } from \\\"@/registry/new-york/internal/sink/components/select-demo\\\"\\nimport { SeparatorDemo } from \\\"@/registry/new-york/internal/sink/components/separator-demo\\\"\\nimport { SheetDemo } from \\\"@/registry/new-york/internal/sink/components/sheet-demo\\\"\\nimport { SkeletonDemo } from \\\"@/registry/new-york/internal/sink/components/skeleton-demo\\\"\\nimport { SliderDemo } from \\\"@/registry/new-york/internal/sink/components/slider-demo\\\"\\nimport { SonnerDemo } from \\\"@/registry/new-york/internal/sink/components/sonner-demo\\\"\\nimport { SwitchDemo } from \\\"@/registry/new-york/internal/sink/components/switch-demo\\\"\\nimport { TableDemo } from \\\"@/registry/new-york/internal/sink/components/table-demo\\\"\\nimport { TabsDemo } from \\\"@/registry/new-york/internal/sink/components/tabs-demo\\\"\\nimport { TextareaDemo } from \\\"@/registry/new-york/internal/sink/components/textarea-demo\\\"\\nimport { ToastDemo } from \\\"@/registry/new-york/internal/sink/components/toast-demo\\\"\\nimport { ToggleDemo } from \\\"@/registry/new-york/internal/sink/components/toggle-demo\\\"\\nimport { ToggleDisabled } from \\\"@/registry/new-york/internal/sink/components/toggle-disabled\\\"\\nimport { ToggleGroupDemo } from \\\"@/registry/new-york/internal/sink/components/toggle-group-demo\\\"\\nimport { ToggleOutline } from \\\"@/registry/new-york/internal/sink/components/toggle-outline\\\"\\nimport { ToggleWithText } from \\\"@/registry/new-york/internal/sink/components/toggle-with-text\\\"\\nimport { TooltipDemo } from \\\"@/registry/new-york/internal/sink/components/tooltip-demo\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport default function SinkPage() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\\\">\\n            <ComponentWrapper name=\\\"Accordion\\\">\\n              <AccordionDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Alert\\\">\\n              <AlertDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"AlertDialog\\\">\\n              <AlertDialogDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"AspectRatio\\\">\\n              <AspectRatioDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Avatar\\\">\\n              <AvatarDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Badge\\\">\\n              <BadgeDemo />\\n              <BadgeDestructive />\\n              <BadgeOutline />\\n              <BadgeSecondary />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Breadcrumb\\\">\\n              <BreadcrumbDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Button\\\">\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <ButtonDemo />\\n                <ButtonDestructive />\\n                <ButtonGhost />\\n                <ButtonLink />\\n              </div>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <ButtonLoading />\\n                <ButtonOutline />\\n                <ButtonSecondary />\\n              </div>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <ButtonWithIcon />\\n              </div>\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Calendar\\\">\\n              <CalendarDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Card\\\">\\n              <CardDemo className=\\\"w-full\\\" />\\n            </ComponentWrapper>\\n            <ComponentWrapper\\n              name=\\\"Carousel\\\"\\n              className=\\\"[&_.max-w-xs]:max-w-[70%]\\\"\\n            >\\n              <CarouselDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Checkbox\\\">\\n              <CheckboxDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Collapsible\\\">\\n              <CollapsibleDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Combobox\\\">\\n              <ComboboxDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper\\n              name=\\\"Command\\\"\\n              className=\\\"[&_[cmdk-root]]:md:min-w-max\\\"\\n            >\\n              <CommandDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"ContextMenu\\\">\\n              <ContextMenuDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"DatePicker\\\">\\n              <DatePickerDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Dialog\\\">\\n              <DialogDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Drawer\\\">\\n              <DrawerDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"DropdownMenu\\\">\\n              <DropdownMenuDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"HoverCard\\\">\\n              <HoverCardDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Input\\\">\\n              <InputDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"InputOTP\\\">\\n              <InputOTPDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Label\\\">\\n              <LabelDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Menubar\\\">\\n              <MenubarDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"NavigationMenu\\\" className=\\\"col-span-2\\\">\\n              <NavigationMenuDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Pagination\\\">\\n              <PaginationDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Popover\\\">\\n              <PopoverDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Progress\\\">\\n              <ProgressDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"RadioGroup\\\">\\n              <RadioGroupDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Resizable\\\" className=\\\"col-span-2\\\">\\n              <ResizableHandleDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"ScrollArea\\\">\\n              <ScrollAreaDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Select\\\">\\n              <SelectDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Separator\\\">\\n              <SeparatorDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Sheet\\\">\\n              <SheetDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Skeleton\\\">\\n              <SkeletonDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Slider\\\">\\n              <SliderDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Sonner\\\">\\n              <SonnerDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Switch\\\">\\n              <SwitchDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Table\\\" className=\\\"col-span-2\\\">\\n              <TableDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Tabs\\\">\\n              <TabsDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Textarea\\\">\\n              <TextareaDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Toast\\\">\\n              <ToastDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Toggle\\\">\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <ToggleDemo />\\n                <ToggleDisabled />\\n                <ToggleOutline />\\n                <ToggleWithText />\\n              </div>\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"ToggleGroup\\\">\\n              <ToggleGroupDemo />\\n            </ComponentWrapper>\\n            <ComponentWrapper name=\\\"Tooltip\\\">\\n              <TooltipDemo />\\n            </ComponentWrapper>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/sink/page.tsx\"\n    },\n    {\n      \"path\": \"internal/sink/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  GalleryVerticalEnd,\\n  Map,\\n  PieChart,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/new-york/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/new-york/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/new-york/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: GalleryVerticalEnd,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/component-wrapper.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york/lib/utils\\\"\\n\\nexport function ComponentWrapper({\\n  className,\\n  name,\\n  children,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"div\\\"> & { name: string }) {\\n  return (\\n    <div\\n      className={cn(\\\"flex w-full flex-col rounded-lg border\\\", className)}\\n      {...props}\\n    >\\n      <div className=\\\"border-b px-4 py-3\\\">\\n        <div className=\\\"text-sm font-medium\\\">{name}</div>\\n      </div>\\n      <div className=\\\"flex flex-1 flex-col items-center justify-center gap-2 p-4 [&>div]:max-w-full\\\">\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon && <item.icon />}\\n                  <span>{item.title}</span>\\n                  <ChevronRight className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  Forward,\\n  MoreHorizontal,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Forward className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal className=\\\"text-sidebar-foreground/70\\\" />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">\\n                  {activeTeam.name}\\n                </span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/accordion-demo.tsx\",\n      \"content\": \"import {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/new-york/ui/accordion\\\"\\n\\nexport function AccordionDemo() {\\n  return (\\n    <Accordion type=\\\"single\\\" collapsible className=\\\"w-full\\\">\\n      <AccordionItem value=\\\"item-1\\\">\\n        <AccordionTrigger>Is it accessible?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It adheres to the WAI-ARIA design pattern.\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-2\\\">\\n        <AccordionTrigger>Is it styled?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It comes with default styles that matches the other\\n          components&apos; aesthetic.\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-3\\\">\\n        <AccordionTrigger>Is it animated?</AccordionTrigger>\\n        <AccordionContent>\\n          Yes. It's animated by default, but you can disable it if you prefer.\\n        </AccordionContent>\\n      </AccordionItem>\\n    </Accordion>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/alert-demo.tsx\",\n      \"content\": \"import { Terminal } from \\\"lucide-react\\\"\\n\\nimport {\\n  Alert,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/new-york/ui/alert\\\"\\n\\nexport function AlertDemo() {\\n  return (\\n    <Alert>\\n      <Terminal className=\\\"h-4 w-4\\\" />\\n      <AlertTitle>Heads up!</AlertTitle>\\n      <AlertDescription>\\n        You can add components to your app using the cli.\\n      </AlertDescription>\\n    </Alert>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/alert-dialog-demo.tsx\",\n      \"content\": \"import {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/new-york/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function AlertDialogDemo() {\\n  return (\\n    <AlertDialog>\\n      <AlertDialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Show Dialog</Button>\\n      </AlertDialogTrigger>\\n      <AlertDialogContent>\\n        <AlertDialogHeader>\\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n          <AlertDialogDescription>\\n            This action cannot be undone. This will permanently delete your\\n            account and remove your data from our servers.\\n          </AlertDialogDescription>\\n        </AlertDialogHeader>\\n        <AlertDialogFooter>\\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\\n          <AlertDialogAction>Continue</AlertDialogAction>\\n        </AlertDialogFooter>\\n      </AlertDialogContent>\\n    </AlertDialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/aspect-ratio-demo.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport { AspectRatio } from \\\"@/registry/new-york/ui/aspect-ratio\\\"\\n\\nexport function AspectRatioDemo() {\\n  return (\\n    <AspectRatio ratio={16 / 9} className=\\\"bg-muted\\\">\\n      <Image\\n        src=\\\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\\\"\\n        alt=\\\"Photo by Drew Beamer\\\"\\n        fill\\n        className=\\\"h-full w-full rounded-md object-cover\\\"\\n      />\\n    </AspectRatio>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/avatar-demo.tsx\",\n      \"content\": \"import {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\n\\nexport function AvatarDemo() {\\n  return (\\n    <Avatar>\\n      <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n      <AvatarFallback>CN</AvatarFallback>\\n    </Avatar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/badge-demo.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\n\\nexport function BadgeDemo() {\\n  return <Badge>Badge</Badge>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/breadcrumb-demo.tsx\",\n      \"content\": \"import {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nexport function BreadcrumbDemo() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/\\\">Home</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger className=\\\"flex items-center gap-1\\\">\\n              <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n              <span className=\\\"sr-only\\\">Toggle menu</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"start\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Themes</DropdownMenuItem>\\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink href=\\\"/docs/components\\\">Components</BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function ButtonDemo() {\\n  return <Button>Button</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/calendar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\n\\nexport function CalendarDemo() {\\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-md border shadow\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/card-demo.tsx\",\n      \"content\": \"import { BellRing, Check } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { Switch } from \\\"@/registry/new-york/ui/switch\\\"\\n\\nconst notifications = [\\n  {\\n    title: \\\"Your call has been confirmed.\\\",\\n    description: \\\"1 hour ago\\\",\\n  },\\n  {\\n    title: \\\"You have a new message!\\\",\\n    description: \\\"1 hour ago\\\",\\n  },\\n  {\\n    title: \\\"Your subscription is expiring soon!\\\",\\n    description: \\\"2 hours ago\\\",\\n  },\\n]\\n\\ntype CardProps = React.ComponentProps<typeof Card>\\n\\nexport function CardDemo({ className, ...props }: CardProps) {\\n  return (\\n    <Card className={cn(\\\"w-[380px]\\\", className)} {...props}>\\n      <CardHeader>\\n        <CardTitle>Notifications</CardTitle>\\n        <CardDescription>You have 3 unread messages.</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"grid gap-4\\\">\\n        <div className=\\\" flex items-center space-x-4 rounded-md border p-4\\\">\\n          <BellRing />\\n          <div className=\\\"flex-1 space-y-1\\\">\\n            <p className=\\\"text-sm font-medium leading-none\\\">\\n              Push Notifications\\n            </p>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Send notifications to device.\\n            </p>\\n          </div>\\n          <Switch />\\n        </div>\\n        <div>\\n          {notifications.map((notification, index) => (\\n            <div\\n              key={index}\\n              className=\\\"mb-4 grid grid-cols-[25px_1fr] items-start pb-4 last:mb-0 last:pb-0\\\"\\n            >\\n              <span className=\\\"flex h-2 w-2 translate-y-1 rounded-full bg-sky-500\\\" />\\n              <div className=\\\"space-y-1\\\">\\n                <p className=\\\"text-sm font-medium leading-none\\\">\\n                  {notification.title}\\n                </p>\\n                <p className=\\\"text-sm text-muted-foreground\\\">\\n                  {notification.description}\\n                </p>\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </CardContent>\\n      <CardFooter>\\n        <Button className=\\\"w-full\\\">\\n          <Check /> Mark all as read\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/carousel-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york/ui/carousel\\\"\\n\\nexport function CarouselDemo() {\\n  return (\\n    <Carousel className=\\\"w-full max-w-xs\\\">\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index}>\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/checkbox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\n\\nexport function CheckboxDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Checkbox id=\\\"terms\\\" />\\n      <label\\n        htmlFor=\\\"terms\\\"\\n        className=\\\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n      >\\n        Accept terms and conditions\\n      </label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/collapsible-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york/ui/collapsible\\\"\\n\\nexport function CollapsibleDemo() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Collapsible\\n      open={isOpen}\\n      onOpenChange={setIsOpen}\\n      className=\\\"w-[350px] space-y-2\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between space-x-4 px-4\\\">\\n        <h4 className=\\\"text-sm font-semibold\\\">\\n          @peduarte starred 3 repositories\\n        </h4>\\n        <CollapsibleTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            <ChevronsUpDown className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Toggle</span>\\n          </Button>\\n        </CollapsibleTrigger>\\n      </div>\\n      <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n        @radix-ui/primitives\\n      </div>\\n      <CollapsibleContent className=\\\"space-y-2\\\">\\n        <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n          @radix-ui/colors\\n        </div>\\n        <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm shadow-sm\\\">\\n          @stitches/react\\n        </div>\\n      </CollapsibleContent>\\n    </Collapsible>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/combobox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york/ui/command\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nconst frameworks = [\\n  {\\n    value: \\\"next.js\\\",\\n    label: \\\"Next.js\\\",\\n  },\\n  {\\n    value: \\\"sveltekit\\\",\\n    label: \\\"SvelteKit\\\",\\n  },\\n  {\\n    value: \\\"nuxt.js\\\",\\n    label: \\\"Nuxt.js\\\",\\n  },\\n  {\\n    value: \\\"remix\\\",\\n    label: \\\"Remix\\\",\\n  },\\n  {\\n    value: \\\"astro\\\",\\n    label: \\\"Astro\\\",\\n  },\\n]\\n\\nexport function ComboboxDemo() {\\n  const [open, setOpen] = React.useState(false)\\n  const [value, setValue] = React.useState(\\\"\\\")\\n\\n  return (\\n    <Popover open={open} onOpenChange={setOpen}>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant=\\\"outline\\\"\\n          role=\\\"combobox\\\"\\n          aria-expanded={open}\\n          className=\\\"w-[200px] justify-between\\\"\\n        >\\n          {value\\n            ? frameworks.find((framework) => framework.value === value)?.label\\n            : \\\"Select framework...\\\"}\\n          <ChevronsUpDown className=\\\"opacity-50\\\" />\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-[200px] p-0\\\">\\n        <Command>\\n          <CommandInput placeholder=\\\"Search framework...\\\" className=\\\"h-9\\\" />\\n          <CommandList>\\n            <CommandEmpty>No framework found.</CommandEmpty>\\n            <CommandGroup>\\n              {frameworks.map((framework) => (\\n                <CommandItem\\n                  key={framework.value}\\n                  value={framework.value}\\n                  onSelect={(currentValue) => {\\n                    setValue(currentValue === value ? \\\"\\\" : currentValue)\\n                    setOpen(false)\\n                  }}\\n                >\\n                  {framework.label}\\n                  <Check\\n                    className={cn(\\n                      \\\"ml-auto\\\",\\n                      value === framework.value ? \\\"opacity-100\\\" : \\\"opacity-0\\\"\\n                    )}\\n                  />\\n                </CommandItem>\\n              ))}\\n            </CommandGroup>\\n          </CommandList>\\n        </Command>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/command-demo.tsx\",\n      \"content\": \"import {\\n  Calculator,\\n  Calendar,\\n  CreditCard,\\n  Settings,\\n  Smile,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/new-york/ui/command\\\"\\n\\nexport function CommandDemo() {\\n  return (\\n    <Command className=\\\"rounded-lg border shadow-md md:min-w-[450px]\\\">\\n      <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n      <CommandList>\\n        <CommandEmpty>No results found.</CommandEmpty>\\n        <CommandGroup heading=\\\"Suggestions\\\">\\n          <CommandItem>\\n            <Calendar />\\n            <span>Calendar</span>\\n          </CommandItem>\\n          <CommandItem>\\n            <Smile />\\n            <span>Search Emoji</span>\\n          </CommandItem>\\n          <CommandItem disabled>\\n            <Calculator />\\n            <span>Calculator</span>\\n          </CommandItem>\\n        </CommandGroup>\\n        <CommandSeparator />\\n        <CommandGroup heading=\\\"Settings\\\">\\n          <CommandItem>\\n            <User />\\n            <span>Profile</span>\\n            <CommandShortcut>⌘P</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <CreditCard />\\n            <span>Billing</span>\\n            <CommandShortcut>⌘B</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <Settings />\\n            <span>Settings</span>\\n            <CommandShortcut>⌘S</CommandShortcut>\\n          </CommandItem>\\n        </CommandGroup>\\n      </CommandList>\\n    </Command>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/context-menu-demo.tsx\",\n      \"content\": \"import {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/new-york/ui/context-menu\\\"\\n\\nexport function ContextMenuDemo() {\\n  return (\\n    <ContextMenu>\\n      <ContextMenuTrigger className=\\\"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm\\\">\\n        Right click here\\n      </ContextMenuTrigger>\\n      <ContextMenuContent className=\\\"w-64\\\">\\n        <ContextMenuItem inset>\\n          Back\\n          <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset disabled>\\n          Forward\\n          <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset>\\n          Reload\\n          <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuSub>\\n          <ContextMenuSubTrigger inset>More Tools</ContextMenuSubTrigger>\\n          <ContextMenuSubContent className=\\\"w-48\\\">\\n            <ContextMenuItem>\\n              Save Page As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n            <ContextMenuItem>Name Window...</ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>Developer Tools</ContextMenuItem>\\n          </ContextMenuSubContent>\\n        </ContextMenuSub>\\n        <ContextMenuSeparator />\\n        <ContextMenuCheckboxItem checked>\\n          Show Bookmarks Bar\\n          <ContextMenuShortcut>⌘⇧B</ContextMenuShortcut>\\n        </ContextMenuCheckboxItem>\\n        <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n        <ContextMenuSeparator />\\n        <ContextMenuRadioGroup value=\\\"pedro\\\">\\n          <ContextMenuLabel inset>People</ContextMenuLabel>\\n          <ContextMenuSeparator />\\n          <ContextMenuRadioItem value=\\\"pedro\\\">\\n            Pedro Duarte\\n          </ContextMenuRadioItem>\\n          <ContextMenuRadioItem value=\\\"colm\\\">Colm Tuite</ContextMenuRadioItem>\\n        </ContextMenuRadioGroup>\\n      </ContextMenuContent>\\n    </ContextMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/date-picker-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport function DatePickerDemo() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant={\\\"outline\\\"}\\n          className={cn(\\n            \\\"w-[240px] justify-start text-left font-normal\\\",\\n            !date && \\\"text-muted-foreground\\\"\\n          )}\\n        >\\n          <CalendarIcon />\\n          {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          initialFocus\\n        />\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/dialog-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york/ui/dialog\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport function DialogDemo() {\\n  return (\\n    <Dialog>\\n      <DialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Edit Profile</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n        <DialogHeader>\\n          <DialogTitle>Edit profile</DialogTitle>\\n          <DialogDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </DialogDescription>\\n        </DialogHeader>\\n        <div className=\\\"grid gap-4 py-4\\\">\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n              Name\\n            </Label>\\n            <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n              Username\\n            </Label>\\n            <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n        </div>\\n        <DialogFooter>\\n          <Button type=\\\"submit\\\">Save changes</Button>\\n        </DialogFooter>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/drawer-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Minus, Plus } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, ResponsiveContainer } from \\\"recharts\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york/ui/drawer\\\"\\n\\nconst data = [\\n  {\\n    goal: 400,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 239,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 349,\\n  },\\n]\\n\\nexport function DrawerDemo() {\\n  const [goal, setGoal] = React.useState(350)\\n\\n  function onClick(adjustment: number) {\\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\\n  }\\n\\n  return (\\n    <Drawer>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open Drawer</Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <div className=\\\"mx-auto w-full max-w-sm\\\">\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"p-4 pb-0\\\">\\n            <div className=\\\"flex items-center justify-center space-x-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(-10)}\\n                disabled={goal <= 200}\\n              >\\n                <Minus />\\n                <span className=\\\"sr-only\\\">Decrease</span>\\n              </Button>\\n              <div className=\\\"flex-1 text-center\\\">\\n                <div className=\\\"text-7xl font-bold tracking-tighter\\\">\\n                  {goal}\\n                </div>\\n                <div className=\\\"text-[0.70rem] uppercase text-muted-foreground\\\">\\n                  Calories/day\\n                </div>\\n              </div>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(10)}\\n                disabled={goal >= 400}\\n              >\\n                <Plus />\\n                <span className=\\\"sr-only\\\">Increase</span>\\n              </Button>\\n            </div>\\n            <div className=\\\"mt-3 h-[120px]\\\">\\n              <ResponsiveContainer width=\\\"100%\\\" height=\\\"100%\\\">\\n                <BarChart data={data}>\\n                  <Bar\\n                    dataKey=\\\"goal\\\"\\n                    style={\\n                      {\\n                        fill: \\\"hsl(var(--foreground))\\\",\\n                        opacity: 0.9,\\n                      } as React.CSSProperties\\n                    }\\n                  />\\n                </BarChart>\\n              </ResponsiveContainer>\\n            </div>\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </div>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/dropdown-menu-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york/ui/dropdown-menu\\\"\\n\\nexport function DropdownMenuDemo() {\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>\\n            Profile\\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Billing\\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Settings\\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Keyboard shortcuts\\n            <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>Team</DropdownMenuItem>\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuItem>Email</DropdownMenuItem>\\n                <DropdownMenuItem>Message</DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>More...</DropdownMenuItem>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n          <DropdownMenuItem>\\n            New Team\\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>GitHub</DropdownMenuItem>\\n        <DropdownMenuItem>Support</DropdownMenuItem>\\n        <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>\\n          Log out\\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n        </DropdownMenuItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/hover-card-demo.tsx\",\n      \"content\": \"import { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/new-york/ui/hover-card\\\"\\n\\nexport function HoverCardDemo() {\\n  return (\\n    <HoverCard>\\n      <HoverCardTrigger asChild>\\n        <Button variant=\\\"link\\\">@nextjs</Button>\\n      </HoverCardTrigger>\\n      <HoverCardContent className=\\\"w-80\\\">\\n        <div className=\\\"flex justify-between space-x-4\\\">\\n          <Avatar>\\n            <AvatarImage src=\\\"https://github.com/vercel.png\\\" />\\n            <AvatarFallback>VC</AvatarFallback>\\n          </Avatar>\\n          <div className=\\\"space-y-1\\\">\\n            <h4 className=\\\"text-sm font-semibold\\\">@nextjs</h4>\\n            <p className=\\\"text-sm\\\">\\n              The React Framework – created and maintained by @vercel.\\n            </p>\\n            <div className=\\\"flex items-center pt-2\\\">\\n              <CalendarIcon className=\\\"mr-2 h-4 w-4 opacity-70\\\" />{\\\" \\\"}\\n              <span className=\\\"text-xs text-muted-foreground\\\">\\n                Joined December 2021\\n              </span>\\n            </div>\\n          </div>\\n        </div>\\n      </HoverCardContent>\\n    </HoverCard>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/input-demo.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york/ui/input\\\"\\n\\nexport function InputDemo() {\\n  return <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/input-otp-demo.tsx\",\n      \"content\": \"import {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york/ui/input-otp\\\"\\n\\nexport function InputOTPDemo() {\\n  return (\\n    <InputOTP maxLength={6}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n        <InputOTPSlot index={2} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={3} />\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/label-demo.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/new-york/ui/checkbox\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\n\\nexport function LabelDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <Label htmlFor=\\\"terms\\\">Accept terms and conditions</Label>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/menubar-demo.tsx\",\n      \"content\": \"import {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarItem,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/new-york/ui/menubar\\\"\\n\\nexport function MenubarDemo() {\\n  return (\\n    <Menubar>\\n      <MenubarMenu>\\n        <MenubarTrigger>File</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled>New Incognito Window</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Email link</MenubarItem>\\n              <MenubarItem>Messages</MenubarItem>\\n              <MenubarItem>Notes</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>\\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n          </MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Edit</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Search the web</MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem>Find...</MenubarItem>\\n              <MenubarItem>Find Next</MenubarItem>\\n              <MenubarItem>Find Previous</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>Cut</MenubarItem>\\n          <MenubarItem>Copy</MenubarItem>\\n          <MenubarItem>Paste</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>View</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n          <MenubarCheckboxItem checked>\\n            Always Show Full URLs\\n          </MenubarCheckboxItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>\\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled inset>\\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Toggle Fullscreen</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Hide Sidebar</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Profiles</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarRadioGroup value=\\\"benoit\\\">\\n            <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"Luis\\\">Luis</MenubarRadioItem>\\n          </MenubarRadioGroup>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Edit...</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Add Profile...</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n    </Menubar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/navigation-menu-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/new-york/ui/navigation-menu\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport function NavigationMenuDemo() {\\n  return (\\n    <NavigationMenu>\\n      <NavigationMenuList>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid gap-3 p-4 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\\\">\\n              <li className=\\\"row-span-3\\\">\\n                <NavigationMenuLink asChild>\\n                  <a\\n                    className=\\\"flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md\\\"\\n                    href=\\\"/\\\"\\n                  >\\n                    <div className=\\\"mb-2 mt-4 text-lg font-medium\\\">\\n                      shadcn/ui\\n                    </div>\\n                    <p className=\\\"text-sm leading-tight text-muted-foreground\\\">\\n                      Beautifully designed components built with Radix UI and\\n                      Tailwind CSS.\\n                    </p>\\n                  </a>\\n                </NavigationMenuLink>\\n              </li>\\n              <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                Re-usable components built using Radix UI and Tailwind CSS.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                How to install dependencies and structure your app.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                Styles for headings, paragraphs, lists...etc\\n              </ListItem>\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px] \\\">\\n              {components.map((component) => (\\n                <ListItem\\n                  key={component.title}\\n                  title={component.title}\\n                  href={component.href}\\n                >\\n                  {component.description}\\n                </ListItem>\\n              ))}\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <Link href=\\\"/docs\\\" legacyBehavior passHref>\\n            <NavigationMenuLink className={navigationMenuTriggerStyle()}>\\n              Documentation\\n            </NavigationMenuLink>\\n          </Link>\\n        </NavigationMenuItem>\\n      </NavigationMenuList>\\n    </NavigationMenu>\\n  )\\n}\\n\\nconst ListItem = React.forwardRef<\\n  React.ElementRef<\\\"a\\\">,\\n  React.ComponentPropsWithoutRef<\\\"a\\\">\\n>(({ className, title, children, ...props }, ref) => {\\n  return (\\n    <li>\\n      <NavigationMenuLink asChild>\\n        <a\\n          ref={ref}\\n          className={cn(\\n            \\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          <div className=\\\"text-sm font-medium leading-none\\\">{title}</div>\\n          <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n            {children}\\n          </p>\\n        </a>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n})\\nListItem.displayName = \\\"ListItem\\\"\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/pagination-demo.tsx\",\n      \"content\": \"import {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/new-york/ui/pagination\\\"\\n\\nexport function PaginationDemo() {\\n  return (\\n    <Pagination>\\n      <PaginationContent>\\n        <PaginationItem>\\n          <PaginationPrevious href=\\\"#\\\" />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\" isActive>\\n            2\\n          </PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationEllipsis />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationNext href=\\\"#\\\" />\\n        </PaginationItem>\\n      </PaginationContent>\\n    </Pagination>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/popover-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york/ui/popover\\\"\\n\\nexport function PopoverDemo() {\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open popover</Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-80\\\">\\n        <div className=\\\"grid gap-4\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <h4 className=\\\"font-medium leading-none\\\">Dimensions</h4>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Set the dimensions for the layer.\\n            </p>\\n          </div>\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"width\\\">Width</Label>\\n              <Input\\n                id=\\\"width\\\"\\n                defaultValue=\\\"100%\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxWidth\\\">Max. width</Label>\\n              <Input\\n                id=\\\"maxWidth\\\"\\n                defaultValue=\\\"300px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"height\\\">Height</Label>\\n              <Input\\n                id=\\\"height\\\"\\n                defaultValue=\\\"25px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxHeight\\\">Max. height</Label>\\n              <Input\\n                id=\\\"maxHeight\\\"\\n                defaultValue=\\\"none\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n          </div>\\n        </div>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/progress-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Progress } from \\\"@/registry/new-york/ui/progress\\\"\\n\\nexport function ProgressDemo() {\\n  const [progress, setProgress] = React.useState(13)\\n\\n  React.useEffect(() => {\\n    const timer = setTimeout(() => setProgress(66), 500)\\n    return () => clearTimeout(timer)\\n  }, [])\\n\\n  return <Progress value={progress} className=\\\"w-[60%]\\\" />\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/radio-group-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/new-york/ui/radio-group\\\"\\n\\nexport function RadioGroupDemo() {\\n  return (\\n    <RadioGroup defaultValue=\\\"comfortable\\\">\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n        <Label htmlFor=\\\"r1\\\">Default</Label>\\n      </div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n        <Label htmlFor=\\\"r2\\\">Comfortable</Label>\\n      </div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n        <Label htmlFor=\\\"r3\\\">Compact</Label>\\n      </div>\\n    </RadioGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/resizable-handle.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york/ui/resizable\\\"\\n\\nexport function ResizableHandleDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      direction=\\\"horizontal\\\"\\n      className=\\\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize={25}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Sidebar</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle withHandle />\\n      <ResizablePanel defaultSize={75}>\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Content</span>\\n        </div>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/scroll-area-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { ScrollArea } from \\\"@/registry/new-york/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nexport function ScrollAreaDemo() {\\n  return (\\n    <ScrollArea className=\\\"h-72 w-48 rounded-md border\\\">\\n      <div className=\\\"p-4\\\">\\n        <h4 className=\\\"mb-4 text-sm font-medium leading-none\\\">Tags</h4>\\n        {tags.map((tag) => (\\n          <React.Fragment key={tag}>\\n            <div className=\\\"text-sm\\\">{tag}</div>\\n            <Separator className=\\\"my-2\\\" />\\n          </React.Fragment>\\n        ))}\\n      </div>\\n    </ScrollArea>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/select-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york/ui/select\\\"\\n\\nexport function SelectDemo() {\\n  return (\\n    <Select>\\n      <SelectTrigger className=\\\"w-[180px]\\\">\\n        <SelectValue placeholder=\\\"Select a fruit\\\" />\\n      </SelectTrigger>\\n      <SelectContent>\\n        <SelectGroup>\\n          <SelectLabel>Fruits</SelectLabel>\\n          <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n          <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n          <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n          <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n        </SelectGroup>\\n      </SelectContent>\\n    </Select>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/separator-demo.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/new-york/ui/separator\\\"\\n\\nexport function SeparatorDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"space-y-1\\\">\\n        <h4 className=\\\"text-sm font-medium leading-none\\\">Radix Primitives</h4>\\n        <p className=\\\"text-sm text-muted-foreground\\\">\\n          An open-source UI component library.\\n        </p>\\n      </div>\\n      <Separator className=\\\"my-4\\\" />\\n      <div className=\\\"flex h-5 items-center space-x-4 text-sm\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/sheet-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/new-york/ui/sheet\\\"\\n\\nexport function SheetDemo() {\\n  return (\\n    <Sheet>\\n      <SheetTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </SheetTrigger>\\n      <SheetContent>\\n        <SheetHeader>\\n          <SheetTitle>Edit profile</SheetTitle>\\n          <SheetDescription>\\n            Make changes to your profile here. Click save when you're done.\\n          </SheetDescription>\\n        </SheetHeader>\\n        <div className=\\\"grid gap-4 py-4\\\">\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n              Name\\n            </Label>\\n            <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n          <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n            <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n              Username\\n            </Label>\\n            <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n          </div>\\n        </div>\\n        <SheetFooter>\\n          <SheetClose asChild>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n          </SheetClose>\\n        </SheetFooter>\\n      </SheetContent>\\n    </Sheet>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/skeleton-demo.tsx\",\n      \"content\": \"import { Skeleton } from \\\"@/registry/new-york/ui/skeleton\\\"\\n\\nexport function SkeletonDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-4\\\">\\n      <Skeleton className=\\\"h-12 w-12 rounded-full\\\" />\\n      <div className=\\\"space-y-2\\\">\\n        <Skeleton className=\\\"h-4 w-[250px]\\\" />\\n        <Skeleton className=\\\"h-4 w-[200px]\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/slider-demo.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\nimport { Slider } from \\\"@/registry/new-york/ui/slider\\\"\\n\\ntype SliderProps = React.ComponentProps<typeof Slider>\\n\\nexport function SliderDemo({ className, ...props }: SliderProps) {\\n  return (\\n    <Slider\\n      defaultValue={[50]}\\n      max={100}\\n      step={1}\\n      className={cn(\\\"w-[60%]\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/sonner-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function SonnerDemo() {\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() =>\\n        toast(\\\"Event has been created\\\", {\\n          description: \\\"Sunday, December 03, 2023 at 9:00 AM\\\",\\n          action: {\\n            label: \\\"Undo\\\",\\n            onClick: () => console.log(\\\"Undo\\\"),\\n          },\\n        })\\n      }\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/switch-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport { Switch } from \\\"@/registry/new-york/ui/switch\\\"\\n\\nexport function SwitchDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Switch id=\\\"airplane-mode\\\" />\\n      <Label htmlFor=\\\"airplane-mode\\\">Airplane Mode</Label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/table-demo.tsx\",\n      \"content\": \"import {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/new-york/ui/table\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport function TableDemo() {\\n  return (\\n    <Table>\\n      <TableCaption>A list of your recent invoices.</TableCaption>\\n      <TableHeader>\\n        <TableRow>\\n          <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n          <TableHead>Status</TableHead>\\n          <TableHead>Method</TableHead>\\n          <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n        </TableRow>\\n      </TableHeader>\\n      <TableBody>\\n        {invoices.map((invoice) => (\\n          <TableRow key={invoice.invoice}>\\n            <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n            <TableCell>{invoice.paymentStatus}</TableCell>\\n            <TableCell>{invoice.paymentMethod}</TableCell>\\n            <TableCell className=\\\"text-right\\\">{invoice.totalAmount}</TableCell>\\n          </TableRow>\\n        ))}\\n      </TableBody>\\n      <TableFooter>\\n        <TableRow>\\n          <TableCell colSpan={3}>Total</TableCell>\\n          <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n        </TableRow>\\n      </TableFooter>\\n    </Table>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/tabs-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/new-york/ui/tabs\\\"\\n\\nexport function TabsDemo() {\\n  return (\\n    <Tabs defaultValue=\\\"account\\\" className=\\\"w-[400px]\\\">\\n      <TabsList className=\\\"grid w-full grid-cols-2\\\">\\n        <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n        <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n      </TabsList>\\n      <TabsContent value=\\\"account\\\">\\n        <Card>\\n          <CardHeader>\\n            <CardTitle>Account</CardTitle>\\n            <CardDescription>\\n              Make changes to your account here. Click save when you're done.\\n            </CardDescription>\\n          </CardHeader>\\n          <CardContent className=\\\"space-y-2\\\">\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"name\\\">Name</Label>\\n              <Input id=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n            </div>\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"username\\\">Username</Label>\\n              <Input id=\\\"username\\\" defaultValue=\\\"@peduarte\\\" />\\n            </div>\\n          </CardContent>\\n          <CardFooter>\\n            <Button>Save changes</Button>\\n          </CardFooter>\\n        </Card>\\n      </TabsContent>\\n      <TabsContent value=\\\"password\\\">\\n        <Card>\\n          <CardHeader>\\n            <CardTitle>Password</CardTitle>\\n            <CardDescription>\\n              Change your password here. After saving, you'll be logged out.\\n            </CardDescription>\\n          </CardHeader>\\n          <CardContent className=\\\"space-y-2\\\">\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"current\\\">Current password</Label>\\n              <Input id=\\\"current\\\" type=\\\"password\\\" />\\n            </div>\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"new\\\">New password</Label>\\n              <Input id=\\\"new\\\" type=\\\"password\\\" />\\n            </div>\\n          </CardContent>\\n          <CardFooter>\\n            <Button>Save password</Button>\\n          </CardFooter>\\n        </Card>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/textarea-demo.tsx\",\n      \"content\": \"import { Textarea } from \\\"@/registry/new-york/ui/textarea\\\"\\n\\nexport function TextareaDemo() {\\n  return <Textarea placeholder=\\\"Type your message here.\\\" />\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toast-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/new-york/ui/toast\\\"\\n\\nexport function ToastDemo() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Scheduled: Catch up \\\",\\n          description: \\\"Friday, February 10, 2023 at 5:57 PM\\\",\\n          action: (\\n            <ToastAction altText=\\\"Goto schedule to undo\\\">Undo</ToastAction>\\n          ),\\n        })\\n      }}\\n    >\\n      Add to calendar\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-demo.tsx\",\n      \"content\": \"import { Bold } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport function ToggleDemo() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\">\\n      <Bold className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-group-demo.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york/ui/toggle-group\\\"\\n\\nexport function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/tooltip-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york/ui/tooltip\\\"\\n\\nexport function TooltipDemo() {\\n  return (\\n    <TooltipProvider>\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\">Hover</Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </TooltipProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/badge-destructive.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\n\\nexport function BadgeDestructive() {\\n  return <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/badge-outline.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\n\\nexport function BadgeOutline() {\\n  return <Badge variant=\\\"outline\\\">Outline</Badge>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/badge-secondary.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york/ui/badge\\\"\\n\\nexport function BadgeSecondary() {\\n  return <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-destructive.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function ButtonDestructive() {\\n  return <Button variant=\\\"destructive\\\">Destructive</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-ghost.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function ButtonGhost() {\\n  return <Button variant=\\\"ghost\\\">Ghost</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-link.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function ButtonLink() {\\n  return <Button variant=\\\"link\\\">Link</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-loading.tsx\",\n      \"content\": \"import { Loader2 } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function ButtonLoading() {\\n  return (\\n    <Button disabled>\\n      <Loader2 className=\\\"animate-spin\\\" />\\n      Please wait\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-outline.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function ButtonOutline() {\\n  return <Button variant=\\\"outline\\\">Outline</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-secondary.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function ButtonSecondary() {\\n  return <Button variant=\\\"secondary\\\">Secondary</Button>\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/button-with-icon.tsx\",\n      \"content\": \"import { MailOpen } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport function ButtonWithIcon() {\\n  return (\\n    <Button>\\n      <MailOpen /> Login with Email\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-disabled.tsx\",\n      \"content\": \"import { Underline } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport function ToggleDisabled() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\" disabled>\\n      <Underline className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-outline.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport function ToggleOutline() {\\n  return (\\n    <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"internal/sink/components/toggle-with-text.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport function ToggleWithText() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n      Italic\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/skeleton-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-card\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/skeleton-card.tsx\",\n      \"content\": \"import { Skeleton } from \\\"@/registry/new-york/ui/skeleton\\\"\\n\\nexport default function SkeletonCard() {\\n  return (\\n    <div className=\\\"flex flex-col space-y-3\\\">\\n      <Skeleton className=\\\"h-[125px] w-[250px] rounded-xl\\\" />\\n      <div className=\\\"space-y-2\\\">\\n        <Skeleton className=\\\"h-4 w-[250px]\\\" />\\n        <Skeleton className=\\\"h-4 w-[200px]\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/skeleton-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/skeleton-demo.tsx\",\n      \"content\": \"import { Skeleton } from \\\"@/registry/new-york/ui/skeleton\\\"\\n\\nexport default function SkeletonDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-4\\\">\\n      <Skeleton className=\\\"h-12 w-12 rounded-full\\\" />\\n      <div className=\\\"space-y-2\\\">\\n        <Skeleton className=\\\"h-4 w-[250px]\\\" />\\n        <Skeleton className=\\\"h-4 w-[200px]\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Skeleton({\\n  className,\\n  ...props\\n}: React.HTMLAttributes<HTMLDivElement>) {\\n  return (\\n    <div\\n      className={cn(\\\"animate-pulse rounded-md bg-primary/10\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/slider-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"slider\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/slider-demo.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\nimport { Slider } from \\\"@/registry/new-york/ui/slider\\\"\\n\\ntype SliderProps = React.ComponentProps<typeof Slider>\\n\\nexport default function SliderDemo({ className, ...props }: SliderProps) {\\n  return (\\n    <Slider\\n      defaultValue={[50]}\\n      max={100}\\n      step={1}\\n      className={cn(\\\"w-[60%]\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-slider\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SliderPrimitive from \\\"@radix-ui/react-slider\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Slider = React.forwardRef<\\n  React.ElementRef<typeof SliderPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\\n>(({ className, ...props }, ref) => (\\n  <SliderPrimitive.Root\\n    ref={ref}\\n    className={cn(\\n      \\\"relative flex w-full touch-none select-none items-center\\\",\\n      className\\n    )}\\n    {...props}\\n  >\\n    <SliderPrimitive.Track className=\\\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\\\">\\n      <SliderPrimitive.Range className=\\\"absolute h-full bg-primary\\\" />\\n    </SliderPrimitive.Track>\\n    <SliderPrimitive.Thumb className=\\\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\\\" />\\n  </SliderPrimitive.Root>\\n))\\nSlider.displayName = SliderPrimitive.Root.displayName\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sonner-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/sonner-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function SonnerDemo() {\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() =>\\n        toast(\\\"Event has been created\\\", {\\n          description: \\\"Sunday, December 03, 2023 at 9:00 AM\\\",\\n          action: {\\n            label: \\\"Undo\\\",\\n            onClick: () => console.log(\\\"Undo\\\"),\\n          },\\n        })\\n      }\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner } from \\\"sonner\\\"\\n\\ntype ToasterProps = React.ComponentProps<typeof Sonner>\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      toastOptions={{\\n        classNames: {\\n          toast:\\n            \\\"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\\\",\\n          description: \\\"group-[.toast]:text-muted-foreground\\\",\\n          actionButton:\\n            \\\"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\\\",\\n          cancelButton:\\n            \\\"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"class-variance-authority\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/spinner.tsx\",\n      \"content\": \"import { Loader2Icon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <Loader2Icon\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"type\": \"registry:style\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"tailwindcss-animate\",\n    \"class-variance-authority\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"tailwind\": {\n    \"config\": {\n      \"plugins\": [\n        \"require(\\\"tailwindcss-animate\\\")\"\n      ]\n    }\n  },\n  \"cssVars\": {}\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/switch-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/switch-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport { Switch } from \\\"@/registry/new-york/ui/switch\\\"\\n\\nexport default function SwitchDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Switch id=\\\"airplane-mode\\\" />\\n      <Label htmlFor=\\\"airplane-mode\\\">Airplane Mode</Label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/switch-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"switch\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/switch-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport { Switch } from \\\"@/registry/new-york/ui/switch\\\"\\n\\nconst FormSchema = z.object({\\n  marketing_emails: z.boolean().default(false).optional(),\\n  security_emails: z.boolean(),\\n})\\n\\nexport default function SwitchForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      security_emails: true,\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-full space-y-6\\\">\\n        <div>\\n          <h3 className=\\\"mb-4 text-lg font-medium\\\">Email Notifications</h3>\\n          <div className=\\\"space-y-4\\\">\\n            <FormField\\n              control={form.control}\\n              name=\\\"marketing_emails\\\"\\n              render={({ field }) => (\\n                <FormItem className=\\\"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm\\\">\\n                  <div className=\\\"space-y-0.5\\\">\\n                    <FormLabel>Marketing emails</FormLabel>\\n                    <FormDescription>\\n                      Receive emails about new products, features, and more.\\n                    </FormDescription>\\n                  </div>\\n                  <FormControl>\\n                    <Switch\\n                      checked={field.value}\\n                      onCheckedChange={field.onChange}\\n                    />\\n                  </FormControl>\\n                </FormItem>\\n              )}\\n            />\\n            <FormField\\n              control={form.control}\\n              name=\\\"security_emails\\\"\\n              render={({ field }) => (\\n                <FormItem className=\\\"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm\\\">\\n                  <div className=\\\"space-y-0.5\\\">\\n                    <FormLabel>Security emails</FormLabel>\\n                    <FormDescription>\\n                      Receive emails about your account security.\\n                    </FormDescription>\\n                  </div>\\n                  <FormControl>\\n                    <Switch\\n                      checked={field.value}\\n                      onCheckedChange={field.onChange}\\n                      disabled\\n                      aria-readonly\\n                    />\\n                  </FormControl>\\n                </FormItem>\\n              )}\\n            />\\n          </div>\\n        </div>\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SwitchPrimitives from \\\"@radix-ui/react-switch\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Switch = React.forwardRef<\\n  React.ElementRef<typeof SwitchPrimitives.Root>,\\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\\n>(({ className, ...props }, ref) => (\\n  <SwitchPrimitives.Root\\n    className={cn(\\n      \\\"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\\\",\\n      className\\n    )}\\n    {...props}\\n    ref={ref}\\n  >\\n    <SwitchPrimitives.Thumb\\n      className={cn(\\n        \\\"pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\\\"\\n      )}\\n    />\\n  </SwitchPrimitives.Root>\\n))\\nSwitch.displayName = SwitchPrimitives.Root.displayName\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/table-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"table\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/table-demo.tsx\",\n      \"content\": \"import {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/new-york/ui/table\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableDemo() {\\n  return (\\n    <Table>\\n      <TableCaption>A list of your recent invoices.</TableCaption>\\n      <TableHeader>\\n        <TableRow>\\n          <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n          <TableHead>Status</TableHead>\\n          <TableHead>Method</TableHead>\\n          <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n        </TableRow>\\n      </TableHeader>\\n      <TableBody>\\n        {invoices.map((invoice) => (\\n          <TableRow key={invoice.invoice}>\\n            <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n            <TableCell>{invoice.paymentStatus}</TableCell>\\n            <TableCell>{invoice.paymentMethod}</TableCell>\\n            <TableCell className=\\\"text-right\\\">{invoice.totalAmount}</TableCell>\\n          </TableRow>\\n        ))}\\n      </TableBody>\\n      <TableFooter>\\n        <TableRow>\\n          <TableCell colSpan={3}>Total</TableCell>\\n          <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n        </TableRow>\\n      </TableFooter>\\n    </Table>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/table.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Table = React.forwardRef<\\n  HTMLTableElement,\\n  React.HTMLAttributes<HTMLTableElement>\\n>(({ className, ...props }, ref) => (\\n  <div className=\\\"relative w-full overflow-auto\\\">\\n    <table\\n      ref={ref}\\n      className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n      {...props}\\n    />\\n  </div>\\n))\\nTable.displayName = \\\"Table\\\"\\n\\nconst TableHeader = React.forwardRef<\\n  HTMLTableSectionElement,\\n  React.HTMLAttributes<HTMLTableSectionElement>\\n>(({ className, ...props }, ref) => (\\n  <thead ref={ref} className={cn(\\\"[&_tr]:border-b\\\", className)} {...props} />\\n))\\nTableHeader.displayName = \\\"TableHeader\\\"\\n\\nconst TableBody = React.forwardRef<\\n  HTMLTableSectionElement,\\n  React.HTMLAttributes<HTMLTableSectionElement>\\n>(({ className, ...props }, ref) => (\\n  <tbody\\n    ref={ref}\\n    className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n    {...props}\\n  />\\n))\\nTableBody.displayName = \\\"TableBody\\\"\\n\\nconst TableFooter = React.forwardRef<\\n  HTMLTableSectionElement,\\n  React.HTMLAttributes<HTMLTableSectionElement>\\n>(({ className, ...props }, ref) => (\\n  <tfoot\\n    ref={ref}\\n    className={cn(\\n      \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTableFooter.displayName = \\\"TableFooter\\\"\\n\\nconst TableRow = React.forwardRef<\\n  HTMLTableRowElement,\\n  React.HTMLAttributes<HTMLTableRowElement>\\n>(({ className, ...props }, ref) => (\\n  <tr\\n    ref={ref}\\n    className={cn(\\n      \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTableRow.displayName = \\\"TableRow\\\"\\n\\nconst TableHead = React.forwardRef<\\n  HTMLTableCellElement,\\n  React.ThHTMLAttributes<HTMLTableCellElement>\\n>(({ className, ...props }, ref) => (\\n  <th\\n    ref={ref}\\n    className={cn(\\n      \\\"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTableHead.displayName = \\\"TableHead\\\"\\n\\nconst TableCell = React.forwardRef<\\n  HTMLTableCellElement,\\n  React.TdHTMLAttributes<HTMLTableCellElement>\\n>(({ className, ...props }, ref) => (\\n  <td\\n    ref={ref}\\n    className={cn(\\n      \\\"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTableCell.displayName = \\\"TableCell\\\"\\n\\nconst TableCaption = React.forwardRef<\\n  HTMLTableCaptionElement,\\n  React.HTMLAttributes<HTMLTableCaptionElement>\\n>(({ className, ...props }, ref) => (\\n  <caption\\n    ref={ref}\\n    className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n    {...props}\\n  />\\n))\\nTableCaption.displayName = \\\"TableCaption\\\"\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/tabs-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"tabs\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/tabs-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/new-york/ui/tabs\\\"\\n\\nexport default function TabsDemo() {\\n  return (\\n    <Tabs defaultValue=\\\"account\\\" className=\\\"w-[400px]\\\">\\n      <TabsList className=\\\"grid w-full grid-cols-2\\\">\\n        <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n        <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n      </TabsList>\\n      <TabsContent value=\\\"account\\\">\\n        <Card>\\n          <CardHeader>\\n            <CardTitle>Account</CardTitle>\\n            <CardDescription>\\n              Make changes to your account here. Click save when you're done.\\n            </CardDescription>\\n          </CardHeader>\\n          <CardContent className=\\\"space-y-2\\\">\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"name\\\">Name</Label>\\n              <Input id=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n            </div>\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"username\\\">Username</Label>\\n              <Input id=\\\"username\\\" defaultValue=\\\"@peduarte\\\" />\\n            </div>\\n          </CardContent>\\n          <CardFooter>\\n            <Button>Save changes</Button>\\n          </CardFooter>\\n        </Card>\\n      </TabsContent>\\n      <TabsContent value=\\\"password\\\">\\n        <Card>\\n          <CardHeader>\\n            <CardTitle>Password</CardTitle>\\n            <CardDescription>\\n              Change your password here. After saving, you'll be logged out.\\n            </CardDescription>\\n          </CardHeader>\\n          <CardContent className=\\\"space-y-2\\\">\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"current\\\">Current password</Label>\\n              <Input id=\\\"current\\\" type=\\\"password\\\" />\\n            </div>\\n            <div className=\\\"space-y-1\\\">\\n              <Label htmlFor=\\\"new\\\">New password</Label>\\n              <Input id=\\\"new\\\" type=\\\"password\\\" />\\n            </div>\\n          </CardContent>\\n          <CardFooter>\\n            <Button>Save password</Button>\\n          </CardFooter>\\n        </Card>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-tabs\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as TabsPrimitive from \\\"@radix-ui/react-tabs\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Tabs = TabsPrimitive.Root\\n\\nconst TabsList = React.forwardRef<\\n  React.ElementRef<typeof TabsPrimitive.List>,\\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\\n>(({ className, ...props }, ref) => (\\n  <TabsPrimitive.List\\n    ref={ref}\\n    className={cn(\\n      \\\"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTabsList.displayName = TabsPrimitive.List.displayName\\n\\nconst TabsTrigger = React.forwardRef<\\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\\n>(({ className, ...props }, ref) => (\\n  <TabsPrimitive.Trigger\\n    ref={ref}\\n    className={cn(\\n      \\\"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\\n\\nconst TabsContent = React.forwardRef<\\n  React.ElementRef<typeof TabsPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\\n>(({ className, ...props }, ref) => (\\n  <TabsPrimitive.Content\\n    ref={ref}\\n    className={cn(\\n      \\\"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nTabsContent.displayName = TabsPrimitive.Content.displayName\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/textarea-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-demo.tsx\",\n      \"content\": \"import { Textarea } from \\\"@/registry/new-york/ui/textarea\\\"\\n\\nexport default function TextareaDemo() {\\n  return <Textarea placeholder=\\\"Type your message here.\\\" />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/textarea-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-disabled.tsx\",\n      \"content\": \"import { Textarea } from \\\"@/registry/new-york/ui/textarea\\\"\\n\\nexport default function TextareaDisabled() {\\n  return <Textarea placeholder=\\\"Type your message here.\\\" disabled />\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/textarea-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-form\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { toast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york/ui/form\\\"\\nimport { Textarea } from \\\"@/registry/new-york/ui/textarea\\\"\\n\\nconst FormSchema = z.object({\\n  bio: z\\n    .string()\\n    .min(10, {\\n      message: \\\"Bio must be at least 10 characters.\\\",\\n    })\\n    .max(160, {\\n      message: \\\"Bio must not be longer than 30 characters.\\\",\\n    }),\\n})\\n\\nexport default function TextareaForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast({\\n      title: \\\"You submitted the following values:\\\",\\n      description: (\\n        <pre className=\\\"mt-2 w-[340px] rounded-md bg-slate-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"bio\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Bio</FormLabel>\\n              <FormControl>\\n                <Textarea\\n                  placeholder=\\\"Tell us a little bit about yourself\\\"\\n                  className=\\\"resize-none\\\"\\n                  {...field}\\n                />\\n              </FormControl>\\n              <FormDescription>\\n                You can <span>@mention</span> other users and organizations.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/textarea-with-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-button\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-with-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { Textarea } from \\\"@/registry/new-york/ui/textarea\\\"\\n\\nexport default function TextareaWithButton() {\\n  return (\\n    <div className=\\\"grid w-full gap-2\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n      <Button>Send message</Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/textarea-with-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-label\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-with-label.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/new-york/ui/textarea\\\"\\n\\nexport default function TextareaWithLabel() {\\n  return (\\n    <div className=\\\"grid w-full gap-1.5\\\">\\n      <Label htmlFor=\\\"message\\\">Your message</Label>\\n      <Textarea placeholder=\\\"Type your message here.\\\" id=\\\"message\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/textarea-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-text\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/textarea-with-text.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/new-york/ui/textarea\\\"\\n\\nexport default function TextareaWithText() {\\n  return (\\n    <div className=\\\"grid w-full gap-1.5\\\">\\n      <Label htmlFor=\\\"message-2\\\">Your Message</Label>\\n      <Textarea placeholder=\\\"Type your message here.\\\" id=\\\"message-2\\\" />\\n      <p className=\\\"text-sm text-muted-foreground\\\">\\n        Your message will be copied to the support team.\\n      </p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Textarea = React.forwardRef<\\n  HTMLTextAreaElement,\\n  React.ComponentProps<\\\"textarea\\\">\\n>(({ className, ...props }, ref) => {\\n  return (\\n    <textarea\\n      className={cn(\\n        \\\"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n        className\\n      )}\\n      ref={ref}\\n      {...props}\\n    />\\n  )\\n})\\nTextarea.displayName = \\\"Textarea\\\"\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/theme-daylight.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-daylight\",\n  \"type\": \"registry:theme\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"36 39% 88%\",\n      \"foreground\": \"36 45% 15%\",\n      \"primary\": \"36 45% 70%\",\n      \"primary-foreground\": \"36 45% 11%\",\n      \"secondary\": \"40 35% 77%\",\n      \"secondary-foreground\": \"36 45% 25%\",\n      \"accent\": \"36 64% 57%\",\n      \"accent-foreground\": \"36 72% 17%\",\n      \"destructive\": \"0 84% 37%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"muted\": \"36 33% 75%\",\n      \"muted-foreground\": \"36 45% 25%\",\n      \"card\": \"36 46% 82%\",\n      \"card-foreground\": \"36 45% 20%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"240 10% 3.9%\",\n      \"border\": \"36 45% 60%\",\n      \"input\": \"36 45% 60%\",\n      \"ring\": \"36 45% 30%\",\n      \"chart-1\": \"25 34% 28%\",\n      \"chart-2\": \"26 36% 34%\",\n      \"chart-3\": \"28 40% 40%\",\n      \"chart-4\": \"31 41% 48%\",\n      \"chart-5\": \"35 43% 53%\"\n    },\n    \"dark\": {\n      \"background\": \"36 39% 88%\",\n      \"foreground\": \"36 45% 15%\",\n      \"primary\": \"36 45% 70%\",\n      \"primary-foreground\": \"36 45% 11%\",\n      \"secondary\": \"40 35% 77%\",\n      \"secondary-foreground\": \"36 45% 25%\",\n      \"accent\": \"36 64% 57%\",\n      \"accent-foreground\": \"36 72% 17%\",\n      \"destructive\": \"0 84% 37%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"muted\": \"36 33% 75%\",\n      \"muted-foreground\": \"36 45% 25%\",\n      \"card\": \"36 46% 82%\",\n      \"card-foreground\": \"36 45% 20%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"240 10% 3.9%\",\n      \"border\": \"36 45% 60%\",\n      \"input\": \"36 45% 60%\",\n      \"ring\": \"36 45% 30%\",\n      \"chart-1\": \"25 34% 28%\",\n      \"chart-2\": \"26 36% 34%\",\n      \"chart-3\": \"28 40% 40%\",\n      \"chart-4\": \"31 41% 48%\",\n      \"chart-5\": \"35 43% 53%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/theme-emerald.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-emerald\",\n  \"type\": \"registry:theme\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"240 10% 3.9%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"240 10% 3.9%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"240 10% 3.9%\",\n      \"primary\": \"142 86% 28%\",\n      \"primary-foreground\": \"356 29% 98%\",\n      \"secondary\": \"240 4.8% 95.9%\",\n      \"secondary-foreground\": \"240 5.9% 10%\",\n      \"muted\": \"240 4.8% 95.9%\",\n      \"muted-foreground\": \"240 3.8% 45%\",\n      \"accent\": \"240 4.8% 95.9%\",\n      \"accent-foreground\": \"240 5.9% 10%\",\n      \"destructive\": \"0 72% 51%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"border\": \"240 5.9% 90%\",\n      \"input\": \"240 5.9% 90%\",\n      \"ring\": \"142 86% 28%\",\n      \"chart-1\": \"139 65% 20%\",\n      \"chart-2\": \"140 74% 44%\",\n      \"chart-3\": \"142 88% 28%\",\n      \"chart-4\": \"137 55% 15%\",\n      \"chart-5\": \"141 40% 9%\"\n    },\n    \"dark\": {\n      \"background\": \"240 10% 3.9%\",\n      \"foreground\": \"0 0% 98%\",\n      \"card\": \"240 10% 3.9%\",\n      \"card-foreground\": \"0 0% 98%\",\n      \"popover\": \"240 10% 3.9%\",\n      \"popover-foreground\": \"0 0% 98%\",\n      \"primary\": \"142 86% 28%\",\n      \"primary-foreground\": \"356 29% 98%\",\n      \"secondary\": \"240 4.8% 95.9%\",\n      \"secondary-foreground\": \"240 5.9% 10%\",\n      \"muted\": \"240 3.7% 15.9%\",\n      \"muted-foreground\": \"240 5% 64.9%\",\n      \"accent\": \"240 3.7% 15.9%\",\n      \"accent-foreground\": \"0 0% 98%\",\n      \"destructive\": \"0 72% 51%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"border\": \"240 3.7% 15.9%\",\n      \"input\": \"240 3.7% 15.9%\",\n      \"ring\": \"142 86% 28%\",\n      \"chart-1\": \"142 88% 28%\",\n      \"chart-2\": \"139 65% 20%\",\n      \"chart-3\": \"140 74% 24%\",\n      \"chart-4\": \"137 55% 15%\",\n      \"chart-5\": \"141 40% 9%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/theme-midnight.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-midnight\",\n  \"type\": \"registry:theme\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"240 5% 6%\",\n      \"foreground\": \"60 5% 90%\",\n      \"primary\": \"240 0% 90%\",\n      \"primary-foreground\": \"60 0% 0%\",\n      \"secondary\": \"240 4% 15%\",\n      \"secondary-foreground\": \"60 5% 85%\",\n      \"accent\": \"240 0% 13%\",\n      \"accent-foreground\": \"60 0% 100%\",\n      \"destructive\": \"0 60% 50%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"muted\": \"240 5% 25%\",\n      \"muted-foreground\": \"60 5% 85%\",\n      \"card\": \"240 4% 10%\",\n      \"card-foreground\": \"60 5% 90%\",\n      \"popover\": \"240 5% 15%\",\n      \"popover-foreground\": \"60 5% 85%\",\n      \"border\": \"240 6% 20%\",\n      \"input\": \"240 6% 20%\",\n      \"ring\": \"240 5% 90%\",\n      \"chart-1\": \"359 2% 90%\",\n      \"chart-2\": \"240 1% 74%\",\n      \"chart-3\": \"240 1% 58%\",\n      \"chart-4\": \"240 1% 42%\",\n      \"chart-5\": \"240 2% 26%\"\n    },\n    \"dark\": {\n      \"background\": \"240 5% 6%\",\n      \"foreground\": \"60 5% 90%\",\n      \"primary\": \"240 0% 90%\",\n      \"primary-foreground\": \"60 0% 0%\",\n      \"secondary\": \"240 4% 15%\",\n      \"secondary-foreground\": \"60 5% 85%\",\n      \"accent\": \"240 0% 13%\",\n      \"accent-foreground\": \"60 0% 100%\",\n      \"destructive\": \"0 60% 50%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"muted\": \"240 5% 25%\",\n      \"muted-foreground\": \"60 5% 85%\",\n      \"card\": \"240 4% 10%\",\n      \"card-foreground\": \"60 5% 90%\",\n      \"popover\": \"240 5% 15%\",\n      \"popover-foreground\": \"60 5% 85%\",\n      \"border\": \"240 6% 20%\",\n      \"input\": \"240 6% 20%\",\n      \"ring\": \"240 5% 90%\",\n      \"chart-1\": \"359 2% 90%\",\n      \"chart-2\": \"240 1% 74%\",\n      \"chart-3\": \"240 1% 58%\",\n      \"chart-4\": \"240 1% 42%\",\n      \"chart-5\": \"240 2% 26%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toast-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/new-york/ui/toast\\\"\\n\\nexport default function ToastDemo() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Scheduled: Catch up \\\",\\n          description: \\\"Friday, February 10, 2023 at 5:57 PM\\\",\\n          action: (\\n            <ToastAction altText=\\\"Goto schedule to undo\\\">Undo</ToastAction>\\n          ),\\n        })\\n      }}\\n    >\\n      Add to calendar\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toast-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-destructive\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-destructive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/new-york/ui/toast\\\"\\n\\nexport default function ToastDestructive() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          variant: \\\"destructive\\\",\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n          action: <ToastAction altText=\\\"Try again\\\">Try again</ToastAction>,\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toast-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-simple\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ToastSimple() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          description: \\\"Your message has been sent.\\\",\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toast-with-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-with-action\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-with-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/new-york/ui/toast\\\"\\n\\nexport default function ToastWithAction() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n          action: <ToastAction altText=\\\"Try again\\\">Try again</ToastAction>,\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toast-with-title.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-with-title\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toast-with-title.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york/ui/button\\\"\\n\\nexport default function ToastWithTitle() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toast.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/toast.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ToastPrimitives from \\\"@radix-ui/react-toast\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst ToastProvider = ToastPrimitives.Provider\\n\\nconst ToastViewport = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Viewport>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Viewport\\n    ref={ref}\\n    className={cn(\\n      \\\"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\\n\\nconst toastVariants = cva(\\n  \\\"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border bg-background text-foreground\\\",\\n        destructive:\\n          \\\"destructive group border-destructive bg-destructive text-destructive-foreground\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nconst Toast = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Root>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\\n    VariantProps<typeof toastVariants>\\n>(({ className, variant, ...props }, ref) => {\\n  return (\\n    <ToastPrimitives.Root\\n      ref={ref}\\n      className={cn(toastVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n})\\nToast.displayName = ToastPrimitives.Root.displayName\\n\\nconst ToastAction = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Action>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Action\\n    ref={ref}\\n    className={cn(\\n      \\\"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\\\",\\n      className\\n    )}\\n    {...props}\\n  />\\n))\\nToastAction.displayName = ToastPrimitives.Action.displayName\\n\\nconst ToastClose = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Close>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Close\\n    ref={ref}\\n    className={cn(\\n      \\\"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\\\",\\n      className\\n    )}\\n    toast-close=\\\"\\\"\\n    {...props}\\n  >\\n    <X className=\\\"h-4 w-4\\\" />\\n  </ToastPrimitives.Close>\\n))\\nToastClose.displayName = ToastPrimitives.Close.displayName\\n\\nconst ToastTitle = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Title>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Title\\n    ref={ref}\\n    className={cn(\\\"text-sm font-semibold [&+div]:text-xs\\\", className)}\\n    {...props}\\n  />\\n))\\nToastTitle.displayName = ToastPrimitives.Title.displayName\\n\\nconst ToastDescription = React.forwardRef<\\n  React.ElementRef<typeof ToastPrimitives.Description>,\\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\\n>(({ className, ...props }, ref) => (\\n  <ToastPrimitives.Description\\n    ref={ref}\\n    className={cn(\\\"text-sm opacity-90\\\", className)}\\n    {...props}\\n  />\\n))\\nToastDescription.displayName = ToastPrimitives.Description.displayName\\n\\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\\n\\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\\n\\nexport {\\n  type ToastProps,\\n  type ToastActionElement,\\n  ToastProvider,\\n  ToastViewport,\\n  Toast,\\n  ToastTitle,\\n  ToastDescription,\\n  ToastClose,\\n  ToastAction,\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"hooks/use-toast.ts\",\n      \"content\": \"\\\"use client\\\"\\n\\n// Inspired by react-hot-toast library\\nimport * as React from \\\"react\\\"\\n\\nimport type {\\n  ToastActionElement,\\n  ToastProps,\\n} from \\\"@/registry/new-york/ui/toast\\\"\\n\\nconst TOAST_LIMIT = 1\\nconst TOAST_REMOVE_DELAY = 1000000\\n\\ntype ToasterToast = ToastProps & {\\n  id: string\\n  title?: React.ReactNode\\n  description?: React.ReactNode\\n  action?: ToastActionElement\\n}\\n\\nconst actionTypes = {\\n  ADD_TOAST: \\\"ADD_TOAST\\\",\\n  UPDATE_TOAST: \\\"UPDATE_TOAST\\\",\\n  DISMISS_TOAST: \\\"DISMISS_TOAST\\\",\\n  REMOVE_TOAST: \\\"REMOVE_TOAST\\\",\\n} as const\\n\\nlet count = 0\\n\\nfunction genId() {\\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\\n  return count.toString()\\n}\\n\\ntype ActionType = typeof actionTypes\\n\\ntype Action =\\n  | {\\n      type: ActionType[\\\"ADD_TOAST\\\"]\\n      toast: ToasterToast\\n    }\\n  | {\\n      type: ActionType[\\\"UPDATE_TOAST\\\"]\\n      toast: Partial<ToasterToast>\\n    }\\n  | {\\n      type: ActionType[\\\"DISMISS_TOAST\\\"]\\n      toastId?: ToasterToast[\\\"id\\\"]\\n    }\\n  | {\\n      type: ActionType[\\\"REMOVE_TOAST\\\"]\\n      toastId?: ToasterToast[\\\"id\\\"]\\n    }\\n\\ninterface State {\\n  toasts: ToasterToast[]\\n}\\n\\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\\n\\nconst addToRemoveQueue = (toastId: string) => {\\n  if (toastTimeouts.has(toastId)) {\\n    return\\n  }\\n\\n  const timeout = setTimeout(() => {\\n    toastTimeouts.delete(toastId)\\n    dispatch({\\n      type: \\\"REMOVE_TOAST\\\",\\n      toastId: toastId,\\n    })\\n  }, TOAST_REMOVE_DELAY)\\n\\n  toastTimeouts.set(toastId, timeout)\\n}\\n\\nexport const reducer = (state: State, action: Action): State => {\\n  switch (action.type) {\\n    case \\\"ADD_TOAST\\\":\\n      return {\\n        ...state,\\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\\n      }\\n\\n    case \\\"UPDATE_TOAST\\\":\\n      return {\\n        ...state,\\n        toasts: state.toasts.map((t) =>\\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\\n        ),\\n      }\\n\\n    case \\\"DISMISS_TOAST\\\": {\\n      const { toastId } = action\\n\\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\\n      // but I'll keep it here for simplicity\\n      if (toastId) {\\n        addToRemoveQueue(toastId)\\n      } else {\\n        state.toasts.forEach((toast) => {\\n          addToRemoveQueue(toast.id)\\n        })\\n      }\\n\\n      return {\\n        ...state,\\n        toasts: state.toasts.map((t) =>\\n          t.id === toastId || toastId === undefined\\n            ? {\\n                ...t,\\n                open: false,\\n              }\\n            : t\\n        ),\\n      }\\n    }\\n    case \\\"REMOVE_TOAST\\\":\\n      if (action.toastId === undefined) {\\n        return {\\n          ...state,\\n          toasts: [],\\n        }\\n      }\\n      return {\\n        ...state,\\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\\n      }\\n  }\\n}\\n\\nconst listeners: Array<(state: State) => void> = []\\n\\nlet memoryState: State = { toasts: [] }\\n\\nfunction dispatch(action: Action) {\\n  memoryState = reducer(memoryState, action)\\n  listeners.forEach((listener) => {\\n    listener(memoryState)\\n  })\\n}\\n\\ntype Toast = Omit<ToasterToast, \\\"id\\\">\\n\\nfunction toast({ ...props }: Toast) {\\n  const id = genId()\\n\\n  const update = (props: ToasterToast) =>\\n    dispatch({\\n      type: \\\"UPDATE_TOAST\\\",\\n      toast: { ...props, id },\\n    })\\n  const dismiss = () => dispatch({ type: \\\"DISMISS_TOAST\\\", toastId: id })\\n\\n  dispatch({\\n    type: \\\"ADD_TOAST\\\",\\n    toast: {\\n      ...props,\\n      id,\\n      open: true,\\n      onOpenChange: (open) => {\\n        if (!open) dismiss()\\n      },\\n    },\\n  })\\n\\n  return {\\n    id: id,\\n    dismiss,\\n    update,\\n  }\\n}\\n\\nfunction useToast() {\\n  const [state, setState] = React.useState<State>(memoryState)\\n\\n  React.useEffect(() => {\\n    listeners.push(setState)\\n    return () => {\\n      const index = listeners.indexOf(setState)\\n      if (index > -1) {\\n        listeners.splice(index, 1)\\n      }\\n    }\\n  }, [state])\\n\\n  return {\\n    ...state,\\n    toast,\\n    dismiss: (toastId?: string) => dispatch({ type: \\\"DISMISS_TOAST\\\", toastId }),\\n  }\\n}\\n\\nexport { useToast, toast }\\n\",\n      \"type\": \"registry:hook\",\n      \"target\": \"\"\n    },\n    {\n      \"path\": \"ui/toaster.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york/hooks/use-toast\\\"\\nimport {\\n  Toast,\\n  ToastClose,\\n  ToastDescription,\\n  ToastProvider,\\n  ToastTitle,\\n  ToastViewport,\\n} from \\\"@/registry/new-york/ui/toast\\\"\\n\\nexport function Toaster() {\\n  const { toasts } = useToast()\\n\\n  return (\\n    <ToastProvider>\\n      {toasts.map(function ({ id, title, description, action, ...props }) {\\n        return (\\n          <Toast key={id} {...props}>\\n            <div className=\\\"grid gap-1\\\">\\n              {title && <ToastTitle>{title}</ToastTitle>}\\n              {description && (\\n                <ToastDescription>{description}</ToastDescription>\\n              )}\\n            </div>\\n            {action}\\n            <ToastClose />\\n          </Toast>\\n        )\\n      })}\\n      <ToastViewport />\\n    </ToastProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-demo.tsx\",\n      \"content\": \"import { Bold } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport default function ToggleDemo() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\">\\n      <Bold className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-disabled.tsx\",\n      \"content\": \"import { Underline } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport default function ToggleDisabled() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\" disabled>\\n      <Underline className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-group-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-demo.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-group-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-disabled\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-disabled.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\" disabled>\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-group-lg.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-lg\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-lg.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\" size=\\\"lg\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-group-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-outline\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-outline.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\" variant=\\\"outline\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-group-single.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-single\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-single.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"single\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-group-sm.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-sm\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-group-sm.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"single\\\" size=\\\"sm\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-toggle-group\"\n  ],\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ToggleGroupPrimitive from \\\"@radix-ui/react-toggle-group\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants>\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n})\\n\\nconst ToggleGroup = React.forwardRef<\\n  React.ElementRef<typeof ToggleGroupPrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\\n    VariantProps<typeof toggleVariants>\\n>(({ className, variant, size, children, ...props }, ref) => (\\n  <ToggleGroupPrimitive.Root\\n    ref={ref}\\n    className={cn(\\\"flex items-center justify-center gap-1\\\", className)}\\n    {...props}\\n  >\\n    <ToggleGroupContext.Provider value={{ variant, size }}>\\n      {children}\\n    </ToggleGroupContext.Provider>\\n  </ToggleGroupPrimitive.Root>\\n))\\n\\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\\n\\nconst ToggleGroupItem = React.forwardRef<\\n  React.ElementRef<typeof ToggleGroupPrimitive.Item>,\\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\\n    VariantProps<typeof toggleVariants>\\n>(({ className, children, variant, size, ...props }, ref) => {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <ToggleGroupPrimitive.Item\\n      ref={ref}\\n      className={cn(\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </ToggleGroupPrimitive.Item>\\n  )\\n})\\n\\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-lg.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-lg\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-lg.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport default function ToggleLg() {\\n  return (\\n    <Toggle size=\\\"lg\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-outline\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-outline.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport default function ToggleOutline() {\\n  return (\\n    <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-sm.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-sm\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-sm.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport default function ToggleSm() {\\n  return (\\n    <Toggle size=\\\"sm\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-with-text\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/toggle-with-text.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york/ui/toggle\\\"\\n\\nexport default function ToggleWithText() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n      Italic\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as TogglePrimitive from \\\"@radix-ui/react-toggle\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline:\\n          \\\"border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 px-2 min-w-9\\\",\\n        sm: \\\"h-8 px-1.5 min-w-8\\\",\\n        lg: \\\"h-10 px-2.5 min-w-10\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nconst Toggle = React.forwardRef<\\n  React.ElementRef<typeof TogglePrimitive.Root>,\\n  React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\\n    VariantProps<typeof toggleVariants>\\n>(({ className, variant, size, ...props }, ref) => (\\n  <TogglePrimitive.Root\\n    ref={ref}\\n    className={cn(toggleVariants({ variant, size, className }))}\\n    {...props}\\n  />\\n))\\n\\nToggle.displayName = TogglePrimitive.Root.displayName\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/tooltip-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"examples/tooltip-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york/ui/button\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york/ui/tooltip\\\"\\n\\nexport default function TooltipDemo() {\\n  return (\\n    <TooltipProvider>\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\">Hover</Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </TooltipProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"type\": \"registry:ui\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"@radix-ui/react-tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as TooltipPrimitive from \\\"@radix-ui/react-tooltip\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst TooltipProvider = TooltipPrimitive.Provider\\n\\nconst Tooltip = TooltipPrimitive.Root\\n\\nconst TooltipTrigger = TooltipPrimitive.Trigger\\n\\nconst TooltipContent = React.forwardRef<\\n  React.ElementRef<typeof TooltipPrimitive.Content>,\\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\\n>(({ className, sideOffset = 4, ...props }, ref) => (\\n  <TooltipPrimitive.Portal>\\n    <TooltipPrimitive.Content\\n      ref={ref}\\n      sideOffset={sideOffset}\\n      className={cn(\\n        \\\"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  </TooltipPrimitive.Portal>\\n))\\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-blockquote.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-blockquote\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-blockquote.tsx\",\n      \"content\": \"export default function TypographyBlockquote() {\\n  return (\\n    <blockquote className=\\\"mt-6 border-l-2 pl-6 italic\\\">\\n      \\\"After all,\\\" he said, \\\"everyone enjoys a good joke, so it's only fair that\\n      they should pay for the privilege.\\\"\\n    </blockquote>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-demo\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-demo.tsx\",\n      \"content\": \"export default function TypographyDemo() {\\n  return (\\n    <div>\\n      <h1 className=\\\"scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl\\\">\\n        The Joke Tax Chronicles\\n      </h1>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        Once upon a time, in a far-off land, there was a very lazy king who\\n        spent all day lounging on his throne. One day, his advisors came to him\\n        with a problem: the kingdom was running out of money.\\n      </p>\\n      <h2 className=\\\"mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0\\\">\\n        The King's Plan\\n      </h2>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king thought long and hard, and finally came up with{\\\" \\\"}\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"font-medium text-primary underline underline-offset-4\\\"\\n        >\\n          a brilliant plan\\n        </a>\\n        : he would tax the jokes in the kingdom.\\n      </p>\\n      <blockquote className=\\\"mt-6 border-l-2 pl-6 italic\\\">\\n        \\\"After all,\\\" he said, \\\"everyone enjoys a good joke, so it's only fair\\n        that they should pay for the privilege.\\\"\\n      </blockquote>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        The Joke Tax\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king's subjects were not amused. They grumbled and complained, but\\n        the king was firm:\\n      </p>\\n      <ul className=\\\"my-6 ml-6 list-disc [&>li]:mt-2\\\">\\n        <li>1st level of puns: 5 gold coins</li>\\n        <li>2nd level of jokes: 10 gold coins</li>\\n        <li>3rd level of one-liners : 20 gold coins</li>\\n      </ul>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        As a result, people stopped telling jokes, and the kingdom fell into a\\n        gloom. But there was one person who refused to let the king's\\n        foolishness get him down: a court jester named Jokester.\\n      </p>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        Jokester's Revolt\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        Jokester began sneaking into the castle in the middle of the night and\\n        leaving jokes all over the place: under the king's pillow, in his soup,\\n        even in the royal toilet. The king was furious, but he couldn't seem to\\n        stop Jokester.\\n      </p>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        And then, one day, the people of the kingdom discovered that the jokes\\n        left by Jokester were so funny that they couldn't help but laugh. And\\n        once they started laughing, they couldn't stop.\\n      </p>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        The People's Rebellion\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The people of the kingdom, feeling uplifted by the laughter, started to\\n        tell jokes and puns again, and soon the entire kingdom was in on the\\n        joke.\\n      </p>\\n      <div className=\\\"my-6 w-full overflow-y-auto\\\">\\n        <table className=\\\"w-full\\\">\\n          <thead>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                King's Treasury\\n              </th>\\n              <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                People's happiness\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Empty\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Overflowing\\n              </td>\\n            </tr>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Modest\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Satisfied\\n              </td>\\n            </tr>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Full\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Ecstatic\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king, seeing how much happier his subjects were, realized the error\\n        of his ways and repealed the joke tax. Jokester was declared a hero, and\\n        the kingdom lived happily ever after.\\n      </p>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The moral of the story is: never underestimate the power of a good laugh\\n        and always be careful of bad ideas.\\n      </p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-h1.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h1\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-h1.tsx\",\n      \"content\": \"export default function TypographyH1() {\\n  return (\\n    <h1 className=\\\"scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl\\\">\\n      Taxing Laughter: The Joke Tax Chronicles\\n    </h1>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-h2.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h2\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-h2.tsx\",\n      \"content\": \"export default function TypographyH2() {\\n  return (\\n    <h2 className=\\\"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\\\">\\n      The People of the Kingdom\\n    </h2>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-h3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h3\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-h3.tsx\",\n      \"content\": \"export default function TypographyH3() {\\n  return (\\n    <h3 className=\\\"scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n      The Joke Tax\\n    </h3>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-h4.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h4\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-h4.tsx\",\n      \"content\": \"export default function TypographyH4() {\\n  return (\\n    <h4 className=\\\"scroll-m-20 text-xl font-semibold tracking-tight\\\">\\n      People stopped telling jokes\\n    </h4>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-inline-code.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-inline-code\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-inline-code.tsx\",\n      \"content\": \"export default function TypographyInlineCode() {\\n  return (\\n    <code className=\\\"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\\\">\\n      @radix-ui/react-alert-dialog\\n    </code>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-large.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-large\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-large.tsx\",\n      \"content\": \"export default function TypographyLarge() {\\n  return <div className=\\\"text-lg font-semibold\\\">Are you absolutely sure?</div>\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-lead.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-lead\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-lead.tsx\",\n      \"content\": \"export default function TypographyLead() {\\n  return (\\n    <p className=\\\"text-xl text-muted-foreground\\\">\\n      A modal dialog that interrupts the user with important content and expects\\n      a response.\\n    </p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-list.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-list\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-list.tsx\",\n      \"content\": \"export default function TypographyList() {\\n  return (\\n    <ul className=\\\"my-6 ml-6 list-disc [&>li]:mt-2\\\">\\n      <li>1st level of puns: 5 gold coins</li>\\n      <li>2nd level of jokes: 10 gold coins</li>\\n      <li>3rd level of one-liners : 20 gold coins</li>\\n    </ul>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-muted.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-muted\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-muted.tsx\",\n      \"content\": \"export default function TypographyMuted() {\\n  return (\\n    <p className=\\\"text-sm text-muted-foreground\\\">Enter your email address.</p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-p.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-p\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-p.tsx\",\n      \"content\": \"export default function TypographyP() {\\n  return (\\n    <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n      The king, seeing how much happier his subjects were, realized the error of\\n      his ways and repealed the joke tax.\\n    </p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-small.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-small\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-small.tsx\",\n      \"content\": \"export default function TypographySmall() {\\n  return (\\n    <small className=\\\"text-sm font-medium leading-none\\\">Email address</small>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/typography-table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-table\",\n  \"type\": \"registry:example\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"examples/typography-table.tsx\",\n      \"content\": \"export default function TypographyTable() {\\n  return (\\n    <div className=\\\"my-6 w-full overflow-y-auto\\\">\\n      <table className=\\\"w-full\\\">\\n        <thead>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              King's Treasury\\n            </th>\\n            <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              People's happiness\\n            </th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Empty\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Overflowing\\n            </td>\\n          </tr>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Modest\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Satisfied\\n            </td>\\n          </tr>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Full\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Ecstatic\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"type\": \"registry:hook\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"hooks/use-mobile.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/use-toast.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-toast\",\n  \"type\": \"registry:hook\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"files\": [\n    {\n      \"path\": \"hooks/use-toast.ts\",\n      \"content\": \"\\\"use client\\\"\\n\\n// Inspired by react-hot-toast library\\nimport * as React from \\\"react\\\"\\n\\nimport type {\\n  ToastActionElement,\\n  ToastProps,\\n} from \\\"@/registry/new-york/ui/toast\\\"\\n\\nconst TOAST_LIMIT = 1\\nconst TOAST_REMOVE_DELAY = 1000000\\n\\ntype ToasterToast = ToastProps & {\\n  id: string\\n  title?: React.ReactNode\\n  description?: React.ReactNode\\n  action?: ToastActionElement\\n}\\n\\nconst actionTypes = {\\n  ADD_TOAST: \\\"ADD_TOAST\\\",\\n  UPDATE_TOAST: \\\"UPDATE_TOAST\\\",\\n  DISMISS_TOAST: \\\"DISMISS_TOAST\\\",\\n  REMOVE_TOAST: \\\"REMOVE_TOAST\\\",\\n} as const\\n\\nlet count = 0\\n\\nfunction genId() {\\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\\n  return count.toString()\\n}\\n\\ntype ActionType = typeof actionTypes\\n\\ntype Action =\\n  | {\\n      type: ActionType[\\\"ADD_TOAST\\\"]\\n      toast: ToasterToast\\n    }\\n  | {\\n      type: ActionType[\\\"UPDATE_TOAST\\\"]\\n      toast: Partial<ToasterToast>\\n    }\\n  | {\\n      type: ActionType[\\\"DISMISS_TOAST\\\"]\\n      toastId?: ToasterToast[\\\"id\\\"]\\n    }\\n  | {\\n      type: ActionType[\\\"REMOVE_TOAST\\\"]\\n      toastId?: ToasterToast[\\\"id\\\"]\\n    }\\n\\ninterface State {\\n  toasts: ToasterToast[]\\n}\\n\\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\\n\\nconst addToRemoveQueue = (toastId: string) => {\\n  if (toastTimeouts.has(toastId)) {\\n    return\\n  }\\n\\n  const timeout = setTimeout(() => {\\n    toastTimeouts.delete(toastId)\\n    dispatch({\\n      type: \\\"REMOVE_TOAST\\\",\\n      toastId: toastId,\\n    })\\n  }, TOAST_REMOVE_DELAY)\\n\\n  toastTimeouts.set(toastId, timeout)\\n}\\n\\nexport const reducer = (state: State, action: Action): State => {\\n  switch (action.type) {\\n    case \\\"ADD_TOAST\\\":\\n      return {\\n        ...state,\\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\\n      }\\n\\n    case \\\"UPDATE_TOAST\\\":\\n      return {\\n        ...state,\\n        toasts: state.toasts.map((t) =>\\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\\n        ),\\n      }\\n\\n    case \\\"DISMISS_TOAST\\\": {\\n      const { toastId } = action\\n\\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\\n      // but I'll keep it here for simplicity\\n      if (toastId) {\\n        addToRemoveQueue(toastId)\\n      } else {\\n        state.toasts.forEach((toast) => {\\n          addToRemoveQueue(toast.id)\\n        })\\n      }\\n\\n      return {\\n        ...state,\\n        toasts: state.toasts.map((t) =>\\n          t.id === toastId || toastId === undefined\\n            ? {\\n                ...t,\\n                open: false,\\n              }\\n            : t\\n        ),\\n      }\\n    }\\n    case \\\"REMOVE_TOAST\\\":\\n      if (action.toastId === undefined) {\\n        return {\\n          ...state,\\n          toasts: [],\\n        }\\n      }\\n      return {\\n        ...state,\\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\\n      }\\n  }\\n}\\n\\nconst listeners: Array<(state: State) => void> = []\\n\\nlet memoryState: State = { toasts: [] }\\n\\nfunction dispatch(action: Action) {\\n  memoryState = reducer(memoryState, action)\\n  listeners.forEach((listener) => {\\n    listener(memoryState)\\n  })\\n}\\n\\ntype Toast = Omit<ToasterToast, \\\"id\\\">\\n\\nfunction toast({ ...props }: Toast) {\\n  const id = genId()\\n\\n  const update = (props: ToasterToast) =>\\n    dispatch({\\n      type: \\\"UPDATE_TOAST\\\",\\n      toast: { ...props, id },\\n    })\\n  const dismiss = () => dispatch({ type: \\\"DISMISS_TOAST\\\", toastId: id })\\n\\n  dispatch({\\n    type: \\\"ADD_TOAST\\\",\\n    toast: {\\n      ...props,\\n      id,\\n      open: true,\\n      onOpenChange: (open) => {\\n        if (!open) dismiss()\\n      },\\n    },\\n  })\\n\\n  return {\\n    id: id,\\n    dismiss,\\n    update,\\n  }\\n}\\n\\nfunction useToast() {\\n  const [state, setState] = React.useState<State>(memoryState)\\n\\n  React.useEffect(() => {\\n    listeners.push(setState)\\n    return () => {\\n      const index = listeners.indexOf(setState)\\n      if (index > -1) {\\n        listeners.splice(index, 1)\\n      }\\n    }\\n  }, [state])\\n\\n  return {\\n    ...state,\\n    toast,\\n    dismiss: (toastId?: string) => dispatch({ type: \\\"DISMISS_TOAST\\\", toastId }),\\n  }\\n}\\n\\nexport { useToast, toast }\\n\",\n      \"type\": \"registry:hook\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"type\": \"registry:lib\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-login-01\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/login-01.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-screen w-full items-center justify-center px-4\\\">\\n      <Card className=\\\"mx-auto max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"text-2xl\\\">Login</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"grid gap-4\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n            </div>\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center\\\">\\n                <Label htmlFor=\\\"password\\\">Password</Label>\\n                <Link\\n                  href=\\\"#\\\"\\n                  className=\\\"ml-auto inline-block text-sm underline\\\"\\n                >\\n                  Forgot your password?\\n                </Link>\\n              </div>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n            </div>\\n            <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n              Login\\n            </Button>\\n            <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n              Login with Google\\n            </Button>\\n          </div>\\n          <div className=\\\"mt-4 text-center text-sm\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <Link href=\\\"#\\\" className=\\\"underline\\\">\\n              Sign up\\n            </Link>\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-01\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-01.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd, Search } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                      <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                      <span className=\\\"font-semibold\\\">Documentation</span>\\n                      <span className=\\\"\\\">v{selectedVersion}</span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width]\\\"\\n                  align=\\\"start\\\"\\n                >\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <Check className=\\\"ml-auto\\\" />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {/* We create a SidebarGroup for each parent. */}\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((item) => (\\n                    <SidebarMenuItem key={item.title}>\\n                      <SidebarMenuButton asChild isActive={item.isActive}>\\n                        <a href={item.url}>{item.title}</a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\",\n      \"target\": \"components/sidebar-01.tsx\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-02\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-02.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Check,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  GalleryVerticalEnd,\\n  Search,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                      <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                      <span className=\\\"font-semibold\\\">Documentation</span>\\n                      <span className=\\\"\\\">v{selectedVersion}</span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width]\\\"\\n                  align=\\\"start\\\"\\n                >\\n                  {data.versions.map((version) => (\\n                    <DropdownMenuItem\\n                      key={version}\\n                      onSelect={() => setSelectedVersion(version)}\\n                    >\\n                      v{version}{\\\" \\\"}\\n                      {version === selectedVersion && (\\n                        <Check className=\\\"ml-auto\\\" />\\n                      )}\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent className=\\\"gap-0\\\">\\n          {/* We create a collapsible SidebarGroup for each parent. */}\\n          {data.navMain.map((item) => (\\n            <Collapsible\\n              key={item.title}\\n              title={item.title}\\n              defaultOpen\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroup>\\n                <SidebarGroupLabel\\n                  asChild\\n                  className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <CollapsibleTrigger>\\n                    {item.title}{\\\" \\\"}\\n                    <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                  </CollapsibleTrigger>\\n                </SidebarGroupLabel>\\n                <CollapsibleContent>\\n                  <SidebarGroupContent>\\n                    <SidebarMenu>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuItem key={item.title}>\\n                          <SidebarMenuButton asChild isActive={item.isActive}>\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </CollapsibleContent>\\n              </SidebarGroup>\\n            </Collapsible>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex sticky top-0 bg-background h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-03\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-03.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd, Search } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                    <span className=\\\"font-semibold\\\">Documentation</span>\\n                    <span className=\\\"\\\">v1.0.0</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-04\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-04.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                    <span className=\\\"font-semibold\\\">Documentation</span>\\n                    <span className=\\\"\\\">v1.0.0</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu className=\\\"gap-2\\\">\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-05\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-05.tsx\",\n      \"content\": \"import { GalleryVerticalEnd, Minus, Plus, Search } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Component() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                    <span className=\\\"font-semibold\\\">Documentation</span>\\n                    <span className=\\\"\\\">v1.0.0</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <Search className=\\\"pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50\\\" />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item, index) => (\\n                <Collapsible\\n                  key={item.title}\\n                  defaultOpen={index === 1}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger asChild>\\n                      <SidebarMenuButton>\\n                        {item.title}{\\\" \\\"}\\n                        <Plus className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\" />\\n                        <Minus className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\" />\\n                      </SidebarMenuButton>\\n                    </CollapsibleTrigger>\\n                    {item.items?.length ? (\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((item) => (\\n                            <SidebarMenuSubItem key={item.title}>\\n                              <SidebarMenuSubButton\\n                                asChild\\n                                isActive={item.isActive}\\n                              >\\n                                <a href={item.url}>{item.title}</a>\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-06\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-06.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { GalleryVerticalEnd, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                    <span className=\\\"font-semibold\\\">Documentation</span>\\n                    <span className=\\\"\\\">v1.0.0</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                        {item.title} <MoreHorizontal className=\\\"ml-auto\\\" />\\n                      </SidebarMenuButton>\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent\\n                        side=\\\"bottom\\\"\\n                        align=\\\"end\\\"\\n                        className=\\\"min-w-56 rounded-lg\\\"\\n                      >\\n                        {item.items.map((item) => (\\n                          <DropdownMenuItem asChild key={item.title}>\\n                            <a href={item.url}>{item.title}</a>\\n                          </DropdownMenuItem>\\n                        ))}\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <div className=\\\"p-1\\\">\\n            <Card className=\\\"shadow-none\\\">\\n              <form>\\n                <CardHeader className=\\\"p-4 pb-0\\\">\\n                  <CardTitle className=\\\"text-sm\\\">\\n                    Subscribe to our newsletter\\n                  </CardTitle>\\n                  <CardDescription>\\n                    Opt-in to receive updates and news about the sidebar.\\n                  </CardDescription>\\n                </CardHeader>\\n                <CardContent className=\\\"grid gap-2.5 p-4\\\">\\n                  <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                  <Button\\n                    className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\"\\n                    size=\\\"sm\\\"\\n                  >\\n                    Subscribe\\n                  </Button>\\n                </CardContent>\\n              </form>\\n            </Card>\\n          </div>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-07\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-07.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  BadgeCheck,\\n  Bell,\\n  BookOpen,\\n  Bot,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  Folder,\\n  Forward,\\n  Frame,\\n  GalleryVerticalEnd,\\n  LogOut,\\n  Map,\\n  MoreHorizontal,\\n  PieChart,\\n  Plus,\\n  Settings2,\\n  Sparkles,\\n  SquareTerminal,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: GalleryVerticalEnd,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                      <activeTeam.logo className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-semibold\\\">\\n                        {activeTeam.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {activeTeam.plan}\\n                      </span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n                  align=\\\"start\\\"\\n                  side=\\\"bottom\\\"\\n                  sideOffset={4}\\n                >\\n                  <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n                    Teams\\n                  </DropdownMenuLabel>\\n                  {data.teams.map((team, index) => (\\n                    <DropdownMenuItem\\n                      key={team.name}\\n                      onClick={() => setActiveTeam(team)}\\n                      className=\\\"gap-2 p-2\\\"\\n                    >\\n                      <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                        <team.logo className=\\\"size-4 shrink-0\\\" />\\n                      </div>\\n                      {team.name}\\n                      <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n                    </DropdownMenuItem>\\n                  ))}\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n                    <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                      <Plus className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"font-medium text-muted-foreground\\\">\\n                      Add team\\n                    </div>\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <CollapsibleTrigger asChild>\\n                      <SidebarMenuButton tooltip={item.title}>\\n                        {item.icon && <item.icon />}\\n                        <span>{item.title}</span>\\n                        <ChevronRight className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\" />\\n                      </SidebarMenuButton>\\n                    </CollapsibleTrigger>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton asChild>\\n                              <a href={subItem.url}>\\n                                <span>{subItem.title}</span>\\n                              </a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      <item.icon />\\n                      <span>{item.name}</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuAction showOnHover>\\n                        <MoreHorizontal />\\n                        <span className=\\\"sr-only\\\">More</span>\\n                      </SidebarMenuAction>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      className=\\\"w-48 rounded-lg\\\"\\n                      side=\\\"bottom\\\"\\n                      align=\\\"end\\\"\\n                    >\\n                      <DropdownMenuItem>\\n                        <Folder className=\\\"text-muted-foreground\\\" />\\n                        <span>View Project</span>\\n                      </DropdownMenuItem>\\n                      <DropdownMenuItem>\\n                        <Forward className=\\\"text-muted-foreground\\\" />\\n                        <span>Share Project</span>\\n                      </DropdownMenuItem>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuItem>\\n                        <Trash2 className=\\\"text-muted-foreground\\\" />\\n                        <span>Delete Project</span>\\n                      </DropdownMenuItem>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </SidebarMenuItem>\\n              ))}\\n              <SidebarMenuItem>\\n                <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n                  <MoreHorizontal className=\\\"text-sidebar-foreground/70\\\" />\\n                  <span>More</span>\\n                </SidebarMenuButton>\\n              </SidebarMenuItem>\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-semibold\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n                  side=\\\"bottom\\\"\\n                  align=\\\"end\\\"\\n                  sideOffset={4}\\n                >\\n                  <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                    <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                      <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                        <AvatarImage\\n                          src={data.user.avatar}\\n                          alt={data.user.name}\\n                        />\\n                        <AvatarFallback className=\\\"rounded-lg\\\">\\n                          CN\\n                        </AvatarFallback>\\n                      </Avatar>\\n                      <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                        <span className=\\\"truncate font-semibold\\\">\\n                          {data.user.name}\\n                        </span>\\n                        <span className=\\\"truncate text-xs\\\">\\n                          {data.user.email}\\n                        </span>\\n                      </div>\\n                    </div>\\n                  </DropdownMenuLabel>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <Sparkles />\\n                      Upgrade to Pro\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <BadgeCheck />\\n                      Account\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <CreditCard />\\n                      Billing\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <Bell />\\n                      Notifications\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <LogOut />\\n                    Log out\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-08\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-08.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  BookOpen,\\n  Bot,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  Folder,\\n  Frame,\\n  LifeBuoy,\\n  LogOut,\\n  Map,\\n  MoreHorizontal,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  Share,\\n  Sparkles,\\n  SquareTerminal,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <Command className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton asChild tooltip={item.title}>\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    {item.items?.length ? (\\n                      <>\\n                        <CollapsibleTrigger asChild>\\n                          <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                            <ChevronRight />\\n                            <span className=\\\"sr-only\\\">Toggle</span>\\n                          </SidebarMenuAction>\\n                        </CollapsibleTrigger>\\n                        <CollapsibleContent>\\n                          <SidebarMenuSub>\\n                            {item.items?.map((subItem) => (\\n                              <SidebarMenuSubItem key={subItem.title}>\\n                                <SidebarMenuSubButton asChild>\\n                                  <a href={subItem.url}>\\n                                    <span>{subItem.title}</span>\\n                                  </a>\\n                                </SidebarMenuSubButton>\\n                              </SidebarMenuSubItem>\\n                            ))}\\n                          </SidebarMenuSub>\\n                        </CollapsibleContent>\\n                      </>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      <item.icon />\\n                      <span>{item.name}</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuAction showOnHover>\\n                        <MoreHorizontal />\\n                        <span className=\\\"sr-only\\\">More</span>\\n                      </SidebarMenuAction>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      className=\\\"w-48\\\"\\n                      side=\\\"bottom\\\"\\n                      align=\\\"end\\\"\\n                    >\\n                      <DropdownMenuItem>\\n                        <Folder className=\\\"text-muted-foreground\\\" />\\n                        <span>View Project</span>\\n                      </DropdownMenuItem>\\n                      <DropdownMenuItem>\\n                        <Share className=\\\"text-muted-foreground\\\" />\\n                        <span>Share Project</span>\\n                      </DropdownMenuItem>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuItem>\\n                        <Trash2 className=\\\"text-muted-foreground\\\" />\\n                        <span>Delete Project</span>\\n                      </DropdownMenuItem>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </SidebarMenuItem>\\n              ))}\\n              <SidebarMenuItem>\\n                <SidebarMenuButton>\\n                  <MoreHorizontal />\\n                  <span>More</span>\\n                </SidebarMenuButton>\\n              </SidebarMenuItem>\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild size=\\\"sm\\\">\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-semibold\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n                  side=\\\"bottom\\\"\\n                  align=\\\"end\\\"\\n                  sideOffset={4}\\n                >\\n                  <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                    <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                      <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                        <AvatarImage\\n                          src={data.user.avatar}\\n                          alt={data.user.name}\\n                        />\\n                        <AvatarFallback className=\\\"rounded-lg\\\">\\n                          CN\\n                        </AvatarFallback>\\n                      </Avatar>\\n                      <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                        <span className=\\\"truncate font-semibold\\\">\\n                          {data.user.name}\\n                        </span>\\n                        <span className=\\\"truncate text-xs\\\">\\n                          {data.user.email}\\n                        </span>\\n                      </div>\\n                    </div>\\n                  </DropdownMenuLabel>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <Sparkles />\\n                      Upgrade to Pro\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <BadgeCheck />\\n                      Account\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <CreditCard />\\n                      Billing\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <Bell />\\n                      Notifications\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <LogOut />\\n                    Log out\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Building Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-09\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-09.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArchiveX,\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  File,\\n  Inbox,\\n  LogOut,\\n  Send,\\n  Sparkles,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: File,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: ArchiveX,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden [&>[data-sidebar=sidebar]]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"!w-[calc(var(--sidebar-width-icon)_+_1px)] border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <Command className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      <item.icon />\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 whitespace-nowrap border-b p-4 text-sm leading-tight last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] whitespace-break-spaces text-xs\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\\nfunction NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-10\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-10.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowDown,\\n  ArrowUp,\\n  ArrowUpRight,\\n  AudioWaveform,\\n  Bell,\\n  Blocks,\\n  Calendar,\\n  ChevronDown,\\n  ChevronRight,\\n  Command,\\n  Copy,\\n  CornerUpLeft,\\n  CornerUpRight,\\n  FileText,\\n  GalleryVerticalEnd,\\n  Home,\\n  Inbox,\\n  LineChart,\\n  Link,\\n  MessageCircleQuestion,\\n  MoreHorizontal,\\n  Plus,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  Star,\\n  StarOff,\\n  Trash,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/components/ui/popover\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: Calendar,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  actions: [\\n    [\\n      {\\n        label: \\\"Customize Page\\\",\\n        icon: Settings2,\\n      },\\n      {\\n        label: \\\"Turn into wiki\\\",\\n        icon: FileText,\\n      },\\n    ],\\n    [\\n      {\\n        label: \\\"Copy Link\\\",\\n        icon: Link,\\n      },\\n      {\\n        label: \\\"Duplicate\\\",\\n        icon: Copy,\\n      },\\n      {\\n        label: \\\"Move to\\\",\\n        icon: CornerUpRight,\\n      },\\n      {\\n        label: \\\"Move to Trash\\\",\\n        icon: Trash2,\\n      },\\n    ],\\n    [\\n      {\\n        label: \\\"Undo\\\",\\n        icon: CornerUpLeft,\\n      },\\n      {\\n        label: \\\"View analytics\\\",\\n        icon: LineChart,\\n      },\\n      {\\n        label: \\\"Version History\\\",\\n        icon: GalleryVerticalEnd,\\n      },\\n      {\\n        label: \\\"Show delete pages\\\",\\n        icon: Trash,\\n      },\\n      {\\n        label: \\\"Notifications\\\",\\n        icon: Bell,\\n      },\\n    ],\\n    [\\n      {\\n        label: \\\"Import\\\",\\n        icon: ArrowUp,\\n      },\\n      {\\n        label: \\\"Export\\\",\\n        icon: ArrowDown,\\n      },\\n    ],\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions actions={data.actions} />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction NavActions({\\n  actions,\\n}: {\\n  actions: {\\n    label: string\\n    icon: LucideIcon\\n  }[][]\\n}) {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <Star />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <MoreHorizontal />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {actions.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            <item.icon /> <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\\nfunction NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\\nfunction NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-semibold\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-11\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-11.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight, File, Folder } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <File />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction Tree({ item }: { item: string | any[] }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <File />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <ChevronRight className=\\\"transition-transform\\\" />\\n            <Folder />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-12\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-12.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  Check,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Plus,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\\nfunction DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground [&_[role=gridcell]]:w-[33px]\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-13\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-13.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Bell,\\n  Check,\\n  Globe,\\n  Home,\\n  Keyboard,\\n  Link,\\n  Lock,\\n  Menu,\\n  MessageCircle,\\n  Paintbrush,\\n  Settings,\\n  Video,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/components/ui/sidebar\\\"\\nconst data = {\\n  nav: [\\n    { name: \\\"Notifications\\\", icon: Bell },\\n    { name: \\\"Navigation\\\", icon: Menu },\\n    { name: \\\"Home\\\", icon: Home },\\n    { name: \\\"Appearance\\\", icon: Paintbrush },\\n    { name: \\\"Messages & media\\\", icon: MessageCircle },\\n    { name: \\\"Language & region\\\", icon: Globe },\\n    { name: \\\"Accessibility\\\", icon: Keyboard },\\n    { name: \\\"Mark as read\\\", icon: Check },\\n    { name: \\\"Audio & video\\\", icon: Video },\\n    { name: \\\"Connected accounts\\\", icon: Link },\\n    { name: \\\"Privacy & visibility\\\", icon: Lock },\\n    { name: \\\"Advanced\\\", icon: Settings },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\\nfunction SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            <item.icon />\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-14\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-14.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Building Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">\\n                  Building Your Application\\n                </BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"v0-sidebar-15\",\n  \"type\": \"registry:internal\",\n  \"author\": \"shadcn (https://ui.shadcn.com)\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"internal/sidebar-15.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowUpRight,\\n  AudioWaveform,\\n  BadgeCheck,\\n  Bell,\\n  Blocks,\\n  CalendarIcon,\\n  Check,\\n  ChevronDown,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  Home,\\n  Inbox,\\n  Link,\\n  LogOut,\\n  MessageCircleQuestion,\\n  MoreHorizontal,\\n  Plus,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  StarOff,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\n// This is sample data.\\nconst sidebarLeftData = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: CalendarIcon,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\n// This is sample data.\\nconst sidebarRightData = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction SidebarLeft({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={sidebarLeftData.teams} />\\n        <NavMain items={sidebarLeftData.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={sidebarLeftData.favorites} />\\n        <NavWorkspaces workspaces={sidebarLeftData.workspaces} />\\n        <NavSecondary\\n          items={sidebarLeftData.navSecondary}\\n          className=\\\"mt-auto\\\"\\n        />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\nfunction SidebarRight({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={sidebarRightData.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={sidebarRightData.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\\nfunction Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\\nfunction DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground [&_[role=gridcell]]:w-[33px]\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\\nfunction NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-semibold\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\\nfunction NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\\nfunction TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-semibold\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-sm border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:internal\",\n      \"target\": \"\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york/v0-sidebar-16.json",
    "content": "{\n  \"name\": \"v0-sidebar-16\",\n  \"type\": \"registry:block\",\n  \"description\": \"An inset sidebar with site header navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"navigation-menu\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"v0/sidebar-16.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  BookOpen,\\n  Bot,\\n  ChevronRight,\\n  ChevronsUpDown,\\n  Command,\\n  CreditCard,\\n  Folder,\\n  Frame,\\n  LifeBuoy,\\n  LogOut,\\n  Map,\\n  MoreHorizontal,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  Share,\\n  Sparkles,\\n  SquareTerminal,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Icons } from \\\"@/components/icons\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/components/ui/avatar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/components/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/components/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/components/ui/navigation-menu\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n  useSidebar,\\n} from \\\"@/components/ui/sidebar\\\"\\nconst HEADER_HEIGHT = \\\"4rem\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function Page() {\\n  const [open, setOpen] = React.useState(true)\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <div\\n      style={\\n        {\\n          \\\"--header-height\\\": HEADER_HEIGHT,\\n        } as React.CSSProperties\\n      }\\n    >\\n      <header className=\\\"sticky top-0 bg-sidebar flex h-[--header-height] shrink-0 items-center gap-2 border-b px-4 isolate z-20\\\">\\n        <div className=\\\"flex items-center gap-2 w-full\\\">\\n          <Button\\n            className=\\\"hidden md:flex\\\"\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            onClick={() => setOpen(!open)}\\n          >\\n            <Sidebar />\\n          </Button>\\n\\n          <div className=\\\"mx-auto flex items-center gap-2\\\">\\n            <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n              <Command className=\\\"size-4\\\" />\\n            </div>\\n            <Separator orientation=\\\"vertical\\\" className=\\\"ml-4 h-4\\\" />\\n            <NavigationMenu>\\n              <NavigationMenuList>\\n                <NavigationMenuItem>\\n                  <NavigationMenuTrigger className=\\\"bg-sidebar\\\">\\n                    Getting started\\n                  </NavigationMenuTrigger>\\n                  <NavigationMenuContent>\\n                    <ul className=\\\"grid gap-3 p-4 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\\\">\\n                      <li className=\\\"row-span-3\\\">\\n                        <NavigationMenuLink asChild>\\n                          <a\\n                            className=\\\"flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md\\\"\\n                            href=\\\"/\\\"\\n                          >\\n                            <Icons.logo className=\\\"h-6 w-6\\\" />\\n                            <div className=\\\"mb-2 mt-4 text-lg font-medium\\\">\\n                              shadcn/ui\\n                            </div>\\n                            <p className=\\\"text-sm leading-tight text-muted-foreground\\\">\\n                              Beautifully designed components built with Radix\\n                              UI and Tailwind CSS.\\n                            </p>\\n                          </a>\\n                        </NavigationMenuLink>\\n                      </li>\\n\\n                      <li>\\n                        <NavigationMenuLink asChild>\\n                          <a className=\\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\">\\n                            <div className=\\\"text-sm font-medium leading-none\\\">\\n                              Introduction\\n                            </div>\\n                            <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n                              Re-usable components built using Radix UI and\\n                              Tailwind CSS.\\n                            </p>\\n                          </a>\\n                        </NavigationMenuLink>\\n                      </li>\\n\\n                      <li>\\n                        <NavigationMenuLink asChild>\\n                          <a className=\\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\">\\n                            <div className=\\\"text-sm font-medium leading-none\\\">\\n                              Installation\\n                            </div>\\n                            <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n                              How to install dependencies and structure your\\n                              app.\\n                            </p>\\n                          </a>\\n                        </NavigationMenuLink>\\n                      </li>\\n\\n                      <li>\\n                        <NavigationMenuLink asChild>\\n                          <a className=\\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\">\\n                            <div className=\\\"text-sm font-medium leading-none\\\">\\n                              Typography\\n                            </div>\\n                            <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n                              Styles for headings, paragraphs, lists...etc\\n                            </p>\\n                          </a>\\n                        </NavigationMenuLink>\\n                      </li>\\n                    </ul>\\n                  </NavigationMenuContent>\\n                </NavigationMenuItem>\\n                <NavigationMenuItem>\\n                  <NavigationMenuTrigger className=\\\"bg-sidebar\\\">\\n                    Components\\n                  </NavigationMenuTrigger>\\n                  <NavigationMenuContent>\\n                    <ul className=\\\"grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px] \\\">\\n                      {components.map((component) => (\\n                        <li>\\n                          <NavigationMenuLink key={component.title} asChild>\\n                            <a className=\\\"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\\\">\\n                              <div className=\\\"text-sm font-medium leading-none\\\">\\n                                {component.title}\\n                              </div>\\n                              <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n                                {component.description}\\n                              </p>\\n                            </a>\\n                          </NavigationMenuLink>\\n                        </li>\\n                      ))}\\n                    </ul>\\n                  </NavigationMenuContent>\\n                </NavigationMenuItem>\\n                <NavigationMenuItem>\\n                  <Link href=\\\"/docs\\\" legacyBehavior passHref>\\n                    <NavigationMenuLink\\n                      className={cn(navigationMenuTriggerStyle(), \\\"bg-sidebar\\\")}\\n                    >\\n                      Documentation\\n                    </NavigationMenuLink>\\n                  </Link>\\n                </NavigationMenuItem>\\n              </NavigationMenuList>\\n            </NavigationMenu>\\n          </div>\\n        </div>\\n      </header>\\n      <SidebarProvider open={open} onOpenChange={setOpen}>\\n        <Sidebar\\n          className=\\\"top-[--header-height] pb-[--header-height]\\\"\\n          variant=\\\"inset\\\"\\n        >\\n          <SidebarHeader>\\n            <SidebarMenu>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                  <a href=\\\"#\\\">\\n                    <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                      <Command className=\\\"size-4\\\" />\\n                    </div>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-semibold\\\">Acme Inc</span>\\n                      <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                    </div>\\n                  </a>\\n                </SidebarMenuButton>\\n              </SidebarMenuItem>\\n            </SidebarMenu>\\n          </SidebarHeader>\\n          <SidebarContent>\\n            <SidebarGroup>\\n              <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <Collapsible\\n                    key={item.title}\\n                    asChild\\n                    defaultOpen={item.isActive}\\n                  >\\n                    <SidebarMenuItem>\\n                      <SidebarMenuButton asChild tooltip={item.title}>\\n                        <a href={item.url}>\\n                          <item.icon />\\n                          <span>{item.title}</span>\\n                        </a>\\n                      </SidebarMenuButton>\\n                      {item.items?.length ? (\\n                        <>\\n                          <CollapsibleTrigger asChild>\\n                            <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                              <ChevronRight />\\n                              <span className=\\\"sr-only\\\">Toggle</span>\\n                            </SidebarMenuAction>\\n                          </CollapsibleTrigger>\\n                          <CollapsibleContent>\\n                            <SidebarMenuSub>\\n                              {item.items?.map((subItem) => (\\n                                <SidebarMenuSubItem key={subItem.title}>\\n                                  <SidebarMenuSubButton asChild>\\n                                    <a href={subItem.url}>\\n                                      <span>{subItem.title}</span>\\n                                    </a>\\n                                  </SidebarMenuSubButton>\\n                                </SidebarMenuSubItem>\\n                              ))}\\n                            </SidebarMenuSub>\\n                          </CollapsibleContent>\\n                        </>\\n                      ) : null}\\n                    </SidebarMenuItem>\\n                  </Collapsible>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroup>\\n            <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n              <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n              <SidebarMenu>\\n                {data.projects.map((item) => (\\n                  <SidebarMenuItem key={item.name}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <DropdownMenu>\\n                      <DropdownMenuTrigger asChild>\\n                        <SidebarMenuAction showOnHover>\\n                          <MoreHorizontal />\\n                          <span className=\\\"sr-only\\\">More</span>\\n                        </SidebarMenuAction>\\n                      </DropdownMenuTrigger>\\n                      <DropdownMenuContent\\n                        className=\\\"w-48\\\"\\n                        side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                        align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                      >\\n                        <DropdownMenuItem>\\n                          <Folder className=\\\"text-muted-foreground\\\" />\\n                          <span>View Project</span>\\n                        </DropdownMenuItem>\\n                        <DropdownMenuItem>\\n                          <Share className=\\\"text-muted-foreground\\\" />\\n                          <span>Share Project</span>\\n                        </DropdownMenuItem>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuItem>\\n                          <Trash2 className=\\\"text-muted-foreground\\\" />\\n                          <span>Delete Project</span>\\n                        </DropdownMenuItem>\\n                      </DropdownMenuContent>\\n                    </DropdownMenu>\\n                  </SidebarMenuItem>\\n                ))}\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton>\\n                    <MoreHorizontal />\\n                    <span>More</span>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              </SidebarMenu>\\n            </SidebarGroup>\\n            <SidebarGroup className=\\\"mt-auto\\\">\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {data.navSecondary.map((item) => (\\n                    <SidebarMenuItem key={item.title}>\\n                      <SidebarMenuButton asChild size=\\\"sm\\\">\\n                        <a href={item.url}>\\n                          <item.icon />\\n                          <span>{item.title}</span>\\n                        </a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </SidebarContent>\\n          <SidebarFooter>\\n            <SidebarMenu>\\n              <SidebarMenuItem>\\n                <DropdownMenu>\\n                  <DropdownMenuTrigger asChild>\\n                    <SidebarMenuButton\\n                      size=\\\"lg\\\"\\n                      className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n                    >\\n                      <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                        <AvatarImage\\n                          src={data.user.avatar}\\n                          alt={data.user.name}\\n                        />\\n                        <AvatarFallback className=\\\"rounded-lg\\\">\\n                          CN\\n                        </AvatarFallback>\\n                      </Avatar>\\n                      <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                        <span className=\\\"truncate font-semibold\\\">\\n                          {data.user.name}\\n                        </span>\\n                        <span className=\\\"truncate text-xs\\\">\\n                          {data.user.email}\\n                        </span>\\n                      </div>\\n                      <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n                    </SidebarMenuButton>\\n                  </DropdownMenuTrigger>\\n                  <DropdownMenuContent\\n                    className=\\\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\\\"\\n                    side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                    align=\\\"end\\\"\\n                    sideOffset={4}\\n                  >\\n                    <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n                      <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                        <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                          <AvatarImage\\n                            src={data.user.avatar}\\n                            alt={data.user.name}\\n                          />\\n                          <AvatarFallback className=\\\"rounded-lg\\\">\\n                            CN\\n                          </AvatarFallback>\\n                        </Avatar>\\n                        <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                          <span className=\\\"truncate font-semibold\\\">\\n                            {data.user.name}\\n                          </span>\\n                          <span className=\\\"truncate text-xs\\\">\\n                            {data.user.email}\\n                          </span>\\n                        </div>\\n                      </div>\\n                    </DropdownMenuLabel>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>\\n                        <Sparkles />\\n                        Upgrade to Pro\\n                      </DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>\\n                        <BadgeCheck />\\n                        Account\\n                      </DropdownMenuItem>\\n                      <DropdownMenuItem>\\n                        <CreditCard />\\n                        Billing\\n                      </DropdownMenuItem>\\n                      <DropdownMenuItem>\\n                        <Bell />\\n                        Notifications\\n                      </DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuItem>\\n                      <LogOut />\\n                      Log out\\n                    </DropdownMenuItem>\\n                  </DropdownMenuContent>\\n                </DropdownMenu>\\n              </SidebarMenuItem>\\n            </SidebarMenu>\\n          </SidebarFooter>\\n        </Sidebar>\\n\\n        <SidebarInset>\\n          <header className=\\\" flex shrink-0 items-center gap-2 border-b py-2\\\">\\n            <div className=\\\"flex items-center gap-2 px-4 py-2\\\">\\n              <div className=\\\"flex md:hidden items-center gap-2\\\">\\n                <SidebarTrigger />\\n                <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n              </div>\\n              <Breadcrumb>\\n                <BreadcrumbList>\\n                  <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                    <BreadcrumbLink href=\\\"#\\\">\\n                      Building Your Application\\n                    </BreadcrumbLink>\\n                  </BreadcrumbItem>\\n                  <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                  <BreadcrumbItem>\\n                    <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                  </BreadcrumbItem>\\n                </BreadcrumbList>\\n              </Breadcrumb>\\n            </div>\\n          </header>\\n          <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n            <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n              <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            </div>\\n            <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n          </div>\\n        </SidebarInset>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\",\n      \"target\": \"components/sidebar-16.tsx\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/accordion-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-demo\",\n  \"registryDependencies\": [\n    \"accordion\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/accordion-demo.tsx\",\n      \"content\": \"import {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/new-york-v4/ui/accordion\\\"\\n\\nexport default function AccordionDemo() {\\n  return (\\n    <Accordion\\n      type=\\\"single\\\"\\n      collapsible\\n      className=\\\"w-full\\\"\\n      defaultValue=\\\"item-1\\\"\\n    >\\n      <AccordionItem value=\\\"item-1\\\">\\n        <AccordionTrigger>Product Information</AccordionTrigger>\\n        <AccordionContent className=\\\"flex flex-col gap-4 text-balance\\\">\\n          <p>\\n            Our flagship product combines cutting-edge technology with sleek\\n            design. Built with premium materials, it offers unparalleled\\n            performance and reliability.\\n          </p>\\n          <p>\\n            Key features include advanced processing capabilities, and an\\n            intuitive user interface designed for both beginners and experts.\\n          </p>\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-2\\\">\\n        <AccordionTrigger>Shipping Details</AccordionTrigger>\\n        <AccordionContent className=\\\"flex flex-col gap-4 text-balance\\\">\\n          <p>\\n            We offer worldwide shipping through trusted courier partners.\\n            Standard delivery takes 3-5 business days, while express shipping\\n            ensures delivery within 1-2 business days.\\n          </p>\\n          <p>\\n            All orders are carefully packaged and fully insured. Track your\\n            shipment in real-time through our dedicated tracking portal.\\n          </p>\\n        </AccordionContent>\\n      </AccordionItem>\\n      <AccordionItem value=\\\"item-3\\\">\\n        <AccordionTrigger>Return Policy</AccordionTrigger>\\n        <AccordionContent className=\\\"flex flex-col gap-4 text-balance\\\">\\n          <p>\\n            We stand behind our products with a comprehensive 30-day return\\n            policy. If you&apos;re not completely satisfied, simply return the\\n            item in its original condition.\\n          </p>\\n          <p>\\n            Our hassle-free return process includes free return shipping and\\n            full refunds processed within 48 hours of receiving the returned\\n            item.\\n          </p>\\n        </AccordionContent>\\n      </AccordionItem>\\n    </Accordion>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\nimport { Accordion as AccordionPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Accordion({\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\\n  return <AccordionPrimitive.Root data-slot=\\\"accordion\\\" {...props} />\\n}\\n\\nfunction AccordionItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"border-b last:border-b-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <ChevronDownIcon className=\\\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200\\\" />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\\n  return (\\n    <AccordionPrimitive.Content\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\\\"\\n      {...props}\\n    >\\n      <div className={cn(\\\"pt-0 pb-4\\\", className)}>{children}</div>\\n    </AccordionPrimitive.Content>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/alert-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-demo\",\n  \"registryDependencies\": [\n    \"alert\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/alert-demo.tsx\",\n      \"content\": \"import { AlertCircleIcon, CheckCircle2Icon, PopcornIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Alert,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/new-york-v4/ui/alert\\\"\\n\\nexport default function AlertDemo() {\\n  return (\\n    <div className=\\\"grid w-full max-w-xl items-start gap-4\\\">\\n      <Alert>\\n        <CheckCircle2Icon />\\n        <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n        <AlertDescription>\\n          This is an alert with icon, title and description.\\n        </AlertDescription>\\n      </Alert>\\n      <Alert>\\n        <PopcornIcon />\\n        <AlertTitle>\\n          This Alert has a title and an icon. No description.\\n        </AlertTitle>\\n      </Alert>\\n      <Alert variant=\\\"destructive\\\">\\n        <AlertCircleIcon />\\n        <AlertTitle>Unable to process your payment.</AlertTitle>\\n        <AlertDescription>\\n          <p>Please verify your billing information and try again.</p>\\n          <ul className=\\\"list-inside list-disc text-sm\\\">\\n            <li>Check your card details</li>\\n            <li>Ensure sufficient funds</li>\\n            <li>Verify billing address</li>\\n          </ul>\\n        </AlertDescription>\\n      </Alert>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/alert-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-destructive\",\n  \"registryDependencies\": [\n    \"alert\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/alert-destructive.tsx\",\n      \"content\": \"import { AlertCircleIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Alert,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/new-york-v4/ui/alert\\\"\\n\\nexport default function AlertDestructive() {\\n  return (\\n    <Alert variant=\\\"destructive\\\">\\n      <AlertCircleIcon />\\n      <AlertTitle>Error</AlertTitle>\\n      <AlertDescription>\\n        Your session has expired. Please log in again.\\n      </AlertDescription>\\n    </Alert>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/alert-dialog-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/alert-dialog-demo.tsx\",\n      \"content\": \"import {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/new-york-v4/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function AlertDialogDemo() {\\n  return (\\n    <AlertDialog>\\n      <AlertDialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Show Dialog</Button>\\n      </AlertDialogTrigger>\\n      <AlertDialogContent>\\n        <AlertDialogHeader>\\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n          <AlertDialogDescription>\\n            This action cannot be undone. This will permanently delete your\\n            account and remove your data from our servers.\\n          </AlertDialogDescription>\\n        </AlertDialogHeader>\\n        <AlertDialogFooter>\\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\\n          <AlertDialogAction>Continue</AlertDialogAction>\\n        </AlertDialogFooter>\\n      </AlertDialogContent>\\n    </AlertDialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nfunction AlertDialog({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\\n  return (\\n    <AlertDialogPrimitive.Overlay\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Action\\n        data-slot=\\\"alert-dialog-action\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Cancel\\n        data-slot=\\\"alert-dialog-cancel\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/aspect-ratio-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-demo\",\n  \"registryDependencies\": [\n    \"aspect-ratio\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/aspect-ratio-demo.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport { AspectRatio } from \\\"@/registry/new-york-v4/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioDemo() {\\n  return (\\n    <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n      <Image\\n        src=\\\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\\\"\\n        alt=\\\"Photo by Drew Beamer\\\"\\n        fill\\n        className=\\\"h-full w-full rounded-lg object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n      />\\n    </AspectRatio>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { AspectRatio as AspectRatioPrimitive } from \\\"radix-ui\\\"\\n\\nfunction AspectRatio({\\n  ...props\\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\\n  return <AspectRatioPrimitive.Root data-slot=\\\"aspect-ratio\\\" {...props} />\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/avatar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-demo\",\n  \"registryDependencies\": [\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/avatar-demo.tsx\",\n      \"content\": \"import {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\n\\nexport default function AvatarDemo() {\\n  return (\\n    <div className=\\\"flex flex-row flex-wrap items-center gap-12\\\">\\n      <Avatar>\\n        <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n        <AvatarFallback>CN</AvatarFallback>\\n      </Avatar>\\n      <Avatar className=\\\"rounded-lg\\\">\\n        <AvatarImage\\n          src=\\\"https://github.com/evilrabbit.png\\\"\\n          alt=\\\"@evilrabbit\\\"\\n        />\\n        <AvatarFallback>ER</AvatarFallback>\\n      </Avatar>\\n      <div className=\\\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\\\">\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\\"aspect-square size-full\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarBadge,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/badge-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-demo\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/badge-demo.tsx\",\n      \"content\": \"import { AlertCircleIcon, BadgeCheckIcon, CheckIcon } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\"\\n\\nexport default function BadgeDemo() {\\n  return (\\n    <div className=\\\"flex flex-col items-center gap-2\\\">\\n      <div className=\\\"flex w-full flex-wrap gap-2\\\">\\n        <Badge>Badge</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n      </div>\\n      <div className=\\\"flex w-full flex-wrap gap-2\\\">\\n        <Badge\\n          variant=\\\"secondary\\\"\\n          className=\\\"bg-blue-500 text-white dark:bg-blue-600\\\"\\n        >\\n          <BadgeCheckIcon />\\n          Verified\\n        </Badge>\\n        <Badge className=\\\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\\\">\\n          8\\n        </Badge>\\n        <Badge\\n          className=\\\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\\\"\\n          variant=\\\"destructive\\\"\\n        >\\n          99\\n        </Badge>\\n        <Badge\\n          className=\\\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          20+\\n        </Badge>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/badge-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-destructive\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/badge-destructive.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\"\\n\\nexport default function BadgeDestructive() {\\n  return <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/badge-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-outline\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/badge-outline.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\"\\n\\nexport default function BadgeOutline() {\\n  return <Badge variant=\\\"outline\\\">Outline</Badge>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/badge-secondary.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-secondary\",\n  \"registryDependencies\": [\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/badge-secondary.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\"\\n\\nexport default function BadgeSecondary() {\\n  return <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/badge.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a&]:hover:bg-primary/90\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\\\",\\n        destructive:\\n          \\\"bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90\\\",\\n        outline:\\n          \\\"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\\\",\\n        ghost: \\\"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground\\\",\\n        link: \\\"text-primary underline-offset-4 [a&]:hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\n      data-variant={variant}\\n      className={cn(badgeVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/breadcrumb-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-demo\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/breadcrumb-demo.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbDemo() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger className=\\\"flex items-center gap-1\\\">\\n              <BreadcrumbEllipsis className=\\\"size-4\\\" />\\n              <span className=\\\"sr-only\\\">Toggle menu</span>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"start\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Themes</DropdownMenuItem>\\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/docs/components\\\">Components</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/breadcrumb-dropdown.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-dropdown\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/breadcrumb-dropdown.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\nimport { ChevronDownIcon, SlashIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbWithDropdown() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <SlashIcon />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger className=\\\"flex items-center gap-1 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\">\\n              Components\\n              <ChevronDownIcon />\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"start\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Themes</DropdownMenuItem>\\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <SlashIcon />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/breadcrumb-ellipsis.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-ellipsis\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/breadcrumb-ellipsis.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbCollapsed() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbEllipsis />\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/docs/components\\\">Components</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/breadcrumb-link.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-link\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/breadcrumb-link.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbWithCustomSeparator() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/components\\\">Components</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/breadcrumb-responsive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-responsive\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/breadcrumb-responsive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york-v4/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nconst items = [\\n  { href: \\\"#\\\", label: \\\"Home\\\" },\\n  { href: \\\"#\\\", label: \\\"Documentation\\\" },\\n  { href: \\\"#\\\", label: \\\"Build Your Application\\\" },\\n  { href: \\\"#\\\", label: \\\"Data Fetching\\\" },\\n  { label: \\\"Caching and Revalidating\\\" },\\n]\\n\\nconst ITEMS_TO_DISPLAY = 3\\n\\nexport default function BreadcrumbResponsive() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href={items[0].href ?? \\\"/\\\"}>{items[0].label}</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator />\\n        {items.length > ITEMS_TO_DISPLAY ? (\\n          <>\\n            <BreadcrumbItem>\\n              {isDesktop ? (\\n                <DropdownMenu open={open} onOpenChange={setOpen}>\\n                  <DropdownMenuTrigger\\n                    className=\\\"flex items-center gap-1\\\"\\n                    aria-label=\\\"Toggle menu\\\"\\n                  >\\n                    <BreadcrumbEllipsis className=\\\"size-4\\\" />\\n                  </DropdownMenuTrigger>\\n                  <DropdownMenuContent align=\\\"start\\\">\\n                    {items.slice(1, -2).map((item, index) => (\\n                      <DropdownMenuItem key={index}>\\n                        <Link href={item.href ? item.href : \\\"#\\\"}>\\n                          {item.label}\\n                        </Link>\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuContent>\\n                </DropdownMenu>\\n              ) : (\\n                <Drawer open={open} onOpenChange={setOpen}>\\n                  <DrawerTrigger aria-label=\\\"Toggle Menu\\\">\\n                    <BreadcrumbEllipsis className=\\\"h-4 w-4\\\" />\\n                  </DrawerTrigger>\\n                  <DrawerContent>\\n                    <DrawerHeader className=\\\"text-left\\\">\\n                      <DrawerTitle>Navigate to</DrawerTitle>\\n                      <DrawerDescription>\\n                        Select a page to navigate to.\\n                      </DrawerDescription>\\n                    </DrawerHeader>\\n                    <div className=\\\"grid gap-1 px-4\\\">\\n                      {items.slice(1, -2).map((item, index) => (\\n                        <Link\\n                          key={index}\\n                          href={item.href ? item.href : \\\"#\\\"}\\n                          className=\\\"py-1 text-sm\\\"\\n                        >\\n                          {item.label}\\n                        </Link>\\n                      ))}\\n                    </div>\\n                    <DrawerFooter className=\\\"pt-4\\\">\\n                      <DrawerClose asChild>\\n                        <Button variant=\\\"outline\\\">Close</Button>\\n                      </DrawerClose>\\n                    </DrawerFooter>\\n                  </DrawerContent>\\n                </Drawer>\\n              )}\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n          </>\\n        ) : null}\\n        {items.slice(-ITEMS_TO_DISPLAY + 1).map((item, index) => (\\n          <BreadcrumbItem key={index}>\\n            {item.href ? (\\n              <>\\n                <BreadcrumbLink\\n                  asChild\\n                  className=\\\"max-w-20 truncate md:max-w-none\\\"\\n                >\\n                  <Link href={item.href}>{item.label}</Link>\\n                </BreadcrumbLink>\\n                <BreadcrumbSeparator />\\n              </>\\n            ) : (\\n              <BreadcrumbPage className=\\\"max-w-20 truncate md:max-w-none\\\">\\n                {item.label}\\n              </BreadcrumbPage>\\n            )}\\n          </BreadcrumbItem>\\n        ))}\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/breadcrumb-separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-separator\",\n  \"registryDependencies\": [\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/breadcrumb-separator.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\nimport { SlashIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\n\\nexport default function BreadcrumbWithCustomSeparator() {\\n  return (\\n    <Breadcrumb>\\n      <BreadcrumbList>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/\\\">Home</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <SlashIcon />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbLink asChild>\\n            <Link href=\\\"/components\\\">Components</Link>\\n          </BreadcrumbLink>\\n        </BreadcrumbItem>\\n        <BreadcrumbSeparator>\\n          <SlashIcon />\\n        </BreadcrumbSeparator>\\n        <BreadcrumbItem>\\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n        </BreadcrumbItem>\\n      </BreadcrumbList>\\n    </Breadcrumb>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight, MoreHorizontal } from \\\"lucide-react\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Breadcrumb({ ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return <nav aria-label=\\\"breadcrumb\\\" data-slot=\\\"breadcrumb\\\" {...props} />\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-sm break-words text-muted-foreground sm:gap-2.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  asChild,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"transition-colors hover:text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? <ChevronRight />}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"flex size-9 items-center justify-center\\\", className)}\\n      {...props}\\n    >\\n      <MoreHorizontal className=\\\"size-4\\\" />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-as-child.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-as-child\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-as-child.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonAsChild() {\\n  return (\\n    <Button asChild>\\n      <Link href=\\\"/login\\\">Login</Link>\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-default\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-default.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonDefault() {\\n  return <Button>Button</Button>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-demo\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-demo.tsx\",\n      \"content\": \"import { ArrowUpIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonDemo() {\\n  return (\\n    <div className=\\\"flex flex-wrap items-center gap-2 md:flex-row\\\">\\n      <Button variant=\\\"outline\\\">Button</Button>\\n      <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"Submit\\\">\\n        <ArrowUpIcon />\\n      </Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-destructive\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-destructive.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonDestructive() {\\n  return <Button variant=\\\"destructive\\\">Destructive</Button>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-ghost.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-ghost\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-ghost.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonGhost() {\\n  return <Button variant=\\\"ghost\\\">Ghost</Button>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-demo\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArchiveIcon,\\n  ArrowLeftIcon,\\n  CalendarPlusIcon,\\n  ClockIcon,\\n  ListFilterIcon,\\n  MailCheckIcon,\\n  MoreHorizontalIcon,\\n  TagIcon,\\n  Trash2Icon,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nexport default function ButtonGroupDemo() {\\n  const [label, setLabel] = React.useState(\\\"personal\\\")\\n\\n  return (\\n    <ButtonGroup>\\n      <ButtonGroup className=\\\"hidden sm:flex\\\">\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"Go Back\\\">\\n          <ArrowLeftIcon />\\n        </Button>\\n      </ButtonGroup>\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">Archive</Button>\\n        <Button variant=\\\"outline\\\">Report</Button>\\n      </ButtonGroup>\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">Snooze</Button>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"More Options\\\">\\n              <MoreHorizontalIcon />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" className=\\\"w-52\\\">\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <MailCheckIcon />\\n                Mark as Read\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <ArchiveIcon />\\n                Archive\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <ClockIcon />\\n                Snooze\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CalendarPlusIcon />\\n                Add to Calendar\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <ListFilterIcon />\\n                Add to List\\n              </DropdownMenuItem>\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>\\n                  <TagIcon />\\n                  Label As...\\n                </DropdownMenuSubTrigger>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuRadioGroup\\n                    value={label}\\n                    onValueChange={setLabel}\\n                  >\\n                    <DropdownMenuRadioItem value=\\\"personal\\\">\\n                      Personal\\n                    </DropdownMenuRadioItem>\\n                    <DropdownMenuRadioItem value=\\\"work\\\">\\n                      Work\\n                    </DropdownMenuRadioItem>\\n                    <DropdownMenuRadioItem value=\\\"other\\\">\\n                      Other\\n                    </DropdownMenuRadioItem>\\n                  </DropdownMenuRadioGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuSub>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                <Trash2Icon />\\n                Trash\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </ButtonGroup>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-dropdown.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-dropdown\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-dropdown.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  AlertTriangleIcon,\\n  CheckIcon,\\n  ChevronDownIcon,\\n  CopyIcon,\\n  ShareIcon,\\n  TrashIcon,\\n  UserRoundXIcon,\\n  VolumeOffIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nexport default function ButtonGroupDropdown() {\\n  return (\\n    <ButtonGroup>\\n      <Button variant=\\\"outline\\\">Follow</Button>\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"pl-2!\\\">\\n            <ChevronDownIcon />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"[--radius:1rem]\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <VolumeOffIcon />\\n              Mute Conversation\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <CheckIcon />\\n              Mark as Read\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <AlertTriangleIcon />\\n              Report Conversation\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <UserRoundXIcon />\\n              Block User\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <ShareIcon />\\n              Share Conversation\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <CopyIcon />\\n              Copy Conversation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <TrashIcon />\\n              Delete Conversation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-input-group\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AudioLinesIcon, PlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tooltip\\\"\\n\\nexport default function ButtonGroupInputGroup() {\\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\\n\\n  return (\\n    <ButtonGroup className=\\\"[--radius:9999rem]\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n          <PlusIcon />\\n        </Button>\\n      </ButtonGroup>\\n      <ButtonGroup>\\n        <InputGroup>\\n          <InputGroupInput\\n            placeholder={\\n              voiceEnabled ? \\\"Record and send audio...\\\" : \\\"Send a message...\\\"\\n            }\\n            disabled={voiceEnabled}\\n          />\\n          <InputGroupAddon align=\\\"inline-end\\\">\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupButton\\n                  onClick={() => setVoiceEnabled(!voiceEnabled)}\\n                  size=\\\"icon-xs\\\"\\n                  data-active={voiceEnabled}\\n                  className=\\\"data-[active=true]:bg-orange-100 data-[active=true]:text-orange-700 dark:data-[active=true]:bg-orange-800 dark:data-[active=true]:text-orange-100\\\"\\n                  aria-pressed={voiceEnabled}\\n                >\\n                  <AudioLinesIcon />\\n                </InputGroupButton>\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </ButtonGroup>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-input\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-input.tsx\",\n      \"content\": \"import { SearchIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport default function ButtonGroupInput() {\\n  return (\\n    <ButtonGroup>\\n      <Input placeholder=\\\"Search...\\\" />\\n      <Button variant=\\\"outline\\\" aria-label=\\\"Search\\\">\\n        <SearchIcon />\\n      </Button>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-nested.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-nested\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-nested.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowLeftIcon, ArrowRightIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\n\\nexport default function ButtonGroupNested() {\\n  return (\\n    <ButtonGroup>\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n      </ButtonGroup>\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Previous\\\">\\n          <ArrowLeftIcon />\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Next\\\">\\n          <ArrowRightIcon />\\n        </Button>\\n      </ButtonGroup>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-orientation.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-orientation\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-orientation.tsx\",\n      \"content\": \"import { MinusIcon, PlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\n\\nexport default function ButtonGroupOrientation() {\\n  return (\\n    <ButtonGroup\\n      orientation=\\\"vertical\\\"\\n      aria-label=\\\"Media controls\\\"\\n      className=\\\"h-fit\\\"\\n    >\\n      <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n        <PlusIcon />\\n      </Button>\\n      <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n        <MinusIcon />\\n      </Button>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-popover\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-popover.tsx\",\n      \"content\": \"import { BotIcon, ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function ButtonGroupPopover() {\\n  return (\\n    <ButtonGroup>\\n      <Button variant=\\\"outline\\\">\\n        <BotIcon /> Copilot\\n      </Button>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"Open Popover\\\">\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"end\\\" className=\\\"rounded-xl p-0 text-sm\\\">\\n          <div className=\\\"px-4 py-3\\\">\\n            <div className=\\\"text-sm font-medium\\\">Agent Tasks</div>\\n          </div>\\n          <Separator />\\n          <div className=\\\"p-4 text-sm *:[p:not(:last-child)]:mb-2\\\">\\n            <Textarea\\n              placeholder=\\\"Describe your task in natural language.\\\"\\n              className=\\\"mb-4 resize-none\\\"\\n            />\\n            <p className=\\\"font-medium\\\">Start a new task with Copilot</p>\\n            <p className=\\\"text-muted-foreground\\\">\\n              Describe your task in natural language. Copilot will work in the\\n              background and open a pull request for your review.\\n            </p>\\n          </div>\\n        </PopoverContent>\\n      </Popover>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-select\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ArrowRightIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nconst CURRENCIES = [\\n  {\\n    value: \\\"$\\\",\\n    label: \\\"US Dollar\\\",\\n  },\\n  {\\n    value: \\\"€\\\",\\n    label: \\\"Euro\\\",\\n  },\\n  {\\n    value: \\\"£\\\",\\n    label: \\\"British Pound\\\",\\n  },\\n]\\n\\nexport default function ButtonGroupSelect() {\\n  const [currency, setCurrency] = React.useState(\\\"$\\\")\\n\\n  return (\\n    <ButtonGroup>\\n      <ButtonGroup>\\n        <Select value={currency} onValueChange={setCurrency}>\\n          <SelectTrigger className=\\\"font-mono\\\">{currency}</SelectTrigger>\\n          <SelectContent className=\\\"min-w-24\\\">\\n            {CURRENCIES.map((currency) => (\\n              <SelectItem key={currency.value} value={currency.value}>\\n                {currency.value}{\\\" \\\"}\\n                <span className=\\\"text-muted-foreground\\\">{currency.label}</span>\\n              </SelectItem>\\n            ))}\\n          </SelectContent>\\n        </Select>\\n        <Input placeholder=\\\"10.00\\\" pattern=\\\"[0-9]*\\\" />\\n      </ButtonGroup>\\n      <ButtonGroup>\\n        <Button aria-label=\\\"Send\\\" size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <ArrowRightIcon />\\n        </Button>\\n      </ButtonGroup>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-separator\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-separator.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n} from \\\"@/registry/new-york-v4/ui/button-group\\\"\\n\\nexport default function ButtonGroupSeparatorDemo() {\\n  return (\\n    <ButtonGroup>\\n      <Button variant=\\\"secondary\\\" size=\\\"sm\\\">\\n        Copy\\n      </Button>\\n      <ButtonGroupSeparator />\\n      <Button variant=\\\"secondary\\\" size=\\\"sm\\\">\\n        Paste\\n      </Button>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-size.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-size\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-size.tsx\",\n      \"content\": \"import { PlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\n\\nexport default function ButtonGroupSize() {\\n  return (\\n    <div className=\\\"flex flex-col items-start gap-8\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Small\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Button\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Group\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n          <PlusIcon />\\n        </Button>\\n      </ButtonGroup>\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">Default</Button>\\n        <Button variant=\\\"outline\\\">Button</Button>\\n        <Button variant=\\\"outline\\\">Group</Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n          <PlusIcon />\\n        </Button>\\n      </ButtonGroup>\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"lg\\\">\\n          Large\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"lg\\\">\\n          Button\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"lg\\\">\\n          Group\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n          <PlusIcon />\\n        </Button>\\n      </ButtonGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group-split.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-split\",\n  \"registryDependencies\": [\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-group-split.tsx\",\n      \"content\": \"import { IconPlus } from \\\"@tabler/icons-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n} from \\\"@/registry/new-york-v4/ui/button-group\\\"\\n\\nexport default function ButtonGroupSplit() {\\n  return (\\n    <ButtonGroup>\\n      <Button variant=\\\"secondary\\\">Button</Button>\\n      <ButtonGroupSeparator />\\n      <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n        <IconPlus />\\n      </Button>\\n    </ButtonGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/button-group.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\\\",\\n        vertical:\\n          \\\"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-md border bg-muted px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative m-0! self-stretch bg-input data-[orientation=vertical]:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-icon\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-icon.tsx\",\n      \"content\": \"import { CircleFadingArrowUpIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonIcon() {\\n  return (\\n    <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n      <CircleFadingArrowUpIcon />\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-link.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-link\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-link.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonLink() {\\n  return <Button variant=\\\"link\\\">Link</Button>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-loading.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-loading\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-loading.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function ButtonLoading() {\\n  return (\\n    <Button size=\\\"sm\\\" variant=\\\"outline\\\" disabled>\\n      <Spinner />\\n      Submit\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-outline\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-outline.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonOutline() {\\n  return <Button variant=\\\"outline\\\">Outline</Button>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-rounded.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-rounded\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-rounded.tsx\",\n      \"content\": \"import { ArrowUpIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonRounded() {\\n  return (\\n    <div className=\\\"flex flex-col gap-8\\\">\\n      <Button variant=\\\"outline\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\">\\n        <ArrowUpIcon />\\n      </Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-secondary.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-secondary\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-secondary.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonSecondary() {\\n  return <Button variant=\\\"secondary\\\">Secondary</Button>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-size.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-size\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-size.tsx\",\n      \"content\": \"import { ArrowUpRightIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonSize() {\\n  return (\\n    <div className=\\\"flex flex-col items-start gap-8 sm:flex-row\\\">\\n      <div className=\\\"flex items-start gap-2\\\">\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Small\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" aria-label=\\\"Submit\\\" variant=\\\"outline\\\">\\n          <ArrowUpRightIcon />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex items-start gap-2\\\">\\n        <Button variant=\\\"outline\\\">Default</Button>\\n        <Button size=\\\"icon\\\" aria-label=\\\"Submit\\\" variant=\\\"outline\\\">\\n          <ArrowUpRightIcon />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex items-start gap-2\\\">\\n        <Button variant=\\\"outline\\\" size=\\\"lg\\\">\\n          Large\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" aria-label=\\\"Submit\\\" variant=\\\"outline\\\">\\n          <ArrowUpRightIcon />\\n        </Button>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button-with-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-with-icon\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/button-with-icon.tsx\",\n      \"content\": \"import { IconGitBranch } from \\\"@tabler/icons-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ButtonWithIcon() {\\n  return (\\n    <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n      <IconGitBranch /> New Branch\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/button.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground hover:bg-primary/90\\\",\\n        destructive:\\n          \\\"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\\\",\\n        outline:\\n          \\\"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80\\\",\\n        ghost:\\n          \\\"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 px-4 py-2 has-[>svg]:px-3\\\",\\n        xs: \\\"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\\\",\\n        lg: \\\"h-10 rounded-md px-6 has-[>svg]:px-4\\\",\\n        icon: \\\"size-9\\\",\\n        \\\"icon-xs\\\": \\\"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\": \\\"size-8\\\",\\n        \\\"icon-lg\\\": \\\"size-10\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"button\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-01\",\n  \"description\": \"A simple calendar.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-01.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar01() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-02\",\n  \"description\": \"Multiple months with single selection.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-02.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar02() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      numberOfMonths={2}\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-03\",\n  \"description\": \"Multiple months with multiple selection.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-03.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar03() {\\n  const [dates, setDates] = React.useState<Date[]>([\\n    new Date(2025, 5, 12),\\n    new Date(2025, 6, 24),\\n  ])\\n\\n  return (\\n    <Calendar\\n      mode=\\\"multiple\\\"\\n      numberOfMonths={2}\\n      defaultMonth={dates[0]}\\n      required\\n      selected={dates}\\n      onSelect={setDates}\\n      max={5}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-04\",\n  \"description\": \"Single month with range selection\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-04.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar04() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 9),\\n    to: new Date(2025, 5, 26),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0 xl:pt-28\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-05\",\n  \"description\": \"Multiple months with range selection\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-05.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar05() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 6, 15),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      numberOfMonths={2}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-06\",\n  \"description\": \"Range selection with minimum days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-06.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar06() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 5, 26),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        defaultMonth={dateRange?.from}\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={1}\\n        min={5}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        A minimum of 5 days is required\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-07\",\n  \"description\": \"Range selection with minimum and maximum days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-07.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar07() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 18),\\n    to: new Date(2025, 6, 7),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        defaultMonth={dateRange?.from}\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={2}\\n        min={2}\\n        max={20}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        Your stay must be between 2 and 20 nights\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-08\",\n  \"description\": \"Calendar with disabled days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-08.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar08() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      disabled={{\\n        before: new Date(2025, 5, 12),\\n      }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-09\",\n  \"description\": \"Calendar with disabled weekends\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-09.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar09() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 17),\\n    to: new Date(2025, 5, 20),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      numberOfMonths={2}\\n      disabled={{ dayOfWeek: [0, 6] }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n      excludeDisabled\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-10\",\n  \"description\": \"Today button\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-10.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\n\\nexport default function Calendar10() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(new Date())\\n\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Appointment</CardTitle>\\n        <CardDescription>Find a date</CardDescription>\\n        <CardAction>\\n          <Button\\n            size=\\\"sm\\\"\\n            variant=\\\"outline\\\"\\n            onClick={() => {\\n              setMonth(new Date())\\n              setDate(new Date())\\n            }}\\n          >\\n            Today\\n          </Button>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          month={month}\\n          onMonthChange={setMonth}\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n        />\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-11\",\n  \"description\": \"Start and end of month\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-11.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar11() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 17),\\n    to: new Date(2025, 5, 20),\\n  })\\n\\n  return (\\n    <div className=\\\"flex min-w-0 flex-col gap-2\\\">\\n      <Calendar\\n        mode=\\\"range\\\"\\n        selected={dateRange}\\n        onSelect={setDateRange}\\n        numberOfMonths={2}\\n        startMonth={new Date(2025, 5, 1)}\\n        endMonth={new Date(2025, 6, 31)}\\n        disableNavigation\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"text-muted-foreground text-center text-xs\\\">\\n        We are open in June and July only.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-12\",\n  \"description\": \"Localized calendar\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-12.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { enUS, es } from \\\"react-day-picker/locale\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nconst localizedStrings = {\\n  en: {\\n    title: \\\"Book an appointment\\\",\\n    description: \\\"Select the dates for your appointment\\\",\\n  },\\n  es: {\\n    title: \\\"Reserva una cita\\\",\\n    description: \\\"Selecciona las fechas para tu cita\\\",\\n  },\\n} as const\\n\\nexport default function Calendar12() {\\n  const [locale, setLocale] =\\n    React.useState<keyof typeof localizedStrings>(\\\"es\\\")\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 8, 9),\\n    to: new Date(2025, 8, 17),\\n  })\\n\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"border-b\\\">\\n        <CardTitle>{localizedStrings[locale].title}</CardTitle>\\n        <CardDescription>\\n          {localizedStrings[locale].description}\\n        </CardDescription>\\n        <CardAction>\\n          <Select\\n            value={locale}\\n            onValueChange={(value) =>\\n              setLocale(value as keyof typeof localizedStrings)\\n            }\\n          >\\n            <SelectTrigger className=\\\"w-[100px]\\\">\\n              <SelectValue placeholder=\\\"Language\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectItem value=\\\"es\\\">Español</SelectItem>\\n              <SelectItem value=\\\"en\\\">English</SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent>\\n        <Calendar\\n          mode=\\\"range\\\"\\n          selected={dateRange}\\n          onSelect={setDateRange}\\n          defaultMonth={dateRange?.from}\\n          numberOfMonths={2}\\n          locale={locale === \\\"es\\\" ? es : enUS}\\n          className=\\\"bg-transparent p-0\\\"\\n          buttonVariant=\\\"outline\\\"\\n        />\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-13\",\n  \"description\": \"With Month and Year Dropdown\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"label\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-13.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport default function Calendar13() {\\n  const [dropdown, setDropdown] =\\n    React.useState<React.ComponentProps<typeof Calendar>[\\\"captionLayout\\\"]>(\\n      \\\"dropdown\\\"\\n    )\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-4\\\">\\n      <Calendar\\n        mode=\\\"single\\\"\\n        defaultMonth={date}\\n        selected={date}\\n        onSelect={setDate}\\n        captionLayout={dropdown}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"dropdown\\\" className=\\\"px-1\\\">\\n          Dropdown\\n        </Label>\\n        <Select\\n          value={dropdown}\\n          onValueChange={(value) =>\\n            setDropdown(\\n              value as React.ComponentProps<typeof Calendar>[\\\"captionLayout\\\"]\\n            )\\n          }\\n        >\\n          <SelectTrigger\\n            id=\\\"dropdown\\\"\\n            size=\\\"sm\\\"\\n            className=\\\"bg-background w-full\\\"\\n          >\\n            <SelectValue placeholder=\\\"Dropdown\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"center\\\">\\n            <SelectItem value=\\\"dropdown\\\">Month and Year</SelectItem>\\n            <SelectItem value=\\\"dropdown-months\\\">Month Only</SelectItem>\\n            <SelectItem value=\\\"dropdown-years\\\">Year Only</SelectItem>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-14\",\n  \"description\": \"With Booked/Unavailable Days\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-14.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar14() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 12 },\\n    (_, i) => new Date(2025, 5, 15 + i)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      defaultMonth={date}\\n      selected={date}\\n      onSelect={setDate}\\n      disabled={bookedDates}\\n      modifiers={{\\n        booked: bookedDates,\\n      }}\\n      modifiersClassNames={{\\n        booked: \\\"[&>button]:line-through opacity-100\\\",\\n      }}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-15\",\n  \"description\": \"With Week Numbers\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-15.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar15() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 5, 23),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={dateRange?.from}\\n      selected={dateRange}\\n      onSelect={setDateRange}\\n      className=\\\"rounded-lg border shadow-sm\\\"\\n      showWeekNumber\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-16\",\n  \"description\": \"With time picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-16.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Clock2Icon } from \\\"lucide-react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function Calendar16() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col gap-6 border-t px-4 !pt-4\\\">\\n        <div className=\\\"flex w-full flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\">Start Time</Label>\\n          <div className=\\\"relative flex w-full items-center gap-2\\\">\\n            <Clock2Icon className=\\\"text-muted-foreground pointer-events-none absolute left-2.5 size-4 select-none\\\" />\\n            <Input\\n              id=\\\"time-from\\\"\\n              type=\\\"time\\\"\\n              step=\\\"1\\\"\\n              defaultValue=\\\"10:30:00\\\"\\n              className=\\\"appearance-none pl-8 [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n            />\\n          </div>\\n        </div>\\n        <div className=\\\"flex w-full flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\">End Time</Label>\\n          <div className=\\\"relative flex w-full items-center gap-2\\\">\\n            <Clock2Icon className=\\\"text-muted-foreground pointer-events-none absolute left-2.5 size-4 select-none\\\" />\\n            <Input\\n              id=\\\"time-to\\\"\\n              type=\\\"time\\\"\\n              step=\\\"1\\\"\\n              defaultValue=\\\"12:30:00\\\"\\n              className=\\\"appearance-none pl-8 [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n            />\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-17.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-17\",\n  \"description\": \"With time picker inline\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-17.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function Calendar17() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0 [--cell-size:--spacing(10.5)]\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex gap-2 border-t px-4 !pt-4 *:[div]:w-full\\\">\\n        <div>\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"sr-only\\\">\\n            Start Time\\n          </Label>\\n          <Input\\n            id=\\\"time-from\\\"\\n            type=\\\"time\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n        <span>-</span>\\n        <div>\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"sr-only\\\">\\n            End Time\\n          </Label>\\n          <Input\\n            id=\\\"time-to\\\"\\n            type=\\\"time\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-18.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-18\",\n  \"description\": \"Variable size\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-18.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar18() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-lg border [--cell-size:--spacing(11)] md:[--cell-size:--spacing(12)]\\\"\\n      buttonVariant=\\\"ghost\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-19.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-19\",\n  \"description\": \"With presets\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-19.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays } from \\\"date-fns\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york-v4/ui/card\\\"\\n\\nexport default function Calendar19() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"max-w-[300px] py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          defaultMonth={date}\\n          className=\\\"bg-transparent p-0 [--cell-size:--spacing(9.5)]\\\"\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-wrap gap-2 border-t px-4 !pt-4\\\">\\n        {[\\n          { label: \\\"Today\\\", value: 0 },\\n          { label: \\\"Tomorrow\\\", value: 1 },\\n          { label: \\\"In 3 days\\\", value: 3 },\\n          { label: \\\"In a week\\\", value: 7 },\\n          { label: \\\"In 2 weeks\\\", value: 14 },\\n        ].map((preset) => (\\n          <Button\\n            key={preset.value}\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            className=\\\"flex-1\\\"\\n            onClick={() => {\\n              const newDate = addDays(new Date(), preset.value)\\n              setDate(newDate)\\n            }}\\n          >\\n            {preset.label}\\n          </Button>\\n        ))}\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-20.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-20\",\n  \"description\": \"With time presets\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-20.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york-v4/ui/card\\\"\\n\\nexport default function Calendar20() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n  const [selectedTime, setSelectedTime] = React.useState<string | null>(\\\"10:00\\\")\\n  const timeSlots = Array.from({ length: 37 }, (_, i) => {\\n    const totalMinutes = i * 15\\n    const hour = Math.floor(totalMinutes / 60) + 9\\n    const minute = totalMinutes % 60\\n    return `${hour.toString().padStart(2, \\\"0\\\")}:${minute.toString().padStart(2, \\\"0\\\")}`\\n  })\\n\\n  const bookedDates = Array.from(\\n    { length: 3 },\\n    (_, i) => new Date(2025, 5, 17 + i)\\n  )\\n\\n  return (\\n    <Card className=\\\"gap-0 p-0\\\">\\n      <CardContent className=\\\"relative p-0 md:pr-48\\\">\\n        <div className=\\\"p-6\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            defaultMonth={date}\\n            disabled={bookedDates}\\n            showOutsideDays={false}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n            className=\\\"bg-transparent p-0 [--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatWeekdayName: (date) => {\\n                return date.toLocaleString(\\\"en-US\\\", { weekday: \\\"short\\\" })\\n              },\\n            }}\\n          />\\n        </div>\\n        <div className=\\\"no-scrollbar inset-y-0 right-0 flex max-h-72 w-full scroll-pb-6 flex-col gap-4 overflow-y-auto border-t p-6 md:absolute md:max-h-none md:w-48 md:border-t-0 md:border-l\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            {timeSlots.map((time) => (\\n              <Button\\n                key={time}\\n                variant={selectedTime === time ? \\\"default\\\" : \\\"outline\\\"}\\n                onClick={() => setSelectedTime(time)}\\n                className=\\\"w-full shadow-none\\\"\\n              >\\n                {time}\\n              </Button>\\n            ))}\\n          </div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col gap-4 border-t px-6 !py-5 md:flex-row\\\">\\n        <div className=\\\"text-sm\\\">\\n          {date && selectedTime ? (\\n            <>\\n              Your meeting is booked for{\\\" \\\"}\\n              <span className=\\\"font-medium\\\">\\n                {\\\" \\\"}\\n                {date?.toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"long\\\",\\n                  day: \\\"numeric\\\",\\n                  month: \\\"long\\\",\\n                })}{\\\" \\\"}\\n              </span>\\n              at <span className=\\\"font-medium\\\">{selectedTime}</span>.\\n            </>\\n          ) : (\\n            <>Select a date and time for your meeting.</>\\n          )}\\n        </div>\\n        <Button\\n          disabled={!date || !selectedTime}\\n          className=\\\"w-full md:ml-auto md:w-auto\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          Continue\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-21.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-21\",\n  \"description\": \"Custom days and formatters\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-21.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function Calendar21() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 12),\\n    to: new Date(2025, 5, 17),\\n  })\\n\\n  return (\\n    <Calendar\\n      mode=\\\"range\\\"\\n      defaultMonth={range?.from}\\n      selected={range}\\n      onSelect={setRange}\\n      numberOfMonths={1}\\n      captionLayout=\\\"dropdown\\\"\\n      className=\\\"rounded-lg border shadow-sm [--cell-size:--spacing(11)] md:[--cell-size:--spacing(13)]\\\"\\n      formatters={{\\n        formatMonthDropdown: (date) => {\\n          return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n        },\\n      }}\\n      components={{\\n        DayButton: ({ children, modifiers, day, ...props }) => {\\n          const isWeekend = day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n          return (\\n            <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n              {children}\\n              {!modifiers.outside && <span>{isWeekend ? \\\"$220\\\" : \\\"$100\\\"}</span>}\\n            </CalendarDayButton>\\n          )\\n        },\\n      }}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-22.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-22\",\n  \"description\": \"Date picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-22.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function Calendar22() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Date of birth\\n      </Label>\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"date\\\"\\n            className=\\\"w-48 justify-between font-normal\\\"\\n          >\\n            {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(date) => {\\n              setDate(date)\\n              setOpen(false)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-23.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-23\",\n  \"description\": \"Date range picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-23.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function Calendar23() {\\n  const [range, setRange] = React.useState<DateRange | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"dates\\\" className=\\\"px-1\\\">\\n        Select your stay\\n      </Label>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"dates\\\"\\n            className=\\\"w-56 justify-between font-normal\\\"\\n          >\\n            {range?.from && range?.to\\n              ? `${range.from.toLocaleDateString()} - ${range.to.toLocaleDateString()}`\\n              : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            selected={range}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(range) => {\\n              setRange(range)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-24.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-24\",\n  \"description\": \"Date and Time picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-24.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function Calendar24() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex gap-4\\\">\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"date-picker\\\" className=\\\"px-1\\\">\\n          Date\\n        </Label>\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker\\\"\\n              className=\\\"w-32 justify-between font-normal\\\"\\n            >\\n              {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n              <ChevronDownIcon />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              onSelect={(date) => {\\n                setDate(date)\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"time-picker\\\" className=\\\"px-1\\\">\\n          Time\\n        </Label>\\n        <Input\\n          type=\\\"time\\\"\\n          id=\\\"time-picker\\\"\\n          step=\\\"1\\\"\\n          defaultValue=\\\"10:30:00\\\"\\n          className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-25.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-25\",\n  \"description\": \"Date and Time range picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-25.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function Calendar25() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-6\\\">\\n      <div className=\\\"flex flex-col gap-3\\\">\\n        <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n          Date\\n        </Label>\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date\\\"\\n              className=\\\"w-full justify-between font-normal\\\"\\n            >\\n              {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n              <ChevronDownIcon />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              onSelect={(date) => {\\n                setDate(date)\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"px-1\\\">\\n            From\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-from\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"px-1\\\">\\n            To\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-to\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-26.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-26\",\n  \"description\": \"Date range picker with time\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"popover\",\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-26.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function Calendar26() {\\n  const [openFrom, setOpenFrom] = React.useState(false)\\n  const [openTo, setOpenTo] = React.useState(false)\\n  const [dateFrom, setDateFrom] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-01\\\")\\n  )\\n  const [dateTo, setDateTo] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-03\\\")\\n  )\\n\\n  return (\\n    <div className=\\\"flex w-full max-w-64 min-w-0 flex-col gap-6\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-1 flex-col gap-3\\\">\\n          <Label htmlFor=\\\"date-from\\\" className=\\\"px-1\\\">\\n            Check-in\\n          </Label>\\n          <Popover open={openFrom} onOpenChange={setOpenFrom}>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-from\\\"\\n                className=\\\"w-full justify-between font-normal\\\"\\n              >\\n                {dateFrom\\n                  ? dateFrom.toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"2-digit\\\",\\n                      month: \\\"short\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  : \\\"Select date\\\"}\\n                <ChevronDownIcon />\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent\\n              className=\\\"w-auto overflow-hidden p-0\\\"\\n              align=\\\"start\\\"\\n            >\\n              <Calendar\\n                mode=\\\"single\\\"\\n                selected={dateFrom}\\n                captionLayout=\\\"dropdown\\\"\\n                onSelect={(date) => {\\n                  setDateFrom(date)\\n                  setOpenFrom(false)\\n                }}\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-from\\\" className=\\\"invisible px-1\\\">\\n            From\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-from\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"10:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n      <div className=\\\"flex gap-4\\\">\\n        <div className=\\\"flex flex-1 flex-col gap-3\\\">\\n          <Label htmlFor=\\\"date-to\\\" className=\\\"px-1\\\">\\n            Check-out\\n          </Label>\\n          <Popover open={openTo} onOpenChange={setOpenTo}>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                id=\\\"date-to\\\"\\n                className=\\\"w-full justify-between font-normal\\\"\\n              >\\n                {dateTo\\n                  ? dateTo.toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"2-digit\\\",\\n                      month: \\\"short\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  : \\\"Select date\\\"}\\n                <ChevronDownIcon />\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent\\n              className=\\\"w-auto overflow-hidden p-0\\\"\\n              align=\\\"start\\\"\\n            >\\n              <Calendar\\n                mode=\\\"single\\\"\\n                selected={dateTo}\\n                captionLayout=\\\"dropdown\\\"\\n                onSelect={(date) => {\\n                  setDateTo(date)\\n                  setOpenTo(false)\\n                }}\\n                disabled={dateFrom && { before: dateFrom }}\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Label htmlFor=\\\"time-to\\\" className=\\\"invisible px-1\\\">\\n            To\\n          </Label>\\n          <Input\\n            type=\\\"time\\\"\\n            id=\\\"time-to\\\"\\n            step=\\\"1\\\"\\n            defaultValue=\\\"12:30:00\\\"\\n            className=\\\"bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-27.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-27\",\n  \"description\": \"Chart filter\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"chart\",\n    \"card\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-27.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nconst chartData = [\\n  { date: \\\"2025-06-01\\\", visitors: 178 },\\n  { date: \\\"2025-06-02\\\", visitors: 470 },\\n  { date: \\\"2025-06-03\\\", visitors: 103 },\\n  { date: \\\"2025-06-04\\\", visitors: 439 },\\n  { date: \\\"2025-06-05\\\", visitors: 88 },\\n  { date: \\\"2025-06-06\\\", visitors: 294 },\\n  { date: \\\"2025-06-07\\\", visitors: 323 },\\n  { date: \\\"2025-06-08\\\", visitors: 385 },\\n  { date: \\\"2025-06-09\\\", visitors: 438 },\\n  { date: \\\"2025-06-10\\\", visitors: 155 },\\n  { date: \\\"2025-06-11\\\", visitors: 92 },\\n  { date: \\\"2025-06-12\\\", visitors: 492 },\\n  { date: \\\"2025-06-13\\\", visitors: 81 },\\n  { date: \\\"2025-06-14\\\", visitors: 426 },\\n  { date: \\\"2025-06-15\\\", visitors: 307 },\\n  { date: \\\"2025-06-16\\\", visitors: 371 },\\n  { date: \\\"2025-06-17\\\", visitors: 475 },\\n  { date: \\\"2025-06-18\\\", visitors: 107 },\\n  { date: \\\"2025-06-19\\\", visitors: 341 },\\n  { date: \\\"2025-06-20\\\", visitors: 408 },\\n  { date: \\\"2025-06-21\\\", visitors: 169 },\\n  { date: \\\"2025-06-22\\\", visitors: 317 },\\n  { date: \\\"2025-06-23\\\", visitors: 480 },\\n  { date: \\\"2025-06-24\\\", visitors: 132 },\\n  { date: \\\"2025-06-25\\\", visitors: 141 },\\n  { date: \\\"2025-06-26\\\", visitors: 434 },\\n  { date: \\\"2025-06-27\\\", visitors: 448 },\\n  { date: \\\"2025-06-28\\\", visitors: 149 },\\n  { date: \\\"2025-06-29\\\", visitors: 103 },\\n  { date: \\\"2025-06-30\\\", visitors: 446 },\\n]\\n\\nconst total = chartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"var(--color-primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Calendar27() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 5),\\n    to: new Date(2025, 5, 20),\\n  })\\n  const filteredData = React.useMemo(() => {\\n    if (!range?.from && !range?.to) {\\n      return chartData\\n    }\\n\\n    return chartData.filter((item) => {\\n      const date = new Date(item.date)\\n      return date >= range.from! && date <= range.to!\\n    })\\n  }, [range])\\n\\n  return (\\n    <Card className=\\\"@container/card w-full max-w-xl\\\">\\n      <CardHeader className=\\\"flex flex-col border-b @md/card:grid\\\">\\n        <CardTitle>Web Analytics</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for this month.\\n        </CardDescription>\\n        <CardAction className=\\\"mt-2 @md/card:mt-0\\\">\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button variant=\\\"outline\\\">\\n                <CalendarIcon />\\n                {range?.from && range?.to\\n                  ? `${range.from.toLocaleDateString()} - ${range.to.toLocaleDateString()}`\\n                  : \\\"June 2025\\\"}\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"end\\\">\\n              <Calendar\\n                className=\\\"w-full\\\"\\n                mode=\\\"range\\\"\\n                defaultMonth={range?.from}\\n                selected={range}\\n                onSelect={setRange}\\n                disableNavigation\\n                startMonth={range?.from}\\n                fixedWeeks\\n                showOutsideDays\\n                disabled={{\\n                  after: new Date(2025, 5, 31),\\n                }}\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <BarChart\\n            accessibilityLayer\\n            data={filteredData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={20}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Bar dataKey=\\\"visitors\\\" fill={`var(--color-visitors)`} radius={4} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"border-t\\\">\\n        <div className=\\\"text-sm\\\">\\n          You had{\\\" \\\"}\\n          <span className=\\\"font-semibold\\\">{total.toLocaleString()}</span>{\\\" \\\"}\\n          visitors for the month of June.\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-28.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-28\",\n  \"description\": \"Input with date picker\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-28.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nfunction formatDate(date: Date | undefined) {\\n  if (!date) {\\n    return \\\"\\\"\\n  }\\n\\n  return date.toLocaleDateString(\\\"en-US\\\", {\\n    day: \\\"2-digit\\\",\\n    month: \\\"long\\\",\\n    year: \\\"numeric\\\",\\n  })\\n}\\n\\nfunction isValidDate(date: Date | undefined) {\\n  if (!date) {\\n    return false\\n  }\\n  return !isNaN(date.getTime())\\n}\\n\\nexport default function Calendar28() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(\\\"2025-06-01\\\")\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(date)\\n  const [value, setValue] = React.useState(formatDate(date))\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Subscription Date\\n      </Label>\\n      <div className=\\\"relative flex gap-2\\\">\\n        <Input\\n          id=\\\"date\\\"\\n          value={value}\\n          placeholder=\\\"June 01, 2025\\\"\\n          className=\\\"bg-background pr-10\\\"\\n          onChange={(e) => {\\n            const date = new Date(e.target.value)\\n            setValue(e.target.value)\\n            if (isValidDate(date)) {\\n              setDate(date)\\n              setMonth(date)\\n            }\\n          }}\\n          onKeyDown={(e) => {\\n            if (e.key === \\\"ArrowDown\\\") {\\n              e.preventDefault()\\n              setOpen(true)\\n            }\\n          }}\\n        />\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker\\\"\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-1/2 right-2 size-6 -translate-y-1/2\\\"\\n            >\\n              <CalendarIcon className=\\\"size-3.5\\\" />\\n              <span className=\\\"sr-only\\\">Select date</span>\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent\\n            className=\\\"w-auto overflow-hidden p-0\\\"\\n            align=\\\"end\\\"\\n            alignOffset={-8}\\n            sideOffset={10}\\n          >\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              month={month}\\n              onMonthChange={setMonth}\\n              onSelect={(date) => {\\n                setDate(date)\\n                setValue(formatDate(date))\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-29.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-29\",\n  \"description\": \"Natural language date picker\",\n  \"dependencies\": [\n    \"chrono-node\"\n  ],\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-29.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { parseDate } from \\\"chrono-node\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nfunction formatDate(date: Date | undefined) {\\n  if (!date) {\\n    return \\\"\\\"\\n  }\\n\\n  return date.toLocaleDateString(\\\"en-US\\\", {\\n    day: \\\"2-digit\\\",\\n    month: \\\"long\\\",\\n    year: \\\"numeric\\\",\\n  })\\n}\\n\\nexport default function Calendar29() {\\n  const [open, setOpen] = React.useState(false)\\n  const [value, setValue] = React.useState(\\\"In 2 days\\\")\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    parseDate(value) || undefined\\n  )\\n  const [month, setMonth] = React.useState<Date | undefined>(date)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Schedule Date\\n      </Label>\\n      <div className=\\\"relative flex gap-2\\\">\\n        <Input\\n          id=\\\"date\\\"\\n          value={value}\\n          placeholder=\\\"Tomorrow or next week\\\"\\n          className=\\\"bg-background pr-10\\\"\\n          onChange={(e) => {\\n            setValue(e.target.value)\\n            const date = parseDate(e.target.value)\\n            if (date) {\\n              setDate(date)\\n              setMonth(date)\\n            }\\n          }}\\n          onKeyDown={(e) => {\\n            if (e.key === \\\"ArrowDown\\\") {\\n              e.preventDefault()\\n              setOpen(true)\\n            }\\n          }}\\n        />\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker\\\"\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-1/2 right-2 size-6 -translate-y-1/2\\\"\\n            >\\n              <CalendarIcon className=\\\"size-3.5\\\" />\\n              <span className=\\\"sr-only\\\">Select date</span>\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"end\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              captionLayout=\\\"dropdown\\\"\\n              month={month}\\n              onMonthChange={setMonth}\\n              onSelect={(date) => {\\n                setDate(date)\\n                setValue(formatDate(date))\\n                setOpen(false)\\n              }}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n      <div className=\\\"text-muted-foreground px-1 text-sm\\\">\\n        Your post will be published on{\\\" \\\"}\\n        <span className=\\\"font-medium\\\">{formatDate(date)}</span>.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-30.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-30\",\n  \"description\": \"With little-date\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-30.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { formatDateRange } from \\\"little-date\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function Calendar30() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(2025, 5, 4),\\n    to: new Date(2025, 5, 10),\\n  })\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"dates\\\" className=\\\"px-1\\\">\\n        Select your stay\\n      </Label>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"dates\\\"\\n            className=\\\"w-56 justify-between font-normal\\\"\\n          >\\n            {range?.from && range?.to\\n              ? formatDateRange(range.from, range.to, {\\n                  includeTime: false,\\n                })\\n              : \\\"Select date\\\"}\\n            <ChevronDownIcon />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto overflow-hidden p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            selected={range}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(range) => {\\n              setRange(range)\\n            }}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-31.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-31\",\n  \"description\": \"With event slots\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-31.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { formatDateRange } from \\\"little-date\\\"\\nimport { PlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york-v4/ui/card\\\"\\n\\nconst events = [\\n  {\\n    title: \\\"Team Sync Meeting\\\",\\n    from: \\\"2025-06-12T09:00:00\\\",\\n    to: \\\"2025-06-12T10:00:00\\\",\\n  },\\n  {\\n    title: \\\"Design Review\\\",\\n    from: \\\"2025-06-12T11:30:00\\\",\\n    to: \\\"2025-06-12T12:30:00\\\",\\n  },\\n  {\\n    title: \\\"Client Presentation\\\",\\n    from: \\\"2025-06-12T14:00:00\\\",\\n    to: \\\"2025-06-12T15:00:00\\\",\\n  },\\n]\\n\\nexport default function Calendar31() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <Card className=\\\"w-fit py-4\\\">\\n      <CardContent className=\\\"px-4\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          className=\\\"bg-transparent p-0\\\"\\n          required\\n        />\\n      </CardContent>\\n      <CardFooter className=\\\"flex flex-col items-start gap-3 border-t px-4 !pt-4\\\">\\n        <div className=\\\"flex w-full items-center justify-between px-1\\\">\\n          <div className=\\\"text-sm font-medium\\\">\\n            {date?.toLocaleDateString(\\\"en-US\\\", {\\n              day: \\\"numeric\\\",\\n              month: \\\"long\\\",\\n              year: \\\"numeric\\\",\\n            })}\\n          </div>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"size-6\\\"\\n            title=\\\"Add Event\\\"\\n          >\\n            <PlusIcon />\\n            <span className=\\\"sr-only\\\">Add Event</span>\\n          </Button>\\n        </div>\\n        <div className=\\\"flex w-full flex-col gap-2\\\">\\n          {events.map((event) => (\\n            <div\\n              key={event.title}\\n              className=\\\"bg-muted after:bg-primary/70 relative rounded-md p-2 pl-6 text-sm after:absolute after:inset-y-2 after:left-2 after:w-1 after:rounded-full\\\"\\n            >\\n              <div className=\\\"font-medium\\\">{event.title}</div>\\n              <div className=\\\"text-muted-foreground text-xs\\\">\\n                {formatDateRange(new Date(event.from), new Date(event.to))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-32.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-32\",\n  \"description\": \"Date picker in a drawer\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"button\",\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/calendar-32.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CalendarPlusIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Drawer,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york-v4/ui/drawer\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function Calendar32() {\\n  const [open, setOpen] = React.useState(false)\\n  const [date, setDate] = React.useState<Date | undefined>(undefined)\\n\\n  return (\\n    <div className=\\\"flex flex-col gap-3\\\">\\n      <Label htmlFor=\\\"date\\\" className=\\\"px-1\\\">\\n        Date of birth\\n      </Label>\\n      <Drawer open={open} onOpenChange={setOpen}>\\n        <DrawerTrigger asChild>\\n          <Button\\n            variant=\\\"outline\\\"\\n            id=\\\"date\\\"\\n            className=\\\"w-48 justify-between font-normal\\\"\\n          >\\n            {date ? date.toLocaleDateString() : \\\"Select date\\\"}\\n            <CalendarPlusIcon />\\n          </Button>\\n        </DrawerTrigger>\\n        <DrawerContent className=\\\"w-auto overflow-hidden p-0\\\">\\n          <DrawerHeader className=\\\"sr-only\\\">\\n            <DrawerTitle>Select date</DrawerTitle>\\n            <DrawerDescription>Set your date of birth</DrawerDescription>\\n          </DrawerHeader>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            captionLayout=\\\"dropdown\\\"\\n            onSelect={(date) => {\\n              setDate(date)\\n              setOpen(false)\\n            }}\\n            className=\\\"mx-auto [--cell-size:clamp(0px,calc(100vw/7.5),52px)]\\\"\\n          />\\n        </DrawerContent>\\n      </Drawer>\\n      <div className=\\\"text-muted-foreground px-1 text-sm\\\">\\n        This example works best on mobile.\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-6 py-12 items-start md:pt-20 justify-center min-w-0 xl:py-24\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-demo\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/calendar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\n\\nexport default function CalendarDemo() {\\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\\n\\n  return (\\n    <Calendar\\n      mode=\\\"single\\\"\\n      selected={date}\\n      onSelect={setDate}\\n      className=\\\"rounded-md border shadow-sm\\\"\\n      captionLayout=\\\"dropdown\\\"\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-form\",\n  \"registryDependencies\": [\n    \"calendar\",\n    \"form\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/calendar-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nconst FormSchema = z.object({\\n  dob: z.date({\\n    required_error: \\\"A date of birth is required.\\\",\\n  }),\\n})\\n\\nexport default function CalendarForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"dob\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Date of birth</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant={\\\"outline\\\"}\\n                      className={cn(\\n                        \\\"w-[240px] pl-3 text-left font-normal\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value ? (\\n                        format(field.value, \\\"PPP\\\")\\n                      ) : (\\n                        <span>Pick a date</span>\\n                      )}\\n                      <CalendarIcon className=\\\"ml-auto h-4 w-4 opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n                  <Calendar\\n                    mode=\\\"single\\\"\\n                    selected={field.value}\\n                    onSelect={field.onChange}\\n                    disabled={(date) =>\\n                      date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n                    }\\n                    captionLayout=\\\"dropdown\\\"\\n                  />\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                Your date of birth is used to calculate your age.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar-hijri.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-hijri\",\n  \"description\": \"A Persian calendar.\",\n  \"registryDependencies\": [\n    \"calendar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/calendar-hijri.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Vazirmatn } from \\\"next/font/google\\\"\\nimport {\\n  ChevronDownIcon,\\n  ChevronLeftIcon,\\n  ChevronRightIcon,\\n} from \\\"lucide-react\\\"\\nimport { getDefaultClassNames, type DayButton } from \\\"react-day-picker\\\"\\nimport { DayPicker } from \\\"react-day-picker/persian\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nconst vazirmatn = Vazirmatn({ subsets: [\\\"arabic\\\"] })\\n\\nexport default function CalendarHijri() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(2025, 5, 12)\\n  )\\n\\n  return (\\n    <div className={vazirmatn.className}>\\n      <Calendar\\n        mode=\\\"single\\\"\\n        defaultMonth={date}\\n        selected={date}\\n        onSelect={setDate}\\n        className=\\\"rounded-lg border shadow-sm\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\n// ----------------------------------------------------------------------------\\n// The code below is for this example only.\\n// For your own calendar, you would edit the calendar.tsx component directly.\\n// ----------------------------------------------------------------------------\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(\\\"default\\\", { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\\"absolute inset-0 opacity-0\\\", defaultClassNames.dropdown),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"rounded-l-md bg-accent\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\\"rounded-r-md bg-accent\\\", defaultClassNames.range_end),\\n        today: cn(\\n          \\\"rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <ChevronLeftIcon className={cn(\\\"size-4\\\", className)} {...props} />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <ChevronRightIcon\\n                className={cn(\\\"size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <ChevronDownIcon className={cn(\\\"size-4\\\", className)} {...props} />\\n          )\\n        },\\n        DayButton: CalendarDayButton,\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  ...props\\n}: React.ComponentProps<typeof DayButton>) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString()}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"calendar\",\n    \"date\"\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ChevronDownIcon,\\n  ChevronLeftIcon,\\n  ChevronRightIcon,\\n} from \\\"lucide-react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(\\\"default\\\", { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-md\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"rounded-l-md bg-accent\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\\"rounded-r-md bg-accent\\\", defaultClassNames.range_end),\\n        today: cn(\\n          \\\"rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <ChevronLeftIcon className={cn(\\\"size-4\\\", className)} {...props} />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <ChevronRightIcon\\n                className={cn(\\\"size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <ChevronDownIcon className={cn(\\\"size-4\\\", className)} {...props} />\\n          )\\n        },\\n        DayButton: CalendarDayButton,\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  ...props\\n}: React.ComponentProps<typeof DayButton>) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString()}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-demo\",\n  \"registryDependencies\": [\n    \"card\",\n    \"button\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/card-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function CardDemo() {\\n  return (\\n    <Card className=\\\"w-full max-w-sm\\\">\\n      <CardHeader>\\n        <CardTitle>Login to your account</CardTitle>\\n        <CardDescription>\\n          Enter your email below to login to your account\\n        </CardDescription>\\n        <CardAction>\\n          <Button variant=\\\"link\\\">Sign Up</Button>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <div className=\\\"flex flex-col gap-6\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n            </div>\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center\\\">\\n                <Label htmlFor=\\\"password\\\">Password</Label>\\n                <a\\n                  href=\\\"#\\\"\\n                  className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                >\\n                  Forgot your password?\\n                </a>\\n              </div>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n            </div>\\n          </div>\\n        </form>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2\\\">\\n        <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n          Login\\n        </Button>\\n        <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n          Login with Google\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/card-with-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-with-form\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/card-with-form.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport default function CardWithForm() {\\n  return (\\n    <Card className=\\\"w-[350px]\\\">\\n      <CardHeader>\\n        <CardTitle>Create project</CardTitle>\\n        <CardDescription>Deploy your new project in one-click.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <div className=\\\"grid w-full items-center gap-6\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"name\\\">Name</Label>\\n              <Input id=\\\"name\\\" placeholder=\\\"Name of your project\\\" />\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"framework\\\">Framework</Label>\\n              <Select>\\n                <SelectTrigger id=\\\"framework\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select\\\" />\\n                </SelectTrigger>\\n                <SelectContent position=\\\"popper\\\">\\n                  <SelectItem value=\\\"next\\\">Next.js</SelectItem>\\n                  <SelectItem value=\\\"sveltekit\\\">SvelteKit</SelectItem>\\n                  <SelectItem value=\\\"astro\\\">Astro</SelectItem>\\n                  <SelectItem value=\\\"nuxt\\\">Nuxt.js</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </form>\\n      </CardContent>\\n      <CardFooter className=\\\"flex justify-between\\\">\\n        <Button variant=\\\"outline\\\">Cancel</Button>\\n        <Button>Deploy</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Card({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\\"leading-none font-semibold\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\\"flex items-center px-6 [.border-t]:pt-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/carousel-api.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-api\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/carousel-api.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n  type CarouselApi,\\n} from \\\"@/registry/new-york-v4/ui/carousel\\\"\\n\\nexport default function CarouselDApiDemo() {\\n  const [api, setApi] = React.useState<CarouselApi>()\\n  const [current, setCurrent] = React.useState(0)\\n  const [count, setCount] = React.useState(0)\\n\\n  React.useEffect(() => {\\n    if (!api) {\\n      return\\n    }\\n\\n    setCount(api.scrollSnapList().length)\\n    setCurrent(api.selectedScrollSnap() + 1)\\n\\n    api.on(\\\"select\\\", () => {\\n      setCurrent(api.selectedScrollSnap() + 1)\\n    })\\n  }, [api])\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-xs\\\">\\n      <Carousel setApi={setApi} className=\\\"w-full max-w-xs\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious />\\n        <CarouselNext />\\n      </Carousel>\\n      <div className=\\\"py-2 text-center text-sm text-muted-foreground\\\">\\n        Slide {current} of {count}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/carousel-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-demo\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/carousel-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york-v4/ui/carousel\\\"\\n\\nexport default function CarouselDemo() {\\n  return (\\n    <Carousel className=\\\"w-full max-w-xs\\\">\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index}>\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/carousel-orientation.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-orientation\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/carousel-orientation.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york-v4/ui/carousel\\\"\\n\\nexport default function CarouselOrientation() {\\n  return (\\n    <Carousel\\n      opts={{\\n        align: \\\"start\\\",\\n      }}\\n      orientation=\\\"vertical\\\"\\n      className=\\\"w-full max-w-xs\\\"\\n    >\\n      <CarouselContent className=\\\"-mt-1 h-[200px]\\\">\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"pt-1 md:basis-1/2\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex items-center justify-center p-6\\\">\\n                  <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/carousel-plugin.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-plugin\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/carousel-plugin.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Autoplay from \\\"embla-carousel-autoplay\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york-v4/ui/carousel\\\"\\n\\nexport default function CarouselPlugin() {\\n  const plugin = React.useRef(\\n    Autoplay({ delay: 2000, stopOnInteraction: true })\\n  )\\n\\n  return (\\n    <Carousel\\n      plugins={[plugin.current]}\\n      className=\\\"w-full max-w-xs\\\"\\n      onMouseEnter={plugin.current.stop}\\n      onMouseLeave={plugin.current.reset}\\n    >\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index}>\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/carousel-size.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-size\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/carousel-size.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york-v4/ui/carousel\\\"\\n\\nexport default function CarouselSize() {\\n  return (\\n    <Carousel\\n      opts={{\\n        align: \\\"start\\\",\\n      }}\\n      className=\\\"w-full max-w-sm\\\"\\n    >\\n      <CarouselContent>\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"md:basis-1/2 lg:basis-1/3\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/carousel-spacing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-spacing\",\n  \"registryDependencies\": [\n    \"carousel\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/carousel-spacing.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/new-york-v4/ui/carousel\\\"\\n\\nexport default function CarouselSpacing() {\\n  return (\\n    <Carousel className=\\\"w-full max-w-sm\\\">\\n      <CarouselContent className=\\\"-ml-1\\\">\\n        {Array.from({ length: 5 }).map((_, index) => (\\n          <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2 lg:basis-1/3\\\">\\n            <div className=\\\"p-1\\\">\\n              <Card>\\n                <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                  <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </CarouselItem>\\n        ))}\\n      </CarouselContent>\\n      <CarouselPrevious />\\n      <CarouselNext />\\n    </Carousel>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\nimport { ArrowLeft, ArrowRight } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute size-8 rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <ArrowLeft />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute size-8 rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <ArrowRight />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-axes.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-axes\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-axes.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"An area chart with axes\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaAxes() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Axes</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: -20,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <YAxis\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickCount={3}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-default\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A simple area chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaDefault() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-gradient.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-gradient\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-gradient.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"An area chart with gradient fill\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaGradient() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Gradient</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-icons\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingDown, TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"An area chart with icons\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n    icon: TrendingDown,\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n    icon: TrendingUp,\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaIcons() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Icons</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-interactive\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"pt-0\\\">\\n      <CardHeader className=\\\"flex items-center gap-2 space-y-0 border-b py-5 sm:flex-row\\\">\\n        <div className=\\\"grid flex-1 gap-1\\\">\\n          <CardTitle>Area Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <Select value={timeRange} onValueChange={setTimeRange}>\\n          <SelectTrigger\\n            className=\\\"hidden w-[160px] rounded-lg sm:ml-auto sm:flex\\\"\\n            aria-label=\\\"Select a value\\\"\\n          >\\n            <SelectValue placeholder=\\\"Last 3 months\\\" />\\n          </SelectTrigger>\\n          <SelectContent className=\\\"rounded-xl\\\">\\n            <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n              Last 3 months\\n            </SelectItem>\\n            <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n              Last 30 days\\n            </SelectItem>\\n            <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n              Last 7 days\\n            </SelectItem>\\n          </SelectContent>\\n        </Select>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-legend\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"An area chart with a legend\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaLegend() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Legend</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <ChartLegend content={<ChartLegendContent />} />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-linear.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-linear\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-linear.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A linear area chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaLinear() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Linear</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dot\\\" hideLabel />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"linear\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-stacked-expand.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-stacked-expand\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-stacked-expand.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked area chart with expand stacking\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80, other: 45 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200, other: 100 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120, other: 150 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190, other: 50 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130, other: 100 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140, other: 160 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaStackedExpand() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Stacked Expanded</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n              top: 12,\\n            }}\\n            stackOffset=\\\"expand\\\"\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"other\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-other)\\\"\\n              fillOpacity={0.1}\\n              stroke=\\\"var(--color-other)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-stacked\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked area chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaStacked() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Stacked</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-area-step.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-area-step\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-area-step.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Activity, TrendingUp } from \\\"lucide-react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A step area chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n    icon: Activity,\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaStep() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Area Chart - Step</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <AreaChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"step\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.4}\\n              stroke=\\\"var(--color-desktop)\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              January - June 2024\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-area\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-active.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-active\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-active.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, Rectangle, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A bar chart with an active bar\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 187, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 275, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarActive() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Active</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"browser\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) =>\\n                chartConfig[value as keyof typeof chartConfig]?.label\\n              }\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar\\n              dataKey=\\\"visitors\\\"\\n              strokeWidth={2}\\n              radius={8}\\n              activeIndex={2}\\n              activeBar={({ ...props }) => {\\n                return (\\n                  <Rectangle\\n                    {...props}\\n                    fillOpacity={0.8}\\n                    stroke={props.payload.fill}\\n                    strokeDasharray={4}\\n                    strokeDashoffset={4}\\n                  />\\n                )\\n              }}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-default\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A bar chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarDefault() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={8} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-demo-axis.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-axis\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/chart-bar-demo-axis.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  ChartContainer,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-demo-grid.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-grid\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/chart-bar-demo-grid.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid } from \\\"recharts\\\"\\n\\nimport {\\n  ChartContainer,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-demo-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-legend\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/chart-bar-demo-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <ChartTooltip content={<ChartTooltipContent />} />\\n        <ChartLegend content={<ChartLegendContent />} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-demo-tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo-tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/chart-bar-demo-tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <CartesianGrid vertical={false} />\\n        <XAxis\\n          dataKey=\\\"month\\\"\\n          tickLine={false}\\n          tickMargin={10}\\n          axisLine={false}\\n          tickFormatter={(value) => value.slice(0, 3)}\\n        />\\n        <ChartTooltip content={<ChartTooltipContent />} />\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-demo\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/chart-bar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart } from \\\"recharts\\\"\\n\\nimport {\\n  ChartContainer,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"#2563eb\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"#60a5fa\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function Component() {\\n  return (\\n    <ChartContainer config={chartConfig} className=\\\"min-h-[200px] w-full\\\">\\n      <BarChart accessibilityLayer data={chartData}>\\n        <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n        <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n      </BarChart>\\n    </ChartContainer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-horizontal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-horizontal\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-horizontal.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A horizontal bar chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarHorizontal() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Horizontal</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              left: -20,\\n            }}\\n          >\\n            <XAxis type=\\\"number\\\" dataKey=\\\"desktop\\\" hide />\\n            <YAxis\\n              dataKey=\\\"month\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={5} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-interactive\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"An interactive bar chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  views: {\\n    label: \\\"Page Views\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarInteractive() {\\n  const [activeChart, setActiveChart] =\\n    React.useState<keyof typeof chartConfig>(\\\"desktop\\\")\\n\\n  const total = React.useMemo(\\n    () => ({\\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\\n    }),\\n    []\\n  )\\n\\n  return (\\n    <Card className=\\\"py-0\\\">\\n      <CardHeader className=\\\"flex flex-col items-stretch border-b p-0! sm:flex-row\\\">\\n        <div className=\\\"flex flex-1 flex-col justify-center gap-1 px-6 pt-4 pb-3 sm:py-0!\\\">\\n          <CardTitle>Bar Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <div className=\\\"flex\\\">\\n          {[\\\"desktop\\\", \\\"mobile\\\"].map((key) => {\\n            const chart = key as keyof typeof chartConfig\\n            return (\\n              <button\\n                key={chart}\\n                data-active={activeChart === chart}\\n                className=\\\"relative z-30 flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-t-0 sm:border-l sm:px-8 sm:py-6\\\"\\n                onClick={() => setActiveChart(chart)}\\n              >\\n                <span className=\\\"text-xs text-muted-foreground\\\">\\n                  {chartConfig[chart].label}\\n                </span>\\n                <span className=\\\"text-lg leading-none font-bold sm:text-3xl\\\">\\n                  {total[key as keyof typeof total].toLocaleString()}\\n                </span>\\n              </button>\\n            )\\n          })}\\n        </div>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 sm:p-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"views\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Bar dataKey={activeChart} fill={`var(--color-${activeChart})`} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-label-custom\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, LabelList, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A bar chart with a custom label\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  label: {\\n    color: \\\"var(--background)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarLabelCustom() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              right: 16,\\n            }}\\n          >\\n            <CartesianGrid horizontal={false} />\\n            <YAxis\\n              dataKey=\\\"month\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n              hide\\n            />\\n            <XAxis dataKey=\\\"desktop\\\" type=\\\"number\\\" hide />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Bar\\n              dataKey=\\\"desktop\\\"\\n              layout=\\\"vertical\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              radius={4}\\n            >\\n              <LabelList\\n                dataKey=\\\"month\\\"\\n                position=\\\"insideLeft\\\"\\n                offset={8}\\n                className=\\\"fill-(--color-label)\\\"\\n                fontSize={12}\\n              />\\n              <LabelList\\n                dataKey=\\\"desktop\\\"\\n                position=\\\"right\\\"\\n                offset={8}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-label\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, LabelList, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A bar chart with a label\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarLabel() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 20,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={8}>\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-mixed.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-mixed\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-mixed.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis, YAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A mixed bar chart\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarMixed() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Mixed</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart\\n            accessibilityLayer\\n            data={chartData}\\n            layout=\\\"vertical\\\"\\n            margin={{\\n              left: 0,\\n            }}\\n          >\\n            <YAxis\\n              dataKey=\\\"browser\\\"\\n              type=\\\"category\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) =>\\n                chartConfig[value as keyof typeof chartConfig]?.label\\n              }\\n            />\\n            <XAxis dataKey=\\\"visitors\\\" type=\\\"number\\\" hide />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Bar dataKey=\\\"visitors\\\" layout=\\\"vertical\\\" radius={5} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-multiple\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A multiple bar chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarMultiple() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Multiple</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n            />\\n            <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n            <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-negative.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-negative\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-negative.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, Cell, LabelList } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A bar chart with negative values\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", visitors: 186 },\\n  { month: \\\"February\\\", visitors: 205 },\\n  { month: \\\"March\\\", visitors: -207 },\\n  { month: \\\"April\\\", visitors: 173 },\\n  { month: \\\"May\\\", visitors: -209 },\\n  { month: \\\"June\\\", visitors: 214 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarNegative() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Negative</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel hideIndicator />}\\n            />\\n            <Bar dataKey=\\\"visitors\\\">\\n              <LabelList position=\\\"top\\\" dataKey=\\\"month\\\" fillOpacity={1} />\\n              {chartData.map((item) => (\\n                <Cell\\n                  key={item.month}\\n                  fill={item.visitors > 0 ? \\\"var(--chart-1)\\\" : \\\"var(--chart-2)\\\"}\\n                />\\n              ))}\\n            </Bar>\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-bar-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-stacked\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-bar-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartBarStacked() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Bar Chart - Stacked + Legend</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip content={<ChartTooltipContent hideLabel />} />\\n            <ChartLegend content={<ChartLegendContent />} />\\n            <Bar\\n              dataKey=\\\"desktop\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"mobile\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-bar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-default\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A line chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineDefault() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-dots-colors.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots-colors\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-dots-colors.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Dot, Line, LineChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A line chart with dots and colors\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineDotsColors() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Dots Colors</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 24,\\n              left: 24,\\n              right: 24,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  indicator=\\\"line\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  hideLabel\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey=\\\"visitors\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-visitors)\\\"\\n              strokeWidth={2}\\n              dot={({ payload, ...props }) => {\\n                return (\\n                  <Dot\\n                    key={payload.browser}\\n                    r={5}\\n                    cx={props.cx}\\n                    cy={props.cy}\\n                    fill={payload.fill}\\n                    stroke={payload.fill}\\n                  />\\n                )\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-dots-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots-custom\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-dots-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { GitCommitVertical, TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A line chart with custom dots\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineDotsCustom() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Custom Dots</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={({ cx, cy, payload }) => {\\n                const r = 24\\n                return (\\n                  <GitCommitVertical\\n                    key={payload.month}\\n                    x={cx - r / 2}\\n                    y={cy - r / 2}\\n                    width={r}\\n                    height={r}\\n                    fill=\\\"hsl(var(--background))\\\"\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                  />\\n                )\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-dots.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-dots\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-dots.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A line chart with dots\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineDots() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Dots</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-desktop)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-interactive\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"An interactive line chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  views: {\\n    label: \\\"Page Views\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineInteractive() {\\n  const [activeChart, setActiveChart] =\\n    React.useState<keyof typeof chartConfig>(\\\"desktop\\\")\\n\\n  const total = React.useMemo(\\n    () => ({\\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\\n    }),\\n    []\\n  )\\n\\n  return (\\n    <Card className=\\\"py-4 sm:py-0\\\">\\n      <CardHeader className=\\\"flex flex-col items-stretch border-b p-0! sm:flex-row\\\">\\n        <div className=\\\"flex flex-1 flex-col justify-center gap-1 px-6 pb-3 sm:pb-0\\\">\\n          <CardTitle>Line Chart - Interactive</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 3 months\\n          </CardDescription>\\n        </div>\\n        <div className=\\\"flex\\\">\\n          {[\\\"desktop\\\", \\\"mobile\\\"].map((key) => {\\n            const chart = key as keyof typeof chartConfig\\n            return (\\n              <button\\n                key={chart}\\n                data-active={activeChart === chart}\\n                className=\\\"flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-t-0 sm:border-l sm:px-8 sm:py-6\\\"\\n                onClick={() => setActiveChart(chart)}\\n              >\\n                <span className=\\\"text-xs text-muted-foreground\\\">\\n                  {chartConfig[chart].label}\\n                </span>\\n                <span className=\\\"text-lg leading-none font-bold sm:text-3xl\\\">\\n                  {total[key as keyof typeof total].toLocaleString()}\\n                </span>\\n              </button>\\n            )\\n          })}\\n        </div>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 sm:p-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  className=\\\"w-[150px]\\\"\\n                  nameKey=\\\"views\\\"\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey={activeChart}\\n              type=\\\"monotone\\\"\\n              stroke={`var(--color-${activeChart})`}\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-label-custom\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, LabelList, Line, LineChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A line chart with a custom label\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineLabelCustom() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 24,\\n              left: 24,\\n              right: 24,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  indicator=\\\"line\\\"\\n                  nameKey=\\\"visitors\\\"\\n                  hideLabel\\n                />\\n              }\\n            />\\n            <Line\\n              dataKey=\\\"visitors\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-visitors)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-visitors)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            >\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n                dataKey=\\\"browser\\\"\\n                formatter={(value: keyof typeof chartConfig) =>\\n                  chartConfig[value]?.label\\n                }\\n              />\\n            </Line>\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-label\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, LabelList, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A line chart with a label\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineLabel() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              top: 20,\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={{\\n                fill: \\\"var(--color-desktop)\\\",\\n              }}\\n              activeDot={{\\n                r: 6,\\n              }}\\n            >\\n              <LabelList\\n                position=\\\"top\\\"\\n                offset={12}\\n                className=\\\"fill-foreground\\\"\\n                fontSize={12}\\n              />\\n            </Line>\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-linear.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-linear\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-linear.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A linear line chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineLinear() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Linear</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"linear\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-multiple\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A multiple line chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineMultiple() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Multiple</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"monotone\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n            <Line\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"monotone\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter>\\n        <div className=\\\"flex w-full items-start gap-2 text-sm\\\">\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n              Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n            </div>\\n            <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n              Showing total visitors for the last 6 months\\n            </div>\\n          </div>\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-line-step.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line-step\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-line-step.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { CartesianGrid, Line, LineChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A line chart with step\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartLineStep() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Line Chart - Step</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <LineChart\\n            accessibilityLayer\\n            data={chartData}\\n            margin={{\\n              left: 12,\\n              right: 12,\\n            }}\\n          >\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"month\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              tickFormatter={(value) => value.slice(0, 3)}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Line\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"step\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n              dot={false}\\n            />\\n          </LineChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col items-start gap-2 text-sm\\\">\\n        <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-line\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-donut-active.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut-active\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-donut-active.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart, Sector } from \\\"recharts\\\"\\nimport { type PieSectorDataItem } from \\\"recharts/types/polar/Pie\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A donut chart with an active sector\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieDonutActive() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut Active</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n              activeIndex={0}\\n              activeShape={({\\n                outerRadius = 0,\\n                ...props\\n              }: PieSectorDataItem) => (\\n                <Sector {...props} outerRadius={outerRadius + 10} />\\n              )}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-donut-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut-text\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-donut-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A donut chart with text\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieDonutText() {\\n  const totalVisitors = React.useMemo(() => {\\n    return chartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n            >\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-3xl font-bold\\\"\\n                        >\\n                          {totalVisitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-donut.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-donut\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-donut.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A donut chart\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieDonut() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Donut</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              innerRadius={60}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-interactive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-interactive\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label, Pie, PieChart, Sector } from \\\"recharts\\\"\\nimport { type PieSectorDataItem } from \\\"recharts/types/polar/Pie\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartStyle,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport const description = \\\"An interactive pie chart\\\"\\n\\nconst desktopData = [\\n  { month: \\\"january\\\", desktop: 186, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", desktop: 305, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", desktop: 237, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", desktop: 173, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", desktop: 209, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n  },\\n  january: {\\n    label: \\\"January\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  february: {\\n    label: \\\"February\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  march: {\\n    label: \\\"March\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  april: {\\n    label: \\\"April\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  may: {\\n    label: \\\"May\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieInteractive() {\\n  const id = \\\"pie-interactive\\\"\\n  const [activeMonth, setActiveMonth] = React.useState(desktopData[0].month)\\n\\n  const activeIndex = React.useMemo(\\n    () => desktopData.findIndex((item) => item.month === activeMonth),\\n    [activeMonth]\\n  )\\n  const months = React.useMemo(() => desktopData.map((item) => item.month), [])\\n\\n  return (\\n    <Card data-chart={id} className=\\\"flex flex-col\\\">\\n      <ChartStyle id={id} config={chartConfig} />\\n      <CardHeader className=\\\"flex-row items-start space-y-0 pb-0\\\">\\n        <div className=\\\"grid gap-1\\\">\\n          <CardTitle>Pie Chart - Interactive</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </div>\\n        <Select value={activeMonth} onValueChange={setActiveMonth}>\\n          <SelectTrigger\\n            className=\\\"ml-auto h-7 w-[130px] rounded-lg pl-2.5\\\"\\n            aria-label=\\\"Select a value\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select month\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"end\\\" className=\\\"rounded-xl\\\">\\n            {months.map((key) => {\\n              const config = chartConfig[key as keyof typeof chartConfig]\\n\\n              if (!config) {\\n                return null\\n              }\\n\\n              return (\\n                <SelectItem\\n                  key={key}\\n                  value={key}\\n                  className=\\\"rounded-lg [&_span]:flex\\\"\\n                >\\n                  <div className=\\\"flex items-center gap-2 text-xs\\\">\\n                    <span\\n                      className=\\\"flex h-3 w-3 shrink-0 rounded-xs\\\"\\n                      style={{\\n                        backgroundColor: `var(--color-${key})`,\\n                      }}\\n                    />\\n                    {config?.label}\\n                  </div>\\n                </SelectItem>\\n              )\\n            })}\\n          </SelectContent>\\n        </Select>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-1 justify-center pb-0\\\">\\n        <ChartContainer\\n          id={id}\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square w-full max-w-[300px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={desktopData}\\n              dataKey=\\\"desktop\\\"\\n              nameKey=\\\"month\\\"\\n              innerRadius={60}\\n              strokeWidth={5}\\n              activeIndex={activeIndex}\\n              activeShape={({\\n                outerRadius = 0,\\n                ...props\\n              }: PieSectorDataItem) => (\\n                <g>\\n                  <Sector {...props} outerRadius={outerRadius + 10} />\\n                  <Sector\\n                    {...props}\\n                    outerRadius={outerRadius + 25}\\n                    innerRadius={outerRadius + 12}\\n                  />\\n                </g>\\n              )}\\n            >\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-3xl font-bold\\\"\\n                        >\\n                          {desktopData[activeIndex].desktop.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label-custom\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A pie chart with a custom label\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieLabelCustom() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Custom Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] px-0\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={<ChartTooltipContent nameKey=\\\"visitors\\\" hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              labelLine={false}\\n              label={({ payload, ...props }) => {\\n                return (\\n                  <text\\n                    cx={props.cx}\\n                    cy={props.cy}\\n                    x={props.x}\\n                    y={props.y}\\n                    textAnchor={props.textAnchor}\\n                    dominantBaseline={props.dominantBaseline}\\n                    fill=\\\"hsla(var(--foreground))\\\"\\n                  >\\n                    {payload.visitors}\\n                  </text>\\n                )\\n              }}\\n              nameKey=\\\"browser\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-label-list.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label-list\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-label-list.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { LabelList, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A pie chart with a label list\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieLabelList() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Label List</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] [&_.recharts-text]:fill-background\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={<ChartTooltipContent nameKey=\\\"visitors\\\" hideLabel />}\\n            />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\">\\n              <LabelList\\n                dataKey=\\\"browser\\\"\\n                className=\\\"fill-background\\\"\\n                stroke=\\\"none\\\"\\n                fontSize={12}\\n                formatter={(value: keyof typeof chartConfig) =>\\n                  chartConfig[value]?.label\\n                }\\n              />\\n            </Pie>\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-label\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A pie chart with a label\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieLabel() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px] pb-0 [&_.recharts-pie-label-text]:fill-foreground\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip content={<ChartTooltipContent hideLabel />} />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" label nameKey=\\\"browser\\\" />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-legend\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A pie chart with a legend\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieLegend() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Legend</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[300px]\\\"\\n        >\\n          <PieChart>\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" />\\n            <ChartLegend\\n              content={<ChartLegendContent nameKey=\\\"browser\\\" />}\\n              className=\\\"-translate-y-2 flex-wrap gap-2 *:basis-1/4 *:justify-center\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-separator-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-separator-none\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-separator-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A pie chart with no separator\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieSeparatorNone() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Separator None</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie\\n              data={chartData}\\n              dataKey=\\\"visitors\\\"\\n              nameKey=\\\"browser\\\"\\n              stroke=\\\"0\\\"\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-simple\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A simple pie chart\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieSimple() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <Pie data={chartData} dataKey=\\\"visitors\\\" nameKey=\\\"browser\\\" />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-pie-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie-stacked\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-pie-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, Pie, PieChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A pie chart with stacked sections\\\"\\n\\nconst desktopData = [\\n  { month: \\\"january\\\", desktop: 186, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", desktop: 305, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", desktop: 237, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", desktop: 173, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", desktop: 209, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst mobileData = [\\n  { month: \\\"january\\\", mobile: 80, fill: \\\"var(--color-january)\\\" },\\n  { month: \\\"february\\\", mobile: 200, fill: \\\"var(--color-february)\\\" },\\n  { month: \\\"march\\\", mobile: 120, fill: \\\"var(--color-march)\\\" },\\n  { month: \\\"april\\\", mobile: 190, fill: \\\"var(--color-april)\\\" },\\n  { month: \\\"may\\\", mobile: 130, fill: \\\"var(--color-may)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n  },\\n  january: {\\n    label: \\\"January\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  february: {\\n    label: \\\"February\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  march: {\\n    label: \\\"March\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  april: {\\n    label: \\\"April\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  may: {\\n    label: \\\"May\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartPieStacked() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Pie Chart - Stacked</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <PieChart>\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  labelKey=\\\"visitors\\\"\\n                  nameKey=\\\"month\\\"\\n                  indicator=\\\"line\\\"\\n                  labelFormatter={(_, payload) => {\\n                    return chartConfig[\\n                      payload?.[0].dataKey as keyof typeof chartConfig\\n                    ].label\\n                  }}\\n                />\\n              }\\n            />\\n            <Pie data={desktopData} dataKey=\\\"desktop\\\" outerRadius={60} />\\n            <Pie\\n              data={mobileData}\\n              dataKey=\\\"mobile\\\"\\n              innerRadius={70}\\n              outerRadius={90}\\n            />\\n          </PieChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-pie\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-default\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarDefault() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-dots.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-dots\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-dots.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with dots\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarDots() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center\\\">\\n        <CardTitle>Radar Chart - Dots</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-grid-circle-fill.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle-fill\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle-fill.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with a grid and circle fill\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 285 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 264 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarGridCircleFill() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle Filled</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n            <PolarGrid\\n              className=\\\"fill-(--color-desktop) opacity-20\\\"\\n              gridType=\\\"circle\\\"\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.5}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-grid-circle-no-lines.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle-no-lines\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle-no-lines.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with a grid and circle fill\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarGridCircleNoLines() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle - No lines</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" radialLines={false} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-grid-circle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-circle\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with a grid and circle\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarGridCircle() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Circle</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-grid-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-custom\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-grid-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with a custom grid\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarGridCustom() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Custom</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid radialLines={false} polarRadius={[90]} strokeWidth={1} />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-grid-fill.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-fill\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-grid-fill.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with a grid filled\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 285 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 203 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 264 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarGridFill() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid Filled</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarGrid className=\\\"fill-(--color-desktop) opacity-20\\\" />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.5}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-grid-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-grid-none\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-grid-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with no grid\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 273 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarGridNone() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Grid None</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n              dot={{\\n                r: 4,\\n                fillOpacity: 1,\\n              }}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-icons\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowDownFromLine, ArrowUpFromLine, TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with icons\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n    icon: ArrowDownFromLine,\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n    icon: ArrowUpFromLine,\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarIcons() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Icons</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: -40,\\n              bottom: -10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <ChartLegend className=\\\"mt-8\\\" content={<ChartLegendContent />} />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 pt-4 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-label-custom\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with a custom label\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarLabelCustom() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Custom Label</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: 10,\\n              right: 10,\\n              bottom: 10,\\n              left: 10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis\\n              dataKey=\\\"month\\\"\\n              tick={({ x, y, textAnchor, value, index, ...props }) => {\\n                const data = chartData[index]\\n\\n                return (\\n                  <text\\n                    x={x}\\n                    y={index === 0 ? y - 10 : y}\\n                    textAnchor={textAnchor}\\n                    fontSize={13}\\n                    fontWeight={500}\\n                    {...props}\\n                  >\\n                    <tspan>{data.desktop}</tspan>\\n                    <tspan className=\\\"fill-muted-foreground\\\">/</tspan>\\n                    <tspan>{data.mobile}</tspan>\\n                    <tspan\\n                      x={x}\\n                      dy={\\\"1rem\\\"}\\n                      fontSize={12}\\n                      className=\\\"fill-muted-foreground\\\"\\n                    >\\n                      {data.month}\\n                    </tspan>\\n                  </text>\\n                )\\n              }}\\n            />\\n\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-legend.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-legend\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-legend.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with a legend\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarLegend() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center\\\">\\n        <CardTitle>Radar Chart - Legend</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart\\n            data={chartData}\\n            margin={{\\n              top: -40,\\n              bottom: -10,\\n            }}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <ChartLegend className=\\\"mt-8\\\" content={<ChartLegendContent />} />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 pt-4 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-lines-only.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-lines-only\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-lines-only.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with lines only\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 160 },\\n  { month: \\\"February\\\", desktop: 185, mobile: 170 },\\n  { month: \\\"March\\\", desktop: 207, mobile: 180 },\\n  { month: \\\"April\\\", desktop: 173, mobile: 160 },\\n  { month: \\\"May\\\", desktop: 160, mobile: 190 },\\n  { month: \\\"June\\\", desktop: 174, mobile: 204 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarLinesOnly() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Lines Only</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid radialLines={false} />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0}\\n              stroke=\\\"var(--color-desktop)\\\"\\n              strokeWidth={2}\\n            />\\n            <Radar\\n              dataKey=\\\"mobile\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              fillOpacity={0}\\n              stroke=\\\"var(--color-mobile)\\\"\\n              strokeWidth={2}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-multiple\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with multiple data\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarMultiple() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Multiple</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n            />\\n            <PolarAngleAxis dataKey=\\\"month\\\" />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radar-radius.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radar-radius\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radar-radius.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radar chart with a radius axis\\\"\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadarRadius() {\\n  return (\\n    <Card>\\n      <CardHeader className=\\\"items-center pb-4\\\">\\n        <CardTitle>Radar Chart - Radius Axis</CardTitle>\\n        <CardDescription>\\n          Showing total visitors for the last 6 months\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadarChart data={chartData}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent indicator=\\\"line\\\" labelKey=\\\"month\\\" />\\n              }\\n            />\\n            <PolarGrid />\\n            <Radar\\n              dataKey=\\\"desktop\\\"\\n              fill=\\\"var(--color-desktop)\\\"\\n              fillOpacity={0.6}\\n            />\\n            <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            <PolarRadiusAxis\\n              angle={60}\\n              stroke=\\\"hsla(var(--foreground))\\\"\\n              orientation=\\\"middle\\\"\\n              axisLine={false}\\n            />\\n          </RadarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n          January - June 2024\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radar\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radial-grid.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-grid\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radial-grid.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { PolarGrid, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radial chart with a grid\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadialGrid() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Grid</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart data={chartData} innerRadius={30} outerRadius={100}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <PolarGrid gridType=\\\"circle\\\" />\\n            <RadialBar dataKey=\\\"visitors\\\" />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radial-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-label\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radial-label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { LabelList, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radial chart with a label\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadialLabel() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Label</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            startAngle={-90}\\n            endAngle={380}\\n            innerRadius={30}\\n            outerRadius={110}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background>\\n              <LabelList\\n                position=\\\"insideStart\\\"\\n                dataKey=\\\"browser\\\"\\n                className=\\\"fill-white capitalize mix-blend-luminosity\\\"\\n                fontSize={11}\\n              />\\n            </RadialBar>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radial-shape.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-shape\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radial-shape.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  Label,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  RadialBar,\\n  RadialBarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radial chart with a custom shape\\\"\\n\\nconst chartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadialShape() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Shape</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            endAngle={100}\\n            innerRadius={80}\\n            outerRadius={140}\\n          >\\n            <PolarGrid\\n              gridType=\\\"circle\\\"\\n              radialLines={false}\\n              stroke=\\\"none\\\"\\n              className=\\\"first:fill-muted last:fill-background\\\"\\n              polarRadius={[86, 74]}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-4xl font-bold\\\"\\n                        >\\n                          {chartData[0].visitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radial-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-simple\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radial-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radial chart\\\"\\n\\nconst chartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 187, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 90, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadialSimple() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart data={chartData} innerRadius={30} outerRadius={110}>\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel nameKey=\\\"browser\\\" />}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radial-stacked.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-stacked\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radial-stacked.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport { Label, PolarRadiusAxis, RadialBar, RadialBarChart } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radial chart with stacked sections\\\"\\n\\nconst chartData = [{ month: \\\"january\\\", desktop: 1260, mobile: 570 }]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadialStacked() {\\n  const totalVisitors = chartData[0].desktop + chartData[0].mobile\\n\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Stacked</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-1 items-center pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square w-full max-w-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            endAngle={180}\\n            innerRadius={80}\\n            outerRadius={130}\\n          >\\n            <ChartTooltip\\n              cursor={false}\\n              content={<ChartTooltipContent hideLabel />}\\n            />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text x={viewBox.cx} y={viewBox.cy} textAnchor=\\\"middle\\\">\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) - 16}\\n                          className=\\\"fill-foreground text-2xl font-bold\\\"\\n                        >\\n                          {totalVisitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 4}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n            <RadialBar\\n              dataKey=\\\"desktop\\\"\\n              stackId=\\\"a\\\"\\n              cornerRadius={5}\\n              fill=\\\"var(--color-desktop)\\\"\\n              className=\\\"stroke-transparent stroke-2\\\"\\n            />\\n            <RadialBar\\n              dataKey=\\\"mobile\\\"\\n              fill=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n              cornerRadius={5}\\n              className=\\\"stroke-transparent stroke-2\\\"\\n            />\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-radial-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-radial-text\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-radial-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { TrendingUp } from \\\"lucide-react\\\"\\nimport {\\n  Label,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  RadialBar,\\n  RadialBarChart,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A radial chart with text\\\"\\n\\nconst chartData = [\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartRadialText() {\\n  return (\\n    <Card className=\\\"flex flex-col\\\">\\n      <CardHeader className=\\\"items-center pb-0\\\">\\n        <CardTitle>Radial Chart - Text</CardTitle>\\n        <CardDescription>January - June 2024</CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"flex-1 pb-0\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n        >\\n          <RadialBarChart\\n            data={chartData}\\n            startAngle={0}\\n            endAngle={250}\\n            innerRadius={80}\\n            outerRadius={110}\\n          >\\n            <PolarGrid\\n              gridType=\\\"circle\\\"\\n              radialLines={false}\\n              stroke=\\\"none\\\"\\n              className=\\\"first:fill-muted last:fill-background\\\"\\n              polarRadius={[86, 74]}\\n            />\\n            <RadialBar dataKey=\\\"visitors\\\" background cornerRadius={10} />\\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n              <Label\\n                content={({ viewBox }) => {\\n                  if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                    return (\\n                      <text\\n                        x={viewBox.cx}\\n                        y={viewBox.cy}\\n                        textAnchor=\\\"middle\\\"\\n                        dominantBaseline=\\\"middle\\\"\\n                      >\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          className=\\\"fill-foreground text-4xl font-bold\\\"\\n                        >\\n                          {chartData[0].visitors.toLocaleString()}\\n                        </tspan>\\n                        <tspan\\n                          x={viewBox.cx}\\n                          y={(viewBox.cy || 0) + 24}\\n                          className=\\\"fill-muted-foreground\\\"\\n                        >\\n                          Visitors\\n                        </tspan>\\n                      </text>\\n                    )\\n                  }\\n                }}\\n              />\\n            </PolarRadiusAxis>\\n          </RadialBarChart>\\n        </ChartContainer>\\n      </CardContent>\\n      <CardFooter className=\\\"flex-col gap-2 text-sm\\\">\\n        <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n          Trending up by 5.2% this month <TrendingUp className=\\\"h-4 w-4\\\" />\\n        </div>\\n        <div className=\\\"leading-none text-muted-foreground\\\">\\n          Showing total visitors for the last 6 months\\n        </div>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-radial\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-advanced.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-advanced\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-advanced.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipAdvanced() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Advanced</CardTitle>\\n        <CardDescription>\\n          Tooltip with custom formatter and total.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  hideLabel\\n                  className=\\\"w-[180px]\\\"\\n                  formatter={(value, name, item, index) => (\\n                    <>\\n                      <div\\n                        className=\\\"h-2.5 w-2.5 shrink-0 rounded-[2px] bg-(--color-bg)\\\"\\n                        style={\\n                          {\\n                            \\\"--color-bg\\\": `var(--color-${name})`,\\n                          } as React.CSSProperties\\n                        }\\n                      />\\n                      {chartConfig[name as keyof typeof chartConfig]?.label ||\\n                        name}\\n                      <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums\\\">\\n                        {value}\\n                        <span className=\\\"font-normal text-muted-foreground\\\">\\n                          kcal\\n                        </span>\\n                      </div>\\n                      {/* Add this after the last item */}\\n                      {index === 1 && (\\n                        <div className=\\\"mt-1.5 flex basis-full items-center border-t pt-1.5 text-xs font-medium text-foreground\\\">\\n                          Total\\n                          <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums\\\">\\n                            {item.payload.running + item.payload.swimming}\\n                            <span className=\\\"font-normal text-muted-foreground\\\">\\n                              kcal\\n                            </span>\\n                          </div>\\n                        </div>\\n                      )}\\n                    </>\\n                  )}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-default.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-default\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-default.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\nexport const iframeHeight = \\\"600px\\\"\\nexport const containerClassName =\\n  \\\"[&>div]:w-full [&>div]:max-w-md flex items-center justify-center min-h-svh\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipDefault() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Default</CardTitle>\\n        <CardDescription>\\n          Default tooltip with ChartTooltipContent.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-demo\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/chart-tooltip-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nexport default function Component() {\\n  return (\\n    <div className=\\\"grid aspect-video w-full max-w-md justify-center text-foreground md:grid-cols-2 [&>div]:relative [&>div]:flex [&>div]:h-[137px] [&>div]:w-[224px] [&>div]:items-center [&>div]:justify-center [&>div]:p-4\\\">\\n      <div>\\n        <div className=\\\"absolute top-[45px] left-[-35px] z-10 text-sm font-medium\\\">\\n          Label\\n        </div>\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          viewBox=\\\"0 0 193 40\\\"\\n          width=\\\"50\\\"\\n          height=\\\"12\\\"\\n          fill=\\\"none\\\"\\n          className=\\\"absolute top-[50px] left-[5px] z-10\\\"\\n        >\\n          <g clipPath=\\\"url(#a)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M173.928 21.13C115.811 44.938 58.751 45.773 0 26.141c4.227-4.386 7.82-2.715 10.567-1.88 21.133 5.64 42.9 6.266 64.457 7.101 31.066 1.253 60.441-5.848 89.183-17.335 1.268-.418 2.325-1.253 4.861-2.924-14.582-2.924-29.165 2.089-41.845-3.76.212-.835.212-1.879.423-2.714 9.51-.627 19.231-1.253 28.742-2.089 9.51-.835 18.808-1.88 28.318-2.506 6.974-.418 9.933 2.924 7.397 9.19-3.17 8.145-7.608 15.664-11.623 23.391-.423.836-1.057 1.88-1.902 2.298-2.325.835-4.65 1.044-7.186 1.67-.422-2.088-1.479-4.386-1.268-6.265.423-2.506 1.902-4.595 3.804-9.19Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"a\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h193v40H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n        <TooltipDemo\\n          label=\\\"Page Views\\\"\\n          payload={[\\n            { name: \\\"Desktop\\\", value: 186, fill: \\\"hsl(var(--chart-1))\\\" },\\n            { name: \\\"Mobile\\\", value: 80, fill: \\\"hsl(var(--chart-2))\\\" },\\n          ]}\\n          className=\\\"w-[8rem]\\\"\\n        />\\n      </div>\\n      <div className=\\\"items-end\\\">\\n        <div className=\\\"absolute top-[0px] left-[122px] z-10 text-sm font-medium\\\">\\n          Name\\n        </div>\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          width=\\\"35\\\"\\n          height=\\\"42\\\"\\n          fill=\\\"none\\\"\\n          viewBox=\\\"0 0 122 148\\\"\\n          className=\\\"absolute top-[10px] left-[85px] z-10 -scale-x-100\\\"\\n        >\\n          <g clipPath=\\\"url(#ab)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M0 2.65c6.15-4.024 12.299-2.753 17.812-.847a115.56 115.56 0 0 1 21.84 10.59C70.4 32.727 88.849 61.744 96.483 97.54c1.908 9.108 2.544 18.639 3.817 29.017 8.481-4.871 12.934-14.402 21.416-19.909 1.061 4.236-1.06 6.989-2.756 9.319-6.998 9.531-14.207 19.062-21.63 28.382-3.604 4.448-6.36 4.871-10.177 1.059-8.058-7.837-12.935-17.368-14.42-28.382 0-.424.636-1.059 1.485-2.118 9.118 2.33 6.997 13.979 14.843 18.215 3.393-14.614.848-28.593-2.969-42.149-4.029-14.19-9.33-27.746-17.812-39.82-8.27-11.86-18.66-21.392-30.11-30.287C26.93 11.758 14.207 6.039 0 2.65Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"ab\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h122v148H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n        <TooltipDemo\\n          label=\\\"Browser\\\"\\n          hideLabel\\n          payload={[\\n            { name: \\\"Chrome\\\", value: 1286, fill: \\\"hsl(var(--chart-3))\\\" },\\n            { name: \\\"Firefox\\\", value: 1000, fill: \\\"hsl(var(--chart-4))\\\" },\\n          ]}\\n          indicator=\\\"dashed\\\"\\n          className=\\\"w-[8rem]\\\"\\n        />\\n      </div>\\n      <div className=\\\"hidden! md:flex!\\\">\\n        <TooltipDemo\\n          label=\\\"Page Views\\\"\\n          payload={[\\n            { name: \\\"Desktop\\\", value: 12486, fill: \\\"hsl(var(--chart-3))\\\" },\\n          ]}\\n          className=\\\"w-[9rem]\\\"\\n          indicator=\\\"line\\\"\\n        />\\n      </div>\\n      <div className=\\\"items-start! justify-start!\\\">\\n        <div className=\\\"absolute top-[60px] left-[50px] z-10 text-sm font-medium\\\">\\n          Indicator\\n        </div>\\n        <TooltipDemo\\n          label=\\\"Browser\\\"\\n          hideLabel\\n          payload={[\\n            { name: \\\"Chrome\\\", value: 1286, fill: \\\"hsl(var(--chart-1))\\\" },\\n          ]}\\n          indicator=\\\"dot\\\"\\n          className=\\\"w-[8rem]\\\"\\n        />\\n        <svg\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          width=\\\"15\\\"\\n          height=\\\"34\\\"\\n          fill=\\\"none\\\"\\n          viewBox=\\\"0 0 75 175\\\"\\n          className=\\\"absolute top-[38px] left-[30px] z-10 rotate-[-40deg]\\\"\\n        >\\n          <g clipPath=\\\"url(#abc)\\\">\\n            <path\\n              fill=\\\"currentColor\\\"\\n              d=\\\"M20.187 175c-4.439-2.109-7.186-2.531-8.032-4.008-3.17-5.484-6.763-10.968-8.454-17.084-5.073-16.242-4.439-32.694-1.057-49.146 5.707-28.053 18.388-52.942 34.24-76.565 1.692-2.531 3.171-5.063 4.862-7.805 0-.21-.211-.632-.634-1.265-4.65 1.265-9.511 2.53-14.161 3.585-2.537.422-5.496.422-8.032-.421-1.48-.422-3.593-2.742-3.593-4.219 0-1.898 1.48-4.218 2.747-5.906 1.057-1.054 2.96-1.265 4.65-1.687C35.406 7.315 48.088 3.729 60.98.776c10.99-2.53 14.584 1.055 13.95 11.812-.634 11.18-.846 22.358-1.268 33.326-.212 3.375-.846 6.96-1.268 10.757-8.878-4.007-8.878-4.007-12.048-38.177C47.03 33.259 38.153 49.289 29.91 65.741 21.667 82.193 16.17 99.49 13.212 117.84c-2.959 18.984.634 36.912 6.975 57.161Z\\\"\\n            />\\n          </g>\\n          <defs>\\n            <clipPath id=\\\"abc\\\">\\n              <path fill=\\\"currentColor\\\" d=\\\"M0 0h75v175H0z\\\" />\\n            </clipPath>\\n          </defs>\\n        </svg>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction TooltipDemo({\\n  indicator = \\\"dot\\\",\\n  label,\\n  payload,\\n  hideLabel,\\n  hideIndicator,\\n  className,\\n}: {\\n  label: string\\n  hideLabel?: boolean\\n  hideIndicator?: boolean\\n  indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n  payload: {\\n    name: string\\n    value: number\\n    fill: string\\n  }[]\\n  nameKey?: string\\n  labelKey?: string\\n} & React.ComponentProps<\\\"div\\\">) {\\n  const tooltipLabel = hideLabel ? null : (\\n    <div className=\\\"font-medium\\\">{label}</div>\\n  )\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl transition-all ease-in-out hover:-translate-y-0.5\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload.map((item, index) => {\\n          const indicatorColor = item.fill\\n\\n          return (\\n            <div\\n              key={index}\\n              className={cn(\\n                \\\"flex w-full items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                indicator === \\\"dot\\\" && \\\"items-center\\\"\\n              )}\\n            >\\n              <>\\n                {!hideIndicator && (\\n                  <div\\n                    className={cn(\\n                      \\\"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\\\",\\n                      {\\n                        \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                        \\\"w-1\\\": indicator === \\\"line\\\",\\n                        \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                          indicator === \\\"dashed\\\",\\n                        \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                      }\\n                    )}\\n                    style={\\n                      {\\n                        \\\"--color-bg\\\": indicatorColor,\\n                        \\\"--color-border\\\": indicatorColor,\\n                      } as React.CSSProperties\\n                    }\\n                  />\\n                )}\\n                <div\\n                  className={cn(\\n                    \\\"flex flex-1 justify-between leading-none\\\",\\n                    nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                  )}\\n                >\\n                  <div className=\\\"grid gap-1.5\\\">\\n                    {nestLabel ? tooltipLabel : null}\\n                    <span className=\\\"text-muted-foreground\\\">{item.name}</span>\\n                  </div>\\n                  <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                    {item.value.toLocaleString()}\\n                  </span>\\n                </div>\\n              </>\\n            </div>\\n          )\\n        })}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-formatter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-formatter\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-formatter.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipFormatter() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Formatter</CardTitle>\\n        <CardDescription>Tooltip with custom formatter .</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  hideLabel\\n                  formatter={(value, name) => (\\n                    <div className=\\\"flex min-w-[130px] items-center text-xs text-muted-foreground\\\">\\n                      {chartConfig[name as keyof typeof chartConfig]?.label ||\\n                        name}\\n                      <div className=\\\"ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums\\\">\\n                        {value}\\n                        <span className=\\\"font-normal text-muted-foreground\\\">\\n                          kcal\\n                        </span>\\n                      </div>\\n                    </div>\\n                  )}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-icons.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-icons\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-icons.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Footprints, Waves } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n    icon: Footprints,\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n    icon: Waves,\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipIcons() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Icons</CardTitle>\\n        <CardDescription>Tooltip with icons.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideLabel />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-indicator-line.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-indicator-line\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-indicator-line.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\nexport const iframeHeight = \\\"600px\\\"\\nexport const containerClassName =\\n  \\\"[&>div]:w-full [&>div]:max-w-md flex items-center justify-center min-h-svh\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipIndicatorLine() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Line Indicator</CardTitle>\\n        <CardDescription>Tooltip with line indicator.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-indicator-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-indicator-none\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-indicator-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipIndicatorNone() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - No Indicator</CardTitle>\\n        <CardDescription>Tooltip with no indicator.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideIndicator />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-label-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-custom\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  activities: {\\n    label: \\\"Activities\\\",\\n  },\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipLabelCustom() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Custom label</CardTitle>\\n        <CardDescription>\\n          Tooltip with custom label from chartConfig.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent labelKey=\\\"activities\\\" indicator=\\\"line\\\" />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-label-formatter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-formatter\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-formatter.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipLabelFormatter() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - Label Formatter</CardTitle>\\n        <CardDescription>Tooltip with label formatter.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      day: \\\"numeric\\\",\\n                      month: \\\"long\\\",\\n                      year: \\\"numeric\\\",\\n                    })\\n                  }}\\n                />\\n              }\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart-tooltip-label-none.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-tooltip-label-none\",\n  \"registryDependencies\": [\n    \"card\",\n    \"chart\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-none.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bar, BarChart, XAxis } from \\\"recharts\\\"\\n\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\n\\nexport const description = \\\"A stacked bar chart with a legend\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-07-15\\\", running: 450, swimming: 300 },\\n  { date: \\\"2024-07-16\\\", running: 380, swimming: 420 },\\n  { date: \\\"2024-07-17\\\", running: 520, swimming: 120 },\\n  { date: \\\"2024-07-18\\\", running: 140, swimming: 550 },\\n  { date: \\\"2024-07-19\\\", running: 600, swimming: 350 },\\n  { date: \\\"2024-07-20\\\", running: 480, swimming: 400 },\\n]\\n\\nconst chartConfig = {\\n  running: {\\n    label: \\\"Running\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  swimming: {\\n    label: \\\"Swimming\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartTooltipLabelNone() {\\n  return (\\n    <Card>\\n      <CardHeader>\\n        <CardTitle>Tooltip - No Label</CardTitle>\\n        <CardDescription>Tooltip with no label.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <ChartContainer config={chartConfig}>\\n          <BarChart accessibilityLayer data={chartData}>\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              tickMargin={10}\\n              axisLine={false}\\n              tickFormatter={(value) => {\\n                return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                  weekday: \\\"short\\\",\\n                })\\n              }}\\n            />\\n            <Bar\\n              dataKey=\\\"running\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-running)\\\"\\n              radius={[0, 0, 4, 4]}\\n            />\\n            <Bar\\n              dataKey=\\\"swimming\\\"\\n              stackId=\\\"a\\\"\\n              fill=\\\"var(--color-swimming)\\\"\\n              radius={[4, 4, 0, 0]}\\n            />\\n            <ChartTooltip\\n              content={<ChartTooltipContent hideIndicator hideLabel />}\\n              cursor={false}\\n              defaultIndex={1}\\n            />\\n          </BarChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"categories\": [\n    \"charts\",\n    \"charts-tooltip\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\n// Helper to extract item config from a payload.\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/checkbox-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-demo\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/checkbox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function CheckboxDemo() {\\n  return (\\n    <div className=\\\"flex flex-col gap-6\\\">\\n      <div className=\\\"flex items-center gap-3\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <Label htmlFor=\\\"terms\\\">Accept terms and conditions</Label>\\n      </div>\\n      <div className=\\\"flex items-start gap-3\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <div className=\\\"grid gap-2\\\">\\n          <Label htmlFor=\\\"terms-2\\\">Accept terms and conditions</Label>\\n          <p className=\\\"text-sm text-muted-foreground\\\">\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </p>\\n        </div>\\n      </div>\\n      <div className=\\\"flex items-start gap-3\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <Label htmlFor=\\\"toggle\\\">Enable notifications</Label>\\n      </div>\\n      <Label className=\\\"flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-[[aria-checked=true]]:border-blue-600 has-[[aria-checked=true]]:bg-blue-50 dark:has-[[aria-checked=true]]:border-blue-900 dark:has-[[aria-checked=true]]:bg-blue-950\\\">\\n        <Checkbox\\n          id=\\\"toggle-2\\\"\\n          defaultChecked\\n          className=\\\"data-[state=checked]:border-blue-600 data-[state=checked]:bg-blue-600 data-[state=checked]:text-white dark:data-[state=checked]:border-blue-700 dark:data-[state=checked]:bg-blue-700\\\"\\n        />\\n        <div className=\\\"grid gap-1.5 font-normal\\\">\\n          <p className=\\\"text-sm leading-none font-medium\\\">\\n            Enable notifications\\n          </p>\\n          <p className=\\\"text-sm text-muted-foreground\\\">\\n            You can enable or disable notifications at any time.\\n          </p>\\n        </div>\\n      </Label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/checkbox-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-disabled\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/checkbox-disabled.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\n\\nexport default function CheckboxDisabled() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Checkbox id=\\\"terms2\\\" disabled />\\n      <label\\n        htmlFor=\\\"terms2\\\"\\n        className=\\\"text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n      >\\n        Accept terms and conditions\\n      </label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/checkbox-form-multiple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-form-multiple\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/checkbox-form-multiple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\n\\nconst items = [\\n  {\\n    id: \\\"recents\\\",\\n    label: \\\"Recents\\\",\\n  },\\n  {\\n    id: \\\"home\\\",\\n    label: \\\"Home\\\",\\n  },\\n  {\\n    id: \\\"applications\\\",\\n    label: \\\"Applications\\\",\\n  },\\n  {\\n    id: \\\"desktop\\\",\\n    label: \\\"Desktop\\\",\\n  },\\n  {\\n    id: \\\"downloads\\\",\\n    label: \\\"Downloads\\\",\\n  },\\n  {\\n    id: \\\"documents\\\",\\n    label: \\\"Documents\\\",\\n  },\\n] as const\\n\\nconst FormSchema = z.object({\\n  items: z.array(z.string()).refine((value) => value.some((item) => item), {\\n    message: \\\"You have to select at least one item.\\\",\\n  }),\\n})\\n\\nexport default function CheckboxReactHookFormMultiple() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      items: [\\\"recents\\\", \\\"home\\\"],\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"items\\\"\\n          render={() => (\\n            <FormItem>\\n              <div className=\\\"mb-4\\\">\\n                <FormLabel className=\\\"text-base\\\">Sidebar</FormLabel>\\n                <FormDescription>\\n                  Select the items you want to display in the sidebar.\\n                </FormDescription>\\n              </div>\\n              {items.map((item) => (\\n                <FormField\\n                  key={item.id}\\n                  control={form.control}\\n                  name=\\\"items\\\"\\n                  render={({ field }) => {\\n                    return (\\n                      <FormItem\\n                        key={item.id}\\n                        className=\\\"flex flex-row items-center gap-2\\\"\\n                      >\\n                        <FormControl>\\n                          <Checkbox\\n                            checked={field.value?.includes(item.id)}\\n                            onCheckedChange={(checked) => {\\n                              return checked\\n                                ? field.onChange([...field.value, item.id])\\n                                : field.onChange(\\n                                    field.value?.filter(\\n                                      (value) => value !== item.id\\n                                    )\\n                                  )\\n                            }}\\n                          />\\n                        </FormControl>\\n                        <FormLabel className=\\\"text-sm font-normal\\\">\\n                          {item.label}\\n                        </FormLabel>\\n                      </FormItem>\\n                    )\\n                  }}\\n                />\\n              ))}\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/checkbox-form-single.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-form-single\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/checkbox-form-single.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport Link from \\\"next/link\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\n\\nconst FormSchema = z.object({\\n  mobile: z.boolean().default(false).optional(),\\n})\\n\\nexport default function CheckboxReactHookFormSingle() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      mobile: true,\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form\\n        onSubmit={form.handleSubmit(onSubmit)}\\n        className=\\\"flex flex-col items-start gap-4\\\"\\n      >\\n        <FormField\\n          control={form.control}\\n          name=\\\"mobile\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-row items-start gap-2 rounded-md border p-4 shadow-sm\\\">\\n              <FormControl>\\n                <Checkbox\\n                  checked={field.value}\\n                  onCheckedChange={field.onChange}\\n                />\\n              </FormControl>\\n              <div className=\\\"space-y-1 leading-none\\\">\\n                <FormLabel>\\n                  Use different settings for my mobile devices\\n                </FormLabel>\\n                <FormDescription>\\n                  You can manage your mobile notifications in the{\\\" \\\"}\\n                  <Link href=\\\"/examples/forms\\\">mobile settings</Link> page.\\n                </FormDescription>\\n              </div>\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/checkbox-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-with-text\",\n  \"registryDependencies\": [\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/checkbox-with-text.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\n\\nexport default function CheckboxWithText() {\\n  return (\\n    <div className=\\\"items-top flex gap-2\\\">\\n      <Checkbox id=\\\"terms1\\\" />\\n      <div className=\\\"grid gap-1.5 leading-none\\\">\\n        <label\\n          htmlFor=\\\"terms1\\\"\\n          className=\\\"text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70\\\"\\n        >\\n          Accept terms and conditions\\n        </label>\\n        <p className=\\\"text-sm text-muted-foreground\\\">\\n          You agree to our Terms of Service and Privacy Policy.\\n        </p>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CheckIcon } from \\\"lucide-react\\\"\\nimport { Checkbox as CheckboxPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Checkbox({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none\\\"\\n      >\\n        <CheckIcon className=\\\"size-3.5\\\" />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/collapsible-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-demo\",\n  \"registryDependencies\": [\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/collapsible-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\n\\nexport default function CollapsibleDemo() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Collapsible\\n      open={isOpen}\\n      onOpenChange={setIsOpen}\\n      className=\\\"flex w-[350px] flex-col gap-2\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between gap-4 px-4\\\">\\n        <h4 className=\\\"text-sm font-semibold\\\">\\n          @peduarte starred 3 repositories\\n        </h4>\\n        <CollapsibleTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n            <ChevronsUpDown />\\n            <span className=\\\"sr-only\\\">Toggle</span>\\n          </Button>\\n        </CollapsibleTrigger>\\n      </div>\\n      <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm\\\">\\n        @radix-ui/primitives\\n      </div>\\n      <CollapsibleContent className=\\\"flex flex-col gap-2\\\">\\n        <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm\\\">\\n          @radix-ui/colors\\n        </div>\\n        <div className=\\\"rounded-md border px-4 py-2 font-mono text-sm\\\">\\n          @stitches/react\\n        </div>\\n      </CollapsibleContent>\\n    </Collapsible>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"radix-ui\\\"\\n\\nfunction Collapsible({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleTrigger\\n      data-slot=\\\"collapsible-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CollapsibleContent({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleContent\\n      data-slot=\\\"collapsible-content\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/combobox-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-demo\",\n  \"registryDependencies\": [\n    \"command\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/combobox-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york-v4/ui/command\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nconst frameworks = [\\n  {\\n    value: \\\"next.js\\\",\\n    label: \\\"Next.js\\\",\\n  },\\n  {\\n    value: \\\"sveltekit\\\",\\n    label: \\\"SvelteKit\\\",\\n  },\\n  {\\n    value: \\\"nuxt.js\\\",\\n    label: \\\"Nuxt.js\\\",\\n  },\\n  {\\n    value: \\\"remix\\\",\\n    label: \\\"Remix\\\",\\n  },\\n  {\\n    value: \\\"astro\\\",\\n    label: \\\"Astro\\\",\\n  },\\n]\\n\\nexport default function ComboboxDemo() {\\n  const [open, setOpen] = React.useState(false)\\n  const [value, setValue] = React.useState(\\\"\\\")\\n\\n  return (\\n    <Popover open={open} onOpenChange={setOpen}>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant=\\\"outline\\\"\\n          role=\\\"combobox\\\"\\n          aria-expanded={open}\\n          className=\\\"w-[200px] justify-between\\\"\\n        >\\n          {value\\n            ? frameworks.find((framework) => framework.value === value)?.label\\n            : \\\"Select framework...\\\"}\\n          <ChevronsUpDown className=\\\"opacity-50\\\" />\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-[200px] p-0\\\">\\n        <Command>\\n          <CommandInput placeholder=\\\"Search framework...\\\" className=\\\"h-9\\\" />\\n          <CommandList>\\n            <CommandEmpty>No framework found.</CommandEmpty>\\n            <CommandGroup>\\n              {frameworks.map((framework) => (\\n                <CommandItem\\n                  key={framework.value}\\n                  value={framework.value}\\n                  onSelect={(currentValue) => {\\n                    setValue(currentValue === value ? \\\"\\\" : currentValue)\\n                    setOpen(false)\\n                  }}\\n                >\\n                  {framework.label}\\n                  <Check\\n                    className={cn(\\n                      \\\"ml-auto\\\",\\n                      value === framework.value ? \\\"opacity-100\\\" : \\\"opacity-0\\\"\\n                    )}\\n                  />\\n                </CommandItem>\\n              ))}\\n            </CommandGroup>\\n          </CommandList>\\n        </Command>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/combobox-dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-dropdown-menu\",\n  \"registryDependencies\": [\n    \"command\",\n    \"dropdown-menu\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/combobox-dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york-v4/ui/command\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nconst labels = [\\n  \\\"feature\\\",\\n  \\\"bug\\\",\\n  \\\"enhancement\\\",\\n  \\\"documentation\\\",\\n  \\\"design\\\",\\n  \\\"question\\\",\\n  \\\"maintenance\\\",\\n]\\n\\nexport default function ComboboxDropdownMenu() {\\n  const [label, setLabel] = React.useState(\\\"feature\\\")\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"flex w-full flex-col items-start justify-between rounded-md border px-4 py-3 sm:flex-row sm:items-center\\\">\\n      <p className=\\\"text-sm leading-none font-medium\\\">\\n        <span className=\\\"mr-2 rounded-lg bg-primary px-2 py-1 text-xs text-primary-foreground\\\">\\n          {label}\\n        </span>\\n        <span className=\\\"text-muted-foreground\\\">Create a new project</span>\\n      </p>\\n      <DropdownMenu open={open} onOpenChange={setOpen}>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            <MoreHorizontal />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-[200px]\\\">\\n          <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Assign to...</DropdownMenuItem>\\n            <DropdownMenuItem>Set due date...</DropdownMenuItem>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Apply label</DropdownMenuSubTrigger>\\n              <DropdownMenuSubContent className=\\\"p-0\\\">\\n                <Command>\\n                  <CommandInput\\n                    placeholder=\\\"Filter label...\\\"\\n                    autoFocus={true}\\n                    className=\\\"h-9\\\"\\n                  />\\n                  <CommandList>\\n                    <CommandEmpty>No label found.</CommandEmpty>\\n                    <CommandGroup>\\n                      {labels.map((label) => (\\n                        <CommandItem\\n                          key={label}\\n                          value={label}\\n                          onSelect={(value) => {\\n                            setLabel(value)\\n                            setOpen(false)\\n                          }}\\n                        >\\n                          {label}\\n                        </CommandItem>\\n                      ))}\\n                    </CommandGroup>\\n                  </CommandList>\\n                </Command>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"text-red-600\\\">\\n              Delete\\n              <DropdownMenuShortcut>⌘⌫</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/combobox-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-form\",\n  \"registryDependencies\": [\n    \"command\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/combobox-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Check, ChevronsUpDown } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york-v4/ui/command\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nconst languages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n] as const\\n\\nconst FormSchema = z.object({\\n  language: z.string({\\n    required_error: \\\"Please select a language.\\\",\\n  }),\\n})\\n\\nexport default function ComboboxForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"language\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Language</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      role=\\\"combobox\\\"\\n                      className={cn(\\n                        \\\"w-[200px] justify-between\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value\\n                        ? languages.find(\\n                            (language) => language.value === field.value\\n                          )?.label\\n                        : \\\"Select language\\\"}\\n                      <ChevronsUpDown className=\\\"opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-[200px] p-0\\\">\\n                  <Command>\\n                    <CommandInput\\n                      placeholder=\\\"Search framework...\\\"\\n                      className=\\\"h-9\\\"\\n                    />\\n                    <CommandList>\\n                      <CommandEmpty>No framework found.</CommandEmpty>\\n                      <CommandGroup>\\n                        {languages.map((language) => (\\n                          <CommandItem\\n                            value={language.label}\\n                            key={language.value}\\n                            onSelect={() => {\\n                              form.setValue(\\\"language\\\", language.value)\\n                            }}\\n                          >\\n                            {language.label}\\n                            <Check\\n                              className={cn(\\n                                \\\"ml-auto\\\",\\n                                language.value === field.value\\n                                  ? \\\"opacity-100\\\"\\n                                  : \\\"opacity-0\\\"\\n                              )}\\n                            />\\n                          </CommandItem>\\n                        ))}\\n                      </CommandGroup>\\n                    </CommandList>\\n                  </Command>\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                This is the language that will be used in the dashboard.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/combobox-popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-popover\",\n  \"registryDependencies\": [\n    \"combobox\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/combobox-popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york-v4/ui/command\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\ntype Status = {\\n  value: string\\n  label: string\\n}\\n\\nconst statuses: Status[] = [\\n  {\\n    value: \\\"backlog\\\",\\n    label: \\\"Backlog\\\",\\n  },\\n  {\\n    value: \\\"todo\\\",\\n    label: \\\"Todo\\\",\\n  },\\n  {\\n    value: \\\"in progress\\\",\\n    label: \\\"In Progress\\\",\\n  },\\n  {\\n    value: \\\"done\\\",\\n    label: \\\"Done\\\",\\n  },\\n  {\\n    value: \\\"canceled\\\",\\n    label: \\\"Canceled\\\",\\n  },\\n]\\n\\nexport default function ComboboxPopover() {\\n  const [open, setOpen] = React.useState(false)\\n  const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\\n    null\\n  )\\n\\n  return (\\n    <div className=\\\"flex items-center space-x-4\\\">\\n      <p className=\\\"text-sm text-muted-foreground\\\">Status</p>\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-[150px] justify-start\\\">\\n            {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"p-0\\\" side=\\\"right\\\" align=\\\"start\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Change status...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup>\\n                {statuses.map((status) => (\\n                  <CommandItem\\n                    key={status.value}\\n                    value={status.value}\\n                    onSelect={(value) => {\\n                      setSelectedStatus(\\n                        statuses.find((priority) => priority.value === value) ||\\n                          null\\n                      )\\n                      setOpen(false)\\n                    }}\\n                  >\\n                    {status.label}\\n                  </CommandItem>\\n                ))}\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/combobox-responsive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-responsive\",\n  \"registryDependencies\": [\n    \"combobox\",\n    \"popover\",\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/combobox-responsive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n} from \\\"@/registry/new-york-v4/ui/command\\\"\\nimport {\\n  Drawer,\\n  DrawerContent,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york-v4/ui/drawer\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\ntype Status = {\\n  value: string\\n  label: string\\n}\\n\\nconst statuses: Status[] = [\\n  {\\n    value: \\\"backlog\\\",\\n    label: \\\"Backlog\\\",\\n  },\\n  {\\n    value: \\\"todo\\\",\\n    label: \\\"Todo\\\",\\n  },\\n  {\\n    value: \\\"in progress\\\",\\n    label: \\\"In Progress\\\",\\n  },\\n  {\\n    value: \\\"done\\\",\\n    label: \\\"Done\\\",\\n  },\\n  {\\n    value: \\\"canceled\\\",\\n    label: \\\"Canceled\\\",\\n  },\\n]\\n\\nexport default function ComboBoxResponsive() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n  const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\\n    null\\n  )\\n\\n  if (isDesktop) {\\n    return (\\n      <Popover open={open} onOpenChange={setOpen}>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-[150px] justify-start\\\">\\n            {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-[200px] p-0\\\" align=\\\"start\\\">\\n          <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\\n        </PopoverContent>\\n      </Popover>\\n    )\\n  }\\n\\n  return (\\n    <Drawer open={open} onOpenChange={setOpen}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\" className=\\\"w-[150px] justify-start\\\">\\n          {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <div className=\\\"mt-4 border-t\\\">\\n          <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\\n        </div>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\\nfunction StatusList({\\n  setOpen,\\n  setSelectedStatus,\\n}: {\\n  setOpen: (open: boolean) => void\\n  setSelectedStatus: (status: Status | null) => void\\n}) {\\n  return (\\n    <Command>\\n      <CommandInput placeholder=\\\"Filter status...\\\" />\\n      <CommandList>\\n        <CommandEmpty>No results found.</CommandEmpty>\\n        <CommandGroup>\\n          {statuses.map((status) => (\\n            <CommandItem\\n              key={status.value}\\n              value={status.value}\\n              onSelect={(value) => {\\n                setSelectedStatus(\\n                  statuses.find((priority) => priority.value === value) || null\\n                )\\n                setOpen(false)\\n              }}\\n            >\\n              {status.label}\\n            </CommandItem>\\n          ))}\\n        </CommandGroup>\\n      </CommandList>\\n    </Command>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\nimport { CheckIcon, ChevronDownIcon, XIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <ChevronDownIcon\\n        data-slot=\\\"combobox-trigger-icon\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <XIcon className=\\\"pointer-events-none\\\" />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            asChild\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          >\\n            <ComboboxTrigger />\\n          </InputGroupButton>\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"group/combobox-content relative max-h-96 w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        data-slot=\\\"combobox-item-indicator\\\"\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <CheckIcon className=\\\"pointer-events-none size-4 pointer-coarse:size-5\\\" />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs text-muted-foreground pointer-coarse:px-3 pointer-coarse:py-2 pointer-coarse:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <XIcon className=\\\"pointer-events-none\\\" />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/command-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-demo\",\n  \"registryDependencies\": [\n    \"command\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/command-demo.tsx\",\n      \"content\": \"import {\\n  Calculator,\\n  Calendar,\\n  CreditCard,\\n  Settings,\\n  Smile,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Command,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/new-york-v4/ui/command\\\"\\n\\nexport default function CommandDemo() {\\n  return (\\n    <Command className=\\\"rounded-lg border shadow-md md:min-w-[450px]\\\">\\n      <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n      <CommandList>\\n        <CommandEmpty>No results found.</CommandEmpty>\\n        <CommandGroup heading=\\\"Suggestions\\\">\\n          <CommandItem>\\n            <Calendar />\\n            <span>Calendar</span>\\n          </CommandItem>\\n          <CommandItem>\\n            <Smile />\\n            <span>Search Emoji</span>\\n          </CommandItem>\\n          <CommandItem disabled>\\n            <Calculator />\\n            <span>Calculator</span>\\n          </CommandItem>\\n        </CommandGroup>\\n        <CommandSeparator />\\n        <CommandGroup heading=\\\"Settings\\\">\\n          <CommandItem>\\n            <User />\\n            <span>Profile</span>\\n            <CommandShortcut>⌘P</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <CreditCard />\\n            <span>Billing</span>\\n            <CommandShortcut>⌘B</CommandShortcut>\\n          </CommandItem>\\n          <CommandItem>\\n            <Settings />\\n            <span>Settings</span>\\n            <CommandShortcut>⌘S</CommandShortcut>\\n          </CommandItem>\\n        </CommandGroup>\\n      </CommandList>\\n    </Command>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/command-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-dialog\",\n  \"registryDependencies\": [\n    \"command\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/command-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Calculator,\\n  Calendar,\\n  CreditCard,\\n  Settings,\\n  Smile,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/new-york-v4/ui/command\\\"\\n\\nexport default function CommandDialogDemo() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    const down = (e: KeyboardEvent) => {\\n      if (e.key === \\\"j\\\" && (e.metaKey || e.ctrlKey)) {\\n        e.preventDefault()\\n        setOpen((open) => !open)\\n      }\\n    }\\n\\n    document.addEventListener(\\\"keydown\\\", down)\\n    return () => document.removeEventListener(\\\"keydown\\\", down)\\n  }, [])\\n\\n  return (\\n    <>\\n      <p className=\\\"text-sm text-muted-foreground\\\">\\n        Press{\\\" \\\"}\\n        <kbd className=\\\"pointer-events-none inline-flex h-5 items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100 select-none\\\">\\n          <span className=\\\"text-xs\\\">⌘</span>J\\n        </kbd>\\n      </p>\\n      <CommandDialog open={open} onOpenChange={setOpen}>\\n        <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n        <CommandList>\\n          <CommandEmpty>No results found.</CommandEmpty>\\n          <CommandGroup heading=\\\"Suggestions\\\">\\n            <CommandItem>\\n              <Calendar />\\n              <span>Calendar</span>\\n            </CommandItem>\\n            <CommandItem>\\n              <Smile />\\n              <span>Search Emoji</span>\\n            </CommandItem>\\n            <CommandItem>\\n              <Calculator />\\n              <span>Calculator</span>\\n            </CommandItem>\\n          </CommandGroup>\\n          <CommandSeparator />\\n          <CommandGroup heading=\\\"Settings\\\">\\n            <CommandItem>\\n              <User />\\n              <span>Profile</span>\\n              <CommandShortcut>⌘P</CommandShortcut>\\n            </CommandItem>\\n            <CommandItem>\\n              <CreditCard />\\n              <span>Billing</span>\\n              <CommandShortcut>⌘B</CommandShortcut>\\n            </CommandItem>\\n            <CommandItem>\\n              <Settings />\\n              <span>Settings</span>\\n              <CommandShortcut>⌘S</CommandShortcut>\\n            </CommandItem>\\n          </CommandGroup>\\n        </CommandList>\\n      </CommandDialog>\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\nimport { SearchIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/new-york-v4/ui/dialog\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof Dialog> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\\"overflow-hidden p-0\\\", className)}\\n        showCloseButton={showCloseButton}\\n      >\\n        <Command className=\\\"**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\\\">\\n          {children}\\n        </Command>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div\\n      data-slot=\\\"command-input-wrapper\\\"\\n      className=\\\"flex h-9 items-center gap-2 border-b px-3\\\"\\n    >\\n      <SearchIcon className=\\\"size-4 shrink-0 opacity-50\\\" />\\n      <CommandPrimitive.Input\\n        data-slot=\\\"command-input\\\"\\n        className={cn(\\n          \\\"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className=\\\"py-6 text-center text-sm\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/context-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-demo\",\n  \"registryDependencies\": [\n    \"context-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/context-menu-demo.tsx\",\n      \"content\": \"import {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/context-menu\\\"\\n\\nexport default function ContextMenuDemo() {\\n  return (\\n    <ContextMenu>\\n      <ContextMenuTrigger className=\\\"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm\\\">\\n        Right click here\\n      </ContextMenuTrigger>\\n      <ContextMenuContent className=\\\"w-52\\\">\\n        <ContextMenuItem inset>\\n          Back\\n          <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset disabled>\\n          Forward\\n          <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuItem inset>\\n          Reload\\n          <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n        </ContextMenuItem>\\n        <ContextMenuSub>\\n          <ContextMenuSubTrigger inset>More Tools</ContextMenuSubTrigger>\\n          <ContextMenuSubContent className=\\\"w-44\\\">\\n            <ContextMenuItem>Save Page...</ContextMenuItem>\\n            <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n            <ContextMenuItem>Name Window...</ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>Developer Tools</ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n          </ContextMenuSubContent>\\n        </ContextMenuSub>\\n        <ContextMenuSeparator />\\n        <ContextMenuCheckboxItem checked>\\n          Show Bookmarks\\n        </ContextMenuCheckboxItem>\\n        <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\\n        <ContextMenuSeparator />\\n        <ContextMenuRadioGroup value=\\\"pedro\\\">\\n          <ContextMenuLabel inset>People</ContextMenuLabel>\\n          <ContextMenuRadioItem value=\\\"pedro\\\">\\n            Pedro Duarte\\n          </ContextMenuRadioItem>\\n          <ContextMenuRadioItem value=\\\"colm\\\">Colm Tuite</ContextMenuRadioItem>\\n        </ContextMenuRadioGroup>\\n      </ContextMenuContent>\\n    </ContextMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction ContextMenu({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuTrigger({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\\n  return (\\n    <ContextMenuPrimitive.Trigger data-slot=\\\"context-menu-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\\n  return <ContextMenuPrimitive.Sub data-slot=\\\"context-menu-sub\\\" {...props} />\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ChevronRightIcon className=\\\"ml-auto\\\" />\\n    </ContextMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\\n  return (\\n    <ContextMenuPrimitive.SubContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className={cn(\\n        \\\"z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Content\\n        data-slot=\\\"context-menu-content\\\"\\n        className={cn(\\n          \\\"z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <CheckIcon className=\\\"size-4\\\" />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <CircleIcon className=\\\"size-2 fill-current\\\" />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Label\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-sm font-medium text-foreground data-[inset]:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tabler/icons-react\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/site-header\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  IconCamera,\\n  IconChartBar,\\n  IconDashboard,\\n  IconDatabase,\\n  IconFileAi,\\n  IconFileDescription,\\n  IconFileWord,\\n  IconFolder,\\n  IconHelp,\\n  IconInnerShadowTop,\\n  IconListDetails,\\n  IconReport,\\n  IconSearch,\\n  IconSettings,\\n  IconUsers,\\n} from \\\"@tabler/icons-react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/new-york-v4/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: IconDashboard,\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: IconListDetails,\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: IconChartBar,\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: IconFolder,\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: IconUsers,\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: IconCamera,\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: IconFileDescription,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: IconFileAi,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: IconSettings,\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: IconHelp,\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: IconSearch,\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: IconDatabase,\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: IconReport,\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: IconFileWord,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              asChild\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n            >\\n              <a href=\\\"#\\\">\\n                <IconInnerShadowTop className=\\\"size-5!\\\" />\\n                <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/new-york-v4/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            type=\\\"single\\\"\\n            value={timeRange}\\n            onValueChange={setTimeRange}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select value={timeRange} onValueChange={setTimeRange}>\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  IconChevronDown,\\n  IconChevronLeft,\\n  IconChevronRight,\\n  IconChevronsLeft,\\n  IconChevronsRight,\\n  IconCircleCheckFilled,\\n  IconDotsVertical,\\n  IconGripVertical,\\n  IconLayoutColumns,\\n  IconLoader,\\n  IconPlus,\\n  IconTrendingUp,\\n} from \\\"@tabler/icons-react\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/new-york-v4/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/new-york-v4/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york-v4/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/new-york-v4/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tabs\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconGripVertical className=\\\"size-3 text-muted-foreground\\\" />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\n\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={\\n            table.getIsAllPageRowsSelected() ||\\n            (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconCircleCheckFilled className=\\\"fill-green-500 dark:fill-green-400\\\" />\\n        ) : (\\n          <IconLoader />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select>\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n              <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                Jamik Tashpulatov\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            className=\\\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\\\"\\n            size=\\\"icon\\\"\\n          >\\n            <IconDotsVertical />\\n            <span className=\\\"sr-only\\\">Open menu</span>\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\n\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\n\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select defaultValue=\\\"outline\\\">\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n            <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n            <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n            <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                <IconLayoutColumns />\\n                <span className=\\\"hidden lg:inline\\\">Customize Columns</span>\\n                <span className=\\\"lg:hidden\\\">Columns</span>\\n                <IconChevronDown />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlus />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  {[10, 20, 30, 40, 50].map((pageSize) => (\\n                    <SelectItem key={pageSize} value={`${pageSize}`}>\\n                      {pageSize}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconChevronsLeft />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconChevronLeft />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconChevronRight />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconChevronsRight />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconTrendingUp className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select defaultValue={item.type}>\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"Table of Contents\\\">\\n                      Table of Contents\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Executive Summary\\\">\\n                      Executive Summary\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Technical Approach\\\">\\n                      Technical Approach\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                    <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                    <SelectItem value=\\\"Focus Documents\\\">\\n                      Focus Documents\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                    <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select defaultValue={item.status}>\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                    <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                    <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select defaultValue={item.reviewer}>\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                  <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                    Jamik Tashpulatov\\n                  </SelectItem>\\n                  <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Done</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  IconDots,\\n  IconFolder,\\n  IconShare3,\\n  IconTrash,\\n  type Icon,\\n} from \\\"@tabler/icons-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: Icon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"rounded-sm data-[state=open]:bg-accent\\\"\\n                >\\n                  <IconDots />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconFolder />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconShare3 />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconTrash />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconDots className=\\\"text-sidebar-foreground/70\\\" />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { IconCirclePlusFilled, IconMail, type Icon } from \\\"@tabler/icons-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: Icon\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconCirclePlusFilled />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconMail />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon && <item.icon />}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type Icon } from \\\"@tabler/icons-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: Icon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  IconCreditCard,\\n  IconDotsVertical,\\n  IconLogout,\\n  IconNotification,\\n  IconUserCircle,\\n} from \\\"@tabler/icons-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg grayscale\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  {user.email}\\n                </span>\\n              </div>\\n              <IconDotsVertical className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                    {user.email}\\n                  </span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconUserCircle />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconCreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconNotification />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconLogout />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"import { IconTrendingDown, IconTrendingUp } from \\\"@tabler/icons-react\\\"\\n\\nimport { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconTrendingUp />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month <IconTrendingUp className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconTrendingDown />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period <IconTrendingDown className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconTrendingUp />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention <IconTrendingUp className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconTrendingUp />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase <IconTrendingUp className=\\\"size-4\\\" />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 data-[orientation=vertical]:h-4\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n        <div className=\\\"ml-auto flex items-center gap-2\\\">\\n          <Button variant=\\\"ghost\\\" asChild size=\\\"sm\\\" className=\\\"hidden sm:flex\\\">\\n            <a\\n              href=\\\"https://github.com/shadcn-ui/ui/tree/main/apps/v4/app/(examples)/dashboard\\\"\\n              rel=\\\"noopener noreferrer\\\"\\n              target=\\\"_blank\\\"\\n              className=\\\"dark:text-foreground\\\"\\n            >\\n              GitHub\\n            </a>\\n          </Button>\\n        </div>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/data-table-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"data-table-demo\",\n  \"registryDependencies\": [\n    \"data-table\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/data-table-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/new-york-v4/ui/table\\\"\\n\\nconst data: Payment[] = [\\n  {\\n    id: \\\"m5gr84i9\\\",\\n    amount: 316,\\n    status: \\\"success\\\",\\n    email: \\\"ken99@example.com\\\",\\n  },\\n  {\\n    id: \\\"3u1reuv4\\\",\\n    amount: 242,\\n    status: \\\"success\\\",\\n    email: \\\"Abe45@example.com\\\",\\n  },\\n  {\\n    id: \\\"derv1ws0\\\",\\n    amount: 837,\\n    status: \\\"processing\\\",\\n    email: \\\"Monserrat44@example.com\\\",\\n  },\\n  {\\n    id: \\\"5kma53ae\\\",\\n    amount: 874,\\n    status: \\\"success\\\",\\n    email: \\\"Silas22@example.com\\\",\\n  },\\n  {\\n    id: \\\"bhqecj4p\\\",\\n    amount: 721,\\n    status: \\\"failed\\\",\\n    email: \\\"carmella@example.com\\\",\\n  },\\n]\\n\\nexport type Payment = {\\n  id: string\\n  amount: number\\n  status: \\\"pending\\\" | \\\"processing\\\" | \\\"success\\\" | \\\"failed\\\"\\n  email: string\\n}\\n\\nexport const columns: ColumnDef<Payment>[] = [\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <Checkbox\\n        checked={\\n          table.getIsAllPageRowsSelected() ||\\n          (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n        }\\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n        aria-label=\\\"Select all\\\"\\n      />\\n    ),\\n    cell: ({ row }) => (\\n      <Checkbox\\n        checked={row.getIsSelected()}\\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\\n        aria-label=\\\"Select row\\\"\\n      />\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"capitalize\\\">{row.getValue(\\\"status\\\")}</div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"email\\\",\\n    header: ({ column }) => {\\n      return (\\n        <Button\\n          variant=\\\"ghost\\\"\\n          onClick={() => column.toggleSorting(column.getIsSorted() === \\\"asc\\\")}\\n        >\\n          Email\\n          <ArrowUpDown />\\n        </Button>\\n      )\\n    },\\n    cell: ({ row }) => <div className=\\\"lowercase\\\">{row.getValue(\\\"email\\\")}</div>,\\n  },\\n  {\\n    accessorKey: \\\"amount\\\",\\n    header: () => <div className=\\\"text-right\\\">Amount</div>,\\n    cell: ({ row }) => {\\n      const amount = parseFloat(row.getValue(\\\"amount\\\"))\\n\\n      // Format the amount as a dollar amount\\n      const formatted = new Intl.NumberFormat(\\\"en-US\\\", {\\n        style: \\\"currency\\\",\\n        currency: \\\"USD\\\",\\n      }).format(amount)\\n\\n      return <div className=\\\"text-right font-medium\\\">{formatted}</div>\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    enableHiding: false,\\n    cell: ({ row }) => {\\n      const payment = row.original\\n\\n      return (\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"ghost\\\" className=\\\"h-8 w-8 p-0\\\">\\n              <span className=\\\"sr-only\\\">Open menu</span>\\n              <MoreHorizontal />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\">\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem\\n              onClick={() => navigator.clipboard.writeText(payment.id)}\\n            >\\n              Copy payment ID\\n            </DropdownMenuItem>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>View customer</DropdownMenuItem>\\n            <DropdownMenuItem>View payment details</DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      )\\n    },\\n  },\\n]\\n\\nexport default function DataTableDemo() {\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [rowSelection, setRowSelection] = React.useState({})\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    getCoreRowModel: getCoreRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onRowSelectionChange: setRowSelection,\\n    state: {\\n      sorting,\\n      columnFilters,\\n      columnVisibility,\\n      rowSelection,\\n    },\\n  })\\n\\n  return (\\n    <div className=\\\"w-full\\\">\\n      <div className=\\\"flex items-center py-4\\\">\\n        <Input\\n          placeholder=\\\"Filter emails...\\\"\\n          value={(table.getColumn(\\\"email\\\")?.getFilterValue() as string) ?? \\\"\\\"}\\n          onChange={(event) =>\\n            table.getColumn(\\\"email\\\")?.setFilterValue(event.target.value)\\n          }\\n          className=\\\"max-w-sm\\\"\\n        />\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"outline\\\" className=\\\"ml-auto\\\">\\n              Columns <ChevronDown />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\">\\n            {table\\n              .getAllColumns()\\n              .filter((column) => column.getCanHide())\\n              .map((column) => {\\n                return (\\n                  <DropdownMenuCheckboxItem\\n                    key={column.id}\\n                    className=\\\"capitalize\\\"\\n                    checked={column.getIsVisible()}\\n                    onCheckedChange={(value) =>\\n                      column.toggleVisibility(!!value)\\n                    }\\n                  >\\n                    {column.id}\\n                  </DropdownMenuCheckboxItem>\\n                )\\n              })}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n      <div className=\\\"overflow-hidden rounded-md border\\\">\\n        <Table>\\n          <TableHeader>\\n            {table.getHeaderGroups().map((headerGroup) => (\\n              <TableRow key={headerGroup.id}>\\n                {headerGroup.headers.map((header) => {\\n                  return (\\n                    <TableHead key={header.id}>\\n                      {header.isPlaceholder\\n                        ? null\\n                        : flexRender(\\n                            header.column.columnDef.header,\\n                            header.getContext()\\n                          )}\\n                    </TableHead>\\n                  )\\n                })}\\n              </TableRow>\\n            ))}\\n          </TableHeader>\\n          <TableBody>\\n            {table.getRowModel().rows?.length ? (\\n              table.getRowModel().rows.map((row) => (\\n                <TableRow\\n                  key={row.id}\\n                  data-state={row.getIsSelected() && \\\"selected\\\"}\\n                >\\n                  {row.getVisibleCells().map((cell) => (\\n                    <TableCell key={cell.id}>\\n                      {flexRender(\\n                        cell.column.columnDef.cell,\\n                        cell.getContext()\\n                      )}\\n                    </TableCell>\\n                  ))}\\n                </TableRow>\\n              ))\\n            ) : (\\n              <TableRow>\\n                <TableCell\\n                  colSpan={columns.length}\\n                  className=\\\"h-24 text-center\\\"\\n                >\\n                  No results.\\n                </TableCell>\\n              </TableRow>\\n            )}\\n          </TableBody>\\n        </Table>\\n      </div>\\n      <div className=\\\"flex items-center justify-end space-x-2 py-4\\\">\\n        <div className=\\\"flex-1 text-sm text-muted-foreground\\\">\\n          {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n          {table.getFilteredRowModel().rows.length} row(s) selected.\\n        </div>\\n        <div className=\\\"space-x-2\\\">\\n          <Button\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            onClick={() => table.previousPage()}\\n            disabled={!table.getCanPreviousPage()}\\n          >\\n            Previous\\n          </Button>\\n          <Button\\n            variant=\\\"outline\\\"\\n            size=\\\"sm\\\"\\n            onClick={() => table.nextPage()}\\n            disabled={!table.getCanNextPage()}\\n          >\\n            Next\\n          </Button>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/date-picker-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-demo\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/date-picker-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function DatePickerDemo() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant={\\\"outline\\\"}\\n          className={cn(\\n            \\\"w-[240px] justify-start text-left font-normal\\\",\\n            !date && \\\"text-muted-foreground\\\"\\n          )}\\n        >\\n          <CalendarIcon />\\n          {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          initialFocus\\n        />\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/date-picker-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-form\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"form\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/date-picker-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nconst FormSchema = z.object({\\n  dob: z.date({\\n    required_error: \\\"A date of birth is required.\\\",\\n  }),\\n})\\n\\nexport default function DatePickerForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"space-y-8\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"dob\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"flex flex-col\\\">\\n              <FormLabel>Date of birth</FormLabel>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <FormControl>\\n                    <Button\\n                      variant={\\\"outline\\\"}\\n                      className={cn(\\n                        \\\"w-[240px] pl-3 text-left font-normal\\\",\\n                        !field.value && \\\"text-muted-foreground\\\"\\n                      )}\\n                    >\\n                      {field.value ? (\\n                        format(field.value, \\\"PPP\\\")\\n                      ) : (\\n                        <span>Pick a date</span>\\n                      )}\\n                      <CalendarIcon className=\\\"ml-auto h-4 w-4 opacity-50\\\" />\\n                    </Button>\\n                  </FormControl>\\n                </PopoverTrigger>\\n                <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n                  <Calendar\\n                    mode=\\\"single\\\"\\n                    selected={field.value}\\n                    onSelect={field.onChange}\\n                    disabled={(date) =>\\n                      date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n                    }\\n                    captionLayout=\\\"dropdown\\\"\\n                  />\\n                </PopoverContent>\\n              </Popover>\\n              <FormDescription>\\n                Your date of birth is used to calculate your age.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/date-picker-with-presets.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-with-presets\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/date-picker-with-presets.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport default function DatePickerWithPresets() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button\\n          variant={\\\"outline\\\"}\\n          className={cn(\\n            \\\"w-[240px] justify-start text-left font-normal\\\",\\n            !date && \\\"text-muted-foreground\\\"\\n          )}\\n        >\\n          <CalendarIcon />\\n          {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n        </Button>\\n      </PopoverTrigger>\\n      <PopoverContent\\n        align=\\\"start\\\"\\n        className=\\\"flex w-auto flex-col space-y-2 p-2\\\"\\n      >\\n        <Select\\n          onValueChange={(value) =>\\n            setDate(addDays(new Date(), parseInt(value)))\\n          }\\n        >\\n          <SelectTrigger>\\n            <SelectValue placeholder=\\\"Select\\\" />\\n          </SelectTrigger>\\n          <SelectContent position=\\\"popper\\\">\\n            <SelectItem value=\\\"0\\\">Today</SelectItem>\\n            <SelectItem value=\\\"1\\\">Tomorrow</SelectItem>\\n            <SelectItem value=\\\"3\\\">In 3 days</SelectItem>\\n            <SelectItem value=\\\"7\\\">In a week</SelectItem>\\n          </SelectContent>\\n        </Select>\\n        <div className=\\\"rounded-md border\\\">\\n          <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n        </div>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/date-picker-with-range.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"date-picker-with-range\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/date-picker-with-range.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { CalendarIcon } from \\\"lucide-react\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function DatePickerWithRange({\\n  className,\\n}: React.HTMLAttributes<HTMLDivElement>) {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(2022, 0, 20),\\n    to: addDays(new Date(2022, 0, 20), 20),\\n  })\\n\\n  return (\\n    <div className={cn(\\\"grid gap-2\\\", className)}>\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button\\n            id=\\\"date\\\"\\n            variant={\\\"outline\\\"}\\n            className={cn(\\n              \\\"w-[300px] justify-start text-left font-normal\\\",\\n              !date && \\\"text-muted-foreground\\\"\\n            )}\\n          >\\n            <CalendarIcon />\\n            {date?.from ? (\\n              date.to ? (\\n                <>\\n                  {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                  {format(date.to, \\\"LLL dd, y\\\")}\\n                </>\\n              ) : (\\n                format(date.from, \\\"LLL dd, y\\\")\\n              )\\n            ) : (\\n              <span>Pick a date</span>\\n            )}\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar\\n            initialFocus\\n            mode=\\\"range\\\"\\n            defaultMonth={date?.from}\\n            selected={date}\\n            onSelect={setDate}\\n            numberOfMonths={2}\\n          />\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dialog-close-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-close-button\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/dialog-close-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dialog\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function DialogCloseButton() {\\n  return (\\n    <Dialog>\\n      <DialogTrigger asChild>\\n        <Button variant=\\\"outline\\\">Share</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"sm:max-w-md\\\">\\n        <DialogHeader>\\n          <DialogTitle>Share link</DialogTitle>\\n          <DialogDescription>\\n            Anyone who has this link will be able to view this.\\n          </DialogDescription>\\n        </DialogHeader>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <div className=\\\"grid flex-1 gap-2\\\">\\n            <Label htmlFor=\\\"link\\\" className=\\\"sr-only\\\">\\n              Link\\n            </Label>\\n            <Input\\n              id=\\\"link\\\"\\n              defaultValue=\\\"https://ui.shadcn.com/docs/installation\\\"\\n              readOnly\\n            />\\n          </div>\\n        </div>\\n        <DialogFooter className=\\\"sm:justify-start\\\">\\n          <DialogClose asChild>\\n            <Button type=\\\"button\\\" variant=\\\"secondary\\\">\\n              Close\\n            </Button>\\n          </DialogClose>\\n        </DialogFooter>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dialog-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-demo\",\n  \"registryDependencies\": [\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/dialog-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dialog\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function DialogDemo() {\\n  return (\\n    <Dialog>\\n      <form>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Edit profile</DialogTitle>\\n            <DialogDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"grid gap-4\\\">\\n            <div className=\\\"grid gap-3\\\">\\n              <Label htmlFor=\\\"name-1\\\">Name</Label>\\n              <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n            </div>\\n            <div className=\\\"grid gap-3\\\">\\n              <Label htmlFor=\\\"username-1\\\">Username</Label>\\n              <Input id=\\\"username-1\\\" name=\\\"username\\\" defaultValue=\\\"@peduarte\\\" />\\n            </div>\\n          </div>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DialogClose>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </form>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nfunction Dialog({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\\n  return (\\n    <DialogPrimitive.Overlay\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal data-slot=\\\"dialog-portal\\\">\\n      <DialogOverlay />\\n      <DialogPrimitive.Content\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            className=\\\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\"\\n          >\\n            <XIcon />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Content>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-2 text-center sm:text-left\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close asChild>\\n          <Button variant=\\\"outline\\\">Close</Button>\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\\"text-lg leading-none font-semibold\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Direction } from \\\"radix-ui\\\"\\n\\nfunction DirectionProvider({\\n  dir,\\n  direction,\\n  children,\\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\\\"dir\\\"]\\n}) {\\n  return (\\n    <Direction.DirectionProvider dir={direction ?? dir}>\\n      {children}\\n    </Direction.DirectionProvider>\\n  )\\n}\\n\\nconst useDirection = Direction.useDirection\\n\\nexport { DirectionProvider, useDirection }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/drawer-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-demo\",\n  \"registryDependencies\": [\n    \"drawer\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/drawer-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Minus, Plus } from \\\"lucide-react\\\"\\nimport { Bar, BarChart, ResponsiveContainer } from \\\"recharts\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york-v4/ui/drawer\\\"\\n\\nconst data = [\\n  {\\n    goal: 400,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 239,\\n  },\\n  {\\n    goal: 300,\\n  },\\n  {\\n    goal: 200,\\n  },\\n  {\\n    goal: 278,\\n  },\\n  {\\n    goal: 189,\\n  },\\n  {\\n    goal: 349,\\n  },\\n]\\n\\nexport default function DrawerDemo() {\\n  const [goal, setGoal] = React.useState(350)\\n\\n  function onClick(adjustment: number) {\\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\\n  }\\n\\n  return (\\n    <Drawer>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open Drawer</Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <div className=\\\"mx-auto w-full max-w-sm\\\">\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"p-4 pb-0\\\">\\n            <div className=\\\"flex items-center justify-center space-x-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(-10)}\\n                disabled={goal <= 200}\\n              >\\n                <Minus />\\n                <span className=\\\"sr-only\\\">Decrease</span>\\n              </Button>\\n              <div className=\\\"flex-1 text-center\\\">\\n                <div className=\\\"text-7xl font-bold tracking-tighter\\\">\\n                  {goal}\\n                </div>\\n                <div className=\\\"text-[0.70rem] text-muted-foreground uppercase\\\">\\n                  Calories/day\\n                </div>\\n              </div>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className=\\\"h-8 w-8 shrink-0 rounded-full\\\"\\n                onClick={() => onClick(10)}\\n                disabled={goal >= 400}\\n              >\\n                <Plus />\\n                <span className=\\\"sr-only\\\">Increase</span>\\n              </Button>\\n            </div>\\n            <div className=\\\"mt-3 h-[120px]\\\">\\n              <ResponsiveContainer width=\\\"100%\\\" height=\\\"100%\\\">\\n                <BarChart data={data}>\\n                  <Bar\\n                    dataKey=\\\"goal\\\"\\n                    style={\\n                      {\\n                        fill: \\\"hsl(var(--foreground))\\\",\\n                        opacity: 0.9,\\n                      } as React.CSSProperties\\n                    }\\n                  />\\n                </BarChart>\\n              </ResponsiveContainer>\\n            </div>\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </div>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/drawer-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-dialog\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/drawer-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { useMediaQuery } from \\\"@/hooks/use-media-query\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dialog\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/new-york-v4/ui/drawer\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function DrawerDialogDemo() {\\n  const [open, setOpen] = React.useState(false)\\n  const isDesktop = useMediaQuery(\\\"(min-width: 768px)\\\")\\n\\n  if (isDesktop) {\\n    return (\\n      <Dialog open={open} onOpenChange={setOpen}>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Edit Profile</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Edit profile</DialogTitle>\\n            <DialogDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ProfileForm />\\n        </DialogContent>\\n      </Dialog>\\n    )\\n  }\\n\\n  return (\\n    <Drawer open={open} onOpenChange={setOpen}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"outline\\\">Edit Profile</Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"text-left\\\">\\n          <DrawerTitle>Edit profile</DrawerTitle>\\n          <DrawerDescription>\\n            Make changes to your profile here. Click save when you&apos;re done.\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <ProfileForm className=\\\"px-4\\\" />\\n        <DrawerFooter className=\\\"pt-2\\\">\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Cancel</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\\nfunction ProfileForm({ className }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"grid items-start gap-6\\\", className)}>\\n      <div className=\\\"grid gap-3\\\">\\n        <Label htmlFor=\\\"email\\\">Email</Label>\\n        <Input type=\\\"email\\\" id=\\\"email\\\" defaultValue=\\\"shadcn@example.com\\\" />\\n      </div>\\n      <div className=\\\"grid gap-3\\\">\\n        <Label htmlFor=\\\"username\\\">Username</Label>\\n        <Input id=\\\"username\\\" defaultValue=\\\"@shadcn\\\" />\\n      </div>\\n      <Button type=\\\"submit\\\">Save changes</Button>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-background\\\",\\n          \\\"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\\\",\\n          \\\"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\\\",\\n          \\\"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          \\\"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\\"font-semibold text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dropdown-menu-checkboxes.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-checkboxes\",\n  \"registryDependencies\": [\n    \"dropdown-menu\",\n    \"checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/dropdown-menu-checkboxes.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { DropdownMenu as DropdownMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\ntype Checked = React.ComponentProps<\\n  typeof DropdownMenuPrimitive.CheckboxItem\\n>[\\\"checked\\\"]\\n\\nexport default function DropdownMenuCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState<Checked>(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState<Checked>(false)\\n  const [showPanel, setShowPanel] = React.useState<Checked>(false)\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuCheckboxItem\\n          checked={showStatusBar}\\n          onCheckedChange={setShowStatusBar}\\n        >\\n          Status Bar\\n        </DropdownMenuCheckboxItem>\\n        <DropdownMenuCheckboxItem\\n          checked={showActivityBar}\\n          onCheckedChange={setShowActivityBar}\\n          disabled\\n        >\\n          Activity Bar\\n        </DropdownMenuCheckboxItem>\\n        <DropdownMenuCheckboxItem\\n          checked={showPanel}\\n          onCheckedChange={setShowPanel}\\n        >\\n          Panel\\n        </DropdownMenuCheckboxItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dropdown-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-demo\",\n  \"registryDependencies\": [\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/dropdown-menu-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nexport default function DropdownMenuDemo() {\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\" align=\\\"start\\\">\\n        <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>\\n            Profile\\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Billing\\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Settings\\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n          <DropdownMenuItem>\\n            Keyboard shortcuts\\n            <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuGroup>\\n          <DropdownMenuItem>Team</DropdownMenuItem>\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuItem>Email</DropdownMenuItem>\\n                <DropdownMenuItem>Message</DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>More...</DropdownMenuItem>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n          <DropdownMenuItem>\\n            New Team\\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n          </DropdownMenuItem>\\n        </DropdownMenuGroup>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>GitHub</DropdownMenuItem>\\n        <DropdownMenuItem>Support</DropdownMenuItem>\\n        <DropdownMenuItem disabled>API</DropdownMenuItem>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuItem>\\n          Log out\\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n        </DropdownMenuItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dropdown-menu-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-dialog\",\n  \"registryDependencies\": [\n    \"dropdown-menu\",\n    \"dialog\",\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/dropdown-menu-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { MoreHorizontalIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/new-york-v4/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function DropdownMenuDialog() {\\n  const [showNewDialog, setShowNewDialog] = useState(false)\\n  const [showShareDialog, setShowShareDialog] = useState(false)\\n\\n  return (\\n    <>\\n      <DropdownMenu modal={false}>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" aria-label=\\\"Open menu\\\" size=\\\"icon-sm\\\">\\n            <MoreHorizontalIcon />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-40\\\" align=\\\"end\\\">\\n          <DropdownMenuLabel>File Actions</DropdownMenuLabel>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem onSelect={() => setShowNewDialog(true)}>\\n              New File...\\n            </DropdownMenuItem>\\n            <DropdownMenuItem onSelect={() => setShowShareDialog(true)}>\\n              Share...\\n            </DropdownMenuItem>\\n            <DropdownMenuItem disabled>Download</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n      <Dialog open={showNewDialog} onOpenChange={setShowNewDialog}>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Create New File</DialogTitle>\\n            <DialogDescription>\\n              Provide a name for your new file. Click create when you&apos;re\\n              done.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <FieldGroup className=\\\"pb-3\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"filename\\\">File Name</FieldLabel>\\n              <Input id=\\\"filename\\\" name=\\\"filename\\\" placeholder=\\\"document.txt\\\" />\\n            </Field>\\n          </FieldGroup>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DialogClose>\\n            <Button type=\\\"submit\\\">Create</Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n      <Dialog open={showShareDialog} onOpenChange={setShowShareDialog}>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Share File</DialogTitle>\\n            <DialogDescription>\\n              Anyone with the link will be able to view this file.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <FieldGroup className=\\\"py-3\\\">\\n            <Field>\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                name=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"shadcn@vercel.com\\\"\\n                autoComplete=\\\"off\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"message\\\">Message (Optional)</FieldLabel>\\n              <Textarea\\n                id=\\\"message\\\"\\n                name=\\\"message\\\"\\n                placeholder=\\\"Check out this file\\\"\\n              />\\n            </Field>\\n          </FieldGroup>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DialogClose>\\n            <Button type=\\\"submit\\\">Send Invite</Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dropdown-menu-radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-radio-group\",\n  \"registryDependencies\": [\n    \"dropdown-menu\",\n    \"radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/dropdown-menu-radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuLabel,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nexport default function DropdownMenuRadioGroupDemo() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent className=\\\"w-56\\\">\\n        <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n        <DropdownMenuSeparator />\\n        <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\\n          <DropdownMenuRadioItem value=\\\"top\\\">Top</DropdownMenuRadioItem>\\n          <DropdownMenuRadioItem value=\\\"bottom\\\">Bottom</DropdownMenuRadioItem>\\n          <DropdownMenuRadioItem value=\\\"right\\\">Right</DropdownMenuRadioItem>\\n        </DropdownMenuRadioGroup>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\nimport { DropdownMenu as DropdownMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction DropdownMenu({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\\n  return <DropdownMenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\\n  return (\\n    <DropdownMenuPrimitive.Trigger\\n      data-slot=\\\"dropdown-menu-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuContent({\\n  className,\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal>\\n      <DropdownMenuPrimitive.Content\\n        data-slot=\\\"dropdown-menu-content\\\"\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </DropdownMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\\n  return (\\n    <DropdownMenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\\n  return (\\n    <DropdownMenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\\\">\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <CheckIcon className=\\\"size-4\\\" />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\\n  return (\\n    <DropdownMenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\\n  return (\\n    <DropdownMenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\\\">\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <CircleIcon className=\\\"size-2 fill-current\\\" />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Label\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\\n  return (\\n    <DropdownMenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\\n  return <DropdownMenuPrimitive.Sub data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.SubTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ChevronRightIcon className=\\\"ml-auto size-4\\\" />\\n    </DropdownMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\\n  return (\\n    <DropdownMenuPrimitive.SubContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-avatar-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-avatar-group\",\n  \"registryDependencies\": [\n    \"empty\",\n    \"button\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-avatar-group.tsx\",\n      \"content\": \"import { PlusIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\n\\nexport default function EmptyAvatarGroup() {\\n  return (\\n    <Empty>\\n      <EmptyHeader>\\n        <EmptyMedia>\\n          <div className=\\\"flex -space-x-2 *:data-[slot=avatar]:size-12 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\\\">\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n          </div>\\n        </EmptyMedia>\\n        <EmptyTitle>No Team Members</EmptyTitle>\\n        <EmptyDescription>\\n          Invite your team to collaborate on this project.\\n        </EmptyDescription>\\n      </EmptyHeader>\\n      <EmptyContent>\\n        <Button size=\\\"sm\\\">\\n          <PlusIcon />\\n          Invite Members\\n        </Button>\\n      </EmptyContent>\\n    </Empty>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-avatar\",\n  \"registryDependencies\": [\n    \"empty\",\n    \"button\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-avatar.tsx\",\n      \"content\": \"import {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\n\\nexport default function EmptyAvatar() {\\n  return (\\n    <Empty>\\n      <EmptyHeader>\\n        <EmptyMedia variant=\\\"default\\\">\\n          <Avatar className=\\\"size-12\\\">\\n            <AvatarImage\\n              src=\\\"https://github.com/shadcn.png\\\"\\n              className=\\\"grayscale\\\"\\n            />\\n            <AvatarFallback>LR</AvatarFallback>\\n          </Avatar>\\n        </EmptyMedia>\\n        <EmptyTitle>User Offline</EmptyTitle>\\n        <EmptyDescription>\\n          This user is currently offline. You can leave a message to notify them\\n          or try again later.\\n        </EmptyDescription>\\n      </EmptyHeader>\\n      <EmptyContent>\\n        <Button size=\\\"sm\\\">Leave Message</Button>\\n      </EmptyContent>\\n    </Empty>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-background.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-background\",\n  \"registryDependencies\": [\n    \"empty\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-background.tsx\",\n      \"content\": \"import { IconBell } from \\\"@tabler/icons-react\\\"\\nimport { RefreshCcwIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\n\\nexport default function EmptyMuted() {\\n  return (\\n    <Empty className=\\\"h-full bg-gradient-to-b from-muted/50 from-30% to-background\\\">\\n      <EmptyHeader>\\n        <EmptyMedia variant=\\\"icon\\\">\\n          <IconBell />\\n        </EmptyMedia>\\n        <EmptyTitle>No Notifications</EmptyTitle>\\n        <EmptyDescription>\\n          You&apos;re all caught up. New notifications will appear here.\\n        </EmptyDescription>\\n      </EmptyHeader>\\n      <EmptyContent>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <RefreshCcwIcon />\\n          Refresh\\n        </Button>\\n      </EmptyContent>\\n    </Empty>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-demo\",\n  \"registryDependencies\": [\n    \"empty\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-demo.tsx\",\n      \"content\": \"import { IconFolderCode } from \\\"@tabler/icons-react\\\"\\nimport { ArrowUpRightIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\n\\nexport default function EmptyDemo() {\\n  return (\\n    <Empty>\\n      <EmptyHeader>\\n        <EmptyMedia variant=\\\"icon\\\">\\n          <IconFolderCode />\\n        </EmptyMedia>\\n        <EmptyTitle>No Projects Yet</EmptyTitle>\\n        <EmptyDescription>\\n          You haven&apos;t created any projects yet. Get started by creating\\n          your first project.\\n        </EmptyDescription>\\n      </EmptyHeader>\\n      <EmptyContent>\\n        <div className=\\\"flex gap-2\\\">\\n          <Button>Create Project</Button>\\n          <Button variant=\\\"outline\\\">Import Project</Button>\\n        </div>\\n      </EmptyContent>\\n      <Button\\n        variant=\\\"link\\\"\\n        asChild\\n        className=\\\"text-muted-foreground\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <a href=\\\"#\\\">\\n          Learn More <ArrowUpRightIcon />\\n        </a>\\n      </Button>\\n    </Empty>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-icon\",\n  \"registryDependencies\": [\n    \"empty\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-icon.tsx\",\n      \"content\": \"import {\\n  IconBookmark,\\n  IconHeart,\\n  IconInbox,\\n  IconStar,\\n} from \\\"@tabler/icons-react\\\"\\n\\nimport {\\n  Empty,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\n\\nexport default function EmptyIcon() {\\n  return (\\n    <div className=\\\"grid gap-8 md:grid-cols-2\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconInbox />\\n          </EmptyMedia>\\n          <EmptyTitle>No messages</EmptyTitle>\\n          <EmptyDescription>\\n            Your inbox is empty. New messages will appear here.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconStar />\\n          </EmptyMedia>\\n          <EmptyTitle>No favorites</EmptyTitle>\\n          <EmptyDescription>\\n            Items you mark as favorites will appear here.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconHeart />\\n          </EmptyMedia>\\n          <EmptyTitle>No likes yet</EmptyTitle>\\n          <EmptyDescription>\\n            Content you like will be saved here for easy access.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconBookmark />\\n          </EmptyMedia>\\n          <EmptyTitle>No bookmarks</EmptyTitle>\\n          <EmptyDescription>\\n            Save interesting content by bookmarking it.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-image.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-image\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"empty\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-image.tsx\",\n      \"content\": \"import {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\n\\nexport default function EmptyImage() {\\n  return (\\n    <div className=\\\"grid gap-8 md:grid-cols-2\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"image\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1606787366850-de6330128bfc?w=64&h=64&fit=crop&crop=face\\\"\\n              alt=\\\"Empty gallery\\\"\\n              className=\\\"rounded\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No photos</EmptyTitle>\\n          <EmptyDescription>\\n            Upload photos to see them appear in your gallery.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"image\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=64&h=64&fit=crop&crop=face\\\"\\n              alt=\\\"Empty documents\\\"\\n              className=\\\"rounded\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No documents</EmptyTitle>\\n          <EmptyDescription>\\n            Create or upload documents to get started.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"image\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1494790108755-2616b612b786?w=64&h=64&fit=crop&crop=face\\\"\\n              alt=\\\"Empty contacts\\\"\\n              className=\\\"rounded\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No contacts</EmptyTitle>\\n          <EmptyDescription>\\n            Add contacts to build your network.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"image\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1599566150163-29194dcaad36?w=64&h=64&fit=crop&crop=face\\\"\\n              alt=\\\"Empty profile\\\"\\n              className=\\\"rounded\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Profile incomplete</EmptyTitle>\\n          <EmptyDescription>\\n            Complete your profile to get the most out of the platform.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-input-group\",\n  \"registryDependencies\": [\n    \"empty\",\n    \"button\",\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-input-group.tsx\",\n      \"content\": \"import { SearchIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/new-york-v4/ui/kbd\\\"\\n\\nexport default function EmptyInputGroup() {\\n  return (\\n    <Empty>\\n      <EmptyHeader>\\n        <EmptyTitle>404 - Not Found</EmptyTitle>\\n        <EmptyDescription>\\n          The page you&apos;re looking for doesn&apos;t exist. Try searching for\\n          what you need below.\\n        </EmptyDescription>\\n      </EmptyHeader>\\n      <EmptyContent>\\n        <InputGroup className=\\\"sm:w-3/4\\\">\\n          <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n          <InputGroupAddon>\\n            <SearchIcon />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">\\n            <Kbd>/</Kbd>\\n          </InputGroupAddon>\\n        </InputGroup>\\n        <EmptyDescription>\\n          Need help? <a href=\\\"#\\\">Contact support</a>\\n        </EmptyDescription>\\n      </EmptyContent>\\n    </Empty>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-muted.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-muted\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"empty\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-muted.tsx\",\n      \"content\": \"import { IconBell, IconMail, IconCalendar, IconMessageCircle } from \\\"@tabler/icons-react\\\"\\n\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\n\\nexport default function EmptyMuted() {\\n  return (\\n    <div className=\\\"grid gap-8 md:grid-cols-2\\\">\\n      <Empty className=\\\"text-muted-foreground\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\" className=\\\"bg-muted/50 text-muted-foreground\\\">\\n            <IconBell />\\n          </EmptyMedia>\\n          <EmptyTitle className=\\\"text-muted-foreground\\\">No notifications</EmptyTitle>\\n          <EmptyDescription className=\\\"text-muted-foreground/70\\\">\\n            You&apos;re all caught up. New notifications will appear here.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty className=\\\"text-muted-foreground\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\" className=\\\"bg-muted/50 text-muted-foreground\\\">\\n            <IconMail />\\n          </EmptyMedia>\\n          <EmptyTitle className=\\\"text-muted-foreground\\\">Inbox empty</EmptyTitle>\\n          <EmptyDescription className=\\\"text-muted-foreground/70\\\">\\n            No new messages. Enjoy the peace and quiet.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty className=\\\"text-muted-foreground\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\" className=\\\"bg-muted/50 text-muted-foreground\\\">\\n            <IconCalendar />\\n          </EmptyMedia>\\n          <EmptyTitle className=\\\"text-muted-foreground\\\">No events today</EmptyTitle>\\n          <EmptyDescription className=\\\"text-muted-foreground/70\\\">\\n            Your calendar is clear. Time to focus on important tasks.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n\\n      <Empty className=\\\"text-muted-foreground\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\" className=\\\"bg-muted/50 text-muted-foreground\\\">\\n            <IconMessageCircle />\\n          </EmptyMedia>\\n          <EmptyTitle className=\\\"text-muted-foreground\\\">No recent activity</EmptyTitle>\\n          <EmptyDescription className=\\\"text-muted-foreground/70\\\">\\n            Activity from your team and projects will show up here.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n      </Empty>\\n    </div>\\n  )\\n}\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-outline\",\n  \"registryDependencies\": [\n    \"empty\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/empty-outline.tsx\",\n      \"content\": \"import { IconCloud } from \\\"@tabler/icons-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\n\\nexport default function EmptyOutline() {\\n  return (\\n    <Empty className=\\\"border border-dashed\\\">\\n      <EmptyHeader>\\n        <EmptyMedia variant=\\\"icon\\\">\\n          <IconCloud />\\n        </EmptyMedia>\\n        <EmptyTitle>Cloud Storage Empty</EmptyTitle>\\n        <EmptyDescription>\\n          Upload files to your cloud storage to access them anywhere.\\n        </EmptyDescription>\\n      </EmptyHeader>\\n      <EmptyContent>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Upload Files\\n        </Button>\\n      </EmptyContent>\\n    </Empty>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\n        \\\"flex max-w-sm flex-col items-center gap-2 text-center\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\\"text-lg font-medium tracking-tight\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-badge\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-badge.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\";\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\";\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\";\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\";\\n\\nexport default function FieldBadge() {\\n  return (\\n    <FieldSet>\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"username-badge\\\">\\n            Username <Badge variant=\\\"secondary\\\">Required</Badge>\\n          </FieldLabel>\\n          <FieldDescription>\\n            Choose a unique username for your profile.\\n          </FieldDescription>\\n          <Input id=\\\"username-badge\\\" type=\\\"text\\\" placeholder=\\\"Enter username\\\" />\\n        </Field>\\n\\n        <Field>\\n          <FieldLabel htmlFor=\\\"api-key\\\">\\n            API Key <Badge variant=\\\"destructive\\\">Sensitive</Badge>\\n          </FieldLabel>\\n          <FieldDescription>\\n            Your API key will be encrypted and stored securely.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"api-key\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Enter API key\\\"\\n          />\\n        </Field>\\n\\n        <Field>\\n          <FieldLabel htmlFor=\\\"subscription\\\">\\n            Subscription Plan <Badge variant=\\\"outline\\\">Premium Feature</Badge>\\n          </FieldLabel>\\n          <FieldDescription>\\n            Upgrade to access premium plans.\\n          </FieldDescription>\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Select plan\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"basic\\\">Basic</SelectItem>\\n              <SelectItem value=\\\"pro\\\">Pro</SelectItem>\\n              <SelectItem value=\\\"enterprise\\\">Enterprise</SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n\\n        <Field>\\n          <FieldLabel htmlFor=\\\"beta-feature\\\">\\n            Beta Features <Badge variant=\\\"default\\\">New</Badge>\\n          </FieldLabel>\\n          <FieldDescription>\\n            Enable experimental features (may be unstable).\\n          </FieldDescription>\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Choose option\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"enabled\\\">Enabled</SelectItem>\\n              <SelectItem value=\\\"disabled\\\">Disabled</SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n\\n        <Field>\\n          <FieldLabel htmlFor=\\\"admin-email\\\">\\n            Admin Email\\n            <div className=\\\"flex gap-1 ml-2\\\">\\n              <Badge variant=\\\"secondary\\\">Required</Badge>\\n              <Badge variant=\\\"outline\\\">Admin Only</Badge>\\n            </div>\\n          </FieldLabel>\\n          <FieldDescription>\\n            Administrative notifications will be sent here.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"admin-email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"admin@example.com\\\"\\n          />\\n        </Field>\\n\\n        <Field>\\n          <FieldLabel htmlFor=\\\"feature-status\\\">\\n            Feature Status <Badge>Active</Badge>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"feature-status\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"Feature name\\\"\\n            disabled\\n          />\\n          <FieldDescription>\\n            This feature is currently active and cannot be modified.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </FieldSet>\\n  );\\n}\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-checkbox\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-checkbox.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\n\\nexport default function FieldCheckbox() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">\\n            Show these items on the desktop\\n          </FieldLegend>\\n          <FieldDescription>\\n            Select the items you want to show on the desktop.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n              <FieldLabel\\n                htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n                className=\\\"font-normal\\\"\\n                defaultChecked\\n              >\\n                Hard disks\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n              <FieldLabel\\n                htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n                className=\\\"font-normal\\\"\\n              >\\n                External disks\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n              <FieldLabel\\n                htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n                className=\\\"font-normal\\\"\\n              >\\n                CDs, DVDs, and iPods\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n              <FieldLabel\\n                htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n                className=\\\"font-normal\\\"\\n              >\\n                Connected servers\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <FieldSeparator />\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-sync-folders-nep\\\" defaultChecked />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"finder-pref-9k2-sync-folders-nep\\\">\\n              Sync Desktop & Documents folders\\n            </FieldLabel>\\n            <FieldDescription>\\n              Your Desktop & Documents folders are being synced with iCloud\\n              Drive. You can access them from other devices.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n      </FieldGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-choice-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-choice-card\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-choice-card.tsx\",\n      \"content\": \"import {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\n\\nexport default function FieldChoiceCard() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLabel htmlFor=\\\"compute-environment-p8w\\\">\\n            Compute Environment\\n          </FieldLabel>\\n          <FieldDescription>\\n            Select the compute environment for your cluster.\\n          </FieldDescription>\\n          <RadioGroup defaultValue=\\\"kubernetes\\\">\\n            <FieldLabel htmlFor=\\\"kubernetes-r2h\\\">\\n              <Field orientation=\\\"horizontal\\\">\\n                <FieldContent>\\n                  <FieldTitle>Kubernetes</FieldTitle>\\n                  <FieldDescription>\\n                    Run GPU workloads on a K8s configured cluster.\\n                  </FieldDescription>\\n                </FieldContent>\\n                <RadioGroupItem value=\\\"kubernetes\\\" id=\\\"kubernetes-r2h\\\" />\\n              </Field>\\n            </FieldLabel>\\n            <FieldLabel htmlFor=\\\"vm-z4k\\\">\\n              <Field orientation=\\\"horizontal\\\">\\n                <FieldContent>\\n                  <FieldTitle>Virtual Machine</FieldTitle>\\n                  <FieldDescription>\\n                    Access a VM configured cluster to run GPU workloads.\\n                  </FieldDescription>\\n                </FieldContent>\\n                <RadioGroupItem value=\\\"vm\\\" id=\\\"vm-z4k\\\" />\\n              </Field>\\n            </FieldLabel>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-demo\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function FieldDemo() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <form>\\n        <FieldGroup>\\n          <FieldSet>\\n            <FieldLegend>Payment Method</FieldLegend>\\n            <FieldDescription>\\n              All transactions are secure and encrypted\\n            </FieldDescription>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"checkout-7j9-card-name-43j\\\">\\n                  Name on Card\\n                </FieldLabel>\\n                <Input\\n                  id=\\\"checkout-7j9-card-name-43j\\\"\\n                  placeholder=\\\"Evil Rabbit\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"checkout-7j9-card-number-uw1\\\">\\n                  Card Number\\n                </FieldLabel>\\n                <Input\\n                  id=\\\"checkout-7j9-card-number-uw1\\\"\\n                  placeholder=\\\"1234 5678 9012 3456\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  Enter your 16-digit card number\\n                </FieldDescription>\\n              </Field>\\n              <div className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"checkout-exp-month-ts6\\\">\\n                    Month\\n                  </FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"checkout-exp-month-ts6\\\">\\n                      <SelectValue placeholder=\\\"MM\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"01\\\">01</SelectItem>\\n                      <SelectItem value=\\\"02\\\">02</SelectItem>\\n                      <SelectItem value=\\\"03\\\">03</SelectItem>\\n                      <SelectItem value=\\\"04\\\">04</SelectItem>\\n                      <SelectItem value=\\\"05\\\">05</SelectItem>\\n                      <SelectItem value=\\\"06\\\">06</SelectItem>\\n                      <SelectItem value=\\\"07\\\">07</SelectItem>\\n                      <SelectItem value=\\\"08\\\">08</SelectItem>\\n                      <SelectItem value=\\\"09\\\">09</SelectItem>\\n                      <SelectItem value=\\\"10\\\">10</SelectItem>\\n                      <SelectItem value=\\\"11\\\">11</SelectItem>\\n                      <SelectItem value=\\\"12\\\">12</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"checkout-7j9-exp-year-f59\\\">\\n                    Year\\n                  </FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"checkout-7j9-exp-year-f59\\\">\\n                      <SelectValue placeholder=\\\"YYYY\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"2024\\\">2024</SelectItem>\\n                      <SelectItem value=\\\"2025\\\">2025</SelectItem>\\n                      <SelectItem value=\\\"2026\\\">2026</SelectItem>\\n                      <SelectItem value=\\\"2027\\\">2027</SelectItem>\\n                      <SelectItem value=\\\"2028\\\">2028</SelectItem>\\n                      <SelectItem value=\\\"2029\\\">2029</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"checkout-7j9-cvv\\\">CVV</FieldLabel>\\n                  <Input id=\\\"checkout-7j9-cvv\\\" placeholder=\\\"123\\\" required />\\n                </Field>\\n              </div>\\n            </FieldGroup>\\n          </FieldSet>\\n          <FieldSeparator />\\n          <FieldSet>\\n            <FieldLegend>Billing Address</FieldLegend>\\n            <FieldDescription>\\n              The billing address associated with your payment method\\n            </FieldDescription>\\n            <FieldGroup>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Checkbox\\n                  id=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                  defaultChecked\\n                />\\n                <FieldLabel\\n                  htmlFor=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                  className=\\\"font-normal\\\"\\n                >\\n                  Same as shipping address\\n                </FieldLabel>\\n              </Field>\\n            </FieldGroup>\\n          </FieldSet>\\n          <FieldSet>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"checkout-7j9-optional-comments\\\">\\n                  Comments\\n                </FieldLabel>\\n                <Textarea\\n                  id=\\\"checkout-7j9-optional-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                  className=\\\"resize-none\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n          </FieldSet>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"submit\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              Cancel\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-fieldset.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-fieldset\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-fieldset.tsx\",\n      \"content\": \"import {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport default function FieldFieldset() {\\n  return (\\n    <div className=\\\"w-full max-w-md space-y-6\\\">\\n      <FieldSet>\\n        <FieldLegend>Address Information</FieldLegend>\\n        <FieldDescription>\\n          We need your address to deliver your order.\\n        </FieldDescription>\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"street\\\">Street Address</FieldLabel>\\n            <Input id=\\\"street\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"city\\\">City</FieldLabel>\\n              <Input id=\\\"city\\\" type=\\\"text\\\" placeholder=\\\"New York\\\" />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"zip\\\">Postal Code</FieldLabel>\\n              <Input id=\\\"zip\\\" type=\\\"text\\\" placeholder=\\\"90502\\\" />\\n            </Field>\\n          </div>\\n        </FieldGroup>\\n      </FieldSet>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-group\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-group.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\n\\nexport default function FieldGroupExample() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLabel>Responses</FieldLabel>\\n          <FieldDescription>\\n            Get notified when ChatGPT responds to requests that take time, like\\n            research or image generation.\\n          </FieldDescription>\\n          <FieldGroup data-slot=\\\"checkbox-group\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n              <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                Push notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <FieldSeparator />\\n        <FieldSet>\\n          <FieldLabel>Tasks</FieldLabel>\\n          <FieldDescription>\\n            Get notified when tasks you&apos;ve created have updates.{\\\" \\\"}\\n            <a href=\\\"#\\\">Manage tasks</a>\\n          </FieldDescription>\\n          <FieldGroup data-slot=\\\"checkbox-group\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"push-tasks\\\" />\\n              <FieldLabel htmlFor=\\\"push-tasks\\\" className=\\\"font-normal\\\">\\n                Push notifications\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"email-tasks\\\" />\\n              <FieldLabel htmlFor=\\\"email-tasks\\\" className=\\\"font-normal\\\">\\n                Email notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-input\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-input.tsx\",\n      \"content\": \"import {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport default function FieldInput() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <FieldSet>\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"username\\\">Username</FieldLabel>\\n            <Input id=\\\"username\\\" type=\\\"text\\\" placeholder=\\\"Max Leiter\\\" />\\n            <FieldDescription>\\n              Choose a unique username for your account.\\n            </FieldDescription>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <FieldDescription>\\n              Must be at least 8 characters long.\\n            </FieldDescription>\\n            <Input id=\\\"password\\\" type=\\\"password\\\" placeholder=\\\"••••••••\\\" />\\n          </Field>\\n        </FieldGroup>\\n      </FieldSet>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-radio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-radio\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-radio.tsx\",\n      \"content\": \"import {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\n\\nexport default function FieldRadio() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <FieldSet>\\n        <FieldLabel>Subscription Plan</FieldLabel>\\n        <FieldDescription>\\n          Yearly and lifetime plans offer significant savings.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"monthly\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"monthly\\\" id=\\\"plan-monthly\\\" />\\n            <FieldLabel htmlFor=\\\"plan-monthly\\\" className=\\\"font-normal\\\">\\n              Monthly ($9.99/month)\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"yearly\\\" id=\\\"plan-yearly\\\" />\\n            <FieldLabel htmlFor=\\\"plan-yearly\\\" className=\\\"font-normal\\\">\\n              Yearly ($99.99/year)\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"lifetime\\\" id=\\\"plan-lifetime\\\" />\\n            <FieldLabel htmlFor=\\\"plan-lifetime\\\" className=\\\"font-normal\\\">\\n              Lifetime ($299.99)\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-responsive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-responsive\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-responsive.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function FieldResponsive() {\\n  return (\\n    <div className=\\\"w-full max-w-4xl\\\">\\n      <form>\\n        <FieldSet>\\n          <FieldLegend>Profile</FieldLegend>\\n          <FieldDescription>Fill in your profile information.</FieldDescription>\\n          <FieldSeparator />\\n          <FieldGroup>\\n            <Field orientation=\\\"responsive\\\">\\n              <FieldContent>\\n                <FieldLabel htmlFor=\\\"name\\\">Name</FieldLabel>\\n                <FieldDescription>\\n                  Provide your full name for identification\\n                </FieldDescription>\\n              </FieldContent>\\n              <Input id=\\\"name\\\" placeholder=\\\"Evil Rabbit\\\" required />\\n            </Field>\\n            <FieldSeparator />\\n            <Field orientation=\\\"responsive\\\">\\n              <FieldContent>\\n                <FieldLabel htmlFor=\\\"lastName\\\">Message</FieldLabel>\\n                <FieldDescription>\\n                  You can write your message here. Keep it short, preferably\\n                  under 100 characters.\\n                </FieldDescription>\\n              </FieldContent>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Hello, world!\\\"\\n                required\\n                className=\\\"min-h-[100px] resize-none sm:min-w-[300px]\\\"\\n              />\\n            </Field>\\n            <FieldSeparator />\\n            <Field orientation=\\\"responsive\\\">\\n              <Button type=\\\"submit\\\">Submit</Button>\\n              <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n                Cancel\\n              </Button>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n      </form>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-select\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-select.tsx\",\n      \"content\": \"import {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport default function FieldSelect() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <Field>\\n        <FieldLabel>Department</FieldLabel>\\n        <Select>\\n          <SelectTrigger>\\n            <SelectValue placeholder=\\\"Choose department\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectItem value=\\\"engineering\\\">Engineering</SelectItem>\\n            <SelectItem value=\\\"design\\\">Design</SelectItem>\\n            <SelectItem value=\\\"marketing\\\">Marketing</SelectItem>\\n            <SelectItem value=\\\"sales\\\">Sales</SelectItem>\\n            <SelectItem value=\\\"support\\\">Customer Support</SelectItem>\\n            <SelectItem value=\\\"hr\\\">Human Resources</SelectItem>\\n            <SelectItem value=\\\"finance\\\">Finance</SelectItem>\\n            <SelectItem value=\\\"operations\\\">Operations</SelectItem>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Select your department or area of work.\\n        </FieldDescription>\\n      </Field>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-slider\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldTitle,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Slider } from \\\"@/registry/new-york-v4/ui/slider\\\"\\n\\nexport default function FieldSlider() {\\n  const [value, setValue] = useState([200, 800])\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <Field>\\n        <FieldTitle>Price Range</FieldTitle>\\n        <FieldDescription>\\n          Set your budget range ($\\n          <span className=\\\"font-medium tabular-nums\\\">{value[0]}</span> -{\\\" \\\"}\\n          <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n        </FieldDescription>\\n        <Slider\\n          value={value}\\n          onValueChange={setValue}\\n          max={1000}\\n          min={0}\\n          step={10}\\n          className=\\\"mt-2 w-full\\\"\\n          aria-label=\\\"Price Range\\\"\\n        />\\n      </Field>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-switch\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-switch.tsx\",\n      \"content\": \"import {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\nexport default function FieldSwitch() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"2fa\\\">Multi-factor authentication</FieldLabel>\\n          <FieldDescription>\\n            Enable multi-factor authentication. If you do not have a two-factor\\n            device, you can use a one-time code sent to your email.\\n          </FieldDescription>\\n        </FieldContent>\\n        <Switch id=\\\"2fa\\\" />\\n      </Field>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field-textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-textarea\",\n  \"registryDependencies\": [\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/field-textarea.tsx\",\n      \"content\": \"import {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function FieldTextarea() {\\n  return (\\n    <div className=\\\"w-full max-w-md\\\">\\n      <FieldSet>\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"feedback\\\">Feedback</FieldLabel>\\n            <Textarea\\n              id=\\\"feedback\\\"\\n              placeholder=\\\"Your feedback helps us improve...\\\"\\n              rows={4}\\n            />\\n            <FieldDescription>\\n              Share your thoughts about our service.\\n            </FieldDescription>\\n          </Field>\\n        </FieldGroup>\\n      </FieldSet>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-6\\\",\\n        \\\"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-3 font-medium\\\",\\n        \\\"data-[variant=legend]:text-base\\\",\\n        \\\"data-[variant=label]:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: [\\\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\\\"],\\n        horizontal: [\\n          \\\"flex-row items-center\\\",\\n          \\\"[&>[data-slot=field-label]]:flex-auto\\\",\\n          \\\"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        ],\\n        responsive: [\\n          \\\"flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto\\\",\\n          \\\"@md/field-group:[&>[data-slot=field-label]]:flex-auto\\\",\\n          \\\"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        ],\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\\\",\\n        \\\"has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5 dark:has-data-[state=checked]:bg-primary/10\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-sm leading-normal font-normal text-muted-foreground group-has-[[data-orientation=horizontal]]/field:text-balance\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-sm font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-next-complex.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-next-complex\",\n  \"registryDependencies\": [\n    \"field\",\n    \"input\",\n    \"textarea\",\n    \"button\",\n    \"card\",\n    \"spinner\",\n    \"checkbox\",\n    \"dialog\",\n    \"radio-group\",\n    \"select\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-next-complex.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Form from \\\"next/form\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\nimport { complexFormAction } from \\\"./form-next-complex-action\\\"\\nimport { addons, type FormState } from \\\"./form-next-complex-schema\\\"\\n\\nexport default function FormNextComplex() {\\n  const [formState, formAction, pending] = React.useActionState<\\n    FormState,\\n    FormData\\n  >(complexFormAction, {\\n    values: {\\n      plan: \\\"basic\\\",\\n      billingPeriod: \\\"monthly\\\",\\n      addons: [],\\n      emailNotifications: false,\\n    },\\n    errors: null,\\n    success: false,\\n  })\\n\\n  React.useEffect(() => {\\n    if (formState.success) {\\n      toast.success(\\\"Preferences saved\\\", {\\n        description: \\\"Your subscription plan has been updated.\\\",\\n      })\\n    }\\n  }, [formState.success])\\n\\n  return (\\n    <Card className=\\\"w-full max-w-sm\\\">\\n      <CardContent>\\n        <Form action={formAction} id=\\\"subscription-form\\\">\\n          <FieldGroup>\\n            <FieldSet data-invalid={!!formState.errors?.plan?.length}>\\n              <FieldLegend>Subscription Plan</FieldLegend>\\n              <FieldDescription>\\n                Choose your subscription plan.\\n              </FieldDescription>\\n              <RadioGroup\\n                name=\\\"plan\\\"\\n                defaultValue={formState.values.plan}\\n                disabled={pending}\\n                aria-invalid={!!formState.errors?.plan?.length}\\n              >\\n                <FieldLabel htmlFor=\\\"basic\\\">\\n                  <Field orientation=\\\"horizontal\\\">\\n                    <FieldContent>\\n                      <FieldTitle>Basic</FieldTitle>\\n                      <FieldDescription>\\n                        For individuals and small teams\\n                      </FieldDescription>\\n                    </FieldContent>\\n                    <RadioGroupItem value=\\\"basic\\\" id=\\\"basic\\\" />\\n                  </Field>\\n                </FieldLabel>\\n                <FieldLabel htmlFor=\\\"pro\\\">\\n                  <Field orientation=\\\"horizontal\\\">\\n                    <FieldContent>\\n                      <FieldTitle>Pro</FieldTitle>\\n                      <FieldDescription>\\n                        For businesses with higher demands\\n                      </FieldDescription>\\n                    </FieldContent>\\n                    <RadioGroupItem value=\\\"pro\\\" id=\\\"pro\\\" />\\n                  </Field>\\n                </FieldLabel>\\n              </RadioGroup>\\n              {formState.errors?.plan && (\\n                <FieldError>{formState.errors.plan[0]}</FieldError>\\n              )}\\n            </FieldSet>\\n            <FieldSeparator />\\n            <Field data-invalid={!!formState.errors?.billingPeriod?.length}>\\n              <FieldLabel htmlFor=\\\"billingPeriod\\\">Billing Period</FieldLabel>\\n              <Select\\n                name=\\\"billingPeriod\\\"\\n                defaultValue={formState.values.billingPeriod}\\n                disabled={pending}\\n                aria-invalid={!!formState.errors?.billingPeriod?.length}\\n              >\\n                <SelectTrigger id=\\\"billingPeriod\\\">\\n                  <SelectValue placeholder=\\\"Select\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"monthly\\\">Monthly</SelectItem>\\n                  <SelectItem value=\\\"yearly\\\">Yearly</SelectItem>\\n                </SelectContent>\\n              </Select>\\n              <FieldDescription>\\n                Choose how often you want to be billed.\\n              </FieldDescription>\\n              {formState.errors?.billingPeriod && (\\n                <FieldError>{formState.errors.billingPeriod[0]}</FieldError>\\n              )}\\n            </Field>\\n            <FieldSeparator />\\n            <FieldSet>\\n              <FieldLegend>Add-ons</FieldLegend>\\n              <FieldDescription>\\n                Select additional features you&apos;d like to include.\\n              </FieldDescription>\\n              <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                {addons.map((addon) => (\\n                  <Field\\n                    key={addon.id}\\n                    orientation=\\\"horizontal\\\"\\n                    data-invalid={!!formState.errors?.addons?.length}\\n                  >\\n                    <Checkbox\\n                      id={addon.id}\\n                      name=\\\"addons\\\"\\n                      value={addon.id}\\n                      defaultChecked={formState.values.addons.includes(\\n                        addon.id\\n                      )}\\n                      disabled={pending}\\n                      aria-invalid={!!formState.errors?.addons?.length}\\n                    />\\n                    <FieldContent>\\n                      <FieldLabel htmlFor={addon.id}>{addon.title}</FieldLabel>\\n                      <FieldDescription>{addon.description}</FieldDescription>\\n                    </FieldContent>\\n                  </Field>\\n                ))}\\n              </FieldGroup>\\n              {formState.errors?.addons && (\\n                <FieldError>{formState.errors.addons[0]}</FieldError>\\n              )}\\n            </FieldSet>\\n            <FieldSeparator />\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldContent>\\n                <FieldLabel htmlFor=\\\"emailNotifications\\\">\\n                  Email Notifications\\n                </FieldLabel>\\n                <FieldDescription>\\n                  Receive email updates about your subscription\\n                </FieldDescription>\\n              </FieldContent>\\n              <Switch\\n                id=\\\"emailNotifications\\\"\\n                name=\\\"emailNotifications\\\"\\n                defaultChecked={formState.values.emailNotifications}\\n                disabled={pending}\\n                aria-invalid={!!formState.errors?.emailNotifications?.length}\\n              />\\n            </Field>\\n          </FieldGroup>\\n        </Form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\" className=\\\"justify-end\\\">\\n          <Button type=\\\"submit\\\" disabled={pending} form=\\\"subscription-form\\\">\\n            {pending && <Spinner />}\\n            Save Preferences\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-next-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-next-demo\",\n  \"registryDependencies\": [\n    \"field\",\n    \"input\",\n    \"textarea\",\n    \"button\",\n    \"card\",\n    \"spinner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-next-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Form from \\\"next/form\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nimport { demoFormAction } from \\\"./form-next-demo-action\\\"\\nimport { type FormState } from \\\"./form-next-demo-schema\\\"\\n\\nexport default function FormNextDemo() {\\n  const [formState, formAction, pending] = React.useActionState<\\n    FormState,\\n    FormData\\n  >(demoFormAction, {\\n    values: {\\n      title: \\\"\\\",\\n      description: \\\"\\\",\\n    },\\n    errors: null,\\n    success: false,\\n  })\\n  const [descriptionLength, setDescriptionLength] = React.useState(0)\\n\\n  React.useEffect(() => {\\n    if (formState.success) {\\n      toast(\\\"Thank you for your feedback\\\", {\\n        description: \\\"We'll review your report and get back to you soon.\\\",\\n      })\\n    }\\n  }, [formState.success])\\n\\n  React.useEffect(() => {\\n    setDescriptionLength(formState.values.description.length)\\n  }, [formState.values.description])\\n\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Bug Report</CardTitle>\\n        <CardDescription>\\n          Help us improve by reporting bugs you encounter.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <Form action={formAction} id=\\\"bug-report-form\\\">\\n          <FieldGroup>\\n            <Field data-invalid={!!formState.errors?.title?.length}>\\n              <FieldLabel htmlFor=\\\"title\\\">Bug Title</FieldLabel>\\n              <Input\\n                id=\\\"title\\\"\\n                name=\\\"title\\\"\\n                defaultValue={formState.values.title}\\n                disabled={pending}\\n                aria-invalid={!!formState.errors?.title?.length}\\n                placeholder=\\\"Login button not working on mobile\\\"\\n                autoComplete=\\\"off\\\"\\n              />\\n              {formState.errors?.title && (\\n                <FieldError>{formState.errors.title[0]}</FieldError>\\n              )}\\n            </Field>\\n            <Field data-invalid={!!formState.errors?.description?.length}>\\n              <FieldLabel htmlFor=\\\"description\\\">Description</FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"description\\\"\\n                  name=\\\"description\\\"\\n                  defaultValue={formState.values.description}\\n                  placeholder=\\\"I'm having an issue with the login button on mobile.\\\"\\n                  rows={6}\\n                  className=\\\"min-h-24 resize-none\\\"\\n                  disabled={pending}\\n                  aria-invalid={!!formState.errors?.description?.length}\\n                  onChange={(e) => setDescriptionLength(e.target.value.length)}\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText className=\\\"tabular-nums\\\">\\n                    {descriptionLength}/100 characters\\n                  </InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n              <FieldDescription>\\n                Include steps to reproduce, expected behavior, and what actually\\n                happened.\\n              </FieldDescription>\\n              {formState.errors?.description && (\\n                <FieldError>{formState.errors.description[0]}</FieldError>\\n              )}\\n            </Field>\\n          </FieldGroup>\\n        </Form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"submit\\\" disabled={pending} form=\\\"bug-report-form\\\">\\n            {pending && <Spinner />}\\n            Submit\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-array.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-array\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-array.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\nimport { Controller, useFieldArray, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nconst formSchema = z.object({\\n  emails: z\\n    .array(\\n      z.object({\\n        address: z.string().email(\\\"Enter a valid email address.\\\"),\\n      })\\n    )\\n    .min(1, \\\"Add at least one email address.\\\")\\n    .max(5, \\\"You can add up to 5 email addresses.\\\"),\\n})\\n\\nexport default function FormRhfArray() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      emails: [{ address: \\\"\\\" }, { address: \\\"\\\" }],\\n    },\\n  })\\n\\n  const { fields, append, remove } = useFieldArray({\\n    control: form.control,\\n    name: \\\"emails\\\",\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader className=\\\"border-b\\\">\\n        <CardTitle>Contact Emails</CardTitle>\\n        <CardDescription>Manage your contact email addresses.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-array\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldSet className=\\\"gap-4\\\">\\n            <FieldLegend variant=\\\"label\\\">Email Addresses</FieldLegend>\\n            <FieldDescription>\\n              Add up to 5 email addresses where we can contact you.\\n            </FieldDescription>\\n            <FieldGroup className=\\\"gap-4\\\">\\n              {fields.map((field, index) => (\\n                <Controller\\n                  key={field.id}\\n                  name={`emails.${index}.address`}\\n                  control={form.control}\\n                  render={({ field: controllerField, fieldState }) => (\\n                    <Field\\n                      orientation=\\\"horizontal\\\"\\n                      data-invalid={fieldState.invalid}\\n                    >\\n                      <FieldContent>\\n                        <InputGroup>\\n                          <InputGroupInput\\n                            {...controllerField}\\n                            id={`form-rhf-array-email-${index}`}\\n                            aria-invalid={fieldState.invalid}\\n                            placeholder=\\\"name@example.com\\\"\\n                            type=\\\"email\\\"\\n                            autoComplete=\\\"email\\\"\\n                          />\\n                          {fields.length > 1 && (\\n                            <InputGroupAddon align=\\\"inline-end\\\">\\n                              <InputGroupButton\\n                                type=\\\"button\\\"\\n                                variant=\\\"ghost\\\"\\n                                size=\\\"icon-xs\\\"\\n                                onClick={() => remove(index)}\\n                                aria-label={`Remove email ${index + 1}`}\\n                              >\\n                                <XIcon />\\n                              </InputGroupButton>\\n                            </InputGroupAddon>\\n                          )}\\n                        </InputGroup>\\n                        {fieldState.invalid && (\\n                          <FieldError errors={[fieldState.error]} />\\n                        )}\\n                      </FieldContent>\\n                    </Field>\\n                  )}\\n                />\\n              ))}\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                onClick={() => append({ address: \\\"\\\" })}\\n                disabled={fields.length >= 5}\\n              >\\n                Add Email Address\\n              </Button>\\n            </FieldGroup>\\n            {form.formState.errors.emails?.root && (\\n              <FieldError errors={[form.formState.errors.emails.root]} />\\n            )}\\n          </FieldSet>\\n        </form>\\n      </CardContent>\\n      <CardFooter className=\\\"border-t\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-array\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-checkbox\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"checkbox\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Controller, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\n\\nconst tasks = [\\n  {\\n    id: \\\"push\\\",\\n    label: \\\"Push notifications\\\",\\n  },\\n  {\\n    id: \\\"email\\\",\\n    label: \\\"Email notifications\\\",\\n  },\\n] as const\\n\\nconst formSchema = z.object({\\n  responses: z.boolean(),\\n  tasks: z\\n    .array(z.string())\\n    .min(1, \\\"Please select at least one notification type.\\\")\\n    .refine(\\n      (value) => value.every((task) => tasks.some((t) => t.id === task)),\\n      {\\n        message: \\\"Invalid notification type selected.\\\",\\n      }\\n    ),\\n})\\n\\nexport default function FormRhfCheckbox() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      responses: true,\\n      tasks: [],\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Notifications</CardTitle>\\n        <CardDescription>Manage your notification preferences.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-checkbox\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"responses\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <div>\\n                  <FieldSet data-invalid={fieldState.invalid}>\\n                    <FieldLegend variant=\\\"label\\\">Responses</FieldLegend>\\n                    <FieldDescription>\\n                      Get notified for requests that take time, like research or\\n                      image generation.\\n                    </FieldDescription>\\n                    <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <Checkbox\\n                          id=\\\"form-rhf-checkbox-responses\\\"\\n                          name={field.name}\\n                          checked={field.value}\\n                          onCheckedChange={field.onChange}\\n                          disabled\\n                        />\\n                        <FieldLabel\\n                          htmlFor=\\\"form-rhf-checkbox-responses\\\"\\n                          className=\\\"font-normal\\\"\\n                        >\\n                          Push notifications\\n                        </FieldLabel>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </div>\\n              )}\\n            />\\n            <FieldSeparator />\\n            <Controller\\n              name=\\\"tasks\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <FieldGroup>\\n                  <FieldSet data-invalid={fieldState.invalid}>\\n                    <FieldLegend variant=\\\"label\\\">Tasks</FieldLegend>\\n                    <FieldDescription>\\n                      Get notified when tasks you&apos;ve created have updates.\\n                    </FieldDescription>\\n                    <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                      {tasks.map((task) => (\\n                        <Field\\n                          key={task.id}\\n                          orientation=\\\"horizontal\\\"\\n                          data-invalid={fieldState.invalid}\\n                        >\\n                          <Checkbox\\n                            id={`form-rhf-checkbox-${task.id}`}\\n                            name={field.name}\\n                            aria-invalid={fieldState.invalid}\\n                            checked={field.value.includes(task.id)}\\n                            onCheckedChange={(checked) => {\\n                              const newValue = checked\\n                                ? [...field.value, task.id]\\n                                : field.value.filter(\\n                                    (value) => value !== task.id\\n                                  )\\n                              field.onChange(newValue)\\n                            }}\\n                          />\\n                          <FieldLabel\\n                            htmlFor={`form-rhf-checkbox-${task.id}`}\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            {task.label}\\n                          </FieldLabel>\\n                        </Field>\\n                      ))}\\n                    </FieldGroup>\\n                  </FieldSet>\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </FieldGroup>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-checkbox\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-complex.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-complex\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"button\",\n    \"card\",\n    \"checkbox\",\n    \"radio-group\",\n    \"select\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-complex.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Controller, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\nconst addons = [\\n  {\\n    id: \\\"analytics\\\",\\n    title: \\\"Analytics\\\",\\n    description: \\\"Advanced analytics and reporting\\\",\\n  },\\n  {\\n    id: \\\"backup\\\",\\n    title: \\\"Backup\\\",\\n    description: \\\"Automated daily backups\\\",\\n  },\\n  {\\n    id: \\\"support\\\",\\n    title: \\\"Priority Support\\\",\\n    description: \\\"24/7 premium customer support\\\",\\n  },\\n] as const\\n\\nconst formSchema = z.object({\\n  plan: z\\n    .string({\\n      required_error: \\\"Please select a subscription plan\\\",\\n    })\\n    .min(1, \\\"Please select a subscription plan\\\")\\n    .refine((value) => value === \\\"basic\\\" || value === \\\"pro\\\", {\\n      message: \\\"Invalid plan selection. Please choose Basic or Pro\\\",\\n    }),\\n  billingPeriod: z\\n    .string({\\n      required_error: \\\"Please select a billing period\\\",\\n    })\\n    .min(1, \\\"Please select a billing period\\\"),\\n  addons: z\\n    .array(z.string())\\n    .min(1, \\\"Please select at least one add-on\\\")\\n    .max(3, \\\"You can select up to 3 add-ons\\\")\\n    .refine(\\n      (value) => value.every((addon) => addons.some((a) => a.id === addon)),\\n      {\\n        message: \\\"You selected an invalid add-on\\\",\\n      }\\n    ),\\n  emailNotifications: z.boolean(),\\n})\\n\\nexport default function FormRhfComplex() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      plan: \\\"basic\\\",\\n      billingPeriod: \\\"\\\",\\n      addons: [],\\n      emailNotifications: false,\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full max-w-sm\\\">\\n      <CardHeader className=\\\"border-b\\\">\\n        <CardTitle>You&apos;re almost there!</CardTitle>\\n        <CardDescription>\\n          Choose your subscription plan and billing period.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-complex\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"plan\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => {\\n                const isInvalid = fieldState.invalid\\n                return (\\n                  <FieldSet data-invalid={isInvalid}>\\n                    <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n                    <FieldDescription>\\n                      Choose your subscription plan.\\n                    </FieldDescription>\\n                    <RadioGroup\\n                      name={field.name}\\n                      value={field.value}\\n                      onValueChange={field.onChange}\\n                      aria-invalid={isInvalid}\\n                    >\\n                      <FieldLabel htmlFor=\\\"form-rhf-complex-basic\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <FieldContent>\\n                            <FieldTitle>Basic</FieldTitle>\\n                            <FieldDescription>\\n                              For individuals and small teams\\n                            </FieldDescription>\\n                          </FieldContent>\\n                          <RadioGroupItem\\n                            value=\\\"basic\\\"\\n                            id=\\\"form-rhf-complex-basic\\\"\\n                          />\\n                        </Field>\\n                      </FieldLabel>\\n                      <FieldLabel htmlFor=\\\"form-rhf-complex-pro\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <FieldContent>\\n                            <FieldTitle>Pro</FieldTitle>\\n                            <FieldDescription>\\n                              For businesses with higher demands\\n                            </FieldDescription>\\n                          </FieldContent>\\n                          <RadioGroupItem\\n                            value=\\\"pro\\\"\\n                            id=\\\"form-rhf-complex-pro\\\"\\n                          />\\n                        </Field>\\n                      </FieldLabel>\\n                    </RadioGroup>\\n                    {isInvalid && <FieldError errors={[fieldState.error]} />}\\n                  </FieldSet>\\n                )\\n              }}\\n            />\\n            <FieldSeparator />\\n            <Controller\\n              name=\\\"billingPeriod\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field data-invalid={fieldState.invalid}>\\n                  <FieldLabel htmlFor=\\\"form-rhf-complex-billingPeriod\\\">\\n                    Billing Period\\n                  </FieldLabel>\\n                  <Select\\n                    name={field.name}\\n                    value={field.value}\\n                    onValueChange={field.onChange}\\n                  >\\n                    <SelectTrigger\\n                      id=\\\"form-rhf-complex-billingPeriod\\\"\\n                      aria-invalid={fieldState.invalid}\\n                    >\\n                      <SelectValue placeholder=\\\"Select\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"monthly\\\">Monthly</SelectItem>\\n                      <SelectItem value=\\\"yearly\\\">Yearly</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                  <FieldDescription>\\n                    Choose how often you want to be billed.\\n                  </FieldDescription>\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </Field>\\n              )}\\n            />\\n            <FieldSeparator />\\n            <Controller\\n              name=\\\"addons\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <FieldSet>\\n                  <FieldLegend>Add-ons</FieldLegend>\\n                  <FieldDescription>\\n                    Select additional features you&apos;d like to include.\\n                  </FieldDescription>\\n                  <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                    {addons.map((addon) => (\\n                      <Field\\n                        key={addon.id}\\n                        orientation=\\\"horizontal\\\"\\n                        data-invalid={fieldState.invalid}\\n                      >\\n                        <Checkbox\\n                          id={`form-rhf-complex-${addon.id}`}\\n                          name={field.name}\\n                          aria-invalid={fieldState.invalid}\\n                          checked={field.value.includes(addon.id)}\\n                          onCheckedChange={(checked) => {\\n                            const newValue = checked\\n                              ? [...field.value, addon.id]\\n                              : field.value.filter(\\n                                  (value) => value !== addon.id\\n                                )\\n                            field.onChange(newValue)\\n                            field.onBlur()\\n                          }}\\n                        />\\n                        <FieldContent>\\n                          <FieldLabel htmlFor={`form-rhf-complex-${addon.id}`}>\\n                            {addon.title}\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            {addon.description}\\n                          </FieldDescription>\\n                        </FieldContent>\\n                      </Field>\\n                    ))}\\n                  </FieldGroup>\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </FieldSet>\\n              )}\\n            />\\n            <FieldSeparator />\\n            <Controller\\n              name=\\\"emailNotifications\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field\\n                  orientation=\\\"horizontal\\\"\\n                  data-invalid={fieldState.invalid}\\n                >\\n                  <FieldContent>\\n                    <FieldLabel htmlFor=\\\"form-rhf-complex-emailNotifications\\\">\\n                      Email Notifications\\n                    </FieldLabel>\\n                    <FieldDescription>\\n                      Receive email updates about your subscription\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <Switch\\n                    id=\\\"form-rhf-complex-emailNotifications\\\"\\n                    name={field.name}\\n                    checked={field.value}\\n                    onCheckedChange={field.onChange}\\n                    aria-invalid={fieldState.invalid}\\n                  />\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </Field>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter className=\\\"border-t\\\">\\n        <Field>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-complex\\\">\\n            Save Preferences\\n          </Button>\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-demo\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Controller, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nconst formSchema = z.object({\\n  title: z\\n    .string()\\n    .min(5, \\\"Bug title must be at least 5 characters.\\\")\\n    .max(32, \\\"Bug title must be at most 32 characters.\\\"),\\n  description: z\\n    .string()\\n    .min(20, \\\"Description must be at least 20 characters.\\\")\\n    .max(100, \\\"Description must be at most 100 characters.\\\"),\\n})\\n\\nexport default function BugReportForm() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      title: \\\"\\\",\\n      description: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Bug Report</CardTitle>\\n        <CardDescription>\\n          Help us improve by reporting bugs you encounter.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-demo\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"title\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field data-invalid={fieldState.invalid}>\\n                  <FieldLabel htmlFor=\\\"form-rhf-demo-title\\\">\\n                    Bug Title\\n                  </FieldLabel>\\n                  <Input\\n                    {...field}\\n                    id=\\\"form-rhf-demo-title\\\"\\n                    aria-invalid={fieldState.invalid}\\n                    placeholder=\\\"Login button not working on mobile\\\"\\n                    autoComplete=\\\"off\\\"\\n                  />\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </Field>\\n              )}\\n            />\\n            <Controller\\n              name=\\\"description\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field data-invalid={fieldState.invalid}>\\n                  <FieldLabel htmlFor=\\\"form-rhf-demo-description\\\">\\n                    Description\\n                  </FieldLabel>\\n                  <InputGroup>\\n                    <InputGroupTextarea\\n                      {...field}\\n                      id=\\\"form-rhf-demo-description\\\"\\n                      placeholder=\\\"I'm having an issue with the login button on mobile.\\\"\\n                      rows={6}\\n                      className=\\\"min-h-24 resize-none\\\"\\n                      aria-invalid={fieldState.invalid}\\n                    />\\n                    <InputGroupAddon align=\\\"block-end\\\">\\n                      <InputGroupText className=\\\"tabular-nums\\\">\\n                        {field.value.length}/100 characters\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                  <FieldDescription>\\n                    Include steps to reproduce, expected behavior, and what\\n                    actually happened.\\n                  </FieldDescription>\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </Field>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-demo\\\">\\n            Submit\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-input\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"input\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-input.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Controller, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nconst formSchema = z.object({\\n  username: z\\n    .string()\\n    .min(3, \\\"Username must be at least 3 characters.\\\")\\n    .max(10, \\\"Username must be at most 10 characters.\\\")\\n    .regex(\\n      /^[a-zA-Z0-9_]+$/,\\n      \\\"Username can only contain letters, numbers, and underscores.\\\"\\n    ),\\n})\\n\\nexport default function FormRhfInput() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      username: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Profile Settings</CardTitle>\\n        <CardDescription>\\n          Update your profile information below.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-input\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"username\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field data-invalid={fieldState.invalid}>\\n                  <FieldLabel htmlFor=\\\"form-rhf-input-username\\\">\\n                    Username\\n                  </FieldLabel>\\n                  <Input\\n                    {...field}\\n                    id=\\\"form-rhf-input-username\\\"\\n                    aria-invalid={fieldState.invalid}\\n                    placeholder=\\\"shadcn\\\"\\n                    autoComplete=\\\"username\\\"\\n                  />\\n                  <FieldDescription>\\n                    This is your public display name. Must be between 3 and 10\\n                    characters. Must only contain letters, numbers, and\\n                    underscores.\\n                  </FieldDescription>\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </Field>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-input\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-password.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-password\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"input-group\",\n    \"progress\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-password.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { CheckIcon } from \\\"lucide-react\\\"\\nimport { Controller, useForm, useWatch } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Progress } from \\\"@/registry/new-york-v4/ui/progress\\\"\\n\\nconst passwordRequirements = [\\n  {\\n    id: \\\"length\\\",\\n    label: \\\"At least 8 characters\\\",\\n    test: (val: string) => val.length >= 8,\\n  },\\n  {\\n    id: \\\"lowercase\\\",\\n    label: \\\"One lowercase letter\\\",\\n    test: (val: string) => /[a-z]/.test(val),\\n  },\\n  {\\n    id: \\\"uppercase\\\",\\n    label: \\\"One uppercase letter\\\",\\n    test: (val: string) => /[A-Z]/.test(val),\\n  },\\n  { id: \\\"number\\\", label: \\\"One number\\\", test: (val: string) => /\\\\d/.test(val) },\\n  {\\n    id: \\\"special\\\",\\n    label: \\\"One special character\\\",\\n    test: (val: string) => /[!@#$%^&*(),.?\\\":{}|<>]/.test(val),\\n  },\\n]\\n\\nconst formSchema = z.object({\\n  password: z\\n    .string()\\n    .min(8, \\\"Password must be at least 8 characters\\\")\\n    .refine(\\n      (val) => /[a-z]/.test(val),\\n      \\\"Password must contain at least one lowercase letter\\\"\\n    )\\n    .refine(\\n      (val) => /[A-Z]/.test(val),\\n      \\\"Password must contain at least one uppercase letter\\\"\\n    )\\n    .refine(\\n      (val) => /\\\\d/.test(val),\\n      \\\"Password must contain at least one number\\\"\\n    )\\n    .refine(\\n      (val) => /[!@#$%^&*(),.?\\\":{}|<>]/.test(val),\\n      \\\"Password must contain at least one special character\\\"\\n    ),\\n})\\n\\nexport default function FormRhfPassword() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      password: \\\"\\\",\\n    },\\n  })\\n\\n  const password = useWatch({\\n    control: form.control,\\n    name: \\\"password\\\",\\n  })\\n\\n  // Calculate password strength.\\n  const metRequirements = passwordRequirements.filter((req) =>\\n    req.test(password || \\\"\\\")\\n  )\\n  const strengthPercentage =\\n    (metRequirements.length / passwordRequirements.length) * 100\\n\\n  // Determine strength level and color.\\n  const getStrengthColor = () => {\\n    if (strengthPercentage === 0) return \\\"bg-neutral-200\\\"\\n    if (strengthPercentage <= 40) return \\\"bg-red-500\\\"\\n    if (strengthPercentage <= 80) return \\\"bg-yellow-500\\\"\\n    return \\\"bg-green-500\\\"\\n  }\\n\\n  const allRequirementsMet =\\n    metRequirements.length === passwordRequirements.length\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader className=\\\"border-b\\\">\\n        <CardTitle>Create Password</CardTitle>\\n        <CardDescription>\\n          Choose a strong password to secure your account.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-password\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"password\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field data-invalid={fieldState.invalid}>\\n                  <FieldLabel htmlFor=\\\"form-rhf-password-input\\\">\\n                    Password\\n                  </FieldLabel>\\n                  <InputGroup>\\n                    <InputGroupInput\\n                      {...field}\\n                      id=\\\"form-rhf-password-input\\\"\\n                      type=\\\"password\\\"\\n                      placeholder=\\\"Enter your password\\\"\\n                      aria-invalid={fieldState.invalid}\\n                      autoComplete=\\\"new-password\\\"\\n                    />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <CheckIcon\\n                        className={\\n                          allRequirementsMet\\n                            ? \\\"text-green-500\\\"\\n                            : \\\"text-muted-foreground\\\"\\n                        }\\n                      />\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n\\n                  {/* Password strength meter. */}\\n                  <div className=\\\"space-y-2\\\">\\n                    <Progress\\n                      value={strengthPercentage}\\n                      className={getStrengthColor()}\\n                    />\\n\\n                    {/* Requirements list. */}\\n                    <div className=\\\"space-y-1.5\\\">\\n                      {passwordRequirements.map((requirement) => {\\n                        const isMet = requirement.test(password || \\\"\\\")\\n                        return (\\n                          <div\\n                            key={requirement.id}\\n                            className=\\\"flex items-center gap-2 text-sm\\\"\\n                          >\\n                            <CheckIcon\\n                              className={\\n                                isMet\\n                                  ? \\\"size-4 text-green-500\\\"\\n                                  : \\\"size-4 text-muted-foreground\\\"\\n                              }\\n                            />\\n                            <span\\n                              className={\\n                                isMet\\n                                  ? \\\"text-foreground\\\"\\n                                  : \\\"text-muted-foreground\\\"\\n                              }\\n                            >\\n                              {requirement.label}\\n                            </span>\\n                          </div>\\n                        )\\n                      })}\\n                    </div>\\n                  </div>\\n\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </Field>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter className=\\\"border-t\\\">\\n        <Field>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-password\\\">\\n            Create Password\\n          </Button>\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-radiogroup.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-radiogroup\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-radiogroup.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Controller, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\n\\nconst plans = [\\n  {\\n    id: \\\"starter\\\",\\n    title: \\\"Starter (100K tokens/month)\\\",\\n    description: \\\"For everyday use with basic features.\\\",\\n  },\\n  {\\n    id: \\\"pro\\\",\\n    title: \\\"Pro (1M tokens/month)\\\",\\n    description: \\\"For advanced AI usage with more features.\\\",\\n  },\\n  {\\n    id: \\\"enterprise\\\",\\n    title: \\\"Enterprise (Unlimited tokens)\\\",\\n    description: \\\"For large teams and heavy usage.\\\",\\n  },\\n] as const\\n\\nconst formSchema = z.object({\\n  plan: z.string().min(1, \\\"You must select a subscription plan to continue.\\\"),\\n})\\n\\nexport default function FormRhfRadioGroup() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      plan: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Subscription Plan</CardTitle>\\n        <CardDescription>\\n          See pricing and features for each plan.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-radiogroup\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"plan\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <FieldSet data-invalid={fieldState.invalid}>\\n                  <FieldLegend>Plan</FieldLegend>\\n                  <FieldDescription>\\n                    You can upgrade or downgrade your plan at any time.\\n                  </FieldDescription>\\n                  <RadioGroup\\n                    name={field.name}\\n                    value={field.value}\\n                    onValueChange={field.onChange}\\n                    aria-invalid={fieldState.invalid}\\n                  >\\n                    {plans.map((plan) => (\\n                      <FieldLabel\\n                        key={plan.id}\\n                        htmlFor={`form-rhf-radiogroup-${plan.id}`}\\n                      >\\n                        <Field\\n                          orientation=\\\"horizontal\\\"\\n                          data-invalid={fieldState.invalid}\\n                        >\\n                          <FieldContent>\\n                            <FieldTitle>{plan.title}</FieldTitle>\\n                            <FieldDescription>\\n                              {plan.description}\\n                            </FieldDescription>\\n                          </FieldContent>\\n                          <RadioGroupItem\\n                            value={plan.id}\\n                            id={`form-rhf-radiogroup-${plan.id}`}\\n                            aria-invalid={fieldState.invalid}\\n                          />\\n                        </Field>\\n                      </FieldLabel>\\n                    ))}\\n                  </RadioGroup>\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </FieldSet>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-radiogroup\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-select\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"select\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Controller, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nconst spokenLanguages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n] as const\\n\\nconst formSchema = z.object({\\n  language: z\\n    .string()\\n    .min(1, \\\"Please select your spoken language.\\\")\\n    .refine((val) => val !== \\\"auto\\\", {\\n      message:\\n        \\\"Auto-detection is not allowed. Please select a specific language.\\\",\\n    }),\\n})\\n\\nexport default function FormRhfSelect() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      language: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-lg\\\">\\n      <CardHeader>\\n        <CardTitle>Language Preferences</CardTitle>\\n        <CardDescription>\\n          Select your preferred spoken language.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-select\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"language\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field\\n                  orientation=\\\"responsive\\\"\\n                  data-invalid={fieldState.invalid}\\n                >\\n                  <FieldContent>\\n                    <FieldLabel htmlFor=\\\"form-rhf-select-language\\\">\\n                      Spoken Language\\n                    </FieldLabel>\\n                    <FieldDescription>\\n                      For best results, select the language you speak.\\n                    </FieldDescription>\\n                    {fieldState.invalid && (\\n                      <FieldError errors={[fieldState.error]} />\\n                    )}\\n                  </FieldContent>\\n                  <Select\\n                    name={field.name}\\n                    value={field.value}\\n                    onValueChange={field.onChange}\\n                  >\\n                    <SelectTrigger\\n                      id=\\\"form-rhf-select-language\\\"\\n                      aria-invalid={fieldState.invalid}\\n                      className=\\\"min-w-[120px]\\\"\\n                    >\\n                      <SelectValue placeholder=\\\"Select\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent position=\\\"item-aligned\\\">\\n                      <SelectItem value=\\\"auto\\\">Auto</SelectItem>\\n                      <SelectSeparator />\\n                      {spokenLanguages.map((language) => (\\n                        <SelectItem key={language.value} value={language.value}>\\n                          {language.label}\\n                        </SelectItem>\\n                      ))}\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-select\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-switch\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"switch\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Controller, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\nconst formSchema = z.object({\\n  twoFactor: z.boolean().refine((val) => val === true, {\\n    message: \\\"It is highly recommended to enable two-factor authentication.\\\",\\n  }),\\n})\\n\\nexport default function FormRhfSwitch() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      twoFactor: false,\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Security Settings</CardTitle>\\n        <CardDescription>\\n          Manage your account security preferences.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-switch\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"twoFactor\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field\\n                  orientation=\\\"horizontal\\\"\\n                  data-invalid={fieldState.invalid}\\n                >\\n                  <FieldContent>\\n                    <FieldLabel htmlFor=\\\"form-rhf-switch-twoFactor\\\">\\n                      Multi-factor authentication\\n                    </FieldLabel>\\n                    <FieldDescription>\\n                      Enable multi-factor authentication to secure your account.\\n                    </FieldDescription>\\n                    {fieldState.invalid && (\\n                      <FieldError errors={[fieldState.error]} />\\n                    )}\\n                  </FieldContent>\\n                  <Switch\\n                    id=\\\"form-rhf-switch-twoFactor\\\"\\n                    name={field.name}\\n                    checked={field.value}\\n                    onCheckedChange={field.onChange}\\n                    aria-invalid={fieldState.invalid}\\n                  />\\n                </Field>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-switch\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-rhf-textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-rhf-textarea\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-rhf-textarea.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { Controller, useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nconst formSchema = z.object({\\n  about: z\\n    .string()\\n    .min(10, \\\"Please provide at least 10 characters.\\\")\\n    .max(200, \\\"Please keep it under 200 characters.\\\"),\\n})\\n\\nexport default function FormRhfTextarea() {\\n  const form = useForm<z.infer<typeof formSchema>>({\\n    resolver: zodResolver(formSchema),\\n    defaultValues: {\\n      about: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof formSchema>) {\\n    toast(\\\"You submitted the following values:\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n          <code>{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n      position: \\\"bottom-right\\\",\\n      classNames: {\\n        content: \\\"flex flex-col gap-2\\\",\\n      },\\n      style: {\\n        \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n      } as React.CSSProperties,\\n    })\\n  }\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Personalization</CardTitle>\\n        <CardDescription>\\n          Customize your experience by telling us more about yourself.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form id=\\\"form-rhf-textarea\\\" onSubmit={form.handleSubmit(onSubmit)}>\\n          <FieldGroup>\\n            <Controller\\n              name=\\\"about\\\"\\n              control={form.control}\\n              render={({ field, fieldState }) => (\\n                <Field data-invalid={fieldState.invalid}>\\n                  <FieldLabel htmlFor=\\\"form-rhf-textarea-about\\\">\\n                    More about you\\n                  </FieldLabel>\\n                  <Textarea\\n                    {...field}\\n                    id=\\\"form-rhf-textarea-about\\\"\\n                    aria-invalid={fieldState.invalid}\\n                    placeholder=\\\"I'm a software engineer...\\\"\\n                    className=\\\"min-h-[120px]\\\"\\n                  />\\n                  <FieldDescription>\\n                    Tell us more about yourself. This will be used to help us\\n                    personalize your experience.\\n                  </FieldDescription>\\n                  {fieldState.invalid && (\\n                    <FieldError errors={[fieldState.error]} />\\n                  )}\\n                </Field>\\n              )}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-rhf-textarea\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-array.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-array\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-array.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nconst formSchema = z.object({\\n  emails: z\\n    .array(\\n      z.object({\\n        address: z.string().email(\\\"Enter a valid email address.\\\"),\\n      })\\n    )\\n    .min(1, \\\"Add at least one email address.\\\")\\n    .max(5, \\\"You can add up to 5 email addresses.\\\"),\\n})\\n\\nexport default function FormTanstackArray() {\\n  const form = useForm({\\n    defaultValues: {\\n      emails: [{ address: \\\"\\\" }],\\n    },\\n    validators: {\\n      onBlur: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader className=\\\"border-b\\\">\\n        <CardTitle>Contact Emails</CardTitle>\\n        <CardDescription>Manage your contact email addresses.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form\\n          id=\\\"form-tanstack-array\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <form.Field name=\\\"emails\\\" mode=\\\"array\\\">\\n            {(field) => {\\n              const isInvalid =\\n                field.state.meta.isTouched && !field.state.meta.isValid\\n              return (\\n                <FieldSet className=\\\"gap-4\\\">\\n                  <FieldLegend variant=\\\"label\\\">Email Addresses</FieldLegend>\\n                  <FieldDescription>\\n                    Add up to 5 email addresses where we can contact you.\\n                  </FieldDescription>\\n                  <FieldGroup className=\\\"gap-4\\\">\\n                    {field.state.value.map((_, index) => (\\n                      <form.Field\\n                        key={index}\\n                        name={`emails[${index}].address`}\\n                        children={(subField) => {\\n                          const isSubFieldInvalid =\\n                            subField.state.meta.isTouched &&\\n                            !subField.state.meta.isValid\\n                          return (\\n                            <Field\\n                              orientation=\\\"horizontal\\\"\\n                              data-invalid={isSubFieldInvalid}\\n                            >\\n                              <FieldContent>\\n                                <InputGroup>\\n                                  <InputGroupInput\\n                                    id={`form-tanstack-array-email-${index}`}\\n                                    name={subField.name}\\n                                    value={subField.state.value}\\n                                    onBlur={subField.handleBlur}\\n                                    onChange={(e) =>\\n                                      subField.handleChange(e.target.value)\\n                                    }\\n                                    aria-invalid={isSubFieldInvalid}\\n                                    placeholder=\\\"name@example.com\\\"\\n                                    type=\\\"email\\\"\\n                                    autoComplete=\\\"email\\\"\\n                                  />\\n                                  {field.state.value.length > 1 && (\\n                                    <InputGroupAddon align=\\\"inline-end\\\">\\n                                      <InputGroupButton\\n                                        type=\\\"button\\\"\\n                                        variant=\\\"ghost\\\"\\n                                        size=\\\"icon-xs\\\"\\n                                        onClick={() => field.removeValue(index)}\\n                                        aria-label={`Remove email ${index + 1}`}\\n                                      >\\n                                        <XIcon />\\n                                      </InputGroupButton>\\n                                    </InputGroupAddon>\\n                                  )}\\n                                </InputGroup>\\n                                {isSubFieldInvalid && (\\n                                  <FieldError\\n                                    errors={subField.state.meta.errors}\\n                                  />\\n                                )}\\n                              </FieldContent>\\n                            </Field>\\n                          )\\n                        }}\\n                      />\\n                    ))}\\n                    <Button\\n                      type=\\\"button\\\"\\n                      variant=\\\"outline\\\"\\n                      size=\\\"sm\\\"\\n                      onClick={() => field.pushValue({ address: \\\"\\\" })}\\n                      disabled={field.state.value.length >= 5}\\n                    >\\n                      Add Email Address\\n                    </Button>\\n                  </FieldGroup>\\n                  {isInvalid && <FieldError errors={field.state.meta.errors} />}\\n                </FieldSet>\\n              )\\n            }}\\n          </form.Field>\\n        </form>\\n      </CardContent>\\n      <CardFooter className=\\\"border-t\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-tanstack-array\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-checkbox\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"checkbox\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-checkbox.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\n\\nconst tasks = [\\n  {\\n    id: \\\"push\\\",\\n    label: \\\"Push notifications\\\",\\n  },\\n  {\\n    id: \\\"email\\\",\\n    label: \\\"Email notifications\\\",\\n  },\\n] as const\\n\\nconst formSchema = z.object({\\n  responses: z.boolean(),\\n  tasks: z\\n    .array(z.string())\\n    .min(1, \\\"Please select at least one notification type.\\\")\\n    .refine(\\n      (value) => value.every((task) => tasks.some((t) => t.id === task)),\\n      {\\n        message: \\\"Invalid notification type selected.\\\",\\n      }\\n    ),\\n})\\n\\nexport default function FormTanstackCheckbox() {\\n  const form = useForm({\\n    defaultValues: {\\n      responses: true,\\n      tasks: [] as string[],\\n    },\\n    validators: {\\n      onSubmit: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Notifications</CardTitle>\\n        <CardDescription>Manage your notification preferences.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form\\n          id=\\\"form-tanstack-checkbox\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <FieldGroup>\\n            <form.Field\\n              name=\\\"responses\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <div>\\n                    <FieldSet>\\n                      <FieldLegend variant=\\\"label\\\">Responses</FieldLegend>\\n                      <FieldDescription>\\n                        Get notified for requests that take time, like research\\n                        or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field\\n                          orientation=\\\"horizontal\\\"\\n                          data-invalid={isInvalid}\\n                        >\\n                          <Checkbox\\n                            id=\\\"form-tanstack-checkbox-responses\\\"\\n                            name={field.name}\\n                            checked={field.state.value}\\n                            onCheckedChange={(checked) =>\\n                              field.handleChange(checked === true)\\n                            }\\n                            disabled\\n                          />\\n                          <FieldLabel\\n                            htmlFor=\\\"form-tanstack-checkbox-responses\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </div>\\n                )\\n              }}\\n            />\\n            <FieldSeparator />\\n            <form.Field\\n              name=\\\"tasks\\\"\\n              mode=\\\"array\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <FieldGroup>\\n                    <FieldSet data-invalid={isInvalid}>\\n                      <FieldLegend variant=\\\"label\\\">Tasks</FieldLegend>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        {tasks.map((task) => (\\n                          <Field\\n                            key={task.id}\\n                            orientation=\\\"horizontal\\\"\\n                            data-invalid={isInvalid}\\n                          >\\n                            <Checkbox\\n                              id={`form-tanstack-checkbox-${task.id}`}\\n                              name={field.name}\\n                              aria-invalid={isInvalid}\\n                              checked={field.state.value.includes(task.id)}\\n                              onCheckedChange={(checked) => {\\n                                if (checked) {\\n                                  field.pushValue(task.id)\\n                                } else {\\n                                  const index = field.state.value.indexOf(\\n                                    task.id\\n                                  )\\n                                  if (index > -1) {\\n                                    field.removeValue(index)\\n                                  }\\n                                }\\n                              }}\\n                            />\\n                            <FieldLabel\\n                              htmlFor={`form-tanstack-checkbox-${task.id}`}\\n                              className=\\\"font-normal\\\"\\n                            >\\n                              {task.label}\\n                            </FieldLabel>\\n                          </Field>\\n                        ))}\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </FieldGroup>\\n                )\\n              }}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-tanstack-checkbox\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-complex.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-complex\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"button\",\n    \"card\",\n    \"checkbox\",\n    \"radio-group\",\n    \"select\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-complex.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\nconst addons = [\\n  {\\n    id: \\\"analytics\\\",\\n    title: \\\"Analytics\\\",\\n    description: \\\"Advanced analytics and reporting\\\",\\n  },\\n  {\\n    id: \\\"backup\\\",\\n    title: \\\"Backup\\\",\\n    description: \\\"Automated daily backups\\\",\\n  },\\n  {\\n    id: \\\"support\\\",\\n    title: \\\"Priority Support\\\",\\n    description: \\\"24/7 premium customer support\\\",\\n  },\\n] as const\\n\\nconst formSchema = z.object({\\n  plan: z\\n    .string({\\n      required_error: \\\"Please select a subscription plan\\\",\\n    })\\n    .min(1, \\\"Please select a subscription plan\\\")\\n    .refine((value) => value === \\\"basic\\\" || value === \\\"pro\\\", {\\n      message: \\\"Invalid plan selection. Please choose Basic or Pro\\\",\\n    }),\\n  billingPeriod: z\\n    .string({\\n      required_error: \\\"Please select a billing period\\\",\\n    })\\n    .min(1, \\\"Please select a billing period\\\"),\\n  addons: z\\n    .array(z.string())\\n    .min(1, \\\"Please select at least one add-on\\\")\\n    .max(3, \\\"You can select up to 3 add-ons\\\")\\n    .refine(\\n      (value) => value.every((addon) => addons.some((a) => a.id === addon)),\\n      {\\n        message: \\\"You selected an invalid add-on\\\",\\n      }\\n    ),\\n  emailNotifications: z.boolean(),\\n})\\n\\nexport default function FormTanstackComplex() {\\n  const form = useForm({\\n    defaultValues: {\\n      plan: \\\"basic\\\",\\n      billingPeriod: \\\"monthly\\\",\\n      addons: [] as string[],\\n      emailNotifications: false,\\n    },\\n    validators: {\\n      onSubmit: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full max-w-sm\\\">\\n      <CardContent>\\n        <form\\n          id=\\\"subscription-form\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <FieldGroup>\\n            <form.Field\\n              name=\\\"plan\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <FieldSet>\\n                    <FieldLegend>Subscription Plan</FieldLegend>\\n                    <FieldDescription>\\n                      Choose your subscription plan.\\n                    </FieldDescription>\\n                    <RadioGroup\\n                      name={field.name}\\n                      value={field.state.value}\\n                      onValueChange={field.handleChange}\\n                    >\\n                      <FieldLabel htmlFor=\\\"basic\\\">\\n                        <Field\\n                          orientation=\\\"horizontal\\\"\\n                          data-invalid={isInvalid}\\n                        >\\n                          <FieldContent>\\n                            <FieldTitle>Basic</FieldTitle>\\n                            <FieldDescription>\\n                              For individuals and small teams\\n                            </FieldDescription>\\n                          </FieldContent>\\n                          <RadioGroupItem\\n                            value=\\\"basic\\\"\\n                            id=\\\"basic\\\"\\n                            aria-invalid={isInvalid}\\n                          />\\n                        </Field>\\n                      </FieldLabel>\\n                      <FieldLabel htmlFor=\\\"pro\\\">\\n                        <Field\\n                          orientation=\\\"horizontal\\\"\\n                          data-invalid={isInvalid}\\n                        >\\n                          <FieldContent>\\n                            <FieldTitle>Pro</FieldTitle>\\n                            <FieldDescription>\\n                              For businesses with higher demands\\n                            </FieldDescription>\\n                          </FieldContent>\\n                          <RadioGroupItem\\n                            value=\\\"pro\\\"\\n                            id=\\\"pro\\\"\\n                            aria-invalid={isInvalid}\\n                          />\\n                        </Field>\\n                      </FieldLabel>\\n                    </RadioGroup>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </FieldSet>\\n                )\\n              }}\\n            />\\n            <FieldSeparator />\\n            <form.Field\\n              name=\\\"billingPeriod\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <Field data-invalid={isInvalid}>\\n                    <FieldLabel htmlFor={field.name}>Billing Period</FieldLabel>\\n                    <Select\\n                      name={field.name}\\n                      value={field.state.value}\\n                      onValueChange={field.handleChange}\\n                      aria-invalid={isInvalid}\\n                    >\\n                      <SelectTrigger id={field.name}>\\n                        <SelectValue placeholder=\\\"Select\\\" />\\n                      </SelectTrigger>\\n                      <SelectContent>\\n                        <SelectItem value=\\\"monthly\\\">Monthly</SelectItem>\\n                        <SelectItem value=\\\"yearly\\\">Yearly</SelectItem>\\n                      </SelectContent>\\n                    </Select>\\n                    <FieldDescription>\\n                      Choose how often you want to be billed.\\n                    </FieldDescription>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </Field>\\n                )\\n              }}\\n            />\\n            <FieldSeparator />\\n            <form.Field\\n              name=\\\"addons\\\"\\n              mode=\\\"array\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <FieldSet>\\n                    <FieldLegend>Add-ons</FieldLegend>\\n                    <FieldDescription>\\n                      Select additional features you&apos;d like to include.\\n                    </FieldDescription>\\n                    <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                      {addons.map((addon) => (\\n                        <Field\\n                          key={addon.id}\\n                          orientation=\\\"horizontal\\\"\\n                          data-invalid={isInvalid}\\n                        >\\n                          <Checkbox\\n                            id={addon.id}\\n                            name={field.name}\\n                            aria-invalid={isInvalid}\\n                            checked={field.state.value.includes(addon.id)}\\n                            onCheckedChange={(checked) => {\\n                              if (checked) {\\n                                field.pushValue(addon.id)\\n                              } else {\\n                                const index = field.state.value.indexOf(\\n                                  addon.id\\n                                )\\n                                if (index > -1) {\\n                                  field.removeValue(index)\\n                                }\\n                              }\\n                            }}\\n                          />\\n                          <FieldContent>\\n                            <FieldLabel htmlFor={addon.id}>\\n                              {addon.title}\\n                            </FieldLabel>\\n                            <FieldDescription>\\n                              {addon.description}\\n                            </FieldDescription>\\n                          </FieldContent>\\n                        </Field>\\n                      ))}\\n                    </FieldGroup>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </FieldSet>\\n                )\\n              }}\\n            />\\n            <FieldSeparator />\\n            <form.Field\\n              name=\\\"emailNotifications\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <Field orientation=\\\"horizontal\\\" data-invalid={isInvalid}>\\n                    <FieldContent>\\n                      <FieldLabel htmlFor={field.name}>\\n                        Email Notifications\\n                      </FieldLabel>\\n                      <FieldDescription>\\n                        Receive email updates about your subscription\\n                      </FieldDescription>\\n                    </FieldContent>\\n                    <Switch\\n                      id={field.name}\\n                      name={field.name}\\n                      checked={field.state.value}\\n                      onCheckedChange={field.handleChange}\\n                      aria-invalid={isInvalid}\\n                    />\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </Field>\\n                )\\n              }}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\" className=\\\"justify-end\\\">\\n          <Button type=\\\"submit\\\" form=\\\"subscription-form\\\">\\n            Save Preferences\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-demo\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-demo.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nconst formSchema = z.object({\\n  title: z\\n    .string()\\n    .min(5, \\\"Bug title must be at least 5 characters.\\\")\\n    .max(32, \\\"Bug title must be at most 32 characters.\\\"),\\n  description: z\\n    .string()\\n    .min(20, \\\"Description must be at least 20 characters.\\\")\\n    .max(100, \\\"Description must be at most 100 characters.\\\"),\\n})\\n\\nexport default function BugReportForm() {\\n  const form = useForm({\\n    defaultValues: {\\n      title: \\\"\\\",\\n      description: \\\"\\\",\\n    },\\n    validators: {\\n      onSubmit: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Bug Report</CardTitle>\\n        <CardDescription>\\n          Help us improve by reporting bugs you encounter.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form\\n          id=\\\"bug-report-form\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <FieldGroup>\\n            <form.Field\\n              name=\\\"title\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <Field data-invalid={isInvalid}>\\n                    <FieldLabel htmlFor={field.name}>Bug Title</FieldLabel>\\n                    <Input\\n                      id={field.name}\\n                      name={field.name}\\n                      value={field.state.value}\\n                      onBlur={field.handleBlur}\\n                      onChange={(e) => field.handleChange(e.target.value)}\\n                      aria-invalid={isInvalid}\\n                      placeholder=\\\"Login button not working on mobile\\\"\\n                      autoComplete=\\\"off\\\"\\n                    />\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </Field>\\n                )\\n              }}\\n            />\\n            <form.Field\\n              name=\\\"description\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <Field data-invalid={isInvalid}>\\n                    <FieldLabel htmlFor={field.name}>Description</FieldLabel>\\n                    <InputGroup>\\n                      <InputGroupTextarea\\n                        id={field.name}\\n                        name={field.name}\\n                        value={field.state.value}\\n                        onBlur={field.handleBlur}\\n                        onChange={(e) => field.handleChange(e.target.value)}\\n                        placeholder=\\\"I'm having an issue with the login button on mobile.\\\"\\n                        rows={6}\\n                        className=\\\"min-h-24 resize-none\\\"\\n                        aria-invalid={isInvalid}\\n                      />\\n                      <InputGroupAddon align=\\\"block-end\\\">\\n                        <InputGroupText className=\\\"tabular-nums\\\">\\n                          {field.state.value.length}/100 characters\\n                        </InputGroupText>\\n                      </InputGroupAddon>\\n                    </InputGroup>\\n                    <FieldDescription>\\n                      Include steps to reproduce, expected behavior, and what\\n                      actually happened.\\n                    </FieldDescription>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </Field>\\n                )\\n              }}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"bug-report-form\\\">\\n            Submit\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-input\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"input\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-input.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nconst formSchema = z.object({\\n  username: z\\n    .string()\\n    .min(3, \\\"Username must be at least 3 characters.\\\")\\n    .max(10, \\\"Username must be at most 10 characters.\\\")\\n    .regex(\\n      /^[a-zA-Z0-9_]+$/,\\n      \\\"Username can only contain letters, numbers, and underscores.\\\"\\n    ),\\n})\\n\\nexport default function FormTanstackInput() {\\n  const form = useForm({\\n    defaultValues: {\\n      username: \\\"\\\",\\n    },\\n    validators: {\\n      onSubmit: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Profile Settings</CardTitle>\\n        <CardDescription>\\n          Update your profile information below.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form\\n          id=\\\"form-tanstack-input\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <FieldGroup>\\n            <form.Field\\n              name=\\\"username\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <Field data-invalid={isInvalid}>\\n                    <FieldLabel htmlFor=\\\"form-tanstack-input-username\\\">\\n                      Username\\n                    </FieldLabel>\\n                    <Input\\n                      id=\\\"form-tanstack-input-username\\\"\\n                      name={field.name}\\n                      value={field.state.value}\\n                      onBlur={field.handleBlur}\\n                      onChange={(e) => field.handleChange(e.target.value)}\\n                      aria-invalid={isInvalid}\\n                      placeholder=\\\"shadcn\\\"\\n                      autoComplete=\\\"username\\\"\\n                    />\\n                    <FieldDescription>\\n                      This is your public display name. Must be between 3 and 10\\n                      characters. Must only contain letters, numbers, and\\n                      underscores.\\n                    </FieldDescription>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </Field>\\n                )\\n              }}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-tanstack-input\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-radiogroup.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-radiogroup\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-radiogroup.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\n\\nconst plans = [\\n  {\\n    id: \\\"starter\\\",\\n    title: \\\"Starter (100K tokens/month)\\\",\\n    description: \\\"For everyday use with basic features.\\\",\\n  },\\n  {\\n    id: \\\"pro\\\",\\n    title: \\\"Pro (1M tokens/month)\\\",\\n    description: \\\"For advanced AI usage with more features.\\\",\\n  },\\n  {\\n    id: \\\"enterprise\\\",\\n    title: \\\"Enterprise (Unlimited tokens)\\\",\\n    description: \\\"For large teams and heavy usage.\\\",\\n  },\\n] as const\\n\\nconst formSchema = z.object({\\n  plan: z.string().min(1, \\\"You must select a subscription plan to continue.\\\"),\\n})\\n\\nexport default function FormTanstackRadioGroup() {\\n  const form = useForm({\\n    defaultValues: {\\n      plan: \\\"\\\",\\n    },\\n    validators: {\\n      onSubmit: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Subscription Plan</CardTitle>\\n        <CardDescription>\\n          See pricing and features for each plan.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form\\n          id=\\\"form-tanstack-radiogroup\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <FieldGroup>\\n            <form.Field\\n              name=\\\"plan\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <FieldSet>\\n                    <FieldLegend>Plan</FieldLegend>\\n                    <FieldDescription>\\n                      You can upgrade or downgrade your plan at any time.\\n                    </FieldDescription>\\n                    <RadioGroup\\n                      name={field.name}\\n                      value={field.state.value}\\n                      onValueChange={field.handleChange}\\n                    >\\n                      {plans.map((plan) => (\\n                        <FieldLabel\\n                          key={plan.id}\\n                          htmlFor={`form-tanstack-radiogroup-${plan.id}`}\\n                        >\\n                          <Field\\n                            orientation=\\\"horizontal\\\"\\n                            data-invalid={isInvalid}\\n                          >\\n                            <FieldContent>\\n                              <FieldTitle>{plan.title}</FieldTitle>\\n                              <FieldDescription>\\n                                {plan.description}\\n                              </FieldDescription>\\n                            </FieldContent>\\n                            <RadioGroupItem\\n                              value={plan.id}\\n                              id={`form-tanstack-radiogroup-${plan.id}`}\\n                              aria-invalid={isInvalid}\\n                            />\\n                          </Field>\\n                        </FieldLabel>\\n                      ))}\\n                    </RadioGroup>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </FieldSet>\\n                )\\n              }}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-tanstack-radiogroup\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-select\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"select\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-select.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nconst spokenLanguages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n] as const\\n\\nconst formSchema = z.object({\\n  language: z\\n    .string()\\n    .min(1, \\\"Please select your spoken language.\\\")\\n    .refine((val) => val !== \\\"auto\\\", {\\n      message:\\n        \\\"Auto-detection is not allowed. Please select a specific language.\\\",\\n    }),\\n})\\n\\nexport default function FormTanstackSelect() {\\n  const form = useForm({\\n    defaultValues: {\\n      language: \\\"\\\",\\n    },\\n    validators: {\\n      onSubmit: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-lg\\\">\\n      <CardHeader>\\n        <CardTitle>Language Preferences</CardTitle>\\n        <CardDescription>\\n          Select your preferred spoken language.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form\\n          id=\\\"form-tanstack-select\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <FieldGroup>\\n            <form.Field\\n              name=\\\"language\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <Field orientation=\\\"responsive\\\" data-invalid={isInvalid}>\\n                    <FieldContent>\\n                      <FieldLabel htmlFor=\\\"form-tanstack-select-language\\\">\\n                        Spoken Language\\n                      </FieldLabel>\\n                      <FieldDescription>\\n                        For best results, select the language you speak.\\n                      </FieldDescription>\\n                      {isInvalid && (\\n                        <FieldError errors={field.state.meta.errors} />\\n                      )}\\n                    </FieldContent>\\n                    <Select\\n                      name={field.name}\\n                      value={field.state.value}\\n                      onValueChange={field.handleChange}\\n                    >\\n                      <SelectTrigger\\n                        id=\\\"form-tanstack-select-language\\\"\\n                        aria-invalid={isInvalid}\\n                        className=\\\"min-w-[120px]\\\"\\n                      >\\n                        <SelectValue placeholder=\\\"Select\\\" />\\n                      </SelectTrigger>\\n                      <SelectContent position=\\\"item-aligned\\\">\\n                        <SelectItem value=\\\"auto\\\">Auto</SelectItem>\\n                        <SelectSeparator />\\n                        {spokenLanguages.map((language) => (\\n                          <SelectItem\\n                            key={language.value}\\n                            value={language.value}\\n                          >\\n                            {language.label}\\n                          </SelectItem>\\n                        ))}\\n                      </SelectContent>\\n                    </Select>\\n                  </Field>\\n                )\\n              }}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-tanstack-select\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-switch\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"switch\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-switch.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\nconst formSchema = z.object({\\n  twoFactor: z.boolean().refine((val) => val === true, {\\n    message: \\\"It is highly recommended to enable two-factor authentication.\\\",\\n  }),\\n})\\n\\nexport default function FormTanstackSwitch() {\\n  const form = useForm({\\n    defaultValues: {\\n      twoFactor: false,\\n    },\\n    validators: {\\n      onSubmit: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Security Settings</CardTitle>\\n        <CardDescription>\\n          Manage your account security preferences.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form\\n          id=\\\"form-tanstack-switch\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <FieldGroup>\\n            <form.Field\\n              name=\\\"twoFactor\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <Field orientation=\\\"horizontal\\\" data-invalid={isInvalid}>\\n                    <FieldContent>\\n                      <FieldLabel htmlFor=\\\"form-tanstack-switch-twoFactor\\\">\\n                        Multi-factor authentication\\n                      </FieldLabel>\\n                      <FieldDescription>\\n                        Enable multi-factor authentication to secure your\\n                        account.\\n                      </FieldDescription>\\n                      {isInvalid && (\\n                        <FieldError errors={field.state.meta.errors} />\\n                      )}\\n                    </FieldContent>\\n                    <Switch\\n                      id=\\\"form-tanstack-switch-twoFactor\\\"\\n                      name={field.name}\\n                      checked={field.state.value}\\n                      onCheckedChange={field.handleChange}\\n                      aria-invalid={isInvalid}\\n                    />\\n                  </Field>\\n                )\\n              }}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-tanstack-switch\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form-tanstack-textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-tanstack-textarea\",\n  \"dependencies\": [\n    \"@tanstack/react-form\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/form-tanstack-textarea.tsx\",\n      \"content\": \"/* eslint-disable react/no-children-prop */\\n\\\"use client\\\"\\n\\nimport { useForm } from \\\"@tanstack/react-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport * as z from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nconst formSchema = z.object({\\n  about: z\\n    .string()\\n    .min(10, \\\"Please provide at least 10 characters.\\\")\\n    .max(200, \\\"Please keep it under 200 characters.\\\"),\\n})\\n\\nexport default function FormTanstackTextarea() {\\n  const form = useForm({\\n    defaultValues: {\\n      about: \\\"\\\",\\n    },\\n    validators: {\\n      onSubmit: formSchema,\\n    },\\n    onSubmit: async ({ value }) => {\\n      toast(\\\"You submitted the following values:\\\", {\\n        description: (\\n          <pre className=\\\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\\\">\\n            <code>{JSON.stringify(value, null, 2)}</code>\\n          </pre>\\n        ),\\n        position: \\\"bottom-right\\\",\\n        classNames: {\\n          content: \\\"flex flex-col gap-2\\\",\\n        },\\n        style: {\\n          \\\"--border-radius\\\": \\\"calc(var(--radius)  + 4px)\\\",\\n        } as React.CSSProperties,\\n      })\\n    },\\n  })\\n\\n  return (\\n    <Card className=\\\"w-full sm:max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Personalization</CardTitle>\\n        <CardDescription>\\n          Customize your experience by telling us more about yourself.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form\\n          id=\\\"form-tanstack-textarea\\\"\\n          onSubmit={(e) => {\\n            e.preventDefault()\\n            form.handleSubmit()\\n          }}\\n        >\\n          <FieldGroup>\\n            <form.Field\\n              name=\\\"about\\\"\\n              children={(field) => {\\n                const isInvalid =\\n                  field.state.meta.isTouched && !field.state.meta.isValid\\n                return (\\n                  <Field data-invalid={isInvalid}>\\n                    <FieldLabel htmlFor=\\\"form-tanstack-textarea-about\\\">\\n                      More about you\\n                    </FieldLabel>\\n                    <Textarea\\n                      id=\\\"form-tanstack-textarea-about\\\"\\n                      name={field.name}\\n                      value={field.state.value}\\n                      onBlur={field.handleBlur}\\n                      onChange={(e) => field.handleChange(e.target.value)}\\n                      aria-invalid={isInvalid}\\n                      placeholder=\\\"I'm a software engineer...\\\"\\n                      className=\\\"min-h-[120px]\\\"\\n                    />\\n                    <FieldDescription>\\n                      Tell us more about yourself. This will be used to help us\\n                      personalize your experience.\\n                    </FieldDescription>\\n                    {isInvalid && (\\n                      <FieldError errors={field.state.meta.errors} />\\n                    )}\\n                  </Field>\\n                )\\n              }}\\n            />\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n      <CardFooter>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Button type=\\\"button\\\" variant=\\\"outline\\\" onClick={() => form.reset()}>\\n            Reset\\n          </Button>\\n          <Button type=\\\"submit\\\" form=\\\"form-tanstack-textarea\\\">\\n            Save\\n          </Button>\\n        </Field>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"dependencies\": [\n    \"radix-ui\",\n    \"@hookform/resolvers\",\n    \"zod\",\n    \"react-hook-form\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Label as LabelPrimitive } from \\\"radix-ui\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\nimport {\\n  Controller,\\n  FormProvider,\\n  useFormContext,\\n  useFormState,\\n  type ControllerProps,\\n  type FieldPath,\\n  type FieldValues,\\n} from \\\"react-hook-form\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nconst Form = FormProvider\\n\\ntype FormFieldContextValue<\\n  TFieldValues extends FieldValues = FieldValues,\\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\\n> = {\\n  name: TName\\n}\\n\\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\\n  {} as FormFieldContextValue\\n)\\n\\nconst FormField = <\\n  TFieldValues extends FieldValues = FieldValues,\\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\\n>({\\n  ...props\\n}: ControllerProps<TFieldValues, TName>) => {\\n  return (\\n    <FormFieldContext.Provider value={{ name: props.name }}>\\n      <Controller {...props} />\\n    </FormFieldContext.Provider>\\n  )\\n}\\n\\nconst useFormField = () => {\\n  const fieldContext = React.useContext(FormFieldContext)\\n  const itemContext = React.useContext(FormItemContext)\\n  const { getFieldState } = useFormContext()\\n  const formState = useFormState({ name: fieldContext.name })\\n  const fieldState = getFieldState(fieldContext.name, formState)\\n\\n  if (!fieldContext) {\\n    throw new Error(\\\"useFormField should be used within <FormField>\\\")\\n  }\\n\\n  const { id } = itemContext\\n\\n  return {\\n    id,\\n    name: fieldContext.name,\\n    formItemId: `${id}-form-item`,\\n    formDescriptionId: `${id}-form-item-description`,\\n    formMessageId: `${id}-form-item-message`,\\n    ...fieldState,\\n  }\\n}\\n\\ntype FormItemContextValue = {\\n  id: string\\n}\\n\\nconst FormItemContext = React.createContext<FormItemContextValue>(\\n  {} as FormItemContextValue\\n)\\n\\nfunction FormItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const id = React.useId()\\n\\n  return (\\n    <FormItemContext.Provider value={{ id }}>\\n      <div\\n        data-slot=\\\"form-item\\\"\\n        className={cn(\\\"grid gap-2\\\", className)}\\n        {...props}\\n      />\\n    </FormItemContext.Provider>\\n  )\\n}\\n\\nfunction FormLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\\n  const { error, formItemId } = useFormField()\\n\\n  return (\\n    <Label\\n      data-slot=\\\"form-label\\\"\\n      data-error={!!error}\\n      className={cn(\\\"data-[error=true]:text-destructive\\\", className)}\\n      htmlFor={formItemId}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot.Root>) {\\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\\n\\n  return (\\n    <Slot.Root\\n      data-slot=\\\"form-control\\\"\\n      id={formItemId}\\n      aria-describedby={\\n        !error\\n          ? `${formDescriptionId}`\\n          : `${formDescriptionId} ${formMessageId}`\\n      }\\n      aria-invalid={!!error}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FormDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  const { formDescriptionId } = useFormField()\\n\\n  return (\\n    <p\\n      data-slot=\\\"form-description\\\"\\n      id={formDescriptionId}\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FormMessage({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  const { error, formMessageId } = useFormField()\\n  const body = error ? String(error?.message ?? \\\"\\\") : props.children\\n\\n  if (!body) {\\n    return null\\n  }\\n\\n  return (\\n    <p\\n      data-slot=\\\"form-message\\\"\\n      id={formMessageId}\\n      className={cn(\\\"text-sm text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {body}\\n    </p>\\n  )\\n}\\n\\nexport {\\n  useFormField,\\n  Form,\\n  FormItem,\\n  FormLabel,\\n  FormControl,\\n  FormDescription,\\n  FormMessage,\\n  FormField,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/hover-card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-demo\",\n  \"registryDependencies\": [\n    \"hover-card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/hover-card-demo.tsx\",\n      \"content\": \"import { CalendarIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/new-york-v4/ui/hover-card\\\"\\n\\nexport default function HoverCardDemo() {\\n  return (\\n    <HoverCard>\\n      <HoverCardTrigger asChild>\\n        <Button variant=\\\"link\\\">@nextjs</Button>\\n      </HoverCardTrigger>\\n      <HoverCardContent className=\\\"w-80\\\">\\n        <div className=\\\"flex justify-between gap-4\\\">\\n          <Avatar>\\n            <AvatarImage src=\\\"https://github.com/vercel.png\\\" />\\n            <AvatarFallback>VC</AvatarFallback>\\n          </Avatar>\\n          <div className=\\\"space-y-1\\\">\\n            <h4 className=\\\"text-sm font-semibold\\\">@nextjs</h4>\\n            <p className=\\\"text-sm\\\">\\n              The React Framework – created and maintained by @vercel.\\n            </p>\\n            <div className=\\\"text-xs text-muted-foreground\\\">\\n              Joined December 2021\\n            </div>\\n          </div>\\n        </div>\\n      </HoverCardContent>\\n    </HoverCard>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { HoverCard as HoverCardPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction HoverCard({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\\n  return <HoverCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\\n  return (\\n    <HoverCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\\n  return (\\n    <HoverCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <HoverCardPrimitive.Content\\n        data-slot=\\\"hover-card-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </HoverCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-demo\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-demo.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport default function InputDemo() {\\n  return <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-disabled\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-disabled.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport default function InputDisabled() {\\n  return <Input disabled type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-file.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-file\",\n  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-file.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function InputFile() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-3\\\">\\n      <Label htmlFor=\\\"picture\\\">Picture</Label>\\n      <Input id=\\\"picture\\\" type=\\\"file\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-form\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nconst FormSchema = z.object({\\n  username: z.string().min(2, {\\n    message: \\\"Username must be at least 2 characters.\\\",\\n  }),\\n})\\n\\nexport default function InputForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      username: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"username\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Username</FormLabel>\\n              <FormControl>\\n                <Input placeholder=\\\"shadcn\\\" {...field} />\\n              </FormControl>\\n              <FormDescription>\\n                This is your public display name.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-align.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-align\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-align.tsx\",\n      \"content\": \"import { Info, User } from \\\"lucide-react\\\"\\n\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupText,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nexport default function InputGroupAlign() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-4\\\">\\n      <InputGroup>\\n        <Input placeholder=\\\"Inline start alignment\\\" />\\n        <InputGroupAddon align=\\\"inline-start\\\">\\n          <User className=\\\"h-4 w-4\\\" />\\n        </InputGroupAddon>\\n      </InputGroup>\\n\\n      <InputGroup>\\n        <Input placeholder=\\\"Inline end alignment\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Info className=\\\"h-4 w-4\\\" />\\n        </InputGroupAddon>\\n      </InputGroup>\\n\\n      <InputGroup className=\\\"h-auto\\\">\\n        <Input placeholder=\\\"Block start alignment\\\" />\\n        <InputGroupAddon align=\\\"block-start\\\">\\n          <InputGroupText>Block Start Label</InputGroupText>\\n        </InputGroupAddon>\\n      </InputGroup>\\n\\n      <InputGroup className=\\\"h-auto\\\">\\n        <Input placeholder=\\\"Block end alignment\\\" />\\n        <InputGroupAddon align=\\\"block-end\\\">\\n          <InputGroupText>Block End Helper Text</InputGroupText>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-button-group\",\n  \"registryDependencies\": [\n    \"input-group\",\n    \"button-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-button-group.tsx\",\n      \"content\": \"import { Link2Icon } from \\\"lucide-react\\\"\\n\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/new-york-v4/ui/button-group\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function InputGroupButtonGroup() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-6\\\">\\n      <ButtonGroup>\\n        <ButtonGroupText asChild>\\n          <Label htmlFor=\\\"url\\\">https://</Label>\\n        </ButtonGroupText>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"url\\\" />\\n          <InputGroupAddon align=\\\"inline-end\\\">\\n            <Link2Icon />\\n          </InputGroupAddon>\\n        </InputGroup>\\n        <ButtonGroupText>.com</ButtonGroupText>\\n      </ButtonGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-button\",\n  \"registryDependencies\": [\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-button.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  IconCheck,\\n  IconCopy,\\n  IconInfoCircle,\\n  IconStar,\\n} from \\\"@tabler/icons-react\\\"\\n\\nimport { useCopyToClipboard } from \\\"@/hooks/use-copy-to-clipboard\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function InputGroupButtonExample() {\\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\\n  const [isFavorite, setIsFavorite] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-6\\\">\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"https://x.com/shadcn\\\" readOnly />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <InputGroupButton\\n            aria-label=\\\"Copy\\\"\\n            title=\\\"Copy\\\"\\n            size=\\\"icon-xs\\\"\\n            onClick={() => {\\n              copyToClipboard(\\\"https://x.com/shadcn\\\")\\n            }}\\n          >\\n            {isCopied ? <IconCheck /> : <IconCopy />}\\n          </InputGroupButton>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup className=\\\"[--radius:9999px]\\\">\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconInfoCircle />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </PopoverTrigger>\\n          <PopoverContent\\n            align=\\\"start\\\"\\n            className=\\\"flex flex-col gap-1 rounded-xl text-sm\\\"\\n          >\\n            <p className=\\\"font-medium\\\">Your connection is not secure.</p>\\n            <p>You should not enter any sensitive information on this site.</p>\\n          </PopoverContent>\\n        </Popover>\\n        <InputGroupAddon className=\\\"pl-1.5 text-muted-foreground\\\">\\n          https://\\n        </InputGroupAddon>\\n        <InputGroupInput id=\\\"input-secure-19\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <InputGroupButton\\n            onClick={() => setIsFavorite(!isFavorite)}\\n            size=\\\"icon-xs\\\"\\n          >\\n            <IconStar\\n              data-favorite={isFavorite}\\n              className=\\\"data-[favorite=true]:fill-blue-600 data-[favorite=true]:stroke-blue-600\\\"\\n            />\\n          </InputGroupButton>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <InputGroupButton variant=\\\"secondary\\\">Search</InputGroupButton>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-custom\",\n  \"registryDependencies\": [\n    \"input-group\",\n    \"badge\",\n    \"progress\",\n    \"dropdown-menu\",\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-custom.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport TextareaAutosize from \\\"react-textarea-autosize\\\"\\n\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nexport default function InputGroupCustom() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-6\\\">\\n      <InputGroup>\\n        <TextareaAutosize\\n          data-slot=\\\"input-group-control\\\"\\n          className=\\\"flex field-sizing-content min-h-16 w-full resize-none rounded-md bg-transparent px-3 py-2.5 text-base transition-[color,box-shadow] outline-none md:text-sm\\\"\\n          placeholder=\\\"Autoresize textarea...\\\"\\n        />\\n        <InputGroupAddon align=\\\"block-end\\\">\\n          <InputGroupButton className=\\\"ml-auto\\\" size=\\\"sm\\\" variant=\\\"default\\\">\\n            Submit\\n          </InputGroupButton>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-demo\",\n  \"registryDependencies\": [\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-demo.tsx\",\n      \"content\": \"import { IconCheck, IconInfoCircle, IconPlus } from \\\"@tabler/icons-react\\\"\\nimport { ArrowUpIcon, Search } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tooltip\\\"\\n\\nexport default function InputGroupDemo() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-6\\\">\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Search...\\\" />\\n        <InputGroupAddon>\\n          <Search />\\n        </InputGroupAddon>\\n        <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"example.com\\\" className=\\\"pl-1!\\\" />\\n        <InputGroupAddon>\\n          <InputGroupText>https://</InputGroupText>\\n        </InputGroupAddon>\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\">\\n                <IconInfoCircle />\\n              </InputGroupButton>\\n            </TooltipTrigger>\\n            <TooltipContent>This is content in a tooltip.</TooltipContent>\\n          </Tooltip>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupTextarea placeholder=\\\"Ask, Search or Chat...\\\" />\\n        <InputGroupAddon align=\\\"block-end\\\">\\n          <InputGroupButton\\n            variant=\\\"outline\\\"\\n            className=\\\"rounded-full\\\"\\n            size=\\\"icon-xs\\\"\\n          >\\n            <IconPlus />\\n          </InputGroupButton>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <InputGroupButton variant=\\\"ghost\\\">Auto</InputGroupButton>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent\\n              side=\\\"top\\\"\\n              align=\\\"start\\\"\\n              className=\\\"[--radius:0.95rem]\\\"\\n            >\\n              <DropdownMenuItem>Auto</DropdownMenuItem>\\n              <DropdownMenuItem>Agent</DropdownMenuItem>\\n              <DropdownMenuItem>Manual</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <InputGroupText className=\\\"ml-auto\\\">52% used</InputGroupText>\\n          <Separator orientation=\\\"vertical\\\" className=\\\"h-4!\\\" />\\n          <InputGroupButton\\n            variant=\\\"default\\\"\\n            className=\\\"rounded-full\\\"\\n            size=\\\"icon-xs\\\"\\n            disabled\\n          >\\n            <ArrowUpIcon />\\n            <span className=\\\"sr-only\\\">Send</span>\\n          </InputGroupButton>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"@shadcn\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <div className=\\\"flex size-4 items-center justify-center rounded-full bg-primary text-primary-foreground\\\">\\n            <IconCheck className=\\\"size-3\\\" />\\n          </div>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-dropdown.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-dropdown\",\n  \"registryDependencies\": [\n    \"input-group\",\n    \"dropdown-menu\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-dropdown.tsx\",\n      \"content\": \"import { ChevronDownIcon, MoreHorizontal } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nexport default function InputGroupDropdown() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-4\\\">\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Enter file name\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <InputGroupButton\\n                variant=\\\"ghost\\\"\\n                aria-label=\\\"More\\\"\\n                size=\\\"icon-xs\\\"\\n              >\\n                <MoreHorizontal />\\n              </InputGroupButton>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Copy path</DropdownMenuItem>\\n              <DropdownMenuItem>Open location</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup className=\\\"[--radius:1rem]\\\">\\n        <InputGroupInput placeholder=\\\"Enter search query\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"pr-1.5! text-xs\\\">\\n                Search In... <ChevronDownIcon className=\\\"size-3\\\" />\\n              </InputGroupButton>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"[--radius:0.95rem]\\\">\\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\\n              <DropdownMenuItem>Blog Posts</DropdownMenuItem>\\n              <DropdownMenuItem>Changelog</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-icon\",\n  \"registryDependencies\": [\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-icon.tsx\",\n      \"content\": \"import {\\n  CheckIcon,\\n  CreditCardIcon,\\n  InfoIcon,\\n  MailIcon,\\n  SearchIcon,\\n  StarIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nexport default function InputGroupIcon() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-6\\\">\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Search...\\\" />\\n        <InputGroupAddon>\\n          <SearchIcon />\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput type=\\\"email\\\" placeholder=\\\"Enter your email\\\" />\\n        <InputGroupAddon>\\n          <MailIcon />\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Card number\\\" />\\n        <InputGroupAddon>\\n          <CreditCardIcon />\\n        </InputGroupAddon>\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <CheckIcon />\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Card number\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <StarIcon />\\n          <InfoIcon />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-label\",\n  \"registryDependencies\": [\n    \"input-group\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-label.tsx\",\n      \"content\": \"import { InfoIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tooltip\\\"\\n\\nexport default function InputGroupLabel() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-4\\\">\\n      <InputGroup>\\n        <InputGroupInput id=\\\"email\\\" placeholder=\\\"shadcn\\\" />\\n        <InputGroupAddon>\\n          <Label htmlFor=\\\"email\\\">@</Label>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput id=\\\"email-2\\\" placeholder=\\\"shadcn@vercel.com\\\" />\\n        <InputGroupAddon align=\\\"block-start\\\">\\n          <Label htmlFor=\\\"email-2\\\" className=\\\"text-foreground\\\">\\n            Email\\n          </Label>\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <InputGroupButton\\n                variant=\\\"ghost\\\"\\n                aria-label=\\\"Help\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n                size=\\\"icon-xs\\\"\\n              >\\n                <InfoIcon />\\n              </InputGroupButton>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>We&apos;ll use this to send you notifications</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-select\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"input-group\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-select.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport default function InputGroupSelect() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-4\\\">\\n      <InputGroup>\\n        <InputGroupAddon>\\n          <Select defaultValue=\\\"usd\\\">\\n            <SelectTrigger className=\\\"w-20 border-0 bg-transparent shadow-none\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </InputGroupAddon>\\n        <Input placeholder=\\\"0.00\\\" />\\n      </InputGroup>\\n\\n      <InputGroup>\\n        <Input placeholder=\\\"Enter phone number\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Select defaultValue=\\\"us\\\">\\n            <SelectTrigger className=\\\"w-16 border-0 bg-transparent shadow-none\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"us\\\">🇺🇸</SelectItem>\\n              <SelectItem value=\\\"uk\\\">🇬🇧</SelectItem>\\n              <SelectItem value=\\\"ca\\\">🇨🇦</SelectItem>\\n              <SelectItem value=\\\"fr\\\">🇫🇷</SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </InputGroupAddon>\\n      </InputGroup>\\n\\n      <InputGroup>\\n        <InputGroupAddon>\\n          <Select defaultValue=\\\"https\\\">\\n            <SelectTrigger className=\\\"w-24 border-0 bg-transparent shadow-none\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"https\\\">https://</SelectItem>\\n              <SelectItem value=\\\"http\\\">http://</SelectItem>\\n              <SelectItem value=\\\"ftp\\\">ftp://</SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </InputGroupAddon>\\n        <Input placeholder=\\\"example.com\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Select defaultValue=\\\"com\\\">\\n            <SelectTrigger className=\\\"w-16 border-0 bg-transparent shadow-none\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"com\\\">.com</SelectItem>\\n              <SelectItem value=\\\"org\\\">.org</SelectItem>\\n              <SelectItem value=\\\"net\\\">.net</SelectItem>\\n              <SelectItem value=\\\"io\\\">.io</SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-spinner\",\n  \"registryDependencies\": [\n    \"input-group\",\n    \"spinner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-spinner.tsx\",\n      \"content\": \"import { LoaderIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function InputGroupSpinner() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-4\\\">\\n      <InputGroup data-disabled>\\n        <InputGroupInput placeholder=\\\"Searching...\\\" disabled />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Spinner />\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup data-disabled>\\n        <InputGroupInput placeholder=\\\"Processing...\\\" disabled />\\n        <InputGroupAddon>\\n          <Spinner />\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup data-disabled>\\n        <InputGroupInput placeholder=\\\"Saving changes...\\\" disabled />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <InputGroupText>Saving...</InputGroupText>\\n          <Spinner />\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup data-disabled>\\n        <InputGroupInput placeholder=\\\"Refreshing data...\\\" disabled />\\n        <InputGroupAddon>\\n          <LoaderIcon className=\\\"animate-spin\\\" />\\n        </InputGroupAddon>\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <InputGroupText className=\\\"text-muted-foreground\\\">\\n            Please wait...\\n          </InputGroupText>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-text\",\n  \"registryDependencies\": [\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-text.tsx\",\n      \"content\": \"import {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nexport default function InputGroupTextExample() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-6\\\">\\n      <InputGroup>\\n        <InputGroupAddon>\\n          <InputGroupText>$</InputGroupText>\\n        </InputGroupAddon>\\n        <InputGroupInput placeholder=\\\"0.00\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <InputGroupText>USD</InputGroupText>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupAddon>\\n          <InputGroupText>https://</InputGroupText>\\n        </InputGroupAddon>\\n        <InputGroupInput placeholder=\\\"example.com\\\" className=\\\"pl-0.5!\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <InputGroupText>.com</InputGroupText>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Enter your username\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <InputGroupText>@company.com</InputGroupText>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupTextarea placeholder=\\\"Enter your message\\\" />\\n        <InputGroupAddon align=\\\"block-end\\\">\\n          <InputGroupText className=\\\"text-xs text-muted-foreground\\\">\\n            120 characters left\\n          </InputGroupText>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-textarea\",\n  \"registryDependencies\": [\n    \"input-group\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-textarea.tsx\",\n      \"content\": \"import {\\n  IconBrandJavascript,\\n  IconCopy,\\n  IconCornerDownLeft,\\n  IconRefresh,\\n} from \\\"@tabler/icons-react\\\"\\n\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\n\\nexport default function InputGroupTextareaExample() {\\n  return (\\n    <div className=\\\"grid w-full max-w-md gap-4\\\">\\n      <InputGroup>\\n        <InputGroupTextarea\\n          id=\\\"textarea-code-32\\\"\\n          placeholder=\\\"console.log('Hello, world!');\\\"\\n          className=\\\"min-h-[200px]\\\"\\n        />\\n        <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n          <InputGroupText>Line 1, Column 1</InputGroupText>\\n          <InputGroupButton size=\\\"sm\\\" className=\\\"ml-auto\\\" variant=\\\"default\\\">\\n            Run <IconCornerDownLeft />\\n          </InputGroupButton>\\n        </InputGroupAddon>\\n        <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n          <InputGroupText className=\\\"font-mono font-medium\\\">\\n            <IconBrandJavascript />\\n            script.js\\n          </InputGroupText>\\n          <InputGroupButton className=\\\"ml-auto\\\" size=\\\"icon-xs\\\">\\n            <IconRefresh />\\n          </InputGroupButton>\\n          <InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\">\\n            <IconCopy />\\n          </InputGroupButton>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group-tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-tooltip\",\n  \"registryDependencies\": [\n    \"input-group\",\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-group-tooltip.tsx\",\n      \"content\": \"import { HelpCircle, InfoIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tooltip\\\"\\n\\nexport default function InputGroupTooltip() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm gap-4\\\">\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Enter password\\\" type=\\\"password\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <InputGroupButton\\n                variant=\\\"ghost\\\"\\n                aria-label=\\\"Info\\\"\\n                size=\\\"icon-xs\\\"\\n              >\\n                <InfoIcon />\\n              </InputGroupButton>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>Password must be at least 8 characters</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Your email address\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <InputGroupButton\\n                variant=\\\"ghost\\\"\\n                aria-label=\\\"Help\\\"\\n                size=\\\"icon-xs\\\"\\n              >\\n                <HelpCircle />\\n              </InputGroupButton>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>We&apos;ll use this to send you notifications</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Enter API key\\\" />\\n        <Tooltip>\\n          <TooltipTrigger asChild>\\n            <InputGroupAddon>\\n              <InputGroupButton\\n                variant=\\\"ghost\\\"\\n                aria-label=\\\"Help\\\"\\n                size=\\\"icon-xs\\\"\\n              >\\n                <HelpCircle />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </TooltipTrigger>\\n          <TooltipContent side=\\\"left\\\">\\n            <p>Click for help with API keys</p>\\n          </TooltipContent>\\n        </Tooltip>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex w-full items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none dark:bg-input/30\\\",\\n        \\\"h-9 min-w-0 has-[>textarea]:h-auto\\\",\\n\\n        // Variants based on alignment.\\n        \\\"has-[>[data-align=inline-start]]:[&>input]:pl-2\\\",\\n        \\\"has-[>[data-align=inline-end]]:[&>input]:pr-2\\\",\\n        \\\"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\\\",\\n        \\\"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\\\",\\n\\n        // Focus state.\\n        \\\"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50\\\",\\n\\n        // Error state.\\n        \\\"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\\\",\\n\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants>) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-otp-controlled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-controlled\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-otp-controlled.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport default function InputOTPControlled() {\\n  const [value, setValue] = React.useState(\\\"\\\")\\n\\n  return (\\n    <div className=\\\"space-y-2\\\">\\n      <InputOTP\\n        maxLength={6}\\n        value={value}\\n        onChange={(value) => setValue(value)}\\n      >\\n        <InputOTPGroup>\\n          <InputOTPSlot index={0} />\\n          <InputOTPSlot index={1} />\\n          <InputOTPSlot index={2} />\\n          <InputOTPSlot index={3} />\\n          <InputOTPSlot index={4} />\\n          <InputOTPSlot index={5} />\\n        </InputOTPGroup>\\n      </InputOTP>\\n      <div className=\\\"text-center text-sm\\\">\\n        {value === \\\"\\\" ? (\\n          <>Enter your one-time password.</>\\n        ) : (\\n          <>You entered: {value}</>\\n        )}\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-otp-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-demo\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-otp-demo.tsx\",\n      \"content\": \"import {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport default function InputOTPDemo() {\\n  return (\\n    <InputOTP maxLength={6}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n        <InputOTPSlot index={2} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={3} />\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-otp-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-form\",\n  \"registryDependencies\": [\n    \"input-otp\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-otp-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nconst FormSchema = z.object({\\n  pin: z.string().min(6, {\\n    message: \\\"Your one-time password must be 6 characters.\\\",\\n  }),\\n})\\n\\nexport default function InputOTPForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      pin: \\\"\\\",\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"pin\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>One-Time Password</FormLabel>\\n              <FormControl>\\n                <InputOTP maxLength={6} {...field}>\\n                  <InputOTPGroup>\\n                    <InputOTPSlot index={0} />\\n                    <InputOTPSlot index={1} />\\n                    <InputOTPSlot index={2} />\\n                    <InputOTPSlot index={3} />\\n                    <InputOTPSlot index={4} />\\n                    <InputOTPSlot index={5} />\\n                  </InputOTPGroup>\\n                </InputOTP>\\n              </FormControl>\\n              <FormDescription>\\n                Please enter the one-time password sent to your phone.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-otp-pattern.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-pattern\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-otp-pattern.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport default function InputOTPPattern() {\\n  return (\\n    <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n        <InputOTPSlot index={2} />\\n        <InputOTPSlot index={3} />\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-otp-separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-separator\",\n  \"registryDependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-otp-separator.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\n\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport default function InputOTPWithSeparator() {\\n  return (\\n    <InputOTP maxLength={6}>\\n      <InputOTPGroup>\\n        <InputOTPSlot index={0} />\\n        <InputOTPSlot index={1} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={2} />\\n        <InputOTPSlot index={3} />\\n      </InputOTPGroup>\\n      <InputOTPSeparator />\\n      <InputOTPGroup>\\n        <InputOTPSlot index={4} />\\n        <InputOTPSlot index={5} />\\n      </InputOTPGroup>\\n    </InputOTP>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\nimport { MinusIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"flex items-center gap-2 has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\\"flex items-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div data-slot=\\\"input-otp-separator\\\" role=\\\"separator\\\" {...props}>\\n      <MinusIcon />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-with-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-button\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-with-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport default function InputWithButton() {\\n  return (\\n    <div className=\\\"flex w-full max-w-sm items-center gap-2\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n      <Button type=\\\"submit\\\" variant=\\\"outline\\\">\\n        Subscribe\\n      </Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-with-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-label\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-with-label.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function InputWithLabel() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-3\\\">\\n      <Label htmlFor=\\\"email\\\">Email</Label>\\n      <Input type=\\\"email\\\" id=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-with-text\",\n  \"registryDependencies\": [\n    \"input\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/input-with-text.tsx\",\n      \"content\": \"import { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function InputWithText() {\\n  return (\\n    <div className=\\\"grid w-full max-w-sm items-center gap-3\\\">\\n      <Label htmlFor=\\\"email-2\\\">Email</Label>\\n      <Input type=\\\"email\\\" id=\\\"email-2\\\" placeholder=\\\"Email\\\" />\\n      <p className=\\\"text-sm text-muted-foreground\\\">Enter your email address.</p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <input\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30\\\",\\n        \\\"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\\\",\\n        \\\"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-avatar\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-avatar.tsx\",\n      \"content\": \"import { Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nexport default function ItemAvatar() {\\n  return (\\n    <div className=\\\"flex w-full max-w-lg flex-col gap-6\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia>\\n          <Avatar className=\\\"size-10\\\">\\n            <AvatarImage src=\\\"https://github.com/evilrabbit.png\\\" />\\n            <AvatarFallback>ER</AvatarFallback>\\n          </Avatar>\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Evil Rabbit</ItemTitle>\\n          <ItemDescription>Last seen 5 months ago</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button\\n            size=\\\"icon-sm\\\"\\n            variant=\\\"outline\\\"\\n            className=\\\"rounded-full\\\"\\n            aria-label=\\\"Invite\\\"\\n          >\\n            <Plus />\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia>\\n          <div className=\\\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\\\">\\n            <Avatar className=\\\"hidden sm:flex\\\">\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar className=\\\"hidden sm:flex\\\">\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n          </div>\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>No Team Members</ItemTitle>\\n          <ItemDescription>\\n            Invite your team to collaborate on this project.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Invite\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-demo\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-demo.tsx\",\n      \"content\": \"import { BadgeCheckIcon, ChevronRightIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nexport default function ItemDemo() {\\n  return (\\n    <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Basic Item</ItemTitle>\\n          <ItemDescription>\\n            A simple item with title and description.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\" asChild>\\n        <a href=\\\"#\\\">\\n          <ItemMedia>\\n            <BadgeCheckIcon className=\\\"size-5\\\" />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Your profile has been verified.</ItemTitle>\\n          </ItemContent>\\n          <ItemActions>\\n            <ChevronRightIcon className=\\\"size-4\\\" />\\n          </ItemActions>\\n        </a>\\n      </Item>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-dropdown.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-dropdown\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-dropdown.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nconst people = [\\n  {\\n    username: \\\"shadcn\\\",\\n    avatar: \\\"https://github.com/shadcn.png\\\",\\n    email: \\\"shadcn@vercel.com\\\",\\n  },\\n  {\\n    username: \\\"maxleiter\\\",\\n    avatar: \\\"https://github.com/maxleiter.png\\\",\\n    email: \\\"maxleiter@vercel.com\\\",\\n  },\\n  {\\n    username: \\\"evilrabbit\\\",\\n    avatar: \\\"https://github.com/evilrabbit.png\\\",\\n    email: \\\"evilrabbit@vercel.com\\\",\\n  },\\n]\\n\\nexport default function ItemDropdown() {\\n  return (\\n    <div className=\\\"flex min-h-64 w-full max-w-md flex-col items-center gap-6\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-fit\\\">\\n            Select <ChevronDownIcon />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-72 [--radius:0.65rem]\\\" align=\\\"end\\\">\\n          {people.map((person) => (\\n            <DropdownMenuItem key={person.username} className=\\\"p-0\\\">\\n              <Item size=\\\"sm\\\" className=\\\"w-full p-2\\\">\\n                <ItemMedia>\\n                  <Avatar className=\\\"size-8\\\">\\n                    <AvatarImage src={person.avatar} className=\\\"grayscale\\\" />\\n                    <AvatarFallback>{person.username.charAt(0)}</AvatarFallback>\\n                  </Avatar>\\n                </ItemMedia>\\n                <ItemContent className=\\\"gap-0.5\\\">\\n                  <ItemTitle>{person.username}</ItemTitle>\\n                  <ItemDescription>{person.email}</ItemDescription>\\n                </ItemContent>\\n              </Item>\\n            </DropdownMenuItem>\\n          ))}\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-group\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-group.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { PlusIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nconst people = [\\n  {\\n    username: \\\"shadcn\\\",\\n    avatar: \\\"https://github.com/shadcn.png\\\",\\n    email: \\\"shadcn@vercel.com\\\",\\n  },\\n  {\\n    username: \\\"maxleiter\\\",\\n    avatar: \\\"https://github.com/maxleiter.png\\\",\\n    email: \\\"maxleiter@vercel.com\\\",\\n  },\\n  {\\n    username: \\\"evilrabbit\\\",\\n    avatar: \\\"https://github.com/evilrabbit.png\\\",\\n    email: \\\"evilrabbit@vercel.com\\\",\\n  },\\n]\\n\\nexport default function ItemGroupExample() {\\n  return (\\n    <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n      <ItemGroup>\\n        {people.map((person, index) => (\\n          <React.Fragment key={person.username}>\\n            <Item>\\n              <ItemMedia>\\n                <Avatar>\\n                  <AvatarImage src={person.avatar} className=\\\"grayscale\\\" />\\n                  <AvatarFallback>{person.username.charAt(0)}</AvatarFallback>\\n                </Avatar>\\n              </ItemMedia>\\n              <ItemContent className=\\\"gap-1\\\">\\n                <ItemTitle>{person.username}</ItemTitle>\\n                <ItemDescription>{person.email}</ItemDescription>\\n              </ItemContent>\\n              <ItemActions>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\">\\n                  <PlusIcon />\\n                </Button>\\n              </ItemActions>\\n            </Item>\\n            {index !== people.length - 1 && <ItemSeparator />}\\n          </React.Fragment>\\n        ))}\\n      </ItemGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-header.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-header\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-header.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nconst models = [\\n  {\\n    name: \\\"v0-1.5-sm\\\",\\n    description: \\\"Everyday tasks and UI generation.\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1650804068570-7fb2e3dbf888?q=80&w=640&auto=format&fit=crop\\\",\\n    credit: \\\"Valeria Reverdo on Unsplash\\\",\\n  },\\n  {\\n    name: \\\"v0-1.5-lg\\\",\\n    description: \\\"Advanced thinking or reasoning.\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1610280777472-54133d004c8c?q=80&w=640&auto=format&fit=crop\\\",\\n    credit: \\\"Michael Oeser on Unsplash\\\",\\n  },\\n  {\\n    name: \\\"v0-2.0-mini\\\",\\n    description: \\\"Open Source model for everyone.\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1602146057681-08560aee8cde?q=80&w=640&auto=format&fit=crop\\\",\\n    credit: \\\"Cherry Laithang on Unsplash\\\",\\n  },\\n]\\n\\nexport default function ItemHeaderDemo() {\\n  return (\\n    <div className=\\\"flex w-full max-w-xl flex-col gap-6\\\">\\n      <ItemGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        {models.map((model) => (\\n          <Item key={model.name} variant=\\\"outline\\\">\\n            <ItemHeader>\\n              <Image\\n                src={model.image}\\n                alt={model.name}\\n                width={128}\\n                height={128}\\n                className=\\\"aspect-square w-full rounded-sm object-cover\\\"\\n              />\\n            </ItemHeader>\\n            <ItemContent>\\n              <ItemTitle>{model.name}</ItemTitle>\\n              <ItemDescription>{model.description}</ItemDescription>\\n            </ItemContent>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-icon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-icon\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-icon.tsx\",\n      \"content\": \"import { ShieldAlertIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nexport default function ItemIcon() {\\n  return (\\n    <div className=\\\"flex w-full max-w-lg flex-col gap-6\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <ShieldAlertIcon />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Security Alert</ItemTitle>\\n          <ItemDescription>\\n            New login detected from unknown device.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Review\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-image.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-image\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-image.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nconst music = [\\n  {\\n    title: \\\"Midnight City Lights\\\",\\n    artist: \\\"Neon Dreams\\\",\\n    album: \\\"Electric Nights\\\",\\n    duration: \\\"3:45\\\",\\n  },\\n  {\\n    title: \\\"Coffee Shop Conversations\\\",\\n    artist: \\\"The Morning Brew\\\",\\n    album: \\\"Urban Stories\\\",\\n    duration: \\\"4:05\\\",\\n  },\\n  {\\n    title: \\\"Digital Rain\\\",\\n    artist: \\\"Cyber Symphony\\\",\\n    album: \\\"Binary Beats\\\",\\n    duration: \\\"3:30\\\",\\n  },\\n]\\n\\nexport default function ItemImage() {\\n  return (\\n    <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n      <ItemGroup className=\\\"gap-4\\\">\\n        {music.map((song) => (\\n          <Item key={song.title} variant=\\\"outline\\\" asChild role=\\\"listitem\\\">\\n            <a href=\\\"#\\\">\\n              <ItemMedia variant=\\\"image\\\">\\n                <Image\\n                  src={`https://avatar.vercel.sh/${song.title}`}\\n                  alt={song.title}\\n                  width={32}\\n                  height={32}\\n                  className=\\\"object-cover grayscale\\\"\\n                />\\n              </ItemMedia>\\n              <ItemContent>\\n                <ItemTitle className=\\\"line-clamp-1\\\">\\n                  {song.title} -{\\\" \\\"}\\n                  <span className=\\\"text-muted-foreground\\\">{song.album}</span>\\n                </ItemTitle>\\n                <ItemDescription>{song.artist}</ItemDescription>\\n              </ItemContent>\\n              <ItemContent className=\\\"flex-none text-center\\\">\\n                <ItemDescription>{song.duration}</ItemDescription>\\n              </ItemContent>\\n            </a>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-link.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-link\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-link.tsx\",\n      \"content\": \"import { ChevronRightIcon, ExternalLinkIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nexport default function ItemLink() {\\n  return (\\n    <div className=\\\"flex w-full max-w-md flex-col gap-4\\\">\\n      <Item asChild>\\n        <a href=\\\"#\\\">\\n          <ItemContent>\\n            <ItemTitle>Visit our documentation</ItemTitle>\\n            <ItemDescription>\\n              Learn how to get started with our components.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <ChevronRightIcon className=\\\"size-4\\\" />\\n          </ItemActions>\\n        </a>\\n      </Item>\\n      <Item variant=\\\"outline\\\" asChild>\\n        <a href=\\\"#\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">\\n          <ItemContent>\\n            <ItemTitle>External resource</ItemTitle>\\n            <ItemDescription>\\n              Opens in a new tab with security attributes.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <ExternalLinkIcon className=\\\"size-4\\\" />\\n          </ItemActions>\\n        </a>\\n      </Item>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-select\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Check, FileText, Folder, Image, Video } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\n\\nconst files = [\\n  {\\n    id: \\\"1\\\",\\n    type: \\\"document\\\",\\n    name: \\\"Project Proposal.pdf\\\",\\n    size: \\\"2.4 MB\\\",\\n    icon: FileText,\\n  },\\n  {\\n    id: \\\"2\\\",\\n    type: \\\"image\\\",\\n    name: \\\"Design Mockups.png\\\",\\n    size: \\\"1.8 MB\\\",\\n    icon: Image,\\n  },\\n  {\\n    id: \\\"3\\\",\\n    type: \\\"video\\\",\\n    name: \\\"Product Demo.mp4\\\",\\n    size: \\\"25.6 MB\\\",\\n    icon: Video,\\n  },\\n  {\\n    id: \\\"4\\\",\\n    type: \\\"folder\\\",\\n    name: \\\"Marketing Assets\\\",\\n    size: \\\"15 files\\\",\\n    icon: Folder,\\n  },\\n]\\n\\nconst themes = [\\n  { id: \\\"light\\\", name: \\\"Light\\\", description: \\\"Clean and bright interface\\\" },\\n  { id: \\\"dark\\\", name: \\\"Dark\\\", description: \\\"Easy on the eyes\\\" },\\n  { id: \\\"system\\\", name: \\\"System\\\", description: \\\"Matches your device preference\\\" },\\n]\\n\\nexport default function ItemSelect() {\\n  const [selectedFiles, setSelectedFiles] = React.useState<string[]>([])\\n  const [selectedTheme, setSelectedTheme] = React.useState(\\\"system\\\")\\n\\n  const toggleFileSelection = (fileId: string) => {\\n    setSelectedFiles(prev =>\\n      prev.includes(fileId)\\n        ? prev.filter(id => id !== fileId)\\n        : [...prev, fileId]\\n    )\\n  }\\n\\n  const selectAllFiles = () => {\\n    setSelectedFiles(files.map(file => file.id))\\n  }\\n\\n  const clearSelection = () => {\\n    setSelectedFiles([])\\n  }\\n\\n  return (\\n    <div className=\\\"grid gap-6 lg:grid-cols-2\\\">\\n      {/* Multi-Select with Checkboxes */}\\n      <div className=\\\"space-y-4\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <h3 className=\\\"text-sm font-medium\\\">Select Files</h3>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button size=\\\"sm\\\" variant=\\\"outline\\\" onClick={selectAllFiles}>\\n              Select All\\n            </Button>\\n            <Button size=\\\"sm\\\" variant=\\\"ghost\\\" onClick={clearSelection}>\\n              Clear\\n            </Button>\\n          </div>\\n        </div>\\n\\n        <ItemGroup variant=\\\"outline\\\">\\n          {files.map((file, index) => (\\n            <React.Fragment key={file.id}>\\n              <Item\\n                className={`cursor-pointer transition-colors ${\\n                  selectedFiles.includes(file.id)\\n                    ? \\\"bg-muted/50\\\"\\n                    : \\\"hover:bg-muted/30\\\"\\n                }`}\\n                onClick={() => toggleFileSelection(file.id)}\\n              >\\n                <ItemActions className=\\\"order-first\\\">\\n                  <Checkbox\\n                    checked={selectedFiles.includes(file.id)}\\n                    onChange={() => toggleFileSelection(file.id)}\\n                  />\\n                </ItemActions>\\n                <ItemMedia variant=\\\"icon\\\">\\n                  <file.icon />\\n                </ItemMedia>\\n                <ItemContent>\\n                  <ItemTitle>{file.name}</ItemTitle>\\n                  <ItemDescription>{file.size}</ItemDescription>\\n                </ItemContent>\\n                {selectedFiles.includes(file.id) && (\\n                  <ItemActions>\\n                    <Check className=\\\"size-4 text-primary\\\" />\\n                  </ItemActions>\\n                )}\\n              </Item>\\n              {index !== files.length - 1 && <ItemSeparator />}\\n            </React.Fragment>\\n          ))}\\n        </ItemGroup>\\n\\n        {selectedFiles.length > 0 && (\\n          <div className=\\\"flex items-center gap-2 text-sm text-muted-foreground\\\">\\n            <span>{selectedFiles.length} files selected</span>\\n            <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n              Download Selected\\n            </Button>\\n          </div>\\n        )}\\n      </div>\\n\\n      {/* Single Select with Radio */}\\n      <div className=\\\"space-y-4\\\">\\n        <h3 className=\\\"text-sm font-medium\\\">Choose Theme</h3>\\n\\n        <RadioGroup value={selectedTheme} onValueChange={setSelectedTheme}>\\n          <ItemGroup variant=\\\"outline\\\">\\n            {themes.map((theme, index) => (\\n              <React.Fragment key={theme.id}>\\n                <Item\\n                  className={`cursor-pointer transition-colors ${\\n                    selectedTheme === theme.id\\n                      ? \\\"bg-primary/5 border-primary/20\\\"\\n                      : \\\"hover:bg-muted/30\\\"\\n                  }`}\\n                  onClick={() => setSelectedTheme(theme.id)}\\n                >\\n                  <ItemActions className=\\\"order-first\\\">\\n                    <RadioGroupItem value={theme.id} />\\n                  </ItemActions>\\n                  <ItemContent>\\n                    <ItemTitle>{theme.name}</ItemTitle>\\n                    <ItemDescription>{theme.description}</ItemDescription>\\n                  </ItemContent>\\n                  {selectedTheme === theme.id && (\\n                    <ItemActions>\\n                      <Check className=\\\"size-4 text-primary\\\" />\\n                    </ItemActions>\\n                  )}\\n                </Item>\\n                {index !== themes.length - 1 && <ItemSeparator />}\\n              </React.Fragment>\\n            ))}\\n          </ItemGroup>\\n        </RadioGroup>\\n\\n        <div className=\\\"flex justify-end\\\">\\n          <Button>Apply Theme</Button>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-size.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-size\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-size.tsx\",\n      \"content\": \"import { BadgeCheckIcon, ChevronRightIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nexport default function ItemSizeDemo() {\\n  return (\\n    <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Basic Item</ItemTitle>\\n          <ItemDescription>\\n            A simple item with title and description.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\" asChild>\\n        <a href=\\\"#\\\">\\n          <ItemMedia>\\n            <BadgeCheckIcon className=\\\"size-5\\\" />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Your profile has been verified.</ItemTitle>\\n          </ItemContent>\\n          <ItemActions>\\n            <ChevronRightIcon className=\\\"size-4\\\" />\\n          </ItemActions>\\n        </a>\\n      </Item>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item-variant.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-variant\",\n  \"registryDependencies\": [\n    \"item\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/item-variant.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\n\\nexport default function ItemVariant() {\\n  return (\\n    <div className=\\\"flex flex-col gap-6\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Default Variant</ItemTitle>\\n          <ItemDescription>\\n            Standard styling with subtle background and borders.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Open\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Outline Variant</ItemTitle>\\n          <ItemDescription>\\n            Outlined style with clear borders and transparent background.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Open\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Muted Variant</ItemTitle>\\n          <ItemDescription>\\n            Subdued appearance with muted colors for secondary content.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Open\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\\"group/item-group flex flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-accent/50\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-4 p-4\\\",\\n        sm: \\\"gap-2.5 px-4 py-3\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> &\\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n  return (\\n    <Comp\\n      data-slot=\\\"item\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(itemVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm leading-snug font-medium\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/kbd-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-button\",\n  \"registryDependencies\": [\n    \"kbd\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/kbd-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/new-york-v4/ui/kbd\\\"\\n\\nexport default function KbdButton() {\\n  return (\\n    <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n      <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"pr-2\\\">\\n        Accept <Kbd>⏎</Kbd>\\n      </Button>\\n      <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"pr-2\\\">\\n        Cancel <Kbd>Esc</Kbd>\\n      </Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/kbd-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-demo\",\n  \"registryDependencies\": [\n    \"kbd\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/kbd-demo.tsx\",\n      \"content\": \"import { Kbd, KbdGroup } from \\\"@/registry/new-york-v4/ui/kbd\\\"\\n\\nexport default function KbdDemo() {\\n  return (\\n    <div className=\\\"flex flex-col items-center gap-4\\\">\\n      <KbdGroup>\\n        <Kbd>⌘</Kbd>\\n        <Kbd>⇧</Kbd>\\n        <Kbd>⌥</Kbd>\\n        <Kbd>⌃</Kbd>\\n      </KbdGroup>\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <span>+</span>\\n        <Kbd>B</Kbd>\\n      </KbdGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/kbd-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-group\",\n  \"registryDependencies\": [\n    \"kbd\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/kbd-group.tsx\",\n      \"content\": \"import { Kbd, KbdGroup } from \\\"@/registry/new-york-v4/ui/kbd\\\"\\n\\nexport default function KbdGroupExample() {\\n  return (\\n    <div className=\\\"flex flex-col items-center gap-4\\\">\\n      <p className=\\\"text-sm text-muted-foreground\\\">\\n        Use{\\\" \\\"}\\n        <KbdGroup>\\n          <Kbd>Ctrl + B</Kbd>\\n          <Kbd>Ctrl + K</Kbd>\\n        </KbdGroup>{\\\" \\\"}\\n        to open the command palette\\n      </p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/kbd-input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-input-group\",\n  \"registryDependencies\": [\n    \"kbd\",\n    \"input\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/kbd-input-group.tsx\",\n      \"content\": \"import { SearchIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/new-york-v4/ui/kbd\\\"\\n\\nexport default function KbdInputGroup() {\\n  return (\\n    <div className=\\\"flex w-full max-w-xs flex-col gap-6\\\">\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Search...\\\" />\\n        <InputGroupAddon>\\n          <SearchIcon />\\n        </InputGroupAddon>\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Kbd>⌘</Kbd>\\n          <Kbd>K</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/kbd-tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-tooltip\",\n  \"registryDependencies\": [\n    \"kbd\",\n    \"tooltip\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/kbd-tooltip.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/new-york-v4/ui/button-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/new-york-v4/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tooltip\\\"\\n\\nexport default function KbdTooltip() {\\n  return (\\n    <div className=\\\"flex flex-wrap gap-4\\\">\\n      <ButtonGroup>\\n        <Tooltip>\\n          <TooltipTrigger asChild>\\n            <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n              Save\\n            </Button>\\n          </TooltipTrigger>\\n          <TooltipContent>\\n            Save Changes <Kbd>S</Kbd>\\n          </TooltipContent>\\n        </Tooltip>\\n        <Tooltip>\\n          <TooltipTrigger asChild>\\n            <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n              Print\\n            </Button>\\n          </TooltipTrigger>\\n          <TooltipContent>\\n            Print Document{\\\" \\\"}\\n            <KbdGroup>\\n              <Kbd>Ctrl</Kbd>\\n              <Kbd>P</Kbd>\\n            </KbdGroup>\\n          </TooltipContent>\\n        </Tooltip>\\n      </ButtonGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none\\\",\\n        \\\"[&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/label-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-demo\",\n  \"registryDependencies\": [\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/label-demo.tsx\",\n      \"content\": \"import { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\n\\nexport default function LabelDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"flex items-center space-x-2\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <Label htmlFor=\\\"terms\\\">Accept terms and conditions</Label>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label as LabelPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Label({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\\n  return (\\n    <LabelPrimitive.Root\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/new-york-v4/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-02/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { LoginForm } from \\\"@/registry/new-york-v4/blocks/login-02/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <GalleryVerticalEnd className=\\\"size-4\\\" />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-03/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { LoginForm } from \\\"@/registry/new-york-v4/blocks/login-03/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <GalleryVerticalEnd className=\\\"size-4\\\" />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/new-york-v4/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/new-york-v4/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <GalleryVerticalEnd className=\\\"size-6\\\" />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/menubar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-demo\",\n  \"registryDependencies\": [\n    \"menubar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/menubar-demo.tsx\",\n      \"content\": \"import {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarItem,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/menubar\\\"\\n\\nexport default function MenubarDemo() {\\n  return (\\n    <Menubar>\\n      <MenubarMenu>\\n        <MenubarTrigger>File</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled>New Incognito Window</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Email link</MenubarItem>\\n              <MenubarItem>Messages</MenubarItem>\\n              <MenubarItem>Notes</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>\\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n          </MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Edit</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarItem>\\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem>\\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarSub>\\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\\n            <MenubarSubContent>\\n              <MenubarItem>Search the web</MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem>Find...</MenubarItem>\\n              <MenubarItem>Find Next</MenubarItem>\\n              <MenubarItem>Find Previous</MenubarItem>\\n            </MenubarSubContent>\\n          </MenubarSub>\\n          <MenubarSeparator />\\n          <MenubarItem>Cut</MenubarItem>\\n          <MenubarItem>Copy</MenubarItem>\\n          <MenubarItem>Paste</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>View</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\\n          <MenubarCheckboxItem checked>\\n            Always Show Full URLs\\n          </MenubarCheckboxItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>\\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarItem disabled inset>\\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n          </MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Toggle Fullscreen</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Hide Sidebar</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n      <MenubarMenu>\\n        <MenubarTrigger>Profiles</MenubarTrigger>\\n        <MenubarContent>\\n          <MenubarRadioGroup value=\\\"benoit\\\">\\n            <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n            <MenubarRadioItem value=\\\"Luis\\\">Luis</MenubarRadioItem>\\n          </MenubarRadioGroup>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Edit...</MenubarItem>\\n          <MenubarSeparator />\\n          <MenubarItem inset>Add Profile...</MenubarItem>\\n        </MenubarContent>\\n      </MenubarMenu>\\n    </Menubar>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Menubar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\\n  return (\\n    <MenubarPrimitive.Root\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\n        \\\"flex h-9 items-center gap-1 rounded-md border bg-background p-1 shadow-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\\n  return <MenubarPrimitive.Menu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\\n  return <MenubarPrimitive.Group data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\\n  return <MenubarPrimitive.Portal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\\n  return (\\n    <MenubarPrimitive.RadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n  )\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\\n  return (\\n    <MenubarPrimitive.Trigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\\n  return (\\n    <MenubarPortal>\\n      <MenubarPrimitive.Content\\n        data-slot=\\\"menubar-content\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </MenubarPortal>\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenubarPrimitive.Item\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\\n  return (\\n    <MenubarPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <CheckIcon className=\\\"size-4\\\" />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\\n  return (\\n    <MenubarPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <CircleIcon className=\\\"size-2 fill-current\\\" />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.Label\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\\n  return (\\n    <MenubarPrimitive.Separator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\\n  return <MenubarPrimitive.Sub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.SubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ChevronRightIcon className=\\\"ml-auto h-4 w-4\\\" />\\n    </MenubarPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\\n  return (\\n    <MenubarPrimitive.SubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/mode-toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"mode-toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/mode-toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Moon, Sun } from \\\"lucide-react\\\"\\nimport { useTheme } from \\\"next-themes\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\n\\nexport default function ModeToggle() {\\n  const { setTheme } = useTheme()\\n\\n  return (\\n    <DropdownMenu>\\n      <DropdownMenuTrigger asChild>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n          <Sun className=\\\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\\\" />\\n          <Moon className=\\\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\\\" />\\n          <span className=\\\"sr-only\\\">Toggle theme</span>\\n        </Button>\\n      </DropdownMenuTrigger>\\n      <DropdownMenuContent align=\\\"end\\\">\\n        <DropdownMenuItem onClick={() => setTheme(\\\"light\\\")}>\\n          Light\\n        </DropdownMenuItem>\\n        <DropdownMenuItem onClick={() => setTheme(\\\"dark\\\")}>\\n          Dark\\n        </DropdownMenuItem>\\n        <DropdownMenuItem onClick={() => setTheme(\\\"system\\\")}>\\n          System\\n        </DropdownMenuItem>\\n      </DropdownMenuContent>\\n    </DropdownMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/native-select-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-demo\",\n  \"registryDependencies\": [\n    \"native-select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/native-select-demo.tsx\",\n      \"content\": \"import {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/new-york-v4/ui/native-select\\\"\\n\\nexport default function NativeSelectDemo() {\\n  return (\\n    <NativeSelect>\\n      <NativeSelectOption value=\\\"\\\">Select status</NativeSelectOption>\\n      <NativeSelectOption value=\\\"todo\\\">Todo</NativeSelectOption>\\n      <NativeSelectOption value=\\\"in-progress\\\">In Progress</NativeSelectOption>\\n      <NativeSelectOption value=\\\"done\\\">Done</NativeSelectOption>\\n      <NativeSelectOption value=\\\"cancelled\\\">Cancelled</NativeSelectOption>\\n    </NativeSelect>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/native-select-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-disabled\",\n  \"registryDependencies\": [\n    \"native-select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/native-select-disabled.tsx\",\n      \"content\": \"import {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/new-york-v4/ui/native-select\\\"\\n\\nexport default function NativeSelectDisabled() {\\n  return (\\n    <NativeSelect disabled>\\n      <NativeSelectOption value=\\\"\\\">Select priority</NativeSelectOption>\\n      <NativeSelectOption value=\\\"low\\\">Low</NativeSelectOption>\\n      <NativeSelectOption value=\\\"medium\\\">Medium</NativeSelectOption>\\n      <NativeSelectOption value=\\\"high\\\">High</NativeSelectOption>\\n      <NativeSelectOption value=\\\"critical\\\">Critical</NativeSelectOption>\\n    </NativeSelect>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/native-select-groups.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-groups\",\n  \"registryDependencies\": [\n    \"native-select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/native-select-groups.tsx\",\n      \"content\": \"import {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/new-york-v4/ui/native-select\\\"\\n\\nexport default function NativeSelectGroups() {\\n  return (\\n    <NativeSelect>\\n      <NativeSelectOption value=\\\"\\\">Select department</NativeSelectOption>\\n      <NativeSelectOptGroup label=\\\"Engineering\\\">\\n        <NativeSelectOption value=\\\"frontend\\\">Frontend</NativeSelectOption>\\n        <NativeSelectOption value=\\\"backend\\\">Backend</NativeSelectOption>\\n        <NativeSelectOption value=\\\"devops\\\">DevOps</NativeSelectOption>\\n      </NativeSelectOptGroup>\\n      <NativeSelectOptGroup label=\\\"Sales\\\">\\n        <NativeSelectOption value=\\\"sales-rep\\\">Sales Rep</NativeSelectOption>\\n        <NativeSelectOption value=\\\"account-manager\\\">\\n          Account Manager\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"sales-director\\\">\\n          Sales Director\\n        </NativeSelectOption>\\n      </NativeSelectOptGroup>\\n      <NativeSelectOptGroup label=\\\"Operations\\\">\\n        <NativeSelectOption value=\\\"support\\\">\\n          Customer Support\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"product-manager\\\">\\n          Product Manager\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"ops-manager\\\">\\n          Operations Manager\\n        </NativeSelectOption>\\n      </NativeSelectOptGroup>\\n    </NativeSelect>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/native-select-invalid.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-invalid\",\n  \"registryDependencies\": [\n    \"native-select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/native-select-invalid.tsx\",\n      \"content\": \"import {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/new-york-v4/ui/native-select\\\"\\n\\nexport default function NativeSelectInvalid() {\\n  return (\\n    <NativeSelect aria-invalid=\\\"true\\\">\\n      <NativeSelectOption value=\\\"\\\">Select role</NativeSelectOption>\\n      <NativeSelectOption value=\\\"admin\\\">Admin</NativeSelectOption>\\n      <NativeSelectOption value=\\\"editor\\\">Editor</NativeSelectOption>\\n      <NativeSelectOption value=\\\"viewer\\\">Viewer</NativeSelectOption>\\n      <NativeSelectOption value=\\\"guest\\\">Guest</NativeSelectOption>\\n    </NativeSelect>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & { size?: \\\"sm\\\" | \\\"default\\\" }) {\\n  return (\\n    <div\\n      className=\\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\"\\n      data-slot=\\\"native-select-wrapper\\\"\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1 dark:bg-input/30 dark:hover:bg-input/50\\\",\\n          \\\"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\\\",\\n          \\\"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n      <ChevronDownIcon\\n        className=\\\"pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-muted-foreground opacity-50 select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/navigation-menu-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-demo\",\n  \"registryDependencies\": [\n    \"navigation-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/navigation-menu-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\nimport { CircleCheckIcon, CircleHelpIcon, CircleIcon } from \\\"lucide-react\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/new-york-v4/hooks/use-mobile\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/new-york-v4/ui/navigation-menu\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuDemo() {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <NavigationMenu viewport={isMobile}>\\n      <NavigationMenuList className=\\\"flex-wrap\\\">\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Home</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid gap-2 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\\\">\\n              <li className=\\\"row-span-3\\\">\\n                <NavigationMenuLink asChild>\\n                  <a\\n                    className=\\\"flex h-full w-full flex-col justify-end rounded-md bg-linear-to-b from-muted/50 to-muted p-4 no-underline outline-hidden transition-all duration-200 select-none focus:shadow-md md:p-6\\\"\\n                    href=\\\"/\\\"\\n                  >\\n                    <div className=\\\"mb-2 text-lg font-medium sm:mt-4\\\">\\n                      shadcn/ui\\n                    </div>\\n                    <p className=\\\"text-sm leading-tight text-muted-foreground\\\">\\n                      Beautifully designed components built with Tailwind CSS.\\n                    </p>\\n                  </a>\\n                </NavigationMenuLink>\\n              </li>\\n              <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                Re-usable components built using Radix UI and Tailwind CSS.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                How to install dependencies and structure your app.\\n              </ListItem>\\n              <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                Styles for headings, paragraphs, lists...etc\\n              </ListItem>\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid gap-2 sm:w-[400px] md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n              {components.map((component) => (\\n                <ListItem\\n                  key={component.title}\\n                  title={component.title}\\n                  href={component.href}\\n                >\\n                  {component.description}\\n                </ListItem>\\n              ))}\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem>\\n          <NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>\\n            <Link href=\\\"/docs\\\">Docs</Link>\\n          </NavigationMenuLink>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem className=\\\"hidden md:block\\\">\\n          <NavigationMenuTrigger>List</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid w-[300px] gap-4\\\">\\n              <li>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\">\\n                    <div className=\\\"font-medium\\\">Components</div>\\n                    <div className=\\\"text-muted-foreground\\\">\\n                      Browse all components in the library.\\n                    </div>\\n                  </Link>\\n                </NavigationMenuLink>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\">\\n                    <div className=\\\"font-medium\\\">Documentation</div>\\n                    <div className=\\\"text-muted-foreground\\\">\\n                      Learn how to use the library.\\n                    </div>\\n                  </Link>\\n                </NavigationMenuLink>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\">\\n                    <div className=\\\"font-medium\\\">Blog</div>\\n                    <div className=\\\"text-muted-foreground\\\">\\n                      Read our latest blog posts.\\n                    </div>\\n                  </Link>\\n                </NavigationMenuLink>\\n              </li>\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem className=\\\"hidden md:block\\\">\\n          <NavigationMenuTrigger>Simple</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid w-[200px] gap-4\\\">\\n              <li>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\">Components</Link>\\n                </NavigationMenuLink>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\">Documentation</Link>\\n                </NavigationMenuLink>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\">Blocks</Link>\\n                </NavigationMenuLink>\\n              </li>\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n        <NavigationMenuItem className=\\\"hidden md:block\\\">\\n          <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n          <NavigationMenuContent>\\n            <ul className=\\\"grid w-[200px] gap-4\\\">\\n              <li>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                    <CircleHelpIcon />\\n                    Backlog\\n                  </Link>\\n                </NavigationMenuLink>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                    <CircleIcon />\\n                    To Do\\n                  </Link>\\n                </NavigationMenuLink>\\n                <NavigationMenuLink asChild>\\n                  <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                    <CircleCheckIcon />\\n                    Done\\n                  </Link>\\n                </NavigationMenuLink>\\n              </li>\\n            </ul>\\n          </NavigationMenuContent>\\n        </NavigationMenuItem>\\n      </NavigationMenuList>\\n    </NavigationMenu>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink asChild>\\n        <Link href={href}>\\n          <div className=\\\"text-sm leading-none font-medium\\\">{title}</div>\\n          <p className=\\\"line-clamp-2 text-sm leading-snug text-muted-foreground\\\">\\n            {children}\\n          </p>\\n        </Link>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/navigation-menu.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\nimport { NavigationMenu as NavigationMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction NavigationMenu({\\n  className,\\n  children,\\n  viewport = true,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\\n  viewport?: boolean\\n}) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      data-viewport={viewport}\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {viewport && <NavigationMenuViewport />}\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-1\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <ChevronDownIcon\\n        className=\\\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"top-0 left-0 w-full p-2 pr-2.5 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out md:absolute md:w-auto\\\",\\n        \\\"group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuViewport({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"absolute top-full left-0 isolate z-50 flex justify-center\\\"\\n      )}\\n    >\\n      <NavigationMenuPrimitive.Viewport\\n        data-slot=\\\"navigation-menu-viewport\\\"\\n        className={cn(\\n          \\\"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground data-[active=true]:hover:bg-accent data-[active=true]:focus:bg-accent [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\\n  return (\\n    <NavigationMenuPrimitive.Indicator\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Indicator>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuList,\\n  NavigationMenuItem,\\n  NavigationMenuContent,\\n  NavigationMenuTrigger,\\n  NavigationMenuLink,\\n  NavigationMenuIndicator,\\n  NavigationMenuViewport,\\n  navigationMenuTriggerStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/otp-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"otp-01\",\n  \"description\": \"A simple OTP verification form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input-otp\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-01/page.tsx\",\n      \"content\": \"import { OTPForm } from \\\"@/registry/new-york-v4/blocks/otp-01/components/otp-form\\\"\\n\\nexport default function OTPPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-xs\\\">\\n        <OTPForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/otp/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-01/components/otp-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport function OTPForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Enter verification code</CardTitle>\\n        <CardDescription>We sent a 6-digit code to your email.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"otp\\\">Verification code</FieldLabel>\\n              <InputOTP maxLength={6} id=\\\"otp\\\" required>\\n                <InputOTPGroup className=\\\"gap-2.5 *:data-[slot=input-otp-slot]:rounded-md *:data-[slot=input-otp-slot]:border\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                Enter the 6-digit code sent to your email.\\n              </FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Button type=\\\"submit\\\">Verify</Button>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Didn&apos;t receive the code? <a href=\\\"#\\\">Resend</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"otp\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/otp-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"otp-02\",\n  \"description\": \"A two column OTP page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-otp\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-02/page.tsx\",\n      \"content\": \"import { OTPForm } from \\\"@/registry/new-york-v4/blocks/otp-02/components/otp-form\\\"\\n\\nexport default function OTPPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full\\\">\\n      <div className=\\\"flex w-full items-center justify-center p-6 lg:w-1/2\\\">\\n        <div className=\\\"w-full max-w-xs\\\">\\n          <OTPForm />\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden w-1/2 lg:block\\\">\\n        <img\\n          alt=\\\"Authentication\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover\\\"\\n          height={1080}\\n          src=\\\"/placeholder.svg\\\"\\n          width={1920}\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/otp/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-02/components/otp-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport function OTPForm({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n            <h1 className=\\\"text-2xl font-bold\\\">Enter verification code</h1>\\n            <p className=\\\"text-muted-foreground text-sm text-balance\\\">\\n              We sent a 6-digit code to your email.\\n            </p>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"otp\\\" className=\\\"sr-only\\\">\\n              Verification code\\n            </FieldLabel>\\n            <InputOTP maxLength={6} id=\\\"otp\\\" required>\\n              <InputOTPGroup className=\\\"gap-2 *:data-[slot=input-otp-slot]:rounded-md *:data-[slot=input-otp-slot]:border\\\">\\n                <InputOTPSlot index={0} />\\n                <InputOTPSlot index={1} />\\n              </InputOTPGroup>\\n              <InputOTPSeparator />\\n              <InputOTPGroup className=\\\"gap-2 *:data-[slot=input-otp-slot]:rounded-md *:data-[slot=input-otp-slot]:border\\\">\\n                <InputOTPSlot index={2} />\\n                <InputOTPSlot index={3} />\\n              </InputOTPGroup>\\n              <InputOTPSeparator />\\n              <InputOTPGroup className=\\\"gap-2 *:data-[slot=input-otp-slot]:rounded-md *:data-[slot=input-otp-slot]:border\\\">\\n                <InputOTPSlot index={4} />\\n                <InputOTPSlot index={5} />\\n              </InputOTPGroup>\\n            </InputOTP>\\n            <FieldDescription className=\\\"text-center\\\">\\n              Enter the 6-digit code sent to your email.\\n            </FieldDescription>\\n          </Field>\\n          <Button type=\\\"submit\\\">Verify</Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Didn&apos;t receive the code? <a href=\\\"#\\\">Resend</a>\\n          </FieldDescription>\\n        </FieldGroup>\\n      </form>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"otp\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/otp-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"otp-03\",\n  \"description\": \"An OTP page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input-otp\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-03/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { OTPForm } from \\\"@/registry/new-york-v4/blocks/otp-03/components/otp-form\\\"\\n\\nexport default function OTPPage() {\\n  return (\\n    <div className=\\\"bg-muted flex min-h-svh flex-col items-center justify-center gap-6 p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-xs flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"bg-primary text-primary-foreground flex size-6 items-center justify-center rounded-md\\\">\\n            <GalleryVerticalEnd className=\\\"size-4\\\" />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <OTPForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/otp/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-03/components/otp-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport function OTPForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader className=\\\"text-center\\\">\\n        <CardTitle className=\\\"text-xl\\\">Enter verification code</CardTitle>\\n        <CardDescription>We sent a 6-digit code to your email.</CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"otp\\\" className=\\\"sr-only\\\">\\n                Verification code\\n              </FieldLabel>\\n              <InputOTP maxLength={6} id=\\\"otp\\\" required>\\n                <InputOTPGroup className=\\\"gap-2.5 *:data-[slot=input-otp-slot]:rounded-md *:data-[slot=input-otp-slot]:border\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Enter the 6-digit code sent to your email.\\n              </FieldDescription>\\n            </Field>\\n            <Button type=\\\"submit\\\">Verify</Button>\\n            <FieldDescription className=\\\"text-center\\\">\\n              Didn&apos;t receive the code? <a href=\\\"#\\\">Resend</a>\\n            </FieldDescription>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"otp\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/otp-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"otp-04\",\n  \"description\": \"An OTP page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input-otp\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-04/page.tsx\",\n      \"content\": \"import { OTPForm } from \\\"@/registry/new-york-v4/blocks/otp-04/components/otp-form\\\"\\n\\nexport default function OTPPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-3xl\\\">\\n        <OTPForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/otp/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-04/components/otp-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport function OTPForm({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      className={cn(\\\"flex flex-col gap-6 md:min-h-[450px]\\\", className)}\\n      {...props}\\n    >\\n      <Card className=\\\"flex-1 overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid flex-1 p-0 md:grid-cols-2\\\">\\n          <form className=\\\"flex flex-col items-center justify-center p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <Field className=\\\"items-center text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Enter verification code</h1>\\n                <p className=\\\"text-muted-foreground text-sm text-balance\\\">\\n                  We sent a 6-digit code to your email\\n                </p>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"otp\\\" className=\\\"sr-only\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <InputOTP\\n                  maxLength={6}\\n                  id=\\\"otp\\\"\\n                  required\\n                  containerClassName=\\\"gap-4\\\"\\n                >\\n                  <InputOTPGroup>\\n                    <InputOTPSlot index={0} />\\n                    <InputOTPSlot index={1} />\\n                    <InputOTPSlot index={2} />\\n                  </InputOTPGroup>\\n                  <InputOTPSeparator />\\n                  <InputOTPGroup>\\n                    <InputOTPSlot index={3} />\\n                    <InputOTPSlot index={4} />\\n                    <InputOTPSlot index={5} />\\n                  </InputOTPGroup>\\n                </InputOTP>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Enter the 6-digit code sent to your email.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Verify</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Didn&apos;t receive the code? <a href=\\\"#\\\">Resend</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"bg-muted relative hidden md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"otp\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/otp-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"otp-05\",\n  \"description\": \"A simple OTP form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-otp\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-05/page.tsx\",\n      \"content\": \"import { OTPForm } from \\\"@/registry/new-york-v4/blocks/otp-05/components/otp-form\\\"\\n\\nexport default function OTPPage() {\\n  return (\\n    <div className=\\\"bg-background flex min-h-svh flex-col items-center justify-center gap-6 p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <OTPForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/otp/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/otp-05/components/otp-form.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/new-york-v4/ui/input-otp\\\"\\n\\nexport function OTPForm({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <GalleryVerticalEnd className=\\\"size-6\\\" />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Enter verification code</h1>\\n            <FieldDescription>\\n              We sent a 6-digit code to your email address\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"otp\\\" className=\\\"sr-only\\\">\\n              Verification code\\n            </FieldLabel>\\n            <InputOTP\\n              maxLength={6}\\n              id=\\\"otp\\\"\\n              required\\n              containerClassName=\\\"gap-4\\\"\\n            >\\n              <InputOTPGroup className=\\\"gap-2.5 *:data-[slot=input-otp-slot]:h-16 *:data-[slot=input-otp-slot]:w-12 *:data-[slot=input-otp-slot]:rounded-md *:data-[slot=input-otp-slot]:border *:data-[slot=input-otp-slot]:text-xl\\\">\\n                <InputOTPSlot index={0} />\\n                <InputOTPSlot index={1} />\\n                <InputOTPSlot index={2} />\\n              </InputOTPGroup>\\n              <InputOTPSeparator />\\n              <InputOTPGroup className=\\\"gap-2.5 *:data-[slot=input-otp-slot]:h-16 *:data-[slot=input-otp-slot]:w-12 *:data-[slot=input-otp-slot]:rounded-md *:data-[slot=input-otp-slot]:border *:data-[slot=input-otp-slot]:text-xl\\\">\\n                <InputOTPSlot index={3} />\\n                <InputOTPSlot index={4} />\\n                <InputOTPSlot index={5} />\\n              </InputOTPGroup>\\n            </InputOTP>\\n            <FieldDescription className=\\\"text-center\\\">\\n              Didn&apos;t receive the code? <a href=\\\"#\\\">Resend</a>\\n            </FieldDescription>\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Verify</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"otp\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/pagination-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-demo\",\n  \"registryDependencies\": [\n    \"pagination\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/pagination-demo.tsx\",\n      \"content\": \"import {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/new-york-v4/ui/pagination\\\"\\n\\nexport default function PaginationDemo() {\\n  return (\\n    <Pagination>\\n      <PaginationContent>\\n        <PaginationItem>\\n          <PaginationPrevious href=\\\"#\\\" />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\" isActive>\\n            2\\n          </PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationEllipsis />\\n        </PaginationItem>\\n        <PaginationItem>\\n          <PaginationNext href=\\\"#\\\" />\\n        </PaginationItem>\\n      </PaginationContent>\\n    </Pagination>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport {\\n  ChevronLeftIcon,\\n  ChevronRightIcon,\\n  MoreHorizontalIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { buttonVariants, type Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex flex-row items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <a\\n      aria-current={isActive ? \\\"page\\\" : undefined}\\n      data-slot=\\\"pagination-link\\\"\\n      data-active={isActive}\\n      className={cn(\\n        buttonVariants({\\n          variant: isActive ? \\\"outline\\\" : \\\"ghost\\\",\\n          size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink>) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"gap-1 px-2.5 sm:pl-2.5\\\", className)}\\n      {...props}\\n    >\\n      <ChevronLeftIcon />\\n      <span className=\\\"hidden sm:block\\\">Previous</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink>) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"gap-1 px-2.5 sm:pr-2.5\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">Next</span>\\n      <ChevronRightIcon />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\\"flex size-9 items-center justify-center\\\", className)}\\n      {...props}\\n    >\\n      <MoreHorizontalIcon className=\\\"size-4\\\" />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationLink,\\n  PaginationItem,\\n  PaginationPrevious,\\n  PaginationNext,\\n  PaginationEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/popover-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-demo\",\n  \"registryDependencies\": [\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/popover-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\n\\nexport default function PopoverDemo() {\\n  return (\\n    <Popover>\\n      <PopoverTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open popover</Button>\\n      </PopoverTrigger>\\n      <PopoverContent className=\\\"w-80\\\">\\n        <div className=\\\"grid gap-4\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <h4 className=\\\"leading-none font-medium\\\">Dimensions</h4>\\n            <p className=\\\"text-sm text-muted-foreground\\\">\\n              Set the dimensions for the layer.\\n            </p>\\n          </div>\\n          <div className=\\\"grid gap-2\\\">\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"width\\\">Width</Label>\\n              <Input\\n                id=\\\"width\\\"\\n                defaultValue=\\\"100%\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxWidth\\\">Max. width</Label>\\n              <Input\\n                id=\\\"maxWidth\\\"\\n                defaultValue=\\\"300px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"height\\\">Height</Label>\\n              <Input\\n                id=\\\"height\\\"\\n                defaultValue=\\\"25px\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n            <div className=\\\"grid grid-cols-3 items-center gap-4\\\">\\n              <Label htmlFor=\\\"maxHeight\\\">Max. height</Label>\\n              <Input\\n                id=\\\"maxHeight\\\"\\n                defaultValue=\\\"none\\\"\\n                className=\\\"col-span-2 h-8\\\"\\n              />\\n            </div>\\n          </div>\\n        </div>\\n      </PopoverContent>\\n    </Popover>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Content\\n        data-slot=\\\"popover-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverAnchor({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\\n  return <PopoverPrimitive.Anchor data-slot=\\\"popover-anchor\\\" {...props} />\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\\\"h2\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverTrigger,\\n  PopoverContent,\\n  PopoverAnchor,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/products-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"products-01\",\n  \"type\": \"registry:block\",\n  \"description\": \"A table of products\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"badge\",\n    \"button\",\n    \"dropdown-menu\",\n    \"pagination\",\n    \"table\",\n    \"tabs\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/products-01/page.tsx\",\n      \"content\": \"import { ProductsTable } from \\\"@/registry/new-york-v4/blocks/products-01/components/products-table\\\"\\n\\n// Load from database.\\nconst products = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"BJÖRKSNÄS Dining Table\\\",\\n    price: 599.99,\\n    stock: 12,\\n    dateAdded: \\\"2023-06-15\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"POÄNG Armchair\\\",\\n    price: 249.99,\\n    stock: 28,\\n    dateAdded: \\\"2023-07-22\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"MALM Bed Frame\\\",\\n    price: 399.99,\\n    stock: 15,\\n    dateAdded: \\\"2023-08-05\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"KALLAX Shelf Unit\\\",\\n    price: 179.99,\\n    stock: 32,\\n    dateAdded: \\\"2023-09-12\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"5\\\",\\n    name: \\\"STOCKHOLM Rug\\\",\\n    price: 299.99,\\n    stock: 8,\\n    dateAdded: \\\"2023-10-18\\\",\\n    status: \\\"Low Stock\\\",\\n  },\\n  {\\n    id: \\\"6\\\",\\n    name: \\\"KIVIK Sofa\\\",\\n    price: 899.99,\\n    stock: 6,\\n    dateAdded: \\\"2023-11-02\\\",\\n    status: \\\"Low Stock\\\",\\n  },\\n  {\\n    id: \\\"7\\\",\\n    name: \\\"LISABO Coffee Table\\\",\\n    price: 149.99,\\n    stock: 22,\\n    dateAdded: \\\"2023-11-29\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"8\\\",\\n    name: \\\"HEMNES Bookcase\\\",\\n    price: 249.99,\\n    stock: 17,\\n    dateAdded: \\\"2023-12-10\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"9\\\",\\n    name: \\\"EKEDALEN Dining Chairs (Set of 2)\\\",\\n    price: 199.99,\\n    stock: 14,\\n    dateAdded: \\\"2024-01-05\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"10\\\",\\n    name: \\\"FRIHETEN Sleeper Sofa\\\",\\n    price: 799.99,\\n    stock: 9,\\n    dateAdded: \\\"2024-01-18\\\",\\n    status: \\\"Low Stock\\\",\\n  },\\n  {\\n    id: \\\"11\\\",\\n    name: \\\"NORDEN Extendable Table\\\",\\n    price: 499.99,\\n    stock: 11,\\n    dateAdded: \\\"2024-01-25\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"12\\\",\\n    name: \\\"BILLY Bookcase\\\",\\n    price: 129.99,\\n    stock: 42,\\n    dateAdded: \\\"2024-02-03\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"13\\\",\\n    name: \\\"STRANDMON Wing Chair\\\",\\n    price: 349.99,\\n    stock: 16,\\n    dateAdded: \\\"2024-02-12\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"14\\\",\\n    name: \\\"MALM Dresser\\\",\\n    price: 279.99,\\n    stock: 19,\\n    dateAdded: \\\"2024-02-27\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"15\\\",\\n    name: \\\"BRIMNES TV Unit\\\",\\n    price: 149.99,\\n    stock: 23,\\n    dateAdded: \\\"2024-03-08\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"16\\\",\\n    name: \\\"SÖDERHAMN Sectional Sofa\\\",\\n    price: 1299.99,\\n    stock: 5,\\n    dateAdded: \\\"2024-03-15\\\",\\n    status: \\\"Low Stock\\\",\\n  },\\n  {\\n    id: \\\"17\\\",\\n    name: \\\"BEKANT Desk\\\",\\n    price: 249.99,\\n    stock: 18,\\n    dateAdded: \\\"2024-03-22\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"18\\\",\\n    name: \\\"IVAR Storage System\\\",\\n    price: 199.99,\\n    stock: 14,\\n    dateAdded: \\\"2024-04-01\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"19\\\",\\n    name: \\\"RIBBA Picture Frame Set\\\",\\n    price: 49.99,\\n    stock: 36,\\n    dateAdded: \\\"2024-04-09\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n  {\\n    id: \\\"20\\\",\\n    name: \\\"EKTORP Loveseat\\\",\\n    price: 499.99,\\n    stock: 12,\\n    dateAdded: \\\"2024-04-15\\\",\\n    status: \\\"In Stock\\\",\\n  },\\n]\\n\\nexport default function ProductsPage() {\\n  return (\\n    <div className=\\\"flex h-full flex-1 flex-col gap-4 rounded-xl p-4\\\">\\n      <ProductsTable products={products} />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/products/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/products-01/components/products-table.tsx\",\n      \"content\": \"import {\\n  ArrowUpDownIcon,\\n  EllipsisVerticalIcon,\\n  ListFilterIcon,\\n  PlusIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/new-york-v4/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/new-york-v4/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/new-york-v4/ui/table\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/new-york-v4/ui/tabs\\\"\\n\\nexport function ProductsTable({\\n  products,\\n}: {\\n  products: {\\n    id: string\\n    name: string\\n    price: number\\n    stock: number\\n    dateAdded: string\\n    status: string\\n  }[]\\n}) {\\n  return (\\n    <div className=\\\"flex w-full flex-col gap-4\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Tabs defaultValue=\\\"all\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"all\\\">All Products</TabsTrigger>\\n            <TabsTrigger value=\\\"in-stock\\\">In Stock</TabsTrigger>\\n            <TabsTrigger value=\\\"low-stock\\\">Low Stock</TabsTrigger>\\n            <TabsTrigger value=\\\"archived\\\">Archived</TabsTrigger>\\n            <TabsTrigger value=\\\"add-product\\\" asChild>\\n              <button>\\n                <PlusIcon />\\n              </button>\\n            </TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <div className=\\\"flex items-center gap-2 **:data-[slot=button]:size-8 **:data-[slot=select-trigger]:h-8\\\">\\n          <Select defaultValue=\\\"all\\\">\\n            <SelectTrigger>\\n              <span className=\\\"text-muted-foreground text-sm\\\">Category:</span>\\n              <SelectValue placeholder=\\\"Select a product\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"in-stock\\\">In Stock</SelectItem>\\n              <SelectItem value=\\\"low-stock\\\">Low Stock</SelectItem>\\n              <SelectItem value=\\\"archived\\\">Archived</SelectItem>\\n            </SelectContent>\\n          </Select>\\n          <Select defaultValue=\\\"all\\\">\\n            <SelectTrigger>\\n              <span className=\\\"text-muted-foreground text-sm\\\">Price:</span>\\n              <SelectValue placeholder=\\\"Select a product\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"all\\\">$100-$200</SelectItem>\\n              <SelectItem value=\\\"in-stock\\\">$200-$300</SelectItem>\\n              <SelectItem value=\\\"low-stock\\\">$300-$400</SelectItem>\\n              <SelectItem value=\\\"archived\\\">$400-$500</SelectItem>\\n            </SelectContent>\\n          </Select>\\n          <Select defaultValue=\\\"all\\\">\\n            <SelectTrigger>\\n              <span className=\\\"text-muted-foreground text-sm\\\">Status:</span>\\n              <SelectValue placeholder=\\\"Select a product\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectItem value=\\\"all\\\">In Stock</SelectItem>\\n              <SelectItem value=\\\"in-stock\\\">Low Stock</SelectItem>\\n              <SelectItem value=\\\"low-stock\\\">Archived</SelectItem>\\n              <SelectItem value=\\\"archived\\\">Archived</SelectItem>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <ListFilterIcon />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <ArrowUpDownIcon />\\n          </Button>\\n        </div>\\n      </div>\\n      <div className=\\\"rounded-lg\\\">\\n        <Table>\\n          <TableHeader className=\\\"bg-muted/50\\\">\\n            <TableRow className=\\\"!border-0\\\">\\n              <TableHead className=\\\"w-12 rounded-l-lg px-4\\\">\\n                <Checkbox />\\n              </TableHead>\\n              <TableHead>Product</TableHead>\\n              <TableHead className=\\\"text-right\\\">Price</TableHead>\\n              <TableHead className=\\\"text-right\\\">Stock</TableHead>\\n              <TableHead>Status</TableHead>\\n              <TableHead>Date Added</TableHead>\\n              <TableHead className=\\\"rounded-r-lg\\\" />\\n            </TableRow>\\n          </TableHeader>\\n          <TableBody className=\\\"**:data-[slot=table-cell]:py-2.5\\\">\\n            {products.map((product) => (\\n              <TableRow key={product.id}>\\n                <TableCell className=\\\"px-4\\\">\\n                  <Checkbox />\\n                </TableCell>\\n                <TableCell className=\\\"font-medium\\\">{product.name}</TableCell>\\n                <TableCell className=\\\"text-right\\\">\\n                  ${product.price.toFixed(2)}\\n                </TableCell>\\n                <TableCell className=\\\"text-right\\\">{product.stock}</TableCell>\\n                <TableCell>\\n                  <Badge\\n                    variant=\\\"secondary\\\"\\n                    className={\\n                      product.status === \\\"Low Stock\\\"\\n                        ? \\\"border-orange-500 bg-transparent text-orange-500 dark:border-orange-500 dark:bg-transparent dark:text-orange-500\\\"\\n                        : \\\"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100\\\"\\n                    }\\n                  >\\n                    {product.status}\\n                  </Badge>\\n                </TableCell>\\n                <TableCell>\\n                  {new Date(product.dateAdded).toLocaleDateString(\\\"en-US\\\", {\\n                    month: \\\"long\\\",\\n                    day: \\\"numeric\\\",\\n                    year: \\\"numeric\\\",\\n                  })}\\n                </TableCell>\\n                <TableCell>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-6\\\">\\n                        <EllipsisVerticalIcon />\\n                      </Button>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent align=\\\"end\\\">\\n                      <DropdownMenuItem>Edit</DropdownMenuItem>\\n                      <DropdownMenuItem variant=\\\"destructive\\\">\\n                        Delete\\n                      </DropdownMenuItem>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </TableCell>\\n              </TableRow>\\n            ))}\\n          </TableBody>\\n        </Table>\\n      </div>\\n      <div className=\\\"flex justify-end\\\">\\n        <Pagination>\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationLink href=\\\"#\\\" isActive>\\n                2\\n              </PaginationLink>\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationEllipsis />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/progress-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-demo\",\n  \"registryDependencies\": [\n    \"progress\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/progress-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Progress } from \\\"@/registry/new-york-v4/ui/progress\\\"\\n\\nexport default function ProgressDemo() {\\n  const [progress, setProgress] = React.useState(13)\\n\\n  React.useEffect(() => {\\n    const timer = setTimeout(() => setProgress(66), 500)\\n    return () => clearTimeout(timer)\\n  }, [])\\n\\n  return <Progress value={progress} className=\\\"w-[60%]\\\" />\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Progress as ProgressPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  value,\\n  ...props\\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\\n  return (\\n    <ProgressPrimitive.Root\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\n        \\\"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"h-full w-full flex-1 bg-primary transition-all\\\"\\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n      />\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nexport { Progress }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/radio-group-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-demo\",\n  \"registryDependencies\": [\n    \"radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/radio-group-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\n\\nexport default function RadioGroupDemo() {\\n  return (\\n    <RadioGroup defaultValue=\\\"comfortable\\\">\\n      <div className=\\\"flex items-center gap-3\\\">\\n        <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n        <Label htmlFor=\\\"r1\\\">Default</Label>\\n      </div>\\n      <div className=\\\"flex items-center gap-3\\\">\\n        <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n        <Label htmlFor=\\\"r2\\\">Comfortable</Label>\\n      </div>\\n      <div className=\\\"flex items-center gap-3\\\">\\n        <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n        <Label htmlFor=\\\"r3\\\">Compact</Label>\\n      </div>\\n    </RadioGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/radio-group-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-form\",\n  \"registryDependencies\": [\n    \"radio-group\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/radio-group-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/radio-group\\\"\\n\\nconst FormSchema = z.object({\\n  type: z.enum([\\\"all\\\", \\\"mentions\\\", \\\"none\\\"], {\\n    required_error: \\\"You need to select a notification type.\\\",\\n  }),\\n})\\n\\nexport default function RadioGroupForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"type\\\"\\n          render={({ field }) => (\\n            <FormItem className=\\\"space-y-3\\\">\\n              <FormLabel>Notify me about...</FormLabel>\\n              <FormControl>\\n                <RadioGroup\\n                  onValueChange={field.onChange}\\n                  defaultValue={field.value}\\n                  className=\\\"flex flex-col\\\"\\n                >\\n                  <FormItem className=\\\"flex items-center gap-3\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"all\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">\\n                      All new messages\\n                    </FormLabel>\\n                  </FormItem>\\n                  <FormItem className=\\\"flex items-center gap-3\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"mentions\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">\\n                      Direct messages and mentions\\n                    </FormLabel>\\n                  </FormItem>\\n                  <FormItem className=\\\"flex items-center gap-3\\\">\\n                    <FormControl>\\n                      <RadioGroupItem value=\\\"none\\\" />\\n                    </FormControl>\\n                    <FormLabel className=\\\"font-normal\\\">Nothing</FormLabel>\\n                  </FormItem>\\n                </RadioGroup>\\n              </FormControl>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CircleIcon } from \\\"lucide-react\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction RadioGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\\n  return (\\n    <RadioGroupPrimitive.Root\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid gap-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\\n  return (\\n    <RadioGroupPrimitive.Item\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"aspect-square size-4 shrink-0 rounded-full border border-input text-primary shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioGroupPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"relative flex items-center justify-center\\\"\\n      >\\n        <CircleIcon className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-primary\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"dependencies\": [\"radix-ui\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"button\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\", \"lucide-react\"],\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"dependencies\": [\n        \"radix-ui\",\n        \"@hookform/resolvers\",\n        \"zod\",\n        \"react-hook-form\"\n      ],\n      \"registryDependencies\": [\"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/form.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"dependencies\": [\"radix-ui\"],\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels@^4\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"dependencies\": [\"radix-ui\", \"class-variance-authority\", \"lucide-react\"],\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"tailwind\": {\n        \"config\": {\n          \"theme\": {\n            \"extend\": {\n              \"colors\": {\n                \"sidebar\": {\n                  \"DEFAULT\": \"hsl(var(--sidebar-background))\",\n                  \"foreground\": \"hsl(var(--sidebar-foreground))\",\n                  \"primary\": \"hsl(var(--sidebar-primary))\",\n                  \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n                  \"accent\": \"hsl(var(--sidebar-accent))\",\n                  \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n                  \"border\": \"hsl(var(--sidebar-border))\",\n                  \"ring\": \"hsl(var(--sidebar-ring))\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"cssVars\": {\n        \"light\": {\n          \"sidebar-background\": \"0 0% 98%\",\n          \"sidebar-foreground\": \"240 5.3% 26.1%\",\n          \"sidebar-primary\": \"240 5.9% 10%\",\n          \"sidebar-primary-foreground\": \"0 0% 98%\",\n          \"sidebar-accent\": \"240 4.8% 95.9%\",\n          \"sidebar-accent-foreground\": \"240 5.9% 10%\",\n          \"sidebar-border\": \"220 13% 91%\",\n          \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n        },\n        \"dark\": {\n          \"sidebar-background\": \"240 5.9% 10%\",\n          \"sidebar-foreground\": \"240 4.8% 95.9%\",\n          \"sidebar-primary\": \"224.3 76.3% 48%\",\n          \"sidebar-primary-foreground\": \"0 0% 100%\",\n          \"sidebar-accent\": \"240 3.7% 15.9%\",\n          \"sidebar-accent-foreground\": \"240 4.8% 95.9%\",\n          \"sidebar-border\": \"240 3.7% 15.9%\",\n          \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"dependencies\": [\"class-variance-authority\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"dependencies\": [\"radix-ui\"],\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"dependencies\": [\"radix-ui\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tabler/icons-react\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-axes\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-axes.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-default\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-gradient\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-gradient.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-icons\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-icons.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-interactive\",\n      \"registryDependencies\": [\"card\", \"chart\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-legend\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-legend.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-linear\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-linear.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-stacked-expand\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-stacked-expand.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-stacked\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-stacked.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-area-step\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-step.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-active\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-active.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-default\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-horizontal\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-horizontal.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-interactive\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-interactive.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-label-custom\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-label\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-label.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-mixed\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-mixed.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-multiple\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-multiple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-negative\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-negative.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-bar-stacked\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-stacked.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-default\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-dots-colors\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-dots-colors.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-dots-custom\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-dots-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-dots\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-dots.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-interactive\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-interactive.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-label-custom\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-label\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-label.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-linear\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-linear.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-multiple\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-multiple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-line-step\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-step.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-donut-active\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-donut-active.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-donut-text\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-donut-text.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-donut\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-donut.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-interactive\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-interactive.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-label-custom\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-label-list\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-label-list.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-label\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-label.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-legend\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-legend.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-separator-none\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-separator-none.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-simple\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-simple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-pie-stacked\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-stacked.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-default\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-dots\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-dots.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-grid-circle-fill\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle-fill.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-grid-circle-no-lines\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle-no-lines.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-grid-circle\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-grid-custom\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-grid-fill\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-fill.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-grid-none\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-none.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-icons\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-icons.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-label-custom\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-legend\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-legend.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-lines-only\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-lines-only.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-multiple\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-multiple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radar-radius\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-radius.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radial-grid\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-grid.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radial-label\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-label.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radial-shape\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-shape.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radial-simple\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-simple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radial-stacked\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-stacked.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-radial-text\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-text.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-default\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-indicator-line\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-indicator-line.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-indicator-none\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-indicator-none.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-label-none\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-none.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-label-custom\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-label-formatter\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-formatter.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-formatter\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-formatter.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-icons\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-icons.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"chart-tooltip-advanced\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-advanced.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"theme-stone\",\n      \"dependencies\": [],\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.147 0.004 49.25)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.147 0.004 49.25)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.147 0.004 49.25)\",\n          \"primary\": \"oklch(0.216 0.006 56.043)\",\n          \"primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"secondary\": \"oklch(0.97 0.001 106.424)\",\n          \"secondary-foreground\": \"oklch(0.216 0.006 56.043)\",\n          \"muted\": \"oklch(0.97 0.001 106.424)\",\n          \"muted-foreground\": \"oklch(0.553 0.013 58.071)\",\n          \"accent\": \"oklch(0.97 0.001 106.424)\",\n          \"accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.923 0.003 48.717)\",\n          \"input\": \"oklch(0.923 0.003 48.717)\",\n          \"ring\": \"oklch(0.709 0.01 56.259)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-foreground\": \"oklch(0.147 0.004 49.25)\",\n          \"sidebar-primary\": \"oklch(0.216 0.006 56.043)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-accent\": \"oklch(0.97 0.001 106.424)\",\n          \"sidebar-accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n          \"sidebar-border\": \"oklch(0.923 0.003 48.717)\",\n          \"sidebar-ring\": \"oklch(0.709 0.01 56.259)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.147 0.004 49.25)\",\n          \"foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"card\": \"oklch(0.216 0.006 56.043)\",\n          \"card-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"popover\": \"oklch(0.216 0.006 56.043)\",\n          \"popover-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"primary\": \"oklch(0.923 0.003 48.717)\",\n          \"primary-foreground\": \"oklch(0.216 0.006 56.043)\",\n          \"secondary\": \"oklch(0.268 0.007 34.298)\",\n          \"secondary-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"muted\": \"oklch(0.268 0.007 34.298)\",\n          \"muted-foreground\": \"oklch(0.709 0.01 56.259)\",\n          \"accent\": \"oklch(0.268 0.007 34.298)\",\n          \"accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.553 0.013 58.071)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.216 0.006 56.043)\",\n          \"sidebar-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-accent\": \"oklch(0.268 0.007 34.298)\",\n          \"sidebar-accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.553 0.013 58.071)\"\n        }\n      },\n      \"type\": \"registry:theme\"\n    },\n    {\n      \"name\": \"theme-zinc\",\n      \"dependencies\": [],\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.141 0.005 285.823)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.141 0.005 285.823)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.141 0.005 285.823)\",\n          \"primary\": \"oklch(0.21 0.006 285.885)\",\n          \"primary-foreground\": \"oklch(0.985 0 0)\",\n          \"secondary\": \"oklch(0.967 0.001 286.375)\",\n          \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n          \"muted\": \"oklch(0.967 0.001 286.375)\",\n          \"muted-foreground\": \"oklch(0.552 0.016 285.938)\",\n          \"accent\": \"oklch(0.967 0.001 286.375)\",\n          \"accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.92 0.004 286.32)\",\n          \"input\": \"oklch(0.92 0.004 286.32)\",\n          \"ring\": \"oklch(0.705 0.015 286.067)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.985 0 0)\",\n          \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\",\n          \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\",\n          \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n          \"sidebar-border\": \"oklch(0.92 0.004 286.32)\",\n          \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.141 0.005 285.823)\",\n          \"foreground\": \"oklch(0.985 0 0)\",\n          \"card\": \"oklch(0.21 0.006 285.885)\",\n          \"card-foreground\": \"oklch(0.985 0 0)\",\n          \"popover\": \"oklch(0.21 0.006 285.885)\",\n          \"popover-foreground\": \"oklch(0.985 0 0)\",\n          \"primary\": \"oklch(0.92 0.004 286.32)\",\n          \"primary-foreground\": \"oklch(0.21 0.006 285.885)\",\n          \"secondary\": \"oklch(0.274 0.006 286.033)\",\n          \"secondary-foreground\": \"oklch(0.985 0 0)\",\n          \"muted\": \"oklch(0.274 0.006 286.033)\",\n          \"muted-foreground\": \"oklch(0.705 0.015 286.067)\",\n          \"accent\": \"oklch(0.274 0.006 286.033)\",\n          \"accent-foreground\": \"oklch(0.985 0 0)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.552 0.016 285.938)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.21 0.006 285.885)\",\n          \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\",\n          \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\"\n        }\n      },\n      \"type\": \"registry:theme\"\n    },\n    {\n      \"name\": \"theme-neutral\",\n      \"dependencies\": [],\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.145 0 0)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.145 0 0)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.145 0 0)\",\n          \"primary\": \"oklch(0.205 0 0)\",\n          \"primary-foreground\": \"oklch(0.985 0 0)\",\n          \"secondary\": \"oklch(0.97 0 0)\",\n          \"secondary-foreground\": \"oklch(0.205 0 0)\",\n          \"muted\": \"oklch(0.97 0 0)\",\n          \"muted-foreground\": \"oklch(0.556 0 0)\",\n          \"accent\": \"oklch(0.97 0 0)\",\n          \"accent-foreground\": \"oklch(0.205 0 0)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.922 0 0)\",\n          \"input\": \"oklch(0.922 0 0)\",\n          \"ring\": \"oklch(0.708 0 0)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.985 0 0)\",\n          \"sidebar-foreground\": \"oklch(0.145 0 0)\",\n          \"sidebar-primary\": \"oklch(0.205 0 0)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-accent\": \"oklch(0.97 0 0)\",\n          \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\",\n          \"sidebar-border\": \"oklch(0.922 0 0)\",\n          \"sidebar-ring\": \"oklch(0.708 0 0)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.145 0 0)\",\n          \"foreground\": \"oklch(0.985 0 0)\",\n          \"card\": \"oklch(0.205 0 0)\",\n          \"card-foreground\": \"oklch(0.985 0 0)\",\n          \"popover\": \"oklch(0.205 0 0)\",\n          \"popover-foreground\": \"oklch(0.985 0 0)\",\n          \"primary\": \"oklch(0.922 0 0)\",\n          \"primary-foreground\": \"oklch(0.205 0 0)\",\n          \"secondary\": \"oklch(0.269 0 0)\",\n          \"secondary-foreground\": \"oklch(0.985 0 0)\",\n          \"muted\": \"oklch(0.269 0 0)\",\n          \"muted-foreground\": \"oklch(0.708 0 0)\",\n          \"accent\": \"oklch(0.269 0 0)\",\n          \"accent-foreground\": \"oklch(0.985 0 0)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.556 0 0)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.205 0 0)\",\n          \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-accent\": \"oklch(0.269 0 0)\",\n          \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.556 0 0)\"\n        }\n      },\n      \"type\": \"registry:theme\"\n    },\n    {\n      \"name\": \"theme-gray\",\n      \"dependencies\": [],\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.13 0.028 261.692)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.13 0.028 261.692)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.13 0.028 261.692)\",\n          \"primary\": \"oklch(0.21 0.034 264.665)\",\n          \"primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"secondary\": \"oklch(0.967 0.003 264.542)\",\n          \"secondary-foreground\": \"oklch(0.21 0.034 264.665)\",\n          \"muted\": \"oklch(0.967 0.003 264.542)\",\n          \"muted-foreground\": \"oklch(0.551 0.027 264.364)\",\n          \"accent\": \"oklch(0.967 0.003 264.542)\",\n          \"accent-foreground\": \"oklch(0.21 0.034 264.665)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.928 0.006 264.531)\",\n          \"input\": \"oklch(0.928 0.006 264.531)\",\n          \"ring\": \"oklch(0.707 0.022 261.325)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-foreground\": \"oklch(0.13 0.028 261.692)\",\n          \"sidebar-primary\": \"oklch(0.21 0.034 264.665)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-accent\": \"oklch(0.967 0.003 264.542)\",\n          \"sidebar-accent-foreground\": \"oklch(0.21 0.034 264.665)\",\n          \"sidebar-border\": \"oklch(0.928 0.006 264.531)\",\n          \"sidebar-ring\": \"oklch(0.707 0.022 261.325)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.13 0.028 261.692)\",\n          \"foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"card\": \"oklch(0.21 0.034 264.665)\",\n          \"card-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"popover\": \"oklch(0.21 0.034 264.665)\",\n          \"popover-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"primary\": \"oklch(0.928 0.006 264.531)\",\n          \"primary-foreground\": \"oklch(0.21 0.034 264.665)\",\n          \"secondary\": \"oklch(0.278 0.033 256.848)\",\n          \"secondary-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"muted\": \"oklch(0.278 0.033 256.848)\",\n          \"muted-foreground\": \"oklch(0.707 0.022 261.325)\",\n          \"accent\": \"oklch(0.278 0.033 256.848)\",\n          \"accent-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.551 0.027 264.364)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.21 0.034 264.665)\",\n          \"sidebar-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-accent\": \"oklch(0.278 0.033 256.848)\",\n          \"sidebar-accent-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\"\n        }\n      },\n      \"type\": \"registry:theme\"\n    },\n    {\n      \"name\": \"theme-slate\",\n      \"dependencies\": [],\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.129 0.042 264.695)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.129 0.042 264.695)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.129 0.042 264.695)\",\n          \"primary\": \"oklch(0.208 0.042 265.755)\",\n          \"primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"secondary\": \"oklch(0.968 0.007 247.896)\",\n          \"secondary-foreground\": \"oklch(0.208 0.042 265.755)\",\n          \"muted\": \"oklch(0.968 0.007 247.896)\",\n          \"muted-foreground\": \"oklch(0.554 0.046 257.417)\",\n          \"accent\": \"oklch(0.968 0.007 247.896)\",\n          \"accent-foreground\": \"oklch(0.208 0.042 265.755)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.929 0.013 255.508)\",\n          \"input\": \"oklch(0.929 0.013 255.508)\",\n          \"ring\": \"oklch(0.704 0.04 256.788)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-foreground\": \"oklch(0.129 0.042 264.695)\",\n          \"sidebar-primary\": \"oklch(0.208 0.042 265.755)\",\n          \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-accent\": \"oklch(0.968 0.007 247.896)\",\n          \"sidebar-accent-foreground\": \"oklch(0.208 0.042 265.755)\",\n          \"sidebar-border\": \"oklch(0.929 0.013 255.508)\",\n          \"sidebar-ring\": \"oklch(0.704 0.04 256.788)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.129 0.042 264.695)\",\n          \"foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"card\": \"oklch(0.208 0.042 265.755)\",\n          \"card-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"popover\": \"oklch(0.208 0.042 265.755)\",\n          \"popover-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"primary\": \"oklch(0.929 0.013 255.508)\",\n          \"primary-foreground\": \"oklch(0.208 0.042 265.755)\",\n          \"secondary\": \"oklch(0.279 0.041 260.031)\",\n          \"secondary-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"muted\": \"oklch(0.279 0.041 260.031)\",\n          \"muted-foreground\": \"oklch(0.704 0.04 256.788)\",\n          \"accent\": \"oklch(0.279 0.041 260.031)\",\n          \"accent-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.551 0.027 264.364)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.208 0.042 265.755)\",\n          \"sidebar-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-accent\": \"oklch(0.279 0.041 260.031)\",\n          \"sidebar-accent-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\"\n        }\n      },\n      \"type\": \"registry:theme\"\n    },\n    {\n      \"name\": \"accordion-demo\",\n      \"registryDependencies\": [\"accordion\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/accordion-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-demo\",\n      \"registryDependencies\": [\"alert\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/alert-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-destructive\",\n      \"registryDependencies\": [\"alert\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/alert-destructive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-demo\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/alert-dialog-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-demo\",\n      \"registryDependencies\": [\"aspect-ratio\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/aspect-ratio-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-demo\",\n      \"registryDependencies\": [\"avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/avatar-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-demo\",\n      \"registryDependencies\": [\"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/badge-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-destructive\",\n      \"registryDependencies\": [\"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/badge-destructive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-outline\",\n      \"registryDependencies\": [\"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/badge-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-secondary\",\n      \"registryDependencies\": [\"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/badge-secondary.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-demo\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-separator\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-separator.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-dropdown\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-dropdown.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-ellipsis\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-ellipsis.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-link\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-link.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-responsive\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-responsive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-demo\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-default\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-default.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-secondary\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-secondary.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-destructive\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-destructive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-outline\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-ghost\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-ghost.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-link\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-link.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-with-icon\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-with-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-loading\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-loading.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-icon\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-as-child\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-as-child.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-rounded\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-rounded.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-size\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-demo\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-nested\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-nested.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-size\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-separator\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-separator.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-split\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-split.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-input\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-input.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-dropdown\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-dropdown.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-select\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-select.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-popover\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-popover.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-input-group\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-input-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-orientation\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-orientation.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-demo\",\n      \"registryDependencies\": [\"calendar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/calendar-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-demo\",\n      \"registryDependencies\": [\"card\", \"button\", \"switch\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/card-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-with-form\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/card-with-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-demo\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-size\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-spacing\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-spacing.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-orientation\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-orientation.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-api\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-api.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-plugin\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-plugin.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-demo\",\n      \"registryDependencies\": [\"checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/checkbox-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-disabled\",\n      \"registryDependencies\": [\"checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/checkbox-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-with-text\",\n      \"registryDependencies\": [\"checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/checkbox-with-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-demo\",\n      \"registryDependencies\": [\"collapsible\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/collapsible-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-demo\",\n      \"registryDependencies\": [\"command\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-dropdown-menu\",\n      \"registryDependencies\": [\"command\", \"dropdown-menu\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-dropdown-menu.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-popover\",\n      \"registryDependencies\": [\"combobox\", \"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-popover.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-responsive\",\n      \"registryDependencies\": [\"combobox\", \"popover\", \"drawer\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-responsive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-demo\",\n      \"registryDependencies\": [\"command\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/command-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-dialog\",\n      \"registryDependencies\": [\"command\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/command-dialog.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-demo\",\n      \"registryDependencies\": [\"context-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/context-menu-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"data-table-demo\",\n      \"registryDependencies\": [\"data-table\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/data-table-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"date-picker-demo\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\"button\", \"calendar\", \"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/date-picker-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"date-picker-with-presets\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\"button\", \"calendar\", \"popover\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/date-picker-with-presets.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"date-picker-with-range\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\"button\", \"calendar\", \"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/date-picker-with-range.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-demo\",\n      \"registryDependencies\": [\"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dialog-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-close-button\",\n      \"registryDependencies\": [\"dialog\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dialog-close-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-demo\",\n      \"registryDependencies\": [\"drawer\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/drawer-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-demo\",\n      \"registryDependencies\": [\"empty\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-icon\",\n      \"registryDependencies\": [\"empty\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-avatar\",\n      \"registryDependencies\": [\"empty\", \"button\", \"avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-avatar.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-avatar-group\",\n      \"registryDependencies\": [\"empty\", \"button\", \"avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-avatar-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-input-group\",\n      \"registryDependencies\": [\"empty\", \"button\", \"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-input-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-outline\",\n      \"registryDependencies\": [\"empty\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-background\",\n      \"registryDependencies\": [\"empty\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-background.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-demo\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-input\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-input.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-textarea\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-textarea.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-fieldset\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-fieldset.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-radio\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-radio.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-checkbox\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-checkbox.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-switch\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-switch.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-slider\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-slider.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-select\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-select.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-choice-card\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-choice-card.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-group\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-responsive\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-responsive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-next-demo\",\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"textarea\",\n        \"button\",\n        \"card\",\n        \"spinner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-next-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-next-complex\",\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"textarea\",\n        \"button\",\n        \"card\",\n        \"spinner\",\n        \"checkbox\",\n        \"dialog\",\n        \"radio-group\",\n        \"select\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-next-complex.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-demo\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-input\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"input\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-input.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-select\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"select\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-select.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-checkbox\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"checkbox\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-checkbox.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-switch\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"switch\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-switch.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-textarea\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"textarea\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-textarea.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-radiogroup\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"radio-group\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-radiogroup.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-array\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-array.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-complex\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"radio-group\",\n        \"select\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-complex.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-rhf-password\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input-group\",\n        \"progress\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-password.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-demo\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-input\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"input\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-input.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-textarea\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"textarea\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-textarea.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-select\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"select\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-select.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-checkbox\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"checkbox\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-checkbox.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-switch\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"switch\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-switch.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-radiogroup\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"radio-group\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-radiogroup.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-array\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-array.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"form-tanstack-complex\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"radio-group\",\n        \"select\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-complex.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-dialog\",\n      \"registryDependencies\": [\"drawer\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/drawer-dialog.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-demo\",\n      \"registryDependencies\": [\"dropdown-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dropdown-menu-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-checkboxes\",\n      \"registryDependencies\": [\"dropdown-menu\", \"checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dropdown-menu-checkboxes.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-radio-group\",\n      \"registryDependencies\": [\"dropdown-menu\", \"radio-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dropdown-menu-radio-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-dialog\",\n      \"registryDependencies\": [\n        \"dropdown-menu\",\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dropdown-menu-dialog.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-demo\",\n      \"registryDependencies\": [\"hover-card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/hover-card-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-demo\",\n      \"registryDependencies\": [\"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-disabled\",\n      \"registryDependencies\": [\"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-file\",\n      \"registryDependencies\": [\"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-file.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-with-button\",\n      \"registryDependencies\": [\"input\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-with-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-with-label\",\n      \"registryDependencies\": [\"input\", \"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-with-label.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-with-text\",\n      \"registryDependencies\": [\"input\", \"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-with-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-demo\",\n      \"registryDependencies\": [\"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-label\",\n      \"registryDependencies\": [\"input-group\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-label.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-text\",\n      \"registryDependencies\": [\"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-tooltip\",\n      \"registryDependencies\": [\"input-group\", \"tooltip\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-tooltip.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-button\",\n      \"registryDependencies\": [\"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-button-group\",\n      \"registryDependencies\": [\"input-group\", \"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-button-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-dropdown\",\n      \"registryDependencies\": [\"input-group\", \"dropdown-menu\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-dropdown.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-spinner\",\n      \"registryDependencies\": [\"input-group\", \"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-spinner.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-textarea\",\n      \"registryDependencies\": [\"input-group\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-textarea.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-icon\",\n      \"registryDependencies\": [\"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-custom\",\n      \"registryDependencies\": [\n        \"input-group\",\n        \"badge\",\n        \"progress\",\n        \"dropdown-menu\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-custom.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-demo\",\n      \"registryDependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-pattern\",\n      \"registryDependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-pattern.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-separator\",\n      \"registryDependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-separator.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-controlled\",\n      \"registryDependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-controlled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-demo\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-size\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-variant\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-variant.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-icon\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-image\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-image.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-avatar\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-avatar.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-group\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-header\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-header.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-dropdown\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-dropdown.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-link\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-link.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-demo\",\n      \"registryDependencies\": [\"kbd\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-tooltip\",\n      \"registryDependencies\": [\"kbd\", \"tooltip\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-tooltip.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-input-group\",\n      \"registryDependencies\": [\"kbd\", \"input\", \"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-input-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-button\",\n      \"registryDependencies\": [\"kbd\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-group\",\n      \"registryDependencies\": [\"kbd\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-demo\",\n      \"registryDependencies\": [\"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/label-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-demo\",\n      \"registryDependencies\": [\"menubar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/menubar-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-demo\",\n      \"registryDependencies\": [\"navigation-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/navigation-menu-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-demo\",\n      \"registryDependencies\": [\"native-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/native-select-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-groups\",\n      \"registryDependencies\": [\"native-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/native-select-groups.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-disabled\",\n      \"registryDependencies\": [\"native-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/native-select-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-invalid\",\n      \"registryDependencies\": [\"native-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/native-select-invalid.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-demo\",\n      \"registryDependencies\": [\"pagination\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/pagination-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-demo\",\n      \"registryDependencies\": [\"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/popover-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-demo\",\n      \"registryDependencies\": [\"progress\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/progress-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-demo\",\n      \"registryDependencies\": [\"radio-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/radio-group-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-demo\",\n      \"registryDependencies\": [\"resizable\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/resizable-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-demo-with-handle\",\n      \"registryDependencies\": [\"resizable\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/resizable-demo-with-handle.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-vertical\",\n      \"registryDependencies\": [\"resizable\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/resizable-vertical.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-handle\",\n      \"registryDependencies\": [\"resizable\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/resizable-handle.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-demo\",\n      \"registryDependencies\": [\"scroll-area\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/scroll-area-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-horizontal-demo\",\n      \"registryDependencies\": [\"scroll-area\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/scroll-area-horizontal-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-demo\",\n      \"registryDependencies\": [\"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/select-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-scrollable\",\n      \"registryDependencies\": [\"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/select-scrollable.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-demo\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/separator-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-demo\",\n      \"registryDependencies\": [\"sheet\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/sheet-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-side\",\n      \"registryDependencies\": [\"sheet\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/sheet-side.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-demo\",\n      \"registryDependencies\": [\"skeleton\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/skeleton-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-card\",\n      \"registryDependencies\": [\"skeleton\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/skeleton-card.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-demo\",\n      \"registryDependencies\": [\"slider\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/slider-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-demo\",\n      \"registryDependencies\": [\"sonner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/sonner-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-types\",\n      \"registryDependencies\": [\"sonner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/sonner-types.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-demo\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-basic\",\n      \"registryDependencies\": [\"spinner\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-basic.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-button\",\n      \"registryDependencies\": [\"spinner\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-badge\",\n      \"registryDependencies\": [\"spinner\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-badge.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-input-group\",\n      \"registryDependencies\": [\"spinner\", \"button\", \"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-input-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-empty\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-empty.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-color\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-color.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-custom\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-custom.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-size\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-item\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-item.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-demo\",\n      \"registryDependencies\": [\"switch\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/switch-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-demo\",\n      \"registryDependencies\": [\"table\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/table-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-demo\",\n      \"registryDependencies\": [\"tabs\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/tabs-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-demo\",\n      \"registryDependencies\": [\"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-disabled\",\n      \"registryDependencies\": [\"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-with-button\",\n      \"registryDependencies\": [\"textarea\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-with-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-with-label\",\n      \"registryDependencies\": [\"textarea\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-with-label.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-with-text\",\n      \"registryDependencies\": [\"textarea\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-with-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-demo\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-disabled\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-lg\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-lg.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-outline\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-sm\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-sm.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-single\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-single.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-spacing\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-spacing.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-demo\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-disabled\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-lg\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-lg.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-outline\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-sm\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-sm.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-with-text\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-with-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-demo\",\n      \"registryDependencies\": [\"tooltip\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/tooltip-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-blockquote\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-blockquote.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-demo\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-h1\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-h1.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-h2\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-h2.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-h3\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-h3.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-h4\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-h4.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-inline-code\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-inline-code.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-large\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-large.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-lead\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-lead.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-list\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-list.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-muted\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-muted.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-p\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-p.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-small\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-small.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"typography-table\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-table.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"mode-toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/mode-toggle.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-bar-demo\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-bar-demo-grid\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo-grid.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-bar-demo-axis\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo-axis.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-bar-demo-tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo-tooltip.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-bar-demo-legend\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo-legend.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-tooltip-demo\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-tooltip-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-hijri\",\n      \"description\": \"A Persian calendar.\",\n      \"registryDependencies\": [\"calendar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/calendar-hijri.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"calendar\", \"date\"],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-demo\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-demo.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-header\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-footer\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-footer.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-group.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-group-collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-group-collapsible.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-group-action\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-group-action.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-menu-action\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu-action.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-menu-sub\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu-sub.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-menu-collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu-collapsible.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-menu-badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu-badge.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-rsc\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-rsc.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    },\n    {\n      \"name\": \"sidebar-controlled\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-controlled.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:internal\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/resizable-demo-with-handle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-demo-with-handle\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/resizable-demo-with-handle.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york-v4/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      orientation=\\\"horizontal\\\"\\n      className=\\\"max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize=\\\"50%\\\">\\n        <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">One</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle withHandle />\\n      <ResizablePanel defaultSize=\\\"50%\\\">\\n        <ResizablePanelGroup orientation=\\\"vertical\\\">\\n          <ResizablePanel defaultSize=\\\"25%\\\">\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Two</span>\\n            </div>\\n          </ResizablePanel>\\n          <ResizableHandle withHandle />\\n          <ResizablePanel defaultSize=\\\"75%\\\">\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Three</span>\\n            </div>\\n          </ResizablePanel>\\n        </ResizablePanelGroup>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/resizable-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-demo\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/resizable-demo.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york-v4/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      orientation=\\\"horizontal\\\"\\n      className=\\\"max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize=\\\"50%\\\">\\n        <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">One</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle />\\n      <ResizablePanel defaultSize=\\\"50%\\\">\\n        <ResizablePanelGroup orientation=\\\"vertical\\\">\\n          <ResizablePanel defaultSize=\\\"25%\\\">\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Two</span>\\n            </div>\\n          </ResizablePanel>\\n          <ResizableHandle />\\n          <ResizablePanel defaultSize=\\\"75%\\\">\\n            <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n              <span className=\\\"font-semibold\\\">Three</span>\\n            </div>\\n          </ResizablePanel>\\n        </ResizablePanelGroup>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/resizable-handle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-handle\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/resizable-handle.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york-v4/ui/resizable\\\"\\n\\nexport default function ResizableHandleDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      orientation=\\\"horizontal\\\"\\n      className=\\\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize=\\\"25%\\\">\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Sidebar</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle withHandle />\\n      <ResizablePanel defaultSize=\\\"75%\\\">\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Content</span>\\n        </div>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/resizable-vertical.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-vertical\",\n  \"registryDependencies\": [\n    \"resizable\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/resizable-vertical.tsx\",\n      \"content\": \"import {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/new-york-v4/ui/resizable\\\"\\n\\nexport default function ResizableDemo() {\\n  return (\\n    <ResizablePanelGroup\\n      orientation=\\\"vertical\\\"\\n      className=\\\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\\\"\\n    >\\n      <ResizablePanel defaultSize=\\\"25%\\\">\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Header</span>\\n        </div>\\n      </ResizablePanel>\\n      <ResizableHandle />\\n      <ResizablePanel defaultSize=\\\"75%\\\">\\n        <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n          <span className=\\\"font-semibold\\\">Content</span>\\n        </div>\\n      </ResizablePanel>\\n    </ResizablePanelGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels@^4\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { GripVerticalIcon } from \\\"lucide-react\\\"\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border\\\">\\n          <GripVerticalIcon className=\\\"size-2.5\\\" />\\n        </div>\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/scroll-area-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-demo\",\n  \"registryDependencies\": [\n    \"scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/scroll-area-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { ScrollArea } from \\\"@/registry/new-york-v4/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nexport default function ScrollAreaDemo() {\\n  return (\\n    <ScrollArea className=\\\"h-72 w-48 rounded-md border\\\">\\n      <div className=\\\"p-4\\\">\\n        <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n        {tags.map((tag) => (\\n          <React.Fragment key={tag}>\\n            <div className=\\\"text-sm\\\">{tag}</div>\\n            <Separator className=\\\"my-2\\\" />\\n          </React.Fragment>\\n        ))}\\n      </div>\\n    </ScrollArea>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/scroll-area-horizontal-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-horizontal-demo\",\n  \"registryDependencies\": [\n    \"scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/scroll-area-horizontal-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/new-york-v4/ui/scroll-area\\\"\\n\\nexport interface Artwork {\\n  artist: string\\n  art: string\\n}\\n\\nexport const works: Artwork[] = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyavko\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n]\\n\\nexport default function ScrollAreaHorizontalDemo() {\\n  return (\\n    <ScrollArea className=\\\"w-96 rounded-md border whitespace-nowrap\\\">\\n      <div className=\\\"flex w-max space-x-4 p-4\\\">\\n        {works.map((artwork) => (\\n          <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n            <div className=\\\"overflow-hidden rounded-md\\\">\\n              <Image\\n                src={artwork.art}\\n                alt={`Photo by ${artwork.artist}`}\\n                className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                width={300}\\n                height={400}\\n              />\\n            </div>\\n            <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n              Photo by{\\\" \\\"}\\n              <span className=\\\"font-semibold text-foreground\\\">\\n                {artwork.artist}\\n              </span>\\n            </figcaption>\\n          </figure>\\n        ))}\\n      </div>\\n      <ScrollBar orientation=\\\"horizontal\\\" />\\n    </ScrollArea>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\\n  return (\\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none\\\",\\n        orientation === \\\"vertical\\\" &&\\n          \\\"h-full w-2.5 border-l border-l-transparent\\\",\\n        orientation === \\\"horizontal\\\" &&\\n          \\\"h-2.5 flex-col border-t border-t-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.ScrollAreaThumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/select-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-demo\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/select-demo.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport default function SelectDemo() {\\n  return (\\n    <Select>\\n      <SelectTrigger className=\\\"w-[180px]\\\">\\n        <SelectValue placeholder=\\\"Select a fruit\\\" />\\n      </SelectTrigger>\\n      <SelectContent>\\n        <SelectGroup>\\n          <SelectLabel>Fruits</SelectLabel>\\n          <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n          <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n          <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n          <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n        </SelectGroup>\\n      </SelectContent>\\n    </Select>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/select-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-form\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/select-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport Link from \\\"next/link\\\"\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nconst FormSchema = z.object({\\n  email: z\\n    .string({\\n      required_error: \\\"Please select an email to display.\\\",\\n    })\\n    .email(),\\n})\\n\\nexport default function SelectForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"email\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Email</FormLabel>\\n              <Select onValueChange={field.onChange} defaultValue={field.value}>\\n                <FormControl>\\n                  <SelectTrigger>\\n                    <SelectValue placeholder=\\\"Select a verified email to display\\\" />\\n                  </SelectTrigger>\\n                </FormControl>\\n                <SelectContent>\\n                  <SelectItem value=\\\"m@example.com\\\">m@example.com</SelectItem>\\n                  <SelectItem value=\\\"m@google.com\\\">m@google.com</SelectItem>\\n                  <SelectItem value=\\\"m@support.com\\\">m@support.com</SelectItem>\\n                </SelectContent>\\n              </Select>\\n              <FormDescription>\\n                You can manage email addresses in your{\\\" \\\"}\\n                <Link href=\\\"/examples/forms\\\">email settings</Link>.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/select-scrollable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-scrollable\",\n  \"registryDependencies\": [\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/select-scrollable.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/new-york-v4/ui/select\\\"\\n\\nexport default function SelectScrollable() {\\n  return (\\n    <Select>\\n      <SelectTrigger className=\\\"w-[280px]\\\">\\n        <SelectValue placeholder=\\\"Select a timezone\\\" />\\n      </SelectTrigger>\\n      <SelectContent>\\n        <SelectGroup>\\n          <SelectLabel>North America</SelectLabel>\\n          <SelectItem value=\\\"est\\\">Eastern Standard Time (EST)</SelectItem>\\n          <SelectItem value=\\\"cst\\\">Central Standard Time (CST)</SelectItem>\\n          <SelectItem value=\\\"mst\\\">Mountain Standard Time (MST)</SelectItem>\\n          <SelectItem value=\\\"pst\\\">Pacific Standard Time (PST)</SelectItem>\\n          <SelectItem value=\\\"akst\\\">Alaska Standard Time (AKST)</SelectItem>\\n          <SelectItem value=\\\"hst\\\">Hawaii Standard Time (HST)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Europe & Africa</SelectLabel>\\n          <SelectItem value=\\\"gmt\\\">Greenwich Mean Time (GMT)</SelectItem>\\n          <SelectItem value=\\\"cet\\\">Central European Time (CET)</SelectItem>\\n          <SelectItem value=\\\"eet\\\">Eastern European Time (EET)</SelectItem>\\n          <SelectItem value=\\\"west\\\">\\n            Western European Summer Time (WEST)\\n          </SelectItem>\\n          <SelectItem value=\\\"cat\\\">Central Africa Time (CAT)</SelectItem>\\n          <SelectItem value=\\\"eat\\\">East Africa Time (EAT)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Asia</SelectLabel>\\n          <SelectItem value=\\\"msk\\\">Moscow Time (MSK)</SelectItem>\\n          <SelectItem value=\\\"ist\\\">India Standard Time (IST)</SelectItem>\\n          <SelectItem value=\\\"cst_china\\\">China Standard Time (CST)</SelectItem>\\n          <SelectItem value=\\\"jst\\\">Japan Standard Time (JST)</SelectItem>\\n          <SelectItem value=\\\"kst\\\">Korea Standard Time (KST)</SelectItem>\\n          <SelectItem value=\\\"ist_indonesia\\\">\\n            Indonesia Central Standard Time (WITA)\\n          </SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>Australia & Pacific</SelectLabel>\\n          <SelectItem value=\\\"awst\\\">\\n            Australian Western Standard Time (AWST)\\n          </SelectItem>\\n          <SelectItem value=\\\"acst\\\">\\n            Australian Central Standard Time (ACST)\\n          </SelectItem>\\n          <SelectItem value=\\\"aest\\\">\\n            Australian Eastern Standard Time (AEST)\\n          </SelectItem>\\n          <SelectItem value=\\\"nzst\\\">New Zealand Standard Time (NZST)</SelectItem>\\n          <SelectItem value=\\\"fjt\\\">Fiji Time (FJT)</SelectItem>\\n        </SelectGroup>\\n        <SelectGroup>\\n          <SelectLabel>South America</SelectLabel>\\n          <SelectItem value=\\\"art\\\">Argentina Time (ART)</SelectItem>\\n          <SelectItem value=\\\"bot\\\">Bolivia Time (BOT)</SelectItem>\\n          <SelectItem value=\\\"brt\\\">Brasilia Time (BRT)</SelectItem>\\n          <SelectItem value=\\\"clt\\\">Chile Standard Time (CLT)</SelectItem>\\n        </SelectGroup>\\n      </SelectContent>\\n    </Select>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \\\"lucide-react\\\"\\nimport { Select as SelectPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Select({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\\n  return <SelectPrimitive.Root data-slot=\\\"select\\\" {...props} />\\n}\\n\\nfunction SelectGroup({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\\n  return <SelectPrimitive.Group data-slot=\\\"select-group\\\" {...props} />\\n}\\n\\nfunction SelectValue({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\\n  return <SelectPrimitive.Value data-slot=\\\"select-value\\\" {...props} />\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon asChild>\\n        <ChevronDownIcon className=\\\"size-4 opacity-50\\\" />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"item-aligned\\\",\\n  align = \\\"center\\\",\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Content\\n        data-slot=\\\"select-content\\\"\\n        className={cn(\\n          \\\"relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\\\",\\n          position === \\\"popper\\\" &&\\n            \\\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\\\",\\n          className\\n        )}\\n        position={position}\\n        align={align}\\n        {...props}\\n      >\\n        <SelectScrollUpButton />\\n        <SelectPrimitive.Viewport\\n          className={cn(\\n            \\\"p-1\\\",\\n            position === \\\"popper\\\" &&\\n              \\\"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\\\"\\n          )}\\n        >\\n          {children}\\n        </SelectPrimitive.Viewport>\\n        <SelectScrollDownButton />\\n      </SelectPrimitive.Content>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\\n  return (\\n    <SelectPrimitive.Label\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        data-slot=\\\"select-item-indicator\\\"\\n        className=\\\"absolute right-2 flex size-3.5 items-center justify-center\\\"\\n      >\\n        <SelectPrimitive.ItemIndicator>\\n          <CheckIcon className=\\\"size-4\\\" />\\n        </SelectPrimitive.ItemIndicator>\\n      </span>\\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\\"pointer-events-none -mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\\n  return (\\n    <SelectPrimitive.ScrollUpButton\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"flex cursor-default items-center justify-center py-1\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ChevronUpIcon className=\\\"size-4\\\" />\\n    </SelectPrimitive.ScrollUpButton>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\\n  return (\\n    <SelectPrimitive.ScrollDownButton\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"flex cursor-default items-center justify-center py-1\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ChevronDownIcon className=\\\"size-4\\\" />\\n    </SelectPrimitive.ScrollDownButton>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/separator-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-demo\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/separator-demo.tsx\",\n      \"content\": \"import { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\n\\nexport default function SeparatorDemo() {\\n  return (\\n    <div>\\n      <div className=\\\"space-y-1\\\">\\n        <h4 className=\\\"text-sm leading-none font-medium\\\">Radix Primitives</h4>\\n        <p className=\\\"text-sm text-muted-foreground\\\">\\n          An open-source UI component library.\\n        </p>\\n      </div>\\n      <Separator className=\\\"my-4\\\" />\\n      <div className=\\\"flex h-5 items-center space-x-4 text-sm\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Separator as SeparatorPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  decorative = true,\\n  ...props\\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\\n  return (\\n    <SeparatorPrimitive.Root\\n      data-slot=\\\"separator\\\"\\n      decorative={decorative}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sheet-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-demo\",\n  \"registryDependencies\": [\n    \"sheet\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/sheet-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sheet\\\"\\n\\nexport default function SheetDemo() {\\n  return (\\n    <Sheet>\\n      <SheetTrigger asChild>\\n        <Button variant=\\\"outline\\\">Open</Button>\\n      </SheetTrigger>\\n      <SheetContent>\\n        <SheetHeader>\\n          <SheetTitle>Edit profile</SheetTitle>\\n          <SheetDescription>\\n            Make changes to your profile here. Click save when you&apos;re done.\\n          </SheetDescription>\\n        </SheetHeader>\\n        <div className=\\\"grid flex-1 auto-rows-min gap-6 px-4\\\">\\n          <div className=\\\"grid gap-3\\\">\\n            <Label htmlFor=\\\"sheet-demo-name\\\">Name</Label>\\n            <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n          </div>\\n          <div className=\\\"grid gap-3\\\">\\n            <Label htmlFor=\\\"sheet-demo-username\\\">Username</Label>\\n            <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n          </div>\\n        </div>\\n        <SheetFooter>\\n          <Button type=\\\"submit\\\">Save changes</Button>\\n          <SheetClose asChild>\\n            <Button variant=\\\"outline\\\">Close</Button>\\n          </SheetClose>\\n        </SheetFooter>\\n      </SheetContent>\\n    </Sheet>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sheet-side.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-side\",\n  \"registryDependencies\": [\n    \"sheet\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/sheet-side.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sheet\\\"\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\ntype SheetSide = (typeof SHEET_SIDES)[number]\\n\\nexport default function SheetSide() {\\n  return (\\n    <div className=\\\"grid grid-cols-2 gap-2\\\">\\n      {SHEET_SIDES.map((side) => (\\n        <Sheet key={side}>\\n          <SheetTrigger asChild>\\n            <Button variant=\\\"outline\\\">{side}</Button>\\n          </SheetTrigger>\\n          <SheetContent side={side}>\\n            <SheetHeader>\\n              <SheetTitle>Edit profile</SheetTitle>\\n              <SheetDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done.\\n              </SheetDescription>\\n            </SheetHeader>\\n            <div className=\\\"grid gap-4 py-4\\\">\\n              <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"text-right\\\">\\n                  Name\\n                </Label>\\n                <Input id=\\\"name\\\" value=\\\"Pedro Duarte\\\" className=\\\"col-span-3\\\" />\\n              </div>\\n              <div className=\\\"grid grid-cols-4 items-center gap-4\\\">\\n                <Label htmlFor=\\\"username\\\" className=\\\"text-right\\\">\\n                  Username\\n                </Label>\\n                <Input id=\\\"username\\\" value=\\\"@peduarte\\\" className=\\\"col-span-3\\\" />\\n              </div>\\n            </div>\\n            <SheetFooter>\\n              <SheetClose asChild>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n              </SheetClose>\\n            </SheetFooter>\\n          </SheetContent>\\n        </Sheet>\\n      ))}\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\\n  return (\\n    <SheetPrimitive.Overlay\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:animate-in data-[state=open]:duration-500\\\",\\n          side === \\\"right\\\" &&\\n            \\\"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\\\",\\n          side === \\\"left\\\" &&\\n            \\\"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\\\",\\n          side === \\\"top\\\" &&\\n            \\\"inset-x-0 top-0 h-auto border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\\\",\\n          side === \\\"bottom\\\" &&\\n            \\\"inset-x-0 bottom-0 h-auto border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close className=\\\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary\\\">\\n            <XIcon className=\\\"size-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Content>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-1.5 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\\"font-semibold text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/new-york-v4/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/new-york-v4/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {/* We create a SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild isActive={item.isActive}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <GalleryVerticalEnd className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && <Check className=\\\"ml-auto\\\" />}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/new-york-v4/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/new-york-v4/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {item.title}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Check, ChevronsUpDown, GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <GalleryVerticalEnd className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && <Check className=\\\"ml-auto\\\" />}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd, Minus, Plus } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/new-york-v4/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuButton>\\n                      {item.title}{\\\" \\\"}\\n                      <Plus className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\" />\\n                      <Minus className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\" />\\n                    </SidebarMenuButton>\\n                  </CollapsibleTrigger>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              asChild\\n                              isActive={item.isActive}\\n                            >\\n                              <a href={item.url}>{item.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <Search className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\" />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york-v4/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/new-york-v4/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <GalleryVerticalEnd className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { MoreHorizontal, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                  {item.title} <MoreHorizontal className=\\\"ml-auto\\\" />\\n                </SidebarMenuButton>\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem asChild key={item.title}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button\\n              className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\"\\n              size=\\\"sm\\\"\\n            >\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  GalleryVerticalEnd,\\n  Map,\\n  PieChart,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york-v4/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/new-york-v4/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/new-york-v4/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/new-york-v4/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: GalleryVerticalEnd,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon && <item.icon />}\\n                  <span>{item.title}</span>\\n                  <ChevronRight className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  Forward,\\n  MoreHorizontal,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Forward className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal className=\\\"text-sidebar-foreground/70\\\" />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronsUpDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                  <team.logo className=\\\"size-3.5 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york-v4/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/new-york-v4/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york-v4/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/new-york-v4/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <Command className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <ChevronRight />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  MoreHorizontal,\\n  Share,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Share className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ArchiveX, Command, File, Inbox, Send, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { NavUser } from \\\"@/registry/new-york-v4/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: File,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: ArchiveX,\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <Command className=\\\"size-4\\\" />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      <item.icon />\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/new-york-v4/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  Blocks,\\n  Calendar,\\n  Command,\\n  Home,\\n  Inbox,\\n  MessageCircleQuestion,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/new-york-v4/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/new-york-v4/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york-v4/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/new-york-v4/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/new-york-v4/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: Calendar,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  ArrowDown,\\n  ArrowUp,\\n  Bell,\\n  Copy,\\n  CornerUpLeft,\\n  CornerUpRight,\\n  FileText,\\n  GalleryVerticalEnd,\\n  LineChart,\\n  Link,\\n  MoreHorizontal,\\n  Settings2,\\n  Star,\\n  Trash,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/new-york-v4/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: FileText,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: Link,\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: Copy,\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: CornerUpRight,\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: Trash2,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: CornerUpLeft,\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: LineChart,\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: GalleryVerticalEnd,\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: Trash,\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: Bell,\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: ArrowUp,\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: ArrowDown,\\n    },\\n  ],\\n]\\n\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <Star />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <MoreHorizontal />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            <item.icon /> <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  ArrowUpRight,\\n  Link,\\n  MoreHorizontal,\\n  StarOff,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"import { ChevronRight, MoreHorizontal, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { ChevronRight, File, Folder } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <File />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\ntype TreeItem = string | TreeItem[]\\n\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <File />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <ChevronRight className=\\\"transition-transform\\\" />\\n            <Folder />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Plus } from \\\"lucide-react\\\"\\n\\nimport { Calendars } from \\\"@/registry/new-york-v4/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/new-york-v4/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/new-york-v4/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Check, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell]]:w-[33px] [&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/new-york-v4/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Bell,\\n  Check,\\n  Globe,\\n  Home,\\n  Keyboard,\\n  Link,\\n  Lock,\\n  Menu,\\n  MessageCircle,\\n  Paintbrush,\\n  Settings,\\n  Video,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst data = {\\n  nav: [\\n    { name: \\\"Notifications\\\", icon: Bell },\\n    { name: \\\"Navigation\\\", icon: Menu },\\n    { name: \\\"Home\\\", icon: Home },\\n    { name: \\\"Appearance\\\", icon: Paintbrush },\\n    { name: \\\"Messages & media\\\", icon: MessageCircle },\\n    { name: \\\"Language & region\\\", icon: Globe },\\n    { name: \\\"Accessibility\\\", icon: Keyboard },\\n    { name: \\\"Mark as read\\\", icon: Check },\\n    { name: \\\"Audio & video\\\", icon: Video },\\n    { name: \\\"Connected accounts\\\", icon: Link },\\n    { name: \\\"Privacy & visibility\\\", icon: Lock },\\n    { name: \\\"Advanced\\\", icon: Settings },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            <item.icon />\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-[orientation=vertical]:h-4\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Check, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name} className=\\\"py-0\\\">\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <ChevronRight className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <Check className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\" />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import { Calendar } from \\\"@/registry/new-york-v4/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar className=\\\"[&_[role=gridcell]]:w-[33px] [&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground\\\" />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  ArrowUpRight,\\n  Link,\\n  MoreHorizontal,\\n  StarOff,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <StarOff className=\\\"text-muted-foreground\\\" />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Link className=\\\"text-muted-foreground\\\" />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <ArrowUpRight className=\\\"text-muted-foreground\\\" />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              <item.icon />\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"import React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"import { ChevronRight, MoreHorizontal, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <ChevronRight />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <Plus />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <MoreHorizontal />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  AudioWaveform,\\n  Blocks,\\n  Calendar,\\n  Command,\\n  Home,\\n  Inbox,\\n  MessageCircleQuestion,\\n  Search,\\n  Settings2,\\n  Sparkles,\\n  Trash2,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: Command,\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: AudioWaveform,\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: Command,\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: Search,\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: Sparkles,\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: Home,\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: Inbox,\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: Calendar,\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: Blocks,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: Trash2,\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: MessageCircleQuestion,\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Plus } from \\\"lucide-react\\\"\\n\\nimport { Calendars } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/new-york-v4/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <Plus />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Plus } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ElementType\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <activeTeam.logo className=\\\"size-3\\\" />\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <ChevronDown className=\\\"opacity-50\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  <team.logo className=\\\"size-4 shrink-0\\\" />\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <Plus className=\\\"size-4\\\" />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/new-york-v4/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/new-york-v4/blocks/sidebar-16/components/site-header\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  BookOpen,\\n  Bot,\\n  Command,\\n  Frame,\\n  LifeBuoy,\\n  Map,\\n  PieChart,\\n  Send,\\n  Settings2,\\n  SquareTerminal,\\n} from \\\"lucide-react\\\"\\n\\nimport { NavMain } from \\\"@/registry/new-york-v4/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/new-york-v4/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/new-york-v4/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/new-york-v4/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: SquareTerminal,\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: Bot,\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: BookOpen,\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: Settings2,\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: LifeBuoy,\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: Send,\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: Frame,\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: PieChart,\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: Map,\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <Command className=\\\"size-4\\\" />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRight, type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <ChevronRight />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Folder,\\n  MoreHorizontal,\\n  Share,\\n  Trash2,\\n  type LucideIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                <item.icon />\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction showOnHover>\\n                  <MoreHorizontal />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <Folder className=\\\"text-muted-foreground\\\" />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <Share className=\\\"text-muted-foreground\\\" />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <Trash2 className=\\\"text-muted-foreground\\\" />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <MoreHorizontal />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { type LucideIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: LucideIcon\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  <item.icon />\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  BadgeCheck,\\n  Bell,\\n  ChevronsUpDown,\\n  CreditCard,\\n  LogOut,\\n  Sparkles,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/new-york-v4/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <ChevronsUpDown className=\\\"ml-auto size-4\\\" />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <Sparkles />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <BadgeCheck />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <CreditCard />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <Bell />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <LogOut />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"import { Search } from \\\"lucide-react\\\"\\n\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <Search className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\" />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SidebarIcon } from \\\"lucide-react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/new-york-v4/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/new-york-v4/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <SidebarIcon />\\n        </Button>\\n        <Separator orientation=\\\"vertical\\\" className=\\\"mr-2 h-4\\\" />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-controlled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-controlled\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-controlled.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  FrameIcon,\\n  LifeBuoyIcon,\\n  MapIcon,\\n  PanelLeftCloseIcon,\\n  PanelLeftOpenIcon,\\n  PieChartIcon,\\n  SendIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: FrameIcon,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChartIcon,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: MapIcon,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoyIcon,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: SendIcon,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <SidebarProvider open={open} onOpenChange={setOpen}>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-12 items-center justify-between px-4\\\">\\n          <Button\\n            onClick={() => setOpen((open) => !open)}\\n            size=\\\"sm\\\"\\n            variant=\\\"ghost\\\"\\n          >\\n            {open ? <PanelLeftCloseIcon /> : <PanelLeftOpenIcon />}\\n            <span>{open ? \\\"Close\\\" : \\\"Open\\\"} Sidebar</span>\\n          </Button>\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-demo\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  CalendarIcon,\\n  HomeIcon,\\n  InboxIcon,\\n  SearchIcon,\\n  SettingsIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\n// Menu items.\\nconst items = [\\n  {\\n    title: \\\"Home\\\",\\n    url: \\\"#\\\",\\n    icon: HomeIcon,\\n  },\\n  {\\n    title: \\\"Inbox\\\",\\n    url: \\\"#\\\",\\n    icon: InboxIcon,\\n  },\\n  {\\n    title: \\\"Calendar\\\",\\n    url: \\\"#\\\",\\n    icon: CalendarIcon,\\n  },\\n  {\\n    title: \\\"Search\\\",\\n    url: \\\"#\\\",\\n    icon: SearchIcon,\\n  },\\n  {\\n    title: \\\"Settings\\\",\\n    url: \\\"#\\\",\\n    icon: SettingsIcon,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Application</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={item.url}>\\n                        <item.icon />\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-12 items-center justify-between px-4\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-footer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-footer\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-footer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronUpIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader />\\n        <SidebarContent />\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                    Username\\n                    <ChevronUpIcon className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  side=\\\"top\\\"\\n                  className=\\\"w-(--radix-popper-anchor-width)\\\"\\n                >\\n                  <DropdownMenuItem>\\n                    <span>Account</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Billing</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Sign out</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-12 items-center justify-between px-4\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-group-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group-action\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-group-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { FrameIcon, MapIcon, PieChartIcon, PlusIcon } from \\\"lucide-react\\\"\\nimport { toast, Toaster } from \\\"sonner\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Toaster\\n        position=\\\"bottom-left\\\"\\n        toastOptions={{\\n          className: \\\"ml-[160px]\\\",\\n        }}\\n      />\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupAction\\n              title=\\\"Add Project\\\"\\n              onClick={() => toast(\\\"You clicked the group action!\\\")}\\n            >\\n              <PlusIcon /> <span className=\\\"sr-only\\\">Add Project</span>\\n            </SidebarGroupAction>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <FrameIcon />\\n                      <span>Design Engineering</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <PieChartIcon />\\n                      <span>Sales & Marketing</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton asChild>\\n                    <a href=\\\"#\\\">\\n                      <MapIcon />\\n                      <span>Travel</span>\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-group-collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group-collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-group-collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDownIcon, LifeBuoyIcon, SendIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <Collapsible defaultOpen className=\\\"group/collapsible\\\">\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  Help\\n                  <ChevronDownIcon className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-180\\\" />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    <SidebarMenuItem>\\n                      <SidebarMenuButton>\\n                        <LifeBuoyIcon />\\n                        Support\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                    <SidebarMenuItem>\\n                      <SidebarMenuButton>\\n                        <SendIcon />\\n                        Feedback\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LifeBuoyIcon, SendIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Help</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton>\\n                    <LifeBuoyIcon />\\n                    Support\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n                <SidebarMenuItem>\\n                  <SidebarMenuButton>\\n                    <SendIcon />\\n                    Feedback\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-header.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-header\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                    Select Workspace\\n                    <ChevronDownIcon className=\\\"ml-auto\\\" />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent className=\\\"w-(--radix-popper-anchor-width)\\\">\\n                  <DropdownMenuItem>\\n                    <span>Acme Inc</span>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <span>Acme Corp.</span>\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-12 items-center justify-between px-4\\\">\\n          <SidebarTrigger />\\n        </header>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-menu-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-action\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-menu-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  FrameIcon,\\n  LifeBuoyIcon,\\n  MapIcon,\\n  MoreHorizontalIcon,\\n  PieChartIcon,\\n  SendIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/new-york-v4/ui/dropdown-menu\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: FrameIcon,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChartIcon,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: MapIcon,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoyIcon,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: SendIcon,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton\\n                      asChild\\n                      className=\\\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\\\"\\n                    >\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <DropdownMenu>\\n                      <DropdownMenuTrigger asChild>\\n                        <SidebarMenuAction>\\n                          <MoreHorizontalIcon />\\n                          <span className=\\\"sr-only\\\">More</span>\\n                        </SidebarMenuAction>\\n                      </DropdownMenuTrigger>\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuItem>\\n                          <span>Edit Project</span>\\n                        </DropdownMenuItem>\\n                        <DropdownMenuItem>\\n                          <span>Delete Project</span>\\n                        </DropdownMenuItem>\\n                      </DropdownMenuContent>\\n                    </DropdownMenu>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-menu-badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-menu-badge.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  FrameIcon,\\n  LifeBuoyIcon,\\n  MapIcon,\\n  PieChartIcon,\\n  SendIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: FrameIcon,\\n    badge: \\\"24\\\",\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChartIcon,\\n    badge: \\\"12\\\",\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: MapIcon,\\n    badge: \\\"3\\\",\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoyIcon,\\n    badge: \\\"21\\\",\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: SendIcon,\\n    badge: \\\"8\\\",\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton\\n                      asChild\\n                      className=\\\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\\\"\\n                    >\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <SidebarMenuBadge>{project.badge}</SidebarMenuBadge>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-menu-collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-menu-collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ChevronRightIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/new-york-v4/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst items = [\\n  {\\n    title: \\\"Getting Started\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Installation\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Project Structure\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Build Your Application\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Routing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Data Fetching\\\",\\n        url: \\\"#\\\",\\n        isActive: true,\\n      },\\n      {\\n        title: \\\"Rendering\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Caching\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Styling\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Optimizing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Configuring\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Testing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Authentication\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Deploying\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Upgrading\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Examples\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"API Reference\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Components\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"File Conventions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Functions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"next.config.js Options\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"CLI\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Edge Runtime\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Architecture\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Accessibility\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Fast Refresh\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Next.js Compiler\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Supported Browsers\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Turbopack\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item, index) => (\\n                  <Collapsible\\n                    key={index}\\n                    className=\\\"group/collapsible\\\"\\n                    defaultOpen={index === 0}\\n                  >\\n                    <SidebarMenuItem>\\n                      <CollapsibleTrigger asChild>\\n                        <SidebarMenuButton>\\n                          <span>{item.title}</span>\\n                          <ChevronRightIcon className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\" />\\n                        </SidebarMenuButton>\\n                      </CollapsibleTrigger>\\n                      <CollapsibleContent>\\n                        <SidebarMenuSub>\\n                          {item.items.map((subItem, subIndex) => (\\n                            <SidebarMenuSubItem key={subIndex}>\\n                              <SidebarMenuSubButton asChild>\\n                                <a href={subItem.url}>\\n                                  <span>{subItem.title}</span>\\n                                </a>\\n                              </SidebarMenuSubButton>\\n                            </SidebarMenuSubItem>\\n                          ))}\\n                        </SidebarMenuSub>\\n                      </CollapsibleContent>\\n                    </SidebarMenuItem>\\n                  </Collapsible>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-menu-sub.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu-sub\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-menu-sub.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst items = [\\n  {\\n    title: \\\"Getting Started\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Installation\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Project Structure\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Build Your Application\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Routing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Data Fetching\\\",\\n        url: \\\"#\\\",\\n        isActive: true,\\n      },\\n      {\\n        title: \\\"Rendering\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Caching\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Styling\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Optimizing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Configuring\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Testing\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Authentication\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Deploying\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Upgrading\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Examples\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"API Reference\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Components\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"File Conventions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Functions\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"next.config.js Options\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"CLI\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Edge Runtime\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n  {\\n    title: \\\"Architecture\\\",\\n    url: \\\"#\\\",\\n    items: [\\n      {\\n        title: \\\"Accessibility\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Fast Refresh\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Next.js Compiler\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Supported Browsers\\\",\\n        url: \\\"#\\\",\\n      },\\n      {\\n        title: \\\"Turbopack\\\",\\n        url: \\\"#\\\",\\n      },\\n    ],\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {items.map((item, index) => (\\n                  <SidebarMenuItem key={index}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={item.url}>\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    <SidebarMenuSub>\\n                      {item.items.map((subItem, subIndex) => (\\n                        <SidebarMenuSubItem key={subIndex}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  FrameIcon,\\n  LifeBuoyIcon,\\n  MapIcon,\\n  PieChartIcon,\\n  SendIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: FrameIcon,\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChartIcon,\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: MapIcon,\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoyIcon,\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: SendIcon,\\n  },\\n]\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {projects.map((project) => (\\n                  <SidebarMenuItem key={project.name}>\\n                    <SidebarMenuButton asChild>\\n                      <a href={project.url}>\\n                        <project.icon />\\n                        <span>{project.name}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar-rsc.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-rsc\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/internal/sidebar-rsc.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport {\\n  FrameIcon,\\n  LifeBuoyIcon,\\n  MapIcon,\\n  PieChartIcon,\\n  SendIcon,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarProvider,\\n} from \\\"@/registry/new-york-v4/ui/sidebar\\\"\\n\\nconst projects = [\\n  {\\n    name: \\\"Design Engineering\\\",\\n    url: \\\"#\\\",\\n    icon: FrameIcon,\\n    badge: \\\"24\\\",\\n  },\\n  {\\n    name: \\\"Sales & Marketing\\\",\\n    url: \\\"#\\\",\\n    icon: PieChartIcon,\\n    badge: \\\"12\\\",\\n  },\\n  {\\n    name: \\\"Travel\\\",\\n    url: \\\"#\\\",\\n    icon: MapIcon,\\n    badge: \\\"3\\\",\\n  },\\n  {\\n    name: \\\"Support\\\",\\n    url: \\\"#\\\",\\n    icon: LifeBuoyIcon,\\n    badge: \\\"21\\\",\\n  },\\n  {\\n    name: \\\"Feedback\\\",\\n    url: \\\"#\\\",\\n    icon: SendIcon,\\n    badge: \\\"8\\\",\\n  },\\n]\\n\\n// Dummy fetch function\\nasync function fetchProjects() {\\n  await new Promise((resolve) => setTimeout(resolve, 3000))\\n  return projects\\n}\\n\\nexport default function AppSidebar() {\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <React.Suspense fallback={<NavProjectsSkeleton />}>\\n                <NavProjects />\\n              </React.Suspense>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </SidebarProvider>\\n  )\\n}\\n\\nfunction NavProjectsSkeleton() {\\n  return (\\n    <SidebarMenu>\\n      {Array.from({ length: 5 }).map((_, index) => (\\n        <SidebarMenuItem key={index}>\\n          <SidebarMenuSkeleton showIcon />\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\\nasync function NavProjects() {\\n  const projects = await fetchProjects()\\n\\n  return (\\n    <SidebarMenu>\\n      {projects.map((project) => (\\n        <SidebarMenuItem key={project.name}>\\n          <SidebarMenuButton asChild>\\n            <a href={project.url}>\\n              <project.icon />\\n              <span>{project.name}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:internal\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"dependencies\": [\n    \"radix-ui\",\n    \"class-variance-authority\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"tooltip\",\n    \"input\",\n    \"use-mobile\",\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { PanelLeftIcon } from \\\"lucide-react\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/new-york-v4/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Separator } from \\\"@/registry/new-york-v4/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/new-york-v4/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/new-york-v4/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tooltip\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <TooltipProvider delayDuration={0}>\\n        <div\\n          data-slot=\\\"sidebar-wrapper\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n              \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n              ...style,\\n            } as React.CSSProperties\\n          }\\n          className={cn(\\n            \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n            className\\n          )}\\n          {...props}\\n        >\\n          {children}\\n        </div>\\n      </TooltipProvider>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\\\",\\n          side === \\\"left\\\"\\n            ? \\\"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\\\"\\n            : \\\"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className={cn(\\\"size-7\\\", className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <PanelLeftIcon />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background\\\",\\n        \\\"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        \\\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        // Increases the hit area of the button on mobile.\\n        \\\"after:absolute after:-inset-2 md:after:hidden\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-sm\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-sm group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  asChild = false,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  isActive?: boolean\\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n  const { isMobile, state } = useSidebar()\\n\\n  const button = (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-button\\\"\\n      data-sidebar=\\\"menu-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\\n      {...props}\\n    />\\n  )\\n\\n  if (!tooltip) {\\n    return button\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  asChild = false,\\n  showOnHover = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  showOnHover?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        // Increases the hit area of the button on mobile.\\n        \\\"after:absolute after:-inset-2 md:after:hidden\\\",\\n        \\\"peer-data-[size=sm]/menu-button:top-1\\\",\\n        \\\"peer-data-[size=default]/menu-button:top-1.5\\\",\\n        \\\"peer-data-[size=lg]/menu-button:top-2.5\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        showOnHover &&\\n          \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100 md:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none\\\",\\n        \\\"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\\\",\\n        \\\"peer-data-[size=sm]/menu-button:top-1\\\",\\n        \\\"peer-data-[size=default]/menu-button:top-1.5\\\",\\n        \\\"peer-data-[size=lg]/menu-button:top-2.5\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const width = React.useMemo(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  }, [])\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  asChild = false,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n  size?: \\\"sm\\\" | \\\"md\\\"\\n  isActive?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-sub-button\\\"\\n      data-sidebar=\\\"menu-sub-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(\\n        \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n        \\\"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\\\",\\n        size === \\\"sm\\\" && \\\"text-xs\\\",\\n        size === \\\"md\\\" && \\\"text-sm\\\",\\n        \\\"group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"tailwind\": {\n    \"config\": {\n      \"theme\": {\n        \"extend\": {\n          \"colors\": {\n            \"sidebar\": {\n              \"DEFAULT\": \"hsl(var(--sidebar-background))\",\n              \"foreground\": \"hsl(var(--sidebar-foreground))\",\n              \"primary\": \"hsl(var(--sidebar-primary))\",\n              \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n              \"accent\": \"hsl(var(--sidebar-accent))\",\n              \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n              \"border\": \"hsl(var(--sidebar-border))\",\n              \"ring\": \"hsl(var(--sidebar-ring))\"\n            }\n          }\n        }\n      }\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"sidebar-background\": \"0 0% 98%\",\n      \"sidebar-foreground\": \"240 5.3% 26.1%\",\n      \"sidebar-primary\": \"240 5.9% 10%\",\n      \"sidebar-primary-foreground\": \"0 0% 98%\",\n      \"sidebar-accent\": \"240 4.8% 95.9%\",\n      \"sidebar-accent-foreground\": \"240 5.9% 10%\",\n      \"sidebar-border\": \"220 13% 91%\",\n      \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n    },\n    \"dark\": {\n      \"sidebar-background\": \"240 5.9% 10%\",\n      \"sidebar-foreground\": \"240 4.8% 95.9%\",\n      \"sidebar-primary\": \"224.3 76.3% 48%\",\n      \"sidebar-primary-foreground\": \"0 0% 100%\",\n      \"sidebar-accent\": \"240 3.7% 15.9%\",\n      \"sidebar-accent-foreground\": \"240 4.8% 95.9%\",\n      \"sidebar-border\": \"240 3.7% 15.9%\",\n      \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/new-york-v4/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-02/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { SignupForm } from \\\"@/registry/new-york-v4/blocks/signup-02/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <GalleryVerticalEnd className=\\\"size-4\\\" />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"m@example.com\\\" required />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-03/page.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { SignupForm } from \\\"@/registry/new-york-v4/blocks/signup-03/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <GalleryVerticalEnd className=\\\"size-4\\\" />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/new-york-v4/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/new-york-v4/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/new-york-v4/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"import { GalleryVerticalEnd } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/registry/new-york-v4/lib/utils\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/new-york-v4/ui/field\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <GalleryVerticalEnd className=\\\"size-6\\\" />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/skeleton-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-card\",\n  \"registryDependencies\": [\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/skeleton-card.tsx\",\n      \"content\": \"import { Skeleton } from \\\"@/registry/new-york-v4/ui/skeleton\\\"\\n\\nexport default function SkeletonCard() {\\n  return (\\n    <div className=\\\"flex flex-col space-y-3\\\">\\n      <Skeleton className=\\\"h-[125px] w-[250px] rounded-xl\\\" />\\n      <div className=\\\"space-y-2\\\">\\n        <Skeleton className=\\\"h-4 w-[250px]\\\" />\\n        <Skeleton className=\\\"h-4 w-[200px]\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/skeleton-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-demo\",\n  \"registryDependencies\": [\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/skeleton-demo.tsx\",\n      \"content\": \"import { Skeleton } from \\\"@/registry/new-york-v4/ui/skeleton\\\"\\n\\nexport default function SkeletonDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-4\\\">\\n      <Skeleton className=\\\"h-12 w-12 rounded-full\\\" />\\n      <div className=\\\"space-y-2\\\">\\n        <Skeleton className=\\\"h-4 w-[250px]\\\" />\\n        <Skeleton className=\\\"h-4 w-[200px]\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-md bg-accent\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/slider-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-demo\",\n  \"registryDependencies\": [\n    \"slider\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/slider-demo.tsx\",\n      \"content\": \"import { cn } from \\\"@/lib/utils\\\"\\nimport { Slider } from \\\"@/registry/new-york-v4/ui/slider\\\"\\n\\ntype SliderProps = React.ComponentProps<typeof Slider>\\n\\nexport default function SliderDemo({ className, ...props }: SliderProps) {\\n  return (\\n    <Slider\\n      defaultValue={[50]}\\n      max={100}\\n      step={1}\\n      className={cn(\\\"w-[60%]\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      className={cn(\\n        \\\"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SliderPrimitive.Track\\n        data-slot=\\\"slider-track\\\"\\n        className={cn(\\n          \\\"relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\\\"\\n        )}\\n      >\\n        <SliderPrimitive.Range\\n          data-slot=\\\"slider-range\\\"\\n          className={cn(\\n            \\\"absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\\\"\\n          )}\\n        />\\n      </SliderPrimitive.Track>\\n      {Array.from({ length: _values.length }, (_, index) => (\\n        <SliderPrimitive.Thumb\\n          data-slot=\\\"slider-thumb\\\"\\n          key={index}\\n          className=\\\"block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\\\"\\n        />\\n      ))}\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sonner-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-demo\",\n  \"registryDependencies\": [\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/sonner-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function SonnerDemo() {\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() =>\\n        toast(\\\"Event has been created\\\", {\\n          description: \\\"Sunday, December 03, 2023 at 9:00 AM\\\",\\n          action: {\\n            label: \\\"Undo\\\",\\n            onClick: () => console.log(\\\"Undo\\\"),\\n          },\\n        })\\n      }\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sonner-types.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-types\",\n  \"registryDependencies\": [\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/sonner-types.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function SonnerTypes() {\\n  return (\\n    <div className=\\\"flex flex-wrap gap-2\\\">\\n      <Button variant=\\\"outline\\\" onClick={() => toast(\\\"Event has been created\\\")}>\\n        Default\\n      </Button>\\n      <Button\\n        variant=\\\"outline\\\"\\n        onClick={() => toast.success(\\\"Event has been created\\\")}\\n      >\\n        Success\\n      </Button>\\n      <Button\\n        variant=\\\"outline\\\"\\n        onClick={() =>\\n          toast.info(\\\"Be at the area 10 minutes before the event time\\\")\\n        }\\n      >\\n        Info\\n      </Button>\\n      <Button\\n        variant=\\\"outline\\\"\\n        onClick={() =>\\n          toast.warning(\\\"Event start time cannot be earlier than 8am\\\")\\n        }\\n      >\\n        Warning\\n      </Button>\\n      <Button\\n        variant=\\\"outline\\\"\\n        onClick={() => toast.error(\\\"Event has not been created\\\")}\\n      >\\n        Error\\n      </Button>\\n      <Button\\n        variant=\\\"outline\\\"\\n        onClick={() => {\\n          toast.promise<{ name: string }>(\\n            () =>\\n              new Promise((resolve) =>\\n                setTimeout(() => resolve({ name: \\\"Event\\\" }), 2000)\\n              ),\\n            {\\n              loading: \\\"Loading...\\\",\\n              success: (data) => `${data.name} has been created`,\\n              error: \\\"Error\\\",\\n            }\\n          )\\n        }}\\n      >\\n        Promise\\n      </Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  CircleCheckIcon,\\n  InfoIcon,\\n  Loader2Icon,\\n  OctagonXIcon,\\n  TriangleAlertIcon,\\n} from \\\"lucide-react\\\"\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: <CircleCheckIcon className=\\\"size-4\\\" />,\\n        info: <InfoIcon className=\\\"size-4\\\" />,\\n        warning: <TriangleAlertIcon className=\\\"size-4\\\" />,\\n        error: <OctagonXIcon className=\\\"size-4\\\" />,\\n        loading: <Loader2Icon className=\\\"size-4 animate-spin\\\" />,\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-badge\",\n  \"registryDependencies\": [\n    \"spinner\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-badge.tsx\",\n      \"content\": \"import { Badge } from \\\"@/registry/new-york-v4/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerBadge() {\\n  return (\\n    <div className=\\\"flex items-center gap-4 [--radius:1.2rem]\\\">\\n      <Badge>\\n        <Spinner />\\n        Syncing\\n      </Badge>\\n      <Badge variant=\\\"secondary\\\">\\n        <Spinner />\\n        Updating\\n      </Badge>\\n      <Badge variant=\\\"outline\\\">\\n        <Spinner />\\n        Processing\\n      </Badge>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-basic.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-basic\",\n  \"registryDependencies\": [\n    \"spinner\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-basic.tsx\",\n      \"content\": \"import { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerBasic() {\\n  return (\\n    <div className=\\\"flex flex-col items-center justify-center gap-8\\\">\\n      <Spinner />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-button\",\n  \"registryDependencies\": [\n    \"spinner\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerButton() {\\n  return (\\n    <div className=\\\"flex flex-col items-center gap-4\\\">\\n      <Button disabled size=\\\"sm\\\">\\n        <Spinner />\\n        Loading...\\n      </Button>\\n      <Button variant=\\\"outline\\\" disabled size=\\\"sm\\\">\\n        <Spinner />\\n        Please wait\\n      </Button>\\n      <Button variant=\\\"secondary\\\" disabled size=\\\"sm\\\">\\n        <Spinner />\\n        Processing\\n      </Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-color.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-color\",\n  \"registryDependencies\": [\n    \"spinner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-color.tsx\",\n      \"content\": \"import { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerColor() {\\n  return (\\n    <div className=\\\"flex items-center gap-6\\\">\\n      <Spinner className=\\\"size-6 text-red-500\\\" />\\n      <Spinner className=\\\"size-6 text-green-500\\\" />\\n      <Spinner className=\\\"size-6 text-blue-500\\\" />\\n      <Spinner className=\\\"size-6 text-yellow-500\\\" />\\n      <Spinner className=\\\"size-6 text-purple-500\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-custom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-custom\",\n  \"registryDependencies\": [\n    \"spinner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-custom.tsx\",\n      \"content\": \"import { LoaderIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <LoaderIcon\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport default function SpinnerCustom() {\\n  return (\\n    <div className=\\\"flex items-center gap-4\\\">\\n      <Spinner />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-demo\",\n  \"registryDependencies\": [\n    \"spinner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-demo.tsx\",\n      \"content\": \"import {\\n  Item,\\n  ItemContent,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerDemo() {\\n  return (\\n    <div className=\\\"flex w-full max-w-xs flex-col gap-4 [--radius:1rem]\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia>\\n          <Spinner />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle className=\\\"line-clamp-1\\\">Processing payment...</ItemTitle>\\n        </ItemContent>\\n        <ItemContent className=\\\"flex-none justify-end\\\">\\n          <span className=\\\"text-sm tabular-nums\\\">$100.00</span>\\n        </ItemContent>\\n      </Item>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-empty\",\n  \"registryDependencies\": [\n    \"spinner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-empty.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/new-york-v4/ui/empty\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerEmpty() {\\n  return (\\n    <Empty className=\\\"w-full\\\">\\n      <EmptyHeader>\\n        <EmptyMedia variant=\\\"icon\\\">\\n          <Spinner />\\n        </EmptyMedia>\\n        <EmptyTitle>Processing your request</EmptyTitle>\\n        <EmptyDescription>\\n          Please wait while we process your request. Do not refresh the page.\\n        </EmptyDescription>\\n      </EmptyHeader>\\n      <EmptyContent>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Cancel\\n        </Button>\\n      </EmptyContent>\\n    </Empty>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-input-group\",\n  \"registryDependencies\": [\n    \"spinner\",\n    \"button\",\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-input-group.tsx\",\n      \"content\": \"import { ArrowUpIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n} from \\\"@/registry/new-york-v4/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerInputGroup() {\\n  return (\\n    <div className=\\\"flex w-full max-w-md flex-col gap-4\\\">\\n      <InputGroup>\\n        <InputGroupInput placeholder=\\\"Send a message...\\\" disabled />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <Spinner />\\n        </InputGroupAddon>\\n      </InputGroup>\\n      <InputGroup>\\n        <InputGroupTextarea placeholder=\\\"Send a message...\\\" disabled />\\n        <InputGroupAddon align=\\\"block-end\\\">\\n          <Spinner /> Validating...\\n          <InputGroupButton className=\\\"ml-auto\\\" variant=\\\"default\\\">\\n            <ArrowUpIcon />\\n            <span className=\\\"sr-only\\\">Send</span>\\n          </InputGroupButton>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-item\",\n  \"registryDependencies\": [\n    \"spinner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-item.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/new-york-v4/ui/item\\\"\\nimport { Progress } from \\\"@/registry/new-york-v4/ui/progress\\\"\\nimport { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerItem() {\\n  return (\\n    <div className=\\\"flex w-full max-w-md flex-col gap-4 [--radius:1rem]\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <Spinner />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Downloading...</ItemTitle>\\n          <ItemDescription>129 MB / 1000 MB</ItemDescription>\\n        </ItemContent>\\n        <ItemActions className=\\\"hidden sm:flex\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n        </ItemActions>\\n        <ItemFooter>\\n          <Progress value={75} />\\n        </ItemFooter>\\n      </Item>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner-size.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-size\",\n  \"registryDependencies\": [\n    \"spinner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/spinner-size.tsx\",\n      \"content\": \"import { Spinner } from \\\"@/registry/new-york-v4/ui/spinner\\\"\\n\\nexport default function SpinnerSize() {\\n  return (\\n    <div className=\\\"flex items-center gap-6\\\">\\n      <Spinner className=\\\"size-3\\\" />\\n      <Spinner className=\\\"size-4\\\" />\\n      <Spinner className=\\\"size-6\\\" />\\n      <Spinner className=\\\"size-8\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"dependencies\": [\n    \"class-variance-authority\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/spinner.tsx\",\n      \"content\": \"import { Loader2Icon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <Loader2Icon\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/switch-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-demo\",\n  \"registryDependencies\": [\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/switch-demo.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\nexport default function SwitchDemo() {\\n  return (\\n    <div className=\\\"flex items-center space-x-2\\\">\\n      <Switch id=\\\"airplane-mode\\\" />\\n      <Label htmlFor=\\\"airplane-mode\\\">Airplane Mode</Label>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/switch-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-form\",\n  \"registryDependencies\": [\n    \"switch\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/switch-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport { Switch } from \\\"@/registry/new-york-v4/ui/switch\\\"\\n\\nconst FormSchema = z.object({\\n  marketing_emails: z.boolean().default(false).optional(),\\n  security_emails: z.boolean(),\\n})\\n\\nexport default function SwitchForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n    defaultValues: {\\n      security_emails: true,\\n    },\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-full space-y-6\\\">\\n        <div>\\n          <h3 className=\\\"mb-4 text-lg font-medium\\\">Email Notifications</h3>\\n          <div className=\\\"space-y-4\\\">\\n            <FormField\\n              control={form.control}\\n              name=\\\"marketing_emails\\\"\\n              render={({ field }) => (\\n                <FormItem className=\\\"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm\\\">\\n                  <div className=\\\"space-y-0.5\\\">\\n                    <FormLabel>Marketing emails</FormLabel>\\n                    <FormDescription>\\n                      Receive emails about new products, features, and more.\\n                    </FormDescription>\\n                  </div>\\n                  <FormControl>\\n                    <Switch\\n                      checked={field.value}\\n                      onCheckedChange={field.onChange}\\n                    />\\n                  </FormControl>\\n                </FormItem>\\n              )}\\n            />\\n            <FormField\\n              control={form.control}\\n              name=\\\"security_emails\\\"\\n              render={({ field }) => (\\n                <FormItem className=\\\"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm\\\">\\n                  <div className=\\\"space-y-0.5\\\">\\n                    <FormLabel>Security emails</FormLabel>\\n                    <FormDescription>\\n                      Receive emails about your account security.\\n                    </FormDescription>\\n                  </div>\\n                  <FormControl>\\n                    <Switch\\n                      checked={field.value}\\n                      onCheckedChange={field.onChange}\\n                      disabled\\n                      aria-readonly\\n                    />\\n                  </FormControl>\\n                </FormItem>\\n              )}\\n            />\\n          </div>\\n        </div>\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Switch as SwitchPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className={cn(\\n          \\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground\\\"\\n        )}\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/table-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-demo\",\n  \"registryDependencies\": [\n    \"table\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/table-demo.tsx\",\n      \"content\": \"import {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/new-york-v4/ui/table\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableDemo() {\\n  return (\\n    <Table>\\n      <TableCaption>A list of your recent invoices.</TableCaption>\\n      <TableHeader>\\n        <TableRow>\\n          <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n          <TableHead>Status</TableHead>\\n          <TableHead>Method</TableHead>\\n          <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n        </TableRow>\\n      </TableHeader>\\n      <TableBody>\\n        {invoices.map((invoice) => (\\n          <TableRow key={invoice.invoice}>\\n            <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n            <TableCell>{invoice.paymentStatus}</TableCell>\\n            <TableCell>{invoice.paymentMethod}</TableCell>\\n            <TableCell className=\\\"text-right\\\">{invoice.totalAmount}</TableCell>\\n          </TableRow>\\n        ))}\\n      </TableBody>\\n      <TableFooter>\\n        <TableRow>\\n          <TableCell colSpan={3}>Total</TableCell>\\n          <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n        </TableRow>\\n      </TableFooter>\\n    </Table>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/tabs-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-demo\",\n  \"registryDependencies\": [\n    \"tabs\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/tabs-demo.tsx\",\n      \"content\": \"import { AppWindowIcon, CodeIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/new-york-v4/ui/card\\\"\\nimport { Input } from \\\"@/registry/new-york-v4/ui/input\\\"\\nimport { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tabs\\\"\\n\\nexport default function TabsDemo() {\\n  return (\\n    <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n        </TabsList>\\n        <TabsContent value=\\\"account\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Account</CardTitle>\\n              <CardDescription>\\n                Make changes to your account here. Click save when you&apos;re\\n                done.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent className=\\\"grid gap-6\\\">\\n              <div className=\\\"grid gap-3\\\">\\n                <Label htmlFor=\\\"tabs-demo-name\\\">Name</Label>\\n                <Input id=\\\"tabs-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </div>\\n              <div className=\\\"grid gap-3\\\">\\n                <Label htmlFor=\\\"tabs-demo-username\\\">Username</Label>\\n                <Input id=\\\"tabs-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </div>\\n            </CardContent>\\n            <CardFooter>\\n              <Button>Save changes</Button>\\n            </CardFooter>\\n          </Card>\\n        </TabsContent>\\n        <TabsContent value=\\\"password\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Password</CardTitle>\\n              <CardDescription>\\n                Change your password here. After saving, you&apos;ll be logged\\n                out.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent className=\\\"grid gap-6\\\">\\n              <div className=\\\"grid gap-3\\\">\\n                <Label htmlFor=\\\"tabs-demo-current\\\">Current password</Label>\\n                <Input id=\\\"tabs-demo-current\\\" type=\\\"password\\\" />\\n              </div>\\n              <div className=\\\"grid gap-3\\\">\\n                <Label htmlFor=\\\"tabs-demo-new\\\">New password</Label>\\n                <Input id=\\\"tabs-demo-new\\\" type=\\\"password\\\" />\\n              </div>\\n            </CardContent>\\n            <CardFooter>\\n              <Button>Save password</Button>\\n            </CardFooter>\\n          </Card>\\n        </TabsContent>\\n      </Tabs>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Tabs as TabsPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-[orientation=horizontal]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List> &\\n  VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\\n  return (\\n    <TabsPrimitive.Trigger\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent\\\",\\n        \\\"data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\\n  return (\\n    <TabsPrimitive.Content\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/textarea-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-demo\",\n  \"registryDependencies\": [\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/textarea-demo.tsx\",\n      \"content\": \"import { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function TextareaDemo() {\\n  return <Textarea placeholder=\\\"Type your message here.\\\" />\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/textarea-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-disabled\",\n  \"registryDependencies\": [\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/textarea-disabled.tsx\",\n      \"content\": \"import { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function TextareaDisabled() {\\n  return <Textarea placeholder=\\\"Type your message here.\\\" disabled />\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/textarea-form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-form\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"form\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/textarea-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { zodResolver } from \\\"@hookform/resolvers/zod\\\"\\nimport { useForm } from \\\"react-hook-form\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Form,\\n  FormControl,\\n  FormDescription,\\n  FormField,\\n  FormItem,\\n  FormLabel,\\n  FormMessage,\\n} from \\\"@/registry/new-york-v4/ui/form\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nconst FormSchema = z.object({\\n  bio: z\\n    .string()\\n    .min(10, {\\n      message: \\\"Bio must be at least 10 characters.\\\",\\n    })\\n    .max(160, {\\n      message: \\\"Bio must not be longer than 30 characters.\\\",\\n    }),\\n})\\n\\nexport default function TextareaForm() {\\n  const form = useForm<z.infer<typeof FormSchema>>({\\n    resolver: zodResolver(FormSchema),\\n  })\\n\\n  function onSubmit(data: z.infer<typeof FormSchema>) {\\n    toast(\\\"You submitted the following values\\\", {\\n      description: (\\n        <pre className=\\\"mt-2 w-[320px] rounded-md bg-neutral-950 p-4\\\">\\n          <code className=\\\"text-white\\\">{JSON.stringify(data, null, 2)}</code>\\n        </pre>\\n      ),\\n    })\\n  }\\n\\n  return (\\n    <Form {...form}>\\n      <form onSubmit={form.handleSubmit(onSubmit)} className=\\\"w-2/3 space-y-6\\\">\\n        <FormField\\n          control={form.control}\\n          name=\\\"bio\\\"\\n          render={({ field }) => (\\n            <FormItem>\\n              <FormLabel>Bio</FormLabel>\\n              <FormControl>\\n                <Textarea\\n                  placeholder=\\\"Tell us a little bit about yourself\\\"\\n                  className=\\\"resize-none\\\"\\n                  {...field}\\n                />\\n              </FormControl>\\n              <FormDescription>\\n                You can <span>@mention</span> other users and organizations.\\n              </FormDescription>\\n              <FormMessage />\\n            </FormItem>\\n          )}\\n        />\\n        <Button type=\\\"submit\\\">Submit</Button>\\n      </form>\\n    </Form>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/textarea-with-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-button\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/textarea-with-button.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function TextareaWithButton() {\\n  return (\\n    <div className=\\\"grid w-full gap-2\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n      <Button>Send message</Button>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/textarea-with-label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-label\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/textarea-with-label.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function TextareaWithLabel() {\\n  return (\\n    <div className=\\\"grid w-full gap-3\\\">\\n      <Label htmlFor=\\\"message\\\">Your message</Label>\\n      <Textarea placeholder=\\\"Type your message here.\\\" id=\\\"message\\\" />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/textarea-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-with-text\",\n  \"registryDependencies\": [\n    \"textarea\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/textarea-with-text.tsx\",\n      \"content\": \"import { Label } from \\\"@/registry/new-york-v4/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/new-york-v4/ui/textarea\\\"\\n\\nexport default function TextareaWithText() {\\n  return (\\n    <div className=\\\"grid w-full gap-3\\\">\\n      <Label htmlFor=\\\"message-2\\\">Your Message</Label>\\n      <Textarea placeholder=\\\"Type your message here.\\\" id=\\\"message-2\\\" />\\n      <p className=\\\"text-sm text-muted-foreground\\\">\\n        Your message will be copied to the support team.\\n      </p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/theme-gray.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-gray\",\n  \"dependencies\": [],\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.13 0.028 261.692)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.13 0.028 261.692)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.13 0.028 261.692)\",\n      \"primary\": \"oklch(0.21 0.034 264.665)\",\n      \"primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"secondary\": \"oklch(0.967 0.003 264.542)\",\n      \"secondary-foreground\": \"oklch(0.21 0.034 264.665)\",\n      \"muted\": \"oklch(0.967 0.003 264.542)\",\n      \"muted-foreground\": \"oklch(0.551 0.027 264.364)\",\n      \"accent\": \"oklch(0.967 0.003 264.542)\",\n      \"accent-foreground\": \"oklch(0.21 0.034 264.665)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.928 0.006 264.531)\",\n      \"input\": \"oklch(0.928 0.006 264.531)\",\n      \"ring\": \"oklch(0.707 0.022 261.325)\",\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-foreground\": \"oklch(0.13 0.028 261.692)\",\n      \"sidebar-primary\": \"oklch(0.21 0.034 264.665)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-accent\": \"oklch(0.967 0.003 264.542)\",\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.034 264.665)\",\n      \"sidebar-border\": \"oklch(0.928 0.006 264.531)\",\n      \"sidebar-ring\": \"oklch(0.707 0.022 261.325)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.13 0.028 261.692)\",\n      \"foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"card\": \"oklch(0.21 0.034 264.665)\",\n      \"card-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"popover\": \"oklch(0.21 0.034 264.665)\",\n      \"popover-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"primary\": \"oklch(0.928 0.006 264.531)\",\n      \"primary-foreground\": \"oklch(0.21 0.034 264.665)\",\n      \"secondary\": \"oklch(0.278 0.033 256.848)\",\n      \"secondary-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"muted\": \"oklch(0.278 0.033 256.848)\",\n      \"muted-foreground\": \"oklch(0.707 0.022 261.325)\",\n      \"accent\": \"oklch(0.278 0.033 256.848)\",\n      \"accent-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.551 0.027 264.364)\",\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n      \"sidebar\": \"oklch(0.21 0.034 264.665)\",\n      \"sidebar-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-accent\": \"oklch(0.278 0.033 256.848)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0.002 247.839)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\"\n    }\n  },\n  \"type\": \"registry:theme\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/theme-neutral.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-neutral\",\n  \"dependencies\": [],\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.145 0 0)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.145 0 0)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.145 0 0)\",\n      \"primary\": \"oklch(0.205 0 0)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.97 0 0)\",\n      \"secondary-foreground\": \"oklch(0.205 0 0)\",\n      \"muted\": \"oklch(0.97 0 0)\",\n      \"muted-foreground\": \"oklch(0.556 0 0)\",\n      \"accent\": \"oklch(0.97 0 0)\",\n      \"accent-foreground\": \"oklch(0.205 0 0)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.922 0 0)\",\n      \"input\": \"oklch(0.922 0 0)\",\n      \"ring\": \"oklch(0.708 0 0)\",\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.145 0 0)\",\n      \"sidebar-primary\": \"oklch(0.205 0 0)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.97 0 0)\",\n      \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\",\n      \"sidebar-border\": \"oklch(0.922 0 0)\",\n      \"sidebar-ring\": \"oklch(0.708 0 0)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.145 0 0)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.205 0 0)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.205 0 0)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.922 0 0)\",\n      \"primary-foreground\": \"oklch(0.205 0 0)\",\n      \"secondary\": \"oklch(0.269 0 0)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.269 0 0)\",\n      \"muted-foreground\": \"oklch(0.708 0 0)\",\n      \"accent\": \"oklch(0.269 0 0)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.556 0 0)\",\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n      \"sidebar\": \"oklch(0.205 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.269 0 0)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.556 0 0)\"\n    }\n  },\n  \"type\": \"registry:theme\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/theme-slate.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-slate\",\n  \"dependencies\": [],\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.129 0.042 264.695)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.129 0.042 264.695)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.129 0.042 264.695)\",\n      \"primary\": \"oklch(0.208 0.042 265.755)\",\n      \"primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"secondary\": \"oklch(0.968 0.007 247.896)\",\n      \"secondary-foreground\": \"oklch(0.208 0.042 265.755)\",\n      \"muted\": \"oklch(0.968 0.007 247.896)\",\n      \"muted-foreground\": \"oklch(0.554 0.046 257.417)\",\n      \"accent\": \"oklch(0.968 0.007 247.896)\",\n      \"accent-foreground\": \"oklch(0.208 0.042 265.755)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.929 0.013 255.508)\",\n      \"input\": \"oklch(0.929 0.013 255.508)\",\n      \"ring\": \"oklch(0.704 0.04 256.788)\",\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-foreground\": \"oklch(0.129 0.042 264.695)\",\n      \"sidebar-primary\": \"oklch(0.208 0.042 265.755)\",\n      \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-accent\": \"oklch(0.968 0.007 247.896)\",\n      \"sidebar-accent-foreground\": \"oklch(0.208 0.042 265.755)\",\n      \"sidebar-border\": \"oklch(0.929 0.013 255.508)\",\n      \"sidebar-ring\": \"oklch(0.704 0.04 256.788)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.129 0.042 264.695)\",\n      \"foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"card\": \"oklch(0.208 0.042 265.755)\",\n      \"card-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"popover\": \"oklch(0.208 0.042 265.755)\",\n      \"popover-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"primary\": \"oklch(0.929 0.013 255.508)\",\n      \"primary-foreground\": \"oklch(0.208 0.042 265.755)\",\n      \"secondary\": \"oklch(0.279 0.041 260.031)\",\n      \"secondary-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"muted\": \"oklch(0.279 0.041 260.031)\",\n      \"muted-foreground\": \"oklch(0.704 0.04 256.788)\",\n      \"accent\": \"oklch(0.279 0.041 260.031)\",\n      \"accent-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.551 0.027 264.364)\",\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n      \"sidebar\": \"oklch(0.208 0.042 265.755)\",\n      \"sidebar-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-accent\": \"oklch(0.279 0.041 260.031)\",\n      \"sidebar-accent-foreground\": \"oklch(0.984 0.003 247.858)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\"\n    }\n  },\n  \"type\": \"registry:theme\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/theme-stone.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-stone\",\n  \"dependencies\": [],\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"primary\": \"oklch(0.216 0.006 56.043)\",\n      \"primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"secondary\": \"oklch(0.97 0.001 106.424)\",\n      \"secondary-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"muted\": \"oklch(0.97 0.001 106.424)\",\n      \"muted-foreground\": \"oklch(0.553 0.013 58.071)\",\n      \"accent\": \"oklch(0.97 0.001 106.424)\",\n      \"accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.923 0.003 48.717)\",\n      \"input\": \"oklch(0.923 0.003 48.717)\",\n      \"ring\": \"oklch(0.709 0.01 56.259)\",\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-foreground\": \"oklch(0.147 0.004 49.25)\",\n      \"sidebar-primary\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-accent\": \"oklch(0.97 0.001 106.424)\",\n      \"sidebar-accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-border\": \"oklch(0.923 0.003 48.717)\",\n      \"sidebar-ring\": \"oklch(0.709 0.01 56.259)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.147 0.004 49.25)\",\n      \"foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"card\": \"oklch(0.216 0.006 56.043)\",\n      \"card-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"popover\": \"oklch(0.216 0.006 56.043)\",\n      \"popover-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"primary\": \"oklch(0.923 0.003 48.717)\",\n      \"primary-foreground\": \"oklch(0.216 0.006 56.043)\",\n      \"secondary\": \"oklch(0.268 0.007 34.298)\",\n      \"secondary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"muted\": \"oklch(0.268 0.007 34.298)\",\n      \"muted-foreground\": \"oklch(0.709 0.01 56.259)\",\n      \"accent\": \"oklch(0.268 0.007 34.298)\",\n      \"accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.553 0.013 58.071)\",\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n      \"sidebar\": \"oklch(0.216 0.006 56.043)\",\n      \"sidebar-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-accent\": \"oklch(0.268 0.007 34.298)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.553 0.013 58.071)\"\n    }\n  },\n  \"type\": \"registry:theme\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/theme-zinc.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"theme-zinc\",\n  \"dependencies\": [],\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"oklch(1 0 0)\",\n      \"foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"card\": \"oklch(1 0 0)\",\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"popover\": \"oklch(1 0 0)\",\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"primary\": \"oklch(0.21 0.006 285.885)\",\n      \"primary-foreground\": \"oklch(0.985 0 0)\",\n      \"secondary\": \"oklch(0.967 0.001 286.375)\",\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"muted\": \"oklch(0.967 0.001 286.375)\",\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\",\n      \"accent\": \"oklch(0.967 0.001 286.375)\",\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"destructive\": \"oklch(0.577 0.245 27.325)\",\n      \"border\": \"oklch(0.92 0.004 286.32)\",\n      \"input\": \"oklch(0.92 0.004 286.32)\",\n      \"ring\": \"oklch(0.705 0.015 286.067)\",\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n      \"radius\": \"0.625rem\",\n      \"sidebar\": \"oklch(0.985 0 0)\",\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\",\n      \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\",\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\",\n      \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\"\n    },\n    \"dark\": {\n      \"background\": \"oklch(0.141 0.005 285.823)\",\n      \"foreground\": \"oklch(0.985 0 0)\",\n      \"card\": \"oklch(0.21 0.006 285.885)\",\n      \"card-foreground\": \"oklch(0.985 0 0)\",\n      \"popover\": \"oklch(0.21 0.006 285.885)\",\n      \"popover-foreground\": \"oklch(0.985 0 0)\",\n      \"primary\": \"oklch(0.92 0.004 286.32)\",\n      \"primary-foreground\": \"oklch(0.21 0.006 285.885)\",\n      \"secondary\": \"oklch(0.274 0.006 286.033)\",\n      \"secondary-foreground\": \"oklch(0.985 0 0)\",\n      \"muted\": \"oklch(0.274 0.006 286.033)\",\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\",\n      \"accent\": \"oklch(0.274 0.006 286.033)\",\n      \"accent-foreground\": \"oklch(0.985 0 0)\",\n      \"destructive\": \"oklch(0.704 0.191 22.216)\",\n      \"border\": \"oklch(1 0 0 / 10%)\",\n      \"input\": \"oklch(1 0 0 / 15%)\",\n      \"ring\": \"oklch(0.552 0.016 285.938)\",\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n      \"sidebar\": \"oklch(0.21 0.006 285.885)\",\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\",\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n      \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\"\n    }\n  },\n  \"type\": \"registry:theme\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toast-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-demo\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toast-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york-v4/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/new-york-v4/ui/toast\\\"\\n\\nexport default function ToastDemo() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Scheduled: Catch up \\\",\\n          description: \\\"Friday, February 10, 2023 at 5:57 PM\\\",\\n          action: (\\n            <ToastAction altText=\\\"Goto schedule to undo\\\">Undo</ToastAction>\\n          ),\\n        })\\n      }}\\n    >\\n      Add to calendar\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toast-destructive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-destructive\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toast-destructive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york-v4/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/new-york-v4/ui/toast\\\"\\n\\nexport default function ToastDestructive() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          variant: \\\"destructive\\\",\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n          action: <ToastAction altText=\\\"Try again\\\">Try again</ToastAction>,\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toast-simple.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-simple\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toast-simple.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york-v4/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ToastSimple() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          description: \\\"Your message has been sent.\\\",\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toast-with-action.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-with-action\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toast-with-action.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york-v4/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport { ToastAction } from \\\"@/registry/new-york-v4/ui/toast\\\"\\n\\nexport default function ToastWithAction() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n          action: <ToastAction altText=\\\"Try again\\\">Try again</ToastAction>,\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toast-with-title.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toast-with-title\",\n  \"type\": \"registry:example\",\n  \"registryDependencies\": [\n    \"toast\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toast-with-title.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useToast } from \\\"@/registry/new-york-v4/hooks/use-toast\\\"\\nimport { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\n\\nexport default function ToastWithTitle() {\\n  const { toast } = useToast()\\n\\n  return (\\n    <Button\\n      variant=\\\"outline\\\"\\n      onClick={() => {\\n        toast({\\n          title: \\\"Uh oh! Something went wrong.\\\",\\n          description: \\\"There was a problem with your request.\\\",\\n        })\\n      }}\\n    >\\n      Show Toast\\n    </Button>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-demo\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-demo.tsx\",\n      \"content\": \"import { BookmarkIcon } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york-v4/ui/toggle\\\"\\n\\nexport default function ToggleDemo() {\\n  return (\\n    <Toggle\\n      aria-label=\\\"Toggle bookmark\\\"\\n      size=\\\"sm\\\"\\n      variant=\\\"outline\\\"\\n      className=\\\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-blue-500 data-[state=on]:*:[svg]:stroke-blue-500\\\"\\n    >\\n      <BookmarkIcon />\\n      Bookmark\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-disabled\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-disabled.tsx\",\n      \"content\": \"import { Underline } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york-v4/ui/toggle\\\"\\n\\nexport default function ToggleDisabled() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\" disabled>\\n      <Underline className=\\\"h-4 w-4\\\" />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-group-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-demo\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-group-demo.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup variant=\\\"outline\\\" type=\\\"multiple\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-group-disabled.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-disabled\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-group-disabled.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\" disabled>\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-group-lg.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-lg\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-group-lg.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\" size=\\\"lg\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-group-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-outline\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-group-outline.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\" variant=\\\"outline\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-group-single.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-single\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-group-single.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"single\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-group-sm.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-sm\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-group-sm.tsx\",\n      \"content\": \"import { Bold, Italic, Underline } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupDemo() {\\n  return (\\n    <ToggleGroup type=\\\"single\\\" size=\\\"sm\\\">\\n      <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n        <Bold className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n        <Italic className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n      <ToggleGroupItem value=\\\"strikethrough\\\" aria-label=\\\"Toggle strikethrough\\\">\\n        <Underline className=\\\"h-4 w-4\\\" />\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-group-spacing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-spacing\",\n  \"registryDependencies\": [\n    \"toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-group-spacing.tsx\",\n      \"content\": \"import { BookmarkIcon, HeartIcon, StarIcon } from \\\"lucide-react\\\"\\n\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/new-york-v4/ui/toggle-group\\\"\\n\\nexport default function ToggleGroupSpacing() {\\n  return (\\n    <ToggleGroup type=\\\"multiple\\\" variant=\\\"outline\\\" spacing={2} size=\\\"sm\\\">\\n      <ToggleGroupItem\\n        value=\\\"star\\\"\\n        aria-label=\\\"Toggle star\\\"\\n        className=\\\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500\\\"\\n      >\\n        <StarIcon />\\n        Star\\n      </ToggleGroupItem>\\n      <ToggleGroupItem\\n        value=\\\"heart\\\"\\n        aria-label=\\\"Toggle heart\\\"\\n        className=\\\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-red-500 data-[state=on]:*:[svg]:stroke-red-500\\\"\\n      >\\n        <HeartIcon />\\n        Heart\\n      </ToggleGroupItem>\\n      <ToggleGroupItem\\n        value=\\\"bookmark\\\"\\n        aria-label=\\\"Toggle bookmark\\\"\\n        className=\\\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-blue-500 data-[state=on]:*:[svg]:stroke-blue-500\\\"\\n      >\\n        <BookmarkIcon />\\n        Bookmark\\n      </ToggleGroupItem>\\n    </ToggleGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/new-york-v4/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive.Root>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant,\\n  size,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\\n  VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <ToggleGroupPrimitive.Item\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        \\\"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\\\",\\n        \\\"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </ToggleGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-lg.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-lg\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-lg.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york-v4/ui/toggle\\\"\\n\\nexport default function ToggleLg() {\\n  return (\\n    <Toggle size=\\\"lg\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-outline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-outline\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-outline.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york-v4/ui/toggle\\\"\\n\\nexport default function ToggleOutline() {\\n  return (\\n    <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-sm.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-sm\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-sm.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york-v4/ui/toggle\\\"\\n\\nexport default function ToggleSm() {\\n  return (\\n    <Toggle size=\\\"sm\\\" aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle-with-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-with-text\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/toggle-with-text.tsx\",\n      \"content\": \"import { Italic } from \\\"lucide-react\\\"\\n\\nimport { Toggle } from \\\"@/registry/new-york-v4/ui/toggle\\\"\\n\\nexport default function ToggleWithText() {\\n  return (\\n    <Toggle aria-label=\\\"Toggle italic\\\">\\n      <Italic />\\n      Italic\\n    </Toggle>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Toggle as TogglePrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline:\\n          \\\"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 min-w-9 px-2\\\",\\n        sm: \\\"h-8 min-w-8 px-1.5\\\",\\n        lg: \\\"h-10 min-w-10 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant,\\n  size,\\n  ...props\\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive.Root\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/tooltip-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-demo\",\n  \"registryDependencies\": [\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/tooltip-demo.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/new-york-v4/ui/button\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/new-york-v4/ui/tooltip\\\"\\n\\nexport default function TooltipDemo() {\\n  return (\\n    <Tooltip>\\n      <TooltipTrigger asChild>\\n        <Button variant=\\\"outline\\\">Hover</Button>\\n      </TooltipTrigger>\\n      <TooltipContent>\\n        <p>Add to library</p>\\n      </TooltipContent>\\n    </Tooltip>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"dependencies\": [\n    \"radix-ui\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Tooltip as TooltipPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delayDuration = 0,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delayDuration={delayDuration}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  sideOffset = 0,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Content\\n        data-slot=\\\"tooltip-content\\\"\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-blockquote.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-blockquote\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-blockquote.tsx\",\n      \"content\": \"export default function TypographyBlockquote() {\\n  return (\\n    <blockquote className=\\\"mt-6 border-l-2 pl-6 italic\\\">\\n      &quot;After all,&quot; he said, &quot;everyone enjoys a good joke, so\\n      it&apos;s only fair that they should pay for the privilege.&quot;\\n    </blockquote>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-demo\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-demo.tsx\",\n      \"content\": \"export default function TypographyDemo() {\\n  return (\\n    <div>\\n      <h1 className=\\\"scroll-m-20 text-4xl font-extrabold tracking-tight text-balance\\\">\\n        Taxing Laughter: The Joke Tax Chronicles\\n      </h1>\\n      <p className=\\\"text-xl leading-7 text-muted-foreground [&:not(:first-child)]:mt-6\\\">\\n        Once upon a time, in a far-off land, there was a very lazy king who\\n        spent all day lounging on his throne. One day, his advisors came to him\\n        with a problem: the kingdom was running out of money.\\n      </p>\\n      <h2 className=\\\"mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0\\\">\\n        The King&apos;s Plan\\n      </h2>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king thought long and hard, and finally came up with{\\\" \\\"}\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"font-medium text-primary underline underline-offset-4\\\"\\n        >\\n          a brilliant plan\\n        </a>\\n        : he would tax the jokes in the kingdom.\\n      </p>\\n      <blockquote className=\\\"mt-6 border-l-2 pl-6 italic\\\">\\n        &quot;After all,&quot; he said, &quot;everyone enjoys a good joke, so\\n        it&apos;s only fair that they should pay for the privilege.&quot;\\n      </blockquote>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        The Joke Tax\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king&apos;s subjects were not amused. They grumbled and complained,\\n        but the king was firm:\\n      </p>\\n      <ul className=\\\"my-6 ml-6 list-disc [&>li]:mt-2\\\">\\n        <li>1st level of puns: 5 gold coins</li>\\n        <li>2nd level of jokes: 10 gold coins</li>\\n        <li>3rd level of one-liners : 20 gold coins</li>\\n      </ul>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        As a result, people stopped telling jokes, and the kingdom fell into a\\n        gloom. But there was one person who refused to let the king&apos;s\\n        foolishness get him down: a court jester named Jokester.\\n      </p>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        Jokester&apos;s Revolt\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        Jokester began sneaking into the castle in the middle of the night and\\n        leaving jokes all over the place: under the king&apos;s pillow, in his\\n        soup, even in the royal toilet. The king was furious, but he\\n        couldn&apos;t seem to stop Jokester.\\n      </p>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        And then, one day, the people of the kingdom discovered that the jokes\\n        left by Jokester were so funny that they couldn&apos;t help but laugh.\\n        And once they started laughing, they couldn&apos;t stop.\\n      </p>\\n      <h3 className=\\\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n        The People&apos;s Rebellion\\n      </h3>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The people of the kingdom, feeling uplifted by the laughter, started to\\n        tell jokes and puns again, and soon the entire kingdom was in on the\\n        joke.\\n      </p>\\n      <div className=\\\"my-6 w-full overflow-y-auto\\\">\\n        <table className=\\\"w-full\\\">\\n          <thead>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                King&apos;s Treasury\\n              </th>\\n              <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                People&apos;s happiness\\n              </th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Empty\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Overflowing\\n              </td>\\n            </tr>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Modest\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Satisfied\\n              </td>\\n            </tr>\\n            <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Full\\n              </td>\\n              <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n                Ecstatic\\n              </td>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The king, seeing how much happier his subjects were, realized the error\\n        of his ways and repealed the joke tax. Jokester was declared a hero, and\\n        the kingdom lived happily ever after.\\n      </p>\\n      <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n        The moral of the story is: never underestimate the power of a good laugh\\n        and always be careful of bad ideas.\\n      </p>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-h1.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h1\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-h1.tsx\",\n      \"content\": \"export default function TypographyH1() {\\n  return (\\n    <h1 className=\\\"scroll-m-20 text-center text-4xl font-extrabold tracking-tight text-balance\\\">\\n      Taxing Laughter: The Joke Tax Chronicles\\n    </h1>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-h2.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h2\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-h2.tsx\",\n      \"content\": \"export default function TypographyH2() {\\n  return (\\n    <h2 className=\\\"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\\\">\\n      The People of the Kingdom\\n    </h2>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-h3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h3\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-h3.tsx\",\n      \"content\": \"export default function TypographyH3() {\\n  return (\\n    <h3 className=\\\"scroll-m-20 text-2xl font-semibold tracking-tight\\\">\\n      The Joke Tax\\n    </h3>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-h4.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-h4\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-h4.tsx\",\n      \"content\": \"export default function TypographyH4() {\\n  return (\\n    <h4 className=\\\"scroll-m-20 text-xl font-semibold tracking-tight\\\">\\n      People stopped telling jokes\\n    </h4>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-inline-code.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-inline-code\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-inline-code.tsx\",\n      \"content\": \"export default function TypographyInlineCode() {\\n  return (\\n    <code className=\\\"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\\\">\\n      @radix-ui/react-alert-dialog\\n    </code>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-large.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-large\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-large.tsx\",\n      \"content\": \"export default function TypographyLarge() {\\n  return <div className=\\\"text-lg font-semibold\\\">Are you absolutely sure?</div>\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-lead.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-lead\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-lead.tsx\",\n      \"content\": \"export default function TypographyLead() {\\n  return (\\n    <p className=\\\"text-xl text-muted-foreground\\\">\\n      A modal dialog that interrupts the user with important content and expects\\n      a response.\\n    </p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-list.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-list\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-list.tsx\",\n      \"content\": \"export default function TypographyList() {\\n  return (\\n    <ul className=\\\"my-6 ml-6 list-disc [&>li]:mt-2\\\">\\n      <li>1st level of puns: 5 gold coins</li>\\n      <li>2nd level of jokes: 10 gold coins</li>\\n      <li>3rd level of one-liners : 20 gold coins</li>\\n    </ul>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-muted.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-muted\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-muted.tsx\",\n      \"content\": \"export default function TypographyMuted() {\\n  return (\\n    <p className=\\\"text-sm text-muted-foreground\\\">Enter your email address.</p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-p.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-p\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-p.tsx\",\n      \"content\": \"export default function TypographyP() {\\n  return (\\n    <p className=\\\"leading-7 [&:not(:first-child)]:mt-6\\\">\\n      The king, seeing how much happier his subjects were, realized the error of\\n      his ways and repealed the joke tax.\\n    </p>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-small.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-small\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-small.tsx\",\n      \"content\": \"export default function TypographySmall() {\\n  return (\\n    <small className=\\\"text-sm leading-none font-medium\\\">Email address</small>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/typography-table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"typography-table\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/examples/typography-table.tsx\",\n      \"content\": \"export default function TypographyTable() {\\n  return (\\n    <div className=\\\"my-6 w-full overflow-y-auto\\\">\\n      <table className=\\\"w-full\\\">\\n        <thead>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              King&apos;s Treasury\\n            </th>\\n            <th className=\\\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              People&apos;s happiness\\n            </th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Empty\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Overflowing\\n            </td>\\n          </tr>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Modest\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Satisfied\\n            </td>\\n          </tr>\\n          <tr className=\\\"m-0 border-t p-0 even:bg-muted\\\">\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Full\\n            </td>\\n            <td className=\\\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\\\">\\n              Ecstatic\\n            </td>\\n          </tr>\\n        </tbody>\\n      </table>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/new-york-v4/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/new-york-v4/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/radix-lyra/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion type=\\\"single\\\" collapsible className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion type=\\\"multiple\\\" className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            type=\\\"single\\\"\\n            collapsible\\n            defaultValue=\\\"plans\\\"\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Accordion as AccordionPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\\"flex w-full flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-none border border-transparent py-2.5 text-left text-xs font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\\n  return (\\n    <AccordionPrimitive.Content\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden text-xs data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Content>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"destructive\\\">Delete Chat</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Open Alert Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\n\\nfunction AlertDialog({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\\n  return (\\n    <AlertDialogPrimitive.Overlay\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-none bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-10 items-center justify-center rounded-none bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Action\\n        data-slot=\\\"alert-dialog-action\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Cancel\\n        data-slot=\\\"alert-dialog-cancel\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/radix-lyra/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\n        \\\"absolute top-[calc(--spacing(1.25))] right-[calc(--spacing(1.25))]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/radix-lyra/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { AspectRatio as AspectRatioPrimitive } from \\\"radix-ui\\\"\\n\\nfunction AspectRatio({\\n  ...props\\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\\n  return <AspectRatioPrimitive.Root data-slot=\\\"aspect-ratio\\\" {...props} />\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-lyra/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/radix-lyra/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge asChild>\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"secondary\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"destructive\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"outline\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"ghost\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"link\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/badge.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-none border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\n      data-variant={variant}\\n      className={cn(badgeVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n                  <BreadcrumbEllipsis />\\n                  <span className=\\\"sr-only\\\">Toggle menu</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Home</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Components</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-xs wrap-break-word text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  asChild,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"transition-colors hover:text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-5 items-center justify-center [&>svg]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/button-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-lyra/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText asChild>\\n            <Label htmlFor=\\\"input-text\\\">GPU Size</Label>\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeOffIcon\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelect() {\\n  const [currency, setCurrency] = useState(\\\"$\\\")\\n\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select value={currency} onValueChange={setCurrency}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"$\\\">$</SelectItem>\\n                <SelectItem value=\\\"€\\\">€</SelectItem>\\n                <SelectItem value=\\\"£\\\">£</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button variant=\\\"outline\\\" asChild size=\\\"icon\\\" className=\\\"w-12\\\">\\n          <span>1.2K</span>\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select defaultValue=\\\"hours\\\">\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue placeholder=\\\"Select duration\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              <SelectItem value=\\\"hours\\\">Hours</SelectItem>\\n              <SelectItem value=\\\"days\\\">Days</SelectItem>\\n              <SelectItem value=\\\"weeks\\\">Weeks</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"AudioLinesIcon\\\"\\n                    tabler=\\\"IconHeadphones\\\"\\n                    hugeicons=\\\"AudioWave01Icon\\\"\\n                    phosphor=\\\"MicrophoneIcon\\\"\\n                    remixicon=\\\"RiMicLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/button-group.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch rounded-none *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-none [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\\\",\\n        vertical:\\n          \\\"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-none border bg-muted px-2.5 text-xs font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/button.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-none border border-transparent bg-clip-padding text-xs font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\\\",\\n        xs: \\\"h-6 gap-1 rounded-none px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-7 gap-1 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        lg: \\\"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\\\",\\n        icon: \\\"size-8\\\",\\n        \\\"icon-xs\\\": \\\"size-6 rounded-none [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\": \\\"size-7 rounded-none\\\",\\n        \\\"icon-lg\\\": \\\"size-9\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"button\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/radix-lyra/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-lyra/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Open Calendar\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent className=\\\"px-4\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-simple\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker-range\\\"\\n              variant=\\\"outline\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date?.from ? (\\n                date.to ? (\\n                  <>\\n                    {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                    {format(date.to, \\\"LLL dd, y\\\")}\\n                  </>\\n                ) : (\\n                  format(date.from, \\\"LLL dd, y\\\")\\n                )\\n              ) : (\\n                <span>Pick a date</span>\\n              )}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-with-dropdowns-desktop\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDownIcon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-2 [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center style-nova:mt-2\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-4 overflow-hidden rounded-none bg-card py-4 text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-none px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium group-data-[size=sm]/card:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-4 group-data-[size=sm]/card:px-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-none border-t p-4 group-data-[size=sm]/card:p-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/cards.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cards\",\n  \"title\": \"Cards\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/alert-dialog\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-lyra/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-lyra/ui/checkbox\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-lyra/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-lyra/ui/empty\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-lyra/ui/popover\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-lyra/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sheet\\\"\\nimport { Slider } from \\\"@/registry/radix-lyra/ui/slider\\\"\\nimport { Spinner } from \\\"@/registry/radix-lyra/ui/spinner\\\"\\nimport { Switch } from \\\"@/registry/radix-lyra/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ObservabilityCard />\\n      <SmallFormExample />\\n      <FormExample />\\n      <FieldExamples />\\n      <ItemExample />\\n      <ButtonGroupExamples />\\n      <EmptyAvatarGroup />\\n      <InputGroupExamples />\\n      <SheetExample />\\n      <BadgeExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction FieldExamples() {\\n  const [gpuCount, setGpuCount] = React.useState(8)\\n  const [value, setValue] = useState([200, 800])\\n  const handleGpuAdjustment = React.useCallback((adjustment: number) => {\\n    setGpuCount((prevCount) =>\\n      Math.max(1, Math.min(99, prevCount + adjustment))\\n    )\\n  }, [])\\n\\n  const handleGpuInputChange = React.useCallback(\\n    (e: React.ChangeEvent<HTMLInputElement>) => {\\n      const value = parseInt(e.target.value, 10)\\n      if (!isNaN(value) && value >= 1 && value <= 99) {\\n        setGpuCount(value)\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"Fields\\\">\\n      <FieldSet className=\\\"w-full max-w-md\\\">\\n        <FieldGroup>\\n          <FieldSet>\\n            <FieldLegend>Compute Environment</FieldLegend>\\n            <FieldDescription>\\n              Select the compute environment for your cluster.\\n            </FieldDescription>\\n            <RadioGroup defaultValue=\\\"kubernetes\\\">\\n              <FieldLabel htmlFor=\\\"kubernetes-r2h\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Kubernetes</FieldTitle>\\n                    <FieldDescription>\\n                      Run GPU workloads on a K8s configured cluster. This is the\\n                      default.\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"kubernetes\\\"\\n                    id=\\\"kubernetes-r2h\\\"\\n                    aria-label=\\\"Kubernetes\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n              <FieldLabel htmlFor=\\\"vm-z4k\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Virtual Machine</FieldTitle>\\n                    <FieldDescription>\\n                      Access a VM configured cluster to run workloads. (Coming\\n                      soon)\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"vm\\\"\\n                    id=\\\"vm-z4k\\\"\\n                    aria-label=\\\"Virtual Machine\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n            </RadioGroup>\\n          </FieldSet>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"number-of-gpus-f6l\\\">\\n                Number of GPUs\\n              </FieldLabel>\\n              <FieldDescription>You can add more later.</FieldDescription>\\n            </FieldContent>\\n            <ButtonGroup>\\n              <Input\\n                id=\\\"number-of-gpus-f6l\\\"\\n                value={gpuCount}\\n                onChange={handleGpuInputChange}\\n                size={3}\\n                maxLength={3}\\n              />\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Decrement\\\"\\n                onClick={() => handleGpuAdjustment(-1)}\\n                disabled={gpuCount <= 1}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MinusIcon\\\"\\n                  tabler=\\\"IconMinus\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Increment\\\"\\n                onClick={() => handleGpuAdjustment(1)}\\n                disabled={gpuCount >= 99}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </Button>\\n            </ButtonGroup>\\n          </Field>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"tinting\\\">Wallpaper Tinting</FieldLabel>\\n              <FieldDescription>\\n                Allow the wallpaper to be tinted.\\n              </FieldDescription>\\n            </FieldContent>\\n            <Switch id=\\\"tinting\\\" defaultChecked />\\n          </Field>\\n          <FieldSeparator />\\n          <FieldLabel htmlFor=\\\"checkbox-demo\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"checkbox-demo\\\" defaultChecked />\\n              <FieldLabel htmlFor=\\\"checkbox-demo\\\" className=\\\"line-clamp-1\\\">\\n                I agree to the terms and conditions\\n              </FieldLabel>\\n            </Field>\\n          </FieldLabel>\\n          <FieldSeparator />\\n          <Field>\\n            <FieldTitle>Price Range</FieldTitle>\\n            <FieldDescription>\\n              Set your budget range ($\\n              <span className=\\\"font-medium tabular-nums\\\">\\n                {value[0]}\\n              </span> -{\\\" \\\"}\\n              <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n            </FieldDescription>\\n            <Slider\\n              value={value}\\n              onValueChange={(val) => setValue(val as number[])}\\n              max={1000}\\n              min={0}\\n              step={10}\\n              className=\\\"mt-2 w-full\\\"\\n              aria-label=\\\"Price Range\\\"\\n            />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"submit\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              Cancel\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupExamples() {\\n  const [label, setLabel] = React.useState(\\\"personal\\\")\\n\\n  return (\\n    <Example title=\\\"Button Group\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Go Back\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Archive\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Report\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Snooze\\n            </Button>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button\\n                  variant=\\\"outline\\\"\\n                  size=\\\"icon-sm\\\"\\n                  aria-label=\\\"More Options\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-48\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"MailCheckIcon\\\"\\n                      tabler=\\\"IconMailCheck\\\"\\n                      hugeicons=\\\"MailValidation01Icon\\\"\\n                      phosphor=\\\"EnvelopeIcon\\\"\\n                      remixicon=\\\"RiMailLine\\\"\\n                    />\\n                    Mark as Read\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArchiveIcon\\\"\\n                      tabler=\\\"IconArchive\\\"\\n                      hugeicons=\\\"ArchiveIcon\\\"\\n                      phosphor=\\\"ArchiveIcon\\\"\\n                      remixicon=\\\"RiArchiveLine\\\"\\n                    />\\n                    Archive\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClockIcon\\\"\\n                      tabler=\\\"IconClock\\\"\\n                      hugeicons=\\\"ClockIcon\\\"\\n                      phosphor=\\\"ClockIcon\\\"\\n                      remixicon=\\\"RiTimeLine\\\"\\n                    />\\n                    Snooze\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CalendarPlusIcon\\\"\\n                      tabler=\\\"IconCalendarPlus\\\"\\n                      hugeicons=\\\"CalendarAdd01Icon\\\"\\n                      phosphor=\\\"CalendarPlusIcon\\\"\\n                      remixicon=\\\"RiCalendarEventLine\\\"\\n                    />\\n                    Add to Calendar\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ListFilterIcon\\\"\\n                      tabler=\\\"IconFilterPlus\\\"\\n                      hugeicons=\\\"AddToListIcon\\\"\\n                      phosphor=\\\"ListPlusIcon\\\"\\n                      remixicon=\\\"RiPlayListAddLine\\\"\\n                    />\\n                    Add to List\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"TagIcon\\\"\\n                        tabler=\\\"IconTag\\\"\\n                        hugeicons=\\\"TagIcon\\\"\\n                        phosphor=\\\"TagIcon\\\"\\n                        remixicon=\\\"RiPriceTagLine\\\"\\n                      />\\n                      Label As...\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuSubContent>\\n                      <DropdownMenuRadioGroup\\n                        value={label}\\n                        onValueChange={setLabel}\\n                      >\\n                        <DropdownMenuRadioItem value=\\\"personal\\\">\\n                          Personal\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"work\\\">\\n                          Work\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"other\\\">\\n                          Other\\n                        </DropdownMenuRadioItem>\\n                      </DropdownMenuRadioGroup>\\n                    </DropdownMenuSubContent>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Trash\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Previous\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Next\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <div className=\\\"flex gap-4\\\">\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">1</Button>\\n              <Button variant=\\\"outline\\\">2</Button>\\n              <Button variant=\\\"outline\\\">3</Button>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">Follow</Button>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\" className=\\\"w-52\\\">\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"VolumeX\\\"\\n                        tabler=\\\"IconVolume\\\"\\n                        hugeicons=\\\"VolumeOffIcon\\\"\\n                        phosphor=\\\"SpeakerSlashIcon\\\"\\n                        remixicon=\\\"RiVolumeMuteLine\\\"\\n                      />\\n                      Mute Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CheckIcon\\\"\\n                        tabler=\\\"IconCheck\\\"\\n                        hugeicons=\\\"Tick02Icon\\\"\\n                        phosphor=\\\"CheckIcon\\\"\\n                        remixicon=\\\"RiCheckLine\\\"\\n                      />\\n                      Mark as Read\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"UserRoundXIcon\\\"\\n                        tabler=\\\"IconUserX\\\"\\n                        hugeicons=\\\"UserRemove01Icon\\\"\\n                        phosphor=\\\"UserMinusIcon\\\"\\n                        remixicon=\\\"RiUserUnfollowLine\\\"\\n                      />\\n                      Block User\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShareIcon\\\"\\n                        tabler=\\\"IconShare\\\"\\n                        hugeicons=\\\"Share03Icon\\\"\\n                        phosphor=\\\"ShareIcon\\\"\\n                        remixicon=\\\"RiShareLine\\\"\\n                      />\\n                      Share Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CopyIcon\\\"\\n                        tabler=\\\"IconCopy\\\"\\n                        hugeicons=\\\"Copy01Icon\\\"\\n                        phosphor=\\\"CopyIcon\\\"\\n                        remixicon=\\\"RiFileCopyLine\\\"\\n                      />\\n                      Copy Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"AlertTriangleIcon\\\"\\n                        tabler=\\\"IconAlertTriangle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Report Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem variant=\\\"destructive\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"TrashIcon\\\"\\n                        tabler=\\\"IconTrash\\\"\\n                        hugeicons=\\\"Delete02Icon\\\"\\n                        phosphor=\\\"TrashIcon\\\"\\n                        remixicon=\\\"RiDeleteBinLine\\\"\\n                      />\\n                      Delete Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"BotIcon\\\"\\n                  tabler=\\\"IconRobot\\\"\\n                  hugeicons=\\\"BotIcon\\\"\\n                  phosphor=\\\"RobotIcon\\\"\\n                  remixicon=\\\"RiRobotLine\\\"\\n                />{\\\" \\\"}\\n                Copilot\\n              </Button>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    aria-label=\\\"Open Popover\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </PopoverTrigger>\\n                <PopoverContent align=\\\"end\\\" className=\\\"w-96\\\">\\n                  <PopoverHeader>\\n                    <PopoverTitle>Agent Tasks</PopoverTitle>\\n                    <PopoverDescription>\\n                      Describe your task in natural language. Copilot will work\\n                      in the background and open a pull request.\\n                    </PopoverDescription>\\n                  </PopoverHeader>\\n                  <div className=\\\"text-sm *:[p:not(:last-child)]:mb-2\\\">\\n                    <Textarea\\n                      placeholder=\\\"Describe your task in natural language.\\\"\\n                      className=\\\"min-h-32 resize-none\\\"\\n                    />\\n                  </div>\\n                </PopoverContent>\\n              </Popover>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupExamples() {\\n  const [isFavorite, setIsFavorite] = React.useState(false)\\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Input Group\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Search...\\\" />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"example.com\\\" className=\\\"!pl-1\\\" />\\n          <InputGroupAddon>\\n            <InputGroupText>https://</InputGroupText>\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupButton\\n                  className=\\\"rounded-full\\\"\\n                  size=\\\"icon-xs\\\"\\n                  aria-label=\\\"Info\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </TooltipTrigger>\\n              <TooltipContent>This is content in a tooltip.</TooltipContent>\\n            </Tooltip>\\n          </InputGroupAddon>\\n        </InputGroup>\\n        <Field>\\n          <Label htmlFor=\\\"input-secure-19\\\" className=\\\"sr-only\\\">\\n            Input Secure\\n          </Label>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-secure-19\\\" className=\\\"!pl-0.5\\\" />\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton\\n                    variant=\\\"secondary\\\"\\n                    size=\\\"icon-xs\\\"\\n                    aria-label=\\\"Info\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent\\n                align=\\\"start\\\"\\n                alignOffset={10}\\n                className=\\\"flex flex-col gap-1 rounded-xl text-sm\\\"\\n              >\\n                <p className=\\\"font-medium\\\">Your connection is not secure.</p>\\n                <p>\\n                  You should not enter any sensitive information on this site.\\n                </p>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"text-muted-foreground !pl-1\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                onClick={() => setIsFavorite(!isFavorite)}\\n                size=\\\"icon-xs\\\"\\n                aria-label=\\\"Favorite\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                  data-favorite={isFavorite}\\n                  className=\\\"data-[favorite=true]:fill-primary data-[favorite=true]:stroke-primary\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <ButtonGroup className=\\\"w-full\\\">\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"Add\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"flex-1\\\">\\n            <InputGroup>\\n              <InputGroupInput\\n                placeholder={\\n                  voiceEnabled\\n                    ? \\\"Record and send audio...\\\"\\n                    : \\\"Send a message...\\\"\\n                }\\n                disabled={voiceEnabled}\\n              />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <Tooltip>\\n                  <TooltipTrigger asChild>\\n                    <InputGroupButton\\n                      onClick={() => setVoiceEnabled(!voiceEnabled)}\\n                      data-active={voiceEnabled}\\n                      className=\\\"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground\\\"\\n                      aria-pressed={voiceEnabled}\\n                      size=\\\"icon-xs\\\"\\n                      aria-label=\\\"Voice Mode\\\"\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"AudioLinesIcon\\\"\\n                        tabler=\\\"IconWaveSine\\\"\\n                        hugeicons=\\\"AudioWave01Icon\\\"\\n                        phosphor=\\\"MicrophoneIcon\\\"\\n                        remixicon=\\\"RiMicLine\\\"\\n                      />\\n                    </InputGroupButton>\\n                  </TooltipTrigger>\\n                  <TooltipContent>Voice Mode</TooltipContent>\\n                </Tooltip>\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <InputGroup>\\n          <InputGroupTextarea placeholder=\\\"Ask, Search or Chat...\\\" />\\n          <InputGroupAddon align=\\\"block-end\\\">\\n            <InputGroupButton\\n              variant=\\\"outline\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n              aria-label=\\\"Add\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </InputGroupButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <InputGroupButton variant=\\\"ghost\\\">Auto</InputGroupButton>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                side=\\\"top\\\"\\n                align=\\\"start\\\"\\n                className=\\\"[--radius:0.95rem]\\\"\\n              >\\n                <DropdownMenuItem>Auto</DropdownMenuItem>\\n                <DropdownMenuItem>Agent</DropdownMenuItem>\\n                <DropdownMenuItem>Manual</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n            <InputGroupText className=\\\"ml-auto\\\">52% used</InputGroupText>\\n            <Separator orientation=\\\"vertical\\\" className=\\\"!h-4\\\" />\\n            <InputGroupButton\\n              variant=\\\"default\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpIcon\\\"\\n                tabler=\\\"IconArrowUp\\\"\\n                hugeicons=\\\"ArrowUp01Icon\\\"\\n                phosphor=\\\"ArrowUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Send</span>\\n            </InputGroupButton>\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyAvatarGroup() {\\n  return (\\n    <Example title=\\\"Empty\\\">\\n      <Empty className=\\\"h-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup className=\\\"grayscale\\\">\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button variant=\\\"outline\\\">Show Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent>\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Connect Mouse</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogMedia>\\n                    <IconPlaceholder\\n                      lucide=\\\"BluetoothIcon\\\"\\n                      tabler=\\\"IconBluetooth\\\"\\n                      hugeicons=\\\"BluetoothIcon\\\"\\n                      phosphor=\\\"BluetoothIcon\\\"\\n                      remixicon=\\\"RiBluetoothLine\\\"\\n                    />\\n                  </AlertDialogMedia>\\n                  <AlertDialogTitle>\\n                    Allow accessory to connect?\\n                  </AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    Do you want to allow the USB accessory to connect to this\\n                    device?\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                  <AlertDialogAction>Allow</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction FormExample() {\\n  return (\\n    <Example title=\\\"Complex Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Payment Method</CardTitle>\\n          <CardDescription>\\n            All transactions are secure and encrypted\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-card-name-43j\\\">\\n                      Name on Card\\n                    </FieldLabel>\\n                    <Input\\n                      id=\\\"checkout-7j9-card-name-43j\\\"\\n                      placeholder=\\\"John Doe\\\"\\n                      required\\n                    />\\n                  </Field>\\n                  <div className=\\\"grid grid-cols-3 gap-4\\\">\\n                    <Field className=\\\"col-span-2\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-card-number-uw1\\\">\\n                        Card Number\\n                      </FieldLabel>\\n                      <Input\\n                        id=\\\"checkout-7j9-card-number-uw1\\\"\\n                        placeholder=\\\"1234 5678 9012 3456\\\"\\n                        required\\n                      />\\n                      <FieldDescription>\\n                        Enter your 16-digit number.\\n                      </FieldDescription>\\n                    </Field>\\n                    <Field className=\\\"col-span-1\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-cvv\\\">CVV</FieldLabel>\\n                      <Input id=\\\"checkout-7j9-cvv\\\" placeholder=\\\"123\\\" required />\\n                    </Field>\\n                  </div>\\n                  <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-month-ts6\\\">\\n                        Month\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-month-ts6\\\">\\n                          <SelectValue placeholder=\\\"MM\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"01\\\">01</SelectItem>\\n                            <SelectItem value=\\\"02\\\">02</SelectItem>\\n                            <SelectItem value=\\\"03\\\">03</SelectItem>\\n                            <SelectItem value=\\\"04\\\">04</SelectItem>\\n                            <SelectItem value=\\\"05\\\">05</SelectItem>\\n                            <SelectItem value=\\\"06\\\">06</SelectItem>\\n                            <SelectItem value=\\\"07\\\">07</SelectItem>\\n                            <SelectItem value=\\\"08\\\">08</SelectItem>\\n                            <SelectItem value=\\\"09\\\">09</SelectItem>\\n                            <SelectItem value=\\\"10\\\">10</SelectItem>\\n                            <SelectItem value=\\\"11\\\">11</SelectItem>\\n                            <SelectItem value=\\\"12\\\">12</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-year-f59\\\">\\n                        Year\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-year-f59\\\">\\n                          <SelectValue placeholder=\\\"YYYY\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"2024\\\">2024</SelectItem>\\n                            <SelectItem value=\\\"2025\\\">2025</SelectItem>\\n                            <SelectItem value=\\\"2026\\\">2026</SelectItem>\\n                            <SelectItem value=\\\"2027\\\">2027</SelectItem>\\n                            <SelectItem value=\\\"2028\\\">2028</SelectItem>\\n                            <SelectItem value=\\\"2029\\\">2029</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                  </div>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldLegend>Billing Address</FieldLegend>\\n                <FieldDescription>\\n                  The billing address associated with your payment.\\n                </FieldDescription>\\n                <FieldGroup>\\n                  <Field orientation=\\\"horizontal\\\">\\n                    <Checkbox\\n                      id=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      defaultChecked\\n                    />\\n                    <FieldLabel\\n                      htmlFor=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      className=\\\"font-normal\\\"\\n                    >\\n                      Same as shipping address\\n                    </FieldLabel>\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-optional-comments\\\">\\n                      Comments\\n                    </FieldLabel>\\n                    <Textarea\\n                      id=\\\"checkout-7j9-optional-comments\\\"\\n                      placeholder=\\\"Add any additional comments\\\"\\n                    />\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction SmallFormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                align=\\\"end\\\"\\n                className=\\\"style-maia:w-56 style-mira:w-48 style-nova:w-48 style-vega:w-56 style-lyra:w-48\\\"\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction ObservabilityCard() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"bg-primary absolute inset-0 z-30 aspect-video opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button>\\n            Create Query{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction FieldSlider() {\\n  const [value, setValue] = useState([200, 800])\\n  return (\\n    <Example title=\\\"Field Slider\\\">\\n      <div className=\\\"w-full max-w-md\\\">\\n        <Field>\\n          <FieldTitle>Price Range</FieldTitle>\\n          <FieldDescription>\\n            Set your budget range ($\\n            <span className=\\\"font-medium tabular-nums\\\">{value[0]}</span> -{\\\" \\\"}\\n            <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n          </FieldDescription>\\n          <Slider\\n            value={value}\\n            onValueChange={setValue}\\n            max={1000}\\n            min={0}\\n            step={10}\\n            className=\\\"mt-2 w-full\\\"\\n            aria-label=\\\"Price Range\\\"\\n          />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemExample() {\\n  return (\\n    <Example title=\\\"Item\\\">\\n      <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n        <Item variant=\\\"outline\\\">\\n          <ItemContent>\\n            <ItemTitle>Two-factor authentication</ItemTitle>\\n            <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n              Verify via email or phone number.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n              Enable\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"outline\\\" size=\\\"sm\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ShoppingBagIcon\\\"\\n                tabler=\\\"IconShoppingBag\\\"\\n                hugeicons=\\\"ShoppingBasket01Icon\\\"\\n                phosphor=\\\"BagIcon\\\"\\n                remixicon=\\\"RiShoppingBagLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Your order has been shipped.</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeExamples() {\\n  return (\\n    <Example title=\\\"Badge\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex items-center justify-center gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Syncing\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Updating\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Loading\\n        </Badge>\\n        <Badge variant=\\\"link\\\" className=\\\"hidden sm:flex\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithSpinner() {\\n  return (\\n    <Example title=\\\"Empty with Spinner\\\">\\n      <Empty className=\\\"w-full border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>Processing your request</EmptyTitle>\\n          <EmptyDescription>\\n            Please wait while we process your request. Do not refresh the page.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button size=\\\"sm\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Cancel\\n            </Button>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetExample() {\\n  return (\\n    <Example title=\\\"Sheet\\\">\\n      <div className=\\\"flex gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"secondary\\\" className=\\\"flex-1 capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"overflow-y-auto px-4 text-sm\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"style-lyra:mb-2 style-lyra:leading-relaxed mb-4 leading-normal\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/radix-lyra/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-lyra/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-none border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-lyra/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-lyra/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Checkbox as CheckboxPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-none border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/radix-lyra/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n              />\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"Folder01Icon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              {fileItem.name}\\n            </Button>\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                {isOpen ? (\\n                  <IconPlaceholder\\n                    lucide=\\\"MinimizeIcon\\\"\\n                    tabler=\\\"IconMinimize\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                ) : (\\n                  <IconPlaceholder\\n                    lucide=\\\"MaximizeIcon\\\"\\n                    tabler=\\\"IconMaximize\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                )}\\n              </Button>\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"radix-ui\\\"\\n\\nfunction Collapsible({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleTrigger\\n      data-slot=\\\"collapsible-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CollapsibleContent({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleContent\\n      data-slot=\\\"collapsible-content\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/radix-lyra/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen} modal={false}>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue placeholder=\\\"Select a framework\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {frameworks.map((framework) => (\\n              <SelectItem key={framework} value={framework}>\\n                {framework}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            asChild\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          >\\n            <ComboboxTrigger />\\n          </InputGroupButton>\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-2 py-2 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-xs text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-8 flex-wrap items-center gap-1 rounded-none border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-xs transition-colors focus-within:border-ring focus-within:ring-1 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-1 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-none bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/radix-lyra/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-none bg-popover text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: React.ComponentProps<typeof Dialog> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-none p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"border-b pb-0\\\">\\n      <InputGroup className=\\\"h-8 border-none border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-xs outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-4 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-0 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none in-data-[slot=dialog-content]:rounded-none! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-lyra/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger asChild>\\n              <Button>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Show Dialog\\n              </Button>\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  const [showBookmarksBar, setShowBookmarksBar] = React.useState(true)\\n  const [showFullUrls, setShowFullUrls] = React.useState(false)\\n  const [showDeveloperTools, setShowDeveloperTools] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem\\n              checked={showBookmarksBar}\\n              onCheckedChange={setShowBookmarksBar}\\n            >\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showFullUrls}\\n              onCheckedChange={setShowFullUrls}\\n            >\\n              Show Full URLs\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showDeveloperTools}\\n              onCheckedChange={setShowDeveloperTools}\\n            >\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\">\\n      <div className=\\\"grid grid-cols-2 gap-6\\\">\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (top)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"top\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (right)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"right\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (bottom)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"bottom\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (left)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"left\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\\n  return <ContextMenuPrimitive.Sub data-slot=\\\"context-menu-sub\\\" {...props} />\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Content\\n        data-slot=\\\"context-menu-content\\\"\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\\n  return (\\n    <ContextMenuPrimitive.SubContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-none border bg-popover text-popover-foreground shadow-lg duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Label\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-2 text-xs text-muted-foreground data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-lyra/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              asChild\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n            >\\n              <a href=\\\"#\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CommandIcon\\\"\\n                  tabler=\\\"IconInnerShadowTop\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-5!\\\"\\n                />\\n                <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-lyra/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-lyra/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-lyra/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            type=\\\"single\\\"\\n            value={timeRange}\\n            onValueChange={setTimeRange}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select value={timeRange} onValueChange={setTimeRange}>\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-lyra/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-lyra/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/radix-lyra/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-lyra/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-lyra/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\n\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={\\n            table.getIsAllPageRowsSelected() ||\\n            (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select>\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            className=\\\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\\\"\\n            size=\\\"icon\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Open menu</span>\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\n\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\n\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select defaultValue=\\\"outline\\\">\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Columns3Icon\\\"\\n                  tabler=\\\"IconLayoutColumns\\\"\\n                  hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                  phosphor=\\\"ColumnsIcon\\\"\\n                  remixicon=\\\"RiLayoutColumnLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Columns\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                  data-icon=\\\"inline-end\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select defaultValue={item.type}>\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select defaultValue={item.status}>\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select defaultValue={item.reviewer}>\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Done</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"rounded-sm data-[state=open]:bg-accent\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg grayscale\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  {user.email}\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"EllipsisVerticalIcon\\\"\\n                tabler=\\\"IconDotsVertical\\\"\\n                hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                remixicon=\\\"RiMore2Line\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                    {user.email}\\n                  </span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 data-[orientation=vertical]:h-4\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-lyra/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-lyra/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-lyra/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/radix-lyra/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-lyra/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback((value: number[]) => {\\n    setSliderValue(value)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger asChild>\\n                    <Button variant=\\\"outline\\\">\\n                      <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                      <span className=\\\"block md:hidden\\\">Dialog</span>\\n                    </Button>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronUpIcon\\\"\\n                          tabler=\\\"IconChevronUp\\\"\\n                          hugeicons=\\\"ArrowUp01Icon\\\"\\n                          phosphor=\\\"CaretUpIcon\\\"\\n                          remixicon=\\\"RiArrowUpSLine\\\"\\n                        />\\n                      </Button>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/radix-lyra/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-lyra/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-lyra/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport { Switch } from \\\"@/registry/radix-lyra/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger asChild>\\n            <Button variant=\\\"outline\\\">Edit Profile</Button>\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose asChild>\\n                <Button variant=\\\"outline\\\">Cancel</Button>\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Sticky Footer</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Chat Settings</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select value={theme} onValueChange={setTheme}>\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"light\\\">Light</SelectItem>\\n                              <SelectItem value=\\\"dark\\\">Dark</SelectItem>\\n                              <SelectItem value=\\\"system\\\">System</SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          value={accentColor}\\n                          onValueChange={setAccentColor}\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"default\\\">\\n                                <div className=\\\"size-3 rounded-full bg-neutral-500 dark:bg-neutral-400\\\" />\\n                                Default\\n                              </SelectItem>\\n                              <SelectItem value=\\\"red\\\">\\n                                <div className=\\\"size-3 rounded-full bg-red-500 dark:bg-red-400\\\" />\\n                                Red\\n                              </SelectItem>\\n                              <SelectItem value=\\\"blue\\\">\\n                                <div className=\\\"size-3 rounded-full bg-blue-500 dark:bg-blue-400\\\" />\\n                                Blue\\n                              </SelectItem>\\n                              <SelectItem value=\\\"green\\\">\\n                                <div className=\\\"size-3 rounded-full bg-green-500 dark:bg-green-400\\\" />\\n                                Green\\n                              </SelectItem>\\n                              <SelectItem value=\\\"purple\\\">\\n                                <div className=\\\"size-3 rounded-full bg-purple-500 dark:bg-purple-400\\\" />\\n                                Purple\\n                              </SelectItem>\\n                              <SelectItem value=\\\"pink\\\">\\n                                <div className=\\\"size-3 rounded-full bg-pink-500 dark:bg-pink-400\\\" />\\n                                Pink\\n                              </SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          value={spokenLanguage}\\n                          onValueChange={setSpokenLanguage}\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"auto\\\">Auto</SelectItem>\\n                            </SelectGroup>\\n                            <SelectSeparator />\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select value={voice} onValueChange={setVoice}>\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger asChild>\\n                              <InputGroupButton size=\\\"icon-xs\\\">\\n                                <IconPlaceholder\\n                                  lucide=\\\"InfoIcon\\\"\\n                                  tabler=\\\"IconInfoCircle\\\"\\n                                  hugeicons=\\\"AlertCircleIcon\\\"\\n                                  phosphor=\\\"InfoIcon\\\"\\n                                  remixicon=\\\"RiInformationLine\\\"\\n                                />\\n                              </InputGroupButton>\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\\n  return (\\n    <DialogPrimitive.Overlay\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Content\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-none bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-2 right-2\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Content>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-left\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close asChild>\\n          <Button variant=\\\"outline\\\">Close</Button>\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Direction } from \\\"radix-ui\\\"\\n\\nfunction DirectionProvider({\\n  dir,\\n  direction,\\n  children,\\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\\\"dir\\\"]\\n}) {\\n  return (\\n    <Direction.DirectionProvider dir={direction ?? dir}>\\n      {children}\\n    </Direction.DirectionProvider>\\n  )\\n}\\n\\nconst useDirection = Direction.useDirection\\n\\nexport { DirectionProvider, useDirection }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-lyra/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-xs/relaxed data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-none data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-none data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-none data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-none data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-none bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            <DropdownMenuItem>Support</DropdownMenuItem>\\n            <DropdownMenuItem disabled>API</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              Log out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Email</DropdownMenuItem>\\n                    <DropdownMenuItem>Message</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>More...</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Checkboxes\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Radio Group\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Notifications\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\">Payment Method</Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Actions\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </DropdownMenuItem>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"LogOutIcon\\\"\\n            tabler=\\\"IconLogout\\\"\\n            hugeicons=\\\"LogoutIcon\\\"\\n            phosphor=\\\"SignOutIcon\\\"\\n            remixicon=\\\"RiLogoutBoxLine\\\"\\n          />\\n          Sign Out\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n            >\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  shadcn@example.com\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\">\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Menu\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                      <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                      <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Complex Menu\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DropdownMenu as DropdownMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\\n  return <DropdownMenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\\n  return (\\n    <DropdownMenuPrimitive.Trigger\\n      data-slot=\\\"dropdown-menu-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal>\\n      <DropdownMenuPrimitive.Content\\n        data-slot=\\\"dropdown-menu-content\\\"\\n        sideOffset={sideOffset}\\n        align={align}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </DropdownMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\\n  return (\\n    <DropdownMenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\\n  return (\\n    <DropdownMenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Label\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-2 text-xs text-muted-foreground data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\\n  return (\\n    <DropdownMenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\\n  return <DropdownMenuPrimitive.Sub data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.SubTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </DropdownMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\\n  return (\\n    <DropdownMenuPrimitive.SubContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-none bg-popover text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-lyra/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-lyra/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-none border-dashed p-6 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-8 shrink-0 items-center justify-center rounded-none bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-xs text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/radix-lyra/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-lyra/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-lyra/ui/native-select\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-lyra/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport { Slider } from \\\"@/registry/radix-lyra/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-lyra/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue placeholder=\\\"Choose an option\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue placeholder=\\\"Select your country\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue placeholder=\\\"Select timezone\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"utc\\\">UTC</SelectItem>\\n                <SelectItem value=\\\"est\\\">Eastern Time</SelectItem>\\n                <SelectItem value=\\\"pst\\\">Pacific Time</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"This field has an error\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue placeholder=\\\"Cannot select\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={setVolume}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={setBrightness}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={setTemperature}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={setPriceRange}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={setColorBalance}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"orange\\\">Orange</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-2.5 font-medium data-[variant=label]:text-xs data-[variant=legend]:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-2 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-xs/relaxed leading-snug group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-xs/relaxed leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-xs group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-xs font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/radix-lyra/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side} openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side} className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side} side of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Hover me\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { HoverCard as HoverCardPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction HoverCard({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\\n  return <HoverCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\\n  return (\\n    <HoverCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\\n  return (\\n    <HoverCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <HoverCardPrimitive.Content\\n        data-slot=\\\"hover-card-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-none bg-popover p-2.5 text-xs/relaxed text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </HoverCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-lyra/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-lyra/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-lyra/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-lyra/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/radix-lyra/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger asChild>\\n                  <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\">\\n                    {country}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDownIcon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-none border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-1 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-xs font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-none [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-xs shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"gap-1\\\",\\n        \\\"icon-xs\\\": \\\"size-6 rounded-none p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-7 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants>) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-xs text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-lyra/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-none has-aria-invalid:border-destructive has-aria-invalid:ring-1 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-8 items-center justify-center border-y border-r border-input text-xs transition-all outline-none first:rounded-none first:border-l last:rounded-none aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-1 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <input\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-8 w-full min-w-0 rounded-none border border-input bg-transparent px-2.5 py-1 text-xs transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-xs file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 md:text-xs dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-none border text-xs transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-2.5 px-3 py-2.5\\\",\\n        sm: \\\"gap-2.5 px-3 py-2.5\\\",\\n        xs: \\\"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> &\\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n  return (\\n    <Comp\\n      data-slot=\\\"item\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(itemVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-none group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-xs font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-xs/relaxed font-normal text-muted-foreground group-data-[size=xs]/item:text-xs/relaxed [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-lyra/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-none bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-lyra/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label as LabelPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Label({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\\n  return (\\n    <LabelPrimitive.Root\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-xs leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-lyra/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-lyra/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-lyra/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-lyra/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-lyra/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Email link</MenubarItem>\\n                  <MenubarItem>Messages</MenubarItem>\\n                  <MenubarItem>Notes</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Find...</MenubarItem>\\n                  <MenubarItem>Find Next</MenubarItem>\\n                  <MenubarItem>Find Previous</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarGroup>\\n              <MenubarCheckboxItem>\\n                Always Show Bookmarks Bar\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem checked>\\n                Always Show Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>\\n                Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled inset>\\n                Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Edit...</MenubarItem>\\n              <MenubarItem inset>Add Profile...</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SaveIcon\\\"\\n                  tabler=\\\"IconDeviceFloppy\\\"\\n                  hugeicons=\\\"FloppyDiskIcon\\\"\\n                  phosphor=\\\"FloppyDiskIcon\\\"\\n                  remixicon=\\\"RiSaveLine\\\"\\n                />\\n                Save <MenubarShortcut>⌘S</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BoldIcon\\\"\\n                  tabler=\\\"IconBold\\\"\\n                  hugeicons=\\\"TextBoldIcon\\\"\\n                  phosphor=\\\"TextBIcon\\\"\\n                  remixicon=\\\"RiBold\\\"\\n                />\\n                Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ItalicIcon\\\"\\n                  tabler=\\\"IconItalic\\\"\\n                  hugeicons=\\\"TextItalicIcon\\\"\\n                  phosphor=\\\"TextItalicIcon\\\"\\n                  remixicon=\\\"RiItalic\\\"\\n                />\\n                Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UnderlineIcon\\\"\\n                  tabler=\\\"IconUnderline\\\"\\n                  hugeicons=\\\"TextUnderlineIcon\\\"\\n                  phosphor=\\\"TextUnderlineIcon\\\"\\n                  remixicon=\\\"RiUnderline\\\"\\n                />\\n                Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n              <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Zoom In</MenubarItem>\\n              <MenubarItem inset>Zoom Out</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Image</MenubarItem>\\n                  <MenubarItem>Video</MenubarItem>\\n                  <MenubarItem>Audio</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LinkIcon\\\"\\n                  tabler=\\\"IconLink\\\"\\n                  hugeicons=\\\"LinkIcon\\\"\\n                  phosphor=\\\"LinkIcon\\\"\\n                  remixicon=\\\"RiLinksLine\\\"\\n                />\\n                Link <MenubarShortcut>⌘K</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"TableIcon\\\"\\n                  tabler=\\\"IconTable\\\"\\n                  hugeicons=\\\"TableIcon\\\"\\n                  phosphor=\\\"TableIcon\\\"\\n                  remixicon=\\\"RiTableLine\\\"\\n                />\\n                Table\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                />\\n                Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                />\\n                Spell Check\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UserIcon\\\"\\n                  tabler=\\\"IconUser\\\"\\n                  hugeicons=\\\"UserIcon\\\"\\n                  phosphor=\\\"UserIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Profile\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Sign out\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CopyIcon\\\"\\n                      tabler=\\\"IconCopy\\\"\\n                      hugeicons=\\\"CopyIcon\\\"\\n                      phosphor=\\\"CopyIcon\\\"\\n                      remixicon=\\\"RiFileCopyLine\\\"\\n                    />\\n                    Copy\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ScissorsIcon\\\"\\n                      tabler=\\\"IconCut\\\"\\n                      hugeicons=\\\"ScissorIcon\\\"\\n                      phosphor=\\\"ScissorsIcon\\\"\\n                      remixicon=\\\"RiScissorsLine\\\"\\n                    />\\n                    Cut\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClipboardPasteIcon\\\"\\n                      tabler=\\\"IconClipboard\\\"\\n                      hugeicons=\\\"ClipboardIcon\\\"\\n                      phosphor=\\\"ClipboardIcon\\\"\\n                      remixicon=\\\"RiClipboardLine\\\"\\n                    />\\n                    Paste\\n                  </MenubarItem>\\n                </MenubarGroup>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarGroup>\\n                      <MenubarItem>Save Page...</MenubarItem>\\n                      <MenubarItem>Create Shortcut...</MenubarItem>\\n                      <MenubarItem>Name Window...</MenubarItem>\\n                    </MenubarGroup>\\n                    <MenubarSeparator />\\n                    <MenubarGroup>\\n                      <MenubarItem>Developer Tools</MenubarItem>\\n                    </MenubarGroup>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarGroup>\\n                  <MenubarItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TrashIcon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"DeleteIcon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Delete\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\\n  return (\\n    <MenubarPrimitive.Root\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\n        \\\"flex h-8 items-center gap-0.5 rounded-none border p-1\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\\n  return <MenubarPrimitive.Menu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\\n  return <MenubarPrimitive.Group data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\\n  return <MenubarPrimitive.Portal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\\n  return (\\n    <MenubarPrimitive.RadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n  )\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\\n  return (\\n    <MenubarPrimitive.Trigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-none px-1.5 py-[calc(--spacing(0.8))] text-xs font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\\n  return (\\n    <MenubarPortal>\\n      <MenubarPrimitive.Content\\n        data-slot=\\\"menubar-content\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 min-w-36 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </MenubarPortal>\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenubarPrimitive.Item\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-28 pl-8 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-none py-2 pr-2 pl-8 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.Label\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\\"px-2 py-2 text-xs data-inset:pl-8\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\\n  return (\\n    <MenubarPrimitive.Separator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\\n  return <MenubarPrimitive.Sub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.SubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-none select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto size-4\\\"\\n      />\\n    </MenubarPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\\n  return (\\n    <MenubarPrimitive.SubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-none bg-popover text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-lyra/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-8 w-full min-w-0 appearance-none rounded-none border border-input bg-transparent py-1 pr-8 pl-2.5 text-xs transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-none data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/radix-lyra/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuWithViewport />\\n      <NavigationMenuWithoutViewport />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuWithViewport() {\\n  return (\\n    <Example title=\\\"With Viewport\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-1 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction NavigationMenuWithoutViewport() {\\n  return (\\n    <Example title=\\\"Without Viewport\\\">\\n      <NavigationMenu viewport={false}>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-72\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Components</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Browse all components in the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Documentation</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Learn how to use the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Blog</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Read our latest blog posts.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Simple List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul>\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Components</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Documentation</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Blocks</Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Backlog\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      To Do\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Done\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink asChild>\\n        <Link href={href}>\\n          <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n            <div className=\\\"leading-none font-medium\\\">{title}</div>\\n            <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n          </div>\\n        </Link>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/navigation-menu.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { NavigationMenu as NavigationMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  className,\\n  children,\\n  viewport = true,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\\n  viewport?: boolean\\n}) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      data-viewport={viewport}\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {viewport && <NavigationMenuViewport />}\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-none bg-background px-2.5 py-1.5 text-xs font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"top-0 left-0 w-full p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-none group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuViewport({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"absolute top-full left-0 isolate z-50 flex justify-center\\\"\\n      )}\\n    >\\n      <NavigationMenuPrimitive.Viewport\\n        data-slot=\\\"navigation-menu-viewport\\\"\\n        className={cn(\\n          \\\"origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-none bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-none p-2 text-xs transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-none data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\\n  return (\\n    <NavigationMenuPrimitive.Indicator\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-none bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Indicator>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuList,\\n  NavigationMenuItem,\\n  NavigationMenuContent,\\n  NavigationMenuTrigger,\\n  NavigationMenuLink,\\n  NavigationMenuIndicator,\\n  NavigationMenuViewport,\\n  navigationMenuTriggerStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/pagination-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/radix-lyra/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-0.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      asChild\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n    >\\n      <a\\n        aria-current={isActive ? \\\"page\\\" : undefined}\\n        data-slot=\\\"pagination-link\\\"\\n        data-active={isActive}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-1.5!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-1.5!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-lyra/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Start\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Center\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              End\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Popover\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Content\\n        data-slot=\\\"popover-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-none bg-popover p-2.5 text-xs text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverAnchor({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\\n  return <PopoverPrimitive.Anchor data-slot=\\\"popover-anchor\\\" {...props} />\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\\\"h2\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverAnchor,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/radix-lyra/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/radix-lyra/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/radix-lyra/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/radix-lyra/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/radix-lyra/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/radix-lyra/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/radix-lyra/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/radix-lyra/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/radix-lyra/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/radix-lyra/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/radix-lyra/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/radix-lyra/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/radix-lyra/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/radix-lyra/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/radix-lyra/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/radix-lyra/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/radix-lyra/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/radix-lyra/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/radix-lyra/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/radix-lyra/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/radix-lyra/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/radix-lyra/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/radix-lyra/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/radix-lyra/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/radix-lyra/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/radix-lyra/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/radix-lyra/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/radix-lyra/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/radix-lyra/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/radix-lyra/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/radix-lyra/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport { Progress } from \\\"@/registry/radix-lyra/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/radix-lyra/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"progress-upload\\\">\\n          <span>Upload progress</span>\\n          <span className=\\\"ml-auto\\\">66%</span>\\n        </FieldLabel>\\n        <Progress value={66} className=\\\"w-full\\\" id=\\\"progress-upload\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState([50])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value[0]} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Progress as ProgressPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  value,\\n  ...props\\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\\n  return (\\n    <ProgressPrimitive.Root\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\n        \\\"relative flex h-1 w-full items-center overflow-x-hidden rounded-none bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"size-full flex-1 bg-primary transition-all\\\"\\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n      />\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nexport { Progress }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-lyra/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction RadioGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\\n  return (\\n    <RadioGroupPrimitive.Root\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\\n  return (\\n    <RadioGroupPrimitive.Item\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioGroupPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-lyra/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/radix-lyra/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-none bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/radix-lyra/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\\n  return (\\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.ScrollAreaThumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-none bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-lyra/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartLineIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            <SelectItem value=\\\"carrot\\\">Carrot</SelectItem>\\n            <SelectItem value=\\\"broccoli\\\">Broccoli</SelectItem>\\n            <SelectItem value=\\\"spinach\\\">Spinach</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select an item\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {Array.from({ length: 100 }).map((_, i) => (\\n              <SelectItem key={i} value={`item-${i}`}>\\n                Item {i}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue placeholder=\\\"Small size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue placeholder=\\\"Default size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue placeholder=\\\"Small\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Default\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  return (\\n    <Example title=\\\"Popper\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent position=\\\"popper\\\">\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue placeholder=\\\"Filter\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"inactive\\\">Inactive</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select disabled>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Disabled\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  const [plan, setPlan] = React.useState<string>(plans[0].name)\\n\\n  const selectedPlan = plans.find((p) => p.name === plan)\\n\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select value={plan} onValueChange={setPlan}>\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {selectedPlan && <SelectPlanItem plan={selectedPlan} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan.name}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Select({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\\n  return <SelectPrimitive.Root data-slot=\\\"select\\\" {...props} />\\n}\\n\\nfunction SelectGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\\n  return <SelectPrimitive.Value data-slot=\\\"select-value\\\" {...props} />\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-none border border-input bg-transparent py-2 pr-2 pl-2.5 text-xs whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-none *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon asChild>\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n        />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"item-aligned\\\",\\n  align = \\\"center\\\",\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Content\\n        data-slot=\\\"select-content\\\"\\n        data-align-trigger={position === \\\"item-aligned\\\"}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          position === \\\"popper\\\" &&\\n            \\\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\\\",\\n          className\\n        )}\\n        position={position}\\n        align={align}\\n        {...props}\\n      >\\n        <SelectScrollUpButton />\\n        <SelectPrimitive.Viewport\\n          data-position={position}\\n          className={cn(\\n            \\\"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\\\",\\n            position === \\\"popper\\\" && \\\"\\\"\\n          )}\\n        >\\n          {children}\\n        </SelectPrimitive.Viewport>\\n        <SelectScrollDownButton />\\n      </SelectPrimitive.Content>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\\n  return (\\n    <SelectPrimitive.Label\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-2 py-2 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\">\\n        <SelectPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </SelectPrimitive.ItemIndicator>\\n      </span>\\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\\"pointer-events-none -mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\\n  return (\\n    <SelectPrimitive.ScrollUpButton\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpButton>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\\n  return (\\n    <SelectPrimitive.ScrollDownButton\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownButton>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Separator as SeparatorPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  decorative = true,\\n  ...props\\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\\n  return (\\n    <SeparatorPrimitive.Root\\n      data-slot=\\\"separator\\\"\\n      decorative={decorative}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open</Button>\\n        </SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\\n  return (\\n    <SheetPrimitive.Overlay\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 text-xs/relaxed duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col bg-background bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-3 right-3\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Content>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-0.5 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-lyra/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-lyra/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {/* We create a SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild isActive={item.isActive}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-lyra/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-lyra/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-lyra/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuButton>\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"PlusIcon\\\"\\n                        tabler=\\\"IconPlus\\\"\\n                        hugeicons=\\\"PlusSignIcon\\\"\\n                        phosphor=\\\"PlusIcon\\\"\\n                        remixicon=\\\"RiAddLine\\\"\\n                        className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\"\\n                      />\\n                      <IconPlaceholder\\n                        lucide=\\\"MinusIcon\\\"\\n                        tabler=\\\"IconMinus\\\"\\n                        hugeicons=\\\"MinusSignIcon\\\"\\n                        phosphor=\\\"MinusIcon\\\"\\n                        remixicon=\\\"RiSubtractLine\\\"\\n                        className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\"\\n                      />\\n                    </SidebarMenuButton>\\n                  </CollapsibleTrigger>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              asChild\\n                              isActive={item.isActive}\\n                            >\\n                              <a href={item.url}>{item.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-lyra/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/radix-lyra/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem asChild key={item.title}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-lyra/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-lyra/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/radix-lyra/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-lyra/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-lyra/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-lyra/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-lyra/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-lyra/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/radix-lyra/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/radix-lyra/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TerminalIcon\\\"\\n                      tabler=\\\"IconCommand\\\"\\n                      hugeicons=\\\"CommandIcon\\\"\\n                      phosphor=\\\"CommandIcon\\\"\\n                      remixicon=\\\"RiCommandLine\\\"\\n                      className=\\\"size-4\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/radix-lyra/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-lyra/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-lyra/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-lyra/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-lyra/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-lyra/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-lyra/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\n\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\ntype TreeItem = string | TreeItem[]\\n\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"FolderIcon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-lyra/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-lyra/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-lyra/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-lyra/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/radix-lyra/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            {item.icon}\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-screen w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-lyra/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-lyra/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-lyra/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-lyra/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-lyra/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-lyra/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-lyra/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-lyra/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-lyra/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-lyra/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                      <ItemContent>\\n                        <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                        <ItemDescription>v{selectedVersion}</ItemDescription>\\n                      </ItemContent>\\n                      <ItemActions>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronsUpDownIcon\\\"\\n                          tabler=\\\"IconSelector\\\"\\n                          hugeicons=\\\"UnfoldMoreIcon\\\"\\n                          phosphor=\\\"CaretUpDownIcon\\\"\\n                          remixicon=\\\"RiArrowUpDownLine\\\"\\n                        />\\n                      </ItemActions>\\n                    </Item>\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    {data.versions.map((version) => (\\n                      <DropdownMenuItem\\n                        key={version}\\n                        onSelect={() => setSelectedVersion(version)}\\n                      >\\n                        v{version}{\\\" \\\"}\\n                        {version === selectedVersion && (\\n                          <IconPlaceholder\\n                            lucide=\\\"CheckIcon\\\"\\n                            tabler=\\\"IconCheck\\\"\\n                            hugeicons=\\\"Tick02Icon\\\"\\n                            phosphor=\\\"CheckIcon\\\"\\n                            remixicon=\\\"RiCheckLine\\\"\\n                            className=\\\"ml-auto\\\"\\n                          />\\n                        )}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton asChild isActive={subItem.isActive}>\\n                        <a href={subItem.url}>{subItem.title}</a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v1.0.0</ItemDescription>\\n                    </ItemContent>\\n                  </Item>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                        {item.title}{\\\" \\\"}\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      </SidebarMenuButton>\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem asChild key={subItem.title}>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-lyra/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-lyra/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Button size=\\\"icon-sm\\\" asChild className=\\\"size-8\\\">\\n                      <span>\\n                        <svg\\n                          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                          viewBox=\\\"0 0 256 256\\\"\\n                        >\\n                          <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                          <line\\n                            x1=\\\"208\\\"\\n                            y1=\\\"128\\\"\\n                            x2=\\\"128\\\"\\n                            y2=\\\"208\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                          <line\\n                            x1=\\\"192\\\"\\n                            y1=\\\"40\\\"\\n                            x2=\\\"40\\\"\\n                            y2=\\\"192\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                        </svg>\\n                      </span>\\n                    </Button>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {activeTeam.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {activeTeam.plan}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton tooltip={item.title} asChild>\\n                      <CollapsibleTrigger>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                          className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                        />\\n                      </CollapsibleTrigger>\\n                    </SidebarMenuButton>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton asChild>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      {item.icon}\\n                      {item.name}\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar>\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-lyra/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-lyra/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton\\n                      asChild\\n                      tooltip={item.title}\\n                      isActive={item.isActive}\\n                    >\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    {item.items?.length ? (\\n                      <>\\n                        <CollapsibleTrigger asChild>\\n                          <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                            <IconPlaceholder\\n                              lucide=\\\"ChevronRightIcon\\\"\\n                              tabler=\\\"IconChevronRight\\\"\\n                              hugeicons=\\\"ArrowRight01Icon\\\"\\n                              phosphor=\\\"CaretRightIcon\\\"\\n                              remixicon=\\\"RiArrowRightSLine\\\"\\n                            />\\n                            <span className=\\\"sr-only\\\">Toggle</span>\\n                          </SidebarMenuAction>\\n                        </CollapsibleTrigger>\\n                        <CollapsibleContent>\\n                          <SidebarMenuSub>\\n                            {item.items.map((subItem) => (\\n                              <SidebarMenuSubItem key={subItem.title}>\\n                                <SidebarMenuSubButton asChild>\\n                                  <a href={subItem.url}>\\n                                    <span>{subItem.title}</span>\\n                                  </a>\\n                                </SidebarMenuSubButton>\\n                              </SidebarMenuSubItem>\\n                            ))}\\n                          </SidebarMenuSub>\\n                        </CollapsibleContent>\\n                      </>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild size=\\\"sm\\\">\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"tooltip\",\n    \"input\",\n    \"use-mobile\",\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-lyra/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport { Separator } from \\\"@/registry/radix-lyra/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/radix-lyra/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/radix-lyra/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-none group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-none md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"flex h-8 shrink-0 items-center rounded-none px-2 text-xs text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-none p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-none p-2 text-left text-xs ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-xs\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-xs group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  asChild = false,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  isActive?: boolean\\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n  const { isMobile, state } = useSidebar()\\n\\n  const button = (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-button\\\"\\n      data-sidebar=\\\"menu-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\\n      {...props}\\n    />\\n  )\\n\\n  if (!tooltip) {\\n    return button\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  asChild = false,\\n  showOnHover = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  showOnHover?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-none p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        showOnHover &&\\n          \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-none px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-none px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-none\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  asChild = false,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n  size?: \\\"sm\\\" | \\\"md\\\"\\n  isActive?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-sub-button\\\"\\n      data-sidebar=\\\"menu-sub-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(\\n        \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-none px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-xs data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-lyra/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-lyra/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-lyra/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-lyra/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-lyra/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-lyra/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/radix-lyra/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/radix-lyra/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-none bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport { Slider } from \\\"@/registry/radix-lyra/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      className={cn(\\n        \\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SliderPrimitive.Track\\n        data-slot=\\\"slider-track\\\"\\n        className=\\\"relative grow overflow-hidden rounded-none bg-muted data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\\\"\\n      >\\n        <SliderPrimitive.Range\\n          data-slot=\\\"slider-range\\\"\\n          className=\\\"absolute bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n        />\\n      </SliderPrimitive.Track>\\n      {Array.from({ length: _values.length }, (_, index) => (\\n        <SliderPrimitive.Thumb\\n          data-slot=\\\"slider-thumb\\\"\\n          key={index}\\n          className=\\\"relative block size-3 shrink-0 rounded-none border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-1 focus-visible:ring-1 focus-visible:outline-hidden active:ring-1 disabled:pointer-events-none disabled:opacity-50\\\"\\n        />\\n      ))}\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-lyra/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-lyra/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-lyra/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/radix-lyra/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Label } from \\\"@/registry/radix-lyra/ui/label\\\"\\nimport { Switch } from \\\"@/registry/radix-lyra/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Switch as SwitchPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/table-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-lyra/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"sarah\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>In Progress</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"marcus\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Pending</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"emily\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Not Started</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-xs\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-lyra/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Tabs as TabsPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-none p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List> &\\n  VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\\n  return (\\n    <TabsPrimitive.Trigger\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-none border border-transparent px-1.5 py-0.5 text-xs font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:py-[calc(--spacing(1.25))] hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\\n  return (\\n    <TabsPrimitive.Content\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-xs/relaxed outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/radix-lyra/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full rounded-none border border-input bg-transparent px-2.5 py-2 text-xs transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 md:text-xs dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/radix-lyra/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              data-icon=\\\"inline-start\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-lyra/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-lyra/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-lyra/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-lyra/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup type=\\\"multiple\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"single\\\" defaultValue=\\\"all\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"multiple\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          size=\\\"sm\\\"\\n          defaultValue=\\\"top\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"top\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup type=\\\"multiple\\\" variant=\\\"outline\\\" spacing={1} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:*:[svg]:stroke-foregfill-foreground aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup type=\\\"single\\\" defaultValue=\\\"all\\\" variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"today\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"newest\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"all\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"archived\\\">Archived</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"grid\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup type=\\\"multiple\\\" orientation=\\\"vertical\\\" spacing={2}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"single\\\"\\n        defaultValue=\\\"all\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"multiple\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          value={fontWeight}\\n          onValueChange={(value) => setFontWeight(value)}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/radix-lyra/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-none data-[size=sm]:rounded-none data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive.Root>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\\n  VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <ToggleGroupPrimitive.Item\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-none group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-none group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </ToggleGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Toggle as TogglePrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-none text-xs font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 min-w-8 px-2\\\",\\n        sm: \\\"h-7 min-w-7 rounded-none px-1.5\\\",\\n        lg: \\\"h-9 min-w-9 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive.Root\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-lyra/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-lyra/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/radix-lyra/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-lyra/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {([\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\">\\n                {side}\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InfoIcon\\\"\\n              tabler=\\\"IconInfoCircle\\\"\\n              hugeicons=\\\"AlertCircleIcon\\\"\\n              phosphor=\\\"InfoIcon\\\"\\n              remixicon=\\\"RiInformationLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Info</span>\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <span className=\\\"inline-block w-fit\\\">\\n            <Button variant=\\\"outline\\\" disabled>\\n              Disabled\\n            </Button>\\n          </span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <a\\n            href=\\\"#\\\"\\n            className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n            onClick={(e) => e.preventDefault()}\\n          >\\n            Learn more\\n          </a>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Status\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Tooltip as TooltipPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-lyra/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delayDuration = 0,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delayDuration={delayDuration}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  sideOffset = 0,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Content\\n        data-slot=\\\"tooltip-content\\\"\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-none bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-none data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-none bg-foreground fill-foreground\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-lyra/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-lyra/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/radix-maia/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion type=\\\"single\\\" collapsible className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion type=\\\"multiple\\\" className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            type=\\\"single\\\"\\n            collapsible\\n            defaultValue=\\\"plans\\\"\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Accordion as AccordionPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\n        \\\"flex w-full flex-col overflow-hidden rounded-2xl border\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b data-open:bg-muted/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between gap-6 border border-transparent p-4 text-left text-sm font-medium transition-all outline-none hover:underline disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\\n  return (\\n    <AccordionPrimitive.Content\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden px-4 text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--radix-accordion-content-height) pt-0 pb-4 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Content>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"destructive\\\">Delete Chat</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Open Alert Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\n\\nfunction AlertDialog({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\\n  return (\\n    <AlertDialogPrimitive.Overlay\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-background p-6 ring-1 ring-foreground/5 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Action\\n        data-slot=\\\"alert-dialog-action\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Cancel\\n        data-slot=\\\"alert-dialog-cancel\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/radix-maia/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\\"absolute top-2.5 right-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/radix-maia/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { AspectRatio as AspectRatioPrimitive } from \\\"radix-ui\\\"\\n\\nfunction AspectRatio({\\n  ...props\\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\\n  return <AspectRatioPrimitive.Root data-slot=\\\"aspect-ratio\\\" {...props} />\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-maia/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/radix-maia/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge asChild>\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"secondary\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"destructive\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"outline\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"ghost\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"link\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/badge.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border bg-input/30 text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\n      data-variant={variant}\\n      className={cn(badgeVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n                  <BreadcrumbEllipsis />\\n                  <span className=\\\"sr-only\\\">Toggle menu</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Home</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Components</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  asChild,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"transition-colors hover:text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-5 items-center justify-center [&>svg]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/button-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-maia/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText asChild>\\n            <Label htmlFor=\\\"input-text\\\">GPU Size</Label>\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeOffIcon\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelect() {\\n  const [currency, setCurrency] = useState(\\\"$\\\")\\n\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select value={currency} onValueChange={setCurrency}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"$\\\">$</SelectItem>\\n                <SelectItem value=\\\"€\\\">€</SelectItem>\\n                <SelectItem value=\\\"£\\\">£</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button variant=\\\"outline\\\" asChild size=\\\"icon\\\" className=\\\"w-12\\\">\\n          <span>1.2K</span>\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select defaultValue=\\\"hours\\\">\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue placeholder=\\\"Select duration\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              <SelectItem value=\\\"hours\\\">Hours</SelectItem>\\n              <SelectItem value=\\\"days\\\">Days</SelectItem>\\n              <SelectItem value=\\\"weeks\\\">Weeks</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"AudioLinesIcon\\\"\\n                    tabler=\\\"IconHeadphones\\\"\\n                    hugeicons=\\\"AudioWave01Icon\\\"\\n                    phosphor=\\\"MicrophoneIcon\\\"\\n                    remixicon=\\\"RiMicLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/button-group.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-4xl [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-4xl!\\\",\\n        vertical:\\n          \\\"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-4xl!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-4xl border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/button.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-4xl border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\\\",\\n        xs: \\\"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\\\",\\n        lg: \\\"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\\\",\\n        icon: \\\"size-9\\\",\\n        \\\"icon-xs\\\": \\\"size-6 [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\": \\\"size-8\\\",\\n        \\\"icon-lg\\\": \\\"size-10\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"button\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/radix-maia/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-maia/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-maia/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Open Calendar\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent className=\\\"px-4\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-simple\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker-range\\\"\\n              variant=\\\"outline\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date?.from ? (\\n                date.to ? (\\n                  <>\\n                    {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                    {format(date.to, \\\"LLL dd, y\\\")}\\n                  </>\\n                ) : (\\n                  format(date.from, \\\"LLL dd, y\\\")\\n                )\\n              ) : (\\n                <span>Pick a date</span>\\n              )}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-with-dropdowns-desktop\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDownIcon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-3 [--cell-radius:var(--radius-4xl)] [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center style-nova:mt-2\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-6 overflow-hidden rounded-2xl bg-card py-6 text-sm text-card-foreground ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-2 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\\"cn-font-heading text-base font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-6 group-data-[size=sm]/card:px-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/cards.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cards\",\n  \"title\": \"Cards\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/alert-dialog\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-maia/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-maia/ui/checkbox\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-maia/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-maia/ui/empty\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-maia/ui/popover\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-maia/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-maia/ui/sheet\\\"\\nimport { Slider } from \\\"@/registry/radix-maia/ui/slider\\\"\\nimport { Spinner } from \\\"@/registry/radix-maia/ui/spinner\\\"\\nimport { Switch } from \\\"@/registry/radix-maia/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ObservabilityCard />\\n      <SmallFormExample />\\n      <FormExample />\\n      <FieldExamples />\\n      <ItemExample />\\n      <ButtonGroupExamples />\\n      <EmptyAvatarGroup />\\n      <InputGroupExamples />\\n      <SheetExample />\\n      <BadgeExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction FieldExamples() {\\n  const [gpuCount, setGpuCount] = React.useState(8)\\n  const [value, setValue] = useState([200, 800])\\n  const handleGpuAdjustment = React.useCallback((adjustment: number) => {\\n    setGpuCount((prevCount) =>\\n      Math.max(1, Math.min(99, prevCount + adjustment))\\n    )\\n  }, [])\\n\\n  const handleGpuInputChange = React.useCallback(\\n    (e: React.ChangeEvent<HTMLInputElement>) => {\\n      const value = parseInt(e.target.value, 10)\\n      if (!isNaN(value) && value >= 1 && value <= 99) {\\n        setGpuCount(value)\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"Fields\\\">\\n      <FieldSet className=\\\"w-full max-w-md\\\">\\n        <FieldGroup>\\n          <FieldSet>\\n            <FieldLegend>Compute Environment</FieldLegend>\\n            <FieldDescription>\\n              Select the compute environment for your cluster.\\n            </FieldDescription>\\n            <RadioGroup defaultValue=\\\"kubernetes\\\">\\n              <FieldLabel htmlFor=\\\"kubernetes-r2h\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Kubernetes</FieldTitle>\\n                    <FieldDescription>\\n                      Run GPU workloads on a K8s configured cluster. This is the\\n                      default.\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"kubernetes\\\"\\n                    id=\\\"kubernetes-r2h\\\"\\n                    aria-label=\\\"Kubernetes\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n              <FieldLabel htmlFor=\\\"vm-z4k\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Virtual Machine</FieldTitle>\\n                    <FieldDescription>\\n                      Access a VM configured cluster to run workloads. (Coming\\n                      soon)\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"vm\\\"\\n                    id=\\\"vm-z4k\\\"\\n                    aria-label=\\\"Virtual Machine\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n            </RadioGroup>\\n          </FieldSet>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"number-of-gpus-f6l\\\">\\n                Number of GPUs\\n              </FieldLabel>\\n              <FieldDescription>You can add more later.</FieldDescription>\\n            </FieldContent>\\n            <ButtonGroup>\\n              <Input\\n                id=\\\"number-of-gpus-f6l\\\"\\n                value={gpuCount}\\n                onChange={handleGpuInputChange}\\n                size={3}\\n                maxLength={3}\\n              />\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Decrement\\\"\\n                onClick={() => handleGpuAdjustment(-1)}\\n                disabled={gpuCount <= 1}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MinusIcon\\\"\\n                  tabler=\\\"IconMinus\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Increment\\\"\\n                onClick={() => handleGpuAdjustment(1)}\\n                disabled={gpuCount >= 99}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </Button>\\n            </ButtonGroup>\\n          </Field>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"tinting\\\">Wallpaper Tinting</FieldLabel>\\n              <FieldDescription>\\n                Allow the wallpaper to be tinted.\\n              </FieldDescription>\\n            </FieldContent>\\n            <Switch id=\\\"tinting\\\" defaultChecked />\\n          </Field>\\n          <FieldSeparator />\\n          <FieldLabel htmlFor=\\\"checkbox-demo\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"checkbox-demo\\\" defaultChecked />\\n              <FieldLabel htmlFor=\\\"checkbox-demo\\\" className=\\\"line-clamp-1\\\">\\n                I agree to the terms and conditions\\n              </FieldLabel>\\n            </Field>\\n          </FieldLabel>\\n          <FieldSeparator />\\n          <Field>\\n            <FieldTitle>Price Range</FieldTitle>\\n            <FieldDescription>\\n              Set your budget range ($\\n              <span className=\\\"font-medium tabular-nums\\\">\\n                {value[0]}\\n              </span> -{\\\" \\\"}\\n              <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n            </FieldDescription>\\n            <Slider\\n              value={value}\\n              onValueChange={(val) => setValue(val as number[])}\\n              max={1000}\\n              min={0}\\n              step={10}\\n              className=\\\"mt-2 w-full\\\"\\n              aria-label=\\\"Price Range\\\"\\n            />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"submit\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              Cancel\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupExamples() {\\n  const [label, setLabel] = React.useState(\\\"personal\\\")\\n\\n  return (\\n    <Example title=\\\"Button Group\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Go Back\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Archive\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Report\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Snooze\\n            </Button>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button\\n                  variant=\\\"outline\\\"\\n                  size=\\\"icon-sm\\\"\\n                  aria-label=\\\"More Options\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-48\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"MailCheckIcon\\\"\\n                      tabler=\\\"IconMailCheck\\\"\\n                      hugeicons=\\\"MailValidation01Icon\\\"\\n                      phosphor=\\\"EnvelopeIcon\\\"\\n                      remixicon=\\\"RiMailLine\\\"\\n                    />\\n                    Mark as Read\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArchiveIcon\\\"\\n                      tabler=\\\"IconArchive\\\"\\n                      hugeicons=\\\"ArchiveIcon\\\"\\n                      phosphor=\\\"ArchiveIcon\\\"\\n                      remixicon=\\\"RiArchiveLine\\\"\\n                    />\\n                    Archive\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClockIcon\\\"\\n                      tabler=\\\"IconClock\\\"\\n                      hugeicons=\\\"ClockIcon\\\"\\n                      phosphor=\\\"ClockIcon\\\"\\n                      remixicon=\\\"RiTimeLine\\\"\\n                    />\\n                    Snooze\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CalendarPlusIcon\\\"\\n                      tabler=\\\"IconCalendarPlus\\\"\\n                      hugeicons=\\\"CalendarAdd01Icon\\\"\\n                      phosphor=\\\"CalendarPlusIcon\\\"\\n                      remixicon=\\\"RiCalendarEventLine\\\"\\n                    />\\n                    Add to Calendar\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ListFilterIcon\\\"\\n                      tabler=\\\"IconFilterPlus\\\"\\n                      hugeicons=\\\"AddToListIcon\\\"\\n                      phosphor=\\\"ListPlusIcon\\\"\\n                      remixicon=\\\"RiPlayListAddLine\\\"\\n                    />\\n                    Add to List\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"TagIcon\\\"\\n                        tabler=\\\"IconTag\\\"\\n                        hugeicons=\\\"TagIcon\\\"\\n                        phosphor=\\\"TagIcon\\\"\\n                        remixicon=\\\"RiPriceTagLine\\\"\\n                      />\\n                      Label As...\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuSubContent>\\n                      <DropdownMenuRadioGroup\\n                        value={label}\\n                        onValueChange={setLabel}\\n                      >\\n                        <DropdownMenuRadioItem value=\\\"personal\\\">\\n                          Personal\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"work\\\">\\n                          Work\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"other\\\">\\n                          Other\\n                        </DropdownMenuRadioItem>\\n                      </DropdownMenuRadioGroup>\\n                    </DropdownMenuSubContent>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Trash\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Previous\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Next\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <div className=\\\"flex gap-4\\\">\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">1</Button>\\n              <Button variant=\\\"outline\\\">2</Button>\\n              <Button variant=\\\"outline\\\">3</Button>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">Follow</Button>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\" className=\\\"w-52\\\">\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"VolumeX\\\"\\n                        tabler=\\\"IconVolume\\\"\\n                        hugeicons=\\\"VolumeOffIcon\\\"\\n                        phosphor=\\\"SpeakerSlashIcon\\\"\\n                        remixicon=\\\"RiVolumeMuteLine\\\"\\n                      />\\n                      Mute Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CheckIcon\\\"\\n                        tabler=\\\"IconCheck\\\"\\n                        hugeicons=\\\"Tick02Icon\\\"\\n                        phosphor=\\\"CheckIcon\\\"\\n                        remixicon=\\\"RiCheckLine\\\"\\n                      />\\n                      Mark as Read\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"UserRoundXIcon\\\"\\n                        tabler=\\\"IconUserX\\\"\\n                        hugeicons=\\\"UserRemove01Icon\\\"\\n                        phosphor=\\\"UserMinusIcon\\\"\\n                        remixicon=\\\"RiUserUnfollowLine\\\"\\n                      />\\n                      Block User\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShareIcon\\\"\\n                        tabler=\\\"IconShare\\\"\\n                        hugeicons=\\\"Share03Icon\\\"\\n                        phosphor=\\\"ShareIcon\\\"\\n                        remixicon=\\\"RiShareLine\\\"\\n                      />\\n                      Share Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CopyIcon\\\"\\n                        tabler=\\\"IconCopy\\\"\\n                        hugeicons=\\\"Copy01Icon\\\"\\n                        phosphor=\\\"CopyIcon\\\"\\n                        remixicon=\\\"RiFileCopyLine\\\"\\n                      />\\n                      Copy Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"AlertTriangleIcon\\\"\\n                        tabler=\\\"IconAlertTriangle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Report Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem variant=\\\"destructive\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"TrashIcon\\\"\\n                        tabler=\\\"IconTrash\\\"\\n                        hugeicons=\\\"Delete02Icon\\\"\\n                        phosphor=\\\"TrashIcon\\\"\\n                        remixicon=\\\"RiDeleteBinLine\\\"\\n                      />\\n                      Delete Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"BotIcon\\\"\\n                  tabler=\\\"IconRobot\\\"\\n                  hugeicons=\\\"BotIcon\\\"\\n                  phosphor=\\\"RobotIcon\\\"\\n                  remixicon=\\\"RiRobotLine\\\"\\n                />{\\\" \\\"}\\n                Copilot\\n              </Button>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    aria-label=\\\"Open Popover\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </PopoverTrigger>\\n                <PopoverContent align=\\\"end\\\" className=\\\"w-96\\\">\\n                  <PopoverHeader>\\n                    <PopoverTitle>Agent Tasks</PopoverTitle>\\n                    <PopoverDescription>\\n                      Describe your task in natural language. Copilot will work\\n                      in the background and open a pull request.\\n                    </PopoverDescription>\\n                  </PopoverHeader>\\n                  <div className=\\\"text-sm *:[p:not(:last-child)]:mb-2\\\">\\n                    <Textarea\\n                      placeholder=\\\"Describe your task in natural language.\\\"\\n                      className=\\\"min-h-32 resize-none\\\"\\n                    />\\n                  </div>\\n                </PopoverContent>\\n              </Popover>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupExamples() {\\n  const [isFavorite, setIsFavorite] = React.useState(false)\\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Input Group\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Search...\\\" />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"example.com\\\" className=\\\"!pl-1\\\" />\\n          <InputGroupAddon>\\n            <InputGroupText>https://</InputGroupText>\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupButton\\n                  className=\\\"rounded-full\\\"\\n                  size=\\\"icon-xs\\\"\\n                  aria-label=\\\"Info\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </TooltipTrigger>\\n              <TooltipContent>This is content in a tooltip.</TooltipContent>\\n            </Tooltip>\\n          </InputGroupAddon>\\n        </InputGroup>\\n        <Field>\\n          <Label htmlFor=\\\"input-secure-19\\\" className=\\\"sr-only\\\">\\n            Input Secure\\n          </Label>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-secure-19\\\" className=\\\"!pl-0.5\\\" />\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton\\n                    variant=\\\"secondary\\\"\\n                    size=\\\"icon-xs\\\"\\n                    aria-label=\\\"Info\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent\\n                align=\\\"start\\\"\\n                alignOffset={10}\\n                className=\\\"flex flex-col gap-1 rounded-xl text-sm\\\"\\n              >\\n                <p className=\\\"font-medium\\\">Your connection is not secure.</p>\\n                <p>\\n                  You should not enter any sensitive information on this site.\\n                </p>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"text-muted-foreground !pl-1\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                onClick={() => setIsFavorite(!isFavorite)}\\n                size=\\\"icon-xs\\\"\\n                aria-label=\\\"Favorite\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                  data-favorite={isFavorite}\\n                  className=\\\"data-[favorite=true]:fill-primary data-[favorite=true]:stroke-primary\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <ButtonGroup className=\\\"w-full\\\">\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"Add\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"flex-1\\\">\\n            <InputGroup>\\n              <InputGroupInput\\n                placeholder={\\n                  voiceEnabled\\n                    ? \\\"Record and send audio...\\\"\\n                    : \\\"Send a message...\\\"\\n                }\\n                disabled={voiceEnabled}\\n              />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <Tooltip>\\n                  <TooltipTrigger asChild>\\n                    <InputGroupButton\\n                      onClick={() => setVoiceEnabled(!voiceEnabled)}\\n                      data-active={voiceEnabled}\\n                      className=\\\"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground\\\"\\n                      aria-pressed={voiceEnabled}\\n                      size=\\\"icon-xs\\\"\\n                      aria-label=\\\"Voice Mode\\\"\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"AudioLinesIcon\\\"\\n                        tabler=\\\"IconWaveSine\\\"\\n                        hugeicons=\\\"AudioWave01Icon\\\"\\n                        phosphor=\\\"MicrophoneIcon\\\"\\n                        remixicon=\\\"RiMicLine\\\"\\n                      />\\n                    </InputGroupButton>\\n                  </TooltipTrigger>\\n                  <TooltipContent>Voice Mode</TooltipContent>\\n                </Tooltip>\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <InputGroup>\\n          <InputGroupTextarea placeholder=\\\"Ask, Search or Chat...\\\" />\\n          <InputGroupAddon align=\\\"block-end\\\">\\n            <InputGroupButton\\n              variant=\\\"outline\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n              aria-label=\\\"Add\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </InputGroupButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <InputGroupButton variant=\\\"ghost\\\">Auto</InputGroupButton>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                side=\\\"top\\\"\\n                align=\\\"start\\\"\\n                className=\\\"[--radius:0.95rem]\\\"\\n              >\\n                <DropdownMenuItem>Auto</DropdownMenuItem>\\n                <DropdownMenuItem>Agent</DropdownMenuItem>\\n                <DropdownMenuItem>Manual</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n            <InputGroupText className=\\\"ml-auto\\\">52% used</InputGroupText>\\n            <Separator orientation=\\\"vertical\\\" className=\\\"!h-4\\\" />\\n            <InputGroupButton\\n              variant=\\\"default\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpIcon\\\"\\n                tabler=\\\"IconArrowUp\\\"\\n                hugeicons=\\\"ArrowUp01Icon\\\"\\n                phosphor=\\\"ArrowUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Send</span>\\n            </InputGroupButton>\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyAvatarGroup() {\\n  return (\\n    <Example title=\\\"Empty\\\">\\n      <Empty className=\\\"h-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup className=\\\"grayscale\\\">\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button variant=\\\"outline\\\">Show Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent>\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Connect Mouse</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogMedia>\\n                    <IconPlaceholder\\n                      lucide=\\\"BluetoothIcon\\\"\\n                      tabler=\\\"IconBluetooth\\\"\\n                      hugeicons=\\\"BluetoothIcon\\\"\\n                      phosphor=\\\"BluetoothIcon\\\"\\n                      remixicon=\\\"RiBluetoothLine\\\"\\n                    />\\n                  </AlertDialogMedia>\\n                  <AlertDialogTitle>\\n                    Allow accessory to connect?\\n                  </AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    Do you want to allow the USB accessory to connect to this\\n                    device?\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                  <AlertDialogAction>Allow</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction FormExample() {\\n  return (\\n    <Example title=\\\"Complex Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Payment Method</CardTitle>\\n          <CardDescription>\\n            All transactions are secure and encrypted\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-card-name-43j\\\">\\n                      Name on Card\\n                    </FieldLabel>\\n                    <Input\\n                      id=\\\"checkout-7j9-card-name-43j\\\"\\n                      placeholder=\\\"John Doe\\\"\\n                      required\\n                    />\\n                  </Field>\\n                  <div className=\\\"grid grid-cols-3 gap-4\\\">\\n                    <Field className=\\\"col-span-2\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-card-number-uw1\\\">\\n                        Card Number\\n                      </FieldLabel>\\n                      <Input\\n                        id=\\\"checkout-7j9-card-number-uw1\\\"\\n                        placeholder=\\\"1234 5678 9012 3456\\\"\\n                        required\\n                      />\\n                      <FieldDescription>\\n                        Enter your 16-digit number.\\n                      </FieldDescription>\\n                    </Field>\\n                    <Field className=\\\"col-span-1\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-cvv\\\">CVV</FieldLabel>\\n                      <Input id=\\\"checkout-7j9-cvv\\\" placeholder=\\\"123\\\" required />\\n                    </Field>\\n                  </div>\\n                  <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-month-ts6\\\">\\n                        Month\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-month-ts6\\\">\\n                          <SelectValue placeholder=\\\"MM\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"01\\\">01</SelectItem>\\n                            <SelectItem value=\\\"02\\\">02</SelectItem>\\n                            <SelectItem value=\\\"03\\\">03</SelectItem>\\n                            <SelectItem value=\\\"04\\\">04</SelectItem>\\n                            <SelectItem value=\\\"05\\\">05</SelectItem>\\n                            <SelectItem value=\\\"06\\\">06</SelectItem>\\n                            <SelectItem value=\\\"07\\\">07</SelectItem>\\n                            <SelectItem value=\\\"08\\\">08</SelectItem>\\n                            <SelectItem value=\\\"09\\\">09</SelectItem>\\n                            <SelectItem value=\\\"10\\\">10</SelectItem>\\n                            <SelectItem value=\\\"11\\\">11</SelectItem>\\n                            <SelectItem value=\\\"12\\\">12</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-year-f59\\\">\\n                        Year\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-year-f59\\\">\\n                          <SelectValue placeholder=\\\"YYYY\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"2024\\\">2024</SelectItem>\\n                            <SelectItem value=\\\"2025\\\">2025</SelectItem>\\n                            <SelectItem value=\\\"2026\\\">2026</SelectItem>\\n                            <SelectItem value=\\\"2027\\\">2027</SelectItem>\\n                            <SelectItem value=\\\"2028\\\">2028</SelectItem>\\n                            <SelectItem value=\\\"2029\\\">2029</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                  </div>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldLegend>Billing Address</FieldLegend>\\n                <FieldDescription>\\n                  The billing address associated with your payment.\\n                </FieldDescription>\\n                <FieldGroup>\\n                  <Field orientation=\\\"horizontal\\\">\\n                    <Checkbox\\n                      id=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      defaultChecked\\n                    />\\n                    <FieldLabel\\n                      htmlFor=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      className=\\\"font-normal\\\"\\n                    >\\n                      Same as shipping address\\n                    </FieldLabel>\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-optional-comments\\\">\\n                      Comments\\n                    </FieldLabel>\\n                    <Textarea\\n                      id=\\\"checkout-7j9-optional-comments\\\"\\n                      placeholder=\\\"Add any additional comments\\\"\\n                    />\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction SmallFormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                align=\\\"end\\\"\\n                className=\\\"style-maia:w-56 style-mira:w-48 style-nova:w-48 style-vega:w-56 style-lyra:w-48\\\"\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction ObservabilityCard() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"bg-primary absolute inset-0 z-30 aspect-video opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button>\\n            Create Query{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction FieldSlider() {\\n  const [value, setValue] = useState([200, 800])\\n  return (\\n    <Example title=\\\"Field Slider\\\">\\n      <div className=\\\"w-full max-w-md\\\">\\n        <Field>\\n          <FieldTitle>Price Range</FieldTitle>\\n          <FieldDescription>\\n            Set your budget range ($\\n            <span className=\\\"font-medium tabular-nums\\\">{value[0]}</span> -{\\\" \\\"}\\n            <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n          </FieldDescription>\\n          <Slider\\n            value={value}\\n            onValueChange={setValue}\\n            max={1000}\\n            min={0}\\n            step={10}\\n            className=\\\"mt-2 w-full\\\"\\n            aria-label=\\\"Price Range\\\"\\n          />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemExample() {\\n  return (\\n    <Example title=\\\"Item\\\">\\n      <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n        <Item variant=\\\"outline\\\">\\n          <ItemContent>\\n            <ItemTitle>Two-factor authentication</ItemTitle>\\n            <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n              Verify via email or phone number.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n              Enable\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"outline\\\" size=\\\"sm\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ShoppingBagIcon\\\"\\n                tabler=\\\"IconShoppingBag\\\"\\n                hugeicons=\\\"ShoppingBasket01Icon\\\"\\n                phosphor=\\\"BagIcon\\\"\\n                remixicon=\\\"RiShoppingBagLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Your order has been shipped.</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeExamples() {\\n  return (\\n    <Example title=\\\"Badge\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex items-center justify-center gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Syncing\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Updating\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Loading\\n        </Badge>\\n        <Badge variant=\\\"link\\\" className=\\\"hidden sm:flex\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithSpinner() {\\n  return (\\n    <Example title=\\\"Empty with Spinner\\\">\\n      <Empty className=\\\"w-full border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>Processing your request</EmptyTitle>\\n          <EmptyDescription>\\n            Please wait while we process your request. Do not refresh the page.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button size=\\\"sm\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Cancel\\n            </Button>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetExample() {\\n  return (\\n    <Example title=\\\"Sheet\\\">\\n      <div className=\\\"flex gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"secondary\\\" className=\\\"flex-1 capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"overflow-y-auto px-4 text-sm\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"style-lyra:mb-2 style-lyra:leading-relaxed mb-4 leading-normal\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/radix-maia/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-maia/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-maia/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-maia/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Checkbox as CheckboxPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-[6px] border border-input transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/radix-maia/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n              />\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"Folder01Icon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              {fileItem.name}\\n            </Button>\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                {isOpen ? (\\n                  <IconPlaceholder\\n                    lucide=\\\"MinimizeIcon\\\"\\n                    tabler=\\\"IconMinimize\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                ) : (\\n                  <IconPlaceholder\\n                    lucide=\\\"MaximizeIcon\\\"\\n                    tabler=\\\"IconMaximize\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                )}\\n              </Button>\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"radix-ui\\\"\\n\\nfunction Collapsible({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleTrigger\\n      data-slot=\\\"collapsible-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CollapsibleContent({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleContent\\n      data-slot=\\\"collapsible-content\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/radix-maia/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen} modal={false}>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue placeholder=\\\"Select a framework\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {frameworks.map((framework) => (\\n              <SelectItem key={framework} value={framework}>\\n                {framework}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            asChild\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          >\\n            <ComboboxTrigger />\\n          </InputGroupButton>\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-2xl bg-popover text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-9 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-3.5 py-2.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-9 flex-wrap items-center gap-1.5 rounded-4xl border border-input bg-input/30 bg-clip-padding px-2.5 py-1.5 text-sm transition-colors focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-4xl bg-muted-foreground/10 px-2 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/radix-maia/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-4xl bg-popover p-1 text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: React.ComponentProps<typeof Dialog> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-4xl! p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"p-1 pb-0\\\">\\n      <InputGroup className=\\\"h-9 bg-input/30\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-4 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-3 **:[[cmdk-group-heading]]:py-2 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex cursor-default items-center gap-2 rounded-lg px-3 py-2 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-2xl data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-maia/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger asChild>\\n              <Button>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Show Dialog\\n              </Button>\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  const [showBookmarksBar, setShowBookmarksBar] = React.useState(true)\\n  const [showFullUrls, setShowFullUrls] = React.useState(false)\\n  const [showDeveloperTools, setShowDeveloperTools] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem\\n              checked={showBookmarksBar}\\n              onCheckedChange={setShowBookmarksBar}\\n            >\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showFullUrls}\\n              onCheckedChange={setShowFullUrls}\\n            >\\n              Show Full URLs\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showDeveloperTools}\\n              onCheckedChange={setShowDeveloperTools}\\n            >\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\">\\n      <div className=\\\"grid grid-cols-2 gap-6\\\">\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (top)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"top\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (right)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"right\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (bottom)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"bottom\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (left)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"left\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\\n  return <ContextMenuPrimitive.Sub data-slot=\\\"context-menu-sub\\\" {...props} />\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Content\\n        data-slot=\\\"context-menu-content\\\"\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-context-menu-content-available-height) min-w-48 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex cursor-default items-center gap-2.5 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\\n  return (\\n    <ContextMenuPrimitive.SubContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-2xl border bg-popover p-1 text-popover-foreground shadow-lg duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Label\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-3 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-maia/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              asChild\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n            >\\n              <a href=\\\"#\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CommandIcon\\\"\\n                  tabler=\\\"IconInnerShadowTop\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-5!\\\"\\n                />\\n                <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-maia/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-maia/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-maia/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            type=\\\"single\\\"\\n            value={timeRange}\\n            onValueChange={setTimeRange}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select value={timeRange} onValueChange={setTimeRange}>\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-maia/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-maia/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/radix-maia/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-maia/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-maia/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-maia/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\n\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={\\n            table.getIsAllPageRowsSelected() ||\\n            (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select>\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            className=\\\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\\\"\\n            size=\\\"icon\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Open menu</span>\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\n\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\n\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select defaultValue=\\\"outline\\\">\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Columns3Icon\\\"\\n                  tabler=\\\"IconLayoutColumns\\\"\\n                  hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                  phosphor=\\\"ColumnsIcon\\\"\\n                  remixicon=\\\"RiLayoutColumnLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Columns\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                  data-icon=\\\"inline-end\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select defaultValue={item.type}>\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select defaultValue={item.status}>\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select defaultValue={item.reviewer}>\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Done</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"rounded-sm data-[state=open]:bg-accent\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg grayscale\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  {user.email}\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"EllipsisVerticalIcon\\\"\\n                tabler=\\\"IconDotsVertical\\\"\\n                hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                remixicon=\\\"RiMore2Line\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                    {user.email}\\n                  </span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 data-[orientation=vertical]:h-4\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-maia/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-maia/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-maia/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/radix-maia/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-maia/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback((value: number[]) => {\\n    setSliderValue(value)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger asChild>\\n                    <Button variant=\\\"outline\\\">\\n                      <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                      <span className=\\\"block md:hidden\\\">Dialog</span>\\n                    </Button>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronUpIcon\\\"\\n                          tabler=\\\"IconChevronUp\\\"\\n                          hugeicons=\\\"ArrowUp01Icon\\\"\\n                          phosphor=\\\"CaretUpIcon\\\"\\n                          remixicon=\\\"RiArrowUpSLine\\\"\\n                        />\\n                      </Button>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/radix-maia/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-maia/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-maia/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport { Switch } from \\\"@/registry/radix-maia/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-maia/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger asChild>\\n            <Button variant=\\\"outline\\\">Edit Profile</Button>\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose asChild>\\n                <Button variant=\\\"outline\\\">Cancel</Button>\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Sticky Footer</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Chat Settings</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select value={theme} onValueChange={setTheme}>\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"light\\\">Light</SelectItem>\\n                              <SelectItem value=\\\"dark\\\">Dark</SelectItem>\\n                              <SelectItem value=\\\"system\\\">System</SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          value={accentColor}\\n                          onValueChange={setAccentColor}\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"default\\\">\\n                                <div className=\\\"size-3 rounded-full bg-neutral-500 dark:bg-neutral-400\\\" />\\n                                Default\\n                              </SelectItem>\\n                              <SelectItem value=\\\"red\\\">\\n                                <div className=\\\"size-3 rounded-full bg-red-500 dark:bg-red-400\\\" />\\n                                Red\\n                              </SelectItem>\\n                              <SelectItem value=\\\"blue\\\">\\n                                <div className=\\\"size-3 rounded-full bg-blue-500 dark:bg-blue-400\\\" />\\n                                Blue\\n                              </SelectItem>\\n                              <SelectItem value=\\\"green\\\">\\n                                <div className=\\\"size-3 rounded-full bg-green-500 dark:bg-green-400\\\" />\\n                                Green\\n                              </SelectItem>\\n                              <SelectItem value=\\\"purple\\\">\\n                                <div className=\\\"size-3 rounded-full bg-purple-500 dark:bg-purple-400\\\" />\\n                                Purple\\n                              </SelectItem>\\n                              <SelectItem value=\\\"pink\\\">\\n                                <div className=\\\"size-3 rounded-full bg-pink-500 dark:bg-pink-400\\\" />\\n                                Pink\\n                              </SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          value={spokenLanguage}\\n                          onValueChange={setSpokenLanguage}\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"auto\\\">Auto</SelectItem>\\n                            </SelectGroup>\\n                            <SelectSeparator />\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select value={voice} onValueChange={setVoice}>\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger asChild>\\n                              <InputGroupButton size=\\\"icon-xs\\\">\\n                                <IconPlaceholder\\n                                  lucide=\\\"InfoIcon\\\"\\n                                  tabler=\\\"IconInfoCircle\\\"\\n                                  hugeicons=\\\"AlertCircleIcon\\\"\\n                                  phosphor=\\\"InfoIcon\\\"\\n                                  remixicon=\\\"RiInformationLine\\\"\\n                                />\\n                              </InputGroupButton>\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\\n  return (\\n    <DialogPrimitive.Overlay\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Content\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-background p-6 text-sm ring-1 ring-foreground/5 duration-100 outline-none sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-4 right-4\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Content>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close asChild>\\n          <Button variant=\\\"outline\\\">Close</Button>\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base leading-none font-medium\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Direction } from \\\"radix-ui\\\"\\n\\nfunction DirectionProvider({\\n  dir,\\n  direction,\\n  children,\\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\\\"dir\\\"]\\n}) {\\n  return (\\n    <Direction.DirectionProvider dir={direction ?? dir}>\\n      {children}\\n    </Direction.DirectionProvider>\\n  )\\n}\\n\\nconst useDirection = Direction.useDirection\\n\\nexport { DirectionProvider, useDirection }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-maia/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-transparent p-4 text-sm before:absolute before:inset-2 before:-z-10 before:rounded-4xl before:border before:border-border before:bg-background data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            <DropdownMenuItem>Support</DropdownMenuItem>\\n            <DropdownMenuItem disabled>API</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              Log out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Email</DropdownMenuItem>\\n                    <DropdownMenuItem>Message</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>More...</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Checkboxes\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Radio Group\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Notifications\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\">Payment Method</Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Actions\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </DropdownMenuItem>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"LogOutIcon\\\"\\n            tabler=\\\"IconLogout\\\"\\n            hugeicons=\\\"LogoutIcon\\\"\\n            phosphor=\\\"SignOutIcon\\\"\\n            remixicon=\\\"RiLogoutBoxLine\\\"\\n          />\\n          Sign Out\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n            >\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  shadcn@example.com\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\">\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Menu\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                      <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                      <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Complex Menu\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DropdownMenu as DropdownMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\\n  return <DropdownMenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\\n  return (\\n    <DropdownMenuPrimitive.Trigger\\n      data-slot=\\\"dropdown-menu-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal>\\n      <DropdownMenuPrimitive.Content\\n        data-slot=\\\"dropdown-menu-content\\\"\\n        sideOffset={sideOffset}\\n        align={align}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-48 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden dark:ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </DropdownMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\\n  return (\\n    <DropdownMenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex cursor-default items-center gap-2.5 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\\n  return (\\n    <DropdownMenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Label\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-3 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\\n  return (\\n    <DropdownMenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\\n  return <DropdownMenuPrimitive.Sub data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.SubTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </DropdownMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\\n  return (\\n    <DropdownMenuPrimitive.SubContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-36 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-maia/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-maia/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-lg border-dashed p-12 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-lg font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/radix-maia/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-maia/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-maia/ui/native-select\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-maia/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport { Slider } from \\\"@/registry/radix-maia/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-maia/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue placeholder=\\\"Choose an option\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue placeholder=\\\"Select your country\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue placeholder=\\\"Select timezone\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"utc\\\">UTC</SelectItem>\\n                <SelectItem value=\\\"est\\\">Eastern Time</SelectItem>\\n                <SelectItem value=\\\"pst\\\">Pacific Time</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"This field has an error\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue placeholder=\\\"Cannot select\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={setVolume}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={setBrightness}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={setTemperature}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={setPriceRange}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={setColorBalance}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"orange\\\">Orange</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-1 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-sm font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/radix-maia/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side} openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side} className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side} side of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Hover me\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { HoverCard as HoverCardPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction HoverCard({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\\n  return <HoverCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\\n  return (\\n    <HoverCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\\n  return (\\n    <HoverCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <HoverCardPrimitive.Content\\n        data-slot=\\\"hover-card-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 w-72 origin-(--radix-hover-card-content-transform-origin) rounded-2xl bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </HoverCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-maia/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-maia/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-maia/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-maia/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/radix-maia/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger asChild>\\n                  <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\">\\n                    {country}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDownIcon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-9 w-full min-w-0 items-center rounded-4xl border border-input bg-input/30 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-2xl has-data-[align=block-start]:rounded-2xl has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-xl has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-2 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-4xl **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:px-1.5 [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-3 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-3 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-3 [.border-b]:pb-3\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-3 [.border-t]:pt-3\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 rounded-4xl text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 px-1.5 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"\\\",\\n        \\\"icon-xs\\\": \\\"size-6 p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants>) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-maia/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-4xl has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-9 items-center justify-center border-y border-r border-input bg-input/30 text-sm transition-all outline-none first:rounded-l-4xl first:border-l last:rounded-r-4xl aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <input\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-9 w-full min-w-0 rounded-4xl border border-input bg-input/30 px-3 py-1 text-base transition-colors outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-2xl border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-3.5 px-4 py-3.5\\\",\\n        sm: \\\"gap-3.5 px-3.5 py-3\\\",\\n        xs: \\\"gap-2.5 px-3 py-2.5 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> &\\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n  return (\\n    <Comp\\n      data-slot=\\\"item\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(itemVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-lg group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 group-data-[size=xs]/item:rounded-md [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0.5 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-sm font-normal text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-maia/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-maia/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label as LabelPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Label({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\\n  return (\\n    <LabelPrimitive.Root\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-maia/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-maia/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-maia/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-maia/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-maia/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/radix-maia/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Email link</MenubarItem>\\n                  <MenubarItem>Messages</MenubarItem>\\n                  <MenubarItem>Notes</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Find...</MenubarItem>\\n                  <MenubarItem>Find Next</MenubarItem>\\n                  <MenubarItem>Find Previous</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarGroup>\\n              <MenubarCheckboxItem>\\n                Always Show Bookmarks Bar\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem checked>\\n                Always Show Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>\\n                Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled inset>\\n                Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Edit...</MenubarItem>\\n              <MenubarItem inset>Add Profile...</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SaveIcon\\\"\\n                  tabler=\\\"IconDeviceFloppy\\\"\\n                  hugeicons=\\\"FloppyDiskIcon\\\"\\n                  phosphor=\\\"FloppyDiskIcon\\\"\\n                  remixicon=\\\"RiSaveLine\\\"\\n                />\\n                Save <MenubarShortcut>⌘S</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BoldIcon\\\"\\n                  tabler=\\\"IconBold\\\"\\n                  hugeicons=\\\"TextBoldIcon\\\"\\n                  phosphor=\\\"TextBIcon\\\"\\n                  remixicon=\\\"RiBold\\\"\\n                />\\n                Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ItalicIcon\\\"\\n                  tabler=\\\"IconItalic\\\"\\n                  hugeicons=\\\"TextItalicIcon\\\"\\n                  phosphor=\\\"TextItalicIcon\\\"\\n                  remixicon=\\\"RiItalic\\\"\\n                />\\n                Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UnderlineIcon\\\"\\n                  tabler=\\\"IconUnderline\\\"\\n                  hugeicons=\\\"TextUnderlineIcon\\\"\\n                  phosphor=\\\"TextUnderlineIcon\\\"\\n                  remixicon=\\\"RiUnderline\\\"\\n                />\\n                Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n              <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Zoom In</MenubarItem>\\n              <MenubarItem inset>Zoom Out</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Image</MenubarItem>\\n                  <MenubarItem>Video</MenubarItem>\\n                  <MenubarItem>Audio</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LinkIcon\\\"\\n                  tabler=\\\"IconLink\\\"\\n                  hugeicons=\\\"LinkIcon\\\"\\n                  phosphor=\\\"LinkIcon\\\"\\n                  remixicon=\\\"RiLinksLine\\\"\\n                />\\n                Link <MenubarShortcut>⌘K</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"TableIcon\\\"\\n                  tabler=\\\"IconTable\\\"\\n                  hugeicons=\\\"TableIcon\\\"\\n                  phosphor=\\\"TableIcon\\\"\\n                  remixicon=\\\"RiTableLine\\\"\\n                />\\n                Table\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                />\\n                Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                />\\n                Spell Check\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UserIcon\\\"\\n                  tabler=\\\"IconUser\\\"\\n                  hugeicons=\\\"UserIcon\\\"\\n                  phosphor=\\\"UserIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Profile\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Sign out\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CopyIcon\\\"\\n                      tabler=\\\"IconCopy\\\"\\n                      hugeicons=\\\"CopyIcon\\\"\\n                      phosphor=\\\"CopyIcon\\\"\\n                      remixicon=\\\"RiFileCopyLine\\\"\\n                    />\\n                    Copy\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ScissorsIcon\\\"\\n                      tabler=\\\"IconCut\\\"\\n                      hugeicons=\\\"ScissorIcon\\\"\\n                      phosphor=\\\"ScissorsIcon\\\"\\n                      remixicon=\\\"RiScissorsLine\\\"\\n                    />\\n                    Cut\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClipboardPasteIcon\\\"\\n                      tabler=\\\"IconClipboard\\\"\\n                      hugeicons=\\\"ClipboardIcon\\\"\\n                      phosphor=\\\"ClipboardIcon\\\"\\n                      remixicon=\\\"RiClipboardLine\\\"\\n                    />\\n                    Paste\\n                  </MenubarItem>\\n                </MenubarGroup>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarGroup>\\n                      <MenubarItem>Save Page...</MenubarItem>\\n                      <MenubarItem>Create Shortcut...</MenubarItem>\\n                      <MenubarItem>Name Window...</MenubarItem>\\n                    </MenubarGroup>\\n                    <MenubarSeparator />\\n                    <MenubarGroup>\\n                      <MenubarItem>Developer Tools</MenubarItem>\\n                    </MenubarGroup>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarGroup>\\n                  <MenubarItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TrashIcon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"DeleteIcon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Delete\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\\n  return (\\n    <MenubarPrimitive.Root\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\\"flex h-9 items-center rounded-4xl border p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\\n  return <MenubarPrimitive.Menu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\\n  return <MenubarPrimitive.Group data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\\n  return <MenubarPrimitive.Portal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\\n  return (\\n    <MenubarPrimitive.RadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n  )\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\\n  return (\\n    <MenubarPrimitive.Trigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-xl px-2 py-0.75 text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\\n  return (\\n    <MenubarPortal>\\n      <MenubarPrimitive.Content\\n        data-slot=\\\"menubar-content\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 min-w-48 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </MenubarPortal>\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenubarPrimitive.Item\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item relative flex cursor-default items-center gap-2.5 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-3 pl-9.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-3 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-3 pl-9.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-3 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.Label\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-3.5 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\\n  return (\\n    <MenubarPrimitive.Separator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\\n  return <MenubarPrimitive.Sub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.SubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-xl px-3 py-2 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto size-4\\\"\\n      />\\n    </MenubarPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\\n  return (\\n    <MenubarPrimitive.SubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-maia/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-9 w-full min-w-0 appearance-none rounded-4xl border border-input bg-input/30 py-1 pr-8 pl-3 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-[size=sm]:h-8 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-muted-foreground select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/radix-maia/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuWithViewport />\\n      <NavigationMenuWithoutViewport />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuWithViewport() {\\n  return (\\n    <Example title=\\\"With Viewport\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-1 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction NavigationMenuWithoutViewport() {\\n  return (\\n    <Example title=\\\"Without Viewport\\\">\\n      <NavigationMenu viewport={false}>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-72\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Components</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Browse all components in the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Documentation</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Learn how to use the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Blog</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Read our latest blog posts.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Simple List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul>\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Components</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Documentation</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Blocks</Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Backlog\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      To Do\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Done\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink asChild>\\n        <Link href={href}>\\n          <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n            <div className=\\\"leading-none font-medium\\\">{title}</div>\\n            <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n          </div>\\n        </Link>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/navigation-menu.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { NavigationMenu as NavigationMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  className,\\n  children,\\n  viewport = true,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\\n  viewport?: boolean\\n}) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      data-viewport={viewport}\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {viewport && <NavigationMenuViewport />}\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-2xl bg-background px-4.5 py-2.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"top-0 left-0 w-full p-2.5 pr-3 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/5 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuViewport({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"absolute top-full left-0 isolate z-50 flex justify-center\\\"\\n      )}\\n    >\\n      <NavigationMenuPrimitive.Viewport\\n        data-slot=\\\"navigation-menu-viewport\\\"\\n        className={cn(\\n          \\\"origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-2xl bg-popover text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-1.5 rounded-xl p-3 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-muted/50 data-[active=true]:hover:bg-muted data-[active=true]:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\\n  return (\\n    <NavigationMenuPrimitive.Indicator\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Indicator>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuList,\\n  NavigationMenuItem,\\n  NavigationMenuContent,\\n  NavigationMenuTrigger,\\n  NavigationMenuLink,\\n  NavigationMenuIndicator,\\n  NavigationMenuViewport,\\n  navigationMenuTriggerStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/pagination-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/radix-maia/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      asChild\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n    >\\n      <a\\n        aria-current={isActive ? \\\"page\\\" : undefined}\\n        data-slot=\\\"pagination-link\\\"\\n        data-active={isActive}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-2!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-2!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-maia/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Start\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Center\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              End\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Popover\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Content\\n        data-slot=\\\"popover-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-2xl bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverAnchor({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\\n  return <PopoverPrimitive.Anchor data-slot=\\\"popover-anchor\\\" {...props} />\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\\\"h2\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading text-base font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverAnchor,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/radix-maia/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/radix-maia/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/radix-maia/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/radix-maia/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/radix-maia/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/radix-maia/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/radix-maia/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/radix-maia/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/radix-maia/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/radix-maia/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/radix-maia/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/radix-maia/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/radix-maia/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/radix-maia/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/radix-maia/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/radix-maia/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/radix-maia/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/radix-maia/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/radix-maia/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/radix-maia/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/radix-maia/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/radix-maia/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/radix-maia/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/radix-maia/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/radix-maia/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/radix-maia/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/radix-maia/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/radix-maia/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/radix-maia/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/radix-maia/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/radix-maia/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport { Progress } from \\\"@/registry/radix-maia/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/radix-maia/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"progress-upload\\\">\\n          <span>Upload progress</span>\\n          <span className=\\\"ml-auto\\\">66%</span>\\n        </FieldLabel>\\n        <Progress value={66} className=\\\"w-full\\\" id=\\\"progress-upload\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState([50])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value[0]} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Progress as ProgressPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  value,\\n  ...props\\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\\n  return (\\n    <ProgressPrimitive.Root\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\n        \\\"relative flex h-3 w-full items-center overflow-x-hidden rounded-4xl bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"size-full flex-1 bg-primary transition-all\\\"\\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n      />\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nexport { Progress }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-maia/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction RadioGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\\n  return (\\n    <RadioGroupPrimitive.Root\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\\n  return (\\n    <RadioGroupPrimitive.Item\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioGroupPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-maia/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-maia/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/radix-maia/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/radix-maia/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\\n  return (\\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.ScrollAreaThumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-maia/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartLineIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            <SelectItem value=\\\"carrot\\\">Carrot</SelectItem>\\n            <SelectItem value=\\\"broccoli\\\">Broccoli</SelectItem>\\n            <SelectItem value=\\\"spinach\\\">Spinach</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select an item\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {Array.from({ length: 100 }).map((_, i) => (\\n              <SelectItem key={i} value={`item-${i}`}>\\n                Item {i}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue placeholder=\\\"Small size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue placeholder=\\\"Default size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue placeholder=\\\"Small\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Default\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  return (\\n    <Example title=\\\"Popper\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent position=\\\"popper\\\">\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue placeholder=\\\"Filter\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"inactive\\\">Inactive</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select disabled>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Disabled\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  const [plan, setPlan] = React.useState<string>(plans[0].name)\\n\\n  const selectedPlan = plans.find((p) => p.name === plan)\\n\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select value={plan} onValueChange={setPlan}>\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {selectedPlan && <SelectPlanItem plan={selectedPlan} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan.name}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Select({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\\n  return <SelectPrimitive.Root data-slot=\\\"select\\\" {...props} />\\n}\\n\\nfunction SelectGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1 p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\\n  return <SelectPrimitive.Value data-slot=\\\"select-value\\\" {...props} />\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-4xl border border-input bg-input/30 px-3 py-2 text-sm whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon asChild>\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n        />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"item-aligned\\\",\\n  align = \\\"center\\\",\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Content\\n        data-slot=\\\"select-content\\\"\\n        data-align-trigger={position === \\\"item-aligned\\\"}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          position === \\\"popper\\\" &&\\n            \\\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\\\",\\n          className\\n        )}\\n        position={position}\\n        align={align}\\n        {...props}\\n      >\\n        <SelectScrollUpButton />\\n        <SelectPrimitive.Viewport\\n          data-position={position}\\n          className={cn(\\n            \\\"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\\\",\\n            position === \\\"popper\\\" && \\\"\\\"\\n          )}\\n        >\\n          {children}\\n        </SelectPrimitive.Viewport>\\n        <SelectScrollDownButton />\\n      </SelectPrimitive.Content>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\\n  return (\\n    <SelectPrimitive.Label\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-3 py-2.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\">\\n        <SelectPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </SelectPrimitive.ItemIndicator>\\n      </span>\\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\n        \\\"pointer-events-none -mx-1 my-1 h-px bg-border/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\\n  return (\\n    <SelectPrimitive.ScrollUpButton\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpButton>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\\n  return (\\n    <SelectPrimitive.ScrollDownButton\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownButton>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Separator as SeparatorPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  decorative = true,\\n  ...props\\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\\n  return (\\n    <SeparatorPrimitive.Root\\n      data-slot=\\\"separator\\\"\\n      decorative={decorative}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-maia/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open</Button>\\n        </SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\\n  return (\\n    <SheetPrimitive.Overlay\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-4 right-4\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Content>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-1.5 p-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-maia/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-maia/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {/* We create a SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild isActive={item.isActive}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-maia/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-maia/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-maia/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuButton>\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"PlusIcon\\\"\\n                        tabler=\\\"IconPlus\\\"\\n                        hugeicons=\\\"PlusSignIcon\\\"\\n                        phosphor=\\\"PlusIcon\\\"\\n                        remixicon=\\\"RiAddLine\\\"\\n                        className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\"\\n                      />\\n                      <IconPlaceholder\\n                        lucide=\\\"MinusIcon\\\"\\n                        tabler=\\\"IconMinus\\\"\\n                        hugeicons=\\\"MinusSignIcon\\\"\\n                        phosphor=\\\"MinusIcon\\\"\\n                        remixicon=\\\"RiSubtractLine\\\"\\n                        className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\"\\n                      />\\n                    </SidebarMenuButton>\\n                  </CollapsibleTrigger>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              asChild\\n                              isActive={item.isActive}\\n                            >\\n                              <a href={item.url}>{item.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-maia/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/radix-maia/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem asChild key={item.title}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-maia/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-maia/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/radix-maia/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-maia/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-maia/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-maia/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-maia/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-maia/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/radix-maia/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/radix-maia/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TerminalIcon\\\"\\n                      tabler=\\\"IconCommand\\\"\\n                      hugeicons=\\\"CommandIcon\\\"\\n                      phosphor=\\\"CommandIcon\\\"\\n                      remixicon=\\\"RiCommandLine\\\"\\n                      className=\\\"size-4\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/radix-maia/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-maia/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-maia/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-maia/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-maia/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-maia/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-maia/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\n\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\ntype TreeItem = string | TreeItem[]\\n\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"FolderIcon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-maia/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-maia/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-maia/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-maia/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/radix-maia/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-maia/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            {item.icon}\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-screen w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-maia/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-maia/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-maia/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-maia/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-maia/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-maia/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-maia/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-maia/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-maia/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-maia/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                      <ItemContent>\\n                        <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                        <ItemDescription>v{selectedVersion}</ItemDescription>\\n                      </ItemContent>\\n                      <ItemActions>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronsUpDownIcon\\\"\\n                          tabler=\\\"IconSelector\\\"\\n                          hugeicons=\\\"UnfoldMoreIcon\\\"\\n                          phosphor=\\\"CaretUpDownIcon\\\"\\n                          remixicon=\\\"RiArrowUpDownLine\\\"\\n                        />\\n                      </ItemActions>\\n                    </Item>\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    {data.versions.map((version) => (\\n                      <DropdownMenuItem\\n                        key={version}\\n                        onSelect={() => setSelectedVersion(version)}\\n                      >\\n                        v{version}{\\\" \\\"}\\n                        {version === selectedVersion && (\\n                          <IconPlaceholder\\n                            lucide=\\\"CheckIcon\\\"\\n                            tabler=\\\"IconCheck\\\"\\n                            hugeicons=\\\"Tick02Icon\\\"\\n                            phosphor=\\\"CheckIcon\\\"\\n                            remixicon=\\\"RiCheckLine\\\"\\n                            className=\\\"ml-auto\\\"\\n                          />\\n                        )}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton asChild isActive={subItem.isActive}>\\n                        <a href={subItem.url}>{subItem.title}</a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v1.0.0</ItemDescription>\\n                    </ItemContent>\\n                  </Item>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                        {item.title}{\\\" \\\"}\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      </SidebarMenuButton>\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem asChild key={subItem.title}>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-maia/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-maia/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Button size=\\\"icon-sm\\\" asChild className=\\\"size-8\\\">\\n                      <span>\\n                        <svg\\n                          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                          viewBox=\\\"0 0 256 256\\\"\\n                        >\\n                          <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                          <line\\n                            x1=\\\"208\\\"\\n                            y1=\\\"128\\\"\\n                            x2=\\\"128\\\"\\n                            y2=\\\"208\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                          <line\\n                            x1=\\\"192\\\"\\n                            y1=\\\"40\\\"\\n                            x2=\\\"40\\\"\\n                            y2=\\\"192\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                        </svg>\\n                      </span>\\n                    </Button>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {activeTeam.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {activeTeam.plan}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton tooltip={item.title} asChild>\\n                      <CollapsibleTrigger>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                          className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                        />\\n                      </CollapsibleTrigger>\\n                    </SidebarMenuButton>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton asChild>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      {item.icon}\\n                      {item.name}\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar>\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-maia/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-maia/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton\\n                      asChild\\n                      tooltip={item.title}\\n                      isActive={item.isActive}\\n                    >\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    {item.items?.length ? (\\n                      <>\\n                        <CollapsibleTrigger asChild>\\n                          <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                            <IconPlaceholder\\n                              lucide=\\\"ChevronRightIcon\\\"\\n                              tabler=\\\"IconChevronRight\\\"\\n                              hugeicons=\\\"ArrowRight01Icon\\\"\\n                              phosphor=\\\"CaretRightIcon\\\"\\n                              remixicon=\\\"RiArrowRightSLine\\\"\\n                            />\\n                            <span className=\\\"sr-only\\\">Toggle</span>\\n                          </SidebarMenuAction>\\n                        </CollapsibleTrigger>\\n                        <CollapsibleContent>\\n                          <SidebarMenuSub>\\n                            {item.items.map((subItem) => (\\n                              <SidebarMenuSubItem key={subItem.title}>\\n                                <SidebarMenuSubButton asChild>\\n                                  <a href={subItem.url}>\\n                                    <span>{subItem.title}</span>\\n                                  </a>\\n                                </SidebarMenuSubButton>\\n                              </SidebarMenuSubItem>\\n                            ))}\\n                          </SidebarMenuSub>\\n                        </CollapsibleContent>\\n                      </>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild size=\\\"sm\\\">\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"tooltip\",\n    \"input\",\n    \"use-mobile\",\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-maia/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport { Separator } from \\\"@/registry/radix-maia/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/radix-maia/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/radix-maia/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-2 p-2 [--radius:var(--radius-xl)]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-2 overflow-auto [--radius:var(--radius-xl)] group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-lg px-3 py-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 text-sm\\\",\\n        sm: \\\"h-8 text-xs\\\",\\n        lg: \\\"h-14 px-3 text-sm group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  asChild = false,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  isActive?: boolean\\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n  const { isMobile, state } = useSidebar()\\n\\n  const button = (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-button\\\"\\n      data-sidebar=\\\"menu-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\\n      {...props}\\n    />\\n  )\\n\\n  if (!tooltip) {\\n    return button\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  asChild = false,\\n  showOnHover = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  showOnHover?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-2 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        showOnHover &&\\n          \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  asChild = false,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n  size?: \\\"sm\\\" | \\\"md\\\"\\n  isActive?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-sub-button\\\"\\n      data-sidebar=\\\"menu-sub-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(\\n        \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-maia/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-maia/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-maia/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-maia/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-maia/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-maia/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-maia/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/radix-maia/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/radix-maia/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-xl bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport { Slider } from \\\"@/registry/radix-maia/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      className={cn(\\n        \\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SliderPrimitive.Track\\n        data-slot=\\\"slider-track\\\"\\n        className=\\\"relative grow overflow-hidden rounded-4xl bg-muted data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3\\\"\\n      >\\n        <SliderPrimitive.Range\\n          data-slot=\\\"slider-range\\\"\\n          className=\\\"absolute bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n        />\\n      </SliderPrimitive.Track>\\n      {Array.from({ length: _values.length }, (_, index) => (\\n        <SliderPrimitive.Thumb\\n          data-slot=\\\"slider-thumb\\\"\\n          key={index}\\n          className=\\\"block size-4 shrink-0 rounded-4xl border border-primary bg-white shadow-sm ring-ring/50 transition-colors select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\\\"\\n        />\\n      ))}\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-maia/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-maia/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-maia/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-maia/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/radix-maia/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Label } from \\\"@/registry/radix-maia/ui/label\\\"\\nimport { Switch } from \\\"@/registry/radix-maia/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Switch as SwitchPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/table-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-maia/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"sarah\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>In Progress</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"marcus\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Pending</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"emily\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Not Started</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-12 px-3 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-maia/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-maia/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Tabs as TabsPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-4xl p-[3px] text-muted-foreground group-data-horizontal/tabs:h-9 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col group-data-vertical/tabs:rounded-2xl data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List> &\\n  VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\\n  return (\\n    <TabsPrimitive.Trigger\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:px-2.5 group-data-vertical/tabs:py-1.5 hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\\n  return (\\n    <TabsPrimitive.Content\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-sm outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/radix-maia/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full resize-none rounded-xl border border-input bg-input/30 px-3 py-3 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/radix-maia/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              data-icon=\\\"inline-start\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-maia/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-maia/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-maia/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-maia/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup type=\\\"multiple\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"single\\\" defaultValue=\\\"all\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"multiple\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          size=\\\"sm\\\"\\n          defaultValue=\\\"top\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"top\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup type=\\\"multiple\\\" variant=\\\"outline\\\" spacing={1} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:*:[svg]:stroke-foregfill-foreground aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup type=\\\"single\\\" defaultValue=\\\"all\\\" variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"today\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"newest\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"all\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"archived\\\">Archived</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"grid\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup type=\\\"multiple\\\" orientation=\\\"vertical\\\" spacing={2}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"single\\\"\\n        defaultValue=\\\"all\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"multiple\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          value={fontWeight}\\n          onValueChange={(value) => setFontWeight(value)}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/radix-maia/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-[spacing=0]:data-[variant=outline]:rounded-4xl data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive.Root>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\\n  VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <ToggleGroupPrimitive.Item\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-3 group-data-[spacing=0]/toggle-group:shadow-none focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-4xl group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-xl group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-4xl group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-xl data-[state=on]:bg-muted group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </ToggleGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Toggle as TogglePrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-4xl text-sm font-medium whitespace-nowrap transition-colors outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 min-w-9 rounded-[min(var(--radius-2xl),12px)] px-2.5\\\",\\n        sm: \\\"h-8 min-w-8 px-3\\\",\\n        lg: \\\"h-10 min-w-10 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive.Root\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-maia/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-maia/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/radix-maia/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-maia/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {([\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\">\\n                {side}\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InfoIcon\\\"\\n              tabler=\\\"IconInfoCircle\\\"\\n              hugeicons=\\\"AlertCircleIcon\\\"\\n              phosphor=\\\"InfoIcon\\\"\\n              remixicon=\\\"RiInformationLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Info</span>\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <span className=\\\"inline-block w-fit\\\">\\n            <Button variant=\\\"outline\\\" disabled>\\n              Disabled\\n            </Button>\\n          </span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <a\\n            href=\\\"#\\\"\\n            className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n            onClick={(e) => e.preventDefault()}\\n          >\\n            Learn more\\n          </a>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Status\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Tooltip as TooltipPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-maia/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delayDuration = 0,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delayDuration={delayDuration}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  sideOffset = 0,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Content\\n        data-slot=\\\"tooltip-content\\\"\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-2xl bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-4xl data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=left]:translate-x-[-1.5px] data-[side=right]:translate-x-[1.5px]\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-maia/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-maia/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/radix-mira/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion type=\\\"single\\\" collapsible className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion type=\\\"multiple\\\" className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            type=\\\"single\\\"\\n            collapsible\\n            defaultValue=\\\"plans\\\"\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Accordion as AccordionPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\n        \\\"flex w-full flex-col overflow-hidden rounded-md border\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b data-open:bg-muted/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between gap-6 border border-transparent p-2 text-left text-xs/relaxed font-medium transition-all outline-none hover:underline disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\\n  return (\\n    <AccordionPrimitive.Content\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden px-2 text-xs/relaxed data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--radix-accordion-content-height) pt-0 pb-4 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Content>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"destructive\\\">Delete Chat</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Open Alert Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\n\\nfunction AlertDialog({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\\n  return (\\n    <AlertDialogPrimitive.Overlay\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-3 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-64 data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-8 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Action\\n        data-slot=\\\"alert-dialog-action\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Cancel\\n        data-slot=\\\"alert-dialog-cancel\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/radix-mira/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-lg border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\\"absolute top-1.5 right-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/radix-mira/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { AspectRatio as AspectRatioPrimitive } from \\\"radix-ui\\\"\\n\\nfunction AspectRatio({\\n  ...props\\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\\n  return <AspectRatioPrimitive.Root data-slot=\\\"aspect-ratio\\\" {...props} />\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-mira/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs/relaxed text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/radix-mira/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge asChild>\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"secondary\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"destructive\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"outline\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"ghost\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"link\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/badge.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border bg-input/20 text-foreground dark:bg-input/30 [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\n      data-variant={variant}\\n      className={cn(badgeVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n                  <BreadcrumbEllipsis />\\n                  <span className=\\\"sr-only\\\">Toggle menu</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Home</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Components</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-xs/relaxed wrap-break-word text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  asChild,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"transition-colors hover:text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-4 items-center justify-center [&>svg]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/button-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-mira/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText asChild>\\n            <Label htmlFor=\\\"input-text\\\">GPU Size</Label>\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeOffIcon\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelect() {\\n  const [currency, setCurrency] = useState(\\\"$\\\")\\n\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select value={currency} onValueChange={setCurrency}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"$\\\">$</SelectItem>\\n                <SelectItem value=\\\"€\\\">€</SelectItem>\\n                <SelectItem value=\\\"£\\\">£</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button variant=\\\"outline\\\" asChild size=\\\"icon\\\" className=\\\"w-12\\\">\\n          <span>1.2K</span>\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select defaultValue=\\\"hours\\\">\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue placeholder=\\\"Select duration\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              <SelectItem value=\\\"hours\\\">Hours</SelectItem>\\n              <SelectItem value=\\\"days\\\">Days</SelectItem>\\n              <SelectItem value=\\\"weeks\\\">Weeks</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"AudioLinesIcon\\\"\\n                    tabler=\\\"IconHeadphones\\\"\\n                    hugeicons=\\\"AudioWave01Icon\\\"\\n                    phosphor=\\\"MicrophoneIcon\\\"\\n                    remixicon=\\\"RiMicLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/button-group.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md!\\\",\\n        vertical:\\n          \\\"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-md border bg-muted px-2.5 text-xs/relaxed font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/button.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-xs/relaxed font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:bg-input/30\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-7 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        xs: \\\"h-5 gap-1 rounded-sm px-2 text-[0.625rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-2.5\\\",\\n        sm: \\\"h-6 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        lg: \\\"h-8 gap-1 px-2.5 text-xs/relaxed has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-4\\\",\\n        icon: \\\"size-7 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        \\\"icon-xs\\\": \\\"size-5 rounded-sm [&_svg:not([class*='size-'])]:size-2.5\\\",\\n        \\\"icon-sm\\\": \\\"size-6 [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-lg\\\": \\\"size-8 [&_svg:not([class*='size-'])]:size-4\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"button\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/radix-mira/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-mira/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-mira/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Open Calendar\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent className=\\\"px-4\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-simple\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker-range\\\"\\n              variant=\\\"outline\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date?.from ? (\\n                date.to ? (\\n                  <>\\n                    {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                    {format(date.to, \\\"LLL dd, y\\\")}\\n                  </>\\n                ) : (\\n                  format(date.from, \\\"LLL dd, y\\\")\\n                )\\n              ) : (\\n                <span>Pick a date</span>\\n              )}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-with-dropdowns-desktop\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDownIcon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(6)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center style-nova:mt-2\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-4 overflow-hidden rounded-lg bg-card py-4 text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-4 group-data-[size=sm]/card:px-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-b-lg px-4 group-data-[size=sm]/card:px-3 [.border-t]:pt-4 group-data-[size=sm]/card:[.border-t]:pt-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/cards.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cards\",\n  \"title\": \"Cards\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/alert-dialog\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-mira/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-mira/ui/checkbox\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-mira/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-mira/ui/empty\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-mira/ui/popover\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-mira/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-mira/ui/sheet\\\"\\nimport { Slider } from \\\"@/registry/radix-mira/ui/slider\\\"\\nimport { Spinner } from \\\"@/registry/radix-mira/ui/spinner\\\"\\nimport { Switch } from \\\"@/registry/radix-mira/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ObservabilityCard />\\n      <SmallFormExample />\\n      <FormExample />\\n      <FieldExamples />\\n      <ItemExample />\\n      <ButtonGroupExamples />\\n      <EmptyAvatarGroup />\\n      <InputGroupExamples />\\n      <SheetExample />\\n      <BadgeExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction FieldExamples() {\\n  const [gpuCount, setGpuCount] = React.useState(8)\\n  const [value, setValue] = useState([200, 800])\\n  const handleGpuAdjustment = React.useCallback((adjustment: number) => {\\n    setGpuCount((prevCount) =>\\n      Math.max(1, Math.min(99, prevCount + adjustment))\\n    )\\n  }, [])\\n\\n  const handleGpuInputChange = React.useCallback(\\n    (e: React.ChangeEvent<HTMLInputElement>) => {\\n      const value = parseInt(e.target.value, 10)\\n      if (!isNaN(value) && value >= 1 && value <= 99) {\\n        setGpuCount(value)\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"Fields\\\">\\n      <FieldSet className=\\\"w-full max-w-md\\\">\\n        <FieldGroup>\\n          <FieldSet>\\n            <FieldLegend>Compute Environment</FieldLegend>\\n            <FieldDescription>\\n              Select the compute environment for your cluster.\\n            </FieldDescription>\\n            <RadioGroup defaultValue=\\\"kubernetes\\\">\\n              <FieldLabel htmlFor=\\\"kubernetes-r2h\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Kubernetes</FieldTitle>\\n                    <FieldDescription>\\n                      Run GPU workloads on a K8s configured cluster. This is the\\n                      default.\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"kubernetes\\\"\\n                    id=\\\"kubernetes-r2h\\\"\\n                    aria-label=\\\"Kubernetes\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n              <FieldLabel htmlFor=\\\"vm-z4k\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Virtual Machine</FieldTitle>\\n                    <FieldDescription>\\n                      Access a VM configured cluster to run workloads. (Coming\\n                      soon)\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"vm\\\"\\n                    id=\\\"vm-z4k\\\"\\n                    aria-label=\\\"Virtual Machine\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n            </RadioGroup>\\n          </FieldSet>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"number-of-gpus-f6l\\\">\\n                Number of GPUs\\n              </FieldLabel>\\n              <FieldDescription>You can add more later.</FieldDescription>\\n            </FieldContent>\\n            <ButtonGroup>\\n              <Input\\n                id=\\\"number-of-gpus-f6l\\\"\\n                value={gpuCount}\\n                onChange={handleGpuInputChange}\\n                size={3}\\n                maxLength={3}\\n              />\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Decrement\\\"\\n                onClick={() => handleGpuAdjustment(-1)}\\n                disabled={gpuCount <= 1}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MinusIcon\\\"\\n                  tabler=\\\"IconMinus\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Increment\\\"\\n                onClick={() => handleGpuAdjustment(1)}\\n                disabled={gpuCount >= 99}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </Button>\\n            </ButtonGroup>\\n          </Field>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"tinting\\\">Wallpaper Tinting</FieldLabel>\\n              <FieldDescription>\\n                Allow the wallpaper to be tinted.\\n              </FieldDescription>\\n            </FieldContent>\\n            <Switch id=\\\"tinting\\\" defaultChecked />\\n          </Field>\\n          <FieldSeparator />\\n          <FieldLabel htmlFor=\\\"checkbox-demo\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"checkbox-demo\\\" defaultChecked />\\n              <FieldLabel htmlFor=\\\"checkbox-demo\\\" className=\\\"line-clamp-1\\\">\\n                I agree to the terms and conditions\\n              </FieldLabel>\\n            </Field>\\n          </FieldLabel>\\n          <FieldSeparator />\\n          <Field>\\n            <FieldTitle>Price Range</FieldTitle>\\n            <FieldDescription>\\n              Set your budget range ($\\n              <span className=\\\"font-medium tabular-nums\\\">\\n                {value[0]}\\n              </span> -{\\\" \\\"}\\n              <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n            </FieldDescription>\\n            <Slider\\n              value={value}\\n              onValueChange={(val) => setValue(val as number[])}\\n              max={1000}\\n              min={0}\\n              step={10}\\n              className=\\\"mt-2 w-full\\\"\\n              aria-label=\\\"Price Range\\\"\\n            />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"submit\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              Cancel\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupExamples() {\\n  const [label, setLabel] = React.useState(\\\"personal\\\")\\n\\n  return (\\n    <Example title=\\\"Button Group\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Go Back\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Archive\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Report\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Snooze\\n            </Button>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button\\n                  variant=\\\"outline\\\"\\n                  size=\\\"icon-sm\\\"\\n                  aria-label=\\\"More Options\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-48\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"MailCheckIcon\\\"\\n                      tabler=\\\"IconMailCheck\\\"\\n                      hugeicons=\\\"MailValidation01Icon\\\"\\n                      phosphor=\\\"EnvelopeIcon\\\"\\n                      remixicon=\\\"RiMailLine\\\"\\n                    />\\n                    Mark as Read\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArchiveIcon\\\"\\n                      tabler=\\\"IconArchive\\\"\\n                      hugeicons=\\\"ArchiveIcon\\\"\\n                      phosphor=\\\"ArchiveIcon\\\"\\n                      remixicon=\\\"RiArchiveLine\\\"\\n                    />\\n                    Archive\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClockIcon\\\"\\n                      tabler=\\\"IconClock\\\"\\n                      hugeicons=\\\"ClockIcon\\\"\\n                      phosphor=\\\"ClockIcon\\\"\\n                      remixicon=\\\"RiTimeLine\\\"\\n                    />\\n                    Snooze\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CalendarPlusIcon\\\"\\n                      tabler=\\\"IconCalendarPlus\\\"\\n                      hugeicons=\\\"CalendarAdd01Icon\\\"\\n                      phosphor=\\\"CalendarPlusIcon\\\"\\n                      remixicon=\\\"RiCalendarEventLine\\\"\\n                    />\\n                    Add to Calendar\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ListFilterIcon\\\"\\n                      tabler=\\\"IconFilterPlus\\\"\\n                      hugeicons=\\\"AddToListIcon\\\"\\n                      phosphor=\\\"ListPlusIcon\\\"\\n                      remixicon=\\\"RiPlayListAddLine\\\"\\n                    />\\n                    Add to List\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"TagIcon\\\"\\n                        tabler=\\\"IconTag\\\"\\n                        hugeicons=\\\"TagIcon\\\"\\n                        phosphor=\\\"TagIcon\\\"\\n                        remixicon=\\\"RiPriceTagLine\\\"\\n                      />\\n                      Label As...\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuSubContent>\\n                      <DropdownMenuRadioGroup\\n                        value={label}\\n                        onValueChange={setLabel}\\n                      >\\n                        <DropdownMenuRadioItem value=\\\"personal\\\">\\n                          Personal\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"work\\\">\\n                          Work\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"other\\\">\\n                          Other\\n                        </DropdownMenuRadioItem>\\n                      </DropdownMenuRadioGroup>\\n                    </DropdownMenuSubContent>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Trash\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Previous\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Next\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <div className=\\\"flex gap-4\\\">\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">1</Button>\\n              <Button variant=\\\"outline\\\">2</Button>\\n              <Button variant=\\\"outline\\\">3</Button>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">Follow</Button>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\" className=\\\"w-52\\\">\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"VolumeX\\\"\\n                        tabler=\\\"IconVolume\\\"\\n                        hugeicons=\\\"VolumeOffIcon\\\"\\n                        phosphor=\\\"SpeakerSlashIcon\\\"\\n                        remixicon=\\\"RiVolumeMuteLine\\\"\\n                      />\\n                      Mute Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CheckIcon\\\"\\n                        tabler=\\\"IconCheck\\\"\\n                        hugeicons=\\\"Tick02Icon\\\"\\n                        phosphor=\\\"CheckIcon\\\"\\n                        remixicon=\\\"RiCheckLine\\\"\\n                      />\\n                      Mark as Read\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"UserRoundXIcon\\\"\\n                        tabler=\\\"IconUserX\\\"\\n                        hugeicons=\\\"UserRemove01Icon\\\"\\n                        phosphor=\\\"UserMinusIcon\\\"\\n                        remixicon=\\\"RiUserUnfollowLine\\\"\\n                      />\\n                      Block User\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShareIcon\\\"\\n                        tabler=\\\"IconShare\\\"\\n                        hugeicons=\\\"Share03Icon\\\"\\n                        phosphor=\\\"ShareIcon\\\"\\n                        remixicon=\\\"RiShareLine\\\"\\n                      />\\n                      Share Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CopyIcon\\\"\\n                        tabler=\\\"IconCopy\\\"\\n                        hugeicons=\\\"Copy01Icon\\\"\\n                        phosphor=\\\"CopyIcon\\\"\\n                        remixicon=\\\"RiFileCopyLine\\\"\\n                      />\\n                      Copy Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"AlertTriangleIcon\\\"\\n                        tabler=\\\"IconAlertTriangle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Report Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem variant=\\\"destructive\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"TrashIcon\\\"\\n                        tabler=\\\"IconTrash\\\"\\n                        hugeicons=\\\"Delete02Icon\\\"\\n                        phosphor=\\\"TrashIcon\\\"\\n                        remixicon=\\\"RiDeleteBinLine\\\"\\n                      />\\n                      Delete Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"BotIcon\\\"\\n                  tabler=\\\"IconRobot\\\"\\n                  hugeicons=\\\"BotIcon\\\"\\n                  phosphor=\\\"RobotIcon\\\"\\n                  remixicon=\\\"RiRobotLine\\\"\\n                />{\\\" \\\"}\\n                Copilot\\n              </Button>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    aria-label=\\\"Open Popover\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </PopoverTrigger>\\n                <PopoverContent align=\\\"end\\\" className=\\\"w-96\\\">\\n                  <PopoverHeader>\\n                    <PopoverTitle>Agent Tasks</PopoverTitle>\\n                    <PopoverDescription>\\n                      Describe your task in natural language. Copilot will work\\n                      in the background and open a pull request.\\n                    </PopoverDescription>\\n                  </PopoverHeader>\\n                  <div className=\\\"text-sm *:[p:not(:last-child)]:mb-2\\\">\\n                    <Textarea\\n                      placeholder=\\\"Describe your task in natural language.\\\"\\n                      className=\\\"min-h-32 resize-none\\\"\\n                    />\\n                  </div>\\n                </PopoverContent>\\n              </Popover>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupExamples() {\\n  const [isFavorite, setIsFavorite] = React.useState(false)\\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Input Group\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Search...\\\" />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"example.com\\\" className=\\\"!pl-1\\\" />\\n          <InputGroupAddon>\\n            <InputGroupText>https://</InputGroupText>\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupButton\\n                  className=\\\"rounded-full\\\"\\n                  size=\\\"icon-xs\\\"\\n                  aria-label=\\\"Info\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </TooltipTrigger>\\n              <TooltipContent>This is content in a tooltip.</TooltipContent>\\n            </Tooltip>\\n          </InputGroupAddon>\\n        </InputGroup>\\n        <Field>\\n          <Label htmlFor=\\\"input-secure-19\\\" className=\\\"sr-only\\\">\\n            Input Secure\\n          </Label>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-secure-19\\\" className=\\\"!pl-0.5\\\" />\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton\\n                    variant=\\\"secondary\\\"\\n                    size=\\\"icon-xs\\\"\\n                    aria-label=\\\"Info\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent\\n                align=\\\"start\\\"\\n                alignOffset={10}\\n                className=\\\"flex flex-col gap-1 rounded-xl text-sm\\\"\\n              >\\n                <p className=\\\"font-medium\\\">Your connection is not secure.</p>\\n                <p>\\n                  You should not enter any sensitive information on this site.\\n                </p>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"text-muted-foreground !pl-1\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                onClick={() => setIsFavorite(!isFavorite)}\\n                size=\\\"icon-xs\\\"\\n                aria-label=\\\"Favorite\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                  data-favorite={isFavorite}\\n                  className=\\\"data-[favorite=true]:fill-primary data-[favorite=true]:stroke-primary\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <ButtonGroup className=\\\"w-full\\\">\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"Add\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"flex-1\\\">\\n            <InputGroup>\\n              <InputGroupInput\\n                placeholder={\\n                  voiceEnabled\\n                    ? \\\"Record and send audio...\\\"\\n                    : \\\"Send a message...\\\"\\n                }\\n                disabled={voiceEnabled}\\n              />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <Tooltip>\\n                  <TooltipTrigger asChild>\\n                    <InputGroupButton\\n                      onClick={() => setVoiceEnabled(!voiceEnabled)}\\n                      data-active={voiceEnabled}\\n                      className=\\\"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground\\\"\\n                      aria-pressed={voiceEnabled}\\n                      size=\\\"icon-xs\\\"\\n                      aria-label=\\\"Voice Mode\\\"\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"AudioLinesIcon\\\"\\n                        tabler=\\\"IconWaveSine\\\"\\n                        hugeicons=\\\"AudioWave01Icon\\\"\\n                        phosphor=\\\"MicrophoneIcon\\\"\\n                        remixicon=\\\"RiMicLine\\\"\\n                      />\\n                    </InputGroupButton>\\n                  </TooltipTrigger>\\n                  <TooltipContent>Voice Mode</TooltipContent>\\n                </Tooltip>\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <InputGroup>\\n          <InputGroupTextarea placeholder=\\\"Ask, Search or Chat...\\\" />\\n          <InputGroupAddon align=\\\"block-end\\\">\\n            <InputGroupButton\\n              variant=\\\"outline\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n              aria-label=\\\"Add\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </InputGroupButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <InputGroupButton variant=\\\"ghost\\\">Auto</InputGroupButton>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                side=\\\"top\\\"\\n                align=\\\"start\\\"\\n                className=\\\"[--radius:0.95rem]\\\"\\n              >\\n                <DropdownMenuItem>Auto</DropdownMenuItem>\\n                <DropdownMenuItem>Agent</DropdownMenuItem>\\n                <DropdownMenuItem>Manual</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n            <InputGroupText className=\\\"ml-auto\\\">52% used</InputGroupText>\\n            <Separator orientation=\\\"vertical\\\" className=\\\"!h-4\\\" />\\n            <InputGroupButton\\n              variant=\\\"default\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpIcon\\\"\\n                tabler=\\\"IconArrowUp\\\"\\n                hugeicons=\\\"ArrowUp01Icon\\\"\\n                phosphor=\\\"ArrowUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Send</span>\\n            </InputGroupButton>\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyAvatarGroup() {\\n  return (\\n    <Example title=\\\"Empty\\\">\\n      <Empty className=\\\"h-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup className=\\\"grayscale\\\">\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button variant=\\\"outline\\\">Show Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent>\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Connect Mouse</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogMedia>\\n                    <IconPlaceholder\\n                      lucide=\\\"BluetoothIcon\\\"\\n                      tabler=\\\"IconBluetooth\\\"\\n                      hugeicons=\\\"BluetoothIcon\\\"\\n                      phosphor=\\\"BluetoothIcon\\\"\\n                      remixicon=\\\"RiBluetoothLine\\\"\\n                    />\\n                  </AlertDialogMedia>\\n                  <AlertDialogTitle>\\n                    Allow accessory to connect?\\n                  </AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    Do you want to allow the USB accessory to connect to this\\n                    device?\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                  <AlertDialogAction>Allow</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction FormExample() {\\n  return (\\n    <Example title=\\\"Complex Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Payment Method</CardTitle>\\n          <CardDescription>\\n            All transactions are secure and encrypted\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-card-name-43j\\\">\\n                      Name on Card\\n                    </FieldLabel>\\n                    <Input\\n                      id=\\\"checkout-7j9-card-name-43j\\\"\\n                      placeholder=\\\"John Doe\\\"\\n                      required\\n                    />\\n                  </Field>\\n                  <div className=\\\"grid grid-cols-3 gap-4\\\">\\n                    <Field className=\\\"col-span-2\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-card-number-uw1\\\">\\n                        Card Number\\n                      </FieldLabel>\\n                      <Input\\n                        id=\\\"checkout-7j9-card-number-uw1\\\"\\n                        placeholder=\\\"1234 5678 9012 3456\\\"\\n                        required\\n                      />\\n                      <FieldDescription>\\n                        Enter your 16-digit number.\\n                      </FieldDescription>\\n                    </Field>\\n                    <Field className=\\\"col-span-1\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-cvv\\\">CVV</FieldLabel>\\n                      <Input id=\\\"checkout-7j9-cvv\\\" placeholder=\\\"123\\\" required />\\n                    </Field>\\n                  </div>\\n                  <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-month-ts6\\\">\\n                        Month\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-month-ts6\\\">\\n                          <SelectValue placeholder=\\\"MM\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"01\\\">01</SelectItem>\\n                            <SelectItem value=\\\"02\\\">02</SelectItem>\\n                            <SelectItem value=\\\"03\\\">03</SelectItem>\\n                            <SelectItem value=\\\"04\\\">04</SelectItem>\\n                            <SelectItem value=\\\"05\\\">05</SelectItem>\\n                            <SelectItem value=\\\"06\\\">06</SelectItem>\\n                            <SelectItem value=\\\"07\\\">07</SelectItem>\\n                            <SelectItem value=\\\"08\\\">08</SelectItem>\\n                            <SelectItem value=\\\"09\\\">09</SelectItem>\\n                            <SelectItem value=\\\"10\\\">10</SelectItem>\\n                            <SelectItem value=\\\"11\\\">11</SelectItem>\\n                            <SelectItem value=\\\"12\\\">12</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-year-f59\\\">\\n                        Year\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-year-f59\\\">\\n                          <SelectValue placeholder=\\\"YYYY\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"2024\\\">2024</SelectItem>\\n                            <SelectItem value=\\\"2025\\\">2025</SelectItem>\\n                            <SelectItem value=\\\"2026\\\">2026</SelectItem>\\n                            <SelectItem value=\\\"2027\\\">2027</SelectItem>\\n                            <SelectItem value=\\\"2028\\\">2028</SelectItem>\\n                            <SelectItem value=\\\"2029\\\">2029</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                  </div>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldLegend>Billing Address</FieldLegend>\\n                <FieldDescription>\\n                  The billing address associated with your payment.\\n                </FieldDescription>\\n                <FieldGroup>\\n                  <Field orientation=\\\"horizontal\\\">\\n                    <Checkbox\\n                      id=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      defaultChecked\\n                    />\\n                    <FieldLabel\\n                      htmlFor=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      className=\\\"font-normal\\\"\\n                    >\\n                      Same as shipping address\\n                    </FieldLabel>\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-optional-comments\\\">\\n                      Comments\\n                    </FieldLabel>\\n                    <Textarea\\n                      id=\\\"checkout-7j9-optional-comments\\\"\\n                      placeholder=\\\"Add any additional comments\\\"\\n                    />\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction SmallFormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                align=\\\"end\\\"\\n                className=\\\"style-maia:w-56 style-mira:w-48 style-nova:w-48 style-vega:w-56 style-lyra:w-48\\\"\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction ObservabilityCard() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"bg-primary absolute inset-0 z-30 aspect-video opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button>\\n            Create Query{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction FieldSlider() {\\n  const [value, setValue] = useState([200, 800])\\n  return (\\n    <Example title=\\\"Field Slider\\\">\\n      <div className=\\\"w-full max-w-md\\\">\\n        <Field>\\n          <FieldTitle>Price Range</FieldTitle>\\n          <FieldDescription>\\n            Set your budget range ($\\n            <span className=\\\"font-medium tabular-nums\\\">{value[0]}</span> -{\\\" \\\"}\\n            <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n          </FieldDescription>\\n          <Slider\\n            value={value}\\n            onValueChange={setValue}\\n            max={1000}\\n            min={0}\\n            step={10}\\n            className=\\\"mt-2 w-full\\\"\\n            aria-label=\\\"Price Range\\\"\\n          />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemExample() {\\n  return (\\n    <Example title=\\\"Item\\\">\\n      <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n        <Item variant=\\\"outline\\\">\\n          <ItemContent>\\n            <ItemTitle>Two-factor authentication</ItemTitle>\\n            <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n              Verify via email or phone number.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n              Enable\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"outline\\\" size=\\\"sm\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ShoppingBagIcon\\\"\\n                tabler=\\\"IconShoppingBag\\\"\\n                hugeicons=\\\"ShoppingBasket01Icon\\\"\\n                phosphor=\\\"BagIcon\\\"\\n                remixicon=\\\"RiShoppingBagLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Your order has been shipped.</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeExamples() {\\n  return (\\n    <Example title=\\\"Badge\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex items-center justify-center gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Syncing\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Updating\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Loading\\n        </Badge>\\n        <Badge variant=\\\"link\\\" className=\\\"hidden sm:flex\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithSpinner() {\\n  return (\\n    <Example title=\\\"Empty with Spinner\\\">\\n      <Empty className=\\\"w-full border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>Processing your request</EmptyTitle>\\n          <EmptyDescription>\\n            Please wait while we process your request. Do not refresh the page.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button size=\\\"sm\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Cancel\\n            </Button>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetExample() {\\n  return (\\n    <Example title=\\\"Sheet\\\">\\n      <div className=\\\"flex gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"secondary\\\" className=\\\"flex-1 capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"overflow-y-auto px-4 text-sm\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"style-lyra:mb-2 style-lyra:leading-relaxed mb-4 leading-normal\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/radix-mira/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-mira/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs/relaxed shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-mira/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-mira/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Checkbox as CheckboxPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/radix-mira/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n              />\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"Folder01Icon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              {fileItem.name}\\n            </Button>\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                {isOpen ? (\\n                  <IconPlaceholder\\n                    lucide=\\\"MinimizeIcon\\\"\\n                    tabler=\\\"IconMinimize\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                ) : (\\n                  <IconPlaceholder\\n                    lucide=\\\"MaximizeIcon\\\"\\n                    tabler=\\\"IconMaximize\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                )}\\n              </Button>\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"radix-ui\\\"\\n\\nfunction Collapsible({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleTrigger\\n      data-slot=\\\"collapsible-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CollapsibleContent({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleContent\\n      data-slot=\\\"collapsible-content\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/radix-mira/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen} modal={false}>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue placeholder=\\\"Select a framework\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {frameworks.map((framework) => (\\n              <SelectItem key={framework} value={framework}>\\n                {framework}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-3.5 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            asChild\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          >\\n            <ComboboxTrigger />\\n          </InputGroupButton>\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-7 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:bg-input/20 *:data-[slot=input-group]:shadow-none dark:bg-popover data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex min-h-7 w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-xs/relaxed text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-7 flex-wrap items-center gap-1 rounded-md border border-input bg-input/20 bg-clip-padding px-2 py-0.5 text-xs/relaxed transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/30 has-aria-invalid:border-destructive has-aria-invalid:ring-2 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(4.75))] w-fit items-center justify-center gap-1 rounded-[calc(var(--radius-sm)-2px)] bg-muted-foreground/10 px-1.5 text-xs/relaxed font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/radix-mira/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-xl bg-popover p-1 text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: React.ComponentProps<typeof Dialog> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"p-1 pb-0\\\">\\n      <InputGroup className=\\\"h-8! bg-input/20 dark:bg-input/30\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-xs/relaxed outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-3.5 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-xs/relaxed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2.5 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none in-data-[slot=dialog-content]:rounded-md data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-selected:*:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-[0.625rem] tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-mira/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger asChild>\\n              <Button>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Show Dialog\\n              </Button>\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  const [showBookmarksBar, setShowBookmarksBar] = React.useState(true)\\n  const [showFullUrls, setShowFullUrls] = React.useState(false)\\n  const [showDeveloperTools, setShowDeveloperTools] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem\\n              checked={showBookmarksBar}\\n              onCheckedChange={setShowBookmarksBar}\\n            >\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showFullUrls}\\n              onCheckedChange={setShowFullUrls}\\n            >\\n              Show Full URLs\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showDeveloperTools}\\n              onCheckedChange={setShowDeveloperTools}\\n            >\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\">\\n      <div className=\\\"grid grid-cols-2 gap-6\\\">\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (top)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"top\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (right)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"right\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (bottom)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"bottom\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (left)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"left\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\\n  return <ContextMenuPrimitive.Sub data-slot=\\\"context-menu-sub\\\" {...props} />\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Content\\n        data-slot=\\\"context-menu-content\\\"\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-context-menu-content-available-height) min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\\n  return (\\n    <ContextMenuPrimitive.SubContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Label\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs text-muted-foreground data-inset:pl-7.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-[0.625rem] tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-mira/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              asChild\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n            >\\n              <a href=\\\"#\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CommandIcon\\\"\\n                  tabler=\\\"IconInnerShadowTop\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-5!\\\"\\n                />\\n                <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-mira/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-mira/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-mira/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            type=\\\"single\\\"\\n            value={timeRange}\\n            onValueChange={setTimeRange}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select value={timeRange} onValueChange={setTimeRange}>\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-mira/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-mira/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/radix-mira/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-mira/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-mira/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-mira/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\n\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={\\n            table.getIsAllPageRowsSelected() ||\\n            (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select>\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            className=\\\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\\\"\\n            size=\\\"icon\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Open menu</span>\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\n\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\n\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select defaultValue=\\\"outline\\\">\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Columns3Icon\\\"\\n                  tabler=\\\"IconLayoutColumns\\\"\\n                  hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                  phosphor=\\\"ColumnsIcon\\\"\\n                  remixicon=\\\"RiLayoutColumnLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Columns\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                  data-icon=\\\"inline-end\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select defaultValue={item.type}>\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select defaultValue={item.status}>\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select defaultValue={item.reviewer}>\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Done</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"rounded-sm data-[state=open]:bg-accent\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg grayscale\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  {user.email}\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"EllipsisVerticalIcon\\\"\\n                tabler=\\\"IconDotsVertical\\\"\\n                hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                remixicon=\\\"RiMore2Line\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                    {user.email}\\n                  </span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 data-[orientation=vertical]:h-4\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-mira/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-mira/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-mira/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/radix-mira/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-mira/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback((value: number[]) => {\\n    setSliderValue(value)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger asChild>\\n                    <Button variant=\\\"outline\\\">\\n                      <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                      <span className=\\\"block md:hidden\\\">Dialog</span>\\n                    </Button>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronUpIcon\\\"\\n                          tabler=\\\"IconChevronUp\\\"\\n                          hugeicons=\\\"ArrowUp01Icon\\\"\\n                          phosphor=\\\"CaretUpIcon\\\"\\n                          remixicon=\\\"RiArrowUpSLine\\\"\\n                        />\\n                      </Button>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/radix-mira/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-mira/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-mira/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport { Switch } from \\\"@/registry/radix-mira/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-mira/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger asChild>\\n            <Button variant=\\\"outline\\\">Edit Profile</Button>\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose asChild>\\n                <Button variant=\\\"outline\\\">Cancel</Button>\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Sticky Footer</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Chat Settings</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select value={theme} onValueChange={setTheme}>\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"light\\\">Light</SelectItem>\\n                              <SelectItem value=\\\"dark\\\">Dark</SelectItem>\\n                              <SelectItem value=\\\"system\\\">System</SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          value={accentColor}\\n                          onValueChange={setAccentColor}\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"default\\\">\\n                                <div className=\\\"size-3 rounded-full bg-neutral-500 dark:bg-neutral-400\\\" />\\n                                Default\\n                              </SelectItem>\\n                              <SelectItem value=\\\"red\\\">\\n                                <div className=\\\"size-3 rounded-full bg-red-500 dark:bg-red-400\\\" />\\n                                Red\\n                              </SelectItem>\\n                              <SelectItem value=\\\"blue\\\">\\n                                <div className=\\\"size-3 rounded-full bg-blue-500 dark:bg-blue-400\\\" />\\n                                Blue\\n                              </SelectItem>\\n                              <SelectItem value=\\\"green\\\">\\n                                <div className=\\\"size-3 rounded-full bg-green-500 dark:bg-green-400\\\" />\\n                                Green\\n                              </SelectItem>\\n                              <SelectItem value=\\\"purple\\\">\\n                                <div className=\\\"size-3 rounded-full bg-purple-500 dark:bg-purple-400\\\" />\\n                                Purple\\n                              </SelectItem>\\n                              <SelectItem value=\\\"pink\\\">\\n                                <div className=\\\"size-3 rounded-full bg-pink-500 dark:bg-pink-400\\\" />\\n                                Pink\\n                              </SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          value={spokenLanguage}\\n                          onValueChange={setSpokenLanguage}\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"auto\\\">Auto</SelectItem>\\n                            </SelectGroup>\\n                            <SelectSeparator />\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select value={voice} onValueChange={setVoice}>\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger asChild>\\n                              <InputGroupButton size=\\\"icon-xs\\\">\\n                                <IconPlaceholder\\n                                  lucide=\\\"InfoIcon\\\"\\n                                  tabler=\\\"IconInfoCircle\\\"\\n                                  hugeicons=\\\"AlertCircleIcon\\\"\\n                                  phosphor=\\\"InfoIcon\\\"\\n                                  remixicon=\\\"RiInformationLine\\\"\\n                                />\\n                              </InputGroupButton>\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\\n  return (\\n    <DialogPrimitive.Overlay\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Content\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-2 right-2\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Content>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close asChild>\\n          <Button variant=\\\"outline\\\">Close</Button>\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Direction } from \\\"radix-ui\\\"\\n\\nfunction DirectionProvider({\\n  dir,\\n  direction,\\n  children,\\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\\\"dir\\\"]\\n}) {\\n  return (\\n    <Direction.DirectionProvider dir={direction ?? dir}>\\n      {children}\\n    </Direction.DirectionProvider>\\n  )\\n}\\n\\nconst useDirection = Direction.useDirection\\n\\nexport { DirectionProvider, useDirection }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-mira/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-transparent p-2 text-xs/relaxed before:absolute before:inset-2 before:-z-10 before:rounded-xl before:border before:border-border before:bg-background data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-1 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            <DropdownMenuItem>Support</DropdownMenuItem>\\n            <DropdownMenuItem disabled>API</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              Log out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Email</DropdownMenuItem>\\n                    <DropdownMenuItem>Message</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>More...</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Checkboxes\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Radio Group\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Notifications\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\">Payment Method</Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Actions\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </DropdownMenuItem>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"LogOutIcon\\\"\\n            tabler=\\\"IconLogout\\\"\\n            hugeicons=\\\"LogoutIcon\\\"\\n            phosphor=\\\"SignOutIcon\\\"\\n            remixicon=\\\"RiLogoutBoxLine\\\"\\n          />\\n          Sign Out\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n            >\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  shadcn@example.com\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\">\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Menu\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                      <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                      <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Complex Menu\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DropdownMenu as DropdownMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\\n  return <DropdownMenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\\n  return (\\n    <DropdownMenuPrimitive.Trigger\\n      data-slot=\\\"dropdown-menu-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal>\\n      <DropdownMenuPrimitive.Content\\n        data-slot=\\\"dropdown-menu-content\\\"\\n        sideOffset={sideOffset}\\n        align={align}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </DropdownMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\\n  return (\\n    <DropdownMenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\\n  return (\\n    <DropdownMenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Label\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs text-muted-foreground data-inset:pl-7.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\\n  return (\\n    <DropdownMenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-[0.625rem] tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\\n  return <DropdownMenuPrimitive.Sub data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.SubTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </DropdownMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\\n  return (\\n    <DropdownMenuPrimitive.SubContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-mira/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-mira/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-8 shrink-0 items-center justify-center rounded-md bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-xs/relaxed text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/radix-mira/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-mira/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-mira/ui/native-select\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-mira/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport { Slider } from \\\"@/registry/radix-mira/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-mira/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue placeholder=\\\"Choose an option\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue placeholder=\\\"Select your country\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue placeholder=\\\"Select timezone\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"utc\\\">UTC</SelectItem>\\n                <SelectItem value=\\\"est\\\">Eastern Time</SelectItem>\\n                <SelectItem value=\\\"pst\\\">Pacific Time</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"This field has an error\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue placeholder=\\\"Cannot select\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={setVolume}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={setBrightness}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={setTemperature}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={setPriceRange}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={setColorBalance}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"orange\\\">Orange</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-2 font-medium data-[variant=label]:text-xs/relaxed data-[variant=legend]:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-4 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-2 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-xs/relaxed leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-xs/relaxed leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-xs/relaxed group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-xs/relaxed font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/radix-mira/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side} openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side} className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side} side of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Hover me\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { HoverCard as HoverCardPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction HoverCard({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\\n  return <HoverCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\\n  return (\\n    <HoverCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\\n  return (\\n    <HoverCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <HoverCardPrimitive.Content\\n        data-slot=\\\"hover-card-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 w-72 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-2.5 text-xs/relaxed text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </HoverCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-mira/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-mira/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-mira/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-mira/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/radix-mira/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger asChild>\\n                  <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\">\\n                    {country}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDownIcon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-7 w-full min-w-0 items-center rounded-md border border-input bg-input/20 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-md has-data-[align=block-start]:rounded-md has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/30 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-md has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-1 py-2 text-xs/relaxed font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-[calc(var(--radius-sm)-2px)] **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:px-1 **:data-[slot=kbd]:text-[0.625rem] [&>svg:not([class*='size-'])]:size-3.5\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-2 has-[>button]:ml-[-0.275rem] has-[>kbd]:ml-[-0.275rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-2 has-[>button]:mr-[-0.275rem] has-[>kbd]:mr-[-0.275rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-2 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-2 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 rounded-md text-xs/relaxed shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-5 gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1 [&>svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"gap-1\\\",\\n        \\\"icon-xs\\\": \\\"size-6 p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-7 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants>) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-xs/relaxed text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-mira/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-2 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-7 items-center justify-center border-y border-r border-input bg-input/20 text-xs/relaxed transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-2 data-[active=true]:ring-ring/30 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <input\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-7 w-full min-w-0 rounded-md border border-input bg-input/20 px-2 py-0.5 text-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-xs/relaxed file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-md border text-xs/relaxed transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-2.5 px-3 py-2.5\\\",\\n        sm: \\\"gap-2.5 px-3 py-2.5\\\",\\n        xs: \\\"gap-2.5 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> &\\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n  return (\\n    <Comp\\n      data-slot=\\\"item\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(itemVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-8 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0.5 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-xs/relaxed leading-snug font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-xs/relaxed font-normal text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-mira/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-xs bg-muted px-1 font-sans text-[0.625rem] font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-mira/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label as LabelPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Label({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\\n  return (\\n    <LabelPrimitive.Root\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-xs/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-mira/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-mira/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-mira/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-mira/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-mira/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/radix-mira/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Email link</MenubarItem>\\n                  <MenubarItem>Messages</MenubarItem>\\n                  <MenubarItem>Notes</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Find...</MenubarItem>\\n                  <MenubarItem>Find Next</MenubarItem>\\n                  <MenubarItem>Find Previous</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarGroup>\\n              <MenubarCheckboxItem>\\n                Always Show Bookmarks Bar\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem checked>\\n                Always Show Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>\\n                Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled inset>\\n                Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Edit...</MenubarItem>\\n              <MenubarItem inset>Add Profile...</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SaveIcon\\\"\\n                  tabler=\\\"IconDeviceFloppy\\\"\\n                  hugeicons=\\\"FloppyDiskIcon\\\"\\n                  phosphor=\\\"FloppyDiskIcon\\\"\\n                  remixicon=\\\"RiSaveLine\\\"\\n                />\\n                Save <MenubarShortcut>⌘S</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BoldIcon\\\"\\n                  tabler=\\\"IconBold\\\"\\n                  hugeicons=\\\"TextBoldIcon\\\"\\n                  phosphor=\\\"TextBIcon\\\"\\n                  remixicon=\\\"RiBold\\\"\\n                />\\n                Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ItalicIcon\\\"\\n                  tabler=\\\"IconItalic\\\"\\n                  hugeicons=\\\"TextItalicIcon\\\"\\n                  phosphor=\\\"TextItalicIcon\\\"\\n                  remixicon=\\\"RiItalic\\\"\\n                />\\n                Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UnderlineIcon\\\"\\n                  tabler=\\\"IconUnderline\\\"\\n                  hugeicons=\\\"TextUnderlineIcon\\\"\\n                  phosphor=\\\"TextUnderlineIcon\\\"\\n                  remixicon=\\\"RiUnderline\\\"\\n                />\\n                Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n              <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Zoom In</MenubarItem>\\n              <MenubarItem inset>Zoom Out</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Image</MenubarItem>\\n                  <MenubarItem>Video</MenubarItem>\\n                  <MenubarItem>Audio</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LinkIcon\\\"\\n                  tabler=\\\"IconLink\\\"\\n                  hugeicons=\\\"LinkIcon\\\"\\n                  phosphor=\\\"LinkIcon\\\"\\n                  remixicon=\\\"RiLinksLine\\\"\\n                />\\n                Link <MenubarShortcut>⌘K</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"TableIcon\\\"\\n                  tabler=\\\"IconTable\\\"\\n                  hugeicons=\\\"TableIcon\\\"\\n                  phosphor=\\\"TableIcon\\\"\\n                  remixicon=\\\"RiTableLine\\\"\\n                />\\n                Table\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                />\\n                Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                />\\n                Spell Check\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UserIcon\\\"\\n                  tabler=\\\"IconUser\\\"\\n                  hugeicons=\\\"UserIcon\\\"\\n                  phosphor=\\\"UserIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Profile\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Sign out\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CopyIcon\\\"\\n                      tabler=\\\"IconCopy\\\"\\n                      hugeicons=\\\"CopyIcon\\\"\\n                      phosphor=\\\"CopyIcon\\\"\\n                      remixicon=\\\"RiFileCopyLine\\\"\\n                    />\\n                    Copy\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ScissorsIcon\\\"\\n                      tabler=\\\"IconCut\\\"\\n                      hugeicons=\\\"ScissorIcon\\\"\\n                      phosphor=\\\"ScissorsIcon\\\"\\n                      remixicon=\\\"RiScissorsLine\\\"\\n                    />\\n                    Cut\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClipboardPasteIcon\\\"\\n                      tabler=\\\"IconClipboard\\\"\\n                      hugeicons=\\\"ClipboardIcon\\\"\\n                      phosphor=\\\"ClipboardIcon\\\"\\n                      remixicon=\\\"RiClipboardLine\\\"\\n                    />\\n                    Paste\\n                  </MenubarItem>\\n                </MenubarGroup>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarGroup>\\n                      <MenubarItem>Save Page...</MenubarItem>\\n                      <MenubarItem>Create Shortcut...</MenubarItem>\\n                      <MenubarItem>Name Window...</MenubarItem>\\n                    </MenubarGroup>\\n                    <MenubarSeparator />\\n                    <MenubarGroup>\\n                      <MenubarItem>Developer Tools</MenubarItem>\\n                    </MenubarGroup>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarGroup>\\n                  <MenubarItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TrashIcon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"DeleteIcon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Delete\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\\n  return (\\n    <MenubarPrimitive.Root\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\\"flex h-9 items-center rounded-lg border p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\\n  return <MenubarPrimitive.Menu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\\n  return <MenubarPrimitive.Group data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\\n  return <MenubarPrimitive.Portal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\\n  return (\\n    <MenubarPrimitive.RadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n  )\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\\n  return (\\n    <MenubarPrimitive.Trigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-[calc(var(--radius-md)-2px)] px-2 py-[calc(--spacing(0.85))] text-xs/relaxed font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\\n  return (\\n    <MenubarPortal>\\n      <MenubarPrimitive.Content\\n        data-slot=\\\"menubar-content\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </MenubarPortal>\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenubarPrimitive.Item\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-7.5 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex min-h-7 cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-7.5 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.Label\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs text-muted-foreground data-inset:pl-7.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\\n  return (\\n    <MenubarPrimitive.Separator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border/50\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-[0.625rem] tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\\n  return <MenubarPrimitive.Sub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.SubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs outline-none select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto size-4\\\"\\n      />\\n    </MenubarPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\\n  return (\\n    <MenubarPrimitive.SubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-mira/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-7 w-full min-w-0 appearance-none rounded-md border border-input bg-input/20 py-0.5 pr-6 pl-2 text-xs/relaxed transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-[size=sm]:h-6 data-[size=sm]:text-[0.625rem] dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-muted-foreground select-none group-data-[size=sm]/native-select:size-3 group-data-[size=sm]/native-select:-translate-y-[calc(--spacing(1.25))]\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/radix-mira/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuWithViewport />\\n      <NavigationMenuWithoutViewport />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuWithViewport() {\\n  return (\\n    <Example title=\\\"With Viewport\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-1 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction NavigationMenuWithoutViewport() {\\n  return (\\n    <Example title=\\\"Without Viewport\\\">\\n      <NavigationMenu viewport={false}>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-72\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Components</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Browse all components in the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Documentation</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Learn how to use the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Blog</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Read our latest blog posts.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Simple List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul>\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Components</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Documentation</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Blocks</Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Backlog\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      To Do\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Done\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink asChild>\\n        <Link href={href}>\\n          <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n            <div className=\\\"leading-none font-medium\\\">{title}</div>\\n            <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n          </div>\\n        </Link>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/navigation-menu.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { NavigationMenu as NavigationMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  className,\\n  children,\\n  viewport = true,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\\n  viewport?: boolean\\n}) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      data-viewport={viewport}\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {viewport && <NavigationMenuViewport />}\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-2.5 py-1.5 text-xs/relaxed font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"top-0 left-0 w-full p-1.5 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-xl group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow-md group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuViewport({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"absolute top-full left-0 isolate z-50 flex justify-center\\\"\\n      )}\\n    >\\n      <NavigationMenuPrimitive.Viewport\\n        data-slot=\\\"navigation-menu-viewport\\\"\\n        className={cn(\\n          \\\"origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-xl bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-1.5 rounded-lg p-2 text-xs/relaxed transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:outline-1 data-[active=true]:bg-muted/50 data-[active=true]:hover:bg-muted data-[active=true]:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\\n  return (\\n    <NavigationMenuPrimitive.Indicator\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Indicator>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuList,\\n  NavigationMenuItem,\\n  NavigationMenuContent,\\n  NavigationMenuTrigger,\\n  NavigationMenuLink,\\n  NavigationMenuIndicator,\\n  NavigationMenuViewport,\\n  navigationMenuTriggerStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/pagination-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/radix-mira/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-0.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      asChild\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n    >\\n      <a\\n        aria-current={isActive ? \\\"page\\\" : undefined}\\n        data-slot=\\\"pagination-link\\\"\\n        data-active={isActive}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-2!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-2!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-7 items-center justify-center [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-mira/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Start\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Center\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              End\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Popover\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Content\\n        data-slot=\\\"popover-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-lg bg-popover p-2.5 text-xs text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverAnchor({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\\n  return <PopoverPrimitive.Anchor data-slot=\\\"popover-anchor\\\" {...props} />\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\\\"h2\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading text-sm font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverAnchor,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/radix-mira/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/radix-mira/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/radix-mira/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/radix-mira/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/radix-mira/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/radix-mira/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/radix-mira/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/radix-mira/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/radix-mira/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/radix-mira/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/radix-mira/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/radix-mira/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/radix-mira/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/radix-mira/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/radix-mira/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/radix-mira/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/radix-mira/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/radix-mira/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/radix-mira/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/radix-mira/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/radix-mira/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/radix-mira/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/radix-mira/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/radix-mira/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/radix-mira/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/radix-mira/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/radix-mira/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/radix-mira/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/radix-mira/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/radix-mira/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/radix-mira/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport { Progress } from \\\"@/registry/radix-mira/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/radix-mira/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"progress-upload\\\">\\n          <span>Upload progress</span>\\n          <span className=\\\"ml-auto\\\">66%</span>\\n        </FieldLabel>\\n        <Progress value={66} className=\\\"w-full\\\" id=\\\"progress-upload\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState([50])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value[0]} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Progress as ProgressPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  value,\\n  ...props\\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\\n  return (\\n    <ProgressPrimitive.Root\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\n        \\\"relative flex h-1 w-full items-center overflow-x-hidden rounded-md bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"size-full flex-1 bg-primary transition-all\\\"\\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n      />\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nexport { Progress }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-mira/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction RadioGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\\n  return (\\n    <RadioGroupPrimitive.Root\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\\n  return (\\n    <RadioGroupPrimitive.Item\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioGroupPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-mira/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-mira/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/radix-mira/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/radix-mira/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\\n  return (\\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.ScrollAreaThumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-mira/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartLineIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            <SelectItem value=\\\"carrot\\\">Carrot</SelectItem>\\n            <SelectItem value=\\\"broccoli\\\">Broccoli</SelectItem>\\n            <SelectItem value=\\\"spinach\\\">Spinach</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select an item\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {Array.from({ length: 100 }).map((_, i) => (\\n              <SelectItem key={i} value={`item-${i}`}>\\n                Item {i}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue placeholder=\\\"Small size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue placeholder=\\\"Default size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue placeholder=\\\"Small\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Default\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  return (\\n    <Example title=\\\"Popper\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent position=\\\"popper\\\">\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue placeholder=\\\"Filter\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"inactive\\\">Inactive</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select disabled>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Disabled\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  const [plan, setPlan] = React.useState<string>(plans[0].name)\\n\\n  const selectedPlan = plans.find((p) => p.name === plan)\\n\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select value={plan} onValueChange={setPlan}>\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {selectedPlan && <SelectPlanItem plan={selectedPlan} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan.name}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Select({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\\n  return <SelectPrimitive.Root data-slot=\\\"select\\\" {...props} />\\n}\\n\\nfunction SelectGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1 p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\\n  return <SelectPrimitive.Value data-slot=\\\"select-value\\\" {...props} />\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-input/20 px-2 py-1.5 text-xs/relaxed whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon asChild>\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none size-3.5 text-muted-foreground\\\"\\n        />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"item-aligned\\\",\\n  align = \\\"center\\\",\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Content\\n        data-slot=\\\"select-content\\\"\\n        data-align-trigger={position === \\\"item-aligned\\\"}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          position === \\\"popper\\\" &&\\n            \\\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\\\",\\n          className\\n        )}\\n        position={position}\\n        align={align}\\n        {...props}\\n      >\\n        <SelectScrollUpButton />\\n        <SelectPrimitive.Viewport\\n          data-position={position}\\n          className={cn(\\n            \\\"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\\\",\\n            position === \\\"popper\\\" && \\\"\\\"\\n          )}\\n        >\\n          {children}\\n        </SelectPrimitive.Viewport>\\n        <SelectScrollDownButton />\\n      </SelectPrimitive.Content>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\\n  return (\\n    <SelectPrimitive.Label\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex min-h-7 w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\">\\n        <SelectPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </SelectPrimitive.ItemIndicator>\\n      </span>\\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\n        \\\"pointer-events-none -mx-1 my-1 h-px bg-border/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\\n  return (\\n    <SelectPrimitive.ScrollUpButton\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpButton>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\\n  return (\\n    <SelectPrimitive.ScrollDownButton\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownButton>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Separator as SeparatorPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  decorative = true,\\n  ...props\\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\\n  return (\\n    <SeparatorPrimitive.Root\\n      data-slot=\\\"separator\\\"\\n      decorative={decorative}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-mira/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open</Button>\\n        </SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\\n  return (\\n    <SheetPrimitive.Overlay\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col bg-background bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-4 right-4\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Content>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-1.5 p-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-6\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-xs/relaxed text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-mira/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-mira/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {/* We create a SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild isActive={item.isActive}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-mira/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-mira/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-mira/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuButton>\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"PlusIcon\\\"\\n                        tabler=\\\"IconPlus\\\"\\n                        hugeicons=\\\"PlusSignIcon\\\"\\n                        phosphor=\\\"PlusIcon\\\"\\n                        remixicon=\\\"RiAddLine\\\"\\n                        className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\"\\n                      />\\n                      <IconPlaceholder\\n                        lucide=\\\"MinusIcon\\\"\\n                        tabler=\\\"IconMinus\\\"\\n                        hugeicons=\\\"MinusSignIcon\\\"\\n                        phosphor=\\\"MinusIcon\\\"\\n                        remixicon=\\\"RiSubtractLine\\\"\\n                        className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\"\\n                      />\\n                    </SidebarMenuButton>\\n                  </CollapsibleTrigger>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              asChild\\n                              isActive={item.isActive}\\n                            >\\n                              <a href={item.url}>{item.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-mira/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/radix-mira/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem asChild key={item.title}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-mira/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-mira/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/radix-mira/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-mira/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-mira/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-mira/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-mira/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-mira/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/radix-mira/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/radix-mira/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TerminalIcon\\\"\\n                      tabler=\\\"IconCommand\\\"\\n                      hugeicons=\\\"CommandIcon\\\"\\n                      phosphor=\\\"CommandIcon\\\"\\n                      remixicon=\\\"RiCommandLine\\\"\\n                      className=\\\"size-4\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/radix-mira/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-mira/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-mira/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-mira/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-mira/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-mira/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-mira/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\n\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\ntype TreeItem = string | TreeItem[]\\n\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"FolderIcon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-mira/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-mira/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-mira/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-mira/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/radix-mira/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-mira/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            {item.icon}\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-screen w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-mira/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-mira/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-mira/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-mira/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-mira/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-mira/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-mira/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-mira/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-mira/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-mira/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                      <ItemContent>\\n                        <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                        <ItemDescription>v{selectedVersion}</ItemDescription>\\n                      </ItemContent>\\n                      <ItemActions>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronsUpDownIcon\\\"\\n                          tabler=\\\"IconSelector\\\"\\n                          hugeicons=\\\"UnfoldMoreIcon\\\"\\n                          phosphor=\\\"CaretUpDownIcon\\\"\\n                          remixicon=\\\"RiArrowUpDownLine\\\"\\n                        />\\n                      </ItemActions>\\n                    </Item>\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    {data.versions.map((version) => (\\n                      <DropdownMenuItem\\n                        key={version}\\n                        onSelect={() => setSelectedVersion(version)}\\n                      >\\n                        v{version}{\\\" \\\"}\\n                        {version === selectedVersion && (\\n                          <IconPlaceholder\\n                            lucide=\\\"CheckIcon\\\"\\n                            tabler=\\\"IconCheck\\\"\\n                            hugeicons=\\\"Tick02Icon\\\"\\n                            phosphor=\\\"CheckIcon\\\"\\n                            remixicon=\\\"RiCheckLine\\\"\\n                            className=\\\"ml-auto\\\"\\n                          />\\n                        )}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton asChild isActive={subItem.isActive}>\\n                        <a href={subItem.url}>{subItem.title}</a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v1.0.0</ItemDescription>\\n                    </ItemContent>\\n                  </Item>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                        {item.title}{\\\" \\\"}\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      </SidebarMenuButton>\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem asChild key={subItem.title}>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-mira/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-mira/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Button size=\\\"icon-sm\\\" asChild className=\\\"size-8\\\">\\n                      <span>\\n                        <svg\\n                          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                          viewBox=\\\"0 0 256 256\\\"\\n                        >\\n                          <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                          <line\\n                            x1=\\\"208\\\"\\n                            y1=\\\"128\\\"\\n                            x2=\\\"128\\\"\\n                            y2=\\\"208\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                          <line\\n                            x1=\\\"192\\\"\\n                            y1=\\\"40\\\"\\n                            x2=\\\"40\\\"\\n                            y2=\\\"192\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                        </svg>\\n                      </span>\\n                    </Button>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {activeTeam.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {activeTeam.plan}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton tooltip={item.title} asChild>\\n                      <CollapsibleTrigger>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                          className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                        />\\n                      </CollapsibleTrigger>\\n                    </SidebarMenuButton>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton asChild>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      {item.icon}\\n                      {item.name}\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar>\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-mira/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-mira/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton\\n                      asChild\\n                      tooltip={item.title}\\n                      isActive={item.isActive}\\n                    >\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    {item.items?.length ? (\\n                      <>\\n                        <CollapsibleTrigger asChild>\\n                          <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                            <IconPlaceholder\\n                              lucide=\\\"ChevronRightIcon\\\"\\n                              tabler=\\\"IconChevronRight\\\"\\n                              hugeicons=\\\"ArrowRight01Icon\\\"\\n                              phosphor=\\\"CaretRightIcon\\\"\\n                              remixicon=\\\"RiArrowRightSLine\\\"\\n                            />\\n                            <span className=\\\"sr-only\\\">Toggle</span>\\n                          </SidebarMenuAction>\\n                        </CollapsibleTrigger>\\n                        <CollapsibleContent>\\n                          <SidebarMenuSub>\\n                            {item.items.map((subItem) => (\\n                              <SidebarMenuSubItem key={subItem.title}>\\n                                <SidebarMenuSubButton asChild>\\n                                  <a href={subItem.url}>\\n                                    <span>{subItem.title}</span>\\n                                  </a>\\n                                </SidebarMenuSubButton>\\n                              </SidebarMenuSubItem>\\n                            ))}\\n                          </SidebarMenuSub>\\n                        </CollapsibleContent>\\n                      </>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild size=\\\"sm\\\">\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"tooltip\",\n    \"input\",\n    \"use-mobile\",\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-mira/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport { Separator } from \\\"@/registry/radix-mira/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/radix-mira/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/radix-mira/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\n        \\\"h-8 w-full border-input bg-muted/20 dark:bg-muted/30\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\n        \\\"relative flex w-full min-w-0 flex-col px-2 py-1\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-xs\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-px\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-[calc(var(--radius-sm)+2px)] p-2 text-left text-xs ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-xs\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-xs group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  asChild = false,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  isActive?: boolean\\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n  const { isMobile, state } = useSidebar()\\n\\n  const button = (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-button\\\"\\n      data-sidebar=\\\"menu-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\\n      {...props}\\n    />\\n  )\\n\\n  if (!tooltip) {\\n    return button\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  asChild = false,\\n  showOnHover = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  showOnHover?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-[calc(var(--radius-sm)-2px)] p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        showOnHover &&\\n          \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-[calc(var(--radius-sm)-2px)] px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  asChild = false,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n  size?: \\\"sm\\\" | \\\"md\\\"\\n  isActive?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-sub-button\\\"\\n      data-sidebar=\\\"menu-sub-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(\\n        \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-xs data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-mira/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-mira/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-mira/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-mira/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-mira/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-mira/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-mira/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/radix-mira/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/radix-mira/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-md bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport { Slider } from \\\"@/registry/radix-mira/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      className={cn(\\n        \\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SliderPrimitive.Track\\n        data-slot=\\\"slider-track\\\"\\n        className=\\\"relative grow overflow-hidden rounded-md bg-muted data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3\\\"\\n      >\\n        <SliderPrimitive.Range\\n          data-slot=\\\"slider-range\\\"\\n          className=\\\"absolute bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n        />\\n      </SliderPrimitive.Track>\\n      {Array.from({ length: _values.length }, (_, index) => (\\n        <SliderPrimitive.Thumb\\n          data-slot=\\\"slider-thumb\\\"\\n          key={index}\\n          className=\\\"block size-4 shrink-0 rounded-md border border-primary bg-white shadow-sm ring-ring/30 transition-colors select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\\\"\\n        />\\n      ))}\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-mira/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-mira/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-mira/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-mira/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/radix-mira/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Label } from \\\"@/registry/radix-mira/ui/label\\\"\\nimport { Switch } from \\\"@/registry/radix-mira/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Switch as SwitchPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-[size=default]:h-[16.6px] data-[size=default]:w-[28px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/table-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-mira/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"sarah\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>In Progress</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"marcus\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Pending</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"emily\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Not Started</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-xs\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-mira/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-mira/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Tabs as TabsPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List> &\\n  VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\\n  return (\\n    <TabsPrimitive.Trigger\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-xs font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:py-[calc(--spacing(1.25))] hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\\n  return (\\n    <TabsPrimitive.Content\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-xs/relaxed outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/radix-mira/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full resize-none rounded-md border border-input bg-input/20 px-2 py-2 text-sm transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/radix-mira/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              data-icon=\\\"inline-start\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-mira/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-mira/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-mira/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-mira/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup type=\\\"multiple\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"single\\\" defaultValue=\\\"all\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"multiple\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          size=\\\"sm\\\"\\n          defaultValue=\\\"top\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"top\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup type=\\\"multiple\\\" variant=\\\"outline\\\" spacing={1} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:*:[svg]:stroke-foregfill-foreground aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup type=\\\"single\\\" defaultValue=\\\"all\\\" variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"today\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"newest\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"all\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"archived\\\">Archived</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"grid\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup type=\\\"multiple\\\" orientation=\\\"vertical\\\" spacing={2}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"single\\\"\\n        defaultValue=\\\"all\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"multiple\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          value={fontWeight}\\n          onValueChange={(value) => setFontWeight(value)}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/radix-mira/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-md data-[size=sm]:rounded-[min(var(--radius-md),8px)] data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive.Root>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\\n  VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <ToggleGroupPrimitive.Item\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </ToggleGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Toggle as TogglePrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-xs font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-7 min-w-7 px-2\\\",\\n        sm: \\\"h-6 min-w-6 rounded-[min(var(--radius-md),8px)] px-1.5 text-[0.625rem] [&_svg:not([class*='size-'])]:size-3\\\",\\n        lg: \\\"h-8 min-w-8 px-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive.Root\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-mira/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-mira/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/radix-mira/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-mira/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {([\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\">\\n                {side}\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InfoIcon\\\"\\n              tabler=\\\"IconInfoCircle\\\"\\n              hugeicons=\\\"AlertCircleIcon\\\"\\n              phosphor=\\\"InfoIcon\\\"\\n              remixicon=\\\"RiInformationLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Info</span>\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <span className=\\\"inline-block w-fit\\\">\\n            <Button variant=\\\"outline\\\" disabled>\\n              Disabled\\n            </Button>\\n          </span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <a\\n            href=\\\"#\\\"\\n            className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n            onClick={(e) => e.preventDefault()}\\n          >\\n            Learn more\\n          </a>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Status\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Tooltip as TooltipPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-mira/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delayDuration = 0,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delayDuration={delayDuration}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  sideOffset = 0,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Content\\n        data-slot=\\\"tooltip-content\\\"\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-mira/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-mira/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/radix-nova/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion type=\\\"single\\\" collapsible className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion type=\\\"multiple\\\" className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            type=\\\"single\\\"\\n            collapsible\\n            defaultValue=\\\"plans\\\"\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Accordion as AccordionPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\\"flex w-full flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\\n  return (\\n    <AccordionPrimitive.Content\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Content>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"destructive\\\">Delete Chat</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Open Alert Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\n\\nfunction AlertDialog({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\\n  return (\\n    <AlertDialogPrimitive.Overlay\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Action\\n        data-slot=\\\"alert-dialog-action\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Cancel\\n        data-slot=\\\"alert-dialog-cancel\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/radix-nova/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\\"absolute top-2 right-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/radix-nova/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { AspectRatio as AspectRatioPrimitive } from \\\"radix-ui\\\"\\n\\nfunction AspectRatio({\\n  ...props\\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\\n  return <AspectRatioPrimitive.Root data-slot=\\\"aspect-ratio\\\" {...props} />\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-nova/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/radix-nova/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge asChild>\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"secondary\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"destructive\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"outline\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"ghost\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"link\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/badge.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\n      data-variant={variant}\\n      className={cn(badgeVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n                  <BreadcrumbEllipsis />\\n                  <span className=\\\"sr-only\\\">Toggle menu</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Home</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Components</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  asChild,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"transition-colors hover:text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-5 items-center justify-center [&>svg]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/button-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-nova/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText asChild>\\n            <Label htmlFor=\\\"input-text\\\">GPU Size</Label>\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeOffIcon\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelect() {\\n  const [currency, setCurrency] = useState(\\\"$\\\")\\n\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select value={currency} onValueChange={setCurrency}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"$\\\">$</SelectItem>\\n                <SelectItem value=\\\"€\\\">€</SelectItem>\\n                <SelectItem value=\\\"£\\\">£</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button variant=\\\"outline\\\" asChild size=\\\"icon\\\" className=\\\"w-12\\\">\\n          <span>1.2K</span>\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select defaultValue=\\\"hours\\\">\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue placeholder=\\\"Select duration\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              <SelectItem value=\\\"hours\\\">Hours</SelectItem>\\n              <SelectItem value=\\\"days\\\">Days</SelectItem>\\n              <SelectItem value=\\\"weeks\\\">Weeks</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"AudioLinesIcon\\\"\\n                    tabler=\\\"IconHeadphones\\\"\\n                    hugeicons=\\\"AudioWave01Icon\\\"\\n                    phosphor=\\\"MicrophoneIcon\\\"\\n                    remixicon=\\\"RiMicLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/button-group.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\\\",\\n        vertical:\\n          \\\"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/button.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\\\",\\n        xs: \\\"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\\\",\\n        lg: \\\"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\\\",\\n        icon: \\\"size-8\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\":\\n          \\\"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\\\",\\n        \\\"icon-lg\\\": \\\"size-9\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"button\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/radix-nova/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-nova/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-nova/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Open Calendar\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent className=\\\"px-4\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-simple\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker-range\\\"\\n              variant=\\\"outline\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date?.from ? (\\n                date.to ? (\\n                  <>\\n                    {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                    {format(date.to, \\\"LLL dd, y\\\")}\\n                  </>\\n                ) : (\\n                  format(date.from, \\\"LLL dd, y\\\")\\n                )\\n              ) : (\\n                <span>Pick a date</span>\\n              )}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-with-dropdowns-desktop\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDownIcon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center style-nova:mt-2\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-4 group-data-[size=sm]/card:px-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/cards.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cards\",\n  \"title\": \"Cards\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/alert-dialog\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-nova/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-nova/ui/checkbox\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-nova/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-nova/ui/empty\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-nova/ui/popover\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-nova/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-nova/ui/sheet\\\"\\nimport { Slider } from \\\"@/registry/radix-nova/ui/slider\\\"\\nimport { Spinner } from \\\"@/registry/radix-nova/ui/spinner\\\"\\nimport { Switch } from \\\"@/registry/radix-nova/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ObservabilityCard />\\n      <SmallFormExample />\\n      <FormExample />\\n      <FieldExamples />\\n      <ItemExample />\\n      <ButtonGroupExamples />\\n      <EmptyAvatarGroup />\\n      <InputGroupExamples />\\n      <SheetExample />\\n      <BadgeExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction FieldExamples() {\\n  const [gpuCount, setGpuCount] = React.useState(8)\\n  const [value, setValue] = useState([200, 800])\\n  const handleGpuAdjustment = React.useCallback((adjustment: number) => {\\n    setGpuCount((prevCount) =>\\n      Math.max(1, Math.min(99, prevCount + adjustment))\\n    )\\n  }, [])\\n\\n  const handleGpuInputChange = React.useCallback(\\n    (e: React.ChangeEvent<HTMLInputElement>) => {\\n      const value = parseInt(e.target.value, 10)\\n      if (!isNaN(value) && value >= 1 && value <= 99) {\\n        setGpuCount(value)\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"Fields\\\">\\n      <FieldSet className=\\\"w-full max-w-md\\\">\\n        <FieldGroup>\\n          <FieldSet>\\n            <FieldLegend>Compute Environment</FieldLegend>\\n            <FieldDescription>\\n              Select the compute environment for your cluster.\\n            </FieldDescription>\\n            <RadioGroup defaultValue=\\\"kubernetes\\\">\\n              <FieldLabel htmlFor=\\\"kubernetes-r2h\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Kubernetes</FieldTitle>\\n                    <FieldDescription>\\n                      Run GPU workloads on a K8s configured cluster. This is the\\n                      default.\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"kubernetes\\\"\\n                    id=\\\"kubernetes-r2h\\\"\\n                    aria-label=\\\"Kubernetes\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n              <FieldLabel htmlFor=\\\"vm-z4k\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Virtual Machine</FieldTitle>\\n                    <FieldDescription>\\n                      Access a VM configured cluster to run workloads. (Coming\\n                      soon)\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"vm\\\"\\n                    id=\\\"vm-z4k\\\"\\n                    aria-label=\\\"Virtual Machine\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n            </RadioGroup>\\n          </FieldSet>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"number-of-gpus-f6l\\\">\\n                Number of GPUs\\n              </FieldLabel>\\n              <FieldDescription>You can add more later.</FieldDescription>\\n            </FieldContent>\\n            <ButtonGroup>\\n              <Input\\n                id=\\\"number-of-gpus-f6l\\\"\\n                value={gpuCount}\\n                onChange={handleGpuInputChange}\\n                size={3}\\n                maxLength={3}\\n              />\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Decrement\\\"\\n                onClick={() => handleGpuAdjustment(-1)}\\n                disabled={gpuCount <= 1}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MinusIcon\\\"\\n                  tabler=\\\"IconMinus\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Increment\\\"\\n                onClick={() => handleGpuAdjustment(1)}\\n                disabled={gpuCount >= 99}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </Button>\\n            </ButtonGroup>\\n          </Field>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"tinting\\\">Wallpaper Tinting</FieldLabel>\\n              <FieldDescription>\\n                Allow the wallpaper to be tinted.\\n              </FieldDescription>\\n            </FieldContent>\\n            <Switch id=\\\"tinting\\\" defaultChecked />\\n          </Field>\\n          <FieldSeparator />\\n          <FieldLabel htmlFor=\\\"checkbox-demo\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"checkbox-demo\\\" defaultChecked />\\n              <FieldLabel htmlFor=\\\"checkbox-demo\\\" className=\\\"line-clamp-1\\\">\\n                I agree to the terms and conditions\\n              </FieldLabel>\\n            </Field>\\n          </FieldLabel>\\n          <FieldSeparator />\\n          <Field>\\n            <FieldTitle>Price Range</FieldTitle>\\n            <FieldDescription>\\n              Set your budget range ($\\n              <span className=\\\"font-medium tabular-nums\\\">\\n                {value[0]}\\n              </span> -{\\\" \\\"}\\n              <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n            </FieldDescription>\\n            <Slider\\n              value={value}\\n              onValueChange={(val) => setValue(val as number[])}\\n              max={1000}\\n              min={0}\\n              step={10}\\n              className=\\\"mt-2 w-full\\\"\\n              aria-label=\\\"Price Range\\\"\\n            />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"submit\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              Cancel\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupExamples() {\\n  const [label, setLabel] = React.useState(\\\"personal\\\")\\n\\n  return (\\n    <Example title=\\\"Button Group\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Go Back\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Archive\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Report\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Snooze\\n            </Button>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button\\n                  variant=\\\"outline\\\"\\n                  size=\\\"icon-sm\\\"\\n                  aria-label=\\\"More Options\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-48\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"MailCheckIcon\\\"\\n                      tabler=\\\"IconMailCheck\\\"\\n                      hugeicons=\\\"MailValidation01Icon\\\"\\n                      phosphor=\\\"EnvelopeIcon\\\"\\n                      remixicon=\\\"RiMailLine\\\"\\n                    />\\n                    Mark as Read\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArchiveIcon\\\"\\n                      tabler=\\\"IconArchive\\\"\\n                      hugeicons=\\\"ArchiveIcon\\\"\\n                      phosphor=\\\"ArchiveIcon\\\"\\n                      remixicon=\\\"RiArchiveLine\\\"\\n                    />\\n                    Archive\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClockIcon\\\"\\n                      tabler=\\\"IconClock\\\"\\n                      hugeicons=\\\"ClockIcon\\\"\\n                      phosphor=\\\"ClockIcon\\\"\\n                      remixicon=\\\"RiTimeLine\\\"\\n                    />\\n                    Snooze\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CalendarPlusIcon\\\"\\n                      tabler=\\\"IconCalendarPlus\\\"\\n                      hugeicons=\\\"CalendarAdd01Icon\\\"\\n                      phosphor=\\\"CalendarPlusIcon\\\"\\n                      remixicon=\\\"RiCalendarEventLine\\\"\\n                    />\\n                    Add to Calendar\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ListFilterIcon\\\"\\n                      tabler=\\\"IconFilterPlus\\\"\\n                      hugeicons=\\\"AddToListIcon\\\"\\n                      phosphor=\\\"ListPlusIcon\\\"\\n                      remixicon=\\\"RiPlayListAddLine\\\"\\n                    />\\n                    Add to List\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"TagIcon\\\"\\n                        tabler=\\\"IconTag\\\"\\n                        hugeicons=\\\"TagIcon\\\"\\n                        phosphor=\\\"TagIcon\\\"\\n                        remixicon=\\\"RiPriceTagLine\\\"\\n                      />\\n                      Label As...\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuSubContent>\\n                      <DropdownMenuRadioGroup\\n                        value={label}\\n                        onValueChange={setLabel}\\n                      >\\n                        <DropdownMenuRadioItem value=\\\"personal\\\">\\n                          Personal\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"work\\\">\\n                          Work\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"other\\\">\\n                          Other\\n                        </DropdownMenuRadioItem>\\n                      </DropdownMenuRadioGroup>\\n                    </DropdownMenuSubContent>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Trash\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Previous\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Next\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <div className=\\\"flex gap-4\\\">\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">1</Button>\\n              <Button variant=\\\"outline\\\">2</Button>\\n              <Button variant=\\\"outline\\\">3</Button>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">Follow</Button>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\" className=\\\"w-52\\\">\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"VolumeX\\\"\\n                        tabler=\\\"IconVolume\\\"\\n                        hugeicons=\\\"VolumeOffIcon\\\"\\n                        phosphor=\\\"SpeakerSlashIcon\\\"\\n                        remixicon=\\\"RiVolumeMuteLine\\\"\\n                      />\\n                      Mute Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CheckIcon\\\"\\n                        tabler=\\\"IconCheck\\\"\\n                        hugeicons=\\\"Tick02Icon\\\"\\n                        phosphor=\\\"CheckIcon\\\"\\n                        remixicon=\\\"RiCheckLine\\\"\\n                      />\\n                      Mark as Read\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"UserRoundXIcon\\\"\\n                        tabler=\\\"IconUserX\\\"\\n                        hugeicons=\\\"UserRemove01Icon\\\"\\n                        phosphor=\\\"UserMinusIcon\\\"\\n                        remixicon=\\\"RiUserUnfollowLine\\\"\\n                      />\\n                      Block User\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShareIcon\\\"\\n                        tabler=\\\"IconShare\\\"\\n                        hugeicons=\\\"Share03Icon\\\"\\n                        phosphor=\\\"ShareIcon\\\"\\n                        remixicon=\\\"RiShareLine\\\"\\n                      />\\n                      Share Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CopyIcon\\\"\\n                        tabler=\\\"IconCopy\\\"\\n                        hugeicons=\\\"Copy01Icon\\\"\\n                        phosphor=\\\"CopyIcon\\\"\\n                        remixicon=\\\"RiFileCopyLine\\\"\\n                      />\\n                      Copy Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"AlertTriangleIcon\\\"\\n                        tabler=\\\"IconAlertTriangle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Report Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem variant=\\\"destructive\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"TrashIcon\\\"\\n                        tabler=\\\"IconTrash\\\"\\n                        hugeicons=\\\"Delete02Icon\\\"\\n                        phosphor=\\\"TrashIcon\\\"\\n                        remixicon=\\\"RiDeleteBinLine\\\"\\n                      />\\n                      Delete Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"BotIcon\\\"\\n                  tabler=\\\"IconRobot\\\"\\n                  hugeicons=\\\"BotIcon\\\"\\n                  phosphor=\\\"RobotIcon\\\"\\n                  remixicon=\\\"RiRobotLine\\\"\\n                />{\\\" \\\"}\\n                Copilot\\n              </Button>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    aria-label=\\\"Open Popover\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </PopoverTrigger>\\n                <PopoverContent align=\\\"end\\\" className=\\\"w-96\\\">\\n                  <PopoverHeader>\\n                    <PopoverTitle>Agent Tasks</PopoverTitle>\\n                    <PopoverDescription>\\n                      Describe your task in natural language. Copilot will work\\n                      in the background and open a pull request.\\n                    </PopoverDescription>\\n                  </PopoverHeader>\\n                  <div className=\\\"text-sm *:[p:not(:last-child)]:mb-2\\\">\\n                    <Textarea\\n                      placeholder=\\\"Describe your task in natural language.\\\"\\n                      className=\\\"min-h-32 resize-none\\\"\\n                    />\\n                  </div>\\n                </PopoverContent>\\n              </Popover>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupExamples() {\\n  const [isFavorite, setIsFavorite] = React.useState(false)\\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Input Group\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Search...\\\" />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"example.com\\\" className=\\\"!pl-1\\\" />\\n          <InputGroupAddon>\\n            <InputGroupText>https://</InputGroupText>\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupButton\\n                  className=\\\"rounded-full\\\"\\n                  size=\\\"icon-xs\\\"\\n                  aria-label=\\\"Info\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </TooltipTrigger>\\n              <TooltipContent>This is content in a tooltip.</TooltipContent>\\n            </Tooltip>\\n          </InputGroupAddon>\\n        </InputGroup>\\n        <Field>\\n          <Label htmlFor=\\\"input-secure-19\\\" className=\\\"sr-only\\\">\\n            Input Secure\\n          </Label>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-secure-19\\\" className=\\\"!pl-0.5\\\" />\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton\\n                    variant=\\\"secondary\\\"\\n                    size=\\\"icon-xs\\\"\\n                    aria-label=\\\"Info\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent\\n                align=\\\"start\\\"\\n                alignOffset={10}\\n                className=\\\"flex flex-col gap-1 rounded-xl text-sm\\\"\\n              >\\n                <p className=\\\"font-medium\\\">Your connection is not secure.</p>\\n                <p>\\n                  You should not enter any sensitive information on this site.\\n                </p>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"text-muted-foreground !pl-1\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                onClick={() => setIsFavorite(!isFavorite)}\\n                size=\\\"icon-xs\\\"\\n                aria-label=\\\"Favorite\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                  data-favorite={isFavorite}\\n                  className=\\\"data-[favorite=true]:fill-primary data-[favorite=true]:stroke-primary\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <ButtonGroup className=\\\"w-full\\\">\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"Add\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"flex-1\\\">\\n            <InputGroup>\\n              <InputGroupInput\\n                placeholder={\\n                  voiceEnabled\\n                    ? \\\"Record and send audio...\\\"\\n                    : \\\"Send a message...\\\"\\n                }\\n                disabled={voiceEnabled}\\n              />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <Tooltip>\\n                  <TooltipTrigger asChild>\\n                    <InputGroupButton\\n                      onClick={() => setVoiceEnabled(!voiceEnabled)}\\n                      data-active={voiceEnabled}\\n                      className=\\\"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground\\\"\\n                      aria-pressed={voiceEnabled}\\n                      size=\\\"icon-xs\\\"\\n                      aria-label=\\\"Voice Mode\\\"\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"AudioLinesIcon\\\"\\n                        tabler=\\\"IconWaveSine\\\"\\n                        hugeicons=\\\"AudioWave01Icon\\\"\\n                        phosphor=\\\"MicrophoneIcon\\\"\\n                        remixicon=\\\"RiMicLine\\\"\\n                      />\\n                    </InputGroupButton>\\n                  </TooltipTrigger>\\n                  <TooltipContent>Voice Mode</TooltipContent>\\n                </Tooltip>\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <InputGroup>\\n          <InputGroupTextarea placeholder=\\\"Ask, Search or Chat...\\\" />\\n          <InputGroupAddon align=\\\"block-end\\\">\\n            <InputGroupButton\\n              variant=\\\"outline\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n              aria-label=\\\"Add\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </InputGroupButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <InputGroupButton variant=\\\"ghost\\\">Auto</InputGroupButton>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                side=\\\"top\\\"\\n                align=\\\"start\\\"\\n                className=\\\"[--radius:0.95rem]\\\"\\n              >\\n                <DropdownMenuItem>Auto</DropdownMenuItem>\\n                <DropdownMenuItem>Agent</DropdownMenuItem>\\n                <DropdownMenuItem>Manual</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n            <InputGroupText className=\\\"ml-auto\\\">52% used</InputGroupText>\\n            <Separator orientation=\\\"vertical\\\" className=\\\"!h-4\\\" />\\n            <InputGroupButton\\n              variant=\\\"default\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpIcon\\\"\\n                tabler=\\\"IconArrowUp\\\"\\n                hugeicons=\\\"ArrowUp01Icon\\\"\\n                phosphor=\\\"ArrowUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Send</span>\\n            </InputGroupButton>\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyAvatarGroup() {\\n  return (\\n    <Example title=\\\"Empty\\\">\\n      <Empty className=\\\"h-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup className=\\\"grayscale\\\">\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button variant=\\\"outline\\\">Show Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent>\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Connect Mouse</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogMedia>\\n                    <IconPlaceholder\\n                      lucide=\\\"BluetoothIcon\\\"\\n                      tabler=\\\"IconBluetooth\\\"\\n                      hugeicons=\\\"BluetoothIcon\\\"\\n                      phosphor=\\\"BluetoothIcon\\\"\\n                      remixicon=\\\"RiBluetoothLine\\\"\\n                    />\\n                  </AlertDialogMedia>\\n                  <AlertDialogTitle>\\n                    Allow accessory to connect?\\n                  </AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    Do you want to allow the USB accessory to connect to this\\n                    device?\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                  <AlertDialogAction>Allow</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction FormExample() {\\n  return (\\n    <Example title=\\\"Complex Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Payment Method</CardTitle>\\n          <CardDescription>\\n            All transactions are secure and encrypted\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-card-name-43j\\\">\\n                      Name on Card\\n                    </FieldLabel>\\n                    <Input\\n                      id=\\\"checkout-7j9-card-name-43j\\\"\\n                      placeholder=\\\"John Doe\\\"\\n                      required\\n                    />\\n                  </Field>\\n                  <div className=\\\"grid grid-cols-3 gap-4\\\">\\n                    <Field className=\\\"col-span-2\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-card-number-uw1\\\">\\n                        Card Number\\n                      </FieldLabel>\\n                      <Input\\n                        id=\\\"checkout-7j9-card-number-uw1\\\"\\n                        placeholder=\\\"1234 5678 9012 3456\\\"\\n                        required\\n                      />\\n                      <FieldDescription>\\n                        Enter your 16-digit number.\\n                      </FieldDescription>\\n                    </Field>\\n                    <Field className=\\\"col-span-1\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-cvv\\\">CVV</FieldLabel>\\n                      <Input id=\\\"checkout-7j9-cvv\\\" placeholder=\\\"123\\\" required />\\n                    </Field>\\n                  </div>\\n                  <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-month-ts6\\\">\\n                        Month\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-month-ts6\\\">\\n                          <SelectValue placeholder=\\\"MM\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"01\\\">01</SelectItem>\\n                            <SelectItem value=\\\"02\\\">02</SelectItem>\\n                            <SelectItem value=\\\"03\\\">03</SelectItem>\\n                            <SelectItem value=\\\"04\\\">04</SelectItem>\\n                            <SelectItem value=\\\"05\\\">05</SelectItem>\\n                            <SelectItem value=\\\"06\\\">06</SelectItem>\\n                            <SelectItem value=\\\"07\\\">07</SelectItem>\\n                            <SelectItem value=\\\"08\\\">08</SelectItem>\\n                            <SelectItem value=\\\"09\\\">09</SelectItem>\\n                            <SelectItem value=\\\"10\\\">10</SelectItem>\\n                            <SelectItem value=\\\"11\\\">11</SelectItem>\\n                            <SelectItem value=\\\"12\\\">12</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-year-f59\\\">\\n                        Year\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-year-f59\\\">\\n                          <SelectValue placeholder=\\\"YYYY\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"2024\\\">2024</SelectItem>\\n                            <SelectItem value=\\\"2025\\\">2025</SelectItem>\\n                            <SelectItem value=\\\"2026\\\">2026</SelectItem>\\n                            <SelectItem value=\\\"2027\\\">2027</SelectItem>\\n                            <SelectItem value=\\\"2028\\\">2028</SelectItem>\\n                            <SelectItem value=\\\"2029\\\">2029</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                  </div>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldLegend>Billing Address</FieldLegend>\\n                <FieldDescription>\\n                  The billing address associated with your payment.\\n                </FieldDescription>\\n                <FieldGroup>\\n                  <Field orientation=\\\"horizontal\\\">\\n                    <Checkbox\\n                      id=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      defaultChecked\\n                    />\\n                    <FieldLabel\\n                      htmlFor=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      className=\\\"font-normal\\\"\\n                    >\\n                      Same as shipping address\\n                    </FieldLabel>\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-optional-comments\\\">\\n                      Comments\\n                    </FieldLabel>\\n                    <Textarea\\n                      id=\\\"checkout-7j9-optional-comments\\\"\\n                      placeholder=\\\"Add any additional comments\\\"\\n                    />\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction SmallFormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                align=\\\"end\\\"\\n                className=\\\"style-maia:w-56 style-mira:w-48 style-nova:w-48 style-vega:w-56 style-lyra:w-48\\\"\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction ObservabilityCard() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"bg-primary absolute inset-0 z-30 aspect-video opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button>\\n            Create Query{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction FieldSlider() {\\n  const [value, setValue] = useState([200, 800])\\n  return (\\n    <Example title=\\\"Field Slider\\\">\\n      <div className=\\\"w-full max-w-md\\\">\\n        <Field>\\n          <FieldTitle>Price Range</FieldTitle>\\n          <FieldDescription>\\n            Set your budget range ($\\n            <span className=\\\"font-medium tabular-nums\\\">{value[0]}</span> -{\\\" \\\"}\\n            <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n          </FieldDescription>\\n          <Slider\\n            value={value}\\n            onValueChange={setValue}\\n            max={1000}\\n            min={0}\\n            step={10}\\n            className=\\\"mt-2 w-full\\\"\\n            aria-label=\\\"Price Range\\\"\\n          />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemExample() {\\n  return (\\n    <Example title=\\\"Item\\\">\\n      <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n        <Item variant=\\\"outline\\\">\\n          <ItemContent>\\n            <ItemTitle>Two-factor authentication</ItemTitle>\\n            <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n              Verify via email or phone number.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n              Enable\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"outline\\\" size=\\\"sm\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ShoppingBagIcon\\\"\\n                tabler=\\\"IconShoppingBag\\\"\\n                hugeicons=\\\"ShoppingBasket01Icon\\\"\\n                phosphor=\\\"BagIcon\\\"\\n                remixicon=\\\"RiShoppingBagLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Your order has been shipped.</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeExamples() {\\n  return (\\n    <Example title=\\\"Badge\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex items-center justify-center gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Syncing\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Updating\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Loading\\n        </Badge>\\n        <Badge variant=\\\"link\\\" className=\\\"hidden sm:flex\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithSpinner() {\\n  return (\\n    <Example title=\\\"Empty with Spinner\\\">\\n      <Empty className=\\\"w-full border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>Processing your request</EmptyTitle>\\n          <EmptyDescription>\\n            Please wait while we process your request. Do not refresh the page.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button size=\\\"sm\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Cancel\\n            </Button>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetExample() {\\n  return (\\n    <Example title=\\\"Sheet\\\">\\n      <div className=\\\"flex gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"secondary\\\" className=\\\"flex-1 capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"overflow-y-auto px-4 text-sm\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"style-lyra:mb-2 style-lyra:leading-relaxed mb-4 leading-normal\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/radix-nova/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-nova/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-nova/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-nova/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Checkbox as CheckboxPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/radix-nova/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n              />\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"Folder01Icon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              {fileItem.name}\\n            </Button>\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                {isOpen ? (\\n                  <IconPlaceholder\\n                    lucide=\\\"MinimizeIcon\\\"\\n                    tabler=\\\"IconMinimize\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                ) : (\\n                  <IconPlaceholder\\n                    lucide=\\\"MaximizeIcon\\\"\\n                    tabler=\\\"IconMaximize\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                )}\\n              </Button>\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"radix-ui\\\"\\n\\nfunction Collapsible({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleTrigger\\n      data-slot=\\\"collapsible-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CollapsibleContent({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleContent\\n      data-slot=\\\"collapsible-content\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/radix-nova/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen} modal={false}>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue placeholder=\\\"Select a framework\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {frameworks.map((framework) => (\\n              <SelectItem key={framework} value={framework}>\\n                {framework}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            asChild\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          >\\n            <ComboboxTrigger />\\n          </InputGroupButton>\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/radix-nova/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: React.ComponentProps<typeof Dialog> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"p-1 pb-0\\\">\\n      <InputGroup className=\\\"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-4 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-nova/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger asChild>\\n              <Button>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Show Dialog\\n              </Button>\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  const [showBookmarksBar, setShowBookmarksBar] = React.useState(true)\\n  const [showFullUrls, setShowFullUrls] = React.useState(false)\\n  const [showDeveloperTools, setShowDeveloperTools] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem\\n              checked={showBookmarksBar}\\n              onCheckedChange={setShowBookmarksBar}\\n            >\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showFullUrls}\\n              onCheckedChange={setShowFullUrls}\\n            >\\n              Show Full URLs\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showDeveloperTools}\\n              onCheckedChange={setShowDeveloperTools}\\n            >\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\">\\n      <div className=\\\"grid grid-cols-2 gap-6\\\">\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (top)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"top\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (right)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"right\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (bottom)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"bottom\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (left)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"left\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\\n  return <ContextMenuPrimitive.Sub data-slot=\\\"context-menu-sub\\\" {...props} />\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Content\\n        data-slot=\\\"context-menu-content\\\"\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\\n  return (\\n    <ContextMenuPrimitive.SubContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-lg duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Label\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-nova/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              asChild\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n            >\\n              <a href=\\\"#\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CommandIcon\\\"\\n                  tabler=\\\"IconInnerShadowTop\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-5!\\\"\\n                />\\n                <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-nova/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-nova/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-nova/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            type=\\\"single\\\"\\n            value={timeRange}\\n            onValueChange={setTimeRange}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select value={timeRange} onValueChange={setTimeRange}>\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-nova/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-nova/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/radix-nova/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-nova/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-nova/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-nova/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\n\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={\\n            table.getIsAllPageRowsSelected() ||\\n            (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select>\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            className=\\\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\\\"\\n            size=\\\"icon\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Open menu</span>\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\n\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\n\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select defaultValue=\\\"outline\\\">\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Columns3Icon\\\"\\n                  tabler=\\\"IconLayoutColumns\\\"\\n                  hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                  phosphor=\\\"ColumnsIcon\\\"\\n                  remixicon=\\\"RiLayoutColumnLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Columns\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                  data-icon=\\\"inline-end\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select defaultValue={item.type}>\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select defaultValue={item.status}>\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select defaultValue={item.reviewer}>\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Done</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"rounded-sm data-[state=open]:bg-accent\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg grayscale\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  {user.email}\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"EllipsisVerticalIcon\\\"\\n                tabler=\\\"IconDotsVertical\\\"\\n                hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                remixicon=\\\"RiMore2Line\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                    {user.email}\\n                  </span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 data-[orientation=vertical]:h-4\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-nova/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-nova/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-nova/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/radix-nova/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-nova/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback((value: number[]) => {\\n    setSliderValue(value)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger asChild>\\n                    <Button variant=\\\"outline\\\">\\n                      <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                      <span className=\\\"block md:hidden\\\">Dialog</span>\\n                    </Button>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronUpIcon\\\"\\n                          tabler=\\\"IconChevronUp\\\"\\n                          hugeicons=\\\"ArrowUp01Icon\\\"\\n                          phosphor=\\\"CaretUpIcon\\\"\\n                          remixicon=\\\"RiArrowUpSLine\\\"\\n                        />\\n                      </Button>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/radix-nova/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-nova/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-nova/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport { Switch } from \\\"@/registry/radix-nova/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-nova/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger asChild>\\n            <Button variant=\\\"outline\\\">Edit Profile</Button>\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose asChild>\\n                <Button variant=\\\"outline\\\">Cancel</Button>\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Sticky Footer</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Chat Settings</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select value={theme} onValueChange={setTheme}>\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"light\\\">Light</SelectItem>\\n                              <SelectItem value=\\\"dark\\\">Dark</SelectItem>\\n                              <SelectItem value=\\\"system\\\">System</SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          value={accentColor}\\n                          onValueChange={setAccentColor}\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"default\\\">\\n                                <div className=\\\"size-3 rounded-full bg-neutral-500 dark:bg-neutral-400\\\" />\\n                                Default\\n                              </SelectItem>\\n                              <SelectItem value=\\\"red\\\">\\n                                <div className=\\\"size-3 rounded-full bg-red-500 dark:bg-red-400\\\" />\\n                                Red\\n                              </SelectItem>\\n                              <SelectItem value=\\\"blue\\\">\\n                                <div className=\\\"size-3 rounded-full bg-blue-500 dark:bg-blue-400\\\" />\\n                                Blue\\n                              </SelectItem>\\n                              <SelectItem value=\\\"green\\\">\\n                                <div className=\\\"size-3 rounded-full bg-green-500 dark:bg-green-400\\\" />\\n                                Green\\n                              </SelectItem>\\n                              <SelectItem value=\\\"purple\\\">\\n                                <div className=\\\"size-3 rounded-full bg-purple-500 dark:bg-purple-400\\\" />\\n                                Purple\\n                              </SelectItem>\\n                              <SelectItem value=\\\"pink\\\">\\n                                <div className=\\\"size-3 rounded-full bg-pink-500 dark:bg-pink-400\\\" />\\n                                Pink\\n                              </SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          value={spokenLanguage}\\n                          onValueChange={setSpokenLanguage}\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"auto\\\">Auto</SelectItem>\\n                            </SelectGroup>\\n                            <SelectSeparator />\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select value={voice} onValueChange={setVoice}>\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger asChild>\\n                              <InputGroupButton size=\\\"icon-xs\\\">\\n                                <IconPlaceholder\\n                                  lucide=\\\"InfoIcon\\\"\\n                                  tabler=\\\"IconInfoCircle\\\"\\n                                  hugeicons=\\\"AlertCircleIcon\\\"\\n                                  phosphor=\\\"InfoIcon\\\"\\n                                  remixicon=\\\"RiInformationLine\\\"\\n                                />\\n                              </InputGroupButton>\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\\n  return (\\n    <DialogPrimitive.Overlay\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Content\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-2 right-2\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Content>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close asChild>\\n          <Button variant=\\\"outline\\\">Close</Button>\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base leading-none font-medium\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Direction } from \\\"radix-ui\\\"\\n\\nfunction DirectionProvider({\\n  dir,\\n  direction,\\n  children,\\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\\\"dir\\\"]\\n}) {\\n  return (\\n    <Direction.DirectionProvider dir={direction ?? dir}>\\n      {children}\\n    </Direction.DirectionProvider>\\n  )\\n}\\n\\nconst useDirection = Direction.useDirection\\n\\nexport { DirectionProvider, useDirection }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-nova/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            <DropdownMenuItem>Support</DropdownMenuItem>\\n            <DropdownMenuItem disabled>API</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              Log out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Email</DropdownMenuItem>\\n                    <DropdownMenuItem>Message</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>More...</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Checkboxes\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Radio Group\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Notifications\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\">Payment Method</Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Actions\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </DropdownMenuItem>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"LogOutIcon\\\"\\n            tabler=\\\"IconLogout\\\"\\n            hugeicons=\\\"LogoutIcon\\\"\\n            phosphor=\\\"SignOutIcon\\\"\\n            remixicon=\\\"RiLogoutBoxLine\\\"\\n          />\\n          Sign Out\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n            >\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  shadcn@example.com\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\">\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Menu\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                      <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                      <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Complex Menu\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DropdownMenu as DropdownMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\\n  return <DropdownMenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\\n  return (\\n    <DropdownMenuPrimitive.Trigger\\n      data-slot=\\\"dropdown-menu-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal>\\n      <DropdownMenuPrimitive.Content\\n        data-slot=\\\"dropdown-menu-content\\\"\\n        sideOffset={sideOffset}\\n        align={align}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </DropdownMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\\n  return (\\n    <DropdownMenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\\n  return (\\n    <DropdownMenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Label\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\\n  return (\\n    <DropdownMenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\\n  return <DropdownMenuPrimitive.Sub data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.SubTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </DropdownMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\\n  return (\\n    <DropdownMenuPrimitive.SubContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-nova/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-nova/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-sm font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/radix-nova/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-nova/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-nova/ui/native-select\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-nova/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport { Slider } from \\\"@/registry/radix-nova/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-nova/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue placeholder=\\\"Choose an option\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue placeholder=\\\"Select your country\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue placeholder=\\\"Select timezone\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"utc\\\">UTC</SelectItem>\\n                <SelectItem value=\\\"est\\\">Eastern Time</SelectItem>\\n                <SelectItem value=\\\"pst\\\">Pacific Time</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"This field has an error\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue placeholder=\\\"Cannot select\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={setVolume}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={setBrightness}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={setTemperature}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={setPriceRange}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={setColorBalance}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"orange\\\">Orange</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-sm font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/radix-nova/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side} openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side} className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side} side of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Hover me\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { HoverCard as HoverCardPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction HoverCard({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\\n  return <HoverCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\\n  return (\\n    <HoverCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\\n  return (\\n    <HoverCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <HoverCardPrimitive.Content\\n        data-slot=\\\"hover-card-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </HoverCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-nova/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-nova/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-nova/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-nova/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/radix-nova/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger asChild>\\n                  <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\">\\n                    {country}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDownIcon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants>) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-nova/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <input\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-2.5 px-3 py-2.5\\\",\\n        sm: \\\"gap-2.5 px-3 py-2.5\\\",\\n        xs: \\\"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> &\\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n  return (\\n    <Comp\\n      data-slot=\\\"item\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(itemVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-nova/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-nova/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label as LabelPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Label({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\\n  return (\\n    <LabelPrimitive.Root\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-nova/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-nova/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-nova/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-nova/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-nova/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/radix-nova/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Email link</MenubarItem>\\n                  <MenubarItem>Messages</MenubarItem>\\n                  <MenubarItem>Notes</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Find...</MenubarItem>\\n                  <MenubarItem>Find Next</MenubarItem>\\n                  <MenubarItem>Find Previous</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarGroup>\\n              <MenubarCheckboxItem>\\n                Always Show Bookmarks Bar\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem checked>\\n                Always Show Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>\\n                Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled inset>\\n                Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Edit...</MenubarItem>\\n              <MenubarItem inset>Add Profile...</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SaveIcon\\\"\\n                  tabler=\\\"IconDeviceFloppy\\\"\\n                  hugeicons=\\\"FloppyDiskIcon\\\"\\n                  phosphor=\\\"FloppyDiskIcon\\\"\\n                  remixicon=\\\"RiSaveLine\\\"\\n                />\\n                Save <MenubarShortcut>⌘S</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BoldIcon\\\"\\n                  tabler=\\\"IconBold\\\"\\n                  hugeicons=\\\"TextBoldIcon\\\"\\n                  phosphor=\\\"TextBIcon\\\"\\n                  remixicon=\\\"RiBold\\\"\\n                />\\n                Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ItalicIcon\\\"\\n                  tabler=\\\"IconItalic\\\"\\n                  hugeicons=\\\"TextItalicIcon\\\"\\n                  phosphor=\\\"TextItalicIcon\\\"\\n                  remixicon=\\\"RiItalic\\\"\\n                />\\n                Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UnderlineIcon\\\"\\n                  tabler=\\\"IconUnderline\\\"\\n                  hugeicons=\\\"TextUnderlineIcon\\\"\\n                  phosphor=\\\"TextUnderlineIcon\\\"\\n                  remixicon=\\\"RiUnderline\\\"\\n                />\\n                Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n              <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Zoom In</MenubarItem>\\n              <MenubarItem inset>Zoom Out</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Image</MenubarItem>\\n                  <MenubarItem>Video</MenubarItem>\\n                  <MenubarItem>Audio</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LinkIcon\\\"\\n                  tabler=\\\"IconLink\\\"\\n                  hugeicons=\\\"LinkIcon\\\"\\n                  phosphor=\\\"LinkIcon\\\"\\n                  remixicon=\\\"RiLinksLine\\\"\\n                />\\n                Link <MenubarShortcut>⌘K</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"TableIcon\\\"\\n                  tabler=\\\"IconTable\\\"\\n                  hugeicons=\\\"TableIcon\\\"\\n                  phosphor=\\\"TableIcon\\\"\\n                  remixicon=\\\"RiTableLine\\\"\\n                />\\n                Table\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                />\\n                Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                />\\n                Spell Check\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UserIcon\\\"\\n                  tabler=\\\"IconUser\\\"\\n                  hugeicons=\\\"UserIcon\\\"\\n                  phosphor=\\\"UserIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Profile\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Sign out\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CopyIcon\\\"\\n                      tabler=\\\"IconCopy\\\"\\n                      hugeicons=\\\"CopyIcon\\\"\\n                      phosphor=\\\"CopyIcon\\\"\\n                      remixicon=\\\"RiFileCopyLine\\\"\\n                    />\\n                    Copy\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ScissorsIcon\\\"\\n                      tabler=\\\"IconCut\\\"\\n                      hugeicons=\\\"ScissorIcon\\\"\\n                      phosphor=\\\"ScissorsIcon\\\"\\n                      remixicon=\\\"RiScissorsLine\\\"\\n                    />\\n                    Cut\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClipboardPasteIcon\\\"\\n                      tabler=\\\"IconClipboard\\\"\\n                      hugeicons=\\\"ClipboardIcon\\\"\\n                      phosphor=\\\"ClipboardIcon\\\"\\n                      remixicon=\\\"RiClipboardLine\\\"\\n                    />\\n                    Paste\\n                  </MenubarItem>\\n                </MenubarGroup>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarGroup>\\n                      <MenubarItem>Save Page...</MenubarItem>\\n                      <MenubarItem>Create Shortcut...</MenubarItem>\\n                      <MenubarItem>Name Window...</MenubarItem>\\n                    </MenubarGroup>\\n                    <MenubarSeparator />\\n                    <MenubarGroup>\\n                      <MenubarItem>Developer Tools</MenubarItem>\\n                    </MenubarGroup>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarGroup>\\n                  <MenubarItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TrashIcon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"DeleteIcon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Delete\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\\n  return (\\n    <MenubarPrimitive.Root\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\n        \\\"flex h-8 items-center gap-0.5 rounded-lg border p-[3px]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\\n  return <MenubarPrimitive.Menu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\\n  return <MenubarPrimitive.Group data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\\n  return <MenubarPrimitive.Portal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\\n  return (\\n    <MenubarPrimitive.RadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n  )\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\\n  return (\\n    <MenubarPrimitive.Trigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-sm px-1.5 py-[2px] text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\\n  return (\\n    <MenubarPortal>\\n      <MenubarPrimitive.Content\\n        data-slot=\\\"menubar-content\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 min-w-36 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </MenubarPortal>\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenubarPrimitive.Item\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.Label\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-1.5 py-1 text-sm font-medium data-inset:pl-7\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\\n  return (\\n    <MenubarPrimitive.Separator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\\n  return <MenubarPrimitive.Sub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.SubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto size-4\\\"\\n      />\\n    </MenubarPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\\n  return (\\n    <MenubarPrimitive.SubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-nova/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/radix-nova/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuWithViewport />\\n      <NavigationMenuWithoutViewport />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuWithViewport() {\\n  return (\\n    <Example title=\\\"With Viewport\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-1 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction NavigationMenuWithoutViewport() {\\n  return (\\n    <Example title=\\\"Without Viewport\\\">\\n      <NavigationMenu viewport={false}>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-72\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Components</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Browse all components in the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Documentation</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Learn how to use the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Blog</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Read our latest blog posts.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Simple List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul>\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Components</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Documentation</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Blocks</Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Backlog\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      To Do\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Done\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink asChild>\\n        <Link href={href}>\\n          <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n            <div className=\\\"leading-none font-medium\\\">{title}</div>\\n            <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n          </div>\\n        </Link>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/navigation-menu.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { NavigationMenu as NavigationMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  className,\\n  children,\\n  viewport = true,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\\n  viewport?: boolean\\n}) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      data-viewport={viewport}\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {viewport && <NavigationMenuViewport />}\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg bg-background px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"top-0 left-0 w-full p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuViewport({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"absolute top-full left-0 isolate z-50 flex justify-center\\\"\\n      )}\\n    >\\n      <NavigationMenuPrimitive.Viewport\\n        data-slot=\\\"navigation-menu-viewport\\\"\\n        className={cn(\\n          \\\"origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\\n  return (\\n    <NavigationMenuPrimitive.Indicator\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Indicator>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuList,\\n  NavigationMenuItem,\\n  NavigationMenuContent,\\n  NavigationMenuTrigger,\\n  NavigationMenuLink,\\n  NavigationMenuIndicator,\\n  NavigationMenuViewport,\\n  navigationMenuTriggerStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/pagination-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/radix-nova/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-0.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      asChild\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n    >\\n      <a\\n        aria-current={isActive ? \\\"page\\\" : undefined}\\n        data-slot=\\\"pagination-link\\\"\\n        data-active={isActive}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-1.5!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-1.5!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-nova/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Start\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Center\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              End\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Popover\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Content\\n        data-slot=\\\"popover-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverAnchor({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\\n  return <PopoverPrimitive.Anchor data-slot=\\\"popover-anchor\\\" {...props} />\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-0.5 text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\\\"h2\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverAnchor,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/radix-nova/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/radix-nova/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/radix-nova/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/radix-nova/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/radix-nova/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/radix-nova/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/radix-nova/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/radix-nova/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/radix-nova/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/radix-nova/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/radix-nova/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/radix-nova/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/radix-nova/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/radix-nova/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/radix-nova/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/radix-nova/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/radix-nova/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/radix-nova/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/radix-nova/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/radix-nova/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/radix-nova/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/radix-nova/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/radix-nova/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/radix-nova/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/radix-nova/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/radix-nova/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/radix-nova/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/radix-nova/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/radix-nova/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/radix-nova/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/radix-nova/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport { Progress } from \\\"@/registry/radix-nova/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/radix-nova/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"progress-upload\\\">\\n          <span>Upload progress</span>\\n          <span className=\\\"ml-auto\\\">66%</span>\\n        </FieldLabel>\\n        <Progress value={66} className=\\\"w-full\\\" id=\\\"progress-upload\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState([50])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value[0]} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Progress as ProgressPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  value,\\n  ...props\\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\\n  return (\\n    <ProgressPrimitive.Root\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\n        \\\"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"size-full flex-1 bg-primary transition-all\\\"\\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n      />\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nexport { Progress }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-nova/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction RadioGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\\n  return (\\n    <RadioGroupPrimitive.Root\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\\n  return (\\n    <RadioGroupPrimitive.Item\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioGroupPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-nova/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-nova/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/radix-nova/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/radix-nova/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\\n  return (\\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.ScrollAreaThumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-nova/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartLineIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            <SelectItem value=\\\"carrot\\\">Carrot</SelectItem>\\n            <SelectItem value=\\\"broccoli\\\">Broccoli</SelectItem>\\n            <SelectItem value=\\\"spinach\\\">Spinach</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select an item\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {Array.from({ length: 100 }).map((_, i) => (\\n              <SelectItem key={i} value={`item-${i}`}>\\n                Item {i}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue placeholder=\\\"Small size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue placeholder=\\\"Default size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue placeholder=\\\"Small\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Default\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  return (\\n    <Example title=\\\"Popper\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent position=\\\"popper\\\">\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue placeholder=\\\"Filter\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"inactive\\\">Inactive</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select disabled>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Disabled\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  const [plan, setPlan] = React.useState<string>(plans[0].name)\\n\\n  const selectedPlan = plans.find((p) => p.name === plan)\\n\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select value={plan} onValueChange={setPlan}>\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {selectedPlan && <SelectPlanItem plan={selectedPlan} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan.name}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Select({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\\n  return <SelectPrimitive.Root data-slot=\\\"select\\\" {...props} />\\n}\\n\\nfunction SelectGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1 p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\\n  return <SelectPrimitive.Value data-slot=\\\"select-value\\\" {...props} />\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon asChild>\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n        />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"item-aligned\\\",\\n  align = \\\"center\\\",\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Content\\n        data-slot=\\\"select-content\\\"\\n        data-align-trigger={position === \\\"item-aligned\\\"}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          position === \\\"popper\\\" &&\\n            \\\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\\\",\\n          className\\n        )}\\n        position={position}\\n        align={align}\\n        {...props}\\n      >\\n        <SelectScrollUpButton />\\n        <SelectPrimitive.Viewport\\n          data-position={position}\\n          className={cn(\\n            \\\"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\\\",\\n            position === \\\"popper\\\" && \\\"\\\"\\n          )}\\n        >\\n          {children}\\n        </SelectPrimitive.Viewport>\\n        <SelectScrollDownButton />\\n      </SelectPrimitive.Content>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\\n  return (\\n    <SelectPrimitive.Label\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-1.5 py-1 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\">\\n        <SelectPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </SelectPrimitive.ItemIndicator>\\n      </span>\\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\\"pointer-events-none -mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\\n  return (\\n    <SelectPrimitive.ScrollUpButton\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpButton>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\\n  return (\\n    <SelectPrimitive.ScrollDownButton\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownButton>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Separator as SeparatorPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  decorative = true,\\n  ...props\\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\\n  return (\\n    <SeparatorPrimitive.Root\\n      data-slot=\\\"separator\\\"\\n      decorative={decorative}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-nova/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open</Button>\\n        </SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\\n  return (\\n    <SheetPrimitive.Overlay\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-3 right-3\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Content>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-0.5 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base font-medium text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-nova/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-nova/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {/* We create a SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild isActive={item.isActive}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-nova/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-nova/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-nova/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuButton>\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"PlusIcon\\\"\\n                        tabler=\\\"IconPlus\\\"\\n                        hugeicons=\\\"PlusSignIcon\\\"\\n                        phosphor=\\\"PlusIcon\\\"\\n                        remixicon=\\\"RiAddLine\\\"\\n                        className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\"\\n                      />\\n                      <IconPlaceholder\\n                        lucide=\\\"MinusIcon\\\"\\n                        tabler=\\\"IconMinus\\\"\\n                        hugeicons=\\\"MinusSignIcon\\\"\\n                        phosphor=\\\"MinusIcon\\\"\\n                        remixicon=\\\"RiSubtractLine\\\"\\n                        className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\"\\n                      />\\n                    </SidebarMenuButton>\\n                  </CollapsibleTrigger>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              asChild\\n                              isActive={item.isActive}\\n                            >\\n                              <a href={item.url}>{item.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-nova/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/radix-nova/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem asChild key={item.title}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-nova/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-nova/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/radix-nova/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-nova/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-nova/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-nova/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-nova/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-nova/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/radix-nova/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/radix-nova/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TerminalIcon\\\"\\n                      tabler=\\\"IconCommand\\\"\\n                      hugeicons=\\\"CommandIcon\\\"\\n                      phosphor=\\\"CommandIcon\\\"\\n                      remixicon=\\\"RiCommandLine\\\"\\n                      className=\\\"size-4\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/radix-nova/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-nova/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-nova/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-nova/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-nova/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-nova/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-nova/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\n\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\ntype TreeItem = string | TreeItem[]\\n\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"FolderIcon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-nova/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-nova/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-nova/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-nova/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/radix-nova/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-nova/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            {item.icon}\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-screen w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-nova/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-nova/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-nova/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-nova/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-nova/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-nova/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-nova/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-nova/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-nova/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-nova/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                      <ItemContent>\\n                        <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                        <ItemDescription>v{selectedVersion}</ItemDescription>\\n                      </ItemContent>\\n                      <ItemActions>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronsUpDownIcon\\\"\\n                          tabler=\\\"IconSelector\\\"\\n                          hugeicons=\\\"UnfoldMoreIcon\\\"\\n                          phosphor=\\\"CaretUpDownIcon\\\"\\n                          remixicon=\\\"RiArrowUpDownLine\\\"\\n                        />\\n                      </ItemActions>\\n                    </Item>\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    {data.versions.map((version) => (\\n                      <DropdownMenuItem\\n                        key={version}\\n                        onSelect={() => setSelectedVersion(version)}\\n                      >\\n                        v{version}{\\\" \\\"}\\n                        {version === selectedVersion && (\\n                          <IconPlaceholder\\n                            lucide=\\\"CheckIcon\\\"\\n                            tabler=\\\"IconCheck\\\"\\n                            hugeicons=\\\"Tick02Icon\\\"\\n                            phosphor=\\\"CheckIcon\\\"\\n                            remixicon=\\\"RiCheckLine\\\"\\n                            className=\\\"ml-auto\\\"\\n                          />\\n                        )}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton asChild isActive={subItem.isActive}>\\n                        <a href={subItem.url}>{subItem.title}</a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v1.0.0</ItemDescription>\\n                    </ItemContent>\\n                  </Item>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                        {item.title}{\\\" \\\"}\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      </SidebarMenuButton>\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem asChild key={subItem.title}>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-nova/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-nova/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Button size=\\\"icon-sm\\\" asChild className=\\\"size-8\\\">\\n                      <span>\\n                        <svg\\n                          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                          viewBox=\\\"0 0 256 256\\\"\\n                        >\\n                          <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                          <line\\n                            x1=\\\"208\\\"\\n                            y1=\\\"128\\\"\\n                            x2=\\\"128\\\"\\n                            y2=\\\"208\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                          <line\\n                            x1=\\\"192\\\"\\n                            y1=\\\"40\\\"\\n                            x2=\\\"40\\\"\\n                            y2=\\\"192\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                        </svg>\\n                      </span>\\n                    </Button>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {activeTeam.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {activeTeam.plan}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton tooltip={item.title} asChild>\\n                      <CollapsibleTrigger>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                          className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                        />\\n                      </CollapsibleTrigger>\\n                    </SidebarMenuButton>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton asChild>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      {item.icon}\\n                      {item.name}\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar>\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-nova/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-nova/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton\\n                      asChild\\n                      tooltip={item.title}\\n                      isActive={item.isActive}\\n                    >\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    {item.items?.length ? (\\n                      <>\\n                        <CollapsibleTrigger asChild>\\n                          <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                            <IconPlaceholder\\n                              lucide=\\\"ChevronRightIcon\\\"\\n                              tabler=\\\"IconChevronRight\\\"\\n                              hugeicons=\\\"ArrowRight01Icon\\\"\\n                              phosphor=\\\"CaretRightIcon\\\"\\n                              remixicon=\\\"RiArrowRightSLine\\\"\\n                            />\\n                            <span className=\\\"sr-only\\\">Toggle</span>\\n                          </SidebarMenuAction>\\n                        </CollapsibleTrigger>\\n                        <CollapsibleContent>\\n                          <SidebarMenuSub>\\n                            {item.items.map((subItem) => (\\n                              <SidebarMenuSubItem key={subItem.title}>\\n                                <SidebarMenuSubButton asChild>\\n                                  <a href={subItem.url}>\\n                                    <span>{subItem.title}</span>\\n                                  </a>\\n                                </SidebarMenuSubButton>\\n                              </SidebarMenuSubItem>\\n                            ))}\\n                          </SidebarMenuSub>\\n                        </CollapsibleContent>\\n                      </>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild size=\\\"sm\\\">\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"tooltip\",\n    \"input\",\n    \"use-mobile\",\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-nova/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport { Separator } from \\\"@/registry/radix-nova/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/radix-nova/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/radix-nova/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-sm\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-sm group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  asChild = false,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  isActive?: boolean\\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n  const { isMobile, state } = useSidebar()\\n\\n  const button = (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-button\\\"\\n      data-sidebar=\\\"menu-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\\n      {...props}\\n    />\\n  )\\n\\n  if (!tooltip) {\\n    return button\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  asChild = false,\\n  showOnHover = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  showOnHover?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        showOnHover &&\\n          \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  asChild = false,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n  size?: \\\"sm\\\" | \\\"md\\\"\\n  isActive?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-sub-button\\\"\\n      data-sidebar=\\\"menu-sub-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(\\n        \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-nova/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-nova/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-nova/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-nova/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-nova/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-nova/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-nova/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/radix-nova/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/radix-nova/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-md bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport { Slider } from \\\"@/registry/radix-nova/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      className={cn(\\n        \\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SliderPrimitive.Track\\n        data-slot=\\\"slider-track\\\"\\n        className=\\\"relative grow overflow-hidden rounded-full bg-muted data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\\\"\\n      >\\n        <SliderPrimitive.Range\\n          data-slot=\\\"slider-range\\\"\\n          className=\\\"absolute bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n        />\\n      </SliderPrimitive.Track>\\n      {Array.from({ length: _values.length }, (_, index) => (\\n        <SliderPrimitive.Thumb\\n          data-slot=\\\"slider-thumb\\\"\\n          key={index}\\n          className=\\\"relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50\\\"\\n        />\\n      ))}\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-nova/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-nova/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-nova/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-nova/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/radix-nova/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Label } from \\\"@/registry/radix-nova/ui/label\\\"\\nimport { Switch } from \\\"@/registry/radix-nova/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Switch as SwitchPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/table-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-nova/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"sarah\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>In Progress</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"marcus\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Pending</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"emily\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Not Started</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-nova/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-nova/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Tabs as TabsPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List> &\\n  VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\\n  return (\\n    <TabsPrimitive.Trigger\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\\n  return (\\n    <TabsPrimitive.Content\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-sm outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/radix-nova/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/radix-nova/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              data-icon=\\\"inline-start\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-nova/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-nova/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-nova/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-nova/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup type=\\\"multiple\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"single\\\" defaultValue=\\\"all\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"multiple\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          size=\\\"sm\\\"\\n          defaultValue=\\\"top\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"top\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup type=\\\"multiple\\\" variant=\\\"outline\\\" spacing={1} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:*:[svg]:stroke-foregfill-foreground aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup type=\\\"single\\\" defaultValue=\\\"all\\\" variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"today\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"newest\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"all\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"archived\\\">Archived</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"grid\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup type=\\\"multiple\\\" orientation=\\\"vertical\\\" spacing={2}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"single\\\"\\n        defaultValue=\\\"all\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"multiple\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          value={fontWeight}\\n          onValueChange={(value) => setFontWeight(value)}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/radix-nova/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive.Root>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\\n  VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <ToggleGroupPrimitive.Item\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </ToggleGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Toggle as TogglePrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 min-w-8 px-2\\\",\\n        sm: \\\"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]\\\",\\n        lg: \\\"h-9 min-w-9 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive.Root\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-nova/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-nova/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/radix-nova/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-nova/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {([\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\">\\n                {side}\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InfoIcon\\\"\\n              tabler=\\\"IconInfoCircle\\\"\\n              hugeicons=\\\"AlertCircleIcon\\\"\\n              phosphor=\\\"InfoIcon\\\"\\n              remixicon=\\\"RiInformationLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Info</span>\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <span className=\\\"inline-block w-fit\\\">\\n            <Button variant=\\\"outline\\\" disabled>\\n              Disabled\\n            </Button>\\n          </span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <a\\n            href=\\\"#\\\"\\n            className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n            onClick={(e) => e.preventDefault()}\\n          >\\n            Learn more\\n          </a>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Status\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Tooltip as TooltipPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-nova/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delayDuration = 0,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delayDuration={delayDuration}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  sideOffset = 0,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Content\\n        data-slot=\\\"tooltip-content\\\"\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-nova/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-nova/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/accordion-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion-example\",\n  \"title\": \"Accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/accordion-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/registry/radix-vega/ui/accordion\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AccordionExample() {\\n  return (\\n    <ExampleWrapper className=\\\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\\\">\\n      <AccordionBasic />\\n      <AccordionMultiple />\\n      <AccordionWithBorders />\\n      <AccordionInCard />\\n      <AccordionWithDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AccordionBasic() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Is it accessible?\\\",\\n      content: \\\"Yes. It adheres to the WAI-ARIA design pattern.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Is it styled?\\\",\\n      content:\\n        \\\"Yes. It comes with default styles that matches the other components' aesthetic.\\\",\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"Is it animated?\\\",\\n      content:\\n        \\\"Yes. It's animated by default, but you can disable it if you prefer.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Accordion type=\\\"single\\\" collapsible className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionMultiple() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger:\\n        \\\"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\\\",\\n      content:\\n        \\\"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\\\",\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger:\\n        \\\"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\\\",\\n      content:\\n        \\\"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\\\",\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Accordion type=\\\"multiple\\\" className=\\\"mx-auto max-w-lg\\\">\\n        {items.map((item) => (\\n          <AccordionItem key={item.value} value={item.value}>\\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n            <AccordionContent>{item.content}</AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithBorders() {\\n  const items = [\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content:\\n        \\\"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\\\",\\n    },\\n    {\\n      value: \\\"security\\\",\\n      trigger: \\\"Is my data secure?\\\",\\n      content:\\n        \\\"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\\\",\\n    },\\n    {\\n      value: \\\"integration\\\",\\n      trigger: \\\"What integrations do you support?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We integrate with 500+ popular tools including Slack, Zapier,\\n            Salesforce, HubSpot, and more. You can also build custom\\n            integrations using our REST API and webhooks.{\\\" \\\"}\\n          </p>\\n          <p>\\n            Our API documentation includes code examples in 10+ programming\\n            languages.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Borders\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            className=\\\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\\\"\\n          >\\n            <AccordionTrigger className=\\\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionInCard() {\\n  const items = [\\n    {\\n      value: \\\"plans\\\",\\n      trigger: \\\"What subscription plans do you offer?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer three subscription tiers: Starter ($9/month), Professional\\n            ($29/month), and Enterprise ($99/month). Each plan includes\\n            increasing storage limits, API access, priority support, and team\\n            collaboration features.\\n          </p>\\n          <p>\\n            <a href=\\\"#\\\">Annual billing is available</a> with a 20% discount. All\\n            plans include a 14-day free trial with no credit card required.\\n          </p>\\n          <Button size=\\\"sm\\\">\\n            View plans\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRight01Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n            />\\n          </Button>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"billing\\\",\\n      trigger: \\\"How does billing work?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Billing occurs automatically at the start of each billing cycle. We\\n            accept all major credit cards, PayPal, and ACH transfers for\\n            enterprise customers.\\n          </p>\\n          <p>\\n            You&apos;ll receive an invoice via email after each payment. You can\\n            update your payment method or billing information anytime in your\\n            account settings. Failed payments will trigger automated retry\\n            attempts and email notifications.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"upgrade\\\",\\n      trigger: \\\"Can I upgrade or downgrade my plan?\\\",\\n      content: (\\n        <>\\n          <p>\\n            Yes, you can change your plan at any time. When upgrading,\\n            you&apos;ll be charged a prorated amount for the remainder of your\\n            billing cycle and immediately gain access to new features.\\n          </p>\\n          <p>\\n            When downgrading, the change takes effect at the end of your current\\n            billing period, and you&apos;ll retain access to premium features\\n            until then. No refunds are provided for downgrades.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"cancel\\\",\\n      trigger: \\\"How do I cancel my subscription?\\\",\\n      content: (\\n        <>\\n          <p>\\n            You can cancel your subscription anytime from your account settings.\\n            There are no cancellation fees or penalties. Your access will\\n            continue until the end of your current billing period.\\n          </p>\\n          <p>\\n            After cancellation, your data is retained for 30 days in case you\\n            want to reactivate. You can export all your data before or after\\n            canceling. We&apos;d love to hear your feedback about why\\n            you&apos;re leaving.\\n          </p>\\n        </>\\n      ),\\n    },\\n    {\\n      value: \\\"refund\\\",\\n      trigger: \\\"What is your refund policy?\\\",\\n      content: (\\n        <>\\n          <p>\\n            We offer a 30-day money-back guarantee for new subscriptions. If\\n            you&apos;re not satisfied within the first 30 days, contact our\\n            support team for a full refund.\\n          </p>\\n          <p>\\n            After 30 days, we don&apos;t provide refunds for partial billing\\n            periods, but you can cancel anytime to avoid future charges.\\n            Enterprise customers have custom refund terms outlined in their\\n            contracts.\\n          </p>\\n        </>\\n      ),\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-full max-w-lg gap-4\\\">\\n        <CardHeader>\\n          <CardTitle>Subscription & Billing</CardTitle>\\n          <CardDescription>\\n            Common questions about your account, plans, and payments\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Accordion\\n            type=\\\"single\\\"\\n            collapsible\\n            defaultValue=\\\"plans\\\"\\n            className=\\\"style-maia:rounded-md style-mira:rounded-md\\\"\\n          >\\n            {items.map((item) => (\\n              <AccordionItem key={item.value} value={item.value}>\\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\\n                <AccordionContent>{item.content}</AccordionContent>\\n              </AccordionItem>\\n            ))}\\n          </Accordion>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction AccordionWithDisabled() {\\n  const items = [\\n    {\\n      value: \\\"item-1\\\",\\n      trigger: \\\"Can I access my account history?\\\",\\n      content:\\n        \\\"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\\\",\\n      disabled: false,\\n    },\\n    {\\n      value: \\\"item-2\\\",\\n      trigger: \\\"Premium feature information\\\",\\n      content:\\n        \\\"This section contains information about premium features. Upgrade your plan to access this content.\\\",\\n      disabled: true,\\n    },\\n    {\\n      value: \\\"item-3\\\",\\n      trigger: \\\"How do I update my email address?\\\",\\n      content:\\n        \\\"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\\\",\\n      disabled: false,\\n    },\\n  ]\\n\\n  return (\\n    <Example title=\\\"With Disabled\\\">\\n      <Accordion\\n        type=\\\"single\\\"\\n        collapsible\\n        className=\\\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\\\"\\n      >\\n        {items.map((item) => (\\n          <AccordionItem\\n            key={item.value}\\n            value={item.value}\\n            disabled={item.disabled}\\n            className=\\\"p-1 data-open:bg-muted/50\\\"\\n          >\\n            <AccordionTrigger className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.trigger}\\n            </AccordionTrigger>\\n            <AccordionContent className=\\\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\\\">\\n              {item.content}\\n            </AccordionContent>\\n          </AccordionItem>\\n        ))}\\n      </Accordion>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Accordion as AccordionPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Accordion({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\\n  return (\\n    <AccordionPrimitive.Root\\n      data-slot=\\\"accordion\\\"\\n      className={cn(\\\"flex w-full flex-col\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\\n  return (\\n    <AccordionPrimitive.Item\\n      data-slot=\\\"accordion-item\\\"\\n      className={cn(\\\"not-last:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AccordionTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\\n  return (\\n    <AccordionPrimitive.Header className=\\\"flex\\\">\\n      <AccordionPrimitive.Trigger\\n        data-slot=\\\"accordion-trigger\\\"\\n        className={cn(\\n          \\\"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-md border border-transparent py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconChevronDown\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowDown01Icon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"ChevronUpIcon\\\"\\n          tabler=\\\"IconChevronUp\\\"\\n          data-slot=\\\"accordion-trigger-icon\\\"\\n          hugeicons=\\\"ArrowUp01Icon\\\"\\n          phosphor=\\\"CaretUpIcon\\\"\\n          remixicon=\\\"RiArrowUpSLine\\\"\\n          className=\\\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\\\"\\n        />\\n      </AccordionPrimitive.Trigger>\\n    </AccordionPrimitive.Header>\\n  )\\n}\\n\\nfunction AccordionContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\\n  return (\\n    <AccordionPrimitive.Content\\n      data-slot=\\\"accordion-content\\\"\\n      className=\\\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\\\"\\n      {...props}\\n    >\\n      <div\\n        className={cn(\\n          \\\"h-(--radix-accordion-content-height) pt-0 pb-4 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </AccordionPrimitive.Content>\\n  )\\n}\\n\\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/alert-dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog-example\",\n  \"title\": \"Alert Dialog\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"button\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/alert-dialog-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/alert-dialog\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertDialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AlertDialogBasic />\\n      <AlertDialogSmall />\\n      <AlertDialogWithMedia />\\n      <AlertDialogSmallWithMedia />\\n      <AlertDialogDestructive />\\n      <AlertDialogInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertDialogBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This action cannot be undone. This will permanently delete your\\n              account and remove your data from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmall() {\\n  return (\\n    <Example title=\\\"Small\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogWithMedia() {\\n  return (\\n    <Example title=\\\"With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Default (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent>\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete your account and remove your data\\n              from our servers.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\\n            <AlertDialogAction>Continue</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogSmallWithMedia() {\\n  return (\\n    <Example title=\\\"Small With Media\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Small (Media)</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia>\\n              <IconPlaceholder\\n                lucide=\\\"BluetoothIcon\\\"\\n                tabler=\\\"IconBluetooth\\\"\\n                hugeicons=\\\"BluetoothIcon\\\"\\n                phosphor=\\\"BluetoothIcon\\\"\\n                remixicon=\\\"RiBluetoothLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              Do you want to allow the USB accessory to connect to this device?\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n            <AlertDialogAction>Allow</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\" className=\\\"items-center\\\">\\n      <AlertDialog>\\n        <AlertDialogTrigger asChild>\\n          <Button variant=\\\"destructive\\\">Delete Chat</Button>\\n        </AlertDialogTrigger>\\n        <AlertDialogContent size=\\\"sm\\\">\\n          <AlertDialogHeader>\\n            <AlertDialogMedia className=\\\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"Trash2Icon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"Delete02Icon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n            </AlertDialogMedia>\\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\\n            <AlertDialogDescription>\\n              This will permanently delete this chat conversation. View{\\\" \\\"}\\n              <a href=\\\"#\\\">Settings</a> delete any memories saved during this\\n              chat.\\n            </AlertDialogDescription>\\n          </AlertDialogHeader>\\n          <AlertDialogFooter>\\n            <AlertDialogCancel variant=\\\"ghost\\\">Cancel</AlertDialogCancel>\\n            <AlertDialogAction variant=\\\"destructive\\\">Delete</AlertDialogAction>\\n          </AlertDialogFooter>\\n        </AlertDialogContent>\\n      </AlertDialog>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertDialogInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\" className=\\\"items-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Alert Dialog Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to open an alert dialog.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Open Alert Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/alert-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertDialog as AlertDialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\n\\nfunction AlertDialog({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\\n  return <AlertDialogPrimitive.Root data-slot=\\\"alert-dialog\\\" {...props} />\\n}\\n\\nfunction AlertDialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\\n  return (\\n    <AlertDialogPrimitive.Trigger data-slot=\\\"alert-dialog-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\\n  return (\\n    <AlertDialogPrimitive.Portal data-slot=\\\"alert-dialog-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction AlertDialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\\n  return (\\n    <AlertDialogPrimitive.Overlay\\n      data-slot=\\\"alert-dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\\n  size?: \\\"default\\\" | \\\"sm\\\"\\n}) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        data-size={size}\\n        className={cn(\\n          \\\"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-background p-6 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </AlertDialogPortal>\\n  )\\n}\\n\\nfunction AlertDialogHeader({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-header\\\"\\n      className={cn(\\n        \\\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogFooter({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogMedia({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-dialog-media\\\"\\n      className={cn(\\n        \\\"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\\n  return (\\n    <AlertDialogPrimitive.Title\\n      data-slot=\\\"alert-dialog-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\\n  return (\\n    <AlertDialogPrimitive.Description\\n      data-slot=\\\"alert-dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Action\\n        data-slot=\\\"alert-dialog-action\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\\n  Pick<React.ComponentProps<typeof Button>, \\\"variant\\\" | \\\"size\\\">) {\\n  return (\\n    <Button variant={variant} size={size} asChild>\\n      <AlertDialogPrimitive.Cancel\\n        data-slot=\\\"alert-dialog-cancel\\\"\\n        className={cn(className)}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogOverlay,\\n  AlertDialogPortal,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/alert-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-example\",\n  \"title\": \"Alert\",\n  \"registryDependencies\": [\n    \"alert\",\n    \"badge\",\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/alert-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Alert,\\n  AlertAction,\\n  AlertDescription,\\n  AlertTitle,\\n} from \\\"@/registry/radix-vega/ui/alert\\\"\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AlertExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <AlertExample1 />\\n      <AlertExample2 />\\n      <AlertExample3 />\\n      <AlertExample4 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AlertExample1() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <AlertDescription>\\n            This one has a description only. No title. No icon.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample2() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            Let&apos;s try one with icon, title and a <a href=\\\"#\\\">link</a>.\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This one has an icon and a description only. No title.{\\\" \\\"}\\n            <a href=\\\"#\\\">But it has a link</a> and a <a href=\\\"#\\\">second link</a>.\\n          </AlertDescription>\\n        </Alert>\\n\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\\n          <AlertDescription>\\n            This is an alert with icon, title and description.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content and potentially wraps across multiple\\n            lines\\n          </AlertTitle>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertDescription>\\n            This is a very long alert description that demonstrates how the\\n            component handles extended text content and potentially wraps across\\n            multiple lines\\n          </AlertDescription>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>\\n            This is an extremely long alert title that spans multiple lines to\\n            demonstrate how the component handles very lengthy headings while\\n            maintaining readability and proper text wrapping behavior\\n          </AlertTitle>\\n          <AlertDescription>\\n            This is an equally long description that contains detailed\\n            information about the alert. It shows how the component can\\n            accommodate extensive content while preserving proper spacing,\\n            alignment, and readability across different screen sizes and\\n            viewport widths. This helps ensure the user experience remains\\n            consistent regardless of the content length.\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample3() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Something went wrong!</AlertTitle>\\n          <AlertDescription>\\n            Your session has expired. Please log in again.\\n          </AlertDescription>\\n        </Alert>\\n        <Alert variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>Unable to process your payment.</AlertTitle>\\n          <AlertDescription>\\n            <p>\\n              Please verify your <a href=\\\"#\\\">billing information</a> and try\\n              again.\\n            </p>\\n            <ul className=\\\"list-inside list-disc\\\">\\n              <li>Check your card details</li>\\n              <li>Ensure sufficient funds</li>\\n              <li>Verify billing address</li>\\n            </ul>\\n          </AlertDescription>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AlertExample4() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <div className=\\\"mx-auto flex w-full max-w-lg flex-col gap-4\\\">\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertAction>\\n            <Button size=\\\"xs\\\">Undo</Button>\\n          </AlertAction>\\n        </Alert>\\n        <Alert>\\n          <IconPlaceholder\\n            lucide=\\\"CircleAlertIcon\\\"\\n            tabler=\\\"IconExclamationCircle\\\"\\n            hugeicons=\\\"AlertCircleIcon\\\"\\n            phosphor=\\\"WarningCircleIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n          />\\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\\n          <AlertDescription>\\n            This is a very long alert title that demonstrates how the component\\n            handles extended text content.\\n          </AlertDescription>\\n          <AlertAction>\\n            <Badge variant=\\\"secondary\\\">Badge</Badge>\\n          </AlertAction>\\n        </Alert>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/alert.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nconst alertVariants = cva(\\n  \\\"group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-card text-card-foreground\\\",\\n        destructive:\\n          \\\"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Alert({\\n  className,\\n  variant,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof alertVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"alert\\\"\\n      role=\\\"alert\\\"\\n      className={cn(alertVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-description\\\"\\n      className={cn(\\n        \\\"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"alert-action\\\"\\n      className={cn(\\\"absolute top-2.5 right-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/aspect-ratio-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio-example\",\n  \"title\": \"Aspect Ratio\",\n  \"registryDependencies\": [\n    \"aspect-ratio\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/aspect-ratio-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { AspectRatio } from \\\"@/registry/radix-vega/ui/aspect-ratio\\\"\\n\\nexport default function AspectRatioExample() {\\n  return (\\n    <ExampleWrapper className=\\\"max-w-4xl 2xl:max-w-4xl\\\">\\n      <AspectRatio16x9 />\\n      <AspectRatio21x9 />\\n      <AspectRatio1x1 />\\n      <AspectRatio9x16 />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AspectRatio16x9() {\\n  return (\\n    <Example title=\\\"16:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={16 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio1x1() {\\n  return (\\n    <Example title=\\\"1:1\\\" className=\\\"items-start\\\">\\n      <AspectRatio ratio={1 / 1} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio9x16() {\\n  return (\\n    <Example title=\\\"9:16\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={9 / 16} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\\nfunction AspectRatio21x9() {\\n  return (\\n    <Example title=\\\"21:9\\\" className=\\\"items-center justify-center\\\">\\n      <AspectRatio ratio={21 / 9} className=\\\"rounded-lg bg-muted\\\">\\n        <Image\\n          src=\\\"https://avatar.vercel.sh/shadcn1\\\"\\n          alt=\\\"Photo\\\"\\n          fill\\n          className=\\\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\\\"\\n        />\\n      </AspectRatio>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { AspectRatio as AspectRatioPrimitive } from \\\"radix-ui\\\"\\n\\nfunction AspectRatio({\\n  ...props\\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\\n  return <AspectRatioPrimitive.Root data-slot=\\\"aspect-ratio\\\" {...props} />\\n}\\n\\nexport { AspectRatio }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/avatar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar-example\",\n  \"title\": \"Avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"empty\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/avatar-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarBadge,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-vega/ui/empty\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function AvatarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <AvatarSizes />\\n      <AvatarWithBadge />\\n      <AvatarWithBadgeIcon />\\n      <AvatarGroupExample />\\n      <AvatarGroupWithCount />\\n      <AvatarGroupWithIconCount />\\n      <AvatarInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction AvatarSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadge() {\\n  return (\\n    <Example title=\\\"Badge\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/jorgezreik.png\\\"\\n            alt=\\\"@jorgezreik\\\"\\n          />\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>JZ</AvatarFallback>\\n          <AvatarBadge />\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarWithBadgeIcon() {\\n  return (\\n    <Example title=\\\"Badge with Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/pranathip.png\\\"\\n            alt=\\\"@pranathip\\\"\\n          />\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarFallback>PP</AvatarFallback>\\n          <AvatarBadge>\\n            <IconPlaceholder\\n              lucide=\\\"CheckIcon\\\"\\n              tabler=\\\"IconCheck\\\"\\n              hugeicons=\\\"Tick02Icon\\\"\\n              phosphor=\\\"CheckIcon\\\"\\n              remixicon=\\\"RiCheckLine\\\"\\n            />\\n          </AvatarBadge>\\n        </Avatar>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupExample() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithCount() {\\n  return (\\n    <Example title=\\\"Group with Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>+3</AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarGroupWithIconCount() {\\n  return (\\n    <Example title=\\\"Group with Icon Count\\\">\\n      <AvatarGroup>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"sm\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar>\\n          <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar>\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n      <AvatarGroup>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/shadcn.png\\\"\\n            alt=\\\"@shadcn\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>CN</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/maxleiter.png\\\"\\n            alt=\\\"@maxleiter\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>LR</AvatarFallback>\\n        </Avatar>\\n        <Avatar size=\\\"lg\\\">\\n          <AvatarImage\\n            src=\\\"https://github.com/evilrabbit.png\\\"\\n            alt=\\\"@evilrabbit\\\"\\n            className=\\\"grayscale\\\"\\n          />\\n          <AvatarFallback>ER</AvatarFallback>\\n        </Avatar>\\n        <AvatarGroupCount>\\n          <IconPlaceholder\\n            lucide=\\\"PlusIcon\\\"\\n            tabler=\\\"IconPlus\\\"\\n            hugeicons=\\\"PlusSignIcon\\\"\\n            phosphor=\\\"PlusIcon\\\"\\n            remixicon=\\\"RiAddLine\\\"\\n          />\\n        </AvatarGroupCount>\\n      </AvatarGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction AvatarInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty\\\">\\n      <Empty className=\\\"w-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                  className=\\\"grayscale\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n              <AvatarGroupCount>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </AvatarGroupCount>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            Invite Members\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/avatar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Avatar as AvatarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Avatar({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\\n  size?: \\\"default\\\" | \\\"sm\\\" | \\\"lg\\\"\\n}) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarImage({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\\n  return (\\n    <AvatarPrimitive.Image\\n      data-slot=\\\"avatar-image\\\"\\n      className={cn(\\n        \\\"aspect-square size-full rounded-full object-cover\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarFallback({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\\n  return (\\n    <AvatarPrimitive.Fallback\\n      data-slot=\\\"avatar-fallback\\\"\\n      className={cn(\\n        \\\"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"avatar-badge\\\"\\n      className={cn(\\n        \\\"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\\\",\\n        \\\"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\\\",\\n        \\\"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\\\",\\n        \\\"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group\\\"\\n      className={cn(\\n        \\\"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AvatarGroupCount({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"avatar-group-count\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Avatar,\\n  AvatarImage,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarBadge,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/badge-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-example\",\n  \"title\": \"Badge\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/badge-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport { Spinner } from \\\"@/registry/radix-vega/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function BadgeExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <BadgeVariants />\\n      <BadgeWithIconLeft />\\n      <BadgeWithIconRight />\\n      <BadgeWithSpinner />\\n      <BadgeAsLink />\\n      <BadgeLongText />\\n      <BadgeCustomColors />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BadgeVariants() {\\n  return (\\n    <Example title=\\\"Variants\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>Default</Badge>\\n        <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n        <Badge variant=\\\"destructive\\\">Destructive</Badge>\\n        <Badge variant=\\\"outline\\\">Outline</Badge>\\n        <Badge variant=\\\"ghost\\\">Ghost</Badge>\\n        <Badge variant=\\\"link\\\">Link</Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheck\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadge02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          Secondary\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          Destructive\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          Outline\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          Ghost\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          Link\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeWithSpinner() {\\n  return (\\n    <Example title=\\\"With Spinner\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Default\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Secondary\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Destructive\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Outline\\n        </Badge>\\n        <Badge variant=\\\"ghost\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Ghost\\n        </Badge>\\n        <Badge variant=\\\"link\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeAsLink() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge asChild>\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"secondary\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"destructive\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"outline\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowUpRightIcon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"ghost\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n        <Badge asChild variant=\\\"link\\\">\\n          <a href=\\\"#\\\">\\n            Link{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowUpRightIcon\\\"\\n              tabler=\\\"IconArrowUpRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowUpRightIcon\\\"\\n              remixicon=\\\"RiArrowRightUpLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </a>\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeLongText() {\\n  return (\\n    <Example title=\\\"Long Text\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge variant=\\\"secondary\\\">\\n          A badge with a lot of text to see how it wraps\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeCustomColors() {\\n  return (\\n    <Example title=\\\"Custom Colors\\\" className=\\\"max-w-fit\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        <Badge className=\\\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\\\">\\n          Blue\\n        </Badge>\\n        <Badge className=\\\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\\\">\\n          Green\\n        </Badge>\\n        <Badge className=\\\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\\\">\\n          Sky\\n        </Badge>\\n        <Badge className=\\\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\\\">\\n          Purple\\n        </Badge>\\n        <Badge className=\\\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\\\">\\n          Red\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/badge.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nconst badgeVariants = cva(\\n  \\\"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground [a]:hover:bg-primary/80\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\\\",\\n        outline:\\n          \\\"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\n      data-variant={variant}\\n      className={cn(badgeVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/breadcrumb-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb-example\",\n  \"title\": \"Breadcrumb\",\n  \"registryDependencies\": [\n    \"breadcrumb\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/breadcrumb-example.tsx\",\n      \"content\": \"import Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbEllipsis,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\n\\nexport default function BreadcrumbExample() {\\n  return (\\n    <ExampleWrapper>\\n      <BreadcrumbBasic />\\n      <BreadcrumbWithDropdown />\\n      <BreadcrumbWithLink />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction BreadcrumbBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Home</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n                  <BreadcrumbEllipsis />\\n                  <span className=\\\"sr-only\\\">Toggle menu</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"start\\\">\\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\\n                <DropdownMenuItem>Themes</DropdownMenuItem>\\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink href=\\\"#\\\">Components</BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\\nfunction BreadcrumbWithLink() {\\n  return (\\n    <Example title=\\\"With Link\\\" className=\\\"items-center justify-center\\\">\\n      <Breadcrumb>\\n        <BreadcrumbList>\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Home</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbEllipsis />\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbLink asChild>\\n              <Link href=\\\"#\\\">Components</Link>\\n            </BreadcrumbLink>\\n          </BreadcrumbItem>\\n          <BreadcrumbSeparator />\\n          <BreadcrumbItem>\\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n          </BreadcrumbItem>\\n        </BreadcrumbList>\\n      </Breadcrumb>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/breadcrumb.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      aria-label=\\\"breadcrumb\\\"\\n      data-slot=\\\"breadcrumb\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\\\"ol\\\">) {\\n  return (\\n    <ol\\n      data-slot=\\\"breadcrumb-list\\\"\\n      className={cn(\\n        \\\"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-item\\\"\\n      className={cn(\\\"inline-flex items-center gap-1.5\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbLink({\\n  asChild,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"transition-colors hover:text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-page\\\"\\n      role=\\\"link\\\"\\n      aria-disabled=\\\"true\\\"\\n      aria-current=\\\"page\\\"\\n      className={cn(\\\"font-normal text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction BreadcrumbSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"breadcrumb-separator\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\\"[&>svg]:size-3.5\\\", className)}\\n      {...props}\\n    >\\n      {children ?? (\\n        <IconPlaceholder\\n          lucide=\\\"ChevronRightIcon\\\"\\n          tabler=\\\"IconChevronRight\\\"\\n          hugeicons=\\\"ArrowRight01Icon\\\"\\n          phosphor=\\\"CaretRightIcon\\\"\\n          remixicon=\\\"RiArrowRightSLine\\\"\\n          className=\\\"cn-rtl-flip\\\"\\n        />\\n      )}\\n    </li>\\n  )\\n}\\n\\nfunction BreadcrumbEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"breadcrumb-ellipsis\\\"\\n      role=\\\"presentation\\\"\\n      aria-hidden=\\\"true\\\"\\n      className={cn(\\n        \\\"flex size-5 items-center justify-center [&>svg]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Breadcrumb,\\n  BreadcrumbList,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n  BreadcrumbEllipsis,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/button-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-example\",\n  \"title\": \"Button\",\n  \"registryDependencies\": [\n    \"button\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/button-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1 2xl:grid-cols-1\\\">\\n      <ButtonVariantsAndSizes />\\n      <ButtonIconRight />\\n      <ButtonIconLeft />\\n      <ButtonIconOnly />\\n      <ButtonInvalidStates />\\n      <ButtonExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonVariantsAndSizes() {\\n  return (\\n    <Example title=\\\"Variants & Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">Default</Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">Default</Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>Default</Button>\\n        <Button variant=\\\"secondary\\\">Secondary</Button>\\n        <Button variant=\\\"outline\\\">Outline</Button>\\n        <Button variant=\\\"ghost\\\">Ghost</Button>\\n        <Button variant=\\\"destructive\\\">Destructive</Button>\\n        <Button variant=\\\"link\\\">Link</Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">Default</Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconRight() {\\n  return (\\n    <Example title=\\\"Icon Right\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          Default\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          Default{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          Secondary{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          Outline{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          Ghost{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          Destructive{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          Link{\\\" \\\"}\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconLeft() {\\n  return (\\n    <Example title=\\\"Icon Left\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftCircleIcon\\\"\\n            hugeicons=\\\"CircleArrowLeft02Icon\\\"\\n            tabler=\\\"IconCircleArrowLeft\\\"\\n            phosphor=\\\"ArrowCircleLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftCircleLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-xs\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-xs\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-sm\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"icon-lg\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"secondary\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"ghost\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"destructive\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n        <Button size=\\\"icon-lg\\\" variant=\\\"link\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight02Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonExamples() {\\n  return (\\n    <Example title=\\\"Examples\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>\\n            Submit{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"destructive\\\">Delete</Button>\\n          <Button size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight02Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonInvalidStates() {\\n  return (\\n    <Example title=\\\"Invalid States\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"xs\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"xs\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"sm\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"sm\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button aria-invalid=\\\"true\\\">Default</Button>\\n        <Button variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Button size=\\\"lg\\\" aria-invalid=\\\"true\\\">\\n          Default\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"secondary\\\" aria-invalid=\\\"true\\\">\\n          Secondary\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"outline\\\" aria-invalid=\\\"true\\\">\\n          Outline\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"ghost\\\" aria-invalid=\\\"true\\\">\\n          Ghost\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"destructive\\\" aria-invalid=\\\"true\\\">\\n          Destructive\\n        </Button>\\n        <Button size=\\\"lg\\\" variant=\\\"link\\\" aria-invalid=\\\"true\\\">\\n          Link\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/button-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group-example\",\n  \"title\": \"Button Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"label\",\n    \"popover\",\n    \"select\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/button-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-vega/ui/button-group\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ButtonGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ButtonGroupBasic />\\n      <ButtonGroupWithInput />\\n      <ButtonGroupWithText />\\n      <ButtonGroupWithDropdown />\\n      <ButtonGroupWithSelect />\\n      <ButtonGroupWithIcons />\\n      <ButtonGroupWithInputGroup />\\n      <ButtonGroupWithFields />\\n      <ButtonGroupWithLike />\\n      <ButtonGroupWithSelectAndInput />\\n      <ButtonGroupNested />\\n      <ButtonGroupPagination />\\n      <ButtonGroupPaginationSplit />\\n      <ButtonGroupNavigation />\\n      <ButtonGroupTextAlignment />\\n      <ButtonGroupVertical />\\n      <ButtonGroupVerticalNested />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ButtonGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Button</Button>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Input placeholder=\\\"Type something here...\\\" />\\n          <Button variant=\\\"outline\\\">Button</Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithText() {\\n  return (\\n    <Example title=\\\"With Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <ButtonGroupText>Text</ButtonGroupText>\\n          <Button variant=\\\"outline\\\">Another Button</Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <ButtonGroupText asChild>\\n            <Label htmlFor=\\\"input-text\\\">GPU Size</Label>\\n          </ButtonGroupText>\\n          <Input id=\\\"input-text\\\" placeholder=\\\"Type something here...\\\" />\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Update</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Disable</DropdownMenuItem>\\n              <DropdownMenuItem variant=\\\"destructive\\\">\\n                Uninstall\\n              </DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">Follow</Button>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-50\\\">\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"VolumeOffIcon\\\"\\n                    tabler=\\\"IconVolume\\\"\\n                    hugeicons=\\\"VolumeOffIcon\\\"\\n                    phosphor=\\\"SpeakerSlashIcon\\\"\\n                    remixicon=\\\"RiVolumeMuteLine\\\"\\n                  />\\n                  Mute Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                  Mark as Read\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"AlertTriangleIcon\\\"\\n                    tabler=\\\"IconAlertTriangle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                  Report Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserRoundXIcon\\\"\\n                    tabler=\\\"IconUserX\\\"\\n                    hugeicons=\\\"UserRemove01Icon\\\"\\n                    phosphor=\\\"UserMinusIcon\\\"\\n                    remixicon=\\\"RiUserUnfollowLine\\\"\\n                  />\\n                  Block User\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  Share Conversation\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete Conversation\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelect() {\\n  const [currency, setCurrency] = useState(\\\"$\\\")\\n\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Field>\\n        <Label htmlFor=\\\"amount\\\">Amount</Label>\\n        <ButtonGroup>\\n          <Select value={currency} onValueChange={setCurrency}>\\n            <SelectTrigger>\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"$\\\">$</SelectItem>\\n                <SelectItem value=\\\"€\\\">€</SelectItem>\\n                <SelectItem value=\\\"£\\\">£</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Input placeholder=\\\"Enter amount to send\\\" />\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithInputGroup() {\\n  return (\\n    <Example title=\\\"With Input Group\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Type to search...\\\" />\\n          <InputGroupAddon\\n            align=\\\"inline-start\\\"\\n            className=\\\"text-muted-foreground\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithFields() {\\n  return (\\n    <Example title=\\\"With Fields\\\">\\n      <FieldGroup className=\\\"grid grid-cols-3 gap-4\\\">\\n        <Field className=\\\"col-span-2\\\">\\n          <Label htmlFor=\\\"width\\\">Width</Label>\\n          <ButtonGroup>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"width\\\" />\\n              <InputGroupAddon className=\\\"text-muted-foreground\\\">\\n                W\\n              </InputGroupAddon>\\n              <InputGroupAddon\\n                align=\\\"inline-end\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              >\\n                px\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MinusIcon\\\"\\n                tabler=\\\"IconMinus\\\"\\n                hugeicons=\\\"MinusSignIcon\\\"\\n                phosphor=\\\"MinusIcon\\\"\\n                remixicon=\\\"RiSubtractLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithLike() {\\n  return (\\n    <Example title=\\\"With Like\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"Notification02Icon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />{\\\" \\\"}\\n          Like\\n        </Button>\\n        <Button variant=\\\"outline\\\" asChild size=\\\"icon\\\" className=\\\"w-12\\\">\\n          <span>1.2K</span>\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupWithSelectAndInput() {\\n  return (\\n    <Example title=\\\"With Select and Input\\\">\\n      <ButtonGroup>\\n        <Select defaultValue=\\\"hours\\\">\\n          <SelectTrigger id=\\\"duration\\\">\\n            <SelectValue placeholder=\\\"Select duration\\\" />\\n          </SelectTrigger>\\n          <SelectContent align=\\\"start\\\">\\n            <SelectGroup>\\n              <SelectItem value=\\\"hours\\\">Hours</SelectItem>\\n              <SelectItem value=\\\"days\\\">Days</SelectItem>\\n              <SelectItem value=\\\"weeks\\\">Weeks</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Input />\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <InputGroup>\\n            <InputGroupInput placeholder=\\\"Send a message...\\\" />\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"AudioLinesIcon\\\"\\n                    tabler=\\\"IconHeadphones\\\"\\n                    hugeicons=\\\"AudioWave01Icon\\\"\\n                    phosphor=\\\"MicrophoneIcon\\\"\\n                    remixicon=\\\"RiMicLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </TooltipTrigger>\\n              <TooltipContent>Voice Mode</TooltipContent>\\n            </Tooltip>\\n          </InputGroup>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPagination() {\\n  return (\\n    <Example title=\\\"Pagination\\\">\\n      <ButtonGroup>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n            data-icon=\\\"inline-start\\\"\\n          />\\n          Previous\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          1\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          2\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          3\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          4\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          5\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n          Next\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n            data-icon=\\\"inline-end\\\"\\n          />\\n        </Button>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupPaginationSplit() {\\n  return (\\n    <Example title=\\\"Pagination Split\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            1\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            2\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            3\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            4\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            5\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-xs\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupNavigation() {\\n  return (\\n    <Example title=\\\"Navigation\\\">\\n      <ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowRightIcon\\\"\\n              tabler=\\\"IconArrowRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"ArrowRightIcon\\\"\\n              remixicon=\\\"RiArrowRightLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup aria-label=\\\"Single navigation button\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ArrowLeftIcon\\\"\\n              tabler=\\\"IconArrowLeft\\\"\\n              hugeicons=\\\"ArrowLeft01Icon\\\"\\n              phosphor=\\\"ArrowLeftIcon\\\"\\n              remixicon=\\\"RiArrowLeftLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupTextAlignment() {\\n  return (\\n    <Example title=\\\"Text Alignment\\\">\\n      <Field>\\n        <Label id=\\\"alignment-label\\\">Text Alignment</Label>\\n        <ButtonGroup aria-labelledby=\\\"alignment-label\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Left\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Center\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Right\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Justify\\n          </Button>\\n        </ButtonGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <ButtonGroup\\n          orientation=\\\"vertical\\\"\\n          aria-label=\\\"Media controls\\\"\\n          className=\\\"h-fit\\\"\\n        >\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MinusIcon\\\"\\n              tabler=\\\"IconMinus\\\"\\n              hugeicons=\\\"MinusSignIcon\\\"\\n              phosphor=\\\"MinusIcon\\\"\\n              remixicon=\\\"RiSubtractLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupVerticalNested() {\\n  return (\\n    <Example title=\\\"Vertical Nested\\\">\\n      <ButtonGroup orientation=\\\"vertical\\\" aria-label=\\\"Design tools palette\\\">\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CopyIcon\\\"\\n              tabler=\\\"IconCopy\\\"\\n              hugeicons=\\\"Copy01Icon\\\"\\n              phosphor=\\\"CopyIcon\\\"\\n              remixicon=\\\"RiFileCopyLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ShareIcon\\\"\\n              tabler=\\\"IconShare\\\"\\n              hugeicons=\\\"Share03Icon\\\"\\n              phosphor=\\\"ShareIcon\\\"\\n              remixicon=\\\"RiShareLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup orientation=\\\"vertical\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipHorizontalIcon\\\"\\n              tabler=\\\"IconFlipHorizontal\\\"\\n              hugeicons=\\\"FlipHorizontalIcon\\\"\\n              phosphor=\\\"ArrowsHorizontalIcon\\\"\\n              remixicon=\\\"RiArrowLeftRightLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FlipVerticalIcon\\\"\\n              tabler=\\\"IconFlipVertical\\\"\\n              hugeicons=\\\"FlipVerticalIcon\\\"\\n              phosphor=\\\"ArrowsVerticalIcon\\\"\\n              remixicon=\\\"RiArrowUpDownLine\\\"\\n            />\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"RotateCwIcon\\\"\\n              tabler=\\\"IconRotateClockwise2\\\"\\n              hugeicons=\\\"Rotate01Icon\\\"\\n              phosphor=\\\"ArrowClockwiseIcon\\\"\\n              remixicon=\\\"RiRefreshLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n        <ButtonGroup>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"TrashIcon\\\"\\n              tabler=\\\"IconTrash\\\"\\n              hugeicons=\\\"Delete02Icon\\\"\\n              phosphor=\\\"TrashIcon\\\"\\n              remixicon=\\\"RiDeleteBinLine\\\"\\n            />\\n          </Button>\\n        </ButtonGroup>\\n      </ButtonGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/button-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button-group\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/button-group.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\n\\nconst buttonGroupVariants = cva(\\n  \\\"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        horizontal:\\n          \\\"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md!\\\",\\n        vertical:\\n          \\\"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"horizontal\\\",\\n    },\\n  }\\n)\\n\\nfunction ButtonGroup({\\n  className,\\n  orientation,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof buttonGroupVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"button-group\\\"\\n      data-orientation={orientation}\\n      className={cn(buttonGroupVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupText({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  asChild?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      className={cn(\\n        \\\"flex items-center gap-2 rounded-md border bg-muted px-2.5 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ButtonGroupSeparator({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"button-group-separator\\\"\\n      orientation={orientation}\\n      className={cn(\\n        \\\"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ButtonGroup,\\n  ButtonGroupSeparator,\\n  ButtonGroupText,\\n  buttonGroupVariants,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/button.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nconst buttonVariants = cva(\\n  \\\"group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-primary text-primary-foreground hover:bg-primary/80\\\",\\n        outline:\\n          \\\"border-border bg-background shadow-xs hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\\\",\\n        secondary:\\n          \\\"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\\\",\\n        ghost:\\n          \\\"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\\\",\\n        destructive:\\n          \\\"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\\\",\\n        link: \\\"text-primary underline-offset-4 hover:underline\\\",\\n      },\\n      size: {\\n        default:\\n          \\\"h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\\\",\\n        xs: \\\"h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\\\",\\n        sm: \\\"h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\\\",\\n        lg: \\\"h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\\\",\\n        icon: \\\"size-9\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3\\\",\\n        \\\"icon-sm\\\":\\n          \\\"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md\\\",\\n        \\\"icon-lg\\\": \\\"size-10\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"button\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/calendar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-example\",\n  \"title\": \"Calendar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/calendar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { addDays, format } from \\\"date-fns\\\"\\nimport { type DateRange } from \\\"react-day-picker\\\"\\nimport { es } from \\\"react-day-picker/locale\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Calendar, CalendarDayButton } from \\\"@/registry/radix-vega/ui/calendar\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-vega/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-vega/ui/popover\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CalendarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CalendarSingle />\\n      <CalendarMultiple />\\n      <CalendarWeekNumbers />\\n      <CalendarBookedDates />\\n      <CalendarRange />\\n      <CalendarRangeMultipleMonths />\\n      <CalendarWithTime />\\n      <CalendarWithPresets />\\n      <CalendarCustomDays />\\n      <DatePickerSimple />\\n      <DataPickerWithDropdowns />\\n      <DatePickerWithRange />\\n      <CalendarInCard />\\n      <CalendarInPopover />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CalendarInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarInPopover() {\\n  return (\\n    <Example title=\\\"In Popover\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"px-2.5 font-normal\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CalendarIcon\\\"\\n              tabler=\\\"IconCalendar\\\"\\n              hugeicons=\\\"CalendarIcon\\\"\\n              phosphor=\\\"CalendarBlankIcon\\\"\\n              remixicon=\\\"RiCalendarLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Open Calendar\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n          <Calendar mode=\\\"single\\\" />\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarSingle() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <Example title=\\\"Single\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            captionLayout=\\\"dropdown\\\"\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar mode=\\\"multiple\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRange() {\\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={dateRange?.from}\\n            selected={dateRange}\\n            onSelect={setDateRange}\\n            numberOfMonths={2}\\n            disabled={(date) =>\\n              date > new Date() || date < new Date(\\\"1900-01-01\\\")\\n            }\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarRangeMultipleMonths() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 3, 12),\\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\\n  })\\n\\n  return (\\n    <Example\\n      title=\\\"Range Multiple Months\\\"\\n      containerClassName=\\\"lg:col-span-full 2xl:col-span-full\\\"\\n      className=\\\"p-12\\\"\\n    >\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={3}\\n            locale={es}\\n            fixedWeeks\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarBookedDates() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n  const bookedDates = Array.from(\\n    { length: 15 },\\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\\n  )\\n\\n  return (\\n    <Example title=\\\"Booked Dates\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            disabled={bookedDates}\\n            modifiers={{\\n              booked: bookedDates,\\n            }}\\n            modifiersClassNames={{\\n              booked: \\\"[&>button]:line-through opacity-100\\\",\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithTime() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Time\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-fit\\\">\\n        <CardContent>\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            className=\\\"p-0\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"border-t bg-card\\\">\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-from\\\">Start Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-from\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"10:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"time-to\\\">End Time</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"time-to\\\"\\n                  type=\\\"time\\\"\\n                  step=\\\"1\\\"\\n                  defaultValue=\\\"12:30:00\\\"\\n                  className=\\\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\\\"\\n                />\\n                <InputGroupAddon>\\n                  <IconPlaceholder\\n                    lucide=\\\"Clock2Icon\\\"\\n                    tabler=\\\"IconClockHour2\\\"\\n                    hugeicons=\\\"Clock03Icon\\\"\\n                    phosphor=\\\"ClockIcon\\\"\\n                    remixicon=\\\"RiTimeLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarCustomDays() {\\n  const [range, setRange] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 11, 8),\\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\\n  })\\n\\n  return (\\n    <Example title=\\\"Custom Days\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"range\\\"\\n            defaultMonth={range?.from}\\n            selected={range}\\n            onSelect={setRange}\\n            numberOfMonths={1}\\n            captionLayout=\\\"dropdown\\\"\\n            className=\\\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\\\"\\n            formatters={{\\n              formatMonthDropdown: (date) => {\\n                return date.toLocaleString(\\\"default\\\", { month: \\\"long\\\" })\\n              },\\n            }}\\n            components={{\\n              DayButton: ({ children, modifiers, day, ...props }) => {\\n                const isWeekend =\\n                  day.date.getDay() === 0 || day.date.getDay() === 6\\n\\n                return (\\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\\n                    {children}\\n                    {!modifiers.outside && (\\n                      <span>{isWeekend ? \\\"$120\\\" : \\\"$100\\\"}</span>\\n                    )}\\n                  </CalendarDayButton>\\n                )\\n              },\\n            }}\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWithPresets() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 12)\\n  )\\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\\n  )\\n\\n  return (\\n    <Example title=\\\"With Presets\\\">\\n      <Card className=\\\"mx-auto w-fit max-w-[300px]\\\" size=\\\"sm\\\">\\n        <CardContent className=\\\"px-4\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            selected={date}\\n            onSelect={setDate}\\n            month={currentMonth}\\n            onMonthChange={setCurrentMonth}\\n            fixedWeeks\\n            className=\\\"p-0 [--cell-size:--spacing(9.5)]\\\"\\n          />\\n        </CardContent>\\n        <CardFooter className=\\\"flex flex-wrap gap-2 border-t\\\">\\n          {[\\n            { label: \\\"Today\\\", value: 0 },\\n            { label: \\\"Tomorrow\\\", value: 1 },\\n            { label: \\\"In 3 days\\\", value: 3 },\\n            { label: \\\"In a week\\\", value: 7 },\\n            { label: \\\"In 2 weeks\\\", value: 14 },\\n          ].map((preset) => (\\n            <Button\\n              key={preset.value}\\n              variant=\\\"outline\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"flex-1\\\"\\n              onClick={() => {\\n                const newDate = addDays(new Date(), preset.value)\\n                setDate(newDate)\\n                setCurrentMonth(\\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\\n                )\\n              }}\\n            >\\n              {preset.label}\\n            </Button>\\n          ))}\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerSimple() {\\n  const [date, setDate] = React.useState<Date>()\\n\\n  return (\\n    <Example title=\\\"Date Picker Simple\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-simple\\\">Date</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-simple\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar mode=\\\"single\\\" selected={date} onSelect={setDate} />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DatePickerWithRange() {\\n  const [date, setDate] = React.useState<DateRange | undefined>({\\n    from: new Date(new Date().getFullYear(), 0, 20),\\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\\n  })\\n\\n  return (\\n    <Example title=\\\"Date Picker Range\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <FieldLabel htmlFor=\\\"date-picker-range\\\">Date Picker Range</FieldLabel>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button\\n              id=\\\"date-picker-range\\\"\\n              variant=\\\"outline\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CalendarIcon\\\"\\n                tabler=\\\"IconCalendar\\\"\\n                hugeicons=\\\"CalendarIcon\\\"\\n                phosphor=\\\"CalendarBlankIcon\\\"\\n                remixicon=\\\"RiCalendarLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              {date?.from ? (\\n                date.to ? (\\n                  <>\\n                    {format(date.from, \\\"LLL dd, y\\\")} -{\\\" \\\"}\\n                    {format(date.to, \\\"LLL dd, y\\\")}\\n                  </>\\n                ) : (\\n                  format(date.from, \\\"LLL dd, y\\\")\\n                )\\n              ) : (\\n                <span>Pick a date</span>\\n              )}\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"range\\\"\\n              defaultMonth={date?.from}\\n              selected={date}\\n              onSelect={setDate}\\n              numberOfMonths={2}\\n            />\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction DataPickerWithDropdowns() {\\n  const [date, setDate] = React.useState<Date>()\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Date Picker with Dropdowns\\\">\\n      <Field className=\\\"mx-auto w-72\\\">\\n        <Popover open={open} onOpenChange={setOpen}>\\n          <FieldLabel htmlFor=\\\"date-picker-with-dropdowns-desktop\\\">\\n            Date\\n          </FieldLabel>\\n          <PopoverTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              id=\\\"date-picker-with-dropdowns-desktop\\\"\\n              className=\\\"justify-start px-2.5 font-normal\\\"\\n            >\\n              {date ? format(date, \\\"PPP\\\") : <span>Pick a date</span>}\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDownIcon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                data-icon=\\\"inline-start\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent className=\\\"w-auto p-0\\\" align=\\\"start\\\">\\n            <Calendar\\n              mode=\\\"single\\\"\\n              selected={date}\\n              onSelect={setDate}\\n              captionLayout=\\\"dropdown\\\"\\n            />\\n            <div className=\\\"flex gap-2 border-t p-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"sm\\\"\\n                className=\\\"w-full\\\"\\n                onClick={() => setOpen(false)}\\n              >\\n                Done\\n              </Button>\\n            </div>\\n          </PopoverContent>\\n        </Popover>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CalendarWeekNumbers() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), 1, 3)\\n  )\\n\\n  return (\\n    <Example title=\\\"Week Numbers\\\" className=\\\"justify-center\\\">\\n      <Card className=\\\"mx-auto w-fit p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Calendar\\n            mode=\\\"single\\\"\\n            defaultMonth={date}\\n            selected={date}\\n            onSelect={setDate}\\n            showWeekNumber\\n          />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker@latest\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/calendar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  DayPicker,\\n  getDefaultClassNames,\\n  type DayButton,\\n  type Locale,\\n} from \\\"react-day-picker\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button, buttonVariants } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Calendar({\\n  className,\\n  classNames,\\n  showOutsideDays = true,\\n  captionLayout = \\\"label\\\",\\n  buttonVariant = \\\"ghost\\\",\\n  locale,\\n  formatters,\\n  components,\\n  ...props\\n}: React.ComponentProps<typeof DayPicker> & {\\n  buttonVariant?: React.ComponentProps<typeof Button>[\\\"variant\\\"]\\n}) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  return (\\n    <DayPicker\\n      showOutsideDays={showOutsideDays}\\n      className={cn(\\n        \\\"group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\\\",\\n        String.raw`rtl:**:[.rdp-button\\\\_next>svg]:rotate-180`,\\n        String.raw`rtl:**:[.rdp-button\\\\_previous>svg]:rotate-180`,\\n        className\\n      )}\\n      captionLayout={captionLayout}\\n      locale={locale}\\n      formatters={{\\n        formatMonthDropdown: (date) =>\\n          date.toLocaleString(locale?.code, { month: \\\"short\\\" }),\\n        ...formatters,\\n      }}\\n      classNames={{\\n        root: cn(\\\"w-fit\\\", defaultClassNames.root),\\n        months: cn(\\n          \\\"relative flex flex-col gap-4 md:flex-row\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex w-full flex-col gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"cn-calendar-dropdown-root relative rounded-(--cell-radius)\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute inset-0 bg-popover opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"font-medium select-none\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\\\",\\n          defaultClassNames.caption_label\\n        ),\\n        table: \\\"w-full border-collapse\\\",\\n        weekdays: cn(\\\"flex\\\", defaultClassNames.weekdays),\\n        weekday: cn(\\n          \\\"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"mt-2 flex w-full\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"w-(--cell-size) select-none\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] text-muted-foreground select-none\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\\\",\\n          props.showWeekNumber\\n            ? \\\"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\\\"\\n            : \\\"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\\\",\\n          defaultClassNames.day\\n        ),\\n        range_start: cn(\\n          \\\"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_start\\n        ),\\n        range_middle: cn(\\\"rounded-none\\\", defaultClassNames.range_middle),\\n        range_end: cn(\\n          \\\"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\\\",\\n          defaultClassNames.range_end\\n        ),\\n        today: cn(\\n          \\\"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\\\",\\n          defaultClassNames.today\\n        ),\\n        outside: cn(\\n          \\\"text-muted-foreground aria-selected:text-muted-foreground\\\",\\n          defaultClassNames.outside\\n        ),\\n        disabled: cn(\\n          \\\"text-muted-foreground opacity-50\\\",\\n          defaultClassNames.disabled\\n        ),\\n        hidden: cn(\\\"invisible\\\", defaultClassNames.hidden),\\n        ...classNames,\\n      }}\\n      components={{\\n        Root: ({ className, rootRef, ...props }) => {\\n          return (\\n            <div\\n              data-slot=\\\"calendar\\\"\\n              ref={rootRef}\\n              className={cn(className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        Chevron: ({ className, orientation, ...props }) => {\\n          if (orientation === \\\"left\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronLeftIcon\\\"\\n                tabler=\\\"IconChevronLeft\\\"\\n                hugeicons=\\\"ArrowLeftIcon\\\"\\n                phosphor=\\\"CaretLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          if (orientation === \\\"right\\\") {\\n            return (\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRightIcon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className={cn(\\\"cn-rtl-flip size-4\\\", className)}\\n                {...props}\\n              />\\n            )\\n          }\\n\\n          return (\\n            <IconPlaceholder\\n              lucide=\\\"ChevronDownIcon\\\"\\n              tabler=\\\"IconChevronDown\\\"\\n              hugeicons=\\\"ArrowDownIcon\\\"\\n              phosphor=\\\"CaretDownIcon\\\"\\n              remixicon=\\\"RiArrowDownSLine\\\"\\n              className={cn(\\\"size-4\\\", className)}\\n              {...props}\\n            />\\n          )\\n        },\\n        DayButton: ({ ...props }) => (\\n          <CalendarDayButton locale={locale} {...props} />\\n        ),\\n        WeekNumber: ({ children, ...props }) => {\\n          return (\\n            <td {...props}>\\n              <div className=\\\"flex size-(--cell-size) items-center justify-center text-center\\\">\\n                {children}\\n              </div>\\n            </td>\\n          )\\n        },\\n        ...components,\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CalendarDayButton({\\n  className,\\n  day,\\n  modifiers,\\n  locale,\\n  ...props\\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\\n  const defaultClassNames = getDefaultClassNames()\\n\\n  const ref = React.useRef<HTMLButtonElement>(null)\\n  React.useEffect(() => {\\n    if (modifiers.focused) ref.current?.focus()\\n  }, [modifiers.focused])\\n\\n  return (\\n    <Button\\n      ref={ref}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      data-day={day.date.toLocaleDateString(locale?.code)}\\n      data-selected-single={\\n        modifiers.selected &&\\n        !modifiers.range_start &&\\n        !modifiers.range_end &&\\n        !modifiers.range_middle\\n      }\\n      data-range-start={modifiers.range_start}\\n      data-range-end={modifiers.range_end}\\n      data-range-middle={modifiers.range_middle}\\n      className={cn(\\n        \\\"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n      \"api\": \"https://react-day-picker.js.org\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-example\",\n  \"title\": \"Card\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/card-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarGroupCount,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardDefault />\\n      <CardSmall />\\n      <CardHeaderWithBorder />\\n      <CardFooterWithBorder />\\n      <CardHeaderWithBorderSmall />\\n      <CardFooterWithBorderSmall />\\n      <CardWithImage />\\n      <CardWithImageSmall />\\n      <CardLogin />\\n      <CardMeetingNotes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardLogin() {\\n  return (\\n    <Example title=\\\"Login\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Login\\n          </Button>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Login with Google\\n          </Button>\\n          <div className=\\\"mt-4 text-center style-nova:mt-2\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardMeetingNotes() {\\n  return (\\n    <Example title=\\\"Meeting Notes\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Meeting Notes</CardTitle>\\n          <CardDescription>\\n            Transcript from the meeting with the client.\\n          </CardDescription>\\n          <CardAction>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              <IconPlaceholder\\n                lucide=\\\"CaptionsIcon\\\"\\n                tabler=\\\"IconTextCaption\\\"\\n                hugeicons=\\\"TextCheckIcon\\\"\\n                phosphor=\\\"TextTIcon\\\"\\n                remixicon=\\\"RiTextWrap\\\"\\n                data-icon=\\\"inline-start\\\"\\n              />\\n              Transcribe\\n            </Button>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            Client requested dashboard redesign with focus on mobile\\n            responsiveness.\\n          </p>\\n          <ol className=\\\"mt-4 flex list-decimal flex-col gap-2 pl-6\\\">\\n            <li>New analytics widgets for daily/weekly metrics</li>\\n            <li>Simplified navigation menu</li>\\n            <li>Dark mode support</li>\\n            <li>Timeline: 6 weeks</li>\\n            <li>Follow-up meeting scheduled for next Tuesday</li>\\n          </ol>\\n        </CardContent>\\n        <CardFooter>\\n          <AvatarGroup>\\n            <Avatar>\\n              <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"@shadcn\\\" />\\n              <AvatarFallback>CN</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/maxleiter.png\\\"\\n                alt=\\\"@maxleiter\\\"\\n              />\\n              <AvatarFallback>LR</AvatarFallback>\\n            </Avatar>\\n            <Avatar>\\n              <AvatarImage\\n                src=\\\"https://github.com/evilrabbit.png\\\"\\n                alt=\\\"@evilrabbit\\\"\\n              />\\n              <AvatarFallback>ER</AvatarFallback>\\n            </Avatar>\\n            <AvatarGroupCount>+8</AvatarGroupCount>\\n          </AvatarGroup>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImage() {\\n  return (\\n    <Example title=\\\"With Image\\\">\\n      <Card size=\\\"default\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardWithImageSmall() {\\n  return (\\n    <Example title=\\\"With Image (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"relative mx-auto w-full max-w-sm pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Beautiful Landscape</CardTitle>\\n          <CardDescription>\\n            A stunning view that captures the essence of natural beauty.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\" className=\\\"w-full\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorder() {\\n  return (\\n    <Example title=\\\"Header with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorder() {\\n  return (\\n    <Example title=\\\"Footer with Border\\\">\\n      <Card className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardDefault() {\\n  return (\\n    <Example title=\\\"Default Size\\\">\\n      <Card size=\\\"default\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Default Card</CardTitle>\\n          <CardDescription>\\n            This card uses the default size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that defaults to\\n            &quot;default&quot; for standard spacing and sizing.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardSmall() {\\n  return (\\n    <Example title=\\\"Small Size\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader>\\n          <CardTitle>Small Card</CardTitle>\\n          <CardDescription>\\n            This card uses the small size variant.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The card component supports a size prop that can be set to\\n            &quot;sm&quot; for a more compact appearance.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Action\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardHeaderWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Header with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardHeader className=\\\"border-b\\\">\\n          <CardTitle>Header with Border</CardTitle>\\n          <CardDescription>\\n            This is a small card with a header that has a bottom border.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p>\\n            The header has a border-b class applied, creating a visual\\n            separation between the header and content sections.\\n          </p>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CardFooterWithBorderSmall() {\\n  return (\\n    <Example title=\\\"Footer with Border (Small)\\\">\\n      <Card size=\\\"sm\\\" className=\\\"mx-auto w-full max-w-sm\\\">\\n        <CardContent>\\n          <p>\\n            The footer has a border-t class applied, creating a visual\\n            separation between the content and footer sections.\\n          </p>\\n        </CardContent>\\n        <CardFooter className=\\\"border-t\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"w-full\\\">\\n            Footer with Border\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/card.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Card({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { size?: \\\"default\\\" | \\\"sm\\\" }) {\\n  return (\\n    <div\\n      data-slot=\\\"card\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"group/card flex flex-col gap-6 overflow-hidden rounded-xl bg-card py-6 text-sm text-card-foreground shadow-xs ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-header\\\"\\n      className={cn(\\n        \\\"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-base leading-normal font-medium group-data-[size=sm]/card:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardDescription({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardAction({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-action\\\"\\n      className={cn(\\n        \\\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-content\\\"\\n      className={cn(\\\"px-6 group-data-[size=sm]/card:px-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CardFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"card-footer\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Card,\\n  CardHeader,\\n  CardFooter,\\n  CardTitle,\\n  CardAction,\\n  CardDescription,\\n  CardContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/cards.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cards\",\n  \"title\": \"Cards\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { useState } from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/alert-dialog\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarGroup,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-vega/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-vega/ui/checkbox\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-vega/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-vega/ui/empty\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-vega/ui/popover\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-vega/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-vega/ui/sheet\\\"\\nimport { Slider } from \\\"@/registry/radix-vega/ui/slider\\\"\\nimport { Spinner } from \\\"@/registry/radix-vega/ui/spinner\\\"\\nimport { Switch } from \\\"@/registry/radix-vega/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ObservabilityCard />\\n      <SmallFormExample />\\n      <FormExample />\\n      <FieldExamples />\\n      <ItemExample />\\n      <ButtonGroupExamples />\\n      <EmptyAvatarGroup />\\n      <InputGroupExamples />\\n      <SheetExample />\\n      <BadgeExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction FieldExamples() {\\n  const [gpuCount, setGpuCount] = React.useState(8)\\n  const [value, setValue] = useState([200, 800])\\n  const handleGpuAdjustment = React.useCallback((adjustment: number) => {\\n    setGpuCount((prevCount) =>\\n      Math.max(1, Math.min(99, prevCount + adjustment))\\n    )\\n  }, [])\\n\\n  const handleGpuInputChange = React.useCallback(\\n    (e: React.ChangeEvent<HTMLInputElement>) => {\\n      const value = parseInt(e.target.value, 10)\\n      if (!isNaN(value) && value >= 1 && value <= 99) {\\n        setGpuCount(value)\\n      }\\n    },\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"Fields\\\">\\n      <FieldSet className=\\\"w-full max-w-md\\\">\\n        <FieldGroup>\\n          <FieldSet>\\n            <FieldLegend>Compute Environment</FieldLegend>\\n            <FieldDescription>\\n              Select the compute environment for your cluster.\\n            </FieldDescription>\\n            <RadioGroup defaultValue=\\\"kubernetes\\\">\\n              <FieldLabel htmlFor=\\\"kubernetes-r2h\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Kubernetes</FieldTitle>\\n                    <FieldDescription>\\n                      Run GPU workloads on a K8s configured cluster. This is the\\n                      default.\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"kubernetes\\\"\\n                    id=\\\"kubernetes-r2h\\\"\\n                    aria-label=\\\"Kubernetes\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n              <FieldLabel htmlFor=\\\"vm-z4k\\\">\\n                <Field orientation=\\\"horizontal\\\">\\n                  <FieldContent>\\n                    <FieldTitle>Virtual Machine</FieldTitle>\\n                    <FieldDescription>\\n                      Access a VM configured cluster to run workloads. (Coming\\n                      soon)\\n                    </FieldDescription>\\n                  </FieldContent>\\n                  <RadioGroupItem\\n                    value=\\\"vm\\\"\\n                    id=\\\"vm-z4k\\\"\\n                    aria-label=\\\"Virtual Machine\\\"\\n                  />\\n                </Field>\\n              </FieldLabel>\\n            </RadioGroup>\\n          </FieldSet>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"number-of-gpus-f6l\\\">\\n                Number of GPUs\\n              </FieldLabel>\\n              <FieldDescription>You can add more later.</FieldDescription>\\n            </FieldContent>\\n            <ButtonGroup>\\n              <Input\\n                id=\\\"number-of-gpus-f6l\\\"\\n                value={gpuCount}\\n                onChange={handleGpuInputChange}\\n                size={3}\\n                maxLength={3}\\n              />\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Decrement\\\"\\n                onClick={() => handleGpuAdjustment(-1)}\\n                disabled={gpuCount <= 1}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"MinusIcon\\\"\\n                  tabler=\\\"IconMinus\\\"\\n                  hugeicons=\\\"MinusSignIcon\\\"\\n                  phosphor=\\\"MinusIcon\\\"\\n                  remixicon=\\\"RiSubtractLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                type=\\\"button\\\"\\n                aria-label=\\\"Increment\\\"\\n                onClick={() => handleGpuAdjustment(1)}\\n                disabled={gpuCount >= 99}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                />\\n              </Button>\\n            </ButtonGroup>\\n          </Field>\\n          <FieldSeparator />\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"tinting\\\">Wallpaper Tinting</FieldLabel>\\n              <FieldDescription>\\n                Allow the wallpaper to be tinted.\\n              </FieldDescription>\\n            </FieldContent>\\n            <Switch id=\\\"tinting\\\" defaultChecked />\\n          </Field>\\n          <FieldSeparator />\\n          <FieldLabel htmlFor=\\\"checkbox-demo\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"checkbox-demo\\\" defaultChecked />\\n              <FieldLabel htmlFor=\\\"checkbox-demo\\\" className=\\\"line-clamp-1\\\">\\n                I agree to the terms and conditions\\n              </FieldLabel>\\n            </Field>\\n          </FieldLabel>\\n          <FieldSeparator />\\n          <Field>\\n            <FieldTitle>Price Range</FieldTitle>\\n            <FieldDescription>\\n              Set your budget range ($\\n              <span className=\\\"font-medium tabular-nums\\\">\\n                {value[0]}\\n              </span> -{\\\" \\\"}\\n              <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n            </FieldDescription>\\n            <Slider\\n              value={value}\\n              onValueChange={(val) => setValue(val as number[])}\\n              max={1000}\\n              min={0}\\n              step={10}\\n              className=\\\"mt-2 w-full\\\"\\n              aria-label=\\\"Price Range\\\"\\n            />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"submit\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              Cancel\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction ButtonGroupExamples() {\\n  const [label, setLabel] = React.useState(\\\"personal\\\")\\n\\n  return (\\n    <Example title=\\\"Button Group\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Go Back\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Archive\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Report\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Snooze\\n            </Button>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button\\n                  variant=\\\"outline\\\"\\n                  size=\\\"icon-sm\\\"\\n                  aria-label=\\\"More Options\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-48\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"MailCheckIcon\\\"\\n                      tabler=\\\"IconMailCheck\\\"\\n                      hugeicons=\\\"MailValidation01Icon\\\"\\n                      phosphor=\\\"EnvelopeIcon\\\"\\n                      remixicon=\\\"RiMailLine\\\"\\n                    />\\n                    Mark as Read\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ArchiveIcon\\\"\\n                      tabler=\\\"IconArchive\\\"\\n                      hugeicons=\\\"ArchiveIcon\\\"\\n                      phosphor=\\\"ArchiveIcon\\\"\\n                      remixicon=\\\"RiArchiveLine\\\"\\n                    />\\n                    Archive\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClockIcon\\\"\\n                      tabler=\\\"IconClock\\\"\\n                      hugeicons=\\\"ClockIcon\\\"\\n                      phosphor=\\\"ClockIcon\\\"\\n                      remixicon=\\\"RiTimeLine\\\"\\n                    />\\n                    Snooze\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CalendarPlusIcon\\\"\\n                      tabler=\\\"IconCalendarPlus\\\"\\n                      hugeicons=\\\"CalendarAdd01Icon\\\"\\n                      phosphor=\\\"CalendarPlusIcon\\\"\\n                      remixicon=\\\"RiCalendarEventLine\\\"\\n                    />\\n                    Add to Calendar\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ListFilterIcon\\\"\\n                      tabler=\\\"IconFilterPlus\\\"\\n                      hugeicons=\\\"AddToListIcon\\\"\\n                      phosphor=\\\"ListPlusIcon\\\"\\n                      remixicon=\\\"RiPlayListAddLine\\\"\\n                    />\\n                    Add to List\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"TagIcon\\\"\\n                        tabler=\\\"IconTag\\\"\\n                        hugeicons=\\\"TagIcon\\\"\\n                        phosphor=\\\"TagIcon\\\"\\n                        remixicon=\\\"RiPriceTagLine\\\"\\n                      />\\n                      Label As...\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuSubContent>\\n                      <DropdownMenuRadioGroup\\n                        value={label}\\n                        onValueChange={setLabel}\\n                      >\\n                        <DropdownMenuRadioItem value=\\\"personal\\\">\\n                          Personal\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"work\\\">\\n                          Work\\n                        </DropdownMenuRadioItem>\\n                        <DropdownMenuRadioItem value=\\\"other\\\">\\n                          Other\\n                        </DropdownMenuRadioItem>\\n                      </DropdownMenuRadioGroup>\\n                    </DropdownMenuSubContent>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"Trash2Icon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"Delete02Icon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Trash\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Previous\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowLeftIcon\\\"\\n                tabler=\\\"IconArrowLeft\\\"\\n                hugeicons=\\\"ArrowLeft01Icon\\\"\\n                phosphor=\\\"ArrowLeftIcon\\\"\\n                remixicon=\\\"RiArrowLeftLine\\\"\\n              />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\" aria-label=\\\"Next\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <div className=\\\"flex gap-4\\\">\\n          <ButtonGroup className=\\\"hidden sm:flex\\\">\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">1</Button>\\n              <Button variant=\\\"outline\\\">2</Button>\\n              <Button variant=\\\"outline\\\">3</Button>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n          <ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">Follow</Button>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\" className=\\\"w-52\\\">\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"VolumeX\\\"\\n                        tabler=\\\"IconVolume\\\"\\n                        hugeicons=\\\"VolumeOffIcon\\\"\\n                        phosphor=\\\"SpeakerSlashIcon\\\"\\n                        remixicon=\\\"RiVolumeMuteLine\\\"\\n                      />\\n                      Mute Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CheckIcon\\\"\\n                        tabler=\\\"IconCheck\\\"\\n                        hugeicons=\\\"Tick02Icon\\\"\\n                        phosphor=\\\"CheckIcon\\\"\\n                        remixicon=\\\"RiCheckLine\\\"\\n                      />\\n                      Mark as Read\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"UserRoundXIcon\\\"\\n                        tabler=\\\"IconUserX\\\"\\n                        hugeicons=\\\"UserRemove01Icon\\\"\\n                        phosphor=\\\"UserMinusIcon\\\"\\n                        remixicon=\\\"RiUserUnfollowLine\\\"\\n                      />\\n                      Block User\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShareIcon\\\"\\n                        tabler=\\\"IconShare\\\"\\n                        hugeicons=\\\"Share03Icon\\\"\\n                        phosphor=\\\"ShareIcon\\\"\\n                        remixicon=\\\"RiShareLine\\\"\\n                      />\\n                      Share Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"CopyIcon\\\"\\n                        tabler=\\\"IconCopy\\\"\\n                        hugeicons=\\\"Copy01Icon\\\"\\n                        phosphor=\\\"CopyIcon\\\"\\n                        remixicon=\\\"RiFileCopyLine\\\"\\n                      />\\n                      Copy Conversation\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"AlertTriangleIcon\\\"\\n                        tabler=\\\"IconAlertTriangle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Report Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem variant=\\\"destructive\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"TrashIcon\\\"\\n                        tabler=\\\"IconTrash\\\"\\n                        hugeicons=\\\"Delete02Icon\\\"\\n                        phosphor=\\\"TrashIcon\\\"\\n                        remixicon=\\\"RiDeleteBinLine\\\"\\n                      />\\n                      Delete Conversation\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </ButtonGroup>\\n            <ButtonGroup>\\n              <Button variant=\\\"outline\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"BotIcon\\\"\\n                  tabler=\\\"IconRobot\\\"\\n                  hugeicons=\\\"BotIcon\\\"\\n                  phosphor=\\\"RobotIcon\\\"\\n                  remixicon=\\\"RiRobotLine\\\"\\n                />{\\\" \\\"}\\n                Copilot\\n              </Button>\\n              <Popover>\\n                <PopoverTrigger asChild>\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    aria-label=\\\"Open Popover\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDown01Icon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </Button>\\n                </PopoverTrigger>\\n                <PopoverContent align=\\\"end\\\" className=\\\"w-96\\\">\\n                  <PopoverHeader>\\n                    <PopoverTitle>Agent Tasks</PopoverTitle>\\n                    <PopoverDescription>\\n                      Describe your task in natural language. Copilot will work\\n                      in the background and open a pull request.\\n                    </PopoverDescription>\\n                  </PopoverHeader>\\n                  <div className=\\\"text-sm *:[p:not(:last-child)]:mb-2\\\">\\n                    <Textarea\\n                      placeholder=\\\"Describe your task in natural language.\\\"\\n                      className=\\\"min-h-32 resize-none\\\"\\n                    />\\n                  </div>\\n                </PopoverContent>\\n              </Popover>\\n            </ButtonGroup>\\n          </ButtonGroup>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupExamples() {\\n  const [isFavorite, setIsFavorite] = React.useState(false)\\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Input Group\\\">\\n      <div className=\\\"flex flex-col gap-6\\\">\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"Search...\\\" />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"Search01Icon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup>\\n          <InputGroupInput placeholder=\\\"example.com\\\" className=\\\"!pl-1\\\" />\\n          <InputGroupAddon>\\n            <InputGroupText>https://</InputGroupText>\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">\\n            <Tooltip>\\n              <TooltipTrigger asChild>\\n                <InputGroupButton\\n                  className=\\\"rounded-full\\\"\\n                  size=\\\"icon-xs\\\"\\n                  aria-label=\\\"Info\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"InfoIcon\\\"\\n                    tabler=\\\"IconInfoCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"InfoIcon\\\"\\n                    remixicon=\\\"RiInformationLine\\\"\\n                  />\\n                </InputGroupButton>\\n              </TooltipTrigger>\\n              <TooltipContent>This is content in a tooltip.</TooltipContent>\\n            </Tooltip>\\n          </InputGroupAddon>\\n        </InputGroup>\\n        <Field>\\n          <Label htmlFor=\\\"input-secure-19\\\" className=\\\"sr-only\\\">\\n            Input Secure\\n          </Label>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-secure-19\\\" className=\\\"!pl-0.5\\\" />\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton\\n                    variant=\\\"secondary\\\"\\n                    size=\\\"icon-xs\\\"\\n                    aria-label=\\\"Info\\\"\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent\\n                align=\\\"start\\\"\\n                alignOffset={10}\\n                className=\\\"flex flex-col gap-1 rounded-xl text-sm\\\"\\n              >\\n                <p className=\\\"font-medium\\\">Your connection is not secure.</p>\\n                <p>\\n                  You should not enter any sensitive information on this site.\\n                </p>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"text-muted-foreground !pl-1\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                onClick={() => setIsFavorite(!isFavorite)}\\n                size=\\\"icon-xs\\\"\\n                aria-label=\\\"Favorite\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                  data-favorite={isFavorite}\\n                  className=\\\"data-[favorite=true]:fill-primary data-[favorite=true]:stroke-primary\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <ButtonGroup className=\\\"w-full\\\">\\n          <ButtonGroup>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\" aria-label=\\\"Add\\\">\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </Button>\\n          </ButtonGroup>\\n          <ButtonGroup className=\\\"flex-1\\\">\\n            <InputGroup>\\n              <InputGroupInput\\n                placeholder={\\n                  voiceEnabled\\n                    ? \\\"Record and send audio...\\\"\\n                    : \\\"Send a message...\\\"\\n                }\\n                disabled={voiceEnabled}\\n              />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <Tooltip>\\n                  <TooltipTrigger asChild>\\n                    <InputGroupButton\\n                      onClick={() => setVoiceEnabled(!voiceEnabled)}\\n                      data-active={voiceEnabled}\\n                      className=\\\"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground\\\"\\n                      aria-pressed={voiceEnabled}\\n                      size=\\\"icon-xs\\\"\\n                      aria-label=\\\"Voice Mode\\\"\\n                    >\\n                      <IconPlaceholder\\n                        lucide=\\\"AudioLinesIcon\\\"\\n                        tabler=\\\"IconWaveSine\\\"\\n                        hugeicons=\\\"AudioWave01Icon\\\"\\n                        phosphor=\\\"MicrophoneIcon\\\"\\n                        remixicon=\\\"RiMicLine\\\"\\n                      />\\n                    </InputGroupButton>\\n                  </TooltipTrigger>\\n                  <TooltipContent>Voice Mode</TooltipContent>\\n                </Tooltip>\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </ButtonGroup>\\n        </ButtonGroup>\\n        <InputGroup>\\n          <InputGroupTextarea placeholder=\\\"Ask, Search or Chat...\\\" />\\n          <InputGroupAddon align=\\\"block-end\\\">\\n            <InputGroupButton\\n              variant=\\\"outline\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n              aria-label=\\\"Add\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n            </InputGroupButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <InputGroupButton variant=\\\"ghost\\\">Auto</InputGroupButton>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                side=\\\"top\\\"\\n                align=\\\"start\\\"\\n                className=\\\"[--radius:0.95rem]\\\"\\n              >\\n                <DropdownMenuItem>Auto</DropdownMenuItem>\\n                <DropdownMenuItem>Agent</DropdownMenuItem>\\n                <DropdownMenuItem>Manual</DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n            <InputGroupText className=\\\"ml-auto\\\">52% used</InputGroupText>\\n            <Separator orientation=\\\"vertical\\\" className=\\\"!h-4\\\" />\\n            <InputGroupButton\\n              variant=\\\"default\\\"\\n              className=\\\"style-lyra:rounded-none rounded-full\\\"\\n              size=\\\"icon-xs\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpIcon\\\"\\n                tabler=\\\"IconArrowUp\\\"\\n                hugeicons=\\\"ArrowUp01Icon\\\"\\n                phosphor=\\\"ArrowUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Send</span>\\n            </InputGroupButton>\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyAvatarGroup() {\\n  return (\\n    <Example title=\\\"Empty\\\">\\n      <Empty className=\\\"h-full flex-none border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia>\\n            <AvatarGroup className=\\\"grayscale\\\">\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/shadcn.png\\\"\\n                  alt=\\\"@shadcn\\\"\\n                />\\n                <AvatarFallback>CN</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/maxleiter.png\\\"\\n                  alt=\\\"@maxleiter\\\"\\n                />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n              <Avatar size=\\\"lg\\\">\\n                <AvatarImage\\n                  src=\\\"https://github.com/evilrabbit.png\\\"\\n                  alt=\\\"@evilrabbit\\\"\\n                />\\n                <AvatarFallback>ER</AvatarFallback>\\n              </Avatar>\\n            </AvatarGroup>\\n          </EmptyMedia>\\n          <EmptyTitle>No Team Members</EmptyTitle>\\n          <EmptyDescription>\\n            Invite your team to collaborate on this project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button variant=\\\"outline\\\">Show Dialog</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent>\\n                <AlertDialogHeader>\\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    This action cannot be undone. This will permanently delete\\n                    your account and remove your data from our servers.\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\\n                  <AlertDialogAction>Continue</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n            <AlertDialog>\\n              <AlertDialogTrigger asChild>\\n                <Button>Connect Mouse</Button>\\n              </AlertDialogTrigger>\\n              <AlertDialogContent size=\\\"sm\\\">\\n                <AlertDialogHeader>\\n                  <AlertDialogMedia>\\n                    <IconPlaceholder\\n                      lucide=\\\"BluetoothIcon\\\"\\n                      tabler=\\\"IconBluetooth\\\"\\n                      hugeicons=\\\"BluetoothIcon\\\"\\n                      phosphor=\\\"BluetoothIcon\\\"\\n                      remixicon=\\\"RiBluetoothLine\\\"\\n                    />\\n                  </AlertDialogMedia>\\n                  <AlertDialogTitle>\\n                    Allow accessory to connect?\\n                  </AlertDialogTitle>\\n                  <AlertDialogDescription>\\n                    Do you want to allow the USB accessory to connect to this\\n                    device?\\n                  </AlertDialogDescription>\\n                </AlertDialogHeader>\\n                <AlertDialogFooter>\\n                  <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                  <AlertDialogAction>Allow</AlertDialogAction>\\n                </AlertDialogFooter>\\n              </AlertDialogContent>\\n            </AlertDialog>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction FormExample() {\\n  return (\\n    <Example title=\\\"Complex Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Payment Method</CardTitle>\\n          <CardDescription>\\n            All transactions are secure and encrypted\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-card-name-43j\\\">\\n                      Name on Card\\n                    </FieldLabel>\\n                    <Input\\n                      id=\\\"checkout-7j9-card-name-43j\\\"\\n                      placeholder=\\\"John Doe\\\"\\n                      required\\n                    />\\n                  </Field>\\n                  <div className=\\\"grid grid-cols-3 gap-4\\\">\\n                    <Field className=\\\"col-span-2\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-card-number-uw1\\\">\\n                        Card Number\\n                      </FieldLabel>\\n                      <Input\\n                        id=\\\"checkout-7j9-card-number-uw1\\\"\\n                        placeholder=\\\"1234 5678 9012 3456\\\"\\n                        required\\n                      />\\n                      <FieldDescription>\\n                        Enter your 16-digit number.\\n                      </FieldDescription>\\n                    </Field>\\n                    <Field className=\\\"col-span-1\\\">\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-cvv\\\">CVV</FieldLabel>\\n                      <Input id=\\\"checkout-7j9-cvv\\\" placeholder=\\\"123\\\" required />\\n                    </Field>\\n                  </div>\\n                  <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-month-ts6\\\">\\n                        Month\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-month-ts6\\\">\\n                          <SelectValue placeholder=\\\"MM\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"01\\\">01</SelectItem>\\n                            <SelectItem value=\\\"02\\\">02</SelectItem>\\n                            <SelectItem value=\\\"03\\\">03</SelectItem>\\n                            <SelectItem value=\\\"04\\\">04</SelectItem>\\n                            <SelectItem value=\\\"05\\\">05</SelectItem>\\n                            <SelectItem value=\\\"06\\\">06</SelectItem>\\n                            <SelectItem value=\\\"07\\\">07</SelectItem>\\n                            <SelectItem value=\\\"08\\\">08</SelectItem>\\n                            <SelectItem value=\\\"09\\\">09</SelectItem>\\n                            <SelectItem value=\\\"10\\\">10</SelectItem>\\n                            <SelectItem value=\\\"11\\\">11</SelectItem>\\n                            <SelectItem value=\\\"12\\\">12</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                    <Field>\\n                      <FieldLabel htmlFor=\\\"checkout-7j9-exp-year-f59\\\">\\n                        Year\\n                      </FieldLabel>\\n                      <Select defaultValue=\\\"\\\">\\n                        <SelectTrigger id=\\\"checkout-7j9-exp-year-f59\\\">\\n                          <SelectValue placeholder=\\\"YYYY\\\" />\\n                        </SelectTrigger>\\n                        <SelectContent>\\n                          <SelectGroup>\\n                            <SelectItem value=\\\"2024\\\">2024</SelectItem>\\n                            <SelectItem value=\\\"2025\\\">2025</SelectItem>\\n                            <SelectItem value=\\\"2026\\\">2026</SelectItem>\\n                            <SelectItem value=\\\"2027\\\">2027</SelectItem>\\n                            <SelectItem value=\\\"2028\\\">2028</SelectItem>\\n                            <SelectItem value=\\\"2029\\\">2029</SelectItem>\\n                          </SelectGroup>\\n                        </SelectContent>\\n                      </Select>\\n                    </Field>\\n                  </div>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldLegend>Billing Address</FieldLegend>\\n                <FieldDescription>\\n                  The billing address associated with your payment.\\n                </FieldDescription>\\n                <FieldGroup>\\n                  <Field orientation=\\\"horizontal\\\">\\n                    <Checkbox\\n                      id=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      defaultChecked\\n                    />\\n                    <FieldLabel\\n                      htmlFor=\\\"checkout-7j9-same-as-shipping-wgm\\\"\\n                      className=\\\"font-normal\\\"\\n                    >\\n                      Same as shipping address\\n                    </FieldLabel>\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <FieldSeparator />\\n              <FieldSet>\\n                <FieldGroup>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"checkout-7j9-optional-comments\\\">\\n                      Comments\\n                    </FieldLabel>\\n                    <Textarea\\n                      id=\\\"checkout-7j9-optional-comments\\\"\\n                      placeholder=\\\"Add any additional comments\\\"\\n                    />\\n                  </Field>\\n                </FieldGroup>\\n              </FieldSet>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction SmallFormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                align=\\\"end\\\"\\n                className=\\\"style-maia:w-56 style-mira:w-48 style-nova:w-48 style-vega:w-56 style-lyra:w-48\\\"\\n              >\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction ObservabilityCard() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"bg-primary absolute inset-0 z-30 aspect-video opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button>\\n            Create Query{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-end\\\"\\n            />\\n          </Button>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction FieldSlider() {\\n  const [value, setValue] = useState([200, 800])\\n  return (\\n    <Example title=\\\"Field Slider\\\">\\n      <div className=\\\"w-full max-w-md\\\">\\n        <Field>\\n          <FieldTitle>Price Range</FieldTitle>\\n          <FieldDescription>\\n            Set your budget range ($\\n            <span className=\\\"font-medium tabular-nums\\\">{value[0]}</span> -{\\\" \\\"}\\n            <span className=\\\"font-medium tabular-nums\\\">{value[1]}</span>).\\n          </FieldDescription>\\n          <Slider\\n            value={value}\\n            onValueChange={setValue}\\n            max={1000}\\n            min={0}\\n            step={10}\\n            className=\\\"mt-2 w-full\\\"\\n            aria-label=\\\"Price Range\\\"\\n          />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemExample() {\\n  return (\\n    <Example title=\\\"Item\\\">\\n      <div className=\\\"flex w-full max-w-md flex-col gap-6\\\">\\n        <Item variant=\\\"outline\\\">\\n          <ItemContent>\\n            <ItemTitle>Two-factor authentication</ItemTitle>\\n            <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n              Verify via email or phone number.\\n            </ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n              Enable\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"outline\\\" size=\\\"sm\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"ShoppingBagIcon\\\"\\n                tabler=\\\"IconShoppingBag\\\"\\n                hugeicons=\\\"ShoppingBasket01Icon\\\"\\n                phosphor=\\\"BagIcon\\\"\\n                remixicon=\\\"RiShoppingBagLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Your order has been shipped.</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction BadgeExamples() {\\n  return (\\n    <Example title=\\\"Badge\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex items-center justify-center gap-2\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Syncing\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Updating\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Loading\\n        </Badge>\\n        <Badge variant=\\\"link\\\" className=\\\"hidden sm:flex\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Link\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithSpinner() {\\n  return (\\n    <Example title=\\\"Empty with Spinner\\\">\\n      <Empty className=\\\"w-full border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>Processing your request</EmptyTitle>\\n          <EmptyDescription>\\n            Please wait while we process your request. Do not refresh the page.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button size=\\\"sm\\\">Submit</Button>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Cancel\\n            </Button>\\n          </div>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetExample() {\\n  return (\\n    <Example title=\\\"Sheet\\\">\\n      <div className=\\\"flex gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"secondary\\\" className=\\\"flex-1 capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"overflow-y-auto px-4 text-sm\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"style-lyra:mb-2 style-lyra:leading-relaxed mb-4 leading-normal\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/carousel-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel-example\",\n  \"title\": \"Carousel\",\n  \"registryDependencies\": [\n    \"card\",\n    \"carousel\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/carousel-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselNext,\\n  CarouselPrevious,\\n} from \\\"@/registry/radix-vega/ui/carousel\\\"\\n\\nexport default function CarouselExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <CarouselBasic />\\n      <CarouselMultiple />\\n      <CarouselWithGap />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CarouselBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index}>\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-4xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Carousel\\n        className=\\\"mx-auto max-w-xs sm:max-w-sm\\\"\\n        opts={{\\n          align: \\\"start\\\",\\n        }}\\n      >\\n        <CarouselContent>\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"sm:basis-1/2 lg:basis-1/3\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-3xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\\nfunction CarouselWithGap() {\\n  return (\\n    <Example title=\\\"With Gap\\\">\\n      <Carousel className=\\\"mx-auto max-w-xs sm:max-w-sm\\\">\\n        <CarouselContent className=\\\"-ml-1\\\">\\n          {Array.from({ length: 5 }).map((_, index) => (\\n            <CarouselItem key={index} className=\\\"pl-1 md:basis-1/2\\\">\\n              <div className=\\\"p-1\\\">\\n                <Card>\\n                  <CardContent className=\\\"flex aspect-square items-center justify-center p-6\\\">\\n                    <span className=\\\"text-2xl font-semibold\\\">{index + 1}</span>\\n                  </CardContent>\\n                </Card>\\n              </div>\\n            </CarouselItem>\\n          ))}\\n        </CarouselContent>\\n        <CarouselPrevious className=\\\"hidden sm:inline-flex\\\" />\\n        <CarouselNext className=\\\"hidden sm:inline-flex\\\" />\\n      </Carousel>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/carousel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"carousel\",\n  \"dependencies\": [\n    \"embla-carousel-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/carousel.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport useEmblaCarousel, {\\n  type UseEmblaCarouselType,\\n} from \\\"embla-carousel-react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype CarouselApi = UseEmblaCarouselType[1]\\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\\ntype CarouselOptions = UseCarouselParameters[0]\\ntype CarouselPlugin = UseCarouselParameters[1]\\n\\ntype CarouselProps = {\\n  opts?: CarouselOptions\\n  plugins?: CarouselPlugin\\n  orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  setApi?: (api: CarouselApi) => void\\n}\\n\\ntype CarouselContextProps = {\\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\\n  api: ReturnType<typeof useEmblaCarousel>[1]\\n  scrollPrev: () => void\\n  scrollNext: () => void\\n  canScrollPrev: boolean\\n  canScrollNext: boolean\\n} & CarouselProps\\n\\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\\n\\nfunction useCarousel() {\\n  const context = React.useContext(CarouselContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useCarousel must be used within a <Carousel />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction Carousel({\\n  orientation = \\\"horizontal\\\",\\n  opts,\\n  setApi,\\n  plugins,\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & CarouselProps) {\\n  const [carouselRef, api] = useEmblaCarousel(\\n    {\\n      ...opts,\\n      axis: orientation === \\\"horizontal\\\" ? \\\"x\\\" : \\\"y\\\",\\n    },\\n    plugins\\n  )\\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\\n\\n  const onSelect = React.useCallback((api: CarouselApi) => {\\n    if (!api) return\\n    setCanScrollPrev(api.canScrollPrev())\\n    setCanScrollNext(api.canScrollNext())\\n  }, [])\\n\\n  const scrollPrev = React.useCallback(() => {\\n    api?.scrollPrev()\\n  }, [api])\\n\\n  const scrollNext = React.useCallback(() => {\\n    api?.scrollNext()\\n  }, [api])\\n\\n  const handleKeyDown = React.useCallback(\\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\\n      if (event.key === \\\"ArrowLeft\\\") {\\n        event.preventDefault()\\n        scrollPrev()\\n      } else if (event.key === \\\"ArrowRight\\\") {\\n        event.preventDefault()\\n        scrollNext()\\n      }\\n    },\\n    [scrollPrev, scrollNext]\\n  )\\n\\n  React.useEffect(() => {\\n    if (!api || !setApi) return\\n    setApi(api)\\n  }, [api, setApi])\\n\\n  React.useEffect(() => {\\n    if (!api) return\\n    onSelect(api)\\n    api.on(\\\"reInit\\\", onSelect)\\n    api.on(\\\"select\\\", onSelect)\\n\\n    return () => {\\n      api?.off(\\\"select\\\", onSelect)\\n    }\\n  }, [api, onSelect])\\n\\n  return (\\n    <CarouselContext.Provider\\n      value={{\\n        carouselRef,\\n        api: api,\\n        opts,\\n        orientation:\\n          orientation || (opts?.axis === \\\"y\\\" ? \\\"vertical\\\" : \\\"horizontal\\\"),\\n        scrollPrev,\\n        scrollNext,\\n        canScrollPrev,\\n        canScrollNext,\\n      }}\\n    >\\n      <div\\n        onKeyDownCapture={handleKeyDown}\\n        className={cn(\\\"relative\\\", className)}\\n        role=\\\"region\\\"\\n        aria-roledescription=\\\"carousel\\\"\\n        data-slot=\\\"carousel\\\"\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </CarouselContext.Provider>\\n  )\\n}\\n\\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { carouselRef, orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      ref={carouselRef}\\n      className=\\\"overflow-hidden\\\"\\n      data-slot=\\\"carousel-content\\\"\\n    >\\n      <div\\n        className={cn(\\n          \\\"flex\\\",\\n          orientation === \\\"horizontal\\\" ? \\\"-ml-4\\\" : \\\"-mt-4 flex-col\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  const { orientation } = useCarousel()\\n\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      aria-roledescription=\\\"slide\\\"\\n      data-slot=\\\"carousel-item\\\"\\n      className={cn(\\n        \\\"min-w-0 shrink-0 grow-0 basis-full\\\",\\n        orientation === \\\"horizontal\\\" ? \\\"pl-4\\\" : \\\"pt-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CarouselPrevious({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-previous\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -left-12 -translate-y-1/2\\\"\\n          : \\\"-top-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollPrev}\\n      onClick={scrollPrev}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Previous slide</span>\\n    </Button>\\n  )\\n}\\n\\nfunction CarouselNext({\\n  className,\\n  variant = \\\"outline\\\",\\n  size = \\\"icon-sm\\\",\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\\n\\n  return (\\n    <Button\\n      data-slot=\\\"carousel-next\\\"\\n      variant={variant}\\n      size={size}\\n      className={cn(\\n        \\\"absolute touch-manipulation rounded-full\\\",\\n        orientation === \\\"horizontal\\\"\\n          ? \\\"top-1/2 -right-12 -translate-y-1/2\\\"\\n          : \\\"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\\\",\\n        className\\n      )}\\n      disabled={!canScrollNext}\\n      onClick={scrollNext}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Next slide</span>\\n    </Button>\\n  )\\n}\\n\\nexport {\\n  type CarouselApi,\\n  Carousel,\\n  CarouselContent,\\n  CarouselItem,\\n  CarouselPrevious,\\n  CarouselNext,\\n  useCarousel,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n      \"api\": \"https://www.embla-carousel.com/get-started/react\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/chart-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-example\",\n  \"title\": \"Chart\",\n  \"registryDependencies\": [\n    \"chart\",\n    \"card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/chart-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Area,\\n  AreaChart,\\n  Bar,\\n  BarChart,\\n  CartesianGrid,\\n  Label,\\n  Line,\\n  LineChart,\\n  Pie,\\n  PieChart,\\n  PolarAngleAxis,\\n  PolarGrid,\\n  PolarRadiusAxis,\\n  Radar,\\n  RadarChart,\\n  RadialBar,\\n  RadialBarChart,\\n  XAxis,\\n} from \\\"recharts\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-vega/ui/chart\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst areaChartData = [\\n  { month: \\\"January\\\", desktop: 186 },\\n  { month: \\\"February\\\", desktop: 305 },\\n  { month: \\\"March\\\", desktop: 237 },\\n  { month: \\\"April\\\", desktop: 73 },\\n  { month: \\\"May\\\", desktop: 209 },\\n  { month: \\\"June\\\", desktop: 214 },\\n]\\n\\nconst areaChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport default function ChartExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ChartAreaExample />\\n      <ChartBarExample />\\n      <ChartLineExample />\\n      <ChartRadialExample />\\n      <ChartRadarExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ChartAreaExample() {\\n  return (\\n    <Example title=\\\"Area Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Area Chart</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={areaChartConfig}>\\n            <AreaChart\\n              accessibilityLayer\\n              data={areaChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <Area\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"natural\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.4}\\n                stroke=\\\"var(--color-desktop)\\\"\\n              />\\n            </AreaChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                January - June 2024\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst barChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst barChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartBarExample() {\\n  return (\\n    <Example title=\\\"Bar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Bar Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={barChartConfig}>\\n            <BarChart accessibilityLayer data={barChartData}>\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                tickMargin={10}\\n                axisLine={false}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"dashed\\\" />}\\n              />\\n              <Bar dataKey=\\\"desktop\\\" fill=\\\"var(--color-desktop)\\\" radius={4} />\\n              <Bar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" radius={4} />\\n            </BarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col items-start gap-2\\\">\\n          <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst lineChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst lineChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartLineExample() {\\n  return (\\n    <Example title=\\\"Line Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Line Chart - Multiple</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <ChartContainer config={lineChartConfig}>\\n            <LineChart\\n              accessibilityLayer\\n              data={lineChartData}\\n              margin={{\\n                left: 12,\\n                right: 12,\\n              }}\\n            >\\n              <CartesianGrid vertical={false} />\\n              <XAxis\\n                dataKey=\\\"month\\\"\\n                tickLine={false}\\n                axisLine={false}\\n                tickMargin={8}\\n                tickFormatter={(value) => value.slice(0, 3)}\\n              />\\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\\n              <Line\\n                dataKey=\\\"desktop\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-desktop)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n              <Line\\n                dataKey=\\\"mobile\\\"\\n                type=\\\"monotone\\\"\\n                stroke=\\\"var(--color-mobile)\\\"\\n                strokeWidth={2}\\n                dot={false}\\n              />\\n            </LineChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter>\\n          <div className=\\\"flex w-full items-start gap-2\\\">\\n            <div className=\\\"grid gap-2\\\">\\n              <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n                Trending up by 5.2% this month{\\\" \\\"}\\n                <IconPlaceholder\\n                  lucide=\\\"TrendingUpIcon\\\"\\n                  tabler=\\\"IconTrendingUp\\\"\\n                  hugeicons=\\\"ChartUpIcon\\\"\\n                  phosphor=\\\"TrendUpIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n                Showing total visitors for the last 6 months\\n              </div>\\n            </div>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst pieChartData = [\\n  { browser: \\\"chrome\\\", visitors: 275, fill: \\\"var(--color-chrome)\\\" },\\n  { browser: \\\"safari\\\", visitors: 200, fill: \\\"var(--color-safari)\\\" },\\n  { browser: \\\"firefox\\\", visitors: 287, fill: \\\"var(--color-firefox)\\\" },\\n  { browser: \\\"edge\\\", visitors: 173, fill: \\\"var(--color-edge)\\\" },\\n  { browser: \\\"other\\\", visitors: 190, fill: \\\"var(--color-other)\\\" },\\n]\\n\\nconst pieChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  chrome: {\\n    label: \\\"Chrome\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n  firefox: {\\n    label: \\\"Firefox\\\",\\n    color: \\\"var(--chart-3)\\\",\\n  },\\n  edge: {\\n    label: \\\"Edge\\\",\\n    color: \\\"var(--chart-4)\\\",\\n  },\\n  other: {\\n    label: \\\"Other\\\",\\n    color: \\\"var(--chart-5)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartPieExample() {\\n  const totalVisitors = React.useMemo(() => {\\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\\n  }, [])\\n\\n  return (\\n    <Example title=\\\"Pie Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-0\\\">\\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={pieChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <PieChart>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent hideLabel />}\\n              />\\n              <Pie\\n                data={pieChartData}\\n                dataKey=\\\"visitors\\\"\\n                nameKey=\\\"browser\\\"\\n                innerRadius={60}\\n                strokeWidth={5}\\n              >\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-3xl font-bold\\\"\\n                          >\\n                            {totalVisitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </Pie>\\n            </PieChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radarChartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst radarChartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--chart-1)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadarExample() {\\n  return (\\n    <Example title=\\\"Radar Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader className=\\\"items-center pb-4\\\">\\n          <CardTitle>Radar Chart - Multiple</CardTitle>\\n          <CardDescription>\\n            Showing total visitors for the last 6 months\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"pb-0\\\">\\n          <ChartContainer\\n            config={radarChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[250px]\\\"\\n          >\\n            <RadarChart data={radarChartData}>\\n              <ChartTooltip\\n                cursor={false}\\n                content={<ChartTooltipContent indicator=\\\"line\\\" />}\\n              />\\n              <PolarAngleAxis dataKey=\\\"month\\\" />\\n              <PolarGrid />\\n              <Radar\\n                dataKey=\\\"desktop\\\"\\n                fill=\\\"var(--color-desktop)\\\"\\n                fillOpacity={0.6}\\n              />\\n              <Radar dataKey=\\\"mobile\\\" fill=\\\"var(--color-mobile)\\\" />\\n            </RadarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2 leading-none text-muted-foreground\\\">\\n            January - June 2024\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst radialChartData = [\\n  { browser: \\\"safari\\\", visitors: 1260, fill: \\\"var(--color-safari)\\\" },\\n]\\n\\nconst radialChartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  safari: {\\n    label: \\\"Safari\\\",\\n    color: \\\"var(--chart-2)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction ChartRadialExample() {\\n  return (\\n    <Example title=\\\"Radial Chart\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Radial Chart - Shape</CardTitle>\\n          <CardDescription>January - June 2024</CardDescription>\\n        </CardHeader>\\n        <CardContent className=\\\"flex-1 pb-0\\\">\\n          <ChartContainer\\n            config={radialChartConfig}\\n            className=\\\"mx-auto aspect-square max-h-[210px]\\\"\\n          >\\n            <RadialBarChart\\n              data={radialChartData}\\n              endAngle={100}\\n              innerRadius={80}\\n              outerRadius={140}\\n            >\\n              <PolarGrid\\n                gridType=\\\"circle\\\"\\n                radialLines={false}\\n                stroke=\\\"none\\\"\\n                className=\\\"first:fill-muted last:fill-background\\\"\\n                polarRadius={[86, 74]}\\n              />\\n              <RadialBar dataKey=\\\"visitors\\\" background />\\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\\n                <Label\\n                  content={({ viewBox }) => {\\n                    if (viewBox && \\\"cx\\\" in viewBox && \\\"cy\\\" in viewBox) {\\n                      return (\\n                        <text\\n                          x={viewBox.cx}\\n                          y={viewBox.cy}\\n                          textAnchor=\\\"middle\\\"\\n                          dominantBaseline=\\\"middle\\\"\\n                        >\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={viewBox.cy}\\n                            className=\\\"fill-foreground text-4xl font-bold\\\"\\n                          >\\n                            {radialChartData[0].visitors.toLocaleString()}\\n                          </tspan>\\n                          <tspan\\n                            x={viewBox.cx}\\n                            y={(viewBox.cy || 0) + 24}\\n                            className=\\\"fill-muted-foreground\\\"\\n                          >\\n                            Visitors\\n                          </tspan>\\n                        </text>\\n                      )\\n                    }\\n                  }}\\n                />\\n              </PolarRadiusAxis>\\n            </RadialBarChart>\\n          </ChartContainer>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 leading-none font-medium\\\">\\n            Trending up by 5.2% this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiLineChartLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"leading-none text-muted-foreground\\\">\\n            Showing total visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts@2.15.4\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/chart.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RechartsPrimitive from \\\"recharts\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\n// Format: { THEME_NAME: CSS_SELECTOR }\\nconst THEMES = { light: \\\"\\\", dark: \\\".dark\\\" } as const\\n\\nexport type ChartConfig = {\\n  [k in string]: {\\n    label?: React.ReactNode\\n    icon?: React.ComponentType\\n  } & (\\n    | { color?: string; theme?: never }\\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\\n  )\\n}\\n\\ntype ChartContextProps = {\\n  config: ChartConfig\\n}\\n\\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\\n\\nfunction useChart() {\\n  const context = React.useContext(ChartContext)\\n\\n  if (!context) {\\n    throw new Error(\\\"useChart must be used within a <ChartContainer />\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction ChartContainer({\\n  id,\\n  className,\\n  children,\\n  config,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  config: ChartConfig\\n  children: React.ComponentProps<\\n    typeof RechartsPrimitive.ResponsiveContainer\\n  >[\\\"children\\\"]\\n}) {\\n  const uniqueId = React.useId()\\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \\\"\\\")}`\\n\\n  return (\\n    <ChartContext.Provider value={{ config }}>\\n      <div\\n        data-slot=\\\"chart\\\"\\n        data-chart={chartId}\\n        className={cn(\\n          \\\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <ChartStyle id={chartId} config={config} />\\n        <RechartsPrimitive.ResponsiveContainer>\\n          {children}\\n        </RechartsPrimitive.ResponsiveContainer>\\n      </div>\\n    </ChartContext.Provider>\\n  )\\n}\\n\\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\\n  const colorConfig = Object.entries(config).filter(\\n    ([, config]) => config.theme || config.color\\n  )\\n\\n  if (!colorConfig.length) {\\n    return null\\n  }\\n\\n  return (\\n    <style\\n      dangerouslySetInnerHTML={{\\n        __html: Object.entries(THEMES)\\n          .map(\\n            ([theme, prefix]) => `\\n${prefix} [data-chart=${id}] {\\n${colorConfig\\n  .map(([key, itemConfig]) => {\\n    const color =\\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\\n      itemConfig.color\\n    return color ? `  --color-${key}: ${color};` : null\\n  })\\n  .join(\\\"\\\\n\\\")}\\n}\\n`\\n          )\\n          .join(\\\"\\\\n\\\"),\\n      }}\\n    />\\n  )\\n}\\n\\nconst ChartTooltip = RechartsPrimitive.Tooltip\\n\\nfunction ChartTooltipContent({\\n  active,\\n  payload,\\n  className,\\n  indicator = \\\"dot\\\",\\n  hideLabel = false,\\n  hideIndicator = false,\\n  label,\\n  labelFormatter,\\n  labelClassName,\\n  formatter,\\n  color,\\n  nameKey,\\n  labelKey,\\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\\n  React.ComponentProps<\\\"div\\\"> & {\\n    hideLabel?: boolean\\n    hideIndicator?: boolean\\n    indicator?: \\\"line\\\" | \\\"dot\\\" | \\\"dashed\\\"\\n    nameKey?: string\\n    labelKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  const tooltipLabel = React.useMemo(() => {\\n    if (hideLabel || !payload?.length) {\\n      return null\\n    }\\n\\n    const [item] = payload\\n    const key = `${labelKey || item?.dataKey || item?.name || \\\"value\\\"}`\\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n    const value =\\n      !labelKey && typeof label === \\\"string\\\"\\n        ? config[label as keyof typeof config]?.label || label\\n        : itemConfig?.label\\n\\n    if (labelFormatter) {\\n      return (\\n        <div className={cn(\\\"font-medium\\\", labelClassName)}>\\n          {labelFormatter(value, payload)}\\n        </div>\\n      )\\n    }\\n\\n    if (!value) {\\n      return null\\n    }\\n\\n    return <div className={cn(\\\"font-medium\\\", labelClassName)}>{value}</div>\\n  }, [\\n    label,\\n    labelFormatter,\\n    payload,\\n    hideLabel,\\n    labelClassName,\\n    config,\\n    labelKey,\\n  ])\\n\\n  if (!active || !payload?.length) {\\n    return null\\n  }\\n\\n  const nestLabel = payload.length === 1 && indicator !== \\\"dot\\\"\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\\\",\\n        className\\n      )}\\n    >\\n      {!nestLabel ? tooltipLabel : null}\\n      <div className=\\\"grid gap-1.5\\\">\\n        {payload\\n          .filter((item) => item.type !== \\\"none\\\")\\n          .map((item, index) => {\\n            const key = `${nameKey || item.name || item.dataKey || \\\"value\\\"}`\\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n            const indicatorColor = color || item.payload.fill || item.color\\n\\n            return (\\n              <div\\n                key={item.dataKey}\\n                className={cn(\\n                  \\\"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\\\",\\n                  indicator === \\\"dot\\\" && \\\"items-center\\\"\\n                )}\\n              >\\n                {formatter && item?.value !== undefined && item.name ? (\\n                  formatter(item.value, item.name, item, index, item.payload)\\n                ) : (\\n                  <>\\n                    {itemConfig?.icon ? (\\n                      <itemConfig.icon />\\n                    ) : (\\n                      !hideIndicator && (\\n                        <div\\n                          className={cn(\\n                            \\\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\\\",\\n                            {\\n                              \\\"h-2.5 w-2.5\\\": indicator === \\\"dot\\\",\\n                              \\\"w-1\\\": indicator === \\\"line\\\",\\n                              \\\"w-0 border-[1.5px] border-dashed bg-transparent\\\":\\n                                indicator === \\\"dashed\\\",\\n                              \\\"my-0.5\\\": nestLabel && indicator === \\\"dashed\\\",\\n                            }\\n                          )}\\n                          style={\\n                            {\\n                              \\\"--color-bg\\\": indicatorColor,\\n                              \\\"--color-border\\\": indicatorColor,\\n                            } as React.CSSProperties\\n                          }\\n                        />\\n                      )\\n                    )}\\n                    <div\\n                      className={cn(\\n                        \\\"flex flex-1 justify-between leading-none\\\",\\n                        nestLabel ? \\\"items-end\\\" : \\\"items-center\\\"\\n                      )}\\n                    >\\n                      <div className=\\\"grid gap-1.5\\\">\\n                        {nestLabel ? tooltipLabel : null}\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          {itemConfig?.label || item.name}\\n                        </span>\\n                      </div>\\n                      {item.value && (\\n                        <span className=\\\"font-mono font-medium text-foreground tabular-nums\\\">\\n                          {item.value.toLocaleString()}\\n                        </span>\\n                      )}\\n                    </div>\\n                  </>\\n                )}\\n              </div>\\n            )\\n          })}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst ChartLegend = RechartsPrimitive.Legend\\n\\nfunction ChartLegendContent({\\n  className,\\n  hideIcon = false,\\n  payload,\\n  verticalAlign = \\\"bottom\\\",\\n  nameKey,\\n}: React.ComponentProps<\\\"div\\\"> &\\n  Pick<RechartsPrimitive.LegendProps, \\\"payload\\\" | \\\"verticalAlign\\\"> & {\\n    hideIcon?: boolean\\n    nameKey?: string\\n  }) {\\n  const { config } = useChart()\\n\\n  if (!payload?.length) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      className={cn(\\n        \\\"flex items-center justify-center gap-4\\\",\\n        verticalAlign === \\\"top\\\" ? \\\"pb-3\\\" : \\\"pt-3\\\",\\n        className\\n      )}\\n    >\\n      {payload\\n        .filter((item) => item.type !== \\\"none\\\")\\n        .map((item) => {\\n          const key = `${nameKey || item.dataKey || \\\"value\\\"}`\\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\\n\\n          return (\\n            <div\\n              key={item.value}\\n              className={cn(\\n                \\\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\\\"\\n              )}\\n            >\\n              {itemConfig?.icon && !hideIcon ? (\\n                <itemConfig.icon />\\n              ) : (\\n                <div\\n                  className=\\\"h-2 w-2 shrink-0 rounded-[2px]\\\"\\n                  style={{\\n                    backgroundColor: item.color,\\n                  }}\\n                />\\n              )}\\n              {itemConfig?.label}\\n            </div>\\n          )\\n        })}\\n    </div>\\n  )\\n}\\n\\nfunction getPayloadConfigFromPayload(\\n  config: ChartConfig,\\n  payload: unknown,\\n  key: string\\n) {\\n  if (typeof payload !== \\\"object\\\" || payload === null) {\\n    return undefined\\n  }\\n\\n  const payloadPayload =\\n    \\\"payload\\\" in payload &&\\n    typeof payload.payload === \\\"object\\\" &&\\n    payload.payload !== null\\n      ? payload.payload\\n      : undefined\\n\\n  let configLabelKey: string = key\\n\\n  if (\\n    key in payload &&\\n    typeof payload[key as keyof typeof payload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payload[key as keyof typeof payload] as string\\n  } else if (\\n    payloadPayload &&\\n    key in payloadPayload &&\\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \\\"string\\\"\\n  ) {\\n    configLabelKey = payloadPayload[\\n      key as keyof typeof payloadPayload\\n    ] as string\\n  }\\n\\n  return configLabelKey in config\\n    ? config[configLabelKey]\\n    : config[key as keyof typeof config]\\n}\\n\\nexport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  ChartLegend,\\n  ChartLegendContent,\\n  ChartStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/checkbox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox-example\",\n  \"title\": \"Checkbox\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/checkbox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-vega/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-vega/ui/table\\\"\\n\\nexport default function CheckboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CheckboxBasic />\\n      <CheckboxWithDescription />\\n      <CheckboxInvalid />\\n      <CheckboxDisabled />\\n      <CheckboxWithTitle />\\n      <CheckboxInTable />\\n      <CheckboxGroup />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CheckboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms\\\" />\\n        <FieldLabel htmlFor=\\\"terms\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"terms-2\\\" defaultChecked />\\n        <FieldContent>\\n          <FieldLabel htmlFor=\\\"terms-2\\\">Accept terms and conditions</FieldLabel>\\n          <FieldDescription>\\n            By clicking this checkbox, you agree to the terms and conditions.\\n          </FieldDescription>\\n        </FieldContent>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Field orientation=\\\"horizontal\\\" data-invalid>\\n        <Checkbox id=\\\"terms-3\\\" aria-invalid />\\n        <FieldLabel htmlFor=\\\"terms-3\\\">Accept terms and conditions</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"toggle\\\" disabled />\\n        <FieldLabel htmlFor=\\\"toggle\\\">Enable notifications</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxWithTitle() {\\n  return (\\n    <Example title=\\\"With Title\\\">\\n      <FieldGroup>\\n        <FieldLabel htmlFor=\\\"toggle-2\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"toggle-2\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"toggle-4\\\">\\n          <Field orientation=\\\"horizontal\\\" data-disabled>\\n            <Checkbox id=\\\"toggle-4\\\" disabled />\\n            <FieldContent>\\n              <FieldTitle>Enable notifications</FieldTitle>\\n              <FieldDescription>\\n                You can enable or disable notifications at any time.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nconst tableData = [\\n  {\\n    id: \\\"1\\\",\\n    name: \\\"Sarah Chen\\\",\\n    email: \\\"sarah.chen@example.com\\\",\\n    role: \\\"Admin\\\",\\n  },\\n  {\\n    id: \\\"2\\\",\\n    name: \\\"Marcus Rodriguez\\\",\\n    email: \\\"marcus.rodriguez@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"3\\\",\\n    name: \\\"Priya Patel\\\",\\n    email: \\\"priya.patel@example.com\\\",\\n    role: \\\"User\\\",\\n  },\\n  {\\n    id: \\\"4\\\",\\n    name: \\\"David Kim\\\",\\n    email: \\\"david.kim@example.com\\\",\\n    role: \\\"Editor\\\",\\n  },\\n]\\n\\nfunction CheckboxInTable() {\\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\\n    new Set([\\\"1\\\"])\\n  )\\n\\n  const selectAll = selectedRows.size === tableData.length\\n\\n  const handleSelectAll = (checked: boolean) => {\\n    if (checked) {\\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\\n    } else {\\n      setSelectedRows(new Set())\\n    }\\n  }\\n\\n  const handleSelectRow = (id: string, checked: boolean) => {\\n    const newSelected = new Set(selectedRows)\\n    if (checked) {\\n      newSelected.add(id)\\n    } else {\\n      newSelected.delete(id)\\n    }\\n    setSelectedRows(newSelected)\\n  }\\n\\n  return (\\n    <Example title=\\\"In Table\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-8\\\">\\n              <Checkbox\\n                id=\\\"select-all\\\"\\n                checked={selectAll}\\n                onCheckedChange={handleSelectAll}\\n              />\\n            </TableHead>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead>Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {tableData.map((row) => (\\n            <TableRow\\n              key={row.id}\\n              data-state={selectedRows.has(row.id) ? \\\"selected\\\" : undefined}\\n            >\\n              <TableCell>\\n                <Checkbox\\n                  id={`row-${row.id}`}\\n                  checked={selectedRows.has(row.id)}\\n                  onCheckedChange={(checked) =>\\n                    handleSelectRow(row.id, checked === true)\\n                  }\\n                />\\n              </TableCell>\\n              <TableCell className=\\\"font-medium\\\">{row.name}</TableCell>\\n              <TableCell>{row.email}</TableCell>\\n              <TableCell>{row.role}</TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxGroup() {\\n  return (\\n    <Example title=\\\"Group\\\">\\n      <Field>\\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-hard-disks-ljj\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-hard-disks-ljj\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Hard disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-external-disks-1yg\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-external-disks-1yg\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            External disks\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-cds-dvds-fzt\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-cds-dvds-fzt\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            CDs, DVDs, and iPods\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"finder-pref-9k2-connected-servers-6l2\\\" />\\n          <FieldLabel\\n            htmlFor=\\\"finder-pref-9k2-connected-servers-6l2\\\"\\n            className=\\\"font-normal\\\"\\n          >\\n            Connected servers\\n          </FieldLabel>\\n        </Field>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Checkbox as CheckboxPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Checkbox({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\\n  return (\\n    <CheckboxPrimitive.Root\\n      data-slot=\\\"checkbox\\\"\\n      className={cn(\\n        \\\"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input shadow-xs transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"grid place-content-center text-current transition-none [&>svg]:size-3.5\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      </CheckboxPrimitive.Indicator>\\n    </CheckboxPrimitive.Root>\\n  )\\n}\\n\\nexport { Checkbox }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/collapsible-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible-example\",\n  \"title\": \"Collapsible\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"collapsible\",\n    \"field\",\n    \"input\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/collapsible-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport { Tabs, TabsList, TabsTrigger } from \\\"@/registry/radix-vega/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CollapsibleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CollapsibleFileTree />\\n      <CollapsibleSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\\n\\nfunction CollapsibleFileTree() {\\n  const fileTree: FileTreeItem[] = [\\n    {\\n      name: \\\"components\\\",\\n      items: [\\n        {\\n          name: \\\"ui\\\",\\n          items: [\\n            { name: \\\"button.tsx\\\" },\\n            { name: \\\"card.tsx\\\" },\\n            { name: \\\"dialog.tsx\\\" },\\n            { name: \\\"input.tsx\\\" },\\n            { name: \\\"select.tsx\\\" },\\n            { name: \\\"table.tsx\\\" },\\n          ],\\n        },\\n        { name: \\\"login-form.tsx\\\" },\\n        { name: \\\"register-form.tsx\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"lib\\\",\\n      items: [{ name: \\\"utils.ts\\\" }, { name: \\\"cn.ts\\\" }, { name: \\\"api.ts\\\" }],\\n    },\\n    {\\n      name: \\\"hooks\\\",\\n      items: [\\n        { name: \\\"use-media-query.ts\\\" },\\n        { name: \\\"use-debounce.ts\\\" },\\n        { name: \\\"use-local-storage.ts\\\" },\\n      ],\\n    },\\n    {\\n      name: \\\"types\\\",\\n      items: [{ name: \\\"index.d.ts\\\" }, { name: \\\"api.d.ts\\\" }],\\n    },\\n    {\\n      name: \\\"public\\\",\\n      items: [\\n        { name: \\\"favicon.ico\\\" },\\n        { name: \\\"logo.svg\\\" },\\n        { name: \\\"images\\\" },\\n      ],\\n    },\\n    { name: \\\"app.tsx\\\" },\\n    { name: \\\"layout.tsx\\\" },\\n    { name: \\\"globals.css\\\" },\\n    { name: \\\"package.json\\\" },\\n    { name: \\\"tsconfig.json\\\" },\\n    { name: \\\"README.md\\\" },\\n    { name: \\\".gitignore\\\" },\\n  ]\\n\\n  const renderItem = (fileItem: FileTreeItem) => {\\n    if (\\\"items\\\" in fileItem) {\\n      return (\\n        <Collapsible key={fileItem.name}>\\n          <CollapsibleTrigger asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ChevronRightIcon\\\"\\n                tabler=\\\"IconChevronRight\\\"\\n                hugeicons=\\\"ArrowRight01Icon\\\"\\n                phosphor=\\\"CaretRightIcon\\\"\\n                remixicon=\\\"RiArrowRightSLine\\\"\\n                className=\\\"transition-transform group-data-[state=open]:rotate-90\\\"\\n              />\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"Folder01Icon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              {fileItem.name}\\n            </Button>\\n          </CollapsibleTrigger>\\n          <CollapsibleContent className=\\\"mt-1 ml-5 style-lyra:ml-4\\\">\\n            <div className=\\\"flex flex-col gap-1\\\">\\n              {fileItem.items.map((child) => renderItem(child))}\\n            </div>\\n          </CollapsibleContent>\\n        </Collapsible>\\n      )\\n    }\\n    return (\\n      <Button\\n        key={fileItem.name}\\n        variant=\\\"link\\\"\\n        size=\\\"sm\\\"\\n        className=\\\"w-full justify-start gap-2 text-foreground\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        <span>{fileItem.name}</span>\\n      </Button>\\n    )\\n  }\\n\\n  return (\\n    <Example title=\\\"File Tree\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-[16rem] gap-2\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <Tabs defaultValue=\\\"explorer\\\">\\n            <TabsList className=\\\"w-full\\\">\\n              <TabsTrigger value=\\\"explorer\\\">Explorer</TabsTrigger>\\n              <TabsTrigger value=\\\"settings\\\">Outline</TabsTrigger>\\n            </TabsList>\\n          </Tabs>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            {fileTree.map((item) => renderItem(item))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CollapsibleSettings() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Settings\\\" className=\\\"items-center\\\">\\n      <Card className=\\\"mx-auto w-full max-w-xs\\\" size=\\\"sm\\\">\\n        <CardHeader>\\n          <CardTitle>Radius</CardTitle>\\n          <CardDescription>\\n            Set the corner radius of the element.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <Collapsible\\n            open={isOpen}\\n            onOpenChange={setIsOpen}\\n            className=\\\"flex items-start gap-2\\\"\\n          >\\n            <FieldGroup className=\\\"grid w-full grid-cols-2 gap-2\\\">\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                  Radius X\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                  Radius Y\\n                </FieldLabel>\\n                <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n              </Field>\\n              <CollapsibleContent className=\\\"col-span-full grid grid-cols-subgrid gap-2\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-x\\\" className=\\\"sr-only\\\">\\n                    Radius X\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"radius-y\\\" className=\\\"sr-only\\\">\\n                    Radius Y\\n                  </FieldLabel>\\n                  <Input id=\\\"radius\\\" placeholder=\\\"0\\\" defaultValue={0} />\\n                </Field>\\n              </CollapsibleContent>\\n            </FieldGroup>\\n            <CollapsibleTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                {isOpen ? (\\n                  <IconPlaceholder\\n                    lucide=\\\"MinimizeIcon\\\"\\n                    tabler=\\\"IconMinimize\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                ) : (\\n                  <IconPlaceholder\\n                    lucide=\\\"MaximizeIcon\\\"\\n                    tabler=\\\"IconMaximize\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                )}\\n              </Button>\\n            </CollapsibleTrigger>\\n          </Collapsible>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Collapsible as CollapsiblePrimitive } from \\\"radix-ui\\\"\\n\\nfunction Collapsible({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\\n  return <CollapsiblePrimitive.Root data-slot=\\\"collapsible\\\" {...props} />\\n}\\n\\nfunction CollapsibleTrigger({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleTrigger\\n      data-slot=\\\"collapsible-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CollapsibleContent({\\n  ...props\\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\\n  return (\\n    <CollapsiblePrimitive.CollapsibleContent\\n      data-slot=\\\"collapsible-content\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/combobox-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox-example\",\n  \"title\": \"Combobox\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/combobox-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Card, CardContent, CardFooter } from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxChip,\\n  ComboboxChips,\\n  ComboboxChipsInput,\\n  ComboboxCollection,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxGroup,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxLabel,\\n  ComboboxList,\\n  ComboboxSeparator,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n} from \\\"@/registry/radix-vega/ui/combobox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ComboboxExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ComboboxBasic />\\n      <ComboboxDisabled />\\n      <ComboboxInvalid />\\n      <ComboboxWithClear />\\n      <ComboboxAutoHighlight />\\n      <ComboboxWithGroups />\\n      <ComboboxWithGroupsAndSeparator />\\n      <ComboboxLargeList />\\n      <ComboxboxInputAddon />\\n      <ComboboxInPopup />\\n      <ComboboxWithForm />\\n      <ComboboxMultiple />\\n      <ComboboxMultipleDisabled />\\n      <ComboboxMultipleInvalid />\\n      <ComboboxMultipleNoRemove />\\n      <ComboboxWithCustomItems />\\n      <ComboboxInDialog />\\n      <ComboboxWithOtherInputs />\\n      <ComboboxDisabledItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nconst countries = [\\n  { code: \\\"\\\", value: \\\"\\\", continent: \\\"\\\", label: \\\"Select country\\\" },\\n  { code: \\\"af\\\", value: \\\"afghanistan\\\", label: \\\"Afghanistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"al\\\", value: \\\"albania\\\", label: \\\"Albania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dz\\\", value: \\\"algeria\\\", label: \\\"Algeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ad\\\", value: \\\"andorra\\\", label: \\\"Andorra\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ao\\\", value: \\\"angola\\\", label: \\\"Angola\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"ar\\\",\\n    value: \\\"argentina\\\",\\n    label: \\\"Argentina\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"am\\\", value: \\\"armenia\\\", label: \\\"Armenia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"au\\\", value: \\\"australia\\\", label: \\\"Australia\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"at\\\", value: \\\"austria\\\", label: \\\"Austria\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"az\\\", value: \\\"azerbaijan\\\", label: \\\"Azerbaijan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bs\\\",\\n    value: \\\"bahamas\\\",\\n    label: \\\"Bahamas\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"bh\\\", value: \\\"bahrain\\\", label: \\\"Bahrain\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bd\\\", value: \\\"bangladesh\\\", label: \\\"Bangladesh\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bb\\\",\\n    value: \\\"barbados\\\",\\n    label: \\\"Barbados\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"by\\\", value: \\\"belarus\\\", label: \\\"Belarus\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"be\\\", value: \\\"belgium\\\", label: \\\"Belgium\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"bz\\\", value: \\\"belize\\\", label: \\\"Belize\\\", continent: \\\"North America\\\" },\\n  { code: \\\"bj\\\", value: \\\"benin\\\", label: \\\"Benin\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"bt\\\", value: \\\"bhutan\\\", label: \\\"Bhutan\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"bo\\\",\\n    value: \\\"bolivia\\\",\\n    label: \\\"Bolivia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  {\\n    code: \\\"ba\\\",\\n    value: \\\"bosnia-and-herzegovina\\\",\\n    label: \\\"Bosnia and Herzegovina\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"bw\\\", value: \\\"botswana\\\", label: \\\"Botswana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"br\\\", value: \\\"brazil\\\", label: \\\"Brazil\\\", continent: \\\"South America\\\" },\\n  { code: \\\"bn\\\", value: \\\"brunei\\\", label: \\\"Brunei\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"bg\\\", value: \\\"bulgaria\\\", label: \\\"Bulgaria\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"bf\\\",\\n    value: \\\"burkina-faso\\\",\\n    label: \\\"Burkina Faso\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"bi\\\", value: \\\"burundi\\\", label: \\\"Burundi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kh\\\", value: \\\"cambodia\\\", label: \\\"Cambodia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"cm\\\", value: \\\"cameroon\\\", label: \\\"Cameroon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ca\\\", value: \\\"canada\\\", label: \\\"Canada\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cv\\\", value: \\\"cape-verde\\\", label: \\\"Cape Verde\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cf\\\",\\n    value: \\\"central-african-republic\\\",\\n    label: \\\"Central African Republic\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"td\\\", value: \\\"chad\\\", label: \\\"Chad\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cl\\\", value: \\\"chile\\\", label: \\\"Chile\\\", continent: \\\"South America\\\" },\\n  { code: \\\"cn\\\", value: \\\"china\\\", label: \\\"China\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"co\\\",\\n    value: \\\"colombia\\\",\\n    label: \\\"Colombia\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"km\\\", value: \\\"comoros\\\", label: \\\"Comoros\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"cg\\\", value: \\\"congo\\\", label: \\\"Congo\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"cr\\\",\\n    value: \\\"costa-rica\\\",\\n    label: \\\"Costa Rica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hr\\\", value: \\\"croatia\\\", label: \\\"Croatia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"cu\\\", value: \\\"cuba\\\", label: \\\"Cuba\\\", continent: \\\"North America\\\" },\\n  { code: \\\"cy\\\", value: \\\"cyprus\\\", label: \\\"Cyprus\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"cz\\\",\\n    value: \\\"czech-republic\\\",\\n    label: \\\"Czech Republic\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"dk\\\", value: \\\"denmark\\\", label: \\\"Denmark\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"dj\\\", value: \\\"djibouti\\\", label: \\\"Djibouti\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"dm\\\",\\n    value: \\\"dominica\\\",\\n    label: \\\"Dominica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"do\\\",\\n    value: \\\"dominican-republic\\\",\\n    label: \\\"Dominican Republic\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"ec\\\",\\n    value: \\\"ecuador\\\",\\n    label: \\\"Ecuador\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"eg\\\", value: \\\"egypt\\\", label: \\\"Egypt\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sv\\\",\\n    value: \\\"el-salvador\\\",\\n    label: \\\"El Salvador\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gq\\\",\\n    value: \\\"equatorial-guinea\\\",\\n    label: \\\"Equatorial Guinea\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"er\\\", value: \\\"eritrea\\\", label: \\\"Eritrea\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ee\\\", value: \\\"estonia\\\", label: \\\"Estonia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"et\\\", value: \\\"ethiopia\\\", label: \\\"Ethiopia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"fj\\\", value: \\\"fiji\\\", label: \\\"Fiji\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"fi\\\", value: \\\"finland\\\", label: \\\"Finland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"fr\\\", value: \\\"france\\\", label: \\\"France\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ga\\\", value: \\\"gabon\\\", label: \\\"Gabon\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gm\\\", value: \\\"gambia\\\", label: \\\"Gambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ge\\\", value: \\\"georgia\\\", label: \\\"Georgia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"de\\\", value: \\\"germany\\\", label: \\\"Germany\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"gh\\\", value: \\\"ghana\\\", label: \\\"Ghana\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"gr\\\", value: \\\"greece\\\", label: \\\"Greece\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"gd\\\",\\n    value: \\\"grenada\\\",\\n    label: \\\"Grenada\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"gt\\\",\\n    value: \\\"guatemala\\\",\\n    label: \\\"Guatemala\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"gn\\\", value: \\\"guinea\\\", label: \\\"Guinea\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"gw\\\",\\n    value: \\\"guinea-bissau\\\",\\n    label: \\\"Guinea-Bissau\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"gy\\\", value: \\\"guyana\\\", label: \\\"Guyana\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ht\\\", value: \\\"haiti\\\", label: \\\"Haiti\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"hn\\\",\\n    value: \\\"honduras\\\",\\n    label: \\\"Honduras\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"hu\\\", value: \\\"hungary\\\", label: \\\"Hungary\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"is\\\", value: \\\"iceland\\\", label: \\\"Iceland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"in\\\", value: \\\"india\\\", label: \\\"India\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"id\\\", value: \\\"indonesia\\\", label: \\\"Indonesia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ir\\\", value: \\\"iran\\\", label: \\\"Iran\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"iq\\\", value: \\\"iraq\\\", label: \\\"Iraq\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ie\\\", value: \\\"ireland\\\", label: \\\"Ireland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"il\\\", value: \\\"israel\\\", label: \\\"Israel\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"it\\\", value: \\\"italy\\\", label: \\\"Italy\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"jm\\\",\\n    value: \\\"jamaica\\\",\\n    label: \\\"Jamaica\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"jp\\\", value: \\\"japan\\\", label: \\\"Japan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"jo\\\", value: \\\"jordan\\\", label: \\\"Jordan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kz\\\", value: \\\"kazakhstan\\\", label: \\\"Kazakhstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ke\\\", value: \\\"kenya\\\", label: \\\"Kenya\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kw\\\", value: \\\"kuwait\\\", label: \\\"Kuwait\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"kg\\\", value: \\\"kyrgyzstan\\\", label: \\\"Kyrgyzstan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"la\\\", value: \\\"laos\\\", label: \\\"Laos\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"lv\\\", value: \\\"latvia\\\", label: \\\"Latvia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lb\\\", value: \\\"lebanon\\\", label: \\\"Lebanon\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ls\\\", value: \\\"lesotho\\\", label: \\\"Lesotho\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"lr\\\", value: \\\"liberia\\\", label: \\\"Liberia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ly\\\", value: \\\"libya\\\", label: \\\"Libya\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"li\\\",\\n    value: \\\"liechtenstein\\\",\\n    label: \\\"Liechtenstein\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"lt\\\", value: \\\"lithuania\\\", label: \\\"Lithuania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lu\\\", value: \\\"luxembourg\\\", label: \\\"Luxembourg\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mg\\\", value: \\\"madagascar\\\", label: \\\"Madagascar\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mw\\\", value: \\\"malawi\\\", label: \\\"Malawi\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"my\\\", value: \\\"malaysia\\\", label: \\\"Malaysia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"mv\\\", value: \\\"maldives\\\", label: \\\"Maldives\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ml\\\", value: \\\"mali\\\", label: \\\"Mali\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mt\\\", value: \\\"malta\\\", label: \\\"Malta\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"mh\\\",\\n    value: \\\"marshall-islands\\\",\\n    label: \\\"Marshall Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"mr\\\", value: \\\"mauritania\\\", label: \\\"Mauritania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mu\\\", value: \\\"mauritius\\\", label: \\\"Mauritius\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mx\\\", value: \\\"mexico\\\", label: \\\"Mexico\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"fm\\\",\\n    value: \\\"micronesia\\\",\\n    label: \\\"Micronesia\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"md\\\", value: \\\"moldova\\\", label: \\\"Moldova\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mc\\\", value: \\\"monaco\\\", label: \\\"Monaco\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"mn\\\", value: \\\"mongolia\\\", label: \\\"Mongolia\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"me\\\", value: \\\"montenegro\\\", label: \\\"Montenegro\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ma\\\", value: \\\"morocco\\\", label: \\\"Morocco\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mz\\\", value: \\\"mozambique\\\", label: \\\"Mozambique\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"mm\\\", value: \\\"myanmar\\\", label: \\\"Myanmar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"na\\\", value: \\\"namibia\\\", label: \\\"Namibia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"nr\\\", value: \\\"nauru\\\", label: \\\"Nauru\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"np\\\", value: \\\"nepal\\\", label: \\\"Nepal\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"nl\\\",\\n    value: \\\"netherlands\\\",\\n    label: \\\"Netherlands\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"nz\\\",\\n    value: \\\"new-zealand\\\",\\n    label: \\\"New Zealand\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"ni\\\",\\n    value: \\\"nicaragua\\\",\\n    label: \\\"Nicaragua\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"ne\\\", value: \\\"niger\\\", label: \\\"Niger\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ng\\\", value: \\\"nigeria\\\", label: \\\"Nigeria\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"kp\\\", value: \\\"north-korea\\\", label: \\\"North Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"mk\\\",\\n    value: \\\"north-macedonia\\\",\\n    label: \\\"North Macedonia\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"no\\\", value: \\\"norway\\\", label: \\\"Norway\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"om\\\", value: \\\"oman\\\", label: \\\"Oman\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pk\\\", value: \\\"pakistan\\\", label: \\\"Pakistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pw\\\", value: \\\"palau\\\", label: \\\"Palau\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ps\\\", value: \\\"palestine\\\", label: \\\"Palestine\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pa\\\", value: \\\"panama\\\", label: \\\"Panama\\\", continent: \\\"North America\\\" },\\n  {\\n    code: \\\"pg\\\",\\n    value: \\\"papua-new-guinea\\\",\\n    label: \\\"Papua New Guinea\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  {\\n    code: \\\"py\\\",\\n    value: \\\"paraguay\\\",\\n    label: \\\"Paraguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"pe\\\", value: \\\"peru\\\", label: \\\"Peru\\\", continent: \\\"South America\\\" },\\n  { code: \\\"ph\\\", value: \\\"philippines\\\", label: \\\"Philippines\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"pl\\\", value: \\\"poland\\\", label: \\\"Poland\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"pt\\\", value: \\\"portugal\\\", label: \\\"Portugal\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"qa\\\", value: \\\"qatar\\\", label: \\\"Qatar\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ro\\\", value: \\\"romania\\\", label: \\\"Romania\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"ru\\\", value: \\\"russia\\\", label: \\\"Russia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"rw\\\", value: \\\"rwanda\\\", label: \\\"Rwanda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ws\\\", value: \\\"samoa\\\", label: \\\"Samoa\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"sm\\\", value: \\\"san-marino\\\", label: \\\"San Marino\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sa\\\",\\n    value: \\\"saudi-arabia\\\",\\n    label: \\\"Saudi Arabia\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"sn\\\", value: \\\"senegal\\\", label: \\\"Senegal\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"rs\\\", value: \\\"serbia\\\", label: \\\"Serbia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"sc\\\", value: \\\"seychelles\\\", label: \\\"Seychelles\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sl\\\",\\n    value: \\\"sierra-leone\\\",\\n    label: \\\"Sierra Leone\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"sg\\\", value: \\\"singapore\\\", label: \\\"Singapore\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sk\\\", value: \\\"slovakia\\\", label: \\\"Slovakia\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"si\\\", value: \\\"slovenia\\\", label: \\\"Slovenia\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"sb\\\",\\n    value: \\\"solomon-islands\\\",\\n    label: \\\"Solomon Islands\\\",\\n    continent: \\\"Oceania\\\",\\n  },\\n  { code: \\\"so\\\", value: \\\"somalia\\\", label: \\\"Somalia\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"za\\\",\\n    value: \\\"south-africa\\\",\\n    label: \\\"South Africa\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"kr\\\", value: \\\"south-korea\\\", label: \\\"South Korea\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"ss\\\",\\n    value: \\\"south-sudan\\\",\\n    label: \\\"South Sudan\\\",\\n    continent: \\\"Africa\\\",\\n  },\\n  { code: \\\"es\\\", value: \\\"spain\\\", label: \\\"Spain\\\", continent: \\\"Europe\\\" },\\n  { code: \\\"lk\\\", value: \\\"sri-lanka\\\", label: \\\"Sri Lanka\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"sd\\\", value: \\\"sudan\\\", label: \\\"Sudan\\\", continent: \\\"Africa\\\" },\\n  {\\n    code: \\\"sr\\\",\\n    value: \\\"suriname\\\",\\n    label: \\\"Suriname\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"se\\\", value: \\\"sweden\\\", label: \\\"Sweden\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ch\\\",\\n    value: \\\"switzerland\\\",\\n    label: \\\"Switzerland\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  { code: \\\"sy\\\", value: \\\"syria\\\", label: \\\"Syria\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tw\\\", value: \\\"taiwan\\\", label: \\\"Taiwan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tj\\\", value: \\\"tajikistan\\\", label: \\\"Tajikistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tz\\\", value: \\\"tanzania\\\", label: \\\"Tanzania\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"th\\\", value: \\\"thailand\\\", label: \\\"Thailand\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tl\\\", value: \\\"timor-leste\\\", label: \\\"Timor-Leste\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"tg\\\", value: \\\"togo\\\", label: \\\"Togo\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"to\\\", value: \\\"tonga\\\", label: \\\"Tonga\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"tt\\\",\\n    value: \\\"trinidad-and-tobago\\\",\\n    label: \\\"Trinidad and Tobago\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  { code: \\\"tn\\\", value: \\\"tunisia\\\", label: \\\"Tunisia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"tr\\\", value: \\\"turkey\\\", label: \\\"Turkey\\\", continent: \\\"Asia\\\" },\\n  {\\n    code: \\\"tm\\\",\\n    value: \\\"turkmenistan\\\",\\n    label: \\\"Turkmenistan\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  { code: \\\"tv\\\", value: \\\"tuvalu\\\", label: \\\"Tuvalu\\\", continent: \\\"Oceania\\\" },\\n  { code: \\\"ug\\\", value: \\\"uganda\\\", label: \\\"Uganda\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"ua\\\", value: \\\"ukraine\\\", label: \\\"Ukraine\\\", continent: \\\"Europe\\\" },\\n  {\\n    code: \\\"ae\\\",\\n    value: \\\"united-arab-emirates\\\",\\n    label: \\\"United Arab Emirates\\\",\\n    continent: \\\"Asia\\\",\\n  },\\n  {\\n    code: \\\"gb\\\",\\n    value: \\\"united-kingdom\\\",\\n    label: \\\"United Kingdom\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"us\\\",\\n    value: \\\"united-states\\\",\\n    label: \\\"United States\\\",\\n    continent: \\\"North America\\\",\\n  },\\n  {\\n    code: \\\"uy\\\",\\n    value: \\\"uruguay\\\",\\n    label: \\\"Uruguay\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"uz\\\", value: \\\"uzbekistan\\\", label: \\\"Uzbekistan\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"vu\\\", value: \\\"vanuatu\\\", label: \\\"Vanuatu\\\", continent: \\\"Oceania\\\" },\\n  {\\n    code: \\\"va\\\",\\n    value: \\\"vatican-city\\\",\\n    label: \\\"Vatican City\\\",\\n    continent: \\\"Europe\\\",\\n  },\\n  {\\n    code: \\\"ve\\\",\\n    value: \\\"venezuela\\\",\\n    label: \\\"Venezuela\\\",\\n    continent: \\\"South America\\\",\\n  },\\n  { code: \\\"vn\\\", value: \\\"vietnam\\\", label: \\\"Vietnam\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"ye\\\", value: \\\"yemen\\\", label: \\\"Yemen\\\", continent: \\\"Asia\\\" },\\n  { code: \\\"zm\\\", value: \\\"zambia\\\", label: \\\"Zambia\\\", continent: \\\"Africa\\\" },\\n  { code: \\\"zw\\\", value: \\\"zimbabwe\\\", label: \\\"Zimbabwe\\\", continent: \\\"Africa\\\" },\\n]\\n\\nconst timezones = [\\n  {\\n    value: \\\"Americas\\\",\\n    items: [\\n      \\\"(GMT-5) New York\\\",\\n      \\\"(GMT-8) Los Angeles\\\",\\n      \\\"(GMT-6) Chicago\\\",\\n      \\\"(GMT-5) Toronto\\\",\\n      \\\"(GMT-8) Vancouver\\\",\\n      \\\"(GMT-3) São Paulo\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Europe\\\",\\n    items: [\\n      \\\"(GMT+0) London\\\",\\n      \\\"(GMT+1) Paris\\\",\\n      \\\"(GMT+1) Berlin\\\",\\n      \\\"(GMT+1) Rome\\\",\\n      \\\"(GMT+1) Madrid\\\",\\n      \\\"(GMT+1) Amsterdam\\\",\\n    ],\\n  },\\n  {\\n    value: \\\"Asia/Pacific\\\",\\n    items: [\\n      \\\"(GMT+9) Tokyo\\\",\\n      \\\"(GMT+8) Shanghai\\\",\\n      \\\"(GMT+8) Singapore\\\",\\n      \\\"(GMT+4) Dubai\\\",\\n      \\\"(GMT+11) Sydney\\\",\\n      \\\"(GMT+9) Seoul\\\",\\n    ],\\n  },\\n] as const\\n\\nfunction ComboboxBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" disabled />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nconst disabledFrameworks = [\\\"Nuxt.js\\\", \\\"Remix\\\"]\\n\\nfunction ComboboxDisabledItems() {\\n  return (\\n    <Example title=\\\"Disabled Items\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem\\n                key={item}\\n                value={item}\\n                disabled={disabledFrameworks.includes(item)}\\n              >\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox items={frameworks}>\\n          <ComboboxInput placeholder=\\\"Select a framework\\\" aria-invalid=\\\"true\\\" />\\n          <ComboboxContent>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-framework-invalid\\\">\\n            Framework\\n          </FieldLabel>\\n          <Combobox items={frameworks}>\\n            <ComboboxInput\\n              id=\\\"combobox-framework-invalid\\\"\\n              placeholder=\\\"Select a framework\\\"\\n              aria-invalid\\n            />\\n            <ComboboxContent>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>Please select a valid framework.</FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithClear() {\\n  return (\\n    <Example title=\\\"With Clear Button\\\">\\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" showClear />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithGroupsAndSeparator() {\\n  return (\\n    <Example title=\\\"With Groups and Separator\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n                <ComboboxSeparator />\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithForm() {\\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\\n    event.preventDefault()\\n    const formData = new FormData(event.target as HTMLFormElement)\\n    const framework = formData.get(\\\"framework\\\") as string\\n    toast(`You selected ${framework} as your framework.`)\\n  }\\n\\n  return (\\n    <Example title=\\\"Form with Combobox\\\">\\n      <Card className=\\\"w-full max-w-sm\\\" size=\\\"sm\\\">\\n        <CardContent>\\n          <form\\n            id=\\\"form-with-combobox\\\"\\n            className=\\\"w-full\\\"\\n            onSubmit={handleSubmit}\\n          >\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"framework\\\">Framework</FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"framework\\\"\\n                    name=\\\"framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n        <CardFooter>\\n          <Button type=\\\"submit\\\" form=\\\"form-with-combobox\\\">\\n            Submit\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\\n\\nfunction ComboboxLargeList() {\\n  return (\\n    <Example title=\\\"Large List (100 items)\\\">\\n      <Combobox items={largeListItems}>\\n        <ComboboxInput placeholder=\\\"Search from 100 items\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxAutoHighlight() {\\n  return (\\n    <Example title=\\\"With Auto Highlight\\\">\\n      <Combobox items={frameworks} autoHighlight>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboxboxInputAddon() {\\n  return (\\n    <Example title=\\\"With Icon Addon\\\">\\n      <Combobox items={timezones}>\\n        <ComboboxInput placeholder=\\\"Select a timezone\\\">\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"GlobeIcon\\\"\\n              tabler=\\\"IconGlobe\\\"\\n              hugeicons=\\\"Globe02Icon\\\"\\n              phosphor=\\\"GlobeIcon\\\"\\n              remixicon=\\\"RiGlobeLine\\\"\\n            />\\n          </InputGroupAddon>\\n        </ComboboxInput>\\n        <ComboboxContent alignOffset={-28} className=\\\"w-60\\\">\\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(group) => (\\n              <ComboboxGroup key={group.value} items={group.items}>\\n                <ComboboxLabel>{group.value}</ComboboxLabel>\\n                <ComboboxCollection>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxCollection>\\n              </ComboboxGroup>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInPopup() {\\n  return (\\n    <Example title=\\\"Combobox in Popup\\\">\\n      <Combobox items={countries} defaultValue={countries[0]}>\\n        <ComboboxTrigger\\n          render={\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"w-64 justify-between font-normal\\\"\\n            />\\n          }\\n        >\\n          <ComboboxValue />\\n        </ComboboxTrigger>\\n        <ComboboxContent>\\n          <ComboboxInput showTrigger={false} placeholder=\\\"Search\\\" />\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item.code} value={item}>\\n                {item.label}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultiple() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleDisabled() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Disabled\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n        disabled\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput disabled />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleInvalid() {\\n  const anchor1 = useComboboxAnchor()\\n  const anchor2 = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Combobox\\n          multiple\\n          autoHighlight\\n          items={frameworks}\\n          defaultValue={[frameworks[0], frameworks[1]]}\\n        >\\n          <ComboboxChips ref={anchor1}>\\n            <ComboboxValue>\\n              {(values) => (\\n                <React.Fragment>\\n                  {values.map((value: string) => (\\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\\n                  ))}\\n                  <ComboboxChipsInput aria-invalid=\\\"true\\\" />\\n                </React.Fragment>\\n              )}\\n            </ComboboxValue>\\n          </ComboboxChips>\\n          <ComboboxContent anchor={anchor1}>\\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\\n            <ComboboxList>\\n              {(item) => (\\n                <ComboboxItem key={item} value={item}>\\n                  {item}\\n                </ComboboxItem>\\n              )}\\n            </ComboboxList>\\n          </ComboboxContent>\\n        </Combobox>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"combobox-multiple-invalid\\\">\\n            Frameworks\\n          </FieldLabel>\\n          <Combobox\\n            multiple\\n            autoHighlight\\n            items={frameworks}\\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\\n          >\\n            <ComboboxChips ref={anchor2}>\\n              <ComboboxValue>\\n                {(values) => (\\n                  <React.Fragment>\\n                    {values.map((value: string) => (\\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\\n                    ))}\\n                    <ComboboxChipsInput\\n                      id=\\\"combobox-multiple-invalid\\\"\\n                      aria-invalid\\n                    />\\n                  </React.Fragment>\\n                )}\\n              </ComboboxValue>\\n            </ComboboxChips>\\n            <ComboboxContent anchor={anchor2}>\\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\\n              <ComboboxList>\\n                {(item) => (\\n                  <ComboboxItem key={item} value={item}>\\n                    {item}\\n                  </ComboboxItem>\\n                )}\\n              </ComboboxList>\\n            </ComboboxContent>\\n          </Combobox>\\n          <FieldDescription>\\n            Please select at least one framework.\\n          </FieldDescription>\\n          <FieldError errors={[{ message: \\\"This field is required.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxMultipleNoRemove() {\\n  const anchor = useComboboxAnchor()\\n\\n  return (\\n    <Example title=\\\"Combobox Multiple (No Remove)\\\">\\n      <Combobox\\n        multiple\\n        autoHighlight\\n        items={frameworks}\\n        defaultValue={[frameworks[0], frameworks[1]]}\\n      >\\n        <ComboboxChips ref={anchor}>\\n          <ComboboxValue>\\n            {(values) => (\\n              <React.Fragment>\\n                {values.map((value: string) => (\\n                  <ComboboxChip key={value} showRemove={false}>\\n                    {value}\\n                  </ComboboxChip>\\n                ))}\\n                <ComboboxChipsInput />\\n              </React.Fragment>\\n            )}\\n          </ComboboxValue>\\n        </ComboboxChips>\\n        <ComboboxContent anchor={anchor}>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithCustomItems() {\\n  return (\\n    <Example title=\\\"With Custom Item Rendering\\\">\\n      <Combobox\\n        items={countries.filter((country) => country.code !== \\\"\\\")}\\n        itemToStringValue={(country: (typeof countries)[number]) =>\\n          country.label\\n        }\\n      >\\n        <ComboboxInput placeholder=\\\"Search countries...\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(country) => (\\n              <ComboboxItem key={country.code} value={country}>\\n                <Item size=\\\"xs\\\" className=\\\"p-0\\\">\\n                  <ItemContent>\\n                    <ItemTitle className=\\\"whitespace-nowrap\\\">\\n                      {country.label}\\n                    </ItemTitle>\\n                    <ItemDescription>\\n                      {country.continent} ({country.code})\\n                    </ItemDescription>\\n                  </ItemContent>\\n                </Item>\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxInDialog() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Combobox in Dialog\\\">\\n      <Dialog open={open} onOpenChange={setOpen} modal={false}>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[425px]\\\">\\n          <DialogHeader>\\n            <DialogTitle>Select Framework</DialogTitle>\\n            <DialogDescription>\\n              Choose your preferred framework from the list below.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"framework-dialog\\\" className=\\\"sr-only\\\">\\n              Framework\\n            </FieldLabel>\\n            <Combobox items={frameworks}>\\n              <ComboboxInput\\n                id=\\\"framework-dialog\\\"\\n                placeholder=\\\"Select a framework\\\"\\n              />\\n              <ComboboxContent>\\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\\n                <ComboboxList>\\n                  {(item) => (\\n                    <ComboboxItem key={item} value={item}>\\n                      {item}\\n                    </ComboboxItem>\\n                  )}\\n                </ComboboxList>\\n              </ComboboxContent>\\n            </Combobox>\\n          </Field>\\n          <DialogFooter>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              onClick={() => {\\n                toast(\\\"Framework selected.\\\")\\n                setOpen(false)\\n              }}\\n            >\\n              Confirm\\n            </Button>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ComboboxWithOtherInputs() {\\n  return (\\n    <Example title=\\\"With Other Inputs\\\">\\n      <Combobox items={frameworks}>\\n        <ComboboxInput placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n        <ComboboxContent>\\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\\n          <ComboboxList>\\n            {(item) => (\\n              <ComboboxItem key={item} value={item}>\\n                {item}\\n              </ComboboxItem>\\n            )}\\n          </ComboboxList>\\n        </ComboboxContent>\\n      </Combobox>\\n      <Select>\\n        <SelectTrigger className=\\\"w-52\\\">\\n          <SelectValue placeholder=\\\"Select a framework\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {frameworks.map((framework) => (\\n              <SelectItem key={framework} value={framework}>\\n                {framework}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n      <Button\\n        variant=\\\"outline\\\"\\n        className=\\\"w-52 justify-between font-normal text-muted-foreground\\\"\\n      >\\n        Select a framework\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n        />\\n      </Button>\\n      <Input placeholder=\\\"Select a framework\\\" className=\\\"w-52\\\" />\\n      <InputGroup className=\\\"w-52\\\">\\n        <InputGroupInput placeholder=\\\"Select a framework\\\" />\\n        <InputGroupAddon align=\\\"inline-end\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ChevronDownIcon\\\"\\n            tabler=\\\"IconSelector\\\"\\n            hugeicons=\\\"UnfoldMoreIcon\\\"\\n            phosphor=\\\"CaretDownIcon\\\"\\n            remixicon=\\\"RiArrowDownSLine\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/combobox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"combobox\",\n  \"dependencies\": [\n    \"@base-ui/react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/combobox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Combobox as ComboboxPrimitive } from \\\"@base-ui/react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Combobox = ComboboxPrimitive.Root\\n\\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\\n  return <ComboboxPrimitive.Value data-slot=\\\"combobox-value\\\" {...props} />\\n}\\n\\nfunction ComboboxTrigger({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Trigger.Props) {\\n  return (\\n    <ComboboxPrimitive.Trigger\\n      data-slot=\\\"combobox-trigger\\\"\\n      className={cn(\\\"[&_svg:not([class*='size-'])]:size-4\\\", className)}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n      />\\n    </ComboboxPrimitive.Trigger>\\n  )\\n}\\n\\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\\n  return (\\n    <ComboboxPrimitive.Clear\\n      data-slot=\\\"combobox-clear\\\"\\n      render={<InputGroupButton variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n      className={cn(className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"XIcon\\\"\\n        tabler=\\\"IconX\\\"\\n        hugeicons=\\\"Cancel01Icon\\\"\\n        phosphor=\\\"XIcon\\\"\\n        remixicon=\\\"RiCloseLine\\\"\\n        className=\\\"pointer-events-none\\\"\\n      />\\n    </ComboboxPrimitive.Clear>\\n  )\\n}\\n\\nfunction ComboboxInput({\\n  className,\\n  children,\\n  disabled = false,\\n  showTrigger = true,\\n  showClear = false,\\n  ...props\\n}: ComboboxPrimitive.Input.Props & {\\n  showTrigger?: boolean\\n  showClear?: boolean\\n}) {\\n  return (\\n    <InputGroup className={cn(\\\"w-auto\\\", className)}>\\n      <ComboboxPrimitive.Input\\n        render={<InputGroupInput disabled={disabled} />}\\n        {...props}\\n      />\\n      <InputGroupAddon align=\\\"inline-end\\\">\\n        {showTrigger && (\\n          <InputGroupButton\\n            size=\\\"icon-xs\\\"\\n            variant=\\\"ghost\\\"\\n            asChild\\n            data-slot=\\\"input-group-button\\\"\\n            className=\\\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\\\"\\n            disabled={disabled}\\n          >\\n            <ComboboxTrigger />\\n          </InputGroupButton>\\n        )}\\n        {showClear && <ComboboxClear disabled={disabled} />}\\n      </InputGroupAddon>\\n      {children}\\n    </InputGroup>\\n  )\\n}\\n\\nfunction ComboboxContent({\\n  className,\\n  side = \\\"bottom\\\",\\n  sideOffset = 6,\\n  align = \\\"start\\\",\\n  alignOffset = 0,\\n  anchor,\\n  ...props\\n}: ComboboxPrimitive.Popup.Props &\\n  Pick<\\n    ComboboxPrimitive.Positioner.Props,\\n    \\\"side\\\" | \\\"align\\\" | \\\"sideOffset\\\" | \\\"alignOffset\\\" | \\\"anchor\\\"\\n  >) {\\n  return (\\n    <ComboboxPrimitive.Portal>\\n      <ComboboxPrimitive.Positioner\\n        side={side}\\n        sideOffset={sideOffset}\\n        align={align}\\n        alignOffset={alignOffset}\\n        anchor={anchor}\\n        className=\\\"isolate z-50\\\"\\n      >\\n        <ComboboxPrimitive.Popup\\n          data-slot=\\\"combobox-content\\\"\\n          data-chips={!!anchor}\\n          className={cn(\\n            \\\"cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n      </ComboboxPrimitive.Positioner>\\n    </ComboboxPrimitive.Portal>\\n  )\\n}\\n\\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\\n  return (\\n    <ComboboxPrimitive.List\\n      data-slot=\\\"combobox-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxItem({\\n  className,\\n  children,\\n  ...props\\n}: ComboboxPrimitive.Item.Props) {\\n  return (\\n    <ComboboxPrimitive.Item\\n      data-slot=\\\"combobox-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <ComboboxPrimitive.ItemIndicator\\n        render={\\n          <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\" />\\n        }\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n          className=\\\"pointer-events-none\\\"\\n        />\\n      </ComboboxPrimitive.ItemIndicator>\\n    </ComboboxPrimitive.Item>\\n  )\\n}\\n\\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\\n  return (\\n    <ComboboxPrimitive.Group\\n      data-slot=\\\"combobox-group\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxLabel({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.GroupLabel.Props) {\\n  return (\\n    <ComboboxPrimitive.GroupLabel\\n      data-slot=\\\"combobox-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\\n  return (\\n    <ComboboxPrimitive.Collection data-slot=\\\"combobox-collection\\\" {...props} />\\n  )\\n}\\n\\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\\n  return (\\n    <ComboboxPrimitive.Empty\\n      data-slot=\\\"combobox-empty\\\"\\n      className={cn(\\n        \\\"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxSeparator({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Separator.Props) {\\n  return (\\n    <ComboboxPrimitive.Separator\\n      data-slot=\\\"combobox-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChips({\\n  className,\\n  ...props\\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\\n  ComboboxPrimitive.Chips.Props) {\\n  return (\\n    <ComboboxPrimitive.Chips\\n      data-slot=\\\"combobox-chips\\\"\\n      className={cn(\\n        \\\"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ComboboxChip({\\n  className,\\n  children,\\n  showRemove = true,\\n  ...props\\n}: ComboboxPrimitive.Chip.Props & {\\n  showRemove?: boolean\\n}) {\\n  return (\\n    <ComboboxPrimitive.Chip\\n      data-slot=\\\"combobox-chip\\\"\\n      className={cn(\\n        \\\"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showRemove && (\\n        <ComboboxPrimitive.ChipRemove\\n          render={<Button variant=\\\"ghost\\\" size=\\\"icon-xs\\\" />}\\n          className=\\\"-ml-1 opacity-50 hover:opacity-100\\\"\\n          data-slot=\\\"combobox-chip-remove\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"XIcon\\\"\\n            tabler=\\\"IconX\\\"\\n            hugeicons=\\\"Cancel01Icon\\\"\\n            phosphor=\\\"XIcon\\\"\\n            remixicon=\\\"RiCloseLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </ComboboxPrimitive.ChipRemove>\\n      )}\\n    </ComboboxPrimitive.Chip>\\n  )\\n}\\n\\nfunction ComboboxChipsInput({\\n  className,\\n  ...props\\n}: ComboboxPrimitive.Input.Props) {\\n  return (\\n    <ComboboxPrimitive.Input\\n      data-slot=\\\"combobox-chip-input\\\"\\n      className={cn(\\\"min-w-16 flex-1 outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction useComboboxAnchor() {\\n  return React.useRef<HTMLDivElement | null>(null)\\n}\\n\\nexport {\\n  Combobox,\\n  ComboboxInput,\\n  ComboboxContent,\\n  ComboboxList,\\n  ComboboxItem,\\n  ComboboxGroup,\\n  ComboboxLabel,\\n  ComboboxCollection,\\n  ComboboxEmpty,\\n  ComboboxSeparator,\\n  ComboboxChips,\\n  ComboboxChip,\\n  ComboboxChipsInput,\\n  ComboboxTrigger,\\n  ComboboxValue,\\n  useComboboxAnchor,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n      \"api\": \"https://base-ui.com/react/components/combobox\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/command-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command-example\",\n  \"title\": \"Command\",\n  \"registryDependencies\": [\n    \"button\",\n    \"command\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/command-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Command,\\n  CommandDialog,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandInput,\\n  CommandItem,\\n  CommandList,\\n  CommandSeparator,\\n  CommandShortcut,\\n} from \\\"@/registry/radix-vega/ui/command\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function CommandExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CommandInline />\\n      <CommandBasic />\\n      <CommandWithShortcuts />\\n      <CommandWithGroups />\\n      <CommandManyItems />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CommandInline() {\\n  return (\\n    <Example title=\\\"Inline\\\">\\n      <Card className=\\\"w-full p-0\\\">\\n        <CardContent className=\\\"p-0\\\">\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandBasic() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>Calendar</CommandItem>\\n                <CommandItem>Search Emoji</CommandItem>\\n                <CommandItem>Calculator</CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithShortcuts() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandWithGroups() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Suggestions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SmileIcon\\\"\\n                    tabler=\\\"IconMoodSmile\\\"\\n                    hugeicons=\\\"SmileIcon\\\"\\n                    phosphor=\\\"SmileyIcon\\\"\\n                    remixicon=\\\"RiEmotionLine\\\"\\n                  />\\n                  <span>Search Emoji</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Settings\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction CommandManyItems() {\\n  const [open, setOpen] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"Many Groups & Items\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Button\\n          onClick={() => setOpen(true)}\\n          variant=\\\"outline\\\"\\n          className=\\\"w-fit\\\"\\n        >\\n          Open Menu\\n        </Button>\\n        <CommandDialog open={open} onOpenChange={setOpen}>\\n          <Command>\\n            <CommandInput placeholder=\\\"Type a command or search...\\\" />\\n            <CommandList>\\n              <CommandEmpty>No results found.</CommandEmpty>\\n              <CommandGroup heading=\\\"Navigation\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HomeIcon\\\"\\n                    tabler=\\\"IconHome\\\"\\n                    hugeicons=\\\"HomeIcon\\\"\\n                    phosphor=\\\"HouseIcon\\\"\\n                    remixicon=\\\"RiHomeLine\\\"\\n                  />\\n                  <span>Home</span>\\n                  <CommandShortcut>⌘H</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"InboxIcon\\\"\\n                    tabler=\\\"IconInbox\\\"\\n                    hugeicons=\\\"InboxIcon\\\"\\n                    phosphor=\\\"TrayIcon\\\"\\n                    remixicon=\\\"RiInboxLine\\\"\\n                  />\\n                  <span>Inbox</span>\\n                  <CommandShortcut>⌘I</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FileTextIcon\\\"\\n                    tabler=\\\"IconFileText\\\"\\n                    hugeicons=\\\"File02Icon\\\"\\n                    phosphor=\\\"FileTextIcon\\\"\\n                    remixicon=\\\"RiFileTextLine\\\"\\n                  />\\n                  <span>Documents</span>\\n                  <CommandShortcut>⌘D</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Folders</span>\\n                  <CommandShortcut>⌘F</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Actions\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                  <span>New File</span>\\n                  <CommandShortcut>⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderPlusIcon\\\"\\n                    tabler=\\\"IconFolderPlus\\\"\\n                    hugeicons=\\\"FolderAddIcon\\\"\\n                    phosphor=\\\"FolderPlusIcon\\\"\\n                    remixicon=\\\"RiFolderAddLine\\\"\\n                  />\\n                  <span>New Folder</span>\\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  <span>Copy</span>\\n                  <CommandShortcut>⌘C</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  <span>Cut</span>\\n                  <CommandShortcut>⌘X</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  <span>Paste</span>\\n                  <CommandShortcut>⌘V</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                  <CommandShortcut>⌫</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"View\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LayoutGridIcon\\\"\\n                    tabler=\\\"IconLayoutGrid\\\"\\n                    hugeicons=\\\"GridIcon\\\"\\n                    phosphor=\\\"GridFourIcon\\\"\\n                    remixicon=\\\"RiGridLine\\\"\\n                  />\\n                  <span>Grid View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ListIcon\\\"\\n                    tabler=\\\"IconList\\\"\\n                    hugeicons=\\\"Menu05Icon\\\"\\n                    phosphor=\\\"ListIcon\\\"\\n                    remixicon=\\\"RiListUnordered\\\"\\n                  />\\n                  <span>List View</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomInIcon\\\"\\n                    tabler=\\\"IconZoomIn\\\"\\n                    hugeicons=\\\"ZoomInAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassMinusIcon\\\"\\n                    remixicon=\\\"RiSearchEyeLine\\\"\\n                  />\\n                  <span>Zoom In</span>\\n                  <CommandShortcut>⌘+</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ZoomOutIcon\\\"\\n                    tabler=\\\"IconZoomOut\\\"\\n                    hugeicons=\\\"ZoomOutAreaIcon\\\"\\n                    phosphor=\\\"MagnifyingGlassPlusIcon\\\"\\n                    remixicon=\\\"RiZoomInLine\\\"\\n                  />\\n                  <span>Zoom Out</span>\\n                  <CommandShortcut>⌘-</CommandShortcut>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Account\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"UserIcon\\\"\\n                    tabler=\\\"IconUser\\\"\\n                    hugeicons=\\\"UserIcon\\\"\\n                    phosphor=\\\"UserIcon\\\"\\n                    remixicon=\\\"RiUserLine\\\"\\n                  />\\n                  <span>Profile</span>\\n                  <CommandShortcut>⌘P</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CreditCardIcon\\\"\\n                    tabler=\\\"IconCreditCard\\\"\\n                    hugeicons=\\\"CreditCardIcon\\\"\\n                    phosphor=\\\"CreditCardIcon\\\"\\n                    remixicon=\\\"RiBankCardLine\\\"\\n                  />\\n                  <span>Billing</span>\\n                  <CommandShortcut>⌘B</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"SettingsIcon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                  <span>Settings</span>\\n                  <CommandShortcut>⌘S</CommandShortcut>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"BellIcon\\\"\\n                    tabler=\\\"IconBell\\\"\\n                    hugeicons=\\\"NotificationIcon\\\"\\n                    phosphor=\\\"BellIcon\\\"\\n                    remixicon=\\\"RiNotificationLine\\\"\\n                  />\\n                  <span>Notifications</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"HelpCircleIcon\\\"\\n                    tabler=\\\"IconHelpCircle\\\"\\n                    hugeicons=\\\"HelpCircleIcon\\\"\\n                    phosphor=\\\"QuestionIcon\\\"\\n                    remixicon=\\\"RiQuestionLine\\\"\\n                  />\\n                  <span>Help & Support</span>\\n                </CommandItem>\\n              </CommandGroup>\\n              <CommandSeparator />\\n              <CommandGroup heading=\\\"Tools\\\">\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalculatorIcon\\\"\\n                    tabler=\\\"IconCalculator\\\"\\n                    hugeicons=\\\"CalculatorIcon\\\"\\n                    phosphor=\\\"CalculatorIcon\\\"\\n                    remixicon=\\\"RiCalculatorLine\\\"\\n                  />\\n                  <span>Calculator</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CalendarIcon\\\"\\n                    tabler=\\\"IconCalendar\\\"\\n                    hugeicons=\\\"CalendarIcon\\\"\\n                    phosphor=\\\"CalendarBlankIcon\\\"\\n                    remixicon=\\\"RiCalendarLine\\\"\\n                  />\\n                  <span>Calendar</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ImageIcon\\\"\\n                    tabler=\\\"IconPhoto\\\"\\n                    hugeicons=\\\"ImageIcon\\\"\\n                    phosphor=\\\"ImageIcon\\\"\\n                    remixicon=\\\"RiImageLine\\\"\\n                  />\\n                  <span>Image Editor</span>\\n                </CommandItem>\\n                <CommandItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CodeIcon\\\"\\n                    tabler=\\\"IconCode\\\"\\n                    hugeicons=\\\"CodeIcon\\\"\\n                    phosphor=\\\"CodeIcon\\\"\\n                    remixicon=\\\"RiCodeLine\\\"\\n                  />\\n                  <span>Code Editor</span>\\n                </CommandItem>\\n              </CommandGroup>\\n            </CommandList>\\n          </Command>\\n        </CommandDialog>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/command.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"command\",\n  \"dependencies\": [\n    \"cmdk\"\n  ],\n  \"registryDependencies\": [\n    \"dialog\",\n    \"input-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/command.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Command as CommandPrimitive } from \\\"cmdk\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Command({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive>) {\\n  return (\\n    <CommandPrimitive\\n      data-slot=\\\"command\\\"\\n      className={cn(\\n        \\\"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandDialog({\\n  title = \\\"Command Palette\\\",\\n  description = \\\"Search for a command to run...\\\",\\n  children,\\n  className,\\n  showCloseButton = false,\\n  ...props\\n}: React.ComponentProps<typeof Dialog> & {\\n  title?: string\\n  description?: string\\n  className?: string\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <Dialog {...props}>\\n      <DialogHeader className=\\\"sr-only\\\">\\n        <DialogTitle>{title}</DialogTitle>\\n        <DialogDescription>{description}</DialogDescription>\\n      </DialogHeader>\\n      <DialogContent\\n        className={cn(\\n          \\\"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\\\",\\n          className\\n        )}\\n        showCloseButton={showCloseButton}\\n      >\\n        {children}\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\\nfunction CommandInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\\n  return (\\n    <div data-slot=\\\"command-input-wrapper\\\" className=\\\"p-1 pb-0\\\">\\n      <InputGroup className=\\\"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\\\">\\n        <CommandPrimitive.Input\\n          data-slot=\\\"command-input\\\"\\n          className={cn(\\n            \\\"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\\\",\\n            className\\n          )}\\n          {...props}\\n        />\\n        <InputGroupAddon>\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"size-4 shrink-0 opacity-50\\\"\\n          />\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </div>\\n  )\\n}\\n\\nfunction CommandList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\\n  return (\\n    <CommandPrimitive.List\\n      data-slot=\\\"command-list\\\"\\n      className={cn(\\n        \\\"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandEmpty({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\\n  return (\\n    <CommandPrimitive.Empty\\n      data-slot=\\\"command-empty\\\"\\n      className={cn(\\\"py-6 text-center text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\\n  return (\\n    <CommandPrimitive.Group\\n      data-slot=\\\"command-group\\\"\\n      className={cn(\\n        \\\"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\\n  return (\\n    <CommandPrimitive.Separator\\n      data-slot=\\\"command-separator\\\"\\n      className={cn(\\\"-mx-1 h-px w-auto bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction CommandItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\\n  return (\\n    <CommandPrimitive.Item\\n      data-slot=\\\"command-item\\\"\\n      className={cn(\\n        \\\"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:**:[svg]:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"CheckIcon\\\"\\n        tabler=\\\"IconCheck\\\"\\n        hugeicons=\\\"Tick02Icon\\\"\\n        phosphor=\\\"CheckIcon\\\"\\n        remixicon=\\\"RiCheckLine\\\"\\n        className=\\\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\\\"\\n      />\\n    </CommandPrimitive.Item>\\n  )\\n}\\n\\nfunction CommandShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"command-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Command,\\n  CommandDialog,\\n  CommandInput,\\n  CommandList,\\n  CommandEmpty,\\n  CommandGroup,\\n  CommandItem,\\n  CommandShortcut,\\n  CommandSeparator,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n      \"api\": \"https://github.com/dip/cmdk\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/component-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"component-example\",\n  \"title\": \"Example\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/component-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogMedia,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Combobox,\\n  ComboboxContent,\\n  ComboboxEmpty,\\n  ComboboxInput,\\n  ComboboxItem,\\n  ComboboxList,\\n} from \\\"@/registry/radix-vega/ui/combobox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function ComponentExample() {\\n  return (\\n    <ExampleWrapper>\\n      <CardExample />\\n      <FormExample />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction CardExample() {\\n  return (\\n    <Example title=\\\"Card\\\" className=\\\"items-center justify-center\\\">\\n      <Card className=\\\"relative w-full max-w-sm overflow-hidden pt-0\\\">\\n        <div className=\\\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\\\" />\\n        <img\\n          src=\\\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\\\"\\n          alt=\\\"Photo by mymind on Unsplash\\\"\\n          title=\\\"Photo by mymind on Unsplash\\\"\\n          className=\\\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\\\"\\n        />\\n        <CardHeader>\\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\\n          <CardDescription>\\n            Switch to the improved way to explore your data, with natural\\n            language. Monitoring will no longer be available on the Pro plan in\\n            November, 2025\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <AlertDialog>\\n            <AlertDialogTrigger asChild>\\n              <Button>\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Show Dialog\\n              </Button>\\n            </AlertDialogTrigger>\\n            <AlertDialogContent size=\\\"sm\\\">\\n              <AlertDialogHeader>\\n                <AlertDialogMedia>\\n                  <IconPlaceholder\\n                    lucide=\\\"BluetoothIcon\\\"\\n                    tabler=\\\"IconBluetooth\\\"\\n                    hugeicons=\\\"BluetoothIcon\\\"\\n                    phosphor=\\\"BluetoothIcon\\\"\\n                    remixicon=\\\"RiBluetoothLine\\\"\\n                  />\\n                </AlertDialogMedia>\\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\\n                <AlertDialogDescription>\\n                  Do you want to allow the USB accessory to connect to this\\n                  device?\\n                </AlertDialogDescription>\\n              </AlertDialogHeader>\\n              <AlertDialogFooter>\\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                <AlertDialogAction>Allow</AlertDialogAction>\\n              </AlertDialogFooter>\\n            </AlertDialogContent>\\n          </AlertDialog>\\n          <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n            Warning\\n          </Badge>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nconst frameworks = [\\n  \\\"Next.js\\\",\\n  \\\"SvelteKit\\\",\\n  \\\"Nuxt.js\\\",\\n  \\\"Remix\\\",\\n  \\\"Astro\\\",\\n] as const\\n\\nfunction FormExample() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"w-full max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>User Information</CardTitle>\\n          <CardDescription>Please fill in your details below</CardDescription>\\n          <CardAction>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreVerticalIcon\\\"\\n                    tabler=\\\"IconDotsVertical\\\"\\n                    hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                    remixicon=\\\"RiMore2Line\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More options</span>\\n                </Button>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent align=\\\"end\\\" className=\\\"w-56\\\">\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    New File\\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FolderIcon\\\"\\n                      tabler=\\\"IconFolder\\\"\\n                      hugeicons=\\\"FolderIcon\\\"\\n                      phosphor=\\\"FolderIcon\\\"\\n                      remixicon=\\\"RiFolderLine\\\"\\n                    />\\n                    New Folder\\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderOpenIcon\\\"\\n                        tabler=\\\"IconFolderOpen\\\"\\n                        hugeicons=\\\"FolderOpenIcon\\\"\\n                        phosphor=\\\"FolderOpenIcon\\\"\\n                        remixicon=\\\"RiFolderOpenLine\\\"\\n                      />\\n                      Open Recent\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Alpha\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Beta\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"MoreHorizontalIcon\\\"\\n                                tabler=\\\"IconDots\\\"\\n                                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                                remixicon=\\\"RiMoreLine\\\"\\n                              />\\n                              More Projects\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Gamma\\n                                </DropdownMenuItem>\\n                                <DropdownMenuItem>\\n                                  <IconPlaceholder\\n                                    lucide=\\\"FileCodeIcon\\\"\\n                                    tabler=\\\"IconFileCode\\\"\\n                                    hugeicons=\\\"CodeIcon\\\"\\n                                    phosphor=\\\"CodeIcon\\\"\\n                                    remixicon=\\\"RiCodeLine\\\"\\n                                  />\\n                                  Project Delta\\n                                </DropdownMenuItem>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FolderSearchIcon\\\"\\n                              tabler=\\\"IconFolderSearch\\\"\\n                              hugeicons=\\\"SearchIcon\\\"\\n                              phosphor=\\\"MagnifyingGlassIcon\\\"\\n                              remixicon=\\\"RiSearchLine\\\"\\n                            />\\n                            Browse...\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"SaveIcon\\\"\\n                      tabler=\\\"IconDeviceFloppy\\\"\\n                      hugeicons=\\\"FloppyDiskIcon\\\"\\n                      phosphor=\\\"FloppyDiskIcon\\\"\\n                      remixicon=\\\"RiSaveLine\\\"\\n                    />\\n                    Save\\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"DownloadIcon\\\"\\n                      tabler=\\\"IconDownload\\\"\\n                      hugeicons=\\\"DownloadIcon\\\"\\n                      phosphor=\\\"DownloadIcon\\\"\\n                      remixicon=\\\"RiDownloadLine\\\"\\n                    />\\n                    Export\\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.email}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        email: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"EyeIcon\\\"\\n                      tabler=\\\"IconEye\\\"\\n                      hugeicons=\\\"EyeIcon\\\"\\n                      phosphor=\\\"EyeIcon\\\"\\n                      remixicon=\\\"RiEyeLine\\\"\\n                    />\\n                    Show Sidebar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuCheckboxItem\\n                    checked={notifications.sms}\\n                    onCheckedChange={(checked) =>\\n                      setNotifications({\\n                        ...notifications,\\n                        sms: checked === true,\\n                      })\\n                    }\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"LayoutIcon\\\"\\n                      tabler=\\\"IconLayout\\\"\\n                      hugeicons=\\\"LayoutIcon\\\"\\n                      phosphor=\\\"LayoutIcon\\\"\\n                      remixicon=\\\"RiLayoutLine\\\"\\n                    />\\n                    Show Status Bar\\n                  </DropdownMenuCheckboxItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"PaletteIcon\\\"\\n                        tabler=\\\"IconPalette\\\"\\n                        hugeicons=\\\"PaintBoardIcon\\\"\\n                        phosphor=\\\"PaletteIcon\\\"\\n                        remixicon=\\\"RiPaletteLine\\\"\\n                      />\\n                      Theme\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                          <DropdownMenuRadioGroup\\n                            value={theme}\\n                            onValueChange={setTheme}\\n                          >\\n                            <DropdownMenuRadioItem value=\\\"light\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"SunIcon\\\"\\n                                tabler=\\\"IconSun\\\"\\n                                hugeicons=\\\"SunIcon\\\"\\n                                phosphor=\\\"SunIcon\\\"\\n                                remixicon=\\\"RiSunLine\\\"\\n                              />\\n                              Light\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"dark\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MoonIcon\\\"\\n                                tabler=\\\"IconMoon\\\"\\n                                hugeicons=\\\"MoonIcon\\\"\\n                                phosphor=\\\"MoonIcon\\\"\\n                                remixicon=\\\"RiMoonLine\\\"\\n                              />\\n                              Dark\\n                            </DropdownMenuRadioItem>\\n                            <DropdownMenuRadioItem value=\\\"system\\\">\\n                              <IconPlaceholder\\n                                lucide=\\\"MonitorIcon\\\"\\n                                tabler=\\\"IconDeviceDesktop\\\"\\n                                hugeicons=\\\"ComputerIcon\\\"\\n                                phosphor=\\\"MonitorIcon\\\"\\n                                remixicon=\\\"RiComputerLine\\\"\\n                              />\\n                              System\\n                            </DropdownMenuRadioItem>\\n                          </DropdownMenuRadioGroup>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"UserIcon\\\"\\n                      tabler=\\\"IconUser\\\"\\n                      hugeicons=\\\"UserIcon\\\"\\n                      phosphor=\\\"UserIcon\\\"\\n                      remixicon=\\\"RiUserLine\\\"\\n                    />\\n                    Profile\\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CreditCardIcon\\\"\\n                      tabler=\\\"IconCreditCard\\\"\\n                      hugeicons=\\\"CreditCardIcon\\\"\\n                      phosphor=\\\"CreditCardIcon\\\"\\n                      remixicon=\\\"RiBankCardLine\\\"\\n                    />\\n                    Billing\\n                  </DropdownMenuItem>\\n                  <DropdownMenuSub>\\n                    <DropdownMenuSubTrigger>\\n                      <IconPlaceholder\\n                        lucide=\\\"SettingsIcon\\\"\\n                        tabler=\\\"IconSettings\\\"\\n                        hugeicons=\\\"SettingsIcon\\\"\\n                        phosphor=\\\"GearIcon\\\"\\n                        remixicon=\\\"RiSettingsLine\\\"\\n                      />\\n                      Settings\\n                    </DropdownMenuSubTrigger>\\n                    <DropdownMenuPortal>\\n                      <DropdownMenuSubContent>\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"KeyboardIcon\\\"\\n                              tabler=\\\"IconKeyboard\\\"\\n                              hugeicons=\\\"KeyboardIcon\\\"\\n                              phosphor=\\\"KeyboardIcon\\\"\\n                              remixicon=\\\"RiKeyboardLine\\\"\\n                            />\\n                            Keyboard Shortcuts\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"LanguagesIcon\\\"\\n                              tabler=\\\"IconLanguage\\\"\\n                              hugeicons=\\\"LanguageCircleIcon\\\"\\n                              phosphor=\\\"TranslateIcon\\\"\\n                              remixicon=\\\"RiTranslate\\\"\\n                            />\\n                            Language\\n                          </DropdownMenuItem>\\n                          <DropdownMenuSub>\\n                            <DropdownMenuSubTrigger>\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Notifications\\n                            </DropdownMenuSubTrigger>\\n                            <DropdownMenuPortal>\\n                              <DropdownMenuSubContent>\\n                                <DropdownMenuGroup>\\n                                  <DropdownMenuLabel>\\n                                    Notification Types\\n                                  </DropdownMenuLabel>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.push}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        push: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"BellIcon\\\"\\n                                      tabler=\\\"IconBell\\\"\\n                                      hugeicons=\\\"NotificationIcon\\\"\\n                                      phosphor=\\\"BellIcon\\\"\\n                                      remixicon=\\\"RiNotificationLine\\\"\\n                                    />\\n                                    Push Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                  <DropdownMenuCheckboxItem\\n                                    checked={notifications.email}\\n                                    onCheckedChange={(checked) =>\\n                                      setNotifications({\\n                                        ...notifications,\\n                                        email: checked === true,\\n                                      })\\n                                    }\\n                                  >\\n                                    <IconPlaceholder\\n                                      lucide=\\\"MailIcon\\\"\\n                                      tabler=\\\"IconMail\\\"\\n                                      hugeicons=\\\"MailIcon\\\"\\n                                      phosphor=\\\"EnvelopeIcon\\\"\\n                                      remixicon=\\\"RiMailLine\\\"\\n                                    />\\n                                    Email Notifications\\n                                  </DropdownMenuCheckboxItem>\\n                                </DropdownMenuGroup>\\n                              </DropdownMenuSubContent>\\n                            </DropdownMenuPortal>\\n                          </DropdownMenuSub>\\n                        </DropdownMenuGroup>\\n                        <DropdownMenuSeparator />\\n                        <DropdownMenuGroup>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"ShieldIcon\\\"\\n                              tabler=\\\"IconShield\\\"\\n                              hugeicons=\\\"ShieldIcon\\\"\\n                              phosphor=\\\"ShieldIcon\\\"\\n                              remixicon=\\\"RiShieldLine\\\"\\n                            />\\n                            Privacy & Security\\n                          </DropdownMenuItem>\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuSubContent>\\n                    </DropdownMenuPortal>\\n                  </DropdownMenuSub>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"HelpCircleIcon\\\"\\n                      tabler=\\\"IconHelpCircle\\\"\\n                      hugeicons=\\\"HelpCircleIcon\\\"\\n                      phosphor=\\\"QuestionIcon\\\"\\n                      remixicon=\\\"RiQuestionLine\\\"\\n                    />\\n                    Help & Support\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileTextIcon\\\"\\n                      tabler=\\\"IconFileText\\\"\\n                      hugeicons=\\\"File01Icon\\\"\\n                      phosphor=\\\"FileTextIcon\\\"\\n                      remixicon=\\\"RiFileTextLine\\\"\\n                    />\\n                    Documentation\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"LogOutIcon\\\"\\n                      tabler=\\\"IconLogout\\\"\\n                      hugeicons=\\\"LogoutIcon\\\"\\n                      phosphor=\\\"SignOutIcon\\\"\\n                      remixicon=\\\"RiLogoutBoxLine\\\"\\n                    />\\n                    Sign Out\\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n                  </DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </CardAction>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-name\\\">Name</FieldLabel>\\n                  <Input\\n                    id=\\\"small-form-name\\\"\\n                    placeholder=\\\"Enter your name\\\"\\n                    required\\n                  />\\n                </Field>\\n                <Field>\\n                  <FieldLabel htmlFor=\\\"small-form-role\\\">Role</FieldLabel>\\n                  <Select defaultValue=\\\"\\\">\\n                    <SelectTrigger id=\\\"small-form-role\\\">\\n                      <SelectValue placeholder=\\\"Select a role\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectGroup>\\n                        <SelectItem value=\\\"developer\\\">Developer</SelectItem>\\n                        <SelectItem value=\\\"designer\\\">Designer</SelectItem>\\n                        <SelectItem value=\\\"manager\\\">Manager</SelectItem>\\n                        <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      </SelectGroup>\\n                    </SelectContent>\\n                  </Select>\\n                </Field>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-framework\\\">\\n                  Framework\\n                </FieldLabel>\\n                <Combobox items={frameworks}>\\n                  <ComboboxInput\\n                    id=\\\"small-form-framework\\\"\\n                    placeholder=\\\"Select a framework\\\"\\n                    required\\n                  />\\n                  <ComboboxContent>\\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\\n                    <ComboboxList>\\n                      {(item) => (\\n                        <ComboboxItem key={item} value={item}>\\n                          {item}\\n                        </ComboboxItem>\\n                      )}\\n                    </ComboboxList>\\n                  </ComboboxContent>\\n                </Combobox>\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"small-form-comments\\\">Comments</FieldLabel>\\n                <Textarea\\n                  id=\\\"small-form-comments\\\"\\n                  placeholder=\\\"Add any additional comments\\\"\\n                />\\n              </Field>\\n              <Field orientation=\\\"horizontal\\\">\\n                <Button type=\\\"submit\\\">Submit</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Cancel\\n                </Button>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/context-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu-example\",\n  \"title\": \"Context Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"context-menu\",\n    \"dialog\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/context-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  ContextMenu,\\n  ContextMenuCheckboxItem,\\n  ContextMenuContent,\\n  ContextMenuGroup,\\n  ContextMenuItem,\\n  ContextMenuLabel,\\n  ContextMenuRadioGroup,\\n  ContextMenuRadioItem,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/context-menu\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ContextMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ContextMenuBasic />\\n      <ContextMenuWithSides />\\n      <ContextMenuWithIcons />\\n      <ContextMenuWithShortcuts />\\n      <ContextMenuWithSubmenu />\\n      <ContextMenuWithGroups />\\n      <ContextMenuWithCheckboxes />\\n      <ContextMenuWithRadio />\\n      <ContextMenuWithDestructive />\\n      <ContextMenuInDialog />\\n      <ContextMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ContextMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>Back</ContextMenuItem>\\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\\n            <ContextMenuItem>Reload</ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ClipboardPasteIcon\\\"\\n                tabler=\\\"IconClipboard\\\"\\n                hugeicons=\\\"ClipboardIcon\\\"\\n                phosphor=\\\"ClipboardIcon\\\"\\n                remixicon=\\\"RiClipboardLine\\\"\\n              />\\n              Paste\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Back\\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem disabled>\\n              Forward\\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Reload\\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save As...\\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                <ContextMenuItem>Name Window...</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">Delete</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups, Labels & Separators\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>File</ContextMenuLabel>\\n            <ContextMenuItem>\\n              New File\\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Open File\\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Save\\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Edit</ContextMenuLabel>\\n            <ContextMenuItem>\\n              Undo\\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Redo\\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuSeparator />\\n            <ContextMenuItem>\\n              Cut\\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Copy\\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              Paste\\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              Delete\\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithCheckboxes() {\\n  const [showBookmarksBar, setShowBookmarksBar] = React.useState(true)\\n  const [showFullUrls, setShowFullUrls] = React.useState(false)\\n  const [showDeveloperTools, setShowDeveloperTools] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuCheckboxItem\\n              checked={showBookmarksBar}\\n              onCheckedChange={setShowBookmarksBar}\\n            >\\n              Show Bookmarks Bar\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showFullUrls}\\n              onCheckedChange={setShowFullUrls}\\n            >\\n              Show Full URLs\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              checked={showDeveloperTools}\\n              onCheckedChange={setShowDeveloperTools}\\n            >\\n              Show Developer Tools\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithRadio() {\\n  const [user, setUser] = React.useState(\\\"pedro\\\")\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>People</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\\n              <ContextMenuRadioItem value=\\\"pedro\\\">\\n                Pedro Duarte\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"colm\\\">\\n                Colm Tuite\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem value=\\\"light\\\">Light</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"dark\\\">Dark</ContextMenuRadioItem>\\n              <ContextMenuRadioItem value=\\\"system\\\">System</ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent>\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </ContextMenuItem>\\n            <ContextMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </ContextMenuItem>\\n          </ContextMenuGroup>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithSides() {\\n  return (\\n    <Example title=\\\"With Sides\\\">\\n      <div className=\\\"grid grid-cols-2 gap-6\\\">\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (top)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"top\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (right)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"right\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (bottom)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"bottom\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n        <ContextMenu>\\n          <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n            Right click (left)\\n          </ContextMenuTrigger>\\n          <ContextMenuContent side=\\\"left\\\">\\n            <ContextMenuGroup>\\n              <ContextMenuItem>Back</ContextMenuItem>\\n              <ContextMenuItem>Forward</ContextMenuItem>\\n              <ContextMenuItem>Reload</ContextMenuItem>\\n            </ContextMenuGroup>\\n          </ContextMenuContent>\\n        </ContextMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Context Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Right click on the area below to see the context menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <ContextMenu>\\n            <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n              Right click here\\n            </ContextMenuTrigger>\\n            <ContextMenuContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </ContextMenuItem>\\n                <ContextMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n              <ContextMenuSeparator />\\n              <ContextMenuSub>\\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\\n                <ContextMenuSubContent>\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                  <ContextMenuSeparator />\\n                  <ContextMenuGroup>\\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\\n                  </ContextMenuGroup>\\n                </ContextMenuSubContent>\\n              </ContextMenuSub>\\n              <ContextMenuSeparator />\\n              <ContextMenuGroup>\\n                <ContextMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuContent>\\n          </ContextMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction ContextMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <ContextMenu>\\n        <ContextMenuTrigger className=\\\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\\\">\\n          Right click here\\n        </ContextMenuTrigger>\\n        <ContextMenuContent className=\\\"w-44\\\">\\n          <ContextMenuGroup>\\n            <ContextMenuLabel>Actions</ContextMenuLabel>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </ContextMenuItem>\\n            <ContextMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </ContextMenuItem>\\n            <ContextMenuItem inset>Paste</ContextMenuItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </ContextMenuCheckboxItem>\\n            <ContextMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </ContextMenuCheckboxItem>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuGroup>\\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <ContextMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </ContextMenuRadioItem>\\n              <ContextMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </ContextMenuRadioItem>\\n            </ContextMenuRadioGroup>\\n          </ContextMenuGroup>\\n          <ContextMenuSeparator />\\n          <ContextMenuSub>\\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\\n            <ContextMenuSubContent>\\n              <ContextMenuGroup>\\n                <ContextMenuItem>Save Page...</ContextMenuItem>\\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\\n              </ContextMenuGroup>\\n            </ContextMenuSubContent>\\n          </ContextMenuSub>\\n        </ContextMenuContent>\\n      </ContextMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ContextMenu as ContextMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction ContextMenu({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\\n  return <ContextMenuPrimitive.Root data-slot=\\\"context-menu\\\" {...props} />\\n}\\n\\nfunction ContextMenuTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\\n  return (\\n    <ContextMenuPrimitive.Trigger\\n      data-slot=\\\"context-menu-trigger\\\"\\n      className={cn(\\\"select-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\\n  return (\\n    <ContextMenuPrimitive.Group data-slot=\\\"context-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\\n  return (\\n    <ContextMenuPrimitive.Portal data-slot=\\\"context-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction ContextMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\\n  return <ContextMenuPrimitive.Sub data-slot=\\\"context-menu-sub\\\" {...props} />\\n}\\n\\nfunction ContextMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\\n  return (\\n    <ContextMenuPrimitive.RadioGroup\\n      data-slot=\\\"context-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Portal>\\n      <ContextMenuPrimitive.Content\\n        data-slot=\\\"context-menu-content\\\"\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </ContextMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction ContextMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Item\\n      data-slot=\\\"context-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/context-menu-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.SubTrigger\\n      data-slot=\\\"context-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </ContextMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction ContextMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\\n  return (\\n    <ContextMenuPrimitive.SubContent\\n      data-slot=\\\"context-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.CheckboxItem\\n      data-slot=\\\"context-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction ContextMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.RadioItem\\n      data-slot=\\\"context-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2\\\">\\n        <ContextMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </ContextMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </ContextMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction ContextMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <ContextMenuPrimitive.Label\\n      data-slot=\\\"context-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\\n  return (\\n    <ContextMenuPrimitive.Separator\\n      data-slot=\\\"context-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ContextMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"context-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  ContextMenu,\\n  ContextMenuTrigger,\\n  ContextMenuContent,\\n  ContextMenuItem,\\n  ContextMenuCheckboxItem,\\n  ContextMenuRadioItem,\\n  ContextMenuLabel,\\n  ContextMenuSeparator,\\n  ContextMenuShortcut,\\n  ContextMenuGroup,\\n  ContextMenuPortal,\\n  ContextMenuSub,\\n  ContextMenuSubContent,\\n  ContextMenuSubTrigger,\\n  ContextMenuRadioGroup,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/dashboard-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dashboard-01\",\n  \"title\": \"Dashboard 01\",\n  \"description\": \"A dashboard with sidebar, charts and data table.\",\n  \"dependencies\": [\n    \"@dnd-kit/core\",\n    \"@dnd-kit/modifiers\",\n    \"@dnd-kit/sortable\",\n    \"@dnd-kit/utilities\",\n    \"@tanstack/react-table\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"chart\",\n    \"card\",\n    \"select\",\n    \"tabs\",\n    \"table\",\n    \"toggle-group\",\n    \"badge\",\n    \"button\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"drawer\",\n    \"input\",\n    \"avatar\",\n    \"sheet\",\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/app-sidebar\\\"\\nimport { ChartAreaInteractive } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/chart-area-interactive\\\"\\nimport { DataTable } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/data-table\\\"\\nimport { SectionCards } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/section-cards\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nimport data from \\\"./data.json\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"calc(var(--spacing) * 72)\\\",\\n          \\\"--header-height\\\": \\\"calc(var(--spacing) * 12)\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar variant=\\\"inset\\\" />\\n      <SidebarInset>\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1 flex-col\\\">\\n          <div className=\\\"@container/main flex flex-1 flex-col gap-2\\\">\\n            <div className=\\\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\\\">\\n              <SectionCards />\\n              <div className=\\\"px-4 lg:px-6\\\">\\n                <ChartAreaInteractive />\\n              </div>\\n              <DataTable data={data} />\\n            </div>\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/data.json\",\n      \"content\": \"[\\n  {\\n    \\\"id\\\": 1,\\n    \\\"header\\\": \\\"Cover page\\\",\\n    \\\"type\\\": \\\"Cover page\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"5\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 2,\\n    \\\"header\\\": \\\"Table of contents\\\",\\n    \\\"type\\\": \\\"Table of contents\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 3,\\n    \\\"header\\\": \\\"Executive summary\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"10\\\",\\n    \\\"limit\\\": \\\"13\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 4,\\n    \\\"header\\\": \\\"Technical approach\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 5,\\n    \\\"header\\\": \\\"Design\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"2\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 6,\\n    \\\"header\\\": \\\"Capabilities\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"8\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 7,\\n    \\\"header\\\": \\\"Integration with existing systems\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 8,\\n    \\\"header\\\": \\\"Innovation and Advantages\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 9,\\n    \\\"header\\\": \\\"Overview of EMR's Innovative Solutions\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"7\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 10,\\n    \\\"header\\\": \\\"Advanced Algorithms and Machine Learning\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 11,\\n    \\\"header\\\": \\\"Adaptive Communication Protocols\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"9\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 12,\\n    \\\"header\\\": \\\"Advantages Over Current Technologies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"0\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 13,\\n    \\\"header\\\": \\\"Past Performance\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 14,\\n    \\\"header\\\": \\\"Customer Feedback and Satisfaction Levels\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"34\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 15,\\n    \\\"header\\\": \\\"Implementation Challenges and Solutions\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"3\\\",\\n    \\\"limit\\\": \\\"35\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 16,\\n    \\\"header\\\": \\\"Security Measures and Data Protection Policies\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"6\\\",\\n    \\\"limit\\\": \\\"36\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 17,\\n    \\\"header\\\": \\\"Scalability and Future Proofing\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"4\\\",\\n    \\\"limit\\\": \\\"37\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 18,\\n    \\\"header\\\": \\\"Cost-Benefit Analysis\\\",\\n    \\\"type\\\": \\\"Plain language\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"38\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 19,\\n    \\\"header\\\": \\\"User Training and Onboarding Experience\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"39\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 20,\\n    \\\"header\\\": \\\"Future Development Roadmap\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"40\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 21,\\n    \\\"header\\\": \\\"System Architecture Overview\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Maya Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 22,\\n    \\\"header\\\": \\\"Risk Management Plan\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Carlos Rodriguez\\\"\\n  },\\n  {\\n    \\\"id\\\": 23,\\n    \\\"header\\\": \\\"Compliance Documentation\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"31\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Sarah Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 24,\\n    \\\"header\\\": \\\"API Documentation\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"8\\\",\\n    \\\"limit\\\": \\\"12\\\",\\n    \\\"reviewer\\\": \\\"Raj Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 25,\\n    \\\"header\\\": \\\"User Interface Mockups\\\",\\n    \\\"type\\\": \\\"Visual\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Leila Ahmadi\\\"\\n  },\\n  {\\n    \\\"id\\\": 26,\\n    \\\"header\\\": \\\"Database Schema\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Thomas Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 27,\\n    \\\"header\\\": \\\"Testing Methodology\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 28,\\n    \\\"header\\\": \\\"Deployment Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 29,\\n    \\\"header\\\": \\\"Budget Breakdown\\\",\\n    \\\"type\\\": \\\"Financial\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 30,\\n    \\\"header\\\": \\\"Market Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Sophia Martinez\\\"\\n  },\\n  {\\n    \\\"id\\\": 31,\\n    \\\"header\\\": \\\"Competitor Comparison\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 32,\\n    \\\"header\\\": \\\"Maintenance Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Alex Thompson\\\"\\n  },\\n  {\\n    \\\"id\\\": 33,\\n    \\\"header\\\": \\\"User Personas\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Nina Patel\\\"\\n  },\\n  {\\n    \\\"id\\\": 34,\\n    \\\"header\\\": \\\"Accessibility Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 35,\\n    \\\"header\\\": \\\"Performance Metrics\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"David Kim\\\"\\n  },\\n  {\\n    \\\"id\\\": 36,\\n    \\\"header\\\": \\\"Disaster Recovery Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 37,\\n    \\\"header\\\": \\\"Third-party Integrations\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 38,\\n    \\\"header\\\": \\\"User Feedback Summary\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 39,\\n    \\\"header\\\": \\\"Localization Strategy\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Maria Garcia\\\"\\n  },\\n  {\\n    \\\"id\\\": 40,\\n    \\\"header\\\": \\\"Mobile Compatibility\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"James Wilson\\\"\\n  },\\n  {\\n    \\\"id\\\": 41,\\n    \\\"header\\\": \\\"Data Migration Plan\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 42,\\n    \\\"header\\\": \\\"Quality Assurance Protocols\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Priya Singh\\\"\\n  },\\n  {\\n    \\\"id\\\": 43,\\n    \\\"header\\\": \\\"Stakeholder Analysis\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"11\\\",\\n    \\\"limit\\\": \\\"14\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 44,\\n    \\\"header\\\": \\\"Environmental Impact Assessment\\\",\\n    \\\"type\\\": \\\"Research\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 45,\\n    \\\"header\\\": \\\"Intellectual Property Rights\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"17\\\",\\n    \\\"limit\\\": \\\"20\\\",\\n    \\\"reviewer\\\": \\\"Sarah Johnson\\\"\\n  },\\n  {\\n    \\\"id\\\": 46,\\n    \\\"header\\\": \\\"Customer Support Framework\\\",\\n    \\\"type\\\": \\\"Narrative\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 47,\\n    \\\"header\\\": \\\"Version Control Strategy\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 48,\\n    \\\"header\\\": \\\"Continuous Integration Pipeline\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Michael Chen\\\"\\n  },\\n  {\\n    \\\"id\\\": 49,\\n    \\\"header\\\": \\\"Regulatory Compliance\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"13\\\",\\n    \\\"limit\\\": \\\"16\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 50,\\n    \\\"header\\\": \\\"User Authentication System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"28\\\",\\n    \\\"limit\\\": \\\"31\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 51,\\n    \\\"header\\\": \\\"Data Analytics Framework\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 52,\\n    \\\"header\\\": \\\"Cloud Infrastructure\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"16\\\",\\n    \\\"limit\\\": \\\"19\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 53,\\n    \\\"header\\\": \\\"Network Security Measures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"29\\\",\\n    \\\"limit\\\": \\\"32\\\",\\n    \\\"reviewer\\\": \\\"Lisa Wong\\\"\\n  },\\n  {\\n    \\\"id\\\": 54,\\n    \\\"header\\\": \\\"Project Timeline\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"14\\\",\\n    \\\"limit\\\": \\\"17\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 55,\\n    \\\"header\\\": \\\"Resource Allocation\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 56,\\n    \\\"header\\\": \\\"Team Structure and Roles\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"20\\\",\\n    \\\"limit\\\": \\\"23\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 57,\\n    \\\"header\\\": \\\"Communication Protocols\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"15\\\",\\n    \\\"limit\\\": \\\"18\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 58,\\n    \\\"header\\\": \\\"Success Metrics\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"30\\\",\\n    \\\"limit\\\": \\\"33\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 59,\\n    \\\"header\\\": \\\"Internationalization Support\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"23\\\",\\n    \\\"limit\\\": \\\"26\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 60,\\n    \\\"header\\\": \\\"Backup and Recovery Procedures\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"18\\\",\\n    \\\"limit\\\": \\\"21\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 61,\\n    \\\"header\\\": \\\"Monitoring and Alerting System\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"25\\\",\\n    \\\"limit\\\": \\\"28\\\",\\n    \\\"reviewer\\\": \\\"Daniel Park\\\"\\n  },\\n  {\\n    \\\"id\\\": 62,\\n    \\\"header\\\": \\\"Code Review Guidelines\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"12\\\",\\n    \\\"limit\\\": \\\"15\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 63,\\n    \\\"header\\\": \\\"Documentation Standards\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"27\\\",\\n    \\\"limit\\\": \\\"30\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 64,\\n    \\\"header\\\": \\\"Release Management Process\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"22\\\",\\n    \\\"limit\\\": \\\"25\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  },\\n  {\\n    \\\"id\\\": 65,\\n    \\\"header\\\": \\\"Feature Prioritization Matrix\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"19\\\",\\n    \\\"limit\\\": \\\"22\\\",\\n    \\\"reviewer\\\": \\\"Emma Davis\\\"\\n  },\\n  {\\n    \\\"id\\\": 66,\\n    \\\"header\\\": \\\"Technical Debt Assessment\\\",\\n    \\\"type\\\": \\\"Technical content\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"24\\\",\\n    \\\"limit\\\": \\\"27\\\",\\n    \\\"reviewer\\\": \\\"Eddie Lake\\\"\\n  },\\n  {\\n    \\\"id\\\": 67,\\n    \\\"header\\\": \\\"Capacity Planning\\\",\\n    \\\"type\\\": \\\"Planning\\\",\\n    \\\"status\\\": \\\"In Process\\\",\\n    \\\"target\\\": \\\"21\\\",\\n    \\\"limit\\\": \\\"24\\\",\\n    \\\"reviewer\\\": \\\"Jamik Tashpulatov\\\"\\n  },\\n  {\\n    \\\"id\\\": 68,\\n    \\\"header\\\": \\\"Service Level Agreements\\\",\\n    \\\"type\\\": \\\"Legal\\\",\\n    \\\"status\\\": \\\"Done\\\",\\n    \\\"target\\\": \\\"26\\\",\\n    \\\"limit\\\": \\\"29\\\",\\n    \\\"reviewer\\\": \\\"Assign reviewer\\\"\\n  }\\n]\\n\",\n      \"type\": \"registry:file\",\n      \"target\": \"app/dashboard/data.json\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavDocuments } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/nav-documents\\\"\\nimport { NavMain } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-vega/blocks/dashboard-01/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Dashboard\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LayoutDashboardIcon\\\"\\n          tabler=\\\"IconDashboard\\\"\\n          hugeicons=\\\"DashboardSquare01Icon\\\"\\n          phosphor=\\\"SquaresFourIcon\\\"\\n          remixicon=\\\"RiDashboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Lifecycle\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ListIcon\\\"\\n          tabler=\\\"IconListDetails\\\"\\n          hugeicons=\\\"Menu01Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiListUnordered\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Analytics\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartBarIcon\\\"\\n          tabler=\\\"IconChartBar\\\"\\n          hugeicons=\\\"ChartHistogramIcon\\\"\\n          phosphor=\\\"ChartBarIcon\\\"\\n          remixicon=\\\"RiBarChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Projects\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FolderIcon\\\"\\n          tabler=\\\"IconFolder\\\"\\n          hugeicons=\\\"Folder01Icon\\\"\\n          phosphor=\\\"FolderIcon\\\"\\n          remixicon=\\\"RiFolderLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Team\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"UsersIcon\\\"\\n          tabler=\\\"IconUsers\\\"\\n          hugeicons=\\\"UserGroupIcon\\\"\\n          phosphor=\\\"UsersIcon\\\"\\n          remixicon=\\\"RiGroupLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  navClouds: [\\n    {\\n      title: \\\"Capture\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CameraIcon\\\"\\n          tabler=\\\"IconCamera\\\"\\n          hugeicons=\\\"Camera01Icon\\\"\\n          phosphor=\\\"CameraIcon\\\"\\n          remixicon=\\\"RiCameraLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Proposal\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileDescription\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Prompts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileAi\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Active Proposals\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Archived\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Get Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CircleHelpIcon\\\"\\n          tabler=\\\"IconHelp\\\"\\n          hugeicons=\\\"HelpCircleIcon\\\"\\n          phosphor=\\\"QuestionIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  documents: [\\n    {\\n      name: \\\"Data Library\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"DatabaseIcon\\\"\\n          tabler=\\\"IconDatabase\\\"\\n          hugeicons=\\\"Database01Icon\\\"\\n          phosphor=\\\"DatabaseIcon\\\"\\n          remixicon=\\\"RiDatabase2Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Reports\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileChartColumnIcon\\\"\\n          tabler=\\\"IconReport\\\"\\n          hugeicons=\\\"Analytics01Icon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiFileChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Word Assistant\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFileWord\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"offcanvas\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton\\n              asChild\\n              className=\\\"data-[slot=sidebar-menu-button]:p-1.5!\\\"\\n            >\\n              <a href=\\\"#\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CommandIcon\\\"\\n                  tabler=\\\"IconInnerShadowTop\\\"\\n                  hugeicons=\\\"CommandIcon\\\"\\n                  phosphor=\\\"CommandIcon\\\"\\n                  remixicon=\\\"RiCommandLine\\\"\\n                  className=\\\"size-5!\\\"\\n                />\\n                <span className=\\\"text-base font-semibold\\\">Acme Inc.</span>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavDocuments items={data.documents} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-vega/hooks/use-mobile\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-vega/ui/chart\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-vega/ui/toggle-group\\\"\\n\\nexport const description = \\\"An interactive area chart\\\"\\n\\nconst chartData = [\\n  { date: \\\"2024-04-01\\\", desktop: 222, mobile: 150 },\\n  { date: \\\"2024-04-02\\\", desktop: 97, mobile: 180 },\\n  { date: \\\"2024-04-03\\\", desktop: 167, mobile: 120 },\\n  { date: \\\"2024-04-04\\\", desktop: 242, mobile: 260 },\\n  { date: \\\"2024-04-05\\\", desktop: 373, mobile: 290 },\\n  { date: \\\"2024-04-06\\\", desktop: 301, mobile: 340 },\\n  { date: \\\"2024-04-07\\\", desktop: 245, mobile: 180 },\\n  { date: \\\"2024-04-08\\\", desktop: 409, mobile: 320 },\\n  { date: \\\"2024-04-09\\\", desktop: 59, mobile: 110 },\\n  { date: \\\"2024-04-10\\\", desktop: 261, mobile: 190 },\\n  { date: \\\"2024-04-11\\\", desktop: 327, mobile: 350 },\\n  { date: \\\"2024-04-12\\\", desktop: 292, mobile: 210 },\\n  { date: \\\"2024-04-13\\\", desktop: 342, mobile: 380 },\\n  { date: \\\"2024-04-14\\\", desktop: 137, mobile: 220 },\\n  { date: \\\"2024-04-15\\\", desktop: 120, mobile: 170 },\\n  { date: \\\"2024-04-16\\\", desktop: 138, mobile: 190 },\\n  { date: \\\"2024-04-17\\\", desktop: 446, mobile: 360 },\\n  { date: \\\"2024-04-18\\\", desktop: 364, mobile: 410 },\\n  { date: \\\"2024-04-19\\\", desktop: 243, mobile: 180 },\\n  { date: \\\"2024-04-20\\\", desktop: 89, mobile: 150 },\\n  { date: \\\"2024-04-21\\\", desktop: 137, mobile: 200 },\\n  { date: \\\"2024-04-22\\\", desktop: 224, mobile: 170 },\\n  { date: \\\"2024-04-23\\\", desktop: 138, mobile: 230 },\\n  { date: \\\"2024-04-24\\\", desktop: 387, mobile: 290 },\\n  { date: \\\"2024-04-25\\\", desktop: 215, mobile: 250 },\\n  { date: \\\"2024-04-26\\\", desktop: 75, mobile: 130 },\\n  { date: \\\"2024-04-27\\\", desktop: 383, mobile: 420 },\\n  { date: \\\"2024-04-28\\\", desktop: 122, mobile: 180 },\\n  { date: \\\"2024-04-29\\\", desktop: 315, mobile: 240 },\\n  { date: \\\"2024-04-30\\\", desktop: 454, mobile: 380 },\\n  { date: \\\"2024-05-01\\\", desktop: 165, mobile: 220 },\\n  { date: \\\"2024-05-02\\\", desktop: 293, mobile: 310 },\\n  { date: \\\"2024-05-03\\\", desktop: 247, mobile: 190 },\\n  { date: \\\"2024-05-04\\\", desktop: 385, mobile: 420 },\\n  { date: \\\"2024-05-05\\\", desktop: 481, mobile: 390 },\\n  { date: \\\"2024-05-06\\\", desktop: 498, mobile: 520 },\\n  { date: \\\"2024-05-07\\\", desktop: 388, mobile: 300 },\\n  { date: \\\"2024-05-08\\\", desktop: 149, mobile: 210 },\\n  { date: \\\"2024-05-09\\\", desktop: 227, mobile: 180 },\\n  { date: \\\"2024-05-10\\\", desktop: 293, mobile: 330 },\\n  { date: \\\"2024-05-11\\\", desktop: 335, mobile: 270 },\\n  { date: \\\"2024-05-12\\\", desktop: 197, mobile: 240 },\\n  { date: \\\"2024-05-13\\\", desktop: 197, mobile: 160 },\\n  { date: \\\"2024-05-14\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-05-15\\\", desktop: 473, mobile: 380 },\\n  { date: \\\"2024-05-16\\\", desktop: 338, mobile: 400 },\\n  { date: \\\"2024-05-17\\\", desktop: 499, mobile: 420 },\\n  { date: \\\"2024-05-18\\\", desktop: 315, mobile: 350 },\\n  { date: \\\"2024-05-19\\\", desktop: 235, mobile: 180 },\\n  { date: \\\"2024-05-20\\\", desktop: 177, mobile: 230 },\\n  { date: \\\"2024-05-21\\\", desktop: 82, mobile: 140 },\\n  { date: \\\"2024-05-22\\\", desktop: 81, mobile: 120 },\\n  { date: \\\"2024-05-23\\\", desktop: 252, mobile: 290 },\\n  { date: \\\"2024-05-24\\\", desktop: 294, mobile: 220 },\\n  { date: \\\"2024-05-25\\\", desktop: 201, mobile: 250 },\\n  { date: \\\"2024-05-26\\\", desktop: 213, mobile: 170 },\\n  { date: \\\"2024-05-27\\\", desktop: 420, mobile: 460 },\\n  { date: \\\"2024-05-28\\\", desktop: 233, mobile: 190 },\\n  { date: \\\"2024-05-29\\\", desktop: 78, mobile: 130 },\\n  { date: \\\"2024-05-30\\\", desktop: 340, mobile: 280 },\\n  { date: \\\"2024-05-31\\\", desktop: 178, mobile: 230 },\\n  { date: \\\"2024-06-01\\\", desktop: 178, mobile: 200 },\\n  { date: \\\"2024-06-02\\\", desktop: 470, mobile: 410 },\\n  { date: \\\"2024-06-03\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-04\\\", desktop: 439, mobile: 380 },\\n  { date: \\\"2024-06-05\\\", desktop: 88, mobile: 140 },\\n  { date: \\\"2024-06-06\\\", desktop: 294, mobile: 250 },\\n  { date: \\\"2024-06-07\\\", desktop: 323, mobile: 370 },\\n  { date: \\\"2024-06-08\\\", desktop: 385, mobile: 320 },\\n  { date: \\\"2024-06-09\\\", desktop: 438, mobile: 480 },\\n  { date: \\\"2024-06-10\\\", desktop: 155, mobile: 200 },\\n  { date: \\\"2024-06-11\\\", desktop: 92, mobile: 150 },\\n  { date: \\\"2024-06-12\\\", desktop: 492, mobile: 420 },\\n  { date: \\\"2024-06-13\\\", desktop: 81, mobile: 130 },\\n  { date: \\\"2024-06-14\\\", desktop: 426, mobile: 380 },\\n  { date: \\\"2024-06-15\\\", desktop: 307, mobile: 350 },\\n  { date: \\\"2024-06-16\\\", desktop: 371, mobile: 310 },\\n  { date: \\\"2024-06-17\\\", desktop: 475, mobile: 520 },\\n  { date: \\\"2024-06-18\\\", desktop: 107, mobile: 170 },\\n  { date: \\\"2024-06-19\\\", desktop: 341, mobile: 290 },\\n  { date: \\\"2024-06-20\\\", desktop: 408, mobile: 450 },\\n  { date: \\\"2024-06-21\\\", desktop: 169, mobile: 210 },\\n  { date: \\\"2024-06-22\\\", desktop: 317, mobile: 270 },\\n  { date: \\\"2024-06-23\\\", desktop: 480, mobile: 530 },\\n  { date: \\\"2024-06-24\\\", desktop: 132, mobile: 180 },\\n  { date: \\\"2024-06-25\\\", desktop: 141, mobile: 190 },\\n  { date: \\\"2024-06-26\\\", desktop: 434, mobile: 380 },\\n  { date: \\\"2024-06-27\\\", desktop: 448, mobile: 490 },\\n  { date: \\\"2024-06-28\\\", desktop: 149, mobile: 200 },\\n  { date: \\\"2024-06-29\\\", desktop: 103, mobile: 160 },\\n  { date: \\\"2024-06-30\\\", desktop: 446, mobile: 400 },\\n]\\n\\nconst chartConfig = {\\n  visitors: {\\n    label: \\\"Visitors\\\",\\n  },\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nexport function ChartAreaInteractive() {\\n  const isMobile = useIsMobile()\\n  const [timeRange, setTimeRange] = React.useState(\\\"90d\\\")\\n\\n  React.useEffect(() => {\\n    if (isMobile) {\\n      setTimeRange(\\\"7d\\\")\\n    }\\n  }, [isMobile])\\n\\n  const filteredData = chartData.filter((item) => {\\n    const date = new Date(item.date)\\n    const referenceDate = new Date(\\\"2024-06-30\\\")\\n    let daysToSubtract = 90\\n    if (timeRange === \\\"30d\\\") {\\n      daysToSubtract = 30\\n    } else if (timeRange === \\\"7d\\\") {\\n      daysToSubtract = 7\\n    }\\n    const startDate = new Date(referenceDate)\\n    startDate.setDate(startDate.getDate() - daysToSubtract)\\n    return date >= startDate\\n  })\\n\\n  return (\\n    <Card className=\\\"@container/card\\\">\\n      <CardHeader>\\n        <CardTitle>Total Visitors</CardTitle>\\n        <CardDescription>\\n          <span className=\\\"hidden @[540px]/card:block\\\">\\n            Total for the last 3 months\\n          </span>\\n          <span className=\\\"@[540px]/card:hidden\\\">Last 3 months</span>\\n        </CardDescription>\\n        <CardAction>\\n          <ToggleGroup\\n            type=\\\"single\\\"\\n            value={timeRange}\\n            onValueChange={setTimeRange}\\n            variant=\\\"outline\\\"\\n            className=\\\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\\\"\\n          >\\n            <ToggleGroupItem value=\\\"90d\\\">Last 3 months</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"30d\\\">Last 30 days</ToggleGroupItem>\\n            <ToggleGroupItem value=\\\"7d\\\">Last 7 days</ToggleGroupItem>\\n          </ToggleGroup>\\n          <Select value={timeRange} onValueChange={setTimeRange}>\\n            <SelectTrigger\\n              className=\\\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\\\"\\n              size=\\\"sm\\\"\\n              aria-label=\\\"Select a value\\\"\\n            >\\n              <SelectValue placeholder=\\\"Last 3 months\\\" />\\n            </SelectTrigger>\\n            <SelectContent className=\\\"rounded-xl\\\">\\n              <SelectItem value=\\\"90d\\\" className=\\\"rounded-lg\\\">\\n                Last 3 months\\n              </SelectItem>\\n              <SelectItem value=\\\"30d\\\" className=\\\"rounded-lg\\\">\\n                Last 30 days\\n              </SelectItem>\\n              <SelectItem value=\\\"7d\\\" className=\\\"rounded-lg\\\">\\n                Last 7 days\\n              </SelectItem>\\n            </SelectContent>\\n          </Select>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"px-2 pt-4 sm:px-6 sm:pt-6\\\">\\n        <ChartContainer\\n          config={chartConfig}\\n          className=\\\"aspect-auto h-[250px] w-full\\\"\\n        >\\n          <AreaChart data={filteredData}>\\n            <defs>\\n              <linearGradient id=\\\"fillDesktop\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={1.0}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-desktop)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n              <linearGradient id=\\\"fillMobile\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"0\\\" y2=\\\"1\\\">\\n                <stop\\n                  offset=\\\"5%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.8}\\n                />\\n                <stop\\n                  offset=\\\"95%\\\"\\n                  stopColor=\\\"var(--color-mobile)\\\"\\n                  stopOpacity={0.1}\\n                />\\n              </linearGradient>\\n            </defs>\\n            <CartesianGrid vertical={false} />\\n            <XAxis\\n              dataKey=\\\"date\\\"\\n              tickLine={false}\\n              axisLine={false}\\n              tickMargin={8}\\n              minTickGap={32}\\n              tickFormatter={(value) => {\\n                const date = new Date(value)\\n                return date.toLocaleDateString(\\\"en-US\\\", {\\n                  month: \\\"short\\\",\\n                  day: \\\"numeric\\\",\\n                })\\n              }}\\n            />\\n            <ChartTooltip\\n              cursor={false}\\n              content={\\n                <ChartTooltipContent\\n                  labelFormatter={(value) => {\\n                    return new Date(value).toLocaleDateString(\\\"en-US\\\", {\\n                      month: \\\"short\\\",\\n                      day: \\\"numeric\\\",\\n                    })\\n                  }}\\n                  indicator=\\\"dot\\\"\\n                />\\n              }\\n            />\\n            <Area\\n              dataKey=\\\"mobile\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillMobile)\\\"\\n              stroke=\\\"var(--color-mobile)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n            <Area\\n              dataKey=\\\"desktop\\\"\\n              type=\\\"natural\\\"\\n              fill=\\\"url(#fillDesktop)\\\"\\n              stroke=\\\"var(--color-desktop)\\\"\\n              stackId=\\\"a\\\"\\n            />\\n          </AreaChart>\\n        </ChartContainer>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/data-table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  closestCenter,\\n  DndContext,\\n  KeyboardSensor,\\n  MouseSensor,\\n  TouchSensor,\\n  useSensor,\\n  useSensors,\\n  type DragEndEvent,\\n  type UniqueIdentifier,\\n} from \\\"@dnd-kit/core\\\"\\nimport { restrictToVerticalAxis } from \\\"@dnd-kit/modifiers\\\"\\nimport {\\n  arrayMove,\\n  SortableContext,\\n  useSortable,\\n  verticalListSortingStrategy,\\n} from \\\"@dnd-kit/sortable\\\"\\nimport { CSS } from \\\"@dnd-kit/utilities\\\"\\nimport {\\n  flexRender,\\n  getCoreRowModel,\\n  getFacetedRowModel,\\n  getFacetedUniqueValues,\\n  getFilteredRowModel,\\n  getPaginationRowModel,\\n  getSortedRowModel,\\n  useReactTable,\\n  type ColumnDef,\\n  type ColumnFiltersState,\\n  type Row,\\n  type SortingState,\\n  type VisibilityState,\\n} from \\\"@tanstack/react-table\\\"\\nimport { Area, AreaChart, CartesianGrid, XAxis } from \\\"recharts\\\"\\nimport { toast } from \\\"sonner\\\"\\nimport { z } from \\\"zod\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-vega/hooks/use-mobile\\\"\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  ChartContainer,\\n  ChartTooltip,\\n  ChartTooltipContent,\\n  type ChartConfig,\\n} from \\\"@/registry/radix-vega/ui/chart\\\"\\nimport { Checkbox } from \\\"@/registry/radix-vega/ui/checkbox\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-vega/ui/drawer\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-vega/ui/table\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-vega/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport const schema = z.object({\\n  id: z.number(),\\n  header: z.string(),\\n  type: z.string(),\\n  status: z.string(),\\n  target: z.string(),\\n  limit: z.string(),\\n  reviewer: z.string(),\\n})\\n\\n// Create a separate component for the drag handle\\nfunction DragHandle({ id }: { id: number }) {\\n  const { attributes, listeners } = useSortable({\\n    id,\\n  })\\n\\n  return (\\n    <Button\\n      {...attributes}\\n      {...listeners}\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon\\\"\\n      className=\\\"size-7 text-muted-foreground hover:bg-transparent\\\"\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"GripVerticalIcon\\\"\\n        tabler=\\\"IconGripVertical\\\"\\n        hugeicons=\\\"DragDropVerticalIcon\\\"\\n        phosphor=\\\"DotsSixVerticalIcon\\\"\\n        remixicon=\\\"RiDraggable\\\"\\n        className=\\\"size-3 text-muted-foreground\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Drag to reorder</span>\\n    </Button>\\n  )\\n}\\n\\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\\n  {\\n    id: \\\"drag\\\",\\n    header: () => null,\\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\\n  },\\n  {\\n    id: \\\"select\\\",\\n    header: ({ table }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={\\n            table.getIsAllPageRowsSelected() ||\\n            (table.getIsSomePageRowsSelected() && \\\"indeterminate\\\")\\n          }\\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\\n          aria-label=\\\"Select all\\\"\\n        />\\n      </div>\\n    ),\\n    cell: ({ row }) => (\\n      <div className=\\\"flex items-center justify-center\\\">\\n        <Checkbox\\n          checked={row.getIsSelected()}\\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\\n          aria-label=\\\"Select row\\\"\\n        />\\n      </div>\\n    ),\\n    enableSorting: false,\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"header\\\",\\n    header: \\\"Header\\\",\\n    cell: ({ row }) => {\\n      return <TableCellViewer item={row.original} />\\n    },\\n    enableHiding: false,\\n  },\\n  {\\n    accessorKey: \\\"type\\\",\\n    header: \\\"Section Type\\\",\\n    cell: ({ row }) => (\\n      <div className=\\\"w-32\\\">\\n        <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n          {row.original.type}\\n        </Badge>\\n      </div>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"status\\\",\\n    header: \\\"Status\\\",\\n    cell: ({ row }) => (\\n      <Badge variant=\\\"outline\\\" className=\\\"px-1.5 text-muted-foreground\\\">\\n        {row.original.status === \\\"Done\\\" ? (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheckFilled\\\"\\n            hugeicons=\\\"CheckmarkCircle01Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleFill\\\"\\n            className=\\\"fill-green-500 dark:fill-green-400\\\"\\n          />\\n        ) : (\\n          <IconPlaceholder\\n            lucide=\\\"LoaderIcon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoader4Line\\\"\\n          />\\n        )}\\n        {row.original.status}\\n      </Badge>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"target\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Target</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-target`} className=\\\"sr-only\\\">\\n          Target\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.target}\\n          id={`${row.original.id}-target`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"limit\\\",\\n    header: () => <div className=\\\"w-full text-right\\\">Limit</div>,\\n    cell: ({ row }) => (\\n      <form\\n        onSubmit={(e) => {\\n          e.preventDefault()\\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\\n            loading: `Saving ${row.original.header}`,\\n            success: \\\"Done\\\",\\n            error: \\\"Error\\\",\\n          })\\n        }}\\n      >\\n        <Label htmlFor={`${row.original.id}-limit`} className=\\\"sr-only\\\">\\n          Limit\\n        </Label>\\n        <Input\\n          className=\\\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\\\"\\n          defaultValue={row.original.limit}\\n          id={`${row.original.id}-limit`}\\n        />\\n      </form>\\n    ),\\n  },\\n  {\\n    accessorKey: \\\"reviewer\\\",\\n    header: \\\"Reviewer\\\",\\n    cell: ({ row }) => {\\n      const isAssigned = row.original.reviewer !== \\\"Assign reviewer\\\"\\n\\n      if (isAssigned) {\\n        return row.original.reviewer\\n      }\\n\\n      return (\\n        <>\\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\\\"sr-only\\\">\\n            Reviewer\\n          </Label>\\n          <Select>\\n            <SelectTrigger\\n              className=\\\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\\\"\\n              size=\\\"sm\\\"\\n              id={`${row.original.id}-reviewer`}\\n            >\\n              <SelectValue placeholder=\\\"Assign reviewer\\\" />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"end\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                  Jamik Tashpulatov\\n                </SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </>\\n      )\\n    },\\n  },\\n  {\\n    id: \\\"actions\\\",\\n    cell: () => (\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            className=\\\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\\\"\\n            size=\\\"icon\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"EllipsisVerticalIcon\\\"\\n              tabler=\\\"IconDotsVertical\\\"\\n              hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeVerticalIcon\\\"\\n              remixicon=\\\"RiMore2Line\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Open menu</span>\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n          <DropdownMenuItem>Edit</DropdownMenuItem>\\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuItem variant=\\\"destructive\\\">Delete</DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    ),\\n  },\\n]\\n\\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\\n    id: row.original.id,\\n  })\\n\\n  return (\\n    <TableRow\\n      data-state={row.getIsSelected() && \\\"selected\\\"}\\n      data-dragging={isDragging}\\n      ref={setNodeRef}\\n      className=\\\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\\\"\\n      style={{\\n        transform: CSS.Transform.toString(transform),\\n        transition: transition,\\n      }}\\n    >\\n      {row.getVisibleCells().map((cell) => (\\n        <TableCell key={cell.id}>\\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\\n        </TableCell>\\n      ))}\\n    </TableRow>\\n  )\\n}\\n\\nexport function DataTable({\\n  data: initialData,\\n}: {\\n  data: z.infer<typeof schema>[]\\n}) {\\n  const [data, setData] = React.useState(() => initialData)\\n  const [rowSelection, setRowSelection] = React.useState({})\\n  const [columnVisibility, setColumnVisibility] =\\n    React.useState<VisibilityState>({})\\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\\n    []\\n  )\\n  const [sorting, setSorting] = React.useState<SortingState>([])\\n  const [pagination, setPagination] = React.useState({\\n    pageIndex: 0,\\n    pageSize: 10,\\n  })\\n  const sortableId = React.useId()\\n  const sensors = useSensors(\\n    useSensor(MouseSensor, {}),\\n    useSensor(TouchSensor, {}),\\n    useSensor(KeyboardSensor, {})\\n  )\\n\\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\\n    () => data?.map(({ id }) => id) || [],\\n    [data]\\n  )\\n\\n  const table = useReactTable({\\n    data,\\n    columns,\\n    state: {\\n      sorting,\\n      columnVisibility,\\n      rowSelection,\\n      columnFilters,\\n      pagination,\\n    },\\n    getRowId: (row) => row.id.toString(),\\n    enableRowSelection: true,\\n    onRowSelectionChange: setRowSelection,\\n    onSortingChange: setSorting,\\n    onColumnFiltersChange: setColumnFilters,\\n    onColumnVisibilityChange: setColumnVisibility,\\n    onPaginationChange: setPagination,\\n    getCoreRowModel: getCoreRowModel(),\\n    getFilteredRowModel: getFilteredRowModel(),\\n    getPaginationRowModel: getPaginationRowModel(),\\n    getSortedRowModel: getSortedRowModel(),\\n    getFacetedRowModel: getFacetedRowModel(),\\n    getFacetedUniqueValues: getFacetedUniqueValues(),\\n  })\\n\\n  function handleDragEnd(event: DragEndEvent) {\\n    const { active, over } = event\\n    if (active && over && active.id !== over.id) {\\n      setData((data) => {\\n        const oldIndex = dataIds.indexOf(active.id)\\n        const newIndex = dataIds.indexOf(over.id)\\n        return arrayMove(data, oldIndex, newIndex)\\n      })\\n    }\\n  }\\n\\n  return (\\n    <Tabs\\n      defaultValue=\\\"outline\\\"\\n      className=\\\"w-full flex-col justify-start gap-6\\\"\\n    >\\n      <div className=\\\"flex items-center justify-between px-4 lg:px-6\\\">\\n        <Label htmlFor=\\\"view-selector\\\" className=\\\"sr-only\\\">\\n          View\\n        </Label>\\n        <Select defaultValue=\\\"outline\\\">\\n          <SelectTrigger\\n            className=\\\"flex w-fit @4xl/main:hidden\\\"\\n            size=\\\"sm\\\"\\n            id=\\\"view-selector\\\"\\n          >\\n            <SelectValue placeholder=\\\"Select a view\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"outline\\\">Outline</SelectItem>\\n              <SelectItem value=\\\"past-performance\\\">Past Performance</SelectItem>\\n              <SelectItem value=\\\"key-personnel\\\">Key Personnel</SelectItem>\\n              <SelectItem value=\\\"focus-documents\\\">Focus Documents</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <TabsList className=\\\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\\\">\\n          <TabsTrigger value=\\\"outline\\\">Outline</TabsTrigger>\\n          <TabsTrigger value=\\\"past-performance\\\">\\n            Past Performance <Badge variant=\\\"secondary\\\">3</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"key-personnel\\\">\\n            Key Personnel <Badge variant=\\\"secondary\\\">2</Badge>\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"focus-documents\\\">Focus Documents</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Columns3Icon\\\"\\n                  tabler=\\\"IconLayoutColumns\\\"\\n                  hugeicons=\\\"LeftToRightListBulletIcon\\\"\\n                  phosphor=\\\"ColumnsIcon\\\"\\n                  remixicon=\\\"RiLayoutColumnLine\\\"\\n                  data-icon=\\\"inline-start\\\"\\n                />\\n                Columns\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronDownIcon\\\"\\n                  tabler=\\\"IconChevronDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"CaretDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownSLine\\\"\\n                  data-icon=\\\"inline-end\\\"\\n                />\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\" className=\\\"w-32\\\">\\n              {table\\n                .getAllColumns()\\n                .filter(\\n                  (column) =>\\n                    typeof column.accessorFn !== \\\"undefined\\\" &&\\n                    column.getCanHide()\\n                )\\n                .map((column) => {\\n                  return (\\n                    <DropdownMenuCheckboxItem\\n                      key={column.id}\\n                      className=\\\"capitalize\\\"\\n                      checked={column.getIsVisible()}\\n                      onCheckedChange={(value) =>\\n                        column.toggleVisibility(!!value)\\n                      }\\n                    >\\n                      {column.id}\\n                    </DropdownMenuCheckboxItem>\\n                  )\\n                })}\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"Add01Icon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n            />\\n            <span className=\\\"hidden lg:inline\\\">Add Section</span>\\n          </Button>\\n        </div>\\n      </div>\\n      <TabsContent\\n        value=\\\"outline\\\"\\n        className=\\\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"overflow-hidden rounded-lg border\\\">\\n          <DndContext\\n            collisionDetection={closestCenter}\\n            modifiers={[restrictToVerticalAxis]}\\n            onDragEnd={handleDragEnd}\\n            sensors={sensors}\\n            id={sortableId}\\n          >\\n            <Table>\\n              <TableHeader className=\\\"sticky top-0 z-10 bg-muted\\\">\\n                {table.getHeaderGroups().map((headerGroup) => (\\n                  <TableRow key={headerGroup.id}>\\n                    {headerGroup.headers.map((header) => {\\n                      return (\\n                        <TableHead key={header.id} colSpan={header.colSpan}>\\n                          {header.isPlaceholder\\n                            ? null\\n                            : flexRender(\\n                                header.column.columnDef.header,\\n                                header.getContext()\\n                              )}\\n                        </TableHead>\\n                      )\\n                    })}\\n                  </TableRow>\\n                ))}\\n              </TableHeader>\\n              <TableBody className=\\\"**:data-[slot=table-cell]:first:w-8\\\">\\n                {table.getRowModel().rows?.length ? (\\n                  <SortableContext\\n                    items={dataIds}\\n                    strategy={verticalListSortingStrategy}\\n                  >\\n                    {table.getRowModel().rows.map((row) => (\\n                      <DraggableRow key={row.id} row={row} />\\n                    ))}\\n                  </SortableContext>\\n                ) : (\\n                  <TableRow>\\n                    <TableCell\\n                      colSpan={columns.length}\\n                      className=\\\"h-24 text-center\\\"\\n                    >\\n                      No results.\\n                    </TableCell>\\n                  </TableRow>\\n                )}\\n              </TableBody>\\n            </Table>\\n          </DndContext>\\n        </div>\\n        <div className=\\\"flex items-center justify-between px-4\\\">\\n          <div className=\\\"hidden flex-1 text-sm text-muted-foreground lg:flex\\\">\\n            {table.getFilteredSelectedRowModel().rows.length} of{\\\" \\\"}\\n            {table.getFilteredRowModel().rows.length} row(s) selected.\\n          </div>\\n          <div className=\\\"flex w-full items-center gap-8 lg:w-fit\\\">\\n            <div className=\\\"hidden items-center gap-2 lg:flex\\\">\\n              <Label htmlFor=\\\"rows-per-page\\\" className=\\\"text-sm font-medium\\\">\\n                Rows per page\\n              </Label>\\n              <Select\\n                value={`${table.getState().pagination.pageSize}`}\\n                onValueChange={(value) => {\\n                  table.setPageSize(Number(value))\\n                }}\\n              >\\n                <SelectTrigger size=\\\"sm\\\" className=\\\"w-20\\\" id=\\\"rows-per-page\\\">\\n                  <SelectValue\\n                    placeholder={table.getState().pagination.pageSize}\\n                  />\\n                </SelectTrigger>\\n                <SelectContent side=\\\"top\\\">\\n                  <SelectGroup>\\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\\n                        {pageSize}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"flex w-fit items-center justify-center text-sm font-medium\\\">\\n              Page {table.getState().pagination.pageIndex + 1} of{\\\" \\\"}\\n              {table.getPageCount()}\\n            </div>\\n            <div className=\\\"ml-auto flex items-center gap-2 lg:ml-0\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden h-8 w-8 p-0 lg:flex\\\"\\n                onClick={() => table.setPageIndex(0)}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to first page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsLeftIcon\\\"\\n                  tabler=\\\"IconChevronsLeft\\\"\\n                  hugeicons=\\\"ArrowLeftDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleLeftIcon\\\"\\n                  remixicon=\\\"RiSkipLeftLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.previousPage()}\\n                disabled={!table.getCanPreviousPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to previous page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronLeftIcon\\\"\\n                  tabler=\\\"IconChevronLeft\\\"\\n                  hugeicons=\\\"ArrowLeft01Icon\\\"\\n                  phosphor=\\\"CaretLeftIcon\\\"\\n                  remixicon=\\\"RiArrowLeftSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"size-8\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.nextPage()}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to next page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronRightIcon\\\"\\n                  tabler=\\\"IconChevronRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"CaretRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightSLine\\\"\\n                />\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"hidden size-8 lg:flex\\\"\\n                size=\\\"icon\\\"\\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\\n                disabled={!table.getCanNextPage()}\\n              >\\n                <span className=\\\"sr-only\\\">Go to last page</span>\\n                <IconPlaceholder\\n                  lucide=\\\"ChevronsRightIcon\\\"\\n                  tabler=\\\"IconChevronsRight\\\"\\n                  hugeicons=\\\"ArrowRightDoubleIcon\\\"\\n                  phosphor=\\\"CaretDoubleRightIcon\\\"\\n                  remixicon=\\\"RiSkipRightLine\\\"\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"past-performance\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent value=\\\"key-personnel\\\" className=\\\"flex flex-col px-4 lg:px-6\\\">\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n      <TabsContent\\n        value=\\\"focus-documents\\\"\\n        className=\\\"flex flex-col px-4 lg:px-6\\\"\\n      >\\n        <div className=\\\"aspect-video w-full flex-1 rounded-lg border border-dashed\\\"></div>\\n      </TabsContent>\\n    </Tabs>\\n  )\\n}\\n\\nconst chartData = [\\n  { month: \\\"January\\\", desktop: 186, mobile: 80 },\\n  { month: \\\"February\\\", desktop: 305, mobile: 200 },\\n  { month: \\\"March\\\", desktop: 237, mobile: 120 },\\n  { month: \\\"April\\\", desktop: 73, mobile: 190 },\\n  { month: \\\"May\\\", desktop: 209, mobile: 130 },\\n  { month: \\\"June\\\", desktop: 214, mobile: 140 },\\n]\\n\\nconst chartConfig = {\\n  desktop: {\\n    label: \\\"Desktop\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n  mobile: {\\n    label: \\\"Mobile\\\",\\n    color: \\\"var(--primary)\\\",\\n  },\\n} satisfies ChartConfig\\n\\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\\n  const isMobile = useIsMobile()\\n\\n  return (\\n    <Drawer direction={isMobile ? \\\"bottom\\\" : \\\"right\\\"}>\\n      <DrawerTrigger asChild>\\n        <Button variant=\\\"link\\\" className=\\\"w-fit px-0 text-left text-foreground\\\">\\n          {item.header}\\n        </Button>\\n      </DrawerTrigger>\\n      <DrawerContent>\\n        <DrawerHeader className=\\\"gap-1\\\">\\n          <DrawerTitle>{item.header}</DrawerTitle>\\n          <DrawerDescription>\\n            Showing total visitors for the last 6 months\\n          </DrawerDescription>\\n        </DrawerHeader>\\n        <div className=\\\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\\\">\\n          {!isMobile && (\\n            <>\\n              <ChartContainer config={chartConfig}>\\n                <AreaChart\\n                  accessibilityLayer\\n                  data={chartData}\\n                  margin={{\\n                    left: 0,\\n                    right: 10,\\n                  }}\\n                >\\n                  <CartesianGrid vertical={false} />\\n                  <XAxis\\n                    dataKey=\\\"month\\\"\\n                    tickLine={false}\\n                    axisLine={false}\\n                    tickMargin={8}\\n                    tickFormatter={(value) => value.slice(0, 3)}\\n                    hide\\n                  />\\n                  <ChartTooltip\\n                    cursor={false}\\n                    content={<ChartTooltipContent indicator=\\\"dot\\\" />}\\n                  />\\n                  <Area\\n                    dataKey=\\\"mobile\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-mobile)\\\"\\n                    fillOpacity={0.6}\\n                    stroke=\\\"var(--color-mobile)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                  <Area\\n                    dataKey=\\\"desktop\\\"\\n                    type=\\\"natural\\\"\\n                    fill=\\\"var(--color-desktop)\\\"\\n                    fillOpacity={0.4}\\n                    stroke=\\\"var(--color-desktop)\\\"\\n                    stackId=\\\"a\\\"\\n                  />\\n                </AreaChart>\\n              </ChartContainer>\\n              <Separator />\\n              <div className=\\\"grid gap-2\\\">\\n                <div className=\\\"flex gap-2 leading-none font-medium\\\">\\n                  Trending up by 5.2% this month{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"TrendingUpIcon\\\"\\n                    tabler=\\\"IconTrendingUp\\\"\\n                    hugeicons=\\\"ChartUpIcon\\\"\\n                    phosphor=\\\"TrendUpIcon\\\"\\n                    remixicon=\\\"RiArrowUpLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"text-muted-foreground\\\">\\n                  Showing total visitors for the last 6 months. This is just\\n                  some random text to test the layout. It spans multiple lines\\n                  and should wrap around.\\n                </div>\\n              </div>\\n              <Separator />\\n            </>\\n          )}\\n          <form className=\\\"flex flex-col gap-4\\\">\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"header\\\">Header</Label>\\n              <Input id=\\\"header\\\" defaultValue={item.header} />\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"type\\\">Type</Label>\\n                <Select defaultValue={item.type}>\\n                  <SelectTrigger id=\\\"type\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a type\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Table of Contents\\\">\\n                        Table of Contents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Executive Summary\\\">\\n                        Executive Summary\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Technical Approach\\\">\\n                        Technical Approach\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Design\\\">Design</SelectItem>\\n                      <SelectItem value=\\\"Capabilities\\\">Capabilities</SelectItem>\\n                      <SelectItem value=\\\"Focus Documents\\\">\\n                        Focus Documents\\n                      </SelectItem>\\n                      <SelectItem value=\\\"Narrative\\\">Narrative</SelectItem>\\n                      <SelectItem value=\\\"Cover Page\\\">Cover Page</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"status\\\">Status</Label>\\n                <Select defaultValue={item.status}>\\n                  <SelectTrigger id=\\\"status\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select a status\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectGroup>\\n                      <SelectItem value=\\\"Done\\\">Done</SelectItem>\\n                      <SelectItem value=\\\"In Progress\\\">In Progress</SelectItem>\\n                      <SelectItem value=\\\"Not Started\\\">Not Started</SelectItem>\\n                    </SelectGroup>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-2 gap-4\\\">\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"target\\\">Target</Label>\\n                <Input id=\\\"target\\\" defaultValue={item.target} />\\n              </div>\\n              <div className=\\\"flex flex-col gap-3\\\">\\n                <Label htmlFor=\\\"limit\\\">Limit</Label>\\n                <Input id=\\\"limit\\\" defaultValue={item.limit} />\\n              </div>\\n            </div>\\n            <div className=\\\"flex flex-col gap-3\\\">\\n              <Label htmlFor=\\\"reviewer\\\">Reviewer</Label>\\n              <Select defaultValue={item.reviewer}>\\n                <SelectTrigger id=\\\"reviewer\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a reviewer\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"Eddie Lake\\\">Eddie Lake</SelectItem>\\n                    <SelectItem value=\\\"Jamik Tashpulatov\\\">\\n                      Jamik Tashpulatov\\n                    </SelectItem>\\n                    <SelectItem value=\\\"Emily Whalen\\\">Emily Whalen</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </form>\\n        </div>\\n        <DrawerFooter>\\n          <Button>Submit</Button>\\n          <DrawerClose asChild>\\n            <Button variant=\\\"outline\\\">Done</Button>\\n          </DrawerClose>\\n        </DrawerFooter>\\n      </DrawerContent>\\n    </Drawer>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/nav-documents.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavDocuments({\\n  items,\\n}: {\\n  items: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"rounded-sm data-[state=open]:bg-accent\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-24 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"Folder01Icon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                  />\\n                  <span>Open</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare3\\\"\\n                    hugeicons=\\\"Share01Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                  <span>Share</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupContent className=\\\"flex flex-col gap-2\\\">\\n        <SidebarMenu>\\n          <SidebarMenuItem className=\\\"flex items-center gap-2\\\">\\n            <SidebarMenuButton\\n              tooltip=\\\"Quick Create\\\"\\n              className=\\\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"CirclePlusIcon\\\"\\n                tabler=\\\"IconCirclePlusFilled\\\"\\n                hugeicons=\\\"PlusSignCircleIcon\\\"\\n                phosphor=\\\"PlusCircleIcon\\\"\\n                remixicon=\\\"RiAddCircleFill\\\"\\n              />\\n              <span>Quick Create</span>\\n            </SidebarMenuButton>\\n            <Button\\n              size=\\\"icon\\\"\\n              className=\\\"size-8 group-data-[collapsible=icon]:opacity-0\\\"\\n              variant=\\\"outline\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"Mail01Icon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Inbox</span>\\n            </Button>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton tooltip={item.title}>\\n                {item.icon}\\n                <span>{item.title}</span>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg grayscale\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  {user.email}\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"EllipsisVerticalIcon\\\"\\n                tabler=\\\"IconDotsVertical\\\"\\n                hugeicons=\\\"MoreVerticalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeVerticalIcon\\\"\\n                remixicon=\\\"RiMore2Line\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                    {user.email}\\n                  </span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleUserRoundIcon\\\"\\n                  tabler=\\\"IconUserCircle\\\"\\n                  hugeicons=\\\"UserCircle02Icon\\\"\\n                  phosphor=\\\"UserCircleIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconNotification\\\"\\n                  hugeicons=\\\"Notification03Icon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotification3Line\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"Logout01Icon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/section-cards.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SectionCards() {\\n  return (\\n    <div className=\\\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\\\">\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Total Revenue</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            $1,250.00\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Trending up this month{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Visitors for the last 6 months\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>New Customers</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            1,234\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingDownIcon\\\"\\n                tabler=\\\"IconTrendingDown\\\"\\n                hugeicons=\\\"ChartDownIcon\\\"\\n                phosphor=\\\"TrendDownIcon\\\"\\n                remixicon=\\\"RiArrowDownLine\\\"\\n              />\\n              -20%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Down 20% this period{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingDownIcon\\\"\\n              tabler=\\\"IconTrendingDown\\\"\\n              hugeicons=\\\"ChartDownIcon\\\"\\n              phosphor=\\\"TrendDownIcon\\\"\\n              remixicon=\\\"RiArrowDownLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            Acquisition needs attention\\n          </div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Active Accounts</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            45,678\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +12.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Strong user retention{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Engagement exceed targets</div>\\n        </CardFooter>\\n      </Card>\\n      <Card className=\\\"@container/card\\\">\\n        <CardHeader>\\n          <CardDescription>Growth Rate</CardDescription>\\n          <CardTitle className=\\\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\\\">\\n            4.5%\\n          </CardTitle>\\n          <CardAction>\\n            <Badge variant=\\\"outline\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrendingUpIcon\\\"\\n                tabler=\\\"IconTrendingUp\\\"\\n                hugeicons=\\\"ChartUpIcon\\\"\\n                phosphor=\\\"TrendUpIcon\\\"\\n                remixicon=\\\"RiArrowUpLine\\\"\\n              />\\n              +4.5%\\n            </Badge>\\n          </CardAction>\\n        </CardHeader>\\n        <CardFooter className=\\\"flex-col items-start gap-1.5 text-sm\\\">\\n          <div className=\\\"line-clamp-1 flex gap-2 font-medium\\\">\\n            Steady performance increase{\\\" \\\"}\\n            <IconPlaceholder\\n              lucide=\\\"TrendingUpIcon\\\"\\n              tabler=\\\"IconTrendingUp\\\"\\n              hugeicons=\\\"ChartUpIcon\\\"\\n              phosphor=\\\"TrendUpIcon\\\"\\n              remixicon=\\\"RiArrowUpLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          <div className=\\\"text-muted-foreground\\\">Meets growth projections</div>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/dashboard-01/components/site-header.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport { SidebarTrigger } from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function SiteHeader() {\\n  return (\\n    <header className=\\\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\\\">\\n      <div className=\\\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\\\">\\n        <SidebarTrigger className=\\\"-ml-1\\\" />\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mx-2 data-[orientation=vertical]:h-4\\\"\\n        />\\n        <h1 className=\\\"text-base font-medium\\\">Documents</h1>\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\"\n  },\n  \"categories\": [\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"demo\",\n  \"title\": \"Demo\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input-group\",\n    \"item\",\n    \"radio-group\",\n    \"slider\",\n    \"switch\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  AlertDialog,\\n  AlertDialogAction,\\n  AlertDialogCancel,\\n  AlertDialogContent,\\n  AlertDialogDescription,\\n  AlertDialogFooter,\\n  AlertDialogHeader,\\n  AlertDialogTitle,\\n  AlertDialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/alert-dialog\\\"\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { ButtonGroup } from \\\"@/registry/radix-vega/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport { Checkbox } from \\\"@/registry/radix-vega/ui/checkbox\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport { Field, FieldGroup } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n  InputGroupText,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-vega/ui/radio-group\\\"\\nimport { Slider } from \\\"@/registry/radix-vega/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-vega/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Demo() {\\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\\n  const handleSliderValueChange = React.useCallback((value: number[]) => {\\n    setSliderValue(value)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\\\">\\n      <div className=\\\"grid max-w-3xl gap-4 sm:grid-cols-2\\\">\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card>\\n            <CardHeader>\\n              <CardTitle>Style Overview</CardTitle>\\n              <CardDescription className=\\\"line-clamp-2\\\">\\n                Designers love packing quirky glyphs into test phrases. This is\\n                a preview of the typography styles.\\n              </CardDescription>\\n            </CardHeader>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-6 gap-3\\\">\\n                {[\\n                  \\\"--background\\\",\\n                  \\\"--foreground\\\",\\n                  \\\"--primary\\\",\\n                  \\\"--secondary\\\",\\n                  \\\"--muted\\\",\\n                  \\\"--accent\\\",\\n                  \\\"--border\\\",\\n                  \\\"--chart-1\\\",\\n                  \\\"--chart-2\\\",\\n                  \\\"--chart-3\\\",\\n                  \\\"--chart-4\\\",\\n                  \\\"--chart-5\\\",\\n                ].map((variant) => (\\n                  <div\\n                    key={variant}\\n                    className=\\\"flex flex-col flex-wrap items-center gap-2\\\"\\n                  >\\n                    <div\\n                      className=\\\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\\\"\\n                      style={\\n                        {\\n                          \\\"--color\\\": `var(${variant})`,\\n                        } as React.CSSProperties\\n                      }\\n                    />\\n                    <div className=\\\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\\\">\\n                      {variant}\\n                    </div>\\n                  </div>\\n                ))}\\n              </div>\\n            </CardContent>\\n          </Card>\\n          <Card>\\n            <CardContent>\\n              <div className=\\\"grid grid-cols-8 place-items-center gap-4\\\">\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"Copy01Icon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CircleAlertIcon\\\"\\n                    tabler=\\\"IconExclamationCircle\\\"\\n                    hugeicons=\\\"AlertCircleIcon\\\"\\n                    phosphor=\\\"WarningCircleIcon\\\"\\n                    remixicon=\\\"RiErrorWarningLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ShoppingBagIcon\\\"\\n                    tabler=\\\"IconShoppingBag\\\"\\n                    hugeicons=\\\"ShoppingBag01Icon\\\"\\n                    phosphor=\\\"BagIcon\\\"\\n                    remixicon=\\\"RiShoppingBagLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"Loader2Icon\\\"\\n                    tabler=\\\"IconLoader\\\"\\n                    hugeicons=\\\"Loading03Icon\\\"\\n                    phosphor=\\\"SpinnerIcon\\\"\\n                    remixicon=\\\"RiLoaderLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MinusIcon\\\"\\n                    tabler=\\\"IconMinus\\\"\\n                    hugeicons=\\\"MinusSignIcon\\\"\\n                    phosphor=\\\"MinusIcon\\\"\\n                    remixicon=\\\"RiSubtractLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowLeftIcon\\\"\\n                    tabler=\\\"IconArrowLeft\\\"\\n                    hugeicons=\\\"ArrowLeft02Icon\\\"\\n                    phosphor=\\\"ArrowLeftIcon\\\"\\n                    remixicon=\\\"RiArrowLeftLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowRight\\\"\\n                    hugeicons=\\\"ArrowRight02Icon\\\"\\n                    phosphor=\\\"ArrowRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronDownIcon\\\"\\n                    tabler=\\\"IconChevronDown\\\"\\n                    hugeicons=\\\"ArrowDown01Icon\\\"\\n                    phosphor=\\\"CaretDownIcon\\\"\\n                    remixicon=\\\"RiArrowDownSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SearchIcon\\\"\\n                    tabler=\\\"IconSearch\\\"\\n                    hugeicons=\\\"Search01Icon\\\"\\n                    phosphor=\\\"MagnifyingGlassIcon\\\"\\n                    remixicon=\\\"RiSearchLine\\\"\\n                  />\\n                </Card>\\n                <Card className=\\\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"SettingsIcon\\\"\\n                    tabler=\\\"IconSettings\\\"\\n                    hugeicons=\\\"Settings01Icon\\\"\\n                    phosphor=\\\"GearIcon\\\"\\n                    remixicon=\\\"RiSettingsLine\\\"\\n                  />\\n                </Card>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n        <div className=\\\"flex flex-col gap-4\\\">\\n          <Card className=\\\"w-full\\\">\\n            <CardContent className=\\\"flex flex-col gap-6\\\">\\n              <div className=\\\"flex flex-col gap-4\\\">\\n                <div className=\\\"flex flex-wrap gap-2\\\">\\n                  <Button>Button</Button>\\n                  <Button variant=\\\"secondary\\\">Secondary</Button>\\n                  <Button variant=\\\"outline\\\">Outline</Button>\\n                  <Button variant=\\\"ghost\\\">Ghost</Button>\\n                </div>\\n                <Item variant=\\\"outline\\\">\\n                  <ItemContent>\\n                    <ItemTitle>Two-factor authentication</ItemTitle>\\n                    <ItemDescription className=\\\"text-pretty xl:hidden 2xl:block\\\">\\n                      Verify via email or phone number.\\n                    </ItemDescription>\\n                  </ItemContent>\\n                  <ItemActions className=\\\"hidden md:flex\\\">\\n                    <Button size=\\\"sm\\\" variant=\\\"secondary\\\">\\n                      Enable\\n                    </Button>\\n                  </ItemActions>\\n                </Item>\\n              </div>\\n              <Slider\\n                value={sliderValue}\\n                onValueChange={handleSliderValueChange}\\n                max={1000}\\n                min={0}\\n                step={10}\\n                className=\\\"flex-1\\\"\\n                aria-label=\\\"Slider\\\"\\n              />\\n              <FieldGroup>\\n                <Field>\\n                  <InputGroup>\\n                    <InputGroupInput placeholder=\\\"Name\\\" />\\n                    <InputGroupAddon align=\\\"inline-end\\\">\\n                      <InputGroupText>\\n                        <IconPlaceholder\\n                          lucide=\\\"SearchIcon\\\"\\n                          tabler=\\\"IconSearch\\\"\\n                          hugeicons=\\\"Search01Icon\\\"\\n                          phosphor=\\\"MagnifyingGlassIcon\\\"\\n                          remixicon=\\\"RiSearchLine\\\"\\n                        />\\n                      </InputGroupText>\\n                    </InputGroupAddon>\\n                  </InputGroup>\\n                </Field>\\n                <Field className=\\\"flex-1\\\">\\n                  <Textarea placeholder=\\\"Message\\\" className=\\\"resize-none\\\" />\\n                </Field>\\n              </FieldGroup>\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <div className=\\\"flex gap-2\\\">\\n                  <Badge>Badge</Badge>\\n                  <Badge variant=\\\"secondary\\\">Secondary</Badge>\\n                  <Badge variant=\\\"outline\\\">Outline</Badge>\\n                </div>\\n                <RadioGroup\\n                  defaultValue=\\\"apple\\\"\\n                  className=\\\"ml-auto flex w-fit gap-3\\\"\\n                >\\n                  <RadioGroupItem value=\\\"apple\\\" />\\n                  <RadioGroupItem value=\\\"banana\\\" />\\n                </RadioGroup>\\n                <div className=\\\"flex gap-3\\\">\\n                  <Checkbox defaultChecked />\\n                  <Checkbox />\\n                </div>\\n              </div>\\n              <div className=\\\"flex items-center gap-4\\\">\\n                <AlertDialog>\\n                  <AlertDialogTrigger asChild>\\n                    <Button variant=\\\"outline\\\">\\n                      <span className=\\\"hidden md:block\\\">Alert Dialog</span>\\n                      <span className=\\\"block md:hidden\\\">Dialog</span>\\n                    </Button>\\n                  </AlertDialogTrigger>\\n                  <AlertDialogContent size=\\\"sm\\\">\\n                    <AlertDialogHeader>\\n                      <AlertDialogTitle>\\n                        Allow accessory to connect?\\n                      </AlertDialogTitle>\\n                      <AlertDialogDescription>\\n                        Do you want to allow the USB accessory to connect to\\n                        this device and your data?\\n                      </AlertDialogDescription>\\n                    </AlertDialogHeader>\\n                    <AlertDialogFooter>\\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\\n                      <AlertDialogAction>Allow</AlertDialogAction>\\n                    </AlertDialogFooter>\\n                  </AlertDialogContent>\\n                </AlertDialog>\\n                <ButtonGroup>\\n                  <Button variant=\\\"outline\\\">Button Group</Button>\\n                  <DropdownMenu>\\n                    <DropdownMenuTrigger asChild>\\n                      <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronUpIcon\\\"\\n                          tabler=\\\"IconChevronUp\\\"\\n                          hugeicons=\\\"ArrowUp01Icon\\\"\\n                          phosphor=\\\"CaretUpIcon\\\"\\n                          remixicon=\\\"RiArrowUpSLine\\\"\\n                        />\\n                      </Button>\\n                    </DropdownMenuTrigger>\\n                    <DropdownMenuContent\\n                      align=\\\"end\\\"\\n                      side=\\\"top\\\"\\n                      className=\\\"w-fit\\\"\\n                    >\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                      <DropdownMenuSeparator />\\n                      <DropdownMenuGroup>\\n                        <DropdownMenuItem variant=\\\"destructive\\\">\\n                          Delete Conversation\\n                        </DropdownMenuItem>\\n                      </DropdownMenuGroup>\\n                    </DropdownMenuContent>\\n                  </DropdownMenu>\\n                </ButtonGroup>\\n                <Switch defaultChecked className=\\\"ml-auto\\\" />\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/dialog-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog-example\",\n  \"title\": \"Dialog\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"native-select\",\n    \"select\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/dialog-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Checkbox } from \\\"@/registry/radix-vega/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-vega/ui/kbd\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-vega/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport { Switch } from \\\"@/registry/radix-vega/ui/switch\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-vega/ui/tabs\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DialogExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DialogWithForm />\\n      <DialogScrollableContent />\\n      <DialogWithStickyFooter />\\n      <DialogNoCloseButton />\\n      <DialogChatSettings />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DialogWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <form>\\n          <DialogTrigger asChild>\\n            <Button variant=\\\"outline\\\">Edit Profile</Button>\\n          </DialogTrigger>\\n          <DialogContent>\\n            <DialogHeader>\\n              <DialogTitle>Edit profile</DialogTitle>\\n              <DialogDescription>\\n                Make changes to your profile here. Click save when you&apos;re\\n                done. Your profile will be updated immediately.\\n              </DialogDescription>\\n            </DialogHeader>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name-1\\\">Name</FieldLabel>\\n                <Input id=\\\"name-1\\\" name=\\\"name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"username-1\\\">Username</FieldLabel>\\n                <Input\\n                  id=\\\"username-1\\\"\\n                  name=\\\"username\\\"\\n                  defaultValue=\\\"@peduarte\\\"\\n                />\\n              </Field>\\n            </FieldGroup>\\n            <DialogFooter>\\n              <DialogClose asChild>\\n                <Button variant=\\\"outline\\\">Cancel</Button>\\n              </DialogClose>\\n              <Button type=\\\"submit\\\">Save changes</Button>\\n            </DialogFooter>\\n          </DialogContent>\\n        </form>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogWithStickyFooter() {\\n  return (\\n    <Example title=\\\"With Sticky Footer\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Sticky Footer</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Scrollable Content</DialogTitle>\\n            <DialogDescription>\\n              This is a dialog with scrollable content.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DialogNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </DialogTrigger>\\n        <DialogContent showCloseButton={false}>\\n          <DialogHeader>\\n            <DialogTitle>No Close Button</DialogTitle>\\n            <DialogDescription>\\n              This dialog doesn&apos;t have a close button in the top-right\\n              corner.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DialogFooter>\\n            <DialogClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </DialogClose>\\n          </DialogFooter>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nconst spokenLanguages = [\\n  { label: \\\"English\\\", value: \\\"en\\\" },\\n  { label: \\\"Spanish\\\", value: \\\"es\\\" },\\n  { label: \\\"French\\\", value: \\\"fr\\\" },\\n  { label: \\\"German\\\", value: \\\"de\\\" },\\n  { label: \\\"Italian\\\", value: \\\"it\\\" },\\n  { label: \\\"Portuguese\\\", value: \\\"pt\\\" },\\n  { label: \\\"Russian\\\", value: \\\"ru\\\" },\\n  { label: \\\"Chinese\\\", value: \\\"zh\\\" },\\n  { label: \\\"Japanese\\\", value: \\\"ja\\\" },\\n  { label: \\\"Korean\\\", value: \\\"ko\\\" },\\n  { label: \\\"Arabic\\\", value: \\\"ar\\\" },\\n  { label: \\\"Hindi\\\", value: \\\"hi\\\" },\\n  { label: \\\"Bengali\\\", value: \\\"bn\\\" },\\n  { label: \\\"Telugu\\\", value: \\\"te\\\" },\\n  { label: \\\"Marathi\\\", value: \\\"mr\\\" },\\n  { label: \\\"Kannada\\\", value: \\\"kn\\\" },\\n  { label: \\\"Malayalam\\\", value: \\\"ml\\\" },\\n]\\n\\nconst voices = [\\n  { label: \\\"Samantha\\\", value: \\\"samantha\\\" },\\n  { label: \\\"Alex\\\", value: \\\"alex\\\" },\\n  { label: \\\"Fred\\\", value: \\\"fred\\\" },\\n  { label: \\\"Victoria\\\", value: \\\"victoria\\\" },\\n  { label: \\\"Tom\\\", value: \\\"tom\\\" },\\n  { label: \\\"Karen\\\", value: \\\"karen\\\" },\\n  { label: \\\"Sam\\\", value: \\\"sam\\\" },\\n  { label: \\\"Daniel\\\", value: \\\"daniel\\\" },\\n]\\n\\nfunction DialogChatSettings() {\\n  const [tab, setTab] = React.useState(\\\"general\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n  const [accentColor, setAccentColor] = React.useState(\\\"default\\\")\\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\\\"en\\\")\\n  const [voice, setVoice] = React.useState(\\\"samantha\\\")\\n\\n  return (\\n    <Example title=\\\"Chat Settings\\\" className=\\\"items-center justify-center\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Chat Settings</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"min-w-md\\\">\\n          <DialogHeader>\\n            <DialogTitle>Chat Settings</DialogTitle>\\n            <DialogDescription>\\n              Customize your chat settings: theme, accent color, spoken\\n              language, voice, personality, and custom instructions.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <div className=\\\"flex flex-col gap-4\\\">\\n            <NativeSelect\\n              value={tab}\\n              onChange={(e) => setTab(e.target.value)}\\n              className=\\\"w-full md:hidden\\\"\\n            >\\n              <NativeSelectOption value=\\\"general\\\">General</NativeSelectOption>\\n              <NativeSelectOption value=\\\"notifications\\\">\\n                Notifications\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"personalization\\\">\\n                Personalization\\n              </NativeSelectOption>\\n              <NativeSelectOption value=\\\"security\\\">Security</NativeSelectOption>\\n            </NativeSelect>\\n            <Tabs value={tab} onValueChange={setTab}>\\n              <TabsList className=\\\"hidden w-full md:flex\\\">\\n                <TabsTrigger value=\\\"general\\\">General</TabsTrigger>\\n                <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n                <TabsTrigger value=\\\"personalization\\\">\\n                  Personalization\\n                </TabsTrigger>\\n                <TabsTrigger value=\\\"security\\\">Security</TabsTrigger>\\n              </TabsList>\\n              <div className=\\\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\\\">\\n                <TabsContent value=\\\"general\\\">\\n                  <FieldSet>\\n                    <FieldGroup>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"theme\\\">Theme</FieldLabel>\\n                        <Select value={theme} onValueChange={setTheme}>\\n                          <SelectTrigger id=\\\"theme\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"light\\\">Light</SelectItem>\\n                              <SelectItem value=\\\"dark\\\">Dark</SelectItem>\\n                              <SelectItem value=\\\"system\\\">System</SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"accent-color\\\">\\n                          Accent Color\\n                        </FieldLabel>\\n                        <Select\\n                          value={accentColor}\\n                          onValueChange={setAccentColor}\\n                        >\\n                          <SelectTrigger id=\\\"accent-color\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"default\\\">\\n                                <div className=\\\"size-3 rounded-full bg-neutral-500 dark:bg-neutral-400\\\" />\\n                                Default\\n                              </SelectItem>\\n                              <SelectItem value=\\\"red\\\">\\n                                <div className=\\\"size-3 rounded-full bg-red-500 dark:bg-red-400\\\" />\\n                                Red\\n                              </SelectItem>\\n                              <SelectItem value=\\\"blue\\\">\\n                                <div className=\\\"size-3 rounded-full bg-blue-500 dark:bg-blue-400\\\" />\\n                                Blue\\n                              </SelectItem>\\n                              <SelectItem value=\\\"green\\\">\\n                                <div className=\\\"size-3 rounded-full bg-green-500 dark:bg-green-400\\\" />\\n                                Green\\n                              </SelectItem>\\n                              <SelectItem value=\\\"purple\\\">\\n                                <div className=\\\"size-3 rounded-full bg-purple-500 dark:bg-purple-400\\\" />\\n                                Purple\\n                              </SelectItem>\\n                              <SelectItem value=\\\"pink\\\">\\n                                <div className=\\\"size-3 rounded-full bg-pink-500 dark:bg-pink-400\\\" />\\n                                Pink\\n                              </SelectItem>\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"responsive\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"spoken-language\\\">\\n                            Spoken Language\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            For best results, select the language you mainly\\n                            speak. If it&apos;s not listed, it may still be\\n                            supported via auto-detection.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Select\\n                          value={spokenLanguage}\\n                          onValueChange={setSpokenLanguage}\\n                        >\\n                          <SelectTrigger id=\\\"spoken-language\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              <SelectItem value=\\\"auto\\\">Auto</SelectItem>\\n                            </SelectGroup>\\n                            <SelectSeparator />\\n                            <SelectGroup>\\n                              {spokenLanguages.map((language) => (\\n                                <SelectItem\\n                                  key={language.value}\\n                                  value={language.value}\\n                                >\\n                                  {language.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                      <FieldSeparator />\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldLabel htmlFor=\\\"voice\\\">Voice</FieldLabel>\\n                        <Select value={voice} onValueChange={setVoice}>\\n                          <SelectTrigger id=\\\"voice\\\">\\n                            <SelectValue placeholder=\\\"Select\\\" />\\n                          </SelectTrigger>\\n                          <SelectContent align=\\\"end\\\" position=\\\"item-aligned\\\">\\n                            <SelectGroup>\\n                              {voices.map((voice) => (\\n                                <SelectItem\\n                                  key={voice.value}\\n                                  value={voice.value}\\n                                >\\n                                  {voice.label}\\n                                </SelectItem>\\n                              ))}\\n                            </SelectGroup>\\n                          </SelectContent>\\n                        </Select>\\n                      </Field>\\n                    </FieldGroup>\\n                  </FieldSet>\\n                </TabsContent>\\n                <TabsContent value=\\\"notifications\\\">\\n                  <FieldGroup>\\n                    <FieldSet>\\n                      <FieldLabel>Responses</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when ChatGPT responds to requests that take\\n                        time, like research or image generation.\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push\\\" defaultChecked disabled />\\n                          <FieldLabel htmlFor=\\\"push\\\" className=\\\"font-normal\\\">\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                    <FieldSeparator />\\n                    <FieldSet>\\n                      <FieldLabel>Tasks</FieldLabel>\\n                      <FieldDescription>\\n                        Get notified when tasks you&apos;ve created have\\n                        updates. <a href=\\\"#\\\">Manage tasks</a>\\n                      </FieldDescription>\\n                      <FieldGroup data-slot=\\\"checkbox-group\\\">\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"push-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"push-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Push notifications\\n                          </FieldLabel>\\n                        </Field>\\n                        <Field orientation=\\\"horizontal\\\">\\n                          <Checkbox id=\\\"email-tasks\\\" />\\n                          <FieldLabel\\n                            htmlFor=\\\"email-tasks\\\"\\n                            className=\\\"font-normal\\\"\\n                          >\\n                            Email notifications\\n                          </FieldLabel>\\n                        </Field>\\n                      </FieldGroup>\\n                    </FieldSet>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"personalization\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"responsive\\\">\\n                      <FieldLabel htmlFor=\\\"nickname\\\">Nickname</FieldLabel>\\n                      <InputGroup>\\n                        <InputGroupInput\\n                          id=\\\"nickname\\\"\\n                          placeholder=\\\"Broski\\\"\\n                          className=\\\"@md/field-group:max-w-[200px]\\\"\\n                        />\\n                        <InputGroupAddon align=\\\"inline-end\\\">\\n                          <Tooltip>\\n                            <TooltipTrigger asChild>\\n                              <InputGroupButton size=\\\"icon-xs\\\">\\n                                <IconPlaceholder\\n                                  lucide=\\\"InfoIcon\\\"\\n                                  tabler=\\\"IconInfoCircle\\\"\\n                                  hugeicons=\\\"AlertCircleIcon\\\"\\n                                  phosphor=\\\"InfoIcon\\\"\\n                                  remixicon=\\\"RiInformationLine\\\"\\n                                />\\n                              </InputGroupButton>\\n                            </TooltipTrigger>\\n                            <TooltipContent className=\\\"flex items-center gap-2\\\">\\n                              Used to identify you in the chat. <Kbd>N</Kbd>\\n                            </TooltipContent>\\n                          </Tooltip>\\n                        </InputGroupAddon>\\n                      </InputGroup>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field\\n                      orientation=\\\"responsive\\\"\\n                      className=\\\"@md/field-group:flex-col @2xl/field-group:flex-row\\\"\\n                    >\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"about\\\">More about you</FieldLabel>\\n                        <FieldDescription>\\n                          Tell us more about yourself. This will be used to help\\n                          us personalize your experience.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Textarea\\n                        id=\\\"about\\\"\\n                        placeholder=\\\"I'm a software engineer...\\\"\\n                        className=\\\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\\\"\\n                      />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <FieldLabel>\\n                      <Field orientation=\\\"horizontal\\\">\\n                        <FieldContent>\\n                          <FieldLabel htmlFor=\\\"customization\\\">\\n                            Enable customizations\\n                          </FieldLabel>\\n                          <FieldDescription>\\n                            Enable customizations to make ChatGPT more\\n                            personalized.\\n                          </FieldDescription>\\n                        </FieldContent>\\n                        <Switch id=\\\"customization\\\" defaultChecked />\\n                      </Field>\\n                    </FieldLabel>\\n                  </FieldGroup>\\n                </TabsContent>\\n                <TabsContent value=\\\"security\\\">\\n                  <FieldGroup>\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldLabel htmlFor=\\\"2fa\\\">\\n                          Multi-factor authentication\\n                        </FieldLabel>\\n                        <FieldDescription>\\n                          Enable multi-factor authentication to secure your\\n                          account. If you do not have a two-factor\\n                          authentication device, you can use a one-time code\\n                          sent to your email.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Switch id=\\\"2fa\\\" />\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out</FieldTitle>\\n                        <FieldDescription>\\n                          Log out of your account on this device.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out\\n                      </Button>\\n                    </Field>\\n                    <FieldSeparator />\\n                    <Field orientation=\\\"horizontal\\\">\\n                      <FieldContent>\\n                        <FieldTitle>Log out of all devices</FieldTitle>\\n                        <FieldDescription>\\n                          This will log you out of all devices, including the\\n                          current session. It may take up to 30 minutes for the\\n                          changes to take effect.\\n                        </FieldDescription>\\n                      </FieldContent>\\n                      <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                        Log Out All\\n                      </Button>\\n                    </Field>\\n                  </FieldGroup>\\n                </TabsContent>\\n              </div>\\n            </Tabs>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as DialogPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Dialog({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\\n  return <DialogPrimitive.Root data-slot=\\\"dialog\\\" {...props} />\\n}\\n\\nfunction DialogTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\\n  return <DialogPrimitive.Trigger data-slot=\\\"dialog-trigger\\\" {...props} />\\n}\\n\\nfunction DialogPortal({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\\n  return <DialogPrimitive.Portal data-slot=\\\"dialog-portal\\\" {...props} />\\n}\\n\\nfunction DialogClose({\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\\n  return <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" {...props} />\\n}\\n\\nfunction DialogOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\\n  return (\\n    <DialogPrimitive.Overlay\\n      data-slot=\\\"dialog-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogContent({\\n  className,\\n  children,\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <DialogPortal>\\n      <DialogOverlay />\\n      <DialogPrimitive.Content\\n        data-slot=\\\"dialog-content\\\"\\n        className={cn(\\n          \\\"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-background p-6 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close data-slot=\\\"dialog-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-4 right-4\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </DialogPrimitive.Close>\\n        )}\\n      </DialogPrimitive.Content>\\n    </DialogPortal>\\n  )\\n}\\n\\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-header\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogFooter({\\n  className,\\n  showCloseButton = false,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"dialog-footer\\\"\\n      className={cn(\\n        \\\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {showCloseButton && (\\n        <DialogPrimitive.Close asChild>\\n          <Button variant=\\\"outline\\\">Close</Button>\\n        </DialogPrimitive.Close>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction DialogTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\\n  return (\\n    <DialogPrimitive.Title\\n      data-slot=\\\"dialog-title\\\"\\n      className={cn(\\\"cn-font-heading leading-none font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DialogDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\\n  return (\\n    <DialogPrimitive.Description\\n      data-slot=\\\"dialog-description\\\"\\n      className={cn(\\n        \\\"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Dialog,\\n  DialogClose,\\n  DialogContent,\\n  DialogDescription,\\n  DialogFooter,\\n  DialogHeader,\\n  DialogOverlay,\\n  DialogPortal,\\n  DialogTitle,\\n  DialogTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/direction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"direction\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/direction.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Direction } from \\\"radix-ui\\\"\\n\\nfunction DirectionProvider({\\n  dir,\\n  direction,\\n  children,\\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\\\"dir\\\"]\\n}) {\\n  return (\\n    <Direction.DirectionProvider dir={direction ?? dir}>\\n      {children}\\n    </Direction.DirectionProvider>\\n  )\\n}\\n\\nconst useDirection = Direction.useDirection\\n\\nexport { DirectionProvider, useDirection }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n      \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/drawer-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer-example\",\n  \"title\": \"Drawer\",\n  \"registryDependencies\": [\n    \"drawer\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/drawer-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Drawer,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerDescription,\\n  DrawerFooter,\\n  DrawerHeader,\\n  DrawerTitle,\\n  DrawerTrigger,\\n} from \\\"@/registry/radix-vega/ui/drawer\\\"\\n\\nexport default function DrawerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DrawerScrollableContent />\\n      <DrawerWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst DRAWER_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction DrawerWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {DRAWER_SIDES.map((side) => (\\n          <Drawer\\n            key={side}\\n            direction={\\n              side === \\\"bottom\\\" ? undefined : (side as \\\"top\\\" | \\\"right\\\" | \\\"left\\\")\\n            }\\n          >\\n            <DrawerTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </DrawerTrigger>\\n            <DrawerContent className=\\\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\\\">\\n              <DrawerHeader>\\n                <DrawerTitle>Move Goal</DrawerTitle>\\n                <DrawerDescription>\\n                  Set your daily activity goal.\\n                </DrawerDescription>\\n              </DrawerHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <DrawerFooter>\\n                <Button>Submit</Button>\\n                <DrawerClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </DrawerClose>\\n              </DrawerFooter>\\n            </DrawerContent>\\n          </Drawer>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DrawerScrollableContent() {\\n  return (\\n    <Example title=\\\"Scrollable Content\\\">\\n      <Drawer direction=\\\"right\\\">\\n        <DrawerTrigger asChild>\\n          <Button variant=\\\"outline\\\">Scrollable Content</Button>\\n        </DrawerTrigger>\\n        <DrawerContent>\\n          <DrawerHeader>\\n            <DrawerTitle>Move Goal</DrawerTitle>\\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\\n          </DrawerHeader>\\n          <div className=\\\"no-scrollbar overflow-y-auto px-4\\\">\\n            {Array.from({ length: 10 }).map((_, index) => (\\n              <p\\n                key={index}\\n                className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n              >\\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\\n              </p>\\n            ))}\\n          </div>\\n          <DrawerFooter>\\n            <Button>Submit</Button>\\n            <DrawerClose asChild>\\n              <Button variant=\\\"outline\\\">Cancel</Button>\\n            </DrawerClose>\\n          </DrawerFooter>\\n        </DrawerContent>\\n      </Drawer>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/drawer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drawer\",\n  \"dependencies\": [\n    \"vaul\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/drawer.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Drawer as DrawerPrimitive } from \\\"vaul\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Drawer({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\\n  return <DrawerPrimitive.Root data-slot=\\\"drawer\\\" {...props} />\\n}\\n\\nfunction DrawerTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\\n  return <DrawerPrimitive.Trigger data-slot=\\\"drawer-trigger\\\" {...props} />\\n}\\n\\nfunction DrawerPortal({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\\n  return <DrawerPrimitive.Portal data-slot=\\\"drawer-portal\\\" {...props} />\\n}\\n\\nfunction DrawerClose({\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\\n  return <DrawerPrimitive.Close data-slot=\\\"drawer-close\\\" {...props} />\\n}\\n\\nfunction DrawerOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\\n  return (\\n    <DrawerPrimitive.Overlay\\n      data-slot=\\\"drawer-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerContent({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\\n  return (\\n    <DrawerPortal data-slot=\\\"drawer-portal\\\">\\n      <DrawerOverlay />\\n      <DrawerPrimitive.Content\\n        data-slot=\\\"drawer-content\\\"\\n        className={cn(\\n          \\\"group/drawer-content fixed z-50 flex h-auto flex-col bg-background text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div className=\\\"mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\\\" />\\n        {children}\\n      </DrawerPrimitive.Content>\\n    </DrawerPortal>\\n  )\\n}\\n\\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-header\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"drawer-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\\n  return (\\n    <DrawerPrimitive.Title\\n      data-slot=\\\"drawer-title\\\"\\n      className={cn(\\\"cn-font-heading font-medium text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DrawerDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\\n  return (\\n    <DrawerPrimitive.Description\\n      data-slot=\\\"drawer-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Drawer,\\n  DrawerPortal,\\n  DrawerOverlay,\\n  DrawerTrigger,\\n  DrawerClose,\\n  DrawerContent,\\n  DrawerHeader,\\n  DrawerFooter,\\n  DrawerTitle,\\n  DrawerDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n      \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/dropdown-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu-example\",\n  \"title\": \"Dropdown Menu\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/dropdown-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuPortal,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubContent,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function DropdownMenuExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DropdownMenuBasic />\\n      <DropdownMenuComplex />\\n      <DropdownMenuWithIcons />\\n      <DropdownMenuWithShortcuts />\\n      <DropdownMenuWithSubmenu />\\n      <DropdownMenuWithCheckboxes />\\n      <DropdownMenuWithCheckboxesIcons />\\n      <DropdownMenuWithRadio />\\n      <DropdownMenuWithRadioIcons />\\n      <DropdownMenuWithDestructive />\\n      <DropdownMenuWithAvatar />\\n      <DropdownMenuInDialog />\\n      <DropdownMenuWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DropdownMenuBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>Profile</DropdownMenuItem>\\n            <DropdownMenuItem>Billing</DropdownMenuItem>\\n            <DropdownMenuItem>Settings</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>GitHub</DropdownMenuItem>\\n            <DropdownMenuItem>Support</DropdownMenuItem>\\n            <DropdownMenuItem disabled>API</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SettingsIcon\\\"\\n                tabler=\\\"IconSettings\\\"\\n                hugeicons=\\\"SettingsIcon\\\"\\n                phosphor=\\\"GearIcon\\\"\\n                remixicon=\\\"RiSettingsLine\\\"\\n              />\\n              Settings\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Billing\\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Settings\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              Keyboard shortcuts\\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              Log out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>Team</DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Email</DropdownMenuItem>\\n                    <DropdownMenuItem>Message</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>More...</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuItem>\\n              New Team\\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxes() {\\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\\n  const [showPanel, setShowPanel] = React.useState(false)\\n\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Checkboxes\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-40\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={showStatusBar}\\n              onCheckedChange={setShowStatusBar}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showActivityBar}\\n              onCheckedChange={setShowActivityBar}\\n              disabled\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"ActivityIcon\\\"\\n                tabler=\\\"IconActivity\\\"\\n                hugeicons=\\\"ActivityIcon\\\"\\n                phosphor=\\\"ActivityIcon\\\"\\n                remixicon=\\\"RiPulseLine\\\"\\n              />\\n              Activity Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={showPanel}\\n              onCheckedChange={setShowPanel}\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"PanelLeftIcon\\\"\\n                tabler=\\\"IconLayoutSidebar\\\"\\n                hugeicons=\\\"LayoutLeftIcon\\\"\\n                phosphor=\\\"SidebarIcon\\\"\\n                remixicon=\\\"RiSideBarLine\\\"\\n              />\\n              Panel\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadio() {\\n  const [position, setPosition] = React.useState(\\\"bottom\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio Group\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Radio Group\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={position}\\n              onValueChange={setPosition}\\n            >\\n              <DropdownMenuRadioItem value=\\\"top\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUp01Icon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                Top\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bottom\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowDownIcon\\\"\\n                  tabler=\\\"IconArrowDown\\\"\\n                  hugeicons=\\\"ArrowDown01Icon\\\"\\n                  phosphor=\\\"ArrowDownIcon\\\"\\n                  remixicon=\\\"RiArrowDownLine\\\"\\n                />\\n                Bottom\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"right\\\" disabled>\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowRightIcon\\\"\\n                  tabler=\\\"IconArrowRight\\\"\\n                  hugeicons=\\\"ArrowRight01Icon\\\"\\n                  phosphor=\\\"ArrowRightIcon\\\"\\n                  remixicon=\\\"RiArrowRightLine\\\"\\n                />\\n                Right\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithCheckboxesIcons() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n\\n  return (\\n    <Example title=\\\"Checkboxes with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Notifications\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MailIcon\\\"\\n                tabler=\\\"IconMail\\\"\\n                hugeicons=\\\"MailIcon\\\"\\n                phosphor=\\\"EnvelopeIcon\\\"\\n                remixicon=\\\"RiMailLine\\\"\\n              />\\n              Email notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"MessageSquareIcon\\\"\\n                tabler=\\\"IconMessage\\\"\\n                hugeicons=\\\"MessageIcon\\\"\\n                phosphor=\\\"ChatCircleIcon\\\"\\n                remixicon=\\\"RiChat1Line\\\"\\n              />\\n              SMS notifications\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.push}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, push: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"BellIcon\\\"\\n                tabler=\\\"IconBell\\\"\\n                hugeicons=\\\"NotificationIcon\\\"\\n                phosphor=\\\"BellIcon\\\"\\n                remixicon=\\\"RiNotificationLine\\\"\\n              />\\n              Push notifications\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithRadioIcons() {\\n  const [paymentMethod, setPaymentMethod] = React.useState(\\\"card\\\")\\n\\n  return (\\n    <Example title=\\\"Radio with Icons\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\">Payment Method</Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"min-w-56\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup\\n              value={paymentMethod}\\n              onValueChange={setPaymentMethod}\\n            >\\n              <DropdownMenuRadioItem value=\\\"card\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Credit Card\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"paypal\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"WalletIcon\\\"\\n                  tabler=\\\"IconWallet\\\"\\n                  hugeicons=\\\"WalletIcon\\\"\\n                  phosphor=\\\"WalletIcon\\\"\\n                  remixicon=\\\"RiWalletLine\\\"\\n                />\\n                PayPal\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem value=\\\"bank\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"Building2Icon\\\"\\n                  tabler=\\\"IconBuildingBank\\\"\\n                  hugeicons=\\\"BankIcon\\\"\\n                  phosphor=\\\"BankIcon\\\"\\n                  remixicon=\\\"RiBankLine\\\"\\n                />\\n                Bank Transfer\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithDestructive() {\\n  return (\\n    <Example title=\\\"With Destructive Items\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Actions\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent>\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"PencilIcon\\\"\\n                tabler=\\\"IconPencil\\\"\\n                hugeicons=\\\"EditIcon\\\"\\n                phosphor=\\\"PencilIcon\\\"\\n                remixicon=\\\"RiPencilLine\\\"\\n              />\\n              Edit\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ShareIcon\\\"\\n                tabler=\\\"IconShare\\\"\\n                hugeicons=\\\"ShareIcon\\\"\\n                phosphor=\\\"ShareIcon\\\"\\n                remixicon=\\\"RiShareLine\\\"\\n              />\\n              Share\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ArchiveIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"ArchiveIcon\\\"\\n                remixicon=\\\"RiArchiveLine\\\"\\n              />\\n              Archive\\n            </DropdownMenuItem>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"TrashIcon\\\"\\n                tabler=\\\"IconTrash\\\"\\n                hugeicons=\\\"DeleteIcon\\\"\\n                phosphor=\\\"TrashIcon\\\"\\n                remixicon=\\\"RiDeleteBinLine\\\"\\n              />\\n              Delete\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithAvatar() {\\n  const menuContent = (\\n    <>\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BadgeCheckIcon\\\"\\n            tabler=\\\"IconRosetteDiscountCheck\\\"\\n            hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n          />\\n          Account\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"CreditCardIcon\\\"\\n            tabler=\\\"IconCreditCard\\\"\\n            hugeicons=\\\"CreditCardIcon\\\"\\n            phosphor=\\\"CreditCardIcon\\\"\\n            remixicon=\\\"RiBankCardLine\\\"\\n          />\\n          Billing\\n        </DropdownMenuItem>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"BellIcon\\\"\\n            tabler=\\\"IconBell\\\"\\n            hugeicons=\\\"NotificationIcon\\\"\\n            phosphor=\\\"BellIcon\\\"\\n            remixicon=\\\"RiNotificationLine\\\"\\n          />\\n          Notifications\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n      <DropdownMenuSeparator />\\n      <DropdownMenuGroup>\\n        <DropdownMenuItem>\\n          <IconPlaceholder\\n            lucide=\\\"LogOutIcon\\\"\\n            tabler=\\\"IconLogout\\\"\\n            hugeicons=\\\"LogoutIcon\\\"\\n            phosphor=\\\"SignOutIcon\\\"\\n            remixicon=\\\"RiLogoutBoxLine\\\"\\n          />\\n          Sign Out\\n        </DropdownMenuItem>\\n      </DropdownMenuGroup>\\n    </>\\n  )\\n\\n  return (\\n    <Example title=\\\"With Avatar\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button\\n              variant=\\\"outline\\\"\\n              className=\\\"h-12 justify-start px-2 md:max-w-[200px]\\\"\\n            >\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"Shadcn\\\" />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-semibold\\\">shadcn</span>\\n                <span className=\\\"truncate text-xs text-muted-foreground\\\">\\n                  shadcn@example.com\\n                </span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"rounded-full\\\">\\n              <Avatar>\\n                <AvatarImage src=\\\"https://github.com/shadcn.png\\\" alt=\\\"shadcn\\\" />\\n                <AvatarFallback>LR</AvatarFallback>\\n              </Avatar>\\n            </Button>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent align=\\\"end\\\" side=\\\"top\\\">\\n            {menuContent}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the dropdown menu.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Menu\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent>\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"CopyIcon\\\"\\n                    tabler=\\\"IconCopy\\\"\\n                    hugeicons=\\\"CopyIcon\\\"\\n                    phosphor=\\\"CopyIcon\\\"\\n                    remixicon=\\\"RiFileCopyLine\\\"\\n                  />\\n                  Copy\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ScissorsIcon\\\"\\n                    tabler=\\\"IconCut\\\"\\n                    hugeicons=\\\"ScissorIcon\\\"\\n                    phosphor=\\\"ScissorsIcon\\\"\\n                    remixicon=\\\"RiScissorsLine\\\"\\n                  />\\n                  Cut\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ClipboardPasteIcon\\\"\\n                    tabler=\\\"IconClipboard\\\"\\n                    hugeicons=\\\"ClipboardIcon\\\"\\n                    phosphor=\\\"ClipboardIcon\\\"\\n                    remixicon=\\\"RiClipboardLine\\\"\\n                  />\\n                  Paste\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuSub>\\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\\n                <DropdownMenuPortal>\\n                  <DropdownMenuSubContent>\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                      <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                      <DropdownMenuItem>Name Window...</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                    <DropdownMenuSeparator />\\n                    <DropdownMenuGroup>\\n                      <DropdownMenuItem>Developer Tools</DropdownMenuItem>\\n                    </DropdownMenuGroup>\\n                  </DropdownMenuSubContent>\\n                </DropdownMenuPortal>\\n              </DropdownMenuSub>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuGroup>\\n                <DropdownMenuItem variant=\\\"destructive\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TrashIcon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"DeleteIcon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                  />\\n                  Delete\\n                </DropdownMenuItem>\\n              </DropdownMenuGroup>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Open\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"w-44\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CopyIcon\\\"\\n                tabler=\\\"IconCopy\\\"\\n                hugeicons=\\\"CopyIcon\\\"\\n                phosphor=\\\"CopyIcon\\\"\\n                remixicon=\\\"RiFileCopyLine\\\"\\n              />\\n              Copy\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"ScissorsIcon\\\"\\n                tabler=\\\"IconCut\\\"\\n                hugeicons=\\\"ScissorIcon\\\"\\n                phosphor=\\\"ScissorsIcon\\\"\\n                remixicon=\\\"RiScissorsLine\\\"\\n              />\\n              Cut\\n            </DropdownMenuItem>\\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showBookmarks}\\n              onCheckedChange={setShowBookmarks}\\n            >\\n              Bookmarks\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              inset\\n              checked={showUrls}\\n              onCheckedChange={setShowUrls}\\n            >\\n              Full URLs\\n            </DropdownMenuCheckboxItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\\n              <DropdownMenuRadioItem inset value=\\\"light\\\">\\n                Light\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"dark\\\">\\n                Dark\\n              </DropdownMenuRadioItem>\\n              <DropdownMenuRadioItem inset value=\\\"system\\\">\\n                System\\n              </DropdownMenuRadioItem>\\n            </DropdownMenuRadioGroup>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuSub>\\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\\n            <DropdownMenuPortal>\\n              <DropdownMenuSubContent>\\n                <DropdownMenuGroup>\\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\\n                </DropdownMenuGroup>\\n              </DropdownMenuSubContent>\\n            </DropdownMenuPortal>\\n          </DropdownMenuSub>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction DropdownMenuComplex() {\\n  const [notifications, setNotifications] = React.useState({\\n    email: true,\\n    sms: false,\\n    push: true,\\n  })\\n  const [theme, setTheme] = React.useState(\\\"light\\\")\\n\\n  return (\\n    <Example title=\\\"Complex\\\">\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Complex Menu\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent className=\\\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\\\">\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>File</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n              />\\n              New File\\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FolderIcon\\\"\\n                tabler=\\\"IconFolder\\\"\\n                hugeicons=\\\"FolderIcon\\\"\\n                phosphor=\\\"FolderIcon\\\"\\n                remixicon=\\\"RiFolderLine\\\"\\n              />\\n              New Folder\\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderOpenIcon\\\"\\n                  tabler=\\\"IconFolderOpen\\\"\\n                  hugeicons=\\\"FolderOpenIcon\\\"\\n                  phosphor=\\\"FolderOpenIcon\\\"\\n                  remixicon=\\\"RiFolderOpenLine\\\"\\n                />\\n                Open Recent\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Alpha\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FileCodeIcon\\\"\\n                        tabler=\\\"IconFileCode\\\"\\n                        hugeicons=\\\"CodeIcon\\\"\\n                        phosphor=\\\"CodeIcon\\\"\\n                        remixicon=\\\"RiCodeLine\\\"\\n                      />\\n                      Project Beta\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                        />\\n                        More Projects\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Gamma\\n                          </DropdownMenuItem>\\n                          <DropdownMenuItem>\\n                            <IconPlaceholder\\n                              lucide=\\\"FileCodeIcon\\\"\\n                              tabler=\\\"IconFileCode\\\"\\n                              hugeicons=\\\"CodeIcon\\\"\\n                              phosphor=\\\"CodeIcon\\\"\\n                              remixicon=\\\"RiCodeLine\\\"\\n                            />\\n                            Project Delta\\n                          </DropdownMenuItem>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"FolderSearchIcon\\\"\\n                        tabler=\\\"IconFolderSearch\\\"\\n                        hugeicons=\\\"SearchIcon\\\"\\n                        phosphor=\\\"MagnifyingGlassIcon\\\"\\n                        remixicon=\\\"RiSearchLine\\\"\\n                      />\\n                      Browse...\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"SaveIcon\\\"\\n                tabler=\\\"IconDeviceFloppy\\\"\\n                hugeicons=\\\"FloppyDiskIcon\\\"\\n                phosphor=\\\"FloppyDiskIcon\\\"\\n                remixicon=\\\"RiSaveLine\\\"\\n              />\\n              Save\\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"DownloadIcon\\\"\\n                tabler=\\\"IconDownload\\\"\\n                hugeicons=\\\"DownloadIcon\\\"\\n                phosphor=\\\"DownloadIcon\\\"\\n                remixicon=\\\"RiDownloadLine\\\"\\n              />\\n              Export\\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>View</DropdownMenuLabel>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.email}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, email: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"EyeIcon\\\"\\n                tabler=\\\"IconEye\\\"\\n                hugeicons=\\\"EyeIcon\\\"\\n                phosphor=\\\"EyeIcon\\\"\\n                remixicon=\\\"RiEyeLine\\\"\\n              />\\n              Show Sidebar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuCheckboxItem\\n              checked={notifications.sms}\\n              onCheckedChange={(checked) =>\\n                setNotifications({ ...notifications, sms: checked === true })\\n              }\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"LayoutIcon\\\"\\n                tabler=\\\"IconLayout\\\"\\n                hugeicons=\\\"LayoutIcon\\\"\\n                phosphor=\\\"LayoutIcon\\\"\\n                remixicon=\\\"RiLayoutLine\\\"\\n              />\\n              Show Status Bar\\n            </DropdownMenuCheckboxItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"PaletteIcon\\\"\\n                  tabler=\\\"IconPalette\\\"\\n                  hugeicons=\\\"PaintBoardIcon\\\"\\n                  phosphor=\\\"PaletteIcon\\\"\\n                  remixicon=\\\"RiPaletteLine\\\"\\n                />\\n                Theme\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\\n                    <DropdownMenuRadioGroup\\n                      value={theme}\\n                      onValueChange={setTheme}\\n                    >\\n                      <DropdownMenuRadioItem value=\\\"light\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"SunIcon\\\"\\n                          tabler=\\\"IconSun\\\"\\n                          hugeicons=\\\"SunIcon\\\"\\n                          phosphor=\\\"SunIcon\\\"\\n                          remixicon=\\\"RiSunLine\\\"\\n                        />\\n                        Light\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"dark\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MoonIcon\\\"\\n                          tabler=\\\"IconMoon\\\"\\n                          hugeicons=\\\"MoonIcon\\\"\\n                          phosphor=\\\"MoonIcon\\\"\\n                          remixicon=\\\"RiMoonLine\\\"\\n                        />\\n                        Dark\\n                      </DropdownMenuRadioItem>\\n                      <DropdownMenuRadioItem value=\\\"system\\\">\\n                        <IconPlaceholder\\n                          lucide=\\\"MonitorIcon\\\"\\n                          tabler=\\\"IconDeviceDesktop\\\"\\n                          hugeicons=\\\"ComputerIcon\\\"\\n                          phosphor=\\\"MonitorIcon\\\"\\n                          remixicon=\\\"RiComputerLine\\\"\\n                        />\\n                        System\\n                      </DropdownMenuRadioItem>\\n                    </DropdownMenuRadioGroup>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"UserIcon\\\"\\n                tabler=\\\"IconUser\\\"\\n                hugeicons=\\\"UserIcon\\\"\\n                phosphor=\\\"UserIcon\\\"\\n                remixicon=\\\"RiUserLine\\\"\\n              />\\n              Profile\\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"CreditCardIcon\\\"\\n                tabler=\\\"IconCreditCard\\\"\\n                hugeicons=\\\"CreditCardIcon\\\"\\n                phosphor=\\\"CreditCardIcon\\\"\\n                remixicon=\\\"RiBankCardLine\\\"\\n              />\\n              Billing\\n            </DropdownMenuItem>\\n            <DropdownMenuSub>\\n              <DropdownMenuSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </DropdownMenuSubTrigger>\\n              <DropdownMenuPortal>\\n                <DropdownMenuSubContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"KeyboardIcon\\\"\\n                        tabler=\\\"IconKeyboard\\\"\\n                        hugeicons=\\\"KeyboardIcon\\\"\\n                        phosphor=\\\"KeyboardIcon\\\"\\n                        remixicon=\\\"RiKeyboardLine\\\"\\n                      />\\n                      Keyboard Shortcuts\\n                    </DropdownMenuItem>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"LanguagesIcon\\\"\\n                        tabler=\\\"IconLanguage\\\"\\n                        hugeicons=\\\"LanguageCircleIcon\\\"\\n                        phosphor=\\\"TranslateIcon\\\"\\n                        remixicon=\\\"RiTranslate\\\"\\n                      />\\n                      Language\\n                    </DropdownMenuItem>\\n                    <DropdownMenuSub>\\n                      <DropdownMenuSubTrigger>\\n                        <IconPlaceholder\\n                          lucide=\\\"BellIcon\\\"\\n                          tabler=\\\"IconBell\\\"\\n                          hugeicons=\\\"NotificationIcon\\\"\\n                          phosphor=\\\"BellIcon\\\"\\n                          remixicon=\\\"RiNotificationLine\\\"\\n                        />\\n                        Notifications\\n                      </DropdownMenuSubTrigger>\\n                      <DropdownMenuPortal>\\n                        <DropdownMenuSubContent>\\n                          <DropdownMenuGroup>\\n                            <DropdownMenuLabel>\\n                              Notification Types\\n                            </DropdownMenuLabel>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.push}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  push: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"BellIcon\\\"\\n                                tabler=\\\"IconBell\\\"\\n                                hugeicons=\\\"NotificationIcon\\\"\\n                                phosphor=\\\"BellIcon\\\"\\n                                remixicon=\\\"RiNotificationLine\\\"\\n                              />\\n                              Push Notifications\\n                            </DropdownMenuCheckboxItem>\\n                            <DropdownMenuCheckboxItem\\n                              checked={notifications.email}\\n                              onCheckedChange={(checked) =>\\n                                setNotifications({\\n                                  ...notifications,\\n                                  email: checked === true,\\n                                })\\n                              }\\n                            >\\n                              <IconPlaceholder\\n                                lucide=\\\"MailIcon\\\"\\n                                tabler=\\\"IconMail\\\"\\n                                hugeicons=\\\"MailIcon\\\"\\n                                phosphor=\\\"EnvelopeIcon\\\"\\n                                remixicon=\\\"RiMailLine\\\"\\n                              />\\n                              Email Notifications\\n                            </DropdownMenuCheckboxItem>\\n                          </DropdownMenuGroup>\\n                        </DropdownMenuSubContent>\\n                      </DropdownMenuPortal>\\n                    </DropdownMenuSub>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>\\n                      <IconPlaceholder\\n                        lucide=\\\"ShieldIcon\\\"\\n                        tabler=\\\"IconShield\\\"\\n                        hugeicons=\\\"ShieldIcon\\\"\\n                        phosphor=\\\"ShieldIcon\\\"\\n                        remixicon=\\\"RiShieldLine\\\"\\n                      />\\n                      Privacy & Security\\n                    </DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuSubContent>\\n              </DropdownMenuPortal>\\n            </DropdownMenuSub>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"HelpCircleIcon\\\"\\n                tabler=\\\"IconHelpCircle\\\"\\n                hugeicons=\\\"HelpCircleIcon\\\"\\n                phosphor=\\\"QuestionIcon\\\"\\n                remixicon=\\\"RiQuestionLine\\\"\\n              />\\n              Help & Support\\n            </DropdownMenuItem>\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"FileTextIcon\\\"\\n                tabler=\\\"IconFileText\\\"\\n                hugeicons=\\\"File01Icon\\\"\\n                phosphor=\\\"FileTextIcon\\\"\\n                remixicon=\\\"RiFileTextLine\\\"\\n              />\\n              Documentation\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n          <DropdownMenuSeparator />\\n          <DropdownMenuGroup>\\n            <DropdownMenuItem variant=\\\"destructive\\\">\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Sign Out\\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\\n            </DropdownMenuItem>\\n          </DropdownMenuGroup>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { DropdownMenu as DropdownMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction DropdownMenu({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\\n  return <DropdownMenuPrimitive.Root data-slot=\\\"dropdown-menu\\\" {...props} />\\n}\\n\\nfunction DropdownMenuPortal({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal data-slot=\\\"dropdown-menu-portal\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuTrigger({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\\n  return (\\n    <DropdownMenuPrimitive.Trigger\\n      data-slot=\\\"dropdown-menu-trigger\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuContent({\\n  className,\\n  align = \\\"start\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\\n  return (\\n    <DropdownMenuPrimitive.Portal>\\n      <DropdownMenuPrimitive.Content\\n        data-slot=\\\"dropdown-menu-content\\\"\\n        sideOffset={sideOffset}\\n        align={align}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </DropdownMenuPrimitive.Portal>\\n  )\\n}\\n\\nfunction DropdownMenuGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\\n  return (\\n    <DropdownMenuPrimitive.Group data-slot=\\\"dropdown-menu-group\\\" {...props} />\\n  )\\n}\\n\\nfunction DropdownMenuItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Item\\n      data-slot=\\\"dropdown-menu-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.CheckboxItem\\n      data-slot=\\\"dropdown-menu-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-checkbox-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction DropdownMenuRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\\n  return (\\n    <DropdownMenuPrimitive.RadioGroup\\n      data-slot=\\\"dropdown-menu-radio-group\\\"\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.RadioItem\\n      data-slot=\\\"dropdown-menu-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span\\n        className=\\\"pointer-events-none absolute right-2 flex items-center justify-center\\\"\\n        data-slot=\\\"dropdown-menu-radio-item-indicator\\\"\\n      >\\n        <DropdownMenuPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </DropdownMenuPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </DropdownMenuPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction DropdownMenuLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.Label\\n      data-slot=\\\"dropdown-menu-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\\n  return (\\n    <DropdownMenuPrimitive.Separator\\n      data-slot=\\\"dropdown-menu-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"dropdown-menu-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction DropdownMenuSub({\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\\n  return <DropdownMenuPrimitive.Sub data-slot=\\\"dropdown-menu-sub\\\" {...props} />\\n}\\n\\nfunction DropdownMenuSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <DropdownMenuPrimitive.SubTrigger\\n      data-slot=\\\"dropdown-menu-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto\\\"\\n      />\\n    </DropdownMenuPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction DropdownMenuSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\\n  return (\\n    <DropdownMenuPrimitive.SubContent\\n      data-slot=\\\"dropdown-menu-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  DropdownMenu,\\n  DropdownMenuPortal,\\n  DropdownMenuTrigger,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuLabel,\\n  DropdownMenuItem,\\n  DropdownMenuCheckboxItem,\\n  DropdownMenuRadioGroup,\\n  DropdownMenuRadioItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuSub,\\n  DropdownMenuSubTrigger,\\n  DropdownMenuSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/empty-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-example\",\n  \"title\": \"Empty\",\n  \"registryDependencies\": [\n    \"button\",\n    \"empty\",\n    \"input-group\",\n    \"kbd\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/empty-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-vega/ui/empty\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport { Kbd } from \\\"@/registry/radix-vega/ui/kbd\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function EmptyExample() {\\n  return (\\n    <ExampleWrapper>\\n      <EmptyBasic />\\n      <EmptyWithMutedBackground />\\n      <EmptyWithBorder />\\n      <EmptyWithIcon />\\n      <EmptyWithMutedBackgroundAlt />\\n      <EmptyInCard />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction EmptyBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackground() {\\n  return (\\n    <Example title=\\\"With Muted Background\\\">\\n      <Empty className=\\\"bg-muted\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>No results found</EmptyTitle>\\n          <EmptyDescription>\\n            No results found for your search. Try adjusting your search terms.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button>Try again</Button>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithBorder() {\\n  return (\\n    <Example title=\\\"With Border\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Empty className=\\\"border\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>Nothing to see here</EmptyTitle>\\n          <EmptyDescription>\\n            No posts have been created yet. Get started by{\\\" \\\"}\\n            <a href=\\\"#\\\">creating your first post</a>.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <Button variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"PlusIcon\\\"\\n              tabler=\\\"IconPlus\\\"\\n              hugeicons=\\\"PlusSignIcon\\\"\\n              phosphor=\\\"PlusIcon\\\"\\n              remixicon=\\\"RiAddLine\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            New Post\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyWithMutedBackgroundAlt() {\\n  return (\\n    <Example title=\\\"With Muted Background Alt\\\">\\n      <Empty className=\\\"bg-muted/50\\\">\\n        <EmptyHeader>\\n          <EmptyTitle>404 - Not Found</EmptyTitle>\\n          <EmptyDescription>\\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\\n            for what you need below.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <InputGroup className=\\\"w-3/4\\\">\\n            <InputGroupInput placeholder=\\\"Try searching for pages...\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"CircleDashedIcon\\\"\\n                tabler=\\\"IconCircleDashed\\\"\\n                hugeicons=\\\"DashedLineCircleIcon\\\"\\n                phosphor=\\\"CircleDashedIcon\\\"\\n                remixicon=\\\"RiLoaderLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>/</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <EmptyDescription>\\n            Need help? <a href=\\\"#\\\">Contact support</a>\\n          </EmptyDescription>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\\nfunction EmptyInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Empty>\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"Folder01Icon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowUpRightIcon\\\"\\n                tabler=\\\"IconArrowUpRight\\\"\\n                hugeicons=\\\"ArrowUpRight01Icon\\\"\\n                phosphor=\\\"ArrowUpRightIcon\\\"\\n                remixicon=\\\"RiArrowRightUpLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/empty.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/empty.tsx\",\n      \"content\": \"import { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Empty({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty\\\"\\n      className={cn(\\n        \\\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-lg border-dashed p-12 text-center text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-header\\\"\\n      className={cn(\\\"flex max-w-sm flex-col items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst emptyMediaVariants = cva(\\n  \\\"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction EmptyMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof emptyMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-icon\\\"\\n      data-variant={variant}\\n      className={cn(emptyMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading text-lg font-medium tracking-tight\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-description\\\"\\n      className={cn(\\n        \\\"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"empty-content\\\"\\n      className={cn(\\n        \\\"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Empty,\\n  EmptyHeader,\\n  EmptyTitle,\\n  EmptyDescription,\\n  EmptyContent,\\n  EmptyMedia,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example\",\n  \"title\": \"Example\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/components/example.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className=\\\"w-full bg-muted dark:bg-background\\\">\\n      <div\\n        data-slot=\\\"example-wrapper\\\"\\n        className={cn(\\n          \\\"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction Example({\\n  title,\\n  children,\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  title?: string\\n  containerClassName?: string\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"example\\\"\\n      className={cn(\\n        \\\"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\\\",\\n        containerClassName\\n      )}\\n      {...props}\\n    >\\n      {title && (\\n        <div className=\\\"px-1.5 py-2 text-xs font-medium text-muted-foreground\\\">\\n          {title}\\n        </div>\\n      )}\\n      <div\\n        data-slot=\\\"example-content\\\"\\n        className={cn(\\n          \\\"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\\\",\\n          className\\n        )}\\n      >\\n        {children}\\n      </div>\\n    </div>\\n  )\\n}\\n\\nexport { ExampleWrapper, Example }\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"type\": \"registry:component\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/field-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field-example\",\n  \"title\": \"Field\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"input-otp\",\n    \"native-select\",\n    \"radio-group\",\n    \"select\",\n    \"slider\",\n    \"switch\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/field-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport { Checkbox } from \\\"@/registry/radix-vega/ui/checkbox\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n  FieldTitle,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-vega/ui/input-otp\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-vega/ui/native-select\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-vega/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport { Slider } from \\\"@/registry/radix-vega/ui/slider\\\"\\nimport { Switch } from \\\"@/registry/radix-vega/ui/switch\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\n\\nexport default function FieldExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputFields />\\n      <TextareaFields />\\n      <SelectFields />\\n      <CheckboxFields />\\n      <RadioFields />\\n      <SwitchFields />\\n      <SliderFields />\\n      <NativeSelectFields />\\n      <InputOTPFields />\\n      <HorizontalFields />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputFields() {\\n  return (\\n    <Example title=\\\"Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-basic\\\">Basic Input</FieldLabel>\\n          <Input id=\\\"input-basic\\\" placeholder=\\\"Enter text\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-with-desc\\\">\\n            Input with Description\\n          </FieldLabel>\\n          <Input id=\\\"input-with-desc\\\" placeholder=\\\"Enter your username\\\" />\\n          <FieldDescription>\\n            Choose a unique username for your account.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-desc-first\\\">Email Address</FieldLabel>\\n          <FieldDescription>\\n            We&apos;ll never share your email with anyone.\\n          </FieldDescription>\\n          <Input\\n            id=\\\"input-desc-first\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"email@example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-required\\\">\\n            Required Field <span className=\\\"text-destructive\\\">*</span>\\n          </FieldLabel>\\n          <Input\\n            id=\\\"input-required\\\"\\n            placeholder=\\\"This field is required\\\"\\n            required\\n          />\\n          <FieldDescription>This field must be filled out.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-disabled\\\">Disabled Input</FieldLabel>\\n          <Input id=\\\"input-disabled\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-badge\\\">\\n            Input with Badge{\\\" \\\"}\\n            <Badge variant=\\\"secondary\\\" className=\\\"ml-auto\\\">\\n              Recommended\\n            </Badge>\\n          </FieldLabel>\\n          <Input id=\\\"input-badge\\\" placeholder=\\\"Enter value\\\" />\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"input-invalid\\\">Invalid Input</FieldLabel>\\n          <Input\\n            id=\\\"input-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"input-disabled-field\\\">Disabled Field</FieldLabel>\\n          <Input id=\\\"input-disabled-field\\\" placeholder=\\\"Cannot edit\\\" disabled />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaFields() {\\n  return (\\n    <Example title=\\\"Textarea Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-basic\\\">Basic Textarea</FieldLabel>\\n          <Textarea id=\\\"textarea-basic\\\" placeholder=\\\"Enter your message\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comments\\\">Comments</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-comments\\\"\\n            placeholder=\\\"Share your thoughts...\\\"\\n            className=\\\"min-h-[100px]\\\"\\n          />\\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-bio\\\">Bio</FieldLabel>\\n          <FieldDescription>\\n            Tell us about yourself in a few sentences.\\n          </FieldDescription>\\n          <Textarea\\n            id=\\\"textarea-bio\\\"\\n            placeholder=\\\"I am a...\\\"\\n            className=\\\"min-h-[120px]\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-desc-after\\\">Message</FieldLabel>\\n          <Textarea id=\\\"textarea-desc-after\\\" placeholder=\\\"Enter your message\\\" />\\n          <FieldDescription>\\n            Enter your message so it is long enough to test the layout.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"textarea-invalid\\\">Invalid Textarea</FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-invalid\\\"\\n            placeholder=\\\"This field has an error\\\"\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"textarea-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-disabled-field\\\"\\n            placeholder=\\\"Cannot edit\\\"\\n            disabled\\n          />\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectFields() {\\n  return (\\n    <Example title=\\\"Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-basic\\\">Basic Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-basic\\\">\\n              <SelectValue placeholder=\\\"Choose an option\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-country\\\">Country</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-country\\\">\\n              <SelectValue placeholder=\\\"Select your country\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <Select>\\n            <SelectTrigger id=\\\"select-timezone\\\">\\n              <SelectValue placeholder=\\\"Select timezone\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"utc\\\">UTC</SelectItem>\\n                <SelectItem value=\\\"est\\\">Eastern Time</SelectItem>\\n                <SelectItem value=\\\"pst\\\">Pacific Time</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-invalid\\\">Invalid Select</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"This field has an error\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <Select disabled>\\n            <SelectTrigger id=\\\"select-disabled-field\\\">\\n              <SelectValue placeholder=\\\"Cannot select\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"option1\\\">Option 1</SelectItem>\\n                <SelectItem value=\\\"option2\\\">Option 2</SelectItem>\\n                <SelectItem value=\\\"option3\\\">Option 3</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectFields() {\\n  return (\\n    <Example title=\\\"Native Select Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-basic\\\">\\n            Basic Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-basic\\\">\\n            <NativeSelectOption value=\\\"\\\">Choose an option</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n          <NativeSelect id=\\\"native-select-country\\\">\\n            <NativeSelectOption value=\\\"\\\">\\n              Select your country\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Select the country where you currently reside.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-timezone\\\">Timezone</FieldLabel>\\n          <FieldDescription>\\n            Choose your local timezone for accurate scheduling.\\n          </FieldDescription>\\n          <NativeSelect id=\\\"native-select-timezone\\\">\\n            <NativeSelectOption value=\\\"\\\">Select timezone</NativeSelectOption>\\n            <NativeSelectOption value=\\\"utc\\\">UTC</NativeSelectOption>\\n            <NativeSelectOption value=\\\"est\\\">Eastern Time</NativeSelectOption>\\n            <NativeSelectOption value=\\\"pst\\\">Pacific Time</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"native-select-grouped\\\">\\n            Grouped Options\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-grouped\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a region</NativeSelectOption>\\n            <NativeSelectOptGroup label=\\\"North America\\\">\\n              <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n              <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n              <NativeSelectOption value=\\\"mx\\\">Mexico</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n            <NativeSelectOptGroup label=\\\"Europe\\\">\\n              <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n              <NativeSelectOption value=\\\"fr\\\">France</NativeSelectOption>\\n              <NativeSelectOption value=\\\"de\\\">Germany</NativeSelectOption>\\n            </NativeSelectOptGroup>\\n          </NativeSelect>\\n          <FieldDescription>\\n            Native select with grouped options using optgroup.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"native-select-invalid\\\">\\n            Invalid Native Select\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-invalid\\\" aria-invalid>\\n            <NativeSelectOption value=\\\"\\\">\\n              This field has an error\\n            </NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>\\n            This field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"native-select-disabled-field\\\">\\n            Disabled Field\\n          </FieldLabel>\\n          <NativeSelect id=\\\"native-select-disabled-field\\\" disabled>\\n            <NativeSelectOption value=\\\"\\\">Cannot select</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option1\\\">Option 1</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option2\\\">Option 2</NativeSelectOption>\\n            <NativeSelectOption value=\\\"option3\\\">Option 3</NativeSelectOption>\\n          </NativeSelect>\\n          <FieldDescription>This field is currently disabled.</FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction CheckboxFields() {\\n  return (\\n    <Example title=\\\"Checkbox Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-basic\\\" defaultChecked />\\n          <FieldLabel htmlFor=\\\"checkbox-basic\\\" className=\\\"font-normal\\\">\\n            I agree to the terms and conditions\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"checkbox-right\\\">\\n            Accept terms and conditions\\n          </FieldLabel>\\n          <Checkbox id=\\\"checkbox-right\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-with-desc\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"checkbox-with-desc\\\">\\n              Subscribe to newsletter\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive weekly updates about new features and promotions.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <FieldLabel htmlFor=\\\"checkbox-with-title\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <Checkbox id=\\\"checkbox-with-title\\\" />\\n            <FieldContent>\\n              <FieldTitle>Enable Touch ID</FieldTitle>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </FieldLabel>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Preferences</FieldLegend>\\n          <FieldDescription>\\n            Select all that apply to customize your experience.\\n          </FieldDescription>\\n          <FieldGroup className=\\\"gap-3\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-dark\\\" />\\n              <FieldLabel htmlFor=\\\"pref-dark\\\" className=\\\"font-normal\\\">\\n                Dark mode\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-compact\\\" />\\n              <FieldLabel htmlFor=\\\"pref-compact\\\" className=\\\"font-normal\\\">\\n                Compact view\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <Checkbox id=\\\"pref-notifications\\\" />\\n              <FieldLabel htmlFor=\\\"pref-notifications\\\" className=\\\"font-normal\\\">\\n                Enable notifications\\n              </FieldLabel>\\n            </Field>\\n          </FieldGroup>\\n        </FieldSet>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-invalid\\\" aria-invalid />\\n          <FieldLabel htmlFor=\\\"checkbox-invalid\\\" className=\\\"font-normal\\\">\\n            Invalid checkbox\\n          </FieldLabel>\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <Checkbox id=\\\"checkbox-disabled-field\\\" disabled />\\n          <FieldLabel htmlFor=\\\"checkbox-disabled-field\\\" className=\\\"font-normal\\\">\\n            Disabled checkbox\\n          </FieldLabel>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioFields() {\\n  return (\\n    <Example title=\\\"Radio Fields\\\">\\n      <FieldGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Subscription Plan</FieldLegend>\\n          <RadioGroup defaultValue=\\\"free\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"free\\\" id=\\\"radio-free\\\" />\\n              <FieldLabel htmlFor=\\\"radio-free\\\" className=\\\"font-normal\\\">\\n                Free Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"pro\\\" id=\\\"radio-pro\\\" />\\n              <FieldLabel htmlFor=\\\"radio-pro\\\" className=\\\"font-normal\\\">\\n                Pro Plan\\n              </FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"enterprise\\\" id=\\\"radio-enterprise\\\" />\\n              <FieldLabel htmlFor=\\\"radio-enterprise\\\" className=\\\"font-normal\\\">\\n                Enterprise\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Battery Level</FieldLegend>\\n          <FieldDescription>\\n            Choose your preferred battery level.\\n          </FieldDescription>\\n          <RadioGroup>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n              <FieldLabel htmlFor=\\\"battery-high\\\">High</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n              <FieldLabel htmlFor=\\\"battery-medium\\\">Medium</FieldLabel>\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n              <FieldLabel htmlFor=\\\"battery-low\\\">Low</FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <RadioGroup className=\\\"gap-6\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option1\\\" id=\\\"radio-content-1\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-1\\\">Enable Touch ID</FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"option2\\\" id=\\\"radio-content-2\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"radio-content-2\\\">\\n                Enable Touch ID and Face ID to make it even faster to unlock\\n                your device. This is a long label to test the layout.\\n              </FieldLabel>\\n              <FieldDescription>\\n                Enable Touch ID to quickly unlock your device.\\n              </FieldDescription>\\n            </FieldContent>\\n          </Field>\\n        </RadioGroup>\\n        <RadioGroup className=\\\"gap-3\\\">\\n          <FieldLabel htmlFor=\\\"radio-title-1\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title1\\\" id=\\\"radio-title-1\\\" />\\n              <FieldContent>\\n                <FieldTitle>Enable Touch ID</FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n          <FieldLabel htmlFor=\\\"radio-title-2\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <RadioGroupItem value=\\\"title2\\\" id=\\\"radio-title-2\\\" />\\n              <FieldContent>\\n                <FieldTitle>\\n                  Enable Touch ID and Face ID to make it even faster to unlock\\n                  your device. This is a long label to test the layout.\\n                </FieldTitle>\\n                <FieldDescription>\\n                  Enable Touch ID to quickly unlock your device.\\n                </FieldDescription>\\n              </FieldContent>\\n            </Field>\\n          </FieldLabel>\\n        </RadioGroup>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Invalid Radio Group</FieldLegend>\\n          <RadioGroup>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid1\\\"\\n                id=\\\"radio-invalid-1\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-1\\\">\\n                Invalid Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-invalid orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"invalid2\\\"\\n                id=\\\"radio-invalid-2\\\"\\n                aria-invalid\\n              />\\n              <FieldLabel htmlFor=\\\"radio-invalid-2\\\">\\n                Invalid Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n        <FieldSet>\\n          <FieldLegend variant=\\\"label\\\">Disabled Radio Group</FieldLegend>\\n          <RadioGroup disabled>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled1\\\"\\n                id=\\\"radio-disabled-1\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-1\\\">\\n                Disabled Option 1\\n              </FieldLabel>\\n            </Field>\\n            <Field data-disabled orientation=\\\"horizontal\\\">\\n              <RadioGroupItem\\n                value=\\\"disabled2\\\"\\n                id=\\\"radio-disabled-2\\\"\\n                disabled\\n              />\\n              <FieldLabel htmlFor=\\\"radio-disabled-2\\\">\\n                Disabled Option 2\\n              </FieldLabel>\\n            </Field>\\n          </RadioGroup>\\n        </FieldSet>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchFields() {\\n  return (\\n    <Example title=\\\"Switch Fields\\\">\\n      <FieldGroup>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-airplane\\\">Airplane Mode</FieldLabel>\\n            <FieldDescription>\\n              Turn on airplane mode to disable all connections.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-airplane\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldLabel htmlFor=\\\"switch-dark\\\">Dark Mode</FieldLabel>\\n          <Switch id=\\\"switch-dark\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <Switch id=\\\"switch-marketing\\\" />\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-marketing\\\">Marketing Emails</FieldLabel>\\n            <FieldDescription>\\n              Receive emails about new products, features, and more.\\n            </FieldDescription>\\n          </FieldContent>\\n        </Field>\\n        <Field>\\n          <FieldLabel>Privacy Settings</FieldLabel>\\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-profile\\\" defaultChecked />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-profile\\\" className=\\\"font-normal\\\">\\n                Make profile visible to others\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Switch id=\\\"switch-email\\\" />\\n            <FieldContent>\\n              <FieldLabel htmlFor=\\\"switch-email\\\" className=\\\"font-normal\\\">\\n                Show email on profile\\n              </FieldLabel>\\n            </FieldContent>\\n          </Field>\\n        </Field>\\n        <Field data-invalid orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-invalid\\\">Invalid Switch</FieldLabel>\\n            <FieldDescription>\\n              This switch has validation errors.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-invalid\\\" aria-invalid />\\n        </Field>\\n        <Field data-disabled orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"switch-disabled-field\\\">\\n              Disabled Switch\\n            </FieldLabel>\\n            <FieldDescription>\\n              This switch is currently disabled.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-disabled-field\\\" disabled />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderFields() {\\n  const [volume, setVolume] = useState([50])\\n  const [brightness, setBrightness] = useState([75])\\n  const [temperature, setTemperature] = useState([0.3, 0.7])\\n  const [priceRange, setPriceRange] = useState([25, 75])\\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\\n\\n  return (\\n    <Example title=\\\"Slider Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-volume\\\">Volume</FieldLabel>\\n          <Slider\\n            id=\\\"slider-volume\\\"\\n            value={volume}\\n            onValueChange={setVolume}\\n            max={100}\\n            step={1}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-brightness\\\">Screen Brightness</FieldLabel>\\n          <Slider\\n            id=\\\"slider-brightness\\\"\\n            value={brightness}\\n            onValueChange={setBrightness}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            Current brightness: {brightness[0]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-quality\\\">Video Quality</FieldLabel>\\n          <FieldDescription>\\n            Higher quality uses more bandwidth.\\n          </FieldDescription>\\n          <Slider\\n            id=\\\"slider-quality\\\"\\n            defaultValue={[720]}\\n            max={1080}\\n            min={360}\\n            step={360}\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-temperature\\\">\\n            Temperature Range\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-temperature\\\"\\n            value={temperature}\\n            onValueChange={setTemperature}\\n            min={0}\\n            max={1}\\n            step={0.1}\\n          />\\n          <FieldDescription>\\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-price-range\\\">Price Range</FieldLabel>\\n          <Slider\\n            id=\\\"slider-price-range\\\"\\n            value={priceRange}\\n            onValueChange={setPriceRange}\\n            max={100}\\n            step={5}\\n          />\\n          <FieldDescription>\\n            ${priceRange[0]} - ${priceRange[1]}\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"slider-color-balance\\\">Color Balance</FieldLabel>\\n          <Slider\\n            id=\\\"slider-color-balance\\\"\\n            value={colorBalance}\\n            onValueChange={setColorBalance}\\n            max={100}\\n            step={10}\\n          />\\n          <FieldDescription>\\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\\\" \\\"}\\n            {colorBalance[2]}%\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"slider-invalid\\\">Invalid Slider</FieldLabel>\\n          <Slider\\n            id=\\\"slider-invalid\\\"\\n            defaultValue={[30]}\\n            max={100}\\n            aria-invalid\\n          />\\n          <FieldDescription>\\n            This slider has validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"slider-disabled-field\\\">\\n            Disabled Slider\\n          </FieldLabel>\\n          <Slider\\n            id=\\\"slider-disabled-field\\\"\\n            defaultValue={[50]}\\n            max={100}\\n            disabled\\n          />\\n          <FieldDescription>\\n            This slider is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFields() {\\n  const [value, setValue] = useState(\\\"\\\")\\n  const [pinValue, setPinValue] = useState(\\\"\\\")\\n\\n  return (\\n    <Example title=\\\"OTP Input Fields\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-basic\\\">Verification Code</FieldLabel>\\n          <InputOTP id=\\\"otp-basic\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-with-desc\\\">Enter OTP</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-with-desc\\\"\\n            maxLength={6}\\n            value={value}\\n            onChange={setValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the 6-digit code sent to your email.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-separator\\\">\\n            Two-Factor Authentication\\n          </FieldLabel>\\n          <InputOTP id=\\\"otp-separator\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n            </InputOTPGroup>\\n            <InputOTPSeparator />\\n            <InputOTPGroup>\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter the code from your authenticator app.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"otp-pin\\\">PIN Code</FieldLabel>\\n          <InputOTP\\n            id=\\\"otp-pin\\\"\\n            maxLength={4}\\n            pattern={REGEXP_ONLY_DIGITS}\\n            value={pinValue}\\n            onChange={setPinValue}\\n          >\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            Enter your 4-digit PIN (numbers only).\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"otp-invalid\\\">Invalid OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-invalid\\\" maxLength={6}>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} aria-invalid />\\n              <InputOTPSlot index={1} aria-invalid />\\n              <InputOTPSlot index={2} aria-invalid />\\n              <InputOTPSlot index={3} aria-invalid />\\n              <InputOTPSlot index={4} aria-invalid />\\n              <InputOTPSlot index={5} aria-invalid />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field contains validation errors.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled>\\n          <FieldLabel htmlFor=\\\"otp-disabled-field\\\">Disabled OTP</FieldLabel>\\n          <InputOTP id=\\\"otp-disabled-field\\\" maxLength={6} disabled>\\n            <InputOTPGroup>\\n              <InputOTPSlot index={0} />\\n              <InputOTPSlot index={1} />\\n              <InputOTPSlot index={2} />\\n              <InputOTPSlot index={3} />\\n              <InputOTPSlot index={4} />\\n              <InputOTPSlot index={5} />\\n            </InputOTPGroup>\\n          </InputOTP>\\n          <FieldDescription>\\n            This OTP field is currently disabled.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction HorizontalFields() {\\n  return (\\n    <Example title=\\\"Horizontal Fields\\\">\\n      <FieldGroup className=\\\"**:data-[slot=field-content]:min-w-48\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-input\\\">Username</FieldLabel>\\n            <FieldDescription>Enter your preferred username.</FieldDescription>\\n          </FieldContent>\\n          <Input id=\\\"horizontal-input\\\" placeholder=\\\"johndoe\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-textarea\\\">Bio</FieldLabel>\\n            <FieldDescription>\\n              Write a short description about yourself.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Textarea\\n            id=\\\"horizontal-textarea\\\"\\n            placeholder=\\\"Tell us about yourself...\\\"\\n          />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-switch\\\">\\n              Email Notifications\\n            </FieldLabel>\\n            <FieldDescription>\\n              Receive email updates about your account.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"horizontal-switch\\\" />\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-select\\\">Favorite Fruit</FieldLabel>\\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\\n          </FieldContent>\\n          <Select>\\n            <SelectTrigger id=\\\"horizontal-select\\\">\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"orange\\\">Orange</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-native-select\\\">Country</FieldLabel>\\n            <FieldDescription>Select your country.</FieldDescription>\\n          </FieldContent>\\n          <NativeSelect id=\\\"horizontal-native-select\\\">\\n            <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n            <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n            <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n            <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          </NativeSelect>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldLabel htmlFor=\\\"horizontal-slider\\\">Volume</FieldLabel>\\n            <FieldDescription>Adjust the volume level.</FieldDescription>\\n          </FieldContent>\\n          <Slider id=\\\"horizontal-slider\\\" defaultValue={[50]} max={100} />\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/field.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"field\",\n  \"registryDependencies\": [\n    \"label\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/field.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useMemo } from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\n\\nfunction FieldSet({ className, ...props }: React.ComponentProps<\\\"fieldset\\\">) {\\n  return (\\n    <fieldset\\n      data-slot=\\\"field-set\\\"\\n      className={cn(\\n        \\\"flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLegend({\\n  className,\\n  variant = \\\"legend\\\",\\n  ...props\\n}: React.ComponentProps<\\\"legend\\\"> & { variant?: \\\"legend\\\" | \\\"label\\\" }) {\\n  return (\\n    <legend\\n      data-slot=\\\"field-legend\\\"\\n      data-variant={variant}\\n      className={cn(\\n        \\\"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-group\\\"\\n      className={cn(\\n        \\\"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst fieldVariants = cva(\\n  \\\"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\\\",\\n  {\\n    variants: {\\n      orientation: {\\n        vertical: \\\"flex-col *:w-full [&>.sr-only]:w-auto\\\",\\n        horizontal:\\n          \\\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n        responsive:\\n          \\\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      orientation: \\\"vertical\\\",\\n    },\\n  }\\n)\\n\\nfunction Field({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof fieldVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"field\\\"\\n      data-orientation={orientation}\\n      className={cn(fieldVariants({ orientation }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-content\\\"\\n      className={cn(\\n        \\\"group/field-content flex flex-1 flex-col gap-1 leading-snug\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Label>) {\\n  return (\\n    <Label\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-3 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\\\",\\n        \\\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"field-label\\\"\\n      className={cn(\\n        \\\"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"field-description\\\"\\n      className={cn(\\n        \\\"text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\\\",\\n        \\\"last:mt-0 nth-last-2:-mt-1\\\",\\n        \\\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction FieldSeparator({\\n  children,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  children?: React.ReactNode\\n}) {\\n  return (\\n    <div\\n      data-slot=\\\"field-separator\\\"\\n      data-content={!!children}\\n      className={cn(\\n        \\\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <Separator className=\\\"absolute inset-0 top-1/2\\\" />\\n      {children && (\\n        <span\\n          className=\\\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\\\"\\n          data-slot=\\\"field-separator-content\\\"\\n        >\\n          {children}\\n        </span>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction FieldError({\\n  className,\\n  children,\\n  errors,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  errors?: Array<{ message?: string } | undefined>\\n}) {\\n  const content = useMemo(() => {\\n    if (children) {\\n      return children\\n    }\\n\\n    if (!errors?.length) {\\n      return null\\n    }\\n\\n    const uniqueErrors = [\\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\\n    ]\\n\\n    if (uniqueErrors?.length == 1) {\\n      return uniqueErrors[0]?.message\\n    }\\n\\n    return (\\n      <ul className=\\\"ml-4 flex list-disc flex-col gap-1\\\">\\n        {uniqueErrors.map(\\n          (error, index) =>\\n            error?.message && <li key={index}>{error.message}</li>\\n        )}\\n      </ul>\\n    )\\n  }, [children, errors])\\n\\n  if (!content) {\\n    return null\\n  }\\n\\n  return (\\n    <div\\n      role=\\\"alert\\\"\\n      data-slot=\\\"field-error\\\"\\n      className={cn(\\\"text-sm font-normal text-destructive\\\", className)}\\n      {...props}\\n    >\\n      {content}\\n    </div>\\n  )\\n}\\n\\nexport {\\n  Field,\\n  FieldLabel,\\n  FieldDescription,\\n  FieldError,\\n  FieldGroup,\\n  FieldLegend,\\n  FieldSeparator,\\n  FieldSet,\\n  FieldContent,\\n  FieldTitle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-dm-sans\",\n  \"title\": \"DM Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-figtree\",\n  \"title\": \"Figtree\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist-mono\",\n  \"title\": \"Geist Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-geist\",\n  \"title\": \"Geist\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-dm-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-dm-sans\",\n  \"title\": \"DM Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'DM Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"DM_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/dm-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-figtree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-figtree\",\n  \"title\": \"Figtree (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Figtree Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Figtree\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/figtree\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-geist-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist-mono\",\n  \"title\": \"Geist Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"Geist_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-geist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-geist\",\n  \"title\": \"Geist (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Geist Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Geist\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/geist\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-instrument-sans\",\n  \"title\": \"Instrument Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-inter\",\n  \"title\": \"Inter (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-jetbrains-mono\",\n  \"title\": \"JetBrains Mono (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-lora\",\n  \"title\": \"Lora (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-manrope\",\n  \"title\": \"Manrope (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-merriweather\",\n  \"title\": \"Merriweather (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-montserrat\",\n  \"title\": \"Montserrat (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-sans\",\n  \"title\": \"Noto Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-noto-serif\",\n  \"title\": \"Noto Serif (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-nunito-sans\",\n  \"title\": \"Nunito Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-outfit\",\n  \"title\": \"Outfit (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-oxanium\",\n  \"title\": \"Oxanium (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-playfair-display\",\n  \"title\": \"Playfair Display (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-public-sans\",\n  \"title\": \"Public Sans (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-raleway\",\n  \"title\": \"Raleway (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto-slab\",\n  \"title\": \"Roboto Slab (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-roboto\",\n  \"title\": \"Roboto (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-source-sans-3\",\n  \"title\": \"Source Sans 3 (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-space-grotesk\",\n  \"title\": \"Space Grotesk (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-heading\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-heading-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-heading-tomorrow\",\n  \"title\": \"Tomorrow (Heading)\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-heading\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-ibm-plex-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-ibm-plex-sans\",\n  \"title\": \"IBM Plex Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"IBM_Plex_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-instrument-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-instrument-sans\",\n  \"title\": \"Instrument Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Instrument Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Instrument_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/instrument-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-inter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-inter\",\n  \"title\": \"Inter\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Inter Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Inter\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/inter\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-jetbrains-mono.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-jetbrains-mono\",\n  \"title\": \"JetBrains Mono\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'JetBrains Mono Variable', monospace\",\n    \"provider\": \"google\",\n    \"import\": \"JetBrains_Mono\",\n    \"variable\": \"--font-mono\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-lora.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-lora\",\n  \"title\": \"Lora\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Lora Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Lora\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/lora\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-manrope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-manrope\",\n  \"title\": \"Manrope\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Manrope Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Manrope\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/manrope\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-merriweather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-merriweather\",\n  \"title\": \"Merriweather\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Merriweather Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Merriweather\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/merriweather\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-montserrat.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-montserrat\",\n  \"title\": \"Montserrat\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Montserrat Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Montserrat\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/montserrat\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-noto-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-sans\",\n  \"title\": \"Noto Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-noto-serif.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-noto-serif\",\n  \"title\": \"Noto Serif\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Noto Serif Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Noto_Serif\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/noto-serif\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-nunito-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-nunito-sans\",\n  \"title\": \"Nunito Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Nunito Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Nunito_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/nunito-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-outfit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-outfit\",\n  \"title\": \"Outfit\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Outfit Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Outfit\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/outfit\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-oxanium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-oxanium\",\n  \"title\": \"Oxanium\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Oxanium Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Oxanium\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/oxanium\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-playfair-display.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-playfair-display\",\n  \"title\": \"Playfair Display\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Playfair Display Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Playfair_Display\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/playfair-display\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-public-sans.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-public-sans\",\n  \"title\": \"Public Sans\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Public Sans Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Public_Sans\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/public-sans\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-raleway.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-raleway\",\n  \"title\": \"Raleway\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Raleway Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Raleway\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/raleway\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-roboto-slab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto-slab\",\n  \"title\": \"Roboto Slab\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Slab Variable', serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto_Slab\",\n    \"variable\": \"--font-serif\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto-slab\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-roboto.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-roboto\",\n  \"title\": \"Roboto\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Roboto Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Roboto\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/roboto\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-source-sans-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-source-sans-3\",\n  \"title\": \"Source Sans 3\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Source Sans 3 Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Source_Sans_3\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/source-sans-3\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-space-grotesk.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-space-grotesk\",\n  \"title\": \"Space Grotesk\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Space Grotesk Variable', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Space_Grotesk\",\n    \"variable\": \"--font-sans\",\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource-variable/space-grotesk\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/font-tomorrow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"font-tomorrow\",\n  \"title\": \"Tomorrow\",\n  \"type\": \"registry:font\",\n  \"font\": {\n    \"family\": \"'Tomorrow', sans-serif\",\n    \"provider\": \"google\",\n    \"import\": \"Tomorrow\",\n    \"variable\": \"--font-sans\",\n    \"weight\": [\n      \"100\",\n      \"200\",\n      \"300\",\n      \"400\",\n      \"500\",\n      \"600\",\n      \"700\",\n      \"800\",\n      \"900\"\n    ],\n    \"subsets\": [\n      \"latin\"\n    ],\n    \"dependency\": \"@fontsource/tomorrow\"\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/hover-card-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card-example\",\n  \"title\": \"Hover Card\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"hover-card\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/hover-card-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport {\\n  HoverCard,\\n  HoverCardContent,\\n  HoverCardTrigger,\\n} from \\\"@/registry/radix-vega/ui/hover-card\\\"\\n\\nexport default function HoverCardExample() {\\n  return (\\n    <ExampleWrapper>\\n      <HoverCardSides />\\n      <HoverCardInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nconst HOVER_CARD_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction HoverCardSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        {HOVER_CARD_SIDES.map((side) => (\\n          <HoverCard key={side} openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent side={side} className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears on the {side} side of the trigger.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction HoverCardInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Hover Card Example</DialogTitle>\\n            <DialogDescription>\\n              Hover over the button below to see the hover card.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <HoverCard openDelay={100} closeDelay={100}>\\n            <HoverCardTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Hover me\\n              </Button>\\n            </HoverCardTrigger>\\n            <HoverCardContent className=\\\"w-64\\\">\\n              <div className=\\\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\\\">\\n                <h4 className=\\\"font-medium\\\">Hover Card</h4>\\n                <p>\\n                  This hover card appears inside a dialog. Hover over the button\\n                  to see it.\\n                </p>\\n              </div>\\n            </HoverCardContent>\\n          </HoverCard>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/hover-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { HoverCard as HoverCardPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction HoverCard({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\\n  return <HoverCardPrimitive.Root data-slot=\\\"hover-card\\\" {...props} />\\n}\\n\\nfunction HoverCardTrigger({\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\\n  return (\\n    <HoverCardPrimitive.Trigger data-slot=\\\"hover-card-trigger\\\" {...props} />\\n  )\\n}\\n\\nfunction HoverCardContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\\n  return (\\n    <HoverCardPrimitive.Portal data-slot=\\\"hover-card-portal\\\">\\n      <HoverCardPrimitive.Content\\n        data-slot=\\\"hover-card-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </HoverCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/index.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"index\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/input-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-example\",\n  \"title\": \"Input\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/input-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-vega/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\n\\nexport default function InputExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputBasic />\\n      <InputInvalid />\\n      <InputWithLabel />\\n      <InputWithDescription />\\n      <InputDisabled />\\n      <InputTypes />\\n      <InputWithSelect />\\n      <InputWithButton />\\n      <InputWithNativeSelect />\\n      <InputForm />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Input type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Input type=\\\"text\\\" placeholder=\\\"Error\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-email\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-email\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"name@example.com\\\"\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-username\\\">Username</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-username\\\"\\n          type=\\\"text\\\"\\n          placeholder=\\\"Enter your username\\\"\\n        />\\n        <FieldDescription>\\n          Choose a unique username for your account.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-demo-disabled\\\">Email</FieldLabel>\\n        <Input\\n          id=\\\"input-demo-disabled\\\"\\n          type=\\\"email\\\"\\n          placeholder=\\\"Email\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputTypes() {\\n  return (\\n    <Example title=\\\"Input Types\\\">\\n      <div className=\\\"flex w-full flex-col gap-6\\\">\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-password\\\"\\n            type=\\\"password\\\"\\n            placeholder=\\\"Password\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-tel\\\">Phone</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-tel\\\"\\n            type=\\\"tel\\\"\\n            placeholder=\\\"+1 (555) 123-4567\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-url\\\">URL</FieldLabel>\\n          <Input\\n            id=\\\"input-demo-url\\\"\\n            type=\\\"url\\\"\\n            placeholder=\\\"https://example.com\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-search\\\">Search</FieldLabel>\\n          <Input id=\\\"input-demo-search\\\" type=\\\"search\\\" placeholder=\\\"Search\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-number\\\">Number</FieldLabel>\\n          <Input id=\\\"input-demo-number\\\" type=\\\"number\\\" placeholder=\\\"123\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-date\\\">Date</FieldLabel>\\n          <Input id=\\\"input-demo-date\\\" type=\\\"date\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-time\\\">Time</FieldLabel>\\n          <Input id=\\\"input-demo-time\\\" type=\\\"time\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-demo-file\\\">File</FieldLabel>\\n          <Input id=\\\"input-demo-file\\\" type=\\\"file\\\" />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"text\\\" placeholder=\\\"Enter amount\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"usd\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n              <SelectItem value=\\\"eur\\\">EUR</SelectItem>\\n              <SelectItem value=\\\"gbp\\\">GBP</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Button>Search</Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputWithNativeSelect() {\\n  return (\\n    <Example title=\\\"With Native Select\\\">\\n      <div className=\\\"flex w-full gap-2\\\">\\n        <Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" className=\\\"flex-1\\\" />\\n        <NativeSelect defaultValue=\\\"+1\\\">\\n          <NativeSelectOption value=\\\"+1\\\">+1</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+44\\\">+44</NativeSelectOption>\\n          <NativeSelectOption value=\\\"+46\\\">+46</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction InputForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <form className=\\\"w-full\\\">\\n        <FieldGroup>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-name\\\">Name</FieldLabel>\\n            <Input id=\\\"form-name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" />\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"form-email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"john@example.com\\\"\\n            />\\n            <FieldDescription>\\n              We&apos;ll never share your email with anyone.\\n            </FieldDescription>\\n          </Field>\\n          <div className=\\\"grid grid-cols-2 gap-4\\\">\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-phone\\\">Phone</FieldLabel>\\n              <Input\\n                id=\\\"form-phone\\\"\\n                type=\\\"tel\\\"\\n                placeholder=\\\"+1 (555) 123-4567\\\"\\n              />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"form-country\\\">Country</FieldLabel>\\n              <Select defaultValue=\\\"us\\\">\\n                <SelectTrigger id=\\\"form-country\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"us\\\">United States</SelectItem>\\n                    <SelectItem value=\\\"uk\\\">United Kingdom</SelectItem>\\n                    <SelectItem value=\\\"ca\\\">Canada</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </Field>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"form-address\\\">Address</FieldLabel>\\n            <Input id=\\\"form-address\\\" type=\\\"text\\\" placeholder=\\\"123 Main St\\\" />\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Submit</Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/input-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group-example\",\n  \"title\": \"Input Group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"kbd\",\n    \"popover\",\n    \"spinner\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/input-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  ButtonGroup,\\n  ButtonGroupText,\\n} from \\\"@/registry/radix-vega/ui/button-group\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupInput,\\n  InputGroupText,\\n  InputGroupTextarea,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-vega/ui/kbd\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-vega/ui/popover\\\"\\nimport { Spinner } from \\\"@/registry/radix-vega/ui/spinner\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputGroupExample() {\\n  const [country, setCountry] = useState(\\\"+1\\\")\\n\\n  return (\\n    <ExampleWrapper className=\\\"min-w-0\\\">\\n      <InputGroupBasic />\\n      <InputGroupWithAddons />\\n      <InputGroupWithButtons />\\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\\n      <InputGroupWithKbd />\\n      <InputGroupInCard />\\n      <InputGroupTextareaExamples />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-default-01\\\">\\n            Default (No Input Group)\\n          </FieldLabel>\\n          <Input placeholder=\\\"Placeholder\\\" id=\\\"input-default-01\\\" />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-group-02\\\">Input Group</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-group-02\\\" placeholder=\\\"Placeholder\\\" />\\n          </InputGroup>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-disabled-03\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-disabled-03\\\"\\n              placeholder=\\\"This field is disabled\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-invalid-04\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-invalid-04\\\"\\n              placeholder=\\\"This field is invalid\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithAddons() {\\n  return (\\n    <Example title=\\\"With Addons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-left-05\\\">\\n            Addon (inline-start)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-left-05\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"SearchIcon\\\"\\n                tabler=\\\"IconSearch\\\"\\n                hugeicons=\\\"SearchIcon\\\"\\n                phosphor=\\\"MagnifyingGlassIcon\\\"\\n                remixicon=\\\"RiSearchLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-right-07\\\">\\n            Addon (inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-right-07\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"EyeOffIcon\\\"\\n                tabler=\\\"IconEyeClosed\\\"\\n                hugeicons=\\\"ViewOffIcon\\\"\\n                phosphor=\\\"EyeSlashIcon\\\"\\n                remixicon=\\\"RiEyeOffLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-09\\\">\\n            Addon (inline-start and inline-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-09\\\" />\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"MicIcon\\\"\\n                tabler=\\\"IconMicrophone\\\"\\n                hugeicons=\\\"VoiceIcon\\\"\\n                phosphor=\\\"MicrophoneIcon\\\"\\n                remixicon=\\\"RiMicLine\\\"\\n                className=\\\"text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-20\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-20\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>First Name</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-addon-21\\\">Addon (block-end)</FieldLabel>\\n          <InputGroup className=\\\"h-auto\\\">\\n            <InputGroupInput id=\\\"input-addon-21\\\" />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>20/240 characters</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-icon-both-10\\\">Multiple Icons</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-icon-both-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"StarIcon\\\"\\n                tabler=\\\"IconStar\\\"\\n                hugeicons=\\\"StarIcon\\\"\\n                phosphor=\\\"StarIcon\\\"\\n                remixicon=\\\"RiStarLine\\\"\\n              />\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Copied to clipboard\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon>\\n              <IconPlaceholder\\n                lucide=\\\"RadioIcon\\\"\\n                tabler=\\\"IconPlayerRecordFilled\\\"\\n                hugeicons=\\\"RecordIcon\\\"\\n                phosphor=\\\"RecordIcon\\\"\\n                remixicon=\\\"RiRecordCircleLine\\\"\\n                className=\\\"animate-pulse text-red-500\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-description-10\\\">Description</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-description-10\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n          <InputGroup>\\n            <InputGroupAddon>\\n              <FieldLabel htmlFor=\\\"input-label-10\\\">Label</FieldLabel>\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-label-10\\\" />\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-optional-12\\\" aria-label=\\\"Optional\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupText>(optional)</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithButtons() {\\n  return (\\n    <Example title=\\\"With Buttons\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-button-13\\\">Button</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-13\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton>Default</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-14\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"outline\\\">Outline</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-15\\\" />\\n            <InputGroupAddon>\\n              <InputGroupButton variant=\\\"secondary\\\">Secondary</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-16\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\">Button</InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-17\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-button-18\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithTooltip({\\n  country,\\n  setCountry,\\n}: {\\n  country: string\\n  setCountry: (value: string) => void\\n}) {\\n  return (\\n    <Example title=\\\"With Tooltip, Dropdown, Popover\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-tooltip-20\\\">Tooltip</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-tooltip-20\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Tooltip>\\n                <TooltipTrigger asChild>\\n                  <InputGroupButton className=\\\"rounded-full\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </TooltipTrigger>\\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\\n              </Tooltip>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-dropdown-21\\\">Dropdown</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-dropdown-21\\\" />\\n            <InputGroupAddon>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <InputGroupButton className=\\\"text-muted-foreground tabular-nums\\\">\\n                    {country}{\\\" \\\"}\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronDownIcon\\\"\\n                      tabler=\\\"IconChevronDown\\\"\\n                      hugeicons=\\\"ArrowDownIcon\\\"\\n                      phosphor=\\\"CaretDownIcon\\\"\\n                      remixicon=\\\"RiArrowDownSLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent\\n                  align=\\\"start\\\"\\n                  className=\\\"min-w-16\\\"\\n                  sideOffset={10}\\n                  alignOffset={-8}\\n                >\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+1\\\")}>\\n                    +1\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+44\\\")}>\\n                    +44\\n                  </DropdownMenuItem>\\n                  <DropdownMenuItem onClick={() => setCountry(\\\"+46\\\")}>\\n                    +46\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-secure-19\\\">Popover</FieldLabel>\\n          <InputGroup>\\n            <Popover>\\n              <PopoverTrigger asChild>\\n                <InputGroupAddon>\\n                  <InputGroupButton variant=\\\"secondary\\\" size=\\\"icon-xs\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"InfoIcon\\\"\\n                      tabler=\\\"IconInfoCircle\\\"\\n                      hugeicons=\\\"AlertCircleIcon\\\"\\n                      phosphor=\\\"InfoIcon\\\"\\n                      remixicon=\\\"RiInformationLine\\\"\\n                    />\\n                  </InputGroupButton>\\n                </InputGroupAddon>\\n              </PopoverTrigger>\\n              <PopoverContent align=\\\"start\\\">\\n                <PopoverHeader>\\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\\n                  <PopoverDescription>\\n                    You should not enter any sensitive information on this site.\\n                  </PopoverDescription>\\n                </PopoverHeader>\\n              </PopoverContent>\\n            </Popover>\\n            <InputGroupAddon className=\\\"pl-1 text-muted-foreground\\\">\\n              https://\\n            </InputGroupAddon>\\n            <InputGroupInput id=\\\"input-secure-19\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <InputGroupButton\\n                size=\\\"icon-xs\\\"\\n                onClick={() => toast(\\\"Added to favorites\\\")}\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"StarIcon\\\"\\n                  tabler=\\\"IconStar\\\"\\n                  hugeicons=\\\"StarIcon\\\"\\n                  phosphor=\\\"StarIcon\\\"\\n                  remixicon=\\\"RiStarLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"url\\\">Button Group</FieldLabel>\\n          <ButtonGroup>\\n            <ButtonGroupText>https://</ButtonGroupText>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"url\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n            <ButtonGroupText>.com</ButtonGroupText>\\n          </ButtonGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupWithKbd() {\\n  return (\\n    <Example title=\\\"With Kbd\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-kbd-22\\\">Input Group with Kbd</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-22\\\" />\\n            <InputGroupAddon>\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-kbd-23\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>⌘K</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-apps-24\\\"\\n              placeholder=\\\"Search for Apps...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">Ask AI</InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Kbd>Tab</Kbd>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-search-type-25\\\"\\n              placeholder=\\\"Type to search...\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-start\\\">\\n              <IconPlaceholder\\n                lucide=\\\"SparklesIcon\\\"\\n                tabler=\\\"IconServerSpark\\\"\\n                hugeicons=\\\"SparklesIcon\\\"\\n                phosphor=\\\"SparkleIcon\\\"\\n                remixicon=\\\"RiSparklingLine\\\"\\n              />\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <KbdGroup>\\n                <Kbd>Ctrl</Kbd>\\n                <Kbd>C</Kbd>\\n              </KbdGroup>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"input-username-26\\\">Username</FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput id=\\\"input-username-26\\\" defaultValue=\\\"shadcn\\\" />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <div className=\\\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                  className=\\\"size-3 text-white\\\"\\n                />\\n              </div>\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription className=\\\"text-green-700\\\">\\n            This username is available.\\n          </FieldDescription>\\n        </Field>\\n        <InputGroup>\\n          <InputGroupInput\\n            id=\\\"input-search-docs-27\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">12 results</InputGroupAddon>\\n        </InputGroup>\\n        <InputGroup data-disabled=\\\"true\\\">\\n          <InputGroupInput\\n            id=\\\"input-search-disabled-28\\\"\\n            placeholder=\\\"Search documentation...\\\"\\n            disabled\\n          />\\n          <InputGroupAddon>\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </InputGroupAddon>\\n          <InputGroupAddon align=\\\"inline-end\\\">Disabled</InputGroupAddon>\\n        </InputGroup>\\n        <FieldGroup className=\\\"grid grid-cols-2 gap-4\\\">\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-11\\\">First Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-11\\\" placeholder=\\\"First Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"input-group-12\\\">Last Name</FieldLabel>\\n            <InputGroup>\\n              <InputGroupInput id=\\\"input-group-12\\\" placeholder=\\\"Last Name\\\" />\\n              <InputGroupAddon align=\\\"inline-end\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"InfoIcon\\\"\\n                  tabler=\\\"IconInfoCircle\\\"\\n                  hugeicons=\\\"AlertCircleIcon\\\"\\n                  phosphor=\\\"InfoIcon\\\"\\n                  remixicon=\\\"RiInformationLine\\\"\\n                />\\n              </InputGroupAddon>\\n            </InputGroup>\\n          </Field>\\n        </FieldGroup>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"input-group-29\\\">\\n            Loading (&quot;data-disabled=&quot;true&quot;)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupInput\\n              id=\\\"input-group-29\\\"\\n              disabled\\n              defaultValue=\\\"shadcn\\\"\\n            />\\n            <InputGroupAddon align=\\\"inline-end\\\">\\n              <Spinner />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupInCard() {\\n  return (\\n    <Example title=\\\"In Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <CardTitle>Card with Input Group</CardTitle>\\n          <CardDescription>This is a card with an input group.</CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email-input\\\">Email Address</FieldLabel>\\n              <InputGroup>\\n                <InputGroupInput\\n                  id=\\\"email-input\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"you@example.com\\\"\\n                />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"MailIcon\\\"\\n                    tabler=\\\"IconMail\\\"\\n                    hugeicons=\\\"MailIcon\\\"\\n                    phosphor=\\\"EnvelopeIcon\\\"\\n                    remixicon=\\\"RiMailLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"website-input\\\">Website URL</FieldLabel>\\n              <InputGroup>\\n                <InputGroupAddon>\\n                  <InputGroupText>https://</InputGroupText>\\n                </InputGroupAddon>\\n                <InputGroupInput id=\\\"website-input\\\" placeholder=\\\"example.com\\\" />\\n                <InputGroupAddon align=\\\"inline-end\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"ExternalLinkIcon\\\"\\n                    tabler=\\\"IconExternalLink\\\"\\n                    hugeicons=\\\"LinkSquare02Icon\\\"\\n                    phosphor=\\\"ArrowSquareOutIcon\\\"\\n                    remixicon=\\\"RiExternalLinkLine\\\"\\n                  />\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"feedback-textarea\\\">\\n                Feedback & Comments\\n              </FieldLabel>\\n              <InputGroup>\\n                <InputGroupTextarea\\n                  id=\\\"feedback-textarea\\\"\\n                  placeholder=\\\"Share your thoughts...\\\"\\n                  className=\\\"min-h-[100px]\\\"\\n                />\\n                <InputGroupAddon align=\\\"block-end\\\">\\n                  <InputGroupText>0/500 characters</InputGroupText>\\n                </InputGroupAddon>\\n              </InputGroup>\\n            </Field>\\n          </FieldGroup>\\n        </CardContent>\\n        <CardFooter className=\\\"justify-end gap-2\\\">\\n          <Button variant=\\\"outline\\\">Cancel</Button>\\n          <Button>Submit</Button>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction InputGroupTextareaExamples() {\\n  return (\\n    <Example title=\\\"Textarea\\\">\\n      <FieldGroup>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-12\\\">\\n            Default Textarea (No Input Group)\\n          </FieldLabel>\\n          <Textarea\\n            id=\\\"textarea-header-footer-12\\\"\\n            placeholder=\\\"Enter your text here...\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-13\\\">\\n            Input Group\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-13\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-invalid=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-14\\\">Invalid</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-14\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              aria-invalid=\\\"true\\\"\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field data-disabled=\\\"true\\\">\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-15\\\">Disabled</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-15\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n              disabled\\n            />\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"prompt-31\\\">Addon (block-start)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea id=\\\"prompt-31\\\" />\\n            <InputGroupAddon align=\\\"block-start\\\">\\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\\n              <IconPlaceholder\\n                lucide=\\\"InfoIcon\\\"\\n                tabler=\\\"IconInfoCircle\\\"\\n                hugeicons=\\\"AlertCircleIcon\\\"\\n                phosphor=\\\"InfoIcon\\\"\\n                remixicon=\\\"RiInformationLine\\\"\\n                className=\\\"ml-auto text-muted-foreground\\\"\\n              />\\n            </InputGroupAddon>\\n          </InputGroup>\\n          <FieldDescription>\\n            This is a description of the input group.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-header-footer-30\\\">\\n            Addon (block-end)\\n          </FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-header-footer-30\\\"\\n              placeholder=\\\"Enter your text here...\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupText>0/280 characters</InputGroupText>\\n              <InputGroupButton\\n                variant=\\\"default\\\"\\n                size=\\\"icon-xs\\\"\\n                className=\\\"ml-auto rounded-full\\\"\\n              >\\n                <IconPlaceholder\\n                  lucide=\\\"ArrowUpIcon\\\"\\n                  tabler=\\\"IconArrowUp\\\"\\n                  hugeicons=\\\"ArrowUpIcon\\\"\\n                  phosphor=\\\"ArrowUpIcon\\\"\\n                  remixicon=\\\"RiArrowUpLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">Send</span>\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-comment-31\\\">Addon (Buttons)</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-comment-31\\\"\\n              placeholder=\\\"Share your thoughts...\\\"\\n              className=\\\"min-h-[120px]\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-end\\\">\\n              <InputGroupButton variant=\\\"ghost\\\" className=\\\"ml-auto\\\" size=\\\"sm\\\">\\n                Cancel\\n              </InputGroupButton>\\n              <InputGroupButton variant=\\\"default\\\" size=\\\"sm\\\">\\n                Post Comment\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"textarea-code-32\\\">Code Editor</FieldLabel>\\n          <InputGroup>\\n            <InputGroupTextarea\\n              id=\\\"textarea-code-32\\\"\\n              placeholder=\\\"console.log('Hello, world!');\\\"\\n              className=\\\"min-h-[300px] py-3\\\"\\n            />\\n            <InputGroupAddon align=\\\"block-start\\\" className=\\\"border-b\\\">\\n              <InputGroupText className=\\\"font-mono font-medium\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CodeIcon\\\"\\n                  tabler=\\\"IconBrandJavascript\\\"\\n                  hugeicons=\\\"CodeIcon\\\"\\n                  phosphor=\\\"CodeIcon\\\"\\n                  remixicon=\\\"RiCodeLine\\\"\\n                />\\n                script.js\\n              </InputGroupText>\\n              <InputGroupButton size=\\\"icon-xs\\\" className=\\\"ml-auto\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"RefreshCwIcon\\\"\\n                  tabler=\\\"IconRefresh\\\"\\n                  hugeicons=\\\"RefreshIcon\\\"\\n                  phosphor=\\\"ArrowClockwiseIcon\\\"\\n                  remixicon=\\\"RiRefreshLine\\\"\\n                />\\n              </InputGroupButton>\\n              <InputGroupButton size=\\\"icon-xs\\\" variant=\\\"ghost\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n              </InputGroupButton>\\n            </InputGroupAddon>\\n            <InputGroupAddon align=\\\"block-end\\\" className=\\\"border-t\\\">\\n              <InputGroupText>Line 1, Column 1</InputGroupText>\\n              <InputGroupText className=\\\"ml-auto\\\">JavaScript</InputGroupText>\\n            </InputGroupAddon>\\n          </InputGroup>\\n        </Field>\\n      </FieldGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/input-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-group\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/input-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\n\\nfunction InputGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-group\\\"\\n      role=\\\"group\\\"\\n      className={cn(\\n        \\\"group/input-group relative flex h-9 w-full min-w-0 items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupAddonVariants = cva(\\n  \\\"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      align: {\\n        \\\"inline-start\\\":\\n          \\\"order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]\\\",\\n        \\\"inline-end\\\":\\n          \\\"order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]\\\",\\n        \\\"block-start\\\":\\n          \\\"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\\\",\\n        \\\"block-end\\\":\\n          \\\"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      align: \\\"inline-start\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupAddon({\\n  className,\\n  align = \\\"inline-start\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof inputGroupAddonVariants>) {\\n  return (\\n    <div\\n      role=\\\"group\\\"\\n      data-slot=\\\"input-group-addon\\\"\\n      data-align={align}\\n      className={cn(inputGroupAddonVariants({ align }), className)}\\n      onClick={(e) => {\\n        if ((e.target as HTMLElement).closest(\\\"button\\\")) {\\n          return\\n        }\\n        e.currentTarget.parentElement?.querySelector(\\\"input\\\")?.focus()\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst inputGroupButtonVariants = cva(\\n  \\\"flex items-center gap-2 text-sm shadow-none\\\",\\n  {\\n    variants: {\\n      size: {\\n        xs: \\\"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\\\",\\n        sm: \\\"\\\",\\n        \\\"icon-xs\\\":\\n          \\\"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\\\",\\n        \\\"icon-sm\\\": \\\"size-8 p-0 has-[>svg]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      size: \\\"xs\\\",\\n    },\\n  }\\n)\\n\\nfunction InputGroupButton({\\n  className,\\n  type = \\\"button\\\",\\n  variant = \\\"ghost\\\",\\n  size = \\\"xs\\\",\\n  ...props\\n}: Omit<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  VariantProps<typeof inputGroupButtonVariants>) {\\n  return (\\n    <Button\\n      type={type}\\n      data-size={size}\\n      variant={variant}\\n      className={cn(inputGroupButtonVariants({ size }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <Input\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputGroupTextarea({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <Textarea\\n      data-slot=\\\"input-group-control\\\"\\n      className={cn(\\n        \\\"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupButton,\\n  InputGroupText,\\n  InputGroupInput,\\n  InputGroupTextarea,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/input-otp-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp-example\",\n  \"title\": \"Input OTP\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"field\",\n    \"input-otp\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/input-otp-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \\\"input-otp\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  InputOTP,\\n  InputOTPGroup,\\n  InputOTPSeparator,\\n  InputOTPSlot,\\n} from \\\"@/registry/radix-vega/ui/input-otp\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function InputOTPExample() {\\n  return (\\n    <ExampleWrapper>\\n      <InputOTPForm />\\n      <InputOTPSimple />\\n      <InputOTPPattern />\\n      <InputOTPWithSeparator />\\n      <InputOTPAlphanumeric />\\n      <InputOTPDisabled />\\n      <InputOTPFourDigits />\\n      <InputOTPInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction InputOTPSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"simple\\\">Simple</FieldLabel>\\n        <InputOTP id=\\\"simple\\\" maxLength={6}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPPattern() {\\n  return (\\n    <Example title=\\\"Digits Only\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"digits-only\\\">Digits Only</FieldLabel>\\n        <InputOTP id=\\\"digits-only\\\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPWithSeparator() {\\n  const [value, setValue] = React.useState(\\\"123456\\\")\\n\\n  return (\\n    <Example title=\\\"With Separator\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"with-separator\\\">With Separator</FieldLabel>\\n        <InputOTP\\n          id=\\\"with-separator\\\"\\n          maxLength={6}\\n          value={value}\\n          onChange={setValue}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPAlphanumeric() {\\n  return (\\n    <Example title=\\\"Alphanumeric\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"alphanumeric\\\">Alphanumeric</FieldLabel>\\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\\n        <InputOTP\\n          id=\\\"alphanumeric\\\"\\n          maxLength={6}\\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\\n        >\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"disabled\\\">Disabled</FieldLabel>\\n        <InputOTP id=\\\"disabled\\\" maxLength={6} disabled value=\\\"123456\\\">\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={3} />\\n            <InputOTPSlot index={4} />\\n            <InputOTPSlot index={5} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPFourDigits() {\\n  return (\\n    <Example title=\\\"4 Digits\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"four-digits\\\">4 Digits</FieldLabel>\\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\\n        <InputOTP id=\\\"four-digits\\\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} />\\n            <InputOTPSlot index={1} />\\n            <InputOTPSlot index={2} />\\n            <InputOTPSlot index={3} />\\n          </InputOTPGroup>\\n        </InputOTP>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPInvalid() {\\n  const [value, setValue] = React.useState(\\\"000000\\\")\\n\\n  return (\\n    <Example title=\\\"Invalid State\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"invalid\\\">Invalid State</FieldLabel>\\n        <FieldDescription>\\n          Example showing the invalid error state.\\n        </FieldDescription>\\n        <InputOTP id=\\\"invalid\\\" maxLength={6} value={value} onChange={setValue}>\\n          <InputOTPGroup>\\n            <InputOTPSlot index={0} aria-invalid />\\n            <InputOTPSlot index={1} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={2} aria-invalid />\\n            <InputOTPSlot index={3} aria-invalid />\\n          </InputOTPGroup>\\n          <InputOTPSeparator />\\n          <InputOTPGroup>\\n            <InputOTPSlot index={4} aria-invalid />\\n            <InputOTPSlot index={5} aria-invalid />\\n          </InputOTPGroup>\\n        </InputOTP>\\n        <FieldError errors={[{ message: \\\"Invalid code. Please try again.\\\" }]} />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction InputOTPForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <Card className=\\\"mx-auto max-w-md\\\">\\n        <CardHeader>\\n          <CardTitle>Verify your login</CardTitle>\\n          <CardDescription>\\n            Enter the verification code we sent to your email address:{\\\" \\\"}\\n            <span className=\\\"font-medium\\\">m@example.com</span>.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <Field>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <FieldLabel htmlFor=\\\"otp-verification\\\">\\n                  Verification code\\n                </FieldLabel>\\n                <Button variant=\\\"outline\\\" size=\\\"xs\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"RefreshCwIcon\\\"\\n                    hugeicons=\\\"RefreshIcon\\\"\\n                    tabler=\\\"IconRefresh\\\"\\n                    phosphor=\\\"ArrowClockwiseIcon\\\"\\n                    remixicon=\\\"RiRefreshLine\\\"\\n                    data-icon=\\\"inline-start\\\"\\n                  />\\n                  Resend Code\\n                </Button>\\n              </div>\\n              <InputOTP maxLength={6} id=\\\"otp-verification\\\" required>\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={0} />\\n                  <InputOTPSlot index={1} />\\n                  <InputOTPSlot index={2} />\\n                </InputOTPGroup>\\n                <InputOTPSeparator />\\n                <InputOTPGroup className=\\\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\\\">\\n                  <InputOTPSlot index={3} />\\n                  <InputOTPSlot index={4} />\\n                  <InputOTPSlot index={5} />\\n                </InputOTPGroup>\\n              </InputOTP>\\n              <FieldDescription>\\n                <a href=\\\"#\\\">I no longer have access to this email address.</a>\\n              </FieldDescription>\\n            </Field>\\n          </form>\\n        </CardContent>\\n        <CardFooter className=\\\"flex-col gap-2\\\">\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Verify\\n          </Button>\\n          <div className=\\\"text-sm text-muted-foreground\\\">\\n            Having trouble signing in?{\\\" \\\"}\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"underline underline-offset-4 transition-colors hover:text-primary\\\"\\n            >\\n              Contact support\\n            </a>\\n          </div>\\n        </CardFooter>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/input-otp.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input-otp\",\n  \"dependencies\": [\n    \"input-otp\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/input-otp.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { OTPInput, OTPInputContext } from \\\"input-otp\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction InputOTP({\\n  className,\\n  containerClassName,\\n  ...props\\n}: React.ComponentProps<typeof OTPInput> & {\\n  containerClassName?: string\\n}) {\\n  return (\\n    <OTPInput\\n      data-slot=\\\"input-otp\\\"\\n      containerClassName={cn(\\n        \\\"cn-input-otp flex items-center has-disabled:opacity-50\\\",\\n        containerClassName\\n      )}\\n      spellCheck={false}\\n      className={cn(\\\"disabled:cursor-not-allowed\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-group\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction InputOTPSlot({\\n  index,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  index: number\\n}) {\\n  const inputOTPContext = React.useContext(OTPInputContext)\\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\\n\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-slot\\\"\\n      data-active={isActive}\\n      className={cn(\\n        \\\"relative flex size-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {char}\\n      {hasFakeCaret && (\\n        <div className=\\\"pointer-events-none absolute inset-0 flex items-center justify-center\\\">\\n          <div className=\\\"h-4 w-px animate-caret-blink bg-foreground duration-1000\\\" />\\n        </div>\\n      )}\\n    </div>\\n  )\\n}\\n\\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"input-otp-separator\\\"\\n      className=\\\"flex items-center [&_svg:not([class*='size-'])]:size-4\\\"\\n      role=\\\"separator\\\"\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MinusIcon\\\"\\n        tabler=\\\"IconMinus\\\"\\n        hugeicons=\\\"MinusSignIcon\\\"\\n        phosphor=\\\"MinusIcon\\\"\\n        remixicon=\\\"RiSubtractLine\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n      \"api\": \"https://input-otp.rodz.dev\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/input.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Input({ className, type, ...props }: React.ComponentProps<\\\"input\\\">) {\\n  return (\\n    <input\\n      type={type}\\n      data-slot=\\\"input\\\"\\n      className={cn(\\n        \\\"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/item-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item-example\",\n  \"title\": \"Item\",\n  \"registryDependencies\": [\n    \"button\",\n    \"item\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/item-example.tsx\",\n      \"content\": \"import Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemFooter,\\n  ItemGroup,\\n  ItemHeader,\\n  ItemMedia,\\n  ItemSeparator,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ItemExample() {\\n  return (\\n    <ExampleWrapper>\\n      <DefaultVariantItems />\\n      <OutlineVariantItems />\\n      <MutedVariantItems />\\n      <DefaultVariantItemsSmall />\\n      <OutlineVariantItemsSmall />\\n      <MutedVariantItemsSmall />\\n      <DefaultVariantItemsExtraSmall />\\n      <OutlineVariantItemsExtraSmall />\\n      <MutedVariantItemsExtraSmall />\\n      <DefaultLinkItems />\\n      <OutlineLinkItems />\\n      <MutedLinkItems />\\n      <DefaultItemGroup />\\n      <OutlineItemGroup />\\n      <MutedItemGroup />\\n      <ItemSeparatorExample />\\n      <ItemHeaderExamples />\\n      <ItemFooterExamples />\\n      <ItemHeaderAndFooterExamples />\\n      <DefaultVariantItemsWithImage />\\n      <OutlineVariantItemsWithImage />\\n      <OutlineVariantItemsWithImageSmall />\\n      <OutlineVariantItemsWithImageExtraSmall />\\n      <MutedVariantItemsWithImage />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction DefaultVariantItems() {\\n  return (\\n    <Example title=\\\"Default\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItems() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItems() {\\n  return (\\n    <Example title=\\\"Muted\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Small\\\">\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Outline - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsSmall() {\\n  return (\\n    <Example title=\\\"Muted - Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This is a description that provides additional context.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            This item includes a title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n          <ItemDescription>\\n            This item includes media, title, and description.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n          <ItemDescription>\\n            Complete item with all components: media, title, description, and\\n            button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"sm\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n          <ItemDescription>\\n            Item with multiple action buttons in the actions area.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Extra Small\\\">\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsExtraSmall() {\\n  return (\\n    <Example title=\\\"Muted - Extra Small\\\">\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title Only</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Action\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"icon\\\">\\n          <IconPlaceholder\\n            lucide=\\\"InboxIcon\\\"\\n            tabler=\\\"IconArchive\\\"\\n            hugeicons=\\\"Archive02Icon\\\"\\n            phosphor=\\\"ArchiveIcon\\\"\\n            remixicon=\\\"RiArchiveLine\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Action</Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\" size=\\\"xs\\\">\\n        <ItemContent>\\n          <ItemTitle>Multiple Actions</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Cancel\\n          </Button>\\n          <Button size=\\\"sm\\\">Confirm</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultLinkItems() {\\n  return (\\n    <Example title=\\\"asChild\\\">\\n      <ItemGroup>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineLinkItems() {\\n  return (\\n    <Example title=\\\"Outline - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"outline\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedLinkItems() {\\n  return (\\n    <Example title=\\\"Muted - asChild\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title Only (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Clickable item with title and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title (Link)</ItemTitle>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"InboxIcon\\\"\\n                tabler=\\\"IconArchive\\\"\\n                hugeicons=\\\"Archive02Icon\\\"\\n                phosphor=\\\"TrayIcon\\\"\\n                remixicon=\\\"RiInboxLine\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent>\\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\\n              <ItemDescription>\\n                Complete link item with media, title, and description.\\n              </ItemDescription>\\n            </ItemContent>\\n          </a>\\n        </Item>\\n        <Item variant=\\\"muted\\\" asChild>\\n          <a href=\\\"#\\\">\\n            <ItemContent>\\n              <ItemTitle>With Actions (Link)</ItemTitle>\\n              <ItemDescription>\\n                Link item that also has action buttons.\\n              </ItemDescription>\\n            </ItemContent>\\n            <ItemActions>\\n              <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                Share\\n              </Button>\\n            </ItemActions>\\n          </a>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultItemGroup() {\\n  return (\\n    <Example title=\\\"ItemGroup\\\">\\n      <ItemGroup>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in the group.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineItemGroup() {\\n  return (\\n    <Example title=\\\"Outline - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item with icon.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedItemGroup() {\\n  return (\\n    <Example title=\\\"Muted - ItemGroup\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 1</ItemTitle>\\n            <ItemDescription>First item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 2</ItemTitle>\\n            <ItemDescription>Second item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n        <Item variant=\\\"muted\\\">\\n          <ItemContent>\\n            <ItemTitle>Item 3</ItemTitle>\\n            <ItemDescription>Third item in muted group.</ItemDescription>\\n          </ItemContent>\\n          <ItemActions>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Action\\n            </Button>\\n          </ItemActions>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemSeparatorExample() {\\n  return (\\n    <Example title=\\\"ItemSeparator\\\">\\n      <ItemGroup>\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Inbox</ItemTitle>\\n            <ItemDescription>View all incoming messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Sent</ItemTitle>\\n            <ItemDescription>View all sent messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Drafts</ItemTitle>\\n            <ItemDescription>View all draft messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n        <ItemSeparator />\\n        <Item variant=\\\"outline\\\">\\n          <ItemMedia variant=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InboxIcon\\\"\\n              tabler=\\\"IconArchive\\\"\\n              hugeicons=\\\"Archive02Icon\\\"\\n              phosphor=\\\"TrayIcon\\\"\\n              remixicon=\\\"RiInboxLine\\\"\\n            />\\n          </ItemMedia>\\n          <ItemContent>\\n            <ItemTitle>Archive</ItemTitle>\\n            <ItemDescription>View archived messages.</ItemDescription>\\n          </ItemContent>\\n        </Item>\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Design System</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Component Library</ItemTitle>\\n          <ItemDescription>\\n            A comprehensive collection of reusable UI components for building\\n            consistent interfaces.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Marketing</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Campaign Analytics</ItemTitle>\\n          <ItemDescription>\\n            Track performance metrics and engagement rates across all marketing\\n            channels.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Engineering</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Documentation</ItemTitle>\\n          <ItemDescription>\\n            Complete reference guide for all available endpoints and\\n            authentication methods.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemFooter\\\">\\n      <Item>\\n        <ItemContent>\\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\\n          <ItemDescription>\\n            Financial overview including revenue, expenses, and growth metrics\\n            for the fourth quarter.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Last updated 2 hours ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemContent>\\n          <ItemTitle>User Research Findings</ItemTitle>\\n          <ItemDescription>\\n            Insights from interviews and surveys conducted with 50+ users across\\n            different demographics.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Created by Sarah Chen\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemContent>\\n          <ItemTitle>Product Roadmap</ItemTitle>\\n          <ItemDescription>\\n            Planned features and improvements scheduled for the next three\\n            months.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">12 comments</span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction ItemHeaderAndFooterExamples() {\\n  return (\\n    <Example title=\\\"ItemHeader + ItemFooter\\\">\\n      <Item>\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Team Project</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Website Redesign</ItemTitle>\\n          <ItemDescription>\\n            Complete overhaul of the company website with modern design\\n            principles and improved user experience.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Updated 5 minutes ago\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Client Work</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>Mobile App Development</ItemTitle>\\n          <ItemDescription>\\n            Building a cross-platform mobile application for iOS and Android\\n            with React Native.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Status: In Progress\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemHeader>\\n          <span className=\\\"text-sm font-medium\\\">Documentation</span>\\n        </ItemHeader>\\n        <ItemContent>\\n          <ItemTitle>API Integration Guide</ItemTitle>\\n          <ItemDescription>\\n            Step-by-step instructions for integrating third-party APIs with\\n            authentication and error handling.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemFooter>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            Category: Technical • 3 attachments\\n          </span>\\n        </ItemFooter>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction DefaultVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Default - ItemMedia image\\\">\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item>\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image\\\">\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction OutlineVariantItemsWithImageExtraSmall() {\\n  return (\\n    <Example title=\\\"Outline - ItemMedia image - Extra Small\\\">\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"outline\\\" size=\\\"xs\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\\nfunction MutedVariantItemsWithImage() {\\n  return (\\n    <Example title=\\\"Muted - ItemMedia image\\\">\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Project\\\"\\n            alt=\\\"Project\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Project Dashboard</ItemTitle>\\n          <ItemDescription>\\n            Overview of project settings and configuration.\\n          </ItemDescription>\\n        </ItemContent>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/Document\\\"\\n            alt=\\\"Document\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>Document</ItemTitle>\\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            View\\n          </Button>\\n        </ItemActions>\\n      </Item>\\n      <Item variant=\\\"muted\\\">\\n        <ItemMedia variant=\\\"image\\\">\\n          <Image\\n            src=\\\"https://avatar.vercel.sh/File\\\"\\n            alt=\\\"File\\\"\\n            width={40}\\n            height={40}\\n            className=\\\"object-cover grayscale\\\"\\n          />\\n        </ItemMedia>\\n        <ItemContent>\\n          <ItemTitle>File Attachment</ItemTitle>\\n          <ItemDescription>\\n            Complete file with image, title, description, and action button.\\n          </ItemDescription>\\n        </ItemContent>\\n        <ItemActions>\\n          <Button size=\\\"sm\\\">Download</Button>\\n        </ItemActions>\\n      </Item>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"item\",\n  \"registryDependencies\": [\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/item.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\n\\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      role=\\\"list\\\"\\n      data-slot=\\\"item-group\\\"\\n      className={cn(\\n        \\\"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"item-separator\\\"\\n      orientation=\\\"horizontal\\\"\\n      className={cn(\\\"my-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemVariants = cva(\\n  \\\"group/item flex w-full flex-wrap items-center rounded-md border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"border-transparent\\\",\\n        outline: \\\"border-border\\\",\\n        muted: \\\"border-transparent bg-muted/50\\\",\\n      },\\n      size: {\\n        default: \\\"gap-3.5 px-4 py-3.5\\\",\\n        sm: \\\"gap-2.5 px-3 py-2.5\\\",\\n        xs: \\\"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Item({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> &\\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n  return (\\n    <Comp\\n      data-slot=\\\"item\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(itemVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst itemMediaVariants = cva(\\n  \\\"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        icon: \\\"[&_svg:not([class*='size-'])]:size-4\\\",\\n        image:\\n          \\\"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction ItemMedia({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & VariantProps<typeof itemMediaVariants>) {\\n  return (\\n    <div\\n      data-slot=\\\"item-media\\\"\\n      data-variant={variant}\\n      className={cn(itemMediaVariants({ variant, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-content\\\"\\n      className={cn(\\n        \\\"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-title\\\"\\n      className={cn(\\n        \\\"cn-font-heading line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"item-description\\\"\\n      className={cn(\\n        \\\"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemActions({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-actions\\\"\\n      className={cn(\\\"flex items-center gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-header\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"item-footer\\\"\\n      className={cn(\\n        \\\"flex basis-full items-center justify-between gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Item,\\n  ItemMedia,\\n  ItemContent,\\n  ItemActions,\\n  ItemGroup,\\n  ItemSeparator,\\n  ItemTitle,\\n  ItemDescription,\\n  ItemHeader,\\n  ItemFooter,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/kbd-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd-example\",\n  \"title\": \"Kbd\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input-group\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/kbd-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport { Kbd, KbdGroup } from \\\"@/registry/radix-vega/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function KbdExample() {\\n  return (\\n    <ExampleWrapper>\\n      <KbdBasic />\\n      <KbdModifierKeys />\\n      <KbdGroupExample />\\n      <KbdArrowKeys />\\n      <KbdWithIcons />\\n      <KbdWithIconsAndText />\\n      <KbdInInputGroup />\\n      <KbdInTooltip />\\n      <KbdWithSamp />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction KbdBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>⌘K</Kbd>\\n        <Kbd>Ctrl + B</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdModifierKeys() {\\n  return (\\n    <Example title=\\\"Modifier Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>⌘</Kbd>\\n        <Kbd>C</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdGroupExample() {\\n  return (\\n    <Example title=\\\"KbdGroup\\\">\\n      <KbdGroup>\\n        <Kbd>Ctrl</Kbd>\\n        <Kbd>Shift</Kbd>\\n        <Kbd>P</Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdArrowKeys() {\\n  return (\\n    <Example title=\\\"Arrow Keys\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Kbd>↑</Kbd>\\n        <Kbd>↓</Kbd>\\n        <Kbd>←</Kbd>\\n        <Kbd>→</Kbd>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowRightIcon\\\"\\n            tabler=\\\"IconArrowRight\\\"\\n            hugeicons=\\\"ArrowRight01Icon\\\"\\n            phosphor=\\\"ArrowRightIcon\\\"\\n            remixicon=\\\"RiArrowRightLine\\\"\\n          />\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithIconsAndText() {\\n  return (\\n    <Example title=\\\"With Icons and Text\\\">\\n      <KbdGroup>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"ArrowLeftIcon\\\"\\n            tabler=\\\"IconArrowLeft\\\"\\n            hugeicons=\\\"ArrowLeft01Icon\\\"\\n            phosphor=\\\"ArrowLeftIcon\\\"\\n            remixicon=\\\"RiArrowLeftLine\\\"\\n          />\\n          Left\\n        </Kbd>\\n        <Kbd>\\n          <IconPlaceholder\\n            lucide=\\\"CircleDashedIcon\\\"\\n            tabler=\\\"IconCircleDashed\\\"\\n            hugeicons=\\\"DashedLineCircleIcon\\\"\\n            phosphor=\\\"CircleDashedIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n          />\\n          Voice Enabled\\n        </Kbd>\\n      </KbdGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInInputGroup() {\\n  return (\\n    <Example title=\\\"InputGroup\\\">\\n      <InputGroup>\\n        <InputGroupInput />\\n        <InputGroupAddon>\\n          <Kbd>Space</Kbd>\\n        </InputGroupAddon>\\n      </InputGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdInTooltip() {\\n  return (\\n    <Example title=\\\"Tooltip\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button size=\\\"icon-sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent className=\\\"pr-1.5\\\">\\n          <div className=\\\"flex items-center gap-2\\\">\\n            Save Changes <Kbd>S</Kbd>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction KbdWithSamp() {\\n  return (\\n    <Example title=\\\"With samp\\\">\\n      <Kbd>\\n        <samp>File</samp>\\n      </Kbd>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/kbd.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"kbd\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/kbd.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Kbd({ className, ...props }: React.ComponentProps<\\\"kbd\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd\\\"\\n      className={cn(\\n        \\\"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <kbd\\n      data-slot=\\\"kbd-group\\\"\\n      className={cn(\\\"inline-flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Kbd, KbdGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/label-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label-example\",\n  \"title\": \"Label\",\n  \"registryDependencies\": [\n    \"checkbox\",\n    \"field\",\n    \"input\",\n    \"label\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/label-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Checkbox } from \\\"@/registry/radix-vega/ui/checkbox\\\"\\nimport { Field } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\n\\nexport default function LabelExample() {\\n  return (\\n    <ExampleWrapper>\\n      <LabelWithCheckbox />\\n      <LabelWithInput />\\n      <LabelDisabled />\\n      <LabelWithTextarea />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction LabelWithCheckbox() {\\n  return (\\n    <Example title=\\\"With Checkbox\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Checkbox id=\\\"label-demo-terms\\\" />\\n        <Label htmlFor=\\\"label-demo-terms\\\">Accept terms and conditions</Label>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-username\\\">Username</Label>\\n        <Input id=\\\"label-demo-username\\\" placeholder=\\\"Username\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field data-disabled={true}>\\n        <Label htmlFor=\\\"label-demo-disabled\\\">Disabled</Label>\\n        <Input id=\\\"label-demo-disabled\\\" placeholder=\\\"Disabled\\\" disabled />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction LabelWithTextarea() {\\n  return (\\n    <Example title=\\\"With Textarea\\\">\\n      <Field>\\n        <Label htmlFor=\\\"label-demo-message\\\">Message</Label>\\n        <Textarea id=\\\"label-demo-message\\\" placeholder=\\\"Message\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Label as LabelPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Label({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\\n  return (\\n    <LabelPrimitive.Root\\n      data-slot=\\\"label\\\"\\n      className={cn(\\n        \\\"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Label }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/login-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-01\",\n  \"title\": \"Login 01\",\n  \"description\": \"A simple login form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/login-01/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-vega/blocks/login-01/components/login-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/login-01/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Login to your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to login to your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto inline-block text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Login with Google\\n                </Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/login-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-02\",\n  \"title\": \"Login 02\",\n  \"description\": \"A two column login page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/login-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-vega/blocks/login-02/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <LoginForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/login-02/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Login to your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Enter your email below to login to your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <div className=\\\"flex items-center\\\">\\n            <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n            >\\n              Forgot your password?\\n            </a>\\n          </div>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Login</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Login with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"text-center\\\">\\n            Don&apos;t have an account?{\\\" \\\"}\\n            <a href=\\\"#\\\" className=\\\"underline underline-offset-4\\\">\\n              Sign up\\n            </a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/login-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-03\",\n  \"title\": \"Login 03\",\n  \"description\": \"A login page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/login-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { LoginForm } from \\\"@/registry/radix-vega/blocks/login-03/components/login-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/login-03/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Welcome back</CardTitle>\\n          <CardDescription>\\n            Login with your Apple or Google account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Apple\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  Login with Google\\n                </Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-4 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/login-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-04\",\n  \"title\": \"Login 04\",\n  \"description\": \"A login page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/login-04/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-vega/blocks/login-04/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/login-04/components/login-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Welcome back</h1>\\n                <p className=\\\"text-balance text-muted-foreground\\\">\\n                  Login to your Acme Inc account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <div className=\\\"flex items-center\\\">\\n                  <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                  <a\\n                    href=\\\"#\\\"\\n                    className=\\\"ml-auto text-sm underline-offset-2 hover:underline\\\"\\n                  >\\n                    Forgot your password?\\n                  </a>\\n                </div>\\n                <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Login</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Login with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/login-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"login-05\",\n  \"title\": \"Login 05\",\n  \"description\": \"A simple email-only login page.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/login-05/page.tsx\",\n      \"content\": \"import { LoginForm } from \\\"@/registry/radix-vega/blocks/login-05/components/login-form\\\"\\n\\nexport default function LoginPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <LoginForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/login/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/login-05/components/login-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function LoginForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Don&apos;t have an account? <a href=\\\"#\\\">Sign up</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Login</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"login\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/menubar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar-example\",\n  \"title\": \"Menubar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"menubar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/menubar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport {\\n  Menubar,\\n  MenubarCheckboxItem,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarItem,\\n  MenubarLabel,\\n  MenubarMenu,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSeparator,\\n  MenubarShortcut,\\n  MenubarSub,\\n  MenubarSubContent,\\n  MenubarSubTrigger,\\n  MenubarTrigger,\\n} from \\\"@/registry/radix-vega/ui/menubar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function MenubarExample() {\\n  return (\\n    <ExampleWrapper>\\n      <MenubarBasic />\\n      <MenubarWithSubmenu />\\n      <MenubarWithCheckboxes />\\n      <MenubarWithRadio />\\n      <MenubarWithIcons />\\n      <MenubarWithShortcuts />\\n      <MenubarFormat />\\n      <MenubarInsert />\\n      <MenubarDestructive />\\n      <MenubarInDialog />\\n      <MenubarWithInset />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction MenubarBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled>New Incognito Window</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithSubmenu() {\\n  return (\\n    <Example title=\\\"With Submenu\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Email link</MenubarItem>\\n                  <MenubarItem>Messages</MenubarItem>\\n                  <MenubarItem>Notes</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Find...</MenubarItem>\\n                  <MenubarItem>Find Next</MenubarItem>\\n                  <MenubarItem>Find Previous</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>Cut</MenubarItem>\\n              <MenubarItem>Copy</MenubarItem>\\n              <MenubarItem>Paste</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithCheckboxes() {\\n  return (\\n    <Example title=\\\"With Checkboxes\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-64\\\">\\n            <MenubarGroup>\\n              <MenubarCheckboxItem>\\n                Always Show Bookmarks Bar\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem checked>\\n                Always Show Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>\\n                Reload <MenubarShortcut>⌘R</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem disabled inset>\\n                Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithRadio() {\\n  const [user, setUser] = React.useState(\\\"benoit\\\")\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Radio\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Profiles</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\\n              <MenubarRadioItem value=\\\"andy\\\">Andy</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"benoit\\\">Benoit</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"luis\\\">Luis</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Edit...</MenubarItem>\\n              <MenubarItem inset>Add Profile...</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Theme</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n              <MenubarRadioItem value=\\\"light\\\">Light</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"dark\\\">Dark</MenubarRadioItem>\\n              <MenubarRadioItem value=\\\"system\\\">System</MenubarRadioItem>\\n            </MenubarRadioGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SaveIcon\\\"\\n                  tabler=\\\"IconDeviceFloppy\\\"\\n                  hugeicons=\\\"FloppyDiskIcon\\\"\\n                  phosphor=\\\"FloppyDiskIcon\\\"\\n                  remixicon=\\\"RiSaveLine\\\"\\n                />\\n                Save <MenubarShortcut>⌘S</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>More</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Help\\n              </MenubarItem>\\n              <MenubarSeparator />\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"CircleDashedIcon\\\"\\n                  tabler=\\\"IconCircleDashed\\\"\\n                  hugeicons=\\\"DashedLineCircleIcon\\\"\\n                  phosphor=\\\"CircleDashedIcon\\\"\\n                  remixicon=\\\"RiLoaderLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithShortcuts() {\\n  return (\\n    <Example title=\\\"With Shortcuts\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Edit</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                Cut <MenubarShortcut>⌘X</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Copy <MenubarShortcut>⌘C</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                Paste <MenubarShortcut>⌘V</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarFormat() {\\n  return (\\n    <Example title=\\\"Format\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Format</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BoldIcon\\\"\\n                  tabler=\\\"IconBold\\\"\\n                  hugeicons=\\\"TextBoldIcon\\\"\\n                  phosphor=\\\"TextBIcon\\\"\\n                  remixicon=\\\"RiBold\\\"\\n                />\\n                Bold <MenubarShortcut>⌘B</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ItalicIcon\\\"\\n                  tabler=\\\"IconItalic\\\"\\n                  hugeicons=\\\"TextItalicIcon\\\"\\n                  phosphor=\\\"TextItalicIcon\\\"\\n                  remixicon=\\\"RiItalic\\\"\\n                />\\n                Italic <MenubarShortcut>⌘I</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UnderlineIcon\\\"\\n                  tabler=\\\"IconUnderline\\\"\\n                  hugeicons=\\\"TextUnderlineIcon\\\"\\n                  phosphor=\\\"TextUnderlineIcon\\\"\\n                  remixicon=\\\"RiUnderline\\\"\\n                />\\n                Underline <MenubarShortcut>⌘U</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\\n              <MenubarCheckboxItem>Code</MenubarCheckboxItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem inset>Zoom In</MenubarItem>\\n              <MenubarItem inset>Zoom Out</MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInsert() {\\n  return (\\n    <Example title=\\\"Insert\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>Insert</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarSub>\\n              <MenubarSubTrigger>\\n                <IconPlaceholder\\n                  lucide=\\\"ImageIcon\\\"\\n                  tabler=\\\"IconPhoto\\\"\\n                  hugeicons=\\\"ImageIcon\\\"\\n                  phosphor=\\\"ImageIcon\\\"\\n                  remixicon=\\\"RiImageLine\\\"\\n                />\\n                Media\\n              </MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Image</MenubarItem>\\n                  <MenubarItem>Video</MenubarItem>\\n                  <MenubarItem>Audio</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"LinkIcon\\\"\\n                  tabler=\\\"IconLink\\\"\\n                  hugeicons=\\\"LinkIcon\\\"\\n                  phosphor=\\\"LinkIcon\\\"\\n                  remixicon=\\\"RiLinksLine\\\"\\n                />\\n                Link <MenubarShortcut>⌘K</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"TableIcon\\\"\\n                  tabler=\\\"IconTable\\\"\\n                  hugeicons=\\\"TableIcon\\\"\\n                  phosphor=\\\"TableIcon\\\"\\n                  remixicon=\\\"RiTableLine\\\"\\n                />\\n                Table\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Tools</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                />\\n                Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CheckIcon\\\"\\n                  tabler=\\\"IconCheck\\\"\\n                  hugeicons=\\\"Tick02Icon\\\"\\n                  phosphor=\\\"CheckIcon\\\"\\n                  remixicon=\\\"RiCheckLine\\\"\\n                />\\n                Spell Check\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarDestructive() {\\n  return (\\n    <Example title=\\\"Destructive\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>File</MenubarTrigger>\\n          <MenubarContent className=\\\"w-40\\\">\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FileIcon\\\"\\n                  tabler=\\\"IconFile\\\"\\n                  hugeicons=\\\"FileIcon\\\"\\n                  phosphor=\\\"FileIcon\\\"\\n                  remixicon=\\\"RiFileLine\\\"\\n                />\\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"FolderIcon\\\"\\n                  tabler=\\\"IconFolder\\\"\\n                  hugeicons=\\\"FolderIcon\\\"\\n                  phosphor=\\\"FolderIcon\\\"\\n                  remixicon=\\\"RiFolderLine\\\"\\n                />\\n                Open Folder\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n        <MenubarMenu>\\n          <MenubarTrigger>Account</MenubarTrigger>\\n          <MenubarContent>\\n            <MenubarGroup>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"UserIcon\\\"\\n                  tabler=\\\"IconUser\\\"\\n                  hugeicons=\\\"UserIcon\\\"\\n                  phosphor=\\\"UserIcon\\\"\\n                  remixicon=\\\"RiUserLine\\\"\\n                />\\n                Profile\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SettingsIcon\\\"\\n                  tabler=\\\"IconSettings\\\"\\n                  hugeicons=\\\"SettingsIcon\\\"\\n                  phosphor=\\\"GearIcon\\\"\\n                  remixicon=\\\"RiSettingsLine\\\"\\n                />\\n                Settings\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"LogOutIcon\\\"\\n                  tabler=\\\"IconLogout\\\"\\n                  hugeicons=\\\"LogoutIcon\\\"\\n                  phosphor=\\\"SignOutIcon\\\"\\n                  remixicon=\\\"RiLogoutBoxLine\\\"\\n                />\\n                Sign out\\n              </MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarItem variant=\\\"destructive\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"TrashIcon\\\"\\n                  tabler=\\\"IconTrash\\\"\\n                  hugeicons=\\\"DeleteIcon\\\"\\n                  phosphor=\\\"TrashIcon\\\"\\n                  remixicon=\\\"RiDeleteBinLine\\\"\\n                />\\n                Delete\\n              </MenubarItem>\\n            </MenubarGroup>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Menubar Example</DialogTitle>\\n            <DialogDescription>\\n              Use the menubar below to see the menu options.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Menubar>\\n            <MenubarMenu>\\n              <MenubarTrigger>File</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"CopyIcon\\\"\\n                      tabler=\\\"IconCopy\\\"\\n                      hugeicons=\\\"CopyIcon\\\"\\n                      phosphor=\\\"CopyIcon\\\"\\n                      remixicon=\\\"RiFileCopyLine\\\"\\n                    />\\n                    Copy\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ScissorsIcon\\\"\\n                      tabler=\\\"IconCut\\\"\\n                      hugeicons=\\\"ScissorIcon\\\"\\n                      phosphor=\\\"ScissorsIcon\\\"\\n                      remixicon=\\\"RiScissorsLine\\\"\\n                    />\\n                    Cut\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    <IconPlaceholder\\n                      lucide=\\\"ClipboardPasteIcon\\\"\\n                      tabler=\\\"IconClipboard\\\"\\n                      hugeicons=\\\"ClipboardIcon\\\"\\n                      phosphor=\\\"ClipboardIcon\\\"\\n                      remixicon=\\\"RiClipboardLine\\\"\\n                    />\\n                    Paste\\n                  </MenubarItem>\\n                </MenubarGroup>\\n                <MenubarSeparator />\\n                <MenubarSub>\\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\\n                  <MenubarSubContent>\\n                    <MenubarGroup>\\n                      <MenubarItem>Save Page...</MenubarItem>\\n                      <MenubarItem>Create Shortcut...</MenubarItem>\\n                      <MenubarItem>Name Window...</MenubarItem>\\n                    </MenubarGroup>\\n                    <MenubarSeparator />\\n                    <MenubarGroup>\\n                      <MenubarItem>Developer Tools</MenubarItem>\\n                    </MenubarGroup>\\n                  </MenubarSubContent>\\n                </MenubarSub>\\n                <MenubarSeparator />\\n                <MenubarGroup>\\n                  <MenubarItem variant=\\\"destructive\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TrashIcon\\\"\\n                      tabler=\\\"IconTrash\\\"\\n                      hugeicons=\\\"DeleteIcon\\\"\\n                      phosphor=\\\"TrashIcon\\\"\\n                      remixicon=\\\"RiDeleteBinLine\\\"\\n                    />\\n                    Delete\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n            <MenubarMenu>\\n              <MenubarTrigger>Edit</MenubarTrigger>\\n              <MenubarContent>\\n                <MenubarGroup>\\n                  <MenubarItem>\\n                    Undo <MenubarShortcut>⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                  <MenubarItem>\\n                    Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\\n                  </MenubarItem>\\n                </MenubarGroup>\\n              </MenubarContent>\\n            </MenubarMenu>\\n          </Menubar>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\\nfunction MenubarWithInset() {\\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\\n  const [showUrls, setShowUrls] = React.useState(false)\\n  const [theme, setTheme] = React.useState(\\\"system\\\")\\n\\n  return (\\n    <Example title=\\\"With Inset\\\">\\n      <Menubar>\\n        <MenubarMenu>\\n          <MenubarTrigger>View</MenubarTrigger>\\n          <MenubarContent className=\\\"w-44\\\">\\n            <MenubarGroup>\\n              <MenubarLabel>Actions</MenubarLabel>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CopyIcon\\\"\\n                  tabler=\\\"IconCopy\\\"\\n                  hugeicons=\\\"CopyIcon\\\"\\n                  phosphor=\\\"CopyIcon\\\"\\n                  remixicon=\\\"RiFileCopyLine\\\"\\n                />\\n                Copy\\n              </MenubarItem>\\n              <MenubarItem>\\n                <IconPlaceholder\\n                  lucide=\\\"ScissorsIcon\\\"\\n                  tabler=\\\"IconCut\\\"\\n                  hugeicons=\\\"ScissorIcon\\\"\\n                  phosphor=\\\"ScissorsIcon\\\"\\n                  remixicon=\\\"RiScissorsLine\\\"\\n                />\\n                Cut\\n              </MenubarItem>\\n              <MenubarItem inset>Paste</MenubarItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Appearance</MenubarLabel>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showBookmarks}\\n                onCheckedChange={setShowBookmarks}\\n              >\\n                Bookmarks\\n              </MenubarCheckboxItem>\\n              <MenubarCheckboxItem\\n                inset\\n                checked={showUrls}\\n                onCheckedChange={setShowUrls}\\n              >\\n                Full URLs\\n              </MenubarCheckboxItem>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarGroup>\\n              <MenubarLabel inset>Theme</MenubarLabel>\\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\\n                <MenubarRadioItem inset value=\\\"light\\\">\\n                  Light\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"dark\\\">\\n                  Dark\\n                </MenubarRadioItem>\\n                <MenubarRadioItem inset value=\\\"system\\\">\\n                  System\\n                </MenubarRadioItem>\\n              </MenubarRadioGroup>\\n            </MenubarGroup>\\n            <MenubarSeparator />\\n            <MenubarSub>\\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\\n              <MenubarSubContent>\\n                <MenubarGroup>\\n                  <MenubarItem>Save Page...</MenubarItem>\\n                  <MenubarItem>Create Shortcut...</MenubarItem>\\n                </MenubarGroup>\\n              </MenubarSubContent>\\n            </MenubarSub>\\n          </MenubarContent>\\n        </MenubarMenu>\\n      </Menubar>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Menubar as MenubarPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Menubar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\\n  return (\\n    <MenubarPrimitive.Root\\n      data-slot=\\\"menubar\\\"\\n      className={cn(\\n        \\\"flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarMenu({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\\n  return <MenubarPrimitive.Menu data-slot=\\\"menubar-menu\\\" {...props} />\\n}\\n\\nfunction MenubarGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\\n  return <MenubarPrimitive.Group data-slot=\\\"menubar-group\\\" {...props} />\\n}\\n\\nfunction MenubarPortal({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\\n  return <MenubarPrimitive.Portal data-slot=\\\"menubar-portal\\\" {...props} />\\n}\\n\\nfunction MenubarRadioGroup({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\\n  return (\\n    <MenubarPrimitive.RadioGroup data-slot=\\\"menubar-radio-group\\\" {...props} />\\n  )\\n}\\n\\nfunction MenubarTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\\n  return (\\n    <MenubarPrimitive.Trigger\\n      data-slot=\\\"menubar-trigger\\\"\\n      className={cn(\\n        \\\"flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarContent({\\n  className,\\n  align = \\\"start\\\",\\n  alignOffset = -4,\\n  sideOffset = 8,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\\n  return (\\n    <MenubarPortal>\\n      <MenubarPrimitive.Content\\n        data-slot=\\\"menubar-content\\\"\\n        align={align}\\n        alignOffset={alignOffset}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent z-50 min-w-36 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </MenubarPortal>\\n  )\\n}\\n\\nfunction MenubarItem({\\n  className,\\n  inset,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\\n  inset?: boolean\\n  variant?: \\\"default\\\" | \\\"destructive\\\"\\n}) {\\n  return (\\n    <MenubarPrimitive.Item\\n      data-slot=\\\"menubar-item\\\"\\n      data-inset={inset}\\n      data-variant={variant}\\n      className={cn(\\n        \\\"group/menubar-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarCheckboxItem({\\n  className,\\n  children,\\n  checked,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.CheckboxItem\\n      data-slot=\\\"menubar-checkbox-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\\\",\\n        className\\n      )}\\n      checked={checked}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.CheckboxItem>\\n  )\\n}\\n\\nfunction MenubarRadioItem({\\n  className,\\n  children,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.RadioItem\\n      data-slot=\\\"menubar-radio-item\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute left-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\">\\n        <MenubarPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n          />\\n        </MenubarPrimitive.ItemIndicator>\\n      </span>\\n      {children}\\n    </MenubarPrimitive.RadioItem>\\n  )\\n}\\n\\nfunction MenubarLabel({\\n  className,\\n  inset,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.Label\\n      data-slot=\\\"menubar-label\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"px-2 py-1.5 text-sm font-medium data-inset:pl-8\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\\n  return (\\n    <MenubarPrimitive.Separator\\n      data-slot=\\\"menubar-separator\\\"\\n      className={cn(\\\"-mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarShortcut({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      data-slot=\\\"menubar-shortcut\\\"\\n      className={cn(\\n        \\\"ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction MenubarSub({\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\\n  return <MenubarPrimitive.Sub data-slot=\\\"menubar-sub\\\" {...props} />\\n}\\n\\nfunction MenubarSubTrigger({\\n  className,\\n  inset,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\\n  inset?: boolean\\n}) {\\n  return (\\n    <MenubarPrimitive.SubTrigger\\n      data-slot=\\\"menubar-sub-trigger\\\"\\n      data-inset={inset}\\n      className={cn(\\n        \\\"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        className=\\\"cn-rtl-flip ml-auto size-4\\\"\\n      />\\n    </MenubarPrimitive.SubTrigger>\\n  )\\n}\\n\\nfunction MenubarSubContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\\n  return (\\n    <MenubarPrimitive.SubContent\\n      data-slot=\\\"menubar-sub-content\\\"\\n      className={cn(\\n        \\\"cn-menu-target cn-menu-translucent z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Menubar,\\n  MenubarPortal,\\n  MenubarMenu,\\n  MenubarTrigger,\\n  MenubarContent,\\n  MenubarGroup,\\n  MenubarSeparator,\\n  MenubarLabel,\\n  MenubarItem,\\n  MenubarShortcut,\\n  MenubarCheckboxItem,\\n  MenubarRadioGroup,\\n  MenubarRadioItem,\\n  MenubarSub,\\n  MenubarSubTrigger,\\n  MenubarSubContent,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/native-select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select-example\",\n  \"title\": \"Native Select\",\n  \"registryDependencies\": [\n    \"field\",\n    \"native-select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/native-select-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOptGroup,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-vega/ui/native-select\\\"\\n\\nexport default function NativeSelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <NativeSelectBasic />\\n      <NativeSelectWithGroups />\\n      <NativeSelectSizes />\\n      <NativeSelectWithField />\\n      <NativeSelectDisabled />\\n      <NativeSelectInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NativeSelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        <NativeSelectOption value=\\\"grapes\\\" disabled>\\n          Grapes\\n        </NativeSelectOption>\\n        <NativeSelectOption value=\\\"pineapple\\\">Pineapple</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups\\\">\\n      <NativeSelect>\\n        <NativeSelectOption value=\\\"\\\">Select a food</NativeSelectOption>\\n        <NativeSelectOptGroup label=\\\"Fruits\\\">\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n        <NativeSelectOptGroup label=\\\"Vegetables\\\">\\n          <NativeSelectOption value=\\\"carrot\\\">Carrot</NativeSelectOption>\\n          <NativeSelectOption value=\\\"broccoli\\\">Broccoli</NativeSelectOption>\\n          <NativeSelectOption value=\\\"spinach\\\">Spinach</NativeSelectOption>\\n        </NativeSelectOptGroup>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <NativeSelect size=\\\"sm\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n        <NativeSelect size=\\\"default\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a fruit</NativeSelectOption>\\n          <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n          <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n          <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"native-select-country\\\">Country</FieldLabel>\\n        <NativeSelect id=\\\"native-select-country\\\">\\n          <NativeSelectOption value=\\\"\\\">Select a country</NativeSelectOption>\\n          <NativeSelectOption value=\\\"us\\\">United States</NativeSelectOption>\\n          <NativeSelectOption value=\\\"uk\\\">United Kingdom</NativeSelectOption>\\n          <NativeSelectOption value=\\\"ca\\\">Canada</NativeSelectOption>\\n          <NativeSelectOption value=\\\"au\\\">Australia</NativeSelectOption>\\n        </NativeSelect>\\n        <FieldDescription>Select your country of residence.</FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <NativeSelect disabled>\\n        <NativeSelectOption value=\\\"\\\">Disabled</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\\nfunction NativeSelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <NativeSelect aria-invalid=\\\"true\\\">\\n        <NativeSelectOption value=\\\"\\\">Error state</NativeSelectOption>\\n        <NativeSelectOption value=\\\"apple\\\">Apple</NativeSelectOption>\\n        <NativeSelectOption value=\\\"banana\\\">Banana</NativeSelectOption>\\n        <NativeSelectOption value=\\\"blueberry\\\">Blueberry</NativeSelectOption>\\n      </NativeSelect>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/native-select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"native-select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/native-select.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\ntype NativeSelectProps = Omit<React.ComponentProps<\\\"select\\\">, \\\"size\\\"> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}\\n\\nfunction NativeSelect({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: NativeSelectProps) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"group/native-select relative w-fit has-[select:disabled]:opacity-50\\\",\\n        className\\n      )}\\n      data-slot=\\\"native-select-wrapper\\\"\\n      data-size={size}\\n    >\\n      <select\\n        data-slot=\\\"native-select\\\"\\n        data-size={size}\\n        className=\\\"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-8 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\"\\n        {...props}\\n      />\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconSelector\\\"\\n        hugeicons=\\\"UnfoldMoreIcon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none\\\"\\n        aria-hidden=\\\"true\\\"\\n        data-slot=\\\"native-select-icon\\\"\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\\\"option\\\">) {\\n  return <option data-slot=\\\"native-select-option\\\" {...props} />\\n}\\n\\nfunction NativeSelectOptGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"optgroup\\\">) {\\n  return (\\n    <optgroup\\n      data-slot=\\\"native-select-optgroup\\\"\\n      className={cn(className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/navigation-menu-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu-example\",\n  \"title\": \"Navigation Menu\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"navigation-menu\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/navigation-menu-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport Link from \\\"next/link\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  NavigationMenu,\\n  NavigationMenuContent,\\n  NavigationMenuItem,\\n  NavigationMenuLink,\\n  NavigationMenuList,\\n  NavigationMenuTrigger,\\n  navigationMenuTriggerStyle,\\n} from \\\"@/registry/radix-vega/ui/navigation-menu\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst components: { title: string; href: string; description: string }[] = [\\n  {\\n    title: \\\"Alert Dialog\\\",\\n    href: \\\"/docs/primitives/alert-dialog\\\",\\n    description:\\n      \\\"A modal dialog that interrupts the user with important content and expects a response.\\\",\\n  },\\n  {\\n    title: \\\"Hover Card\\\",\\n    href: \\\"/docs/primitives/hover-card\\\",\\n    description:\\n      \\\"For sighted users to preview content available behind a link.\\\",\\n  },\\n  {\\n    title: \\\"Progress\\\",\\n    href: \\\"/docs/primitives/progress\\\",\\n    description:\\n      \\\"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\\\",\\n  },\\n  {\\n    title: \\\"Scroll-area\\\",\\n    href: \\\"/docs/primitives/scroll-area\\\",\\n    description: \\\"Visually or semantically separates content.\\\",\\n  },\\n  {\\n    title: \\\"Tabs\\\",\\n    href: \\\"/docs/primitives/tabs\\\",\\n    description:\\n      \\\"A set of layered sections of content—known as tab panels—that are displayed one at a time.\\\",\\n  },\\n  {\\n    title: \\\"Tooltip\\\",\\n    href: \\\"/docs/primitives/tooltip\\\",\\n    description:\\n      \\\"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\\\",\\n  },\\n]\\n\\nexport default function NavigationMenuExample() {\\n  return (\\n    <ExampleWrapper className=\\\"lg:grid-cols-1\\\">\\n      <NavigationMenuWithViewport />\\n      <NavigationMenuWithoutViewport />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction NavigationMenuWithViewport() {\\n  return (\\n    <Example title=\\\"With Viewport\\\">\\n      <NavigationMenu>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-96\\\">\\n                <ListItem href=\\\"/docs\\\" title=\\\"Introduction\\\">\\n                  Re-usable components built with Tailwind CSS.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/installation\\\" title=\\\"Installation\\\">\\n                  How to install dependencies and structure your app.\\n                </ListItem>\\n                <ListItem href=\\\"/docs/primitives/typography\\\" title=\\\"Typography\\\">\\n                  Styles for headings, paragraphs, lists...etc\\n                </ListItem>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[400px] gap-1 md:w-[500px] md:grid-cols-2 lg:w-[600px]\\\">\\n                {components.map((component) => (\\n                  <ListItem\\n                    key={component.title}\\n                    title={component.title}\\n                    href={component.href}\\n                  >\\n                    {component.description}\\n                  </ListItem>\\n                ))}\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction NavigationMenuWithoutViewport() {\\n  return (\\n    <Example title=\\\"Without Viewport\\\">\\n      <NavigationMenu viewport={false}>\\n        <NavigationMenuList>\\n          <NavigationMenuItem>\\n            <NavigationMenuLink\\n              asChild\\n              className={navigationMenuTriggerStyle()}\\n            >\\n              <Link href=\\\"/docs\\\">Documentation</Link>\\n            </NavigationMenuLink>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"w-72\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Components</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Browse all components in the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Documentation</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Learn how to use the library.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <div className=\\\"flex flex-col\\\">\\n                        <div className=\\\"font-medium\\\">Blog</div>\\n                        <div className=\\\"text-muted-foreground\\\">\\n                          Read our latest blog posts.\\n                        </div>\\n                      </div>\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>Simple List</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul>\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Components</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Documentation</Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">Blocks</Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n          <NavigationMenuItem>\\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\\n            <NavigationMenuContent>\\n              <ul className=\\\"grid w-[200px]\\\">\\n                <li>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Backlog\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\" className=\\\"flex-row items-center gap-2\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      To Do\\n                    </Link>\\n                  </NavigationMenuLink>\\n                  <NavigationMenuLink asChild>\\n                    <Link href=\\\"#\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"CircleAlertIcon\\\"\\n                        tabler=\\\"IconExclamationCircle\\\"\\n                        hugeicons=\\\"AlertCircleIcon\\\"\\n                        phosphor=\\\"WarningCircleIcon\\\"\\n                        remixicon=\\\"RiErrorWarningLine\\\"\\n                      />\\n                      Done\\n                    </Link>\\n                  </NavigationMenuLink>\\n                </li>\\n              </ul>\\n            </NavigationMenuContent>\\n          </NavigationMenuItem>\\n        </NavigationMenuList>\\n      </NavigationMenu>\\n    </Example>\\n  )\\n}\\n\\nfunction ListItem({\\n  title,\\n  children,\\n  href,\\n  ...props\\n}: React.ComponentPropsWithoutRef<\\\"li\\\"> & { href: string }) {\\n  return (\\n    <li {...props}>\\n      <NavigationMenuLink asChild>\\n        <Link href={href}>\\n          <div className=\\\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\\\">\\n            <div className=\\\"leading-none font-medium\\\">{title}</div>\\n            <div className=\\\"line-clamp-2 text-muted-foreground\\\">{children}</div>\\n          </div>\\n        </Link>\\n      </NavigationMenuLink>\\n    </li>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/navigation-menu.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { NavigationMenu as NavigationMenuPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction NavigationMenu({\\n  className,\\n  children,\\n  viewport = true,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\\n  viewport?: boolean\\n}) {\\n  return (\\n    <NavigationMenuPrimitive.Root\\n      data-slot=\\\"navigation-menu\\\"\\n      data-viewport={viewport}\\n      className={cn(\\n        \\\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      {viewport && <NavigationMenuViewport />}\\n    </NavigationMenuPrimitive.Root>\\n  )\\n}\\n\\nfunction NavigationMenuList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\\n  return (\\n    <NavigationMenuPrimitive.List\\n      data-slot=\\\"navigation-menu-list\\\"\\n      className={cn(\\n        \\\"group flex flex-1 list-none items-center justify-center gap-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\\n  return (\\n    <NavigationMenuPrimitive.Item\\n      data-slot=\\\"navigation-menu-item\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst navigationMenuTriggerStyle = cva(\\n  \\\"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted\\\"\\n)\\n\\nfunction NavigationMenuTrigger({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\\n  return (\\n    <NavigationMenuPrimitive.Trigger\\n      data-slot=\\\"navigation-menu-trigger\\\"\\n      className={cn(navigationMenuTriggerStyle(), \\\"group\\\", className)}\\n      {...props}\\n    >\\n      {children}{\\\" \\\"}\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n        className=\\\"relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180\\\"\\n        aria-hidden=\\\"true\\\"\\n      />\\n    </NavigationMenuPrimitive.Trigger>\\n  )\\n}\\n\\nfunction NavigationMenuContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\\n  return (\\n    <NavigationMenuPrimitive.Content\\n      data-slot=\\\"navigation-menu-content\\\"\\n      className={cn(\\n        \\\"top-0 left-0 w-full p-2 pr-2.5 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuViewport({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\\n  return (\\n    <div\\n      className={cn(\\n        \\\"absolute top-full left-0 isolate z-50 flex justify-center\\\"\\n      )}\\n    >\\n      <NavigationMenuPrimitive.Viewport\\n        data-slot=\\\"navigation-menu-viewport\\\"\\n        className={cn(\\n          \\\"origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction NavigationMenuLink({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\\n  return (\\n    <NavigationMenuPrimitive.Link\\n      data-slot=\\\"navigation-menu-link\\\"\\n      className={cn(\\n        \\\"flex items-center gap-1.5 rounded-sm p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-muted/50 data-[active=true]:hover:bg-muted data-[active=true]:focus:bg-muted [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction NavigationMenuIndicator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\\n  return (\\n    <NavigationMenuPrimitive.Indicator\\n      data-slot=\\\"navigation-menu-indicator\\\"\\n      className={cn(\\n        \\\"top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\\\" />\\n    </NavigationMenuPrimitive.Indicator>\\n  )\\n}\\n\\nexport {\\n  NavigationMenu,\\n  NavigationMenuList,\\n  NavigationMenuItem,\\n  NavigationMenuContent,\\n  NavigationMenuTrigger,\\n  NavigationMenuLink,\\n  NavigationMenuIndicator,\\n  NavigationMenuViewport,\\n  navigationMenuTriggerStyle,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/pagination-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination-example\",\n  \"title\": \"Pagination\",\n  \"registryDependencies\": [\n    \"field\",\n    \"pagination\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/pagination-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n} from \\\"@/registry/radix-vega/ui/pagination\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\n\\nexport default function PaginationExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PaginationBasic />\\n      <PaginationSimple />\\n      <PaginationIconsOnly />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PaginationBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationPrevious href=\\\"#\\\" />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationEllipsis />\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationNext href=\\\"#\\\" />\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Pagination>\\n        <PaginationContent>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">1</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\" isActive>\\n              2\\n            </PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">3</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">4</PaginationLink>\\n          </PaginationItem>\\n          <PaginationItem>\\n            <PaginationLink href=\\\"#\\\">5</PaginationLink>\\n          </PaginationItem>\\n        </PaginationContent>\\n      </Pagination>\\n    </Example>\\n  )\\n}\\n\\nfunction PaginationIconsOnly() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <div className=\\\"flex items-center justify-between gap-4\\\">\\n        <Field orientation=\\\"horizontal\\\" className=\\\"w-fit\\\">\\n          <FieldLabel htmlFor=\\\"select-rows-per-page\\\">Rows per page</FieldLabel>\\n          <Select defaultValue=\\\"25\\\">\\n            <SelectTrigger className=\\\"w-20\\\" id=\\\"select-rows-per-page\\\">\\n              <SelectValue />\\n            </SelectTrigger>\\n            <SelectContent align=\\\"start\\\">\\n              <SelectGroup>\\n                <SelectItem value=\\\"10\\\">10</SelectItem>\\n                <SelectItem value=\\\"25\\\">25</SelectItem>\\n                <SelectItem value=\\\"50\\\">50</SelectItem>\\n                <SelectItem value=\\\"100\\\">100</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </Field>\\n        <Pagination className=\\\"mx-0 w-auto\\\">\\n          <PaginationContent>\\n            <PaginationItem>\\n              <PaginationPrevious href=\\\"#\\\" />\\n            </PaginationItem>\\n            <PaginationItem>\\n              <PaginationNext href=\\\"#\\\" />\\n            </PaginationItem>\\n          </PaginationContent>\\n        </Pagination>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/pagination.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pagination\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/pagination.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Pagination({ className, ...props }: React.ComponentProps<\\\"nav\\\">) {\\n  return (\\n    <nav\\n      role=\\\"navigation\\\"\\n      aria-label=\\\"pagination\\\"\\n      data-slot=\\\"pagination\\\"\\n      className={cn(\\\"mx-auto flex w-full justify-center\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"pagination-content\\\"\\n      className={cn(\\\"flex items-center gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PaginationItem({ ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return <li data-slot=\\\"pagination-item\\\" {...props} />\\n}\\n\\ntype PaginationLinkProps = {\\n  isActive?: boolean\\n} & Pick<React.ComponentProps<typeof Button>, \\\"size\\\"> &\\n  React.ComponentProps<\\\"a\\\">\\n\\nfunction PaginationLink({\\n  className,\\n  isActive,\\n  size = \\\"icon\\\",\\n  ...props\\n}: PaginationLinkProps) {\\n  return (\\n    <Button\\n      asChild\\n      variant={isActive ? \\\"outline\\\" : \\\"ghost\\\"}\\n      size={size}\\n      className={cn(className)}\\n    >\\n      <a\\n        aria-current={isActive ? \\\"page\\\" : undefined}\\n        data-slot=\\\"pagination-link\\\"\\n        data-active={isActive}\\n        {...props}\\n      />\\n    </Button>\\n  )\\n}\\n\\nfunction PaginationPrevious({\\n  className,\\n  text = \\\"Previous\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to previous page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pl-2!\\\", className)}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronLeftIcon\\\"\\n        tabler=\\\"IconChevronLeft\\\"\\n        hugeicons=\\\"ArrowLeft01Icon\\\"\\n        phosphor=\\\"CaretLeftIcon\\\"\\n        remixicon=\\\"RiArrowLeftSLine\\\"\\n        data-icon=\\\"inline-start\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationNext({\\n  className,\\n  text = \\\"Next\\\",\\n  ...props\\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\\n  return (\\n    <PaginationLink\\n      aria-label=\\\"Go to next page\\\"\\n      size=\\\"default\\\"\\n      className={cn(\\\"pr-2!\\\", className)}\\n      {...props}\\n    >\\n      <span className=\\\"hidden sm:block\\\">{text}</span>\\n      <IconPlaceholder\\n        lucide=\\\"ChevronRightIcon\\\"\\n        tabler=\\\"IconChevronRight\\\"\\n        hugeicons=\\\"ArrowRight01Icon\\\"\\n        phosphor=\\\"CaretRightIcon\\\"\\n        remixicon=\\\"RiArrowRightSLine\\\"\\n        data-icon=\\\"inline-end\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n    </PaginationLink>\\n  )\\n}\\n\\nfunction PaginationEllipsis({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\">) {\\n  return (\\n    <span\\n      aria-hidden\\n      data-slot=\\\"pagination-ellipsis\\\"\\n      className={cn(\\n        \\\"flex size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"MoreHorizontalIcon\\\"\\n        tabler=\\\"IconDots\\\"\\n        hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n        phosphor=\\\"DotsThreeIcon\\\"\\n        remixicon=\\\"RiMoreLine\\\"\\n      />\\n      <span className=\\\"sr-only\\\">More pages</span>\\n    </span>\\n  )\\n}\\n\\nexport {\\n  Pagination,\\n  PaginationContent,\\n  PaginationEllipsis,\\n  PaginationItem,\\n  PaginationLink,\\n  PaginationNext,\\n  PaginationPrevious,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/popover-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover-example\",\n  \"title\": \"Popover\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"popover\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/popover-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-vega/ui/popover\\\"\\n\\nexport default function PopoverExample() {\\n  return (\\n    <ExampleWrapper>\\n      <PopoverBasic />\\n      <PopoverWithForm />\\n      <PopoverAlignments />\\n      <PopoverInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction PopoverBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Popover>\\n        <PopoverTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Popover</Button>\\n        </PopoverTrigger>\\n        <PopoverContent className=\\\"w-64\\\" align=\\\"start\\\">\\n          <PopoverHeader>\\n            <PopoverTitle>Dimensions</PopoverTitle>\\n            <PopoverDescription>\\n              Set the dimensions for the layer.\\n            </PopoverDescription>\\n          </PopoverHeader>\\n          <FieldGroup className=\\\"gap-4\\\">\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"width\\\" className=\\\"w-1/2\\\">\\n                Width\\n              </FieldLabel>\\n              <Input id=\\\"width\\\" defaultValue=\\\"100%\\\" />\\n            </Field>\\n            <Field orientation=\\\"horizontal\\\">\\n              <FieldLabel htmlFor=\\\"height\\\" className=\\\"w-1/2\\\">\\n                Height\\n              </FieldLabel>\\n              <Input id=\\\"height\\\" defaultValue=\\\"25px\\\" />\\n            </Field>\\n          </FieldGroup>\\n        </PopoverContent>\\n      </Popover>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverAlignments() {\\n  return (\\n    <Example title=\\\"Alignments\\\">\\n      <div className=\\\"flex gap-6\\\">\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Start\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"start\\\" className=\\\"w-40\\\">\\n            Aligned to start\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              Center\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"center\\\" className=\\\"w-40\\\">\\n            Aligned to center\\n          </PopoverContent>\\n        </Popover>\\n        <Popover>\\n          <PopoverTrigger asChild>\\n            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n              End\\n            </Button>\\n          </PopoverTrigger>\\n          <PopoverContent align=\\\"end\\\" className=\\\"w-40\\\">\\n            Aligned to end\\n          </PopoverContent>\\n        </Popover>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction PopoverInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Popover Example</DialogTitle>\\n            <DialogDescription>\\n              Click the button below to see the popover.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n                Open Popover\\n              </Button>\\n            </PopoverTrigger>\\n            <PopoverContent align=\\\"start\\\">\\n              <PopoverHeader>\\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\\n                <PopoverDescription>\\n                  This popover appears inside a dialog. Click the button to open\\n                  it.\\n                </PopoverDescription>\\n              </PopoverHeader>\\n            </PopoverContent>\\n          </Popover>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/popover.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Popover as PopoverPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return <PopoverPrimitive.Trigger data-slot=\\\"popover-trigger\\\" {...props} />\\n}\\n\\nfunction PopoverContent({\\n  className,\\n  align = \\\"center\\\",\\n  sideOffset = 4,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\\n  return (\\n    <PopoverPrimitive.Portal>\\n      <PopoverPrimitive.Content\\n        data-slot=\\\"popover-content\\\"\\n        align={align}\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-md bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </PopoverPrimitive.Portal>\\n  )\\n}\\n\\nfunction PopoverAnchor({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\\n  return <PopoverPrimitive.Anchor data-slot=\\\"popover-anchor\\\" {...props} />\\n}\\n\\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-header\\\"\\n      className={cn(\\\"flex flex-col gap-1 text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\\\"h2\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"popover-title\\\"\\n      className={cn(\\\"cn-font-heading font-medium\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction PopoverDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"p\\\">) {\\n  return (\\n    <p\\n      data-slot=\\\"popover-description\\\"\\n      className={cn(\\\"text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Popover,\\n  PopoverAnchor,\\n  PopoverContent,\\n  PopoverDescription,\\n  PopoverHeader,\\n  PopoverTitle,\\n  PopoverTrigger,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/preview.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"preview\",\n  \"title\": \"Preview\",\n  \"registryDependencies\": [\n    \"alert-dialog\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"button-group\",\n    \"card\",\n    \"checkbox\",\n    \"combobox\",\n    \"dropdown-menu\",\n    \"empty\",\n    \"field\",\n    \"input\",\n    \"input-group\",\n    \"item\",\n    \"label\",\n    \"popover\",\n    \"radio-group\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"slider\",\n    \"spinner\",\n    \"switch\",\n    \"textarea\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/preview/index.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ActivateAgentDialog } from \\\"@/registry/radix-vega/blocks/preview/cards/activate-agent-dialog\\\"\\nimport { AnalyticsCard } from \\\"@/registry/radix-vega/blocks/preview/cards/analytics-card\\\"\\nimport { AnomalyAlert } from \\\"@/registry/radix-vega/blocks/preview/cards/anomaly-alert\\\"\\nimport { BarChartCard } from \\\"@/registry/radix-vega/blocks/preview/cards/bar-chart-card\\\"\\nimport { BookAppointment } from \\\"@/registry/radix-vega/blocks/preview/cards/book-appointment\\\"\\nimport { CodespacesCard } from \\\"@/registry/radix-vega/blocks/preview/cards/codespaces-card\\\"\\nimport { ContributionsActivity } from \\\"@/registry/radix-vega/blocks/preview/cards/contributions-activity\\\"\\nimport { Contributors } from \\\"@/registry/radix-vega/blocks/preview/cards/contributors\\\"\\nimport { EnvironmentVariables } from \\\"@/registry/radix-vega/blocks/preview/cards/environment-variables\\\"\\nimport { FeedbackForm } from \\\"@/registry/radix-vega/blocks/preview/cards/feedback-form\\\"\\nimport { FileUpload } from \\\"@/registry/radix-vega/blocks/preview/cards/file-upload\\\"\\nimport { GithubProfile } from \\\"@/registry/radix-vega/blocks/preview/cards/github-profile\\\"\\nimport { IconPreviewGrid } from \\\"@/registry/radix-vega/blocks/preview/cards/icon-preview-grid\\\"\\nimport { InviteTeam } from \\\"@/registry/radix-vega/blocks/preview/cards/invite-team\\\"\\nimport { Invoice } from \\\"@/registry/radix-vega/blocks/preview/cards/invoice\\\"\\nimport { LiveWaveformCard } from \\\"@/registry/radix-vega/blocks/preview/cards/live-waveform\\\"\\nimport { NoTeamMembers } from \\\"@/registry/radix-vega/blocks/preview/cards/no-team-members\\\"\\nimport { NotFound } from \\\"@/registry/radix-vega/blocks/preview/cards/not-found\\\"\\nimport { ObservabilityCard } from \\\"@/registry/radix-vega/blocks/preview/cards/observability-card\\\"\\nimport { PieChartCard } from \\\"@/registry/radix-vega/blocks/preview/cards/pie-chart-card\\\"\\nimport { ReportBug } from \\\"@/registry/radix-vega/blocks/preview/cards/report-bug\\\"\\nimport { ShippingAddress } from \\\"@/registry/radix-vega/blocks/preview/cards/shipping-address\\\"\\nimport { Shortcuts } from \\\"@/registry/radix-vega/blocks/preview/cards/shortcuts\\\"\\nimport { SkeletonLoading } from \\\"@/registry/radix-vega/blocks/preview/cards/skeleton-loading\\\"\\nimport { SleepReport } from \\\"@/registry/radix-vega/blocks/preview/cards/sleep-report\\\"\\nimport { StyleOverview } from \\\"@/registry/radix-vega/blocks/preview/cards/style-overview\\\"\\nimport { TypographySpecimen } from \\\"@/registry/radix-vega/blocks/preview/cards/typography-specimen\\\"\\nimport { UIElements } from \\\"@/registry/radix-vega/blocks/preview/cards/ui-elements\\\"\\nimport { UsageCard } from \\\"@/registry/radix-vega/blocks/preview/cards/usage-card\\\"\\nimport { Visitors } from \\\"@/registry/radix-vega/blocks/preview/cards/visitors\\\"\\nimport { WeeklyFitnessSummary } from \\\"@/registry/radix-vega/blocks/preview/cards/weekly-fitness-summary\\\"\\n\\nexport default function PreviewExample() {\\n  return (\\n    <div className=\\\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\\\">\\n      <div className=\\\"flex w-full min-w-max justify-center\\\">\\n        <div\\n          className=\\\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\\\"\\n          data-slot=\\\"capture-target\\\"\\n        >\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <StyleOverview />\\n            <TypographySpecimen />\\n            <div className=\\\"md:hidden\\\">\\n              <UIElements />\\n            </div>\\n            <CodespacesCard />\\n            <Invoice />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <IconPreviewGrid />\\n            <div className=\\\"hidden w-full md:flex\\\">\\n              <UIElements />\\n            </div>\\n            <ObservabilityCard />\\n            <ShippingAddress />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <EnvironmentVariables />\\n            <BarChartCard />\\n            <InviteTeam />\\n            <ActivateAgentDialog />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <SkeletonLoading />\\n            <PieChartCard />\\n            <NoTeamMembers />\\n            <ReportBug />\\n            <Contributors />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <FeedbackForm />\\n            <BookAppointment />\\n            <SleepReport />\\n            <GithubProfile />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <WeeklyFitnessSummary />\\n            <FileUpload />\\n            <AnalyticsCard />\\n            <UsageCard />\\n            <Shortcuts />\\n          </div>\\n          <div className=\\\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\\\">\\n            <AnomalyAlert />\\n            <LiveWaveformCard />\\n            <Visitors />\\n            <ContributionsActivity />\\n            <NotFound />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:block\"\n    }\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/progress-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress-example\",\n  \"title\": \"Progress\",\n  \"registryDependencies\": [\n    \"field\",\n    \"item\",\n    \"progress\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/progress-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemGroup,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport { Progress } from \\\"@/registry/radix-vega/ui/progress\\\"\\nimport { Slider } from \\\"@/registry/radix-vega/ui/slider\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ProgressExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ProgressValues />\\n      <ProgressWithLabel />\\n      <ProgressControlled />\\n      <FileUploadList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ProgressValues() {\\n  return (\\n    <Example title=\\\"Progress Bar\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={0} />\\n        <Progress value={25} className=\\\"w-full\\\" />\\n        <Progress value={50} />\\n        <Progress value={75} />\\n        <Progress value={100} />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"progress-upload\\\">\\n          <span>Upload progress</span>\\n          <span className=\\\"ml-auto\\\">66%</span>\\n        </FieldLabel>\\n        <Progress value={66} className=\\\"w-full\\\" id=\\\"progress-upload\\\" />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ProgressControlled() {\\n  const [value, setValue] = React.useState([50])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"flex w-full flex-col gap-4\\\">\\n        <Progress value={value[0]} className=\\\"w-full\\\" />\\n        <Slider\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={100}\\n          step={1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction FileUploadList() {\\n  const files = React.useMemo(\\n    () => [\\n      {\\n        id: \\\"1\\\",\\n        name: \\\"document.pdf\\\",\\n        progress: 45,\\n        timeRemaining: \\\"2m 30s\\\",\\n      },\\n      {\\n        id: \\\"2\\\",\\n        name: \\\"presentation.pptx\\\",\\n        progress: 78,\\n        timeRemaining: \\\"45s\\\",\\n      },\\n      {\\n        id: \\\"3\\\",\\n        name: \\\"spreadsheet.xlsx\\\",\\n        progress: 12,\\n        timeRemaining: \\\"5m 12s\\\",\\n      },\\n      {\\n        id: \\\"4\\\",\\n        name: \\\"image.jpg\\\",\\n        progress: 100,\\n        timeRemaining: \\\"Complete\\\",\\n      },\\n    ],\\n    []\\n  )\\n\\n  return (\\n    <Example title=\\\"File Upload List\\\">\\n      <ItemGroup>\\n        {files.map((file) => (\\n          <Item key={file.id} size=\\\"xs\\\" className=\\\"px-0\\\">\\n            <ItemMedia variant=\\\"icon\\\">\\n              <IconPlaceholder\\n                lucide=\\\"FileIcon\\\"\\n                tabler=\\\"IconFile\\\"\\n                hugeicons=\\\"FileIcon\\\"\\n                phosphor=\\\"FileIcon\\\"\\n                remixicon=\\\"RiFileLine\\\"\\n                className=\\\"size-5\\\"\\n              />\\n            </ItemMedia>\\n            <ItemContent className=\\\"inline-block truncate\\\">\\n              <ItemTitle className=\\\"inline\\\">{file.name}</ItemTitle>\\n            </ItemContent>\\n            <ItemContent>\\n              <Progress value={file.progress} className=\\\"w-32\\\" />\\n            </ItemContent>\\n            <ItemActions className=\\\"w-16 justify-end\\\">\\n              <span className=\\\"text-sm text-muted-foreground\\\">\\n                {file.timeRemaining}\\n              </span>\\n            </ItemActions>\\n          </Item>\\n        ))}\\n      </ItemGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/progress.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Progress as ProgressPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Progress({\\n  className,\\n  value,\\n  ...props\\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\\n  return (\\n    <ProgressPrimitive.Root\\n      data-slot=\\\"progress\\\"\\n      className={cn(\\n        \\\"relative flex h-1.5 w-full items-center overflow-x-hidden rounded-full bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"size-full flex-1 bg-primary transition-all\\\"\\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n      />\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nexport { Progress }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/radio-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group-example\",\n  \"title\": \"Radio Group\",\n  \"registryDependencies\": [\n    \"field\",\n    \"radio-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/radio-group-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldLegend,\\n  FieldSet,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  RadioGroup,\\n  RadioGroupItem,\\n} from \\\"@/registry/radix-vega/ui/radio-group\\\"\\n\\nexport default function RadioGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <RadioGroupBasic />\\n      <RadioGroupWithDescriptions />\\n      <RadioGroupWithFieldSet />\\n      <RadioGroupGrid />\\n      <RadioGroupDisabled />\\n      <RadioGroupInvalid />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction RadioGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <RadioGroup defaultValue=\\\"comfortable\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"default\\\" id=\\\"r1\\\" />\\n          <FieldLabel htmlFor=\\\"r1\\\" className=\\\"font-normal\\\">\\n            Default\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"comfortable\\\" id=\\\"r2\\\" />\\n          <FieldLabel htmlFor=\\\"r2\\\" className=\\\"font-normal\\\">\\n            Comfortable\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"compact\\\" id=\\\"r3\\\" />\\n          <FieldLabel htmlFor=\\\"r3\\\" className=\\\"font-normal\\\">\\n            Compact\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithDescriptions() {\\n  return (\\n    <Example title=\\\"With Descriptions\\\">\\n      <RadioGroup defaultValue=\\\"plus\\\">\\n        <FieldLabel htmlFor=\\\"plus-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Plus</div>\\n              <FieldDescription>\\n                For individuals and small teams\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"plus\\\" id=\\\"plus-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"pro-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Pro</div>\\n              <FieldDescription>For growing businesses</FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"pro\\\" id=\\\"pro-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"enterprise-plan\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <FieldContent>\\n              <div className=\\\"font-medium\\\">Enterprise</div>\\n              <FieldDescription>\\n                For large teams and enterprises\\n              </FieldDescription>\\n            </FieldContent>\\n            <RadioGroupItem value=\\\"enterprise\\\" id=\\\"enterprise-plan\\\" />\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupWithFieldSet() {\\n  return (\\n    <Example title=\\\"With FieldSet\\\">\\n      <FieldSet>\\n        <FieldLegend>Battery Level</FieldLegend>\\n        <FieldDescription>\\n          Choose your preferred battery level.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"high\\\" id=\\\"battery-high\\\" />\\n            <FieldLabel htmlFor=\\\"battery-high\\\" className=\\\"font-normal\\\">\\n              High\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"battery-medium\\\" />\\n            <FieldLabel htmlFor=\\\"battery-medium\\\" className=\\\"font-normal\\\">\\n              Medium\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"low\\\" id=\\\"battery-low\\\" />\\n            <FieldLabel htmlFor=\\\"battery-low\\\" className=\\\"font-normal\\\">\\n              Low\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupGrid() {\\n  return (\\n    <Example title=\\\"Grid Layout\\\">\\n      <RadioGroup defaultValue=\\\"medium\\\" className=\\\"grid grid-cols-2 gap-2\\\">\\n        <FieldLabel htmlFor=\\\"size-small\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"small\\\" id=\\\"size-small\\\" />\\n            <div className=\\\"font-medium\\\">Small</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-medium\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"medium\\\" id=\\\"size-medium\\\" />\\n            <div className=\\\"font-medium\\\">Medium</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-large\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"large\\\" id=\\\"size-large\\\" />\\n            <div className=\\\"font-medium\\\">Large</div>\\n          </Field>\\n        </FieldLabel>\\n        <FieldLabel htmlFor=\\\"size-xlarge\\\">\\n          <Field orientation=\\\"horizontal\\\">\\n            <RadioGroupItem value=\\\"xlarge\\\" id=\\\"size-xlarge\\\" />\\n            <div className=\\\"font-medium\\\">X-Large</div>\\n          </Field>\\n        </FieldLabel>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <RadioGroup defaultValue=\\\"option2\\\" disabled>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option1\\\" id=\\\"disabled-1\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-1\\\" className=\\\"font-normal\\\">\\n            Option 1\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option2\\\" id=\\\"disabled-2\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-2\\\" className=\\\"font-normal\\\">\\n            Option 2\\n          </FieldLabel>\\n        </Field>\\n        <Field orientation=\\\"horizontal\\\">\\n          <RadioGroupItem value=\\\"option3\\\" id=\\\"disabled-3\\\" />\\n          <FieldLabel htmlFor=\\\"disabled-3\\\" className=\\\"font-normal\\\">\\n            Option 3\\n          </FieldLabel>\\n        </Field>\\n      </RadioGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction RadioGroupInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <FieldSet>\\n        <FieldLegend>Notification Preferences</FieldLegend>\\n        <FieldDescription>\\n          Choose how you want to receive notifications.\\n        </FieldDescription>\\n        <RadioGroup defaultValue=\\\"email\\\">\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"email\\\" id=\\\"invalid-email\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-email\\\" className=\\\"font-normal\\\">\\n              Email only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"sms\\\" id=\\\"invalid-sms\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-sms\\\" className=\\\"font-normal\\\">\\n              SMS only\\n            </FieldLabel>\\n          </Field>\\n          <Field orientation=\\\"horizontal\\\" data-invalid>\\n            <RadioGroupItem value=\\\"both\\\" id=\\\"invalid-both\\\" aria-invalid />\\n            <FieldLabel htmlFor=\\\"invalid-both\\\" className=\\\"font-normal\\\">\\n              Both Email & SMS\\n            </FieldLabel>\\n          </Field>\\n        </RadioGroup>\\n      </FieldSet>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { RadioGroup as RadioGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction RadioGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\\n  return (\\n    <RadioGroupPrimitive.Root\\n      data-slot=\\\"radio-group\\\"\\n      className={cn(\\\"grid w-full gap-3\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction RadioGroupItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\\n  return (\\n    <RadioGroupPrimitive.Item\\n      data-slot=\\\"radio-group-item\\\"\\n      className={cn(\\n        \\\"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <RadioGroupPrimitive.Indicator\\n        data-slot=\\\"radio-group-indicator\\\"\\n        className=\\\"flex size-4 items-center justify-center\\\"\\n      >\\n        <span className=\\\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"style\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n      \"devDependencies\": [\"tw-animate-css\", \"shadcn\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {},\n      \"css\": {\n        \"@import \\\"tw-animate-css\\\"\": {},\n        \"@import \\\"shadcn/tailwind.css\\\"\": {},\n        \"@layer base\": {\n          \"*\": {\n            \"@apply border-border outline-ring/50\": {}\n          },\n          \"body\": {\n            \"@apply bg-background text-foreground\": {}\n          }\n        }\n      },\n      \"type\": \"registry:style\"\n    },\n    {\n      \"name\": \"accordion\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/accordion\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/accordion.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"avatar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/avatar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/components/avatar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"badge\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/badge\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"button-group\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/button-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"calendar\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/calendar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n          \"api\": \"https://react-day-picker.js.org\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"carousel\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/carousel\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n          \"api\": \"https://www.embla-carousel.com/get-started/react\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"chart\",\n      \"dependencies\": [\"recharts@2.15.4\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/chart\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"checkbox\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"collapsible\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"combobox\",\n      \"dependencies\": [\"@base-ui/react\"],\n      \"registryDependencies\": [\"button\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/combobox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/combobox\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n          \"api\": \"https://base-ui.com/react/components/combobox\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"command\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\", \"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/command\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n          \"api\": \"https://github.com/dip/cmdk\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"context-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dialog\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dialog\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"drawer\",\n      \"dependencies\": [\"vaul\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/drawer\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n          \"api\": \"https://vaul.emilkowal.ski/getting-started\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"empty\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/empty\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"field\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/field\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"hover-card\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-group\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"input-otp\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n          \"api\": \"https://input-otp.rodz.dev\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"item\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/item\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"label\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/label\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/label.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"menubar\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/menubar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/menubar.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"pagination\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/pagination\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"popover\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/popover\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/popover.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"progress\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/progress\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/progress.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"radio-group\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"resizable\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n          \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"separator\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sheet\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"skeleton\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"slider\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"sonner\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n          \"api\": \"https://sonner.emilkowal.ski\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"spinner\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"switch\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"table\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tabs\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"textarea\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"tooltip\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n          \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n        }\n      },\n      \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"kbd\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/kbd\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"native-select\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/native-select\",\n          \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"direction\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/ui/direction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"meta\": {\n        \"links\": {\n          \"docs\": \"https://ui.shadcn.com/docs/components/radix/direction\",\n          \"api\": \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\"\n        }\n      },\n      \"type\": \"registry:ui\"\n    },\n    {\n      \"name\": \"accordion-example\",\n      \"title\": \"Accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/accordion-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-example\",\n      \"title\": \"Alert\",\n      \"registryDependencies\": [\"alert\", \"badge\", \"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/alert-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"alert-dialog-example\",\n      \"title\": \"Alert Dialog\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/alert-dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"aspect-ratio-example\",\n      \"title\": \"Aspect Ratio\",\n      \"registryDependencies\": [\"aspect-ratio\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/aspect-ratio-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"avatar-example\",\n      \"title\": \"Avatar\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"empty\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/avatar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"badge-example\",\n      \"title\": \"Badge\",\n      \"registryDependencies\": [\"badge\", \"spinner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/badge-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"breadcrumb-example\",\n      \"title\": \"Breadcrumb\",\n      \"registryDependencies\": [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/breadcrumb-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-example\",\n      \"title\": \"Button\",\n      \"registryDependencies\": [\"button\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/button-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"button-group-example\",\n      \"title\": \"Button Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/button-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"calendar-example\",\n      \"title\": \"Calendar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/calendar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"card-example\",\n      \"title\": \"Card\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"carousel-example\",\n      \"title\": \"Carousel\",\n      \"registryDependencies\": [\"card\", \"carousel\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/carousel-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"chart-example\",\n      \"title\": \"Chart\",\n      \"registryDependencies\": [\"chart\", \"card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/chart-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"checkbox-example\",\n      \"title\": \"Checkbox\",\n      \"registryDependencies\": [\"checkbox\", \"field\", \"table\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/checkbox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"collapsible-example\",\n      \"title\": \"Collapsible\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/collapsible-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"combobox-example\",\n      \"title\": \"Combobox\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/combobox-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"command-example\",\n      \"title\": \"Command\",\n      \"registryDependencies\": [\"button\", \"command\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/command-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"context-menu-example\",\n      \"title\": \"Context Menu\",\n      \"registryDependencies\": [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/context-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dialog-example\",\n      \"title\": \"Dialog\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/dialog-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"drawer-example\",\n      \"title\": \"Drawer\",\n      \"registryDependencies\": [\"drawer\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/drawer-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"dropdown-menu-example\",\n      \"title\": \"Dropdown Menu\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/dropdown-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"empty-example\",\n      \"title\": \"Empty\",\n      \"registryDependencies\": [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/empty-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"field-example\",\n      \"title\": \"Field\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/field-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"hover-card-example\",\n      \"title\": \"Hover Card\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/hover-card-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-example\",\n      \"title\": \"Input\",\n      \"registryDependencies\": [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/input-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-group-example\",\n      \"title\": \"Input Group\",\n      \"registryDependencies\": [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/input-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"input-otp-example\",\n      \"title\": \"Input OTP\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input-otp\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/input-otp-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"item-example\",\n      \"title\": \"Item\",\n      \"registryDependencies\": [\"button\", \"item\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/item-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"kbd-example\",\n      \"title\": \"Kbd\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/kbd-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"label-example\",\n      \"title\": \"Label\",\n      \"registryDependencies\": [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/label-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"menubar-example\",\n      \"title\": \"Menubar\",\n      \"registryDependencies\": [\"button\", \"dialog\", \"menubar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/menubar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"native-select-example\",\n      \"title\": \"Native Select\",\n      \"registryDependencies\": [\"field\", \"native-select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/native-select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"navigation-menu-example\",\n      \"title\": \"Navigation Menu\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"navigation-menu\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/navigation-menu-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"pagination-example\",\n      \"title\": \"Pagination\",\n      \"registryDependencies\": [\"field\", \"pagination\", \"select\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/pagination-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"popover-example\",\n      \"title\": \"Popover\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/popover-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"progress-example\",\n      \"title\": \"Progress\",\n      \"registryDependencies\": [\n        \"field\",\n        \"item\",\n        \"progress\",\n        \"slider\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/progress-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"radio-group-example\",\n      \"title\": \"Radio Group\",\n      \"registryDependencies\": [\"field\", \"radio-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/radio-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"resizable-example\",\n      \"title\": \"Resizable\",\n      \"registryDependencies\": [\"resizable\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/resizable-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"scroll-area-example\",\n      \"title\": \"Scroll Area\",\n      \"registryDependencies\": [\"scroll-area\", \"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/scroll-area-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"select-example\",\n      \"title\": \"Select\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/select-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"separator-example\",\n      \"title\": \"Separator\",\n      \"registryDependencies\": [\"separator\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/separator-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sheet-example\",\n      \"title\": \"Sheet\",\n      \"registryDependencies\": [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/sheet-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-example\",\n      \"title\": \"Sidebar\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/sidebar-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-icon-example\",\n      \"title\": \"Sidebar (Icon)\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/sidebar-icon-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-inset-example\",\n      \"title\": \"Sidebar (Inset)\",\n      \"registryDependencies\": [\"collapsible\", \"sidebar\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/sidebar-inset-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sidebar-floating-example\",\n      \"title\": \"Sidebar (Floating)\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/sidebar-floating-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"skeleton-example\",\n      \"title\": \"Skeleton\",\n      \"registryDependencies\": [\"skeleton\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/skeleton-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"slider-example\",\n      \"title\": \"Slider\",\n      \"registryDependencies\": [\"label\", \"slider\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/slider-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"sonner-example\",\n      \"title\": \"Sonner\",\n      \"registryDependencies\": [\"sonner\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/sonner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"spinner-example\",\n      \"title\": \"Spinner\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/spinner-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"switch-example\",\n      \"title\": \"Switch\",\n      \"registryDependencies\": [\"field\", \"label\", \"switch\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/switch-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"table-example\",\n      \"title\": \"Table\",\n      \"registryDependencies\": [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/table-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tabs-example\",\n      \"title\": \"Tabs\",\n      \"registryDependencies\": [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/tabs-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"textarea-example\",\n      \"title\": \"Textarea\",\n      \"registryDependencies\": [\"field\", \"textarea\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/textarea-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-example\",\n      \"title\": \"Toggle\",\n      \"registryDependencies\": [\"toggle\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/toggle-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"toggle-group-example\",\n      \"title\": \"Toggle Group\",\n      \"registryDependencies\": [\"input\", \"select\", \"toggle-group\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/toggle-group-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"tooltip-example\",\n      \"title\": \"Tooltip\",\n      \"registryDependencies\": [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/tooltip-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"demo\",\n      \"title\": \"Demo\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"component-example\",\n      \"title\": \"Example\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/examples/component-example.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"type\": \"registry:example\"\n    },\n    {\n      \"name\": \"utils\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ],\n      \"type\": \"registry:lib\"\n    },\n    {\n      \"name\": \"example\",\n      \"title\": \"Example\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/components/example.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"type\": \"registry:component\"\n    },\n    {\n      \"name\": \"preview\",\n      \"title\": \"Preview\",\n      \"registryDependencies\": [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/preview/index.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-01\",\n      \"title\": \"Login 01\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-02\",\n      \"title\": \"Login 02\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-03\",\n      \"title\": \"Login 03\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-04\",\n      \"title\": \"Login 04\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"login-05\",\n      \"title\": \"Login 05\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-01\",\n      \"title\": \"Signup 01\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-02\",\n      \"title\": \"Signup 02\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-03\",\n      \"title\": \"Signup 03\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-04\",\n      \"title\": \"Signup 04\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"signup-05\",\n      \"title\": \"Signup 05\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"title\": \"Dashboard 01\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"title\": \"Sidebar 01\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"title\": \"Sidebar 02\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"title\": \"Sidebar 03\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"title\": \"Sidebar 04\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"title\": \"Sidebar 05\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"title\": \"Sidebar 06\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"title\": \"Sidebar 07\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"title\": \"Sidebar 08\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"title\": \"Sidebar 09\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"title\": \"Sidebar 10\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"title\": \"Sidebar 11\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"title\": \"Sidebar 12\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"title\": \"Sidebar 13\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"title\": \"Sidebar 14\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"title\": \"Sidebar 15\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"title\": \"Sidebar 16\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/radix-vega/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"],\n      \"type\": \"registry:block\"\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"files\": [\n        {\n          \"path\": \"registry/radix-vega/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ],\n      \"type\": \"registry:hook\"\n    },\n    {\n      \"name\": \"font-geist\",\n      \"title\": \"Geist\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-inter\",\n      \"title\": \"Inter\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-noto-sans\",\n      \"title\": \"Noto Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-nunito-sans\",\n      \"title\": \"Nunito Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-figtree\",\n      \"title\": \"Figtree\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-roboto\",\n      \"title\": \"Roboto\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-raleway\",\n      \"title\": \"Raleway\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-dm-sans\",\n      \"title\": \"DM Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-public-sans\",\n      \"title\": \"Public Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-outfit\",\n      \"title\": \"Outfit\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-oxanium\",\n      \"title\": \"Oxanium\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-manrope\",\n      \"title\": \"Manrope\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-space-grotesk\",\n      \"title\": \"Space Grotesk\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-montserrat\",\n      \"title\": \"Montserrat\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-source-sans-3\",\n      \"title\": \"Source Sans 3\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-instrument-sans\",\n      \"title\": \"Instrument Sans\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-sans\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-jetbrains-mono\",\n      \"title\": \"JetBrains Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-geist-mono\",\n      \"title\": \"Geist Mono\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-mono\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-noto-serif\",\n      \"title\": \"Noto Serif\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-roboto-slab\",\n      \"title\": \"Roboto Slab\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-merriweather\",\n      \"title\": \"Merriweather\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-lora\",\n      \"title\": \"Lora\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-playfair-display\",\n      \"title\": \"Playfair Display\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-serif\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist\",\n      \"title\": \"Geist (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Geist\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist\"\n      }\n    },\n    {\n      \"name\": \"font-heading-inter\",\n      \"title\": \"Inter (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Inter Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Inter\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/inter\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-sans\",\n      \"title\": \"Noto Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-nunito-sans\",\n      \"title\": \"Nunito Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Nunito Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Nunito_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/nunito-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-figtree\",\n      \"title\": \"Figtree (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Figtree Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Figtree\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/figtree\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto\",\n      \"title\": \"Roboto (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto\"\n      }\n    },\n    {\n      \"name\": \"font-heading-raleway\",\n      \"title\": \"Raleway (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Raleway Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Raleway\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/raleway\"\n      }\n    },\n    {\n      \"name\": \"font-heading-dm-sans\",\n      \"title\": \"DM Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'DM Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"DM_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/dm-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-public-sans\",\n      \"title\": \"Public Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Public Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Public_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/public-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-outfit\",\n      \"title\": \"Outfit (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Outfit Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Outfit\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/outfit\"\n      }\n    },\n    {\n      \"name\": \"font-heading-oxanium\",\n      \"title\": \"Oxanium (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Oxanium Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Oxanium\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/oxanium\"\n      }\n    },\n    {\n      \"name\": \"font-heading-manrope\",\n      \"title\": \"Manrope (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Manrope Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Manrope\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/manrope\"\n      }\n    },\n    {\n      \"name\": \"font-heading-space-grotesk\",\n      \"title\": \"Space Grotesk (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Space Grotesk Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Space_Grotesk\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/space-grotesk\"\n      }\n    },\n    {\n      \"name\": \"font-heading-montserrat\",\n      \"title\": \"Montserrat (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Montserrat Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Montserrat\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/montserrat\"\n      }\n    },\n    {\n      \"name\": \"font-heading-ibm-plex-sans\",\n      \"title\": \"IBM Plex Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'IBM Plex Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"IBM_Plex_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/ibm-plex-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-source-sans-3\",\n      \"title\": \"Source Sans 3 (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Source Sans 3 Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Source_Sans_3\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/source-sans-3\"\n      }\n    },\n    {\n      \"name\": \"font-heading-instrument-sans\",\n      \"title\": \"Instrument Sans (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Instrument Sans Variable', sans-serif\",\n        \"provider\": \"google\",\n        \"import\": \"Instrument_Sans\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/instrument-sans\"\n      }\n    },\n    {\n      \"name\": \"font-heading-jetbrains-mono\",\n      \"title\": \"JetBrains Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'JetBrains Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"JetBrains_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/jetbrains-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-geist-mono\",\n      \"title\": \"Geist Mono (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Geist Mono Variable', monospace\",\n        \"provider\": \"google\",\n        \"import\": \"Geist_Mono\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/geist-mono\"\n      }\n    },\n    {\n      \"name\": \"font-heading-noto-serif\",\n      \"title\": \"Noto Serif (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Noto Serif Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Noto_Serif\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/noto-serif\"\n      }\n    },\n    {\n      \"name\": \"font-heading-roboto-slab\",\n      \"title\": \"Roboto Slab (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Roboto Slab Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Roboto_Slab\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/roboto-slab\"\n      }\n    },\n    {\n      \"name\": \"font-heading-merriweather\",\n      \"title\": \"Merriweather (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Merriweather Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Merriweather\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/merriweather\"\n      }\n    },\n    {\n      \"name\": \"font-heading-lora\",\n      \"title\": \"Lora (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Lora Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Lora\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/lora\"\n      }\n    },\n    {\n      \"name\": \"font-heading-playfair-display\",\n      \"title\": \"Playfair Display (Heading)\",\n      \"type\": \"registry:font\",\n      \"font\": {\n        \"family\": \"'Playfair Display Variable', serif\",\n        \"provider\": \"google\",\n        \"import\": \"Playfair_Display\",\n        \"variable\": \"--font-heading\",\n        \"subsets\": [\"latin\"],\n        \"dependency\": \"@fontsource-variable/playfair-display\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/resizable-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable-example\",\n  \"title\": \"Resizable\",\n  \"registryDependencies\": [\n    \"resizable\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/resizable-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport type { Layout } from \\\"react-resizable-panels\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  ResizableHandle,\\n  ResizablePanel,\\n  ResizablePanelGroup,\\n} from \\\"@/registry/radix-vega/ui/resizable\\\"\\n\\nexport default function ResizableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ResizableHorizontal />\\n      <ResizableVertical />\\n      <ResizableWithHandle />\\n      <ResizableNested />\\n      <ResizableControlled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ResizableHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"vertical\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Header</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableWithHandle() {\\n  return (\\n    <Example title=\\\"With Handle\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"25%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Sidebar</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle withHandle />\\n        <ResizablePanel defaultSize=\\\"75%\\\">\\n          <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">Content</span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableNested() {\\n  return (\\n    <Example title=\\\"Nested\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"rounded-lg border\\\"\\n      >\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <div className=\\\"flex h-[200px] items-center justify-center p-6\\\">\\n            <span className=\\\"font-semibold\\\">One</span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"50%\\\">\\n          <ResizablePanelGroup orientation=\\\"vertical\\\">\\n            <ResizablePanel defaultSize=\\\"25%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Two</span>\\n              </div>\\n            </ResizablePanel>\\n            <ResizableHandle />\\n            <ResizablePanel defaultSize=\\\"75%\\\">\\n              <div className=\\\"flex h-full items-center justify-center p-6\\\">\\n                <span className=\\\"font-semibold\\\">Three</span>\\n              </div>\\n            </ResizablePanel>\\n          </ResizablePanelGroup>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ResizableControlled() {\\n  const [layout, setLayout] = React.useState<Layout>({})\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <ResizablePanelGroup\\n        orientation=\\\"horizontal\\\"\\n        className=\\\"min-h-[200px] rounded-lg border\\\"\\n        onLayoutChange={setLayout}\\n      >\\n        <ResizablePanel defaultSize=\\\"30%\\\" id=\\\"left\\\" minSize=\\\"20%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.left ?? 30)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n        <ResizableHandle />\\n        <ResizablePanel defaultSize=\\\"70%\\\" id=\\\"right\\\" minSize=\\\"30%\\\">\\n          <div className=\\\"flex h-full flex-col items-center justify-center gap-2 p-6\\\">\\n            <span className=\\\"font-semibold\\\">\\n              {Math.round(layout.right ?? 70)}%\\n            </span>\\n          </div>\\n        </ResizablePanel>\\n      </ResizablePanelGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/resizable.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"resizable\",\n  \"dependencies\": [\n    \"react-resizable-panels\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as ResizablePrimitive from \\\"react-resizable-panels\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction ResizablePanelGroup({\\n  className,\\n  ...props\\n}: ResizablePrimitive.GroupProps) {\\n  return (\\n    <ResizablePrimitive.Group\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full aria-[orientation=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: ResizablePrimitive.SeparatorProps & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.Separator\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\\\" />\\n      )}\\n    </ResizablePrimitive.Separator>\\n  )\\n}\\n\\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/resizable\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n      \"api\": \"https://github.com/bvaughn/react-resizable-panels\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/scroll-area-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area-example\",\n  \"title\": \"Scroll Area\",\n  \"registryDependencies\": [\n    \"scroll-area\",\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/scroll-area-example.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport Image from \\\"next/image\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { ScrollArea, ScrollBar } from \\\"@/registry/radix-vega/ui/scroll-area\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\n\\nconst tags = Array.from({ length: 50 }).map(\\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\\n)\\n\\nconst works = [\\n  {\\n    artist: \\\"Ornella Binni\\\",\\n    art: \\\"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Tom Byrom\\\",\\n    art: \\\"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n  {\\n    artist: \\\"Vladimir Malyav\\\",\\n    art: \\\"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\\\",\\n  },\\n] as const\\n\\nexport default function ScrollAreaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ScrollAreaVertical />\\n      <ScrollAreaHorizontal />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ScrollAreaVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ScrollArea className=\\\"mx-auto h-72 w-48 rounded-md border\\\">\\n        <div className=\\\"p-4\\\">\\n          <h4 className=\\\"mb-4 text-sm leading-none font-medium\\\">Tags</h4>\\n          {tags.map((tag) => (\\n            <React.Fragment key={tag}>\\n              <div className=\\\"text-sm\\\">{tag}</div>\\n              <Separator className=\\\"my-2\\\" />\\n            </React.Fragment>\\n          ))}\\n        </div>\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\\nfunction ScrollAreaHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <ScrollArea className=\\\"mx-auto w-full max-w-96 rounded-md border p-4\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          {works.map((artwork) => (\\n            <figure key={artwork.artist} className=\\\"shrink-0\\\">\\n              <div className=\\\"overflow-hidden rounded-md\\\">\\n                <Image\\n                  src={artwork.art}\\n                  alt={`Photo by ${artwork.artist}`}\\n                  className=\\\"aspect-[3/4] h-fit w-fit object-cover\\\"\\n                  width={300}\\n                  height={400}\\n                />\\n              </div>\\n              <figcaption className=\\\"pt-2 text-xs text-muted-foreground\\\">\\n                Photo by{\\\" \\\"}\\n                <span className=\\\"font-semibold text-foreground\\\">\\n                  {artwork.artist}\\n                </span>\\n              </figcaption>\\n            </figure>\\n          ))}\\n        </div>\\n        <ScrollBar orientation=\\\"horizontal\\\" />\\n      </ScrollArea>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/scroll-area.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ScrollArea as ScrollAreaPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction ScrollArea({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\\n  return (\\n    <ScrollAreaPrimitive.Root\\n      data-slot=\\\"scroll-area\\\"\\n      className={cn(\\\"relative\\\", className)}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.Viewport\\n        data-slot=\\\"scroll-area-viewport\\\"\\n        className=\\\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\\\"\\n      >\\n        {children}\\n      </ScrollAreaPrimitive.Viewport>\\n      <ScrollBar />\\n      <ScrollAreaPrimitive.Corner />\\n    </ScrollAreaPrimitive.Root>\\n  )\\n}\\n\\nfunction ScrollBar({\\n  className,\\n  orientation = \\\"vertical\\\",\\n  ...props\\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\\n  return (\\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\\n      data-slot=\\\"scroll-area-scrollbar\\\"\\n      data-orientation={orientation}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ScrollAreaPrimitive.ScrollAreaThumb\\n        data-slot=\\\"scroll-area-thumb\\\"\\n        className=\\\"relative flex-1 rounded-full bg-border\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/select-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select-example\",\n  \"title\": \"Select\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dialog\",\n    \"field\",\n    \"input\",\n    \"item\",\n    \"native-select\",\n    \"select\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/select-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldError,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport {\\n  NativeSelect,\\n  NativeSelectOption,\\n} from \\\"@/registry/radix-vega/ui/native-select\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SelectExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SelectBasic />\\n      <SelectWithIcons />\\n      <SelectWithGroups />\\n      <SelectLargeList />\\n      <SelectSizes />\\n      <SelectPlan />\\n      <SelectWithButton />\\n      <SelectItemAligned />\\n      <SelectWithField />\\n      <SelectInvalid />\\n      <SelectInline />\\n      <SelectDisabled />\\n      <SelectInDialog />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SelectBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue\\n              placeholder={\\n                <>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChartLineIcon\\\"\\n                    tabler=\\\"IconChartLine\\\"\\n                    hugeicons=\\\"Chart03Icon\\\"\\n                    phosphor=\\\"ChartLineIcon\\\"\\n                    remixicon=\\\"RiLineChartLine\\\"\\n                  />\\n                  Chart Type\\n                </>\\n              }\\n            />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"line\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartLineIcon\\\"\\n                  tabler=\\\"IconChartLine\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartLineIcon\\\"\\n                  remixicon=\\\"RiLineChartLine\\\"\\n                />\\n                Line\\n              </SelectItem>\\n              <SelectItem value=\\\"bar\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartBarIcon\\\"\\n                  tabler=\\\"IconChartBar\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartBarIcon\\\"\\n                  remixicon=\\\"RiBarChartLine\\\"\\n                />\\n                Bar\\n              </SelectItem>\\n              <SelectItem value=\\\"pie\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"ChartPieIcon\\\"\\n                  tabler=\\\"IconChartPie\\\"\\n                  hugeicons=\\\"Chart03Icon\\\"\\n                  phosphor=\\\"ChartPieIcon\\\"\\n                  remixicon=\\\"RiPieChartLine\\\"\\n                />\\n                Pie\\n              </SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithGroups() {\\n  return (\\n    <Example title=\\\"With Groups & Labels\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectLabel>Fruits</SelectLabel>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n          </SelectGroup>\\n          <SelectSeparator />\\n          <SelectGroup>\\n            <SelectLabel>Vegetables</SelectLabel>\\n            <SelectItem value=\\\"carrot\\\">Carrot</SelectItem>\\n            <SelectItem value=\\\"broccoli\\\">Broccoli</SelectItem>\\n            <SelectItem value=\\\"spinach\\\">Spinach</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectLargeList() {\\n  return (\\n    <Example title=\\\"Large List\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select an item\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {Array.from({ length: 100 }).map((_, i) => (\\n              <SelectItem key={i} value={`item-${i}`}>\\n                Item {i}\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger size=\\\"sm\\\">\\n            <SelectValue placeholder=\\\"Small size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Select>\\n          <SelectTrigger size=\\\"default\\\">\\n            <SelectValue placeholder=\\\"Default size\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithButton() {\\n  return (\\n    <Example title=\\\"With Button\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger size=\\\"sm\\\">\\n              <SelectValue placeholder=\\\"Small\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n            Submit\\n          </Button>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Default\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <Button variant=\\\"outline\\\">Submit</Button>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectItemAligned() {\\n  return (\\n    <Example title=\\\"Popper\\\">\\n      <Select>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Select a fruit\\\" />\\n        </SelectTrigger>\\n        <SelectContent position=\\\"popper\\\">\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectWithField() {\\n  return (\\n    <Example title=\\\"With Field\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"select-fruit\\\">Favorite Fruit</FieldLabel>\\n        <Select>\\n          <SelectTrigger id=\\\"select-fruit\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <FieldDescription>\\n          Choose your favorite fruit from the list.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <Select>\\n          <SelectTrigger aria-invalid=\\\"true\\\">\\n            <SelectValue placeholder=\\\"Select a fruit\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n              <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n              <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n              <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n              <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <Field data-invalid>\\n          <FieldLabel htmlFor=\\\"select-fruit-invalid\\\">Favorite Fruit</FieldLabel>\\n          <Select>\\n            <SelectTrigger id=\\\"select-fruit-invalid\\\" aria-invalid>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n          <FieldError errors={[{ message: \\\"Please select a valid fruit.\\\" }]} />\\n        </Field>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectInline() {\\n  return (\\n    <Example title=\\\"Inline with Input & NativeSelect\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select>\\n          <SelectTrigger className=\\\"w-[140px]\\\">\\n            <SelectValue placeholder=\\\"Filter\\\" />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"inactive\\\">Inactive</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <NativeSelect className=\\\"w-[140px]\\\">\\n          <NativeSelectOption value=\\\"\\\">Sort by</NativeSelectOption>\\n          <NativeSelectOption value=\\\"name\\\">Name</NativeSelectOption>\\n          <NativeSelectOption value=\\\"date\\\">Date</NativeSelectOption>\\n          <NativeSelectOption value=\\\"status\\\">Status</NativeSelectOption>\\n        </NativeSelect>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Select disabled>\\n        <SelectTrigger>\\n          <SelectValue placeholder=\\\"Disabled\\\" />\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n            <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n            <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n            <SelectItem value=\\\"grapes\\\" disabled>\\n              Grapes\\n            </SelectItem>\\n            <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nconst plans = [\\n  {\\n    name: \\\"Starter\\\",\\n    description: \\\"Perfect for individuals getting started.\\\",\\n  },\\n  {\\n    name: \\\"Professional\\\",\\n    description: \\\"Ideal for growing teams and businesses.\\\",\\n  },\\n  {\\n    name: \\\"Enterprise\\\",\\n    description: \\\"Advanced features for large organizations.\\\",\\n  },\\n]\\n\\nfunction SelectPlan() {\\n  const [plan, setPlan] = React.useState<string>(plans[0].name)\\n\\n  const selectedPlan = plans.find((p) => p.name === plan)\\n\\n  return (\\n    <Example title=\\\"Subscription Plan\\\">\\n      <Select value={plan} onValueChange={setPlan}>\\n        <SelectTrigger className=\\\"h-auto! w-72\\\">\\n          <SelectValue>\\n            {selectedPlan && <SelectPlanItem plan={selectedPlan} />}\\n          </SelectValue>\\n        </SelectTrigger>\\n        <SelectContent>\\n          <SelectGroup>\\n            {plans.map((plan) => (\\n              <SelectItem key={plan.name} value={plan.name}>\\n                <SelectPlanItem plan={plan} />\\n              </SelectItem>\\n            ))}\\n          </SelectGroup>\\n        </SelectContent>\\n      </Select>\\n    </Example>\\n  )\\n}\\n\\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\\n  return (\\n    <Item size=\\\"xs\\\" className=\\\"w-full p-0\\\">\\n      <ItemContent className=\\\"gap-0\\\">\\n        <ItemTitle>{plan.name}</ItemTitle>\\n        <ItemDescription className=\\\"text-xs\\\">\\n          {plan.description}\\n        </ItemDescription>\\n      </ItemContent>\\n    </Item>\\n  )\\n}\\n\\nfunction SelectInDialog() {\\n  return (\\n    <Example title=\\\"In Dialog\\\">\\n      <Dialog>\\n        <DialogTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open Dialog</Button>\\n        </DialogTrigger>\\n        <DialogContent>\\n          <DialogHeader>\\n            <DialogTitle>Select Example</DialogTitle>\\n            <DialogDescription>\\n              Use the select below to choose a fruit.\\n            </DialogDescription>\\n          </DialogHeader>\\n          <Select>\\n            <SelectTrigger>\\n              <SelectValue placeholder=\\\"Select a fruit\\\" />\\n            </SelectTrigger>\\n            <SelectContent>\\n              <SelectGroup>\\n                <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                <SelectItem value=\\\"banana\\\">Banana</SelectItem>\\n                <SelectItem value=\\\"blueberry\\\">Blueberry</SelectItem>\\n                <SelectItem value=\\\"grapes\\\">Grapes</SelectItem>\\n                <SelectItem value=\\\"pineapple\\\">Pineapple</SelectItem>\\n              </SelectGroup>\\n            </SelectContent>\\n          </Select>\\n        </DialogContent>\\n      </Dialog>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Select as SelectPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Select({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\\n  return <SelectPrimitive.Root data-slot=\\\"select\\\" {...props} />\\n}\\n\\nfunction SelectGroup({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\\n  return (\\n    <SelectPrimitive.Group\\n      data-slot=\\\"select-group\\\"\\n      className={cn(\\\"scroll-my-1 p-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectValue({\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\\n  return <SelectPrimitive.Value data-slot=\\\"select-value\\\" {...props} />\\n}\\n\\nfunction SelectTrigger({\\n  className,\\n  size = \\\"default\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SelectPrimitive.Trigger\\n      data-slot=\\\"select-trigger\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n      <SelectPrimitive.Icon asChild>\\n        <IconPlaceholder\\n          lucide=\\\"ChevronDownIcon\\\"\\n          tabler=\\\"IconSelector\\\"\\n          hugeicons=\\\"UnfoldMoreIcon\\\"\\n          phosphor=\\\"CaretDownIcon\\\"\\n          remixicon=\\\"RiArrowDownSLine\\\"\\n          className=\\\"pointer-events-none size-4 text-muted-foreground\\\"\\n        />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"item-aligned\\\",\\n  align = \\\"center\\\",\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\\n  return (\\n    <SelectPrimitive.Portal>\\n      <SelectPrimitive.Content\\n        data-slot=\\\"select-content\\\"\\n        data-align-trigger={position === \\\"item-aligned\\\"}\\n        className={cn(\\n          \\\"cn-menu-target cn-menu-translucent relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          position === \\\"popper\\\" &&\\n            \\\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\\\",\\n          className\\n        )}\\n        position={position}\\n        align={align}\\n        {...props}\\n      >\\n        <SelectScrollUpButton />\\n        <SelectPrimitive.Viewport\\n          data-position={position}\\n          className={cn(\\n            \\\"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\\\",\\n            position === \\\"popper\\\" && \\\"\\\"\\n          )}\\n        >\\n          {children}\\n        </SelectPrimitive.Viewport>\\n        <SelectScrollDownButton />\\n      </SelectPrimitive.Content>\\n    </SelectPrimitive.Portal>\\n  )\\n}\\n\\nfunction SelectLabel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\\n  return (\\n    <SelectPrimitive.Label\\n      data-slot=\\\"select-label\\\"\\n      className={cn(\\\"px-2 py-1.5 text-xs text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectItem({\\n  className,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\\n  return (\\n    <SelectPrimitive.Item\\n      data-slot=\\\"select-item\\\"\\n      className={cn(\\n        \\\"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <span className=\\\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\\\">\\n        <SelectPrimitive.ItemIndicator>\\n          <IconPlaceholder\\n            lucide=\\\"CheckIcon\\\"\\n            tabler=\\\"IconCheck\\\"\\n            hugeicons=\\\"Tick02Icon\\\"\\n            phosphor=\\\"CheckIcon\\\"\\n            remixicon=\\\"RiCheckLine\\\"\\n            className=\\\"pointer-events-none\\\"\\n          />\\n        </SelectPrimitive.ItemIndicator>\\n      </span>\\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\\n    </SelectPrimitive.Item>\\n  )\\n}\\n\\nfunction SelectSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\\n  return (\\n    <SelectPrimitive.Separator\\n      data-slot=\\\"select-separator\\\"\\n      className={cn(\\\"pointer-events-none -mx-1 my-1 h-px bg-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SelectScrollUpButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\\n  return (\\n    <SelectPrimitive.ScrollUpButton\\n      data-slot=\\\"select-scroll-up-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronUpIcon\\\"\\n        tabler=\\\"IconChevronUp\\\"\\n        hugeicons=\\\"ArrowUp01Icon\\\"\\n        phosphor=\\\"CaretUpIcon\\\"\\n        remixicon=\\\"RiArrowUpSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollUpButton>\\n  )\\n}\\n\\nfunction SelectScrollDownButton({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\\n  return (\\n    <SelectPrimitive.ScrollDownButton\\n      data-slot=\\\"select-scroll-down-button\\\"\\n      className={cn(\\n        \\\"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"ChevronDownIcon\\\"\\n        tabler=\\\"IconChevronDown\\\"\\n        hugeicons=\\\"ArrowDown01Icon\\\"\\n        phosphor=\\\"CaretDownIcon\\\"\\n        remixicon=\\\"RiArrowDownSLine\\\"\\n      />\\n    </SelectPrimitive.ScrollDownButton>\\n  )\\n}\\n\\nexport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectLabel,\\n  SelectScrollDownButton,\\n  SelectScrollUpButton,\\n  SelectSeparator,\\n  SelectTrigger,\\n  SelectValue,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/select\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/select.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/separator-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator-example\",\n  \"title\": \"Separator\",\n  \"registryDependencies\": [\n    \"separator\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/separator-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\n\\nexport default function SeparatorExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SeparatorHorizontal />\\n      <SeparatorVertical />\\n      <SeparatorVerticalMenu />\\n      <SeparatorInList />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SeparatorHorizontal() {\\n  return (\\n    <Example title=\\\"Horizontal\\\">\\n      <div className=\\\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <div className=\\\"leading-none font-medium\\\">shadcn/ui</div>\\n          <div className=\\\"text-muted-foreground\\\">\\n            The Foundation for your Design System\\n          </div>\\n        </div>\\n        <Separator />\\n        <div>\\n          A set of beautifully designed components that you can customize,\\n          extend, and build on.\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\\\">\\n        <div>Blog</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Docs</div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div>Source</div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorVerticalMenu() {\\n  return (\\n    <Example title=\\\"Vertical Menu\\\">\\n      <div className=\\\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\\\">\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Settings</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Manage preferences\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Account</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">\\n            Profile & security\\n          </span>\\n        </div>\\n        <Separator orientation=\\\"vertical\\\" />\\n        <div className=\\\"flex flex-col gap-1\\\">\\n          <span className=\\\"font-medium\\\">Help</span>\\n          <span className=\\\"text-xs text-muted-foreground\\\">Support & docs</span>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SeparatorInList() {\\n  return (\\n    <Example title=\\\"In List\\\">\\n      <div className=\\\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\\\">\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 1</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 1</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 2</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 2</dd>\\n        </dl>\\n        <Separator />\\n        <dl className=\\\"flex items-center justify-between\\\">\\n          <dt>Item 3</dt>\\n          <dd className=\\\"text-muted-foreground\\\">Value 3</dd>\\n        </dl>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/separator.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Separator as SeparatorPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Separator({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  decorative = true,\\n  ...props\\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\\n  return (\\n    <SeparatorPrimitive.Root\\n      data-slot=\\\"separator\\\"\\n      decorative={decorative}\\n      orientation={orientation}\\n      className={cn(\\n        \\\"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Separator }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/separator\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/separator.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sheet-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet-example\",\n  \"title\": \"Sheet\",\n  \"registryDependencies\": [\n    \"button\",\n    \"field\",\n    \"input\",\n    \"sheet\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/sheet-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Field, FieldGroup, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  Sheet,\\n  SheetClose,\\n  SheetContent,\\n  SheetDescription,\\n  SheetFooter,\\n  SheetHeader,\\n  SheetTitle,\\n  SheetTrigger,\\n} from \\\"@/registry/radix-vega/ui/sheet\\\"\\n\\nexport default function SheetExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SheetWithForm />\\n      <SheetNoCloseButton />\\n      <SheetWithSides />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SheetWithForm() {\\n  return (\\n    <Example title=\\\"With Form\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">Open</Button>\\n        </SheetTrigger>\\n        <SheetContent>\\n          <SheetHeader>\\n            <SheetTitle>Edit profile</SheetTitle>\\n            <SheetDescription>\\n              Make changes to your profile here. Click save when you&apos;re\\n              done.\\n            </SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-name\\\">Name</FieldLabel>\\n                <Input id=\\\"sheet-demo-name\\\" defaultValue=\\\"Pedro Duarte\\\" />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"sheet-demo-username\\\">Username</FieldLabel>\\n                <Input id=\\\"sheet-demo-username\\\" defaultValue=\\\"@peduarte\\\" />\\n              </Field>\\n            </FieldGroup>\\n          </div>\\n          <SheetFooter>\\n            <Button type=\\\"submit\\\">Save changes</Button>\\n            <SheetClose asChild>\\n              <Button variant=\\\"outline\\\">Close</Button>\\n            </SheetClose>\\n          </SheetFooter>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nfunction SheetNoCloseButton() {\\n  return (\\n    <Example title=\\\"No Close Button\\\">\\n      <Sheet>\\n        <SheetTrigger asChild>\\n          <Button variant=\\\"outline\\\">No Close Button</Button>\\n        </SheetTrigger>\\n        <SheetContent showCloseButton={false}>\\n          <SheetHeader>\\n            <SheetTitle>No Close Button</SheetTitle>\\n            <SheetDescription>\\n              This sheet doesn&apos;t have a close button in the top-right\\n              corner. You can only close it using the button below.\\n            </SheetDescription>\\n          </SheetHeader>\\n        </SheetContent>\\n      </Sheet>\\n    </Example>\\n  )\\n}\\n\\nconst SHEET_SIDES = [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const\\n\\nfunction SheetWithSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {SHEET_SIDES.map((side) => (\\n          <Sheet key={side}>\\n            <SheetTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"capitalize\\\">\\n                {side}\\n              </Button>\\n            </SheetTrigger>\\n            <SheetContent\\n              side={side}\\n              className=\\\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\\\"\\n            >\\n              <SheetHeader>\\n                <SheetTitle>Edit profile</SheetTitle>\\n                <SheetDescription>\\n                  Make changes to your profile here. Click save when you&apos;re\\n                  done.\\n                </SheetDescription>\\n              </SheetHeader>\\n              <div className=\\\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\\\">\\n                {Array.from({ length: 10 }).map((_, index) => (\\n                  <p\\n                    key={index}\\n                    className=\\\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\\\"\\n                  >\\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\\n                    do eiusmod tempor incididunt ut labore et dolore magna\\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\\n                    Duis aute irure dolor in reprehenderit in voluptate velit\\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\\n                    occaecat cupidatat non proident, sunt in culpa qui officia\\n                    deserunt mollit anim id est laborum.\\n                  </p>\\n                ))}\\n              </div>\\n              <SheetFooter>\\n                <Button type=\\\"submit\\\">Save changes</Button>\\n                <SheetClose asChild>\\n                  <Button variant=\\\"outline\\\">Cancel</Button>\\n                </SheetClose>\\n              </SheetFooter>\\n            </SheetContent>\\n          </Sheet>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Dialog as SheetPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\\n  return <SheetPrimitive.Root data-slot=\\\"sheet\\\" {...props} />\\n}\\n\\nfunction SheetTrigger({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\\n  return <SheetPrimitive.Trigger data-slot=\\\"sheet-trigger\\\" {...props} />\\n}\\n\\nfunction SheetClose({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\\n  return <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" {...props} />\\n}\\n\\nfunction SheetPortal({\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\\n  return <SheetPrimitive.Portal data-slot=\\\"sheet-portal\\\" {...props} />\\n}\\n\\nfunction SheetOverlay({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\\n  return (\\n    <SheetPrimitive.Overlay\\n      data-slot=\\\"sheet-overlay\\\"\\n      className={cn(\\n        \\\"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  showCloseButton = true,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n  showCloseButton?: boolean\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <SheetPrimitive.Close data-slot=\\\"sheet-close\\\" asChild>\\n            <Button\\n              variant=\\\"ghost\\\"\\n              className=\\\"absolute top-4 right-4\\\"\\n              size=\\\"icon-sm\\\"\\n            >\\n              <IconPlaceholder\\n                lucide=\\\"XIcon\\\"\\n                tabler=\\\"IconX\\\"\\n                hugeicons=\\\"Cancel01Icon\\\"\\n                phosphor=\\\"XIcon\\\"\\n                remixicon=\\\"RiCloseLine\\\"\\n              />\\n              <span className=\\\"sr-only\\\">Close</span>\\n            </Button>\\n          </SheetPrimitive.Close>\\n        )}\\n      </SheetPrimitive.Content>\\n    </SheetPortal>\\n  )\\n}\\n\\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-header\\\"\\n      className={cn(\\\"flex flex-col gap-1.5 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sheet-footer\\\"\\n      className={cn(\\\"mt-auto flex flex-col gap-2 p-4\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetTitle({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\\n  return (\\n    <SheetPrimitive.Title\\n      data-slot=\\\"sheet-title\\\"\\n      className={cn(\\\"cn-font-heading font-medium text-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetDescription({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\\n  return (\\n    <SheetPrimitive.Description\\n      data-slot=\\\"sheet-description\\\"\\n      className={cn(\\\"text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sheet,\\n  SheetTrigger,\\n  SheetClose,\\n  SheetContent,\\n  SheetHeader,\\n  SheetFooter,\\n  SheetTitle,\\n  SheetDescription,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sheet\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/dialog.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-01\",\n  \"title\": \"Sidebar 01\",\n  \"description\": \"A simple sidebar with navigation grouped by section.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-01/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-01/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-01/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-vega/blocks/sidebar-01/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-vega/blocks/sidebar-01/components/version-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        {/* We create a SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <SidebarGroup key={item.title}>\\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {item.items.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild isActive={item.isActive}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-01/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-01/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-02\",\n  \"title\": \"Sidebar 02\",\n  \"description\": \"A sidebar with collapsible sections.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-02/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-02/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-02/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-vega/blocks/sidebar-02/components/search-form\\\"\\nimport { VersionSwitcher } from \\\"@/registry/radix-vega/blocks/sidebar-02/components/version-switcher\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <VersionSwitcher\\n          versions={data.versions}\\n          defaultVersion={data.versions[0]}\\n        />\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent className=\\\"gap-0\\\">\\n        {/* We create a collapsible SidebarGroup for each parent. */}\\n        {data.navMain.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            title={item.title}\\n            defaultOpen\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarGroup>\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuItem key={item.title}>\\n                        <SidebarMenuButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </SidebarGroup>\\n          </Collapsible>\\n        ))}\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-02/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-02/components/version-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function VersionSwitcher({\\n  versions,\\n  defaultVersion,\\n}: {\\n  versions: string[]\\n  defaultVersion: string\\n}) {\\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                <span className=\\\"font-medium\\\">Documentation</span>\\n                <span className=\\\"\\\">v{selectedVersion}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width)\\\"\\n            align=\\\"start\\\"\\n          >\\n            {versions.map((version) => (\\n              <DropdownMenuItem\\n                key={version}\\n                onSelect={() => setSelectedVersion(version)}\\n              >\\n                v{version}{\\\" \\\"}\\n                {version === selectedVersion && (\\n                  <IconPlaceholder\\n                    lucide=\\\"CheckIcon\\\"\\n                    tabler=\\\"IconCheck\\\"\\n                    hugeicons=\\\"Tick02Icon\\\"\\n                    phosphor=\\\"CheckIcon\\\"\\n                    remixicon=\\\"RiCheckLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                )}\\n              </DropdownMenuItem>\\n            ))}\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-03\",\n  \"title\": \"Sidebar 03\",\n  \"description\": \"A sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-03/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-03/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b\\\">\\n          <div className=\\\"flex items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-03/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub>\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-04\",\n  \"title\": \"Sidebar 04\",\n  \"description\": \"A floating sidebar with submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-04/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-04/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"19rem\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-04/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"floating\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu className=\\\"gap-2\\\">\\n            {data.navMain.map((item) => (\\n              <SidebarMenuItem key={item.title}>\\n                <SidebarMenuButton asChild>\\n                  <a href={item.url} className=\\\"font-medium\\\">\\n                    {item.title}\\n                  </a>\\n                </SidebarMenuButton>\\n                {item.items?.length ? (\\n                  <SidebarMenuSub className=\\\"ml-0 border-l-0 px-1.5\\\">\\n                    {item.items.map((item) => (\\n                      <SidebarMenuSubItem key={item.title}>\\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\\n                          <a href={item.url}>{item.title}</a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                ) : null}\\n              </SidebarMenuItem>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-05\",\n  \"title\": \"Sidebar 05\",\n  \"description\": \"A sidebar with collapsible submenus.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"label\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-05/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-05/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-05/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-vega/blocks/sidebar-05/components/search-form\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n        <SearchForm />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarMenu>\\n            {data.navMain.map((item, index) => (\\n              <Collapsible\\n                key={item.title}\\n                defaultOpen={index === 1}\\n                className=\\\"group/collapsible\\\"\\n              >\\n                <SidebarMenuItem>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuButton>\\n                      {item.title}{\\\" \\\"}\\n                      <IconPlaceholder\\n                        lucide=\\\"PlusIcon\\\"\\n                        tabler=\\\"IconPlus\\\"\\n                        hugeicons=\\\"PlusSignIcon\\\"\\n                        phosphor=\\\"PlusIcon\\\"\\n                        remixicon=\\\"RiAddLine\\\"\\n                        className=\\\"ml-auto group-data-[state=open]/collapsible:hidden\\\"\\n                      />\\n                      <IconPlaceholder\\n                        lucide=\\\"MinusIcon\\\"\\n                        tabler=\\\"IconMinus\\\"\\n                        hugeicons=\\\"MinusSignIcon\\\"\\n                        phosphor=\\\"MinusIcon\\\"\\n                        remixicon=\\\"RiSubtractLine\\\"\\n                        className=\\\"ml-auto group-data-[state=closed]/collapsible:hidden\\\"\\n                      />\\n                    </SidebarMenuButton>\\n                  </CollapsibleTrigger>\\n                  {item.items?.length ? (\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items.map((item) => (\\n                          <SidebarMenuSubItem key={item.title}>\\n                            <SidebarMenuSubButton\\n                              asChild\\n                              isActive={item.isActive}\\n                            >\\n                              <a href={item.url}>{item.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              </Collapsible>\\n            ))}\\n          </SidebarMenu>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-05/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarInput,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <SidebarGroup className=\\\"py-0\\\">\\n        <SidebarGroupContent className=\\\"relative\\\">\\n          <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n            Search\\n          </Label>\\n          <SidebarInput\\n            id=\\\"search\\\"\\n            placeholder=\\\"Search the docs...\\\"\\n            className=\\\"pl-8\\\"\\n          />\\n          <IconPlaceholder\\n            lucide=\\\"SearchIcon\\\"\\n            tabler=\\\"IconSearch\\\"\\n            hugeicons=\\\"SearchIcon\\\"\\n            phosphor=\\\"MagnifyingGlassIcon\\\"\\n            remixicon=\\\"RiSearchLine\\\"\\n            className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n          />\\n        </SidebarGroupContent>\\n      </SidebarGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-06\",\n  \"title\": \"Sidebar 06\",\n  \"description\": \"A sidebar with submenus as dropdowns.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"card\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-06/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-06/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-06/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-vega/blocks/sidebar-06/components/nav-main\\\"\\nimport { SidebarOptInForm } from \\\"@/registry/radix-vega/blocks/sidebar-06/components/sidebar-opt-in-form\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"GalleryVerticalEndIcon\\\"\\n                    tabler=\\\"IconLayoutRows\\\"\\n                    hugeicons=\\\"LayoutBottomIcon\\\"\\n                    phosphor=\\\"RowsIcon\\\"\\n                    remixicon=\\\"RiGalleryLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex flex-col gap-0.5 leading-none\\\">\\n                  <span className=\\\"font-medium\\\">Documentation</span>\\n                  <span className=\\\"\\\">v1.0.0</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <div className=\\\"p-1\\\">\\n          <SidebarOptInForm />\\n        </div>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-06/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <DropdownMenu key={item.title}>\\n            <SidebarMenuItem>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                  {item.title}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                    className=\\\"ml-auto\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </DropdownMenuTrigger>\\n              {item.items?.length ? (\\n                <DropdownMenuContent\\n                  side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                  align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n                  className=\\\"min-w-56 rounded-lg\\\"\\n                >\\n                  {item.items.map((item) => (\\n                    <DropdownMenuItem asChild key={item.title}>\\n                      <a href={item.url}>{item.title}</a>\\n                    </DropdownMenuItem>\\n                  ))}\\n                </DropdownMenuContent>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </DropdownMenu>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function SidebarOptInForm() {\\n  return (\\n    <Card className=\\\"gap-2 py-4 shadow-none\\\">\\n      <CardHeader className=\\\"px-4\\\">\\n        <CardTitle className=\\\"text-sm\\\">Subscribe to our newsletter</CardTitle>\\n        <CardDescription>\\n          Opt-in to receive updates and news about the sidebar.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"px-4\\\">\\n        <form>\\n          <div className=\\\"grid gap-2.5\\\">\\n            <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n            <Button className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-07\",\n  \"title\": \"Sidebar 07\",\n  \"description\": \"A sidebar that collapses to icons.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-07/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-07/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-07/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-vega/blocks/sidebar-07/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-vega/blocks/sidebar-07/components/nav-projects\\\"\\nimport { NavUser } from \\\"@/registry/radix-vega/blocks/sidebar-07/components/nav-user\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-vega/blocks/sidebar-07/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar collapsible=\\\"icon\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-07/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon?: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible\\n            key={item.title}\\n            asChild\\n            defaultOpen={item.isActive}\\n            className=\\\"group/collapsible\\\"\\n          >\\n            <SidebarMenuItem>\\n              <CollapsibleTrigger asChild>\\n                <SidebarMenuButton tooltip={item.title}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </SidebarMenuButton>\\n              </CollapsibleTrigger>\\n              <CollapsibleContent>\\n                <SidebarMenuSub>\\n                  {item.items?.map((subItem) => (\\n                    <SidebarMenuSubItem key={subItem.title}>\\n                      <SidebarMenuSubButton asChild>\\n                        <a href={subItem.url}>\\n                          <span>{subItem.title}</span>\\n                        </a>\\n                      </SidebarMenuSubButton>\\n                    </SidebarMenuSubItem>\\n                  ))}\\n                </SidebarMenuSub>\\n              </CollapsibleContent>\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-07/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowRightIcon\\\"\\n                    tabler=\\\"IconArrowForward\\\"\\n                    hugeicons=\\\"ArrowRightIcon\\\"\\n                    phosphor=\\\"ShareFatIcon\\\"\\n                    remixicon=\\\"RiShareForwardLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n              className=\\\"text-sidebar-foreground/70\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-07/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-07/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{activeTeam.plan}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-md border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-transparent\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-08\",\n  \"title\": \"Sidebar 08\",\n  \"description\": \"An inset sidebar with secondary navigation.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-08/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-08/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                  <BreadcrumbLink href=\\\"#\\\">\\n                    Build Your Application\\n                  </BreadcrumbLink>\\n                </BreadcrumbItem>\\n                <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-08/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-vega/blocks/sidebar-08/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-vega/blocks/sidebar-08/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-vega/blocks/sidebar-08/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-vega/blocks/sidebar-08/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar variant=\\\"inset\\\" {...props}>\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-08/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-08/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-08/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-08/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-09\",\n  \"title\": \"Sidebar 09\",\n  \"description\": \"Collapsible nested sidebars.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"switch\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-09/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-09/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider\\n      style={\\n        {\\n          \\\"--sidebar-width\\\": \\\"350px\\\",\\n        } as React.CSSProperties\\n      }\\n    >\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">All Inboxes</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          {Array.from({ length: 24 }).map((_, index) => (\\n            <div\\n              key={index}\\n              className=\\\"aspect-video h-12 w-full rounded-lg bg-muted/50\\\"\\n            />\\n          ))}\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-09/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavUser } from \\\"@/registry/radix-vega/blocks/sidebar-09/components/nav-user\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { Switch } from \\\"@/registry/radix-vega/ui/switch\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Drafts\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Sent\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Junk\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArchiveXIcon\\\"\\n          tabler=\\\"IconArchiveOff\\\"\\n          hugeicons=\\\"ArchiveIcon\\\"\\n          phosphor=\\\"ArchiveIcon\\\"\\n          remixicon=\\\"RiArchiveLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n      isActive: false,\\n    },\\n  ],\\n  mails: [\\n    {\\n      name: \\\"William Smith\\\",\\n      email: \\\"williamsmith@example.com\\\",\\n      subject: \\\"Meeting Tomorrow\\\",\\n      date: \\\"09:34 AM\\\",\\n      teaser:\\n        \\\"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\\\nPlease come prepared with your project updates.\\\",\\n    },\\n    {\\n      name: \\\"Alice Smith\\\",\\n      email: \\\"alicesmith@example.com\\\",\\n      subject: \\\"Re: Project Update\\\",\\n      date: \\\"Yesterday\\\",\\n      teaser:\\n        \\\"Thanks for the update. The progress looks great so far.\\\\nLet's schedule a call to discuss the next steps.\\\",\\n    },\\n    {\\n      name: \\\"Bob Johnson\\\",\\n      email: \\\"bobjohnson@example.com\\\",\\n      subject: \\\"Weekend Plans\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"Hey everyone! I'm thinking of organizing a team outing this weekend.\\\\nWould you be interested in a hiking trip or a beach day?\\\",\\n    },\\n    {\\n      name: \\\"Emily Davis\\\",\\n      email: \\\"emilydavis@example.com\\\",\\n      subject: \\\"Re: Question about Budget\\\",\\n      date: \\\"2 days ago\\\",\\n      teaser:\\n        \\\"I've reviewed the budget numbers you sent over.\\\\nCan we set up a quick call to discuss some potential adjustments?\\\",\\n    },\\n    {\\n      name: \\\"Michael Wilson\\\",\\n      email: \\\"michaelwilson@example.com\\\",\\n      subject: \\\"Important Announcement\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Please join us for an all-hands meeting this Friday at 3 PM.\\\\nWe have some exciting news to share about the company's future.\\\",\\n    },\\n    {\\n      name: \\\"Sarah Brown\\\",\\n      email: \\\"sarahbrown@example.com\\\",\\n      subject: \\\"Re: Feedback on Proposal\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\\\nCould we schedule a meeting to discuss my feedback in detail?\\\",\\n    },\\n    {\\n      name: \\\"David Lee\\\",\\n      email: \\\"davidlee@example.com\\\",\\n      subject: \\\"New Project Idea\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've been brainstorming and came up with an interesting project concept.\\\\nDo you have time this week to discuss its potential impact and feasibility?\\\",\\n    },\\n    {\\n      name: \\\"Olivia Wilson\\\",\\n      email: \\\"oliviawilson@example.com\\\",\\n      subject: \\\"Vacation Plans\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"Just a heads up that I'll be taking a two-week vacation next month.\\\\nI'll make sure all my projects are up to date before I leave.\\\",\\n    },\\n    {\\n      name: \\\"James Martin\\\",\\n      email: \\\"jamesmartin@example.com\\\",\\n      subject: \\\"Re: Conference Registration\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"I've completed the registration for the upcoming tech conference.\\\\nLet me know if you need any additional information from my end.\\\",\\n    },\\n    {\\n      name: \\\"Sophia White\\\",\\n      email: \\\"sophiawhite@example.com\\\",\\n      subject: \\\"Team Dinner\\\",\\n      date: \\\"1 week ago\\\",\\n      teaser:\\n        \\\"To celebrate our recent project success, I'd like to organize a team dinner.\\\\nAre you available next Friday evening? Please let me know your preferences.\\\",\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  // Note: I'm using state to show active item.\\n  // IRL you should use the url/router.\\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\\n  const [mails, setMails] = React.useState(data.mails)\\n  const { setOpen } = useSidebar()\\n\\n  return (\\n    <Sidebar\\n      collapsible=\\\"icon\\\"\\n      className=\\\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\\\"\\n      {...props}\\n    >\\n      {/* This is the first sidebar */}\\n      {/* We disable collapsible and adjust width to icon. */}\\n      {/* This will make the sidebar appear as icons. */}\\n      <Sidebar\\n        collapsible=\\\"none\\\"\\n        className=\\\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\\\"\\n      >\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild className=\\\"md:h-8 md:p-0\\\">\\n                <a href=\\\"#\\\">\\n                  <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"TerminalIcon\\\"\\n                      tabler=\\\"IconCommand\\\"\\n                      hugeicons=\\\"CommandIcon\\\"\\n                      phosphor=\\\"CommandIcon\\\"\\n                      remixicon=\\\"RiCommandLine\\\"\\n                      className=\\\"size-4\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                    <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                    <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                  </div>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupContent className=\\\"px-1.5 md:px-0\\\">\\n              <SidebarMenu>\\n                {data.navMain.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton\\n                      tooltip={{\\n                        children: item.title,\\n                        hidden: false,\\n                      }}\\n                      onClick={() => {\\n                        setActiveItem(item)\\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\\n                        setMails(\\n                          mail.slice(\\n                            0,\\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\\n                          )\\n                        )\\n                        setOpen(true)\\n                      }}\\n                      isActive={activeItem?.title === item.title}\\n                      className=\\\"px-2.5 md:px-2\\\"\\n                    >\\n                      {item.icon}\\n                      <span>{item.title}</span>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <NavUser user={data.user} />\\n        </SidebarFooter>\\n      </Sidebar>\\n\\n      {/* This is the second sidebar */}\\n      {/* We disable collapsible and let it fill remaining space */}\\n      <Sidebar collapsible=\\\"none\\\" className=\\\"hidden flex-1 md:flex\\\">\\n        <SidebarHeader className=\\\"gap-3.5 border-b p-4\\\">\\n          <div className=\\\"flex w-full items-center justify-between\\\">\\n            <div className=\\\"text-base font-medium text-foreground\\\">\\n              {activeItem?.title}\\n            </div>\\n            <Label className=\\\"flex items-center gap-2 text-sm\\\">\\n              <span>Unreads</span>\\n              <Switch className=\\\"shadow-none\\\" />\\n            </Label>\\n          </div>\\n          <SidebarInput placeholder=\\\"Type to search...\\\" />\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup className=\\\"px-0\\\">\\n            <SidebarGroupContent>\\n              {mails.map((mail) => (\\n                <a\\n                  href=\\\"#\\\"\\n                  key={mail.email}\\n                  className=\\\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n                >\\n                  <div className=\\\"flex w-full items-center gap-2\\\">\\n                    <span>{mail.name}</span>{\\\" \\\"}\\n                    <span className=\\\"ml-auto text-xs\\\">{mail.date}</span>\\n                  </div>\\n                  <span className=\\\"font-medium\\\">{mail.subject}</span>\\n                  <span className=\\\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\\\">\\n                    {mail.teaser}\\n                  </span>\\n                </a>\\n              ))}\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n      </Sidebar>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-09/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-10\",\n  \"title\": \"Sidebar 10\",\n  \"description\": \"A sidebar in a popover.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-10/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-10/components/app-sidebar\\\"\\nimport { NavActions } from \\\"@/registry/radix-vega/blocks/sidebar-10/components/nav-actions\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-14 shrink-0 items-center gap-2\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n          <div className=\\\"ml-auto px-3\\\">\\n            <NavActions />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 px-4 py-10\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-10/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-vega/blocks/sidebar-10/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-vega/blocks/sidebar-10/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-vega/blocks/sidebar-10/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-vega/blocks/sidebar-10/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-vega/blocks/sidebar-10/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-actions.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/registry/radix-vega/ui/popover\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = [\\n  [\\n    {\\n      label: \\\"Customize Page\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Turn into wiki\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FileTextIcon\\\"\\n          tabler=\\\"IconFileText\\\"\\n          hugeicons=\\\"File01Icon\\\"\\n          phosphor=\\\"FileTextIcon\\\"\\n          remixicon=\\\"RiFileTextLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Copy Link\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Duplicate\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CopyIcon\\\"\\n          tabler=\\\"IconCopy\\\"\\n          hugeicons=\\\"Copy01Icon\\\"\\n          phosphor=\\\"CopyIcon\\\"\\n          remixicon=\\\"RiFileCopyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpRightIcon\\\"\\n          tabler=\\\"IconCornerUpRight\\\"\\n          hugeicons=\\\"RedoIcon\\\"\\n          phosphor=\\\"ArrowBendUpRightIcon\\\"\\n          remixicon=\\\"RiCornerUpRightLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Move to Trash\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Undo\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CornerUpLeftIcon\\\"\\n          tabler=\\\"IconCornerUpLeft\\\"\\n          hugeicons=\\\"UndoIcon\\\"\\n          phosphor=\\\"ArrowBendUpLeftIcon\\\"\\n          remixicon=\\\"RiCornerUpLeftLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"View analytics\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ChartLineIcon\\\"\\n          tabler=\\\"IconChartLine\\\"\\n          hugeicons=\\\"ChartIcon\\\"\\n          phosphor=\\\"ChartLineIcon\\\"\\n          remixicon=\\\"RiLineChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Version History\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GalleryVerticalEndIcon\\\"\\n          tabler=\\\"IconLayoutRows\\\"\\n          hugeicons=\\\"LayoutBottomIcon\\\"\\n          phosphor=\\\"RowsIcon\\\"\\n          remixicon=\\\"RiGalleryLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Show delete pages\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TrashIcon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"DeleteIcon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  [\\n    {\\n      label: \\\"Import\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowUpIcon\\\"\\n          tabler=\\\"IconArrowUp\\\"\\n          hugeicons=\\\"ArrowUpIcon\\\"\\n          phosphor=\\\"ArrowUpIcon\\\"\\n          remixicon=\\\"RiArrowUpLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      label: \\\"Export\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"ArrowDownIcon\\\"\\n          tabler=\\\"IconArrowDown\\\"\\n          hugeicons=\\\"ArrowDownIcon\\\"\\n          phosphor=\\\"ArrowDownIcon\\\"\\n          remixicon=\\\"RiArrowDownLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n]\\n\\nexport function NavActions() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  React.useEffect(() => {\\n    setIsOpen(true)\\n  }, [])\\n\\n  return (\\n    <div className=\\\"flex items-center gap-2 text-sm\\\">\\n      <div className=\\\"hidden font-medium text-muted-foreground md:inline-block\\\">\\n        Edit Oct 08\\n      </div>\\n      <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-7 w-7\\\">\\n        <IconPlaceholder\\n          lucide=\\\"StarIcon\\\"\\n          tabler=\\\"IconStar\\\"\\n          hugeicons=\\\"StarIcon\\\"\\n          phosphor=\\\"StarIcon\\\"\\n          remixicon=\\\"RiStarLine\\\"\\n        />\\n      </Button>\\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\\n        <PopoverTrigger asChild>\\n          <Button\\n            variant=\\\"ghost\\\"\\n            size=\\\"icon\\\"\\n            className=\\\"h-7 w-7 data-[state=open]:bg-accent\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n          </Button>\\n        </PopoverTrigger>\\n        <PopoverContent\\n          className=\\\"w-56 overflow-hidden rounded-lg p-0\\\"\\n          align=\\\"end\\\"\\n        >\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"bg-transparent\\\">\\n            <SidebarContent>\\n              {data.map((group, index) => (\\n                <SidebarGroup key={index} className=\\\"border-b last:border-none\\\">\\n                  <SidebarGroupContent className=\\\"gap-0\\\">\\n                    <SidebarMenu>\\n                      {group.map((item, index) => (\\n                        <SidebarMenuItem key={index}>\\n                          <SidebarMenuButton>\\n                            {item.icon} <span>{item.label}</span>\\n                          </SidebarMenuButton>\\n                        </SidebarMenuItem>\\n                      ))}\\n                    </SidebarMenu>\\n                  </SidebarGroupContent>\\n                </SidebarGroup>\\n              ))}\\n            </SidebarContent>\\n          </Sidebar>\\n        </PopoverContent>\\n      </Popover>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-10/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-10/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-11\",\n  \"title\": \"Sidebar 11\",\n  \"description\": \"A sidebar with a collapsible file tree.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-11/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-11/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">components</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">ui</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-11/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  changes: [\\n    {\\n      file: \\\"README.md\\\",\\n      state: \\\"M\\\",\\n    },\\n    {\\n      file: \\\"api/hello/route.ts\\\",\\n      state: \\\"U\\\",\\n    },\\n    {\\n      file: \\\"app/layout.tsx\\\",\\n      state: \\\"M\\\",\\n    },\\n  ],\\n  tree: [\\n    [\\n      \\\"app\\\",\\n      [\\n        \\\"api\\\",\\n        [\\\"hello\\\", [\\\"route.ts\\\"]],\\n        \\\"page.tsx\\\",\\n        \\\"layout.tsx\\\",\\n        [\\\"blog\\\", [\\\"page.tsx\\\"]],\\n      ],\\n    ],\\n    [\\n      \\\"components\\\",\\n      [\\\"ui\\\", \\\"button.tsx\\\", \\\"card.tsx\\\"],\\n      \\\"header.tsx\\\",\\n      \\\"footer.tsx\\\",\\n    ],\\n    [\\\"lib\\\", [\\\"util.ts\\\"]],\\n    [\\\"public\\\", \\\"favicon.ico\\\", \\\"vercel.svg\\\"],\\n    \\\".eslintrc.json\\\",\\n    \\\".gitignore\\\",\\n    \\\"next.config.js\\\",\\n    \\\"tailwind.config.js\\\",\\n    \\\"package.json\\\",\\n    \\\"README.md\\\",\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.changes.map((item, index) => (\\n                <SidebarMenuItem key={index}>\\n                  <SidebarMenuButton>\\n                    <IconPlaceholder\\n                      lucide=\\\"FileIcon\\\"\\n                      tabler=\\\"IconFile\\\"\\n                      hugeicons=\\\"FileIcon\\\"\\n                      phosphor=\\\"FileIcon\\\"\\n                      remixicon=\\\"RiFileLine\\\"\\n                    />\\n                    {item.file}\\n                  </SidebarMenuButton>\\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.tree.map((item, index) => (\\n                <Tree key={index} item={item} />\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\\ntype TreeItem = string | TreeItem[]\\n\\nfunction Tree({ item }: { item: TreeItem }) {\\n  const [name, ...items] = Array.isArray(item) ? item : [item]\\n\\n  if (!items.length) {\\n    return (\\n      <SidebarMenuButton\\n        isActive={name === \\\"button.tsx\\\"}\\n        className=\\\"data-[active=true]:bg-transparent\\\"\\n      >\\n        <IconPlaceholder\\n          lucide=\\\"FileIcon\\\"\\n          tabler=\\\"IconFile\\\"\\n          hugeicons=\\\"FileIcon\\\"\\n          phosphor=\\\"FileIcon\\\"\\n          remixicon=\\\"RiFileLine\\\"\\n        />\\n        {name}\\n      </SidebarMenuButton>\\n    )\\n  }\\n\\n  return (\\n    <SidebarMenuItem>\\n      <Collapsible\\n        className=\\\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\\\"\\n        defaultOpen={name === \\\"components\\\" || name === \\\"ui\\\"}\\n      >\\n        <CollapsibleTrigger asChild>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"ChevronRightIcon\\\"\\n              tabler=\\\"IconChevronRight\\\"\\n              hugeicons=\\\"ArrowRight01Icon\\\"\\n              phosphor=\\\"CaretRightIcon\\\"\\n              remixicon=\\\"RiArrowRightSLine\\\"\\n              className=\\\"transition-transform\\\"\\n            />\\n            <IconPlaceholder\\n              lucide=\\\"FolderIcon\\\"\\n              tabler=\\\"IconFolder\\\"\\n              hugeicons=\\\"FolderIcon\\\"\\n              phosphor=\\\"FolderIcon\\\"\\n              remixicon=\\\"RiFolderLine\\\"\\n            />\\n            {name}\\n          </SidebarMenuButton>\\n        </CollapsibleTrigger>\\n        <CollapsibleContent>\\n          <SidebarMenuSub>\\n            {items.map((subItem, index) => (\\n              <Tree key={index} item={subItem} />\\n            ))}\\n          </SidebarMenuSub>\\n        </CollapsibleContent>\\n      </Collapsible>\\n    </SidebarMenuItem>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-12\",\n  \"title\": \"Sidebar 12\",\n  \"description\": \"A sidebar with a calendar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"calendar\",\n    \"dropdown-menu\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-12/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-12/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <AppSidebar />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n          <Separator\\n            orientation=\\\"vertical\\\"\\n            className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n          />\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-5\\\">\\n            {Array.from({ length: 20 }).map((_, i) => (\\n              <div key={i} className=\\\"aspect-square rounded-xl bg-muted/50\\\" />\\n            ))}\\n          </div>\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-12/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-vega/blocks/sidebar-12/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-vega/blocks/sidebar-12/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-vega/blocks/sidebar-12/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-12/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-12/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-vega/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-12/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-13\",\n  \"title\": \"Sidebar 13\",\n  \"description\": \"A sidebar in a dialog.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"button\",\n    \"dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-13/page.tsx\",\n      \"content\": \"import { SettingsDialog } from \\\"@/registry/radix-vega/blocks/sidebar-13/components/settings-dialog\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex h-svh items-center justify-center\\\">\\n      <SettingsDialog />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-13/components/settings-dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogDescription,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/registry/radix-vega/ui/dialog\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  nav: [\\n    {\\n      name: \\\"Notifications\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BellIcon\\\"\\n          tabler=\\\"IconBell\\\"\\n          hugeicons=\\\"NotificationIcon\\\"\\n          phosphor=\\\"BellIcon\\\"\\n          remixicon=\\\"RiNotificationLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Navigation\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MenuIcon\\\"\\n          tabler=\\\"IconMenu\\\"\\n          hugeicons=\\\"Menu09Icon\\\"\\n          phosphor=\\\"ListIcon\\\"\\n          remixicon=\\\"RiMenuLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Home\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Appearance\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PaintbrushIcon\\\"\\n          tabler=\\\"IconPalette\\\"\\n          hugeicons=\\\"PaintBoardIcon\\\"\\n          phosphor=\\\"PaletteIcon\\\"\\n          remixicon=\\\"RiPaletteLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Messages & media\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiChat1Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Language & region\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"GlobeIcon\\\"\\n          tabler=\\\"IconWorld\\\"\\n          hugeicons=\\\"Globe02Icon\\\"\\n          phosphor=\\\"GlobeIcon\\\"\\n          remixicon=\\\"RiGlobalLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Accessibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"KeyboardIcon\\\"\\n          tabler=\\\"IconKeyboard\\\"\\n          hugeicons=\\\"KeyboardIcon\\\"\\n          phosphor=\\\"KeyboardIcon\\\"\\n          remixicon=\\\"RiKeyboardLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Mark as read\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CheckIcon\\\"\\n          tabler=\\\"IconCheck\\\"\\n          hugeicons=\\\"Tick02Icon\\\"\\n          phosphor=\\\"CheckIcon\\\"\\n          remixicon=\\\"RiCheckLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Audio & video\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"VideoIcon\\\"\\n          tabler=\\\"IconVideoPlus\\\"\\n          hugeicons=\\\"RecordIcon\\\"\\n          phosphor=\\\"VideoIcon\\\"\\n          remixicon=\\\"RiVideoLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Connected accounts\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LinkIcon\\\"\\n          tabler=\\\"IconLink\\\"\\n          hugeicons=\\\"LinkIcon\\\"\\n          phosphor=\\\"LinkIcon\\\"\\n          remixicon=\\\"RiLinksLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Privacy & visibility\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LockIcon\\\"\\n          tabler=\\\"IconLock\\\"\\n          hugeicons=\\\"ShieldIcon\\\"\\n          phosphor=\\\"LockIcon\\\"\\n          remixicon=\\\"RiLockLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Advanced\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SettingsIcon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"SettingsIcon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function SettingsDialog() {\\n  const [open, setOpen] = React.useState(true)\\n\\n  return (\\n    <Dialog open={open} onOpenChange={setOpen}>\\n      <DialogTrigger asChild>\\n        <Button size=\\\"sm\\\">Open Dialog</Button>\\n      </DialogTrigger>\\n      <DialogContent className=\\\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\\\">\\n        <DialogTitle className=\\\"sr-only\\\">Settings</DialogTitle>\\n        <DialogDescription className=\\\"sr-only\\\">\\n          Customize your settings here.\\n        </DialogDescription>\\n        <SidebarProvider className=\\\"items-start\\\">\\n          <Sidebar collapsible=\\\"none\\\" className=\\\"hidden md:flex\\\">\\n            <SidebarContent>\\n              <SidebarGroup>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {data.nav.map((item) => (\\n                      <SidebarMenuItem key={item.name}>\\n                        <SidebarMenuButton\\n                          asChild\\n                          isActive={item.name === \\\"Messages & media\\\"}\\n                        >\\n                          <a href=\\\"#\\\">\\n                            {item.icon}\\n                            <span>{item.name}</span>\\n                          </a>\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </SidebarGroup>\\n            </SidebarContent>\\n          </Sidebar>\\n          <main className=\\\"flex h-[480px] flex-1 flex-col overflow-hidden\\\">\\n            <header className=\\\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n              <div className=\\\"flex items-center gap-2 px-4\\\">\\n                <Breadcrumb>\\n                  <BreadcrumbList>\\n                    <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                      <BreadcrumbLink href=\\\"#\\\">Settings</BreadcrumbLink>\\n                    </BreadcrumbItem>\\n                    <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n                    <BreadcrumbItem>\\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\\n                    </BreadcrumbItem>\\n                  </BreadcrumbList>\\n                </Breadcrumb>\\n              </div>\\n            </header>\\n            <div className=\\\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\\\">\\n              {Array.from({ length: 10 }).map((_, i) => (\\n                <div\\n                  key={i}\\n                  className=\\\"aspect-video max-w-3xl rounded-xl bg-muted/50\\\"\\n                />\\n              ))}\\n            </div>\\n          </main>\\n        </SidebarProvider>\\n      </DialogContent>\\n    </Dialog>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-14\",\n  \"title\": \"Sidebar 14\",\n  \"description\": \"A sidebar on the right.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-14/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-14/components/app-sidebar\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <Breadcrumb>\\n            <BreadcrumbList>\\n              <BreadcrumbItem className=\\\"hidden md:block\\\">\\n                <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n              </BreadcrumbItem>\\n              <BreadcrumbSeparator className=\\\"hidden md:block\\\" />\\n              <BreadcrumbItem>\\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n              </BreadcrumbItem>\\n            </BreadcrumbList>\\n          </Breadcrumb>\\n          <SidebarTrigger className=\\\"-mr-1 ml-auto rotate-180\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n      <AppSidebar side=\\\"right\\\" />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-14/components/app-sidebar.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\n// This is sample data.\\nconst data = {\\n  navMain: [\\n    {\\n      title: \\\"Getting Started\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Installation\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Project Structure\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Build Your Application\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Routing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Data Fetching\\\",\\n          url: \\\"#\\\",\\n          isActive: true,\\n        },\\n        {\\n          title: \\\"Rendering\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Caching\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Styling\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Optimizing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Configuring\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Testing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Authentication\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Deploying\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Upgrading\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Examples\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"API Reference\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Components\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"File Conventions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Functions\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"next.config.js Options\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"CLI\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Edge Runtime\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Architecture\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Accessibility\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Fast Refresh\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Next.js Compiler\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Supported Browsers\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Turbopack\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Community\\\",\\n      url: \\\"#\\\",\\n      items: [\\n        {\\n          title: \\\"Contribution Guide\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar {...props}>\\n      <SidebarContent>\\n        <SidebarGroup>\\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\\n          <SidebarGroupContent>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <SidebarMenuItem key={item.title}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url} className=\\\"font-medium\\\">\\n                      {item.title}\\n                    </a>\\n                  </SidebarMenuButton>\\n                  {item.items?.length ? (\\n                    <SidebarMenuSub>\\n                      {item.items.map((item) => (\\n                        <SidebarMenuSubItem key={item.title}>\\n                          <SidebarMenuSubButton\\n                            asChild\\n                            isActive={item.isActive}\\n                          >\\n                            <a href={item.url}>{item.title}</a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  ) : null}\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroupContent>\\n        </SidebarGroup>\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-15\",\n  \"title\": \"Sidebar 15\",\n  \"description\": \"A left and right sidebar.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"popover\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"calendar\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/page.tsx\",\n      \"content\": \"import { SidebarLeft } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/sidebar-left\\\"\\nimport { SidebarRight } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/sidebar-right\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  SidebarInset,\\n  SidebarProvider,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport default function Page() {\\n  return (\\n    <SidebarProvider>\\n      <SidebarLeft />\\n      <SidebarInset>\\n        <header className=\\\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\\\">\\n          <div className=\\\"flex flex-1 items-center gap-2 px-3\\\">\\n            <SidebarTrigger />\\n            <Separator\\n              orientation=\\\"vertical\\\"\\n              className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n            />\\n            <Breadcrumb>\\n              <BreadcrumbList>\\n                <BreadcrumbItem>\\n                  <BreadcrumbPage className=\\\"line-clamp-1\\\">\\n                    Project Management & Task Tracking\\n                  </BreadcrumbPage>\\n                </BreadcrumbItem>\\n              </BreadcrumbList>\\n            </Breadcrumb>\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n          <div className=\\\"mx-auto h-screen w-full max-w-3xl rounded-xl bg-muted/50\\\" />\\n        </div>\\n      </SidebarInset>\\n      <SidebarRight />\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/calendars.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function Calendars({\\n  calendars,\\n}: {\\n  calendars: {\\n    name: string\\n    items: string[]\\n  }[]\\n}) {\\n  return (\\n    <>\\n      {calendars.map((calendar, index) => (\\n        <React.Fragment key={calendar.name}>\\n          <SidebarGroup key={calendar.name}>\\n            <Collapsible\\n              defaultOpen={index === 0}\\n              className=\\\"group/collapsible\\\"\\n            >\\n              <SidebarGroupLabel\\n                asChild\\n                className=\\\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\"\\n              >\\n                <CollapsibleTrigger>\\n                  {calendar.name}{\\\" \\\"}\\n                  <IconPlaceholder\\n                    lucide=\\\"ChevronRightIcon\\\"\\n                    tabler=\\\"IconChevronRight\\\"\\n                    hugeicons=\\\"ArrowRight01Icon\\\"\\n                    phosphor=\\\"CaretRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightSLine\\\"\\n                    className=\\\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\\\"\\n                  />\\n                </CollapsibleTrigger>\\n              </SidebarGroupLabel>\\n              <CollapsibleContent>\\n                <SidebarGroupContent>\\n                  <SidebarMenu>\\n                    {calendar.items.map((item, index) => (\\n                      <SidebarMenuItem key={item}>\\n                        <SidebarMenuButton>\\n                          <div\\n                            data-active={index < 2}\\n                            className=\\\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\\\"\\n                          >\\n                            <IconPlaceholder\\n                              lucide=\\\"CheckIcon\\\"\\n                              tabler=\\\"IconCheck\\\"\\n                              hugeicons=\\\"Tick02Icon\\\"\\n                              phosphor=\\\"CheckIcon\\\"\\n                              remixicon=\\\"RiCheckLine\\\"\\n                              className=\\\"hidden size-3 group-data-[active=true]/calendar-item:block\\\"\\n                            />\\n                          </div>\\n                          {item}\\n                        </SidebarMenuButton>\\n                      </SidebarMenuItem>\\n                    ))}\\n                  </SidebarMenu>\\n                </SidebarGroupContent>\\n              </CollapsibleContent>\\n            </Collapsible>\\n          </SidebarGroup>\\n          <SidebarSeparator className=\\\"mx-0\\\" />\\n        </React.Fragment>\\n      ))}\\n    </>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/date-picker.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { Calendar } from \\\"@/registry/radix-vega/ui/calendar\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function DatePicker() {\\n  const [date, setDate] = React.useState<Date | undefined>(\\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\\n  )\\n  return (\\n    <SidebarGroup className=\\\"px-0\\\">\\n      <SidebarGroupContent>\\n        <Calendar\\n          mode=\\\"single\\\"\\n          selected={date}\\n          onSelect={setDate}\\n          captionLayout=\\\"dropdown\\\"\\n          className=\\\"bg-transparent [--cell-size:2.1rem]\\\"\\n        />\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-favorites.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavFavorites({\\n  favorites,\\n}: {\\n  favorites: {\\n    name: string\\n    url: string\\n    emoji: string\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {favorites.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url} title={item.name}>\\n                <span>{item.emoji}</span>\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-56 rounded-lg\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"StarOffIcon\\\"\\n                    tabler=\\\"IconStarOff\\\"\\n                    hugeicons=\\\"StarOffIcon\\\"\\n                    phosphor=\\\"StarIcon\\\"\\n                    remixicon=\\\"RiStarOffLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Remove from Favorites</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"LinkIcon\\\"\\n                    tabler=\\\"IconLink\\\"\\n                    hugeicons=\\\"LinkIcon\\\"\\n                    phosphor=\\\"LinkIcon\\\"\\n                    remixicon=\\\"RiLinksLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Copy Link</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ArrowUpRightIcon\\\"\\n                    tabler=\\\"IconArrowUpRight\\\"\\n                    hugeicons=\\\"ArrowUpRightIcon\\\"\\n                    phosphor=\\\"ArrowUpRightIcon\\\"\\n                    remixicon=\\\"RiArrowRightUpLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Open in New Tab</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n  }[]\\n}) {\\n  return (\\n    <SidebarMenu>\\n      {items.map((item) => (\\n        <SidebarMenuItem key={item.title}>\\n          <SidebarMenuButton asChild isActive={item.isActive}>\\n            <a href={item.url}>\\n              {item.icon}\\n              <span>{item.title}</span>\\n            </a>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      ))}\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    badge?: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"start\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/nav-workspaces.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavWorkspaces({\\n  workspaces,\\n}: {\\n  workspaces: {\\n    name: string\\n    emoji: React.ReactNode\\n    pages: {\\n      name: string\\n      emoji: React.ReactNode\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {workspaces.map((workspace) => (\\n            <Collapsible key={workspace.name}>\\n              <SidebarMenuItem>\\n                <SidebarMenuButton asChild>\\n                  <a href=\\\"#\\\">\\n                    <span>{workspace.emoji}</span>\\n                    <span>{workspace.name}</span>\\n                  </a>\\n                </SidebarMenuButton>\\n                <CollapsibleTrigger asChild>\\n                  <SidebarMenuAction\\n                    className=\\\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\\\"\\n                    showOnHover\\n                  >\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronRightIcon\\\"\\n                      tabler=\\\"IconChevronRight\\\"\\n                      hugeicons=\\\"ArrowRight01Icon\\\"\\n                      phosphor=\\\"CaretRightIcon\\\"\\n                      remixicon=\\\"RiArrowRightSLine\\\"\\n                    />\\n                  </SidebarMenuAction>\\n                </CollapsibleTrigger>\\n                <SidebarMenuAction showOnHover>\\n                  <IconPlaceholder\\n                    lucide=\\\"PlusIcon\\\"\\n                    tabler=\\\"IconPlus\\\"\\n                    hugeicons=\\\"PlusSignIcon\\\"\\n                    phosphor=\\\"PlusIcon\\\"\\n                    remixicon=\\\"RiAddLine\\\"\\n                  />\\n                </SidebarMenuAction>\\n                <CollapsibleContent>\\n                  <SidebarMenuSub>\\n                    {workspace.pages.map((page) => (\\n                      <SidebarMenuSubItem key={page.name}>\\n                        <SidebarMenuSubButton asChild>\\n                          <a href=\\\"#\\\">\\n                            <span>{page.emoji}</span>\\n                            <span>{page.name}</span>\\n                          </a>\\n                        </SidebarMenuSubButton>\\n                      </SidebarMenuSubItem>\\n                    ))}\\n                  </SidebarMenuSub>\\n                </CollapsibleContent>\\n              </SidebarMenuItem>\\n            </Collapsible>\\n          ))}\\n          <SidebarMenuItem>\\n            <SidebarMenuButton className=\\\"text-sidebar-foreground/70\\\">\\n              <IconPlaceholder\\n                lucide=\\\"MoreHorizontalIcon\\\"\\n                tabler=\\\"IconDots\\\"\\n                hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                remixicon=\\\"RiMoreLine\\\"\\n              />\\n              <span>More</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/sidebar-left.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavFavorites } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/nav-favorites\\\"\\nimport { NavMain } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/nav-main\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/nav-secondary\\\"\\nimport { NavWorkspaces } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/nav-workspaces\\\"\\nimport { TeamSwitcher } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/team-switcher\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarHeader,\\n  SidebarRail,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  teams: [\\n    {\\n      name: \\\"Acme Inc\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Enterprise\\\",\\n    },\\n    {\\n      name: \\\"Acme Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"AudioLinesIcon\\\"\\n          tabler=\\\"IconWaveSine\\\"\\n          hugeicons=\\\"AudioWave01Icon\\\"\\n          phosphor=\\\"WaveformIcon\\\"\\n          remixicon=\\\"RiPulseLine\\\"\\n        />\\n      ),\\n      plan: \\\"Startup\\\",\\n    },\\n    {\\n      name: \\\"Evil Corp.\\\",\\n      logo: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalIcon\\\"\\n          tabler=\\\"IconCommand\\\"\\n          hugeicons=\\\"CommandIcon\\\"\\n          phosphor=\\\"CommandIcon\\\"\\n          remixicon=\\\"RiCommandLine\\\"\\n        />\\n      ),\\n      plan: \\\"Free\\\",\\n    },\\n  ],\\n  navMain: [\\n    {\\n      title: \\\"Search\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Ask AI\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SparklesIcon\\\"\\n          tabler=\\\"IconSparkles\\\"\\n          hugeicons=\\\"SparklesIcon\\\"\\n          phosphor=\\\"SparkleIcon\\\"\\n          remixicon=\\\"RiSparklingLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Home\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"HomeIcon\\\"\\n          tabler=\\\"IconHome\\\"\\n          hugeicons=\\\"HomeIcon\\\"\\n          phosphor=\\\"HouseIcon\\\"\\n          remixicon=\\\"RiHomeLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n    },\\n    {\\n      title: \\\"Inbox\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"InboxIcon\\\"\\n          tabler=\\\"IconInbox\\\"\\n          hugeicons=\\\"InboxIcon\\\"\\n          phosphor=\\\"TrayIcon\\\"\\n          remixicon=\\\"RiInboxLine\\\"\\n        />\\n      ),\\n      badge: \\\"10\\\",\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Calendar\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"CalendarIcon\\\"\\n          tabler=\\\"IconCalendar\\\"\\n          hugeicons=\\\"CalendarIcon\\\"\\n          phosphor=\\\"CalendarIcon\\\"\\n          remixicon=\\\"RiCalendarLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Templates\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BlocksIcon\\\"\\n          tabler=\\\"IconCube\\\"\\n          hugeicons=\\\"CubeIcon\\\"\\n          phosphor=\\\"CubeIcon\\\"\\n          remixicon=\\\"RiBox3Line\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Trash\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Trash2Icon\\\"\\n          tabler=\\\"IconTrash\\\"\\n          hugeicons=\\\"Delete02Icon\\\"\\n          phosphor=\\\"TrashIcon\\\"\\n          remixicon=\\\"RiDeleteBinLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Help\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MessageCircleQuestionIcon\\\"\\n          tabler=\\\"IconMessageQuestion\\\"\\n          hugeicons=\\\"MessageQuestionIcon\\\"\\n          phosphor=\\\"ChatCircleIcon\\\"\\n          remixicon=\\\"RiQuestionLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  favorites: [\\n    {\\n      name: \\\"Project Management & Task Tracking\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📊\\\",\\n    },\\n    {\\n      name: \\\"Family Recipe Collection & Meal Planning\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🍳\\\",\\n    },\\n    {\\n      name: \\\"Fitness Tracker & Workout Routines\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💪\\\",\\n    },\\n    {\\n      name: \\\"Book Notes & Reading List\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"📚\\\",\\n    },\\n    {\\n      name: \\\"Sustainable Gardening Tips & Plant Care\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🌱\\\",\\n    },\\n    {\\n      name: \\\"Language Learning Progress & Resources\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🗣️\\\",\\n    },\\n    {\\n      name: \\\"Home Renovation Ideas & Budget Tracker\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🏠\\\",\\n    },\\n    {\\n      name: \\\"Personal Finance & Investment Portfolio\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"💰\\\",\\n    },\\n    {\\n      name: \\\"Movie & TV Show Watchlist with Reviews\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"🎬\\\",\\n    },\\n    {\\n      name: \\\"Daily Habit Tracker & Goal Setting\\\",\\n      url: \\\"#\\\",\\n      emoji: \\\"✅\\\",\\n    },\\n  ],\\n  workspaces: [\\n    {\\n      name: \\\"Personal Life Management\\\",\\n      emoji: \\\"🏠\\\",\\n      pages: [\\n        {\\n          name: \\\"Daily Journal & Reflection\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📔\\\",\\n        },\\n        {\\n          name: \\\"Health & Wellness Tracker\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🍏\\\",\\n        },\\n        {\\n          name: \\\"Personal Growth & Learning Goals\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌟\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Professional Development\\\",\\n      emoji: \\\"💼\\\",\\n      pages: [\\n        {\\n          name: \\\"Career Objectives & Milestones\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎯\\\",\\n        },\\n        {\\n          name: \\\"Skill Acquisition & Training Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🧠\\\",\\n        },\\n        {\\n          name: \\\"Networking Contacts & Events\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🤝\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Creative Projects\\\",\\n      emoji: \\\"🎨\\\",\\n      pages: [\\n        {\\n          name: \\\"Writing Ideas & Story Outlines\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"✍️\\\",\\n        },\\n        {\\n          name: \\\"Art & Design Portfolio\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🖼️\\\",\\n        },\\n        {\\n          name: \\\"Music Composition & Practice Log\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🎵\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Home Management\\\",\\n      emoji: \\\"🏡\\\",\\n      pages: [\\n        {\\n          name: \\\"Household Budget & Expense Tracking\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"💰\\\",\\n        },\\n        {\\n          name: \\\"Home Maintenance Schedule & Tasks\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🔧\\\",\\n        },\\n        {\\n          name: \\\"Family Calendar & Event Planning\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📅\\\",\\n        },\\n      ],\\n    },\\n    {\\n      name: \\\"Travel & Adventure\\\",\\n      emoji: \\\"🧳\\\",\\n      pages: [\\n        {\\n          name: \\\"Trip Planning & Itineraries\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🗺️\\\",\\n        },\\n        {\\n          name: \\\"Travel Bucket List & Inspiration\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"🌎\\\",\\n        },\\n        {\\n          name: \\\"Travel Journal & Photo Gallery\\\",\\n          url: \\\"#\\\",\\n          emoji: \\\"📸\\\",\\n        },\\n      ],\\n    },\\n  ],\\n}\\n\\nexport function SidebarLeft({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar className=\\\"border-r-0\\\" {...props}>\\n      <SidebarHeader>\\n        <TeamSwitcher teams={data.teams} />\\n        <NavMain items={data.navMain} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavFavorites favorites={data.favorites} />\\n        <NavWorkspaces workspaces={data.workspaces} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarRail />\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/sidebar-right.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Calendars } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/calendars\\\"\\nimport { DatePicker } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/date-picker\\\"\\nimport { NavUser } from \\\"@/registry/radix-vega/blocks/sidebar-15/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarRail,\\n  SidebarSeparator,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\n// This is sample data.\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  calendars: [\\n    {\\n      name: \\\"My Calendars\\\",\\n      items: [\\\"Personal\\\", \\\"Work\\\", \\\"Family\\\"],\\n    },\\n    {\\n      name: \\\"Favorites\\\",\\n      items: [\\\"Holidays\\\", \\\"Birthdays\\\"],\\n    },\\n    {\\n      name: \\\"Other\\\",\\n      items: [\\\"Travel\\\", \\\"Reminders\\\", \\\"Deadlines\\\"],\\n    },\\n  ],\\n}\\n\\nexport function SidebarRight({\\n  ...props\\n}: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      collapsible=\\\"none\\\"\\n      className=\\\"sticky top-0 hidden h-svh border-l lg:flex\\\"\\n      {...props}\\n    >\\n      <SidebarHeader className=\\\"h-16 border-b border-sidebar-border\\\">\\n        <NavUser user={data.user} />\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <DatePicker />\\n        <SidebarSeparator className=\\\"mx-0\\\" />\\n        <Calendars calendars={data.calendars} />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton>\\n              <IconPlaceholder\\n                lucide=\\\"PlusIcon\\\"\\n                tabler=\\\"IconPlus\\\"\\n                hugeicons=\\\"PlusSignIcon\\\"\\n                phosphor=\\\"PlusIcon\\\"\\n                remixicon=\\\"RiAddLine\\\"\\n              />\\n              <span>New Calendar</span>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-15/components/team-switcher.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuShortcut,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function TeamSwitcher({\\n  teams,\\n}: {\\n  teams: {\\n    name: string\\n    logo: React.ReactNode\\n    plan: string\\n  }[]\\n}) {\\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\\n\\n  if (!activeTeam) {\\n    return null\\n  }\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton className=\\\"w-fit px-1.5\\\">\\n              <div className=\\\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                {activeTeam.logo}\\n              </div>\\n              <span className=\\\"truncate font-medium\\\">{activeTeam.name}</span>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronDownIcon\\\"\\n                tabler=\\\"IconChevronDown\\\"\\n                hugeicons=\\\"ArrowDown01Icon\\\"\\n                phosphor=\\\"CaretDownIcon\\\"\\n                remixicon=\\\"RiArrowDownSLine\\\"\\n                className=\\\"opacity-50\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-64 rounded-lg\\\"\\n            align=\\\"start\\\"\\n            side=\\\"bottom\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"text-xs text-muted-foreground\\\">\\n              Teams\\n            </DropdownMenuLabel>\\n            {teams.map((team, index) => (\\n              <DropdownMenuItem\\n                key={team.name}\\n                onClick={() => setActiveTeam(team)}\\n                className=\\\"gap-2 p-2\\\"\\n              >\\n                <div className=\\\"flex size-6 items-center justify-center rounded-xs border\\\">\\n                  {team.logo}\\n                </div>\\n                {team.name}\\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\\n              </DropdownMenuItem>\\n            ))}\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem className=\\\"gap-2 p-2\\\">\\n              <div className=\\\"flex size-6 items-center justify-center rounded-md border bg-background\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"PlusIcon\\\"\\n                  tabler=\\\"IconPlus\\\"\\n                  hugeicons=\\\"PlusSignIcon\\\"\\n                  phosphor=\\\"PlusIcon\\\"\\n                  remixicon=\\\"RiAddLine\\\"\\n                  className=\\\"size-4\\\"\\n                />\\n              </div>\\n              <div className=\\\"font-medium text-muted-foreground\\\">Add team</div>\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-16\",\n  \"title\": \"Sidebar 16\",\n  \"description\": \"A sidebar with a sticky site header.\",\n  \"registryDependencies\": [\n    \"sidebar\",\n    \"breadcrumb\",\n    \"separator\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"avatar\",\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-16/page.tsx\",\n      \"content\": \"import { AppSidebar } from \\\"@/registry/radix-vega/blocks/sidebar-16/components/app-sidebar\\\"\\nimport { SiteHeader } from \\\"@/registry/radix-vega/blocks/sidebar-16/components/site-header\\\"\\nimport { SidebarInset, SidebarProvider } from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport const iframeHeight = \\\"800px\\\"\\n\\nexport const description = \\\"A sidebar with a header and a search form.\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"[--header-height:calc(--spacing(14))]\\\">\\n      <SidebarProvider className=\\\"flex flex-col\\\">\\n        <SiteHeader />\\n        <div className=\\\"flex flex-1\\\">\\n          <AppSidebar />\\n          <SidebarInset>\\n            <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n              <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n                <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n              </div>\\n              <div className=\\\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n            </div>\\n          </SidebarInset>\\n        </div>\\n      </SidebarProvider>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dashboard/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-16/components/app-sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { NavMain } from \\\"@/registry/radix-vega/blocks/sidebar-16/components/nav-main\\\"\\nimport { NavProjects } from \\\"@/registry/radix-vega/blocks/sidebar-16/components/nav-projects\\\"\\nimport { NavSecondary } from \\\"@/registry/radix-vega/blocks/sidebar-16/components/nav-secondary\\\"\\nimport { NavUser } from \\\"@/registry/radix-vega/blocks/sidebar-16/components/nav-user\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarHeader,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst data = {\\n  user: {\\n    name: \\\"shadcn\\\",\\n    email: \\\"m@example.com\\\",\\n    avatar: \\\"/avatars/shadcn.jpg\\\",\\n  },\\n  navMain: [\\n    {\\n      title: \\\"Playground\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"TerminalSquareIcon\\\"\\n          tabler=\\\"IconTerminal2\\\"\\n          hugeicons=\\\"ComputerTerminalIcon\\\"\\n          phosphor=\\\"TerminalIcon\\\"\\n          remixicon=\\\"RiTerminalBoxLine\\\"\\n        />\\n      ),\\n      isActive: true,\\n      items: [\\n        {\\n          title: \\\"History\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Starred\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Settings\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Models\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BotIcon\\\"\\n          tabler=\\\"IconRobot\\\"\\n          hugeicons=\\\"RoboticIcon\\\"\\n          phosphor=\\\"RobotIcon\\\"\\n          remixicon=\\\"RiRobotLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Genesis\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Explorer\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Quantum\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Documentation\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"BookOpenIcon\\\"\\n          tabler=\\\"IconBook\\\"\\n          hugeicons=\\\"BookOpen02Icon\\\"\\n          phosphor=\\\"BookOpenIcon\\\"\\n          remixicon=\\\"RiBookOpenLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"Introduction\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Get Started\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Tutorials\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Changelog\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n    {\\n      title: \\\"Settings\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"Settings2Icon\\\"\\n          tabler=\\\"IconSettings\\\"\\n          hugeicons=\\\"Settings05Icon\\\"\\n          phosphor=\\\"GearIcon\\\"\\n          remixicon=\\\"RiSettingsLine\\\"\\n        />\\n      ),\\n      items: [\\n        {\\n          title: \\\"General\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Team\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Billing\\\",\\n          url: \\\"#\\\",\\n        },\\n        {\\n          title: \\\"Limits\\\",\\n          url: \\\"#\\\",\\n        },\\n      ],\\n    },\\n  ],\\n  navSecondary: [\\n    {\\n      title: \\\"Support\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"LifeBuoyIcon\\\"\\n          tabler=\\\"IconLifebuoy\\\"\\n          hugeicons=\\\"ChartRingIcon\\\"\\n          phosphor=\\\"LifebuoyIcon\\\"\\n          remixicon=\\\"RiLifebuoyLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      title: \\\"Feedback\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"SendIcon\\\"\\n          tabler=\\\"IconSend\\\"\\n          hugeicons=\\\"SentIcon\\\"\\n          phosphor=\\\"PaperPlaneTiltIcon\\\"\\n          remixicon=\\\"RiSendPlaneLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n  projects: [\\n    {\\n      name: \\\"Design Engineering\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"FrameIcon\\\"\\n          tabler=\\\"IconFrame\\\"\\n          hugeicons=\\\"CropIcon\\\"\\n          phosphor=\\\"CropIcon\\\"\\n          remixicon=\\\"RiCropLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Sales & Marketing\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"PieChartIcon\\\"\\n          tabler=\\\"IconChartPie\\\"\\n          hugeicons=\\\"PieChartIcon\\\"\\n          phosphor=\\\"ChartPieIcon\\\"\\n          remixicon=\\\"RiPieChartLine\\\"\\n        />\\n      ),\\n    },\\n    {\\n      name: \\\"Travel\\\",\\n      url: \\\"#\\\",\\n      icon: (\\n        <IconPlaceholder\\n          lucide=\\\"MapIcon\\\"\\n          tabler=\\\"IconMap\\\"\\n          hugeicons=\\\"MapsIcon\\\"\\n          phosphor=\\\"MapTrifoldIcon\\\"\\n          remixicon=\\\"RiMapLine\\\"\\n        />\\n      ),\\n    },\\n  ],\\n}\\n\\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\\n  return (\\n    <Sidebar\\n      className=\\\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\\\"\\n      {...props}\\n    >\\n      <SidebarHeader>\\n        <SidebarMenu>\\n          <SidebarMenuItem>\\n            <SidebarMenuButton size=\\\"lg\\\" asChild>\\n              <a href=\\\"#\\\">\\n                <div className=\\\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\\\">\\n                  <IconPlaceholder\\n                    lucide=\\\"TerminalIcon\\\"\\n                    tabler=\\\"IconCommand\\\"\\n                    hugeicons=\\\"CommandIcon\\\"\\n                    phosphor=\\\"CommandIcon\\\"\\n                    remixicon=\\\"RiCommandLine\\\"\\n                    className=\\\"size-4\\\"\\n                  />\\n                </div>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">Acme Inc</span>\\n                  <span className=\\\"truncate text-xs\\\">Enterprise</span>\\n                </div>\\n              </a>\\n            </SidebarMenuButton>\\n          </SidebarMenuItem>\\n        </SidebarMenu>\\n      </SidebarHeader>\\n      <SidebarContent>\\n        <NavMain items={data.navMain} />\\n        <NavProjects projects={data.projects} />\\n        <NavSecondary items={data.navSecondary} className=\\\"mt-auto\\\" />\\n      </SidebarContent>\\n      <SidebarFooter>\\n        <NavUser user={data.user} />\\n      </SidebarFooter>\\n    </Sidebar>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-16/components/nav-main.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavMain({\\n  items,\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n    isActive?: boolean\\n    items?: {\\n      title: string\\n      url: string\\n    }[]\\n  }[]\\n}) {\\n  return (\\n    <SidebarGroup>\\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {items.map((item) => (\\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton asChild tooltip={item.title}>\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n              {item.items?.length ? (\\n                <>\\n                  <CollapsibleTrigger asChild>\\n                    <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                      <IconPlaceholder\\n                        lucide=\\\"ChevronRightIcon\\\"\\n                        tabler=\\\"IconChevronRight\\\"\\n                        hugeicons=\\\"ArrowRight01Icon\\\"\\n                        phosphor=\\\"CaretRightIcon\\\"\\n                        remixicon=\\\"RiArrowRightSLine\\\"\\n                      />\\n                      <span className=\\\"sr-only\\\">Toggle</span>\\n                    </SidebarMenuAction>\\n                  </CollapsibleTrigger>\\n                  <CollapsibleContent>\\n                    <SidebarMenuSub>\\n                      {item.items?.map((subItem) => (\\n                        <SidebarMenuSubItem key={subItem.title}>\\n                          <SidebarMenuSubButton asChild>\\n                            <a href={subItem.url}>\\n                              <span>{subItem.title}</span>\\n                            </a>\\n                          </SidebarMenuSubButton>\\n                        </SidebarMenuSubItem>\\n                      ))}\\n                    </SidebarMenuSub>\\n                  </CollapsibleContent>\\n                </>\\n              ) : null}\\n            </SidebarMenuItem>\\n          </Collapsible>\\n        ))}\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-16/components/nav-projects.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarGroup,\\n  SidebarGroupLabel,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavProjects({\\n  projects,\\n}: {\\n  projects: {\\n    name: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n      <SidebarMenu>\\n        {projects.map((item) => (\\n          <SidebarMenuItem key={item.name}>\\n            <SidebarMenuButton asChild>\\n              <a href={item.url}>\\n                {item.icon}\\n                <span>{item.name}</span>\\n              </a>\\n            </SidebarMenuButton>\\n            <DropdownMenu>\\n              <DropdownMenuTrigger asChild>\\n                <SidebarMenuAction\\n                  showOnHover\\n                  className=\\\"aria-expanded:bg-muted\\\"\\n                >\\n                  <IconPlaceholder\\n                    lucide=\\\"MoreHorizontalIcon\\\"\\n                    tabler=\\\"IconDots\\\"\\n                    hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                    phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                    remixicon=\\\"RiMoreLine\\\"\\n                  />\\n                  <span className=\\\"sr-only\\\">More</span>\\n                </SidebarMenuAction>\\n              </DropdownMenuTrigger>\\n              <DropdownMenuContent\\n                className=\\\"w-48\\\"\\n                side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n                align={isMobile ? \\\"end\\\" : \\\"start\\\"}\\n              >\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"FolderIcon\\\"\\n                    tabler=\\\"IconFolder\\\"\\n                    hugeicons=\\\"FolderIcon\\\"\\n                    phosphor=\\\"FolderIcon\\\"\\n                    remixicon=\\\"RiFolderLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>View Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"ShareIcon\\\"\\n                    tabler=\\\"IconShare2\\\"\\n                    hugeicons=\\\"Share03Icon\\\"\\n                    phosphor=\\\"ShareIcon\\\"\\n                    remixicon=\\\"RiShareLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Share Project</span>\\n                </DropdownMenuItem>\\n                <DropdownMenuSeparator />\\n                <DropdownMenuItem>\\n                  <IconPlaceholder\\n                    lucide=\\\"Trash2Icon\\\"\\n                    tabler=\\\"IconTrash\\\"\\n                    hugeicons=\\\"Delete02Icon\\\"\\n                    phosphor=\\\"TrashIcon\\\"\\n                    remixicon=\\\"RiDeleteBinLine\\\"\\n                    className=\\\"text-muted-foreground\\\"\\n                  />\\n                  <span>Delete Project</span>\\n                </DropdownMenuItem>\\n              </DropdownMenuContent>\\n            </DropdownMenu>\\n          </SidebarMenuItem>\\n        ))}\\n        <SidebarMenuItem>\\n          <SidebarMenuButton>\\n            <IconPlaceholder\\n              lucide=\\\"MoreHorizontalIcon\\\"\\n              tabler=\\\"IconDots\\\"\\n              hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n              phosphor=\\\"DotsThreeOutlineIcon\\\"\\n              remixicon=\\\"RiMoreLine\\\"\\n            />\\n            <span>More</span>\\n          </SidebarMenuButton>\\n        </SidebarMenuItem>\\n      </SidebarMenu>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-16/components/nav-secondary.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\n\\nexport function NavSecondary({\\n  items,\\n  ...props\\n}: {\\n  items: {\\n    title: string\\n    url: string\\n    icon: React.ReactNode\\n  }[]\\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\\n  return (\\n    <SidebarGroup {...props}>\\n      <SidebarGroupContent>\\n        <SidebarMenu>\\n          {items.map((item) => (\\n            <SidebarMenuItem key={item.title}>\\n              <SidebarMenuButton asChild size=\\\"sm\\\">\\n                <a href={item.url}>\\n                  {item.icon}\\n                  <span>{item.title}</span>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          ))}\\n        </SidebarMenu>\\n      </SidebarGroupContent>\\n    </SidebarGroup>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-16/components/nav-user.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  useSidebar,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function NavUser({\\n  user,\\n}: {\\n  user: {\\n    name: string\\n    email: string\\n    avatar: string\\n  }\\n}) {\\n  const { isMobile } = useSidebar()\\n\\n  return (\\n    <SidebarMenu>\\n      <SidebarMenuItem>\\n        <DropdownMenu>\\n          <DropdownMenuTrigger asChild>\\n            <SidebarMenuButton\\n              size=\\\"lg\\\"\\n              className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\"\\n            >\\n              <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                <AvatarImage src={user.avatar} alt={user.name} />\\n                <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n              </div>\\n              <IconPlaceholder\\n                lucide=\\\"ChevronsUpDownIcon\\\"\\n                tabler=\\\"IconSelector\\\"\\n                hugeicons=\\\"UnfoldMoreIcon\\\"\\n                phosphor=\\\"CaretUpDownIcon\\\"\\n                remixicon=\\\"RiArrowUpDownLine\\\"\\n                className=\\\"ml-auto size-4\\\"\\n              />\\n            </SidebarMenuButton>\\n          </DropdownMenuTrigger>\\n          <DropdownMenuContent\\n            className=\\\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\\\"\\n            side={isMobile ? \\\"bottom\\\" : \\\"right\\\"}\\n            align=\\\"end\\\"\\n            sideOffset={4}\\n          >\\n            <DropdownMenuLabel className=\\\"p-0 font-normal\\\">\\n              <div className=\\\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\\\">\\n                <Avatar className=\\\"h-8 w-8 rounded-lg\\\">\\n                  <AvatarImage src={user.avatar} alt={user.name} />\\n                  <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                  <span className=\\\"truncate font-medium\\\">{user.name}</span>\\n                  <span className=\\\"truncate text-xs\\\">{user.email}</span>\\n                </div>\\n              </div>\\n            </DropdownMenuLabel>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"SparklesIcon\\\"\\n                  tabler=\\\"IconSparkles\\\"\\n                  hugeicons=\\\"SparklesIcon\\\"\\n                  phosphor=\\\"SparkleIcon\\\"\\n                  remixicon=\\\"RiSparklingLine\\\"\\n                />\\n                Upgrade to Pro\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuGroup>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BadgeCheckIcon\\\"\\n                  tabler=\\\"IconRosetteDiscountCheck\\\"\\n                  hugeicons=\\\"CheckmarkBadgeIcon\\\"\\n                  phosphor=\\\"CheckCircleIcon\\\"\\n                  remixicon=\\\"RiCheckboxCircleLine\\\"\\n                />\\n                Account\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"CreditCardIcon\\\"\\n                  tabler=\\\"IconCreditCard\\\"\\n                  hugeicons=\\\"CreditCardIcon\\\"\\n                  phosphor=\\\"CreditCardIcon\\\"\\n                  remixicon=\\\"RiBankCardLine\\\"\\n                />\\n                Billing\\n              </DropdownMenuItem>\\n              <DropdownMenuItem>\\n                <IconPlaceholder\\n                  lucide=\\\"BellIcon\\\"\\n                  tabler=\\\"IconBell\\\"\\n                  hugeicons=\\\"NotificationIcon\\\"\\n                  phosphor=\\\"BellIcon\\\"\\n                  remixicon=\\\"RiNotificationLine\\\"\\n                />\\n                Notifications\\n              </DropdownMenuItem>\\n            </DropdownMenuGroup>\\n            <DropdownMenuSeparator />\\n            <DropdownMenuItem>\\n              <IconPlaceholder\\n                lucide=\\\"LogOutIcon\\\"\\n                tabler=\\\"IconLogout\\\"\\n                hugeicons=\\\"LogoutIcon\\\"\\n                phosphor=\\\"SignOutIcon\\\"\\n                remixicon=\\\"RiLogoutBoxLine\\\"\\n              />\\n              Log out\\n            </DropdownMenuItem>\\n          </DropdownMenuContent>\\n        </DropdownMenu>\\n      </SidebarMenuItem>\\n    </SidebarMenu>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-16/components/search-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport { SidebarInput } from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SearchForm({ ...props }: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form {...props}>\\n      <div className=\\\"relative\\\">\\n        <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n          Search\\n        </Label>\\n        <SidebarInput\\n          id=\\\"search\\\"\\n          placeholder=\\\"Type to search...\\\"\\n          className=\\\"h-8 pl-7\\\"\\n        />\\n        <IconPlaceholder\\n          lucide=\\\"SearchIcon\\\"\\n          tabler=\\\"IconSearch\\\"\\n          hugeicons=\\\"SearchIcon\\\"\\n          phosphor=\\\"MagnifyingGlassIcon\\\"\\n          remixicon=\\\"RiSearchLine\\\"\\n          className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n        />\\n      </div>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/sidebar-16/components/site-header.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SearchForm } from \\\"@/registry/radix-vega/blocks/sidebar-16/components/search-form\\\"\\nimport {\\n  Breadcrumb,\\n  BreadcrumbItem,\\n  BreadcrumbLink,\\n  BreadcrumbList,\\n  BreadcrumbPage,\\n  BreadcrumbSeparator,\\n} from \\\"@/registry/radix-vega/ui/breadcrumb\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport { useSidebar } from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SiteHeader() {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <header className=\\\"sticky top-0 z-50 flex w-full items-center border-b bg-background\\\">\\n      <div className=\\\"flex h-(--header-height) w-full items-center gap-2 px-4\\\">\\n        <Button\\n          className=\\\"h-8 w-8\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"icon\\\"\\n          onClick={toggleSidebar}\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"PanelLeftIcon\\\"\\n            tabler=\\\"IconLayoutSidebar\\\"\\n            hugeicons=\\\"SidebarLeftIcon\\\"\\n            phosphor=\\\"SidebarIcon\\\"\\n            remixicon=\\\"RiLayoutLeftLine\\\"\\n          />\\n        </Button>\\n        <Separator\\n          orientation=\\\"vertical\\\"\\n          className=\\\"mr-2 data-vertical:h-4 data-vertical:self-auto\\\"\\n        />\\n        <Breadcrumb className=\\\"hidden sm:block\\\">\\n          <BreadcrumbList>\\n            <BreadcrumbItem>\\n              <BreadcrumbLink href=\\\"#\\\">Build Your Application</BreadcrumbLink>\\n            </BreadcrumbItem>\\n            <BreadcrumbSeparator />\\n            <BreadcrumbItem>\\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\\n            </BreadcrumbItem>\\n          </BreadcrumbList>\\n        </Breadcrumb>\\n        <SearchForm className=\\\"w-full sm:ml-auto sm:w-auto\\\" />\\n      </div>\\n    </header>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"sidebar\",\n    \"dashboard\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-example\",\n  \"title\": \"Sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"item\",\n    \"label\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/sidebar-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemActions,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarExample() {\\n  const data = {\\n    versions: [\\\"1.0.1\\\", \\\"1.1.0-alpha\\\", \\\"2.0.0-beta1\\\"],\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar>\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                      <ItemContent>\\n                        <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                        <ItemDescription>v{selectedVersion}</ItemDescription>\\n                      </ItemContent>\\n                      <ItemActions>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronsUpDownIcon\\\"\\n                          tabler=\\\"IconSelector\\\"\\n                          hugeicons=\\\"UnfoldMoreIcon\\\"\\n                          phosphor=\\\"CaretUpDownIcon\\\"\\n                          remixicon=\\\"RiArrowUpDownLine\\\"\\n                        />\\n                      </ItemActions>\\n                    </Item>\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    {data.versions.map((version) => (\\n                      <DropdownMenuItem\\n                        key={version}\\n                        onSelect={() => setSelectedVersion(version)}\\n                      >\\n                        v{version}{\\\" \\\"}\\n                        {version === selectedVersion && (\\n                          <IconPlaceholder\\n                            lucide=\\\"CheckIcon\\\"\\n                            tabler=\\\"IconCheck\\\"\\n                            hugeicons=\\\"Tick02Icon\\\"\\n                            phosphor=\\\"CheckIcon\\\"\\n                            remixicon=\\\"RiCheckLine\\\"\\n                            className=\\\"ml-auto\\\"\\n                          />\\n                        )}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n          <form>\\n            <SidebarGroup className=\\\"py-0\\\">\\n              <SidebarGroupContent className=\\\"relative\\\">\\n                <Label htmlFor=\\\"search\\\" className=\\\"sr-only\\\">\\n                  Search\\n                </Label>\\n                <SidebarInput\\n                  id=\\\"search\\\"\\n                  placeholder=\\\"Search the docs...\\\"\\n                  className=\\\"pl-8\\\"\\n                />\\n                <IconPlaceholder\\n                  lucide=\\\"SearchIcon\\\"\\n                  tabler=\\\"IconSearch\\\"\\n                  hugeicons=\\\"SearchIcon\\\"\\n                  phosphor=\\\"MagnifyingGlassIcon\\\"\\n                  remixicon=\\\"RiSearchLine\\\"\\n                  className=\\\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\\\"\\n                />\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          </form>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          {data.navMain.map((item) => (\\n            <SidebarGroup key={item.title}>\\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\\n              <SidebarGroupContent>\\n                <SidebarMenu>\\n                  {item.items.map((subItem) => (\\n                    <SidebarMenuItem key={subItem.title}>\\n                      <SidebarMenuButton asChild isActive={subItem.isActive}>\\n                        <a href={subItem.url}>{subItem.title}</a>\\n                      </SidebarMenuButton>\\n                    </SidebarMenuItem>\\n                  ))}\\n                </SidebarMenu>\\n              </SidebarGroupContent>\\n            </SidebarGroup>\\n          ))}\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-floating-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-floating-example\",\n  \"title\": \"Sidebar (Floating)\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"dropdown-menu\",\n    \"field\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/sidebar-floating-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport { Field } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarFloatingExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Getting Started\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Installation\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Project Structure\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Build Your Application\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Routing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Data Fetching\\\",\\n            url: \\\"#\\\",\\n            isActive: true,\\n          },\\n          {\\n            title: \\\"Rendering\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Caching\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Styling\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Optimizing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Configuring\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Testing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Authentication\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Deploying\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Upgrading\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Examples\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"API Reference\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Components\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"File Conventions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Functions\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"next.config.js Options\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"CLI\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Edge Runtime\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Architecture\\\",\\n        url: \\\"#\\\",\\n        items: [\\n          {\\n            title: \\\"Accessibility\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Fast Refresh\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Next.js Compiler\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Supported Browsers\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Turbopack\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider className=\\\"bg-background\\\">\\n      <Sidebar variant=\\\"floating\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <SidebarMenuButton size=\\\"lg\\\" asChild>\\n                <a href=\\\"#\\\">\\n                  <Item className=\\\"p-0\\\" size=\\\"xs\\\">\\n                    <ItemContent>\\n                      <ItemTitle className=\\\"text-sm\\\">Documentation</ItemTitle>\\n                      <ItemDescription>v1.0.0</ItemDescription>\\n                    </ItemContent>\\n                  </Item>\\n                </a>\\n              </SidebarMenuButton>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <DropdownMenu key={item.title}>\\n                  <SidebarMenuItem>\\n                    <DropdownMenuTrigger asChild>\\n                      <SidebarMenuButton className=\\\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\\\">\\n                        {item.title}{\\\" \\\"}\\n                        <IconPlaceholder\\n                          lucide=\\\"MoreHorizontalIcon\\\"\\n                          tabler=\\\"IconDots\\\"\\n                          hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                          phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                          remixicon=\\\"RiMoreLine\\\"\\n                          className=\\\"ml-auto\\\"\\n                        />\\n                      </SidebarMenuButton>\\n                    </DropdownMenuTrigger>\\n                    {item.items?.length ? (\\n                      <DropdownMenuContent side=\\\"right\\\" align=\\\"start\\\">\\n                        <DropdownMenuGroup>\\n                          {item.items.map((subItem) => (\\n                            <DropdownMenuItem asChild key={subItem.title}>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </DropdownMenuItem>\\n                          ))}\\n                        </DropdownMenuGroup>\\n                      </DropdownMenuContent>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </DropdownMenu>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarGroup>\\n            <Card size=\\\"sm\\\" className=\\\"-mx-2\\\">\\n              <CardHeader>\\n                <CardTitle className=\\\"text-sm\\\">\\n                  Subscribe to our newsletter\\n                </CardTitle>\\n                <CardDescription>\\n                  Opt-in to receive updates and news about the sidebar.\\n                </CardDescription>\\n              </CardHeader>\\n              <CardContent>\\n                <form>\\n                  <Field>\\n                    <SidebarInput type=\\\"email\\\" placeholder=\\\"Email\\\" />\\n                    <Button\\n                      className=\\\"w-full bg-sidebar-primary text-sidebar-primary-foreground\\\"\\n                      size=\\\"sm\\\"\\n                    >\\n                      Subscribe\\n                    </Button>\\n                  </Field>\\n                </form>\\n              </CardContent>\\n            </Card>\\n          </SidebarGroup>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4 pt-0\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-icon-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-icon-example\",\n  \"title\": \"Sidebar (Icon)\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"collapsible\",\n    \"dropdown-menu\",\n    \"item\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/sidebar-icon-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Avatar,\\n  AvatarFallback,\\n  AvatarImage,\\n} from \\\"@/registry/radix-vega/ui/avatar\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuGroup,\\n  DropdownMenuItem,\\n  DropdownMenuLabel,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport {\\n  Item,\\n  ItemContent,\\n  ItemDescription,\\n  ItemMedia,\\n  ItemTitle,\\n} from \\\"@/registry/radix-vega/ui/item\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarIconExample() {\\n  const data = {\\n    user: {\\n      name: \\\"shadcn\\\",\\n      email: \\\"m@example.com\\\",\\n      avatar: \\\"/avatars/shadcn.jpg\\\",\\n    },\\n    teams: [\\n      {\\n        name: \\\"Acme Inc\\\",\\n        plan: \\\"Enterprise\\\",\\n      },\\n      {\\n        name: \\\"Acme Corp.\\\",\\n        plan: \\\"Startup\\\",\\n      },\\n      {\\n        name: \\\"Evil Corp.\\\",\\n        plan: \\\"Free\\\",\\n      },\\n    ],\\n    navMain: [\\n      {\\n        title: \\\"Playground\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"TerminalSquareIcon\\\"\\n            tabler=\\\"IconTerminal2\\\"\\n            hugeicons=\\\"ComputerTerminalIcon\\\"\\n            phosphor=\\\"TerminalIcon\\\"\\n            remixicon=\\\"RiTerminalBoxLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"History\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Starred\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Settings\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Models\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BotIcon\\\"\\n            tabler=\\\"IconRobot\\\"\\n            hugeicons=\\\"RoboticIcon\\\"\\n            phosphor=\\\"RobotIcon\\\"\\n            remixicon=\\\"RiRobotLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Genesis\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Explorer\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Quantum\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Documentation\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"BookOpen\\\"\\n            tabler=\\\"IconBook\\\"\\n            hugeicons=\\\"BookOpen02Icon\\\"\\n            phosphor=\\\"BookOpenIcon\\\"\\n            remixicon=\\\"RiBookOpenLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Introduction\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Get Started\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Tutorials\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Changelog\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"General\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Team\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Billing\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Limits\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n    ],\\n    projects: [\\n      {\\n        name: \\\"Design Engineering\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FrameIcon\\\"\\n            tabler=\\\"IconFrame\\\"\\n            hugeicons=\\\"CropIcon\\\"\\n            phosphor=\\\"CropIcon\\\"\\n            remixicon=\\\"RiCropLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Sales & Marketing\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"PieChartIcon\\\"\\n            tabler=\\\"IconChartPie\\\"\\n            hugeicons=\\\"PieChartIcon\\\"\\n            phosphor=\\\"ChartPieIcon\\\"\\n            remixicon=\\\"RiPieChartLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        name: \\\"Travel\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"MapIcon\\\"\\n            tabler=\\\"IconMap\\\"\\n            hugeicons=\\\"MapsIcon\\\"\\n            phosphor=\\\"MapTrifoldIcon\\\"\\n            remixicon=\\\"RiMapLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar collapsible=\\\"icon\\\">\\n        <SidebarHeader>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Button size=\\\"icon-sm\\\" asChild className=\\\"size-8\\\">\\n                      <span>\\n                        <svg\\n                          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                          viewBox=\\\"0 0 256 256\\\"\\n                        >\\n                          <rect width=\\\"256\\\" height=\\\"256\\\" fill=\\\"none\\\"></rect>\\n                          <line\\n                            x1=\\\"208\\\"\\n                            y1=\\\"128\\\"\\n                            x2=\\\"128\\\"\\n                            y2=\\\"208\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                          <line\\n                            x1=\\\"192\\\"\\n                            y1=\\\"40\\\"\\n                            x2=\\\"40\\\"\\n                            y2=\\\"192\\\"\\n                            fill=\\\"none\\\"\\n                            stroke=\\\"currentColor\\\"\\n                            strokeLinecap=\\\"round\\\"\\n                            strokeLinejoin=\\\"round\\\"\\n                            strokeWidth=\\\"32\\\"\\n                          ></line>\\n                        </svg>\\n                      </span>\\n                    </Button>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {activeTeam.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {activeTeam.plan}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\\n                    {data.teams.map((team) => (\\n                      <DropdownMenuItem\\n                        key={team.name}\\n                        onClick={() => setActiveTeam(team)}\\n                      >\\n                        {team.name}\\n                      </DropdownMenuItem>\\n                    ))}\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarHeader>\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                  className=\\\"group/collapsible\\\"\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton tooltip={item.title} asChild>\\n                      <CollapsibleTrigger>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                        <IconPlaceholder\\n                          lucide=\\\"ChevronRightIcon\\\"\\n                          tabler=\\\"IconChevronRight\\\"\\n                          hugeicons=\\\"ArrowRight01Icon\\\"\\n                          phosphor=\\\"CaretRightIcon\\\"\\n                          remixicon=\\\"RiArrowRightSLine\\\"\\n                          className=\\\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\\\"\\n                        />\\n                      </CollapsibleTrigger>\\n                    </SidebarMenuButton>\\n                    <CollapsibleContent>\\n                      <SidebarMenuSub>\\n                        {item.items?.map((subItem) => (\\n                          <SidebarMenuSubItem key={subItem.title}>\\n                            <SidebarMenuSubButton asChild>\\n                              <a href={subItem.url}>{subItem.title}</a>\\n                            </SidebarMenuSubButton>\\n                          </SidebarMenuSubItem>\\n                        ))}\\n                      </SidebarMenuSub>\\n                    </CollapsibleContent>\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"group-data-[collapsible=icon]:hidden\\\">\\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.projects.map((item) => (\\n                <SidebarMenuItem key={item.name}>\\n                  <SidebarMenuButton asChild>\\n                    <a href={item.url}>\\n                      {item.icon}\\n                      {item.name}\\n                    </a>\\n                  </SidebarMenuButton>\\n                </SidebarMenuItem>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarFooter>\\n          <SidebarMenu>\\n            <SidebarMenuItem>\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <SidebarMenuButton\\n                    size=\\\"lg\\\"\\n                    className=\\\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\\\"\\n                  >\\n                    <Avatar>\\n                      <AvatarImage\\n                        src={data.user.avatar}\\n                        alt={data.user.name}\\n                      />\\n                      <AvatarFallback className=\\\"rounded-lg\\\">CN</AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"grid flex-1 text-left text-sm leading-tight\\\">\\n                      <span className=\\\"truncate font-medium\\\">\\n                        {data.user.name}\\n                      </span>\\n                      <span className=\\\"truncate text-xs\\\">\\n                        {data.user.email}\\n                      </span>\\n                    </div>\\n                    <IconPlaceholder\\n                      lucide=\\\"ChevronsUpDownIcon\\\"\\n                      tabler=\\\"IconSelector\\\"\\n                      hugeicons=\\\"UnfoldMoreIcon\\\"\\n                      phosphor=\\\"CaretUpDownIcon\\\"\\n                      remixicon=\\\"RiArrowUpDownLine\\\"\\n                    />\\n                  </SidebarMenuButton>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent>\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuLabel>\\n                      <Item size=\\\"xs\\\">\\n                        <ItemMedia>\\n                          <Avatar>\\n                            <AvatarImage\\n                              src={data.user.avatar}\\n                              alt={data.user.name}\\n                            />\\n                            <AvatarFallback>CN</AvatarFallback>\\n                          </Avatar>\\n                        </ItemMedia>\\n                        <ItemContent>\\n                          <ItemTitle>{data.user.name}</ItemTitle>\\n                          <ItemDescription> {data.user.email}</ItemDescription>\\n                        </ItemContent>\\n                      </Item>\\n                    </DropdownMenuLabel>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Account</DropdownMenuItem>\\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuGroup>\\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\\n                  </DropdownMenuGroup>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </SidebarMenuItem>\\n          </SidebarMenu>\\n        </SidebarFooter>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\\\">\\n          <div className=\\\"flex items-center gap-2 px-4\\\">\\n            <SidebarTrigger className=\\\"-ml-1\\\" />\\n          </div>\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar-inset-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar-inset-example\",\n  \"title\": \"Sidebar (Inset)\",\n  \"registryDependencies\": [\n    \"collapsible\",\n    \"sidebar\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/sidebar-inset-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Collapsible,\\n  CollapsibleContent,\\n  CollapsibleTrigger,\\n} from \\\"@/registry/radix-vega/ui/collapsible\\\"\\nimport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarGroup,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarTrigger,\\n} from \\\"@/registry/radix-vega/ui/sidebar\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SidebarInsetExample() {\\n  const data = {\\n    navMain: [\\n      {\\n        title: \\\"Dashboard\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"HomeIcon\\\"\\n            tabler=\\\"IconHome\\\"\\n            hugeicons=\\\"Home01Icon\\\"\\n            phosphor=\\\"HouseIcon\\\"\\n            remixicon=\\\"RiHomeLine\\\"\\n          />\\n        ),\\n        isActive: true,\\n        items: [\\n          {\\n            title: \\\"Overview\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Analytics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Analytics\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ChartLineIcon\\\"\\n            tabler=\\\"IconChartLine\\\"\\n            hugeicons=\\\"ChartIcon\\\"\\n            phosphor=\\\"ChartLineIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"Reports\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Metrics\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Orders\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingBagIcon\\\"\\n            tabler=\\\"IconShoppingBag\\\"\\n            hugeicons=\\\"ShoppingBag01Icon\\\"\\n            phosphor=\\\"BagIcon\\\"\\n            remixicon=\\\"RiShoppingBagLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Orders\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Pending\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Completed\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Products\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"ShoppingCartIcon\\\"\\n            tabler=\\\"IconShoppingCart\\\"\\n            hugeicons=\\\"ShoppingCart01Icon\\\"\\n            phosphor=\\\"ShoppingCartIcon\\\"\\n            remixicon=\\\"RiShoppingCartLine\\\"\\n          />\\n        ),\\n        items: [\\n          {\\n            title: \\\"All Products\\\",\\n            url: \\\"#\\\",\\n          },\\n          {\\n            title: \\\"Categories\\\",\\n            url: \\\"#\\\",\\n          },\\n        ],\\n      },\\n      {\\n        title: \\\"Invoices\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"FileIcon\\\"\\n            tabler=\\\"IconFile\\\"\\n            hugeicons=\\\"File01Icon\\\"\\n            phosphor=\\\"FileIcon\\\"\\n            remixicon=\\\"RiFileLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Customers\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"UserIcon\\\"\\n            tabler=\\\"IconUser\\\"\\n            hugeicons=\\\"UserIcon\\\"\\n            phosphor=\\\"UserIcon\\\"\\n            remixicon=\\\"RiUserLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Settings\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Settings2Icon\\\"\\n            tabler=\\\"IconSettings\\\"\\n            hugeicons=\\\"Settings05Icon\\\"\\n            phosphor=\\\"GearIcon\\\"\\n            remixicon=\\\"RiSettingsLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n    navSecondary: [\\n      {\\n        title: \\\"Support\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"LifeBuoy\\\"\\n            tabler=\\\"IconLifebuoy\\\"\\n            hugeicons=\\\"ChartRingIcon\\\"\\n            phosphor=\\\"LifebuoyIcon\\\"\\n            remixicon=\\\"RiLifebuoyLine\\\"\\n          />\\n        ),\\n      },\\n      {\\n        title: \\\"Feedback\\\",\\n        url: \\\"#\\\",\\n        icon: (\\n          <IconPlaceholder\\n            lucide=\\\"Send\\\"\\n            tabler=\\\"IconSend\\\"\\n            hugeicons=\\\"SentIcon\\\"\\n            phosphor=\\\"PaperPlaneTiltIcon\\\"\\n            remixicon=\\\"RiSendPlaneLine\\\"\\n          />\\n        ),\\n      },\\n    ],\\n  }\\n\\n  return (\\n    <SidebarProvider>\\n      <Sidebar variant=\\\"inset\\\">\\n        <SidebarContent>\\n          <SidebarGroup>\\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\\n            <SidebarMenu>\\n              {data.navMain.map((item) => (\\n                <Collapsible\\n                  key={item.title}\\n                  asChild\\n                  defaultOpen={item.isActive}\\n                >\\n                  <SidebarMenuItem>\\n                    <SidebarMenuButton\\n                      asChild\\n                      tooltip={item.title}\\n                      isActive={item.isActive}\\n                    >\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                    {item.items?.length ? (\\n                      <>\\n                        <CollapsibleTrigger asChild>\\n                          <SidebarMenuAction className=\\\"data-[state=open]:rotate-90\\\">\\n                            <IconPlaceholder\\n                              lucide=\\\"ChevronRightIcon\\\"\\n                              tabler=\\\"IconChevronRight\\\"\\n                              hugeicons=\\\"ArrowRight01Icon\\\"\\n                              phosphor=\\\"CaretRightIcon\\\"\\n                              remixicon=\\\"RiArrowRightSLine\\\"\\n                            />\\n                            <span className=\\\"sr-only\\\">Toggle</span>\\n                          </SidebarMenuAction>\\n                        </CollapsibleTrigger>\\n                        <CollapsibleContent>\\n                          <SidebarMenuSub>\\n                            {item.items.map((subItem) => (\\n                              <SidebarMenuSubItem key={subItem.title}>\\n                                <SidebarMenuSubButton asChild>\\n                                  <a href={subItem.url}>\\n                                    <span>{subItem.title}</span>\\n                                  </a>\\n                                </SidebarMenuSubButton>\\n                              </SidebarMenuSubItem>\\n                            ))}\\n                          </SidebarMenuSub>\\n                        </CollapsibleContent>\\n                      </>\\n                    ) : null}\\n                  </SidebarMenuItem>\\n                </Collapsible>\\n              ))}\\n            </SidebarMenu>\\n          </SidebarGroup>\\n          <SidebarGroup className=\\\"mt-auto\\\">\\n            <SidebarGroupContent>\\n              <SidebarMenu>\\n                {data.navSecondary.map((item) => (\\n                  <SidebarMenuItem key={item.title}>\\n                    <SidebarMenuButton asChild size=\\\"sm\\\">\\n                      <a href={item.url}>\\n                        {item.icon}\\n                        <span>{item.title}</span>\\n                      </a>\\n                    </SidebarMenuButton>\\n                  </SidebarMenuItem>\\n                ))}\\n              </SidebarMenu>\\n            </SidebarGroupContent>\\n          </SidebarGroup>\\n        </SidebarContent>\\n        <SidebarRail />\\n      </Sidebar>\\n      <SidebarInset>\\n        <header className=\\\"flex h-16 shrink-0 items-center gap-2 border-b px-4\\\">\\n          <SidebarTrigger className=\\\"-ml-1\\\" />\\n        </header>\\n        <div className=\\\"flex flex-1 flex-col gap-4 p-4\\\">\\n          <div className=\\\"grid auto-rows-min gap-4 md:grid-cols-3\\\">\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n            <div className=\\\"aspect-video rounded-xl bg-muted/50\\\" />\\n          </div>\\n          <div className=\\\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\\\" />\\n        </div>\\n      </SidebarInset>\\n    </SidebarProvider>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"tooltip\",\n    \"input\",\n    \"use-mobile\",\n    \"skeleton\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Slot } from \\\"radix-ui\\\"\\n\\nimport { useIsMobile } from \\\"@/registry/radix-vega/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport { Separator } from \\\"@/registry/radix-vega/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/registry/radix-vega/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/registry/radix-vega/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst SIDEBAR_COOKIE_NAME = \\\"sidebar_state\\\"\\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\\nconst SIDEBAR_WIDTH = \\\"16rem\\\"\\nconst SIDEBAR_WIDTH_MOBILE = \\\"18rem\\\"\\nconst SIDEBAR_WIDTH_ICON = \\\"3rem\\\"\\nconst SIDEBAR_KEYBOARD_SHORTCUT = \\\"b\\\"\\n\\ntype SidebarContextProps = {\\n  state: \\\"expanded\\\" | \\\"collapsed\\\"\\n  open: boolean\\n  setOpen: (open: boolean) => void\\n  openMobile: boolean\\n  setOpenMobile: (open: boolean) => void\\n  isMobile: boolean\\n  toggleSidebar: () => void\\n}\\n\\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\\n\\nfunction useSidebar() {\\n  const context = React.useContext(SidebarContext)\\n  if (!context) {\\n    throw new Error(\\\"useSidebar must be used within a SidebarProvider.\\\")\\n  }\\n\\n  return context\\n}\\n\\nfunction SidebarProvider({\\n  defaultOpen = true,\\n  open: openProp,\\n  onOpenChange: setOpenProp,\\n  className,\\n  style,\\n  children,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  defaultOpen?: boolean\\n  open?: boolean\\n  onOpenChange?: (open: boolean) => void\\n}) {\\n  const isMobile = useIsMobile()\\n  const [openMobile, setOpenMobile] = React.useState(false)\\n\\n  // This is the internal state of the sidebar.\\n  // We use openProp and setOpenProp for control from outside the component.\\n  const [_open, _setOpen] = React.useState(defaultOpen)\\n  const open = openProp ?? _open\\n  const setOpen = React.useCallback(\\n    (value: boolean | ((value: boolean) => boolean)) => {\\n      const openState = typeof value === \\\"function\\\" ? value(open) : value\\n      if (setOpenProp) {\\n        setOpenProp(openState)\\n      } else {\\n        _setOpen(openState)\\n      }\\n\\n      // This sets the cookie to keep the sidebar state.\\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\\n    },\\n    [setOpenProp, open]\\n  )\\n\\n  // Helper to toggle the sidebar.\\n  const toggleSidebar = React.useCallback(() => {\\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\\n  }, [isMobile, setOpen, setOpenMobile])\\n\\n  // Adds a keyboard shortcut to toggle the sidebar.\\n  React.useEffect(() => {\\n    const handleKeyDown = (event: KeyboardEvent) => {\\n      if (\\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\\n        (event.metaKey || event.ctrlKey)\\n      ) {\\n        event.preventDefault()\\n        toggleSidebar()\\n      }\\n    }\\n\\n    window.addEventListener(\\\"keydown\\\", handleKeyDown)\\n    return () => window.removeEventListener(\\\"keydown\\\", handleKeyDown)\\n  }, [toggleSidebar])\\n\\n  // We add a state so that we can do data-state=\\\"expanded\\\" or \\\"collapsed\\\".\\n  // This makes it easier to style the sidebar with Tailwind classes.\\n  const state = open ? \\\"expanded\\\" : \\\"collapsed\\\"\\n\\n  const contextValue = React.useMemo<SidebarContextProps>(\\n    () => ({\\n      state,\\n      open,\\n      setOpen,\\n      isMobile,\\n      openMobile,\\n      setOpenMobile,\\n      toggleSidebar,\\n    }),\\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\\n  )\\n\\n  return (\\n    <SidebarContext.Provider value={contextValue}>\\n      <div\\n        data-slot=\\\"sidebar-wrapper\\\"\\n        style={\\n          {\\n            \\\"--sidebar-width\\\": SIDEBAR_WIDTH,\\n            \\\"--sidebar-width-icon\\\": SIDEBAR_WIDTH_ICON,\\n            ...style,\\n          } as React.CSSProperties\\n        }\\n        className={cn(\\n          \\\"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    </SidebarContext.Provider>\\n  )\\n}\\n\\nfunction Sidebar({\\n  side = \\\"left\\\",\\n  variant = \\\"sidebar\\\",\\n  collapsible = \\\"offcanvas\\\",\\n  className,\\n  children,\\n  dir,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  side?: \\\"left\\\" | \\\"right\\\"\\n  variant?: \\\"sidebar\\\" | \\\"floating\\\" | \\\"inset\\\"\\n  collapsible?: \\\"offcanvas\\\" | \\\"icon\\\" | \\\"none\\\"\\n}) {\\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\\n\\n  if (collapsible === \\\"none\\\") {\\n    return (\\n      <div\\n        data-slot=\\\"sidebar\\\"\\n        className={cn(\\n          \\\"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n      </div>\\n    )\\n  }\\n\\n  if (isMobile) {\\n    return (\\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\\n        <SheetContent\\n          dir={dir}\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar\\\"\\n          data-mobile=\\\"true\\\"\\n          className=\\\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\\\"\\n          style={\\n            {\\n              \\\"--sidebar-width\\\": SIDEBAR_WIDTH_MOBILE,\\n            } as React.CSSProperties\\n          }\\n          side={side}\\n        >\\n          <SheetHeader className=\\\"sr-only\\\">\\n            <SheetTitle>Sidebar</SheetTitle>\\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\\n          </SheetHeader>\\n          <div className=\\\"flex h-full w-full flex-col\\\">{children}</div>\\n        </SheetContent>\\n      </Sheet>\\n    )\\n  }\\n\\n  return (\\n    <div\\n      className=\\\"group peer hidden text-sidebar-foreground md:block\\\"\\n      data-state={state}\\n      data-collapsible={state === \\\"collapsed\\\" ? collapsible : \\\"\\\"}\\n      data-variant={variant}\\n      data-side={side}\\n      data-slot=\\\"sidebar\\\"\\n    >\\n      {/* This is what handles the sidebar gap on desktop */}\\n      <div\\n        data-slot=\\\"sidebar-gap\\\"\\n        className={cn(\\n          \\\"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\\\",\\n          \\\"group-data-[collapsible=offcanvas]:w-0\\\",\\n          \\\"group-data-[side=right]:rotate-180\\\",\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\\\"\\n        )}\\n      />\\n      <div\\n        data-slot=\\\"sidebar-container\\\"\\n        data-side={side}\\n        className={cn(\\n          \\\"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\\\",\\n          // Adjust the padding for floating and inset variants.\\n          variant === \\\"floating\\\" || variant === \\\"inset\\\"\\n            ? \\\"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\\\"\\n            : \\\"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        <div\\n          data-sidebar=\\\"sidebar\\\"\\n          data-slot=\\\"sidebar-inner\\\"\\n          className=\\\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\\\"\\n        >\\n          {children}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nfunction SidebarTrigger({\\n  className,\\n  onClick,\\n  ...props\\n}: React.ComponentProps<typeof Button>) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <Button\\n      data-sidebar=\\\"trigger\\\"\\n      data-slot=\\\"sidebar-trigger\\\"\\n      variant=\\\"ghost\\\"\\n      size=\\\"icon-sm\\\"\\n      className={cn(className)}\\n      onClick={(event) => {\\n        onClick?.(event)\\n        toggleSidebar()\\n      }}\\n      {...props}\\n    >\\n      <IconPlaceholder\\n        lucide=\\\"PanelLeftIcon\\\"\\n        tabler=\\\"IconLayoutSidebar\\\"\\n        hugeicons=\\\"SidebarLeftIcon\\\"\\n        phosphor=\\\"SidebarIcon\\\"\\n        remixicon=\\\"RiSideBarLine\\\"\\n        className=\\\"cn-rtl-flip\\\"\\n      />\\n      <span className=\\\"sr-only\\\">Toggle Sidebar</span>\\n    </Button>\\n  )\\n}\\n\\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\\\"button\\\">) {\\n  const { toggleSidebar } = useSidebar()\\n\\n  return (\\n    <button\\n      data-sidebar=\\\"rail\\\"\\n      data-slot=\\\"sidebar-rail\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n      tabIndex={-1}\\n      onClick={toggleSidebar}\\n      title=\\\"Toggle Sidebar\\\"\\n      className={cn(\\n        \\\"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\\\",\\n        \\\"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\\\",\\n        \\\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\\\",\\n        \\\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\\\",\\n        \\\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\\\",\\n        \\\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\\\"main\\\">) {\\n  return (\\n    <main\\n      data-slot=\\\"sidebar-inset\\\"\\n      className={cn(\\n        \\\"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarInput({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Input>) {\\n  return (\\n    <Input\\n      data-slot=\\\"sidebar-input\\\"\\n      data-sidebar=\\\"input\\\"\\n      className={cn(\\\"h-8 w-full bg-background shadow-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-header\\\"\\n      data-sidebar=\\\"header\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-footer\\\"\\n      data-sidebar=\\\"footer\\\"\\n      className={cn(\\\"flex flex-col gap-2 p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarSeparator({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof Separator>) {\\n  return (\\n    <Separator\\n      data-slot=\\\"sidebar-separator\\\"\\n      data-sidebar=\\\"separator\\\"\\n      className={cn(\\\"mx-2 w-auto bg-sidebar-border\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-content\\\"\\n      data-sidebar=\\\"content\\\"\\n      className={cn(\\n        \\\"no-scrollbar flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group\\\"\\n      data-sidebar=\\\"group\\\"\\n      className={cn(\\\"relative flex w-full min-w-0 flex-col p-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupLabel({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupAction({\\n  className,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarGroupContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-group-content\\\"\\n      data-sidebar=\\\"group-content\\\"\\n      className={cn(\\\"w-full text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu\\\"\\n      data-sidebar=\\\"menu\\\"\\n      className={cn(\\\"flex w-full min-w-0 flex-col gap-1\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-item\\\"\\n      data-sidebar=\\\"menu-item\\\"\\n      className={cn(\\\"group/menu-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst sidebarMenuButtonVariants = cva(\\n  \\\"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\\\",\\n        outline:\\n          \\\"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\\\",\\n      },\\n      size: {\\n        default: \\\"h-8 text-sm\\\",\\n        sm: \\\"h-7 text-xs\\\",\\n        lg: \\\"h-12 text-sm group-data-[collapsible=icon]:p-0!\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction SidebarMenuButton({\\n  asChild = false,\\n  isActive = false,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  tooltip,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  isActive?: boolean\\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n  const { isMobile, state } = useSidebar()\\n\\n  const button = (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-button\\\"\\n      data-sidebar=\\\"menu-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\\n      {...props}\\n    />\\n  )\\n\\n  if (!tooltip) {\\n    return button\\n  }\\n\\n  if (typeof tooltip === \\\"string\\\") {\\n    tooltip = {\\n      children: tooltip,\\n    }\\n  }\\n\\n  return (\\n    <Tooltip>\\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\\n      <TooltipContent\\n        side=\\\"right\\\"\\n        align=\\\"center\\\"\\n        hidden={state !== \\\"collapsed\\\" || isMobile}\\n        {...tooltip}\\n      />\\n    </Tooltip>\\n  )\\n}\\n\\nfunction SidebarMenuAction({\\n  className,\\n  asChild = false,\\n  showOnHover = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> & {\\n  asChild?: boolean\\n  showOnHover?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\\\",\\n        showOnHover &&\\n          \\\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuBadge({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-badge\\\"\\n      data-sidebar=\\\"menu-badge\\\"\\n      className={cn(\\n        \\\"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSkeleton({\\n  className,\\n  showIcon = false,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\"> & {\\n  showIcon?: boolean\\n}) {\\n  // Random width between 50 to 90%.\\n  const [width] = React.useState(() => {\\n    return `${Math.floor(Math.random() * 40) + 50}%`\\n  })\\n\\n  return (\\n    <div\\n      data-slot=\\\"sidebar-menu-skeleton\\\"\\n      data-sidebar=\\\"menu-skeleton\\\"\\n      className={cn(\\\"flex h-8 items-center gap-2 rounded-md px-2\\\", className)}\\n      {...props}\\n    >\\n      {showIcon && (\\n        <Skeleton\\n          className=\\\"size-4 rounded-md\\\"\\n          data-sidebar=\\\"menu-skeleton-icon\\\"\\n        />\\n      )}\\n      <Skeleton\\n        className=\\\"h-4 max-w-(--skeleton-width) flex-1\\\"\\n        data-sidebar=\\\"menu-skeleton-text\\\"\\n        style={\\n          {\\n            \\\"--skeleton-width\\\": width,\\n          } as React.CSSProperties\\n        }\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\\\"ul\\\">) {\\n  return (\\n    <ul\\n      data-slot=\\\"sidebar-menu-sub\\\"\\n      data-sidebar=\\\"menu-sub\\\"\\n      className={cn(\\n        \\\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubItem({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"li\\\">) {\\n  return (\\n    <li\\n      data-slot=\\\"sidebar-menu-sub-item\\\"\\n      data-sidebar=\\\"menu-sub-item\\\"\\n      className={cn(\\\"group/menu-sub-item relative\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SidebarMenuSubButton({\\n  asChild = false,\\n  size = \\\"md\\\",\\n  isActive = false,\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"a\\\"> & {\\n  asChild?: boolean\\n  size?: \\\"sm\\\" | \\\"md\\\"\\n  isActive?: boolean\\n}) {\\n  const Comp = asChild ? Slot.Root : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-sub-button\\\"\\n      data-sidebar=\\\"menu-sub-button\\\"\\n      data-size={size}\\n      data-active={isActive}\\n      className={cn(\\n        \\\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Sidebar,\\n  SidebarContent,\\n  SidebarFooter,\\n  SidebarGroup,\\n  SidebarGroupAction,\\n  SidebarGroupContent,\\n  SidebarGroupLabel,\\n  SidebarHeader,\\n  SidebarInput,\\n  SidebarInset,\\n  SidebarMenu,\\n  SidebarMenuAction,\\n  SidebarMenuBadge,\\n  SidebarMenuButton,\\n  SidebarMenuItem,\\n  SidebarMenuSkeleton,\\n  SidebarMenuSub,\\n  SidebarMenuSubButton,\\n  SidebarMenuSubItem,\\n  SidebarProvider,\\n  SidebarRail,\\n  SidebarSeparator,\\n  SidebarTrigger,\\n  useSidebar,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/signup-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-01\",\n  \"title\": \"Signup 01\",\n  \"description\": \"A simple signup form.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-01/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-vega/blocks/signup-01/components/signup-form\\\"\\n\\nexport default function Page() {\\n  return (\\n    <div className=\\\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-01/components/signup-form.tsx\",\n      \"content\": \"import { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\n\\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\\n  return (\\n    <Card {...props}>\\n      <CardHeader>\\n        <CardTitle>Create an account</CardTitle>\\n        <CardDescription>\\n          Enter your information below to create your account\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <form>\\n          <FieldGroup>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n              <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"m@example.com\\\"\\n                required\\n              />\\n              <FieldDescription>\\n                We&apos;ll use this to contact you. We will not share your email\\n                with anyone else.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n              <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>\\n                Must be at least 8 characters long.\\n              </FieldDescription>\\n            </Field>\\n            <Field>\\n              <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                Confirm Password\\n              </FieldLabel>\\n              <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n              <FieldDescription>Please confirm your password.</FieldDescription>\\n            </Field>\\n            <FieldGroup>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  Sign up with Google\\n                </Button>\\n                <FieldDescription className=\\\"px-6 text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </FieldGroup>\\n        </form>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/signup-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-02\",\n  \"title\": \"Signup 02\",\n  \"description\": \"A two column signup page with a cover image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-vega/blocks/signup-02/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"grid min-h-svh lg:grid-cols-2\\\">\\n      <div className=\\\"flex flex-col gap-4 p-6 md:p-10\\\">\\n        <div className=\\\"flex justify-center gap-2 md:justify-start\\\">\\n          <a href=\\\"#\\\" className=\\\"flex items-center gap-2 font-medium\\\">\\n            <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n              <IconPlaceholder\\n                lucide=\\\"GalleryVerticalEndIcon\\\"\\n                tabler=\\\"IconLayoutRows\\\"\\n                hugeicons=\\\"LayoutBottomIcon\\\"\\n                phosphor=\\\"RowsIcon\\\"\\n                remixicon=\\\"RiGalleryLine\\\"\\n                className=\\\"size-4\\\"\\n              />\\n            </div>\\n            Acme Inc.\\n          </a>\\n        </div>\\n        <div className=\\\"flex flex-1 items-center justify-center\\\">\\n          <div className=\\\"w-full max-w-xs\\\">\\n            <SignupForm />\\n          </div>\\n        </div>\\n      </div>\\n      <div className=\\\"relative hidden bg-muted lg:block\\\">\\n        <img\\n          src=\\\"/placeholder.svg\\\"\\n          alt=\\\"Image\\\"\\n          className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-02/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"form\\\">) {\\n  return (\\n    <form className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <FieldGroup>\\n        <div className=\\\"flex flex-col items-center gap-1 text-center\\\">\\n          <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n          <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n            Fill in the form below to create your account\\n          </p>\\n        </div>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n          <Input\\n            id=\\\"name\\\"\\n            type=\\\"text\\\"\\n            placeholder=\\\"John Doe\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n          <Input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            placeholder=\\\"m@example.com\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            We&apos;ll use this to contact you. We will not share your email\\n            with anyone else.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n          <Input\\n            id=\\\"password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>\\n            Must be at least 8 characters long.\\n          </FieldDescription>\\n        </Field>\\n        <Field>\\n          <FieldLabel htmlFor=\\\"confirm-password\\\">Confirm Password</FieldLabel>\\n          <Input\\n            id=\\\"confirm-password\\\"\\n            type=\\\"password\\\"\\n            required\\n            className=\\\"bg-background\\\"\\n          />\\n          <FieldDescription>Please confirm your password.</FieldDescription>\\n        </Field>\\n        <Field>\\n          <Button type=\\\"submit\\\">Create Account</Button>\\n        </Field>\\n        <FieldSeparator>Or continue with</FieldSeparator>\\n        <Field>\\n          <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n              <path\\n                d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"\\n                fill=\\\"currentColor\\\"\\n              />\\n            </svg>\\n            Sign up with GitHub\\n          </Button>\\n          <FieldDescription className=\\\"px-6 text-center\\\">\\n            Already have an account? <a href=\\\"#\\\">Sign in</a>\\n          </FieldDescription>\\n        </Field>\\n      </FieldGroup>\\n    </form>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/signup-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-03\",\n  \"title\": \"Signup 03\",\n  \"description\": \"A signup page with a muted background color.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SignupForm } from \\\"@/registry/radix-vega/blocks/signup-03/components/signup-form\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"flex w-full max-w-sm flex-col gap-6\\\">\\n        <a href=\\\"#\\\" className=\\\"flex items-center gap-2 self-center font-medium\\\">\\n          <div className=\\\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\\\">\\n            <IconPlaceholder\\n              lucide=\\\"GalleryVerticalEndIcon\\\"\\n              tabler=\\\"IconLayoutRows\\\"\\n              hugeicons=\\\"LayoutBottomIcon\\\"\\n              phosphor=\\\"RowsIcon\\\"\\n              remixicon=\\\"RiGalleryLine\\\"\\n              className=\\\"size-4\\\"\\n            />\\n          </div>\\n          Acme Inc.\\n        </a>\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-03/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card>\\n        <CardHeader className=\\\"text-center\\\">\\n          <CardTitle className=\\\"text-xl\\\">Create your account</CardTitle>\\n          <CardDescription>\\n            Enter your email below to create your account\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <form>\\n            <FieldGroup>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"name\\\">Full Name</FieldLabel>\\n                <Input id=\\\"name\\\" type=\\\"text\\\" placeholder=\\\"John Doe\\\" required />\\n              </Field>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n                <FieldDescription className=\\\"text-center\\\">\\n                  Already have an account? <a href=\\\"#\\\">Sign in</a>\\n                </FieldDescription>\\n              </Field>\\n            </FieldGroup>\\n          </form>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/signup-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-04\",\n  \"title\": \"Signup 04\",\n  \"description\": \"A signup page with form and image.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"field\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-04/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-vega/blocks/signup-04/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm md:max-w-4xl\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-04/components/signup-form.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/registry/radix-vega/ui/card\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <Card className=\\\"overflow-hidden p-0\\\">\\n        <CardContent className=\\\"grid p-0 md:grid-cols-2\\\">\\n          <form className=\\\"p-6 md:p-8\\\">\\n            <FieldGroup>\\n              <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n                <h1 className=\\\"text-2xl font-bold\\\">Create your account</h1>\\n                <p className=\\\"text-sm text-balance text-muted-foreground\\\">\\n                  Enter your email below to create your account\\n                </p>\\n              </div>\\n              <Field>\\n                <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"m@example.com\\\"\\n                  required\\n                />\\n                <FieldDescription>\\n                  We&apos;ll use this to contact you. We will not share your\\n                  email with anyone else.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Field className=\\\"grid grid-cols-2 gap-4\\\">\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"password\\\">Password</FieldLabel>\\n                    <Input id=\\\"password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                  <Field>\\n                    <FieldLabel htmlFor=\\\"confirm-password\\\">\\n                      Confirm Password\\n                    </FieldLabel>\\n                    <Input id=\\\"confirm-password\\\" type=\\\"password\\\" required />\\n                  </Field>\\n                </Field>\\n                <FieldDescription>\\n                  Must be at least 8 characters long.\\n                </FieldDescription>\\n              </Field>\\n              <Field>\\n                <Button type=\\\"submit\\\">Create Account</Button>\\n              </Field>\\n              <FieldSeparator className=\\\"*:data-[slot=field-separator-content]:bg-card\\\">\\n                Or continue with\\n              </FieldSeparator>\\n              <Field className=\\\"grid grid-cols-3 gap-4\\\">\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Apple</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Google</span>\\n                </Button>\\n                <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                    <path\\n                      d=\\\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\\\"\\n                      fill=\\\"currentColor\\\"\\n                    />\\n                  </svg>\\n                  <span className=\\\"sr-only\\\">Sign up with Meta</span>\\n                </Button>\\n              </Field>\\n              <FieldDescription className=\\\"text-center\\\">\\n                Already have an account? <a href=\\\"#\\\">Sign in</a>\\n              </FieldDescription>\\n            </FieldGroup>\\n          </form>\\n          <div className=\\\"relative hidden bg-muted md:block\\\">\\n            <img\\n              src=\\\"/placeholder.svg\\\"\\n              alt=\\\"Image\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\\\"\\n            />\\n          </div>\\n        </CardContent>\\n      </Card>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/signup-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"signup-05\",\n  \"title\": \"Signup 05\",\n  \"description\": \"A simple signup form with social providers.\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-05/page.tsx\",\n      \"content\": \"import { SignupForm } from \\\"@/registry/radix-vega/blocks/signup-05/components/signup-form\\\"\\n\\nexport default function SignupPage() {\\n  return (\\n    <div className=\\\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\\\">\\n      <div className=\\\"w-full max-w-sm\\\">\\n        <SignupForm />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/signup/page.tsx\"\n    },\n    {\n      \"path\": \"registry/radix-vega/blocks/signup-05/components/signup-form.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldGroup,\\n  FieldLabel,\\n  FieldSeparator,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport function SignupForm({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div className={cn(\\\"flex flex-col gap-6\\\", className)} {...props}>\\n      <form>\\n        <FieldGroup>\\n          <div className=\\\"flex flex-col items-center gap-2 text-center\\\">\\n            <a\\n              href=\\\"#\\\"\\n              className=\\\"flex flex-col items-center gap-2 font-medium\\\"\\n            >\\n              <div className=\\\"flex size-8 items-center justify-center rounded-md\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"GalleryVerticalEndIcon\\\"\\n                  tabler=\\\"IconLayoutRows\\\"\\n                  hugeicons=\\\"LayoutBottomIcon\\\"\\n                  phosphor=\\\"RowsIcon\\\"\\n                  remixicon=\\\"RiGalleryLine\\\"\\n                  className=\\\"size-6\\\"\\n                />\\n              </div>\\n              <span className=\\\"sr-only\\\">Acme Inc.</span>\\n            </a>\\n            <h1 className=\\\"text-xl font-bold\\\">Welcome to Acme Inc.</h1>\\n            <FieldDescription>\\n              Already have an account? <a href=\\\"#\\\">Sign in</a>\\n            </FieldDescription>\\n          </div>\\n          <Field>\\n            <FieldLabel htmlFor=\\\"email\\\">Email</FieldLabel>\\n            <Input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"m@example.com\\\"\\n              required\\n            />\\n          </Field>\\n          <Field>\\n            <Button type=\\\"submit\\\">Create Account</Button>\\n          </Field>\\n          <FieldSeparator>Or</FieldSeparator>\\n          <Field className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Apple\\n            </Button>\\n            <Button variant=\\\"outline\\\" type=\\\"button\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\">\\n                <path\\n                  d=\\\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\\\"\\n                  fill=\\\"currentColor\\\"\\n                />\\n              </svg>\\n              Continue with Google\\n            </Button>\\n          </Field>\\n        </FieldGroup>\\n      </form>\\n      <FieldDescription className=\\\"px-6 text-center\\\">\\n        By clicking continue, you agree to our <a href=\\\"#\\\">Terms of Service</a>{\\\" \\\"}\\n        and <a href=\\\"#\\\">Privacy Policy</a>.\\n      </FieldDescription>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:component\"\n    }\n  ],\n  \"categories\": [\n    \"authentication\",\n    \"signup\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/skeleton-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton-example\",\n  \"title\": \"Skeleton\",\n  \"registryDependencies\": [\n    \"skeleton\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/skeleton-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/registry/radix-vega/ui/card\\\"\\nimport { Skeleton } from \\\"@/registry/radix-vega/ui/skeleton\\\"\\n\\nexport default function SkeletonExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SkeletonAvatar />\\n      <SkeletonCard />\\n      <SkeletonText />\\n      <SkeletonForm />\\n      <SkeletonTable />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SkeletonAvatar() {\\n  return (\\n    <Example title=\\\"Avatar\\\">\\n      <div className=\\\"flex w-full items-center gap-4\\\">\\n        <Skeleton className=\\\"size-10 shrink-0 rounded-full\\\" />\\n        <div className=\\\"grid gap-2\\\">\\n          <Skeleton className=\\\"h-4 w-[150px]\\\" />\\n          <Skeleton className=\\\"h-4 w-[100px]\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonCard() {\\n  return (\\n    <Example title=\\\"Card\\\">\\n      <Card className=\\\"w-full\\\">\\n        <CardHeader>\\n          <Skeleton className=\\\"h-4 w-2/3\\\" />\\n          <Skeleton className=\\\"h-4 w-1/2\\\" />\\n        </CardHeader>\\n        <CardContent>\\n          <Skeleton className=\\\"aspect-square w-full\\\" />\\n        </CardContent>\\n      </Card>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonText() {\\n  return (\\n    <Example title=\\\"Text\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-full\\\" />\\n        <Skeleton className=\\\"h-4 w-3/4\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonForm() {\\n  return (\\n    <Example title=\\\"Form\\\">\\n      <div className=\\\"flex w-full flex-col gap-7\\\">\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <div className=\\\"flex flex-col gap-3\\\">\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-10 w-full\\\" />\\n        </div>\\n        <Skeleton className=\\\"h-9 w-24\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SkeletonTable() {\\n  return (\\n    <Example title=\\\"Table\\\">\\n      <div className=\\\"flex w-full flex-col gap-2\\\">\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n        <div className=\\\"flex gap-4\\\">\\n          <Skeleton className=\\\"h-4 flex-1\\\" />\\n          <Skeleton className=\\\"h-4 w-24\\\" />\\n          <Skeleton className=\\\"h-4 w-20\\\" />\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/skeleton.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Skeleton({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"skeleton\\\"\\n      className={cn(\\\"animate-pulse rounded-md bg-muted\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/slider-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider-example\",\n  \"title\": \"Slider\",\n  \"registryDependencies\": [\n    \"label\",\n    \"slider\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/slider-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport { Slider } from \\\"@/registry/radix-vega/ui/slider\\\"\\n\\nexport default function SliderExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SliderBasic />\\n      <SliderRange />\\n      <SliderMultiple />\\n      <SliderVertical />\\n      <SliderControlled />\\n      <SliderDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SliderBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderRange() {\\n  return (\\n    <Example title=\\\"Range\\\">\\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderMultiple() {\\n  return (\\n    <Example title=\\\"Multiple Thumbs\\\">\\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\\n    </Example>\\n  )\\n}\\n\\nfunction SliderVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Slider\\n          defaultValue={[50]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n        <Slider\\n          defaultValue={[25]}\\n          max={100}\\n          step={1}\\n          orientation=\\\"vertical\\\"\\n          className=\\\"h-40\\\"\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderControlled() {\\n  const [value, setValue] = React.useState([0.3, 0.7])\\n\\n  return (\\n    <Example title=\\\"Controlled\\\">\\n      <div className=\\\"grid w-full gap-3\\\">\\n        <div className=\\\"flex items-center justify-between gap-2\\\">\\n          <Label htmlFor=\\\"slider-demo-temperature\\\">Temperature</Label>\\n          <span className=\\\"text-sm text-muted-foreground\\\">\\n            {value.join(\\\", \\\")}\\n          </span>\\n        </div>\\n        <Slider\\n          id=\\\"slider-demo-temperature\\\"\\n          value={value}\\n          onValueChange={setValue}\\n          min={0}\\n          max={1}\\n          step={0.1}\\n        />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SliderDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/slider.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slider as SliderPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Slider({\\n  className,\\n  defaultValue,\\n  value,\\n  min = 0,\\n  max = 100,\\n  ...props\\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\\n  const _values = React.useMemo(\\n    () =>\\n      Array.isArray(value)\\n        ? value\\n        : Array.isArray(defaultValue)\\n          ? defaultValue\\n          : [min, max],\\n    [value, defaultValue, min, max]\\n  )\\n\\n  return (\\n    <SliderPrimitive.Root\\n      data-slot=\\\"slider\\\"\\n      defaultValue={defaultValue}\\n      value={value}\\n      min={min}\\n      max={max}\\n      className={cn(\\n        \\\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SliderPrimitive.Track\\n        data-slot=\\\"slider-track\\\"\\n        className=\\\"relative grow overflow-hidden rounded-full bg-muted data-horizontal:h-1.5 data-horizontal:w-full data-vertical:h-full data-vertical:w-1.5\\\"\\n      >\\n        <SliderPrimitive.Range\\n          data-slot=\\\"slider-range\\\"\\n          className=\\\"absolute bg-primary select-none data-horizontal:h-full data-vertical:w-full\\\"\\n        />\\n      </SliderPrimitive.Track>\\n      {Array.from({ length: _values.length }, (_, index) => (\\n        <SliderPrimitive.Thumb\\n          data-slot=\\\"slider-thumb\\\"\\n          key={index}\\n          className=\\\"block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\\\"\\n        />\\n      ))}\\n    </SliderPrimitive.Root>\\n  )\\n}\\n\\nexport { Slider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/slider\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/slider.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sonner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner-example\",\n  \"title\": \"Sonner\",\n  \"registryDependencies\": [\n    \"sonner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/sonner-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { toast } from \\\"sonner\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\n\\nexport default function SonnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SonnerBasic />\\n      <SonnerWithDescription />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SonnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() => toast(\\\"Event has been created\\\")}\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\\nfunction SonnerWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\" className=\\\"items-center justify-center\\\">\\n      <Button\\n        onClick={() =>\\n          toast(\\\"Event has been created\\\", {\\n            description: \\\"Monday, January 3rd at 6:00pm\\\",\\n          })\\n        }\\n        variant=\\\"outline\\\"\\n        className=\\\"w-fit\\\"\\n      >\\n        Show Toast\\n      </Button>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\",\n    \"next-themes\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/sonner.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useTheme } from \\\"next-themes\\\"\\nimport { Toaster as Sonner, type ToasterProps } from \\\"sonner\\\"\\n\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className=\\\"toaster group\\\"\\n      icons={{\\n        success: (\\n          <IconPlaceholder\\n            lucide=\\\"CircleCheckIcon\\\"\\n            tabler=\\\"IconCircleCheck\\\"\\n            hugeicons=\\\"CheckmarkCircle02Icon\\\"\\n            phosphor=\\\"CheckCircleIcon\\\"\\n            remixicon=\\\"RiCheckboxCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        info: (\\n          <IconPlaceholder\\n            lucide=\\\"InfoIcon\\\"\\n            tabler=\\\"IconInfoCircle\\\"\\n            hugeicons=\\\"InformationCircleIcon\\\"\\n            phosphor=\\\"InfoIcon\\\"\\n            remixicon=\\\"RiInformationLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        warning: (\\n          <IconPlaceholder\\n            lucide=\\\"TriangleAlertIcon\\\"\\n            tabler=\\\"IconAlertTriangle\\\"\\n            hugeicons=\\\"Alert02Icon\\\"\\n            phosphor=\\\"WarningIcon\\\"\\n            remixicon=\\\"RiErrorWarningLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        error: (\\n          <IconPlaceholder\\n            lucide=\\\"OctagonXIcon\\\"\\n            tabler=\\\"IconAlertOctagon\\\"\\n            hugeicons=\\\"MultiplicationSignCircleIcon\\\"\\n            phosphor=\\\"XCircleIcon\\\"\\n            remixicon=\\\"RiCloseCircleLine\\\"\\n            className=\\\"size-4\\\"\\n          />\\n        ),\\n        loading: (\\n          <IconPlaceholder\\n            lucide=\\\"Loader2Icon\\\"\\n            tabler=\\\"IconLoader\\\"\\n            hugeicons=\\\"Loading03Icon\\\"\\n            phosphor=\\\"SpinnerIcon\\\"\\n            remixicon=\\\"RiLoaderLine\\\"\\n            className=\\\"size-4 animate-spin\\\"\\n          />\\n        ),\\n      }}\\n      style={\\n        {\\n          \\\"--normal-bg\\\": \\\"var(--popover)\\\",\\n          \\\"--normal-text\\\": \\\"var(--popover-foreground)\\\",\\n          \\\"--normal-border\\\": \\\"var(--border)\\\",\\n          \\\"--border-radius\\\": \\\"var(--radius)\\\",\\n        } as React.CSSProperties\\n      }\\n      toastOptions={{\\n        classNames: {\\n          toast: \\\"cn-toast\\\",\\n        },\\n      }}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/sonner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n      \"api\": \"https://sonner.emilkowal.ski\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/spinner-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner-example\",\n  \"title\": \"Spinner\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"empty\",\n    \"field\",\n    \"input-group\",\n    \"spinner\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/spinner-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Badge } from \\\"@/registry/radix-vega/ui/badge\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  Empty,\\n  EmptyContent,\\n  EmptyDescription,\\n  EmptyHeader,\\n  EmptyMedia,\\n  EmptyTitle,\\n} from \\\"@/registry/radix-vega/ui/empty\\\"\\nimport { Field, FieldLabel } from \\\"@/registry/radix-vega/ui/field\\\"\\nimport {\\n  InputGroup,\\n  InputGroupAddon,\\n  InputGroupInput,\\n} from \\\"@/registry/radix-vega/ui/input-group\\\"\\nimport { Spinner } from \\\"@/registry/radix-vega/ui/spinner\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function SpinnerExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SpinnerBasic />\\n      <SpinnerInButtons />\\n      <SpinnerInBadges />\\n      <SpinnerInInputGroup />\\n      <SpinnerInEmpty />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SpinnerBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex items-center gap-6\\\">\\n        <Spinner />\\n        <Spinner className=\\\"size-6\\\" />\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInButtons() {\\n  return (\\n    <Example title=\\\"In Buttons\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-4\\\">\\n        <Button>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Submit\\n        </Button>\\n        <Button disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Disabled\\n        </Button>\\n        <Button variant=\\\"outline\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" /> Outline\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\" disabled>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          <span className=\\\"sr-only\\\">Loading...</span>\\n        </Button>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInBadges() {\\n  return (\\n    <Example title=\\\"In Badges\\\" className=\\\"items-center justify-center\\\">\\n      <div className=\\\"flex flex-wrap items-center justify-center gap-4\\\">\\n        <Badge>\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"secondary\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"destructive\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n        <Badge variant=\\\"outline\\\">\\n          <Spinner data-icon=\\\"inline-start\\\" />\\n          Badge\\n        </Badge>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInInputGroup() {\\n  return (\\n    <Example title=\\\"In Input Group\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"input-group-spinner\\\">Input Group</FieldLabel>\\n        <InputGroup>\\n          <InputGroupInput id=\\\"input-group-spinner\\\" />\\n          <InputGroupAddon>\\n            <Spinner />\\n          </InputGroupAddon>\\n        </InputGroup>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SpinnerInEmpty() {\\n  return (\\n    <Example title=\\\"In Empty State\\\" containerClassName=\\\"lg:col-span-full\\\">\\n      <Empty className=\\\"min-h-[300px]\\\">\\n        <EmptyHeader>\\n          <EmptyMedia variant=\\\"icon\\\">\\n            <Spinner />\\n          </EmptyMedia>\\n          <EmptyTitle>No projects yet</EmptyTitle>\\n          <EmptyDescription>\\n            You haven&apos;t created any projects yet. Get started by creating\\n            your first project.\\n          </EmptyDescription>\\n        </EmptyHeader>\\n        <EmptyContent>\\n          <div className=\\\"flex gap-2\\\">\\n            <Button asChild>\\n              <a href=\\\"#\\\">Create project</a>\\n            </Button>\\n            <Button variant=\\\"outline\\\">Import project</Button>\\n          </div>\\n          <Button variant=\\\"link\\\" asChild className=\\\"text-muted-foreground\\\">\\n            <a href=\\\"#\\\">\\n              Learn more{\\\" \\\"}\\n              <IconPlaceholder\\n                lucide=\\\"ArrowRightIcon\\\"\\n                tabler=\\\"IconArrowRight\\\"\\n                hugeicons=\\\"ArrowRight02Icon\\\"\\n                phosphor=\\\"ArrowRightIcon\\\"\\n                remixicon=\\\"RiArrowRightLine\\\"\\n              />\\n            </a>\\n          </Button>\\n        </EmptyContent>\\n      </Empty>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/spinner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"spinner\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/spinner.tsx\",\n      \"content\": \"import { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nfunction Spinner({ className, ...props }: React.ComponentProps<\\\"svg\\\">) {\\n  return (\\n    <IconPlaceholder\\n      lucide=\\\"Loader2Icon\\\"\\n      tabler=\\\"IconLoader\\\"\\n      hugeicons=\\\"Loading03Icon\\\"\\n      phosphor=\\\"SpinnerIcon\\\"\\n      remixicon=\\\"RiLoaderLine\\\"\\n      role=\\\"status\\\"\\n      aria-label=\\\"Loading\\\"\\n      className={cn(\\\"size-4 animate-spin\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Spinner }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/spinner\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"style\",\n  \"dependencies\": [\n    \"class-variance-authority\",\n    \"lucide-react\",\n    \"radix-ui\"\n  ],\n  \"devDependencies\": [\n    \"tw-animate-css\",\n    \"shadcn\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"css\": {\n    \"@import \\\"tw-animate-css\\\"\": {},\n    \"@import \\\"shadcn/tailwind.css\\\"\": {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {}\n      },\n      \"body\": {\n        \"@apply bg-background text-foreground\": {}\n      }\n    }\n  },\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/switch-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch-example\",\n  \"title\": \"Switch\",\n  \"registryDependencies\": [\n    \"field\",\n    \"label\",\n    \"switch\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/switch-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldContent,\\n  FieldDescription,\\n  FieldLabel,\\n  FieldTitle,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Label } from \\\"@/registry/radix-vega/ui/label\\\"\\nimport { Switch } from \\\"@/registry/radix-vega/ui/switch\\\"\\n\\nexport default function SwitchExample() {\\n  return (\\n    <ExampleWrapper>\\n      <SwitchBasic />\\n      <SwitchWithDescription />\\n      <SwitchDisabled />\\n      <SwitchSizes />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction SwitchBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Field orientation=\\\"horizontal\\\">\\n        <Switch id=\\\"switch-basic\\\" />\\n        <FieldLabel htmlFor=\\\"switch-basic\\\">Airplane Mode</FieldLabel>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Switch id=\\\"switch-bluetooth\\\" defaultChecked />\\n        <Label htmlFor=\\\"switch-bluetooth\\\">Bluetooth</Label>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <FieldLabel htmlFor=\\\"switch-focus-mode\\\">\\n        <Field orientation=\\\"horizontal\\\">\\n          <FieldContent>\\n            <FieldTitle>Share across devices</FieldTitle>\\n            <FieldDescription>\\n              Focus is shared across devices, and turns off when you leave the\\n              app.\\n            </FieldDescription>\\n          </FieldContent>\\n          <Switch id=\\\"switch-focus-mode\\\" />\\n        </Field>\\n      </FieldLabel>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-unchecked\\\" disabled />\\n          <Label htmlFor=\\\"switch-disabled-unchecked\\\">\\n            Disabled (Unchecked)\\n          </Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-disabled-checked\\\" defaultChecked disabled />\\n          <Label htmlFor=\\\"switch-disabled-checked\\\">Disabled (Checked)</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction SwitchSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-12\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-sm\\\" size=\\\"sm\\\" />\\n          <Label htmlFor=\\\"switch-size-sm\\\">Small</Label>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Switch id=\\\"switch-size-default\\\" size=\\\"default\\\" />\\n          <Label htmlFor=\\\"switch-size-default\\\">Default</Label>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Switch as SwitchPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\\n  size?: \\\"sm\\\" | \\\"default\\\"\\n}) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      data-size={size}\\n      className={cn(\\n        \\\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className=\\\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\\\"\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/switch\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/switch.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/table-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table-example\",\n  \"title\": \"Table\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"input\",\n    \"select\",\n    \"table\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/table-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCaption,\\n  TableCell,\\n  TableFooter,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/registry/radix-vega/ui/table\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nconst invoices = [\\n  {\\n    invoice: \\\"INV001\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$250.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV002\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$150.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV003\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$350.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV004\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$450.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n  {\\n    invoice: \\\"INV005\\\",\\n    paymentStatus: \\\"Paid\\\",\\n    totalAmount: \\\"$550.00\\\",\\n    paymentMethod: \\\"PayPal\\\",\\n  },\\n  {\\n    invoice: \\\"INV006\\\",\\n    paymentStatus: \\\"Pending\\\",\\n    totalAmount: \\\"$200.00\\\",\\n    paymentMethod: \\\"Bank Transfer\\\",\\n  },\\n  {\\n    invoice: \\\"INV007\\\",\\n    paymentStatus: \\\"Unpaid\\\",\\n    totalAmount: \\\"$300.00\\\",\\n    paymentMethod: \\\"Credit Card\\\",\\n  },\\n]\\n\\nexport default function TableExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TableBasic />\\n      <TableWithFooter />\\n      <TableSimple />\\n      <TableWithBadges />\\n      <TableWithActions />\\n      <TableWithSelect />\\n      <TableWithInput />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TableBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithFooter() {\\n  return (\\n    <Example title=\\\"With Footer\\\">\\n      <Table>\\n        <TableCaption>A list of your recent invoices.</TableCaption>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead className=\\\"w-[100px]\\\">Invoice</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead>Method</TableHead>\\n            <TableHead className=\\\"text-right\\\">Amount</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          {invoices.slice(0, 3).map((invoice) => (\\n            <TableRow key={invoice.invoice}>\\n              <TableCell className=\\\"font-medium\\\">{invoice.invoice}</TableCell>\\n              <TableCell>{invoice.paymentStatus}</TableCell>\\n              <TableCell>{invoice.paymentMethod}</TableCell>\\n              <TableCell className=\\\"text-right\\\">\\n                {invoice.totalAmount}\\n              </TableCell>\\n            </TableRow>\\n          ))}\\n        </TableBody>\\n        <TableFooter>\\n          <TableRow>\\n            <TableCell colSpan={3}>Total</TableCell>\\n            <TableCell className=\\\"text-right\\\">$2,500.00</TableCell>\\n          </TableRow>\\n        </TableFooter>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableSimple() {\\n  return (\\n    <Example title=\\\"Simple\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Name</TableHead>\\n            <TableHead>Email</TableHead>\\n            <TableHead className=\\\"text-right\\\">Role</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Sarah Chen</TableCell>\\n            <TableCell>sarah.chen@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">Admin</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Marc Rodriguez</TableCell>\\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Emily Watson</TableCell>\\n            <TableCell>emily.watson@acme.com</TableCell>\\n            <TableCell className=\\\"text-right\\\">User</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithBadges() {\\n  return (\\n    <Example title=\\\"With Badges\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Status</TableHead>\\n            <TableHead className=\\\"text-right\\\">Priority</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\\\">\\n                Completed\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\\\">\\n                High\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\\\">\\n                In Progress\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Medium\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Pending\\n              </span>\\n            </TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <span className=\\\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\\\">\\n                Low\\n              </span>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithActions() {\\n  return (\\n    <Example title=\\\"With Actions\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Price</TableHead>\\n            <TableHead className=\\\"text-right\\\">Actions</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>$29.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>$129.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>$49.99</TableCell>\\n            <TableCell className=\\\"text-right\\\">\\n              <DropdownMenu>\\n                <DropdownMenuTrigger asChild>\\n                  <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                    <IconPlaceholder\\n                      lucide=\\\"MoreHorizontalIcon\\\"\\n                      tabler=\\\"IconDots\\\"\\n                      hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                      phosphor=\\\"DotsThreeOutlineIcon\\\"\\n                      remixicon=\\\"RiMoreLine\\\"\\n                    />\\n                    <span className=\\\"sr-only\\\">Open menu</span>\\n                  </Button>\\n                </DropdownMenuTrigger>\\n                <DropdownMenuContent align=\\\"end\\\">\\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\\n                  <DropdownMenuSeparator />\\n                  <DropdownMenuItem variant=\\\"destructive\\\">\\n                    Delete\\n                  </DropdownMenuItem>\\n                </DropdownMenuContent>\\n              </DropdownMenu>\\n            </TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithSelect() {\\n  return (\\n    <Example title=\\\"With Select\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Task</TableHead>\\n            <TableHead>Assignee</TableHead>\\n            <TableHead>Status</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Design homepage</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"sarah\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>In Progress</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Implement API</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"marcus\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Pending</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Write tests</TableCell>\\n            <TableCell>\\n              <Select defaultValue=\\\"emily\\\">\\n                <SelectTrigger className=\\\"w-40\\\" size=\\\"sm\\\">\\n                  <SelectValue />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectGroup>\\n                    <SelectItem value=\\\"sarah\\\">Sarah Chen</SelectItem>\\n                    <SelectItem value=\\\"marcus\\\">Marc Rodriguez</SelectItem>\\n                    <SelectItem value=\\\"emily\\\">Emily Watson</SelectItem>\\n                    <SelectItem value=\\\"david\\\">David Kim</SelectItem>\\n                  </SelectGroup>\\n                </SelectContent>\\n              </Select>\\n            </TableCell>\\n            <TableCell>Not Started</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\\nfunction TableWithInput() {\\n  return (\\n    <Example title=\\\"With Input\\\">\\n      <Table>\\n        <TableHeader>\\n          <TableRow>\\n            <TableHead>Product</TableHead>\\n            <TableHead>Quantity</TableHead>\\n            <TableHead>Price</TableHead>\\n          </TableRow>\\n        </TableHeader>\\n        <TableBody>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Wireless Mouse</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$29.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">Mechanical Keyboard</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"2\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$129.99</TableCell>\\n          </TableRow>\\n          <TableRow>\\n            <TableCell className=\\\"font-medium\\\">USB-C Hub</TableCell>\\n            <TableCell>\\n              <Input\\n                type=\\\"number\\\"\\n                defaultValue=\\\"1\\\"\\n                className=\\\"h-8 w-20\\\"\\n                min=\\\"0\\\"\\n              />\\n            </TableCell>\\n            <TableCell>$49.99</TableCell>\\n          </TableRow>\\n        </TableBody>\\n      </Table>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/table.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Table({ className, ...props }: React.ComponentProps<\\\"table\\\">) {\\n  return (\\n    <div\\n      data-slot=\\\"table-container\\\"\\n      className=\\\"relative w-full overflow-x-auto\\\"\\n    >\\n      <table\\n        data-slot=\\\"table\\\"\\n        className={cn(\\\"w-full caption-bottom text-sm\\\", className)}\\n        {...props}\\n      />\\n    </div>\\n  )\\n}\\n\\nfunction TableHeader({ className, ...props }: React.ComponentProps<\\\"thead\\\">) {\\n  return (\\n    <thead\\n      data-slot=\\\"table-header\\\"\\n      className={cn(\\\"[&_tr]:border-b\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableBody({ className, ...props }: React.ComponentProps<\\\"tbody\\\">) {\\n  return (\\n    <tbody\\n      data-slot=\\\"table-body\\\"\\n      className={cn(\\\"[&_tr:last-child]:border-0\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableFooter({ className, ...props }: React.ComponentProps<\\\"tfoot\\\">) {\\n  return (\\n    <tfoot\\n      data-slot=\\\"table-footer\\\"\\n      className={cn(\\n        \\\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableRow({ className, ...props }: React.ComponentProps<\\\"tr\\\">) {\\n  return (\\n    <tr\\n      data-slot=\\\"table-row\\\"\\n      className={cn(\\n        \\\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableHead({ className, ...props }: React.ComponentProps<\\\"th\\\">) {\\n  return (\\n    <th\\n      data-slot=\\\"table-head\\\"\\n      className={cn(\\n        \\\"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCell({ className, ...props }: React.ComponentProps<\\\"td\\\">) {\\n  return (\\n    <td\\n      data-slot=\\\"table-cell\\\"\\n      className={cn(\\n        \\\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TableCaption({\\n  className,\\n  ...props\\n}: React.ComponentProps<\\\"caption\\\">) {\\n  return (\\n    <caption\\n      data-slot=\\\"table-caption\\\"\\n      className={cn(\\\"mt-4 text-sm text-muted-foreground\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport {\\n  Table,\\n  TableHeader,\\n  TableBody,\\n  TableFooter,\\n  TableHead,\\n  TableRow,\\n  TableCell,\\n  TableCaption,\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/table\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/tabs-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs-example\",\n  \"title\": \"Tabs\",\n  \"registryDependencies\": [\n    \"button\",\n    \"dropdown-menu\",\n    \"tabs\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/tabs-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuSeparator,\\n  DropdownMenuTrigger,\\n} from \\\"@/registry/radix-vega/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  Tabs,\\n  TabsContent,\\n  TabsList,\\n  TabsTrigger,\\n} from \\\"@/registry/radix-vega/ui/tabs\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TabsExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TabsBasic />\\n      <TabsLine />\\n      <TabsVariantsComparison />\\n      <TabsDisabled />\\n      <TabsWithIcons />\\n      <TabsIconOnly />\\n      <TabsMultiple />\\n      <TabsWithContent />\\n      <TabsLineWithContent />\\n      <TabsLineDisabled />\\n      <TabsWithDropdown />\\n      <TabsVertical />\\n      <TabsWithInputAndButton />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TabsBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLine() {\\n  return (\\n    <Example title=\\\"Line\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVariantsComparison() {\\n  return (\\n    <Example title=\\\"Variants Alignment\\\">\\n      <div className=\\\"flex gap-4\\\">\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n        <Tabs defaultValue=\\\"overview\\\">\\n          <TabsList variant=\\\"line\\\">\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n        </Tabs>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">Home</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\" disabled>\\n            Disabled\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <Tabs defaultValue=\\\"preview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"preview\\\">\\n            <IconPlaceholder\\n              lucide=\\\"AppWindowIcon\\\"\\n              tabler=\\\"IconAppWindow\\\"\\n              hugeicons=\\\"CursorInWindowIcon\\\"\\n              phosphor=\\\"AppWindowIcon\\\"\\n              remixicon=\\\"RiWindowLine\\\"\\n            />\\n            Preview\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"code\\\">\\n            <IconPlaceholder\\n              lucide=\\\"CodeIcon\\\"\\n              tabler=\\\"IconCode\\\"\\n              hugeicons=\\\"CodeIcon\\\"\\n              phosphor=\\\"CodeIcon\\\"\\n              remixicon=\\\"RiCodeLine\\\"\\n            />\\n            Code\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsIconOnly() {\\n  return (\\n    <Example title=\\\"Icon Only\\\">\\n      <Tabs defaultValue=\\\"home\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"home\\\">\\n            <IconPlaceholder\\n              lucide=\\\"HomeIcon\\\"\\n              tabler=\\\"IconHome\\\"\\n              hugeicons=\\\"HomeIcon\\\"\\n              phosphor=\\\"HouseIcon\\\"\\n              remixicon=\\\"RiHomeLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"search\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SearchIcon\\\"\\n              tabler=\\\"IconSearch\\\"\\n              hugeicons=\\\"SearchIcon\\\"\\n              phosphor=\\\"MagnifyingGlassIcon\\\"\\n              remixicon=\\\"RiSearchLine\\\"\\n            />\\n          </TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SettingsIcon\\\"\\n              tabler=\\\"IconSettings\\\"\\n              hugeicons=\\\"SettingsIcon\\\"\\n              phosphor=\\\"GearIcon\\\"\\n              remixicon=\\\"RiSettingsLine\\\"\\n            />\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsMultiple() {\\n  return (\\n    <Example title=\\\"Multiple\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          <TabsTrigger value=\\\"settings\\\">Settings</TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithContent() {\\n  return (\\n    <Example title=\\\"With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineWithContent() {\\n  return (\\n    <Example title=\\\"Line With Content\\\">\\n      <Tabs defaultValue=\\\"account\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsLineDisabled() {\\n  return (\\n    <Example title=\\\"Line Disabled\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <TabsList variant=\\\"line\\\">\\n          <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n          <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          <TabsTrigger value=\\\"reports\\\" disabled>\\n            Reports\\n          </TabsTrigger>\\n        </TabsList>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithDropdown() {\\n  return (\\n    <Example title=\\\"With Dropdown\\\">\\n      <Tabs defaultValue=\\\"overview\\\">\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n            <TabsTrigger value=\\\"reports\\\">Reports</TabsTrigger>\\n          </TabsList>\\n          <DropdownMenu>\\n            <DropdownMenuTrigger asChild>\\n              <Button variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"size-8\\\">\\n                <IconPlaceholder\\n                  lucide=\\\"MoreHorizontalIcon\\\"\\n                  tabler=\\\"IconDots\\\"\\n                  hugeicons=\\\"MoreHorizontalCircle01Icon\\\"\\n                  phosphor=\\\"DotsThreeIcon\\\"\\n                  remixicon=\\\"RiMoreLine\\\"\\n                />\\n                <span className=\\\"sr-only\\\">More options</span>\\n              </Button>\\n            </DropdownMenuTrigger>\\n            <DropdownMenuContent align=\\\"end\\\">\\n              <DropdownMenuItem>Settings</DropdownMenuItem>\\n              <DropdownMenuItem>Export</DropdownMenuItem>\\n              <DropdownMenuSeparator />\\n              <DropdownMenuItem>Archive</DropdownMenuItem>\\n            </DropdownMenuContent>\\n          </DropdownMenu>\\n        </div>\\n\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <Tabs defaultValue=\\\"account\\\" orientation=\\\"vertical\\\">\\n        <TabsList>\\n          <TabsTrigger value=\\\"account\\\">Account</TabsTrigger>\\n          <TabsTrigger value=\\\"password\\\">Password</TabsTrigger>\\n          <TabsTrigger value=\\\"notifications\\\">Notifications</TabsTrigger>\\n        </TabsList>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"account\\\">\\n            Manage your account preferences and profile information.\\n          </TabsContent>\\n          <TabsContent value=\\\"password\\\">\\n            Update your password to keep your account secure. Use a strong\\n            password with a mix of letters, numbers, and symbols.\\n          </TabsContent>\\n          <TabsContent value=\\\"notifications\\\">\\n            Configure how you receive notifications and alerts. Choose which\\n            types of notifications you want to receive and how you want to\\n            receive them.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\\nfunction TabsWithInputAndButton() {\\n  return (\\n    <Example title=\\\"With Input and Button\\\" containerClassName=\\\"col-span-full\\\">\\n      <Tabs defaultValue=\\\"overview\\\" className=\\\"mx-auto w-full max-w-lg\\\">\\n        <div className=\\\"flex items-center gap-4\\\">\\n          <TabsList>\\n            <TabsTrigger value=\\\"overview\\\">Overview</TabsTrigger>\\n            <TabsTrigger value=\\\"analytics\\\">Analytics</TabsTrigger>\\n          </TabsList>\\n          <div className=\\\"ml-auto flex items-center gap-2\\\">\\n            <Input placeholder=\\\"Search...\\\" className=\\\"w-44\\\" />\\n            <Button>Action</Button>\\n          </div>\\n        </div>\\n        <div className=\\\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\\\">\\n          <TabsContent value=\\\"overview\\\">\\n            View your dashboard metrics and key performance indicators.\\n          </TabsContent>\\n          <TabsContent value=\\\"analytics\\\">\\n            Detailed analytics and insights about your data.\\n          </TabsContent>\\n          <TabsContent value=\\\"reports\\\">\\n            Generate and view custom reports.\\n          </TabsContent>\\n        </div>\\n      </Tabs>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/tabs.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Tabs as TabsPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Tabs({\\n  className,\\n  orientation = \\\"horizontal\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      data-orientation={orientation}\\n      className={cn(\\n        \\\"group/tabs flex gap-2 data-horizontal:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nconst tabsListVariants = cva(\\n  \\\"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-9 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-muted\\\",\\n        line: \\\"gap-1 bg-transparent\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction TabsList({\\n  className,\\n  variant = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List> &\\n  VariantProps<typeof tabsListVariants>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      data-variant={variant}\\n      className={cn(tabsListVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsTrigger({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\\n  return (\\n    <TabsPrimitive.Trigger\\n      data-slot=\\\"tabs-trigger\\\"\\n      className={cn(\\n        \\\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n        \\\"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\\\",\\n        \\\"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\\\",\\n        \\\"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\\n  return (\\n    <TabsPrimitive.Content\\n      data-slot=\\\"tabs-content\\\"\\n      className={cn(\\\"flex-1 text-sm outline-none\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tabs\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tabs.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/textarea-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea-example\",\n  \"title\": \"Textarea\",\n  \"registryDependencies\": [\n    \"field\",\n    \"textarea\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/textarea-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Textarea } from \\\"@/registry/radix-vega/ui/textarea\\\"\\n\\nexport default function TextareaExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TextareaBasic />\\n      <TextareaInvalid />\\n      <TextareaWithLabel />\\n      <TextareaWithDescription />\\n      <TextareaDisabled />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TextareaBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaInvalid() {\\n  return (\\n    <Example title=\\\"Invalid\\\">\\n      <Textarea placeholder=\\\"Type your message here.\\\" aria-invalid=\\\"true\\\" />\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithLabel() {\\n  return (\\n    <Example title=\\\"With Label\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaWithDescription() {\\n  return (\\n    <Example title=\\\"With Description\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-message-2\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-message-2\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          rows={6}\\n        />\\n        <FieldDescription>\\n          Type your message and press enter to send.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction TextareaDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Field>\\n        <FieldLabel htmlFor=\\\"textarea-demo-disabled\\\">Message</FieldLabel>\\n        <Textarea\\n          id=\\\"textarea-demo-disabled\\\"\\n          placeholder=\\\"Type your message here.\\\"\\n          disabled\\n        />\\n      </Field>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/textarea.tsx\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction Textarea({ className, ...props }: React.ComponentProps<\\\"textarea\\\">) {\\n  return (\\n    <textarea\\n      data-slot=\\\"textarea\\\"\\n      className={cn(\\n        \\\"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/textarea\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/toggle-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-example\",\n  \"title\": \"Toggle\",\n  \"registryDependencies\": [\n    \"toggle\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/toggle-example.tsx\",\n      \"content\": \"import {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Toggle } from \\\"@/registry/radix-vega/ui/toggle\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleBasic />\\n      <ToggleOutline />\\n      <ToggleSizes />\\n      <ToggleWithButtonText />\\n      <ToggleWithButtonIcon />\\n      <ToggleWithButtonIconText />\\n      <ToggleDisabled />\\n      <ToggleWithIcon />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bold\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </Toggle>\\n        <Toggle aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n          Italic\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n          Bold\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle small\\\" size=\\\"sm\\\">\\n          Small\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n          Default\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle large\\\" size=\\\"lg\\\">\\n          Large\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonText() {\\n  return (\\n    <Example title=\\\"With Button Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm\\\" size=\\\"sm\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle default\\\" size=\\\"default\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg\\\" size=\\\"lg\\\">\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIcon() {\\n  return (\\n    <Example title=\\\"With Button Icon\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button variant=\\\"outline\\\" size=\\\"icon-lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithButtonIconText() {\\n  return (\\n    <Example title=\\\"With Button Icon + Text\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              data-icon=\\\"inline-start\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle sm icon text\\\" size=\\\"sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"BoldIcon\\\"\\n              tabler=\\\"IconBold\\\"\\n              hugeicons=\\\"TextBoldIcon\\\"\\n              phosphor=\\\"TextBIcon\\\"\\n              remixicon=\\\"RiBold\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"default\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle\\n            variant=\\\"outline\\\"\\n            aria-label=\\\"Toggle default icon text\\\"\\n            size=\\\"default\\\"\\n          >\\n            <IconPlaceholder\\n              lucide=\\\"ItalicIcon\\\"\\n              tabler=\\\"IconItalic\\\"\\n              hugeicons=\\\"TextItalicIcon\\\"\\n              phosphor=\\\"TextItalicIcon\\\"\\n              remixicon=\\\"RiItalic\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n        <div className=\\\"flex items-center gap-2\\\">\\n          <Button size=\\\"lg\\\" variant=\\\"outline\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n              data-icon=\\\"inline-start\\\"\\n            />\\n            Button\\n          </Button>\\n          <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle lg icon text\\\" size=\\\"lg\\\">\\n            <IconPlaceholder\\n              lucide=\\\"UnderlineIcon\\\"\\n              tabler=\\\"IconUnderline\\\"\\n              hugeicons=\\\"TextUnderlineIcon\\\"\\n              phosphor=\\\"TextUnderlineIcon\\\"\\n              remixicon=\\\"RiUnderline\\\"\\n            />\\n            Toggle\\n          </Toggle>\\n        </div>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle disabled\\\" disabled>\\n          Disabled\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle disabled outline\\\" disabled>\\n          Disabled\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n        <Toggle aria-label=\\\"Toggle bookmark\\\" defaultPressed>\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n        </Toggle>\\n        <Toggle variant=\\\"outline\\\" aria-label=\\\"Toggle bookmark outline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n            className=\\\"group-data-[state=on]/toggle:fill-accent-foreground\\\"\\n          />\\n          Bookmark\\n        </Toggle>\\n      </div>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/toggle-group-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group-example\",\n  \"title\": \"Toggle Group\",\n  \"registryDependencies\": [\n    \"input\",\n    \"select\",\n    \"toggle-group\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/toggle-group-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport {\\n  Field,\\n  FieldDescription,\\n  FieldLabel,\\n} from \\\"@/registry/radix-vega/ui/field\\\"\\nimport { Input } from \\\"@/registry/radix-vega/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectGroup,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/registry/radix-vega/ui/select\\\"\\nimport {\\n  ToggleGroup,\\n  ToggleGroupItem,\\n} from \\\"@/registry/radix-vega/ui/toggle-group\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function ToggleGroupExample() {\\n  return (\\n    <ExampleWrapper>\\n      <ToggleGroupBasic />\\n      <ToggleGroupOutline />\\n      <ToggleGroupOutlineWithIcons />\\n      <ToggleGroupSizes />\\n      <ToggleGroupSpacing />\\n      <ToggleGroupWithIcons />\\n      <ToggleGroupFilter />\\n      <ToggleGroupDateRange />\\n      <ToggleGroupSort />\\n      <ToggleGroupWithInputAndSelect />\\n      <ToggleGroupVertical />\\n      <ToggleGroupVerticalOutline />\\n      <ToggleGroupVerticalOutlineWithIcons />\\n      <ToggleGroupVerticalWithSpacing />\\n      <ToggleGroupFontWeightSelector />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction ToggleGroupBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <ToggleGroup type=\\\"multiple\\\" spacing={1}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutline() {\\n  return (\\n    <Example title=\\\"Outline\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"single\\\" defaultValue=\\\"all\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"missed\\\" aria-label=\\\"Toggle missed\\\">\\n          Missed\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Outline With Icons\\\">\\n      <ToggleGroup variant=\\\"outline\\\" type=\\\"multiple\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSizes() {\\n  return (\\n    <Example title=\\\"Sizes\\\">\\n      <div className=\\\"flex flex-col gap-4\\\">\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          size=\\\"sm\\\"\\n          defaultValue=\\\"top\\\"\\n          variant=\\\"outline\\\"\\n        >\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"top\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n            Top\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n            Bottom\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n            Left\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n            Right\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSpacing() {\\n  return (\\n    <Example title=\\\"With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithIcons() {\\n  return (\\n    <Example title=\\\"With Icons\\\">\\n      <ToggleGroup type=\\\"multiple\\\" variant=\\\"outline\\\" spacing={1} size=\\\"sm\\\">\\n        <ToggleGroupItem\\n          value=\\\"star\\\"\\n          aria-label=\\\"Toggle star\\\"\\n          className=\\\"aria-pressed:*:[svg]:stroke-foregfill-foreground aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"StarIcon\\\"\\n            tabler=\\\"IconStar\\\"\\n            hugeicons=\\\"StarIcon\\\"\\n            phosphor=\\\"StarIcon\\\"\\n            remixicon=\\\"RiStarLine\\\"\\n          />\\n          Star\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"heart\\\"\\n          aria-label=\\\"Toggle heart\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"HeartIcon\\\"\\n            tabler=\\\"IconHeart\\\"\\n            hugeicons=\\\"FavouriteIcon\\\"\\n            phosphor=\\\"HeartIcon\\\"\\n            remixicon=\\\"RiHeartLine\\\"\\n          />\\n          Heart\\n        </ToggleGroupItem>\\n        <ToggleGroupItem\\n          value=\\\"bookmark\\\"\\n          aria-label=\\\"Toggle bookmark\\\"\\n          className=\\\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\\\"\\n        >\\n          <IconPlaceholder\\n            lucide=\\\"BookmarkIcon\\\"\\n            tabler=\\\"IconBookmark\\\"\\n            hugeicons=\\\"BookmarkIcon\\\"\\n            phosphor=\\\"BookmarkIcon\\\"\\n            remixicon=\\\"RiBookmarkLine\\\"\\n          />\\n          Bookmark\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFilter() {\\n  return (\\n    <Example title=\\\"Filter\\\">\\n      <ToggleGroup type=\\\"single\\\" defaultValue=\\\"all\\\" variant=\\\"outline\\\" size=\\\"sm\\\">\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"All\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupDateRange() {\\n  return (\\n    <Example title=\\\"Date Range\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"today\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"today\\\" aria-label=\\\"Today\\\">\\n          Today\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"week\\\" aria-label=\\\"This Week\\\">\\n          This Week\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"month\\\" aria-label=\\\"This Month\\\">\\n          This Month\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"year\\\" aria-label=\\\"This Year\\\">\\n          This Year\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupSort() {\\n  return (\\n    <Example title=\\\"Sort\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        defaultValue=\\\"newest\\\"\\n        variant=\\\"outline\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"newest\\\" aria-label=\\\"Newest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowDownIcon\\\"\\n            tabler=\\\"IconArrowDown\\\"\\n            hugeicons=\\\"ArrowDownIcon\\\"\\n            phosphor=\\\"ArrowDownIcon\\\"\\n            remixicon=\\\"RiArrowDownLine\\\"\\n          />\\n          Newest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"oldest\\\" aria-label=\\\"Oldest\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ArrowUpIcon\\\"\\n            tabler=\\\"IconArrowUp\\\"\\n            hugeicons=\\\"ArrowUpIcon\\\"\\n            phosphor=\\\"ArrowUpIcon\\\"\\n            remixicon=\\\"RiArrowUpLine\\\"\\n          />\\n          Oldest\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"popular\\\" aria-label=\\\"Popular\\\">\\n          <IconPlaceholder\\n            lucide=\\\"TrendingUpIcon\\\"\\n            tabler=\\\"IconTrendingUp\\\"\\n            hugeicons=\\\"TradeUpIcon\\\"\\n            phosphor=\\\"TrendUpIcon\\\"\\n            remixicon=\\\"RiLineChartLine\\\"\\n          />\\n          Popular\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupWithInputAndSelect() {\\n  return (\\n    <Example title=\\\"With Input and Select\\\">\\n      <div className=\\\"flex items-center gap-2\\\">\\n        <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" className=\\\"flex-1\\\" />\\n        <Select defaultValue=\\\"all\\\">\\n          <SelectTrigger className=\\\"w-32\\\">\\n            <SelectValue />\\n          </SelectTrigger>\\n          <SelectContent>\\n            <SelectGroup>\\n              <SelectItem value=\\\"all\\\">All</SelectItem>\\n              <SelectItem value=\\\"active\\\">Active</SelectItem>\\n              <SelectItem value=\\\"archived\\\">Archived</SelectItem>\\n            </SelectGroup>\\n          </SelectContent>\\n        </Select>\\n        <ToggleGroup type=\\\"single\\\" defaultValue=\\\"grid\\\" variant=\\\"outline\\\">\\n          <ToggleGroupItem value=\\\"grid\\\" aria-label=\\\"Grid view\\\">\\n            Grid\\n          </ToggleGroupItem>\\n          <ToggleGroupItem value=\\\"list\\\" aria-label=\\\"List view\\\">\\n            List\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVertical() {\\n  return (\\n    <Example title=\\\"Vertical\\\">\\n      <ToggleGroup type=\\\"multiple\\\" orientation=\\\"vertical\\\" spacing={2}>\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutline() {\\n  return (\\n    <Example title=\\\"Vertical Outline\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"single\\\"\\n        defaultValue=\\\"all\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"all\\\" aria-label=\\\"Toggle all\\\">\\n          All\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"active\\\" aria-label=\\\"Toggle active\\\">\\n          Active\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"completed\\\" aria-label=\\\"Toggle completed\\\">\\n          Completed\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"archived\\\" aria-label=\\\"Toggle archived\\\">\\n          Archived\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalOutlineWithIcons() {\\n  return (\\n    <Example title=\\\"Vertical Outline With Icons\\\">\\n      <ToggleGroup\\n        variant=\\\"outline\\\"\\n        type=\\\"multiple\\\"\\n        orientation=\\\"vertical\\\"\\n        size=\\\"sm\\\"\\n      >\\n        <ToggleGroupItem value=\\\"bold\\\" aria-label=\\\"Toggle bold\\\">\\n          <IconPlaceholder\\n            lucide=\\\"BoldIcon\\\"\\n            tabler=\\\"IconBold\\\"\\n            hugeicons=\\\"TextBoldIcon\\\"\\n            phosphor=\\\"TextBIcon\\\"\\n            remixicon=\\\"RiBold\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"italic\\\" aria-label=\\\"Toggle italic\\\">\\n          <IconPlaceholder\\n            lucide=\\\"ItalicIcon\\\"\\n            tabler=\\\"IconItalic\\\"\\n            hugeicons=\\\"TextItalicIcon\\\"\\n            phosphor=\\\"TextItalicIcon\\\"\\n            remixicon=\\\"RiItalic\\\"\\n          />\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"underline\\\" aria-label=\\\"Toggle underline\\\">\\n          <IconPlaceholder\\n            lucide=\\\"UnderlineIcon\\\"\\n            tabler=\\\"IconUnderline\\\"\\n            hugeicons=\\\"TextUnderlineIcon\\\"\\n            phosphor=\\\"TextUnderlineIcon\\\"\\n            remixicon=\\\"RiUnderline\\\"\\n          />\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupFontWeightSelector() {\\n  const [fontWeight, setFontWeight] = React.useState(\\\"normal\\\")\\n  return (\\n    <Example title=\\\"Font Weight Selector\\\">\\n      <Field>\\n        <FieldLabel>Font Weight</FieldLabel>\\n        <ToggleGroup\\n          type=\\\"single\\\"\\n          value={fontWeight}\\n          onValueChange={(value) => setFontWeight(value)}\\n          variant=\\\"outline\\\"\\n          spacing={2}\\n          size=\\\"lg\\\"\\n        >\\n          <ToggleGroupItem\\n            value=\\\"light\\\"\\n            aria-label=\\\"Light\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-light\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Light</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"normal\\\"\\n            aria-label=\\\"Normal\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-normal\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Normal</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"medium\\\"\\n            aria-label=\\\"Medium\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-medium\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Medium</span>\\n          </ToggleGroupItem>\\n          <ToggleGroupItem\\n            value=\\\"bold\\\"\\n            aria-label=\\\"Bold\\\"\\n            className=\\\"flex size-16 flex-col items-center justify-center rounded-xl\\\"\\n          >\\n            <span className=\\\"text-2xl leading-none font-bold\\\">Aa</span>\\n            <span className=\\\"text-xs text-muted-foreground\\\">Bold</span>\\n          </ToggleGroupItem>\\n        </ToggleGroup>\\n        <FieldDescription>\\n          Use{\\\" \\\"}\\n          <code className=\\\"rounded-md bg-muted px-1 py-0.5 font-mono\\\">\\n            font-{fontWeight}\\n          </code>{\\\" \\\"}\\n          to set the font weight.\\n        </FieldDescription>\\n      </Field>\\n    </Example>\\n  )\\n}\\n\\nfunction ToggleGroupVerticalWithSpacing() {\\n  return (\\n    <Example title=\\\"Vertical With Spacing\\\">\\n      <ToggleGroup\\n        type=\\\"single\\\"\\n        size=\\\"sm\\\"\\n        defaultValue=\\\"top\\\"\\n        variant=\\\"outline\\\"\\n        orientation=\\\"vertical\\\"\\n        spacing={2}\\n      >\\n        <ToggleGroupItem value=\\\"top\\\" aria-label=\\\"Toggle top\\\">\\n          Top\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"bottom\\\" aria-label=\\\"Toggle bottom\\\">\\n          Bottom\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"left\\\" aria-label=\\\"Toggle left\\\">\\n          Left\\n        </ToggleGroupItem>\\n        <ToggleGroupItem value=\\\"right\\\" aria-label=\\\"Toggle right\\\">\\n          Right\\n        </ToggleGroupItem>\\n      </ToggleGroup>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"registryDependencies\": [\n    \"toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/toggle-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { type VariantProps } from \\\"class-variance-authority\\\"\\nimport { ToggleGroup as ToggleGroupPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\nimport { toggleVariants } from \\\"@/registry/radix-vega/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n  spacing: 0,\\n  orientation: \\\"horizontal\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  spacing = 0,\\n  orientation = \\\"horizontal\\\",\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants> & {\\n    spacing?: number\\n    orientation?: \\\"horizontal\\\" | \\\"vertical\\\"\\n  }) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      data-spacing={spacing}\\n      data-orientation={orientation}\\n      style={{ \\\"--gap\\\": spacing } as React.CSSProperties}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=0]:data-[variant=outline]:shadow-xs data-vertical:flex-col data-vertical:items-stretch\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider\\n        value={{ variant, size, spacing, orientation }}\\n      >\\n        {children}\\n      </ToggleGroupContext.Provider>\\n    </ToggleGroupPrimitive.Root>\\n  )\\n}\\n\\nfunction ToggleGroupItem({\\n  className,\\n  children,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\\n  VariantProps<typeof toggleVariants>) {\\n  const context = React.useContext(ToggleGroupContext)\\n\\n  return (\\n    <ToggleGroupPrimitive.Item\\n      data-slot=\\\"toggle-group-item\\\"\\n      data-variant={context.variant || variant}\\n      data-size={context.size || size}\\n      data-spacing={context.spacing}\\n      className={cn(\\n        \\\"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:shadow-none focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md data-[state=on]:bg-muted group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\\\",\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        className\\n      )}\\n      {...props}\\n    >\\n      {children}\\n    </ToggleGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { ToggleGroup, ToggleGroupItem }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/toggle.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { cva, type VariantProps } from \\\"class-variance-authority\\\"\\nimport { Toggle as TogglePrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nconst toggleVariants = cva(\\n  \\\"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default: \\\"bg-transparent\\\",\\n        outline: \\\"border border-input bg-transparent shadow-xs hover:bg-muted\\\",\\n      },\\n      size: {\\n        default: \\\"h-9 min-w-9 px-2\\\",\\n        sm: \\\"h-8 min-w-8 px-1.5\\\",\\n        lg: \\\"h-10 min-w-10 px-2.5\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Toggle({\\n  className,\\n  variant = \\\"default\\\",\\n  size = \\\"default\\\",\\n  ...props\\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <TogglePrimitive.Root\\n      data-slot=\\\"toggle\\\"\\n      className={cn(toggleVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toggle, toggleVariants }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/toggle\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/toggle.md\"\n    }\n  },\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/tooltip-example.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip-example\",\n  \"title\": \"Tooltip\",\n  \"registryDependencies\": [\n    \"button\",\n    \"kbd\",\n    \"tooltip\",\n    \"example\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/examples/tooltip-example.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Example,\\n  ExampleWrapper,\\n} from \\\"@/registry/radix-vega/components/example\\\"\\nimport { Button } from \\\"@/registry/radix-vega/ui/button\\\"\\nimport { Kbd } from \\\"@/registry/radix-vega/ui/kbd\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipTrigger,\\n} from \\\"@/registry/radix-vega/ui/tooltip\\\"\\nimport { IconPlaceholder } from \\\"@/app/(create)/components/icon-placeholder\\\"\\n\\nexport default function TooltipExample() {\\n  return (\\n    <ExampleWrapper>\\n      <TooltipBasic />\\n      <TooltipSides />\\n      <TooltipWithIcon />\\n      <TooltipLongContent />\\n      <TooltipDisabled />\\n      <TooltipWithKeyboard />\\n      <TooltipOnLink />\\n      <TooltipFormatted />\\n    </ExampleWrapper>\\n  )\\n}\\n\\nfunction TooltipBasic() {\\n  return (\\n    <Example title=\\\"Basic\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Add to library</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipSides() {\\n  return (\\n    <Example title=\\\"Sides\\\">\\n      <div className=\\\"flex flex-wrap gap-2\\\">\\n        {([\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"] as const).map((side) => (\\n          <Tooltip key={side}>\\n            <TooltipTrigger asChild>\\n              <Button variant=\\\"outline\\\" className=\\\"w-fit capitalize\\\">\\n                {side}\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent side={side}>\\n              <p>Add to library</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        ))}\\n      </div>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithIcon() {\\n  return (\\n    <Example title=\\\"With Icon\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <IconPlaceholder\\n              lucide=\\\"InfoIcon\\\"\\n              tabler=\\\"IconInfoCircle\\\"\\n              hugeicons=\\\"AlertCircleIcon\\\"\\n              phosphor=\\\"InfoIcon\\\"\\n              remixicon=\\\"RiInformationLine\\\"\\n            />\\n            <span className=\\\"sr-only\\\">Info</span>\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Additional information</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipLongContent() {\\n  return (\\n    <Example title=\\\"Long Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Show Tooltip\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          To learn more about how this works, check out the docs. If you have\\n          any questions, please reach out to us.\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipDisabled() {\\n  return (\\n    <Example title=\\\"Disabled\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <span className=\\\"inline-block w-fit\\\">\\n            <Button variant=\\\"outline\\\" disabled>\\n              Disabled\\n            </Button>\\n          </span>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>This feature is currently unavailable</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipWithKeyboard() {\\n  return (\\n    <Example title=\\\"With Keyboard Shortcut\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" size=\\\"icon-sm\\\">\\n            <IconPlaceholder\\n              lucide=\\\"SaveIcon\\\"\\n              tabler=\\\"IconDeviceFloppy\\\"\\n              hugeicons=\\\"FloppyDiskIcon\\\"\\n              phosphor=\\\"FloppyDiskIcon\\\"\\n              remixicon=\\\"RiSaveLine\\\"\\n            />\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          Save Changes <Kbd>S</Kbd>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipOnLink() {\\n  return (\\n    <Example title=\\\"On Link\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <a\\n            href=\\\"#\\\"\\n            className=\\\"w-fit text-sm text-primary underline-offset-4 hover:underline\\\"\\n            onClick={(e) => e.preventDefault()}\\n          >\\n            Learn more\\n          </a>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <p>Click to read the documentation</p>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\\nfunction TooltipFormatted() {\\n  return (\\n    <Example title=\\\"Formatted Content\\\">\\n      <Tooltip>\\n        <TooltipTrigger asChild>\\n          <Button variant=\\\"outline\\\" className=\\\"w-fit\\\">\\n            Status\\n          </Button>\\n        </TooltipTrigger>\\n        <TooltipContent>\\n          <div className=\\\"flex flex-col gap-1\\\">\\n            <p className=\\\"font-semibold\\\">Active</p>\\n            <p className=\\\"text-xs opacity-80\\\">Last updated 2 hours ago</p>\\n          </div>\\n        </TooltipContent>\\n      </Tooltip>\\n    </Example>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/ui/tooltip.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Tooltip as TooltipPrimitive } from \\\"radix-ui\\\"\\n\\nimport { cn } from \\\"@/registry/radix-vega/lib/utils\\\"\\n\\nfunction TooltipProvider({\\n  delayDuration = 0,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\\n  return (\\n    <TooltipPrimitive.Provider\\n      data-slot=\\\"tooltip-provider\\\"\\n      delayDuration={delayDuration}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction Tooltip({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\\n  return <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n}\\n\\nfunction TooltipTrigger({\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\\n  return <TooltipPrimitive.Trigger data-slot=\\\"tooltip-trigger\\\" {...props} />\\n}\\n\\nfunction TooltipContent({\\n  className,\\n  sideOffset = 0,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\\n  return (\\n    <TooltipPrimitive.Portal>\\n      <TooltipPrimitive.Content\\n        data-slot=\\\"tooltip-content\\\"\\n        sideOffset={sideOffset}\\n        className={cn(\\n          \\\"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"meta\": {\n    \"links\": {\n      \"docs\": \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n      \"examples\": \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n      \"api\": \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\"\n    }\n  },\n  \"docs\": \"The `tooltip` component has been added. Remember to wrap your app with the `TooltipProvider` component.\\n\\n```tsx title=\\\"app/layout.tsx\\\"\\nimport { TooltipProvider } from \\\"@/components/ui/tooltip\\\"\\n\\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\\n  return (\\n    <html lang=\\\"en\\\">\\n      <body>\\n        <TooltipProvider>{children}</TooltipProvider>\\n      </body>\\n    </html>\\n  )\\n}\\n```\\n\",\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/hooks/use-mobile.ts\",\n      \"content\": \"import * as React from \\\"react\\\"\\n\\nconst MOBILE_BREAKPOINT = 768\\n\\nexport function useIsMobile() {\\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\\n\\n  React.useEffect(() => {\\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\\n    const onChange = () => {\\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    }\\n    mql.addEventListener(\\\"change\\\", onChange)\\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\\n    return () => mql.removeEventListener(\\\"change\\\", onChange)\\n  }, [])\\n\\n  return !!isMobile\\n}\\n\",\n      \"type\": \"registry:hook\"\n    }\n  ],\n  \"type\": \"registry:hook\"\n}"
  },
  {
    "path": "apps/v4/public/r/styles/radix-vega/utils.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"utils\",\n  \"dependencies\": [\n    \"clsx\",\n    \"tailwind-merge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"registry/radix-vega/lib/utils.ts\",\n      \"content\": \"import { clsx, type ClassValue } from \\\"clsx\\\"\\nimport { twMerge } from \\\"tailwind-merge\\\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n\",\n      \"type\": \"registry:lib\"\n    }\n  ],\n  \"type\": \"registry:lib\"\n}"
  },
  {
    "path": "apps/v4/public/r/themes/gray.json",
    "content": "{\n  \"name\": \"gray\",\n  \"label\": \"Gray\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"224 71.4% 4.1%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"224 71.4% 4.1%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"224 71.4% 4.1%\",\n      \"primary\": \"220.9 39.3% 11%\",\n      \"primary-foreground\": \"210 20% 98%\",\n      \"secondary\": \"220 14.3% 95.9%\",\n      \"secondary-foreground\": \"220.9 39.3% 11%\",\n      \"muted\": \"220 14.3% 95.9%\",\n      \"muted-foreground\": \"220 8.9% 46.1%\",\n      \"accent\": \"220 14.3% 95.9%\",\n      \"accent-foreground\": \"220.9 39.3% 11%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"210 20% 98%\",\n      \"border\": \"220 13% 91%\",\n      \"input\": \"220 13% 91%\",\n      \"ring\": \"224 71.4% 4.1%\",\n      \"chart-1\": \"12 76% 61%\",\n      \"chart-2\": \"173 58% 39%\",\n      \"chart-3\": \"197 37% 24%\",\n      \"chart-4\": \"43 74% 66%\",\n      \"chart-5\": \"27 87% 67%\"\n    },\n    \"dark\": {\n      \"background\": \"224 71.4% 4.1%\",\n      \"foreground\": \"210 20% 98%\",\n      \"card\": \"224 71.4% 4.1%\",\n      \"card-foreground\": \"210 20% 98%\",\n      \"popover\": \"224 71.4% 4.1%\",\n      \"popover-foreground\": \"210 20% 98%\",\n      \"primary\": \"210 20% 98%\",\n      \"primary-foreground\": \"220.9 39.3% 11%\",\n      \"secondary\": \"215 27.9% 16.9%\",\n      \"secondary-foreground\": \"210 20% 98%\",\n      \"muted\": \"215 27.9% 16.9%\",\n      \"muted-foreground\": \"217.9 10.6% 64.9%\",\n      \"accent\": \"215 27.9% 16.9%\",\n      \"accent-foreground\": \"210 20% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"210 20% 98%\",\n      \"border\": \"215 27.9% 16.9%\",\n      \"input\": \"215 27.9% 16.9%\",\n      \"ring\": \"216 12.2% 83.9%\",\n      \"chart-1\": \"220 70% 50%\",\n      \"chart-2\": \"160 60% 45%\",\n      \"chart-3\": \"30 80% 55%\",\n      \"chart-4\": \"280 65% 60%\",\n      \"chart-5\": \"340 75% 55%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/themes/neutral.json",
    "content": "{\n  \"name\": \"neutral\",\n  \"label\": \"Neutral\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"0 0% 3.9%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"0 0% 3.9%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"0 0% 3.9%\",\n      \"primary\": \"0 0% 9%\",\n      \"primary-foreground\": \"0 0% 98%\",\n      \"secondary\": \"0 0% 96.1%\",\n      \"secondary-foreground\": \"0 0% 9%\",\n      \"muted\": \"0 0% 96.1%\",\n      \"muted-foreground\": \"0 0% 45.1%\",\n      \"accent\": \"0 0% 96.1%\",\n      \"accent-foreground\": \"0 0% 9%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"border\": \"0 0% 89.8%\",\n      \"input\": \"0 0% 89.8%\",\n      \"ring\": \"0 0% 3.9%\",\n      \"chart-1\": \"12 76% 61%\",\n      \"chart-2\": \"173 58% 39%\",\n      \"chart-3\": \"197 37% 24%\",\n      \"chart-4\": \"43 74% 66%\",\n      \"chart-5\": \"27 87% 67%\"\n    },\n    \"dark\": {\n      \"background\": \"0 0% 3.9%\",\n      \"foreground\": \"0 0% 98%\",\n      \"card\": \"0 0% 3.9%\",\n      \"card-foreground\": \"0 0% 98%\",\n      \"popover\": \"0 0% 3.9%\",\n      \"popover-foreground\": \"0 0% 98%\",\n      \"primary\": \"0 0% 98%\",\n      \"primary-foreground\": \"0 0% 9%\",\n      \"secondary\": \"0 0% 14.9%\",\n      \"secondary-foreground\": \"0 0% 98%\",\n      \"muted\": \"0 0% 14.9%\",\n      \"muted-foreground\": \"0 0% 63.9%\",\n      \"accent\": \"0 0% 14.9%\",\n      \"accent-foreground\": \"0 0% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"border\": \"0 0% 14.9%\",\n      \"input\": \"0 0% 14.9%\",\n      \"ring\": \"0 0% 83.1%\",\n      \"chart-1\": \"220 70% 50%\",\n      \"chart-2\": \"160 60% 45%\",\n      \"chart-3\": \"30 80% 55%\",\n      \"chart-4\": \"280 65% 60%\",\n      \"chart-5\": \"340 75% 55%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/themes/slate.json",
    "content": "{\n  \"name\": \"slate\",\n  \"label\": \"Slate\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"222.2 84% 4.9%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"222.2 84% 4.9%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"222.2 84% 4.9%\",\n      \"primary\": \"222.2 47.4% 11.2%\",\n      \"primary-foreground\": \"210 40% 98%\",\n      \"secondary\": \"210 40% 96.1%\",\n      \"secondary-foreground\": \"222.2 47.4% 11.2%\",\n      \"muted\": \"210 40% 96.1%\",\n      \"muted-foreground\": \"215.4 16.3% 46.9%\",\n      \"accent\": \"210 40% 96.1%\",\n      \"accent-foreground\": \"222.2 47.4% 11.2%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"210 40% 98%\",\n      \"border\": \"214.3 31.8% 91.4%\",\n      \"input\": \"214.3 31.8% 91.4%\",\n      \"ring\": \"222.2 84% 4.9%\",\n      \"chart-1\": \"12 76% 61%\",\n      \"chart-2\": \"173 58% 39%\",\n      \"chart-3\": \"197 37% 24%\",\n      \"chart-4\": \"43 74% 66%\",\n      \"chart-5\": \"27 87% 67%\"\n    },\n    \"dark\": {\n      \"background\": \"222.2 84% 4.9%\",\n      \"foreground\": \"210 40% 98%\",\n      \"card\": \"222.2 84% 4.9%\",\n      \"card-foreground\": \"210 40% 98%\",\n      \"popover\": \"222.2 84% 4.9%\",\n      \"popover-foreground\": \"210 40% 98%\",\n      \"primary\": \"210 40% 98%\",\n      \"primary-foreground\": \"222.2 47.4% 11.2%\",\n      \"secondary\": \"217.2 32.6% 17.5%\",\n      \"secondary-foreground\": \"210 40% 98%\",\n      \"muted\": \"217.2 32.6% 17.5%\",\n      \"muted-foreground\": \"215 20.2% 65.1%\",\n      \"accent\": \"217.2 32.6% 17.5%\",\n      \"accent-foreground\": \"210 40% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"210 40% 98%\",\n      \"border\": \"217.2 32.6% 17.5%\",\n      \"input\": \"217.2 32.6% 17.5%\",\n      \"ring\": \"212.7 26.8% 83.9%\",\n      \"chart-1\": \"220 70% 50%\",\n      \"chart-2\": \"160 60% 45%\",\n      \"chart-3\": \"30 80% 55%\",\n      \"chart-4\": \"280 65% 60%\",\n      \"chart-5\": \"340 75% 55%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/themes/stone.json",
    "content": "{\n  \"name\": \"stone\",\n  \"label\": \"Stone\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"20 14.3% 4.1%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"20 14.3% 4.1%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"20 14.3% 4.1%\",\n      \"primary\": \"24 9.8% 10%\",\n      \"primary-foreground\": \"60 9.1% 97.8%\",\n      \"secondary\": \"60 4.8% 95.9%\",\n      \"secondary-foreground\": \"24 9.8% 10%\",\n      \"muted\": \"60 4.8% 95.9%\",\n      \"muted-foreground\": \"25 5.3% 44.7%\",\n      \"accent\": \"60 4.8% 95.9%\",\n      \"accent-foreground\": \"24 9.8% 10%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"60 9.1% 97.8%\",\n      \"border\": \"20 5.9% 90%\",\n      \"input\": \"20 5.9% 90%\",\n      \"ring\": \"20 14.3% 4.1%\",\n      \"chart-1\": \"12 76% 61%\",\n      \"chart-2\": \"173 58% 39%\",\n      \"chart-3\": \"197 37% 24%\",\n      \"chart-4\": \"43 74% 66%\",\n      \"chart-5\": \"27 87% 67%\"\n    },\n    \"dark\": {\n      \"background\": \"20 14.3% 4.1%\",\n      \"foreground\": \"60 9.1% 97.8%\",\n      \"card\": \"20 14.3% 4.1%\",\n      \"card-foreground\": \"60 9.1% 97.8%\",\n      \"popover\": \"20 14.3% 4.1%\",\n      \"popover-foreground\": \"60 9.1% 97.8%\",\n      \"primary\": \"60 9.1% 97.8%\",\n      \"primary-foreground\": \"24 9.8% 10%\",\n      \"secondary\": \"12 6.5% 15.1%\",\n      \"secondary-foreground\": \"60 9.1% 97.8%\",\n      \"muted\": \"12 6.5% 15.1%\",\n      \"muted-foreground\": \"24 5.4% 63.9%\",\n      \"accent\": \"12 6.5% 15.1%\",\n      \"accent-foreground\": \"60 9.1% 97.8%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"60 9.1% 97.8%\",\n      \"border\": \"12 6.5% 15.1%\",\n      \"input\": \"12 6.5% 15.1%\",\n      \"ring\": \"24 5.7% 82.9%\",\n      \"chart-1\": \"220 70% 50%\",\n      \"chart-2\": \"160 60% 45%\",\n      \"chart-3\": \"30 80% 55%\",\n      \"chart-4\": \"280 65% 60%\",\n      \"chart-5\": \"340 75% 55%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/themes/zinc.json",
    "content": "{\n  \"name\": \"zinc\",\n  \"label\": \"Zinc\",\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"240 10% 3.9%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"240 10% 3.9%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"240 10% 3.9%\",\n      \"primary\": \"240 5.9% 10%\",\n      \"primary-foreground\": \"0 0% 98%\",\n      \"secondary\": \"240 4.8% 95.9%\",\n      \"secondary-foreground\": \"240 5.9% 10%\",\n      \"muted\": \"240 4.8% 95.9%\",\n      \"muted-foreground\": \"240 3.8% 46.1%\",\n      \"accent\": \"240 4.8% 95.9%\",\n      \"accent-foreground\": \"240 5.9% 10%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"border\": \"240 5.9% 90%\",\n      \"input\": \"240 5.9% 90%\",\n      \"ring\": \"240 10% 3.9%\",\n      \"chart-1\": \"12 76% 61%\",\n      \"chart-2\": \"173 58% 39%\",\n      \"chart-3\": \"197 37% 24%\",\n      \"chart-4\": \"43 74% 66%\",\n      \"chart-5\": \"27 87% 67%\"\n    },\n    \"dark\": {\n      \"background\": \"240 10% 3.9%\",\n      \"foreground\": \"0 0% 98%\",\n      \"card\": \"240 10% 3.9%\",\n      \"card-foreground\": \"0 0% 98%\",\n      \"popover\": \"240 10% 3.9%\",\n      \"popover-foreground\": \"0 0% 98%\",\n      \"primary\": \"0 0% 98%\",\n      \"primary-foreground\": \"240 5.9% 10%\",\n      \"secondary\": \"240 3.7% 15.9%\",\n      \"secondary-foreground\": \"0 0% 98%\",\n      \"muted\": \"240 3.7% 15.9%\",\n      \"muted-foreground\": \"240 5% 64.9%\",\n      \"accent\": \"240 3.7% 15.9%\",\n      \"accent-foreground\": \"0 0% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"border\": \"240 3.7% 15.9%\",\n      \"input\": \"240 3.7% 15.9%\",\n      \"ring\": \"240 4.9% 83.9%\",\n      \"chart-1\": \"220 70% 50%\",\n      \"chart-2\": \"160 60% 45%\",\n      \"chart-3\": \"30 80% 55%\",\n      \"chart-4\": \"280 65% 60%\",\n      \"chart-5\": \"340 75% 55%\"\n    }\n  }\n}"
  },
  {
    "path": "apps/v4/public/r/themes.css",
    "content": "\n.theme-zinc {\n  --background: 0 0% 100%;\n  --foreground: 240 10% 3.9%;\n\n  --muted: 240 4.8% 95.9%;\n  --muted-foreground: 240 3.8% 46.1%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 240 10% 3.9%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 240 10% 3.9%;\n\n  --border: 240 5.9% 90%;\n  --input: 240 5.9% 90%;\n\n  --primary: 240 5.9% 10%;\n  --primary-foreground: 0 0% 98%;\n\n  --secondary: 240 4.8% 95.9%;\n  --secondary-foreground: 240 5.9% 10%;\n\n  --accent: 240 4.8% 95.9%;\n  --accent-foreground: 240 5.9% 10%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 0 0% 98%;\n\n  --ring: 240 5.9% 10%;\n\n  --radius: 0.5rem;\n}\n\n.dark .theme-zinc {\n  --background: 240 10% 3.9%;\n  --foreground: 0 0% 98%;\n\n  --muted: 240 3.7% 15.9%;\n  --muted-foreground: 240 5% 64.9%;\n\n  --popover: 240 10% 3.9%;\n  --popover-foreground: 0 0% 98%;\n\n  --card: 240 10% 3.9%;\n  --card-foreground: 0 0% 98%;\n\n  --border: 240 3.7% 15.9%;\n  --input: 240 3.7% 15.9%;\n\n  --primary: 0 0% 98%;\n  --primary-foreground: 240 5.9% 10%;\n\n  --secondary: 240 3.7% 15.9%;\n  --secondary-foreground: 0 0% 98%;\n\n  --accent: 240 3.7% 15.9%;\n  --accent-foreground: 0 0% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 0 0% 98%;\n\n  --ring: 240 4.9% 83.9%;\n}\n\n.theme-slate {\n  --background: 0 0% 100%;\n  --foreground: 222.2 84% 4.9%;\n\n  --muted: 210 40% 96.1%;\n  --muted-foreground: 215.4 16.3% 46.9%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 222.2 84% 4.9%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 222.2 84% 4.9%;\n\n  --border: 214.3 31.8% 91.4%;\n  --input: 214.3 31.8% 91.4%;\n\n  --primary: 222.2 47.4% 11.2%;\n  --primary-foreground: 210 40% 98%;\n\n  --secondary: 210 40% 96.1%;\n  --secondary-foreground: 222.2 47.4% 11.2%;\n\n  --accent: 210 40% 96.1%;\n  --accent-foreground: 222.2 47.4% 11.2%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 210 40% 98%;\n\n  --ring: 222.2 84% 4.9%;\n\n  --radius: 0.5rem;\n}\n\n.dark .theme-slate {\n  --background: 222.2 84% 4.9%;\n  --foreground: 210 40% 98%;\n\n  --muted: 217.2 32.6% 17.5%;\n  --muted-foreground: 215 20.2% 65.1%;\n\n  --popover: 222.2 84% 4.9%;\n  --popover-foreground: 210 40% 98%;\n\n  --card: 222.2 84% 4.9%;\n  --card-foreground: 210 40% 98%;\n\n  --border: 217.2 32.6% 17.5%;\n  --input: 217.2 32.6% 17.5%;\n\n  --primary: 210 40% 98%;\n  --primary-foreground: 222.2 47.4% 11.2%;\n\n  --secondary: 217.2 32.6% 17.5%;\n  --secondary-foreground: 210 40% 98%;\n\n  --accent: 217.2 32.6% 17.5%;\n  --accent-foreground: 210 40% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 210 40% 98%;\n\n  --ring: 212.7 26.8% 83.9;\n}\n\n.theme-stone {\n  --background: 0 0% 100%;\n  --foreground: 20 14.3% 4.1%;\n\n  --muted: 60 4.8% 95.9%;\n  --muted-foreground: 25 5.3% 44.7%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 20 14.3% 4.1%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 20 14.3% 4.1%;\n\n  --border: 20 5.9% 90%;\n  --input: 20 5.9% 90%;\n\n  --primary: 24 9.8% 10%;\n  --primary-foreground: 60 9.1% 97.8%;\n\n  --secondary: 60 4.8% 95.9%;\n  --secondary-foreground: 24 9.8% 10%;\n\n  --accent: 60 4.8% 95.9%;\n  --accent-foreground: 24 9.8% 10%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 60 9.1% 97.8%;\n\n  --ring: 20 14.3% 4.1%;\n\n  --radius: 0.95rem;\n}\n\n.dark .theme-stone {\n  --background: 20 14.3% 4.1%;\n  --foreground: 60 9.1% 97.8%;\n\n  --muted: 12 6.5% 15.1%;\n  --muted-foreground: 24 5.4% 63.9%;\n\n  --popover: 20 14.3% 4.1%;\n  --popover-foreground: 60 9.1% 97.8%;\n\n  --card: 20 14.3% 4.1%;\n  --card-foreground: 60 9.1% 97.8%;\n\n  --border: 12 6.5% 15.1%;\n  --input: 12 6.5% 15.1%;\n\n  --primary: 60 9.1% 97.8%;\n  --primary-foreground: 24 9.8% 10%;\n\n  --secondary: 12 6.5% 15.1%;\n  --secondary-foreground: 60 9.1% 97.8%;\n\n  --accent: 12 6.5% 15.1%;\n  --accent-foreground: 60 9.1% 97.8%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 60 9.1% 97.8%;\n\n  --ring: 24 5.7% 82.9%;\n}\n\n.theme-gray {\n  --background: 0 0% 100%;\n  --foreground: 224 71.4% 4.1%;\n\n  --muted: 220 14.3% 95.9%;\n  --muted-foreground: 220 8.9% 46.1%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 224 71.4% 4.1%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 224 71.4% 4.1%;\n\n  --border: 220 13% 91%;\n  --input: 220 13% 91%;\n\n  --primary: 220.9 39.3% 11%;\n  --primary-foreground: 210 20% 98%;\n\n  --secondary: 220 14.3% 95.9%;\n  --secondary-foreground: 220.9 39.3% 11%;\n\n  --accent: 220 14.3% 95.9%;\n  --accent-foreground: 220.9 39.3% 11%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 210 20% 98%;\n\n  --ring: 224 71.4% 4.1%;\n\n  --radius: 0.35rem;\n}\n\n.dark .theme-gray {\n  --background: 224 71.4% 4.1%;\n  --foreground: 210 20% 98%;\n\n  --muted: 215 27.9% 16.9%;\n  --muted-foreground: 217.9 10.6% 64.9%;\n\n  --popover: 224 71.4% 4.1%;\n  --popover-foreground: 210 20% 98%;\n\n  --card: 224 71.4% 4.1%;\n  --card-foreground: 210 20% 98%;\n\n  --border: 215 27.9% 16.9%;\n  --input: 215 27.9% 16.9%;\n\n  --primary: 210 20% 98%;\n  --primary-foreground: 220.9 39.3% 11%;\n\n  --secondary: 215 27.9% 16.9%;\n  --secondary-foreground: 210 20% 98%;\n\n  --accent: 215 27.9% 16.9%;\n  --accent-foreground: 210 20% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 210 20% 98%;\n\n  --ring: 216 12.2% 83.9%;\n}\n\n.theme-neutral {\n  --background: 0 0% 100%;\n  --foreground: 0 0% 3.9%;\n\n  --muted: 0 0% 96.1%;\n  --muted-foreground: 0 0% 45.1%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 0 0% 3.9%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 0 0% 3.9%;\n\n  --border: 0 0% 89.8%;\n  --input: 0 0% 89.8%;\n\n  --primary: 0 0% 9%;\n  --primary-foreground: 0 0% 98%;\n\n  --secondary: 0 0% 96.1%;\n  --secondary-foreground: 0 0% 9%;\n\n  --accent: 0 0% 96.1%;\n  --accent-foreground: 0 0% 9%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 0 0% 98%;\n\n  --ring: 0 0% 3.9%;\n\n  --radius: ;\n}\n\n.dark .theme-neutral {\n  --background: 0 0% 3.9%;\n  --foreground: 0 0% 98%;\n\n  --muted: 0 0% 14.9%;\n  --muted-foreground: 0 0% 63.9%;\n\n  --popover: 0 0% 3.9%;\n  --popover-foreground: 0 0% 98%;\n\n  --card: 0 0% 3.9%;\n  --card-foreground: 0 0% 98%;\n\n  --border: 0 0% 14.9%;\n  --input: 0 0% 14.9%;\n\n  --primary: 0 0% 98%;\n  --primary-foreground: 0 0% 9%;\n\n  --secondary: 0 0% 14.9%;\n  --secondary-foreground: 0 0% 98%;\n\n  --accent: 0 0% 14.9%;\n  --accent-foreground: 0 0% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 0 0% 98%;\n\n  --ring: 0 0% 83.1%;\n}\n\n.theme-red {\n  --background: 0 0% 100%;\n  --foreground: 0 0% 3.9%;\n\n  --muted: 0 0% 96.1%;\n  --muted-foreground: 0 0% 45.1%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 0 0% 3.9%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 0 0% 3.9%;\n\n  --border: 0 0% 89.8%;\n  --input: 0 0% 89.8%;\n\n  --primary: 0 72.2% 50.6%;\n  --primary-foreground: 0 85.7% 97.3%;\n\n  --secondary: 0 0% 96.1%;\n  --secondary-foreground: 0 0% 9%;\n\n  --accent: 0 0% 96.1%;\n  --accent-foreground: 0 0% 9%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 0 0% 98%;\n\n  --ring: 0 72.2% 50.6%;\n\n  --radius: 0.4rem;\n}\n\n.dark .theme-red {\n  --background: 0 0% 3.9%;\n  --foreground: 0 0% 98%;\n\n  --muted: 0 0% 14.9%;\n  --muted-foreground: 0 0% 63.9%;\n\n  --popover: 0 0% 3.9%;\n  --popover-foreground: 0 0% 98%;\n\n  --card: 0 0% 3.9%;\n  --card-foreground: 0 0% 98%;\n\n  --border: 0 0% 14.9%;\n  --input: 0 0% 14.9%;\n\n  --primary: 0 72.2% 50.6%;\n  --primary-foreground: 0 85.7% 97.3%;\n\n  --secondary: 0 0% 14.9%;\n  --secondary-foreground: 0 0% 98%;\n\n  --accent: 0 0% 14.9%;\n  --accent-foreground: 0 0% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 0 0% 98%;\n\n  --ring: 0 72.2% 50.6%;\n}\n\n.theme-rose {\n  --background: 0 0% 100%;\n  --foreground: 240 10% 3.9%;\n\n  --muted: 240 4.8% 95.9%;\n  --muted-foreground: 240 3.8% 46.1%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 240 10% 3.9%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 240 10% 3.9%;\n\n  --border: 240 5.9% 90%;\n  --input: 240 5.9% 90%;\n\n  --primary: 346.8 77.2% 49.8%;\n  --primary-foreground: 355.7 100% 97.3%;\n\n  --secondary: 240 4.8% 95.9%;\n  --secondary-foreground: 240 5.9% 10%;\n\n  --accent: 240 4.8% 95.9%;\n  --accent-foreground: 240 5.9% 10%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 0 0% 98%;\n\n  --ring: 346.8 77.2% 49.8%;\n\n  --radius: 0.5rem;\n}\n\n.dark .theme-rose {\n  --background: 20 14.3% 4.1%;\n  --foreground: 0 0% 95%;\n\n  --muted: 0 0% 15%;\n  --muted-foreground: 240 5% 64.9%;\n\n  --popover: 0 0% 9%;\n  --popover-foreground: 0 0% 95%;\n\n  --card: 24 9.8% 10%;\n  --card-foreground: 0 0% 95%;\n\n  --border: 240 3.7% 15.9%;\n  --input: 240 3.7% 15.9%;\n\n  --primary: 346.8 77.2% 49.8%;\n  --primary-foreground: 355.7 100% 97.3%;\n\n  --secondary: 240 3.7% 15.9%;\n  --secondary-foreground: 0 0% 98%;\n\n  --accent: 12 6.5% 15.1%;\n  --accent-foreground: 0 0% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 0 85.7% 97.3%;\n\n  --ring: 346.8 77.2% 49.8%;\n}\n\n.theme-orange {\n  --background: 0 0% 100%;\n  --foreground: 20 14.3% 4.1%;\n\n  --muted: 60 4.8% 95.9%;\n  --muted-foreground: 25 5.3% 44.7%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 20 14.3% 4.1%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 20 14.3% 4.1%;\n\n  --border: 20 5.9% 90%;\n  --input: 20 5.9% 90%;\n\n  --primary: 24.6 95% 53.1%;\n  --primary-foreground: 60 9.1% 97.8%;\n\n  --secondary: 60 4.8% 95.9%;\n  --secondary-foreground: 24 9.8% 10%;\n\n  --accent: 60 4.8% 95.9%;\n  --accent-foreground: 24 9.8% 10%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 60 9.1% 97.8%;\n\n  --ring: 24.6 95% 53.1%;\n\n  --radius: 0.95rem;\n}\n\n.dark .theme-orange {\n  --background: 20 14.3% 4.1%;\n  --foreground: 60 9.1% 97.8%;\n\n  --muted: 12 6.5% 15.1%;\n  --muted-foreground: 24 5.4% 63.9%;\n\n  --popover: 20 14.3% 4.1%;\n  --popover-foreground: 60 9.1% 97.8%;\n\n  --card: 20 14.3% 4.1%;\n  --card-foreground: 60 9.1% 97.8%;\n\n  --border: 12 6.5% 15.1%;\n  --input: 12 6.5% 15.1%;\n\n  --primary: 20.5 90.2% 48.2%;\n  --primary-foreground: 60 9.1% 97.8%;\n\n  --secondary: 12 6.5% 15.1%;\n  --secondary-foreground: 60 9.1% 97.8%;\n\n  --accent: 12 6.5% 15.1%;\n  --accent-foreground: 60 9.1% 97.8%;\n\n  --destructive: 0 72.2% 50.6%;\n  --destructive-foreground: 60 9.1% 97.8%;\n\n  --ring: 20.5 90.2% 48.2%;\n}\n\n.theme-green {\n  --background: 0 0% 100%;\n  --foreground: 240 10% 3.9%;\n\n  --muted: 240 4.8% 95.9%;\n  --muted-foreground: 240 3.8% 46.1%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 240 10% 3.9%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 240 10% 3.9%;\n\n  --border: 240 5.9% 90%;\n  --input: 240 5.9% 90%;\n\n  --primary: 142.1 76.2% 36.3%;\n  --primary-foreground: 355.7 100% 97.3%;\n\n  --secondary: 240 4.8% 95.9%;\n  --secondary-foreground: 240 5.9% 10%;\n\n  --accent: 240 4.8% 95.9%;\n  --accent-foreground: 240 5.9% 10%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 0 0% 98%;\n\n  --ring: 142.1 76.2% 36.3%;\n\n  --radius: ;\n}\n\n.dark .theme-green {\n  --background: 20 14.3% 4.1%;\n  --foreground: 0 0% 95%;\n\n  --muted: 0 0% 15%;\n  --muted-foreground: 240 5% 64.9%;\n\n  --popover: 0 0% 9%;\n  --popover-foreground: 0 0% 95%;\n\n  --card: 24 9.8% 10%;\n  --card-foreground: 0 0% 95%;\n\n  --border: 240 3.7% 15.9%;\n  --input: 240 3.7% 15.9%;\n\n  --primary: 142.1 70.6% 45.3%;\n  --primary-foreground: 144.9 80.4% 10%;\n\n  --secondary: 240 3.7% 15.9%;\n  --secondary-foreground: 0 0% 98%;\n\n  --accent: 12 6.5% 15.1%;\n  --accent-foreground: 0 0% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 0 85.7% 97.3%;\n\n  --ring: 142.4 71.8% 29.2%;\n}\n\n.theme-blue {\n  --background: 0 0% 100%;\n  --foreground: 222.2 84% 4.9%;\n\n  --muted: 210 40% 96.1%;\n  --muted-foreground: 215.4 16.3% 46.9%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 222.2 84% 4.9%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 222.2 84% 4.9%;\n\n  --border: 214.3 31.8% 91.4%;\n  --input: 214.3 31.8% 91.4%;\n\n  --primary: 221.2 83.2% 53.3%;\n  --primary-foreground: 210 40% 98%;\n\n  --secondary: 210 40% 96.1%;\n  --secondary-foreground: 222.2 47.4% 11.2%;\n\n  --accent: 210 40% 96.1%;\n  --accent-foreground: 222.2 47.4% 11.2%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 210 40% 98%;\n\n  --ring: 221.2 83.2% 53.3%;\n\n  --radius: ;\n}\n\n.dark .theme-blue {\n  --background: 222.2 84% 4.9%;\n  --foreground: 210 40% 98%;\n\n  --muted: 217.2 32.6% 17.5%;\n  --muted-foreground: 215 20.2% 65.1%;\n\n  --popover: 222.2 84% 4.9%;\n  --popover-foreground: 210 40% 98%;\n\n  --card: 222.2 84% 4.9%;\n  --card-foreground: 210 40% 98%;\n\n  --border: 217.2 32.6% 17.5%;\n  --input: 217.2 32.6% 17.5%;\n\n  --primary: 217.2 91.2% 59.8%;\n  --primary-foreground: 222.2 47.4% 11.2%;\n\n  --secondary: 217.2 32.6% 17.5%;\n  --secondary-foreground: 210 40% 98%;\n\n  --accent: 217.2 32.6% 17.5%;\n  --accent-foreground: 210 40% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 210 40% 98%;\n\n  --ring: 224.3 76.3% 48%;\n}\n\n.theme-yellow {\n  --background: 0 0% 100%;\n  --foreground: 20 14.3% 4.1%;\n\n  --muted: 60 4.8% 95.9%;\n  --muted-foreground: 25 5.3% 44.7%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 20 14.3% 4.1%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 20 14.3% 4.1%;\n\n  --border: 20 5.9% 90%;\n  --input: 20 5.9% 90%;\n\n  --primary: 47.9 95.8% 53.1%;\n  --primary-foreground: 26 83.3% 14.1%;\n\n  --secondary: 60 4.8% 95.9%;\n  --secondary-foreground: 24 9.8% 10%;\n\n  --accent: 60 4.8% 95.9%;\n  --accent-foreground: 24 9.8% 10%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 60 9.1% 97.8%;\n\n  --ring: 20 14.3% 4.1%;\n\n  --radius: 0.95rem;\n}\n\n.dark .theme-yellow {\n  --background: 20 14.3% 4.1%;\n  --foreground: 60 9.1% 97.8%;\n\n  --muted: 12 6.5% 15.1%;\n  --muted-foreground: 24 5.4% 63.9%;\n\n  --popover: 20 14.3% 4.1%;\n  --popover-foreground: 60 9.1% 97.8%;\n\n  --card: 20 14.3% 4.1%;\n  --card-foreground: 60 9.1% 97.8%;\n\n  --border: 12 6.5% 15.1%;\n  --input: 12 6.5% 15.1%;\n\n  --primary: 47.9 95.8% 53.1%;\n  --primary-foreground: 26 83.3% 14.1%;\n\n  --secondary: 12 6.5% 15.1%;\n  --secondary-foreground: 60 9.1% 97.8%;\n\n  --accent: 12 6.5% 15.1%;\n  --accent-foreground: 60 9.1% 97.8%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 60 9.1% 97.8%;\n\n  --ring: 35.5 91.7% 32.9%;\n}\n\n.theme-violet {\n  --background: 0 0% 100%;\n  --foreground: 224 71.4% 4.1%;\n\n  --muted: 220 14.3% 95.9%;\n  --muted-foreground: 220 8.9% 46.1%;\n\n  --popover: 0 0% 100%;\n  --popover-foreground: 224 71.4% 4.1%;\n\n  --card: 0 0% 100%;\n  --card-foreground: 224 71.4% 4.1%;\n\n  --border: 220 13% 91%;\n  --input: 220 13% 91%;\n\n  --primary: 262.1 83.3% 57.8%;\n  --primary-foreground: 210 20% 98%;\n\n  --secondary: 220 14.3% 95.9%;\n  --secondary-foreground: 220.9 39.3% 11%;\n\n  --accent: 220 14.3% 95.9%;\n  --accent-foreground: 220.9 39.3% 11%;\n\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 210 20% 98%;\n\n  --ring: 262.1 83.3% 57.8%;\n\n  --radius: ;\n}\n\n.dark .theme-violet {\n  --background: 224 71.4% 4.1%;\n  --foreground: 210 20% 98%;\n\n  --muted: 215 27.9% 16.9%;\n  --muted-foreground: 217.9 10.6% 64.9%;\n\n  --popover: 224 71.4% 4.1%;\n  --popover-foreground: 210 20% 98%;\n\n  --card: 224 71.4% 4.1%;\n  --card-foreground: 210 20% 98%;\n\n  --border: 215 27.9% 16.9%;\n  --input: 215 27.9% 16.9%;\n\n  --primary: 263.4 70% 50.4%;\n  --primary-foreground: 210 20% 98%;\n\n  --secondary: 215 27.9% 16.9%;\n  --secondary-foreground: 210 20% 98%;\n\n  --accent: 215 27.9% 16.9%;\n  --accent-foreground: 210 20% 98%;\n\n  --destructive: 0 62.8% 30.6%;\n  --destructive-foreground: 210 20% 98%;\n\n  --ring: 263.4 70% 50.4%;\n}"
  },
  {
    "path": "apps/v4/public/schema/registry-item.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft-07/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"name\": {\n      \"type\": \"string\",\n      \"description\": \"The name of the item. This is used to identify the item in the registry. It should be unique for your registry.\"\n    },\n    \"type\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"registry:lib\",\n        \"registry:block\",\n        \"registry:component\",\n        \"registry:ui\",\n        \"registry:hook\",\n        \"registry:theme\",\n        \"registry:page\",\n        \"registry:file\",\n        \"registry:style\",\n        \"registry:base\",\n        \"registry:font\",\n        \"registry:item\"\n      ],\n      \"description\": \"The type of the item. This is used to determine the type and target path of the item when resolved for a project.\"\n    },\n    \"description\": {\n      \"type\": \"string\",\n      \"description\": \"The description of the item. This is used to provide a brief overview of the item.\"\n    },\n    \"title\": {\n      \"type\": \"string\",\n      \"description\": \"The human-readable title for your registry item. Keep it short and descriptive.\"\n    },\n    \"author\": {\n      \"type\": \"string\",\n      \"description\": \"The author of the item. Recommended format: username <url>\"\n    },\n    \"dependencies\": {\n      \"type\": \"array\",\n      \"description\": \"An array of NPM dependencies required by the registry item.\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"devDependencies\": {\n      \"type\": \"array\",\n      \"description\": \"An array of NPM dev dependencies required by the registry item.\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"registryDependencies\": {\n      \"type\": \"array\",\n      \"description\": \"An array of registry items that this item depends on. Use the name of the item to reference shadcn/ui components and urls to reference other registries.\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"files\": {\n      \"type\": \"array\",\n      \"description\": \"The main payload of the registry item. This is an array of files that are part of the registry item. Each file is an object with a path, content, type, and target.\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"The path to the file relative to the registry root.\"\n          },\n          \"content\": {\n            \"type\": \"string\",\n            \"description\": \"The content of the file.\"\n          },\n          \"type\": {\n            \"type\": \"string\",\n            \"enum\": [\n              \"registry:lib\",\n              \"registry:block\",\n              \"registry:component\",\n              \"registry:ui\",\n              \"registry:hook\",\n              \"registry:theme\",\n              \"registry:page\",\n              \"registry:file\",\n              \"registry:style\",\n              \"registry:base\",\n              \"registry:item\"\n            ],\n            \"description\": \"The type of the file. This is used to determine the type of the file when resolved for a project.\"\n          },\n          \"target\": {\n            \"type\": \"string\",\n            \"description\": \"The target path of the file. This is the path to the file in the project.\"\n          }\n        },\n        \"if\": {\n          \"properties\": {\n            \"type\": {\n              \"enum\": [\"registry:file\", \"registry:page\"]\n            }\n          }\n        },\n        \"then\": {\n          \"required\": [\"path\", \"type\", \"target\"]\n        },\n        \"else\": {\n          \"required\": [\"path\", \"type\"]\n        }\n      }\n    },\n    \"tailwind\": {\n      \"type\": \"object\",\n      \"description\": \"The tailwind configuration for the registry item. This is an object with a config property. Use cssVars for Tailwind v4 projects.\",\n      \"properties\": {\n        \"config\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"content\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"theme\": {\n              \"type\": \"object\",\n              \"additionalProperties\": true\n            },\n            \"plugins\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"cssVars\": {\n      \"type\": \"object\",\n      \"description\": \"The css variables for the registry item. This will be merged with the project's css variables.\",\n      \"properties\": {\n        \"theme\": {\n          \"type\": \"object\",\n          \"description\": \"CSS variables for the @theme directive. For Tailwind v4 projects only. Use tailwind for older projects.\",\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          }\n        },\n        \"light\": {\n          \"type\": \"object\",\n          \"description\": \"CSS variables for the light theme.\",\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          }\n        },\n        \"dark\": {\n          \"type\": \"object\",\n          \"description\": \"CSS variables for the dark theme.\",\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    },\n    \"css\": {\n      \"type\": \"object\",\n      \"description\": \"CSS definitions to be added to the project's CSS file. Supports at-rules, selectors, nested rules, utilities, layers, and more.\",\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/cssValue\"\n      }\n    },\n    \"envVars\": {\n      \"type\": \"object\",\n      \"description\": \"Environment variables required by the registry item. Key-value pairs that will be added to the project's .env file.\",\n      \"additionalProperties\": {\n        \"type\": \"string\"\n      }\n    },\n    \"meta\": {\n      \"type\": \"object\",\n      \"description\": \"Additional metadata for the registry item. This is an object with any key value pairs.\",\n      \"additionalProperties\": true\n    },\n    \"docs\": {\n      \"type\": \"string\",\n      \"description\": \"The documentation for the registry item. This is a markdown string.\"\n    },\n    \"categories\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\",\n        \"description\": \"The categories of the registry item. This is an array of strings.\"\n      }\n    },\n    \"extends\": {\n      \"type\": \"string\",\n      \"description\": \"The name of the registry item to extend. This is used to extend the base shadcn/ui style. Set to none to start fresh. This is available for registry:style items only.\"\n    },\n    \"style\": {\n      \"type\": \"string\",\n      \"description\": \"The style configuration for the base. This is available for registry:base items only.\"\n    },\n    \"iconLibrary\": {\n      \"type\": \"string\",\n      \"description\": \"The icon library to use for the base. This is available for registry:base items only.\"\n    },\n    \"baseColor\": {\n      \"type\": \"string\",\n      \"description\": \"The base color configuration. This is available for registry:base items only.\"\n    },\n    \"theme\": {\n      \"type\": \"string\",\n      \"description\": \"The theme configuration. This is available for registry:base items only.\"\n    },\n    \"font\": {\n      \"type\": \"object\",\n      \"description\": \"Font metadata for registry:font items. Required for registry:font type.\",\n      \"properties\": {\n        \"family\": {\n          \"type\": \"string\",\n          \"description\": \"The font family name (e.g., 'Inter', 'JetBrains Mono').\"\n        },\n        \"provider\": {\n          \"type\": \"string\",\n          \"enum\": [\"google\"],\n          \"description\": \"The font provider. Currently only 'google' is supported.\"\n        },\n        \"import\": {\n          \"type\": \"string\",\n          \"description\": \"The import name for the font from next/font/google (e.g., 'Inter', 'JetBrains_Mono').\"\n        },\n        \"variable\": {\n          \"type\": \"string\",\n          \"description\": \"The CSS variable name for the font (e.g., '--font-sans', '--font-mono').\"\n        },\n        \"weight\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Array of font weights to include (e.g., ['400', '500', '600', '700']).\"\n        },\n        \"subsets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Array of font subsets to include (e.g., ['latin', 'latin-ext']).\"\n        },\n        \"selector\": {\n          \"type\": \"string\",\n          \"description\": \"CSS selector to apply the font utility class to (e.g., 'h1, h2, h3'). Defaults to 'html'.\"\n        },\n        \"dependency\": {\n          \"type\": \"string\",\n          \"description\": \"The npm package to install for the font in non-Next.js projects (e.g., '@fontsource-variable/inter', '@fontsource/lato').\"\n        }\n      },\n      \"required\": [\"family\", \"provider\", \"import\", \"variable\"]\n    }\n  },\n  \"required\": [\"name\", \"type\"],\n  \"allOf\": [\n    {\n      \"if\": {\n        \"properties\": {\n          \"type\": {\n            \"const\": \"registry:font\"\n          }\n        }\n      },\n      \"then\": {\n        \"required\": [\"name\", \"type\", \"font\"]\n      },\n      \"else\": {\n        \"properties\": {\n          \"font\": false\n        }\n      }\n    },\n    {\n      \"if\": {\n        \"not\": {\n          \"properties\": {\n            \"type\": {\n              \"const\": \"registry:base\"\n            }\n          }\n        }\n      },\n      \"then\": {\n        \"properties\": {\n          \"style\": false,\n          \"iconLibrary\": false,\n          \"baseColor\": false,\n          \"theme\": false\n        }\n      }\n    }\n  ],\n  \"definitions\": {\n    \"cssValue\": {\n      \"oneOf\": [\n        {\n          \"type\": \"string\",\n          \"description\": \"CSS property value or direct CSS string\"\n        },\n        {\n          \"type\": \"object\",\n          \"description\": \"Nested CSS properties, selectors, or at-rules. Empty objects are allowed for at-rules with no body.\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/cssValue\"\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/v4/public/schema/registry.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft-07/schema#\",\n  \"description\": \"A shadcn registry of components, hooks, pages, etc.\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"homepage\": {\n      \"type\": \"string\"\n    },\n    \"items\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"https://ui.shadcn.com/schema/registry-item.json\"\n      }\n    }\n  },\n  \"required\": [\"name\", \"homepage\", \"items\"],\n  \"uniqueItems\": true,\n  \"minItems\": 1\n}\n"
  },
  {
    "path": "apps/v4/public/schema.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"style\": {\n      \"type\": \"string\",\n      \"enum\": [\"default\", \"new-york\", \"radix-vega\", \"radix-nova\", \"radix-maia\", \"radix-lyra\", \"radix-mira\", \"base-vega\", \"base-nova\", \"base-maia\", \"base-lyra\", \"base-mira\"]\n    },\n    \"tailwind\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"config\": {\n          \"type\": \"string\"\n        },\n        \"css\": {\n          \"type\": \"string\"\n        },\n        \"baseColor\": {\n          \"type\": \"string\"\n        },\n        \"cssVariables\": {\n          \"type\": \"boolean\"\n        },\n        \"prefix\": {\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\"config\", \"css\", \"baseColor\", \"cssVariables\"]\n    },\n    \"rsc\": {\n      \"type\": \"boolean\"\n    },\n    \"tsx\": {\n      \"type\": \"boolean\"\n    },\n    \"iconLibrary\": {\n      \"type\": \"string\"\n    },\n    \"aliases\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"utils\": {\n          \"type\": \"string\"\n        },\n        \"components\": {\n          \"type\": \"string\"\n        },\n        \"ui\": {\n          \"type\": \"string\"\n        },\n        \"lib\": {\n          \"type\": \"string\"\n        },\n        \"hooks\": {\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\"utils\", \"components\"]\n    },\n    \"menuColor\": {\n      \"type\": \"string\",\n      \"enum\": [\"default\", \"inverted\", \"default-translucent\", \"inverted-translucent\"]\n    },\n    \"menuAccent\": {\n      \"type\": \"string\",\n      \"enum\": [\"subtle\", \"bold\"]\n    },\n    \"rtl\": {\n      \"type\": \"boolean\"\n    },\n    \"registries\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^@\": {\n          \"oneOf\": [\n            {\n              \"type\": \"string\",\n              \"pattern\": \"\\\\{name\\\\}\"\n            },\n            {\n              \"type\": \"object\",\n              \"properties\": {\n                \"url\": {\n                  \"type\": \"string\",\n                  \"pattern\": \"\\\\{name\\\\}\"\n                },\n                \"params\": {\n                  \"type\": \"object\",\n                  \"additionalProperties\": {\n                    \"type\": \"string\"\n                  }\n                },\n                \"headers\": {\n                  \"type\": \"object\",\n                  \"additionalProperties\": {\n                    \"type\": \"string\"\n                  }\n                }\n              },\n              \"required\": [\"url\"]\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": false\n    }\n  },\n  \"required\": [\"style\", \"tailwind\", \"rsc\", \"aliases\"]\n}\n"
  },
  {
    "path": "apps/v4/public/site.webmanifest",
    "content": "{\n  \"name\": \"\",\n  \"short_name\": \"\",\n  \"icons\": [\n    {\n      \"src\": \"/android-chrome-192x192.png\",\n      \"sizes\": \"192x192\",\n      \"type\": \"image/png\"\n    },\n    {\n      \"src\": \"/android-chrome-512x512.png\",\n      \"sizes\": \"512x512\",\n      \"type\": \"image/png\"\n    }\n  ],\n  \"display\": \"standalone\"\n}\n"
  },
  {
    "path": "apps/v4/registry/__blocks__.json",
    "content": "[\n  {\n    \"name\": \"dashboard-01\",\n    \"description\": \"A dashboard with sidebar, charts and data table.\",\n    \"categories\": [\"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-01\",\n    \"description\": \"A simple sidebar with navigation grouped by section.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-02\",\n    \"description\": \"A sidebar with collapsible sections.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-03\",\n    \"description\": \"A sidebar with submenus.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-04\",\n    \"description\": \"A floating sidebar with submenus.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-05\",\n    \"description\": \"A sidebar with collapsible submenus.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-06\",\n    \"description\": \"A sidebar with submenus as dropdowns.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-07\",\n    \"description\": \"A sidebar that collapses to icons.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-08\",\n    \"description\": \"An inset sidebar with secondary navigation.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-09\",\n    \"description\": \"Collapsible nested sidebars.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-10\",\n    \"description\": \"A sidebar in a popover.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-11\",\n    \"description\": \"A sidebar with a collapsible file tree.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-12\",\n    \"description\": \"A sidebar with a calendar.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-13\",\n    \"description\": \"A sidebar in a dialog.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-14\",\n    \"description\": \"A sidebar on the right.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-15\",\n    \"description\": \"A left and right sidebar.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"sidebar-16\",\n    \"description\": \"A sidebar with a sticky site header.\",\n    \"categories\": [\"sidebar\", \"dashboard\"]\n  },\n  {\n    \"name\": \"login-01\",\n    \"description\": \"A simple login form.\",\n    \"categories\": [\"authentication\", \"login\"]\n  },\n  {\n    \"name\": \"login-02\",\n    \"description\": \"A two column login page with a cover image.\",\n    \"categories\": [\"authentication\", \"login\"]\n  },\n  {\n    \"name\": \"login-03\",\n    \"description\": \"A login page with a muted background color.\",\n    \"categories\": [\"authentication\", \"login\"]\n  },\n  {\n    \"name\": \"login-04\",\n    \"description\": \"A login page with form and image.\",\n    \"categories\": [\"authentication\", \"login\"]\n  },\n  {\n    \"name\": \"login-05\",\n    \"description\": \"A simple email-only login page.\",\n    \"categories\": [\"authentication\", \"login\"]\n  },\n  {\n    \"name\": \"signup-01\",\n    \"description\": \"A simple signup form.\",\n    \"categories\": [\"authentication\", \"signup\"]\n  },\n  {\n    \"name\": \"signup-02\",\n    \"description\": \"A two column signup page with a cover image.\",\n    \"categories\": [\"authentication\", \"signup\"]\n  },\n  {\n    \"name\": \"signup-03\",\n    \"description\": \"A signup page with a muted background color.\",\n    \"categories\": [\"authentication\", \"signup\"]\n  },\n  {\n    \"name\": \"signup-04\",\n    \"description\": \"A signup page with form and image.\",\n    \"categories\": [\"authentication\", \"signup\"]\n  },\n  {\n    \"name\": \"signup-05\",\n    \"description\": \"A simple signup form with social providers.\",\n    \"categories\": [\"authentication\", \"signup\"]\n  }\n]\n"
  },
  {
    "path": "apps/v4/registry/__index__.tsx",
    "content": "// @ts-nocheck\n// This file is autogenerated by scripts/build-registry.ts\n// Do not edit this file directly.\nimport * as React from \"react\"\n\nexport const Index: Record<string, Record<string, any>> = {\n  \"new-york-v4\": {\n    \"accordion\": {\n      name: \"accordion\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/accordion.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/accordion.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert\": {\n      name: \"alert\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/alert.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/alert.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert-dialog\": {\n      name: \"alert-dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/alert-dialog.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/alert-dialog.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"aspect-ratio\": {\n      name: \"aspect-ratio\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/aspect-ratio.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/aspect-ratio.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"avatar\": {\n      name: \"avatar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/avatar.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/avatar.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"badge\": {\n      name: \"badge\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/badge.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/badge.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb\": {\n      name: \"breadcrumb\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/breadcrumb.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/breadcrumb.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button\": {\n      name: \"button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/button.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/button.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group\": {\n      name: \"button-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\",\"separator\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/button-group.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/button-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"calendar\": {\n      name: \"calendar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/calendar.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/calendar.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"card\": {\n      name: \"card\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/card.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/card.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel\": {\n      name: \"carousel\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/carousel.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/carousel.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart\": {\n      name: \"chart\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/chart.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/chart.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"checkbox\": {\n      name: \"checkbox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/checkbox.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/checkbox.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"collapsible\": {\n      name: \"collapsible\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/collapsible.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/collapsible.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"combobox\": {\n      name: \"combobox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\",\"input-group\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/combobox.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/combobox.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"command\": {\n      name: \"command\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"dialog\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/command.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/command.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"context-menu\": {\n      name: \"context-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/context-menu.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/context-menu.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dialog\": {\n      name: \"dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/dialog.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/dialog.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"drawer\": {\n      name: \"drawer\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/drawer.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/drawer.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dropdown-menu\": {\n      name: \"dropdown-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/dropdown-menu.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/dropdown-menu.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty\": {\n      name: \"empty\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/empty.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/empty.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field\": {\n      name: \"field\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"label\",\"separator\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/field.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/field.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form\": {\n      name: \"form\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/form.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/form.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"hover-card\": {\n      name: \"hover-card\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/hover-card.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/hover-card.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input\": {\n      name: \"input\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/input.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/input.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group\": {\n      name: \"input-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\",\"input\",\"textarea\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/input-group.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/input-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-otp\": {\n      name: \"input-otp\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/input-otp.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/input-otp.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item\": {\n      name: \"item\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"separator\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/item.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/item.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"label\": {\n      name: \"label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/label.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/label.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"menubar\": {\n      name: \"menubar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/menubar.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/menubar.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"navigation-menu\": {\n      name: \"navigation-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/navigation-menu.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/navigation-menu.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"pagination\": {\n      name: \"pagination\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/pagination.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/pagination.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"popover\": {\n      name: \"popover\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/popover.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/popover.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"progress\": {\n      name: \"progress\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/progress.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/progress.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"radio-group\": {\n      name: \"radio-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/radio-group.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/radio-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"resizable\": {\n      name: \"resizable\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/resizable.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/resizable.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"scroll-area\": {\n      name: \"scroll-area\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/scroll-area.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/scroll-area.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"select\": {\n      name: \"select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/select.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/select.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"separator\": {\n      name: \"separator\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/separator.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/separator.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sheet\": {\n      name: \"sheet\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/sheet.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/sheet.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar\": {\n      name: \"sidebar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\",\"separator\",\"sheet\",\"tooltip\",\"input\",\"use-mobile\",\"skeleton\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/sidebar.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/sidebar.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"skeleton\": {\n      name: \"skeleton\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/skeleton.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/skeleton.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"slider\": {\n      name: \"slider\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/slider.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/slider.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sonner\": {\n      name: \"sonner\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/sonner.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/sonner.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner\": {\n      name: \"spinner\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/spinner.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/spinner.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"switch\": {\n      name: \"switch\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/switch.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/switch.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"table\": {\n      name: \"table\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/table.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/table.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"tabs\": {\n      name: \"tabs\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/tabs.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/tabs.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"textarea\": {\n      name: \"textarea\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/textarea.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/textarea.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle\": {\n      name: \"toggle\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/toggle.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/toggle.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group\": {\n      name: \"toggle-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"toggle\"],\n      files: [{\n        path: \"registry/new-york-v4/ui/toggle-group.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/toggle-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"tooltip\": {\n      name: \"tooltip\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/tooltip.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/tooltip.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"kbd\": {\n      name: \"kbd\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/kbd.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/kbd.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"native-select\": {\n      name: \"native-select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/native-select.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/native-select.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"direction\": {\n      name: \"direction\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/ui/direction.tsx\",\n        type: \"registry:ui\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/ui/direction.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dashboard-01\": {\n      name: \"dashboard-01\",\n      title: \"undefined\",\n      description: \"A dashboard with sidebar, charts and data table.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"label\",\"chart\",\"card\",\"select\",\"tabs\",\"table\",\"toggle-group\",\"badge\",\"button\",\"checkbox\",\"dropdown-menu\",\"drawer\",\"input\",\"avatar\",\"sheet\",\"sonner\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/dashboard-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/data.json\",\n        type: \"registry:file\",\n        target: \"app/dashboard/data.json\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/data-table.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/nav-documents.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/nav-main.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/nav-user.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/section-cards.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/dashboard-01/components/site-header.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/dashboard-01/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"dashboard\"],\n      meta: {\"iframeHeight\":\"1000px\"},\n    },\n    \"sidebar-01\": {\n      name: \"sidebar-01\",\n      title: \"undefined\",\n      description: \"A simple sidebar with navigation grouped by section.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"label\",\"dropdown-menu\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-01/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-01/components/search-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-01/components/version-switcher.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-01/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-02\": {\n      name: \"sidebar-02\",\n      title: \"undefined\",\n      description: \"A sidebar with collapsible sections.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"label\",\"dropdown-menu\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-02/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-02/components/search-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-02/components/version-switcher.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-02/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-03\": {\n      name: \"sidebar-03\",\n      title: \"undefined\",\n      description: \"A sidebar with submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-03/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-03/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-04\": {\n      name: \"sidebar-04\",\n      title: \"undefined\",\n      description: \"A floating sidebar with submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-04/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-04/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-05\": {\n      name: \"sidebar-05\",\n      title: \"undefined\",\n      description: \"A sidebar with collapsible submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"label\",\"collapsible\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-05/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-05/components/search-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-05/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-06\": {\n      name: \"sidebar-06\",\n      title: \"undefined\",\n      description: \"A sidebar with submenus as dropdowns.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"card\",\"dropdown-menu\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-06/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-06/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-06/components/nav-main.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-06/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-07\": {\n      name: \"sidebar-07\",\n      title: \"undefined\",\n      description: \"A sidebar that collapses to icons.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"collapsible\",\"dropdown-menu\",\"avatar\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-07/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-07/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-07/components/nav-main.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-07/components/nav-projects.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-07/components/nav-user.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-07/components/team-switcher.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-07/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-08\": {\n      name: \"sidebar-08\",\n      title: \"undefined\",\n      description: \"An inset sidebar with secondary navigation.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"collapsible\",\"dropdown-menu\",\"avatar\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-08/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-08/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-08/components/nav-main.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-08/components/nav-projects.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-08/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-08/components/nav-user.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-08/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-09\": {\n      name: \"sidebar-09\",\n      title: \"undefined\",\n      description: \"Collapsible nested sidebars.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"collapsible\",\"dropdown-menu\",\"avatar\",\"switch\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-09/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-09/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-09/components/nav-user.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-09/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-10\": {\n      name: \"sidebar-10\",\n      title: \"undefined\",\n      description: \"A sidebar in a popover.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"popover\",\"collapsible\",\"dropdown-menu\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-10/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-10/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-10/components/nav-actions.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-10/components/nav-favorites.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-10/components/nav-main.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-10/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-10/components/nav-workspaces.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-10/components/team-switcher.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-10/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-11\": {\n      name: \"sidebar-11\",\n      title: \"undefined\",\n      description: \"A sidebar with a collapsible file tree.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"collapsible\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-11/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-11/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-11/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-12\": {\n      name: \"sidebar-12\",\n      title: \"undefined\",\n      description: \"A sidebar with a calendar.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"collapsible\",\"calendar\",\"dropdown-menu\",\"avatar\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-12/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-12/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-12/components/calendars.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-12/components/date-picker.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-12/components/nav-user.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-12/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-13\": {\n      name: \"sidebar-13\",\n      title: \"undefined\",\n      description: \"A sidebar in a dialog.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"button\",\"dialog\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-13/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-13/components/settings-dialog.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-13/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-14\": {\n      name: \"sidebar-14\",\n      title: \"undefined\",\n      description: \"A sidebar on the right.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-14/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-14/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-14/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-15\": {\n      name: \"sidebar-15\",\n      title: \"undefined\",\n      description: \"A left and right sidebar.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"popover\",\"collapsible\",\"dropdown-menu\",\"calendar\",\"avatar\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-15/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/calendars.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/date-picker.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/nav-favorites.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/nav-main.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/nav-user.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/nav-workspaces.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/sidebar-left.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/sidebar-right.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-15/components/team-switcher.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-15/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-16\": {\n      name: \"sidebar-16\",\n      title: \"undefined\",\n      description: \"A sidebar with a sticky site header.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\",\"breadcrumb\",\"separator\",\"collapsible\",\"dropdown-menu\",\"avatar\",\"button\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/sidebar-16/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-16/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-16/components/nav-main.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-16/components/nav-projects.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-16/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-16/components/nav-user.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-16/components/search-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      },{\n        path: \"registry/new-york-v4/blocks/sidebar-16/components/site-header.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/sidebar-16/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\",\"dashboard\"],\n      meta: undefined,\n    },\n    \"login-01\": {\n      name: \"login-01\",\n      title: \"undefined\",\n      description: \"A simple login form.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/login-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/login/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/login-01/components/login-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/login-01/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"login\"],\n      meta: undefined,\n    },\n    \"login-02\": {\n      name: \"login-02\",\n      title: \"undefined\",\n      description: \"A two column login page with a cover image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"input\",\"label\",\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/login-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/login/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/login-02/components/login-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/login-02/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"login\"],\n      meta: undefined,\n    },\n    \"login-03\": {\n      name: \"login-03\",\n      title: \"undefined\",\n      description: \"A login page with a muted background color.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/login-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/login/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/login-03/components/login-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/login-03/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"login\"],\n      meta: undefined,\n    },\n    \"login-04\": {\n      name: \"login-04\",\n      title: \"undefined\",\n      description: \"A login page with form and image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/login-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/login/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/login-04/components/login-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/login-04/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"login\"],\n      meta: undefined,\n    },\n    \"login-05\": {\n      name: \"login-05\",\n      title: \"undefined\",\n      description: \"A simple email-only login page.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"input\",\"label\",\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/login-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/login/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/login-05/components/login-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/login-05/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"login\"],\n      meta: undefined,\n    },\n    \"signup-01\": {\n      name: \"signup-01\",\n      title: \"undefined\",\n      description: \"A simple signup form.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"card\",\"input\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/signup-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/signup/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/signup-01/components/signup-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/signup-01/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"signup\"],\n      meta: undefined,\n    },\n    \"signup-02\": {\n      name: \"signup-02\",\n      title: \"undefined\",\n      description: \"A two column signup page with a cover image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"input\",\"label\",\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/signup-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/signup/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/signup-02/components/signup-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/signup-02/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"signup\"],\n      meta: undefined,\n    },\n    \"signup-03\": {\n      name: \"signup-03\",\n      title: \"undefined\",\n      description: \"A signup page with a muted background color.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/signup-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/signup/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/signup-03/components/signup-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/signup-03/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"signup\"],\n      meta: undefined,\n    },\n    \"signup-04\": {\n      name: \"signup-04\",\n      title: \"undefined\",\n      description: \"A signup page with form and image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/signup-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/signup/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/signup-04/components/signup-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/signup-04/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"signup\"],\n      meta: undefined,\n    },\n    \"signup-05\": {\n      name: \"signup-05\",\n      title: \"undefined\",\n      description: \"A simple signup form with social providers.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\",\"input\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/blocks/signup-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/signup/page.tsx\"\n      },{\n        path: \"registry/new-york-v4/blocks/signup-05/components/signup-form.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/blocks/signup-05/page.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\",\"signup\"],\n      meta: undefined,\n    },\n    \"chart-area-axes\": {\n      name: \"chart-area-axes\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-axes.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-axes.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-default\": {\n      name: \"chart-area-default\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-default.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-default.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-gradient\": {\n      name: \"chart-area-gradient\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-gradient.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-gradient.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-icons\": {\n      name: \"chart-area-icons\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-icons.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-icons.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-interactive\": {\n      name: \"chart-area-interactive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\",\"select\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-interactive.tsx\",\n        type: \"registry:component\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-interactive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-legend\": {\n      name: \"chart-area-legend\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-legend.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-legend.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-linear\": {\n      name: \"chart-area-linear\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-linear.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-linear.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-stacked-expand\": {\n      name: \"chart-area-stacked-expand\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-stacked-expand.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-stacked-expand.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-stacked\": {\n      name: \"chart-area-stacked\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-stacked.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-stacked.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-area-step\": {\n      name: \"chart-area-step\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-area-step.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-area-step.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-area\"],\n      meta: undefined,\n    },\n    \"chart-bar-active\": {\n      name: \"chart-bar-active\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-active.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-active.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-default\": {\n      name: \"chart-bar-default\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-default.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-default.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-horizontal\": {\n      name: \"chart-bar-horizontal\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-horizontal.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-horizontal.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-interactive\": {\n      name: \"chart-bar-interactive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-interactive.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-interactive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-label-custom\": {\n      name: \"chart-bar-label-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-label-custom.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-label-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-label\": {\n      name: \"chart-bar-label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-label.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-label.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-mixed\": {\n      name: \"chart-bar-mixed\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-mixed.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-mixed.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-multiple\": {\n      name: \"chart-bar-multiple\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-multiple.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-multiple.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-negative\": {\n      name: \"chart-bar-negative\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-negative.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-negative.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-bar-stacked\": {\n      name: \"chart-bar-stacked\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-bar-stacked.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-bar-stacked.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-bar\"],\n      meta: undefined,\n    },\n    \"chart-line-default\": {\n      name: \"chart-line-default\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-default.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-default.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-dots-colors\": {\n      name: \"chart-line-dots-colors\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-dots-colors.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-dots-colors.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-dots-custom\": {\n      name: \"chart-line-dots-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-dots-custom.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-dots-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-dots\": {\n      name: \"chart-line-dots\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-dots.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-dots.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-interactive\": {\n      name: \"chart-line-interactive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-interactive.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-interactive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-label-custom\": {\n      name: \"chart-line-label-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-label-custom.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-label-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-label\": {\n      name: \"chart-line-label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-label.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-label.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-linear\": {\n      name: \"chart-line-linear\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-linear.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-linear.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-multiple\": {\n      name: \"chart-line-multiple\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-multiple.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-multiple.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-line-step\": {\n      name: \"chart-line-step\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-line-step.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-line-step.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-line\"],\n      meta: undefined,\n    },\n    \"chart-pie-donut-active\": {\n      name: \"chart-pie-donut-active\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-donut-active.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-donut-active.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-donut-text\": {\n      name: \"chart-pie-donut-text\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-donut-text.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-donut-text.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-donut\": {\n      name: \"chart-pie-donut\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-donut.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-donut.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-interactive\": {\n      name: \"chart-pie-interactive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-interactive.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-interactive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-label-custom\": {\n      name: \"chart-pie-label-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-label-custom.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-label-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-label-list\": {\n      name: \"chart-pie-label-list\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-label-list.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-label-list.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-label\": {\n      name: \"chart-pie-label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-label.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-label.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-legend\": {\n      name: \"chart-pie-legend\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-legend.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-legend.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-separator-none\": {\n      name: \"chart-pie-separator-none\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-separator-none.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-separator-none.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-simple\": {\n      name: \"chart-pie-simple\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-simple.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-simple.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-pie-stacked\": {\n      name: \"chart-pie-stacked\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-pie-stacked.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-pie-stacked.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-pie\"],\n      meta: undefined,\n    },\n    \"chart-radar-default\": {\n      name: \"chart-radar-default\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-default.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-default.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-dots\": {\n      name: \"chart-radar-dots\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-dots.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-dots.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-grid-circle-fill\": {\n      name: \"chart-radar-grid-circle-fill\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-grid-circle-fill.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-grid-circle-fill.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-grid-circle-no-lines\": {\n      name: \"chart-radar-grid-circle-no-lines\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-grid-circle-no-lines.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-grid-circle-no-lines.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-grid-circle\": {\n      name: \"chart-radar-grid-circle\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-grid-circle.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-grid-circle.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-grid-custom\": {\n      name: \"chart-radar-grid-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-grid-custom.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-grid-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-grid-fill\": {\n      name: \"chart-radar-grid-fill\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-grid-fill.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-grid-fill.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-grid-none\": {\n      name: \"chart-radar-grid-none\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-grid-none.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-grid-none.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-icons\": {\n      name: \"chart-radar-icons\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-icons.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-icons.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-label-custom\": {\n      name: \"chart-radar-label-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-label-custom.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-label-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-legend\": {\n      name: \"chart-radar-legend\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-legend.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-legend.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-lines-only\": {\n      name: \"chart-radar-lines-only\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-lines-only.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-lines-only.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-multiple\": {\n      name: \"chart-radar-multiple\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-multiple.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-multiple.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radar-radius\": {\n      name: \"chart-radar-radius\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radar-radius.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radar-radius.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radar\"],\n      meta: undefined,\n    },\n    \"chart-radial-grid\": {\n      name: \"chart-radial-grid\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radial-grid.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radial-grid.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radial\"],\n      meta: undefined,\n    },\n    \"chart-radial-label\": {\n      name: \"chart-radial-label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radial-label.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radial-label.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radial\"],\n      meta: undefined,\n    },\n    \"chart-radial-shape\": {\n      name: \"chart-radial-shape\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radial-shape.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radial-shape.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radial\"],\n      meta: undefined,\n    },\n    \"chart-radial-simple\": {\n      name: \"chart-radial-simple\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radial-simple.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radial-simple.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radial\"],\n      meta: undefined,\n    },\n    \"chart-radial-stacked\": {\n      name: \"chart-radial-stacked\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radial-stacked.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radial-stacked.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radial\"],\n      meta: undefined,\n    },\n    \"chart-radial-text\": {\n      name: \"chart-radial-text\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-radial-text.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-radial-text.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-radial\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-default\": {\n      name: \"chart-tooltip-default\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-default.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-default.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-indicator-line\": {\n      name: \"chart-tooltip-indicator-line\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-indicator-line.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-indicator-line.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-indicator-none\": {\n      name: \"chart-tooltip-indicator-none\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-indicator-none.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-indicator-none.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-label-none\": {\n      name: \"chart-tooltip-label-none\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-label-none.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-label-none.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-label-custom\": {\n      name: \"chart-tooltip-label-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-label-custom.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-label-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-label-formatter\": {\n      name: \"chart-tooltip-label-formatter\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-label-formatter.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-label-formatter.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-formatter\": {\n      name: \"chart-tooltip-formatter\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-formatter.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-formatter.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-icons\": {\n      name: \"chart-tooltip-icons\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-icons.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-icons.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"chart-tooltip-advanced\": {\n      name: \"chart-tooltip-advanced\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\"card\",\"chart\"],\n      files: [{\n        path: \"registry/new-york-v4/charts/chart-tooltip-advanced.tsx\",\n        type: \"registry:block\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/charts/chart-tooltip-advanced.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"charts\",\"charts-tooltip\"],\n      meta: undefined,\n    },\n    \"utils\": {\n      name: \"utils\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:lib\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/lib/utils.ts\",\n        type: \"registry:lib\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/lib/utils.ts\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"use-mobile\": {\n      name: \"use-mobile\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:hook\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/hooks/use-mobile.ts\",\n        type: \"registry:hook\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/hooks/use-mobile.ts\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"accordion-demo\": {\n      name: \"accordion-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"accordion\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/accordion-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/accordion-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert-demo\": {\n      name: \"alert-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"alert\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/alert-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/alert-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert-destructive\": {\n      name: \"alert-destructive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"alert\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/alert-destructive.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/alert-destructive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert-dialog-demo\": {\n      name: \"alert-dialog-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"alert-dialog\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/alert-dialog-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/alert-dialog-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"aspect-ratio-demo\": {\n      name: \"aspect-ratio-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"aspect-ratio\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/aspect-ratio-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/aspect-ratio-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"avatar-demo\": {\n      name: \"avatar-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"avatar\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/avatar-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/avatar-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"badge-demo\": {\n      name: \"badge-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"badge\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/badge-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/badge-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"badge-destructive\": {\n      name: \"badge-destructive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"badge\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/badge-destructive.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/badge-destructive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"badge-outline\": {\n      name: \"badge-outline\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"badge\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/badge-outline.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/badge-outline.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"badge-secondary\": {\n      name: \"badge-secondary\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"badge\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/badge-secondary.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/badge-secondary.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb-demo\": {\n      name: \"breadcrumb-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"breadcrumb\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/breadcrumb-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/breadcrumb-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb-separator\": {\n      name: \"breadcrumb-separator\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"breadcrumb\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/breadcrumb-separator.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/breadcrumb-separator.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb-dropdown\": {\n      name: \"breadcrumb-dropdown\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"breadcrumb\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/breadcrumb-dropdown.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/breadcrumb-dropdown.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb-ellipsis\": {\n      name: \"breadcrumb-ellipsis\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"breadcrumb\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/breadcrumb-ellipsis.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/breadcrumb-ellipsis.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb-link\": {\n      name: \"breadcrumb-link\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"breadcrumb\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/breadcrumb-link.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/breadcrumb-link.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb-responsive\": {\n      name: \"breadcrumb-responsive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"breadcrumb\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/breadcrumb-responsive.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/breadcrumb-responsive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-demo\": {\n      name: \"button-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-default\": {\n      name: \"button-default\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-default.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-default.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-secondary\": {\n      name: \"button-secondary\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-secondary.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-secondary.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-destructive\": {\n      name: \"button-destructive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-destructive.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-destructive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-outline\": {\n      name: \"button-outline\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-outline.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-outline.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-ghost\": {\n      name: \"button-ghost\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-ghost.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-ghost.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-link\": {\n      name: \"button-link\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-link.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-link.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-with-icon\": {\n      name: \"button-with-icon\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-with-icon.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-with-icon.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-loading\": {\n      name: \"button-loading\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-loading.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-loading.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-icon\": {\n      name: \"button-icon\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-icon.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-icon.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-as-child\": {\n      name: \"button-as-child\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-as-child.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-as-child.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-rounded\": {\n      name: \"button-rounded\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-rounded.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-rounded.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-size\": {\n      name: \"button-size\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-size.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-size.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-demo\": {\n      name: \"button-group-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-nested\": {\n      name: \"button-group-nested\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-nested.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-nested.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-size\": {\n      name: \"button-group-size\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-size.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-size.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-separator\": {\n      name: \"button-group-separator\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-separator.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-separator.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-split\": {\n      name: \"button-group-split\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-split.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-split.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-input\": {\n      name: \"button-group-input\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-input.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-input.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-dropdown\": {\n      name: \"button-group-dropdown\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-dropdown.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-dropdown.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-select\": {\n      name: \"button-group-select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-select.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-select.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-popover\": {\n      name: \"button-group-popover\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-popover.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-popover.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-input-group\": {\n      name: \"button-group-input-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-input-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-input-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-orientation\": {\n      name: \"button-group-orientation\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/button-group-orientation.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/button-group-orientation.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"calendar-demo\": {\n      name: \"calendar-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"calendar\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/calendar-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/calendar-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"card-demo\": {\n      name: \"card-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"card\",\"button\",\"switch\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/card-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/card-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"card-with-form\": {\n      name: \"card-with-form\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"select\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/card-with-form.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/card-with-form.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel-demo\": {\n      name: \"carousel-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"carousel\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/carousel-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/carousel-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel-size\": {\n      name: \"carousel-size\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"carousel\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/carousel-size.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/carousel-size.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel-spacing\": {\n      name: \"carousel-spacing\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"carousel\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/carousel-spacing.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/carousel-spacing.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel-orientation\": {\n      name: \"carousel-orientation\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"carousel\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/carousel-orientation.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/carousel-orientation.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel-api\": {\n      name: \"carousel-api\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"carousel\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/carousel-api.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/carousel-api.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel-plugin\": {\n      name: \"carousel-plugin\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"carousel\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/carousel-plugin.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/carousel-plugin.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"checkbox-demo\": {\n      name: \"checkbox-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"checkbox\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/checkbox-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/checkbox-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"checkbox-disabled\": {\n      name: \"checkbox-disabled\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"checkbox\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/checkbox-disabled.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/checkbox-disabled.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"checkbox-with-text\": {\n      name: \"checkbox-with-text\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"checkbox\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/checkbox-with-text.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/checkbox-with-text.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"collapsible-demo\": {\n      name: \"collapsible-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"collapsible\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/collapsible-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/collapsible-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"combobox-demo\": {\n      name: \"combobox-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"command\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/combobox-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/combobox-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"combobox-dropdown-menu\": {\n      name: \"combobox-dropdown-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"command\",\"dropdown-menu\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/combobox-dropdown-menu.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/combobox-dropdown-menu.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"combobox-popover\": {\n      name: \"combobox-popover\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"combobox\",\"popover\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/combobox-popover.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/combobox-popover.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"combobox-responsive\": {\n      name: \"combobox-responsive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"combobox\",\"popover\",\"drawer\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/combobox-responsive.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/combobox-responsive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"command-demo\": {\n      name: \"command-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"command\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/command-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/command-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"command-dialog\": {\n      name: \"command-dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"command\",\"dialog\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/command-dialog.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/command-dialog.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"context-menu-demo\": {\n      name: \"context-menu-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"context-menu\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/context-menu-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/context-menu-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"data-table-demo\": {\n      name: \"data-table-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"data-table\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/data-table-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/data-table-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"date-picker-demo\": {\n      name: \"date-picker-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\",\"calendar\",\"popover\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/date-picker-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/date-picker-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"date-picker-with-presets\": {\n      name: \"date-picker-with-presets\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\",\"calendar\",\"popover\",\"select\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/date-picker-with-presets.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/date-picker-with-presets.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"date-picker-with-range\": {\n      name: \"date-picker-with-range\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\",\"calendar\",\"popover\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/date-picker-with-range.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/date-picker-with-range.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dialog-demo\": {\n      name: \"dialog-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"dialog\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/dialog-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/dialog-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dialog-close-button\": {\n      name: \"dialog-close-button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"dialog\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/dialog-close-button.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/dialog-close-button.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"drawer-demo\": {\n      name: \"drawer-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"drawer\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/drawer-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/drawer-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-demo\": {\n      name: \"empty-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"empty\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/empty-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/empty-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-icon\": {\n      name: \"empty-icon\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"empty\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/empty-icon.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/empty-icon.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-avatar\": {\n      name: \"empty-avatar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"empty\",\"button\",\"avatar\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/empty-avatar.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/empty-avatar.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-avatar-group\": {\n      name: \"empty-avatar-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"empty\",\"button\",\"avatar\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/empty-avatar-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/empty-avatar-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-input-group\": {\n      name: \"empty-input-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"empty\",\"button\",\"input\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/empty-input-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/empty-input-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-outline\": {\n      name: \"empty-outline\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"empty\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/empty-outline.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/empty-outline.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-background\": {\n      name: \"empty-background\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"empty\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/empty-background.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/empty-background.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-demo\": {\n      name: \"field-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-input\": {\n      name: \"field-input\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-input.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-input.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-textarea\": {\n      name: \"field-textarea\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-textarea.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-textarea.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-fieldset\": {\n      name: \"field-fieldset\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-fieldset.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-fieldset.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-radio\": {\n      name: \"field-radio\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-radio.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-radio.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-checkbox\": {\n      name: \"field-checkbox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-checkbox.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-checkbox.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-switch\": {\n      name: \"field-switch\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-switch.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-switch.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-slider\": {\n      name: \"field-slider\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-slider.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-slider.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-select\": {\n      name: \"field-select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-select.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-select.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-choice-card\": {\n      name: \"field-choice-card\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-choice-card.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-choice-card.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-group\": {\n      name: \"field-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-responsive\": {\n      name: \"field-responsive\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/field-responsive.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/field-responsive.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-next-demo\": {\n      name: \"form-next-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input\",\"textarea\",\"button\",\"card\",\"spinner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-next-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-next-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-next-complex\": {\n      name: \"form-next-complex\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input\",\"textarea\",\"button\",\"card\",\"spinner\",\"checkbox\",\"dialog\",\"radio-group\",\"select\",\"switch\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-next-complex.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-next-complex.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-demo\": {\n      name: \"form-rhf-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input\",\"input-group\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-input\": {\n      name: \"form-rhf-input\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-input.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-input.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-select\": {\n      name: \"form-rhf-select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"select\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-select.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-select.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-checkbox\": {\n      name: \"form-rhf-checkbox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"checkbox\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-checkbox.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-checkbox.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-switch\": {\n      name: \"form-rhf-switch\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"switch\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-switch.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-switch.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-textarea\": {\n      name: \"form-rhf-textarea\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"textarea\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-textarea.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-textarea.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-radiogroup\": {\n      name: \"form-rhf-radiogroup\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"radio-group\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-radiogroup.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-radiogroup.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-array\": {\n      name: \"form-rhf-array\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input\",\"input-group\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-array.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-array.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-complex\": {\n      name: \"form-rhf-complex\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"button\",\"card\",\"checkbox\",\"radio-group\",\"select\",\"switch\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-complex.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-complex.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-rhf-password\": {\n      name: \"form-rhf-password\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input-group\",\"progress\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-rhf-password.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-rhf-password.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-demo\": {\n      name: \"form-tanstack-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input\",\"input-group\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-input\": {\n      name: \"form-tanstack-input\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-input.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-input.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-textarea\": {\n      name: \"form-tanstack-textarea\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"textarea\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-textarea.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-textarea.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-select\": {\n      name: \"form-tanstack-select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"select\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-select.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-select.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-checkbox\": {\n      name: \"form-tanstack-checkbox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"checkbox\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-checkbox.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-checkbox.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-switch\": {\n      name: \"form-tanstack-switch\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"switch\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-switch.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-switch.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-radiogroup\": {\n      name: \"form-tanstack-radiogroup\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"radio-group\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-radiogroup.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-radiogroup.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-array\": {\n      name: \"form-tanstack-array\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"input\",\"input-group\",\"button\",\"card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-array.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-array.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"form-tanstack-complex\": {\n      name: \"form-tanstack-complex\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\",\"button\",\"card\",\"checkbox\",\"radio-group\",\"select\",\"switch\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/form-tanstack-complex.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/form-tanstack-complex.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"drawer-dialog\": {\n      name: \"drawer-dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"drawer\",\"dialog\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/drawer-dialog.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/drawer-dialog.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dropdown-menu-demo\": {\n      name: \"dropdown-menu-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"dropdown-menu\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/dropdown-menu-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/dropdown-menu-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dropdown-menu-checkboxes\": {\n      name: \"dropdown-menu-checkboxes\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"dropdown-menu\",\"checkbox\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/dropdown-menu-checkboxes.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/dropdown-menu-checkboxes.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dropdown-menu-radio-group\": {\n      name: \"dropdown-menu-radio-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"dropdown-menu\",\"radio-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/dropdown-menu-radio-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/dropdown-menu-radio-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dropdown-menu-dialog\": {\n      name: \"dropdown-menu-dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"dropdown-menu\",\"dialog\",\"button\",\"input\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/dropdown-menu-dialog.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/dropdown-menu-dialog.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"hover-card-demo\": {\n      name: \"hover-card-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"hover-card\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/hover-card-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/hover-card-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-demo\": {\n      name: \"input-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-disabled\": {\n      name: \"input-disabled\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-disabled.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-disabled.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-file\": {\n      name: \"input-file\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-file.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-file.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-with-button\": {\n      name: \"input-with-button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-with-button.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-with-button.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-with-label\": {\n      name: \"input-with-label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input\",\"button\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-with-label.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-with-label.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-with-text\": {\n      name: \"input-with-text\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input\",\"button\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-with-text.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-with-text.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-demo\": {\n      name: \"input-group-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-label\": {\n      name: \"input-group-label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-label.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-label.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-text\": {\n      name: \"input-group-text\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-text.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-text.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-tooltip\": {\n      name: \"input-group-tooltip\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\",\"tooltip\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-tooltip.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-tooltip.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-button\": {\n      name: \"input-group-button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-button.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-button.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-button-group\": {\n      name: \"input-group-button-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\",\"button-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-button-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-button-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-dropdown\": {\n      name: \"input-group-dropdown\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\",\"dropdown-menu\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-dropdown.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-dropdown.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-spinner\": {\n      name: \"input-group-spinner\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\",\"spinner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-spinner.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-spinner.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-textarea\": {\n      name: \"input-group-textarea\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\",\"textarea\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-textarea.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-textarea.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-icon\": {\n      name: \"input-group-icon\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-icon.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-icon.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-custom\": {\n      name: \"input-group-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-group\",\"badge\",\"progress\",\"dropdown-menu\",\"tooltip\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-group-custom.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-group-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-otp-demo\": {\n      name: \"input-otp-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-otp\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-otp-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-otp-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-otp-pattern\": {\n      name: \"input-otp-pattern\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-otp\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-otp-pattern.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-otp-pattern.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-otp-separator\": {\n      name: \"input-otp-separator\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-otp\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-otp-separator.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-otp-separator.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-otp-controlled\": {\n      name: \"input-otp-controlled\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input-otp\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/input-otp-controlled.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/input-otp-controlled.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-demo\": {\n      name: \"item-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-size\": {\n      name: \"item-size\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-size.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-size.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-variant\": {\n      name: \"item-variant\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-variant.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-variant.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-icon\": {\n      name: \"item-icon\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-icon.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-icon.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-image\": {\n      name: \"item-image\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-image.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-image.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-avatar\": {\n      name: \"item-avatar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-avatar.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-avatar.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-group\": {\n      name: \"item-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-header\": {\n      name: \"item-header\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-header.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-header.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-dropdown\": {\n      name: \"item-dropdown\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-dropdown.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-dropdown.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-link\": {\n      name: \"item-link\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"item\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/item-link.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/item-link.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"kbd-demo\": {\n      name: \"kbd-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"kbd\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/kbd-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/kbd-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"kbd-tooltip\": {\n      name: \"kbd-tooltip\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"kbd\",\"tooltip\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/kbd-tooltip.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/kbd-tooltip.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"kbd-input-group\": {\n      name: \"kbd-input-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"kbd\",\"input\",\"button\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/kbd-input-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/kbd-input-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"kbd-button\": {\n      name: \"kbd-button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"kbd\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/kbd-button.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/kbd-button.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"kbd-group\": {\n      name: \"kbd-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"kbd\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/kbd-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/kbd-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"label-demo\": {\n      name: \"label-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/label-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/label-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"menubar-demo\": {\n      name: \"menubar-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"menubar\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/menubar-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/menubar-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"navigation-menu-demo\": {\n      name: \"navigation-menu-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"navigation-menu\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/navigation-menu-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/navigation-menu-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"native-select-demo\": {\n      name: \"native-select-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"native-select\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/native-select-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/native-select-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"native-select-groups\": {\n      name: \"native-select-groups\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"native-select\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/native-select-groups.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/native-select-groups.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"native-select-disabled\": {\n      name: \"native-select-disabled\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"native-select\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/native-select-disabled.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/native-select-disabled.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"native-select-invalid\": {\n      name: \"native-select-invalid\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"native-select\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/native-select-invalid.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/native-select-invalid.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"pagination-demo\": {\n      name: \"pagination-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"pagination\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/pagination-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/pagination-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"popover-demo\": {\n      name: \"popover-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"popover\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/popover-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/popover-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"progress-demo\": {\n      name: \"progress-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"progress\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/progress-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/progress-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"radio-group-demo\": {\n      name: \"radio-group-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"radio-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/radio-group-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/radio-group-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"resizable-demo\": {\n      name: \"resizable-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"resizable\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/resizable-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/resizable-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"resizable-demo-with-handle\": {\n      name: \"resizable-demo-with-handle\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"resizable\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/resizable-demo-with-handle.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/resizable-demo-with-handle.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"resizable-vertical\": {\n      name: \"resizable-vertical\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"resizable\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/resizable-vertical.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/resizable-vertical.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"resizable-handle\": {\n      name: \"resizable-handle\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"resizable\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/resizable-handle.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/resizable-handle.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"scroll-area-demo\": {\n      name: \"scroll-area-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"scroll-area\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/scroll-area-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/scroll-area-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"scroll-area-horizontal-demo\": {\n      name: \"scroll-area-horizontal-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"scroll-area\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/scroll-area-horizontal-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/scroll-area-horizontal-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"select-demo\": {\n      name: \"select-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"select\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/select-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/select-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"select-scrollable\": {\n      name: \"select-scrollable\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"select\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/select-scrollable.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/select-scrollable.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"separator-demo\": {\n      name: \"separator-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"separator\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/separator-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/separator-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sheet-demo\": {\n      name: \"sheet-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"sheet\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/sheet-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/sheet-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sheet-side\": {\n      name: \"sheet-side\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"sheet\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/sheet-side.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/sheet-side.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"skeleton-demo\": {\n      name: \"skeleton-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"skeleton\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/skeleton-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/skeleton-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"skeleton-card\": {\n      name: \"skeleton-card\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"skeleton\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/skeleton-card.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/skeleton-card.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"slider-demo\": {\n      name: \"slider-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"slider\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/slider-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/slider-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sonner-demo\": {\n      name: \"sonner-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"sonner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/sonner-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/sonner-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sonner-types\": {\n      name: \"sonner-types\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"sonner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/sonner-types.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/sonner-types.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-demo\": {\n      name: \"spinner-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-basic\": {\n      name: \"spinner-basic\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-basic.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-basic.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-button\": {\n      name: \"spinner-button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-button.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-button.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-badge\": {\n      name: \"spinner-badge\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\",\"badge\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-badge.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-badge.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-input-group\": {\n      name: \"spinner-input-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\",\"button\",\"input\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-input-group.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-input-group.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-empty\": {\n      name: \"spinner-empty\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-empty.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-empty.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-color\": {\n      name: \"spinner-color\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-color.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-color.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-custom\": {\n      name: \"spinner-custom\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-custom.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-custom.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-size\": {\n      name: \"spinner-size\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-size.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-size.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-item\": {\n      name: \"spinner-item\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"spinner\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/spinner-item.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/spinner-item.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"switch-demo\": {\n      name: \"switch-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"switch\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/switch-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/switch-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"table-demo\": {\n      name: \"table-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"table\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/table-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/table-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"tabs-demo\": {\n      name: \"tabs-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"tabs\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/tabs-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/tabs-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"textarea-demo\": {\n      name: \"textarea-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"textarea\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/textarea-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/textarea-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"textarea-disabled\": {\n      name: \"textarea-disabled\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"textarea\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/textarea-disabled.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/textarea-disabled.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"textarea-with-button\": {\n      name: \"textarea-with-button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"textarea\",\"button\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/textarea-with-button.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/textarea-with-button.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"textarea-with-label\": {\n      name: \"textarea-with-label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"textarea\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/textarea-with-label.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/textarea-with-label.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"textarea-with-text\": {\n      name: \"textarea-with-text\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"textarea\",\"label\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/textarea-with-text.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/textarea-with-text.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-demo\": {\n      name: \"toggle-group-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-group-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-group-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-disabled\": {\n      name: \"toggle-group-disabled\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-group-disabled.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-group-disabled.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-lg\": {\n      name: \"toggle-group-lg\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-group-lg.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-group-lg.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-outline\": {\n      name: \"toggle-group-outline\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-group-outline.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-group-outline.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-sm\": {\n      name: \"toggle-group-sm\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-group-sm.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-group-sm.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-single\": {\n      name: \"toggle-group-single\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-group-single.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-group-single.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-spacing\": {\n      name: \"toggle-group-spacing\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle-group\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-group-spacing.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-group-spacing.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-demo\": {\n      name: \"toggle-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-disabled\": {\n      name: \"toggle-disabled\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-disabled.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-disabled.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-lg\": {\n      name: \"toggle-lg\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-lg.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-lg.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-outline\": {\n      name: \"toggle-outline\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-outline.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-outline.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-sm\": {\n      name: \"toggle-sm\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-sm.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-sm.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-with-text\": {\n      name: \"toggle-with-text\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/toggle-with-text.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/toggle-with-text.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"tooltip-demo\": {\n      name: \"tooltip-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"tooltip\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/tooltip-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/tooltip-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-blockquote\": {\n      name: \"typography-blockquote\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-blockquote.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-blockquote.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-demo\": {\n      name: \"typography-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-h1\": {\n      name: \"typography-h1\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-h1.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-h1.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-h2\": {\n      name: \"typography-h2\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-h2.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-h2.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-h3\": {\n      name: \"typography-h3\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-h3.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-h3.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-h4\": {\n      name: \"typography-h4\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-h4.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-h4.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-inline-code\": {\n      name: \"typography-inline-code\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-inline-code.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-inline-code.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-large\": {\n      name: \"typography-large\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-large.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-large.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-lead\": {\n      name: \"typography-lead\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-lead.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-lead.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-list\": {\n      name: \"typography-list\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-list.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-list.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-muted\": {\n      name: \"typography-muted\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-muted.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-muted.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-p\": {\n      name: \"typography-p\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-p.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-p.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-small\": {\n      name: \"typography-small\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-small.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-small.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"typography-table\": {\n      name: \"typography-table\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/typography-table.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/typography-table.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"mode-toggle\": {\n      name: \"mode-toggle\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/mode-toggle.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/mode-toggle.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart-bar-demo\": {\n      name: \"chart-bar-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/chart-bar-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/chart-bar-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart-bar-demo-grid\": {\n      name: \"chart-bar-demo-grid\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/chart-bar-demo-grid.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/chart-bar-demo-grid.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart-bar-demo-axis\": {\n      name: \"chart-bar-demo-axis\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/chart-bar-demo-axis.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/chart-bar-demo-axis.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart-bar-demo-tooltip\": {\n      name: \"chart-bar-demo-tooltip\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/chart-bar-demo-tooltip.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/chart-bar-demo-tooltip.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart-bar-demo-legend\": {\n      name: \"chart-bar-demo-legend\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/chart-bar-demo-legend.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/chart-bar-demo-legend.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart-tooltip-demo\": {\n      name: \"chart-tooltip-demo\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: undefined,\n      files: [{\n        path: \"registry/new-york-v4/examples/chart-tooltip-demo.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/chart-tooltip-demo.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"calendar-hijri\": {\n      name: \"calendar-hijri\",\n      title: \"undefined\",\n      description: \"A Persian calendar.\",\n      type: \"registry:example\",\n      registryDependencies: [\"calendar\"],\n      files: [{\n        path: \"registry/new-york-v4/examples/calendar-hijri.tsx\",\n        type: \"registry:example\",\n        target: \"\"\n      }],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/new-york-v4/examples/calendar-hijri.tsx\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"calendar\",\"date\"],\n      meta: {\"iframeHeight\":\"600px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n    },\n  },\n}"
  },
  {
    "path": "apps/v4/registry/_legacy-base-colors.ts",
    "content": "export const baseColors = [\n  {\n    name: \"zinc\",\n    label: \"Zinc\",\n    activeColor: {\n      light: \"240 5.9% 10%\",\n      dark: \"240 5.2% 33.9%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"240 10% 3.9%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"240 10% 3.9%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"240 10% 3.9%\",\n        primary: \"240 5.9% 10%\",\n        \"primary-foreground\": \"0 0% 98%\",\n        secondary: \"240 4.8% 95.9%\",\n        \"secondary-foreground\": \"240 5.9% 10%\",\n        muted: \"240 4.8% 95.9%\",\n        \"muted-foreground\": \"240 3.8% 46.1%\",\n        accent: \"240 4.8% 95.9%\",\n        \"accent-foreground\": \"240 5.9% 10%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"0 0% 98%\",\n        border: \"240 5.9% 90%\",\n        input: \"240 5.9% 90%\",\n        ring: \"240 5.9% 10%\",\n        radius: \"0.5rem\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"240 10% 3.9%\",\n        foreground: \"0 0% 98%\",\n        card: \"240 10% 3.9%\",\n        \"card-foreground\": \"0 0% 98%\",\n        popover: \"240 10% 3.9%\",\n        \"popover-foreground\": \"0 0% 98%\",\n        primary: \"0 0% 98%\",\n        \"primary-foreground\": \"240 5.9% 10%\",\n        secondary: \"240 3.7% 15.9%\",\n        \"secondary-foreground\": \"0 0% 98%\",\n        muted: \"240 3.7% 15.9%\",\n        \"muted-foreground\": \"240 5% 64.9%\",\n        accent: \"240 3.7% 15.9%\",\n        \"accent-foreground\": \"0 0% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"0 0% 98%\",\n        border: \"240 3.7% 15.9%\",\n        input: \"240 3.7% 15.9%\",\n        ring: \"240 4.9% 83.9%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"slate\",\n    label: \"Slate\",\n    activeColor: {\n      light: \"215.4 16.3% 46.9%\",\n      dark: \"215.3 19.3% 34.5%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"222.2 84% 4.9%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"222.2 84% 4.9%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"222.2 84% 4.9%\",\n        primary: \"222.2 47.4% 11.2%\",\n        \"primary-foreground\": \"210 40% 98%\",\n        secondary: \"210 40% 96.1%\",\n        \"secondary-foreground\": \"222.2 47.4% 11.2%\",\n        muted: \"210 40% 96.1%\",\n        \"muted-foreground\": \"215.4 16.3% 46.9%\",\n        accent: \"210 40% 96.1%\",\n        \"accent-foreground\": \"222.2 47.4% 11.2%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"210 40% 98%\",\n        border: \"214.3 31.8% 91.4%\",\n        input: \"214.3 31.8% 91.4%\",\n        ring: \"222.2 84% 4.9%\",\n        radius: \"0.5rem\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"222.2 84% 4.9%\",\n        foreground: \"210 40% 98%\",\n        card: \"222.2 84% 4.9%\",\n        \"card-foreground\": \"210 40% 98%\",\n        popover: \"222.2 84% 4.9%\",\n        \"popover-foreground\": \"210 40% 98%\",\n        primary: \"210 40% 98%\",\n        \"primary-foreground\": \"222.2 47.4% 11.2%\",\n        secondary: \"217.2 32.6% 17.5%\",\n        \"secondary-foreground\": \"210 40% 98%\",\n        muted: \"217.2 32.6% 17.5%\",\n        \"muted-foreground\": \"215 20.2% 65.1%\",\n        accent: \"217.2 32.6% 17.5%\",\n        \"accent-foreground\": \"210 40% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"210 40% 98%\",\n        border: \"217.2 32.6% 17.5%\",\n        input: \"217.2 32.6% 17.5%\",\n        ring: \"212.7 26.8% 83.9\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"stone\",\n    label: \"Stone\",\n    activeColor: {\n      light: \"25 5.3% 44.7%\",\n      dark: \"33.3 5.5% 32.4%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"20 14.3% 4.1%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"20 14.3% 4.1%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"20 14.3% 4.1%\",\n        primary: \"24 9.8% 10%\",\n        \"primary-foreground\": \"60 9.1% 97.8%\",\n        secondary: \"60 4.8% 95.9%\",\n        \"secondary-foreground\": \"24 9.8% 10%\",\n        muted: \"60 4.8% 95.9%\",\n        \"muted-foreground\": \"25 5.3% 44.7%\",\n        accent: \"60 4.8% 95.9%\",\n        \"accent-foreground\": \"24 9.8% 10%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"60 9.1% 97.8%\",\n        border: \"20 5.9% 90%\",\n        input: \"20 5.9% 90%\",\n        ring: \"20 14.3% 4.1%\",\n        radius: \"0.95rem\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"20 14.3% 4.1%\",\n        foreground: \"60 9.1% 97.8%\",\n        card: \"20 14.3% 4.1%\",\n        \"card-foreground\": \"60 9.1% 97.8%\",\n        popover: \"20 14.3% 4.1%\",\n        \"popover-foreground\": \"60 9.1% 97.8%\",\n        primary: \"60 9.1% 97.8%\",\n        \"primary-foreground\": \"24 9.8% 10%\",\n        secondary: \"12 6.5% 15.1%\",\n        \"secondary-foreground\": \"60 9.1% 97.8%\",\n        muted: \"12 6.5% 15.1%\",\n        \"muted-foreground\": \"24 5.4% 63.9%\",\n        accent: \"12 6.5% 15.1%\",\n        \"accent-foreground\": \"60 9.1% 97.8%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"60 9.1% 97.8%\",\n        border: \"12 6.5% 15.1%\",\n        input: \"12 6.5% 15.1%\",\n        ring: \"24 5.7% 82.9%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"gray\",\n    label: \"Gray\",\n    activeColor: {\n      light: \"220 8.9% 46.1%\",\n      dark: \"215 13.8% 34.1%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"224 71.4% 4.1%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"224 71.4% 4.1%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"224 71.4% 4.1%\",\n        primary: \"220.9 39.3% 11%\",\n        \"primary-foreground\": \"210 20% 98%\",\n        secondary: \"220 14.3% 95.9%\",\n        \"secondary-foreground\": \"220.9 39.3% 11%\",\n        muted: \"220 14.3% 95.9%\",\n        \"muted-foreground\": \"220 8.9% 46.1%\",\n        accent: \"220 14.3% 95.9%\",\n        \"accent-foreground\": \"220.9 39.3% 11%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"210 20% 98%\",\n        border: \"220 13% 91%\",\n        input: \"220 13% 91%\",\n        ring: \"224 71.4% 4.1%\",\n        radius: \"0.35rem\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"224 71.4% 4.1%\",\n        foreground: \"210 20% 98%\",\n        card: \"224 71.4% 4.1%\",\n        \"card-foreground\": \"210 20% 98%\",\n        popover: \"224 71.4% 4.1%\",\n        \"popover-foreground\": \"210 20% 98%\",\n        primary: \"210 20% 98%\",\n        \"primary-foreground\": \"220.9 39.3% 11%\",\n        secondary: \"215 27.9% 16.9%\",\n        \"secondary-foreground\": \"210 20% 98%\",\n        muted: \"215 27.9% 16.9%\",\n        \"muted-foreground\": \"217.9 10.6% 64.9%\",\n        accent: \"215 27.9% 16.9%\",\n        \"accent-foreground\": \"210 20% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"210 20% 98%\",\n        border: \"215 27.9% 16.9%\",\n        input: \"215 27.9% 16.9%\",\n        ring: \"216 12.2% 83.9%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"neutral\",\n    label: \"Neutral\",\n    activeColor: {\n      light: \"0 0% 45.1%\",\n      dark: \"0 0% 32.2%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"0 0% 3.9%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"0 0% 3.9%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"0 0% 3.9%\",\n        primary: \"0 0% 9%\",\n        \"primary-foreground\": \"0 0% 98%\",\n        secondary: \"0 0% 96.1%\",\n        \"secondary-foreground\": \"0 0% 9%\",\n        muted: \"0 0% 96.1%\",\n        \"muted-foreground\": \"0 0% 45.1%\",\n        accent: \"0 0% 96.1%\",\n        \"accent-foreground\": \"0 0% 9%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"0 0% 98%\",\n        border: \"0 0% 89.8%\",\n        input: \"0 0% 89.8%\",\n        ring: \"0 0% 3.9%\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"0 0% 3.9%\",\n        foreground: \"0 0% 98%\",\n        card: \"0 0% 3.9%\",\n        \"card-foreground\": \"0 0% 98%\",\n        popover: \"0 0% 3.9%\",\n        \"popover-foreground\": \"0 0% 98%\",\n        primary: \"0 0% 98%\",\n        \"primary-foreground\": \"0 0% 9%\",\n        secondary: \"0 0% 14.9%\",\n        \"secondary-foreground\": \"0 0% 98%\",\n        muted: \"0 0% 14.9%\",\n        \"muted-foreground\": \"0 0% 63.9%\",\n        accent: \"0 0% 14.9%\",\n        \"accent-foreground\": \"0 0% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"0 0% 98%\",\n        border: \"0 0% 14.9%\",\n        input: \"0 0% 14.9%\",\n        ring: \"0 0% 83.1%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"red\",\n    label: \"Red\",\n    activeColor: {\n      light: \"0 72.2% 50.6%\",\n      dark: \"0 72.2% 50.6%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"0 0% 3.9%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"0 0% 3.9%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"0 0% 3.9%\",\n        primary: \"0 72.2% 50.6%\",\n        \"primary-foreground\": \"0 85.7% 97.3%\",\n        secondary: \"0 0% 96.1%\",\n        \"secondary-foreground\": \"0 0% 9%\",\n        muted: \"0 0% 96.1%\",\n        \"muted-foreground\": \"0 0% 45.1%\",\n        accent: \"0 0% 96.1%\",\n        \"accent-foreground\": \"0 0% 9%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"0 0% 98%\",\n        border: \"0 0% 89.8%\",\n        input: \"0 0% 89.8%\",\n        ring: \"0 72.2% 50.6%\",\n        radius: \"0.4rem\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"0 0% 3.9%\",\n        foreground: \"0 0% 98%\",\n        card: \"0 0% 3.9%\",\n        \"card-foreground\": \"0 0% 98%\",\n        popover: \"0 0% 3.9%\",\n        \"popover-foreground\": \"0 0% 98%\",\n        primary: \"0 72.2% 50.6%\",\n        \"primary-foreground\": \"0 85.7% 97.3%\",\n        secondary: \"0 0% 14.9%\",\n        \"secondary-foreground\": \"0 0% 98%\",\n        muted: \"0 0% 14.9%\",\n        \"muted-foreground\": \"0 0% 63.9%\",\n        accent: \"0 0% 14.9%\",\n        \"accent-foreground\": \"0 0% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"0 0% 98%\",\n        border: \"0 0% 14.9%\",\n        input: \"0 0% 14.9%\",\n        ring: \"0 72.2% 50.6%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"rose\",\n    label: \"Rose\",\n    activeColor: {\n      light: \"346.8 77.2% 49.8%\",\n      dark: \"346.8 77.2% 49.8%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"240 10% 3.9%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"240 10% 3.9%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"240 10% 3.9%\",\n        primary: \"346.8 77.2% 49.8%\",\n        \"primary-foreground\": \"355.7 100% 97.3%\",\n        secondary: \"240 4.8% 95.9%\",\n        \"secondary-foreground\": \"240 5.9% 10%\",\n        muted: \"240 4.8% 95.9%\",\n        \"muted-foreground\": \"240 3.8% 46.1%\",\n        accent: \"240 4.8% 95.9%\",\n        \"accent-foreground\": \"240 5.9% 10%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"0 0% 98%\",\n        border: \"240 5.9% 90%\",\n        input: \"240 5.9% 90%\",\n        ring: \"346.8 77.2% 49.8%\",\n        radius: \"0.5rem\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"20 14.3% 4.1%\",\n        foreground: \"0 0% 95%\",\n        popover: \"0 0% 9%\",\n        \"popover-foreground\": \"0 0% 95%\",\n        card: \"24 9.8% 10%\",\n        \"card-foreground\": \"0 0% 95%\",\n        primary: \"346.8 77.2% 49.8%\",\n        \"primary-foreground\": \"355.7 100% 97.3%\",\n        secondary: \"240 3.7% 15.9%\",\n        \"secondary-foreground\": \"0 0% 98%\",\n        muted: \"0 0% 15%\",\n        \"muted-foreground\": \"240 5% 64.9%\",\n        accent: \"12 6.5% 15.1%\",\n        \"accent-foreground\": \"0 0% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"0 85.7% 97.3%\",\n        border: \"240 3.7% 15.9%\",\n        input: \"240 3.7% 15.9%\",\n        ring: \"346.8 77.2% 49.8%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"orange\",\n    label: \"Orange\",\n    activeColor: {\n      light: \"24.6 95% 53.1%\",\n      dark: \"20.5 90.2% 48.2%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"20 14.3% 4.1%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"20 14.3% 4.1%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"20 14.3% 4.1%\",\n        primary: \"24.6 95% 53.1%\",\n        \"primary-foreground\": \"60 9.1% 97.8%\",\n        secondary: \"60 4.8% 95.9%\",\n        \"secondary-foreground\": \"24 9.8% 10%\",\n        muted: \"60 4.8% 95.9%\",\n        \"muted-foreground\": \"25 5.3% 44.7%\",\n        accent: \"60 4.8% 95.9%\",\n        \"accent-foreground\": \"24 9.8% 10%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"60 9.1% 97.8%\",\n        border: \"20 5.9% 90%\",\n        input: \"20 5.9% 90%\",\n        ring: \"24.6 95% 53.1%\",\n        radius: \"0.95rem\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"20 14.3% 4.1%\",\n        foreground: \"60 9.1% 97.8%\",\n        card: \"20 14.3% 4.1%\",\n        \"card-foreground\": \"60 9.1% 97.8%\",\n        popover: \"20 14.3% 4.1%\",\n        \"popover-foreground\": \"60 9.1% 97.8%\",\n        primary: \"20.5 90.2% 48.2%\",\n        \"primary-foreground\": \"60 9.1% 97.8%\",\n        secondary: \"12 6.5% 15.1%\",\n        \"secondary-foreground\": \"60 9.1% 97.8%\",\n        muted: \"12 6.5% 15.1%\",\n        \"muted-foreground\": \"24 5.4% 63.9%\",\n        accent: \"12 6.5% 15.1%\",\n        \"accent-foreground\": \"60 9.1% 97.8%\",\n        destructive: \"0 72.2% 50.6%\",\n        \"destructive-foreground\": \"60 9.1% 97.8%\",\n        border: \"12 6.5% 15.1%\",\n        input: \"12 6.5% 15.1%\",\n        ring: \"20.5 90.2% 48.2%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"green\",\n    label: \"Green\",\n    activeColor: {\n      light: \"142.1 76.2% 36.3%\",\n      dark: \"142.1 70.6% 45.3%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"240 10% 3.9%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"240 10% 3.9%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"240 10% 3.9%\",\n        primary: \"142.1 76.2% 36.3%\",\n        \"primary-foreground\": \"355.7 100% 97.3%\",\n        secondary: \"240 4.8% 95.9%\",\n        \"secondary-foreground\": \"240 5.9% 10%\",\n        muted: \"240 4.8% 95.9%\",\n        \"muted-foreground\": \"240 3.8% 46.1%\",\n        accent: \"240 4.8% 95.9%\",\n        \"accent-foreground\": \"240 5.9% 10%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"0 0% 98%\",\n        border: \"240 5.9% 90%\",\n        input: \"240 5.9% 90%\",\n        ring: \"142.1 76.2% 36.3%\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"20 14.3% 4.1%\",\n        foreground: \"0 0% 95%\",\n        popover: \"0 0% 9%\",\n        \"popover-foreground\": \"0 0% 95%\",\n        card: \"24 9.8% 10%\",\n        \"card-foreground\": \"0 0% 95%\",\n        primary: \"142.1 70.6% 45.3%\",\n        \"primary-foreground\": \"144.9 80.4% 10%\",\n        secondary: \"240 3.7% 15.9%\",\n        \"secondary-foreground\": \"0 0% 98%\",\n        muted: \"0 0% 15%\",\n        \"muted-foreground\": \"240 5% 64.9%\",\n        accent: \"12 6.5% 15.1%\",\n        \"accent-foreground\": \"0 0% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"0 85.7% 97.3%\",\n        border: \"240 3.7% 15.9%\",\n        input: \"240 3.7% 15.9%\",\n        ring: \"142.4 71.8% 29.2%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"blue\",\n    label: \"Blue\",\n    activeColor: {\n      light: \"221.2 83.2% 53.3%\",\n      dark: \"217.2 91.2% 59.8%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"222.2 84% 4.9%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"222.2 84% 4.9%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"222.2 84% 4.9%\",\n        primary: \"221.2 83.2% 53.3%\",\n        \"primary-foreground\": \"210 40% 98%\",\n        secondary: \"210 40% 96.1%\",\n        \"secondary-foreground\": \"222.2 47.4% 11.2%\",\n        muted: \"210 40% 96.1%\",\n        \"muted-foreground\": \"215.4 16.3% 46.9%\",\n        accent: \"210 40% 96.1%\",\n        \"accent-foreground\": \"222.2 47.4% 11.2%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"210 40% 98%\",\n        border: \"214.3 31.8% 91.4%\",\n        input: \"214.3 31.8% 91.4%\",\n        ring: \"221.2 83.2% 53.3%\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"222.2 84% 4.9%\",\n        foreground: \"210 40% 98%\",\n        card: \"222.2 84% 4.9%\",\n        \"card-foreground\": \"210 40% 98%\",\n        popover: \"222.2 84% 4.9%\",\n        \"popover-foreground\": \"210 40% 98%\",\n        primary: \"217.2 91.2% 59.8%\",\n        \"primary-foreground\": \"222.2 47.4% 11.2%\",\n        secondary: \"217.2 32.6% 17.5%\",\n        \"secondary-foreground\": \"210 40% 98%\",\n        muted: \"217.2 32.6% 17.5%\",\n        \"muted-foreground\": \"215 20.2% 65.1%\",\n        accent: \"217.2 32.6% 17.5%\",\n        \"accent-foreground\": \"210 40% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"210 40% 98%\",\n        border: \"217.2 32.6% 17.5%\",\n        input: \"217.2 32.6% 17.5%\",\n        ring: \"224.3 76.3% 48%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"yellow\",\n    label: \"Yellow\",\n    activeColor: {\n      light: \"47.9 95.8% 53.1%\",\n      dark: \"47.9 95.8% 53.1%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"20 14.3% 4.1%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"20 14.3% 4.1%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"20 14.3% 4.1%\",\n        primary: \"47.9 95.8% 53.1%\",\n        \"primary-foreground\": \"26 83.3% 14.1%\",\n        secondary: \"60 4.8% 95.9%\",\n        \"secondary-foreground\": \"24 9.8% 10%\",\n        muted: \"60 4.8% 95.9%\",\n        \"muted-foreground\": \"25 5.3% 44.7%\",\n        accent: \"60 4.8% 95.9%\",\n        \"accent-foreground\": \"24 9.8% 10%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"60 9.1% 97.8%\",\n        border: \"20 5.9% 90%\",\n        input: \"20 5.9% 90%\",\n        ring: \"20 14.3% 4.1%\",\n        radius: \"0.95rem\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"20 14.3% 4.1%\",\n        foreground: \"60 9.1% 97.8%\",\n        card: \"20 14.3% 4.1%\",\n        \"card-foreground\": \"60 9.1% 97.8%\",\n        popover: \"20 14.3% 4.1%\",\n        \"popover-foreground\": \"60 9.1% 97.8%\",\n        primary: \"47.9 95.8% 53.1%\",\n        \"primary-foreground\": \"26 83.3% 14.1%\",\n        secondary: \"12 6.5% 15.1%\",\n        \"secondary-foreground\": \"60 9.1% 97.8%\",\n        muted: \"12 6.5% 15.1%\",\n        \"muted-foreground\": \"24 5.4% 63.9%\",\n        accent: \"12 6.5% 15.1%\",\n        \"accent-foreground\": \"60 9.1% 97.8%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"60 9.1% 97.8%\",\n        border: \"12 6.5% 15.1%\",\n        input: \"12 6.5% 15.1%\",\n        ring: \"35.5 91.7% 32.9%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n  {\n    name: \"violet\",\n    label: \"Violet\",\n    activeColor: {\n      light: \"262.1 83.3% 57.8%\",\n      dark: \"263.4 70% 50.4%\",\n    },\n    cssVars: {\n      light: {\n        background: \"0 0% 100%\",\n        foreground: \"224 71.4% 4.1%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"224 71.4% 4.1%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"224 71.4% 4.1%\",\n        primary: \"262.1 83.3% 57.8%\",\n        \"primary-foreground\": \"210 20% 98%\",\n        secondary: \"220 14.3% 95.9%\",\n        \"secondary-foreground\": \"220.9 39.3% 11%\",\n        muted: \"220 14.3% 95.9%\",\n        \"muted-foreground\": \"220 8.9% 46.1%\",\n        accent: \"220 14.3% 95.9%\",\n        \"accent-foreground\": \"220.9 39.3% 11%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"210 20% 98%\",\n        border: \"220 13% 91%\",\n        input: \"220 13% 91%\",\n        ring: \"262.1 83.3% 57.8%\",\n        \"chart-1\": \"12 76% 61%\",\n        \"chart-2\": \"173 58% 39%\",\n        \"chart-3\": \"197 37% 24%\",\n        \"chart-4\": \"43 74% 66%\",\n        \"chart-5\": \"27 87% 67%\",\n      },\n      dark: {\n        background: \"224 71.4% 4.1%\",\n        foreground: \"210 20% 98%\",\n        card: \"224 71.4% 4.1%\",\n        \"card-foreground\": \"210 20% 98%\",\n        popover: \"224 71.4% 4.1%\",\n        \"popover-foreground\": \"210 20% 98%\",\n        primary: \"263.4 70% 50.4%\",\n        \"primary-foreground\": \"210 20% 98%\",\n        secondary: \"215 27.9% 16.9%\",\n        \"secondary-foreground\": \"210 20% 98%\",\n        muted: \"215 27.9% 16.9%\",\n        \"muted-foreground\": \"217.9 10.6% 64.9%\",\n        accent: \"215 27.9% 16.9%\",\n        \"accent-foreground\": \"210 20% 98%\",\n        destructive: \"0 62.8% 30.6%\",\n        \"destructive-foreground\": \"210 20% 98%\",\n        border: \"215 27.9% 16.9%\",\n        input: \"215 27.9% 16.9%\",\n        ring: \"263.4 70% 50.4%\",\n        \"chart-1\": \"220 70% 50%\",\n        \"chart-2\": \"160 60% 45%\",\n        \"chart-3\": \"30 80% 55%\",\n        \"chart-4\": \"280 65% 60%\",\n        \"chart-5\": \"340 75% 55%\",\n      },\n    },\n  },\n] as const\n\nexport type BaseColor = (typeof baseColors)[number]\n\nexport const baseColorsV4 = {\n  stone: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-white\n      foreground: \"oklch(0.147 0.004 49.25)\", // --color-stone-950\n      card: \"oklch(1 0 0)\", // --color-white\n      \"card-foreground\": \"oklch(0.147 0.004 49.25)\", // --color-stone-950\n      popover: \"oklch(1 0 0)\", // --color-white\n      \"popover-foreground\": \"oklch(0.147 0.004 49.25)\", // --color-stone-950\n      primary: \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      \"primary-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      secondary: \"oklch(0.97 0.001 106.424)\", // --color-stone-100\n      \"secondary-foreground\": \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      muted: \"oklch(0.97 0.001 106.424)\", // --color-stone-100\n      \"muted-foreground\": \"oklch(0.553 0.013 58.071)\", // --color-stone-500\n      accent: \"oklch(0.97 0.001 106.424)\", // --color-stone-100\n      \"accent-foreground\": \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      border: \"oklch(0.923 0.003 48.717)\", // --color-stone-200\n      input: \"oklch(0.923 0.003 48.717)\", // --color-stone-200\n      ring: \"oklch(0.709 0.01 56.259)\", // --color-stone-400\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\", // --color-teal-600\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\", // --color-cyan-900\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\", // --color-amber-400\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      radius: \"0.625rem\",\n      sidebar: \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      \"sidebar-foreground\": \"oklch(0.147 0.004 49.25)\", // --color-stone-950\n      \"sidebar-primary\": \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      \"sidebar-accent\": \"oklch(0.97 0.001 106.424)\", // --color-stone-100\n      \"sidebar-accent-foreground\": \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      \"sidebar-border\": \"oklch(0.923 0.003 48.717)\", // --color-stone-200\n      \"sidebar-ring\": \"oklch(0.709 0.01 56.259)\", // --color-stone-400\n    },\n    dark: {\n      background: \"oklch(0.147 0.004 49.25)\", // --color-stone-950\n      foreground: \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      card: \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      \"card-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      popover: \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      \"popover-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      primary: \"oklch(0.923 0.003 48.717)\", // --color-stone-200\n      \"primary-foreground\": \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      secondary: \"oklch(0.268 0.007 34.298)\", // --color-stone-800\n      \"secondary-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      muted: \"oklch(0.268 0.007 34.298)\", // --color-stone-800\n      \"muted-foreground\": \"oklch(0.709 0.01 56.259)\", // --color-stone-400\n      accent: \"oklch(0.268 0.007 34.298)\", // --color-stone-800\n      \"accent-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-500\n      border: \"oklch(1 0 0 / 10%)\", // --color-white\n      input: \"oklch(1 0 0 / 15%)\", // --color-white\n      ring: \"oklch(0.553 0.013 58.071)\", // --color-stone-500\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\", // --color-emerald-500\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\", // --color-purple-500\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      sidebar: \"oklch(0.216 0.006 56.043)\", // --color-stone-900\n      \"sidebar-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      \"sidebar-accent\": \"oklch(0.268 0.007 34.298)\", // --color-stone-800\n      \"sidebar-accent-foreground\": \"oklch(0.985 0.001 106.423)\", // --color-stone-50\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white\n      \"sidebar-ring\": \"oklch(0.553 0.013 58.071)\", // --color-stone-500\n    },\n  },\n  zinc: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      card: \"oklch(1 0 0)\", // --color-zinc-50\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      popover: \"oklch(1 0 0)\", // --color-zinc-50\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      primary: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"primary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200\n      ring: \"oklch(0.705 0.015 286.067)\", // --color-zinc-400\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\", // --color-teal-600\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\", // --color-cyan-900\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\", // --color-amber-400\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      radius: \"0.625rem\",\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200\n      \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      primary: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200\n      \"primary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400\n      border: \"oklch(1 0 0 / 10%)\", // --color-white\n      input: \"oklch(1 0 0 / 15%)\", // --color-white\n      ring: \"oklch(0.552 0.016 285.938)\", // --color-zinc-500\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\", // --color-emerald-500\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\", // --color-purple-500\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white\n      \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500\n    },\n  },\n  neutral: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-neutral-50\n      foreground: \"oklch(0.145 0 0)\", // --color-neutral-950\n      card: \"oklch(1 0 0)\", // --color-neutral-50\n      \"card-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      popover: \"oklch(1 0 0)\", // --color-neutral-50\n      \"popover-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      primary: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      secondary: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"secondary-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      muted: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"muted-foreground\": \"oklch(0.556 0 0)\", // --color-neutral-500\n      accent: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"accent-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      border: \"oklch(0.922 0 0)\", // --color-neutral-200\n      input: \"oklch(0.922 0 0)\", // --color-neutral-200\n      ring: \"oklch(0.708 0 0)\", // --color-neutral-400\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\", // --color-teal-600\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\", // --color-cyan-900\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\", // --color-amber-400\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      radius: \"0.625rem\",\n      sidebar: \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      \"sidebar-primary\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-accent\": \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-border\": \"oklch(0.922 0 0)\", // --color-neutral-200\n      \"sidebar-ring\": \"oklch(0.708 0 0)\", // --color-neutral-400\n    },\n    dark: {\n      background: \"oklch(0.145 0 0)\", // --color-neutral-950\n      foreground: \"oklch(0.985 0 0)\", // --color-neutral-50\n      card: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      popover: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      primary: \"oklch(0.922 0 0)\", // --color-neutral-200\n      \"primary-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      secondary: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      muted: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"muted-foreground\": \"oklch(0.708 0 0)\", // --color-neutral-400\n      accent: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400\n      border: \"oklch(1 0 0 / 10%)\", // --color-white\n      input: \"oklch(1 0 0 / 15%)\", // --color-white\n      ring: \"oklch(0.556 0 0)\", // --color-neutral-500\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\", // --color-emerald-500\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\", // --color-purple-500\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      sidebar: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-accent\": \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white\n      \"sidebar-ring\": \"oklch(0.556 0 0)\", // --color-neutral-500\n    },\n  },\n  gray: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-white (closest to gray-50)\n      foreground: \"oklch(0.13 0.028 261.692)\", // --color-gray-950\n      card: \"oklch(1 0 0)\", // --color-white (closest to gray-50)\n      \"card-foreground\": \"oklch(0.13 0.028 261.692)\", // --color-gray-950\n      popover: \"oklch(1 0 0)\", // --color-white (closest to gray-50)\n      \"popover-foreground\": \"oklch(0.13 0.028 261.692)\", // --color-gray-950\n      primary: \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      \"primary-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      secondary: \"oklch(0.967 0.003 264.542)\", // --color-gray-100\n      \"secondary-foreground\": \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      muted: \"oklch(0.967 0.003 264.542)\", // --color-gray-100\n      \"muted-foreground\": \"oklch(0.551 0.027 264.364)\", // --color-gray-500\n      accent: \"oklch(0.967 0.003 264.542)\", // --color-gray-100\n      \"accent-foreground\": \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      border: \"oklch(0.928 0.006 264.531)\", // --color-gray-200\n      input: \"oklch(0.928 0.006 264.531)\", // --color-gray-200\n      ring: \"oklch(0.707 0.022 261.325)\", // --color-gray-400\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\", // --color-teal-600\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\", // --color-cyan-900\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\", // --color-amber-400\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      radius: \"0.625rem\",\n      sidebar: \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      \"sidebar-foreground\": \"oklch(0.13 0.028 261.692)\", // --color-gray-950\n      \"sidebar-primary\": \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      \"sidebar-accent\": \"oklch(0.967 0.003 264.542)\", // --color-gray-100\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      \"sidebar-border\": \"oklch(0.928 0.006 264.531)\", // --color-gray-200\n      \"sidebar-ring\": \"oklch(0.707 0.022 261.325)\", // --color-gray-400\n    },\n    dark: {\n      background: \"oklch(0.13 0.028 261.692)\", // --color-gray-950\n      foreground: \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      card: \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      \"card-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      popover: \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      \"popover-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      primary: \"oklch(0.928 0.006 264.531)\", // --color-gray-200\n      \"primary-foreground\": \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      secondary: \"oklch(0.278 0.033 256.848)\", // --color-gray-800\n      \"secondary-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      muted: \"oklch(0.278 0.033 256.848)\", // --color-gray-800\n      \"muted-foreground\": \"oklch(0.707 0.022 261.325)\", // --color-gray-400\n      accent: \"oklch(0.278 0.033 256.848)\", // --color-gray-800\n      \"accent-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400\n      border: \"oklch(1 0 0 / 10%)\", // --color-white\n      input: \"oklch(1 0 0 / 15%)\", // --color-white\n      ring: \"oklch(0.551 0.027 264.364)\", // --color-gray-500\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\", // --color-emerald-500\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\", // --color-purple-500\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      sidebar: \"oklch(0.21 0.034 264.665)\", // --color-gray-900\n      \"sidebar-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      \"sidebar-accent\": \"oklch(0.278 0.033 256.848)\", // --color-gray-800\n      \"sidebar-accent-foreground\": \"oklch(0.985 0.002 247.839)\", // --color-gray-50\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white\n      \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\", // --color-gray-500\n    },\n  },\n  slate: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-white (closest to slate-50)\n      foreground: \"oklch(0.129 0.042 264.695)\", // --color-slate-950\n      card: \"oklch(1 0 0)\", // --color-white (closest to slate-50)\n      \"card-foreground\": \"oklch(0.129 0.042 264.695)\", // --color-slate-950\n      popover: \"oklch(1 0 0)\", // --color-white (closest to slate-50)\n      \"popover-foreground\": \"oklch(0.129 0.042 264.695)\", // --color-slate-950\n      primary: \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      \"primary-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      secondary: \"oklch(0.968 0.007 247.896)\", // --color-slate-100\n      \"secondary-foreground\": \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      muted: \"oklch(0.968 0.007 247.896)\", // --color-slate-100\n      \"muted-foreground\": \"oklch(0.554 0.046 257.417)\", // --color-slate-500\n      accent: \"oklch(0.968 0.007 247.896)\", // --color-slate-100\n      \"accent-foreground\": \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      border: \"oklch(0.929 0.013 255.508)\", // --color-slate-200\n      input: \"oklch(0.929 0.013 255.508)\", // --color-slate-200\n      ring: \"oklch(0.704 0.04 256.788)\", // --color-slate-400\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\", // --color-teal-600\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\", // --color-cyan-900\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\", // --color-amber-400\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      radius: \"0.625rem\",\n      sidebar: \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      \"sidebar-foreground\": \"oklch(0.129 0.042 264.695)\", // --color-slate-950\n      \"sidebar-primary\": \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      \"sidebar-accent\": \"oklch(0.968 0.007 247.896)\", // --color-slate-100\n      \"sidebar-accent-foreground\": \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      \"sidebar-border\": \"oklch(0.929 0.013 255.508)\", // --color-slate-200\n      \"sidebar-ring\": \"oklch(0.704 0.04 256.788)\", // --color-slate-400\n    },\n    dark: {\n      background: \"oklch(0.129 0.042 264.695)\", // --color-slate-950\n      foreground: \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      card: \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      \"card-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      popover: \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      \"popover-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      primary: \"oklch(0.929 0.013 255.508)\", // --color-slate-200\n      \"primary-foreground\": \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      secondary: \"oklch(0.279 0.041 260.031)\", // --color-slate-800\n      \"secondary-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      muted: \"oklch(0.279 0.041 260.031)\", // --color-slate-800\n      \"muted-foreground\": \"oklch(0.704 0.04 256.788)\", // --color-slate-400\n      accent: \"oklch(0.279 0.041 260.031)\", // --color-slate-800\n      \"accent-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400\n      border: \"oklch(1 0 0 / 10%)\", // --color-white\n      input: \"oklch(1 0 0 / 15%)\", // --color-white\n      ring: \"oklch(0.551 0.027 264.364)\", // --color-slate-500\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\", // --color-emerald-500\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\", // --color-purple-500\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      sidebar: \"oklch(0.208 0.042 265.755)\", // --color-slate-900\n      \"sidebar-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      \"sidebar-accent\": \"oklch(0.279 0.041 260.031)\", // --color-slate-800\n      \"sidebar-accent-foreground\": \"oklch(0.984 0.003 247.858)\", // --color-slate-50\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white\n      \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\", // --color-slate-500\n    },\n  },\n} as const\n\nexport const baseColorsOKLCH = {\n  default: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-neutral-50\n      foreground: \"oklch(0.145 0 0)\", // --color-neutral-950\n      card: \"oklch(1 0 0)\", // --color-neutral-50\n      \"card-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      popover: \"oklch(1 0 0)\", // --color-neutral-50\n      \"popover-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      primary: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      secondary: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"secondary-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      muted: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"muted-foreground\": \"oklch(0.556 0 0)\", // --color-neutral-500\n      accent: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"accent-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      border: \"oklch(0.922 0 0)\", // --color-neutral-200\n      input: \"oklch(0.922 0 0)\", // --color-neutral-200\n      ring: \"oklch(0.708 0 0)\", // --color-neutral-400\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\", // --color-teal-600\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\", // --color-cyan-900\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\", // --color-amber-400\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      radius: \"0.625rem\",\n      sidebar: \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      \"sidebar-primary\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-accent\": \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-border\": \"oklch(0.922 0 0)\", // --color-neutral-200\n      \"sidebar-ring\": \"oklch(0.708 0 0)\", // --color-neutral-400\n    },\n    dark: {\n      background: \"oklch(0.145 0 0)\", // --color-neutral-950\n      foreground: \"oklch(0.985 0 0)\", // --color-neutral-50\n      card: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      popover: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      primary: \"oklch(0.922 0 0)\", // --color-neutral-200\n      \"primary-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      secondary: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      muted: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"muted-foreground\": \"oklch(0.708 0 0)\", // --color-neutral-400\n      accent: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400\n      border: \"oklch(1 0 0 / 10%)\", // --color-white\n      input: \"oklch(1 0 0 / 15%)\", // --color-white\n      ring: \"oklch(0.556 0 0)\", // --color-neutral-500\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\", // --color-emerald-500\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\", // --color-purple-500\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      sidebar: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-accent\": \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white\n      \"sidebar-ring\": \"oklch(0.556 0 0)\", // --color-neutral-500\n    },\n  },\n  neutral: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-neutral-50\n      foreground: \"oklch(0.145 0 0)\", // --color-neutral-950\n      card: \"oklch(1 0 0)\", // --color-neutral-50\n      \"card-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      popover: \"oklch(1 0 0)\", // --color-neutral-50\n      \"popover-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      primary: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      secondary: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"secondary-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      muted: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"muted-foreground\": \"oklch(0.556 0 0)\", // --color-neutral-500\n      accent: \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"accent-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      border: \"oklch(0.922 0 0)\", // --color-neutral-200\n      input: \"oklch(0.922 0 0)\", // --color-neutral-200\n      ring: \"oklch(0.708 0 0)\", // --color-neutral-400\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\", // --color-teal-600\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\", // --color-cyan-900\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\", // --color-amber-400\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      radius: \"0.625rem\",\n      sidebar: \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-foreground\": \"oklch(0.145 0 0)\", // --color-neutral-950\n      \"sidebar-primary\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-accent\": \"oklch(0.97 0 0)\", // --color-neutral-100\n      \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-border\": \"oklch(0.922 0 0)\", // --color-neutral-200\n      \"sidebar-ring\": \"oklch(0.708 0 0)\", // --color-neutral-400\n    },\n    dark: {\n      background: \"oklch(0.145 0 0)\", // --color-neutral-950\n      foreground: \"oklch(0.985 0 0)\", // --color-neutral-50\n      card: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      popover: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      primary: \"oklch(0.922 0 0)\", // --color-neutral-200\n      \"primary-foreground\": \"oklch(0.205 0 0)\", // --color-neutral-900\n      secondary: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      muted: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"muted-foreground\": \"oklch(0.708 0 0)\", // --color-neutral-400\n      accent: \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400\n      border: \"oklch(1 0 0 / 10%)\", // --color-white\n      input: \"oklch(1 0 0 / 15%)\", // --color-white\n      ring: \"oklch(0.556 0 0)\", // --color-neutral-500\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\", // --color-emerald-500\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\", // --color-purple-500\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      sidebar: \"oklch(0.205 0 0)\", // --color-neutral-900\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-accent\": \"oklch(0.269 0 0)\", // --color-neutral-800\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-neutral-50\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white\n      \"sidebar-ring\": \"oklch(0.556 0 0)\", // --color-neutral-500\n    },\n  },\n  zinc: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      card: \"oklch(1 0 0)\", // --color-zinc-50\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      popover: \"oklch(1 0 0)\", // --color-zinc-50\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      primary: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"primary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200\n      ring: \"oklch(0.705 0.015 286.067)\", // --color-zinc-400\n      \"chart-1\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-2\": \"oklch(0.6 0.118 184.704)\", // --color-teal-600\n      \"chart-3\": \"oklch(0.398 0.07 227.392)\", // --color-cyan-900\n      \"chart-4\": \"oklch(0.828 0.189 84.429)\", // --color-amber-400\n      \"chart-5\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200\n      \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      primary: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200\n      \"primary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400\n      border: \"oklch(1 0 0 / 10%)\", // --color-white\n      input: \"oklch(1 0 0 / 15%)\", // --color-white\n      ring: \"oklch(0.552 0.016 285.938)\", // --color-zinc-500\n      \"chart-1\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-2\": \"oklch(0.696 0.17 162.48)\", // --color-emerald-500\n      \"chart-3\": \"oklch(0.769 0.188 70.08)\", // --color-amber-500\n      \"chart-4\": \"oklch(0.627 0.265 303.9)\", // --color-purple-500\n      \"chart-5\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white\n      \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500\n    },\n  },\n  red: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      card: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      popover: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      primary: \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      \"primary-foreground\": \"oklch(0.971 0.013 17.38)\", // --color-red-50\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500 (from zinc)\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600 (from zinc)\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      ring: \"oklch(0.704 0.191 22.216)\", // --color-red-400\n      \"chart-1\": \"oklch(0.808 0.114 19.571)\", // --color-red-300\n      \"chart-2\": \"oklch(0.637 0.237 25.331)\", // --color-red-500\n      \"chart-3\": \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      \"chart-4\": \"oklch(0.505 0.213 27.518)\", // --color-red-700\n      \"chart-5\": \"oklch(0.444 0.177 26.899)\", // --color-red-800\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      \"sidebar-primary\": \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      \"sidebar-primary-foreground\": \"oklch(0.971 0.013 17.38)\", // --color-red-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      \"sidebar-ring\": \"oklch(0.704 0.191 22.216)\", // --color-red-400\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      primary: \"oklch(0.637 0.237 25.331)\", // --color-red-500 (approx HSL 0 72.2% 50.6%)\n      \"primary-foreground\": \"oklch(0.971 0.013 17.38)\", // --color-red-50 (approx HSL 0 85.7% 97.3%)\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400 (from zinc)\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400 (from zinc)\n      border: \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      input: \"oklch(1 0 0 / 15%)\", // --color-white (from zinc)\n      ring: \"oklch(0.396 0.141 25.723)\", // --color-red-900\n      \"chart-1\": \"oklch(0.808 0.114 19.571)\", // --color-red-300\n      \"chart-2\": \"oklch(0.637 0.237 25.331)\", // --color-red-500\n      \"chart-3\": \"oklch(0.577 0.245 27.325)\", // --color-red-600\n      \"chart-4\": \"oklch(0.505 0.213 27.518)\", // --color-red-700\n      \"chart-5\": \"oklch(0.444 0.177 26.899)\", // --color-red-800\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-primary\": \"oklch(0.637 0.237 25.331)\", // --color-red-500 (approx HSL 0 72.2% 50.6%)\n      \"sidebar-primary-foreground\": \"oklch(0.971 0.013 17.38)\", // --color-red-50 (approx HSL 0 85.7% 97.3%)\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      \"sidebar-ring\": \"oklch(0.396 0.141 25.723)\", // --color-red-900\n    },\n  },\n  rose: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      card: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      popover: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      primary: \"oklch(0.586 0.253 17.585)\", // --color-rose-600\n      \"primary-foreground\": \"oklch(0.969 0.015 12.422)\", // --color-rose-50\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500 (from zinc)\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600 (from zinc)\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      ring: \"oklch(0.712 0.194 13.428)\", // --color-rose-400\n      \"chart-1\": \"oklch(0.81 0.117 11.638)\", // --color-rose-300\n      \"chart-2\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      \"chart-3\": \"oklch(0.586 0.253 17.585)\", // --color-rose-600\n      \"chart-4\": \"oklch(0.514 0.222 16.935)\", // --color-rose-700\n      \"chart-5\": \"oklch(0.455 0.188 13.697)\", // --color-rose-800\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      \"sidebar-primary\": \"oklch(0.586 0.253 17.585)\", // --color-rose-600\n      \"sidebar-primary-foreground\": \"oklch(0.969 0.015 12.422)\", // --color-rose-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      \"sidebar-ring\": \"oklch(0.712 0.194 13.428)\", // --color-rose-400\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      primary: \"oklch(0.645 0.246 16.439)\", // --color-rose-500 (approx HSL 346.8 77.2% 49.8%)\n      \"primary-foreground\": \"oklch(0.969 0.015 12.422)\", // --color-rose-50 (approx HSL 355.7 100% 97.3%)\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400 (from zinc)\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400 (from zinc)\n      border: \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      input: \"oklch(1 0 0 / 15%)\", // --color-white (from zinc)\n      ring: \"oklch(0.41 0.159 10.272)\", // --color-rose-900\n      \"chart-1\": \"oklch(0.81 0.117 11.638)\", // --color-rose-300\n      \"chart-2\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500\n      \"chart-3\": \"oklch(0.586 0.253 17.585)\", // --color-rose-600\n      \"chart-4\": \"oklch(0.514 0.222 16.935)\", // --color-rose-700\n      \"chart-5\": \"oklch(0.455 0.188 13.697)\", // --color-rose-800\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-primary\": \"oklch(0.645 0.246 16.439)\", // --color-rose-500 (approx HSL 346.8 77.2% 49.8%)\n      \"sidebar-primary-foreground\": \"oklch(0.969 0.015 12.422)\", // --color-rose-50 (approx HSL 355.7 100% 97.3%)\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      \"sidebar-ring\": \"oklch(0.41 0.159 10.272)\", // --color-rose-900\n    },\n  },\n  orange: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      card: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      popover: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      primary: \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"primary-foreground\": \"oklch(0.98 0.016 73.684)\", // --color-orange-50\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500 (from zinc)\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600 (from zinc)\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      ring: \"oklch(0.75 0.183 55.934)\", // --color-orange-400\n      \"chart-1\": \"oklch(0.837 0.128 66.29)\", // --color-orange-300\n      \"chart-2\": \"oklch(0.705 0.213 47.604)\", // --color-orange-500\n      \"chart-3\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-4\": \"oklch(0.553 0.195 38.402)\", // --color-orange-700\n      \"chart-5\": \"oklch(0.47 0.157 37.304)\", // --color-orange-800\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      \"sidebar-primary\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"sidebar-primary-foreground\": \"oklch(0.98 0.016 73.684)\", // --color-orange-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      \"sidebar-ring\": \"oklch(0.75 0.183 55.934)\", // --color-orange-400\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      primary: \"oklch(0.705 0.213 47.604)\", // --color-orange-500\n      \"primary-foreground\": \"oklch(0.98 0.016 73.684)\", // --color-orange-50\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400 (from zinc)\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400 (from zinc)\n      border: \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      input: \"oklch(1 0 0 / 15%)\", // --color-white (from zinc)\n      ring: \"oklch(0.408 0.123 38.172)\", // --color-orange-900\n      \"chart-1\": \"oklch(0.837 0.128 66.29)\", // --color-orange-300\n      \"chart-2\": \"oklch(0.705 0.213 47.604)\", // --color-orange-500\n      \"chart-3\": \"oklch(0.646 0.222 41.116)\", // --color-orange-600\n      \"chart-4\": \"oklch(0.553 0.195 38.402)\", // --color-orange-700\n      \"chart-5\": \"oklch(0.47 0.157 37.304)\", // --color-orange-800\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-primary\": \"oklch(0.705 0.213 47.604)\", // --color-orange-500\n      \"sidebar-primary-foreground\": \"oklch(0.98 0.016 73.684)\", // --color-orange-50\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      \"sidebar-ring\": \"oklch(0.408 0.123 38.172)\", // --color-orange-900\n    },\n  },\n  green: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      card: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      popover: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      primary: \"oklch(0.648 0.2 131.684)\", // --color-lime-600\n      \"primary-foreground\": \"oklch(0.986 0.031 120.757)\", // --color-lime-50\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500 (from zinc)\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600 (from zinc)\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      ring: \"oklch(0.841 0.238 128.85)\", // --color-lime-400\n      \"chart-1\": \"oklch(0.871 0.15 154.449)\", // --color-green-300\n      \"chart-2\": \"oklch(0.723 0.219 149.579)\", // --color-green-500\n      \"chart-3\": \"oklch(0.627 0.194 149.214)\", // --color-green-600\n      \"chart-4\": \"oklch(0.527 0.154 150.069)\", // --color-green-700\n      \"chart-5\": \"oklch(0.448 0.119 151.328)\", // --color-green-800\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      \"sidebar-primary\": \"oklch(0.648 0.2 131.684)\", // --color-lime-600\n      \"sidebar-primary-foreground\": \"oklch(0.986 0.031 120.757)\", // --color-lime-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      \"sidebar-ring\": \"oklch(0.841 0.238 128.85)\", // --color-lime-400\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      primary: \"oklch(0.648 0.2 131.684)\", // --color-lime-600\n      \"primary-foreground\": \"oklch(0.986 0.031 120.757)\", // --color-lime-50\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400 (from zinc)\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400 (from zinc)\n      border: \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      input: \"oklch(1 0 0 / 15%)\", // --color-white (from zinc)\n      ring: \"oklch(0.405 0.101 131.063)\", // --color-lime-900\n      \"chart-1\": \"oklch(0.871 0.15 154.449)\", // --color-green-300\n      \"chart-2\": \"oklch(0.723 0.219 149.579)\", // --color-green-500\n      \"chart-3\": \"oklch(0.627 0.194 149.214)\", // --color-green-600\n      \"chart-4\": \"oklch(0.527 0.154 150.069)\", // --color-green-700\n      \"chart-5\": \"oklch(0.448 0.119 151.328)\", // --color-green-800\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-primary\": \"oklch(0.768 0.233 130.85)\", // --color-lime-500\n      \"sidebar-primary-foreground\": \"oklch(0.986 0.031 120.757)\", // --color-lime-50\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      \"sidebar-ring\": \"oklch(0.405 0.101 131.063)\", // --color-lime-900\n    },\n  },\n  blue: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      card: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      popover: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      primary: \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"primary-foreground\": \"oklch(0.97 0.014 254.604)\", // --color-blue-50\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500 (from zinc)\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600 (from zinc)\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      ring: \"oklch(0.708 0 0)\", // default ring\n      \"chart-1\": \"oklch(0.809 0.105 251.813)\", // --color-blue-300\n      \"chart-2\": \"oklch(0.623 0.214 259.815)\", // --color-blue-500\n      \"chart-3\": \"oklch(0.546 0.245 262.881)\", // --color-blue-600\n      \"chart-4\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-5\": \"oklch(0.424 0.199 265.638)\", // --color-blue-800\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      \"sidebar-primary\": \"oklch(0.546 0.245 262.881)\", // --color-blue-600\n      \"sidebar-primary-foreground\": \"oklch(0.97 0.014 254.604)\", // --color-blue-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      \"sidebar-ring\": \"oklch(0.708 0 0)\", // default sidebar ring\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      primary: \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"primary-foreground\": \"oklch(0.97 0.014 254.604)\", // --color-blue-50\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400 (from zinc)\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400 (from zinc)\n      border: \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      input: \"oklch(1 0 0 / 15%)\", // --color-white (from zinc)\n      ring: \"oklch(0.556 0 0)\", // default ring (dark)\n      \"chart-1\": \"oklch(0.809 0.105 251.813)\", // --color-blue-300\n      \"chart-2\": \"oklch(0.623 0.214 259.815)\", // --color-blue-500\n      \"chart-3\": \"oklch(0.546 0.245 262.881)\", // --color-blue-600\n      \"chart-4\": \"oklch(0.488 0.243 264.376)\", // --color-blue-700\n      \"chart-5\": \"oklch(0.424 0.199 265.638)\", // --color-blue-800\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-primary\": \"oklch(0.623 0.214 259.815)\", // --color-blue-500\n      \"sidebar-primary-foreground\": \"oklch(0.97 0.014 254.604)\", // --color-blue-50\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      \"sidebar-ring\": \"oklch(0.439 0 0)\", // default sidebar ring (dark)\n    },\n  },\n  yellow: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      card: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      popover: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      primary: \"oklch(0.852 0.199 91.936)\", // --color-yellow-400\n      \"primary-foreground\": \"oklch(0.421 0.095 57.708)\", // --color-yellow-900\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500 (from zinc)\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600 (from zinc)\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      ring: \"oklch(0.852 0.199 91.936)\", // --color-yellow-400\n      \"chart-1\": \"oklch(0.905 0.182 98.111)\", // --color-yellow-300\n      \"chart-2\": \"oklch(0.795 0.184 86.047)\", // --color-yellow-500\n      \"chart-3\": \"oklch(0.681 0.162 75.834)\", // --color-yellow-600\n      \"chart-4\": \"oklch(0.554 0.135 66.442)\", // --color-yellow-700\n      \"chart-5\": \"oklch(0.476 0.114 61.907)\", // --color-yellow-800\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      \"sidebar-primary\": \"oklch(0.681 0.162 75.834)\", // --color-yellow-600\n      \"sidebar-primary-foreground\": \"oklch(0.987 0.026 102.212)\", // --color-yellow-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      \"sidebar-ring\": \"oklch(0.852 0.199 91.936)\", // --color-yellow-400\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      primary: \"oklch(0.795 0.184 86.047)\", // --color-yellow-500 (approx HSL 47.9 95.8% 53.1%)\n      \"primary-foreground\": \"oklch(0.421 0.095 57.708)\", // --color-yellow-900 (approx HSL 26 83.3% 14.1%)\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400 (from zinc)\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400 (from zinc)\n      border: \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      input: \"oklch(1 0 0 / 15%)\", // --color-white (from zinc)\n      ring: \"oklch(0.421 0.095 57.708)\", // --color-yellow-900\n      \"chart-1\": \"oklch(0.905 0.182 98.111)\", // --color-yellow-300\n      \"chart-2\": \"oklch(0.795 0.184 86.047)\", // --color-yellow-500\n      \"chart-3\": \"oklch(0.681 0.162 75.834)\", // --color-yellow-600\n      \"chart-4\": \"oklch(0.554 0.135 66.442)\", // --color-yellow-700\n      \"chart-5\": \"oklch(0.476 0.114 61.907)\", // --color-yellow-800\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-primary\": \"oklch(0.795 0.184 86.047)\", // --color-yellow-500\n      \"sidebar-primary-foreground\": \"oklch(0.987 0.026 102.212)\", // --color-yellow-50\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      \"sidebar-ring\": \"oklch(0.421 0.095 57.708)\", // --color-yellow-900\n    },\n  },\n  violet: {\n    light: {\n      background: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      foreground: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      card: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"card-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      popover: \"oklch(1 0 0)\", // --color-zinc-50 (from zinc)\n      \"popover-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      primary: \"oklch(0.541 0.281 293.009)\", // --color-violet-600\n      \"primary-foreground\": \"oklch(0.969 0.016 293.756)\", // --color-violet-50\n      secondary: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      muted: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"muted-foreground\": \"oklch(0.552 0.016 285.938)\", // --color-zinc-500 (from zinc)\n      accent: \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      destructive: \"oklch(0.577 0.245 27.325)\", // --color-red-600 (from zinc)\n      border: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      input: \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      ring: \"oklch(0.702 0.183 293.541)\", // --color-violet-400\n      \"chart-1\": \"oklch(0.811 0.111 293.571)\", // --color-violet-300\n      \"chart-2\": \"oklch(0.606 0.25 292.717)\", // --color-violet-500\n      \"chart-3\": \"oklch(0.541 0.281 293.009)\", // --color-violet-600\n      \"chart-4\": \"oklch(0.491 0.27 292.581)\", // --color-violet-700\n      \"chart-5\": \"oklch(0.432 0.232 292.759)\", // --color-violet-800\n      sidebar: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      \"sidebar-primary\": \"oklch(0.541 0.281 293.009)\", // --color-violet-600\n      \"sidebar-primary-foreground\": \"oklch(0.969 0.016 293.756)\", // --color-violet-50\n      \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\", // --color-zinc-100 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-border\": \"oklch(0.92 0.004 286.32)\", // --color-zinc-200 (from zinc)\n      \"sidebar-ring\": \"oklch(0.702 0.183 293.541)\", // --color-violet-400\n    },\n    dark: {\n      background: \"oklch(0.141 0.005 285.823)\", // --color-zinc-950 (from zinc)\n      foreground: \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      card: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"card-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      popover: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"popover-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      primary: \"oklch(0.606 0.25 292.717)\", // --color-violet-500\n      \"primary-foreground\": \"oklch(0.969 0.016 293.756)\", // --color-violet-50\n      secondary: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"secondary-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      muted: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"muted-foreground\": \"oklch(0.705 0.015 286.067)\", // --color-zinc-400 (from zinc)\n      accent: \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      destructive: \"oklch(0.704 0.191 22.216)\", // --color-red-400 (from zinc)\n      border: \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      input: \"oklch(1 0 0 / 15%)\", // --color-white (from zinc)\n      ring: \"oklch(0.38 0.189 293.745)\", // --color-violet-900\n      \"chart-1\": \"oklch(0.811 0.111 293.571)\", // --color-violet-300\n      \"chart-2\": \"oklch(0.606 0.25 292.717)\", // --color-violet-500\n      \"chart-3\": \"oklch(0.541 0.281 293.009)\", // --color-violet-600\n      \"chart-4\": \"oklch(0.491 0.27 292.581)\", // --color-violet-700\n      \"chart-5\": \"oklch(0.432 0.232 292.759)\", // --color-violet-800\n      sidebar: \"oklch(0.21 0.006 285.885)\", // --color-zinc-900 (from zinc)\n      \"sidebar-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-primary\": \"oklch(0.606 0.25 292.717)\", // --color-violet-500\n      \"sidebar-primary-foreground\": \"oklch(0.969 0.016 293.756)\", // --color-violet-50\n      \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\", // --color-zinc-800 (from zinc)\n      \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\", // --color-zinc-50 (from zinc)\n      \"sidebar-border\": \"oklch(1 0 0 / 10%)\", // --color-white (from zinc)\n      \"sidebar-ring\": \"oklch(0.38 0.189 293.745)\", // --color-violet-900\n    },\n  },\n}\n"
  },
  {
    "path": "apps/v4/registry/_legacy-colors.ts",
    "content": "export const colors = {\n  inherit: \"inherit\",\n  current: \"currentColor\",\n  transparent: \"transparent\",\n  black: {\n    hex: \"#000000\",\n    rgb: \"rgb(0,0,0)\",\n    hsl: \"hsl(0,0%,0%)\",\n    oklch: \"oklch(0.00,0.00,0)\",\n  },\n  white: {\n    hex: \"#ffffff\",\n    rgb: \"rgb(255,255,255)\",\n    hsl: \"hsl(0,0%,100%)\",\n    oklch: \"oklch(1.00,0.00,0)\",\n  },\n  neutral: [\n    {\n      scale: 50,\n      hex: \"#fafafa\",\n      rgb: \"rgb(250,250,250)\",\n      hsl: \"hsl(0,0%,98%)\",\n      oklch: \"oklch(0.99,0.00,0)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f5f5f5\",\n      rgb: \"rgb(245,245,245)\",\n      hsl: \"hsl(0,0%,96.1%)\",\n      oklch: \"oklch(0.97,0.00,0)\",\n    },\n    {\n      scale: 200,\n      hex: \"#e5e5e5\",\n      rgb: \"rgb(229,229,229)\",\n      hsl: \"hsl(0,0%,89.8%)\",\n      oklch: \"oklch(0.92,0.00,0)\",\n    },\n    {\n      scale: 300,\n      hex: \"#d4d4d4\",\n      rgb: \"rgb(212,212,212)\",\n      hsl: \"hsl(0,0%,83.1%)\",\n      oklch: \"oklch(0.87,0.00,0)\",\n    },\n    {\n      scale: 400,\n      hex: \"#a3a3a3\",\n      rgb: \"rgb(163,163,163)\",\n      hsl: \"hsl(0,0%,63.9%)\",\n      oklch: \"oklch(0.72,0.00,0)\",\n    },\n    {\n      scale: 500,\n      hex: \"#737373\",\n      rgb: \"rgb(115,115,115)\",\n      hsl: \"hsl(0,0%,45.1%)\",\n      oklch: \"oklch(0.56,0.00,0)\",\n    },\n    {\n      scale: 600,\n      hex: \"#525252\",\n      rgb: \"rgb(82,82,82)\",\n      hsl: \"hsl(0,0%,32.2%)\",\n      oklch: \"oklch(0.44,0.00,0)\",\n    },\n    {\n      scale: 700,\n      hex: \"#404040\",\n      rgb: \"rgb(64,64,64)\",\n      hsl: \"hsl(0,0%,25.1%)\",\n      oklch: \"oklch(0.37,0.00,0)\",\n    },\n    {\n      scale: 800,\n      hex: \"#262626\",\n      rgb: \"rgb(38,38,38)\",\n      hsl: \"hsl(0,0%,14.9%)\",\n      oklch: \"oklch(0.27,0.00,0)\",\n    },\n    {\n      scale: 900,\n      hex: \"#171717\",\n      rgb: \"rgb(23,23,23)\",\n      hsl: \"hsl(0,0%,9%)\",\n      oklch: \"oklch(0.20,0.00,0)\",\n    },\n    {\n      scale: 950,\n      hex: \"#0a0a0a\",\n      rgb: \"rgb(10,10,10)\",\n      hsl: \"hsl(0,0%,3.9%)\",\n      oklch: \"oklch(0.14,0.00,0)\",\n    },\n  ],\n  stone: [\n    {\n      scale: 50,\n      hex: \"#fafaf9\",\n      rgb: \"rgb(250,250,249)\",\n      hsl: \"hsl(60,9.1%,97.8%)\",\n      oklch: \"oklch(0.98,0.00,106)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f5f5f4\",\n      rgb: \"rgb(245,245,244)\",\n      hsl: \"hsl(60,4.8%,95.9%)\",\n      oklch: \"oklch(0.97,0.00,106)\",\n    },\n    {\n      scale: 200,\n      hex: \"#e7e5e4\",\n      rgb: \"rgb(231,229,228)\",\n      hsl: \"hsl(20,5.9%,90%)\",\n      oklch: \"oklch(0.92,0.00,49)\",\n    },\n    {\n      scale: 300,\n      hex: \"#d6d3d1\",\n      rgb: \"rgb(214,211,209)\",\n      hsl: \"hsl(24,5.7%,82.9%)\",\n      oklch: \"oklch(0.87,0.00,56)\",\n    },\n    {\n      scale: 400,\n      hex: \"#a8a29e\",\n      rgb: \"rgb(168,162,158)\",\n      hsl: \"hsl(24,5.4%,63.9%)\",\n      oklch: \"oklch(0.72,0.01,56)\",\n    },\n    {\n      scale: 500,\n      hex: \"#78716c\",\n      rgb: \"rgb(120,113,108)\",\n      hsl: \"hsl(25,5.3%,44.7%)\",\n      oklch: \"oklch(0.55,0.01,58)\",\n    },\n    {\n      scale: 600,\n      hex: \"#57534e\",\n      rgb: \"rgb(87,83,78)\",\n      hsl: \"hsl(33.3,5.5%,32.4%)\",\n      oklch: \"oklch(0.44,0.01,74)\",\n    },\n    {\n      scale: 700,\n      hex: \"#44403c\",\n      rgb: \"rgb(68,64,60)\",\n      hsl: \"hsl(30,6.3%,25.1%)\",\n      oklch: \"oklch(0.37,0.01,68)\",\n    },\n    {\n      scale: 800,\n      hex: \"#292524\",\n      rgb: \"rgb(41,37,36)\",\n      hsl: \"hsl(12,6.5%,15.1%)\",\n      oklch: \"oklch(0.27,0.01,34)\",\n    },\n    {\n      scale: 900,\n      hex: \"#1c1917\",\n      rgb: \"rgb(28,25,23)\",\n      hsl: \"hsl(24,9.8%,10%)\",\n      oklch: \"oklch(0.22,0.01,56)\",\n    },\n    {\n      scale: 950,\n      hex: \"#0c0a09\",\n      rgb: \"rgb(12,10,9)\",\n      hsl: \"hsl(20,14.3%,4.1%)\",\n      oklch: \"oklch(0.15,0.00,49)\",\n    },\n  ],\n  zinc: [\n    {\n      scale: 50,\n      hex: \"#fafafa\",\n      rgb: \"rgb(250,250,250)\",\n      hsl: \"hsl(0,0%,98%)\",\n      oklch: \"oklch(0.99,0.00,0)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f4f4f5\",\n      rgb: \"rgb(244,244,245)\",\n      hsl: \"hsl(240,4.8%,95.9%)\",\n      oklch: \"oklch(0.97,0.00,286)\",\n    },\n    {\n      scale: 200,\n      hex: \"#e4e4e7\",\n      rgb: \"rgb(228,228,231)\",\n      hsl: \"hsl(240,5.9%,90%)\",\n      oklch: \"oklch(0.92,0.00,286)\",\n    },\n    {\n      scale: 300,\n      hex: \"#d4d4d8\",\n      rgb: \"rgb(212,212,216)\",\n      hsl: \"hsl(240,4.9%,83.9%)\",\n      oklch: \"oklch(0.87,0.01,286)\",\n    },\n    {\n      scale: 400,\n      hex: \"#a1a1aa\",\n      rgb: \"rgb(161,161,170)\",\n      hsl: \"hsl(240,5%,64.9%)\",\n      oklch: \"oklch(0.71,0.01,286)\",\n    },\n    {\n      scale: 500,\n      hex: \"#71717a\",\n      rgb: \"rgb(113,113,122)\",\n      hsl: \"hsl(240,3.8%,46.1%)\",\n      oklch: \"oklch(0.55,0.01,286)\",\n    },\n    {\n      scale: 600,\n      hex: \"#52525b\",\n      rgb: \"rgb(82,82,91)\",\n      hsl: \"hsl(240,5.2%,33.9%)\",\n      oklch: \"oklch(0.44,0.01,286)\",\n    },\n    {\n      scale: 700,\n      hex: \"#3f3f46\",\n      rgb: \"rgb(63,63,70)\",\n      hsl: \"hsl(240,5.3%,26.1%)\",\n      oklch: \"oklch(0.37,0.01,286)\",\n    },\n    {\n      scale: 800,\n      hex: \"#27272a\",\n      rgb: \"rgb(39,39,42)\",\n      hsl: \"hsl(240,3.7%,15.9%)\",\n      oklch: \"oklch(0.27,0.01,286)\",\n    },\n    {\n      scale: 900,\n      hex: \"#18181b\",\n      rgb: \"rgb(24,24,27)\",\n      hsl: \"hsl(240,5.9%,10%)\",\n      oklch: \"oklch(0.21,0.01,286)\",\n    },\n    {\n      scale: 950,\n      hex: \"#09090b\",\n      rgb: \"rgb(9,9,11)\",\n      hsl: \"hsl(240,10%,3.9%)\",\n      oklch: \"oklch(0.14,0.00,286)\",\n    },\n  ],\n  slate: [\n    {\n      scale: 50,\n      hex: \"#f8fafc\",\n      rgb: \"rgb(248,250,252)\",\n      hsl: \"hsl(210,40%,98%)\",\n      oklch: \"oklch(0.98,0.00,248)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f1f5f9\",\n      rgb: \"rgb(241,245,249)\",\n      hsl: \"hsl(210,40%,96.1%)\",\n      oklch: \"oklch(0.97,0.01,248)\",\n    },\n    {\n      scale: 200,\n      hex: \"#e2e8f0\",\n      rgb: \"rgb(226,232,240)\",\n      hsl: \"hsl(214.3,31.8%,91.4%)\",\n      oklch: \"oklch(0.93,0.01,256)\",\n    },\n    {\n      scale: 300,\n      hex: \"#cbd5e1\",\n      rgb: \"rgb(203,213,225)\",\n      hsl: \"hsl(212.7,26.8%,83.9%)\",\n      oklch: \"oklch(0.87,0.02,253)\",\n    },\n    {\n      scale: 400,\n      hex: \"#94a3b8\",\n      rgb: \"rgb(148,163,184)\",\n      hsl: \"hsl(215,20.2%,65.1%)\",\n      oklch: \"oklch(0.71,0.04,257)\",\n    },\n    {\n      scale: 500,\n      hex: \"#64748b\",\n      rgb: \"rgb(100,116,139)\",\n      hsl: \"hsl(215.4,16.3%,46.9%)\",\n      oklch: \"oklch(0.55,0.04,257)\",\n    },\n    {\n      scale: 600,\n      hex: \"#475569\",\n      rgb: \"rgb(71,85,105)\",\n      hsl: \"hsl(215.3,19.3%,34.5%)\",\n      oklch: \"oklch(0.45,0.04,257)\",\n    },\n    {\n      scale: 700,\n      hex: \"#334155\",\n      rgb: \"rgb(51,65,85)\",\n      hsl: \"hsl(215.3,25%,26.7%)\",\n      oklch: \"oklch(0.37,0.04,257)\",\n    },\n    {\n      scale: 800,\n      hex: \"#1e293b\",\n      rgb: \"rgb(30,41,59)\",\n      hsl: \"hsl(217.2,32.6%,17.5%)\",\n      oklch: \"oklch(0.28,0.04,260)\",\n    },\n    {\n      scale: 900,\n      hex: \"#0f172a\",\n      rgb: \"rgb(15,23,42)\",\n      hsl: \"hsl(222.2,47.4%,11.2%)\",\n      oklch: \"oklch(0.21,0.04,266)\",\n    },\n    {\n      scale: 950,\n      hex: \"#020617\",\n      rgb: \"rgb(2,6,23)\",\n      hsl: \"hsl(222.2,84%,4.9%)\",\n      oklch: \"oklch(0.13,0.04,265)\",\n    },\n  ],\n  gray: [\n    {\n      scale: 50,\n      hex: \"#f9fafb\",\n      rgb: \"rgb(249,250,251)\",\n      hsl: \"hsl(210,20%,98%)\",\n      oklch: \"oklch(0.98,0.00,248)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f3f4f6\",\n      rgb: \"rgb(243,244,246)\",\n      hsl: \"hsl(220,14.3%,95.9%)\",\n      oklch: \"oklch(0.97,0.00,265)\",\n    },\n    {\n      scale: 200,\n      hex: \"#e5e7eb\",\n      rgb: \"rgb(229,231,235)\",\n      hsl: \"hsl(220,13%,91%)\",\n      oklch: \"oklch(0.93,0.01,265)\",\n    },\n    {\n      scale: 300,\n      hex: \"#d1d5db\",\n      rgb: \"rgb(209,213,219)\",\n      hsl: \"hsl(216,12.2%,83.9%)\",\n      oklch: \"oklch(0.87,0.01,258)\",\n    },\n    {\n      scale: 400,\n      hex: \"#9ca3af\",\n      rgb: \"rgb(156,163,175)\",\n      hsl: \"hsl(217.9,10.6%,64.9%)\",\n      oklch: \"oklch(0.71,0.02,261)\",\n    },\n    {\n      scale: 500,\n      hex: \"#6b7280\",\n      rgb: \"rgb(107,114,128)\",\n      hsl: \"hsl(220,8.9%,46.1%)\",\n      oklch: \"oklch(0.55,0.02,264)\",\n    },\n    {\n      scale: 600,\n      hex: \"#4b5563\",\n      rgb: \"rgb(75,85,99)\",\n      hsl: \"hsl(215,13.8%,34.1%)\",\n      oklch: \"oklch(0.45,0.03,257)\",\n    },\n    {\n      scale: 700,\n      hex: \"#374151\",\n      rgb: \"rgb(55,65,81)\",\n      hsl: \"hsl(216.9,19.1%,26.7%)\",\n      oklch: \"oklch(0.37,0.03,260)\",\n    },\n    {\n      scale: 800,\n      hex: \"#1f2937\",\n      rgb: \"rgb(31,41,55)\",\n      hsl: \"hsl(215,27.9%,16.9%)\",\n      oklch: \"oklch(0.28,0.03,257)\",\n    },\n    {\n      scale: 900,\n      hex: \"#111827\",\n      rgb: \"rgb(17,24,39)\",\n      hsl: \"hsl(220.9,39.3%,11%)\",\n      oklch: \"oklch(0.21,0.03,265)\",\n    },\n    {\n      scale: 950,\n      hex: \"#030712\",\n      rgb: \"rgb(3,7,18)\",\n      hsl: \"hsl(224,71.4%,4.1%)\",\n      oklch: \"oklch(0.13,0.03,262)\",\n    },\n  ],\n  mauve: [\n    {\n      scale: 50,\n      hex: \"#fafafb\",\n      rgb: \"rgb(250,250,251)\",\n      hsl: \"hsl(272.4,15%,98.2%)\",\n      oklch: \"oklch(0.98,0.00,310)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f4f2f6\",\n      rgb: \"rgb(244,242,246)\",\n      hsl: \"hsl(272.4,16.1%,95.8%)\",\n      oklch: \"oklch(0.96,0.01,310)\",\n    },\n    {\n      scale: 200,\n      hex: \"#e5e1e8\",\n      rgb: \"rgb(229,225,232)\",\n      hsl: \"hsl(272.5,13%,89.6%)\",\n      oklch: \"oklch(0.92,0.01,310)\",\n    },\n    {\n      scale: 300,\n      hex: \"#d0c9d5\",\n      rgb: \"rgb(208,201,213)\",\n      hsl: \"hsl(272.6,12.6%,81.2%)\",\n      oklch: \"oklch(0.84,0.02,310)\",\n    },\n    {\n      scale: 400,\n      hex: \"#a69bae\",\n      rgb: \"rgb(166,155,174)\",\n      hsl: \"hsl(272.9,10.6%,64.6%)\",\n      oklch: \"oklch(0.70,0.03,310)\",\n    },\n    {\n      scale: 500,\n      hex: \"#81758b\",\n      rgb: \"rgb(129,117,139)\",\n      hsl: \"hsl(273.2,8.6%,50.1%)\",\n      oklch: \"oklch(0.58,0.04,310)\",\n    },\n    {\n      scale: 600,\n      hex: \"#675d70\",\n      rgb: \"rgb(103,93,112)\",\n      hsl: \"hsl(273.2,9.2%,40.2%)\",\n      oklch: \"oklch(0.49,0.03,310)\",\n    },\n    {\n      scale: 700,\n      hex: \"#524959\",\n      rgb: \"rgb(82,73,89)\",\n      hsl: \"hsl(273.3,9.7%,31.7%)\",\n      oklch: \"oklch(0.42,0.03,310)\",\n    },\n    {\n      scale: 800,\n      hex: \"#3d3642\",\n      rgb: \"rgb(61,54,66)\",\n      hsl: \"hsl(273.3,10.2%,23.6%)\",\n      oklch: \"oklch(0.34,0.02,310)\",\n    },\n    {\n      scale: 900,\n      hex: \"#2a252e\",\n      rgb: \"rgb(42,37,46)\",\n      hsl: \"hsl(273.3,10.9%,16.4%)\",\n      oklch: \"oklch(0.28,0.02,310)\",\n    },\n    {\n      scale: 950,\n      hex: \"#161218\",\n      rgb: \"rgb(22,18,24)\",\n      hsl: \"hsl(273.3,14.1%,8.3%)\",\n      oklch: \"oklch(0.19,0.01,310)\",\n    },\n  ],\n  olive: [\n    {\n      scale: 50,\n      hex: \"#f9faf9\",\n      rgb: \"rgb(249,250,249)\",\n      hsl: \"hsl(136.8,13.4%,97.9%)\",\n      oklch: \"oklch(0.98,0.00,155)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f1f4f2\",\n      rgb: \"rgb(241,244,242)\",\n      hsl: \"hsl(136.9,14.2%,95.2%)\",\n      oklch: \"oklch(0.96,0.01,155)\",\n    },\n    {\n      scale: 200,\n      hex: \"#dee5e0\",\n      rgb: \"rgb(222,229,224)\",\n      hsl: \"hsl(137,10.6%,88.5%)\",\n      oklch: \"oklch(0.92,0.01,155)\",\n    },\n    {\n      scale: 300,\n      hex: \"#c4cfc8\",\n      rgb: \"rgb(196,207,200)\",\n      hsl: \"hsl(137.2,10.3%,79.2%)\",\n      oklch: \"oklch(0.84,0.02,155)\",\n    },\n    {\n      scale: 400,\n      hex: \"#94a599\",\n      rgb: \"rgb(148,165,153)\",\n      hsl: \"hsl(137.8,8.7%,61.4%)\",\n      oklch: \"oklch(0.70,0.03,155)\",\n    },\n    {\n      scale: 500,\n      hex: \"#6c8072\",\n      rgb: \"rgb(108,128,114)\",\n      hsl: \"hsl(138.4,8.6%,46.3%)\",\n      oklch: \"oklch(0.58,0.03,155)\",\n    },\n    {\n      scale: 600,\n      hex: \"#56675b\",\n      rgb: \"rgb(86,103,91)\",\n      hsl: \"hsl(138.4,9.1%,37%)\",\n      oklch: \"oklch(0.49,0.03,155)\",\n    },\n    {\n      scale: 700,\n      hex: \"#435147\",\n      rgb: \"rgb(67,81,71)\",\n      hsl: \"hsl(138.4,9.5%,29.1%)\",\n      oklch: \"oklch(0.42,0.02,155)\",\n    },\n    {\n      scale: 800,\n      hex: \"#313c35\",\n      rgb: \"rgb(49,60,53)\",\n      hsl: \"hsl(138.4,10.2%,21.5%)\",\n      oklch: \"oklch(0.34,0.02,155)\",\n    },\n    {\n      scale: 900,\n      hex: \"#222a24\",\n      rgb: \"rgb(34,42,36)\",\n      hsl: \"hsl(138.5,11.2%,14.8%)\",\n      oklch: \"oklch(0.28,0.02,155)\",\n    },\n    {\n      scale: 950,\n      hex: \"#101512\",\n      rgb: \"rgb(16,21,18)\",\n      hsl: \"hsl(138.4,14.2%,7.3%)\",\n      oklch: \"oklch(0.19,0.01,155)\",\n    },\n  ],\n  mist: [\n    {\n      scale: 50,\n      hex: \"#f9fafb\",\n      rgb: \"rgb(249,250,251)\",\n      hsl: \"hsl(189.3,20.3%,97.9%)\",\n      oklch: \"oklch(0.98,0.00,210)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f0f4f5\",\n      rgb: \"rgb(240,244,245)\",\n      hsl: \"hsl(189.4,21.6%,95.1%)\",\n      oklch: \"oklch(0.96,0.01,210)\",\n    },\n    {\n      scale: 200,\n      hex: \"#dce5e6\",\n      rgb: \"rgb(220,229,230)\",\n      hsl: \"hsl(189.4,16.2%,88.4%)\",\n      oklch: \"oklch(0.92,0.01,210)\",\n    },\n    {\n      scale: 300,\n      hex: \"#c1cfd2\",\n      rgb: \"rgb(193,207,210)\",\n      hsl: \"hsl(189.4,15.8%,79%)\",\n      oklch: \"oklch(0.84,0.02,210)\",\n    },\n    {\n      scale: 400,\n      hex: \"#8da5a9\",\n      rgb: \"rgb(141,165,169)\",\n      hsl: \"hsl(189.3,14%,60.9%)\",\n      oklch: \"oklch(0.70,0.03,210)\",\n    },\n    {\n      scale: 500,\n      hex: \"#648085\",\n      rgb: \"rgb(100,128,133)\",\n      hsl: \"hsl(189.3,14.2%,45.7%)\",\n      oklch: \"oklch(0.58,0.03,210)\",\n    },\n    {\n      scale: 600,\n      hex: \"#4f676b\",\n      rgb: \"rgb(79,103,107)\",\n      hsl: \"hsl(189.3,15.1%,36.5%)\",\n      oklch: \"oklch(0.49,0.03,210)\",\n    },\n    {\n      scale: 700,\n      hex: \"#3d5155\",\n      rgb: \"rgb(61,81,85)\",\n      hsl: \"hsl(189.3,15.9%,28.6%)\",\n      oklch: \"oklch(0.42,0.03,210)\",\n    },\n    {\n      scale: 800,\n      hex: \"#2d3c3f\",\n      rgb: \"rgb(45,60,63)\",\n      hsl: \"hsl(189.3,17.2%,21.2%)\",\n      oklch: \"oklch(0.34,0.02,210)\",\n    },\n    {\n      scale: 900,\n      hex: \"#1e2a2c\",\n      rgb: \"rgb(30,42,44)\",\n      hsl: \"hsl(189.3,19.2%,14.6%)\",\n      oklch: \"oklch(0.28,0.02,210)\",\n    },\n    {\n      scale: 950,\n      hex: \"#0e1517\",\n      rgb: \"rgb(14,21,23)\",\n      hsl: \"hsl(189.3,25.3%,7.1%)\",\n      oklch: \"oklch(0.19,0.01,210)\",\n    },\n  ],\n  taupe: [\n    {\n      scale: 50,\n      hex: \"#fbfaf9\",\n      rgb: \"rgb(251,250,249)\",\n      hsl: \"hsl(34,21.3%,97.9%)\",\n      oklch: \"oklch(0.98,0.00,75)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f5f3f0\",\n      rgb: \"rgb(245,243,240)\",\n      hsl: \"hsl(34,22.7%,95.1%)\",\n      oklch: \"oklch(0.96,0.01,75)\",\n    },\n    {\n      scale: 200,\n      hex: \"#e7e2dc\",\n      rgb: \"rgb(231,226,220)\",\n      hsl: \"hsl(34.1,18.7%,88.4%)\",\n      oklch: \"oklch(0.92,0.01,75)\",\n    },\n    {\n      scale: 300,\n      hex: \"#d3cbc0\",\n      rgb: \"rgb(211,203,192)\",\n      hsl: \"hsl(34.1,18.3%,79%)\",\n      oklch: \"oklch(0.84,0.02,75)\",\n    },\n    {\n      scale: 400,\n      hex: \"#aa9e8d\",\n      rgb: \"rgb(170,158,141)\",\n      hsl: \"hsl(34.2,14.8%,61.1%)\",\n      oklch: \"oklch(0.70,0.03,75)\",\n    },\n    {\n      scale: 500,\n      hex: \"#867865\",\n      rgb: \"rgb(134,120,101)\",\n      hsl: \"hsl(34.3,14.1%,46.1%)\",\n      oklch: \"oklch(0.58,0.03,75)\",\n    },\n    {\n      scale: 600,\n      hex: \"#6c6050\",\n      rgb: \"rgb(108,96,80)\",\n      hsl: \"hsl(34.3,14.9%,36.8%)\",\n      oklch: \"oklch(0.49,0.03,75)\",\n    },\n    {\n      scale: 700,\n      hex: \"#554b3e\",\n      rgb: \"rgb(85,75,62)\",\n      hsl: \"hsl(34.3,15.7%,28.9%)\",\n      oklch: \"oklch(0.42,0.03,75)\",\n    },\n    {\n      scale: 800,\n      hex: \"#40382d\",\n      rgb: \"rgb(64,56,45)\",\n      hsl: \"hsl(34.3,17%,21.4%)\",\n      oklch: \"oklch(0.34,0.02,75)\",\n    },\n    {\n      scale: 900,\n      hex: \"#2c271f\",\n      rgb: \"rgb(44,39,31)\",\n      hsl: \"hsl(34.3,17.7%,14.8%)\",\n      oklch: \"oklch(0.28,0.02,75)\",\n    },\n    {\n      scale: 950,\n      hex: \"#17130e\",\n      rgb: \"rgb(23,19,14)\",\n      hsl: \"hsl(34.4,24.8%,7.2%)\",\n      oklch: \"oklch(0.19,0.01,75)\",\n    },\n  ],\n  red: [\n    {\n      scale: 50,\n      hex: \"#fef2f2\",\n      rgb: \"rgb(254,242,242)\",\n      hsl: \"hsl(0,85.7%,97.3%)\",\n      oklch: \"oklch(0.97,0.01,17)\",\n    },\n    {\n      scale: 100,\n      hex: \"#fee2e2\",\n      rgb: \"rgb(254,226,226)\",\n      hsl: \"hsl(0,93.3%,94.1%)\",\n      oklch: \"oklch(0.94,0.03,18)\",\n    },\n    {\n      scale: 200,\n      hex: \"#fecaca\",\n      rgb: \"rgb(254,202,202)\",\n      hsl: \"hsl(0,96.3%,89.4%)\",\n      oklch: \"oklch(0.88,0.06,18)\",\n    },\n    {\n      scale: 300,\n      hex: \"#fca5a5\",\n      rgb: \"rgb(252,165,165)\",\n      hsl: \"hsl(0,93.5%,81.8%)\",\n      oklch: \"oklch(0.81,0.10,20)\",\n    },\n    {\n      scale: 400,\n      hex: \"#f87171\",\n      rgb: \"rgb(248,113,113)\",\n      hsl: \"hsl(0,90.6%,70.8%)\",\n      oklch: \"oklch(0.71,0.17,22)\",\n    },\n    {\n      scale: 500,\n      hex: \"#ef4444\",\n      rgb: \"rgb(239,68,68)\",\n      hsl: \"hsl(0,84.2%,60.2%)\",\n      oklch: \"oklch(0.64,0.21,25)\",\n    },\n    {\n      scale: 600,\n      hex: \"#dc2626\",\n      rgb: \"rgb(220,38,38)\",\n      hsl: \"hsl(0,72.2%,50.6%)\",\n      oklch: \"oklch(0.58,0.22,27)\",\n    },\n    {\n      scale: 700,\n      hex: \"#b91c1c\",\n      rgb: \"rgb(185,28,28)\",\n      hsl: \"hsl(0,73.7%,41.8%)\",\n      oklch: \"oklch(0.51,0.19,28)\",\n    },\n    {\n      scale: 800,\n      hex: \"#991b1b\",\n      rgb: \"rgb(153,27,27)\",\n      hsl: \"hsl(0,70%,35.3%)\",\n      oklch: \"oklch(0.44,0.16,27)\",\n    },\n    {\n      scale: 900,\n      hex: \"#7f1d1d\",\n      rgb: \"rgb(127,29,29)\",\n      hsl: \"hsl(0,62.8%,30.6%)\",\n      oklch: \"oklch(0.40,0.13,26)\",\n    },\n    {\n      scale: 950,\n      hex: \"#450a0a\",\n      rgb: \"rgb(69,10,10)\",\n      hsl: \"hsl(0,74.7%,15.5%)\",\n      oklch: \"oklch(0.26,0.09,26)\",\n    },\n  ],\n  orange: [\n    {\n      scale: 50,\n      hex: \"#fff7ed\",\n      rgb: \"rgb(255,247,237)\",\n      hsl: \"hsl(33.3,100%,96.5%)\",\n      oklch: \"oklch(0.98,0.02,74)\",\n    },\n    {\n      scale: 100,\n      hex: \"#ffedd5\",\n      rgb: \"rgb(255,237,213)\",\n      hsl: \"hsl(34.3,100%,91.8%)\",\n      oklch: \"oklch(0.95,0.04,75)\",\n    },\n    {\n      scale: 200,\n      hex: \"#fed7aa\",\n      rgb: \"rgb(254,215,170)\",\n      hsl: \"hsl(32.1,97.7%,83.1%)\",\n      oklch: \"oklch(0.90,0.07,71)\",\n    },\n    {\n      scale: 300,\n      hex: \"#fdba74\",\n      rgb: \"rgb(253,186,116)\",\n      hsl: \"hsl(30.7,97.2%,72.4%)\",\n      oklch: \"oklch(0.84,0.12,66)\",\n    },\n    {\n      scale: 400,\n      hex: \"#fb923c\",\n      rgb: \"rgb(251,146,60)\",\n      hsl: \"hsl(27,96%,61%)\",\n      oklch: \"oklch(0.76,0.16,56)\",\n    },\n    {\n      scale: 500,\n      hex: \"#f97316\",\n      rgb: \"rgb(249,115,22)\",\n      hsl: \"hsl(24.6,95%,53.1%)\",\n      oklch: \"oklch(0.70,0.19,48)\",\n    },\n    {\n      scale: 600,\n      hex: \"#ea580c\",\n      rgb: \"rgb(234,88,12)\",\n      hsl: \"hsl(20.5,90.2%,48.2%)\",\n      oklch: \"oklch(0.65,0.19,41)\",\n    },\n    {\n      scale: 700,\n      hex: \"#c2410c\",\n      rgb: \"rgb(194,65,12)\",\n      hsl: \"hsl(17.5,88.3%,40.4%)\",\n      oklch: \"oklch(0.55,0.17,38)\",\n    },\n    {\n      scale: 800,\n      hex: \"#9a3412\",\n      rgb: \"rgb(154,52,18)\",\n      hsl: \"hsl(15,79.1%,33.7%)\",\n      oklch: \"oklch(0.47,0.14,37)\",\n    },\n    {\n      scale: 900,\n      hex: \"#7c2d12\",\n      rgb: \"rgb(124,45,18)\",\n      hsl: \"hsl(15.3,74.6%,27.8%)\",\n      oklch: \"oklch(0.41,0.12,38)\",\n    },\n    {\n      scale: 950,\n      hex: \"#431407\",\n      rgb: \"rgb(67,20,7)\",\n      hsl: \"hsl(13,81.1%,14.5%)\",\n      oklch: \"oklch(0.27,0.08,36)\",\n    },\n  ],\n  amber: [\n    {\n      scale: 50,\n      hex: \"#fffbeb\",\n      rgb: \"rgb(255,251,235)\",\n      hsl: \"hsl(48,100%,96.1%)\",\n      oklch: \"oklch(0.99,0.02,95)\",\n    },\n    {\n      scale: 100,\n      hex: \"#fef3c7\",\n      rgb: \"rgb(254,243,199)\",\n      hsl: \"hsl(48,96.5%,88.8%)\",\n      oklch: \"oklch(0.96,0.06,96)\",\n    },\n    {\n      scale: 200,\n      hex: \"#fde68a\",\n      rgb: \"rgb(253,230,138)\",\n      hsl: \"hsl(48,96.6%,76.7%)\",\n      oklch: \"oklch(0.92,0.12,96)\",\n    },\n    {\n      scale: 300,\n      hex: \"#fcd34d\",\n      rgb: \"rgb(252,211,77)\",\n      hsl: \"hsl(45.9,96.7%,64.5%)\",\n      oklch: \"oklch(0.88,0.15,92)\",\n    },\n    {\n      scale: 400,\n      hex: \"#fbbf24\",\n      rgb: \"rgb(251,191,36)\",\n      hsl: \"hsl(43.3,96.4%,56.3%)\",\n      oklch: \"oklch(0.84,0.16,84)\",\n    },\n    {\n      scale: 500,\n      hex: \"#f59e0b\",\n      rgb: \"rgb(245,158,11)\",\n      hsl: \"hsl(37.7,92.1%,50.2%)\",\n      oklch: \"oklch(0.77,0.16,70)\",\n    },\n    {\n      scale: 600,\n      hex: \"#d97706\",\n      rgb: \"rgb(217,119,6)\",\n      hsl: \"hsl(32.1,94.6%,43.7%)\",\n      oklch: \"oklch(0.67,0.16,58)\",\n    },\n    {\n      scale: 700,\n      hex: \"#b45309\",\n      rgb: \"rgb(180,83,9)\",\n      hsl: \"hsl(26,90.5%,37.1%)\",\n      oklch: \"oklch(0.56,0.15,49)\",\n    },\n    {\n      scale: 800,\n      hex: \"#92400e\",\n      rgb: \"rgb(146,64,14)\",\n      hsl: \"hsl(22.7,82.5%,31.4%)\",\n      oklch: \"oklch(0.47,0.12,46)\",\n    },\n    {\n      scale: 900,\n      hex: \"#78350f\",\n      rgb: \"rgb(120,53,15)\",\n      hsl: \"hsl(21.7,77.8%,26.5%)\",\n      oklch: \"oklch(0.41,0.11,46)\",\n    },\n    {\n      scale: 950,\n      hex: \"#451a03\",\n      rgb: \"rgb(69,26,3)\",\n      hsl: \"hsl(20.9,91.7%,14.1%)\",\n      oklch: \"oklch(0.28,0.07,46)\",\n    },\n  ],\n  yellow: [\n    {\n      scale: 50,\n      hex: \"#fefce8\",\n      rgb: \"rgb(254,252,232)\",\n      hsl: \"hsl(54.5,91.7%,95.3%)\",\n      oklch: \"oklch(0.99,0.03,102)\",\n    },\n    {\n      scale: 100,\n      hex: \"#fef9c3\",\n      rgb: \"rgb(254,249,195)\",\n      hsl: \"hsl(54.9,96.7%,88%)\",\n      oklch: \"oklch(0.97,0.07,103)\",\n    },\n    {\n      scale: 200,\n      hex: \"#fef08a\",\n      rgb: \"rgb(254,240,138)\",\n      hsl: \"hsl(52.8,98.3%,76.9%)\",\n      oklch: \"oklch(0.95,0.12,102)\",\n    },\n    {\n      scale: 300,\n      hex: \"#fde047\",\n      rgb: \"rgb(253,224,71)\",\n      hsl: \"hsl(50.4,97.8%,63.5%)\",\n      oklch: \"oklch(0.91,0.17,98)\",\n    },\n    {\n      scale: 400,\n      hex: \"#facc15\",\n      rgb: \"rgb(250,204,21)\",\n      hsl: \"hsl(47.9,95.8%,53.1%)\",\n      oklch: \"oklch(0.86,0.17,92)\",\n    },\n    {\n      scale: 500,\n      hex: \"#eab308\",\n      rgb: \"rgb(234,179,8)\",\n      hsl: \"hsl(45.4,93.4%,47.5%)\",\n      oklch: \"oklch(0.80,0.16,86)\",\n    },\n    {\n      scale: 600,\n      hex: \"#ca8a04\",\n      rgb: \"rgb(202,138,4)\",\n      hsl: \"hsl(40.6,96.1%,40.4%)\",\n      oklch: \"oklch(0.68,0.14,76)\",\n    },\n    {\n      scale: 700,\n      hex: \"#a16207\",\n      rgb: \"rgb(161,98,7)\",\n      hsl: \"hsl(35.5,91.7%,32.9%)\",\n      oklch: \"oklch(0.55,0.12,66)\",\n    },\n    {\n      scale: 800,\n      hex: \"#854d0e\",\n      rgb: \"rgb(133,77,14)\",\n      hsl: \"hsl(31.8,81%,28.8%)\",\n      oklch: \"oklch(0.48,0.10,62)\",\n    },\n    {\n      scale: 900,\n      hex: \"#713f12\",\n      rgb: \"rgb(113,63,18)\",\n      hsl: \"hsl(28.4,72.5%,25.7%)\",\n      oklch: \"oklch(0.42,0.09,58)\",\n    },\n    {\n      scale: 950,\n      hex: \"#422006\",\n      rgb: \"rgb(66,32,6)\",\n      hsl: \"hsl(26,83.3%,14.1%)\",\n      oklch: \"oklch(0.29,0.06,54)\",\n    },\n  ],\n  lime: [\n    {\n      scale: 50,\n      hex: \"#f7fee7\",\n      rgb: \"rgb(247,254,231)\",\n      hsl: \"hsl(78.3,92%,95.1%)\",\n      oklch: \"oklch(0.99,0.03,121)\",\n    },\n    {\n      scale: 100,\n      hex: \"#ecfccb\",\n      rgb: \"rgb(236,252,203)\",\n      hsl: \"hsl(79.6,89.1%,89.2%)\",\n      oklch: \"oklch(0.97,0.07,122)\",\n    },\n    {\n      scale: 200,\n      hex: \"#d9f99d\",\n      rgb: \"rgb(217,249,157)\",\n      hsl: \"hsl(80.9,88.5%,79.6%)\",\n      oklch: \"oklch(0.94,0.12,124)\",\n    },\n    {\n      scale: 300,\n      hex: \"#bef264\",\n      rgb: \"rgb(190,242,100)\",\n      hsl: \"hsl(82,84.5%,67.1%)\",\n      oklch: \"oklch(0.90,0.18,127)\",\n    },\n    {\n      scale: 400,\n      hex: \"#a3e635\",\n      rgb: \"rgb(163,230,53)\",\n      hsl: \"hsl(82.7,78%,55.5%)\",\n      oklch: \"oklch(0.85,0.21,129)\",\n    },\n    {\n      scale: 500,\n      hex: \"#84cc16\",\n      rgb: \"rgb(132,204,22)\",\n      hsl: \"hsl(83.7,80.5%,44.3%)\",\n      oklch: \"oklch(0.77,0.20,131)\",\n    },\n    {\n      scale: 600,\n      hex: \"#65a30d\",\n      rgb: \"rgb(101,163,13)\",\n      hsl: \"hsl(84.8,85.2%,34.5%)\",\n      oklch: \"oklch(0.65,0.18,132)\",\n    },\n    {\n      scale: 700,\n      hex: \"#4d7c0f\",\n      rgb: \"rgb(77,124,15)\",\n      hsl: \"hsl(85.9,78.4%,27.3%)\",\n      oklch: \"oklch(0.53,0.14,132)\",\n    },\n    {\n      scale: 800,\n      hex: \"#3f6212\",\n      rgb: \"rgb(63,98,18)\",\n      hsl: \"hsl(86.3,69%,22.7%)\",\n      oklch: \"oklch(0.45,0.11,131)\",\n    },\n    {\n      scale: 900,\n      hex: \"#365314\",\n      rgb: \"rgb(54,83,20)\",\n      hsl: \"hsl(87.6,61.2%,20.2%)\",\n      oklch: \"oklch(0.41,0.10,131)\",\n    },\n    {\n      scale: 950,\n      hex: \"#1a2e05\",\n      rgb: \"rgb(26,46,5)\",\n      hsl: \"hsl(89.3,80.4%,10%)\",\n      oklch: \"oklch(0.27,0.07,132)\",\n    },\n  ],\n  green: [\n    {\n      scale: 50,\n      hex: \"#f0fdf4\",\n      rgb: \"rgb(240,253,244)\",\n      hsl: \"hsl(138.5,76.5%,96.7%)\",\n      oklch: \"oklch(0.98,0.02,156)\",\n    },\n    {\n      scale: 100,\n      hex: \"#dcfce7\",\n      rgb: \"rgb(220,252,231)\",\n      hsl: \"hsl(140.6,84.2%,92.5%)\",\n      oklch: \"oklch(0.96,0.04,157)\",\n    },\n    {\n      scale: 200,\n      hex: \"#bbf7d0\",\n      rgb: \"rgb(187,247,208)\",\n      hsl: \"hsl(141,78.9%,85.1%)\",\n      oklch: \"oklch(0.93,0.08,156)\",\n    },\n    {\n      scale: 300,\n      hex: \"#86efac\",\n      rgb: \"rgb(134,239,172)\",\n      hsl: \"hsl(141.7,76.6%,73.1%)\",\n      oklch: \"oklch(0.87,0.14,154)\",\n    },\n    {\n      scale: 400,\n      hex: \"#4ade80\",\n      rgb: \"rgb(74,222,128)\",\n      hsl: \"hsl(141.9,69.2%,58%)\",\n      oklch: \"oklch(0.80,0.18,152)\",\n    },\n    {\n      scale: 500,\n      hex: \"#22c55e\",\n      rgb: \"rgb(34,197,94)\",\n      hsl: \"hsl(142.1,70.6%,45.3%)\",\n      oklch: \"oklch(0.72,0.19,150)\",\n    },\n    {\n      scale: 600,\n      hex: \"#16a34a\",\n      rgb: \"rgb(22,163,74)\",\n      hsl: \"hsl(142.1,76.2%,36.3%)\",\n      oklch: \"oklch(0.63,0.17,149)\",\n    },\n    {\n      scale: 700,\n      hex: \"#15803d\",\n      rgb: \"rgb(21,128,61)\",\n      hsl: \"hsl(142.4,71.8%,29.2%)\",\n      oklch: \"oklch(0.53,0.14,150)\",\n    },\n    {\n      scale: 800,\n      hex: \"#166534\",\n      rgb: \"rgb(22,101,52)\",\n      hsl: \"hsl(142.8,64.2%,24.1%)\",\n      oklch: \"oklch(0.45,0.11,151)\",\n    },\n    {\n      scale: 900,\n      hex: \"#14532d\",\n      rgb: \"rgb(20,83,45)\",\n      hsl: \"hsl(143.8,61.2%,20.2%)\",\n      oklch: \"oklch(0.39,0.09,153)\",\n    },\n    {\n      scale: 950,\n      hex: \"#052e16\",\n      rgb: \"rgb(5,46,22)\",\n      hsl: \"hsl(144.9,80.4%,10%)\",\n      oklch: \"oklch(0.27,0.06,153)\",\n    },\n  ],\n  emerald: [\n    {\n      scale: 50,\n      hex: \"#ecfdf5\",\n      rgb: \"rgb(236,253,245)\",\n      hsl: \"hsl(151.8,81%,95.9%)\",\n      oklch: \"oklch(0.98,0.02,166)\",\n    },\n    {\n      scale: 100,\n      hex: \"#d1fae5\",\n      rgb: \"rgb(209,250,229)\",\n      hsl: \"hsl(149.3,80.4%,90%)\",\n      oklch: \"oklch(0.95,0.05,163)\",\n    },\n    {\n      scale: 200,\n      hex: \"#a7f3d0\",\n      rgb: \"rgb(167,243,208)\",\n      hsl: \"hsl(152.4,76%,80.4%)\",\n      oklch: \"oklch(0.90,0.09,164)\",\n    },\n    {\n      scale: 300,\n      hex: \"#6ee7b7\",\n      rgb: \"rgb(110,231,183)\",\n      hsl: \"hsl(156.2,71.6%,66.9%)\",\n      oklch: \"oklch(0.85,0.13,165)\",\n    },\n    {\n      scale: 400,\n      hex: \"#34d399\",\n      rgb: \"rgb(52,211,153)\",\n      hsl: \"hsl(158.1,64.4%,51.6%)\",\n      oklch: \"oklch(0.77,0.15,163)\",\n    },\n    {\n      scale: 500,\n      hex: \"#10b981\",\n      rgb: \"rgb(16,185,129)\",\n      hsl: \"hsl(160.1,84.1%,39.4%)\",\n      oklch: \"oklch(0.70,0.15,162)\",\n    },\n    {\n      scale: 600,\n      hex: \"#059669\",\n      rgb: \"rgb(5,150,105)\",\n      hsl: \"hsl(161.4,93.5%,30.4%)\",\n      oklch: \"oklch(0.60,0.13,163)\",\n    },\n    {\n      scale: 700,\n      hex: \"#047857\",\n      rgb: \"rgb(4,120,87)\",\n      hsl: \"hsl(162.9,93.5%,24.3%)\",\n      oklch: \"oklch(0.51,0.10,166)\",\n    },\n    {\n      scale: 800,\n      hex: \"#065f46\",\n      rgb: \"rgb(6,95,70)\",\n      hsl: \"hsl(163.1,88.1%,19.8%)\",\n      oklch: \"oklch(0.43,0.09,167)\",\n    },\n    {\n      scale: 900,\n      hex: \"#064e3b\",\n      rgb: \"rgb(6,78,59)\",\n      hsl: \"hsl(164.2,85.7%,16.5%)\",\n      oklch: \"oklch(0.38,0.07,169)\",\n    },\n    {\n      scale: 950,\n      hex: \"#022c22\",\n      rgb: \"rgb(2,44,34)\",\n      hsl: \"hsl(165.7,91.3%,9%)\",\n      oklch: \"oklch(0.26,0.05,173)\",\n    },\n  ],\n  teal: [\n    {\n      scale: 50,\n      hex: \"#f0fdfa\",\n      rgb: \"rgb(240,253,250)\",\n      hsl: \"hsl(166.2,76.5%,96.7%)\",\n      oklch: \"oklch(0.98,0.01,181)\",\n    },\n    {\n      scale: 100,\n      hex: \"#ccfbf1\",\n      rgb: \"rgb(204,251,241)\",\n      hsl: \"hsl(167.2,85.5%,89.2%)\",\n      oklch: \"oklch(0.95,0.05,181)\",\n    },\n    {\n      scale: 200,\n      hex: \"#99f6e4\",\n      rgb: \"rgb(153,246,228)\",\n      hsl: \"hsl(168.4,83.8%,78.2%)\",\n      oklch: \"oklch(0.91,0.09,180)\",\n    },\n    {\n      scale: 300,\n      hex: \"#5eead4\",\n      rgb: \"rgb(94,234,212)\",\n      hsl: \"hsl(170.6,76.9%,64.3%)\",\n      oklch: \"oklch(0.85,0.13,181)\",\n    },\n    {\n      scale: 400,\n      hex: \"#2dd4bf\",\n      rgb: \"rgb(45,212,191)\",\n      hsl: \"hsl(172.5,66%,50.4%)\",\n      oklch: \"oklch(0.78,0.13,182)\",\n    },\n    {\n      scale: 500,\n      hex: \"#14b8a6\",\n      rgb: \"rgb(20,184,166)\",\n      hsl: \"hsl(173.4,80.4%,40%)\",\n      oklch: \"oklch(0.70,0.12,183)\",\n    },\n    {\n      scale: 600,\n      hex: \"#0d9488\",\n      rgb: \"rgb(13,148,136)\",\n      hsl: \"hsl(174.7,83.9%,31.6%)\",\n      oklch: \"oklch(0.60,0.10,185)\",\n    },\n    {\n      scale: 700,\n      hex: \"#0f766e\",\n      rgb: \"rgb(15,118,110)\",\n      hsl: \"hsl(175.3,77.4%,26.1%)\",\n      oklch: \"oklch(0.51,0.09,186)\",\n    },\n    {\n      scale: 800,\n      hex: \"#115e59\",\n      rgb: \"rgb(17,94,89)\",\n      hsl: \"hsl(176.1,69.4%,21.8%)\",\n      oklch: \"oklch(0.44,0.07,188)\",\n    },\n    {\n      scale: 900,\n      hex: \"#134e4a\",\n      rgb: \"rgb(19,78,74)\",\n      hsl: \"hsl(175.9,60.8%,19%)\",\n      oklch: \"oklch(0.39,0.06,188)\",\n    },\n    {\n      scale: 950,\n      hex: \"#042f2e\",\n      rgb: \"rgb(4,47,46)\",\n      hsl: \"hsl(178.6,84.3%,10%)\",\n      oklch: \"oklch(0.28,0.04,193)\",\n    },\n  ],\n  cyan: [\n    {\n      scale: 50,\n      hex: \"#ecfeff\",\n      rgb: \"rgb(236,254,255)\",\n      hsl: \"hsl(183.2,100%,96.3%)\",\n      oklch: \"oklch(0.98,0.02,201)\",\n    },\n    {\n      scale: 100,\n      hex: \"#cffafe\",\n      rgb: \"rgb(207,250,254)\",\n      hsl: \"hsl(185.1,95.9%,90.4%)\",\n      oklch: \"oklch(0.96,0.04,203)\",\n    },\n    {\n      scale: 200,\n      hex: \"#a5f3fc\",\n      rgb: \"rgb(165,243,252)\",\n      hsl: \"hsl(186.2,93.5%,81.8%)\",\n      oklch: \"oklch(0.92,0.08,205)\",\n    },\n    {\n      scale: 300,\n      hex: \"#67e8f9\",\n      rgb: \"rgb(103,232,249)\",\n      hsl: \"hsl(187,92.4%,69%)\",\n      oklch: \"oklch(0.87,0.12,207)\",\n    },\n    {\n      scale: 400,\n      hex: \"#22d3ee\",\n      rgb: \"rgb(34,211,238)\",\n      hsl: \"hsl(187.9,85.7%,53.3%)\",\n      oklch: \"oklch(0.80,0.13,212)\",\n    },\n    {\n      scale: 500,\n      hex: \"#06b6d4\",\n      rgb: \"rgb(6,182,212)\",\n      hsl: \"hsl(188.7,94.5%,42.7%)\",\n      oklch: \"oklch(0.71,0.13,215)\",\n    },\n    {\n      scale: 600,\n      hex: \"#0891b2\",\n      rgb: \"rgb(8,145,178)\",\n      hsl: \"hsl(191.6,91.4%,36.5%)\",\n      oklch: \"oklch(0.61,0.11,222)\",\n    },\n    {\n      scale: 700,\n      hex: \"#0e7490\",\n      rgb: \"rgb(14,116,144)\",\n      hsl: \"hsl(192.9,82.3%,31%)\",\n      oklch: \"oklch(0.52,0.09,223)\",\n    },\n    {\n      scale: 800,\n      hex: \"#155e75\",\n      rgb: \"rgb(21,94,117)\",\n      hsl: \"hsl(194.4,69.6%,27.1%)\",\n      oklch: \"oklch(0.45,0.08,224)\",\n    },\n    {\n      scale: 900,\n      hex: \"#164e63\",\n      rgb: \"rgb(22,78,99)\",\n      hsl: \"hsl(196.4,63.6%,23.7%)\",\n      oklch: \"oklch(0.40,0.07,227)\",\n    },\n    {\n      scale: 950,\n      hex: \"#083344\",\n      rgb: \"rgb(8,51,68)\",\n      hsl: \"hsl(197,78.9%,14.9%)\",\n      oklch: \"oklch(0.30,0.05,230)\",\n    },\n  ],\n  sky: [\n    {\n      scale: 50,\n      hex: \"#f0f9ff\",\n      rgb: \"rgb(240,249,255)\",\n      hsl: \"hsl(204,100%,97.1%)\",\n      oklch: \"oklch(0.98,0.01,237)\",\n    },\n    {\n      scale: 100,\n      hex: \"#e0f2fe\",\n      rgb: \"rgb(224,242,254)\",\n      hsl: \"hsl(204,93.8%,93.7%)\",\n      oklch: \"oklch(0.95,0.03,237)\",\n    },\n    {\n      scale: 200,\n      hex: \"#bae6fd\",\n      rgb: \"rgb(186,230,253)\",\n      hsl: \"hsl(200.6,94.4%,86.1%)\",\n      oklch: \"oklch(0.90,0.06,231)\",\n    },\n    {\n      scale: 300,\n      hex: \"#7dd3fc\",\n      rgb: \"rgb(125,211,252)\",\n      hsl: \"hsl(199.4,95.5%,73.9%)\",\n      oklch: \"oklch(0.83,0.10,230)\",\n    },\n    {\n      scale: 400,\n      hex: \"#38bdf8\",\n      rgb: \"rgb(56,189,248)\",\n      hsl: \"hsl(198.4,93.2%,59.6%)\",\n      oklch: \"oklch(0.75,0.14,233)\",\n    },\n    {\n      scale: 500,\n      hex: \"#0ea5e9\",\n      rgb: \"rgb(14,165,233)\",\n      hsl: \"hsl(198.6,88.7%,48.4%)\",\n      oklch: \"oklch(0.68,0.15,237)\",\n    },\n    {\n      scale: 600,\n      hex: \"#0284c7\",\n      rgb: \"rgb(2,132,199)\",\n      hsl: \"hsl(200.4,98%,39.4%)\",\n      oklch: \"oklch(0.59,0.14,242)\",\n    },\n    {\n      scale: 700,\n      hex: \"#0369a1\",\n      rgb: \"rgb(3,105,161)\",\n      hsl: \"hsl(201.3,96.3%,32.2%)\",\n      oklch: \"oklch(0.50,0.12,243)\",\n    },\n    {\n      scale: 800,\n      hex: \"#075985\",\n      rgb: \"rgb(7,89,133)\",\n      hsl: \"hsl(201,90%,27.5%)\",\n      oklch: \"oklch(0.44,0.10,241)\",\n    },\n    {\n      scale: 900,\n      hex: \"#0c4a6e\",\n      rgb: \"rgb(12,74,110)\",\n      hsl: \"hsl(202,80.3%,23.9%)\",\n      oklch: \"oklch(0.39,0.08,241)\",\n    },\n    {\n      scale: 950,\n      hex: \"#082f49\",\n      rgb: \"rgb(8,47,73)\",\n      hsl: \"hsl(204,80.2%,15.9%)\",\n      oklch: \"oklch(0.29,0.06,243)\",\n    },\n  ],\n  blue: [\n    {\n      scale: 50,\n      hex: \"#eff6ff\",\n      rgb: \"rgb(239,246,255)\",\n      hsl: \"hsl(213.8,100%,96.9%)\",\n      oklch: \"oklch(0.97,0.01,255)\",\n    },\n    {\n      scale: 100,\n      hex: \"#dbeafe\",\n      rgb: \"rgb(219,234,254)\",\n      hsl: \"hsl(214.3,94.6%,92.7%)\",\n      oklch: \"oklch(0.93,0.03,256)\",\n    },\n    {\n      scale: 200,\n      hex: \"#bfdbfe\",\n      rgb: \"rgb(191,219,254)\",\n      hsl: \"hsl(213.3,96.9%,87.3%)\",\n      oklch: \"oklch(0.88,0.06,254)\",\n    },\n    {\n      scale: 300,\n      hex: \"#93c5fd\",\n      rgb: \"rgb(147,197,253)\",\n      hsl: \"hsl(211.7,96.4%,78.4%)\",\n      oklch: \"oklch(0.81,0.10,252)\",\n    },\n    {\n      scale: 400,\n      hex: \"#60a5fa\",\n      rgb: \"rgb(96,165,250)\",\n      hsl: \"hsl(213.1,93.9%,67.8%)\",\n      oklch: \"oklch(0.71,0.14,255)\",\n    },\n    {\n      scale: 500,\n      hex: \"#3b82f6\",\n      rgb: \"rgb(59,130,246)\",\n      hsl: \"hsl(217.2,91.2%,59.8%)\",\n      oklch: \"oklch(0.62,0.19,260)\",\n    },\n    {\n      scale: 600,\n      hex: \"#2563eb\",\n      rgb: \"rgb(37,99,235)\",\n      hsl: \"hsl(221.2,83.2%,53.3%)\",\n      oklch: \"oklch(0.55,0.22,263)\",\n    },\n    {\n      scale: 700,\n      hex: \"#1d4ed8\",\n      rgb: \"rgb(29,78,216)\",\n      hsl: \"hsl(224.3,76.3%,48%)\",\n      oklch: \"oklch(0.49,0.22,264)\",\n    },\n    {\n      scale: 800,\n      hex: \"#1e40af\",\n      rgb: \"rgb(30,64,175)\",\n      hsl: \"hsl(225.9,70.7%,40.2%)\",\n      oklch: \"oklch(0.42,0.18,266)\",\n    },\n    {\n      scale: 900,\n      hex: \"#1e3a8a\",\n      rgb: \"rgb(30,58,138)\",\n      hsl: \"hsl(224.4,64.3%,32.9%)\",\n      oklch: \"oklch(0.38,0.14,266)\",\n    },\n    {\n      scale: 950,\n      hex: \"#172554\",\n      rgb: \"rgb(23,37,84)\",\n      hsl: \"hsl(226.2,57%,21%)\",\n      oklch: \"oklch(0.28,0.09,268)\",\n    },\n  ],\n  indigo: [\n    {\n      scale: 50,\n      hex: \"#eef2ff\",\n      rgb: \"rgb(238,242,255)\",\n      hsl: \"hsl(225.9,100%,96.7%)\",\n      oklch: \"oklch(0.96,0.02,272)\",\n    },\n    {\n      scale: 100,\n      hex: \"#e0e7ff\",\n      rgb: \"rgb(224,231,255)\",\n      hsl: \"hsl(226.5,100%,93.9%)\",\n      oklch: \"oklch(0.93,0.03,273)\",\n    },\n    {\n      scale: 200,\n      hex: \"#c7d2fe\",\n      rgb: \"rgb(199,210,254)\",\n      hsl: \"hsl(228,96.5%,88.8%)\",\n      oklch: \"oklch(0.87,0.06,274)\",\n    },\n    {\n      scale: 300,\n      hex: \"#a5b4fc\",\n      rgb: \"rgb(165,180,252)\",\n      hsl: \"hsl(229.7,93.5%,81.8%)\",\n      oklch: \"oklch(0.79,0.10,275)\",\n    },\n    {\n      scale: 400,\n      hex: \"#818cf8\",\n      rgb: \"rgb(129,140,248)\",\n      hsl: \"hsl(234.5,89.5%,73.9%)\",\n      oklch: \"oklch(0.68,0.16,277)\",\n    },\n    {\n      scale: 500,\n      hex: \"#6366f1\",\n      rgb: \"rgb(99,102,241)\",\n      hsl: \"hsl(238.7,83.5%,66.7%)\",\n      oklch: \"oklch(0.59,0.20,277)\",\n    },\n    {\n      scale: 600,\n      hex: \"#4f46e5\",\n      rgb: \"rgb(79,70,229)\",\n      hsl: \"hsl(243.4,75.4%,58.6%)\",\n      oklch: \"oklch(0.51,0.23,277)\",\n    },\n    {\n      scale: 700,\n      hex: \"#4338ca\",\n      rgb: \"rgb(67,56,202)\",\n      hsl: \"hsl(244.5,57.9%,50.6%)\",\n      oklch: \"oklch(0.46,0.21,277)\",\n    },\n    {\n      scale: 800,\n      hex: \"#3730a3\",\n      rgb: \"rgb(55,48,163)\",\n      hsl: \"hsl(243.7,54.5%,41.4%)\",\n      oklch: \"oklch(0.40,0.18,277)\",\n    },\n    {\n      scale: 900,\n      hex: \"#312e81\",\n      rgb: \"rgb(49,46,129)\",\n      hsl: \"hsl(242.2,47.4%,34.3%)\",\n      oklch: \"oklch(0.36,0.14,279)\",\n    },\n    {\n      scale: 950,\n      hex: \"#1e1b4b\",\n      rgb: \"rgb(30,27,75)\",\n      hsl: \"hsl(243.8,47.1%,20%)\",\n      oklch: \"oklch(0.26,0.09,281)\",\n    },\n  ],\n  violet: [\n    {\n      scale: 50,\n      hex: \"#f5f3ff\",\n      rgb: \"rgb(245,243,255)\",\n      hsl: \"hsl(250,100%,97.6%)\",\n      oklch: \"oklch(0.97,0.02,294)\",\n    },\n    {\n      scale: 100,\n      hex: \"#ede9fe\",\n      rgb: \"rgb(237,233,254)\",\n      hsl: \"hsl(251.4,91.3%,95.5%)\",\n      oklch: \"oklch(0.94,0.03,295)\",\n    },\n    {\n      scale: 200,\n      hex: \"#ddd6fe\",\n      rgb: \"rgb(221,214,254)\",\n      hsl: \"hsl(250.5,95.2%,91.8%)\",\n      oklch: \"oklch(0.89,0.05,293)\",\n    },\n    {\n      scale: 300,\n      hex: \"#c4b5fd\",\n      rgb: \"rgb(196,181,253)\",\n      hsl: \"hsl(252.5,94.7%,85.1%)\",\n      oklch: \"oklch(0.81,0.10,294)\",\n    },\n    {\n      scale: 400,\n      hex: \"#a78bfa\",\n      rgb: \"rgb(167,139,250)\",\n      hsl: \"hsl(255.1,91.7%,76.3%)\",\n      oklch: \"oklch(0.71,0.16,294)\",\n    },\n    {\n      scale: 500,\n      hex: \"#8b5cf6\",\n      rgb: \"rgb(139,92,246)\",\n      hsl: \"hsl(258.3,89.5%,66.3%)\",\n      oklch: \"oklch(0.61,0.22,293)\",\n    },\n    {\n      scale: 600,\n      hex: \"#7c3aed\",\n      rgb: \"rgb(124,58,237)\",\n      hsl: \"hsl(262.1,83.3%,57.8%)\",\n      oklch: \"oklch(0.54,0.25,293)\",\n    },\n    {\n      scale: 700,\n      hex: \"#6d28d9\",\n      rgb: \"rgb(109,40,217)\",\n      hsl: \"hsl(263.4,70%,50.4%)\",\n      oklch: \"oklch(0.49,0.24,293)\",\n    },\n    {\n      scale: 800,\n      hex: \"#5b21b6\",\n      rgb: \"rgb(91,33,182)\",\n      hsl: \"hsl(263.4,69.3%,42.2%)\",\n      oklch: \"oklch(0.43,0.21,293)\",\n    },\n    {\n      scale: 900,\n      hex: \"#4c1d95\",\n      rgb: \"rgb(76,29,149)\",\n      hsl: \"hsl(263.5,67.4%,34.9%)\",\n      oklch: \"oklch(0.38,0.18,294)\",\n    },\n    {\n      scale: 950,\n      hex: \"#1e1b4b\",\n      rgb: \"rgb(46,16,101)\",\n      hsl: \"hsl(261.2,72.6%,22.9%)\",\n      oklch: \"oklch(0.28,0.14,291)\",\n    },\n  ],\n  purple: [\n    {\n      scale: 50,\n      hex: \"#faf5ff\",\n      rgb: \"rgb(250,245,255)\",\n      hsl: \"hsl(270,100%,98%)\",\n      oklch: \"oklch(0.98,0.01,308)\",\n    },\n    {\n      scale: 100,\n      hex: \"#f3e8ff\",\n      rgb: \"rgb(243,232,255)\",\n      hsl: \"hsl(268.7,100%,95.5%)\",\n      oklch: \"oklch(0.95,0.03,307)\",\n    },\n    {\n      scale: 200,\n      hex: \"#e9d5ff\",\n      rgb: \"rgb(233,213,255)\",\n      hsl: \"hsl(268.6,100%,91.8%)\",\n      oklch: \"oklch(0.90,0.06,307)\",\n    },\n    {\n      scale: 300,\n      hex: \"#d8b4fe\",\n      rgb: \"rgb(216,180,254)\",\n      hsl: \"hsl(269.2,97.4%,85.1%)\",\n      oklch: \"oklch(0.83,0.11,306)\",\n    },\n    {\n      scale: 400,\n      hex: \"#c084fc\",\n      rgb: \"rgb(192,132,252)\",\n      hsl: \"hsl(270,95.2%,75.3%)\",\n      oklch: \"oklch(0.72,0.18,306)\",\n    },\n    {\n      scale: 500,\n      hex: \"#a855f7\",\n      rgb: \"rgb(168,85,247)\",\n      hsl: \"hsl(270.7,91%,65.1%)\",\n      oklch: \"oklch(0.63,0.23,304)\",\n    },\n    {\n      scale: 600,\n      hex: \"#9333ea\",\n      rgb: \"rgb(147,51,234)\",\n      hsl: \"hsl(271.5,81.3%,55.9%)\",\n      oklch: \"oklch(0.56,0.25,302)\",\n    },\n    {\n      scale: 700,\n      hex: \"#7e22ce\",\n      rgb: \"rgb(126,34,206)\",\n      hsl: \"hsl(272.1,71.7%,47.1%)\",\n      oklch: \"oklch(0.50,0.24,302)\",\n    },\n    {\n      scale: 800,\n      hex: \"#6b21a8\",\n      rgb: \"rgb(107,33,168)\",\n      hsl: \"hsl(272.9,67.2%,39.4%)\",\n      oklch: \"oklch(0.44,0.20,304)\",\n    },\n    {\n      scale: 900,\n      hex: \"#581c87\",\n      rgb: \"rgb(88,28,135)\",\n      hsl: \"hsl(273.6,65.6%,32%)\",\n      oklch: \"oklch(0.38,0.17,305)\",\n    },\n    {\n      scale: 950,\n      hex: \"#3b0764\",\n      rgb: \"rgb(59,7,100)\",\n      hsl: \"hsl(273.5,86.9%,21%)\",\n      oklch: \"oklch(0.29,0.14,303)\",\n    },\n  ],\n  fuchsia: [\n    {\n      scale: 50,\n      hex: \"#fdf4ff\",\n      rgb: \"rgb(253,244,255)\",\n      hsl: \"hsl(289.1,100%,97.8%)\",\n      oklch: \"oklch(0.98,0.02,320)\",\n    },\n    {\n      scale: 100,\n      hex: \"#fae8ff\",\n      rgb: \"rgb(250,232,255)\",\n      hsl: \"hsl(287,100%,95.5%)\",\n      oklch: \"oklch(0.95,0.04,319)\",\n    },\n    {\n      scale: 200,\n      hex: \"#f5d0fe\",\n      rgb: \"rgb(245,208,254)\",\n      hsl: \"hsl(288.3,95.8%,90.6%)\",\n      oklch: \"oklch(0.90,0.07,320)\",\n    },\n    {\n      scale: 300,\n      hex: \"#f0abfc\",\n      rgb: \"rgb(240,171,252)\",\n      hsl: \"hsl(291.1,93.1%,82.9%)\",\n      oklch: \"oklch(0.83,0.13,321)\",\n    },\n    {\n      scale: 400,\n      hex: \"#e879f9\",\n      rgb: \"rgb(232,121,249)\",\n      hsl: \"hsl(292,91.4%,72.5%)\",\n      oklch: \"oklch(0.75,0.21,322)\",\n    },\n    {\n      scale: 500,\n      hex: \"#d946ef\",\n      rgb: \"rgb(217,70,239)\",\n      hsl: \"hsl(292.2,84.1%,60.6%)\",\n      oklch: \"oklch(0.67,0.26,322)\",\n    },\n    {\n      scale: 600,\n      hex: \"#c026d3\",\n      rgb: \"rgb(192,38,211)\",\n      hsl: \"hsl(293.4,69.5%,48.8%)\",\n      oklch: \"oklch(0.59,0.26,323)\",\n    },\n    {\n      scale: 700,\n      hex: \"#a21caf\",\n      rgb: \"rgb(162,28,175)\",\n      hsl: \"hsl(294.7,72.4%,39.8%)\",\n      oklch: \"oklch(0.52,0.23,324)\",\n    },\n    {\n      scale: 800,\n      hex: \"#86198f\",\n      rgb: \"rgb(134,25,143)\",\n      hsl: \"hsl(295.4,70.2%,32.9%)\",\n      oklch: \"oklch(0.45,0.19,325)\",\n    },\n    {\n      scale: 900,\n      hex: \"#701a75\",\n      rgb: \"rgb(112,26,117)\",\n      hsl: \"hsl(296.7,63.6%,28%)\",\n      oklch: \"oklch(0.40,0.16,326)\",\n    },\n    {\n      scale: 950,\n      hex: \"#4a044e\",\n      rgb: \"rgb(74,4,78)\",\n      hsl: \"hsl(296.8,90.2%,16.1%)\",\n      oklch: \"oklch(0.29,0.13,326)\",\n    },\n  ],\n  pink: [\n    {\n      scale: 50,\n      hex: \"#fdf2f8\",\n      rgb: \"rgb(253,242,248)\",\n      hsl: \"hsl(327.3,73.3%,97.1%)\",\n      oklch: \"oklch(0.97,0.01,343)\",\n    },\n    {\n      scale: 100,\n      hex: \"#fce7f3\",\n      rgb: \"rgb(252,231,243)\",\n      hsl: \"hsl(325.7,77.8%,94.7%)\",\n      oklch: \"oklch(0.95,0.03,342)\",\n    },\n    {\n      scale: 200,\n      hex: \"#fbcfe8\",\n      rgb: \"rgb(251,207,232)\",\n      hsl: \"hsl(325.9,84.6%,89.8%)\",\n      oklch: \"oklch(0.90,0.06,343)\",\n    },\n    {\n      scale: 300,\n      hex: \"#f9a8d4\",\n      rgb: \"rgb(249,168,212)\",\n      hsl: \"hsl(327.4,87.1%,81.8%)\",\n      oklch: \"oklch(0.82,0.11,346)\",\n    },\n    {\n      scale: 400,\n      hex: \"#f472b6\",\n      rgb: \"rgb(244,114,182)\",\n      hsl: \"hsl(328.6,85.5%,70.2%)\",\n      oklch: \"oklch(0.73,0.18,350)\",\n    },\n    {\n      scale: 500,\n      hex: \"#ec4899\",\n      rgb: \"rgb(236,72,153)\",\n      hsl: \"hsl(330.4,81.2%,60.4%)\",\n      oklch: \"oklch(0.66,0.21,354)\",\n    },\n    {\n      scale: 600,\n      hex: \"#db2777\",\n      rgb: \"rgb(219,39,119)\",\n      hsl: \"hsl(333.3,71.4%,50.6%)\",\n      oklch: \"oklch(0.59,0.22,1)\",\n    },\n    {\n      scale: 700,\n      hex: \"#be185d\",\n      rgb: \"rgb(190,24,93)\",\n      hsl: \"hsl(335.1,77.6%,42%)\",\n      oklch: \"oklch(0.52,0.20,4)\",\n    },\n    {\n      scale: 800,\n      hex: \"#9d174d\",\n      rgb: \"rgb(157,23,77)\",\n      hsl: \"hsl(335.8,74.4%,35.3%)\",\n      oklch: \"oklch(0.46,0.17,4)\",\n    },\n    {\n      scale: 900,\n      hex: \"#831843\",\n      rgb: \"rgb(131,24,67)\",\n      hsl: \"hsl(335.9,69%,30.4%)\",\n      oklch: \"oklch(0.41,0.14,2)\",\n    },\n    {\n      scale: 950,\n      hex: \"#500724\",\n      rgb: \"rgb(80,7,36)\",\n      hsl: \"hsl(336.2,83.9%,17.1%)\",\n      oklch: \"oklch(0.28,0.10,4)\",\n    },\n  ],\n  rose: [\n    {\n      scale: 50,\n      hex: \"#fff1f2\",\n      rgb: \"rgb(255,241,242)\",\n      hsl: \"hsl(355.7,100%,97.3%)\",\n      oklch: \"oklch(0.97,0.02,12)\",\n    },\n    {\n      scale: 100,\n      hex: \"#ffe4e6\",\n      rgb: \"rgb(255,228,230)\",\n      hsl: \"hsl(355.6,100%,94.7%)\",\n      oklch: \"oklch(0.94,0.03,13)\",\n    },\n    {\n      scale: 200,\n      hex: \"#fecdd3\",\n      rgb: \"rgb(254,205,211)\",\n      hsl: \"hsl(352.7,96.1%,90%)\",\n      oklch: \"oklch(0.89,0.06,10)\",\n    },\n    {\n      scale: 300,\n      hex: \"#fda4af\",\n      rgb: \"rgb(253,164,175)\",\n      hsl: \"hsl(352.6,95.7%,81.8%)\",\n      oklch: \"oklch(0.81,0.11,12)\",\n    },\n    {\n      scale: 400,\n      hex: \"#fb7185\",\n      rgb: \"rgb(251,113,133)\",\n      hsl: \"hsl(351.3,94.5%,71.4%)\",\n      oklch: \"oklch(0.72,0.17,13)\",\n    },\n    {\n      scale: 500,\n      hex: \"#f43f5e\",\n      rgb: \"rgb(244,63,94)\",\n      hsl: \"hsl(349.7,89.2%,60.2%)\",\n      oklch: \"oklch(0.65,0.22,16)\",\n    },\n    {\n      scale: 600,\n      hex: \"#e11d48\",\n      rgb: \"rgb(225,29,72)\",\n      hsl: \"hsl(346.8,77.2%,49.8%)\",\n      oklch: \"oklch(0.59,0.22,18)\",\n    },\n    {\n      scale: 700,\n      hex: \"#be123c\",\n      rgb: \"rgb(190,18,60)\",\n      hsl: \"hsl(345.3,82.7%,40.8%)\",\n      oklch: \"oklch(0.51,0.20,17)\",\n    },\n    {\n      scale: 800,\n      hex: \"#9f1239\",\n      rgb: \"rgb(159,18,57)\",\n      hsl: \"hsl(343.4,79.7%,34.7%)\",\n      oklch: \"oklch(0.45,0.17,14)\",\n    },\n    {\n      scale: 900,\n      hex: \"#881337\",\n      rgb: \"rgb(136,19,55)\",\n      hsl: \"hsl(341.5,75.5%,30.4%)\",\n      oklch: \"oklch(0.41,0.15,10)\",\n    },\n    {\n      scale: 950,\n      hex: \"#4c0519\",\n      rgb: \"rgb(76,5,25)\",\n      hsl: \"hsl(343.1,87.7%,15.9%)\",\n      oklch: \"oklch(0.27,0.10,12)\",\n    },\n  ],\n}\n\nexport const colorMapping = {\n  light: {\n    background: \"white\",\n    foreground: \"{{base}}-950\",\n    card: \"white\",\n    \"card-foreground\": \"{{base}}-950\",\n    popover: \"white\",\n    \"popover-foreground\": \"{{base}}-950\",\n    primary: \"{{base}}-900\",\n    \"primary-foreground\": \"{{base}}-50\",\n    secondary: \"{{base}}-100\",\n    \"secondary-foreground\": \"{{base}}-900\",\n    muted: \"{{base}}-100\",\n    \"muted-foreground\": \"{{base}}-500\",\n    accent: \"{{base}}-100\",\n    \"accent-foreground\": \"{{base}}-900\",\n    destructive: \"red-500\",\n    \"destructive-foreground\": \"{{base}}-50\",\n    border: \"{{base}}-200\",\n    input: \"{{base}}-200\",\n    ring: \"{{base}}-950\",\n    \"chart-1\": \"12 76% 61%\",\n    \"chart-2\": \"173 58% 39%\",\n    \"chart-3\": \"197 37% 24%\",\n    \"chart-4\": \"43 74% 66%\",\n    \"chart-5\": \"27 87% 67%\",\n  },\n  dark: {\n    background: \"{{base}}-950\",\n    foreground: \"{{base}}-50\",\n    card: \"{{base}}-950\",\n    \"card-foreground\": \"{{base}}-50\",\n    popover: \"{{base}}-950\",\n    \"popover-foreground\": \"{{base}}-50\",\n    primary: \"{{base}}-50\",\n    \"primary-foreground\": \"{{base}}-900\",\n    secondary: \"{{base}}-800\",\n    \"secondary-foreground\": \"{{base}}-50\",\n    muted: \"{{base}}-800\",\n    \"muted-foreground\": \"{{base}}-400\",\n    accent: \"{{base}}-800\",\n    \"accent-foreground\": \"{{base}}-50\",\n    destructive: \"red-900\",\n    \"destructive-foreground\": \"{{base}}-50\",\n    border: \"{{base}}-800\",\n    input: \"{{base}}-800\",\n    ring: \"{{base}}-300\",\n    \"chart-1\": \"220 70% 50%\",\n    \"chart-2\": \"160 60% 45%\",\n    \"chart-3\": \"30 80% 55%\",\n    \"chart-4\": \"280 65% 60%\",\n    \"chart-5\": \"340 75% 55%\",\n  },\n} as const\n"
  },
  {
    "path": "apps/v4/registry/_legacy-styles.ts",
    "content": "export const legacyStyles = [\n  {\n    name: \"new-york-v4\",\n    title: \"New York\",\n  },\n  {\n    name: \"base-nova\",\n    title: \"Base Nova\",\n  },\n  {\n    name: \"radix-nova\",\n    title: \"Radix Nova\",\n  },\n] as const\n\nexport type Style = (typeof legacyStyles)[number]\n\nexport async function getActiveStyle() {\n  // In the future, this can read from cookies, session, etc.\n  return legacyStyles[0]\n}\n\nexport function getStyle(name: string) {\n  return legacyStyles.find((style) => style.name === name)\n}\n"
  },
  {
    "path": "apps/v4/registry/_legacy-themes.ts",
    "content": "import { baseColorsV4 } from \"@/registry/_legacy-base-colors\"\n\nexport const themes = Object.keys(baseColorsV4).map((color) => {\n  return {\n    name: `theme-${color}`,\n    type: \"registry:theme\",\n    cssVars: baseColorsV4[color as keyof typeof baseColorsV4],\n    dependencies: [],\n  }\n})\n"
  },
  {
    "path": "apps/v4/registry/base-colors.ts",
    "content": "import { THEMES } from \"@/registry/themes\"\n\nexport const BASE_COLORS = THEMES.filter((theme) =>\n  [\"neutral\", \"stone\", \"zinc\", \"mauve\", \"olive\", \"mist\", \"taupe\"].includes(\n    theme.name\n  )\n)\n\nexport type BaseColor = (typeof BASE_COLORS)[number]\n"
  },
  {
    "path": "apps/v4/registry/bases/README.md",
    "content": "# Registry bases (`base` and `radix`)\n\nThis folder holds **two parallel registries**:\n\n- **`base/`** — Base UI–backed components and blocks  \n- **`radix/`** — Radix-backed components and blocks  \n\n## Keep them in sync\n\nFor any **shared** surface (same preview block, same card, same example intent), changes should be applied to **both** `base` and `radix` variants.\n\n- Adjust only what must differ: imports (`.../base/ui/...` vs `.../radix/ui/...`) and primitive APIs.\n- Avoid editing only one tree unless the work is intentionally scoped to a single base.\n\nProject automation: see `.cursor/rules/registry-bases-parity.mdc` for the Cursor rule agents use when working under `apps/v4/registry/bases/`.\n"
  },
  {
    "path": "apps/v4/registry/bases/__index__.tsx",
    "content": "// @ts-nocheck\n// This file is autogenerated by scripts/build-registry.ts\n// Do not edit this file directly.\nimport \"server-only\"\n\nimport * as React from \"react\"\n\nexport const Index: Record<string, Record<string, any>> = {\n  radix: {\n    accordion: {\n      name: \"accordion\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/accordion.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/accordion.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/accordion\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n          api: \"https://www.radix-ui.com/primitives/docs/components/accordion.md\",\n        },\n      },\n    },\n    alert: {\n      name: \"alert\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/alert.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/alert.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/alert\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\",\n        },\n      },\n    },\n    \"alert-dialog\": {\n      name: \"alert-dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/alert-dialog.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/alert-dialog.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n          api: \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\",\n        },\n      },\n    },\n    \"aspect-ratio\": {\n      name: \"aspect-ratio\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/aspect-ratio.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/aspect-ratio.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n          api: \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\",\n        },\n      },\n    },\n    avatar: {\n      name: \"avatar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/avatar.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/avatar.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/avatar\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n          api: \"https://www.radix-ui.com/primitives/docs/components/avatar.md\",\n        },\n      },\n    },\n    badge: {\n      name: \"badge\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/badge.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/badge.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/badge\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\",\n        },\n      },\n    },\n    breadcrumb: {\n      name: \"breadcrumb\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/breadcrumb.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/breadcrumb.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\",\n        },\n      },\n    },\n    button: {\n      name: \"button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/button.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/button.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/button\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\",\n        },\n      },\n    },\n    \"button-group\": {\n      name: \"button-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"separator\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/button-group.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/button-group.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/button-group\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\",\n        },\n      },\n    },\n    calendar: {\n      name: \"calendar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/calendar.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/calendar.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/calendar\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n          api: \"https://react-day-picker.js.org\",\n        },\n      },\n    },\n    card: {\n      name: \"card\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/card.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/card.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/card\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\",\n        },\n      },\n    },\n    carousel: {\n      name: \"carousel\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/carousel.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/carousel.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/carousel\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n          api: \"https://www.embla-carousel.com/get-started/react\",\n        },\n      },\n    },\n    chart: {\n      name: \"chart\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/chart.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/chart.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/chart\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\",\n        },\n      },\n    },\n    checkbox: {\n      name: \"checkbox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/checkbox.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/checkbox.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\",\n        },\n      },\n    },\n    collapsible: {\n      name: \"collapsible\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/collapsible.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/collapsible.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\",\n        },\n      },\n    },\n    combobox: {\n      name: \"combobox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\", \"input-group\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/combobox.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/combobox.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/combobox\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n          api: \"https://base-ui.com/react/components/combobox\",\n        },\n      },\n    },\n    command: {\n      name: \"command\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"dialog\", \"input-group\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/command.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/command.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/command\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n          api: \"https://github.com/dip/cmdk\",\n        },\n      },\n    },\n    \"context-menu\": {\n      name: \"context-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/context-menu.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/context-menu.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\",\n        },\n      },\n    },\n    dialog: {\n      name: \"dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/dialog.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/dialog.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/dialog\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/dialog.md\",\n        },\n      },\n    },\n    drawer: {\n      name: \"drawer\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/drawer.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/drawer.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/drawer\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n          api: \"https://vaul.emilkowal.ski/getting-started\",\n        },\n      },\n    },\n    \"dropdown-menu\": {\n      name: \"dropdown-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/dropdown-menu.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/dropdown-menu.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\",\n        },\n      },\n    },\n    empty: {\n      name: \"empty\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/empty.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/empty.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/empty\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\",\n        },\n      },\n    },\n    field: {\n      name: \"field\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"label\", \"separator\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/field.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/field.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/field\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\",\n        },\n      },\n    },\n    \"hover-card\": {\n      name: \"hover-card\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/hover-card.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/hover-card.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\",\n        },\n      },\n    },\n    input: {\n      name: \"input\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/input.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/input.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/input\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\",\n        },\n      },\n    },\n    \"input-group\": {\n      name: \"input-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\", \"input\", \"textarea\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/input-group.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/input-group.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/input-group\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\",\n        },\n      },\n    },\n    \"input-otp\": {\n      name: \"input-otp\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/input-otp.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/input-otp.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n          api: \"https://input-otp.rodz.dev\",\n        },\n      },\n    },\n    item: {\n      name: \"item\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"separator\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/item.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/item.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/item\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\",\n        },\n      },\n    },\n    label: {\n      name: \"label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/label.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/label.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/label\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/label.md\",\n        },\n      },\n    },\n    menubar: {\n      name: \"menubar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/menubar.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/menubar.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/menubar\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/menubar.md\",\n        },\n      },\n    },\n    \"navigation-menu\": {\n      name: \"navigation-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/navigation-menu.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/ui/navigation-menu.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\",\n        },\n      },\n    },\n    pagination: {\n      name: \"pagination\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/pagination.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/pagination.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/pagination\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\",\n        },\n      },\n    },\n    popover: {\n      name: \"popover\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/popover.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/popover.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/popover\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/popover.md\",\n        },\n      },\n    },\n    progress: {\n      name: \"progress\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/progress.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/progress.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/progress\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/progress.md\",\n        },\n      },\n    },\n    \"radio-group\": {\n      name: \"radio-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/radio-group.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/radio-group.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\",\n        },\n      },\n    },\n    resizable: {\n      name: \"resizable\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/resizable.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/resizable.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/resizable\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n          api: \"https://github.com/bvaughn/react-resizable-panels\",\n        },\n      },\n    },\n    \"scroll-area\": {\n      name: \"scroll-area\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/scroll-area.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/scroll-area.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\",\n        },\n      },\n    },\n    select: {\n      name: \"select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/select.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/select.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/select\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/select.md\",\n        },\n      },\n    },\n    separator: {\n      name: \"separator\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/separator.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/separator.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/separator\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/separator.md\",\n        },\n      },\n    },\n    sheet: {\n      name: \"sheet\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/sheet.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/sheet.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/sheet\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/dialog.md\",\n        },\n      },\n    },\n    sidebar: {\n      name: \"sidebar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/sidebar.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\",\n        },\n      },\n    },\n    skeleton: {\n      name: \"skeleton\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/skeleton.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/skeleton.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\",\n        },\n      },\n    },\n    slider: {\n      name: \"slider\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/slider.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/slider.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/slider\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/slider.md\",\n        },\n      },\n    },\n    sonner: {\n      name: \"sonner\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/sonner.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/sonner.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/sonner\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n          api: \"https://sonner.emilkowal.ski\",\n        },\n      },\n    },\n    spinner: {\n      name: \"spinner\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/spinner.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/spinner.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/spinner\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\",\n        },\n      },\n    },\n    switch: {\n      name: \"switch\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/switch.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/switch.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/switch\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/switch.md\",\n        },\n      },\n    },\n    table: {\n      name: \"table\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/table.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/table.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/table\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\",\n        },\n      },\n    },\n    tabs: {\n      name: \"tabs\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/tabs.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/tabs.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/tabs\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/tabs.md\",\n        },\n      },\n    },\n    textarea: {\n      name: \"textarea\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/textarea.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/textarea.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/textarea\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\",\n        },\n      },\n    },\n    toggle: {\n      name: \"toggle\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/toggle.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/toggle.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/toggle\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/toggle.md\",\n        },\n      },\n    },\n    \"toggle-group\": {\n      name: \"toggle-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"toggle\"],\n      files: [\n        {\n          path: \"registry/bases/radix/ui/toggle-group.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/toggle-group.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\",\n        },\n      },\n    },\n    tooltip: {\n      name: \"tooltip\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/tooltip.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/tooltip.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n          api: \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\",\n        },\n      },\n    },\n    kbd: {\n      name: \"kbd\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/kbd.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/kbd.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/kbd\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\",\n        },\n      },\n    },\n    \"native-select\": {\n      name: \"native-select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/native-select.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/native-select.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/native-select\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\",\n        },\n      },\n    },\n    direction: {\n      name: \"direction\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/ui/direction.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/ui/direction.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/radix/direction\",\n          api: \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\",\n        },\n      },\n    },\n    \"accordion-example\": {\n      name: \"accordion-example\",\n      title: \"Accordion\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"accordion\", \"button\", \"card\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/accordion-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/accordion-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert-example\": {\n      name: \"alert-example\",\n      title: \"Alert\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"alert\", \"badge\", \"button\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/alert-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/alert-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert-dialog-example\": {\n      name: \"alert-dialog-example\",\n      title: \"Alert Dialog\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/alert-dialog-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/alert-dialog-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"aspect-ratio-example\": {\n      name: \"aspect-ratio-example\",\n      title: \"Aspect Ratio\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"aspect-ratio\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/aspect-ratio-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/aspect-ratio-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"avatar-example\": {\n      name: \"avatar-example\",\n      title: \"Avatar\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"avatar\", \"button\", \"empty\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/avatar-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/avatar-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"badge-example\": {\n      name: \"badge-example\",\n      title: \"Badge\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"badge\", \"spinner\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/badge-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/badge-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb-example\": {\n      name: \"breadcrumb-example\",\n      title: \"Breadcrumb\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/breadcrumb-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/breadcrumb-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-example\": {\n      name: \"button-example\",\n      title: \"Button\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/button-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/button-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-example\": {\n      name: \"button-group-example\",\n      title: \"Button Group\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/button-group-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/button-group-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"calendar-example\": {\n      name: \"calendar-example\",\n      title: \"Calendar\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/calendar-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/calendar-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"card-example\": {\n      name: \"card-example\",\n      title: \"Card\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/card-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/card-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel-example\": {\n      name: \"carousel-example\",\n      title: \"Carousel\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"card\", \"carousel\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/carousel-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/carousel-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart-example\": {\n      name: \"chart-example\",\n      title: \"Chart\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"chart\", \"card\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/chart-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/chart-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"checkbox-example\": {\n      name: \"checkbox-example\",\n      title: \"Checkbox\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"checkbox\", \"field\", \"table\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/checkbox-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/checkbox-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"collapsible-example\": {\n      name: \"collapsible-example\",\n      title: \"Collapsible\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/collapsible-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/collapsible-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"combobox-example\": {\n      name: \"combobox-example\",\n      title: \"Combobox\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/combobox-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/combobox-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"command-example\": {\n      name: \"command-example\",\n      title: \"Command\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"command\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/command-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/command-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"context-menu-example\": {\n      name: \"context-menu-example\",\n      title: \"Context Menu\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/context-menu-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/context-menu-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dialog-example\": {\n      name: \"dialog-example\",\n      title: \"Dialog\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/dialog-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/dialog-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"drawer-example\": {\n      name: \"drawer-example\",\n      title: \"Drawer\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"drawer\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/drawer-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/drawer-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dropdown-menu-example\": {\n      name: \"dropdown-menu-example\",\n      title: \"Dropdown Menu\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/dropdown-menu-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/dropdown-menu-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-example\": {\n      name: \"empty-example\",\n      title: \"Empty\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/empty-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/empty-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-example\": {\n      name: \"field-example\",\n      title: \"Field\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/field-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/field-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"hover-card-example\": {\n      name: \"hover-card-example\",\n      title: \"Hover Card\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/hover-card-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/hover-card-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-example\": {\n      name: \"input-example\",\n      title: \"Input\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/input-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/input-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-example\": {\n      name: \"input-group-example\",\n      title: \"Input Group\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/input-group-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/input-group-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-otp-example\": {\n      name: \"input-otp-example\",\n      title: \"Input OTP\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"card\", \"field\", \"input-otp\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/input-otp-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/input-otp-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-example\": {\n      name: \"item-example\",\n      title: \"Item\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"item\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/item-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/item-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"kbd-example\": {\n      name: \"kbd-example\",\n      title: \"Kbd\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/kbd-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/kbd-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"label-example\": {\n      name: \"label-example\",\n      title: \"Label\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/label-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/label-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"menubar-example\": {\n      name: \"menubar-example\",\n      title: \"Menubar\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"dialog\", \"menubar\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/menubar-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/menubar-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"native-select-example\": {\n      name: \"native-select-example\",\n      title: \"Native Select\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"native-select\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/native-select-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/native-select-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"navigation-menu-example\": {\n      name: \"navigation-menu-example\",\n      title: \"Navigation Menu\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"dialog\", \"navigation-menu\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/navigation-menu-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/navigation-menu-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"pagination-example\": {\n      name: \"pagination-example\",\n      title: \"Pagination\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"pagination\", \"select\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/pagination-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/pagination-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"popover-example\": {\n      name: \"popover-example\",\n      title: \"Popover\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/popover-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/popover-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"progress-example\": {\n      name: \"progress-example\",\n      title: \"Progress\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"item\", \"progress\", \"slider\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/progress-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/progress-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"radio-group-example\": {\n      name: \"radio-group-example\",\n      title: \"Radio Group\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"radio-group\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/radio-group-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/radio-group-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"resizable-example\": {\n      name: \"resizable-example\",\n      title: \"Resizable\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"resizable\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/resizable-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/resizable-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"scroll-area-example\": {\n      name: \"scroll-area-example\",\n      title: \"Scroll Area\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"scroll-area\", \"separator\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/scroll-area-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/scroll-area-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"select-example\": {\n      name: \"select-example\",\n      title: \"Select\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/select-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/select-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"separator-example\": {\n      name: \"separator-example\",\n      title: \"Separator\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"separator\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/separator-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/separator-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sheet-example\": {\n      name: \"sheet-example\",\n      title: \"Sheet\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/sheet-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/sheet-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar-example\": {\n      name: \"sidebar-example\",\n      title: \"Sidebar\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/sidebar-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/sidebar-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar-icon-example\": {\n      name: \"sidebar-icon-example\",\n      title: \"Sidebar (Icon)\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/sidebar-icon-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/sidebar-icon-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar-inset-example\": {\n      name: \"sidebar-inset-example\",\n      title: \"Sidebar (Inset)\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"collapsible\", \"sidebar\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/sidebar-inset-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/sidebar-inset-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar-floating-example\": {\n      name: \"sidebar-floating-example\",\n      title: \"Sidebar (Floating)\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/sidebar-floating-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/sidebar-floating-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"skeleton-example\": {\n      name: \"skeleton-example\",\n      title: \"Skeleton\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"skeleton\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/skeleton-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/skeleton-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"slider-example\": {\n      name: \"slider-example\",\n      title: \"Slider\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"label\", \"slider\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/slider-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/slider-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sonner-example\": {\n      name: \"sonner-example\",\n      title: \"Sonner\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"sonner\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/sonner-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/sonner-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-example\": {\n      name: \"spinner-example\",\n      title: \"Spinner\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/spinner-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/spinner-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"switch-example\": {\n      name: \"switch-example\",\n      title: \"Switch\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"label\", \"switch\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/switch-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/switch-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"table-example\": {\n      name: \"table-example\",\n      title: \"Table\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/table-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/table-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"tabs-example\": {\n      name: \"tabs-example\",\n      title: \"Tabs\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/tabs-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/tabs-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"textarea-example\": {\n      name: \"textarea-example\",\n      title: \"Textarea\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"textarea\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/textarea-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/textarea-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-example\": {\n      name: \"toggle-example\",\n      title: \"Toggle\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/toggle-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/toggle-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-example\": {\n      name: \"toggle-group-example\",\n      title: \"Toggle Group\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input\", \"select\", \"toggle-group\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/toggle-group-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/toggle-group-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"tooltip-example\": {\n      name: \"tooltip-example\",\n      title: \"Tooltip\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/tooltip-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/tooltip-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    demo: {\n      name: \"demo\",\n      title: \"Demo\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/demo.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/examples/demo.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"component-example\": {\n      name: \"component-example\",\n      title: \"Example\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/examples/component-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/examples/component-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    utils: {\n      name: \"utils\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:lib\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/lib/utils.ts\",\n          type: \"registry:lib\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/lib/utils.ts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    example: {\n      name: \"example\",\n      title: \"Example\",\n      description: \"\",\n      type: \"registry:component\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/components/example.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/components/example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    preview: {\n      name: \"preview\",\n      title: \"Preview\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/preview/index.tsx\",\n          type: \"registry:block\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/preview/index.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"login-01\": {\n      name: \"login-01\",\n      title: \"Login 01\",\n      description: \"A simple login form.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/login-01/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/login-01/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/login-01/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"login-02\": {\n      name: \"login-02\",\n      title: \"Login 02\",\n      description: \"A two column login page with a cover image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/login-02/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/login-02/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/login-02/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"login-03\": {\n      name: \"login-03\",\n      title: \"Login 03\",\n      description: \"A login page with a muted background color.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/login-03/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/login-03/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/login-03/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"login-04\": {\n      name: \"login-04\",\n      title: \"Login 04\",\n      description: \"A login page with form and image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/login-04/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/login-04/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/login-04/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"login-05\": {\n      name: \"login-05\",\n      title: \"Login 05\",\n      description: \"A simple email-only login page.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/login-05/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/login-05/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/login-05/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"signup-01\": {\n      name: \"signup-01\",\n      title: \"Signup 01\",\n      description: \"A simple signup form.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/signup-01/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/signup-01/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/signup-01/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"signup-02\": {\n      name: \"signup-02\",\n      title: \"Signup 02\",\n      description: \"A two column signup page with a cover image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/signup-02/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/signup-02/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/signup-02/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"signup-03\": {\n      name: \"signup-03\",\n      title: \"Signup 03\",\n      description: \"A signup page with a muted background color.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/signup-03/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/signup-03/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/signup-03/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"signup-04\": {\n      name: \"signup-04\",\n      title: \"Signup 04\",\n      description: \"A signup page with form and image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/signup-04/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/signup-04/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/signup-04/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"signup-05\": {\n      name: \"signup-05\",\n      title: \"Signup 05\",\n      description: \"A simple signup form with social providers.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"input\", \"label\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/signup-05/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/signup-05/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/signup-05/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"dashboard-01\": {\n      name: \"dashboard-01\",\n      title: \"Dashboard 01\",\n      description: \"A dashboard with sidebar, charts and data table.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/data.json\",\n          type: \"registry:file\",\n          target: \"app/dashboard/data.json\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/data-table.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/nav-documents.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/section-cards.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/dashboard-01/components/site-header.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/dashboard-01/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"dashboard\"],\n      meta: { iframeHeight: \"1000px\" },\n    },\n    \"sidebar-01\": {\n      name: \"sidebar-01\",\n      title: \"Sidebar 01\",\n      description: \"A simple sidebar with navigation grouped by section.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-01/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-01/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-01/components/search-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-01/components/version-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-01/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-02\": {\n      name: \"sidebar-02\",\n      title: \"Sidebar 02\",\n      description: \"A sidebar with collapsible sections.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-02/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-02/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-02/components/search-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-02/components/version-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-02/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-03\": {\n      name: \"sidebar-03\",\n      title: \"Sidebar 03\",\n      description: \"A sidebar with submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\", \"breadcrumb\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-03/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-03/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-03/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-04\": {\n      name: \"sidebar-04\",\n      title: \"Sidebar 04\",\n      description: \"A floating sidebar with submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\", \"breadcrumb\", \"separator\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-04/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-04/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-04/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-05\": {\n      name: \"sidebar-05\",\n      title: \"Sidebar 05\",\n      description: \"A sidebar with collapsible submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-05/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-05/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-05/components/search-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-05/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-06\": {\n      name: \"sidebar-06\",\n      title: \"Sidebar 06\",\n      description: \"A sidebar with submenus as dropdowns.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-06/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-06/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-06/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-06/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-07\": {\n      name: \"sidebar-07\",\n      title: \"Sidebar 07\",\n      description: \"A sidebar that collapses to icons.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-07/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-07/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-07/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-07/components/nav-projects.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-07/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-07/components/team-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-07/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-08\": {\n      name: \"sidebar-08\",\n      title: \"Sidebar 08\",\n      description: \"An inset sidebar with secondary navigation.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-08/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-08/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-08/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-08/components/nav-projects.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-08/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-08/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-08/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-09\": {\n      name: \"sidebar-09\",\n      title: \"Sidebar 09\",\n      description: \"Collapsible nested sidebars.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-09/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-09/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-09/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-09/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-10\": {\n      name: \"sidebar-10\",\n      title: \"Sidebar 10\",\n      description: \"A sidebar in a popover.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-10/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-10/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-10/components/nav-actions.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-10/components/nav-favorites.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-10/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-10/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-10/components/team-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-10/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-11\": {\n      name: \"sidebar-11\",\n      title: \"Sidebar 11\",\n      description: \"A sidebar with a collapsible file tree.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-11/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-11/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-11/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-12\": {\n      name: \"sidebar-12\",\n      title: \"Sidebar 12\",\n      description: \"A sidebar with a calendar.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-12/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-12/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-12/components/calendars.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-12/components/date-picker.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-12/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-12/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-13\": {\n      name: \"sidebar-13\",\n      title: \"Sidebar 13\",\n      description: \"A sidebar in a dialog.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-13/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-13/components/settings-dialog.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-13/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-14\": {\n      name: \"sidebar-14\",\n      title: \"Sidebar 14\",\n      description: \"A sidebar on the right.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\", \"breadcrumb\"],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-14/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-14/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-14/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-15\": {\n      name: \"sidebar-15\",\n      title: \"Sidebar 15\",\n      description: \"A left and right sidebar.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/calendars.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/date-picker.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/nav-favorites.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/sidebar-left.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/sidebar-right.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-15/components/team-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-15/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-16\": {\n      name: \"sidebar-16\",\n      title: \"Sidebar 16\",\n      description: \"A sidebar with a sticky site header.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/radix/blocks/sidebar-16/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-16/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-16/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-16/components/nav-projects.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-16/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-16/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-16/components/search-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/radix/blocks/sidebar-16/components/site-header.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/radix/blocks/sidebar-16/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"use-mobile\": {\n      name: \"use-mobile\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:hook\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/radix/hooks/use-mobile.ts\",\n          type: \"registry:hook\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/radix/hooks/use-mobile.ts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n  },\n  base: {\n    accordion: {\n      name: \"accordion\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/accordion.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/accordion.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/accordion\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n          api: \"https://base-ui.com/react/components/accordion.md\",\n        },\n      },\n    },\n    alert: {\n      name: \"alert\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/alert.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/alert.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/alert\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\",\n        },\n      },\n    },\n    \"alert-dialog\": {\n      name: \"alert-dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/alert-dialog.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/alert-dialog.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n          api: \"https://base-ui.com/react/components/alert-dialog.md\",\n        },\n      },\n    },\n    \"aspect-ratio\": {\n      name: \"aspect-ratio\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/aspect-ratio.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/aspect-ratio.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\",\n        },\n      },\n    },\n    avatar: {\n      name: \"avatar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/avatar.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/avatar.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/avatar\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n          api: \"https://base-ui.com/react/components/avatar.md\",\n        },\n      },\n    },\n    badge: {\n      name: \"badge\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/badge.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/badge.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/badge\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\",\n        },\n      },\n    },\n    breadcrumb: {\n      name: \"breadcrumb\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/breadcrumb.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/breadcrumb.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\",\n        },\n      },\n    },\n    button: {\n      name: \"button\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/button.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/button.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/button\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\",\n        },\n      },\n    },\n    \"button-group\": {\n      name: \"button-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"separator\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/button-group.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/button-group.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/button-group\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\",\n        },\n      },\n    },\n    calendar: {\n      name: \"calendar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/calendar.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/calendar.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/calendar\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n          api: \"https://react-day-picker.js.org\",\n        },\n      },\n    },\n    card: {\n      name: \"card\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/card.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/card.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/card\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\",\n        },\n      },\n    },\n    carousel: {\n      name: \"carousel\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/carousel.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/carousel.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/carousel\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n          api: \"https://www.embla-carousel.com/get-started/react\",\n        },\n      },\n    },\n    chart: {\n      name: \"chart\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"card\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/chart.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/chart.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/chart\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\",\n        },\n      },\n    },\n    checkbox: {\n      name: \"checkbox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/checkbox.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/checkbox.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/checkbox\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n          api: \"https://base-ui.com/react/components/checkbox.md\",\n        },\n      },\n    },\n    collapsible: {\n      name: \"collapsible\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/collapsible.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/collapsible.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/collapsible\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n          api: \"https://base-ui.com/react/components/collapsible.md\",\n        },\n      },\n    },\n    combobox: {\n      name: \"combobox\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\", \"input-group\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/combobox.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/combobox.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/combobox\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n          api: \"https://base-ui.com/react/components/combobox.md\",\n        },\n      },\n    },\n    command: {\n      name: \"command\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"dialog\", \"input-group\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/command.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/command.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/command\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n          api: \"https://github.com/dip/cmdk\",\n        },\n      },\n    },\n    \"context-menu\": {\n      name: \"context-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/context-menu.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/context-menu.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/context-menu\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n          api: \"https://base-ui.com/react/components/context-menu.md\",\n        },\n      },\n    },\n    dialog: {\n      name: \"dialog\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/dialog.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/dialog.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/dialog\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n          api: \"https://base-ui.com/react/components/dialog.md\",\n        },\n      },\n    },\n    drawer: {\n      name: \"drawer\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/drawer.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/drawer.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/drawer\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n          api: \"https://vaul.emilkowal.ski/getting-started\",\n        },\n      },\n    },\n    \"dropdown-menu\": {\n      name: \"dropdown-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/dropdown-menu.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/dropdown-menu.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n          api: \"https://base-ui.com/react/components/menu.md\",\n        },\n      },\n    },\n    empty: {\n      name: \"empty\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/empty.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/empty.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/empty\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\",\n        },\n      },\n    },\n    field: {\n      name: \"field\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"label\", \"separator\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/field.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/field.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/field\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\",\n        },\n      },\n    },\n    \"hover-card\": {\n      name: \"hover-card\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/hover-card.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/hover-card.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/hover-card\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n          api: \"https://base-ui.com/react/components/hover-card.md\",\n        },\n      },\n    },\n    input: {\n      name: \"input\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/input.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/input.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/input\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\",\n        },\n      },\n    },\n    \"input-group\": {\n      name: \"input-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\", \"input\", \"textarea\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/input-group.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/input-group.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/input-group\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\",\n        },\n      },\n    },\n    \"input-otp\": {\n      name: \"input-otp\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/input-otp.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/input-otp.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/input-otp\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n          api: \"https://input-otp.rodz.dev\",\n        },\n      },\n    },\n    item: {\n      name: \"item\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"separator\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/item.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/item.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/item\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\",\n        },\n      },\n    },\n    label: {\n      name: \"label\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/label.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/label.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/label\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n          api: \"https://base-ui.com/react/components/label.md\",\n        },\n      },\n    },\n    menubar: {\n      name: \"menubar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"dropdown-menu\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/menubar.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/menubar.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/menubar\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n          api: \"https://base-ui.com/react/components/menubar.md\",\n        },\n      },\n    },\n    \"navigation-menu\": {\n      name: \"navigation-menu\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/navigation-menu.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/navigation-menu.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n          api: \"https://base-ui.com/react/components/navigation-menu.md\",\n        },\n      },\n    },\n    pagination: {\n      name: \"pagination\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/pagination.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/pagination.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/pagination\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\",\n        },\n      },\n    },\n    popover: {\n      name: \"popover\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/popover.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/popover.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/popover\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n          api: \"https://base-ui.com/react/components/popover.md\",\n        },\n      },\n    },\n    progress: {\n      name: \"progress\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/progress.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/progress.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/progress\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n          api: \"https://base-ui.com/react/components/progress.md\",\n        },\n      },\n    },\n    \"radio-group\": {\n      name: \"radio-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/radio-group.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/radio-group.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/radio-group\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n          api: \"https://base-ui.com/react/components/radio-group.md\",\n        },\n      },\n    },\n    resizable: {\n      name: \"resizable\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/resizable.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/resizable.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/resizable\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n          api: \"https://github.com/bvaughn/react-resizable-panels\",\n        },\n      },\n    },\n    \"scroll-area\": {\n      name: \"scroll-area\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/scroll-area.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/scroll-area.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n          api: \"https://base-ui.com/react/components/scroll-area.md\",\n        },\n      },\n    },\n    select: {\n      name: \"select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/select.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/select.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/select\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n          api: \"https://base-ui.com/react/components/select.md\",\n        },\n      },\n    },\n    separator: {\n      name: \"separator\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/separator.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/separator.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/separator\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n          api: \"https://base-ui.com/react/components/separator.md\",\n        },\n      },\n    },\n    sheet: {\n      name: \"sheet\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/sheet.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/sheet.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/sheet\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n          api: \"https://base-ui.com/react/components/dialog.md\",\n        },\n      },\n    },\n    sidebar: {\n      name: \"sidebar\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\n        \"button\",\n        \"input\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\",\n        \"use-mobile\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/sidebar.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/sidebar\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\",\n        },\n      },\n    },\n    skeleton: {\n      name: \"skeleton\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/skeleton.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/skeleton.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/skeleton\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\",\n        },\n      },\n    },\n    slider: {\n      name: \"slider\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/slider.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/slider.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/slider\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n          api: \"https://base-ui.com/react/components/slider.md\",\n        },\n      },\n    },\n    sonner: {\n      name: \"sonner\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/sonner.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/sonner.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/sonner\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n          api: \"https://sonner.emilkowal.ski\",\n        },\n      },\n    },\n    spinner: {\n      name: \"spinner\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/spinner.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/spinner.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/spinner\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\",\n        },\n      },\n    },\n    switch: {\n      name: \"switch\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/switch.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/switch.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/switch\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n          api: \"https://base-ui.com/react/components/switch.md\",\n        },\n      },\n    },\n    table: {\n      name: \"table\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/table.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/table.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/table\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\",\n        },\n      },\n    },\n    tabs: {\n      name: \"tabs\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/tabs.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/tabs.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/tabs\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n          api: \"https://base-ui.com/react/components/tabs.md\",\n        },\n      },\n    },\n    textarea: {\n      name: \"textarea\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/textarea.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/textarea.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/textarea\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\",\n        },\n      },\n    },\n    toggle: {\n      name: \"toggle\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/toggle.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/toggle.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/toggle\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n          api: \"https://base-ui.com/react/components/toggle.md\",\n        },\n      },\n    },\n    \"toggle-group\": {\n      name: \"toggle-group\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: [\"toggle\"],\n      files: [\n        {\n          path: \"registry/bases/base/ui/toggle-group.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/toggle-group.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n          api: \"https://base-ui.com/react/components/toggle-group.md\",\n        },\n      },\n    },\n    tooltip: {\n      name: \"tooltip\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/tooltip.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/tooltip.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/tooltip\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n          api: \"https://base-ui.com/react/components/tooltip.md\",\n        },\n      },\n    },\n    kbd: {\n      name: \"kbd\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/kbd.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/kbd.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/kbd\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\",\n        },\n      },\n    },\n    \"native-select\": {\n      name: \"native-select\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/native-select.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/native-select.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/native-select\",\n          examples:\n            \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\",\n        },\n      },\n    },\n    direction: {\n      name: \"direction\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:ui\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/ui/direction.tsx\",\n          type: \"registry:ui\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/ui/direction.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: {\n        links: {\n          docs: \"https://ui.shadcn.com/docs/components/base/direction\",\n          api: \"https://base-ui.com/react/utils/direction-provider.md\",\n        },\n      },\n    },\n    \"accordion-example\": {\n      name: \"accordion-example\",\n      title: \"Accordion\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"accordion\", \"button\", \"card\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/accordion-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/accordion-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert-example\": {\n      name: \"alert-example\",\n      title: \"Alert\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"alert\", \"badge\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/alert-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/alert-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"alert-dialog-example\": {\n      name: \"alert-dialog-example\",\n      title: \"Alert Dialog\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/alert-dialog-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/alert-dialog-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"aspect-ratio-example\": {\n      name: \"aspect-ratio-example\",\n      title: \"Aspect Ratio\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"aspect-ratio\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/aspect-ratio-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/aspect-ratio-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"avatar-example\": {\n      name: \"avatar-example\",\n      title: \"Avatar\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"avatar\", \"button\", \"empty\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/avatar-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/avatar-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"badge-example\": {\n      name: \"badge-example\",\n      title: \"Badge\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"badge\", \"spinner\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/badge-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/badge-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"breadcrumb-example\": {\n      name: \"breadcrumb-example\",\n      title: \"Breadcrumb\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/breadcrumb-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/breadcrumb-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-example\": {\n      name: \"button-example\",\n      title: \"Button\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/button-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/button-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"button-group-example\": {\n      name: \"button-group-example\",\n      title: \"Button Group\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"button-group\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"label\",\n        \"popover\",\n        \"select\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/button-group-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/button-group-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"calendar-example\": {\n      name: \"calendar-example\",\n      title: \"Calendar\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"popover\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/calendar-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/calendar-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"card-example\": {\n      name: \"card-example\",\n      title: \"Card\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"avatar\",\n        \"button\",\n        \"card\",\n        \"field\",\n        \"input\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/card-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/card-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"carousel-example\": {\n      name: \"carousel-example\",\n      title: \"Carousel\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"card\", \"carousel\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/carousel-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/carousel-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"chart-example\": {\n      name: \"chart-example\",\n      title: \"Chart\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"chart\", \"card\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/chart-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/chart-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"checkbox-example\": {\n      name: \"checkbox-example\",\n      title: \"Checkbox\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"checkbox\", \"field\", \"table\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/checkbox-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/checkbox-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"collapsible-example\": {\n      name: \"collapsible-example\",\n      title: \"Collapsible\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"card\",\n        \"collapsible\",\n        \"field\",\n        \"input\",\n        \"tabs\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/collapsible-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/collapsible-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"combobox-example\": {\n      name: \"combobox-example\",\n      title: \"Combobox\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"select\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/combobox-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/combobox-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"command-example\": {\n      name: \"command-example\",\n      title: \"Command\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"command\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/command-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/command-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"context-menu-example\": {\n      name: \"context-menu-example\",\n      title: \"Context Menu\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"context-menu\", \"dialog\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/context-menu-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/context-menu-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dialog-example\": {\n      name: \"dialog-example\",\n      title: \"Dialog\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"checkbox\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"native-select\",\n        \"select\",\n        \"switch\",\n        \"tabs\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/dialog-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/dialog-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"drawer-example\": {\n      name: \"drawer-example\",\n      title: \"Drawer\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"drawer\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/drawer-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/drawer-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"dropdown-menu-example\": {\n      name: \"dropdown-menu-example\",\n      title: \"Dropdown Menu\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"avatar\",\n        \"button\",\n        \"dialog\",\n        \"dropdown-menu\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/dropdown-menu-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/dropdown-menu-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"empty-example\": {\n      name: \"empty-example\",\n      title: \"Empty\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"empty\",\n        \"input-group\",\n        \"kbd\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/empty-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/empty-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"field-example\": {\n      name: \"field-example\",\n      title: \"Field\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"badge\",\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"input-otp\",\n        \"native-select\",\n        \"radio-group\",\n        \"select\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/field-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/field-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"hover-card-example\": {\n      name: \"hover-card-example\",\n      title: \"Hover Card\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"dialog\", \"hover-card\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/hover-card-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/hover-card-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-example\": {\n      name: \"input-example\",\n      title: \"Input\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"field\",\n        \"input\",\n        \"native-select\",\n        \"select\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/input-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/input-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-group-example\": {\n      name: \"input-group-example\",\n      title: \"Input Group\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"kbd\",\n        \"popover\",\n        \"spinner\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/input-group-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/input-group-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"input-otp-example\": {\n      name: \"input-otp-example\",\n      title: \"Input OTP\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"card\", \"field\", \"input-otp\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/input-otp-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/input-otp-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"item-example\": {\n      name: \"item-example\",\n      title: \"Item\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"item\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/item-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/item-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"kbd-example\": {\n      name: \"kbd-example\",\n      title: \"Kbd\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"input-group\",\n        \"kbd\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/kbd-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/kbd-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"label-example\": {\n      name: \"label-example\",\n      title: \"Label\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"checkbox\",\n        \"field\",\n        \"input\",\n        \"label\",\n        \"textarea\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/label-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/label-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"menubar-example\": {\n      name: \"menubar-example\",\n      title: \"Menubar\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"dialog\", \"menubar\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/menubar-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/menubar-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"native-select-example\": {\n      name: \"native-select-example\",\n      title: \"Native Select\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"native-select\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/native-select-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/native-select-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"navigation-menu-example\": {\n      name: \"navigation-menu-example\",\n      title: \"Navigation Menu\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"dialog\", \"navigation-menu\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/navigation-menu-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/navigation-menu-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"pagination-example\": {\n      name: \"pagination-example\",\n      title: \"Pagination\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"pagination\", \"select\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/pagination-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/pagination-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"popover-example\": {\n      name: \"popover-example\",\n      title: \"Popover\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"popover\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/popover-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/popover-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"progress-example\": {\n      name: \"progress-example\",\n      title: \"Progress\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"item\", \"progress\", \"slider\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/progress-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/progress-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"radio-group-example\": {\n      name: \"radio-group-example\",\n      title: \"Radio Group\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"radio-group\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/radio-group-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/radio-group-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"resizable-example\": {\n      name: \"resizable-example\",\n      title: \"Resizable\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"resizable\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/resizable-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/resizable-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"scroll-area-example\": {\n      name: \"scroll-area-example\",\n      title: \"Scroll Area\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"scroll-area\", \"separator\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/scroll-area-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/scroll-area-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"select-example\": {\n      name: \"select-example\",\n      title: \"Select\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"dialog\",\n        \"field\",\n        \"input\",\n        \"item\",\n        \"native-select\",\n        \"select\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/select-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/select-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"separator-example\": {\n      name: \"separator-example\",\n      title: \"Separator\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"separator\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/separator-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/separator-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sheet-example\": {\n      name: \"sheet-example\",\n      title: \"Sheet\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/sheet-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/sheet-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar-example\": {\n      name: \"sidebar-example\",\n      title: \"Sidebar\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"dropdown-menu\",\n        \"item\",\n        \"label\",\n        \"sidebar\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/sidebar-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/sidebar-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar-icon-example\": {\n      name: \"sidebar-icon-example\",\n      title: \"Sidebar (Icon)\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"avatar\",\n        \"button\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"item\",\n        \"sidebar\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/sidebar-icon-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/sidebar-icon-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar-inset-example\": {\n      name: \"sidebar-inset-example\",\n      title: \"Sidebar (Inset)\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"collapsible\", \"sidebar\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/sidebar-inset-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/sidebar-inset-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sidebar-floating-example\": {\n      name: \"sidebar-floating-example\",\n      title: \"Sidebar (Floating)\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"card\",\n        \"dropdown-menu\",\n        \"field\",\n        \"item\",\n        \"sidebar\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/sidebar-floating-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/sidebar-floating-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"skeleton-example\": {\n      name: \"skeleton-example\",\n      title: \"Skeleton\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"skeleton\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/skeleton-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/skeleton-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"slider-example\": {\n      name: \"slider-example\",\n      title: \"Slider\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"label\", \"slider\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/slider-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/slider-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"sonner-example\": {\n      name: \"sonner-example\",\n      title: \"Sonner\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"sonner\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/sonner-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/sonner-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"spinner-example\": {\n      name: \"spinner-example\",\n      title: \"Spinner\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"badge\",\n        \"button\",\n        \"empty\",\n        \"field\",\n        \"input-group\",\n        \"spinner\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/spinner-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/spinner-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"switch-example\": {\n      name: \"switch-example\",\n      title: \"Switch\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"label\", \"switch\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/switch-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/switch-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"table-example\": {\n      name: \"table-example\",\n      title: \"Table\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"button\",\n        \"dropdown-menu\",\n        \"input\",\n        \"select\",\n        \"table\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/table-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/table-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"tabs-example\": {\n      name: \"tabs-example\",\n      title: \"Tabs\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/tabs-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/tabs-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"textarea-example\": {\n      name: \"textarea-example\",\n      title: \"Textarea\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"field\", \"textarea\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/textarea-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/textarea-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-example\": {\n      name: \"toggle-example\",\n      title: \"Toggle\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"toggle\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/toggle-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/toggle-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"toggle-group-example\": {\n      name: \"toggle-group-example\",\n      title: \"Toggle Group\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"input\", \"select\", \"toggle-group\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/toggle-group-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/toggle-group-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"tooltip-example\": {\n      name: \"tooltip-example\",\n      title: \"Tooltip\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\"button\", \"kbd\", \"tooltip\", \"example\"],\n      files: [\n        {\n          path: \"registry/bases/base/examples/tooltip-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/tooltip-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    demo: {\n      name: \"demo\",\n      title: \"Demo\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input-group\",\n        \"item\",\n        \"radio-group\",\n        \"slider\",\n        \"switch\",\n        \"textarea\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/demo.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/examples/demo.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"component-example\": {\n      name: \"component-example\",\n      title: \"Example\",\n      description: \"\",\n      type: \"registry:example\",\n      registryDependencies: [\n        \"alert-dialog\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"field\",\n        \"input\",\n        \"select\",\n        \"textarea\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/examples/component-example.tsx\",\n          type: \"registry:example\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/examples/component-example.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    utils: {\n      name: \"utils\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:lib\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/lib/utils.ts\",\n          type: \"registry:lib\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/lib/utils.ts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    example: {\n      name: \"example\",\n      title: \"Example\",\n      description: \"\",\n      type: \"registry:component\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/components/example.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/components/example.tsx\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    preview: {\n      name: \"preview\",\n      title: \"Preview\",\n      description: \"\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"alert-dialog\",\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"button-group\",\n        \"card\",\n        \"chart\",\n        \"checkbox\",\n        \"combobox\",\n        \"dropdown-menu\",\n        \"empty\",\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"item\",\n        \"label\",\n        \"popover\",\n        \"radio-group\",\n        \"select\",\n        \"separator\",\n        \"sheet\",\n        \"slider\",\n        \"spinner\",\n        \"switch\",\n        \"textarea\",\n        \"tooltip\",\n        \"example\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/preview/index.tsx\",\n          type: \"registry:block\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/preview/index.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n    \"login-01\": {\n      name: \"login-01\",\n      title: \"Login 01\",\n      description: \"A simple login form.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/login-01/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/login-01/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/login-01/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"login-02\": {\n      name: \"login-02\",\n      title: \"Login 02\",\n      description: \"A two column login page with a cover image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/login-02/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/login-02/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/login-02/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"login-03\": {\n      name: \"login-03\",\n      title: \"Login 03\",\n      description: \"A login page with a muted background color.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/login-03/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/login-03/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/login-03/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"login-04\": {\n      name: \"login-04\",\n      title: \"Login 04\",\n      description: \"A login page with form and image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/login-04/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/login-04/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/login-04/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"login-05\": {\n      name: \"login-05\",\n      title: \"Login 05\",\n      description: \"A simple email-only login page.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/login-05/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/login-05/components/login-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/login-05/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"login\"],\n      meta: undefined,\n    },\n    \"signup-01\": {\n      name: \"signup-01\",\n      title: \"Signup 01\",\n      description: \"A simple signup form.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/signup-01/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/signup-01/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/signup-01/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"signup-02\": {\n      name: \"signup-02\",\n      title: \"Signup 02\",\n      description: \"A two column signup page with a cover image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/signup-02/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/signup-02/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/signup-02/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"signup-03\": {\n      name: \"signup-03\",\n      title: \"Signup 03\",\n      description: \"A signup page with a muted background color.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/signup-03/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/signup-03/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/signup-03/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"signup-04\": {\n      name: \"signup-04\",\n      title: \"Signup 04\",\n      description: \"A signup page with form and image.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/signup-04/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/signup-04/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/signup-04/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"signup-05\": {\n      name: \"signup-05\",\n      title: \"Signup 05\",\n      description: \"A simple signup form with social providers.\",\n      type: \"registry:block\",\n      registryDependencies: [\"button\", \"input\", \"label\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/signup-05/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/signup/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/signup-05/components/signup-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/signup-05/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"authentication\", \"signup\"],\n      meta: undefined,\n    },\n    \"dashboard-01\": {\n      name: \"dashboard-01\",\n      title: \"Dashboard 01\",\n      description: \"A dashboard with sidebar, charts and data table.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/data.json\",\n          type: \"registry:file\",\n          target: \"app/dashboard/data.json\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/data-table.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/nav-documents.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/section-cards.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/dashboard-01/components/site-header.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/dashboard-01/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"dashboard\"],\n      meta: { iframeHeight: \"1000px\" },\n    },\n    \"sidebar-01\": {\n      name: \"sidebar-01\",\n      title: \"Sidebar 01\",\n      description: \"A simple sidebar with navigation grouped by section.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-01/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-01/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-01/components/search-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-01/components/version-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-01/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-02\": {\n      name: \"sidebar-02\",\n      title: \"Sidebar 02\",\n      description: \"A sidebar with collapsible sections.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-02/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-02/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-02/components/search-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-02/components/version-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-02/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-03\": {\n      name: \"sidebar-03\",\n      title: \"Sidebar 03\",\n      description: \"A sidebar with submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\", \"breadcrumb\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-03/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-03/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-03/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-04\": {\n      name: \"sidebar-04\",\n      title: \"Sidebar 04\",\n      description: \"A floating sidebar with submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\", \"breadcrumb\", \"separator\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-04/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-04/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-04/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-05\": {\n      name: \"sidebar-05\",\n      title: \"Sidebar 05\",\n      description: \"A sidebar with collapsible submenus.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-05/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-05/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-05/components/search-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-05/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-06\": {\n      name: \"sidebar-06\",\n      title: \"Sidebar 06\",\n      description: \"A sidebar with submenus as dropdowns.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-06/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-06/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-06/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-06/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-07\": {\n      name: \"sidebar-07\",\n      title: \"Sidebar 07\",\n      description: \"A sidebar that collapses to icons.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-07/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-07/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-07/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-07/components/nav-projects.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-07/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-07/components/team-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-07/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-08\": {\n      name: \"sidebar-08\",\n      title: \"Sidebar 08\",\n      description: \"An inset sidebar with secondary navigation.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-08/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-08/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-08/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-08/components/nav-projects.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-08/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-08/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-08/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-09\": {\n      name: \"sidebar-09\",\n      title: \"Sidebar 09\",\n      description: \"Collapsible nested sidebars.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-09/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-09/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-09/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-09/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-10\": {\n      name: \"sidebar-10\",\n      title: \"Sidebar 10\",\n      description: \"A sidebar in a popover.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-10/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-10/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-10/components/nav-actions.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-10/components/nav-favorites.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-10/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-10/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-10/components/team-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-10/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-11\": {\n      name: \"sidebar-11\",\n      title: \"Sidebar 11\",\n      description: \"A sidebar with a collapsible file tree.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-11/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-11/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-11/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-12\": {\n      name: \"sidebar-12\",\n      title: \"Sidebar 12\",\n      description: \"A sidebar with a calendar.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-12/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-12/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-12/components/calendars.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-12/components/date-picker.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-12/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-12/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-13\": {\n      name: \"sidebar-13\",\n      title: \"Sidebar 13\",\n      description: \"A sidebar in a dialog.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-13/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-13/components/settings-dialog.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-13/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-14\": {\n      name: \"sidebar-14\",\n      title: \"Sidebar 14\",\n      description: \"A sidebar on the right.\",\n      type: \"registry:block\",\n      registryDependencies: [\"sidebar\", \"breadcrumb\"],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-14/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-14/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-14/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-15\": {\n      name: \"sidebar-15\",\n      title: \"Sidebar 15\",\n      description: \"A left and right sidebar.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/calendars.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/date-picker.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/nav-favorites.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/sidebar-left.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/sidebar-right.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-15/components/team-switcher.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-15/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"sidebar-16\": {\n      name: \"sidebar-16\",\n      title: \"Sidebar 16\",\n      description: \"A sidebar with a sticky site header.\",\n      type: \"registry:block\",\n      registryDependencies: [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\",\n      ],\n      files: [\n        {\n          path: \"registry/bases/base/blocks/sidebar-16/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/dashboard/page.tsx\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-16/components/app-sidebar.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-16/components/nav-main.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-16/components/nav-projects.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-16/components/nav-secondary.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-16/components/nav-user.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-16/components/search-form.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n        {\n          path: \"registry/bases/base/blocks/sidebar-16/components/site-header.tsx\",\n          type: \"registry:component\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\n          \"@/registry/bases/base/blocks/sidebar-16/page.tsx\"\n        )\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: [\"sidebar\", \"dashboard\"],\n      meta: undefined,\n    },\n    \"use-mobile\": {\n      name: \"use-mobile\",\n      title: \"undefined\",\n      description: \"\",\n      type: \"registry:hook\",\n      registryDependencies: undefined,\n      files: [\n        {\n          path: \"registry/bases/base/hooks/use-mobile.ts\",\n          type: \"registry:hook\",\n          target: \"\",\n        },\n      ],\n      component: React.lazy(async () => {\n        const mod = await import(\"@/registry/bases/base/hooks/use-mobile.ts\")\n        const exportName =\n          Object.keys(mod).find(\n            (key) =>\n              typeof mod[key] === \"function\" || typeof mod[key] === \"object\"\n          ) || item.name\n        return { default: mod.default || mod[exportName] }\n      }),\n      categories: undefined,\n      meta: undefined,\n    },\n  },\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const blocks: Registry[\"items\"] = [\n  {\n    name: \"preview\",\n    title: \"Preview\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"alert-dialog\",\n      \"avatar\",\n      \"badge\",\n      \"button\",\n      \"button-group\",\n      \"card\",\n      \"chart\",\n      \"checkbox\",\n      \"combobox\",\n      \"dropdown-menu\",\n      \"empty\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"item\",\n      \"label\",\n      \"popover\",\n      \"radio-group\",\n      \"select\",\n      \"separator\",\n      \"sheet\",\n      \"slider\",\n      \"spinner\",\n      \"switch\",\n      \"textarea\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"blocks/preview/index.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n  },\n  {\n    name: \"login-01\",\n    title: \"Login 01\",\n    description: \"A simple login form.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-01/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-01/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-02\",\n    title: \"Login 02\",\n    description: \"A two column login page with a cover image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-02/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-02/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-03\",\n    title: \"Login 03\",\n    description: \"A login page with a muted background color.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-03/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-03/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-04\",\n    title: \"Login 04\",\n    description: \"A login page with form and image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-04/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-04/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-05\",\n    title: \"Login 05\",\n    description: \"A simple email-only login page.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-05/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-05/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"signup-01\",\n    title: \"Signup 01\",\n    description: \"A simple signup form.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/signup-01/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-01/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-02\",\n    title: \"Signup 02\",\n    description: \"A two column signup page with a cover image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-02/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-02/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-03\",\n    title: \"Signup 03\",\n    description: \"A signup page with a muted background color.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-03/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-03/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-04\",\n    title: \"Signup 04\",\n    description: \"A signup page with form and image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-04/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-04/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-05\",\n    title: \"Signup 05\",\n    description: \"A simple signup form with social providers.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/signup-05/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-05/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"dashboard-01\",\n    title: \"Dashboard 01\",\n    type: \"registry:block\",\n    description: \"A dashboard with sidebar, charts and data table.\",\n    dependencies: [\n      \"@dnd-kit/core\",\n      \"@dnd-kit/modifiers\",\n      \"@dnd-kit/sortable\",\n      \"@dnd-kit/utilities\",\n      \"@tanstack/react-table\",\n      \"zod\",\n    ],\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"chart\",\n      \"card\",\n      \"select\",\n      \"tabs\",\n      \"table\",\n      \"toggle-group\",\n      \"badge\",\n      \"button\",\n      \"checkbox\",\n      \"dropdown-menu\",\n      \"drawer\",\n      \"input\",\n      \"avatar\",\n      \"sheet\",\n      \"sonner\",\n    ],\n    files: [\n      {\n        path: \"blocks/dashboard-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/dashboard-01/data.json\",\n        type: \"registry:file\",\n        target: \"app/dashboard/data.json\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/chart-area-interactive.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/data-table.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-documents.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/section-cards.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/site-header.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"dashboard\"],\n    meta: {\n      iframeHeight: \"1000px\",\n    },\n  },\n  {\n    name: \"sidebar-01\",\n    title: \"Sidebar 01\",\n    type: \"registry:block\",\n    description: \"A simple sidebar with navigation grouped by section.\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/version-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-02\",\n    title: \"Sidebar 02\",\n    description: \"A sidebar with collapsible sections.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/version-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-03\",\n    title: \"Sidebar 03\",\n    description: \"A sidebar with submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\"],\n    files: [\n      {\n        path: \"blocks/sidebar-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-03/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-04\",\n    title: \"Sidebar 04\",\n    description: \"A floating sidebar with submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"separator\"],\n    files: [\n      {\n        path: \"blocks/sidebar-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-04/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-05\",\n    title: \"Sidebar 05\",\n    description: \"A sidebar with collapsible submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"collapsible\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-05/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-05/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-06\",\n    title: \"Sidebar 06\",\n    description: \"A sidebar with submenus as dropdowns.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"card\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-06/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-07\",\n    title: \"Sidebar 07\",\n    type: \"registry:block\",\n    description: \"A sidebar that collapses to icons.\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-07/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-08\",\n    title: \"Sidebar 08\",\n    description: \"An inset sidebar with secondary navigation.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-08/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-09\",\n    title: \"Sidebar 09\",\n    description: \"Collapsible nested sidebars.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n      \"switch\",\n      \"label\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-09/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-09/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-09/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-10\",\n    title: \"Sidebar 10\",\n    description: \"A sidebar in a popover.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"popover\",\n      \"collapsible\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-10/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-actions.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-favorites.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-workspaces.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-11\",\n    title: \"Sidebar 11\",\n    description: \"A sidebar with a collapsible file tree.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"separator\", \"collapsible\"],\n    files: [\n      {\n        path: \"blocks/sidebar-11/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-11/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-12\",\n    title: \"Sidebar 12\",\n    description: \"A sidebar with a calendar.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"calendar\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-12/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/calendars.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/date-picker.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-13\",\n    title: \"Sidebar 13\",\n    description: \"A sidebar in a dialog.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n    files: [\n      {\n        path: \"blocks/sidebar-13/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-13/components/settings-dialog.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-14\",\n    title: \"Sidebar 14\",\n    description: \"A sidebar on the right.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\"],\n    files: [\n      {\n        path: \"blocks/sidebar-14/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-14/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-15\",\n    title: \"Sidebar 15\",\n    description: \"A left and right sidebar.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"popover\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"calendar\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-15/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/calendars.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/date-picker.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-favorites.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-workspaces.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/sidebar-left.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/sidebar-right.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-16\",\n    title: \"Sidebar 16\",\n    description: \"A sidebar with a sticky site header.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n      \"button\",\n      \"label\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-16/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/site-header.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavDocuments } from \"@/registry/bases/base/blocks/dashboard-01/components/nav-documents\"\nimport { NavMain } from \"@/registry/bases/base/blocks/dashboard-01/components/nav-main\"\nimport { NavSecondary } from \"@/registry/bases/base/blocks/dashboard-01/components/nav-secondary\"\nimport { NavUser } from \"@/registry/bases/base/blocks/dashboard-01/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Dashboard\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LayoutDashboardIcon\"\n          tabler=\"IconDashboard\"\n          hugeicons=\"DashboardSquare01Icon\"\n          phosphor=\"SquaresFourIcon\"\n          remixicon=\"RiDashboardLine\"\n        />\n      ),\n    },\n    {\n      title: \"Lifecycle\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ListIcon\"\n          tabler=\"IconListDetails\"\n          hugeicons=\"Menu01Icon\"\n          phosphor=\"ListIcon\"\n          remixicon=\"RiListUnordered\"\n        />\n      ),\n    },\n    {\n      title: \"Analytics\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ChartBarIcon\"\n          tabler=\"IconChartBar\"\n          hugeicons=\"ChartHistogramIcon\"\n          phosphor=\"ChartBarIcon\"\n          remixicon=\"RiBarChartLine\"\n        />\n      ),\n    },\n    {\n      title: \"Projects\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FolderIcon\"\n          tabler=\"IconFolder\"\n          hugeicons=\"Folder01Icon\"\n          phosphor=\"FolderIcon\"\n          remixicon=\"RiFolderLine\"\n        />\n      ),\n    },\n    {\n      title: \"Team\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"UsersIcon\"\n          tabler=\"IconUsers\"\n          hugeicons=\"UserGroupIcon\"\n          phosphor=\"UsersIcon\"\n          remixicon=\"RiGroupLine\"\n        />\n      ),\n    },\n  ],\n  navClouds: [\n    {\n      title: \"Capture\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CameraIcon\"\n          tabler=\"IconCamera\"\n          hugeicons=\"Camera01Icon\"\n          phosphor=\"CameraIcon\"\n          remixicon=\"RiCameraLine\"\n        />\n      ),\n      isActive: true,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Proposal\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileTextIcon\"\n          tabler=\"IconFileDescription\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileTextIcon\"\n          remixicon=\"RiFileTextLine\"\n        />\n      ),\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Prompts\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileTextIcon\"\n          tabler=\"IconFileAi\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileTextIcon\"\n          remixicon=\"RiFileTextLine\"\n        />\n      ),\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n    {\n      title: \"Get Help\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CircleHelpIcon\"\n          tabler=\"IconHelp\"\n          hugeicons=\"HelpCircleIcon\"\n          phosphor=\"QuestionIcon\"\n          remixicon=\"RiQuestionLine\"\n        />\n      ),\n    },\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SearchIcon\"\n          tabler=\"IconSearch\"\n          hugeicons=\"SearchIcon\"\n          phosphor=\"MagnifyingGlassIcon\"\n          remixicon=\"RiSearchLine\"\n        />\n      ),\n    },\n  ],\n  documents: [\n    {\n      name: \"Data Library\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"DatabaseIcon\"\n          tabler=\"IconDatabase\"\n          hugeicons=\"Database01Icon\"\n          phosphor=\"DatabaseIcon\"\n          remixicon=\"RiDatabase2Line\"\n        />\n      ),\n    },\n    {\n      name: \"Reports\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileChartColumnIcon\"\n          tabler=\"IconReport\"\n          hugeicons=\"Analytics01Icon\"\n          phosphor=\"ChartLineIcon\"\n          remixicon=\"RiFileChartLine\"\n        />\n      ),\n    },\n    {\n      name: \"Word Assistant\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileIcon\"\n          tabler=\"IconFileWord\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileIcon\"\n          remixicon=\"RiFileLine\"\n        />\n      ),\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar collapsible=\"offcanvas\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton\n              className=\"data-[slot=sidebar-menu-button]:p-1.5!\"\n              render={<a href=\"#\" />}\n            >\n              <IconPlaceholder\n                lucide=\"CommandIcon\"\n                tabler=\"IconInnerShadowTop\"\n                hugeicons=\"CommandIcon\"\n                phosphor=\"CommandIcon\"\n                remixicon=\"RiCommandLine\"\n                className=\"size-5!\"\n              />\n              <span className=\"text-base font-semibold\">Acme Inc.</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavDocuments items={data.documents} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/chart-area-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport { useIsMobile } from \"@/registry/bases/base/hooks/use-mobile\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/bases/base/ui/toggle-group\"\n\nexport const description = \"An interactive area chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n  { date: \"2024-05-01\", desktop: 165, mobile: 220 },\n  { date: \"2024-05-02\", desktop: 293, mobile: 310 },\n  { date: \"2024-05-03\", desktop: 247, mobile: 190 },\n  { date: \"2024-05-04\", desktop: 385, mobile: 420 },\n  { date: \"2024-05-05\", desktop: 481, mobile: 390 },\n  { date: \"2024-05-06\", desktop: 498, mobile: 520 },\n  { date: \"2024-05-07\", desktop: 388, mobile: 300 },\n  { date: \"2024-05-08\", desktop: 149, mobile: 210 },\n  { date: \"2024-05-09\", desktop: 227, mobile: 180 },\n  { date: \"2024-05-10\", desktop: 293, mobile: 330 },\n  { date: \"2024-05-11\", desktop: 335, mobile: 270 },\n  { date: \"2024-05-12\", desktop: 197, mobile: 240 },\n  { date: \"2024-05-13\", desktop: 197, mobile: 160 },\n  { date: \"2024-05-14\", desktop: 448, mobile: 490 },\n  { date: \"2024-05-15\", desktop: 473, mobile: 380 },\n  { date: \"2024-05-16\", desktop: 338, mobile: 400 },\n  { date: \"2024-05-17\", desktop: 499, mobile: 420 },\n  { date: \"2024-05-18\", desktop: 315, mobile: 350 },\n  { date: \"2024-05-19\", desktop: 235, mobile: 180 },\n  { date: \"2024-05-20\", desktop: 177, mobile: 230 },\n  { date: \"2024-05-21\", desktop: 82, mobile: 140 },\n  { date: \"2024-05-22\", desktop: 81, mobile: 120 },\n  { date: \"2024-05-23\", desktop: 252, mobile: 290 },\n  { date: \"2024-05-24\", desktop: 294, mobile: 220 },\n  { date: \"2024-05-25\", desktop: 201, mobile: 250 },\n  { date: \"2024-05-26\", desktop: 213, mobile: 170 },\n  { date: \"2024-05-27\", desktop: 420, mobile: 460 },\n  { date: \"2024-05-28\", desktop: 233, mobile: 190 },\n  { date: \"2024-05-29\", desktop: 78, mobile: 130 },\n  { date: \"2024-05-30\", desktop: 340, mobile: 280 },\n  { date: \"2024-05-31\", desktop: 178, mobile: 230 },\n  { date: \"2024-06-01\", desktop: 178, mobile: 200 },\n  { date: \"2024-06-02\", desktop: 470, mobile: 410 },\n  { date: \"2024-06-03\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-04\", desktop: 439, mobile: 380 },\n  { date: \"2024-06-05\", desktop: 88, mobile: 140 },\n  { date: \"2024-06-06\", desktop: 294, mobile: 250 },\n  { date: \"2024-06-07\", desktop: 323, mobile: 370 },\n  { date: \"2024-06-08\", desktop: 385, mobile: 320 },\n  { date: \"2024-06-09\", desktop: 438, mobile: 480 },\n  { date: \"2024-06-10\", desktop: 155, mobile: 200 },\n  { date: \"2024-06-11\", desktop: 92, mobile: 150 },\n  { date: \"2024-06-12\", desktop: 492, mobile: 420 },\n  { date: \"2024-06-13\", desktop: 81, mobile: 130 },\n  { date: \"2024-06-14\", desktop: 426, mobile: 380 },\n  { date: \"2024-06-15\", desktop: 307, mobile: 350 },\n  { date: \"2024-06-16\", desktop: 371, mobile: 310 },\n  { date: \"2024-06-17\", desktop: 475, mobile: 520 },\n  { date: \"2024-06-18\", desktop: 107, mobile: 170 },\n  { date: \"2024-06-19\", desktop: 341, mobile: 290 },\n  { date: \"2024-06-20\", desktop: 408, mobile: 450 },\n  { date: \"2024-06-21\", desktop: 169, mobile: 210 },\n  { date: \"2024-06-22\", desktop: 317, mobile: 270 },\n  { date: \"2024-06-23\", desktop: 480, mobile: 530 },\n  { date: \"2024-06-24\", desktop: 132, mobile: 180 },\n  { date: \"2024-06-25\", desktop: 141, mobile: 190 },\n  { date: \"2024-06-26\", desktop: 434, mobile: 380 },\n  { date: \"2024-06-27\", desktop: 448, mobile: 490 },\n  { date: \"2024-06-28\", desktop: 149, mobile: 200 },\n  { date: \"2024-06-29\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-30\", desktop: 446, mobile: 400 },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaInteractive() {\n  const isMobile = useIsMobile()\n  const [timeRange, setTimeRange] = React.useState(\"90d\")\n\n  React.useEffect(() => {\n    if (isMobile) {\n      setTimeRange(\"7d\")\n    }\n  }, [isMobile])\n\n  const filteredData = chartData.filter((item) => {\n    const date = new Date(item.date)\n    const referenceDate = new Date(\"2024-06-30\")\n    let daysToSubtract = 90\n    if (timeRange === \"30d\") {\n      daysToSubtract = 30\n    } else if (timeRange === \"7d\") {\n      daysToSubtract = 7\n    }\n    const startDate = new Date(referenceDate)\n    startDate.setDate(startDate.getDate() - daysToSubtract)\n    return date >= startDate\n  })\n\n  return (\n    <Card className=\"@container/card\">\n      <CardHeader>\n        <CardTitle>Total Visitors</CardTitle>\n        <CardDescription>\n          <span className=\"hidden @[540px]/card:block\">\n            Total for the last 3 months\n          </span>\n          <span className=\"@[540px]/card:hidden\">Last 3 months</span>\n        </CardDescription>\n        <CardAction>\n          <ToggleGroup\n            multiple={false}\n            value={timeRange ? [timeRange] : []}\n            onValueChange={(value) => {\n              setTimeRange(value[0] ?? \"90d\")\n            }}\n            variant=\"outline\"\n            className=\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\"\n          >\n            <ToggleGroupItem value=\"90d\">Last 3 months</ToggleGroupItem>\n            <ToggleGroupItem value=\"30d\">Last 30 days</ToggleGroupItem>\n            <ToggleGroupItem value=\"7d\">Last 7 days</ToggleGroupItem>\n          </ToggleGroup>\n          <Select\n            value={timeRange}\n            onValueChange={(value) => {\n              if (value !== null) {\n                setTimeRange(value)\n              }\n            }}\n          >\n            <SelectTrigger\n              className=\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\"\n              size=\"sm\"\n              aria-label=\"Select a value\"\n            >\n              <SelectValue placeholder=\"Last 3 months\" />\n            </SelectTrigger>\n            <SelectContent className=\"rounded-xl\">\n              <SelectItem value=\"90d\" className=\"rounded-lg\">\n                Last 3 months\n              </SelectItem>\n              <SelectItem value=\"30d\" className=\"rounded-lg\">\n                Last 30 days\n              </SelectItem>\n              <SelectItem value=\"7d\" className=\"rounded-lg\">\n                Last 7 days\n              </SelectItem>\n            </SelectContent>\n          </Select>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"px-2 pt-4 sm:px-6 sm:pt-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <AreaChart data={filteredData}>\n            <defs>\n              <linearGradient id=\"fillDesktop\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={1.0}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n              <linearGradient id=\"fillMobile\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n            </defs>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={\n                <ChartTooltipContent\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                    })\n                  }}\n                  indicator=\"dot\"\n                />\n              }\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"url(#fillMobile)\"\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"url(#fillDesktop)\"\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/data-table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  closestCenter,\n  DndContext,\n  KeyboardSensor,\n  MouseSensor,\n  TouchSensor,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n  type UniqueIdentifier,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n  arrayMove,\n  SortableContext,\n  useSortable,\n  verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFacetedRowModel,\n  getFacetedUniqueValues,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type Row,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\nimport { toast } from \"sonner\"\nimport { z } from \"zod\"\n\nimport { useIsMobile } from \"@/registry/bases/base/hooks/use-mobile\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/bases/base/ui/drawer\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/bases/base/ui/table\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/bases/base/ui/tabs\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport const schema = z.object({\n  id: z.number(),\n  header: z.string(),\n  type: z.string(),\n  status: z.string(),\n  target: z.string(),\n  limit: z.string(),\n  reviewer: z.string(),\n})\n\n// Create a separate component for the drag handle\nfunction DragHandle({ id }: { id: number }) {\n  const { attributes, listeners } = useSortable({\n    id,\n  })\n  return (\n    <Button\n      {...attributes}\n      {...listeners}\n      variant=\"ghost\"\n      size=\"icon\"\n      className=\"size-7 text-muted-foreground hover:bg-transparent\"\n    >\n      <IconPlaceholder\n        lucide=\"GripVerticalIcon\"\n        tabler=\"IconGripVertical\"\n        hugeicons=\"DragDropVerticalIcon\"\n        phosphor=\"DotsSixVerticalIcon\"\n        remixicon=\"RiDraggable\"\n        className=\"size-3 text-muted-foreground\"\n      />\n      <span className=\"sr-only\">Drag to reorder</span>\n    </Button>\n  )\n}\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\n  {\n    id: \"drag\",\n    header: () => null,\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\n  },\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={table.getIsAllPageRowsSelected()}\n          indeterminate={\n            table.getIsSomePageRowsSelected() &&\n            !table.getIsAllPageRowsSelected()\n          }\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n          aria-label=\"Select all\"\n        />\n      </div>\n    ),\n    cell: ({ row }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={row.getIsSelected()}\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\n          aria-label=\"Select row\"\n        />\n      </div>\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"header\",\n    header: \"Header\",\n    cell: ({ row }) => {\n      return <TableCellViewer item={row.original} />\n    },\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"type\",\n    header: \"Section Type\",\n    cell: ({ row }) => (\n      <div className=\"w-32\">\n        <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n          {row.original.type}\n        </Badge>\n      </div>\n    ),\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n        {row.original.status === \"Done\" ? (\n          <IconPlaceholder\n            lucide=\"CircleCheckIcon\"\n            tabler=\"IconCircleCheckFilled\"\n            hugeicons=\"CheckmarkCircle01Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleFill\"\n            className=\"fill-green-500 dark:fill-green-400\"\n          />\n        ) : (\n          <IconPlaceholder\n            lucide=\"LoaderIcon\"\n            tabler=\"IconLoader\"\n            hugeicons=\"Loading03Icon\"\n            phosphor=\"SpinnerIcon\"\n            remixicon=\"RiLoader4Line\"\n          />\n        )}\n        {row.original.status}\n      </Badge>\n    ),\n  },\n  {\n    accessorKey: \"target\",\n    header: () => <div className=\"w-full text-right\">Target</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-target`} className=\"sr-only\">\n          Target\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.target}\n          id={`${row.original.id}-target`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"limit\",\n    header: () => <div className=\"w-full text-right\">Limit</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-limit`} className=\"sr-only\">\n          Limit\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.limit}\n          id={`${row.original.id}-limit`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"reviewer\",\n    header: \"Reviewer\",\n    cell: ({ row }) => {\n      const isAssigned = row.original.reviewer !== \"Assign reviewer\"\n      if (isAssigned) {\n        return row.original.reviewer\n      }\n      return (\n        <>\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\"sr-only\">\n            Reviewer\n          </Label>\n          <Select\n            items={[\n              { label: \"Eddie Lake\", value: \"Eddie Lake\" },\n              { label: \"Jamik Tashpulatov\", value: \"Jamik Tashpulatov\" },\n            ]}\n          >\n            <SelectTrigger\n              className=\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\"\n              size=\"sm\"\n              id={`${row.original.id}-reviewer`}\n            >\n              <SelectValue placeholder=\"Assign reviewer\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectGroup>\n                <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n                <SelectItem value=\"Jamik Tashpulatov\">\n                  Jamik Tashpulatov\n                </SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </>\n      )\n    },\n  },\n  {\n    id: \"actions\",\n    cell: () => (\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={\n            <Button\n              variant=\"ghost\"\n              className=\"flex size-8 text-muted-foreground data-open:bg-muted\"\n              size=\"icon\"\n            />\n          }\n        >\n          <IconPlaceholder\n            lucide=\"EllipsisVerticalIcon\"\n            tabler=\"IconDotsVertical\"\n            hugeicons=\"MoreVerticalCircle01Icon\"\n            phosphor=\"DotsThreeVerticalIcon\"\n            remixicon=\"RiMore2Line\"\n          />\n          <span className=\"sr-only\">Open menu</span>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-32\">\n          <DropdownMenuItem>Edit</DropdownMenuItem>\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem variant=\"destructive\">Delete</DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    ),\n  },\n]\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\n    id: row.original.id,\n  })\n  return (\n    <TableRow\n      data-state={row.getIsSelected() && \"selected\"}\n      data-dragging={isDragging}\n      ref={setNodeRef}\n      className=\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\"\n      style={{\n        transform: CSS.Transform.toString(transform),\n        transition: transition,\n      }}\n    >\n      {row.getVisibleCells().map((cell) => (\n        <TableCell key={cell.id}>\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\n        </TableCell>\n      ))}\n    </TableRow>\n  )\n}\nexport function DataTable({\n  data: initialData,\n}: {\n  data: z.infer<typeof schema>[]\n}) {\n  const [data, setData] = React.useState(() => initialData)\n  const [rowSelection, setRowSelection] = React.useState({})\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [pagination, setPagination] = React.useState({\n    pageIndex: 0,\n    pageSize: 10,\n  })\n  const sortableId = React.useId()\n  const sensors = useSensors(\n    useSensor(MouseSensor, {}),\n    useSensor(TouchSensor, {}),\n    useSensor(KeyboardSensor, {})\n  )\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\n    () => data?.map(({ id }) => id) || [],\n    [data]\n  )\n  const table = useReactTable({\n    data,\n    columns,\n    state: {\n      sorting,\n      columnVisibility,\n      rowSelection,\n      columnFilters,\n      pagination,\n    },\n    getRowId: (row) => row.id.toString(),\n    enableRowSelection: true,\n    onRowSelectionChange: setRowSelection,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    onColumnVisibilityChange: setColumnVisibility,\n    onPaginationChange: setPagination,\n    getCoreRowModel: getCoreRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFacetedRowModel: getFacetedRowModel(),\n    getFacetedUniqueValues: getFacetedUniqueValues(),\n  })\n  function handleDragEnd(event: DragEndEvent) {\n    const { active, over } = event\n    if (active && over && active.id !== over.id) {\n      setData((data) => {\n        const oldIndex = dataIds.indexOf(active.id)\n        const newIndex = dataIds.indexOf(over.id)\n        return arrayMove(data, oldIndex, newIndex)\n      })\n    }\n  }\n  return (\n    <Tabs\n      defaultValue=\"outline\"\n      className=\"w-full flex-col justify-start gap-6\"\n    >\n      <div className=\"flex items-center justify-between px-4 lg:px-6\">\n        <Label htmlFor=\"view-selector\" className=\"sr-only\">\n          View\n        </Label>\n        <Select\n          defaultValue=\"outline\"\n          items={[\n            { label: \"Outline\", value: \"outline\" },\n            { label: \"Past Performance\", value: \"past-performance\" },\n            { label: \"Key Personnel\", value: \"key-personnel\" },\n            { label: \"Focus Documents\", value: \"focus-documents\" },\n          ]}\n        >\n          <SelectTrigger\n            className=\"flex w-fit @4xl/main:hidden\"\n            size=\"sm\"\n            id=\"view-selector\"\n          >\n            <SelectValue placeholder=\"Select a view\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"outline\">Outline</SelectItem>\n              <SelectItem value=\"past-performance\">Past Performance</SelectItem>\n              <SelectItem value=\"key-personnel\">Key Personnel</SelectItem>\n              <SelectItem value=\"focus-documents\">Focus Documents</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <TabsList className=\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\">\n          <TabsTrigger value=\"outline\">Outline</TabsTrigger>\n          <TabsTrigger value=\"past-performance\">\n            Past Performance <Badge variant=\"secondary\">3</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"key-personnel\">\n            Key Personnel <Badge variant=\"secondary\">2</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"focus-documents\">Focus Documents</TabsTrigger>\n        </TabsList>\n        <div className=\"flex items-center gap-2\">\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={<Button variant=\"outline\" size=\"sm\" />}\n            >\n              <IconPlaceholder\n                lucide=\"Columns3Icon\"\n                tabler=\"IconLayoutColumns\"\n                hugeicons=\"LeftToRightListBulletIcon\"\n                phosphor=\"ColumnsIcon\"\n                remixicon=\"RiLayoutColumnLine\"\n                data-icon=\"inline-start\"\n              />\n              Columns\n              <IconPlaceholder\n                lucide=\"ChevronDownIcon\"\n                tabler=\"IconChevronDown\"\n                hugeicons=\"ArrowDown01Icon\"\n                phosphor=\"CaretDownIcon\"\n                remixicon=\"RiArrowDownSLine\"\n                data-icon=\"inline-end\"\n              />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"w-32\">\n              {table\n                .getAllColumns()\n                .filter(\n                  (column) =>\n                    typeof column.accessorFn !== \"undefined\" &&\n                    column.getCanHide()\n                )\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuContent>\n          </DropdownMenu>\n          <Button variant=\"outline\" size=\"sm\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"Add01Icon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n            <span className=\"hidden lg:inline\">Add Section</span>\n          </Button>\n        </div>\n      </div>\n      <TabsContent\n        value=\"outline\"\n        className=\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\"\n      >\n        <div className=\"overflow-hidden rounded-lg border\">\n          <DndContext\n            collisionDetection={closestCenter}\n            modifiers={[restrictToVerticalAxis]}\n            onDragEnd={handleDragEnd}\n            sensors={sensors}\n            id={sortableId}\n          >\n            <Table>\n              <TableHeader className=\"sticky top-0 z-10 bg-muted\">\n                {table.getHeaderGroups().map((headerGroup) => (\n                  <TableRow key={headerGroup.id}>\n                    {headerGroup.headers.map((header) => {\n                      return (\n                        <TableHead key={header.id} colSpan={header.colSpan}>\n                          {header.isPlaceholder\n                            ? null\n                            : flexRender(\n                                header.column.columnDef.header,\n                                header.getContext()\n                              )}\n                        </TableHead>\n                      )\n                    })}\n                  </TableRow>\n                ))}\n              </TableHeader>\n              <TableBody className=\"**:data-[slot=table-cell]:first:w-8\">\n                {table.getRowModel().rows?.length ? (\n                  <SortableContext\n                    items={dataIds}\n                    strategy={verticalListSortingStrategy}\n                  >\n                    {table.getRowModel().rows.map((row) => (\n                      <DraggableRow key={row.id} row={row} />\n                    ))}\n                  </SortableContext>\n                ) : (\n                  <TableRow>\n                    <TableCell\n                      colSpan={columns.length}\n                      className=\"h-24 text-center\"\n                    >\n                      No results.\n                    </TableCell>\n                  </TableRow>\n                )}\n              </TableBody>\n            </Table>\n          </DndContext>\n        </div>\n        <div className=\"flex items-center justify-between px-4\">\n          <div className=\"hidden flex-1 text-sm text-muted-foreground lg:flex\">\n            {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n            {table.getFilteredRowModel().rows.length} row(s) selected.\n          </div>\n          <div className=\"flex w-full items-center gap-8 lg:w-fit\">\n            <div className=\"hidden items-center gap-2 lg:flex\">\n              <Label htmlFor=\"rows-per-page\" className=\"text-sm font-medium\">\n                Rows per page\n              </Label>\n              <Select\n                value={`${table.getState().pagination.pageSize}`}\n                onValueChange={(value) => {\n                  table.setPageSize(Number(value))\n                }}\n                items={[10, 20, 30, 40, 50].map((pageSize) => ({\n                  label: `${pageSize}`,\n                  value: `${pageSize}`,\n                }))}\n              >\n                <SelectTrigger size=\"sm\" className=\"w-20\" id=\"rows-per-page\">\n                  <SelectValue\n                    placeholder={table.getState().pagination.pageSize}\n                  />\n                </SelectTrigger>\n                <SelectContent side=\"top\">\n                  <SelectGroup>\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\n                        {pageSize}\n                      </SelectItem>\n                    ))}\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"flex w-fit items-center justify-center text-sm font-medium\">\n              Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n              {table.getPageCount()}\n            </div>\n            <div className=\"ml-auto flex items-center gap-2 lg:ml-0\">\n              <Button\n                variant=\"outline\"\n                className=\"hidden h-8 w-8 p-0 lg:flex\"\n                onClick={() => table.setPageIndex(0)}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to first page</span>\n                <IconPlaceholder\n                  lucide=\"ChevronsLeftIcon\"\n                  tabler=\"IconChevronsLeft\"\n                  hugeicons=\"ArrowLeftDoubleIcon\"\n                  phosphor=\"CaretDoubleLeftIcon\"\n                  remixicon=\"RiSkipLeftLine\"\n                />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.previousPage()}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to previous page</span>\n                <IconPlaceholder\n                  lucide=\"ChevronLeftIcon\"\n                  tabler=\"IconChevronLeft\"\n                  hugeicons=\"ArrowLeft01Icon\"\n                  phosphor=\"CaretLeftIcon\"\n                  remixicon=\"RiArrowLeftSLine\"\n                />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.nextPage()}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to next page</span>\n                <IconPlaceholder\n                  lucide=\"ChevronRightIcon\"\n                  tabler=\"IconChevronRight\"\n                  hugeicons=\"ArrowRight01Icon\"\n                  phosphor=\"CaretRightIcon\"\n                  remixicon=\"RiArrowRightSLine\"\n                />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"hidden size-8 lg:flex\"\n                size=\"icon\"\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to last page</span>\n                <IconPlaceholder\n                  lucide=\"ChevronsRightIcon\"\n                  tabler=\"IconChevronsRight\"\n                  hugeicons=\"ArrowRightDoubleIcon\"\n                  phosphor=\"CaretDoubleRightIcon\"\n                  remixicon=\"RiSkipRightLine\"\n                />\n              </Button>\n            </div>\n          </div>\n        </div>\n      </TabsContent>\n      <TabsContent\n        value=\"past-performance\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent value=\"key-personnel\" className=\"flex flex-col px-4 lg:px-6\">\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent\n        value=\"focus-documents\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n    </Tabs>\n  )\n}\nconst chartData = [\n  {\n    month: \"January\",\n    desktop: 186,\n    mobile: 80,\n  },\n  {\n    month: \"February\",\n    desktop: 305,\n    mobile: 200,\n  },\n  {\n    month: \"March\",\n    desktop: 237,\n    mobile: 120,\n  },\n  {\n    month: \"April\",\n    desktop: 73,\n    mobile: 190,\n  },\n  {\n    month: \"May\",\n    desktop: 209,\n    mobile: 130,\n  },\n  {\n    month: \"June\",\n    desktop: 214,\n    mobile: 140,\n  },\n]\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\n  const isMobile = useIsMobile()\n  return (\n    <Drawer direction={isMobile ? \"bottom\" : \"right\"}>\n      <DrawerTrigger asChild>\n        <Button variant=\"link\" className=\"w-fit px-0 text-left text-foreground\">\n          {item.header}\n        </Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader className=\"gap-1\">\n          <DrawerTitle>{item.header}</DrawerTitle>\n          <DrawerDescription>\n            Showing total visitors for the last 6 months\n          </DrawerDescription>\n        </DrawerHeader>\n        <div className=\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\">\n          {!isMobile && (\n            <>\n              <ChartContainer config={chartConfig}>\n                <AreaChart\n                  accessibilityLayer\n                  data={chartData}\n                  margin={{\n                    left: 0,\n                    right: 10,\n                  }}\n                >\n                  <CartesianGrid vertical={false} />\n                  <XAxis\n                    dataKey=\"month\"\n                    tickLine={false}\n                    axisLine={false}\n                    tickMargin={8}\n                    tickFormatter={(value) => value.slice(0, 3)}\n                    hide\n                  />\n                  <ChartTooltip\n                    cursor={false}\n                    content={<ChartTooltipContent indicator=\"dot\" />}\n                  />\n                  <Area\n                    dataKey=\"mobile\"\n                    type=\"natural\"\n                    fill=\"var(--color-mobile)\"\n                    fillOpacity={0.6}\n                    stroke=\"var(--color-mobile)\"\n                    stackId=\"a\"\n                  />\n                  <Area\n                    dataKey=\"desktop\"\n                    type=\"natural\"\n                    fill=\"var(--color-desktop)\"\n                    fillOpacity={0.4}\n                    stroke=\"var(--color-desktop)\"\n                    stackId=\"a\"\n                  />\n                </AreaChart>\n              </ChartContainer>\n              <Separator />\n              <div className=\"grid gap-2\">\n                <div className=\"flex gap-2 leading-none font-medium\">\n                  Trending up by 5.2% this month{\" \"}\n                  <IconPlaceholder\n                    lucide=\"TrendingUpIcon\"\n                    tabler=\"IconTrendingUp\"\n                    hugeicons=\"ChartUpIcon\"\n                    phosphor=\"TrendUpIcon\"\n                    remixicon=\"RiArrowUpLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"text-muted-foreground\">\n                  Showing total visitors for the last 6 months. This is just\n                  some random text to test the layout. It spans multiple lines\n                  and should wrap around.\n                </div>\n              </div>\n              <Separator />\n            </>\n          )}\n          <form className=\"flex flex-col gap-4\">\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"header\">Header</Label>\n              <Input id=\"header\" defaultValue={item.header} />\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"type\">Type</Label>\n                <Select\n                  defaultValue={item.type}\n                  items={[\n                    { label: \"Table of Contents\", value: \"Table of Contents\" },\n                    { label: \"Executive Summary\", value: \"Executive Summary\" },\n                    {\n                      label: \"Technical Approach\",\n                      value: \"Technical Approach\",\n                    },\n                    { label: \"Design\", value: \"Design\" },\n                    { label: \"Capabilities\", value: \"Capabilities\" },\n                    { label: \"Focus Documents\", value: \"Focus Documents\" },\n                    { label: \"Narrative\", value: \"Narrative\" },\n                    { label: \"Cover Page\", value: \"Cover Page\" },\n                  ]}\n                >\n                  <SelectTrigger id=\"type\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a type\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectGroup>\n                      <SelectItem value=\"Table of Contents\">\n                        Table of Contents\n                      </SelectItem>\n                      <SelectItem value=\"Executive Summary\">\n                        Executive Summary\n                      </SelectItem>\n                      <SelectItem value=\"Technical Approach\">\n                        Technical Approach\n                      </SelectItem>\n                      <SelectItem value=\"Design\">Design</SelectItem>\n                      <SelectItem value=\"Capabilities\">Capabilities</SelectItem>\n                      <SelectItem value=\"Focus Documents\">\n                        Focus Documents\n                      </SelectItem>\n                      <SelectItem value=\"Narrative\">Narrative</SelectItem>\n                      <SelectItem value=\"Cover Page\">Cover Page</SelectItem>\n                    </SelectGroup>\n                  </SelectContent>\n                </Select>\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"status\">Status</Label>\n                <Select\n                  defaultValue={item.status}\n                  items={[\n                    { label: \"Done\", value: \"Done\" },\n                    { label: \"In Progress\", value: \"In Progress\" },\n                    { label: \"Not Started\", value: \"Not Started\" },\n                  ]}\n                >\n                  <SelectTrigger id=\"status\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a status\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectGroup>\n                      <SelectItem value=\"Done\">Done</SelectItem>\n                      <SelectItem value=\"In Progress\">In Progress</SelectItem>\n                      <SelectItem value=\"Not Started\">Not Started</SelectItem>\n                    </SelectGroup>\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"target\">Target</Label>\n                <Input id=\"target\" defaultValue={item.target} />\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"limit\">Limit</Label>\n                <Input id=\"limit\" defaultValue={item.limit} />\n              </div>\n            </div>\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"reviewer\">Reviewer</Label>\n              <Select\n                defaultValue={item.reviewer}\n                items={[\n                  { label: \"Eddie Lake\", value: \"Eddie Lake\" },\n                  { label: \"Jamik Tashpulatov\", value: \"Jamik Tashpulatov\" },\n                  { label: \"Emily Whalen\", value: \"Emily Whalen\" },\n                ]}\n              >\n                <SelectTrigger id=\"reviewer\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select a reviewer\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n                    <SelectItem value=\"Jamik Tashpulatov\">\n                      Jamik Tashpulatov\n                    </SelectItem>\n                    <SelectItem value=\"Emily Whalen\">Emily Whalen</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </div>\n          </form>\n        </div>\n        <DrawerFooter>\n          <Button>Submit</Button>\n          <DrawerClose asChild>\n            <Button variant=\"outline\" />\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/nav-documents.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavDocuments({\n  items,\n}: {\n  items: {\n    name: string\n    url: string\n    icon: React.ReactNode\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton render={<a href={item.url} />}>\n              {item.icon}\n              <span>{item.name}</span>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <SidebarMenuAction\n                    showOnHover\n                    className=\"aria-expanded:bg-muted\"\n                  />\n                }\n              >\n                <IconPlaceholder\n                  lucide=\"MoreHorizontalIcon\"\n                  tabler=\"IconDots\"\n                  hugeicons=\"MoreHorizontalCircle01Icon\"\n                  phosphor=\"DotsThreeOutlineIcon\"\n                  remixicon=\"RiMoreLine\"\n                />\n                <span className=\"sr-only\">More</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-24\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"Folder01Icon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                  />\n                  <span>Open</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare3\"\n                    hugeicons=\"Share01Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                  />\n                  <span>Share</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n              className=\"text-sidebar-foreground/70\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: React.ReactNode\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupContent className=\"flex flex-col gap-2\">\n        <SidebarMenu>\n          <SidebarMenuItem className=\"flex items-center gap-2\">\n            <SidebarMenuButton\n              tooltip=\"Quick Create\"\n              className=\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\"\n            >\n              <IconPlaceholder\n                lucide=\"CirclePlusIcon\"\n                tabler=\"IconCirclePlusFilled\"\n                hugeicons=\"PlusSignCircleIcon\"\n                phosphor=\"PlusCircleIcon\"\n                remixicon=\"RiAddCircleFill\"\n              />\n              <span>Quick Create</span>\n            </SidebarMenuButton>\n            <Button\n              size=\"icon\"\n              className=\"size-8 group-data-[collapsible=icon]:opacity-0\"\n              variant=\"outline\"\n            >\n              <IconPlaceholder\n                lucide=\"MailIcon\"\n                tabler=\"IconMail\"\n                hugeicons=\"Mail01Icon\"\n                phosphor=\"EnvelopeIcon\"\n                remixicon=\"RiMailLine\"\n              />\n              <span className=\"sr-only\">Inbox</span>\n            </Button>\n          </SidebarMenuItem>\n        </SidebarMenu>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton tooltip={item.title}>\n                {item.icon}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton render={<a href={item.url} />}>\n                {item.icon}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton size=\"lg\" className=\"aria-expanded:bg-muted\" />\n            }\n          >\n            <Avatar className=\"size-8 rounded-lg grayscale\">\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs text-foreground/70\">\n                {user.email}\n              </span>\n            </div>\n            <IconPlaceholder\n              lucide=\"EllipsisVerticalIcon\"\n              tabler=\"IconDotsVertical\"\n              hugeicons=\"MoreVerticalCircle01Icon\"\n              phosphor=\"DotsThreeVerticalIcon\"\n              remixicon=\"RiMore2Line\"\n              className=\"ml-auto size-4\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"min-w-56\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"p-0 font-normal\">\n                <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                  <Avatar className=\"size-8\">\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs text-muted-foreground\">\n                      {user.email}\n                    </span>\n                  </div>\n                </div>\n              </DropdownMenuLabel>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CircleUserRoundIcon\"\n                  tabler=\"IconUserCircle\"\n                  hugeicons=\"UserCircle02Icon\"\n                  phosphor=\"UserCircleIcon\"\n                  remixicon=\"RiUserLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconNotification\"\n                  hugeicons=\"Notification03Icon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotification3Line\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"Logout01Icon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/section-cards.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SectionCards() {\n  return (\n    <div className=\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\">\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Total Revenue</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            $1,250.00\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconPlaceholder\n                lucide=\"TrendingUpIcon\"\n                tabler=\"IconTrendingUp\"\n                hugeicons=\"ChartUpIcon\"\n                phosphor=\"TrendUpIcon\"\n                remixicon=\"RiArrowUpLine\"\n              />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Trending up this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiArrowUpLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>New Customers</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            1,234\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconPlaceholder\n                lucide=\"TrendingDownIcon\"\n                tabler=\"IconTrendingDown\"\n                hugeicons=\"ChartDownIcon\"\n                phosphor=\"TrendDownIcon\"\n                remixicon=\"RiArrowDownLine\"\n              />\n              -20%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Down 20% this period{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingDownIcon\"\n              tabler=\"IconTrendingDown\"\n              hugeicons=\"ChartDownIcon\"\n              phosphor=\"TrendDownIcon\"\n              remixicon=\"RiArrowDownLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Acquisition needs attention\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Active Accounts</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            45,678\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconPlaceholder\n                lucide=\"TrendingUpIcon\"\n                tabler=\"IconTrendingUp\"\n                hugeicons=\"ChartUpIcon\"\n                phosphor=\"TrendUpIcon\"\n                remixicon=\"RiArrowUpLine\"\n              />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Strong user retention{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiArrowUpLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"text-muted-foreground\">Engagement exceed targets</div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Growth Rate</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            4.5%\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconPlaceholder\n                lucide=\"TrendingUpIcon\"\n                tabler=\"IconTrendingUp\"\n                hugeicons=\"ChartUpIcon\"\n                phosphor=\"TrendUpIcon\"\n                remixicon=\"RiArrowUpLine\"\n              />\n              +4.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Steady performance increase{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiArrowUpLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"text-muted-foreground\">Meets growth projections</div>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/components/site-header.tsx",
    "content": "import { Separator } from \"@/registry/bases/base/ui/separator\"\nimport { SidebarTrigger } from \"@/registry/bases/base/ui/sidebar\"\n\nexport function SiteHeader() {\n  return (\n    <header className=\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\">\n      <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n        <SidebarTrigger className=\"-ml-1\" />\n        <Separator\n          orientation=\"vertical\"\n          className=\"mx-2 h-4 data-vertical:self-auto\"\n        />\n        <h1 className=\"text-base font-medium\">Documents</h1>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/data.json",
    "content": "[\n  {\n    \"id\": 1,\n    \"header\": \"Cover page\",\n    \"type\": \"Cover page\",\n    \"status\": \"In Process\",\n    \"target\": \"18\",\n    \"limit\": \"5\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 2,\n    \"header\": \"Table of contents\",\n    \"type\": \"Table of contents\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 3,\n    \"header\": \"Executive summary\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"10\",\n    \"limit\": \"13\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 4,\n    \"header\": \"Technical approach\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"27\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 5,\n    \"header\": \"Design\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"2\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 6,\n    \"header\": \"Capabilities\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"20\",\n    \"limit\": \"8\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 7,\n    \"header\": \"Integration with existing systems\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 8,\n    \"header\": \"Innovation and Advantages\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"25\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 9,\n    \"header\": \"Overview of EMR's Innovative Solutions\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"7\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 10,\n    \"header\": \"Advanced Algorithms and Machine Learning\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 11,\n    \"header\": \"Adaptive Communication Protocols\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"9\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 12,\n    \"header\": \"Advantages Over Current Technologies\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"0\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 13,\n    \"header\": \"Past Performance\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 14,\n    \"header\": \"Customer Feedback and Satisfaction Levels\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"34\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 15,\n    \"header\": \"Implementation Challenges and Solutions\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"3\",\n    \"limit\": \"35\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 16,\n    \"header\": \"Security Measures and Data Protection Policies\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"6\",\n    \"limit\": \"36\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 17,\n    \"header\": \"Scalability and Future Proofing\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"4\",\n    \"limit\": \"37\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 18,\n    \"header\": \"Cost-Benefit Analysis\",\n    \"type\": \"Plain language\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"38\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 19,\n    \"header\": \"User Training and Onboarding Experience\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"17\",\n    \"limit\": \"39\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 20,\n    \"header\": \"Future Development Roadmap\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"11\",\n    \"limit\": \"40\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 21,\n    \"header\": \"System Architecture Overview\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"24\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Maya Johnson\"\n  },\n  {\n    \"id\": 22,\n    \"header\": \"Risk Management Plan\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Carlos Rodriguez\"\n  },\n  {\n    \"id\": 23,\n    \"header\": \"Compliance Documentation\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"31\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Sarah Chen\"\n  },\n  {\n    \"id\": 24,\n    \"header\": \"API Documentation\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"8\",\n    \"limit\": \"12\",\n    \"reviewer\": \"Raj Patel\"\n  },\n  {\n    \"id\": 25,\n    \"header\": \"User Interface Mockups\",\n    \"type\": \"Visual\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Leila Ahmadi\"\n  },\n  {\n    \"id\": 26,\n    \"header\": \"Database Schema\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Thomas Wilson\"\n  },\n  {\n    \"id\": 27,\n    \"header\": \"Testing Methodology\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 28,\n    \"header\": \"Deployment Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 29,\n    \"header\": \"Budget Breakdown\",\n    \"type\": \"Financial\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 30,\n    \"header\": \"Market Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Sophia Martinez\"\n  },\n  {\n    \"id\": 31,\n    \"header\": \"Competitor Comparison\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 32,\n    \"header\": \"Maintenance Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Alex Thompson\"\n  },\n  {\n    \"id\": 33,\n    \"header\": \"User Personas\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Nina Patel\"\n  },\n  {\n    \"id\": 34,\n    \"header\": \"Accessibility Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 35,\n    \"header\": \"Performance Metrics\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"David Kim\"\n  },\n  {\n    \"id\": 36,\n    \"header\": \"Disaster Recovery Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 37,\n    \"header\": \"Third-party Integrations\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 38,\n    \"header\": \"User Feedback Summary\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 39,\n    \"header\": \"Localization Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"12\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Maria Garcia\"\n  },\n  {\n    \"id\": 40,\n    \"header\": \"Mobile Compatibility\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"James Wilson\"\n  },\n  {\n    \"id\": 41,\n    \"header\": \"Data Migration Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 42,\n    \"header\": \"Quality Assurance Protocols\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Priya Singh\"\n  },\n  {\n    \"id\": 43,\n    \"header\": \"Stakeholder Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"11\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 44,\n    \"header\": \"Environmental Impact Assessment\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 45,\n    \"header\": \"Intellectual Property Rights\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Sarah Johnson\"\n  },\n  {\n    \"id\": 46,\n    \"header\": \"Customer Support Framework\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 47,\n    \"header\": \"Version Control Strategy\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 48,\n    \"header\": \"Continuous Integration Pipeline\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Michael Chen\"\n  },\n  {\n    \"id\": 49,\n    \"header\": \"Regulatory Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 50,\n    \"header\": \"User Authentication System\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 51,\n    \"header\": \"Data Analytics Framework\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 52,\n    \"header\": \"Cloud Infrastructure\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 53,\n    \"header\": \"Network Security Measures\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Lisa Wong\"\n  },\n  {\n    \"id\": 54,\n    \"header\": \"Project Timeline\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 55,\n    \"header\": \"Resource Allocation\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 56,\n    \"header\": \"Team Structure and Roles\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 57,\n    \"header\": \"Communication Protocols\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 58,\n    \"header\": \"Success Metrics\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 59,\n    \"header\": \"Internationalization Support\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 60,\n    \"header\": \"Backup and Recovery Procedures\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 61,\n    \"header\": \"Monitoring and Alerting System\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Daniel Park\"\n  },\n  {\n    \"id\": 62,\n    \"header\": \"Code Review Guidelines\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 63,\n    \"header\": \"Documentation Standards\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 64,\n    \"header\": \"Release Management Process\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 65,\n    \"header\": \"Feature Prioritization Matrix\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Emma Davis\"\n  },\n  {\n    \"id\": 66,\n    \"header\": \"Technical Debt Assessment\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 67,\n    \"header\": \"Capacity Planning\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 68,\n    \"header\": \"Service Level Agreements\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Assign reviewer\"\n  }\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/dashboard-01/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/dashboard-01/components/app-sidebar\"\nimport { ChartAreaInteractive } from \"@/registry/bases/base/blocks/dashboard-01/components/chart-area-interactive\"\nimport { DataTable } from \"@/registry/bases/base/blocks/dashboard-01/components/data-table\"\nimport { SectionCards } from \"@/registry/bases/base/blocks/dashboard-01/components/section-cards\"\nimport { SiteHeader } from \"@/registry/bases/base/blocks/dashboard-01/components/site-header\"\nimport { SidebarInset, SidebarProvider } from \"@/registry/bases/base/ui/sidebar\"\n\nimport data from \"./data.json\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"calc(var(--spacing) * 72)\",\n          \"--header-height\": \"calc(var(--spacing) * 12)\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar variant=\"inset\" />\n      <SidebarInset>\n        <SiteHeader />\n        <div className=\"flex flex-1 flex-col\">\n          <div className=\"@container/main flex flex-1 flex-col gap-2\">\n            <div className=\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\">\n              <SectionCards />\n              <div className=\"px-4 lg:px-6\">\n                <ChartAreaInteractive />\n              </div>\n              <DataTable data={data} />\n            </div>\n          </div>\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-01/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader>\n          <CardTitle>Login to your account</CardTitle>\n          <CardDescription>\n            Enter your email below to login to your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto inline-block text-sm underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n                <Button variant=\"outline\" type=\"button\">\n                  Login with Google\n                </Button>\n                <FieldDescription className=\"text-center\">\n                  Don&apos;t have an account? <a href=\"#\">Sign up</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-01/page.tsx",
    "content": "import { LoginForm } from \"@/registry/bases/base/blocks/login-01/components/login-form\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-02/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <FieldGroup>\n        <div className=\"flex flex-col items-center gap-1 text-center\">\n          <h1 className=\"text-2xl font-bold\">Login to your account</h1>\n          <p className=\"text-sm text-balance text-muted-foreground\">\n            Enter your email below to login to your account\n          </p>\n        </div>\n        <Field>\n          <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n          <Input id=\"email\" type=\"email\" placeholder=\"m@example.com\" required />\n        </Field>\n        <Field>\n          <div className=\"flex items-center\">\n            <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n            <a\n              href=\"#\"\n              className=\"ml-auto text-sm underline-offset-4 hover:underline\"\n            >\n              Forgot your password?\n            </a>\n          </div>\n          <Input id=\"password\" type=\"password\" required />\n        </Field>\n        <Field>\n          <Button type=\"submit\">Login</Button>\n        </Field>\n        <FieldSeparator>Or continue with</FieldSeparator>\n        <Field>\n          <Button variant=\"outline\" type=\"button\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            Login with GitHub\n          </Button>\n          <FieldDescription className=\"text-center\">\n            Don&apos;t have an account?{\" \"}\n            <a href=\"#\" className=\"underline underline-offset-4\">\n              Sign up\n            </a>\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-02/page.tsx",
    "content": "\"use client\"\n\nimport { LoginForm } from \"@/registry/bases/base/blocks/login-02/components/login-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"grid min-h-svh lg:grid-cols-2\">\n      <div className=\"flex flex-col gap-4 p-6 md:p-10\">\n        <div className=\"flex justify-center gap-2 md:justify-start\">\n          <a href=\"#\" className=\"flex items-center gap-2 font-medium\">\n            <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n              <IconPlaceholder\n                lucide=\"GalleryVerticalEndIcon\"\n                tabler=\"IconLayoutRows\"\n                hugeicons=\"LayoutBottomIcon\"\n                phosphor=\"RowsIcon\"\n                remixicon=\"RiGalleryLine\"\n                className=\"size-4\"\n              />\n            </div>\n            Acme Inc.\n          </a>\n        </div>\n        <div className=\"flex flex-1 items-center justify-center\">\n          <div className=\"w-full max-w-xs\">\n            <LoginForm />\n          </div>\n        </div>\n      </div>\n      <div className=\"relative hidden bg-muted lg:block\">\n        <img\n          src=\"/placeholder.svg\"\n          alt=\"Image\"\n          className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-03/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader className=\"text-center\">\n          <CardTitle className=\"text-xl\">Welcome back</CardTitle>\n          <CardDescription>\n            Login with your Apple or Google account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  Login with Apple\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  Login with Google\n                </Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto text-sm underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n                <FieldDescription className=\"text-center\">\n                  Don&apos;t have an account? <a href=\"#\">Sign up</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-03/page.tsx",
    "content": "\"use client\"\n\nimport { LoginForm } from \"@/registry/bases/base/blocks/login-03/components/login-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\">\n      <div className=\"flex w-full max-w-sm flex-col gap-6\">\n        <a href=\"#\" className=\"flex items-center gap-2 self-center font-medium\">\n          <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n            <IconPlaceholder\n              lucide=\"GalleryVerticalEndIcon\"\n              tabler=\"IconLayoutRows\"\n              hugeicons=\"LayoutBottomIcon\"\n              phosphor=\"RowsIcon\"\n              remixicon=\"RiGalleryLine\"\n              className=\"size-4\"\n            />\n          </div>\n          Acme Inc.\n        </a>\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-04/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card className=\"overflow-hidden p-0\">\n        <CardContent className=\"grid p-0 md:grid-cols-2\">\n          <form className=\"p-6 md:p-8\">\n            <FieldGroup>\n              <div className=\"flex flex-col items-center gap-2 text-center\">\n                <h1 className=\"text-2xl font-bold\">Welcome back</h1>\n                <p className=\"text-balance text-muted-foreground\">\n                  Login to your Acme Inc account\n                </p>\n              </div>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto text-sm underline-offset-2 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field className=\"grid grid-cols-3 gap-4\">\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Apple</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Google</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Meta</span>\n                </Button>\n              </Field>\n              <FieldDescription className=\"text-center\">\n                Don&apos;t have an account? <a href=\"#\">Sign up</a>\n              </FieldDescription>\n            </FieldGroup>\n          </form>\n          <div className=\"relative hidden bg-muted md:block\">\n            <img\n              src=\"/placeholder.svg\"\n              alt=\"Image\"\n              className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n            />\n          </div>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-04/page.tsx",
    "content": "import { LoginForm } from \"@/registry/bases/base/blocks/login-04/components/login-form\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\">\n      <div className=\"w-full max-w-sm md:max-w-4xl\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-05/components/login-form.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <form>\n        <FieldGroup>\n          <div className=\"flex flex-col items-center gap-2 text-center\">\n            <a\n              href=\"#\"\n              className=\"flex flex-col items-center gap-2 font-medium\"\n            >\n              <div className=\"flex size-8 items-center justify-center rounded-md\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-6\"\n                />\n              </div>\n              <span className=\"sr-only\">Acme Inc.</span>\n            </a>\n            <h1 className=\"text-xl font-bold\">Welcome to Acme Inc.</h1>\n            <FieldDescription>\n              Don&apos;t have an account? <a href=\"#\">Sign up</a>\n            </FieldDescription>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              placeholder=\"m@example.com\"\n              required\n            />\n          </Field>\n          <Field>\n            <Button type=\"submit\">Login</Button>\n          </Field>\n          <FieldSeparator>Or</FieldSeparator>\n          <Field className=\"grid gap-4 sm:grid-cols-2\">\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Apple\n            </Button>\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Google\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/login-05/page.tsx",
    "content": "import { LoginForm } from \"@/registry/bases/base/blocks/login-05/components/login-form\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/activate-agent-dialog.tsx",
    "content": "\"use client\"\n\nimport { Alert, AlertDescription } from \"@/registry/bases/base/ui/alert\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Item,\n  ItemContent,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// Agent feature descriptions.\nconst agentFeatures = [\n  {\n    id: \"code-reviews\",\n    content: (\n      <>\n        <strong>Code reviews</strong> with full codebase context to catch{\" \"}\n        <strong>hard-to-find</strong> bugs.\n      </>\n    ),\n  },\n  {\n    id: \"code-suggestions\",\n    content: (\n      <>\n        <strong>Code suggestions</strong> validated in sandboxes before you\n        merge.\n      </>\n    ),\n  },\n  {\n    id: \"root-cause\",\n    content: (\n      <>\n        <strong>Root-cause analysis</strong> for production issues with\n        deployment context.{\" \"}\n        <Badge variant=\"secondary\" className=\"bg-chart-1 text-chart-5\">\n          Requires Observability Plus\n        </Badge>\n      </>\n    ),\n  },\n]\n\nexport function ActivateAgentDialog() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Ship faster & safer with Vercel Agent</CardTitle>\n        <CardDescription>\n          Your use is subject to Vercel&apos;s{\" \"}\n          <a href=\"#\">Public Beta Agreement</a> and{\" \"}\n          <a href=\"#\">AI Product Terms</a>.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <ItemGroup className=\"gap-0\">\n          {agentFeatures.map((feature) => (\n            <Item key={feature.id} size=\"xs\" className=\"px-0\">\n              <ItemMedia variant=\"icon\" className=\"self-start\">\n                <IconPlaceholder\n                  lucide=\"CheckCircle2Icon\"\n                  tabler=\"IconCircleCheckFilled\"\n                  hugeicons=\"CheckmarkCircle02Icon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                  className=\"size-5 fill-primary text-primary-foreground\"\n                />\n              </ItemMedia>\n              <ItemContent>\n                <ItemTitle className=\"inline leading-relaxed font-normal text-muted-foreground *:[strong]:font-medium *:[strong]:text-foreground\">\n                  {feature.content}\n                </ItemTitle>\n              </ItemContent>\n            </Item>\n          ))}\n        </ItemGroup>\n        <Alert>\n          <AlertDescription>\n            Pro teams get $100 in Vercel Agent trial credit for 2 weeks after\n            activation.\n          </AlertDescription>\n        </Alert>\n      </CardContent>\n      <CardFooter className=\"justify-end gap-2\">\n        <Button variant=\"outline\">Cancel</Button>\n        <Button>Enable with $100 credits</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/analytics-card.tsx",
    "content": "\"use client\"\n\nimport { Area, AreaChart } from \"recharts\"\n\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\n\n// Monthly visitor data for the area chart.\nconst chartData = [\n  { month: \"January\", visitors: 186 },\n  { month: \"February\", visitors: 305 },\n  { month: \"March\", visitors: 237 },\n  { month: \"April\", visitors: 73 },\n  { month: \"May\", visitors: 209 },\n  { month: \"June\", visitors: 214 },\n]\n\n// Chart configuration for the visitors dataset.\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function AnalyticsCard() {\n  return (\n    <Card className=\"mx-auto w-full max-w-sm data-[size=sm]:pb-0\" size=\"sm\">\n      <CardHeader>\n        <CardTitle>Analytics</CardTitle>\n        <CardDescription>\n          418.2K Visitors <Badge>+10%</Badge>\n        </CardDescription>\n        <CardAction>\n          <Button variant=\"outline\" size=\"sm\">\n            View Analytics\n          </Button>\n        </CardAction>\n      </CardHeader>\n      <ChartContainer config={chartConfig} className=\"aspect-[1/0.35]\">\n        <AreaChart\n          accessibilityLayer\n          data={chartData}\n          margin={{\n            left: 0,\n            right: 0,\n          }}\n        >\n          <ChartTooltip\n            cursor={false}\n            content={<ChartTooltipContent indicator=\"line\" hideLabel />}\n          />\n          <Area\n            dataKey=\"visitors\"\n            type=\"linear\"\n            fill=\"var(--color-visitors)\"\n            fillOpacity={0.4}\n            stroke=\"var(--color-visitors)\"\n          />\n        </AreaChart>\n      </ChartContainer>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/anomaly-alert.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\n\nexport function AnomalyAlert() {\n  return (\n    <Card>\n      <CardContent>\n        <Empty className=\"h-48\">\n          <EmptyHeader>\n            <EmptyTitle>Get alerted for anomalies</EmptyTitle>\n            <EmptyDescription>\n              Automatically monitor your projects for anomalies and get\n              notified.\n            </EmptyDescription>\n          </EmptyHeader>\n          <EmptyContent>\n            <Button>Upgrade to Observability Plus</Button>\n          </EmptyContent>\n        </Empty>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/assign-issue.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/registry/bases/base/ui/combobox\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// Users available for assignment.\nconst users = [\n  \"shadcn\",\n  \"maxleiter\",\n  \"evilrabbit\",\n  \"pranathip\",\n  \"jorgezreik\",\n  \"shuding\",\n  \"rauchg\",\n]\n\nexport function AssignIssue() {\n  const anchor = useComboboxAnchor()\n  return (\n    <Card className=\"w-full max-w-sm\" size=\"sm\">\n      <CardHeader className=\"border-b\">\n        <CardTitle className=\"text-sm\">Assign Issue</CardTitle>\n        <CardDescription className=\"text-sm\">\n          Select users to assign to this issue.\n        </CardDescription>\n        <CardAction>\n          <Tooltip>\n            <TooltipTrigger\n              render={<Button variant=\"outline\" size=\"icon-xs\" />}\n            >\n              <IconPlaceholder\n                lucide=\"PlusIcon\"\n                tabler=\"IconPlus\"\n                hugeicons=\"PlusSignIcon\"\n                phosphor=\"PlusIcon\"\n                remixicon=\"RiAddLine\"\n              />\n            </TooltipTrigger>\n            <TooltipContent>Add user</TooltipContent>\n          </Tooltip>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <Combobox\n          multiple\n          autoHighlight\n          items={users}\n          defaultValue={[users[0]]}\n        >\n          <ComboboxChips ref={anchor}>\n            <ComboboxValue>\n              {(values) => (\n                <React.Fragment>\n                  {values.map((username: string) => (\n                    <ComboboxChip key={username}>\n                      <Avatar className=\"size-4\">\n                        <AvatarImage\n                          src={`https://github.com/${username}.png`}\n                          alt={username}\n                        />\n                        <AvatarFallback>{username.charAt(0)}</AvatarFallback>\n                      </Avatar>\n                      {username}\n                    </ComboboxChip>\n                  ))}\n                  <ComboboxChipsInput\n                    placeholder={\n                      values.length > 0 ? undefined : \"Select a item...\"\n                    }\n                  />\n                </React.Fragment>\n              )}\n            </ComboboxValue>\n          </ComboboxChips>\n          <ComboboxContent anchor={anchor}>\n            <ComboboxEmpty>No users found.</ComboboxEmpty>\n            <ComboboxList>\n              {(username) => (\n                <ComboboxItem key={username} value={username}>\n                  <Avatar className=\"size-5\">\n                    <AvatarImage\n                      src={`https://github.com/${username}.png`}\n                      alt={username}\n                    />\n                    <AvatarFallback>{username.charAt(0)}</AvatarFallback>\n                  </Avatar>\n                  {username}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/bar-chart-card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\n\nconst barChartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst barChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nconst desktopTotal = barChartData.reduce((sum, item) => sum + item.desktop, 0)\nconst mobileTotal = barChartData.reduce((sum, item) => sum + item.mobile, 0)\nconst desktopDelta = Math.round(\n  ((desktopTotal - mobileTotal) / mobileTotal) * 100\n)\nconst desktopDeltaPrefix = desktopDelta > 0 ? \"+\" : \"\"\n\nexport function BarChartCard() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle className=\"text-lg\">Traffic channels</CardTitle>\n        <CardDescription className=\"line-clamp-2 text-sm leading-snug\">\n          Monthly desktop and mobile traffic for the last six months—compare\n          volume and mix across platforms and devices at a glance.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4 pt-0\">\n        <ChartContainer\n          config={barChartConfig}\n          className=\"max-h-[180px] w-full\"\n        >\n          <BarChart\n            accessibilityLayer\n            data={barChartData}\n            margin={{ left: 0, right: 0, top: 8, bottom: 0 }}\n          >\n            <CartesianGrid vertical={false} strokeDasharray=\"3 3\" />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              tickMargin={8}\n              axisLine={false}\n              tickFormatter={(value) => String(value).slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"dashed\" />}\n            />\n            <ChartLegend content={<ChartLegendContent />} />\n            <Bar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              radius={[6, 6, 0, 0]}\n            />\n            <Bar\n              dataKey=\"mobile\"\n              fill=\"var(--color-mobile)\"\n              radius={[6, 6, 0, 0]}\n            />\n          </BarChart>\n        </ChartContainer>\n        <div className=\"grid w-full grid-cols-3 divide-x divide-border/60\">\n          <div className=\"px-2 text-center\">\n            <div className=\"text-[0.65rem] text-muted-foreground uppercase\">\n              Desktop\n            </div>\n            <div className=\"text-sm font-medium tabular-nums\">\n              {desktopTotal.toLocaleString()}\n            </div>\n          </div>\n          <div className=\"px-2 text-center\">\n            <div className=\"text-[0.65rem] text-muted-foreground uppercase\">\n              Mobile\n            </div>\n            <div className=\"text-sm font-medium tabular-nums\">\n              {mobileTotal.toLocaleString()}\n            </div>\n          </div>\n          <div className=\"px-2 text-center\">\n            <div className=\"text-[0.65rem] text-muted-foreground uppercase\">\n              Mix Delta\n            </div>\n            <div className=\"text-sm font-medium tabular-nums\">\n              {desktopDeltaPrefix}\n              {desktopDelta}%\n            </div>\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">View report</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/bar-visualizer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\n\ntype AgentState =\n  | \"connecting\"\n  | \"initializing\"\n  | \"listening\"\n  | \"speaking\"\n  | \"thinking\"\n\ntype AnimationState = AgentState | undefined\n\ninterface AudioAnalyserOptions {\n  fftSize?: number\n  smoothingTimeConstant?: number\n  minDecibels?: number\n  maxDecibels?: number\n}\n\ninterface MultiBandVolumeOptions {\n  bands?: number\n  loPass?: number\n  hiPass?: number\n  updateInterval?: number\n  analyserOptions?: AudioAnalyserOptions\n}\n\nconst multibandDefaults: MultiBandVolumeOptions = {\n  bands: 5,\n  loPass: 100,\n  hiPass: 600,\n  updateInterval: 32,\n  analyserOptions: { fftSize: 2048 },\n}\n\nconst normalizeDb = (value: number) => {\n  if (value === -Infinity) {\n    return 0\n  }\n  const minDb = -100\n  const maxDb = -10\n  const db = 1 - (Math.max(minDb, Math.min(maxDb, value)) * -1) / 100\n  return Math.sqrt(db)\n}\n\nfunction createAudioAnalyser(\n  mediaStream: MediaStream,\n  options: AudioAnalyserOptions = {}\n) {\n  const audioContext = new (window.AudioContext ||\n    (window as unknown as { webkitAudioContext: typeof AudioContext })\n      .webkitAudioContext)()\n  const source = audioContext.createMediaStreamSource(mediaStream)\n  const analyser = audioContext.createAnalyser()\n\n  if (options.fftSize) {\n    analyser.fftSize = options.fftSize\n  }\n  if (options.smoothingTimeConstant !== undefined) {\n    analyser.smoothingTimeConstant = options.smoothingTimeConstant\n  }\n  if (options.minDecibels !== undefined) {\n    analyser.minDecibels = options.minDecibels\n  }\n  if (options.maxDecibels !== undefined) {\n    analyser.maxDecibels = options.maxDecibels\n  }\n\n  source.connect(analyser)\n\n  const cleanup = () => {\n    source.disconnect()\n    audioContext.close()\n  }\n\n  return { analyser, audioContext, cleanup }\n}\n\nfunction useMultibandVolume(\n  mediaStream?: MediaStream | null,\n  options: MultiBandVolumeOptions = {}\n) {\n  const bands = options.bands ?? multibandDefaults.bands ?? 5\n  const loPass = options.loPass ?? multibandDefaults.loPass ?? 100\n  const hiPass = options.hiPass ?? multibandDefaults.hiPass ?? 600\n  const updateInterval =\n    options.updateInterval ?? multibandDefaults.updateInterval ?? 32\n  const fftSize =\n    options.analyserOptions?.fftSize ??\n    multibandDefaults.analyserOptions?.fftSize\n  const smoothingTimeConstant =\n    options.analyserOptions?.smoothingTimeConstant ??\n    multibandDefaults.analyserOptions?.smoothingTimeConstant\n  const minDecibels =\n    options.analyserOptions?.minDecibels ??\n    multibandDefaults.analyserOptions?.minDecibels\n  const maxDecibels =\n    options.analyserOptions?.maxDecibels ??\n    multibandDefaults.analyserOptions?.maxDecibels\n\n  const [frequencyBands, setFrequencyBands] = React.useState<number[]>(() =>\n    new Array(bands).fill(0)\n  )\n  const bandsRef = React.useRef<number[]>(new Array(bands).fill(0))\n  const frameId = React.useRef<number | undefined>(undefined)\n\n  React.useEffect(() => {\n    if (!mediaStream) {\n      const emptyBands = new Array(bands).fill(0)\n      bandsRef.current = emptyBands\n      setFrequencyBands(emptyBands)\n      return\n    }\n\n    const { analyser, cleanup } = createAudioAnalyser(mediaStream, {\n      fftSize,\n      smoothingTimeConstant,\n      minDecibels,\n      maxDecibels,\n    })\n\n    const bufferLength = analyser.frequencyBinCount\n    const dataArray = new Float32Array(bufferLength)\n    const sliceStart = loPass\n    const sliceEnd = hiPass\n    const sliceLength = sliceEnd - sliceStart\n    const chunkSize = Math.ceil(sliceLength / bands)\n\n    let lastUpdate = 0\n\n    const updateVolume = (timestamp: number) => {\n      if (timestamp - lastUpdate >= updateInterval) {\n        analyser.getFloatFrequencyData(dataArray)\n\n        const chunks = new Array(bands)\n\n        for (let i = 0; i < bands; i++) {\n          let sum = 0\n          let count = 0\n          const startIdx = sliceStart + i * chunkSize\n          const endIdx = Math.min(sliceStart + (i + 1) * chunkSize, sliceEnd)\n\n          for (let j = startIdx; j < endIdx; j++) {\n            sum += normalizeDb(dataArray[j])\n            count++\n          }\n\n          chunks[i] = count > 0 ? sum / count : 0\n        }\n\n        let hasChanged = false\n        for (let i = 0; i < chunks.length; i++) {\n          if (Math.abs(chunks[i] - bandsRef.current[i]) > 0.01) {\n            hasChanged = true\n            break\n          }\n        }\n\n        if (hasChanged) {\n          bandsRef.current = chunks\n          setFrequencyBands(chunks)\n        }\n\n        lastUpdate = timestamp\n      }\n\n      frameId.current = requestAnimationFrame(updateVolume)\n    }\n\n    frameId.current = requestAnimationFrame(updateVolume)\n\n    return () => {\n      cleanup()\n      if (frameId.current) {\n        cancelAnimationFrame(frameId.current)\n      }\n    }\n  }, [\n    bands,\n    fftSize,\n    hiPass,\n    loPass,\n    maxDecibels,\n    mediaStream,\n    minDecibels,\n    smoothingTimeConstant,\n    updateInterval,\n  ])\n\n  return frequencyBands\n}\n\nconst generateConnectingSequenceBar = (columns: number): number[][] => {\n  const seq = []\n  for (let x = 0; x < columns; x++) {\n    seq.push([x, columns - 1 - x])\n  }\n  return seq\n}\n\nconst generateListeningSequenceBar = (columns: number): number[][] => {\n  const center = Math.floor(columns / 2)\n  const noIndex = -1\n  return [[center], [noIndex]]\n}\n\nconst useBarAnimator = (\n  state: AnimationState,\n  columns: number,\n  interval: number\n): number[] => {\n  const indexRef = React.useRef(0)\n  const [currentFrame, setCurrentFrame] = React.useState<number[]>([])\n  const animationFrameId = React.useRef<number | null>(null)\n\n  const sequence = React.useMemo(() => {\n    if (state === \"thinking\" || state === \"listening\") {\n      return generateListeningSequenceBar(columns)\n    } else if (state === \"connecting\" || state === \"initializing\") {\n      return generateConnectingSequenceBar(columns)\n    } else if (state === undefined || state === \"speaking\") {\n      return [new Array(columns).fill(0).map((_, idx) => idx)]\n    } else {\n      return [[]]\n    }\n  }, [state, columns])\n\n  React.useEffect(() => {\n    indexRef.current = 0\n    setCurrentFrame(sequence[0] || [])\n  }, [sequence])\n\n  React.useEffect(() => {\n    let startTime = performance.now()\n\n    const animate = (time: DOMHighResTimeStamp) => {\n      const timeElapsed = time - startTime\n\n      if (timeElapsed >= interval) {\n        indexRef.current = (indexRef.current + 1) % sequence.length\n        setCurrentFrame(sequence[indexRef.current] || [])\n        startTime = time\n      }\n\n      animationFrameId.current = requestAnimationFrame(animate)\n    }\n\n    animationFrameId.current = requestAnimationFrame(animate)\n\n    return () => {\n      if (animationFrameId.current !== null) {\n        cancelAnimationFrame(animationFrameId.current)\n      }\n    }\n  }, [interval, sequence])\n\n  return currentFrame\n}\n\n// Memoized Bar component to prevent unnecessary re-renders.\nconst Bar = React.memo<{\n  heightPct: number\n  isHighlighted: boolean\n  state?: AgentState\n}>(({ heightPct, isHighlighted, state }) => (\n  <div\n    data-highlighted={isHighlighted}\n    className={cn(\n      \"max-w-[12px] min-w-[8px] flex-1 transition-all duration-150\",\n      \"rounded-full\",\n      \"bg-border data-[highlighted=true]:bg-chart-3\",\n      state === \"speaking\" && \"bg-chart-3\",\n      state === \"thinking\" && isHighlighted && \"animate-pulse\"\n    )}\n    style={{\n      height: `${heightPct}%`,\n      animationDuration: state === \"thinking\" ? \"300ms\" : undefined,\n    }}\n  />\n))\n\nBar.displayName = \"Bar\"\n\nconst BarVisualizerComponent = React.forwardRef<\n  HTMLDivElement,\n  {\n    state?: AgentState\n    barCount?: number\n    mediaStream?: MediaStream | null\n    minHeight?: number\n    maxHeight?: number\n    demo?: boolean\n    centerAlign?: boolean\n  } & React.HTMLAttributes<HTMLDivElement>\n>(\n  (\n    {\n      state,\n      barCount = 15,\n      mediaStream,\n      minHeight = 20,\n      maxHeight = 100,\n      demo = false,\n      centerAlign = false,\n      className,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    const realVolumeBands = useMultibandVolume(mediaStream, {\n      bands: barCount,\n      loPass: 100,\n      hiPass: 200,\n    })\n\n    const fakeVolumeBandsRef = React.useRef<number[]>(\n      new Array(barCount).fill(0.2)\n    )\n    const [fakeVolumeBands, setFakeVolumeBands] = React.useState<number[]>(() =>\n      new Array(barCount).fill(0.2)\n    )\n    const fakeAnimationRef = React.useRef<number | undefined>(undefined)\n\n    React.useEffect(() => {\n      if (!demo) {\n        return\n      }\n\n      if (state !== \"speaking\" && state !== \"listening\") {\n        const bands = new Array(barCount).fill(0.2)\n        fakeVolumeBandsRef.current = bands\n        setFakeVolumeBands(bands)\n        return\n      }\n\n      let lastUpdate = 0\n      const updateInterval = 50\n      const startTime = Date.now() / 1000\n\n      const updateFakeVolume = (timestamp: number) => {\n        if (timestamp - lastUpdate >= updateInterval) {\n          const time = Date.now() / 1000 - startTime\n          const newBands = new Array(barCount)\n\n          for (let i = 0; i < barCount; i++) {\n            const waveOffset = i * 0.5\n            const baseVolume = Math.sin(time * 2 + waveOffset) * 0.3 + 0.5\n            const randomNoise = Math.random() * 0.2\n            newBands[i] = Math.max(0.1, Math.min(1, baseVolume + randomNoise))\n          }\n\n          let hasChanged = false\n          for (let i = 0; i < barCount; i++) {\n            if (Math.abs(newBands[i] - fakeVolumeBandsRef.current[i]) > 0.05) {\n              hasChanged = true\n              break\n            }\n          }\n\n          if (hasChanged) {\n            fakeVolumeBandsRef.current = newBands\n            setFakeVolumeBands(newBands)\n          }\n\n          lastUpdate = timestamp\n        }\n\n        fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)\n      }\n\n      fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)\n\n      return () => {\n        if (fakeAnimationRef.current) {\n          cancelAnimationFrame(fakeAnimationRef.current)\n        }\n      }\n    }, [demo, state, barCount])\n\n    const volumeBands = React.useMemo(\n      () => (demo ? fakeVolumeBands : realVolumeBands),\n      [demo, fakeVolumeBands, realVolumeBands]\n    )\n\n    const highlightedIndices = useBarAnimator(\n      state,\n      barCount,\n      state === \"connecting\"\n        ? 2000 / barCount\n        : state === \"thinking\"\n          ? 150\n          : state === \"listening\"\n            ? 500\n            : 1000\n    )\n\n    return (\n      <div\n        ref={ref}\n        data-state={state}\n        className={cn(\n          \"relative flex justify-center gap-1.5\",\n          centerAlign ? \"items-center\" : \"items-end\",\n          \"h-32 w-full overflow-hidden rounded-lg bg-muted p-4\",\n          className\n        )}\n        style={{\n          ...style,\n        }}\n        {...props}\n      >\n        {volumeBands.map((volume, index) => {\n          const heightPct = Math.min(\n            maxHeight,\n            Math.max(minHeight, volume * 100 + 5)\n          )\n          const isHighlighted = highlightedIndices?.includes(index) ?? false\n\n          return (\n            <Bar\n              key={index}\n              heightPct={heightPct}\n              isHighlighted={isHighlighted}\n              state={state}\n            />\n          )\n        })}\n      </div>\n    )\n  }\n)\n\nBarVisualizerComponent.displayName = \"BarVisualizerComponent\"\n\nconst BarVisualizer = React.memo(\n  BarVisualizerComponent,\n  (prevProps, nextProps) => {\n    return (\n      prevProps.state === nextProps.state &&\n      prevProps.barCount === nextProps.barCount &&\n      prevProps.mediaStream === nextProps.mediaStream &&\n      prevProps.minHeight === nextProps.minHeight &&\n      prevProps.maxHeight === nextProps.maxHeight &&\n      prevProps.demo === nextProps.demo &&\n      prevProps.centerAlign === nextProps.centerAlign &&\n      prevProps.className === nextProps.className &&\n      JSON.stringify(prevProps.style) === JSON.stringify(nextProps.style)\n    )\n  }\n)\n\nBarVisualizer.displayName = \"BarVisualizer\"\n\nexport function BarVisualizerCard() {\n  const [state, setState] = React.useState<AgentState>(\"speaking\")\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Audio Frequency Visualizer</CardTitle>\n        <CardDescription>\n          Real-time frequency band visualization with animated state transitions\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <BarVisualizer\n          state={state}\n          demo={true}\n          barCount={20}\n          minHeight={15}\n          maxHeight={90}\n          className=\"h-40 max-w-full\"\n        />\n      </CardContent>\n      <CardFooter className=\"gap-2\">\n        <Button\n          size=\"sm\"\n          variant={state === \"connecting\" ? \"default\" : \"outline\"}\n          onClick={() => setState(\"connecting\")}\n        >\n          Connecting\n        </Button>\n        <Button\n          size=\"sm\"\n          variant={state === \"listening\" ? \"default\" : \"outline\"}\n          onClick={() => setState(\"listening\")}\n        >\n          Listening\n        </Button>\n        <Button\n          size=\"sm\"\n          variant={state === \"speaking\" ? \"default\" : \"outline\"}\n          onClick={() => setState(\"speaking\")}\n        >\n          Speaking\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/book-appointment.tsx",
    "content": "\"use client\"\n\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/bases/base/ui/alert\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/bases/base/ui/toggle-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function BookAppointment() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Book Appointment</CardTitle>\n        <CardDescription>Dr. Sarah Chen · Cardiology</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <FieldGroup>\n          <Field>\n            <FieldLabel>Available on March 18, 2026</FieldLabel>\n            <ToggleGroup spacing={2} defaultValue={[\"slot-0\"]}>\n              {[\"9:00 AM\", \"10:30 AM\", \"11:00 AM\", \"1:30 PM\"].map(\n                (time, index) => (\n                  <ToggleGroupItem key={time} value={`slot-${index}`}>\n                    {time}\n                  </ToggleGroupItem>\n                )\n              )}\n            </ToggleGroup>\n          </Field>\n        </FieldGroup>\n        <Alert>\n          <AlertTitle>New patient?</AlertTitle>\n          <AlertDescription>Please arrive 15 minutes early.</AlertDescription>\n        </Alert>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">Book Appointment</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/codespaces-card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport { Spinner } from \"@/registry/bases/base/ui/spinner\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/bases/base/ui/tabs\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function CodespacesCard() {\n  const [isCreatingCodespace, setIsCreatingCodespace] = React.useState(false)\n  return (\n    <Card>\n      <CardContent>\n        <Tabs defaultValue=\"codespaces\">\n          <TabsList className=\"w-full\">\n            <TabsTrigger value=\"codespaces\">Codespaces</TabsTrigger>\n            <TabsTrigger value=\"local\">Local</TabsTrigger>\n          </TabsList>\n          <TabsContent value=\"codespaces\">\n            <Item size=\"sm\" className=\"px-1 pt-2\">\n              <ItemContent>\n                <ItemTitle>Codespaces</ItemTitle>\n                <ItemDescription>Your workspaces in the cloud</ItemDescription>\n              </ItemContent>\n              <ItemActions>\n                <Tooltip>\n                  <TooltipTrigger\n                    render={<Button variant=\"ghost\" size=\"icon-sm\" />}\n                  >\n                    <IconPlaceholder\n                      lucide=\"PlusIcon\"\n                      tabler=\"IconPlus\"\n                      hugeicons=\"PlusSignIcon\"\n                      phosphor=\"PlusIcon\"\n                      remixicon=\"RiAddLine\"\n                    />\n                  </TooltipTrigger>\n                  <TooltipContent side=\"bottom\">\n                    Create a codespace on main\n                  </TooltipContent>\n                </Tooltip>\n                <DropdownMenu>\n                  <DropdownMenuTrigger\n                    render={<Button variant=\"ghost\" size=\"icon-sm\" />}\n                  >\n                    <IconPlaceholder\n                      lucide=\"MoreHorizontalIcon\"\n                      tabler=\"IconDots\"\n                      hugeicons=\"MoreHorizontalCircle01Icon\"\n                      phosphor=\"DotsThreeOutlineIcon\"\n                      remixicon=\"RiMoreLine\"\n                    />\n                  </DropdownMenuTrigger>\n                  <DropdownMenuContent align=\"end\" className=\"w-56\">\n                    <DropdownMenuGroup>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"PlusIcon\"\n                          tabler=\"IconPlus\"\n                          hugeicons=\"PlusSignIcon\"\n                          phosphor=\"PlusIcon\"\n                          remixicon=\"RiAddLine\"\n                        />\n                        New with options...\n                      </DropdownMenuItem>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"ContainerIcon\"\n                          tabler=\"IconBox\"\n                          hugeicons=\"CubeIcon\"\n                          phosphor=\"CubeIcon\"\n                          remixicon=\"RiBox1Line\"\n                        />\n                        Configure dev container\n                      </DropdownMenuItem>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"ZapIcon\"\n                          tabler=\"IconBolt\"\n                          hugeicons=\"ZapIcon\"\n                          phosphor=\"LightningIcon\"\n                          remixicon=\"RiFlashlightLine\"\n                        />\n                        Set up prebuilds\n                      </DropdownMenuItem>\n                    </DropdownMenuGroup>\n                    <DropdownMenuSeparator />\n                    <DropdownMenuGroup>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"ServerIcon\"\n                          tabler=\"IconServer\"\n                          hugeicons=\"ServerStackIcon\"\n                          phosphor=\"HardDrivesIcon\"\n                          remixicon=\"RiHardDriveLine\"\n                        />\n                        Manage codespaces\n                      </DropdownMenuItem>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"ShareIcon\"\n                          tabler=\"IconShare2\"\n                          hugeicons=\"Share03Icon\"\n                          phosphor=\"ShareIcon\"\n                          remixicon=\"RiShareLine\"\n                        />\n                        Share deep link\n                      </DropdownMenuItem>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"InfoIcon\"\n                          tabler=\"IconInfoCircle\"\n                          hugeicons=\"AlertCircleIcon\"\n                          phosphor=\"InfoIcon\"\n                          remixicon=\"RiInformationLine\"\n                        />\n                        What are codespaces?\n                      </DropdownMenuItem>\n                    </DropdownMenuGroup>\n                  </DropdownMenuContent>\n                </DropdownMenu>\n              </ItemActions>\n            </Item>\n            <Separator className=\"-mx-2 my-2 w-auto!\" />\n            <Empty className=\"p-4\">\n              <EmptyHeader>\n                <EmptyMedia variant=\"icon\">\n                  <IconPlaceholder\n                    lucide=\"ServerIcon\"\n                    tabler=\"IconServer\"\n                    hugeicons=\"ServerStackIcon\"\n                    phosphor=\"HardDrivesIcon\"\n                    remixicon=\"RiHardDriveLine\"\n                  />\n                </EmptyMedia>\n                <EmptyTitle>No codespaces</EmptyTitle>\n                <EmptyDescription>\n                  You don&apos;t have any codespaces with this repository\n                  checked out\n                </EmptyDescription>\n              </EmptyHeader>\n              <EmptyContent>\n                <Button\n                  size=\"sm\"\n                  onClick={() => {\n                    setIsCreatingCodespace(true)\n                    setTimeout(() => {\n                      setIsCreatingCodespace(false)\n                    }, 2000)\n                  }}\n                  disabled={isCreatingCodespace}\n                >\n                  {isCreatingCodespace ? (\n                    <Spinner data-icon=\"inline-start\" />\n                  ) : (\n                    \"\"\n                  )}\n                  Create Codespace\n                </Button>\n                <a\n                  href=\"#learn-more\"\n                  className=\"text-xs text-muted-foreground underline underline-offset-4\"\n                >\n                  Learn more about codespaces\n                </a>\n              </EmptyContent>\n            </Empty>\n            <Separator className=\"-mx-2 my-2 w-auto!\" />\n            <div className=\"p-1.5 text-xs text-muted-foreground\">\n              Codespace usage for this repository is paid for by{\" \"}\n              <span className=\"font-medium\">shadcn</span>.\n            </div>\n          </TabsContent>\n          <TabsContent value=\"local\">\n            <Item size=\"sm\" className=\"hidden p-0\">\n              <ItemContent>\n                <ItemTitle className=\"gap-2\">\n                  <IconPlaceholder\n                    lucide=\"TerminalIcon\"\n                    tabler=\"IconTerminal\"\n                    hugeicons=\"ComputerTerminal01Icon\"\n                    phosphor=\"TerminalIcon\"\n                    remixicon=\"RiTerminalBoxLine\"\n                    className=\"size-4\"\n                  />\n                  Clone\n                </ItemTitle>\n              </ItemContent>\n              <ItemActions>\n                <Tooltip>\n                  <TooltipTrigger\n                    render={<Button variant=\"ghost\" size=\"icon\" />}\n                  >\n                    <IconPlaceholder\n                      lucide=\"InfoIcon\"\n                      tabler=\"IconInfoCircle\"\n                      hugeicons=\"AlertCircleIcon\"\n                      phosphor=\"InfoIcon\"\n                      remixicon=\"RiInformationLine\"\n                    />\n                  </TooltipTrigger>\n                  <TooltipContent side=\"left\">\n                    Which remote URL should I use?\n                  </TooltipContent>\n                </Tooltip>\n              </ItemActions>\n            </Item>\n            <Tabs defaultValue=\"https\">\n              <TabsList\n                variant=\"line\"\n                className=\"w-full justify-start border-b *:[button]:flex-0\"\n              >\n                <TabsTrigger value=\"https\">HTTPS</TabsTrigger>\n                <TabsTrigger value=\"ssh\">SSH</TabsTrigger>\n                <TabsTrigger value=\"cli\">GitHub CLI</TabsTrigger>\n              </TabsList>\n              <div className=\"rounded-md border bg-muted/30 p-2\">\n                <TabsContent value=\"https\">\n                  <Field className=\"gap-2\">\n                    <FieldLabel htmlFor=\"https-url\" className=\"sr-only\">\n                      HTTPS URL\n                    </FieldLabel>\n                    <InputGroup>\n                      <InputGroupAddon align=\"inline-end\">\n                        <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n                          <IconPlaceholder\n                            lucide=\"CopyIcon\"\n                            tabler=\"IconCopy\"\n                            hugeicons=\"Copy01Icon\"\n                            phosphor=\"CopyIcon\"\n                            remixicon=\"RiFileCopyLine\"\n                          />\n                        </InputGroupButton>\n                      </InputGroupAddon>\n                      <InputGroupInput\n                        id=\"https-url\"\n                        defaultValue=\"https://github.com/shadcn-ui/ui.git\"\n                        readOnly\n                      />\n                    </InputGroup>\n                    <FieldDescription>\n                      Clone using the web URL.\n                    </FieldDescription>\n                  </Field>\n                </TabsContent>\n                <TabsContent value=\"ssh\">\n                  <Field className=\"gap-2\">\n                    <FieldLabel htmlFor=\"ssh-url\" className=\"sr-only\">\n                      SSH URL\n                    </FieldLabel>\n                    <InputGroup>\n                      <InputGroupAddon align=\"inline-end\">\n                        <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n                          <IconPlaceholder\n                            lucide=\"CopyIcon\"\n                            tabler=\"IconCopy\"\n                            hugeicons=\"Copy01Icon\"\n                            phosphor=\"CopyIcon\"\n                            remixicon=\"RiFileCopyLine\"\n                          />\n                        </InputGroupButton>\n                      </InputGroupAddon>\n                      <InputGroupInput\n                        id=\"ssh-url\"\n                        defaultValue=\"git@github.com:shadcn-ui/ui.git\"\n                        readOnly\n                      />\n                    </InputGroup>\n                    <FieldDescription>\n                      Use a password-protected SSH key.\n                    </FieldDescription>\n                  </Field>\n                </TabsContent>\n                <TabsContent value=\"cli\">\n                  <Field className=\"gap-2\">\n                    <FieldLabel htmlFor=\"cli-command\" className=\"sr-only\">\n                      CLI Command\n                    </FieldLabel>\n                    <InputGroup>\n                      <InputGroupAddon align=\"inline-end\">\n                        <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n                          <IconPlaceholder\n                            lucide=\"CopyIcon\"\n                            tabler=\"IconCopy\"\n                            hugeicons=\"Copy01Icon\"\n                            phosphor=\"CopyIcon\"\n                            remixicon=\"RiFileCopyLine\"\n                          />\n                        </InputGroupButton>\n                      </InputGroupAddon>\n                      <InputGroupInput\n                        id=\"cli-command\"\n                        defaultValue=\"gh repo clone shadcn-ui/ui\"\n                        readOnly\n                      />\n                    </InputGroup>\n                    <FieldDescription>\n                      Work fast with our official CLI.{\" \"}\n                      <a href=\"#learn-more\">Learn more</a>\n                    </FieldDescription>\n                  </Field>\n                </TabsContent>\n              </div>\n            </Tabs>\n            <Separator className=\"-mx-2 my-2 w-auto!\" />\n            <div className=\"flex flex-col\">\n              <Button\n                variant=\"ghost\"\n                size=\"sm\"\n                className=\"justify-start gap-1.5\"\n              >\n                <IconPlaceholder\n                  lucide=\"MonitorIcon\"\n                  tabler=\"IconDeviceDesktop\"\n                  hugeicons=\"ComputerIcon\"\n                  phosphor=\"MonitorIcon\"\n                  remixicon=\"RiComputerLine\"\n                  data-icon=\"inline-start\"\n                />\n                Open with GitHub Desktop\n              </Button>\n              <Button\n                variant=\"ghost\"\n                size=\"sm\"\n                className=\"justify-start gap-1.5\"\n              >\n                <IconPlaceholder\n                  lucide=\"DownloadIcon\"\n                  tabler=\"IconDownload\"\n                  hugeicons=\"DownloadIcon\"\n                  phosphor=\"DownloadIcon\"\n                  remixicon=\"RiDownloadLine\"\n                  data-icon=\"inline-start\"\n                />\n                Download ZIP\n              </Button>\n            </div>\n          </TabsContent>\n        </Tabs>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/contributions-activity.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/registry/bases/base/ui/field\"\n\nexport function ContributionsActivity() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Contributions & Activity</CardTitle>\n        <CardDescription>\n          Manage your contributions and activity visibility.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"contributions-activity\">\n          <FieldGroup>\n            <FieldSet>\n              <FieldLegend className=\"sr-only\">\n                Contributions & activity\n              </FieldLegend>\n              <FieldGroup>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"activity-private-profile\" />\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"activity-private-profile\">\n                      Make profile private and hide activity\n                    </FieldLabel>\n                    <FieldDescription>\n                      Enabling this will hide your contributions and activity\n                      from your GitHub profile and from social features like\n                      followers, stars, feeds, leaderboards and releases.\n                    </FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Button form=\"contributions-activity\">Save Changes</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/contributors.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\n\n// GitHub usernames displayed as contributor avatars.\nconst usernames = [\n  \"shadcn\",\n  \"vercel\",\n  \"nextjs\",\n  \"tailwindlabs\",\n  \"typescript-lang\",\n  \"eslint\",\n  \"prettier\",\n  \"babel\",\n  \"webpack\",\n  \"rollup\",\n  \"parcel\",\n  \"vite\",\n  \"react\",\n  \"vue\",\n  \"angular\",\n  \"solid\",\n]\n\nexport function Contributors() {\n  return (\n    <Card className=\"max-w-sm\">\n      <CardHeader>\n        <CardTitle>\n          Contributors <Badge variant=\"secondary\">312</Badge>\n        </CardTitle>\n      </CardHeader>\n      <CardContent>\n        <div className=\"flex flex-wrap gap-2\">\n          {usernames.map((username) => (\n            <Avatar key={username} className=\"grayscale\">\n              <AvatarImage\n                src={`https://github.com/${username}.png`}\n                alt={username}\n              />\n              <AvatarFallback>{username.charAt(0)}</AvatarFallback>\n            </Avatar>\n          ))}\n        </div>\n      </CardContent>\n      <CardFooter>\n        <a href=\"#\" className=\"text-sm underline underline-offset-4\">\n          + 810 contributors\n        </a>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/environment-variables.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\n\nexport function EnvironmentVariables() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Environment Variables</CardTitle>\n        <CardDescription>Production · 8 variables</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-2\">\n        {[\n          { key: \"DATABASE_URL\", masked: true },\n          { key: \"NEXT_PUBLIC_API\", masked: false },\n          { key: \"STRIPE_SECRET\", masked: true },\n        ].map((env) => (\n          <div\n            key={env.key}\n            className=\"flex items-center gap-2 rounded-md px-2.5 py-2 font-mono text-xs ring ring-border\"\n          >\n            <span className=\"font-medium\">{env.key}</span>\n            <span className=\"ml-auto text-muted-foreground\">\n              {env.masked ? \"••••••••\" : \"https://api.example.com\"}\n            </span>\n          </div>\n        ))}\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\">Edit</Button>\n        <Button className=\"ml-auto\">Deploy</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/feedback-form.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/base/ui/native-select\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\n\nexport function FeedbackForm() {\n  return (\n    <Card>\n      <CardContent>\n        <form id=\"feedback-form\">\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"topic\">Topic</FieldLabel>\n              <NativeSelect id=\"topic\">\n                <NativeSelectOption value=\"\">Select a topic</NativeSelectOption>\n                <NativeSelectOption value=\"ai\">AI</NativeSelectOption>\n                <NativeSelectOption value=\"accounts-and-access-controls\">\n                  Accounts and Access Controls\n                </NativeSelectOption>\n                <NativeSelectOption value=\"billing\">Billing</NativeSelectOption>\n                <NativeSelectOption value=\"cdn\">\n                  CDN (Firewall, Caching)\n                </NativeSelectOption>\n                <NativeSelectOption value=\"ci-cd\">\n                  CI/CD (Builds, Deployments, Environment Variables)\n                </NativeSelectOption>\n                <NativeSelectOption value=\"dashboard-interface\">\n                  Dashboard Interface (Navigation, UI Issues)\n                </NativeSelectOption>\n                <NativeSelectOption value=\"domains\">Domains</NativeSelectOption>\n                <NativeSelectOption value=\"frameworks\">\n                  Frameworks\n                </NativeSelectOption>\n                <NativeSelectOption value=\"marketplace-and-integrations\">\n                  Marketplace and Integrations\n                </NativeSelectOption>\n                <NativeSelectOption value=\"observability\">\n                  Observability (Observability, Logs, Monitoring)\n                </NativeSelectOption>\n                <NativeSelectOption value=\"storage\">Storage</NativeSelectOption>\n              </NativeSelect>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"feedback\">Feedback</FieldLabel>\n              <Textarea\n                id=\"feedback\"\n                placeholder=\"Your feedback helps us improve...\"\n              />\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Button type=\"submit\" form=\"feedback-form\">\n          Submit\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/file-upload.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function FileUpload() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>File Upload</CardTitle>\n        <CardDescription>Drag and drop or browse</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Empty className=\"border\">\n          <EmptyHeader>\n            <EmptyMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"UploadCloudIcon\"\n                tabler=\"IconCloudUpload\"\n                hugeicons=\"CloudUploadIcon\"\n                phosphor=\"CloudArrowUpIcon\"\n                remixicon=\"RiUploadCloudLine\"\n              />\n            </EmptyMedia>\n            <EmptyTitle>Upload files</EmptyTitle>\n            <EmptyDescription>PNG, JPG, PDF up to 10MB</EmptyDescription>\n          </EmptyHeader>\n          <EmptyContent>\n            <Button>Browse Files</Button>\n          </EmptyContent>\n        </Empty>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/github-profile.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/base/ui/native-select\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\n\nexport function GithubProfile() {\n  return (\n    <Card className=\"mx-auto w-full max-w-md\">\n      <CardHeader>\n        <CardTitle>Profile</CardTitle>\n        <CardDescription>Manage your profile information.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"profile\">\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n              <Input id=\"name\" placeholder=\"shadcn\" />\n              <FieldDescription>\n                Your name may appear around GitHub where you contribute or are\n                mentioned. You can remove it at any time.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"email\">Public Email</FieldLabel>\n              <NativeSelect id=\"email\">\n                <NativeSelectOption value=\"m@shadcn.com\">\n                  m@shadcn.com\n                </NativeSelectOption>\n                <NativeSelectOption value=\"m@gmail.com\">\n                  m@gmail.com\n                </NativeSelectOption>\n              </NativeSelect>\n              <FieldDescription>\n                You can manage verified email addresses in your{\" \"}\n                <a href=\"#email-settings\">email settings</a>.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"bio\">Bio</FieldLabel>\n              <Textarea\n                id=\"bio\"\n                placeholder=\"Tell us a little bit about yourself\"\n              />\n              <FieldDescription>\n                You can <span>@mention</span> other users and organizations to\n                link to them.\n              </FieldDescription>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Button form=\"profile\">Save Profile</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/icon-preview-grid.tsx",
    "content": "\"use client\"\n\nimport { type IconLibraryName } from \"shadcn/icons\"\n\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst PREVIEW_ICONS = [\n  {\n    lucide: \"CopyIcon\",\n    tabler: \"IconCopy\",\n    hugeicons: \"Copy01Icon\",\n    phosphor: \"CopyIcon\",\n    remixicon: \"RiFileCopyLine\",\n  },\n  {\n    lucide: \"CircleAlertIcon\",\n    tabler: \"IconExclamationCircle\",\n    hugeicons: \"AlertCircleIcon\",\n    phosphor: \"WarningCircleIcon\",\n    remixicon: \"RiErrorWarningLine\",\n  },\n  {\n    lucide: \"TrashIcon\",\n    tabler: \"IconTrash\",\n    hugeicons: \"Delete02Icon\",\n    phosphor: \"TrashIcon\",\n    remixicon: \"RiDeleteBinLine\",\n  },\n  {\n    lucide: \"ShareIcon\",\n    tabler: \"IconShare\",\n    hugeicons: \"Share03Icon\",\n    phosphor: \"ShareIcon\",\n    remixicon: \"RiShareLine\",\n  },\n  {\n    lucide: \"ShoppingBagIcon\",\n    tabler: \"IconShoppingBag\",\n    hugeicons: \"ShoppingBag01Icon\",\n    phosphor: \"BagIcon\",\n    remixicon: \"RiShoppingBagLine\",\n  },\n  {\n    lucide: \"MoreHorizontalIcon\",\n    tabler: \"IconDots\",\n    hugeicons: \"MoreHorizontalCircle01Icon\",\n    phosphor: \"DotsThreeIcon\",\n    remixicon: \"RiMoreLine\",\n  },\n  {\n    lucide: \"Loader2Icon\",\n    tabler: \"IconLoader\",\n    hugeicons: \"Loading03Icon\",\n    phosphor: \"SpinnerIcon\",\n    remixicon: \"RiLoaderLine\",\n  },\n  {\n    lucide: \"PlusIcon\",\n    tabler: \"IconPlus\",\n    hugeicons: \"PlusSignIcon\",\n    phosphor: \"PlusIcon\",\n    remixicon: \"RiAddLine\",\n  },\n  {\n    lucide: \"MinusIcon\",\n    tabler: \"IconMinus\",\n    hugeicons: \"MinusSignIcon\",\n    phosphor: \"MinusIcon\",\n    remixicon: \"RiSubtractLine\",\n  },\n  {\n    lucide: \"ArrowLeftIcon\",\n    tabler: \"IconArrowLeft\",\n    hugeicons: \"ArrowLeft02Icon\",\n    phosphor: \"ArrowLeftIcon\",\n    remixicon: \"RiArrowLeftLine\",\n  },\n  {\n    lucide: \"ArrowRightIcon\",\n    tabler: \"IconArrowRight\",\n    hugeicons: \"ArrowRight02Icon\",\n    phosphor: \"ArrowRightIcon\",\n    remixicon: \"RiArrowRightLine\",\n  },\n  {\n    lucide: \"CheckIcon\",\n    tabler: \"IconCheck\",\n    hugeicons: \"Tick02Icon\",\n    phosphor: \"CheckIcon\",\n    remixicon: \"RiCheckLine\",\n  },\n  {\n    lucide: \"ChevronDownIcon\",\n    tabler: \"IconChevronDown\",\n    hugeicons: \"ArrowDown01Icon\",\n    phosphor: \"CaretDownIcon\",\n    remixicon: \"RiArrowDownSLine\",\n  },\n  {\n    lucide: \"ChevronRightIcon\",\n    tabler: \"IconChevronRight\",\n    hugeicons: \"ArrowRight01Icon\",\n    phosphor: \"CaretRightIcon\",\n    remixicon: \"RiArrowRightSLine\",\n  },\n  {\n    lucide: \"SearchIcon\",\n    tabler: \"IconSearch\",\n    hugeicons: \"Search01Icon\",\n    phosphor: \"MagnifyingGlassIcon\",\n    remixicon: \"RiSearchLine\",\n  },\n  {\n    lucide: \"SettingsIcon\",\n    tabler: \"IconSettings\",\n    hugeicons: \"Settings01Icon\",\n    phosphor: \"GearIcon\",\n    remixicon: \"RiSettingsLine\",\n  },\n] satisfies Record<IconLibraryName, string>[]\n\nexport function IconPreviewGrid() {\n  return (\n    <Card>\n      <CardContent>\n        <div className=\"grid grid-cols-8 place-items-center gap-4\">\n          {PREVIEW_ICONS.map((icon, index) => (\n            <Card\n              key={index}\n              className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\"\n            >\n              <IconPlaceholder\n                lucide={icon.lucide}\n                tabler={icon.tabler}\n                hugeicons={icon.hugeicons}\n                phosphor={icon.phosphor}\n                remixicon={icon.remixicon}\n              />\n            </Card>\n          ))}\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/invite-team.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { Field, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function InviteTeam() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Invite Team</CardTitle>\n        <CardDescription>Add members to your workspace</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"flex flex-col gap-3\">\n          {[\n            { email: \"alex@example.com\", role: \"Editor\" },\n            { email: \"sam@example.com\", role: \"Viewer\" },\n          ].map((invite) => (\n            <div key={invite.email} className=\"flex items-center gap-2\">\n              <Input defaultValue={invite.email} className=\"flex-1\" />\n              <Select\n                items={[\n                  { label: \"Admin\", value: \"admin\" },\n                  { label: \"Editor\", value: \"editor\" },\n                  { label: \"Viewer\", value: \"viewer\" },\n                ]}\n                defaultValue={invite.role.toLowerCase()}\n              >\n                <SelectTrigger className=\"w-24\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent alignItemWithTrigger={false} align=\"end\">\n                  <SelectGroup>\n                    <SelectItem value=\"admin\">Admin</SelectItem>\n                    <SelectItem value=\"editor\">Editor</SelectItem>\n                    <SelectItem value=\"viewer\">Viewer</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </div>\n          ))}\n        </div>\n        <Button variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n            data-icon=\"inline-start\"\n          />\n          Add another\n        </Button>\n        <Separator />\n        <Field>\n          <FieldLabel htmlFor=\"invite-link\">Or share invite link</FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"invite-link\"\n              defaultValue=\"https://app.co/invite/x8f2k\"\n              readOnly\n            />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton size=\"icon-xs\" aria-label=\"Copy link\">\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"Copy01Icon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">Send Invites</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/invoice.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/bases/base/ui/table\"\n\nconst INVOICE_ITEMS = [\n  { item: \"Design System License\", qty: 1, unitPrice: 499 },\n  { item: \"Priority Support\", qty: 12, unitPrice: 99 },\n  { item: \"Custom Components\", qty: 3, unitPrice: 250 },\n] as const\n\nconst subtotal = INVOICE_ITEMS.reduce(\n  (sum, row) => sum + row.qty * row.unitPrice,\n  0\n)\nconst tax = 0\nconst totalDue = subtotal + tax\n\nfunction formatCurrency(value: number) {\n  return new Intl.NumberFormat(\"en-US\", {\n    style: \"currency\",\n    currency: \"USD\",\n    maximumFractionDigits: 2,\n  }).format(value)\n}\n\nexport function Invoice() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Invoice #INV-2847</CardTitle>\n        <CardDescription>Due March 30, 2026</CardDescription>\n        <CardAction>\n          <Badge variant=\"secondary\">Pending</Badge>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <Table>\n          <TableHeader>\n            <TableRow>\n              <TableHead>Item</TableHead>\n              <TableHead className=\"text-right\">Qty</TableHead>\n              <TableHead className=\"text-right\">Rate</TableHead>\n              <TableHead className=\"text-right\">Amount</TableHead>\n            </TableRow>\n          </TableHeader>\n          <TableBody>\n            {INVOICE_ITEMS.map((row) => (\n              <TableRow key={row.item}>\n                <TableCell>{row.item}</TableCell>\n                <TableCell className=\"text-right tabular-nums\">\n                  {row.qty}\n                </TableCell>\n                <TableCell className=\"text-right tabular-nums\">\n                  {formatCurrency(row.unitPrice)}\n                </TableCell>\n                <TableCell className=\"text-right tabular-nums\">\n                  {formatCurrency(row.qty * row.unitPrice)}\n                </TableCell>\n              </TableRow>\n            ))}\n            <TableRow>\n              <TableCell colSpan={3} className=\"text-right\">\n                Subtotal\n              </TableCell>\n              <TableCell className=\"text-right tabular-nums\">\n                {formatCurrency(subtotal)}\n              </TableCell>\n            </TableRow>\n            <TableRow>\n              <TableCell colSpan={3} className=\"text-right\">\n                Tax\n              </TableCell>\n              <TableCell className=\"text-right tabular-nums\">$0.00</TableCell>\n            </TableRow>\n            <TableRow>\n              <TableCell colSpan={3} className=\"text-right\">\n                Total Due\n              </TableCell>\n              <TableCell className=\"text-right tabular-nums\">\n                {formatCurrency(totalDue)}\n              </TableCell>\n            </TableRow>\n          </TableBody>\n        </Table>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\" size=\"sm\">\n          Download PDF\n        </Button>\n        <Button size=\"sm\" className=\"ml-auto\">\n          Pay Now\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/live-waveform.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\n\nconst LiveWaveform = ({\n  active = false,\n  processing = false,\n  deviceId,\n  barWidth = 3,\n  barGap = 1,\n  barRadius = 1.5,\n  barColor,\n  fadeEdges = true,\n  fadeWidth = 24,\n  barHeight: baseBarHeight = 4,\n  height = 64,\n  sensitivity = 1,\n  smoothingTimeConstant = 0.8,\n  fftSize = 256,\n  historySize = 60,\n  updateRate = 30,\n  mode = \"static\",\n  onError,\n  onStreamReady,\n  onStreamEnd,\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n  active?: boolean\n  processing?: boolean\n  deviceId?: string\n  barWidth?: number\n  barHeight?: number\n  barGap?: number\n  barRadius?: number\n  barColor?: string\n  fadeEdges?: boolean\n  fadeWidth?: number\n  height?: string | number\n  sensitivity?: number\n  smoothingTimeConstant?: number\n  fftSize?: number\n  historySize?: number\n  updateRate?: number\n  mode?: \"scrolling\" | \"static\"\n  onError?: (error: Error) => void\n  onStreamReady?: (stream: MediaStream) => void\n  onStreamEnd?: () => void\n}) => {\n  const canvasRef = useRef<HTMLCanvasElement>(null)\n  const containerRef = useRef<HTMLDivElement>(null)\n  const historyRef = useRef<number[]>([])\n  const analyserRef = useRef<AnalyserNode | null>(null)\n  const audioContextRef = useRef<AudioContext | null>(null)\n  const streamRef = useRef<MediaStream | null>(null)\n  const animationRef = useRef<number>(0)\n  const lastUpdateRef = useRef<number>(0)\n  const processingAnimationRef = useRef<number | null>(null)\n  const lastActiveDataRef = useRef<number[]>([])\n  const transitionProgressRef = useRef(0)\n  const staticBarsRef = useRef<number[]>([])\n  const needsRedrawRef = useRef(true)\n  const gradientCacheRef = useRef<CanvasGradient | null>(null)\n  const lastWidthRef = useRef(0)\n  const heightStyle = typeof height === \"number\" ? `${height}px` : height\n\n  // Handle canvas resizing.\n  useEffect(() => {\n    const canvas = canvasRef.current\n    const container = containerRef.current\n    if (!canvas || !container) return\n    const resizeObserver = new ResizeObserver(() => {\n      const rect = container.getBoundingClientRect()\n      const dpr = window.devicePixelRatio || 1\n      canvas.width = rect.width * dpr\n      canvas.height = rect.height * dpr\n      canvas.style.width = `${rect.width}px`\n      canvas.style.height = `${rect.height}px`\n      const ctx = canvas.getContext(\"2d\")\n      if (ctx) {\n        ctx.scale(dpr, dpr)\n      }\n      gradientCacheRef.current = null\n      lastWidthRef.current = rect.width\n      needsRedrawRef.current = true\n    })\n    resizeObserver.observe(container)\n    return () => resizeObserver.disconnect()\n  }, [])\n\n  useEffect(() => {\n    if (processing && !active) {\n      let time = 0\n      transitionProgressRef.current = 0\n      const animateProcessing = () => {\n        time += 0.03\n        transitionProgressRef.current = Math.min(\n          1,\n          transitionProgressRef.current + 0.02\n        )\n        const processingData = []\n        const barCount = Math.floor(\n          (containerRef.current?.getBoundingClientRect().width || 200) /\n            (barWidth + barGap)\n        )\n        if (mode === \"static\") {\n          const halfCount = Math.floor(barCount / 2)\n          for (let i = 0; i < barCount; i++) {\n            const normalizedPosition = (i - halfCount) / halfCount\n            const centerWeight = 1 - Math.abs(normalizedPosition) * 0.4\n            const wave1 = Math.sin(time * 1.5 + normalizedPosition * 3) * 0.25\n            const wave2 = Math.sin(time * 0.8 - normalizedPosition * 2) * 0.2\n            const wave3 = Math.cos(time * 2 + normalizedPosition) * 0.15\n            const combinedWave = wave1 + wave2 + wave3\n            const processingValue = (0.2 + combinedWave) * centerWeight\n            let finalValue = processingValue\n            if (\n              lastActiveDataRef.current.length > 0 &&\n              transitionProgressRef.current < 1\n            ) {\n              const lastDataIndex = Math.min(\n                i,\n                lastActiveDataRef.current.length - 1\n              )\n              const lastValue = lastActiveDataRef.current[lastDataIndex] || 0\n              finalValue =\n                lastValue * (1 - transitionProgressRef.current) +\n                processingValue * transitionProgressRef.current\n            }\n            processingData.push(Math.max(0.05, Math.min(1, finalValue)))\n          }\n        } else {\n          for (let i = 0; i < barCount; i++) {\n            const normalizedPosition = (i - barCount / 2) / (barCount / 2)\n            const centerWeight = 1 - Math.abs(normalizedPosition) * 0.4\n            const wave1 = Math.sin(time * 1.5 + i * 0.15) * 0.25\n            const wave2 = Math.sin(time * 0.8 - i * 0.1) * 0.2\n            const wave3 = Math.cos(time * 2 + i * 0.05) * 0.15\n            const combinedWave = wave1 + wave2 + wave3\n            const processingValue = (0.2 + combinedWave) * centerWeight\n            let finalValue = processingValue\n            if (\n              lastActiveDataRef.current.length > 0 &&\n              transitionProgressRef.current < 1\n            ) {\n              const lastDataIndex = Math.floor(\n                (i / barCount) * lastActiveDataRef.current.length\n              )\n              const lastValue = lastActiveDataRef.current[lastDataIndex] || 0\n              finalValue =\n                lastValue * (1 - transitionProgressRef.current) +\n                processingValue * transitionProgressRef.current\n            }\n            processingData.push(Math.max(0.05, Math.min(1, finalValue)))\n          }\n        }\n        if (mode === \"static\") {\n          staticBarsRef.current = processingData\n        } else {\n          historyRef.current = processingData\n        }\n        needsRedrawRef.current = true\n        processingAnimationRef.current =\n          requestAnimationFrame(animateProcessing)\n      }\n      animateProcessing()\n      return () => {\n        if (processingAnimationRef.current) {\n          cancelAnimationFrame(processingAnimationRef.current)\n        }\n      }\n    } else if (!active && !processing) {\n      const hasData =\n        mode === \"static\"\n          ? staticBarsRef.current.length > 0\n          : historyRef.current.length > 0\n      if (hasData) {\n        let fadeProgress = 0\n        const fadeToIdle = () => {\n          fadeProgress += 0.03\n          if (fadeProgress < 1) {\n            if (mode === \"static\") {\n              staticBarsRef.current = staticBarsRef.current.map(\n                (value) => value * (1 - fadeProgress)\n              )\n            } else {\n              historyRef.current = historyRef.current.map(\n                (value) => value * (1 - fadeProgress)\n              )\n            }\n            needsRedrawRef.current = true\n            requestAnimationFrame(fadeToIdle)\n          } else {\n            if (mode === \"static\") {\n              staticBarsRef.current = []\n            } else {\n              historyRef.current = []\n            }\n          }\n        }\n        fadeToIdle()\n      }\n    }\n  }, [processing, active, barWidth, barGap, mode])\n\n  // Handle microphone setup and teardown.\n  useEffect(() => {\n    if (!active) {\n      if (streamRef.current) {\n        streamRef.current.getTracks().forEach((track) => track.stop())\n        streamRef.current = null\n        onStreamEnd?.()\n      }\n      if (\n        audioContextRef.current &&\n        audioContextRef.current.state !== \"closed\"\n      ) {\n        audioContextRef.current.close()\n        audioContextRef.current = null\n      }\n      if (animationRef.current) {\n        cancelAnimationFrame(animationRef.current)\n        animationRef.current = 0\n      }\n      return\n    }\n    const setupMicrophone = async () => {\n      try {\n        const stream = await navigator.mediaDevices.getUserMedia({\n          audio: deviceId\n            ? {\n                deviceId: { exact: deviceId },\n                echoCancellation: true,\n                noiseSuppression: true,\n                autoGainControl: true,\n              }\n            : {\n                echoCancellation: true,\n                noiseSuppression: true,\n                autoGainControl: true,\n              },\n        })\n        streamRef.current = stream\n        onStreamReady?.(stream)\n        const AudioContextConstructor =\n          window.AudioContext ||\n          (window as unknown as { webkitAudioContext: typeof AudioContext })\n            .webkitAudioContext\n        const audioContext = new AudioContextConstructor()\n        const analyser = audioContext.createAnalyser()\n        analyser.fftSize = fftSize\n        analyser.smoothingTimeConstant = smoothingTimeConstant\n        const source = audioContext.createMediaStreamSource(stream)\n        source.connect(analyser)\n        audioContextRef.current = audioContext\n        analyserRef.current = analyser\n        historyRef.current = []\n      } catch (error) {\n        onError?.(error as Error)\n      }\n    }\n    setupMicrophone()\n    return () => {\n      if (streamRef.current) {\n        streamRef.current.getTracks().forEach((track) => track.stop())\n        streamRef.current = null\n        onStreamEnd?.()\n      }\n      if (\n        audioContextRef.current &&\n        audioContextRef.current.state !== \"closed\"\n      ) {\n        audioContextRef.current.close()\n        audioContextRef.current = null\n      }\n      if (animationRef.current) {\n        cancelAnimationFrame(animationRef.current)\n        animationRef.current = 0\n      }\n    }\n  }, [\n    active,\n    deviceId,\n    fftSize,\n    smoothingTimeConstant,\n    onError,\n    onStreamReady,\n    onStreamEnd,\n  ])\n\n  // Animation loop.\n  useEffect(() => {\n    const canvas = canvasRef.current\n    if (!canvas) return\n    const ctx = canvas.getContext(\"2d\")\n    if (!ctx) return\n    let rafId: number\n    const animate = (currentTime: number) => {\n      const rect = canvas.getBoundingClientRect()\n      if (active && currentTime - lastUpdateRef.current > updateRate) {\n        lastUpdateRef.current = currentTime\n        if (analyserRef.current) {\n          const dataArray = new Uint8Array(\n            analyserRef.current.frequencyBinCount\n          )\n          analyserRef.current.getByteFrequencyData(dataArray)\n          if (mode === \"static\") {\n            const startFreq = Math.floor(dataArray.length * 0.05)\n            const endFreq = Math.floor(dataArray.length * 0.4)\n            const relevantData = dataArray.slice(startFreq, endFreq)\n            const barCount = Math.floor(rect.width / (barWidth + barGap))\n            const halfCount = Math.floor(barCount / 2)\n            const newBars: number[] = []\n            for (let i = halfCount - 1; i >= 0; i--) {\n              const dataIndex = Math.floor(\n                (i / halfCount) * relevantData.length\n              )\n              const value = Math.min(\n                1,\n                (relevantData[dataIndex] / 255) * sensitivity\n              )\n              newBars.push(Math.max(0.05, value))\n            }\n            for (let i = 0; i < halfCount; i++) {\n              const dataIndex = Math.floor(\n                (i / halfCount) * relevantData.length\n              )\n              const value = Math.min(\n                1,\n                (relevantData[dataIndex] / 255) * sensitivity\n              )\n              newBars.push(Math.max(0.05, value))\n            }\n            staticBarsRef.current = newBars\n            lastActiveDataRef.current = newBars\n          } else {\n            let sum = 0\n            const startFreq = Math.floor(dataArray.length * 0.05)\n            const endFreq = Math.floor(dataArray.length * 0.4)\n            const relevantData = dataArray.slice(startFreq, endFreq)\n            for (let i = 0; i < relevantData.length; i++) {\n              sum += relevantData[i]\n            }\n            const average = (sum / relevantData.length / 255) * sensitivity\n            historyRef.current.push(Math.min(1, Math.max(0.05, average)))\n            lastActiveDataRef.current = [...historyRef.current]\n            if (historyRef.current.length > historySize) {\n              historyRef.current.shift()\n            }\n          }\n          needsRedrawRef.current = true\n        }\n      }\n      if (!needsRedrawRef.current && !active) {\n        rafId = requestAnimationFrame(animate)\n        return\n      }\n      needsRedrawRef.current = active\n      ctx.clearRect(0, 0, rect.width, rect.height)\n      const computedBarColor =\n        barColor ||\n        (() => {\n          const style = getComputedStyle(canvas)\n          const color = style.color\n          return color || \"#000\"\n        })()\n      const step = barWidth + barGap\n      const barCount = Math.floor(rect.width / step)\n      const centerY = rect.height / 2\n      if (mode === \"static\") {\n        const dataToRender = processing\n          ? staticBarsRef.current\n          : active\n            ? staticBarsRef.current\n            : staticBarsRef.current.length > 0\n              ? staticBarsRef.current\n              : []\n        for (let i = 0; i < barCount && i < dataToRender.length; i++) {\n          const value = dataToRender[i] || 0.1\n          const x = i * step\n          const bh = Math.max(baseBarHeight, value * rect.height * 0.8)\n          const y = centerY - bh / 2\n          ctx.fillStyle = computedBarColor\n          ctx.globalAlpha = 0.4 + value * 0.6\n          if (barRadius > 0) {\n            ctx.beginPath()\n            ctx.roundRect(x, y, barWidth, bh, barRadius)\n            ctx.fill()\n          } else {\n            ctx.fillRect(x, y, barWidth, bh)\n          }\n        }\n      } else {\n        for (let i = 0; i < barCount && i < historyRef.current.length; i++) {\n          const dataIndex = historyRef.current.length - 1 - i\n          const value = historyRef.current[dataIndex] || 0.1\n          const x = rect.width - (i + 1) * step\n          const bh = Math.max(baseBarHeight, value * rect.height * 0.8)\n          const y = centerY - bh / 2\n          ctx.fillStyle = computedBarColor\n          ctx.globalAlpha = 0.4 + value * 0.6\n          if (barRadius > 0) {\n            ctx.beginPath()\n            ctx.roundRect(x, y, barWidth, bh, barRadius)\n            ctx.fill()\n          } else {\n            ctx.fillRect(x, y, barWidth, bh)\n          }\n        }\n      }\n      if (fadeEdges && fadeWidth > 0 && rect.width > 0) {\n        if (!gradientCacheRef.current || lastWidthRef.current !== rect.width) {\n          const gradient = ctx.createLinearGradient(0, 0, rect.width, 0)\n          const fadePercent = Math.min(0.3, fadeWidth / rect.width)\n          gradient.addColorStop(0, \"rgba(255,255,255,1)\")\n          gradient.addColorStop(fadePercent, \"rgba(255,255,255,0)\")\n          gradient.addColorStop(1 - fadePercent, \"rgba(255,255,255,0)\")\n          gradient.addColorStop(1, \"rgba(255,255,255,1)\")\n          gradientCacheRef.current = gradient\n          lastWidthRef.current = rect.width\n        }\n        ctx.globalCompositeOperation = \"destination-out\"\n        ctx.fillStyle = gradientCacheRef.current\n        ctx.fillRect(0, 0, rect.width, rect.height)\n        ctx.globalCompositeOperation = \"source-over\"\n      }\n      ctx.globalAlpha = 1\n      rafId = requestAnimationFrame(animate)\n    }\n    rafId = requestAnimationFrame(animate)\n    return () => {\n      if (rafId) {\n        cancelAnimationFrame(rafId)\n      }\n    }\n  }, [\n    active,\n    processing,\n    sensitivity,\n    updateRate,\n    historySize,\n    barWidth,\n    baseBarHeight,\n    barGap,\n    barRadius,\n    barColor,\n    fadeEdges,\n    fadeWidth,\n    mode,\n  ])\n\n  return (\n    <div\n      className={cn(\"relative h-full w-full\", className)}\n      ref={containerRef}\n      style={{ height: heightStyle }}\n      aria-label={\n        active\n          ? \"Live audio waveform\"\n          : processing\n            ? \"Processing audio\"\n            : \"Audio waveform idle\"\n      }\n      role=\"img\"\n      {...props}\n    >\n      {!active && !processing && (\n        <div className=\"absolute top-1/2 right-0 left-0 -translate-y-1/2 border-t-2 border-dotted border-muted-foreground/20\" />\n      )}\n      <canvas\n        className=\"block h-full w-full\"\n        ref={canvasRef}\n        aria-hidden=\"true\"\n      />\n    </div>\n  )\n}\n\nexport function LiveWaveformCard() {\n  const [active, setActive] = useState(false)\n  const [processing, setProcessing] = useState(true)\n  const [mode, setMode] = useState<\"static\" | \"scrolling\">(\"static\")\n\n  const handleToggleActive = () => {\n    setActive(!active)\n    if (!active) {\n      setProcessing(false)\n    }\n  }\n\n  const handleToggleProcessing = () => {\n    setProcessing(!processing)\n    if (!processing) {\n      setActive(false)\n    }\n  }\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Live Audio Waveform</CardTitle>\n        <CardDescription>\n          Real-time microphone input visualization with audio reactivity\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <LiveWaveform\n          active={active}\n          processing={processing}\n          height={80}\n          barWidth={3}\n          barGap={2}\n          mode={mode}\n          fadeEdges={true}\n          barColor=\"gray\"\n          historySize={120}\n        />\n      </CardContent>\n      <CardFooter className=\"gap-2\">\n        <Button\n          size=\"sm\"\n          variant={active ? \"default\" : \"outline\"}\n          onClick={handleToggleActive}\n        >\n          {active ? \"Stop\" : \"Start\"} Listening\n        </Button>\n        <Button\n          size=\"sm\"\n          variant={processing ? \"default\" : \"outline\"}\n          onClick={handleToggleProcessing}\n        >\n          {processing ? \"Stop\" : \"Start\"} Processing\n        </Button>\n        <Button\n          size=\"sm\"\n          variant=\"outline\"\n          onClick={() => setMode(mode === \"static\" ? \"scrolling\" : \"static\")}\n        >\n          {mode === \"static\" ? \"Static\" : \"Scrolling\"}\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/no-team-members.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\n\nexport function NoTeamMembers() {\n  return (\n    <Card>\n      <CardContent>\n        <Empty className=\"h-56 border\">\n          <EmptyHeader>\n            <EmptyMedia>\n              <AvatarGroup className=\"grayscale\">\n                <Avatar size=\"lg\">\n                  <AvatarImage\n                    src=\"https://github.com/shadcn.png\"\n                    alt=\"@shadcn\"\n                  />\n                  <AvatarFallback>CN</AvatarFallback>\n                </Avatar>\n                <Avatar size=\"lg\">\n                  <AvatarImage\n                    src=\"https://github.com/maxleiter.png\"\n                    alt=\"@maxleiter\"\n                  />\n                  <AvatarFallback>LR</AvatarFallback>\n                </Avatar>\n                <Avatar size=\"lg\">\n                  <AvatarImage\n                    src=\"https://github.com/evilrabbit.png\"\n                    alt=\"@evilrabbit\"\n                  />\n                  <AvatarFallback>ER</AvatarFallback>\n                </Avatar>\n              </AvatarGroup>\n            </EmptyMedia>\n            <EmptyTitle>No Team Members</EmptyTitle>\n            <EmptyDescription>\n              Invite your team to collaborate on this project.\n            </EmptyDescription>\n          </EmptyHeader>\n          <EmptyContent>\n            <Button size=\"sm\">Invite Members</Button>\n          </EmptyContent>\n        </Empty>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/not-found.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { Kbd } from \"@/registry/bases/base/ui/kbd\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NotFound() {\n  return (\n    <Card>\n      <CardContent>\n        <Empty className=\"h-72\">\n          <EmptyHeader>\n            <EmptyTitle>404 - Not Found</EmptyTitle>\n            <EmptyDescription>\n              The page you&apos;re looking for doesn&apos;t exist. Try searching\n              for what you need below.\n            </EmptyDescription>\n          </EmptyHeader>\n          <EmptyContent>\n            <InputGroup className=\"w-3/4\">\n              <InputGroupInput placeholder=\"Try searching for pages...\" />\n              <InputGroupAddon>\n                <IconPlaceholder\n                  lucide=\"SearchIcon\"\n                  tabler=\"IconSearch\"\n                  hugeicons=\"Search01Icon\"\n                  phosphor=\"MagnifyingGlassIcon\"\n                  remixicon=\"RiSearchLine\"\n                />\n              </InputGroupAddon>\n              <InputGroupAddon align=\"inline-end\">\n                <Kbd>/</Kbd>\n              </InputGroupAddon>\n            </InputGroup>\n            <Button variant=\"link\">Go to homepage</Button>\n          </EmptyContent>\n        </Empty>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/observability-card.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function ObservabilityCard() {\n  return (\n    <Card className=\"relative w-full max-w-md overflow-hidden pt-0\">\n      <div className=\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\" />\n      <img\n        src=\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n        alt=\"Photo by mymind on Unsplash\"\n        title=\"Photo by mymind on Unsplash\"\n        className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\"\n      />\n      <CardHeader>\n        <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\n        <CardDescription>\n          Switch to the improved way to explore your data, with natural\n          language. Monitoring will no longer be available on the Pro plan in\n          November, 2025\n        </CardDescription>\n      </CardHeader>\n      <CardFooter>\n        <Button>\n          Create Query{\" \"}\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Badge variant=\"secondary\" className=\"ml-auto\">\n          Warning\n        </Badge>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/pie-chart-card.tsx",
    "content": "\"use client\"\n\nimport { Label, Pie, PieChart } from \"recharts\"\n\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\nimport { Progress } from \"@/registry/bases/base/ui/progress\"\n\nconst pieChartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 287, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n]\n\nconst pieChartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n} satisfies ChartConfig\n\nexport function PieChartCard() {\n  const totalVisitors = pieChartData.reduce(\n    (sum, item) => sum + item.visitors,\n    0\n  )\n  const topBrowser = pieChartData.reduce((max, item) =>\n    item.visitors > max.visitors ? item : max\n  )\n  const topBrowserShare = Math.round(\n    (topBrowser.visitors / totalVisitors) * 100\n  )\n  const topBrowserLabel =\n    pieChartConfig[topBrowser.browser as keyof typeof pieChartConfig]?.label ??\n    \"Top\"\n\n  return (\n    <Card>\n      <CardHeader className=\"pb-0\">\n        <CardTitle>Browser Share</CardTitle>\n        <CardDescription>January - June 2026</CardDescription>\n        <CardAction>\n          <Badge variant=\"outline\">{topBrowserLabel}</Badge>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"pt-0\">\n        <ChartContainer\n          config={pieChartConfig}\n          className=\"mx-auto aspect-square max-h-[190px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie\n              data={pieChartData}\n              dataKey=\"visitors\"\n              nameKey=\"browser\"\n              innerRadius={50}\n              strokeWidth={5}\n            >\n              <Label\n                content={({ viewBox }) => {\n                  if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                    return (\n                      <text\n                        x={viewBox.cx}\n                        y={viewBox.cy}\n                        textAnchor=\"middle\"\n                        dominantBaseline=\"middle\"\n                      >\n                        <tspan\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          className=\"fill-foreground text-2xl font-bold\"\n                        >\n                          {totalVisitors.toLocaleString()}\n                        </tspan>\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) + 20}\n                          className=\"fill-muted-foreground text-xs\"\n                        >\n                          Visitors\n                        </tspan>\n                      </text>\n                    )\n                  }\n                }}\n              />\n            </Pie>\n            <ChartLegend\n              content={<ChartLegendContent nameKey=\"browser\" />}\n              className=\"translate-y-2\"\n            />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-stretch gap-2\">\n        <div className=\"flex items-center text-xs\">\n          <span className=\"font-medium\">{topBrowserLabel}</span>\n          <span className=\"ml-auto text-muted-foreground tabular-nums\">\n            {topBrowserShare}%\n          </span>\n        </div>\n        <Progress\n          value={topBrowserShare}\n          className=\"**:data-[slot=progress-indicator]:bg-chart-3\"\n        />\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/report-bug.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\n\nexport function ReportBug() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Report Bug</CardTitle>\n        <CardDescription>Help us fix issues faster.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"bug-title\">Title</FieldLabel>\n            <Input\n              id=\"bug-title\"\n              placeholder=\"Brief description of the issue\"\n            />\n          </Field>\n          <div className=\"grid grid-cols-2 gap-3\">\n            <Field>\n              <FieldLabel htmlFor=\"bug-severity\">Severity</FieldLabel>\n              <Select\n                items={[\n                  { label: \"Critical\", value: \"critical\" },\n                  { label: \"High\", value: \"high\" },\n                  { label: \"Medium\", value: \"medium\" },\n                  { label: \"Low\", value: \"low\" },\n                ]}\n                defaultValue=\"medium\"\n              >\n                <SelectTrigger id=\"bug-severity\" className=\"w-full\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"critical\">Critical</SelectItem>\n                    <SelectItem value=\"high\">High</SelectItem>\n                    <SelectItem value=\"medium\">Medium</SelectItem>\n                    <SelectItem value=\"low\">Low</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"bug-component\">Component</FieldLabel>\n              <Select\n                items={[\n                  { label: \"Dashboard\", value: \"dashboard\" },\n                  { label: \"Auth\", value: \"auth\" },\n                  { label: \"API\", value: \"api\" },\n                  { label: \"Billing\", value: \"billing\" },\n                ]}\n                defaultValue=\"dashboard\"\n              >\n                <SelectTrigger id=\"bug-component\" className=\"w-full\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"dashboard\">Dashboard</SelectItem>\n                    <SelectItem value=\"auth\">Auth</SelectItem>\n                    <SelectItem value=\"api\">API</SelectItem>\n                    <SelectItem value=\"billing\">Billing</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"bug-steps\">Steps to reproduce</FieldLabel>\n            <Textarea\n              id=\"bug-steps\"\n              placeholder=\"1. Go to&#10;2. Click on&#10;3. Observe...\"\n              className=\"min-h-24 resize-none\"\n            />\n          </Field>\n        </FieldGroup>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\" className=\"justify-end\">\n          <Button variant=\"outline\">Attach File</Button>\n          <Button>Submit Bug</Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/shipping-address.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\n\nexport function ShippingAddress() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Shipping Address</CardTitle>\n        <CardDescription>Where should we deliver?</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"shipping-street\">Street address</FieldLabel>\n            <Input id=\"shipping-street\" placeholder=\"123 Main Street\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"shipping-apt\">Apt / Suite</FieldLabel>\n            <Input id=\"shipping-apt\" placeholder=\"Apt 4B\" />\n          </Field>\n          <FieldGroup className=\"grid grid-cols-2\">\n            <Field>\n              <FieldLabel htmlFor=\"shipping-city\">City</FieldLabel>\n              <Input id=\"shipping-city\" placeholder=\"San Francisco\" />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"shipping-state\">State</FieldLabel>\n              <Select\n                items={[\n                  { label: \"California\", value: \"CA\" },\n                  { label: \"New York\", value: \"NY\" },\n                  { label: \"Texas\", value: \"TX\" },\n                ]}\n                defaultValue=\"CA\"\n              >\n                <SelectTrigger id=\"shipping-state\" className=\"w-full\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"CA\">California</SelectItem>\n                    <SelectItem value=\"NY\">New York</SelectItem>\n                    <SelectItem value=\"TX\">Texas</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n          </FieldGroup>\n          <FieldGroup className=\"grid grid-cols-2\">\n            <Field>\n              <FieldLabel htmlFor=\"shipping-zip\">ZIP Code</FieldLabel>\n              <Input id=\"shipping-zip\" placeholder=\"94102\" />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"shipping-country\">Country</FieldLabel>\n              <Select\n                items={[\n                  { label: \"United States\", value: \"US\" },\n                  { label: \"Canada\", value: \"CA\" },\n                  { label: \"United Kingdom\", value: \"UK\" },\n                ]}\n                defaultValue=\"US\"\n              >\n                <SelectTrigger id=\"shipping-country\" className=\"w-full\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"US\">United States</SelectItem>\n                    <SelectItem value=\"CA\">Canada</SelectItem>\n                    <SelectItem value=\"UK\">United Kingdom</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n          </FieldGroup>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"shipping-save\" defaultChecked />\n            <FieldLabel htmlFor=\"shipping-save\" className=\"font-normal\">\n              Save as default address\n            </FieldLabel>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\" size=\"sm\">\n          Cancel\n        </Button>\n        <Button size=\"sm\" className=\"ml-auto\">\n          Save Address\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/shortcuts.tsx",
    "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  Item,\n  ItemActions,\n  ItemGroup,\n  ItemHeader,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport { Kbd } from \"@/registry/bases/base/ui/kbd\"\n\nconst shortcuts = [\n  { label: \"Search\", keys: [\"⌘\", \"K\"] },\n  { label: \"Quick Actions\", keys: [\"⌘\", \"J\"] },\n  { label: \"New File\", keys: [\"⌘\", \"N\"] },\n  { label: \"Save\", keys: [\"⌘\", \"S\"] },\n  { label: \"Toggle Sidebar\", keys: [\"⌘\", \"B\"] },\n] as const\n\nexport function Shortcuts() {\n  return (\n    <Card>\n      <CardContent>\n        <div className=\"flex flex-col gap-3\">\n          <div className=\"text-sm font-medium\">Shortcuts</div>\n          <ItemGroup className=\"gap-2 text-muted-foreground\" data-size=\"xs\">\n            {shortcuts.map(({ label, keys }, i) => (\n              <React.Fragment key={label}>\n                {i > 0 && <ItemSeparator />}\n                <Item\n                  variant=\"default\"\n                  size=\"xs\"\n                  className=\"border-0 px-0 py-0\"\n                >\n                  <ItemHeader>\n                    <ItemTitle className=\"font-normal\">{label}</ItemTitle>\n                    <ItemActions>\n                      <div className=\"flex gap-1\">\n                        {keys.map((key) => (\n                          <Kbd key={key}>{key}</Kbd>\n                        ))}\n                      </div>\n                    </ItemActions>\n                  </ItemHeader>\n                </Item>\n              </React.Fragment>\n            ))}\n          </ItemGroup>\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/skeleton-loading.tsx",
    "content": "\"use client\"\n\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport { Skeleton } from \"@/registry/bases/base/ui/skeleton\"\n\nexport function SkeletonLoading() {\n  return (\n    <Card>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-3\">\n          <Skeleton className=\"size-10 rounded-full\" />\n          <div className=\"flex flex-1 flex-col gap-2\">\n            <Skeleton className=\"h-4 w-3/4\" />\n            <Skeleton className=\"h-3 w-1/2\" />\n          </div>\n        </div>\n        <div className=\"flex flex-col gap-2\">\n          <Skeleton className=\"h-3 w-full\" />\n          <Skeleton className=\"h-3 w-full\" />\n          <Skeleton className=\"h-3 w-4/5\" />\n        </div>\n        <div className=\"flex gap-2\">\n          <Skeleton className=\"h-8 w-20\" />\n          <Skeleton className=\"h-8 w-20\" />\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/sleep-report.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart } from \"recharts\"\n\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\n\nconst sleepChartData = [\n  { hour: \"10pm\", deep: 0, light: 30, rem: 0 },\n  { hour: \"11pm\", deep: 20, light: 10, rem: 0 },\n  { hour: \"12am\", deep: 40, light: 0, rem: 10 },\n  { hour: \"1am\", deep: 30, light: 5, rem: 15 },\n  { hour: \"2am\", deep: 10, light: 20, rem: 30 },\n  { hour: \"3am\", deep: 25, light: 10, rem: 20 },\n  { hour: \"4am\", deep: 15, light: 25, rem: 10 },\n  { hour: \"5am\", deep: 5, light: 35, rem: 15 },\n  { hour: \"6am\", deep: 0, light: 20, rem: 25 },\n]\n\nconst sleepChartConfig = {\n  deep: {\n    label: \"Deep\",\n    color: \"var(--chart-1)\",\n  },\n  light: {\n    label: \"Light\",\n    color: \"var(--chart-2)\",\n  },\n  rem: {\n    label: \"REM\",\n    color: \"var(--chart-3)\",\n  },\n} satisfies ChartConfig\n\nexport function SleepReport() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Sleep Report</CardTitle>\n        <CardDescription>Last night · 7h 24m</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-3\">\n        <ChartContainer config={sleepChartConfig} className=\"h-32 w-full\">\n          <BarChart\n            accessibilityLayer\n            data={sleepChartData}\n            margin={{ left: 0, right: 0 }}\n            barSize={16}\n          >\n            <Bar\n              dataKey=\"deep\"\n              stackId=\"a\"\n              fill=\"var(--color-deep)\"\n              radius={0}\n            />\n            <Bar\n              dataKey=\"light\"\n              stackId=\"a\"\n              fill=\"var(--color-light)\"\n              radius={0}\n            />\n            <Bar\n              dataKey=\"rem\"\n              stackId=\"a\"\n              fill=\"var(--color-rem)\"\n              radius={[2, 2, 0, 0]}\n            />\n          </BarChart>\n        </ChartContainer>\n        <div className=\"grid grid-cols-4 gap-2\">\n          {[\n            { label: \"Deep\", value: \"2h 10m\" },\n            { label: \"Light\", value: \"3h 48m\" },\n            { label: \"REM\", value: \"1h 26m\" },\n            { label: \"Score\", value: \"84\" },\n          ].map((s) => (\n            <div key={s.label} className=\"text-center\">\n              <div className=\"text-sm font-medium tabular-nums\">{s.value}</div>\n              <div className=\"text-xs text-muted-foreground\">{s.label}</div>\n            </div>\n          ))}\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Badge variant=\"outline\">Good</Badge>\n        <Button variant=\"outline\" size=\"sm\" className=\"ml-auto\">\n          Details\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/style-overview.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport { STYLES } from \"@/registry/styles\"\nimport { FONTS } from \"@/app/(create)/lib/fonts\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function StyleOverview() {\n  const [params] = useDesignSystemSearchParams()\n\n  const currentFont = React.useMemo(\n    () => FONTS.find((font) => font.value === params.font),\n    [params.font]\n  )\n\n  const currentFontHeading = React.useMemo(\n    () => FONTS.find((font) => font.value === params.fontHeading),\n    [params.fontHeading]\n  )\n\n  const currentStyle = React.useMemo(\n    () => STYLES.find((style) => style.name === params.style),\n    [params.style]\n  )\n\n  return (\n    <Card>\n      <CardContent className=\"flex flex-col gap-6 style-lyra:gap-4 style-mira:gap-4\">\n        <div className=\"flex flex-col gap-1\">\n          <div className=\"cn-font-heading text-2xl font-medium style-lyra:text-lg style-mira:text-lg\">\n            {currentStyle?.title} -{\" \"}\n            {currentFontHeading?.name &&\n            currentFontHeading.name !== currentFont?.name\n              ? currentFontHeading.name\n              : currentFont?.name}\n          </div>\n          <div className=\"line-clamp-2 text-base text-muted-foreground style-lyra:text-sm style-mira:text-sm\">\n            Designers love packing quirky glyphs into test phrases. This is a\n            preview of the typography styles.\n          </div>\n        </div>\n        <div className=\"grid grid-cols-6 gap-3\">\n          {[\n            \"--background\",\n            \"--foreground\",\n            \"--primary\",\n            \"--secondary\",\n            \"--muted\",\n            \"--accent\",\n            \"--border\",\n            \"--chart-1\",\n            \"--chart-2\",\n            \"--chart-3\",\n            \"--chart-4\",\n            \"--chart-5\",\n          ].map((variant) => (\n            <div\n              key={variant}\n              className=\"flex flex-col flex-wrap items-center gap-2\"\n            >\n              <div\n                className=\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\"\n                style={\n                  {\n                    \"--color\": `var(${variant})`,\n                  } as React.CSSProperties\n                }\n              />\n              <div className=\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block style-lyra:max-w-10 style-mira:max-w-10\">\n                {variant}\n              </div>\n            </div>\n          ))}\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/typography-specimen.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/base/ui/card\"\nimport { FONTS } from \"@/app/(create)/lib/fonts\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function TypographySpecimen() {\n  const [params] = useDesignSystemSearchParams()\n\n  const currentFont = React.useMemo(\n    () => FONTS.find((font) => font.value === params.font),\n    [params.font]\n  )\n\n  const currentFontHeading = React.useMemo(\n    () => FONTS.find((font) => font.value === params.fontHeading),\n    [params.fontHeading]\n  )\n  const headingLabel =\n    currentFontHeading?.name && currentFontHeading.name !== currentFont?.name\n      ? currentFontHeading.name\n      : \"Inherit\"\n  const bodyLabel = currentFont?.name ?? \"Default\"\n\n  return (\n    <Card>\n      <CardContent className=\"flex flex-col gap-2\">\n        <div className=\"text-xs font-medium tracking-wide text-muted-foreground uppercase\">\n          {headingLabel} - {bodyLabel}\n        </div>\n        <p className=\"cn-font-heading text-2xl font-medium\">\n          Designing with rhythm and hierarchy.\n        </p>\n        <p className=\"text-sm leading-relaxed text-muted-foreground\">\n          A strong body style keeps long-form content readable and balances the\n          visual weight of headings.\n        </p>\n        <p className=\"text-sm leading-relaxed text-muted-foreground\">\n          Thoughtful spacing and cadence help paragraphs scan quickly without\n          feeling dense.\n        </p>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\" className=\"w-full\">\n          Sample Button\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/ui-elements.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/bases/base/ui/alert-dialog\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { ButtonGroup } from \"@/registry/bases/base/ui/button-group\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/bases/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/bases/base/ui/radio-group\"\nimport { Slider } from \"@/registry/bases/base/ui/slider\"\nimport { Switch } from \"@/registry/bases/base/ui/switch\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function UIElements() {\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\n  const handleSliderValueChange = React.useCallback(\n    (value: number | readonly number[]) => {\n      if (typeof value === \"number\") {\n        setSliderValue([value])\n      } else {\n        setSliderValue([...value])\n      }\n    },\n    []\n  )\n\n  return (\n    <Card className=\"w-full\">\n      <CardContent className=\"flex flex-col gap-6\">\n        <div className=\"flex flex-col gap-4\">\n          <div className=\"flex flex-wrap gap-2\">\n            <Button>Button</Button>\n            <Button variant=\"secondary\">Secondary</Button>\n            <Button variant=\"outline\">Outline</Button>\n            <Button variant=\"ghost\">Ghost</Button>\n          </div>\n          <Item variant=\"outline\">\n            <ItemContent>\n              <ItemTitle>Two-factor authentication</ItemTitle>\n              <ItemDescription className=\"text-pretty xl:hidden 2xl:block\">\n                Verify via email or phone number.\n              </ItemDescription>\n            </ItemContent>\n            <ItemActions className=\"hidden md:flex\">\n              <Button size=\"sm\" variant=\"secondary\">\n                Enable\n              </Button>\n            </ItemActions>\n          </Item>\n        </div>\n        <Slider\n          value={sliderValue}\n          onValueChange={handleSliderValueChange}\n          max={1000}\n          min={0}\n          step={10}\n          className=\"flex-1\"\n          aria-label=\"Slider\"\n        />\n        <FieldGroup>\n          <Field>\n            <InputGroup>\n              <InputGroupInput placeholder=\"Name\" />\n              <InputGroupAddon align=\"inline-end\">\n                <InputGroupText>\n                  <IconPlaceholder\n                    lucide=\"SearchIcon\"\n                    tabler=\"IconSearch\"\n                    hugeicons=\"Search01Icon\"\n                    phosphor=\"MagnifyingGlassIcon\"\n                    remixicon=\"RiSearchLine\"\n                  />\n                </InputGroupText>\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field className=\"flex-1\">\n            <Textarea placeholder=\"Message\" className=\"resize-none\" />\n          </Field>\n        </FieldGroup>\n        <div className=\"flex items-center gap-2\">\n          <div className=\"flex gap-2\">\n            <Badge>Badge</Badge>\n            <Badge variant=\"secondary\">Secondary</Badge>\n            <Badge variant=\"outline\">Outline</Badge>\n          </div>\n          <RadioGroup defaultValue=\"apple\" className=\"ml-auto flex w-fit gap-3\">\n            <RadioGroupItem value=\"apple\" />\n            <RadioGroupItem value=\"banana\" />\n          </RadioGroup>\n          <div className=\"flex gap-3\">\n            <Checkbox defaultChecked />\n            <Checkbox />\n          </div>\n        </div>\n        <div className=\"flex items-center gap-4\">\n          <AlertDialog>\n            <AlertDialogTrigger render={<Button variant=\"outline\" />}>\n              <span className=\"hidden md:block\">Alert Dialog</span>\n              <span className=\"block md:hidden\">Dialog</span>\n            </AlertDialogTrigger>\n            <AlertDialogContent size=\"sm\">\n              <AlertDialogHeader>\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n                <AlertDialogDescription>\n                  Do you want to allow the USB accessory to connect to this\n                  device and your data?\n                </AlertDialogDescription>\n              </AlertDialogHeader>\n              <AlertDialogFooter>\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n                <AlertDialogAction>Allow</AlertDialogAction>\n              </AlertDialogFooter>\n            </AlertDialogContent>\n          </AlertDialog>\n          <ButtonGroup>\n            <Button variant=\"outline\">Button Group</Button>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={<Button variant=\"outline\" size=\"icon\" />}\n              >\n                <IconPlaceholder\n                  lucide=\"ChevronUpIcon\"\n                  tabler=\"IconChevronUp\"\n                  hugeicons=\"ArrowUp01Icon\"\n                  phosphor=\"CaretUpIcon\"\n                  remixicon=\"RiArrowUpSLine\"\n                />\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\" side=\"top\" className=\"w-40\">\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\n                  <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\n                  <DropdownMenuItem>Mark as Read</DropdownMenuItem>\n                  <DropdownMenuItem>Block User</DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Conversation</DropdownMenuLabel>\n                  <DropdownMenuItem>Share Conversation</DropdownMenuItem>\n                  <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\n                  <DropdownMenuItem>Report Conversation</DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem variant=\"destructive\">\n                    Delete Conversation\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </ButtonGroup>\n          <Switch defaultChecked className=\"ml-auto\" />\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/usage-card.tsx",
    "content": "\"use client\"\n\nimport {\n  Card,\n  CardContent,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\n\n// Usage items with percentage and value.\nconst items = [\n  {\n    name: \"Edge Requests\",\n    value: \"$1.83K\",\n    percentage: 67.34,\n  },\n  {\n    name: \"Fast Data Transfer\",\n    percentage: 52.18,\n    value: \"$952.51\",\n  },\n  {\n    name: \"Monitoring data points\",\n    percentage: 89.42,\n    value: \"$901.20\",\n  },\n  {\n    name: \"Web Analytics Events\",\n    percentage: 45.67,\n    value: \"$603.71\",\n  },\n  {\n    name: \"ISR Writes\",\n    percentage: 26.23,\n    value: \"524.52K / 2M\",\n  },\n  {\n    name: \"Function Duration\",\n    percentage: 5.11,\n    value: \"5.11 GB Hrs / 1K GB Hrs\",\n  },\n]\n\n// Circular gauge SVG component for displaying a percentage.\nfunction CircularGauge({ percentage }: { percentage: number }) {\n  const normalizedPercentage = Math.min(Math.max(percentage, 0), 100)\n  const circumference = 2 * Math.PI * 42.5\n  const strokePercent = (normalizedPercentage / 100) * circumference\n\n  return (\n    <svg\n      aria-hidden=\"true\"\n      fill=\"none\"\n      height=\"16\"\n      width=\"16\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 100 100\"\n      className=\"-rotate-90\"\n    >\n      <circle\n        cx=\"50\"\n        cy=\"50\"\n        r=\"42.5\"\n        strokeWidth=\"12\"\n        strokeDashoffset=\"0\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        className=\"opacity-20\"\n        stroke=\"currentColor\"\n        style={{\n          strokeDasharray: `${circumference} ${circumference}`,\n        }}\n      />\n      <circle\n        cx=\"50\"\n        cy=\"50\"\n        r=\"42.5\"\n        strokeWidth=\"12\"\n        strokeDashoffset=\"0\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        stroke=\"currentColor\"\n        className=\"transition-all duration-300\"\n        style={{\n          strokeDasharray: `${strokePercent} ${circumference}`,\n        }}\n      />\n    </svg>\n  )\n}\n\nexport function UsageCard() {\n  return (\n    <Card className=\"w-full max-w-sm gap-4\">\n      <CardHeader>\n        <CardTitle className=\"px-1 text-sm\">\n          5 days remaining in cycle\n        </CardTitle>\n      </CardHeader>\n      <CardContent>\n        <ItemGroup className=\"gap-0\">\n          {items.map((item) => (\n            <Item\n              key={item.name}\n              size=\"xs\"\n              className=\"px-0 group-hover/item-group:bg-transparent\"\n              render={<a href=\"#\" />}\n            >\n              <ItemMedia variant=\"icon\" className=\"text-primary\">\n                <CircularGauge percentage={item.percentage} />\n              </ItemMedia>\n              <ItemContent className=\"inline-block truncate\">\n                <ItemTitle className=\"inline\">{item.name}</ItemTitle>\n              </ItemContent>\n              <ItemActions>\n                <span className=\"font-mono text-xs font-medium text-muted-foreground tabular-nums\">\n                  {item.value}\n                </span>\n              </ItemActions>\n            </Item>\n          ))}\n        </ItemGroup>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/visitors.tsx",
    "content": "\"use client\"\n\nimport { Area, AreaChart, XAxis } from \"recharts\"\n\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\n\nconst areaChartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst areaChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nconst latestVisitors = areaChartData[areaChartData.length - 1]?.desktop ?? 0\nconst previousVisitors =\n  areaChartData[areaChartData.length - 2]?.desktop ?? latestVisitors\nconst trendPercent =\n  previousVisitors === 0\n    ? 0\n    : Math.round(((latestVisitors - previousVisitors) / previousVisitors) * 100)\nconst trendPrefix = trendPercent > 0 ? \"+\" : \"\"\n\nexport function Visitors() {\n  return (\n    <Card className=\"pb-0\">\n      <CardHeader>\n        <CardTitle>Visitors</CardTitle>\n        <CardDescription>Last 6 months </CardDescription>\n        <CardAction>\n          <Badge variant={trendPercent >= 0 ? \"secondary\" : \"destructive\"}>\n            {trendPrefix}\n            {trendPercent}% vs last month\n          </Badge>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"px-0\">\n        <ChartContainer config={areaChartConfig} className=\"h-48 w-full\">\n          <AreaChart\n            accessibilityLayer\n            data={areaChartData}\n            margin={{ left: 0, right: 0, top: 6, bottom: 0 }}\n          >\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              hide\n              axisLine={false}\n              tickMargin={6}\n              tickFormatter={(value) => String(value).slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.15}\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/cards/weekly-fitness-summary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\n\nconst FITNESS_WEEKLY_LOAD = [\n  { day: \"M\", load: 84 },\n  { day: \"T\", load: 52 },\n  { day: \"W\", load: 73 },\n  { day: \"T\", load: 66 },\n  { day: \"F\", load: 91 },\n  { day: \"S\", load: 48 },\n  { day: \"S\", load: 61 },\n]\n\nexport function WeeklyFitnessSummary() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Weekly Fitness Summary</CardTitle>\n        <CardDescription>Calories and workout load by day</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"grid grid-cols-7 gap-1.5\">\n          {FITNESS_WEEKLY_LOAD.map((day, index) => (\n            <div\n              key={`${day.day}-${index}`}\n              className=\"rounded-md p-1.5 text-center ring ring-border\"\n            >\n              <div className=\"text-sm text-muted-foreground\">{day.day}</div>\n              <div className=\"relative mt-1 h-16 overflow-hidden rounded-sm bg-muted\">\n                <div\n                  className=\"absolute inset-x-0 bottom-0 rounded-sm bg-chart-3\"\n                  style={\n                    {\n                      height: `${day.load}%`,\n                    } as React.CSSProperties\n                  }\n                />\n              </div>\n            </div>\n          ))}\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">View details</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/preview/index.tsx",
    "content": "\"use client\"\n\nimport { ActivateAgentDialog } from \"@/registry/bases/base/blocks/preview/cards/activate-agent-dialog\"\nimport { AnalyticsCard } from \"@/registry/bases/base/blocks/preview/cards/analytics-card\"\nimport { AnomalyAlert } from \"@/registry/bases/base/blocks/preview/cards/anomaly-alert\"\nimport { BarChartCard } from \"@/registry/bases/base/blocks/preview/cards/bar-chart-card\"\nimport { BookAppointment } from \"@/registry/bases/base/blocks/preview/cards/book-appointment\"\nimport { CodespacesCard } from \"@/registry/bases/base/blocks/preview/cards/codespaces-card\"\nimport { ContributionsActivity } from \"@/registry/bases/base/blocks/preview/cards/contributions-activity\"\nimport { Contributors } from \"@/registry/bases/base/blocks/preview/cards/contributors\"\nimport { EnvironmentVariables } from \"@/registry/bases/base/blocks/preview/cards/environment-variables\"\nimport { FeedbackForm } from \"@/registry/bases/base/blocks/preview/cards/feedback-form\"\nimport { FileUpload } from \"@/registry/bases/base/blocks/preview/cards/file-upload\"\nimport { GithubProfile } from \"@/registry/bases/base/blocks/preview/cards/github-profile\"\nimport { IconPreviewGrid } from \"@/registry/bases/base/blocks/preview/cards/icon-preview-grid\"\nimport { InviteTeam } from \"@/registry/bases/base/blocks/preview/cards/invite-team\"\nimport { Invoice } from \"@/registry/bases/base/blocks/preview/cards/invoice\"\nimport { LiveWaveformCard } from \"@/registry/bases/base/blocks/preview/cards/live-waveform\"\nimport { NoTeamMembers } from \"@/registry/bases/base/blocks/preview/cards/no-team-members\"\nimport { NotFound } from \"@/registry/bases/base/blocks/preview/cards/not-found\"\nimport { ObservabilityCard } from \"@/registry/bases/base/blocks/preview/cards/observability-card\"\nimport { PieChartCard } from \"@/registry/bases/base/blocks/preview/cards/pie-chart-card\"\nimport { ReportBug } from \"@/registry/bases/base/blocks/preview/cards/report-bug\"\nimport { ShippingAddress } from \"@/registry/bases/base/blocks/preview/cards/shipping-address\"\nimport { Shortcuts } from \"@/registry/bases/base/blocks/preview/cards/shortcuts\"\nimport { SkeletonLoading } from \"@/registry/bases/base/blocks/preview/cards/skeleton-loading\"\nimport { SleepReport } from \"@/registry/bases/base/blocks/preview/cards/sleep-report\"\nimport { StyleOverview } from \"@/registry/bases/base/blocks/preview/cards/style-overview\"\nimport { TypographySpecimen } from \"@/registry/bases/base/blocks/preview/cards/typography-specimen\"\nimport { UIElements } from \"@/registry/bases/base/blocks/preview/cards/ui-elements\"\nimport { UsageCard } from \"@/registry/bases/base/blocks/preview/cards/usage-card\"\nimport { Visitors } from \"@/registry/bases/base/blocks/preview/cards/visitors\"\nimport { WeeklyFitnessSummary } from \"@/registry/bases/base/blocks/preview/cards/weekly-fitness-summary\"\n\nexport default function PreviewExample() {\n  return (\n    <div className=\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\">\n      <div className=\"flex w-full min-w-max justify-center\">\n        <div\n          className=\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\"\n          data-slot=\"capture-target\"\n        >\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <StyleOverview />\n            <TypographySpecimen />\n            <div className=\"md:hidden\">\n              <UIElements />\n            </div>\n            <CodespacesCard />\n            <Invoice />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <IconPreviewGrid />\n            <div className=\"hidden w-full md:flex\">\n              <UIElements />\n            </div>\n            <ObservabilityCard />\n            <ShippingAddress />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <EnvironmentVariables />\n            <BarChartCard />\n            <InviteTeam />\n            <ActivateAgentDialog />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <SkeletonLoading />\n            <PieChartCard />\n            <NoTeamMembers />\n            <ReportBug />\n            <Contributors />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <FeedbackForm />\n            <BookAppointment />\n            <SleepReport />\n            <GithubProfile />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <WeeklyFitnessSummary />\n            <FileUpload />\n            <AnalyticsCard />\n            <UsageCard />\n            <Shortcuts />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <AnomalyAlert />\n            <LiveWaveformCard />\n            <Visitors />\n            <ContributionsActivity />\n            <NotFound />\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-01/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\n\nimport { SearchForm } from \"@/registry/bases/base/blocks/sidebar-01/components/search-form\"\nimport { VersionSwitcher } from \"@/registry/bases/base/blocks/sidebar-01/components/version-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  versions: [\"1.0.1\", \"1.1.0-alpha\", \"2.0.0-beta1\"],\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <VersionSwitcher\n          versions={data.versions}\n          defaultVersion={data.versions[0]}\n        />\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent>\n        {data.navMain.map((item) => (\n          <SidebarGroup key={item.title}>\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {item.items.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton\n                      isActive={item.isActive}\n                      render={<a href={item.url} />}\n                    >\n                      {item.title}\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        ))}\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-01/components/search-form.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <IconPlaceholder\n            lucide=\"SearchIcon\"\n            tabler=\"IconSearch\"\n            hugeicons=\"SearchIcon\"\n            phosphor=\"MagnifyingGlassIcon\"\n            remixicon=\"RiSearchLine\"\n            className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n          />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-01/components/version-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function VersionSwitcher({\n  versions,\n  defaultVersion,\n}: {\n  versions: string[]\n  defaultVersion: string\n}) {\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton\n                size=\"lg\"\n                className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n              />\n            }\n          >\n            <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n              <IconPlaceholder\n                lucide=\"GalleryVerticalEndIcon\"\n                tabler=\"IconLayoutRows\"\n                hugeicons=\"LayoutBottomIcon\"\n                phosphor=\"RowsIcon\"\n                remixicon=\"RiGalleryLine\"\n                className=\"size-4\"\n              />\n            </div>\n            <div className=\"flex flex-col gap-0.5 leading-none\">\n              <span className=\"font-medium\">Documentation</span>\n              <span className=\"\">v{selectedVersion}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"start\">\n            {versions.map((version) => (\n              <DropdownMenuItem\n                key={version}\n                onSelect={() => setSelectedVersion(version)}\n              >\n                v{version}{\" \"}\n                {version === selectedVersion && (\n                  <IconPlaceholder\n                    lucide=\"CheckIcon\"\n                    tabler=\"IconCheck\"\n                    hugeicons=\"Tick02Icon\"\n                    phosphor=\"CheckIcon\"\n                    remixicon=\"RiCheckLine\"\n                    className=\"ml-auto\"\n                  />\n                )}\n              </DropdownMenuItem>\n            ))}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-01/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-01/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-02/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { SearchForm } from \"@/registry/bases/base/blocks/sidebar-02/components/search-form\"\nimport { VersionSwitcher } from \"@/registry/bases/base/blocks/sidebar-02/components/version-switcher\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  versions: [\"1.0.1\", \"1.1.0-alpha\", \"2.0.0-beta1\"],\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <VersionSwitcher\n          versions={data.versions}\n          defaultVersion={data.versions[0]}\n        />\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent className=\"gap-0\">\n        {/* We create a collapsible SidebarGroup for each parent. */}\n        {data.navMain.map((item) => (\n          <Collapsible\n            key={item.title}\n            title={item.title}\n            defaultOpen\n            className=\"group/collapsible\"\n          >\n            <SidebarGroup>\n              <SidebarGroupLabel\n                className=\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n                render={<CollapsibleTrigger />}\n              >\n                {item.title}{\" \"}\n                <IconPlaceholder\n                  lucide=\"ChevronRightIcon\"\n                  tabler=\"IconChevronRight\"\n                  hugeicons=\"ArrowRight01Icon\"\n                  phosphor=\"CaretRightIcon\"\n                  remixicon=\"RiArrowRightSLine\"\n                  className=\"ml-auto transition-transform group-data-open/collapsible:rotate-90\"\n                />\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {item.items.map((item) => (\n                      <SidebarMenuItem key={item.title}>\n                        <SidebarMenuButton\n                          isActive={item.isActive}\n                          render={<a href={item.url} />}\n                        >\n                          {item.title}\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </SidebarGroup>\n          </Collapsible>\n        ))}\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-02/components/search-form.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <IconPlaceholder\n            lucide=\"SearchIcon\"\n            tabler=\"IconSearch\"\n            hugeicons=\"SearchIcon\"\n            phosphor=\"MagnifyingGlassIcon\"\n            remixicon=\"RiSearchLine\"\n            className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n          />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-02/components/version-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function VersionSwitcher({\n  versions,\n  defaultVersion,\n}: {\n  versions: string[]\n  defaultVersion: string\n}) {\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton\n                size=\"lg\"\n                className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n              />\n            }\n          >\n            <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n              <IconPlaceholder\n                lucide=\"GalleryVerticalEndIcon\"\n                tabler=\"IconLayoutRows\"\n                hugeicons=\"LayoutBottomIcon\"\n                phosphor=\"RowsIcon\"\n                remixicon=\"RiGalleryLine\"\n                className=\"size-4\"\n              />\n            </div>\n            <div className=\"flex flex-col gap-0.5 leading-none\">\n              <span className=\"font-medium\">Documentation</span>\n              <span className=\"\">v{selectedVersion}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"start\">\n            {versions.map((version) => (\n              <DropdownMenuItem\n                key={version}\n                onSelect={() => setSelectedVersion(version)}\n              >\n                v{version}{\" \"}\n                {version === selectedVersion && (\n                  <IconPlaceholder\n                    lucide=\"CheckIcon\"\n                    tabler=\"IconCheck\"\n                    hugeicons=\"Tick02Icon\"\n                    phosphor=\"CheckIcon\"\n                    remixicon=\"RiCheckLine\"\n                    className=\"ml-auto\"\n                  />\n                )}\n              </DropdownMenuItem>\n            ))}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-02/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-02/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          {Array.from({ length: 24 }).map((_, index) => (\n            <div\n              key={index}\n              className=\"aspect-video h-12 w-full rounded-lg bg-muted/50\"\n            />\n          ))}\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-03/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" render={<a href=\"#\" />}>\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex flex-col gap-0.5 leading-none\">\n                <span className=\"font-medium\">Documentation</span>\n                <span className=\"\">v1.0.0</span>\n              </div>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu>\n            {data.navMain.map((item) => (\n              <SidebarMenuItem key={item.title}>\n                <SidebarMenuButton\n                  render={<a href={item.url} className=\"font-medium\" />}\n                >\n                  {item.title}\n                </SidebarMenuButton>\n                {item.items?.length ? (\n                  <SidebarMenuSub>\n                    {item.items.map((item) => (\n                      <SidebarMenuSubItem key={item.title}>\n                        <SidebarMenuSubButton\n                          isActive={item.isActive}\n                          render={<a href={item.url} />}\n                        >\n                          {item.title}\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                ) : null}\n              </SidebarMenuItem>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-03/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-03/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b\">\n          <div className=\"flex items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-04/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar variant=\"floating\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" render={<a href=\"#\" />}>\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex flex-col gap-0.5 leading-none\">\n                <span className=\"font-medium\">Documentation</span>\n                <span className=\"\">v1.0.0</span>\n              </div>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu className=\"gap-2\">\n            {data.navMain.map((item) => (\n              <SidebarMenuItem key={item.title}>\n                <SidebarMenuButton\n                  render={<a href={item.url} className=\"font-medium\" />}\n                >\n                  {item.title}\n                </SidebarMenuButton>\n                {item.items?.length ? (\n                  <SidebarMenuSub className=\"ml-0 border-l-0 px-1.5\">\n                    {item.items.map((item) => (\n                      <SidebarMenuSubItem key={item.title}>\n                        <SidebarMenuSubButton\n                          isActive={item.isActive}\n                          render={<a href={item.url} />}\n                        >\n                          {item.title}\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                ) : null}\n              </SidebarMenuItem>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-04/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-04/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"19rem\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-05/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { SearchForm } from \"@/registry/bases/base/blocks/sidebar-05/components/search-form\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" render={<a href=\"#\" />}>\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex flex-col gap-0.5 leading-none\">\n                <span className=\"font-medium\">Documentation</span>\n                <span className=\"\">v1.0.0</span>\n              </div>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu>\n            {data.navMain.map((item, index) => (\n              <Collapsible\n                key={item.title}\n                defaultOpen={index === 1}\n                className=\"group/collapsible\"\n              >\n                <SidebarMenuItem>\n                  <SidebarMenuButton render={<CollapsibleTrigger />}>\n                    {item.title}{\" \"}\n                    <IconPlaceholder\n                      lucide=\"PlusIcon\"\n                      tabler=\"IconPlus\"\n                      hugeicons=\"PlusSignIcon\"\n                      phosphor=\"PlusIcon\"\n                      remixicon=\"RiAddLine\"\n                      className=\"ml-auto group-aria-expanded/menu-button:hidden\"\n                    />\n                    <IconPlaceholder\n                      lucide=\"MinusIcon\"\n                      tabler=\"IconMinus\"\n                      hugeicons=\"MinusSignIcon\"\n                      phosphor=\"MinusIcon\"\n                      remixicon=\"RiSubtractLine\"\n                      className=\"ml-auto hidden group-aria-expanded/menu-button:block\"\n                    />\n                  </SidebarMenuButton>\n                  {item.items?.length ? (\n                    <CollapsibleContent>\n                      <SidebarMenuSub>\n                        {item.items.map((item) => (\n                          <SidebarMenuSubItem key={item.title}>\n                            <SidebarMenuSubButton\n                              isActive={item.isActive}\n                              render={<a href={item.url} />}\n                            >\n                              {item.title}\n                            </SidebarMenuSubButton>\n                          </SidebarMenuSubItem>\n                        ))}\n                      </SidebarMenuSub>\n                    </CollapsibleContent>\n                  ) : null}\n                </SidebarMenuItem>\n              </Collapsible>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-05/components/search-form.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <IconPlaceholder\n            lucide=\"SearchIcon\"\n            tabler=\"IconSearch\"\n            hugeicons=\"SearchIcon\"\n            phosphor=\"MagnifyingGlassIcon\"\n            remixicon=\"RiSearchLine\"\n            className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n          />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-05/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-05/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-06/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavMain } from \"@/registry/bases/base/blocks/sidebar-06/components/nav-main\"\nimport { SidebarOptInForm } from \"@/registry/bases/base/blocks/sidebar-06/components/sidebar-opt-in-form\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" render={<a href=\"#\" />}>\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex flex-col gap-0.5 leading-none\">\n                <span className=\"font-medium\">Documentation</span>\n                <span className=\"\">v1.0.0</span>\n              </div>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n      </SidebarContent>\n      <SidebarFooter>\n        <div className=\"p-1\">\n          <SidebarOptInForm />\n        </div>\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-06/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: React.ReactNode\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarGroup>\n      <SidebarMenu>\n        {items.map((item) => (\n          <DropdownMenu key={item.title}>\n            <SidebarMenuItem>\n              <DropdownMenuTrigger\n                render={\n                  <SidebarMenuButton className=\"aria-expanded:bg-muted\" />\n                }\n              >\n                {item.title}{\" \"}\n                <IconPlaceholder\n                  lucide=\"MoreHorizontalIcon\"\n                  tabler=\"IconDots\"\n                  hugeicons=\"MoreHorizontalCircle01Icon\"\n                  phosphor=\"DotsThreeOutlineIcon\"\n                  remixicon=\"RiMoreLine\"\n                  className=\"ml-auto\"\n                />\n              </DropdownMenuTrigger>\n              {item.items?.length ? (\n                <DropdownMenuContent\n                  side={isMobile ? \"bottom\" : \"right\"}\n                  align={isMobile ? \"end\" : \"start\"}\n                  className=\"min-w-56 rounded-lg\"\n                >\n                  {item.items.map((item) => (\n                    <DropdownMenuItem\n                      key={item.title}\n                      render={<a href={item.url} />}\n                    >\n                      {item.title}\n                    </DropdownMenuItem>\n                  ))}\n                </DropdownMenuContent>\n              ) : null}\n            </SidebarMenuItem>\n          </DropdownMenu>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-06/components/sidebar-opt-in-form.tsx",
    "content": "import { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { SidebarInput } from \"@/registry/bases/base/ui/sidebar\"\n\nexport function SidebarOptInForm() {\n  return (\n    <Card className=\"gap-2 py-4 shadow-none\">\n      <CardHeader className=\"px-4\">\n        <CardTitle className=\"text-sm\">Subscribe to our newsletter</CardTitle>\n        <CardDescription>\n          Opt-in to receive updates and news about the sidebar.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"px-4\">\n        <form>\n          <div className=\"grid gap-2.5\">\n            <SidebarInput type=\"email\" placeholder=\"Email\" />\n            <Button className=\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\">\n              Subscribe\n            </Button>\n          </div>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-06/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-06/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-07/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavMain } from \"@/registry/bases/base/blocks/sidebar-07/components/nav-main\"\nimport { NavProjects } from \"@/registry/bases/base/blocks/sidebar-07/components/nav-projects\"\nimport { NavUser } from \"@/registry/bases/base/blocks/sidebar-07/components/nav-user\"\nimport { TeamSwitcher } from \"@/registry/bases/base/blocks/sidebar-07/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"GalleryVerticalEndIcon\"\n          tabler=\"IconLayoutRows\"\n          hugeicons=\"LayoutBottomIcon\"\n          phosphor=\"RowsIcon\"\n          remixicon=\"RiGalleryLine\"\n        />\n      ),\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"AudioLinesIcon\"\n          tabler=\"IconWaveSine\"\n          hugeicons=\"AudioWave01Icon\"\n          phosphor=\"WaveformIcon\"\n          remixicon=\"RiPulseLine\"\n        />\n      ),\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"TerminalSquareIcon\"\n          tabler=\"IconTerminal2\"\n          hugeicons=\"ComputerTerminalIcon\"\n          phosphor=\"TerminalIcon\"\n          remixicon=\"RiTerminalBoxLine\"\n        />\n      ),\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BotIcon\"\n          tabler=\"IconRobot\"\n          hugeicons=\"RoboticIcon\"\n          phosphor=\"RobotIcon\"\n          remixicon=\"RiRobotLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BookOpenIcon\"\n          tabler=\"IconBook\"\n          hugeicons=\"BookOpen02Icon\"\n          phosphor=\"BookOpenIcon\"\n          remixicon=\"RiBookOpenLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FrameIcon\"\n          tabler=\"IconFrame\"\n          hugeicons=\"CropIcon\"\n          phosphor=\"CropIcon\"\n          remixicon=\"RiCropLine\"\n        />\n      ),\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"PieChartIcon\"\n          tabler=\"IconChartPie\"\n          hugeicons=\"PieChartIcon\"\n          phosphor=\"ChartPieIcon\"\n          remixicon=\"RiPieChartLine\"\n        />\n      ),\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MapIcon\"\n          tabler=\"IconMap\"\n          hugeicons=\"MapsIcon\"\n          phosphor=\"MapTrifoldIcon\"\n          remixicon=\"RiMapLine\"\n        />\n      ),\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar collapsible=\"icon\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-07/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: React.ReactNode\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible\n            key={item.title}\n            defaultOpen={item.isActive}\n            className=\"group/collapsible\"\n            render={<SidebarMenuItem />}\n          >\n            <CollapsibleTrigger\n              render={<SidebarMenuButton tooltip={item.title} />}\n            >\n              {item.icon}\n              <span>{item.title}</span>\n              <IconPlaceholder\n                lucide=\"ChevronRightIcon\"\n                tabler=\"IconChevronRight\"\n                hugeicons=\"ArrowRight01Icon\"\n                phosphor=\"CaretRightIcon\"\n                remixicon=\"RiArrowRightSLine\"\n                className=\"ml-auto transition-transform duration-200 group-data-open/collapsible:rotate-90\"\n              />\n            </CollapsibleTrigger>\n            <CollapsibleContent>\n              <SidebarMenuSub>\n                {item.items?.map((subItem) => (\n                  <SidebarMenuSubItem key={subItem.title}>\n                    <SidebarMenuSubButton render={<a href={subItem.url} />}>\n                      <span>{subItem.title}</span>\n                    </SidebarMenuSubButton>\n                  </SidebarMenuSubItem>\n                ))}\n              </SidebarMenuSub>\n            </CollapsibleContent>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-07/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: React.ReactNode\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton render={<a href={item.url} />}>\n              {item.icon}\n              <span>{item.name}</span>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <SidebarMenuAction\n                    showOnHover\n                    className=\"aria-expanded:bg-muted\"\n                  />\n                }\n              >\n                <IconPlaceholder\n                  lucide=\"MoreHorizontalIcon\"\n                  tabler=\"IconDots\"\n                  hugeicons=\"MoreHorizontalCircle01Icon\"\n                  phosphor=\"DotsThreeOutlineIcon\"\n                  remixicon=\"RiMoreLine\"\n                />\n                <span className=\"sr-only\">More</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"FolderIcon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ArrowRightIcon\"\n                    tabler=\"IconArrowForward\"\n                    hugeicons=\"ArrowRightIcon\"\n                    phosphor=\"ShareFatIcon\"\n                    remixicon=\"RiShareForwardLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n              className=\"text-sidebar-foreground/70\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-07/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton size=\"lg\" className=\"aria-expanded:bg-muted\" />\n            }\n          >\n            <Avatar>\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs\">{user.email}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto size-4\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"p-0 font-normal\">\n                <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                  <Avatar>\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback>CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs\">{user.email}</span>\n                  </div>\n                </div>\n              </DropdownMenuLabel>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-07/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ReactNode\n    plan: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n  if (!activeTeam) {\n    return null\n  }\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton\n                size=\"lg\"\n                className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n              />\n            }\n          >\n            <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n              {activeTeam.logo}\n            </div>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{activeTeam.name}</span>\n              <span className=\"truncate text-xs\">{activeTeam.plan}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"min-w-56 rounded-lg\"\n            align=\"start\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                Teams\n              </DropdownMenuLabel>\n              {teams.map((team, index) => (\n                <DropdownMenuItem\n                  key={team.name}\n                  onClick={() => setActiveTeam(team)}\n                  className=\"gap-2 p-2\"\n                >\n                  <div className=\"flex size-6 items-center justify-center rounded-md border\">\n                    {team.logo}\n                  </div>\n                  {team.name}\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n                </DropdownMenuItem>\n              ))}\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem className=\"gap-2 p-2\">\n                <div className=\"flex size-6 items-center justify-center rounded-md border bg-transparent\">\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"font-medium text-muted-foreground\">\n                  Add team\n                </div>\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-07/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-07/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-08/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavMain } from \"@/registry/bases/base/blocks/sidebar-08/components/nav-main\"\nimport { NavProjects } from \"@/registry/bases/base/blocks/sidebar-08/components/nav-projects\"\nimport { NavSecondary } from \"@/registry/bases/base/blocks/sidebar-08/components/nav-secondary\"\nimport { NavUser } from \"@/registry/bases/base/blocks/sidebar-08/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"TerminalSquareIcon\"\n          tabler=\"IconTerminal2\"\n          hugeicons=\"ComputerTerminalIcon\"\n          phosphor=\"TerminalIcon\"\n          remixicon=\"RiTerminalBoxLine\"\n        />\n      ),\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BotIcon\"\n          tabler=\"IconRobot\"\n          hugeicons=\"RoboticIcon\"\n          phosphor=\"RobotIcon\"\n          remixicon=\"RiRobotLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BookOpenIcon\"\n          tabler=\"IconBook\"\n          hugeicons=\"BookOpen02Icon\"\n          phosphor=\"BookOpenIcon\"\n          remixicon=\"RiBookOpenLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Support\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LifeBuoyIcon\"\n          tabler=\"IconLifebuoy\"\n          hugeicons=\"ChartRingIcon\"\n          phosphor=\"LifebuoyIcon\"\n          remixicon=\"RiLifebuoyLine\"\n        />\n      ),\n    },\n    {\n      title: \"Feedback\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SendIcon\"\n          tabler=\"IconSend\"\n          hugeicons=\"SentIcon\"\n          phosphor=\"PaperPlaneTiltIcon\"\n          remixicon=\"RiSendPlaneLine\"\n        />\n      ),\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FrameIcon\"\n          tabler=\"IconFrame\"\n          hugeicons=\"CropIcon\"\n          phosphor=\"CropIcon\"\n          remixicon=\"RiCropLine\"\n        />\n      ),\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"PieChartIcon\"\n          tabler=\"IconChartPie\"\n          hugeicons=\"PieChartIcon\"\n          phosphor=\"ChartPieIcon\"\n          remixicon=\"RiPieChartLine\"\n        />\n      ),\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MapIcon\"\n          tabler=\"IconMap\"\n          hugeicons=\"MapsIcon\"\n          phosphor=\"MapTrifoldIcon\"\n          remixicon=\"RiMapLine\"\n        />\n      ),\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar variant=\"inset\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" render={<a href=\"#\" />}>\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <IconPlaceholder\n                  lucide=\"TerminalIcon\"\n                  tabler=\"IconCommand\"\n                  hugeicons=\"CommandIcon\"\n                  phosphor=\"CommandIcon\"\n                  remixicon=\"RiCommandLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">Acme Inc</span>\n                <span className=\"truncate text-xs\">Enterprise</span>\n              </div>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-08/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible\n            key={item.title}\n            defaultOpen={item.isActive}\n            render={<SidebarMenuItem />}\n          >\n            <SidebarMenuButton\n              tooltip={item.title}\n              render={<a href={item.url} />}\n            >\n              {item.icon}\n              <span>{item.title}</span>\n            </SidebarMenuButton>\n            {item.items?.length ? (\n              <>\n                <CollapsibleTrigger\n                  render={\n                    <SidebarMenuAction className=\"aria-expanded:rotate-90\" />\n                  }\n                >\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                  />\n                  <span className=\"sr-only\">Toggle</span>\n                </CollapsibleTrigger>\n                <CollapsibleContent>\n                  <SidebarMenuSub>\n                    {item.items?.map((subItem) => (\n                      <SidebarMenuSubItem key={subItem.title}>\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\n                          <span>{subItem.title}</span>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                </CollapsibleContent>\n              </>\n            ) : null}\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-08/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: React.ReactNode\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton render={<a href={item.url} />}>\n              {item.icon}\n              <span>{item.name}</span>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <SidebarMenuAction\n                    showOnHover\n                    className=\"aria-expanded:bg-muted\"\n                  />\n                }\n              >\n                <IconPlaceholder\n                  lucide=\"MoreHorizontalIcon\"\n                  tabler=\"IconDots\"\n                  hugeicons=\"MoreHorizontalCircle01Icon\"\n                  phosphor=\"DotsThreeOutlineIcon\"\n                  remixicon=\"RiMoreLine\"\n                />\n                <span className=\"sr-only\">More</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"FolderIcon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare2\"\n                    hugeicons=\"Share03Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton>\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-08/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton size=\"sm\" render={<a href={item.url} />}>\n                {item.icon}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-08/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton size=\"lg\" className=\"aria-expanded:bg-muted\" />\n            }\n          >\n            <Avatar>\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs\">{user.email}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto size-4\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"p-0 font-normal\">\n                <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                  <Avatar>\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback>CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs\">{user.email}</span>\n                  </div>\n                </div>\n              </DropdownMenuLabel>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-08/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-08/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-09/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavUser } from \"@/registry/bases/base/blocks/sidebar-09/components/nav-user\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarHeader,\n  SidebarInput,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { Switch } from \"@/registry/bases/base/ui/switch\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"InboxIcon\"\n          tabler=\"IconInbox\"\n          hugeicons=\"InboxIcon\"\n          phosphor=\"TrayIcon\"\n          remixicon=\"RiInboxLine\"\n        />\n      ),\n      isActive: true,\n    },\n    {\n      title: \"Drafts\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileIcon\"\n          tabler=\"IconFile\"\n          hugeicons=\"FileIcon\"\n          phosphor=\"FileIcon\"\n          remixicon=\"RiFileLine\"\n        />\n      ),\n      isActive: false,\n    },\n    {\n      title: \"Sent\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SendIcon\"\n          tabler=\"IconSend\"\n          hugeicons=\"SentIcon\"\n          phosphor=\"PaperPlaneTiltIcon\"\n          remixicon=\"RiSendPlaneLine\"\n        />\n      ),\n      isActive: false,\n    },\n    {\n      title: \"Junk\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ArchiveXIcon\"\n          tabler=\"IconArchiveOff\"\n          hugeicons=\"ArchiveIcon\"\n          phosphor=\"ArchiveIcon\"\n          remixicon=\"RiArchiveLine\"\n        />\n      ),\n      isActive: false,\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Trash2Icon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"Delete02Icon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n      isActive: false,\n    },\n  ],\n  mails: [\n    {\n      name: \"William Smith\",\n      email: \"williamsmith@example.com\",\n      subject: \"Meeting Tomorrow\",\n      date: \"09:34 AM\",\n      teaser:\n        \"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\nPlease come prepared with your project updates.\",\n    },\n    {\n      name: \"Alice Smith\",\n      email: \"alicesmith@example.com\",\n      subject: \"Re: Project Update\",\n      date: \"Yesterday\",\n      teaser:\n        \"Thanks for the update. The progress looks great so far.\\nLet's schedule a call to discuss the next steps.\",\n    },\n    {\n      name: \"Bob Johnson\",\n      email: \"bobjohnson@example.com\",\n      subject: \"Weekend Plans\",\n      date: \"2 days ago\",\n      teaser:\n        \"Hey everyone! I'm thinking of organizing a team outing this weekend.\\nWould you be interested in a hiking trip or a beach day?\",\n    },\n    {\n      name: \"Emily Davis\",\n      email: \"emilydavis@example.com\",\n      subject: \"Re: Question about Budget\",\n      date: \"2 days ago\",\n      teaser:\n        \"I've reviewed the budget numbers you sent over.\\nCan we set up a quick call to discuss some potential adjustments?\",\n    },\n    {\n      name: \"Michael Wilson\",\n      email: \"michaelwilson@example.com\",\n      subject: \"Important Announcement\",\n      date: \"1 week ago\",\n      teaser:\n        \"Please join us for an all-hands meeting this Friday at 3 PM.\\nWe have some exciting news to share about the company's future.\",\n    },\n    {\n      name: \"Sarah Brown\",\n      email: \"sarahbrown@example.com\",\n      subject: \"Re: Feedback on Proposal\",\n      date: \"1 week ago\",\n      teaser:\n        \"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\nCould we schedule a meeting to discuss my feedback in detail?\",\n    },\n    {\n      name: \"David Lee\",\n      email: \"davidlee@example.com\",\n      subject: \"New Project Idea\",\n      date: \"1 week ago\",\n      teaser:\n        \"I've been brainstorming and came up with an interesting project concept.\\nDo you have time this week to discuss its potential impact and feasibility?\",\n    },\n    {\n      name: \"Olivia Wilson\",\n      email: \"oliviawilson@example.com\",\n      subject: \"Vacation Plans\",\n      date: \"1 week ago\",\n      teaser:\n        \"Just a heads up that I'll be taking a two-week vacation next month.\\nI'll make sure all my projects are up to date before I leave.\",\n    },\n    {\n      name: \"James Martin\",\n      email: \"jamesmartin@example.com\",\n      subject: \"Re: Conference Registration\",\n      date: \"1 week ago\",\n      teaser:\n        \"I've completed the registration for the upcoming tech conference.\\nLet me know if you need any additional information from my end.\",\n    },\n    {\n      name: \"Sophia White\",\n      email: \"sophiawhite@example.com\",\n      subject: \"Team Dinner\",\n      date: \"1 week ago\",\n      teaser:\n        \"To celebrate our recent project success, I'd like to organize a team dinner.\\nAre you available next Friday evening? Please let me know your preferences.\",\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  // Note: I'm using state to show active item.\n  // IRL you should use the url/router.\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\n  const [mails, setMails] = React.useState(data.mails)\n  const { setOpen } = useSidebar()\n  return (\n    <Sidebar\n      collapsible=\"icon\"\n      className=\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\"\n      {...props}\n    >\n      {/* This is the first sidebar */}\n      {/* We disable collapsible and adjust width to icon. */}\n      {/* This will make the sidebar appear as icons. */}\n      <Sidebar\n        collapsible=\"none\"\n        className=\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\"\n      >\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <SidebarMenuButton\n                size=\"lg\"\n                className=\"md:h-8 md:p-0\"\n                render={<a href=\"#\" />}\n              >\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <IconPlaceholder\n                    lucide=\"TerminalIcon\"\n                    tabler=\"IconCommand\"\n                    hugeicons=\"CommandIcon\"\n                    phosphor=\"CommandIcon\"\n                    remixicon=\"RiCommandLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">Acme Inc</span>\n                  <span className=\"truncate text-xs\">Enterprise</span>\n                </div>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent className=\"px-1.5 md:px-0\">\n              <SidebarMenu>\n                {data.navMain.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton\n                      tooltip={{\n                        children: item.title,\n                        hidden: false,\n                      }}\n                      onClick={() => {\n                        setActiveItem(item)\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\n                        setMails(\n                          mail.slice(\n                            0,\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\n                          )\n                        )\n                        setOpen(true)\n                      }}\n                      isActive={activeItem?.title === item.title}\n                      className=\"px-2.5 md:px-2\"\n                    >\n                      {item.icon}\n                      <span>{item.title}</span>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <NavUser user={data.user} />\n        </SidebarFooter>\n      </Sidebar>\n\n      {/* This is the second sidebar */}\n      {/* We disable collapsible and let it fill remaining space */}\n      <Sidebar collapsible=\"none\" className=\"hidden flex-1 md:flex\">\n        <SidebarHeader className=\"gap-3.5 border-b p-4\">\n          <div className=\"flex w-full items-center justify-between\">\n            <div className=\"text-base font-medium text-foreground\">\n              {activeItem?.title}\n            </div>\n            <Label className=\"flex items-center gap-2 text-sm\">\n              <span>Unreads</span>\n              <Switch className=\"shadow-none\" />\n            </Label>\n          </div>\n          <SidebarInput placeholder=\"Type to search...\" />\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup className=\"px-0\">\n            <SidebarGroupContent>\n              {mails.map((mail) => (\n                <a\n                  href=\"#\"\n                  key={mail.email}\n                  className=\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n                >\n                  <div className=\"flex w-full items-center gap-2\">\n                    <span>{mail.name}</span>{\" \"}\n                    <span className=\"ml-auto text-xs\">{mail.date}</span>\n                  </div>\n                  <span className=\"font-medium\">{mail.subject}</span>\n                  <span className=\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\">\n                    {mail.teaser}\n                  </span>\n                </a>\n              ))}\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-09/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton\n                size=\"lg\"\n                className=\"md:h-8 md:p-0 data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n              />\n            }\n          >\n            <Avatar className=\"h-8 w-8 rounded-lg\">\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs\">{user.email}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto size-4\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-09/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-09/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"350px\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">All Inboxes</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          {Array.from({ length: 24 }).map((_, index) => (\n            <div\n              key={index}\n              className=\"aspect-video h-12 w-full rounded-lg bg-muted/50\"\n            />\n          ))}\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-10/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavFavorites } from \"@/registry/bases/base/blocks/sidebar-10/components/nav-favorites\"\nimport { NavMain } from \"@/registry/bases/base/blocks/sidebar-10/components/nav-main\"\nimport { NavSecondary } from \"@/registry/bases/base/blocks/sidebar-10/components/nav-secondary\"\nimport { NavWorkspaces } from \"@/registry/bases/base/blocks/sidebar-10/components/nav-workspaces\"\nimport { TeamSwitcher } from \"@/registry/bases/base/blocks/sidebar-10/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"AudioLinesIcon\"\n          tabler=\"IconWaveSine\"\n          hugeicons=\"AudioWave01Icon\"\n          phosphor=\"WaveformIcon\"\n          remixicon=\"RiPulseLine\"\n        />\n      ),\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SearchIcon\"\n          tabler=\"IconSearch\"\n          hugeicons=\"SearchIcon\"\n          phosphor=\"MagnifyingGlassIcon\"\n          remixicon=\"RiSearchLine\"\n        />\n      ),\n    },\n    {\n      title: \"Ask AI\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SparklesIcon\"\n          tabler=\"IconSparkles\"\n          hugeicons=\"SparklesIcon\"\n          phosphor=\"SparkleIcon\"\n          remixicon=\"RiSparklingLine\"\n        />\n      ),\n    },\n    {\n      title: \"Home\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"HomeIcon\"\n          tabler=\"IconHome\"\n          hugeicons=\"HomeIcon\"\n          phosphor=\"HouseIcon\"\n          remixicon=\"RiHomeLine\"\n        />\n      ),\n      isActive: true,\n    },\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"InboxIcon\"\n          tabler=\"IconInbox\"\n          hugeicons=\"InboxIcon\"\n          phosphor=\"TrayIcon\"\n          remixicon=\"RiInboxLine\"\n        />\n      ),\n      badge: \"10\",\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Calendar\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CalendarIcon\"\n          tabler=\"IconCalendar\"\n          hugeicons=\"CalendarIcon\"\n          phosphor=\"CalendarIcon\"\n          remixicon=\"RiCalendarLine\"\n        />\n      ),\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n    {\n      title: \"Templates\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BlocksIcon\"\n          tabler=\"IconCube\"\n          hugeicons=\"CubeIcon\"\n          phosphor=\"CubeIcon\"\n          remixicon=\"RiBox3Line\"\n        />\n      ),\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Trash2Icon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"Delete02Icon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n    },\n    {\n      title: \"Help\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MessageCircleQuestionIcon\"\n          tabler=\"IconMessageQuestion\"\n          hugeicons=\"MessageQuestionIcon\"\n          phosphor=\"ChatCircleIcon\"\n          remixicon=\"RiQuestionLine\"\n        />\n      ),\n    },\n  ],\n  favorites: [\n    {\n      name: \"Project Management & Task Tracking\",\n      url: \"#\",\n      emoji: \"📊\",\n    },\n    {\n      name: \"Family Recipe Collection & Meal Planning\",\n      url: \"#\",\n      emoji: \"🍳\",\n    },\n    {\n      name: \"Fitness Tracker & Workout Routines\",\n      url: \"#\",\n      emoji: \"💪\",\n    },\n    {\n      name: \"Book Notes & Reading List\",\n      url: \"#\",\n      emoji: \"📚\",\n    },\n    {\n      name: \"Sustainable Gardening Tips & Plant Care\",\n      url: \"#\",\n      emoji: \"🌱\",\n    },\n    {\n      name: \"Language Learning Progress & Resources\",\n      url: \"#\",\n      emoji: \"🗣️\",\n    },\n    {\n      name: \"Home Renovation Ideas & Budget Tracker\",\n      url: \"#\",\n      emoji: \"🏠\",\n    },\n    {\n      name: \"Personal Finance & Investment Portfolio\",\n      url: \"#\",\n      emoji: \"💰\",\n    },\n    {\n      name: \"Movie & TV Show Watchlist with Reviews\",\n      url: \"#\",\n      emoji: \"🎬\",\n    },\n    {\n      name: \"Daily Habit Tracker & Goal Setting\",\n      url: \"#\",\n      emoji: \"✅\",\n    },\n  ],\n  workspaces: [\n    {\n      name: \"Personal Life Management\",\n      emoji: \"🏠\",\n      pages: [\n        {\n          name: \"Daily Journal & Reflection\",\n          url: \"#\",\n          emoji: \"📔\",\n        },\n        {\n          name: \"Health & Wellness Tracker\",\n          url: \"#\",\n          emoji: \"🍏\",\n        },\n        {\n          name: \"Personal Growth & Learning Goals\",\n          url: \"#\",\n          emoji: \"🌟\",\n        },\n      ],\n    },\n    {\n      name: \"Professional Development\",\n      emoji: \"💼\",\n      pages: [\n        {\n          name: \"Career Objectives & Milestones\",\n          url: \"#\",\n          emoji: \"🎯\",\n        },\n        {\n          name: \"Skill Acquisition & Training Log\",\n          url: \"#\",\n          emoji: \"🧠\",\n        },\n        {\n          name: \"Networking Contacts & Events\",\n          url: \"#\",\n          emoji: \"🤝\",\n        },\n      ],\n    },\n    {\n      name: \"Creative Projects\",\n      emoji: \"🎨\",\n      pages: [\n        {\n          name: \"Writing Ideas & Story Outlines\",\n          url: \"#\",\n          emoji: \"✍️\",\n        },\n        {\n          name: \"Art & Design Portfolio\",\n          url: \"#\",\n          emoji: \"🖼️\",\n        },\n        {\n          name: \"Music Composition & Practice Log\",\n          url: \"#\",\n          emoji: \"🎵\",\n        },\n      ],\n    },\n    {\n      name: \"Home Management\",\n      emoji: \"🏡\",\n      pages: [\n        {\n          name: \"Household Budget & Expense Tracking\",\n          url: \"#\",\n          emoji: \"💰\",\n        },\n        {\n          name: \"Home Maintenance Schedule & Tasks\",\n          url: \"#\",\n          emoji: \"🔧\",\n        },\n        {\n          name: \"Family Calendar & Event Planning\",\n          url: \"#\",\n          emoji: \"📅\",\n        },\n      ],\n    },\n    {\n      name: \"Travel & Adventure\",\n      emoji: \"🧳\",\n      pages: [\n        {\n          name: \"Trip Planning & Itineraries\",\n          url: \"#\",\n          emoji: \"🗺️\",\n        },\n        {\n          name: \"Travel Bucket List & Inspiration\",\n          url: \"#\",\n          emoji: \"🌎\",\n        },\n        {\n          name: \"Travel Journal & Photo Gallery\",\n          url: \"#\",\n          emoji: \"📸\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar className=\"border-r-0\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n        <NavMain items={data.navMain} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavFavorites favorites={data.favorites} />\n        <NavWorkspaces workspaces={data.workspaces} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-10/components/nav-actions.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/bases/base/ui/popover\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = [\n  [\n    {\n      label: \"Customize Page\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n    {\n      label: \"Turn into wiki\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileTextIcon\"\n          tabler=\"IconFileText\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileTextIcon\"\n          remixicon=\"RiFileTextLine\"\n        />\n      ),\n    },\n  ],\n  [\n    {\n      label: \"Copy Link\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LinkIcon\"\n          tabler=\"IconLink\"\n          hugeicons=\"LinkIcon\"\n          phosphor=\"LinkIcon\"\n          remixicon=\"RiLinksLine\"\n        />\n      ),\n    },\n    {\n      label: \"Duplicate\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CopyIcon\"\n          tabler=\"IconCopy\"\n          hugeicons=\"Copy01Icon\"\n          phosphor=\"CopyIcon\"\n          remixicon=\"RiFileCopyLine\"\n        />\n      ),\n    },\n    {\n      label: \"Move to\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CornerUpRightIcon\"\n          tabler=\"IconCornerUpRight\"\n          hugeicons=\"RedoIcon\"\n          phosphor=\"ArrowBendUpRightIcon\"\n          remixicon=\"RiCornerUpRightLine\"\n        />\n      ),\n    },\n    {\n      label: \"Move to Trash\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Trash2Icon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"Delete02Icon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n    },\n  ],\n  [\n    {\n      label: \"Undo\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CornerUpLeftIcon\"\n          tabler=\"IconCornerUpLeft\"\n          hugeicons=\"UndoIcon\"\n          phosphor=\"ArrowBendUpLeftIcon\"\n          remixicon=\"RiCornerUpLeftLine\"\n        />\n      ),\n    },\n    {\n      label: \"View analytics\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ChartLineIcon\"\n          tabler=\"IconChartLine\"\n          hugeicons=\"ChartIcon\"\n          phosphor=\"ChartLineIcon\"\n          remixicon=\"RiLineChartLine\"\n        />\n      ),\n    },\n    {\n      label: \"Version History\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"GalleryVerticalEndIcon\"\n          tabler=\"IconLayoutRows\"\n          hugeicons=\"LayoutBottomIcon\"\n          phosphor=\"RowsIcon\"\n          remixicon=\"RiGalleryLine\"\n        />\n      ),\n    },\n    {\n      label: \"Show delete pages\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"TrashIcon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"DeleteIcon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n    },\n    {\n      label: \"Notifications\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BellIcon\"\n          tabler=\"IconBell\"\n          hugeicons=\"NotificationIcon\"\n          phosphor=\"BellIcon\"\n          remixicon=\"RiNotificationLine\"\n        />\n      ),\n    },\n  ],\n  [\n    {\n      label: \"Import\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ArrowUpIcon\"\n          tabler=\"IconArrowUp\"\n          hugeicons=\"ArrowUpIcon\"\n          phosphor=\"ArrowUpIcon\"\n          remixicon=\"RiArrowUpLine\"\n        />\n      ),\n    },\n    {\n      label: \"Export\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ArrowDownIcon\"\n          tabler=\"IconArrowDown\"\n          hugeicons=\"ArrowDownIcon\"\n          phosphor=\"ArrowDownIcon\"\n          remixicon=\"RiArrowDownLine\"\n        />\n      ),\n    },\n  ],\n]\nexport function NavActions() {\n  const [isOpen, setIsOpen] = React.useState(false)\n  React.useEffect(() => {\n    setIsOpen(true)\n  }, [])\n  return (\n    <div className=\"flex items-center gap-2 text-sm\">\n      <div className=\"hidden font-medium text-muted-foreground md:inline-block\">\n        Edit Oct 08\n      </div>\n      <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\">\n        <IconPlaceholder\n          lucide=\"StarIcon\"\n          tabler=\"IconStar\"\n          hugeicons=\"StarIcon\"\n          phosphor=\"StarIcon\"\n          remixicon=\"RiStarLine\"\n        />\n      </Button>\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\n        <PopoverTrigger\n          render={\n            <Button\n              variant=\"ghost\"\n              size=\"icon\"\n              className=\"h-7 w-7 data-open:bg-accent\"\n            />\n          }\n        >\n          <IconPlaceholder\n            lucide=\"MoreHorizontalIcon\"\n            tabler=\"IconDots\"\n            hugeicons=\"MoreHorizontalCircle01Icon\"\n            phosphor=\"DotsThreeOutlineIcon\"\n            remixicon=\"RiMoreLine\"\n          />\n        </PopoverTrigger>\n        <PopoverContent\n          className=\"w-56 overflow-hidden rounded-lg p-0\"\n          align=\"end\"\n        >\n          <Sidebar collapsible=\"none\" className=\"bg-transparent\">\n            <SidebarContent>\n              {data.map((group, index) => (\n                <SidebarGroup key={index} className=\"border-b last:border-none\">\n                  <SidebarGroupContent className=\"gap-0\">\n                    <SidebarMenu>\n                      {group.map((item, index) => (\n                        <SidebarMenuItem key={index}>\n                          <SidebarMenuButton>\n                            {item.icon} <span>{item.label}</span>\n                          </SidebarMenuButton>\n                        </SidebarMenuItem>\n                      ))}\n                    </SidebarMenu>\n                  </SidebarGroupContent>\n                </SidebarGroup>\n              ))}\n            </SidebarContent>\n          </Sidebar>\n        </PopoverContent>\n      </Popover>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-10/components/nav-favorites.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavFavorites({\n  favorites,\n}: {\n  favorites: {\n    name: string\n    url: string\n    emoji: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\n      <SidebarMenu>\n        {favorites.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\n              <span>{item.emoji}</span>\n              <span>{item.name}</span>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <SidebarMenuAction\n                    showOnHover\n                    className=\"aria-expanded:bg-muted\"\n                  />\n                }\n              >\n                <IconPlaceholder\n                  lucide=\"MoreHorizontalIcon\"\n                  tabler=\"IconDots\"\n                  hugeicons=\"MoreHorizontalCircle01Icon\"\n                  phosphor=\"DotsThreeOutlineIcon\"\n                  remixicon=\"RiMoreLine\"\n                />\n                <span className=\"sr-only\">More</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-56 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"StarOffIcon\"\n                      tabler=\"IconStarOff\"\n                      hugeicons=\"StarOffIcon\"\n                      phosphor=\"StarIcon\"\n                      remixicon=\"RiStarOffLine\"\n                      className=\"text-muted-foreground\"\n                    />\n                    <span>Remove from Favorites</span>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"LinkIcon\"\n                      tabler=\"IconLink\"\n                      hugeicons=\"LinkIcon\"\n                      phosphor=\"LinkIcon\"\n                      remixicon=\"RiLinksLine\"\n                      className=\"text-muted-foreground\"\n                    />\n                    <span>Copy Link</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"ArrowUpRightIcon\"\n                      tabler=\"IconArrowUpRight\"\n                      hugeicons=\"ArrowUpRightIcon\"\n                      phosphor=\"ArrowUpRightIcon\"\n                      remixicon=\"RiArrowRightUpLine\"\n                      className=\"text-muted-foreground\"\n                    />\n                    <span>Open in New Tab</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"Trash2Icon\"\n                      tabler=\"IconTrash\"\n                      hugeicons=\"Delete02Icon\"\n                      phosphor=\"TrashIcon\"\n                      remixicon=\"RiDeleteBinLine\"\n                      className=\"text-muted-foreground\"\n                    />\n                    <span>Delete</span>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-10/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    isActive?: boolean\n  }[]\n}) {\n  return (\n    <SidebarMenu>\n      {items.map((item) => (\n        <SidebarMenuItem key={item.title}>\n          <SidebarMenuButton\n            isActive={item.isActive}\n            render={<a href={item.url} />}\n          >\n            {item.icon}\n            <span>{item.title}</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-10/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    badge?: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton render={<a href={item.url} />}>\n                {item.icon}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-10/components/nav-workspaces.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavWorkspaces({\n  workspaces,\n}: {\n  workspaces: {\n    name: string\n    emoji: React.ReactNode\n    pages: {\n      name: string\n      emoji: React.ReactNode\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {workspaces.map((workspace) => (\n            <Collapsible key={workspace.name}>\n              <SidebarMenuItem>\n                <SidebarMenuButton render={<a href=\"#\" />}>\n                  <span>{workspace.emoji}</span>\n                  <span>{workspace.name}</span>\n                </SidebarMenuButton>\n                <SidebarMenuAction\n                  render={<CollapsibleTrigger />}\n                  className=\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\"\n                  showOnHover\n                >\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                  />\n                </SidebarMenuAction>\n                <SidebarMenuAction showOnHover>\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                </SidebarMenuAction>\n                <CollapsibleContent>\n                  <SidebarMenuSub>\n                    {workspace.pages.map((page) => (\n                      <SidebarMenuSubItem key={page.name}>\n                        <SidebarMenuSubButton render={<a href=\"#\" />}>\n                          <span>{page.emoji}</span>\n                          <span>{page.name}</span>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                </CollapsibleContent>\n              </SidebarMenuItem>\n            </Collapsible>\n          ))}\n          <SidebarMenuItem>\n            <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n              <IconPlaceholder\n                lucide=\"MoreHorizontalIcon\"\n                tabler=\"IconDots\"\n                hugeicons=\"MoreHorizontalCircle01Icon\"\n                phosphor=\"DotsThreeOutlineIcon\"\n                remixicon=\"RiMoreLine\"\n              />\n              <span>More</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-10/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ReactNode\n    plan: string\n  }[]\n}) {\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n  if (!activeTeam) {\n    return null\n  }\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={<SidebarMenuButton className=\"w-fit px-1.5\" />}\n          >\n            <div className=\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\">\n              {activeTeam.logo}\n            </div>\n            <span className=\"truncate font-medium\">{activeTeam.name}</span>\n            <IconPlaceholder\n              lucide=\"ChevronDownIcon\"\n              tabler=\"IconChevronDown\"\n              hugeicons=\"ArrowDown01Icon\"\n              phosphor=\"CaretDownIcon\"\n              remixicon=\"RiArrowDownSLine\"\n              className=\"opacity-50\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-64 rounded-lg\"\n            align=\"start\"\n            side=\"bottom\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                Teams\n              </DropdownMenuLabel>\n              {teams.map((team, index) => (\n                <DropdownMenuItem\n                  key={team.name}\n                  onClick={() => setActiveTeam(team)}\n                  className=\"gap-2 p-2\"\n                >\n                  <div className=\"flex size-6 items-center justify-center rounded-xs border\">\n                    {team.logo}\n                  </div>\n                  {team.name}\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n                </DropdownMenuItem>\n              ))}\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem className=\"gap-2 p-2\">\n                <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"font-medium text-muted-foreground\">\n                  Add team\n                </div>\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-10/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-10/components/app-sidebar\"\nimport { NavActions } from \"@/registry/bases/base/blocks/sidebar-10/components/nav-actions\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-14 shrink-0 items-center gap-2\">\n          <div className=\"flex flex-1 items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem>\n                  <BreadcrumbPage className=\"line-clamp-1\">\n                    Project Management & Task Tracking\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n          <div className=\"ml-auto px-3\">\n            <NavActions />\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 px-4 py-10\">\n          <div className=\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\" />\n          <div className=\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-11/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  changes: [\n    {\n      file: \"README.md\",\n      state: \"M\",\n    },\n    {\n      file: \"api/hello/route.ts\",\n      state: \"U\",\n    },\n    {\n      file: \"app/layout.tsx\",\n      state: \"M\",\n    },\n  ],\n  tree: [\n    [\n      \"app\",\n      [\n        \"api\",\n        [\"hello\", [\"route.ts\"]],\n        \"page.tsx\",\n        \"layout.tsx\",\n        [\"blog\", [\"page.tsx\"]],\n      ],\n    ],\n    [\n      \"components\",\n      [\"ui\", \"button.tsx\", \"card.tsx\"],\n      \"header.tsx\",\n      \"footer.tsx\",\n    ],\n    [\"lib\", [\"util.ts\"]],\n    [\"public\", \"favicon.ico\", \"vercel.svg\"],\n    \".eslintrc.json\",\n    \".gitignore\",\n    \"next.config.js\",\n    \"tailwind.config.js\",\n    \"package.json\",\n    \"README.md\",\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.changes.map((item, index) => (\n                <SidebarMenuItem key={index}>\n                  <SidebarMenuButton>\n                    <IconPlaceholder\n                      lucide=\"FileIcon\"\n                      tabler=\"IconFile\"\n                      hugeicons=\"FileIcon\"\n                      phosphor=\"FileIcon\"\n                      remixicon=\"RiFileLine\"\n                    />\n                    {item.file}\n                  </SidebarMenuButton>\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\n                </SidebarMenuItem>\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n        <SidebarGroup>\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.tree.map((item, index) => (\n                <Tree key={index} item={item} />\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\ntype TreeItem = string | TreeItem[]\nfunction Tree({ item }: { item: TreeItem }) {\n  const [name, ...items] = Array.isArray(item) ? item : [item]\n  if (!items.length) {\n    return (\n      <SidebarMenuButton\n        isActive={name === \"button.tsx\"}\n        className=\"data-[active=true]:bg-transparent\"\n      >\n        <IconPlaceholder\n          lucide=\"FileIcon\"\n          tabler=\"IconFile\"\n          hugeicons=\"FileIcon\"\n          phosphor=\"FileIcon\"\n          remixicon=\"RiFileLine\"\n        />\n        {name}\n      </SidebarMenuButton>\n    )\n  }\n  return (\n    <SidebarMenuItem>\n      <Collapsible\n        className=\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\"\n        defaultOpen={name === \"components\" || name === \"ui\"}\n      >\n        <SidebarMenuButton render={<CollapsibleTrigger />}>\n          <IconPlaceholder\n            lucide=\"ChevronRightIcon\"\n            tabler=\"IconChevronRight\"\n            hugeicons=\"ArrowRight01Icon\"\n            phosphor=\"CaretRightIcon\"\n            remixicon=\"RiArrowRightSLine\"\n            className=\"transition-transform\"\n          />\n          <IconPlaceholder\n            lucide=\"FolderIcon\"\n            tabler=\"IconFolder\"\n            hugeicons=\"FolderIcon\"\n            phosphor=\"FolderIcon\"\n            remixicon=\"RiFolderLine\"\n          />\n          {name}\n        </SidebarMenuButton>\n        <CollapsibleContent>\n          <SidebarMenuSub>\n            {items.map((subItem, index) => (\n              <Tree key={index} item={subItem} />\n            ))}\n          </SidebarMenuSub>\n        </CollapsibleContent>\n      </Collapsible>\n    </SidebarMenuItem>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-11/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-11/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">components</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">ui</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-12/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Calendars } from \"@/registry/bases/base/blocks/sidebar-12/components/calendars\"\nimport { DatePicker } from \"@/registry/bases/base/blocks/sidebar-12/components/date-picker\"\nimport { NavUser } from \"@/registry/bases/base/blocks/sidebar-12/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n  SidebarSeparator,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  calendars: [\n    {\n      name: \"My Calendars\",\n      items: [\"Personal\", \"Work\", \"Family\"],\n    },\n    {\n      name: \"Favorites\",\n      items: [\"Holidays\", \"Birthdays\"],\n    },\n    {\n      name: \"Other\",\n      items: [\"Travel\", \"Reminders\", \"Deadlines\"],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader className=\"h-16 border-b border-sidebar-border\">\n        <NavUser user={data.user} />\n      </SidebarHeader>\n      <SidebarContent>\n        <DatePicker />\n        <SidebarSeparator className=\"mx-0\" />\n        <Calendars calendars={data.calendars} />\n      </SidebarContent>\n      <SidebarFooter>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton>\n              <IconPlaceholder\n                lucide=\"PlusIcon\"\n                tabler=\"IconPlus\"\n                hugeicons=\"PlusSignIcon\"\n                phosphor=\"PlusIcon\"\n                remixicon=\"RiAddLine\"\n              />\n              <span>New Calendar</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-12/components/calendars.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarSeparator,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function Calendars({\n  calendars,\n}: {\n  calendars: {\n    name: string\n    items: string[]\n  }[]\n}) {\n  return (\n    <>\n      {calendars.map((calendar, index) => (\n        <React.Fragment key={calendar.name}>\n          <SidebarGroup key={calendar.name}>\n            <Collapsible\n              defaultOpen={index === 0}\n              className=\"group/collapsible\"\n            >\n              <SidebarGroupLabel\n                className=\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n                render={<CollapsibleTrigger />}\n              >\n                {calendar.name}{\" \"}\n                <IconPlaceholder\n                  lucide=\"ChevronRightIcon\"\n                  tabler=\"IconChevronRight\"\n                  hugeicons=\"ArrowRight01Icon\"\n                  phosphor=\"CaretRightIcon\"\n                  remixicon=\"RiArrowRightSLine\"\n                  className=\"ml-auto transition-transform group-data-open/collapsible:rotate-90\"\n                />\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {calendar.items.map((item, index) => (\n                      <SidebarMenuItem key={item}>\n                        <SidebarMenuButton>\n                          <div\n                            data-active={index < 2}\n                            className=\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\"\n                          >\n                            <IconPlaceholder\n                              lucide=\"CheckIcon\"\n                              tabler=\"IconCheck\"\n                              hugeicons=\"Tick02Icon\"\n                              phosphor=\"CheckIcon\"\n                              remixicon=\"RiCheckLine\"\n                              className=\"hidden size-3 group-data-[active=true]/calendar-item:block\"\n                            />\n                          </div>\n                          {item}\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </Collapsible>\n          </SidebarGroup>\n          <SidebarSeparator className=\"mx-0\" />\n        </React.Fragment>\n      ))}\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-12/components/date-picker.tsx",
    "content": "import * as React from \"react\"\n\nimport { Calendar } from \"@/registry/bases/base/ui/calendar\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function DatePicker() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n  return (\n    <SidebarGroup className=\"px-0\">\n      <SidebarGroupContent>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          captionLayout=\"dropdown\"\n          className=\"bg-transparent [--cell-size:2.1rem]\"\n        />\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-12/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton size=\"lg\" className=\"aria-expanded:bg-muted\" />\n            }\n          >\n            <Avatar>\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs\">{user.email}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto size-4\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"start\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"p-0 font-normal\">\n                <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                  <Avatar>\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback>CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs\">{user.email}</span>\n                  </div>\n                </div>\n              </DropdownMenuLabel>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-12/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-12/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem>\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-5\">\n            {Array.from({ length: 20 }).map((_, i) => (\n              <div key={i} className=\"aspect-square rounded-xl bg-muted/50\" />\n            ))}\n          </div>\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-13/components/settings-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = {\n  nav: [\n    {\n      name: \"Notifications\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BellIcon\"\n          tabler=\"IconBell\"\n          hugeicons=\"NotificationIcon\"\n          phosphor=\"BellIcon\"\n          remixicon=\"RiNotificationLine\"\n        />\n      ),\n    },\n    {\n      name: \"Navigation\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MenuIcon\"\n          tabler=\"IconMenu\"\n          hugeicons=\"Menu09Icon\"\n          phosphor=\"ListIcon\"\n          remixicon=\"RiMenuLine\"\n        />\n      ),\n    },\n    {\n      name: \"Home\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"HomeIcon\"\n          tabler=\"IconHome\"\n          hugeicons=\"HomeIcon\"\n          phosphor=\"HouseIcon\"\n          remixicon=\"RiHomeLine\"\n        />\n      ),\n    },\n    {\n      name: \"Appearance\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"PaintbrushIcon\"\n          tabler=\"IconPalette\"\n          hugeicons=\"PaintBoardIcon\"\n          phosphor=\"PaletteIcon\"\n          remixicon=\"RiPaletteLine\"\n        />\n      ),\n    },\n    {\n      name: \"Messages & media\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MessageCircleIcon\"\n          tabler=\"IconMessageQuestion\"\n          hugeicons=\"MessageIcon\"\n          phosphor=\"ChatCircleIcon\"\n          remixicon=\"RiChat1Line\"\n        />\n      ),\n    },\n    {\n      name: \"Language & region\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"GlobeIcon\"\n          tabler=\"IconWorld\"\n          hugeicons=\"Globe02Icon\"\n          phosphor=\"GlobeIcon\"\n          remixicon=\"RiGlobalLine\"\n        />\n      ),\n    },\n    {\n      name: \"Accessibility\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"KeyboardIcon\"\n          tabler=\"IconKeyboard\"\n          hugeicons=\"KeyboardIcon\"\n          phosphor=\"KeyboardIcon\"\n          remixicon=\"RiKeyboardLine\"\n        />\n      ),\n    },\n    {\n      name: \"Mark as read\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CheckIcon\"\n          tabler=\"IconCheck\"\n          hugeicons=\"Tick02Icon\"\n          phosphor=\"CheckIcon\"\n          remixicon=\"RiCheckLine\"\n        />\n      ),\n    },\n    {\n      name: \"Audio & video\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"VideoIcon\"\n          tabler=\"IconVideoPlus\"\n          hugeicons=\"RecordIcon\"\n          phosphor=\"VideoIcon\"\n          remixicon=\"RiVideoLine\"\n        />\n      ),\n    },\n    {\n      name: \"Connected accounts\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LinkIcon\"\n          tabler=\"IconLink\"\n          hugeicons=\"LinkIcon\"\n          phosphor=\"LinkIcon\"\n          remixicon=\"RiLinksLine\"\n        />\n      ),\n    },\n    {\n      name: \"Privacy & visibility\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LockIcon\"\n          tabler=\"IconLock\"\n          hugeicons=\"ShieldIcon\"\n          phosphor=\"LockIcon\"\n          remixicon=\"RiLockLine\"\n        />\n      ),\n    },\n    {\n      name: \"Advanced\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SettingsIcon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"SettingsIcon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n  ],\n}\n\nexport function SettingsDialog() {\n  const [open, setOpen] = React.useState(true)\n  return (\n    <Dialog open={open} onOpenChange={setOpen}>\n      <DialogTrigger render={<Button size=\"sm\" />}>Open Dialog</DialogTrigger>\n      <DialogContent className=\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\">\n        <DialogTitle className=\"sr-only\">Settings</DialogTitle>\n        <DialogDescription className=\"sr-only\">\n          Customize your settings here.\n        </DialogDescription>\n        <SidebarProvider className=\"items-start\">\n          <Sidebar collapsible=\"none\" className=\"hidden md:flex\">\n            <SidebarContent>\n              <SidebarGroup>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {data.nav.map((item) => (\n                      <SidebarMenuItem key={item.name}>\n                        <SidebarMenuButton\n                          isActive={item.name === \"Messages & media\"}\n                          render={<a href=\"#\" />}\n                        >\n                          {item.icon}\n                          <span>{item.name}</span>\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </SidebarGroup>\n            </SidebarContent>\n          </Sidebar>\n          <main className=\"flex h-[480px] flex-1 flex-col overflow-hidden\">\n            <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n              <div className=\"flex items-center gap-2 px-4\">\n                <Breadcrumb>\n                  <BreadcrumbList>\n                    <BreadcrumbItem className=\"hidden md:block\">\n                      <BreadcrumbLink href=\"#\">Settings</BreadcrumbLink>\n                    </BreadcrumbItem>\n                    <BreadcrumbSeparator className=\"hidden md:block\" />\n                    <BreadcrumbItem>\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\n                    </BreadcrumbItem>\n                  </BreadcrumbList>\n                </Breadcrumb>\n              </div>\n            </header>\n            <div className=\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\">\n              {Array.from({\n                length: 10,\n              }).map((_, i) => (\n                <div\n                  key={i}\n                  className=\"aspect-video max-w-3xl rounded-xl bg-muted/50\"\n                />\n              ))}\n            </div>\n          </main>\n        </SidebarProvider>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-13/page.tsx",
    "content": "import { SettingsDialog } from \"@/registry/bases/base/blocks/sidebar-13/components/settings-dialog\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex h-svh items-center justify-center\">\n      <SettingsDialog />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-14/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <SidebarMenuItem key={item.title}>\n                  <SidebarMenuButton\n                    render={<a href={item.url} className=\"font-medium\" />}\n                  >\n                    {item.title}\n                  </SidebarMenuButton>\n                  {item.items?.length ? (\n                    <SidebarMenuSub>\n                      {item.items.map((item) => (\n                        <SidebarMenuSubItem key={item.title}>\n                          <SidebarMenuSubButton\n                            isActive={item.isActive}\n                            render={<a href={item.url} />}\n                          >\n                            {item.title}\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  ) : null}\n                </SidebarMenuItem>\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-14/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-14/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n          <SidebarTrigger className=\"-mr-1 ml-auto rotate-180\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n      <AppSidebar side=\"right\" />\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/calendars.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarSeparator,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function Calendars({\n  calendars,\n}: {\n  calendars: {\n    name: string\n    items: string[]\n  }[]\n}) {\n  return (\n    <>\n      {calendars.map((calendar, index) => (\n        <React.Fragment key={calendar.name}>\n          <SidebarGroup key={calendar.name}>\n            <Collapsible\n              defaultOpen={index === 0}\n              className=\"group/collapsible\"\n            >\n              <SidebarGroupLabel\n                className=\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n                render={<CollapsibleTrigger />}\n              >\n                {calendar.name}{\" \"}\n                <IconPlaceholder\n                  lucide=\"ChevronRightIcon\"\n                  tabler=\"IconChevronRight\"\n                  hugeicons=\"ArrowRight01Icon\"\n                  phosphor=\"CaretRightIcon\"\n                  remixicon=\"RiArrowRightSLine\"\n                  className=\"ml-auto transition-transform group-data-open/collapsible:rotate-90\"\n                />\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {calendar.items.map((item, index) => (\n                      <SidebarMenuItem key={item}>\n                        <SidebarMenuButton>\n                          <div\n                            data-active={index < 2}\n                            className=\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\"\n                          >\n                            <IconPlaceholder\n                              lucide=\"CheckIcon\"\n                              tabler=\"IconCheck\"\n                              hugeicons=\"Tick02Icon\"\n                              phosphor=\"CheckIcon\"\n                              remixicon=\"RiCheckLine\"\n                              className=\"hidden size-3 group-data-[active=true]/calendar-item:block\"\n                            />\n                          </div>\n                          {item}\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </Collapsible>\n          </SidebarGroup>\n          <SidebarSeparator className=\"mx-0\" />\n        </React.Fragment>\n      ))}\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/date-picker.tsx",
    "content": "import * as React from \"react\"\n\nimport { Calendar } from \"@/registry/bases/base/ui/calendar\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function DatePicker() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n  return (\n    <SidebarGroup className=\"px-0\">\n      <SidebarGroupContent>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          captionLayout=\"dropdown\"\n          className=\"bg-transparent [--cell-size:2.1rem]\"\n        />\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/nav-favorites.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavFavorites({\n  favorites,\n}: {\n  favorites: {\n    name: string\n    url: string\n    emoji: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\n      <SidebarMenu>\n        {favorites.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton render={<a href={item.url} title={item.name} />}>\n              <span>{item.emoji}</span>\n              <span>{item.name}</span>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <SidebarMenuAction\n                    showOnHover\n                    className=\"aria-expanded:bg-muted\"\n                  />\n                }\n              >\n                <IconPlaceholder\n                  lucide=\"MoreHorizontalIcon\"\n                  tabler=\"IconDots\"\n                  hugeicons=\"MoreHorizontalCircle01Icon\"\n                  phosphor=\"DotsThreeOutlineIcon\"\n                  remixicon=\"RiMoreLine\"\n                />\n                <span className=\"sr-only\">More</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-56 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"StarOffIcon\"\n                    tabler=\"IconStarOff\"\n                    hugeicons=\"StarOffIcon\"\n                    phosphor=\"StarIcon\"\n                    remixicon=\"RiStarOffLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Remove from Favorites</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"LinkIcon\"\n                    tabler=\"IconLink\"\n                    hugeicons=\"LinkIcon\"\n                    phosphor=\"LinkIcon\"\n                    remixicon=\"RiLinksLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Copy Link</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ArrowUpRightIcon\"\n                    tabler=\"IconArrowUpRight\"\n                    hugeicons=\"ArrowUpRightIcon\"\n                    phosphor=\"ArrowUpRightIcon\"\n                    remixicon=\"RiArrowRightUpLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Open in New Tab</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    isActive?: boolean\n  }[]\n}) {\n  return (\n    <SidebarMenu>\n      {items.map((item) => (\n        <SidebarMenuItem key={item.title}>\n          <SidebarMenuButton\n            isActive={item.isActive}\n            render={<a href={item.url} />}\n          >\n            {item.icon}\n            <span>{item.title}</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    badge?: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton render={<a href={item.url} />}>\n                {item.icon}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton size=\"lg\" className=\"aria-expanded:bg-muted\" />\n            }\n          >\n            <Avatar>\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs\">{user.email}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto size-4\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"start\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"p-0 font-normal\">\n                <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                  <Avatar>\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback>CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs\">{user.email}</span>\n                  </div>\n                </div>\n              </DropdownMenuLabel>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"LogOutIcon\"\n                  tabler=\"IconLogout\"\n                  hugeicons=\"LogoutIcon\"\n                  phosphor=\"SignOutIcon\"\n                  remixicon=\"RiLogoutBoxLine\"\n                />\n                Log out\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/nav-workspaces.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavWorkspaces({\n  workspaces,\n}: {\n  workspaces: {\n    name: string\n    emoji: React.ReactNode\n    pages: {\n      name: string\n      emoji: React.ReactNode\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {workspaces.map((workspace) => (\n            <Collapsible key={workspace.name}>\n              <SidebarMenuItem>\n                <SidebarMenuButton render={<a href=\"#\" />}>\n                  <span>{workspace.emoji}</span>\n                  <span>{workspace.name}</span>\n                </SidebarMenuButton>\n                <SidebarMenuAction\n                  render={<CollapsibleTrigger />}\n                  className=\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-open:rotate-90\"\n                  showOnHover\n                >\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                  />\n                </SidebarMenuAction>\n                <SidebarMenuAction showOnHover>\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                </SidebarMenuAction>\n                <CollapsibleContent>\n                  <SidebarMenuSub>\n                    {workspace.pages.map((page) => (\n                      <SidebarMenuSubItem key={page.name}>\n                        <SidebarMenuSubButton render={<a href=\"#\" />}>\n                          <span>{page.emoji}</span>\n                          <span>{page.name}</span>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                </CollapsibleContent>\n              </SidebarMenuItem>\n            </Collapsible>\n          ))}\n          <SidebarMenuItem>\n            <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n              <IconPlaceholder\n                lucide=\"MoreHorizontalIcon\"\n                tabler=\"IconDots\"\n                hugeicons=\"MoreHorizontalCircle01Icon\"\n                phosphor=\"DotsThreeOutlineIcon\"\n                remixicon=\"RiMoreLine\"\n              />\n              <span>More</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/sidebar-left.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavFavorites } from \"@/registry/bases/base/blocks/sidebar-15/components/nav-favorites\"\nimport { NavMain } from \"@/registry/bases/base/blocks/sidebar-15/components/nav-main\"\nimport { NavSecondary } from \"@/registry/bases/base/blocks/sidebar-15/components/nav-secondary\"\nimport { NavWorkspaces } from \"@/registry/bases/base/blocks/sidebar-15/components/nav-workspaces\"\nimport { TeamSwitcher } from \"@/registry/bases/base/blocks/sidebar-15/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"AudioLinesIcon\"\n          tabler=\"IconWaveSine\"\n          hugeicons=\"AudioWave01Icon\"\n          phosphor=\"WaveformIcon\"\n          remixicon=\"RiPulseLine\"\n        />\n      ),\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SearchIcon\"\n          tabler=\"IconSearch\"\n          hugeicons=\"SearchIcon\"\n          phosphor=\"MagnifyingGlassIcon\"\n          remixicon=\"RiSearchLine\"\n        />\n      ),\n    },\n    {\n      title: \"Ask AI\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SparklesIcon\"\n          tabler=\"IconSparkles\"\n          hugeicons=\"SparklesIcon\"\n          phosphor=\"SparkleIcon\"\n          remixicon=\"RiSparklingLine\"\n        />\n      ),\n    },\n    {\n      title: \"Home\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"HomeIcon\"\n          tabler=\"IconHome\"\n          hugeicons=\"HomeIcon\"\n          phosphor=\"HouseIcon\"\n          remixicon=\"RiHomeLine\"\n        />\n      ),\n      isActive: true,\n    },\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"InboxIcon\"\n          tabler=\"IconInbox\"\n          hugeicons=\"InboxIcon\"\n          phosphor=\"TrayIcon\"\n          remixicon=\"RiInboxLine\"\n        />\n      ),\n      badge: \"10\",\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Calendar\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CalendarIcon\"\n          tabler=\"IconCalendar\"\n          hugeicons=\"CalendarIcon\"\n          phosphor=\"CalendarIcon\"\n          remixicon=\"RiCalendarLine\"\n        />\n      ),\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n    {\n      title: \"Templates\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BlocksIcon\"\n          tabler=\"IconCube\"\n          hugeicons=\"CubeIcon\"\n          phosphor=\"CubeIcon\"\n          remixicon=\"RiBox3Line\"\n        />\n      ),\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Trash2Icon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"Delete02Icon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n    },\n    {\n      title: \"Help\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MessageCircleQuestionIcon\"\n          tabler=\"IconMessageQuestion\"\n          hugeicons=\"MessageQuestionIcon\"\n          phosphor=\"ChatCircleIcon\"\n          remixicon=\"RiQuestionLine\"\n        />\n      ),\n    },\n  ],\n  favorites: [\n    {\n      name: \"Project Management & Task Tracking\",\n      url: \"#\",\n      emoji: \"📊\",\n    },\n    {\n      name: \"Family Recipe Collection & Meal Planning\",\n      url: \"#\",\n      emoji: \"🍳\",\n    },\n    {\n      name: \"Fitness Tracker & Workout Routines\",\n      url: \"#\",\n      emoji: \"💪\",\n    },\n    {\n      name: \"Book Notes & Reading List\",\n      url: \"#\",\n      emoji: \"📚\",\n    },\n    {\n      name: \"Sustainable Gardening Tips & Plant Care\",\n      url: \"#\",\n      emoji: \"🌱\",\n    },\n    {\n      name: \"Language Learning Progress & Resources\",\n      url: \"#\",\n      emoji: \"🗣️\",\n    },\n    {\n      name: \"Home Renovation Ideas & Budget Tracker\",\n      url: \"#\",\n      emoji: \"🏠\",\n    },\n    {\n      name: \"Personal Finance & Investment Portfolio\",\n      url: \"#\",\n      emoji: \"💰\",\n    },\n    {\n      name: \"Movie & TV Show Watchlist with Reviews\",\n      url: \"#\",\n      emoji: \"🎬\",\n    },\n    {\n      name: \"Daily Habit Tracker & Goal Setting\",\n      url: \"#\",\n      emoji: \"✅\",\n    },\n  ],\n  workspaces: [\n    {\n      name: \"Personal Life Management\",\n      emoji: \"🏠\",\n      pages: [\n        {\n          name: \"Daily Journal & Reflection\",\n          url: \"#\",\n          emoji: \"📔\",\n        },\n        {\n          name: \"Health & Wellness Tracker\",\n          url: \"#\",\n          emoji: \"🍏\",\n        },\n        {\n          name: \"Personal Growth & Learning Goals\",\n          url: \"#\",\n          emoji: \"🌟\",\n        },\n      ],\n    },\n    {\n      name: \"Professional Development\",\n      emoji: \"💼\",\n      pages: [\n        {\n          name: \"Career Objectives & Milestones\",\n          url: \"#\",\n          emoji: \"🎯\",\n        },\n        {\n          name: \"Skill Acquisition & Training Log\",\n          url: \"#\",\n          emoji: \"🧠\",\n        },\n        {\n          name: \"Networking Contacts & Events\",\n          url: \"#\",\n          emoji: \"🤝\",\n        },\n      ],\n    },\n    {\n      name: \"Creative Projects\",\n      emoji: \"🎨\",\n      pages: [\n        {\n          name: \"Writing Ideas & Story Outlines\",\n          url: \"#\",\n          emoji: \"✍️\",\n        },\n        {\n          name: \"Art & Design Portfolio\",\n          url: \"#\",\n          emoji: \"🖼️\",\n        },\n        {\n          name: \"Music Composition & Practice Log\",\n          url: \"#\",\n          emoji: \"🎵\",\n        },\n      ],\n    },\n    {\n      name: \"Home Management\",\n      emoji: \"🏡\",\n      pages: [\n        {\n          name: \"Household Budget & Expense Tracking\",\n          url: \"#\",\n          emoji: \"💰\",\n        },\n        {\n          name: \"Home Maintenance Schedule & Tasks\",\n          url: \"#\",\n          emoji: \"🔧\",\n        },\n        {\n          name: \"Family Calendar & Event Planning\",\n          url: \"#\",\n          emoji: \"📅\",\n        },\n      ],\n    },\n    {\n      name: \"Travel & Adventure\",\n      emoji: \"🧳\",\n      pages: [\n        {\n          name: \"Trip Planning & Itineraries\",\n          url: \"#\",\n          emoji: \"🗺️\",\n        },\n        {\n          name: \"Travel Bucket List & Inspiration\",\n          url: \"#\",\n          emoji: \"🌎\",\n        },\n        {\n          name: \"Travel Journal & Photo Gallery\",\n          url: \"#\",\n          emoji: \"📸\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function SidebarLeft({\n  ...props\n}: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar className=\"border-r-0\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n        <NavMain items={data.navMain} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavFavorites favorites={data.favorites} />\n        <NavWorkspaces workspaces={data.workspaces} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/sidebar-right.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Calendars } from \"@/registry/bases/base/blocks/sidebar-15/components/calendars\"\nimport { DatePicker } from \"@/registry/bases/base/blocks/sidebar-15/components/date-picker\"\nimport { NavUser } from \"@/registry/bases/base/blocks/sidebar-15/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n  SidebarSeparator,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  calendars: [\n    {\n      name: \"My Calendars\",\n      items: [\"Personal\", \"Work\", \"Family\"],\n    },\n    {\n      name: \"Favorites\",\n      items: [\"Holidays\", \"Birthdays\"],\n    },\n    {\n      name: \"Other\",\n      items: [\"Travel\", \"Reminders\", \"Deadlines\"],\n    },\n  ],\n}\n\nexport function SidebarRight({\n  ...props\n}: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar\n      collapsible=\"none\"\n      className=\"sticky top-0 hidden h-svh border-l lg:flex\"\n      {...props}\n    >\n      <SidebarHeader className=\"h-16 border-b border-sidebar-border\">\n        <NavUser user={data.user} />\n      </SidebarHeader>\n      <SidebarContent>\n        <DatePicker />\n        <SidebarSeparator className=\"mx-0\" />\n        <Calendars calendars={data.calendars} />\n      </SidebarContent>\n      <SidebarFooter>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton>\n              <IconPlaceholder\n                lucide=\"PlusIcon\"\n                tabler=\"IconPlus\"\n                hugeicons=\"PlusSignIcon\"\n                phosphor=\"PlusIcon\"\n                remixicon=\"RiAddLine\"\n              />\n              <span>New Calendar</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ReactNode\n    plan: string\n  }[]\n}) {\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n  if (!activeTeam) {\n    return null\n  }\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton className=\"w-fit px-1.5 aria-expanded:bg-muted aria-expanded:text-foreground\" />\n            }\n          >\n            <div className=\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\">\n              {activeTeam.logo}\n            </div>\n            <span className=\"truncate font-medium\">{activeTeam.name}</span>\n            <IconPlaceholder\n              lucide=\"ChevronDownIcon\"\n              tabler=\"IconChevronDown\"\n              hugeicons=\"ArrowDown01Icon\"\n              phosphor=\"CaretDownIcon\"\n              remixicon=\"RiArrowDownSLine\"\n              className=\"opacity-50\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-64 rounded-lg\"\n            align=\"start\"\n            side=\"bottom\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                Teams\n              </DropdownMenuLabel>\n              {teams.map((team, index) => (\n                <DropdownMenuItem\n                  key={team.name}\n                  onClick={() => setActiveTeam(team)}\n                  className=\"gap-2 p-2\"\n                >\n                  <div className=\"flex size-6 items-center justify-center rounded-xs border\">\n                    {team.logo}\n                  </div>\n                  {team.name}\n                  <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n                </DropdownMenuItem>\n              ))}\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem className=\"gap-2 p-2\">\n                <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"font-medium text-muted-foreground\">\n                  Add team\n                </div>\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-15/page.tsx",
    "content": "import { SidebarLeft } from \"@/registry/bases/base/blocks/sidebar-15/components/sidebar-left\"\nimport { SidebarRight } from \"@/registry/bases/base/blocks/sidebar-15/components/sidebar-right\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <SidebarLeft />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\">\n          <div className=\"flex flex-1 items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-[orientation=vertical]:h-4\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem>\n                  <BreadcrumbPage className=\"line-clamp-1\">\n                    Project Management & Task Tracking\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\" />\n          <div className=\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\" />\n        </div>\n      </SidebarInset>\n      <SidebarRight />\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-16/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavMain } from \"@/registry/bases/base/blocks/sidebar-16/components/nav-main\"\nimport { NavProjects } from \"@/registry/bases/base/blocks/sidebar-16/components/nav-projects\"\nimport { NavSecondary } from \"@/registry/bases/base/blocks/sidebar-16/components/nav-secondary\"\nimport { NavUser } from \"@/registry/bases/base/blocks/sidebar-16/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"TerminalSquareIcon\"\n          tabler=\"IconTerminal2\"\n          hugeicons=\"ComputerTerminalIcon\"\n          phosphor=\"TerminalIcon\"\n          remixicon=\"RiTerminalBoxLine\"\n        />\n      ),\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BotIcon\"\n          tabler=\"IconRobot\"\n          hugeicons=\"RoboticIcon\"\n          phosphor=\"RobotIcon\"\n          remixicon=\"RiRobotLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BookOpenIcon\"\n          tabler=\"IconBook\"\n          hugeicons=\"BookOpen02Icon\"\n          phosphor=\"BookOpenIcon\"\n          remixicon=\"RiBookOpenLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Support\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LifeBuoyIcon\"\n          tabler=\"IconLifebuoy\"\n          hugeicons=\"ChartRingIcon\"\n          phosphor=\"LifebuoyIcon\"\n          remixicon=\"RiLifebuoyLine\"\n        />\n      ),\n    },\n    {\n      title: \"Feedback\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SendIcon\"\n          tabler=\"IconSend\"\n          hugeicons=\"SentIcon\"\n          phosphor=\"PaperPlaneTiltIcon\"\n          remixicon=\"RiSendPlaneLine\"\n        />\n      ),\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FrameIcon\"\n          tabler=\"IconFrame\"\n          hugeicons=\"CropIcon\"\n          phosphor=\"CropIcon\"\n          remixicon=\"RiCropLine\"\n        />\n      ),\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"PieChartIcon\"\n          tabler=\"IconChartPie\"\n          hugeicons=\"PieChartIcon\"\n          phosphor=\"ChartPieIcon\"\n          remixicon=\"RiPieChartLine\"\n        />\n      ),\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MapIcon\"\n          tabler=\"IconMap\"\n          hugeicons=\"MapsIcon\"\n          phosphor=\"MapTrifoldIcon\"\n          remixicon=\"RiMapLine\"\n        />\n      ),\n    },\n  ],\n}\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar\n      className=\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\"\n      {...props}\n    >\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" render={<a href=\"#\" />}>\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <IconPlaceholder\n                  lucide=\"TerminalIcon\"\n                  tabler=\"IconCommand\"\n                  hugeicons=\"CommandIcon\"\n                  phosphor=\"CommandIcon\"\n                  remixicon=\"RiCommandLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">Acme Inc</span>\n                <span className=\"truncate text-xs\">Enterprise</span>\n              </div>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-16/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible\n            key={item.title}\n            defaultOpen={item.isActive}\n            render={<SidebarMenuItem />}\n          >\n            <SidebarMenuButton\n              tooltip={item.title}\n              render={<a href={item.url} />}\n            >\n              {item.icon}\n              <span>{item.title}</span>\n            </SidebarMenuButton>\n            {item.items?.length ? (\n              <>\n                <SidebarMenuAction\n                  render={<CollapsibleTrigger />}\n                  className=\"aria-expanded:rotate-90\"\n                >\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                  />\n                  <span className=\"sr-only\">Toggle</span>\n                </SidebarMenuAction>\n                <CollapsibleContent>\n                  <SidebarMenuSub>\n                    {item.items?.map((subItem) => (\n                      <SidebarMenuSubItem key={subItem.title}>\n                        <SidebarMenuSubButton render={<a href={subItem.url} />}>\n                          <span>{subItem.title}</span>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                </CollapsibleContent>\n              </>\n            ) : null}\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-16/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: React.ReactNode\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton render={<a href={item.url} />}>\n              {item.icon}\n              <span>{item.name}</span>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={\n                  <SidebarMenuAction\n                    showOnHover\n                    className=\"aria-expanded:bg-muted\"\n                  />\n                }\n              >\n                <IconPlaceholder\n                  lucide=\"MoreHorizontalIcon\"\n                  tabler=\"IconDots\"\n                  hugeicons=\"MoreHorizontalCircle01Icon\"\n                  phosphor=\"DotsThreeOutlineIcon\"\n                  remixicon=\"RiMoreLine\"\n                />\n                <span className=\"sr-only\">More</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"FolderIcon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare2\"\n                    hugeicons=\"Share03Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton>\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-16/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/base/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton size=\"sm\" render={<a href={item.url} />}>\n                {item.icon}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-16/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <SidebarMenuButton\n                size=\"lg\"\n                className=\"aria-expanded:bg-muted aria-expanded:text-foreground\"\n              />\n            }\n          >\n            <Avatar>\n              <AvatarImage src={user.avatar} alt={user.name} />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-medium\">{user.name}</span>\n              <span className=\"truncate text-xs\">{user.email}</span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto size-4\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuGroup>\n              <DropdownMenuLabel className=\"p-0 font-normal\">\n                <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                  <Avatar>\n                    <AvatarImage src={user.avatar} alt={user.name} />\n                    <AvatarFallback>CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">{user.name}</span>\n                    <span className=\"truncate text-xs\">{user.email}</span>\n                  </div>\n                </div>\n              </DropdownMenuLabel>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"LogOutIcon\"\n                  tabler=\"IconLogout\"\n                  hugeicons=\"LogoutIcon\"\n                  phosphor=\"SignOutIcon\"\n                  remixicon=\"RiLogoutBoxLine\"\n                />\n                Log out\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-16/components/search-form.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport { SidebarInput } from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <div className=\"relative\">\n        <Label htmlFor=\"search\" className=\"sr-only\">\n          Search\n        </Label>\n        <SidebarInput\n          id=\"search\"\n          placeholder=\"Type to search...\"\n          className=\"h-8 pl-7\"\n        />\n        <IconPlaceholder\n          lucide=\"SearchIcon\"\n          tabler=\"IconSearch\"\n          hugeicons=\"SearchIcon\"\n          phosphor=\"MagnifyingGlassIcon\"\n          remixicon=\"RiSearchLine\"\n          className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n        />\n      </div>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-16/components/site-header.tsx",
    "content": "\"use client\"\n\nimport { SearchForm } from \"@/registry/bases/base/blocks/sidebar-16/components/search-form\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport { useSidebar } from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SiteHeader() {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <header className=\"sticky top-0 z-50 flex w-full items-center border-b bg-background\">\n      <div className=\"flex h-(--header-height) w-full items-center gap-2 px-4\">\n        <Button\n          className=\"h-8 w-8\"\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={toggleSidebar}\n        >\n          <IconPlaceholder\n            lucide=\"PanelLeftIcon\"\n            tabler=\"IconLayoutSidebar\"\n            hugeicons=\"SidebarLeftIcon\"\n            phosphor=\"SidebarIcon\"\n            remixicon=\"RiLayoutLeftLine\"\n          />\n        </Button>\n        <Separator\n          orientation=\"vertical\"\n          className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n        />\n        <Breadcrumb className=\"hidden sm:block\">\n          <BreadcrumbList>\n            <BreadcrumbItem>\n              <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n        <SearchForm className=\"w-full sm:ml-auto sm:w-auto\" />\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/sidebar-16/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/base/blocks/sidebar-16/components/app-sidebar\"\nimport { SiteHeader } from \"@/registry/bases/base/blocks/sidebar-16/components/site-header\"\nimport { SidebarInset, SidebarProvider } from \"@/registry/bases/base/ui/sidebar\"\n\nexport const iframeHeight = \"800px\"\n\nexport const description = \"A sidebar with a header and a search form.\"\n\nexport default function Page() {\n  return (\n    <div className=\"[--header-height:calc(--spacing(14))]\">\n      <SidebarProvider className=\"flex flex-col\">\n        <SiteHeader />\n        <div className=\"flex flex-1\">\n          <AppSidebar />\n          <SidebarInset>\n            <div className=\"flex flex-1 flex-col gap-4 p-4\">\n              <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n              </div>\n              <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n            </div>\n          </SidebarInset>\n        </div>\n      </SidebarProvider>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-01/components/signup-form.tsx",
    "content": "import { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\n\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\n  return (\n    <Card {...props}>\n      <CardHeader>\n        <CardTitle>Create an account</CardTitle>\n        <CardDescription>\n          Enter your information below to create your account\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n              <Input id=\"name\" type=\"text\" placeholder=\"John Doe\" required />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"m@example.com\"\n                required\n              />\n              <FieldDescription>\n                We&apos;ll use this to contact you. We will not share your email\n                with anyone else.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n              <Input id=\"password\" type=\"password\" required />\n              <FieldDescription>\n                Must be at least 8 characters long.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"confirm-password\">\n                Confirm Password\n              </FieldLabel>\n              <Input id=\"confirm-password\" type=\"password\" required />\n              <FieldDescription>Please confirm your password.</FieldDescription>\n            </Field>\n            <FieldGroup>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n                <Button variant=\"outline\" type=\"button\">\n                  Sign up with Google\n                </Button>\n                <FieldDescription className=\"px-6 text-center\">\n                  Already have an account? <a href=\"#\">Sign in</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-01/page.tsx",
    "content": "import { SignupForm } from \"@/registry/bases/base/blocks/signup-01/components/signup-form\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-02/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <FieldGroup>\n        <div className=\"flex flex-col items-center gap-1 text-center\">\n          <h1 className=\"text-2xl font-bold\">Create your account</h1>\n          <p className=\"text-sm text-balance text-muted-foreground\">\n            Fill in the form below to create your account\n          </p>\n        </div>\n        <Field>\n          <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n          <Input\n            id=\"name\"\n            type=\"text\"\n            placeholder=\"John Doe\"\n            required\n            className=\"bg-background\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n          <Input\n            id=\"email\"\n            type=\"email\"\n            placeholder=\"m@example.com\"\n            required\n            className=\"bg-background\"\n          />\n          <FieldDescription>\n            We&apos;ll use this to contact you. We will not share your email\n            with anyone else.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n          <Input\n            id=\"password\"\n            type=\"password\"\n            required\n            className=\"bg-background\"\n          />\n          <FieldDescription>\n            Must be at least 8 characters long.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"confirm-password\">Confirm Password</FieldLabel>\n          <Input\n            id=\"confirm-password\"\n            type=\"password\"\n            required\n            className=\"bg-background\"\n          />\n          <FieldDescription>Please confirm your password.</FieldDescription>\n        </Field>\n        <Field>\n          <Button type=\"submit\">Create Account</Button>\n        </Field>\n        <FieldSeparator>Or continue with</FieldSeparator>\n        <Field>\n          <Button variant=\"outline\" type=\"button\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            Sign up with GitHub\n          </Button>\n          <FieldDescription className=\"px-6 text-center\">\n            Already have an account? <a href=\"#\">Sign in</a>\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-02/page.tsx",
    "content": "\"use client\"\n\nimport { SignupForm } from \"@/registry/bases/base/blocks/signup-02/components/signup-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"grid min-h-svh lg:grid-cols-2\">\n      <div className=\"flex flex-col gap-4 p-6 md:p-10\">\n        <div className=\"flex justify-center gap-2 md:justify-start\">\n          <a href=\"#\" className=\"flex items-center gap-2 font-medium\">\n            <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n              <IconPlaceholder\n                lucide=\"GalleryVerticalEndIcon\"\n                tabler=\"IconLayoutRows\"\n                hugeicons=\"LayoutBottomIcon\"\n                phosphor=\"RowsIcon\"\n                remixicon=\"RiGalleryLine\"\n                className=\"size-4\"\n              />\n            </div>\n            Acme Inc.\n          </a>\n        </div>\n        <div className=\"flex flex-1 items-center justify-center\">\n          <div className=\"w-full max-w-xs\">\n            <SignupForm />\n          </div>\n        </div>\n      </div>\n      <div className=\"relative hidden bg-muted lg:block\">\n        <img\n          src=\"/placeholder.svg\"\n          alt=\"Image\"\n          className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-03/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader className=\"text-center\">\n          <CardTitle className=\"text-xl\">Create your account</CardTitle>\n          <CardDescription>\n            Enter your email below to create your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n                <Input id=\"name\" type=\"text\" placeholder=\"John Doe\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <Field className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                    <Input id=\"password\" type=\"password\" required />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"confirm-password\">\n                      Confirm Password\n                    </FieldLabel>\n                    <Input id=\"confirm-password\" type=\"password\" required />\n                  </Field>\n                </Field>\n                <FieldDescription>\n                  Must be at least 8 characters long.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n                <FieldDescription className=\"text-center\">\n                  Already have an account? <a href=\"#\">Sign in</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-03/page.tsx",
    "content": "\"use client\"\n\nimport { SignupForm } from \"@/registry/bases/base/blocks/signup-03/components/signup-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\">\n      <div className=\"flex w-full max-w-sm flex-col gap-6\">\n        <a href=\"#\" className=\"flex items-center gap-2 self-center font-medium\">\n          <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n            <IconPlaceholder\n              lucide=\"GalleryVerticalEndIcon\"\n              tabler=\"IconLayoutRows\"\n              hugeicons=\"LayoutBottomIcon\"\n              phosphor=\"RowsIcon\"\n              remixicon=\"RiGalleryLine\"\n              className=\"size-4\"\n            />\n          </div>\n          Acme Inc.\n        </a>\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-04/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card className=\"overflow-hidden p-0\">\n        <CardContent className=\"grid p-0 md:grid-cols-2\">\n          <form className=\"p-6 md:p-8\">\n            <FieldGroup>\n              <div className=\"flex flex-col items-center gap-2 text-center\">\n                <h1 className=\"text-2xl font-bold\">Create your account</h1>\n                <p className=\"text-sm text-balance text-muted-foreground\">\n                  Enter your email below to create your account\n                </p>\n              </div>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n                <FieldDescription>\n                  We&apos;ll use this to contact you. We will not share your\n                  email with anyone else.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Field className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                    <Input id=\"password\" type=\"password\" required />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"confirm-password\">\n                      Confirm Password\n                    </FieldLabel>\n                    <Input id=\"confirm-password\" type=\"password\" required />\n                  </Field>\n                </Field>\n                <FieldDescription>\n                  Must be at least 8 characters long.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field className=\"grid grid-cols-3 gap-4\">\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Apple</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Google</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Meta</span>\n                </Button>\n              </Field>\n              <FieldDescription className=\"text-center\">\n                Already have an account? <a href=\"#\">Sign in</a>\n              </FieldDescription>\n            </FieldGroup>\n          </form>\n          <div className=\"relative hidden bg-muted md:block\">\n            <img\n              src=\"/placeholder.svg\"\n              alt=\"Image\"\n              className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n            />\n          </div>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-04/page.tsx",
    "content": "import { SignupForm } from \"@/registry/bases/base/blocks/signup-04/components/signup-form\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\">\n      <div className=\"w-full max-w-sm md:max-w-4xl\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-05/components/signup-form.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <form>\n        <FieldGroup>\n          <div className=\"flex flex-col items-center gap-2 text-center\">\n            <a\n              href=\"#\"\n              className=\"flex flex-col items-center gap-2 font-medium\"\n            >\n              <div className=\"flex size-8 items-center justify-center rounded-md\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-6\"\n                />\n              </div>\n              <span className=\"sr-only\">Acme Inc.</span>\n            </a>\n            <h1 className=\"text-xl font-bold\">Welcome to Acme Inc.</h1>\n            <FieldDescription>\n              Already have an account? <a href=\"#\">Sign in</a>\n            </FieldDescription>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              placeholder=\"m@example.com\"\n              required\n            />\n          </Field>\n          <Field>\n            <Button type=\"submit\">Create Account</Button>\n          </Field>\n          <FieldSeparator>Or</FieldSeparator>\n          <Field className=\"grid gap-4 sm:grid-cols-2\">\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Apple\n            </Button>\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Google\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/blocks/signup-05/page.tsx",
    "content": "import { SignupForm } from \"@/registry/bases/base/blocks/signup-05/components/signup-form\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/components/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const components: Registry[\"items\"] = [\n  {\n    name: \"example\",\n    title: \"Example\",\n    type: \"registry:component\",\n    files: [\n      {\n        path: \"components/example.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/base/components/example.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div className=\"w-full bg-muted dark:bg-background\">\n      <div\n        data-slot=\"example-wrapper\"\n        className={cn(\n          \"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\",\n\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction Example({\n  title,\n  children,\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  title?: string\n  containerClassName?: string\n}) {\n  return (\n    <div\n      data-slot=\"example\"\n      className={cn(\n        \"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\",\n        containerClassName\n      )}\n      {...props}\n    >\n      {title && (\n        <div className=\"px-1.5 py-2 text-xs font-medium text-muted-foreground\">\n          {title}\n        </div>\n      )}\n      <div\n        data-slot=\"example-content\"\n        className={cn(\n          \"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\",\n          className\n        )}\n      >\n        {children}\n      </div>\n    </div>\n  )\n}\n\nexport { ExampleWrapper, Example }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const examples: Registry[\"items\"] = [\n  {\n    name: \"accordion-example\",\n    title: \"Accordion\",\n    type: \"registry:example\",\n    registryDependencies: [\"accordion\", \"button\", \"card\", \"example\"],\n    files: [\n      {\n        path: \"examples/accordion-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"alert-example\",\n    title: \"Alert\",\n    type: \"registry:example\",\n    registryDependencies: [\"alert\", \"badge\", \"example\"],\n    files: [\n      {\n        path: \"examples/alert-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"alert-dialog-example\",\n    title: \"Alert Dialog\",\n    type: \"registry:example\",\n    registryDependencies: [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n    files: [\n      {\n        path: \"examples/alert-dialog-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"aspect-ratio-example\",\n    title: \"Aspect Ratio\",\n    type: \"registry:example\",\n    registryDependencies: [\"aspect-ratio\", \"example\"],\n    files: [\n      {\n        path: \"examples/aspect-ratio-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"avatar-example\",\n    title: \"Avatar\",\n    type: \"registry:example\",\n    registryDependencies: [\"avatar\", \"button\", \"empty\", \"example\"],\n    files: [\n      {\n        path: \"examples/avatar-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"badge-example\",\n    title: \"Badge\",\n    type: \"registry:example\",\n    registryDependencies: [\"badge\", \"spinner\", \"example\"],\n    files: [\n      {\n        path: \"examples/badge-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb-example\",\n    title: \"Breadcrumb\",\n    type: \"registry:example\",\n    registryDependencies: [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n    files: [\n      {\n        path: \"examples/breadcrumb-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-example\",\n    title: \"Button\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"example\"],\n    files: [\n      {\n        path: \"examples/button-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-example\",\n    title: \"Button Group\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"button-group\",\n      \"dropdown-menu\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"label\",\n      \"popover\",\n      \"select\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/button-group-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"calendar-example\",\n    title: \"Calendar\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"calendar\",\n      \"card\",\n      \"field\",\n      \"input\",\n      \"label\",\n      \"popover\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/calendar-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"card-example\",\n    title: \"Card\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"avatar\",\n      \"button\",\n      \"card\",\n      \"field\",\n      \"input\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/card-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"carousel-example\",\n    title: \"Carousel\",\n    type: \"registry:example\",\n    registryDependencies: [\"card\", \"carousel\", \"example\"],\n    files: [\n      {\n        path: \"examples/carousel-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"chart-example\",\n    title: \"Chart\",\n    type: \"registry:example\",\n    registryDependencies: [\"chart\", \"card\", \"example\"],\n    files: [\n      {\n        path: \"examples/chart-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"checkbox-example\",\n    title: \"Checkbox\",\n    type: \"registry:example\",\n    registryDependencies: [\"checkbox\", \"field\", \"table\", \"example\"],\n    files: [\n      {\n        path: \"examples/checkbox-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"collapsible-example\",\n    title: \"Collapsible\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"collapsible\",\n      \"field\",\n      \"input\",\n      \"tabs\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/collapsible-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"combobox-example\",\n    title: \"Combobox\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"combobox\",\n      \"dialog\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"item\",\n      \"select\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/combobox-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"command-example\",\n    title: \"Command\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"command\", \"example\"],\n    files: [\n      {\n        path: \"examples/command-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"context-menu-example\",\n    title: \"Context Menu\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"context-menu\", \"dialog\", \"example\"],\n    files: [\n      {\n        path: \"examples/context-menu-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dialog-example\",\n    title: \"Dialog\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"checkbox\",\n      \"dialog\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"kbd\",\n      \"native-select\",\n      \"select\",\n      \"switch\",\n      \"tabs\",\n      \"textarea\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/dialog-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"drawer-example\",\n    title: \"Drawer\",\n    type: \"registry:example\",\n    registryDependencies: [\"drawer\", \"example\"],\n    files: [\n      {\n        path: \"examples/drawer-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dropdown-menu-example\",\n    title: \"Dropdown Menu\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"avatar\",\n      \"button\",\n      \"dialog\",\n      \"dropdown-menu\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/dropdown-menu-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-example\",\n    title: \"Empty\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"empty\", \"input-group\", \"kbd\", \"example\"],\n    files: [\n      {\n        path: \"examples/empty-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-example\",\n    title: \"Field\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"badge\",\n      \"checkbox\",\n      \"field\",\n      \"input\",\n      \"input-otp\",\n      \"native-select\",\n      \"radio-group\",\n      \"select\",\n      \"slider\",\n      \"switch\",\n      \"textarea\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/field-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"hover-card-example\",\n    title: \"Hover Card\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"dialog\", \"hover-card\", \"example\"],\n    files: [\n      {\n        path: \"examples/hover-card-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-example\",\n    title: \"Input\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"field\",\n      \"input\",\n      \"native-select\",\n      \"select\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/input-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-example\",\n    title: \"Input Group\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"button-group\",\n      \"card\",\n      \"dropdown-menu\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"kbd\",\n      \"popover\",\n      \"spinner\",\n      \"textarea\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/input-group-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-otp-example\",\n    title: \"Input OTP\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"card\", \"field\", \"input-otp\", \"example\"],\n    files: [\n      {\n        path: \"examples/input-otp-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-example\",\n    title: \"Item\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"item\", \"example\"],\n    files: [\n      {\n        path: \"examples/item-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"kbd-example\",\n    title: \"Kbd\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"input-group\",\n      \"kbd\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/kbd-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"label-example\",\n    title: \"Label\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"checkbox\",\n      \"field\",\n      \"input\",\n      \"label\",\n      \"textarea\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/label-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"menubar-example\",\n    title: \"Menubar\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"dialog\", \"menubar\", \"example\"],\n    files: [\n      {\n        path: \"examples/menubar-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"native-select-example\",\n    title: \"Native Select\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"native-select\", \"example\"],\n    files: [\n      {\n        path: \"examples/native-select-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"navigation-menu-example\",\n    title: \"Navigation Menu\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"dialog\", \"navigation-menu\", \"example\"],\n    files: [\n      {\n        path: \"examples/navigation-menu-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"pagination-example\",\n    title: \"Pagination\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"pagination\", \"select\", \"example\"],\n    files: [\n      {\n        path: \"examples/pagination-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"popover-example\",\n    title: \"Popover\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"dialog\",\n      \"field\",\n      \"input\",\n      \"popover\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/popover-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"progress-example\",\n    title: \"Progress\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"item\", \"progress\", \"slider\", \"example\"],\n    files: [\n      {\n        path: \"examples/progress-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"radio-group-example\",\n    title: \"Radio Group\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"radio-group\", \"example\"],\n    files: [\n      {\n        path: \"examples/radio-group-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"resizable-example\",\n    title: \"Resizable\",\n    type: \"registry:example\",\n    registryDependencies: [\"resizable\", \"example\"],\n    files: [\n      {\n        path: \"examples/resizable-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"scroll-area-example\",\n    title: \"Scroll Area\",\n    type: \"registry:example\",\n    registryDependencies: [\"scroll-area\", \"separator\", \"example\"],\n    files: [\n      {\n        path: \"examples/scroll-area-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"select-example\",\n    title: \"Select\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"dialog\",\n      \"field\",\n      \"input\",\n      \"item\",\n      \"native-select\",\n      \"select\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/select-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"separator-example\",\n    title: \"Separator\",\n    type: \"registry:example\",\n    registryDependencies: [\"separator\", \"example\"],\n    files: [\n      {\n        path: \"examples/separator-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sheet-example\",\n    title: \"Sheet\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n    files: [\n      {\n        path: \"examples/sheet-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-example\",\n    title: \"Sidebar\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"dropdown-menu\",\n      \"item\",\n      \"label\",\n      \"sidebar\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/sidebar-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-icon-example\",\n    title: \"Sidebar (Icon)\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"avatar\",\n      \"button\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"item\",\n      \"sidebar\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/sidebar-icon-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-inset-example\",\n    title: \"Sidebar (Inset)\",\n    type: \"registry:example\",\n    registryDependencies: [\"collapsible\", \"sidebar\", \"example\"],\n    files: [\n      {\n        path: \"examples/sidebar-inset-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-floating-example\",\n    title: \"Sidebar (Floating)\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"dropdown-menu\",\n      \"field\",\n      \"item\",\n      \"sidebar\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/sidebar-floating-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"skeleton-example\",\n    title: \"Skeleton\",\n    type: \"registry:example\",\n    registryDependencies: [\"skeleton\", \"example\"],\n    files: [\n      {\n        path: \"examples/skeleton-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"slider-example\",\n    title: \"Slider\",\n    type: \"registry:example\",\n    registryDependencies: [\"label\", \"slider\", \"example\"],\n    files: [\n      {\n        path: \"examples/slider-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sonner-example\",\n    title: \"Sonner\",\n    type: \"registry:example\",\n    registryDependencies: [\"sonner\", \"example\"],\n    files: [\n      {\n        path: \"examples/sonner-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-example\",\n    title: \"Spinner\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"badge\",\n      \"button\",\n      \"empty\",\n      \"field\",\n      \"input-group\",\n      \"spinner\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/spinner-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"switch-example\",\n    title: \"Switch\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"label\", \"switch\", \"example\"],\n    files: [\n      {\n        path: \"examples/switch-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"table-example\",\n    title: \"Table\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"dropdown-menu\",\n      \"input\",\n      \"select\",\n      \"table\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/table-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"tabs-example\",\n    title: \"Tabs\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n    files: [\n      {\n        path: \"examples/tabs-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"textarea-example\",\n    title: \"Textarea\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"textarea\", \"example\"],\n    files: [\n      {\n        path: \"examples/textarea-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-example\",\n    title: \"Toggle\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle\", \"example\"],\n    files: [\n      {\n        path: \"examples/toggle-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-example\",\n    title: \"Toggle Group\",\n    type: \"registry:example\",\n    registryDependencies: [\"input\", \"select\", \"toggle-group\", \"example\"],\n    files: [\n      {\n        path: \"examples/toggle-group-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"tooltip-example\",\n    title: \"Tooltip\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"kbd\", \"tooltip\", \"example\"],\n    files: [\n      {\n        path: \"examples/tooltip-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"demo\",\n    title: \"Demo\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"alert-dialog\",\n      \"badge\",\n      \"button\",\n      \"button-group\",\n      \"card\",\n      \"checkbox\",\n      \"dropdown-menu\",\n      \"field\",\n      \"input-group\",\n      \"item\",\n      \"radio-group\",\n      \"slider\",\n      \"switch\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"examples/demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"component-example\",\n    title: \"Example\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"alert-dialog\",\n      \"badge\",\n      \"button\",\n      \"card\",\n      \"combobox\",\n      \"dropdown-menu\",\n      \"field\",\n      \"input\",\n      \"select\",\n      \"textarea\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/component-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/accordion-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/registry/bases/base/ui/accordion\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AccordionExample() {\n  return (\n    <ExampleWrapper className=\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\">\n      <AccordionBasic />\n      <AccordionMultiple />\n      <AccordionWithBorders />\n      <AccordionInCard />\n      <AccordionWithDisabled />\n    </ExampleWrapper>\n  )\n}\n\nfunction AccordionBasic() {\n  const items = [\n    {\n      value: \"item-1\",\n      trigger: \"Is it accessible?\",\n      content: \"Yes. It adheres to the WAI-ARIA design pattern.\",\n    },\n    {\n      value: \"item-2\",\n      trigger: \"Is it styled?\",\n      content:\n        \"Yes. It comes with default styles that matches the other components' aesthetic.\",\n    },\n    {\n      value: \"item-3\",\n      trigger: \"Is it animated?\",\n      content:\n        \"Yes. It's animated by default, but you can disable it if you prefer.\",\n    },\n  ]\n\n  return (\n    <Example title=\"Basic\">\n      <Accordion className=\"mx-auto max-w-lg\">\n        {items.map((item) => (\n          <AccordionItem key={item.value} value={item.value}>\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\n            <AccordionContent>{item.content}</AccordionContent>\n          </AccordionItem>\n        ))}\n      </Accordion>\n    </Example>\n  )\n}\n\nfunction AccordionMultiple() {\n  const items = [\n    {\n      value: \"item-1\",\n      trigger:\n        \"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\",\n      content:\n        \"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\",\n    },\n    {\n      value: \"item-2\",\n      trigger:\n        \"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\",\n      content:\n        \"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\",\n    },\n  ]\n\n  return (\n    <Example title=\"Multiple\">\n      <Accordion multiple className=\"mx-auto max-w-lg\">\n        {items.map((item) => (\n          <AccordionItem key={item.value} value={item.value}>\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\n            <AccordionContent>{item.content}</AccordionContent>\n          </AccordionItem>\n        ))}\n      </Accordion>\n    </Example>\n  )\n}\n\nfunction AccordionWithBorders() {\n  const items = [\n    {\n      value: \"billing\",\n      trigger: \"How does billing work?\",\n      content:\n        \"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\",\n    },\n    {\n      value: \"security\",\n      trigger: \"Is my data secure?\",\n      content:\n        \"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\",\n    },\n    {\n      value: \"integration\",\n      trigger: \"What integrations do you support?\",\n      content: (\n        <>\n          <p>\n            We integrate with 500+ popular tools including Slack, Zapier,\n            Salesforce, HubSpot, and more. You can also build custom\n            integrations using our REST API and webhooks.{\" \"}\n          </p>\n          <p>\n            Our API documentation includes code examples in 10+ programming\n            languages.\n          </p>\n        </>\n      ),\n    },\n  ]\n\n  return (\n    <Example title=\"With Borders\">\n      <Accordion className=\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\">\n        {items.map((item) => (\n          <AccordionItem\n            key={item.value}\n            value={item.value}\n            className=\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\"\n          >\n            <AccordionTrigger className=\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\">\n              {item.trigger}\n            </AccordionTrigger>\n            <AccordionContent className=\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\">\n              {item.content}\n            </AccordionContent>\n          </AccordionItem>\n        ))}\n      </Accordion>\n    </Example>\n  )\n}\n\nfunction AccordionInCard() {\n  const items = [\n    {\n      value: \"plans\",\n      trigger: \"What subscription plans do you offer?\",\n      content: (\n        <>\n          <p>\n            We offer three subscription tiers: Starter ($9/month), Professional\n            ($29/month), and Enterprise ($99/month). Each plan includes\n            increasing storage limits, API access, priority support, and team\n            collaboration features.\n          </p>\n          <p>\n            <a href=\"#\">Annual billing is available</a> with a 20% discount. All\n            plans include a 14-day free trial with no credit card required.\n          </p>\n          <Button size=\"sm\">\n            View plans\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRight01Icon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n            />\n          </Button>\n        </>\n      ),\n    },\n    {\n      value: \"billing\",\n      trigger: \"How does billing work?\",\n      content: (\n        <>\n          <p>\n            Billing occurs automatically at the start of each billing cycle. We\n            accept all major credit cards, PayPal, and ACH transfers for\n            enterprise customers.\n          </p>\n          <p>\n            You&apos;ll receive an invoice via email after each payment. You can\n            update your payment method or billing information anytime in your\n            account settings. Failed payments will trigger automated retry\n            attempts and email notifications.\n          </p>\n        </>\n      ),\n    },\n    {\n      value: \"upgrade\",\n      trigger: \"Can I upgrade or downgrade my plan?\",\n      content: (\n        <>\n          <p>\n            Yes, you can change your plan at any time. When upgrading,\n            you&apos;ll be charged a prorated amount for the remainder of your\n            billing cycle and immediately gain access to new features.\n          </p>\n          <p>\n            When downgrading, the change takes effect at the end of your current\n            billing period, and you&apos;ll retain access to premium features\n            until then. No refunds are provided for downgrades.\n          </p>\n        </>\n      ),\n    },\n    {\n      value: \"cancel\",\n      trigger: \"How do I cancel my subscription?\",\n      content: (\n        <>\n          <p>\n            You can cancel your subscription anytime from your account settings.\n            There are no cancellation fees or penalties. Your access will\n            continue until the end of your current billing period.\n          </p>\n          <p>\n            After cancellation, your data is retained for 30 days in case you\n            want to reactivate. You can export all your data before or after\n            canceling. We&apos;d love to hear your feedback about why\n            you&apos;re leaving.\n          </p>\n        </>\n      ),\n    },\n    {\n      value: \"refund\",\n      trigger: \"What is your refund policy?\",\n      content: (\n        <>\n          <p>\n            We offer a 30-day money-back guarantee for new subscriptions. If\n            you&apos;re not satisfied within the first 30 days, contact our\n            support team for a full refund.\n          </p>\n          <p>\n            After 30 days, we don&apos;t provide refunds for partial billing\n            periods, but you can cancel anytime to avoid future charges.\n            Enterprise customers have custom refund terms outlined in their\n            contracts.\n          </p>\n        </>\n      ),\n    },\n  ]\n\n  return (\n    <Example title=\"In Card\">\n      <Card className=\"mx-auto w-full max-w-lg gap-4\">\n        <CardHeader>\n          <CardTitle>Subscription & Billing</CardTitle>\n          <CardDescription>\n            Common questions about your account, plans, and payments\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <Accordion\n            multiple\n            defaultValue={[\"plans\"]}\n            className=\"style-maia:rounded-md style-mira:rounded-md\"\n          >\n            {items.map((item) => (\n              <AccordionItem key={item.value} value={item.value}>\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\n                <AccordionContent>{item.content}</AccordionContent>\n              </AccordionItem>\n            ))}\n          </Accordion>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction AccordionWithDisabled() {\n  const items = [\n    {\n      value: \"item-1\",\n      trigger: \"Can I access my account history?\",\n      content:\n        \"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\",\n      disabled: false,\n    },\n    {\n      value: \"item-2\",\n      trigger: \"Premium feature information\",\n      content:\n        \"This section contains information about premium features. Upgrade your plan to access this content.\",\n      disabled: true,\n    },\n    {\n      value: \"item-3\",\n      trigger: \"How do I update my email address?\",\n      content:\n        \"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\",\n      disabled: false,\n    },\n  ]\n\n  return (\n    <Example title=\"With Disabled\">\n      <Accordion className=\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\">\n        {items.map((item) => (\n          <AccordionItem\n            key={item.value}\n            value={item.value}\n            disabled={item.disabled}\n            className=\"p-1 data-open:bg-muted/50\"\n          >\n            <AccordionTrigger className=\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\">\n              {item.trigger}\n            </AccordionTrigger>\n            <AccordionContent className=\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\">\n              {item.content}\n            </AccordionContent>\n          </AccordionItem>\n        ))}\n      </Accordion>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/alert-dialog-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/bases/base/ui/alert-dialog\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AlertDialogExample() {\n  return (\n    <ExampleWrapper>\n      <AlertDialogBasic />\n      <AlertDialogSmall />\n      <AlertDialogWithMedia />\n      <AlertDialogSmallWithMedia />\n      <AlertDialogDestructive />\n      <AlertDialogInDialog />\n    </ExampleWrapper>\n  )\n}\n\nfunction AlertDialogBasic() {\n  return (\n    <Example title=\"Basic\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger\n          render={<Button variant=\"outline\">Default</Button>}\n        />\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This action cannot be undone. This will permanently delete your\n              account and remove your data from our servers.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\n            <AlertDialogAction>Continue</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogSmall() {\n  return (\n    <Example title=\"Small\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger render={<Button variant=\"outline\">Small</Button>} />\n        <AlertDialogContent size=\"sm\">\n          <AlertDialogHeader>\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n            <AlertDialogDescription>\n              Do you want to allow the USB accessory to connect to this device?\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n            <AlertDialogAction>Allow</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogWithMedia() {\n  return (\n    <Example title=\"With Media\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger\n          render={<Button variant=\"outline\">Default (Media)</Button>}\n        />\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogMedia>\n              <IconPlaceholder\n                lucide=\"BluetoothIcon\"\n                tabler=\"IconBluetooth\"\n                hugeicons=\"BluetoothIcon\"\n                phosphor=\"BluetoothIcon\"\n                remixicon=\"RiBluetoothLine\"\n              />\n            </AlertDialogMedia>\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This will permanently delete your account and remove your data\n              from our servers.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\n            <AlertDialogAction>Continue</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogSmallWithMedia() {\n  return (\n    <Example title=\"Small With Media\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger\n          render={<Button variant=\"outline\">Small (Media)</Button>}\n        />\n\n        <AlertDialogContent size=\"sm\">\n          <AlertDialogHeader>\n            <AlertDialogMedia>\n              <IconPlaceholder\n                lucide=\"BluetoothIcon\"\n                tabler=\"IconBluetooth\"\n                hugeicons=\"BluetoothIcon\"\n                phosphor=\"BluetoothIcon\"\n                remixicon=\"RiBluetoothLine\"\n              />\n            </AlertDialogMedia>\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n            <AlertDialogDescription>\n              Do you want to allow the USB accessory to connect to this device?\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n            <AlertDialogAction>Allow</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogDestructive() {\n  return (\n    <Example title=\"Destructive\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger\n          render={<Button variant=\"destructive\">Delete Chat</Button>}\n        />\n        <AlertDialogContent size=\"sm\">\n          <AlertDialogHeader>\n            <AlertDialogMedia className=\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\">\n              <IconPlaceholder\n                lucide=\"Trash2Icon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"Delete02Icon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n            </AlertDialogMedia>\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This will permanently delete this chat conversation. View{\" \"}\n              <a href=\"#\">Settings</a> delete any memories saved during this\n              chat.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel variant=\"ghost\">Cancel</AlertDialogCancel>\n            <AlertDialogAction variant=\"destructive\">Delete</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogInDialog() {\n  return (\n    <Example title=\"In Dialog\" className=\"items-center\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Alert Dialog Example</DialogTitle>\n            <DialogDescription>\n              Click the button below to open an alert dialog.\n            </DialogDescription>\n          </DialogHeader>\n          <DialogFooter>\n            <AlertDialog>\n              <AlertDialogTrigger render={<Button />}>\n                Open Alert Dialog\n              </AlertDialogTrigger>\n              <AlertDialogContent size=\"sm\">\n                <AlertDialogHeader>\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n                  <AlertDialogDescription>\n                    This action cannot be undone. This will permanently delete\n                    your account and remove your data from our servers.\n                  </AlertDialogDescription>\n                </AlertDialogHeader>\n                <AlertDialogFooter>\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\n                  <AlertDialogAction>Continue</AlertDialogAction>\n                </AlertDialogFooter>\n              </AlertDialogContent>\n            </AlertDialog>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/alert-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Alert,\n  AlertAction,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/bases/base/ui/alert\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AlertExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1\">\n      <AlertExample1 />\n      <AlertExample2 />\n      <AlertExample3 />\n      <AlertExample4 />\n    </ExampleWrapper>\n  )\n}\n\nfunction AlertExample1() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"mx-auto flex w-full max-w-lg flex-col gap-4\">\n        <Alert>\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\n        </Alert>\n        <Alert>\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\n          <AlertDescription>\n            This is an alert with title and description.\n          </AlertDescription>\n        </Alert>\n        <Alert>\n          <AlertDescription>\n            This one has a description only. No title. No icon.\n          </AlertDescription>\n        </Alert>\n      </div>\n    </Example>\n  )\n}\n\nfunction AlertExample2() {\n  return (\n    <Example title=\"With Icons\">\n      <div className=\"mx-auto flex w-full max-w-lg flex-col gap-4\">\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>\n            Let&apos;s try one with icon, title and a <a href=\"#\">link</a>.\n          </AlertTitle>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertDescription>\n            This one has an icon and a description only. No title.{\" \"}\n            <a href=\"#\">But it has a link</a> and a <a href=\"#\">second link</a>.\n          </AlertDescription>\n        </Alert>\n\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\n          <AlertDescription>\n            This is an alert with icon, title and description.\n          </AlertDescription>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>\n            This is a very long alert title that demonstrates how the component\n            handles extended text content and potentially wraps across multiple\n            lines\n          </AlertTitle>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertDescription>\n            This is a very long alert description that demonstrates how the\n            component handles extended text content and potentially wraps across\n            multiple lines\n          </AlertDescription>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>\n            This is an extremely long alert title that spans multiple lines to\n            demonstrate how the component handles very lengthy headings while\n            maintaining readability and proper text wrapping behavior\n          </AlertTitle>\n          <AlertDescription>\n            This is an equally long description that contains detailed\n            information about the alert. It shows how the component can\n            accommodate extensive content while preserving proper spacing,\n            alignment, and readability across different screen sizes and\n            viewport widths. This helps ensure the user experience remains\n            consistent regardless of the content length.\n          </AlertDescription>\n        </Alert>\n      </div>\n    </Example>\n  )\n}\n\nfunction AlertExample3() {\n  return (\n    <Example title=\"Destructive\">\n      <div className=\"mx-auto flex w-full max-w-lg flex-col gap-4\">\n        <Alert variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>Something went wrong!</AlertTitle>\n          <AlertDescription>\n            Your session has expired. Please log in again.\n          </AlertDescription>\n        </Alert>\n        <Alert variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>Unable to process your payment.</AlertTitle>\n          <AlertDescription>\n            <p>\n              Please verify your <a href=\"#\">billing information</a> and try\n              again.\n            </p>\n            <ul className=\"list-inside list-disc\">\n              <li>Check your card details</li>\n              <li>Ensure sufficient funds</li>\n              <li>Verify billing address</li>\n            </ul>\n          </AlertDescription>\n        </Alert>\n      </div>\n    </Example>\n  )\n}\n\nfunction AlertExample4() {\n  return (\n    <Example title=\"With Actions\">\n      <div className=\"mx-auto flex w-full max-w-lg flex-col gap-4\">\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\n          <AlertAction>\n            <Button size=\"xs\">Undo</Button>\n          </AlertAction>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\n          <AlertDescription>\n            This is a very long alert title that demonstrates how the component\n            handles extended text content.\n          </AlertDescription>\n          <AlertAction>\n            <Badge variant=\"secondary\">Badge</Badge>\n          </AlertAction>\n        </Alert>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { AspectRatio } from \"@/registry/bases/base/ui/aspect-ratio\"\n\nexport default function AspectRatioExample() {\n  return (\n    <ExampleWrapper className=\"max-w-4xl 2xl:max-w-4xl\">\n      <AspectRatio16x9 />\n      <AspectRatio21x9 />\n      <AspectRatio1x1 />\n      <AspectRatio9x16 />\n    </ExampleWrapper>\n  )\n}\n\nfunction AspectRatio16x9() {\n  return (\n    <Example title=\"16:9\" className=\"items-center justify-center\">\n      <AspectRatio ratio={16 / 9} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </Example>\n  )\n}\n\nfunction AspectRatio1x1() {\n  return (\n    <Example title=\"1:1\" className=\"items-start\">\n      <AspectRatio ratio={1 / 1} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </Example>\n  )\n}\n\nfunction AspectRatio9x16() {\n  return (\n    <Example title=\"9:16\" className=\"items-center justify-center\">\n      <AspectRatio ratio={9 / 16} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </Example>\n  )\n}\n\nfunction AspectRatio21x9() {\n  return (\n    <Example title=\"21:9\" className=\"items-center justify-center\">\n      <AspectRatio ratio={21 / 9} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/avatar-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AvatarExample() {\n  return (\n    <ExampleWrapper>\n      <AvatarSizes />\n      <AvatarWithBadge />\n      <AvatarWithBadgeIcon />\n      <AvatarGroupExample />\n      <AvatarGroupWithCount />\n      <AvatarGroupWithIconCount />\n      <AvatarInEmpty />\n    </ExampleWrapper>\n  )\n}\n\nfunction AvatarSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n      </div>\n    </Example>\n  )\n}\n\nfunction AvatarWithBadge() {\n  return (\n    <Example title=\"Badge\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/jorgezreik.png\"\n            alt=\"@jorgezreik\"\n          />\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/jorgezreik.png\"\n            alt=\"@jorgezreik\"\n          />\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/jorgezreik.png\"\n            alt=\"@jorgezreik\"\n          />\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar>\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n      </div>\n    </Example>\n  )\n}\n\nfunction AvatarWithBadgeIcon() {\n  return (\n    <Example title=\"Badge with Icon\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/pranathip.png\"\n            alt=\"@pranathip\"\n          />\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/pranathip.png\"\n            alt=\"@pranathip\"\n          />\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/pranathip.png\"\n            alt=\"@pranathip\"\n          />\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"CheckIcon\"\n              tabler=\"IconCheck\"\n              hugeicons=\"Tick02Icon\"\n              phosphor=\"CheckIcon\"\n              remixicon=\"RiCheckLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n        <Avatar>\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"CheckIcon\"\n              tabler=\"IconCheck\"\n              hugeicons=\"Tick02Icon\"\n              phosphor=\"CheckIcon\"\n              remixicon=\"RiCheckLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"CheckIcon\"\n              tabler=\"IconCheck\"\n              hugeicons=\"Tick02Icon\"\n              phosphor=\"CheckIcon\"\n              remixicon=\"RiCheckLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n      </div>\n    </Example>\n  )\n}\n\nfunction AvatarGroupExample() {\n  return (\n    <Example title=\"Group\">\n      <AvatarGroup>\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar size=\"lg\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n      </AvatarGroup>\n    </Example>\n  )\n}\n\nfunction AvatarGroupWithCount() {\n  return (\n    <Example title=\"Group with Count\">\n      <AvatarGroup>\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>+3</AvatarGroupCount>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>+3</AvatarGroupCount>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar size=\"lg\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>+3</AvatarGroupCount>\n      </AvatarGroup>\n    </Example>\n  )\n}\n\nfunction AvatarGroupWithIconCount() {\n  return (\n    <Example title=\"Group with Icon Count\">\n      <AvatarGroup>\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n          />\n        </AvatarGroupCount>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n          />\n        </AvatarGroupCount>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/shadcn.png\"\n            alt=\"@shadcn\"\n            className=\"grayscale\"\n          />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n            className=\"grayscale\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n            className=\"grayscale\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n          />\n        </AvatarGroupCount>\n      </AvatarGroup>\n    </Example>\n  )\n}\n\nfunction AvatarInEmpty() {\n  return (\n    <Example title=\"In Empty\">\n      <Empty className=\"w-full flex-none border\">\n        <EmptyHeader>\n          <EmptyMedia>\n            <AvatarGroup>\n              <Avatar size=\"lg\">\n                <AvatarImage\n                  src=\"https://github.com/shadcn.png\"\n                  alt=\"@shadcn\"\n                  className=\"grayscale\"\n                />\n                <AvatarFallback>CN</AvatarFallback>\n              </Avatar>\n              <Avatar size=\"lg\">\n                <AvatarImage\n                  src=\"https://github.com/maxleiter.png\"\n                  alt=\"@maxleiter\"\n                  className=\"grayscale\"\n                />\n                <AvatarFallback>LR</AvatarFallback>\n              </Avatar>\n              <Avatar size=\"lg\">\n                <AvatarImage\n                  src=\"https://github.com/evilrabbit.png\"\n                  alt=\"@evilrabbit\"\n                  className=\"grayscale\"\n                />\n                <AvatarFallback>ER</AvatarFallback>\n              </Avatar>\n              <AvatarGroupCount>\n                <IconPlaceholder\n                  lucide=\"PlusIcon\"\n                  tabler=\"IconPlus\"\n                  hugeicons=\"PlusSignIcon\"\n                  phosphor=\"PlusIcon\"\n                  remixicon=\"RiAddLine\"\n                />\n              </AvatarGroupCount>\n            </AvatarGroup>\n          </EmptyMedia>\n          <EmptyTitle>No Team Members</EmptyTitle>\n          <EmptyDescription>\n            Invite your team to collaborate on this project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <Button>\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n            Invite Members\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/badge-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Spinner } from \"@/registry/bases/base/ui/spinner\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function BadgeExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1\">\n      <BadgeVariants />\n      <BadgeWithIconLeft />\n      <BadgeWithIconRight />\n      <BadgeWithSpinner />\n      <BadgeAsLink />\n      <BadgeLongText />\n      <BadgeCustomColors />\n    </ExampleWrapper>\n  )\n}\n\nfunction BadgeVariants() {\n  return (\n    <Example title=\"Variants\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge>Default</Badge>\n        <Badge variant=\"secondary\">Secondary</Badge>\n        <Badge variant=\"destructive\">Destructive</Badge>\n        <Badge variant=\"outline\">Outline</Badge>\n        <Badge variant=\"ghost\">Ghost</Badge>\n        <Badge variant=\"link\">Link</Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeWithIconLeft() {\n  return (\n    <Example title=\"Icon Left\" className=\"max-w-fit\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge>\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Default\n        </Badge>\n        <Badge variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Secondary\n        </Badge>\n        <Badge variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Destructive\n        </Badge>\n        <Badge variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Outline\n        </Badge>\n        <Badge variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Ghost\n        </Badge>\n        <Badge variant=\"link\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Link\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeWithIconRight() {\n  return (\n    <Example title=\"Icon Right\" className=\"max-w-fit\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge>\n          Default\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"secondary\">\n          Secondary\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"destructive\">\n          Destructive\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"outline\">\n          Outline\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"ghost\">\n          Ghost\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"link\">\n          Link\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeWithSpinner() {\n  return (\n    <Example title=\"With Spinner\" className=\"max-w-fit\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge>\n          <Spinner data-icon=\"inline-start\" />\n          Default\n        </Badge>\n        <Badge variant=\"secondary\">\n          <Spinner data-icon=\"inline-start\" />\n          Secondary\n        </Badge>\n        <Badge variant=\"destructive\">\n          <Spinner data-icon=\"inline-start\" />\n          Destructive\n        </Badge>\n        <Badge variant=\"outline\">\n          <Spinner data-icon=\"inline-start\" />\n          Outline\n        </Badge>\n        <Badge variant=\"ghost\">\n          <Spinner data-icon=\"inline-start\" />\n          Ghost\n        </Badge>\n        <Badge variant=\"link\">\n          <Spinner data-icon=\"inline-start\" />\n          Link\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeAsLink() {\n  return (\n    <Example title=\"asChild\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge\n          render={\n            <a href=\"#\">\n              Link{\" \"}\n              <IconPlaceholder\n                lucide=\"ArrowUpRightIcon\"\n                tabler=\"IconArrowUpRight\"\n                hugeicons=\"ArrowUpRightIcon\"\n                phosphor=\"ArrowUpRightIcon\"\n                remixicon=\"RiArrowRightUpLine\"\n                data-icon=\"inline-end\"\n              />\n            </a>\n          }\n        />\n        <Badge\n          variant=\"secondary\"\n          render={\n            <a href=\"#\">\n              Link{\" \"}\n              <IconPlaceholder\n                lucide=\"ArrowUpRightIcon\"\n                tabler=\"IconArrowUpRight\"\n                hugeicons=\"ArrowUpRightIcon\"\n                phosphor=\"ArrowUpRightIcon\"\n                remixicon=\"RiArrowRightUpLine\"\n                data-icon=\"inline-end\"\n              />\n            </a>\n          }\n        />\n        <Badge\n          variant=\"destructive\"\n          render={\n            <a href=\"#\">\n              Link{\" \"}\n              <IconPlaceholder\n                lucide=\"ArrowUpRightIcon\"\n                tabler=\"IconArrowUpRight\"\n                hugeicons=\"ArrowUpRightIcon\"\n                phosphor=\"ArrowUpRightIcon\"\n                remixicon=\"RiArrowRightUpLine\"\n                data-icon=\"inline-end\"\n              />\n            </a>\n          }\n        />\n        <Badge\n          variant=\"ghost\"\n          render={\n            <a href=\"#\">\n              Link{\" \"}\n              <IconPlaceholder\n                lucide=\"ArrowUpRightIcon\"\n                tabler=\"IconArrowUpRight\"\n                hugeicons=\"ArrowRight02Icon\"\n                phosphor=\"ArrowUpRightIcon\"\n                remixicon=\"RiArrowRightUpLine\"\n                data-icon=\"inline-end\"\n              />\n            </a>\n          }\n        />\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeLongText() {\n  return (\n    <Example title=\"Long Text\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge variant=\"secondary\">\n          A badge with a lot of text to see how it wraps\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeCustomColors() {\n  return (\n    <Example title=\"Custom Colors\" className=\"max-w-fit\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge className=\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\">\n          Blue\n        </Badge>\n        <Badge className=\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\">\n          Green\n        </Badge>\n        <Badge className=\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\">\n          Sky\n        </Badge>\n        <Badge className=\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\">\n          Purple\n        </Badge>\n        <Badge className=\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\">\n          Blue\n        </Badge>\n        <Badge className=\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\">\n          Green\n        </Badge>\n        <Badge className=\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\">\n          Sky\n        </Badge>\n        <Badge className=\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\">\n          Purple\n        </Badge>\n        <Badge className=\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\">\n          Red\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/breadcrumb-example.tsx",
    "content": "import Link from \"next/link\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\n\nexport default function BreadcrumbExample() {\n  return (\n    <ExampleWrapper>\n      <BreadcrumbBasic />\n      <BreadcrumbWithDropdown />\n      <BreadcrumbWithLink />\n    </ExampleWrapper>\n  )\n}\n\nfunction BreadcrumbBasic() {\n  return (\n    <Example title=\"Basic\" className=\"items-center justify-center\">\n      <Breadcrumb>\n        <BreadcrumbList>\n          <BreadcrumbItem>\n            <BreadcrumbLink href=\"#\">Home</BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbLink href=\"#\">Components</BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n          </BreadcrumbItem>\n        </BreadcrumbList>\n      </Breadcrumb>\n    </Example>\n  )\n}\n\nfunction BreadcrumbWithDropdown() {\n  return (\n    <Example title=\"With Dropdown\" className=\"items-center justify-center\">\n      <Breadcrumb>\n        <BreadcrumbList>\n          <BreadcrumbItem>\n            <BreadcrumbLink href=\"#\">Home</BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={<Button size=\"icon-sm\" variant=\"ghost\" />}\n              >\n                <BreadcrumbEllipsis />\n                <span className=\"sr-only\">Toggle menu</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"start\">\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\n                <DropdownMenuItem>Themes</DropdownMenuItem>\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbLink href=\"#\">Components</BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n          </BreadcrumbItem>\n        </BreadcrumbList>\n      </Breadcrumb>\n    </Example>\n  )\n}\n\nfunction BreadcrumbWithLink() {\n  return (\n    <Example title=\"With Link\" className=\"items-center justify-center\">\n      <Breadcrumb>\n        <BreadcrumbList>\n          <BreadcrumbItem>\n            <BreadcrumbLink render={<Link href=\"#\">Home</Link>} />\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbEllipsis />\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbLink render={<Link href=\"#\">Components</Link>} />\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n          </BreadcrumbItem>\n        </BreadcrumbList>\n      </Breadcrumb>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/button-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button, buttonVariants } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ButtonExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1 2xl:grid-cols-1\">\n      <ButtonVariantsAndSizes />\n      <ButtonIconRight />\n      <ButtonIconLeft />\n      <ButtonIconOnly />\n      <ButtonInvalidStates />\n      <ButtonExamples />\n    </ExampleWrapper>\n  )\n}\n\nfunction ButtonVariantsAndSizes() {\n  return (\n    <Example title=\"Variants & Sizes\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"xs\">Default</Button>\n        <Button size=\"xs\" variant=\"secondary\">\n          Secondary\n        </Button>\n        <Button size=\"xs\" variant=\"outline\">\n          Outline\n        </Button>\n        <Button size=\"xs\" variant=\"ghost\">\n          Ghost\n        </Button>\n        <Button size=\"xs\" variant=\"destructive\">\n          Destructive\n        </Button>\n        <Button size=\"xs\" variant=\"link\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"sm\">Default</Button>\n        <Button size=\"sm\" variant=\"secondary\">\n          Secondary\n        </Button>\n        <Button size=\"sm\" variant=\"outline\">\n          Outline\n        </Button>\n        <Button size=\"sm\" variant=\"ghost\">\n          Ghost\n        </Button>\n        <Button size=\"sm\" variant=\"destructive\">\n          Destructive\n        </Button>\n        <Button size=\"sm\" variant=\"link\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button>Default</Button>\n        <Button variant=\"secondary\">Secondary</Button>\n        <Button variant=\"outline\">Outline</Button>\n        <Button variant=\"ghost\">Ghost</Button>\n        <Button variant=\"destructive\">Destructive</Button>\n        <Button variant=\"link\">Link</Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"lg\">Default</Button>\n        <Button size=\"lg\" variant=\"secondary\">\n          Secondary\n        </Button>\n        <Button size=\"lg\" variant=\"outline\">\n          Outline\n        </Button>\n        <Button size=\"lg\" variant=\"ghost\">\n          Ghost\n        </Button>\n        <Button size=\"lg\" variant=\"destructive\">\n          Destructive\n        </Button>\n        <Button size=\"lg\" variant=\"link\">\n          Link\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonIconRight() {\n  return (\n    <Example title=\"Icon Right\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"xs\">\n          Default{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"secondary\">\n          Secondary{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"outline\">\n          Outline{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"ghost\">\n          Ghost{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"destructive\">\n          Destructive{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"link\">\n          Link{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"sm\">\n          Default\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"secondary\">\n          Secondary{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"outline\">\n          Outline{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"ghost\">\n          Ghost{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"destructive\">\n          Destructive{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"link\">\n          Link{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button>\n          Default{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"secondary\">\n          Secondary{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"outline\">\n          Outline{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"ghost\">\n          Ghost{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"destructive\">\n          Destructive{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"link\">\n          Link{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"lg\">\n          Default{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"secondary\">\n          Secondary{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"outline\">\n          Outline{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"ghost\">\n          Ghost{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"destructive\">\n          Destructive{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"link\">\n          Link{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonIconLeft() {\n  return (\n    <Example title=\"Icon Left\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"xs\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Default\n        </Button>\n        <Button size=\"xs\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Secondary\n        </Button>\n        <Button size=\"xs\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Outline\n        </Button>\n        <Button size=\"xs\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Ghost\n        </Button>\n        <Button size=\"xs\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Destructive\n        </Button>\n        <Button size=\"xs\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"sm\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Default\n        </Button>\n        <Button size=\"sm\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Secondary\n        </Button>\n        <Button size=\"sm\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Outline\n        </Button>\n        <Button size=\"sm\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Ghost\n        </Button>\n        <Button size=\"sm\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Destructive\n        </Button>\n        <Button size=\"sm\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button>\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Default\n        </Button>\n        <Button variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Secondary\n        </Button>\n        <Button variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Outline\n        </Button>\n        <Button variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Ghost\n        </Button>\n        <Button variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Destructive\n        </Button>\n        <Button variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"lg\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Default\n        </Button>\n        <Button size=\"lg\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Secondary\n        </Button>\n        <Button size=\"lg\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Outline\n        </Button>\n        <Button size=\"lg\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Ghost\n        </Button>\n        <Button size=\"lg\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Destructive\n        </Button>\n        <Button size=\"lg\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Link\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonIconOnly() {\n  return (\n    <Example title=\"Icon Only\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"icon-xs\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"icon-sm\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"icon\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"icon-lg\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonExamples() {\n  return (\n    <Example title=\"Examples\">\n      <div className=\"flex flex-wrap items-center gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"outline\">Cancel</Button>\n          <Button>\n            Submit{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight02Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n              data-icon=\"inline-end\"\n            />\n          </Button>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"destructive\">Delete</Button>\n          <Button size=\"icon\">\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight02Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n              data-icon=\"inline-end\"\n            />\n          </Button>\n        </div>\n        <a href=\"#\" className={buttonVariants()}>\n          Link\n        </a>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonInvalidStates() {\n  return (\n    <Example title=\"Invalid States\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"xs\" aria-invalid=\"true\">\n          Default\n        </Button>\n        <Button size=\"xs\" variant=\"secondary\" aria-invalid=\"true\">\n          Secondary\n        </Button>\n        <Button size=\"xs\" variant=\"outline\" aria-invalid=\"true\">\n          Outline\n        </Button>\n        <Button size=\"xs\" variant=\"ghost\" aria-invalid=\"true\">\n          Ghost\n        </Button>\n        <Button size=\"xs\" variant=\"destructive\" aria-invalid=\"true\">\n          Destructive\n        </Button>\n        <Button size=\"xs\" variant=\"link\" aria-invalid=\"true\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"sm\" aria-invalid=\"true\">\n          Default\n        </Button>\n        <Button size=\"sm\" variant=\"secondary\" aria-invalid=\"true\">\n          Secondary\n        </Button>\n        <Button size=\"sm\" variant=\"outline\" aria-invalid=\"true\">\n          Outline\n        </Button>\n        <Button size=\"sm\" variant=\"ghost\" aria-invalid=\"true\">\n          Ghost\n        </Button>\n        <Button size=\"sm\" variant=\"destructive\" aria-invalid=\"true\">\n          Destructive\n        </Button>\n        <Button size=\"sm\" variant=\"link\" aria-invalid=\"true\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button aria-invalid=\"true\">Default</Button>\n        <Button variant=\"secondary\" aria-invalid=\"true\">\n          Secondary\n        </Button>\n        <Button variant=\"outline\" aria-invalid=\"true\">\n          Outline\n        </Button>\n        <Button variant=\"ghost\" aria-invalid=\"true\">\n          Ghost\n        </Button>\n        <Button variant=\"destructive\" aria-invalid=\"true\">\n          Destructive\n        </Button>\n        <Button variant=\"link\" aria-invalid=\"true\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"lg\" aria-invalid=\"true\">\n          Default\n        </Button>\n        <Button size=\"lg\" variant=\"secondary\" aria-invalid=\"true\">\n          Secondary\n        </Button>\n        <Button size=\"lg\" variant=\"outline\" aria-invalid=\"true\">\n          Outline\n        </Button>\n        <Button size=\"lg\" variant=\"ghost\" aria-invalid=\"true\">\n          Ghost\n        </Button>\n        <Button size=\"lg\" variant=\"destructive\" aria-invalid=\"true\">\n          Destructive\n        </Button>\n        <Button size=\"lg\" variant=\"link\" aria-invalid=\"true\">\n          Link\n        </Button>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/button-group-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupText,\n} from \"@/registry/bases/base/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ButtonGroupExample() {\n  return (\n    <ExampleWrapper>\n      <ButtonGroupBasic />\n      <ButtonGroupWithInput />\n      <ButtonGroupWithText />\n      <ButtonGroupWithDropdown />\n      <ButtonGroupWithSelect />\n      <ButtonGroupWithIcons />\n      <ButtonGroupWithInputGroup />\n      <ButtonGroupWithFields />\n      <ButtonGroupWithLike />\n      <ButtonGroupWithSelectAndInput />\n      <ButtonGroupNested />\n      <ButtonGroupPagination />\n      <ButtonGroupPaginationSplit />\n      <ButtonGroupNavigation />\n      <ButtonGroupTextAlignment />\n      <ButtonGroupVertical />\n      <ButtonGroupVerticalNested />\n    </ExampleWrapper>\n  )\n}\n\nfunction ButtonGroupBasic() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <Button variant=\"outline\">Button</Button>\n          <Button variant=\"outline\">Another Button</Button>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithInput() {\n  return (\n    <Example title=\"With Input\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <Button variant=\"outline\">Button</Button>\n          <Input placeholder=\"Type something here...\" />\n        </ButtonGroup>\n        <ButtonGroup>\n          <Input placeholder=\"Type something here...\" />\n          <Button variant=\"outline\">Button</Button>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithText() {\n  return (\n    <Example title=\"With Text\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <ButtonGroupText>Text</ButtonGroupText>\n          <Button variant=\"outline\">Another Button</Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <ButtonGroupText render={<Label htmlFor=\"input-text\" />}>\n            GPU Size\n          </ButtonGroupText>\n          <Input id=\"input-text\" placeholder=\"Type something here...\" />\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithDropdown() {\n  return (\n    <Example title=\"With Dropdown\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <Button variant=\"outline\">Update</Button>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={<Button variant=\"outline\" size=\"icon\" />}\n            >\n              <IconPlaceholder\n                lucide=\"ChevronDownIcon\"\n                tabler=\"IconChevronDown\"\n                hugeicons=\"ArrowDown01Icon\"\n                phosphor=\"CaretDownIcon\"\n                remixicon=\"RiArrowDownSLine\"\n              />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\">\n              <DropdownMenuItem>Disable</DropdownMenuItem>\n              <DropdownMenuItem variant=\"destructive\">\n                Uninstall\n              </DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">Follow</Button>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={<Button variant=\"outline\" size=\"icon\" />}\n            >\n              <IconPlaceholder\n                lucide=\"ChevronDownIcon\"\n                tabler=\"IconChevronDown\"\n                hugeicons=\"ArrowDown01Icon\"\n                phosphor=\"CaretDownIcon\"\n                remixicon=\"RiArrowDownSLine\"\n              />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"w-50\">\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"VolumeX\"\n                    tabler=\"IconVolume\"\n                    hugeicons=\"VolumeOffIcon\"\n                    phosphor=\"SpeakerSlashIcon\"\n                    remixicon=\"RiVolumeMuteLine\"\n                  />\n                  Mute Conversation\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"CheckIcon\"\n                    tabler=\"IconCheck\"\n                    hugeicons=\"Tick02Icon\"\n                    phosphor=\"CheckIcon\"\n                    remixicon=\"RiCheckLine\"\n                  />\n                  Mark as Read\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"AlertTriangleIcon\"\n                    tabler=\"IconAlertTriangle\"\n                    hugeicons=\"AlertCircleIcon\"\n                    phosphor=\"WarningIcon\"\n                    remixicon=\"RiErrorWarningLine\"\n                  />\n                  Report Conversation\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"UserRoundXIcon\"\n                    tabler=\"IconUserX\"\n                    hugeicons=\"UserRemove01Icon\"\n                    phosphor=\"UserMinusIcon\"\n                    remixicon=\"RiUserUnfollowLine\"\n                  />\n                  Block User\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare\"\n                    hugeicons=\"Share03Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                  />\n                  Share Conversation\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"Copy01Icon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                  Copy Conversation\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem variant=\"destructive\">\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  Delete Conversation\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nconst currencyItems = [\n  { label: \"$\", value: \"$\" },\n  { label: \"€\", value: \"€\" },\n  { label: \"£\", value: \"£\" },\n]\n\nfunction ButtonGroupWithSelect() {\n  return (\n    <Example title=\"With Select\">\n      <Field>\n        <Label htmlFor=\"amount\">Amount</Label>\n        <ButtonGroup>\n          <Select items={currencyItems} defaultValue={currencyItems[0]}>\n            <SelectTrigger>\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {currencyItems.map((item) => (\n                  <SelectItem key={item.value} value={item}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <Input placeholder=\"Enter amount to send\" />\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight01Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </Field>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"FlipHorizontalIcon\"\n              tabler=\"IconFlipHorizontal\"\n              hugeicons=\"FlipHorizontalIcon\"\n              phosphor=\"ArrowsHorizontalIcon\"\n              remixicon=\"RiArrowLeftRightLine\"\n            />\n          </Button>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"FlipVerticalIcon\"\n              tabler=\"IconFlipVertical\"\n              hugeicons=\"FlipVerticalIcon\"\n              phosphor=\"ArrowsVerticalIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n            />\n          </Button>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"RotateCwIcon\"\n              tabler=\"IconRotateClockwise2\"\n              hugeicons=\"Rotate01Icon\"\n              phosphor=\"ArrowClockwiseIcon\"\n              remixicon=\"RiRefreshLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithInputGroup() {\n  return (\n    <Example title=\"With Input Group\">\n      <div className=\"flex flex-col gap-4\">\n        <InputGroup>\n          <InputGroupInput placeholder=\"Type to search...\" />\n          <InputGroupAddon\n            align=\"inline-start\"\n            className=\"text-muted-foreground\"\n          >\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"Search01Icon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </InputGroupAddon>\n        </InputGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithFields() {\n  return (\n    <Example title=\"With Fields\">\n      <FieldGroup className=\"grid grid-cols-3 gap-4\">\n        <Field className=\"col-span-2\">\n          <Label htmlFor=\"width\">Width</Label>\n          <ButtonGroup>\n            <InputGroup>\n              <InputGroupInput id=\"width\" />\n              <InputGroupAddon className=\"text-muted-foreground\">\n                W\n              </InputGroupAddon>\n              <InputGroupAddon\n                align=\"inline-end\"\n                className=\"text-muted-foreground\"\n              >\n                px\n              </InputGroupAddon>\n            </InputGroup>\n            <Button variant=\"outline\" size=\"icon\">\n              <IconPlaceholder\n                lucide=\"MinusIcon\"\n                tabler=\"IconMinus\"\n                hugeicons=\"MinusSignIcon\"\n                phosphor=\"MinusIcon\"\n                remixicon=\"RiSubtractLine\"\n              />\n            </Button>\n            <Button variant=\"outline\" size=\"icon\">\n              <IconPlaceholder\n                lucide=\"PlusIcon\"\n                tabler=\"IconPlus\"\n                hugeicons=\"PlusSignIcon\"\n                phosphor=\"PlusIcon\"\n                remixicon=\"RiAddLine\"\n              />\n            </Button>\n          </ButtonGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithLike() {\n  return (\n    <Example title=\"With Like\">\n      <ButtonGroup>\n        <Button variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"HeartIcon\"\n            tabler=\"IconBell\"\n            hugeicons=\"Notification02Icon\"\n            phosphor=\"HeartIcon\"\n            remixicon=\"RiHeartLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Like\n        </Button>\n        <Button\n          variant=\"outline\"\n          size=\"icon\"\n          className=\"w-12\"\n          render={<span />}\n          nativeButton={false}\n        >\n          1.2K\n        </Button>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nconst durationItems = [\n  { label: \"Hours\", value: \"hours\" },\n  { label: \"Days\", value: \"days\" },\n  { label: \"Weeks\", value: \"weeks\" },\n]\n\nfunction ButtonGroupWithSelectAndInput() {\n  return (\n    <Example title=\"With Select and Input\">\n      <ButtonGroup>\n        <Select items={durationItems} defaultValue={durationItems[0]}>\n          <SelectTrigger id=\"duration\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent align=\"start\">\n            <SelectGroup>\n              {durationItems.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Input />\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupNested() {\n  return (\n    <Example title=\"Nested\">\n      <ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <InputGroup>\n            <InputGroupInput placeholder=\"Send a message...\" />\n            <Tooltip>\n              <TooltipTrigger render={<InputGroupAddon align=\"inline-end\" />}>\n                <IconPlaceholder\n                  lucide=\"AudioLinesIcon\"\n                  tabler=\"IconHeadphones\"\n                  hugeicons=\"AudioWave01Icon\"\n                  phosphor=\"MicrophoneIcon\"\n                  remixicon=\"RiMicLine\"\n                />\n              </TooltipTrigger>\n              <TooltipContent>Voice Mode</TooltipContent>\n            </Tooltip>\n          </InputGroup>\n        </ButtonGroup>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupPagination() {\n  return (\n    <Example title=\"Pagination\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftIcon\"\n            tabler=\"IconArrowLeft\"\n            hugeicons=\"ArrowLeft02Icon\"\n            phosphor=\"ArrowLeftIcon\"\n            remixicon=\"RiArrowLeftLine\"\n            data-icon=\"inline-start\"\n          />\n          Previous\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          1\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          2\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          3\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          4\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          5\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Next\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupPaginationSplit() {\n  return (\n    <Example title=\"Pagination Split\">\n      <ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"sm\">\n            1\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            2\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            3\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            4\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            5\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"icon-xs\">\n            <IconPlaceholder\n              lucide=\"ArrowLeftIcon\"\n              tabler=\"IconArrowLeft\"\n              hugeicons=\"ArrowLeft01Icon\"\n              phosphor=\"ArrowLeftIcon\"\n              remixicon=\"RiArrowLeftLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon-xs\">\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight01Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupNavigation() {\n  return (\n    <Example title=\"Navigation\">\n      <ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"ArrowLeftIcon\"\n              tabler=\"IconArrowLeft\"\n              hugeicons=\"ArrowLeft01Icon\"\n              phosphor=\"ArrowLeftIcon\"\n              remixicon=\"RiArrowLeftLine\"\n            />\n          </Button>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight01Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n            />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup aria-label=\"Single navigation button\">\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"ArrowLeftIcon\"\n              tabler=\"IconArrowLeft\"\n              hugeicons=\"ArrowLeft01Icon\"\n              phosphor=\"ArrowLeftIcon\"\n              remixicon=\"RiArrowLeftLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupTextAlignment() {\n  return (\n    <Example title=\"Text Alignment\">\n      <Field>\n        <Label id=\"alignment-label\">Text Alignment</Label>\n        <ButtonGroup aria-labelledby=\"alignment-label\">\n          <Button variant=\"outline\" size=\"sm\">\n            Left\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            Center\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            Right\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            Justify\n          </Button>\n        </ButtonGroup>\n      </Field>\n    </Example>\n  )\n}\n\nfunction ButtonGroupVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <div className=\"flex gap-6\">\n        <ButtonGroup\n          orientation=\"vertical\"\n          aria-label=\"Media controls\"\n          className=\"h-fit\"\n        >\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"MinusIcon\"\n              tabler=\"IconMinus\"\n              hugeicons=\"MinusSignIcon\"\n              phosphor=\"MinusIcon\"\n              remixicon=\"RiSubtractLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupVerticalNested() {\n  return (\n    <Example title=\"Vertical Nested\">\n      <ButtonGroup orientation=\"vertical\" aria-label=\"Design tools palette\">\n        <ButtonGroup orientation=\"vertical\">\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"Search01Icon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"CopyIcon\"\n              tabler=\"IconCopy\"\n              hugeicons=\"Copy01Icon\"\n              phosphor=\"CopyIcon\"\n              remixicon=\"RiFileCopyLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"ShareIcon\"\n              tabler=\"IconShare\"\n              hugeicons=\"Share03Icon\"\n              phosphor=\"ShareIcon\"\n              remixicon=\"RiShareLine\"\n            />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup orientation=\"vertical\">\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"FlipHorizontalIcon\"\n              tabler=\"IconFlipHorizontal\"\n              hugeicons=\"FlipHorizontalIcon\"\n              phosphor=\"ArrowsHorizontalIcon\"\n              remixicon=\"RiArrowLeftRightLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"FlipVerticalIcon\"\n              tabler=\"IconFlipVertical\"\n              hugeicons=\"FlipVerticalIcon\"\n              phosphor=\"ArrowsVerticalIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"RotateCwIcon\"\n              tabler=\"IconRotateClockwise2\"\n              hugeicons=\"Rotate01Icon\"\n              phosphor=\"ArrowClockwiseIcon\"\n              remixicon=\"RiRefreshLine\"\n            />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"TrashIcon\"\n              tabler=\"IconTrash\"\n              hugeicons=\"Delete02Icon\"\n              phosphor=\"TrashIcon\"\n              remixicon=\"RiDeleteBinLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </ButtonGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/calendar-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays, format } from \"date-fns\"\nimport { type DateRange } from \"react-day-picker\"\nimport { es } from \"react-day-picker/locale\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Calendar, CalendarDayButton } from \"@/registry/bases/base/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/bases/base/ui/popover\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CalendarExample() {\n  return (\n    <ExampleWrapper>\n      <CalendarSingle />\n      <CalendarMultiple />\n      <CalendarWeekNumbers />\n      <CalendarBookedDates />\n      <CalendarRange />\n      <CalendarRangeMultipleMonths />\n      <CalendarWithTime />\n      <CalendarWithPresets />\n      <CalendarCustomDays />\n      <DatePickerSimple />\n      <DataPickerWithDropdowns />\n      <DatePickerWithRange />\n      <CalendarInCard />\n      <CalendarInPopover />\n    </ExampleWrapper>\n  )\n}\n\nfunction CalendarInCard() {\n  return (\n    <Example title=\"In Card\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar mode=\"single\" />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarInPopover() {\n  return (\n    <Example title=\"In Popover\">\n      <Popover>\n        <PopoverTrigger\n          render={<Button variant=\"outline\" className=\"px-2.5 font-normal\" />}\n        >\n          <IconPlaceholder\n            lucide=\"CalendarIcon\"\n            tabler=\"IconCalendar\"\n            hugeicons=\"CalendarIcon\"\n            phosphor=\"CalendarBlankIcon\"\n            remixicon=\"RiCalendarLine\"\n            data-icon=\"inline-start\"\n          />\n          Open Calendar\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar mode=\"single\" />\n        </PopoverContent>\n      </Popover>\n    </Example>\n  )\n}\n\nfunction CalendarSingle() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n  return (\n    <Example title=\"Single\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            captionLayout=\"dropdown\"\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarMultiple() {\n  return (\n    <Example title=\"Multiple\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar mode=\"multiple\" />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarRange() {\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 12),\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\n  })\n\n  return (\n    <Example\n      title=\"Range\"\n      containerClassName=\"lg:col-span-full 2xl:col-span-full\"\n      className=\"p-12\"\n    >\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"range\"\n            defaultMonth={dateRange?.from}\n            selected={dateRange}\n            onSelect={setDateRange}\n            numberOfMonths={2}\n            disabled={(date) =>\n              date > new Date() || date < new Date(\"1900-01-01\")\n            }\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarRangeMultipleMonths() {\n  const [range, setRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 3, 12),\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\n  })\n\n  return (\n    <Example\n      title=\"Range Multiple Months\"\n      containerClassName=\"lg:col-span-full 2xl:col-span-full\"\n      className=\"p-12\"\n    >\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"range\"\n            defaultMonth={range?.from}\n            selected={range}\n            onSelect={setRange}\n            numberOfMonths={3}\n            locale={es}\n            fixedWeeks\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarBookedDates() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 3)\n  )\n  const bookedDates = Array.from(\n    { length: 15 },\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\n  )\n\n  return (\n    <Example title=\"Booked Dates\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"single\"\n            defaultMonth={date}\n            selected={date}\n            onSelect={setDate}\n            disabled={bookedDates}\n            modifiers={{\n              booked: bookedDates,\n            }}\n            modifiersClassNames={{\n              booked: \"[&>button]:line-through opacity-100\",\n            }}\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarWithTime() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n\n  return (\n    <Example title=\"With Time\">\n      <Card size=\"sm\" className=\"mx-auto w-fit\">\n        <CardContent>\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            className=\"p-0\"\n          />\n        </CardContent>\n        <CardFooter className=\"border-t bg-card\">\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"time-from\">Start Time</FieldLabel>\n              <InputGroup>\n                <InputGroupInput\n                  id=\"time-from\"\n                  type=\"time\"\n                  step=\"1\"\n                  defaultValue=\"10:30:00\"\n                  className=\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n                />\n                <InputGroupAddon>\n                  <IconPlaceholder\n                    lucide=\"Clock2Icon\"\n                    tabler=\"IconClockHour2\"\n                    hugeicons=\"Clock03Icon\"\n                    phosphor=\"ClockIcon\"\n                    remixicon=\"RiTimeLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"time-to\">End Time</FieldLabel>\n              <InputGroup>\n                <InputGroupInput\n                  id=\"time-to\"\n                  type=\"time\"\n                  step=\"1\"\n                  defaultValue=\"12:30:00\"\n                  className=\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n                />\n                <InputGroupAddon>\n                  <IconPlaceholder\n                    lucide=\"Clock2Icon\"\n                    tabler=\"IconClockHour2\"\n                    hugeicons=\"Clock03Icon\"\n                    phosphor=\"ClockIcon\"\n                    remixicon=\"RiTimeLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n          </FieldGroup>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarCustomDays() {\n  const [range, setRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 11, 8),\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\n  })\n\n  return (\n    <Example title=\"Custom Days\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"range\"\n            defaultMonth={range?.from}\n            selected={range}\n            onSelect={setRange}\n            numberOfMonths={1}\n            captionLayout=\"dropdown\"\n            className=\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\"\n            formatters={{\n              formatMonthDropdown: (date) => {\n                return date.toLocaleString(\"default\", { month: \"long\" })\n              },\n            }}\n            components={{\n              DayButton: ({ children, modifiers, day, ...props }) => {\n                const isWeekend =\n                  day.date.getDay() === 0 || day.date.getDay() === 6\n\n                return (\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\n                    {children}\n                    {!modifiers.outside && (\n                      <span>{isWeekend ? \"$120\" : \"$100\"}</span>\n                    )}\n                  </CalendarDayButton>\n                )\n              },\n            }}\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarWithPresets() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 12)\n  )\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\n  )\n\n  return (\n    <Example title=\"With Presets\">\n      <Card className=\"mx-auto w-fit max-w-[300px]\" size=\"sm\">\n        <CardContent>\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            month={currentMonth}\n            onMonthChange={setCurrentMonth}\n            fixedWeeks\n            className=\"p-0 [--cell-size:--spacing(9.5)]\"\n          />\n        </CardContent>\n        <CardFooter className=\"flex flex-wrap gap-2 border-t\">\n          {[\n            { label: \"Today\", value: 0 },\n            { label: \"Tomorrow\", value: 1 },\n            { label: \"In 3 days\", value: 3 },\n            { label: \"In a week\", value: 7 },\n            { label: \"In 2 weeks\", value: 14 },\n          ].map((preset) => (\n            <Button\n              key={preset.value}\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"flex-1\"\n              onClick={() => {\n                const newDate = addDays(new Date(), preset.value)\n                setDate(newDate)\n                setCurrentMonth(\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\n                )\n              }}\n            >\n              {preset.label}\n            </Button>\n          ))}\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction DatePickerSimple() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Example title=\"Date Picker Simple\">\n      <Field className=\"mx-auto w-72\">\n        <FieldLabel htmlFor=\"date-picker-simple\">Date</FieldLabel>\n        <Popover>\n          <PopoverTrigger\n            render={\n              <Button\n                variant=\"outline\"\n                id=\"date-picker-simple\"\n                className=\"justify-start px-2.5 font-normal\"\n              />\n            }\n          >\n            <IconPlaceholder\n              lucide=\"CalendarIcon\"\n              tabler=\"IconCalendar\"\n              hugeicons=\"CalendarIcon\"\n              phosphor=\"CalendarBlankIcon\"\n              remixicon=\"RiCalendarLine\"\n              data-icon=\"inline-start\"\n            />\n            {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n          </PopoverTrigger>\n          <PopoverContent className=\"w-auto p-0\" align=\"start\">\n            <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n          </PopoverContent>\n        </Popover>\n      </Field>\n    </Example>\n  )\n}\n\nfunction DatePickerWithRange() {\n  const [date, setDate] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 20),\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\n  })\n\n  return (\n    <Example title=\"Date Picker Range\">\n      <Field className=\"mx-auto w-72\">\n        <FieldLabel htmlFor=\"date-picker-range\">Date Picker Range</FieldLabel>\n        <Popover>\n          <PopoverTrigger\n            render={\n              <Button\n                variant=\"outline\"\n                id=\"date-picker-range\"\n                className=\"justify-start px-2.5 font-normal\"\n              />\n            }\n          >\n            <IconPlaceholder\n              lucide=\"CalendarIcon\"\n              tabler=\"IconCalendar\"\n              hugeicons=\"CalendarIcon\"\n              phosphor=\"CalendarBlankIcon\"\n              remixicon=\"RiCalendarLine\"\n              data-icon=\"inline-start\"\n            />\n            {date?.from ? (\n              date.to ? (\n                <>\n                  {format(date.from, \"LLL dd, y\")} -{\" \"}\n                  {format(date.to, \"LLL dd, y\")}\n                </>\n              ) : (\n                format(date.from, \"LLL dd, y\")\n              )\n            ) : (\n              <span>Pick a date</span>\n            )}\n          </PopoverTrigger>\n          <PopoverContent className=\"w-auto p-0\" align=\"start\">\n            <Calendar\n              mode=\"range\"\n              defaultMonth={date?.from}\n              selected={date}\n              onSelect={setDate}\n              numberOfMonths={2}\n            />\n          </PopoverContent>\n        </Popover>\n      </Field>\n    </Example>\n  )\n}\n\nfunction DataPickerWithDropdowns() {\n  const [date, setDate] = React.useState<Date>()\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Date Picker with Dropdowns\">\n      <Field className=\"mx-auto w-72\">\n        <Popover open={open} onOpenChange={setOpen}>\n          <FieldLabel htmlFor=\"date-picker-with-dropdowns-desktop\">\n            Date\n          </FieldLabel>\n          <PopoverTrigger\n            render={\n              <Button\n                variant=\"outline\"\n                id=\"date-picker-with-dropdowns-desktop\"\n                className=\"justify-start px-2.5 font-normal\"\n              />\n            }\n          >\n            {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n            <IconPlaceholder\n              lucide=\"ChevronDownIcon\"\n              tabler=\"IconChevronDown\"\n              hugeicons=\"ArrowDownIcon\"\n              phosphor=\"CaretDownIcon\"\n              remixicon=\"RiArrowDownSLine\"\n              data-icon=\"inline-start\"\n              className=\"ml-auto\"\n            />\n          </PopoverTrigger>\n          <PopoverContent className=\"w-auto p-0\" align=\"start\">\n            <Calendar\n              mode=\"single\"\n              selected={date}\n              onSelect={setDate}\n              captionLayout=\"dropdown\"\n            />\n            <div className=\"flex gap-2 border-t p-2\">\n              <Button\n                variant=\"outline\"\n                size=\"sm\"\n                className=\"w-full\"\n                onClick={() => setOpen(false)}\n              >\n                Done\n              </Button>\n            </div>\n          </PopoverContent>\n        </Popover>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CalendarWeekNumbers() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 3)\n  )\n\n  return (\n    <Example title=\"Week Numbers\" className=\"justify-center\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"single\"\n            defaultMonth={date}\n            selected={date}\n            onSelect={setDate}\n            showWeekNumber\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/card-example.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CardExample() {\n  return (\n    <ExampleWrapper>\n      <CardDefault />\n      <CardSmall />\n      <CardHeaderWithBorder />\n      <CardFooterWithBorder />\n      <CardHeaderWithBorderSmall />\n      <CardFooterWithBorderSmall />\n      <CardWithImage />\n      <CardWithImageSmall />\n      <CardLogin />\n      <CardMeetingNotes />\n    </ExampleWrapper>\n  )\n}\n\nfunction CardLogin() {\n  return (\n    <Example title=\"Login\">\n      <Card className=\"mx-auto w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Login to your account</CardTitle>\n          <CardDescription>\n            Enter your email below to login to your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto inline-block underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <Button type=\"submit\" className=\"w-full\">\n            Login\n          </Button>\n          <Button variant=\"outline\" className=\"w-full\">\n            Login with Google\n          </Button>\n          <div className=\"mt-4 text-center\">\n            Don&apos;t have an account?{\" \"}\n            <a href=\"#\" className=\"underline underline-offset-4\">\n              Sign up\n            </a>\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardMeetingNotes() {\n  return (\n    <Example title=\"Meeting Notes\">\n      <Card className=\"mx-auto w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Meeting Notes</CardTitle>\n          <CardDescription>\n            Transcript from the meeting with the client.\n          </CardDescription>\n          <CardAction>\n            <Button variant=\"outline\" size=\"sm\">\n              <IconPlaceholder\n                lucide=\"CaptionsIcon\"\n                tabler=\"IconTextCaption\"\n                hugeicons=\"TextCheckIcon\"\n                phosphor=\"TextTIcon\"\n                remixicon=\"RiTextWrap\"\n                data-icon=\"inline-start\"\n              />\n              Transcribe\n            </Button>\n          </CardAction>\n        </CardHeader>\n        <CardContent>\n          <p>\n            Client requested dashboard redesign with focus on mobile\n            responsiveness.\n          </p>\n          <ol className=\"mt-4 flex list-decimal flex-col gap-2 pl-6\">\n            <li>New analytics widgets for daily/weekly metrics</li>\n            <li>Simplified navigation menu</li>\n            <li>Dark mode support</li>\n            <li>Timeline: 6 weeks</li>\n            <li>Follow-up meeting scheduled for next Tuesday</li>\n          </ol>\n        </CardContent>\n        <CardFooter>\n          <AvatarGroup>\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n            <AvatarGroupCount>+8</AvatarGroupCount>\n          </AvatarGroup>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardWithImage() {\n  return (\n    <Example title=\"With Image\">\n      <Card size=\"default\" className=\"relative mx-auto w-full max-w-sm pt-0\">\n        <div className=\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\" />\n        <img\n          src=\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n          alt=\"Photo by mymind on Unsplash\"\n          title=\"Photo by mymind on Unsplash\"\n          className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\"\n        />\n        <CardHeader>\n          <CardTitle>Beautiful Landscape</CardTitle>\n          <CardDescription>\n            A stunning view that captures the essence of natural beauty.\n          </CardDescription>\n        </CardHeader>\n        <CardFooter>\n          <Button className=\"w-full\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"Add01Icon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardWithImageSmall() {\n  return (\n    <Example title=\"With Image (Small)\">\n      <Card size=\"sm\" className=\"relative mx-auto w-full max-w-sm pt-0\">\n        <div className=\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\" />\n        <img\n          src=\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n          alt=\"Photo by mymind on Unsplash\"\n          title=\"Photo by mymind on Unsplash\"\n          className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\"\n        />\n        <CardHeader>\n          <CardTitle>Beautiful Landscape</CardTitle>\n          <CardDescription>\n            A stunning view that captures the essence of natural beauty.\n          </CardDescription>\n        </CardHeader>\n        <CardFooter>\n          <Button size=\"sm\" className=\"w-full\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"Add01Icon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardHeaderWithBorder() {\n  return (\n    <Example title=\"Header with Border\">\n      <Card className=\"mx-auto w-full max-w-sm\">\n        <CardHeader className=\"border-b\">\n          <CardTitle>Header with Border</CardTitle>\n          <CardDescription>\n            This is a card with a header that has a bottom border.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p>\n            The header has a border-b class applied, creating a visual\n            separation between the header and content sections.\n          </p>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardFooterWithBorder() {\n  return (\n    <Example title=\"Footer with Border\">\n      <Card className=\"mx-auto w-full max-w-sm\">\n        <CardContent>\n          <p>\n            The footer has a border-t class applied, creating a visual\n            separation between the content and footer sections.\n          </p>\n        </CardContent>\n        <CardFooter className=\"border-t\">\n          <Button variant=\"outline\" className=\"w-full\">\n            Footer with Border\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardDefault() {\n  return (\n    <Example title=\"Default Size\">\n      <Card size=\"default\" className=\"mx-auto w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Default Card</CardTitle>\n          <CardDescription>\n            This card uses the default size variant.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p>\n            The card component supports a size prop that defaults to\n            &quot;default&quot; for standard spacing and sizing.\n          </p>\n        </CardContent>\n        <CardFooter>\n          <Button variant=\"outline\" className=\"w-full\">\n            Action\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardSmall() {\n  return (\n    <Example title=\"Small Size\">\n      <Card size=\"sm\" className=\"mx-auto w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Small Card</CardTitle>\n          <CardDescription>\n            This card uses the small size variant.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p>\n            The card component supports a size prop that can be set to\n            &quot;sm&quot; for a more compact appearance.\n          </p>\n        </CardContent>\n        <CardFooter>\n          <Button variant=\"outline\" size=\"sm\" className=\"w-full\">\n            Action\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardHeaderWithBorderSmall() {\n  return (\n    <Example title=\"Header with Border (Small)\">\n      <Card size=\"sm\" className=\"mx-auto w-full max-w-sm\">\n        <CardHeader className=\"border-b\">\n          <CardTitle>Header with Border</CardTitle>\n          <CardDescription>\n            This is a small card with a header that has a bottom border.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p>\n            The header has a border-b class applied, creating a visual\n            separation between the header and content sections.\n          </p>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardFooterWithBorderSmall() {\n  return (\n    <Example title=\"Footer with Border (Small)\">\n      <Card size=\"sm\" className=\"mx-auto w-full max-w-sm\">\n        <CardContent>\n          <p>\n            The footer has a border-t class applied, creating a visual\n            separation between the content and footer sections.\n          </p>\n        </CardContent>\n        <CardFooter className=\"border-t\">\n          <Button variant=\"outline\" size=\"sm\" className=\"w-full\">\n            Footer with Border\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/carousel-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/registry/bases/base/ui/carousel\"\n\nexport default function CarouselExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1\">\n      <CarouselBasic />\n      <CarouselMultiple />\n      <CarouselWithGap />\n    </ExampleWrapper>\n  )\n}\n\nfunction CarouselBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Carousel className=\"mx-auto max-w-xs sm:max-w-sm\">\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index}>\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious className=\"hidden sm:inline-flex\" />\n        <CarouselNext className=\"hidden sm:inline-flex\" />\n      </Carousel>\n    </Example>\n  )\n}\n\nfunction CarouselMultiple() {\n  return (\n    <Example title=\"Multiple\">\n      <Carousel\n        className=\"mx-auto max-w-xs sm:max-w-sm\"\n        opts={{\n          align: \"start\",\n        }}\n      >\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index} className=\"sm:basis-1/2 lg:basis-1/3\">\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious className=\"hidden sm:inline-flex\" />\n        <CarouselNext className=\"hidden sm:inline-flex\" />\n      </Carousel>\n    </Example>\n  )\n}\n\nfunction CarouselWithGap() {\n  return (\n    <Example title=\"With Gap\">\n      <Carousel className=\"mx-auto max-w-xs sm:max-w-sm\">\n        <CarouselContent className=\"-ml-1\">\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index} className=\"pl-1 md:basis-1/2\">\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-2xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious className=\"hidden sm:inline-flex\" />\n        <CarouselNext className=\"hidden sm:inline-flex\" />\n      </Carousel>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/chart-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Area,\n  AreaChart,\n  Bar,\n  BarChart,\n  CartesianGrid,\n  Label,\n  Line,\n  LineChart,\n  Pie,\n  PieChart,\n  PolarAngleAxis,\n  PolarGrid,\n  PolarRadiusAxis,\n  Radar,\n  RadarChart,\n  RadialBar,\n  RadialBarChart,\n  XAxis,\n} from \"recharts\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst areaChartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst areaChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport default function ChartExample() {\n  return (\n    <ExampleWrapper>\n      <ChartAreaExample />\n      <ChartBarExample />\n      <ChartLineExample />\n      <ChartRadialExample />\n      <ChartRadarExample />\n    </ExampleWrapper>\n  )\n}\n\nfunction ChartAreaExample() {\n  return (\n    <Example title=\"Area Chart\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Area Chart</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 6 months\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <ChartContainer config={areaChartConfig}>\n            <AreaChart\n              accessibilityLayer\n              data={areaChartData}\n              margin={{\n                left: 12,\n                right: 12,\n              }}\n            >\n              <CartesianGrid vertical={false} />\n              <XAxis\n                dataKey=\"month\"\n                tickLine={false}\n                axisLine={false}\n                tickMargin={8}\n                tickFormatter={(value) => value.slice(0, 3)}\n              />\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent indicator=\"line\" />}\n              />\n              <Area\n                dataKey=\"desktop\"\n                type=\"natural\"\n                fill=\"var(--color-desktop)\"\n                fillOpacity={0.4}\n                stroke=\"var(--color-desktop)\"\n              />\n            </AreaChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter>\n          <div className=\"flex w-full items-start gap-2\">\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center gap-2 leading-none font-medium\">\n                Trending up by 5.2% this month{\" \"}\n                <IconPlaceholder\n                  lucide=\"TrendingUpIcon\"\n                  tabler=\"IconTrendingUp\"\n                  hugeicons=\"ChartUpIcon\"\n                  phosphor=\"TrendUpIcon\"\n                  remixicon=\"RiLineChartLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n                January - June 2024\n              </div>\n            </div>\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst barChartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst barChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartBarExample() {\n  return (\n    <Example title=\"Bar Chart\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Bar Chart - Multiple</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <ChartContainer config={barChartConfig}>\n            <BarChart accessibilityLayer data={barChartData}>\n              <CartesianGrid vertical={false} />\n              <XAxis\n                dataKey=\"month\"\n                tickLine={false}\n                tickMargin={10}\n                axisLine={false}\n                tickFormatter={(value) => value.slice(0, 3)}\n              />\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent indicator=\"dashed\" />}\n              />\n              <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n              <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n            </BarChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter className=\"flex-col items-start gap-2\">\n          <div className=\"flex gap-2 leading-none font-medium\">\n            Trending up by 5.2% this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiLineChartLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"leading-none text-muted-foreground\">\n            Showing total visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst lineChartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst lineChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartLineExample() {\n  return (\n    <Example title=\"Line Chart\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Line Chart - Multiple</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <ChartContainer config={lineChartConfig}>\n            <LineChart\n              accessibilityLayer\n              data={lineChartData}\n              margin={{\n                left: 12,\n                right: 12,\n              }}\n            >\n              <CartesianGrid vertical={false} />\n              <XAxis\n                dataKey=\"month\"\n                tickLine={false}\n                axisLine={false}\n                tickMargin={8}\n                tickFormatter={(value) => value.slice(0, 3)}\n              />\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n              <Line\n                dataKey=\"desktop\"\n                type=\"monotone\"\n                stroke=\"var(--color-desktop)\"\n                strokeWidth={2}\n                dot={false}\n              />\n              <Line\n                dataKey=\"mobile\"\n                type=\"monotone\"\n                stroke=\"var(--color-mobile)\"\n                strokeWidth={2}\n                dot={false}\n              />\n            </LineChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter>\n          <div className=\"flex w-full items-start gap-2\">\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center gap-2 leading-none font-medium\">\n                Trending up by 5.2% this month{\" \"}\n                <IconPlaceholder\n                  lucide=\"TrendingUpIcon\"\n                  tabler=\"IconTrendingUp\"\n                  hugeicons=\"ChartUpIcon\"\n                  phosphor=\"TrendUpIcon\"\n                  remixicon=\"RiLineChartLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n                Showing total visitors for the last 6 months\n              </div>\n            </div>\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst pieChartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 287, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 190, fill: \"var(--color-other)\" },\n]\n\nconst pieChartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartPieExample() {\n  const totalVisitors = React.useMemo(() => {\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\n  }, [])\n\n  return (\n    <Example title=\"Pie Chart\">\n      <Card className=\"w-full\">\n        <CardHeader className=\"items-center pb-0\">\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </CardHeader>\n        <CardContent className=\"flex-1 pb-0\">\n          <ChartContainer\n            config={pieChartConfig}\n            className=\"mx-auto aspect-square max-h-[250px]\"\n          >\n            <PieChart>\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent hideLabel />}\n              />\n              <Pie\n                data={pieChartData}\n                dataKey=\"visitors\"\n                nameKey=\"browser\"\n                innerRadius={60}\n                strokeWidth={5}\n              >\n                <Label\n                  content={({ viewBox }) => {\n                    if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                      return (\n                        <text\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          textAnchor=\"middle\"\n                          dominantBaseline=\"middle\"\n                        >\n                          <tspan\n                            x={viewBox.cx}\n                            y={viewBox.cy}\n                            className=\"fill-foreground text-3xl font-bold\"\n                          >\n                            {totalVisitors.toLocaleString()}\n                          </tspan>\n                          <tspan\n                            x={viewBox.cx}\n                            y={(viewBox.cy || 0) + 24}\n                            className=\"fill-muted-foreground\"\n                          >\n                            Visitors\n                          </tspan>\n                        </text>\n                      )\n                    }\n                  }}\n                />\n              </Pie>\n            </PieChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <div className=\"flex items-center gap-2 leading-none font-medium\">\n            Trending up by 5.2% this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiLineChartLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"leading-none text-muted-foreground\">\n            Showing total visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst radarChartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst radarChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartRadarExample() {\n  return (\n    <Example title=\"Radar Chart\">\n      <Card className=\"w-full\">\n        <CardHeader className=\"items-center pb-4\">\n          <CardTitle>Radar Chart - Multiple</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 6 months\n          </CardDescription>\n        </CardHeader>\n        <CardContent className=\"pb-0\">\n          <ChartContainer\n            config={radarChartConfig}\n            className=\"mx-auto aspect-square max-h-[250px]\"\n          >\n            <RadarChart data={radarChartData}>\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent indicator=\"line\" />}\n              />\n              <PolarAngleAxis dataKey=\"month\" />\n              <PolarGrid />\n              <Radar\n                dataKey=\"desktop\"\n                fill=\"var(--color-desktop)\"\n                fillOpacity={0.6}\n              />\n              <Radar dataKey=\"mobile\" fill=\"var(--color-mobile)\" />\n            </RadarChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <div className=\"flex items-center gap-2 leading-none font-medium\">\n            Trending up by 5.2% this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiLineChartLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n            January - June 2024\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst radialChartData = [\n  { browser: \"safari\", visitors: 1260, fill: \"var(--color-safari)\" },\n]\n\nconst radialChartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartRadialExample() {\n  return (\n    <Example title=\"Radial Chart\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Radial Chart - Shape</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </CardHeader>\n        <CardContent className=\"flex-1 pb-0\">\n          <ChartContainer\n            config={radialChartConfig}\n            className=\"mx-auto aspect-square max-h-[210px]\"\n          >\n            <RadialBarChart\n              data={radialChartData}\n              endAngle={100}\n              innerRadius={80}\n              outerRadius={140}\n            >\n              <PolarGrid\n                gridType=\"circle\"\n                radialLines={false}\n                stroke=\"none\"\n                className=\"first:fill-muted last:fill-background\"\n                polarRadius={[86, 74]}\n              />\n              <RadialBar dataKey=\"visitors\" background />\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\n                <Label\n                  content={({ viewBox }) => {\n                    if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                      return (\n                        <text\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          textAnchor=\"middle\"\n                          dominantBaseline=\"middle\"\n                        >\n                          <tspan\n                            x={viewBox.cx}\n                            y={viewBox.cy}\n                            className=\"fill-foreground text-4xl font-bold\"\n                          >\n                            {radialChartData[0].visitors.toLocaleString()}\n                          </tspan>\n                          <tspan\n                            x={viewBox.cx}\n                            y={(viewBox.cy || 0) + 24}\n                            className=\"fill-muted-foreground\"\n                          >\n                            Visitors\n                          </tspan>\n                        </text>\n                      )\n                    }\n                  }}\n                />\n              </PolarRadiusAxis>\n            </RadialBarChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <div className=\"flex items-center gap-2 leading-none font-medium\">\n            Trending up by 5.2% this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiLineChartLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"leading-none text-muted-foreground\">\n            Showing total visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/checkbox-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldTitle,\n} from \"@/registry/bases/base/ui/field\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/bases/base/ui/table\"\n\nexport default function CheckboxExample() {\n  return (\n    <ExampleWrapper>\n      <CheckboxBasic />\n      <CheckboxWithDescription />\n      <CheckboxInvalid />\n      <CheckboxDisabled />\n      <CheckboxWithTitle />\n      <CheckboxInTable />\n      <CheckboxGroup />\n    </ExampleWrapper>\n  )\n}\n\nfunction CheckboxBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms\" />\n        <FieldLabel htmlFor=\"terms\">Accept terms and conditions</FieldLabel>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CheckboxWithDescription() {\n  return (\n    <Example title=\"With Description\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms-2\" defaultChecked />\n        <FieldContent>\n          <FieldLabel htmlFor=\"terms-2\">Accept terms and conditions</FieldLabel>\n          <FieldDescription>\n            By clicking this checkbox, you agree to the terms and conditions.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CheckboxInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <Field orientation=\"horizontal\" data-invalid>\n        <Checkbox id=\"terms-3\" aria-invalid />\n        <FieldLabel htmlFor=\"terms-3\">Accept terms and conditions</FieldLabel>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CheckboxDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"toggle\" disabled />\n        <FieldLabel htmlFor=\"toggle\">Enable notifications</FieldLabel>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CheckboxWithTitle() {\n  return (\n    <Example title=\"With Title\">\n      <FieldGroup>\n        <FieldLabel htmlFor=\"toggle-2\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"toggle-2\" defaultChecked />\n            <FieldContent>\n              <FieldTitle>Enable notifications</FieldTitle>\n              <FieldDescription>\n                You can enable or disable notifications at any time.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"toggle-4\">\n          <Field orientation=\"horizontal\" data-disabled>\n            <Checkbox id=\"toggle-4\" disabled />\n            <FieldContent>\n              <FieldTitle>Enable notifications</FieldTitle>\n              <FieldDescription>\n                You can enable or disable notifications at any time.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nconst tableData = [\n  {\n    id: \"1\",\n    name: \"Sarah Chen\",\n    email: \"sarah.chen@example.com\",\n    role: \"Admin\",\n  },\n  {\n    id: \"2\",\n    name: \"Marcus Rodriguez\",\n    email: \"marcus.rodriguez@example.com\",\n    role: \"User\",\n  },\n  {\n    id: \"3\",\n    name: \"Priya Patel\",\n    email: \"priya.patel@example.com\",\n    role: \"User\",\n  },\n  {\n    id: \"4\",\n    name: \"David Kim\",\n    email: \"david.kim@example.com\",\n    role: \"Editor\",\n  },\n]\n\nfunction CheckboxInTable() {\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\n    new Set([\"1\"])\n  )\n\n  const selectAll = selectedRows.size === tableData.length\n\n  const handleSelectAll = (checked: boolean) => {\n    if (checked) {\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\n    } else {\n      setSelectedRows(new Set())\n    }\n  }\n\n  const handleSelectRow = (id: string, checked: boolean) => {\n    const newSelected = new Set(selectedRows)\n    if (checked) {\n      newSelected.add(id)\n    } else {\n      newSelected.delete(id)\n    }\n    setSelectedRows(newSelected)\n  }\n\n  return (\n    <Example title=\"In Table\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead className=\"w-8\">\n              <Checkbox\n                id=\"select-all\"\n                checked={selectAll}\n                onCheckedChange={handleSelectAll}\n              />\n            </TableHead>\n            <TableHead>Name</TableHead>\n            <TableHead>Email</TableHead>\n            <TableHead>Role</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {tableData.map((row) => (\n            <TableRow\n              key={row.id}\n              data-state={selectedRows.has(row.id) ? \"selected\" : undefined}\n            >\n              <TableCell>\n                <Checkbox\n                  id={`row-${row.id}`}\n                  checked={selectedRows.has(row.id)}\n                  onCheckedChange={(checked) =>\n                    handleSelectRow(row.id, checked === true)\n                  }\n                />\n              </TableCell>\n              <TableCell className=\"font-medium\">{row.name}</TableCell>\n              <TableCell>{row.email}</TableCell>\n              <TableCell>{row.role}</TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction CheckboxGroup() {\n  return (\n    <Example title=\"Group\">\n      <Field>\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-hard-disks-ljj\" />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-hard-disks-ljj\"\n            className=\"font-normal\"\n          >\n            Hard disks\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-external-disks-1yg\" />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-external-disks-1yg\"\n            className=\"font-normal\"\n          >\n            External disks\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-cds-dvds-fzt\" />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-cds-dvds-fzt\"\n            className=\"font-normal\"\n          >\n            CDs, DVDs, and iPods\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-connected-servers-6l2\" />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-connected-servers-6l2\"\n            className=\"font-normal\"\n          >\n            Connected servers\n          </FieldLabel>\n        </Field>\n      </Field>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/collapsible-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/registry/bases/base/ui/tabs\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CollapsibleExample() {\n  return (\n    <ExampleWrapper>\n      <CollapsibleFileTree />\n      <CollapsibleSettings />\n    </ExampleWrapper>\n  )\n}\n\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\n\nfunction CollapsibleFileTree() {\n  const fileTree: FileTreeItem[] = [\n    {\n      name: \"components\",\n      items: [\n        {\n          name: \"ui\",\n          items: [\n            { name: \"button.tsx\" },\n            { name: \"card.tsx\" },\n            { name: \"dialog.tsx\" },\n            { name: \"input.tsx\" },\n            { name: \"select.tsx\" },\n            { name: \"table.tsx\" },\n          ],\n        },\n        { name: \"login-form.tsx\" },\n        { name: \"register-form.tsx\" },\n      ],\n    },\n    {\n      name: \"lib\",\n      items: [{ name: \"utils.ts\" }, { name: \"cn.ts\" }, { name: \"api.ts\" }],\n    },\n    {\n      name: \"hooks\",\n      items: [\n        { name: \"use-media-query.ts\" },\n        { name: \"use-debounce.ts\" },\n        { name: \"use-local-storage.ts\" },\n      ],\n    },\n    {\n      name: \"types\",\n      items: [{ name: \"index.d.ts\" }, { name: \"api.d.ts\" }],\n    },\n    {\n      name: \"public\",\n      items: [\n        { name: \"favicon.ico\" },\n        { name: \"logo.svg\" },\n        { name: \"images\" },\n      ],\n    },\n    { name: \"app.tsx\" },\n    { name: \"layout.tsx\" },\n    { name: \"globals.css\" },\n    { name: \"package.json\" },\n    { name: \"tsconfig.json\" },\n    { name: \"README.md\" },\n    { name: \".gitignore\" },\n  ]\n\n  const renderItem = (fileItem: FileTreeItem) => {\n    if (\"items\" in fileItem) {\n      return (\n        <Collapsible key={fileItem.name}>\n          <CollapsibleTrigger\n            render={\n              <Button\n                variant=\"ghost\"\n                size=\"sm\"\n                className=\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\"\n              />\n            }\n          >\n            <IconPlaceholder\n              lucide=\"ChevronRightIcon\"\n              tabler=\"IconChevronRight\"\n              hugeicons=\"ArrowRight01Icon\"\n              phosphor=\"CaretRightIcon\"\n              remixicon=\"RiArrowRightSLine\"\n              className=\"transition-transform group-data-[state=open]:rotate-90\"\n            />\n            <IconPlaceholder\n              lucide=\"FolderIcon\"\n              tabler=\"IconFolder\"\n              hugeicons=\"Folder01Icon\"\n              phosphor=\"FolderIcon\"\n              remixicon=\"RiFolderLine\"\n            />\n            {fileItem.name}\n          </CollapsibleTrigger>\n          <CollapsibleContent className=\"mt-1 ml-5 style-lyra:ml-4\">\n            <div className=\"flex flex-col gap-1\">\n              {fileItem.items.map((child) => renderItem(child))}\n            </div>\n          </CollapsibleContent>\n        </Collapsible>\n      )\n    }\n    return (\n      <Button\n        key={fileItem.name}\n        variant=\"link\"\n        size=\"sm\"\n        className=\"w-full justify-start gap-2 text-foreground\"\n      >\n        <IconPlaceholder\n          lucide=\"FileIcon\"\n          tabler=\"IconFile\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileIcon\"\n          remixicon=\"RiFileLine\"\n        />\n        <span>{fileItem.name}</span>\n      </Button>\n    )\n  }\n\n  return (\n    <Example title=\"File Tree\" className=\"items-center\">\n      <Card className=\"mx-auto w-full max-w-[16rem] gap-2\" size=\"sm\">\n        <CardHeader>\n          <Tabs defaultValue=\"explorer\">\n            <TabsList className=\"w-full\">\n              <TabsTrigger value=\"explorer\">Explorer</TabsTrigger>\n              <TabsTrigger value=\"settings\">Outline</TabsTrigger>\n            </TabsList>\n          </Tabs>\n        </CardHeader>\n        <CardContent>\n          <div className=\"flex flex-col gap-1\">\n            {fileTree.map((item) => renderItem(item))}\n          </div>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CollapsibleSettings() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Settings\" className=\"items-center\">\n      <Card className=\"mx-auto w-full max-w-xs\" size=\"sm\">\n        <CardHeader>\n          <CardTitle>Radius</CardTitle>\n          <CardDescription>\n            Set the corner radius of the element.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <Collapsible\n            open={isOpen}\n            onOpenChange={setIsOpen}\n            className=\"flex items-start gap-2\"\n          >\n            <FieldGroup className=\"grid w-full grid-cols-2 gap-2\">\n              <Field>\n                <FieldLabel htmlFor=\"radius-x\" className=\"sr-only\">\n                  Radius X\n                </FieldLabel>\n                <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"radius-y\" className=\"sr-only\">\n                  Radius Y\n                </FieldLabel>\n                <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n              </Field>\n              <CollapsibleContent className=\"col-span-full grid grid-cols-subgrid gap-2\">\n                <Field>\n                  <FieldLabel htmlFor=\"radius-x\" className=\"sr-only\">\n                    Radius X\n                  </FieldLabel>\n                  <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"radius-y\" className=\"sr-only\">\n                    Radius Y\n                  </FieldLabel>\n                  <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n                </Field>\n              </CollapsibleContent>\n            </FieldGroup>\n            <CollapsibleTrigger\n              render={<Button variant=\"outline\" size=\"icon\" />}\n            >\n              {isOpen ? (\n                <IconPlaceholder\n                  lucide=\"MinimizeIcon\"\n                  tabler=\"IconMinimize\"\n                  hugeicons=\"MinusSignIcon\"\n                  phosphor=\"MinusIcon\"\n                  remixicon=\"RiSubtractLine\"\n                />\n              ) : (\n                <IconPlaceholder\n                  lucide=\"MaximizeIcon\"\n                  tabler=\"IconMaximize\"\n                  hugeicons=\"PlusSignIcon\"\n                  phosphor=\"PlusIcon\"\n                  remixicon=\"RiAddLine\"\n                />\n              )}\n            </CollapsibleTrigger>\n          </Collapsible>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/combobox-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { toast } from \"sonner\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/base/ui/card\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxCollection,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxGroup,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxLabel,\n  ComboboxList,\n  ComboboxSeparator,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/registry/bases/base/ui/combobox\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ComboboxExample() {\n  return (\n    <ExampleWrapper>\n      <ComboboxBasic />\n      <ComboboxDisabled />\n      <ComboboxSides />\n      <ComboboxInvalid />\n      <ComboboxWithClear />\n      <ComboboxAutoHighlight />\n      <ComboboxWithGroups />\n      <ComboboxWithGroupsAndSeparator />\n      <ComboboxLargeList />\n      <ComboxboxInputAddon />\n      <ComboboxInPopup />\n      <ComboboxWithForm />\n      <ComboboxMultiple />\n      <ComboboxMultipleDisabled />\n      <ComboboxMultipleInvalid />\n      <ComboboxMultipleNoRemove />\n      <ComboboxWithCustomItems />\n      <ComboboxInDialog />\n      <ComboboxWithOtherInputs />\n      <ComboboxDisabledItems />\n    </ExampleWrapper>\n  )\n}\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nconst countries = [\n  { code: \"\", value: \"\", continent: \"\", label: \"Select country\" },\n  { code: \"af\", value: \"afghanistan\", label: \"Afghanistan\", continent: \"Asia\" },\n  { code: \"al\", value: \"albania\", label: \"Albania\", continent: \"Europe\" },\n  { code: \"dz\", value: \"algeria\", label: \"Algeria\", continent: \"Africa\" },\n  { code: \"ad\", value: \"andorra\", label: \"Andorra\", continent: \"Europe\" },\n  { code: \"ao\", value: \"angola\", label: \"Angola\", continent: \"Africa\" },\n  {\n    code: \"ar\",\n    value: \"argentina\",\n    label: \"Argentina\",\n    continent: \"South America\",\n  },\n  { code: \"am\", value: \"armenia\", label: \"Armenia\", continent: \"Asia\" },\n  { code: \"au\", value: \"australia\", label: \"Australia\", continent: \"Oceania\" },\n  { code: \"at\", value: \"austria\", label: \"Austria\", continent: \"Europe\" },\n  { code: \"az\", value: \"azerbaijan\", label: \"Azerbaijan\", continent: \"Asia\" },\n  {\n    code: \"bs\",\n    value: \"bahamas\",\n    label: \"Bahamas\",\n    continent: \"North America\",\n  },\n  { code: \"bh\", value: \"bahrain\", label: \"Bahrain\", continent: \"Asia\" },\n  { code: \"bd\", value: \"bangladesh\", label: \"Bangladesh\", continent: \"Asia\" },\n  {\n    code: \"bb\",\n    value: \"barbados\",\n    label: \"Barbados\",\n    continent: \"North America\",\n  },\n  { code: \"by\", value: \"belarus\", label: \"Belarus\", continent: \"Europe\" },\n  { code: \"be\", value: \"belgium\", label: \"Belgium\", continent: \"Europe\" },\n  { code: \"bz\", value: \"belize\", label: \"Belize\", continent: \"North America\" },\n  { code: \"bj\", value: \"benin\", label: \"Benin\", continent: \"Africa\" },\n  { code: \"bt\", value: \"bhutan\", label: \"Bhutan\", continent: \"Asia\" },\n  {\n    code: \"bo\",\n    value: \"bolivia\",\n    label: \"Bolivia\",\n    continent: \"South America\",\n  },\n  {\n    code: \"ba\",\n    value: \"bosnia-and-herzegovina\",\n    label: \"Bosnia and Herzegovina\",\n    continent: \"Europe\",\n  },\n  { code: \"bw\", value: \"botswana\", label: \"Botswana\", continent: \"Africa\" },\n  { code: \"br\", value: \"brazil\", label: \"Brazil\", continent: \"South America\" },\n  { code: \"bn\", value: \"brunei\", label: \"Brunei\", continent: \"Asia\" },\n  { code: \"bg\", value: \"bulgaria\", label: \"Bulgaria\", continent: \"Europe\" },\n  {\n    code: \"bf\",\n    value: \"burkina-faso\",\n    label: \"Burkina Faso\",\n    continent: \"Africa\",\n  },\n  { code: \"bi\", value: \"burundi\", label: \"Burundi\", continent: \"Africa\" },\n  { code: \"kh\", value: \"cambodia\", label: \"Cambodia\", continent: \"Asia\" },\n  { code: \"cm\", value: \"cameroon\", label: \"Cameroon\", continent: \"Africa\" },\n  { code: \"ca\", value: \"canada\", label: \"Canada\", continent: \"North America\" },\n  { code: \"cv\", value: \"cape-verde\", label: \"Cape Verde\", continent: \"Africa\" },\n  {\n    code: \"cf\",\n    value: \"central-african-republic\",\n    label: \"Central African Republic\",\n    continent: \"Africa\",\n  },\n  { code: \"td\", value: \"chad\", label: \"Chad\", continent: \"Africa\" },\n  { code: \"cl\", value: \"chile\", label: \"Chile\", continent: \"South America\" },\n  { code: \"cn\", value: \"china\", label: \"China\", continent: \"Asia\" },\n  {\n    code: \"co\",\n    value: \"colombia\",\n    label: \"Colombia\",\n    continent: \"South America\",\n  },\n  { code: \"km\", value: \"comoros\", label: \"Comoros\", continent: \"Africa\" },\n  { code: \"cg\", value: \"congo\", label: \"Congo\", continent: \"Africa\" },\n  {\n    code: \"cr\",\n    value: \"costa-rica\",\n    label: \"Costa Rica\",\n    continent: \"North America\",\n  },\n  { code: \"hr\", value: \"croatia\", label: \"Croatia\", continent: \"Europe\" },\n  { code: \"cu\", value: \"cuba\", label: \"Cuba\", continent: \"North America\" },\n  { code: \"cy\", value: \"cyprus\", label: \"Cyprus\", continent: \"Asia\" },\n  {\n    code: \"cz\",\n    value: \"czech-republic\",\n    label: \"Czech Republic\",\n    continent: \"Europe\",\n  },\n  { code: \"dk\", value: \"denmark\", label: \"Denmark\", continent: \"Europe\" },\n  { code: \"dj\", value: \"djibouti\", label: \"Djibouti\", continent: \"Africa\" },\n  {\n    code: \"dm\",\n    value: \"dominica\",\n    label: \"Dominica\",\n    continent: \"North America\",\n  },\n  {\n    code: \"do\",\n    value: \"dominican-republic\",\n    label: \"Dominican Republic\",\n    continent: \"North America\",\n  },\n  {\n    code: \"ec\",\n    value: \"ecuador\",\n    label: \"Ecuador\",\n    continent: \"South America\",\n  },\n  { code: \"eg\", value: \"egypt\", label: \"Egypt\", continent: \"Africa\" },\n  {\n    code: \"sv\",\n    value: \"el-salvador\",\n    label: \"El Salvador\",\n    continent: \"North America\",\n  },\n  {\n    code: \"gq\",\n    value: \"equatorial-guinea\",\n    label: \"Equatorial Guinea\",\n    continent: \"Africa\",\n  },\n  { code: \"er\", value: \"eritrea\", label: \"Eritrea\", continent: \"Africa\" },\n  { code: \"ee\", value: \"estonia\", label: \"Estonia\", continent: \"Europe\" },\n  { code: \"et\", value: \"ethiopia\", label: \"Ethiopia\", continent: \"Africa\" },\n  { code: \"fj\", value: \"fiji\", label: \"Fiji\", continent: \"Oceania\" },\n  { code: \"fi\", value: \"finland\", label: \"Finland\", continent: \"Europe\" },\n  { code: \"fr\", value: \"france\", label: \"France\", continent: \"Europe\" },\n  { code: \"ga\", value: \"gabon\", label: \"Gabon\", continent: \"Africa\" },\n  { code: \"gm\", value: \"gambia\", label: \"Gambia\", continent: \"Africa\" },\n  { code: \"ge\", value: \"georgia\", label: \"Georgia\", continent: \"Asia\" },\n  { code: \"de\", value: \"germany\", label: \"Germany\", continent: \"Europe\" },\n  { code: \"gh\", value: \"ghana\", label: \"Ghana\", continent: \"Africa\" },\n  { code: \"gr\", value: \"greece\", label: \"Greece\", continent: \"Europe\" },\n  {\n    code: \"gd\",\n    value: \"grenada\",\n    label: \"Grenada\",\n    continent: \"North America\",\n  },\n  {\n    code: \"gt\",\n    value: \"guatemala\",\n    label: \"Guatemala\",\n    continent: \"North America\",\n  },\n  { code: \"gn\", value: \"guinea\", label: \"Guinea\", continent: \"Africa\" },\n  {\n    code: \"gw\",\n    value: \"guinea-bissau\",\n    label: \"Guinea-Bissau\",\n    continent: \"Africa\",\n  },\n  { code: \"gy\", value: \"guyana\", label: \"Guyana\", continent: \"South America\" },\n  { code: \"ht\", value: \"haiti\", label: \"Haiti\", continent: \"North America\" },\n  {\n    code: \"hn\",\n    value: \"honduras\",\n    label: \"Honduras\",\n    continent: \"North America\",\n  },\n  { code: \"hu\", value: \"hungary\", label: \"Hungary\", continent: \"Europe\" },\n  { code: \"is\", value: \"iceland\", label: \"Iceland\", continent: \"Europe\" },\n  { code: \"in\", value: \"india\", label: \"India\", continent: \"Asia\" },\n  { code: \"id\", value: \"indonesia\", label: \"Indonesia\", continent: \"Asia\" },\n  { code: \"ir\", value: \"iran\", label: \"Iran\", continent: \"Asia\" },\n  { code: \"iq\", value: \"iraq\", label: \"Iraq\", continent: \"Asia\" },\n  { code: \"ie\", value: \"ireland\", label: \"Ireland\", continent: \"Europe\" },\n  { code: \"il\", value: \"israel\", label: \"Israel\", continent: \"Asia\" },\n  { code: \"it\", value: \"italy\", label: \"Italy\", continent: \"Europe\" },\n  {\n    code: \"jm\",\n    value: \"jamaica\",\n    label: \"Jamaica\",\n    continent: \"North America\",\n  },\n  { code: \"jp\", value: \"japan\", label: \"Japan\", continent: \"Asia\" },\n  { code: \"jo\", value: \"jordan\", label: \"Jordan\", continent: \"Asia\" },\n  { code: \"kz\", value: \"kazakhstan\", label: \"Kazakhstan\", continent: \"Asia\" },\n  { code: \"ke\", value: \"kenya\", label: \"Kenya\", continent: \"Africa\" },\n  { code: \"kw\", value: \"kuwait\", label: \"Kuwait\", continent: \"Asia\" },\n  { code: \"kg\", value: \"kyrgyzstan\", label: \"Kyrgyzstan\", continent: \"Asia\" },\n  { code: \"la\", value: \"laos\", label: \"Laos\", continent: \"Asia\" },\n  { code: \"lv\", value: \"latvia\", label: \"Latvia\", continent: \"Europe\" },\n  { code: \"lb\", value: \"lebanon\", label: \"Lebanon\", continent: \"Asia\" },\n  { code: \"ls\", value: \"lesotho\", label: \"Lesotho\", continent: \"Africa\" },\n  { code: \"lr\", value: \"liberia\", label: \"Liberia\", continent: \"Africa\" },\n  { code: \"ly\", value: \"libya\", label: \"Libya\", continent: \"Africa\" },\n  {\n    code: \"li\",\n    value: \"liechtenstein\",\n    label: \"Liechtenstein\",\n    continent: \"Europe\",\n  },\n  { code: \"lt\", value: \"lithuania\", label: \"Lithuania\", continent: \"Europe\" },\n  { code: \"lu\", value: \"luxembourg\", label: \"Luxembourg\", continent: \"Europe\" },\n  { code: \"mg\", value: \"madagascar\", label: \"Madagascar\", continent: \"Africa\" },\n  { code: \"mw\", value: \"malawi\", label: \"Malawi\", continent: \"Africa\" },\n  { code: \"my\", value: \"malaysia\", label: \"Malaysia\", continent: \"Asia\" },\n  { code: \"mv\", value: \"maldives\", label: \"Maldives\", continent: \"Asia\" },\n  { code: \"ml\", value: \"mali\", label: \"Mali\", continent: \"Africa\" },\n  { code: \"mt\", value: \"malta\", label: \"Malta\", continent: \"Europe\" },\n  {\n    code: \"mh\",\n    value: \"marshall-islands\",\n    label: \"Marshall Islands\",\n    continent: \"Oceania\",\n  },\n  { code: \"mr\", value: \"mauritania\", label: \"Mauritania\", continent: \"Africa\" },\n  { code: \"mu\", value: \"mauritius\", label: \"Mauritius\", continent: \"Africa\" },\n  { code: \"mx\", value: \"mexico\", label: \"Mexico\", continent: \"North America\" },\n  {\n    code: \"fm\",\n    value: \"micronesia\",\n    label: \"Micronesia\",\n    continent: \"Oceania\",\n  },\n  { code: \"md\", value: \"moldova\", label: \"Moldova\", continent: \"Europe\" },\n  { code: \"mc\", value: \"monaco\", label: \"Monaco\", continent: \"Europe\" },\n  { code: \"mn\", value: \"mongolia\", label: \"Mongolia\", continent: \"Asia\" },\n  { code: \"me\", value: \"montenegro\", label: \"Montenegro\", continent: \"Europe\" },\n  { code: \"ma\", value: \"morocco\", label: \"Morocco\", continent: \"Africa\" },\n  { code: \"mz\", value: \"mozambique\", label: \"Mozambique\", continent: \"Africa\" },\n  { code: \"mm\", value: \"myanmar\", label: \"Myanmar\", continent: \"Asia\" },\n  { code: \"na\", value: \"namibia\", label: \"Namibia\", continent: \"Africa\" },\n  { code: \"nr\", value: \"nauru\", label: \"Nauru\", continent: \"Oceania\" },\n  { code: \"np\", value: \"nepal\", label: \"Nepal\", continent: \"Asia\" },\n  {\n    code: \"nl\",\n    value: \"netherlands\",\n    label: \"Netherlands\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"nz\",\n    value: \"new-zealand\",\n    label: \"New Zealand\",\n    continent: \"Oceania\",\n  },\n  {\n    code: \"ni\",\n    value: \"nicaragua\",\n    label: \"Nicaragua\",\n    continent: \"North America\",\n  },\n  { code: \"ne\", value: \"niger\", label: \"Niger\", continent: \"Africa\" },\n  { code: \"ng\", value: \"nigeria\", label: \"Nigeria\", continent: \"Africa\" },\n  { code: \"kp\", value: \"north-korea\", label: \"North Korea\", continent: \"Asia\" },\n  {\n    code: \"mk\",\n    value: \"north-macedonia\",\n    label: \"North Macedonia\",\n    continent: \"Europe\",\n  },\n  { code: \"no\", value: \"norway\", label: \"Norway\", continent: \"Europe\" },\n  { code: \"om\", value: \"oman\", label: \"Oman\", continent: \"Asia\" },\n  { code: \"pk\", value: \"pakistan\", label: \"Pakistan\", continent: \"Asia\" },\n  { code: \"pw\", value: \"palau\", label: \"Palau\", continent: \"Oceania\" },\n  { code: \"ps\", value: \"palestine\", label: \"Palestine\", continent: \"Asia\" },\n  { code: \"pa\", value: \"panama\", label: \"Panama\", continent: \"North America\" },\n  {\n    code: \"pg\",\n    value: \"papua-new-guinea\",\n    label: \"Papua New Guinea\",\n    continent: \"Oceania\",\n  },\n  {\n    code: \"py\",\n    value: \"paraguay\",\n    label: \"Paraguay\",\n    continent: \"South America\",\n  },\n  { code: \"pe\", value: \"peru\", label: \"Peru\", continent: \"South America\" },\n  { code: \"ph\", value: \"philippines\", label: \"Philippines\", continent: \"Asia\" },\n  { code: \"pl\", value: \"poland\", label: \"Poland\", continent: \"Europe\" },\n  { code: \"pt\", value: \"portugal\", label: \"Portugal\", continent: \"Europe\" },\n  { code: \"qa\", value: \"qatar\", label: \"Qatar\", continent: \"Asia\" },\n  { code: \"ro\", value: \"romania\", label: \"Romania\", continent: \"Europe\" },\n  { code: \"ru\", value: \"russia\", label: \"Russia\", continent: \"Europe\" },\n  { code: \"rw\", value: \"rwanda\", label: \"Rwanda\", continent: \"Africa\" },\n  { code: \"ws\", value: \"samoa\", label: \"Samoa\", continent: \"Oceania\" },\n  { code: \"sm\", value: \"san-marino\", label: \"San Marino\", continent: \"Europe\" },\n  {\n    code: \"sa\",\n    value: \"saudi-arabia\",\n    label: \"Saudi Arabia\",\n    continent: \"Asia\",\n  },\n  { code: \"sn\", value: \"senegal\", label: \"Senegal\", continent: \"Africa\" },\n  { code: \"rs\", value: \"serbia\", label: \"Serbia\", continent: \"Europe\" },\n  { code: \"sc\", value: \"seychelles\", label: \"Seychelles\", continent: \"Africa\" },\n  {\n    code: \"sl\",\n    value: \"sierra-leone\",\n    label: \"Sierra Leone\",\n    continent: \"Africa\",\n  },\n  { code: \"sg\", value: \"singapore\", label: \"Singapore\", continent: \"Asia\" },\n  { code: \"sk\", value: \"slovakia\", label: \"Slovakia\", continent: \"Europe\" },\n  { code: \"si\", value: \"slovenia\", label: \"Slovenia\", continent: \"Europe\" },\n  {\n    code: \"sb\",\n    value: \"solomon-islands\",\n    label: \"Solomon Islands\",\n    continent: \"Oceania\",\n  },\n  { code: \"so\", value: \"somalia\", label: \"Somalia\", continent: \"Africa\" },\n  {\n    code: \"za\",\n    value: \"south-africa\",\n    label: \"South Africa\",\n    continent: \"Africa\",\n  },\n  { code: \"kr\", value: \"south-korea\", label: \"South Korea\", continent: \"Asia\" },\n  {\n    code: \"ss\",\n    value: \"south-sudan\",\n    label: \"South Sudan\",\n    continent: \"Africa\",\n  },\n  { code: \"es\", value: \"spain\", label: \"Spain\", continent: \"Europe\" },\n  { code: \"lk\", value: \"sri-lanka\", label: \"Sri Lanka\", continent: \"Asia\" },\n  { code: \"sd\", value: \"sudan\", label: \"Sudan\", continent: \"Africa\" },\n  {\n    code: \"sr\",\n    value: \"suriname\",\n    label: \"Suriname\",\n    continent: \"South America\",\n  },\n  { code: \"se\", value: \"sweden\", label: \"Sweden\", continent: \"Europe\" },\n  {\n    code: \"ch\",\n    value: \"switzerland\",\n    label: \"Switzerland\",\n    continent: \"Europe\",\n  },\n  { code: \"sy\", value: \"syria\", label: \"Syria\", continent: \"Asia\" },\n  { code: \"tw\", value: \"taiwan\", label: \"Taiwan\", continent: \"Asia\" },\n  { code: \"tj\", value: \"tajikistan\", label: \"Tajikistan\", continent: \"Asia\" },\n  { code: \"tz\", value: \"tanzania\", label: \"Tanzania\", continent: \"Africa\" },\n  { code: \"th\", value: \"thailand\", label: \"Thailand\", continent: \"Asia\" },\n  { code: \"tl\", value: \"timor-leste\", label: \"Timor-Leste\", continent: \"Asia\" },\n  { code: \"tg\", value: \"togo\", label: \"Togo\", continent: \"Africa\" },\n  { code: \"to\", value: \"tonga\", label: \"Tonga\", continent: \"Oceania\" },\n  {\n    code: \"tt\",\n    value: \"trinidad-and-tobago\",\n    label: \"Trinidad and Tobago\",\n    continent: \"North America\",\n  },\n  { code: \"tn\", value: \"tunisia\", label: \"Tunisia\", continent: \"Africa\" },\n  { code: \"tr\", value: \"turkey\", label: \"Turkey\", continent: \"Asia\" },\n  {\n    code: \"tm\",\n    value: \"turkmenistan\",\n    label: \"Turkmenistan\",\n    continent: \"Asia\",\n  },\n  { code: \"tv\", value: \"tuvalu\", label: \"Tuvalu\", continent: \"Oceania\" },\n  { code: \"ug\", value: \"uganda\", label: \"Uganda\", continent: \"Africa\" },\n  { code: \"ua\", value: \"ukraine\", label: \"Ukraine\", continent: \"Europe\" },\n  {\n    code: \"ae\",\n    value: \"united-arab-emirates\",\n    label: \"United Arab Emirates\",\n    continent: \"Asia\",\n  },\n  {\n    code: \"gb\",\n    value: \"united-kingdom\",\n    label: \"United Kingdom\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"us\",\n    value: \"united-states\",\n    label: \"United States\",\n    continent: \"North America\",\n  },\n  {\n    code: \"uy\",\n    value: \"uruguay\",\n    label: \"Uruguay\",\n    continent: \"South America\",\n  },\n  { code: \"uz\", value: \"uzbekistan\", label: \"Uzbekistan\", continent: \"Asia\" },\n  { code: \"vu\", value: \"vanuatu\", label: \"Vanuatu\", continent: \"Oceania\" },\n  {\n    code: \"va\",\n    value: \"vatican-city\",\n    label: \"Vatican City\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"ve\",\n    value: \"venezuela\",\n    label: \"Venezuela\",\n    continent: \"South America\",\n  },\n  { code: \"vn\", value: \"vietnam\", label: \"Vietnam\", continent: \"Asia\" },\n  { code: \"ye\", value: \"yemen\", label: \"Yemen\", continent: \"Asia\" },\n  { code: \"zm\", value: \"zambia\", label: \"Zambia\", continent: \"Africa\" },\n  { code: \"zw\", value: \"zimbabwe\", label: \"Zimbabwe\", continent: \"Africa\" },\n]\n\nconst timezones = [\n  {\n    value: \"Americas\",\n    items: [\n      \"(GMT-5) New York\",\n      \"(GMT-8) Los Angeles\",\n      \"(GMT-6) Chicago\",\n      \"(GMT-5) Toronto\",\n      \"(GMT-8) Vancouver\",\n      \"(GMT-3) São Paulo\",\n    ],\n  },\n  {\n    value: \"Europe\",\n    items: [\n      \"(GMT+0) London\",\n      \"(GMT+1) Paris\",\n      \"(GMT+1) Berlin\",\n      \"(GMT+1) Rome\",\n      \"(GMT+1) Madrid\",\n      \"(GMT+1) Amsterdam\",\n    ],\n  },\n  {\n    value: \"Asia/Pacific\",\n    items: [\n      \"(GMT+9) Tokyo\",\n      \"(GMT+8) Shanghai\",\n      \"(GMT+8) Singapore\",\n      \"(GMT+4) Dubai\",\n      \"(GMT+11) Sydney\",\n      \"(GMT+9) Seoul\",\n    ],\n  },\n] as const\n\nfunction ComboboxBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Combobox items={frameworks}>\n        <ComboboxInput placeholder=\"Select a framework\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxSides() {\n  return (\n    <Example title=\"Sides\" containerClassName=\"col-span-2\">\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {(\n          [\n            \"inline-start\",\n            \"left\",\n            \"top\",\n            \"bottom\",\n            \"right\",\n            \"inline-end\",\n          ] as const\n        ).map((side) => (\n          <Combobox key={side} items={frameworks}>\n            <ComboboxInput\n              placeholder={side.replace(\"-\", \" \")}\n              className=\"w-32 **:data-[slot=input-group-control]:capitalize\"\n            />\n            <ComboboxContent side={side}>\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\n              <ComboboxList>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxList>\n            </ComboboxContent>\n          </Combobox>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction ComboboxDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Combobox items={frameworks}>\n        <ComboboxInput placeholder=\"Select a framework\" disabled />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nconst disabledFrameworks = [\"Nuxt.js\", \"Remix\"]\n\nfunction ComboboxDisabledItems() {\n  return (\n    <Example title=\"Disabled Items\">\n      <Combobox items={frameworks}>\n        <ComboboxInput placeholder=\"Select a framework\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem\n                key={item}\n                value={item}\n                disabled={disabledFrameworks.includes(item)}\n              >\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <div className=\"flex flex-col gap-4\">\n        <Combobox items={frameworks}>\n          <ComboboxInput placeholder=\"Select a framework\" aria-invalid=\"true\" />\n          <ComboboxContent>\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\n            <ComboboxList>\n              {(item) => (\n                <ComboboxItem key={item} value={item}>\n                  {item}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"combobox-framework-invalid\">\n            Framework\n          </FieldLabel>\n          <Combobox items={frameworks}>\n            <ComboboxInput\n              id=\"combobox-framework-invalid\"\n              placeholder=\"Select a framework\"\n              aria-invalid\n            />\n            <ComboboxContent>\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\n              <ComboboxList>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxList>\n            </ComboboxContent>\n          </Combobox>\n          <FieldDescription>Please select a valid framework.</FieldDescription>\n          <FieldError errors={[{ message: \"This field is required.\" }]} />\n        </Field>\n      </div>\n    </Example>\n  )\n}\n\nfunction ComboboxWithClear() {\n  return (\n    <Example title=\"With Clear Button\">\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\n        <ComboboxInput placeholder=\"Select a framework\" showClear />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxWithGroups() {\n  return (\n    <Example title=\"With Groups\">\n      <Combobox items={timezones}>\n        <ComboboxInput placeholder=\"Select a timezone\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n          <ComboboxList>\n            {(group) => (\n              <ComboboxGroup key={group.value} items={group.items}>\n                <ComboboxLabel>{group.value}</ComboboxLabel>\n                <ComboboxCollection>\n                  {(item) => (\n                    <ComboboxItem key={item} value={item}>\n                      {item}\n                    </ComboboxItem>\n                  )}\n                </ComboboxCollection>\n              </ComboboxGroup>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxWithGroupsAndSeparator() {\n  return (\n    <Example title=\"With Groups and Separator\">\n      <Combobox items={timezones}>\n        <ComboboxInput placeholder=\"Select a timezone\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n          <ComboboxList>\n            {(group) => (\n              <ComboboxGroup key={group.value} items={group.items}>\n                <ComboboxLabel>{group.value}</ComboboxLabel>\n                <ComboboxCollection>\n                  {(item) => (\n                    <ComboboxItem key={item} value={item}>\n                      {item}\n                    </ComboboxItem>\n                  )}\n                </ComboboxCollection>\n                <ComboboxSeparator />\n              </ComboboxGroup>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxWithForm() {\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\n    event.preventDefault()\n    const formData = new FormData(event.target as HTMLFormElement)\n    const framework = formData.get(\"framework\") as string\n    toast(`You selected ${framework} as your framework.`)\n  }\n\n  return (\n    <Example title=\"Form with Combobox\">\n      <Card className=\"w-full max-w-sm\" size=\"sm\">\n        <CardContent>\n          <form\n            id=\"form-with-combobox\"\n            className=\"w-full\"\n            onSubmit={handleSubmit}\n          >\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"framework\">Framework</FieldLabel>\n                <Combobox items={frameworks}>\n                  <ComboboxInput\n                    id=\"framework\"\n                    name=\"framework\"\n                    placeholder=\"Select a framework\"\n                    required\n                  />\n                  <ComboboxContent>\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\n                    <ComboboxList>\n                      {(item) => (\n                        <ComboboxItem key={item} value={item}>\n                          {item}\n                        </ComboboxItem>\n                      )}\n                    </ComboboxList>\n                  </ComboboxContent>\n                </Combobox>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n        <CardFooter>\n          <Button type=\"submit\" form=\"form-with-combobox\">\n            Submit\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\n\nfunction ComboboxLargeList() {\n  return (\n    <Example title=\"Large List (100 items)\">\n      <Combobox items={largeListItems}>\n        <ComboboxInput placeholder=\"Search from 100 items\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxAutoHighlight() {\n  return (\n    <Example title=\"With Auto Highlight\">\n      <Combobox items={frameworks} autoHighlight>\n        <ComboboxInput placeholder=\"Select a framework\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboxboxInputAddon() {\n  return (\n    <Example title=\"With Icon Addon\">\n      <Combobox items={timezones}>\n        <ComboboxInput placeholder=\"Select a timezone\">\n          <InputGroupAddon>\n            <IconPlaceholder\n              lucide=\"GlobeIcon\"\n              tabler=\"IconGlobe\"\n              hugeicons=\"Globe02Icon\"\n              phosphor=\"GlobeIcon\"\n              remixicon=\"RiGlobeLine\"\n            />\n          </InputGroupAddon>\n        </ComboboxInput>\n        <ComboboxContent alignOffset={-28} className=\"w-60\">\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n          <ComboboxList>\n            {(group) => (\n              <ComboboxGroup key={group.value} items={group.items}>\n                <ComboboxLabel>{group.value}</ComboboxLabel>\n                <ComboboxCollection>\n                  {(item) => (\n                    <ComboboxItem key={item} value={item}>\n                      {item}\n                    </ComboboxItem>\n                  )}\n                </ComboboxCollection>\n              </ComboboxGroup>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxInPopup() {\n  return (\n    <Example title=\"Combobox in Popup\">\n      <Combobox items={countries} defaultValue={countries[0]}>\n        <ComboboxTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              className=\"w-64 justify-between font-normal\"\n            />\n          }\n        >\n          <ComboboxValue />\n        </ComboboxTrigger>\n        <ComboboxContent>\n          <ComboboxInput showTrigger={false} placeholder=\"Search\" />\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item.code} value={item}>\n                {item.label}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxMultiple() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <Example title=\"Combobox Multiple\">\n      <Combobox\n        multiple\n        autoHighlight\n        items={frameworks}\n        defaultValue={[frameworks[0]]}\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\n                ))}\n                <ComboboxChipsInput />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent anchor={anchor}>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxMultipleDisabled() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <Example title=\"Combobox Multiple Disabled\">\n      <Combobox\n        multiple\n        autoHighlight\n        items={frameworks}\n        defaultValue={[frameworks[0], frameworks[1]]}\n        disabled\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\n                ))}\n                <ComboboxChipsInput disabled />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent anchor={anchor}>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxMultipleInvalid() {\n  const anchor1 = useComboboxAnchor()\n  const anchor2 = useComboboxAnchor()\n\n  return (\n    <Example title=\"Combobox Multiple Invalid\">\n      <div className=\"flex flex-col gap-4\">\n        <Combobox\n          multiple\n          autoHighlight\n          items={frameworks}\n          defaultValue={[frameworks[0], frameworks[1]]}\n        >\n          <ComboboxChips ref={anchor1}>\n            <ComboboxValue>\n              {(values) => (\n                <React.Fragment>\n                  {values.map((value: string) => (\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\n                  ))}\n                  <ComboboxChipsInput aria-invalid=\"true\" />\n                </React.Fragment>\n              )}\n            </ComboboxValue>\n          </ComboboxChips>\n          <ComboboxContent anchor={anchor1}>\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\n            <ComboboxList>\n              {(item) => (\n                <ComboboxItem key={item} value={item}>\n                  {item}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"combobox-multiple-invalid\">\n            Frameworks\n          </FieldLabel>\n          <Combobox\n            multiple\n            autoHighlight\n            items={frameworks}\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\n          >\n            <ComboboxChips ref={anchor2}>\n              <ComboboxValue>\n                {(values) => (\n                  <React.Fragment>\n                    {values.map((value: string) => (\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\n                    ))}\n                    <ComboboxChipsInput\n                      id=\"combobox-multiple-invalid\"\n                      aria-invalid\n                    />\n                  </React.Fragment>\n                )}\n              </ComboboxValue>\n            </ComboboxChips>\n            <ComboboxContent anchor={anchor2}>\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\n              <ComboboxList>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxList>\n            </ComboboxContent>\n          </Combobox>\n          <FieldDescription>\n            Please select at least one framework.\n          </FieldDescription>\n          <FieldError errors={[{ message: \"This field is required.\" }]} />\n        </Field>\n      </div>\n    </Example>\n  )\n}\n\nfunction ComboboxMultipleNoRemove() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <Example title=\"Combobox Multiple (No Remove)\">\n      <Combobox\n        multiple\n        autoHighlight\n        items={frameworks}\n        defaultValue={[frameworks[0], frameworks[1]]}\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value} showRemove={false}>\n                    {value}\n                  </ComboboxChip>\n                ))}\n                <ComboboxChipsInput />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent anchor={anchor}>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxWithCustomItems() {\n  return (\n    <Example title=\"With Custom Item Rendering\">\n      <Combobox\n        items={countries.filter((country) => country.code !== \"\")}\n        itemToStringValue={(country: (typeof countries)[number]) =>\n          country.label\n        }\n      >\n        <ComboboxInput placeholder=\"Search countries...\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\n          <ComboboxList>\n            {(country) => (\n              <ComboboxItem key={country.code} value={country}>\n                <Item size=\"xs\" className=\"p-0\">\n                  <ItemContent>\n                    <ItemTitle className=\"whitespace-nowrap\">\n                      {country.label}\n                    </ItemTitle>\n                    <ItemDescription>\n                      {country.continent} ({country.code})\n                    </ItemDescription>\n                  </ItemContent>\n                </Item>\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxInDialog() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Combobox in Dialog\">\n      <Dialog open={open} onOpenChange={setOpen}>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Select Framework</DialogTitle>\n            <DialogDescription>\n              Choose your preferred framework from the list below.\n            </DialogDescription>\n          </DialogHeader>\n          <Field>\n            <FieldLabel htmlFor=\"framework-dialog\" className=\"sr-only\">\n              Framework\n            </FieldLabel>\n            <Combobox items={frameworks}>\n              <ComboboxInput\n                id=\"framework-dialog\"\n                placeholder=\"Select a framework\"\n              />\n              <ComboboxContent>\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\n                <ComboboxList>\n                  {(item) => (\n                    <ComboboxItem key={item} value={item}>\n                      {item}\n                    </ComboboxItem>\n                  )}\n                </ComboboxList>\n              </ComboboxContent>\n            </Combobox>\n          </Field>\n          <DialogFooter>\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={() => setOpen(false)}\n            >\n              Cancel\n            </Button>\n            <Button\n              type=\"button\"\n              onClick={() => {\n                toast(\"Framework selected.\")\n                setOpen(false)\n              }}\n            >\n              Confirm\n            </Button>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nconst items = [\n  {\n    label: \"Select a framework\",\n    value: null,\n  },\n  {\n    label: \"React\",\n    value: \"react\",\n  },\n  {\n    label: \"Vue\",\n    value: \"vue\",\n  },\n  {\n    label: \"Angular\",\n    value: \"angular\",\n  },\n  {\n    label: \"Svelte\",\n    value: \"svelte\",\n  },\n  {\n    label: \"Solid\",\n    value: \"solid\",\n  },\n  {\n    label: \"Preact\",\n    value: \"preact\",\n  },\n  {\n    label: \"Next.js\",\n    value: \"next.js\",\n  },\n]\n\nfunction ComboboxWithOtherInputs() {\n  return (\n    <Example title=\"With Other Inputs\">\n      <Combobox items={frameworks}>\n        <ComboboxInput placeholder=\"Select a framework\" className=\"w-52\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n      <Select items={items}>\n        <SelectTrigger className=\"w-52\">\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {items.map((item) => (\n              <SelectItem key={item.value} value={item.value}>\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n      <Button\n        variant=\"outline\"\n        className=\"w-52 justify-between font-normal text-muted-foreground\"\n      >\n        Select a framework\n        <IconPlaceholder\n          lucide=\"ChevronDownIcon\"\n          tabler=\"IconSelector\"\n          hugeicons=\"UnfoldMoreIcon\"\n          phosphor=\"CaretDownIcon\"\n          remixicon=\"RiArrowDownSLine\"\n        />\n      </Button>\n      <Input placeholder=\"Select a framework\" className=\"w-52\" />\n      <InputGroup className=\"w-52\">\n        <InputGroupInput placeholder=\"Select a framework\" />\n        <InputGroupAddon align=\"inline-end\">\n          <IconPlaceholder\n            lucide=\"ChevronDownIcon\"\n            tabler=\"IconSelector\"\n            hugeicons=\"UnfoldMoreIcon\"\n            phosphor=\"CaretDownIcon\"\n            remixicon=\"RiArrowDownSLine\"\n          />\n        </InputGroupAddon>\n      </InputGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/command-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/registry/bases/base/ui/command\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CommandExample() {\n  return (\n    <ExampleWrapper>\n      <CommandInline />\n      <CommandBasic />\n      <CommandWithShortcuts />\n      <CommandWithGroups />\n      <CommandManyItems />\n    </ExampleWrapper>\n  )\n}\n\nfunction CommandInline() {\n  return (\n    <Example title=\"Inline\">\n      <Card className=\"w-full p-0\">\n        <CardContent className=\"p-0\">\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Suggestions\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalendarIcon\"\n                    tabler=\"IconCalendar\"\n                    hugeicons=\"CalendarIcon\"\n                    phosphor=\"CalendarBlankIcon\"\n                    remixicon=\"RiCalendarLine\"\n                  />\n                  <span>Calendar</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SmileIcon\"\n                    tabler=\"IconMoodSmile\"\n                    hugeicons=\"SmileIcon\"\n                    phosphor=\"SmileyIcon\"\n                    remixicon=\"RiEmotionLine\"\n                  />\n                  <span>Search Emoji</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalculatorIcon\"\n                    tabler=\"IconCalculator\"\n                    hugeicons=\"CalculatorIcon\"\n                    phosphor=\"CalculatorIcon\"\n                    remixicon=\"RiCalculatorLine\"\n                  />\n                  <span>Calculator</span>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Settings\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"UserIcon\"\n                    tabler=\"IconUser\"\n                    hugeicons=\"UserIcon\"\n                    phosphor=\"UserIcon\"\n                    remixicon=\"RiUserLine\"\n                  />\n                  <span>Profile</span>\n                  <CommandShortcut>⌘P</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CreditCardIcon\"\n                    tabler=\"IconCreditCard\"\n                    hugeicons=\"CreditCardIcon\"\n                    phosphor=\"CreditCardIcon\"\n                    remixicon=\"RiBankCardLine\"\n                  />\n                  <span>Billing</span>\n                  <CommandShortcut>⌘B</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"SettingsIcon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                  <span>Settings</span>\n                  <CommandShortcut>⌘S</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CommandBasic() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex flex-col gap-4\">\n        <Button\n          onClick={() => setOpen(true)}\n          variant=\"outline\"\n          className=\"w-fit\"\n        >\n          Open Menu\n        </Button>\n        <CommandDialog open={open} onOpenChange={setOpen}>\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Suggestions\">\n                <CommandItem>Calendar</CommandItem>\n                <CommandItem>Search Emoji</CommandItem>\n                <CommandItem>Calculator</CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CommandDialog>\n      </div>\n    </Example>\n  )\n}\n\nfunction CommandWithShortcuts() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"With Shortcuts\">\n      <div className=\"flex flex-col gap-4\">\n        <Button\n          onClick={() => setOpen(true)}\n          variant=\"outline\"\n          className=\"w-fit\"\n        >\n          Open Menu\n        </Button>\n        <CommandDialog open={open} onOpenChange={setOpen}>\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Settings\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"UserIcon\"\n                    tabler=\"IconUser\"\n                    hugeicons=\"UserIcon\"\n                    phosphor=\"UserIcon\"\n                    remixicon=\"RiUserLine\"\n                  />\n                  <span>Profile</span>\n                  <CommandShortcut>⌘P</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CreditCardIcon\"\n                    tabler=\"IconCreditCard\"\n                    hugeicons=\"CreditCardIcon\"\n                    phosphor=\"CreditCardIcon\"\n                    remixicon=\"RiBankCardLine\"\n                  />\n                  <span>Billing</span>\n                  <CommandShortcut>⌘B</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"SettingsIcon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                  <span>Settings</span>\n                  <CommandShortcut>⌘S</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CommandDialog>\n      </div>\n    </Example>\n  )\n}\n\nfunction CommandWithGroups() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"With Groups\">\n      <div className=\"flex flex-col gap-4\">\n        <Button\n          onClick={() => setOpen(true)}\n          variant=\"outline\"\n          className=\"w-fit\"\n        >\n          Open Menu\n        </Button>\n        <CommandDialog open={open} onOpenChange={setOpen}>\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Suggestions\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalendarIcon\"\n                    tabler=\"IconCalendar\"\n                    hugeicons=\"CalendarIcon\"\n                    phosphor=\"CalendarBlankIcon\"\n                    remixicon=\"RiCalendarLine\"\n                  />\n                  <span>Calendar</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SmileIcon\"\n                    tabler=\"IconMoodSmile\"\n                    hugeicons=\"SmileIcon\"\n                    phosphor=\"SmileyIcon\"\n                    remixicon=\"RiEmotionLine\"\n                  />\n                  <span>Search Emoji</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalculatorIcon\"\n                    tabler=\"IconCalculator\"\n                    hugeicons=\"CalculatorIcon\"\n                    phosphor=\"CalculatorIcon\"\n                    remixicon=\"RiCalculatorLine\"\n                  />\n                  <span>Calculator</span>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Settings\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"UserIcon\"\n                    tabler=\"IconUser\"\n                    hugeicons=\"UserIcon\"\n                    phosphor=\"UserIcon\"\n                    remixicon=\"RiUserLine\"\n                  />\n                  <span>Profile</span>\n                  <CommandShortcut>⌘P</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CreditCardIcon\"\n                    tabler=\"IconCreditCard\"\n                    hugeicons=\"CreditCardIcon\"\n                    phosphor=\"CreditCardIcon\"\n                    remixicon=\"RiBankCardLine\"\n                  />\n                  <span>Billing</span>\n                  <CommandShortcut>⌘B</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"SettingsIcon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                  <span>Settings</span>\n                  <CommandShortcut>⌘S</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CommandDialog>\n      </div>\n    </Example>\n  )\n}\n\nfunction CommandManyItems() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Many Groups & Items\">\n      <div className=\"flex flex-col gap-4\">\n        <Button\n          onClick={() => setOpen(true)}\n          variant=\"outline\"\n          className=\"w-fit\"\n        >\n          Open Menu\n        </Button>\n        <CommandDialog open={open} onOpenChange={setOpen}>\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Navigation\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"HomeIcon\"\n                    tabler=\"IconHome\"\n                    hugeicons=\"HomeIcon\"\n                    phosphor=\"HouseIcon\"\n                    remixicon=\"RiHomeLine\"\n                  />\n                  <span>Home</span>\n                  <CommandShortcut>⌘H</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"InboxIcon\"\n                    tabler=\"IconInbox\"\n                    hugeicons=\"InboxIcon\"\n                    phosphor=\"TrayIcon\"\n                    remixicon=\"RiInboxLine\"\n                  />\n                  <span>Inbox</span>\n                  <CommandShortcut>⌘I</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"FileTextIcon\"\n                    tabler=\"IconFileText\"\n                    hugeicons=\"File02Icon\"\n                    phosphor=\"FileTextIcon\"\n                    remixicon=\"RiFileTextLine\"\n                  />\n                  <span>Documents</span>\n                  <CommandShortcut>⌘D</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"FolderIcon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                  />\n                  <span>Folders</span>\n                  <CommandShortcut>⌘F</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Actions\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                  <span>New File</span>\n                  <CommandShortcut>⌘N</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"FolderPlusIcon\"\n                    tabler=\"IconFolderPlus\"\n                    hugeicons=\"FolderAddIcon\"\n                    phosphor=\"FolderPlusIcon\"\n                    remixicon=\"RiFolderAddLine\"\n                  />\n                  <span>New Folder</span>\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"CopyIcon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                  <span>Copy</span>\n                  <CommandShortcut>⌘C</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ScissorsIcon\"\n                    tabler=\"IconCut\"\n                    hugeicons=\"ScissorIcon\"\n                    phosphor=\"ScissorsIcon\"\n                    remixicon=\"RiScissorsLine\"\n                  />\n                  <span>Cut</span>\n                  <CommandShortcut>⌘X</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ClipboardPasteIcon\"\n                    tabler=\"IconClipboard\"\n                    hugeicons=\"ClipboardIcon\"\n                    phosphor=\"ClipboardIcon\"\n                    remixicon=\"RiClipboardLine\"\n                  />\n                  <span>Paste</span>\n                  <CommandShortcut>⌘V</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"DeleteIcon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  <span>Delete</span>\n                  <CommandShortcut>⌫</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"View\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"LayoutGridIcon\"\n                    tabler=\"IconLayoutGrid\"\n                    hugeicons=\"GridIcon\"\n                    phosphor=\"GridFourIcon\"\n                    remixicon=\"RiGridLine\"\n                  />\n                  <span>Grid View</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ListIcon\"\n                    tabler=\"IconList\"\n                    hugeicons=\"Menu05Icon\"\n                    phosphor=\"ListIcon\"\n                    remixicon=\"RiListUnordered\"\n                  />\n                  <span>List View</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ZoomInIcon\"\n                    tabler=\"IconZoomIn\"\n                    hugeicons=\"ZoomInAreaIcon\"\n                    phosphor=\"MagnifyingGlassPlusIcon\"\n                    remixicon=\"RiZoomInLine\"\n                  />\n                  <span>Zoom In</span>\n                  <CommandShortcut>⌘+</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ZoomOutIcon\"\n                    tabler=\"IconZoomOut\"\n                    hugeicons=\"ZoomOutAreaIcon\"\n                    phosphor=\"MagnifyingGlassMinusIcon\"\n                    remixicon=\"RiSearchEyeLine\"\n                  />\n                  <span>Zoom Out</span>\n                  <CommandShortcut>⌘-</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Account\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"UserIcon\"\n                    tabler=\"IconUser\"\n                    hugeicons=\"UserIcon\"\n                    phosphor=\"UserIcon\"\n                    remixicon=\"RiUserLine\"\n                  />\n                  <span>Profile</span>\n                  <CommandShortcut>⌘P</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CreditCardIcon\"\n                    tabler=\"IconCreditCard\"\n                    hugeicons=\"CreditCardIcon\"\n                    phosphor=\"CreditCardIcon\"\n                    remixicon=\"RiBankCardLine\"\n                  />\n                  <span>Billing</span>\n                  <CommandShortcut>⌘B</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"SettingsIcon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                  <span>Settings</span>\n                  <CommandShortcut>⌘S</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"BellIcon\"\n                    tabler=\"IconBell\"\n                    hugeicons=\"NotificationIcon\"\n                    phosphor=\"BellIcon\"\n                    remixicon=\"RiNotificationLine\"\n                  />\n                  <span>Notifications</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"HelpCircleIcon\"\n                    tabler=\"IconHelpCircle\"\n                    hugeicons=\"HelpCircleIcon\"\n                    phosphor=\"QuestionIcon\"\n                    remixicon=\"RiQuestionLine\"\n                  />\n                  <span>Help & Support</span>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Tools\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalculatorIcon\"\n                    tabler=\"IconCalculator\"\n                    hugeicons=\"CalculatorIcon\"\n                    phosphor=\"CalculatorIcon\"\n                    remixicon=\"RiCalculatorLine\"\n                  />\n                  <span>Calculator</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalendarIcon\"\n                    tabler=\"IconCalendar\"\n                    hugeicons=\"CalendarIcon\"\n                    phosphor=\"CalendarBlankIcon\"\n                    remixicon=\"RiCalendarLine\"\n                  />\n                  <span>Calendar</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ImageIcon\"\n                    tabler=\"IconPhoto\"\n                    hugeicons=\"ImageIcon\"\n                    phosphor=\"ImageIcon\"\n                    remixicon=\"RiImageLine\"\n                  />\n                  <span>Image Editor</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CodeIcon\"\n                    tabler=\"IconCode\"\n                    hugeicons=\"CodeIcon\"\n                    phosphor=\"CodeIcon\"\n                    remixicon=\"RiCodeLine\"\n                  />\n                  <span>Code Editor</span>\n                </CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CommandDialog>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/component-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/bases/base/ui/alert-dialog\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/registry/bases/base/ui/combobox\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function ComponentExample() {\n  return (\n    <ExampleWrapper>\n      <CardExample />\n      <FormExample />\n    </ExampleWrapper>\n  )\n}\n\nfunction CardExample() {\n  return (\n    <Example title=\"Card\" className=\"items-center justify-center\">\n      <Card className=\"relative w-full max-w-sm overflow-hidden pt-0\">\n        <div className=\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\" />\n        <img\n          src=\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n          alt=\"Photo by mymind on Unsplash\"\n          title=\"Photo by mymind on Unsplash\"\n          className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\"\n        />\n        <CardHeader>\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\n          <CardDescription>\n            Switch to the improved way to explore your data, with natural\n            language. Monitoring will no longer be available on the Pro plan in\n            November, 2025\n          </CardDescription>\n        </CardHeader>\n        <CardFooter>\n          <AlertDialog>\n            <AlertDialogTrigger render={<Button />}>\n              <IconPlaceholder\n                lucide=\"PlusIcon\"\n                tabler=\"IconPlus\"\n                hugeicons=\"PlusSignIcon\"\n                phosphor=\"PlusIcon\"\n                remixicon=\"RiAddLine\"\n                data-icon=\"inline-start\"\n              />\n              Show Dialog\n            </AlertDialogTrigger>\n            <AlertDialogContent size=\"sm\">\n              <AlertDialogHeader>\n                <AlertDialogMedia>\n                  <IconPlaceholder\n                    lucide=\"BluetoothIcon\"\n                    tabler=\"IconBluetooth\"\n                    hugeicons=\"BluetoothIcon\"\n                    phosphor=\"BluetoothIcon\"\n                    remixicon=\"RiBluetoothLine\"\n                  />\n                </AlertDialogMedia>\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n                <AlertDialogDescription>\n                  Do you want to allow the USB accessory to connect to this\n                  device?\n                </AlertDialogDescription>\n              </AlertDialogHeader>\n              <AlertDialogFooter>\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n                <AlertDialogAction>Allow</AlertDialogAction>\n              </AlertDialogFooter>\n            </AlertDialogContent>\n          </AlertDialog>\n          <Badge variant=\"secondary\" className=\"ml-auto\">\n            Warning\n          </Badge>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nconst roleItems = [\n  { label: \"Developer\", value: \"developer\" },\n  { label: \"Designer\", value: \"designer\" },\n  { label: \"Manager\", value: \"manager\" },\n  { label: \"Other\", value: \"other\" },\n]\n\nfunction FormExample() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <Example title=\"Form\">\n      <Card className=\"w-full max-w-md\">\n        <CardHeader>\n          <CardTitle>User Information</CardTitle>\n          <CardDescription>Please fill in your details below</CardDescription>\n          <CardAction>\n            <DropdownMenu>\n              <DropdownMenuTrigger\n                render={<Button variant=\"ghost\" size=\"icon\" />}\n              >\n                <IconPlaceholder\n                  lucide=\"MoreVerticalIcon\"\n                  tabler=\"IconDotsVertical\"\n                  hugeicons=\"MoreVerticalCircle01Icon\"\n                  phosphor=\"DotsThreeVerticalIcon\"\n                  remixicon=\"RiMore2Line\"\n                />\n                <span className=\"sr-only\">More options</span>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\" className=\"w-56\">\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"FileIcon\"\n                      tabler=\"IconFile\"\n                      hugeicons=\"FileIcon\"\n                      phosphor=\"FileIcon\"\n                      remixicon=\"RiFileLine\"\n                    />\n                    New File\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"FolderIcon\"\n                      tabler=\"IconFolder\"\n                      hugeicons=\"FolderIcon\"\n                      phosphor=\"FolderIcon\"\n                      remixicon=\"RiFolderLine\"\n                    />\n                    New Folder\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <IconPlaceholder\n                        lucide=\"FolderOpenIcon\"\n                        tabler=\"IconFolderOpen\"\n                        hugeicons=\"FolderOpenIcon\"\n                        phosphor=\"FolderOpenIcon\"\n                        remixicon=\"RiFolderOpenLine\"\n                      />\n                      Open Recent\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuGroup>\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FileCodeIcon\"\n                              tabler=\"IconFileCode\"\n                              hugeicons=\"CodeIcon\"\n                              phosphor=\"CodeIcon\"\n                              remixicon=\"RiCodeLine\"\n                            />\n                            Project Alpha\n                          </DropdownMenuItem>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FileCodeIcon\"\n                              tabler=\"IconFileCode\"\n                              hugeicons=\"CodeIcon\"\n                              phosphor=\"CodeIcon\"\n                              remixicon=\"RiCodeLine\"\n                            />\n                            Project Beta\n                          </DropdownMenuItem>\n                          <DropdownMenuSub>\n                            <DropdownMenuSubTrigger>\n                              <IconPlaceholder\n                                lucide=\"MoreHorizontalIcon\"\n                                tabler=\"IconDots\"\n                                hugeicons=\"MoreHorizontalCircle01Icon\"\n                                phosphor=\"DotsThreeOutlineIcon\"\n                                remixicon=\"RiMoreLine\"\n                              />\n                              More Projects\n                            </DropdownMenuSubTrigger>\n                            <DropdownMenuPortal>\n                              <DropdownMenuSubContent>\n                                <DropdownMenuItem>\n                                  <IconPlaceholder\n                                    lucide=\"FileCodeIcon\"\n                                    tabler=\"IconFileCode\"\n                                    hugeicons=\"CodeIcon\"\n                                    phosphor=\"CodeIcon\"\n                                    remixicon=\"RiCodeLine\"\n                                  />\n                                  Project Gamma\n                                </DropdownMenuItem>\n                                <DropdownMenuItem>\n                                  <IconPlaceholder\n                                    lucide=\"FileCodeIcon\"\n                                    tabler=\"IconFileCode\"\n                                    hugeicons=\"CodeIcon\"\n                                    phosphor=\"CodeIcon\"\n                                    remixicon=\"RiCodeLine\"\n                                  />\n                                  Project Delta\n                                </DropdownMenuItem>\n                              </DropdownMenuSubContent>\n                            </DropdownMenuPortal>\n                          </DropdownMenuSub>\n                        </DropdownMenuGroup>\n                        <DropdownMenuSeparator />\n                        <DropdownMenuGroup>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FolderSearchIcon\"\n                              tabler=\"IconFolderSearch\"\n                              hugeicons=\"SearchIcon\"\n                              phosphor=\"MagnifyingGlassIcon\"\n                              remixicon=\"RiSearchLine\"\n                            />\n                            Browse...\n                          </DropdownMenuItem>\n                        </DropdownMenuGroup>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"SaveIcon\"\n                      tabler=\"IconDeviceFloppy\"\n                      hugeicons=\"FloppyDiskIcon\"\n                      phosphor=\"FloppyDiskIcon\"\n                      remixicon=\"RiSaveLine\"\n                    />\n                    Save\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"DownloadIcon\"\n                      tabler=\"IconDownload\"\n                      hugeicons=\"DownloadIcon\"\n                      phosphor=\"DownloadIcon\"\n                      remixicon=\"RiDownloadLine\"\n                    />\n                    Export\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\n                  <DropdownMenuCheckboxItem\n                    checked={notifications.email}\n                    onCheckedChange={(checked) =>\n                      setNotifications({\n                        ...notifications,\n                        email: checked === true,\n                      })\n                    }\n                  >\n                    <IconPlaceholder\n                      lucide=\"EyeIcon\"\n                      tabler=\"IconEye\"\n                      hugeicons=\"EyeIcon\"\n                      phosphor=\"EyeIcon\"\n                      remixicon=\"RiEyeLine\"\n                    />\n                    Show Sidebar\n                  </DropdownMenuCheckboxItem>\n                  <DropdownMenuCheckboxItem\n                    checked={notifications.sms}\n                    onCheckedChange={(checked) =>\n                      setNotifications({\n                        ...notifications,\n                        sms: checked === true,\n                      })\n                    }\n                  >\n                    <IconPlaceholder\n                      lucide=\"LayoutIcon\"\n                      tabler=\"IconLayout\"\n                      hugeicons=\"LayoutIcon\"\n                      phosphor=\"LayoutIcon\"\n                      remixicon=\"RiLayoutLine\"\n                    />\n                    Show Status Bar\n                  </DropdownMenuCheckboxItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <IconPlaceholder\n                        lucide=\"PaletteIcon\"\n                        tabler=\"IconPalette\"\n                        hugeicons=\"PaintBoardIcon\"\n                        phosphor=\"PaletteIcon\"\n                        remixicon=\"RiPaletteLine\"\n                      />\n                      Theme\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuGroup>\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n                          <DropdownMenuRadioGroup\n                            value={theme}\n                            onValueChange={setTheme}\n                          >\n                            <DropdownMenuRadioItem value=\"light\">\n                              <IconPlaceholder\n                                lucide=\"SunIcon\"\n                                tabler=\"IconSun\"\n                                hugeicons=\"SunIcon\"\n                                phosphor=\"SunIcon\"\n                                remixicon=\"RiSunLine\"\n                              />\n                              Light\n                            </DropdownMenuRadioItem>\n                            <DropdownMenuRadioItem value=\"dark\">\n                              <IconPlaceholder\n                                lucide=\"MoonIcon\"\n                                tabler=\"IconMoon\"\n                                hugeicons=\"MoonIcon\"\n                                phosphor=\"MoonIcon\"\n                                remixicon=\"RiMoonLine\"\n                              />\n                              Dark\n                            </DropdownMenuRadioItem>\n                            <DropdownMenuRadioItem value=\"system\">\n                              <IconPlaceholder\n                                lucide=\"MonitorIcon\"\n                                tabler=\"IconDeviceDesktop\"\n                                hugeicons=\"ComputerIcon\"\n                                phosphor=\"MonitorIcon\"\n                                remixicon=\"RiComputerLine\"\n                              />\n                              System\n                            </DropdownMenuRadioItem>\n                          </DropdownMenuRadioGroup>\n                        </DropdownMenuGroup>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"UserIcon\"\n                      tabler=\"IconUser\"\n                      hugeicons=\"UserIcon\"\n                      phosphor=\"UserIcon\"\n                      remixicon=\"RiUserLine\"\n                    />\n                    Profile\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"CreditCardIcon\"\n                      tabler=\"IconCreditCard\"\n                      hugeicons=\"CreditCardIcon\"\n                      phosphor=\"CreditCardIcon\"\n                      remixicon=\"RiBankCardLine\"\n                    />\n                    Billing\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <IconPlaceholder\n                        lucide=\"SettingsIcon\"\n                        tabler=\"IconSettings\"\n                        hugeicons=\"SettingsIcon\"\n                        phosphor=\"GearIcon\"\n                        remixicon=\"RiSettingsLine\"\n                      />\n                      Settings\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuGroup>\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"KeyboardIcon\"\n                              tabler=\"IconKeyboard\"\n                              hugeicons=\"KeyboardIcon\"\n                              phosphor=\"KeyboardIcon\"\n                              remixicon=\"RiKeyboardLine\"\n                            />\n                            Keyboard Shortcuts\n                          </DropdownMenuItem>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"LanguagesIcon\"\n                              tabler=\"IconLanguage\"\n                              hugeicons=\"LanguageCircleIcon\"\n                              phosphor=\"TranslateIcon\"\n                              remixicon=\"RiTranslate\"\n                            />\n                            Language\n                          </DropdownMenuItem>\n                          <DropdownMenuSub>\n                            <DropdownMenuSubTrigger>\n                              <IconPlaceholder\n                                lucide=\"BellIcon\"\n                                tabler=\"IconBell\"\n                                hugeicons=\"NotificationIcon\"\n                                phosphor=\"BellIcon\"\n                                remixicon=\"RiNotificationLine\"\n                              />\n                              Notifications\n                            </DropdownMenuSubTrigger>\n                            <DropdownMenuPortal>\n                              <DropdownMenuSubContent>\n                                <DropdownMenuGroup>\n                                  <DropdownMenuLabel>\n                                    Notification Types\n                                  </DropdownMenuLabel>\n                                  <DropdownMenuCheckboxItem\n                                    checked={notifications.push}\n                                    onCheckedChange={(checked) =>\n                                      setNotifications({\n                                        ...notifications,\n                                        push: checked === true,\n                                      })\n                                    }\n                                  >\n                                    <IconPlaceholder\n                                      lucide=\"BellIcon\"\n                                      tabler=\"IconBell\"\n                                      hugeicons=\"NotificationIcon\"\n                                      phosphor=\"BellIcon\"\n                                      remixicon=\"RiNotificationLine\"\n                                    />\n                                    Push Notifications\n                                  </DropdownMenuCheckboxItem>\n                                  <DropdownMenuCheckboxItem\n                                    checked={notifications.email}\n                                    onCheckedChange={(checked) =>\n                                      setNotifications({\n                                        ...notifications,\n                                        email: checked === true,\n                                      })\n                                    }\n                                  >\n                                    <IconPlaceholder\n                                      lucide=\"MailIcon\"\n                                      tabler=\"IconMail\"\n                                      hugeicons=\"MailIcon\"\n                                      phosphor=\"EnvelopeIcon\"\n                                      remixicon=\"RiMailLine\"\n                                    />\n                                    Email Notifications\n                                  </DropdownMenuCheckboxItem>\n                                </DropdownMenuGroup>\n                              </DropdownMenuSubContent>\n                            </DropdownMenuPortal>\n                          </DropdownMenuSub>\n                        </DropdownMenuGroup>\n                        <DropdownMenuSeparator />\n                        <DropdownMenuGroup>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"ShieldIcon\"\n                              tabler=\"IconShield\"\n                              hugeicons=\"ShieldIcon\"\n                              phosphor=\"ShieldIcon\"\n                              remixicon=\"RiShieldLine\"\n                            />\n                            Privacy & Security\n                          </DropdownMenuItem>\n                        </DropdownMenuGroup>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"HelpCircleIcon\"\n                      tabler=\"IconHelpCircle\"\n                      hugeicons=\"HelpCircleIcon\"\n                      phosphor=\"QuestionIcon\"\n                      remixicon=\"RiQuestionLine\"\n                    />\n                    Help & Support\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"FileTextIcon\"\n                      tabler=\"IconFileText\"\n                      hugeicons=\"File01Icon\"\n                      phosphor=\"FileTextIcon\"\n                      remixicon=\"RiFileTextLine\"\n                    />\n                    Documentation\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem variant=\"destructive\">\n                    <IconPlaceholder\n                      lucide=\"LogOutIcon\"\n                      tabler=\"IconLogout\"\n                      hugeicons=\"LogoutIcon\"\n                      phosphor=\"SignOutIcon\"\n                      remixicon=\"RiLogoutBoxLine\"\n                    />\n                    Sign Out\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </CardAction>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <div className=\"grid grid-cols-2 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"small-form-name\">Name</FieldLabel>\n                  <Input\n                    id=\"small-form-name\"\n                    placeholder=\"Enter your name\"\n                    required\n                  />\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"small-form-role\">Role</FieldLabel>\n                  <Select items={roleItems} defaultValue={null}>\n                    <SelectTrigger id=\"small-form-role\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        {roleItems.map((item) => (\n                          <SelectItem key={item.value} value={item.value}>\n                            {item.label}\n                          </SelectItem>\n                        ))}\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n              </div>\n              <Field>\n                <FieldLabel htmlFor=\"small-form-framework\">\n                  Framework\n                </FieldLabel>\n                <Combobox items={frameworks}>\n                  <ComboboxInput\n                    id=\"small-form-framework\"\n                    placeholder=\"Select a framework\"\n                    required\n                  />\n                  <ComboboxContent>\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\n                    <ComboboxList>\n                      {(item) => (\n                        <ComboboxItem key={item} value={item}>\n                          {item}\n                        </ComboboxItem>\n                      )}\n                    </ComboboxList>\n                  </ComboboxContent>\n                </Combobox>\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"small-form-comments\">Comments</FieldLabel>\n                <Textarea\n                  id=\"small-form-comments\"\n                  placeholder=\"Add any additional comments\"\n                />\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Button type=\"submit\">Submit</Button>\n                <Button variant=\"outline\" type=\"button\">\n                  Cancel\n                </Button>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/context-menu-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/registry/bases/base/ui/context-menu\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ContextMenuExample() {\n  return (\n    <ExampleWrapper>\n      <ContextMenuBasic />\n      <ContextMenuWithIcons />\n      <ContextMenuWithSides />\n      <ContextMenuWithShortcuts />\n      <ContextMenuWithSubmenu />\n      <ContextMenuWithGroups />\n      <ContextMenuWithCheckboxes />\n      <ContextMenuWithRadio />\n      <ContextMenuWithDestructive />\n      <ContextMenuInDialog />\n      <ContextMenuWithInset />\n    </ExampleWrapper>\n  )\n}\n\nfunction ContextMenuBasic() {\n  return (\n    <Example title=\"Basic\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"CopyIcon\"\n                tabler=\"IconCopy\"\n                hugeicons=\"CopyIcon\"\n                phosphor=\"CopyIcon\"\n                remixicon=\"RiFileCopyLine\"\n              />\n              Copy\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ScissorsIcon\"\n                tabler=\"IconCut\"\n                hugeicons=\"ScissorIcon\"\n                phosphor=\"ScissorsIcon\"\n                remixicon=\"RiScissorsLine\"\n              />\n              Cut\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ClipboardPasteIcon\"\n                tabler=\"IconClipboard\"\n                hugeicons=\"ClipboardIcon\"\n                phosphor=\"ClipboardIcon\"\n                remixicon=\"RiClipboardLine\"\n              />\n              Paste\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"TrashIcon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"DeleteIcon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n              Delete\n            </ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithShortcuts() {\n  return (\n    <Example title=\"With Shortcuts\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              Back\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem disabled>\n              Forward\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Reload\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              Save\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Save As...\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithSubmenu() {\n  return (\n    <Example title=\"With Submenu\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              Copy\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Cut\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSub>\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\n            <ContextMenuSubContent>\n              <ContextMenuGroup>\n                <ContextMenuItem>Save Page...</ContextMenuItem>\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n                <ContextMenuItem>Name Window...</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithGroups() {\n  return (\n    <Example title=\"With Groups, Labels & Separators\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuLabel>File</ContextMenuLabel>\n            <ContextMenuItem>\n              New File\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Open File\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Save\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuLabel>Edit</ContextMenuLabel>\n            <ContextMenuItem>\n              Undo\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Redo\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              Cut\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Copy\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Paste\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem variant=\"destructive\">\n              Delete\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithCheckboxes() {\n  return (\n    <Example title=\"With Checkboxes\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuCheckboxItem defaultChecked>\n              Show Bookmarks Bar\n            </ContextMenuCheckboxItem>\n            <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\n            <ContextMenuCheckboxItem defaultChecked>\n              Show Developer Tools\n            </ContextMenuCheckboxItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithRadio() {\n  const [user, setUser] = React.useState(\"pedro\")\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <Example title=\"With Radio Group\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuLabel>People</ContextMenuLabel>\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\n              <ContextMenuRadioItem value=\"pedro\">\n                Pedro Duarte\n              </ContextMenuRadioItem>\n              <ContextMenuRadioItem value=\"colm\">\n                Colm Tuite\n              </ContextMenuRadioItem>\n            </ContextMenuRadioGroup>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuLabel>Theme</ContextMenuLabel>\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\n              <ContextMenuRadioItem value=\"light\">Light</ContextMenuRadioItem>\n              <ContextMenuRadioItem value=\"dark\">Dark</ContextMenuRadioItem>\n              <ContextMenuRadioItem value=\"system\">System</ContextMenuRadioItem>\n            </ContextMenuRadioGroup>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithDestructive() {\n  return (\n    <Example title=\"With Destructive Items\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"PencilIcon\"\n                tabler=\"IconPencil\"\n                hugeicons=\"EditIcon\"\n                phosphor=\"PencilIcon\"\n                remixicon=\"RiPencilLine\"\n              />\n              Edit\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ShareIcon\"\n                tabler=\"IconShare\"\n                hugeicons=\"ShareIcon\"\n                phosphor=\"ShareIcon\"\n                remixicon=\"RiShareLine\"\n              />\n              Share\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ArchiveIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"ArchiveIcon\"\n                remixicon=\"RiArchiveLine\"\n              />\n              Archive\n            </ContextMenuItem>\n            <ContextMenuItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"TrashIcon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"DeleteIcon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n              Delete\n            </ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithSides() {\n  return (\n    <Example title=\"With Sides\" containerClassName=\"col-span-2\">\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {(\n          [\n            \"inline-start\",\n            \"left\",\n            \"top\",\n            \"bottom\",\n            \"right\",\n            \"inline-end\",\n          ] as const\n        ).map((side) => (\n          <ContextMenu key={side}>\n            <ContextMenuTrigger className=\"flex aspect-[2/0.5] items-center justify-center rounded-lg border p-4 text-sm capitalize\">\n              {side.replace(\"-\", \" \")}\n            </ContextMenuTrigger>\n            <ContextMenuContent side={side}>\n              <ContextMenuGroup>\n                <ContextMenuItem>Back</ContextMenuItem>\n                <ContextMenuItem>Forward</ContextMenuItem>\n                <ContextMenuItem>Reload</ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuContent>\n          </ContextMenu>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction ContextMenuInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Context Menu Example</DialogTitle>\n            <DialogDescription>\n              Right click on the area below to see the context menu.\n            </DialogDescription>\n          </DialogHeader>\n          <ContextMenu>\n            <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n              Right click here\n            </ContextMenuTrigger>\n            <ContextMenuContent>\n              <ContextMenuGroup>\n                <ContextMenuItem>\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"CopyIcon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                  Copy\n                </ContextMenuItem>\n                <ContextMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ScissorsIcon\"\n                    tabler=\"IconCut\"\n                    hugeicons=\"ScissorIcon\"\n                    phosphor=\"ScissorsIcon\"\n                    remixicon=\"RiScissorsLine\"\n                  />\n                  Cut\n                </ContextMenuItem>\n                <ContextMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ClipboardPasteIcon\"\n                    tabler=\"IconClipboard\"\n                    hugeicons=\"ClipboardIcon\"\n                    phosphor=\"ClipboardIcon\"\n                    remixicon=\"RiClipboardLine\"\n                  />\n                  Paste\n                </ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuSub>\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\n                <ContextMenuSubContent>\n                  <ContextMenuGroup>\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\n                  </ContextMenuGroup>\n                  <ContextMenuSeparator />\n                  <ContextMenuGroup>\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\n                  </ContextMenuGroup>\n                </ContextMenuSubContent>\n              </ContextMenuSub>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem variant=\"destructive\">\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"DeleteIcon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  Delete\n                </ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuContent>\n          </ContextMenu>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithInset() {\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\n  const [showUrls, setShowUrls] = React.useState(false)\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Example title=\"With Inset\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent className=\"w-44\">\n          <ContextMenuGroup>\n            <ContextMenuLabel>Actions</ContextMenuLabel>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"CopyIcon\"\n                tabler=\"IconCopy\"\n                hugeicons=\"CopyIcon\"\n                phosphor=\"CopyIcon\"\n                remixicon=\"RiFileCopyLine\"\n              />\n              Copy\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ScissorsIcon\"\n                tabler=\"IconCut\"\n                hugeicons=\"ScissorIcon\"\n                phosphor=\"ScissorsIcon\"\n                remixicon=\"RiScissorsLine\"\n              />\n              Cut\n            </ContextMenuItem>\n            <ContextMenuItem inset>Paste</ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\n            <ContextMenuCheckboxItem\n              inset\n              checked={showBookmarks}\n              onCheckedChange={setShowBookmarks}\n            >\n              Bookmarks\n            </ContextMenuCheckboxItem>\n            <ContextMenuCheckboxItem\n              inset\n              checked={showUrls}\n              onCheckedChange={setShowUrls}\n            >\n              Full URLs\n            </ContextMenuCheckboxItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\n              <ContextMenuRadioItem inset value=\"light\">\n                Light\n              </ContextMenuRadioItem>\n              <ContextMenuRadioItem inset value=\"dark\">\n                Dark\n              </ContextMenuRadioItem>\n              <ContextMenuRadioItem inset value=\"system\">\n                System\n              </ContextMenuRadioItem>\n            </ContextMenuRadioGroup>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuSub>\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\n            <ContextMenuSubContent>\n              <ContextMenuGroup>\n                <ContextMenuItem>Save Page...</ContextMenuItem>\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/bases/base/ui/alert-dialog\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { ButtonGroup } from \"@/registry/bases/base/ui/button-group\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/bases/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/bases/base/ui/radio-group\"\nimport { Slider } from \"@/registry/bases/base/ui/slider\"\nimport { Switch } from \"@/registry/bases/base/ui/switch\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function Demo() {\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\n  const handleSliderValueChange = React.useCallback(\n    (value: number | readonly number[]) => {\n      if (typeof value === \"number\") {\n        setSliderValue([value])\n      } else {\n        setSliderValue([...value])\n      }\n    },\n    []\n  )\n\n  return (\n    <div className=\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\">\n      <div className=\"grid max-w-3xl gap-4 sm:grid-cols-2\">\n        <div className=\"flex flex-col gap-4\">\n          <Card>\n            <CardHeader>\n              <CardTitle>Style Overview</CardTitle>\n              <CardDescription className=\"line-clamp-2\">\n                Designers love packing quirky glyphs into test phrases. This is\n                a preview of the typography styles.\n              </CardDescription>\n            </CardHeader>\n            <CardContent>\n              <div className=\"grid grid-cols-6 gap-3\">\n                {[\n                  \"--background\",\n                  \"--foreground\",\n                  \"--primary\",\n                  \"--secondary\",\n                  \"--muted\",\n                  \"--accent\",\n                  \"--border\",\n                  \"--chart-1\",\n                  \"--chart-2\",\n                  \"--chart-3\",\n                  \"--chart-4\",\n                  \"--chart-5\",\n                ].map((variant) => (\n                  <div\n                    key={variant}\n                    className=\"flex flex-col flex-wrap items-center gap-2\"\n                  >\n                    <div\n                      className=\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\"\n                      style={\n                        {\n                          \"--color\": `var(${variant})`,\n                        } as React.CSSProperties\n                      }\n                    />\n                    <div className=\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\">\n                      {variant}\n                    </div>\n                  </div>\n                ))}\n              </div>\n            </CardContent>\n          </Card>\n          <Card>\n            <CardContent>\n              <div className=\"grid grid-cols-8 place-items-center gap-4\">\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"Copy01Icon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"CircleAlertIcon\"\n                    tabler=\"IconExclamationCircle\"\n                    hugeicons=\"AlertCircleIcon\"\n                    phosphor=\"WarningCircleIcon\"\n                    remixicon=\"RiErrorWarningLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare\"\n                    hugeicons=\"Share03Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ShoppingBagIcon\"\n                    tabler=\"IconShoppingBag\"\n                    hugeicons=\"ShoppingBag01Icon\"\n                    phosphor=\"BagIcon\"\n                    remixicon=\"RiShoppingBagLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"Loader2Icon\"\n                    tabler=\"IconLoader\"\n                    hugeicons=\"Loading03Icon\"\n                    phosphor=\"SpinnerIcon\"\n                    remixicon=\"RiLoaderLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"MinusIcon\"\n                    tabler=\"IconMinus\"\n                    hugeicons=\"MinusSignIcon\"\n                    phosphor=\"MinusIcon\"\n                    remixicon=\"RiSubtractLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ArrowLeftIcon\"\n                    tabler=\"IconArrowLeft\"\n                    hugeicons=\"ArrowLeft02Icon\"\n                    phosphor=\"ArrowLeftIcon\"\n                    remixicon=\"RiArrowLeftLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ArrowRightIcon\"\n                    tabler=\"IconArrowRight\"\n                    hugeicons=\"ArrowRight02Icon\"\n                    phosphor=\"ArrowRightIcon\"\n                    remixicon=\"RiArrowRightLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"CheckIcon\"\n                    tabler=\"IconCheck\"\n                    hugeicons=\"Tick02Icon\"\n                    phosphor=\"CheckIcon\"\n                    remixicon=\"RiCheckLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ChevronDownIcon\"\n                    tabler=\"IconChevronDown\"\n                    hugeicons=\"ArrowDown01Icon\"\n                    phosphor=\"CaretDownIcon\"\n                    remixicon=\"RiArrowDownSLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"SearchIcon\"\n                    tabler=\"IconSearch\"\n                    hugeicons=\"Search01Icon\"\n                    phosphor=\"MagnifyingGlassIcon\"\n                    remixicon=\"RiSearchLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"Settings01Icon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                </Card>\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n        <div className=\"flex flex-col gap-4\">\n          <Card className=\"w-full\">\n            <CardContent className=\"flex flex-col gap-6\">\n              <div className=\"flex flex-col gap-4\">\n                <div className=\"flex flex-wrap gap-2\">\n                  <Button>Button</Button>\n                  <Button variant=\"secondary\">Secondary</Button>\n                  <Button variant=\"outline\">Outline</Button>\n                  <Button variant=\"ghost\">Ghost</Button>\n                </div>\n                <Item variant=\"outline\">\n                  <ItemContent>\n                    <ItemTitle>Two-factor authentication</ItemTitle>\n                    <ItemDescription className=\"text-pretty xl:hidden 2xl:block\">\n                      Verify via email or phone number.\n                    </ItemDescription>\n                  </ItemContent>\n                  <ItemActions className=\"hidden md:flex\">\n                    <Button size=\"sm\" variant=\"secondary\">\n                      Enable\n                    </Button>\n                  </ItemActions>\n                </Item>\n              </div>\n              <Slider\n                value={sliderValue}\n                onValueChange={handleSliderValueChange}\n                max={1000}\n                min={0}\n                step={10}\n                className=\"flex-1\"\n                aria-label=\"Slider\"\n              />\n              <FieldGroup>\n                <Field>\n                  <InputGroup>\n                    <InputGroupInput placeholder=\"Name\" />\n                    <InputGroupAddon align=\"inline-end\">\n                      <InputGroupText>\n                        <IconPlaceholder\n                          lucide=\"SearchIcon\"\n                          tabler=\"IconSearch\"\n                          hugeicons=\"Search01Icon\"\n                          phosphor=\"MagnifyingGlassIcon\"\n                          remixicon=\"RiSearchLine\"\n                        />\n                      </InputGroupText>\n                    </InputGroupAddon>\n                  </InputGroup>\n                </Field>\n                <Field className=\"flex-1\">\n                  <Textarea placeholder=\"Message\" className=\"resize-none\" />\n                </Field>\n              </FieldGroup>\n              <div className=\"flex items-center gap-2\">\n                <div className=\"flex gap-2\">\n                  <Badge>Badge</Badge>\n                  <Badge variant=\"secondary\">Secondary</Badge>\n                  <Badge variant=\"outline\">Outline</Badge>\n                </div>\n                <RadioGroup\n                  defaultValue=\"apple\"\n                  className=\"ml-auto flex w-fit gap-3\"\n                >\n                  <RadioGroupItem value=\"apple\" />\n                  <RadioGroupItem value=\"banana\" />\n                </RadioGroup>\n                <div className=\"flex gap-3\">\n                  <Checkbox defaultChecked />\n                  <Checkbox />\n                </div>\n              </div>\n              <div className=\"flex items-center gap-4\">\n                <AlertDialog>\n                  <AlertDialogTrigger render={<Button variant=\"outline\" />}>\n                    <span className=\"hidden md:block\">Alert Dialog</span>\n                    <span className=\"block md:hidden\">Dialog</span>\n                  </AlertDialogTrigger>\n                  <AlertDialogContent size=\"sm\">\n                    <AlertDialogHeader>\n                      <AlertDialogTitle>\n                        Allow accessory to connect?\n                      </AlertDialogTitle>\n                      <AlertDialogDescription>\n                        Do you want to allow the USB accessory to connect to\n                        this device and your data?\n                      </AlertDialogDescription>\n                    </AlertDialogHeader>\n                    <AlertDialogFooter>\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n                      <AlertDialogAction>Allow</AlertDialogAction>\n                    </AlertDialogFooter>\n                  </AlertDialogContent>\n                </AlertDialog>\n                <ButtonGroup>\n                  <Button variant=\"outline\">Button Group</Button>\n                  <DropdownMenu>\n                    <DropdownMenuTrigger\n                      render={<Button variant=\"outline\" size=\"icon\" />}\n                    >\n                      <IconPlaceholder\n                        lucide=\"ChevronUpIcon\"\n                        tabler=\"IconChevronUp\"\n                        hugeicons=\"ArrowUp01Icon\"\n                        phosphor=\"CaretUpIcon\"\n                        remixicon=\"RiArrowUpSLine\"\n                      />\n                    </DropdownMenuTrigger>\n                    <DropdownMenuContent\n                      align=\"end\"\n                      side=\"top\"\n                      className=\"w-fit\"\n                    >\n                      <DropdownMenuGroup>\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\n                      </DropdownMenuGroup>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuGroup>\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\n                      </DropdownMenuGroup>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuGroup>\n                        <DropdownMenuItem variant=\"destructive\">\n                          Delete Conversation\n                        </DropdownMenuItem>\n                      </DropdownMenuGroup>\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n                </ButtonGroup>\n                <Switch defaultChecked className=\"ml-auto\" />\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/dialog-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { Kbd } from \"@/registry/bases/base/ui/kbd\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/base/ui/native-select\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { Switch } from \"@/registry/bases/base/ui/switch\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/bases/base/ui/tabs\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function DialogExample() {\n  return (\n    <ExampleWrapper>\n      <DialogWithForm />\n      <DialogScrollableContent />\n      <DialogWithStickyFooter />\n      <DialogNoCloseButton />\n      <DialogChatSettings />\n    </ExampleWrapper>\n  )\n}\n\nfunction DialogWithForm() {\n  return (\n    <Example title=\"With Form\" className=\"items-center justify-center\">\n      <Dialog>\n        <form>\n          <DialogTrigger render={<Button variant=\"outline\" />}>\n            Edit Profile\n          </DialogTrigger>\n          <DialogContent>\n            <DialogHeader>\n              <DialogTitle>Edit profile</DialogTitle>\n              <DialogDescription>\n                Make changes to your profile here. Click save when you&apos;re\n                done. Your profile will be updated immediately.\n              </DialogDescription>\n            </DialogHeader>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"name-1\">Name</FieldLabel>\n                <Input id=\"name-1\" name=\"name\" defaultValue=\"Pedro Duarte\" />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"username-1\">Username</FieldLabel>\n                <Input\n                  id=\"username-1\"\n                  name=\"username\"\n                  defaultValue=\"@peduarte\"\n                />\n              </Field>\n            </FieldGroup>\n            <DialogFooter>\n              <DialogClose render={<Button variant=\"outline\" />}>\n                Cancel\n              </DialogClose>\n              <Button type=\"submit\">Save changes</Button>\n            </DialogFooter>\n          </DialogContent>\n        </form>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction DialogScrollableContent() {\n  return (\n    <Example title=\"Scrollable Content\" className=\"items-center justify-center\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Scrollable Content\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Scrollable Content</DialogTitle>\n            <DialogDescription>\n              This is a dialog with scrollable content.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\">\n            {Array.from({ length: 10 }).map((_, index) => (\n              <p\n                key={index}\n                className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n              >\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\n              </p>\n            ))}\n          </div>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction DialogWithStickyFooter() {\n  return (\n    <Example title=\"With Sticky Footer\" className=\"items-center justify-center\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Sticky Footer\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Scrollable Content</DialogTitle>\n            <DialogDescription>\n              This is a dialog with scrollable content.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\">\n            {Array.from({ length: 10 }).map((_, index) => (\n              <p\n                key={index}\n                className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n              >\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\n              </p>\n            ))}\n          </div>\n          <DialogFooter>\n            <DialogClose render={<Button variant=\"outline\" />}>\n              Close\n            </DialogClose>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction DialogNoCloseButton() {\n  return (\n    <Example title=\"No Close Button\" className=\"items-center justify-center\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          No Close Button\n        </DialogTrigger>\n        <DialogContent showCloseButton={false}>\n          <DialogHeader>\n            <DialogTitle>No Close Button</DialogTitle>\n            <DialogDescription>\n              This dialog doesn&apos;t have a close button in the top-right\n              corner.\n            </DialogDescription>\n          </DialogHeader>\n          <DialogFooter>\n            <DialogClose render={<Button variant=\"outline\" />}>\n              Close\n            </DialogClose>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nconst spokenLanguages = [\n  { label: \"Auto\", value: \"auto\" },\n  { label: \"English\", value: \"en\" },\n  { label: \"Spanish\", value: \"es\" },\n  { label: \"French\", value: \"fr\" },\n  { label: \"German\", value: \"de\" },\n  { label: \"Italian\", value: \"it\" },\n  { label: \"Portuguese\", value: \"pt\" },\n  { label: \"Russian\", value: \"ru\" },\n  { label: \"Chinese\", value: \"zh\" },\n  { label: \"Japanese\", value: \"ja\" },\n  { label: \"Korean\", value: \"ko\" },\n  { label: \"Arabic\", value: \"ar\" },\n  { label: \"Hindi\", value: \"hi\" },\n  { label: \"Bengali\", value: \"bn\" },\n  { label: \"Telugu\", value: \"te\" },\n  { label: \"Marathi\", value: \"mr\" },\n  { label: \"Kannada\", value: \"kn\" },\n  { label: \"Malayalam\", value: \"ml\" },\n]\n\nconst voices = [\n  { label: \"Samantha\", value: \"samantha\" },\n  { label: \"Alex\", value: \"alex\" },\n  { label: \"Fred\", value: \"fred\" },\n  { label: \"Victoria\", value: \"victoria\" },\n  { label: \"Tom\", value: \"tom\" },\n  { label: \"Karen\", value: \"karen\" },\n  { label: \"Sam\", value: \"sam\" },\n  { label: \"Daniel\", value: \"daniel\" },\n]\n\nconst themes = [\n  { label: \"Light\", value: \"light\" },\n  { label: \"Dark\", value: \"dark\" },\n  { label: \"System\", value: \"system\" },\n]\n\nconst accents = [\n  { label: \"Default\", value: \"default\" },\n  { label: \"Red\", value: \"red\" },\n  { label: \"Blue\", value: \"blue\" },\n  { label: \"Green\", value: \"green\" },\n  { label: \"Purple\", value: \"purple\" },\n  { label: \"Pink\", value: \"pink\" },\n]\n\nfunction DialogChatSettings() {\n  const [tab, setTab] = React.useState(\"general\")\n  const [theme, setTheme] = React.useState(\"system\")\n  const [accentColor, setAccentColor] = React.useState(\"default\")\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\"en\")\n  const [voice, setVoice] = React.useState(\"samantha\")\n\n  return (\n    <Example title=\"Chat Settings\" className=\"items-center justify-center\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Chat Settings\n        </DialogTrigger>\n        <DialogContent className=\"min-w-md\">\n          <DialogHeader>\n            <DialogTitle>Chat Settings</DialogTitle>\n            <DialogDescription>\n              Customize your chat settings: theme, accent color, spoken\n              language, voice, personality, and custom instructions.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"flex flex-col gap-4\">\n            <NativeSelect\n              value={tab}\n              onChange={(e) => setTab(e.target.value)}\n              className=\"w-full md:hidden\"\n            >\n              <NativeSelectOption value=\"general\">General</NativeSelectOption>\n              <NativeSelectOption value=\"notifications\">\n                Notifications\n              </NativeSelectOption>\n              <NativeSelectOption value=\"personalization\">\n                Personalization\n              </NativeSelectOption>\n              <NativeSelectOption value=\"security\">Security</NativeSelectOption>\n            </NativeSelect>\n            <Tabs value={tab} onValueChange={setTab}>\n              <TabsList className=\"hidden w-full md:flex\">\n                <TabsTrigger value=\"general\">General</TabsTrigger>\n                <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n                <TabsTrigger value=\"personalization\">\n                  Personalization\n                </TabsTrigger>\n                <TabsTrigger value=\"security\">Security</TabsTrigger>\n              </TabsList>\n              <div className=\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\">\n                <TabsContent value=\"general\">\n                  <FieldSet>\n                    <FieldGroup>\n                      <Field orientation=\"horizontal\">\n                        <FieldLabel htmlFor=\"theme\">Theme</FieldLabel>\n                        <Select\n                          items={themes}\n                          value={theme}\n                          onValueChange={(value) => setTheme(value as string)}\n                        >\n                          <SelectTrigger id=\"theme\">\n                            <SelectValue />\n                          </SelectTrigger>\n                          <SelectContent align=\"end\">\n                            <SelectGroup>\n                              {themes.map((theme) => (\n                                <SelectItem\n                                  key={theme.value}\n                                  value={theme.value}\n                                >\n                                  {theme.label}\n                                </SelectItem>\n                              ))}\n                            </SelectGroup>\n                          </SelectContent>\n                        </Select>\n                      </Field>\n                      <FieldSeparator />\n                      <Field orientation=\"horizontal\">\n                        <FieldLabel htmlFor=\"accent-color\">\n                          Accent Color\n                        </FieldLabel>\n                        <Select\n                          items={accents}\n                          value={accentColor}\n                          onValueChange={(value) =>\n                            setAccentColor(value as string)\n                          }\n                        >\n                          <SelectTrigger id=\"accent-color\">\n                            <SelectValue />\n                          </SelectTrigger>\n                          <SelectContent align=\"end\">\n                            <SelectGroup>\n                              {accents.map((accent) => (\n                                <SelectItem\n                                  key={accent.value}\n                                  value={accent.value}\n                                >\n                                  {accent.label}\n                                </SelectItem>\n                              ))}\n                            </SelectGroup>\n                          </SelectContent>\n                        </Select>\n                      </Field>\n                      <FieldSeparator />\n                      <Field orientation=\"responsive\">\n                        <FieldContent>\n                          <FieldLabel htmlFor=\"spoken-language\">\n                            Spoken Language\n                          </FieldLabel>\n                          <FieldDescription>\n                            For best results, select the language you mainly\n                            speak. If it&apos;s not listed, it may still be\n                            supported via auto-detection.\n                          </FieldDescription>\n                        </FieldContent>\n                        <Select\n                          items={spokenLanguages}\n                          value={spokenLanguage}\n                          onValueChange={(value) =>\n                            setSpokenLanguage(value as string)\n                          }\n                        >\n                          <SelectTrigger id=\"spoken-language\">\n                            <SelectValue />\n                          </SelectTrigger>\n                          <SelectContent align=\"end\">\n                            <SelectGroup>\n                              {spokenLanguages.map((language) => (\n                                <SelectItem\n                                  key={language.value}\n                                  value={language.value}\n                                >\n                                  {language.label}\n                                </SelectItem>\n                              ))}\n                            </SelectGroup>\n                          </SelectContent>\n                        </Select>\n                      </Field>\n                      <FieldSeparator />\n                      <Field orientation=\"horizontal\">\n                        <FieldLabel htmlFor=\"voice\">Voice</FieldLabel>\n                        <Select\n                          items={voices}\n                          value={voice}\n                          onValueChange={(value) => setVoice(value as string)}\n                        >\n                          <SelectTrigger id=\"voice\">\n                            <SelectValue />\n                          </SelectTrigger>\n                          <SelectContent align=\"end\">\n                            <SelectGroup>\n                              {voices.map((voice) => (\n                                <SelectItem\n                                  key={voice.value}\n                                  value={voice.value}\n                                >\n                                  {voice.label}\n                                </SelectItem>\n                              ))}\n                            </SelectGroup>\n                          </SelectContent>\n                        </Select>\n                      </Field>\n                    </FieldGroup>\n                  </FieldSet>\n                </TabsContent>\n                <TabsContent value=\"notifications\">\n                  <FieldGroup>\n                    <FieldSet>\n                      <FieldLabel>Responses</FieldLabel>\n                      <FieldDescription>\n                        Get notified when ChatGPT responds to requests that take\n                        time, like research or image generation.\n                      </FieldDescription>\n                      <FieldGroup data-slot=\"checkbox-group\">\n                        <Field orientation=\"horizontal\">\n                          <Checkbox id=\"push\" defaultChecked disabled />\n                          <FieldLabel htmlFor=\"push\" className=\"font-normal\">\n                            Push notifications\n                          </FieldLabel>\n                        </Field>\n                      </FieldGroup>\n                    </FieldSet>\n                    <FieldSeparator />\n                    <FieldSet>\n                      <FieldLabel>Tasks</FieldLabel>\n                      <FieldDescription>\n                        Get notified when tasks you&apos;ve created have\n                        updates. <a href=\"#\">Manage tasks</a>\n                      </FieldDescription>\n                      <FieldGroup data-slot=\"checkbox-group\">\n                        <Field orientation=\"horizontal\">\n                          <Checkbox id=\"push-tasks\" />\n                          <FieldLabel\n                            htmlFor=\"push-tasks\"\n                            className=\"font-normal\"\n                          >\n                            Push notifications\n                          </FieldLabel>\n                        </Field>\n                        <Field orientation=\"horizontal\">\n                          <Checkbox id=\"email-tasks\" />\n                          <FieldLabel\n                            htmlFor=\"email-tasks\"\n                            className=\"font-normal\"\n                          >\n                            Email notifications\n                          </FieldLabel>\n                        </Field>\n                      </FieldGroup>\n                    </FieldSet>\n                  </FieldGroup>\n                </TabsContent>\n                <TabsContent value=\"personalization\">\n                  <FieldGroup>\n                    <Field orientation=\"responsive\">\n                      <FieldLabel htmlFor=\"nickname\">Nickname</FieldLabel>\n                      <InputGroup>\n                        <InputGroupInput\n                          id=\"nickname\"\n                          placeholder=\"Broski\"\n                          className=\"@md/field-group:max-w-[200px]\"\n                        />\n                        <InputGroupAddon align=\"inline-end\">\n                          <Tooltip>\n                            <TooltipTrigger\n                              render={<InputGroupButton size=\"icon-xs\" />}\n                            >\n                              <IconPlaceholder\n                                lucide=\"InfoIcon\"\n                                tabler=\"IconInfoCircle\"\n                                hugeicons=\"AlertCircleIcon\"\n                                phosphor=\"InfoIcon\"\n                                remixicon=\"RiInformationLine\"\n                              />\n                            </TooltipTrigger>\n                            <TooltipContent className=\"flex items-center gap-2\">\n                              Used to identify you in the chat. <Kbd>N</Kbd>\n                            </TooltipContent>\n                          </Tooltip>\n                        </InputGroupAddon>\n                      </InputGroup>\n                    </Field>\n                    <FieldSeparator />\n                    <Field\n                      orientation=\"responsive\"\n                      className=\"@md/field-group:flex-col @2xl/field-group:flex-row\"\n                    >\n                      <FieldContent>\n                        <FieldLabel htmlFor=\"about\">More about you</FieldLabel>\n                        <FieldDescription>\n                          Tell us more about yourself. This will be used to help\n                          us personalize your experience.\n                        </FieldDescription>\n                      </FieldContent>\n                      <Textarea\n                        id=\"about\"\n                        placeholder=\"I'm a software engineer...\"\n                        className=\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\"\n                      />\n                    </Field>\n                    <FieldSeparator />\n                    <FieldLabel>\n                      <Field orientation=\"horizontal\">\n                        <FieldContent>\n                          <FieldLabel htmlFor=\"customization\">\n                            Enable customizations\n                          </FieldLabel>\n                          <FieldDescription>\n                            Enable customizations to make ChatGPT more\n                            personalized.\n                          </FieldDescription>\n                        </FieldContent>\n                        <Switch id=\"customization\" defaultChecked />\n                      </Field>\n                    </FieldLabel>\n                  </FieldGroup>\n                </TabsContent>\n                <TabsContent value=\"security\">\n                  <FieldGroup>\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldLabel htmlFor=\"2fa\">\n                          Multi-factor authentication\n                        </FieldLabel>\n                        <FieldDescription>\n                          Enable multi-factor authentication to secure your\n                          account. If you do not have a two-factor\n                          authentication device, you can use a one-time code\n                          sent to your email.\n                        </FieldDescription>\n                      </FieldContent>\n                      <Switch id=\"2fa\" />\n                    </Field>\n                    <FieldSeparator />\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldTitle>Log out</FieldTitle>\n                        <FieldDescription>\n                          Log out of your account on this device.\n                        </FieldDescription>\n                      </FieldContent>\n                      <Button variant=\"outline\" size=\"sm\">\n                        Log Out\n                      </Button>\n                    </Field>\n                    <FieldSeparator />\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldTitle>Log out of all devices</FieldTitle>\n                        <FieldDescription>\n                          This will log you out of all devices, including the\n                          current session. It may take up to 30 minutes for the\n                          changes to take effect.\n                        </FieldDescription>\n                      </FieldContent>\n                      <Button variant=\"outline\" size=\"sm\">\n                        Log Out All\n                      </Button>\n                    </Field>\n                  </FieldGroup>\n                </TabsContent>\n              </div>\n            </Tabs>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/drawer-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/bases/base/ui/drawer\"\n\nexport default function DrawerExample() {\n  return (\n    <ExampleWrapper>\n      <DrawerScrollableContent />\n      <DrawerWithSides />\n    </ExampleWrapper>\n  )\n}\n\nconst DRAWER_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nfunction DrawerWithSides() {\n  return (\n    <Example title=\"Sides\">\n      <div className=\"flex flex-wrap gap-2\">\n        {DRAWER_SIDES.map((side) => (\n          <Drawer\n            key={side}\n            direction={\n              side === \"bottom\" ? undefined : (side as \"top\" | \"right\" | \"left\")\n            }\n          >\n            <DrawerTrigger asChild>\n              <Button variant=\"outline\" className=\"capitalize\">\n                {side}\n              </Button>\n            </DrawerTrigger>\n            <DrawerContent className=\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\">\n              <DrawerHeader>\n                <DrawerTitle>Move Goal</DrawerTitle>\n                <DrawerDescription>\n                  Set your daily activity goal.\n                </DrawerDescription>\n              </DrawerHeader>\n              <div className=\"no-scrollbar overflow-y-auto px-4\">\n                {Array.from({ length: 10 }).map((_, index) => (\n                  <p\n                    key={index}\n                    className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n                  >\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                    do eiusmod tempor incididunt ut labore et dolore magna\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\n                    Duis aute irure dolor in reprehenderit in voluptate velit\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\n                    occaecat cupidatat non proident, sunt in culpa qui officia\n                    deserunt mollit anim id est laborum.\n                  </p>\n                ))}\n              </div>\n              <DrawerFooter>\n                <Button>Submit</Button>\n                <DrawerClose asChild>\n                  <Button variant=\"outline\">Cancel</Button>\n                </DrawerClose>\n              </DrawerFooter>\n            </DrawerContent>\n          </Drawer>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction DrawerScrollableContent() {\n  return (\n    <Example title=\"Scrollable Content\">\n      <Drawer direction=\"right\">\n        <DrawerTrigger asChild>\n          <Button variant=\"outline\">Scrollable Content</Button>\n        </DrawerTrigger>\n        <DrawerContent>\n          <DrawerHeader>\n            <DrawerTitle>Move Goal</DrawerTitle>\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"no-scrollbar overflow-y-auto px-4\">\n            {Array.from({ length: 10 }).map((_, index) => (\n              <p\n                key={index}\n                className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n              >\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\n              </p>\n            ))}\n          </div>\n          <DrawerFooter>\n            <Button>Submit</Button>\n            <DrawerClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </DrawerContent>\n      </Drawer>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function DropdownMenuExample() {\n  return (\n    <ExampleWrapper>\n      <DropdownMenuBasic />\n      <DropdownMenuComplex />\n      <DropdownMenuSides />\n      <DropdownMenuWithIcons />\n      <DropdownMenuWithShortcuts />\n      <DropdownMenuWithSubmenu />\n      <DropdownMenuWithCheckboxes />\n      <DropdownMenuWithCheckboxesIcons />\n      <DropdownMenuWithRadio />\n      <DropdownMenuWithRadioIcons />\n      <DropdownMenuWithDestructive />\n      <DropdownMenuWithAvatar />\n      <DropdownMenuInDialog />\n      <DropdownMenuWithInset />\n    </ExampleWrapper>\n  )\n}\n\nfunction DropdownMenuBasic() {\n  return (\n    <Example title=\"Basic\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Open\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\n            <DropdownMenuItem>Profile</DropdownMenuItem>\n            <DropdownMenuItem>Billing</DropdownMenuItem>\n            <DropdownMenuItem>Settings</DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem>GitHub</DropdownMenuItem>\n          <DropdownMenuItem>Support</DropdownMenuItem>\n          <DropdownMenuItem disabled>API</DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuSides() {\n  return (\n    <Example title=\"Sides\" containerClassName=\"col-span-2\">\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {(\n          [\n            \"inline-start\",\n            \"left\",\n            \"top\",\n            \"bottom\",\n            \"right\",\n            \"inline-end\",\n          ] as const\n        ).map((side) => (\n          <DropdownMenu key={side}>\n            <DropdownMenuTrigger\n              render={<Button variant=\"outline\" className=\"w-fit capitalize\" />}\n            >\n              {side.replace(\"-\", \" \")}\n            </DropdownMenuTrigger>\n            <DropdownMenuContent side={side}>\n              <DropdownMenuGroup>\n                <DropdownMenuItem>Profile</DropdownMenuItem>\n                <DropdownMenuItem>Billing</DropdownMenuItem>\n                <DropdownMenuItem>Settings</DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Open\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"UserIcon\"\n              tabler=\"IconUser\"\n              hugeicons=\"UserIcon\"\n              phosphor=\"UserIcon\"\n              remixicon=\"RiUserLine\"\n            />\n            Profile\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"CreditCardIcon\"\n              tabler=\"IconCreditCard\"\n              hugeicons=\"CreditCardIcon\"\n              phosphor=\"CreditCardIcon\"\n              remixicon=\"RiBankCardLine\"\n            />\n            Billing\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"SettingsIcon\"\n              tabler=\"IconSettings\"\n              hugeicons=\"SettingsIcon\"\n              phosphor=\"GearIcon\"\n              remixicon=\"RiSettingsLine\"\n            />\n            Settings\n          </DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem variant=\"destructive\">\n            <IconPlaceholder\n              lucide=\"LogOutIcon\"\n              tabler=\"IconLogout\"\n              hugeicons=\"LogoutIcon\"\n              phosphor=\"SignOutIcon\"\n              remixicon=\"RiLogoutBoxLine\"\n            />\n            Log out\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithShortcuts() {\n  return (\n    <Example title=\"With Shortcuts\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Open\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\n            <DropdownMenuItem>\n              Profile\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              Billing\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              Settings\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              Keyboard shortcuts\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem>\n            Log out\n            <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithSubmenu() {\n  return (\n    <Example title=\"With Submenu\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Open\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuItem>Team</DropdownMenuItem>\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\n              <DropdownMenuPortal>\n                <DropdownMenuSubContent>\n                  <DropdownMenuItem>Email</DropdownMenuItem>\n                  <DropdownMenuItem>Message</DropdownMenuItem>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem>More...</DropdownMenuItem>\n                </DropdownMenuSubContent>\n              </DropdownMenuPortal>\n            </DropdownMenuSub>\n            <DropdownMenuItem>\n              New Team\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithCheckboxes() {\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\n  const [showPanel, setShowPanel] = React.useState(false)\n\n  return (\n    <Example title=\"With Checkboxes\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Checkboxes\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"min-w-40\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n            <DropdownMenuCheckboxItem\n              checked={showStatusBar}\n              onCheckedChange={setShowStatusBar}\n            >\n              <IconPlaceholder\n                lucide=\"LayoutIcon\"\n                tabler=\"IconLayout\"\n                hugeicons=\"LayoutIcon\"\n                phosphor=\"LayoutIcon\"\n                remixicon=\"RiLayoutLine\"\n              />\n              Status Bar\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={showActivityBar}\n              onCheckedChange={setShowActivityBar}\n              disabled\n            >\n              <IconPlaceholder\n                lucide=\"ActivityIcon\"\n                tabler=\"IconActivity\"\n                hugeicons=\"ActivityIcon\"\n                phosphor=\"ActivityIcon\"\n                remixicon=\"RiPulseLine\"\n              />\n              Activity Bar\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={showPanel}\n              onCheckedChange={setShowPanel}\n            >\n              <IconPlaceholder\n                lucide=\"PanelLeftIcon\"\n                tabler=\"IconLayoutSidebar\"\n                hugeicons=\"LayoutLeftIcon\"\n                phosphor=\"SidebarIcon\"\n                remixicon=\"RiSideBarLine\"\n              />\n              Panel\n            </DropdownMenuCheckboxItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithRadio() {\n  const [position, setPosition] = React.useState(\"bottom\")\n\n  return (\n    <Example title=\"With Radio Group\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Radio Group\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\n            <DropdownMenuRadioGroup\n              value={position}\n              onValueChange={setPosition}\n            >\n              <DropdownMenuRadioItem value=\"top\">\n                <IconPlaceholder\n                  lucide=\"ArrowUpIcon\"\n                  tabler=\"IconArrowUp\"\n                  hugeicons=\"ArrowUp01Icon\"\n                  phosphor=\"ArrowUpIcon\"\n                  remixicon=\"RiArrowUpLine\"\n                />\n                Top\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem value=\"bottom\">\n                <IconPlaceholder\n                  lucide=\"ArrowDownIcon\"\n                  tabler=\"IconArrowDown\"\n                  hugeicons=\"ArrowDown01Icon\"\n                  phosphor=\"ArrowDownIcon\"\n                  remixicon=\"RiArrowDownLine\"\n                />\n                Bottom\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem value=\"right\" disabled>\n                <IconPlaceholder\n                  lucide=\"ArrowRightIcon\"\n                  tabler=\"IconArrowRight\"\n                  hugeicons=\"ArrowRight01Icon\"\n                  phosphor=\"ArrowRightIcon\"\n                  remixicon=\"RiArrowRightLine\"\n                />\n                Right\n              </DropdownMenuRadioItem>\n            </DropdownMenuRadioGroup>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithCheckboxesIcons() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n\n  return (\n    <Example title=\"Checkboxes with Icons\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Notifications\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"min-w-56\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\n            <DropdownMenuCheckboxItem\n              checked={notifications.email}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, email: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"MailIcon\"\n                tabler=\"IconMail\"\n                hugeicons=\"MailIcon\"\n                phosphor=\"EnvelopeIcon\"\n                remixicon=\"RiMailLine\"\n              />\n              Email notifications\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={notifications.sms}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, sms: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"MessageSquareIcon\"\n                tabler=\"IconMessage\"\n                hugeicons=\"MessageIcon\"\n                phosphor=\"ChatCircleIcon\"\n                remixicon=\"RiChat1Line\"\n              />\n              SMS notifications\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={notifications.push}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, push: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"BellIcon\"\n                tabler=\"IconBell\"\n                hugeicons=\"NotificationIcon\"\n                phosphor=\"BellIcon\"\n                remixicon=\"RiNotificationLine\"\n              />\n              Push notifications\n            </DropdownMenuCheckboxItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithRadioIcons() {\n  const [paymentMethod, setPaymentMethod] = React.useState(\"card\")\n\n  return (\n    <Example title=\"Radio with Icons\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Payment Method\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"min-w-56\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\n            <DropdownMenuRadioGroup\n              value={paymentMethod}\n              onValueChange={setPaymentMethod}\n            >\n              <DropdownMenuRadioItem value=\"card\">\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Credit Card\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem value=\"paypal\">\n                <IconPlaceholder\n                  lucide=\"WalletIcon\"\n                  tabler=\"IconWallet\"\n                  hugeicons=\"WalletIcon\"\n                  phosphor=\"WalletIcon\"\n                  remixicon=\"RiWalletLine\"\n                />\n                PayPal\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem value=\"bank\">\n                <IconPlaceholder\n                  lucide=\"Building2Icon\"\n                  tabler=\"IconBuildingBank\"\n                  hugeicons=\"BankIcon\"\n                  phosphor=\"BankIcon\"\n                  remixicon=\"RiBankLine\"\n                />\n                Bank Transfer\n              </DropdownMenuRadioItem>\n            </DropdownMenuRadioGroup>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithDestructive() {\n  return (\n    <Example title=\"With Destructive Items\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Actions\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"PencilIcon\"\n              tabler=\"IconPencil\"\n              hugeicons=\"EditIcon\"\n              phosphor=\"PencilIcon\"\n              remixicon=\"RiPencilLine\"\n            />\n            Edit\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"ShareIcon\"\n              tabler=\"IconShare\"\n              hugeicons=\"ShareIcon\"\n              phosphor=\"ShareIcon\"\n              remixicon=\"RiShareLine\"\n            />\n            Share\n          </DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem>\n            <IconPlaceholder\n              lucide=\"ArchiveIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n            Archive\n          </DropdownMenuItem>\n          <DropdownMenuItem variant=\"destructive\">\n            <IconPlaceholder\n              lucide=\"TrashIcon\"\n              tabler=\"IconTrash\"\n              hugeicons=\"DeleteIcon\"\n              phosphor=\"TrashIcon\"\n              remixicon=\"RiDeleteBinLine\"\n            />\n            Delete\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithAvatar() {\n  const menuContent = (\n    <>\n      <DropdownMenuGroup>\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"BadgeCheckIcon\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadgeIcon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n          />\n          Account\n        </DropdownMenuItem>\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"CreditCardIcon\"\n            tabler=\"IconCreditCard\"\n            hugeicons=\"CreditCardIcon\"\n            phosphor=\"CreditCardIcon\"\n            remixicon=\"RiBankCardLine\"\n          />\n          Billing\n        </DropdownMenuItem>\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"BellIcon\"\n            tabler=\"IconBell\"\n            hugeicons=\"NotificationIcon\"\n            phosphor=\"BellIcon\"\n            remixicon=\"RiNotificationLine\"\n          />\n          Notifications\n        </DropdownMenuItem>\n      </DropdownMenuGroup>\n      <DropdownMenuSeparator />\n      <DropdownMenuItem>\n        <IconPlaceholder\n          lucide=\"LogOutIcon\"\n          tabler=\"IconLogout\"\n          hugeicons=\"LogoutIcon\"\n          phosphor=\"SignOutIcon\"\n          remixicon=\"RiLogoutBoxLine\"\n        />\n        Sign Out\n      </DropdownMenuItem>\n    </>\n  )\n\n  return (\n    <Example title=\"With Avatar\">\n      <div className=\"flex items-center justify-between gap-4\">\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <Button\n                variant=\"outline\"\n                className=\"h-12 justify-start px-2 md:max-w-[200px]\"\n              />\n            }\n          >\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"Shadcn\" />\n              <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n            </Avatar>\n            <div className=\"grid flex-1 text-left text-sm leading-tight\">\n              <span className=\"truncate font-semibold\">shadcn</span>\n              <span className=\"truncate text-xs text-muted-foreground\">\n                shadcn@example.com\n              </span>\n            </div>\n            <IconPlaceholder\n              lucide=\"ChevronsUpDownIcon\"\n              tabler=\"IconSelector\"\n              hugeicons=\"UnfoldMoreIcon\"\n              phosphor=\"CaretUpDownIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n              className=\"ml-auto text-muted-foreground\"\n            />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent className=\"w-(--anchor-width) min-w-56\">\n            {menuContent}\n          </DropdownMenuContent>\n        </DropdownMenu>\n        <DropdownMenu>\n          <DropdownMenuTrigger\n            render={\n              <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\" />\n            }\n          >\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"shadcn\" />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" side=\"top\">\n            {menuContent}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n    </Example>\n  )\n}\n\nfunction DropdownMenuInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\n            <DialogDescription>\n              Click the button below to see the dropdown menu.\n            </DialogDescription>\n          </DialogHeader>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={<Button variant=\"outline\" className=\"w-fit\" />}\n            >\n              Open Menu\n            </DropdownMenuTrigger>\n            <DropdownMenuContent>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n                Copy\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"ScissorsIcon\"\n                  tabler=\"IconCut\"\n                  hugeicons=\"ScissorIcon\"\n                  phosphor=\"ScissorsIcon\"\n                  remixicon=\"RiScissorsLine\"\n                />\n                Cut\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"ClipboardPasteIcon\"\n                  tabler=\"IconClipboard\"\n                  hugeicons=\"ClipboardIcon\"\n                  phosphor=\"ClipboardIcon\"\n                  remixicon=\"RiClipboardLine\"\n                />\n                Paste\n              </DropdownMenuItem>\n              <DropdownMenuSeparator />\n              <DropdownMenuSub>\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\n                <DropdownMenuPortal>\n                  <DropdownMenuSubContent>\n                    <DropdownMenuItem>Save Page...</DropdownMenuItem>\n                    <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\n                    <DropdownMenuItem>Name Window...</DropdownMenuItem>\n                    <DropdownMenuSeparator />\n                    <DropdownMenuItem>Developer Tools</DropdownMenuItem>\n                  </DropdownMenuSubContent>\n                </DropdownMenuPortal>\n              </DropdownMenuSub>\n              <DropdownMenuSeparator />\n              <DropdownMenuItem variant=\"destructive\">\n                <IconPlaceholder\n                  lucide=\"TrashIcon\"\n                  tabler=\"IconTrash\"\n                  hugeicons=\"DeleteIcon\"\n                  phosphor=\"TrashIcon\"\n                  remixicon=\"RiDeleteBinLine\"\n                />\n                Delete\n              </DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithInset() {\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\n  const [showUrls, setShowUrls] = React.useState(false)\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Example title=\"With Inset\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Open\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"w-44\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"CopyIcon\"\n                tabler=\"IconCopy\"\n                hugeicons=\"CopyIcon\"\n                phosphor=\"CopyIcon\"\n                remixicon=\"RiFileCopyLine\"\n              />\n              Copy\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"ScissorsIcon\"\n                tabler=\"IconCut\"\n                hugeicons=\"ScissorIcon\"\n                phosphor=\"ScissorsIcon\"\n                remixicon=\"RiScissorsLine\"\n              />\n              Cut\n            </DropdownMenuItem>\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\n            <DropdownMenuCheckboxItem\n              inset\n              checked={showBookmarks}\n              onCheckedChange={setShowBookmarks}\n            >\n              Bookmarks\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              inset\n              checked={showUrls}\n              onCheckedChange={setShowUrls}\n            >\n              Full URLs\n            </DropdownMenuCheckboxItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\n              <DropdownMenuRadioItem inset value=\"light\">\n                Light\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem inset value=\"dark\">\n                Dark\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem inset value=\"system\">\n                System\n              </DropdownMenuRadioItem>\n            </DropdownMenuRadioGroup>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuComplex() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <Example title=\"Complex\">\n      <DropdownMenu>\n        <DropdownMenuTrigger\n          render={<Button variant=\"outline\" className=\"w-fit\" />}\n        >\n          Complex Menu\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>File</DropdownMenuLabel>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"FileIcon\"\n                tabler=\"IconFile\"\n                hugeicons=\"FileIcon\"\n                phosphor=\"FileIcon\"\n                remixicon=\"RiFileLine\"\n              />\n              New File\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"FolderIcon\"\n                tabler=\"IconFolder\"\n                hugeicons=\"FolderIcon\"\n                phosphor=\"FolderIcon\"\n                remixicon=\"RiFolderLine\"\n              />\n              New Folder\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>\n                <IconPlaceholder\n                  lucide=\"FolderOpenIcon\"\n                  tabler=\"IconFolderOpen\"\n                  hugeicons=\"FolderOpenIcon\"\n                  phosphor=\"FolderOpenIcon\"\n                  remixicon=\"RiFolderOpenLine\"\n                />\n                Open Recent\n              </DropdownMenuSubTrigger>\n              <DropdownMenuPortal>\n                <DropdownMenuSubContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"FileCodeIcon\"\n                        tabler=\"IconFileCode\"\n                        hugeicons=\"CodeIcon\"\n                        phosphor=\"CodeIcon\"\n                        remixicon=\"RiCodeLine\"\n                      />\n                      Project Alpha\n                    </DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"FileCodeIcon\"\n                        tabler=\"IconFileCode\"\n                        hugeicons=\"CodeIcon\"\n                        phosphor=\"CodeIcon\"\n                        remixicon=\"RiCodeLine\"\n                      />\n                      Project Beta\n                    </DropdownMenuItem>\n                    <DropdownMenuSub>\n                      <DropdownMenuSubTrigger>\n                        <IconPlaceholder\n                          lucide=\"MoreHorizontalIcon\"\n                          tabler=\"IconDots\"\n                          hugeicons=\"MoreHorizontalCircle01Icon\"\n                          phosphor=\"DotsThreeOutlineIcon\"\n                          remixicon=\"RiMoreLine\"\n                        />\n                        More Projects\n                      </DropdownMenuSubTrigger>\n                      <DropdownMenuPortal>\n                        <DropdownMenuSubContent>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FileCodeIcon\"\n                              tabler=\"IconFileCode\"\n                              hugeicons=\"CodeIcon\"\n                              phosphor=\"FileCodeIcon\"\n                              remixicon=\"RiFileCodeLine\"\n                            />\n                            Project Gamma\n                          </DropdownMenuItem>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FileCodeIcon\"\n                              tabler=\"IconFileCode\"\n                              hugeicons=\"CodeIcon\"\n                              phosphor=\"FileCodeIcon\"\n                              remixicon=\"RiFileCodeLine\"\n                            />\n                            Project Delta\n                          </DropdownMenuItem>\n                        </DropdownMenuSubContent>\n                      </DropdownMenuPortal>\n                    </DropdownMenuSub>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"FolderSearchIcon\"\n                        tabler=\"IconFolderSearch\"\n                        hugeicons=\"SearchIcon\"\n                        phosphor=\"MagnifyingGlassIcon\"\n                        remixicon=\"RiSearchLine\"\n                      />\n                      Browse...\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuPortal>\n            </DropdownMenuSub>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"SaveIcon\"\n                tabler=\"IconDeviceFloppy\"\n                hugeicons=\"FloppyDiskIcon\"\n                phosphor=\"FloppyDiskIcon\"\n                remixicon=\"RiSaveLine\"\n              />\n              Save\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"DownloadIcon\"\n                tabler=\"IconDownload\"\n                hugeicons=\"DownloadIcon\"\n                phosphor=\"DownloadIcon\"\n                remixicon=\"RiDownloadLine\"\n              />\n              Export\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>View</DropdownMenuLabel>\n            <DropdownMenuCheckboxItem\n              checked={notifications.email}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, email: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"EyeIcon\"\n                tabler=\"IconEye\"\n                hugeicons=\"EyeIcon\"\n                phosphor=\"EyeIcon\"\n                remixicon=\"RiEyeLine\"\n              />\n              Show Sidebar\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={notifications.sms}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, sms: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"LayoutIcon\"\n                tabler=\"IconLayout\"\n                hugeicons=\"LayoutIcon\"\n                phosphor=\"LayoutIcon\"\n                remixicon=\"RiLayoutLine\"\n              />\n              Show Status Bar\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>\n                <IconPlaceholder\n                  lucide=\"PaletteIcon\"\n                  tabler=\"IconPalette\"\n                  hugeicons=\"PaintBoardIcon\"\n                  phosphor=\"PaletteIcon\"\n                  remixicon=\"RiPaletteLine\"\n                />\n                Theme\n              </DropdownMenuSubTrigger>\n              <DropdownMenuPortal>\n                <DropdownMenuSubContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n                    <DropdownMenuRadioGroup\n                      value={theme}\n                      onValueChange={setTheme}\n                    >\n                      <DropdownMenuRadioItem value=\"light\">\n                        <IconPlaceholder\n                          lucide=\"SunIcon\"\n                          tabler=\"IconSun\"\n                          hugeicons=\"SunIcon\"\n                          phosphor=\"SunIcon\"\n                          remixicon=\"RiSunLine\"\n                        />\n                        Light\n                      </DropdownMenuRadioItem>\n                      <DropdownMenuRadioItem value=\"dark\">\n                        <IconPlaceholder\n                          lucide=\"MoonIcon\"\n                          tabler=\"IconMoon\"\n                          hugeicons=\"MoonIcon\"\n                          phosphor=\"MoonIcon\"\n                          remixicon=\"RiMoonLine\"\n                        />\n                        Dark\n                      </DropdownMenuRadioItem>\n                      <DropdownMenuRadioItem value=\"system\">\n                        <IconPlaceholder\n                          lucide=\"MonitorIcon\"\n                          tabler=\"IconDeviceDesktop\"\n                          hugeicons=\"ComputerIcon\"\n                          phosphor=\"MonitorIcon\"\n                          remixicon=\"RiComputerLine\"\n                        />\n                        System\n                      </DropdownMenuRadioItem>\n                    </DropdownMenuRadioGroup>\n                  </DropdownMenuGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuPortal>\n            </DropdownMenuSub>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"UserIcon\"\n                tabler=\"IconUser\"\n                hugeicons=\"UserIcon\"\n                phosphor=\"UserIcon\"\n                remixicon=\"RiUserLine\"\n              />\n              Profile\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"CreditCardIcon\"\n                tabler=\"IconCreditCard\"\n                hugeicons=\"CreditCardIcon\"\n                phosphor=\"CreditCardIcon\"\n                remixicon=\"RiBankCardLine\"\n              />\n              Billing\n            </DropdownMenuItem>\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>\n                <IconPlaceholder\n                  lucide=\"SettingsIcon\"\n                  tabler=\"IconSettings\"\n                  hugeicons=\"SettingsIcon\"\n                  phosphor=\"GearIcon\"\n                  remixicon=\"RiSettingsLine\"\n                />\n                Settings\n              </DropdownMenuSubTrigger>\n              <DropdownMenuPortal>\n                <DropdownMenuSubContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"KeyboardIcon\"\n                        tabler=\"IconKeyboard\"\n                        hugeicons=\"KeyboardIcon\"\n                        phosphor=\"KeyboardIcon\"\n                        remixicon=\"RiKeyboardLine\"\n                      />\n                      Keyboard Shortcuts\n                    </DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"LanguagesIcon\"\n                        tabler=\"IconLanguage\"\n                        hugeicons=\"LanguageCircleIcon\"\n                        phosphor=\"TranslateIcon\"\n                        remixicon=\"RiTranslate\"\n                      />\n                      Language\n                    </DropdownMenuItem>\n                    <DropdownMenuSub>\n                      <DropdownMenuSubTrigger>\n                        <IconPlaceholder\n                          lucide=\"BellIcon\"\n                          tabler=\"IconBell\"\n                          hugeicons=\"NotificationIcon\"\n                          phosphor=\"BellIcon\"\n                          remixicon=\"RiNotificationLine\"\n                        />\n                        Notifications\n                      </DropdownMenuSubTrigger>\n                      <DropdownMenuPortal>\n                        <DropdownMenuSubContent>\n                          <DropdownMenuGroup>\n                            <DropdownMenuLabel>\n                              Notification Types\n                            </DropdownMenuLabel>\n                            <DropdownMenuCheckboxItem\n                              checked={notifications.push}\n                              onCheckedChange={(checked) =>\n                                setNotifications({\n                                  ...notifications,\n                                  push: checked === true,\n                                })\n                              }\n                            >\n                              <IconPlaceholder\n                                lucide=\"BellIcon\"\n                                tabler=\"IconBell\"\n                                hugeicons=\"NotificationIcon\"\n                                phosphor=\"BellIcon\"\n                                remixicon=\"RiNotificationLine\"\n                              />\n                              Push Notifications\n                            </DropdownMenuCheckboxItem>\n                            <DropdownMenuCheckboxItem\n                              checked={notifications.email}\n                              onCheckedChange={(checked) =>\n                                setNotifications({\n                                  ...notifications,\n                                  email: checked === true,\n                                })\n                              }\n                            >\n                              <IconPlaceholder\n                                lucide=\"MailIcon\"\n                                tabler=\"IconMail\"\n                                hugeicons=\"MailIcon\"\n                                phosphor=\"EnvelopeIcon\"\n                                remixicon=\"RiMailLine\"\n                              />\n                              Email Notifications\n                            </DropdownMenuCheckboxItem>\n                          </DropdownMenuGroup>\n                        </DropdownMenuSubContent>\n                      </DropdownMenuPortal>\n                    </DropdownMenuSub>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"ShieldIcon\"\n                        tabler=\"IconShield\"\n                        hugeicons=\"ShieldIcon\"\n                        phosphor=\"ShieldIcon\"\n                        remixicon=\"RiShieldLine\"\n                      />\n                      Privacy & Security\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuPortal>\n            </DropdownMenuSub>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"HelpCircleIcon\"\n                tabler=\"IconHelpCircle\"\n                hugeicons=\"HelpCircleIcon\"\n                phosphor=\"QuestionIcon\"\n                remixicon=\"RiQuestionLine\"\n              />\n              Help & Support\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"FileTextIcon\"\n                tabler=\"IconFileText\"\n                hugeicons=\"File01Icon\"\n                phosphor=\"FileTextIcon\"\n                remixicon=\"RiFileTextLine\"\n              />\n              Documentation\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Sign Out\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/empty-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { Kbd } from \"@/registry/bases/base/ui/kbd\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function EmptyExample() {\n  return (\n    <ExampleWrapper>\n      <EmptyBasic />\n      <EmptyWithMutedBackground />\n      <EmptyWithBorder />\n      <EmptyWithIcon />\n      <EmptyWithMutedBackgroundAlt />\n      <EmptyInCard />\n    </ExampleWrapper>\n  )\n}\n\nfunction EmptyBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Empty>\n        <EmptyHeader>\n          <EmptyTitle>No projects yet</EmptyTitle>\n          <EmptyDescription>\n            You haven&apos;t created any projects yet. Get started by creating\n            your first project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <div className=\"flex gap-2\">\n            <Button render={<a href=\"#\" />} nativeButton={false}>\n              Create project\n            </Button>\n            <Button variant=\"outline\">Import project</Button>\n          </div>\n          <Button\n            variant=\"link\"\n            render={<a href=\"#\" />}\n            className=\"text-muted-foreground\"\n            nativeButton={false}\n          >\n            Learn more{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRight01Icon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n            />\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyWithMutedBackground() {\n  return (\n    <Example title=\"With Muted Background\">\n      <Empty className=\"bg-muted\">\n        <EmptyHeader>\n          <EmptyTitle>No results found</EmptyTitle>\n          <EmptyDescription>\n            No results found for your search. Try adjusting your search terms.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <Button>Try again</Button>\n          <Button\n            variant=\"link\"\n            render={<a href=\"#\" />}\n            className=\"text-muted-foreground\"\n            nativeButton={false}\n          >\n            Learn more{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRight01Icon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n            />\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyWithBorder() {\n  return (\n    <Example title=\"With Border\">\n      <Empty className=\"border\">\n        <EmptyHeader>\n          <EmptyTitle>404 - Not Found</EmptyTitle>\n          <EmptyDescription>\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\n            for what you need below.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <InputGroup className=\"w-3/4\">\n            <InputGroupInput placeholder=\"Try searching for pages...\" />\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"CircleDashedIcon\"\n                tabler=\"IconCircleDashed\"\n                hugeicons=\"DashedLineCircleIcon\"\n                phosphor=\"CircleDashedIcon\"\n                remixicon=\"RiLoaderLine\"\n              />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>/</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <EmptyDescription>\n            Need help? <a href=\"#\">Contact support</a>\n          </EmptyDescription>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyWithIcon() {\n  return (\n    <Example title=\"With Icon\">\n      <Empty className=\"border\">\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"FolderIcon\"\n              tabler=\"IconFolder\"\n              hugeicons=\"Folder01Icon\"\n              phosphor=\"FolderIcon\"\n              remixicon=\"RiFolderLine\"\n            />\n          </EmptyMedia>\n          <EmptyTitle>Nothing to see here</EmptyTitle>\n          <EmptyDescription>\n            No posts have been created yet. Get started by{\" \"}\n            <a href=\"#\">creating your first post</a>.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n              data-icon=\"inline-start\"\n            />\n            New Post\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyWithMutedBackgroundAlt() {\n  return (\n    <Example title=\"With Muted Background Alt\">\n      <Empty className=\"bg-muted/50\">\n        <EmptyHeader>\n          <EmptyTitle>404 - Not Found</EmptyTitle>\n          <EmptyDescription>\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\n            for what you need below.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <InputGroup className=\"w-3/4\">\n            <InputGroupInput placeholder=\"Try searching for pages...\" />\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"CircleDashedIcon\"\n                tabler=\"IconCircleDashed\"\n                hugeicons=\"DashedLineCircleIcon\"\n                phosphor=\"CircleDashedIcon\"\n                remixicon=\"RiLoaderLine\"\n              />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>/</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <EmptyDescription>\n            Need help? <a href=\"#\">Contact support</a>\n          </EmptyDescription>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyInCard() {\n  return (\n    <Example title=\"In Card\">\n      <Empty>\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"FolderIcon\"\n              tabler=\"IconFolder\"\n              hugeicons=\"Folder01Icon\"\n              phosphor=\"FolderIcon\"\n              remixicon=\"RiFolderLine\"\n            />\n          </EmptyMedia>\n          <EmptyTitle>No projects yet</EmptyTitle>\n          <EmptyDescription>\n            You haven&apos;t created any projects yet. Get started by creating\n            your first project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <div className=\"flex gap-2\">\n            <Button render={<a href=\"#\" />} nativeButton={false}>\n              Create project\n            </Button>\n            <Button variant=\"outline\">Import project</Button>\n          </div>\n          <Button\n            variant=\"link\"\n            render={<a href=\"#\" />}\n            className=\"text-muted-foreground\"\n            nativeButton={false}\n          >\n            Learn more{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRight01Icon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n            />\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/field-example.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/registry/bases/base/ui/input-otp\"\nimport {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/registry/bases/base/ui/native-select\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/bases/base/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { Slider } from \"@/registry/bases/base/ui/slider\"\nimport { Switch } from \"@/registry/bases/base/ui/switch\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\n\nexport default function FieldExample() {\n  return (\n    <ExampleWrapper>\n      <InputFields />\n      <TextareaFields />\n      <SelectFields />\n      <CheckboxFields />\n      <RadioFields />\n      <SwitchFields />\n      <SliderFields />\n      <NativeSelectFields />\n      <InputOTPFields />\n      <HorizontalFields />\n    </ExampleWrapper>\n  )\n}\n\nfunction InputFields() {\n  return (\n    <Example title=\"Input Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-basic\">Basic Input</FieldLabel>\n          <Input id=\"input-basic\" placeholder=\"Enter text\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-with-desc\">\n            Input with Description\n          </FieldLabel>\n          <Input id=\"input-with-desc\" placeholder=\"Enter your username\" />\n          <FieldDescription>\n            Choose a unique username for your account.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-desc-first\">Email Address</FieldLabel>\n          <FieldDescription>\n            We&apos;ll never share your email with anyone.\n          </FieldDescription>\n          <Input\n            id=\"input-desc-first\"\n            type=\"email\"\n            placeholder=\"email@example.com\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-required\">\n            Required Field <span className=\"text-destructive\">*</span>\n          </FieldLabel>\n          <Input\n            id=\"input-required\"\n            placeholder=\"This field is required\"\n            required\n          />\n          <FieldDescription>This field must be filled out.</FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-disabled\">Disabled Input</FieldLabel>\n          <Input id=\"input-disabled\" placeholder=\"Cannot edit\" disabled />\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-badge\">\n            Input with Badge{\" \"}\n            <Badge variant=\"secondary\" className=\"ml-auto\">\n              Recommended\n            </Badge>\n          </FieldLabel>\n          <Input id=\"input-badge\" placeholder=\"Enter value\" />\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"input-invalid\">Invalid Input</FieldLabel>\n          <Input\n            id=\"input-invalid\"\n            placeholder=\"This field has an error\"\n            aria-invalid\n          />\n          <FieldDescription>\n            This field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"input-disabled-field\">Disabled Field</FieldLabel>\n          <Input id=\"input-disabled-field\" placeholder=\"Cannot edit\" disabled />\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction TextareaFields() {\n  return (\n    <Example title=\"Textarea Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-basic\">Basic Textarea</FieldLabel>\n          <Textarea id=\"textarea-basic\" placeholder=\"Enter your message\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-comments\">Comments</FieldLabel>\n          <Textarea\n            id=\"textarea-comments\"\n            placeholder=\"Share your thoughts...\"\n            className=\"min-h-[100px]\"\n          />\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-bio\">Bio</FieldLabel>\n          <FieldDescription>\n            Tell us about yourself in a few sentences.\n          </FieldDescription>\n          <Textarea\n            id=\"textarea-bio\"\n            placeholder=\"I am a...\"\n            className=\"min-h-[120px]\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-desc-after\">Message</FieldLabel>\n          <Textarea id=\"textarea-desc-after\" placeholder=\"Enter your message\" />\n          <FieldDescription>\n            Enter your message so it is long enough to test the layout.\n          </FieldDescription>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"textarea-invalid\">Invalid Textarea</FieldLabel>\n          <Textarea\n            id=\"textarea-invalid\"\n            placeholder=\"This field has an error\"\n            aria-invalid\n          />\n          <FieldDescription>\n            This field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"textarea-disabled-field\">\n            Disabled Field\n          </FieldLabel>\n          <Textarea\n            id=\"textarea-disabled-field\"\n            placeholder=\"Cannot edit\"\n            disabled\n          />\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction SelectFields() {\n  const basicItems = [\n    { label: \"Choose an option\", value: null },\n    { label: \"Option 1\", value: \"option1\" },\n    { label: \"Option 2\", value: \"option2\" },\n    { label: \"Option 3\", value: \"option3\" },\n  ]\n  const countryItems = [\n    { label: \"Select your country\", value: null },\n    { label: \"United States\", value: \"us\" },\n    { label: \"United Kingdom\", value: \"uk\" },\n    { label: \"Canada\", value: \"ca\" },\n  ]\n  const timezoneItems = [\n    { label: \"Select timezone\", value: null },\n    { label: \"UTC\", value: \"utc\" },\n    { label: \"Eastern Time\", value: \"est\" },\n    { label: \"Pacific Time\", value: \"pst\" },\n  ]\n  const invalidItems = [\n    { label: \"This field has an error\", value: null },\n    { label: \"Option 1\", value: \"option1\" },\n    { label: \"Option 2\", value: \"option2\" },\n    { label: \"Option 3\", value: \"option3\" },\n  ]\n  const disabledItems = [\n    { label: \"Cannot select\", value: null },\n    { label: \"Option 1\", value: \"option1\" },\n    { label: \"Option 2\", value: \"option2\" },\n    { label: \"Option 3\", value: \"option3\" },\n  ]\n\n  return (\n    <Example title=\"Select Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"select-basic\">Basic Select</FieldLabel>\n          <Select items={basicItems}>\n            <SelectTrigger id=\"select-basic\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {basicItems.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"select-country\">Country</FieldLabel>\n          <Select items={countryItems}>\n            <SelectTrigger id=\"select-country\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {countryItems.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <FieldDescription>\n            Select the country where you currently reside.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"select-timezone\">Timezone</FieldLabel>\n          <FieldDescription>\n            Choose your local timezone for accurate scheduling.\n          </FieldDescription>\n          <Select items={timezoneItems}>\n            <SelectTrigger id=\"select-timezone\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {timezoneItems.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"select-invalid\">Invalid Select</FieldLabel>\n          <Select items={invalidItems}>\n            <SelectTrigger id=\"select-invalid\" aria-invalid>\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {invalidItems.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <FieldDescription>\n            This field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"select-disabled-field\">\n            Disabled Field\n          </FieldLabel>\n          <Select items={disabledItems} disabled>\n            <SelectTrigger id=\"select-disabled-field\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {disabledItems.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction NativeSelectFields() {\n  return (\n    <Example title=\"Native Select Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"native-select-basic\">\n            Basic Native Select\n          </FieldLabel>\n          <NativeSelect id=\"native-select-basic\">\n            <NativeSelectOption value=\"\">Choose an option</NativeSelectOption>\n            <NativeSelectOption value=\"option1\">Option 1</NativeSelectOption>\n            <NativeSelectOption value=\"option2\">Option 2</NativeSelectOption>\n            <NativeSelectOption value=\"option3\">Option 3</NativeSelectOption>\n          </NativeSelect>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"native-select-country\">Country</FieldLabel>\n          <NativeSelect id=\"native-select-country\">\n            <NativeSelectOption value=\"\">\n              Select your country\n            </NativeSelectOption>\n            <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n            <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n            <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n          </NativeSelect>\n          <FieldDescription>\n            Select the country where you currently reside.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"native-select-timezone\">Timezone</FieldLabel>\n          <FieldDescription>\n            Choose your local timezone for accurate scheduling.\n          </FieldDescription>\n          <NativeSelect id=\"native-select-timezone\">\n            <NativeSelectOption value=\"\">Select timezone</NativeSelectOption>\n            <NativeSelectOption value=\"utc\">UTC</NativeSelectOption>\n            <NativeSelectOption value=\"est\">Eastern Time</NativeSelectOption>\n            <NativeSelectOption value=\"pst\">Pacific Time</NativeSelectOption>\n          </NativeSelect>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"native-select-grouped\">\n            Grouped Options\n          </FieldLabel>\n          <NativeSelect id=\"native-select-grouped\">\n            <NativeSelectOption value=\"\">Select a region</NativeSelectOption>\n            <NativeSelectOptGroup label=\"North America\">\n              <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n              <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n              <NativeSelectOption value=\"mx\">Mexico</NativeSelectOption>\n            </NativeSelectOptGroup>\n            <NativeSelectOptGroup label=\"Europe\">\n              <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n              <NativeSelectOption value=\"fr\">France</NativeSelectOption>\n              <NativeSelectOption value=\"de\">Germany</NativeSelectOption>\n            </NativeSelectOptGroup>\n          </NativeSelect>\n          <FieldDescription>\n            Native select with grouped options using optgroup.\n          </FieldDescription>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"native-select-invalid\">\n            Invalid Native Select\n          </FieldLabel>\n          <NativeSelect id=\"native-select-invalid\" aria-invalid>\n            <NativeSelectOption value=\"\">\n              This field has an error\n            </NativeSelectOption>\n            <NativeSelectOption value=\"option1\">Option 1</NativeSelectOption>\n            <NativeSelectOption value=\"option2\">Option 2</NativeSelectOption>\n            <NativeSelectOption value=\"option3\">Option 3</NativeSelectOption>\n          </NativeSelect>\n          <FieldDescription>\n            This field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"native-select-disabled-field\">\n            Disabled Field\n          </FieldLabel>\n          <NativeSelect id=\"native-select-disabled-field\" disabled>\n            <NativeSelectOption value=\"\">Cannot select</NativeSelectOption>\n            <NativeSelectOption value=\"option1\">Option 1</NativeSelectOption>\n            <NativeSelectOption value=\"option2\">Option 2</NativeSelectOption>\n            <NativeSelectOption value=\"option3\">Option 3</NativeSelectOption>\n          </NativeSelect>\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction CheckboxFields() {\n  return (\n    <Example title=\"Checkbox Fields\">\n      <FieldGroup>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-basic\" defaultChecked />\n          <FieldLabel htmlFor=\"checkbox-basic\" className=\"font-normal\">\n            I agree to the terms and conditions\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldLabel htmlFor=\"checkbox-right\">\n            Accept terms and conditions\n          </FieldLabel>\n          <Checkbox id=\"checkbox-right\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-with-desc\" />\n          <FieldContent>\n            <FieldLabel htmlFor=\"checkbox-with-desc\">\n              Subscribe to newsletter\n            </FieldLabel>\n            <FieldDescription>\n              Receive weekly updates about new features and promotions.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n        <FieldLabel htmlFor=\"checkbox-with-title\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"checkbox-with-title\" />\n            <FieldContent>\n              <FieldTitle>Enable Touch ID</FieldTitle>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Preferences</FieldLegend>\n          <FieldDescription>\n            Select all that apply to customize your experience.\n          </FieldDescription>\n          <FieldGroup className=\"gap-3\">\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"pref-dark\" />\n              <FieldLabel htmlFor=\"pref-dark\" className=\"font-normal\">\n                Dark mode\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"pref-compact\" />\n              <FieldLabel htmlFor=\"pref-compact\" className=\"font-normal\">\n                Compact view\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"pref-notifications\" />\n              <FieldLabel htmlFor=\"pref-notifications\" className=\"font-normal\">\n                Enable notifications\n              </FieldLabel>\n            </Field>\n          </FieldGroup>\n        </FieldSet>\n        <Field data-invalid orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-invalid\" aria-invalid />\n          <FieldLabel htmlFor=\"checkbox-invalid\" className=\"font-normal\">\n            Invalid checkbox\n          </FieldLabel>\n        </Field>\n        <Field data-disabled orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-disabled-field\" disabled />\n          <FieldLabel htmlFor=\"checkbox-disabled-field\" className=\"font-normal\">\n            Disabled checkbox\n          </FieldLabel>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction RadioFields() {\n  return (\n    <Example title=\"Radio Fields\">\n      <FieldGroup>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n          <RadioGroup defaultValue=\"free\">\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"free\" id=\"radio-free\" />\n              <FieldLabel htmlFor=\"radio-free\" className=\"font-normal\">\n                Free Plan\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"pro\" id=\"radio-pro\" />\n              <FieldLabel htmlFor=\"radio-pro\" className=\"font-normal\">\n                Pro Plan\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"enterprise\" id=\"radio-enterprise\" />\n              <FieldLabel htmlFor=\"radio-enterprise\" className=\"font-normal\">\n                Enterprise\n              </FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Battery Level</FieldLegend>\n          <FieldDescription>\n            Choose your preferred battery level.\n          </FieldDescription>\n          <RadioGroup>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"high\" id=\"battery-high\" />\n              <FieldLabel htmlFor=\"battery-high\">High</FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"medium\" id=\"battery-medium\" />\n              <FieldLabel htmlFor=\"battery-medium\">Medium</FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"low\" id=\"battery-low\" />\n              <FieldLabel htmlFor=\"battery-low\">Low</FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n        <RadioGroup className=\"gap-6\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"option1\" id=\"radio-content-1\" />\n            <FieldContent>\n              <FieldLabel htmlFor=\"radio-content-1\">Enable Touch ID</FieldLabel>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"option2\" id=\"radio-content-2\" />\n            <FieldContent>\n              <FieldLabel htmlFor=\"radio-content-2\">\n                Enable Touch ID and Face ID to make it even faster to unlock\n                your device. This is a long label to test the layout.\n              </FieldLabel>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </RadioGroup>\n        <RadioGroup className=\"gap-3\">\n          <FieldLabel htmlFor=\"radio-title-1\">\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"title1\" id=\"radio-title-1\" />\n              <FieldContent>\n                <FieldTitle>Enable Touch ID</FieldTitle>\n                <FieldDescription>\n                  Enable Touch ID to quickly unlock your device.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n          </FieldLabel>\n          <FieldLabel htmlFor=\"radio-title-2\">\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"title2\" id=\"radio-title-2\" />\n              <FieldContent>\n                <FieldTitle>\n                  Enable Touch ID and Face ID to make it even faster to unlock\n                  your device. This is a long label to test the layout.\n                </FieldTitle>\n                <FieldDescription>\n                  Enable Touch ID to quickly unlock your device.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n          </FieldLabel>\n        </RadioGroup>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Invalid Radio Group</FieldLegend>\n          <RadioGroup>\n            <Field data-invalid orientation=\"horizontal\">\n              <RadioGroupItem\n                value=\"invalid1\"\n                id=\"radio-invalid-1\"\n                aria-invalid\n              />\n              <FieldLabel htmlFor=\"radio-invalid-1\">\n                Invalid Option 1\n              </FieldLabel>\n            </Field>\n            <Field data-invalid orientation=\"horizontal\">\n              <RadioGroupItem\n                value=\"invalid2\"\n                id=\"radio-invalid-2\"\n                aria-invalid\n              />\n              <FieldLabel htmlFor=\"radio-invalid-2\">\n                Invalid Option 2\n              </FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Disabled Radio Group</FieldLegend>\n          <RadioGroup disabled>\n            <Field data-disabled orientation=\"horizontal\">\n              <RadioGroupItem\n                value=\"disabled1\"\n                id=\"radio-disabled-1\"\n                disabled\n              />\n              <FieldLabel htmlFor=\"radio-disabled-1\">\n                Disabled Option 1\n              </FieldLabel>\n            </Field>\n            <Field data-disabled orientation=\"horizontal\">\n              <RadioGroupItem\n                value=\"disabled2\"\n                id=\"radio-disabled-2\"\n                disabled\n              />\n              <FieldLabel htmlFor=\"radio-disabled-2\">\n                Disabled Option 2\n              </FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction SwitchFields() {\n  return (\n    <Example title=\"Switch Fields\">\n      <FieldGroup>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"switch-airplane\">Airplane Mode</FieldLabel>\n            <FieldDescription>\n              Turn on airplane mode to disable all connections.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-airplane\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldLabel htmlFor=\"switch-dark\">Dark Mode</FieldLabel>\n          <Switch id=\"switch-dark\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Switch id=\"switch-marketing\" />\n          <FieldContent>\n            <FieldLabel htmlFor=\"switch-marketing\">Marketing Emails</FieldLabel>\n            <FieldDescription>\n              Receive emails about new products, features, and more.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n        <Field>\n          <FieldLabel>Privacy Settings</FieldLabel>\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\n          <Field orientation=\"horizontal\">\n            <Switch id=\"switch-profile\" defaultChecked />\n            <FieldContent>\n              <FieldLabel htmlFor=\"switch-profile\" className=\"font-normal\">\n                Make profile visible to others\n              </FieldLabel>\n            </FieldContent>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Switch id=\"switch-email\" />\n            <FieldContent>\n              <FieldLabel htmlFor=\"switch-email\" className=\"font-normal\">\n                Show email on profile\n              </FieldLabel>\n            </FieldContent>\n          </Field>\n        </Field>\n        <Field data-invalid orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"switch-invalid\">Invalid Switch</FieldLabel>\n            <FieldDescription>\n              This switch has validation errors.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-invalid\" aria-invalid />\n        </Field>\n        <Field data-disabled orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"switch-disabled-field\">\n              Disabled Switch\n            </FieldLabel>\n            <FieldDescription>\n              This switch is currently disabled.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-disabled-field\" disabled />\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction SliderFields() {\n  const [volume, setVolume] = useState([50])\n  const [brightness, setBrightness] = useState([75])\n  const [temperature, setTemperature] = useState([0.3, 0.7])\n  const [priceRange, setPriceRange] = useState([25, 75])\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\n\n  return (\n    <Example title=\"Slider Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"slider-volume\">Volume</FieldLabel>\n          <Slider\n            id=\"slider-volume\"\n            value={volume}\n            onValueChange={(value) => setVolume(value as number[])}\n            max={100}\n            step={1}\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-brightness\">Screen Brightness</FieldLabel>\n          <Slider\n            id=\"slider-brightness\"\n            value={brightness}\n            onValueChange={(value) => setBrightness(value as number[])}\n            max={100}\n            step={5}\n          />\n          <FieldDescription>\n            Current brightness: {brightness[0]}%\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-quality\">Video Quality</FieldLabel>\n          <FieldDescription>\n            Higher quality uses more bandwidth.\n          </FieldDescription>\n          <Slider\n            id=\"slider-quality\"\n            defaultValue={[720]}\n            max={1080}\n            min={360}\n            step={360}\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-temperature\">\n            Temperature Range\n          </FieldLabel>\n          <Slider\n            id=\"slider-temperature\"\n            value={temperature}\n            onValueChange={(value) => setTemperature(value as number[])}\n            min={0}\n            max={1}\n            step={0.1}\n          />\n          <FieldDescription>\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-price-range\">Price Range</FieldLabel>\n          <Slider\n            id=\"slider-price-range\"\n            value={priceRange}\n            onValueChange={(value) => setPriceRange(value as number[])}\n            max={100}\n            step={5}\n          />\n          <FieldDescription>\n            ${priceRange[0]} - ${priceRange[1]}\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-color-balance\">Color Balance</FieldLabel>\n          <Slider\n            id=\"slider-color-balance\"\n            value={colorBalance}\n            onValueChange={(value) => setColorBalance(value as number[])}\n            max={100}\n            step={10}\n          />\n          <FieldDescription>\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\" \"}\n            {colorBalance[2]}%\n          </FieldDescription>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"slider-invalid\">Invalid Slider</FieldLabel>\n          <Slider\n            id=\"slider-invalid\"\n            defaultValue={[30]}\n            max={100}\n            aria-invalid\n          />\n          <FieldDescription>\n            This slider has validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"slider-disabled-field\">\n            Disabled Slider\n          </FieldLabel>\n          <Slider\n            id=\"slider-disabled-field\"\n            defaultValue={[50]}\n            max={100}\n            disabled\n          />\n          <FieldDescription>\n            This slider is currently disabled.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputOTPFields() {\n  const [value, setValue] = useState(\"\")\n  const [pinValue, setPinValue] = useState(\"\")\n\n  return (\n    <Example title=\"OTP Input Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"otp-basic\">Verification Code</FieldLabel>\n          <InputOTP id=\"otp-basic\" maxLength={6}>\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"otp-with-desc\">Enter OTP</FieldLabel>\n          <InputOTP\n            id=\"otp-with-desc\"\n            maxLength={6}\n            value={value}\n            onChange={setValue}\n          >\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            Enter the 6-digit code sent to your email.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"otp-separator\">\n            Two-Factor Authentication\n          </FieldLabel>\n          <InputOTP id=\"otp-separator\" maxLength={6}>\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n            </InputOTPGroup>\n            <InputOTPSeparator />\n            <InputOTPGroup>\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            Enter the code from your authenticator app.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"otp-pin\">PIN Code</FieldLabel>\n          <InputOTP\n            id=\"otp-pin\"\n            maxLength={4}\n            pattern={REGEXP_ONLY_DIGITS}\n            value={pinValue}\n            onChange={setPinValue}\n          >\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            Enter your 4-digit PIN (numbers only).\n          </FieldDescription>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"otp-invalid\">Invalid OTP</FieldLabel>\n          <InputOTP id=\"otp-invalid\" maxLength={6}>\n            <InputOTPGroup>\n              <InputOTPSlot index={0} aria-invalid />\n              <InputOTPSlot index={1} aria-invalid />\n              <InputOTPSlot index={2} aria-invalid />\n              <InputOTPSlot index={3} aria-invalid />\n              <InputOTPSlot index={4} aria-invalid />\n              <InputOTPSlot index={5} aria-invalid />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            This OTP field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"otp-disabled-field\">Disabled OTP</FieldLabel>\n          <InputOTP id=\"otp-disabled-field\" maxLength={6} disabled>\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            This OTP field is currently disabled.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction HorizontalFields() {\n  const basicItems = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Orange\", value: \"orange\" },\n  ]\n\n  return (\n    <Example title=\"Horizontal Fields\">\n      <FieldGroup className=\"**:data-[slot=field-content]:min-w-48\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-input\">Username</FieldLabel>\n            <FieldDescription>Enter your preferred username.</FieldDescription>\n          </FieldContent>\n          <Input id=\"horizontal-input\" placeholder=\"johndoe\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-textarea\">Bio</FieldLabel>\n            <FieldDescription>\n              Write a short description about yourself.\n            </FieldDescription>\n          </FieldContent>\n          <Textarea\n            id=\"horizontal-textarea\"\n            placeholder=\"Tell us about yourself...\"\n          />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-switch\">\n              Email Notifications\n            </FieldLabel>\n            <FieldDescription>\n              Receive email updates about your account.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"horizontal-switch\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-select\">Favorite Fruit</FieldLabel>\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\n          </FieldContent>\n          <Select items={basicItems}>\n            <SelectTrigger id=\"horizontal-select\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {basicItems.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-native-select\">Country</FieldLabel>\n            <FieldDescription>Select your country.</FieldDescription>\n          </FieldContent>\n          <NativeSelect id=\"horizontal-native-select\">\n            <NativeSelectOption value=\"\">Select a country</NativeSelectOption>\n            <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n            <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n            <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n          </NativeSelect>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-slider\">Volume</FieldLabel>\n            <FieldDescription>Adjust the volume level.</FieldDescription>\n          </FieldContent>\n          <Slider id=\"horizontal-slider\" defaultValue={[50]} max={100} />\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/hover-card-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/bases/base/ui/hover-card\"\n\nexport default function HoverCardExample() {\n  return (\n    <ExampleWrapper>\n      <HoverCardSides />\n      <HoverCardInDialog />\n    </ExampleWrapper>\n  )\n}\n\nconst HOVER_CARD_SIDES = [\n  \"inline-start\",\n  \"left\",\n  \"top\",\n  \"bottom\",\n  \"right\",\n  \"inline-end\",\n] as const\n\nfunction HoverCardSides() {\n  return (\n    <Example title=\"Sides\" containerClassName=\"col-span-2\">\n      <div className=\"flex flex-wrap items-center justify-center gap-2\">\n        {HOVER_CARD_SIDES.map((side) => (\n          <HoverCard key={side}>\n            <HoverCardTrigger\n              delay={100}\n              closeDelay={100}\n              render={<Button variant=\"outline\" className=\"capitalize\" />}\n            >\n              {side.replace(\"-\", \" \")}\n            </HoverCardTrigger>\n            <HoverCardContent side={side}>\n              <div className=\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\">\n                <h4 className=\"font-medium\">Hover Card</h4>\n                <p>\n                  This hover card appears on the {side.replace(\"-\", \" \")} side\n                  of the trigger.\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCard>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction HoverCardInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Hover Card Example</DialogTitle>\n            <DialogDescription>\n              Hover over the button below to see the hover card.\n            </DialogDescription>\n          </DialogHeader>\n          <HoverCard>\n            <HoverCardTrigger\n              delay={100}\n              closeDelay={100}\n              render={<Button variant=\"outline\" className=\"w-fit\" />}\n            >\n              Hover me\n            </HoverCardTrigger>\n            <HoverCardContent>\n              <div className=\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\">\n                <h4 className=\"font-medium\">Hover Card</h4>\n                <p>\n                  This hover card appears inside a dialog. Hover over the button\n                  to see it.\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCard>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/input-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/base/ui/native-select\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\n\nexport default function InputExample() {\n  return (\n    <ExampleWrapper>\n      <InputBasic />\n      <InputInvalid />\n      <InputWithLabel />\n      <InputWithDescription />\n      <InputDisabled />\n      <InputTypes />\n      <InputWithSelect />\n      <InputWithButton />\n      <InputWithNativeSelect />\n      <InputForm />\n    </ExampleWrapper>\n  )\n}\n\nfunction InputBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Input type=\"email\" placeholder=\"Email\" />\n    </Example>\n  )\n}\n\nfunction InputInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <Input type=\"text\" placeholder=\"Error\" aria-invalid=\"true\" />\n    </Example>\n  )\n}\n\nfunction InputWithLabel() {\n  return (\n    <Example title=\"With Label\">\n      <Field>\n        <FieldLabel htmlFor=\"input-demo-email\">Email</FieldLabel>\n        <Input\n          id=\"input-demo-email\"\n          type=\"email\"\n          placeholder=\"name@example.com\"\n        />\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputWithDescription() {\n  return (\n    <Example title=\"With Description\">\n      <Field>\n        <FieldLabel htmlFor=\"input-demo-username\">Username</FieldLabel>\n        <Input\n          id=\"input-demo-username\"\n          type=\"text\"\n          placeholder=\"Enter your username\"\n        />\n        <FieldDescription>\n          Choose a unique username for your account.\n        </FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field>\n        <FieldLabel htmlFor=\"input-demo-disabled\">Email</FieldLabel>\n        <Input\n          id=\"input-demo-disabled\"\n          type=\"email\"\n          placeholder=\"Email\"\n          disabled\n        />\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputTypes() {\n  return (\n    <Example title=\"Input Types\">\n      <div className=\"flex w-full flex-col gap-6\">\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-password\">Password</FieldLabel>\n          <Input\n            id=\"input-demo-password\"\n            type=\"password\"\n            placeholder=\"Password\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-tel\">Phone</FieldLabel>\n          <Input\n            id=\"input-demo-tel\"\n            type=\"tel\"\n            placeholder=\"+1 (555) 123-4567\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-url\">URL</FieldLabel>\n          <Input\n            id=\"input-demo-url\"\n            type=\"url\"\n            placeholder=\"https://example.com\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-search\">Search</FieldLabel>\n          <Input id=\"input-demo-search\" type=\"search\" placeholder=\"Search\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-number\">Number</FieldLabel>\n          <Input id=\"input-demo-number\" type=\"number\" placeholder=\"123\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-date\">Date</FieldLabel>\n          <Input id=\"input-demo-date\" type=\"date\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-time\">Time</FieldLabel>\n          <Input id=\"input-demo-time\" type=\"time\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-file\">File</FieldLabel>\n          <Input id=\"input-demo-file\" type=\"file\" />\n        </Field>\n      </div>\n    </Example>\n  )\n}\n\nfunction InputWithSelect() {\n  return (\n    <Example title=\"With Select\">\n      <div className=\"flex w-full gap-2\">\n        <Input type=\"text\" placeholder=\"Enter amount\" className=\"flex-1\" />\n        <Select defaultValue=\"usd\">\n          <SelectTrigger className=\"w-32\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"usd\">USD</SelectItem>\n              <SelectItem value=\"eur\">EUR</SelectItem>\n              <SelectItem value=\"gbp\">GBP</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </div>\n    </Example>\n  )\n}\n\nfunction InputWithButton() {\n  return (\n    <Example title=\"With Button\">\n      <div className=\"flex w-full gap-2\">\n        <Input type=\"search\" placeholder=\"Search...\" className=\"flex-1\" />\n        <Button>Search</Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction InputWithNativeSelect() {\n  return (\n    <Example title=\"With Native Select\">\n      <div className=\"flex w-full gap-2\">\n        <Input type=\"tel\" placeholder=\"(555) 123-4567\" className=\"flex-1\" />\n        <NativeSelect defaultValue=\"+1\">\n          <NativeSelectOption value=\"+1\">+1</NativeSelectOption>\n          <NativeSelectOption value=\"+44\">+44</NativeSelectOption>\n          <NativeSelectOption value=\"+46\">+46</NativeSelectOption>\n        </NativeSelect>\n      </div>\n    </Example>\n  )\n}\n\nfunction InputForm() {\n  return (\n    <Example title=\"Form\">\n      <form className=\"w-full\">\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"form-name\">Name</FieldLabel>\n            <Input id=\"form-name\" type=\"text\" placeholder=\"John Doe\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"form-email\">Email</FieldLabel>\n            <Input\n              id=\"form-email\"\n              type=\"email\"\n              placeholder=\"john@example.com\"\n            />\n            <FieldDescription>\n              We&apos;ll never share your email with anyone.\n            </FieldDescription>\n          </Field>\n          <div className=\"grid grid-cols-2 gap-4\">\n            <Field>\n              <FieldLabel htmlFor=\"form-phone\">Phone</FieldLabel>\n              <Input\n                id=\"form-phone\"\n                type=\"tel\"\n                placeholder=\"+1 (555) 123-4567\"\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"form-country\">Country</FieldLabel>\n              <Select defaultValue=\"us\">\n                <SelectTrigger id=\"form-country\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"us\">United States</SelectItem>\n                    <SelectItem value=\"uk\">United Kingdom</SelectItem>\n                    <SelectItem value=\"ca\">Canada</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"form-address\">Address</FieldLabel>\n            <Input id=\"form-address\" type=\"text\" placeholder=\"123 Main St\" />\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Button type=\"button\" variant=\"outline\">\n              Cancel\n            </Button>\n            <Button type=\"submit\">Submit</Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/input-group-example.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { toast } from \"sonner\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupText,\n} from \"@/registry/bases/base/ui/button-group\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/registry/bases/base/ui/kbd\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/registry/bases/base/ui/popover\"\nimport { Spinner } from \"@/registry/bases/base/ui/spinner\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function InputGroupExample() {\n  const [country, setCountry] = useState(\"+1\")\n\n  return (\n    <ExampleWrapper className=\"min-w-0\">\n      <InputGroupBasic />\n      <InputGroupWithAddons />\n      <InputGroupWithButtons />\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\n      <InputGroupWithKbd />\n      <InputGroupInCard />\n      <InputGroupTextareaExamples />\n    </ExampleWrapper>\n  )\n}\n\nfunction InputGroupBasic() {\n  return (\n    <Example title=\"Basic\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-default-01\">\n            Default (No Input Group)\n          </FieldLabel>\n          <Input placeholder=\"Placeholder\" id=\"input-default-01\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-group-02\">Input Group</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-group-02\" placeholder=\"Placeholder\" />\n          </InputGroup>\n        </Field>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"input-disabled-03\">Disabled</FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-disabled-03\"\n              placeholder=\"This field is disabled\"\n              disabled\n            />\n          </InputGroup>\n        </Field>\n        <Field data-invalid=\"true\">\n          <FieldLabel htmlFor=\"input-invalid-04\">Invalid</FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-invalid-04\"\n              placeholder=\"This field is invalid\"\n              aria-invalid=\"true\"\n            />\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupWithAddons() {\n  return (\n    <Example title=\"With Addons\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-left-05\">\n            Addon (inline-start)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-left-05\" />\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"SearchIcon\"\n                tabler=\"IconSearch\"\n                hugeicons=\"SearchIcon\"\n                phosphor=\"MagnifyingGlassIcon\"\n                remixicon=\"RiSearchLine\"\n                className=\"text-muted-foreground\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-right-07\">\n            Addon (inline-end)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-right-07\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlaceholder\n                lucide=\"EyeOffIcon\"\n                tabler=\"IconEyeClosed\"\n                hugeicons=\"ViewOffIcon\"\n                phosphor=\"EyeSlashIcon\"\n                remixicon=\"RiEyeOffLine\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-both-09\">\n            Addon (inline-start and inline-end)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-both-09\" />\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"MicIcon\"\n                tabler=\"IconMicrophone\"\n                hugeicons=\"VoiceIcon\"\n                phosphor=\"MicrophoneIcon\"\n                remixicon=\"RiMicLine\"\n                className=\"text-muted-foreground\"\n              />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlaceholder\n                lucide=\"RadioIcon\"\n                tabler=\"IconPlayerRecordFilled\"\n                hugeicons=\"RecordIcon\"\n                phosphor=\"RecordIcon\"\n                remixicon=\"RiRecordCircleLine\"\n                className=\"animate-pulse text-red-500\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-addon-20\">Addon (block-start)</FieldLabel>\n          <InputGroup className=\"h-auto\">\n            <InputGroupInput id=\"input-addon-20\" />\n            <InputGroupAddon align=\"block-start\">\n              <InputGroupText>First Name</InputGroupText>\n              <IconPlaceholder\n                lucide=\"InfoIcon\"\n                tabler=\"IconInfoCircle\"\n                hugeicons=\"AlertCircleIcon\"\n                phosphor=\"InfoIcon\"\n                remixicon=\"RiInformationLine\"\n                className=\"ml-auto text-muted-foreground\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-addon-21\">Addon (block-end)</FieldLabel>\n          <InputGroup className=\"h-auto\">\n            <InputGroupInput id=\"input-addon-21\" />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupText>20/240 characters</InputGroupText>\n              <IconPlaceholder\n                lucide=\"InfoIcon\"\n                tabler=\"IconInfoCircle\"\n                hugeicons=\"AlertCircleIcon\"\n                phosphor=\"InfoIcon\"\n                remixicon=\"RiInformationLine\"\n                className=\"ml-auto text-muted-foreground\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-both-10\">Multiple Icons</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-both-10\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlaceholder\n                lucide=\"StarIcon\"\n                tabler=\"IconStar\"\n                hugeicons=\"StarIcon\"\n                phosphor=\"StarIcon\"\n                remixicon=\"RiStarLine\"\n              />\n              <InputGroupButton\n                size=\"icon-xs\"\n                onClick={() => toast(\"Copied to clipboard\")}\n              >\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"RadioIcon\"\n                tabler=\"IconPlayerRecordFilled\"\n                hugeicons=\"RecordIcon\"\n                phosphor=\"RecordIcon\"\n                remixicon=\"RiRecordCircleLine\"\n                className=\"animate-pulse text-red-500\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-description-10\">Description</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-description-10\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlaceholder\n                lucide=\"InfoIcon\"\n                tabler=\"IconInfoCircle\"\n                hugeicons=\"AlertCircleIcon\"\n                phosphor=\"InfoIcon\"\n                remixicon=\"RiInformationLine\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n          <InputGroup>\n            <InputGroupAddon>\n              <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n            </InputGroupAddon>\n            <InputGroupInput id=\"input-label-10\" />\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-optional-12\" aria-label=\"Optional\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupText>(optional)</InputGroupText>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupWithButtons() {\n  return (\n    <Example title=\"With Buttons\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-button-13\">Button</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-13\" />\n            <InputGroupAddon>\n              <InputGroupButton>Default</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-14\" />\n            <InputGroupAddon>\n              <InputGroupButton variant=\"outline\">Outline</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-15\" />\n            <InputGroupAddon>\n              <InputGroupButton variant=\"secondary\">Secondary</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-16\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton variant=\"secondary\">Button</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-17\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton size=\"icon-xs\">\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-18\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                <IconPlaceholder\n                  lucide=\"TrashIcon\"\n                  tabler=\"IconTrash\"\n                  hugeicons=\"DeleteIcon\"\n                  phosphor=\"TrashIcon\"\n                  remixicon=\"RiDeleteBinLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupWithTooltip({\n  country,\n  setCountry,\n}: {\n  country: string\n  setCountry: (value: string) => void\n}) {\n  return (\n    <Example title=\"With Tooltip, Dropdown, Popover\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-tooltip-20\">Tooltip</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-tooltip-20\" />\n            <InputGroupAddon align=\"inline-end\">\n              <Tooltip>\n                <TooltipTrigger\n                  render={\n                    <InputGroupButton className=\"rounded-full\" size=\"icon-xs\" />\n                  }\n                >\n                  <IconPlaceholder\n                    lucide=\"InfoIcon\"\n                    tabler=\"IconInfoCircle\"\n                    hugeicons=\"AlertCircleIcon\"\n                    phosphor=\"InfoIcon\"\n                    remixicon=\"RiInformationLine\"\n                  />\n                </TooltipTrigger>\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\n              </Tooltip>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-dropdown-21\">Dropdown</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-dropdown-21\" />\n            <InputGroupAddon>\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <InputGroupButton className=\"text-muted-foreground tabular-nums\" />\n                  }\n                >\n                  {country}{\" \"}\n                  <IconPlaceholder\n                    lucide=\"ChevronDownIcon\"\n                    tabler=\"IconChevronDown\"\n                    hugeicons=\"ArrowDownIcon\"\n                    phosphor=\"CaretDownIcon\"\n                    remixicon=\"RiArrowDownSLine\"\n                  />\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  align=\"start\"\n                  className=\"min-w-16\"\n                  sideOffset={10}\n                  alignOffset={-8}\n                >\n                  <DropdownMenuItem onClick={() => setCountry(\"+1\")}>\n                    +1\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={() => setCountry(\"+44\")}>\n                    +44\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={() => setCountry(\"+46\")}>\n                    +46\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-secure-19\">Popover</FieldLabel>\n          <InputGroup>\n            <Popover>\n              <PopoverTrigger render={<InputGroupAddon />} nativeButton={false}>\n                <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                  <IconPlaceholder\n                    lucide=\"InfoIcon\"\n                    tabler=\"IconInfoCircle\"\n                    hugeicons=\"AlertCircleIcon\"\n                    phosphor=\"InfoIcon\"\n                    remixicon=\"RiInformationLine\"\n                  />\n                </InputGroupButton>\n              </PopoverTrigger>\n              <PopoverContent align=\"start\">\n                <PopoverHeader>\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\n                  <PopoverDescription>\n                    You should not enter any sensitive information on this site.\n                  </PopoverDescription>\n                </PopoverHeader>\n              </PopoverContent>\n            </Popover>\n            <InputGroupAddon className=\"pl-1 text-muted-foreground\">\n              https://\n            </InputGroupAddon>\n            <InputGroupInput id=\"input-secure-19\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton\n                size=\"icon-xs\"\n                onClick={() => toast(\"Added to favorites\")}\n              >\n                <IconPlaceholder\n                  lucide=\"StarIcon\"\n                  tabler=\"IconStar\"\n                  hugeicons=\"StarIcon\"\n                  phosphor=\"StarIcon\"\n                  remixicon=\"RiStarLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"url\">Button Group</FieldLabel>\n          <ButtonGroup>\n            <ButtonGroupText>https://</ButtonGroupText>\n            <InputGroup>\n              <InputGroupInput id=\"url\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconPlaceholder\n                  lucide=\"InfoIcon\"\n                  tabler=\"IconInfoCircle\"\n                  hugeicons=\"AlertCircleIcon\"\n                  phosphor=\"InfoIcon\"\n                  remixicon=\"RiInformationLine\"\n                />\n              </InputGroupAddon>\n            </InputGroup>\n            <ButtonGroupText>.com</ButtonGroupText>\n          </ButtonGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupWithKbd() {\n  return (\n    <Example title=\"With Kbd\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-kbd-22\">Input Group with Kbd</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-kbd-22\" />\n            <InputGroupAddon>\n              <Kbd>⌘K</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-kbd-23\" />\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>⌘K</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-search-apps-24\"\n              placeholder=\"Search for Apps...\"\n            />\n            <InputGroupAddon align=\"inline-end\">Ask AI</InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>Tab</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-search-type-25\"\n              placeholder=\"Type to search...\"\n            />\n            <InputGroupAddon align=\"inline-start\">\n              <IconPlaceholder\n                lucide=\"SparklesIcon\"\n                tabler=\"IconServerSpark\"\n                hugeicons=\"SparklesIcon\"\n                phosphor=\"SparkleIcon\"\n                remixicon=\"RiSparklingLine\"\n              />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <KbdGroup>\n                <Kbd>Ctrl</Kbd>\n                <Kbd>C</Kbd>\n              </KbdGroup>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-username-26\">Username</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-username-26\" defaultValue=\"shadcn\" />\n            <InputGroupAddon align=\"inline-end\">\n              <div className=\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\">\n                <IconPlaceholder\n                  lucide=\"CheckIcon\"\n                  tabler=\"IconCheck\"\n                  hugeicons=\"Tick02Icon\"\n                  phosphor=\"CheckIcon\"\n                  remixicon=\"RiCheckLine\"\n                  className=\"size-3 text-white\"\n                />\n              </div>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription className=\"text-green-700\">\n            This username is available.\n          </FieldDescription>\n        </Field>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-search-docs-27\"\n            placeholder=\"Search documentation...\"\n          />\n          <InputGroupAddon>\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"SearchIcon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n        </InputGroup>\n        <InputGroup data-disabled=\"true\">\n          <InputGroupInput\n            id=\"input-search-disabled-28\"\n            placeholder=\"Search documentation...\"\n            disabled\n          />\n          <InputGroupAddon>\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"SearchIcon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">Disabled</InputGroupAddon>\n        </InputGroup>\n        <FieldGroup className=\"grid grid-cols-2 gap-4\">\n          <Field>\n            <FieldLabel htmlFor=\"input-group-11\">First Name</FieldLabel>\n            <InputGroup>\n              <InputGroupInput id=\"input-group-11\" placeholder=\"First Name\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconPlaceholder\n                  lucide=\"InfoIcon\"\n                  tabler=\"IconInfoCircle\"\n                  hugeicons=\"AlertCircleIcon\"\n                  phosphor=\"InfoIcon\"\n                  remixicon=\"RiInformationLine\"\n                />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"input-group-12\">Last Name</FieldLabel>\n            <InputGroup>\n              <InputGroupInput id=\"input-group-12\" placeholder=\"Last Name\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconPlaceholder\n                  lucide=\"InfoIcon\"\n                  tabler=\"IconInfoCircle\"\n                  hugeicons=\"AlertCircleIcon\"\n                  phosphor=\"InfoIcon\"\n                  remixicon=\"RiInformationLine\"\n                />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n        </FieldGroup>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"input-group-29\">\n            Loading (&quot;data-disabled=&quot;true&quot;)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-group-29\"\n              disabled\n              defaultValue=\"shadcn\"\n            />\n            <InputGroupAddon align=\"inline-end\">\n              <Spinner />\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupInCard() {\n  return (\n    <Example title=\"In Card\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Card with Input Group</CardTitle>\n          <CardDescription>This is a card with an input group.</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"email-input\">Email Address</FieldLabel>\n              <InputGroup>\n                <InputGroupInput\n                  id=\"email-input\"\n                  type=\"email\"\n                  placeholder=\"you@example.com\"\n                />\n                <InputGroupAddon align=\"inline-end\">\n                  <IconPlaceholder\n                    lucide=\"MailIcon\"\n                    tabler=\"IconMail\"\n                    hugeicons=\"MailIcon\"\n                    phosphor=\"EnvelopeIcon\"\n                    remixicon=\"RiMailLine\"\n                  />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"website-input\">Website URL</FieldLabel>\n              <InputGroup>\n                <InputGroupAddon>\n                  <InputGroupText>https://</InputGroupText>\n                </InputGroupAddon>\n                <InputGroupInput id=\"website-input\" placeholder=\"example.com\" />\n                <InputGroupAddon align=\"inline-end\">\n                  <IconPlaceholder\n                    lucide=\"ExternalLinkIcon\"\n                    tabler=\"IconExternalLink\"\n                    hugeicons=\"LinkSquare02Icon\"\n                    phosphor=\"ArrowSquareOutIcon\"\n                    remixicon=\"RiExternalLinkLine\"\n                  />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"feedback-textarea\">\n                Feedback & Comments\n              </FieldLabel>\n              <InputGroup>\n                <InputGroupTextarea\n                  id=\"feedback-textarea\"\n                  placeholder=\"Share your thoughts...\"\n                  className=\"min-h-[100px]\"\n                />\n                <InputGroupAddon align=\"block-end\">\n                  <InputGroupText>0/500 characters</InputGroupText>\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n          </FieldGroup>\n        </CardContent>\n        <CardFooter className=\"justify-end gap-2\">\n          <Button variant=\"outline\">Cancel</Button>\n          <Button>Submit</Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction InputGroupTextareaExamples() {\n  return (\n    <Example title=\"Textarea\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-12\">\n            Default Textarea (No Input Group)\n          </FieldLabel>\n          <Textarea\n            id=\"textarea-header-footer-12\"\n            placeholder=\"Enter your text here...\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-13\">\n            Input Group\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-13\"\n              placeholder=\"Enter your text here...\"\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field data-invalid=\"true\">\n          <FieldLabel htmlFor=\"textarea-header-footer-14\">Invalid</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-14\"\n              placeholder=\"Enter your text here...\"\n              aria-invalid=\"true\"\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"textarea-header-footer-15\">Disabled</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-15\"\n              placeholder=\"Enter your text here...\"\n              disabled\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"prompt-31\">Addon (block-start)</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea id=\"prompt-31\" />\n            <InputGroupAddon align=\"block-start\">\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\n              <IconPlaceholder\n                lucide=\"InfoIcon\"\n                tabler=\"IconInfoCircle\"\n                hugeicons=\"AlertCircleIcon\"\n                phosphor=\"InfoIcon\"\n                remixicon=\"RiInformationLine\"\n                className=\"ml-auto text-muted-foreground\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-30\">\n            Addon (block-end)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-30\"\n              placeholder=\"Enter your text here...\"\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupText>0/280 characters</InputGroupText>\n              <InputGroupButton\n                variant=\"default\"\n                size=\"icon-xs\"\n                className=\"ml-auto rounded-full\"\n              >\n                <IconPlaceholder\n                  lucide=\"ArrowUpIcon\"\n                  tabler=\"IconArrowUp\"\n                  hugeicons=\"ArrowUpIcon\"\n                  phosphor=\"ArrowUpIcon\"\n                  remixicon=\"RiArrowUpLine\"\n                />\n                <span className=\"sr-only\">Send</span>\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-comment-31\">Addon (Buttons)</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-comment-31\"\n              placeholder=\"Share your thoughts...\"\n              className=\"min-h-[120px]\"\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupButton variant=\"ghost\" className=\"ml-auto\" size=\"sm\">\n                Cancel\n              </InputGroupButton>\n              <InputGroupButton variant=\"default\" size=\"sm\">\n                Post Comment\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-code-32\">Code Editor</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-code-32\"\n              placeholder=\"console.log('Hello, world!');\"\n              className=\"min-h-[300px] py-3\"\n            />\n            <InputGroupAddon align=\"block-start\" className=\"border-b\">\n              <InputGroupText className=\"font-mono font-medium\">\n                <IconPlaceholder\n                  lucide=\"CodeIcon\"\n                  tabler=\"IconBrandJavascript\"\n                  hugeicons=\"CodeIcon\"\n                  phosphor=\"CodeIcon\"\n                  remixicon=\"RiCodeLine\"\n                />\n                script.js\n              </InputGroupText>\n              <InputGroupButton size=\"icon-xs\" className=\"ml-auto\">\n                <IconPlaceholder\n                  lucide=\"RefreshCwIcon\"\n                  tabler=\"IconRefresh\"\n                  hugeicons=\"RefreshIcon\"\n                  phosphor=\"ArrowClockwiseIcon\"\n                  remixicon=\"RiRefreshLine\"\n                />\n              </InputGroupButton>\n              <InputGroupButton size=\"icon-xs\" variant=\"ghost\">\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n            <InputGroupAddon align=\"block-end\" className=\"border-t\">\n              <InputGroupText>Line 1, Column 1</InputGroupText>\n              <InputGroupText className=\"ml-auto\">JavaScript</InputGroupText>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/input-otp-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \"input-otp\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/registry/bases/base/ui/input-otp\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function InputOTPExample() {\n  return (\n    <ExampleWrapper>\n      <InputOTPForm />\n      <InputOTPSimple />\n      <InputOTPPattern />\n      <InputOTPWithSeparator />\n      <InputOTPAlphanumeric />\n      <InputOTPDisabled />\n      <InputOTPFourDigits />\n      <InputOTPInvalid />\n    </ExampleWrapper>\n  )\n}\n\nfunction InputOTPSimple() {\n  return (\n    <Example title=\"Simple\">\n      <Field>\n        <FieldLabel htmlFor=\"simple\">Simple</FieldLabel>\n        <InputOTP id=\"simple\" maxLength={6}>\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={3} />\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPPattern() {\n  return (\n    <Example title=\"Digits Only\">\n      <Field>\n        <FieldLabel htmlFor=\"digits-only\">Digits Only</FieldLabel>\n        <InputOTP id=\"digits-only\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n            <InputOTPSlot index={3} />\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPWithSeparator() {\n  const [value, setValue] = React.useState(\"123456\")\n\n  return (\n    <Example title=\"With Separator\">\n      <Field>\n        <FieldLabel htmlFor=\"with-separator\">With Separator</FieldLabel>\n        <InputOTP\n          id=\"with-separator\"\n          maxLength={6}\n          value={value}\n          onChange={setValue}\n        >\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={2} />\n            <InputOTPSlot index={3} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPAlphanumeric() {\n  return (\n    <Example title=\"Alphanumeric\">\n      <Field>\n        <FieldLabel htmlFor=\"alphanumeric\">Alphanumeric</FieldLabel>\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\n        <InputOTP\n          id=\"alphanumeric\"\n          maxLength={6}\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\n        >\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={3} />\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field>\n        <FieldLabel htmlFor=\"disabled\">Disabled</FieldLabel>\n        <InputOTP id=\"disabled\" maxLength={6} disabled value=\"123456\">\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={3} />\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPFourDigits() {\n  return (\n    <Example title=\"4 Digits\">\n      <Field>\n        <FieldLabel htmlFor=\"four-digits\">4 Digits</FieldLabel>\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\n        <InputOTP id=\"four-digits\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n            <InputOTPSlot index={3} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPInvalid() {\n  const [value, setValue] = React.useState(\"000000\")\n\n  return (\n    <Example title=\"Invalid State\">\n      <Field>\n        <FieldLabel htmlFor=\"invalid\">Invalid State</FieldLabel>\n        <FieldDescription>\n          Example showing the invalid error state.\n        </FieldDescription>\n        <InputOTP id=\"invalid\" maxLength={6} value={value} onChange={setValue}>\n          <InputOTPGroup>\n            <InputOTPSlot index={0} aria-invalid />\n            <InputOTPSlot index={1} aria-invalid />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={2} aria-invalid />\n            <InputOTPSlot index={3} aria-invalid />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={4} aria-invalid />\n            <InputOTPSlot index={5} aria-invalid />\n          </InputOTPGroup>\n        </InputOTP>\n        <FieldError errors={[{ message: \"Invalid code. Please try again.\" }]} />\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPForm() {\n  return (\n    <Example title=\"Form\">\n      <Card className=\"mx-auto max-w-md\">\n        <CardHeader>\n          <CardTitle>Verify your login</CardTitle>\n          <CardDescription>\n            Enter the verification code we sent to your email address:{\" \"}\n            <span className=\"font-medium\">m@example.com</span>.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <Field>\n              <div className=\"flex items-center justify-between\">\n                <FieldLabel htmlFor=\"otp-verification\">\n                  Verification code\n                </FieldLabel>\n                <Button variant=\"outline\" size=\"xs\">\n                  <IconPlaceholder\n                    lucide=\"RefreshCwIcon\"\n                    hugeicons=\"RefreshIcon\"\n                    tabler=\"IconRefresh\"\n                    phosphor=\"ArrowClockwiseIcon\"\n                    remixicon=\"RiRefreshLine\"\n                    data-icon=\"inline-start\"\n                  />\n                  Resend Code\n                </Button>\n              </div>\n              <InputOTP maxLength={6} id=\"otp-verification\" required>\n                <InputOTPGroup className=\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\">\n                  <InputOTPSlot index={0} />\n                  <InputOTPSlot index={1} />\n                  <InputOTPSlot index={2} />\n                </InputOTPGroup>\n                <InputOTPSeparator />\n                <InputOTPGroup className=\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\">\n                  <InputOTPSlot index={3} />\n                  <InputOTPSlot index={4} />\n                  <InputOTPSlot index={5} />\n                </InputOTPGroup>\n              </InputOTP>\n              <FieldDescription>\n                <a href=\"#\">I no longer have access to this email address.</a>\n              </FieldDescription>\n            </Field>\n          </form>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <Button type=\"submit\" className=\"w-full\">\n            Verify\n          </Button>\n          <div className=\"text-sm text-muted-foreground\">\n            Having trouble signing in?{\" \"}\n            <a\n              href=\"#\"\n              className=\"underline underline-offset-4 transition-colors hover:text-primary\"\n            >\n              Contact support\n            </a>\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/item-example.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemFooter,\n  ItemGroup,\n  ItemHeader,\n  ItemMedia,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ItemExample() {\n  return (\n    <ExampleWrapper>\n      <DefaultVariantItems />\n      <OutlineVariantItems />\n      <MutedVariantItems />\n      <DefaultVariantItemsSmall />\n      <OutlineVariantItemsSmall />\n      <MutedVariantItemsSmall />\n      <DefaultVariantItemsExtraSmall />\n      <OutlineVariantItemsExtraSmall />\n      <MutedVariantItemsExtraSmall />\n      <DefaultLinkItems />\n      <OutlineLinkItems />\n      <MutedLinkItems />\n      <DefaultItemGroup />\n      <OutlineItemGroup />\n      <MutedItemGroup />\n      <ItemSeparatorExample />\n      <ItemHeaderExamples />\n      <ItemFooterExamples />\n      <ItemHeaderAndFooterExamples />\n      <DefaultVariantItemsWithImage />\n      <OutlineVariantItemsWithImage />\n      <OutlineVariantItemsWithImageSmall />\n      <OutlineVariantItemsWithImageExtraSmall />\n      <MutedVariantItemsWithImage />\n    </ExampleWrapper>\n  )\n}\n\nfunction DefaultVariantItems() {\n  return (\n    <Example title=\"Default\">\n      <Item>\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItems() {\n  return (\n    <Example title=\"Outline\">\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction MutedVariantItems() {\n  return (\n    <Example title=\"Muted\">\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction DefaultVariantItemsSmall() {\n  return (\n    <Example title=\"Small\">\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsSmall() {\n  return (\n    <Example title=\"Outline - Small\">\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction MutedVariantItemsSmall() {\n  return (\n    <Example title=\"Muted - Small\">\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction DefaultVariantItemsExtraSmall() {\n  return (\n    <Example title=\"Extra Small\">\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsExtraSmall() {\n  return (\n    <Example title=\"Outline - Extra Small\">\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction MutedVariantItemsExtraSmall() {\n  return (\n    <Example title=\"Muted - Extra Small\">\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction DefaultLinkItems() {\n  return (\n    <Example title=\"asChild\">\n      <ItemGroup>\n        <Item render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>Title Only (Link)</ItemTitle>\n          </ItemContent>\n        </Item>\n        <Item render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>Title + Description (Link)</ItemTitle>\n            <ItemDescription>\n              Clickable item with title and description.\n            </ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item render={<a href=\"#\" />}>\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Media + Title (Link)</ItemTitle>\n          </ItemContent>\n        </Item>\n        <Item render={<a href=\"#\" />}>\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\n            <ItemDescription>\n              Complete link item with media, title, and description.\n            </ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>With Actions (Link)</ItemTitle>\n            <ItemDescription>\n              Link item that also has action buttons.\n            </ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Share\n            </Button>\n          </ItemActions>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction OutlineLinkItems() {\n  return (\n    <Example title=\"Outline - asChild\">\n      <ItemGroup>\n        <Item variant=\"outline\" render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>Title Only (Link)</ItemTitle>\n          </ItemContent>\n        </Item>\n        <Item variant=\"outline\" render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>Title + Description (Link)</ItemTitle>\n            <ItemDescription>\n              Clickable item with title and description.\n            </ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item variant=\"outline\" render={<a href=\"#\" />}>\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Media + Title (Link)</ItemTitle>\n          </ItemContent>\n        </Item>\n        <Item variant=\"outline\" render={<a href=\"#\" />}>\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\n            <ItemDescription>\n              Complete link item with media, title, and description.\n            </ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item variant=\"outline\" render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>With Actions (Link)</ItemTitle>\n            <ItemDescription>\n              Link item that also has action buttons.\n            </ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Share\n            </Button>\n          </ItemActions>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction MutedLinkItems() {\n  return (\n    <Example title=\"Muted - asChild\">\n      <ItemGroup>\n        <Item variant=\"muted\" render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>Title Only (Link)</ItemTitle>\n          </ItemContent>\n        </Item>\n        <Item variant=\"muted\" render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>Title + Description (Link)</ItemTitle>\n            <ItemDescription>\n              Clickable item with title and description.\n            </ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item variant=\"muted\" render={<a href=\"#\" />}>\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Media + Title (Link)</ItemTitle>\n          </ItemContent>\n        </Item>\n        <Item variant=\"muted\" render={<a href=\"#\" />}>\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Media + Title + Description (Link)</ItemTitle>\n            <ItemDescription>\n              Complete link item with media, title, and description.\n            </ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item variant=\"muted\" render={<a href=\"#\" />}>\n          <ItemContent>\n            <ItemTitle>With Actions (Link)</ItemTitle>\n            <ItemDescription>\n              Link item that also has action buttons.\n            </ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Share\n            </Button>\n          </ItemActions>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction DefaultItemGroup() {\n  return (\n    <Example title=\"ItemGroup\">\n      <ItemGroup>\n        <Item>\n          <ItemContent>\n            <ItemTitle>Item 1</ItemTitle>\n            <ItemDescription>First item in the group.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item>\n          <ItemContent>\n            <ItemTitle>Item 2</ItemTitle>\n            <ItemDescription>Second item in the group.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item>\n          <ItemContent>\n            <ItemTitle>Item 3</ItemTitle>\n            <ItemDescription>Third item in the group.</ItemDescription>\n          </ItemContent>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction OutlineItemGroup() {\n  return (\n    <Example title=\"Outline - ItemGroup\">\n      <ItemGroup>\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Item 1</ItemTitle>\n            <ItemDescription>First item with icon.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Item 2</ItemTitle>\n            <ItemDescription>Second item with icon.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Item 3</ItemTitle>\n            <ItemDescription>Third item with icon.</ItemDescription>\n          </ItemContent>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction MutedItemGroup() {\n  return (\n    <Example title=\"Muted - ItemGroup\">\n      <ItemGroup>\n        <Item variant=\"muted\">\n          <ItemContent>\n            <ItemTitle>Item 1</ItemTitle>\n            <ItemDescription>First item in muted group.</ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Action\n            </Button>\n          </ItemActions>\n        </Item>\n        <Item variant=\"muted\">\n          <ItemContent>\n            <ItemTitle>Item 2</ItemTitle>\n            <ItemDescription>Second item in muted group.</ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Action\n            </Button>\n          </ItemActions>\n        </Item>\n        <Item variant=\"muted\">\n          <ItemContent>\n            <ItemTitle>Item 3</ItemTitle>\n            <ItemDescription>Third item in muted group.</ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Action\n            </Button>\n          </ItemActions>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction ItemSeparatorExample() {\n  return (\n    <Example title=\"ItemSeparator\">\n      <ItemGroup>\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Inbox</ItemTitle>\n            <ItemDescription>View all incoming messages.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <ItemSeparator />\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Sent</ItemTitle>\n            <ItemDescription>View all sent messages.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <ItemSeparator />\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Drafts</ItemTitle>\n            <ItemDescription>View all draft messages.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <ItemSeparator />\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"ArchiveIcon\"\n              remixicon=\"RiArchiveLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Archive</ItemTitle>\n            <ItemDescription>View archived messages.</ItemDescription>\n          </ItemContent>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction ItemHeaderExamples() {\n  return (\n    <Example title=\"ItemHeader\">\n      <Item>\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Design System</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>Component Library</ItemTitle>\n          <ItemDescription>\n            A comprehensive collection of reusable UI components for building\n            consistent interfaces.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Marketing</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>Campaign Analytics</ItemTitle>\n          <ItemDescription>\n            Track performance metrics and engagement rates across all marketing\n            channels.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Engineering</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>API Documentation</ItemTitle>\n          <ItemDescription>\n            Complete reference guide for all available endpoints and\n            authentication methods.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n    </Example>\n  )\n}\n\nfunction ItemFooterExamples() {\n  return (\n    <Example title=\"ItemFooter\">\n      <Item>\n        <ItemContent>\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\n          <ItemDescription>\n            Financial overview including revenue, expenses, and growth metrics\n            for the fourth quarter.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Last updated 2 hours ago\n          </span>\n        </ItemFooter>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>User Research Findings</ItemTitle>\n          <ItemDescription>\n            Insights from interviews and surveys conducted with 50+ users across\n            different demographics.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Created by Sarah Chen\n          </span>\n        </ItemFooter>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Product Roadmap</ItemTitle>\n          <ItemDescription>\n            Planned features and improvements scheduled for the next three\n            months.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">12 comments</span>\n        </ItemFooter>\n      </Item>\n    </Example>\n  )\n}\n\nfunction ItemHeaderAndFooterExamples() {\n  return (\n    <Example title=\"ItemHeader + ItemFooter\">\n      <Item>\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Team Project</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>Website Redesign</ItemTitle>\n          <ItemDescription>\n            Complete overhaul of the company website with modern design\n            principles and improved user experience.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Updated 5 minutes ago\n          </span>\n        </ItemFooter>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Client Work</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>Mobile App Development</ItemTitle>\n          <ItemDescription>\n            Building a cross-platform mobile application for iOS and Android\n            with React Native.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Status: In Progress\n          </span>\n        </ItemFooter>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Documentation</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>API Integration Guide</ItemTitle>\n          <ItemDescription>\n            Step-by-step instructions for integrating third-party APIs with\n            authentication and error handling.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Category: Technical • 3 attachments\n          </span>\n        </ItemFooter>\n      </Item>\n    </Example>\n  )\n}\n\nfunction DefaultVariantItemsWithImage() {\n  return (\n    <Example title=\"Default - ItemMedia image\">\n      <Item>\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n          <ItemDescription>\n            Overview of project settings and configuration.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n          <ItemDescription>\n            Complete file with image, title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsWithImage() {\n  return (\n    <Example title=\"Outline - ItemMedia image\">\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n          <ItemDescription>\n            Overview of project settings and configuration.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n          <ItemDescription>\n            Complete file with image, title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsWithImageSmall() {\n  return (\n    <Example title=\"Outline - ItemMedia image - Small\">\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n          <ItemDescription>\n            Overview of project settings and configuration.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n          <ItemDescription>\n            Complete file with image, title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsWithImageExtraSmall() {\n  return (\n    <Example title=\"Outline - ItemMedia image - Extra Small\">\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction MutedVariantItemsWithImage() {\n  return (\n    <Example title=\"Muted - ItemMedia image\">\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n          <ItemDescription>\n            Overview of project settings and configuration.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n          <ItemDescription>\n            Complete file with image, title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/kbd-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/registry/bases/base/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function KbdExample() {\n  return (\n    <ExampleWrapper>\n      <KbdBasic />\n      <KbdModifierKeys />\n      <KbdGroupExample />\n      <KbdArrowKeys />\n      <KbdWithIcons />\n      <KbdWithIconsAndText />\n      <KbdInInputGroup />\n      <KbdInTooltip />\n      <KbdWithSamp />\n    </ExampleWrapper>\n  )\n}\n\nfunction KbdBasic() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex items-center gap-2\">\n        <Kbd>Ctrl</Kbd>\n        <Kbd>⌘K</Kbd>\n        <Kbd>Ctrl + B</Kbd>\n      </div>\n    </Example>\n  )\n}\n\nfunction KbdModifierKeys() {\n  return (\n    <Example title=\"Modifier Keys\">\n      <div className=\"flex items-center gap-2\">\n        <Kbd>⌘</Kbd>\n        <Kbd>C</Kbd>\n      </div>\n    </Example>\n  )\n}\n\nfunction KbdGroupExample() {\n  return (\n    <Example title=\"KbdGroup\">\n      <KbdGroup>\n        <Kbd>Ctrl</Kbd>\n        <Kbd>Shift</Kbd>\n        <Kbd>P</Kbd>\n      </KbdGroup>\n    </Example>\n  )\n}\n\nfunction KbdArrowKeys() {\n  return (\n    <Example title=\"Arrow Keys\">\n      <div className=\"flex items-center gap-2\">\n        <Kbd>↑</Kbd>\n        <Kbd>↓</Kbd>\n        <Kbd>←</Kbd>\n        <Kbd>→</Kbd>\n      </div>\n    </Example>\n  )\n}\n\nfunction KbdWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <KbdGroup>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"CircleDashedIcon\"\n            tabler=\"IconCircleDashed\"\n            hugeicons=\"DashedLineCircleIcon\"\n            phosphor=\"CircleDashedIcon\"\n            remixicon=\"RiLoaderLine\"\n          />\n        </Kbd>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"ArrowLeftIcon\"\n            tabler=\"IconArrowLeft\"\n            hugeicons=\"ArrowLeft01Icon\"\n            phosphor=\"ArrowLeftIcon\"\n            remixicon=\"RiArrowLeftLine\"\n          />\n        </Kbd>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight01Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Kbd>\n      </KbdGroup>\n    </Example>\n  )\n}\n\nfunction KbdWithIconsAndText() {\n  return (\n    <Example title=\"With Icons and Text\">\n      <KbdGroup>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"ArrowLeftIcon\"\n            tabler=\"IconArrowLeft\"\n            hugeicons=\"ArrowLeft01Icon\"\n            phosphor=\"ArrowLeftIcon\"\n            remixicon=\"RiArrowLeftLine\"\n          />\n          Left\n        </Kbd>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"CircleDashedIcon\"\n            tabler=\"IconCircleDashed\"\n            hugeicons=\"DashedLineCircleIcon\"\n            phosphor=\"CircleDashedIcon\"\n            remixicon=\"RiLoaderLine\"\n          />\n          Voice Enabled\n        </Kbd>\n      </KbdGroup>\n    </Example>\n  )\n}\n\nfunction KbdInInputGroup() {\n  return (\n    <Example title=\"InputGroup\">\n      <InputGroup>\n        <InputGroupInput />\n        <InputGroupAddon>\n          <Kbd>Space</Kbd>\n        </InputGroupAddon>\n      </InputGroup>\n    </Example>\n  )\n}\n\nfunction KbdInTooltip() {\n  return (\n    <Example title=\"Tooltip\">\n      <Tooltip>\n        <TooltipTrigger render={<Button size=\"icon-sm\" variant=\"outline\" />}>\n          <IconPlaceholder\n            lucide=\"SaveIcon\"\n            tabler=\"IconDeviceFloppy\"\n            hugeicons=\"FloppyDiskIcon\"\n            phosphor=\"FloppyDiskIcon\"\n            remixicon=\"RiSaveLine\"\n          />\n        </TooltipTrigger>\n        <TooltipContent className=\"pr-1.5\">\n          <div className=\"flex items-center gap-2\">\n            Save Changes <Kbd>S</Kbd>\n          </div>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction KbdWithSamp() {\n  return (\n    <Example title=\"With samp\">\n      <Kbd>\n        <samp>File</samp>\n      </Kbd>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/label-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport { Field } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\n\nexport default function LabelExample() {\n  return (\n    <ExampleWrapper>\n      <LabelWithCheckbox />\n      <LabelWithInput />\n      <LabelDisabled />\n      <LabelWithTextarea />\n    </ExampleWrapper>\n  )\n}\n\nfunction LabelWithCheckbox() {\n  return (\n    <Example title=\"With Checkbox\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"label-demo-terms\" />\n        <Label htmlFor=\"label-demo-terms\">Accept terms and conditions</Label>\n      </Field>\n    </Example>\n  )\n}\n\nfunction LabelWithInput() {\n  return (\n    <Example title=\"With Input\">\n      <Field>\n        <Label htmlFor=\"label-demo-username\">Username</Label>\n        <Input id=\"label-demo-username\" placeholder=\"Username\" />\n      </Field>\n    </Example>\n  )\n}\n\nfunction LabelDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field data-disabled={true}>\n        <Label htmlFor=\"label-demo-disabled\">Disabled</Label>\n        <Input id=\"label-demo-disabled\" placeholder=\"Disabled\" disabled />\n      </Field>\n    </Example>\n  )\n}\n\nfunction LabelWithTextarea() {\n  return (\n    <Example title=\"With Textarea\">\n      <Field>\n        <Label htmlFor=\"label-demo-message\">Message</Label>\n        <Textarea id=\"label-demo-message\" placeholder=\"Message\" />\n      </Field>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/menubar-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarLabel,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/registry/bases/base/ui/menubar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function MenubarExample() {\n  return (\n    <ExampleWrapper>\n      <MenubarBasic />\n      <MenubarWithSubmenu />\n      <MenubarSides />\n      <MenubarWithCheckboxes />\n      <MenubarWithRadio />\n      <MenubarWithIcons />\n      <MenubarWithShortcuts />\n      <MenubarFormat />\n      <MenubarInsert />\n      <MenubarDestructive />\n      <MenubarInDialog />\n      <MenubarWithInset />\n    </ExampleWrapper>\n  )\n}\n\nfunction MenubarBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent>\n            <MenubarItem>\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled>New Incognito Window</MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem>\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Edit</MenubarTrigger>\n          <MenubarContent>\n            <MenubarItem>\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem>Cut</MenubarItem>\n            <MenubarItem>Copy</MenubarItem>\n            <MenubarItem>Paste</MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarSides() {\n  return (\n    <Example title=\"Sides\" containerClassName=\"col-span-2\">\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {(\n          [\n            \"inline-start\",\n            \"left\",\n            \"top\",\n            \"bottom\",\n            \"right\",\n            \"inline-end\",\n          ] as const\n        ).map((side) => (\n          <Menubar key={side}>\n            <MenubarMenu>\n              <MenubarTrigger className=\"capitalize\">\n                {side.replace(\"-\", \" \")}\n              </MenubarTrigger>\n              <MenubarContent side={side}>\n                <MenubarGroup>\n                  <MenubarItem>New Tab</MenubarItem>\n                  <MenubarItem>New Window</MenubarItem>\n                  <MenubarItem>New Incognito Window</MenubarItem>\n                </MenubarGroup>\n              </MenubarContent>\n            </MenubarMenu>\n          </Menubar>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction MenubarWithSubmenu() {\n  return (\n    <Example title=\"With Submenu\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent>\n            <MenubarSub>\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarItem>Email link</MenubarItem>\n                <MenubarItem>Messages</MenubarItem>\n                <MenubarItem>Notes</MenubarItem>\n              </MenubarSubContent>\n            </MenubarSub>\n            <MenubarSeparator />\n            <MenubarItem>\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Edit</MenubarTrigger>\n          <MenubarContent>\n            <MenubarItem>\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarSub>\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarItem>Find...</MenubarItem>\n                <MenubarItem>Find Next</MenubarItem>\n                <MenubarItem>Find Previous</MenubarItem>\n              </MenubarSubContent>\n            </MenubarSub>\n            <MenubarSeparator />\n            <MenubarItem>Cut</MenubarItem>\n            <MenubarItem>Copy</MenubarItem>\n            <MenubarItem>Paste</MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithCheckboxes() {\n  return (\n    <Example title=\"With Checkboxes\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>View</MenubarTrigger>\n          <MenubarContent className=\"w-64\">\n            <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\n            <MenubarCheckboxItem checked>\n              Always Show Full URLs\n            </MenubarCheckboxItem>\n            <MenubarSeparator />\n            <MenubarItem inset>\n              Reload <MenubarShortcut>⌘R</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem disabled inset>\n              Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Format</MenubarTrigger>\n          <MenubarContent>\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithRadio() {\n  const [user, setUser] = React.useState(\"benoit\")\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Example title=\"With Radio\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>Profiles</MenubarTrigger>\n          <MenubarContent>\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\n              <MenubarRadioItem value=\"andy\">Andy</MenubarRadioItem>\n              <MenubarRadioItem value=\"benoit\">Benoit</MenubarRadioItem>\n              <MenubarRadioItem value=\"luis\">Luis</MenubarRadioItem>\n            </MenubarRadioGroup>\n            <MenubarSeparator />\n            <MenubarItem inset>Edit...</MenubarItem>\n            <MenubarItem inset>Add Profile...</MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Theme</MenubarTrigger>\n          <MenubarContent>\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\n              <MenubarRadioItem value=\"light\">Light</MenubarRadioItem>\n              <MenubarRadioItem value=\"dark\">Dark</MenubarRadioItem>\n              <MenubarRadioItem value=\"system\">System</MenubarRadioItem>\n            </MenubarRadioGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"FileIcon\"\n                tabler=\"IconFile\"\n                hugeicons=\"FileIcon\"\n                phosphor=\"FileIcon\"\n                remixicon=\"RiFileLine\"\n              />\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"FolderIcon\"\n                tabler=\"IconFolder\"\n                hugeicons=\"FolderIcon\"\n                phosphor=\"FolderIcon\"\n                remixicon=\"RiFolderLine\"\n              />\n              Open Folder\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"SaveIcon\"\n                tabler=\"IconDeviceFloppy\"\n                hugeicons=\"FloppyDiskIcon\"\n                phosphor=\"FloppyDiskIcon\"\n                remixicon=\"RiSaveLine\"\n              />\n              Save <MenubarShortcut>⌘S</MenubarShortcut>\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>More</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"CircleDashedIcon\"\n                  tabler=\"IconCircleDashed\"\n                  hugeicons=\"DashedLineCircleIcon\"\n                  phosphor=\"CircleDashedIcon\"\n                  remixicon=\"RiLoaderLine\"\n                />\n                Settings\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"CircleDashedIcon\"\n                  tabler=\"IconCircleDashed\"\n                  hugeicons=\"DashedLineCircleIcon\"\n                  phosphor=\"CircleDashedIcon\"\n                  remixicon=\"RiLoaderLine\"\n                />\n                Help\n              </MenubarItem>\n              <MenubarSeparator />\n              <MenubarItem variant=\"destructive\">\n                <IconPlaceholder\n                  lucide=\"CircleDashedIcon\"\n                  tabler=\"IconCircleDashed\"\n                  hugeicons=\"DashedLineCircleIcon\"\n                  phosphor=\"CircleDashedIcon\"\n                  remixicon=\"RiLoaderLine\"\n                />\n                Delete\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithShortcuts() {\n  return (\n    <Example title=\"With Shortcuts\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent>\n            <MenubarItem>\n              New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              New Window <MenubarShortcut>⌘N</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              Print... <MenubarShortcut>⌘P</MenubarShortcut>\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Edit</MenubarTrigger>\n          <MenubarContent>\n            <MenubarItem>\n              Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem>\n              Cut <MenubarShortcut>⌘X</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              Copy <MenubarShortcut>⌘C</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              Paste <MenubarShortcut>⌘V</MenubarShortcut>\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarFormat() {\n  return (\n    <Example title=\"Format\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>Format</MenubarTrigger>\n          <MenubarContent>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"BoldIcon\"\n                tabler=\"IconBold\"\n                hugeicons=\"TextBoldIcon\"\n                phosphor=\"TextBIcon\"\n                remixicon=\"RiBold\"\n              />\n              Bold <MenubarShortcut>⌘B</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"ItalicIcon\"\n                tabler=\"IconItalic\"\n                hugeicons=\"TextItalicIcon\"\n                phosphor=\"TextItalicIcon\"\n                remixicon=\"RiItalic\"\n              />\n              Italic <MenubarShortcut>⌘I</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"UnderlineIcon\"\n                tabler=\"IconUnderline\"\n                hugeicons=\"TextUnderlineIcon\"\n                phosphor=\"TextUnderlineIcon\"\n                remixicon=\"RiUnderline\"\n              />\n              Underline <MenubarShortcut>⌘U</MenubarShortcut>\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>View</MenubarTrigger>\n          <MenubarContent>\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\n            <MenubarSeparator />\n            <MenubarItem inset>Zoom In</MenubarItem>\n            <MenubarItem inset>Zoom Out</MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarInsert() {\n  return (\n    <Example title=\"Insert\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>Insert</MenubarTrigger>\n          <MenubarContent>\n            <MenubarSub>\n              <MenubarSubTrigger>\n                <IconPlaceholder\n                  lucide=\"ImageIcon\"\n                  tabler=\"IconPhoto\"\n                  hugeicons=\"ImageIcon\"\n                  phosphor=\"ImageIcon\"\n                  remixicon=\"RiImageLine\"\n                />\n                Media\n              </MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarItem>Image</MenubarItem>\n                <MenubarItem>Video</MenubarItem>\n                <MenubarItem>Audio</MenubarItem>\n              </MenubarSubContent>\n            </MenubarSub>\n            <MenubarSeparator />\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"LinkIcon\"\n                tabler=\"IconLink\"\n                hugeicons=\"LinkIcon\"\n                phosphor=\"LinkIcon\"\n                remixicon=\"RiLinksLine\"\n              />\n              Link <MenubarShortcut>⌘K</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"TableIcon\"\n                tabler=\"IconTable\"\n                hugeicons=\"TableIcon\"\n                phosphor=\"TableIcon\"\n                remixicon=\"RiTableLine\"\n              />\n              Table\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Tools</MenubarTrigger>\n          <MenubarContent className=\"w-44\">\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"SearchIcon\"\n                tabler=\"IconSearch\"\n                hugeicons=\"SearchIcon\"\n                phosphor=\"MagnifyingGlassIcon\"\n                remixicon=\"RiSearchLine\"\n              />\n              Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"CheckIcon\"\n                tabler=\"IconCheck\"\n                hugeicons=\"Tick02Icon\"\n                phosphor=\"CheckIcon\"\n                remixicon=\"RiCheckLine\"\n              />\n              Spell Check\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarDestructive() {\n  return (\n    <Example title=\"Destructive\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent className=\"w-40\">\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"FileIcon\"\n                tabler=\"IconFile\"\n                hugeicons=\"FileIcon\"\n                phosphor=\"FileIcon\"\n                remixicon=\"RiFileLine\"\n              />\n              New File <MenubarShortcut>⌘N</MenubarShortcut>\n            </MenubarItem>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"FolderIcon\"\n                tabler=\"IconFolder\"\n                hugeicons=\"FolderIcon\"\n                phosphor=\"FolderIcon\"\n                remixicon=\"RiFolderLine\"\n              />\n              Open Folder\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"TrashIcon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"DeleteIcon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n              Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Account</MenubarTrigger>\n          <MenubarContent>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"UserIcon\"\n                tabler=\"IconUser\"\n                hugeicons=\"UserIcon\"\n                phosphor=\"UserIcon\"\n                remixicon=\"RiUserLine\"\n              />\n              Profile\n            </MenubarItem>\n            <MenubarItem>\n              <IconPlaceholder\n                lucide=\"SettingsIcon\"\n                tabler=\"IconSettings\"\n                hugeicons=\"SettingsIcon\"\n                phosphor=\"GearIcon\"\n                remixicon=\"RiSettingsLine\"\n              />\n              Settings\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Sign out\n            </MenubarItem>\n            <MenubarSeparator />\n            <MenubarItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"TrashIcon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"DeleteIcon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n              Delete\n            </MenubarItem>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Menubar Example</DialogTitle>\n            <DialogDescription>\n              Use the menubar below to see the menu options.\n            </DialogDescription>\n          </DialogHeader>\n          <Menubar>\n            <MenubarMenu>\n              <MenubarTrigger>File</MenubarTrigger>\n              <MenubarContent>\n                <MenubarItem>\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"CopyIcon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                  Copy\n                </MenubarItem>\n                <MenubarItem>\n                  <IconPlaceholder\n                    lucide=\"ScissorsIcon\"\n                    tabler=\"IconCut\"\n                    hugeicons=\"ScissorIcon\"\n                    phosphor=\"ScissorsIcon\"\n                    remixicon=\"RiScissorsLine\"\n                  />\n                  Cut\n                </MenubarItem>\n                <MenubarItem>\n                  <IconPlaceholder\n                    lucide=\"ClipboardPasteIcon\"\n                    tabler=\"IconClipboard\"\n                    hugeicons=\"ClipboardIcon\"\n                    phosphor=\"ClipboardIcon\"\n                    remixicon=\"RiClipboardLine\"\n                  />\n                  Paste\n                </MenubarItem>\n                <MenubarSeparator />\n                <MenubarSub>\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\n                  <MenubarSubContent>\n                    <MenubarItem>Save Page...</MenubarItem>\n                    <MenubarItem>Create Shortcut...</MenubarItem>\n                    <MenubarItem>Name Window...</MenubarItem>\n                    <MenubarSeparator />\n                    <MenubarItem>Developer Tools</MenubarItem>\n                  </MenubarSubContent>\n                </MenubarSub>\n                <MenubarSeparator />\n                <MenubarItem variant=\"destructive\">\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"DeleteIcon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  Delete\n                </MenubarItem>\n              </MenubarContent>\n            </MenubarMenu>\n            <MenubarMenu>\n              <MenubarTrigger>Edit</MenubarTrigger>\n              <MenubarContent>\n                <MenubarItem>\n                  Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n                </MenubarItem>\n                <MenubarItem>\n                  Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n                </MenubarItem>\n              </MenubarContent>\n            </MenubarMenu>\n          </Menubar>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction MenubarWithInset() {\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\n  const [showUrls, setShowUrls] = React.useState(false)\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Example title=\"With Inset\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>View</MenubarTrigger>\n          <MenubarContent className=\"w-44\">\n            <MenubarGroup>\n              <MenubarLabel>Actions</MenubarLabel>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n                Copy\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"ScissorsIcon\"\n                  tabler=\"IconCut\"\n                  hugeicons=\"ScissorIcon\"\n                  phosphor=\"ScissorsIcon\"\n                  remixicon=\"RiScissorsLine\"\n                />\n                Cut\n              </MenubarItem>\n              <MenubarItem inset>Paste</MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarLabel inset>Appearance</MenubarLabel>\n              <MenubarCheckboxItem\n                inset\n                checked={showBookmarks}\n                onCheckedChange={setShowBookmarks}\n              >\n                Bookmarks\n              </MenubarCheckboxItem>\n              <MenubarCheckboxItem\n                inset\n                checked={showUrls}\n                onCheckedChange={setShowUrls}\n              >\n                Full URLs\n              </MenubarCheckboxItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarLabel inset>Theme</MenubarLabel>\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\n                <MenubarRadioItem inset value=\"light\">\n                  Light\n                </MenubarRadioItem>\n                <MenubarRadioItem inset value=\"dark\">\n                  Dark\n                </MenubarRadioItem>\n                <MenubarRadioItem inset value=\"system\">\n                  System\n                </MenubarRadioItem>\n              </MenubarRadioGroup>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarSub>\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Save Page...</MenubarItem>\n                  <MenubarItem>Create Shortcut...</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/native-select-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/registry/bases/base/ui/native-select\"\n\nexport default function NativeSelectExample() {\n  return (\n    <ExampleWrapper>\n      <NativeSelectBasic />\n      <NativeSelectWithGroups />\n      <NativeSelectSizes />\n      <NativeSelectWithField />\n      <NativeSelectDisabled />\n      <NativeSelectInvalid />\n    </ExampleWrapper>\n  )\n}\n\nfunction NativeSelectBasic() {\n  return (\n    <Example title=\"Basic\">\n      <NativeSelect>\n        <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n        <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n        <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n        <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n        <NativeSelectOption value=\"grapes\" disabled>\n          Grapes\n        </NativeSelectOption>\n        <NativeSelectOption value=\"pineapple\">Pineapple</NativeSelectOption>\n      </NativeSelect>\n    </Example>\n  )\n}\n\nfunction NativeSelectWithGroups() {\n  return (\n    <Example title=\"With Groups\">\n      <NativeSelect>\n        <NativeSelectOption value=\"\">Select a food</NativeSelectOption>\n        <NativeSelectOptGroup label=\"Fruits\">\n          <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n          <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n          <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n        </NativeSelectOptGroup>\n        <NativeSelectOptGroup label=\"Vegetables\">\n          <NativeSelectOption value=\"carrot\">Carrot</NativeSelectOption>\n          <NativeSelectOption value=\"broccoli\">Broccoli</NativeSelectOption>\n          <NativeSelectOption value=\"spinach\">Spinach</NativeSelectOption>\n        </NativeSelectOptGroup>\n      </NativeSelect>\n    </Example>\n  )\n}\n\nfunction NativeSelectSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-col gap-4\">\n        <NativeSelect size=\"sm\">\n          <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n          <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n          <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n          <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n        </NativeSelect>\n        <NativeSelect size=\"default\">\n          <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n          <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n          <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n          <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n        </NativeSelect>\n      </div>\n    </Example>\n  )\n}\n\nfunction NativeSelectWithField() {\n  return (\n    <Example title=\"With Field\">\n      <Field>\n        <FieldLabel htmlFor=\"native-select-country\">Country</FieldLabel>\n        <NativeSelect id=\"native-select-country\">\n          <NativeSelectOption value=\"\">Select a country</NativeSelectOption>\n          <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n          <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n          <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n          <NativeSelectOption value=\"au\">Australia</NativeSelectOption>\n        </NativeSelect>\n        <FieldDescription>Select your country of residence.</FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction NativeSelectDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <NativeSelect disabled>\n        <NativeSelectOption value=\"\">Disabled</NativeSelectOption>\n        <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n        <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n        <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n      </NativeSelect>\n    </Example>\n  )\n}\n\nfunction NativeSelectInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <NativeSelect aria-invalid=\"true\">\n        <NativeSelectOption value=\"\">Error state</NativeSelectOption>\n        <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n        <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n        <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n      </NativeSelect>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/navigation-menu-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"@/registry/bases/base/ui/navigation-menu\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst components: { title: string; href: string; description: string }[] = [\n  {\n    title: \"Alert Dialog\",\n    href: \"/docs/primitives/alert-dialog\",\n    description:\n      \"A modal dialog that interrupts the user with important content and expects a response.\",\n  },\n  {\n    title: \"Hover Card\",\n    href: \"/docs/primitives/hover-card\",\n    description:\n      \"For sighted users to preview content available behind a link.\",\n  },\n  {\n    title: \"Progress\",\n    href: \"/docs/primitives/progress\",\n    description:\n      \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n  },\n  {\n    title: \"Scroll-area\",\n    href: \"/docs/primitives/scroll-area\",\n    description: \"Visually or semantically separates content.\",\n  },\n  {\n    title: \"Tabs\",\n    href: \"/docs/primitives/tabs\",\n    description:\n      \"A set of layered sections of content—known as tab panels—that are displayed one at a time.\",\n  },\n  {\n    title: \"Tooltip\",\n    href: \"/docs/primitives/tooltip\",\n    description:\n      \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n  },\n]\n\nexport default function NavigationMenuExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1\">\n      <NavigationMenuBasic />\n    </ExampleWrapper>\n  )\n}\n\nfunction NavigationMenuBasic() {\n  return (\n    <Example title=\"Basic\">\n      <NavigationMenu>\n        <NavigationMenuList>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"w-96\">\n                <ListItem href=\"/docs\" title=\"Introduction\">\n                  Re-usable components built with Tailwind CSS.\n                </ListItem>\n                <ListItem href=\"/docs/installation\" title=\"Installation\">\n                  How to install dependencies and structure your app.\n                </ListItem>\n                <ListItem href=\"/docs/primitives/typography\" title=\"Typography\">\n                  Styles for headings, paragraphs, lists...etc\n                </ListItem>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid w-[400px] gap-2 md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n                {components.map((component) => (\n                  <ListItem\n                    key={component.title}\n                    title={component.title}\n                    href={component.href}\n                  >\n                    {component.description}\n                  </ListItem>\n                ))}\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid w-[200px]\">\n                <li>\n                  <NavigationMenuLink\n                    render={\n                      <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                    }\n                  >\n                    <IconPlaceholder\n                      lucide=\"CircleAlertIcon\"\n                      tabler=\"IconExclamationCircle\"\n                      hugeicons=\"AlertCircleIcon\"\n                      phosphor=\"WarningCircleIcon\"\n                      remixicon=\"RiErrorWarningLine\"\n                    />\n                    Backlog\n                  </NavigationMenuLink>\n                  <NavigationMenuLink\n                    render={\n                      <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                    }\n                  >\n                    <IconPlaceholder\n                      lucide=\"CircleAlertIcon\"\n                      tabler=\"IconExclamationCircle\"\n                      hugeicons=\"AlertCircleIcon\"\n                      phosphor=\"WarningCircleIcon\"\n                      remixicon=\"RiErrorWarningLine\"\n                    />\n                    To Do\n                  </NavigationMenuLink>\n                  <NavigationMenuLink\n                    render={\n                      <Link href=\"#\" className=\"flex-row items-center gap-2\" />\n                    }\n                  >\n                    <IconPlaceholder\n                      lucide=\"CircleAlertIcon\"\n                      tabler=\"IconExclamationCircle\"\n                      hugeicons=\"AlertCircleIcon\"\n                      phosphor=\"WarningCircleIcon\"\n                      remixicon=\"RiErrorWarningLine\"\n                    />\n                    Done\n                  </NavigationMenuLink>\n                </li>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuLink\n              render={<Link href=\"/docs\" />}\n              className={navigationMenuTriggerStyle()}\n            >\n              Documentation\n            </NavigationMenuLink>\n          </NavigationMenuItem>\n        </NavigationMenuList>\n      </NavigationMenu>\n    </Example>\n  )\n}\n\nfunction ListItem({\n  title,\n  children,\n  href,\n  ...props\n}: React.ComponentPropsWithoutRef<\"li\"> & { href: string }) {\n  return (\n    <li {...props}>\n      <NavigationMenuLink render={<Link href={href} />}>\n        <div className=\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\">\n          <div className=\"leading-none font-medium\">{title}</div>\n          <div className=\"line-clamp-2 text-muted-foreground\">{children}</div>\n        </div>\n      </NavigationMenuLink>\n    </li>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/pagination-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Field, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/registry/bases/base/ui/pagination\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\n\nexport default function PaginationExample() {\n  return (\n    <ExampleWrapper>\n      <PaginationBasic />\n      <PaginationSimple />\n      <PaginationIconsOnly />\n    </ExampleWrapper>\n  )\n}\n\nfunction PaginationBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Pagination>\n        <PaginationContent>\n          <PaginationItem>\n            <PaginationPrevious href=\"#\" />\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">1</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\" isActive>\n              2\n            </PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">3</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationEllipsis />\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationNext href=\"#\" />\n          </PaginationItem>\n        </PaginationContent>\n      </Pagination>\n    </Example>\n  )\n}\n\nfunction PaginationSimple() {\n  return (\n    <Example title=\"Simple\">\n      <Pagination>\n        <PaginationContent>\n          <PaginationItem>\n            <PaginationLink href=\"#\">1</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\" isActive>\n              2\n            </PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">3</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">4</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">5</PaginationLink>\n          </PaginationItem>\n        </PaginationContent>\n      </Pagination>\n    </Example>\n  )\n}\n\nfunction PaginationIconsOnly() {\n  return (\n    <Example title=\"With Select\">\n      <div className=\"flex items-center justify-between gap-4\">\n        <Field orientation=\"horizontal\" className=\"w-fit\">\n          <FieldLabel htmlFor=\"select-rows-per-page\">Rows per page</FieldLabel>\n          <Select defaultValue=\"25\">\n            <SelectTrigger className=\"w-20\" id=\"select-rows-per-page\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent align=\"start\">\n              <SelectGroup>\n                <SelectItem value=\"10\">10</SelectItem>\n                <SelectItem value=\"25\">25</SelectItem>\n                <SelectItem value=\"50\">50</SelectItem>\n                <SelectItem value=\"100\">100</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </Field>\n        <Pagination className=\"mx-0 w-auto\">\n          <PaginationContent>\n            <PaginationItem>\n              <PaginationPrevious href=\"#\" />\n            </PaginationItem>\n            <PaginationItem>\n              <PaginationNext href=\"#\" />\n            </PaginationItem>\n          </PaginationContent>\n        </Pagination>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/popover-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/registry/bases/base/ui/popover\"\n\nexport default function PopoverExample() {\n  return (\n    <ExampleWrapper>\n      <PopoverBasic />\n      <PopoverSides />\n      <PopoverWithForm />\n      <PopoverAlignments />\n      <PopoverInDialog />\n    </ExampleWrapper>\n  )\n}\n\nfunction PopoverBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Popover>\n        <PopoverTrigger render={<Button variant=\"outline\" className=\"w-fit\" />}>\n          Open Popover\n        </PopoverTrigger>\n        <PopoverContent align=\"start\">\n          <PopoverHeader>\n            <PopoverTitle>Dimensions</PopoverTitle>\n            <PopoverDescription>\n              Set the dimensions for the layer.\n            </PopoverDescription>\n          </PopoverHeader>\n        </PopoverContent>\n      </Popover>\n    </Example>\n  )\n}\n\nfunction PopoverSides() {\n  return (\n    <Example title=\"Sides\">\n      <div className=\"flex flex-col gap-2\">\n        <div className=\"flex flex-wrap gap-2\">\n          {([\"inline-start\", \"left\", \"top\"] as const).map((side) => (\n            <Popover key={side}>\n              <PopoverTrigger\n                render={\n                  <Button variant=\"outline\" className=\"w-fit capitalize\" />\n                }\n              >\n                {side.replace(\"-\", \" \")}\n              </PopoverTrigger>\n              <PopoverContent side={side} className=\"w-40\">\n                <p>Popover on {side.replace(\"-\", \" \")}</p>\n              </PopoverContent>\n            </Popover>\n          ))}\n        </div>\n        <div className=\"flex flex-wrap gap-2\">\n          {([\"bottom\", \"right\", \"inline-end\"] as const).map((side) => (\n            <Popover key={side}>\n              <PopoverTrigger\n                render={\n                  <Button variant=\"outline\" className=\"w-fit capitalize\" />\n                }\n              >\n                {side.replace(\"-\", \" \")}\n              </PopoverTrigger>\n              <PopoverContent side={side} className=\"w-40\">\n                <p>Popover on {side.replace(\"-\", \" \")}</p>\n              </PopoverContent>\n            </Popover>\n          ))}\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction PopoverWithForm() {\n  return (\n    <Example title=\"With Form\">\n      <Popover>\n        <PopoverTrigger render={<Button variant=\"outline\" />}>\n          Open Popover\n        </PopoverTrigger>\n        <PopoverContent className=\"w-64\" align=\"start\">\n          <PopoverHeader>\n            <PopoverTitle>Dimensions</PopoverTitle>\n            <PopoverDescription>\n              Set the dimensions for the layer.\n            </PopoverDescription>\n          </PopoverHeader>\n          <FieldGroup className=\"gap-4\">\n            <Field orientation=\"horizontal\">\n              <FieldLabel htmlFor=\"width\" className=\"w-1/2\">\n                Width\n              </FieldLabel>\n              <Input id=\"width\" defaultValue=\"100%\" />\n            </Field>\n            <Field orientation=\"horizontal\">\n              <FieldLabel htmlFor=\"height\" className=\"w-1/2\">\n                Height\n              </FieldLabel>\n              <Input id=\"height\" defaultValue=\"25px\" />\n            </Field>\n          </FieldGroup>\n        </PopoverContent>\n      </Popover>\n    </Example>\n  )\n}\n\nfunction PopoverAlignments() {\n  return (\n    <Example title=\"Alignments\">\n      <div className=\"flex gap-6\">\n        <Popover>\n          <PopoverTrigger render={<Button variant=\"outline\" size=\"sm\" />}>\n            Start\n          </PopoverTrigger>\n          <PopoverContent align=\"start\" className=\"w-40\">\n            Aligned to start\n          </PopoverContent>\n        </Popover>\n        <Popover>\n          <PopoverTrigger render={<Button variant=\"outline\" size=\"sm\" />}>\n            Center\n          </PopoverTrigger>\n          <PopoverContent align=\"center\" className=\"w-40\">\n            Aligned to center\n          </PopoverContent>\n        </Popover>\n        <Popover>\n          <PopoverTrigger render={<Button variant=\"outline\" size=\"sm\" />}>\n            End\n          </PopoverTrigger>\n          <PopoverContent align=\"end\" className=\"w-40\">\n            Aligned to end\n          </PopoverContent>\n        </Popover>\n      </div>\n    </Example>\n  )\n}\n\nfunction PopoverInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Popover Example</DialogTitle>\n            <DialogDescription>\n              Click the button below to see the popover.\n            </DialogDescription>\n          </DialogHeader>\n          <Popover>\n            <PopoverTrigger\n              render={<Button variant=\"outline\" className=\"w-fit\" />}\n            >\n              Open Popover\n            </PopoverTrigger>\n            <PopoverContent align=\"start\">\n              <PopoverHeader>\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\n                <PopoverDescription>\n                  This popover appears inside a dialog. Click the button to open\n                  it.\n                </PopoverDescription>\n              </PopoverHeader>\n            </PopoverContent>\n          </Popover>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/progress-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport {\n  Progress,\n  ProgressLabel,\n  ProgressValue,\n} from \"@/registry/bases/base/ui/progress\"\nimport { Slider } from \"@/registry/bases/base/ui/slider\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ProgressExample() {\n  return (\n    <ExampleWrapper>\n      <ProgressValues />\n      <ProgressWithLabel />\n      <ProgressControlled />\n      <FileUploadList />\n    </ExampleWrapper>\n  )\n}\n\nfunction ProgressValues() {\n  return (\n    <Example title=\"Progress Bar\">\n      <div className=\"flex w-full flex-col gap-4\">\n        <Progress value={0} />\n        <Progress value={25} className=\"w-full\" />\n        <Progress value={50} />\n        <Progress value={75} />\n        <Progress value={100} />\n      </div>\n    </Example>\n  )\n}\n\nfunction ProgressWithLabel() {\n  return (\n    <Example title=\"With Label\">\n      <Progress value={56}>\n        <ProgressLabel>Upload progress</ProgressLabel>\n        <ProgressValue />\n      </Progress>\n    </Example>\n  )\n}\n\nfunction ProgressControlled() {\n  const [value, setValue] = React.useState(50)\n\n  return (\n    <Example title=\"Controlled\">\n      <div className=\"flex w-full flex-col gap-4\">\n        <Progress value={value} className=\"w-full\" />\n        <Slider\n          value={value}\n          onValueChange={(value) => setValue(value as number)}\n          min={0}\n          max={100}\n          step={1}\n        />\n      </div>\n    </Example>\n  )\n}\n\nfunction FileUploadList() {\n  const files = React.useMemo(\n    () => [\n      {\n        id: \"1\",\n        name: \"document.pdf\",\n        progress: 45,\n        timeRemaining: \"2m 30s\",\n      },\n      {\n        id: \"2\",\n        name: \"presentation.pptx\",\n        progress: 78,\n        timeRemaining: \"45s\",\n      },\n      {\n        id: \"3\",\n        name: \"spreadsheet.xlsx\",\n        progress: 12,\n        timeRemaining: \"5m 12s\",\n      },\n      {\n        id: \"4\",\n        name: \"image.jpg\",\n        progress: 100,\n        timeRemaining: \"Complete\",\n      },\n    ],\n    []\n  )\n\n  return (\n    <Example title=\"File Upload List\">\n      <ItemGroup>\n        {files.map((file) => (\n          <Item key={file.id} size=\"xs\" className=\"px-0\">\n            <ItemMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"FileIcon\"\n                tabler=\"IconFile\"\n                hugeicons=\"FileIcon\"\n                phosphor=\"FileIcon\"\n                remixicon=\"RiFileLine\"\n                className=\"size-5\"\n              />\n            </ItemMedia>\n            <ItemContent className=\"inline-block truncate\">\n              <ItemTitle className=\"inline\">{file.name}</ItemTitle>\n            </ItemContent>\n            <ItemContent>\n              <Progress value={file.progress} className=\"w-32\" />\n            </ItemContent>\n            <ItemActions className=\"w-16 justify-end\">\n              <span className=\"text-sm text-muted-foreground\">\n                {file.timeRemaining}\n              </span>\n            </ItemActions>\n          </Item>\n        ))}\n      </ItemGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/radio-group-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/registry/bases/base/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/bases/base/ui/radio-group\"\n\nexport default function RadioGroupExample() {\n  return (\n    <ExampleWrapper>\n      <RadioGroupBasic />\n      <RadioGroupWithDescriptions />\n      <RadioGroupWithFieldSet />\n      <RadioGroupGrid />\n      <RadioGroupDisabled />\n      <RadioGroupInvalid />\n    </ExampleWrapper>\n  )\n}\n\nfunction RadioGroupBasic() {\n  return (\n    <Example title=\"Basic\">\n      <RadioGroup defaultValue=\"comfortable\">\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"default\" id=\"r1\" />\n          <FieldLabel htmlFor=\"r1\" className=\"font-normal\">\n            Default\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"comfortable\" id=\"r2\" />\n          <FieldLabel htmlFor=\"r2\" className=\"font-normal\">\n            Comfortable\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"compact\" id=\"r3\" />\n          <FieldLabel htmlFor=\"r3\" className=\"font-normal\">\n            Compact\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </Example>\n  )\n}\n\nfunction RadioGroupWithDescriptions() {\n  return (\n    <Example title=\"With Descriptions\">\n      <RadioGroup defaultValue=\"plus\">\n        <FieldLabel htmlFor=\"plus-plan\">\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <div className=\"font-medium\">Plus</div>\n              <FieldDescription>\n                For individuals and small teams\n              </FieldDescription>\n            </FieldContent>\n            <RadioGroupItem value=\"plus\" id=\"plus-plan\" />\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"pro-plan\">\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <div className=\"font-medium\">Pro</div>\n              <FieldDescription>For growing businesses</FieldDescription>\n            </FieldContent>\n            <RadioGroupItem value=\"pro\" id=\"pro-plan\" />\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"enterprise-plan\">\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <div className=\"font-medium\">Enterprise</div>\n              <FieldDescription>\n                For large teams and enterprises\n              </FieldDescription>\n            </FieldContent>\n            <RadioGroupItem value=\"enterprise\" id=\"enterprise-plan\" />\n          </Field>\n        </FieldLabel>\n      </RadioGroup>\n    </Example>\n  )\n}\n\nfunction RadioGroupWithFieldSet() {\n  return (\n    <Example title=\"With FieldSet\">\n      <FieldSet>\n        <FieldLegend>Battery Level</FieldLegend>\n        <FieldDescription>\n          Choose your preferred battery level.\n        </FieldDescription>\n        <RadioGroup defaultValue=\"medium\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"high\" id=\"battery-high\" />\n            <FieldLabel htmlFor=\"battery-high\" className=\"font-normal\">\n              High\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"medium\" id=\"battery-medium\" />\n            <FieldLabel htmlFor=\"battery-medium\" className=\"font-normal\">\n              Medium\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"low\" id=\"battery-low\" />\n            <FieldLabel htmlFor=\"battery-low\" className=\"font-normal\">\n              Low\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n    </Example>\n  )\n}\n\nfunction RadioGroupGrid() {\n  return (\n    <Example title=\"Grid Layout\">\n      <RadioGroup defaultValue=\"medium\" className=\"grid grid-cols-2 gap-2\">\n        <FieldLabel htmlFor=\"size-small\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"small\" id=\"size-small\" />\n            <div className=\"font-medium\">Small</div>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"size-medium\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"medium\" id=\"size-medium\" />\n            <div className=\"font-medium\">Medium</div>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"size-large\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"large\" id=\"size-large\" />\n            <div className=\"font-medium\">Large</div>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"size-xlarge\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"xlarge\" id=\"size-xlarge\" />\n            <div className=\"font-medium\">X-Large</div>\n          </Field>\n        </FieldLabel>\n      </RadioGroup>\n    </Example>\n  )\n}\n\nfunction RadioGroupDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <RadioGroup defaultValue=\"option2\" disabled>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option1\" id=\"disabled-1\" />\n          <FieldLabel htmlFor=\"disabled-1\" className=\"font-normal\">\n            Option 1\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option2\" id=\"disabled-2\" />\n          <FieldLabel htmlFor=\"disabled-2\" className=\"font-normal\">\n            Option 2\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option3\" id=\"disabled-3\" />\n          <FieldLabel htmlFor=\"disabled-3\" className=\"font-normal\">\n            Option 3\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </Example>\n  )\n}\n\nfunction RadioGroupInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <FieldSet>\n        <FieldLegend>Notification Preferences</FieldLegend>\n        <FieldDescription>\n          Choose how you want to receive notifications.\n        </FieldDescription>\n        <RadioGroup defaultValue=\"email\">\n          <Field orientation=\"horizontal\" data-invalid>\n            <RadioGroupItem value=\"email\" id=\"invalid-email\" aria-invalid />\n            <FieldLabel htmlFor=\"invalid-email\" className=\"font-normal\">\n              Email only\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\" data-invalid>\n            <RadioGroupItem value=\"sms\" id=\"invalid-sms\" aria-invalid />\n            <FieldLabel htmlFor=\"invalid-sms\" className=\"font-normal\">\n              SMS only\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\" data-invalid>\n            <RadioGroupItem value=\"both\" id=\"invalid-both\" aria-invalid />\n            <FieldLabel htmlFor=\"invalid-both\" className=\"font-normal\">\n              Both Email & SMS\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/resizable-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport type { Layout } from \"react-resizable-panels\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/registry/bases/base/ui/resizable\"\n\nexport default function ResizableExample() {\n  return (\n    <ExampleWrapper>\n      <ResizableHorizontal />\n      <ResizableVertical />\n      <ResizableWithHandle />\n      <ResizableNested />\n      <ResizableControlled />\n    </ExampleWrapper>\n  )\n}\n\nfunction ResizableHorizontal() {\n  return (\n    <Example title=\"Horizontal\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"min-h-[200px] rounded-lg border\"\n      >\n        <ResizablePanel defaultSize=\"25%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Sidebar</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"75%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Content</span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n\nfunction ResizableVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <ResizablePanelGroup\n        orientation=\"vertical\"\n        className=\"min-h-[200px] rounded-lg border\"\n      >\n        <ResizablePanel defaultSize=\"25%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Header</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"75%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Content</span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n\nfunction ResizableWithHandle() {\n  return (\n    <Example title=\"With Handle\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"min-h-[200px] rounded-lg border\"\n      >\n        <ResizablePanel defaultSize=\"25%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Sidebar</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle withHandle />\n        <ResizablePanel defaultSize=\"75%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Content</span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n\nfunction ResizableNested() {\n  return (\n    <Example title=\"Nested\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"rounded-lg border\"\n      >\n        <ResizablePanel defaultSize=\"50%\">\n          <div className=\"flex h-[200px] items-center justify-center p-6\">\n            <span className=\"font-semibold\">One</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"50%\">\n          <ResizablePanelGroup orientation=\"vertical\">\n            <ResizablePanel defaultSize=\"25%\">\n              <div className=\"flex h-full items-center justify-center p-6\">\n                <span className=\"font-semibold\">Two</span>\n              </div>\n            </ResizablePanel>\n            <ResizableHandle />\n            <ResizablePanel defaultSize=\"75%\">\n              <div className=\"flex h-full items-center justify-center p-6\">\n                <span className=\"font-semibold\">Three</span>\n              </div>\n            </ResizablePanel>\n          </ResizablePanelGroup>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n\nfunction ResizableControlled() {\n  const [layout, setLayout] = React.useState<Layout>({})\n\n  return (\n    <Example title=\"Controlled\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"min-h-[200px] rounded-lg border\"\n        onLayoutChange={setLayout}\n      >\n        <ResizablePanel defaultSize=\"30%\" id=\"left\" minSize=\"20%\">\n          <div className=\"flex h-full flex-col items-center justify-center gap-2 p-6\">\n            <span className=\"font-semibold\">\n              {Math.round(layout.left ?? 30)}%\n            </span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"70%\" id=\"right\" minSize=\"30%\">\n          <div className=\"flex h-full flex-col items-center justify-center gap-2 p-6\">\n            <span className=\"font-semibold\">\n              {Math.round(layout.right ?? 70)}%\n            </span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/scroll-area-example.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { ScrollArea, ScrollBar } from \"@/registry/bases/base/ui/scroll-area\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\n\nconst tags = Array.from({ length: 50 }).map(\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\n)\n\nconst works = [\n  {\n    artist: \"Ornella Binni\",\n    art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Tom Byrom\",\n    art: \"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Vladimir Malyav\",\n    art: \"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\",\n  },\n] as const\n\nexport default function ScrollAreaExample() {\n  return (\n    <ExampleWrapper>\n      <ScrollAreaVertical />\n      <ScrollAreaHorizontal />\n    </ExampleWrapper>\n  )\n}\n\nfunction ScrollAreaVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <ScrollArea className=\"mx-auto h-72 w-48 rounded-md border\">\n        <div className=\"p-4\">\n          <h4 className=\"mb-4 text-sm leading-none font-medium\">Tags</h4>\n          {tags.map((tag) => (\n            <React.Fragment key={tag}>\n              <div className=\"text-sm\">{tag}</div>\n              <Separator className=\"my-2\" />\n            </React.Fragment>\n          ))}\n        </div>\n      </ScrollArea>\n    </Example>\n  )\n}\n\nfunction ScrollAreaHorizontal() {\n  return (\n    <Example title=\"Horizontal\">\n      <ScrollArea className=\"mx-auto w-full max-w-96 rounded-md border p-4\">\n        <div className=\"flex gap-4\">\n          {works.map((artwork) => (\n            <figure key={artwork.artist} className=\"shrink-0\">\n              <div className=\"overflow-hidden rounded-md\">\n                <Image\n                  src={artwork.art}\n                  alt={`Photo by ${artwork.artist}`}\n                  className=\"aspect-[3/4] h-fit w-fit object-cover\"\n                  width={300}\n                  height={400}\n                />\n              </div>\n              <figcaption className=\"pt-2 text-xs text-muted-foreground\">\n                Photo by{\" \"}\n                <span className=\"font-semibold text-foreground\">\n                  {artwork.artist}\n                </span>\n              </figcaption>\n            </figure>\n          ))}\n        </div>\n        <ScrollBar orientation=\"horizontal\" />\n      </ScrollArea>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/select-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/base/ui/native-select\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SelectExample() {\n  return (\n    <ExampleWrapper>\n      <SelectBasic />\n      <SelectSides />\n      <SelectWithIcons />\n      <SelectWithGroups />\n      <SelectLargeList />\n      <SelectMultiple />\n      <SelectSizes />\n      <SelectPlan />\n      <SelectWithButton />\n      <SelectItemAligned />\n      <SelectWithField />\n      <SelectInvalid />\n      <SelectInline />\n      <SelectDisabled />\n      <SelectInDialog />\n    </ExampleWrapper>\n  )\n}\n\nfunction SelectBasic() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n    { label: \"Grapes\", value: \"grapes\" },\n    { label: \"Pineapple\", value: \"pineapple\" },\n  ]\n  return (\n    <Example title=\"Basic\">\n      <Select items={items}>\n        <SelectTrigger>\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {items.map((item) => (\n              <SelectItem key={item.value} value={item.value}>\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectSides() {\n  const items = [\n    { label: \"Select\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n  ]\n  return (\n    <Example title=\"Sides\" containerClassName=\"col-span-2\">\n      <div className=\"flex flex-wrap justify-center gap-2\">\n        {(\n          [\n            \"inline-start\",\n            \"left\",\n            \"top\",\n            \"bottom\",\n            \"right\",\n            \"inline-end\",\n          ] as const\n        ).map((side) => (\n          <Select key={side} items={items}>\n            <SelectTrigger className=\"w-28 capitalize\">\n              <SelectValue placeholder={side.replace(\"-\", \" \")} />\n            </SelectTrigger>\n            <SelectContent side={side} alignItemWithTrigger={false}>\n              <SelectGroup>\n                {items.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectWithIcons() {\n  const items = [\n    {\n      label: (\n        <>\n          <IconPlaceholder\n            lucide=\"ChartLineIcon\"\n            tabler=\"IconChartLine\"\n            hugeicons=\"Chart03Icon\"\n            phosphor=\"ChartLineIcon\"\n            remixicon=\"RiLineChartLine\"\n          />\n          Chart Type\n        </>\n      ),\n      value: null,\n    },\n    {\n      label: (\n        <>\n          <IconPlaceholder\n            lucide=\"ChartLineIcon\"\n            tabler=\"IconChartLine\"\n            hugeicons=\"Chart03Icon\"\n            phosphor=\"ChartLineIcon\"\n            remixicon=\"RiLineChartLine\"\n          />\n          Line\n        </>\n      ),\n      value: \"line\",\n    },\n    {\n      label: (\n        <>\n          <IconPlaceholder\n            lucide=\"ChartBarIcon\"\n            tabler=\"IconChartBar\"\n            hugeicons=\"Chart03Icon\"\n            phosphor=\"ChartBarIcon\"\n            remixicon=\"RiBarChartLine\"\n          />\n          Bar\n        </>\n      ),\n      value: \"bar\",\n    },\n    {\n      label: (\n        <>\n          <IconPlaceholder\n            lucide=\"ChartPieIcon\"\n            tabler=\"IconChartPie\"\n            hugeicons=\"Chart03Icon\"\n            phosphor=\"ChartPieIcon\"\n            remixicon=\"RiPieChartLine\"\n          />\n          Pie\n        </>\n      ),\n      value: \"pie\",\n    },\n  ]\n  return (\n    <Example title=\"With Icons\">\n      <div className=\"flex flex-col gap-4\">\n        <Select items={items}>\n          <SelectTrigger size=\"sm\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Select items={items}>\n          <SelectTrigger size=\"default\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectWithGroups() {\n  const fruits = [\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n  ]\n  const vegetables = [\n    { label: \"Carrot\", value: \"carrot\" },\n    { label: \"Broccoli\", value: \"broccoli\" },\n    { label: \"Spinach\", value: \"spinach\" },\n  ]\n  const allItems = [\n    { label: \"Select a fruit\", value: null },\n    ...fruits,\n    ...vegetables,\n  ]\n  return (\n    <Example title=\"With Groups & Labels\">\n      <Select items={allItems}>\n        <SelectTrigger>\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            <SelectLabel>Fruits</SelectLabel>\n            {fruits.map((item) => (\n              <SelectItem key={item.value} value={item.value}>\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n          <SelectSeparator />\n          <SelectGroup>\n            <SelectLabel>Vegetables</SelectLabel>\n            {vegetables.map((item) => (\n              <SelectItem key={item.value} value={item.value}>\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectLargeList() {\n  const items = [\n    { label: \"Select an item\", value: null },\n    ...Array.from({ length: 100 }).map((_, i) => ({\n      label: `Item ${i}`,\n      value: `item-${i}`,\n    })),\n  ]\n  return (\n    <Example title=\"Large List\">\n      <Select items={items}>\n        <SelectTrigger>\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {items.map((item) => (\n              <SelectItem key={item.value} value={item.value}>\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectSizes() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n  ]\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-col gap-4\">\n        <Select items={items}>\n          <SelectTrigger size=\"sm\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Select items={items}>\n          <SelectTrigger size=\"default\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectWithButton() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n  ]\n  return (\n    <Example title=\"With Button\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Select items={items}>\n            <SelectTrigger size=\"sm\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {items.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <Button variant=\"outline\" size=\"sm\">\n            Submit\n          </Button>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Select items={items}>\n            <SelectTrigger>\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {items.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <Button variant=\"outline\">Submit</Button>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectItemAligned() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n    { label: \"Grapes\", value: \"grapes\", disabled: true },\n    { label: \"Pineapple\", value: \"pineapple\" },\n  ]\n  return (\n    <Example title=\"Item Aligned\">\n      <Select items={items}>\n        <SelectTrigger>\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent alignItemWithTrigger={true}>\n          <SelectGroup>\n            {items.map((item) => (\n              <SelectItem\n                key={item.value}\n                value={item.value}\n                disabled={item.disabled}\n              >\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectWithField() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n    { label: \"Grapes\", value: \"grapes\" },\n    { label: \"Pineapple\", value: \"pineapple\" },\n  ]\n  return (\n    <Example title=\"With Field\">\n      <Field>\n        <FieldLabel htmlFor=\"select-fruit\">Favorite Fruit</FieldLabel>\n        <Select items={items}>\n          <SelectTrigger id=\"select-fruit\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <FieldDescription>\n          Choose your favorite fruit from the list.\n        </FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction SelectInvalid() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n    { label: \"Grapes\", value: \"grapes\" },\n    { label: \"Pineapple\", value: \"pineapple\" },\n  ]\n  return (\n    <Example title=\"Invalid\">\n      <div className=\"flex flex-col gap-4\">\n        <Select items={items}>\n          <SelectTrigger aria-invalid=\"true\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"select-fruit-invalid\">Favorite Fruit</FieldLabel>\n          <Select items={items}>\n            <SelectTrigger id=\"select-fruit-invalid\" aria-invalid>\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {items.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <FieldError errors={[{ message: \"Please select a valid fruit.\" }]} />\n        </Field>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectInline() {\n  const items = [\n    { label: \"Filter\", value: null },\n    { label: \"All\", value: \"all\" },\n    { label: \"Active\", value: \"active\" },\n    { label: \"Inactive\", value: \"inactive\" },\n  ]\n  return (\n    <Example title=\"Inline with Input & NativeSelect\">\n      <div className=\"flex items-center gap-2\">\n        <Input placeholder=\"Search...\" className=\"flex-1\" />\n        <Select items={items}>\n          <SelectTrigger className=\"w-[140px]\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <NativeSelect className=\"w-[140px]\">\n          <NativeSelectOption value=\"\">Sort by</NativeSelectOption>\n          <NativeSelectOption value=\"name\">Name</NativeSelectOption>\n          <NativeSelectOption value=\"date\">Date</NativeSelectOption>\n          <NativeSelectOption value=\"status\">Status</NativeSelectOption>\n        </NativeSelect>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectDisabled() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n    { label: \"Grapes\", value: \"grapes\", disabled: true },\n    { label: \"Pineapple\", value: \"pineapple\" },\n  ]\n  return (\n    <Example title=\"Disabled\">\n      <Select items={items} disabled>\n        <SelectTrigger>\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {items.map((item) => (\n              <SelectItem\n                key={item.value}\n                value={item.value}\n                disabled={item.disabled}\n              >\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nconst plans = [\n  {\n    name: \"Starter\",\n    description: \"Perfect for individuals getting started.\",\n  },\n  {\n    name: \"Professional\",\n    description: \"Ideal for growing teams and businesses.\",\n  },\n  {\n    name: \"Enterprise\",\n    description: \"Advanced features for large organizations.\",\n  },\n]\n\nfunction SelectPlan() {\n  return (\n    <Example title=\"Subscription Plan\">\n      <Select\n        defaultValue={plans[0]}\n        itemToStringValue={(plan: (typeof plans)[number]) => plan.name}\n      >\n        <SelectTrigger className=\"h-auto! w-72\">\n          <SelectValue>\n            {(value: (typeof plans)[number]) => <SelectPlanItem plan={value} />}\n          </SelectValue>\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {plans.map((plan) => (\n              <SelectItem key={plan.name} value={plan}>\n                <SelectPlanItem plan={plan} />\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\n  return (\n    <Item size=\"xs\" className=\"w-full p-0\">\n      <ItemContent className=\"gap-0\">\n        <ItemTitle>{plan.name}</ItemTitle>\n        <ItemDescription className=\"text-xs\">\n          {plan.description}\n        </ItemDescription>\n      </ItemContent>\n    </Item>\n  )\n}\n\nfunction SelectMultiple() {\n  const items = [\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n    { label: \"Grapes\", value: \"grapes\" },\n    { label: \"Pineapple\", value: \"pineapple\" },\n    { label: \"Strawberry\", value: \"strawberry\" },\n    { label: \"Watermelon\", value: \"watermelon\" },\n  ]\n  return (\n    <Example title=\"Multiple Selection\">\n      <Select items={items} multiple defaultValue={[]}>\n        <SelectTrigger className=\"w-72\">\n          <SelectValue>\n            {(value: string[]) => {\n              if (value.length === 0) {\n                return \"Select fruits\"\n              }\n              if (value.length === 1) {\n                return items.find((item) => item.value === value[0])?.label\n              }\n              return `${value.length} fruits selected`\n            }}\n          </SelectValue>\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {items.map((item) => (\n              <SelectItem key={item.value} value={item.value}>\n                {item.label}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectInDialog() {\n  const items = [\n    { label: \"Select a fruit\", value: null },\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Blueberry\", value: \"blueberry\" },\n    { label: \"Grapes\", value: \"grapes\" },\n    { label: \"Pineapple\", value: \"pineapple\" },\n  ]\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger render={<Button variant=\"outline\" />}>\n          Open Dialog\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Select Example</DialogTitle>\n            <DialogDescription>\n              Use the select below to choose a fruit.\n            </DialogDescription>\n          </DialogHeader>\n          <Select items={items}>\n            <SelectTrigger>\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                {items.map((item) => (\n                  <SelectItem key={item.value} value={item.value}>\n                    {item.label}\n                  </SelectItem>\n                ))}\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/separator-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\n\nexport default function SeparatorExample() {\n  return (\n    <ExampleWrapper>\n      <SeparatorHorizontal />\n      <SeparatorVertical />\n      <SeparatorVerticalMenu />\n      <SeparatorInList />\n    </ExampleWrapper>\n  )\n}\n\nfunction SeparatorHorizontal() {\n  return (\n    <Example title=\"Horizontal\">\n      <div className=\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\">\n        <div className=\"flex flex-col gap-1\">\n          <div className=\"leading-none font-medium\">shadcn/ui</div>\n          <div className=\"text-muted-foreground\">\n            The Foundation for your Design System\n          </div>\n        </div>\n        <Separator />\n        <div>\n          A set of beautifully designed components that you can customize,\n          extend, and build on.\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SeparatorVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <div className=\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\">\n        <div>Blog</div>\n        <Separator orientation=\"vertical\" />\n        <div>Docs</div>\n        <Separator orientation=\"vertical\" />\n        <div>Source</div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SeparatorVerticalMenu() {\n  return (\n    <Example title=\"Vertical Menu\">\n      <div className=\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\">\n        <div className=\"flex flex-col gap-1\">\n          <span className=\"font-medium\">Settings</span>\n          <span className=\"text-xs text-muted-foreground\">\n            Manage preferences\n          </span>\n        </div>\n        <Separator orientation=\"vertical\" />\n        <div className=\"flex flex-col gap-1\">\n          <span className=\"font-medium\">Account</span>\n          <span className=\"text-xs text-muted-foreground\">\n            Profile & security\n          </span>\n        </div>\n        <Separator orientation=\"vertical\" />\n        <div className=\"flex flex-col gap-1\">\n          <span className=\"font-medium\">Help</span>\n          <span className=\"text-xs text-muted-foreground\">Support & docs</span>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SeparatorInList() {\n  return (\n    <Example title=\"In List\">\n      <div className=\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\">\n        <dl className=\"flex items-center justify-between\">\n          <dt>Item 1</dt>\n          <dd className=\"text-muted-foreground\">Value 1</dd>\n        </dl>\n        <Separator />\n        <dl className=\"flex items-center justify-between\">\n          <dt>Item 2</dt>\n          <dd className=\"text-muted-foreground\">Value 2</dd>\n        </dl>\n        <Separator />\n        <dl className=\"flex items-center justify-between\">\n          <dt>Item 3</dt>\n          <dd className=\"text-muted-foreground\">Value 3</dd>\n        </dl>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/sheet-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/registry/bases/base/ui/sheet\"\n\nexport default function SheetExample() {\n  return (\n    <ExampleWrapper>\n      <SheetWithForm />\n      <SheetNoCloseButton />\n      <SheetWithSides />\n    </ExampleWrapper>\n  )\n}\n\nfunction SheetWithForm() {\n  return (\n    <Example title=\"With Form\">\n      <Sheet>\n        <SheetTrigger render={<Button variant=\"outline\" />}>Open</SheetTrigger>\n        <SheetContent>\n          <SheetHeader>\n            <SheetTitle>Edit profile</SheetTitle>\n            <SheetDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </SheetDescription>\n          </SheetHeader>\n          <div className=\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\">\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"sheet-demo-name\">Name</FieldLabel>\n                <Input id=\"sheet-demo-name\" defaultValue=\"Pedro Duarte\" />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"sheet-demo-username\">Username</FieldLabel>\n                <Input id=\"sheet-demo-username\" defaultValue=\"@peduarte\" />\n              </Field>\n            </FieldGroup>\n          </div>\n          <SheetFooter>\n            <Button type=\"submit\">Save changes</Button>\n            <SheetClose render={<Button variant=\"outline\" />}>Close</SheetClose>\n          </SheetFooter>\n        </SheetContent>\n      </Sheet>\n    </Example>\n  )\n}\n\nfunction SheetNoCloseButton() {\n  return (\n    <Example title=\"No Close Button\">\n      <Sheet>\n        <SheetTrigger render={<Button variant=\"outline\" />}>\n          No Close Button\n        </SheetTrigger>\n        <SheetContent showCloseButton={false}>\n          <SheetHeader>\n            <SheetTitle>No Close Button</SheetTitle>\n            <SheetDescription>\n              This sheet doesn&apos;t have a close button in the top-right\n              corner. You can only close it using the button below.\n            </SheetDescription>\n          </SheetHeader>\n        </SheetContent>\n      </Sheet>\n    </Example>\n  )\n}\n\nconst SHEET_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nfunction SheetWithSides() {\n  return (\n    <Example title=\"Sides\">\n      <div className=\"flex flex-wrap gap-2\">\n        {SHEET_SIDES.map((side) => (\n          <Sheet key={side}>\n            <SheetTrigger\n              render={<Button variant=\"outline\" className=\"capitalize\" />}\n            >\n              {side}\n            </SheetTrigger>\n            <SheetContent\n              side={side}\n              className=\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\"\n            >\n              <SheetHeader>\n                <SheetTitle>Edit profile</SheetTitle>\n                <SheetDescription>\n                  Make changes to your profile here. Click save when you&apos;re\n                  done.\n                </SheetDescription>\n              </SheetHeader>\n              <div className=\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\">\n                {Array.from({ length: 10 }).map((_, index) => (\n                  <p\n                    key={index}\n                    className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n                  >\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                    do eiusmod tempor incididunt ut labore et dolore magna\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\n                    Duis aute irure dolor in reprehenderit in voluptate velit\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\n                    occaecat cupidatat non proident, sunt in culpa qui officia\n                    deserunt mollit anim id est laborum.\n                  </p>\n                ))}\n              </div>\n              <SheetFooter>\n                <Button type=\"submit\">Save changes</Button>\n                <SheetClose render={<Button variant=\"outline\" />}>\n                  Cancel\n                </SheetClose>\n              </SheetFooter>\n            </SheetContent>\n          </Sheet>\n        ))}\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/sidebar-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SidebarExample() {\n  const data = {\n    versions: [\"1.0.1\", \"1.1.0-alpha\", \"2.0.0-beta1\"],\n    navMain: [\n      {\n        title: \"Getting Started\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Installation\",\n            url: \"#\",\n          },\n          {\n            title: \"Project Structure\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Build Your Application\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Routing\",\n            url: \"#\",\n          },\n          {\n            title: \"Data Fetching\",\n            url: \"#\",\n            isActive: true,\n          },\n          {\n            title: \"Rendering\",\n            url: \"#\",\n          },\n          {\n            title: \"Caching\",\n            url: \"#\",\n          },\n          {\n            title: \"Styling\",\n            url: \"#\",\n          },\n          {\n            title: \"Optimizing\",\n            url: \"#\",\n          },\n          {\n            title: \"Configuring\",\n            url: \"#\",\n          },\n          {\n            title: \"Testing\",\n            url: \"#\",\n          },\n          {\n            title: \"Authentication\",\n            url: \"#\",\n          },\n          {\n            title: \"Deploying\",\n            url: \"#\",\n          },\n          {\n            title: \"Upgrading\",\n            url: \"#\",\n          },\n          {\n            title: \"Examples\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"API Reference\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Components\",\n            url: \"#\",\n          },\n          {\n            title: \"File Conventions\",\n            url: \"#\",\n          },\n          {\n            title: \"Functions\",\n            url: \"#\",\n          },\n          {\n            title: \"next.config.js Options\",\n            url: \"#\",\n          },\n          {\n            title: \"CLI\",\n            url: \"#\",\n          },\n          {\n            title: \"Edge Runtime\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Architecture\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Accessibility\",\n            url: \"#\",\n          },\n          {\n            title: \"Fast Refresh\",\n            url: \"#\",\n          },\n          {\n            title: \"Next.js Compiler\",\n            url: \"#\",\n          },\n          {\n            title: \"Supported Browsers\",\n            url: \"#\",\n          },\n          {\n            title: \"Turbopack\",\n            url: \"#\",\n          },\n        ],\n      },\n    ],\n  }\n\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\n\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <SidebarMenuButton\n                      size=\"lg\"\n                      className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n                    />\n                  }\n                >\n                  <Item className=\"p-0\" size=\"xs\">\n                    <ItemContent>\n                      <ItemTitle className=\"text-sm\">Documentation</ItemTitle>\n                      <ItemDescription>v{selectedVersion}</ItemDescription>\n                    </ItemContent>\n                    <ItemActions>\n                      <IconPlaceholder\n                        lucide=\"ChevronsUpDownIcon\"\n                        tabler=\"IconSelector\"\n                        hugeicons=\"UnfoldMoreIcon\"\n                        phosphor=\"CaretUpDownIcon\"\n                        remixicon=\"RiArrowUpDownLine\"\n                      />\n                    </ItemActions>\n                  </Item>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent>\n                  {data.versions.map((version) => (\n                    <DropdownMenuItem\n                      key={version}\n                      onSelect={() => setSelectedVersion(version)}\n                    >\n                      v{version}{\" \"}\n                      {version === selectedVersion && (\n                        <IconPlaceholder\n                          lucide=\"CheckIcon\"\n                          tabler=\"IconCheck\"\n                          hugeicons=\"Tick02Icon\"\n                          phosphor=\"CheckIcon\"\n                          remixicon=\"RiCheckLine\"\n                          className=\"ml-auto\"\n                        />\n                      )}\n                    </DropdownMenuItem>\n                  ))}\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n          <form>\n            <SidebarGroup className=\"py-0\">\n              <SidebarGroupContent className=\"relative\">\n                <Label htmlFor=\"search\" className=\"sr-only\">\n                  Search\n                </Label>\n                <SidebarInput\n                  id=\"search\"\n                  placeholder=\"Search the docs...\"\n                  className=\"pl-8\"\n                />\n                <IconPlaceholder\n                  lucide=\"SearchIcon\"\n                  tabler=\"IconSearch\"\n                  hugeicons=\"SearchIcon\"\n                  phosphor=\"MagnifyingGlassIcon\"\n                  remixicon=\"RiSearchLine\"\n                  className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n                />\n              </SidebarGroupContent>\n            </SidebarGroup>\n          </form>\n        </SidebarHeader>\n        <SidebarContent>\n          {data.navMain.map((item) => (\n            <SidebarGroup key={item.title}>\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\n              <SidebarGroupContent>\n                <SidebarMenu>\n                  {item.items.map((subItem) => (\n                    <SidebarMenuItem key={subItem.title}>\n                      <SidebarMenuButton\n                        render={<a href={subItem.url} />}\n                        isActive={subItem.isActive}\n                      >\n                        {subItem.title}\n                      </SidebarMenuButton>\n                    </SidebarMenuItem>\n                  ))}\n                </SidebarMenu>\n              </SidebarGroupContent>\n            </SidebarGroup>\n          ))}\n        </SidebarContent>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/sidebar-floating-example.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Field } from \"@/registry/bases/base/ui/field\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SidebarFloatingExample() {\n  const data = {\n    navMain: [\n      {\n        title: \"Getting Started\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Installation\",\n            url: \"#\",\n          },\n          {\n            title: \"Project Structure\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Build Your Application\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Routing\",\n            url: \"#\",\n          },\n          {\n            title: \"Data Fetching\",\n            url: \"#\",\n            isActive: true,\n          },\n          {\n            title: \"Rendering\",\n            url: \"#\",\n          },\n          {\n            title: \"Caching\",\n            url: \"#\",\n          },\n          {\n            title: \"Styling\",\n            url: \"#\",\n          },\n          {\n            title: \"Optimizing\",\n            url: \"#\",\n          },\n          {\n            title: \"Configuring\",\n            url: \"#\",\n          },\n          {\n            title: \"Testing\",\n            url: \"#\",\n          },\n          {\n            title: \"Authentication\",\n            url: \"#\",\n          },\n          {\n            title: \"Deploying\",\n            url: \"#\",\n          },\n          {\n            title: \"Upgrading\",\n            url: \"#\",\n          },\n          {\n            title: \"Examples\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"API Reference\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Components\",\n            url: \"#\",\n          },\n          {\n            title: \"File Conventions\",\n            url: \"#\",\n          },\n          {\n            title: \"Functions\",\n            url: \"#\",\n          },\n          {\n            title: \"next.config.js Options\",\n            url: \"#\",\n          },\n          {\n            title: \"CLI\",\n            url: \"#\",\n          },\n          {\n            title: \"Edge Runtime\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Architecture\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Accessibility\",\n            url: \"#\",\n          },\n          {\n            title: \"Fast Refresh\",\n            url: \"#\",\n          },\n          {\n            title: \"Next.js Compiler\",\n            url: \"#\",\n          },\n          {\n            title: \"Supported Browsers\",\n            url: \"#\",\n          },\n          {\n            title: \"Turbopack\",\n            url: \"#\",\n          },\n        ],\n      },\n    ],\n  }\n\n  return (\n    <SidebarProvider className=\"bg-background\">\n      <Sidebar variant=\"floating\">\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <SidebarMenuButton size=\"lg\" render={<a href=\"#\" />}>\n                <Item className=\"p-0\" size=\"xs\">\n                  <ItemContent>\n                    <ItemTitle className=\"text-sm\">Documentation</ItemTitle>\n                    <ItemDescription>v1.0.0</ItemDescription>\n                  </ItemContent>\n                </Item>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <DropdownMenu key={item.title}>\n                  <SidebarMenuItem>\n                    <DropdownMenuTrigger\n                      render={\n                        <SidebarMenuButton className=\"data-popup-open:bg-sidebar-accent data-popup-open:text-sidebar-accent-foreground\" />\n                      }\n                    >\n                      {item.title}{\" \"}\n                      <IconPlaceholder\n                        lucide=\"MoreHorizontalIcon\"\n                        tabler=\"IconDots\"\n                        hugeicons=\"MoreHorizontalCircle01Icon\"\n                        phosphor=\"DotsThreeOutlineIcon\"\n                        remixicon=\"RiMoreLine\"\n                        className=\"ml-auto\"\n                      />\n                    </DropdownMenuTrigger>\n                    {item.items?.length ? (\n                      <DropdownMenuContent side=\"right\" align=\"start\">\n                        <DropdownMenuGroup>\n                          {item.items.map((subItem) => (\n                            <DropdownMenuItem\n                              render={<a href={subItem.url} />}\n                              key={subItem.title}\n                            >\n                              {subItem.title}\n                            </DropdownMenuItem>\n                          ))}\n                        </DropdownMenuGroup>\n                      </DropdownMenuContent>\n                    ) : null}\n                  </SidebarMenuItem>\n                </DropdownMenu>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <SidebarGroup>\n            <Card size=\"sm\" className=\"-mx-2\">\n              <CardHeader>\n                <CardTitle className=\"text-sm\">\n                  Subscribe to our newsletter\n                </CardTitle>\n                <CardDescription>\n                  Opt-in to receive updates and news about the sidebar.\n                </CardDescription>\n              </CardHeader>\n              <CardContent>\n                <form>\n                  <Field>\n                    <SidebarInput type=\"email\" placeholder=\"Email\" />\n                    <Button\n                      className=\"w-full bg-sidebar-primary text-sidebar-primary-foreground\"\n                      size=\"sm\"\n                    >\n                      Subscribe\n                    </Button>\n                  </Field>\n                </form>\n              </CardContent>\n            </Card>\n          </SidebarGroup>\n        </SidebarFooter>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/sidebar-icon-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SidebarIconExample() {\n  const data = {\n    user: {\n      name: \"shadcn\",\n      email: \"m@example.com\",\n      avatar: \"/avatars/shadcn.jpg\",\n    },\n    teams: [\n      {\n        name: \"Acme Inc\",\n        plan: \"Enterprise\",\n      },\n      {\n        name: \"Acme Corp.\",\n        plan: \"Startup\",\n      },\n      {\n        name: \"Evil Corp.\",\n        plan: \"Free\",\n      },\n    ],\n    navMain: [\n      {\n        title: \"Playground\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"TerminalSquareIcon\"\n            tabler=\"IconTerminal2\"\n            hugeicons=\"ComputerTerminalIcon\"\n            phosphor=\"TerminalIcon\"\n            remixicon=\"RiTerminalBoxLine\"\n          />\n        ),\n        isActive: true,\n        items: [\n          {\n            title: \"History\",\n            url: \"#\",\n          },\n          {\n            title: \"Starred\",\n            url: \"#\",\n          },\n          {\n            title: \"Settings\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Models\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"BotIcon\"\n            tabler=\"IconRobot\"\n            hugeicons=\"RoboticIcon\"\n            phosphor=\"RobotIcon\"\n            remixicon=\"RiRobotLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"Genesis\",\n            url: \"#\",\n          },\n          {\n            title: \"Explorer\",\n            url: \"#\",\n          },\n          {\n            title: \"Quantum\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Documentation\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"BookOpen\"\n            tabler=\"IconBook\"\n            hugeicons=\"BookOpen02Icon\"\n            phosphor=\"BookOpenIcon\"\n            remixicon=\"RiBookOpenLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"Introduction\",\n            url: \"#\",\n          },\n          {\n            title: \"Get Started\",\n            url: \"#\",\n          },\n          {\n            title: \"Tutorials\",\n            url: \"#\",\n          },\n          {\n            title: \"Changelog\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Settings\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"Settings2Icon\"\n            tabler=\"IconSettings\"\n            hugeicons=\"Settings05Icon\"\n            phosphor=\"GearIcon\"\n            remixicon=\"RiSettingsLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"General\",\n            url: \"#\",\n          },\n          {\n            title: \"Team\",\n            url: \"#\",\n          },\n          {\n            title: \"Billing\",\n            url: \"#\",\n          },\n          {\n            title: \"Limits\",\n            url: \"#\",\n          },\n        ],\n      },\n    ],\n    projects: [\n      {\n        name: \"Design Engineering\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"FrameIcon\"\n            tabler=\"IconFrame\"\n            hugeicons=\"CropIcon\"\n            phosphor=\"CropIcon\"\n            remixicon=\"RiCropLine\"\n          />\n        ),\n      },\n      {\n        name: \"Sales & Marketing\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"PieChartIcon\"\n            tabler=\"IconChartPie\"\n            hugeicons=\"PieChartIcon\"\n            phosphor=\"ChartPieIcon\"\n            remixicon=\"RiPieChartLine\"\n          />\n        ),\n      },\n      {\n        name: \"Travel\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"MapIcon\"\n            tabler=\"IconMap\"\n            hugeicons=\"MapsIcon\"\n            phosphor=\"MapTrifoldIcon\"\n            remixicon=\"RiMapLine\"\n          />\n        ),\n      },\n    ],\n  }\n\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\n\n  return (\n    <SidebarProvider>\n      <Sidebar collapsible=\"icon\">\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <SidebarMenuButton\n                      size=\"lg\"\n                      className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n                    />\n                  }\n                >\n                  <Button\n                    size=\"icon-sm\"\n                    render={<span />}\n                    nativeButton={false}\n                    className=\"size-8\"\n                  >\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      viewBox=\"0 0 256 256\"\n                    >\n                      <rect width=\"256\" height=\"256\" fill=\"none\"></rect>\n                      <line\n                        x1=\"208\"\n                        y1=\"128\"\n                        x2=\"128\"\n                        y2=\"208\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        strokeLinecap=\"round\"\n                        strokeLinejoin=\"round\"\n                        strokeWidth=\"32\"\n                      ></line>\n                      <line\n                        x1=\"192\"\n                        y1=\"40\"\n                        x2=\"40\"\n                        y2=\"192\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        strokeLinecap=\"round\"\n                        strokeLinejoin=\"round\"\n                        strokeWidth=\"32\"\n                      ></line>\n                    </svg>\n                  </Button>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">\n                      {activeTeam.name}\n                    </span>\n                    <span className=\"truncate text-xs\">{activeTeam.plan}</span>\n                  </div>\n                  <IconPlaceholder\n                    lucide=\"ChevronsUpDownIcon\"\n                    tabler=\"IconSelector\"\n                    hugeicons=\"UnfoldMoreIcon\"\n                    phosphor=\"CaretUpDownIcon\"\n                    remixicon=\"RiArrowUpDownLine\"\n                  />\n                </DropdownMenuTrigger>\n                <DropdownMenuContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\n                  </DropdownMenuGroup>\n                  <DropdownMenuGroup>\n                    {data.teams.map((team) => (\n                      <DropdownMenuItem\n                        key={team.name}\n                        onClick={() => setActiveTeam(team)}\n                      >\n                        {team.name}\n                      </DropdownMenuItem>\n                    ))}\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <Collapsible\n                  key={item.title}\n                  defaultOpen={item.isActive}\n                  className=\"group/collapsible\"\n                >\n                  <SidebarMenuItem>\n                    <CollapsibleTrigger\n                      render={<SidebarMenuButton tooltip={item.title} />}\n                    >\n                      {item.icon}\n                      <span>{item.title}</span>\n                      <IconPlaceholder\n                        lucide=\"ChevronRightIcon\"\n                        tabler=\"IconChevronRight\"\n                        hugeicons=\"ArrowRight01Icon\"\n                        phosphor=\"CaretRightIcon\"\n                        remixicon=\"RiArrowRightSLine\"\n                        className=\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\"\n                      />\n                    </CollapsibleTrigger>\n                    <CollapsibleContent>\n                      <SidebarMenuSub>\n                        {item.items?.map((subItem) => (\n                          <SidebarMenuSubItem key={subItem.title}>\n                            <SidebarMenuSubButton\n                              render={<a href={subItem.url} />}\n                            >\n                              {subItem.title}\n                            </SidebarMenuSubButton>\n                          </SidebarMenuSubItem>\n                        ))}\n                      </SidebarMenuSub>\n                    </CollapsibleContent>\n                  </SidebarMenuItem>\n                </Collapsible>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n          <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarMenu>\n              {data.projects.map((item) => (\n                <SidebarMenuItem key={item.name}>\n                  <SidebarMenuButton render={<a href={item.url} />}>\n                    {item.icon}\n                    {item.name}\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <SidebarMenuButton\n                      size=\"lg\"\n                      className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n                    />\n                  }\n                >\n                  <Avatar>\n                    <AvatarImage src={data.user.avatar} alt={data.user.name} />\n                    <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                  </Avatar>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">\n                      {data.user.name}\n                    </span>\n                    <span className=\"truncate text-xs\">{data.user.email}</span>\n                  </div>\n                  <IconPlaceholder\n                    lucide=\"ChevronsUpDownIcon\"\n                    tabler=\"IconSelector\"\n                    hugeicons=\"UnfoldMoreIcon\"\n                    phosphor=\"CaretUpDownIcon\"\n                    remixicon=\"RiArrowUpDownLine\"\n                  />\n                </DropdownMenuTrigger>\n                <DropdownMenuContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>\n                      <Item size=\"xs\">\n                        <ItemMedia>\n                          <Avatar>\n                            <AvatarImage\n                              src={data.user.avatar}\n                              alt={data.user.name}\n                            />\n                            <AvatarFallback>CN</AvatarFallback>\n                          </Avatar>\n                        </ItemMedia>\n                        <ItemContent>\n                          <ItemTitle>{data.user.name}</ItemTitle>\n                          <ItemDescription> {data.user.email}</ItemDescription>\n                        </ItemContent>\n                      </Item>\n                    </DropdownMenuLabel>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>Account</DropdownMenuItem>\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarFooter>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/sidebar-inset-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"@/registry/bases/base/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SidebarInsetExample() {\n  const data = {\n    navMain: [\n      {\n        title: \"Dashboard\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"HomeIcon\"\n            tabler=\"IconHome\"\n            hugeicons=\"Home01Icon\"\n            phosphor=\"HouseIcon\"\n            remixicon=\"RiHomeLine\"\n          />\n        ),\n        isActive: true,\n        items: [\n          {\n            title: \"Overview\",\n            url: \"#\",\n          },\n          {\n            title: \"Analytics\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Analytics\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"ChartLineIcon\"\n            tabler=\"IconChartLine\"\n            hugeicons=\"ChartIcon\"\n            phosphor=\"ChartLineIcon\"\n            remixicon=\"RiLineChartLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"Reports\",\n            url: \"#\",\n          },\n          {\n            title: \"Metrics\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Orders\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"ShoppingBagIcon\"\n            tabler=\"IconShoppingBag\"\n            hugeicons=\"ShoppingBag01Icon\"\n            phosphor=\"BagIcon\"\n            remixicon=\"RiShoppingBagLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"All Orders\",\n            url: \"#\",\n          },\n          {\n            title: \"Pending\",\n            url: \"#\",\n          },\n          {\n            title: \"Completed\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Products\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"ShoppingCartIcon\"\n            tabler=\"IconShoppingCart\"\n            hugeicons=\"ShoppingCart01Icon\"\n            phosphor=\"ShoppingCartIcon\"\n            remixicon=\"RiShoppingCartLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"All Products\",\n            url: \"#\",\n          },\n          {\n            title: \"Categories\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Invoices\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"FileIcon\"\n            tabler=\"IconFile\"\n            hugeicons=\"File01Icon\"\n            phosphor=\"FileIcon\"\n            remixicon=\"RiFileLine\"\n          />\n        ),\n      },\n      {\n        title: \"Customers\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"UserIcon\"\n            tabler=\"IconUser\"\n            hugeicons=\"UserIcon\"\n            phosphor=\"UserIcon\"\n            remixicon=\"RiUserLine\"\n          />\n        ),\n      },\n      {\n        title: \"Settings\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"Settings2Icon\"\n            tabler=\"IconSettings\"\n            hugeicons=\"Settings05Icon\"\n            phosphor=\"GearIcon\"\n            remixicon=\"RiSettingsLine\"\n          />\n        ),\n      },\n    ],\n    navSecondary: [\n      {\n        title: \"Support\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"LifeBuoy\"\n            tabler=\"IconLifebuoy\"\n            hugeicons=\"ChartRingIcon\"\n            phosphor=\"LifebuoyIcon\"\n            remixicon=\"RiLifebuoyLine\"\n          />\n        ),\n      },\n      {\n        title: \"Feedback\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"Send\"\n            tabler=\"IconSend\"\n            hugeicons=\"SentIcon\"\n            phosphor=\"PaperPlaneTiltIcon\"\n            remixicon=\"RiSendPlaneLine\"\n          />\n        ),\n      },\n    ],\n  }\n\n  return (\n    <SidebarProvider>\n      <Sidebar variant=\"inset\">\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <Collapsible\n                  key={item.title}\n                  defaultOpen={item.isActive}\n                  render={<SidebarMenuItem />}\n                >\n                  <SidebarMenuButton\n                    render={<a href={item.url} />}\n                    isActive={item.isActive}\n                  >\n                    {item.icon}\n                    <span>{item.title}</span>\n                  </SidebarMenuButton>\n                  {item.items?.length ? (\n                    <>\n                      <CollapsibleTrigger\n                        render={\n                          <SidebarMenuAction className=\"data-open:rotate-90\" />\n                        }\n                      >\n                        <IconPlaceholder\n                          lucide=\"ChevronRightIcon\"\n                          tabler=\"IconChevronRight\"\n                          hugeicons=\"ArrowRight01Icon\"\n                          phosphor=\"CaretRightIcon\"\n                          remixicon=\"RiArrowRightSLine\"\n                        />\n                        <span className=\"sr-only\">Toggle</span>\n                      </CollapsibleTrigger>\n                      <CollapsibleContent>\n                        <SidebarMenuSub>\n                          {item.items.map((subItem) => (\n                            <SidebarMenuSubItem key={subItem.title}>\n                              <SidebarMenuSubButton\n                                render={<a href={subItem.url} />}\n                              >\n                                {subItem.title}\n                              </SidebarMenuSubButton>\n                            </SidebarMenuSubItem>\n                          ))}\n                        </SidebarMenuSub>\n                      </CollapsibleContent>\n                    </>\n                  ) : null}\n                </Collapsible>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n          <SidebarGroup className=\"mt-auto\">\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {data.navSecondary.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton render={<a href={item.url} />} size=\"sm\">\n                      {item.icon}\n                      <span>{item.title}</span>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/skeleton-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Card, CardContent, CardHeader } from \"@/registry/bases/base/ui/card\"\nimport { Skeleton } from \"@/registry/bases/base/ui/skeleton\"\n\nexport default function SkeletonExample() {\n  return (\n    <ExampleWrapper>\n      <SkeletonAvatar />\n      <SkeletonCard />\n      <SkeletonText />\n      <SkeletonForm />\n      <SkeletonTable />\n    </ExampleWrapper>\n  )\n}\n\nfunction SkeletonAvatar() {\n  return (\n    <Example title=\"Avatar\">\n      <div className=\"flex w-full items-center gap-4\">\n        <Skeleton className=\"size-10 shrink-0 rounded-full\" />\n        <div className=\"grid gap-2\">\n          <Skeleton className=\"h-4 w-[150px]\" />\n          <Skeleton className=\"h-4 w-[100px]\" />\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SkeletonCard() {\n  return (\n    <Example title=\"Card\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <Skeleton className=\"h-4 w-2/3\" />\n          <Skeleton className=\"h-4 w-1/2\" />\n        </CardHeader>\n        <CardContent>\n          <Skeleton className=\"aspect-square w-full\" />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction SkeletonText() {\n  return (\n    <Example title=\"Text\">\n      <div className=\"flex w-full flex-col gap-2\">\n        <Skeleton className=\"h-4 w-full\" />\n        <Skeleton className=\"h-4 w-full\" />\n        <Skeleton className=\"h-4 w-3/4\" />\n      </div>\n    </Example>\n  )\n}\n\nfunction SkeletonForm() {\n  return (\n    <Example title=\"Form\">\n      <div className=\"flex w-full flex-col gap-7\">\n        <div className=\"flex flex-col gap-3\">\n          <Skeleton className=\"h-4 w-20\" />\n          <Skeleton className=\"h-10 w-full\" />\n        </div>\n        <div className=\"flex flex-col gap-3\">\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-10 w-full\" />\n        </div>\n        <Skeleton className=\"h-9 w-24\" />\n      </div>\n    </Example>\n  )\n}\n\nfunction SkeletonTable() {\n  return (\n    <Example title=\"Table\">\n      <div className=\"flex w-full flex-col gap-2\">\n        <div className=\"flex gap-4\">\n          <Skeleton className=\"h-4 flex-1\" />\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-4 w-20\" />\n        </div>\n        <div className=\"flex gap-4\">\n          <Skeleton className=\"h-4 flex-1\" />\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-4 w-20\" />\n        </div>\n        <div className=\"flex gap-4\">\n          <Skeleton className=\"h-4 flex-1\" />\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-4 w-20\" />\n        </div>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/slider-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport { Slider } from \"@/registry/bases/base/ui/slider\"\n\nexport default function SliderExample() {\n  return (\n    <ExampleWrapper>\n      <SliderBasic />\n      <SliderRange />\n      <SliderMultiple />\n      <SliderVertical />\n      <SliderControlled />\n      <SliderDisabled />\n    </ExampleWrapper>\n  )\n}\n\nfunction SliderBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Slider defaultValue={50} max={100} step={1} />\n    </Example>\n  )\n}\n\nfunction SliderRange() {\n  return (\n    <Example title=\"Range\">\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\n    </Example>\n  )\n}\n\nfunction SliderMultiple() {\n  return (\n    <Example title=\"Multiple Thumbs\">\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\n    </Example>\n  )\n}\n\nfunction SliderVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <div className=\"flex items-center gap-6\">\n        <Slider\n          defaultValue={[50]}\n          max={100}\n          step={1}\n          orientation=\"vertical\"\n          className=\"h-40\"\n        />\n        <Slider\n          defaultValue={[25]}\n          max={100}\n          step={1}\n          orientation=\"vertical\"\n          className=\"h-40\"\n        />\n      </div>\n    </Example>\n  )\n}\n\nfunction SliderControlled() {\n  const [value, setValue] = React.useState([0.3, 0.7])\n\n  return (\n    <Example title=\"Controlled\">\n      <div className=\"grid w-full gap-3\">\n        <div className=\"flex items-center justify-between gap-2\">\n          <Label htmlFor=\"slider-demo-temperature\">Temperature</Label>\n          <span className=\"text-sm text-muted-foreground\">\n            {value.join(\", \")}\n          </span>\n        </div>\n        <Slider\n          id=\"slider-demo-temperature\"\n          value={value}\n          onValueChange={(value) => setValue(value as number[])}\n          min={0}\n          max={1}\n          step={0.1}\n        />\n      </div>\n    </Example>\n  )\n}\n\nfunction SliderDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/sonner-example.tsx",
    "content": "\"use client\"\n\nimport { toast } from \"sonner\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\n\nexport default function SonnerExample() {\n  return (\n    <ExampleWrapper>\n      <SonnerBasic />\n      <SonnerWithDescription />\n    </ExampleWrapper>\n  )\n}\n\nfunction SonnerBasic() {\n  return (\n    <Example title=\"Basic\" className=\"items-center justify-center\">\n      <Button\n        onClick={() => toast(\"Event has been created\")}\n        variant=\"outline\"\n        className=\"w-fit\"\n      >\n        Show Toast\n      </Button>\n    </Example>\n  )\n}\n\nfunction SonnerWithDescription() {\n  return (\n    <Example title=\"With Description\" className=\"items-center justify-center\">\n      <Button\n        onClick={() =>\n          toast(\"Event has been created\", {\n            description: \"Monday, January 3rd at 6:00pm\",\n          })\n        }\n        variant=\"outline\"\n        className=\"w-fit\"\n      >\n        Show Toast\n      </Button>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/spinner-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\nimport { Field, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { Spinner } from \"@/registry/bases/base/ui/spinner\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SpinnerExample() {\n  return (\n    <ExampleWrapper>\n      <SpinnerBasic />\n      <SpinnerInButtons />\n      <SpinnerInBadges />\n      <SpinnerInInputGroup />\n      <SpinnerInEmpty />\n    </ExampleWrapper>\n  )\n}\n\nfunction SpinnerBasic() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex items-center gap-6\">\n        <Spinner />\n        <Spinner className=\"size-6\" />\n      </div>\n    </Example>\n  )\n}\n\nfunction SpinnerInButtons() {\n  return (\n    <Example title=\"In Buttons\">\n      <div className=\"flex flex-wrap items-center gap-4\">\n        <Button>\n          <Spinner data-icon=\"inline-start\" /> Submit\n        </Button>\n        <Button disabled>\n          <Spinner data-icon=\"inline-start\" /> Disabled\n        </Button>\n        <Button variant=\"outline\" disabled>\n          <Spinner data-icon=\"inline-start\" /> Outline\n        </Button>\n        <Button variant=\"outline\" size=\"icon\" disabled>\n          <Spinner data-icon=\"inline-start\" />\n          <span className=\"sr-only\">Loading...</span>\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction SpinnerInBadges() {\n  return (\n    <Example title=\"In Badges\" className=\"items-center justify-center\">\n      <div className=\"flex flex-wrap items-center justify-center gap-4\">\n        <Badge>\n          <Spinner data-icon=\"inline-start\" />\n          Badge\n        </Badge>\n        <Badge variant=\"secondary\">\n          <Spinner data-icon=\"inline-start\" />\n          Badge\n        </Badge>\n        <Badge variant=\"destructive\">\n          <Spinner data-icon=\"inline-start\" />\n          Badge\n        </Badge>\n        <Badge variant=\"outline\">\n          <Spinner data-icon=\"inline-start\" />\n          Badge\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction SpinnerInInputGroup() {\n  return (\n    <Example title=\"In Input Group\">\n      <Field>\n        <FieldLabel htmlFor=\"input-group-spinner\">Input Group</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-group-spinner\" />\n          <InputGroupAddon>\n            <Spinner />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </Example>\n  )\n}\n\nfunction SpinnerInEmpty() {\n  return (\n    <Example title=\"In Empty State\" containerClassName=\"lg:col-span-full\">\n      <Empty className=\"min-h-[300px]\">\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <Spinner />\n          </EmptyMedia>\n          <EmptyTitle>No projects yet</EmptyTitle>\n          <EmptyDescription>\n            You haven&apos;t created any projects yet. Get started by creating\n            your first project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <div className=\"flex gap-2\">\n            <Button render={<a href=\"#\" />} nativeButton={false}>\n              Create project\n            </Button>\n            <Button variant=\"outline\">Import project</Button>\n          </div>\n          <Button\n            variant=\"link\"\n            render={<a href=\"#\" />}\n            nativeButton={false}\n            className=\"text-muted-foreground\"\n          >\n            Learn more{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight02Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n            />\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/switch-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n  FieldTitle,\n} from \"@/registry/bases/base/ui/field\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport { Switch } from \"@/registry/bases/base/ui/switch\"\n\nexport default function SwitchExample() {\n  return (\n    <ExampleWrapper>\n      <SwitchBasic />\n      <SwitchWithDescription />\n      <SwitchDisabled />\n      <SwitchSizes />\n    </ExampleWrapper>\n  )\n}\n\nfunction SwitchBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Field orientation=\"horizontal\">\n        <Switch id=\"switch-basic\" />\n        <FieldLabel htmlFor=\"switch-basic\">Airplane Mode</FieldLabel>\n      </Field>\n    </Example>\n  )\n}\n\nfunction SwitchWithLabel() {\n  return (\n    <Example title=\"With Label\">\n      <div className=\"flex items-center gap-2\">\n        <Switch id=\"switch-bluetooth\" defaultChecked />\n        <Label htmlFor=\"switch-bluetooth\">Bluetooth</Label>\n      </div>\n    </Example>\n  )\n}\n\nfunction SwitchWithDescription() {\n  return (\n    <Example title=\"With Description\">\n      <FieldLabel htmlFor=\"switch-focus-mode\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Share across devices</FieldTitle>\n            <FieldDescription>\n              Focus is shared across devices, and turns off when you leave the\n              app.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-focus-mode\" />\n        </Field>\n      </FieldLabel>\n    </Example>\n  )\n}\n\nfunction SwitchDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <div className=\"flex flex-col gap-12\">\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-disabled-unchecked\" disabled />\n          <Label htmlFor=\"switch-disabled-unchecked\">\n            Disabled (Unchecked)\n          </Label>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-disabled-checked\" defaultChecked disabled />\n          <Label htmlFor=\"switch-disabled-checked\">Disabled (Checked)</Label>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SwitchSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-col gap-12\">\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-size-sm\" size=\"sm\" />\n          <Label htmlFor=\"switch-size-sm\">Small</Label>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-size-default\" size=\"default\" />\n          <Label htmlFor=\"switch-size-default\">Default</Label>\n        </div>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/table-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/bases/base/ui/table\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$250.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$150.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$350.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$450.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$550.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$200.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$300.00\",\n    paymentMethod: \"Credit Card\",\n  },\n]\n\nexport default function TableExample() {\n  return (\n    <ExampleWrapper>\n      <TableBasic />\n      <TableWithFooter />\n      <TableSimple />\n      <TableWithBadges />\n      <TableWithActions />\n      <TableWithSelect />\n      <TableWithInput />\n    </ExampleWrapper>\n  )\n}\n\nfunction TableBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Table>\n        <TableCaption>A list of your recent invoices.</TableCaption>\n        <TableHeader>\n          <TableRow>\n            <TableHead className=\"w-[100px]\">Invoice</TableHead>\n            <TableHead>Status</TableHead>\n            <TableHead>Method</TableHead>\n            <TableHead className=\"text-right\">Amount</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {invoices.slice(0, 3).map((invoice) => (\n            <TableRow key={invoice.invoice}>\n              <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n              <TableCell>{invoice.paymentStatus}</TableCell>\n              <TableCell>{invoice.paymentMethod}</TableCell>\n              <TableCell className=\"text-right\">\n                {invoice.totalAmount}\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithFooter() {\n  return (\n    <Example title=\"With Footer\">\n      <Table>\n        <TableCaption>A list of your recent invoices.</TableCaption>\n        <TableHeader>\n          <TableRow>\n            <TableHead className=\"w-[100px]\">Invoice</TableHead>\n            <TableHead>Status</TableHead>\n            <TableHead>Method</TableHead>\n            <TableHead className=\"text-right\">Amount</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {invoices.slice(0, 3).map((invoice) => (\n            <TableRow key={invoice.invoice}>\n              <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n              <TableCell>{invoice.paymentStatus}</TableCell>\n              <TableCell>{invoice.paymentMethod}</TableCell>\n              <TableCell className=\"text-right\">\n                {invoice.totalAmount}\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n        <TableFooter>\n          <TableRow>\n            <TableCell colSpan={3}>Total</TableCell>\n            <TableCell className=\"text-right\">$2,500.00</TableCell>\n          </TableRow>\n        </TableFooter>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableSimple() {\n  return (\n    <Example title=\"Simple\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Name</TableHead>\n            <TableHead>Email</TableHead>\n            <TableHead className=\"text-right\">Role</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Sarah Chen</TableCell>\n            <TableCell>sarah.chen@acme.com</TableCell>\n            <TableCell className=\"text-right\">Admin</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Marc Rodriguez</TableCell>\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\n            <TableCell className=\"text-right\">User</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Emily Watson</TableCell>\n            <TableCell>emily.watson@acme.com</TableCell>\n            <TableCell className=\"text-right\">User</TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithBadges() {\n  return (\n    <Example title=\"With Badges\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Task</TableHead>\n            <TableHead>Status</TableHead>\n            <TableHead className=\"text-right\">Priority</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Design homepage</TableCell>\n            <TableCell>\n              <span className=\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\">\n                Completed\n              </span>\n            </TableCell>\n            <TableCell className=\"text-right\">\n              <span className=\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\">\n                High\n              </span>\n            </TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Implement API</TableCell>\n            <TableCell>\n              <span className=\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\">\n                In Progress\n              </span>\n            </TableCell>\n            <TableCell className=\"text-right\">\n              <span className=\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\">\n                Medium\n              </span>\n            </TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Write tests</TableCell>\n            <TableCell>\n              <span className=\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\">\n                Pending\n              </span>\n            </TableCell>\n            <TableCell className=\"text-right\">\n              <span className=\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\">\n                Low\n              </span>\n            </TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithActions() {\n  return (\n    <Example title=\"With Actions\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Product</TableHead>\n            <TableHead>Price</TableHead>\n            <TableHead className=\"text-right\">Actions</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Wireless Mouse</TableCell>\n            <TableCell>$29.99</TableCell>\n            <TableCell className=\"text-right\">\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />\n                  }\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">Open menu</span>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem variant=\"destructive\">\n                    Delete\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Mechanical Keyboard</TableCell>\n            <TableCell>$129.99</TableCell>\n            <TableCell className=\"text-right\">\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />\n                  }\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">Open menu</span>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem variant=\"destructive\">\n                    Delete\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">USB-C Hub</TableCell>\n            <TableCell>$49.99</TableCell>\n            <TableCell className=\"text-right\">\n              <DropdownMenu>\n                <DropdownMenuTrigger\n                  render={\n                    <Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />\n                  }\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">Open menu</span>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem variant=\"destructive\">\n                    Delete\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nconst people = [\n  { value: \"sarah\", label: \"Sarah Chen\" },\n  { value: \"marcus\", label: \"Marc Rodriguez\" },\n  { value: \"emily\", label: \"Emily Watson\" },\n  { value: \"david\", label: \"David Kim\" },\n]\n\nconst tasks = [\n  {\n    task: \"Design homepage\",\n    assignee: \"sarah\",\n    status: \"In Progress\",\n  },\n  {\n    task: \"Implement API\",\n    assignee: \"marcus\",\n    status: \"Pending\",\n  },\n  {\n    task: \"Write tests\",\n    assignee: \"emily\",\n    status: \"Not Started\",\n  },\n]\n\nfunction TableWithSelect() {\n  return (\n    <Example title=\"With Select\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Task</TableHead>\n            <TableHead>Assignee</TableHead>\n            <TableHead>Status</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {tasks.map((item) => (\n            <TableRow key={item.task}>\n              <TableCell className=\"font-medium\">{item.task}</TableCell>\n              <TableCell>\n                <Select\n                  items={people}\n                  defaultValue={people.find(\n                    (person) => person.value === item.assignee\n                  )}\n                  itemToStringValue={(item) => {\n                    return item.value\n                  }}\n                >\n                  <SelectTrigger className=\"w-40\" size=\"sm\">\n                    <SelectValue />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectGroup>\n                      {people.map((person) => (\n                        <SelectItem key={person.value} value={person}>\n                          {person.label}\n                        </SelectItem>\n                      ))}\n                    </SelectGroup>\n                  </SelectContent>\n                </Select>\n              </TableCell>\n              <TableCell>{item.status}</TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithInput() {\n  return (\n    <Example title=\"With Input\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Product</TableHead>\n            <TableHead>Quantity</TableHead>\n            <TableHead>Price</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Wireless Mouse</TableCell>\n            <TableCell>\n              <Input\n                type=\"number\"\n                defaultValue=\"1\"\n                className=\"h-8 w-20\"\n                min=\"0\"\n              />\n            </TableCell>\n            <TableCell>$29.99</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Mechanical Keyboard</TableCell>\n            <TableCell>\n              <Input\n                type=\"number\"\n                defaultValue=\"2\"\n                className=\"h-8 w-20\"\n                min=\"0\"\n              />\n            </TableCell>\n            <TableCell>$129.99</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">USB-C Hub</TableCell>\n            <TableCell>\n              <Input\n                type=\"number\"\n                defaultValue=\"1\"\n                className=\"h-8 w-20\"\n                min=\"0\"\n              />\n            </TableCell>\n            <TableCell>$49.99</TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/tabs-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/bases/base/ui/tabs\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function TabsExample() {\n  return (\n    <ExampleWrapper>\n      <TabsBasic />\n      <TabsLine />\n      <TabsVariantsComparison />\n      <TabsDisabled />\n      <TabsWithIcons />\n      <TabsIconOnly />\n      <TabsMultiple />\n      <TabsWithContent />\n      <TabsLineWithContent />\n      <TabsLineDisabled />\n      <TabsWithDropdown />\n      <TabsVertical />\n      <TabsWithInputAndButton />\n    </ExampleWrapper>\n  )\n}\n\nfunction TabsBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Tabs defaultValue=\"home\">\n        <TabsList>\n          <TabsTrigger value=\"home\">Home</TabsTrigger>\n          <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsLine() {\n  return (\n    <Example title=\"Line\">\n      <Tabs defaultValue=\"overview\">\n        <TabsList variant=\"line\">\n          <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n          <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsVariantsComparison() {\n  return (\n    <Example title=\"Variants Alignment\">\n      <div className=\"flex gap-4\">\n        <Tabs defaultValue=\"overview\">\n          <TabsList>\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          </TabsList>\n        </Tabs>\n        <Tabs defaultValue=\"overview\">\n          <TabsList variant=\"line\">\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          </TabsList>\n        </Tabs>\n      </div>\n    </Example>\n  )\n}\n\nfunction TabsDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Tabs defaultValue=\"home\">\n        <TabsList>\n          <TabsTrigger value=\"home\">Home</TabsTrigger>\n          <TabsTrigger value=\"settings\" disabled>\n            Disabled\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <Tabs defaultValue=\"preview\">\n        <TabsList>\n          <TabsTrigger value=\"preview\">\n            <IconPlaceholder\n              lucide=\"AppWindowIcon\"\n              tabler=\"IconAppWindow\"\n              hugeicons=\"CursorInWindowIcon\"\n              phosphor=\"AppWindowIcon\"\n              remixicon=\"RiWindowLine\"\n            />\n            Preview\n          </TabsTrigger>\n          <TabsTrigger value=\"code\">\n            <IconPlaceholder\n              lucide=\"CodeIcon\"\n              tabler=\"IconCode\"\n              hugeicons=\"CodeIcon\"\n              phosphor=\"CodeIcon\"\n              remixicon=\"RiCodeLine\"\n            />\n            Code\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsIconOnly() {\n  return (\n    <Example title=\"Icon Only\">\n      <Tabs defaultValue=\"home\">\n        <TabsList>\n          <TabsTrigger value=\"home\">\n            <IconPlaceholder\n              lucide=\"HomeIcon\"\n              tabler=\"IconHome\"\n              hugeicons=\"HomeIcon\"\n              phosphor=\"HouseIcon\"\n              remixicon=\"RiHomeLine\"\n            />\n          </TabsTrigger>\n          <TabsTrigger value=\"search\">\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"SearchIcon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </TabsTrigger>\n          <TabsTrigger value=\"settings\">\n            <IconPlaceholder\n              lucide=\"SettingsIcon\"\n              tabler=\"IconSettings\"\n              hugeicons=\"SettingsIcon\"\n              phosphor=\"GearIcon\"\n              remixicon=\"RiSettingsLine\"\n            />\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsMultiple() {\n  return (\n    <Example title=\"Multiple\">\n      <Tabs defaultValue=\"overview\">\n        <TabsList>\n          <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n          <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n          <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsWithContent() {\n  return (\n    <Example title=\"With Content\">\n      <Tabs defaultValue=\"account\">\n        <TabsList>\n          <TabsTrigger value=\"account\">Account</TabsTrigger>\n          <TabsTrigger value=\"password\">Password</TabsTrigger>\n          <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n        </TabsList>\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"account\">\n            Manage your account preferences and profile information.\n          </TabsContent>\n          <TabsContent value=\"password\">\n            Update your password to keep your account secure.\n          </TabsContent>\n          <TabsContent value=\"notifications\">\n            Configure how you receive notifications and alerts.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsLineWithContent() {\n  return (\n    <Example title=\"Line With Content\">\n      <Tabs defaultValue=\"account\">\n        <TabsList variant=\"line\">\n          <TabsTrigger value=\"account\">Account</TabsTrigger>\n          <TabsTrigger value=\"password\">Password</TabsTrigger>\n          <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n        </TabsList>\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"account\">\n            Manage your account preferences and profile information.\n          </TabsContent>\n          <TabsContent value=\"password\">\n            Update your password to keep your account secure.\n          </TabsContent>\n          <TabsContent value=\"notifications\">\n            Configure how you receive notifications and alerts.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsLineDisabled() {\n  return (\n    <Example title=\"Line Disabled\">\n      <Tabs defaultValue=\"overview\">\n        <TabsList variant=\"line\">\n          <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n          <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          <TabsTrigger value=\"reports\" disabled>\n            Reports\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsWithDropdown() {\n  return (\n    <Example title=\"With Dropdown\">\n      <Tabs defaultValue=\"overview\">\n        <div className=\"flex items-center justify-between\">\n          <TabsList>\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n            <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n          </TabsList>\n          <DropdownMenu>\n            <DropdownMenuTrigger\n              render={<Button variant=\"ghost\" size=\"icon\" className=\"size-8\" />}\n            >\n              <IconPlaceholder\n                lucide=\"MoreHorizontalIcon\"\n                tabler=\"IconDots\"\n                hugeicons=\"MoreHorizontalCircle01Icon\"\n                phosphor=\"DotsThreeOutlineIcon\"\n                remixicon=\"RiMoreLine\"\n              />\n              <span className=\"sr-only\">More options</span>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\">\n              <DropdownMenuItem>Settings</DropdownMenuItem>\n              <DropdownMenuItem>Export</DropdownMenuItem>\n              <DropdownMenuSeparator />\n              <DropdownMenuItem>Archive</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </div>\n\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"overview\">\n            View your dashboard metrics and key performance indicators.\n          </TabsContent>\n          <TabsContent value=\"analytics\">\n            Detailed analytics and insights about your data.\n          </TabsContent>\n          <TabsContent value=\"reports\">\n            Generate and view custom reports.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <Tabs defaultValue=\"account\" orientation=\"vertical\">\n        <TabsList>\n          <TabsTrigger value=\"account\">Account</TabsTrigger>\n          <TabsTrigger value=\"password\">Password</TabsTrigger>\n          <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n        </TabsList>\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"account\">\n            Manage your account preferences and profile information.\n          </TabsContent>\n          <TabsContent value=\"password\">\n            Update your password to keep your account secure. Use a strong\n            password with a mix of letters, numbers, and symbols.\n          </TabsContent>\n          <TabsContent value=\"notifications\">\n            Configure how you receive notifications and alerts. Choose which\n            types of notifications you want to receive and how you want to\n            receive them.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsWithInputAndButton() {\n  return (\n    <Example title=\"With Input and Button\" containerClassName=\"col-span-full\">\n      <Tabs defaultValue=\"overview\" className=\"mx-auto w-full max-w-lg\">\n        <div className=\"flex items-center gap-4\">\n          <TabsList>\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          </TabsList>\n          <div className=\"ml-auto flex items-center gap-2\">\n            <Input placeholder=\"Search...\" className=\"w-44\" />\n            <Button>Action</Button>\n          </div>\n        </div>\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"overview\">\n            View your dashboard metrics and key performance indicators.\n          </TabsContent>\n          <TabsContent value=\"analytics\">\n            Detailed analytics and insights about your data.\n          </TabsContent>\n          <TabsContent value=\"reports\">\n            Generate and view custom reports.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/textarea-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\n\nexport default function TextareaExample() {\n  return (\n    <ExampleWrapper>\n      <TextareaBasic />\n      <TextareaInvalid />\n      <TextareaWithLabel />\n      <TextareaWithDescription />\n      <TextareaDisabled />\n    </ExampleWrapper>\n  )\n}\n\nfunction TextareaBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Textarea placeholder=\"Type your message here.\" />\n    </Example>\n  )\n}\n\nfunction TextareaInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <Textarea placeholder=\"Type your message here.\" aria-invalid=\"true\" />\n    </Example>\n  )\n}\n\nfunction TextareaWithLabel() {\n  return (\n    <Example title=\"With Label\">\n      <Field>\n        <FieldLabel htmlFor=\"textarea-demo-message\">Message</FieldLabel>\n        <Textarea\n          id=\"textarea-demo-message\"\n          placeholder=\"Type your message here.\"\n          rows={6}\n        />\n      </Field>\n    </Example>\n  )\n}\n\nfunction TextareaWithDescription() {\n  return (\n    <Example title=\"With Description\">\n      <Field>\n        <FieldLabel htmlFor=\"textarea-demo-message-2\">Message</FieldLabel>\n        <Textarea\n          id=\"textarea-demo-message-2\"\n          placeholder=\"Type your message here.\"\n          rows={6}\n        />\n        <FieldDescription>\n          Type your message and press enter to send.\n        </FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction TextareaDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field>\n        <FieldLabel htmlFor=\"textarea-demo-disabled\">Message</FieldLabel>\n        <Textarea\n          id=\"textarea-demo-disabled\"\n          placeholder=\"Type your message here.\"\n          disabled\n        />\n      </Field>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/toggle-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Toggle } from \"@/registry/bases/base/ui/toggle\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ToggleExample() {\n  return (\n    <ExampleWrapper>\n      <ToggleBasic />\n      <ToggleOutline />\n      <ToggleSizes />\n      <ToggleWithButtonText />\n      <ToggleWithButtonIcon />\n      <ToggleWithButtonIconText />\n      <ToggleDisabled />\n      <ToggleWithIcon />\n    </ExampleWrapper>\n  )\n}\n\nfunction ToggleBasic() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle aria-label=\"Toggle bold\" defaultPressed>\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </Toggle>\n        <Toggle aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </Toggle>\n        <Toggle aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleOutline() {\n  return (\n    <Example title=\"Outline\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle variant=\"outline\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n          Italic\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n          Bold\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle variant=\"outline\" aria-label=\"Toggle small\" size=\"sm\">\n          Small\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle default\" size=\"default\">\n          Default\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle large\" size=\"lg\">\n          Large\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleWithButtonText() {\n  return (\n    <Example title=\"With Button Text\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"sm\" variant=\"outline\">\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle sm\" size=\"sm\">\n            Toggle\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"default\" variant=\"outline\">\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle default\" size=\"default\">\n            Toggle\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"lg\" variant=\"outline\">\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle lg\" size=\"lg\">\n            Toggle\n          </Toggle>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleWithButtonIcon() {\n  return (\n    <Example title=\"With Button Icon\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"outline\" size=\"icon-sm\">\n            <IconPlaceholder\n              lucide=\"BoldIcon\"\n              tabler=\"IconBold\"\n              hugeicons=\"TextBoldIcon\"\n              phosphor=\"TextBIcon\"\n              remixicon=\"RiBold\"\n            />\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle sm icon\" size=\"sm\">\n            <IconPlaceholder\n              lucide=\"BoldIcon\"\n              tabler=\"IconBold\"\n              hugeicons=\"TextBoldIcon\"\n              phosphor=\"TextBIcon\"\n              remixicon=\"RiBold\"\n            />\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"ItalicIcon\"\n              tabler=\"IconItalic\"\n              hugeicons=\"TextItalicIcon\"\n              phosphor=\"TextItalicIcon\"\n              remixicon=\"RiItalic\"\n            />\n          </Button>\n          <Toggle\n            variant=\"outline\"\n            aria-label=\"Toggle default icon\"\n            size=\"default\"\n          >\n            <IconPlaceholder\n              lucide=\"ItalicIcon\"\n              tabler=\"IconItalic\"\n              hugeicons=\"TextItalicIcon\"\n              phosphor=\"TextItalicIcon\"\n              remixicon=\"RiItalic\"\n            />\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"outline\" size=\"icon-lg\">\n            <IconPlaceholder\n              lucide=\"UnderlineIcon\"\n              tabler=\"IconUnderline\"\n              hugeicons=\"TextUnderlineIcon\"\n              phosphor=\"TextUnderlineIcon\"\n              remixicon=\"RiUnderline\"\n            />\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle lg icon\" size=\"lg\">\n            <IconPlaceholder\n              lucide=\"UnderlineIcon\"\n              tabler=\"IconUnderline\"\n              hugeicons=\"TextUnderlineIcon\"\n              phosphor=\"TextUnderlineIcon\"\n              remixicon=\"RiUnderline\"\n            />\n          </Toggle>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleWithButtonIconText() {\n  return (\n    <Example title=\"With Button Icon + Text\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"sm\" variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"BoldIcon\"\n              tabler=\"IconBold\"\n              hugeicons=\"TextBoldIcon\"\n              phosphor=\"TextBIcon\"\n              remixicon=\"RiBold\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle sm icon text\" size=\"sm\">\n            <IconPlaceholder\n              lucide=\"BoldIcon\"\n              tabler=\"IconBold\"\n              hugeicons=\"TextBoldIcon\"\n              phosphor=\"TextBIcon\"\n              remixicon=\"RiBold\"\n            />\n            Toggle\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"default\" variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"ItalicIcon\"\n              tabler=\"IconItalic\"\n              hugeicons=\"TextItalicIcon\"\n              phosphor=\"TextItalicIcon\"\n              remixicon=\"RiItalic\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n          <Toggle\n            variant=\"outline\"\n            aria-label=\"Toggle default icon text\"\n            size=\"default\"\n          >\n            <IconPlaceholder\n              lucide=\"ItalicIcon\"\n              tabler=\"IconItalic\"\n              hugeicons=\"TextItalicIcon\"\n              phosphor=\"TextItalicIcon\"\n              remixicon=\"RiItalic\"\n            />\n            Toggle\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"lg\" variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"UnderlineIcon\"\n              tabler=\"IconUnderline\"\n              hugeicons=\"TextUnderlineIcon\"\n              phosphor=\"TextUnderlineIcon\"\n              remixicon=\"RiUnderline\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle lg icon text\" size=\"lg\">\n            <IconPlaceholder\n              lucide=\"UnderlineIcon\"\n              tabler=\"IconUnderline\"\n              hugeicons=\"TextUnderlineIcon\"\n              phosphor=\"TextUnderlineIcon\"\n              remixicon=\"RiUnderline\"\n            />\n            Toggle\n          </Toggle>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle aria-label=\"Toggle disabled\" disabled>\n          Disabled\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle disabled outline\" disabled>\n          Disabled\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleWithIcon() {\n  return (\n    <Example title=\"With Icon\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle aria-label=\"Toggle bookmark\" defaultPressed>\n          <IconPlaceholder\n            lucide=\"BookmarkIcon\"\n            tabler=\"IconBookmark\"\n            hugeicons=\"BookmarkIcon\"\n            phosphor=\"BookmarkIcon\"\n            remixicon=\"RiBookmarkLine\"\n            className=\"group-data-[state=on]/toggle:fill-accent-foreground\"\n          />\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle bookmark outline\">\n          <IconPlaceholder\n            lucide=\"BookmarkIcon\"\n            tabler=\"IconBookmark\"\n            hugeicons=\"BookmarkIcon\"\n            phosphor=\"BookmarkIcon\"\n            remixicon=\"RiBookmarkLine\"\n            className=\"group-data-[state=on]/toggle:fill-accent-foreground\"\n          />\n          Bookmark\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/toggle-group-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/bases/base/ui/toggle-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ToggleGroupExample() {\n  return (\n    <ExampleWrapper>\n      <ToggleGroupBasic />\n      <ToggleGroupOutline />\n      <ToggleGroupOutlineWithIcons />\n      <ToggleGroupSizes />\n      <ToggleGroupSpacing />\n      <ToggleGroupWithIcons />\n      <ToggleGroupFilter />\n      <ToggleGroupDateRange />\n      <ToggleGroupSort />\n      <ToggleGroupWithInputAndSelect />\n      <ToggleGroupVertical />\n      <ToggleGroupVerticalOutline />\n      <ToggleGroupVerticalOutlineWithIcons />\n      <ToggleGroupVerticalWithSpacing />\n      <ToggleGroupFontWeightSelector />\n    </ExampleWrapper>\n  )\n}\n\nfunction ToggleGroupBasic() {\n  return (\n    <Example title=\"Basic\">\n      <ToggleGroup multiple spacing={1}>\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupOutline() {\n  return (\n    <Example title=\"Outline\">\n      <ToggleGroup variant=\"outline\" defaultValue={[\"all\"]}>\n        <ToggleGroupItem value=\"all\" aria-label=\"Toggle all\">\n          All\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"missed\" aria-label=\"Toggle missed\">\n          Missed\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupOutlineWithIcons() {\n  return (\n    <Example title=\"Outline With Icons\">\n      <ToggleGroup variant=\"outline\" multiple size=\"sm\">\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-col gap-4\">\n        <ToggleGroup size=\"sm\" defaultValue={[\"top\"]} variant=\"outline\">\n          <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n            Top\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n            Bottom\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n            Left\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n            Right\n          </ToggleGroupItem>\n        </ToggleGroup>\n        <ToggleGroup defaultValue={[\"top\"]} variant=\"outline\">\n          <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n            Top\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n            Bottom\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n            Left\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n            Right\n          </ToggleGroupItem>\n        </ToggleGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleGroupSpacing() {\n  return (\n    <Example title=\"With Spacing\">\n      <ToggleGroup\n        size=\"sm\"\n        defaultValue={[\"top\"]}\n        variant=\"outline\"\n        spacing={2}\n      >\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <ToggleGroup multiple variant=\"outline\" spacing={2} size=\"sm\">\n        <ToggleGroupItem\n          value=\"star\"\n          aria-label=\"Toggle star\"\n          className=\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\"\n        >\n          <IconPlaceholder\n            lucide=\"StarIcon\"\n            tabler=\"IconStar\"\n            hugeicons=\"StarIcon\"\n            phosphor=\"StarIcon\"\n            remixicon=\"RiStarLine\"\n          />\n          Star\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"heart\"\n          aria-label=\"Toggle heart\"\n          className=\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\"\n        >\n          <IconPlaceholder\n            lucide=\"HeartIcon\"\n            tabler=\"IconHeart\"\n            hugeicons=\"FavouriteIcon\"\n            phosphor=\"HeartIcon\"\n            remixicon=\"RiHeartLine\"\n          />\n          Heart\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"bookmark\"\n          aria-label=\"Toggle bookmark\"\n          className=\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\"\n        >\n          <IconPlaceholder\n            lucide=\"BookmarkIcon\"\n            tabler=\"IconBookmark\"\n            hugeicons=\"BookmarkIcon\"\n            phosphor=\"BookmarkIcon\"\n            remixicon=\"RiBookmarkLine\"\n          />\n          Bookmark\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupFilter() {\n  return (\n    <Example title=\"Filter\">\n      <ToggleGroup defaultValue={[\"all\"]} variant=\"outline\" size=\"sm\">\n        <ToggleGroupItem value=\"all\" aria-label=\"All\">\n          All\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"active\" aria-label=\"Active\">\n          Active\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"completed\" aria-label=\"Completed\">\n          Completed\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"archived\" aria-label=\"Archived\">\n          Archived\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupDateRange() {\n  return (\n    <Example title=\"Date Range\">\n      <ToggleGroup\n        defaultValue={[\"today\"]}\n        variant=\"outline\"\n        size=\"sm\"\n        spacing={2}\n      >\n        <ToggleGroupItem value=\"today\" aria-label=\"Today\">\n          Today\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"week\" aria-label=\"This Week\">\n          This Week\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"month\" aria-label=\"This Month\">\n          This Month\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"year\" aria-label=\"This Year\">\n          This Year\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupSort() {\n  return (\n    <Example title=\"Sort\">\n      <ToggleGroup defaultValue={[\"newest\"]} variant=\"outline\" size=\"sm\">\n        <ToggleGroupItem value=\"newest\" aria-label=\"Newest\">\n          <IconPlaceholder\n            lucide=\"ArrowDownIcon\"\n            tabler=\"IconArrowDown\"\n            hugeicons=\"ArrowDownIcon\"\n            phosphor=\"ArrowDownIcon\"\n            remixicon=\"RiArrowDownLine\"\n          />\n          Newest\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"oldest\" aria-label=\"Oldest\">\n          <IconPlaceholder\n            lucide=\"ArrowUpIcon\"\n            tabler=\"IconArrowUp\"\n            hugeicons=\"ArrowUpIcon\"\n            phosphor=\"ArrowUpIcon\"\n            remixicon=\"RiArrowUpLine\"\n          />\n          Oldest\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"popular\" aria-label=\"Popular\">\n          <IconPlaceholder\n            lucide=\"TrendingUpIcon\"\n            tabler=\"IconTrendingUp\"\n            hugeicons=\"TradeUpIcon\"\n            phosphor=\"TrendUpIcon\"\n            remixicon=\"RiLineChartLine\"\n          />\n          Popular\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupWithInputAndSelect() {\n  const items = [\n    { label: \"All\", value: \"all\" },\n    { label: \"Active\", value: \"active\" },\n    { label: \"Archived\", value: \"archived\" },\n  ]\n  return (\n    <Example title=\"With Input and Select\">\n      <div className=\"flex items-center gap-2\">\n        <Input type=\"search\" placeholder=\"Search...\" className=\"flex-1\" />\n        <Select items={items} defaultValue={items[0]}>\n          <SelectTrigger className=\"w-32\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              {items.map((item) => (\n                <SelectItem key={item.value} value={item.value}>\n                  {item.label}\n                </SelectItem>\n              ))}\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <ToggleGroup defaultValue={[\"grid\"]} variant=\"outline\">\n          <ToggleGroupItem value=\"grid\" aria-label=\"Grid view\">\n            Grid\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"list\" aria-label=\"List view\">\n            List\n          </ToggleGroupItem>\n        </ToggleGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleGroupVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <ToggleGroup multiple orientation=\"vertical\" spacing={1}>\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupVerticalOutline() {\n  return (\n    <Example title=\"Vertical Outline\">\n      <ToggleGroup\n        variant=\"outline\"\n        defaultValue={[\"all\"]}\n        orientation=\"vertical\"\n        size=\"sm\"\n      >\n        <ToggleGroupItem value=\"all\" aria-label=\"Toggle all\">\n          All\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"active\" aria-label=\"Toggle active\">\n          Active\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"completed\" aria-label=\"Toggle completed\">\n          Completed\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"archived\" aria-label=\"Toggle archived\">\n          Archived\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupVerticalOutlineWithIcons() {\n  return (\n    <Example title=\"Vertical Outline With Icons\">\n      <ToggleGroup variant=\"outline\" multiple orientation=\"vertical\" size=\"sm\">\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupFontWeightSelector() {\n  const [fontWeight, setFontWeight] = React.useState(\"normal\")\n  return (\n    <Example title=\"Font Weight Selector\">\n      <Field>\n        <FieldLabel>Font Weight</FieldLabel>\n        <ToggleGroup\n          value={[fontWeight]}\n          onValueChange={(value) => setFontWeight(value[0])}\n          variant=\"outline\"\n          spacing={2}\n          size=\"lg\"\n        >\n          <ToggleGroupItem\n            value=\"light\"\n            aria-label=\"Light\"\n            className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n          >\n            <span className=\"text-2xl leading-none font-light\">Aa</span>\n            <span className=\"text-xs text-muted-foreground\">Light</span>\n          </ToggleGroupItem>\n          <ToggleGroupItem\n            value=\"normal\"\n            aria-label=\"Normal\"\n            className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n          >\n            <span className=\"text-2xl leading-none font-normal\">Aa</span>\n            <span className=\"text-xs text-muted-foreground\">Normal</span>\n          </ToggleGroupItem>\n          <ToggleGroupItem\n            value=\"medium\"\n            aria-label=\"Medium\"\n            className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n          >\n            <span className=\"text-2xl leading-none font-medium\">Aa</span>\n            <span className=\"text-xs text-muted-foreground\">Medium</span>\n          </ToggleGroupItem>\n          <ToggleGroupItem\n            value=\"bold\"\n            aria-label=\"Bold\"\n            className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n          >\n            <span className=\"text-2xl leading-none font-bold\">Aa</span>\n            <span className=\"text-xs text-muted-foreground\">Bold</span>\n          </ToggleGroupItem>\n        </ToggleGroup>\n        <FieldDescription>\n          Use{\" \"}\n          <code className=\"rounded-md bg-muted px-1 py-0.5 font-mono\">\n            font-{fontWeight}\n          </code>{\" \"}\n          to set the font weight.\n        </FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction ToggleGroupVerticalWithSpacing() {\n  return (\n    <Example title=\"Vertical With Spacing\">\n      <ToggleGroup\n        size=\"sm\"\n        defaultValue={[\"top\"]}\n        variant=\"outline\"\n        orientation=\"vertical\"\n        spacing={1}\n      >\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/examples/tooltip-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Kbd } from \"@/registry/bases/base/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function TooltipExample() {\n  return (\n    <ExampleWrapper>\n      <TooltipBasic />\n      <TooltipSides />\n      <TooltipWithIcon />\n      <TooltipLongContent />\n      <TooltipDisabled />\n      <TooltipWithKeyboard />\n      <TooltipOnLink />\n      <TooltipFormatted />\n    </ExampleWrapper>\n  )\n}\n\nfunction TooltipBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Tooltip>\n        <TooltipTrigger render={<Button variant=\"outline\" className=\"w-fit\" />}>\n          Show Tooltip\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>Add to library</p>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipSides() {\n  return (\n    <Example title=\"Sides\">\n      <div className=\"flex flex-wrap gap-2\">\n        {(\n          [\n            \"inline-start\",\n            \"left\",\n            \"top\",\n            \"bottom\",\n            \"right\",\n            \"inline-end\",\n          ] as const\n        ).map((side) => (\n          <Tooltip key={side}>\n            <TooltipTrigger\n              render={<Button variant=\"outline\" className=\"w-fit capitalize\" />}\n            >\n              {side.replace(\"-\", \" \")}\n            </TooltipTrigger>\n            <TooltipContent side={side}>\n              <p>Add to library</p>\n            </TooltipContent>\n          </Tooltip>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction TooltipWithIcon() {\n  return (\n    <Example title=\"With Icon\">\n      <Tooltip>\n        <TooltipTrigger render={<Button variant=\"ghost\" size=\"icon\" />}>\n          <IconPlaceholder\n            lucide=\"InfoIcon\"\n            tabler=\"IconInfoCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"InfoIcon\"\n            remixicon=\"RiInformationLine\"\n          />\n          <span className=\"sr-only\">Info</span>\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>Additional information</p>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipLongContent() {\n  return (\n    <Example title=\"Long Content\">\n      <Tooltip>\n        <TooltipTrigger render={<Button variant=\"outline\" className=\"w-fit\" />}>\n          Show Tooltip\n        </TooltipTrigger>\n        <TooltipContent>\n          To learn more about how this works, check out the docs. If you have\n          any questions, please reach out to us.\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Tooltip>\n        <TooltipTrigger render={<span className=\"inline-block w-fit\" />}>\n          <Button variant=\"outline\" disabled>\n            Disabled\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>This feature is currently unavailable</p>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipWithKeyboard() {\n  return (\n    <Example title=\"With Keyboard Shortcut\">\n      <Tooltip>\n        <TooltipTrigger render={<Button variant=\"outline\" size=\"icon-sm\" />}>\n          <IconPlaceholder\n            lucide=\"SaveIcon\"\n            tabler=\"IconDeviceFloppy\"\n            hugeicons=\"FloppyDiskIcon\"\n            phosphor=\"FloppyDiskIcon\"\n            remixicon=\"RiSaveLine\"\n          />\n        </TooltipTrigger>\n        <TooltipContent>\n          Save Changes <Kbd>S</Kbd>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipOnLink() {\n  return (\n    <Example title=\"On Link\">\n      <Tooltip>\n        <TooltipTrigger\n          render={\n            <a\n              href=\"#\"\n              className=\"w-fit text-sm text-primary underline-offset-4 hover:underline\"\n              onClick={(e) => e.preventDefault()}\n            />\n          }\n        >\n          Learn more\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>Click to read the documentation</p>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipFormatted() {\n  return (\n    <Example title=\"Formatted Content\">\n      <Tooltip>\n        <TooltipTrigger render={<Button variant=\"outline\" className=\"w-fit\" />}>\n          Status\n        </TooltipTrigger>\n        <TooltipContent>\n          <div className=\"flex flex-col gap-1\">\n            <p className=\"font-semibold\">Active</p>\n            <p className=\"text-xs opacity-80\">Last updated 2 hours ago</p>\n          </div>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/hooks/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const hooks: Registry[\"items\"] = [\n  {\n    name: \"use-mobile\",\n    type: \"registry:hook\",\n    files: [\n      {\n        path: \"hooks/use-mobile.ts\",\n        type: \"registry:hook\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/base/hooks/use-mobile.ts",
    "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n  React.useEffect(() => {\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n    const onChange = () => {\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    }\n    mql.addEventListener(\"change\", onChange)\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    return () => mql.removeEventListener(\"change\", onChange)\n  }, [])\n\n  return !!isMobile\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/internal/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const internal: Registry[\"items\"] = [\n  {\n    name: \"sink\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sink.tsx\",\n        type: \"registry:page\",\n        target: \"app/sink/page.tsx\",\n      },\n    ],\n    registryDependencies: [\n      \"accordion-example\",\n      \"alert-dialog-example\",\n      \"alert-example\",\n      \"aspect-ratio-example\",\n      \"avatar-example\",\n      \"badge-example\",\n      \"breadcrumb-example\",\n      \"button-example\",\n      \"button-group-example\",\n      \"calendar-example\",\n      \"card-example\",\n      \"carousel-example\",\n      \"chart-example\",\n      \"checkbox-example\",\n      \"collapsible-example\",\n      \"combobox-example\",\n      \"command-example\",\n      \"context-menu-example\",\n      \"dialog-example\",\n      \"drawer-example\",\n      \"dropdown-menu-example\",\n      \"empty-example\",\n      \"field-example\",\n      \"hover-card-example\",\n      \"input-example\",\n      \"input-group-example\",\n      \"input-otp-example\",\n      \"item-example\",\n      \"kbd-example\",\n      \"label-example\",\n      \"menubar-example\",\n      \"native-select-example\",\n      \"navigation-menu-example\",\n      \"pagination-example\",\n      \"popover-example\",\n      \"progress-example\",\n      \"radio-group-example\",\n      \"resizable-example\",\n      \"scroll-area-example\",\n      \"select-example\",\n      \"separator-example\",\n      \"sheet-example\",\n      \"skeleton-example\",\n      \"slider-example\",\n      \"sonner-example\",\n      \"spinner-example\",\n      \"switch-example\",\n      \"table-example\",\n      \"tabs-example\",\n      \"textarea-example\",\n      \"toggle-example\",\n      \"toggle-group-example\",\n      \"tooltip-example\",\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/base/internal/sink.tsx",
    "content": "import AccordionExample from \"@/registry/bases/base/examples/accordion-example\"\nimport AlertDialogExample from \"@/registry/bases/base/examples/alert-dialog-example\"\nimport AlertExample from \"@/registry/bases/base/examples/alert-example\"\nimport AspectRatioExample from \"@/registry/bases/base/examples/aspect-ratio-example\"\nimport AvatarExample from \"@/registry/bases/base/examples/avatar-example\"\nimport BadgeExample from \"@/registry/bases/base/examples/badge-example\"\nimport BreadcrumbExample from \"@/registry/bases/base/examples/breadcrumb-example\"\nimport ButtonExample from \"@/registry/bases/base/examples/button-example\"\nimport ButtonGroupExample from \"@/registry/bases/base/examples/button-group-example\"\nimport CalendarExample from \"@/registry/bases/base/examples/calendar-example\"\nimport CardExample from \"@/registry/bases/base/examples/card-example\"\nimport CarouselExample from \"@/registry/bases/base/examples/carousel-example\"\nimport ChartExample from \"@/registry/bases/base/examples/chart-example\"\nimport CheckboxExample from \"@/registry/bases/base/examples/checkbox-example\"\nimport CollapsibleExample from \"@/registry/bases/base/examples/collapsible-example\"\nimport ComboboxExample from \"@/registry/bases/base/examples/combobox-example\"\nimport CommandExample from \"@/registry/bases/base/examples/command-example\"\nimport ContextMenuExample from \"@/registry/bases/base/examples/context-menu-example\"\nimport DialogExample from \"@/registry/bases/base/examples/dialog-example\"\nimport DrawerExample from \"@/registry/bases/base/examples/drawer-example\"\nimport DropdownMenuExample from \"@/registry/bases/base/examples/dropdown-menu-example\"\nimport EmptyExample from \"@/registry/bases/base/examples/empty-example\"\nimport FieldExample from \"@/registry/bases/base/examples/field-example\"\nimport HoverCardExample from \"@/registry/bases/base/examples/hover-card-example\"\nimport InputExample from \"@/registry/bases/base/examples/input-example\"\nimport InputGroupExample from \"@/registry/bases/base/examples/input-group-example\"\nimport InputOtpExample from \"@/registry/bases/base/examples/input-otp-example\"\nimport ItemExample from \"@/registry/bases/base/examples/item-example\"\nimport KbdExample from \"@/registry/bases/base/examples/kbd-example\"\nimport LabelExample from \"@/registry/bases/base/examples/label-example\"\nimport MenubarExample from \"@/registry/bases/base/examples/menubar-example\"\nimport NativeSelectExample from \"@/registry/bases/base/examples/native-select-example\"\nimport NavigationMenuExample from \"@/registry/bases/base/examples/navigation-menu-example\"\nimport PaginationExample from \"@/registry/bases/base/examples/pagination-example\"\nimport PopoverExample from \"@/registry/bases/base/examples/popover-example\"\nimport ProgressExample from \"@/registry/bases/base/examples/progress-example\"\nimport RadioGroupExample from \"@/registry/bases/base/examples/radio-group-example\"\nimport ResizableExample from \"@/registry/bases/base/examples/resizable-example\"\nimport ScrollAreaExample from \"@/registry/bases/base/examples/scroll-area-example\"\nimport SelectExample from \"@/registry/bases/base/examples/select-example\"\nimport SeparatorExample from \"@/registry/bases/base/examples/separator-example\"\nimport SheetExample from \"@/registry/bases/base/examples/sheet-example\"\nimport SkeletonExample from \"@/registry/bases/base/examples/skeleton-example\"\nimport SliderExample from \"@/registry/bases/base/examples/slider-example\"\nimport SonnerExample from \"@/registry/bases/base/examples/sonner-example\"\nimport SpinnerExample from \"@/registry/bases/base/examples/spinner-example\"\nimport SwitchExample from \"@/registry/bases/base/examples/switch-example\"\nimport TableExample from \"@/registry/bases/base/examples/table-example\"\nimport TabsExample from \"@/registry/bases/base/examples/tabs-example\"\nimport TextareaExample from \"@/registry/bases/base/examples/textarea-example\"\nimport ToggleExample from \"@/registry/bases/base/examples/toggle-example\"\nimport ToggleGroupExample from \"@/registry/bases/base/examples/toggle-group-example\"\nimport TooltipExample from \"@/registry/bases/base/examples/tooltip-example\"\nimport { Toaster } from \"@/registry/bases/base/ui/sonner\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex flex-col gap-12\">\n      <AccordionExample />\n      <AlertDialogExample />\n      <AlertExample />\n      <AspectRatioExample />\n      <AvatarExample />\n      <BadgeExample />\n      <BreadcrumbExample />\n      <ButtonExample />\n      <ButtonGroupExample />\n      <CalendarExample />\n      <CardExample />\n      <CarouselExample />\n      <ChartExample />\n      <CheckboxExample />\n      <CollapsibleExample />\n      <ComboboxExample />\n      <CommandExample />\n      <ContextMenuExample />\n      <DialogExample />\n      <DrawerExample />\n      <DropdownMenuExample />\n      <EmptyExample />\n      <FieldExample />\n      <HoverCardExample />\n      <InputExample />\n      <InputGroupExample />\n      <InputOtpExample />\n      <ItemExample />\n      <KbdExample />\n      <LabelExample />\n      <MenubarExample />\n      <NativeSelectExample />\n      <NavigationMenuExample />\n      <PaginationExample />\n      <PopoverExample />\n      <ProgressExample />\n      <RadioGroupExample />\n      <ResizableExample />\n      <ScrollAreaExample />\n      <SelectExample />\n      <SeparatorExample />\n      <SheetExample />\n      <SkeletonExample />\n      <SliderExample />\n      <SonnerExample />\n      <SpinnerExample />\n      <SwitchExample />\n      <TableExample />\n      <TabsExample />\n      <TextareaExample />\n      <ToggleExample />\n      <ToggleGroupExample />\n      <TooltipExample />\n      <Toaster />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/lib/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const lib: Registry[\"items\"] = [\n  {\n    name: \"utils\",\n    type: \"registry:lib\",\n    dependencies: [\"clsx\", \"tailwind-merge\"],\n    files: [\n      {\n        path: \"lib/utils.ts\",\n        type: \"registry:lib\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/base/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/registry.ts",
    "content": "import { registryItemSchema, type Registry } from \"shadcn/schema\"\nimport { z } from \"zod\"\n\nimport { fonts } from \"@/registry/fonts\"\n\nimport { blocks } from \"./blocks/_registry\"\nimport { components } from \"./components/_registry\"\nimport { examples } from \"./examples/_registry\"\nimport { hooks } from \"./hooks/_registry\"\nimport { internal } from \"./internal/_registry\"\nimport { lib } from \"./lib/_registry\"\nimport { ui } from \"./ui/_registry\"\n\n// Shared between index and style.\nconst BASE_STYLE = {\n  type: \"registry:style\",\n  dependencies: [\"class-variance-authority\", \"lucide-react\", \"@base-ui/react\"],\n  devDependencies: [\"tw-animate-css\", \"shadcn\"],\n  registryDependencies: [\"utils\"],\n  css: {\n    '@import \"tw-animate-css\"': {},\n    '@import \"shadcn/tailwind.css\"': {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {},\n      },\n      body: {\n        \"@apply bg-background text-foreground\": {},\n      },\n    },\n  },\n  cssVars: {},\n  files: [],\n}\n\nexport const registry = {\n  name: \"shadcn/ui\",\n  homepage: \"https://ui.shadcn.com\",\n  items: z.array(registryItemSchema).parse([\n    {\n      name: \"index\",\n      ...BASE_STYLE,\n    },\n    {\n      name: \"style\",\n      ...BASE_STYLE,\n    },\n    ...ui,\n    ...examples,\n    ...lib,\n    ...components,\n    ...blocks,\n    ...hooks,\n    ...internal,\n    ...fonts,\n  ]),\n} satisfies Registry\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const ui: Registry[\"items\"] = [\n  {\n    name: \"accordion\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/accordion.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/accordion\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/accordion-example.tsx\",\n        api: \"https://base-ui.com/react/components/accordion.md\",\n      },\n    },\n  },\n  {\n    name: \"alert\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/alert.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/alert\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"alert-dialog\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/alert-dialog.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/alert-dialog\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/alert-dialog-example.tsx\",\n        api: \"https://base-ui.com/react/components/alert-dialog.md\",\n      },\n    },\n  },\n  {\n    name: \"aspect-ratio\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/aspect-ratio.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/aspect-ratio\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/aspect-ratio-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"avatar\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/avatar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/avatar\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/avatar-example.tsx\",\n        api: \"https://base-ui.com/react/components/avatar.md\",\n      },\n    },\n  },\n  {\n    name: \"badge\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/badge.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/badge\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/badge-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"breadcrumb\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/breadcrumb.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/breadcrumb\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/breadcrumb-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"button\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/button.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/button\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"button-group\",\n    type: \"registry:ui\",\n    registryDependencies: [\"separator\"],\n    files: [\n      {\n        path: \"ui/button-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/button-group\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/button-group-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"calendar\",\n    type: \"registry:ui\",\n    dependencies: [\"react-day-picker@latest\", \"date-fns\"],\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/calendar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/calendar\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/calendar-example.tsx\",\n        api: \"https://react-day-picker.js.org\",\n      },\n    },\n  },\n  {\n    name: \"card\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/card.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/card\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/card-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"carousel\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/carousel.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    registryDependencies: [\"button\"],\n    dependencies: [\"embla-carousel-react\"],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/carousel\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/carousel-example.tsx\",\n        api: \"https://www.embla-carousel.com/get-started/react\",\n      },\n    },\n  },\n  {\n    name: \"chart\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/chart.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    registryDependencies: [\"card\"],\n    dependencies: [\"recharts@2.15.4\"],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/chart\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/chart-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"checkbox\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/checkbox.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/checkbox\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/checkbox-example.tsx\",\n        api: \"https://base-ui.com/react/components/checkbox.md\",\n      },\n    },\n  },\n  {\n    name: \"collapsible\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/collapsible.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/collapsible\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/collapsible-example.tsx\",\n        api: \"https://base-ui.com/react/components/collapsible.md\",\n      },\n    },\n  },\n  {\n    name: \"combobox\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\", \"input-group\"],\n    dependencies: [\"@base-ui/react\"],\n    files: [\n      {\n        path: \"ui/combobox.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/combobox\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/combobox-example.tsx\",\n        api: \"https://base-ui.com/react/components/combobox.md\",\n      },\n    },\n  },\n  {\n    name: \"command\",\n    type: \"registry:ui\",\n    dependencies: [\"cmdk\"],\n    registryDependencies: [\"dialog\", \"input-group\"],\n    files: [\n      {\n        path: \"ui/command.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/command\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/command-example.tsx\",\n        api: \"https://github.com/dip/cmdk\",\n      },\n    },\n  },\n  {\n    name: \"context-menu\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/context-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/context-menu\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/context-menu-example.tsx\",\n        api: \"https://base-ui.com/react/components/context-menu.md\",\n      },\n    },\n  },\n  {\n    name: \"dialog\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/dialog.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/dialog\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dialog-example.tsx\",\n        api: \"https://base-ui.com/react/components/dialog.md\",\n      },\n    },\n  },\n  {\n    name: \"drawer\",\n    type: \"registry:ui\",\n    dependencies: [\"vaul\"],\n    files: [\n      {\n        path: \"ui/drawer.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/drawer\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/drawer-example.tsx\",\n        api: \"https://vaul.emilkowal.ski/getting-started\",\n      },\n    },\n  },\n  {\n    name: \"dropdown-menu\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/dropdown-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/dropdown-menu\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/dropdown-menu-example.tsx\",\n        api: \"https://base-ui.com/react/components/menu.md\",\n      },\n    },\n  },\n  {\n    name: \"empty\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/empty.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/empty\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/empty-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"field\",\n    type: \"registry:ui\",\n    registryDependencies: [\"label\", \"separator\"],\n    files: [\n      {\n        path: \"ui/field.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/field\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/field-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"form\",\n    type: \"registry:ui\",\n  },\n  {\n    name: \"hover-card\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/hover-card.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/hover-card\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/hover-card-example.tsx\",\n        api: \"https://base-ui.com/react/components/hover-card.md\",\n      },\n    },\n  },\n  {\n    name: \"input\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/input.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/input\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"input-group\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\", \"input\", \"textarea\"],\n    files: [\n      {\n        path: \"ui/input-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/input-group\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-group-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"input-otp\",\n    type: \"registry:ui\",\n    dependencies: [\"input-otp\"],\n    files: [\n      {\n        path: \"ui/input-otp.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/input-otp\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/input-otp-example.tsx\",\n        api: \"https://input-otp.rodz.dev\",\n      },\n    },\n  },\n  {\n    name: \"item\",\n    type: \"registry:ui\",\n    registryDependencies: [\"separator\"],\n    files: [\n      {\n        path: \"ui/item.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/item\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/item-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"label\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/label.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/label\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/label-example.tsx\",\n        api: \"https://base-ui.com/react/components/label.md\",\n      },\n    },\n  },\n  {\n    name: \"menubar\",\n    type: \"registry:ui\",\n    registryDependencies: [\"dropdown-menu\"],\n    files: [\n      {\n        path: \"ui/menubar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/menubar\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/menubar-example.tsx\",\n        api: \"https://base-ui.com/react/components/menubar.md\",\n      },\n    },\n  },\n  {\n    name: \"navigation-menu\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/navigation-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/navigation-menu\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/navigation-menu-example.tsx\",\n        api: \"https://base-ui.com/react/components/navigation-menu.md\",\n      },\n    },\n  },\n  {\n    name: \"pagination\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/pagination.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/pagination\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/pagination-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"popover\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/popover.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/popover\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/popover-example.tsx\",\n        api: \"https://base-ui.com/react/components/popover.md\",\n      },\n    },\n  },\n  {\n    name: \"progress\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/progress.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/progress\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/progress-example.tsx\",\n        api: \"https://base-ui.com/react/components/progress.md\",\n      },\n    },\n  },\n  {\n    name: \"radio-group\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/radio-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/radio-group\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/radio-group-example.tsx\",\n        api: \"https://base-ui.com/react/components/radio-group.md\",\n      },\n    },\n  },\n  {\n    name: \"resizable\",\n    type: \"registry:ui\",\n    dependencies: [\"react-resizable-panels\"],\n    files: [\n      {\n        path: \"ui/resizable.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/resizable\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/resizable-example.tsx\",\n        api: \"https://github.com/bvaughn/react-resizable-panels\",\n      },\n    },\n  },\n  {\n    name: \"scroll-area\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/scroll-area.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/scroll-area\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/scroll-area-example.tsx\",\n        api: \"https://base-ui.com/react/components/scroll-area.md\",\n      },\n    },\n  },\n  {\n    name: \"select\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/select.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/select\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/select-example.tsx\",\n        api: \"https://base-ui.com/react/components/select.md\",\n      },\n    },\n  },\n  {\n    name: \"separator\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/separator.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/separator\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/separator-example.tsx\",\n        api: \"https://base-ui.com/react/components/separator.md\",\n      },\n    },\n  },\n  {\n    name: \"sheet\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/sheet.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/sheet\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sheet-example.tsx\",\n        api: \"https://base-ui.com/react/components/dialog.md\",\n      },\n    },\n  },\n  {\n    name: \"sidebar\",\n    type: \"registry:ui\",\n    registryDependencies: [\n      \"button\",\n      \"input\",\n      \"separator\",\n      \"sheet\",\n      \"skeleton\",\n      \"tooltip\",\n      \"use-mobile\",\n    ],\n    files: [\n      {\n        path: \"ui/sidebar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/sidebar\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sidebar-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"skeleton\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/skeleton.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/skeleton\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/skeleton-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"slider\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/slider.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/slider\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/slider-example.tsx\",\n        api: \"https://base-ui.com/react/components/slider.md\",\n      },\n    },\n  },\n  {\n    name: \"sonner\",\n    type: \"registry:ui\",\n    dependencies: [\"sonner\", \"next-themes\"],\n    files: [\n      {\n        path: \"ui/sonner.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/sonner\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/sonner-example.tsx\",\n        api: \"https://sonner.emilkowal.ski\",\n      },\n    },\n  },\n  {\n    name: \"spinner\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/spinner.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/spinner\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/spinner-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"switch\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/switch.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/switch\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/switch-example.tsx\",\n        api: \"https://base-ui.com/react/components/switch.md\",\n      },\n    },\n  },\n  {\n    name: \"table\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/table.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/table\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/table-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"tabs\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/tabs.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/tabs\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tabs-example.tsx\",\n        api: \"https://base-ui.com/react/components/tabs.md\",\n      },\n    },\n  },\n  {\n    name: \"textarea\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/textarea.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/textarea\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/textarea-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"toggle\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/toggle.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/toggle\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-example.tsx\",\n        api: \"https://base-ui.com/react/components/toggle.md\",\n      },\n    },\n  },\n  {\n    name: \"toggle-group\",\n    type: \"registry:ui\",\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"ui/toggle-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/toggle-group\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/toggle-group-example.tsx\",\n        api: \"https://base-ui.com/react/components/toggle-group.md\",\n      },\n    },\n  },\n  {\n    name: \"tooltip\",\n    type: \"registry:ui\",\n    docs: `The \\`tooltip\\` component has been added. Remember to wrap your app with the \\`TooltipProvider\\` component.\n\n\\`\\`\\`tsx title=\"app/layout.tsx\"\nimport { TooltipProvider } from \"@/components/ui/tooltip\"\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <TooltipProvider>{children}</TooltipProvider>\n      </body>\n    </html>\n  )\n}\n\\`\\`\\`\n`,\n    files: [\n      {\n        path: \"ui/tooltip.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/tooltip\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/tooltip-example.tsx\",\n        api: \"https://base-ui.com/react/components/tooltip.md\",\n      },\n    },\n  },\n  {\n    name: \"kbd\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/kbd.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/kbd\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/kbd-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"native-select\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/native-select.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/native-select\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/base/examples/native-select-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"direction\",\n    type: \"registry:ui\",\n    dependencies: [\"@base-ui/react\"],\n    files: [\n      {\n        path: \"ui/direction.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/base/direction\",\n        api: \"https://base-ui.com/react/utils/direction-provider.md\",\n      },\n    },\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/accordion.tsx",
    "content": "\"use client\"\n\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n  return (\n    <AccordionPrimitive.Root\n      data-slot=\"accordion\"\n      className={cn(\"cn-accordion flex w-full flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n  return (\n    <AccordionPrimitive.Item\n      data-slot=\"accordion-item\"\n      className={cn(\"cn-accordion-item\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionTrigger({\n  className,\n  children,\n  ...props\n}: AccordionPrimitive.Trigger.Props) {\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        data-slot=\"accordion-trigger\"\n        className={cn(\n          \"cn-accordion-trigger group/accordion-trigger relative flex flex-1 items-start justify-between border border-transparent transition-all outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <IconPlaceholder\n          lucide=\"ChevronDownIcon\"\n          tabler=\"IconChevronDown\"\n          data-slot=\"accordion-trigger-icon\"\n          hugeicons=\"ArrowDown01Icon\"\n          phosphor=\"CaretDownIcon\"\n          remixicon=\"RiArrowDownSLine\"\n          className=\"cn-accordion-trigger-icon pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n        />\n        <IconPlaceholder\n          lucide=\"ChevronUpIcon\"\n          tabler=\"IconChevronUp\"\n          data-slot=\"accordion-trigger-icon\"\n          hugeicons=\"ArrowUp01Icon\"\n          phosphor=\"CaretUpIcon\"\n          remixicon=\"RiArrowUpSLine\"\n          className=\"cn-accordion-trigger-icon pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n        />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\nfunction AccordionContent({\n  className,\n  children,\n  ...props\n}: AccordionPrimitive.Panel.Props) {\n  return (\n    <AccordionPrimitive.Panel\n      data-slot=\"accordion-content\"\n      className=\"cn-accordion-content overflow-hidden\"\n      {...props}\n    >\n      <div\n        className={cn(\n          \"cn-accordion-content-inner h-(--accordion-panel-height) data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n          className\n        )}\n      >\n        {children}\n      </div>\n    </AccordionPrimitive.Panel>\n  )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/alert-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n  return (\n    <AlertDialogPrimitive.Backdrop\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        \"cn-alert-dialog-overlay fixed inset-0 isolate z-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  size = \"default\",\n  ...props\n}: AlertDialogPrimitive.Popup.Props & {\n  size?: \"default\" | \"sm\"\n}) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Popup\n        data-slot=\"alert-dialog-content\"\n        data-size={size}\n        className={cn(\n          \"cn-alert-dialog-content group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n          className\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\"cn-alert-dialog-header\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        \"cn-alert-dialog-footer flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\"cn-alert-dialog-media\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\"cn-alert-dialog-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\"cn-alert-dialog-description\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  return (\n    <Button\n      data-slot=\"alert-dialog-action\"\n      className={cn(\"cn-alert-dialog-action\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = \"outline\",\n  size = \"default\",\n  ...props\n}: AlertDialogPrimitive.Close.Props &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <AlertDialogPrimitive.Close\n      data-slot=\"alert-dialog-cancel\"\n      className={cn(\"cn-alert-dialog-cancel\", className)}\n      render={<Button variant={variant} size={size} />}\n      {...props}\n    />\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nconst alertVariants = cva(\"cn-alert group/alert relative w-full\", {\n  variants: {\n    variant: {\n      default: \"cn-alert-variant-default\",\n      destructive: \"cn-alert-variant-destructive\",\n    },\n  },\n  defaultVariants: {\n    variant: \"default\",\n  },\n})\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"cn-alert-title cn-font-heading [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"cn-alert-description [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-action\"\n      className={cn(\"cn-alert-action\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/aspect-ratio.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction AspectRatio({\n  ratio,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & { ratio: number }) {\n  return (\n    <div\n      data-slot=\"aspect-ratio\"\n      style={\n        {\n          \"--ratio\": ratio,\n        } as React.CSSProperties\n      }\n      className={cn(\"relative aspect-(--ratio)\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { AspectRatio }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Avatar({\n  className,\n  size = \"default\",\n  ...props\n}: AvatarPrimitive.Root.Props & {\n  size?: \"default\" | \"sm\" | \"lg\"\n}) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(\n        \"cn-avatar group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\n        \"cn-avatar-image aspect-square size-full object-cover\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: AvatarPrimitive.Fallback.Props) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"cn-avatar-fallback flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"avatar-badge\"\n      className={cn(\n        \"cn-avatar-badge absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none\",\n        \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n        \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n        \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        \"cn-avatar-group group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroupCount({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        \"cn-avatar-group-count relative flex shrink-0 items-center justify-center ring-2 ring-background\",\n        \"\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Avatar,\n  AvatarImage,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarBadge,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/badge.tsx",
    "content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nconst badgeVariants = cva(\n  \"cn-badge group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-badge-variant-default\",\n        secondary: \"cn-badge-variant-secondary\",\n        destructive: \"cn-badge-variant-destructive\",\n        outline: \"cn-badge-variant-outline\",\n        ghost: \"cn-badge-variant-ghost\",\n        link: \"cn-badge-variant-link\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  render,\n  ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n  return useRender({\n    defaultTagName: \"span\",\n    props: mergeProps<\"span\">(\n      {\n        className: cn(badgeVariants({ variant }), className),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"badge\",\n      variant,\n    },\n  })\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/breadcrumb.tsx",
    "content": "import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      aria-label=\"breadcrumb\"\n      data-slot=\"breadcrumb\"\n      className={cn(\"cn-breadcrumb\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n  return (\n    <ol\n      data-slot=\"breadcrumb-list\"\n      className={cn(\n        \"cn-breadcrumb-list flex flex-wrap items-center wrap-break-word\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-item\"\n      className={cn(\"cn-breadcrumb-item inline-flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbLink({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"a\">) {\n  return useRender({\n    defaultTagName: \"a\",\n    props: mergeProps<\"a\">(\n      {\n        className: cn(\"cn-breadcrumb-link\", className),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"breadcrumb-link\",\n    },\n  })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-page\"\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      className={cn(\"cn-breadcrumb-page\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\"cn-breadcrumb-separator\", className)}\n      {...props}\n    >\n      {children ?? (\n        <IconPlaceholder\n          lucide=\"ChevronRightIcon\"\n          tabler=\"IconChevronRight\"\n          hugeicons=\"ArrowRight01Icon\"\n          phosphor=\"CaretRightIcon\"\n          remixicon=\"RiArrowRightSLine\"\n          className=\"cn-rtl-flip\"\n        />\n      )}\n    </li>\n  )\n}\n\nfunction BreadcrumbEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"cn-breadcrumb-ellipsis flex items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"MoreHorizontalIcon\"\n        tabler=\"IconDots\"\n        hugeicons=\"MoreHorizontalCircle01Icon\"\n        phosphor=\"DotsThreeIcon\"\n        remixicon=\"RiMoreLine\"\n      />\n      <span className=\"sr-only\">More</span>\n    </span>\n  )\n}\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/button-group.tsx",
    "content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\n\nconst buttonGroupVariants = cva(\n  \"cn-button-group flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n  {\n    variants: {\n      orientation: {\n        horizontal:\n          \"cn-button-group-orientation-horizontal *:data-slot:rounded-r-none [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\",\n        vertical:\n          \"cn-button-group-orientation-vertical flex-col *:data-slot:rounded-b-none [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"horizontal\",\n    },\n  }\n)\n\nfunction ButtonGroup({\n  className,\n  orientation,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"button-group\"\n      data-orientation={orientation}\n      className={cn(buttonGroupVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupText({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\">) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(\n          \"cn-button-group-text flex items-center [&_svg]:pointer-events-none\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"button-group-text\",\n    },\n  })\n}\n\nfunction ButtonGroupSeparator({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"button-group-separator\"\n      orientation={orientation}\n      className={cn(\n        \"cn-button-group-separator relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n  buttonGroupVariants,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/button.tsx",
    "content": "\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nconst buttonVariants = cva(\n  \"cn-button group/button inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none select-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-button-variant-default\",\n        outline: \"cn-button-variant-outline\",\n        secondary: \"cn-button-variant-secondary\",\n        ghost: \"cn-button-variant-ghost\",\n        destructive: \"cn-button-variant-destructive\",\n        link: \"cn-button-variant-link\",\n      },\n      size: {\n        default: \"cn-button-size-default\",\n        xs: \"cn-button-size-xs\",\n        sm: \"cn-button-size-sm\",\n        lg: \"cn-button-size-lg\",\n        icon: \"cn-button-size-icon\",\n        \"icon-xs\": \"cn-button-size-icon-xs\",\n        \"icon-sm\": \"cn-button-size-icon-sm\",\n        \"icon-lg\": \"cn-button-size-icon-lg\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n  return (\n    <ButtonPrimitive\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/calendar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  DayPicker,\n  getDefaultClassNames,\n  type DayButton,\n  type Locale,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  locale,\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"cn-calendar group/calendar bg-background in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      locale={locale}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(locale?.code, { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"cn-calendar-dropdown-root relative rounded-(--cell-radius)\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute inset-0 bg-popover opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\",\n          props.showWeekNumber\n            ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n            : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\n          \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_end\n        ),\n        today: cn(\n          \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <IconPlaceholder\n                lucide=\"ChevronLeftIcon\"\n                tabler=\"IconChevronLeft\"\n                hugeicons=\"ArrowLeftIcon\"\n                phosphor=\"CaretLeftIcon\"\n                remixicon=\"RiArrowLeftSLine\"\n                className={cn(\"cn-rtl-flip size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <IconPlaceholder\n                lucide=\"ChevronRightIcon\"\n                tabler=\"IconChevronRight\"\n                hugeicons=\"ArrowRightIcon\"\n                phosphor=\"CaretRightIcon\"\n                remixicon=\"RiArrowRightSLine\"\n                className={cn(\"cn-rtl-flip size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <IconPlaceholder\n              lucide=\"ChevronDownIcon\"\n              tabler=\"IconChevronDown\"\n              hugeicons=\"ArrowDownIcon\"\n              phosphor=\"CaretDownIcon\"\n              remixicon=\"RiArrowDownSLine\"\n              className={cn(\"size-4\", className)}\n              {...props}\n            />\n          )\n        },\n        DayButton: ({ ...props }) => (\n          <CalendarDayButton locale={locale} {...props} />\n        ),\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  locale,\n  ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString(locale?.code)}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"cn-calendar-day-button relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Card({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n  return (\n    <div\n      data-slot=\"card\"\n      data-size={size}\n      className={cn(\"cn-card group/card flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        \"cn-card-header group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      className={cn(\"cn-card-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn(\"cn-card-description\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn(\n        \"cn-card-action col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"cn-card-content\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\"cn-card-footer flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardAction,\n  CardDescription,\n  CardContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/carousel.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nfunction Carousel({\n  orientation = \"horizontal\",\n  opts,\n  setApi,\n  plugins,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n  const [carouselRef, api] = useEmblaCarousel(\n    {\n      ...opts,\n      axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n    },\n    plugins\n  )\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n  const onSelect = React.useCallback((api: CarouselApi) => {\n    if (!api) return\n    setCanScrollPrev(api.canScrollPrev())\n    setCanScrollNext(api.canScrollNext())\n  }, [])\n\n  const scrollPrev = React.useCallback(() => {\n    api?.scrollPrev()\n  }, [api])\n\n  const scrollNext = React.useCallback(() => {\n    api?.scrollNext()\n  }, [api])\n\n  const handleKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === \"ArrowLeft\") {\n        event.preventDefault()\n        scrollPrev()\n      } else if (event.key === \"ArrowRight\") {\n        event.preventDefault()\n        scrollNext()\n      }\n    },\n    [scrollPrev, scrollNext]\n  )\n\n  React.useEffect(() => {\n    if (!api || !setApi) return\n    setApi(api)\n  }, [api, setApi])\n\n  React.useEffect(() => {\n    if (!api) return\n    onSelect(api)\n    api.on(\"reInit\", onSelect)\n    api.on(\"select\", onSelect)\n\n    return () => {\n      api?.off(\"select\", onSelect)\n    }\n  }, [api, onSelect])\n\n  return (\n    <CarouselContext.Provider\n      value={{\n        carouselRef,\n        api: api,\n        opts,\n        orientation:\n          orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n        scrollPrev,\n        scrollNext,\n        canScrollPrev,\n        canScrollNext,\n      }}\n    >\n      <div\n        onKeyDownCapture={handleKeyDown}\n        className={cn(\"relative\", className)}\n        role=\"region\"\n        aria-roledescription=\"carousel\"\n        data-slot=\"carousel\"\n        {...props}\n      >\n        {children}\n      </div>\n    </CarouselContext.Provider>\n  )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div\n      ref={carouselRef}\n      className=\"overflow-hidden\"\n      data-slot=\"carousel-content\"\n    >\n      <div\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      data-slot=\"carousel-item\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CarouselPrevious({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-previous\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"cn-carousel-previous absolute touch-manipulation\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -left-12 -translate-y-1/2\"\n          : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronLeftIcon\"\n        tabler=\"IconChevronLeft\"\n        hugeicons=\"ArrowLeft01Icon\"\n        phosphor=\"CaretLeftIcon\"\n        remixicon=\"RiArrowLeftSLine\"\n        className=\"cn-rtl-flip\"\n      />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n}\n\nfunction CarouselNext({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-next\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"cn-carousel-next absolute touch-manipulation\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -right-12 -translate-y-1/2\"\n          : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        className=\"cn-rtl-flip\"\n      />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n}\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n  useCarousel,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/chart.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode\n    icon?: React.ComponentType\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  )\n}\n\ntype ChartContextProps = {\n  config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n  const context = React.useContext(ChartContext)\n\n  if (!context) {\n    throw new Error(\"useChart must be used within a <ChartContainer />\")\n  }\n\n  return context\n}\n\nfunction ChartContainer({\n  id,\n  className,\n  children,\n  config,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  config: ChartConfig\n  children: React.ComponentProps<\n    typeof RechartsPrimitive.ResponsiveContainer\n  >[\"children\"]\n}) {\n  const uniqueId = React.useId()\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-slot=\"chart\"\n        data-chart={chartId}\n        className={cn(\n          \"cn-chart flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n          className\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([, config]) => config.theme || config.color\n  )\n\n  if (!colorConfig.length) {\n    return null\n  }\n\n  return (\n    <style\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color\n    return color ? `  --color-${key}: ${color};` : null\n  })\n  .join(\"\\n\")}\n}\n`\n          )\n          .join(\"\\n\"),\n      }}\n    />\n  )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n  active,\n  payload,\n  className,\n  indicator = \"dot\",\n  hideLabel = false,\n  hideIndicator = false,\n  label,\n  labelFormatter,\n  labelClassName,\n  formatter,\n  color,\n  nameKey,\n  labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n  React.ComponentProps<\"div\"> & {\n    hideLabel?: boolean\n    hideIndicator?: boolean\n    indicator?: \"line\" | \"dot\" | \"dashed\"\n    nameKey?: string\n    labelKey?: string\n  }) {\n  const { config } = useChart()\n\n  const tooltipLabel = React.useMemo(() => {\n    if (hideLabel || !payload?.length) {\n      return null\n    }\n\n    const [item] = payload\n    const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\n    const value =\n      !labelKey && typeof label === \"string\"\n        ? config[label as keyof typeof config]?.label || label\n        : itemConfig?.label\n\n    if (labelFormatter) {\n      return (\n        <div className={cn(\"font-medium\", labelClassName)}>\n          {labelFormatter(value, payload)}\n        </div>\n      )\n    }\n\n    if (!value) {\n      return null\n    }\n\n    return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n  }, [\n    label,\n    labelFormatter,\n    payload,\n    hideLabel,\n    labelClassName,\n    config,\n    labelKey,\n  ])\n\n  if (!active || !payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\"cn-chart-tooltip grid min-w-32 items-start\", className)}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload\n          .filter((item) => item.type !== \"none\")\n          .map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\n            const indicatorColor = color || item.payload.fill || item.color\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                  indicator === \"dot\" && \"items-center\"\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n                            {\n                              \"h-2.5 w-2.5\": indicator === \"dot\",\n                              \"w-1\": indicator === \"line\",\n                              \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                                indicator === \"dashed\",\n                              \"my-0.5\": nestLabel && indicator === \"dashed\",\n                            }\n                          )}\n                          style={\n                            {\n                              \"--color-bg\": indicatorColor,\n                              \"--color-border\": indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        \"flex flex-1 justify-between leading-none\",\n                        nestLabel ? \"items-end\" : \"items-center\"\n                      )}\n                    >\n                      <div className=\"grid gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            )\n          })}\n      </div>\n    </div>\n  )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n  className,\n  hideIcon = false,\n  payload,\n  verticalAlign = \"bottom\",\n  nameKey,\n}: React.ComponentProps<\"div\"> &\n  Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n    hideIcon?: boolean\n    nameKey?: string\n  }) {\n  const { config } = useChart()\n\n  if (!payload?.length) {\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\n        \"flex items-center justify-center gap-4\",\n        verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n        className\n      )}\n    >\n      {payload\n        .filter((item) => item.type !== \"none\")\n        .map((item) => {\n          const key = `${nameKey || item.dataKey || \"value\"}`\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          )\n        })}\n    </div>\n  )\n}\n\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string\n) {\n  if (typeof payload !== \"object\" || payload === null) {\n    return undefined\n  }\n\n  const payloadPayload =\n    \"payload\" in payload &&\n    typeof payload.payload === \"object\" &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined\n\n  let configLabelKey: string = key\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === \"string\"\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config]\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/checkbox.tsx",
    "content": "\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"cn-checkbox peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"cn-checkbox-indicator grid place-content-center text-current transition-none\"\n      >\n        <IconPlaceholder\n          lucide=\"CheckIcon\"\n          tabler=\"IconCheck\"\n          hugeicons=\"Tick02Icon\"\n          phosphor=\"CheckIcon\"\n          remixicon=\"RiCheckLine\"\n        />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/collapsible.tsx",
    "content": "\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"@base-ui/react/collapsible\"\n\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\n  return (\n    <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />\n  )\n}\n\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\n  return (\n    <CollapsiblePrimitive.Panel data-slot=\"collapsible-content\" {...props} />\n  )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/combobox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n  return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Trigger.Props) {\n  return (\n    <ComboboxPrimitive.Trigger\n      data-slot=\"combobox-trigger\"\n      className={cn(\"cn-combobox-trigger\", className)}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"ChevronDownIcon\"\n        tabler=\"IconChevronDown\"\n        hugeicons=\"ArrowDown01Icon\"\n        phosphor=\"CaretDownIcon\"\n        remixicon=\"RiArrowDownSLine\"\n        className=\"cn-combobox-trigger-icon pointer-events-none\"\n      />\n    </ComboboxPrimitive.Trigger>\n  )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n  return (\n    <ComboboxPrimitive.Clear\n      data-slot=\"combobox-clear\"\n      render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n      className={cn(\"cn-combobox-clear\", className)}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"XIcon\"\n        tabler=\"IconX\"\n        hugeicons=\"Cancel01Icon\"\n        phosphor=\"XIcon\"\n        remixicon=\"RiCloseLine\"\n        className=\"cn-combobox-clear-icon pointer-events-none\"\n      />\n    </ComboboxPrimitive.Clear>\n  )\n}\n\nfunction ComboboxInput({\n  className,\n  children,\n  disabled = false,\n  showTrigger = true,\n  showClear = false,\n  ...props\n}: ComboboxPrimitive.Input.Props & {\n  showTrigger?: boolean\n  showClear?: boolean\n}) {\n  return (\n    <InputGroup className={cn(\"cn-combobox-input w-auto\", className)}>\n      <ComboboxPrimitive.Input\n        render={<InputGroupInput disabled={disabled} />}\n        {...props}\n      />\n      <InputGroupAddon align=\"inline-end\">\n        {showTrigger && (\n          <InputGroupButton\n            size=\"icon-xs\"\n            variant=\"ghost\"\n            render={<ComboboxTrigger />}\n            data-slot=\"input-group-button\"\n            className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n            disabled={disabled}\n          />\n        )}\n        {showClear && <ComboboxClear disabled={disabled} />}\n      </InputGroupAddon>\n      {children}\n    </InputGroup>\n  )\n}\n\nfunction ComboboxContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 6,\n  align = \"start\",\n  alignOffset = 0,\n  anchor,\n  ...props\n}: ComboboxPrimitive.Popup.Props &\n  Pick<\n    ComboboxPrimitive.Positioner.Props,\n    \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n  >) {\n  return (\n    <ComboboxPrimitive.Portal>\n      <ComboboxPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        anchor={anchor}\n        className=\"isolate z-50\"\n      >\n        <ComboboxPrimitive.Popup\n          data-slot=\"combobox-content\"\n          data-chips={!!anchor}\n          className={cn(\n            \"cn-combobox-content cn-combobox-content-logical cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) data-[chips=true]:min-w-(--anchor-width)\",\n            className\n          )}\n          {...props}\n        />\n      </ComboboxPrimitive.Positioner>\n    </ComboboxPrimitive.Portal>\n  )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n  return (\n    <ComboboxPrimitive.List\n      data-slot=\"combobox-list\"\n      className={cn(\n        \"cn-combobox-list overflow-y-auto overscroll-contain\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxItem({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Item.Props) {\n  return (\n    <ComboboxPrimitive.Item\n      data-slot=\"combobox-item\"\n      className={cn(\n        \"cn-combobox-item relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ComboboxPrimitive.ItemIndicator\n        render={<span className=\"cn-combobox-item-indicator\" />}\n      >\n        <IconPlaceholder\n          lucide=\"CheckIcon\"\n          tabler=\"IconCheck\"\n          hugeicons=\"Tick02Icon\"\n          phosphor=\"CheckIcon\"\n          remixicon=\"RiCheckLine\"\n          className=\"cn-combobox-item-indicator-icon pointer-events-none\"\n        />\n      </ComboboxPrimitive.ItemIndicator>\n    </ComboboxPrimitive.Item>\n  )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n  return (\n    <ComboboxPrimitive.Group\n      data-slot=\"combobox-group\"\n      className={cn(\"cn-combobox-group\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxLabel({\n  className,\n  ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n  return (\n    <ComboboxPrimitive.GroupLabel\n      data-slot=\"combobox-label\"\n      className={cn(\"cn-combobox-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n  return (\n    <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n  )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n  return (\n    <ComboboxPrimitive.Empty\n      data-slot=\"combobox-empty\"\n      className={cn(\"cn-combobox-empty\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxSeparator({\n  className,\n  ...props\n}: ComboboxPrimitive.Separator.Props) {\n  return (\n    <ComboboxPrimitive.Separator\n      data-slot=\"combobox-separator\"\n      className={cn(\"cn-combobox-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChips({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n  ComboboxPrimitive.Chips.Props) {\n  return (\n    <ComboboxPrimitive.Chips\n      data-slot=\"combobox-chips\"\n      className={cn(\"cn-combobox-chips\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChip({\n  className,\n  children,\n  showRemove = true,\n  ...props\n}: ComboboxPrimitive.Chip.Props & {\n  showRemove?: boolean\n}) {\n  return (\n    <ComboboxPrimitive.Chip\n      data-slot=\"combobox-chip\"\n      className={cn(\n        \"cn-combobox-chip has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showRemove && (\n        <ComboboxPrimitive.ChipRemove\n          render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n          className=\"cn-combobox-chip-remove\"\n          data-slot=\"combobox-chip-remove\"\n        >\n          <IconPlaceholder\n            lucide=\"XIcon\"\n            tabler=\"IconX\"\n            hugeicons=\"Cancel01Icon\"\n            phosphor=\"XIcon\"\n            remixicon=\"RiCloseLine\"\n            className=\"cn-combobox-chip-indicator-icon pointer-events-none\"\n          />\n        </ComboboxPrimitive.ChipRemove>\n      )}\n    </ComboboxPrimitive.Chip>\n  )\n}\n\nfunction ComboboxChipsInput({\n  className,\n  ...props\n}: ComboboxPrimitive.Input.Props) {\n  return (\n    <ComboboxPrimitive.Input\n      data-slot=\"combobox-chip-input\"\n      className={cn(\n        \"cn-combobox-chip-input min-w-16 flex-1 outline-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction useComboboxAnchor() {\n  return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n  Combobox,\n  ComboboxInput,\n  ComboboxContent,\n  ComboboxList,\n  ComboboxItem,\n  ComboboxGroup,\n  ComboboxLabel,\n  ComboboxCollection,\n  ComboboxEmpty,\n  ComboboxSeparator,\n  ComboboxChips,\n  ComboboxChip,\n  ComboboxChipsInput,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Command({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n  return (\n    <CommandPrimitive\n      data-slot=\"command\"\n      className={cn(\n        \"cn-command flex size-full flex-col overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandDialog({\n  title = \"Command Palette\",\n  description = \"Search for a command to run...\",\n  children,\n  className,\n  showCloseButton = false,\n  ...props\n}: Omit<React.ComponentProps<typeof Dialog>, \"children\"> & {\n  title?: string\n  description?: string\n  className?: string\n  showCloseButton?: boolean\n  children: React.ReactNode\n}) {\n  return (\n    <Dialog {...props}>\n      <DialogHeader className=\"sr-only\">\n        <DialogTitle>{title}</DialogTitle>\n        <DialogDescription>{description}</DialogDescription>\n      </DialogHeader>\n      <DialogContent\n        className={cn(\n          \"cn-command-dialog top-1/3 translate-y-0 overflow-hidden p-0\",\n          className\n        )}\n        showCloseButton={showCloseButton}\n      >\n        {children}\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction CommandInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n  return (\n    <div data-slot=\"command-input-wrapper\" className=\"cn-command-input-wrapper\">\n      <InputGroup className=\"cn-command-input-group\">\n        <CommandPrimitive.Input\n          data-slot=\"command-input\"\n          className={cn(\n            \"cn-command-input outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n            className\n          )}\n          {...props}\n        />\n        <InputGroupAddon>\n          <IconPlaceholder\n            lucide=\"SearchIcon\"\n            tabler=\"IconSearch\"\n            hugeicons=\"SearchIcon\"\n            phosphor=\"MagnifyingGlassIcon\"\n            remixicon=\"RiSearchLine\"\n            className=\"cn-command-input-icon\"\n          />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n\nfunction CommandList({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n  return (\n    <CommandPrimitive.List\n      data-slot=\"command-list\"\n      className={cn(\n        \"cn-command-list overflow-x-hidden overflow-y-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandEmpty({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n  return (\n    <CommandPrimitive.Empty\n      data-slot=\"command-empty\"\n      className={cn(\"cn-command-empty\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n  return (\n    <CommandPrimitive.Group\n      data-slot=\"command-group\"\n      className={cn(\"cn-command-group\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n  return (\n    <CommandPrimitive.Separator\n      data-slot=\"command-separator\"\n      className={cn(\"cn-command-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n  return (\n    <CommandPrimitive.Item\n      data-slot=\"command-item\"\n      className={cn(\n        \"cn-command-item group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"CheckIcon\"\n        tabler=\"IconCheck\"\n        hugeicons=\"Tick02Icon\"\n        phosphor=\"CheckIcon\"\n        remixicon=\"RiCheckLine\"\n        className=\"cn-command-item-indicator ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\"\n      />\n    </CommandPrimitive.Item>\n  )\n}\n\nfunction CommandShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"command-shortcut\"\n      className={cn(\"cn-command-shortcut\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"@base-ui/react/context-menu\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {\n  return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {\n  return (\n    <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n  )\n}\n\nfunction ContextMenuTrigger({\n  className,\n  ...props\n}: ContextMenuPrimitive.Trigger.Props) {\n  return (\n    <ContextMenuPrimitive.Trigger\n      data-slot=\"context-menu-trigger\"\n      className={cn(\"cn-context-menu-trigger select-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuContent({\n  className,\n  align = \"start\",\n  alignOffset = 4,\n  side = \"right\",\n  sideOffset = 0,\n  ...props\n}: ContextMenuPrimitive.Popup.Props &\n  Pick<\n    ContextMenuPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <ContextMenuPrimitive.Portal>\n      <ContextMenuPrimitive.Positioner\n        className=\"isolate z-50 outline-none\"\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n      >\n        <ContextMenuPrimitive.Popup\n          data-slot=\"context-menu-content\"\n          className={cn(\n            \"cn-context-menu-content cn-context-menu-content-logical cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none\",\n            className\n          )}\n          {...props}\n        />\n      </ContextMenuPrimitive.Positioner>\n    </ContextMenuPrimitive.Portal>\n  )\n}\n\nfunction ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {\n  return (\n    <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n  )\n}\n\nfunction ContextMenuLabel({\n  className,\n  inset,\n  ...props\n}: ContextMenuPrimitive.GroupLabel.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.GroupLabel\n      data-slot=\"context-menu-label\"\n      data-inset={inset}\n      className={cn(\"cn-context-menu-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: ContextMenuPrimitive.Item.Props & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <ContextMenuPrimitive.Item\n      data-slot=\"context-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"cn-context-menu-item group/context-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {\n  return (\n    <ContextMenuPrimitive.SubmenuRoot data-slot=\"context-menu-sub\" {...props} />\n  )\n}\n\nfunction ContextMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: ContextMenuPrimitive.SubmenuTrigger.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.SubmenuTrigger\n      data-slot=\"context-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"cn-context-menu-sub-trigger flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        className=\"cn-rtl-flip ml-auto\"\n      />\n    </ContextMenuPrimitive.SubmenuTrigger>\n  )\n}\n\nfunction ContextMenuSubContent({\n  ...props\n}: React.ComponentProps<typeof ContextMenuContent>) {\n  return (\n    <ContextMenuContent\n      data-slot=\"context-menu-sub-content\"\n      className=\"cn-context-menu-subcontent cn-menu-target cn-menu-translucent\"\n      side=\"right\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: ContextMenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      data-slot=\"context-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-context-menu-checkbox-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"cn-context-menu-item-indicator pointer-events-none\">\n        <ContextMenuPrimitive.CheckboxItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </ContextMenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction ContextMenuRadioGroup({\n  ...props\n}: ContextMenuPrimitive.RadioGroup.Props) {\n  return (\n    <ContextMenuPrimitive.RadioGroup\n      data-slot=\"context-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: ContextMenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.RadioItem\n      data-slot=\"context-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-context-menu-radio-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"cn-context-menu-item-indicator pointer-events-none\">\n        <ContextMenuPrimitive.RadioItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </ContextMenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.RadioItem>\n  )\n}\n\nfunction ContextMenuSeparator({\n  className,\n  ...props\n}: ContextMenuPrimitive.Separator.Props) {\n  return (\n    <ContextMenuPrimitive.Separator\n      data-slot=\"context-menu-separator\"\n      className={cn(\"cn-context-menu-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"context-menu-shortcut\"\n      className={cn(\"cn-context-menu-shortcut\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ContextMenu,\n  ContextMenuTrigger,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuCheckboxItem,\n  ContextMenuRadioItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuGroup,\n  ContextMenuPortal,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuRadioGroup,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: DialogPrimitive.Backdrop.Props) {\n  return (\n    <DialogPrimitive.Backdrop\n      data-slot=\"dialog-overlay\"\n      className={cn(\"cn-dialog-overlay fixed inset-0 isolate z-50\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: DialogPrimitive.Popup.Props & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal>\n      <DialogOverlay />\n      <DialogPrimitive.Popup\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"cn-dialog-content fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close\n            data-slot=\"dialog-close\"\n            render={\n              <Button\n                variant=\"ghost\"\n                className=\"cn-dialog-close\"\n                size=\"icon-sm\"\n              />\n            }\n          >\n            <IconPlaceholder\n              lucide=\"XIcon\"\n              tabler=\"IconX\"\n              hugeicons=\"Cancel01Icon\"\n              phosphor=\"XIcon\"\n              remixicon=\"RiCloseLine\"\n            />\n            <span className=\"sr-only\">Close</span>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Popup>\n    </DialogPortal>\n  )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-header\"\n      className={cn(\"cn-dialog-header flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogFooter({\n  className,\n  showCloseButton = false,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        \"cn-dialog-footer flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n          Close\n        </DialogPrimitive.Close>\n      )}\n    </div>\n  )\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn(\"cn-dialog-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: DialogPrimitive.Description.Props) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\"cn-dialog-description\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/direction.tsx",
    "content": "\"use client\"\n\nexport {\n  DirectionProvider,\n  useDirection,\n} from \"@base-ui/react/direction-provider\"\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/drawer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n  return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\"cn-drawer-overlay fixed inset-0 z-50\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n  return (\n    <DrawerPortal data-slot=\"drawer-portal\">\n      <DrawerOverlay />\n      <DrawerPrimitive.Content\n        data-slot=\"drawer-content\"\n        className={cn(\n          \"cn-drawer-content group/drawer-content fixed z-50\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"cn-drawer-handle mx-auto hidden shrink-0 group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n        {children}\n      </DrawerPrimitive.Content>\n    </DrawerPortal>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\"cn-drawer-header flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\"cn-drawer-footer mt-auto flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\"cn-drawer-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"cn-drawer-description\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n  return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n  return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n  return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n  align = \"start\",\n  alignOffset = 0,\n  side = \"bottom\",\n  sideOffset = 4,\n  className,\n  ...props\n}: MenuPrimitive.Popup.Props &\n  Pick<\n    MenuPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <MenuPrimitive.Portal>\n      <MenuPrimitive.Positioner\n        className=\"isolate z-50 outline-none\"\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n      >\n        <MenuPrimitive.Popup\n          data-slot=\"dropdown-menu-content\"\n          className={cn(\n            \"cn-dropdown-menu-content cn-dropdown-menu-content-logical cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden\",\n            className\n          )}\n          {...props}\n        />\n      </MenuPrimitive.Positioner>\n    </MenuPrimitive.Portal>\n  )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n  return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: MenuPrimitive.GroupLabel.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.GroupLabel\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\"cn-dropdown-menu-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: MenuPrimitive.Item.Props & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <MenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"cn-dropdown-menu-item group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n  return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.SubmenuTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"cn-dropdown-menu-sub-trigger flex cursor-default items-center outline-hidden select-none data-popup-open:bg-accent data-popup-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        className=\"cn-rtl-flip ml-auto\"\n      />\n    </MenuPrimitive.SubmenuTrigger>\n  )\n}\n\nfunction DropdownMenuSubContent({\n  align = \"start\",\n  alignOffset = -3,\n  side = \"right\",\n  sideOffset = 0,\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n  return (\n    <DropdownMenuContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"cn-dropdown-menu-sub-content cn-menu-target cn-menu-translucent w-auto\",\n        className\n      )}\n      align={align}\n      alignOffset={alignOffset}\n      side={side}\n      sideOffset={sideOffset}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-dropdown-menu-checkbox-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span\n        className=\"cn-dropdown-menu-item-indicator pointer-events-none\"\n        data-slot=\"dropdown-menu-checkbox-item-indicator\"\n      >\n        <MenuPrimitive.CheckboxItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </MenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n  return (\n    <MenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: MenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-dropdown-menu-radio-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      <span\n        className=\"cn-dropdown-menu-item-indicator pointer-events-none\"\n        data-slot=\"dropdown-menu-radio-item-indicator\"\n      >\n        <MenuPrimitive.RadioItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </MenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.RadioItem>\n  )\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: MenuPrimitive.Separator.Props) {\n  return (\n    <MenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"cn-dropdown-menu-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\"cn-dropdown-menu-shortcut\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/empty.tsx",
    "content": "import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty\"\n      className={cn(\n        \"cn-empty flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-header\"\n      className={cn(\n        \"cn-empty-header flex max-w-sm flex-col items-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst emptyMediaVariants = cva(\n  \"cn-empty-media flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-empty-media-default\",\n        icon: \"cn-empty-media-icon\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction EmptyMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n  return (\n    <div\n      data-slot=\"empty-icon\"\n      data-variant={variant}\n      className={cn(emptyMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-title\"\n      className={cn(\"cn-empty-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <div\n      data-slot=\"empty-description\"\n      className={cn(\n        \"cn-empty-description text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-content\"\n      className={cn(\n        \"cn-empty-content flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Empty,\n  EmptyHeader,\n  EmptyTitle,\n  EmptyDescription,\n  EmptyContent,\n  EmptyMedia,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/field.tsx",
    "content": "\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n  return (\n    <fieldset\n      data-slot=\"field-set\"\n      className={cn(\"cn-field-set flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLegend({\n  className,\n  variant = \"legend\",\n  ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n  return (\n    <legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\"cn-field-legend\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\n        \"cn-field-group group/field-group @container/field-group flex w-full flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst fieldVariants = cva(\"cn-field group/field flex w-full\", {\n  variants: {\n    orientation: {\n      vertical:\n        \"cn-field-orientation-vertical flex-col *:w-full [&>.sr-only]:w-auto\",\n      horizontal:\n        \"cn-field-orientation-horizontal flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n      responsive:\n        \"cn-field-orientation-responsive flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n    },\n  },\n  defaultVariants: {\n    orientation: \"vertical\",\n  },\n})\n\nfunction Field({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"field\"\n      data-orientation={orientation}\n      className={cn(fieldVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn(\n        \"cn-field-content group/field-content flex flex-1 flex-col leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof Label>) {\n  return (\n    <Label\n      data-slot=\"field-label\"\n      className={cn(\n        \"cn-field-label group/field-label peer/field-label flex w-fit leading-snug\",\n        \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-label\"\n      className={cn(\n        \"cn-field-title flex w-fit items-center leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        \"cn-field-description leading-normal font-normal group-has-data-horizontal/field:text-balance\",\n        \"last:mt-0 nth-last-2:-mt-1\",\n        \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  children?: React.ReactNode\n}) {\n  return (\n    <div\n      data-slot=\"field-separator\"\n      data-content={!!children}\n      className={cn(\"cn-field-separator relative\", className)}\n      {...props}\n    >\n      <Separator className=\"absolute inset-0 top-1/2\" />\n      {children && (\n        <span\n          className=\"cn-field-separator-content relative mx-auto block w-fit bg-background\"\n          data-slot=\"field-separator-content\"\n        >\n          {children}\n        </span>\n      )}\n    </div>\n  )\n}\n\nfunction FieldError({\n  className,\n  children,\n  errors,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  errors?: Array<{ message?: string } | undefined>\n}) {\n  const content = useMemo(() => {\n    if (children) {\n      return children\n    }\n\n    if (!errors?.length) {\n      return null\n    }\n\n    const uniqueErrors = [\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\n    ]\n\n    if (uniqueErrors?.length == 1) {\n      return uniqueErrors[0]?.message\n    }\n\n    return (\n      <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n        {uniqueErrors.map(\n          (error, index) =>\n            error?.message && <li key={index}>{error.message}</li>\n        )}\n      </ul>\n    )\n  }, [children, errors])\n\n  if (!content) {\n    return null\n  }\n\n  return (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      className={cn(\"cn-field-error font-normal\", className)}\n      {...props}\n    >\n      {content}\n    </div>\n  )\n}\n\nexport {\n  Field,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldContent,\n  FieldTitle,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/hover-card.tsx",
    "content": "\"use client\"\n\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\n  return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n  return (\n    <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n  )\n}\n\nfunction HoverCardContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 4,\n  ...props\n}: PreviewCardPrimitive.Popup.Props &\n  Pick<\n    PreviewCardPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n      <PreviewCardPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <PreviewCardPrimitive.Popup\n          data-slot=\"hover-card-content\"\n          className={cn(\n            \"cn-hover-card-content cn-hover-card-content-logical z-50 origin-(--transform-origin) outline-hidden\",\n            className\n          )}\n          {...props}\n        />\n      </PreviewCardPrimitive.Positioner>\n    </PreviewCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { Textarea } from \"@/registry/bases/base/ui/textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-group\"\n      role=\"group\"\n      className={cn(\n        \"group/input-group cn-input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupAddonVariants = cva(\n  \"cn-input-group-addon flex cursor-text items-center justify-center select-none\",\n  {\n    variants: {\n      align: {\n        \"inline-start\": \"cn-input-group-addon-align-inline-start order-first\",\n        \"inline-end\": \"cn-input-group-addon-align-inline-end order-last\",\n        \"block-start\":\n          \"cn-input-group-addon-align-block-start order-first w-full justify-start\",\n        \"block-end\":\n          \"cn-input-group-addon-align-block-end order-last w-full justify-start\",\n      },\n    },\n    defaultVariants: {\n      align: \"inline-start\",\n    },\n  }\n)\n\nfunction InputGroupAddon({\n  className,\n  align = \"inline-start\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"input-group-addon\"\n      data-align={align}\n      className={cn(inputGroupAddonVariants({ align }), className)}\n      onClick={(e) => {\n        if ((e.target as HTMLElement).closest(\"button\")) {\n          return\n        }\n        e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n      }}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupButtonVariants = cva(\n  \"cn-input-group-button flex items-center shadow-none\",\n  {\n    variants: {\n      size: {\n        xs: \"cn-input-group-button-size-xs\",\n        sm: \"cn-input-group-button-size-sm\",\n        \"icon-xs\": \"cn-input-group-button-size-icon-xs\",\n        \"icon-sm\": \"cn-input-group-button-size-icon-sm\",\n      },\n    },\n    defaultVariants: {\n      size: \"xs\",\n    },\n  }\n)\n\nfunction InputGroupButton({\n  className,\n  type = \"button\",\n  variant = \"ghost\",\n  size = \"xs\",\n  ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\" | \"type\"> &\n  VariantProps<typeof inputGroupButtonVariants> & {\n    type?: \"button\" | \"submit\" | \"reset\"\n  }) {\n  return (\n    <Button\n      type={type}\n      data-size={size}\n      variant={variant}\n      className={cn(inputGroupButtonVariants({ size }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      className={cn(\n        \"cn-input-group-text flex items-center [&_svg]:pointer-events-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupInput({\n  className,\n  ...props\n}: React.ComponentProps<\"input\">) {\n  return (\n    <Input\n      data-slot=\"input-group-control\"\n      className={cn(\"cn-input-group-input flex-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupTextarea({\n  className,\n  ...props\n}: React.ComponentProps<\"textarea\">) {\n  return (\n    <Textarea\n      data-slot=\"input-group-control\"\n      className={cn(\"cn-input-group-textarea flex-1 resize-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupInput,\n  InputGroupTextarea,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/input-otp.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        \"cn-input-otp flex items-center has-disabled:opacity-50\",\n        containerClassName\n      )}\n      spellCheck={false}\n      className={cn(\n        \"cn-input-otp-input disabled:cursor-not-allowed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\"cn-input-otp-group flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  index: number\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext)\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        \"cn-input-otp-slot relative flex items-center justify-center data-[active=true]:z-10\",\n        className\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"cn-input-otp-caret pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"cn-input-otp-caret-line\" />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-separator\"\n      className=\"cn-input-otp-separator flex items-center\"\n      role=\"separator\"\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"MinusIcon\"\n        tabler=\"IconMinus\"\n        hugeicons=\"MinusSignIcon\"\n        phosphor=\"MinusIcon\"\n        remixicon=\"RiSubtractLine\"\n      />\n    </div>\n  )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/input.tsx",
    "content": "import * as React from \"react\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <InputPrimitive\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"cn-input w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/item.tsx",
    "content": "import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      role=\"list\"\n      data-slot=\"item-group\"\n      className={cn(\n        \"cn-item-group group/item-group flex w-full flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"item-separator\"\n      orientation=\"horizontal\"\n      className={cn(\"cn-item-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nconst itemVariants = cva(\n  \"cn-item group/item flex w-full flex-wrap items-center transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-item-variant-default\",\n        outline: \"cn-item-variant-outline\",\n        muted: \"cn-item-variant-muted\",\n      },\n      size: {\n        default: \"cn-item-size-default\",\n        sm: \"cn-item-size-sm\",\n        xs: \"cn-item-size-xs\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Item({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\"> & VariantProps<typeof itemVariants>) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(itemVariants({ variant, size, className })),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"item\",\n      variant,\n      size,\n    },\n  })\n}\n\nconst itemMediaVariants = cva(\n  \"cn-item-media flex shrink-0 items-center justify-center [&_svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-item-media-variant-default\",\n        icon: \"cn-item-media-variant-icon\",\n        image: \"cn-item-media-variant-image\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction ItemMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n  return (\n    <div\n      data-slot=\"item-media\"\n      data-variant={variant}\n      className={cn(itemMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-content\"\n      className={cn(\n        \"cn-item-content flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-title\"\n      className={cn(\n        \"cn-item-title cn-font-heading line-clamp-1 flex w-fit items-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"item-description\"\n      className={cn(\n        \"cn-item-description line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-actions\"\n      className={cn(\"cn-item-actions flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-header\"\n      className={cn(\n        \"cn-item-header flex basis-full items-center justify-between\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-footer\"\n      className={cn(\n        \"cn-item-footer flex basis-full items-center justify-between\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Item,\n  ItemMedia,\n  ItemContent,\n  ItemActions,\n  ItemGroup,\n  ItemSeparator,\n  ItemTitle,\n  ItemDescription,\n  ItemHeader,\n  ItemFooter,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/kbd.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      data-slot=\"kbd\"\n      className={cn(\n        \"cn-kbd pointer-events-none inline-flex items-center justify-center select-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <kbd\n      data-slot=\"kbd-group\"\n      className={cn(\"cn-kbd-group inline-flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Kbd, KbdGroup }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n  return (\n    <label\n      data-slot=\"label\"\n      className={cn(\n        \"cn-label flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\nimport { Menubar as MenubarPrimitive } from \"@base-ui/react/menubar\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Menubar({ className, ...props }: MenubarPrimitive.Props) {\n  return (\n    <MenubarPrimitive\n      data-slot=\"menubar\"\n      className={cn(\"cn-menubar flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\n  return <DropdownMenu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuGroup>) {\n  return <DropdownMenuGroup data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPortal>) {\n  return <DropdownMenuPortal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuTrigger>) {\n  return (\n    <DropdownMenuTrigger\n      data-slot=\"menubar-trigger\"\n      className={cn(\n        \"cn-menubar-trigger flex items-center outline-hidden select-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarContent({\n  className,\n  align = \"start\",\n  alignOffset = -4,\n  sideOffset = 8,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n  return (\n    <DropdownMenuContent\n      data-slot=\"menubar-content\"\n      align={align}\n      alignOffset={alignOffset}\n      sideOffset={sideOffset}\n      className={cn(\n        \"cn-menubar-content cn-menubar-content-logical cn-menu-target cn-menu-translucent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof DropdownMenuItem>) {\n  return (\n    <DropdownMenuItem\n      data-slot=\"menubar-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\"cn-menubar-item group/menubar-item\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.CheckboxItem\n      data-slot=\"menubar-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-menubar-checkbox-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"cn-menubar-checkbox-item-indicator pointer-events-none absolute flex items-center justify-center\">\n        <MenuPrimitive.CheckboxItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </MenuPrimitive.CheckboxItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction MenubarRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {\n  return <DropdownMenuRadioGroup data-slot=\"menubar-radio-group\" {...props} />\n}\n\nfunction MenubarRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: MenuPrimitive.RadioItem.Props & {\n  inset?: boolean\n}) {\n  return (\n    <MenuPrimitive.RadioItem\n      data-slot=\"menubar-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-menubar-radio-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"cn-menubar-radio-item-indicator pointer-events-none absolute flex items-center justify-center\">\n        <MenuPrimitive.RadioItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </MenuPrimitive.RadioItemIndicator>\n      </span>\n      {children}\n    </MenuPrimitive.RadioItem>\n  )\n}\n\nfunction MenubarLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuLabel> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuLabel\n      data-slot=\"menubar-label\"\n      data-inset={inset}\n      className={cn(\"cn-menubar-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSeparator>) {\n  return (\n    <DropdownMenuSeparator\n      data-slot=\"menubar-separator\"\n      className={cn(\"cn-menubar-separator -mx-1 my-1 h-px\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarShortcut({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuShortcut>) {\n  return (\n    <DropdownMenuShortcut\n      data-slot=\"menubar-shortcut\"\n      className={cn(\"cn-menubar-shortcut ml-auto\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSub>) {\n  return <DropdownMenuSub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuSubTrigger\n      data-slot=\"menubar-sub-trigger\"\n      data-inset={inset}\n      className={cn(\"cn-menubar-sub-trigger\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuSubContent>) {\n  return (\n    <DropdownMenuSubContent\n      data-slot=\"menubar-sub-content\"\n      className={cn(\n        \"cn-menubar-sub-content cn-menu-target cn-menu-translucent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Menubar,\n  MenubarPortal,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarGroup,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarItem,\n  MenubarShortcut,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSub,\n  MenubarSubTrigger,\n  MenubarSubContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/native-select.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\ntype NativeSelectProps = Omit<React.ComponentProps<\"select\">, \"size\"> & {\n  size?: \"sm\" | \"default\"\n}\n\nfunction NativeSelect({\n  className,\n  size = \"default\",\n  ...props\n}: NativeSelectProps) {\n  return (\n    <div\n      className={cn(\n        \"cn-native-select-wrapper group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n        className\n      )}\n      data-slot=\"native-select-wrapper\"\n      data-size={size}\n    >\n      <select\n        data-slot=\"native-select\"\n        data-size={size}\n        className=\"cn-native-select outline-none disabled:pointer-events-none disabled:cursor-not-allowed\"\n        {...props}\n      />\n      <IconPlaceholder\n        lucide=\"ChevronDownIcon\"\n        tabler=\"IconSelector\"\n        hugeicons=\"UnfoldMoreIcon\"\n        phosphor=\"CaretDownIcon\"\n        remixicon=\"RiArrowDownSLine\"\n        className=\"cn-native-select-icon pointer-events-none absolute select-none\"\n        aria-hidden=\"true\"\n        data-slot=\"native-select-icon\"\n      />\n    </div>\n  )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n  return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n  className,\n  ...props\n}: React.ComponentProps<\"optgroup\">) {\n  return (\n    <optgroup\n      data-slot=\"native-select-optgroup\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/navigation-menu.tsx",
    "content": "import { NavigationMenu as NavigationMenuPrimitive } from \"@base-ui/react/navigation-menu\"\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction NavigationMenu({\n  align = \"start\",\n  className,\n  children,\n  ...props\n}: NavigationMenuPrimitive.Root.Props &\n  Pick<NavigationMenuPrimitive.Positioner.Props, \"align\">) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      className={cn(\n        \"cn-navigation-menu group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <NavigationMenuPositioner align={align} />\n    </NavigationMenuPrimitive.Root>\n  )\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"cn-navigation-menu-list group flex flex-1 list-none items-center justify-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"cn-navigation-menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"cn-navigation-menu-trigger group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center outline-none disabled:pointer-events-none\"\n)\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: NavigationMenuPrimitive.Trigger.Props) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}{\" \"}\n      <IconPlaceholder\n        lucide=\"ChevronDownIcon\"\n        tabler=\"IconChevronDown\"\n        hugeicons=\"ArrowDown01Icon\"\n        phosphor=\"CaretDownIcon\"\n        remixicon=\"RiArrowDownSLine\"\n        className=\"cn-navigation-menu-trigger-icon\"\n        aria-hidden=\"true\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  )\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: NavigationMenuPrimitive.Content.Props) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"cn-navigation-menu-content data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto transition-[opacity,transform,translate] duration-[0.35s] data-ending-style:opacity-0 data-starting-style:opacity-0 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuPositioner({\n  className,\n  side = \"bottom\",\n  sideOffset = 8,\n  align = \"start\",\n  alignOffset = 0,\n  ...props\n}: NavigationMenuPrimitive.Positioner.Props) {\n  return (\n    <NavigationMenuPrimitive.Portal>\n      <NavigationMenuPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        className={cn(\n          \"cn-navigation-menu-positioner isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] data-instant:transition-none\",\n          className\n        )}\n        {...props}\n      >\n        <NavigationMenuPrimitive.Popup className=\"cn-navigation-menu-popup data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)]\">\n          <NavigationMenuPrimitive.Viewport className=\"relative size-full overflow-hidden\" />\n        </NavigationMenuPrimitive.Popup>\n      </NavigationMenuPrimitive.Positioner>\n    </NavigationMenuPrimitive.Portal>\n  )\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: NavigationMenuPrimitive.Link.Props) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\"cn-navigation-menu-link\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {\n  return (\n    <NavigationMenuPrimitive.Icon\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"cn-navigation-menu-indicator top-full z-1 flex h-1.5 items-end justify-center overflow-hidden\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"cn-navigation-menu-indicator-arrow relative top-[60%] h-2 w-2 rotate-45\" />\n    </NavigationMenuPrimitive.Icon>\n  )\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuIndicator,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n  NavigationMenuPositioner,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/pagination.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      role=\"navigation\"\n      aria-label=\"pagination\"\n      data-slot=\"pagination\"\n      className={cn(\n        \"cn-pagination mx-auto flex w-full justify-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationContent({\n  className,\n  ...props\n}: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"pagination-content\"\n      className={cn(\"cn-pagination-content flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n  return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n  isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n  React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n  className,\n  isActive,\n  size = \"icon\",\n  ...props\n}: PaginationLinkProps) {\n  return (\n    <Button\n      variant={isActive ? \"outline\" : \"ghost\"}\n      size={size}\n      className={cn(\"cn-pagination-link\", className)}\n      nativeButton={false}\n      render={\n        <a\n          aria-current={isActive ? \"page\" : undefined}\n          data-slot=\"pagination-link\"\n          data-active={isActive}\n          {...props}\n        />\n      }\n    />\n  )\n}\n\nfunction PaginationPrevious({\n  className,\n  text = \"Previous\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to previous page\"\n      size=\"default\"\n      className={cn(\"cn-pagination-previous\", className)}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronLeftIcon\"\n        tabler=\"IconChevronLeft\"\n        hugeicons=\"ArrowLeft01Icon\"\n        phosphor=\"CaretLeftIcon\"\n        remixicon=\"RiArrowLeftSLine\"\n        data-icon=\"inline-start\"\n        className=\"cn-rtl-flip\"\n      />\n      <span className=\"cn-pagination-previous-text hidden sm:block\">\n        {text}\n      </span>\n    </PaginationLink>\n  )\n}\n\nfunction PaginationNext({\n  className,\n  text = \"Next\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to next page\"\n      size=\"default\"\n      className={cn(\"cn-pagination-next\", className)}\n      {...props}\n    >\n      <span className=\"cn-pagination-next-text hidden sm:block\">{text}</span>\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        data-icon=\"inline-end\"\n        className=\"cn-rtl-flip\"\n      />\n    </PaginationLink>\n  )\n}\n\nfunction PaginationEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden\n      data-slot=\"pagination-ellipsis\"\n      className={cn(\n        \"cn-pagination-ellipsis flex items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"MoreHorizontalIcon\"\n        tabler=\"IconDots\"\n        hugeicons=\"MoreHorizontalCircle01Icon\"\n        phosphor=\"DotsThreeIcon\"\n        remixicon=\"RiMoreLine\"\n      />\n      <span className=\"sr-only\">More pages</span>\n    </span>\n  )\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  alignOffset = 0,\n  side = \"bottom\",\n  sideOffset = 4,\n  ...props\n}: PopoverPrimitive.Popup.Props &\n  Pick<\n    PopoverPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <PopoverPrimitive.Popup\n          data-slot=\"popover-content\"\n          className={cn(\n            \"cn-popover-content cn-popover-content-logical z-50 w-72 origin-(--transform-origin) outline-hidden\",\n            className\n          )}\n          {...props}\n        />\n      </PopoverPrimitive.Positioner>\n    </PopoverPrimitive.Portal>\n  )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-header\"\n      className={cn(\"cn-popover-header\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n  return (\n    <PopoverPrimitive.Title\n      data-slot=\"popover-title\"\n      className={cn(\"cn-popover-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverDescription({\n  className,\n  ...props\n}: PopoverPrimitive.Description.Props) {\n  return (\n    <PopoverPrimitive.Description\n      data-slot=\"popover-description\"\n      className={cn(\"cn-popover-description\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/progress.tsx",
    "content": "\"use client\"\n\nimport { Progress as ProgressPrimitive } from \"@base-ui/react/progress\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Progress({\n  className,\n  children,\n  value,\n  ...props\n}: ProgressPrimitive.Root.Props) {\n  return (\n    <ProgressPrimitive.Root\n      value={value}\n      data-slot=\"progress\"\n      className={cn(\"cn-progress-root flex flex-wrap gap-3\", className)}\n      {...props}\n    >\n      {children}\n      <ProgressTrack>\n        <ProgressIndicator />\n      </ProgressTrack>\n    </ProgressPrimitive.Root>\n  )\n}\n\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\n  return (\n    <ProgressPrimitive.Track\n      className={cn(\n        \"cn-progress-track relative flex w-full items-center overflow-x-hidden\",\n        className\n      )}\n      data-slot=\"progress-track\"\n      {...props}\n    />\n  )\n}\n\nfunction ProgressIndicator({\n  className,\n  ...props\n}: ProgressPrimitive.Indicator.Props) {\n  return (\n    <ProgressPrimitive.Indicator\n      data-slot=\"progress-indicator\"\n      className={cn(\"cn-progress-indicator h-full transition-all\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\n  return (\n    <ProgressPrimitive.Label\n      className={cn(\"cn-progress-label\", className)}\n      data-slot=\"progress-label\"\n      {...props}\n    />\n  )\n}\n\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\n  return (\n    <ProgressPrimitive.Value\n      className={cn(\"cn-progress-value\", className)}\n      data-slot=\"progress-value\"\n      {...props}\n    />\n  )\n}\n\nexport {\n  Progress,\n  ProgressTrack,\n  ProgressIndicator,\n  ProgressLabel,\n  ProgressValue,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/radio-group.tsx",
    "content": "\"use client\"\n\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\"\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\n  return (\n    <RadioGroupPrimitive\n      data-slot=\"radio-group\"\n      className={cn(\"cn-radio-group w-full\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\n  return (\n    <RadioPrimitive.Root\n      data-slot=\"radio-group-item\"\n      className={cn(\n        \"cn-radio-group-item group/radio-group-item peer relative aspect-square shrink-0 border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <RadioPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"cn-radio-group-indicator\"\n      >\n        <span className=\"cn-radio-group-indicator-icon\" />\n      </RadioPrimitive.Indicator>\n    </RadioPrimitive.Root>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/resizable.tsx",
    "content": "\"use client\"\n\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ResizablePanelGroup({\n  className,\n  ...props\n}: ResizablePrimitive.GroupProps) {\n  return (\n    <ResizablePrimitive.Group\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"cn-resizable-panel-group flex h-full w-full aria-[orientation=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: ResizablePrimitive.SeparatorProps & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.Separator\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"cn-resizable-handle relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"cn-resizable-handle-icon z-10 flex shrink-0\" />\n      )}\n    </ResizablePrimitive.Separator>\n  )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/scroll-area.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n  className,\n  children,\n  ...props\n}: ScrollAreaPrimitive.Root.Props) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn(\"cn-scroll-area relative\", className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        data-slot=\"scroll-area-viewport\"\n        className=\"cn-scroll-area-viewport size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  )\n}\n\nfunction ScrollBar({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n  return (\n    <ScrollAreaPrimitive.Scrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      data-orientation={orientation}\n      orientation={orientation}\n      className={cn(\n        \"cn-scroll-area-scrollbar flex touch-none p-px transition-colors select-none\",\n        className\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Thumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"cn-scroll-area-thumb relative flex-1 bg-border\"\n      />\n    </ScrollAreaPrimitive.Scrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n  return (\n    <SelectPrimitive.Group\n      data-slot=\"select-group\"\n      className={cn(\"cn-select-group\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n  return (\n    <SelectPrimitive.Value\n      data-slot=\"select-value\"\n      className={cn(\"cn-select-value\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: SelectPrimitive.Trigger.Props & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"cn-select-trigger flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon\n        render={\n          <IconPlaceholder\n            lucide=\"ChevronDownIcon\"\n            tabler=\"IconSelector\"\n            hugeicons=\"UnfoldMoreIcon\"\n            phosphor=\"CaretDownIcon\"\n            remixicon=\"RiArrowDownSLine\"\n            className=\"cn-select-trigger-icon pointer-events-none\"\n          />\n        }\n      />\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  side = \"bottom\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 0,\n  alignItemWithTrigger = true,\n  ...props\n}: SelectPrimitive.Popup.Props &\n  Pick<\n    SelectPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n  >) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        alignItemWithTrigger={alignItemWithTrigger}\n        className=\"isolate z-50\"\n      >\n        <SelectPrimitive.Popup\n          data-slot=\"select-content\"\n          data-align-trigger={alignItemWithTrigger}\n          className={cn(\n            \"cn-select-content cn-select-content-logical cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none\",\n            className\n          )}\n          {...props}\n        >\n          <SelectScrollUpButton />\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\n          <SelectScrollDownButton />\n        </SelectPrimitive.Popup>\n      </SelectPrimitive.Positioner>\n    </SelectPrimitive.Portal>\n  )\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: SelectPrimitive.GroupLabel.Props) {\n  return (\n    <SelectPrimitive.GroupLabel\n      data-slot=\"select-label\"\n      className={cn(\"cn-select-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: SelectPrimitive.Item.Props) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"cn-select-item relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      <SelectPrimitive.ItemText className=\"cn-select-item-text shrink-0 whitespace-nowrap\">\n        {children}\n      </SelectPrimitive.ItemText>\n      <SelectPrimitive.ItemIndicator\n        render={<span className=\"cn-select-item-indicator\" />}\n      >\n        <IconPlaceholder\n          lucide=\"CheckIcon\"\n          tabler=\"IconCheck\"\n          hugeicons=\"Tick02Icon\"\n          phosphor=\"CheckIcon\"\n          remixicon=\"RiCheckLine\"\n          className=\"cn-select-item-indicator-icon pointer-events-none\"\n        />\n      </SelectPrimitive.ItemIndicator>\n    </SelectPrimitive.Item>\n  )\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: SelectPrimitive.Separator.Props) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"cn-select-separator pointer-events-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n  return (\n    <SelectPrimitive.ScrollUpArrow\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\"cn-select-scroll-up-button top-0 w-full\", className)}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronUpIcon\"\n        tabler=\"IconChevronUp\"\n        hugeicons=\"ArrowUp01Icon\"\n        phosphor=\"CaretUpIcon\"\n        remixicon=\"RiArrowUpSLine\"\n      />\n    </SelectPrimitive.ScrollUpArrow>\n  )\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n  return (\n    <SelectPrimitive.ScrollDownArrow\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\"cn-select-scroll-down-button bottom-0 w-full\", className)}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronDownIcon\"\n        tabler=\"IconChevronDown\"\n        hugeicons=\"ArrowDown01Icon\"\n        phosphor=\"CaretDownIcon\"\n        remixicon=\"RiArrowDownSLine\"\n      />\n    </SelectPrimitive.ScrollDownArrow>\n  )\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/separator.tsx",
    "content": "\"use client\"\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Separator({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: SeparatorPrimitive.Props) {\n  return (\n    <SeparatorPrimitive\n      data-slot=\"separator\"\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Separator }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n  return (\n    <SheetPrimitive.Backdrop\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        \"cn-sheet-overlay fixed inset-0 z-50 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  showCloseButton = true,\n  ...props\n}: SheetPrimitive.Popup.Props & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n  showCloseButton?: boolean\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Popup\n        data-slot=\"sheet-content\"\n        data-side={side}\n        className={cn(\n          \"cn-sheet-content data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem]\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <SheetPrimitive.Close\n            data-slot=\"sheet-close\"\n            render={\n              <Button\n                variant=\"ghost\"\n                className=\"cn-sheet-close\"\n                size=\"icon-sm\"\n              />\n            }\n          >\n            <IconPlaceholder\n              lucide=\"XIcon\"\n              tabler=\"IconX\"\n              hugeicons=\"Cancel01Icon\"\n              phosphor=\"XIcon\"\n              remixicon=\"RiCloseLine\"\n            />\n            <span className=\"sr-only\">Close</span>\n          </SheetPrimitive.Close>\n        )}\n      </SheetPrimitive.Popup>\n    </SheetPortal>\n  )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn(\"cn-sheet-header flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn(\"cn-sheet-footer mt-auto flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn(\"cn-sheet-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: SheetPrimitive.Description.Props) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn(\"cn-sheet-description\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { useIsMobile } from \"@/registry/bases/base/hooks/use-mobile\"\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/registry/bases/base/ui/sheet\"\nimport { Skeleton } from \"@/registry/bases/base/ui/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n  state: \"expanded\" | \"collapsed\"\n  open: boolean\n  setOpen: (open: boolean) => void\n  openMobile: boolean\n  setOpenMobile: (open: boolean) => void\n  isMobile: boolean\n  toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n  const context = React.useContext(SidebarContext)\n  if (!context) {\n    throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n  }\n\n  return context\n}\n\nfunction SidebarProvider({\n  defaultOpen = true,\n  open: openProp,\n  onOpenChange: setOpenProp,\n  className,\n  style,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  defaultOpen?: boolean\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}) {\n  const isMobile = useIsMobile()\n  const [openMobile, setOpenMobile] = React.useState(false)\n\n  // This is the internal state of the sidebar.\n  // We use openProp and setOpenProp for control from outside the component.\n  const [_open, _setOpen] = React.useState(defaultOpen)\n  const open = openProp ?? _open\n  const setOpen = React.useCallback(\n    (value: boolean | ((value: boolean) => boolean)) => {\n      const openState = typeof value === \"function\" ? value(open) : value\n      if (setOpenProp) {\n        setOpenProp(openState)\n      } else {\n        _setOpen(openState)\n      }\n\n      // This sets the cookie to keep the sidebar state.\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n    },\n    [setOpenProp, open]\n  )\n\n  // Helper to toggle the sidebar.\n  const toggleSidebar = React.useCallback(() => {\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n  }, [isMobile, setOpen, setOpenMobile])\n\n  // Adds a keyboard shortcut to toggle the sidebar.\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n        (event.metaKey || event.ctrlKey)\n      ) {\n        event.preventDefault()\n        toggleSidebar()\n      }\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n    return () => window.removeEventListener(\"keydown\", handleKeyDown)\n  }, [toggleSidebar])\n\n  // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n  // This makes it easier to style the sidebar with Tailwind classes.\n  const state = open ? \"expanded\" : \"collapsed\"\n\n  const contextValue = React.useMemo<SidebarContextProps>(\n    () => ({\n      state,\n      open,\n      setOpen,\n      isMobile,\n      openMobile,\n      setOpenMobile,\n      toggleSidebar,\n    }),\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n  )\n\n  return (\n    <SidebarContext.Provider value={contextValue}>\n      <div\n        data-slot=\"sidebar-wrapper\"\n        style={\n          {\n            \"--sidebar-width\": SIDEBAR_WIDTH,\n            \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n            ...style,\n          } as React.CSSProperties\n        }\n        className={cn(\n          \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    </SidebarContext.Provider>\n  )\n}\n\nfunction Sidebar({\n  side = \"left\",\n  variant = \"sidebar\",\n  collapsible = \"offcanvas\",\n  className,\n  children,\n  dir,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  side?: \"left\" | \"right\"\n  variant?: \"sidebar\" | \"floating\" | \"inset\"\n  collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n  if (collapsible === \"none\") {\n    return (\n      <div\n        data-slot=\"sidebar\"\n        className={cn(\n          \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n\n  if (isMobile) {\n    return (\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n        <SheetContent\n          dir={dir}\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar\"\n          data-mobile=\"true\"\n          className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n          style={\n            {\n              \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n            } as React.CSSProperties\n          }\n          side={side}\n        >\n          <SheetHeader className=\"sr-only\">\n            <SheetTitle>Sidebar</SheetTitle>\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n          </SheetHeader>\n          <div className=\"flex h-full w-full flex-col\">{children}</div>\n        </SheetContent>\n      </Sheet>\n    )\n  }\n\n  return (\n    <div\n      className=\"group peer hidden text-sidebar-foreground md:block\"\n      data-state={state}\n      data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n      data-variant={variant}\n      data-side={side}\n      data-slot=\"sidebar\"\n    >\n      {/* This is what handles the sidebar gap on desktop */}\n      <div\n        data-slot=\"sidebar-gap\"\n        className={cn(\n          \"cn-sidebar-gap relative w-(--sidebar-width) bg-transparent\",\n          \"group-data-[collapsible=offcanvas]:w-0\",\n          \"group-data-[side=right]:rotate-180\",\n          variant === \"floating\" || variant === \"inset\"\n            ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n        )}\n      />\n      <div\n        data-slot=\"sidebar-container\"\n        data-side={side}\n        className={cn(\n          \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n          // Adjust the padding for floating and inset variants.\n          variant === \"floating\" || variant === \"inset\"\n            ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n          className\n        )}\n        {...props}\n      >\n        <div\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar-inner\"\n          className=\"cn-sidebar-inner flex size-full flex-col\"\n        >\n          {children}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction SidebarTrigger({\n  className,\n  onClick,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <Button\n      data-sidebar=\"trigger\"\n      data-slot=\"sidebar-trigger\"\n      variant=\"ghost\"\n      size=\"icon-sm\"\n      className={cn(\"cn-sidebar-trigger\", className)}\n      onClick={(event) => {\n        onClick?.(event)\n        toggleSidebar()\n      }}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"PanelLeftIcon\"\n        tabler=\"IconLayoutSidebar\"\n        hugeicons=\"SidebarLeftIcon\"\n        phosphor=\"SidebarIcon\"\n        remixicon=\"RiSideBarLine\"\n        className=\"cn-rtl-flip\"\n      />\n      <span className=\"sr-only\">Toggle Sidebar</span>\n    </Button>\n  )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <button\n      data-sidebar=\"rail\"\n      data-slot=\"sidebar-rail\"\n      aria-label=\"Toggle Sidebar\"\n      tabIndex={-1}\n      onClick={toggleSidebar}\n      title=\"Toggle Sidebar\"\n      className={cn(\n        \"cn-sidebar-rail absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n        \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n        \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n        \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n        \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n        \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n  return (\n    <main\n      data-slot=\"sidebar-inset\"\n      className={cn(\n        \"cn-sidebar-inset relative flex w-full flex-1 flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof Input>) {\n  return (\n    <Input\n      data-slot=\"sidebar-input\"\n      data-sidebar=\"input\"\n      className={cn(\"cn-sidebar-input\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-header\"\n      data-sidebar=\"header\"\n      className={cn(\"cn-sidebar-header flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-footer\"\n      data-sidebar=\"footer\"\n      className={cn(\"cn-sidebar-footer flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"sidebar-separator\"\n      data-sidebar=\"separator\"\n      className={cn(\"cn-sidebar-separator w-auto\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-content\"\n      data-sidebar=\"content\"\n      className={cn(\n        \"cn-sidebar-content flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group\"\n      data-sidebar=\"group\"\n      className={cn(\n        \"cn-sidebar-group relative flex w-full min-w-0 flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupLabel({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\"> & React.ComponentProps<\"div\">) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(\n          \"cn-sidebar-group-label flex shrink-0 items-center outline-hidden [&>svg]:shrink-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-group-label\",\n      sidebar: \"group-label\",\n    },\n  })\n}\n\nfunction SidebarGroupAction({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"button\"> & React.ComponentProps<\"button\">) {\n  return useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(\n          \"cn-sidebar-group-action flex aspect-square items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-group-action\",\n      sidebar: \"group-action\",\n    },\n  })\n}\n\nfunction SidebarGroupContent({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group-content\"\n      data-sidebar=\"group-content\"\n      className={cn(\"cn-sidebar-group-content w-full\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu\"\n      data-sidebar=\"menu\"\n      className={cn(\"cn-sidebar-menu flex w-full min-w-0 flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-item\"\n      data-sidebar=\"menu-item\"\n      className={cn(\"group/menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst sidebarMenuButtonVariants = cva(\n  \"cn-sidebar-menu-button peer/menu-button group/menu-button flex w-full items-center overflow-hidden outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-sidebar-menu-button-variant-default\",\n        outline: \"cn-sidebar-menu-button-variant-outline\",\n      },\n      size: {\n        default: \"cn-sidebar-menu-button-size-default\",\n        sm: \"cn-sidebar-menu-button-size-sm\",\n        lg: \"cn-sidebar-menu-button-size-lg\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction SidebarMenuButton({\n  render,\n  isActive = false,\n  variant = \"default\",\n  size = \"default\",\n  tooltip,\n  className,\n  ...props\n}: useRender.ComponentProps<\"button\"> &\n  React.ComponentProps<\"button\"> & {\n    isActive?: boolean\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>\n  } & VariantProps<typeof sidebarMenuButtonVariants>) {\n  const { isMobile, state } = useSidebar()\n  const comp = useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n      },\n      props\n    ),\n    render: !tooltip ? render : <TooltipTrigger render={render} />,\n    state: {\n      slot: \"sidebar-menu-button\",\n      sidebar: \"menu-button\",\n      size,\n      active: isActive,\n    },\n  })\n\n  if (!tooltip) {\n    return comp\n  }\n\n  if (typeof tooltip === \"string\") {\n    tooltip = {\n      children: tooltip,\n    }\n  }\n\n  return (\n    <Tooltip>\n      {comp}\n      <TooltipContent\n        side=\"right\"\n        align=\"center\"\n        hidden={state !== \"collapsed\" || isMobile}\n        {...tooltip}\n      />\n    </Tooltip>\n  )\n}\n\nfunction SidebarMenuAction({\n  className,\n  render,\n  showOnHover = false,\n  ...props\n}: useRender.ComponentProps<\"button\"> &\n  React.ComponentProps<\"button\"> & {\n    showOnHover?: boolean\n  }) {\n  return useRender({\n    defaultTagName: \"button\",\n    props: mergeProps<\"button\">(\n      {\n        className: cn(\n          \"cn-sidebar-menu-action flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0\",\n          showOnHover &&\n            \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-menu-action\",\n      sidebar: \"menu-action\",\n    },\n  })\n}\n\nfunction SidebarMenuBadge({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-menu-badge\"\n      data-sidebar=\"menu-badge\"\n      className={cn(\n        \"cn-sidebar-menu-badge flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSkeleton({\n  className,\n  showIcon = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showIcon?: boolean\n}) {\n  // Random width between 50 to 90%.\n  const [width] = React.useState(() => {\n    return `${Math.floor(Math.random() * 40) + 50}%`\n  })\n\n  return (\n    <div\n      data-slot=\"sidebar-menu-skeleton\"\n      data-sidebar=\"menu-skeleton\"\n      className={cn(\"cn-sidebar-menu-skeleton flex items-center\", className)}\n      {...props}\n    >\n      {showIcon && (\n        <Skeleton\n          className=\"cn-sidebar-menu-skeleton-icon\"\n          data-sidebar=\"menu-skeleton-icon\"\n        />\n      )}\n      <Skeleton\n        className=\"cn-sidebar-menu-skeleton-text max-w-(--skeleton-width) flex-1\"\n        data-sidebar=\"menu-skeleton-text\"\n        style={\n          {\n            \"--skeleton-width\": width,\n          } as React.CSSProperties\n        }\n      />\n    </div>\n  )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu-sub\"\n      data-sidebar=\"menu-sub\"\n      className={cn(\"cn-sidebar-menu-sub flex min-w-0 flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubItem({\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-sub-item\"\n      data-sidebar=\"menu-sub-item\"\n      className={cn(\"group/menu-sub-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubButton({\n  render,\n  size = \"md\",\n  isActive = false,\n  className,\n  ...props\n}: useRender.ComponentProps<\"a\"> &\n  React.ComponentProps<\"a\"> & {\n    size?: \"sm\" | \"md\"\n    isActive?: boolean\n  }) {\n  return useRender({\n    defaultTagName: \"a\",\n    props: mergeProps<\"a\">(\n      {\n        className: cn(\n          \"cn-sidebar-menu-sub-button flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"sidebar-menu-sub-button\",\n      sidebar: \"menu-sub-button\",\n      size,\n      active: isActive,\n    },\n  })\n}\n\nexport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarSeparator,\n  SidebarTrigger,\n  useSidebar,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/skeleton.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn(\"cn-skeleton animate-pulse\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Slider({\n  className,\n  defaultValue,\n  value,\n  min = 0,\n  max = 100,\n  ...props\n}: SliderPrimitive.Root.Props) {\n  const _values = React.useMemo(\n    () =>\n      Array.isArray(value)\n        ? value\n        : Array.isArray(defaultValue)\n          ? defaultValue\n          : [min, max],\n    [value, defaultValue, min, max]\n  )\n\n  return (\n    <SliderPrimitive.Root\n      className={cn(\"data-horizontal:w-full data-vertical:h-full\", className)}\n      data-slot=\"slider\"\n      defaultValue={defaultValue}\n      value={value}\n      min={min}\n      max={max}\n      thumbAlignment=\"edge\"\n      {...props}\n    >\n      <SliderPrimitive.Control className=\"cn-slider relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:w-auto data-vertical:flex-col\">\n        <SliderPrimitive.Track\n          data-slot=\"slider-track\"\n          className=\"cn-slider-track relative grow overflow-hidden select-none\"\n        >\n          <SliderPrimitive.Indicator\n            data-slot=\"slider-range\"\n            className=\"cn-slider-range select-none data-horizontal:h-full data-vertical:w-full\"\n          />\n        </SliderPrimitive.Track>\n        {Array.from({ length: _values.length }, (_, index) => (\n          <SliderPrimitive.Thumb\n            data-slot=\"slider-thumb\"\n            key={index}\n            className=\"cn-slider-thumb block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50\"\n          />\n        ))}\n      </SliderPrimitive.Control>\n    </SliderPrimitive.Root>\n  )\n}\n\nexport { Slider }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/sonner.tsx",
    "content": "\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = \"system\" } = useTheme()\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps[\"theme\"]}\n      className=\"toaster group\"\n      icons={{\n        success: (\n          <IconPlaceholder\n            lucide=\"CircleCheckIcon\"\n            tabler=\"IconCircleCheck\"\n            hugeicons=\"CheckmarkCircle02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            className=\"size-4\"\n          />\n        ),\n        info: (\n          <IconPlaceholder\n            lucide=\"InfoIcon\"\n            tabler=\"IconInfoCircle\"\n            hugeicons=\"InformationCircleIcon\"\n            phosphor=\"InfoIcon\"\n            remixicon=\"RiInformationLine\"\n            className=\"size-4\"\n          />\n        ),\n        warning: (\n          <IconPlaceholder\n            lucide=\"TriangleAlertIcon\"\n            tabler=\"IconAlertTriangle\"\n            hugeicons=\"Alert02Icon\"\n            phosphor=\"WarningIcon\"\n            remixicon=\"RiErrorWarningLine\"\n            className=\"size-4\"\n          />\n        ),\n        error: (\n          <IconPlaceholder\n            lucide=\"OctagonXIcon\"\n            tabler=\"IconAlertOctagon\"\n            hugeicons=\"MultiplicationSignCircleIcon\"\n            phosphor=\"XCircleIcon\"\n            remixicon=\"RiCloseCircleLine\"\n            className=\"size-4\"\n          />\n        ),\n        loading: (\n          <IconPlaceholder\n            lucide=\"Loader2Icon\"\n            tabler=\"IconLoader\"\n            hugeicons=\"Loading03Icon\"\n            phosphor=\"SpinnerIcon\"\n            remixicon=\"RiLoaderLine\"\n            className=\"size-4 animate-spin\"\n          />\n        ),\n      }}\n      style={\n        {\n          \"--normal-bg\": \"var(--popover)\",\n          \"--normal-text\": \"var(--popover-foreground)\",\n          \"--normal-border\": \"var(--border)\",\n          \"--border-radius\": \"var(--radius)\",\n        } as React.CSSProperties\n      }\n      toastOptions={{\n        classNames: {\n          toast: \"cn-toast\",\n        },\n      }}\n      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/spinner.tsx",
    "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <IconPlaceholder\n      lucide=\"Loader2Icon\"\n      tabler=\"IconLoader\"\n      hugeicons=\"Loading03Icon\"\n      phosphor=\"SpinnerIcon\"\n      remixicon=\"RiLoaderLine\"\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/switch.tsx",
    "content": "\"use client\"\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: SwitchPrimitive.Root.Props & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      data-size={size}\n      className={cn(\n        \"cn-switch peer group/switch relative inline-flex items-center transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className=\"cn-switch-thumb pointer-events-none block ring-0 transition-transform\"\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n  return (\n    <div data-slot=\"table-container\" className=\"cn-table-container\">\n      <table\n        data-slot=\"table\"\n        className={cn(\"cn-table\", className)}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n  return (\n    <thead\n      data-slot=\"table-header\"\n      className={cn(\"cn-table-header\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n  return (\n    <tbody\n      data-slot=\"table-body\"\n      className={cn(\"cn-table-body\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n  return (\n    <tfoot\n      data-slot=\"table-footer\"\n      className={cn(\"cn-table-footer\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n  return (\n    <tr\n      data-slot=\"table-row\"\n      className={cn(\"cn-table-row\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n  return (\n    <th\n      data-slot=\"table-head\"\n      className={cn(\"cn-table-head\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n  return (\n    <td\n      data-slot=\"table-cell\"\n      className={cn(\"cn-table-cell\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableCaption({\n  className,\n  ...props\n}: React.ComponentProps<\"caption\">) {\n  return (\n    <caption\n      data-slot=\"table-caption\"\n      className={cn(\"cn-table-caption\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: TabsPrimitive.Root.Props) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      data-orientation={orientation}\n      className={cn(\n        \"cn-tabs group/tabs flex data-horizontal:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst tabsListVariants = cva(\n  \"cn-tabs-list group/tabs-list inline-flex w-fit items-center justify-center text-muted-foreground group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-tabs-list-variant-default bg-muted\",\n        line: \"cn-tabs-list-variant-line gap-1 bg-transparent\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction TabsList({\n  className,\n  variant = \"default\",\n  ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={cn(tabsListVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n  return (\n    <TabsPrimitive.Tab\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"cn-tabs-trigger relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n        \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n        \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n  return (\n    <TabsPrimitive.Panel\n      data-slot=\"tabs-content\"\n      className={cn(\"cn-tabs-content flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/textarea.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"cn-textarea flex field-sizing-content min-h-16 w-full outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/toggle-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"@base-ui/react/toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { toggleVariants } from \"@/registry/bases/base/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }\n>({\n  size: \"default\",\n  variant: \"default\",\n  spacing: 0,\n  orientation: \"horizontal\",\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  spacing = 0,\n  orientation = \"horizontal\",\n  children,\n  ...props\n}: ToggleGroupPrimitive.Props &\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }) {\n  return (\n    <ToggleGroupPrimitive\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      data-spacing={spacing}\n      data-orientation={orientation}\n      style={{ \"--gap\": spacing } as React.CSSProperties}\n      className={cn(\n        \"cn-toggle-group group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-vertical:flex-col data-vertical:items-stretch\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider\n        value={{ variant, size, spacing, orientation }}\n      >\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive>\n  )\n}\n\nfunction ToggleGroupItem({\n  className,\n  children,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n  const context = React.useContext(ToggleGroupContext)\n\n  return (\n    <TogglePrimitive\n      data-slot=\"toggle-group-item\"\n      data-variant={context.variant || variant}\n      data-size={context.size || size}\n      data-spacing={context.spacing}\n      className={cn(\n        \"cn-toggle-group-item shrink-0 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </TogglePrimitive>\n  )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/toggle.tsx",
    "content": "\"use client\"\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nconst toggleVariants = cva(\n  \"cn-toggle group/toggle inline-flex items-center justify-center whitespace-nowrap outline-none hover:bg-muted focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-toggle-variant-default\",\n        outline: \"cn-toggle-variant-outline\",\n      },\n      size: {\n        default: \"cn-toggle-size-default\",\n        sm: \"cn-toggle-size-sm\",\n        lg: \"cn-toggle-size-lg\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Toggle({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n  return (\n    <TogglePrimitive\n      data-slot=\"toggle\"\n      className={cn(toggleVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Toggle, toggleVariants }\n"
  },
  {
    "path": "apps/v4/registry/bases/base/ui/tooltip.tsx",
    "content": "\"use client\"\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction TooltipProvider({\n  delay = 0,\n  ...props\n}: TooltipPrimitive.Provider.Props) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delay={delay}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n  return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n  className,\n  side = \"top\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 0,\n  children,\n  ...props\n}: TooltipPrimitive.Popup.Props &\n  Pick<\n    TooltipPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n  >) {\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        side={side}\n        sideOffset={sideOffset}\n        className=\"isolate z-50\"\n      >\n        <TooltipPrimitive.Popup\n          data-slot=\"tooltip-content\"\n          className={cn(\n            \"cn-tooltip-content cn-tooltip-content-logical z-50 w-fit max-w-xs origin-(--transform-origin) bg-foreground text-background\",\n            className\n          )}\n          {...props}\n        >\n          {children}\n          <TooltipPrimitive.Arrow className=\"cn-tooltip-arrow cn-tooltip-arrow-logical z-50 bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n        </TooltipPrimitive.Popup>\n      </TooltipPrimitive.Positioner>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const blocks: Registry[\"items\"] = [\n  {\n    name: \"preview\",\n    title: \"Preview\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"alert-dialog\",\n      \"avatar\",\n      \"badge\",\n      \"button\",\n      \"button-group\",\n      \"card\",\n      \"checkbox\",\n      \"combobox\",\n      \"dropdown-menu\",\n      \"empty\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"item\",\n      \"label\",\n      \"popover\",\n      \"radio-group\",\n      \"select\",\n      \"separator\",\n      \"sheet\",\n      \"slider\",\n      \"spinner\",\n      \"switch\",\n      \"textarea\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"blocks/preview/index.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n  },\n  {\n    name: \"login-01\",\n    title: \"Login 01\",\n    description: \"A simple login form.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-01/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-01/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-02\",\n    title: \"Login 02\",\n    description: \"A two column login page with a cover image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-02/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-02/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-03\",\n    title: \"Login 03\",\n    description: \"A login page with a muted background color.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-03/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-03/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-04\",\n    title: \"Login 04\",\n    description: \"A login page with form and image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-04/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-04/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-05\",\n    title: \"Login 05\",\n    description: \"A simple email-only login page.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-05/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-05/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"signup-01\",\n    title: \"Signup 01\",\n    description: \"A simple signup form.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/signup-01/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-01/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-02\",\n    title: \"Signup 02\",\n    description: \"A two column signup page with a cover image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-02/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-02/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-03\",\n    title: \"Signup 03\",\n    description: \"A signup page with a muted background color.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-03/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-03/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-04\",\n    title: \"Signup 04\",\n    description: \"A signup page with form and image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-04/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-04/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-05\",\n    title: \"Signup 05\",\n    description: \"A simple signup form with social providers.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/signup-05/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-05/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"dashboard-01\",\n    title: \"Dashboard 01\",\n    type: \"registry:block\",\n    description: \"A dashboard with sidebar, charts and data table.\",\n    dependencies: [\n      \"@dnd-kit/core\",\n      \"@dnd-kit/modifiers\",\n      \"@dnd-kit/sortable\",\n      \"@dnd-kit/utilities\",\n      \"@tanstack/react-table\",\n      \"zod\",\n    ],\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"chart\",\n      \"card\",\n      \"select\",\n      \"tabs\",\n      \"table\",\n      \"toggle-group\",\n      \"badge\",\n      \"button\",\n      \"checkbox\",\n      \"dropdown-menu\",\n      \"drawer\",\n      \"input\",\n      \"avatar\",\n      \"sheet\",\n      \"sonner\",\n    ],\n    files: [\n      {\n        path: \"blocks/dashboard-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/dashboard-01/data.json\",\n        type: \"registry:file\",\n        target: \"app/dashboard/data.json\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/chart-area-interactive.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/data-table.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-documents.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/section-cards.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/site-header.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"dashboard\"],\n    meta: {\n      iframeHeight: \"1000px\",\n    },\n  },\n  {\n    name: \"sidebar-01\",\n    title: \"Sidebar 01\",\n    type: \"registry:block\",\n    description: \"A simple sidebar with navigation grouped by section.\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/version-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-02\",\n    title: \"Sidebar 02\",\n    description: \"A sidebar with collapsible sections.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/version-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-03\",\n    title: \"Sidebar 03\",\n    description: \"A sidebar with submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\"],\n    files: [\n      {\n        path: \"blocks/sidebar-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-03/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-04\",\n    title: \"Sidebar 04\",\n    description: \"A floating sidebar with submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"separator\"],\n    files: [\n      {\n        path: \"blocks/sidebar-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-04/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-05\",\n    title: \"Sidebar 05\",\n    description: \"A sidebar with collapsible submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"collapsible\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-05/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-05/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-06\",\n    title: \"Sidebar 06\",\n    description: \"A sidebar with submenus as dropdowns.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"card\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-06/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-07\",\n    title: \"Sidebar 07\",\n    type: \"registry:block\",\n    description: \"A sidebar that collapses to icons.\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-07/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-08\",\n    title: \"Sidebar 08\",\n    description: \"An inset sidebar with secondary navigation.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-08/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-09\",\n    title: \"Sidebar 09\",\n    description: \"Collapsible nested sidebars.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n      \"switch\",\n      \"label\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-09/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-09/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-09/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-10\",\n    title: \"Sidebar 10\",\n    description: \"A sidebar in a popover.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"popover\",\n      \"collapsible\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-10/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-actions.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-favorites.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-workspaces.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-11\",\n    title: \"Sidebar 11\",\n    description: \"A sidebar with a collapsible file tree.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"separator\", \"collapsible\"],\n    files: [\n      {\n        path: \"blocks/sidebar-11/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-11/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-12\",\n    title: \"Sidebar 12\",\n    description: \"A sidebar with a calendar.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"calendar\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-12/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/calendars.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/date-picker.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-13\",\n    title: \"Sidebar 13\",\n    description: \"A sidebar in a dialog.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n    files: [\n      {\n        path: \"blocks/sidebar-13/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-13/components/settings-dialog.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-14\",\n    title: \"Sidebar 14\",\n    description: \"A sidebar on the right.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\"],\n    files: [\n      {\n        path: \"blocks/sidebar-14/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-14/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-15\",\n    title: \"Sidebar 15\",\n    description: \"A left and right sidebar.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"popover\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"calendar\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-15/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/calendars.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/date-picker.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-favorites.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-workspaces.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/sidebar-left.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/sidebar-right.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-16\",\n    title: \"Sidebar 16\",\n    description: \"A sidebar with a sticky site header.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n      \"button\",\n      \"label\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-16/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/site-header.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavDocuments } from \"@/registry/bases/radix/blocks/dashboard-01/components/nav-documents\"\nimport { NavMain } from \"@/registry/bases/radix/blocks/dashboard-01/components/nav-main\"\nimport { NavSecondary } from \"@/registry/bases/radix/blocks/dashboard-01/components/nav-secondary\"\nimport { NavUser } from \"@/registry/bases/radix/blocks/dashboard-01/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Dashboard\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LayoutDashboardIcon\"\n          tabler=\"IconDashboard\"\n          hugeicons=\"DashboardSquare01Icon\"\n          phosphor=\"SquaresFourIcon\"\n          remixicon=\"RiDashboardLine\"\n        />\n      ),\n    },\n    {\n      title: \"Lifecycle\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ListIcon\"\n          tabler=\"IconListDetails\"\n          hugeicons=\"Menu01Icon\"\n          phosphor=\"ListIcon\"\n          remixicon=\"RiListUnordered\"\n        />\n      ),\n    },\n    {\n      title: \"Analytics\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ChartBarIcon\"\n          tabler=\"IconChartBar\"\n          hugeicons=\"ChartHistogramIcon\"\n          phosphor=\"ChartBarIcon\"\n          remixicon=\"RiBarChartLine\"\n        />\n      ),\n    },\n    {\n      title: \"Projects\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FolderIcon\"\n          tabler=\"IconFolder\"\n          hugeicons=\"Folder01Icon\"\n          phosphor=\"FolderIcon\"\n          remixicon=\"RiFolderLine\"\n        />\n      ),\n    },\n    {\n      title: \"Team\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"UsersIcon\"\n          tabler=\"IconUsers\"\n          hugeicons=\"UserGroupIcon\"\n          phosphor=\"UsersIcon\"\n          remixicon=\"RiGroupLine\"\n        />\n      ),\n    },\n  ],\n  navClouds: [\n    {\n      title: \"Capture\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CameraIcon\"\n          tabler=\"IconCamera\"\n          hugeicons=\"Camera01Icon\"\n          phosphor=\"CameraIcon\"\n          remixicon=\"RiCameraLine\"\n        />\n      ),\n      isActive: true,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Proposal\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileTextIcon\"\n          tabler=\"IconFileDescription\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileTextIcon\"\n          remixicon=\"RiFileTextLine\"\n        />\n      ),\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Prompts\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileTextIcon\"\n          tabler=\"IconFileAi\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileTextIcon\"\n          remixicon=\"RiFileTextLine\"\n        />\n      ),\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n    {\n      title: \"Get Help\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CircleHelpIcon\"\n          tabler=\"IconHelp\"\n          hugeicons=\"HelpCircleIcon\"\n          phosphor=\"QuestionIcon\"\n          remixicon=\"RiQuestionLine\"\n        />\n      ),\n    },\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SearchIcon\"\n          tabler=\"IconSearch\"\n          hugeicons=\"SearchIcon\"\n          phosphor=\"MagnifyingGlassIcon\"\n          remixicon=\"RiSearchLine\"\n        />\n      ),\n    },\n  ],\n  documents: [\n    {\n      name: \"Data Library\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"DatabaseIcon\"\n          tabler=\"IconDatabase\"\n          hugeicons=\"Database01Icon\"\n          phosphor=\"DatabaseIcon\"\n          remixicon=\"RiDatabase2Line\"\n        />\n      ),\n    },\n    {\n      name: \"Reports\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileChartColumnIcon\"\n          tabler=\"IconReport\"\n          hugeicons=\"Analytics01Icon\"\n          phosphor=\"ChartLineIcon\"\n          remixicon=\"RiFileChartLine\"\n        />\n      ),\n    },\n    {\n      name: \"Word Assistant\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileIcon\"\n          tabler=\"IconFileWord\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileIcon\"\n          remixicon=\"RiFileLine\"\n        />\n      ),\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar collapsible=\"offcanvas\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton\n              asChild\n              className=\"data-[slot=sidebar-menu-button]:p-1.5!\"\n            >\n              <a href=\"#\">\n                <IconPlaceholder\n                  lucide=\"CommandIcon\"\n                  tabler=\"IconInnerShadowTop\"\n                  hugeicons=\"CommandIcon\"\n                  phosphor=\"CommandIcon\"\n                  remixicon=\"RiCommandLine\"\n                  className=\"size-5!\"\n                />\n                <span className=\"text-base font-semibold\">Acme Inc.</span>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavDocuments items={data.documents} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/chart-area-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport { useIsMobile } from \"@/registry/bases/radix/hooks/use-mobile\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/radix/ui/chart\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/bases/radix/ui/toggle-group\"\n\nexport const description = \"An interactive area chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n  { date: \"2024-05-01\", desktop: 165, mobile: 220 },\n  { date: \"2024-05-02\", desktop: 293, mobile: 310 },\n  { date: \"2024-05-03\", desktop: 247, mobile: 190 },\n  { date: \"2024-05-04\", desktop: 385, mobile: 420 },\n  { date: \"2024-05-05\", desktop: 481, mobile: 390 },\n  { date: \"2024-05-06\", desktop: 498, mobile: 520 },\n  { date: \"2024-05-07\", desktop: 388, mobile: 300 },\n  { date: \"2024-05-08\", desktop: 149, mobile: 210 },\n  { date: \"2024-05-09\", desktop: 227, mobile: 180 },\n  { date: \"2024-05-10\", desktop: 293, mobile: 330 },\n  { date: \"2024-05-11\", desktop: 335, mobile: 270 },\n  { date: \"2024-05-12\", desktop: 197, mobile: 240 },\n  { date: \"2024-05-13\", desktop: 197, mobile: 160 },\n  { date: \"2024-05-14\", desktop: 448, mobile: 490 },\n  { date: \"2024-05-15\", desktop: 473, mobile: 380 },\n  { date: \"2024-05-16\", desktop: 338, mobile: 400 },\n  { date: \"2024-05-17\", desktop: 499, mobile: 420 },\n  { date: \"2024-05-18\", desktop: 315, mobile: 350 },\n  { date: \"2024-05-19\", desktop: 235, mobile: 180 },\n  { date: \"2024-05-20\", desktop: 177, mobile: 230 },\n  { date: \"2024-05-21\", desktop: 82, mobile: 140 },\n  { date: \"2024-05-22\", desktop: 81, mobile: 120 },\n  { date: \"2024-05-23\", desktop: 252, mobile: 290 },\n  { date: \"2024-05-24\", desktop: 294, mobile: 220 },\n  { date: \"2024-05-25\", desktop: 201, mobile: 250 },\n  { date: \"2024-05-26\", desktop: 213, mobile: 170 },\n  { date: \"2024-05-27\", desktop: 420, mobile: 460 },\n  { date: \"2024-05-28\", desktop: 233, mobile: 190 },\n  { date: \"2024-05-29\", desktop: 78, mobile: 130 },\n  { date: \"2024-05-30\", desktop: 340, mobile: 280 },\n  { date: \"2024-05-31\", desktop: 178, mobile: 230 },\n  { date: \"2024-06-01\", desktop: 178, mobile: 200 },\n  { date: \"2024-06-02\", desktop: 470, mobile: 410 },\n  { date: \"2024-06-03\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-04\", desktop: 439, mobile: 380 },\n  { date: \"2024-06-05\", desktop: 88, mobile: 140 },\n  { date: \"2024-06-06\", desktop: 294, mobile: 250 },\n  { date: \"2024-06-07\", desktop: 323, mobile: 370 },\n  { date: \"2024-06-08\", desktop: 385, mobile: 320 },\n  { date: \"2024-06-09\", desktop: 438, mobile: 480 },\n  { date: \"2024-06-10\", desktop: 155, mobile: 200 },\n  { date: \"2024-06-11\", desktop: 92, mobile: 150 },\n  { date: \"2024-06-12\", desktop: 492, mobile: 420 },\n  { date: \"2024-06-13\", desktop: 81, mobile: 130 },\n  { date: \"2024-06-14\", desktop: 426, mobile: 380 },\n  { date: \"2024-06-15\", desktop: 307, mobile: 350 },\n  { date: \"2024-06-16\", desktop: 371, mobile: 310 },\n  { date: \"2024-06-17\", desktop: 475, mobile: 520 },\n  { date: \"2024-06-18\", desktop: 107, mobile: 170 },\n  { date: \"2024-06-19\", desktop: 341, mobile: 290 },\n  { date: \"2024-06-20\", desktop: 408, mobile: 450 },\n  { date: \"2024-06-21\", desktop: 169, mobile: 210 },\n  { date: \"2024-06-22\", desktop: 317, mobile: 270 },\n  { date: \"2024-06-23\", desktop: 480, mobile: 530 },\n  { date: \"2024-06-24\", desktop: 132, mobile: 180 },\n  { date: \"2024-06-25\", desktop: 141, mobile: 190 },\n  { date: \"2024-06-26\", desktop: 434, mobile: 380 },\n  { date: \"2024-06-27\", desktop: 448, mobile: 490 },\n  { date: \"2024-06-28\", desktop: 149, mobile: 200 },\n  { date: \"2024-06-29\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-30\", desktop: 446, mobile: 400 },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaInteractive() {\n  const isMobile = useIsMobile()\n  const [timeRange, setTimeRange] = React.useState(\"90d\")\n\n  React.useEffect(() => {\n    if (isMobile) {\n      setTimeRange(\"7d\")\n    }\n  }, [isMobile])\n\n  const filteredData = chartData.filter((item) => {\n    const date = new Date(item.date)\n    const referenceDate = new Date(\"2024-06-30\")\n    let daysToSubtract = 90\n    if (timeRange === \"30d\") {\n      daysToSubtract = 30\n    } else if (timeRange === \"7d\") {\n      daysToSubtract = 7\n    }\n    const startDate = new Date(referenceDate)\n    startDate.setDate(startDate.getDate() - daysToSubtract)\n    return date >= startDate\n  })\n\n  return (\n    <Card className=\"@container/card\">\n      <CardHeader>\n        <CardTitle>Total Visitors</CardTitle>\n        <CardDescription>\n          <span className=\"hidden @[540px]/card:block\">\n            Total for the last 3 months\n          </span>\n          <span className=\"@[540px]/card:hidden\">Last 3 months</span>\n        </CardDescription>\n        <CardAction>\n          <ToggleGroup\n            type=\"single\"\n            value={timeRange}\n            onValueChange={setTimeRange}\n            variant=\"outline\"\n            className=\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\"\n          >\n            <ToggleGroupItem value=\"90d\">Last 3 months</ToggleGroupItem>\n            <ToggleGroupItem value=\"30d\">Last 30 days</ToggleGroupItem>\n            <ToggleGroupItem value=\"7d\">Last 7 days</ToggleGroupItem>\n          </ToggleGroup>\n          <Select value={timeRange} onValueChange={setTimeRange}>\n            <SelectTrigger\n              className=\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\"\n              size=\"sm\"\n              aria-label=\"Select a value\"\n            >\n              <SelectValue placeholder=\"Last 3 months\" />\n            </SelectTrigger>\n            <SelectContent className=\"rounded-xl\">\n              <SelectItem value=\"90d\" className=\"rounded-lg\">\n                Last 3 months\n              </SelectItem>\n              <SelectItem value=\"30d\" className=\"rounded-lg\">\n                Last 30 days\n              </SelectItem>\n              <SelectItem value=\"7d\" className=\"rounded-lg\">\n                Last 7 days\n              </SelectItem>\n            </SelectContent>\n          </Select>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"px-2 pt-4 sm:px-6 sm:pt-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <AreaChart data={filteredData}>\n            <defs>\n              <linearGradient id=\"fillDesktop\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={1.0}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n              <linearGradient id=\"fillMobile\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n            </defs>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={\n                <ChartTooltipContent\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                    })\n                  }}\n                  indicator=\"dot\"\n                />\n              }\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"url(#fillMobile)\"\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"url(#fillDesktop)\"\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/data-table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  closestCenter,\n  DndContext,\n  KeyboardSensor,\n  MouseSensor,\n  TouchSensor,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n  type UniqueIdentifier,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n  arrayMove,\n  SortableContext,\n  useSortable,\n  verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFacetedRowModel,\n  getFacetedUniqueValues,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type Row,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\nimport { toast } from \"sonner\"\nimport { z } from \"zod\"\n\nimport { useIsMobile } from \"@/registry/bases/radix/hooks/use-mobile\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/radix/ui/chart\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/bases/radix/ui/drawer\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/bases/radix/ui/table\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/bases/radix/ui/tabs\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport const schema = z.object({\n  id: z.number(),\n  header: z.string(),\n  type: z.string(),\n  status: z.string(),\n  target: z.string(),\n  limit: z.string(),\n  reviewer: z.string(),\n})\n\n// Create a separate component for the drag handle\nfunction DragHandle({ id }: { id: number }) {\n  const { attributes, listeners } = useSortable({\n    id,\n  })\n\n  return (\n    <Button\n      {...attributes}\n      {...listeners}\n      variant=\"ghost\"\n      size=\"icon\"\n      className=\"size-7 text-muted-foreground hover:bg-transparent\"\n    >\n      <IconPlaceholder\n        lucide=\"GripVerticalIcon\"\n        tabler=\"IconGripVertical\"\n        hugeicons=\"DragDropVerticalIcon\"\n        phosphor=\"DotsSixVerticalIcon\"\n        remixicon=\"RiDraggable\"\n        className=\"size-3 text-muted-foreground\"\n      />\n      <span className=\"sr-only\">Drag to reorder</span>\n    </Button>\n  )\n}\n\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\n  {\n    id: \"drag\",\n    header: () => null,\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\n  },\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={\n            table.getIsAllPageRowsSelected() ||\n            (table.getIsSomePageRowsSelected() && \"indeterminate\")\n          }\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n          aria-label=\"Select all\"\n        />\n      </div>\n    ),\n    cell: ({ row }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={row.getIsSelected()}\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\n          aria-label=\"Select row\"\n        />\n      </div>\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"header\",\n    header: \"Header\",\n    cell: ({ row }) => {\n      return <TableCellViewer item={row.original} />\n    },\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"type\",\n    header: \"Section Type\",\n    cell: ({ row }) => (\n      <div className=\"w-32\">\n        <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n          {row.original.type}\n        </Badge>\n      </div>\n    ),\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n        {row.original.status === \"Done\" ? (\n          <IconPlaceholder\n            lucide=\"CircleCheckIcon\"\n            tabler=\"IconCircleCheckFilled\"\n            hugeicons=\"CheckmarkCircle01Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleFill\"\n            className=\"fill-green-500 dark:fill-green-400\"\n          />\n        ) : (\n          <IconPlaceholder\n            lucide=\"LoaderIcon\"\n            tabler=\"IconLoader\"\n            hugeicons=\"Loading03Icon\"\n            phosphor=\"SpinnerIcon\"\n            remixicon=\"RiLoader4Line\"\n          />\n        )}\n        {row.original.status}\n      </Badge>\n    ),\n  },\n  {\n    accessorKey: \"target\",\n    header: () => <div className=\"w-full text-right\">Target</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-target`} className=\"sr-only\">\n          Target\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.target}\n          id={`${row.original.id}-target`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"limit\",\n    header: () => <div className=\"w-full text-right\">Limit</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-limit`} className=\"sr-only\">\n          Limit\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.limit}\n          id={`${row.original.id}-limit`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"reviewer\",\n    header: \"Reviewer\",\n    cell: ({ row }) => {\n      const isAssigned = row.original.reviewer !== \"Assign reviewer\"\n\n      if (isAssigned) {\n        return row.original.reviewer\n      }\n\n      return (\n        <>\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\"sr-only\">\n            Reviewer\n          </Label>\n          <Select>\n            <SelectTrigger\n              className=\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\"\n              size=\"sm\"\n              id={`${row.original.id}-reviewer`}\n            >\n              <SelectValue placeholder=\"Assign reviewer\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectGroup>\n                <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n                <SelectItem value=\"Jamik Tashpulatov\">\n                  Jamik Tashpulatov\n                </SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </>\n      )\n    },\n  },\n  {\n    id: \"actions\",\n    cell: () => (\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button\n            variant=\"ghost\"\n            className=\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\"\n            size=\"icon\"\n          >\n            <IconPlaceholder\n              lucide=\"EllipsisVerticalIcon\"\n              tabler=\"IconDotsVertical\"\n              hugeicons=\"MoreVerticalCircle01Icon\"\n              phosphor=\"DotsThreeVerticalIcon\"\n              remixicon=\"RiMore2Line\"\n            />\n            <span className=\"sr-only\">Open menu</span>\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-32\">\n          <DropdownMenuItem>Edit</DropdownMenuItem>\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem variant=\"destructive\">Delete</DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    ),\n  },\n]\n\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\n    id: row.original.id,\n  })\n\n  return (\n    <TableRow\n      data-state={row.getIsSelected() && \"selected\"}\n      data-dragging={isDragging}\n      ref={setNodeRef}\n      className=\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\"\n      style={{\n        transform: CSS.Transform.toString(transform),\n        transition: transition,\n      }}\n    >\n      {row.getVisibleCells().map((cell) => (\n        <TableCell key={cell.id}>\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\n        </TableCell>\n      ))}\n    </TableRow>\n  )\n}\n\nexport function DataTable({\n  data: initialData,\n}: {\n  data: z.infer<typeof schema>[]\n}) {\n  const [data, setData] = React.useState(() => initialData)\n  const [rowSelection, setRowSelection] = React.useState({})\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [pagination, setPagination] = React.useState({\n    pageIndex: 0,\n    pageSize: 10,\n  })\n  const sortableId = React.useId()\n  const sensors = useSensors(\n    useSensor(MouseSensor, {}),\n    useSensor(TouchSensor, {}),\n    useSensor(KeyboardSensor, {})\n  )\n\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\n    () => data?.map(({ id }) => id) || [],\n    [data]\n  )\n\n  const table = useReactTable({\n    data,\n    columns,\n    state: {\n      sorting,\n      columnVisibility,\n      rowSelection,\n      columnFilters,\n      pagination,\n    },\n    getRowId: (row) => row.id.toString(),\n    enableRowSelection: true,\n    onRowSelectionChange: setRowSelection,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    onColumnVisibilityChange: setColumnVisibility,\n    onPaginationChange: setPagination,\n    getCoreRowModel: getCoreRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFacetedRowModel: getFacetedRowModel(),\n    getFacetedUniqueValues: getFacetedUniqueValues(),\n  })\n\n  function handleDragEnd(event: DragEndEvent) {\n    const { active, over } = event\n    if (active && over && active.id !== over.id) {\n      setData((data) => {\n        const oldIndex = dataIds.indexOf(active.id)\n        const newIndex = dataIds.indexOf(over.id)\n        return arrayMove(data, oldIndex, newIndex)\n      })\n    }\n  }\n\n  return (\n    <Tabs\n      defaultValue=\"outline\"\n      className=\"w-full flex-col justify-start gap-6\"\n    >\n      <div className=\"flex items-center justify-between px-4 lg:px-6\">\n        <Label htmlFor=\"view-selector\" className=\"sr-only\">\n          View\n        </Label>\n        <Select defaultValue=\"outline\">\n          <SelectTrigger\n            className=\"flex w-fit @4xl/main:hidden\"\n            size=\"sm\"\n            id=\"view-selector\"\n          >\n            <SelectValue placeholder=\"Select a view\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"outline\">Outline</SelectItem>\n              <SelectItem value=\"past-performance\">Past Performance</SelectItem>\n              <SelectItem value=\"key-personnel\">Key Personnel</SelectItem>\n              <SelectItem value=\"focus-documents\">Focus Documents</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <TabsList className=\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\">\n          <TabsTrigger value=\"outline\">Outline</TabsTrigger>\n          <TabsTrigger value=\"past-performance\">\n            Past Performance <Badge variant=\"secondary\">3</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"key-personnel\">\n            Key Personnel <Badge variant=\"secondary\">2</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"focus-documents\">Focus Documents</TabsTrigger>\n        </TabsList>\n        <div className=\"flex items-center gap-2\">\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"outline\" size=\"sm\">\n                <IconPlaceholder\n                  lucide=\"Columns3Icon\"\n                  tabler=\"IconLayoutColumns\"\n                  hugeicons=\"LeftToRightListBulletIcon\"\n                  phosphor=\"ColumnsIcon\"\n                  remixicon=\"RiLayoutColumnLine\"\n                  data-icon=\"inline-start\"\n                />\n                Columns\n                <IconPlaceholder\n                  lucide=\"ChevronDownIcon\"\n                  tabler=\"IconChevronDown\"\n                  hugeicons=\"ArrowDown01Icon\"\n                  phosphor=\"CaretDownIcon\"\n                  remixicon=\"RiArrowDownSLine\"\n                  data-icon=\"inline-end\"\n                />\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"w-32\">\n              {table\n                .getAllColumns()\n                .filter(\n                  (column) =>\n                    typeof column.accessorFn !== \"undefined\" &&\n                    column.getCanHide()\n                )\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuContent>\n          </DropdownMenu>\n          <Button variant=\"outline\" size=\"sm\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"Add01Icon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n            <span className=\"hidden lg:inline\">Add Section</span>\n          </Button>\n        </div>\n      </div>\n      <TabsContent\n        value=\"outline\"\n        className=\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\"\n      >\n        <div className=\"overflow-hidden rounded-lg border\">\n          <DndContext\n            collisionDetection={closestCenter}\n            modifiers={[restrictToVerticalAxis]}\n            onDragEnd={handleDragEnd}\n            sensors={sensors}\n            id={sortableId}\n          >\n            <Table>\n              <TableHeader className=\"sticky top-0 z-10 bg-muted\">\n                {table.getHeaderGroups().map((headerGroup) => (\n                  <TableRow key={headerGroup.id}>\n                    {headerGroup.headers.map((header) => {\n                      return (\n                        <TableHead key={header.id} colSpan={header.colSpan}>\n                          {header.isPlaceholder\n                            ? null\n                            : flexRender(\n                                header.column.columnDef.header,\n                                header.getContext()\n                              )}\n                        </TableHead>\n                      )\n                    })}\n                  </TableRow>\n                ))}\n              </TableHeader>\n              <TableBody className=\"**:data-[slot=table-cell]:first:w-8\">\n                {table.getRowModel().rows?.length ? (\n                  <SortableContext\n                    items={dataIds}\n                    strategy={verticalListSortingStrategy}\n                  >\n                    {table.getRowModel().rows.map((row) => (\n                      <DraggableRow key={row.id} row={row} />\n                    ))}\n                  </SortableContext>\n                ) : (\n                  <TableRow>\n                    <TableCell\n                      colSpan={columns.length}\n                      className=\"h-24 text-center\"\n                    >\n                      No results.\n                    </TableCell>\n                  </TableRow>\n                )}\n              </TableBody>\n            </Table>\n          </DndContext>\n        </div>\n        <div className=\"flex items-center justify-between px-4\">\n          <div className=\"hidden flex-1 text-sm text-muted-foreground lg:flex\">\n            {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n            {table.getFilteredRowModel().rows.length} row(s) selected.\n          </div>\n          <div className=\"flex w-full items-center gap-8 lg:w-fit\">\n            <div className=\"hidden items-center gap-2 lg:flex\">\n              <Label htmlFor=\"rows-per-page\" className=\"text-sm font-medium\">\n                Rows per page\n              </Label>\n              <Select\n                value={`${table.getState().pagination.pageSize}`}\n                onValueChange={(value) => {\n                  table.setPageSize(Number(value))\n                }}\n              >\n                <SelectTrigger size=\"sm\" className=\"w-20\" id=\"rows-per-page\">\n                  <SelectValue\n                    placeholder={table.getState().pagination.pageSize}\n                  />\n                </SelectTrigger>\n                <SelectContent side=\"top\">\n                  <SelectGroup>\n                    {[10, 20, 30, 40, 50].map((pageSize) => (\n                      <SelectItem key={pageSize} value={`${pageSize}`}>\n                        {pageSize}\n                      </SelectItem>\n                    ))}\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"flex w-fit items-center justify-center text-sm font-medium\">\n              Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n              {table.getPageCount()}\n            </div>\n            <div className=\"ml-auto flex items-center gap-2 lg:ml-0\">\n              <Button\n                variant=\"outline\"\n                className=\"hidden h-8 w-8 p-0 lg:flex\"\n                onClick={() => table.setPageIndex(0)}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to first page</span>\n                <IconPlaceholder\n                  lucide=\"ChevronsLeftIcon\"\n                  tabler=\"IconChevronsLeft\"\n                  hugeicons=\"ArrowLeftDoubleIcon\"\n                  phosphor=\"CaretDoubleLeftIcon\"\n                  remixicon=\"RiSkipLeftLine\"\n                />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.previousPage()}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to previous page</span>\n                <IconPlaceholder\n                  lucide=\"ChevronLeftIcon\"\n                  tabler=\"IconChevronLeft\"\n                  hugeicons=\"ArrowLeft01Icon\"\n                  phosphor=\"CaretLeftIcon\"\n                  remixicon=\"RiArrowLeftSLine\"\n                />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.nextPage()}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to next page</span>\n                <IconPlaceholder\n                  lucide=\"ChevronRightIcon\"\n                  tabler=\"IconChevronRight\"\n                  hugeicons=\"ArrowRight01Icon\"\n                  phosphor=\"CaretRightIcon\"\n                  remixicon=\"RiArrowRightSLine\"\n                />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"hidden size-8 lg:flex\"\n                size=\"icon\"\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to last page</span>\n                <IconPlaceholder\n                  lucide=\"ChevronsRightIcon\"\n                  tabler=\"IconChevronsRight\"\n                  hugeicons=\"ArrowRightDoubleIcon\"\n                  phosphor=\"CaretDoubleRightIcon\"\n                  remixicon=\"RiSkipRightLine\"\n                />\n              </Button>\n            </div>\n          </div>\n        </div>\n      </TabsContent>\n      <TabsContent\n        value=\"past-performance\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent value=\"key-personnel\" className=\"flex flex-col px-4 lg:px-6\">\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent\n        value=\"focus-documents\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n    </Tabs>\n  )\n}\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\n  const isMobile = useIsMobile()\n\n  return (\n    <Drawer direction={isMobile ? \"bottom\" : \"right\"}>\n      <DrawerTrigger asChild>\n        <Button variant=\"link\" className=\"w-fit px-0 text-left text-foreground\">\n          {item.header}\n        </Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader className=\"gap-1\">\n          <DrawerTitle>{item.header}</DrawerTitle>\n          <DrawerDescription>\n            Showing total visitors for the last 6 months\n          </DrawerDescription>\n        </DrawerHeader>\n        <div className=\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\">\n          {!isMobile && (\n            <>\n              <ChartContainer config={chartConfig}>\n                <AreaChart\n                  accessibilityLayer\n                  data={chartData}\n                  margin={{\n                    left: 0,\n                    right: 10,\n                  }}\n                >\n                  <CartesianGrid vertical={false} />\n                  <XAxis\n                    dataKey=\"month\"\n                    tickLine={false}\n                    axisLine={false}\n                    tickMargin={8}\n                    tickFormatter={(value) => value.slice(0, 3)}\n                    hide\n                  />\n                  <ChartTooltip\n                    cursor={false}\n                    content={<ChartTooltipContent indicator=\"dot\" />}\n                  />\n                  <Area\n                    dataKey=\"mobile\"\n                    type=\"natural\"\n                    fill=\"var(--color-mobile)\"\n                    fillOpacity={0.6}\n                    stroke=\"var(--color-mobile)\"\n                    stackId=\"a\"\n                  />\n                  <Area\n                    dataKey=\"desktop\"\n                    type=\"natural\"\n                    fill=\"var(--color-desktop)\"\n                    fillOpacity={0.4}\n                    stroke=\"var(--color-desktop)\"\n                    stackId=\"a\"\n                  />\n                </AreaChart>\n              </ChartContainer>\n              <Separator />\n              <div className=\"grid gap-2\">\n                <div className=\"flex gap-2 leading-none font-medium\">\n                  Trending up by 5.2% this month{\" \"}\n                  <IconPlaceholder\n                    lucide=\"TrendingUpIcon\"\n                    tabler=\"IconTrendingUp\"\n                    hugeicons=\"ChartUpIcon\"\n                    phosphor=\"TrendUpIcon\"\n                    remixicon=\"RiArrowUpLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"text-muted-foreground\">\n                  Showing total visitors for the last 6 months. This is just\n                  some random text to test the layout. It spans multiple lines\n                  and should wrap around.\n                </div>\n              </div>\n              <Separator />\n            </>\n          )}\n          <form className=\"flex flex-col gap-4\">\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"header\">Header</Label>\n              <Input id=\"header\" defaultValue={item.header} />\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"type\">Type</Label>\n                <Select defaultValue={item.type}>\n                  <SelectTrigger id=\"type\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a type\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectGroup>\n                      <SelectItem value=\"Table of Contents\">\n                        Table of Contents\n                      </SelectItem>\n                      <SelectItem value=\"Executive Summary\">\n                        Executive Summary\n                      </SelectItem>\n                      <SelectItem value=\"Technical Approach\">\n                        Technical Approach\n                      </SelectItem>\n                      <SelectItem value=\"Design\">Design</SelectItem>\n                      <SelectItem value=\"Capabilities\">Capabilities</SelectItem>\n                      <SelectItem value=\"Focus Documents\">\n                        Focus Documents\n                      </SelectItem>\n                      <SelectItem value=\"Narrative\">Narrative</SelectItem>\n                      <SelectItem value=\"Cover Page\">Cover Page</SelectItem>\n                    </SelectGroup>\n                  </SelectContent>\n                </Select>\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"status\">Status</Label>\n                <Select defaultValue={item.status}>\n                  <SelectTrigger id=\"status\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a status\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectGroup>\n                      <SelectItem value=\"Done\">Done</SelectItem>\n                      <SelectItem value=\"In Progress\">In Progress</SelectItem>\n                      <SelectItem value=\"Not Started\">Not Started</SelectItem>\n                    </SelectGroup>\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"target\">Target</Label>\n                <Input id=\"target\" defaultValue={item.target} />\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"limit\">Limit</Label>\n                <Input id=\"limit\" defaultValue={item.limit} />\n              </div>\n            </div>\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"reviewer\">Reviewer</Label>\n              <Select defaultValue={item.reviewer}>\n                <SelectTrigger id=\"reviewer\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select a reviewer\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n                    <SelectItem value=\"Jamik Tashpulatov\">\n                      Jamik Tashpulatov\n                    </SelectItem>\n                    <SelectItem value=\"Emily Whalen\">Emily Whalen</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </div>\n          </form>\n        </div>\n        <DrawerFooter>\n          <Button>Submit</Button>\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Done</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/nav-documents.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavDocuments({\n  items,\n}: {\n  items: {\n    name: string\n    url: string\n    icon: React.ReactNode\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                {item.icon}\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"rounded-sm data-[state=open]:bg-accent\"\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-24 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"Folder01Icon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                  />\n                  <span>Open</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare3\"\n                    hugeicons=\"Share01Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                  />\n                  <span>Share</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n              className=\"text-sidebar-foreground/70\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: React.ReactNode\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupContent className=\"flex flex-col gap-2\">\n        <SidebarMenu>\n          <SidebarMenuItem className=\"flex items-center gap-2\">\n            <SidebarMenuButton\n              tooltip=\"Quick Create\"\n              className=\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\"\n            >\n              <IconPlaceholder\n                lucide=\"CirclePlusIcon\"\n                tabler=\"IconCirclePlusFilled\"\n                hugeicons=\"PlusSignCircleIcon\"\n                phosphor=\"PlusCircleIcon\"\n                remixicon=\"RiAddCircleFill\"\n              />\n              <span>Quick Create</span>\n            </SidebarMenuButton>\n            <Button\n              size=\"icon\"\n              className=\"size-8 group-data-[collapsible=icon]:opacity-0\"\n              variant=\"outline\"\n            >\n              <IconPlaceholder\n                lucide=\"MailIcon\"\n                tabler=\"IconMail\"\n                hugeicons=\"Mail01Icon\"\n                phosphor=\"EnvelopeIcon\"\n                remixicon=\"RiMailLine\"\n              />\n              <span className=\"sr-only\">Inbox</span>\n            </Button>\n          </SidebarMenuItem>\n        </SidebarMenu>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton tooltip={item.title}>\n                {item.icon}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild>\n                <a href={item.url}>\n                  {item.icon}\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg grayscale\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs text-muted-foreground\">\n                  {user.email}\n                </span>\n              </div>\n              <IconPlaceholder\n                lucide=\"EllipsisVerticalIcon\"\n                tabler=\"IconDotsVertical\"\n                hugeicons=\"MoreVerticalCircle01Icon\"\n                phosphor=\"DotsThreeVerticalIcon\"\n                remixicon=\"RiMore2Line\"\n                className=\"ml-auto size-4\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs text-muted-foreground\">\n                    {user.email}\n                  </span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CircleUserRoundIcon\"\n                  tabler=\"IconUserCircle\"\n                  hugeicons=\"UserCircle02Icon\"\n                  phosphor=\"UserCircleIcon\"\n                  remixicon=\"RiUserLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconNotification\"\n                  hugeicons=\"Notification03Icon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotification3Line\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"Logout01Icon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/section-cards.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SectionCards() {\n  return (\n    <div className=\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\">\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Total Revenue</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            $1,250.00\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconPlaceholder\n                lucide=\"TrendingUpIcon\"\n                tabler=\"IconTrendingUp\"\n                hugeicons=\"ChartUpIcon\"\n                phosphor=\"TrendUpIcon\"\n                remixicon=\"RiArrowUpLine\"\n              />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Trending up this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiArrowUpLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>New Customers</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            1,234\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconPlaceholder\n                lucide=\"TrendingDownIcon\"\n                tabler=\"IconTrendingDown\"\n                hugeicons=\"ChartDownIcon\"\n                phosphor=\"TrendDownIcon\"\n                remixicon=\"RiArrowDownLine\"\n              />\n              -20%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Down 20% this period{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingDownIcon\"\n              tabler=\"IconTrendingDown\"\n              hugeicons=\"ChartDownIcon\"\n              phosphor=\"TrendDownIcon\"\n              remixicon=\"RiArrowDownLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Acquisition needs attention\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Active Accounts</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            45,678\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconPlaceholder\n                lucide=\"TrendingUpIcon\"\n                tabler=\"IconTrendingUp\"\n                hugeicons=\"ChartUpIcon\"\n                phosphor=\"TrendUpIcon\"\n                remixicon=\"RiArrowUpLine\"\n              />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Strong user retention{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiArrowUpLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"text-muted-foreground\">Engagement exceed targets</div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Growth Rate</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            4.5%\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconPlaceholder\n                lucide=\"TrendingUpIcon\"\n                tabler=\"IconTrendingUp\"\n                hugeicons=\"ChartUpIcon\"\n                phosphor=\"TrendUpIcon\"\n                remixicon=\"RiArrowUpLine\"\n              />\n              +4.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Steady performance increase{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiArrowUpLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"text-muted-foreground\">Meets growth projections</div>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/components/site-header.tsx",
    "content": "import { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport { SidebarTrigger } from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function SiteHeader() {\n  return (\n    <header className=\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\">\n      <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n        <SidebarTrigger className=\"-ml-1\" />\n        <Separator\n          orientation=\"vertical\"\n          className=\"mx-2 data-[orientation=vertical]:h-4\"\n        />\n        <h1 className=\"text-base font-medium\">Documents</h1>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/data.json",
    "content": "[\n  {\n    \"id\": 1,\n    \"header\": \"Cover page\",\n    \"type\": \"Cover page\",\n    \"status\": \"In Process\",\n    \"target\": \"18\",\n    \"limit\": \"5\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 2,\n    \"header\": \"Table of contents\",\n    \"type\": \"Table of contents\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 3,\n    \"header\": \"Executive summary\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"10\",\n    \"limit\": \"13\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 4,\n    \"header\": \"Technical approach\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"27\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 5,\n    \"header\": \"Design\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"2\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 6,\n    \"header\": \"Capabilities\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"20\",\n    \"limit\": \"8\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 7,\n    \"header\": \"Integration with existing systems\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 8,\n    \"header\": \"Innovation and Advantages\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"25\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 9,\n    \"header\": \"Overview of EMR's Innovative Solutions\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"7\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 10,\n    \"header\": \"Advanced Algorithms and Machine Learning\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 11,\n    \"header\": \"Adaptive Communication Protocols\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"9\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 12,\n    \"header\": \"Advantages Over Current Technologies\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"0\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 13,\n    \"header\": \"Past Performance\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 14,\n    \"header\": \"Customer Feedback and Satisfaction Levels\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"34\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 15,\n    \"header\": \"Implementation Challenges and Solutions\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"3\",\n    \"limit\": \"35\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 16,\n    \"header\": \"Security Measures and Data Protection Policies\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"6\",\n    \"limit\": \"36\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 17,\n    \"header\": \"Scalability and Future Proofing\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"4\",\n    \"limit\": \"37\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 18,\n    \"header\": \"Cost-Benefit Analysis\",\n    \"type\": \"Plain language\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"38\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 19,\n    \"header\": \"User Training and Onboarding Experience\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"17\",\n    \"limit\": \"39\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 20,\n    \"header\": \"Future Development Roadmap\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"11\",\n    \"limit\": \"40\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 21,\n    \"header\": \"System Architecture Overview\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"24\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Maya Johnson\"\n  },\n  {\n    \"id\": 22,\n    \"header\": \"Risk Management Plan\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Carlos Rodriguez\"\n  },\n  {\n    \"id\": 23,\n    \"header\": \"Compliance Documentation\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"31\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Sarah Chen\"\n  },\n  {\n    \"id\": 24,\n    \"header\": \"API Documentation\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"8\",\n    \"limit\": \"12\",\n    \"reviewer\": \"Raj Patel\"\n  },\n  {\n    \"id\": 25,\n    \"header\": \"User Interface Mockups\",\n    \"type\": \"Visual\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Leila Ahmadi\"\n  },\n  {\n    \"id\": 26,\n    \"header\": \"Database Schema\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Thomas Wilson\"\n  },\n  {\n    \"id\": 27,\n    \"header\": \"Testing Methodology\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 28,\n    \"header\": \"Deployment Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 29,\n    \"header\": \"Budget Breakdown\",\n    \"type\": \"Financial\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 30,\n    \"header\": \"Market Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Sophia Martinez\"\n  },\n  {\n    \"id\": 31,\n    \"header\": \"Competitor Comparison\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 32,\n    \"header\": \"Maintenance Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Alex Thompson\"\n  },\n  {\n    \"id\": 33,\n    \"header\": \"User Personas\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Nina Patel\"\n  },\n  {\n    \"id\": 34,\n    \"header\": \"Accessibility Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 35,\n    \"header\": \"Performance Metrics\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"David Kim\"\n  },\n  {\n    \"id\": 36,\n    \"header\": \"Disaster Recovery Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 37,\n    \"header\": \"Third-party Integrations\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 38,\n    \"header\": \"User Feedback Summary\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 39,\n    \"header\": \"Localization Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"12\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Maria Garcia\"\n  },\n  {\n    \"id\": 40,\n    \"header\": \"Mobile Compatibility\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"James Wilson\"\n  },\n  {\n    \"id\": 41,\n    \"header\": \"Data Migration Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 42,\n    \"header\": \"Quality Assurance Protocols\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Priya Singh\"\n  },\n  {\n    \"id\": 43,\n    \"header\": \"Stakeholder Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"11\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 44,\n    \"header\": \"Environmental Impact Assessment\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 45,\n    \"header\": \"Intellectual Property Rights\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Sarah Johnson\"\n  },\n  {\n    \"id\": 46,\n    \"header\": \"Customer Support Framework\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 47,\n    \"header\": \"Version Control Strategy\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 48,\n    \"header\": \"Continuous Integration Pipeline\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Michael Chen\"\n  },\n  {\n    \"id\": 49,\n    \"header\": \"Regulatory Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 50,\n    \"header\": \"User Authentication System\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 51,\n    \"header\": \"Data Analytics Framework\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 52,\n    \"header\": \"Cloud Infrastructure\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 53,\n    \"header\": \"Network Security Measures\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Lisa Wong\"\n  },\n  {\n    \"id\": 54,\n    \"header\": \"Project Timeline\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 55,\n    \"header\": \"Resource Allocation\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 56,\n    \"header\": \"Team Structure and Roles\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 57,\n    \"header\": \"Communication Protocols\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 58,\n    \"header\": \"Success Metrics\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 59,\n    \"header\": \"Internationalization Support\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 60,\n    \"header\": \"Backup and Recovery Procedures\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 61,\n    \"header\": \"Monitoring and Alerting System\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Daniel Park\"\n  },\n  {\n    \"id\": 62,\n    \"header\": \"Code Review Guidelines\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 63,\n    \"header\": \"Documentation Standards\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 64,\n    \"header\": \"Release Management Process\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 65,\n    \"header\": \"Feature Prioritization Matrix\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Emma Davis\"\n  },\n  {\n    \"id\": 66,\n    \"header\": \"Technical Debt Assessment\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 67,\n    \"header\": \"Capacity Planning\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 68,\n    \"header\": \"Service Level Agreements\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Assign reviewer\"\n  }\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/dashboard-01/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/dashboard-01/components/app-sidebar\"\nimport { ChartAreaInteractive } from \"@/registry/bases/radix/blocks/dashboard-01/components/chart-area-interactive\"\nimport { DataTable } from \"@/registry/bases/radix/blocks/dashboard-01/components/data-table\"\nimport { SectionCards } from \"@/registry/bases/radix/blocks/dashboard-01/components/section-cards\"\nimport { SiteHeader } from \"@/registry/bases/radix/blocks/dashboard-01/components/site-header\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nimport data from \"./data.json\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"calc(var(--spacing) * 72)\",\n          \"--header-height\": \"calc(var(--spacing) * 12)\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar variant=\"inset\" />\n      <SidebarInset>\n        <SiteHeader />\n        <div className=\"flex flex-1 flex-col\">\n          <div className=\"@container/main flex flex-1 flex-col gap-2\">\n            <div className=\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\">\n              <SectionCards />\n              <div className=\"px-4 lg:px-6\">\n                <ChartAreaInteractive />\n              </div>\n              <DataTable data={data} />\n            </div>\n          </div>\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-01/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader>\n          <CardTitle>Login to your account</CardTitle>\n          <CardDescription>\n            Enter your email below to login to your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto inline-block text-sm underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n                <Button variant=\"outline\" type=\"button\">\n                  Login with Google\n                </Button>\n                <FieldDescription className=\"text-center\">\n                  Don&apos;t have an account? <a href=\"#\">Sign up</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-01/page.tsx",
    "content": "import { LoginForm } from \"@/registry/bases/radix/blocks/login-01/components/login-form\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-02/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <FieldGroup>\n        <div className=\"flex flex-col items-center gap-1 text-center\">\n          <h1 className=\"text-2xl font-bold\">Login to your account</h1>\n          <p className=\"text-sm text-balance text-muted-foreground\">\n            Enter your email below to login to your account\n          </p>\n        </div>\n        <Field>\n          <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n          <Input\n            id=\"email\"\n            type=\"email\"\n            placeholder=\"m@example.com\"\n            required\n            className=\"bg-background\"\n          />\n        </Field>\n        <Field>\n          <div className=\"flex items-center\">\n            <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n            <a\n              href=\"#\"\n              className=\"ml-auto text-sm underline-offset-4 hover:underline\"\n            >\n              Forgot your password?\n            </a>\n          </div>\n          <Input\n            id=\"password\"\n            type=\"password\"\n            required\n            className=\"bg-background\"\n          />\n        </Field>\n        <Field>\n          <Button type=\"submit\">Login</Button>\n        </Field>\n        <FieldSeparator>Or continue with</FieldSeparator>\n        <Field>\n          <Button variant=\"outline\" type=\"button\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            Login with GitHub\n          </Button>\n          <FieldDescription className=\"text-center\">\n            Don&apos;t have an account?{\" \"}\n            <a href=\"#\" className=\"underline underline-offset-4\">\n              Sign up\n            </a>\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-02/page.tsx",
    "content": "\"use client\"\n\nimport { LoginForm } from \"@/registry/bases/radix/blocks/login-02/components/login-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"grid min-h-svh lg:grid-cols-2\">\n      <div className=\"flex flex-col gap-4 p-6 md:p-10\">\n        <div className=\"flex justify-center gap-2 md:justify-start\">\n          <a href=\"#\" className=\"flex items-center gap-2 font-medium\">\n            <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n              <IconPlaceholder\n                lucide=\"GalleryVerticalEndIcon\"\n                tabler=\"IconLayoutRows\"\n                hugeicons=\"LayoutBottomIcon\"\n                phosphor=\"RowsIcon\"\n                remixicon=\"RiGalleryLine\"\n                className=\"size-4\"\n              />\n            </div>\n            Acme Inc.\n          </a>\n        </div>\n        <div className=\"flex flex-1 items-center justify-center\">\n          <div className=\"w-full max-w-xs\">\n            <LoginForm />\n          </div>\n        </div>\n      </div>\n      <div className=\"relative hidden bg-muted lg:block\">\n        <img\n          src=\"/placeholder.svg\"\n          alt=\"Image\"\n          className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-03/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader className=\"text-center\">\n          <CardTitle className=\"text-xl\">Welcome back</CardTitle>\n          <CardDescription>\n            Login with your Apple or Google account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  Login with Apple\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  Login with Google\n                </Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto text-sm underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n                <FieldDescription className=\"text-center\">\n                  Don&apos;t have an account? <a href=\"#\">Sign up</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-03/page.tsx",
    "content": "\"use client\"\n\nimport { LoginForm } from \"@/registry/bases/radix/blocks/login-03/components/login-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\">\n      <div className=\"flex w-full max-w-sm flex-col gap-6\">\n        <a href=\"#\" className=\"flex items-center gap-2 self-center font-medium\">\n          <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n            <IconPlaceholder\n              lucide=\"GalleryVerticalEndIcon\"\n              tabler=\"IconLayoutRows\"\n              hugeicons=\"LayoutBottomIcon\"\n              phosphor=\"RowsIcon\"\n              remixicon=\"RiGalleryLine\"\n              className=\"size-4\"\n            />\n          </div>\n          Acme Inc.\n        </a>\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-04/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card className=\"overflow-hidden p-0\">\n        <CardContent className=\"grid p-0 md:grid-cols-2\">\n          <form className=\"p-6 md:p-8\">\n            <FieldGroup>\n              <div className=\"flex flex-col items-center gap-2 text-center\">\n                <h1 className=\"text-2xl font-bold\">Welcome back</h1>\n                <p className=\"text-balance text-muted-foreground\">\n                  Login to your Acme Inc account\n                </p>\n              </div>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto text-sm underline-offset-2 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field className=\"grid grid-cols-3 gap-4\">\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Apple</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Google</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Meta</span>\n                </Button>\n              </Field>\n              <FieldDescription className=\"text-center\">\n                Don&apos;t have an account? <a href=\"#\">Sign up</a>\n              </FieldDescription>\n            </FieldGroup>\n          </form>\n          <div className=\"relative hidden bg-muted md:block\">\n            <img\n              src=\"/placeholder.svg\"\n              alt=\"Image\"\n              className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n            />\n          </div>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-04/page.tsx",
    "content": "import { LoginForm } from \"@/registry/bases/radix/blocks/login-04/components/login-form\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\">\n      <div className=\"w-full max-w-sm md:max-w-4xl\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-05/components/login-form.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <form>\n        <FieldGroup>\n          <div className=\"flex flex-col items-center gap-2 text-center\">\n            <a\n              href=\"#\"\n              className=\"flex flex-col items-center gap-2 font-medium\"\n            >\n              <div className=\"flex size-8 items-center justify-center rounded-md\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-6\"\n                />\n              </div>\n              <span className=\"sr-only\">Acme Inc.</span>\n            </a>\n            <h1 className=\"text-xl font-bold\">Welcome to Acme Inc.</h1>\n            <FieldDescription>\n              Don&apos;t have an account? <a href=\"#\">Sign up</a>\n            </FieldDescription>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              placeholder=\"m@example.com\"\n              required\n            />\n          </Field>\n          <Field>\n            <Button type=\"submit\">Login</Button>\n          </Field>\n          <FieldSeparator>Or</FieldSeparator>\n          <Field className=\"grid gap-4 sm:grid-cols-2\">\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Apple\n            </Button>\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Google\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/login-05/page.tsx",
    "content": "import { LoginForm } from \"@/registry/bases/radix/blocks/login-05/components/login-form\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/activate-agent-dialog.tsx",
    "content": "\"use client\"\n\nimport { Alert, AlertDescription } from \"@/registry/bases/radix/ui/alert\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Item,\n  ItemContent,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// Agent feature descriptions.\nconst agentFeatures = [\n  {\n    id: \"code-reviews\",\n    content: (\n      <>\n        <strong>Code reviews</strong> with full codebase context to catch{\" \"}\n        <strong>hard-to-find</strong> bugs.\n      </>\n    ),\n  },\n  {\n    id: \"code-suggestions\",\n    content: (\n      <>\n        <strong>Code suggestions</strong> validated in sandboxes before you\n        merge.\n      </>\n    ),\n  },\n  {\n    id: \"root-cause\",\n    content: (\n      <>\n        <strong>Root-cause analysis</strong> for production issues with\n        deployment context.{\" \"}\n        <Badge variant=\"secondary\" className=\"bg-chart-1 text-chart-5\">\n          Requires Observability Plus\n        </Badge>\n      </>\n    ),\n  },\n]\n\nexport function ActivateAgentDialog() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Ship faster & safer with Vercel Agent</CardTitle>\n        <CardDescription>\n          Your use is subject to Vercel&apos;s{\" \"}\n          <a href=\"#\">Public Beta Agreement</a> and{\" \"}\n          <a href=\"#\">AI Product Terms</a>.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <ItemGroup className=\"gap-0\">\n          {agentFeatures.map((feature) => (\n            <Item key={feature.id} size=\"xs\" className=\"px-0\">\n              <ItemMedia variant=\"icon\" className=\"self-start\">\n                <IconPlaceholder\n                  lucide=\"CheckCircle2Icon\"\n                  tabler=\"IconCircleCheckFilled\"\n                  hugeicons=\"CheckmarkCircle02Icon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                  className=\"size-5 fill-primary text-primary-foreground\"\n                />\n              </ItemMedia>\n              <ItemContent>\n                <ItemTitle className=\"inline leading-relaxed font-normal text-muted-foreground *:[strong]:font-medium *:[strong]:text-foreground\">\n                  {feature.content}\n                </ItemTitle>\n              </ItemContent>\n            </Item>\n          ))}\n        </ItemGroup>\n        <Alert>\n          <AlertDescription>\n            Pro teams get $100 in Vercel Agent trial credit for 2 weeks after\n            activation.\n          </AlertDescription>\n        </Alert>\n      </CardContent>\n      <CardFooter className=\"justify-end gap-2\">\n        <Button variant=\"outline\">Cancel</Button>\n        <Button>Enable with $100 credits</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/analytics-card.tsx",
    "content": "\"use client\"\n\nimport { Area, AreaChart } from \"recharts\"\n\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/radix/ui/chart\"\n\n// Monthly visitor data for the area chart.\nconst chartData = [\n  { month: \"January\", visitors: 186 },\n  { month: \"February\", visitors: 305 },\n  { month: \"March\", visitors: 237 },\n  { month: \"April\", visitors: 73 },\n  { month: \"May\", visitors: 209 },\n  { month: \"June\", visitors: 214 },\n]\n\n// Chart configuration for the visitors dataset.\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function AnalyticsCard() {\n  return (\n    <Card className=\"mx-auto w-full max-w-sm data-[size=sm]:pb-0\" size=\"sm\">\n      <CardHeader>\n        <CardTitle>Analytics</CardTitle>\n        <CardDescription>\n          418.2K Visitors <Badge>+10%</Badge>\n        </CardDescription>\n        <CardAction>\n          <Button variant=\"outline\" size=\"sm\">\n            View Analytics\n          </Button>\n        </CardAction>\n      </CardHeader>\n      <ChartContainer config={chartConfig} className=\"aspect-[1/0.35]\">\n        <AreaChart\n          accessibilityLayer\n          data={chartData}\n          margin={{\n            left: 0,\n            right: 0,\n          }}\n        >\n          <ChartTooltip\n            cursor={false}\n            content={<ChartTooltipContent indicator=\"line\" hideLabel />}\n            defaultIndex={2}\n          />\n          <Area\n            dataKey=\"visitors\"\n            type=\"linear\"\n            fill=\"var(--color-visitors)\"\n            fillOpacity={0.4}\n            stroke=\"var(--color-visitors)\"\n          />\n        </AreaChart>\n      </ChartContainer>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/anomaly-alert.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyTitle,\n} from \"@/registry/bases/radix/ui/empty\"\n\nexport function AnomalyAlert() {\n  return (\n    <Card>\n      <CardContent>\n        <Empty className=\"h-48\">\n          <EmptyHeader>\n            <EmptyTitle>Get alerted for anomalies</EmptyTitle>\n            <EmptyDescription>\n              Automatically monitor your projects for anomalies and get\n              notified.\n            </EmptyDescription>\n          </EmptyHeader>\n          <EmptyContent>\n            <Button>Upgrade to Observability Plus</Button>\n          </EmptyContent>\n        </Empty>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/assign-issue.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/registry/bases/radix/ui/combobox\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/radix/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// Users available for assignment.\nconst users = [\n  \"shadcn\",\n  \"maxleiter\",\n  \"evilrabbit\",\n  \"pranathip\",\n  \"jorgezreik\",\n  \"shuding\",\n  \"rauchg\",\n]\n\nexport function AssignIssue() {\n  const anchor = useComboboxAnchor()\n  return (\n    <Card className=\"w-full max-w-sm\" size=\"sm\">\n      <CardHeader className=\"border-b\">\n        <CardTitle className=\"text-sm\">Assign Issue</CardTitle>\n        <CardDescription className=\"text-sm\">\n          Select users to assign to this issue.\n        </CardDescription>\n        <CardAction>\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <Button variant=\"outline\" size=\"icon-xs\">\n                <IconPlaceholder\n                  lucide=\"PlusIcon\"\n                  tabler=\"IconPlus\"\n                  hugeicons=\"PlusSignIcon\"\n                  phosphor=\"PlusIcon\"\n                  remixicon=\"RiAddLine\"\n                />\n              </Button>\n            </TooltipTrigger>\n            <TooltipContent>Add user</TooltipContent>\n          </Tooltip>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <Combobox\n          multiple\n          autoHighlight\n          items={users}\n          defaultValue={[users[0]]}\n        >\n          <ComboboxChips ref={anchor}>\n            <ComboboxValue>\n              {(values) => (\n                <React.Fragment>\n                  {values.map((username: string) => (\n                    <ComboboxChip key={username}>\n                      <Avatar className=\"size-4\">\n                        <AvatarImage\n                          src={`https://github.com/${username}.png`}\n                          alt={username}\n                        />\n                        <AvatarFallback>{username.charAt(0)}</AvatarFallback>\n                      </Avatar>\n                      {username}\n                    </ComboboxChip>\n                  ))}\n                  <ComboboxChipsInput\n                    placeholder={\n                      values.length > 0 ? undefined : \"Select a item...\"\n                    }\n                  />\n                </React.Fragment>\n              )}\n            </ComboboxValue>\n          </ComboboxChips>\n          <ComboboxContent anchor={anchor}>\n            <ComboboxEmpty>No users found.</ComboboxEmpty>\n            <ComboboxList>\n              {(username) => (\n                <ComboboxItem key={username} value={username}>\n                  <Avatar className=\"size-5\">\n                    <AvatarImage\n                      src={`https://github.com/${username}.png`}\n                      alt={username}\n                    />\n                    <AvatarFallback>{username.charAt(0)}</AvatarFallback>\n                  </Avatar>\n                  {username}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/bar-chart-card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/radix/ui/chart\"\n\nconst barChartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst barChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nconst desktopTotal = barChartData.reduce((sum, item) => sum + item.desktop, 0)\nconst mobileTotal = barChartData.reduce((sum, item) => sum + item.mobile, 0)\nconst desktopDelta = Math.round(\n  ((desktopTotal - mobileTotal) / mobileTotal) * 100\n)\nconst desktopDeltaPrefix = desktopDelta > 0 ? \"+\" : \"\"\n\nexport function BarChartCard() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle className=\"text-lg\">Traffic channels</CardTitle>\n        <CardDescription className=\"line-clamp-2 text-sm leading-snug\">\n          Monthly desktop and mobile traffic for the last six months—compare\n          volume and mix across platforms and devices at a glance.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4 pt-0\">\n        <ChartContainer\n          config={barChartConfig}\n          className=\"max-h-[180px] w-full\"\n        >\n          <BarChart\n            accessibilityLayer\n            data={barChartData}\n            margin={{ left: 0, right: 0, top: 8, bottom: 0 }}\n          >\n            <CartesianGrid vertical={false} strokeDasharray=\"3 3\" />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              tickMargin={8}\n              axisLine={false}\n              tickFormatter={(value) => String(value).slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"dashed\" />}\n            />\n            <ChartLegend content={<ChartLegendContent />} />\n            <Bar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              radius={[6, 6, 0, 0]}\n            />\n            <Bar\n              dataKey=\"mobile\"\n              fill=\"var(--color-mobile)\"\n              radius={[6, 6, 0, 0]}\n            />\n          </BarChart>\n        </ChartContainer>\n        <div className=\"grid w-full grid-cols-3 divide-x divide-border/60\">\n          <div className=\"px-2 text-center\">\n            <div className=\"text-[0.65rem] text-muted-foreground uppercase\">\n              Desktop\n            </div>\n            <div className=\"text-sm font-medium tabular-nums\">\n              {desktopTotal.toLocaleString()}\n            </div>\n          </div>\n          <div className=\"px-2 text-center\">\n            <div className=\"text-[0.65rem] text-muted-foreground uppercase\">\n              Mobile\n            </div>\n            <div className=\"text-sm font-medium tabular-nums\">\n              {mobileTotal.toLocaleString()}\n            </div>\n          </div>\n          <div className=\"px-2 text-center\">\n            <div className=\"text-[0.65rem] text-muted-foreground uppercase\">\n              Mix Delta\n            </div>\n            <div className=\"text-sm font-medium tabular-nums\">\n              {desktopDeltaPrefix}\n              {desktopDelta}%\n            </div>\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">View report</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/bar-visualizer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\n\ntype AgentState =\n  | \"connecting\"\n  | \"initializing\"\n  | \"listening\"\n  | \"speaking\"\n  | \"thinking\"\n\ntype AnimationState = AgentState | undefined\n\ninterface AudioAnalyserOptions {\n  fftSize?: number\n  smoothingTimeConstant?: number\n  minDecibels?: number\n  maxDecibels?: number\n}\n\ninterface MultiBandVolumeOptions {\n  bands?: number\n  loPass?: number\n  hiPass?: number\n  updateInterval?: number\n  analyserOptions?: AudioAnalyserOptions\n}\n\nconst multibandDefaults: MultiBandVolumeOptions = {\n  bands: 5,\n  loPass: 100,\n  hiPass: 600,\n  updateInterval: 32,\n  analyserOptions: { fftSize: 2048 },\n}\n\nconst normalizeDb = (value: number) => {\n  if (value === -Infinity) return 0\n  const minDb = -100\n  const maxDb = -10\n  const db = 1 - (Math.max(minDb, Math.min(maxDb, value)) * -1) / 100\n  return Math.sqrt(db)\n}\n\nfunction createAudioAnalyser(\n  mediaStream: MediaStream,\n  options: AudioAnalyserOptions = {}\n) {\n  const audioContext = new (window.AudioContext ||\n    (window as unknown as { webkitAudioContext: typeof AudioContext })\n      .webkitAudioContext)()\n  const source = audioContext.createMediaStreamSource(mediaStream)\n  const analyser = audioContext.createAnalyser()\n\n  if (options.fftSize) analyser.fftSize = options.fftSize\n  if (options.smoothingTimeConstant !== undefined) {\n    analyser.smoothingTimeConstant = options.smoothingTimeConstant\n  }\n  if (options.minDecibels !== undefined)\n    analyser.minDecibels = options.minDecibels\n  if (options.maxDecibels !== undefined)\n    analyser.maxDecibels = options.maxDecibels\n\n  source.connect(analyser)\n\n  const cleanup = () => {\n    source.disconnect()\n    audioContext.close()\n  }\n\n  return { analyser, audioContext, cleanup }\n}\n\nfunction useMultibandVolume(\n  mediaStream?: MediaStream | null,\n  options: MultiBandVolumeOptions = {}\n) {\n  const opts = useMemo(() => ({ ...multibandDefaults, ...options }), [options])\n\n  const [frequencyBands, setFrequencyBands] = useState<number[]>(() =>\n    new Array(opts.bands).fill(0)\n  )\n  const bandsRef = useRef<number[]>(new Array(opts.bands).fill(0))\n  const frameId = useRef<number | undefined>(undefined)\n\n  useEffect(() => {\n    if (!mediaStream) {\n      const emptyBands = new Array(opts.bands).fill(0)\n      setTimeout(() => {\n        setFrequencyBands(emptyBands)\n      }, 0)\n      bandsRef.current = emptyBands\n      return\n    }\n\n    const { analyser, cleanup } = createAudioAnalyser(\n      mediaStream,\n      opts.analyserOptions\n    )\n\n    const bufferLength = analyser.frequencyBinCount\n    const dataArray = new Float32Array(bufferLength)\n    const sliceStart = opts.loPass!\n    const sliceEnd = opts.hiPass!\n    const sliceLength = sliceEnd - sliceStart\n    const chunkSize = Math.ceil(sliceLength / opts.bands!)\n\n    let lastUpdate = 0\n    const updateInterval = opts.updateInterval!\n\n    const updateVolume = (timestamp: number) => {\n      if (timestamp - lastUpdate >= updateInterval) {\n        analyser.getFloatFrequencyData(dataArray)\n\n        const chunks = new Array(opts.bands!)\n\n        for (let i = 0; i < opts.bands!; i++) {\n          let sum = 0\n          let count = 0\n          const startIdx = sliceStart + i * chunkSize\n          const endIdx = Math.min(sliceStart + (i + 1) * chunkSize, sliceEnd)\n\n          for (let j = startIdx; j < endIdx; j++) {\n            sum += normalizeDb(dataArray[j])\n            count++\n          }\n\n          chunks[i] = count > 0 ? sum / count : 0\n        }\n\n        let hasChanged = false\n        for (let i = 0; i < chunks.length; i++) {\n          if (Math.abs(chunks[i] - bandsRef.current[i]) > 0.01) {\n            hasChanged = true\n            break\n          }\n        }\n\n        if (hasChanged) {\n          bandsRef.current = chunks\n          setFrequencyBands(chunks)\n        }\n\n        lastUpdate = timestamp\n      }\n\n      frameId.current = requestAnimationFrame(updateVolume)\n    }\n\n    frameId.current = requestAnimationFrame(updateVolume)\n\n    return () => {\n      cleanup()\n      if (frameId.current) {\n        cancelAnimationFrame(frameId.current)\n      }\n    }\n  }, [mediaStream, opts])\n\n  return frequencyBands\n}\n\nconst generateConnectingSequenceBar = (columns: number): number[][] => {\n  const seq = []\n  for (let x = 0; x < columns; x++) {\n    seq.push([x, columns - 1 - x])\n  }\n  return seq\n}\n\nconst generateListeningSequenceBar = (columns: number): number[][] => {\n  const center = Math.floor(columns / 2)\n  const noIndex = -1\n  return [[center], [noIndex]]\n}\n\nconst useBarAnimator = (\n  state: AnimationState,\n  columns: number,\n  interval: number\n): number[] => {\n  const indexRef = useRef(0)\n  const [currentFrame, setCurrentFrame] = useState<number[]>([])\n  const animationFrameId = useRef<number | null>(null)\n\n  const sequence = useMemo(() => {\n    if (state === \"thinking\" || state === \"listening\") {\n      return generateListeningSequenceBar(columns)\n    } else if (state === \"connecting\" || state === \"initializing\") {\n      return generateConnectingSequenceBar(columns)\n    } else if (state === undefined || state === \"speaking\") {\n      return [new Array(columns).fill(0).map((_, idx) => idx)]\n    } else {\n      return [[]]\n    }\n  }, [state, columns])\n\n  useEffect(() => {\n    indexRef.current = 0\n    setTimeout(() => {\n      setCurrentFrame(sequence[0] || [])\n    }, 0)\n  }, [sequence])\n\n  useEffect(() => {\n    let startTime = performance.now()\n\n    const animate = (time: DOMHighResTimeStamp) => {\n      const timeElapsed = time - startTime\n\n      if (timeElapsed >= interval) {\n        indexRef.current = (indexRef.current + 1) % sequence.length\n        setCurrentFrame(sequence[indexRef.current] || [])\n        startTime = time\n      }\n\n      animationFrameId.current = requestAnimationFrame(animate)\n    }\n\n    animationFrameId.current = requestAnimationFrame(animate)\n\n    return () => {\n      if (animationFrameId.current !== null) {\n        cancelAnimationFrame(animationFrameId.current)\n      }\n    }\n  }, [interval, sequence])\n\n  return currentFrame\n}\n\n// Memoized Bar component to prevent unnecessary re-renders.\nconst Bar = React.memo<{\n  heightPct: number\n  isHighlighted: boolean\n  state?: AgentState\n}>(({ heightPct, isHighlighted, state }) => (\n  <div\n    data-highlighted={isHighlighted}\n    className={cn(\n      \"max-w-[12px] min-w-[8px] flex-1 transition-all duration-150\",\n      \"rounded-full\",\n      \"bg-border data-[highlighted=true]:bg-chart-3\",\n      state === \"speaking\" && \"bg-chart-3\",\n      state === \"thinking\" && isHighlighted && \"animate-pulse\"\n    )}\n    style={{\n      height: `${heightPct}%`,\n      animationDuration: state === \"thinking\" ? \"300ms\" : undefined,\n    }}\n  />\n))\n\nBar.displayName = \"Bar\"\n\nconst BarVisualizerComponent = React.forwardRef<\n  HTMLDivElement,\n  {\n    state?: AgentState\n    barCount?: number\n    mediaStream?: MediaStream | null\n    minHeight?: number\n    maxHeight?: number\n    demo?: boolean\n    centerAlign?: boolean\n  } & React.HTMLAttributes<HTMLDivElement>\n>(\n  (\n    {\n      state,\n      barCount = 15,\n      mediaStream,\n      minHeight = 20,\n      maxHeight = 100,\n      demo = false,\n      centerAlign = false,\n      className,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    const realVolumeBands = useMultibandVolume(mediaStream, {\n      bands: barCount,\n      loPass: 100,\n      hiPass: 200,\n    })\n\n    const fakeVolumeBandsRef = useRef<number[]>(new Array(barCount).fill(0.2))\n    const [fakeVolumeBands, setFakeVolumeBands] = useState<number[]>(() =>\n      new Array(barCount).fill(0.2)\n    )\n    const fakeAnimationRef = useRef<number | undefined>(undefined)\n\n    useEffect(() => {\n      if (!demo) return\n\n      if (state !== \"speaking\" && state !== \"listening\") {\n        const bands = new Array(barCount).fill(0.2)\n        fakeVolumeBandsRef.current = bands\n        setTimeout(() => {\n          setFakeVolumeBands(bands)\n        }, 0)\n        return\n      }\n\n      let lastUpdate = 0\n      const updateInterval = 50\n      const startTime = Date.now() / 1000\n\n      const updateFakeVolume = (timestamp: number) => {\n        if (timestamp - lastUpdate >= updateInterval) {\n          const time = Date.now() / 1000 - startTime\n          const newBands = new Array(barCount)\n\n          for (let i = 0; i < barCount; i++) {\n            const waveOffset = i * 0.5\n            const baseVolume = Math.sin(time * 2 + waveOffset) * 0.3 + 0.5\n            const randomNoise = Math.random() * 0.2\n            newBands[i] = Math.max(0.1, Math.min(1, baseVolume + randomNoise))\n          }\n\n          let hasChanged = false\n          for (let i = 0; i < barCount; i++) {\n            if (Math.abs(newBands[i] - fakeVolumeBandsRef.current[i]) > 0.05) {\n              hasChanged = true\n              break\n            }\n          }\n\n          if (hasChanged) {\n            fakeVolumeBandsRef.current = newBands\n            setFakeVolumeBands(newBands)\n          }\n\n          lastUpdate = timestamp\n        }\n\n        fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)\n      }\n\n      fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)\n\n      return () => {\n        if (fakeAnimationRef.current) {\n          cancelAnimationFrame(fakeAnimationRef.current)\n        }\n      }\n    }, [demo, state, barCount])\n\n    const volumeBands = useMemo(\n      () => (demo ? fakeVolumeBands : realVolumeBands),\n      [demo, fakeVolumeBands, realVolumeBands]\n    )\n\n    const highlightedIndices = useBarAnimator(\n      state,\n      barCount,\n      state === \"connecting\"\n        ? 2000 / barCount\n        : state === \"thinking\"\n          ? 150\n          : state === \"listening\"\n            ? 500\n            : 1000\n    )\n\n    return (\n      <div\n        ref={ref}\n        data-state={state}\n        className={cn(\n          \"relative flex justify-center gap-1.5\",\n          centerAlign ? \"items-center\" : \"items-end\",\n          \"h-32 w-full overflow-hidden rounded-lg bg-muted p-4\",\n          className\n        )}\n        style={{\n          ...style,\n        }}\n        {...props}\n      >\n        {volumeBands.map((volume, index) => {\n          const heightPct = Math.min(\n            maxHeight,\n            Math.max(minHeight, volume * 100 + 5)\n          )\n          const isHighlighted = highlightedIndices?.includes(index) ?? false\n\n          return (\n            <Bar\n              key={index}\n              heightPct={heightPct}\n              isHighlighted={isHighlighted}\n              state={state}\n            />\n          )\n        })}\n      </div>\n    )\n  }\n)\n\nBarVisualizerComponent.displayName = \"BarVisualizerComponent\"\n\nconst BarVisualizer = React.memo(\n  BarVisualizerComponent,\n  (prevProps, nextProps) => {\n    return (\n      prevProps.state === nextProps.state &&\n      prevProps.barCount === nextProps.barCount &&\n      prevProps.mediaStream === nextProps.mediaStream &&\n      prevProps.minHeight === nextProps.minHeight &&\n      prevProps.maxHeight === nextProps.maxHeight &&\n      prevProps.demo === nextProps.demo &&\n      prevProps.centerAlign === nextProps.centerAlign &&\n      prevProps.className === nextProps.className &&\n      JSON.stringify(prevProps.style) === JSON.stringify(nextProps.style)\n    )\n  }\n)\n\nBarVisualizer.displayName = \"BarVisualizer\"\n\nexport function BarVisualizerCard() {\n  const [state, setState] = useState<AgentState>(\"speaking\")\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Audio Frequency Visualizer</CardTitle>\n        <CardDescription>\n          Real-time frequency band visualization with animated state transitions\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <BarVisualizer\n          state={state}\n          demo={true}\n          barCount={20}\n          minHeight={15}\n          maxHeight={90}\n          className=\"h-40 max-w-full\"\n        />\n      </CardContent>\n      <CardFooter className=\"gap-2\">\n        <Button\n          size=\"sm\"\n          variant={state === \"connecting\" ? \"default\" : \"outline\"}\n          onClick={() => setState(\"connecting\")}\n        >\n          Connecting\n        </Button>\n        <Button\n          size=\"sm\"\n          variant={state === \"listening\" ? \"default\" : \"outline\"}\n          onClick={() => setState(\"listening\")}\n        >\n          Listening\n        </Button>\n        <Button\n          size=\"sm\"\n          variant={state === \"speaking\" ? \"default\" : \"outline\"}\n          onClick={() => setState(\"speaking\")}\n        >\n          Speaking\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/book-appointment.tsx",
    "content": "\"use client\"\n\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/bases/radix/ui/alert\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/bases/radix/ui/toggle-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function BookAppointment() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Book Appointment</CardTitle>\n        <CardDescription>Dr. Sarah Chen · Cardiology</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <FieldGroup>\n          <Field>\n            <FieldLabel>Available on March 18, 2026</FieldLabel>\n            <ToggleGroup type=\"multiple\" spacing={2} defaultValue={[\"slot-0\"]}>\n              {[\"9:00 AM\", \"10:30 AM\", \"11:00 AM\", \"1:30 PM\"].map(\n                (time, index) => (\n                  <ToggleGroupItem key={time} value={`slot-${index}`}>\n                    {time}\n                  </ToggleGroupItem>\n                )\n              )}\n            </ToggleGroup>\n          </Field>\n        </FieldGroup>\n        <Alert>\n          <AlertTitle>New patient?</AlertTitle>\n          <AlertDescription>Please arrive 15 minutes early.</AlertDescription>\n        </Alert>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">Book Appointment</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/codespaces-card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/radix/ui/empty\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport { Spinner } from \"@/registry/bases/radix/ui/spinner\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/bases/radix/ui/tabs\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/radix/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function CodespacesCard() {\n  const [isCreatingCodespace, setIsCreatingCodespace] = React.useState(false)\n  return (\n    <Card>\n      <CardContent>\n        <Tabs defaultValue=\"codespaces\">\n          <TabsList className=\"w-full\">\n            <TabsTrigger value=\"codespaces\">Codespaces</TabsTrigger>\n            <TabsTrigger value=\"local\">Local</TabsTrigger>\n          </TabsList>\n          <TabsContent value=\"codespaces\">\n            <Item size=\"sm\" className=\"px-1 pt-2\">\n              <ItemContent>\n                <ItemTitle>Codespaces</ItemTitle>\n                <ItemDescription>Your workspaces in the cloud</ItemDescription>\n              </ItemContent>\n              <ItemActions>\n                <Tooltip>\n                  <TooltipTrigger asChild>\n                    <Button variant=\"ghost\" size=\"icon-sm\">\n                      <IconPlaceholder\n                        lucide=\"PlusIcon\"\n                        tabler=\"IconPlus\"\n                        hugeicons=\"PlusSignIcon\"\n                        phosphor=\"PlusIcon\"\n                        remixicon=\"RiAddLine\"\n                      />\n                    </Button>\n                  </TooltipTrigger>\n                  <TooltipContent side=\"bottom\">\n                    Create a codespace on main\n                  </TooltipContent>\n                </Tooltip>\n                <DropdownMenu>\n                  <DropdownMenuTrigger asChild>\n                    <Button variant=\"ghost\" size=\"icon-sm\">\n                      <IconPlaceholder\n                        lucide=\"MoreHorizontalIcon\"\n                        tabler=\"IconDots\"\n                        hugeicons=\"MoreHorizontalCircle01Icon\"\n                        phosphor=\"DotsThreeOutlineIcon\"\n                        remixicon=\"RiMoreLine\"\n                      />\n                    </Button>\n                  </DropdownMenuTrigger>\n                  <DropdownMenuContent align=\"end\" className=\"w-56\">\n                    <DropdownMenuGroup>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"PlusIcon\"\n                          tabler=\"IconPlus\"\n                          hugeicons=\"PlusSignIcon\"\n                          phosphor=\"PlusIcon\"\n                          remixicon=\"RiAddLine\"\n                        />\n                        New with options...\n                      </DropdownMenuItem>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"ContainerIcon\"\n                          tabler=\"IconBox\"\n                          hugeicons=\"CubeIcon\"\n                          phosphor=\"CubeIcon\"\n                          remixicon=\"RiBox1Line\"\n                        />\n                        Configure dev container\n                      </DropdownMenuItem>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"ZapIcon\"\n                          tabler=\"IconBolt\"\n                          hugeicons=\"ZapIcon\"\n                          phosphor=\"LightningIcon\"\n                          remixicon=\"RiFlashlightLine\"\n                        />\n                        Set up prebuilds\n                      </DropdownMenuItem>\n                    </DropdownMenuGroup>\n                    <DropdownMenuSeparator />\n                    <DropdownMenuGroup>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"ServerIcon\"\n                          tabler=\"IconServer\"\n                          hugeicons=\"ServerStackIcon\"\n                          phosphor=\"HardDrivesIcon\"\n                          remixicon=\"RiHardDriveLine\"\n                        />\n                        Manage codespaces\n                      </DropdownMenuItem>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"ShareIcon\"\n                          tabler=\"IconShare2\"\n                          hugeicons=\"Share03Icon\"\n                          phosphor=\"ShareIcon\"\n                          remixicon=\"RiShareLine\"\n                        />\n                        Share deep link\n                      </DropdownMenuItem>\n                      <DropdownMenuItem>\n                        <IconPlaceholder\n                          lucide=\"InfoIcon\"\n                          tabler=\"IconInfoCircle\"\n                          hugeicons=\"AlertCircleIcon\"\n                          phosphor=\"InfoIcon\"\n                          remixicon=\"RiInformationLine\"\n                        />\n                        What are codespaces?\n                      </DropdownMenuItem>\n                    </DropdownMenuGroup>\n                  </DropdownMenuContent>\n                </DropdownMenu>\n              </ItemActions>\n            </Item>\n            <Separator className=\"-mx-2 my-2 w-auto!\" />\n            <Empty className=\"p-4\">\n              <EmptyHeader>\n                <EmptyMedia variant=\"icon\">\n                  <IconPlaceholder\n                    lucide=\"ServerIcon\"\n                    tabler=\"IconServer\"\n                    hugeicons=\"ServerStackIcon\"\n                    phosphor=\"HardDrivesIcon\"\n                    remixicon=\"RiHardDriveLine\"\n                  />\n                </EmptyMedia>\n                <EmptyTitle>No codespaces</EmptyTitle>\n                <EmptyDescription>\n                  You don&apos;t have any codespaces with this repository\n                  checked out\n                </EmptyDescription>\n              </EmptyHeader>\n              <EmptyContent>\n                <Button\n                  size=\"sm\"\n                  onClick={() => {\n                    setIsCreatingCodespace(true)\n                    setTimeout(() => {\n                      setIsCreatingCodespace(false)\n                    }, 2000)\n                  }}\n                  disabled={isCreatingCodespace}\n                >\n                  {isCreatingCodespace ? (\n                    <Spinner data-icon=\"inline-start\" />\n                  ) : (\n                    \"\"\n                  )}\n                  Create Codespace\n                </Button>\n                <a\n                  href=\"#learn-more\"\n                  className=\"text-xs text-muted-foreground underline underline-offset-4\"\n                >\n                  Learn more about codespaces\n                </a>\n              </EmptyContent>\n            </Empty>\n            <Separator className=\"-mx-2 my-2 w-auto!\" />\n            <div className=\"p-1.5 text-xs text-muted-foreground\">\n              Codespace usage for this repository is paid for by{\" \"}\n              <span className=\"font-medium\">shadcn</span>.\n            </div>\n          </TabsContent>\n          <TabsContent value=\"local\">\n            <Item size=\"sm\" className=\"hidden p-0\">\n              <ItemContent>\n                <ItemTitle className=\"gap-2\">\n                  <IconPlaceholder\n                    lucide=\"TerminalIcon\"\n                    tabler=\"IconTerminal\"\n                    hugeicons=\"ComputerTerminal01Icon\"\n                    phosphor=\"TerminalIcon\"\n                    remixicon=\"RiTerminalBoxLine\"\n                    className=\"size-4\"\n                  />\n                  Clone\n                </ItemTitle>\n              </ItemContent>\n              <ItemActions>\n                <Tooltip>\n                  <TooltipTrigger asChild>\n                    <Button variant=\"ghost\" size=\"icon\">\n                      <IconPlaceholder\n                        lucide=\"InfoIcon\"\n                        tabler=\"IconInfoCircle\"\n                        hugeicons=\"AlertCircleIcon\"\n                        phosphor=\"InfoIcon\"\n                        remixicon=\"RiInformationLine\"\n                      />\n                    </Button>\n                  </TooltipTrigger>\n                  <TooltipContent side=\"left\">\n                    Which remote URL should I use?\n                  </TooltipContent>\n                </Tooltip>\n              </ItemActions>\n            </Item>\n            <Tabs defaultValue=\"https\">\n              <TabsList\n                variant=\"line\"\n                className=\"w-full justify-start border-b *:[button]:flex-0\"\n              >\n                <TabsTrigger value=\"https\">HTTPS</TabsTrigger>\n                <TabsTrigger value=\"ssh\">SSH</TabsTrigger>\n                <TabsTrigger value=\"cli\">GitHub CLI</TabsTrigger>\n              </TabsList>\n              <div className=\"rounded-md border bg-muted/30 p-2\">\n                <TabsContent value=\"https\">\n                  <Field className=\"gap-2\">\n                    <FieldLabel htmlFor=\"https-url\" className=\"sr-only\">\n                      HTTPS URL\n                    </FieldLabel>\n                    <InputGroup>\n                      <InputGroupAddon align=\"inline-end\">\n                        <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n                          <IconPlaceholder\n                            lucide=\"CopyIcon\"\n                            tabler=\"IconCopy\"\n                            hugeicons=\"Copy01Icon\"\n                            phosphor=\"CopyIcon\"\n                            remixicon=\"RiFileCopyLine\"\n                          />\n                        </InputGroupButton>\n                      </InputGroupAddon>\n                      <InputGroupInput\n                        id=\"https-url\"\n                        defaultValue=\"https://github.com/shadcn-ui/ui.git\"\n                        readOnly\n                      />\n                    </InputGroup>\n                    <FieldDescription>\n                      Clone using the web URL.\n                    </FieldDescription>\n                  </Field>\n                </TabsContent>\n                <TabsContent value=\"ssh\">\n                  <Field className=\"gap-2\">\n                    <FieldLabel htmlFor=\"ssh-url\" className=\"sr-only\">\n                      SSH URL\n                    </FieldLabel>\n                    <InputGroup>\n                      <InputGroupAddon align=\"inline-end\">\n                        <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n                          <IconPlaceholder\n                            lucide=\"CopyIcon\"\n                            tabler=\"IconCopy\"\n                            hugeicons=\"Copy01Icon\"\n                            phosphor=\"CopyIcon\"\n                            remixicon=\"RiFileCopyLine\"\n                          />\n                        </InputGroupButton>\n                      </InputGroupAddon>\n                      <InputGroupInput\n                        id=\"ssh-url\"\n                        defaultValue=\"git@github.com:shadcn-ui/ui.git\"\n                        readOnly\n                      />\n                    </InputGroup>\n                    <FieldDescription>\n                      Use a password-protected SSH key.\n                    </FieldDescription>\n                  </Field>\n                </TabsContent>\n                <TabsContent value=\"cli\">\n                  <Field className=\"gap-2\">\n                    <FieldLabel htmlFor=\"cli-command\" className=\"sr-only\">\n                      CLI Command\n                    </FieldLabel>\n                    <InputGroup>\n                      <InputGroupAddon align=\"inline-end\">\n                        <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n                          <IconPlaceholder\n                            lucide=\"CopyIcon\"\n                            tabler=\"IconCopy\"\n                            hugeicons=\"Copy01Icon\"\n                            phosphor=\"CopyIcon\"\n                            remixicon=\"RiFileCopyLine\"\n                          />\n                        </InputGroupButton>\n                      </InputGroupAddon>\n                      <InputGroupInput\n                        id=\"cli-command\"\n                        defaultValue=\"gh repo clone shadcn-ui/ui\"\n                        readOnly\n                      />\n                    </InputGroup>\n                    <FieldDescription>\n                      Work fast with our official CLI.{\" \"}\n                      <a href=\"#learn-more\">Learn more</a>\n                    </FieldDescription>\n                  </Field>\n                </TabsContent>\n              </div>\n            </Tabs>\n            <Separator className=\"-mx-2 my-2 w-auto!\" />\n            <div className=\"flex flex-col\">\n              <Button\n                variant=\"ghost\"\n                size=\"sm\"\n                className=\"justify-start gap-1.5\"\n              >\n                <IconPlaceholder\n                  lucide=\"MonitorIcon\"\n                  tabler=\"IconDeviceDesktop\"\n                  hugeicons=\"ComputerIcon\"\n                  phosphor=\"MonitorIcon\"\n                  remixicon=\"RiComputerLine\"\n                  data-icon=\"inline-start\"\n                />\n                Open with GitHub Desktop\n              </Button>\n              <Button\n                variant=\"ghost\"\n                size=\"sm\"\n                className=\"justify-start gap-1.5\"\n              >\n                <IconPlaceholder\n                  lucide=\"DownloadIcon\"\n                  tabler=\"IconDownload\"\n                  hugeicons=\"DownloadIcon\"\n                  phosphor=\"DownloadIcon\"\n                  remixicon=\"RiDownloadLine\"\n                  data-icon=\"inline-start\"\n                />\n                Download ZIP\n              </Button>\n            </div>\n          </TabsContent>\n        </Tabs>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/contributions-activity.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/registry/bases/radix/ui/field\"\n\nexport function ContributionsActivity() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Contributions & Activity</CardTitle>\n        <CardDescription>\n          Manage your contributions and activity visibility.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"contributions-activity\">\n          <FieldGroup>\n            <FieldSet>\n              <FieldLegend className=\"sr-only\">\n                Contributions & activity\n              </FieldLegend>\n              <FieldGroup>\n                <Field orientation=\"horizontal\">\n                  <Checkbox id=\"activity-private-profile\" />\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"activity-private-profile\">\n                      Make profile private and hide activity\n                    </FieldLabel>\n                    <FieldDescription>\n                      Enabling this will hide your contributions and activity\n                      from your GitHub profile and from social features like\n                      followers, stars, feeds, leaderboards and releases.\n                    </FieldDescription>\n                  </FieldContent>\n                </Field>\n              </FieldGroup>\n            </FieldSet>\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Button form=\"contributions-activity\">Save Changes</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/contributors.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\n\n// GitHub usernames displayed as contributor avatars.\nconst usernames = [\n  \"shadcn\",\n  \"vercel\",\n  \"nextjs\",\n  \"tailwindlabs\",\n  \"typescript-lang\",\n  \"eslint\",\n  \"prettier\",\n  \"babel\",\n  \"webpack\",\n  \"rollup\",\n  \"parcel\",\n  \"vite\",\n  \"react\",\n  \"vue\",\n  \"angular\",\n  \"solid\",\n]\n\nexport function Contributors() {\n  return (\n    <Card className=\"max-w-sm\">\n      <CardHeader>\n        <CardTitle>\n          Contributors <Badge variant=\"secondary\">312</Badge>\n        </CardTitle>\n      </CardHeader>\n      <CardContent>\n        <div className=\"flex flex-wrap gap-2\">\n          {usernames.map((username) => (\n            <Avatar key={username} className=\"grayscale\">\n              <AvatarImage\n                src={`https://github.com/${username}.png`}\n                alt={username}\n              />\n              <AvatarFallback>{username.charAt(0)}</AvatarFallback>\n            </Avatar>\n          ))}\n        </div>\n      </CardContent>\n      <CardFooter>\n        <a href=\"#\" className=\"text-sm underline underline-offset-4\">\n          + 810 contributors\n        </a>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/environment-variables.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\n\nexport function EnvironmentVariables() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Environment Variables</CardTitle>\n        <CardDescription>Production · 8 variables</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-2\">\n        {[\n          { key: \"DATABASE_URL\", masked: true },\n          { key: \"NEXT_PUBLIC_API\", masked: false },\n          { key: \"STRIPE_SECRET\", masked: true },\n        ].map((env) => (\n          <div\n            key={env.key}\n            className=\"flex items-center gap-2 rounded-md px-2.5 py-2 font-mono text-xs ring ring-border\"\n          >\n            <span className=\"font-medium\">{env.key}</span>\n            <span className=\"ml-auto text-muted-foreground\">\n              {env.masked ? \"••••••••\" : \"https://api.example.com\"}\n            </span>\n          </div>\n        ))}\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\">Edit</Button>\n        <Button className=\"ml-auto\">Deploy</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/feedback-form.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/radix/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/radix/ui/native-select\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\n\nexport function FeedbackForm() {\n  return (\n    <Card>\n      <CardContent>\n        <form id=\"feedback-form\">\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"topic\">Topic</FieldLabel>\n              <NativeSelect id=\"topic\">\n                <NativeSelectOption value=\"\">Select a topic</NativeSelectOption>\n                <NativeSelectOption value=\"ai\">AI</NativeSelectOption>\n                <NativeSelectOption value=\"accounts-and-access-controls\">\n                  Accounts and Access Controls\n                </NativeSelectOption>\n                <NativeSelectOption value=\"billing\">Billing</NativeSelectOption>\n                <NativeSelectOption value=\"cdn\">\n                  CDN (Firewall, Caching)\n                </NativeSelectOption>\n                <NativeSelectOption value=\"ci-cd\">\n                  CI/CD (Builds, Deployments, Environment Variables)\n                </NativeSelectOption>\n                <NativeSelectOption value=\"dashboard-interface\">\n                  Dashboard Interface (Navigation, UI Issues)\n                </NativeSelectOption>\n                <NativeSelectOption value=\"domains\">Domains</NativeSelectOption>\n                <NativeSelectOption value=\"frameworks\">\n                  Frameworks\n                </NativeSelectOption>\n                <NativeSelectOption value=\"marketplace-and-integrations\">\n                  Marketplace and Integrations\n                </NativeSelectOption>\n                <NativeSelectOption value=\"observability\">\n                  Observability (Observability, Logs, Monitoring)\n                </NativeSelectOption>\n                <NativeSelectOption value=\"storage\">Storage</NativeSelectOption>\n              </NativeSelect>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"feedback\">Feedback</FieldLabel>\n              <Textarea\n                id=\"feedback\"\n                placeholder=\"Your feedback helps us improve...\"\n              />\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Button type=\"submit\" form=\"feedback-form\">\n          Submit\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/file-upload.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/radix/ui/empty\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function FileUpload() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>File Upload</CardTitle>\n        <CardDescription>Drag and drop or browse</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Empty className=\"border\">\n          <EmptyHeader>\n            <EmptyMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"UploadCloudIcon\"\n                tabler=\"IconCloudUpload\"\n                hugeicons=\"CloudUploadIcon\"\n                phosphor=\"CloudArrowUpIcon\"\n                remixicon=\"RiUploadCloudLine\"\n              />\n            </EmptyMedia>\n            <EmptyTitle>Upload files</EmptyTitle>\n            <EmptyDescription>PNG, JPG, PDF up to 10MB</EmptyDescription>\n          </EmptyHeader>\n          <EmptyContent>\n            <Button>Browse Files</Button>\n          </EmptyContent>\n        </Empty>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/github-profile.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/radix/ui/native-select\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\n\nexport function GithubProfile() {\n  return (\n    <Card className=\"mx-auto w-full max-w-md\">\n      <CardHeader>\n        <CardTitle>Profile</CardTitle>\n        <CardDescription>Manage your profile information.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"profile\">\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n              <Input id=\"name\" placeholder=\"shadcn\" />\n              <FieldDescription>\n                Your name may appear around GitHub where you contribute or are\n                mentioned. You can remove it at any time.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"email\">Public Email</FieldLabel>\n              <NativeSelect id=\"email\">\n                <NativeSelectOption value=\"m@shadcn.com\">\n                  m@shadcn.com\n                </NativeSelectOption>\n                <NativeSelectOption value=\"m@gmail.com\">\n                  m@gmail.com\n                </NativeSelectOption>\n              </NativeSelect>\n              <FieldDescription>\n                You can manage verified email addresses in your{\" \"}\n                <a href=\"#email-settings\">email settings</a>.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"bio\">Bio</FieldLabel>\n              <Textarea\n                id=\"bio\"\n                placeholder=\"Tell us a little bit about yourself\"\n              />\n              <FieldDescription>\n                You can <span>@mention</span> other users and organizations to\n                link to them.\n              </FieldDescription>\n            </Field>\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Button form=\"profile\">Save Profile</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/icon-preview-grid.tsx",
    "content": "\"use client\"\n\nimport { type IconLibraryName } from \"shadcn/icons\"\n\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst PREVIEW_ICONS = [\n  {\n    lucide: \"CopyIcon\",\n    tabler: \"IconCopy\",\n    hugeicons: \"Copy01Icon\",\n    phosphor: \"CopyIcon\",\n    remixicon: \"RiFileCopyLine\",\n  },\n  {\n    lucide: \"CircleAlertIcon\",\n    tabler: \"IconExclamationCircle\",\n    hugeicons: \"AlertCircleIcon\",\n    phosphor: \"WarningCircleIcon\",\n    remixicon: \"RiErrorWarningLine\",\n  },\n  {\n    lucide: \"TrashIcon\",\n    tabler: \"IconTrash\",\n    hugeicons: \"Delete02Icon\",\n    phosphor: \"TrashIcon\",\n    remixicon: \"RiDeleteBinLine\",\n  },\n  {\n    lucide: \"ShareIcon\",\n    tabler: \"IconShare\",\n    hugeicons: \"Share03Icon\",\n    phosphor: \"ShareIcon\",\n    remixicon: \"RiShareLine\",\n  },\n  {\n    lucide: \"ShoppingBagIcon\",\n    tabler: \"IconShoppingBag\",\n    hugeicons: \"ShoppingBag01Icon\",\n    phosphor: \"BagIcon\",\n    remixicon: \"RiShoppingBagLine\",\n  },\n  {\n    lucide: \"MoreHorizontalIcon\",\n    tabler: \"IconDots\",\n    hugeicons: \"MoreHorizontalCircle01Icon\",\n    phosphor: \"DotsThreeIcon\",\n    remixicon: \"RiMoreLine\",\n  },\n  {\n    lucide: \"Loader2Icon\",\n    tabler: \"IconLoader\",\n    hugeicons: \"Loading03Icon\",\n    phosphor: \"SpinnerIcon\",\n    remixicon: \"RiLoaderLine\",\n  },\n  {\n    lucide: \"PlusIcon\",\n    tabler: \"IconPlus\",\n    hugeicons: \"PlusSignIcon\",\n    phosphor: \"PlusIcon\",\n    remixicon: \"RiAddLine\",\n  },\n  {\n    lucide: \"MinusIcon\",\n    tabler: \"IconMinus\",\n    hugeicons: \"MinusSignIcon\",\n    phosphor: \"MinusIcon\",\n    remixicon: \"RiSubtractLine\",\n  },\n  {\n    lucide: \"ArrowLeftIcon\",\n    tabler: \"IconArrowLeft\",\n    hugeicons: \"ArrowLeft02Icon\",\n    phosphor: \"ArrowLeftIcon\",\n    remixicon: \"RiArrowLeftLine\",\n  },\n  {\n    lucide: \"ArrowRightIcon\",\n    tabler: \"IconArrowRight\",\n    hugeicons: \"ArrowRight02Icon\",\n    phosphor: \"ArrowRightIcon\",\n    remixicon: \"RiArrowRightLine\",\n  },\n  {\n    lucide: \"CheckIcon\",\n    tabler: \"IconCheck\",\n    hugeicons: \"Tick02Icon\",\n    phosphor: \"CheckIcon\",\n    remixicon: \"RiCheckLine\",\n  },\n  {\n    lucide: \"ChevronDownIcon\",\n    tabler: \"IconChevronDown\",\n    hugeicons: \"ArrowDown01Icon\",\n    phosphor: \"CaretDownIcon\",\n    remixicon: \"RiArrowDownSLine\",\n  },\n  {\n    lucide: \"ChevronRightIcon\",\n    tabler: \"IconChevronRight\",\n    hugeicons: \"ArrowRight01Icon\",\n    phosphor: \"CaretRightIcon\",\n    remixicon: \"RiArrowRightSLine\",\n  },\n  {\n    lucide: \"SearchIcon\",\n    tabler: \"IconSearch\",\n    hugeicons: \"Search01Icon\",\n    phosphor: \"MagnifyingGlassIcon\",\n    remixicon: \"RiSearchLine\",\n  },\n  {\n    lucide: \"SettingsIcon\",\n    tabler: \"IconSettings\",\n    hugeicons: \"Settings01Icon\",\n    phosphor: \"GearIcon\",\n    remixicon: \"RiSettingsLine\",\n  },\n] satisfies Record<IconLibraryName, string>[]\n\nexport function IconPreviewGrid() {\n  return (\n    <Card>\n      <CardContent>\n        <div className=\"grid grid-cols-8 place-items-center gap-4\">\n          {PREVIEW_ICONS.map((icon, index) => (\n            <Card\n              key={index}\n              className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\"\n            >\n              <IconPlaceholder\n                lucide={icon.lucide}\n                tabler={icon.tabler}\n                hugeicons={icon.hugeicons}\n                phosphor={icon.phosphor}\n                remixicon={icon.remixicon}\n              />\n            </Card>\n          ))}\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/invite-team.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { Field, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function InviteTeam() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Invite Team</CardTitle>\n        <CardDescription>Add members to your workspace</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"flex flex-col gap-3\">\n          {[\n            { email: \"alex@example.com\", role: \"Editor\" },\n            { email: \"sam@example.com\", role: \"Viewer\" },\n          ].map((invite) => (\n            <div key={invite.email} className=\"flex items-center gap-2\">\n              <Input defaultValue={invite.email} className=\"flex-1\" />\n              <Select defaultValue={invite.role.toLowerCase()}>\n                <SelectTrigger className=\"w-24\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent position=\"popper\" align=\"end\">\n                  <SelectGroup>\n                    <SelectItem value=\"admin\">Admin</SelectItem>\n                    <SelectItem value=\"editor\">Editor</SelectItem>\n                    <SelectItem value=\"viewer\">Viewer</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </div>\n          ))}\n        </div>\n        <Button variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n            data-icon=\"inline-start\"\n          />\n          Add another\n        </Button>\n        <Separator />\n        <Field>\n          <FieldLabel htmlFor=\"invite-link\">Or share invite link</FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"invite-link\"\n              defaultValue=\"https://app.co/invite/x8f2k\"\n              readOnly\n            />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton size=\"icon-xs\" aria-label=\"Copy link\">\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"Copy01Icon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">Send Invites</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/invoice.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/bases/radix/ui/table\"\n\nconst INVOICE_ITEMS = [\n  { item: \"Design System License\", qty: 1, unitPrice: 499 },\n  { item: \"Priority Support\", qty: 12, unitPrice: 99 },\n  { item: \"Custom Components\", qty: 3, unitPrice: 250 },\n] as const\n\nconst subtotal = INVOICE_ITEMS.reduce(\n  (sum, row) => sum + row.qty * row.unitPrice,\n  0\n)\nconst tax = 0\nconst totalDue = subtotal + tax\n\nfunction formatCurrency(value: number) {\n  return new Intl.NumberFormat(\"en-US\", {\n    style: \"currency\",\n    currency: \"USD\",\n    maximumFractionDigits: 2,\n  }).format(value)\n}\n\nexport function Invoice() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Invoice #INV-2847</CardTitle>\n        <CardDescription>Due March 30, 2026</CardDescription>\n        <CardAction>\n          <Badge variant=\"secondary\">Pending</Badge>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <Table>\n          <TableHeader>\n            <TableRow>\n              <TableHead>Item</TableHead>\n              <TableHead className=\"text-right\">Qty</TableHead>\n              <TableHead className=\"text-right\">Rate</TableHead>\n              <TableHead className=\"text-right\">Amount</TableHead>\n            </TableRow>\n          </TableHeader>\n          <TableBody>\n            {INVOICE_ITEMS.map((row) => (\n              <TableRow key={row.item}>\n                <TableCell>{row.item}</TableCell>\n                <TableCell className=\"text-right tabular-nums\">\n                  {row.qty}\n                </TableCell>\n                <TableCell className=\"text-right tabular-nums\">\n                  {formatCurrency(row.unitPrice)}\n                </TableCell>\n                <TableCell className=\"text-right tabular-nums\">\n                  {formatCurrency(row.qty * row.unitPrice)}\n                </TableCell>\n              </TableRow>\n            ))}\n            <TableRow>\n              <TableCell colSpan={3} className=\"text-right\">\n                Subtotal\n              </TableCell>\n              <TableCell className=\"text-right tabular-nums\">\n                {formatCurrency(subtotal)}\n              </TableCell>\n            </TableRow>\n            <TableRow>\n              <TableCell colSpan={3} className=\"text-right\">\n                Tax\n              </TableCell>\n              <TableCell className=\"text-right tabular-nums\">$0.00</TableCell>\n            </TableRow>\n            <TableRow>\n              <TableCell colSpan={3} className=\"text-right\">\n                Total Due\n              </TableCell>\n              <TableCell className=\"text-right tabular-nums\">\n                {formatCurrency(totalDue)}\n              </TableCell>\n            </TableRow>\n          </TableBody>\n        </Table>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\" size=\"sm\">\n          Download PDF\n        </Button>\n        <Button size=\"sm\" className=\"ml-auto\">\n          Pay Now\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/live-waveform.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\n\nconst LiveWaveform = ({\n  active = false,\n  processing = false,\n  deviceId,\n  barWidth = 3,\n  barGap = 1,\n  barRadius = 1.5,\n  barColor,\n  fadeEdges = true,\n  fadeWidth = 24,\n  barHeight: baseBarHeight = 4,\n  height = 64,\n  sensitivity = 1,\n  smoothingTimeConstant = 0.8,\n  fftSize = 256,\n  historySize = 60,\n  updateRate = 30,\n  mode = \"static\",\n  onError,\n  onStreamReady,\n  onStreamEnd,\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n  active?: boolean\n  processing?: boolean\n  deviceId?: string\n  barWidth?: number\n  barHeight?: number\n  barGap?: number\n  barRadius?: number\n  barColor?: string\n  fadeEdges?: boolean\n  fadeWidth?: number\n  height?: string | number\n  sensitivity?: number\n  smoothingTimeConstant?: number\n  fftSize?: number\n  historySize?: number\n  updateRate?: number\n  mode?: \"scrolling\" | \"static\"\n  onError?: (error: Error) => void\n  onStreamReady?: (stream: MediaStream) => void\n  onStreamEnd?: () => void\n}) => {\n  const canvasRef = useRef<HTMLCanvasElement>(null)\n  const containerRef = useRef<HTMLDivElement>(null)\n  const historyRef = useRef<number[]>([])\n  const analyserRef = useRef<AnalyserNode | null>(null)\n  const audioContextRef = useRef<AudioContext | null>(null)\n  const streamRef = useRef<MediaStream | null>(null)\n  const animationRef = useRef<number>(0)\n  const lastUpdateRef = useRef<number>(0)\n  const processingAnimationRef = useRef<number | null>(null)\n  const lastActiveDataRef = useRef<number[]>([])\n  const transitionProgressRef = useRef(0)\n  const staticBarsRef = useRef<number[]>([])\n  const needsRedrawRef = useRef(true)\n  const gradientCacheRef = useRef<CanvasGradient | null>(null)\n  const lastWidthRef = useRef(0)\n  const heightStyle = typeof height === \"number\" ? `${height}px` : height\n\n  // Handle canvas resizing.\n  useEffect(() => {\n    const canvas = canvasRef.current\n    const container = containerRef.current\n    if (!canvas || !container) return\n    const resizeObserver = new ResizeObserver(() => {\n      const rect = container.getBoundingClientRect()\n      const dpr = window.devicePixelRatio || 1\n      canvas.width = rect.width * dpr\n      canvas.height = rect.height * dpr\n      canvas.style.width = `${rect.width}px`\n      canvas.style.height = `${rect.height}px`\n      const ctx = canvas.getContext(\"2d\")\n      if (ctx) {\n        ctx.scale(dpr, dpr)\n      }\n      gradientCacheRef.current = null\n      lastWidthRef.current = rect.width\n      needsRedrawRef.current = true\n    })\n    resizeObserver.observe(container)\n    return () => resizeObserver.disconnect()\n  }, [])\n\n  useEffect(() => {\n    if (processing && !active) {\n      let time = 0\n      transitionProgressRef.current = 0\n      const animateProcessing = () => {\n        time += 0.03\n        transitionProgressRef.current = Math.min(\n          1,\n          transitionProgressRef.current + 0.02\n        )\n        const processingData = []\n        const barCount = Math.floor(\n          (containerRef.current?.getBoundingClientRect().width || 200) /\n            (barWidth + barGap)\n        )\n        if (mode === \"static\") {\n          const halfCount = Math.floor(barCount / 2)\n          for (let i = 0; i < barCount; i++) {\n            const normalizedPosition = (i - halfCount) / halfCount\n            const centerWeight = 1 - Math.abs(normalizedPosition) * 0.4\n            const wave1 = Math.sin(time * 1.5 + normalizedPosition * 3) * 0.25\n            const wave2 = Math.sin(time * 0.8 - normalizedPosition * 2) * 0.2\n            const wave3 = Math.cos(time * 2 + normalizedPosition) * 0.15\n            const combinedWave = wave1 + wave2 + wave3\n            const processingValue = (0.2 + combinedWave) * centerWeight\n            let finalValue = processingValue\n            if (\n              lastActiveDataRef.current.length > 0 &&\n              transitionProgressRef.current < 1\n            ) {\n              const lastDataIndex = Math.min(\n                i,\n                lastActiveDataRef.current.length - 1\n              )\n              const lastValue = lastActiveDataRef.current[lastDataIndex] || 0\n              finalValue =\n                lastValue * (1 - transitionProgressRef.current) +\n                processingValue * transitionProgressRef.current\n            }\n            processingData.push(Math.max(0.05, Math.min(1, finalValue)))\n          }\n        } else {\n          for (let i = 0; i < barCount; i++) {\n            const normalizedPosition = (i - barCount / 2) / (barCount / 2)\n            const centerWeight = 1 - Math.abs(normalizedPosition) * 0.4\n            const wave1 = Math.sin(time * 1.5 + i * 0.15) * 0.25\n            const wave2 = Math.sin(time * 0.8 - i * 0.1) * 0.2\n            const wave3 = Math.cos(time * 2 + i * 0.05) * 0.15\n            const combinedWave = wave1 + wave2 + wave3\n            const processingValue = (0.2 + combinedWave) * centerWeight\n            let finalValue = processingValue\n            if (\n              lastActiveDataRef.current.length > 0 &&\n              transitionProgressRef.current < 1\n            ) {\n              const lastDataIndex = Math.floor(\n                (i / barCount) * lastActiveDataRef.current.length\n              )\n              const lastValue = lastActiveDataRef.current[lastDataIndex] || 0\n              finalValue =\n                lastValue * (1 - transitionProgressRef.current) +\n                processingValue * transitionProgressRef.current\n            }\n            processingData.push(Math.max(0.05, Math.min(1, finalValue)))\n          }\n        }\n        if (mode === \"static\") {\n          staticBarsRef.current = processingData\n        } else {\n          historyRef.current = processingData\n        }\n        needsRedrawRef.current = true\n        processingAnimationRef.current =\n          requestAnimationFrame(animateProcessing)\n      }\n      animateProcessing()\n      return () => {\n        if (processingAnimationRef.current) {\n          cancelAnimationFrame(processingAnimationRef.current)\n        }\n      }\n    } else if (!active && !processing) {\n      const hasData =\n        mode === \"static\"\n          ? staticBarsRef.current.length > 0\n          : historyRef.current.length > 0\n      if (hasData) {\n        let fadeProgress = 0\n        const fadeToIdle = () => {\n          fadeProgress += 0.03\n          if (fadeProgress < 1) {\n            if (mode === \"static\") {\n              staticBarsRef.current = staticBarsRef.current.map(\n                (value) => value * (1 - fadeProgress)\n              )\n            } else {\n              historyRef.current = historyRef.current.map(\n                (value) => value * (1 - fadeProgress)\n              )\n            }\n            needsRedrawRef.current = true\n            requestAnimationFrame(fadeToIdle)\n          } else {\n            if (mode === \"static\") {\n              staticBarsRef.current = []\n            } else {\n              historyRef.current = []\n            }\n          }\n        }\n        fadeToIdle()\n      }\n    }\n  }, [processing, active, barWidth, barGap, mode])\n\n  // Handle microphone setup and teardown.\n  useEffect(() => {\n    if (!active) {\n      if (streamRef.current) {\n        streamRef.current.getTracks().forEach((track) => track.stop())\n        streamRef.current = null\n        onStreamEnd?.()\n      }\n      if (\n        audioContextRef.current &&\n        audioContextRef.current.state !== \"closed\"\n      ) {\n        audioContextRef.current.close()\n        audioContextRef.current = null\n      }\n      if (animationRef.current) {\n        cancelAnimationFrame(animationRef.current)\n        animationRef.current = 0\n      }\n      return\n    }\n    const setupMicrophone = async () => {\n      try {\n        const stream = await navigator.mediaDevices.getUserMedia({\n          audio: deviceId\n            ? {\n                deviceId: { exact: deviceId },\n                echoCancellation: true,\n                noiseSuppression: true,\n                autoGainControl: true,\n              }\n            : {\n                echoCancellation: true,\n                noiseSuppression: true,\n                autoGainControl: true,\n              },\n        })\n        streamRef.current = stream\n        onStreamReady?.(stream)\n        const AudioContextConstructor =\n          window.AudioContext ||\n          (window as unknown as { webkitAudioContext: typeof AudioContext })\n            .webkitAudioContext\n        const audioContext = new AudioContextConstructor()\n        const analyser = audioContext.createAnalyser()\n        analyser.fftSize = fftSize\n        analyser.smoothingTimeConstant = smoothingTimeConstant\n        const source = audioContext.createMediaStreamSource(stream)\n        source.connect(analyser)\n        audioContextRef.current = audioContext\n        analyserRef.current = analyser\n        historyRef.current = []\n      } catch (error) {\n        onError?.(error as Error)\n      }\n    }\n    setupMicrophone()\n    return () => {\n      if (streamRef.current) {\n        streamRef.current.getTracks().forEach((track) => track.stop())\n        streamRef.current = null\n        onStreamEnd?.()\n      }\n      if (\n        audioContextRef.current &&\n        audioContextRef.current.state !== \"closed\"\n      ) {\n        audioContextRef.current.close()\n        audioContextRef.current = null\n      }\n      if (animationRef.current) {\n        cancelAnimationFrame(animationRef.current)\n        animationRef.current = 0\n      }\n    }\n  }, [\n    active,\n    deviceId,\n    fftSize,\n    smoothingTimeConstant,\n    onError,\n    onStreamReady,\n    onStreamEnd,\n  ])\n\n  // Animation loop.\n  useEffect(() => {\n    const canvas = canvasRef.current\n    if (!canvas) return\n    const ctx = canvas.getContext(\"2d\")\n    if (!ctx) return\n    let rafId: number\n    const animate = (currentTime: number) => {\n      const rect = canvas.getBoundingClientRect()\n      if (active && currentTime - lastUpdateRef.current > updateRate) {\n        lastUpdateRef.current = currentTime\n        if (analyserRef.current) {\n          const dataArray = new Uint8Array(\n            analyserRef.current.frequencyBinCount\n          )\n          analyserRef.current.getByteFrequencyData(dataArray)\n          if (mode === \"static\") {\n            const startFreq = Math.floor(dataArray.length * 0.05)\n            const endFreq = Math.floor(dataArray.length * 0.4)\n            const relevantData = dataArray.slice(startFreq, endFreq)\n            const barCount = Math.floor(rect.width / (barWidth + barGap))\n            const halfCount = Math.floor(barCount / 2)\n            const newBars: number[] = []\n            for (let i = halfCount - 1; i >= 0; i--) {\n              const dataIndex = Math.floor(\n                (i / halfCount) * relevantData.length\n              )\n              const value = Math.min(\n                1,\n                (relevantData[dataIndex] / 255) * sensitivity\n              )\n              newBars.push(Math.max(0.05, value))\n            }\n            for (let i = 0; i < halfCount; i++) {\n              const dataIndex = Math.floor(\n                (i / halfCount) * relevantData.length\n              )\n              const value = Math.min(\n                1,\n                (relevantData[dataIndex] / 255) * sensitivity\n              )\n              newBars.push(Math.max(0.05, value))\n            }\n            staticBarsRef.current = newBars\n            lastActiveDataRef.current = newBars\n          } else {\n            let sum = 0\n            const startFreq = Math.floor(dataArray.length * 0.05)\n            const endFreq = Math.floor(dataArray.length * 0.4)\n            const relevantData = dataArray.slice(startFreq, endFreq)\n            for (let i = 0; i < relevantData.length; i++) {\n              sum += relevantData[i]\n            }\n            const average = (sum / relevantData.length / 255) * sensitivity\n            historyRef.current.push(Math.min(1, Math.max(0.05, average)))\n            lastActiveDataRef.current = [...historyRef.current]\n            if (historyRef.current.length > historySize) {\n              historyRef.current.shift()\n            }\n          }\n          needsRedrawRef.current = true\n        }\n      }\n      if (!needsRedrawRef.current && !active) {\n        rafId = requestAnimationFrame(animate)\n        return\n      }\n      needsRedrawRef.current = active\n      ctx.clearRect(0, 0, rect.width, rect.height)\n      const computedBarColor =\n        barColor ||\n        (() => {\n          const style = getComputedStyle(canvas)\n          const color = style.color\n          return color || \"#000\"\n        })()\n      const step = barWidth + barGap\n      const barCount = Math.floor(rect.width / step)\n      const centerY = rect.height / 2\n      if (mode === \"static\") {\n        const dataToRender = processing\n          ? staticBarsRef.current\n          : active\n            ? staticBarsRef.current\n            : staticBarsRef.current.length > 0\n              ? staticBarsRef.current\n              : []\n        for (let i = 0; i < barCount && i < dataToRender.length; i++) {\n          const value = dataToRender[i] || 0.1\n          const x = i * step\n          const bh = Math.max(baseBarHeight, value * rect.height * 0.8)\n          const y = centerY - bh / 2\n          ctx.fillStyle = computedBarColor\n          ctx.globalAlpha = 0.4 + value * 0.6\n          if (barRadius > 0) {\n            ctx.beginPath()\n            ctx.roundRect(x, y, barWidth, bh, barRadius)\n            ctx.fill()\n          } else {\n            ctx.fillRect(x, y, barWidth, bh)\n          }\n        }\n      } else {\n        for (let i = 0; i < barCount && i < historyRef.current.length; i++) {\n          const dataIndex = historyRef.current.length - 1 - i\n          const value = historyRef.current[dataIndex] || 0.1\n          const x = rect.width - (i + 1) * step\n          const bh = Math.max(baseBarHeight, value * rect.height * 0.8)\n          const y = centerY - bh / 2\n          ctx.fillStyle = computedBarColor\n          ctx.globalAlpha = 0.4 + value * 0.6\n          if (barRadius > 0) {\n            ctx.beginPath()\n            ctx.roundRect(x, y, barWidth, bh, barRadius)\n            ctx.fill()\n          } else {\n            ctx.fillRect(x, y, barWidth, bh)\n          }\n        }\n      }\n      if (fadeEdges && fadeWidth > 0 && rect.width > 0) {\n        if (!gradientCacheRef.current || lastWidthRef.current !== rect.width) {\n          const gradient = ctx.createLinearGradient(0, 0, rect.width, 0)\n          const fadePercent = Math.min(0.3, fadeWidth / rect.width)\n          gradient.addColorStop(0, \"rgba(255,255,255,1)\")\n          gradient.addColorStop(fadePercent, \"rgba(255,255,255,0)\")\n          gradient.addColorStop(1 - fadePercent, \"rgba(255,255,255,0)\")\n          gradient.addColorStop(1, \"rgba(255,255,255,1)\")\n          gradientCacheRef.current = gradient\n          lastWidthRef.current = rect.width\n        }\n        ctx.globalCompositeOperation = \"destination-out\"\n        ctx.fillStyle = gradientCacheRef.current\n        ctx.fillRect(0, 0, rect.width, rect.height)\n        ctx.globalCompositeOperation = \"source-over\"\n      }\n      ctx.globalAlpha = 1\n      rafId = requestAnimationFrame(animate)\n    }\n    rafId = requestAnimationFrame(animate)\n    return () => {\n      if (rafId) {\n        cancelAnimationFrame(rafId)\n      }\n    }\n  }, [\n    active,\n    processing,\n    sensitivity,\n    updateRate,\n    historySize,\n    barWidth,\n    baseBarHeight,\n    barGap,\n    barRadius,\n    barColor,\n    fadeEdges,\n    fadeWidth,\n    mode,\n  ])\n\n  return (\n    <div\n      className={cn(\"relative h-full w-full\", className)}\n      ref={containerRef}\n      style={{ height: heightStyle }}\n      aria-label={\n        active\n          ? \"Live audio waveform\"\n          : processing\n            ? \"Processing audio\"\n            : \"Audio waveform idle\"\n      }\n      role=\"img\"\n      {...props}\n    >\n      {!active && !processing && (\n        <div className=\"absolute top-1/2 right-0 left-0 -translate-y-1/2 border-t-2 border-dotted border-muted-foreground/20\" />\n      )}\n      <canvas\n        className=\"block h-full w-full\"\n        ref={canvasRef}\n        aria-hidden=\"true\"\n      />\n    </div>\n  )\n}\n\nexport function LiveWaveformCard() {\n  const [active, setActive] = useState(false)\n  const [processing, setProcessing] = useState(true)\n  const [mode, setMode] = useState<\"static\" | \"scrolling\">(\"static\")\n\n  const handleToggleActive = () => {\n    setActive(!active)\n    if (!active) {\n      setProcessing(false)\n    }\n  }\n\n  const handleToggleProcessing = () => {\n    setProcessing(!processing)\n    if (!processing) {\n      setActive(false)\n    }\n  }\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Live Audio Waveform</CardTitle>\n        <CardDescription>\n          Real-time microphone input visualization with audio reactivity\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <LiveWaveform\n          active={active}\n          processing={processing}\n          height={80}\n          barWidth={3}\n          barGap={2}\n          mode={mode}\n          fadeEdges={true}\n          barColor=\"gray\"\n          historySize={120}\n        />\n      </CardContent>\n      <CardFooter className=\"gap-2\">\n        <Button\n          size=\"sm\"\n          variant={active ? \"default\" : \"outline\"}\n          onClick={handleToggleActive}\n        >\n          {active ? \"Stop\" : \"Start\"} Listening\n        </Button>\n        <Button\n          size=\"sm\"\n          variant={processing ? \"default\" : \"outline\"}\n          onClick={handleToggleProcessing}\n        >\n          {processing ? \"Stop\" : \"Start\"} Processing\n        </Button>\n        <Button\n          size=\"sm\"\n          variant=\"outline\"\n          onClick={() => setMode(mode === \"static\" ? \"scrolling\" : \"static\")}\n        >\n          {mode === \"static\" ? \"Static\" : \"Scrolling\"}\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/no-team-members.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/radix/ui/empty\"\n\nexport function NoTeamMembers() {\n  return (\n    <Card>\n      <CardContent>\n        <Empty className=\"h-56 border\">\n          <EmptyHeader>\n            <EmptyMedia>\n              <AvatarGroup className=\"grayscale\">\n                <Avatar size=\"lg\">\n                  <AvatarImage\n                    src=\"https://github.com/shadcn.png\"\n                    alt=\"@shadcn\"\n                  />\n                  <AvatarFallback>CN</AvatarFallback>\n                </Avatar>\n                <Avatar size=\"lg\">\n                  <AvatarImage\n                    src=\"https://github.com/maxleiter.png\"\n                    alt=\"@maxleiter\"\n                  />\n                  <AvatarFallback>LR</AvatarFallback>\n                </Avatar>\n                <Avatar size=\"lg\">\n                  <AvatarImage\n                    src=\"https://github.com/evilrabbit.png\"\n                    alt=\"@evilrabbit\"\n                  />\n                  <AvatarFallback>ER</AvatarFallback>\n                </Avatar>\n              </AvatarGroup>\n            </EmptyMedia>\n            <EmptyTitle>No Team Members</EmptyTitle>\n            <EmptyDescription>\n              Invite your team to collaborate on this project.\n            </EmptyDescription>\n          </EmptyHeader>\n          <EmptyContent>\n            <Button size=\"sm\">Invite Members</Button>\n          </EmptyContent>\n        </Empty>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/not-found.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyTitle,\n} from \"@/registry/bases/radix/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { Kbd } from \"@/registry/bases/radix/ui/kbd\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NotFound() {\n  return (\n    <Card>\n      <CardContent>\n        <Empty className=\"h-72\">\n          <EmptyHeader>\n            <EmptyTitle>404 - Not Found</EmptyTitle>\n            <EmptyDescription>\n              The page you&apos;re looking for doesn&apos;t exist. Try searching\n              for what you need below.\n            </EmptyDescription>\n          </EmptyHeader>\n          <EmptyContent>\n            <InputGroup className=\"w-3/4\">\n              <InputGroupInput placeholder=\"Try searching for pages...\" />\n              <InputGroupAddon>\n                <IconPlaceholder\n                  lucide=\"SearchIcon\"\n                  tabler=\"IconSearch\"\n                  hugeicons=\"Search01Icon\"\n                  phosphor=\"MagnifyingGlassIcon\"\n                  remixicon=\"RiSearchLine\"\n                />\n              </InputGroupAddon>\n              <InputGroupAddon align=\"inline-end\">\n                <Kbd>/</Kbd>\n              </InputGroupAddon>\n            </InputGroup>\n            <Button variant=\"link\">Go to homepage</Button>\n          </EmptyContent>\n        </Empty>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/observability-card.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function ObservabilityCard() {\n  return (\n    <Card className=\"relative w-full max-w-md overflow-hidden pt-0\">\n      <div className=\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\" />\n      <img\n        src=\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n        alt=\"Photo by mymind on Unsplash\"\n        title=\"Photo by mymind on Unsplash\"\n        className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\"\n      />\n      <CardHeader>\n        <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\n        <CardDescription>\n          Switch to the improved way to explore your data, with natural\n          language. Monitoring will no longer be available on the Pro plan in\n          November, 2025\n        </CardDescription>\n      </CardHeader>\n      <CardFooter>\n        <Button>\n          Create Query{\" \"}\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Badge variant=\"secondary\" className=\"ml-auto\">\n          Warning\n        </Badge>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/pie-chart-card.tsx",
    "content": "\"use client\"\n\nimport { Label, Pie, PieChart } from \"recharts\"\n\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/radix/ui/chart\"\nimport { Progress } from \"@/registry/bases/radix/ui/progress\"\n\nconst pieChartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 287, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n]\n\nconst pieChartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n} satisfies ChartConfig\n\nexport function PieChartCard() {\n  const totalVisitors = pieChartData.reduce(\n    (sum, item) => sum + item.visitors,\n    0\n  )\n  const topBrowser = pieChartData.reduce((max, item) =>\n    item.visitors > max.visitors ? item : max\n  )\n  const topBrowserShare = Math.round(\n    (topBrowser.visitors / totalVisitors) * 100\n  )\n  const topBrowserLabel =\n    pieChartConfig[topBrowser.browser as keyof typeof pieChartConfig]?.label ??\n    \"Top\"\n\n  return (\n    <Card>\n      <CardHeader className=\"pb-0\">\n        <CardTitle>Browser Share</CardTitle>\n        <CardDescription>January - June 2026</CardDescription>\n        <CardAction>\n          <Badge variant=\"outline\">{topBrowserLabel}</Badge>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"pt-0\">\n        <ChartContainer\n          config={pieChartConfig}\n          className=\"mx-auto aspect-square max-h-[190px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie\n              data={pieChartData}\n              dataKey=\"visitors\"\n              nameKey=\"browser\"\n              innerRadius={50}\n              strokeWidth={5}\n            >\n              <Label\n                content={({ viewBox }) => {\n                  if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                    return (\n                      <text\n                        x={viewBox.cx}\n                        y={viewBox.cy}\n                        textAnchor=\"middle\"\n                        dominantBaseline=\"middle\"\n                      >\n                        <tspan\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          className=\"fill-foreground text-2xl font-bold\"\n                        >\n                          {totalVisitors.toLocaleString()}\n                        </tspan>\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) + 20}\n                          className=\"fill-muted-foreground text-xs\"\n                        >\n                          Visitors\n                        </tspan>\n                      </text>\n                    )\n                  }\n                }}\n              />\n            </Pie>\n            <ChartLegend\n              content={<ChartLegendContent nameKey=\"browser\" />}\n              className=\"translate-y-2\"\n            />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-stretch gap-2\">\n        <div className=\"flex items-center text-xs\">\n          <span className=\"font-medium\">{topBrowserLabel}</span>\n          <span className=\"ml-auto text-muted-foreground tabular-nums\">\n            {topBrowserShare}%\n          </span>\n        </div>\n        <Progress\n          value={topBrowserShare}\n          className=\"**:data-[slot=progress-indicator]:bg-chart-3\"\n        />\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/report-bug.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\n\nexport function ReportBug() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Report Bug</CardTitle>\n        <CardDescription>Help us fix issues faster.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"bug-title\">Title</FieldLabel>\n            <Input\n              id=\"bug-title\"\n              placeholder=\"Brief description of the issue\"\n            />\n          </Field>\n          <div className=\"grid grid-cols-2 gap-3\">\n            <Field>\n              <FieldLabel htmlFor=\"bug-severity\">Severity</FieldLabel>\n              <Select defaultValue=\"medium\">\n                <SelectTrigger id=\"bug-severity\" className=\"w-full\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"critical\">Critical</SelectItem>\n                    <SelectItem value=\"high\">High</SelectItem>\n                    <SelectItem value=\"medium\">Medium</SelectItem>\n                    <SelectItem value=\"low\">Low</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"bug-component\">Component</FieldLabel>\n              <Select defaultValue=\"dashboard\">\n                <SelectTrigger id=\"bug-component\" className=\"w-full\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"dashboard\">Dashboard</SelectItem>\n                    <SelectItem value=\"auth\">Auth</SelectItem>\n                    <SelectItem value=\"api\">API</SelectItem>\n                    <SelectItem value=\"billing\">Billing</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"bug-steps\">Steps to reproduce</FieldLabel>\n            <Textarea\n              id=\"bug-steps\"\n              placeholder=\"1. Go to&#10;2. Click on&#10;3. Observe...\"\n              className=\"min-h-24 resize-none\"\n            />\n          </Field>\n        </FieldGroup>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\" className=\"justify-end\">\n          <Button variant=\"outline\">Attach File</Button>\n          <Button>Submit Bug</Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/shipping-address.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\n\nexport function ShippingAddress() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Shipping Address</CardTitle>\n        <CardDescription>Where should we deliver?</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"shipping-street\">Street address</FieldLabel>\n            <Input id=\"shipping-street\" placeholder=\"123 Main Street\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"shipping-apt\">Apt / Suite</FieldLabel>\n            <Input id=\"shipping-apt\" placeholder=\"Apt 4B\" />\n          </Field>\n          <FieldGroup className=\"grid grid-cols-2\">\n            <Field>\n              <FieldLabel htmlFor=\"shipping-city\">City</FieldLabel>\n              <Input id=\"shipping-city\" placeholder=\"San Francisco\" />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"shipping-state\">State</FieldLabel>\n              <Select defaultValue=\"CA\">\n                <SelectTrigger id=\"shipping-state\" className=\"w-full\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"CA\">California</SelectItem>\n                    <SelectItem value=\"NY\">New York</SelectItem>\n                    <SelectItem value=\"TX\">Texas</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n          </FieldGroup>\n          <FieldGroup className=\"grid grid-cols-2\">\n            <Field>\n              <FieldLabel htmlFor=\"shipping-zip\">ZIP Code</FieldLabel>\n              <Input id=\"shipping-zip\" placeholder=\"94102\" />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"shipping-country\">Country</FieldLabel>\n              <Select defaultValue=\"US\">\n                <SelectTrigger id=\"shipping-country\" className=\"w-full\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"US\">United States</SelectItem>\n                    <SelectItem value=\"CA\">Canada</SelectItem>\n                    <SelectItem value=\"UK\">United Kingdom</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n          </FieldGroup>\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"shipping-save\" defaultChecked />\n            <FieldLabel htmlFor=\"shipping-save\" className=\"font-normal\">\n              Save as default address\n            </FieldLabel>\n          </Field>\n        </FieldGroup>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\" size=\"sm\">\n          Cancel\n        </Button>\n        <Button size=\"sm\" className=\"ml-auto\">\n          Save Address\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/shortcuts.tsx",
    "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Item,\n  ItemActions,\n  ItemGroup,\n  ItemHeader,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport { Kbd } from \"@/registry/bases/radix/ui/kbd\"\n\nconst shortcuts = [\n  { label: \"Search\", keys: [\"⌘\", \"K\"] },\n  { label: \"Quick Actions\", keys: [\"⌘\", \"J\"] },\n  { label: \"New File\", keys: [\"⌘\", \"N\"] },\n  { label: \"Save\", keys: [\"⌘\", \"S\"] },\n  { label: \"Toggle Sidebar\", keys: [\"⌘\", \"B\"] },\n] as const\n\nexport function Shortcuts() {\n  return (\n    <Card>\n      <CardContent>\n        <div className=\"flex flex-col gap-3\">\n          <div className=\"text-sm font-medium\">Shortcuts</div>\n          <ItemGroup className=\"gap-2 text-muted-foreground\" data-size=\"xs\">\n            {shortcuts.map(({ label, keys }, i) => (\n              <React.Fragment key={label}>\n                {i > 0 && <ItemSeparator />}\n                <Item\n                  variant=\"default\"\n                  size=\"xs\"\n                  className=\"border-0 px-0 py-0\"\n                >\n                  <ItemHeader>\n                    <ItemTitle className=\"font-normal\">{label}</ItemTitle>\n                    <ItemActions>\n                      <div className=\"flex gap-1\">\n                        {keys.map((key) => (\n                          <Kbd key={key}>{key}</Kbd>\n                        ))}\n                      </div>\n                    </ItemActions>\n                  </ItemHeader>\n                </Item>\n              </React.Fragment>\n            ))}\n          </ItemGroup>\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/skeleton-loading.tsx",
    "content": "\"use client\"\n\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport { Skeleton } from \"@/registry/bases/radix/ui/skeleton\"\n\nexport function SkeletonLoading() {\n  return (\n    <Card>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-3\">\n          <Skeleton className=\"size-10 rounded-full\" />\n          <div className=\"flex flex-1 flex-col gap-2\">\n            <Skeleton className=\"h-4 w-3/4\" />\n            <Skeleton className=\"h-3 w-1/2\" />\n          </div>\n        </div>\n        <div className=\"flex flex-col gap-2\">\n          <Skeleton className=\"h-3 w-full\" />\n          <Skeleton className=\"h-3 w-full\" />\n          <Skeleton className=\"h-3 w-4/5\" />\n        </div>\n        <div className=\"flex gap-2\">\n          <Skeleton className=\"h-8 w-20\" />\n          <Skeleton className=\"h-8 w-20\" />\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/sleep-report.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart } from \"recharts\"\n\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/bases/radix/ui/chart\"\n\nconst sleepChartData = [\n  { hour: \"10pm\", deep: 0, light: 30, rem: 0 },\n  { hour: \"11pm\", deep: 20, light: 10, rem: 0 },\n  { hour: \"12am\", deep: 40, light: 0, rem: 10 },\n  { hour: \"1am\", deep: 30, light: 5, rem: 15 },\n  { hour: \"2am\", deep: 10, light: 20, rem: 30 },\n  { hour: \"3am\", deep: 25, light: 10, rem: 20 },\n  { hour: \"4am\", deep: 15, light: 25, rem: 10 },\n  { hour: \"5am\", deep: 5, light: 35, rem: 15 },\n  { hour: \"6am\", deep: 0, light: 20, rem: 25 },\n]\n\nconst sleepChartConfig = {\n  deep: {\n    label: \"Deep\",\n    color: \"var(--chart-1)\",\n  },\n  light: {\n    label: \"Light\",\n    color: \"var(--chart-2)\",\n  },\n  rem: {\n    label: \"REM\",\n    color: \"var(--chart-3)\",\n  },\n} satisfies ChartConfig\n\nexport function SleepReport() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Sleep Report</CardTitle>\n        <CardDescription>Last night · 7h 24m</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-3\">\n        <ChartContainer config={sleepChartConfig} className=\"h-32 w-full\">\n          <BarChart\n            accessibilityLayer\n            data={sleepChartData}\n            margin={{ left: 0, right: 0 }}\n            barSize={16}\n          >\n            <Bar\n              dataKey=\"deep\"\n              stackId=\"a\"\n              fill=\"var(--color-deep)\"\n              radius={0}\n            />\n            <Bar\n              dataKey=\"light\"\n              stackId=\"a\"\n              fill=\"var(--color-light)\"\n              radius={0}\n            />\n            <Bar\n              dataKey=\"rem\"\n              stackId=\"a\"\n              fill=\"var(--color-rem)\"\n              radius={[2, 2, 0, 0]}\n            />\n          </BarChart>\n        </ChartContainer>\n        <div className=\"grid grid-cols-4 gap-2\">\n          {[\n            { label: \"Deep\", value: \"2h 10m\" },\n            { label: \"Light\", value: \"3h 48m\" },\n            { label: \"REM\", value: \"1h 26m\" },\n            { label: \"Score\", value: \"84\" },\n          ].map((s) => (\n            <div key={s.label} className=\"text-center\">\n              <div className=\"text-sm font-medium tabular-nums\">{s.value}</div>\n              <div className=\"text-xs text-muted-foreground\">{s.label}</div>\n            </div>\n          ))}\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Badge variant=\"outline\">Good</Badge>\n        <Button variant=\"outline\" size=\"sm\" className=\"ml-auto\">\n          Details\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/style-overview.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport { STYLES } from \"@/registry/styles\"\nimport { FONTS } from \"@/app/(create)/lib/fonts\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function StyleOverview() {\n  const [params] = useDesignSystemSearchParams()\n\n  const currentFont = React.useMemo(\n    () => FONTS.find((font) => font.value === params.font),\n    [params.font]\n  )\n\n  const currentFontHeading = React.useMemo(\n    () => FONTS.find((font) => font.value === params.fontHeading),\n    [params.fontHeading]\n  )\n\n  const currentStyle = React.useMemo(\n    () => STYLES.find((style) => style.name === params.style),\n    [params.style]\n  )\n\n  return (\n    <Card>\n      <CardContent className=\"flex flex-col gap-6 style-lyra:gap-4 style-mira:gap-4\">\n        <div className=\"flex flex-col gap-1\">\n          <div className=\"cn-font-heading text-2xl font-medium style-lyra:text-lg style-mira:text-lg\">\n            {currentStyle?.title} -{\" \"}\n            {currentFontHeading?.name &&\n            currentFontHeading.name !== currentFont?.name\n              ? currentFontHeading.name\n              : currentFont?.name}\n          </div>\n          <div className=\"line-clamp-2 text-base text-muted-foreground style-lyra:text-sm style-mira:text-sm\">\n            Designers love packing quirky glyphs into test phrases. This is a\n            preview of the typography styles.\n          </div>\n        </div>\n        <div className=\"grid grid-cols-6 gap-3\">\n          {[\n            \"--background\",\n            \"--foreground\",\n            \"--primary\",\n            \"--secondary\",\n            \"--muted\",\n            \"--accent\",\n            \"--border\",\n            \"--chart-1\",\n            \"--chart-2\",\n            \"--chart-3\",\n            \"--chart-4\",\n            \"--chart-5\",\n          ].map((variant) => (\n            <div\n              key={variant}\n              className=\"flex flex-col flex-wrap items-center gap-2\"\n            >\n              <div\n                className=\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\"\n                style={\n                  {\n                    \"--color\": `var(${variant})`,\n                  } as React.CSSProperties\n                }\n              />\n              <div className=\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block style-lyra:max-w-10 style-mira:max-w-10\">\n                {variant}\n              </div>\n            </div>\n          ))}\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/typography-specimen.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/radix/ui/card\"\nimport { FONTS } from \"@/app/(create)/lib/fonts\"\nimport { useDesignSystemSearchParams } from \"@/app/(create)/lib/search-params\"\n\nexport function TypographySpecimen() {\n  const [params] = useDesignSystemSearchParams()\n\n  const currentFont = React.useMemo(\n    () => FONTS.find((font) => font.value === params.font),\n    [params.font]\n  )\n\n  const currentFontHeading = React.useMemo(\n    () => FONTS.find((font) => font.value === params.fontHeading),\n    [params.fontHeading]\n  )\n  const headingLabel =\n    currentFontHeading?.name && currentFontHeading.name !== currentFont?.name\n      ? currentFontHeading.name\n      : \"Inherit\"\n  const bodyLabel = currentFont?.name ?? \"Default\"\n\n  return (\n    <Card>\n      <CardContent className=\"flex flex-col gap-2\">\n        <div className=\"text-xs font-medium tracking-wide text-muted-foreground uppercase\">\n          {headingLabel} - {bodyLabel}\n        </div>\n        <p className=\"cn-font-heading text-2xl font-medium\">\n          Designing with rhythm and hierarchy.\n        </p>\n        <p className=\"text-sm leading-relaxed text-muted-foreground\">\n          A strong body style keeps long-form content readable and balances the\n          visual weight of headings.\n        </p>\n        <p className=\"text-sm leading-relaxed text-muted-foreground\">\n          Thoughtful spacing and cadence help paragraphs scan quickly without\n          feeling dense.\n        </p>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\" className=\"w-full\">\n          Sample Button\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/ui-elements.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/bases/radix/ui/alert-dialog\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { ButtonGroup } from \"@/registry/bases/radix/ui/button-group\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/bases/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/bases/radix/ui/radio-group\"\nimport { Slider } from \"@/registry/bases/radix/ui/slider\"\nimport { Switch } from \"@/registry/bases/radix/ui/switch\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function UIElements() {\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\n  const handleSliderValueChange = React.useCallback(\n    (value: number | readonly number[]) => {\n      if (typeof value === \"number\") {\n        setSliderValue([value])\n      } else {\n        setSliderValue([...value])\n      }\n    },\n    []\n  )\n\n  return (\n    <Card className=\"w-full\">\n      <CardContent className=\"flex flex-col gap-6\">\n        <div className=\"flex flex-col gap-4\">\n          <div className=\"flex flex-wrap gap-2\">\n            <Button>Button</Button>\n            <Button variant=\"secondary\">Secondary</Button>\n            <Button variant=\"outline\">Outline</Button>\n            <Button variant=\"ghost\">Ghost</Button>\n          </div>\n          <Item variant=\"outline\">\n            <ItemContent>\n              <ItemTitle>Two-factor authentication</ItemTitle>\n              <ItemDescription className=\"text-pretty xl:hidden 2xl:block\">\n                Verify via email or phone number.\n              </ItemDescription>\n            </ItemContent>\n            <ItemActions className=\"hidden md:flex\">\n              <Button size=\"sm\" variant=\"secondary\">\n                Enable\n              </Button>\n            </ItemActions>\n          </Item>\n        </div>\n        <Slider\n          value={sliderValue}\n          onValueChange={handleSliderValueChange}\n          max={1000}\n          min={0}\n          step={10}\n          className=\"flex-1\"\n          aria-label=\"Slider\"\n        />\n        <FieldGroup>\n          <Field>\n            <InputGroup>\n              <InputGroupInput placeholder=\"Name\" />\n              <InputGroupAddon align=\"inline-end\">\n                <InputGroupText>\n                  <IconPlaceholder\n                    lucide=\"SearchIcon\"\n                    tabler=\"IconSearch\"\n                    hugeicons=\"Search01Icon\"\n                    phosphor=\"MagnifyingGlassIcon\"\n                    remixicon=\"RiSearchLine\"\n                  />\n                </InputGroupText>\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field className=\"flex-1\">\n            <Textarea placeholder=\"Message\" className=\"resize-none\" />\n          </Field>\n        </FieldGroup>\n        <div className=\"flex items-center gap-2\">\n          <div className=\"flex gap-2\">\n            <Badge>Badge</Badge>\n            <Badge variant=\"secondary\">Secondary</Badge>\n            <Badge variant=\"outline\">Outline</Badge>\n          </div>\n          <RadioGroup defaultValue=\"apple\" className=\"ml-auto flex w-fit gap-3\">\n            <RadioGroupItem value=\"apple\" />\n            <RadioGroupItem value=\"banana\" />\n          </RadioGroup>\n          <div className=\"flex gap-3\">\n            <Checkbox defaultChecked />\n            <Checkbox />\n          </div>\n        </div>\n        <div className=\"flex items-center gap-4\">\n          <AlertDialog>\n            <AlertDialogTrigger asChild>\n              <Button variant=\"outline\">\n                <span className=\"hidden md:block\">Alert Dialog</span>\n                <span className=\"block md:hidden\">Dialog</span>\n              </Button>\n            </AlertDialogTrigger>\n            <AlertDialogContent size=\"sm\">\n              <AlertDialogHeader>\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n                <AlertDialogDescription>\n                  Do you want to allow the USB accessory to connect to this\n                  device and your data?\n                </AlertDialogDescription>\n              </AlertDialogHeader>\n              <AlertDialogFooter>\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n                <AlertDialogAction>Allow</AlertDialogAction>\n              </AlertDialogFooter>\n            </AlertDialogContent>\n          </AlertDialog>\n          <ButtonGroup>\n            <Button variant=\"outline\">Button Group</Button>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"outline\" size=\"icon\">\n                  <IconPlaceholder\n                    lucide=\"ChevronUpIcon\"\n                    tabler=\"IconChevronUp\"\n                    hugeicons=\"ArrowUp01Icon\"\n                    phosphor=\"CaretUpIcon\"\n                    remixicon=\"RiArrowUpSLine\"\n                  />\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\" side=\"top\" className=\"w-40\">\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\n                  <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\n                  <DropdownMenuItem>Mark as Read</DropdownMenuItem>\n                  <DropdownMenuItem>Block User</DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Conversation</DropdownMenuLabel>\n                  <DropdownMenuItem>Share Conversation</DropdownMenuItem>\n                  <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\n                  <DropdownMenuItem>Report Conversation</DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem variant=\"destructive\">\n                    Delete Conversation\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </ButtonGroup>\n          <Switch defaultChecked className=\"ml-auto\" />\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/usage-card.tsx",
    "content": "\"use client\"\n\nimport {\n  Card,\n  CardContent,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\n\n// Usage items with percentage and value.\nconst items = [\n  {\n    name: \"Edge Requests\",\n    value: \"$1.83K\",\n    percentage: 67.34,\n  },\n  {\n    name: \"Fast Data Transfer\",\n    percentage: 52.18,\n    value: \"$952.51\",\n  },\n  {\n    name: \"Monitoring data points\",\n    percentage: 89.42,\n    value: \"$901.20\",\n  },\n  {\n    name: \"Web Analytics Events\",\n    percentage: 45.67,\n    value: \"$603.71\",\n  },\n  {\n    name: \"ISR Writes\",\n    percentage: 26.23,\n    value: \"524.52K / 2M\",\n  },\n  {\n    name: \"Function Duration\",\n    percentage: 5.11,\n    value: \"5.11 GB Hrs / 1K GB Hrs\",\n  },\n]\n\n// Circular gauge SVG component for displaying a percentage.\nfunction CircularGauge({ percentage }: { percentage: number }) {\n  const normalizedPercentage = Math.min(Math.max(percentage, 0), 100)\n  const circumference = 2 * Math.PI * 42.5\n  const strokePercent = (normalizedPercentage / 100) * circumference\n\n  return (\n    <svg\n      aria-hidden=\"true\"\n      fill=\"none\"\n      height=\"16\"\n      width=\"16\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 100 100\"\n      className=\"-rotate-90\"\n    >\n      <circle\n        cx=\"50\"\n        cy=\"50\"\n        r=\"42.5\"\n        strokeWidth=\"12\"\n        strokeDashoffset=\"0\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        className=\"opacity-20\"\n        stroke=\"currentColor\"\n        style={{\n          strokeDasharray: `${circumference} ${circumference}`,\n        }}\n      />\n      <circle\n        cx=\"50\"\n        cy=\"50\"\n        r=\"42.5\"\n        strokeWidth=\"12\"\n        strokeDashoffset=\"0\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        stroke=\"currentColor\"\n        className=\"transition-all duration-300\"\n        style={{\n          strokeDasharray: `${strokePercent} ${circumference}`,\n        }}\n      />\n    </svg>\n  )\n}\n\nexport function UsageCard() {\n  return (\n    <Card className=\"w-full max-w-sm gap-4\">\n      <CardHeader>\n        <CardTitle className=\"px-1 text-sm\">\n          5 days remaining in cycle\n        </CardTitle>\n      </CardHeader>\n      <CardContent>\n        <ItemGroup className=\"gap-0\">\n          {items.map((item) => (\n            <Item\n              key={item.name}\n              size=\"xs\"\n              className=\"px-0 group-hover/item-group:bg-transparent\"\n              asChild\n            >\n              <a href=\"#\">\n                <ItemMedia variant=\"icon\" className=\"text-primary\">\n                  <CircularGauge percentage={item.percentage} />\n                </ItemMedia>\n                <ItemContent className=\"inline-block truncate\">\n                  <ItemTitle className=\"inline\">{item.name}</ItemTitle>\n                </ItemContent>\n                <ItemActions>\n                  <span className=\"font-mono text-xs font-medium text-muted-foreground tabular-nums\">\n                    {item.value}\n                  </span>\n                </ItemActions>\n              </a>\n            </Item>\n          ))}\n        </ItemGroup>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/visitors.tsx",
    "content": "\"use client\"\n\nimport { Area, AreaChart, XAxis } from \"recharts\"\n\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/radix/ui/chart\"\n\nconst areaChartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst areaChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nconst latestVisitors = areaChartData[areaChartData.length - 1]?.desktop ?? 0\nconst previousVisitors =\n  areaChartData[areaChartData.length - 2]?.desktop ?? latestVisitors\nconst trendPercent =\n  previousVisitors === 0\n    ? 0\n    : Math.round(((latestVisitors - previousVisitors) / previousVisitors) * 100)\nconst trendPrefix = trendPercent > 0 ? \"+\" : \"\"\n\nexport function Visitors() {\n  return (\n    <Card className=\"pb-0\">\n      <CardHeader>\n        <CardTitle>Visitors</CardTitle>\n        <CardDescription>Last 6 months </CardDescription>\n        <CardAction>\n          <Badge variant={trendPercent >= 0 ? \"secondary\" : \"destructive\"}>\n            {trendPrefix}\n            {trendPercent}% vs last month\n          </Badge>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"px-0\">\n        <ChartContainer config={areaChartConfig} className=\"h-48 w-full\">\n          <AreaChart\n            accessibilityLayer\n            data={areaChartData}\n            margin={{ left: 0, right: 0, top: 6, bottom: 0 }}\n          >\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              hide\n              axisLine={false}\n              tickMargin={6}\n              tickFormatter={(value) => String(value).slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.15}\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/cards/weekly-fitness-summary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\n\nconst FITNESS_WEEKLY_LOAD = [\n  { day: \"M\", load: 84 },\n  { day: \"T\", load: 52 },\n  { day: \"W\", load: 73 },\n  { day: \"T\", load: 66 },\n  { day: \"F\", load: 91 },\n  { day: \"S\", load: 48 },\n  { day: \"S\", load: 61 },\n]\n\nexport function WeeklyFitnessSummary() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Weekly Fitness Summary</CardTitle>\n        <CardDescription>Calories and workout load by day</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"grid grid-cols-7 gap-1.5\">\n          {FITNESS_WEEKLY_LOAD.map((day, index) => (\n            <div\n              key={`${day.day}-${index}`}\n              className=\"rounded-md p-1.5 text-center ring ring-border\"\n            >\n              <div className=\"text-sm text-muted-foreground\">{day.day}</div>\n              <div className=\"relative mt-1 h-16 overflow-hidden rounded-sm bg-muted\">\n                <div\n                  className=\"absolute inset-x-0 bottom-0 rounded-sm bg-chart-3\"\n                  style={\n                    {\n                      height: `${day.load}%`,\n                    } as React.CSSProperties\n                  }\n                />\n              </div>\n            </div>\n          ))}\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">View details</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/preview/index.tsx",
    "content": "\"use client\"\n\nimport { ActivateAgentDialog } from \"@/registry/bases/radix/blocks/preview/cards/activate-agent-dialog\"\nimport { AnalyticsCard } from \"@/registry/bases/radix/blocks/preview/cards/analytics-card\"\nimport { AnomalyAlert } from \"@/registry/bases/radix/blocks/preview/cards/anomaly-alert\"\nimport { BarChartCard } from \"@/registry/bases/radix/blocks/preview/cards/bar-chart-card\"\nimport { BookAppointment } from \"@/registry/bases/radix/blocks/preview/cards/book-appointment\"\nimport { CodespacesCard } from \"@/registry/bases/radix/blocks/preview/cards/codespaces-card\"\nimport { ContributionsActivity } from \"@/registry/bases/radix/blocks/preview/cards/contributions-activity\"\nimport { Contributors } from \"@/registry/bases/radix/blocks/preview/cards/contributors\"\nimport { EnvironmentVariables } from \"@/registry/bases/radix/blocks/preview/cards/environment-variables\"\nimport { FeedbackForm } from \"@/registry/bases/radix/blocks/preview/cards/feedback-form\"\nimport { FileUpload } from \"@/registry/bases/radix/blocks/preview/cards/file-upload\"\nimport { GithubProfile } from \"@/registry/bases/radix/blocks/preview/cards/github-profile\"\nimport { IconPreviewGrid } from \"@/registry/bases/radix/blocks/preview/cards/icon-preview-grid\"\nimport { InviteTeam } from \"@/registry/bases/radix/blocks/preview/cards/invite-team\"\nimport { Invoice } from \"@/registry/bases/radix/blocks/preview/cards/invoice\"\nimport { LiveWaveformCard } from \"@/registry/bases/radix/blocks/preview/cards/live-waveform\"\nimport { NoTeamMembers } from \"@/registry/bases/radix/blocks/preview/cards/no-team-members\"\nimport { NotFound } from \"@/registry/bases/radix/blocks/preview/cards/not-found\"\nimport { ObservabilityCard } from \"@/registry/bases/radix/blocks/preview/cards/observability-card\"\nimport { PieChartCard } from \"@/registry/bases/radix/blocks/preview/cards/pie-chart-card\"\nimport { ReportBug } from \"@/registry/bases/radix/blocks/preview/cards/report-bug\"\nimport { ShippingAddress } from \"@/registry/bases/radix/blocks/preview/cards/shipping-address\"\nimport { Shortcuts } from \"@/registry/bases/radix/blocks/preview/cards/shortcuts\"\nimport { SkeletonLoading } from \"@/registry/bases/radix/blocks/preview/cards/skeleton-loading\"\nimport { SleepReport } from \"@/registry/bases/radix/blocks/preview/cards/sleep-report\"\nimport { StyleOverview } from \"@/registry/bases/radix/blocks/preview/cards/style-overview\"\nimport { TypographySpecimen } from \"@/registry/bases/radix/blocks/preview/cards/typography-specimen\"\nimport { UIElements } from \"@/registry/bases/radix/blocks/preview/cards/ui-elements\"\nimport { UsageCard } from \"@/registry/bases/radix/blocks/preview/cards/usage-card\"\nimport { Visitors } from \"@/registry/bases/radix/blocks/preview/cards/visitors\"\nimport { WeeklyFitnessSummary } from \"@/registry/bases/radix/blocks/preview/cards/weekly-fitness-summary\"\n\nexport default function PreviewExample() {\n  return (\n    <div className=\"overflow-x-auto overflow-y-hidden bg-muted contain-[paint] [--gap:--spacing(4)] 3xl:[--gap:--spacing(12)] md:[--gap:--spacing(10)] dark:bg-background style-lyra:md:[--gap:--spacing(6)] style-mira:md:[--gap:--spacing(6)]\">\n      <div className=\"flex w-full min-w-max justify-center\">\n        <div\n          className=\"grid w-[2400px] grid-cols-7 items-start gap-(--gap) bg-muted p-(--gap) md:w-[3000px] dark:bg-background style-lyra:md:w-[2600px] style-mira:md:w-[2600px] *:[div]:gap-(--gap)\"\n          data-slot=\"capture-target\"\n        >\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <StyleOverview />\n            <TypographySpecimen />\n            <div className=\"md:hidden\">\n              <UIElements />\n            </div>\n            <CodespacesCard />\n            <Invoice />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <IconPreviewGrid />\n            <div className=\"hidden w-full md:flex\">\n              <UIElements />\n            </div>\n            <ObservabilityCard />\n            <ShippingAddress />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <EnvironmentVariables />\n            <BarChartCard />\n            <InviteTeam />\n            <ActivateAgentDialog />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <SkeletonLoading />\n            <PieChartCard />\n            <NoTeamMembers />\n            <ReportBug />\n            <Contributors />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <FeedbackForm />\n            <BookAppointment />\n            <SleepReport />\n            <GithubProfile />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <WeeklyFitnessSummary />\n            <FileUpload />\n            <AnalyticsCard />\n            <UsageCard />\n            <Shortcuts />\n          </div>\n          <div className=\"flex flex-col p-px [contain-intrinsic-size:380px_1200px] [content-visibility:auto]\">\n            <AnomalyAlert />\n            <LiveWaveformCard />\n            <Visitors />\n            <ContributionsActivity />\n            <NotFound />\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-01/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\n\nimport { SearchForm } from \"@/registry/bases/radix/blocks/sidebar-01/components/search-form\"\nimport { VersionSwitcher } from \"@/registry/bases/radix/blocks/sidebar-01/components/version-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  versions: [\"1.0.1\", \"1.1.0-alpha\", \"2.0.0-beta1\"],\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <VersionSwitcher\n          versions={data.versions}\n          defaultVersion={data.versions[0]}\n        />\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent>\n        {/* We create a SidebarGroup for each parent. */}\n        {data.navMain.map((item) => (\n          <SidebarGroup key={item.title}>\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {item.items.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton asChild isActive={item.isActive}>\n                      <a href={item.url}>{item.title}</a>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        ))}\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-01/components/search-form.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <IconPlaceholder\n            lucide=\"SearchIcon\"\n            tabler=\"IconSearch\"\n            hugeicons=\"SearchIcon\"\n            phosphor=\"MagnifyingGlassIcon\"\n            remixicon=\"RiSearchLine\"\n            className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n          />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-01/components/version-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function VersionSwitcher({\n  versions,\n  defaultVersion,\n}: {\n  versions: string[]\n  defaultVersion: string\n}) {\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex flex-col gap-0.5 leading-none\">\n                <span className=\"font-medium\">Documentation</span>\n                <span className=\"\">v{selectedVersion}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width)\"\n            align=\"start\"\n          >\n            {versions.map((version) => (\n              <DropdownMenuItem\n                key={version}\n                onSelect={() => setSelectedVersion(version)}\n              >\n                v{version}{\" \"}\n                {version === selectedVersion && (\n                  <IconPlaceholder\n                    lucide=\"CheckIcon\"\n                    tabler=\"IconCheck\"\n                    hugeicons=\"Tick02Icon\"\n                    phosphor=\"CheckIcon\"\n                    remixicon=\"RiCheckLine\"\n                    className=\"ml-auto\"\n                  />\n                )}\n              </DropdownMenuItem>\n            ))}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-01/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-01/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-02/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { SearchForm } from \"@/registry/bases/radix/blocks/sidebar-02/components/search-form\"\nimport { VersionSwitcher } from \"@/registry/bases/radix/blocks/sidebar-02/components/version-switcher\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  versions: [\"1.0.1\", \"1.1.0-alpha\", \"2.0.0-beta1\"],\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <VersionSwitcher\n          versions={data.versions}\n          defaultVersion={data.versions[0]}\n        />\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent className=\"gap-0\">\n        {/* We create a collapsible SidebarGroup for each parent. */}\n        {data.navMain.map((item) => (\n          <Collapsible\n            key={item.title}\n            title={item.title}\n            defaultOpen\n            className=\"group/collapsible\"\n          >\n            <SidebarGroup>\n              <SidebarGroupLabel\n                asChild\n                className=\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                <CollapsibleTrigger>\n                  {item.title}{\" \"}\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                    className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\"\n                  />\n                </CollapsibleTrigger>\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {item.items.map((item) => (\n                      <SidebarMenuItem key={item.title}>\n                        <SidebarMenuButton asChild isActive={item.isActive}>\n                          <a href={item.url}>{item.title}</a>\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </SidebarGroup>\n          </Collapsible>\n        ))}\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-02/components/search-form.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <IconPlaceholder\n            lucide=\"SearchIcon\"\n            tabler=\"IconSearch\"\n            hugeicons=\"SearchIcon\"\n            phosphor=\"MagnifyingGlassIcon\"\n            remixicon=\"RiSearchLine\"\n            className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n          />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-02/components/version-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function VersionSwitcher({\n  versions,\n  defaultVersion,\n}: {\n  versions: string[]\n  defaultVersion: string\n}) {\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex flex-col gap-0.5 leading-none\">\n                <span className=\"font-medium\">Documentation</span>\n                <span className=\"\">v{selectedVersion}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width)\"\n            align=\"start\"\n          >\n            {versions.map((version) => (\n              <DropdownMenuItem\n                key={version}\n                onSelect={() => setSelectedVersion(version)}\n              >\n                v{version}{\" \"}\n                {version === selectedVersion && (\n                  <IconPlaceholder\n                    lucide=\"CheckIcon\"\n                    tabler=\"IconCheck\"\n                    hugeicons=\"Tick02Icon\"\n                    phosphor=\"CheckIcon\"\n                    remixicon=\"RiCheckLine\"\n                    className=\"ml-auto\"\n                  />\n                )}\n              </DropdownMenuItem>\n            ))}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-02/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-02/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          {Array.from({ length: 24 }).map((_, index) => (\n            <div\n              key={index}\n              className=\"aspect-video h-12 w-full rounded-lg bg-muted/50\"\n            />\n          ))}\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-03/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <IconPlaceholder\n                    lucide=\"GalleryVerticalEndIcon\"\n                    tabler=\"IconLayoutRows\"\n                    hugeicons=\"LayoutBottomIcon\"\n                    phosphor=\"RowsIcon\"\n                    remixicon=\"RiGalleryLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">Documentation</span>\n                  <span className=\"\">v1.0.0</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu>\n            {data.navMain.map((item) => (\n              <SidebarMenuItem key={item.title}>\n                <SidebarMenuButton asChild>\n                  <a href={item.url} className=\"font-medium\">\n                    {item.title}\n                  </a>\n                </SidebarMenuButton>\n                {item.items?.length ? (\n                  <SidebarMenuSub>\n                    {item.items.map((item) => (\n                      <SidebarMenuSubItem key={item.title}>\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\n                          <a href={item.url}>{item.title}</a>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                ) : null}\n              </SidebarMenuItem>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-03/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-03/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b\">\n          <div className=\"flex items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-04/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar variant=\"floating\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <IconPlaceholder\n                    lucide=\"GalleryVerticalEndIcon\"\n                    tabler=\"IconLayoutRows\"\n                    hugeicons=\"LayoutBottomIcon\"\n                    phosphor=\"RowsIcon\"\n                    remixicon=\"RiGalleryLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">Documentation</span>\n                  <span className=\"\">v1.0.0</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu className=\"gap-2\">\n            {data.navMain.map((item) => (\n              <SidebarMenuItem key={item.title}>\n                <SidebarMenuButton asChild>\n                  <a href={item.url} className=\"font-medium\">\n                    {item.title}\n                  </a>\n                </SidebarMenuButton>\n                {item.items?.length ? (\n                  <SidebarMenuSub className=\"ml-0 border-l-0 px-1.5\">\n                    {item.items.map((item) => (\n                      <SidebarMenuSubItem key={item.title}>\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\n                          <a href={item.url}>{item.title}</a>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                ) : null}\n              </SidebarMenuItem>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-04/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-04/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"19rem\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-05/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { SearchForm } from \"@/registry/bases/radix/blocks/sidebar-05/components/search-form\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <IconPlaceholder\n                    lucide=\"GalleryVerticalEndIcon\"\n                    tabler=\"IconLayoutRows\"\n                    hugeicons=\"LayoutBottomIcon\"\n                    phosphor=\"RowsIcon\"\n                    remixicon=\"RiGalleryLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">Documentation</span>\n                  <span className=\"\">v1.0.0</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu>\n            {data.navMain.map((item, index) => (\n              <Collapsible\n                key={item.title}\n                defaultOpen={index === 1}\n                className=\"group/collapsible\"\n              >\n                <SidebarMenuItem>\n                  <CollapsibleTrigger asChild>\n                    <SidebarMenuButton>\n                      {item.title}{\" \"}\n                      <IconPlaceholder\n                        lucide=\"PlusIcon\"\n                        tabler=\"IconPlus\"\n                        hugeicons=\"PlusSignIcon\"\n                        phosphor=\"PlusIcon\"\n                        remixicon=\"RiAddLine\"\n                        className=\"ml-auto group-data-[state=open]/collapsible:hidden\"\n                      />\n                      <IconPlaceholder\n                        lucide=\"MinusIcon\"\n                        tabler=\"IconMinus\"\n                        hugeicons=\"MinusSignIcon\"\n                        phosphor=\"MinusIcon\"\n                        remixicon=\"RiSubtractLine\"\n                        className=\"ml-auto group-data-[state=closed]/collapsible:hidden\"\n                      />\n                    </SidebarMenuButton>\n                  </CollapsibleTrigger>\n                  {item.items?.length ? (\n                    <CollapsibleContent>\n                      <SidebarMenuSub>\n                        {item.items.map((item) => (\n                          <SidebarMenuSubItem key={item.title}>\n                            <SidebarMenuSubButton\n                              asChild\n                              isActive={item.isActive}\n                            >\n                              <a href={item.url}>{item.title}</a>\n                            </SidebarMenuSubButton>\n                          </SidebarMenuSubItem>\n                        ))}\n                      </SidebarMenuSub>\n                    </CollapsibleContent>\n                  ) : null}\n                </SidebarMenuItem>\n              </Collapsible>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-05/components/search-form.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <IconPlaceholder\n            lucide=\"SearchIcon\"\n            tabler=\"IconSearch\"\n            hugeicons=\"SearchIcon\"\n            phosphor=\"MagnifyingGlassIcon\"\n            remixicon=\"RiSearchLine\"\n            className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n          />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-05/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-05/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-06/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavMain } from \"@/registry/bases/radix/blocks/sidebar-06/components/nav-main\"\nimport { SidebarOptInForm } from \"@/registry/bases/radix/blocks/sidebar-06/components/sidebar-opt-in-form\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <IconPlaceholder\n                    lucide=\"GalleryVerticalEndIcon\"\n                    tabler=\"IconLayoutRows\"\n                    hugeicons=\"LayoutBottomIcon\"\n                    phosphor=\"RowsIcon\"\n                    remixicon=\"RiGalleryLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">Documentation</span>\n                  <span className=\"\">v1.0.0</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n      </SidebarContent>\n      <SidebarFooter>\n        <div className=\"p-1\">\n          <SidebarOptInForm />\n        </div>\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-06/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: React.ReactNode\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup>\n      <SidebarMenu>\n        {items.map((item) => (\n          <DropdownMenu key={item.title}>\n            <SidebarMenuItem>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\">\n                  {item.title}{\" \"}\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                    className=\"ml-auto\"\n                  />\n                </SidebarMenuButton>\n              </DropdownMenuTrigger>\n              {item.items?.length ? (\n                <DropdownMenuContent\n                  side={isMobile ? \"bottom\" : \"right\"}\n                  align={isMobile ? \"end\" : \"start\"}\n                  className=\"min-w-56 rounded-lg\"\n                >\n                  {item.items.map((item) => (\n                    <DropdownMenuItem asChild key={item.title}>\n                      <a href={item.url}>{item.title}</a>\n                    </DropdownMenuItem>\n                  ))}\n                </DropdownMenuContent>\n              ) : null}\n            </SidebarMenuItem>\n          </DropdownMenu>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-06/components/sidebar-opt-in-form.tsx",
    "content": "import { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { SidebarInput } from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function SidebarOptInForm() {\n  return (\n    <Card className=\"gap-2 py-4 shadow-none\">\n      <CardHeader className=\"px-4\">\n        <CardTitle className=\"text-sm\">Subscribe to our newsletter</CardTitle>\n        <CardDescription>\n          Opt-in to receive updates and news about the sidebar.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"px-4\">\n        <form>\n          <div className=\"grid gap-2.5\">\n            <SidebarInput type=\"email\" placeholder=\"Email\" />\n            <Button className=\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\">\n              Subscribe\n            </Button>\n          </div>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-06/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-06/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-07/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavMain } from \"@/registry/bases/radix/blocks/sidebar-07/components/nav-main\"\nimport { NavProjects } from \"@/registry/bases/radix/blocks/sidebar-07/components/nav-projects\"\nimport { NavUser } from \"@/registry/bases/radix/blocks/sidebar-07/components/nav-user\"\nimport { TeamSwitcher } from \"@/registry/bases/radix/blocks/sidebar-07/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"GalleryVerticalEndIcon\"\n          tabler=\"IconLayoutRows\"\n          hugeicons=\"LayoutBottomIcon\"\n          phosphor=\"RowsIcon\"\n          remixicon=\"RiGalleryLine\"\n        />\n      ),\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"AudioLinesIcon\"\n          tabler=\"IconWaveSine\"\n          hugeicons=\"AudioWave01Icon\"\n          phosphor=\"WaveformIcon\"\n          remixicon=\"RiPulseLine\"\n        />\n      ),\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"TerminalSquareIcon\"\n          tabler=\"IconTerminal2\"\n          hugeicons=\"ComputerTerminalIcon\"\n          phosphor=\"TerminalIcon\"\n          remixicon=\"RiTerminalBoxLine\"\n        />\n      ),\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BotIcon\"\n          tabler=\"IconRobot\"\n          hugeicons=\"RoboticIcon\"\n          phosphor=\"RobotIcon\"\n          remixicon=\"RiRobotLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BookOpenIcon\"\n          tabler=\"IconBook\"\n          hugeicons=\"BookOpen02Icon\"\n          phosphor=\"BookOpenIcon\"\n          remixicon=\"RiBookOpenLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FrameIcon\"\n          tabler=\"IconFrame\"\n          hugeicons=\"CropIcon\"\n          phosphor=\"CropIcon\"\n          remixicon=\"RiCropLine\"\n        />\n      ),\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"PieChartIcon\"\n          tabler=\"IconChartPie\"\n          hugeicons=\"PieChartIcon\"\n          phosphor=\"ChartPieIcon\"\n          remixicon=\"RiPieChartLine\"\n        />\n      ),\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MapIcon\"\n          tabler=\"IconMap\"\n          hugeicons=\"MapsIcon\"\n          phosphor=\"MapTrifoldIcon\"\n          remixicon=\"RiMapLine\"\n        />\n      ),\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar collapsible=\"icon\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-07/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: React.ReactNode\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible\n            key={item.title}\n            asChild\n            defaultOpen={item.isActive}\n            className=\"group/collapsible\"\n          >\n            <SidebarMenuItem>\n              <CollapsibleTrigger asChild>\n                <SidebarMenuButton tooltip={item.title}>\n                  {item.icon}\n                  <span>{item.title}</span>\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                    className=\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\"\n                  />\n                </SidebarMenuButton>\n              </CollapsibleTrigger>\n              <CollapsibleContent>\n                <SidebarMenuSub>\n                  {item.items?.map((subItem) => (\n                    <SidebarMenuSubItem key={subItem.title}>\n                      <SidebarMenuSubButton asChild>\n                        <a href={subItem.url}>\n                          <span>{subItem.title}</span>\n                        </a>\n                      </SidebarMenuSubButton>\n                    </SidebarMenuSubItem>\n                  ))}\n                </SidebarMenuSub>\n              </CollapsibleContent>\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-07/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: React.ReactNode\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                {item.icon}\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"aria-expanded:bg-muted\"\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"FolderIcon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ArrowRightIcon\"\n                    tabler=\"IconArrowForward\"\n                    hugeicons=\"ArrowRightIcon\"\n                    phosphor=\"ShareFatIcon\"\n                    remixicon=\"RiShareForwardLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n              className=\"text-sidebar-foreground/70\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-07/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto size-4\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-07/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ReactNode\n    plan: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n\n  if (!activeTeam) {\n    return null\n  }\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                {activeTeam.logo}\n              </div>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{activeTeam.name}</span>\n                <span className=\"truncate text-xs\">{activeTeam.plan}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            align=\"start\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n              Teams\n            </DropdownMenuLabel>\n            {teams.map((team, index) => (\n              <DropdownMenuItem\n                key={team.name}\n                onClick={() => setActiveTeam(team)}\n                className=\"gap-2 p-2\"\n              >\n                <div className=\"flex size-6 items-center justify-center rounded-md border\">\n                  {team.logo}\n                </div>\n                {team.name}\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n              </DropdownMenuItem>\n            ))}\n            <DropdownMenuSeparator />\n            <DropdownMenuItem className=\"gap-2 p-2\">\n              <div className=\"flex size-6 items-center justify-center rounded-md border bg-transparent\">\n                <IconPlaceholder\n                  lucide=\"PlusIcon\"\n                  tabler=\"IconPlus\"\n                  hugeicons=\"PlusSignIcon\"\n                  phosphor=\"PlusIcon\"\n                  remixicon=\"RiAddLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"font-medium text-muted-foreground\">Add team</div>\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-07/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-07/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-08/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavMain } from \"@/registry/bases/radix/blocks/sidebar-08/components/nav-main\"\nimport { NavProjects } from \"@/registry/bases/radix/blocks/sidebar-08/components/nav-projects\"\nimport { NavSecondary } from \"@/registry/bases/radix/blocks/sidebar-08/components/nav-secondary\"\nimport { NavUser } from \"@/registry/bases/radix/blocks/sidebar-08/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"TerminalSquareIcon\"\n          tabler=\"IconTerminal2\"\n          hugeicons=\"ComputerTerminalIcon\"\n          phosphor=\"TerminalIcon\"\n          remixicon=\"RiTerminalBoxLine\"\n        />\n      ),\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BotIcon\"\n          tabler=\"IconRobot\"\n          hugeicons=\"RoboticIcon\"\n          phosphor=\"RobotIcon\"\n          remixicon=\"RiRobotLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BookOpenIcon\"\n          tabler=\"IconBook\"\n          hugeicons=\"BookOpen02Icon\"\n          phosphor=\"BookOpenIcon\"\n          remixicon=\"RiBookOpenLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Support\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LifeBuoyIcon\"\n          tabler=\"IconLifebuoy\"\n          hugeicons=\"ChartRingIcon\"\n          phosphor=\"LifebuoyIcon\"\n          remixicon=\"RiLifebuoyLine\"\n        />\n      ),\n    },\n    {\n      title: \"Feedback\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SendIcon\"\n          tabler=\"IconSend\"\n          hugeicons=\"SentIcon\"\n          phosphor=\"PaperPlaneTiltIcon\"\n          remixicon=\"RiSendPlaneLine\"\n        />\n      ),\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FrameIcon\"\n          tabler=\"IconFrame\"\n          hugeicons=\"CropIcon\"\n          phosphor=\"CropIcon\"\n          remixicon=\"RiCropLine\"\n        />\n      ),\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"PieChartIcon\"\n          tabler=\"IconChartPie\"\n          hugeicons=\"PieChartIcon\"\n          phosphor=\"ChartPieIcon\"\n          remixicon=\"RiPieChartLine\"\n        />\n      ),\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MapIcon\"\n          tabler=\"IconMap\"\n          hugeicons=\"MapsIcon\"\n          phosphor=\"MapTrifoldIcon\"\n          remixicon=\"RiMapLine\"\n        />\n      ),\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar variant=\"inset\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <IconPlaceholder\n                    lucide=\"TerminalIcon\"\n                    tabler=\"IconCommand\"\n                    hugeicons=\"CommandIcon\"\n                    phosphor=\"CommandIcon\"\n                    remixicon=\"RiCommandLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">Acme Inc</span>\n                  <span className=\"truncate text-xs\">Enterprise</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-08/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\n            <SidebarMenuItem>\n              <SidebarMenuButton asChild tooltip={item.title}>\n                <a href={item.url}>\n                  {item.icon}\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.items?.length ? (\n                <>\n                  <CollapsibleTrigger asChild>\n                    <SidebarMenuAction className=\"data-[state=open]:rotate-90\">\n                      <IconPlaceholder\n                        lucide=\"ChevronRightIcon\"\n                        tabler=\"IconChevronRight\"\n                        hugeicons=\"ArrowRight01Icon\"\n                        phosphor=\"CaretRightIcon\"\n                        remixicon=\"RiArrowRightSLine\"\n                      />\n                      <span className=\"sr-only\">Toggle</span>\n                    </SidebarMenuAction>\n                  </CollapsibleTrigger>\n                  <CollapsibleContent>\n                    <SidebarMenuSub>\n                      {item.items?.map((subItem) => (\n                        <SidebarMenuSubItem key={subItem.title}>\n                          <SidebarMenuSubButton asChild>\n                            <a href={subItem.url}>\n                              <span>{subItem.title}</span>\n                            </a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </CollapsibleContent>\n                </>\n              ) : null}\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-08/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: React.ReactNode\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                {item.icon}\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"aria-expanded:bg-muted\"\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"FolderIcon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare2\"\n                    hugeicons=\"Share03Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton>\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-08/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild size=\"sm\">\n                <a href={item.url}>\n                  {item.icon}\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-08/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto size-4\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-08/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-08/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-09/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavUser } from \"@/registry/bases/radix/blocks/sidebar-09/components/nav-user\"\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarHeader,\n  SidebarInput,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { Switch } from \"@/registry/bases/radix/ui/switch\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"InboxIcon\"\n          tabler=\"IconInbox\"\n          hugeicons=\"InboxIcon\"\n          phosphor=\"TrayIcon\"\n          remixicon=\"RiInboxLine\"\n        />\n      ),\n      isActive: true,\n    },\n    {\n      title: \"Drafts\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileIcon\"\n          tabler=\"IconFile\"\n          hugeicons=\"FileIcon\"\n          phosphor=\"FileIcon\"\n          remixicon=\"RiFileLine\"\n        />\n      ),\n      isActive: false,\n    },\n    {\n      title: \"Sent\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SendIcon\"\n          tabler=\"IconSend\"\n          hugeicons=\"SentIcon\"\n          phosphor=\"PaperPlaneTiltIcon\"\n          remixicon=\"RiSendPlaneLine\"\n        />\n      ),\n      isActive: false,\n    },\n    {\n      title: \"Junk\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ArchiveXIcon\"\n          tabler=\"IconArchiveOff\"\n          hugeicons=\"ArchiveIcon\"\n          phosphor=\"ArchiveIcon\"\n          remixicon=\"RiArchiveLine\"\n        />\n      ),\n      isActive: false,\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Trash2Icon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"Delete02Icon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n      isActive: false,\n    },\n  ],\n  mails: [\n    {\n      name: \"William Smith\",\n      email: \"williamsmith@example.com\",\n      subject: \"Meeting Tomorrow\",\n      date: \"09:34 AM\",\n      teaser:\n        \"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\nPlease come prepared with your project updates.\",\n    },\n    {\n      name: \"Alice Smith\",\n      email: \"alicesmith@example.com\",\n      subject: \"Re: Project Update\",\n      date: \"Yesterday\",\n      teaser:\n        \"Thanks for the update. The progress looks great so far.\\nLet's schedule a call to discuss the next steps.\",\n    },\n    {\n      name: \"Bob Johnson\",\n      email: \"bobjohnson@example.com\",\n      subject: \"Weekend Plans\",\n      date: \"2 days ago\",\n      teaser:\n        \"Hey everyone! I'm thinking of organizing a team outing this weekend.\\nWould you be interested in a hiking trip or a beach day?\",\n    },\n    {\n      name: \"Emily Davis\",\n      email: \"emilydavis@example.com\",\n      subject: \"Re: Question about Budget\",\n      date: \"2 days ago\",\n      teaser:\n        \"I've reviewed the budget numbers you sent over.\\nCan we set up a quick call to discuss some potential adjustments?\",\n    },\n    {\n      name: \"Michael Wilson\",\n      email: \"michaelwilson@example.com\",\n      subject: \"Important Announcement\",\n      date: \"1 week ago\",\n      teaser:\n        \"Please join us for an all-hands meeting this Friday at 3 PM.\\nWe have some exciting news to share about the company's future.\",\n    },\n    {\n      name: \"Sarah Brown\",\n      email: \"sarahbrown@example.com\",\n      subject: \"Re: Feedback on Proposal\",\n      date: \"1 week ago\",\n      teaser:\n        \"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\nCould we schedule a meeting to discuss my feedback in detail?\",\n    },\n    {\n      name: \"David Lee\",\n      email: \"davidlee@example.com\",\n      subject: \"New Project Idea\",\n      date: \"1 week ago\",\n      teaser:\n        \"I've been brainstorming and came up with an interesting project concept.\\nDo you have time this week to discuss its potential impact and feasibility?\",\n    },\n    {\n      name: \"Olivia Wilson\",\n      email: \"oliviawilson@example.com\",\n      subject: \"Vacation Plans\",\n      date: \"1 week ago\",\n      teaser:\n        \"Just a heads up that I'll be taking a two-week vacation next month.\\nI'll make sure all my projects are up to date before I leave.\",\n    },\n    {\n      name: \"James Martin\",\n      email: \"jamesmartin@example.com\",\n      subject: \"Re: Conference Registration\",\n      date: \"1 week ago\",\n      teaser:\n        \"I've completed the registration for the upcoming tech conference.\\nLet me know if you need any additional information from my end.\",\n    },\n    {\n      name: \"Sophia White\",\n      email: \"sophiawhite@example.com\",\n      subject: \"Team Dinner\",\n      date: \"1 week ago\",\n      teaser:\n        \"To celebrate our recent project success, I'd like to organize a team dinner.\\nAre you available next Friday evening? Please let me know your preferences.\",\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  // Note: I'm using state to show active item.\n  // IRL you should use the url/router.\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\n  const [mails, setMails] = React.useState(data.mails)\n  const { setOpen } = useSidebar()\n\n  return (\n    <Sidebar\n      collapsible=\"icon\"\n      className=\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\"\n      {...props}\n    >\n      {/* This is the first sidebar */}\n      {/* We disable collapsible and adjust width to icon. */}\n      {/* This will make the sidebar appear as icons. */}\n      <Sidebar\n        collapsible=\"none\"\n        className=\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\"\n      >\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <SidebarMenuButton size=\"lg\" asChild className=\"md:h-8 md:p-0\">\n                <a href=\"#\">\n                  <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                    <IconPlaceholder\n                      lucide=\"TerminalIcon\"\n                      tabler=\"IconCommand\"\n                      hugeicons=\"CommandIcon\"\n                      phosphor=\"CommandIcon\"\n                      remixicon=\"RiCommandLine\"\n                      className=\"size-4\"\n                    />\n                  </div>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">Acme Inc</span>\n                    <span className=\"truncate text-xs\">Enterprise</span>\n                  </div>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent className=\"px-1.5 md:px-0\">\n              <SidebarMenu>\n                {data.navMain.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton\n                      tooltip={{\n                        children: item.title,\n                        hidden: false,\n                      }}\n                      onClick={() => {\n                        setActiveItem(item)\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\n                        setMails(\n                          mail.slice(\n                            0,\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\n                          )\n                        )\n                        setOpen(true)\n                      }}\n                      isActive={activeItem?.title === item.title}\n                      className=\"px-2.5 md:px-2\"\n                    >\n                      {item.icon}\n                      <span>{item.title}</span>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <NavUser user={data.user} />\n        </SidebarFooter>\n      </Sidebar>\n\n      {/* This is the second sidebar */}\n      {/* We disable collapsible and let it fill remaining space */}\n      <Sidebar collapsible=\"none\" className=\"hidden flex-1 md:flex\">\n        <SidebarHeader className=\"gap-3.5 border-b p-4\">\n          <div className=\"flex w-full items-center justify-between\">\n            <div className=\"text-base font-medium text-foreground\">\n              {activeItem?.title}\n            </div>\n            <Label className=\"flex items-center gap-2 text-sm\">\n              <span>Unreads</span>\n              <Switch className=\"shadow-none\" />\n            </Label>\n          </div>\n          <SidebarInput placeholder=\"Type to search...\" />\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup className=\"px-0\">\n            <SidebarGroupContent>\n              {mails.map((mail) => (\n                <a\n                  href=\"#\"\n                  key={mail.email}\n                  className=\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n                >\n                  <div className=\"flex w-full items-center gap-2\">\n                    <span>{mail.name}</span>{\" \"}\n                    <span className=\"ml-auto text-xs\">{mail.date}</span>\n                  </div>\n                  <span className=\"font-medium\">{mail.subject}</span>\n                  <span className=\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\">\n                    {mail.teaser}\n                  </span>\n                </a>\n              ))}\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-09/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto size-4\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-09/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-09/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"350px\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">All Inboxes</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          {Array.from({ length: 24 }).map((_, index) => (\n            <div\n              key={index}\n              className=\"aspect-video h-12 w-full rounded-lg bg-muted/50\"\n            />\n          ))}\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-10/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavFavorites } from \"@/registry/bases/radix/blocks/sidebar-10/components/nav-favorites\"\nimport { NavMain } from \"@/registry/bases/radix/blocks/sidebar-10/components/nav-main\"\nimport { NavSecondary } from \"@/registry/bases/radix/blocks/sidebar-10/components/nav-secondary\"\nimport { NavWorkspaces } from \"@/registry/bases/radix/blocks/sidebar-10/components/nav-workspaces\"\nimport { TeamSwitcher } from \"@/registry/bases/radix/blocks/sidebar-10/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"AudioLinesIcon\"\n          tabler=\"IconWaveSine\"\n          hugeicons=\"AudioWave01Icon\"\n          phosphor=\"WaveformIcon\"\n          remixicon=\"RiPulseLine\"\n        />\n      ),\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SearchIcon\"\n          tabler=\"IconSearch\"\n          hugeicons=\"SearchIcon\"\n          phosphor=\"MagnifyingGlassIcon\"\n          remixicon=\"RiSearchLine\"\n        />\n      ),\n    },\n    {\n      title: \"Ask AI\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SparklesIcon\"\n          tabler=\"IconSparkles\"\n          hugeicons=\"SparklesIcon\"\n          phosphor=\"SparkleIcon\"\n          remixicon=\"RiSparklingLine\"\n        />\n      ),\n    },\n    {\n      title: \"Home\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"HomeIcon\"\n          tabler=\"IconHome\"\n          hugeicons=\"HomeIcon\"\n          phosphor=\"HouseIcon\"\n          remixicon=\"RiHomeLine\"\n        />\n      ),\n      isActive: true,\n    },\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"InboxIcon\"\n          tabler=\"IconInbox\"\n          hugeicons=\"InboxIcon\"\n          phosphor=\"TrayIcon\"\n          remixicon=\"RiInboxLine\"\n        />\n      ),\n      badge: \"10\",\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Calendar\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CalendarIcon\"\n          tabler=\"IconCalendar\"\n          hugeicons=\"CalendarIcon\"\n          phosphor=\"CalendarIcon\"\n          remixicon=\"RiCalendarLine\"\n        />\n      ),\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n    {\n      title: \"Templates\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BlocksIcon\"\n          tabler=\"IconCube\"\n          hugeicons=\"CubeIcon\"\n          phosphor=\"CubeIcon\"\n          remixicon=\"RiBox3Line\"\n        />\n      ),\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Trash2Icon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"Delete02Icon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n    },\n    {\n      title: \"Help\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MessageCircleQuestionIcon\"\n          tabler=\"IconMessageQuestion\"\n          hugeicons=\"MessageQuestionIcon\"\n          phosphor=\"ChatCircleIcon\"\n          remixicon=\"RiQuestionLine\"\n        />\n      ),\n    },\n  ],\n  favorites: [\n    {\n      name: \"Project Management & Task Tracking\",\n      url: \"#\",\n      emoji: \"📊\",\n    },\n    {\n      name: \"Family Recipe Collection & Meal Planning\",\n      url: \"#\",\n      emoji: \"🍳\",\n    },\n    {\n      name: \"Fitness Tracker & Workout Routines\",\n      url: \"#\",\n      emoji: \"💪\",\n    },\n    {\n      name: \"Book Notes & Reading List\",\n      url: \"#\",\n      emoji: \"📚\",\n    },\n    {\n      name: \"Sustainable Gardening Tips & Plant Care\",\n      url: \"#\",\n      emoji: \"🌱\",\n    },\n    {\n      name: \"Language Learning Progress & Resources\",\n      url: \"#\",\n      emoji: \"🗣️\",\n    },\n    {\n      name: \"Home Renovation Ideas & Budget Tracker\",\n      url: \"#\",\n      emoji: \"🏠\",\n    },\n    {\n      name: \"Personal Finance & Investment Portfolio\",\n      url: \"#\",\n      emoji: \"💰\",\n    },\n    {\n      name: \"Movie & TV Show Watchlist with Reviews\",\n      url: \"#\",\n      emoji: \"🎬\",\n    },\n    {\n      name: \"Daily Habit Tracker & Goal Setting\",\n      url: \"#\",\n      emoji: \"✅\",\n    },\n  ],\n  workspaces: [\n    {\n      name: \"Personal Life Management\",\n      emoji: \"🏠\",\n      pages: [\n        {\n          name: \"Daily Journal & Reflection\",\n          url: \"#\",\n          emoji: \"📔\",\n        },\n        {\n          name: \"Health & Wellness Tracker\",\n          url: \"#\",\n          emoji: \"🍏\",\n        },\n        {\n          name: \"Personal Growth & Learning Goals\",\n          url: \"#\",\n          emoji: \"🌟\",\n        },\n      ],\n    },\n    {\n      name: \"Professional Development\",\n      emoji: \"💼\",\n      pages: [\n        {\n          name: \"Career Objectives & Milestones\",\n          url: \"#\",\n          emoji: \"🎯\",\n        },\n        {\n          name: \"Skill Acquisition & Training Log\",\n          url: \"#\",\n          emoji: \"🧠\",\n        },\n        {\n          name: \"Networking Contacts & Events\",\n          url: \"#\",\n          emoji: \"🤝\",\n        },\n      ],\n    },\n    {\n      name: \"Creative Projects\",\n      emoji: \"🎨\",\n      pages: [\n        {\n          name: \"Writing Ideas & Story Outlines\",\n          url: \"#\",\n          emoji: \"✍️\",\n        },\n        {\n          name: \"Art & Design Portfolio\",\n          url: \"#\",\n          emoji: \"🖼️\",\n        },\n        {\n          name: \"Music Composition & Practice Log\",\n          url: \"#\",\n          emoji: \"🎵\",\n        },\n      ],\n    },\n    {\n      name: \"Home Management\",\n      emoji: \"🏡\",\n      pages: [\n        {\n          name: \"Household Budget & Expense Tracking\",\n          url: \"#\",\n          emoji: \"💰\",\n        },\n        {\n          name: \"Home Maintenance Schedule & Tasks\",\n          url: \"#\",\n          emoji: \"🔧\",\n        },\n        {\n          name: \"Family Calendar & Event Planning\",\n          url: \"#\",\n          emoji: \"📅\",\n        },\n      ],\n    },\n    {\n      name: \"Travel & Adventure\",\n      emoji: \"🧳\",\n      pages: [\n        {\n          name: \"Trip Planning & Itineraries\",\n          url: \"#\",\n          emoji: \"🗺️\",\n        },\n        {\n          name: \"Travel Bucket List & Inspiration\",\n          url: \"#\",\n          emoji: \"🌎\",\n        },\n        {\n          name: \"Travel Journal & Photo Gallery\",\n          url: \"#\",\n          emoji: \"📸\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar className=\"border-r-0\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n        <NavMain items={data.navMain} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavFavorites favorites={data.favorites} />\n        <NavWorkspaces workspaces={data.workspaces} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-10/components/nav-actions.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/bases/radix/ui/popover\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = [\n  [\n    {\n      label: \"Customize Page\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n    {\n      label: \"Turn into wiki\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FileTextIcon\"\n          tabler=\"IconFileText\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileTextIcon\"\n          remixicon=\"RiFileTextLine\"\n        />\n      ),\n    },\n  ],\n  [\n    {\n      label: \"Copy Link\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LinkIcon\"\n          tabler=\"IconLink\"\n          hugeicons=\"LinkIcon\"\n          phosphor=\"LinkIcon\"\n          remixicon=\"RiLinksLine\"\n        />\n      ),\n    },\n    {\n      label: \"Duplicate\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CopyIcon\"\n          tabler=\"IconCopy\"\n          hugeicons=\"Copy01Icon\"\n          phosphor=\"CopyIcon\"\n          remixicon=\"RiFileCopyLine\"\n        />\n      ),\n    },\n    {\n      label: \"Move to\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CornerUpRightIcon\"\n          tabler=\"IconCornerUpRight\"\n          hugeicons=\"RedoIcon\"\n          phosphor=\"ArrowBendUpRightIcon\"\n          remixicon=\"RiCornerUpRightLine\"\n        />\n      ),\n    },\n    {\n      label: \"Move to Trash\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Trash2Icon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"Delete02Icon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n    },\n  ],\n  [\n    {\n      label: \"Undo\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CornerUpLeftIcon\"\n          tabler=\"IconCornerUpLeft\"\n          hugeicons=\"UndoIcon\"\n          phosphor=\"ArrowBendUpLeftIcon\"\n          remixicon=\"RiCornerUpLeftLine\"\n        />\n      ),\n    },\n    {\n      label: \"View analytics\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ChartLineIcon\"\n          tabler=\"IconChartLine\"\n          hugeicons=\"ChartIcon\"\n          phosphor=\"ChartLineIcon\"\n          remixicon=\"RiLineChartLine\"\n        />\n      ),\n    },\n    {\n      label: \"Version History\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"GalleryVerticalEndIcon\"\n          tabler=\"IconLayoutRows\"\n          hugeicons=\"LayoutBottomIcon\"\n          phosphor=\"RowsIcon\"\n          remixicon=\"RiGalleryLine\"\n        />\n      ),\n    },\n    {\n      label: \"Show delete pages\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"TrashIcon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"DeleteIcon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n    },\n    {\n      label: \"Notifications\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BellIcon\"\n          tabler=\"IconBell\"\n          hugeicons=\"NotificationIcon\"\n          phosphor=\"BellIcon\"\n          remixicon=\"RiNotificationLine\"\n        />\n      ),\n    },\n  ],\n  [\n    {\n      label: \"Import\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ArrowUpIcon\"\n          tabler=\"IconArrowUp\"\n          hugeicons=\"ArrowUpIcon\"\n          phosphor=\"ArrowUpIcon\"\n          remixicon=\"RiArrowUpLine\"\n        />\n      ),\n    },\n    {\n      label: \"Export\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"ArrowDownIcon\"\n          tabler=\"IconArrowDown\"\n          hugeicons=\"ArrowDownIcon\"\n          phosphor=\"ArrowDownIcon\"\n          remixicon=\"RiArrowDownLine\"\n        />\n      ),\n    },\n  ],\n]\n\nexport function NavActions() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  React.useEffect(() => {\n    setIsOpen(true)\n  }, [])\n\n  return (\n    <div className=\"flex items-center gap-2 text-sm\">\n      <div className=\"hidden font-medium text-muted-foreground md:inline-block\">\n        Edit Oct 08\n      </div>\n      <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\">\n        <IconPlaceholder\n          lucide=\"StarIcon\"\n          tabler=\"IconStar\"\n          hugeicons=\"StarIcon\"\n          phosphor=\"StarIcon\"\n          remixicon=\"RiStarLine\"\n        />\n      </Button>\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\n        <PopoverTrigger asChild>\n          <Button\n            variant=\"ghost\"\n            size=\"icon\"\n            className=\"h-7 w-7 data-[state=open]:bg-accent\"\n          >\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent\n          className=\"w-56 overflow-hidden rounded-lg p-0\"\n          align=\"end\"\n        >\n          <Sidebar collapsible=\"none\" className=\"bg-transparent\">\n            <SidebarContent>\n              {data.map((group, index) => (\n                <SidebarGroup key={index} className=\"border-b last:border-none\">\n                  <SidebarGroupContent className=\"gap-0\">\n                    <SidebarMenu>\n                      {group.map((item, index) => (\n                        <SidebarMenuItem key={index}>\n                          <SidebarMenuButton>\n                            {item.icon} <span>{item.label}</span>\n                          </SidebarMenuButton>\n                        </SidebarMenuItem>\n                      ))}\n                    </SidebarMenu>\n                  </SidebarGroupContent>\n                </SidebarGroup>\n              ))}\n            </SidebarContent>\n          </Sidebar>\n        </PopoverContent>\n      </Popover>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-10/components/nav-favorites.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavFavorites({\n  favorites,\n}: {\n  favorites: {\n    name: string\n    url: string\n    emoji: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\n      <SidebarMenu>\n        {favorites.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url} title={item.name}>\n                <span>{item.emoji}</span>\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"aria-expanded:bg-muted\"\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-56 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"StarOffIcon\"\n                    tabler=\"IconStarOff\"\n                    hugeicons=\"StarOffIcon\"\n                    phosphor=\"StarIcon\"\n                    remixicon=\"RiStarOffLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Remove from Favorites</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"LinkIcon\"\n                    tabler=\"IconLink\"\n                    hugeicons=\"LinkIcon\"\n                    phosphor=\"LinkIcon\"\n                    remixicon=\"RiLinksLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Copy Link</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ArrowUpRightIcon\"\n                    tabler=\"IconArrowUpRight\"\n                    hugeicons=\"ArrowUpRightIcon\"\n                    phosphor=\"ArrowUpRightIcon\"\n                    remixicon=\"RiArrowRightUpLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Open in New Tab</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-10/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    isActive?: boolean\n  }[]\n}) {\n  return (\n    <SidebarMenu>\n      {items.map((item) => (\n        <SidebarMenuItem key={item.title}>\n          <SidebarMenuButton asChild isActive={item.isActive}>\n            <a href={item.url}>\n              {item.icon}\n              <span>{item.title}</span>\n            </a>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-10/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    badge?: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild>\n                <a href={item.url}>\n                  {item.icon}\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-10/components/nav-workspaces.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavWorkspaces({\n  workspaces,\n}: {\n  workspaces: {\n    name: string\n    emoji: React.ReactNode\n    pages: {\n      name: string\n      emoji: React.ReactNode\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {workspaces.map((workspace) => (\n            <Collapsible key={workspace.name}>\n              <SidebarMenuItem>\n                <SidebarMenuButton asChild>\n                  <a href=\"#\">\n                    <span>{workspace.emoji}</span>\n                    <span>{workspace.name}</span>\n                  </a>\n                </SidebarMenuButton>\n                <CollapsibleTrigger asChild>\n                  <SidebarMenuAction\n                    className=\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\"\n                    showOnHover\n                  >\n                    <IconPlaceholder\n                      lucide=\"ChevronRightIcon\"\n                      tabler=\"IconChevronRight\"\n                      hugeicons=\"ArrowRight01Icon\"\n                      phosphor=\"CaretRightIcon\"\n                      remixicon=\"RiArrowRightSLine\"\n                    />\n                  </SidebarMenuAction>\n                </CollapsibleTrigger>\n                <SidebarMenuAction showOnHover>\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                </SidebarMenuAction>\n                <CollapsibleContent>\n                  <SidebarMenuSub>\n                    {workspace.pages.map((page) => (\n                      <SidebarMenuSubItem key={page.name}>\n                        <SidebarMenuSubButton asChild>\n                          <a href=\"#\">\n                            <span>{page.emoji}</span>\n                            <span>{page.name}</span>\n                          </a>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                </CollapsibleContent>\n              </SidebarMenuItem>\n            </Collapsible>\n          ))}\n          <SidebarMenuItem>\n            <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n              <IconPlaceholder\n                lucide=\"MoreHorizontalIcon\"\n                tabler=\"IconDots\"\n                hugeicons=\"MoreHorizontalCircle01Icon\"\n                phosphor=\"DotsThreeOutlineIcon\"\n                remixicon=\"RiMoreLine\"\n              />\n              <span>More</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-10/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ReactNode\n    plan: string\n  }[]\n}) {\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n\n  if (!activeTeam) {\n    return null\n  }\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton className=\"w-fit px-1.5\">\n              <div className=\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\">\n                {activeTeam.logo}\n              </div>\n              <span className=\"truncate font-medium\">{activeTeam.name}</span>\n              <IconPlaceholder\n                lucide=\"ChevronDownIcon\"\n                tabler=\"IconChevronDown\"\n                hugeicons=\"ArrowDown01Icon\"\n                phosphor=\"CaretDownIcon\"\n                remixicon=\"RiArrowDownSLine\"\n                className=\"opacity-50\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-64 rounded-lg\"\n            align=\"start\"\n            side=\"bottom\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n              Teams\n            </DropdownMenuLabel>\n            {teams.map((team, index) => (\n              <DropdownMenuItem\n                key={team.name}\n                onClick={() => setActiveTeam(team)}\n                className=\"gap-2 p-2\"\n              >\n                <div className=\"flex size-6 items-center justify-center rounded-xs border\">\n                  {team.logo}\n                </div>\n                {team.name}\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n              </DropdownMenuItem>\n            ))}\n            <DropdownMenuSeparator />\n            <DropdownMenuItem className=\"gap-2 p-2\">\n              <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n                <IconPlaceholder\n                  lucide=\"PlusIcon\"\n                  tabler=\"IconPlus\"\n                  hugeicons=\"PlusSignIcon\"\n                  phosphor=\"PlusIcon\"\n                  remixicon=\"RiAddLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"font-medium text-muted-foreground\">Add team</div>\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-10/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-10/components/app-sidebar\"\nimport { NavActions } from \"@/registry/bases/radix/blocks/sidebar-10/components/nav-actions\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-14 shrink-0 items-center gap-2\">\n          <div className=\"flex flex-1 items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem>\n                  <BreadcrumbPage className=\"line-clamp-1\">\n                    Project Management & Task Tracking\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n          <div className=\"ml-auto px-3\">\n            <NavActions />\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 px-4 py-10\">\n          <div className=\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\" />\n          <div className=\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-11/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  changes: [\n    {\n      file: \"README.md\",\n      state: \"M\",\n    },\n    {\n      file: \"api/hello/route.ts\",\n      state: \"U\",\n    },\n    {\n      file: \"app/layout.tsx\",\n      state: \"M\",\n    },\n  ],\n  tree: [\n    [\n      \"app\",\n      [\n        \"api\",\n        [\"hello\", [\"route.ts\"]],\n        \"page.tsx\",\n        \"layout.tsx\",\n        [\"blog\", [\"page.tsx\"]],\n      ],\n    ],\n    [\n      \"components\",\n      [\"ui\", \"button.tsx\", \"card.tsx\"],\n      \"header.tsx\",\n      \"footer.tsx\",\n    ],\n    [\"lib\", [\"util.ts\"]],\n    [\"public\", \"favicon.ico\", \"vercel.svg\"],\n    \".eslintrc.json\",\n    \".gitignore\",\n    \"next.config.js\",\n    \"tailwind.config.js\",\n    \"package.json\",\n    \"README.md\",\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.changes.map((item, index) => (\n                <SidebarMenuItem key={index}>\n                  <SidebarMenuButton>\n                    <IconPlaceholder\n                      lucide=\"FileIcon\"\n                      tabler=\"IconFile\"\n                      hugeicons=\"FileIcon\"\n                      phosphor=\"FileIcon\"\n                      remixicon=\"RiFileLine\"\n                    />\n                    {item.file}\n                  </SidebarMenuButton>\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\n                </SidebarMenuItem>\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n        <SidebarGroup>\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.tree.map((item, index) => (\n                <Tree key={index} item={item} />\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n\ntype TreeItem = string | TreeItem[]\n\nfunction Tree({ item }: { item: TreeItem }) {\n  const [name, ...items] = Array.isArray(item) ? item : [item]\n\n  if (!items.length) {\n    return (\n      <SidebarMenuButton\n        isActive={name === \"button.tsx\"}\n        className=\"data-[active=true]:bg-transparent\"\n      >\n        <IconPlaceholder\n          lucide=\"FileIcon\"\n          tabler=\"IconFile\"\n          hugeicons=\"FileIcon\"\n          phosphor=\"FileIcon\"\n          remixicon=\"RiFileLine\"\n        />\n        {name}\n      </SidebarMenuButton>\n    )\n  }\n\n  return (\n    <SidebarMenuItem>\n      <Collapsible\n        className=\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\"\n        defaultOpen={name === \"components\" || name === \"ui\"}\n      >\n        <CollapsibleTrigger asChild>\n          <SidebarMenuButton>\n            <IconPlaceholder\n              lucide=\"ChevronRightIcon\"\n              tabler=\"IconChevronRight\"\n              hugeicons=\"ArrowRight01Icon\"\n              phosphor=\"CaretRightIcon\"\n              remixicon=\"RiArrowRightSLine\"\n              className=\"transition-transform\"\n            />\n            <IconPlaceholder\n              lucide=\"FolderIcon\"\n              tabler=\"IconFolder\"\n              hugeicons=\"FolderIcon\"\n              phosphor=\"FolderIcon\"\n              remixicon=\"RiFolderLine\"\n            />\n            {name}\n          </SidebarMenuButton>\n        </CollapsibleTrigger>\n        <CollapsibleContent>\n          <SidebarMenuSub>\n            {items.map((subItem, index) => (\n              <Tree key={index} item={subItem} />\n            ))}\n          </SidebarMenuSub>\n        </CollapsibleContent>\n      </Collapsible>\n    </SidebarMenuItem>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-11/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-11/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">components</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">ui</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-12/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Calendars } from \"@/registry/bases/radix/blocks/sidebar-12/components/calendars\"\nimport { DatePicker } from \"@/registry/bases/radix/blocks/sidebar-12/components/date-picker\"\nimport { NavUser } from \"@/registry/bases/radix/blocks/sidebar-12/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n  SidebarSeparator,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  calendars: [\n    {\n      name: \"My Calendars\",\n      items: [\"Personal\", \"Work\", \"Family\"],\n    },\n    {\n      name: \"Favorites\",\n      items: [\"Holidays\", \"Birthdays\"],\n    },\n    {\n      name: \"Other\",\n      items: [\"Travel\", \"Reminders\", \"Deadlines\"],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader className=\"h-16 border-b border-sidebar-border\">\n        <NavUser user={data.user} />\n      </SidebarHeader>\n      <SidebarContent>\n        <DatePicker />\n        <SidebarSeparator className=\"mx-0\" />\n        <Calendars calendars={data.calendars} />\n      </SidebarContent>\n      <SidebarFooter>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton>\n              <IconPlaceholder\n                lucide=\"PlusIcon\"\n                tabler=\"IconPlus\"\n                hugeicons=\"PlusSignIcon\"\n                phosphor=\"PlusIcon\"\n                remixicon=\"RiAddLine\"\n              />\n              <span>New Calendar</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-12/components/calendars.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarSeparator,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function Calendars({\n  calendars,\n}: {\n  calendars: {\n    name: string\n    items: string[]\n  }[]\n}) {\n  return (\n    <>\n      {calendars.map((calendar, index) => (\n        <React.Fragment key={calendar.name}>\n          <SidebarGroup key={calendar.name}>\n            <Collapsible\n              defaultOpen={index === 0}\n              className=\"group/collapsible\"\n            >\n              <SidebarGroupLabel\n                asChild\n                className=\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                <CollapsibleTrigger>\n                  {calendar.name}{\" \"}\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                    className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\"\n                  />\n                </CollapsibleTrigger>\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {calendar.items.map((item, index) => (\n                      <SidebarMenuItem key={item}>\n                        <SidebarMenuButton>\n                          <div\n                            data-active={index < 2}\n                            className=\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\"\n                          >\n                            <IconPlaceholder\n                              lucide=\"CheckIcon\"\n                              tabler=\"IconCheck\"\n                              hugeicons=\"Tick02Icon\"\n                              phosphor=\"CheckIcon\"\n                              remixicon=\"RiCheckLine\"\n                              className=\"hidden size-3 group-data-[active=true]/calendar-item:block\"\n                            />\n                          </div>\n                          {item}\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </Collapsible>\n          </SidebarGroup>\n          <SidebarSeparator className=\"mx-0\" />\n        </React.Fragment>\n      ))}\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-12/components/date-picker.tsx",
    "content": "import * as React from \"react\"\n\nimport { Calendar } from \"@/registry/bases/radix/ui/calendar\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function DatePicker() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n  return (\n    <SidebarGroup className=\"px-0\">\n      <SidebarGroupContent>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          captionLayout=\"dropdown\"\n          className=\"bg-transparent [--cell-size:2.1rem]\"\n        />\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-12/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto size-4\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"start\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-12/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-12/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem>\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-5\">\n            {Array.from({ length: 20 }).map((_, i) => (\n              <div key={i} className=\"aspect-square rounded-xl bg-muted/50\" />\n            ))}\n          </div>\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-13/components/settings-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = {\n  nav: [\n    {\n      name: \"Notifications\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BellIcon\"\n          tabler=\"IconBell\"\n          hugeicons=\"NotificationIcon\"\n          phosphor=\"BellIcon\"\n          remixicon=\"RiNotificationLine\"\n        />\n      ),\n    },\n    {\n      name: \"Navigation\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MenuIcon\"\n          tabler=\"IconMenu\"\n          hugeicons=\"Menu09Icon\"\n          phosphor=\"ListIcon\"\n          remixicon=\"RiMenuLine\"\n        />\n      ),\n    },\n    {\n      name: \"Home\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"HomeIcon\"\n          tabler=\"IconHome\"\n          hugeicons=\"HomeIcon\"\n          phosphor=\"HouseIcon\"\n          remixicon=\"RiHomeLine\"\n        />\n      ),\n    },\n    {\n      name: \"Appearance\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"PaintbrushIcon\"\n          tabler=\"IconPalette\"\n          hugeicons=\"PaintBoardIcon\"\n          phosphor=\"PaletteIcon\"\n          remixicon=\"RiPaletteLine\"\n        />\n      ),\n    },\n    {\n      name: \"Messages & media\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MessageCircleIcon\"\n          tabler=\"IconMessageQuestion\"\n          hugeicons=\"MessageIcon\"\n          phosphor=\"ChatCircleIcon\"\n          remixicon=\"RiChat1Line\"\n        />\n      ),\n    },\n    {\n      name: \"Language & region\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"GlobeIcon\"\n          tabler=\"IconWorld\"\n          hugeicons=\"Globe02Icon\"\n          phosphor=\"GlobeIcon\"\n          remixicon=\"RiGlobalLine\"\n        />\n      ),\n    },\n    {\n      name: \"Accessibility\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"KeyboardIcon\"\n          tabler=\"IconKeyboard\"\n          hugeicons=\"KeyboardIcon\"\n          phosphor=\"KeyboardIcon\"\n          remixicon=\"RiKeyboardLine\"\n        />\n      ),\n    },\n    {\n      name: \"Mark as read\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CheckIcon\"\n          tabler=\"IconCheck\"\n          hugeicons=\"Tick02Icon\"\n          phosphor=\"CheckIcon\"\n          remixicon=\"RiCheckLine\"\n        />\n      ),\n    },\n    {\n      name: \"Audio & video\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"VideoIcon\"\n          tabler=\"IconVideoPlus\"\n          hugeicons=\"RecordIcon\"\n          phosphor=\"VideoIcon\"\n          remixicon=\"RiVideoLine\"\n        />\n      ),\n    },\n    {\n      name: \"Connected accounts\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LinkIcon\"\n          tabler=\"IconLink\"\n          hugeicons=\"LinkIcon\"\n          phosphor=\"LinkIcon\"\n          remixicon=\"RiLinksLine\"\n        />\n      ),\n    },\n    {\n      name: \"Privacy & visibility\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LockIcon\"\n          tabler=\"IconLock\"\n          hugeicons=\"ShieldIcon\"\n          phosphor=\"LockIcon\"\n          remixicon=\"RiLockLine\"\n        />\n      ),\n    },\n    {\n      name: \"Advanced\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SettingsIcon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"SettingsIcon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n  ],\n}\n\nexport function SettingsDialog() {\n  const [open, setOpen] = React.useState(true)\n\n  return (\n    <Dialog open={open} onOpenChange={setOpen}>\n      <DialogTrigger asChild>\n        <Button size=\"sm\">Open Dialog</Button>\n      </DialogTrigger>\n      <DialogContent className=\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\">\n        <DialogTitle className=\"sr-only\">Settings</DialogTitle>\n        <DialogDescription className=\"sr-only\">\n          Customize your settings here.\n        </DialogDescription>\n        <SidebarProvider className=\"items-start\">\n          <Sidebar collapsible=\"none\" className=\"hidden md:flex\">\n            <SidebarContent>\n              <SidebarGroup>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {data.nav.map((item) => (\n                      <SidebarMenuItem key={item.name}>\n                        <SidebarMenuButton\n                          asChild\n                          isActive={item.name === \"Messages & media\"}\n                        >\n                          <a href=\"#\">\n                            {item.icon}\n                            <span>{item.name}</span>\n                          </a>\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </SidebarGroup>\n            </SidebarContent>\n          </Sidebar>\n          <main className=\"flex h-[480px] flex-1 flex-col overflow-hidden\">\n            <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n              <div className=\"flex items-center gap-2 px-4\">\n                <Breadcrumb>\n                  <BreadcrumbList>\n                    <BreadcrumbItem className=\"hidden md:block\">\n                      <BreadcrumbLink href=\"#\">Settings</BreadcrumbLink>\n                    </BreadcrumbItem>\n                    <BreadcrumbSeparator className=\"hidden md:block\" />\n                    <BreadcrumbItem>\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\n                    </BreadcrumbItem>\n                  </BreadcrumbList>\n                </Breadcrumb>\n              </div>\n            </header>\n            <div className=\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\">\n              {Array.from({ length: 10 }).map((_, i) => (\n                <div\n                  key={i}\n                  className=\"aspect-video max-w-3xl rounded-xl bg-muted/50\"\n                />\n              ))}\n            </div>\n          </main>\n        </SidebarProvider>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-13/page.tsx",
    "content": "import { SettingsDialog } from \"@/registry/bases/radix/blocks/sidebar-13/components/settings-dialog\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex h-svh items-center justify-center\">\n      <SettingsDialog />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-14/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <SidebarMenuItem key={item.title}>\n                  <SidebarMenuButton asChild>\n                    <a href={item.url} className=\"font-medium\">\n                      {item.title}\n                    </a>\n                  </SidebarMenuButton>\n                  {item.items?.length ? (\n                    <SidebarMenuSub>\n                      {item.items.map((item) => (\n                        <SidebarMenuSubItem key={item.title}>\n                          <SidebarMenuSubButton\n                            asChild\n                            isActive={item.isActive}\n                          >\n                            <a href={item.url}>{item.title}</a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  ) : null}\n                </SidebarMenuItem>\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-14/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-14/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n          <SidebarTrigger className=\"-mr-1 ml-auto rotate-180\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n      <AppSidebar side=\"right\" />\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/calendars.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarSeparator,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function Calendars({\n  calendars,\n}: {\n  calendars: {\n    name: string\n    items: string[]\n  }[]\n}) {\n  return (\n    <>\n      {calendars.map((calendar, index) => (\n        <React.Fragment key={calendar.name}>\n          <SidebarGroup key={calendar.name}>\n            <Collapsible\n              defaultOpen={index === 0}\n              className=\"group/collapsible\"\n            >\n              <SidebarGroupLabel\n                asChild\n                className=\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                <CollapsibleTrigger>\n                  {calendar.name}{\" \"}\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                    className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\"\n                  />\n                </CollapsibleTrigger>\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {calendar.items.map((item, index) => (\n                      <SidebarMenuItem key={item}>\n                        <SidebarMenuButton>\n                          <div\n                            data-active={index < 2}\n                            className=\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\"\n                          >\n                            <IconPlaceholder\n                              lucide=\"CheckIcon\"\n                              tabler=\"IconCheck\"\n                              hugeicons=\"Tick02Icon\"\n                              phosphor=\"CheckIcon\"\n                              remixicon=\"RiCheckLine\"\n                              className=\"hidden size-3 group-data-[active=true]/calendar-item:block\"\n                            />\n                          </div>\n                          {item}\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </Collapsible>\n          </SidebarGroup>\n          <SidebarSeparator className=\"mx-0\" />\n        </React.Fragment>\n      ))}\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/date-picker.tsx",
    "content": "import * as React from \"react\"\n\nimport { Calendar } from \"@/registry/bases/radix/ui/calendar\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function DatePicker() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n  return (\n    <SidebarGroup className=\"px-0\">\n      <SidebarGroupContent>\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          captionLayout=\"dropdown\"\n          className=\"bg-transparent [--cell-size:2.1rem]\"\n        />\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/nav-favorites.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavFavorites({\n  favorites,\n}: {\n  favorites: {\n    name: string\n    url: string\n    emoji: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\n      <SidebarMenu>\n        {favorites.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url} title={item.name}>\n                <span>{item.emoji}</span>\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"aria-expanded:bg-muted\"\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-56 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"StarOffIcon\"\n                    tabler=\"IconStarOff\"\n                    hugeicons=\"StarOffIcon\"\n                    phosphor=\"StarIcon\"\n                    remixicon=\"RiStarOffLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Remove from Favorites</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"LinkIcon\"\n                    tabler=\"IconLink\"\n                    hugeicons=\"LinkIcon\"\n                    phosphor=\"LinkIcon\"\n                    remixicon=\"RiLinksLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Copy Link</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ArrowUpRightIcon\"\n                    tabler=\"IconArrowUpRight\"\n                    hugeicons=\"ArrowUpRightIcon\"\n                    phosphor=\"ArrowUpRightIcon\"\n                    remixicon=\"RiArrowRightUpLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Open in New Tab</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    isActive?: boolean\n  }[]\n}) {\n  return (\n    <SidebarMenu>\n      {items.map((item) => (\n        <SidebarMenuItem key={item.title}>\n          <SidebarMenuButton asChild isActive={item.isActive}>\n            <a href={item.url}>\n              {item.icon}\n              <span>{item.title}</span>\n            </a>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    badge?: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild>\n                <a href={item.url}>\n                  {item.icon}\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto size-4\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"start\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/nav-workspaces.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavWorkspaces({\n  workspaces,\n}: {\n  workspaces: {\n    name: string\n    emoji: React.ReactNode\n    pages: {\n      name: string\n      emoji: React.ReactNode\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {workspaces.map((workspace) => (\n            <Collapsible key={workspace.name}>\n              <SidebarMenuItem>\n                <SidebarMenuButton asChild>\n                  <a href=\"#\">\n                    <span>{workspace.emoji}</span>\n                    <span>{workspace.name}</span>\n                  </a>\n                </SidebarMenuButton>\n                <CollapsibleTrigger asChild>\n                  <SidebarMenuAction\n                    className=\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\"\n                    showOnHover\n                  >\n                    <IconPlaceholder\n                      lucide=\"ChevronRightIcon\"\n                      tabler=\"IconChevronRight\"\n                      hugeicons=\"ArrowRight01Icon\"\n                      phosphor=\"CaretRightIcon\"\n                      remixicon=\"RiArrowRightSLine\"\n                    />\n                  </SidebarMenuAction>\n                </CollapsibleTrigger>\n                <SidebarMenuAction showOnHover>\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                </SidebarMenuAction>\n                <CollapsibleContent>\n                  <SidebarMenuSub>\n                    {workspace.pages.map((page) => (\n                      <SidebarMenuSubItem key={page.name}>\n                        <SidebarMenuSubButton asChild>\n                          <a href=\"#\">\n                            <span>{page.emoji}</span>\n                            <span>{page.name}</span>\n                          </a>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                </CollapsibleContent>\n              </SidebarMenuItem>\n            </Collapsible>\n          ))}\n          <SidebarMenuItem>\n            <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n              <IconPlaceholder\n                lucide=\"MoreHorizontalIcon\"\n                tabler=\"IconDots\"\n                hugeicons=\"MoreHorizontalCircle01Icon\"\n                phosphor=\"DotsThreeOutlineIcon\"\n                remixicon=\"RiMoreLine\"\n              />\n              <span>More</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/sidebar-left.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavFavorites } from \"@/registry/bases/radix/blocks/sidebar-15/components/nav-favorites\"\nimport { NavMain } from \"@/registry/bases/radix/blocks/sidebar-15/components/nav-main\"\nimport { NavSecondary } from \"@/registry/bases/radix/blocks/sidebar-15/components/nav-secondary\"\nimport { NavWorkspaces } from \"@/registry/bases/radix/blocks/sidebar-15/components/nav-workspaces\"\nimport { TeamSwitcher } from \"@/registry/bases/radix/blocks/sidebar-15/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"AudioLinesIcon\"\n          tabler=\"IconWaveSine\"\n          hugeicons=\"AudioWave01Icon\"\n          phosphor=\"WaveformIcon\"\n          remixicon=\"RiPulseLine\"\n        />\n      ),\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: (\n        <IconPlaceholder\n          lucide=\"TerminalIcon\"\n          tabler=\"IconCommand\"\n          hugeicons=\"CommandIcon\"\n          phosphor=\"CommandIcon\"\n          remixicon=\"RiCommandLine\"\n        />\n      ),\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SearchIcon\"\n          tabler=\"IconSearch\"\n          hugeicons=\"SearchIcon\"\n          phosphor=\"MagnifyingGlassIcon\"\n          remixicon=\"RiSearchLine\"\n        />\n      ),\n    },\n    {\n      title: \"Ask AI\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SparklesIcon\"\n          tabler=\"IconSparkles\"\n          hugeicons=\"SparklesIcon\"\n          phosphor=\"SparkleIcon\"\n          remixicon=\"RiSparklingLine\"\n        />\n      ),\n    },\n    {\n      title: \"Home\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"HomeIcon\"\n          tabler=\"IconHome\"\n          hugeicons=\"HomeIcon\"\n          phosphor=\"HouseIcon\"\n          remixicon=\"RiHomeLine\"\n        />\n      ),\n      isActive: true,\n    },\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"InboxIcon\"\n          tabler=\"IconInbox\"\n          hugeicons=\"InboxIcon\"\n          phosphor=\"TrayIcon\"\n          remixicon=\"RiInboxLine\"\n        />\n      ),\n      badge: \"10\",\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Calendar\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"CalendarIcon\"\n          tabler=\"IconCalendar\"\n          hugeicons=\"CalendarIcon\"\n          phosphor=\"CalendarIcon\"\n          remixicon=\"RiCalendarLine\"\n        />\n      ),\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n    },\n    {\n      title: \"Templates\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BlocksIcon\"\n          tabler=\"IconCube\"\n          hugeicons=\"CubeIcon\"\n          phosphor=\"CubeIcon\"\n          remixicon=\"RiBox3Line\"\n        />\n      ),\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Trash2Icon\"\n          tabler=\"IconTrash\"\n          hugeicons=\"Delete02Icon\"\n          phosphor=\"TrashIcon\"\n          remixicon=\"RiDeleteBinLine\"\n        />\n      ),\n    },\n    {\n      title: \"Help\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MessageCircleQuestionIcon\"\n          tabler=\"IconMessageQuestion\"\n          hugeicons=\"MessageQuestionIcon\"\n          phosphor=\"ChatCircleIcon\"\n          remixicon=\"RiQuestionLine\"\n        />\n      ),\n    },\n  ],\n  favorites: [\n    {\n      name: \"Project Management & Task Tracking\",\n      url: \"#\",\n      emoji: \"📊\",\n    },\n    {\n      name: \"Family Recipe Collection & Meal Planning\",\n      url: \"#\",\n      emoji: \"🍳\",\n    },\n    {\n      name: \"Fitness Tracker & Workout Routines\",\n      url: \"#\",\n      emoji: \"💪\",\n    },\n    {\n      name: \"Book Notes & Reading List\",\n      url: \"#\",\n      emoji: \"📚\",\n    },\n    {\n      name: \"Sustainable Gardening Tips & Plant Care\",\n      url: \"#\",\n      emoji: \"🌱\",\n    },\n    {\n      name: \"Language Learning Progress & Resources\",\n      url: \"#\",\n      emoji: \"🗣️\",\n    },\n    {\n      name: \"Home Renovation Ideas & Budget Tracker\",\n      url: \"#\",\n      emoji: \"🏠\",\n    },\n    {\n      name: \"Personal Finance & Investment Portfolio\",\n      url: \"#\",\n      emoji: \"💰\",\n    },\n    {\n      name: \"Movie & TV Show Watchlist with Reviews\",\n      url: \"#\",\n      emoji: \"🎬\",\n    },\n    {\n      name: \"Daily Habit Tracker & Goal Setting\",\n      url: \"#\",\n      emoji: \"✅\",\n    },\n  ],\n  workspaces: [\n    {\n      name: \"Personal Life Management\",\n      emoji: \"🏠\",\n      pages: [\n        {\n          name: \"Daily Journal & Reflection\",\n          url: \"#\",\n          emoji: \"📔\",\n        },\n        {\n          name: \"Health & Wellness Tracker\",\n          url: \"#\",\n          emoji: \"🍏\",\n        },\n        {\n          name: \"Personal Growth & Learning Goals\",\n          url: \"#\",\n          emoji: \"🌟\",\n        },\n      ],\n    },\n    {\n      name: \"Professional Development\",\n      emoji: \"💼\",\n      pages: [\n        {\n          name: \"Career Objectives & Milestones\",\n          url: \"#\",\n          emoji: \"🎯\",\n        },\n        {\n          name: \"Skill Acquisition & Training Log\",\n          url: \"#\",\n          emoji: \"🧠\",\n        },\n        {\n          name: \"Networking Contacts & Events\",\n          url: \"#\",\n          emoji: \"🤝\",\n        },\n      ],\n    },\n    {\n      name: \"Creative Projects\",\n      emoji: \"🎨\",\n      pages: [\n        {\n          name: \"Writing Ideas & Story Outlines\",\n          url: \"#\",\n          emoji: \"✍️\",\n        },\n        {\n          name: \"Art & Design Portfolio\",\n          url: \"#\",\n          emoji: \"🖼️\",\n        },\n        {\n          name: \"Music Composition & Practice Log\",\n          url: \"#\",\n          emoji: \"🎵\",\n        },\n      ],\n    },\n    {\n      name: \"Home Management\",\n      emoji: \"🏡\",\n      pages: [\n        {\n          name: \"Household Budget & Expense Tracking\",\n          url: \"#\",\n          emoji: \"💰\",\n        },\n        {\n          name: \"Home Maintenance Schedule & Tasks\",\n          url: \"#\",\n          emoji: \"🔧\",\n        },\n        {\n          name: \"Family Calendar & Event Planning\",\n          url: \"#\",\n          emoji: \"📅\",\n        },\n      ],\n    },\n    {\n      name: \"Travel & Adventure\",\n      emoji: \"🧳\",\n      pages: [\n        {\n          name: \"Trip Planning & Itineraries\",\n          url: \"#\",\n          emoji: \"🗺️\",\n        },\n        {\n          name: \"Travel Bucket List & Inspiration\",\n          url: \"#\",\n          emoji: \"🌎\",\n        },\n        {\n          name: \"Travel Journal & Photo Gallery\",\n          url: \"#\",\n          emoji: \"📸\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function SidebarLeft({\n  ...props\n}: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar className=\"border-r-0\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n        <NavMain items={data.navMain} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavFavorites favorites={data.favorites} />\n        <NavWorkspaces workspaces={data.workspaces} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/sidebar-right.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Calendars } from \"@/registry/bases/radix/blocks/sidebar-15/components/calendars\"\nimport { DatePicker } from \"@/registry/bases/radix/blocks/sidebar-15/components/date-picker\"\nimport { NavUser } from \"@/registry/bases/radix/blocks/sidebar-15/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n  SidebarSeparator,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  calendars: [\n    {\n      name: \"My Calendars\",\n      items: [\"Personal\", \"Work\", \"Family\"],\n    },\n    {\n      name: \"Favorites\",\n      items: [\"Holidays\", \"Birthdays\"],\n    },\n    {\n      name: \"Other\",\n      items: [\"Travel\", \"Reminders\", \"Deadlines\"],\n    },\n  ],\n}\n\nexport function SidebarRight({\n  ...props\n}: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar\n      collapsible=\"none\"\n      className=\"sticky top-0 hidden h-svh border-l lg:flex\"\n      {...props}\n    >\n      <SidebarHeader className=\"h-16 border-b border-sidebar-border\">\n        <NavUser user={data.user} />\n      </SidebarHeader>\n      <SidebarContent>\n        <DatePicker />\n        <SidebarSeparator className=\"mx-0\" />\n        <Calendars calendars={data.calendars} />\n      </SidebarContent>\n      <SidebarFooter>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton>\n              <IconPlaceholder\n                lucide=\"PlusIcon\"\n                tabler=\"IconPlus\"\n                hugeicons=\"PlusSignIcon\"\n                phosphor=\"PlusIcon\"\n                remixicon=\"RiAddLine\"\n              />\n              <span>New Calendar</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ReactNode\n    plan: string\n  }[]\n}) {\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n\n  if (!activeTeam) {\n    return null\n  }\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton className=\"w-fit px-1.5\">\n              <div className=\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\">\n                {activeTeam.logo}\n              </div>\n              <span className=\"truncate font-medium\">{activeTeam.name}</span>\n              <IconPlaceholder\n                lucide=\"ChevronDownIcon\"\n                tabler=\"IconChevronDown\"\n                hugeicons=\"ArrowDown01Icon\"\n                phosphor=\"CaretDownIcon\"\n                remixicon=\"RiArrowDownSLine\"\n                className=\"opacity-50\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-64 rounded-lg\"\n            align=\"start\"\n            side=\"bottom\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n              Teams\n            </DropdownMenuLabel>\n            {teams.map((team, index) => (\n              <DropdownMenuItem\n                key={team.name}\n                onClick={() => setActiveTeam(team)}\n                className=\"gap-2 p-2\"\n              >\n                <div className=\"flex size-6 items-center justify-center rounded-xs border\">\n                  {team.logo}\n                </div>\n                {team.name}\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n              </DropdownMenuItem>\n            ))}\n            <DropdownMenuSeparator />\n            <DropdownMenuItem className=\"gap-2 p-2\">\n              <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n                <IconPlaceholder\n                  lucide=\"PlusIcon\"\n                  tabler=\"IconPlus\"\n                  hugeicons=\"PlusSignIcon\"\n                  phosphor=\"PlusIcon\"\n                  remixicon=\"RiAddLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"font-medium text-muted-foreground\">Add team</div>\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-15/page.tsx",
    "content": "import { SidebarLeft } from \"@/registry/bases/radix/blocks/sidebar-15/components/sidebar-left\"\nimport { SidebarRight } from \"@/registry/bases/radix/blocks/sidebar-15/components/sidebar-right\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <SidebarLeft />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\">\n          <div className=\"flex flex-1 items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem>\n                  <BreadcrumbPage className=\"line-clamp-1\">\n                    Project Management & Task Tracking\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\" />\n          <div className=\"mx-auto h-screen w-full max-w-3xl rounded-xl bg-muted/50\" />\n        </div>\n      </SidebarInset>\n      <SidebarRight />\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-16/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { NavMain } from \"@/registry/bases/radix/blocks/sidebar-16/components/nav-main\"\nimport { NavProjects } from \"@/registry/bases/radix/blocks/sidebar-16/components/nav-projects\"\nimport { NavSecondary } from \"@/registry/bases/radix/blocks/sidebar-16/components/nav-secondary\"\nimport { NavUser } from \"@/registry/bases/radix/blocks/sidebar-16/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"TerminalSquareIcon\"\n          tabler=\"IconTerminal2\"\n          hugeicons=\"ComputerTerminalIcon\"\n          phosphor=\"TerminalIcon\"\n          remixicon=\"RiTerminalBoxLine\"\n        />\n      ),\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BotIcon\"\n          tabler=\"IconRobot\"\n          hugeicons=\"RoboticIcon\"\n          phosphor=\"RobotIcon\"\n          remixicon=\"RiRobotLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"BookOpenIcon\"\n          tabler=\"IconBook\"\n          hugeicons=\"BookOpen02Icon\"\n          phosphor=\"BookOpenIcon\"\n          remixicon=\"RiBookOpenLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"Settings2Icon\"\n          tabler=\"IconSettings\"\n          hugeicons=\"Settings05Icon\"\n          phosphor=\"GearIcon\"\n          remixicon=\"RiSettingsLine\"\n        />\n      ),\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Support\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"LifeBuoyIcon\"\n          tabler=\"IconLifebuoy\"\n          hugeicons=\"ChartRingIcon\"\n          phosphor=\"LifebuoyIcon\"\n          remixicon=\"RiLifebuoyLine\"\n        />\n      ),\n    },\n    {\n      title: \"Feedback\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"SendIcon\"\n          tabler=\"IconSend\"\n          hugeicons=\"SentIcon\"\n          phosphor=\"PaperPlaneTiltIcon\"\n          remixicon=\"RiSendPlaneLine\"\n        />\n      ),\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"FrameIcon\"\n          tabler=\"IconFrame\"\n          hugeicons=\"CropIcon\"\n          phosphor=\"CropIcon\"\n          remixicon=\"RiCropLine\"\n        />\n      ),\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"PieChartIcon\"\n          tabler=\"IconChartPie\"\n          hugeicons=\"PieChartIcon\"\n          phosphor=\"ChartPieIcon\"\n          remixicon=\"RiPieChartLine\"\n        />\n      ),\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: (\n        <IconPlaceholder\n          lucide=\"MapIcon\"\n          tabler=\"IconMap\"\n          hugeicons=\"MapsIcon\"\n          phosphor=\"MapTrifoldIcon\"\n          remixicon=\"RiMapLine\"\n        />\n      ),\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar\n      className=\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\"\n      {...props}\n    >\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <IconPlaceholder\n                    lucide=\"TerminalIcon\"\n                    tabler=\"IconCommand\"\n                    hugeicons=\"CommandIcon\"\n                    phosphor=\"CommandIcon\"\n                    remixicon=\"RiCommandLine\"\n                    className=\"size-4\"\n                  />\n                </div>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">Acme Inc</span>\n                  <span className=\"truncate text-xs\">Enterprise</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-16/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\n            <SidebarMenuItem>\n              <SidebarMenuButton asChild tooltip={item.title}>\n                <a href={item.url}>\n                  {item.icon}\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.items?.length ? (\n                <>\n                  <CollapsibleTrigger asChild>\n                    <SidebarMenuAction className=\"data-[state=open]:rotate-90\">\n                      <IconPlaceholder\n                        lucide=\"ChevronRightIcon\"\n                        tabler=\"IconChevronRight\"\n                        hugeicons=\"ArrowRight01Icon\"\n                        phosphor=\"CaretRightIcon\"\n                        remixicon=\"RiArrowRightSLine\"\n                      />\n                      <span className=\"sr-only\">Toggle</span>\n                    </SidebarMenuAction>\n                  </CollapsibleTrigger>\n                  <CollapsibleContent>\n                    <SidebarMenuSub>\n                      {item.items?.map((subItem) => (\n                        <SidebarMenuSubItem key={subItem.title}>\n                          <SidebarMenuSubButton asChild>\n                            <a href={subItem.url}>\n                              <span>{subItem.title}</span>\n                            </a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </CollapsibleContent>\n                </>\n              ) : null}\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-16/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: React.ReactNode\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                {item.icon}\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"aria-expanded:bg-muted\"\n                >\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeOutlineIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"FolderIcon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare2\"\n                    hugeicons=\"Share03Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"Trash2Icon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton>\n            <IconPlaceholder\n              lucide=\"MoreHorizontalIcon\"\n              tabler=\"IconDots\"\n              hugeicons=\"MoreHorizontalCircle01Icon\"\n              phosphor=\"DotsThreeOutlineIcon\"\n              remixicon=\"RiMoreLine\"\n            />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-16/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild size=\"sm\">\n                <a href={item.url}>\n                  {item.icon}\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-16/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto size-4\"\n              />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"SparklesIcon\"\n                  tabler=\"IconSparkles\"\n                  hugeicons=\"SparklesIcon\"\n                  phosphor=\"SparkleIcon\"\n                  remixicon=\"RiSparklingLine\"\n                />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BadgeCheckIcon\"\n                  tabler=\"IconRosetteDiscountCheck\"\n                  hugeicons=\"CheckmarkBadgeIcon\"\n                  phosphor=\"CheckCircleIcon\"\n                  remixicon=\"RiCheckboxCircleLine\"\n                />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconPlaceholder\n                  lucide=\"BellIcon\"\n                  tabler=\"IconBell\"\n                  hugeicons=\"NotificationIcon\"\n                  phosphor=\"BellIcon\"\n                  remixicon=\"RiNotificationLine\"\n                />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-16/components/search-form.tsx",
    "content": "\"use client\"\n\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport { SidebarInput } from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <div className=\"relative\">\n        <Label htmlFor=\"search\" className=\"sr-only\">\n          Search\n        </Label>\n        <SidebarInput\n          id=\"search\"\n          placeholder=\"Type to search...\"\n          className=\"h-8 pl-7\"\n        />\n        <IconPlaceholder\n          lucide=\"SearchIcon\"\n          tabler=\"IconSearch\"\n          hugeicons=\"SearchIcon\"\n          phosphor=\"MagnifyingGlassIcon\"\n          remixicon=\"RiSearchLine\"\n          className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n        />\n      </div>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-16/components/site-header.tsx",
    "content": "\"use client\"\n\nimport { SearchForm } from \"@/registry/bases/radix/blocks/sidebar-16/components/search-form\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport { useSidebar } from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SiteHeader() {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <header className=\"sticky top-0 z-50 flex w-full items-center border-b bg-background\">\n      <div className=\"flex h-(--header-height) w-full items-center gap-2 px-4\">\n        <Button\n          className=\"h-8 w-8\"\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={toggleSidebar}\n        >\n          <IconPlaceholder\n            lucide=\"PanelLeftIcon\"\n            tabler=\"IconLayoutSidebar\"\n            hugeicons=\"SidebarLeftIcon\"\n            phosphor=\"SidebarIcon\"\n            remixicon=\"RiLayoutLeftLine\"\n          />\n        </Button>\n        <Separator\n          orientation=\"vertical\"\n          className=\"mr-2 data-vertical:h-4 data-vertical:self-auto\"\n        />\n        <Breadcrumb className=\"hidden sm:block\">\n          <BreadcrumbList>\n            <BreadcrumbItem>\n              <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n        <SearchForm className=\"w-full sm:ml-auto sm:w-auto\" />\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/sidebar-16/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/bases/radix/blocks/sidebar-16/components/app-sidebar\"\nimport { SiteHeader } from \"@/registry/bases/radix/blocks/sidebar-16/components/site-header\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n} from \"@/registry/bases/radix/ui/sidebar\"\n\nexport const iframeHeight = \"800px\"\n\nexport const description = \"A sidebar with a header and a search form.\"\n\nexport default function Page() {\n  return (\n    <div className=\"[--header-height:calc(--spacing(14))]\">\n      <SidebarProvider className=\"flex flex-col\">\n        <SiteHeader />\n        <div className=\"flex flex-1\">\n          <AppSidebar />\n          <SidebarInset>\n            <div className=\"flex flex-1 flex-col gap-4 p-4\">\n              <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n              </div>\n              <div className=\"min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n            </div>\n          </SidebarInset>\n        </div>\n      </SidebarProvider>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-01/components/signup-form.tsx",
    "content": "import { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\n\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\n  return (\n    <Card {...props}>\n      <CardHeader>\n        <CardTitle>Create an account</CardTitle>\n        <CardDescription>\n          Enter your information below to create your account\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n              <Input id=\"name\" type=\"text\" placeholder=\"John Doe\" required />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"m@example.com\"\n                required\n              />\n              <FieldDescription>\n                We&apos;ll use this to contact you. We will not share your email\n                with anyone else.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n              <Input id=\"password\" type=\"password\" required />\n              <FieldDescription>\n                Must be at least 8 characters long.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"confirm-password\">\n                Confirm Password\n              </FieldLabel>\n              <Input id=\"confirm-password\" type=\"password\" required />\n              <FieldDescription>Please confirm your password.</FieldDescription>\n            </Field>\n            <FieldGroup>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n                <Button variant=\"outline\" type=\"button\">\n                  Sign up with Google\n                </Button>\n                <FieldDescription className=\"px-6 text-center\">\n                  Already have an account? <a href=\"#\">Sign in</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-01/page.tsx",
    "content": "import { SignupForm } from \"@/registry/bases/radix/blocks/signup-01/components/signup-form\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-02/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <FieldGroup>\n        <div className=\"flex flex-col items-center gap-1 text-center\">\n          <h1 className=\"text-2xl font-bold\">Create your account</h1>\n          <p className=\"text-sm text-balance text-muted-foreground\">\n            Fill in the form below to create your account\n          </p>\n        </div>\n        <Field>\n          <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n          <Input\n            id=\"name\"\n            type=\"text\"\n            placeholder=\"John Doe\"\n            required\n            className=\"bg-background\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n          <Input\n            id=\"email\"\n            type=\"email\"\n            placeholder=\"m@example.com\"\n            required\n            className=\"bg-background\"\n          />\n          <FieldDescription>\n            We&apos;ll use this to contact you. We will not share your email\n            with anyone else.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n          <Input\n            id=\"password\"\n            type=\"password\"\n            required\n            className=\"bg-background\"\n          />\n          <FieldDescription>\n            Must be at least 8 characters long.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"confirm-password\">Confirm Password</FieldLabel>\n          <Input\n            id=\"confirm-password\"\n            type=\"password\"\n            required\n            className=\"bg-background\"\n          />\n          <FieldDescription>Please confirm your password.</FieldDescription>\n        </Field>\n        <Field>\n          <Button type=\"submit\">Create Account</Button>\n        </Field>\n        <FieldSeparator>Or continue with</FieldSeparator>\n        <Field>\n          <Button variant=\"outline\" type=\"button\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            Sign up with GitHub\n          </Button>\n          <FieldDescription className=\"px-6 text-center\">\n            Already have an account? <a href=\"#\">Sign in</a>\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-02/page.tsx",
    "content": "\"use client\"\n\nimport { SignupForm } from \"@/registry/bases/radix/blocks/signup-02/components/signup-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"grid min-h-svh lg:grid-cols-2\">\n      <div className=\"flex flex-col gap-4 p-6 md:p-10\">\n        <div className=\"flex justify-center gap-2 md:justify-start\">\n          <a href=\"#\" className=\"flex items-center gap-2 font-medium\">\n            <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n              <IconPlaceholder\n                lucide=\"GalleryVerticalEndIcon\"\n                tabler=\"IconLayoutRows\"\n                hugeicons=\"LayoutBottomIcon\"\n                phosphor=\"RowsIcon\"\n                remixicon=\"RiGalleryLine\"\n                className=\"size-4\"\n              />\n            </div>\n            Acme Inc.\n          </a>\n        </div>\n        <div className=\"flex flex-1 items-center justify-center\">\n          <div className=\"w-full max-w-xs\">\n            <SignupForm />\n          </div>\n        </div>\n      </div>\n      <div className=\"relative hidden bg-muted lg:block\">\n        <img\n          src=\"/placeholder.svg\"\n          alt=\"Image\"\n          className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-03/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader className=\"text-center\">\n          <CardTitle className=\"text-xl\">Create your account</CardTitle>\n          <CardDescription>\n            Enter your email below to create your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n                <Input id=\"name\" type=\"text\" placeholder=\"John Doe\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <Field className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                    <Input id=\"password\" type=\"password\" required />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"confirm-password\">\n                      Confirm Password\n                    </FieldLabel>\n                    <Input id=\"confirm-password\" type=\"password\" required />\n                  </Field>\n                </Field>\n                <FieldDescription>\n                  Must be at least 8 characters long.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n                <FieldDescription className=\"text-center\">\n                  Already have an account? <a href=\"#\">Sign in</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-03/page.tsx",
    "content": "\"use client\"\n\nimport { SignupForm } from \"@/registry/bases/radix/blocks/signup-03/components/signup-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\">\n      <div className=\"flex w-full max-w-sm flex-col gap-6\">\n        <a href=\"#\" className=\"flex items-center gap-2 self-center font-medium\">\n          <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n            <IconPlaceholder\n              lucide=\"GalleryVerticalEndIcon\"\n              tabler=\"IconLayoutRows\"\n              hugeicons=\"LayoutBottomIcon\"\n              phosphor=\"RowsIcon\"\n              remixicon=\"RiGalleryLine\"\n              className=\"size-4\"\n            />\n          </div>\n          Acme Inc.\n        </a>\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-04/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card className=\"overflow-hidden p-0\">\n        <CardContent className=\"grid p-0 md:grid-cols-2\">\n          <form className=\"p-6 md:p-8\">\n            <FieldGroup>\n              <div className=\"flex flex-col items-center gap-2 text-center\">\n                <h1 className=\"text-2xl font-bold\">Create your account</h1>\n                <p className=\"text-sm text-balance text-muted-foreground\">\n                  Enter your email below to create your account\n                </p>\n              </div>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n                <FieldDescription>\n                  We&apos;ll use this to contact you. We will not share your\n                  email with anyone else.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Field className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                    <Input id=\"password\" type=\"password\" required />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"confirm-password\">\n                      Confirm Password\n                    </FieldLabel>\n                    <Input id=\"confirm-password\" type=\"password\" required />\n                  </Field>\n                </Field>\n                <FieldDescription>\n                  Must be at least 8 characters long.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field className=\"grid grid-cols-3 gap-4\">\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Apple</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Google</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Meta</span>\n                </Button>\n              </Field>\n              <FieldDescription className=\"text-center\">\n                Already have an account? <a href=\"#\">Sign in</a>\n              </FieldDescription>\n            </FieldGroup>\n          </form>\n          <div className=\"relative hidden bg-muted md:block\">\n            <img\n              src=\"/placeholder.svg\"\n              alt=\"Image\"\n              className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n            />\n          </div>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-04/page.tsx",
    "content": "import { SignupForm } from \"@/registry/bases/radix/blocks/signup-04/components/signup-form\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\">\n      <div className=\"w-full max-w-sm md:max-w-4xl\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-05/components/signup-form.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <form>\n        <FieldGroup>\n          <div className=\"flex flex-col items-center gap-2 text-center\">\n            <a\n              href=\"#\"\n              className=\"flex flex-col items-center gap-2 font-medium\"\n            >\n              <div className=\"flex size-8 items-center justify-center rounded-md\">\n                <IconPlaceholder\n                  lucide=\"GalleryVerticalEndIcon\"\n                  tabler=\"IconLayoutRows\"\n                  hugeicons=\"LayoutBottomIcon\"\n                  phosphor=\"RowsIcon\"\n                  remixicon=\"RiGalleryLine\"\n                  className=\"size-6\"\n                />\n              </div>\n              <span className=\"sr-only\">Acme Inc.</span>\n            </a>\n            <h1 className=\"text-xl font-bold\">Welcome to Acme Inc.</h1>\n            <FieldDescription>\n              Already have an account? <a href=\"#\">Sign in</a>\n            </FieldDescription>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              placeholder=\"m@example.com\"\n              required\n            />\n          </Field>\n          <Field>\n            <Button type=\"submit\">Create Account</Button>\n          </Field>\n          <FieldSeparator>Or</FieldSeparator>\n          <Field className=\"grid gap-4 sm:grid-cols-2\">\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Apple\n            </Button>\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Google\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/blocks/signup-05/page.tsx",
    "content": "import { SignupForm } from \"@/registry/bases/radix/blocks/signup-05/components/signup-form\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/components/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const components: Registry[\"items\"] = [\n  {\n    name: \"example\",\n    title: \"Example\",\n    type: \"registry:component\",\n    files: [\n      {\n        path: \"components/example.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/components/example.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div className=\"w-full bg-muted dark:bg-background\">\n      <div\n        data-slot=\"example-wrapper\"\n        className={cn(\n          \"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction Example({\n  title,\n  children,\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  title?: string\n  containerClassName?: string\n}) {\n  return (\n    <div\n      data-slot=\"example\"\n      className={cn(\n        \"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\",\n        containerClassName\n      )}\n      {...props}\n    >\n      {title && (\n        <div className=\"px-1.5 py-2 text-xs font-medium text-muted-foreground\">\n          {title}\n        </div>\n      )}\n      <div\n        data-slot=\"example-content\"\n        className={cn(\n          \"flex min-w-0 flex-1 flex-col items-start gap-6 rounded-xl bg-card p-12 text-foreground *:[div:not([class*='w-'])]:w-full\",\n          className\n        )}\n      >\n        {children}\n      </div>\n    </div>\n  )\n}\n\nexport { ExampleWrapper, Example }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const examples: Registry[\"items\"] = [\n  {\n    name: \"accordion-example\",\n    title: \"Accordion\",\n    type: \"registry:example\",\n    registryDependencies: [\"accordion\", \"button\", \"card\", \"example\"],\n    files: [\n      {\n        path: \"examples/accordion-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"alert-example\",\n    title: \"Alert\",\n    type: \"registry:example\",\n    registryDependencies: [\"alert\", \"badge\", \"button\", \"example\"],\n    files: [\n      {\n        path: \"examples/alert-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"alert-dialog-example\",\n    title: \"Alert Dialog\",\n    type: \"registry:example\",\n    registryDependencies: [\"alert-dialog\", \"button\", \"dialog\", \"example\"],\n    files: [\n      {\n        path: \"examples/alert-dialog-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"aspect-ratio-example\",\n    title: \"Aspect Ratio\",\n    type: \"registry:example\",\n    registryDependencies: [\"aspect-ratio\", \"example\"],\n    files: [\n      {\n        path: \"examples/aspect-ratio-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"avatar-example\",\n    title: \"Avatar\",\n    type: \"registry:example\",\n    registryDependencies: [\"avatar\", \"button\", \"empty\", \"example\"],\n    files: [\n      {\n        path: \"examples/avatar-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"badge-example\",\n    title: \"Badge\",\n    type: \"registry:example\",\n    registryDependencies: [\"badge\", \"spinner\", \"example\"],\n    files: [\n      {\n        path: \"examples/badge-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb-example\",\n    title: \"Breadcrumb\",\n    type: \"registry:example\",\n    registryDependencies: [\"breadcrumb\", \"dropdown-menu\", \"example\"],\n    files: [\n      {\n        path: \"examples/breadcrumb-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-example\",\n    title: \"Button\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"example\"],\n    files: [\n      {\n        path: \"examples/button-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-example\",\n    title: \"Button Group\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"button-group\",\n      \"dropdown-menu\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"label\",\n      \"popover\",\n      \"select\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/button-group-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"calendar-example\",\n    title: \"Calendar\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"calendar\",\n      \"card\",\n      \"field\",\n      \"input\",\n      \"label\",\n      \"popover\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/calendar-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"card-example\",\n    title: \"Card\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"avatar\",\n      \"button\",\n      \"card\",\n      \"field\",\n      \"input\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/card-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"carousel-example\",\n    title: \"Carousel\",\n    type: \"registry:example\",\n    registryDependencies: [\"card\", \"carousel\", \"example\"],\n    files: [\n      {\n        path: \"examples/carousel-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"chart-example\",\n    title: \"Chart\",\n    type: \"registry:example\",\n    registryDependencies: [\"chart\", \"card\", \"example\"],\n    files: [\n      {\n        path: \"examples/chart-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"checkbox-example\",\n    title: \"Checkbox\",\n    type: \"registry:example\",\n    registryDependencies: [\"checkbox\", \"field\", \"table\", \"example\"],\n    files: [\n      {\n        path: \"examples/checkbox-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"collapsible-example\",\n    title: \"Collapsible\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"collapsible\",\n      \"field\",\n      \"input\",\n      \"tabs\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/collapsible-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"combobox-example\",\n    title: \"Combobox\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"combobox\",\n      \"dialog\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"item\",\n      \"select\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/combobox-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"command-example\",\n    title: \"Command\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"command\", \"example\"],\n    files: [\n      {\n        path: \"examples/command-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"context-menu-example\",\n    title: \"Context Menu\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"context-menu\", \"dialog\", \"example\"],\n    files: [\n      {\n        path: \"examples/context-menu-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dialog-example\",\n    title: \"Dialog\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"checkbox\",\n      \"dialog\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"kbd\",\n      \"native-select\",\n      \"select\",\n      \"switch\",\n      \"tabs\",\n      \"textarea\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/dialog-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"drawer-example\",\n    title: \"Drawer\",\n    type: \"registry:example\",\n    registryDependencies: [\"drawer\", \"example\"],\n    files: [\n      {\n        path: \"examples/drawer-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dropdown-menu-example\",\n    title: \"Dropdown Menu\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"avatar\",\n      \"button\",\n      \"dialog\",\n      \"dropdown-menu\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/dropdown-menu-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-example\",\n    title: \"Empty\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"empty\", \"input-group\", \"kbd\", \"example\"],\n    files: [\n      {\n        path: \"examples/empty-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-example\",\n    title: \"Field\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"badge\",\n      \"checkbox\",\n      \"field\",\n      \"input\",\n      \"input-otp\",\n      \"native-select\",\n      \"radio-group\",\n      \"select\",\n      \"slider\",\n      \"switch\",\n      \"textarea\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/field-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"hover-card-example\",\n    title: \"Hover Card\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"dialog\", \"hover-card\", \"example\"],\n    files: [\n      {\n        path: \"examples/hover-card-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-example\",\n    title: \"Input\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"field\",\n      \"input\",\n      \"native-select\",\n      \"select\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/input-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-example\",\n    title: \"Input Group\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"button-group\",\n      \"card\",\n      \"dropdown-menu\",\n      \"field\",\n      \"input\",\n      \"input-group\",\n      \"kbd\",\n      \"popover\",\n      \"spinner\",\n      \"textarea\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/input-group-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-otp-example\",\n    title: \"Input OTP\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"card\", \"field\", \"input-otp\", \"example\"],\n    files: [\n      {\n        path: \"examples/input-otp-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-example\",\n    title: \"Item\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"item\", \"example\"],\n    files: [\n      {\n        path: \"examples/item-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"kbd-example\",\n    title: \"Kbd\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"input-group\",\n      \"kbd\",\n      \"tooltip\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/kbd-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"label-example\",\n    title: \"Label\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"checkbox\",\n      \"field\",\n      \"input\",\n      \"label\",\n      \"textarea\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/label-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"menubar-example\",\n    title: \"Menubar\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"dialog\", \"menubar\", \"example\"],\n    files: [\n      {\n        path: \"examples/menubar-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"native-select-example\",\n    title: \"Native Select\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"native-select\", \"example\"],\n    files: [\n      {\n        path: \"examples/native-select-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"navigation-menu-example\",\n    title: \"Navigation Menu\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"dialog\", \"navigation-menu\", \"example\"],\n    files: [\n      {\n        path: \"examples/navigation-menu-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"pagination-example\",\n    title: \"Pagination\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"pagination\", \"select\", \"example\"],\n    files: [\n      {\n        path: \"examples/pagination-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"popover-example\",\n    title: \"Popover\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"dialog\",\n      \"field\",\n      \"input\",\n      \"popover\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/popover-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"progress-example\",\n    title: \"Progress\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"item\", \"progress\", \"slider\", \"example\"],\n    files: [\n      {\n        path: \"examples/progress-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"radio-group-example\",\n    title: \"Radio Group\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"radio-group\", \"example\"],\n    files: [\n      {\n        path: \"examples/radio-group-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"resizable-example\",\n    title: \"Resizable\",\n    type: \"registry:example\",\n    registryDependencies: [\"resizable\", \"example\"],\n    files: [\n      {\n        path: \"examples/resizable-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"scroll-area-example\",\n    title: \"Scroll Area\",\n    type: \"registry:example\",\n    registryDependencies: [\"scroll-area\", \"separator\", \"example\"],\n    files: [\n      {\n        path: \"examples/scroll-area-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"select-example\",\n    title: \"Select\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"dialog\",\n      \"field\",\n      \"input\",\n      \"item\",\n      \"native-select\",\n      \"select\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/select-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"separator-example\",\n    title: \"Separator\",\n    type: \"registry:example\",\n    registryDependencies: [\"separator\", \"example\"],\n    files: [\n      {\n        path: \"examples/separator-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sheet-example\",\n    title: \"Sheet\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"field\", \"input\", \"sheet\", \"example\"],\n    files: [\n      {\n        path: \"examples/sheet-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-example\",\n    title: \"Sidebar\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"dropdown-menu\",\n      \"item\",\n      \"label\",\n      \"sidebar\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/sidebar-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-icon-example\",\n    title: \"Sidebar (Icon)\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"avatar\",\n      \"button\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"item\",\n      \"sidebar\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/sidebar-icon-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-inset-example\",\n    title: \"Sidebar (Inset)\",\n    type: \"registry:example\",\n    registryDependencies: [\"collapsible\", \"sidebar\", \"example\"],\n    files: [\n      {\n        path: \"examples/sidebar-inset-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-floating-example\",\n    title: \"Sidebar (Floating)\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"dropdown-menu\",\n      \"field\",\n      \"item\",\n      \"sidebar\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/sidebar-floating-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"skeleton-example\",\n    title: \"Skeleton\",\n    type: \"registry:example\",\n    registryDependencies: [\"skeleton\", \"example\"],\n    files: [\n      {\n        path: \"examples/skeleton-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"slider-example\",\n    title: \"Slider\",\n    type: \"registry:example\",\n    registryDependencies: [\"label\", \"slider\", \"example\"],\n    files: [\n      {\n        path: \"examples/slider-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sonner-example\",\n    title: \"Sonner\",\n    type: \"registry:example\",\n    registryDependencies: [\"sonner\", \"example\"],\n    files: [\n      {\n        path: \"examples/sonner-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-example\",\n    title: \"Spinner\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"badge\",\n      \"button\",\n      \"empty\",\n      \"field\",\n      \"input-group\",\n      \"spinner\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/spinner-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"switch-example\",\n    title: \"Switch\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"label\", \"switch\", \"example\"],\n    files: [\n      {\n        path: \"examples/switch-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"table-example\",\n    title: \"Table\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"button\",\n      \"dropdown-menu\",\n      \"input\",\n      \"select\",\n      \"table\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/table-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"tabs-example\",\n    title: \"Tabs\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"dropdown-menu\", \"tabs\", \"example\"],\n    files: [\n      {\n        path: \"examples/tabs-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"textarea-example\",\n    title: \"Textarea\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"textarea\", \"example\"],\n    files: [\n      {\n        path: \"examples/textarea-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-example\",\n    title: \"Toggle\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle\", \"example\"],\n    files: [\n      {\n        path: \"examples/toggle-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-example\",\n    title: \"Toggle Group\",\n    type: \"registry:example\",\n    registryDependencies: [\"input\", \"select\", \"toggle-group\", \"example\"],\n    files: [\n      {\n        path: \"examples/toggle-group-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"tooltip-example\",\n    title: \"Tooltip\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"kbd\", \"tooltip\", \"example\"],\n    files: [\n      {\n        path: \"examples/tooltip-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"demo\",\n    title: \"Demo\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"alert-dialog\",\n      \"badge\",\n      \"button\",\n      \"button-group\",\n      \"card\",\n      \"checkbox\",\n      \"dropdown-menu\",\n      \"field\",\n      \"input-group\",\n      \"item\",\n      \"radio-group\",\n      \"slider\",\n      \"switch\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"examples/demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"component-example\",\n    title: \"Example\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"alert-dialog\",\n      \"badge\",\n      \"button\",\n      \"card\",\n      \"combobox\",\n      \"dropdown-menu\",\n      \"field\",\n      \"input\",\n      \"select\",\n      \"textarea\",\n      \"example\",\n    ],\n    files: [\n      {\n        path: \"examples/component-example.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/accordion-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/registry/bases/radix/ui/accordion\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AccordionExample() {\n  return (\n    <ExampleWrapper className=\"w-full max-w-4xl lg:grid-cols-1 2xl:max-w-4xl 2xl:grid-cols-1\">\n      <AccordionBasic />\n      <AccordionMultiple />\n      <AccordionWithBorders />\n      <AccordionInCard />\n      <AccordionWithDisabled />\n    </ExampleWrapper>\n  )\n}\n\nfunction AccordionBasic() {\n  const items = [\n    {\n      value: \"item-1\",\n      trigger: \"Is it accessible?\",\n      content: \"Yes. It adheres to the WAI-ARIA design pattern.\",\n    },\n    {\n      value: \"item-2\",\n      trigger: \"Is it styled?\",\n      content:\n        \"Yes. It comes with default styles that matches the other components' aesthetic.\",\n    },\n    {\n      value: \"item-3\",\n      trigger: \"Is it animated?\",\n      content:\n        \"Yes. It's animated by default, but you can disable it if you prefer.\",\n    },\n  ]\n\n  return (\n    <Example title=\"Basic\">\n      <Accordion type=\"single\" collapsible className=\"mx-auto max-w-lg\">\n        {items.map((item) => (\n          <AccordionItem key={item.value} value={item.value}>\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\n            <AccordionContent>{item.content}</AccordionContent>\n          </AccordionItem>\n        ))}\n      </Accordion>\n    </Example>\n  )\n}\n\nfunction AccordionMultiple() {\n  const items = [\n    {\n      value: \"item-1\",\n      trigger:\n        \"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\",\n      content:\n        \"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\",\n    },\n    {\n      value: \"item-2\",\n      trigger:\n        \"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\",\n      content:\n        \"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\",\n    },\n  ]\n\n  return (\n    <Example title=\"Multiple\">\n      <Accordion type=\"multiple\" className=\"mx-auto max-w-lg\">\n        {items.map((item) => (\n          <AccordionItem key={item.value} value={item.value}>\n            <AccordionTrigger>{item.trigger}</AccordionTrigger>\n            <AccordionContent>{item.content}</AccordionContent>\n          </AccordionItem>\n        ))}\n      </Accordion>\n    </Example>\n  )\n}\n\nfunction AccordionWithBorders() {\n  const items = [\n    {\n      value: \"billing\",\n      trigger: \"How does billing work?\",\n      content:\n        \"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\",\n    },\n    {\n      value: \"security\",\n      trigger: \"Is my data secure?\",\n      content:\n        \"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\",\n    },\n    {\n      value: \"integration\",\n      trigger: \"What integrations do you support?\",\n      content: (\n        <>\n          <p>\n            We integrate with 500+ popular tools including Slack, Zapier,\n            Salesforce, HubSpot, and more. You can also build custom\n            integrations using our REST API and webhooks.{\" \"}\n          </p>\n          <p>\n            Our API documentation includes code examples in 10+ programming\n            languages.\n          </p>\n        </>\n      ),\n    },\n  ]\n\n  return (\n    <Example title=\"With Borders\">\n      <Accordion\n        type=\"single\"\n        collapsible\n        className=\"mx-auto max-w-lg style-vega:gap-2 style-nova:gap-2 style-lyra:gap-2\"\n      >\n        {items.map((item) => (\n          <AccordionItem\n            key={item.value}\n            value={item.value}\n            className=\"style-vega:rounded-lg style-vega:border style-nova:rounded-lg style-nova:border style-lyra:border\"\n          >\n            <AccordionTrigger className=\"font-medium style-vega:px-4 style-vega:text-sm style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:text-sm style-mira:text-xs\">\n              {item.trigger}\n            </AccordionTrigger>\n            <AccordionContent className=\"text-muted-foreground style-vega:px-4 style-nova:px-2.5 style-nova:text-sm style-lyra:px-2 style-lyra:text-xs style-maia:px-0 style-mira:px-0\">\n              {item.content}\n            </AccordionContent>\n          </AccordionItem>\n        ))}\n      </Accordion>\n    </Example>\n  )\n}\n\nfunction AccordionInCard() {\n  const items = [\n    {\n      value: \"plans\",\n      trigger: \"What subscription plans do you offer?\",\n      content: (\n        <>\n          <p>\n            We offer three subscription tiers: Starter ($9/month), Professional\n            ($29/month), and Enterprise ($99/month). Each plan includes\n            increasing storage limits, API access, priority support, and team\n            collaboration features.\n          </p>\n          <p>\n            <a href=\"#\">Annual billing is available</a> with a 20% discount. All\n            plans include a 14-day free trial with no credit card required.\n          </p>\n          <Button size=\"sm\">\n            View plans\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRight01Icon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n            />\n          </Button>\n        </>\n      ),\n    },\n    {\n      value: \"billing\",\n      trigger: \"How does billing work?\",\n      content: (\n        <>\n          <p>\n            Billing occurs automatically at the start of each billing cycle. We\n            accept all major credit cards, PayPal, and ACH transfers for\n            enterprise customers.\n          </p>\n          <p>\n            You&apos;ll receive an invoice via email after each payment. You can\n            update your payment method or billing information anytime in your\n            account settings. Failed payments will trigger automated retry\n            attempts and email notifications.\n          </p>\n        </>\n      ),\n    },\n    {\n      value: \"upgrade\",\n      trigger: \"Can I upgrade or downgrade my plan?\",\n      content: (\n        <>\n          <p>\n            Yes, you can change your plan at any time. When upgrading,\n            you&apos;ll be charged a prorated amount for the remainder of your\n            billing cycle and immediately gain access to new features.\n          </p>\n          <p>\n            When downgrading, the change takes effect at the end of your current\n            billing period, and you&apos;ll retain access to premium features\n            until then. No refunds are provided for downgrades.\n          </p>\n        </>\n      ),\n    },\n    {\n      value: \"cancel\",\n      trigger: \"How do I cancel my subscription?\",\n      content: (\n        <>\n          <p>\n            You can cancel your subscription anytime from your account settings.\n            There are no cancellation fees or penalties. Your access will\n            continue until the end of your current billing period.\n          </p>\n          <p>\n            After cancellation, your data is retained for 30 days in case you\n            want to reactivate. You can export all your data before or after\n            canceling. We&apos;d love to hear your feedback about why\n            you&apos;re leaving.\n          </p>\n        </>\n      ),\n    },\n    {\n      value: \"refund\",\n      trigger: \"What is your refund policy?\",\n      content: (\n        <>\n          <p>\n            We offer a 30-day money-back guarantee for new subscriptions. If\n            you&apos;re not satisfied within the first 30 days, contact our\n            support team for a full refund.\n          </p>\n          <p>\n            After 30 days, we don&apos;t provide refunds for partial billing\n            periods, but you can cancel anytime to avoid future charges.\n            Enterprise customers have custom refund terms outlined in their\n            contracts.\n          </p>\n        </>\n      ),\n    },\n  ]\n\n  return (\n    <Example title=\"In Card\">\n      <Card className=\"mx-auto w-full max-w-lg gap-4\">\n        <CardHeader>\n          <CardTitle>Subscription & Billing</CardTitle>\n          <CardDescription>\n            Common questions about your account, plans, and payments\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <Accordion\n            type=\"single\"\n            collapsible\n            defaultValue=\"plans\"\n            className=\"style-maia:rounded-md style-mira:rounded-md\"\n          >\n            {items.map((item) => (\n              <AccordionItem key={item.value} value={item.value}>\n                <AccordionTrigger>{item.trigger}</AccordionTrigger>\n                <AccordionContent>{item.content}</AccordionContent>\n              </AccordionItem>\n            ))}\n          </Accordion>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction AccordionWithDisabled() {\n  const items = [\n    {\n      value: \"item-1\",\n      trigger: \"Can I access my account history?\",\n      content:\n        \"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\",\n      disabled: false,\n    },\n    {\n      value: \"item-2\",\n      trigger: \"Premium feature information\",\n      content:\n        \"This section contains information about premium features. Upgrade your plan to access this content.\",\n      disabled: true,\n    },\n    {\n      value: \"item-3\",\n      trigger: \"How do I update my email address?\",\n      content:\n        \"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\",\n      disabled: false,\n    },\n  ]\n\n  return (\n    <Example title=\"With Disabled\">\n      <Accordion\n        type=\"single\"\n        collapsible\n        className=\"mx-auto max-w-lg overflow-hidden border style-vega:rounded-lg style-nova:rounded-lg style-lyra:rounded-none style-maia:rounded-lg style-mira:rounded-lg\"\n      >\n        {items.map((item) => (\n          <AccordionItem\n            key={item.value}\n            value={item.value}\n            disabled={item.disabled}\n            className=\"p-1 data-open:bg-muted/50\"\n          >\n            <AccordionTrigger className=\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\">\n              {item.trigger}\n            </AccordionTrigger>\n            <AccordionContent className=\"style-vega:px-4 style-nova:px-2.5 style-lyra:px-2\">\n              {item.content}\n            </AccordionContent>\n          </AccordionItem>\n        ))}\n      </Accordion>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/bases/radix/ui/alert-dialog\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AlertDialogExample() {\n  return (\n    <ExampleWrapper>\n      <AlertDialogBasic />\n      <AlertDialogSmall />\n      <AlertDialogWithMedia />\n      <AlertDialogSmallWithMedia />\n      <AlertDialogDestructive />\n      <AlertDialogInDialog />\n    </ExampleWrapper>\n  )\n}\n\nfunction AlertDialogBasic() {\n  return (\n    <Example title=\"Basic\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">Default</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This action cannot be undone. This will permanently delete your\n              account and remove your data from our servers.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\n            <AlertDialogAction>Continue</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogSmall() {\n  return (\n    <Example title=\"Small\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">Small</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent size=\"sm\">\n          <AlertDialogHeader>\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n            <AlertDialogDescription>\n              Do you want to allow the USB accessory to connect to this device?\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n            <AlertDialogAction>Allow</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogWithMedia() {\n  return (\n    <Example title=\"With Media\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">Default (Media)</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogMedia>\n              <IconPlaceholder\n                lucide=\"BluetoothIcon\"\n                tabler=\"IconBluetooth\"\n                hugeicons=\"BluetoothIcon\"\n                phosphor=\"BluetoothIcon\"\n                remixicon=\"RiBluetoothLine\"\n              />\n            </AlertDialogMedia>\n            <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This will permanently delete your account and remove your data\n              from our servers.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Cancel</AlertDialogCancel>\n            <AlertDialogAction>Continue</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogSmallWithMedia() {\n  return (\n    <Example title=\"Small With Media\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"outline\">Small (Media)</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent size=\"sm\">\n          <AlertDialogHeader>\n            <AlertDialogMedia>\n              <IconPlaceholder\n                lucide=\"BluetoothIcon\"\n                tabler=\"IconBluetooth\"\n                hugeicons=\"BluetoothIcon\"\n                phosphor=\"BluetoothIcon\"\n                remixicon=\"RiBluetoothLine\"\n              />\n            </AlertDialogMedia>\n            <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n            <AlertDialogDescription>\n              Do you want to allow the USB accessory to connect to this device?\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n            <AlertDialogAction>Allow</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogDestructive() {\n  return (\n    <Example title=\"Destructive\" className=\"items-center\">\n      <AlertDialog>\n        <AlertDialogTrigger asChild>\n          <Button variant=\"destructive\">Delete Chat</Button>\n        </AlertDialogTrigger>\n        <AlertDialogContent size=\"sm\">\n          <AlertDialogHeader>\n            <AlertDialogMedia className=\"bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive\">\n              <IconPlaceholder\n                lucide=\"Trash2Icon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"Delete02Icon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n            </AlertDialogMedia>\n            <AlertDialogTitle>Delete chat?</AlertDialogTitle>\n            <AlertDialogDescription>\n              This will permanently delete this chat conversation. View{\" \"}\n              <a href=\"#\">Settings</a> delete any memories saved during this\n              chat.\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel variant=\"ghost\">Cancel</AlertDialogCancel>\n            <AlertDialogAction variant=\"destructive\">Delete</AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </Example>\n  )\n}\n\nfunction AlertDialogInDialog() {\n  return (\n    <Example title=\"In Dialog\" className=\"items-center\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Alert Dialog Example</DialogTitle>\n            <DialogDescription>\n              Click the button below to open an alert dialog.\n            </DialogDescription>\n          </DialogHeader>\n          <DialogFooter>\n            <AlertDialog>\n              <AlertDialogTrigger asChild>\n                <Button>Open Alert Dialog</Button>\n              </AlertDialogTrigger>\n              <AlertDialogContent size=\"sm\">\n                <AlertDialogHeader>\n                  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n                  <AlertDialogDescription>\n                    This action cannot be undone. This will permanently delete\n                    your account and remove your data from our servers.\n                  </AlertDialogDescription>\n                </AlertDialogHeader>\n                <AlertDialogFooter>\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\n                  <AlertDialogAction>Continue</AlertDialogAction>\n                </AlertDialogFooter>\n              </AlertDialogContent>\n            </AlertDialog>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/alert-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Alert,\n  AlertAction,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/bases/radix/ui/alert\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AlertExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1\">\n      <AlertExample1 />\n      <AlertExample2 />\n      <AlertExample3 />\n      <AlertExample4 />\n    </ExampleWrapper>\n  )\n}\n\nfunction AlertExample1() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"mx-auto flex w-full max-w-lg flex-col gap-4\">\n        <Alert>\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\n        </Alert>\n        <Alert>\n          <AlertTitle>Success! Your changes have been saved.</AlertTitle>\n          <AlertDescription>\n            This is an alert with title and description.\n          </AlertDescription>\n        </Alert>\n        <Alert>\n          <AlertDescription>\n            This one has a description only. No title. No icon.\n          </AlertDescription>\n        </Alert>\n      </div>\n    </Example>\n  )\n}\n\nfunction AlertExample2() {\n  return (\n    <Example title=\"With Icons\">\n      <div className=\"mx-auto flex w-full max-w-lg flex-col gap-4\">\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>\n            Let&apos;s try one with icon, title and a <a href=\"#\">link</a>.\n          </AlertTitle>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertDescription>\n            This one has an icon and a description only. No title.{\" \"}\n            <a href=\"#\">But it has a link</a> and a <a href=\"#\">second link</a>.\n          </AlertDescription>\n        </Alert>\n\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>Success! Your changes have been saved</AlertTitle>\n          <AlertDescription>\n            This is an alert with icon, title and description.\n          </AlertDescription>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>\n            This is a very long alert title that demonstrates how the component\n            handles extended text content and potentially wraps across multiple\n            lines\n          </AlertTitle>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertDescription>\n            This is a very long alert description that demonstrates how the\n            component handles extended text content and potentially wraps across\n            multiple lines\n          </AlertDescription>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>\n            This is an extremely long alert title that spans multiple lines to\n            demonstrate how the component handles very lengthy headings while\n            maintaining readability and proper text wrapping behavior\n          </AlertTitle>\n          <AlertDescription>\n            This is an equally long description that contains detailed\n            information about the alert. It shows how the component can\n            accommodate extensive content while preserving proper spacing,\n            alignment, and readability across different screen sizes and\n            viewport widths. This helps ensure the user experience remains\n            consistent regardless of the content length.\n          </AlertDescription>\n        </Alert>\n      </div>\n    </Example>\n  )\n}\n\nfunction AlertExample3() {\n  return (\n    <Example title=\"Destructive\">\n      <div className=\"mx-auto flex w-full max-w-lg flex-col gap-4\">\n        <Alert variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>Something went wrong!</AlertTitle>\n          <AlertDescription>\n            Your session has expired. Please log in again.\n          </AlertDescription>\n        </Alert>\n        <Alert variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>Unable to process your payment.</AlertTitle>\n          <AlertDescription>\n            <p>\n              Please verify your <a href=\"#\">billing information</a> and try\n              again.\n            </p>\n            <ul className=\"list-inside list-disc\">\n              <li>Check your card details</li>\n              <li>Ensure sufficient funds</li>\n              <li>Verify billing address</li>\n            </ul>\n          </AlertDescription>\n        </Alert>\n      </div>\n    </Example>\n  )\n}\n\nfunction AlertExample4() {\n  return (\n    <Example title=\"With Actions\">\n      <div className=\"mx-auto flex w-full max-w-lg flex-col gap-4\">\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\n          <AlertAction>\n            <Button size=\"xs\">Undo</Button>\n          </AlertAction>\n        </Alert>\n        <Alert>\n          <IconPlaceholder\n            lucide=\"CircleAlertIcon\"\n            tabler=\"IconExclamationCircle\"\n            hugeicons=\"AlertCircleIcon\"\n            phosphor=\"WarningCircleIcon\"\n            remixicon=\"RiErrorWarningLine\"\n          />\n          <AlertTitle>The selected emails have been marked as spam.</AlertTitle>\n          <AlertDescription>\n            This is a very long alert title that demonstrates how the component\n            handles extended text content.\n          </AlertDescription>\n          <AlertAction>\n            <Badge variant=\"secondary\">Badge</Badge>\n          </AlertAction>\n        </Alert>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { AspectRatio } from \"@/registry/bases/radix/ui/aspect-ratio\"\n\nexport default function AspectRatioExample() {\n  return (\n    <ExampleWrapper className=\"max-w-4xl 2xl:max-w-4xl\">\n      <AspectRatio16x9 />\n      <AspectRatio21x9 />\n      <AspectRatio1x1 />\n      <AspectRatio9x16 />\n    </ExampleWrapper>\n  )\n}\n\nfunction AspectRatio16x9() {\n  return (\n    <Example title=\"16:9\" className=\"items-center justify-center\">\n      <AspectRatio ratio={16 / 9} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </Example>\n  )\n}\n\nfunction AspectRatio1x1() {\n  return (\n    <Example title=\"1:1\" className=\"items-start\">\n      <AspectRatio ratio={1 / 1} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </Example>\n  )\n}\n\nfunction AspectRatio9x16() {\n  return (\n    <Example title=\"9:16\" className=\"items-center justify-center\">\n      <AspectRatio ratio={9 / 16} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </Example>\n  )\n}\n\nfunction AspectRatio21x9() {\n  return (\n    <Example title=\"21:9\" className=\"items-center justify-center\">\n      <AspectRatio ratio={21 / 9} className=\"rounded-lg bg-muted\">\n        <Image\n          src=\"https://avatar.vercel.sh/shadcn1\"\n          alt=\"Photo\"\n          fill\n          className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n        />\n      </AspectRatio>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/avatar-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Avatar,\n  AvatarBadge,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/radix/ui/empty\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AvatarExample() {\n  return (\n    <ExampleWrapper>\n      <AvatarSizes />\n      <AvatarWithBadge />\n      <AvatarWithBadgeIcon />\n      <AvatarGroupExample />\n      <AvatarGroupWithCount />\n      <AvatarGroupWithIconCount />\n      <AvatarInEmpty />\n    </ExampleWrapper>\n  )\n}\n\nfunction AvatarSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n      </div>\n    </Example>\n  )\n}\n\nfunction AvatarWithBadge() {\n  return (\n    <Example title=\"Badge\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/jorgezreik.png\"\n            alt=\"@jorgezreik\"\n          />\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/jorgezreik.png\"\n            alt=\"@jorgezreik\"\n          />\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/jorgezreik.png\"\n            alt=\"@jorgezreik\"\n          />\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar>\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarFallback>JZ</AvatarFallback>\n          <AvatarBadge />\n        </Avatar>\n      </div>\n    </Example>\n  )\n}\n\nfunction AvatarWithBadgeIcon() {\n  return (\n    <Example title=\"Badge with Icon\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/pranathip.png\"\n            alt=\"@pranathip\"\n          />\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/pranathip.png\"\n            alt=\"@pranathip\"\n          />\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/pranathip.png\"\n            alt=\"@pranathip\"\n          />\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Avatar size=\"sm\">\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"CheckIcon\"\n              tabler=\"IconCheck\"\n              hugeicons=\"Tick02Icon\"\n              phosphor=\"CheckIcon\"\n              remixicon=\"RiCheckLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n        <Avatar>\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"CheckIcon\"\n              tabler=\"IconCheck\"\n              hugeicons=\"Tick02Icon\"\n              phosphor=\"CheckIcon\"\n              remixicon=\"RiCheckLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarFallback>PP</AvatarFallback>\n          <AvatarBadge>\n            <IconPlaceholder\n              lucide=\"CheckIcon\"\n              tabler=\"IconCheck\"\n              hugeicons=\"Tick02Icon\"\n              phosphor=\"CheckIcon\"\n              remixicon=\"RiCheckLine\"\n            />\n          </AvatarBadge>\n        </Avatar>\n      </div>\n    </Example>\n  )\n}\n\nfunction AvatarGroupExample() {\n  return (\n    <Example title=\"Group\">\n      <AvatarGroup>\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar size=\"lg\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n      </AvatarGroup>\n    </Example>\n  )\n}\n\nfunction AvatarGroupWithCount() {\n  return (\n    <Example title=\"Group with Count\">\n      <AvatarGroup>\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>+3</AvatarGroupCount>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>+3</AvatarGroupCount>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar size=\"lg\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>+3</AvatarGroupCount>\n      </AvatarGroup>\n    </Example>\n  )\n}\n\nfunction AvatarGroupWithIconCount() {\n  return (\n    <Example title=\"Group with Icon Count\">\n      <AvatarGroup>\n        <Avatar size=\"sm\">\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"sm\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n          />\n        </AvatarGroupCount>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n          />\n        </AvatarGroupCount>\n      </AvatarGroup>\n      <AvatarGroup>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/shadcn.png\"\n            alt=\"@shadcn\"\n            className=\"grayscale\"\n          />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n            className=\"grayscale\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar size=\"lg\">\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n            className=\"grayscale\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n        <AvatarGroupCount>\n          <IconPlaceholder\n            lucide=\"PlusIcon\"\n            tabler=\"IconPlus\"\n            hugeicons=\"PlusSignIcon\"\n            phosphor=\"PlusIcon\"\n            remixicon=\"RiAddLine\"\n          />\n        </AvatarGroupCount>\n      </AvatarGroup>\n    </Example>\n  )\n}\n\nfunction AvatarInEmpty() {\n  return (\n    <Example title=\"In Empty\">\n      <Empty className=\"w-full flex-none border\">\n        <EmptyHeader>\n          <EmptyMedia>\n            <AvatarGroup>\n              <Avatar size=\"lg\">\n                <AvatarImage\n                  src=\"https://github.com/shadcn.png\"\n                  alt=\"@shadcn\"\n                  className=\"grayscale\"\n                />\n                <AvatarFallback>CN</AvatarFallback>\n              </Avatar>\n              <Avatar size=\"lg\">\n                <AvatarImage\n                  src=\"https://github.com/maxleiter.png\"\n                  alt=\"@maxleiter\"\n                  className=\"grayscale\"\n                />\n                <AvatarFallback>LR</AvatarFallback>\n              </Avatar>\n              <Avatar size=\"lg\">\n                <AvatarImage\n                  src=\"https://github.com/evilrabbit.png\"\n                  alt=\"@evilrabbit\"\n                  className=\"grayscale\"\n                />\n                <AvatarFallback>ER</AvatarFallback>\n              </Avatar>\n              <AvatarGroupCount>\n                <IconPlaceholder\n                  lucide=\"PlusIcon\"\n                  tabler=\"IconPlus\"\n                  hugeicons=\"PlusSignIcon\"\n                  phosphor=\"PlusIcon\"\n                  remixicon=\"RiAddLine\"\n                />\n              </AvatarGroupCount>\n            </AvatarGroup>\n          </EmptyMedia>\n          <EmptyTitle>No Team Members</EmptyTitle>\n          <EmptyDescription>\n            Invite your team to collaborate on this project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <Button>\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n            Invite Members\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/badge-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Spinner } from \"@/registry/bases/radix/ui/spinner\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function BadgeExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1\">\n      <BadgeVariants />\n      <BadgeWithIconLeft />\n      <BadgeWithIconRight />\n      <BadgeWithSpinner />\n      <BadgeAsLink />\n      <BadgeLongText />\n      <BadgeCustomColors />\n    </ExampleWrapper>\n  )\n}\n\nfunction BadgeVariants() {\n  return (\n    <Example title=\"Variants\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge>Default</Badge>\n        <Badge variant=\"secondary\">Secondary</Badge>\n        <Badge variant=\"destructive\">Destructive</Badge>\n        <Badge variant=\"outline\">Outline</Badge>\n        <Badge variant=\"ghost\">Ghost</Badge>\n        <Badge variant=\"link\">Link</Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeWithIconLeft() {\n  return (\n    <Example title=\"Icon Left\" className=\"max-w-fit\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge>\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Default\n        </Badge>\n        <Badge variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Secondary\n        </Badge>\n        <Badge variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Destructive\n        </Badge>\n        <Badge variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Outline\n        </Badge>\n        <Badge variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Ghost\n        </Badge>\n        <Badge variant=\"link\">\n          <IconPlaceholder\n            lucide=\"BadgeCheck\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadge02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            data-icon=\"inline-start\"\n          />\n          Link\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeWithIconRight() {\n  return (\n    <Example title=\"Icon Right\" className=\"max-w-fit\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge>\n          Default\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"secondary\">\n          Secondary\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"destructive\">\n          Destructive\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"outline\">\n          Outline\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"ghost\">\n          Ghost\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n        <Badge variant=\"link\">\n          Link\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeWithSpinner() {\n  return (\n    <Example title=\"With Spinner\" className=\"max-w-fit\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge>\n          <Spinner data-icon=\"inline-start\" />\n          Default\n        </Badge>\n        <Badge variant=\"secondary\">\n          <Spinner data-icon=\"inline-start\" />\n          Secondary\n        </Badge>\n        <Badge variant=\"destructive\">\n          <Spinner data-icon=\"inline-start\" />\n          Destructive\n        </Badge>\n        <Badge variant=\"outline\">\n          <Spinner data-icon=\"inline-start\" />\n          Outline\n        </Badge>\n        <Badge variant=\"ghost\">\n          <Spinner data-icon=\"inline-start\" />\n          Ghost\n        </Badge>\n        <Badge variant=\"link\">\n          <Spinner data-icon=\"inline-start\" />\n          Link\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeAsLink() {\n  return (\n    <Example title=\"asChild\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge asChild>\n          <a href=\"#\">\n            Link{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRightIcon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n              data-icon=\"inline-end\"\n            />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"secondary\">\n          <a href=\"#\">\n            Link{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRightIcon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n              data-icon=\"inline-end\"\n            />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"destructive\">\n          <a href=\"#\">\n            Link{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRightIcon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n              data-icon=\"inline-end\"\n            />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"outline\">\n          <a href=\"#\">\n            Link{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowUpRightIcon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n              data-icon=\"inline-end\"\n            />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"ghost\">\n          <a href=\"#\">\n            Link{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight02Icon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n              data-icon=\"inline-end\"\n            />\n          </a>\n        </Badge>\n        <Badge asChild variant=\"link\">\n          <a href=\"#\">\n            Link{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowUpRightIcon\"\n              tabler=\"IconArrowUpRight\"\n              hugeicons=\"ArrowRight02Icon\"\n              phosphor=\"ArrowUpRightIcon\"\n              remixicon=\"RiArrowRightUpLine\"\n              data-icon=\"inline-end\"\n            />\n          </a>\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeLongText() {\n  return (\n    <Example title=\"Long Text\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge variant=\"secondary\">\n          A badge with a lot of text to see how it wraps\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction BadgeCustomColors() {\n  return (\n    <Example title=\"Custom Colors\" className=\"max-w-fit\">\n      <div className=\"flex flex-wrap gap-2\">\n        <Badge className=\"bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50\">\n          Blue\n        </Badge>\n        <Badge className=\"bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50\">\n          Green\n        </Badge>\n        <Badge className=\"bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50\">\n          Sky\n        </Badge>\n        <Badge className=\"bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50\">\n          Purple\n        </Badge>\n        <Badge className=\"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\">\n          Blue\n        </Badge>\n        <Badge className=\"bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300\">\n          Green\n        </Badge>\n        <Badge className=\"bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300\">\n          Sky\n        </Badge>\n        <Badge className=\"bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300\">\n          Purple\n        </Badge>\n        <Badge className=\"bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300\">\n          Red\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx",
    "content": "import Link from \"next/link\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/bases/radix/ui/breadcrumb\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\n\nexport default function BreadcrumbExample() {\n  return (\n    <ExampleWrapper>\n      <BreadcrumbBasic />\n      <BreadcrumbWithDropdown />\n      <BreadcrumbWithLink />\n    </ExampleWrapper>\n  )\n}\n\nfunction BreadcrumbBasic() {\n  return (\n    <Example title=\"Basic\" className=\"items-center justify-center\">\n      <Breadcrumb>\n        <BreadcrumbList>\n          <BreadcrumbItem>\n            <BreadcrumbLink href=\"#\">Home</BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbLink href=\"#\">Components</BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n          </BreadcrumbItem>\n        </BreadcrumbList>\n      </Breadcrumb>\n    </Example>\n  )\n}\n\nfunction BreadcrumbWithDropdown() {\n  return (\n    <Example title=\"With Dropdown\" className=\"items-center justify-center\">\n      <Breadcrumb>\n        <BreadcrumbList>\n          <BreadcrumbItem>\n            <BreadcrumbLink href=\"#\">Home</BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button size=\"icon-sm\" variant=\"ghost\">\n                  <BreadcrumbEllipsis />\n                  <span className=\"sr-only\">Toggle menu</span>\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"start\">\n                <DropdownMenuItem>Documentation</DropdownMenuItem>\n                <DropdownMenuItem>Themes</DropdownMenuItem>\n                <DropdownMenuItem>GitHub</DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbLink href=\"#\">Components</BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n          </BreadcrumbItem>\n        </BreadcrumbList>\n      </Breadcrumb>\n    </Example>\n  )\n}\n\nfunction BreadcrumbWithLink() {\n  return (\n    <Example title=\"With Link\" className=\"items-center justify-center\">\n      <Breadcrumb>\n        <BreadcrumbList>\n          <BreadcrumbItem>\n            <BreadcrumbLink asChild>\n              <Link href=\"#\">Home</Link>\n            </BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbEllipsis />\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbLink asChild>\n              <Link href=\"#\">Components</Link>\n            </BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          <BreadcrumbItem>\n            <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n          </BreadcrumbItem>\n        </BreadcrumbList>\n      </Breadcrumb>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/button-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ButtonExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1 2xl:grid-cols-1\">\n      <ButtonVariantsAndSizes />\n      <ButtonIconRight />\n      <ButtonIconLeft />\n      <ButtonIconOnly />\n      <ButtonInvalidStates />\n      <ButtonExamples />\n    </ExampleWrapper>\n  )\n}\n\nfunction ButtonVariantsAndSizes() {\n  return (\n    <Example title=\"Variants & Sizes\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"xs\">Default</Button>\n        <Button size=\"xs\" variant=\"secondary\">\n          Secondary\n        </Button>\n        <Button size=\"xs\" variant=\"outline\">\n          Outline\n        </Button>\n        <Button size=\"xs\" variant=\"ghost\">\n          Ghost\n        </Button>\n        <Button size=\"xs\" variant=\"destructive\">\n          Destructive\n        </Button>\n        <Button size=\"xs\" variant=\"link\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"sm\">Default</Button>\n        <Button size=\"sm\" variant=\"secondary\">\n          Secondary\n        </Button>\n        <Button size=\"sm\" variant=\"outline\">\n          Outline\n        </Button>\n        <Button size=\"sm\" variant=\"ghost\">\n          Ghost\n        </Button>\n        <Button size=\"sm\" variant=\"destructive\">\n          Destructive\n        </Button>\n        <Button size=\"sm\" variant=\"link\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button>Default</Button>\n        <Button variant=\"secondary\">Secondary</Button>\n        <Button variant=\"outline\">Outline</Button>\n        <Button variant=\"ghost\">Ghost</Button>\n        <Button variant=\"destructive\">Destructive</Button>\n        <Button variant=\"link\">Link</Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"lg\">Default</Button>\n        <Button size=\"lg\" variant=\"secondary\">\n          Secondary\n        </Button>\n        <Button size=\"lg\" variant=\"outline\">\n          Outline\n        </Button>\n        <Button size=\"lg\" variant=\"ghost\">\n          Ghost\n        </Button>\n        <Button size=\"lg\" variant=\"destructive\">\n          Destructive\n        </Button>\n        <Button size=\"lg\" variant=\"link\">\n          Link\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonIconRight() {\n  return (\n    <Example title=\"Icon Right\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"xs\">\n          Default{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"secondary\">\n          Secondary{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"outline\">\n          Outline{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"ghost\">\n          Ghost{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"destructive\">\n          Destructive{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"xs\" variant=\"link\">\n          Link{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"sm\">\n          Default\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"secondary\">\n          Secondary{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"outline\">\n          Outline{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"ghost\">\n          Ghost{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"destructive\">\n          Destructive{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"sm\" variant=\"link\">\n          Link{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button>\n          Default{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"secondary\">\n          Secondary{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"outline\">\n          Outline{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"ghost\">\n          Ghost{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"destructive\">\n          Destructive{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button variant=\"link\">\n          Link{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"lg\">\n          Default{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"secondary\">\n          Secondary{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"outline\">\n          Outline{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"ghost\">\n          Ghost{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"destructive\">\n          Destructive{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n        <Button size=\"lg\" variant=\"link\">\n          Link{\" \"}\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonIconLeft() {\n  return (\n    <Example title=\"Icon Left\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"xs\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Default\n        </Button>\n        <Button size=\"xs\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Secondary\n        </Button>\n        <Button size=\"xs\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Outline\n        </Button>\n        <Button size=\"xs\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Ghost\n        </Button>\n        <Button size=\"xs\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Destructive\n        </Button>\n        <Button size=\"xs\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"sm\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Default\n        </Button>\n        <Button size=\"sm\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Secondary\n        </Button>\n        <Button size=\"sm\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Outline\n        </Button>\n        <Button size=\"sm\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Ghost\n        </Button>\n        <Button size=\"sm\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Destructive\n        </Button>\n        <Button size=\"sm\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button>\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Default\n        </Button>\n        <Button variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Secondary\n        </Button>\n        <Button variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Outline\n        </Button>\n        <Button variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Ghost\n        </Button>\n        <Button variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Destructive\n        </Button>\n        <Button variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"lg\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Default\n        </Button>\n        <Button size=\"lg\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Secondary\n        </Button>\n        <Button size=\"lg\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Outline\n        </Button>\n        <Button size=\"lg\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Ghost\n        </Button>\n        <Button size=\"lg\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Destructive\n        </Button>\n        <Button size=\"lg\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftCircleIcon\"\n            hugeicons=\"CircleArrowLeft02Icon\"\n            tabler=\"IconCircleArrowLeft\"\n            phosphor=\"ArrowCircleLeftIcon\"\n            remixicon=\"RiArrowLeftCircleLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Link\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonIconOnly() {\n  return (\n    <Example title=\"Icon Only\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"icon-xs\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-xs\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"icon-sm\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-sm\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"icon\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"icon-lg\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"secondary\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"ghost\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"destructive\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n        <Button size=\"icon-lg\" variant=\"link\">\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight02Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonExamples() {\n  return (\n    <Example title=\"Examples\">\n      <div className=\"flex flex-wrap items-center gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"outline\">Cancel</Button>\n          <Button>\n            Submit{\" \"}\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight02Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n              data-icon=\"inline-end\"\n            />\n          </Button>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"destructive\">Delete</Button>\n          <Button size=\"icon\">\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight02Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n              data-icon=\"inline-end\"\n            />\n          </Button>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonInvalidStates() {\n  return (\n    <Example title=\"Invalid States\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"xs\" aria-invalid=\"true\">\n          Default\n        </Button>\n        <Button size=\"xs\" variant=\"secondary\" aria-invalid=\"true\">\n          Secondary\n        </Button>\n        <Button size=\"xs\" variant=\"outline\" aria-invalid=\"true\">\n          Outline\n        </Button>\n        <Button size=\"xs\" variant=\"ghost\" aria-invalid=\"true\">\n          Ghost\n        </Button>\n        <Button size=\"xs\" variant=\"destructive\" aria-invalid=\"true\">\n          Destructive\n        </Button>\n        <Button size=\"xs\" variant=\"link\" aria-invalid=\"true\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"sm\" aria-invalid=\"true\">\n          Default\n        </Button>\n        <Button size=\"sm\" variant=\"secondary\" aria-invalid=\"true\">\n          Secondary\n        </Button>\n        <Button size=\"sm\" variant=\"outline\" aria-invalid=\"true\">\n          Outline\n        </Button>\n        <Button size=\"sm\" variant=\"ghost\" aria-invalid=\"true\">\n          Ghost\n        </Button>\n        <Button size=\"sm\" variant=\"destructive\" aria-invalid=\"true\">\n          Destructive\n        </Button>\n        <Button size=\"sm\" variant=\"link\" aria-invalid=\"true\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button aria-invalid=\"true\">Default</Button>\n        <Button variant=\"secondary\" aria-invalid=\"true\">\n          Secondary\n        </Button>\n        <Button variant=\"outline\" aria-invalid=\"true\">\n          Outline\n        </Button>\n        <Button variant=\"ghost\" aria-invalid=\"true\">\n          Ghost\n        </Button>\n        <Button variant=\"destructive\" aria-invalid=\"true\">\n          Destructive\n        </Button>\n        <Button variant=\"link\" aria-invalid=\"true\">\n          Link\n        </Button>\n      </div>\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Button size=\"lg\" aria-invalid=\"true\">\n          Default\n        </Button>\n        <Button size=\"lg\" variant=\"secondary\" aria-invalid=\"true\">\n          Secondary\n        </Button>\n        <Button size=\"lg\" variant=\"outline\" aria-invalid=\"true\">\n          Outline\n        </Button>\n        <Button size=\"lg\" variant=\"ghost\" aria-invalid=\"true\">\n          Ghost\n        </Button>\n        <Button size=\"lg\" variant=\"destructive\" aria-invalid=\"true\">\n          Destructive\n        </Button>\n        <Button size=\"lg\" variant=\"link\" aria-invalid=\"true\">\n          Link\n        </Button>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/button-group-example.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupText,\n} from \"@/registry/bases/radix/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/radix/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ButtonGroupExample() {\n  return (\n    <ExampleWrapper>\n      <ButtonGroupBasic />\n      <ButtonGroupWithInput />\n      <ButtonGroupWithText />\n      <ButtonGroupWithDropdown />\n      <ButtonGroupWithSelect />\n      <ButtonGroupWithIcons />\n      <ButtonGroupWithInputGroup />\n      <ButtonGroupWithFields />\n      <ButtonGroupWithLike />\n      <ButtonGroupWithSelectAndInput />\n      <ButtonGroupNested />\n      <ButtonGroupPagination />\n      <ButtonGroupPaginationSplit />\n      <ButtonGroupNavigation />\n      <ButtonGroupTextAlignment />\n      <ButtonGroupVertical />\n      <ButtonGroupVerticalNested />\n    </ExampleWrapper>\n  )\n}\n\nfunction ButtonGroupBasic() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <Button variant=\"outline\">Button</Button>\n          <Button variant=\"outline\">Another Button</Button>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithInput() {\n  return (\n    <Example title=\"With Input\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <Button variant=\"outline\">Button</Button>\n          <Input placeholder=\"Type something here...\" />\n        </ButtonGroup>\n        <ButtonGroup>\n          <Input placeholder=\"Type something here...\" />\n          <Button variant=\"outline\">Button</Button>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithText() {\n  return (\n    <Example title=\"With Text\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <ButtonGroupText>Text</ButtonGroupText>\n          <Button variant=\"outline\">Another Button</Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <ButtonGroupText asChild>\n            <Label htmlFor=\"input-text\">GPU Size</Label>\n          </ButtonGroupText>\n          <Input id=\"input-text\" placeholder=\"Type something here...\" />\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithDropdown() {\n  return (\n    <Example title=\"With Dropdown\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <Button variant=\"outline\">Update</Button>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"outline\" size=\"icon\">\n                <IconPlaceholder\n                  lucide=\"ChevronDownIcon\"\n                  tabler=\"IconChevronDown\"\n                  hugeicons=\"ArrowDown01Icon\"\n                  phosphor=\"CaretDownIcon\"\n                  remixicon=\"RiArrowDownSLine\"\n                />\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\">\n              <DropdownMenuItem>Disable</DropdownMenuItem>\n              <DropdownMenuItem variant=\"destructive\">\n                Uninstall\n              </DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">Follow</Button>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"outline\" size=\"icon\">\n                <IconPlaceholder\n                  lucide=\"ChevronDownIcon\"\n                  tabler=\"IconChevronDown\"\n                  hugeicons=\"ArrowDown01Icon\"\n                  phosphor=\"CaretDownIcon\"\n                  remixicon=\"RiArrowDownSLine\"\n                />\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"w-50\">\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"VolumeOffIcon\"\n                    tabler=\"IconVolume\"\n                    hugeicons=\"VolumeOffIcon\"\n                    phosphor=\"SpeakerSlashIcon\"\n                    remixicon=\"RiVolumeMuteLine\"\n                  />\n                  Mute Conversation\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"CheckIcon\"\n                    tabler=\"IconCheck\"\n                    hugeicons=\"Tick02Icon\"\n                    phosphor=\"CheckIcon\"\n                    remixicon=\"RiCheckLine\"\n                  />\n                  Mark as Read\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"AlertTriangleIcon\"\n                    tabler=\"IconAlertTriangle\"\n                    hugeicons=\"AlertCircleIcon\"\n                    phosphor=\"WarningIcon\"\n                    remixicon=\"RiErrorWarningLine\"\n                  />\n                  Report Conversation\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"UserRoundXIcon\"\n                    tabler=\"IconUserX\"\n                    hugeicons=\"UserRemove01Icon\"\n                    phosphor=\"UserMinusIcon\"\n                    remixicon=\"RiUserUnfollowLine\"\n                  />\n                  Block User\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare\"\n                    hugeicons=\"Share03Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                  />\n                  Share Conversation\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"Copy01Icon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                  Copy Conversation\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem variant=\"destructive\">\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  Delete Conversation\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithSelect() {\n  const [currency, setCurrency] = useState(\"$\")\n\n  return (\n    <Example title=\"With Select\">\n      <Field>\n        <Label htmlFor=\"amount\">Amount</Label>\n        <ButtonGroup>\n          <Select value={currency} onValueChange={setCurrency}>\n            <SelectTrigger>\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent align=\"start\">\n              <SelectGroup>\n                <SelectItem value=\"$\">$</SelectItem>\n                <SelectItem value=\"€\">€</SelectItem>\n                <SelectItem value=\"£\">£</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <Input placeholder=\"Enter amount to send\" />\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight01Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </Field>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <div className=\"flex flex-col gap-4\">\n        <ButtonGroup>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"FlipHorizontalIcon\"\n              tabler=\"IconFlipHorizontal\"\n              hugeicons=\"FlipHorizontalIcon\"\n              phosphor=\"ArrowsHorizontalIcon\"\n              remixicon=\"RiArrowLeftRightLine\"\n            />\n          </Button>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"FlipVerticalIcon\"\n              tabler=\"IconFlipVertical\"\n              hugeicons=\"FlipVerticalIcon\"\n              phosphor=\"ArrowsVerticalIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n            />\n          </Button>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"RotateCwIcon\"\n              tabler=\"IconRotateClockwise2\"\n              hugeicons=\"Rotate01Icon\"\n              phosphor=\"ArrowClockwiseIcon\"\n              remixicon=\"RiRefreshLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithInputGroup() {\n  return (\n    <Example title=\"With Input Group\">\n      <div className=\"flex flex-col gap-4\">\n        <InputGroup>\n          <InputGroupInput placeholder=\"Type to search...\" />\n          <InputGroupAddon\n            align=\"inline-start\"\n            className=\"text-muted-foreground\"\n          >\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"Search01Icon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </InputGroupAddon>\n        </InputGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithFields() {\n  return (\n    <Example title=\"With Fields\">\n      <FieldGroup className=\"grid grid-cols-3 gap-4\">\n        <Field className=\"col-span-2\">\n          <Label htmlFor=\"width\">Width</Label>\n          <ButtonGroup>\n            <InputGroup>\n              <InputGroupInput id=\"width\" />\n              <InputGroupAddon className=\"text-muted-foreground\">\n                W\n              </InputGroupAddon>\n              <InputGroupAddon\n                align=\"inline-end\"\n                className=\"text-muted-foreground\"\n              >\n                px\n              </InputGroupAddon>\n            </InputGroup>\n            <Button variant=\"outline\" size=\"icon\">\n              <IconPlaceholder\n                lucide=\"MinusIcon\"\n                tabler=\"IconMinus\"\n                hugeicons=\"MinusSignIcon\"\n                phosphor=\"MinusIcon\"\n                remixicon=\"RiSubtractLine\"\n              />\n            </Button>\n            <Button variant=\"outline\" size=\"icon\">\n              <IconPlaceholder\n                lucide=\"PlusIcon\"\n                tabler=\"IconPlus\"\n                hugeicons=\"PlusSignIcon\"\n                phosphor=\"PlusIcon\"\n                remixicon=\"RiAddLine\"\n              />\n            </Button>\n          </ButtonGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithLike() {\n  return (\n    <Example title=\"With Like\">\n      <ButtonGroup>\n        <Button variant=\"outline\">\n          <IconPlaceholder\n            lucide=\"HeartIcon\"\n            tabler=\"IconBell\"\n            hugeicons=\"Notification02Icon\"\n            phosphor=\"HeartIcon\"\n            remixicon=\"RiHeartLine\"\n            data-icon=\"inline-start\"\n          />{\" \"}\n          Like\n        </Button>\n        <Button variant=\"outline\" asChild size=\"icon\" className=\"w-12\">\n          <span>1.2K</span>\n        </Button>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupWithSelectAndInput() {\n  return (\n    <Example title=\"With Select and Input\">\n      <ButtonGroup>\n        <Select defaultValue=\"hours\">\n          <SelectTrigger id=\"duration\">\n            <SelectValue placeholder=\"Select duration\" />\n          </SelectTrigger>\n          <SelectContent align=\"start\">\n            <SelectGroup>\n              <SelectItem value=\"hours\">Hours</SelectItem>\n              <SelectItem value=\"days\">Days</SelectItem>\n              <SelectItem value=\"weeks\">Weeks</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Input />\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupNested() {\n  return (\n    <Example title=\"Nested\">\n      <ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <InputGroup>\n            <InputGroupInput placeholder=\"Send a message...\" />\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <InputGroupAddon align=\"inline-end\">\n                  <IconPlaceholder\n                    lucide=\"AudioLinesIcon\"\n                    tabler=\"IconHeadphones\"\n                    hugeicons=\"AudioWave01Icon\"\n                    phosphor=\"MicrophoneIcon\"\n                    remixicon=\"RiMicLine\"\n                  />\n                </InputGroupAddon>\n              </TooltipTrigger>\n              <TooltipContent>Voice Mode</TooltipContent>\n            </Tooltip>\n          </InputGroup>\n        </ButtonGroup>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupPagination() {\n  return (\n    <Example title=\"Pagination\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          <IconPlaceholder\n            lucide=\"ArrowLeftIcon\"\n            tabler=\"IconArrowLeft\"\n            hugeicons=\"ArrowLeft01Icon\"\n            phosphor=\"ArrowLeftIcon\"\n            remixicon=\"RiArrowLeftLine\"\n            data-icon=\"inline-start\"\n          />\n          Previous\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          1\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          2\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          3\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          4\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          5\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Next\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight01Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n            data-icon=\"inline-end\"\n          />\n        </Button>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupPaginationSplit() {\n  return (\n    <Example title=\"Pagination Split\">\n      <ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"sm\">\n            1\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            2\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            3\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            4\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            5\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"icon-xs\">\n            <IconPlaceholder\n              lucide=\"ArrowLeftIcon\"\n              tabler=\"IconArrowLeft\"\n              hugeicons=\"ArrowLeft01Icon\"\n              phosphor=\"ArrowLeftIcon\"\n              remixicon=\"RiArrowLeftLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon-xs\">\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight01Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupNavigation() {\n  return (\n    <Example title=\"Navigation\">\n      <ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"ArrowLeftIcon\"\n              tabler=\"IconArrowLeft\"\n              hugeicons=\"ArrowLeft01Icon\"\n              phosphor=\"ArrowLeftIcon\"\n              remixicon=\"RiArrowLeftLine\"\n            />\n          </Button>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"ArrowRightIcon\"\n              tabler=\"IconArrowRight\"\n              hugeicons=\"ArrowRight01Icon\"\n              phosphor=\"ArrowRightIcon\"\n              remixicon=\"RiArrowRightLine\"\n            />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup aria-label=\"Single navigation button\">\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"ArrowLeftIcon\"\n              tabler=\"IconArrowLeft\"\n              hugeicons=\"ArrowLeft01Icon\"\n              phosphor=\"ArrowLeftIcon\"\n              remixicon=\"RiArrowLeftLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </ButtonGroup>\n    </Example>\n  )\n}\n\nfunction ButtonGroupTextAlignment() {\n  return (\n    <Example title=\"Text Alignment\">\n      <Field>\n        <Label id=\"alignment-label\">Text Alignment</Label>\n        <ButtonGroup aria-labelledby=\"alignment-label\">\n          <Button variant=\"outline\" size=\"sm\">\n            Left\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            Center\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            Right\n          </Button>\n          <Button variant=\"outline\" size=\"sm\">\n            Justify\n          </Button>\n        </ButtonGroup>\n      </Field>\n    </Example>\n  )\n}\n\nfunction ButtonGroupVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <div className=\"flex gap-6\">\n        <ButtonGroup\n          orientation=\"vertical\"\n          aria-label=\"Media controls\"\n          className=\"h-fit\"\n        >\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"MinusIcon\"\n              tabler=\"IconMinus\"\n              hugeicons=\"MinusSignIcon\"\n              phosphor=\"MinusIcon\"\n              remixicon=\"RiSubtractLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ButtonGroupVerticalNested() {\n  return (\n    <Example title=\"Vertical Nested\">\n      <ButtonGroup orientation=\"vertical\" aria-label=\"Design tools palette\">\n        <ButtonGroup orientation=\"vertical\">\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"Search01Icon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"CopyIcon\"\n              tabler=\"IconCopy\"\n              hugeicons=\"Copy01Icon\"\n              phosphor=\"CopyIcon\"\n              remixicon=\"RiFileCopyLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"ShareIcon\"\n              tabler=\"IconShare\"\n              hugeicons=\"Share03Icon\"\n              phosphor=\"ShareIcon\"\n              remixicon=\"RiShareLine\"\n            />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup orientation=\"vertical\">\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"FlipHorizontalIcon\"\n              tabler=\"IconFlipHorizontal\"\n              hugeicons=\"FlipHorizontalIcon\"\n              phosphor=\"ArrowsHorizontalIcon\"\n              remixicon=\"RiArrowLeftRightLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"FlipVerticalIcon\"\n              tabler=\"IconFlipVertical\"\n              hugeicons=\"FlipVerticalIcon\"\n              phosphor=\"ArrowsVerticalIcon\"\n              remixicon=\"RiArrowUpDownLine\"\n            />\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"RotateCwIcon\"\n              tabler=\"IconRotateClockwise2\"\n              hugeicons=\"Rotate01Icon\"\n              phosphor=\"ArrowClockwiseIcon\"\n              remixicon=\"RiRefreshLine\"\n            />\n          </Button>\n        </ButtonGroup>\n        <ButtonGroup>\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"TrashIcon\"\n              tabler=\"IconTrash\"\n              hugeicons=\"Delete02Icon\"\n              phosphor=\"TrashIcon\"\n              remixicon=\"RiDeleteBinLine\"\n            />\n          </Button>\n        </ButtonGroup>\n      </ButtonGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/calendar-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays, format } from \"date-fns\"\nimport { type DateRange } from \"react-day-picker\"\nimport { es } from \"react-day-picker/locale\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Calendar, CalendarDayButton } from \"@/registry/bases/radix/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/radix/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/bases/radix/ui/popover\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CalendarExample() {\n  return (\n    <ExampleWrapper>\n      <CalendarSingle />\n      <CalendarMultiple />\n      <CalendarWeekNumbers />\n      <CalendarBookedDates />\n      <CalendarRange />\n      <CalendarRangeMultipleMonths />\n      <CalendarWithTime />\n      <CalendarWithPresets />\n      <CalendarCustomDays />\n      <DatePickerSimple />\n      <DataPickerWithDropdowns />\n      <DatePickerWithRange />\n      <CalendarInCard />\n      <CalendarInPopover />\n    </ExampleWrapper>\n  )\n}\n\nfunction CalendarInCard() {\n  return (\n    <Example title=\"In Card\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar mode=\"single\" />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarInPopover() {\n  return (\n    <Example title=\"In Popover\">\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" className=\"px-2.5 font-normal\">\n            <IconPlaceholder\n              lucide=\"CalendarIcon\"\n              tabler=\"IconCalendar\"\n              hugeicons=\"CalendarIcon\"\n              phosphor=\"CalendarBlankIcon\"\n              remixicon=\"RiCalendarLine\"\n              data-icon=\"inline-start\"\n            />\n            Open Calendar\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar mode=\"single\" />\n        </PopoverContent>\n      </Popover>\n    </Example>\n  )\n}\n\nfunction CalendarSingle() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n  return (\n    <Example title=\"Single\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            captionLayout=\"dropdown\"\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarMultiple() {\n  return (\n    <Example title=\"Multiple\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar mode=\"multiple\" />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarRange() {\n  const [dateRange, setDateRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 12),\n    to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\n  })\n\n  return (\n    <Example\n      title=\"Range\"\n      containerClassName=\"lg:col-span-full 2xl:col-span-full\"\n      className=\"p-12\"\n    >\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"range\"\n            defaultMonth={dateRange?.from}\n            selected={dateRange}\n            onSelect={setDateRange}\n            numberOfMonths={2}\n            disabled={(date) =>\n              date > new Date() || date < new Date(\"1900-01-01\")\n            }\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarRangeMultipleMonths() {\n  const [range, setRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 3, 12),\n    to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\n  })\n\n  return (\n    <Example\n      title=\"Range Multiple Months\"\n      containerClassName=\"lg:col-span-full 2xl:col-span-full\"\n      className=\"p-12\"\n    >\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"range\"\n            defaultMonth={range?.from}\n            selected={range}\n            onSelect={setRange}\n            numberOfMonths={3}\n            locale={es}\n            fixedWeeks\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarBookedDates() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 3)\n  )\n  const bookedDates = Array.from(\n    { length: 15 },\n    (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\n  )\n\n  return (\n    <Example title=\"Booked Dates\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"single\"\n            defaultMonth={date}\n            selected={date}\n            onSelect={setDate}\n            disabled={bookedDates}\n            modifiers={{\n              booked: bookedDates,\n            }}\n            modifiersClassNames={{\n              booked: \"[&>button]:line-through opacity-100\",\n            }}\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarWithTime() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n  )\n\n  return (\n    <Example title=\"With Time\">\n      <Card size=\"sm\" className=\"mx-auto w-fit\">\n        <CardContent>\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            className=\"p-0\"\n          />\n        </CardContent>\n        <CardFooter className=\"border-t bg-card\">\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"time-from\">Start Time</FieldLabel>\n              <InputGroup>\n                <InputGroupInput\n                  id=\"time-from\"\n                  type=\"time\"\n                  step=\"1\"\n                  defaultValue=\"10:30:00\"\n                  className=\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n                />\n                <InputGroupAddon>\n                  <IconPlaceholder\n                    lucide=\"Clock2Icon\"\n                    tabler=\"IconClockHour2\"\n                    hugeicons=\"Clock03Icon\"\n                    phosphor=\"ClockIcon\"\n                    remixicon=\"RiTimeLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"time-to\">End Time</FieldLabel>\n              <InputGroup>\n                <InputGroupInput\n                  id=\"time-to\"\n                  type=\"time\"\n                  step=\"1\"\n                  defaultValue=\"12:30:00\"\n                  className=\"appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n                />\n                <InputGroupAddon>\n                  <IconPlaceholder\n                    lucide=\"Clock2Icon\"\n                    tabler=\"IconClockHour2\"\n                    hugeicons=\"Clock03Icon\"\n                    phosphor=\"ClockIcon\"\n                    remixicon=\"RiTimeLine\"\n                    className=\"text-muted-foreground\"\n                  />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n          </FieldGroup>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarCustomDays() {\n  const [range, setRange] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 11, 8),\n    to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\n  })\n\n  return (\n    <Example title=\"Custom Days\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"range\"\n            defaultMonth={range?.from}\n            selected={range}\n            onSelect={setRange}\n            numberOfMonths={1}\n            captionLayout=\"dropdown\"\n            className=\"[--cell-size:--spacing(10)] md:[--cell-size:--spacing(12)]\"\n            formatters={{\n              formatMonthDropdown: (date) => {\n                return date.toLocaleString(\"default\", { month: \"long\" })\n              },\n            }}\n            components={{\n              DayButton: ({ children, modifiers, day, ...props }) => {\n                const isWeekend =\n                  day.date.getDay() === 0 || day.date.getDay() === 6\n\n                return (\n                  <CalendarDayButton day={day} modifiers={modifiers} {...props}>\n                    {children}\n                    {!modifiers.outside && (\n                      <span>{isWeekend ? \"$120\" : \"$100\"}</span>\n                    )}\n                  </CalendarDayButton>\n                )\n              },\n            }}\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CalendarWithPresets() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 12)\n  )\n  const [currentMonth, setCurrentMonth] = React.useState<Date>(\n    new Date(new Date().getFullYear(), new Date().getMonth(), 1)\n  )\n\n  return (\n    <Example title=\"With Presets\">\n      <Card className=\"mx-auto w-fit max-w-[300px]\" size=\"sm\">\n        <CardContent className=\"px-4\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={setDate}\n            month={currentMonth}\n            onMonthChange={setCurrentMonth}\n            fixedWeeks\n            className=\"p-0 [--cell-size:--spacing(9.5)]\"\n          />\n        </CardContent>\n        <CardFooter className=\"flex flex-wrap gap-2 border-t\">\n          {[\n            { label: \"Today\", value: 0 },\n            { label: \"Tomorrow\", value: 1 },\n            { label: \"In 3 days\", value: 3 },\n            { label: \"In a week\", value: 7 },\n            { label: \"In 2 weeks\", value: 14 },\n          ].map((preset) => (\n            <Button\n              key={preset.value}\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"flex-1\"\n              onClick={() => {\n                const newDate = addDays(new Date(), preset.value)\n                setDate(newDate)\n                setCurrentMonth(\n                  new Date(newDate.getFullYear(), newDate.getMonth(), 1)\n                )\n              }}\n            >\n              {preset.label}\n            </Button>\n          ))}\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction DatePickerSimple() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Example title=\"Date Picker Simple\">\n      <Field className=\"mx-auto w-72\">\n        <FieldLabel htmlFor=\"date-picker-simple\">Date</FieldLabel>\n        <Popover>\n          <PopoverTrigger asChild>\n            <Button\n              variant=\"outline\"\n              id=\"date-picker-simple\"\n              className=\"justify-start px-2.5 font-normal\"\n            >\n              <IconPlaceholder\n                lucide=\"CalendarIcon\"\n                tabler=\"IconCalendar\"\n                hugeicons=\"CalendarIcon\"\n                phosphor=\"CalendarBlankIcon\"\n                remixicon=\"RiCalendarLine\"\n                data-icon=\"inline-start\"\n              />\n              {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n            </Button>\n          </PopoverTrigger>\n          <PopoverContent className=\"w-auto p-0\" align=\"start\">\n            <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n          </PopoverContent>\n        </Popover>\n      </Field>\n    </Example>\n  )\n}\n\nfunction DatePickerWithRange() {\n  const [date, setDate] = React.useState<DateRange | undefined>({\n    from: new Date(new Date().getFullYear(), 0, 20),\n    to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\n  })\n\n  return (\n    <Example title=\"Date Picker Range\">\n      <Field className=\"mx-auto w-72\">\n        <FieldLabel htmlFor=\"date-picker-range\">Date Picker Range</FieldLabel>\n        <Popover>\n          <PopoverTrigger asChild>\n            <Button\n              id=\"date-picker-range\"\n              variant=\"outline\"\n              className=\"justify-start px-2.5 font-normal\"\n            >\n              <IconPlaceholder\n                lucide=\"CalendarIcon\"\n                tabler=\"IconCalendar\"\n                hugeicons=\"CalendarIcon\"\n                phosphor=\"CalendarBlankIcon\"\n                remixicon=\"RiCalendarLine\"\n                data-icon=\"inline-start\"\n              />\n              {date?.from ? (\n                date.to ? (\n                  <>\n                    {format(date.from, \"LLL dd, y\")} -{\" \"}\n                    {format(date.to, \"LLL dd, y\")}\n                  </>\n                ) : (\n                  format(date.from, \"LLL dd, y\")\n                )\n              ) : (\n                <span>Pick a date</span>\n              )}\n            </Button>\n          </PopoverTrigger>\n          <PopoverContent className=\"w-auto p-0\" align=\"start\">\n            <Calendar\n              mode=\"range\"\n              defaultMonth={date?.from}\n              selected={date}\n              onSelect={setDate}\n              numberOfMonths={2}\n            />\n          </PopoverContent>\n        </Popover>\n      </Field>\n    </Example>\n  )\n}\n\nfunction DataPickerWithDropdowns() {\n  const [date, setDate] = React.useState<Date>()\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Date Picker with Dropdowns\">\n      <Field className=\"mx-auto w-72\">\n        <Popover open={open} onOpenChange={setOpen}>\n          <FieldLabel htmlFor=\"date-picker-with-dropdowns-desktop\">\n            Date\n          </FieldLabel>\n          <PopoverTrigger asChild>\n            <Button\n              variant=\"outline\"\n              id=\"date-picker-with-dropdowns-desktop\"\n              className=\"justify-start px-2.5 font-normal\"\n            >\n              {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n              <IconPlaceholder\n                lucide=\"ChevronDownIcon\"\n                tabler=\"IconChevronDown\"\n                hugeicons=\"ArrowDownIcon\"\n                phosphor=\"CaretDownIcon\"\n                remixicon=\"RiArrowDownSLine\"\n                data-icon=\"inline-start\"\n                className=\"ml-auto\"\n              />\n            </Button>\n          </PopoverTrigger>\n          <PopoverContent className=\"w-auto p-0\" align=\"start\">\n            <Calendar\n              mode=\"single\"\n              selected={date}\n              onSelect={setDate}\n              captionLayout=\"dropdown\"\n            />\n            <div className=\"flex gap-2 border-t p-2\">\n              <Button\n                variant=\"outline\"\n                size=\"sm\"\n                className=\"w-full\"\n                onClick={() => setOpen(false)}\n              >\n                Done\n              </Button>\n            </div>\n          </PopoverContent>\n        </Popover>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CalendarWeekNumbers() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(new Date().getFullYear(), 1, 3)\n  )\n\n  return (\n    <Example title=\"Week Numbers\" className=\"justify-center\">\n      <Card className=\"mx-auto w-fit p-0\">\n        <CardContent className=\"p-0\">\n          <Calendar\n            mode=\"single\"\n            defaultMonth={date}\n            selected={date}\n            onSelect={setDate}\n            showWeekNumber\n          />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/card-example.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CardExample() {\n  return (\n    <ExampleWrapper>\n      <CardDefault />\n      <CardSmall />\n      <CardHeaderWithBorder />\n      <CardFooterWithBorder />\n      <CardHeaderWithBorderSmall />\n      <CardFooterWithBorderSmall />\n      <CardWithImage />\n      <CardWithImageSmall />\n      <CardLogin />\n      <CardMeetingNotes />\n    </ExampleWrapper>\n  )\n}\n\nfunction CardLogin() {\n  return (\n    <Example title=\"Login\">\n      <Card className=\"mx-auto w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Login to your account</CardTitle>\n          <CardDescription>\n            Enter your email below to login to your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto inline-block underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <Button type=\"submit\" className=\"w-full\">\n            Login\n          </Button>\n          <Button variant=\"outline\" className=\"w-full\">\n            Login with Google\n          </Button>\n          <div className=\"mt-4 text-center style-nova:mt-2\">\n            Don&apos;t have an account?{\" \"}\n            <a href=\"#\" className=\"underline underline-offset-4\">\n              Sign up\n            </a>\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardMeetingNotes() {\n  return (\n    <Example title=\"Meeting Notes\">\n      <Card className=\"mx-auto w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Meeting Notes</CardTitle>\n          <CardDescription>\n            Transcript from the meeting with the client.\n          </CardDescription>\n          <CardAction>\n            <Button variant=\"outline\" size=\"sm\">\n              <IconPlaceholder\n                lucide=\"CaptionsIcon\"\n                tabler=\"IconTextCaption\"\n                hugeicons=\"TextCheckIcon\"\n                phosphor=\"TextTIcon\"\n                remixicon=\"RiTextWrap\"\n                data-icon=\"inline-start\"\n              />\n              Transcribe\n            </Button>\n          </CardAction>\n        </CardHeader>\n        <CardContent>\n          <p>\n            Client requested dashboard redesign with focus on mobile\n            responsiveness.\n          </p>\n          <ol className=\"mt-4 flex list-decimal flex-col gap-2 pl-6\">\n            <li>New analytics widgets for daily/weekly metrics</li>\n            <li>Simplified navigation menu</li>\n            <li>Dark mode support</li>\n            <li>Timeline: 6 weeks</li>\n            <li>Follow-up meeting scheduled for next Tuesday</li>\n          </ol>\n        </CardContent>\n        <CardFooter>\n          <AvatarGroup>\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n            <AvatarGroupCount>+8</AvatarGroupCount>\n          </AvatarGroup>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardWithImage() {\n  return (\n    <Example title=\"With Image\">\n      <Card size=\"default\" className=\"relative mx-auto w-full max-w-sm pt-0\">\n        <div className=\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\" />\n        <img\n          src=\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n          alt=\"Photo by mymind on Unsplash\"\n          title=\"Photo by mymind on Unsplash\"\n          className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\"\n        />\n        <CardHeader>\n          <CardTitle>Beautiful Landscape</CardTitle>\n          <CardDescription>\n            A stunning view that captures the essence of natural beauty.\n          </CardDescription>\n        </CardHeader>\n        <CardFooter>\n          <Button className=\"w-full\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"Add01Icon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardWithImageSmall() {\n  return (\n    <Example title=\"With Image (Small)\">\n      <Card size=\"sm\" className=\"relative mx-auto w-full max-w-sm pt-0\">\n        <div className=\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\" />\n        <img\n          src=\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n          alt=\"Photo by mymind on Unsplash\"\n          title=\"Photo by mymind on Unsplash\"\n          className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\"\n        />\n        <CardHeader>\n          <CardTitle>Beautiful Landscape</CardTitle>\n          <CardDescription>\n            A stunning view that captures the essence of natural beauty.\n          </CardDescription>\n        </CardHeader>\n        <CardFooter>\n          <Button size=\"sm\" className=\"w-full\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"Add01Icon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardHeaderWithBorder() {\n  return (\n    <Example title=\"Header with Border\">\n      <Card className=\"mx-auto w-full max-w-sm\">\n        <CardHeader className=\"border-b\">\n          <CardTitle>Header with Border</CardTitle>\n          <CardDescription>\n            This is a card with a header that has a bottom border.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p>\n            The header has a border-b class applied, creating a visual\n            separation between the header and content sections.\n          </p>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardFooterWithBorder() {\n  return (\n    <Example title=\"Footer with Border\">\n      <Card className=\"mx-auto w-full max-w-sm\">\n        <CardContent>\n          <p>\n            The footer has a border-t class applied, creating a visual\n            separation between the content and footer sections.\n          </p>\n        </CardContent>\n        <CardFooter className=\"border-t\">\n          <Button variant=\"outline\" className=\"w-full\">\n            Footer with Border\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardDefault() {\n  return (\n    <Example title=\"Default Size\">\n      <Card size=\"default\" className=\"mx-auto w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Default Card</CardTitle>\n          <CardDescription>\n            This card uses the default size variant.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p>\n            The card component supports a size prop that defaults to\n            &quot;default&quot; for standard spacing and sizing.\n          </p>\n        </CardContent>\n        <CardFooter>\n          <Button variant=\"outline\" className=\"w-full\">\n            Action\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardSmall() {\n  return (\n    <Example title=\"Small Size\">\n      <Card size=\"sm\" className=\"mx-auto w-full max-w-sm\">\n        <CardHeader>\n          <CardTitle>Small Card</CardTitle>\n          <CardDescription>\n            This card uses the small size variant.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p>\n            The card component supports a size prop that can be set to\n            &quot;sm&quot; for a more compact appearance.\n          </p>\n        </CardContent>\n        <CardFooter>\n          <Button variant=\"outline\" size=\"sm\" className=\"w-full\">\n            Action\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardHeaderWithBorderSmall() {\n  return (\n    <Example title=\"Header with Border (Small)\">\n      <Card size=\"sm\" className=\"mx-auto w-full max-w-sm\">\n        <CardHeader className=\"border-b\">\n          <CardTitle>Header with Border</CardTitle>\n          <CardDescription>\n            This is a small card with a header that has a bottom border.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p>\n            The header has a border-b class applied, creating a visual\n            separation between the header and content sections.\n          </p>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CardFooterWithBorderSmall() {\n  return (\n    <Example title=\"Footer with Border (Small)\">\n      <Card size=\"sm\" className=\"mx-auto w-full max-w-sm\">\n        <CardContent>\n          <p>\n            The footer has a border-t class applied, creating a visual\n            separation between the content and footer sections.\n          </p>\n        </CardContent>\n        <CardFooter className=\"border-t\">\n          <Button variant=\"outline\" size=\"sm\" className=\"w-full\">\n            Footer with Border\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/carousel-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/registry/bases/radix/ui/carousel\"\n\nexport default function CarouselExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1\">\n      <CarouselBasic />\n      <CarouselMultiple />\n      <CarouselWithGap />\n    </ExampleWrapper>\n  )\n}\n\nfunction CarouselBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Carousel className=\"mx-auto max-w-xs sm:max-w-sm\">\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index}>\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious className=\"hidden sm:inline-flex\" />\n        <CarouselNext className=\"hidden sm:inline-flex\" />\n      </Carousel>\n    </Example>\n  )\n}\n\nfunction CarouselMultiple() {\n  return (\n    <Example title=\"Multiple\">\n      <Carousel\n        className=\"mx-auto max-w-xs sm:max-w-sm\"\n        opts={{\n          align: \"start\",\n        }}\n      >\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index} className=\"sm:basis-1/2 lg:basis-1/3\">\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious className=\"hidden sm:inline-flex\" />\n        <CarouselNext className=\"hidden sm:inline-flex\" />\n      </Carousel>\n    </Example>\n  )\n}\n\nfunction CarouselWithGap() {\n  return (\n    <Example title=\"With Gap\">\n      <Carousel className=\"mx-auto max-w-xs sm:max-w-sm\">\n        <CarouselContent className=\"-ml-1\">\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index} className=\"pl-1 md:basis-1/2\">\n              <div className=\"p-1\">\n                <Card>\n                  <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                    <span className=\"text-2xl font-semibold\">{index + 1}</span>\n                  </CardContent>\n                </Card>\n              </div>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious className=\"hidden sm:inline-flex\" />\n        <CarouselNext className=\"hidden sm:inline-flex\" />\n      </Carousel>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/chart-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Area,\n  AreaChart,\n  Bar,\n  BarChart,\n  CartesianGrid,\n  Label,\n  Line,\n  LineChart,\n  Pie,\n  PieChart,\n  PolarAngleAxis,\n  PolarGrid,\n  PolarRadiusAxis,\n  Radar,\n  RadarChart,\n  RadialBar,\n  RadialBarChart,\n  XAxis,\n} from \"recharts\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/bases/radix/ui/chart\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst areaChartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst areaChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport default function ChartExample() {\n  return (\n    <ExampleWrapper>\n      <ChartAreaExample />\n      <ChartBarExample />\n      <ChartLineExample />\n      <ChartRadialExample />\n      <ChartRadarExample />\n    </ExampleWrapper>\n  )\n}\n\nfunction ChartAreaExample() {\n  return (\n    <Example title=\"Area Chart\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Area Chart</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 6 months\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <ChartContainer config={areaChartConfig}>\n            <AreaChart\n              accessibilityLayer\n              data={areaChartData}\n              margin={{\n                left: 12,\n                right: 12,\n              }}\n            >\n              <CartesianGrid vertical={false} />\n              <XAxis\n                dataKey=\"month\"\n                tickLine={false}\n                axisLine={false}\n                tickMargin={8}\n                tickFormatter={(value) => value.slice(0, 3)}\n              />\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent indicator=\"line\" />}\n              />\n              <Area\n                dataKey=\"desktop\"\n                type=\"natural\"\n                fill=\"var(--color-desktop)\"\n                fillOpacity={0.4}\n                stroke=\"var(--color-desktop)\"\n              />\n            </AreaChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter>\n          <div className=\"flex w-full items-start gap-2\">\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center gap-2 leading-none font-medium\">\n                Trending up by 5.2% this month{\" \"}\n                <IconPlaceholder\n                  lucide=\"TrendingUpIcon\"\n                  tabler=\"IconTrendingUp\"\n                  hugeicons=\"ChartUpIcon\"\n                  phosphor=\"TrendUpIcon\"\n                  remixicon=\"RiLineChartLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n                January - June 2024\n              </div>\n            </div>\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst barChartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst barChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartBarExample() {\n  return (\n    <Example title=\"Bar Chart\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Bar Chart - Multiple</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <ChartContainer config={barChartConfig}>\n            <BarChart accessibilityLayer data={barChartData}>\n              <CartesianGrid vertical={false} />\n              <XAxis\n                dataKey=\"month\"\n                tickLine={false}\n                tickMargin={10}\n                axisLine={false}\n                tickFormatter={(value) => value.slice(0, 3)}\n              />\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent indicator=\"dashed\" />}\n              />\n              <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n              <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n            </BarChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter className=\"flex-col items-start gap-2\">\n          <div className=\"flex gap-2 leading-none font-medium\">\n            Trending up by 5.2% this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiLineChartLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"leading-none text-muted-foreground\">\n            Showing total visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst lineChartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst lineChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartLineExample() {\n  return (\n    <Example title=\"Line Chart\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Line Chart - Multiple</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <ChartContainer config={lineChartConfig}>\n            <LineChart\n              accessibilityLayer\n              data={lineChartData}\n              margin={{\n                left: 12,\n                right: 12,\n              }}\n            >\n              <CartesianGrid vertical={false} />\n              <XAxis\n                dataKey=\"month\"\n                tickLine={false}\n                axisLine={false}\n                tickMargin={8}\n                tickFormatter={(value) => value.slice(0, 3)}\n              />\n              <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n              <Line\n                dataKey=\"desktop\"\n                type=\"monotone\"\n                stroke=\"var(--color-desktop)\"\n                strokeWidth={2}\n                dot={false}\n              />\n              <Line\n                dataKey=\"mobile\"\n                type=\"monotone\"\n                stroke=\"var(--color-mobile)\"\n                strokeWidth={2}\n                dot={false}\n              />\n            </LineChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter>\n          <div className=\"flex w-full items-start gap-2\">\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center gap-2 leading-none font-medium\">\n                Trending up by 5.2% this month{\" \"}\n                <IconPlaceholder\n                  lucide=\"TrendingUpIcon\"\n                  tabler=\"IconTrendingUp\"\n                  hugeicons=\"ChartUpIcon\"\n                  phosphor=\"TrendUpIcon\"\n                  remixicon=\"RiLineChartLine\"\n                  className=\"size-4\"\n                />\n              </div>\n              <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n                Showing total visitors for the last 6 months\n              </div>\n            </div>\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst pieChartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 287, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 190, fill: \"var(--color-other)\" },\n]\n\nconst pieChartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartPieExample() {\n  const totalVisitors = React.useMemo(() => {\n    return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\n  }, [])\n\n  return (\n    <Example title=\"Pie Chart\">\n      <Card className=\"w-full\">\n        <CardHeader className=\"items-center pb-0\">\n          <CardTitle>Pie Chart - Donut with Text</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </CardHeader>\n        <CardContent className=\"flex-1 pb-0\">\n          <ChartContainer\n            config={pieChartConfig}\n            className=\"mx-auto aspect-square max-h-[250px]\"\n          >\n            <PieChart>\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent hideLabel />}\n              />\n              <Pie\n                data={pieChartData}\n                dataKey=\"visitors\"\n                nameKey=\"browser\"\n                innerRadius={60}\n                strokeWidth={5}\n              >\n                <Label\n                  content={({ viewBox }) => {\n                    if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                      return (\n                        <text\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          textAnchor=\"middle\"\n                          dominantBaseline=\"middle\"\n                        >\n                          <tspan\n                            x={viewBox.cx}\n                            y={viewBox.cy}\n                            className=\"fill-foreground text-3xl font-bold\"\n                          >\n                            {totalVisitors.toLocaleString()}\n                          </tspan>\n                          <tspan\n                            x={viewBox.cx}\n                            y={(viewBox.cy || 0) + 24}\n                            className=\"fill-muted-foreground\"\n                          >\n                            Visitors\n                          </tspan>\n                        </text>\n                      )\n                    }\n                  }}\n                />\n              </Pie>\n            </PieChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <div className=\"flex items-center gap-2 leading-none font-medium\">\n            Trending up by 5.2% this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiLineChartLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"leading-none text-muted-foreground\">\n            Showing total visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst radarChartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst radarChartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartRadarExample() {\n  return (\n    <Example title=\"Radar Chart\">\n      <Card className=\"w-full\">\n        <CardHeader className=\"items-center pb-4\">\n          <CardTitle>Radar Chart - Multiple</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 6 months\n          </CardDescription>\n        </CardHeader>\n        <CardContent className=\"pb-0\">\n          <ChartContainer\n            config={radarChartConfig}\n            className=\"mx-auto aspect-square max-h-[250px]\"\n          >\n            <RadarChart data={radarChartData}>\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent indicator=\"line\" />}\n              />\n              <PolarAngleAxis dataKey=\"month\" />\n              <PolarGrid />\n              <Radar\n                dataKey=\"desktop\"\n                fill=\"var(--color-desktop)\"\n                fillOpacity={0.6}\n              />\n              <Radar dataKey=\"mobile\" fill=\"var(--color-mobile)\" />\n            </RadarChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <div className=\"flex items-center gap-2 leading-none font-medium\">\n            Trending up by 5.2% this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiLineChartLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n            January - June 2024\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst radialChartData = [\n  { browser: \"safari\", visitors: 1260, fill: \"var(--color-safari)\" },\n]\n\nconst radialChartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nfunction ChartRadialExample() {\n  return (\n    <Example title=\"Radial Chart\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Radial Chart - Shape</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </CardHeader>\n        <CardContent className=\"flex-1 pb-0\">\n          <ChartContainer\n            config={radialChartConfig}\n            className=\"mx-auto aspect-square max-h-[210px]\"\n          >\n            <RadialBarChart\n              data={radialChartData}\n              endAngle={100}\n              innerRadius={80}\n              outerRadius={140}\n            >\n              <PolarGrid\n                gridType=\"circle\"\n                radialLines={false}\n                stroke=\"none\"\n                className=\"first:fill-muted last:fill-background\"\n                polarRadius={[86, 74]}\n              />\n              <RadialBar dataKey=\"visitors\" background />\n              <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\n                <Label\n                  content={({ viewBox }) => {\n                    if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                      return (\n                        <text\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          textAnchor=\"middle\"\n                          dominantBaseline=\"middle\"\n                        >\n                          <tspan\n                            x={viewBox.cx}\n                            y={viewBox.cy}\n                            className=\"fill-foreground text-4xl font-bold\"\n                          >\n                            {radialChartData[0].visitors.toLocaleString()}\n                          </tspan>\n                          <tspan\n                            x={viewBox.cx}\n                            y={(viewBox.cy || 0) + 24}\n                            className=\"fill-muted-foreground\"\n                          >\n                            Visitors\n                          </tspan>\n                        </text>\n                      )\n                    }\n                  }}\n                />\n              </PolarRadiusAxis>\n            </RadialBarChart>\n          </ChartContainer>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <div className=\"flex items-center gap-2 leading-none font-medium\">\n            Trending up by 5.2% this month{\" \"}\n            <IconPlaceholder\n              lucide=\"TrendingUpIcon\"\n              tabler=\"IconTrendingUp\"\n              hugeicons=\"ChartUpIcon\"\n              phosphor=\"TrendUpIcon\"\n              remixicon=\"RiLineChartLine\"\n              className=\"size-4\"\n            />\n          </div>\n          <div className=\"leading-none text-muted-foreground\">\n            Showing total visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/checkbox-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldTitle,\n} from \"@/registry/bases/radix/ui/field\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/bases/radix/ui/table\"\n\nexport default function CheckboxExample() {\n  return (\n    <ExampleWrapper>\n      <CheckboxBasic />\n      <CheckboxWithDescription />\n      <CheckboxInvalid />\n      <CheckboxDisabled />\n      <CheckboxWithTitle />\n      <CheckboxInTable />\n      <CheckboxGroup />\n    </ExampleWrapper>\n  )\n}\n\nfunction CheckboxBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms\" />\n        <FieldLabel htmlFor=\"terms\">Accept terms and conditions</FieldLabel>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CheckboxWithDescription() {\n  return (\n    <Example title=\"With Description\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"terms-2\" defaultChecked />\n        <FieldContent>\n          <FieldLabel htmlFor=\"terms-2\">Accept terms and conditions</FieldLabel>\n          <FieldDescription>\n            By clicking this checkbox, you agree to the terms and conditions.\n          </FieldDescription>\n        </FieldContent>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CheckboxInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <Field orientation=\"horizontal\" data-invalid>\n        <Checkbox id=\"terms-3\" aria-invalid />\n        <FieldLabel htmlFor=\"terms-3\">Accept terms and conditions</FieldLabel>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CheckboxDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"toggle\" disabled />\n        <FieldLabel htmlFor=\"toggle\">Enable notifications</FieldLabel>\n      </Field>\n    </Example>\n  )\n}\n\nfunction CheckboxWithTitle() {\n  return (\n    <Example title=\"With Title\">\n      <FieldGroup>\n        <FieldLabel htmlFor=\"toggle-2\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"toggle-2\" defaultChecked />\n            <FieldContent>\n              <FieldTitle>Enable notifications</FieldTitle>\n              <FieldDescription>\n                You can enable or disable notifications at any time.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"toggle-4\">\n          <Field orientation=\"horizontal\" data-disabled>\n            <Checkbox id=\"toggle-4\" disabled />\n            <FieldContent>\n              <FieldTitle>Enable notifications</FieldTitle>\n              <FieldDescription>\n                You can enable or disable notifications at any time.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nconst tableData = [\n  {\n    id: \"1\",\n    name: \"Sarah Chen\",\n    email: \"sarah.chen@example.com\",\n    role: \"Admin\",\n  },\n  {\n    id: \"2\",\n    name: \"Marcus Rodriguez\",\n    email: \"marcus.rodriguez@example.com\",\n    role: \"User\",\n  },\n  {\n    id: \"3\",\n    name: \"Priya Patel\",\n    email: \"priya.patel@example.com\",\n    role: \"User\",\n  },\n  {\n    id: \"4\",\n    name: \"David Kim\",\n    email: \"david.kim@example.com\",\n    role: \"Editor\",\n  },\n]\n\nfunction CheckboxInTable() {\n  const [selectedRows, setSelectedRows] = React.useState<Set<string>>(\n    new Set([\"1\"])\n  )\n\n  const selectAll = selectedRows.size === tableData.length\n\n  const handleSelectAll = (checked: boolean) => {\n    if (checked) {\n      setSelectedRows(new Set(tableData.map((row) => row.id)))\n    } else {\n      setSelectedRows(new Set())\n    }\n  }\n\n  const handleSelectRow = (id: string, checked: boolean) => {\n    const newSelected = new Set(selectedRows)\n    if (checked) {\n      newSelected.add(id)\n    } else {\n      newSelected.delete(id)\n    }\n    setSelectedRows(newSelected)\n  }\n\n  return (\n    <Example title=\"In Table\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead className=\"w-8\">\n              <Checkbox\n                id=\"select-all\"\n                checked={selectAll}\n                onCheckedChange={handleSelectAll}\n              />\n            </TableHead>\n            <TableHead>Name</TableHead>\n            <TableHead>Email</TableHead>\n            <TableHead>Role</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {tableData.map((row) => (\n            <TableRow\n              key={row.id}\n              data-state={selectedRows.has(row.id) ? \"selected\" : undefined}\n            >\n              <TableCell>\n                <Checkbox\n                  id={`row-${row.id}`}\n                  checked={selectedRows.has(row.id)}\n                  onCheckedChange={(checked) =>\n                    handleSelectRow(row.id, checked === true)\n                  }\n                />\n              </TableCell>\n              <TableCell className=\"font-medium\">{row.name}</TableCell>\n              <TableCell>{row.email}</TableCell>\n              <TableCell>{row.role}</TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction CheckboxGroup() {\n  return (\n    <Example title=\"Group\">\n      <Field>\n        <FieldLabel>Show these items on the desktop:</FieldLabel>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-hard-disks-ljj\" />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-hard-disks-ljj\"\n            className=\"font-normal\"\n          >\n            Hard disks\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-external-disks-1yg\" />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-external-disks-1yg\"\n            className=\"font-normal\"\n          >\n            External disks\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-cds-dvds-fzt\" />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-cds-dvds-fzt\"\n            className=\"font-normal\"\n          >\n            CDs, DVDs, and iPods\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-connected-servers-6l2\" />\n          <FieldLabel\n            htmlFor=\"finder-pref-9k2-connected-servers-6l2\"\n            className=\"font-normal\"\n          >\n            Connected servers\n          </FieldLabel>\n        </Field>\n      </Field>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/collapsible-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/registry/bases/radix/ui/tabs\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CollapsibleExample() {\n  return (\n    <ExampleWrapper>\n      <CollapsibleFileTree />\n      <CollapsibleSettings />\n    </ExampleWrapper>\n  )\n}\n\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\n\nfunction CollapsibleFileTree() {\n  const fileTree: FileTreeItem[] = [\n    {\n      name: \"components\",\n      items: [\n        {\n          name: \"ui\",\n          items: [\n            { name: \"button.tsx\" },\n            { name: \"card.tsx\" },\n            { name: \"dialog.tsx\" },\n            { name: \"input.tsx\" },\n            { name: \"select.tsx\" },\n            { name: \"table.tsx\" },\n          ],\n        },\n        { name: \"login-form.tsx\" },\n        { name: \"register-form.tsx\" },\n      ],\n    },\n    {\n      name: \"lib\",\n      items: [{ name: \"utils.ts\" }, { name: \"cn.ts\" }, { name: \"api.ts\" }],\n    },\n    {\n      name: \"hooks\",\n      items: [\n        { name: \"use-media-query.ts\" },\n        { name: \"use-debounce.ts\" },\n        { name: \"use-local-storage.ts\" },\n      ],\n    },\n    {\n      name: \"types\",\n      items: [{ name: \"index.d.ts\" }, { name: \"api.d.ts\" }],\n    },\n    {\n      name: \"public\",\n      items: [\n        { name: \"favicon.ico\" },\n        { name: \"logo.svg\" },\n        { name: \"images\" },\n      ],\n    },\n    { name: \"app.tsx\" },\n    { name: \"layout.tsx\" },\n    { name: \"globals.css\" },\n    { name: \"package.json\" },\n    { name: \"tsconfig.json\" },\n    { name: \"README.md\" },\n    { name: \".gitignore\" },\n  ]\n\n  const renderItem = (fileItem: FileTreeItem) => {\n    if (\"items\" in fileItem) {\n      return (\n        <Collapsible key={fileItem.name}>\n          <CollapsibleTrigger asChild>\n            <Button\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"group w-full justify-start transition-none hover:bg-accent hover:text-accent-foreground\"\n            >\n              <IconPlaceholder\n                lucide=\"ChevronRightIcon\"\n                tabler=\"IconChevronRight\"\n                hugeicons=\"ArrowRight01Icon\"\n                phosphor=\"CaretRightIcon\"\n                remixicon=\"RiArrowRightSLine\"\n                className=\"transition-transform group-data-[state=open]:rotate-90\"\n              />\n              <IconPlaceholder\n                lucide=\"FolderIcon\"\n                tabler=\"IconFolder\"\n                hugeicons=\"Folder01Icon\"\n                phosphor=\"FolderIcon\"\n                remixicon=\"RiFolderLine\"\n              />\n              {fileItem.name}\n            </Button>\n          </CollapsibleTrigger>\n          <CollapsibleContent className=\"mt-1 ml-5 style-lyra:ml-4\">\n            <div className=\"flex flex-col gap-1\">\n              {fileItem.items.map((child) => renderItem(child))}\n            </div>\n          </CollapsibleContent>\n        </Collapsible>\n      )\n    }\n    return (\n      <Button\n        key={fileItem.name}\n        variant=\"link\"\n        size=\"sm\"\n        className=\"w-full justify-start gap-2 text-foreground\"\n      >\n        <IconPlaceholder\n          lucide=\"FileIcon\"\n          tabler=\"IconFile\"\n          hugeicons=\"File01Icon\"\n          phosphor=\"FileIcon\"\n          remixicon=\"RiFileLine\"\n        />\n        <span>{fileItem.name}</span>\n      </Button>\n    )\n  }\n\n  return (\n    <Example title=\"File Tree\" className=\"items-center\">\n      <Card className=\"mx-auto w-full max-w-[16rem] gap-2\" size=\"sm\">\n        <CardHeader>\n          <Tabs defaultValue=\"explorer\">\n            <TabsList className=\"w-full\">\n              <TabsTrigger value=\"explorer\">Explorer</TabsTrigger>\n              <TabsTrigger value=\"settings\">Outline</TabsTrigger>\n            </TabsList>\n          </Tabs>\n        </CardHeader>\n        <CardContent>\n          <div className=\"flex flex-col gap-1\">\n            {fileTree.map((item) => renderItem(item))}\n          </div>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CollapsibleSettings() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Settings\" className=\"items-center\">\n      <Card className=\"mx-auto w-full max-w-xs\" size=\"sm\">\n        <CardHeader>\n          <CardTitle>Radius</CardTitle>\n          <CardDescription>\n            Set the corner radius of the element.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <Collapsible\n            open={isOpen}\n            onOpenChange={setIsOpen}\n            className=\"flex items-start gap-2\"\n          >\n            <FieldGroup className=\"grid w-full grid-cols-2 gap-2\">\n              <Field>\n                <FieldLabel htmlFor=\"radius-x\" className=\"sr-only\">\n                  Radius X\n                </FieldLabel>\n                <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"radius-y\" className=\"sr-only\">\n                  Radius Y\n                </FieldLabel>\n                <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n              </Field>\n              <CollapsibleContent className=\"col-span-full grid grid-cols-subgrid gap-2\">\n                <Field>\n                  <FieldLabel htmlFor=\"radius-x\" className=\"sr-only\">\n                    Radius X\n                  </FieldLabel>\n                  <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"radius-y\" className=\"sr-only\">\n                    Radius Y\n                  </FieldLabel>\n                  <Input id=\"radius\" placeholder=\"0\" defaultValue={0} />\n                </Field>\n              </CollapsibleContent>\n            </FieldGroup>\n            <CollapsibleTrigger asChild>\n              <Button variant=\"outline\" size=\"icon\">\n                {isOpen ? (\n                  <IconPlaceholder\n                    lucide=\"MinimizeIcon\"\n                    tabler=\"IconMinimize\"\n                    hugeicons=\"MinusSignIcon\"\n                    phosphor=\"MinusIcon\"\n                    remixicon=\"RiSubtractLine\"\n                  />\n                ) : (\n                  <IconPlaceholder\n                    lucide=\"MaximizeIcon\"\n                    tabler=\"IconMaximize\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                )}\n              </Button>\n            </CollapsibleTrigger>\n          </Collapsible>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/combobox-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { toast } from \"sonner\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Combobox,\n  ComboboxChip,\n  ComboboxChips,\n  ComboboxChipsInput,\n  ComboboxCollection,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxGroup,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxLabel,\n  ComboboxList,\n  ComboboxSeparator,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n} from \"@/registry/bases/radix/ui/combobox\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ComboboxExample() {\n  return (\n    <ExampleWrapper>\n      <ComboboxBasic />\n      <ComboboxDisabled />\n      <ComboboxInvalid />\n      <ComboboxWithClear />\n      <ComboboxAutoHighlight />\n      <ComboboxWithGroups />\n      <ComboboxWithGroupsAndSeparator />\n      <ComboboxLargeList />\n      <ComboxboxInputAddon />\n      <ComboboxInPopup />\n      <ComboboxWithForm />\n      <ComboboxMultiple />\n      <ComboboxMultipleDisabled />\n      <ComboboxMultipleInvalid />\n      <ComboboxMultipleNoRemove />\n      <ComboboxWithCustomItems />\n      <ComboboxInDialog />\n      <ComboboxWithOtherInputs />\n      <ComboboxDisabledItems />\n    </ExampleWrapper>\n  )\n}\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nconst countries = [\n  { code: \"\", value: \"\", continent: \"\", label: \"Select country\" },\n  { code: \"af\", value: \"afghanistan\", label: \"Afghanistan\", continent: \"Asia\" },\n  { code: \"al\", value: \"albania\", label: \"Albania\", continent: \"Europe\" },\n  { code: \"dz\", value: \"algeria\", label: \"Algeria\", continent: \"Africa\" },\n  { code: \"ad\", value: \"andorra\", label: \"Andorra\", continent: \"Europe\" },\n  { code: \"ao\", value: \"angola\", label: \"Angola\", continent: \"Africa\" },\n  {\n    code: \"ar\",\n    value: \"argentina\",\n    label: \"Argentina\",\n    continent: \"South America\",\n  },\n  { code: \"am\", value: \"armenia\", label: \"Armenia\", continent: \"Asia\" },\n  { code: \"au\", value: \"australia\", label: \"Australia\", continent: \"Oceania\" },\n  { code: \"at\", value: \"austria\", label: \"Austria\", continent: \"Europe\" },\n  { code: \"az\", value: \"azerbaijan\", label: \"Azerbaijan\", continent: \"Asia\" },\n  {\n    code: \"bs\",\n    value: \"bahamas\",\n    label: \"Bahamas\",\n    continent: \"North America\",\n  },\n  { code: \"bh\", value: \"bahrain\", label: \"Bahrain\", continent: \"Asia\" },\n  { code: \"bd\", value: \"bangladesh\", label: \"Bangladesh\", continent: \"Asia\" },\n  {\n    code: \"bb\",\n    value: \"barbados\",\n    label: \"Barbados\",\n    continent: \"North America\",\n  },\n  { code: \"by\", value: \"belarus\", label: \"Belarus\", continent: \"Europe\" },\n  { code: \"be\", value: \"belgium\", label: \"Belgium\", continent: \"Europe\" },\n  { code: \"bz\", value: \"belize\", label: \"Belize\", continent: \"North America\" },\n  { code: \"bj\", value: \"benin\", label: \"Benin\", continent: \"Africa\" },\n  { code: \"bt\", value: \"bhutan\", label: \"Bhutan\", continent: \"Asia\" },\n  {\n    code: \"bo\",\n    value: \"bolivia\",\n    label: \"Bolivia\",\n    continent: \"South America\",\n  },\n  {\n    code: \"ba\",\n    value: \"bosnia-and-herzegovina\",\n    label: \"Bosnia and Herzegovina\",\n    continent: \"Europe\",\n  },\n  { code: \"bw\", value: \"botswana\", label: \"Botswana\", continent: \"Africa\" },\n  { code: \"br\", value: \"brazil\", label: \"Brazil\", continent: \"South America\" },\n  { code: \"bn\", value: \"brunei\", label: \"Brunei\", continent: \"Asia\" },\n  { code: \"bg\", value: \"bulgaria\", label: \"Bulgaria\", continent: \"Europe\" },\n  {\n    code: \"bf\",\n    value: \"burkina-faso\",\n    label: \"Burkina Faso\",\n    continent: \"Africa\",\n  },\n  { code: \"bi\", value: \"burundi\", label: \"Burundi\", continent: \"Africa\" },\n  { code: \"kh\", value: \"cambodia\", label: \"Cambodia\", continent: \"Asia\" },\n  { code: \"cm\", value: \"cameroon\", label: \"Cameroon\", continent: \"Africa\" },\n  { code: \"ca\", value: \"canada\", label: \"Canada\", continent: \"North America\" },\n  { code: \"cv\", value: \"cape-verde\", label: \"Cape Verde\", continent: \"Africa\" },\n  {\n    code: \"cf\",\n    value: \"central-african-republic\",\n    label: \"Central African Republic\",\n    continent: \"Africa\",\n  },\n  { code: \"td\", value: \"chad\", label: \"Chad\", continent: \"Africa\" },\n  { code: \"cl\", value: \"chile\", label: \"Chile\", continent: \"South America\" },\n  { code: \"cn\", value: \"china\", label: \"China\", continent: \"Asia\" },\n  {\n    code: \"co\",\n    value: \"colombia\",\n    label: \"Colombia\",\n    continent: \"South America\",\n  },\n  { code: \"km\", value: \"comoros\", label: \"Comoros\", continent: \"Africa\" },\n  { code: \"cg\", value: \"congo\", label: \"Congo\", continent: \"Africa\" },\n  {\n    code: \"cr\",\n    value: \"costa-rica\",\n    label: \"Costa Rica\",\n    continent: \"North America\",\n  },\n  { code: \"hr\", value: \"croatia\", label: \"Croatia\", continent: \"Europe\" },\n  { code: \"cu\", value: \"cuba\", label: \"Cuba\", continent: \"North America\" },\n  { code: \"cy\", value: \"cyprus\", label: \"Cyprus\", continent: \"Asia\" },\n  {\n    code: \"cz\",\n    value: \"czech-republic\",\n    label: \"Czech Republic\",\n    continent: \"Europe\",\n  },\n  { code: \"dk\", value: \"denmark\", label: \"Denmark\", continent: \"Europe\" },\n  { code: \"dj\", value: \"djibouti\", label: \"Djibouti\", continent: \"Africa\" },\n  {\n    code: \"dm\",\n    value: \"dominica\",\n    label: \"Dominica\",\n    continent: \"North America\",\n  },\n  {\n    code: \"do\",\n    value: \"dominican-republic\",\n    label: \"Dominican Republic\",\n    continent: \"North America\",\n  },\n  {\n    code: \"ec\",\n    value: \"ecuador\",\n    label: \"Ecuador\",\n    continent: \"South America\",\n  },\n  { code: \"eg\", value: \"egypt\", label: \"Egypt\", continent: \"Africa\" },\n  {\n    code: \"sv\",\n    value: \"el-salvador\",\n    label: \"El Salvador\",\n    continent: \"North America\",\n  },\n  {\n    code: \"gq\",\n    value: \"equatorial-guinea\",\n    label: \"Equatorial Guinea\",\n    continent: \"Africa\",\n  },\n  { code: \"er\", value: \"eritrea\", label: \"Eritrea\", continent: \"Africa\" },\n  { code: \"ee\", value: \"estonia\", label: \"Estonia\", continent: \"Europe\" },\n  { code: \"et\", value: \"ethiopia\", label: \"Ethiopia\", continent: \"Africa\" },\n  { code: \"fj\", value: \"fiji\", label: \"Fiji\", continent: \"Oceania\" },\n  { code: \"fi\", value: \"finland\", label: \"Finland\", continent: \"Europe\" },\n  { code: \"fr\", value: \"france\", label: \"France\", continent: \"Europe\" },\n  { code: \"ga\", value: \"gabon\", label: \"Gabon\", continent: \"Africa\" },\n  { code: \"gm\", value: \"gambia\", label: \"Gambia\", continent: \"Africa\" },\n  { code: \"ge\", value: \"georgia\", label: \"Georgia\", continent: \"Asia\" },\n  { code: \"de\", value: \"germany\", label: \"Germany\", continent: \"Europe\" },\n  { code: \"gh\", value: \"ghana\", label: \"Ghana\", continent: \"Africa\" },\n  { code: \"gr\", value: \"greece\", label: \"Greece\", continent: \"Europe\" },\n  {\n    code: \"gd\",\n    value: \"grenada\",\n    label: \"Grenada\",\n    continent: \"North America\",\n  },\n  {\n    code: \"gt\",\n    value: \"guatemala\",\n    label: \"Guatemala\",\n    continent: \"North America\",\n  },\n  { code: \"gn\", value: \"guinea\", label: \"Guinea\", continent: \"Africa\" },\n  {\n    code: \"gw\",\n    value: \"guinea-bissau\",\n    label: \"Guinea-Bissau\",\n    continent: \"Africa\",\n  },\n  { code: \"gy\", value: \"guyana\", label: \"Guyana\", continent: \"South America\" },\n  { code: \"ht\", value: \"haiti\", label: \"Haiti\", continent: \"North America\" },\n  {\n    code: \"hn\",\n    value: \"honduras\",\n    label: \"Honduras\",\n    continent: \"North America\",\n  },\n  { code: \"hu\", value: \"hungary\", label: \"Hungary\", continent: \"Europe\" },\n  { code: \"is\", value: \"iceland\", label: \"Iceland\", continent: \"Europe\" },\n  { code: \"in\", value: \"india\", label: \"India\", continent: \"Asia\" },\n  { code: \"id\", value: \"indonesia\", label: \"Indonesia\", continent: \"Asia\" },\n  { code: \"ir\", value: \"iran\", label: \"Iran\", continent: \"Asia\" },\n  { code: \"iq\", value: \"iraq\", label: \"Iraq\", continent: \"Asia\" },\n  { code: \"ie\", value: \"ireland\", label: \"Ireland\", continent: \"Europe\" },\n  { code: \"il\", value: \"israel\", label: \"Israel\", continent: \"Asia\" },\n  { code: \"it\", value: \"italy\", label: \"Italy\", continent: \"Europe\" },\n  {\n    code: \"jm\",\n    value: \"jamaica\",\n    label: \"Jamaica\",\n    continent: \"North America\",\n  },\n  { code: \"jp\", value: \"japan\", label: \"Japan\", continent: \"Asia\" },\n  { code: \"jo\", value: \"jordan\", label: \"Jordan\", continent: \"Asia\" },\n  { code: \"kz\", value: \"kazakhstan\", label: \"Kazakhstan\", continent: \"Asia\" },\n  { code: \"ke\", value: \"kenya\", label: \"Kenya\", continent: \"Africa\" },\n  { code: \"kw\", value: \"kuwait\", label: \"Kuwait\", continent: \"Asia\" },\n  { code: \"kg\", value: \"kyrgyzstan\", label: \"Kyrgyzstan\", continent: \"Asia\" },\n  { code: \"la\", value: \"laos\", label: \"Laos\", continent: \"Asia\" },\n  { code: \"lv\", value: \"latvia\", label: \"Latvia\", continent: \"Europe\" },\n  { code: \"lb\", value: \"lebanon\", label: \"Lebanon\", continent: \"Asia\" },\n  { code: \"ls\", value: \"lesotho\", label: \"Lesotho\", continent: \"Africa\" },\n  { code: \"lr\", value: \"liberia\", label: \"Liberia\", continent: \"Africa\" },\n  { code: \"ly\", value: \"libya\", label: \"Libya\", continent: \"Africa\" },\n  {\n    code: \"li\",\n    value: \"liechtenstein\",\n    label: \"Liechtenstein\",\n    continent: \"Europe\",\n  },\n  { code: \"lt\", value: \"lithuania\", label: \"Lithuania\", continent: \"Europe\" },\n  { code: \"lu\", value: \"luxembourg\", label: \"Luxembourg\", continent: \"Europe\" },\n  { code: \"mg\", value: \"madagascar\", label: \"Madagascar\", continent: \"Africa\" },\n  { code: \"mw\", value: \"malawi\", label: \"Malawi\", continent: \"Africa\" },\n  { code: \"my\", value: \"malaysia\", label: \"Malaysia\", continent: \"Asia\" },\n  { code: \"mv\", value: \"maldives\", label: \"Maldives\", continent: \"Asia\" },\n  { code: \"ml\", value: \"mali\", label: \"Mali\", continent: \"Africa\" },\n  { code: \"mt\", value: \"malta\", label: \"Malta\", continent: \"Europe\" },\n  {\n    code: \"mh\",\n    value: \"marshall-islands\",\n    label: \"Marshall Islands\",\n    continent: \"Oceania\",\n  },\n  { code: \"mr\", value: \"mauritania\", label: \"Mauritania\", continent: \"Africa\" },\n  { code: \"mu\", value: \"mauritius\", label: \"Mauritius\", continent: \"Africa\" },\n  { code: \"mx\", value: \"mexico\", label: \"Mexico\", continent: \"North America\" },\n  {\n    code: \"fm\",\n    value: \"micronesia\",\n    label: \"Micronesia\",\n    continent: \"Oceania\",\n  },\n  { code: \"md\", value: \"moldova\", label: \"Moldova\", continent: \"Europe\" },\n  { code: \"mc\", value: \"monaco\", label: \"Monaco\", continent: \"Europe\" },\n  { code: \"mn\", value: \"mongolia\", label: \"Mongolia\", continent: \"Asia\" },\n  { code: \"me\", value: \"montenegro\", label: \"Montenegro\", continent: \"Europe\" },\n  { code: \"ma\", value: \"morocco\", label: \"Morocco\", continent: \"Africa\" },\n  { code: \"mz\", value: \"mozambique\", label: \"Mozambique\", continent: \"Africa\" },\n  { code: \"mm\", value: \"myanmar\", label: \"Myanmar\", continent: \"Asia\" },\n  { code: \"na\", value: \"namibia\", label: \"Namibia\", continent: \"Africa\" },\n  { code: \"nr\", value: \"nauru\", label: \"Nauru\", continent: \"Oceania\" },\n  { code: \"np\", value: \"nepal\", label: \"Nepal\", continent: \"Asia\" },\n  {\n    code: \"nl\",\n    value: \"netherlands\",\n    label: \"Netherlands\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"nz\",\n    value: \"new-zealand\",\n    label: \"New Zealand\",\n    continent: \"Oceania\",\n  },\n  {\n    code: \"ni\",\n    value: \"nicaragua\",\n    label: \"Nicaragua\",\n    continent: \"North America\",\n  },\n  { code: \"ne\", value: \"niger\", label: \"Niger\", continent: \"Africa\" },\n  { code: \"ng\", value: \"nigeria\", label: \"Nigeria\", continent: \"Africa\" },\n  { code: \"kp\", value: \"north-korea\", label: \"North Korea\", continent: \"Asia\" },\n  {\n    code: \"mk\",\n    value: \"north-macedonia\",\n    label: \"North Macedonia\",\n    continent: \"Europe\",\n  },\n  { code: \"no\", value: \"norway\", label: \"Norway\", continent: \"Europe\" },\n  { code: \"om\", value: \"oman\", label: \"Oman\", continent: \"Asia\" },\n  { code: \"pk\", value: \"pakistan\", label: \"Pakistan\", continent: \"Asia\" },\n  { code: \"pw\", value: \"palau\", label: \"Palau\", continent: \"Oceania\" },\n  { code: \"ps\", value: \"palestine\", label: \"Palestine\", continent: \"Asia\" },\n  { code: \"pa\", value: \"panama\", label: \"Panama\", continent: \"North America\" },\n  {\n    code: \"pg\",\n    value: \"papua-new-guinea\",\n    label: \"Papua New Guinea\",\n    continent: \"Oceania\",\n  },\n  {\n    code: \"py\",\n    value: \"paraguay\",\n    label: \"Paraguay\",\n    continent: \"South America\",\n  },\n  { code: \"pe\", value: \"peru\", label: \"Peru\", continent: \"South America\" },\n  { code: \"ph\", value: \"philippines\", label: \"Philippines\", continent: \"Asia\" },\n  { code: \"pl\", value: \"poland\", label: \"Poland\", continent: \"Europe\" },\n  { code: \"pt\", value: \"portugal\", label: \"Portugal\", continent: \"Europe\" },\n  { code: \"qa\", value: \"qatar\", label: \"Qatar\", continent: \"Asia\" },\n  { code: \"ro\", value: \"romania\", label: \"Romania\", continent: \"Europe\" },\n  { code: \"ru\", value: \"russia\", label: \"Russia\", continent: \"Europe\" },\n  { code: \"rw\", value: \"rwanda\", label: \"Rwanda\", continent: \"Africa\" },\n  { code: \"ws\", value: \"samoa\", label: \"Samoa\", continent: \"Oceania\" },\n  { code: \"sm\", value: \"san-marino\", label: \"San Marino\", continent: \"Europe\" },\n  {\n    code: \"sa\",\n    value: \"saudi-arabia\",\n    label: \"Saudi Arabia\",\n    continent: \"Asia\",\n  },\n  { code: \"sn\", value: \"senegal\", label: \"Senegal\", continent: \"Africa\" },\n  { code: \"rs\", value: \"serbia\", label: \"Serbia\", continent: \"Europe\" },\n  { code: \"sc\", value: \"seychelles\", label: \"Seychelles\", continent: \"Africa\" },\n  {\n    code: \"sl\",\n    value: \"sierra-leone\",\n    label: \"Sierra Leone\",\n    continent: \"Africa\",\n  },\n  { code: \"sg\", value: \"singapore\", label: \"Singapore\", continent: \"Asia\" },\n  { code: \"sk\", value: \"slovakia\", label: \"Slovakia\", continent: \"Europe\" },\n  { code: \"si\", value: \"slovenia\", label: \"Slovenia\", continent: \"Europe\" },\n  {\n    code: \"sb\",\n    value: \"solomon-islands\",\n    label: \"Solomon Islands\",\n    continent: \"Oceania\",\n  },\n  { code: \"so\", value: \"somalia\", label: \"Somalia\", continent: \"Africa\" },\n  {\n    code: \"za\",\n    value: \"south-africa\",\n    label: \"South Africa\",\n    continent: \"Africa\",\n  },\n  { code: \"kr\", value: \"south-korea\", label: \"South Korea\", continent: \"Asia\" },\n  {\n    code: \"ss\",\n    value: \"south-sudan\",\n    label: \"South Sudan\",\n    continent: \"Africa\",\n  },\n  { code: \"es\", value: \"spain\", label: \"Spain\", continent: \"Europe\" },\n  { code: \"lk\", value: \"sri-lanka\", label: \"Sri Lanka\", continent: \"Asia\" },\n  { code: \"sd\", value: \"sudan\", label: \"Sudan\", continent: \"Africa\" },\n  {\n    code: \"sr\",\n    value: \"suriname\",\n    label: \"Suriname\",\n    continent: \"South America\",\n  },\n  { code: \"se\", value: \"sweden\", label: \"Sweden\", continent: \"Europe\" },\n  {\n    code: \"ch\",\n    value: \"switzerland\",\n    label: \"Switzerland\",\n    continent: \"Europe\",\n  },\n  { code: \"sy\", value: \"syria\", label: \"Syria\", continent: \"Asia\" },\n  { code: \"tw\", value: \"taiwan\", label: \"Taiwan\", continent: \"Asia\" },\n  { code: \"tj\", value: \"tajikistan\", label: \"Tajikistan\", continent: \"Asia\" },\n  { code: \"tz\", value: \"tanzania\", label: \"Tanzania\", continent: \"Africa\" },\n  { code: \"th\", value: \"thailand\", label: \"Thailand\", continent: \"Asia\" },\n  { code: \"tl\", value: \"timor-leste\", label: \"Timor-Leste\", continent: \"Asia\" },\n  { code: \"tg\", value: \"togo\", label: \"Togo\", continent: \"Africa\" },\n  { code: \"to\", value: \"tonga\", label: \"Tonga\", continent: \"Oceania\" },\n  {\n    code: \"tt\",\n    value: \"trinidad-and-tobago\",\n    label: \"Trinidad and Tobago\",\n    continent: \"North America\",\n  },\n  { code: \"tn\", value: \"tunisia\", label: \"Tunisia\", continent: \"Africa\" },\n  { code: \"tr\", value: \"turkey\", label: \"Turkey\", continent: \"Asia\" },\n  {\n    code: \"tm\",\n    value: \"turkmenistan\",\n    label: \"Turkmenistan\",\n    continent: \"Asia\",\n  },\n  { code: \"tv\", value: \"tuvalu\", label: \"Tuvalu\", continent: \"Oceania\" },\n  { code: \"ug\", value: \"uganda\", label: \"Uganda\", continent: \"Africa\" },\n  { code: \"ua\", value: \"ukraine\", label: \"Ukraine\", continent: \"Europe\" },\n  {\n    code: \"ae\",\n    value: \"united-arab-emirates\",\n    label: \"United Arab Emirates\",\n    continent: \"Asia\",\n  },\n  {\n    code: \"gb\",\n    value: \"united-kingdom\",\n    label: \"United Kingdom\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"us\",\n    value: \"united-states\",\n    label: \"United States\",\n    continent: \"North America\",\n  },\n  {\n    code: \"uy\",\n    value: \"uruguay\",\n    label: \"Uruguay\",\n    continent: \"South America\",\n  },\n  { code: \"uz\", value: \"uzbekistan\", label: \"Uzbekistan\", continent: \"Asia\" },\n  { code: \"vu\", value: \"vanuatu\", label: \"Vanuatu\", continent: \"Oceania\" },\n  {\n    code: \"va\",\n    value: \"vatican-city\",\n    label: \"Vatican City\",\n    continent: \"Europe\",\n  },\n  {\n    code: \"ve\",\n    value: \"venezuela\",\n    label: \"Venezuela\",\n    continent: \"South America\",\n  },\n  { code: \"vn\", value: \"vietnam\", label: \"Vietnam\", continent: \"Asia\" },\n  { code: \"ye\", value: \"yemen\", label: \"Yemen\", continent: \"Asia\" },\n  { code: \"zm\", value: \"zambia\", label: \"Zambia\", continent: \"Africa\" },\n  { code: \"zw\", value: \"zimbabwe\", label: \"Zimbabwe\", continent: \"Africa\" },\n]\n\nconst timezones = [\n  {\n    value: \"Americas\",\n    items: [\n      \"(GMT-5) New York\",\n      \"(GMT-8) Los Angeles\",\n      \"(GMT-6) Chicago\",\n      \"(GMT-5) Toronto\",\n      \"(GMT-8) Vancouver\",\n      \"(GMT-3) São Paulo\",\n    ],\n  },\n  {\n    value: \"Europe\",\n    items: [\n      \"(GMT+0) London\",\n      \"(GMT+1) Paris\",\n      \"(GMT+1) Berlin\",\n      \"(GMT+1) Rome\",\n      \"(GMT+1) Madrid\",\n      \"(GMT+1) Amsterdam\",\n    ],\n  },\n  {\n    value: \"Asia/Pacific\",\n    items: [\n      \"(GMT+9) Tokyo\",\n      \"(GMT+8) Shanghai\",\n      \"(GMT+8) Singapore\",\n      \"(GMT+4) Dubai\",\n      \"(GMT+11) Sydney\",\n      \"(GMT+9) Seoul\",\n    ],\n  },\n] as const\n\nfunction ComboboxBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Combobox items={frameworks}>\n        <ComboboxInput placeholder=\"Select a framework\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Combobox items={frameworks}>\n        <ComboboxInput placeholder=\"Select a framework\" disabled />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nconst disabledFrameworks = [\"Nuxt.js\", \"Remix\"]\n\nfunction ComboboxDisabledItems() {\n  return (\n    <Example title=\"Disabled Items\">\n      <Combobox items={frameworks}>\n        <ComboboxInput placeholder=\"Select a framework\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem\n                key={item}\n                value={item}\n                disabled={disabledFrameworks.includes(item)}\n              >\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <div className=\"flex flex-col gap-4\">\n        <Combobox items={frameworks}>\n          <ComboboxInput placeholder=\"Select a framework\" aria-invalid=\"true\" />\n          <ComboboxContent>\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\n            <ComboboxList>\n              {(item) => (\n                <ComboboxItem key={item} value={item}>\n                  {item}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"combobox-framework-invalid\">\n            Framework\n          </FieldLabel>\n          <Combobox items={frameworks}>\n            <ComboboxInput\n              id=\"combobox-framework-invalid\"\n              placeholder=\"Select a framework\"\n              aria-invalid\n            />\n            <ComboboxContent>\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\n              <ComboboxList>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxList>\n            </ComboboxContent>\n          </Combobox>\n          <FieldDescription>Please select a valid framework.</FieldDescription>\n          <FieldError errors={[{ message: \"This field is required.\" }]} />\n        </Field>\n      </div>\n    </Example>\n  )\n}\n\nfunction ComboboxWithClear() {\n  return (\n    <Example title=\"With Clear Button\">\n      <Combobox items={frameworks} defaultValue={frameworks[0]}>\n        <ComboboxInput placeholder=\"Select a framework\" showClear />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxWithGroups() {\n  return (\n    <Example title=\"With Groups\">\n      <Combobox items={timezones}>\n        <ComboboxInput placeholder=\"Select a timezone\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n          <ComboboxList>\n            {(group) => (\n              <ComboboxGroup key={group.value} items={group.items}>\n                <ComboboxLabel>{group.value}</ComboboxLabel>\n                <ComboboxCollection>\n                  {(item) => (\n                    <ComboboxItem key={item} value={item}>\n                      {item}\n                    </ComboboxItem>\n                  )}\n                </ComboboxCollection>\n              </ComboboxGroup>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxWithGroupsAndSeparator() {\n  return (\n    <Example title=\"With Groups and Separator\">\n      <Combobox items={timezones}>\n        <ComboboxInput placeholder=\"Select a timezone\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n          <ComboboxList>\n            {(group) => (\n              <ComboboxGroup key={group.value} items={group.items}>\n                <ComboboxLabel>{group.value}</ComboboxLabel>\n                <ComboboxCollection>\n                  {(item) => (\n                    <ComboboxItem key={item} value={item}>\n                      {item}\n                    </ComboboxItem>\n                  )}\n                </ComboboxCollection>\n                <ComboboxSeparator />\n              </ComboboxGroup>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxWithForm() {\n  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {\n    event.preventDefault()\n    const formData = new FormData(event.target as HTMLFormElement)\n    const framework = formData.get(\"framework\") as string\n    toast(`You selected ${framework} as your framework.`)\n  }\n\n  return (\n    <Example title=\"Form with Combobox\">\n      <Card className=\"w-full max-w-sm\" size=\"sm\">\n        <CardContent>\n          <form\n            id=\"form-with-combobox\"\n            className=\"w-full\"\n            onSubmit={handleSubmit}\n          >\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"framework\">Framework</FieldLabel>\n                <Combobox items={frameworks}>\n                  <ComboboxInput\n                    id=\"framework\"\n                    name=\"framework\"\n                    placeholder=\"Select a framework\"\n                    required\n                  />\n                  <ComboboxContent>\n                    <ComboboxEmpty>No items found.</ComboboxEmpty>\n                    <ComboboxList>\n                      {(item) => (\n                        <ComboboxItem key={item} value={item}>\n                          {item}\n                        </ComboboxItem>\n                      )}\n                    </ComboboxList>\n                  </ComboboxContent>\n                </Combobox>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n        <CardFooter>\n          <Button type=\"submit\" form=\"form-with-combobox\">\n            Submit\n          </Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\n\nfunction ComboboxLargeList() {\n  return (\n    <Example title=\"Large List (100 items)\">\n      <Combobox items={largeListItems}>\n        <ComboboxInput placeholder=\"Search from 100 items\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxAutoHighlight() {\n  return (\n    <Example title=\"With Auto Highlight\">\n      <Combobox items={frameworks} autoHighlight>\n        <ComboboxInput placeholder=\"Select a framework\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboxboxInputAddon() {\n  return (\n    <Example title=\"With Icon Addon\">\n      <Combobox items={timezones}>\n        <ComboboxInput placeholder=\"Select a timezone\">\n          <InputGroupAddon>\n            <IconPlaceholder\n              lucide=\"GlobeIcon\"\n              tabler=\"IconGlobe\"\n              hugeicons=\"Globe02Icon\"\n              phosphor=\"GlobeIcon\"\n              remixicon=\"RiGlobeLine\"\n            />\n          </InputGroupAddon>\n        </ComboboxInput>\n        <ComboboxContent alignOffset={-28} className=\"w-60\">\n          <ComboboxEmpty>No timezones found.</ComboboxEmpty>\n          <ComboboxList>\n            {(group) => (\n              <ComboboxGroup key={group.value} items={group.items}>\n                <ComboboxLabel>{group.value}</ComboboxLabel>\n                <ComboboxCollection>\n                  {(item) => (\n                    <ComboboxItem key={item} value={item}>\n                      {item}\n                    </ComboboxItem>\n                  )}\n                </ComboboxCollection>\n              </ComboboxGroup>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxInPopup() {\n  return (\n    <Example title=\"Combobox in Popup\">\n      <Combobox items={countries} defaultValue={countries[0]}>\n        <ComboboxTrigger\n          render={\n            <Button\n              variant=\"outline\"\n              className=\"w-64 justify-between font-normal\"\n            />\n          }\n        >\n          <ComboboxValue />\n        </ComboboxTrigger>\n        <ComboboxContent>\n          <ComboboxInput showTrigger={false} placeholder=\"Search\" />\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item.code} value={item}>\n                {item.label}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxMultiple() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <Example title=\"Combobox Multiple\">\n      <Combobox\n        multiple\n        autoHighlight\n        items={frameworks}\n        defaultValue={[frameworks[0]]}\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\n                ))}\n                <ComboboxChipsInput />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent anchor={anchor}>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxMultipleDisabled() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <Example title=\"Combobox Multiple Disabled\">\n      <Combobox\n        multiple\n        autoHighlight\n        items={frameworks}\n        defaultValue={[frameworks[0], frameworks[1]]}\n        disabled\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value}>{value}</ComboboxChip>\n                ))}\n                <ComboboxChipsInput disabled />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent anchor={anchor}>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxMultipleInvalid() {\n  const anchor1 = useComboboxAnchor()\n  const anchor2 = useComboboxAnchor()\n\n  return (\n    <Example title=\"Combobox Multiple Invalid\">\n      <div className=\"flex flex-col gap-4\">\n        <Combobox\n          multiple\n          autoHighlight\n          items={frameworks}\n          defaultValue={[frameworks[0], frameworks[1]]}\n        >\n          <ComboboxChips ref={anchor1}>\n            <ComboboxValue>\n              {(values) => (\n                <React.Fragment>\n                  {values.map((value: string) => (\n                    <ComboboxChip key={value}>{value}</ComboboxChip>\n                  ))}\n                  <ComboboxChipsInput aria-invalid=\"true\" />\n                </React.Fragment>\n              )}\n            </ComboboxValue>\n          </ComboboxChips>\n          <ComboboxContent anchor={anchor1}>\n            <ComboboxEmpty>No items found.</ComboboxEmpty>\n            <ComboboxList>\n              {(item) => (\n                <ComboboxItem key={item} value={item}>\n                  {item}\n                </ComboboxItem>\n              )}\n            </ComboboxList>\n          </ComboboxContent>\n        </Combobox>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"combobox-multiple-invalid\">\n            Frameworks\n          </FieldLabel>\n          <Combobox\n            multiple\n            autoHighlight\n            items={frameworks}\n            defaultValue={[frameworks[0], frameworks[1], frameworks[2]]}\n          >\n            <ComboboxChips ref={anchor2}>\n              <ComboboxValue>\n                {(values) => (\n                  <React.Fragment>\n                    {values.map((value: string) => (\n                      <ComboboxChip key={value}>{value}</ComboboxChip>\n                    ))}\n                    <ComboboxChipsInput\n                      id=\"combobox-multiple-invalid\"\n                      aria-invalid\n                    />\n                  </React.Fragment>\n                )}\n              </ComboboxValue>\n            </ComboboxChips>\n            <ComboboxContent anchor={anchor2}>\n              <ComboboxEmpty>No items found.</ComboboxEmpty>\n              <ComboboxList>\n                {(item) => (\n                  <ComboboxItem key={item} value={item}>\n                    {item}\n                  </ComboboxItem>\n                )}\n              </ComboboxList>\n            </ComboboxContent>\n          </Combobox>\n          <FieldDescription>\n            Please select at least one framework.\n          </FieldDescription>\n          <FieldError errors={[{ message: \"This field is required.\" }]} />\n        </Field>\n      </div>\n    </Example>\n  )\n}\n\nfunction ComboboxMultipleNoRemove() {\n  const anchor = useComboboxAnchor()\n\n  return (\n    <Example title=\"Combobox Multiple (No Remove)\">\n      <Combobox\n        multiple\n        autoHighlight\n        items={frameworks}\n        defaultValue={[frameworks[0], frameworks[1]]}\n      >\n        <ComboboxChips ref={anchor}>\n          <ComboboxValue>\n            {(values) => (\n              <React.Fragment>\n                {values.map((value: string) => (\n                  <ComboboxChip key={value} showRemove={false}>\n                    {value}\n                  </ComboboxChip>\n                ))}\n                <ComboboxChipsInput />\n              </React.Fragment>\n            )}\n          </ComboboxValue>\n        </ComboboxChips>\n        <ComboboxContent anchor={anchor}>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxWithCustomItems() {\n  return (\n    <Example title=\"With Custom Item Rendering\">\n      <Combobox\n        items={countries.filter((country) => country.code !== \"\")}\n        itemToStringValue={(country: (typeof countries)[number]) =>\n          country.label\n        }\n      >\n        <ComboboxInput placeholder=\"Search countries...\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No countries found.</ComboboxEmpty>\n          <ComboboxList>\n            {(country) => (\n              <ComboboxItem key={country.code} value={country}>\n                <Item size=\"xs\" className=\"p-0\">\n                  <ItemContent>\n                    <ItemTitle className=\"whitespace-nowrap\">\n                      {country.label}\n                    </ItemTitle>\n                    <ItemDescription>\n                      {country.continent} ({country.code})\n                    </ItemDescription>\n                  </ItemContent>\n                </Item>\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n    </Example>\n  )\n}\n\nfunction ComboboxInDialog() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Combobox in Dialog\">\n      <Dialog open={open} onOpenChange={setOpen} modal={false}>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Select Framework</DialogTitle>\n            <DialogDescription>\n              Choose your preferred framework from the list below.\n            </DialogDescription>\n          </DialogHeader>\n          <Field>\n            <FieldLabel htmlFor=\"framework-dialog\" className=\"sr-only\">\n              Framework\n            </FieldLabel>\n            <Combobox items={frameworks}>\n              <ComboboxInput\n                id=\"framework-dialog\"\n                placeholder=\"Select a framework\"\n              />\n              <ComboboxContent>\n                <ComboboxEmpty>No items found.</ComboboxEmpty>\n                <ComboboxList>\n                  {(item) => (\n                    <ComboboxItem key={item} value={item}>\n                      {item}\n                    </ComboboxItem>\n                  )}\n                </ComboboxList>\n              </ComboboxContent>\n            </Combobox>\n          </Field>\n          <DialogFooter>\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={() => setOpen(false)}\n            >\n              Cancel\n            </Button>\n            <Button\n              type=\"button\"\n              onClick={() => {\n                toast(\"Framework selected.\")\n                setOpen(false)\n              }}\n            >\n              Confirm\n            </Button>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction ComboboxWithOtherInputs() {\n  return (\n    <Example title=\"With Other Inputs\">\n      <Combobox items={frameworks}>\n        <ComboboxInput placeholder=\"Select a framework\" className=\"w-52\" />\n        <ComboboxContent>\n          <ComboboxEmpty>No items found.</ComboboxEmpty>\n          <ComboboxList>\n            {(item) => (\n              <ComboboxItem key={item} value={item}>\n                {item}\n              </ComboboxItem>\n            )}\n          </ComboboxList>\n        </ComboboxContent>\n      </Combobox>\n      <Select>\n        <SelectTrigger className=\"w-52\">\n          <SelectValue placeholder=\"Select a framework\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {frameworks.map((framework) => (\n              <SelectItem key={framework} value={framework}>\n                {framework}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n      <Button\n        variant=\"outline\"\n        className=\"w-52 justify-between font-normal text-muted-foreground\"\n      >\n        Select a framework\n        <IconPlaceholder\n          lucide=\"ChevronDownIcon\"\n          tabler=\"IconSelector\"\n          hugeicons=\"UnfoldMoreIcon\"\n          phosphor=\"CaretDownIcon\"\n          remixicon=\"RiArrowDownSLine\"\n        />\n      </Button>\n      <Input placeholder=\"Select a framework\" className=\"w-52\" />\n      <InputGroup className=\"w-52\">\n        <InputGroupInput placeholder=\"Select a framework\" />\n        <InputGroupAddon align=\"inline-end\">\n          <IconPlaceholder\n            lucide=\"ChevronDownIcon\"\n            tabler=\"IconSelector\"\n            hugeicons=\"UnfoldMoreIcon\"\n            phosphor=\"CaretDownIcon\"\n            remixicon=\"RiArrowDownSLine\"\n          />\n        </InputGroupAddon>\n      </InputGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/command-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Card, CardContent } from \"@/registry/bases/radix/ui/card\"\nimport {\n  Command,\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/registry/bases/radix/ui/command\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CommandExample() {\n  return (\n    <ExampleWrapper>\n      <CommandInline />\n      <CommandBasic />\n      <CommandWithShortcuts />\n      <CommandWithGroups />\n      <CommandManyItems />\n    </ExampleWrapper>\n  )\n}\n\nfunction CommandInline() {\n  return (\n    <Example title=\"Inline\">\n      <Card className=\"w-full p-0\">\n        <CardContent className=\"p-0\">\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Suggestions\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalendarIcon\"\n                    tabler=\"IconCalendar\"\n                    hugeicons=\"CalendarIcon\"\n                    phosphor=\"CalendarBlankIcon\"\n                    remixicon=\"RiCalendarLine\"\n                  />\n                  <span>Calendar</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SmileIcon\"\n                    tabler=\"IconMoodSmile\"\n                    hugeicons=\"SmileIcon\"\n                    phosphor=\"SmileyIcon\"\n                    remixicon=\"RiEmotionLine\"\n                  />\n                  <span>Search Emoji</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalculatorIcon\"\n                    tabler=\"IconCalculator\"\n                    hugeicons=\"CalculatorIcon\"\n                    phosphor=\"CalculatorIcon\"\n                    remixicon=\"RiCalculatorLine\"\n                  />\n                  <span>Calculator</span>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Settings\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"UserIcon\"\n                    tabler=\"IconUser\"\n                    hugeicons=\"UserIcon\"\n                    phosphor=\"UserIcon\"\n                    remixicon=\"RiUserLine\"\n                  />\n                  <span>Profile</span>\n                  <CommandShortcut>⌘P</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CreditCardIcon\"\n                    tabler=\"IconCreditCard\"\n                    hugeicons=\"CreditCardIcon\"\n                    phosphor=\"CreditCardIcon\"\n                    remixicon=\"RiBankCardLine\"\n                  />\n                  <span>Billing</span>\n                  <CommandShortcut>⌘B</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"SettingsIcon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                  <span>Settings</span>\n                  <CommandShortcut>⌘S</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction CommandBasic() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex flex-col gap-4\">\n        <Button\n          onClick={() => setOpen(true)}\n          variant=\"outline\"\n          className=\"w-fit\"\n        >\n          Open Menu\n        </Button>\n        <CommandDialog open={open} onOpenChange={setOpen}>\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Suggestions\">\n                <CommandItem>Calendar</CommandItem>\n                <CommandItem>Search Emoji</CommandItem>\n                <CommandItem>Calculator</CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CommandDialog>\n      </div>\n    </Example>\n  )\n}\n\nfunction CommandWithShortcuts() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"With Shortcuts\">\n      <div className=\"flex flex-col gap-4\">\n        <Button\n          onClick={() => setOpen(true)}\n          variant=\"outline\"\n          className=\"w-fit\"\n        >\n          Open Menu\n        </Button>\n        <CommandDialog open={open} onOpenChange={setOpen}>\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Settings\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"UserIcon\"\n                    tabler=\"IconUser\"\n                    hugeicons=\"UserIcon\"\n                    phosphor=\"UserIcon\"\n                    remixicon=\"RiUserLine\"\n                  />\n                  <span>Profile</span>\n                  <CommandShortcut>⌘P</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CreditCardIcon\"\n                    tabler=\"IconCreditCard\"\n                    hugeicons=\"CreditCardIcon\"\n                    phosphor=\"CreditCardIcon\"\n                    remixicon=\"RiBankCardLine\"\n                  />\n                  <span>Billing</span>\n                  <CommandShortcut>⌘B</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"SettingsIcon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                  <span>Settings</span>\n                  <CommandShortcut>⌘S</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CommandDialog>\n      </div>\n    </Example>\n  )\n}\n\nfunction CommandWithGroups() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"With Groups\">\n      <div className=\"flex flex-col gap-4\">\n        <Button\n          onClick={() => setOpen(true)}\n          variant=\"outline\"\n          className=\"w-fit\"\n        >\n          Open Menu\n        </Button>\n        <CommandDialog open={open} onOpenChange={setOpen}>\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Suggestions\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalendarIcon\"\n                    tabler=\"IconCalendar\"\n                    hugeicons=\"CalendarIcon\"\n                    phosphor=\"CalendarBlankIcon\"\n                    remixicon=\"RiCalendarLine\"\n                  />\n                  <span>Calendar</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SmileIcon\"\n                    tabler=\"IconMoodSmile\"\n                    hugeicons=\"SmileIcon\"\n                    phosphor=\"SmileyIcon\"\n                    remixicon=\"RiEmotionLine\"\n                  />\n                  <span>Search Emoji</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalculatorIcon\"\n                    tabler=\"IconCalculator\"\n                    hugeicons=\"CalculatorIcon\"\n                    phosphor=\"CalculatorIcon\"\n                    remixicon=\"RiCalculatorLine\"\n                  />\n                  <span>Calculator</span>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Settings\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"UserIcon\"\n                    tabler=\"IconUser\"\n                    hugeicons=\"UserIcon\"\n                    phosphor=\"UserIcon\"\n                    remixicon=\"RiUserLine\"\n                  />\n                  <span>Profile</span>\n                  <CommandShortcut>⌘P</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CreditCardIcon\"\n                    tabler=\"IconCreditCard\"\n                    hugeicons=\"CreditCardIcon\"\n                    phosphor=\"CreditCardIcon\"\n                    remixicon=\"RiBankCardLine\"\n                  />\n                  <span>Billing</span>\n                  <CommandShortcut>⌘B</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"SettingsIcon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                  <span>Settings</span>\n                  <CommandShortcut>⌘S</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CommandDialog>\n      </div>\n    </Example>\n  )\n}\n\nfunction CommandManyItems() {\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <Example title=\"Many Groups & Items\">\n      <div className=\"flex flex-col gap-4\">\n        <Button\n          onClick={() => setOpen(true)}\n          variant=\"outline\"\n          className=\"w-fit\"\n        >\n          Open Menu\n        </Button>\n        <CommandDialog open={open} onOpenChange={setOpen}>\n          <Command>\n            <CommandInput placeholder=\"Type a command or search...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup heading=\"Navigation\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"HomeIcon\"\n                    tabler=\"IconHome\"\n                    hugeicons=\"HomeIcon\"\n                    phosphor=\"HouseIcon\"\n                    remixicon=\"RiHomeLine\"\n                  />\n                  <span>Home</span>\n                  <CommandShortcut>⌘H</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"InboxIcon\"\n                    tabler=\"IconInbox\"\n                    hugeicons=\"InboxIcon\"\n                    phosphor=\"TrayIcon\"\n                    remixicon=\"RiInboxLine\"\n                  />\n                  <span>Inbox</span>\n                  <CommandShortcut>⌘I</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"FileTextIcon\"\n                    tabler=\"IconFileText\"\n                    hugeicons=\"File02Icon\"\n                    phosphor=\"FileTextIcon\"\n                    remixicon=\"RiFileTextLine\"\n                  />\n                  <span>Documents</span>\n                  <CommandShortcut>⌘D</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"FolderIcon\"\n                    tabler=\"IconFolder\"\n                    hugeicons=\"FolderIcon\"\n                    phosphor=\"FolderIcon\"\n                    remixicon=\"RiFolderLine\"\n                  />\n                  <span>Folders</span>\n                  <CommandShortcut>⌘F</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Actions\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                  <span>New File</span>\n                  <CommandShortcut>⌘N</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"FolderPlusIcon\"\n                    tabler=\"IconFolderPlus\"\n                    hugeicons=\"FolderAddIcon\"\n                    phosphor=\"FolderPlusIcon\"\n                    remixicon=\"RiFolderAddLine\"\n                  />\n                  <span>New Folder</span>\n                  <CommandShortcut>⇧⌘N</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"CopyIcon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                  <span>Copy</span>\n                  <CommandShortcut>⌘C</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ScissorsIcon\"\n                    tabler=\"IconCut\"\n                    hugeicons=\"ScissorIcon\"\n                    phosphor=\"ScissorsIcon\"\n                    remixicon=\"RiScissorsLine\"\n                  />\n                  <span>Cut</span>\n                  <CommandShortcut>⌘X</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ClipboardPasteIcon\"\n                    tabler=\"IconClipboard\"\n                    hugeicons=\"ClipboardIcon\"\n                    phosphor=\"ClipboardIcon\"\n                    remixicon=\"RiClipboardLine\"\n                  />\n                  <span>Paste</span>\n                  <CommandShortcut>⌘V</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"DeleteIcon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  <span>Delete</span>\n                  <CommandShortcut>⌫</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"View\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"LayoutGridIcon\"\n                    tabler=\"IconLayoutGrid\"\n                    hugeicons=\"GridIcon\"\n                    phosphor=\"GridFourIcon\"\n                    remixicon=\"RiGridLine\"\n                  />\n                  <span>Grid View</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ListIcon\"\n                    tabler=\"IconList\"\n                    hugeicons=\"Menu05Icon\"\n                    phosphor=\"ListIcon\"\n                    remixicon=\"RiListUnordered\"\n                  />\n                  <span>List View</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ZoomInIcon\"\n                    tabler=\"IconZoomIn\"\n                    hugeicons=\"ZoomInAreaIcon\"\n                    phosphor=\"MagnifyingGlassMinusIcon\"\n                    remixicon=\"RiSearchEyeLine\"\n                  />\n                  <span>Zoom In</span>\n                  <CommandShortcut>⌘+</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ZoomOutIcon\"\n                    tabler=\"IconZoomOut\"\n                    hugeicons=\"ZoomOutAreaIcon\"\n                    phosphor=\"MagnifyingGlassPlusIcon\"\n                    remixicon=\"RiZoomInLine\"\n                  />\n                  <span>Zoom Out</span>\n                  <CommandShortcut>⌘-</CommandShortcut>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Account\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"UserIcon\"\n                    tabler=\"IconUser\"\n                    hugeicons=\"UserIcon\"\n                    phosphor=\"UserIcon\"\n                    remixicon=\"RiUserLine\"\n                  />\n                  <span>Profile</span>\n                  <CommandShortcut>⌘P</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CreditCardIcon\"\n                    tabler=\"IconCreditCard\"\n                    hugeicons=\"CreditCardIcon\"\n                    phosphor=\"CreditCardIcon\"\n                    remixicon=\"RiBankCardLine\"\n                  />\n                  <span>Billing</span>\n                  <CommandShortcut>⌘B</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"SettingsIcon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                  <span>Settings</span>\n                  <CommandShortcut>⌘S</CommandShortcut>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"BellIcon\"\n                    tabler=\"IconBell\"\n                    hugeicons=\"NotificationIcon\"\n                    phosphor=\"BellIcon\"\n                    remixicon=\"RiNotificationLine\"\n                  />\n                  <span>Notifications</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"HelpCircleIcon\"\n                    tabler=\"IconHelpCircle\"\n                    hugeicons=\"HelpCircleIcon\"\n                    phosphor=\"QuestionIcon\"\n                    remixicon=\"RiQuestionLine\"\n                  />\n                  <span>Help & Support</span>\n                </CommandItem>\n              </CommandGroup>\n              <CommandSeparator />\n              <CommandGroup heading=\"Tools\">\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalculatorIcon\"\n                    tabler=\"IconCalculator\"\n                    hugeicons=\"CalculatorIcon\"\n                    phosphor=\"CalculatorIcon\"\n                    remixicon=\"RiCalculatorLine\"\n                  />\n                  <span>Calculator</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CalendarIcon\"\n                    tabler=\"IconCalendar\"\n                    hugeicons=\"CalendarIcon\"\n                    phosphor=\"CalendarBlankIcon\"\n                    remixicon=\"RiCalendarLine\"\n                  />\n                  <span>Calendar</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"ImageIcon\"\n                    tabler=\"IconPhoto\"\n                    hugeicons=\"ImageIcon\"\n                    phosphor=\"ImageIcon\"\n                    remixicon=\"RiImageLine\"\n                  />\n                  <span>Image Editor</span>\n                </CommandItem>\n                <CommandItem>\n                  <IconPlaceholder\n                    lucide=\"CodeIcon\"\n                    tabler=\"IconCode\"\n                    hugeicons=\"CodeIcon\"\n                    phosphor=\"CodeIcon\"\n                    remixicon=\"RiCodeLine\"\n                  />\n                  <span>Code Editor</span>\n                </CommandItem>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </CommandDialog>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/component-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/bases/radix/ui/alert-dialog\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Combobox,\n  ComboboxContent,\n  ComboboxEmpty,\n  ComboboxInput,\n  ComboboxItem,\n  ComboboxList,\n} from \"@/registry/bases/radix/ui/combobox\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function ComponentExample() {\n  return (\n    <ExampleWrapper>\n      <CardExample />\n      <FormExample />\n    </ExampleWrapper>\n  )\n}\n\nfunction CardExample() {\n  return (\n    <Example title=\"Card\" className=\"items-center justify-center\">\n      <Card className=\"relative w-full max-w-sm overflow-hidden pt-0\">\n        <div className=\"absolute inset-0 z-30 aspect-video bg-primary opacity-50 mix-blend-color\" />\n        <img\n          src=\"https://images.unsplash.com/photo-1604076850742-4c7221f3101b?q=80&w=1887&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\"\n          alt=\"Photo by mymind on Unsplash\"\n          title=\"Photo by mymind on Unsplash\"\n          className=\"relative z-20 aspect-video w-full object-cover brightness-60 grayscale\"\n        />\n        <CardHeader>\n          <CardTitle>Observability Plus is replacing Monitoring</CardTitle>\n          <CardDescription>\n            Switch to the improved way to explore your data, with natural\n            language. Monitoring will no longer be available on the Pro plan in\n            November, 2025\n          </CardDescription>\n        </CardHeader>\n        <CardFooter>\n          <AlertDialog>\n            <AlertDialogTrigger asChild>\n              <Button>\n                <IconPlaceholder\n                  lucide=\"PlusIcon\"\n                  tabler=\"IconPlus\"\n                  hugeicons=\"PlusSignIcon\"\n                  phosphor=\"PlusIcon\"\n                  remixicon=\"RiAddLine\"\n                  data-icon=\"inline-start\"\n                />\n                Show Dialog\n              </Button>\n            </AlertDialogTrigger>\n            <AlertDialogContent size=\"sm\">\n              <AlertDialogHeader>\n                <AlertDialogMedia>\n                  <IconPlaceholder\n                    lucide=\"BluetoothIcon\"\n                    tabler=\"IconBluetooth\"\n                    hugeicons=\"BluetoothIcon\"\n                    phosphor=\"BluetoothIcon\"\n                    remixicon=\"RiBluetoothLine\"\n                  />\n                </AlertDialogMedia>\n                <AlertDialogTitle>Allow accessory to connect?</AlertDialogTitle>\n                <AlertDialogDescription>\n                  Do you want to allow the USB accessory to connect to this\n                  device?\n                </AlertDialogDescription>\n              </AlertDialogHeader>\n              <AlertDialogFooter>\n                <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n                <AlertDialogAction>Allow</AlertDialogAction>\n              </AlertDialogFooter>\n            </AlertDialogContent>\n          </AlertDialog>\n          <Badge variant=\"secondary\" className=\"ml-auto\">\n            Warning\n          </Badge>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nconst frameworks = [\n  \"Next.js\",\n  \"SvelteKit\",\n  \"Nuxt.js\",\n  \"Remix\",\n  \"Astro\",\n] as const\n\nfunction FormExample() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <Example title=\"Form\">\n      <Card className=\"w-full max-w-md\">\n        <CardHeader>\n          <CardTitle>User Information</CardTitle>\n          <CardDescription>Please fill in your details below</CardDescription>\n          <CardAction>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"ghost\" size=\"icon\">\n                  <IconPlaceholder\n                    lucide=\"MoreVerticalIcon\"\n                    tabler=\"IconDotsVertical\"\n                    hugeicons=\"MoreVerticalCircle01Icon\"\n                    phosphor=\"DotsThreeVerticalIcon\"\n                    remixicon=\"RiMore2Line\"\n                  />\n                  <span className=\"sr-only\">More options</span>\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\" className=\"w-56\">\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>File</DropdownMenuLabel>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"FileIcon\"\n                      tabler=\"IconFile\"\n                      hugeicons=\"FileIcon\"\n                      phosphor=\"FileIcon\"\n                      remixicon=\"RiFileLine\"\n                    />\n                    New File\n                    <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"FolderIcon\"\n                      tabler=\"IconFolder\"\n                      hugeicons=\"FolderIcon\"\n                      phosphor=\"FolderIcon\"\n                      remixicon=\"RiFolderLine\"\n                    />\n                    New Folder\n                    <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <IconPlaceholder\n                        lucide=\"FolderOpenIcon\"\n                        tabler=\"IconFolderOpen\"\n                        hugeicons=\"FolderOpenIcon\"\n                        phosphor=\"FolderOpenIcon\"\n                        remixicon=\"RiFolderOpenLine\"\n                      />\n                      Open Recent\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuGroup>\n                          <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FileCodeIcon\"\n                              tabler=\"IconFileCode\"\n                              hugeicons=\"CodeIcon\"\n                              phosphor=\"CodeIcon\"\n                              remixicon=\"RiCodeLine\"\n                            />\n                            Project Alpha\n                          </DropdownMenuItem>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FileCodeIcon\"\n                              tabler=\"IconFileCode\"\n                              hugeicons=\"CodeIcon\"\n                              phosphor=\"CodeIcon\"\n                              remixicon=\"RiCodeLine\"\n                            />\n                            Project Beta\n                          </DropdownMenuItem>\n                          <DropdownMenuSub>\n                            <DropdownMenuSubTrigger>\n                              <IconPlaceholder\n                                lucide=\"MoreHorizontalIcon\"\n                                tabler=\"IconDots\"\n                                hugeicons=\"MoreHorizontalCircle01Icon\"\n                                phosphor=\"DotsThreeOutlineIcon\"\n                                remixicon=\"RiMoreLine\"\n                              />\n                              More Projects\n                            </DropdownMenuSubTrigger>\n                            <DropdownMenuPortal>\n                              <DropdownMenuSubContent>\n                                <DropdownMenuItem>\n                                  <IconPlaceholder\n                                    lucide=\"FileCodeIcon\"\n                                    tabler=\"IconFileCode\"\n                                    hugeicons=\"CodeIcon\"\n                                    phosphor=\"CodeIcon\"\n                                    remixicon=\"RiCodeLine\"\n                                  />\n                                  Project Gamma\n                                </DropdownMenuItem>\n                                <DropdownMenuItem>\n                                  <IconPlaceholder\n                                    lucide=\"FileCodeIcon\"\n                                    tabler=\"IconFileCode\"\n                                    hugeicons=\"CodeIcon\"\n                                    phosphor=\"CodeIcon\"\n                                    remixicon=\"RiCodeLine\"\n                                  />\n                                  Project Delta\n                                </DropdownMenuItem>\n                              </DropdownMenuSubContent>\n                            </DropdownMenuPortal>\n                          </DropdownMenuSub>\n                        </DropdownMenuGroup>\n                        <DropdownMenuSeparator />\n                        <DropdownMenuGroup>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FolderSearchIcon\"\n                              tabler=\"IconFolderSearch\"\n                              hugeicons=\"SearchIcon\"\n                              phosphor=\"MagnifyingGlassIcon\"\n                              remixicon=\"RiSearchLine\"\n                            />\n                            Browse...\n                          </DropdownMenuItem>\n                        </DropdownMenuGroup>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"SaveIcon\"\n                      tabler=\"IconDeviceFloppy\"\n                      hugeicons=\"FloppyDiskIcon\"\n                      phosphor=\"FloppyDiskIcon\"\n                      remixicon=\"RiSaveLine\"\n                    />\n                    Save\n                    <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"DownloadIcon\"\n                      tabler=\"IconDownload\"\n                      hugeicons=\"DownloadIcon\"\n                      phosphor=\"DownloadIcon\"\n                      remixicon=\"RiDownloadLine\"\n                    />\n                    Export\n                    <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>View</DropdownMenuLabel>\n                  <DropdownMenuCheckboxItem\n                    checked={notifications.email}\n                    onCheckedChange={(checked) =>\n                      setNotifications({\n                        ...notifications,\n                        email: checked === true,\n                      })\n                    }\n                  >\n                    <IconPlaceholder\n                      lucide=\"EyeIcon\"\n                      tabler=\"IconEye\"\n                      hugeicons=\"EyeIcon\"\n                      phosphor=\"EyeIcon\"\n                      remixicon=\"RiEyeLine\"\n                    />\n                    Show Sidebar\n                  </DropdownMenuCheckboxItem>\n                  <DropdownMenuCheckboxItem\n                    checked={notifications.sms}\n                    onCheckedChange={(checked) =>\n                      setNotifications({\n                        ...notifications,\n                        sms: checked === true,\n                      })\n                    }\n                  >\n                    <IconPlaceholder\n                      lucide=\"LayoutIcon\"\n                      tabler=\"IconLayout\"\n                      hugeicons=\"LayoutIcon\"\n                      phosphor=\"LayoutIcon\"\n                      remixicon=\"RiLayoutLine\"\n                    />\n                    Show Status Bar\n                  </DropdownMenuCheckboxItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <IconPlaceholder\n                        lucide=\"PaletteIcon\"\n                        tabler=\"IconPalette\"\n                        hugeicons=\"PaintBoardIcon\"\n                        phosphor=\"PaletteIcon\"\n                        remixicon=\"RiPaletteLine\"\n                      />\n                      Theme\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuGroup>\n                          <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n                          <DropdownMenuRadioGroup\n                            value={theme}\n                            onValueChange={setTheme}\n                          >\n                            <DropdownMenuRadioItem value=\"light\">\n                              <IconPlaceholder\n                                lucide=\"SunIcon\"\n                                tabler=\"IconSun\"\n                                hugeicons=\"SunIcon\"\n                                phosphor=\"SunIcon\"\n                                remixicon=\"RiSunLine\"\n                              />\n                              Light\n                            </DropdownMenuRadioItem>\n                            <DropdownMenuRadioItem value=\"dark\">\n                              <IconPlaceholder\n                                lucide=\"MoonIcon\"\n                                tabler=\"IconMoon\"\n                                hugeicons=\"MoonIcon\"\n                                phosphor=\"MoonIcon\"\n                                remixicon=\"RiMoonLine\"\n                              />\n                              Dark\n                            </DropdownMenuRadioItem>\n                            <DropdownMenuRadioItem value=\"system\">\n                              <IconPlaceholder\n                                lucide=\"MonitorIcon\"\n                                tabler=\"IconDeviceDesktop\"\n                                hugeicons=\"ComputerIcon\"\n                                phosphor=\"MonitorIcon\"\n                                remixicon=\"RiComputerLine\"\n                              />\n                              System\n                            </DropdownMenuRadioItem>\n                          </DropdownMenuRadioGroup>\n                        </DropdownMenuGroup>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuLabel>Account</DropdownMenuLabel>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"UserIcon\"\n                      tabler=\"IconUser\"\n                      hugeicons=\"UserIcon\"\n                      phosphor=\"UserIcon\"\n                      remixicon=\"RiUserLine\"\n                    />\n                    Profile\n                    <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"CreditCardIcon\"\n                      tabler=\"IconCreditCard\"\n                      hugeicons=\"CreditCardIcon\"\n                      phosphor=\"CreditCardIcon\"\n                      remixicon=\"RiBankCardLine\"\n                    />\n                    Billing\n                  </DropdownMenuItem>\n                  <DropdownMenuSub>\n                    <DropdownMenuSubTrigger>\n                      <IconPlaceholder\n                        lucide=\"SettingsIcon\"\n                        tabler=\"IconSettings\"\n                        hugeicons=\"SettingsIcon\"\n                        phosphor=\"GearIcon\"\n                        remixicon=\"RiSettingsLine\"\n                      />\n                      Settings\n                    </DropdownMenuSubTrigger>\n                    <DropdownMenuPortal>\n                      <DropdownMenuSubContent>\n                        <DropdownMenuGroup>\n                          <DropdownMenuLabel>Preferences</DropdownMenuLabel>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"KeyboardIcon\"\n                              tabler=\"IconKeyboard\"\n                              hugeicons=\"KeyboardIcon\"\n                              phosphor=\"KeyboardIcon\"\n                              remixicon=\"RiKeyboardLine\"\n                            />\n                            Keyboard Shortcuts\n                          </DropdownMenuItem>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"LanguagesIcon\"\n                              tabler=\"IconLanguage\"\n                              hugeicons=\"LanguageCircleIcon\"\n                              phosphor=\"TranslateIcon\"\n                              remixicon=\"RiTranslate\"\n                            />\n                            Language\n                          </DropdownMenuItem>\n                          <DropdownMenuSub>\n                            <DropdownMenuSubTrigger>\n                              <IconPlaceholder\n                                lucide=\"BellIcon\"\n                                tabler=\"IconBell\"\n                                hugeicons=\"NotificationIcon\"\n                                phosphor=\"BellIcon\"\n                                remixicon=\"RiNotificationLine\"\n                              />\n                              Notifications\n                            </DropdownMenuSubTrigger>\n                            <DropdownMenuPortal>\n                              <DropdownMenuSubContent>\n                                <DropdownMenuGroup>\n                                  <DropdownMenuLabel>\n                                    Notification Types\n                                  </DropdownMenuLabel>\n                                  <DropdownMenuCheckboxItem\n                                    checked={notifications.push}\n                                    onCheckedChange={(checked) =>\n                                      setNotifications({\n                                        ...notifications,\n                                        push: checked === true,\n                                      })\n                                    }\n                                  >\n                                    <IconPlaceholder\n                                      lucide=\"BellIcon\"\n                                      tabler=\"IconBell\"\n                                      hugeicons=\"NotificationIcon\"\n                                      phosphor=\"BellIcon\"\n                                      remixicon=\"RiNotificationLine\"\n                                    />\n                                    Push Notifications\n                                  </DropdownMenuCheckboxItem>\n                                  <DropdownMenuCheckboxItem\n                                    checked={notifications.email}\n                                    onCheckedChange={(checked) =>\n                                      setNotifications({\n                                        ...notifications,\n                                        email: checked === true,\n                                      })\n                                    }\n                                  >\n                                    <IconPlaceholder\n                                      lucide=\"MailIcon\"\n                                      tabler=\"IconMail\"\n                                      hugeicons=\"MailIcon\"\n                                      phosphor=\"EnvelopeIcon\"\n                                      remixicon=\"RiMailLine\"\n                                    />\n                                    Email Notifications\n                                  </DropdownMenuCheckboxItem>\n                                </DropdownMenuGroup>\n                              </DropdownMenuSubContent>\n                            </DropdownMenuPortal>\n                          </DropdownMenuSub>\n                        </DropdownMenuGroup>\n                        <DropdownMenuSeparator />\n                        <DropdownMenuGroup>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"ShieldIcon\"\n                              tabler=\"IconShield\"\n                              hugeicons=\"ShieldIcon\"\n                              phosphor=\"ShieldIcon\"\n                              remixicon=\"RiShieldLine\"\n                            />\n                            Privacy & Security\n                          </DropdownMenuItem>\n                        </DropdownMenuGroup>\n                      </DropdownMenuSubContent>\n                    </DropdownMenuPortal>\n                  </DropdownMenuSub>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"HelpCircleIcon\"\n                      tabler=\"IconHelpCircle\"\n                      hugeicons=\"HelpCircleIcon\"\n                      phosphor=\"QuestionIcon\"\n                      remixicon=\"RiQuestionLine\"\n                    />\n                    Help & Support\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <IconPlaceholder\n                      lucide=\"FileTextIcon\"\n                      tabler=\"IconFileText\"\n                      hugeicons=\"File01Icon\"\n                      phosphor=\"FileTextIcon\"\n                      remixicon=\"RiFileTextLine\"\n                    />\n                    Documentation\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n                <DropdownMenuSeparator />\n                <DropdownMenuGroup>\n                  <DropdownMenuItem variant=\"destructive\">\n                    <IconPlaceholder\n                      lucide=\"LogOutIcon\"\n                      tabler=\"IconLogout\"\n                      hugeicons=\"LogoutIcon\"\n                      phosphor=\"SignOutIcon\"\n                      remixicon=\"RiLogoutBoxLine\"\n                    />\n                    Sign Out\n                    <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </CardAction>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <div className=\"grid grid-cols-2 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"small-form-name\">Name</FieldLabel>\n                  <Input\n                    id=\"small-form-name\"\n                    placeholder=\"Enter your name\"\n                    required\n                  />\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"small-form-role\">Role</FieldLabel>\n                  <Select defaultValue=\"\">\n                    <SelectTrigger id=\"small-form-role\">\n                      <SelectValue placeholder=\"Select a role\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        <SelectItem value=\"developer\">Developer</SelectItem>\n                        <SelectItem value=\"designer\">Designer</SelectItem>\n                        <SelectItem value=\"manager\">Manager</SelectItem>\n                        <SelectItem value=\"other\">Other</SelectItem>\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                </Field>\n              </div>\n              <Field>\n                <FieldLabel htmlFor=\"small-form-framework\">\n                  Framework\n                </FieldLabel>\n                <Combobox items={frameworks}>\n                  <ComboboxInput\n                    id=\"small-form-framework\"\n                    placeholder=\"Select a framework\"\n                    required\n                  />\n                  <ComboboxContent>\n                    <ComboboxEmpty>No frameworks found.</ComboboxEmpty>\n                    <ComboboxList>\n                      {(item) => (\n                        <ComboboxItem key={item} value={item}>\n                          {item}\n                        </ComboboxItem>\n                      )}\n                    </ComboboxList>\n                  </ComboboxContent>\n                </Combobox>\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"small-form-comments\">Comments</FieldLabel>\n                <Textarea\n                  id=\"small-form-comments\"\n                  placeholder=\"Add any additional comments\"\n                />\n              </Field>\n              <Field orientation=\"horizontal\">\n                <Button type=\"submit\">Submit</Button>\n                <Button variant=\"outline\" type=\"button\">\n                  Cancel\n                </Button>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/context-menu-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuGroup,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/registry/bases/radix/ui/context-menu\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ContextMenuExample() {\n  return (\n    <ExampleWrapper>\n      <ContextMenuBasic />\n      <ContextMenuWithSides />\n      <ContextMenuWithIcons />\n      <ContextMenuWithShortcuts />\n      <ContextMenuWithSubmenu />\n      <ContextMenuWithGroups />\n      <ContextMenuWithCheckboxes />\n      <ContextMenuWithRadio />\n      <ContextMenuWithDestructive />\n      <ContextMenuInDialog />\n      <ContextMenuWithInset />\n    </ExampleWrapper>\n  )\n}\n\nfunction ContextMenuBasic() {\n  return (\n    <Example title=\"Basic\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>Back</ContextMenuItem>\n            <ContextMenuItem disabled>Forward</ContextMenuItem>\n            <ContextMenuItem>Reload</ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"CopyIcon\"\n                tabler=\"IconCopy\"\n                hugeicons=\"CopyIcon\"\n                phosphor=\"CopyIcon\"\n                remixicon=\"RiFileCopyLine\"\n              />\n              Copy\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ScissorsIcon\"\n                tabler=\"IconCut\"\n                hugeicons=\"ScissorIcon\"\n                phosphor=\"ScissorsIcon\"\n                remixicon=\"RiScissorsLine\"\n              />\n              Cut\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ClipboardPasteIcon\"\n                tabler=\"IconClipboard\"\n                hugeicons=\"ClipboardIcon\"\n                phosphor=\"ClipboardIcon\"\n                remixicon=\"RiClipboardLine\"\n              />\n              Paste\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"TrashIcon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"DeleteIcon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n              Delete\n            </ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithShortcuts() {\n  return (\n    <Example title=\"With Shortcuts\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              Back\n              <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem disabled>\n              Forward\n              <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Reload\n              <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              Save\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Save As...\n              <ContextMenuShortcut>⇧⌘S</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithSubmenu() {\n  return (\n    <Example title=\"With Submenu\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              Copy\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Cut\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSub>\n            <ContextMenuSubTrigger>More Tools</ContextMenuSubTrigger>\n            <ContextMenuSubContent>\n              <ContextMenuGroup>\n                <ContextMenuItem>Save Page...</ContextMenuItem>\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n                <ContextMenuItem>Name Window...</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem>Developer Tools</ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithGroups() {\n  return (\n    <Example title=\"With Groups, Labels & Separators\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuLabel>File</ContextMenuLabel>\n            <ContextMenuItem>\n              New File\n              <ContextMenuShortcut>⌘N</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Open File\n              <ContextMenuShortcut>⌘O</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Save\n              <ContextMenuShortcut>⌘S</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuLabel>Edit</ContextMenuLabel>\n            <ContextMenuItem>\n              Undo\n              <ContextMenuShortcut>⌘Z</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Redo\n              <ContextMenuShortcut>⇧⌘Z</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuSeparator />\n            <ContextMenuItem>\n              Cut\n              <ContextMenuShortcut>⌘X</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Copy\n              <ContextMenuShortcut>⌘C</ContextMenuShortcut>\n            </ContextMenuItem>\n            <ContextMenuItem>\n              Paste\n              <ContextMenuShortcut>⌘V</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem variant=\"destructive\">\n              Delete\n              <ContextMenuShortcut>⌫</ContextMenuShortcut>\n            </ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithCheckboxes() {\n  const [showBookmarksBar, setShowBookmarksBar] = React.useState(true)\n  const [showFullUrls, setShowFullUrls] = React.useState(false)\n  const [showDeveloperTools, setShowDeveloperTools] = React.useState(false)\n\n  return (\n    <Example title=\"With Checkboxes\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuCheckboxItem\n              checked={showBookmarksBar}\n              onCheckedChange={setShowBookmarksBar}\n            >\n              Show Bookmarks Bar\n            </ContextMenuCheckboxItem>\n            <ContextMenuCheckboxItem\n              checked={showFullUrls}\n              onCheckedChange={setShowFullUrls}\n            >\n              Show Full URLs\n            </ContextMenuCheckboxItem>\n            <ContextMenuCheckboxItem\n              checked={showDeveloperTools}\n              onCheckedChange={setShowDeveloperTools}\n            >\n              Show Developer Tools\n            </ContextMenuCheckboxItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithRadio() {\n  const [user, setUser] = React.useState(\"pedro\")\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <Example title=\"With Radio Group\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuLabel>People</ContextMenuLabel>\n            <ContextMenuRadioGroup value={user} onValueChange={setUser}>\n              <ContextMenuRadioItem value=\"pedro\">\n                Pedro Duarte\n              </ContextMenuRadioItem>\n              <ContextMenuRadioItem value=\"colm\">\n                Colm Tuite\n              </ContextMenuRadioItem>\n            </ContextMenuRadioGroup>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuLabel>Theme</ContextMenuLabel>\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\n              <ContextMenuRadioItem value=\"light\">Light</ContextMenuRadioItem>\n              <ContextMenuRadioItem value=\"dark\">Dark</ContextMenuRadioItem>\n              <ContextMenuRadioItem value=\"system\">System</ContextMenuRadioItem>\n            </ContextMenuRadioGroup>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithDestructive() {\n  return (\n    <Example title=\"With Destructive Items\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent>\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"PencilIcon\"\n                tabler=\"IconPencil\"\n                hugeicons=\"EditIcon\"\n                phosphor=\"PencilIcon\"\n                remixicon=\"RiPencilLine\"\n              />\n              Edit\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ShareIcon\"\n                tabler=\"IconShare\"\n                hugeicons=\"ShareIcon\"\n                phosphor=\"ShareIcon\"\n                remixicon=\"RiShareLine\"\n              />\n              Share\n            </ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ArchiveIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"ArchiveIcon\"\n                remixicon=\"RiArchiveLine\"\n              />\n              Archive\n            </ContextMenuItem>\n            <ContextMenuItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"TrashIcon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"DeleteIcon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n              Delete\n            </ContextMenuItem>\n          </ContextMenuGroup>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithSides() {\n  return (\n    <Example title=\"With Sides\">\n      <div className=\"grid grid-cols-2 gap-6\">\n        <ContextMenu>\n          <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n            Right click (top)\n          </ContextMenuTrigger>\n          <ContextMenuContent side=\"top\">\n            <ContextMenuGroup>\n              <ContextMenuItem>Back</ContextMenuItem>\n              <ContextMenuItem>Forward</ContextMenuItem>\n              <ContextMenuItem>Reload</ContextMenuItem>\n            </ContextMenuGroup>\n          </ContextMenuContent>\n        </ContextMenu>\n        <ContextMenu>\n          <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n            Right click (right)\n          </ContextMenuTrigger>\n          <ContextMenuContent side=\"right\">\n            <ContextMenuGroup>\n              <ContextMenuItem>Back</ContextMenuItem>\n              <ContextMenuItem>Forward</ContextMenuItem>\n              <ContextMenuItem>Reload</ContextMenuItem>\n            </ContextMenuGroup>\n          </ContextMenuContent>\n        </ContextMenu>\n        <ContextMenu>\n          <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n            Right click (bottom)\n          </ContextMenuTrigger>\n          <ContextMenuContent side=\"bottom\">\n            <ContextMenuGroup>\n              <ContextMenuItem>Back</ContextMenuItem>\n              <ContextMenuItem>Forward</ContextMenuItem>\n              <ContextMenuItem>Reload</ContextMenuItem>\n            </ContextMenuGroup>\n          </ContextMenuContent>\n        </ContextMenu>\n        <ContextMenu>\n          <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n            Right click (left)\n          </ContextMenuTrigger>\n          <ContextMenuContent side=\"left\">\n            <ContextMenuGroup>\n              <ContextMenuItem>Back</ContextMenuItem>\n              <ContextMenuItem>Forward</ContextMenuItem>\n              <ContextMenuItem>Reload</ContextMenuItem>\n            </ContextMenuGroup>\n          </ContextMenuContent>\n        </ContextMenu>\n      </div>\n    </Example>\n  )\n}\n\nfunction ContextMenuInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Context Menu Example</DialogTitle>\n            <DialogDescription>\n              Right click on the area below to see the context menu.\n            </DialogDescription>\n          </DialogHeader>\n          <ContextMenu>\n            <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n              Right click here\n            </ContextMenuTrigger>\n            <ContextMenuContent>\n              <ContextMenuGroup>\n                <ContextMenuItem>\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"CopyIcon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                  Copy\n                </ContextMenuItem>\n                <ContextMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ScissorsIcon\"\n                    tabler=\"IconCut\"\n                    hugeicons=\"ScissorIcon\"\n                    phosphor=\"ScissorsIcon\"\n                    remixicon=\"RiScissorsLine\"\n                  />\n                  Cut\n                </ContextMenuItem>\n                <ContextMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ClipboardPasteIcon\"\n                    tabler=\"IconClipboard\"\n                    hugeicons=\"ClipboardIcon\"\n                    phosphor=\"ClipboardIcon\"\n                    remixicon=\"RiClipboardLine\"\n                  />\n                  Paste\n                </ContextMenuItem>\n              </ContextMenuGroup>\n              <ContextMenuSeparator />\n              <ContextMenuSub>\n                <ContextMenuSubTrigger>More Options</ContextMenuSubTrigger>\n                <ContextMenuSubContent>\n                  <ContextMenuGroup>\n                    <ContextMenuItem>Save Page...</ContextMenuItem>\n                    <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n                    <ContextMenuItem>Name Window...</ContextMenuItem>\n                  </ContextMenuGroup>\n                  <ContextMenuSeparator />\n                  <ContextMenuGroup>\n                    <ContextMenuItem>Developer Tools</ContextMenuItem>\n                  </ContextMenuGroup>\n                </ContextMenuSubContent>\n              </ContextMenuSub>\n              <ContextMenuSeparator />\n              <ContextMenuGroup>\n                <ContextMenuItem variant=\"destructive\">\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"DeleteIcon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  Delete\n                </ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuContent>\n          </ContextMenu>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction ContextMenuWithInset() {\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\n  const [showUrls, setShowUrls] = React.useState(false)\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Example title=\"With Inset\">\n      <ContextMenu>\n        <ContextMenuTrigger className=\"flex aspect-[2/0.5] w-full items-center justify-center rounded-lg border text-sm\">\n          Right click here\n        </ContextMenuTrigger>\n        <ContextMenuContent className=\"w-44\">\n          <ContextMenuGroup>\n            <ContextMenuLabel>Actions</ContextMenuLabel>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"CopyIcon\"\n                tabler=\"IconCopy\"\n                hugeicons=\"CopyIcon\"\n                phosphor=\"CopyIcon\"\n                remixicon=\"RiFileCopyLine\"\n              />\n              Copy\n            </ContextMenuItem>\n            <ContextMenuItem>\n              <IconPlaceholder\n                lucide=\"ScissorsIcon\"\n                tabler=\"IconCut\"\n                hugeicons=\"ScissorIcon\"\n                phosphor=\"ScissorsIcon\"\n                remixicon=\"RiScissorsLine\"\n              />\n              Cut\n            </ContextMenuItem>\n            <ContextMenuItem inset>Paste</ContextMenuItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuLabel inset>Appearance</ContextMenuLabel>\n            <ContextMenuCheckboxItem\n              inset\n              checked={showBookmarks}\n              onCheckedChange={setShowBookmarks}\n            >\n              Bookmarks\n            </ContextMenuCheckboxItem>\n            <ContextMenuCheckboxItem\n              inset\n              checked={showUrls}\n              onCheckedChange={setShowUrls}\n            >\n              Full URLs\n            </ContextMenuCheckboxItem>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuGroup>\n            <ContextMenuLabel inset>Theme</ContextMenuLabel>\n            <ContextMenuRadioGroup value={theme} onValueChange={setTheme}>\n              <ContextMenuRadioItem inset value=\"light\">\n                Light\n              </ContextMenuRadioItem>\n              <ContextMenuRadioItem inset value=\"dark\">\n                Dark\n              </ContextMenuRadioItem>\n              <ContextMenuRadioItem inset value=\"system\">\n                System\n              </ContextMenuRadioItem>\n            </ContextMenuRadioGroup>\n          </ContextMenuGroup>\n          <ContextMenuSeparator />\n          <ContextMenuSub>\n            <ContextMenuSubTrigger inset>More Options</ContextMenuSubTrigger>\n            <ContextMenuSubContent>\n              <ContextMenuGroup>\n                <ContextMenuItem>Save Page...</ContextMenuItem>\n                <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n              </ContextMenuGroup>\n            </ContextMenuSubContent>\n          </ContextMenuSub>\n        </ContextMenuContent>\n      </ContextMenu>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/bases/radix/ui/alert-dialog\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { ButtonGroup } from \"@/registry/bases/radix/ui/button-group\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/bases/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/bases/radix/ui/radio-group\"\nimport { Slider } from \"@/registry/bases/radix/ui/slider\"\nimport { Switch } from \"@/registry/bases/radix/ui/switch\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function Demo() {\n  const [sliderValue, setSliderValue] = React.useState<number[]>([500])\n  const handleSliderValueChange = React.useCallback((value: number[]) => {\n    setSliderValue(value)\n  }, [])\n\n  return (\n    <div className=\"flex min-h-screen w-full flex-col items-center justify-center bg-muted p-4 sm:p-6 lg:p-12 dark:bg-background\">\n      <div className=\"grid max-w-3xl gap-4 sm:grid-cols-2\">\n        <div className=\"flex flex-col gap-4\">\n          <Card>\n            <CardHeader>\n              <CardTitle>Style Overview</CardTitle>\n              <CardDescription className=\"line-clamp-2\">\n                Designers love packing quirky glyphs into test phrases. This is\n                a preview of the typography styles.\n              </CardDescription>\n            </CardHeader>\n            <CardContent>\n              <div className=\"grid grid-cols-6 gap-3\">\n                {[\n                  \"--background\",\n                  \"--foreground\",\n                  \"--primary\",\n                  \"--secondary\",\n                  \"--muted\",\n                  \"--accent\",\n                  \"--border\",\n                  \"--chart-1\",\n                  \"--chart-2\",\n                  \"--chart-3\",\n                  \"--chart-4\",\n                  \"--chart-5\",\n                ].map((variant) => (\n                  <div\n                    key={variant}\n                    className=\"flex flex-col flex-wrap items-center gap-2\"\n                  >\n                    <div\n                      className=\"relative aspect-square w-full rounded-lg bg-(--color) after:absolute after:inset-0 after:rounded-lg after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\"\n                      style={\n                        {\n                          \"--color\": `var(${variant})`,\n                        } as React.CSSProperties\n                      }\n                    />\n                    <div className=\"hidden max-w-14 truncate font-mono text-[0.60rem] md:block\">\n                      {variant}\n                    </div>\n                  </div>\n                ))}\n              </div>\n            </CardContent>\n          </Card>\n          <Card>\n            <CardContent>\n              <div className=\"grid grid-cols-8 place-items-center gap-4\">\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"Copy01Icon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"CircleAlertIcon\"\n                    tabler=\"IconExclamationCircle\"\n                    hugeicons=\"AlertCircleIcon\"\n                    phosphor=\"WarningCircleIcon\"\n                    remixicon=\"RiErrorWarningLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"Delete02Icon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ShareIcon\"\n                    tabler=\"IconShare\"\n                    hugeicons=\"Share03Icon\"\n                    phosphor=\"ShareIcon\"\n                    remixicon=\"RiShareLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ShoppingBagIcon\"\n                    tabler=\"IconShoppingBag\"\n                    hugeicons=\"ShoppingBag01Icon\"\n                    phosphor=\"BagIcon\"\n                    remixicon=\"RiShoppingBagLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"MoreHorizontalIcon\"\n                    tabler=\"IconDots\"\n                    hugeicons=\"MoreHorizontalCircle01Icon\"\n                    phosphor=\"DotsThreeIcon\"\n                    remixicon=\"RiMoreLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"Loader2Icon\"\n                    tabler=\"IconLoader\"\n                    hugeicons=\"Loading03Icon\"\n                    phosphor=\"SpinnerIcon\"\n                    remixicon=\"RiLoaderLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"PlusIcon\"\n                    tabler=\"IconPlus\"\n                    hugeicons=\"PlusSignIcon\"\n                    phosphor=\"PlusIcon\"\n                    remixicon=\"RiAddLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"MinusIcon\"\n                    tabler=\"IconMinus\"\n                    hugeicons=\"MinusSignIcon\"\n                    phosphor=\"MinusIcon\"\n                    remixicon=\"RiSubtractLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ArrowLeftIcon\"\n                    tabler=\"IconArrowLeft\"\n                    hugeicons=\"ArrowLeft02Icon\"\n                    phosphor=\"ArrowLeftIcon\"\n                    remixicon=\"RiArrowLeftLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ArrowRightIcon\"\n                    tabler=\"IconArrowRight\"\n                    hugeicons=\"ArrowRight02Icon\"\n                    phosphor=\"ArrowRightIcon\"\n                    remixicon=\"RiArrowRightLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"CheckIcon\"\n                    tabler=\"IconCheck\"\n                    hugeicons=\"Tick02Icon\"\n                    phosphor=\"CheckIcon\"\n                    remixicon=\"RiCheckLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ChevronDownIcon\"\n                    tabler=\"IconChevronDown\"\n                    hugeicons=\"ArrowDown01Icon\"\n                    phosphor=\"CaretDownIcon\"\n                    remixicon=\"RiArrowDownSLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"ChevronRightIcon\"\n                    tabler=\"IconChevronRight\"\n                    hugeicons=\"ArrowRight01Icon\"\n                    phosphor=\"CaretRightIcon\"\n                    remixicon=\"RiArrowRightSLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"SearchIcon\"\n                    tabler=\"IconSearch\"\n                    hugeicons=\"Search01Icon\"\n                    phosphor=\"MagnifyingGlassIcon\"\n                    remixicon=\"RiSearchLine\"\n                  />\n                </Card>\n                <Card className=\"flex size-8 items-center justify-center rounded-md p-0 ring ring-border *:[svg]:size-4\">\n                  <IconPlaceholder\n                    lucide=\"SettingsIcon\"\n                    tabler=\"IconSettings\"\n                    hugeicons=\"Settings01Icon\"\n                    phosphor=\"GearIcon\"\n                    remixicon=\"RiSettingsLine\"\n                  />\n                </Card>\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n        <div className=\"flex flex-col gap-4\">\n          <Card className=\"w-full\">\n            <CardContent className=\"flex flex-col gap-6\">\n              <div className=\"flex flex-col gap-4\">\n                <div className=\"flex flex-wrap gap-2\">\n                  <Button>Button</Button>\n                  <Button variant=\"secondary\">Secondary</Button>\n                  <Button variant=\"outline\">Outline</Button>\n                  <Button variant=\"ghost\">Ghost</Button>\n                </div>\n                <Item variant=\"outline\">\n                  <ItemContent>\n                    <ItemTitle>Two-factor authentication</ItemTitle>\n                    <ItemDescription className=\"text-pretty xl:hidden 2xl:block\">\n                      Verify via email or phone number.\n                    </ItemDescription>\n                  </ItemContent>\n                  <ItemActions className=\"hidden md:flex\">\n                    <Button size=\"sm\" variant=\"secondary\">\n                      Enable\n                    </Button>\n                  </ItemActions>\n                </Item>\n              </div>\n              <Slider\n                value={sliderValue}\n                onValueChange={handleSliderValueChange}\n                max={1000}\n                min={0}\n                step={10}\n                className=\"flex-1\"\n                aria-label=\"Slider\"\n              />\n              <FieldGroup>\n                <Field>\n                  <InputGroup>\n                    <InputGroupInput placeholder=\"Name\" />\n                    <InputGroupAddon align=\"inline-end\">\n                      <InputGroupText>\n                        <IconPlaceholder\n                          lucide=\"SearchIcon\"\n                          tabler=\"IconSearch\"\n                          hugeicons=\"Search01Icon\"\n                          phosphor=\"MagnifyingGlassIcon\"\n                          remixicon=\"RiSearchLine\"\n                        />\n                      </InputGroupText>\n                    </InputGroupAddon>\n                  </InputGroup>\n                </Field>\n                <Field className=\"flex-1\">\n                  <Textarea placeholder=\"Message\" className=\"resize-none\" />\n                </Field>\n              </FieldGroup>\n              <div className=\"flex items-center gap-2\">\n                <div className=\"flex gap-2\">\n                  <Badge>Badge</Badge>\n                  <Badge variant=\"secondary\">Secondary</Badge>\n                  <Badge variant=\"outline\">Outline</Badge>\n                </div>\n                <RadioGroup\n                  defaultValue=\"apple\"\n                  className=\"ml-auto flex w-fit gap-3\"\n                >\n                  <RadioGroupItem value=\"apple\" />\n                  <RadioGroupItem value=\"banana\" />\n                </RadioGroup>\n                <div className=\"flex gap-3\">\n                  <Checkbox defaultChecked />\n                  <Checkbox />\n                </div>\n              </div>\n              <div className=\"flex items-center gap-4\">\n                <AlertDialog>\n                  <AlertDialogTrigger asChild>\n                    <Button variant=\"outline\">\n                      <span className=\"hidden md:block\">Alert Dialog</span>\n                      <span className=\"block md:hidden\">Dialog</span>\n                    </Button>\n                  </AlertDialogTrigger>\n                  <AlertDialogContent size=\"sm\">\n                    <AlertDialogHeader>\n                      <AlertDialogTitle>\n                        Allow accessory to connect?\n                      </AlertDialogTitle>\n                      <AlertDialogDescription>\n                        Do you want to allow the USB accessory to connect to\n                        this device and your data?\n                      </AlertDialogDescription>\n                    </AlertDialogHeader>\n                    <AlertDialogFooter>\n                      <AlertDialogCancel>Don&apos;t allow</AlertDialogCancel>\n                      <AlertDialogAction>Allow</AlertDialogAction>\n                    </AlertDialogFooter>\n                  </AlertDialogContent>\n                </AlertDialog>\n                <ButtonGroup>\n                  <Button variant=\"outline\">Button Group</Button>\n                  <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                      <Button variant=\"outline\" size=\"icon\">\n                        <IconPlaceholder\n                          lucide=\"ChevronUpIcon\"\n                          tabler=\"IconChevronUp\"\n                          hugeicons=\"ArrowUp01Icon\"\n                          phosphor=\"CaretUpIcon\"\n                          remixicon=\"RiArrowUpSLine\"\n                        />\n                      </Button>\n                    </DropdownMenuTrigger>\n                    <DropdownMenuContent\n                      align=\"end\"\n                      side=\"top\"\n                      className=\"w-fit\"\n                    >\n                      <DropdownMenuGroup>\n                        <DropdownMenuLabel>Quick Actions</DropdownMenuLabel>\n                        <DropdownMenuItem>Mute Conversation</DropdownMenuItem>\n                        <DropdownMenuItem>Mark as Read</DropdownMenuItem>\n                        <DropdownMenuItem>Block User</DropdownMenuItem>\n                      </DropdownMenuGroup>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuGroup>\n                        <DropdownMenuLabel>Conversation</DropdownMenuLabel>\n                        <DropdownMenuItem>Share Conversation</DropdownMenuItem>\n                        <DropdownMenuItem>Copy Conversation</DropdownMenuItem>\n                        <DropdownMenuItem>Report Conversation</DropdownMenuItem>\n                      </DropdownMenuGroup>\n                      <DropdownMenuSeparator />\n                      <DropdownMenuGroup>\n                        <DropdownMenuItem variant=\"destructive\">\n                          Delete Conversation\n                        </DropdownMenuItem>\n                      </DropdownMenuGroup>\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n                </ButtonGroup>\n                <Switch defaultChecked className=\"ml-auto\" />\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/dialog-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { Kbd } from \"@/registry/bases/radix/ui/kbd\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/radix/ui/native-select\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport { Switch } from \"@/registry/bases/radix/ui/switch\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/bases/radix/ui/tabs\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/radix/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function DialogExample() {\n  return (\n    <ExampleWrapper>\n      <DialogWithForm />\n      <DialogScrollableContent />\n      <DialogWithStickyFooter />\n      <DialogNoCloseButton />\n      <DialogChatSettings />\n    </ExampleWrapper>\n  )\n}\n\nfunction DialogWithForm() {\n  return (\n    <Example title=\"With Form\" className=\"items-center justify-center\">\n      <Dialog>\n        <form>\n          <DialogTrigger asChild>\n            <Button variant=\"outline\">Edit Profile</Button>\n          </DialogTrigger>\n          <DialogContent>\n            <DialogHeader>\n              <DialogTitle>Edit profile</DialogTitle>\n              <DialogDescription>\n                Make changes to your profile here. Click save when you&apos;re\n                done. Your profile will be updated immediately.\n              </DialogDescription>\n            </DialogHeader>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"name-1\">Name</FieldLabel>\n                <Input id=\"name-1\" name=\"name\" defaultValue=\"Pedro Duarte\" />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"username-1\">Username</FieldLabel>\n                <Input\n                  id=\"username-1\"\n                  name=\"username\"\n                  defaultValue=\"@peduarte\"\n                />\n              </Field>\n            </FieldGroup>\n            <DialogFooter>\n              <DialogClose asChild>\n                <Button variant=\"outline\">Cancel</Button>\n              </DialogClose>\n              <Button type=\"submit\">Save changes</Button>\n            </DialogFooter>\n          </DialogContent>\n        </form>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction DialogScrollableContent() {\n  return (\n    <Example title=\"Scrollable Content\" className=\"items-center justify-center\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Scrollable Content</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Scrollable Content</DialogTitle>\n            <DialogDescription>\n              This is a dialog with scrollable content.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\">\n            {Array.from({ length: 10 }).map((_, index) => (\n              <p\n                key={index}\n                className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n              >\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\n              </p>\n            ))}\n          </div>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction DialogWithStickyFooter() {\n  return (\n    <Example title=\"With Sticky Footer\" className=\"items-center justify-center\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Sticky Footer</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Scrollable Content</DialogTitle>\n            <DialogDescription>\n              This is a dialog with scrollable content.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"no-scrollbar max-h-[70vh] overflow-y-auto style-vega:-mx-6 style-vega:px-6 style-nova:-mx-4 style-nova:px-4 style-lyra:-mx-4 style-lyra:px-4 style-maia:-mx-6 style-maia:px-6 style-mira:-mx-4 style-mira:px-4\">\n            {Array.from({ length: 10 }).map((_, index) => (\n              <p\n                key={index}\n                className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n              >\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\n              </p>\n            ))}\n          </div>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"outline\">Close</Button>\n            </DialogClose>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction DialogNoCloseButton() {\n  return (\n    <Example title=\"No Close Button\" className=\"items-center justify-center\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">No Close Button</Button>\n        </DialogTrigger>\n        <DialogContent showCloseButton={false}>\n          <DialogHeader>\n            <DialogTitle>No Close Button</DialogTitle>\n            <DialogDescription>\n              This dialog doesn&apos;t have a close button in the top-right\n              corner.\n            </DialogDescription>\n          </DialogHeader>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"outline\">Close</Button>\n            </DialogClose>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nconst spokenLanguages = [\n  { label: \"English\", value: \"en\" },\n  { label: \"Spanish\", value: \"es\" },\n  { label: \"French\", value: \"fr\" },\n  { label: \"German\", value: \"de\" },\n  { label: \"Italian\", value: \"it\" },\n  { label: \"Portuguese\", value: \"pt\" },\n  { label: \"Russian\", value: \"ru\" },\n  { label: \"Chinese\", value: \"zh\" },\n  { label: \"Japanese\", value: \"ja\" },\n  { label: \"Korean\", value: \"ko\" },\n  { label: \"Arabic\", value: \"ar\" },\n  { label: \"Hindi\", value: \"hi\" },\n  { label: \"Bengali\", value: \"bn\" },\n  { label: \"Telugu\", value: \"te\" },\n  { label: \"Marathi\", value: \"mr\" },\n  { label: \"Kannada\", value: \"kn\" },\n  { label: \"Malayalam\", value: \"ml\" },\n]\n\nconst voices = [\n  { label: \"Samantha\", value: \"samantha\" },\n  { label: \"Alex\", value: \"alex\" },\n  { label: \"Fred\", value: \"fred\" },\n  { label: \"Victoria\", value: \"victoria\" },\n  { label: \"Tom\", value: \"tom\" },\n  { label: \"Karen\", value: \"karen\" },\n  { label: \"Sam\", value: \"sam\" },\n  { label: \"Daniel\", value: \"daniel\" },\n]\n\nfunction DialogChatSettings() {\n  const [tab, setTab] = React.useState(\"general\")\n  const [theme, setTheme] = React.useState(\"system\")\n  const [accentColor, setAccentColor] = React.useState(\"default\")\n  const [spokenLanguage, setSpokenLanguage] = React.useState(\"en\")\n  const [voice, setVoice] = React.useState(\"samantha\")\n\n  return (\n    <Example title=\"Chat Settings\" className=\"items-center justify-center\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Chat Settings</Button>\n        </DialogTrigger>\n        <DialogContent className=\"min-w-md\">\n          <DialogHeader>\n            <DialogTitle>Chat Settings</DialogTitle>\n            <DialogDescription>\n              Customize your chat settings: theme, accent color, spoken\n              language, voice, personality, and custom instructions.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"flex flex-col gap-4\">\n            <NativeSelect\n              value={tab}\n              onChange={(e) => setTab(e.target.value)}\n              className=\"w-full md:hidden\"\n            >\n              <NativeSelectOption value=\"general\">General</NativeSelectOption>\n              <NativeSelectOption value=\"notifications\">\n                Notifications\n              </NativeSelectOption>\n              <NativeSelectOption value=\"personalization\">\n                Personalization\n              </NativeSelectOption>\n              <NativeSelectOption value=\"security\">Security</NativeSelectOption>\n            </NativeSelect>\n            <Tabs value={tab} onValueChange={setTab}>\n              <TabsList className=\"hidden w-full md:flex\">\n                <TabsTrigger value=\"general\">General</TabsTrigger>\n                <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n                <TabsTrigger value=\"personalization\">\n                  Personalization\n                </TabsTrigger>\n                <TabsTrigger value=\"security\">Security</TabsTrigger>\n              </TabsList>\n              <div className=\"border style-vega:min-h-[550px] style-vega:rounded-lg style-vega:p-6 style-nova:min-h-[460px] style-nova:rounded-lg style-nova:p-4 style-lyra:min-h-[450px] style-lyra:rounded-none style-lyra:p-4 style-maia:min-h-[550px] style-maia:rounded-xl style-maia:p-6 style-mira:min-h-[450px] style-mira:rounded-md style-mira:p-4 [&_[data-slot=select-trigger]]:min-w-[125px]\">\n                <TabsContent value=\"general\">\n                  <FieldSet>\n                    <FieldGroup>\n                      <Field orientation=\"horizontal\">\n                        <FieldLabel htmlFor=\"theme\">Theme</FieldLabel>\n                        <Select value={theme} onValueChange={setTheme}>\n                          <SelectTrigger id=\"theme\">\n                            <SelectValue placeholder=\"Select\" />\n                          </SelectTrigger>\n                          <SelectContent align=\"end\">\n                            <SelectGroup>\n                              <SelectItem value=\"light\">Light</SelectItem>\n                              <SelectItem value=\"dark\">Dark</SelectItem>\n                              <SelectItem value=\"system\">System</SelectItem>\n                            </SelectGroup>\n                          </SelectContent>\n                        </Select>\n                      </Field>\n                      <FieldSeparator />\n                      <Field orientation=\"horizontal\">\n                        <FieldLabel htmlFor=\"accent-color\">\n                          Accent Color\n                        </FieldLabel>\n                        <Select\n                          value={accentColor}\n                          onValueChange={setAccentColor}\n                        >\n                          <SelectTrigger id=\"accent-color\">\n                            <SelectValue placeholder=\"Select\" />\n                          </SelectTrigger>\n                          <SelectContent align=\"end\">\n                            <SelectGroup>\n                              <SelectItem value=\"default\">\n                                <div className=\"size-3 rounded-full bg-neutral-500 dark:bg-neutral-400\" />\n                                Default\n                              </SelectItem>\n                              <SelectItem value=\"red\">\n                                <div className=\"size-3 rounded-full bg-red-500 dark:bg-red-400\" />\n                                Red\n                              </SelectItem>\n                              <SelectItem value=\"blue\">\n                                <div className=\"size-3 rounded-full bg-blue-500 dark:bg-blue-400\" />\n                                Blue\n                              </SelectItem>\n                              <SelectItem value=\"green\">\n                                <div className=\"size-3 rounded-full bg-green-500 dark:bg-green-400\" />\n                                Green\n                              </SelectItem>\n                              <SelectItem value=\"purple\">\n                                <div className=\"size-3 rounded-full bg-purple-500 dark:bg-purple-400\" />\n                                Purple\n                              </SelectItem>\n                              <SelectItem value=\"pink\">\n                                <div className=\"size-3 rounded-full bg-pink-500 dark:bg-pink-400\" />\n                                Pink\n                              </SelectItem>\n                            </SelectGroup>\n                          </SelectContent>\n                        </Select>\n                      </Field>\n                      <FieldSeparator />\n                      <Field orientation=\"responsive\">\n                        <FieldContent>\n                          <FieldLabel htmlFor=\"spoken-language\">\n                            Spoken Language\n                          </FieldLabel>\n                          <FieldDescription>\n                            For best results, select the language you mainly\n                            speak. If it&apos;s not listed, it may still be\n                            supported via auto-detection.\n                          </FieldDescription>\n                        </FieldContent>\n                        <Select\n                          value={spokenLanguage}\n                          onValueChange={setSpokenLanguage}\n                        >\n                          <SelectTrigger id=\"spoken-language\">\n                            <SelectValue placeholder=\"Select\" />\n                          </SelectTrigger>\n                          <SelectContent align=\"end\" position=\"item-aligned\">\n                            <SelectGroup>\n                              <SelectItem value=\"auto\">Auto</SelectItem>\n                            </SelectGroup>\n                            <SelectSeparator />\n                            <SelectGroup>\n                              {spokenLanguages.map((language) => (\n                                <SelectItem\n                                  key={language.value}\n                                  value={language.value}\n                                >\n                                  {language.label}\n                                </SelectItem>\n                              ))}\n                            </SelectGroup>\n                          </SelectContent>\n                        </Select>\n                      </Field>\n                      <FieldSeparator />\n                      <Field orientation=\"horizontal\">\n                        <FieldLabel htmlFor=\"voice\">Voice</FieldLabel>\n                        <Select value={voice} onValueChange={setVoice}>\n                          <SelectTrigger id=\"voice\">\n                            <SelectValue placeholder=\"Select\" />\n                          </SelectTrigger>\n                          <SelectContent align=\"end\" position=\"item-aligned\">\n                            <SelectGroup>\n                              {voices.map((voice) => (\n                                <SelectItem\n                                  key={voice.value}\n                                  value={voice.value}\n                                >\n                                  {voice.label}\n                                </SelectItem>\n                              ))}\n                            </SelectGroup>\n                          </SelectContent>\n                        </Select>\n                      </Field>\n                    </FieldGroup>\n                  </FieldSet>\n                </TabsContent>\n                <TabsContent value=\"notifications\">\n                  <FieldGroup>\n                    <FieldSet>\n                      <FieldLabel>Responses</FieldLabel>\n                      <FieldDescription>\n                        Get notified when ChatGPT responds to requests that take\n                        time, like research or image generation.\n                      </FieldDescription>\n                      <FieldGroup data-slot=\"checkbox-group\">\n                        <Field orientation=\"horizontal\">\n                          <Checkbox id=\"push\" defaultChecked disabled />\n                          <FieldLabel htmlFor=\"push\" className=\"font-normal\">\n                            Push notifications\n                          </FieldLabel>\n                        </Field>\n                      </FieldGroup>\n                    </FieldSet>\n                    <FieldSeparator />\n                    <FieldSet>\n                      <FieldLabel>Tasks</FieldLabel>\n                      <FieldDescription>\n                        Get notified when tasks you&apos;ve created have\n                        updates. <a href=\"#\">Manage tasks</a>\n                      </FieldDescription>\n                      <FieldGroup data-slot=\"checkbox-group\">\n                        <Field orientation=\"horizontal\">\n                          <Checkbox id=\"push-tasks\" />\n                          <FieldLabel\n                            htmlFor=\"push-tasks\"\n                            className=\"font-normal\"\n                          >\n                            Push notifications\n                          </FieldLabel>\n                        </Field>\n                        <Field orientation=\"horizontal\">\n                          <Checkbox id=\"email-tasks\" />\n                          <FieldLabel\n                            htmlFor=\"email-tasks\"\n                            className=\"font-normal\"\n                          >\n                            Email notifications\n                          </FieldLabel>\n                        </Field>\n                      </FieldGroup>\n                    </FieldSet>\n                  </FieldGroup>\n                </TabsContent>\n                <TabsContent value=\"personalization\">\n                  <FieldGroup>\n                    <Field orientation=\"responsive\">\n                      <FieldLabel htmlFor=\"nickname\">Nickname</FieldLabel>\n                      <InputGroup>\n                        <InputGroupInput\n                          id=\"nickname\"\n                          placeholder=\"Broski\"\n                          className=\"@md/field-group:max-w-[200px]\"\n                        />\n                        <InputGroupAddon align=\"inline-end\">\n                          <Tooltip>\n                            <TooltipTrigger asChild>\n                              <InputGroupButton size=\"icon-xs\">\n                                <IconPlaceholder\n                                  lucide=\"InfoIcon\"\n                                  tabler=\"IconInfoCircle\"\n                                  hugeicons=\"AlertCircleIcon\"\n                                  phosphor=\"InfoIcon\"\n                                  remixicon=\"RiInformationLine\"\n                                />\n                              </InputGroupButton>\n                            </TooltipTrigger>\n                            <TooltipContent className=\"flex items-center gap-2\">\n                              Used to identify you in the chat. <Kbd>N</Kbd>\n                            </TooltipContent>\n                          </Tooltip>\n                        </InputGroupAddon>\n                      </InputGroup>\n                    </Field>\n                    <FieldSeparator />\n                    <Field\n                      orientation=\"responsive\"\n                      className=\"@md/field-group:flex-col @2xl/field-group:flex-row\"\n                    >\n                      <FieldContent>\n                        <FieldLabel htmlFor=\"about\">More about you</FieldLabel>\n                        <FieldDescription>\n                          Tell us more about yourself. This will be used to help\n                          us personalize your experience.\n                        </FieldDescription>\n                      </FieldContent>\n                      <Textarea\n                        id=\"about\"\n                        placeholder=\"I'm a software engineer...\"\n                        className=\"min-h-[120px] @md/field-group:min-w-full @2xl/field-group:min-w-[300px]\"\n                      />\n                    </Field>\n                    <FieldSeparator />\n                    <FieldLabel>\n                      <Field orientation=\"horizontal\">\n                        <FieldContent>\n                          <FieldLabel htmlFor=\"customization\">\n                            Enable customizations\n                          </FieldLabel>\n                          <FieldDescription>\n                            Enable customizations to make ChatGPT more\n                            personalized.\n                          </FieldDescription>\n                        </FieldContent>\n                        <Switch id=\"customization\" defaultChecked />\n                      </Field>\n                    </FieldLabel>\n                  </FieldGroup>\n                </TabsContent>\n                <TabsContent value=\"security\">\n                  <FieldGroup>\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldLabel htmlFor=\"2fa\">\n                          Multi-factor authentication\n                        </FieldLabel>\n                        <FieldDescription>\n                          Enable multi-factor authentication to secure your\n                          account. If you do not have a two-factor\n                          authentication device, you can use a one-time code\n                          sent to your email.\n                        </FieldDescription>\n                      </FieldContent>\n                      <Switch id=\"2fa\" />\n                    </Field>\n                    <FieldSeparator />\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldTitle>Log out</FieldTitle>\n                        <FieldDescription>\n                          Log out of your account on this device.\n                        </FieldDescription>\n                      </FieldContent>\n                      <Button variant=\"outline\" size=\"sm\">\n                        Log Out\n                      </Button>\n                    </Field>\n                    <FieldSeparator />\n                    <Field orientation=\"horizontal\">\n                      <FieldContent>\n                        <FieldTitle>Log out of all devices</FieldTitle>\n                        <FieldDescription>\n                          This will log you out of all devices, including the\n                          current session. It may take up to 30 minutes for the\n                          changes to take effect.\n                        </FieldDescription>\n                      </FieldContent>\n                      <Button variant=\"outline\" size=\"sm\">\n                        Log Out All\n                      </Button>\n                    </Field>\n                  </FieldGroup>\n                </TabsContent>\n              </div>\n            </Tabs>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/drawer-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/bases/radix/ui/drawer\"\n\nexport default function DrawerExample() {\n  return (\n    <ExampleWrapper>\n      <DrawerScrollableContent />\n      <DrawerWithSides />\n    </ExampleWrapper>\n  )\n}\n\nconst DRAWER_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nfunction DrawerWithSides() {\n  return (\n    <Example title=\"Sides\">\n      <div className=\"flex flex-wrap gap-2\">\n        {DRAWER_SIDES.map((side) => (\n          <Drawer\n            key={side}\n            direction={\n              side === \"bottom\" ? undefined : (side as \"top\" | \"right\" | \"left\")\n            }\n          >\n            <DrawerTrigger asChild>\n              <Button variant=\"outline\" className=\"capitalize\">\n                {side}\n              </Button>\n            </DrawerTrigger>\n            <DrawerContent className=\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\">\n              <DrawerHeader>\n                <DrawerTitle>Move Goal</DrawerTitle>\n                <DrawerDescription>\n                  Set your daily activity goal.\n                </DrawerDescription>\n              </DrawerHeader>\n              <div className=\"no-scrollbar overflow-y-auto px-4\">\n                {Array.from({ length: 10 }).map((_, index) => (\n                  <p\n                    key={index}\n                    className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n                  >\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                    do eiusmod tempor incididunt ut labore et dolore magna\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\n                    Duis aute irure dolor in reprehenderit in voluptate velit\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\n                    occaecat cupidatat non proident, sunt in culpa qui officia\n                    deserunt mollit anim id est laborum.\n                  </p>\n                ))}\n              </div>\n              <DrawerFooter>\n                <Button>Submit</Button>\n                <DrawerClose asChild>\n                  <Button variant=\"outline\">Cancel</Button>\n                </DrawerClose>\n              </DrawerFooter>\n            </DrawerContent>\n          </Drawer>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction DrawerScrollableContent() {\n  return (\n    <Example title=\"Scrollable Content\">\n      <Drawer direction=\"right\">\n        <DrawerTrigger asChild>\n          <Button variant=\"outline\">Scrollable Content</Button>\n        </DrawerTrigger>\n        <DrawerContent>\n          <DrawerHeader>\n            <DrawerTitle>Move Goal</DrawerTitle>\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"no-scrollbar overflow-y-auto px-4\">\n            {Array.from({ length: 10 }).map((_, index) => (\n              <p\n                key={index}\n                className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n              >\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n                eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n                enim ad minim veniam, quis nostrud exercitation ullamco laboris\n                nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\n                in reprehenderit in voluptate velit esse cillum dolore eu fugiat\n                nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n                sunt in culpa qui officia deserunt mollit anim id est laborum.\n              </p>\n            ))}\n          </div>\n          <DrawerFooter>\n            <Button>Submit</Button>\n            <DrawerClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </DrawerContent>\n      </Drawer>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function DropdownMenuExample() {\n  return (\n    <ExampleWrapper>\n      <DropdownMenuBasic />\n      <DropdownMenuComplex />\n      <DropdownMenuWithIcons />\n      <DropdownMenuWithShortcuts />\n      <DropdownMenuWithSubmenu />\n      <DropdownMenuWithCheckboxes />\n      <DropdownMenuWithCheckboxesIcons />\n      <DropdownMenuWithRadio />\n      <DropdownMenuWithRadioIcons />\n      <DropdownMenuWithDestructive />\n      <DropdownMenuWithAvatar />\n      <DropdownMenuInDialog />\n      <DropdownMenuWithInset />\n    </ExampleWrapper>\n  )\n}\n\nfunction DropdownMenuBasic() {\n  return (\n    <Example title=\"Basic\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Open\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\n            <DropdownMenuItem>Profile</DropdownMenuItem>\n            <DropdownMenuItem>Billing</DropdownMenuItem>\n            <DropdownMenuItem>Settings</DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem>GitHub</DropdownMenuItem>\n            <DropdownMenuItem>Support</DropdownMenuItem>\n            <DropdownMenuItem disabled>API</DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Open\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"UserIcon\"\n                tabler=\"IconUser\"\n                hugeicons=\"UserIcon\"\n                phosphor=\"UserIcon\"\n                remixicon=\"RiUserLine\"\n              />\n              Profile\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"CreditCardIcon\"\n                tabler=\"IconCreditCard\"\n                hugeicons=\"CreditCardIcon\"\n                phosphor=\"CreditCardIcon\"\n                remixicon=\"RiBankCardLine\"\n              />\n              Billing\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"SettingsIcon\"\n                tabler=\"IconSettings\"\n                hugeicons=\"SettingsIcon\"\n                phosphor=\"GearIcon\"\n                remixicon=\"RiSettingsLine\"\n              />\n              Settings\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithShortcuts() {\n  return (\n    <Example title=\"With Shortcuts\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Open\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>My Account</DropdownMenuLabel>\n            <DropdownMenuItem>\n              Profile\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              Billing\n              <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              Settings\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              Keyboard shortcuts\n              <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              Log out\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithSubmenu() {\n  return (\n    <Example title=\"With Submenu\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Open\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuItem>Team</DropdownMenuItem>\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\n              <DropdownMenuPortal>\n                <DropdownMenuSubContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>Email</DropdownMenuItem>\n                    <DropdownMenuItem>Message</DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>More...</DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuPortal>\n            </DropdownMenuSub>\n            <DropdownMenuItem>\n              New Team\n              <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithCheckboxes() {\n  const [showStatusBar, setShowStatusBar] = React.useState(true)\n  const [showActivityBar, setShowActivityBar] = React.useState(false)\n  const [showPanel, setShowPanel] = React.useState(false)\n\n  return (\n    <Example title=\"With Checkboxes\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Checkboxes\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"min-w-40\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n            <DropdownMenuCheckboxItem\n              checked={showStatusBar}\n              onCheckedChange={setShowStatusBar}\n            >\n              <IconPlaceholder\n                lucide=\"LayoutIcon\"\n                tabler=\"IconLayout\"\n                hugeicons=\"LayoutIcon\"\n                phosphor=\"LayoutIcon\"\n                remixicon=\"RiLayoutLine\"\n              />\n              Status Bar\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={showActivityBar}\n              onCheckedChange={setShowActivityBar}\n              disabled\n            >\n              <IconPlaceholder\n                lucide=\"ActivityIcon\"\n                tabler=\"IconActivity\"\n                hugeicons=\"ActivityIcon\"\n                phosphor=\"ActivityIcon\"\n                remixicon=\"RiPulseLine\"\n              />\n              Activity Bar\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={showPanel}\n              onCheckedChange={setShowPanel}\n            >\n              <IconPlaceholder\n                lucide=\"PanelLeftIcon\"\n                tabler=\"IconLayoutSidebar\"\n                hugeicons=\"LayoutLeftIcon\"\n                phosphor=\"SidebarIcon\"\n                remixicon=\"RiSideBarLine\"\n              />\n              Panel\n            </DropdownMenuCheckboxItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithRadio() {\n  const [position, setPosition] = React.useState(\"bottom\")\n\n  return (\n    <Example title=\"With Radio Group\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Radio Group\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\n            <DropdownMenuRadioGroup\n              value={position}\n              onValueChange={setPosition}\n            >\n              <DropdownMenuRadioItem value=\"top\">\n                <IconPlaceholder\n                  lucide=\"ArrowUpIcon\"\n                  tabler=\"IconArrowUp\"\n                  hugeicons=\"ArrowUp01Icon\"\n                  phosphor=\"ArrowUpIcon\"\n                  remixicon=\"RiArrowUpLine\"\n                />\n                Top\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem value=\"bottom\">\n                <IconPlaceholder\n                  lucide=\"ArrowDownIcon\"\n                  tabler=\"IconArrowDown\"\n                  hugeicons=\"ArrowDown01Icon\"\n                  phosphor=\"ArrowDownIcon\"\n                  remixicon=\"RiArrowDownLine\"\n                />\n                Bottom\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem value=\"right\" disabled>\n                <IconPlaceholder\n                  lucide=\"ArrowRightIcon\"\n                  tabler=\"IconArrowRight\"\n                  hugeicons=\"ArrowRight01Icon\"\n                  phosphor=\"ArrowRightIcon\"\n                  remixicon=\"RiArrowRightLine\"\n                />\n                Right\n              </DropdownMenuRadioItem>\n            </DropdownMenuRadioGroup>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithCheckboxesIcons() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n\n  return (\n    <Example title=\"Checkboxes with Icons\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Notifications\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"min-w-56\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Notification Preferences</DropdownMenuLabel>\n            <DropdownMenuCheckboxItem\n              checked={notifications.email}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, email: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"MailIcon\"\n                tabler=\"IconMail\"\n                hugeicons=\"MailIcon\"\n                phosphor=\"EnvelopeIcon\"\n                remixicon=\"RiMailLine\"\n              />\n              Email notifications\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={notifications.sms}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, sms: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"MessageSquareIcon\"\n                tabler=\"IconMessage\"\n                hugeicons=\"MessageIcon\"\n                phosphor=\"ChatCircleIcon\"\n                remixicon=\"RiChat1Line\"\n              />\n              SMS notifications\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={notifications.push}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, push: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"BellIcon\"\n                tabler=\"IconBell\"\n                hugeicons=\"NotificationIcon\"\n                phosphor=\"BellIcon\"\n                remixicon=\"RiNotificationLine\"\n              />\n              Push notifications\n            </DropdownMenuCheckboxItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithRadioIcons() {\n  const [paymentMethod, setPaymentMethod] = React.useState(\"card\")\n\n  return (\n    <Example title=\"Radio with Icons\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\">Payment Method</Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"min-w-56\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Select Payment Method</DropdownMenuLabel>\n            <DropdownMenuRadioGroup\n              value={paymentMethod}\n              onValueChange={setPaymentMethod}\n            >\n              <DropdownMenuRadioItem value=\"card\">\n                <IconPlaceholder\n                  lucide=\"CreditCardIcon\"\n                  tabler=\"IconCreditCard\"\n                  hugeicons=\"CreditCardIcon\"\n                  phosphor=\"CreditCardIcon\"\n                  remixicon=\"RiBankCardLine\"\n                />\n                Credit Card\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem value=\"paypal\">\n                <IconPlaceholder\n                  lucide=\"WalletIcon\"\n                  tabler=\"IconWallet\"\n                  hugeicons=\"WalletIcon\"\n                  phosphor=\"WalletIcon\"\n                  remixicon=\"RiWalletLine\"\n                />\n                PayPal\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem value=\"bank\">\n                <IconPlaceholder\n                  lucide=\"Building2Icon\"\n                  tabler=\"IconBuildingBank\"\n                  hugeicons=\"BankIcon\"\n                  phosphor=\"BankIcon\"\n                  remixicon=\"RiBankLine\"\n                />\n                Bank Transfer\n              </DropdownMenuRadioItem>\n            </DropdownMenuRadioGroup>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithDestructive() {\n  return (\n    <Example title=\"With Destructive Items\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Actions\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent>\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"PencilIcon\"\n                tabler=\"IconPencil\"\n                hugeicons=\"EditIcon\"\n                phosphor=\"PencilIcon\"\n                remixicon=\"RiPencilLine\"\n              />\n              Edit\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"ShareIcon\"\n                tabler=\"IconShare\"\n                hugeicons=\"ShareIcon\"\n                phosphor=\"ShareIcon\"\n                remixicon=\"RiShareLine\"\n              />\n              Share\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"ArchiveIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"ArchiveIcon\"\n                remixicon=\"RiArchiveLine\"\n              />\n              Archive\n            </DropdownMenuItem>\n            <DropdownMenuItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"TrashIcon\"\n                tabler=\"IconTrash\"\n                hugeicons=\"DeleteIcon\"\n                phosphor=\"TrashIcon\"\n                remixicon=\"RiDeleteBinLine\"\n              />\n              Delete\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithAvatar() {\n  const menuContent = (\n    <>\n      <DropdownMenuGroup>\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"BadgeCheckIcon\"\n            tabler=\"IconRosetteDiscountCheck\"\n            hugeicons=\"CheckmarkBadgeIcon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n          />\n          Account\n        </DropdownMenuItem>\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"CreditCardIcon\"\n            tabler=\"IconCreditCard\"\n            hugeicons=\"CreditCardIcon\"\n            phosphor=\"CreditCardIcon\"\n            remixicon=\"RiBankCardLine\"\n          />\n          Billing\n        </DropdownMenuItem>\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"BellIcon\"\n            tabler=\"IconBell\"\n            hugeicons=\"NotificationIcon\"\n            phosphor=\"BellIcon\"\n            remixicon=\"RiNotificationLine\"\n          />\n          Notifications\n        </DropdownMenuItem>\n      </DropdownMenuGroup>\n      <DropdownMenuSeparator />\n      <DropdownMenuGroup>\n        <DropdownMenuItem>\n          <IconPlaceholder\n            lucide=\"LogOutIcon\"\n            tabler=\"IconLogout\"\n            hugeicons=\"LogoutIcon\"\n            phosphor=\"SignOutIcon\"\n            remixicon=\"RiLogoutBoxLine\"\n          />\n          Sign Out\n        </DropdownMenuItem>\n      </DropdownMenuGroup>\n    </>\n  )\n\n  return (\n    <Example title=\"With Avatar\">\n      <div className=\"flex items-center justify-between gap-4\">\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button\n              variant=\"outline\"\n              className=\"h-12 justify-start px-2 md:max-w-[200px]\"\n            >\n              <Avatar>\n                <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"Shadcn\" />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-semibold\">shadcn</span>\n                <span className=\"truncate text-xs text-muted-foreground\">\n                  shadcn@example.com\n                </span>\n              </div>\n              <IconPlaceholder\n                lucide=\"ChevronsUpDownIcon\"\n                tabler=\"IconSelector\"\n                hugeicons=\"UnfoldMoreIcon\"\n                phosphor=\"CaretUpDownIcon\"\n                remixicon=\"RiArrowUpDownLine\"\n                className=\"ml-auto text-muted-foreground\"\n              />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56\">\n            {menuContent}\n          </DropdownMenuContent>\n        </DropdownMenu>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\">\n              <Avatar>\n                <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"shadcn\" />\n                <AvatarFallback>LR</AvatarFallback>\n              </Avatar>\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" side=\"top\">\n            {menuContent}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n    </Example>\n  )\n}\n\nfunction DropdownMenuInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Dropdown Menu Example</DialogTitle>\n            <DialogDescription>\n              Click the button below to see the dropdown menu.\n            </DialogDescription>\n          </DialogHeader>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"outline\" className=\"w-fit\">\n                Open Menu\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent>\n              <DropdownMenuGroup>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"CopyIcon\"\n                    tabler=\"IconCopy\"\n                    hugeicons=\"CopyIcon\"\n                    phosphor=\"CopyIcon\"\n                    remixicon=\"RiFileCopyLine\"\n                  />\n                  Copy\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ScissorsIcon\"\n                    tabler=\"IconCut\"\n                    hugeicons=\"ScissorIcon\"\n                    phosphor=\"ScissorsIcon\"\n                    remixicon=\"RiScissorsLine\"\n                  />\n                  Cut\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconPlaceholder\n                    lucide=\"ClipboardPasteIcon\"\n                    tabler=\"IconClipboard\"\n                    hugeicons=\"ClipboardIcon\"\n                    phosphor=\"ClipboardIcon\"\n                    remixicon=\"RiClipboardLine\"\n                  />\n                  Paste\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n              <DropdownMenuSeparator />\n              <DropdownMenuSub>\n                <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>\n                <DropdownMenuPortal>\n                  <DropdownMenuSubContent>\n                    <DropdownMenuGroup>\n                      <DropdownMenuItem>Save Page...</DropdownMenuItem>\n                      <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\n                      <DropdownMenuItem>Name Window...</DropdownMenuItem>\n                    </DropdownMenuGroup>\n                    <DropdownMenuSeparator />\n                    <DropdownMenuGroup>\n                      <DropdownMenuItem>Developer Tools</DropdownMenuItem>\n                    </DropdownMenuGroup>\n                  </DropdownMenuSubContent>\n                </DropdownMenuPortal>\n              </DropdownMenuSub>\n              <DropdownMenuSeparator />\n              <DropdownMenuGroup>\n                <DropdownMenuItem variant=\"destructive\">\n                  <IconPlaceholder\n                    lucide=\"TrashIcon\"\n                    tabler=\"IconTrash\"\n                    hugeicons=\"DeleteIcon\"\n                    phosphor=\"TrashIcon\"\n                    remixicon=\"RiDeleteBinLine\"\n                  />\n                  Delete\n                </DropdownMenuItem>\n              </DropdownMenuGroup>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction DropdownMenuWithInset() {\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\n  const [showUrls, setShowUrls] = React.useState(false)\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Example title=\"With Inset\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Open\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"w-44\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"CopyIcon\"\n                tabler=\"IconCopy\"\n                hugeicons=\"CopyIcon\"\n                phosphor=\"CopyIcon\"\n                remixicon=\"RiFileCopyLine\"\n              />\n              Copy\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"ScissorsIcon\"\n                tabler=\"IconCut\"\n                hugeicons=\"ScissorIcon\"\n                phosphor=\"ScissorsIcon\"\n                remixicon=\"RiScissorsLine\"\n              />\n              Cut\n            </DropdownMenuItem>\n            <DropdownMenuItem inset>Paste</DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuLabel inset>Appearance</DropdownMenuLabel>\n            <DropdownMenuCheckboxItem\n              inset\n              checked={showBookmarks}\n              onCheckedChange={setShowBookmarks}\n            >\n              Bookmarks\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              inset\n              checked={showUrls}\n              onCheckedChange={setShowUrls}\n            >\n              Full URLs\n            </DropdownMenuCheckboxItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuLabel inset>Theme</DropdownMenuLabel>\n            <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>\n              <DropdownMenuRadioItem inset value=\"light\">\n                Light\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem inset value=\"dark\">\n                Dark\n              </DropdownMenuRadioItem>\n              <DropdownMenuRadioItem inset value=\"system\">\n                System\n              </DropdownMenuRadioItem>\n            </DropdownMenuRadioGroup>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger inset>More Options</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuGroup>\n                  <DropdownMenuItem>Save Page...</DropdownMenuItem>\n                  <DropdownMenuItem>Create Shortcut...</DropdownMenuItem>\n                </DropdownMenuGroup>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n\nfunction DropdownMenuComplex() {\n  const [notifications, setNotifications] = React.useState({\n    email: true,\n    sms: false,\n    push: true,\n  })\n  const [theme, setTheme] = React.useState(\"light\")\n\n  return (\n    <Example title=\"Complex\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Complex Menu\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"style-vega:w-56 style-nova:w-48 style-lyra:w-48 style-maia:w-56 style-mira:w-48\">\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>File</DropdownMenuLabel>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"FileIcon\"\n                tabler=\"IconFile\"\n                hugeicons=\"FileIcon\"\n                phosphor=\"FileIcon\"\n                remixicon=\"RiFileLine\"\n              />\n              New File\n              <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"FolderIcon\"\n                tabler=\"IconFolder\"\n                hugeicons=\"FolderIcon\"\n                phosphor=\"FolderIcon\"\n                remixicon=\"RiFolderLine\"\n              />\n              New Folder\n              <DropdownMenuShortcut>⇧⌘N</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>\n                <IconPlaceholder\n                  lucide=\"FolderOpenIcon\"\n                  tabler=\"IconFolderOpen\"\n                  hugeicons=\"FolderOpenIcon\"\n                  phosphor=\"FolderOpenIcon\"\n                  remixicon=\"RiFolderOpenLine\"\n                />\n                Open Recent\n              </DropdownMenuSubTrigger>\n              <DropdownMenuPortal>\n                <DropdownMenuSubContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>Recent Projects</DropdownMenuLabel>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"FileCodeIcon\"\n                        tabler=\"IconFileCode\"\n                        hugeicons=\"CodeIcon\"\n                        phosphor=\"CodeIcon\"\n                        remixicon=\"RiCodeLine\"\n                      />\n                      Project Alpha\n                    </DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"FileCodeIcon\"\n                        tabler=\"IconFileCode\"\n                        hugeicons=\"CodeIcon\"\n                        phosphor=\"CodeIcon\"\n                        remixicon=\"RiCodeLine\"\n                      />\n                      Project Beta\n                    </DropdownMenuItem>\n                    <DropdownMenuSub>\n                      <DropdownMenuSubTrigger>\n                        <IconPlaceholder\n                          lucide=\"MoreHorizontalIcon\"\n                          tabler=\"IconDots\"\n                          hugeicons=\"MoreHorizontalCircle01Icon\"\n                          phosphor=\"DotsThreeOutlineIcon\"\n                          remixicon=\"RiMoreLine\"\n                        />\n                        More Projects\n                      </DropdownMenuSubTrigger>\n                      <DropdownMenuPortal>\n                        <DropdownMenuSubContent>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FileCodeIcon\"\n                              tabler=\"IconFileCode\"\n                              hugeicons=\"CodeIcon\"\n                              phosphor=\"CodeIcon\"\n                              remixicon=\"RiCodeLine\"\n                            />\n                            Project Gamma\n                          </DropdownMenuItem>\n                          <DropdownMenuItem>\n                            <IconPlaceholder\n                              lucide=\"FileCodeIcon\"\n                              tabler=\"IconFileCode\"\n                              hugeicons=\"CodeIcon\"\n                              phosphor=\"CodeIcon\"\n                              remixicon=\"RiCodeLine\"\n                            />\n                            Project Delta\n                          </DropdownMenuItem>\n                        </DropdownMenuSubContent>\n                      </DropdownMenuPortal>\n                    </DropdownMenuSub>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"FolderSearchIcon\"\n                        tabler=\"IconFolderSearch\"\n                        hugeicons=\"SearchIcon\"\n                        phosphor=\"MagnifyingGlassIcon\"\n                        remixicon=\"RiSearchLine\"\n                      />\n                      Browse...\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuPortal>\n            </DropdownMenuSub>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"SaveIcon\"\n                tabler=\"IconDeviceFloppy\"\n                hugeicons=\"FloppyDiskIcon\"\n                phosphor=\"FloppyDiskIcon\"\n                remixicon=\"RiSaveLine\"\n              />\n              Save\n              <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"DownloadIcon\"\n                tabler=\"IconDownload\"\n                hugeicons=\"DownloadIcon\"\n                phosphor=\"DownloadIcon\"\n                remixicon=\"RiDownloadLine\"\n              />\n              Export\n              <DropdownMenuShortcut>⇧⌘E</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>View</DropdownMenuLabel>\n            <DropdownMenuCheckboxItem\n              checked={notifications.email}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, email: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"EyeIcon\"\n                tabler=\"IconEye\"\n                hugeicons=\"EyeIcon\"\n                phosphor=\"EyeIcon\"\n                remixicon=\"RiEyeLine\"\n              />\n              Show Sidebar\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuCheckboxItem\n              checked={notifications.sms}\n              onCheckedChange={(checked) =>\n                setNotifications({ ...notifications, sms: checked === true })\n              }\n            >\n              <IconPlaceholder\n                lucide=\"LayoutIcon\"\n                tabler=\"IconLayout\"\n                hugeicons=\"LayoutIcon\"\n                phosphor=\"LayoutIcon\"\n                remixicon=\"RiLayoutLine\"\n              />\n              Show Status Bar\n            </DropdownMenuCheckboxItem>\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>\n                <IconPlaceholder\n                  lucide=\"PaletteIcon\"\n                  tabler=\"IconPalette\"\n                  hugeicons=\"PaintBoardIcon\"\n                  phosphor=\"PaletteIcon\"\n                  remixicon=\"RiPaletteLine\"\n                />\n                Theme\n              </DropdownMenuSubTrigger>\n              <DropdownMenuPortal>\n                <DropdownMenuSubContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n                    <DropdownMenuRadioGroup\n                      value={theme}\n                      onValueChange={setTheme}\n                    >\n                      <DropdownMenuRadioItem value=\"light\">\n                        <IconPlaceholder\n                          lucide=\"SunIcon\"\n                          tabler=\"IconSun\"\n                          hugeicons=\"SunIcon\"\n                          phosphor=\"SunIcon\"\n                          remixicon=\"RiSunLine\"\n                        />\n                        Light\n                      </DropdownMenuRadioItem>\n                      <DropdownMenuRadioItem value=\"dark\">\n                        <IconPlaceholder\n                          lucide=\"MoonIcon\"\n                          tabler=\"IconMoon\"\n                          hugeicons=\"MoonIcon\"\n                          phosphor=\"MoonIcon\"\n                          remixicon=\"RiMoonLine\"\n                        />\n                        Dark\n                      </DropdownMenuRadioItem>\n                      <DropdownMenuRadioItem value=\"system\">\n                        <IconPlaceholder\n                          lucide=\"MonitorIcon\"\n                          tabler=\"IconDeviceDesktop\"\n                          hugeicons=\"ComputerIcon\"\n                          phosphor=\"MonitorIcon\"\n                          remixicon=\"RiComputerLine\"\n                        />\n                        System\n                      </DropdownMenuRadioItem>\n                    </DropdownMenuRadioGroup>\n                  </DropdownMenuGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuPortal>\n            </DropdownMenuSub>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>Account</DropdownMenuLabel>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"UserIcon\"\n                tabler=\"IconUser\"\n                hugeicons=\"UserIcon\"\n                phosphor=\"UserIcon\"\n                remixicon=\"RiUserLine\"\n              />\n              Profile\n              <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"CreditCardIcon\"\n                tabler=\"IconCreditCard\"\n                hugeicons=\"CreditCardIcon\"\n                phosphor=\"CreditCardIcon\"\n                remixicon=\"RiBankCardLine\"\n              />\n              Billing\n            </DropdownMenuItem>\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>\n                <IconPlaceholder\n                  lucide=\"SettingsIcon\"\n                  tabler=\"IconSettings\"\n                  hugeicons=\"SettingsIcon\"\n                  phosphor=\"GearIcon\"\n                  remixicon=\"RiSettingsLine\"\n                />\n                Settings\n              </DropdownMenuSubTrigger>\n              <DropdownMenuPortal>\n                <DropdownMenuSubContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>Preferences</DropdownMenuLabel>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"KeyboardIcon\"\n                        tabler=\"IconKeyboard\"\n                        hugeicons=\"KeyboardIcon\"\n                        phosphor=\"KeyboardIcon\"\n                        remixicon=\"RiKeyboardLine\"\n                      />\n                      Keyboard Shortcuts\n                    </DropdownMenuItem>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"LanguagesIcon\"\n                        tabler=\"IconLanguage\"\n                        hugeicons=\"LanguageCircleIcon\"\n                        phosphor=\"TranslateIcon\"\n                        remixicon=\"RiTranslate\"\n                      />\n                      Language\n                    </DropdownMenuItem>\n                    <DropdownMenuSub>\n                      <DropdownMenuSubTrigger>\n                        <IconPlaceholder\n                          lucide=\"BellIcon\"\n                          tabler=\"IconBell\"\n                          hugeicons=\"NotificationIcon\"\n                          phosphor=\"BellIcon\"\n                          remixicon=\"RiNotificationLine\"\n                        />\n                        Notifications\n                      </DropdownMenuSubTrigger>\n                      <DropdownMenuPortal>\n                        <DropdownMenuSubContent>\n                          <DropdownMenuGroup>\n                            <DropdownMenuLabel>\n                              Notification Types\n                            </DropdownMenuLabel>\n                            <DropdownMenuCheckboxItem\n                              checked={notifications.push}\n                              onCheckedChange={(checked) =>\n                                setNotifications({\n                                  ...notifications,\n                                  push: checked === true,\n                                })\n                              }\n                            >\n                              <IconPlaceholder\n                                lucide=\"BellIcon\"\n                                tabler=\"IconBell\"\n                                hugeicons=\"NotificationIcon\"\n                                phosphor=\"BellIcon\"\n                                remixicon=\"RiNotificationLine\"\n                              />\n                              Push Notifications\n                            </DropdownMenuCheckboxItem>\n                            <DropdownMenuCheckboxItem\n                              checked={notifications.email}\n                              onCheckedChange={(checked) =>\n                                setNotifications({\n                                  ...notifications,\n                                  email: checked === true,\n                                })\n                              }\n                            >\n                              <IconPlaceholder\n                                lucide=\"MailIcon\"\n                                tabler=\"IconMail\"\n                                hugeicons=\"MailIcon\"\n                                phosphor=\"EnvelopeIcon\"\n                                remixicon=\"RiMailLine\"\n                              />\n                              Email Notifications\n                            </DropdownMenuCheckboxItem>\n                          </DropdownMenuGroup>\n                        </DropdownMenuSubContent>\n                      </DropdownMenuPortal>\n                    </DropdownMenuSub>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>\n                      <IconPlaceholder\n                        lucide=\"ShieldIcon\"\n                        tabler=\"IconShield\"\n                        hugeicons=\"ShieldIcon\"\n                        phosphor=\"ShieldIcon\"\n                        remixicon=\"RiShieldLine\"\n                      />\n                      Privacy & Security\n                    </DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuPortal>\n            </DropdownMenuSub>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"HelpCircleIcon\"\n                tabler=\"IconHelpCircle\"\n                hugeicons=\"HelpCircleIcon\"\n                phosphor=\"QuestionIcon\"\n                remixicon=\"RiQuestionLine\"\n              />\n              Help & Support\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <IconPlaceholder\n                lucide=\"FileTextIcon\"\n                tabler=\"IconFileText\"\n                hugeicons=\"File01Icon\"\n                phosphor=\"FileTextIcon\"\n                remixicon=\"RiFileTextLine\"\n              />\n              Documentation\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem variant=\"destructive\">\n              <IconPlaceholder\n                lucide=\"LogOutIcon\"\n                tabler=\"IconLogout\"\n                hugeicons=\"LogoutIcon\"\n                phosphor=\"SignOutIcon\"\n                remixicon=\"RiLogoutBoxLine\"\n              />\n              Sign Out\n              <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/empty-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/radix/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { Kbd } from \"@/registry/bases/radix/ui/kbd\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function EmptyExample() {\n  return (\n    <ExampleWrapper>\n      <EmptyBasic />\n      <EmptyWithMutedBackground />\n      <EmptyWithBorder />\n      <EmptyWithIcon />\n      <EmptyWithMutedBackgroundAlt />\n      <EmptyInCard />\n    </ExampleWrapper>\n  )\n}\n\nfunction EmptyBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Empty>\n        <EmptyHeader>\n          <EmptyTitle>No projects yet</EmptyTitle>\n          <EmptyDescription>\n            You haven&apos;t created any projects yet. Get started by creating\n            your first project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <div className=\"flex gap-2\">\n            <Button asChild>\n              <a href=\"#\">Create project</a>\n            </Button>\n            <Button variant=\"outline\">Import project</Button>\n          </div>\n          <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n            <a href=\"#\">\n              Learn more{\" \"}\n              <IconPlaceholder\n                lucide=\"ArrowUpRightIcon\"\n                tabler=\"IconArrowUpRight\"\n                hugeicons=\"ArrowUpRight01Icon\"\n                phosphor=\"ArrowUpRightIcon\"\n                remixicon=\"RiArrowRightUpLine\"\n              />\n            </a>\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyWithMutedBackground() {\n  return (\n    <Example title=\"With Muted Background\">\n      <Empty className=\"bg-muted\">\n        <EmptyHeader>\n          <EmptyTitle>No results found</EmptyTitle>\n          <EmptyDescription>\n            No results found for your search. Try adjusting your search terms.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <Button>Try again</Button>\n          <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n            <a href=\"#\">\n              Learn more{\" \"}\n              <IconPlaceholder\n                lucide=\"ArrowUpRightIcon\"\n                tabler=\"IconArrowUpRight\"\n                hugeicons=\"ArrowUpRight01Icon\"\n                phosphor=\"ArrowUpRightIcon\"\n                remixicon=\"RiArrowRightUpLine\"\n              />\n            </a>\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyWithBorder() {\n  return (\n    <Example title=\"With Border\">\n      <Empty className=\"border\">\n        <EmptyHeader>\n          <EmptyTitle>404 - Not Found</EmptyTitle>\n          <EmptyDescription>\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\n            for what you need below.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <InputGroup className=\"w-3/4\">\n            <InputGroupInput placeholder=\"Try searching for pages...\" />\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"CircleDashedIcon\"\n                tabler=\"IconCircleDashed\"\n                hugeicons=\"DashedLineCircleIcon\"\n                phosphor=\"CircleDashedIcon\"\n                remixicon=\"RiLoaderLine\"\n              />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>/</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <EmptyDescription>\n            Need help? <a href=\"#\">Contact support</a>\n          </EmptyDescription>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyWithIcon() {\n  return (\n    <Example title=\"With Icon\">\n      <Empty className=\"border\">\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"FolderIcon\"\n              tabler=\"IconFolder\"\n              hugeicons=\"Folder01Icon\"\n              phosphor=\"FolderIcon\"\n              remixicon=\"RiFolderLine\"\n            />\n          </EmptyMedia>\n          <EmptyTitle>Nothing to see here</EmptyTitle>\n          <EmptyDescription>\n            No posts have been created yet. Get started by{\" \"}\n            <a href=\"#\">creating your first post</a>.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <Button variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"PlusIcon\"\n              tabler=\"IconPlus\"\n              hugeicons=\"PlusSignIcon\"\n              phosphor=\"PlusIcon\"\n              remixicon=\"RiAddLine\"\n              data-icon=\"inline-start\"\n            />\n            New Post\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyWithMutedBackgroundAlt() {\n  return (\n    <Example title=\"With Muted Background Alt\">\n      <Empty className=\"bg-muted/50\">\n        <EmptyHeader>\n          <EmptyTitle>404 - Not Found</EmptyTitle>\n          <EmptyDescription>\n            The page you&apos;re looking for doesn&apos;t exist. Try searching\n            for what you need below.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <InputGroup className=\"w-3/4\">\n            <InputGroupInput placeholder=\"Try searching for pages...\" />\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"CircleDashedIcon\"\n                tabler=\"IconCircleDashed\"\n                hugeicons=\"DashedLineCircleIcon\"\n                phosphor=\"CircleDashedIcon\"\n                remixicon=\"RiLoaderLine\"\n              />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>/</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <EmptyDescription>\n            Need help? <a href=\"#\">Contact support</a>\n          </EmptyDescription>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n\nfunction EmptyInCard() {\n  return (\n    <Example title=\"In Card\">\n      <Empty>\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"FolderIcon\"\n              tabler=\"IconFolder\"\n              hugeicons=\"Folder01Icon\"\n              phosphor=\"FolderIcon\"\n              remixicon=\"RiFolderLine\"\n            />\n          </EmptyMedia>\n          <EmptyTitle>No projects yet</EmptyTitle>\n          <EmptyDescription>\n            You haven&apos;t created any projects yet. Get started by creating\n            your first project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <div className=\"flex gap-2\">\n            <Button asChild>\n              <a href=\"#\">Create project</a>\n            </Button>\n            <Button variant=\"outline\">Import project</Button>\n          </div>\n          <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n            <a href=\"#\">\n              Learn more{\" \"}\n              <IconPlaceholder\n                lucide=\"ArrowUpRightIcon\"\n                tabler=\"IconArrowUpRight\"\n                hugeicons=\"ArrowUpRight01Icon\"\n                phosphor=\"ArrowUpRightIcon\"\n                remixicon=\"RiArrowRightUpLine\"\n              />\n            </a>\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/field-example.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/registry/bases/radix/ui/input-otp\"\nimport {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/registry/bases/radix/ui/native-select\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/bases/radix/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport { Slider } from \"@/registry/bases/radix/ui/slider\"\nimport { Switch } from \"@/registry/bases/radix/ui/switch\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\n\nexport default function FieldExample() {\n  return (\n    <ExampleWrapper>\n      <InputFields />\n      <TextareaFields />\n      <SelectFields />\n      <CheckboxFields />\n      <RadioFields />\n      <SwitchFields />\n      <SliderFields />\n      <NativeSelectFields />\n      <InputOTPFields />\n      <HorizontalFields />\n    </ExampleWrapper>\n  )\n}\n\nfunction InputFields() {\n  return (\n    <Example title=\"Input Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-basic\">Basic Input</FieldLabel>\n          <Input id=\"input-basic\" placeholder=\"Enter text\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-with-desc\">\n            Input with Description\n          </FieldLabel>\n          <Input id=\"input-with-desc\" placeholder=\"Enter your username\" />\n          <FieldDescription>\n            Choose a unique username for your account.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-desc-first\">Email Address</FieldLabel>\n          <FieldDescription>\n            We&apos;ll never share your email with anyone.\n          </FieldDescription>\n          <Input\n            id=\"input-desc-first\"\n            type=\"email\"\n            placeholder=\"email@example.com\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-required\">\n            Required Field <span className=\"text-destructive\">*</span>\n          </FieldLabel>\n          <Input\n            id=\"input-required\"\n            placeholder=\"This field is required\"\n            required\n          />\n          <FieldDescription>This field must be filled out.</FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-disabled\">Disabled Input</FieldLabel>\n          <Input id=\"input-disabled\" placeholder=\"Cannot edit\" disabled />\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-badge\">\n            Input with Badge{\" \"}\n            <Badge variant=\"secondary\" className=\"ml-auto\">\n              Recommended\n            </Badge>\n          </FieldLabel>\n          <Input id=\"input-badge\" placeholder=\"Enter value\" />\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"input-invalid\">Invalid Input</FieldLabel>\n          <Input\n            id=\"input-invalid\"\n            placeholder=\"This field has an error\"\n            aria-invalid\n          />\n          <FieldDescription>\n            This field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"input-disabled-field\">Disabled Field</FieldLabel>\n          <Input id=\"input-disabled-field\" placeholder=\"Cannot edit\" disabled />\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction TextareaFields() {\n  return (\n    <Example title=\"Textarea Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-basic\">Basic Textarea</FieldLabel>\n          <Textarea id=\"textarea-basic\" placeholder=\"Enter your message\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-comments\">Comments</FieldLabel>\n          <Textarea\n            id=\"textarea-comments\"\n            placeholder=\"Share your thoughts...\"\n            className=\"min-h-[100px]\"\n          />\n          <FieldDescription>Maximum 500 characters allowed.</FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-bio\">Bio</FieldLabel>\n          <FieldDescription>\n            Tell us about yourself in a few sentences.\n          </FieldDescription>\n          <Textarea\n            id=\"textarea-bio\"\n            placeholder=\"I am a...\"\n            className=\"min-h-[120px]\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-desc-after\">Message</FieldLabel>\n          <Textarea id=\"textarea-desc-after\" placeholder=\"Enter your message\" />\n          <FieldDescription>\n            Enter your message so it is long enough to test the layout.\n          </FieldDescription>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"textarea-invalid\">Invalid Textarea</FieldLabel>\n          <Textarea\n            id=\"textarea-invalid\"\n            placeholder=\"This field has an error\"\n            aria-invalid\n          />\n          <FieldDescription>\n            This field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"textarea-disabled-field\">\n            Disabled Field\n          </FieldLabel>\n          <Textarea\n            id=\"textarea-disabled-field\"\n            placeholder=\"Cannot edit\"\n            disabled\n          />\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction SelectFields() {\n  return (\n    <Example title=\"Select Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"select-basic\">Basic Select</FieldLabel>\n          <Select>\n            <SelectTrigger id=\"select-basic\">\n              <SelectValue placeholder=\"Choose an option\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"option1\">Option 1</SelectItem>\n                <SelectItem value=\"option2\">Option 2</SelectItem>\n                <SelectItem value=\"option3\">Option 3</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"select-country\">Country</FieldLabel>\n          <Select>\n            <SelectTrigger id=\"select-country\">\n              <SelectValue placeholder=\"Select your country\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"us\">United States</SelectItem>\n                <SelectItem value=\"uk\">United Kingdom</SelectItem>\n                <SelectItem value=\"ca\">Canada</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <FieldDescription>\n            Select the country where you currently reside.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"select-timezone\">Timezone</FieldLabel>\n          <FieldDescription>\n            Choose your local timezone for accurate scheduling.\n          </FieldDescription>\n          <Select>\n            <SelectTrigger id=\"select-timezone\">\n              <SelectValue placeholder=\"Select timezone\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"utc\">UTC</SelectItem>\n                <SelectItem value=\"est\">Eastern Time</SelectItem>\n                <SelectItem value=\"pst\">Pacific Time</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"select-invalid\">Invalid Select</FieldLabel>\n          <Select>\n            <SelectTrigger id=\"select-invalid\" aria-invalid>\n              <SelectValue placeholder=\"This field has an error\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"option1\">Option 1</SelectItem>\n                <SelectItem value=\"option2\">Option 2</SelectItem>\n                <SelectItem value=\"option3\">Option 3</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <FieldDescription>\n            This field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"select-disabled-field\">\n            Disabled Field\n          </FieldLabel>\n          <Select disabled>\n            <SelectTrigger id=\"select-disabled-field\">\n              <SelectValue placeholder=\"Cannot select\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"option1\">Option 1</SelectItem>\n                <SelectItem value=\"option2\">Option 2</SelectItem>\n                <SelectItem value=\"option3\">Option 3</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction NativeSelectFields() {\n  return (\n    <Example title=\"Native Select Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"native-select-basic\">\n            Basic Native Select\n          </FieldLabel>\n          <NativeSelect id=\"native-select-basic\">\n            <NativeSelectOption value=\"\">Choose an option</NativeSelectOption>\n            <NativeSelectOption value=\"option1\">Option 1</NativeSelectOption>\n            <NativeSelectOption value=\"option2\">Option 2</NativeSelectOption>\n            <NativeSelectOption value=\"option3\">Option 3</NativeSelectOption>\n          </NativeSelect>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"native-select-country\">Country</FieldLabel>\n          <NativeSelect id=\"native-select-country\">\n            <NativeSelectOption value=\"\">\n              Select your country\n            </NativeSelectOption>\n            <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n            <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n            <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n          </NativeSelect>\n          <FieldDescription>\n            Select the country where you currently reside.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"native-select-timezone\">Timezone</FieldLabel>\n          <FieldDescription>\n            Choose your local timezone for accurate scheduling.\n          </FieldDescription>\n          <NativeSelect id=\"native-select-timezone\">\n            <NativeSelectOption value=\"\">Select timezone</NativeSelectOption>\n            <NativeSelectOption value=\"utc\">UTC</NativeSelectOption>\n            <NativeSelectOption value=\"est\">Eastern Time</NativeSelectOption>\n            <NativeSelectOption value=\"pst\">Pacific Time</NativeSelectOption>\n          </NativeSelect>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"native-select-grouped\">\n            Grouped Options\n          </FieldLabel>\n          <NativeSelect id=\"native-select-grouped\">\n            <NativeSelectOption value=\"\">Select a region</NativeSelectOption>\n            <NativeSelectOptGroup label=\"North America\">\n              <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n              <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n              <NativeSelectOption value=\"mx\">Mexico</NativeSelectOption>\n            </NativeSelectOptGroup>\n            <NativeSelectOptGroup label=\"Europe\">\n              <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n              <NativeSelectOption value=\"fr\">France</NativeSelectOption>\n              <NativeSelectOption value=\"de\">Germany</NativeSelectOption>\n            </NativeSelectOptGroup>\n          </NativeSelect>\n          <FieldDescription>\n            Native select with grouped options using optgroup.\n          </FieldDescription>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"native-select-invalid\">\n            Invalid Native Select\n          </FieldLabel>\n          <NativeSelect id=\"native-select-invalid\" aria-invalid>\n            <NativeSelectOption value=\"\">\n              This field has an error\n            </NativeSelectOption>\n            <NativeSelectOption value=\"option1\">Option 1</NativeSelectOption>\n            <NativeSelectOption value=\"option2\">Option 2</NativeSelectOption>\n            <NativeSelectOption value=\"option3\">Option 3</NativeSelectOption>\n          </NativeSelect>\n          <FieldDescription>\n            This field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"native-select-disabled-field\">\n            Disabled Field\n          </FieldLabel>\n          <NativeSelect id=\"native-select-disabled-field\" disabled>\n            <NativeSelectOption value=\"\">Cannot select</NativeSelectOption>\n            <NativeSelectOption value=\"option1\">Option 1</NativeSelectOption>\n            <NativeSelectOption value=\"option2\">Option 2</NativeSelectOption>\n            <NativeSelectOption value=\"option3\">Option 3</NativeSelectOption>\n          </NativeSelect>\n          <FieldDescription>This field is currently disabled.</FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction CheckboxFields() {\n  return (\n    <Example title=\"Checkbox Fields\">\n      <FieldGroup>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-basic\" defaultChecked />\n          <FieldLabel htmlFor=\"checkbox-basic\" className=\"font-normal\">\n            I agree to the terms and conditions\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldLabel htmlFor=\"checkbox-right\">\n            Accept terms and conditions\n          </FieldLabel>\n          <Checkbox id=\"checkbox-right\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-with-desc\" />\n          <FieldContent>\n            <FieldLabel htmlFor=\"checkbox-with-desc\">\n              Subscribe to newsletter\n            </FieldLabel>\n            <FieldDescription>\n              Receive weekly updates about new features and promotions.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n        <FieldLabel htmlFor=\"checkbox-with-title\">\n          <Field orientation=\"horizontal\">\n            <Checkbox id=\"checkbox-with-title\" />\n            <FieldContent>\n              <FieldTitle>Enable Touch ID</FieldTitle>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </FieldLabel>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Preferences</FieldLegend>\n          <FieldDescription>\n            Select all that apply to customize your experience.\n          </FieldDescription>\n          <FieldGroup className=\"gap-3\">\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"pref-dark\" />\n              <FieldLabel htmlFor=\"pref-dark\" className=\"font-normal\">\n                Dark mode\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"pref-compact\" />\n              <FieldLabel htmlFor=\"pref-compact\" className=\"font-normal\">\n                Compact view\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"pref-notifications\" />\n              <FieldLabel htmlFor=\"pref-notifications\" className=\"font-normal\">\n                Enable notifications\n              </FieldLabel>\n            </Field>\n          </FieldGroup>\n        </FieldSet>\n        <Field data-invalid orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-invalid\" aria-invalid />\n          <FieldLabel htmlFor=\"checkbox-invalid\" className=\"font-normal\">\n            Invalid checkbox\n          </FieldLabel>\n        </Field>\n        <Field data-disabled orientation=\"horizontal\">\n          <Checkbox id=\"checkbox-disabled-field\" disabled />\n          <FieldLabel htmlFor=\"checkbox-disabled-field\" className=\"font-normal\">\n            Disabled checkbox\n          </FieldLabel>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction RadioFields() {\n  return (\n    <Example title=\"Radio Fields\">\n      <FieldGroup>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n          <RadioGroup defaultValue=\"free\">\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"free\" id=\"radio-free\" />\n              <FieldLabel htmlFor=\"radio-free\" className=\"font-normal\">\n                Free Plan\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"pro\" id=\"radio-pro\" />\n              <FieldLabel htmlFor=\"radio-pro\" className=\"font-normal\">\n                Pro Plan\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"enterprise\" id=\"radio-enterprise\" />\n              <FieldLabel htmlFor=\"radio-enterprise\" className=\"font-normal\">\n                Enterprise\n              </FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Battery Level</FieldLegend>\n          <FieldDescription>\n            Choose your preferred battery level.\n          </FieldDescription>\n          <RadioGroup>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"high\" id=\"battery-high\" />\n              <FieldLabel htmlFor=\"battery-high\">High</FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"medium\" id=\"battery-medium\" />\n              <FieldLabel htmlFor=\"battery-medium\">Medium</FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"low\" id=\"battery-low\" />\n              <FieldLabel htmlFor=\"battery-low\">Low</FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n        <RadioGroup className=\"gap-6\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"option1\" id=\"radio-content-1\" />\n            <FieldContent>\n              <FieldLabel htmlFor=\"radio-content-1\">Enable Touch ID</FieldLabel>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"option2\" id=\"radio-content-2\" />\n            <FieldContent>\n              <FieldLabel htmlFor=\"radio-content-2\">\n                Enable Touch ID and Face ID to make it even faster to unlock\n                your device. This is a long label to test the layout.\n              </FieldLabel>\n              <FieldDescription>\n                Enable Touch ID to quickly unlock your device.\n              </FieldDescription>\n            </FieldContent>\n          </Field>\n        </RadioGroup>\n        <RadioGroup className=\"gap-3\">\n          <FieldLabel htmlFor=\"radio-title-1\">\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"title1\" id=\"radio-title-1\" />\n              <FieldContent>\n                <FieldTitle>Enable Touch ID</FieldTitle>\n                <FieldDescription>\n                  Enable Touch ID to quickly unlock your device.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n          </FieldLabel>\n          <FieldLabel htmlFor=\"radio-title-2\">\n            <Field orientation=\"horizontal\">\n              <RadioGroupItem value=\"title2\" id=\"radio-title-2\" />\n              <FieldContent>\n                <FieldTitle>\n                  Enable Touch ID and Face ID to make it even faster to unlock\n                  your device. This is a long label to test the layout.\n                </FieldTitle>\n                <FieldDescription>\n                  Enable Touch ID to quickly unlock your device.\n                </FieldDescription>\n              </FieldContent>\n            </Field>\n          </FieldLabel>\n        </RadioGroup>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Invalid Radio Group</FieldLegend>\n          <RadioGroup>\n            <Field data-invalid orientation=\"horizontal\">\n              <RadioGroupItem\n                value=\"invalid1\"\n                id=\"radio-invalid-1\"\n                aria-invalid\n              />\n              <FieldLabel htmlFor=\"radio-invalid-1\">\n                Invalid Option 1\n              </FieldLabel>\n            </Field>\n            <Field data-invalid orientation=\"horizontal\">\n              <RadioGroupItem\n                value=\"invalid2\"\n                id=\"radio-invalid-2\"\n                aria-invalid\n              />\n              <FieldLabel htmlFor=\"radio-invalid-2\">\n                Invalid Option 2\n              </FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n        <FieldSet>\n          <FieldLegend variant=\"label\">Disabled Radio Group</FieldLegend>\n          <RadioGroup disabled>\n            <Field data-disabled orientation=\"horizontal\">\n              <RadioGroupItem\n                value=\"disabled1\"\n                id=\"radio-disabled-1\"\n                disabled\n              />\n              <FieldLabel htmlFor=\"radio-disabled-1\">\n                Disabled Option 1\n              </FieldLabel>\n            </Field>\n            <Field data-disabled orientation=\"horizontal\">\n              <RadioGroupItem\n                value=\"disabled2\"\n                id=\"radio-disabled-2\"\n                disabled\n              />\n              <FieldLabel htmlFor=\"radio-disabled-2\">\n                Disabled Option 2\n              </FieldLabel>\n            </Field>\n          </RadioGroup>\n        </FieldSet>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction SwitchFields() {\n  return (\n    <Example title=\"Switch Fields\">\n      <FieldGroup>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"switch-airplane\">Airplane Mode</FieldLabel>\n            <FieldDescription>\n              Turn on airplane mode to disable all connections.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-airplane\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldLabel htmlFor=\"switch-dark\">Dark Mode</FieldLabel>\n          <Switch id=\"switch-dark\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <Switch id=\"switch-marketing\" />\n          <FieldContent>\n            <FieldLabel htmlFor=\"switch-marketing\">Marketing Emails</FieldLabel>\n            <FieldDescription>\n              Receive emails about new products, features, and more.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n        <Field>\n          <FieldLabel>Privacy Settings</FieldLabel>\n          <FieldDescription>Manage your privacy preferences.</FieldDescription>\n          <Field orientation=\"horizontal\">\n            <Switch id=\"switch-profile\" defaultChecked />\n            <FieldContent>\n              <FieldLabel htmlFor=\"switch-profile\" className=\"font-normal\">\n                Make profile visible to others\n              </FieldLabel>\n            </FieldContent>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Switch id=\"switch-email\" />\n            <FieldContent>\n              <FieldLabel htmlFor=\"switch-email\" className=\"font-normal\">\n                Show email on profile\n              </FieldLabel>\n            </FieldContent>\n          </Field>\n        </Field>\n        <Field data-invalid orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"switch-invalid\">Invalid Switch</FieldLabel>\n            <FieldDescription>\n              This switch has validation errors.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-invalid\" aria-invalid />\n        </Field>\n        <Field data-disabled orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"switch-disabled-field\">\n              Disabled Switch\n            </FieldLabel>\n            <FieldDescription>\n              This switch is currently disabled.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-disabled-field\" disabled />\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction SliderFields() {\n  const [volume, setVolume] = useState([50])\n  const [brightness, setBrightness] = useState([75])\n  const [temperature, setTemperature] = useState([0.3, 0.7])\n  const [priceRange, setPriceRange] = useState([25, 75])\n  const [colorBalance, setColorBalance] = useState([10, 20, 70])\n\n  return (\n    <Example title=\"Slider Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"slider-volume\">Volume</FieldLabel>\n          <Slider\n            id=\"slider-volume\"\n            value={volume}\n            onValueChange={setVolume}\n            max={100}\n            step={1}\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-brightness\">Screen Brightness</FieldLabel>\n          <Slider\n            id=\"slider-brightness\"\n            value={brightness}\n            onValueChange={setBrightness}\n            max={100}\n            step={5}\n          />\n          <FieldDescription>\n            Current brightness: {brightness[0]}%\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-quality\">Video Quality</FieldLabel>\n          <FieldDescription>\n            Higher quality uses more bandwidth.\n          </FieldDescription>\n          <Slider\n            id=\"slider-quality\"\n            defaultValue={[720]}\n            max={1080}\n            min={360}\n            step={360}\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-temperature\">\n            Temperature Range\n          </FieldLabel>\n          <Slider\n            id=\"slider-temperature\"\n            value={temperature}\n            onValueChange={setTemperature}\n            min={0}\n            max={1}\n            step={0.1}\n          />\n          <FieldDescription>\n            Range: {temperature[0].toFixed(1)} - {temperature[1].toFixed(1)}\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-price-range\">Price Range</FieldLabel>\n          <Slider\n            id=\"slider-price-range\"\n            value={priceRange}\n            onValueChange={setPriceRange}\n            max={100}\n            step={5}\n          />\n          <FieldDescription>\n            ${priceRange[0]} - ${priceRange[1]}\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"slider-color-balance\">Color Balance</FieldLabel>\n          <Slider\n            id=\"slider-color-balance\"\n            value={colorBalance}\n            onValueChange={setColorBalance}\n            max={100}\n            step={10}\n          />\n          <FieldDescription>\n            Red: {colorBalance[0]}%, Green: {colorBalance[1]}%, Blue:{\" \"}\n            {colorBalance[2]}%\n          </FieldDescription>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"slider-invalid\">Invalid Slider</FieldLabel>\n          <Slider\n            id=\"slider-invalid\"\n            defaultValue={[30]}\n            max={100}\n            aria-invalid\n          />\n          <FieldDescription>\n            This slider has validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"slider-disabled-field\">\n            Disabled Slider\n          </FieldLabel>\n          <Slider\n            id=\"slider-disabled-field\"\n            defaultValue={[50]}\n            max={100}\n            disabled\n          />\n          <FieldDescription>\n            This slider is currently disabled.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputOTPFields() {\n  const [value, setValue] = useState(\"\")\n  const [pinValue, setPinValue] = useState(\"\")\n\n  return (\n    <Example title=\"OTP Input Fields\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"otp-basic\">Verification Code</FieldLabel>\n          <InputOTP id=\"otp-basic\" maxLength={6}>\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"otp-with-desc\">Enter OTP</FieldLabel>\n          <InputOTP\n            id=\"otp-with-desc\"\n            maxLength={6}\n            value={value}\n            onChange={setValue}\n          >\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            Enter the 6-digit code sent to your email.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"otp-separator\">\n            Two-Factor Authentication\n          </FieldLabel>\n          <InputOTP id=\"otp-separator\" maxLength={6}>\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n            </InputOTPGroup>\n            <InputOTPSeparator />\n            <InputOTPGroup>\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            Enter the code from your authenticator app.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"otp-pin\">PIN Code</FieldLabel>\n          <InputOTP\n            id=\"otp-pin\"\n            maxLength={4}\n            pattern={REGEXP_ONLY_DIGITS}\n            value={pinValue}\n            onChange={setPinValue}\n          >\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            Enter your 4-digit PIN (numbers only).\n          </FieldDescription>\n        </Field>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"otp-invalid\">Invalid OTP</FieldLabel>\n          <InputOTP id=\"otp-invalid\" maxLength={6}>\n            <InputOTPGroup>\n              <InputOTPSlot index={0} aria-invalid />\n              <InputOTPSlot index={1} aria-invalid />\n              <InputOTPSlot index={2} aria-invalid />\n              <InputOTPSlot index={3} aria-invalid />\n              <InputOTPSlot index={4} aria-invalid />\n              <InputOTPSlot index={5} aria-invalid />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            This OTP field contains validation errors.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled>\n          <FieldLabel htmlFor=\"otp-disabled-field\">Disabled OTP</FieldLabel>\n          <InputOTP id=\"otp-disabled-field\" maxLength={6} disabled>\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n            </InputOTPGroup>\n          </InputOTP>\n          <FieldDescription>\n            This OTP field is currently disabled.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction HorizontalFields() {\n  return (\n    <Example title=\"Horizontal Fields\">\n      <FieldGroup className=\"**:data-[slot=field-content]:min-w-48\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-input\">Username</FieldLabel>\n            <FieldDescription>Enter your preferred username.</FieldDescription>\n          </FieldContent>\n          <Input id=\"horizontal-input\" placeholder=\"johndoe\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-textarea\">Bio</FieldLabel>\n            <FieldDescription>\n              Write a short description about yourself.\n            </FieldDescription>\n          </FieldContent>\n          <Textarea\n            id=\"horizontal-textarea\"\n            placeholder=\"Tell us about yourself...\"\n          />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-switch\">\n              Email Notifications\n            </FieldLabel>\n            <FieldDescription>\n              Receive email updates about your account.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"horizontal-switch\" />\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-select\">Favorite Fruit</FieldLabel>\n            <FieldDescription>Choose your favorite fruit.</FieldDescription>\n          </FieldContent>\n          <Select>\n            <SelectTrigger id=\"horizontal-select\">\n              <SelectValue placeholder=\"Select a fruit\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"apple\">Apple</SelectItem>\n                <SelectItem value=\"banana\">Banana</SelectItem>\n                <SelectItem value=\"orange\">Orange</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-native-select\">Country</FieldLabel>\n            <FieldDescription>Select your country.</FieldDescription>\n          </FieldContent>\n          <NativeSelect id=\"horizontal-native-select\">\n            <NativeSelectOption value=\"\">Select a country</NativeSelectOption>\n            <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n            <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n            <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n          </NativeSelect>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldLabel htmlFor=\"horizontal-slider\">Volume</FieldLabel>\n            <FieldDescription>Adjust the volume level.</FieldDescription>\n          </FieldContent>\n          <Slider id=\"horizontal-slider\" defaultValue={[50]} max={100} />\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/hover-card-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/bases/radix/ui/hover-card\"\n\nexport default function HoverCardExample() {\n  return (\n    <ExampleWrapper>\n      <HoverCardSides />\n      <HoverCardInDialog />\n    </ExampleWrapper>\n  )\n}\n\nconst HOVER_CARD_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nfunction HoverCardSides() {\n  return (\n    <Example title=\"Sides\">\n      <div className=\"flex flex-wrap items-center justify-center gap-4\">\n        {HOVER_CARD_SIDES.map((side) => (\n          <HoverCard key={side} openDelay={100} closeDelay={100}>\n            <HoverCardTrigger asChild>\n              <Button variant=\"outline\" className=\"capitalize\">\n                {side}\n              </Button>\n            </HoverCardTrigger>\n            <HoverCardContent side={side} className=\"w-64\">\n              <div className=\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\">\n                <h4 className=\"font-medium\">Hover Card</h4>\n                <p>\n                  This hover card appears on the {side} side of the trigger.\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCard>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction HoverCardInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Hover Card Example</DialogTitle>\n            <DialogDescription>\n              Hover over the button below to see the hover card.\n            </DialogDescription>\n          </DialogHeader>\n          <HoverCard openDelay={100} closeDelay={100}>\n            <HoverCardTrigger asChild>\n              <Button variant=\"outline\" className=\"w-fit\">\n                Hover me\n              </Button>\n            </HoverCardTrigger>\n            <HoverCardContent className=\"w-64\">\n              <div className=\"flex flex-col style-vega:gap-2 style-nova:gap-1.5 style-lyra:gap-1 style-maia:gap-2 style-mira:gap-1\">\n                <h4 className=\"font-medium\">Hover Card</h4>\n                <p>\n                  This hover card appears inside a dialog. Hover over the button\n                  to see it.\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCard>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/input-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/radix/ui/native-select\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\n\nexport default function InputExample() {\n  return (\n    <ExampleWrapper>\n      <InputBasic />\n      <InputInvalid />\n      <InputWithLabel />\n      <InputWithDescription />\n      <InputDisabled />\n      <InputTypes />\n      <InputWithSelect />\n      <InputWithButton />\n      <InputWithNativeSelect />\n      <InputForm />\n    </ExampleWrapper>\n  )\n}\n\nfunction InputBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Input type=\"email\" placeholder=\"Email\" />\n    </Example>\n  )\n}\n\nfunction InputInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <Input type=\"text\" placeholder=\"Error\" aria-invalid=\"true\" />\n    </Example>\n  )\n}\n\nfunction InputWithLabel() {\n  return (\n    <Example title=\"With Label\">\n      <Field>\n        <FieldLabel htmlFor=\"input-demo-email\">Email</FieldLabel>\n        <Input\n          id=\"input-demo-email\"\n          type=\"email\"\n          placeholder=\"name@example.com\"\n        />\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputWithDescription() {\n  return (\n    <Example title=\"With Description\">\n      <Field>\n        <FieldLabel htmlFor=\"input-demo-username\">Username</FieldLabel>\n        <Input\n          id=\"input-demo-username\"\n          type=\"text\"\n          placeholder=\"Enter your username\"\n        />\n        <FieldDescription>\n          Choose a unique username for your account.\n        </FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field>\n        <FieldLabel htmlFor=\"input-demo-disabled\">Email</FieldLabel>\n        <Input\n          id=\"input-demo-disabled\"\n          type=\"email\"\n          placeholder=\"Email\"\n          disabled\n        />\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputTypes() {\n  return (\n    <Example title=\"Input Types\">\n      <div className=\"flex w-full flex-col gap-6\">\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-password\">Password</FieldLabel>\n          <Input\n            id=\"input-demo-password\"\n            type=\"password\"\n            placeholder=\"Password\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-tel\">Phone</FieldLabel>\n          <Input\n            id=\"input-demo-tel\"\n            type=\"tel\"\n            placeholder=\"+1 (555) 123-4567\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-url\">URL</FieldLabel>\n          <Input\n            id=\"input-demo-url\"\n            type=\"url\"\n            placeholder=\"https://example.com\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-search\">Search</FieldLabel>\n          <Input id=\"input-demo-search\" type=\"search\" placeholder=\"Search\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-number\">Number</FieldLabel>\n          <Input id=\"input-demo-number\" type=\"number\" placeholder=\"123\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-date\">Date</FieldLabel>\n          <Input id=\"input-demo-date\" type=\"date\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-time\">Time</FieldLabel>\n          <Input id=\"input-demo-time\" type=\"time\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-demo-file\">File</FieldLabel>\n          <Input id=\"input-demo-file\" type=\"file\" />\n        </Field>\n      </div>\n    </Example>\n  )\n}\n\nfunction InputWithSelect() {\n  return (\n    <Example title=\"With Select\">\n      <div className=\"flex w-full gap-2\">\n        <Input type=\"text\" placeholder=\"Enter amount\" className=\"flex-1\" />\n        <Select defaultValue=\"usd\">\n          <SelectTrigger className=\"w-32\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"usd\">USD</SelectItem>\n              <SelectItem value=\"eur\">EUR</SelectItem>\n              <SelectItem value=\"gbp\">GBP</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </div>\n    </Example>\n  )\n}\n\nfunction InputWithButton() {\n  return (\n    <Example title=\"With Button\">\n      <div className=\"flex w-full gap-2\">\n        <Input type=\"search\" placeholder=\"Search...\" className=\"flex-1\" />\n        <Button>Search</Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction InputWithNativeSelect() {\n  return (\n    <Example title=\"With Native Select\">\n      <div className=\"flex w-full gap-2\">\n        <Input type=\"tel\" placeholder=\"(555) 123-4567\" className=\"flex-1\" />\n        <NativeSelect defaultValue=\"+1\">\n          <NativeSelectOption value=\"+1\">+1</NativeSelectOption>\n          <NativeSelectOption value=\"+44\">+44</NativeSelectOption>\n          <NativeSelectOption value=\"+46\">+46</NativeSelectOption>\n        </NativeSelect>\n      </div>\n    </Example>\n  )\n}\n\nfunction InputForm() {\n  return (\n    <Example title=\"Form\">\n      <form className=\"w-full\">\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"form-name\">Name</FieldLabel>\n            <Input id=\"form-name\" type=\"text\" placeholder=\"John Doe\" />\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"form-email\">Email</FieldLabel>\n            <Input\n              id=\"form-email\"\n              type=\"email\"\n              placeholder=\"john@example.com\"\n            />\n            <FieldDescription>\n              We&apos;ll never share your email with anyone.\n            </FieldDescription>\n          </Field>\n          <div className=\"grid grid-cols-2 gap-4\">\n            <Field>\n              <FieldLabel htmlFor=\"form-phone\">Phone</FieldLabel>\n              <Input\n                id=\"form-phone\"\n                type=\"tel\"\n                placeholder=\"+1 (555) 123-4567\"\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"form-country\">Country</FieldLabel>\n              <Select defaultValue=\"us\">\n                <SelectTrigger id=\"form-country\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"us\">United States</SelectItem>\n                    <SelectItem value=\"uk\">United Kingdom</SelectItem>\n                    <SelectItem value=\"ca\">Canada</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </Field>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"form-address\">Address</FieldLabel>\n            <Input id=\"form-address\" type=\"text\" placeholder=\"123 Main St\" />\n          </Field>\n          <Field orientation=\"horizontal\">\n            <Button type=\"button\" variant=\"outline\">\n              Cancel\n            </Button>\n            <Button type=\"submit\">Submit</Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/input-group-example.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { toast } from \"sonner\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupText,\n} from \"@/registry/bases/radix/ui/button-group\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/registry/bases/radix/ui/kbd\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/registry/bases/radix/ui/popover\"\nimport { Spinner } from \"@/registry/bases/radix/ui/spinner\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/radix/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function InputGroupExample() {\n  const [country, setCountry] = useState(\"+1\")\n\n  return (\n    <ExampleWrapper className=\"min-w-0\">\n      <InputGroupBasic />\n      <InputGroupWithAddons />\n      <InputGroupWithButtons />\n      <InputGroupWithTooltip country={country} setCountry={setCountry} />\n      <InputGroupWithKbd />\n      <InputGroupInCard />\n      <InputGroupTextareaExamples />\n    </ExampleWrapper>\n  )\n}\n\nfunction InputGroupBasic() {\n  return (\n    <Example title=\"Basic\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-default-01\">\n            Default (No Input Group)\n          </FieldLabel>\n          <Input placeholder=\"Placeholder\" id=\"input-default-01\" />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-group-02\">Input Group</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-group-02\" placeholder=\"Placeholder\" />\n          </InputGroup>\n        </Field>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"input-disabled-03\">Disabled</FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-disabled-03\"\n              placeholder=\"This field is disabled\"\n              disabled\n            />\n          </InputGroup>\n        </Field>\n        <Field data-invalid=\"true\">\n          <FieldLabel htmlFor=\"input-invalid-04\">Invalid</FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-invalid-04\"\n              placeholder=\"This field is invalid\"\n              aria-invalid=\"true\"\n            />\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupWithAddons() {\n  return (\n    <Example title=\"With Addons\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-left-05\">\n            Addon (inline-start)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-left-05\" />\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"SearchIcon\"\n                tabler=\"IconSearch\"\n                hugeicons=\"SearchIcon\"\n                phosphor=\"MagnifyingGlassIcon\"\n                remixicon=\"RiSearchLine\"\n                className=\"text-muted-foreground\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-right-07\">\n            Addon (inline-end)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-right-07\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlaceholder\n                lucide=\"EyeOffIcon\"\n                tabler=\"IconEyeClosed\"\n                hugeicons=\"ViewOffIcon\"\n                phosphor=\"EyeSlashIcon\"\n                remixicon=\"RiEyeOffLine\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-both-09\">\n            Addon (inline-start and inline-end)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-both-09\" />\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"MicIcon\"\n                tabler=\"IconMicrophone\"\n                hugeicons=\"VoiceIcon\"\n                phosphor=\"MicrophoneIcon\"\n                remixicon=\"RiMicLine\"\n                className=\"text-muted-foreground\"\n              />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlaceholder\n                lucide=\"RadioIcon\"\n                tabler=\"IconPlayerRecordFilled\"\n                hugeicons=\"RecordIcon\"\n                phosphor=\"RecordIcon\"\n                remixicon=\"RiRecordCircleLine\"\n                className=\"animate-pulse text-red-500\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-addon-20\">Addon (block-start)</FieldLabel>\n          <InputGroup className=\"h-auto\">\n            <InputGroupInput id=\"input-addon-20\" />\n            <InputGroupAddon align=\"block-start\">\n              <InputGroupText>First Name</InputGroupText>\n              <IconPlaceholder\n                lucide=\"InfoIcon\"\n                tabler=\"IconInfoCircle\"\n                hugeicons=\"AlertCircleIcon\"\n                phosphor=\"InfoIcon\"\n                remixicon=\"RiInformationLine\"\n                className=\"ml-auto text-muted-foreground\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-addon-21\">Addon (block-end)</FieldLabel>\n          <InputGroup className=\"h-auto\">\n            <InputGroupInput id=\"input-addon-21\" />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupText>20/240 characters</InputGroupText>\n              <IconPlaceholder\n                lucide=\"InfoIcon\"\n                tabler=\"IconInfoCircle\"\n                hugeicons=\"AlertCircleIcon\"\n                phosphor=\"InfoIcon\"\n                remixicon=\"RiInformationLine\"\n                className=\"ml-auto text-muted-foreground\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-icon-both-10\">Multiple Icons</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-icon-both-10\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlaceholder\n                lucide=\"StarIcon\"\n                tabler=\"IconStar\"\n                hugeicons=\"StarIcon\"\n                phosphor=\"StarIcon\"\n                remixicon=\"RiStarLine\"\n              />\n              <InputGroupButton\n                size=\"icon-xs\"\n                onClick={() => toast(\"Copied to clipboard\")}\n              >\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n            <InputGroupAddon>\n              <IconPlaceholder\n                lucide=\"RadioIcon\"\n                tabler=\"IconPlayerRecordFilled\"\n                hugeicons=\"RecordIcon\"\n                phosphor=\"RecordIcon\"\n                remixicon=\"RiRecordCircleLine\"\n                className=\"animate-pulse text-red-500\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-description-10\">Description</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-description-10\" />\n            <InputGroupAddon align=\"inline-end\">\n              <IconPlaceholder\n                lucide=\"InfoIcon\"\n                tabler=\"IconInfoCircle\"\n                hugeicons=\"AlertCircleIcon\"\n                phosphor=\"InfoIcon\"\n                remixicon=\"RiInformationLine\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n          <InputGroup>\n            <InputGroupAddon>\n              <FieldLabel htmlFor=\"input-label-10\">Label</FieldLabel>\n            </InputGroupAddon>\n            <InputGroupInput id=\"input-label-10\" />\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-optional-12\" aria-label=\"Optional\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupText>(optional)</InputGroupText>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupWithButtons() {\n  return (\n    <Example title=\"With Buttons\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-button-13\">Button</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-13\" />\n            <InputGroupAddon>\n              <InputGroupButton>Default</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-14\" />\n            <InputGroupAddon>\n              <InputGroupButton variant=\"outline\">Outline</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-15\" />\n            <InputGroupAddon>\n              <InputGroupButton variant=\"secondary\">Secondary</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-16\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton variant=\"secondary\">Button</InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-17\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton size=\"icon-xs\">\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-button-18\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                <IconPlaceholder\n                  lucide=\"TrashIcon\"\n                  tabler=\"IconTrash\"\n                  hugeicons=\"DeleteIcon\"\n                  phosphor=\"TrashIcon\"\n                  remixicon=\"RiDeleteBinLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupWithTooltip({\n  country,\n  setCountry,\n}: {\n  country: string\n  setCountry: (value: string) => void\n}) {\n  return (\n    <Example title=\"With Tooltip, Dropdown, Popover\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-tooltip-20\">Tooltip</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-tooltip-20\" />\n            <InputGroupAddon align=\"inline-end\">\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <InputGroupButton className=\"rounded-full\" size=\"icon-xs\">\n                    <IconPlaceholder\n                      lucide=\"InfoIcon\"\n                      tabler=\"IconInfoCircle\"\n                      hugeicons=\"AlertCircleIcon\"\n                      phosphor=\"InfoIcon\"\n                      remixicon=\"RiInformationLine\"\n                    />\n                  </InputGroupButton>\n                </TooltipTrigger>\n                <TooltipContent>This is content in a tooltip.</TooltipContent>\n              </Tooltip>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-dropdown-21\">Dropdown</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-dropdown-21\" />\n            <InputGroupAddon>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <InputGroupButton className=\"text-muted-foreground tabular-nums\">\n                    {country}{\" \"}\n                    <IconPlaceholder\n                      lucide=\"ChevronDownIcon\"\n                      tabler=\"IconChevronDown\"\n                      hugeicons=\"ArrowDownIcon\"\n                      phosphor=\"CaretDownIcon\"\n                      remixicon=\"RiArrowDownSLine\"\n                    />\n                  </InputGroupButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  align=\"start\"\n                  className=\"min-w-16\"\n                  sideOffset={10}\n                  alignOffset={-8}\n                >\n                  <DropdownMenuItem onClick={() => setCountry(\"+1\")}>\n                    +1\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={() => setCountry(\"+44\")}>\n                    +44\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={() => setCountry(\"+46\")}>\n                    +46\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-secure-19\">Popover</FieldLabel>\n          <InputGroup>\n            <Popover>\n              <PopoverTrigger asChild>\n                <InputGroupAddon>\n                  <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                    <IconPlaceholder\n                      lucide=\"InfoIcon\"\n                      tabler=\"IconInfoCircle\"\n                      hugeicons=\"AlertCircleIcon\"\n                      phosphor=\"InfoIcon\"\n                      remixicon=\"RiInformationLine\"\n                    />\n                  </InputGroupButton>\n                </InputGroupAddon>\n              </PopoverTrigger>\n              <PopoverContent align=\"start\">\n                <PopoverHeader>\n                  <PopoverTitle>Your connection is not secure.</PopoverTitle>\n                  <PopoverDescription>\n                    You should not enter any sensitive information on this site.\n                  </PopoverDescription>\n                </PopoverHeader>\n              </PopoverContent>\n            </Popover>\n            <InputGroupAddon className=\"pl-1 text-muted-foreground\">\n              https://\n            </InputGroupAddon>\n            <InputGroupInput id=\"input-secure-19\" />\n            <InputGroupAddon align=\"inline-end\">\n              <InputGroupButton\n                size=\"icon-xs\"\n                onClick={() => toast(\"Added to favorites\")}\n              >\n                <IconPlaceholder\n                  lucide=\"StarIcon\"\n                  tabler=\"IconStar\"\n                  hugeicons=\"StarIcon\"\n                  phosphor=\"StarIcon\"\n                  remixicon=\"RiStarLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"url\">Button Group</FieldLabel>\n          <ButtonGroup>\n            <ButtonGroupText>https://</ButtonGroupText>\n            <InputGroup>\n              <InputGroupInput id=\"url\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconPlaceholder\n                  lucide=\"InfoIcon\"\n                  tabler=\"IconInfoCircle\"\n                  hugeicons=\"AlertCircleIcon\"\n                  phosphor=\"InfoIcon\"\n                  remixicon=\"RiInformationLine\"\n                />\n              </InputGroupAddon>\n            </InputGroup>\n            <ButtonGroupText>.com</ButtonGroupText>\n          </ButtonGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupWithKbd() {\n  return (\n    <Example title=\"With Kbd\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"input-kbd-22\">Input Group with Kbd</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-kbd-22\" />\n            <InputGroupAddon>\n              <Kbd>⌘K</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput id=\"input-kbd-23\" />\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>⌘K</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-search-apps-24\"\n              placeholder=\"Search for Apps...\"\n            />\n            <InputGroupAddon align=\"inline-end\">Ask AI</InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <Kbd>Tab</Kbd>\n            </InputGroupAddon>\n          </InputGroup>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-search-type-25\"\n              placeholder=\"Type to search...\"\n            />\n            <InputGroupAddon align=\"inline-start\">\n              <IconPlaceholder\n                lucide=\"SparklesIcon\"\n                tabler=\"IconServerSpark\"\n                hugeicons=\"SparklesIcon\"\n                phosphor=\"SparkleIcon\"\n                remixicon=\"RiSparklingLine\"\n              />\n            </InputGroupAddon>\n            <InputGroupAddon align=\"inline-end\">\n              <KbdGroup>\n                <Kbd>Ctrl</Kbd>\n                <Kbd>C</Kbd>\n              </KbdGroup>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"input-username-26\">Username</FieldLabel>\n          <InputGroup>\n            <InputGroupInput id=\"input-username-26\" defaultValue=\"shadcn\" />\n            <InputGroupAddon align=\"inline-end\">\n              <div className=\"flex size-4 items-center justify-center rounded-full bg-green-500 dark:bg-green-800\">\n                <IconPlaceholder\n                  lucide=\"CheckIcon\"\n                  tabler=\"IconCheck\"\n                  hugeicons=\"Tick02Icon\"\n                  phosphor=\"CheckIcon\"\n                  remixicon=\"RiCheckLine\"\n                  className=\"size-3 text-white\"\n                />\n              </div>\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription className=\"text-green-700\">\n            This username is available.\n          </FieldDescription>\n        </Field>\n        <InputGroup>\n          <InputGroupInput\n            id=\"input-search-docs-27\"\n            placeholder=\"Search documentation...\"\n          />\n          <InputGroupAddon>\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"SearchIcon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n        </InputGroup>\n        <InputGroup data-disabled=\"true\">\n          <InputGroupInput\n            id=\"input-search-disabled-28\"\n            placeholder=\"Search documentation...\"\n            disabled\n          />\n          <InputGroupAddon>\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"SearchIcon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">Disabled</InputGroupAddon>\n        </InputGroup>\n        <FieldGroup className=\"grid grid-cols-2 gap-4\">\n          <Field>\n            <FieldLabel htmlFor=\"input-group-11\">First Name</FieldLabel>\n            <InputGroup>\n              <InputGroupInput id=\"input-group-11\" placeholder=\"First Name\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconPlaceholder\n                  lucide=\"InfoIcon\"\n                  tabler=\"IconInfoCircle\"\n                  hugeicons=\"AlertCircleIcon\"\n                  phosphor=\"InfoIcon\"\n                  remixicon=\"RiInformationLine\"\n                />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"input-group-12\">Last Name</FieldLabel>\n            <InputGroup>\n              <InputGroupInput id=\"input-group-12\" placeholder=\"Last Name\" />\n              <InputGroupAddon align=\"inline-end\">\n                <IconPlaceholder\n                  lucide=\"InfoIcon\"\n                  tabler=\"IconInfoCircle\"\n                  hugeicons=\"AlertCircleIcon\"\n                  phosphor=\"InfoIcon\"\n                  remixicon=\"RiInformationLine\"\n                />\n              </InputGroupAddon>\n            </InputGroup>\n          </Field>\n        </FieldGroup>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"input-group-29\">\n            Loading (&quot;data-disabled=&quot;true&quot;)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupInput\n              id=\"input-group-29\"\n              disabled\n              defaultValue=\"shadcn\"\n            />\n            <InputGroupAddon align=\"inline-end\">\n              <Spinner />\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n\nfunction InputGroupInCard() {\n  return (\n    <Example title=\"In Card\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <CardTitle>Card with Input Group</CardTitle>\n          <CardDescription>This is a card with an input group.</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"email-input\">Email Address</FieldLabel>\n              <InputGroup>\n                <InputGroupInput\n                  id=\"email-input\"\n                  type=\"email\"\n                  placeholder=\"you@example.com\"\n                />\n                <InputGroupAddon align=\"inline-end\">\n                  <IconPlaceholder\n                    lucide=\"MailIcon\"\n                    tabler=\"IconMail\"\n                    hugeicons=\"MailIcon\"\n                    phosphor=\"EnvelopeIcon\"\n                    remixicon=\"RiMailLine\"\n                  />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"website-input\">Website URL</FieldLabel>\n              <InputGroup>\n                <InputGroupAddon>\n                  <InputGroupText>https://</InputGroupText>\n                </InputGroupAddon>\n                <InputGroupInput id=\"website-input\" placeholder=\"example.com\" />\n                <InputGroupAddon align=\"inline-end\">\n                  <IconPlaceholder\n                    lucide=\"ExternalLinkIcon\"\n                    tabler=\"IconExternalLink\"\n                    hugeicons=\"LinkSquare02Icon\"\n                    phosphor=\"ArrowSquareOutIcon\"\n                    remixicon=\"RiExternalLinkLine\"\n                  />\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"feedback-textarea\">\n                Feedback & Comments\n              </FieldLabel>\n              <InputGroup>\n                <InputGroupTextarea\n                  id=\"feedback-textarea\"\n                  placeholder=\"Share your thoughts...\"\n                  className=\"min-h-[100px]\"\n                />\n                <InputGroupAddon align=\"block-end\">\n                  <InputGroupText>0/500 characters</InputGroupText>\n                </InputGroupAddon>\n              </InputGroup>\n            </Field>\n          </FieldGroup>\n        </CardContent>\n        <CardFooter className=\"justify-end gap-2\">\n          <Button variant=\"outline\">Cancel</Button>\n          <Button>Submit</Button>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n\nfunction InputGroupTextareaExamples() {\n  return (\n    <Example title=\"Textarea\">\n      <FieldGroup>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-12\">\n            Default Textarea (No Input Group)\n          </FieldLabel>\n          <Textarea\n            id=\"textarea-header-footer-12\"\n            placeholder=\"Enter your text here...\"\n          />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-13\">\n            Input Group\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-13\"\n              placeholder=\"Enter your text here...\"\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field data-invalid=\"true\">\n          <FieldLabel htmlFor=\"textarea-header-footer-14\">Invalid</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-14\"\n              placeholder=\"Enter your text here...\"\n              aria-invalid=\"true\"\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field data-disabled=\"true\">\n          <FieldLabel htmlFor=\"textarea-header-footer-15\">Disabled</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-15\"\n              placeholder=\"Enter your text here...\"\n              disabled\n            />\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"prompt-31\">Addon (block-start)</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea id=\"prompt-31\" />\n            <InputGroupAddon align=\"block-start\">\n              <InputGroupText>Ask, Search or Chat...</InputGroupText>\n              <IconPlaceholder\n                lucide=\"InfoIcon\"\n                tabler=\"IconInfoCircle\"\n                hugeicons=\"AlertCircleIcon\"\n                phosphor=\"InfoIcon\"\n                remixicon=\"RiInformationLine\"\n                className=\"ml-auto text-muted-foreground\"\n              />\n            </InputGroupAddon>\n          </InputGroup>\n          <FieldDescription>\n            This is a description of the input group.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-header-footer-30\">\n            Addon (block-end)\n          </FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-header-footer-30\"\n              placeholder=\"Enter your text here...\"\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupText>0/280 characters</InputGroupText>\n              <InputGroupButton\n                variant=\"default\"\n                size=\"icon-xs\"\n                className=\"ml-auto rounded-full\"\n              >\n                <IconPlaceholder\n                  lucide=\"ArrowUpIcon\"\n                  tabler=\"IconArrowUp\"\n                  hugeicons=\"ArrowUpIcon\"\n                  phosphor=\"ArrowUpIcon\"\n                  remixicon=\"RiArrowUpLine\"\n                />\n                <span className=\"sr-only\">Send</span>\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-comment-31\">Addon (Buttons)</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-comment-31\"\n              placeholder=\"Share your thoughts...\"\n              className=\"min-h-[120px]\"\n            />\n            <InputGroupAddon align=\"block-end\">\n              <InputGroupButton variant=\"ghost\" className=\"ml-auto\" size=\"sm\">\n                Cancel\n              </InputGroupButton>\n              <InputGroupButton variant=\"default\" size=\"sm\">\n                Post Comment\n              </InputGroupButton>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"textarea-code-32\">Code Editor</FieldLabel>\n          <InputGroup>\n            <InputGroupTextarea\n              id=\"textarea-code-32\"\n              placeholder=\"console.log('Hello, world!');\"\n              className=\"min-h-[300px] py-3\"\n            />\n            <InputGroupAddon align=\"block-start\" className=\"border-b\">\n              <InputGroupText className=\"font-mono font-medium\">\n                <IconPlaceholder\n                  lucide=\"CodeIcon\"\n                  tabler=\"IconBrandJavascript\"\n                  hugeicons=\"CodeIcon\"\n                  phosphor=\"CodeIcon\"\n                  remixicon=\"RiCodeLine\"\n                />\n                script.js\n              </InputGroupText>\n              <InputGroupButton size=\"icon-xs\" className=\"ml-auto\">\n                <IconPlaceholder\n                  lucide=\"RefreshCwIcon\"\n                  tabler=\"IconRefresh\"\n                  hugeicons=\"RefreshIcon\"\n                  phosphor=\"ArrowClockwiseIcon\"\n                  remixicon=\"RiRefreshLine\"\n                />\n              </InputGroupButton>\n              <InputGroupButton size=\"icon-xs\" variant=\"ghost\">\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n              </InputGroupButton>\n            </InputGroupAddon>\n            <InputGroupAddon align=\"block-end\" className=\"border-t\">\n              <InputGroupText>Line 1, Column 1</InputGroupText>\n              <InputGroupText className=\"ml-auto\">JavaScript</InputGroupText>\n            </InputGroupAddon>\n          </InputGroup>\n        </Field>\n      </FieldGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/input-otp-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from \"input-otp\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/registry/bases/radix/ui/input-otp\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function InputOTPExample() {\n  return (\n    <ExampleWrapper>\n      <InputOTPForm />\n      <InputOTPSimple />\n      <InputOTPPattern />\n      <InputOTPWithSeparator />\n      <InputOTPAlphanumeric />\n      <InputOTPDisabled />\n      <InputOTPFourDigits />\n      <InputOTPInvalid />\n    </ExampleWrapper>\n  )\n}\n\nfunction InputOTPSimple() {\n  return (\n    <Example title=\"Simple\">\n      <Field>\n        <FieldLabel htmlFor=\"simple\">Simple</FieldLabel>\n        <InputOTP id=\"simple\" maxLength={6}>\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={3} />\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPPattern() {\n  return (\n    <Example title=\"Digits Only\">\n      <Field>\n        <FieldLabel htmlFor=\"digits-only\">Digits Only</FieldLabel>\n        <InputOTP id=\"digits-only\" maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n            <InputOTPSlot index={3} />\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPWithSeparator() {\n  const [value, setValue] = React.useState(\"123456\")\n\n  return (\n    <Example title=\"With Separator\">\n      <Field>\n        <FieldLabel htmlFor=\"with-separator\">With Separator</FieldLabel>\n        <InputOTP\n          id=\"with-separator\"\n          maxLength={6}\n          value={value}\n          onChange={setValue}\n        >\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={2} />\n            <InputOTPSlot index={3} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPAlphanumeric() {\n  return (\n    <Example title=\"Alphanumeric\">\n      <Field>\n        <FieldLabel htmlFor=\"alphanumeric\">Alphanumeric</FieldLabel>\n        <FieldDescription>Accepts both letters and numbers.</FieldDescription>\n        <InputOTP\n          id=\"alphanumeric\"\n          maxLength={6}\n          pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\n        >\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={3} />\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field>\n        <FieldLabel htmlFor=\"disabled\">Disabled</FieldLabel>\n        <InputOTP id=\"disabled\" maxLength={6} disabled value=\"123456\">\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={3} />\n            <InputOTPSlot index={4} />\n            <InputOTPSlot index={5} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPFourDigits() {\n  return (\n    <Example title=\"4 Digits\">\n      <Field>\n        <FieldLabel htmlFor=\"four-digits\">4 Digits</FieldLabel>\n        <FieldDescription>Common pattern for PIN codes.</FieldDescription>\n        <InputOTP id=\"four-digits\" maxLength={4} pattern={REGEXP_ONLY_DIGITS}>\n          <InputOTPGroup>\n            <InputOTPSlot index={0} />\n            <InputOTPSlot index={1} />\n            <InputOTPSlot index={2} />\n            <InputOTPSlot index={3} />\n          </InputOTPGroup>\n        </InputOTP>\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPInvalid() {\n  const [value, setValue] = React.useState(\"000000\")\n\n  return (\n    <Example title=\"Invalid State\">\n      <Field>\n        <FieldLabel htmlFor=\"invalid\">Invalid State</FieldLabel>\n        <FieldDescription>\n          Example showing the invalid error state.\n        </FieldDescription>\n        <InputOTP id=\"invalid\" maxLength={6} value={value} onChange={setValue}>\n          <InputOTPGroup>\n            <InputOTPSlot index={0} aria-invalid />\n            <InputOTPSlot index={1} aria-invalid />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={2} aria-invalid />\n            <InputOTPSlot index={3} aria-invalid />\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            <InputOTPSlot index={4} aria-invalid />\n            <InputOTPSlot index={5} aria-invalid />\n          </InputOTPGroup>\n        </InputOTP>\n        <FieldError errors={[{ message: \"Invalid code. Please try again.\" }]} />\n      </Field>\n    </Example>\n  )\n}\n\nfunction InputOTPForm() {\n  return (\n    <Example title=\"Form\">\n      <Card className=\"mx-auto max-w-md\">\n        <CardHeader>\n          <CardTitle>Verify your login</CardTitle>\n          <CardDescription>\n            Enter the verification code we sent to your email address:{\" \"}\n            <span className=\"font-medium\">m@example.com</span>.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <Field>\n              <div className=\"flex items-center justify-between\">\n                <FieldLabel htmlFor=\"otp-verification\">\n                  Verification code\n                </FieldLabel>\n                <Button variant=\"outline\" size=\"xs\">\n                  <IconPlaceholder\n                    lucide=\"RefreshCwIcon\"\n                    hugeicons=\"RefreshIcon\"\n                    tabler=\"IconRefresh\"\n                    phosphor=\"ArrowClockwiseIcon\"\n                    remixicon=\"RiRefreshLine\"\n                    data-icon=\"inline-start\"\n                  />\n                  Resend Code\n                </Button>\n              </div>\n              <InputOTP maxLength={6} id=\"otp-verification\" required>\n                <InputOTPGroup className=\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\">\n                  <InputOTPSlot index={0} />\n                  <InputOTPSlot index={1} />\n                  <InputOTPSlot index={2} />\n                </InputOTPGroup>\n                <InputOTPSeparator />\n                <InputOTPGroup className=\"*:data-[slot=input-otp-slot]:text-xl style-vega:*:data-[slot=input-otp-slot]:h-16 style-vega:*:data-[slot=input-otp-slot]:w-12 style-nova:*:data-[slot=input-otp-slot]:h-12 style-nova:*:data-[slot=input-otp-slot]:w-11 style-lyra:*:data-[slot=input-otp-slot]:h-12 style-lyra:*:data-[slot=input-otp-slot]:w-11 style-maia:*:data-[slot=input-otp-slot]:h-16 style-maia:*:data-[slot=input-otp-slot]:w-12 style-mira:*:data-[slot=input-otp-slot]:h-12 style-mira:*:data-[slot=input-otp-slot]:w-11\">\n                  <InputOTPSlot index={3} />\n                  <InputOTPSlot index={4} />\n                  <InputOTPSlot index={5} />\n                </InputOTPGroup>\n              </InputOTP>\n              <FieldDescription>\n                <a href=\"#\">I no longer have access to this email address.</a>\n              </FieldDescription>\n            </Field>\n          </form>\n        </CardContent>\n        <CardFooter className=\"flex-col gap-2\">\n          <Button type=\"submit\" className=\"w-full\">\n            Verify\n          </Button>\n          <div className=\"text-sm text-muted-foreground\">\n            Having trouble signing in?{\" \"}\n            <a\n              href=\"#\"\n              className=\"underline underline-offset-4 transition-colors hover:text-primary\"\n            >\n              Contact support\n            </a>\n          </div>\n        </CardFooter>\n      </Card>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/item-example.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemFooter,\n  ItemGroup,\n  ItemHeader,\n  ItemMedia,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ItemExample() {\n  return (\n    <ExampleWrapper>\n      <DefaultVariantItems />\n      <OutlineVariantItems />\n      <MutedVariantItems />\n      <DefaultVariantItemsSmall />\n      <OutlineVariantItemsSmall />\n      <MutedVariantItemsSmall />\n      <DefaultVariantItemsExtraSmall />\n      <OutlineVariantItemsExtraSmall />\n      <MutedVariantItemsExtraSmall />\n      <DefaultLinkItems />\n      <OutlineLinkItems />\n      <MutedLinkItems />\n      <DefaultItemGroup />\n      <OutlineItemGroup />\n      <MutedItemGroup />\n      <ItemSeparatorExample />\n      <ItemHeaderExamples />\n      <ItemFooterExamples />\n      <ItemHeaderAndFooterExamples />\n      <DefaultVariantItemsWithImage />\n      <OutlineVariantItemsWithImage />\n      <OutlineVariantItemsWithImageSmall />\n      <OutlineVariantItemsWithImageExtraSmall />\n      <MutedVariantItemsWithImage />\n    </ExampleWrapper>\n  )\n}\n\nfunction DefaultVariantItems() {\n  return (\n    <Example title=\"Default\">\n      <Item>\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItems() {\n  return (\n    <Example title=\"Outline\">\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction MutedVariantItems() {\n  return (\n    <Example title=\"Muted\">\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction DefaultVariantItemsSmall() {\n  return (\n    <Example title=\"Small\">\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsSmall() {\n  return (\n    <Example title=\"Outline - Small\">\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction MutedVariantItemsSmall() {\n  return (\n    <Example title=\"Muted - Small\">\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n          <ItemDescription>\n            This is a description that provides additional context.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            This item includes a title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n          <ItemDescription>\n            This item includes media, title, and description.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n          <ItemDescription>\n            Complete item with all components: media, title, description, and\n            button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"sm\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n          <ItemDescription>\n            Item with multiple action buttons in the actions area.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction DefaultVariantItemsExtraSmall() {\n  return (\n    <Example title=\"Extra Small\">\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsExtraSmall() {\n  return (\n    <Example title=\"Outline - Extra Small\">\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction MutedVariantItemsExtraSmall() {\n  return (\n    <Example title=\"Muted - Extra Small\">\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title Only</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Title + Description + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemMedia variant=\"icon\">\n          <IconPlaceholder\n            lucide=\"InboxIcon\"\n            tabler=\"IconArchive\"\n            hugeicons=\"Archive02Icon\"\n            phosphor=\"ArchiveIcon\"\n            remixicon=\"RiArchiveLine\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Media + Title + Description + Button</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Action</Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\" size=\"xs\">\n        <ItemContent>\n          <ItemTitle>Multiple Actions</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n          <Button size=\"sm\">Confirm</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction DefaultLinkItems() {\n  return (\n    <Example title=\"asChild\">\n      <ItemGroup>\n        <Item asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>Title Only (Link)</ItemTitle>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>Title + Description (Link)</ItemTitle>\n              <ItemDescription>\n                Clickable item with title and description.\n              </ItemDescription>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item asChild>\n          <a href=\"#\">\n            <ItemMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"InboxIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"TrayIcon\"\n                remixicon=\"RiInboxLine\"\n              />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Media + Title (Link)</ItemTitle>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item asChild>\n          <a href=\"#\">\n            <ItemMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"InboxIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"TrayIcon\"\n                remixicon=\"RiInboxLine\"\n              />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\n              <ItemDescription>\n                Complete link item with media, title, and description.\n              </ItemDescription>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>With Actions (Link)</ItemTitle>\n              <ItemDescription>\n                Link item that also has action buttons.\n              </ItemDescription>\n            </ItemContent>\n            <ItemActions>\n              <Button variant=\"outline\" size=\"sm\">\n                Share\n              </Button>\n            </ItemActions>\n          </a>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction OutlineLinkItems() {\n  return (\n    <Example title=\"Outline - asChild\">\n      <ItemGroup>\n        <Item variant=\"outline\" asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>Title Only (Link)</ItemTitle>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item variant=\"outline\" asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>Title + Description (Link)</ItemTitle>\n              <ItemDescription>\n                Clickable item with title and description.\n              </ItemDescription>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item variant=\"outline\" asChild>\n          <a href=\"#\">\n            <ItemMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"InboxIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"TrayIcon\"\n                remixicon=\"RiInboxLine\"\n              />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Media + Title (Link)</ItemTitle>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item variant=\"outline\" asChild>\n          <a href=\"#\">\n            <ItemMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"InboxIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"TrayIcon\"\n                remixicon=\"RiInboxLine\"\n              />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\n              <ItemDescription>\n                Complete link item with media, title, and description.\n              </ItemDescription>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item variant=\"outline\" asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>With Actions (Link)</ItemTitle>\n              <ItemDescription>\n                Link item that also has action buttons.\n              </ItemDescription>\n            </ItemContent>\n            <ItemActions>\n              <Button variant=\"outline\" size=\"sm\">\n                Share\n              </Button>\n            </ItemActions>\n          </a>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction MutedLinkItems() {\n  return (\n    <Example title=\"Muted - asChild\">\n      <ItemGroup>\n        <Item variant=\"muted\" asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>Title Only (Link)</ItemTitle>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item variant=\"muted\" asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>Title + Description (Link)</ItemTitle>\n              <ItemDescription>\n                Clickable item with title and description.\n              </ItemDescription>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item variant=\"muted\" asChild>\n          <a href=\"#\">\n            <ItemMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"InboxIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"TrayIcon\"\n                remixicon=\"RiInboxLine\"\n              />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Media + Title (Link)</ItemTitle>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item variant=\"muted\" asChild>\n          <a href=\"#\">\n            <ItemMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"InboxIcon\"\n                tabler=\"IconArchive\"\n                hugeicons=\"Archive02Icon\"\n                phosphor=\"TrayIcon\"\n                remixicon=\"RiInboxLine\"\n              />\n            </ItemMedia>\n            <ItemContent>\n              <ItemTitle>Media + Title + Description (Link)</ItemTitle>\n              <ItemDescription>\n                Complete link item with media, title, and description.\n              </ItemDescription>\n            </ItemContent>\n          </a>\n        </Item>\n        <Item variant=\"muted\" asChild>\n          <a href=\"#\">\n            <ItemContent>\n              <ItemTitle>With Actions (Link)</ItemTitle>\n              <ItemDescription>\n                Link item that also has action buttons.\n              </ItemDescription>\n            </ItemContent>\n            <ItemActions>\n              <Button variant=\"outline\" size=\"sm\">\n                Share\n              </Button>\n            </ItemActions>\n          </a>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction DefaultItemGroup() {\n  return (\n    <Example title=\"ItemGroup\">\n      <ItemGroup>\n        <Item>\n          <ItemContent>\n            <ItemTitle>Item 1</ItemTitle>\n            <ItemDescription>First item in the group.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item>\n          <ItemContent>\n            <ItemTitle>Item 2</ItemTitle>\n            <ItemDescription>Second item in the group.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item>\n          <ItemContent>\n            <ItemTitle>Item 3</ItemTitle>\n            <ItemDescription>Third item in the group.</ItemDescription>\n          </ItemContent>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction OutlineItemGroup() {\n  return (\n    <Example title=\"Outline - ItemGroup\">\n      <ItemGroup>\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"TrayIcon\"\n              remixicon=\"RiInboxLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Item 1</ItemTitle>\n            <ItemDescription>First item with icon.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"TrayIcon\"\n              remixicon=\"RiInboxLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Item 2</ItemTitle>\n            <ItemDescription>Second item with icon.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"TrayIcon\"\n              remixicon=\"RiInboxLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Item 3</ItemTitle>\n            <ItemDescription>Third item with icon.</ItemDescription>\n          </ItemContent>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction MutedItemGroup() {\n  return (\n    <Example title=\"Muted - ItemGroup\">\n      <ItemGroup>\n        <Item variant=\"muted\">\n          <ItemContent>\n            <ItemTitle>Item 1</ItemTitle>\n            <ItemDescription>First item in muted group.</ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Action\n            </Button>\n          </ItemActions>\n        </Item>\n        <Item variant=\"muted\">\n          <ItemContent>\n            <ItemTitle>Item 2</ItemTitle>\n            <ItemDescription>Second item in muted group.</ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Action\n            </Button>\n          </ItemActions>\n        </Item>\n        <Item variant=\"muted\">\n          <ItemContent>\n            <ItemTitle>Item 3</ItemTitle>\n            <ItemDescription>Third item in muted group.</ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <Button variant=\"outline\" size=\"sm\">\n              Action\n            </Button>\n          </ItemActions>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction ItemSeparatorExample() {\n  return (\n    <Example title=\"ItemSeparator\">\n      <ItemGroup>\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"TrayIcon\"\n              remixicon=\"RiInboxLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Inbox</ItemTitle>\n            <ItemDescription>View all incoming messages.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <ItemSeparator />\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"TrayIcon\"\n              remixicon=\"RiInboxLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Sent</ItemTitle>\n            <ItemDescription>View all sent messages.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <ItemSeparator />\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"TrayIcon\"\n              remixicon=\"RiInboxLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Drafts</ItemTitle>\n            <ItemDescription>View all draft messages.</ItemDescription>\n          </ItemContent>\n        </Item>\n        <ItemSeparator />\n        <Item variant=\"outline\">\n          <ItemMedia variant=\"icon\">\n            <IconPlaceholder\n              lucide=\"InboxIcon\"\n              tabler=\"IconArchive\"\n              hugeicons=\"Archive02Icon\"\n              phosphor=\"TrayIcon\"\n              remixicon=\"RiInboxLine\"\n            />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Archive</ItemTitle>\n            <ItemDescription>View archived messages.</ItemDescription>\n          </ItemContent>\n        </Item>\n      </ItemGroup>\n    </Example>\n  )\n}\n\nfunction ItemHeaderExamples() {\n  return (\n    <Example title=\"ItemHeader\">\n      <Item>\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Design System</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>Component Library</ItemTitle>\n          <ItemDescription>\n            A comprehensive collection of reusable UI components for building\n            consistent interfaces.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Marketing</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>Campaign Analytics</ItemTitle>\n          <ItemDescription>\n            Track performance metrics and engagement rates across all marketing\n            channels.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Engineering</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>API Documentation</ItemTitle>\n          <ItemDescription>\n            Complete reference guide for all available endpoints and\n            authentication methods.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n    </Example>\n  )\n}\n\nfunction ItemFooterExamples() {\n  return (\n    <Example title=\"ItemFooter\">\n      <Item>\n        <ItemContent>\n          <ItemTitle>Quarterly Report Q4 2024</ItemTitle>\n          <ItemDescription>\n            Financial overview including revenue, expenses, and growth metrics\n            for the fourth quarter.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Last updated 2 hours ago\n          </span>\n        </ItemFooter>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>User Research Findings</ItemTitle>\n          <ItemDescription>\n            Insights from interviews and surveys conducted with 50+ users across\n            different demographics.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Created by Sarah Chen\n          </span>\n        </ItemFooter>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Product Roadmap</ItemTitle>\n          <ItemDescription>\n            Planned features and improvements scheduled for the next three\n            months.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">12 comments</span>\n        </ItemFooter>\n      </Item>\n    </Example>\n  )\n}\n\nfunction ItemHeaderAndFooterExamples() {\n  return (\n    <Example title=\"ItemHeader + ItemFooter\">\n      <Item>\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Team Project</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>Website Redesign</ItemTitle>\n          <ItemDescription>\n            Complete overhaul of the company website with modern design\n            principles and improved user experience.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Updated 5 minutes ago\n          </span>\n        </ItemFooter>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Client Work</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>Mobile App Development</ItemTitle>\n          <ItemDescription>\n            Building a cross-platform mobile application for iOS and Android\n            with React Native.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Status: In Progress\n          </span>\n        </ItemFooter>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemHeader>\n          <span className=\"text-sm font-medium\">Documentation</span>\n        </ItemHeader>\n        <ItemContent>\n          <ItemTitle>API Integration Guide</ItemTitle>\n          <ItemDescription>\n            Step-by-step instructions for integrating third-party APIs with\n            authentication and error handling.\n          </ItemDescription>\n        </ItemContent>\n        <ItemFooter>\n          <span className=\"text-sm text-muted-foreground\">\n            Category: Technical • 3 attachments\n          </span>\n        </ItemFooter>\n      </Item>\n    </Example>\n  )\n}\n\nfunction DefaultVariantItemsWithImage() {\n  return (\n    <Example title=\"Default - ItemMedia image\">\n      <Item>\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n          <ItemDescription>\n            Overview of project settings and configuration.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item>\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n          <ItemDescription>\n            Complete file with image, title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsWithImage() {\n  return (\n    <Example title=\"Outline - ItemMedia image\">\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n          <ItemDescription>\n            Overview of project settings and configuration.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n          <ItemDescription>\n            Complete file with image, title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsWithImageSmall() {\n  return (\n    <Example title=\"Outline - ItemMedia image - Small\">\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n          <ItemDescription>\n            Overview of project settings and configuration.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n          <ItemDescription>\n            Complete file with image, title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction OutlineVariantItemsWithImageExtraSmall() {\n  return (\n    <Example title=\"Outline - ItemMedia image - Extra Small\">\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n        </ItemContent>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"xs\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n\nfunction MutedVariantItemsWithImage() {\n  return (\n    <Example title=\"Muted - ItemMedia image\">\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Project\"\n            alt=\"Project\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Project Dashboard</ItemTitle>\n          <ItemDescription>\n            Overview of project settings and configuration.\n          </ItemDescription>\n        </ItemContent>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/Document\"\n            alt=\"Document\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Document</ItemTitle>\n          <ItemDescription>A document with metadata displayed.</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            View\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemMedia variant=\"image\">\n          <Image\n            src=\"https://avatar.vercel.sh/File\"\n            alt=\"File\"\n            width={40}\n            height={40}\n            className=\"object-cover grayscale\"\n          />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>File Attachment</ItemTitle>\n          <ItemDescription>\n            Complete file with image, title, description, and action button.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\">Download</Button>\n        </ItemActions>\n      </Item>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/kbd-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/registry/bases/radix/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/radix/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function KbdExample() {\n  return (\n    <ExampleWrapper>\n      <KbdBasic />\n      <KbdModifierKeys />\n      <KbdGroupExample />\n      <KbdArrowKeys />\n      <KbdWithIcons />\n      <KbdWithIconsAndText />\n      <KbdInInputGroup />\n      <KbdInTooltip />\n      <KbdWithSamp />\n    </ExampleWrapper>\n  )\n}\n\nfunction KbdBasic() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex items-center gap-2\">\n        <Kbd>Ctrl</Kbd>\n        <Kbd>⌘K</Kbd>\n        <Kbd>Ctrl + B</Kbd>\n      </div>\n    </Example>\n  )\n}\n\nfunction KbdModifierKeys() {\n  return (\n    <Example title=\"Modifier Keys\">\n      <div className=\"flex items-center gap-2\">\n        <Kbd>⌘</Kbd>\n        <Kbd>C</Kbd>\n      </div>\n    </Example>\n  )\n}\n\nfunction KbdGroupExample() {\n  return (\n    <Example title=\"KbdGroup\">\n      <KbdGroup>\n        <Kbd>Ctrl</Kbd>\n        <Kbd>Shift</Kbd>\n        <Kbd>P</Kbd>\n      </KbdGroup>\n    </Example>\n  )\n}\n\nfunction KbdArrowKeys() {\n  return (\n    <Example title=\"Arrow Keys\">\n      <div className=\"flex items-center gap-2\">\n        <Kbd>↑</Kbd>\n        <Kbd>↓</Kbd>\n        <Kbd>←</Kbd>\n        <Kbd>→</Kbd>\n      </div>\n    </Example>\n  )\n}\n\nfunction KbdWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <KbdGroup>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"CircleDashedIcon\"\n            tabler=\"IconCircleDashed\"\n            hugeicons=\"DashedLineCircleIcon\"\n            phosphor=\"CircleDashedIcon\"\n            remixicon=\"RiLoaderLine\"\n          />\n        </Kbd>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"ArrowLeftIcon\"\n            tabler=\"IconArrowLeft\"\n            hugeicons=\"ArrowLeft01Icon\"\n            phosphor=\"ArrowLeftIcon\"\n            remixicon=\"RiArrowLeftLine\"\n          />\n        </Kbd>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"ArrowRightIcon\"\n            tabler=\"IconArrowRight\"\n            hugeicons=\"ArrowRight01Icon\"\n            phosphor=\"ArrowRightIcon\"\n            remixicon=\"RiArrowRightLine\"\n          />\n        </Kbd>\n      </KbdGroup>\n    </Example>\n  )\n}\n\nfunction KbdWithIconsAndText() {\n  return (\n    <Example title=\"With Icons and Text\">\n      <KbdGroup>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"ArrowLeftIcon\"\n            tabler=\"IconArrowLeft\"\n            hugeicons=\"ArrowLeft01Icon\"\n            phosphor=\"ArrowLeftIcon\"\n            remixicon=\"RiArrowLeftLine\"\n          />\n          Left\n        </Kbd>\n        <Kbd>\n          <IconPlaceholder\n            lucide=\"CircleDashedIcon\"\n            tabler=\"IconCircleDashed\"\n            hugeicons=\"DashedLineCircleIcon\"\n            phosphor=\"CircleDashedIcon\"\n            remixicon=\"RiLoaderLine\"\n          />\n          Voice Enabled\n        </Kbd>\n      </KbdGroup>\n    </Example>\n  )\n}\n\nfunction KbdInInputGroup() {\n  return (\n    <Example title=\"InputGroup\">\n      <InputGroup>\n        <InputGroupInput />\n        <InputGroupAddon>\n          <Kbd>Space</Kbd>\n        </InputGroupAddon>\n      </InputGroup>\n    </Example>\n  )\n}\n\nfunction KbdInTooltip() {\n  return (\n    <Example title=\"Tooltip\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Button size=\"icon-sm\" variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"SaveIcon\"\n              tabler=\"IconDeviceFloppy\"\n              hugeicons=\"FloppyDiskIcon\"\n              phosphor=\"FloppyDiskIcon\"\n              remixicon=\"RiSaveLine\"\n            />\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent className=\"pr-1.5\">\n          <div className=\"flex items-center gap-2\">\n            Save Changes <Kbd>S</Kbd>\n          </div>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction KbdWithSamp() {\n  return (\n    <Example title=\"With samp\">\n      <Kbd>\n        <samp>File</samp>\n      </Kbd>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/label-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Checkbox } from \"@/registry/bases/radix/ui/checkbox\"\nimport { Field } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\n\nexport default function LabelExample() {\n  return (\n    <ExampleWrapper>\n      <LabelWithCheckbox />\n      <LabelWithInput />\n      <LabelDisabled />\n      <LabelWithTextarea />\n    </ExampleWrapper>\n  )\n}\n\nfunction LabelWithCheckbox() {\n  return (\n    <Example title=\"With Checkbox\">\n      <Field orientation=\"horizontal\">\n        <Checkbox id=\"label-demo-terms\" />\n        <Label htmlFor=\"label-demo-terms\">Accept terms and conditions</Label>\n      </Field>\n    </Example>\n  )\n}\n\nfunction LabelWithInput() {\n  return (\n    <Example title=\"With Input\">\n      <Field>\n        <Label htmlFor=\"label-demo-username\">Username</Label>\n        <Input id=\"label-demo-username\" placeholder=\"Username\" />\n      </Field>\n    </Example>\n  )\n}\n\nfunction LabelDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field data-disabled={true}>\n        <Label htmlFor=\"label-demo-disabled\">Disabled</Label>\n        <Input id=\"label-demo-disabled\" placeholder=\"Disabled\" disabled />\n      </Field>\n    </Example>\n  )\n}\n\nfunction LabelWithTextarea() {\n  return (\n    <Example title=\"With Textarea\">\n      <Field>\n        <Label htmlFor=\"label-demo-message\">Message</Label>\n        <Textarea id=\"label-demo-message\" placeholder=\"Message\" />\n      </Field>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/menubar-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarGroup,\n  MenubarItem,\n  MenubarLabel,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/registry/bases/radix/ui/menubar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function MenubarExample() {\n  return (\n    <ExampleWrapper>\n      <MenubarBasic />\n      <MenubarWithSubmenu />\n      <MenubarWithCheckboxes />\n      <MenubarWithRadio />\n      <MenubarWithIcons />\n      <MenubarWithShortcuts />\n      <MenubarFormat />\n      <MenubarInsert />\n      <MenubarDestructive />\n      <MenubarInDialog />\n      <MenubarWithInset />\n    </ExampleWrapper>\n  )\n}\n\nfunction MenubarBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem disabled>New Incognito Window</MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem>\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Edit</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem>Cut</MenubarItem>\n              <MenubarItem>Copy</MenubarItem>\n              <MenubarItem>Paste</MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithSubmenu() {\n  return (\n    <Example title=\"With Submenu\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent>\n            <MenubarSub>\n              <MenubarSubTrigger>Share</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Email link</MenubarItem>\n                  <MenubarItem>Messages</MenubarItem>\n                  <MenubarItem>Notes</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem>\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Edit</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarSub>\n              <MenubarSubTrigger>Find</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Find...</MenubarItem>\n                  <MenubarItem>Find Next</MenubarItem>\n                  <MenubarItem>Find Previous</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem>Cut</MenubarItem>\n              <MenubarItem>Copy</MenubarItem>\n              <MenubarItem>Paste</MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithCheckboxes() {\n  return (\n    <Example title=\"With Checkboxes\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>View</MenubarTrigger>\n          <MenubarContent className=\"w-64\">\n            <MenubarGroup>\n              <MenubarCheckboxItem>\n                Always Show Bookmarks Bar\n              </MenubarCheckboxItem>\n              <MenubarCheckboxItem checked>\n                Always Show Full URLs\n              </MenubarCheckboxItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem inset>\n                Reload <MenubarShortcut>⌘R</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem disabled inset>\n                Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Format</MenubarTrigger>\n          <MenubarContent>\n            <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\n            <MenubarCheckboxItem>Code</MenubarCheckboxItem>\n            <MenubarCheckboxItem>Superscript</MenubarCheckboxItem>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithRadio() {\n  const [user, setUser] = React.useState(\"benoit\")\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Example title=\"With Radio\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>Profiles</MenubarTrigger>\n          <MenubarContent>\n            <MenubarRadioGroup value={user} onValueChange={setUser}>\n              <MenubarRadioItem value=\"andy\">Andy</MenubarRadioItem>\n              <MenubarRadioItem value=\"benoit\">Benoit</MenubarRadioItem>\n              <MenubarRadioItem value=\"luis\">Luis</MenubarRadioItem>\n            </MenubarRadioGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem inset>Edit...</MenubarItem>\n              <MenubarItem inset>Add Profile...</MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Theme</MenubarTrigger>\n          <MenubarContent>\n            <MenubarRadioGroup value={theme} onValueChange={setTheme}>\n              <MenubarRadioItem value=\"light\">Light</MenubarRadioItem>\n              <MenubarRadioItem value=\"dark\">Dark</MenubarRadioItem>\n              <MenubarRadioItem value=\"system\">System</MenubarRadioItem>\n            </MenubarRadioGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"FileIcon\"\n                  tabler=\"IconFile\"\n                  hugeicons=\"FileIcon\"\n                  phosphor=\"FileIcon\"\n                  remixicon=\"RiFileLine\"\n                />\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"FolderIcon\"\n                  tabler=\"IconFolder\"\n                  hugeicons=\"FolderIcon\"\n                  phosphor=\"FolderIcon\"\n                  remixicon=\"RiFolderLine\"\n                />\n                Open Folder\n              </MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"SaveIcon\"\n                  tabler=\"IconDeviceFloppy\"\n                  hugeicons=\"FloppyDiskIcon\"\n                  phosphor=\"FloppyDiskIcon\"\n                  remixicon=\"RiSaveLine\"\n                />\n                Save <MenubarShortcut>⌘S</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>More</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"CircleDashedIcon\"\n                  tabler=\"IconCircleDashed\"\n                  hugeicons=\"DashedLineCircleIcon\"\n                  phosphor=\"CircleDashedIcon\"\n                  remixicon=\"RiLoaderLine\"\n                />\n                Settings\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"CircleDashedIcon\"\n                  tabler=\"IconCircleDashed\"\n                  hugeicons=\"DashedLineCircleIcon\"\n                  phosphor=\"CircleDashedIcon\"\n                  remixicon=\"RiLoaderLine\"\n                />\n                Help\n              </MenubarItem>\n              <MenubarSeparator />\n              <MenubarItem variant=\"destructive\">\n                <IconPlaceholder\n                  lucide=\"CircleDashedIcon\"\n                  tabler=\"IconCircleDashed\"\n                  hugeicons=\"DashedLineCircleIcon\"\n                  phosphor=\"CircleDashedIcon\"\n                  remixicon=\"RiLoaderLine\"\n                />\n                Delete\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarWithShortcuts() {\n  return (\n    <Example title=\"With Shortcuts\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                New Window <MenubarShortcut>⌘N</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                Print... <MenubarShortcut>⌘P</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Edit</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem>\n                Cut <MenubarShortcut>⌘X</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                Copy <MenubarShortcut>⌘C</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                Paste <MenubarShortcut>⌘V</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarFormat() {\n  return (\n    <Example title=\"Format\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>Format</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"BoldIcon\"\n                  tabler=\"IconBold\"\n                  hugeicons=\"TextBoldIcon\"\n                  phosphor=\"TextBIcon\"\n                  remixicon=\"RiBold\"\n                />\n                Bold <MenubarShortcut>⌘B</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"ItalicIcon\"\n                  tabler=\"IconItalic\"\n                  hugeicons=\"TextItalicIcon\"\n                  phosphor=\"TextItalicIcon\"\n                  remixicon=\"RiItalic\"\n                />\n                Italic <MenubarShortcut>⌘I</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"UnderlineIcon\"\n                  tabler=\"IconUnderline\"\n                  hugeicons=\"TextUnderlineIcon\"\n                  phosphor=\"TextUnderlineIcon\"\n                  remixicon=\"RiUnderline\"\n                />\n                Underline <MenubarShortcut>⌘U</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarCheckboxItem checked>Strikethrough</MenubarCheckboxItem>\n              <MenubarCheckboxItem>Code</MenubarCheckboxItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>View</MenubarTrigger>\n          <MenubarContent>\n            <MenubarCheckboxItem>Show Ruler</MenubarCheckboxItem>\n            <MenubarCheckboxItem checked>Show Grid</MenubarCheckboxItem>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem inset>Zoom In</MenubarItem>\n              <MenubarItem inset>Zoom Out</MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarInsert() {\n  return (\n    <Example title=\"Insert\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>Insert</MenubarTrigger>\n          <MenubarContent>\n            <MenubarSub>\n              <MenubarSubTrigger>\n                <IconPlaceholder\n                  lucide=\"ImageIcon\"\n                  tabler=\"IconPhoto\"\n                  hugeicons=\"ImageIcon\"\n                  phosphor=\"ImageIcon\"\n                  remixicon=\"RiImageLine\"\n                />\n                Media\n              </MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Image</MenubarItem>\n                  <MenubarItem>Video</MenubarItem>\n                  <MenubarItem>Audio</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"LinkIcon\"\n                  tabler=\"IconLink\"\n                  hugeicons=\"LinkIcon\"\n                  phosphor=\"LinkIcon\"\n                  remixicon=\"RiLinksLine\"\n                />\n                Link <MenubarShortcut>⌘K</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"TableIcon\"\n                  tabler=\"IconTable\"\n                  hugeicons=\"TableIcon\"\n                  phosphor=\"TableIcon\"\n                  remixicon=\"RiTableLine\"\n                />\n                Table\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Tools</MenubarTrigger>\n          <MenubarContent className=\"w-44\">\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"SearchIcon\"\n                  tabler=\"IconSearch\"\n                  hugeicons=\"SearchIcon\"\n                  phosphor=\"MagnifyingGlassIcon\"\n                  remixicon=\"RiSearchLine\"\n                />\n                Find & Replace <MenubarShortcut>⌘F</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"CheckIcon\"\n                  tabler=\"IconCheck\"\n                  hugeicons=\"Tick02Icon\"\n                  phosphor=\"CheckIcon\"\n                  remixicon=\"RiCheckLine\"\n                />\n                Spell Check\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarDestructive() {\n  return (\n    <Example title=\"Destructive\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>File</MenubarTrigger>\n          <MenubarContent className=\"w-40\">\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"FileIcon\"\n                  tabler=\"IconFile\"\n                  hugeicons=\"FileIcon\"\n                  phosphor=\"FileIcon\"\n                  remixicon=\"RiFileLine\"\n                />\n                New File <MenubarShortcut>⌘N</MenubarShortcut>\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"FolderIcon\"\n                  tabler=\"IconFolder\"\n                  hugeicons=\"FolderIcon\"\n                  phosphor=\"FolderIcon\"\n                  remixicon=\"RiFolderLine\"\n                />\n                Open Folder\n              </MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem variant=\"destructive\">\n                <IconPlaceholder\n                  lucide=\"TrashIcon\"\n                  tabler=\"IconTrash\"\n                  hugeicons=\"DeleteIcon\"\n                  phosphor=\"TrashIcon\"\n                  remixicon=\"RiDeleteBinLine\"\n                />\n                Delete File <MenubarShortcut>⌘⌫</MenubarShortcut>\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n        <MenubarMenu>\n          <MenubarTrigger>Account</MenubarTrigger>\n          <MenubarContent>\n            <MenubarGroup>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"UserIcon\"\n                  tabler=\"IconUser\"\n                  hugeicons=\"UserIcon\"\n                  phosphor=\"UserIcon\"\n                  remixicon=\"RiUserLine\"\n                />\n                Profile\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"SettingsIcon\"\n                  tabler=\"IconSettings\"\n                  hugeicons=\"SettingsIcon\"\n                  phosphor=\"GearIcon\"\n                  remixicon=\"RiSettingsLine\"\n                />\n                Settings\n              </MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem variant=\"destructive\">\n                <IconPlaceholder\n                  lucide=\"LogOutIcon\"\n                  tabler=\"IconLogout\"\n                  hugeicons=\"LogoutIcon\"\n                  phosphor=\"SignOutIcon\"\n                  remixicon=\"RiLogoutBoxLine\"\n                />\n                Sign out\n              </MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarItem variant=\"destructive\">\n                <IconPlaceholder\n                  lucide=\"TrashIcon\"\n                  tabler=\"IconTrash\"\n                  hugeicons=\"DeleteIcon\"\n                  phosphor=\"TrashIcon\"\n                  remixicon=\"RiDeleteBinLine\"\n                />\n                Delete\n              </MenubarItem>\n            </MenubarGroup>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n\nfunction MenubarInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Menubar Example</DialogTitle>\n            <DialogDescription>\n              Use the menubar below to see the menu options.\n            </DialogDescription>\n          </DialogHeader>\n          <Menubar>\n            <MenubarMenu>\n              <MenubarTrigger>File</MenubarTrigger>\n              <MenubarContent>\n                <MenubarGroup>\n                  <MenubarItem>\n                    <IconPlaceholder\n                      lucide=\"CopyIcon\"\n                      tabler=\"IconCopy\"\n                      hugeicons=\"CopyIcon\"\n                      phosphor=\"CopyIcon\"\n                      remixicon=\"RiFileCopyLine\"\n                    />\n                    Copy\n                  </MenubarItem>\n                  <MenubarItem>\n                    <IconPlaceholder\n                      lucide=\"ScissorsIcon\"\n                      tabler=\"IconCut\"\n                      hugeicons=\"ScissorIcon\"\n                      phosphor=\"ScissorsIcon\"\n                      remixicon=\"RiScissorsLine\"\n                    />\n                    Cut\n                  </MenubarItem>\n                  <MenubarItem>\n                    <IconPlaceholder\n                      lucide=\"ClipboardPasteIcon\"\n                      tabler=\"IconClipboard\"\n                      hugeicons=\"ClipboardIcon\"\n                      phosphor=\"ClipboardIcon\"\n                      remixicon=\"RiClipboardLine\"\n                    />\n                    Paste\n                  </MenubarItem>\n                </MenubarGroup>\n                <MenubarSeparator />\n                <MenubarSub>\n                  <MenubarSubTrigger>More Options</MenubarSubTrigger>\n                  <MenubarSubContent>\n                    <MenubarGroup>\n                      <MenubarItem>Save Page...</MenubarItem>\n                      <MenubarItem>Create Shortcut...</MenubarItem>\n                      <MenubarItem>Name Window...</MenubarItem>\n                    </MenubarGroup>\n                    <MenubarSeparator />\n                    <MenubarGroup>\n                      <MenubarItem>Developer Tools</MenubarItem>\n                    </MenubarGroup>\n                  </MenubarSubContent>\n                </MenubarSub>\n                <MenubarSeparator />\n                <MenubarGroup>\n                  <MenubarItem variant=\"destructive\">\n                    <IconPlaceholder\n                      lucide=\"TrashIcon\"\n                      tabler=\"IconTrash\"\n                      hugeicons=\"DeleteIcon\"\n                      phosphor=\"TrashIcon\"\n                      remixicon=\"RiDeleteBinLine\"\n                    />\n                    Delete\n                  </MenubarItem>\n                </MenubarGroup>\n              </MenubarContent>\n            </MenubarMenu>\n            <MenubarMenu>\n              <MenubarTrigger>Edit</MenubarTrigger>\n              <MenubarContent>\n                <MenubarGroup>\n                  <MenubarItem>\n                    Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n                  </MenubarItem>\n                  <MenubarItem>\n                    Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n                  </MenubarItem>\n                </MenubarGroup>\n              </MenubarContent>\n            </MenubarMenu>\n          </Menubar>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n\nfunction MenubarWithInset() {\n  const [showBookmarks, setShowBookmarks] = React.useState(true)\n  const [showUrls, setShowUrls] = React.useState(false)\n  const [theme, setTheme] = React.useState(\"system\")\n\n  return (\n    <Example title=\"With Inset\">\n      <Menubar>\n        <MenubarMenu>\n          <MenubarTrigger>View</MenubarTrigger>\n          <MenubarContent className=\"w-44\">\n            <MenubarGroup>\n              <MenubarLabel>Actions</MenubarLabel>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"CopyIcon\"\n                  tabler=\"IconCopy\"\n                  hugeicons=\"CopyIcon\"\n                  phosphor=\"CopyIcon\"\n                  remixicon=\"RiFileCopyLine\"\n                />\n                Copy\n              </MenubarItem>\n              <MenubarItem>\n                <IconPlaceholder\n                  lucide=\"ScissorsIcon\"\n                  tabler=\"IconCut\"\n                  hugeicons=\"ScissorIcon\"\n                  phosphor=\"ScissorsIcon\"\n                  remixicon=\"RiScissorsLine\"\n                />\n                Cut\n              </MenubarItem>\n              <MenubarItem inset>Paste</MenubarItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarLabel inset>Appearance</MenubarLabel>\n              <MenubarCheckboxItem\n                inset\n                checked={showBookmarks}\n                onCheckedChange={setShowBookmarks}\n              >\n                Bookmarks\n              </MenubarCheckboxItem>\n              <MenubarCheckboxItem\n                inset\n                checked={showUrls}\n                onCheckedChange={setShowUrls}\n              >\n                Full URLs\n              </MenubarCheckboxItem>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarGroup>\n              <MenubarLabel inset>Theme</MenubarLabel>\n              <MenubarRadioGroup value={theme} onValueChange={setTheme}>\n                <MenubarRadioItem inset value=\"light\">\n                  Light\n                </MenubarRadioItem>\n                <MenubarRadioItem inset value=\"dark\">\n                  Dark\n                </MenubarRadioItem>\n                <MenubarRadioItem inset value=\"system\">\n                  System\n                </MenubarRadioItem>\n              </MenubarRadioGroup>\n            </MenubarGroup>\n            <MenubarSeparator />\n            <MenubarSub>\n              <MenubarSubTrigger inset>More Options</MenubarSubTrigger>\n              <MenubarSubContent>\n                <MenubarGroup>\n                  <MenubarItem>Save Page...</MenubarItem>\n                  <MenubarItem>Create Shortcut...</MenubarItem>\n                </MenubarGroup>\n              </MenubarSubContent>\n            </MenubarSub>\n          </MenubarContent>\n        </MenubarMenu>\n      </Menubar>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/native-select-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/registry/bases/radix/ui/native-select\"\n\nexport default function NativeSelectExample() {\n  return (\n    <ExampleWrapper>\n      <NativeSelectBasic />\n      <NativeSelectWithGroups />\n      <NativeSelectSizes />\n      <NativeSelectWithField />\n      <NativeSelectDisabled />\n      <NativeSelectInvalid />\n    </ExampleWrapper>\n  )\n}\n\nfunction NativeSelectBasic() {\n  return (\n    <Example title=\"Basic\">\n      <NativeSelect>\n        <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n        <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n        <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n        <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n        <NativeSelectOption value=\"grapes\" disabled>\n          Grapes\n        </NativeSelectOption>\n        <NativeSelectOption value=\"pineapple\">Pineapple</NativeSelectOption>\n      </NativeSelect>\n    </Example>\n  )\n}\n\nfunction NativeSelectWithGroups() {\n  return (\n    <Example title=\"With Groups\">\n      <NativeSelect>\n        <NativeSelectOption value=\"\">Select a food</NativeSelectOption>\n        <NativeSelectOptGroup label=\"Fruits\">\n          <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n          <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n          <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n        </NativeSelectOptGroup>\n        <NativeSelectOptGroup label=\"Vegetables\">\n          <NativeSelectOption value=\"carrot\">Carrot</NativeSelectOption>\n          <NativeSelectOption value=\"broccoli\">Broccoli</NativeSelectOption>\n          <NativeSelectOption value=\"spinach\">Spinach</NativeSelectOption>\n        </NativeSelectOptGroup>\n      </NativeSelect>\n    </Example>\n  )\n}\n\nfunction NativeSelectSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-col gap-4\">\n        <NativeSelect size=\"sm\">\n          <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n          <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n          <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n          <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n        </NativeSelect>\n        <NativeSelect size=\"default\">\n          <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n          <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n          <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n          <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n        </NativeSelect>\n      </div>\n    </Example>\n  )\n}\n\nfunction NativeSelectWithField() {\n  return (\n    <Example title=\"With Field\">\n      <Field>\n        <FieldLabel htmlFor=\"native-select-country\">Country</FieldLabel>\n        <NativeSelect id=\"native-select-country\">\n          <NativeSelectOption value=\"\">Select a country</NativeSelectOption>\n          <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n          <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n          <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n          <NativeSelectOption value=\"au\">Australia</NativeSelectOption>\n        </NativeSelect>\n        <FieldDescription>Select your country of residence.</FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction NativeSelectDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <NativeSelect disabled>\n        <NativeSelectOption value=\"\">Disabled</NativeSelectOption>\n        <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n        <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n        <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n      </NativeSelect>\n    </Example>\n  )\n}\n\nfunction NativeSelectInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <NativeSelect aria-invalid=\"true\">\n        <NativeSelectOption value=\"\">Error state</NativeSelectOption>\n        <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n        <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n        <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n      </NativeSelect>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"@/registry/bases/radix/ui/navigation-menu\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst components: { title: string; href: string; description: string }[] = [\n  {\n    title: \"Alert Dialog\",\n    href: \"/docs/primitives/alert-dialog\",\n    description:\n      \"A modal dialog that interrupts the user with important content and expects a response.\",\n  },\n  {\n    title: \"Hover Card\",\n    href: \"/docs/primitives/hover-card\",\n    description:\n      \"For sighted users to preview content available behind a link.\",\n  },\n  {\n    title: \"Progress\",\n    href: \"/docs/primitives/progress\",\n    description:\n      \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n  },\n  {\n    title: \"Scroll-area\",\n    href: \"/docs/primitives/scroll-area\",\n    description: \"Visually or semantically separates content.\",\n  },\n  {\n    title: \"Tabs\",\n    href: \"/docs/primitives/tabs\",\n    description:\n      \"A set of layered sections of content—known as tab panels—that are displayed one at a time.\",\n  },\n  {\n    title: \"Tooltip\",\n    href: \"/docs/primitives/tooltip\",\n    description:\n      \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n  },\n]\n\nexport default function NavigationMenuExample() {\n  return (\n    <ExampleWrapper className=\"lg:grid-cols-1\">\n      <NavigationMenuWithViewport />\n      <NavigationMenuWithoutViewport />\n    </ExampleWrapper>\n  )\n}\n\nfunction NavigationMenuWithViewport() {\n  return (\n    <Example title=\"With Viewport\">\n      <NavigationMenu>\n        <NavigationMenuList>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"w-96\">\n                <ListItem href=\"/docs\" title=\"Introduction\">\n                  Re-usable components built with Tailwind CSS.\n                </ListItem>\n                <ListItem href=\"/docs/installation\" title=\"Installation\">\n                  How to install dependencies and structure your app.\n                </ListItem>\n                <ListItem href=\"/docs/primitives/typography\" title=\"Typography\">\n                  Styles for headings, paragraphs, lists...etc\n                </ListItem>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>Components</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid w-[400px] gap-1 md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n                {components.map((component) => (\n                  <ListItem\n                    key={component.title}\n                    title={component.title}\n                    href={component.href}\n                  >\n                    {component.description}\n                  </ListItem>\n                ))}\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuLink\n              asChild\n              className={navigationMenuTriggerStyle()}\n            >\n              <Link href=\"/docs\">Documentation</Link>\n            </NavigationMenuLink>\n          </NavigationMenuItem>\n        </NavigationMenuList>\n      </NavigationMenu>\n    </Example>\n  )\n}\n\nfunction NavigationMenuWithoutViewport() {\n  return (\n    <Example title=\"Without Viewport\">\n      <NavigationMenu viewport={false}>\n        <NavigationMenuList>\n          <NavigationMenuItem>\n            <NavigationMenuLink\n              asChild\n              className={navigationMenuTriggerStyle()}\n            >\n              <Link href=\"/docs\">Documentation</Link>\n            </NavigationMenuLink>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>List</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"w-72\">\n                <li>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">\n                      <div className=\"flex flex-col\">\n                        <div className=\"font-medium\">Components</div>\n                        <div className=\"text-muted-foreground\">\n                          Browse all components in the library.\n                        </div>\n                      </div>\n                    </Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">\n                      <div className=\"flex flex-col\">\n                        <div className=\"font-medium\">Documentation</div>\n                        <div className=\"text-muted-foreground\">\n                          Learn how to use the library.\n                        </div>\n                      </div>\n                    </Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">\n                      <div className=\"flex flex-col\">\n                        <div className=\"font-medium\">Blog</div>\n                        <div className=\"text-muted-foreground\">\n                          Read our latest blog posts.\n                        </div>\n                      </div>\n                    </Link>\n                  </NavigationMenuLink>\n                </li>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>Simple List</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul>\n                <li>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">Components</Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">Documentation</Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">Blocks</Link>\n                  </NavigationMenuLink>\n                </li>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n          <NavigationMenuItem>\n            <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\n            <NavigationMenuContent>\n              <ul className=\"grid w-[200px]\">\n                <li>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\">\n                      <IconPlaceholder\n                        lucide=\"CircleAlertIcon\"\n                        tabler=\"IconExclamationCircle\"\n                        hugeicons=\"AlertCircleIcon\"\n                        phosphor=\"WarningCircleIcon\"\n                        remixicon=\"RiErrorWarningLine\"\n                      />\n                      Backlog\n                    </Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\" className=\"flex-row items-center gap-2\">\n                      <IconPlaceholder\n                        lucide=\"CircleAlertIcon\"\n                        tabler=\"IconExclamationCircle\"\n                        hugeicons=\"AlertCircleIcon\"\n                        phosphor=\"WarningCircleIcon\"\n                        remixicon=\"RiErrorWarningLine\"\n                      />\n                      To Do\n                    </Link>\n                  </NavigationMenuLink>\n                  <NavigationMenuLink asChild>\n                    <Link href=\"#\">\n                      <IconPlaceholder\n                        lucide=\"CircleAlertIcon\"\n                        tabler=\"IconExclamationCircle\"\n                        hugeicons=\"AlertCircleIcon\"\n                        phosphor=\"WarningCircleIcon\"\n                        remixicon=\"RiErrorWarningLine\"\n                      />\n                      Done\n                    </Link>\n                  </NavigationMenuLink>\n                </li>\n              </ul>\n            </NavigationMenuContent>\n          </NavigationMenuItem>\n        </NavigationMenuList>\n      </NavigationMenu>\n    </Example>\n  )\n}\n\nfunction ListItem({\n  title,\n  children,\n  href,\n  ...props\n}: React.ComponentPropsWithoutRef<\"li\"> & { href: string }) {\n  return (\n    <li {...props}>\n      <NavigationMenuLink asChild>\n        <Link href={href}>\n          <div className=\"flex flex-col gap-1 style-vega:text-sm style-nova:text-sm style-lyra:text-xs style-maia:text-sm style-mira:text-xs\">\n            <div className=\"leading-none font-medium\">{title}</div>\n            <div className=\"line-clamp-2 text-muted-foreground\">{children}</div>\n          </div>\n        </Link>\n      </NavigationMenuLink>\n    </li>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/pagination-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Field, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/registry/bases/radix/ui/pagination\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\n\nexport default function PaginationExample() {\n  return (\n    <ExampleWrapper>\n      <PaginationBasic />\n      <PaginationSimple />\n      <PaginationIconsOnly />\n    </ExampleWrapper>\n  )\n}\n\nfunction PaginationBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Pagination>\n        <PaginationContent>\n          <PaginationItem>\n            <PaginationPrevious href=\"#\" />\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">1</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\" isActive>\n              2\n            </PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">3</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationEllipsis />\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationNext href=\"#\" />\n          </PaginationItem>\n        </PaginationContent>\n      </Pagination>\n    </Example>\n  )\n}\n\nfunction PaginationSimple() {\n  return (\n    <Example title=\"Simple\">\n      <Pagination>\n        <PaginationContent>\n          <PaginationItem>\n            <PaginationLink href=\"#\">1</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\" isActive>\n              2\n            </PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">3</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">4</PaginationLink>\n          </PaginationItem>\n          <PaginationItem>\n            <PaginationLink href=\"#\">5</PaginationLink>\n          </PaginationItem>\n        </PaginationContent>\n      </Pagination>\n    </Example>\n  )\n}\n\nfunction PaginationIconsOnly() {\n  return (\n    <Example title=\"With Select\">\n      <div className=\"flex items-center justify-between gap-4\">\n        <Field orientation=\"horizontal\" className=\"w-fit\">\n          <FieldLabel htmlFor=\"select-rows-per-page\">Rows per page</FieldLabel>\n          <Select defaultValue=\"25\">\n            <SelectTrigger className=\"w-20\" id=\"select-rows-per-page\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent align=\"start\">\n              <SelectGroup>\n                <SelectItem value=\"10\">10</SelectItem>\n                <SelectItem value=\"25\">25</SelectItem>\n                <SelectItem value=\"50\">50</SelectItem>\n                <SelectItem value=\"100\">100</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </Field>\n        <Pagination className=\"mx-0 w-auto\">\n          <PaginationContent>\n            <PaginationItem>\n              <PaginationPrevious href=\"#\" />\n            </PaginationItem>\n            <PaginationItem>\n              <PaginationNext href=\"#\" />\n            </PaginationItem>\n          </PaginationContent>\n        </Pagination>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/popover-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n} from \"@/registry/bases/radix/ui/popover\"\n\nexport default function PopoverExample() {\n  return (\n    <ExampleWrapper>\n      <PopoverBasic />\n      <PopoverWithForm />\n      <PopoverAlignments />\n      <PopoverInDialog />\n    </ExampleWrapper>\n  )\n}\n\nfunction PopoverBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\">Open Popover</Button>\n        </PopoverTrigger>\n        <PopoverContent align=\"start\">\n          <PopoverHeader>\n            <PopoverTitle>Dimensions</PopoverTitle>\n            <PopoverDescription>\n              Set the dimensions for the layer.\n            </PopoverDescription>\n          </PopoverHeader>\n        </PopoverContent>\n      </Popover>\n    </Example>\n  )\n}\n\nfunction PopoverWithForm() {\n  return (\n    <Example title=\"With Form\">\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\">Open Popover</Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-64\" align=\"start\">\n          <PopoverHeader>\n            <PopoverTitle>Dimensions</PopoverTitle>\n            <PopoverDescription>\n              Set the dimensions for the layer.\n            </PopoverDescription>\n          </PopoverHeader>\n          <FieldGroup className=\"gap-4\">\n            <Field orientation=\"horizontal\">\n              <FieldLabel htmlFor=\"width\" className=\"w-1/2\">\n                Width\n              </FieldLabel>\n              <Input id=\"width\" defaultValue=\"100%\" />\n            </Field>\n            <Field orientation=\"horizontal\">\n              <FieldLabel htmlFor=\"height\" className=\"w-1/2\">\n                Height\n              </FieldLabel>\n              <Input id=\"height\" defaultValue=\"25px\" />\n            </Field>\n          </FieldGroup>\n        </PopoverContent>\n      </Popover>\n    </Example>\n  )\n}\n\nfunction PopoverAlignments() {\n  return (\n    <Example title=\"Alignments\">\n      <div className=\"flex gap-6\">\n        <Popover>\n          <PopoverTrigger asChild>\n            <Button variant=\"outline\" size=\"sm\">\n              Start\n            </Button>\n          </PopoverTrigger>\n          <PopoverContent align=\"start\" className=\"w-40\">\n            Aligned to start\n          </PopoverContent>\n        </Popover>\n        <Popover>\n          <PopoverTrigger asChild>\n            <Button variant=\"outline\" size=\"sm\">\n              Center\n            </Button>\n          </PopoverTrigger>\n          <PopoverContent align=\"center\" className=\"w-40\">\n            Aligned to center\n          </PopoverContent>\n        </Popover>\n        <Popover>\n          <PopoverTrigger asChild>\n            <Button variant=\"outline\" size=\"sm\">\n              End\n            </Button>\n          </PopoverTrigger>\n          <PopoverContent align=\"end\" className=\"w-40\">\n            Aligned to end\n          </PopoverContent>\n        </Popover>\n      </div>\n    </Example>\n  )\n}\n\nfunction PopoverInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Popover Example</DialogTitle>\n            <DialogDescription>\n              Click the button below to see the popover.\n            </DialogDescription>\n          </DialogHeader>\n          <Popover>\n            <PopoverTrigger asChild>\n              <Button variant=\"outline\" className=\"w-fit\">\n                Open Popover\n              </Button>\n            </PopoverTrigger>\n            <PopoverContent align=\"start\">\n              <PopoverHeader>\n                <PopoverTitle>Popover in Dialog</PopoverTitle>\n                <PopoverDescription>\n                  This popover appears inside a dialog. Click the button to open\n                  it.\n                </PopoverDescription>\n              </PopoverHeader>\n            </PopoverContent>\n          </Popover>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/progress-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Field, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport { Progress } from \"@/registry/bases/radix/ui/progress\"\nimport { Slider } from \"@/registry/bases/radix/ui/slider\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ProgressExample() {\n  return (\n    <ExampleWrapper>\n      <ProgressValues />\n      <ProgressWithLabel />\n      <ProgressControlled />\n      <FileUploadList />\n    </ExampleWrapper>\n  )\n}\n\nfunction ProgressValues() {\n  return (\n    <Example title=\"Progress Bar\">\n      <div className=\"flex w-full flex-col gap-4\">\n        <Progress value={0} />\n        <Progress value={25} className=\"w-full\" />\n        <Progress value={50} />\n        <Progress value={75} />\n        <Progress value={100} />\n      </div>\n    </Example>\n  )\n}\n\nfunction ProgressWithLabel() {\n  return (\n    <Example title=\"With Label\">\n      <Field>\n        <FieldLabel htmlFor=\"progress-upload\">\n          <span>Upload progress</span>\n          <span className=\"ml-auto\">66%</span>\n        </FieldLabel>\n        <Progress value={66} className=\"w-full\" id=\"progress-upload\" />\n      </Field>\n    </Example>\n  )\n}\n\nfunction ProgressControlled() {\n  const [value, setValue] = React.useState([50])\n\n  return (\n    <Example title=\"Controlled\">\n      <div className=\"flex w-full flex-col gap-4\">\n        <Progress value={value[0]} className=\"w-full\" />\n        <Slider\n          value={value}\n          onValueChange={setValue}\n          min={0}\n          max={100}\n          step={1}\n        />\n      </div>\n    </Example>\n  )\n}\n\nfunction FileUploadList() {\n  const files = React.useMemo(\n    () => [\n      {\n        id: \"1\",\n        name: \"document.pdf\",\n        progress: 45,\n        timeRemaining: \"2m 30s\",\n      },\n      {\n        id: \"2\",\n        name: \"presentation.pptx\",\n        progress: 78,\n        timeRemaining: \"45s\",\n      },\n      {\n        id: \"3\",\n        name: \"spreadsheet.xlsx\",\n        progress: 12,\n        timeRemaining: \"5m 12s\",\n      },\n      {\n        id: \"4\",\n        name: \"image.jpg\",\n        progress: 100,\n        timeRemaining: \"Complete\",\n      },\n    ],\n    []\n  )\n\n  return (\n    <Example title=\"File Upload List\">\n      <ItemGroup>\n        {files.map((file) => (\n          <Item key={file.id} size=\"xs\" className=\"px-0\">\n            <ItemMedia variant=\"icon\">\n              <IconPlaceholder\n                lucide=\"FileIcon\"\n                tabler=\"IconFile\"\n                hugeicons=\"FileIcon\"\n                phosphor=\"FileIcon\"\n                remixicon=\"RiFileLine\"\n                className=\"size-5\"\n              />\n            </ItemMedia>\n            <ItemContent className=\"inline-block truncate\">\n              <ItemTitle className=\"inline\">{file.name}</ItemTitle>\n            </ItemContent>\n            <ItemContent>\n              <Progress value={file.progress} className=\"w-32\" />\n            </ItemContent>\n            <ItemActions className=\"w-16 justify-end\">\n              <span className=\"text-sm text-muted-foreground\">\n                {file.timeRemaining}\n              </span>\n            </ItemActions>\n          </Item>\n        ))}\n      </ItemGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/radio-group-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/registry/bases/radix/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/bases/radix/ui/radio-group\"\n\nexport default function RadioGroupExample() {\n  return (\n    <ExampleWrapper>\n      <RadioGroupBasic />\n      <RadioGroupWithDescriptions />\n      <RadioGroupWithFieldSet />\n      <RadioGroupGrid />\n      <RadioGroupDisabled />\n      <RadioGroupInvalid />\n    </ExampleWrapper>\n  )\n}\n\nfunction RadioGroupBasic() {\n  return (\n    <Example title=\"Basic\">\n      <RadioGroup defaultValue=\"comfortable\">\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"default\" id=\"r1\" />\n          <FieldLabel htmlFor=\"r1\" className=\"font-normal\">\n            Default\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"comfortable\" id=\"r2\" />\n          <FieldLabel htmlFor=\"r2\" className=\"font-normal\">\n            Comfortable\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"compact\" id=\"r3\" />\n          <FieldLabel htmlFor=\"r3\" className=\"font-normal\">\n            Compact\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </Example>\n  )\n}\n\nfunction RadioGroupWithDescriptions() {\n  return (\n    <Example title=\"With Descriptions\">\n      <RadioGroup defaultValue=\"plus\">\n        <FieldLabel htmlFor=\"plus-plan\">\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <div className=\"font-medium\">Plus</div>\n              <FieldDescription>\n                For individuals and small teams\n              </FieldDescription>\n            </FieldContent>\n            <RadioGroupItem value=\"plus\" id=\"plus-plan\" />\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"pro-plan\">\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <div className=\"font-medium\">Pro</div>\n              <FieldDescription>For growing businesses</FieldDescription>\n            </FieldContent>\n            <RadioGroupItem value=\"pro\" id=\"pro-plan\" />\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"enterprise-plan\">\n          <Field orientation=\"horizontal\">\n            <FieldContent>\n              <div className=\"font-medium\">Enterprise</div>\n              <FieldDescription>\n                For large teams and enterprises\n              </FieldDescription>\n            </FieldContent>\n            <RadioGroupItem value=\"enterprise\" id=\"enterprise-plan\" />\n          </Field>\n        </FieldLabel>\n      </RadioGroup>\n    </Example>\n  )\n}\n\nfunction RadioGroupWithFieldSet() {\n  return (\n    <Example title=\"With FieldSet\">\n      <FieldSet>\n        <FieldLegend>Battery Level</FieldLegend>\n        <FieldDescription>\n          Choose your preferred battery level.\n        </FieldDescription>\n        <RadioGroup defaultValue=\"medium\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"high\" id=\"battery-high\" />\n            <FieldLabel htmlFor=\"battery-high\" className=\"font-normal\">\n              High\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"medium\" id=\"battery-medium\" />\n            <FieldLabel htmlFor=\"battery-medium\" className=\"font-normal\">\n              Medium\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"low\" id=\"battery-low\" />\n            <FieldLabel htmlFor=\"battery-low\" className=\"font-normal\">\n              Low\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n    </Example>\n  )\n}\n\nfunction RadioGroupGrid() {\n  return (\n    <Example title=\"Grid Layout\">\n      <RadioGroup defaultValue=\"medium\" className=\"grid grid-cols-2 gap-2\">\n        <FieldLabel htmlFor=\"size-small\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"small\" id=\"size-small\" />\n            <div className=\"font-medium\">Small</div>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"size-medium\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"medium\" id=\"size-medium\" />\n            <div className=\"font-medium\">Medium</div>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"size-large\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"large\" id=\"size-large\" />\n            <div className=\"font-medium\">Large</div>\n          </Field>\n        </FieldLabel>\n        <FieldLabel htmlFor=\"size-xlarge\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"xlarge\" id=\"size-xlarge\" />\n            <div className=\"font-medium\">X-Large</div>\n          </Field>\n        </FieldLabel>\n      </RadioGroup>\n    </Example>\n  )\n}\n\nfunction RadioGroupDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <RadioGroup defaultValue=\"option2\" disabled>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option1\" id=\"disabled-1\" />\n          <FieldLabel htmlFor=\"disabled-1\" className=\"font-normal\">\n            Option 1\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option2\" id=\"disabled-2\" />\n          <FieldLabel htmlFor=\"disabled-2\" className=\"font-normal\">\n            Option 2\n          </FieldLabel>\n        </Field>\n        <Field orientation=\"horizontal\">\n          <RadioGroupItem value=\"option3\" id=\"disabled-3\" />\n          <FieldLabel htmlFor=\"disabled-3\" className=\"font-normal\">\n            Option 3\n          </FieldLabel>\n        </Field>\n      </RadioGroup>\n    </Example>\n  )\n}\n\nfunction RadioGroupInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <FieldSet>\n        <FieldLegend>Notification Preferences</FieldLegend>\n        <FieldDescription>\n          Choose how you want to receive notifications.\n        </FieldDescription>\n        <RadioGroup defaultValue=\"email\">\n          <Field orientation=\"horizontal\" data-invalid>\n            <RadioGroupItem value=\"email\" id=\"invalid-email\" aria-invalid />\n            <FieldLabel htmlFor=\"invalid-email\" className=\"font-normal\">\n              Email only\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\" data-invalid>\n            <RadioGroupItem value=\"sms\" id=\"invalid-sms\" aria-invalid />\n            <FieldLabel htmlFor=\"invalid-sms\" className=\"font-normal\">\n              SMS only\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\" data-invalid>\n            <RadioGroupItem value=\"both\" id=\"invalid-both\" aria-invalid />\n            <FieldLabel htmlFor=\"invalid-both\" className=\"font-normal\">\n              Both Email & SMS\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/resizable-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport type { Layout } from \"react-resizable-panels\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/registry/bases/radix/ui/resizable\"\n\nexport default function ResizableExample() {\n  return (\n    <ExampleWrapper>\n      <ResizableHorizontal />\n      <ResizableVertical />\n      <ResizableWithHandle />\n      <ResizableNested />\n      <ResizableControlled />\n    </ExampleWrapper>\n  )\n}\n\nfunction ResizableHorizontal() {\n  return (\n    <Example title=\"Horizontal\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"min-h-[200px] rounded-lg border\"\n      >\n        <ResizablePanel defaultSize=\"25%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Sidebar</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"75%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Content</span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n\nfunction ResizableVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <ResizablePanelGroup\n        orientation=\"vertical\"\n        className=\"min-h-[200px] rounded-lg border\"\n      >\n        <ResizablePanel defaultSize=\"25%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Header</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"75%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Content</span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n\nfunction ResizableWithHandle() {\n  return (\n    <Example title=\"With Handle\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"min-h-[200px] rounded-lg border\"\n      >\n        <ResizablePanel defaultSize=\"25%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Sidebar</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle withHandle />\n        <ResizablePanel defaultSize=\"75%\">\n          <div className=\"flex h-full items-center justify-center p-6\">\n            <span className=\"font-semibold\">Content</span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n\nfunction ResizableNested() {\n  return (\n    <Example title=\"Nested\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"rounded-lg border\"\n      >\n        <ResizablePanel defaultSize=\"50%\">\n          <div className=\"flex h-[200px] items-center justify-center p-6\">\n            <span className=\"font-semibold\">One</span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"50%\">\n          <ResizablePanelGroup orientation=\"vertical\">\n            <ResizablePanel defaultSize=\"25%\">\n              <div className=\"flex h-full items-center justify-center p-6\">\n                <span className=\"font-semibold\">Two</span>\n              </div>\n            </ResizablePanel>\n            <ResizableHandle />\n            <ResizablePanel defaultSize=\"75%\">\n              <div className=\"flex h-full items-center justify-center p-6\">\n                <span className=\"font-semibold\">Three</span>\n              </div>\n            </ResizablePanel>\n          </ResizablePanelGroup>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n\nfunction ResizableControlled() {\n  const [layout, setLayout] = React.useState<Layout>({})\n\n  return (\n    <Example title=\"Controlled\">\n      <ResizablePanelGroup\n        orientation=\"horizontal\"\n        className=\"min-h-[200px] rounded-lg border\"\n        onLayoutChange={setLayout}\n      >\n        <ResizablePanel defaultSize=\"30%\" id=\"left\" minSize=\"20%\">\n          <div className=\"flex h-full flex-col items-center justify-center gap-2 p-6\">\n            <span className=\"font-semibold\">\n              {Math.round(layout.left ?? 30)}%\n            </span>\n          </div>\n        </ResizablePanel>\n        <ResizableHandle />\n        <ResizablePanel defaultSize=\"70%\" id=\"right\" minSize=\"30%\">\n          <div className=\"flex h-full flex-col items-center justify-center gap-2 p-6\">\n            <span className=\"font-semibold\">\n              {Math.round(layout.right ?? 70)}%\n            </span>\n          </div>\n        </ResizablePanel>\n      </ResizablePanelGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/scroll-area-example.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { ScrollArea, ScrollBar } from \"@/registry/bases/radix/ui/scroll-area\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\n\nconst tags = Array.from({ length: 50 }).map(\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\n)\n\nconst works = [\n  {\n    artist: \"Ornella Binni\",\n    art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Tom Byrom\",\n    art: \"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Vladimir Malyav\",\n    art: \"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\",\n  },\n] as const\n\nexport default function ScrollAreaExample() {\n  return (\n    <ExampleWrapper>\n      <ScrollAreaVertical />\n      <ScrollAreaHorizontal />\n    </ExampleWrapper>\n  )\n}\n\nfunction ScrollAreaVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <ScrollArea className=\"mx-auto h-72 w-48 rounded-md border\">\n        <div className=\"p-4\">\n          <h4 className=\"mb-4 text-sm leading-none font-medium\">Tags</h4>\n          {tags.map((tag) => (\n            <React.Fragment key={tag}>\n              <div className=\"text-sm\">{tag}</div>\n              <Separator className=\"my-2\" />\n            </React.Fragment>\n          ))}\n        </div>\n      </ScrollArea>\n    </Example>\n  )\n}\n\nfunction ScrollAreaHorizontal() {\n  return (\n    <Example title=\"Horizontal\">\n      <ScrollArea className=\"mx-auto w-full max-w-96 rounded-md border p-4\">\n        <div className=\"flex gap-4\">\n          {works.map((artwork) => (\n            <figure key={artwork.artist} className=\"shrink-0\">\n              <div className=\"overflow-hidden rounded-md\">\n                <Image\n                  src={artwork.art}\n                  alt={`Photo by ${artwork.artist}`}\n                  className=\"aspect-[3/4] h-fit w-fit object-cover\"\n                  width={300}\n                  height={400}\n                />\n              </div>\n              <figcaption className=\"pt-2 text-xs text-muted-foreground\">\n                Photo by{\" \"}\n                <span className=\"font-semibold text-foreground\">\n                  {artwork.artist}\n                </span>\n              </figcaption>\n            </figure>\n          ))}\n        </div>\n        <ScrollBar orientation=\"horizontal\" />\n      </ScrollArea>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/select-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/bases/radix/ui/native-select\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SelectExample() {\n  return (\n    <ExampleWrapper>\n      <SelectBasic />\n      <SelectWithIcons />\n      <SelectWithGroups />\n      <SelectLargeList />\n      <SelectSizes />\n      <SelectPlan />\n      <SelectWithButton />\n      <SelectItemAligned />\n      <SelectWithField />\n      <SelectInvalid />\n      <SelectInline />\n      <SelectDisabled />\n      <SelectInDialog />\n    </ExampleWrapper>\n  )\n}\n\nfunction SelectBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Select>\n        <SelectTrigger>\n          <SelectValue placeholder=\"Select a fruit\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            <SelectItem value=\"apple\">Apple</SelectItem>\n            <SelectItem value=\"banana\">Banana</SelectItem>\n            <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n            <SelectItem value=\"grapes\" disabled>\n              Grapes\n            </SelectItem>\n            <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <div className=\"flex flex-col gap-4\">\n        <Select>\n          <SelectTrigger size=\"sm\">\n            <SelectValue\n              placeholder={\n                <>\n                  <IconPlaceholder\n                    lucide=\"ChartLineIcon\"\n                    tabler=\"IconChartLine\"\n                    hugeicons=\"Chart03Icon\"\n                    phosphor=\"ChartLineIcon\"\n                    remixicon=\"RiLineChartLine\"\n                  />\n                  Chart Type\n                </>\n              }\n            />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"line\">\n                <IconPlaceholder\n                  lucide=\"ChartLineIcon\"\n                  tabler=\"IconChartLine\"\n                  hugeicons=\"Chart03Icon\"\n                  phosphor=\"ChartBarIcon\"\n                  remixicon=\"RiBarChartLine\"\n                />\n                Line\n              </SelectItem>\n              <SelectItem value=\"bar\">\n                <IconPlaceholder\n                  lucide=\"ChartBarIcon\"\n                  tabler=\"IconChartBar\"\n                  hugeicons=\"Chart03Icon\"\n                  phosphor=\"ChartBarIcon\"\n                  remixicon=\"RiBarChartLine\"\n                />\n                Bar\n              </SelectItem>\n              <SelectItem value=\"pie\">\n                <IconPlaceholder\n                  lucide=\"ChartPieIcon\"\n                  tabler=\"IconChartPie\"\n                  hugeicons=\"Chart03Icon\"\n                  phosphor=\"ChartPieIcon\"\n                  remixicon=\"RiPieChartLine\"\n                />\n                Pie\n              </SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Select>\n          <SelectTrigger size=\"default\">\n            <SelectValue\n              placeholder={\n                <>\n                  <IconPlaceholder\n                    lucide=\"ChartLineIcon\"\n                    tabler=\"IconChartLine\"\n                    hugeicons=\"Chart03Icon\"\n                    phosphor=\"ChartLineIcon\"\n                    remixicon=\"RiLineChartLine\"\n                  />\n                  Chart Type\n                </>\n              }\n            />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"line\">\n                <IconPlaceholder\n                  lucide=\"ChartLineIcon\"\n                  tabler=\"IconChartLine\"\n                  hugeicons=\"Chart03Icon\"\n                  phosphor=\"ChartLineIcon\"\n                  remixicon=\"RiLineChartLine\"\n                />\n                Line\n              </SelectItem>\n              <SelectItem value=\"bar\">\n                <IconPlaceholder\n                  lucide=\"ChartBarIcon\"\n                  tabler=\"IconChartBar\"\n                  hugeicons=\"Chart03Icon\"\n                  phosphor=\"ChartBarIcon\"\n                  remixicon=\"RiBarChartLine\"\n                />\n                Bar\n              </SelectItem>\n              <SelectItem value=\"pie\">\n                <IconPlaceholder\n                  lucide=\"ChartPieIcon\"\n                  tabler=\"IconChartPie\"\n                  hugeicons=\"Chart03Icon\"\n                  phosphor=\"ChartPieIcon\"\n                  remixicon=\"RiPieChartLine\"\n                />\n                Pie\n              </SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectWithGroups() {\n  return (\n    <Example title=\"With Groups & Labels\">\n      <Select>\n        <SelectTrigger>\n          <SelectValue placeholder=\"Select a fruit\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            <SelectLabel>Fruits</SelectLabel>\n            <SelectItem value=\"apple\">Apple</SelectItem>\n            <SelectItem value=\"banana\">Banana</SelectItem>\n            <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n          </SelectGroup>\n          <SelectSeparator />\n          <SelectGroup>\n            <SelectLabel>Vegetables</SelectLabel>\n            <SelectItem value=\"carrot\">Carrot</SelectItem>\n            <SelectItem value=\"broccoli\">Broccoli</SelectItem>\n            <SelectItem value=\"spinach\">Spinach</SelectItem>\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectLargeList() {\n  return (\n    <Example title=\"Large List\">\n      <Select>\n        <SelectTrigger>\n          <SelectValue placeholder=\"Select an item\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {Array.from({ length: 100 }).map((_, i) => (\n              <SelectItem key={i} value={`item-${i}`}>\n                Item {i}\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-col gap-4\">\n        <Select>\n          <SelectTrigger size=\"sm\">\n            <SelectValue placeholder=\"Small size\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"apple\">Apple</SelectItem>\n              <SelectItem value=\"banana\">Banana</SelectItem>\n              <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Select>\n          <SelectTrigger size=\"default\">\n            <SelectValue placeholder=\"Default size\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"apple\">Apple</SelectItem>\n              <SelectItem value=\"banana\">Banana</SelectItem>\n              <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectWithButton() {\n  return (\n    <Example title=\"With Button\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Select>\n            <SelectTrigger size=\"sm\">\n              <SelectValue placeholder=\"Small\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"apple\">Apple</SelectItem>\n                <SelectItem value=\"banana\">Banana</SelectItem>\n                <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <Button variant=\"outline\" size=\"sm\">\n            Submit\n          </Button>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Select>\n            <SelectTrigger>\n              <SelectValue placeholder=\"Default\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"apple\">Apple</SelectItem>\n                <SelectItem value=\"banana\">Banana</SelectItem>\n                <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <Button variant=\"outline\">Submit</Button>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectItemAligned() {\n  return (\n    <Example title=\"Popper\">\n      <Select>\n        <SelectTrigger>\n          <SelectValue placeholder=\"Select a fruit\" />\n        </SelectTrigger>\n        <SelectContent position=\"popper\">\n          <SelectGroup>\n            <SelectItem value=\"apple\">Apple</SelectItem>\n            <SelectItem value=\"banana\">Banana</SelectItem>\n            <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n            <SelectItem value=\"grapes\" disabled>\n              Grapes\n            </SelectItem>\n            <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectWithField() {\n  return (\n    <Example title=\"With Field\">\n      <Field>\n        <FieldLabel htmlFor=\"select-fruit\">Favorite Fruit</FieldLabel>\n        <Select>\n          <SelectTrigger id=\"select-fruit\">\n            <SelectValue placeholder=\"Select a fruit\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"apple\">Apple</SelectItem>\n              <SelectItem value=\"banana\">Banana</SelectItem>\n              <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n              <SelectItem value=\"grapes\">Grapes</SelectItem>\n              <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <FieldDescription>\n          Choose your favorite fruit from the list.\n        </FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction SelectInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <div className=\"flex flex-col gap-4\">\n        <Select>\n          <SelectTrigger aria-invalid=\"true\">\n            <SelectValue placeholder=\"Select a fruit\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"apple\">Apple</SelectItem>\n              <SelectItem value=\"banana\">Banana</SelectItem>\n              <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n              <SelectItem value=\"grapes\">Grapes</SelectItem>\n              <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <Field data-invalid>\n          <FieldLabel htmlFor=\"select-fruit-invalid\">Favorite Fruit</FieldLabel>\n          <Select>\n            <SelectTrigger id=\"select-fruit-invalid\" aria-invalid>\n              <SelectValue placeholder=\"Select a fruit\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"apple\">Apple</SelectItem>\n                <SelectItem value=\"banana\">Banana</SelectItem>\n                <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n                <SelectItem value=\"grapes\">Grapes</SelectItem>\n                <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n          <FieldError errors={[{ message: \"Please select a valid fruit.\" }]} />\n        </Field>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectInline() {\n  return (\n    <Example title=\"Inline with Input & NativeSelect\">\n      <div className=\"flex items-center gap-2\">\n        <Input placeholder=\"Search...\" className=\"flex-1\" />\n        <Select>\n          <SelectTrigger className=\"w-[140px]\">\n            <SelectValue placeholder=\"Filter\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"all\">All</SelectItem>\n              <SelectItem value=\"active\">Active</SelectItem>\n              <SelectItem value=\"inactive\">Inactive</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <NativeSelect className=\"w-[140px]\">\n          <NativeSelectOption value=\"\">Sort by</NativeSelectOption>\n          <NativeSelectOption value=\"name\">Name</NativeSelectOption>\n          <NativeSelectOption value=\"date\">Date</NativeSelectOption>\n          <NativeSelectOption value=\"status\">Status</NativeSelectOption>\n        </NativeSelect>\n      </div>\n    </Example>\n  )\n}\n\nfunction SelectDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Select disabled>\n        <SelectTrigger>\n          <SelectValue placeholder=\"Disabled\" />\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            <SelectItem value=\"apple\">Apple</SelectItem>\n            <SelectItem value=\"banana\">Banana</SelectItem>\n            <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n            <SelectItem value=\"grapes\" disabled>\n              Grapes\n            </SelectItem>\n            <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nconst plans = [\n  {\n    name: \"Starter\",\n    description: \"Perfect for individuals getting started.\",\n  },\n  {\n    name: \"Professional\",\n    description: \"Ideal for growing teams and businesses.\",\n  },\n  {\n    name: \"Enterprise\",\n    description: \"Advanced features for large organizations.\",\n  },\n]\n\nfunction SelectPlan() {\n  const [plan, setPlan] = React.useState<string>(plans[0].name)\n\n  const selectedPlan = plans.find((p) => p.name === plan)\n\n  return (\n    <Example title=\"Subscription Plan\">\n      <Select value={plan} onValueChange={setPlan}>\n        <SelectTrigger className=\"h-auto! w-72\">\n          <SelectValue>\n            {selectedPlan && <SelectPlanItem plan={selectedPlan} />}\n          </SelectValue>\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>\n            {plans.map((plan) => (\n              <SelectItem key={plan.name} value={plan.name}>\n                <SelectPlanItem plan={plan} />\n              </SelectItem>\n            ))}\n          </SelectGroup>\n        </SelectContent>\n      </Select>\n    </Example>\n  )\n}\n\nfunction SelectPlanItem({ plan }: { plan: (typeof plans)[number] }) {\n  return (\n    <Item size=\"xs\" className=\"w-full p-0\">\n      <ItemContent className=\"gap-0\">\n        <ItemTitle>{plan.name}</ItemTitle>\n        <ItemDescription className=\"text-xs\">\n          {plan.description}\n        </ItemDescription>\n      </ItemContent>\n    </Item>\n  )\n}\n\nfunction SelectInDialog() {\n  return (\n    <Example title=\"In Dialog\">\n      <Dialog>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>Select Example</DialogTitle>\n            <DialogDescription>\n              Use the select below to choose a fruit.\n            </DialogDescription>\n          </DialogHeader>\n          <Select>\n            <SelectTrigger>\n              <SelectValue placeholder=\"Select a fruit\" />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectGroup>\n                <SelectItem value=\"apple\">Apple</SelectItem>\n                <SelectItem value=\"banana\">Banana</SelectItem>\n                <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n                <SelectItem value=\"grapes\">Grapes</SelectItem>\n                <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n              </SelectGroup>\n            </SelectContent>\n          </Select>\n        </DialogContent>\n      </Dialog>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/separator-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\n\nexport default function SeparatorExample() {\n  return (\n    <ExampleWrapper>\n      <SeparatorHorizontal />\n      <SeparatorVertical />\n      <SeparatorVerticalMenu />\n      <SeparatorInList />\n    </ExampleWrapper>\n  )\n}\n\nfunction SeparatorHorizontal() {\n  return (\n    <Example title=\"Horizontal\">\n      <div className=\"flex flex-col gap-4 text-sm style-lyra:text-xs/relaxed\">\n        <div className=\"flex flex-col gap-1\">\n          <div className=\"leading-none font-medium\">shadcn/ui</div>\n          <div className=\"text-muted-foreground\">\n            The Foundation for your Design System\n          </div>\n        </div>\n        <Separator />\n        <div>\n          A set of beautifully designed components that you can customize,\n          extend, and build on.\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SeparatorVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <div className=\"flex h-5 items-center gap-4 text-sm style-lyra:text-xs/relaxed\">\n        <div>Blog</div>\n        <Separator orientation=\"vertical\" />\n        <div>Docs</div>\n        <Separator orientation=\"vertical\" />\n        <div>Source</div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SeparatorVerticalMenu() {\n  return (\n    <Example title=\"Vertical Menu\">\n      <div className=\"flex items-center gap-2 text-sm md:gap-4 style-lyra:text-xs/relaxed\">\n        <div className=\"flex flex-col gap-1\">\n          <span className=\"font-medium\">Settings</span>\n          <span className=\"text-xs text-muted-foreground\">\n            Manage preferences\n          </span>\n        </div>\n        <Separator orientation=\"vertical\" />\n        <div className=\"flex flex-col gap-1\">\n          <span className=\"font-medium\">Account</span>\n          <span className=\"text-xs text-muted-foreground\">\n            Profile & security\n          </span>\n        </div>\n        <Separator orientation=\"vertical\" />\n        <div className=\"flex flex-col gap-1\">\n          <span className=\"font-medium\">Help</span>\n          <span className=\"text-xs text-muted-foreground\">Support & docs</span>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SeparatorInList() {\n  return (\n    <Example title=\"In List\">\n      <div className=\"flex flex-col gap-2 text-sm style-lyra:text-xs/relaxed\">\n        <dl className=\"flex items-center justify-between\">\n          <dt>Item 1</dt>\n          <dd className=\"text-muted-foreground\">Value 1</dd>\n        </dl>\n        <Separator />\n        <dl className=\"flex items-center justify-between\">\n          <dt>Item 2</dt>\n          <dd className=\"text-muted-foreground\">Value 2</dd>\n        </dl>\n        <Separator />\n        <dl className=\"flex items-center justify-between\">\n          <dt>Item 3</dt>\n          <dd className=\"text-muted-foreground\">Value 3</dd>\n        </dl>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/sheet-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/registry/bases/radix/ui/sheet\"\n\nexport default function SheetExample() {\n  return (\n    <ExampleWrapper>\n      <SheetWithForm />\n      <SheetNoCloseButton />\n      <SheetWithSides />\n    </ExampleWrapper>\n  )\n}\n\nfunction SheetWithForm() {\n  return (\n    <Example title=\"With Form\">\n      <Sheet>\n        <SheetTrigger asChild>\n          <Button variant=\"outline\">Open</Button>\n        </SheetTrigger>\n        <SheetContent>\n          <SheetHeader>\n            <SheetTitle>Edit profile</SheetTitle>\n            <SheetDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </SheetDescription>\n          </SheetHeader>\n          <div className=\"style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\">\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"sheet-demo-name\">Name</FieldLabel>\n                <Input id=\"sheet-demo-name\" defaultValue=\"Pedro Duarte\" />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"sheet-demo-username\">Username</FieldLabel>\n                <Input id=\"sheet-demo-username\" defaultValue=\"@peduarte\" />\n              </Field>\n            </FieldGroup>\n          </div>\n          <SheetFooter>\n            <Button type=\"submit\">Save changes</Button>\n            <SheetClose asChild>\n              <Button variant=\"outline\">Close</Button>\n            </SheetClose>\n          </SheetFooter>\n        </SheetContent>\n      </Sheet>\n    </Example>\n  )\n}\n\nfunction SheetNoCloseButton() {\n  return (\n    <Example title=\"No Close Button\">\n      <Sheet>\n        <SheetTrigger asChild>\n          <Button variant=\"outline\">No Close Button</Button>\n        </SheetTrigger>\n        <SheetContent showCloseButton={false}>\n          <SheetHeader>\n            <SheetTitle>No Close Button</SheetTitle>\n            <SheetDescription>\n              This sheet doesn&apos;t have a close button in the top-right\n              corner. You can only close it using the button below.\n            </SheetDescription>\n          </SheetHeader>\n        </SheetContent>\n      </Sheet>\n    </Example>\n  )\n}\n\nconst SHEET_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nfunction SheetWithSides() {\n  return (\n    <Example title=\"Sides\">\n      <div className=\"flex flex-wrap gap-2\">\n        {SHEET_SIDES.map((side) => (\n          <Sheet key={side}>\n            <SheetTrigger asChild>\n              <Button variant=\"outline\" className=\"capitalize\">\n                {side}\n              </Button>\n            </SheetTrigger>\n            <SheetContent\n              side={side}\n              className=\"data-[side=bottom]:max-h-[50vh] data-[side=top]:max-h-[50vh]\"\n            >\n              <SheetHeader>\n                <SheetTitle>Edit profile</SheetTitle>\n                <SheetDescription>\n                  Make changes to your profile here. Click save when you&apos;re\n                  done.\n                </SheetDescription>\n              </SheetHeader>\n              <div className=\"no-scrollbar overflow-y-auto style-vega:px-4 style-nova:px-4 style-lyra:px-4 style-maia:px-6 style-mira:px-6\">\n                {Array.from({ length: 10 }).map((_, index) => (\n                  <p\n                    key={index}\n                    className=\"mb-4 leading-normal style-lyra:mb-2 style-lyra:leading-relaxed\"\n                  >\n                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n                    do eiusmod tempor incididunt ut labore et dolore magna\n                    aliqua. Ut enim ad minim veniam, quis nostrud exercitation\n                    ullamco laboris nisi ut aliquip ex ea commodo consequat.\n                    Duis aute irure dolor in reprehenderit in voluptate velit\n                    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\n                    occaecat cupidatat non proident, sunt in culpa qui officia\n                    deserunt mollit anim id est laborum.\n                  </p>\n                ))}\n              </div>\n              <SheetFooter>\n                <Button type=\"submit\">Save changes</Button>\n                <SheetClose asChild>\n                  <Button variant=\"outline\">Cancel</Button>\n                </SheetClose>\n              </SheetFooter>\n            </SheetContent>\n          </Sheet>\n        ))}\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/sidebar-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SidebarExample() {\n  const data = {\n    versions: [\"1.0.1\", \"1.1.0-alpha\", \"2.0.0-beta1\"],\n    navMain: [\n      {\n        title: \"Getting Started\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Installation\",\n            url: \"#\",\n          },\n          {\n            title: \"Project Structure\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Build Your Application\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Routing\",\n            url: \"#\",\n          },\n          {\n            title: \"Data Fetching\",\n            url: \"#\",\n            isActive: true,\n          },\n          {\n            title: \"Rendering\",\n            url: \"#\",\n          },\n          {\n            title: \"Caching\",\n            url: \"#\",\n          },\n          {\n            title: \"Styling\",\n            url: \"#\",\n          },\n          {\n            title: \"Optimizing\",\n            url: \"#\",\n          },\n          {\n            title: \"Configuring\",\n            url: \"#\",\n          },\n          {\n            title: \"Testing\",\n            url: \"#\",\n          },\n          {\n            title: \"Authentication\",\n            url: \"#\",\n          },\n          {\n            title: \"Deploying\",\n            url: \"#\",\n          },\n          {\n            title: \"Upgrading\",\n            url: \"#\",\n          },\n          {\n            title: \"Examples\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"API Reference\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Components\",\n            url: \"#\",\n          },\n          {\n            title: \"File Conventions\",\n            url: \"#\",\n          },\n          {\n            title: \"Functions\",\n            url: \"#\",\n          },\n          {\n            title: \"next.config.js Options\",\n            url: \"#\",\n          },\n          {\n            title: \"CLI\",\n            url: \"#\",\n          },\n          {\n            title: \"Edge Runtime\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Architecture\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Accessibility\",\n            url: \"#\",\n          },\n          {\n            title: \"Fast Refresh\",\n            url: \"#\",\n          },\n          {\n            title: \"Next.js Compiler\",\n            url: \"#\",\n          },\n          {\n            title: \"Supported Browsers\",\n            url: \"#\",\n          },\n          {\n            title: \"Turbopack\",\n            url: \"#\",\n          },\n        ],\n      },\n    ],\n  }\n\n  const [selectedVersion, setSelectedVersion] = React.useState(data.versions[0])\n\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <SidebarMenuButton\n                    size=\"lg\"\n                    className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n                  >\n                    <Item className=\"p-0\" size=\"xs\">\n                      <ItemContent>\n                        <ItemTitle className=\"text-sm\">Documentation</ItemTitle>\n                        <ItemDescription>v{selectedVersion}</ItemDescription>\n                      </ItemContent>\n                      <ItemActions>\n                        <IconPlaceholder\n                          lucide=\"ChevronsUpDownIcon\"\n                          tabler=\"IconSelector\"\n                          hugeicons=\"UnfoldMoreIcon\"\n                          phosphor=\"CaretUpDownIcon\"\n                          remixicon=\"RiArrowUpDownLine\"\n                        />\n                      </ItemActions>\n                    </Item>\n                  </SidebarMenuButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent>\n                  <DropdownMenuGroup>\n                    {data.versions.map((version) => (\n                      <DropdownMenuItem\n                        key={version}\n                        onSelect={() => setSelectedVersion(version)}\n                      >\n                        v{version}{\" \"}\n                        {version === selectedVersion && (\n                          <IconPlaceholder\n                            lucide=\"CheckIcon\"\n                            tabler=\"IconCheck\"\n                            hugeicons=\"Tick02Icon\"\n                            phosphor=\"CheckIcon\"\n                            remixicon=\"RiCheckLine\"\n                            className=\"ml-auto\"\n                          />\n                        )}\n                      </DropdownMenuItem>\n                    ))}\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n          <form>\n            <SidebarGroup className=\"py-0\">\n              <SidebarGroupContent className=\"relative\">\n                <Label htmlFor=\"search\" className=\"sr-only\">\n                  Search\n                </Label>\n                <SidebarInput\n                  id=\"search\"\n                  placeholder=\"Search the docs...\"\n                  className=\"pl-8\"\n                />\n                <IconPlaceholder\n                  lucide=\"SearchIcon\"\n                  tabler=\"IconSearch\"\n                  hugeicons=\"SearchIcon\"\n                  phosphor=\"MagnifyingGlassIcon\"\n                  remixicon=\"RiSearchLine\"\n                  className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\"\n                />\n              </SidebarGroupContent>\n            </SidebarGroup>\n          </form>\n        </SidebarHeader>\n        <SidebarContent>\n          {data.navMain.map((item) => (\n            <SidebarGroup key={item.title}>\n              <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\n              <SidebarGroupContent>\n                <SidebarMenu>\n                  {item.items.map((subItem) => (\n                    <SidebarMenuItem key={subItem.title}>\n                      <SidebarMenuButton asChild isActive={subItem.isActive}>\n                        <a href={subItem.url}>{subItem.title}</a>\n                      </SidebarMenuButton>\n                    </SidebarMenuItem>\n                  ))}\n                </SidebarMenu>\n              </SidebarGroupContent>\n            </SidebarGroup>\n          ))}\n        </SidebarContent>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/sidebar-floating-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/bases/radix/ui/card\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { Field } from \"@/registry/bases/radix/ui/field\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SidebarFloatingExample() {\n  const data = {\n    navMain: [\n      {\n        title: \"Getting Started\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Installation\",\n            url: \"#\",\n          },\n          {\n            title: \"Project Structure\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Build Your Application\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Routing\",\n            url: \"#\",\n          },\n          {\n            title: \"Data Fetching\",\n            url: \"#\",\n            isActive: true,\n          },\n          {\n            title: \"Rendering\",\n            url: \"#\",\n          },\n          {\n            title: \"Caching\",\n            url: \"#\",\n          },\n          {\n            title: \"Styling\",\n            url: \"#\",\n          },\n          {\n            title: \"Optimizing\",\n            url: \"#\",\n          },\n          {\n            title: \"Configuring\",\n            url: \"#\",\n          },\n          {\n            title: \"Testing\",\n            url: \"#\",\n          },\n          {\n            title: \"Authentication\",\n            url: \"#\",\n          },\n          {\n            title: \"Deploying\",\n            url: \"#\",\n          },\n          {\n            title: \"Upgrading\",\n            url: \"#\",\n          },\n          {\n            title: \"Examples\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"API Reference\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Components\",\n            url: \"#\",\n          },\n          {\n            title: \"File Conventions\",\n            url: \"#\",\n          },\n          {\n            title: \"Functions\",\n            url: \"#\",\n          },\n          {\n            title: \"next.config.js Options\",\n            url: \"#\",\n          },\n          {\n            title: \"CLI\",\n            url: \"#\",\n          },\n          {\n            title: \"Edge Runtime\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Architecture\",\n        url: \"#\",\n        items: [\n          {\n            title: \"Accessibility\",\n            url: \"#\",\n          },\n          {\n            title: \"Fast Refresh\",\n            url: \"#\",\n          },\n          {\n            title: \"Next.js Compiler\",\n            url: \"#\",\n          },\n          {\n            title: \"Supported Browsers\",\n            url: \"#\",\n          },\n          {\n            title: \"Turbopack\",\n            url: \"#\",\n          },\n        ],\n      },\n    ],\n  }\n\n  return (\n    <SidebarProvider className=\"bg-background\">\n      <Sidebar variant=\"floating\">\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <SidebarMenuButton size=\"lg\" asChild>\n                <a href=\"#\">\n                  <Item className=\"p-0\" size=\"xs\">\n                    <ItemContent>\n                      <ItemTitle className=\"text-sm\">Documentation</ItemTitle>\n                      <ItemDescription>v1.0.0</ItemDescription>\n                    </ItemContent>\n                  </Item>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <DropdownMenu key={item.title}>\n                  <SidebarMenuItem>\n                    <DropdownMenuTrigger asChild>\n                      <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\">\n                        {item.title}{\" \"}\n                        <IconPlaceholder\n                          lucide=\"MoreHorizontalIcon\"\n                          tabler=\"IconDots\"\n                          hugeicons=\"MoreHorizontalCircle01Icon\"\n                          phosphor=\"DotsThreeOutlineIcon\"\n                          remixicon=\"RiMoreLine\"\n                          className=\"ml-auto\"\n                        />\n                      </SidebarMenuButton>\n                    </DropdownMenuTrigger>\n                    {item.items?.length ? (\n                      <DropdownMenuContent side=\"right\" align=\"start\">\n                        <DropdownMenuGroup>\n                          {item.items.map((subItem) => (\n                            <DropdownMenuItem asChild key={subItem.title}>\n                              <a href={subItem.url}>{subItem.title}</a>\n                            </DropdownMenuItem>\n                          ))}\n                        </DropdownMenuGroup>\n                      </DropdownMenuContent>\n                    ) : null}\n                  </SidebarMenuItem>\n                </DropdownMenu>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <SidebarGroup>\n            <Card size=\"sm\" className=\"-mx-2\">\n              <CardHeader>\n                <CardTitle className=\"text-sm\">\n                  Subscribe to our newsletter\n                </CardTitle>\n                <CardDescription>\n                  Opt-in to receive updates and news about the sidebar.\n                </CardDescription>\n              </CardHeader>\n              <CardContent>\n                <form>\n                  <Field>\n                    <SidebarInput type=\"email\" placeholder=\"Email\" />\n                    <Button\n                      className=\"w-full bg-sidebar-primary text-sidebar-primary-foreground\"\n                      size=\"sm\"\n                    >\n                      Subscribe\n                    </Button>\n                  </Field>\n                </form>\n              </CardContent>\n            </Card>\n          </SidebarGroup>\n        </SidebarFooter>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/sidebar-icon-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/bases/radix/ui/avatar\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/bases/radix/ui/item\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SidebarIconExample() {\n  const data = {\n    user: {\n      name: \"shadcn\",\n      email: \"m@example.com\",\n      avatar: \"/avatars/shadcn.jpg\",\n    },\n    teams: [\n      {\n        name: \"Acme Inc\",\n        plan: \"Enterprise\",\n      },\n      {\n        name: \"Acme Corp.\",\n        plan: \"Startup\",\n      },\n      {\n        name: \"Evil Corp.\",\n        plan: \"Free\",\n      },\n    ],\n    navMain: [\n      {\n        title: \"Playground\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"TerminalSquareIcon\"\n            tabler=\"IconTerminal2\"\n            hugeicons=\"ComputerTerminalIcon\"\n            phosphor=\"TerminalIcon\"\n            remixicon=\"RiTerminalBoxLine\"\n          />\n        ),\n        isActive: true,\n        items: [\n          {\n            title: \"History\",\n            url: \"#\",\n          },\n          {\n            title: \"Starred\",\n            url: \"#\",\n          },\n          {\n            title: \"Settings\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Models\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"BotIcon\"\n            tabler=\"IconRobot\"\n            hugeicons=\"RoboticIcon\"\n            phosphor=\"RobotIcon\"\n            remixicon=\"RiRobotLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"Genesis\",\n            url: \"#\",\n          },\n          {\n            title: \"Explorer\",\n            url: \"#\",\n          },\n          {\n            title: \"Quantum\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Documentation\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"BookOpen\"\n            tabler=\"IconBook\"\n            hugeicons=\"BookOpen02Icon\"\n            phosphor=\"BookOpenIcon\"\n            remixicon=\"RiBookOpenLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"Introduction\",\n            url: \"#\",\n          },\n          {\n            title: \"Get Started\",\n            url: \"#\",\n          },\n          {\n            title: \"Tutorials\",\n            url: \"#\",\n          },\n          {\n            title: \"Changelog\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Settings\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"Settings2Icon\"\n            tabler=\"IconSettings\"\n            hugeicons=\"Settings05Icon\"\n            phosphor=\"GearIcon\"\n            remixicon=\"RiSettingsLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"General\",\n            url: \"#\",\n          },\n          {\n            title: \"Team\",\n            url: \"#\",\n          },\n          {\n            title: \"Billing\",\n            url: \"#\",\n          },\n          {\n            title: \"Limits\",\n            url: \"#\",\n          },\n        ],\n      },\n    ],\n    projects: [\n      {\n        name: \"Design Engineering\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"FrameIcon\"\n            tabler=\"IconFrame\"\n            hugeicons=\"CropIcon\"\n            phosphor=\"CropIcon\"\n            remixicon=\"RiCropLine\"\n          />\n        ),\n      },\n      {\n        name: \"Sales & Marketing\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"PieChartIcon\"\n            tabler=\"IconChartPie\"\n            hugeicons=\"PieChartIcon\"\n            phosphor=\"ChartPieIcon\"\n            remixicon=\"RiPieChartLine\"\n          />\n        ),\n      },\n      {\n        name: \"Travel\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"MapIcon\"\n            tabler=\"IconMap\"\n            hugeicons=\"MapsIcon\"\n            phosphor=\"MapTrifoldIcon\"\n            remixicon=\"RiMapLine\"\n          />\n        ),\n      },\n    ],\n  }\n\n  const [activeTeam, setActiveTeam] = React.useState(data.teams[0])\n\n  return (\n    <SidebarProvider>\n      <Sidebar collapsible=\"icon\">\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <SidebarMenuButton\n                    size=\"lg\"\n                    className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n                  >\n                    <Button size=\"icon-sm\" asChild className=\"size-8\">\n                      <span>\n                        <svg\n                          xmlns=\"http://www.w3.org/2000/svg\"\n                          viewBox=\"0 0 256 256\"\n                        >\n                          <rect width=\"256\" height=\"256\" fill=\"none\"></rect>\n                          <line\n                            x1=\"208\"\n                            y1=\"128\"\n                            x2=\"128\"\n                            y2=\"208\"\n                            fill=\"none\"\n                            stroke=\"currentColor\"\n                            strokeLinecap=\"round\"\n                            strokeLinejoin=\"round\"\n                            strokeWidth=\"32\"\n                          ></line>\n                          <line\n                            x1=\"192\"\n                            y1=\"40\"\n                            x2=\"40\"\n                            y2=\"192\"\n                            fill=\"none\"\n                            stroke=\"currentColor\"\n                            strokeLinecap=\"round\"\n                            strokeLinejoin=\"round\"\n                            strokeWidth=\"32\"\n                          ></line>\n                        </svg>\n                      </span>\n                    </Button>\n                    <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                      <span className=\"truncate font-medium\">\n                        {activeTeam.name}\n                      </span>\n                      <span className=\"truncate text-xs\">\n                        {activeTeam.plan}\n                      </span>\n                    </div>\n                    <IconPlaceholder\n                      lucide=\"ChevronsUpDownIcon\"\n                      tabler=\"IconSelector\"\n                      hugeicons=\"UnfoldMoreIcon\"\n                      phosphor=\"CaretUpDownIcon\"\n                      remixicon=\"RiArrowUpDownLine\"\n                    />\n                  </SidebarMenuButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>Teams</DropdownMenuLabel>\n                    {data.teams.map((team) => (\n                      <DropdownMenuItem\n                        key={team.name}\n                        onClick={() => setActiveTeam(team)}\n                      >\n                        {team.name}\n                      </DropdownMenuItem>\n                    ))}\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Platform</SidebarGroupLabel>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <Collapsible\n                  key={item.title}\n                  asChild\n                  defaultOpen={item.isActive}\n                  className=\"group/collapsible\"\n                >\n                  <SidebarMenuItem>\n                    <SidebarMenuButton tooltip={item.title} asChild>\n                      <CollapsibleTrigger>\n                        {item.icon}\n                        <span>{item.title}</span>\n                        <IconPlaceholder\n                          lucide=\"ChevronRightIcon\"\n                          tabler=\"IconChevronRight\"\n                          hugeicons=\"ArrowRight01Icon\"\n                          phosphor=\"CaretRightIcon\"\n                          remixicon=\"RiArrowRightSLine\"\n                          className=\"ml-auto transition-transform duration-100 group-data-open/collapsible:rotate-90\"\n                        />\n                      </CollapsibleTrigger>\n                    </SidebarMenuButton>\n                    <CollapsibleContent>\n                      <SidebarMenuSub>\n                        {item.items?.map((subItem) => (\n                          <SidebarMenuSubItem key={subItem.title}>\n                            <SidebarMenuSubButton asChild>\n                              <a href={subItem.url}>{subItem.title}</a>\n                            </SidebarMenuSubButton>\n                          </SidebarMenuSubItem>\n                        ))}\n                      </SidebarMenuSub>\n                    </CollapsibleContent>\n                  </SidebarMenuItem>\n                </Collapsible>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n          <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarMenu>\n              {data.projects.map((item) => (\n                <SidebarMenuItem key={item.name}>\n                  <SidebarMenuButton asChild>\n                    <a href={item.url}>\n                      {item.icon}\n                      {item.name}\n                    </a>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <SidebarMenuButton\n                    size=\"lg\"\n                    className=\"data-open:bg-sidebar-accent data-open:text-sidebar-accent-foreground\"\n                  >\n                    <Avatar>\n                      <AvatarImage\n                        src={data.user.avatar}\n                        alt={data.user.name}\n                      />\n                      <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                    </Avatar>\n                    <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                      <span className=\"truncate font-medium\">\n                        {data.user.name}\n                      </span>\n                      <span className=\"truncate text-xs\">\n                        {data.user.email}\n                      </span>\n                    </div>\n                    <IconPlaceholder\n                      lucide=\"ChevronsUpDownIcon\"\n                      tabler=\"IconSelector\"\n                      hugeicons=\"UnfoldMoreIcon\"\n                      phosphor=\"CaretUpDownIcon\"\n                      remixicon=\"RiArrowUpDownLine\"\n                    />\n                  </SidebarMenuButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent>\n                  <DropdownMenuGroup>\n                    <DropdownMenuLabel>\n                      <Item size=\"xs\">\n                        <ItemMedia>\n                          <Avatar>\n                            <AvatarImage\n                              src={data.user.avatar}\n                              alt={data.user.name}\n                            />\n                            <AvatarFallback>CN</AvatarFallback>\n                          </Avatar>\n                        </ItemMedia>\n                        <ItemContent>\n                          <ItemTitle>{data.user.name}</ItemTitle>\n                          <ItemDescription> {data.user.email}</ItemDescription>\n                        </ItemContent>\n                      </Item>\n                    </DropdownMenuLabel>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>Account</DropdownMenuItem>\n                    <DropdownMenuItem>Billing</DropdownMenuItem>\n                    <DropdownMenuItem>Settings</DropdownMenuItem>\n                  </DropdownMenuGroup>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuGroup>\n                    <DropdownMenuItem>Log out</DropdownMenuItem>\n                  </DropdownMenuGroup>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarFooter>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/sidebar-inset-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/bases/radix/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"@/registry/bases/radix/ui/sidebar\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SidebarInsetExample() {\n  const data = {\n    navMain: [\n      {\n        title: \"Dashboard\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"HomeIcon\"\n            tabler=\"IconHome\"\n            hugeicons=\"Home01Icon\"\n            phosphor=\"HouseIcon\"\n            remixicon=\"RiHomeLine\"\n          />\n        ),\n        isActive: true,\n        items: [\n          {\n            title: \"Overview\",\n            url: \"#\",\n          },\n          {\n            title: \"Analytics\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Analytics\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"ChartLineIcon\"\n            tabler=\"IconChartLine\"\n            hugeicons=\"ChartIcon\"\n            phosphor=\"ChartLineIcon\"\n            remixicon=\"RiLineChartLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"Reports\",\n            url: \"#\",\n          },\n          {\n            title: \"Metrics\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Orders\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"ShoppingBagIcon\"\n            tabler=\"IconShoppingBag\"\n            hugeicons=\"ShoppingBag01Icon\"\n            phosphor=\"BagIcon\"\n            remixicon=\"RiShoppingBagLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"All Orders\",\n            url: \"#\",\n          },\n          {\n            title: \"Pending\",\n            url: \"#\",\n          },\n          {\n            title: \"Completed\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Products\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"ShoppingCartIcon\"\n            tabler=\"IconShoppingCart\"\n            hugeicons=\"ShoppingCart01Icon\"\n            phosphor=\"ShoppingCartIcon\"\n            remixicon=\"RiShoppingCartLine\"\n          />\n        ),\n        items: [\n          {\n            title: \"All Products\",\n            url: \"#\",\n          },\n          {\n            title: \"Categories\",\n            url: \"#\",\n          },\n        ],\n      },\n      {\n        title: \"Invoices\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"FileIcon\"\n            tabler=\"IconFile\"\n            hugeicons=\"File01Icon\"\n            phosphor=\"FileIcon\"\n            remixicon=\"RiFileLine\"\n          />\n        ),\n      },\n      {\n        title: \"Customers\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"UserIcon\"\n            tabler=\"IconUser\"\n            hugeicons=\"UserIcon\"\n            phosphor=\"UserIcon\"\n            remixicon=\"RiUserLine\"\n          />\n        ),\n      },\n      {\n        title: \"Settings\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"Settings2Icon\"\n            tabler=\"IconSettings\"\n            hugeicons=\"Settings05Icon\"\n            phosphor=\"GearIcon\"\n            remixicon=\"RiSettingsLine\"\n          />\n        ),\n      },\n    ],\n    navSecondary: [\n      {\n        title: \"Support\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"LifeBuoy\"\n            tabler=\"IconLifebuoy\"\n            hugeicons=\"ChartRingIcon\"\n            phosphor=\"LifebuoyIcon\"\n            remixicon=\"RiLifebuoyLine\"\n          />\n        ),\n      },\n      {\n        title: \"Feedback\",\n        url: \"#\",\n        icon: (\n          <IconPlaceholder\n            lucide=\"Send\"\n            tabler=\"IconSend\"\n            hugeicons=\"SentIcon\"\n            phosphor=\"PaperPlaneTiltIcon\"\n            remixicon=\"RiSendPlaneLine\"\n          />\n        ),\n      },\n    ],\n  }\n\n  return (\n    <SidebarProvider>\n      <Sidebar variant=\"inset\">\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Dashboard</SidebarGroupLabel>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <Collapsible\n                  key={item.title}\n                  asChild\n                  defaultOpen={item.isActive}\n                >\n                  <SidebarMenuItem>\n                    <SidebarMenuButton\n                      asChild\n                      tooltip={item.title}\n                      isActive={item.isActive}\n                    >\n                      <a href={item.url}>\n                        {item.icon}\n                        <span>{item.title}</span>\n                      </a>\n                    </SidebarMenuButton>\n                    {item.items?.length ? (\n                      <>\n                        <CollapsibleTrigger asChild>\n                          <SidebarMenuAction className=\"data-[state=open]:rotate-90\">\n                            <IconPlaceholder\n                              lucide=\"ChevronRightIcon\"\n                              tabler=\"IconChevronRight\"\n                              hugeicons=\"ArrowRight01Icon\"\n                              phosphor=\"CaretRightIcon\"\n                              remixicon=\"RiArrowRightSLine\"\n                            />\n                            <span className=\"sr-only\">Toggle</span>\n                          </SidebarMenuAction>\n                        </CollapsibleTrigger>\n                        <CollapsibleContent>\n                          <SidebarMenuSub>\n                            {item.items.map((subItem) => (\n                              <SidebarMenuSubItem key={subItem.title}>\n                                <SidebarMenuSubButton asChild>\n                                  <a href={subItem.url}>\n                                    <span>{subItem.title}</span>\n                                  </a>\n                                </SidebarMenuSubButton>\n                              </SidebarMenuSubItem>\n                            ))}\n                          </SidebarMenuSub>\n                        </CollapsibleContent>\n                      </>\n                    ) : null}\n                  </SidebarMenuItem>\n                </Collapsible>\n              ))}\n            </SidebarMenu>\n          </SidebarGroup>\n          <SidebarGroup className=\"mt-auto\">\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {data.navSecondary.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton asChild size=\"sm\">\n                      <a href={item.url}>\n                        {item.icon}\n                        <span>{item.title}</span>\n                      </a>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarRail />\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/skeleton-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Card, CardContent, CardHeader } from \"@/registry/bases/radix/ui/card\"\nimport { Skeleton } from \"@/registry/bases/radix/ui/skeleton\"\n\nexport default function SkeletonExample() {\n  return (\n    <ExampleWrapper>\n      <SkeletonAvatar />\n      <SkeletonCard />\n      <SkeletonText />\n      <SkeletonForm />\n      <SkeletonTable />\n    </ExampleWrapper>\n  )\n}\n\nfunction SkeletonAvatar() {\n  return (\n    <Example title=\"Avatar\">\n      <div className=\"flex w-full items-center gap-4\">\n        <Skeleton className=\"size-10 shrink-0 rounded-full\" />\n        <div className=\"grid gap-2\">\n          <Skeleton className=\"h-4 w-[150px]\" />\n          <Skeleton className=\"h-4 w-[100px]\" />\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SkeletonCard() {\n  return (\n    <Example title=\"Card\">\n      <Card className=\"w-full\">\n        <CardHeader>\n          <Skeleton className=\"h-4 w-2/3\" />\n          <Skeleton className=\"h-4 w-1/2\" />\n        </CardHeader>\n        <CardContent>\n          <Skeleton className=\"aspect-square w-full\" />\n        </CardContent>\n      </Card>\n    </Example>\n  )\n}\n\nfunction SkeletonText() {\n  return (\n    <Example title=\"Text\">\n      <div className=\"flex w-full flex-col gap-2\">\n        <Skeleton className=\"h-4 w-full\" />\n        <Skeleton className=\"h-4 w-full\" />\n        <Skeleton className=\"h-4 w-3/4\" />\n      </div>\n    </Example>\n  )\n}\n\nfunction SkeletonForm() {\n  return (\n    <Example title=\"Form\">\n      <div className=\"flex w-full flex-col gap-7\">\n        <div className=\"flex flex-col gap-3\">\n          <Skeleton className=\"h-4 w-20\" />\n          <Skeleton className=\"h-10 w-full\" />\n        </div>\n        <div className=\"flex flex-col gap-3\">\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-10 w-full\" />\n        </div>\n        <Skeleton className=\"h-9 w-24\" />\n      </div>\n    </Example>\n  )\n}\n\nfunction SkeletonTable() {\n  return (\n    <Example title=\"Table\">\n      <div className=\"flex w-full flex-col gap-2\">\n        <div className=\"flex gap-4\">\n          <Skeleton className=\"h-4 flex-1\" />\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-4 w-20\" />\n        </div>\n        <div className=\"flex gap-4\">\n          <Skeleton className=\"h-4 flex-1\" />\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-4 w-20\" />\n        </div>\n        <div className=\"flex gap-4\">\n          <Skeleton className=\"h-4 flex-1\" />\n          <Skeleton className=\"h-4 w-24\" />\n          <Skeleton className=\"h-4 w-20\" />\n        </div>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/slider-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport { Slider } from \"@/registry/bases/radix/ui/slider\"\n\nexport default function SliderExample() {\n  return (\n    <ExampleWrapper>\n      <SliderBasic />\n      <SliderRange />\n      <SliderMultiple />\n      <SliderVertical />\n      <SliderControlled />\n      <SliderDisabled />\n    </ExampleWrapper>\n  )\n}\n\nfunction SliderBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Slider defaultValue={[50]} max={100} step={1} />\n    </Example>\n  )\n}\n\nfunction SliderRange() {\n  return (\n    <Example title=\"Range\">\n      <Slider defaultValue={[25, 50]} max={100} step={5} />\n    </Example>\n  )\n}\n\nfunction SliderMultiple() {\n  return (\n    <Example title=\"Multiple Thumbs\">\n      <Slider defaultValue={[10, 20, 70]} max={100} step={10} />\n    </Example>\n  )\n}\n\nfunction SliderVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <div className=\"flex items-center gap-6\">\n        <Slider\n          defaultValue={[50]}\n          max={100}\n          step={1}\n          orientation=\"vertical\"\n          className=\"h-40\"\n        />\n        <Slider\n          defaultValue={[25]}\n          max={100}\n          step={1}\n          orientation=\"vertical\"\n          className=\"h-40\"\n        />\n      </div>\n    </Example>\n  )\n}\n\nfunction SliderControlled() {\n  const [value, setValue] = React.useState([0.3, 0.7])\n\n  return (\n    <Example title=\"Controlled\">\n      <div className=\"grid w-full gap-3\">\n        <div className=\"flex items-center justify-between gap-2\">\n          <Label htmlFor=\"slider-demo-temperature\">Temperature</Label>\n          <span className=\"text-sm text-muted-foreground\">\n            {value.join(\", \")}\n          </span>\n        </div>\n        <Slider\n          id=\"slider-demo-temperature\"\n          value={value}\n          onValueChange={setValue}\n          min={0}\n          max={1}\n          step={0.1}\n        />\n      </div>\n    </Example>\n  )\n}\n\nfunction SliderDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Slider defaultValue={[50]} max={100} step={1} disabled />\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/sonner-example.tsx",
    "content": "\"use client\"\n\nimport { toast } from \"sonner\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\n\nexport default function SonnerExample() {\n  return (\n    <ExampleWrapper>\n      <SonnerBasic />\n      <SonnerWithDescription />\n    </ExampleWrapper>\n  )\n}\n\nfunction SonnerBasic() {\n  return (\n    <Example title=\"Basic\" className=\"items-center justify-center\">\n      <Button\n        onClick={() => toast(\"Event has been created\")}\n        variant=\"outline\"\n        className=\"w-fit\"\n      >\n        Show Toast\n      </Button>\n    </Example>\n  )\n}\n\nfunction SonnerWithDescription() {\n  return (\n    <Example title=\"With Description\" className=\"items-center justify-center\">\n      <Button\n        onClick={() =>\n          toast(\"Event has been created\", {\n            description: \"Monday, January 3rd at 6:00pm\",\n          })\n        }\n        variant=\"outline\"\n        className=\"w-fit\"\n      >\n        Show Toast\n      </Button>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/spinner-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Badge } from \"@/registry/bases/radix/ui/badge\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/bases/radix/ui/empty\"\nimport { Field, FieldLabel } from \"@/registry/bases/radix/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { Spinner } from \"@/registry/bases/radix/ui/spinner\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function SpinnerExample() {\n  return (\n    <ExampleWrapper>\n      <SpinnerBasic />\n      <SpinnerInButtons />\n      <SpinnerInBadges />\n      <SpinnerInInputGroup />\n      <SpinnerInEmpty />\n    </ExampleWrapper>\n  )\n}\n\nfunction SpinnerBasic() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex items-center gap-6\">\n        <Spinner />\n        <Spinner className=\"size-6\" />\n      </div>\n    </Example>\n  )\n}\n\nfunction SpinnerInButtons() {\n  return (\n    <Example title=\"In Buttons\">\n      <div className=\"flex flex-wrap items-center gap-4\">\n        <Button>\n          <Spinner data-icon=\"inline-start\" /> Submit\n        </Button>\n        <Button disabled>\n          <Spinner data-icon=\"inline-start\" /> Disabled\n        </Button>\n        <Button variant=\"outline\" disabled>\n          <Spinner data-icon=\"inline-start\" /> Outline\n        </Button>\n        <Button variant=\"outline\" size=\"icon\" disabled>\n          <Spinner data-icon=\"inline-start\" />\n          <span className=\"sr-only\">Loading...</span>\n        </Button>\n      </div>\n    </Example>\n  )\n}\n\nfunction SpinnerInBadges() {\n  return (\n    <Example title=\"In Badges\" className=\"items-center justify-center\">\n      <div className=\"flex flex-wrap items-center justify-center gap-4\">\n        <Badge>\n          <Spinner data-icon=\"inline-start\" />\n          Badge\n        </Badge>\n        <Badge variant=\"secondary\">\n          <Spinner data-icon=\"inline-start\" />\n          Badge\n        </Badge>\n        <Badge variant=\"destructive\">\n          <Spinner data-icon=\"inline-start\" />\n          Badge\n        </Badge>\n        <Badge variant=\"outline\">\n          <Spinner data-icon=\"inline-start\" />\n          Badge\n        </Badge>\n      </div>\n    </Example>\n  )\n}\n\nfunction SpinnerInInputGroup() {\n  return (\n    <Example title=\"In Input Group\">\n      <Field>\n        <FieldLabel htmlFor=\"input-group-spinner\">Input Group</FieldLabel>\n        <InputGroup>\n          <InputGroupInput id=\"input-group-spinner\" />\n          <InputGroupAddon>\n            <Spinner />\n          </InputGroupAddon>\n        </InputGroup>\n      </Field>\n    </Example>\n  )\n}\n\nfunction SpinnerInEmpty() {\n  return (\n    <Example title=\"In Empty State\" containerClassName=\"lg:col-span-full\">\n      <Empty className=\"min-h-[300px]\">\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <Spinner />\n          </EmptyMedia>\n          <EmptyTitle>No projects yet</EmptyTitle>\n          <EmptyDescription>\n            You haven&apos;t created any projects yet. Get started by creating\n            your first project.\n          </EmptyDescription>\n        </EmptyHeader>\n        <EmptyContent>\n          <div className=\"flex gap-2\">\n            <Button asChild>\n              <a href=\"#\">Create project</a>\n            </Button>\n            <Button variant=\"outline\">Import project</Button>\n          </div>\n          <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n            <a href=\"#\">\n              Learn more{\" \"}\n              <IconPlaceholder\n                lucide=\"ArrowRightIcon\"\n                tabler=\"IconArrowRight\"\n                hugeicons=\"ArrowRight02Icon\"\n                phosphor=\"ArrowRightIcon\"\n                remixicon=\"RiArrowRightLine\"\n              />\n            </a>\n          </Button>\n        </EmptyContent>\n      </Empty>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/switch-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n  FieldTitle,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport { Switch } from \"@/registry/bases/radix/ui/switch\"\n\nexport default function SwitchExample() {\n  return (\n    <ExampleWrapper>\n      <SwitchBasic />\n      <SwitchWithDescription />\n      <SwitchDisabled />\n      <SwitchSizes />\n    </ExampleWrapper>\n  )\n}\n\nfunction SwitchBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Field orientation=\"horizontal\">\n        <Switch id=\"switch-basic\" />\n        <FieldLabel htmlFor=\"switch-basic\">Airplane Mode</FieldLabel>\n      </Field>\n    </Example>\n  )\n}\n\nfunction SwitchWithLabel() {\n  return (\n    <Example title=\"With Label\">\n      <div className=\"flex items-center gap-2\">\n        <Switch id=\"switch-bluetooth\" defaultChecked />\n        <Label htmlFor=\"switch-bluetooth\">Bluetooth</Label>\n      </div>\n    </Example>\n  )\n}\n\nfunction SwitchWithDescription() {\n  return (\n    <Example title=\"With Description\">\n      <FieldLabel htmlFor=\"switch-focus-mode\">\n        <Field orientation=\"horizontal\">\n          <FieldContent>\n            <FieldTitle>Share across devices</FieldTitle>\n            <FieldDescription>\n              Focus is shared across devices, and turns off when you leave the\n              app.\n            </FieldDescription>\n          </FieldContent>\n          <Switch id=\"switch-focus-mode\" />\n        </Field>\n      </FieldLabel>\n    </Example>\n  )\n}\n\nfunction SwitchDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <div className=\"flex flex-col gap-12\">\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-disabled-unchecked\" disabled />\n          <Label htmlFor=\"switch-disabled-unchecked\">\n            Disabled (Unchecked)\n          </Label>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-disabled-checked\" defaultChecked disabled />\n          <Label htmlFor=\"switch-disabled-checked\">Disabled (Checked)</Label>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction SwitchSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-col gap-12\">\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-size-sm\" size=\"sm\" />\n          <Label htmlFor=\"switch-size-sm\">Small</Label>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Switch id=\"switch-size-default\" size=\"default\" />\n          <Label htmlFor=\"switch-size-default\">Default</Label>\n        </div>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/table-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/bases/radix/ui/table\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$250.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$150.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$350.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$450.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$550.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$200.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$300.00\",\n    paymentMethod: \"Credit Card\",\n  },\n]\n\nexport default function TableExample() {\n  return (\n    <ExampleWrapper>\n      <TableBasic />\n      <TableWithFooter />\n      <TableSimple />\n      <TableWithBadges />\n      <TableWithActions />\n      <TableWithSelect />\n      <TableWithInput />\n    </ExampleWrapper>\n  )\n}\n\nfunction TableBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Table>\n        <TableCaption>A list of your recent invoices.</TableCaption>\n        <TableHeader>\n          <TableRow>\n            <TableHead className=\"w-[100px]\">Invoice</TableHead>\n            <TableHead>Status</TableHead>\n            <TableHead>Method</TableHead>\n            <TableHead className=\"text-right\">Amount</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {invoices.slice(0, 3).map((invoice) => (\n            <TableRow key={invoice.invoice}>\n              <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n              <TableCell>{invoice.paymentStatus}</TableCell>\n              <TableCell>{invoice.paymentMethod}</TableCell>\n              <TableCell className=\"text-right\">\n                {invoice.totalAmount}\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithFooter() {\n  return (\n    <Example title=\"With Footer\">\n      <Table>\n        <TableCaption>A list of your recent invoices.</TableCaption>\n        <TableHeader>\n          <TableRow>\n            <TableHead className=\"w-[100px]\">Invoice</TableHead>\n            <TableHead>Status</TableHead>\n            <TableHead>Method</TableHead>\n            <TableHead className=\"text-right\">Amount</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {invoices.slice(0, 3).map((invoice) => (\n            <TableRow key={invoice.invoice}>\n              <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n              <TableCell>{invoice.paymentStatus}</TableCell>\n              <TableCell>{invoice.paymentMethod}</TableCell>\n              <TableCell className=\"text-right\">\n                {invoice.totalAmount}\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n        <TableFooter>\n          <TableRow>\n            <TableCell colSpan={3}>Total</TableCell>\n            <TableCell className=\"text-right\">$2,500.00</TableCell>\n          </TableRow>\n        </TableFooter>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableSimple() {\n  return (\n    <Example title=\"Simple\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Name</TableHead>\n            <TableHead>Email</TableHead>\n            <TableHead className=\"text-right\">Role</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Sarah Chen</TableCell>\n            <TableCell>sarah.chen@acme.com</TableCell>\n            <TableCell className=\"text-right\">Admin</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Marc Rodriguez</TableCell>\n            <TableCell>marcus.rodriguez@acme.com</TableCell>\n            <TableCell className=\"text-right\">User</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Emily Watson</TableCell>\n            <TableCell>emily.watson@acme.com</TableCell>\n            <TableCell className=\"text-right\">User</TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithBadges() {\n  return (\n    <Example title=\"With Badges\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Task</TableHead>\n            <TableHead>Status</TableHead>\n            <TableHead className=\"text-right\">Priority</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Design homepage</TableCell>\n            <TableCell>\n              <span className=\"inline-flex items-center rounded-full bg-green-500/10 px-2 py-1 text-xs font-medium text-green-700 dark:text-green-400\">\n                Completed\n              </span>\n            </TableCell>\n            <TableCell className=\"text-right\">\n              <span className=\"inline-flex items-center rounded-full bg-blue-500/10 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-400\">\n                High\n              </span>\n            </TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Implement API</TableCell>\n            <TableCell>\n              <span className=\"inline-flex items-center rounded-full bg-yellow-500/10 px-2 py-1 text-xs font-medium text-yellow-700 dark:text-yellow-400\">\n                In Progress\n              </span>\n            </TableCell>\n            <TableCell className=\"text-right\">\n              <span className=\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\">\n                Medium\n              </span>\n            </TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Write tests</TableCell>\n            <TableCell>\n              <span className=\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\">\n                Pending\n              </span>\n            </TableCell>\n            <TableCell className=\"text-right\">\n              <span className=\"inline-flex items-center rounded-full bg-gray-500/10 px-2 py-1 text-xs font-medium text-gray-700 dark:text-gray-400\">\n                Low\n              </span>\n            </TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithActions() {\n  return (\n    <Example title=\"With Actions\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Product</TableHead>\n            <TableHead>Price</TableHead>\n            <TableHead className=\"text-right\">Actions</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Wireless Mouse</TableCell>\n            <TableCell>$29.99</TableCell>\n            <TableCell className=\"text-right\">\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n                    <IconPlaceholder\n                      lucide=\"MoreHorizontalIcon\"\n                      tabler=\"IconDots\"\n                      hugeicons=\"MoreHorizontalCircle01Icon\"\n                      phosphor=\"DotsThreeOutlineIcon\"\n                      remixicon=\"RiMoreLine\"\n                    />\n                    <span className=\"sr-only\">Open menu</span>\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem variant=\"destructive\">\n                    Delete\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Mechanical Keyboard</TableCell>\n            <TableCell>$129.99</TableCell>\n            <TableCell className=\"text-right\">\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n                    <IconPlaceholder\n                      lucide=\"MoreHorizontalIcon\"\n                      tabler=\"IconDots\"\n                      hugeicons=\"MoreHorizontalCircle01Icon\"\n                      phosphor=\"DotsThreeOutlineIcon\"\n                      remixicon=\"RiMoreLine\"\n                    />\n                    <span className=\"sr-only\">Open menu</span>\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem variant=\"destructive\">\n                    Delete\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">USB-C Hub</TableCell>\n            <TableCell>$49.99</TableCell>\n            <TableCell className=\"text-right\">\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n                    <IconPlaceholder\n                      lucide=\"MoreHorizontalIcon\"\n                      tabler=\"IconDots\"\n                      hugeicons=\"MoreHorizontalCircle01Icon\"\n                      phosphor=\"DotsThreeOutlineIcon\"\n                      remixicon=\"RiMoreLine\"\n                    />\n                    <span className=\"sr-only\">Open menu</span>\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem>Edit</DropdownMenuItem>\n                  <DropdownMenuItem>Duplicate</DropdownMenuItem>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem variant=\"destructive\">\n                    Delete\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithSelect() {\n  return (\n    <Example title=\"With Select\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Task</TableHead>\n            <TableHead>Assignee</TableHead>\n            <TableHead>Status</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Design homepage</TableCell>\n            <TableCell>\n              <Select defaultValue=\"sarah\">\n                <SelectTrigger className=\"w-40\" size=\"sm\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"sarah\">Sarah Chen</SelectItem>\n                    <SelectItem value=\"marcus\">Marc Rodriguez</SelectItem>\n                    <SelectItem value=\"emily\">Emily Watson</SelectItem>\n                    <SelectItem value=\"david\">David Kim</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </TableCell>\n            <TableCell>In Progress</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Implement API</TableCell>\n            <TableCell>\n              <Select defaultValue=\"marcus\">\n                <SelectTrigger className=\"w-40\" size=\"sm\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"sarah\">Sarah Chen</SelectItem>\n                    <SelectItem value=\"marcus\">Marc Rodriguez</SelectItem>\n                    <SelectItem value=\"emily\">Emily Watson</SelectItem>\n                    <SelectItem value=\"david\">David Kim</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </TableCell>\n            <TableCell>Pending</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Write tests</TableCell>\n            <TableCell>\n              <Select defaultValue=\"emily\">\n                <SelectTrigger className=\"w-40\" size=\"sm\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectGroup>\n                    <SelectItem value=\"sarah\">Sarah Chen</SelectItem>\n                    <SelectItem value=\"marcus\">Marc Rodriguez</SelectItem>\n                    <SelectItem value=\"emily\">Emily Watson</SelectItem>\n                    <SelectItem value=\"david\">David Kim</SelectItem>\n                  </SelectGroup>\n                </SelectContent>\n              </Select>\n            </TableCell>\n            <TableCell>Not Started</TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n\nfunction TableWithInput() {\n  return (\n    <Example title=\"With Input\">\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Product</TableHead>\n            <TableHead>Quantity</TableHead>\n            <TableHead>Price</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          <TableRow>\n            <TableCell className=\"font-medium\">Wireless Mouse</TableCell>\n            <TableCell>\n              <Input\n                type=\"number\"\n                defaultValue=\"1\"\n                className=\"h-8 w-20\"\n                min=\"0\"\n              />\n            </TableCell>\n            <TableCell>$29.99</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">Mechanical Keyboard</TableCell>\n            <TableCell>\n              <Input\n                type=\"number\"\n                defaultValue=\"2\"\n                className=\"h-8 w-20\"\n                min=\"0\"\n              />\n            </TableCell>\n            <TableCell>$129.99</TableCell>\n          </TableRow>\n          <TableRow>\n            <TableCell className=\"font-medium\">USB-C Hub</TableCell>\n            <TableCell>\n              <Input\n                type=\"number\"\n                defaultValue=\"1\"\n                className=\"h-8 w-20\"\n                min=\"0\"\n              />\n            </TableCell>\n            <TableCell>$49.99</TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/tabs-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/bases/radix/ui/dropdown-menu\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/bases/radix/ui/tabs\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function TabsExample() {\n  return (\n    <ExampleWrapper>\n      <TabsBasic />\n      <TabsLine />\n      <TabsVariantsComparison />\n      <TabsDisabled />\n      <TabsWithIcons />\n      <TabsIconOnly />\n      <TabsMultiple />\n      <TabsWithContent />\n      <TabsLineWithContent />\n      <TabsLineDisabled />\n      <TabsWithDropdown />\n      <TabsVertical />\n      <TabsWithInputAndButton />\n    </ExampleWrapper>\n  )\n}\n\nfunction TabsBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Tabs defaultValue=\"home\">\n        <TabsList>\n          <TabsTrigger value=\"home\">Home</TabsTrigger>\n          <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsLine() {\n  return (\n    <Example title=\"Line\">\n      <Tabs defaultValue=\"overview\">\n        <TabsList variant=\"line\">\n          <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n          <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsVariantsComparison() {\n  return (\n    <Example title=\"Variants Alignment\">\n      <div className=\"flex gap-4\">\n        <Tabs defaultValue=\"overview\">\n          <TabsList>\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          </TabsList>\n        </Tabs>\n        <Tabs defaultValue=\"overview\">\n          <TabsList variant=\"line\">\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          </TabsList>\n        </Tabs>\n      </div>\n    </Example>\n  )\n}\n\nfunction TabsDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Tabs defaultValue=\"home\">\n        <TabsList>\n          <TabsTrigger value=\"home\">Home</TabsTrigger>\n          <TabsTrigger value=\"settings\" disabled>\n            Disabled\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <Tabs defaultValue=\"preview\">\n        <TabsList>\n          <TabsTrigger value=\"preview\">\n            <IconPlaceholder\n              lucide=\"AppWindowIcon\"\n              tabler=\"IconAppWindow\"\n              hugeicons=\"CursorInWindowIcon\"\n              phosphor=\"AppWindowIcon\"\n              remixicon=\"RiWindowLine\"\n            />\n            Preview\n          </TabsTrigger>\n          <TabsTrigger value=\"code\">\n            <IconPlaceholder\n              lucide=\"CodeIcon\"\n              tabler=\"IconCode\"\n              hugeicons=\"CodeIcon\"\n              phosphor=\"CodeIcon\"\n              remixicon=\"RiCodeLine\"\n            />\n            Code\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsIconOnly() {\n  return (\n    <Example title=\"Icon Only\">\n      <Tabs defaultValue=\"home\">\n        <TabsList>\n          <TabsTrigger value=\"home\">\n            <IconPlaceholder\n              lucide=\"HomeIcon\"\n              tabler=\"IconHome\"\n              hugeicons=\"HomeIcon\"\n              phosphor=\"HouseIcon\"\n              remixicon=\"RiHomeLine\"\n            />\n          </TabsTrigger>\n          <TabsTrigger value=\"search\">\n            <IconPlaceholder\n              lucide=\"SearchIcon\"\n              tabler=\"IconSearch\"\n              hugeicons=\"SearchIcon\"\n              phosphor=\"MagnifyingGlassIcon\"\n              remixicon=\"RiSearchLine\"\n            />\n          </TabsTrigger>\n          <TabsTrigger value=\"settings\">\n            <IconPlaceholder\n              lucide=\"SettingsIcon\"\n              tabler=\"IconSettings\"\n              hugeicons=\"SettingsIcon\"\n              phosphor=\"GearIcon\"\n              remixicon=\"RiSettingsLine\"\n            />\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsMultiple() {\n  return (\n    <Example title=\"Multiple\">\n      <Tabs defaultValue=\"overview\">\n        <TabsList>\n          <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n          <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n          <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsWithContent() {\n  return (\n    <Example title=\"With Content\">\n      <Tabs defaultValue=\"account\">\n        <TabsList>\n          <TabsTrigger value=\"account\">Account</TabsTrigger>\n          <TabsTrigger value=\"password\">Password</TabsTrigger>\n          <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n        </TabsList>\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"account\">\n            Manage your account preferences and profile information.\n          </TabsContent>\n          <TabsContent value=\"password\">\n            Update your password to keep your account secure.\n          </TabsContent>\n          <TabsContent value=\"notifications\">\n            Configure how you receive notifications and alerts.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsLineWithContent() {\n  return (\n    <Example title=\"Line With Content\">\n      <Tabs defaultValue=\"account\">\n        <TabsList variant=\"line\">\n          <TabsTrigger value=\"account\">Account</TabsTrigger>\n          <TabsTrigger value=\"password\">Password</TabsTrigger>\n          <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n        </TabsList>\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"account\">\n            Manage your account preferences and profile information.\n          </TabsContent>\n          <TabsContent value=\"password\">\n            Update your password to keep your account secure.\n          </TabsContent>\n          <TabsContent value=\"notifications\">\n            Configure how you receive notifications and alerts.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsLineDisabled() {\n  return (\n    <Example title=\"Line Disabled\">\n      <Tabs defaultValue=\"overview\">\n        <TabsList variant=\"line\">\n          <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n          <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          <TabsTrigger value=\"reports\" disabled>\n            Reports\n          </TabsTrigger>\n        </TabsList>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsWithDropdown() {\n  return (\n    <Example title=\"With Dropdown\">\n      <Tabs defaultValue=\"overview\">\n        <div className=\"flex items-center justify-between\">\n          <TabsList>\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n            <TabsTrigger value=\"reports\">Reports</TabsTrigger>\n          </TabsList>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n                <IconPlaceholder\n                  lucide=\"MoreHorizontalIcon\"\n                  tabler=\"IconDots\"\n                  hugeicons=\"MoreHorizontalCircle01Icon\"\n                  phosphor=\"DotsThreeIcon\"\n                  remixicon=\"RiMoreLine\"\n                />\n                <span className=\"sr-only\">More options</span>\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\">\n              <DropdownMenuItem>Settings</DropdownMenuItem>\n              <DropdownMenuItem>Export</DropdownMenuItem>\n              <DropdownMenuSeparator />\n              <DropdownMenuItem>Archive</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </div>\n\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"overview\">\n            View your dashboard metrics and key performance indicators.\n          </TabsContent>\n          <TabsContent value=\"analytics\">\n            Detailed analytics and insights about your data.\n          </TabsContent>\n          <TabsContent value=\"reports\">\n            Generate and view custom reports.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <Tabs defaultValue=\"account\" orientation=\"vertical\">\n        <TabsList>\n          <TabsTrigger value=\"account\">Account</TabsTrigger>\n          <TabsTrigger value=\"password\">Password</TabsTrigger>\n          <TabsTrigger value=\"notifications\">Notifications</TabsTrigger>\n        </TabsList>\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"account\">\n            Manage your account preferences and profile information.\n          </TabsContent>\n          <TabsContent value=\"password\">\n            Update your password to keep your account secure. Use a strong\n            password with a mix of letters, numbers, and symbols.\n          </TabsContent>\n          <TabsContent value=\"notifications\">\n            Configure how you receive notifications and alerts. Choose which\n            types of notifications you want to receive and how you want to\n            receive them.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n\nfunction TabsWithInputAndButton() {\n  return (\n    <Example title=\"With Input and Button\" containerClassName=\"col-span-full\">\n      <Tabs defaultValue=\"overview\" className=\"mx-auto w-full max-w-lg\">\n        <div className=\"flex items-center gap-4\">\n          <TabsList>\n            <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n            <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n          </TabsList>\n          <div className=\"ml-auto flex items-center gap-2\">\n            <Input placeholder=\"Search...\" className=\"w-44\" />\n            <Button>Action</Button>\n          </div>\n        </div>\n        <div className=\"border style-vega:rounded-lg style-vega:p-6 style-nova:rounded-lg style-nova:p-4 style-lyra:rounded-none style-lyra:p-4 style-maia:rounded-xl style-maia:p-6 style-mira:rounded-md style-mira:p-4\">\n          <TabsContent value=\"overview\">\n            View your dashboard metrics and key performance indicators.\n          </TabsContent>\n          <TabsContent value=\"analytics\">\n            Detailed analytics and insights about your data.\n          </TabsContent>\n          <TabsContent value=\"reports\">\n            Generate and view custom reports.\n          </TabsContent>\n        </div>\n      </Tabs>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/textarea-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\n\nexport default function TextareaExample() {\n  return (\n    <ExampleWrapper>\n      <TextareaBasic />\n      <TextareaInvalid />\n      <TextareaWithLabel />\n      <TextareaWithDescription />\n      <TextareaDisabled />\n    </ExampleWrapper>\n  )\n}\n\nfunction TextareaBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Textarea placeholder=\"Type your message here.\" />\n    </Example>\n  )\n}\n\nfunction TextareaInvalid() {\n  return (\n    <Example title=\"Invalid\">\n      <Textarea placeholder=\"Type your message here.\" aria-invalid=\"true\" />\n    </Example>\n  )\n}\n\nfunction TextareaWithLabel() {\n  return (\n    <Example title=\"With Label\">\n      <Field>\n        <FieldLabel htmlFor=\"textarea-demo-message\">Message</FieldLabel>\n        <Textarea\n          id=\"textarea-demo-message\"\n          placeholder=\"Type your message here.\"\n          rows={6}\n        />\n      </Field>\n    </Example>\n  )\n}\n\nfunction TextareaWithDescription() {\n  return (\n    <Example title=\"With Description\">\n      <Field>\n        <FieldLabel htmlFor=\"textarea-demo-message-2\">Message</FieldLabel>\n        <Textarea\n          id=\"textarea-demo-message-2\"\n          placeholder=\"Type your message here.\"\n          rows={6}\n        />\n        <FieldDescription>\n          Type your message and press enter to send.\n        </FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction TextareaDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Field>\n        <FieldLabel htmlFor=\"textarea-demo-disabled\">Message</FieldLabel>\n        <Textarea\n          id=\"textarea-demo-disabled\"\n          placeholder=\"Type your message here.\"\n          disabled\n        />\n      </Field>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/toggle-example.tsx",
    "content": "import {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Toggle } from \"@/registry/bases/radix/ui/toggle\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ToggleExample() {\n  return (\n    <ExampleWrapper>\n      <ToggleBasic />\n      <ToggleOutline />\n      <ToggleSizes />\n      <ToggleWithButtonText />\n      <ToggleWithButtonIcon />\n      <ToggleWithButtonIconText />\n      <ToggleDisabled />\n      <ToggleWithIcon />\n    </ExampleWrapper>\n  )\n}\n\nfunction ToggleBasic() {\n  return (\n    <Example title=\"Basic\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle aria-label=\"Toggle bold\" defaultPressed>\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </Toggle>\n        <Toggle aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </Toggle>\n        <Toggle aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleOutline() {\n  return (\n    <Example title=\"Outline\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle variant=\"outline\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n          Italic\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n          Bold\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle variant=\"outline\" aria-label=\"Toggle small\" size=\"sm\">\n          Small\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle default\" size=\"default\">\n          Default\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle large\" size=\"lg\">\n          Large\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleWithButtonText() {\n  return (\n    <Example title=\"With Button Text\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"sm\" variant=\"outline\">\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle sm\" size=\"sm\">\n            Toggle\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"default\" variant=\"outline\">\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle default\" size=\"default\">\n            Toggle\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"lg\" variant=\"outline\">\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle lg\" size=\"lg\">\n            Toggle\n          </Toggle>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleWithButtonIcon() {\n  return (\n    <Example title=\"With Button Icon\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"outline\" size=\"icon-sm\">\n            <IconPlaceholder\n              lucide=\"BoldIcon\"\n              tabler=\"IconBold\"\n              hugeicons=\"TextBoldIcon\"\n              phosphor=\"TextBIcon\"\n              remixicon=\"RiBold\"\n            />\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle sm icon\" size=\"sm\">\n            <IconPlaceholder\n              lucide=\"BoldIcon\"\n              tabler=\"IconBold\"\n              hugeicons=\"TextBoldIcon\"\n              phosphor=\"TextBIcon\"\n              remixicon=\"RiBold\"\n            />\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"outline\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"ItalicIcon\"\n              tabler=\"IconItalic\"\n              hugeicons=\"TextItalicIcon\"\n              phosphor=\"TextItalicIcon\"\n              remixicon=\"RiItalic\"\n            />\n          </Button>\n          <Toggle\n            variant=\"outline\"\n            aria-label=\"Toggle default icon\"\n            size=\"default\"\n          >\n            <IconPlaceholder\n              lucide=\"ItalicIcon\"\n              tabler=\"IconItalic\"\n              hugeicons=\"TextItalicIcon\"\n              phosphor=\"TextItalicIcon\"\n              remixicon=\"RiItalic\"\n            />\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button variant=\"outline\" size=\"icon-lg\">\n            <IconPlaceholder\n              lucide=\"UnderlineIcon\"\n              tabler=\"IconUnderline\"\n              hugeicons=\"TextUnderlineIcon\"\n              phosphor=\"TextUnderlineIcon\"\n              remixicon=\"RiUnderline\"\n            />\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle lg icon\" size=\"lg\">\n            <IconPlaceholder\n              lucide=\"UnderlineIcon\"\n              tabler=\"IconUnderline\"\n              hugeicons=\"TextUnderlineIcon\"\n              phosphor=\"TextUnderlineIcon\"\n              remixicon=\"RiUnderline\"\n            />\n          </Toggle>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleWithButtonIconText() {\n  return (\n    <Example title=\"With Button Icon + Text\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"sm\" variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"BoldIcon\"\n              tabler=\"IconBold\"\n              hugeicons=\"TextBoldIcon\"\n              data-icon=\"inline-start\"\n              phosphor=\"TextBIcon\"\n              remixicon=\"RiBold\"\n            />\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle sm icon text\" size=\"sm\">\n            <IconPlaceholder\n              lucide=\"BoldIcon\"\n              tabler=\"IconBold\"\n              hugeicons=\"TextBoldIcon\"\n              phosphor=\"TextBIcon\"\n              remixicon=\"RiBold\"\n            />\n            Toggle\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"default\" variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"ItalicIcon\"\n              tabler=\"IconItalic\"\n              hugeicons=\"TextItalicIcon\"\n              phosphor=\"TextItalicIcon\"\n              remixicon=\"RiItalic\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n          <Toggle\n            variant=\"outline\"\n            aria-label=\"Toggle default icon text\"\n            size=\"default\"\n          >\n            <IconPlaceholder\n              lucide=\"ItalicIcon\"\n              tabler=\"IconItalic\"\n              hugeicons=\"TextItalicIcon\"\n              phosphor=\"TextItalicIcon\"\n              remixicon=\"RiItalic\"\n            />\n            Toggle\n          </Toggle>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <Button size=\"lg\" variant=\"outline\">\n            <IconPlaceholder\n              lucide=\"UnderlineIcon\"\n              tabler=\"IconUnderline\"\n              hugeicons=\"TextUnderlineIcon\"\n              phosphor=\"TextUnderlineIcon\"\n              remixicon=\"RiUnderline\"\n              data-icon=\"inline-start\"\n            />\n            Button\n          </Button>\n          <Toggle variant=\"outline\" aria-label=\"Toggle lg icon text\" size=\"lg\">\n            <IconPlaceholder\n              lucide=\"UnderlineIcon\"\n              tabler=\"IconUnderline\"\n              hugeicons=\"TextUnderlineIcon\"\n              phosphor=\"TextUnderlineIcon\"\n              remixicon=\"RiUnderline\"\n            />\n            Toggle\n          </Toggle>\n        </div>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle aria-label=\"Toggle disabled\" disabled>\n          Disabled\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle disabled outline\" disabled>\n          Disabled\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleWithIcon() {\n  return (\n    <Example title=\"With Icon\">\n      <div className=\"flex flex-wrap items-center gap-2\">\n        <Toggle aria-label=\"Toggle bookmark\" defaultPressed>\n          <IconPlaceholder\n            lucide=\"BookmarkIcon\"\n            tabler=\"IconBookmark\"\n            hugeicons=\"BookmarkIcon\"\n            phosphor=\"BookmarkIcon\"\n            remixicon=\"RiBookmarkLine\"\n            className=\"group-data-[state=on]/toggle:fill-accent-foreground\"\n          />\n        </Toggle>\n        <Toggle variant=\"outline\" aria-label=\"Toggle bookmark outline\">\n          <IconPlaceholder\n            lucide=\"BookmarkIcon\"\n            tabler=\"IconBookmark\"\n            hugeicons=\"BookmarkIcon\"\n            phosphor=\"BookmarkIcon\"\n            remixicon=\"RiBookmarkLine\"\n            className=\"group-data-[state=on]/toggle:fill-accent-foreground\"\n          />\n          Bookmark\n        </Toggle>\n      </div>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/toggle-group-example.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/bases/radix/ui/field\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/bases/radix/ui/select\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/bases/radix/ui/toggle-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ToggleGroupExample() {\n  return (\n    <ExampleWrapper>\n      <ToggleGroupBasic />\n      <ToggleGroupOutline />\n      <ToggleGroupOutlineWithIcons />\n      <ToggleGroupSizes />\n      <ToggleGroupSpacing />\n      <ToggleGroupWithIcons />\n      <ToggleGroupFilter />\n      <ToggleGroupDateRange />\n      <ToggleGroupSort />\n      <ToggleGroupWithInputAndSelect />\n      <ToggleGroupVertical />\n      <ToggleGroupVerticalOutline />\n      <ToggleGroupVerticalOutlineWithIcons />\n      <ToggleGroupVerticalWithSpacing />\n      <ToggleGroupFontWeightSelector />\n    </ExampleWrapper>\n  )\n}\n\nfunction ToggleGroupBasic() {\n  return (\n    <Example title=\"Basic\">\n      <ToggleGroup type=\"multiple\" spacing={1}>\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupOutline() {\n  return (\n    <Example title=\"Outline\">\n      <ToggleGroup variant=\"outline\" type=\"single\" defaultValue=\"all\">\n        <ToggleGroupItem value=\"all\" aria-label=\"Toggle all\">\n          All\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"missed\" aria-label=\"Toggle missed\">\n          Missed\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupOutlineWithIcons() {\n  return (\n    <Example title=\"Outline With Icons\">\n      <ToggleGroup variant=\"outline\" type=\"multiple\" size=\"sm\">\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupSizes() {\n  return (\n    <Example title=\"Sizes\">\n      <div className=\"flex flex-col gap-4\">\n        <ToggleGroup\n          type=\"single\"\n          size=\"sm\"\n          defaultValue=\"top\"\n          variant=\"outline\"\n        >\n          <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n            Top\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n            Bottom\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n            Left\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n            Right\n          </ToggleGroupItem>\n        </ToggleGroup>\n        <ToggleGroup type=\"single\" defaultValue=\"top\" variant=\"outline\">\n          <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n            Top\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n            Bottom\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n            Left\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n            Right\n          </ToggleGroupItem>\n        </ToggleGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleGroupSpacing() {\n  return (\n    <Example title=\"With Spacing\">\n      <ToggleGroup\n        type=\"single\"\n        size=\"sm\"\n        defaultValue=\"top\"\n        variant=\"outline\"\n        spacing={2}\n      >\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupWithIcons() {\n  return (\n    <Example title=\"With Icons\">\n      <ToggleGroup type=\"multiple\" variant=\"outline\" spacing={1} size=\"sm\">\n        <ToggleGroupItem\n          value=\"star\"\n          aria-label=\"Toggle star\"\n          className=\"aria-pressed:*:[svg]:stroke-foregfill-foreground aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground\"\n        >\n          <IconPlaceholder\n            lucide=\"StarIcon\"\n            tabler=\"IconStar\"\n            hugeicons=\"StarIcon\"\n            phosphor=\"StarIcon\"\n            remixicon=\"RiStarLine\"\n          />\n          Star\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"heart\"\n          aria-label=\"Toggle heart\"\n          className=\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\"\n        >\n          <IconPlaceholder\n            lucide=\"HeartIcon\"\n            tabler=\"IconHeart\"\n            hugeicons=\"FavouriteIcon\"\n            phosphor=\"HeartIcon\"\n            remixicon=\"RiHeartLine\"\n          />\n          Heart\n        </ToggleGroupItem>\n        <ToggleGroupItem\n          value=\"bookmark\"\n          aria-label=\"Toggle bookmark\"\n          className=\"aria-pressed:bg-transparent aria-pressed:*:[svg]:fill-foreground aria-pressed:*:[svg]:stroke-foreground\"\n        >\n          <IconPlaceholder\n            lucide=\"BookmarkIcon\"\n            tabler=\"IconBookmark\"\n            hugeicons=\"BookmarkIcon\"\n            phosphor=\"BookmarkIcon\"\n            remixicon=\"RiBookmarkLine\"\n          />\n          Bookmark\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupFilter() {\n  return (\n    <Example title=\"Filter\">\n      <ToggleGroup type=\"single\" defaultValue=\"all\" variant=\"outline\" size=\"sm\">\n        <ToggleGroupItem value=\"all\" aria-label=\"All\">\n          All\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"active\" aria-label=\"Active\">\n          Active\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"completed\" aria-label=\"Completed\">\n          Completed\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"archived\" aria-label=\"Archived\">\n          Archived\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupDateRange() {\n  return (\n    <Example title=\"Date Range\">\n      <ToggleGroup\n        type=\"single\"\n        defaultValue=\"today\"\n        variant=\"outline\"\n        size=\"sm\"\n        spacing={2}\n      >\n        <ToggleGroupItem value=\"today\" aria-label=\"Today\">\n          Today\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"week\" aria-label=\"This Week\">\n          This Week\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"month\" aria-label=\"This Month\">\n          This Month\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"year\" aria-label=\"This Year\">\n          This Year\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupSort() {\n  return (\n    <Example title=\"Sort\">\n      <ToggleGroup\n        type=\"single\"\n        defaultValue=\"newest\"\n        variant=\"outline\"\n        size=\"sm\"\n      >\n        <ToggleGroupItem value=\"newest\" aria-label=\"Newest\">\n          <IconPlaceholder\n            lucide=\"ArrowDownIcon\"\n            tabler=\"IconArrowDown\"\n            hugeicons=\"ArrowDownIcon\"\n            phosphor=\"ArrowDownIcon\"\n            remixicon=\"RiArrowDownLine\"\n          />\n          Newest\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"oldest\" aria-label=\"Oldest\">\n          <IconPlaceholder\n            lucide=\"ArrowUpIcon\"\n            tabler=\"IconArrowUp\"\n            hugeicons=\"ArrowUpIcon\"\n            phosphor=\"ArrowUpIcon\"\n            remixicon=\"RiArrowUpLine\"\n          />\n          Oldest\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"popular\" aria-label=\"Popular\">\n          <IconPlaceholder\n            lucide=\"TrendingUpIcon\"\n            tabler=\"IconTrendingUp\"\n            hugeicons=\"TradeUpIcon\"\n            phosphor=\"TrendUpIcon\"\n            remixicon=\"RiLineChartLine\"\n          />\n          Popular\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupWithInputAndSelect() {\n  return (\n    <Example title=\"With Input and Select\">\n      <div className=\"flex items-center gap-2\">\n        <Input type=\"search\" placeholder=\"Search...\" className=\"flex-1\" />\n        <Select defaultValue=\"all\">\n          <SelectTrigger className=\"w-32\">\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectGroup>\n              <SelectItem value=\"all\">All</SelectItem>\n              <SelectItem value=\"active\">Active</SelectItem>\n              <SelectItem value=\"archived\">Archived</SelectItem>\n            </SelectGroup>\n          </SelectContent>\n        </Select>\n        <ToggleGroup type=\"single\" defaultValue=\"grid\" variant=\"outline\">\n          <ToggleGroupItem value=\"grid\" aria-label=\"Grid view\">\n            Grid\n          </ToggleGroupItem>\n          <ToggleGroupItem value=\"list\" aria-label=\"List view\">\n            List\n          </ToggleGroupItem>\n        </ToggleGroup>\n      </div>\n    </Example>\n  )\n}\n\nfunction ToggleGroupVertical() {\n  return (\n    <Example title=\"Vertical\">\n      <ToggleGroup type=\"multiple\" orientation=\"vertical\" spacing={2}>\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupVerticalOutline() {\n  return (\n    <Example title=\"Vertical Outline\">\n      <ToggleGroup\n        variant=\"outline\"\n        type=\"single\"\n        defaultValue=\"all\"\n        orientation=\"vertical\"\n        size=\"sm\"\n      >\n        <ToggleGroupItem value=\"all\" aria-label=\"Toggle all\">\n          All\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"active\" aria-label=\"Toggle active\">\n          Active\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"completed\" aria-label=\"Toggle completed\">\n          Completed\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"archived\" aria-label=\"Toggle archived\">\n          Archived\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupVerticalOutlineWithIcons() {\n  return (\n    <Example title=\"Vertical Outline With Icons\">\n      <ToggleGroup\n        variant=\"outline\"\n        type=\"multiple\"\n        orientation=\"vertical\"\n        size=\"sm\"\n      >\n        <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n          <IconPlaceholder\n            lucide=\"BoldIcon\"\n            tabler=\"IconBold\"\n            hugeicons=\"TextBoldIcon\"\n            phosphor=\"TextBIcon\"\n            remixicon=\"RiBold\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n          <IconPlaceholder\n            lucide=\"ItalicIcon\"\n            tabler=\"IconItalic\"\n            hugeicons=\"TextItalicIcon\"\n            phosphor=\"TextItalicIcon\"\n            remixicon=\"RiItalic\"\n          />\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"underline\" aria-label=\"Toggle underline\">\n          <IconPlaceholder\n            lucide=\"UnderlineIcon\"\n            tabler=\"IconUnderline\"\n            hugeicons=\"TextUnderlineIcon\"\n            phosphor=\"TextUnderlineIcon\"\n            remixicon=\"RiUnderline\"\n          />\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n\nfunction ToggleGroupFontWeightSelector() {\n  const [fontWeight, setFontWeight] = React.useState(\"normal\")\n  return (\n    <Example title=\"Font Weight Selector\">\n      <Field>\n        <FieldLabel>Font Weight</FieldLabel>\n        <ToggleGroup\n          type=\"single\"\n          value={fontWeight}\n          onValueChange={(value) => setFontWeight(value)}\n          variant=\"outline\"\n          spacing={2}\n          size=\"lg\"\n        >\n          <ToggleGroupItem\n            value=\"light\"\n            aria-label=\"Light\"\n            className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n          >\n            <span className=\"text-2xl leading-none font-light\">Aa</span>\n            <span className=\"text-xs text-muted-foreground\">Light</span>\n          </ToggleGroupItem>\n          <ToggleGroupItem\n            value=\"normal\"\n            aria-label=\"Normal\"\n            className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n          >\n            <span className=\"text-2xl leading-none font-normal\">Aa</span>\n            <span className=\"text-xs text-muted-foreground\">Normal</span>\n          </ToggleGroupItem>\n          <ToggleGroupItem\n            value=\"medium\"\n            aria-label=\"Medium\"\n            className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n          >\n            <span className=\"text-2xl leading-none font-medium\">Aa</span>\n            <span className=\"text-xs text-muted-foreground\">Medium</span>\n          </ToggleGroupItem>\n          <ToggleGroupItem\n            value=\"bold\"\n            aria-label=\"Bold\"\n            className=\"flex size-16 flex-col items-center justify-center rounded-xl\"\n          >\n            <span className=\"text-2xl leading-none font-bold\">Aa</span>\n            <span className=\"text-xs text-muted-foreground\">Bold</span>\n          </ToggleGroupItem>\n        </ToggleGroup>\n        <FieldDescription>\n          Use{\" \"}\n          <code className=\"rounded-md bg-muted px-1 py-0.5 font-mono\">\n            font-{fontWeight}\n          </code>{\" \"}\n          to set the font weight.\n        </FieldDescription>\n      </Field>\n    </Example>\n  )\n}\n\nfunction ToggleGroupVerticalWithSpacing() {\n  return (\n    <Example title=\"Vertical With Spacing\">\n      <ToggleGroup\n        type=\"single\"\n        size=\"sm\"\n        defaultValue=\"top\"\n        variant=\"outline\"\n        orientation=\"vertical\"\n        spacing={2}\n      >\n        <ToggleGroupItem value=\"top\" aria-label=\"Toggle top\">\n          Top\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"bottom\" aria-label=\"Toggle bottom\">\n          Bottom\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"left\" aria-label=\"Toggle left\">\n          Left\n        </ToggleGroupItem>\n        <ToggleGroupItem value=\"right\" aria-label=\"Toggle right\">\n          Right\n        </ToggleGroupItem>\n      </ToggleGroup>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/examples/tooltip-example.tsx",
    "content": "\"use client\"\n\nimport {\n  Example,\n  ExampleWrapper,\n} from \"@/registry/bases/radix/components/example\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Kbd } from \"@/registry/bases/radix/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/radix/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function TooltipExample() {\n  return (\n    <ExampleWrapper>\n      <TooltipBasic />\n      <TooltipSides />\n      <TooltipWithIcon />\n      <TooltipLongContent />\n      <TooltipDisabled />\n      <TooltipWithKeyboard />\n      <TooltipOnLink />\n      <TooltipFormatted />\n    </ExampleWrapper>\n  )\n}\n\nfunction TooltipBasic() {\n  return (\n    <Example title=\"Basic\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Show Tooltip\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>Add to library</p>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipSides() {\n  return (\n    <Example title=\"Sides\">\n      <div className=\"flex flex-wrap gap-2\">\n        {([\"top\", \"right\", \"bottom\", \"left\"] as const).map((side) => (\n          <Tooltip key={side}>\n            <TooltipTrigger asChild>\n              <Button variant=\"outline\" className=\"w-fit capitalize\">\n                {side}\n              </Button>\n            </TooltipTrigger>\n            <TooltipContent side={side}>\n              <p>Add to library</p>\n            </TooltipContent>\n          </Tooltip>\n        ))}\n      </div>\n    </Example>\n  )\n}\n\nfunction TooltipWithIcon() {\n  return (\n    <Example title=\"With Icon\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Button variant=\"ghost\" size=\"icon\">\n            <IconPlaceholder\n              lucide=\"InfoIcon\"\n              tabler=\"IconInfoCircle\"\n              hugeicons=\"AlertCircleIcon\"\n              phosphor=\"InfoIcon\"\n              remixicon=\"RiInformationLine\"\n            />\n            <span className=\"sr-only\">Info</span>\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>Additional information</p>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipLongContent() {\n  return (\n    <Example title=\"Long Content\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Show Tooltip\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          To learn more about how this works, check out the docs. If you have\n          any questions, please reach out to us.\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipDisabled() {\n  return (\n    <Example title=\"Disabled\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <span className=\"inline-block w-fit\">\n            <Button variant=\"outline\" disabled>\n              Disabled\n            </Button>\n          </span>\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>This feature is currently unavailable</p>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipWithKeyboard() {\n  return (\n    <Example title=\"With Keyboard Shortcut\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Button variant=\"outline\" size=\"icon-sm\">\n            <IconPlaceholder\n              lucide=\"SaveIcon\"\n              tabler=\"IconDeviceFloppy\"\n              hugeicons=\"FloppyDiskIcon\"\n              phosphor=\"FloppyDiskIcon\"\n              remixicon=\"RiSaveLine\"\n            />\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          Save Changes <Kbd>S</Kbd>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipOnLink() {\n  return (\n    <Example title=\"On Link\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <a\n            href=\"#\"\n            className=\"w-fit text-sm text-primary underline-offset-4 hover:underline\"\n            onClick={(e) => e.preventDefault()}\n          >\n            Learn more\n          </a>\n        </TooltipTrigger>\n        <TooltipContent>\n          <p>Click to read the documentation</p>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n\nfunction TooltipFormatted() {\n  return (\n    <Example title=\"Formatted Content\">\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Button variant=\"outline\" className=\"w-fit\">\n            Status\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          <div className=\"flex flex-col gap-1\">\n            <p className=\"font-semibold\">Active</p>\n            <p className=\"text-xs opacity-80\">Last updated 2 hours ago</p>\n          </div>\n        </TooltipContent>\n      </Tooltip>\n    </Example>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/hooks/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const hooks: Registry[\"items\"] = [\n  {\n    name: \"use-mobile\",\n    type: \"registry:hook\",\n    files: [\n      {\n        path: \"hooks/use-mobile.ts\",\n        type: \"registry:hook\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/hooks/use-mobile.ts",
    "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n  React.useEffect(() => {\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n    const onChange = () => {\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    }\n    mql.addEventListener(\"change\", onChange)\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    return () => mql.removeEventListener(\"change\", onChange)\n  }, [])\n\n  return !!isMobile\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/internal/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const internal: Registry[\"items\"] = [\n  {\n    name: \"sink\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sink.tsx\",\n        type: \"registry:page\",\n        target: \"app/sink/page.tsx\",\n      },\n    ],\n    registryDependencies: [\n      \"accordion-example\",\n      \"alert-dialog-example\",\n      \"alert-example\",\n      \"aspect-ratio-example\",\n      \"avatar-example\",\n      \"badge-example\",\n      \"breadcrumb-example\",\n      \"button-example\",\n      \"button-group-example\",\n      \"calendar-example\",\n      \"card-example\",\n      \"carousel-example\",\n      \"chart-example\",\n      \"checkbox-example\",\n      \"collapsible-example\",\n      \"combobox-example\",\n      \"command-example\",\n      \"context-menu-example\",\n      \"dialog-example\",\n      \"drawer-example\",\n      \"dropdown-menu-example\",\n      \"empty-example\",\n      \"field-example\",\n      \"hover-card-example\",\n      \"input-example\",\n      \"input-group-example\",\n      \"input-otp-example\",\n      \"item-example\",\n      \"kbd-example\",\n      \"label-example\",\n      \"menubar-example\",\n      \"native-select-example\",\n      \"navigation-menu-example\",\n      \"pagination-example\",\n      \"popover-example\",\n      \"progress-example\",\n      \"radio-group-example\",\n      \"resizable-example\",\n      \"scroll-area-example\",\n      \"select-example\",\n      \"separator-example\",\n      \"sheet-example\",\n      \"skeleton-example\",\n      \"slider-example\",\n      \"sonner-example\",\n      \"spinner-example\",\n      \"switch-example\",\n      \"table-example\",\n      \"tabs-example\",\n      \"textarea-example\",\n      \"toggle-example\",\n      \"toggle-group-example\",\n      \"tooltip-example\",\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/internal/sink.tsx",
    "content": "import AccordionExample from \"@/registry/bases/radix/examples/accordion-example\"\nimport AlertDialogExample from \"@/registry/bases/radix/examples/alert-dialog-example\"\nimport AlertExample from \"@/registry/bases/radix/examples/alert-example\"\nimport AspectRatioExample from \"@/registry/bases/radix/examples/aspect-ratio-example\"\nimport AvatarExample from \"@/registry/bases/radix/examples/avatar-example\"\nimport BadgeExample from \"@/registry/bases/radix/examples/badge-example\"\nimport BreadcrumbExample from \"@/registry/bases/radix/examples/breadcrumb-example\"\nimport ButtonExample from \"@/registry/bases/radix/examples/button-example\"\nimport ButtonGroupExample from \"@/registry/bases/radix/examples/button-group-example\"\nimport CalendarExample from \"@/registry/bases/radix/examples/calendar-example\"\nimport CardExample from \"@/registry/bases/radix/examples/card-example\"\nimport CarouselExample from \"@/registry/bases/radix/examples/carousel-example\"\nimport ChartExample from \"@/registry/bases/radix/examples/chart-example\"\nimport CheckboxExample from \"@/registry/bases/radix/examples/checkbox-example\"\nimport CollapsibleExample from \"@/registry/bases/radix/examples/collapsible-example\"\nimport ComboboxExample from \"@/registry/bases/radix/examples/combobox-example\"\nimport CommandExample from \"@/registry/bases/radix/examples/command-example\"\nimport ContextMenuExample from \"@/registry/bases/radix/examples/context-menu-example\"\nimport DialogExample from \"@/registry/bases/radix/examples/dialog-example\"\nimport DrawerExample from \"@/registry/bases/radix/examples/drawer-example\"\nimport DropdownMenuExample from \"@/registry/bases/radix/examples/dropdown-menu-example\"\nimport EmptyExample from \"@/registry/bases/radix/examples/empty-example\"\nimport FieldExample from \"@/registry/bases/radix/examples/field-example\"\nimport HoverCardExample from \"@/registry/bases/radix/examples/hover-card-example\"\nimport InputExample from \"@/registry/bases/radix/examples/input-example\"\nimport InputGroupExample from \"@/registry/bases/radix/examples/input-group-example\"\nimport InputOtpExample from \"@/registry/bases/radix/examples/input-otp-example\"\nimport ItemExample from \"@/registry/bases/radix/examples/item-example\"\nimport KbdExample from \"@/registry/bases/radix/examples/kbd-example\"\nimport LabelExample from \"@/registry/bases/radix/examples/label-example\"\nimport MenubarExample from \"@/registry/bases/radix/examples/menubar-example\"\nimport NativeSelectExample from \"@/registry/bases/radix/examples/native-select-example\"\nimport NavigationMenuExample from \"@/registry/bases/radix/examples/navigation-menu-example\"\nimport PaginationExample from \"@/registry/bases/radix/examples/pagination-example\"\nimport PopoverExample from \"@/registry/bases/radix/examples/popover-example\"\nimport ProgressExample from \"@/registry/bases/radix/examples/progress-example\"\nimport RadioGroupExample from \"@/registry/bases/radix/examples/radio-group-example\"\nimport ResizableExample from \"@/registry/bases/radix/examples/resizable-example\"\nimport ScrollAreaExample from \"@/registry/bases/radix/examples/scroll-area-example\"\nimport SelectExample from \"@/registry/bases/radix/examples/select-example\"\nimport SeparatorExample from \"@/registry/bases/radix/examples/separator-example\"\nimport SheetExample from \"@/registry/bases/radix/examples/sheet-example\"\nimport SkeletonExample from \"@/registry/bases/radix/examples/skeleton-example\"\nimport SliderExample from \"@/registry/bases/radix/examples/slider-example\"\nimport SonnerExample from \"@/registry/bases/radix/examples/sonner-example\"\nimport SpinnerExample from \"@/registry/bases/radix/examples/spinner-example\"\nimport SwitchExample from \"@/registry/bases/radix/examples/switch-example\"\nimport TableExample from \"@/registry/bases/radix/examples/table-example\"\nimport TabsExample from \"@/registry/bases/radix/examples/tabs-example\"\nimport TextareaExample from \"@/registry/bases/radix/examples/textarea-example\"\nimport ToggleExample from \"@/registry/bases/radix/examples/toggle-example\"\nimport ToggleGroupExample from \"@/registry/bases/radix/examples/toggle-group-example\"\nimport TooltipExample from \"@/registry/bases/radix/examples/tooltip-example\"\nimport { Toaster } from \"@/registry/bases/radix/ui/sonner\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex flex-col gap-12\">\n      <AccordionExample />\n      <AlertDialogExample />\n      <AlertExample />\n      <AspectRatioExample />\n      <AvatarExample />\n      <BadgeExample />\n      <BreadcrumbExample />\n      <ButtonExample />\n      <ButtonGroupExample />\n      <CalendarExample />\n      <CardExample />\n      <CarouselExample />\n      <ChartExample />\n      <CheckboxExample />\n      <CollapsibleExample />\n      <ComboboxExample />\n      <CommandExample />\n      <ContextMenuExample />\n      <DialogExample />\n      <DrawerExample />\n      <DropdownMenuExample />\n      <EmptyExample />\n      <FieldExample />\n      <HoverCardExample />\n      <InputExample />\n      <InputGroupExample />\n      <InputOtpExample />\n      <ItemExample />\n      <KbdExample />\n      <LabelExample />\n      <MenubarExample />\n      <NativeSelectExample />\n      <NavigationMenuExample />\n      <PaginationExample />\n      <PopoverExample />\n      <ProgressExample />\n      <RadioGroupExample />\n      <ResizableExample />\n      <ScrollAreaExample />\n      <SelectExample />\n      <SeparatorExample />\n      <SheetExample />\n      <SkeletonExample />\n      <SliderExample />\n      <SonnerExample />\n      <SpinnerExample />\n      <SwitchExample />\n      <TableExample />\n      <TabsExample />\n      <TextareaExample />\n      <ToggleExample />\n      <ToggleGroupExample />\n      <TooltipExample />\n      <Toaster />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/lib/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const lib: Registry[\"items\"] = [\n  {\n    name: \"utils\",\n    type: \"registry:lib\",\n    dependencies: [\"clsx\", \"tailwind-merge\"],\n    files: [\n      {\n        path: \"lib/utils.ts\",\n        type: \"registry:lib\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/registry.ts",
    "content": "import { registryItemSchema, type Registry } from \"shadcn/schema\"\nimport { z } from \"zod\"\n\nimport { fonts } from \"@/registry/fonts\"\n\nimport { blocks } from \"./blocks/_registry\"\nimport { components } from \"./components/_registry\"\nimport { examples } from \"./examples/_registry\"\nimport { hooks } from \"./hooks/_registry\"\nimport { internal } from \"./internal/_registry\"\nimport { lib } from \"./lib/_registry\"\nimport { ui } from \"./ui/_registry\"\n\n// Shared between index and style.\nconst RADIX_STYLE = {\n  type: \"registry:style\",\n  dependencies: [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n  devDependencies: [\"tw-animate-css\", \"shadcn\"],\n  registryDependencies: [\"utils\"],\n  css: {\n    '@import \"tw-animate-css\"': {},\n    '@import \"shadcn/tailwind.css\"': {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {},\n      },\n      body: {\n        \"@apply bg-background text-foreground\": {},\n      },\n    },\n  },\n  cssVars: {},\n  files: [],\n}\n\nexport const registry = {\n  name: \"shadcn/ui\",\n  homepage: \"https://ui.shadcn.com\",\n  items: z.array(registryItemSchema).parse([\n    {\n      name: \"index\",\n      ...RADIX_STYLE,\n    },\n    {\n      name: \"style\",\n      ...RADIX_STYLE,\n    },\n    ...ui,\n    ...examples,\n    ...lib,\n    ...components,\n    ...internal,\n    ...blocks,\n    ...hooks,\n    ...fonts,\n  ]),\n} satisfies Registry\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const ui: Registry[\"items\"] = [\n  {\n    name: \"accordion\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/accordion.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/accordion\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/accordion-example.tsx\",\n        api: \"https://www.radix-ui.com/primitives/docs/components/accordion.md\",\n      },\n    },\n  },\n  {\n    name: \"alert\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/alert.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/alert\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"alert-dialog\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/alert-dialog.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/alert-dialog\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/alert-dialog-example.tsx\",\n        api: \"https://www.radix-ui.com/primitives/docs/components/alert-dialog.md\",\n      },\n    },\n  },\n  {\n    name: \"aspect-ratio\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/aspect-ratio.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/aspect-ratio\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/aspect-ratio-example.tsx\",\n        api: \"https://www.radix-ui.com/primitives/docs/components/aspect-ratio.md\",\n      },\n    },\n  },\n  {\n    name: \"avatar\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/avatar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/avatar\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/avatar-example.tsx\",\n        api: \"https://www.radix-ui.com/primitives/docs/components/avatar.md\",\n      },\n    },\n  },\n  {\n    name: \"badge\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/badge.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/badge\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/badge-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"breadcrumb\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/breadcrumb.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/breadcrumb\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/breadcrumb-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"button\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/button.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/button\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"button-group\",\n    type: \"registry:ui\",\n    registryDependencies: [\"separator\"],\n    files: [\n      {\n        path: \"ui/button-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/button-group\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/button-group-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"calendar\",\n    type: \"registry:ui\",\n    dependencies: [\"react-day-picker@latest\", \"date-fns\"],\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/calendar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/calendar\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/calendar-example.tsx\",\n        api: \"https://react-day-picker.js.org\",\n      },\n    },\n  },\n  {\n    name: \"card\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/card.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/card\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/card-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"carousel\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/carousel.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    registryDependencies: [\"button\"],\n    dependencies: [\"embla-carousel-react\"],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/carousel\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/carousel-example.tsx\",\n        api: \"https://www.embla-carousel.com/get-started/react\",\n      },\n    },\n  },\n  {\n    name: \"chart\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/chart.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    dependencies: [\"recharts@2.15.4\"],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/chart\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/chart-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"checkbox\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/checkbox.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/checkbox\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/checkbox-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/checkbox.md\",\n      },\n    },\n  },\n  {\n    name: \"collapsible\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/collapsible.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/collapsible\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/collapsible-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/collapsible.md\",\n      },\n    },\n  },\n  {\n    name: \"combobox\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\", \"input-group\"],\n    dependencies: [\"@base-ui/react\"],\n    files: [\n      {\n        path: \"ui/combobox.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/combobox\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/combobox-example.tsx\",\n        api: \"https://base-ui.com/react/components/combobox\",\n      },\n    },\n  },\n  {\n    name: \"command\",\n    type: \"registry:ui\",\n    dependencies: [\"cmdk\"],\n    registryDependencies: [\"dialog\", \"input-group\"],\n    files: [\n      {\n        path: \"ui/command.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/command\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/command-example.tsx\",\n        api: \"https://github.com/dip/cmdk\",\n      },\n    },\n  },\n  {\n    name: \"context-menu\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/context-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/context-menu\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/context-menu-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/context-menu.md\",\n      },\n    },\n  },\n  {\n    name: \"dialog\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/dialog.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/dialog\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dialog-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/dialog.md\",\n      },\n    },\n  },\n  {\n    name: \"drawer\",\n    type: \"registry:ui\",\n    dependencies: [\"vaul\"],\n    files: [\n      {\n        path: \"ui/drawer.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/drawer\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/drawer-example.tsx\",\n        api: \"https://vaul.emilkowal.ski/getting-started\",\n      },\n    },\n  },\n  {\n    name: \"dropdown-menu\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/dropdown-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/dropdown-menu\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/dropdown-menu-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/dropdown-menu.md\",\n      },\n    },\n  },\n  {\n    name: \"empty\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/empty.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/empty\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/empty-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"field\",\n    type: \"registry:ui\",\n    registryDependencies: [\"label\", \"separator\"],\n    files: [\n      {\n        path: \"ui/field.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/field\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/field-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"form\",\n    type: \"registry:ui\",\n  },\n  {\n    name: \"hover-card\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/hover-card.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/hover-card\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/hover-card-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/hover-card.md\",\n      },\n    },\n  },\n  {\n    name: \"input\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/input.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/input\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"input-group\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\", \"input\", \"textarea\"],\n    files: [\n      {\n        path: \"ui/input-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/input-group\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-group-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"input-otp\",\n    type: \"registry:ui\",\n    dependencies: [\"input-otp\"],\n    files: [\n      {\n        path: \"ui/input-otp.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/input-otp\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/input-otp-example.tsx\",\n        api: \"https://input-otp.rodz.dev\",\n      },\n    },\n  },\n  {\n    name: \"item\",\n    type: \"registry:ui\",\n    registryDependencies: [\"separator\"],\n    files: [\n      {\n        path: \"ui/item.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/item\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/item-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"label\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/label.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/label\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/label-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/label.md\",\n      },\n    },\n  },\n  {\n    name: \"menubar\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/menubar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/menubar\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/menubar-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/menubar.md\",\n      },\n    },\n  },\n  {\n    name: \"navigation-menu\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/navigation-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/navigation-menu\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/navigation-menu-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/navigation-menu.md\",\n      },\n    },\n  },\n  {\n    name: \"pagination\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/pagination.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/pagination\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/pagination-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"popover\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/popover.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/popover\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/popover-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/popover.md\",\n      },\n    },\n  },\n  {\n    name: \"progress\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/progress.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/progress\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/progress-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/progress.md\",\n      },\n    },\n  },\n  {\n    name: \"radio-group\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/radio-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/radio-group\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/radio-group-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/radio-group.md\",\n      },\n    },\n  },\n  {\n    name: \"resizable\",\n    type: \"registry:ui\",\n    dependencies: [\"react-resizable-panels\"],\n    files: [\n      {\n        path: \"ui/resizable.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/resizable\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/resizable-example.tsx\",\n        api: \"https://github.com/bvaughn/react-resizable-panels\",\n      },\n    },\n  },\n  {\n    name: \"scroll-area\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/scroll-area.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/scroll-area\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/scroll-area-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/scroll-area.md\",\n      },\n    },\n  },\n  {\n    name: \"select\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/select.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/select\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/select-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/select.md\",\n      },\n    },\n  },\n  {\n    name: \"separator\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/separator.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/separator\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/separator-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/separator.md\",\n      },\n    },\n  },\n  {\n    name: \"sheet\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/sheet.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/sheet\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sheet-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/dialog.md\",\n      },\n    },\n  },\n  {\n    name: \"sidebar\",\n    type: \"registry:ui\",\n    registryDependencies: [\n      \"button\",\n      \"separator\",\n      \"sheet\",\n      \"tooltip\",\n      \"input\",\n      \"use-mobile\",\n      \"skeleton\",\n    ],\n    files: [\n      {\n        path: \"ui/sidebar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/sidebar\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sidebar-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"skeleton\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/skeleton.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/skeleton\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/skeleton-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"slider\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/slider.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/slider\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/slider-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/slider.md\",\n      },\n    },\n  },\n  {\n    name: \"sonner\",\n    type: \"registry:ui\",\n    dependencies: [\"sonner\", \"next-themes\"],\n    files: [\n      {\n        path: \"ui/sonner.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/sonner\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/sonner-example.tsx\",\n        api: \"https://sonner.emilkowal.ski\",\n      },\n    },\n  },\n  {\n    name: \"spinner\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/spinner.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/spinner\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/spinner-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"switch\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/switch.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/switch\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/switch-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/switch.md\",\n      },\n    },\n  },\n  {\n    name: \"table\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/table.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/table\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/table-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"tabs\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/tabs.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/tabs\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tabs-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/tabs.md\",\n      },\n    },\n  },\n  {\n    name: \"textarea\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/textarea.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/textarea\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/textarea-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"toggle\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/toggle.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/toggle\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/toggle.md\",\n      },\n    },\n  },\n  {\n    name: \"toggle-group\",\n    type: \"registry:ui\",\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"ui/toggle-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/toggle-group\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/toggle-group-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/toggle-group.md\",\n      },\n    },\n  },\n  {\n    name: \"tooltip\",\n    type: \"registry:ui\",\n    docs: `The \\`tooltip\\` component has been added. Remember to wrap your app with the \\`TooltipProvider\\` component.\n\n\\`\\`\\`tsx title=\"app/layout.tsx\"\nimport { TooltipProvider } from \"@/components/ui/tooltip\"\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <TooltipProvider>{children}</TooltipProvider>\n      </body>\n    </html>\n  )\n}\n\\`\\`\\`\n`,\n    files: [\n      {\n        path: \"ui/tooltip.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/tooltip\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/tooltip-example.tsx\",\n        api: \"https://www.radix-ui.com/docs/primitives/components/tooltip.md\",\n      },\n    },\n  },\n  {\n    name: \"kbd\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/kbd.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/kbd\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/kbd-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"native-select\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/native-select.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/native-select\",\n        examples:\n          \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases/radix/examples/native-select-example.tsx\",\n      },\n    },\n  },\n  {\n    name: \"direction\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/direction.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    meta: {\n      links: {\n        docs: \"https://ui.shadcn.com/docs/components/radix/direction\",\n        api: \"https://www.radix-ui.com/primitives/docs/utilities/direction-provider.md\",\n      },\n    },\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/accordion.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Accordion({\n  className,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n  return (\n    <AccordionPrimitive.Root\n      data-slot=\"accordion\"\n      className={cn(\"cn-accordion flex w-full flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n  return (\n    <AccordionPrimitive.Item\n      data-slot=\"accordion-item\"\n      className={cn(\"cn-accordion-item\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        data-slot=\"accordion-trigger\"\n        className={cn(\n          \"cn-accordion-trigger group/accordion-trigger relative flex flex-1 items-start justify-between border border-transparent transition-all outline-none disabled:pointer-events-none disabled:opacity-50\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <IconPlaceholder\n          lucide=\"ChevronDownIcon\"\n          tabler=\"IconChevronDown\"\n          data-slot=\"accordion-trigger-icon\"\n          hugeicons=\"ArrowDown01Icon\"\n          phosphor=\"CaretDownIcon\"\n          remixicon=\"RiArrowDownSLine\"\n          className=\"cn-accordion-trigger-icon pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n        />\n        <IconPlaceholder\n          lucide=\"ChevronUpIcon\"\n          tabler=\"IconChevronUp\"\n          data-slot=\"accordion-trigger-icon\"\n          hugeicons=\"ArrowUp01Icon\"\n          phosphor=\"CaretUpIcon\"\n          remixicon=\"RiArrowUpSLine\"\n          className=\"cn-accordion-trigger-icon pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n        />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\nfunction AccordionContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n  return (\n    <AccordionPrimitive.Content\n      data-slot=\"accordion-content\"\n      className=\"cn-accordion-content overflow-hidden\"\n      {...props}\n    >\n      <div\n        className={cn(\n          \"cn-accordion-content-inner h-(--radix-accordion-content-height) [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n          className\n        )}\n      >\n        {children}\n      </div>\n    </AccordionPrimitive.Content>\n  )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/alert-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\n\nfunction AlertDialog({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n  return (\n    <AlertDialogPrimitive.Overlay\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\"cn-alert-dialog-overlay fixed inset-0 z-50\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n  size?: \"default\" | \"sm\"\n}) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content\n        data-slot=\"alert-dialog-content\"\n        data-size={size}\n        className={cn(\n          \"cn-alert-dialog-content group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n          className\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\"cn-alert-dialog-header\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        \"cn-alert-dialog-footer flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\"cn-alert-dialog-media\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\"cn-alert-dialog-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\"cn-alert-dialog-description\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Action\n        data-slot=\"alert-dialog-action\"\n        className={cn(\"cn-alert-dialog-action\", className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = \"outline\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Cancel\n        data-slot=\"alert-dialog-cancel\"\n        className={cn(\"cn-alert-dialog-cancel\", className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nconst alertVariants = cva(\"cn-alert group/alert relative w-full\", {\n  variants: {\n    variant: {\n      default: \"cn-alert-variant-default\",\n      destructive: \"cn-alert-variant-destructive\",\n    },\n  },\n  defaultVariants: {\n    variant: \"default\",\n  },\n})\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"cn-alert-title cn-font-heading [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"cn-alert-description [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-action\"\n      className={cn(\"cn-alert-action\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/aspect-ratio.tsx",
    "content": "\"use client\"\n\nimport { AspectRatio as AspectRatioPrimitive } from \"radix-ui\"\n\nfunction AspectRatio({\n  ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n  return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Avatar({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n  size?: \"default\" | \"sm\" | \"lg\"\n}) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(\n        \"cn-avatar group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarImage({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\n        \"cn-avatar-image aspect-square size-full object-cover\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"cn-avatar-fallback flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"avatar-badge\"\n      className={cn(\n        \"cn-avatar-badge absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none\",\n        \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n        \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n        \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        \"cn-avatar-group group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroupCount({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        \"cn-avatar-group-count relative flex shrink-0 items-center justify-center ring-2 ring-background\",\n        \"\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Avatar,\n  AvatarImage,\n  AvatarFallback,\n  AvatarGroup,\n  AvatarGroupCount,\n  AvatarBadge,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/badge.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nconst badgeVariants = cva(\n  \"cn-badge group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-badge-variant-default\",\n        secondary: \"cn-badge-variant-secondary\",\n        destructive: \"cn-badge-variant-destructive\",\n        outline: \"cn-badge-variant-outline\",\n        ghost: \"cn-badge-variant-ghost\",\n        link: \"cn-badge-variant-link\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"span\"\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      data-variant={variant}\n      className={cn(badgeVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/breadcrumb.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      aria-label=\"breadcrumb\"\n      data-slot=\"breadcrumb\"\n      className={cn(\"cn-breadcrumb\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n  return (\n    <ol\n      data-slot=\"breadcrumb-list\"\n      className={cn(\n        \"cn-breadcrumb-list flex flex-wrap items-center wrap-break-word\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-item\"\n      className={cn(\"cn-breadcrumb-item inline-flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbLink({\n  asChild,\n  className,\n  ...props\n}: React.ComponentProps<\"a\"> & {\n  asChild?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"breadcrumb-link\"\n      className={cn(\"cn-breadcrumb-link\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-page\"\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      className={cn(\"cn-breadcrumb-page\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\"cn-breadcrumb-separator\", className)}\n      {...props}\n    >\n      {children ?? (\n        <IconPlaceholder\n          lucide=\"ChevronRightIcon\"\n          tabler=\"IconChevronRight\"\n          hugeicons=\"ArrowRight01Icon\"\n          phosphor=\"CaretRightIcon\"\n          remixicon=\"RiArrowRightSLine\"\n          className=\"cn-rtl-flip\"\n        />\n      )}\n    </li>\n  )\n}\n\nfunction BreadcrumbEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"cn-breadcrumb-ellipsis flex items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"MoreHorizontalIcon\"\n        tabler=\"IconDots\"\n        hugeicons=\"MoreHorizontalCircle01Icon\"\n        phosphor=\"DotsThreeIcon\"\n        remixicon=\"RiMoreLine\"\n      />\n      <span className=\"sr-only\">More</span>\n    </span>\n  )\n}\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/button-group.tsx",
    "content": "import { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\n\nconst buttonGroupVariants = cva(\n  \"cn-button-group flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n  {\n    variants: {\n      orientation: {\n        horizontal:\n          \"cn-button-group-orientation-horizontal [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n        vertical:\n          \"cn-button-group-orientation-vertical flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"horizontal\",\n    },\n  }\n)\n\nfunction ButtonGroup({\n  className,\n  orientation,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"button-group\"\n      data-orientation={orientation}\n      className={cn(buttonGroupVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupText({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  asChild?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"div\"\n\n  return (\n    <Comp\n      className={cn(\n        \"cn-button-group-text flex items-center [&_svg]:pointer-events-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupSeparator({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"button-group-separator\"\n      orientation={orientation}\n      className={cn(\n        \"cn-button-group-separator relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n  buttonGroupVariants,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nconst buttonVariants = cva(\n  \"cn-button group/button inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none select-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-button-variant-default\",\n        outline: \"cn-button-variant-outline\",\n        secondary: \"cn-button-variant-secondary\",\n        ghost: \"cn-button-variant-ghost\",\n        destructive: \"cn-button-variant-destructive\",\n        link: \"cn-button-variant-link\",\n      },\n      size: {\n        default: \"cn-button-size-default\",\n        xs: \"cn-button-size-xs\",\n        sm: \"cn-button-size-sm\",\n        lg: \"cn-button-size-lg\",\n        icon: \"cn-button-size-icon\",\n        \"icon-xs\": \"cn-button-size-icon-xs\",\n        \"icon-sm\": \"cn-button-size-icon-sm\",\n        \"icon-lg\": \"cn-button-size-icon-lg\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/calendar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  DayPicker,\n  getDefaultClassNames,\n  type DayButton,\n  type Locale,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/bases/radix/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  locale,\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"cn-calendar group/calendar bg-background in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      locale={locale}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(locale?.code, { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"cn-calendar-dropdown-root relative rounded-(--cell-radius)\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute inset-0 bg-popover opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\",\n          props.showWeekNumber\n            ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n            : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\n          \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n          defaultClassNames.range_end\n        ),\n        today: cn(\n          \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <IconPlaceholder\n                lucide=\"ChevronLeftIcon\"\n                tabler=\"IconChevronLeft\"\n                hugeicons=\"ArrowLeftIcon\"\n                phosphor=\"CaretLeftIcon\"\n                remixicon=\"RiArrowLeftSLine\"\n                className={cn(\"cn-rtl-flip size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <IconPlaceholder\n                lucide=\"ChevronRightIcon\"\n                tabler=\"IconChevronRight\"\n                hugeicons=\"ArrowRightIcon\"\n                phosphor=\"CaretRightIcon\"\n                remixicon=\"RiArrowRightSLine\"\n                className={cn(\"cn-rtl-flip size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <IconPlaceholder\n              lucide=\"ChevronDownIcon\"\n              tabler=\"IconChevronDown\"\n              hugeicons=\"ArrowDownIcon\"\n              phosphor=\"CaretDownIcon\"\n              remixicon=\"RiArrowDownSLine\"\n              className={cn(\"size-4\", className)}\n              {...props}\n            />\n          )\n        },\n        DayButton: ({ ...props }) => (\n          <CalendarDayButton locale={locale} {...props} />\n        ),\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  locale,\n  ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      ref={ref}\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString(locale?.code)}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"cn-calendar-day-button relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Card({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n  return (\n    <div\n      data-slot=\"card\"\n      data-size={size}\n      className={cn(\"cn-card group/card flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        \"cn-card-header group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      className={cn(\"cn-card-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn(\"cn-card-description\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn(\n        \"cn-card-action col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"cn-card-content\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\"cn-card-footer flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardAction,\n  CardDescription,\n  CardContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/carousel.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nfunction Carousel({\n  orientation = \"horizontal\",\n  opts,\n  setApi,\n  plugins,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n  const [carouselRef, api] = useEmblaCarousel(\n    {\n      ...opts,\n      axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n    },\n    plugins\n  )\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n  const onSelect = React.useCallback((api: CarouselApi) => {\n    if (!api) return\n    setCanScrollPrev(api.canScrollPrev())\n    setCanScrollNext(api.canScrollNext())\n  }, [])\n\n  const scrollPrev = React.useCallback(() => {\n    api?.scrollPrev()\n  }, [api])\n\n  const scrollNext = React.useCallback(() => {\n    api?.scrollNext()\n  }, [api])\n\n  const handleKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === \"ArrowLeft\") {\n        event.preventDefault()\n        scrollPrev()\n      } else if (event.key === \"ArrowRight\") {\n        event.preventDefault()\n        scrollNext()\n      }\n    },\n    [scrollPrev, scrollNext]\n  )\n\n  React.useEffect(() => {\n    if (!api || !setApi) return\n    setApi(api)\n  }, [api, setApi])\n\n  React.useEffect(() => {\n    if (!api) return\n    onSelect(api)\n    api.on(\"reInit\", onSelect)\n    api.on(\"select\", onSelect)\n\n    return () => {\n      api?.off(\"select\", onSelect)\n    }\n  }, [api, onSelect])\n\n  return (\n    <CarouselContext.Provider\n      value={{\n        carouselRef,\n        api: api,\n        opts,\n        orientation:\n          orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n        scrollPrev,\n        scrollNext,\n        canScrollPrev,\n        canScrollNext,\n      }}\n    >\n      <div\n        onKeyDownCapture={handleKeyDown}\n        className={cn(\"relative\", className)}\n        role=\"region\"\n        aria-roledescription=\"carousel\"\n        data-slot=\"carousel\"\n        {...props}\n      >\n        {children}\n      </div>\n    </CarouselContext.Provider>\n  )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div\n      ref={carouselRef}\n      className=\"overflow-hidden\"\n      data-slot=\"carousel-content\"\n    >\n      <div\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      data-slot=\"carousel-item\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CarouselPrevious({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-previous\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"cn-carousel-previous absolute touch-manipulation\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -left-12 -translate-y-1/2\"\n          : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronLeftIcon\"\n        tabler=\"IconChevronLeft\"\n        hugeicons=\"ArrowLeft01Icon\"\n        phosphor=\"CaretLeftIcon\"\n        remixicon=\"RiArrowLeftSLine\"\n        className=\"cn-rtl-flip\"\n      />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n}\n\nfunction CarouselNext({\n  className,\n  variant = \"outline\",\n  size = \"icon-sm\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-next\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"cn-carousel-next absolute touch-manipulation\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -right-12 -translate-y-1/2\"\n          : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        className=\"cn-rtl-flip\"\n      />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n}\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n  useCarousel,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/chart.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode\n    icon?: React.ComponentType\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  )\n}\n\ntype ChartContextProps = {\n  config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n  const context = React.useContext(ChartContext)\n\n  if (!context) {\n    throw new Error(\"useChart must be used within a <ChartContainer />\")\n  }\n\n  return context\n}\n\nfunction ChartContainer({\n  id,\n  className,\n  children,\n  config,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  config: ChartConfig\n  children: React.ComponentProps<\n    typeof RechartsPrimitive.ResponsiveContainer\n  >[\"children\"]\n}) {\n  const uniqueId = React.useId()\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-slot=\"chart\"\n        data-chart={chartId}\n        className={cn(\n          \"cn-chart flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n          className\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([, config]) => config.theme || config.color\n  )\n\n  if (!colorConfig.length) {\n    return null\n  }\n\n  return (\n    <style\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color\n    return color ? `  --color-${key}: ${color};` : null\n  })\n  .join(\"\\n\")}\n}\n`\n          )\n          .join(\"\\n\"),\n      }}\n    />\n  )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n  active,\n  payload,\n  className,\n  indicator = \"dot\",\n  hideLabel = false,\n  hideIndicator = false,\n  label,\n  labelFormatter,\n  labelClassName,\n  formatter,\n  color,\n  nameKey,\n  labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n  React.ComponentProps<\"div\"> & {\n    hideLabel?: boolean\n    hideIndicator?: boolean\n    indicator?: \"line\" | \"dot\" | \"dashed\"\n    nameKey?: string\n    labelKey?: string\n  }) {\n  const { config } = useChart()\n\n  const tooltipLabel = React.useMemo(() => {\n    if (hideLabel || !payload?.length) {\n      return null\n    }\n\n    const [item] = payload\n    const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\n    const value =\n      !labelKey && typeof label === \"string\"\n        ? config[label as keyof typeof config]?.label || label\n        : itemConfig?.label\n\n    if (labelFormatter) {\n      return (\n        <div className={cn(\"font-medium\", labelClassName)}>\n          {labelFormatter(value, payload)}\n        </div>\n      )\n    }\n\n    if (!value) {\n      return null\n    }\n\n    return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n  }, [\n    label,\n    labelFormatter,\n    payload,\n    hideLabel,\n    labelClassName,\n    config,\n    labelKey,\n  ])\n\n  if (!active || !payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\"cn-chart-tooltip grid min-w-32 items-start\", className)}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload\n          .filter((item) => item.type !== \"none\")\n          .map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\n            const indicatorColor = color || item.payload.fill || item.color\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                  indicator === \"dot\" && \"items-center\"\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n                            {\n                              \"h-2.5 w-2.5\": indicator === \"dot\",\n                              \"w-1\": indicator === \"line\",\n                              \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                                indicator === \"dashed\",\n                              \"my-0.5\": nestLabel && indicator === \"dashed\",\n                            }\n                          )}\n                          style={\n                            {\n                              \"--color-bg\": indicatorColor,\n                              \"--color-border\": indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        \"flex flex-1 justify-between leading-none\",\n                        nestLabel ? \"items-end\" : \"items-center\"\n                      )}\n                    >\n                      <div className=\"grid gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            )\n          })}\n      </div>\n    </div>\n  )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n  className,\n  hideIcon = false,\n  payload,\n  verticalAlign = \"bottom\",\n  nameKey,\n}: React.ComponentProps<\"div\"> &\n  Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n    hideIcon?: boolean\n    nameKey?: string\n  }) {\n  const { config } = useChart()\n\n  if (!payload?.length) {\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\n        \"flex items-center justify-center gap-4\",\n        verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n        className\n      )}\n    >\n      {payload\n        .filter((item) => item.type !== \"none\")\n        .map((item) => {\n          const key = `${nameKey || item.dataKey || \"value\"}`\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          )\n        })}\n    </div>\n  )\n}\n\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string\n) {\n  if (typeof payload !== \"object\" || payload === null) {\n    return undefined\n  }\n\n  const payloadPayload =\n    \"payload\" in payload &&\n    typeof payload.payload === \"object\" &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined\n\n  let configLabelKey: string = key\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === \"string\"\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config]\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/checkbox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Checkbox({\n  className,\n  ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"cn-checkbox peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"cn-checkbox-indicator grid place-content-center text-current transition-none\"\n      >\n        <IconPlaceholder\n          lucide=\"CheckIcon\"\n          tabler=\"IconCheck\"\n          hugeicons=\"Tick02Icon\"\n          phosphor=\"CheckIcon\"\n          remixicon=\"RiCheckLine\"\n        />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/collapsible.tsx",
    "content": "\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nfunction Collapsible({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleTrigger\n      data-slot=\"collapsible-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction CollapsibleContent({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleContent\n      data-slot=\"collapsible-content\"\n      {...props}\n    />\n  )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/combobox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n  return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Trigger.Props) {\n  return (\n    <ComboboxPrimitive.Trigger\n      data-slot=\"combobox-trigger\"\n      className={cn(\"cn-combobox-trigger\", className)}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"ChevronDownIcon\"\n        tabler=\"IconChevronDown\"\n        hugeicons=\"ArrowDown01Icon\"\n        phosphor=\"CaretDownIcon\"\n        remixicon=\"RiArrowDownSLine\"\n        className=\"cn-combobox-trigger-icon pointer-events-none\"\n      />\n    </ComboboxPrimitive.Trigger>\n  )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n  return (\n    <ComboboxPrimitive.Clear\n      data-slot=\"combobox-clear\"\n      render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n      className={cn(\"cn-combobox-clear\", className)}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"XIcon\"\n        tabler=\"IconX\"\n        hugeicons=\"Cancel01Icon\"\n        phosphor=\"XIcon\"\n        remixicon=\"RiCloseLine\"\n        className=\"cn-combobox-clear-icon pointer-events-none\"\n      />\n    </ComboboxPrimitive.Clear>\n  )\n}\n\nfunction ComboboxInput({\n  className,\n  children,\n  disabled = false,\n  showTrigger = true,\n  showClear = false,\n  ...props\n}: ComboboxPrimitive.Input.Props & {\n  showTrigger?: boolean\n  showClear?: boolean\n}) {\n  return (\n    <InputGroup className={cn(\"cn-combobox-input w-auto\", className)}>\n      <ComboboxPrimitive.Input\n        render={<InputGroupInput disabled={disabled} />}\n        {...props}\n      />\n      <InputGroupAddon align=\"inline-end\">\n        {showTrigger && (\n          <InputGroupButton\n            size=\"icon-xs\"\n            variant=\"ghost\"\n            asChild\n            data-slot=\"input-group-button\"\n            className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n            disabled={disabled}\n          >\n            <ComboboxTrigger />\n          </InputGroupButton>\n        )}\n        {showClear && <ComboboxClear disabled={disabled} />}\n      </InputGroupAddon>\n      {children}\n    </InputGroup>\n  )\n}\n\nfunction ComboboxContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 6,\n  align = \"start\",\n  alignOffset = 0,\n  anchor,\n  ...props\n}: ComboboxPrimitive.Popup.Props &\n  Pick<\n    ComboboxPrimitive.Positioner.Props,\n    \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n  >) {\n  return (\n    <ComboboxPrimitive.Portal>\n      <ComboboxPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        anchor={anchor}\n        className=\"isolate z-50\"\n      >\n        <ComboboxPrimitive.Popup\n          data-slot=\"combobox-content\"\n          data-chips={!!anchor}\n          className={cn(\n            \"cn-combobox-content cn-combobox-content-logical cn-menu-target cn-menu-translucent group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) data-[chips=true]:min-w-(--anchor-width)\",\n            className\n          )}\n          {...props}\n        />\n      </ComboboxPrimitive.Positioner>\n    </ComboboxPrimitive.Portal>\n  )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n  return (\n    <ComboboxPrimitive.List\n      data-slot=\"combobox-list\"\n      className={cn(\n        \"cn-combobox-list overflow-y-auto overscroll-contain\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxItem({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Item.Props) {\n  return (\n    <ComboboxPrimitive.Item\n      data-slot=\"combobox-item\"\n      className={cn(\n        \"cn-combobox-item relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ComboboxPrimitive.ItemIndicator\n        render={<span className=\"cn-combobox-item-indicator\" />}\n      >\n        <IconPlaceholder\n          lucide=\"CheckIcon\"\n          tabler=\"IconCheck\"\n          hugeicons=\"Tick02Icon\"\n          phosphor=\"CheckIcon\"\n          remixicon=\"RiCheckLine\"\n          className=\"cn-combobox-item-indicator-icon pointer-events-none\"\n        />\n      </ComboboxPrimitive.ItemIndicator>\n    </ComboboxPrimitive.Item>\n  )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n  return (\n    <ComboboxPrimitive.Group\n      data-slot=\"combobox-group\"\n      className={cn(\"cn-combobox-group\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxLabel({\n  className,\n  ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n  return (\n    <ComboboxPrimitive.GroupLabel\n      data-slot=\"combobox-label\"\n      className={cn(\"cn-combobox-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n  return (\n    <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n  )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n  return (\n    <ComboboxPrimitive.Empty\n      data-slot=\"combobox-empty\"\n      className={cn(\"cn-combobox-empty\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxSeparator({\n  className,\n  ...props\n}: ComboboxPrimitive.Separator.Props) {\n  return (\n    <ComboboxPrimitive.Separator\n      data-slot=\"combobox-separator\"\n      className={cn(\"cn-combobox-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChips({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n  ComboboxPrimitive.Chips.Props) {\n  return (\n    <ComboboxPrimitive.Chips\n      data-slot=\"combobox-chips\"\n      className={cn(\"cn-combobox-chips\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChip({\n  className,\n  children,\n  showRemove = true,\n  ...props\n}: ComboboxPrimitive.Chip.Props & {\n  showRemove?: boolean\n}) {\n  return (\n    <ComboboxPrimitive.Chip\n      data-slot=\"combobox-chip\"\n      className={cn(\n        \"cn-combobox-chip has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showRemove && (\n        <ComboboxPrimitive.ChipRemove\n          render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n          className=\"cn-combobox-chip-remove\"\n          data-slot=\"combobox-chip-remove\"\n        >\n          <IconPlaceholder\n            lucide=\"XIcon\"\n            tabler=\"IconX\"\n            hugeicons=\"Cancel01Icon\"\n            phosphor=\"XIcon\"\n            remixicon=\"RiCloseLine\"\n            className=\"cn-combobox-chip-indicator-icon pointer-events-none\"\n          />\n        </ComboboxPrimitive.ChipRemove>\n      )}\n    </ComboboxPrimitive.Chip>\n  )\n}\n\nfunction ComboboxChipsInput({\n  className,\n  ...props\n}: ComboboxPrimitive.Input.Props) {\n  return (\n    <ComboboxPrimitive.Input\n      data-slot=\"combobox-chip-input\"\n      className={cn(\n        \"cn-combobox-chip-input min-w-16 flex-1 outline-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction useComboboxAnchor() {\n  return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n  Combobox,\n  ComboboxInput,\n  ComboboxContent,\n  ComboboxList,\n  ComboboxItem,\n  ComboboxGroup,\n  ComboboxLabel,\n  ComboboxCollection,\n  ComboboxEmpty,\n  ComboboxSeparator,\n  ComboboxChips,\n  ComboboxChip,\n  ComboboxChipsInput,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/bases/radix/ui/dialog\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n} from \"@/registry/bases/radix/ui/input-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Command({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n  return (\n    <CommandPrimitive\n      data-slot=\"command\"\n      className={cn(\n        \"cn-command flex size-full flex-col overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandDialog({\n  title = \"Command Palette\",\n  description = \"Search for a command to run...\",\n  children,\n  className,\n  showCloseButton = false,\n  ...props\n}: React.ComponentProps<typeof Dialog> & {\n  title?: string\n  description?: string\n  className?: string\n  showCloseButton?: boolean\n}) {\n  return (\n    <Dialog {...props}>\n      <DialogHeader className=\"sr-only\">\n        <DialogTitle>{title}</DialogTitle>\n        <DialogDescription>{description}</DialogDescription>\n      </DialogHeader>\n      <DialogContent\n        className={cn(\n          \"cn-command-dialog top-1/3 translate-y-0 overflow-hidden p-0\",\n          className\n        )}\n        showCloseButton={showCloseButton}\n      >\n        {children}\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction CommandInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n  return (\n    <div data-slot=\"command-input-wrapper\" className=\"cn-command-input-wrapper\">\n      <InputGroup className=\"cn-command-input-group\">\n        <CommandPrimitive.Input\n          data-slot=\"command-input\"\n          className={cn(\n            \"cn-command-input outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n            className\n          )}\n          {...props}\n        />\n        <InputGroupAddon>\n          <IconPlaceholder\n            lucide=\"SearchIcon\"\n            tabler=\"IconSearch\"\n            hugeicons=\"SearchIcon\"\n            phosphor=\"MagnifyingGlassIcon\"\n            remixicon=\"RiSearchLine\"\n            className=\"cn-command-input-icon\"\n          />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n\nfunction CommandList({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n  return (\n    <CommandPrimitive.List\n      data-slot=\"command-list\"\n      className={cn(\n        \"cn-command-list overflow-x-hidden overflow-y-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandEmpty({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n  return (\n    <CommandPrimitive.Empty\n      data-slot=\"command-empty\"\n      className={cn(\"cn-command-empty\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n  return (\n    <CommandPrimitive.Group\n      data-slot=\"command-group\"\n      className={cn(\"cn-command-group\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n  return (\n    <CommandPrimitive.Separator\n      data-slot=\"command-separator\"\n      className={cn(\"cn-command-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n  return (\n    <CommandPrimitive.Item\n      data-slot=\"command-item\"\n      className={cn(\n        \"cn-command-item group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"CheckIcon\"\n        tabler=\"IconCheck\"\n        hugeicons=\"Tick02Icon\"\n        phosphor=\"CheckIcon\"\n        remixicon=\"RiCheckLine\"\n        className=\"cn-command-item-indicator ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\"\n      />\n    </CommandPrimitive.Item>\n  )\n}\n\nfunction CommandShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"command-shortcut\"\n      className={cn(\"cn-command-shortcut\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction ContextMenu({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n  return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n  return (\n    <ContextMenuPrimitive.Trigger\n      data-slot=\"context-menu-trigger\"\n      className={cn(\"cn-context-menu-trigger select-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuGroup({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n  return (\n    <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n  )\n}\n\nfunction ContextMenuPortal({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n  return (\n    <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n  )\n}\n\nfunction ContextMenuSub({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n  return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n  return (\n    <ContextMenuPrimitive.RadioGroup\n      data-slot=\"context-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n  return (\n    <ContextMenuPrimitive.Portal>\n      <ContextMenuPrimitive.Content\n        data-slot=\"context-menu-content\"\n        className={cn(\n          \"cn-context-menu-content cn-menu-target cn-menu-translucent z-50 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto\",\n          className\n        )}\n        {...props}\n      />\n    </ContextMenuPrimitive.Portal>\n  )\n}\n\nfunction ContextMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <ContextMenuPrimitive.Item\n      data-slot=\"context-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"cn-context-menu-item group/context-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.SubTrigger\n      data-slot=\"context-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"cn-context-menu-sub-trigger flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        className=\"cn-rtl-flip ml-auto\"\n      />\n    </ContextMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction ContextMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n  return (\n    <ContextMenuPrimitive.SubContent\n      data-slot=\"context-menu-sub-content\"\n      className={cn(\n        \"cn-context-menu-sub-content cn-menu-target cn-menu-translucent z-50 origin-(--radix-context-menu-content-transform-origin) overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      data-slot=\"context-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-context-menu-checkbox-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"cn-context-menu-item-indicator pointer-events-none\">\n        <ContextMenuPrimitive.ItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </ContextMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction ContextMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.RadioItem\n      data-slot=\"context-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-context-menu-radio-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"cn-context-menu-item-indicator pointer-events-none\">\n        <ContextMenuPrimitive.ItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </ContextMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.RadioItem>\n  )\n}\n\nfunction ContextMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.Label\n      data-slot=\"context-menu-label\"\n      data-inset={inset}\n      className={cn(\"cn-context-menu-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n  return (\n    <ContextMenuPrimitive.Separator\n      data-slot=\"context-menu-separator\"\n      className={cn(\"cn-context-menu-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"context-menu-shortcut\"\n      className={cn(\"cn-context-menu-shortcut\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ContextMenu,\n  ContextMenuTrigger,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuCheckboxItem,\n  ContextMenuRadioItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuGroup,\n  ContextMenuPortal,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuRadioGroup,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Dialog({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n  return (\n    <DialogPrimitive.Overlay\n      data-slot=\"dialog-overlay\"\n      className={cn(\"cn-dialog-overlay fixed inset-0 isolate z-50\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal>\n      <DialogOverlay />\n      <DialogPrimitive.Content\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"cn-dialog-content fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n            <Button variant=\"ghost\" className=\"cn-dialog-close\" size=\"icon-sm\">\n              <IconPlaceholder\n                lucide=\"XIcon\"\n                tabler=\"IconX\"\n                hugeicons=\"Cancel01Icon\"\n                phosphor=\"XIcon\"\n                remixicon=\"RiCloseLine\"\n              />\n              <span className=\"sr-only\">Close</span>\n            </Button>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Content>\n    </DialogPortal>\n  )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-header\"\n      className={cn(\"cn-dialog-header flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogFooter({\n  className,\n  showCloseButton = false,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        \"cn-dialog-footer flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close asChild>\n          <Button variant=\"outline\">Close</Button>\n        </DialogPrimitive.Close>\n      )}\n    </div>\n  )\n}\n\nfunction DialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn(\"cn-dialog-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\"cn-dialog-description\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/direction.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Direction } from \"radix-ui\"\n\nfunction DirectionProvider({\n  dir,\n  direction,\n  children,\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\"dir\"]\n}) {\n  return (\n    <Direction.DirectionProvider dir={direction ?? dir}>\n      {children}\n    </Direction.DirectionProvider>\n  )\n}\n\nconst useDirection = Direction.useDirection\n\nexport { DirectionProvider, useDirection }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/drawer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n  return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\"cn-drawer-overlay fixed inset-0 z-50\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n  return (\n    <DrawerPortal data-slot=\"drawer-portal\">\n      <DrawerOverlay />\n      <DrawerPrimitive.Content\n        data-slot=\"drawer-content\"\n        className={cn(\n          \"cn-drawer-content group/drawer-content fixed z-50\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"cn-drawer-handle mx-auto hidden shrink-0 group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n        {children}\n      </DrawerPrimitive.Content>\n    </DrawerPortal>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\"cn-drawer-header flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\"cn-drawer-footer mt-auto flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\"cn-drawer-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"cn-drawer-description\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction DropdownMenu({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n  return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n  return (\n    <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n  )\n}\n\nfunction DropdownMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n  return (\n    <DropdownMenuPrimitive.Trigger\n      data-slot=\"dropdown-menu-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuContent({\n  className,\n  align = \"start\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n  return (\n    <DropdownMenuPrimitive.Portal>\n      <DropdownMenuPrimitive.Content\n        data-slot=\"dropdown-menu-content\"\n        sideOffset={sideOffset}\n        align={align}\n        className={cn(\n          \"cn-dropdown-menu-content cn-menu-target cn-menu-translucent z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden\",\n          className\n        )}\n        {...props}\n      />\n    </DropdownMenuPrimitive.Portal>\n  )\n}\n\nfunction DropdownMenuGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n  return (\n    <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n  )\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <DropdownMenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"cn-dropdown-menu-item group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-dropdown-menu-checkbox-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span\n        className=\"cn-dropdown-menu-item-indicator pointer-events-none\"\n        data-slot=\"dropdown-menu-checkbox-item-indicator\"\n      >\n        <DropdownMenuPrimitive.ItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction DropdownMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n  return (\n    <DropdownMenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-dropdown-menu-radio-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      <span\n        className=\"cn-dropdown-menu-item-indicator pointer-events-none\"\n        data-slot=\"dropdown-menu-radio-item-indicator\"\n      >\n        <DropdownMenuPrimitive.ItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.RadioItem>\n  )\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.Label\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\"cn-dropdown-menu-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n  return (\n    <DropdownMenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"cn-dropdown-menu-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\"cn-dropdown-menu-shortcut\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n  return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.SubTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"cn-dropdown-menu-sub-trigger flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        className=\"cn-rtl-flip ml-auto\"\n      />\n    </DropdownMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction DropdownMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n  return (\n    <DropdownMenuPrimitive.SubContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"cn-dropdown-menu-sub-content cn-menu-target cn-menu-translucent z-50 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/empty.tsx",
    "content": "import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty\"\n      className={cn(\n        \"cn-empty flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-header\"\n      className={cn(\n        \"cn-empty-header flex max-w-sm flex-col items-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst emptyMediaVariants = cva(\n  \"cn-empty-media flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-empty-media-default\",\n        icon: \"cn-empty-media-icon\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction EmptyMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n  return (\n    <div\n      data-slot=\"empty-icon\"\n      data-variant={variant}\n      className={cn(emptyMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-title\"\n      className={cn(\"cn-empty-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <div\n      data-slot=\"empty-description\"\n      className={cn(\n        \"cn-empty-description text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-content\"\n      className={cn(\n        \"cn-empty-content flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Empty,\n  EmptyHeader,\n  EmptyTitle,\n  EmptyDescription,\n  EmptyContent,\n  EmptyMedia,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/field.tsx",
    "content": "\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Label } from \"@/registry/bases/radix/ui/label\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n  return (\n    <fieldset\n      data-slot=\"field-set\"\n      className={cn(\"cn-field-set flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLegend({\n  className,\n  variant = \"legend\",\n  ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n  return (\n    <legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\"cn-field-legend\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\n        \"cn-field-group group/field-group @container/field-group flex w-full flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst fieldVariants = cva(\"cn-field group/field flex w-full\", {\n  variants: {\n    orientation: {\n      vertical:\n        \"cn-field-orientation-vertical flex-col *:w-full [&>.sr-only]:w-auto\",\n      horizontal:\n        \"cn-field-orientation-horizontal flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n      responsive:\n        \"cn-field-orientation-responsive flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n    },\n  },\n  defaultVariants: {\n    orientation: \"vertical\",\n  },\n})\n\nfunction Field({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"field\"\n      data-orientation={orientation}\n      className={cn(fieldVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn(\n        \"cn-field-content group/field-content flex flex-1 flex-col leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof Label>) {\n  return (\n    <Label\n      data-slot=\"field-label\"\n      className={cn(\n        \"cn-field-label group/field-label peer/field-label flex w-fit leading-snug\",\n        \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-label\"\n      className={cn(\n        \"cn-field-title flex w-fit items-center leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        \"cn-field-description leading-normal font-normal group-has-data-horizontal/field:text-balance\",\n        \"last:mt-0 nth-last-2:-mt-1\",\n        \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  children?: React.ReactNode\n}) {\n  return (\n    <div\n      data-slot=\"field-separator\"\n      data-content={!!children}\n      className={cn(\"cn-field-separator relative\", className)}\n      {...props}\n    >\n      <Separator className=\"absolute inset-0 top-1/2\" />\n      {children && (\n        <span\n          className=\"cn-field-separator-content relative mx-auto block w-fit bg-background\"\n          data-slot=\"field-separator-content\"\n        >\n          {children}\n        </span>\n      )}\n    </div>\n  )\n}\n\nfunction FieldError({\n  className,\n  children,\n  errors,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  errors?: Array<{ message?: string } | undefined>\n}) {\n  const content = useMemo(() => {\n    if (children) {\n      return children\n    }\n\n    if (!errors?.length) {\n      return null\n    }\n\n    const uniqueErrors = [\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\n    ]\n\n    if (uniqueErrors?.length == 1) {\n      return uniqueErrors[0]?.message\n    }\n\n    return (\n      <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n        {uniqueErrors.map(\n          (error, index) =>\n            error?.message && <li key={index}>{error.message}</li>\n        )}\n      </ul>\n    )\n  }, [children, errors])\n\n  if (!content) {\n    return null\n  }\n\n  return (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      className={cn(\"cn-field-error font-normal\", className)}\n      {...props}\n    >\n      {content}\n    </div>\n  )\n}\n\nexport {\n  Field,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldContent,\n  FieldTitle,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/hover-card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction HoverCard({\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n  return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n  return (\n    <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n  )\n}\n\nfunction HoverCardContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n  return (\n    <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n      <HoverCardPrimitive.Content\n        data-slot=\"hover-card-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"cn-hover-card-content z-50 origin-(--radix-hover-card-content-transform-origin) outline-hidden\",\n          className\n        )}\n        {...props}\n      />\n    </HoverCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport { Textarea } from \"@/registry/bases/radix/ui/textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-group\"\n      role=\"group\"\n      className={cn(\n        \"group/input-group cn-input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupAddonVariants = cva(\n  \"cn-input-group-addon flex cursor-text items-center justify-center select-none\",\n  {\n    variants: {\n      align: {\n        \"inline-start\": \"cn-input-group-addon-align-inline-start order-first\",\n        \"inline-end\": \"cn-input-group-addon-align-inline-end order-last\",\n        \"block-start\":\n          \"cn-input-group-addon-align-block-start order-first w-full justify-start\",\n        \"block-end\":\n          \"cn-input-group-addon-align-block-end order-last w-full justify-start\",\n      },\n    },\n    defaultVariants: {\n      align: \"inline-start\",\n    },\n  }\n)\n\nfunction InputGroupAddon({\n  className,\n  align = \"inline-start\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"input-group-addon\"\n      data-align={align}\n      className={cn(inputGroupAddonVariants({ align }), className)}\n      onClick={(e) => {\n        if ((e.target as HTMLElement).closest(\"button\")) {\n          return\n        }\n        e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n      }}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupButtonVariants = cva(\n  \"cn-input-group-button flex items-center shadow-none\",\n  {\n    variants: {\n      size: {\n        xs: \"cn-input-group-button-size-xs\",\n        sm: \"cn-input-group-button-size-sm\",\n        \"icon-xs\": \"cn-input-group-button-size-icon-xs\",\n        \"icon-sm\": \"cn-input-group-button-size-icon-sm\",\n      },\n    },\n    defaultVariants: {\n      size: \"xs\",\n    },\n  }\n)\n\nfunction InputGroupButton({\n  className,\n  type = \"button\",\n  variant = \"ghost\",\n  size = \"xs\",\n  ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n  VariantProps<typeof inputGroupButtonVariants>) {\n  return (\n    <Button\n      type={type}\n      data-size={size}\n      variant={variant}\n      className={cn(inputGroupButtonVariants({ size }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      className={cn(\n        \"cn-input-group-text flex items-center [&_svg]:pointer-events-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupInput({\n  className,\n  ...props\n}: React.ComponentProps<\"input\">) {\n  return (\n    <Input\n      data-slot=\"input-group-control\"\n      className={cn(\"cn-input-group-input flex-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupTextarea({\n  className,\n  ...props\n}: React.ComponentProps<\"textarea\">) {\n  return (\n    <Textarea\n      data-slot=\"input-group-control\"\n      className={cn(\"cn-input-group-textarea flex-1 resize-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupInput,\n  InputGroupTextarea,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/input-otp.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        \"cn-input-otp flex items-center has-disabled:opacity-50\",\n        containerClassName\n      )}\n      spellCheck={false}\n      className={cn(\n        \"cn-input-otp-input disabled:cursor-not-allowed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\"cn-input-otp-group flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  index: number\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext)\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        \"cn-input-otp-slot relative flex items-center justify-center data-[active=true]:z-10\",\n        className\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"cn-input-otp-caret pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"cn-input-otp-caret-line\" />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-separator\"\n      className=\"cn-input-otp-separator flex items-center\"\n      role=\"separator\"\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"MinusIcon\"\n        tabler=\"IconMinus\"\n        hugeicons=\"MinusSignIcon\"\n        phosphor=\"MinusIcon\"\n        remixicon=\"RiSubtractLine\"\n      />\n    </div>\n  )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <input\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"cn-input w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/item.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      role=\"list\"\n      data-slot=\"item-group\"\n      className={cn(\n        \"cn-item-group group/item-group flex w-full flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"item-separator\"\n      orientation=\"horizontal\"\n      className={cn(\"cn-item-separator\", className)}\n      {...props}\n    />\n  )\n}\n\nconst itemVariants = cva(\n  \"cn-item group/item flex w-full flex-wrap items-center transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-item-variant-default\",\n        outline: \"cn-item-variant-outline\",\n        muted: \"cn-item-variant-muted\",\n      },\n      size: {\n        default: \"cn-item-size-default\",\n        sm: \"cn-item-size-sm\",\n        xs: \"cn-item-size-xs\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Item({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> &\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"div\"\n  return (\n    <Comp\n      data-slot=\"item\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(itemVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nconst itemMediaVariants = cva(\n  \"cn-item-media flex shrink-0 items-center justify-center [&_svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-item-media-variant-default\",\n        icon: \"cn-item-media-variant-icon\",\n        image: \"cn-item-media-variant-image\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction ItemMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n  return (\n    <div\n      data-slot=\"item-media\"\n      data-variant={variant}\n      className={cn(itemMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-content\"\n      className={cn(\n        \"cn-item-content flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-title\"\n      className={cn(\n        \"cn-item-title cn-font-heading line-clamp-1 flex w-fit items-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"item-description\"\n      className={cn(\n        \"cn-item-description line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-actions\"\n      className={cn(\"cn-item-actions flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-header\"\n      className={cn(\n        \"cn-item-header flex basis-full items-center justify-between\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-footer\"\n      className={cn(\n        \"cn-item-footer flex basis-full items-center justify-between\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Item,\n  ItemMedia,\n  ItemContent,\n  ItemActions,\n  ItemGroup,\n  ItemSeparator,\n  ItemTitle,\n  ItemDescription,\n  ItemHeader,\n  ItemFooter,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/kbd.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      data-slot=\"kbd\"\n      className={cn(\n        \"cn-kbd pointer-events-none inline-flex items-center justify-center select-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <kbd\n      data-slot=\"kbd-group\"\n      className={cn(\"cn-kbd-group inline-flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Kbd, KbdGroup }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Label({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  return (\n    <LabelPrimitive.Root\n      data-slot=\"label\"\n      className={cn(\n        \"cn-label flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Menubar as MenubarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Menubar({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n  return (\n    <MenubarPrimitive.Root\n      data-slot=\"menubar\"\n      className={cn(\"cn-menubar flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarMenu({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n  return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n  return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n  return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n  return (\n    <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n  )\n}\n\nfunction MenubarTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n  return (\n    <MenubarPrimitive.Trigger\n      data-slot=\"menubar-trigger\"\n      className={cn(\n        \"cn-menubar-trigger flex items-center outline-hidden select-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarContent({\n  className,\n  align = \"start\",\n  alignOffset = -4,\n  sideOffset = 8,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n  return (\n    <MenubarPortal>\n      <MenubarPrimitive.Content\n        data-slot=\"menubar-content\"\n        align={align}\n        alignOffset={alignOffset}\n        sideOffset={sideOffset}\n        className={cn(\n          \"cn-menubar-content cn-menu-target cn-menu-translucent z-50 origin-(--radix-menubar-content-transform-origin) overflow-hidden\",\n          className\n        )}\n        {...props}\n      />\n    </MenubarPortal>\n  )\n}\n\nfunction MenubarItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <MenubarPrimitive.Item\n      data-slot=\"menubar-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"cn-menubar-item group/menubar-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.CheckboxItem\n      data-slot=\"menubar-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-menubar-checkbox-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"cn-menubar-checkbox-item-indicator pointer-events-none absolute flex items-center justify-center\">\n        <MenubarPrimitive.ItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </MenubarPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </MenubarPrimitive.CheckboxItem>\n  )\n}\n\nfunction MenubarRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.RadioItem\n      data-slot=\"menubar-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"cn-menubar-radio-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"cn-menubar-radio-item-indicator pointer-events-none absolute flex items-center justify-center\">\n        <MenubarPrimitive.ItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n          />\n        </MenubarPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </MenubarPrimitive.RadioItem>\n  )\n}\n\nfunction MenubarLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.Label\n      data-slot=\"menubar-label\"\n      data-inset={inset}\n      className={cn(\"cn-menubar-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n  return (\n    <MenubarPrimitive.Separator\n      data-slot=\"menubar-separator\"\n      className={cn(\"cn-menubar-separator -mx-1 my-1 h-px\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"menubar-shortcut\"\n      className={cn(\"cn-menubar-shortcut ml-auto\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSub({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n  return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.SubTrigger\n      data-slot=\"menubar-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"cn-menubar-sub-trigger flex cursor-default items-center outline-none select-none\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        className=\"cn-rtl-flip ml-auto size-4\"\n      />\n    </MenubarPrimitive.SubTrigger>\n  )\n}\n\nfunction MenubarSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n  return (\n    <MenubarPrimitive.SubContent\n      data-slot=\"menubar-sub-content\"\n      className={cn(\n        \"cn-menubar-sub-content cn-menu-target cn-menu-translucent z-50 origin-(--radix-menubar-content-transform-origin) overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Menubar,\n  MenubarPortal,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarGroup,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarItem,\n  MenubarShortcut,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSub,\n  MenubarSubTrigger,\n  MenubarSubContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/native-select.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\ntype NativeSelectProps = Omit<React.ComponentProps<\"select\">, \"size\"> & {\n  size?: \"sm\" | \"default\"\n}\n\nfunction NativeSelect({\n  className,\n  size = \"default\",\n  ...props\n}: NativeSelectProps) {\n  return (\n    <div\n      className={cn(\n        \"cn-native-select-wrapper group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n        className\n      )}\n      data-slot=\"native-select-wrapper\"\n      data-size={size}\n    >\n      <select\n        data-slot=\"native-select\"\n        data-size={size}\n        className=\"cn-native-select outline-none disabled:pointer-events-none disabled:cursor-not-allowed\"\n        {...props}\n      />\n      <IconPlaceholder\n        lucide=\"ChevronDownIcon\"\n        tabler=\"IconSelector\"\n        hugeicons=\"UnfoldMoreIcon\"\n        phosphor=\"CaretDownIcon\"\n        remixicon=\"RiArrowDownSLine\"\n        className=\"cn-native-select-icon pointer-events-none absolute select-none\"\n        aria-hidden=\"true\"\n        data-slot=\"native-select-icon\"\n      />\n    </div>\n  )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n  return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n  className,\n  ...props\n}: React.ComponentProps<\"optgroup\">) {\n  return (\n    <optgroup\n      data-slot=\"native-select-optgroup\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/navigation-menu.tsx",
    "content": "import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction NavigationMenu({\n  className,\n  children,\n  viewport = true,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n  viewport?: boolean\n}) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      data-viewport={viewport}\n      className={cn(\n        \"cn-navigation-menu group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {viewport && <NavigationMenuViewport />}\n    </NavigationMenuPrimitive.Root>\n  )\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"cn-navigation-menu-list group flex flex-1 list-none items-center justify-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"cn-navigation-menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"cn-navigation-menu-trigger group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center outline-none disabled:pointer-events-none\"\n)\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}{\" \"}\n      <IconPlaceholder\n        lucide=\"ChevronDownIcon\"\n        tabler=\"IconChevronDown\"\n        hugeicons=\"ArrowDown01Icon\"\n        phosphor=\"CaretDownIcon\"\n        remixicon=\"RiArrowDownSLine\"\n        className=\"cn-navigation-menu-trigger-icon\"\n        aria-hidden=\"true\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  )\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"cn-navigation-menu-content top-0 left-0 w-full group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuViewport({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n  return (\n    <div\n      className={cn(\n        \"cn-navigation-menu-viewport-wrapper absolute top-full left-0 isolate z-50 flex justify-center\"\n      )}\n    >\n      <NavigationMenuPrimitive.Viewport\n        data-slot=\"navigation-menu-viewport\"\n        className={cn(\n          \"cn-navigation-menu-viewport origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden md:w-(--radix-navigation-menu-viewport-width)\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\"cn-navigation-menu-link\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n  return (\n    <NavigationMenuPrimitive.Indicator\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"cn-navigation-menu-indicator top-full z-1 flex h-1.5 items-end justify-center overflow-hidden\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"cn-navigation-menu-indicator-arrow relative top-[60%] h-2 w-2 rotate-45\" />\n    </NavigationMenuPrimitive.Indicator>\n  )\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuList,\n  NavigationMenuItem,\n  NavigationMenuContent,\n  NavigationMenuTrigger,\n  NavigationMenuLink,\n  NavigationMenuIndicator,\n  NavigationMenuViewport,\n  navigationMenuTriggerStyle,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/pagination.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      role=\"navigation\"\n      aria-label=\"pagination\"\n      data-slot=\"pagination\"\n      className={cn(\n        \"cn-pagination mx-auto flex w-full justify-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationContent({\n  className,\n  ...props\n}: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"pagination-content\"\n      className={cn(\"cn-pagination-content flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n  return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n  isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n  React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n  className,\n  isActive,\n  size = \"icon\",\n  ...props\n}: PaginationLinkProps) {\n  return (\n    <Button\n      asChild\n      variant={isActive ? \"outline\" : \"ghost\"}\n      size={size}\n      className={cn(\"cn-pagination-link\", className)}\n    >\n      <a\n        aria-current={isActive ? \"page\" : undefined}\n        data-slot=\"pagination-link\"\n        data-active={isActive}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nfunction PaginationPrevious({\n  className,\n  text = \"Previous\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to previous page\"\n      size=\"default\"\n      className={cn(\"cn-pagination-previous\", className)}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronLeftIcon\"\n        tabler=\"IconChevronLeft\"\n        hugeicons=\"ArrowLeft01Icon\"\n        phosphor=\"CaretLeftIcon\"\n        remixicon=\"RiArrowLeftSLine\"\n        data-icon=\"inline-start\"\n        className=\"cn-rtl-flip\"\n      />\n      <span className=\"cn-pagination-previous-text hidden sm:block\">\n        {text}\n      </span>\n    </PaginationLink>\n  )\n}\n\nfunction PaginationNext({\n  className,\n  text = \"Next\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to next page\"\n      size=\"default\"\n      className={cn(\"cn-pagination-next\", className)}\n      {...props}\n    >\n      <span className=\"cn-pagination-next-text hidden sm:block\">{text}</span>\n      <IconPlaceholder\n        lucide=\"ChevronRightIcon\"\n        tabler=\"IconChevronRight\"\n        hugeicons=\"ArrowRight01Icon\"\n        phosphor=\"CaretRightIcon\"\n        remixicon=\"RiArrowRightSLine\"\n        data-icon=\"inline-end\"\n        className=\"cn-rtl-flip\"\n      />\n    </PaginationLink>\n  )\n}\n\nfunction PaginationEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden\n      data-slot=\"pagination-ellipsis\"\n      className={cn(\n        \"cn-pagination-ellipsis flex items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"MoreHorizontalIcon\"\n        tabler=\"IconDots\"\n        hugeicons=\"MoreHorizontalCircle01Icon\"\n        phosphor=\"DotsThreeIcon\"\n        remixicon=\"RiMoreLine\"\n      />\n      <span className=\"sr-only\">More pages</span>\n    </span>\n  )\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Popover({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Content\n        data-slot=\"popover-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"cn-popover-content z-50 w-72 origin-(--radix-popover-content-transform-origin) outline-hidden\",\n          className\n        )}\n        {...props}\n      />\n    </PopoverPrimitive.Portal>\n  )\n}\n\nfunction PopoverAnchor({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n  return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-header\"\n      className={cn(\"cn-popover-header\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n  return (\n    <div\n      data-slot=\"popover-title\"\n      className={cn(\"cn-popover-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"popover-description\"\n      className={cn(\"cn-popover-description\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Popover,\n  PopoverAnchor,\n  PopoverContent,\n  PopoverDescription,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverTrigger,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/progress.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Progress({\n  className,\n  value,\n  ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n  return (\n    <ProgressPrimitive.Root\n      data-slot=\"progress\"\n      className={cn(\n        \"cn-progress relative flex w-full items-center overflow-x-hidden\",\n        className\n      )}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className=\"cn-progress-indicator size-full flex-1 transition-all\"\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  )\n}\n\nexport { Progress }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction RadioGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n  return (\n    <RadioGroupPrimitive.Root\n      data-slot=\"radio-group\"\n      className={cn(\"cn-radio-group w-full\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction RadioGroupItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n  return (\n    <RadioGroupPrimitive.Item\n      data-slot=\"radio-group-item\"\n      className={cn(\n        \"cn-radio-group-item group/radio-group-item peer relative aspect-square shrink-0 border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"cn-radio-group-indicator\"\n      >\n        <span className=\"cn-radio-group-indicator-icon\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/resizable.tsx",
    "content": "\"use client\"\n\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ResizablePanelGroup({\n  className,\n  ...props\n}: ResizablePrimitive.GroupProps) {\n  return (\n    <ResizablePrimitive.Group\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"cn-resizable-panel-group flex h-full w-full aria-[orientation=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: ResizablePrimitive.SeparatorProps & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.Separator\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"cn-resizable-handle relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"cn-resizable-handle-icon z-10 flex shrink-0\" />\n      )}\n    </ResizablePrimitive.Separator>\n  )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/scroll-area.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn(\"cn-scroll-area relative\", className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        data-slot=\"scroll-area-viewport\"\n        className=\"cn-scroll-area-viewport size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  )\n}\n\nfunction ScrollBar({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n  return (\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      data-orientation={orientation}\n      orientation={orientation}\n      className={cn(\n        \"cn-scroll-area-scrollbar flex touch-none p-px transition-colors select-none\",\n        className\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.ScrollAreaThumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"cn-scroll-area-thumb relative flex-1 bg-border\"\n      />\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Select({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n  return (\n    <SelectPrimitive.Group\n      data-slot=\"select-group\"\n      className={cn(\"cn-select-group\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectValue({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"cn-select-trigger flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon asChild>\n        <IconPlaceholder\n          lucide=\"ChevronDownIcon\"\n          tabler=\"IconSelector\"\n          hugeicons=\"UnfoldMoreIcon\"\n          phosphor=\"CaretDownIcon\"\n          remixicon=\"RiArrowDownSLine\"\n          className=\"cn-select-trigger-icon pointer-events-none\"\n        />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = \"item-aligned\",\n  align = \"center\",\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Content\n        data-slot=\"select-content\"\n        data-align-trigger={position === \"item-aligned\"}\n        className={cn(\n          \"cn-select-content cn-menu-target cn-menu-translucent relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none\",\n          position === \"popper\" &&\n            \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n          className\n        )}\n        position={position}\n        align={align}\n        {...props}\n      >\n        <SelectScrollUpButton />\n        <SelectPrimitive.Viewport\n          data-position={position}\n          className={cn(\n            \"cn-select-viewport data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\",\n            position === \"popper\" && \"\"\n          )}\n        >\n          {children}\n        </SelectPrimitive.Viewport>\n        <SelectScrollDownButton />\n      </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n  )\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n  return (\n    <SelectPrimitive.Label\n      data-slot=\"select-label\"\n      className={cn(\"cn-select-label\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"cn-select-item relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"cn-select-item-indicator\">\n        <SelectPrimitive.ItemIndicator>\n          <IconPlaceholder\n            lucide=\"CheckIcon\"\n            tabler=\"IconCheck\"\n            hugeicons=\"Tick02Icon\"\n            phosphor=\"CheckIcon\"\n            remixicon=\"RiCheckLine\"\n            className=\"cn-select-item-indicator-icon pointer-events-none\"\n          />\n        </SelectPrimitive.ItemIndicator>\n      </span>\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  )\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"cn-select-separator pointer-events-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n  return (\n    <SelectPrimitive.ScrollUpButton\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\"cn-select-scroll-up-button\", className)}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronUpIcon\"\n        tabler=\"IconChevronUp\"\n        hugeicons=\"ArrowUp01Icon\"\n        phosphor=\"CaretUpIcon\"\n        remixicon=\"RiArrowUpSLine\"\n      />\n    </SelectPrimitive.ScrollUpButton>\n  )\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n  return (\n    <SelectPrimitive.ScrollDownButton\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\"cn-select-scroll-down-button\", className)}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"ChevronDownIcon\"\n        tabler=\"IconChevronDown\"\n        hugeicons=\"ArrowDown01Icon\"\n        phosphor=\"CaretDownIcon\"\n        remixicon=\"RiArrowDownSLine\"\n      />\n    </SelectPrimitive.ScrollDownButton>\n  )\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/separator.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Separator({\n  className,\n  orientation = \"horizontal\",\n  decorative = true,\n  ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n  return (\n    <SeparatorPrimitive.Root\n      data-slot=\"separator\"\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Separator }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n  return (\n    <SheetPrimitive.Overlay\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        \"cn-sheet-overlay fixed inset-0 z-50 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n  showCloseButton?: boolean\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Content\n        data-slot=\"sheet-content\"\n        data-side={side}\n        className={cn(\n          \"cn-sheet-content data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <SheetPrimitive.Close data-slot=\"sheet-close\" asChild>\n            <Button variant=\"ghost\" className=\"cn-sheet-close\" size=\"icon-sm\">\n              <IconPlaceholder\n                lucide=\"XIcon\"\n                tabler=\"IconX\"\n                hugeicons=\"Cancel01Icon\"\n                phosphor=\"XIcon\"\n                remixicon=\"RiCloseLine\"\n              />\n              <span className=\"sr-only\">Close</span>\n            </Button>\n          </SheetPrimitive.Close>\n        )}\n      </SheetPrimitive.Content>\n    </SheetPortal>\n  )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn(\"cn-sheet-header flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn(\"cn-sheet-footer mt-auto flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn(\"cn-sheet-title cn-font-heading\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn(\"cn-sheet-description\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { useIsMobile } from \"@/registry/bases/radix/hooks/use-mobile\"\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { Button } from \"@/registry/bases/radix/ui/button\"\nimport { Input } from \"@/registry/bases/radix/ui/input\"\nimport { Separator } from \"@/registry/bases/radix/ui/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/registry/bases/radix/ui/sheet\"\nimport { Skeleton } from \"@/registry/bases/radix/ui/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/bases/radix/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n  state: \"expanded\" | \"collapsed\"\n  open: boolean\n  setOpen: (open: boolean) => void\n  openMobile: boolean\n  setOpenMobile: (open: boolean) => void\n  isMobile: boolean\n  toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n  const context = React.useContext(SidebarContext)\n  if (!context) {\n    throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n  }\n\n  return context\n}\n\nfunction SidebarProvider({\n  defaultOpen = true,\n  open: openProp,\n  onOpenChange: setOpenProp,\n  className,\n  style,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  defaultOpen?: boolean\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}) {\n  const isMobile = useIsMobile()\n  const [openMobile, setOpenMobile] = React.useState(false)\n\n  // This is the internal state of the sidebar.\n  // We use openProp and setOpenProp for control from outside the component.\n  const [_open, _setOpen] = React.useState(defaultOpen)\n  const open = openProp ?? _open\n  const setOpen = React.useCallback(\n    (value: boolean | ((value: boolean) => boolean)) => {\n      const openState = typeof value === \"function\" ? value(open) : value\n      if (setOpenProp) {\n        setOpenProp(openState)\n      } else {\n        _setOpen(openState)\n      }\n\n      // This sets the cookie to keep the sidebar state.\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n    },\n    [setOpenProp, open]\n  )\n\n  // Helper to toggle the sidebar.\n  const toggleSidebar = React.useCallback(() => {\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n  }, [isMobile, setOpen, setOpenMobile])\n\n  // Adds a keyboard shortcut to toggle the sidebar.\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n        (event.metaKey || event.ctrlKey)\n      ) {\n        event.preventDefault()\n        toggleSidebar()\n      }\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n    return () => window.removeEventListener(\"keydown\", handleKeyDown)\n  }, [toggleSidebar])\n\n  // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n  // This makes it easier to style the sidebar with Tailwind classes.\n  const state = open ? \"expanded\" : \"collapsed\"\n\n  const contextValue = React.useMemo<SidebarContextProps>(\n    () => ({\n      state,\n      open,\n      setOpen,\n      isMobile,\n      openMobile,\n      setOpenMobile,\n      toggleSidebar,\n    }),\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n  )\n\n  return (\n    <SidebarContext.Provider value={contextValue}>\n      <div\n        data-slot=\"sidebar-wrapper\"\n        style={\n          {\n            \"--sidebar-width\": SIDEBAR_WIDTH,\n            \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n            ...style,\n          } as React.CSSProperties\n        }\n        className={cn(\n          \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    </SidebarContext.Provider>\n  )\n}\n\nfunction Sidebar({\n  side = \"left\",\n  variant = \"sidebar\",\n  collapsible = \"offcanvas\",\n  className,\n  children,\n  dir,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  side?: \"left\" | \"right\"\n  variant?: \"sidebar\" | \"floating\" | \"inset\"\n  collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n  if (collapsible === \"none\") {\n    return (\n      <div\n        data-slot=\"sidebar\"\n        className={cn(\n          \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n\n  if (isMobile) {\n    return (\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n        <SheetContent\n          dir={dir}\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar\"\n          data-mobile=\"true\"\n          className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n          style={\n            {\n              \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n            } as React.CSSProperties\n          }\n          side={side}\n        >\n          <SheetHeader className=\"sr-only\">\n            <SheetTitle>Sidebar</SheetTitle>\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n          </SheetHeader>\n          <div className=\"flex h-full w-full flex-col\">{children}</div>\n        </SheetContent>\n      </Sheet>\n    )\n  }\n\n  return (\n    <div\n      className=\"group peer hidden text-sidebar-foreground md:block\"\n      data-state={state}\n      data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n      data-variant={variant}\n      data-side={side}\n      data-slot=\"sidebar\"\n    >\n      {/* This is what handles the sidebar gap on desktop */}\n      <div\n        data-slot=\"sidebar-gap\"\n        className={cn(\n          \"cn-sidebar-gap relative w-(--sidebar-width) bg-transparent\",\n          \"group-data-[collapsible=offcanvas]:w-0\",\n          \"group-data-[side=right]:rotate-180\",\n          variant === \"floating\" || variant === \"inset\"\n            ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n        )}\n      />\n      <div\n        data-slot=\"sidebar-container\"\n        data-side={side}\n        className={cn(\n          \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n          // Adjust the padding for floating and inset variants.\n          variant === \"floating\" || variant === \"inset\"\n            ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n          className\n        )}\n        {...props}\n      >\n        <div\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar-inner\"\n          className=\"cn-sidebar-inner flex size-full flex-col\"\n        >\n          {children}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction SidebarTrigger({\n  className,\n  onClick,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <Button\n      data-sidebar=\"trigger\"\n      data-slot=\"sidebar-trigger\"\n      variant=\"ghost\"\n      size=\"icon-sm\"\n      className={cn(\"cn-sidebar-trigger\", className)}\n      onClick={(event) => {\n        onClick?.(event)\n        toggleSidebar()\n      }}\n      {...props}\n    >\n      <IconPlaceholder\n        lucide=\"PanelLeftIcon\"\n        tabler=\"IconLayoutSidebar\"\n        hugeicons=\"SidebarLeftIcon\"\n        phosphor=\"SidebarIcon\"\n        remixicon=\"RiSideBarLine\"\n        className=\"cn-rtl-flip\"\n      />\n      <span className=\"sr-only\">Toggle Sidebar</span>\n    </Button>\n  )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <button\n      data-sidebar=\"rail\"\n      data-slot=\"sidebar-rail\"\n      aria-label=\"Toggle Sidebar\"\n      tabIndex={-1}\n      onClick={toggleSidebar}\n      title=\"Toggle Sidebar\"\n      className={cn(\n        \"cn-sidebar-rail absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n        \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n        \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n        \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n        \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n        \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n  return (\n    <main\n      data-slot=\"sidebar-inset\"\n      className={cn(\n        \"cn-sidebar-inset relative flex w-full flex-1 flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof Input>) {\n  return (\n    <Input\n      data-slot=\"sidebar-input\"\n      data-sidebar=\"input\"\n      className={cn(\"cn-sidebar-input\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-header\"\n      data-sidebar=\"header\"\n      className={cn(\"cn-sidebar-header flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-footer\"\n      data-sidebar=\"footer\"\n      className={cn(\"cn-sidebar-footer flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"sidebar-separator\"\n      data-sidebar=\"separator\"\n      className={cn(\"cn-sidebar-separator w-auto\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-content\"\n      data-sidebar=\"content\"\n      className={cn(\n        \"cn-sidebar-content flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group\"\n      data-sidebar=\"group\"\n      className={cn(\n        \"cn-sidebar-group relative flex w-full min-w-0 flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupLabel({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"div\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-label\"\n      data-sidebar=\"group-label\"\n      className={cn(\n        \"cn-sidebar-group-label flex shrink-0 items-center outline-hidden [&>svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupAction({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-action\"\n      data-sidebar=\"group-action\"\n      className={cn(\n        \"cn-sidebar-group-action flex aspect-square items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupContent({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group-content\"\n      data-sidebar=\"group-content\"\n      className={cn(\"cn-sidebar-group-content w-full\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu\"\n      data-sidebar=\"menu\"\n      className={cn(\"cn-sidebar-menu flex w-full min-w-0 flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-item\"\n      data-sidebar=\"menu-item\"\n      className={cn(\"group/menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst sidebarMenuButtonVariants = cva(\n  \"cn-sidebar-menu-button peer/menu-button group/menu-button flex w-full items-center overflow-hidden outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-sidebar-menu-button-variant-default\",\n        outline: \"cn-sidebar-menu-button-variant-outline\",\n      },\n      size: {\n        default: \"cn-sidebar-menu-button-size-default\",\n        sm: \"cn-sidebar-menu-button-size-sm\",\n        lg: \"cn-sidebar-menu-button-size-lg\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction SidebarMenuButton({\n  asChild = false,\n  isActive = false,\n  variant = \"default\",\n  size = \"default\",\n  tooltip,\n  className,\n  ...props\n}: React.ComponentProps<\"button\"> & {\n  asChild?: boolean\n  isActive?: boolean\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n  const Comp = asChild ? Slot.Root : \"button\"\n  const { isMobile, state } = useSidebar()\n\n  const button = (\n    <Comp\n      data-slot=\"sidebar-menu-button\"\n      data-sidebar=\"menu-button\"\n      data-size={size}\n      data-active={isActive}\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n      {...props}\n    />\n  )\n\n  if (!tooltip) {\n    return button\n  }\n\n  if (typeof tooltip === \"string\") {\n    tooltip = {\n      children: tooltip,\n    }\n  }\n\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\n      <TooltipContent\n        side=\"right\"\n        align=\"center\"\n        hidden={state !== \"collapsed\" || isMobile}\n        {...tooltip}\n      />\n    </Tooltip>\n  )\n}\n\nfunction SidebarMenuAction({\n  className,\n  asChild = false,\n  showOnHover = false,\n  ...props\n}: React.ComponentProps<\"button\"> & {\n  asChild?: boolean\n  showOnHover?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-action\"\n      data-sidebar=\"menu-action\"\n      className={cn(\n        \"cn-sidebar-menu-action flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0\",\n        showOnHover &&\n          \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuBadge({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-menu-badge\"\n      data-sidebar=\"menu-badge\"\n      className={cn(\n        \"cn-sidebar-menu-badge flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSkeleton({\n  className,\n  showIcon = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showIcon?: boolean\n}) {\n  // Random width between 50 to 90%.\n  const [width] = React.useState(() => {\n    return `${Math.floor(Math.random() * 40) + 50}%`\n  })\n\n  return (\n    <div\n      data-slot=\"sidebar-menu-skeleton\"\n      data-sidebar=\"menu-skeleton\"\n      className={cn(\"cn-sidebar-menu-skeleton flex items-center\", className)}\n      {...props}\n    >\n      {showIcon && (\n        <Skeleton\n          className=\"cn-sidebar-menu-skeleton-icon\"\n          data-sidebar=\"menu-skeleton-icon\"\n        />\n      )}\n      <Skeleton\n        className=\"cn-sidebar-menu-skeleton-text max-w-(--skeleton-width) flex-1\"\n        data-sidebar=\"menu-skeleton-text\"\n        style={\n          {\n            \"--skeleton-width\": width,\n          } as React.CSSProperties\n        }\n      />\n    </div>\n  )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu-sub\"\n      data-sidebar=\"menu-sub\"\n      className={cn(\"cn-sidebar-menu-sub flex min-w-0 flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubItem({\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-sub-item\"\n      data-sidebar=\"menu-sub-item\"\n      className={cn(\"group/menu-sub-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubButton({\n  asChild = false,\n  size = \"md\",\n  isActive = false,\n  className,\n  ...props\n}: React.ComponentProps<\"a\"> & {\n  asChild?: boolean\n  size?: \"sm\" | \"md\"\n  isActive?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-sub-button\"\n      data-sidebar=\"menu-sub-button\"\n      data-size={size}\n      data-active={isActive}\n      className={cn(\n        \"cn-sidebar-menu-sub-button flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarSeparator,\n  SidebarTrigger,\n  useSidebar,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/skeleton.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn(\"cn-skeleton animate-pulse\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slider as SliderPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Slider({\n  className,\n  defaultValue,\n  value,\n  min = 0,\n  max = 100,\n  ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n  const _values = React.useMemo(\n    () =>\n      Array.isArray(value)\n        ? value\n        : Array.isArray(defaultValue)\n          ? defaultValue\n          : [min, max],\n    [value, defaultValue, min, max]\n  )\n\n  return (\n    <SliderPrimitive.Root\n      data-slot=\"slider\"\n      defaultValue={defaultValue}\n      value={value}\n      min={min}\n      max={max}\n      className={cn(\n        \"cn-slider relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:w-auto data-vertical:flex-col\",\n        className\n      )}\n      {...props}\n    >\n      <SliderPrimitive.Track\n        data-slot=\"slider-track\"\n        className=\"cn-slider-track relative grow overflow-hidden data-horizontal:w-full data-vertical:h-full\"\n      >\n        <SliderPrimitive.Range\n          data-slot=\"slider-range\"\n          className=\"cn-slider-range absolute select-none data-horizontal:h-full data-vertical:w-full\"\n        />\n      </SliderPrimitive.Track>\n      {Array.from({ length: _values.length }, (_, index) => (\n        <SliderPrimitive.Thumb\n          data-slot=\"slider-thumb\"\n          key={index}\n          className=\"cn-slider-thumb block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50\"\n        />\n      ))}\n    </SliderPrimitive.Root>\n  )\n}\n\nexport { Slider }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/sonner.tsx",
    "content": "\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = \"system\" } = useTheme()\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps[\"theme\"]}\n      className=\"toaster group\"\n      icons={{\n        success: (\n          <IconPlaceholder\n            lucide=\"CircleCheckIcon\"\n            tabler=\"IconCircleCheck\"\n            hugeicons=\"CheckmarkCircle02Icon\"\n            phosphor=\"CheckCircleIcon\"\n            remixicon=\"RiCheckboxCircleLine\"\n            className=\"size-4\"\n          />\n        ),\n        info: (\n          <IconPlaceholder\n            lucide=\"InfoIcon\"\n            tabler=\"IconInfoCircle\"\n            hugeicons=\"InformationCircleIcon\"\n            phosphor=\"InfoIcon\"\n            remixicon=\"RiInformationLine\"\n            className=\"size-4\"\n          />\n        ),\n        warning: (\n          <IconPlaceholder\n            lucide=\"TriangleAlertIcon\"\n            tabler=\"IconAlertTriangle\"\n            hugeicons=\"Alert02Icon\"\n            phosphor=\"WarningIcon\"\n            remixicon=\"RiErrorWarningLine\"\n            className=\"size-4\"\n          />\n        ),\n        error: (\n          <IconPlaceholder\n            lucide=\"OctagonXIcon\"\n            tabler=\"IconAlertOctagon\"\n            hugeicons=\"MultiplicationSignCircleIcon\"\n            phosphor=\"XCircleIcon\"\n            remixicon=\"RiCloseCircleLine\"\n            className=\"size-4\"\n          />\n        ),\n        loading: (\n          <IconPlaceholder\n            lucide=\"Loader2Icon\"\n            tabler=\"IconLoader\"\n            hugeicons=\"Loading03Icon\"\n            phosphor=\"SpinnerIcon\"\n            remixicon=\"RiLoaderLine\"\n            className=\"size-4 animate-spin\"\n          />\n        ),\n      }}\n      style={\n        {\n          \"--normal-bg\": \"var(--popover)\",\n          \"--normal-text\": \"var(--popover-foreground)\",\n          \"--normal-border\": \"var(--border)\",\n          \"--border-radius\": \"var(--radius)\",\n        } as React.CSSProperties\n      }\n      toastOptions={{\n        classNames: {\n          toast: \"cn-toast\",\n        },\n      }}\n      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/spinner.tsx",
    "content": "import { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <IconPlaceholder\n      lucide=\"Loader2Icon\"\n      tabler=\"IconLoader\"\n      hugeicons=\"Loading03Icon\"\n      phosphor=\"SpinnerIcon\"\n      remixicon=\"RiLoaderLine\"\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/switch.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      data-size={size}\n      className={cn(\n        \"cn-switch peer group/switch relative inline-flex items-center transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className=\"cn-switch-thumb pointer-events-none block ring-0 transition-transform\"\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n  return (\n    <div data-slot=\"table-container\" className=\"cn-table-container\">\n      <table\n        data-slot=\"table\"\n        className={cn(\"cn-table\", className)}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n  return (\n    <thead\n      data-slot=\"table-header\"\n      className={cn(\"cn-table-header\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n  return (\n    <tbody\n      data-slot=\"table-body\"\n      className={cn(\"cn-table-body\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n  return (\n    <tfoot\n      data-slot=\"table-footer\"\n      className={cn(\"cn-table-footer\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n  return (\n    <tr\n      data-slot=\"table-row\"\n      className={cn(\"cn-table-row\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n  return (\n    <th\n      data-slot=\"table-head\"\n      className={cn(\"cn-table-head\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n  return (\n    <td\n      data-slot=\"table-cell\"\n      className={cn(\"cn-table-cell\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableCaption({\n  className,\n  ...props\n}: React.ComponentProps<\"caption\">) {\n  return (\n    <caption\n      data-slot=\"table-caption\"\n      className={cn(\"cn-table-caption\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      data-orientation={orientation}\n      className={cn(\n        \"cn-tabs group/tabs flex data-horizontal:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst tabsListVariants = cva(\n  \"cn-tabs-list group/tabs-list inline-flex w-fit items-center justify-center text-muted-foreground group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-tabs-list-variant-default bg-muted\",\n        line: \"cn-tabs-list-variant-line gap-1 bg-transparent\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction TabsList({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n  VariantProps<typeof tabsListVariants>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={cn(tabsListVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n  return (\n    <TabsPrimitive.Trigger\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"cn-tabs-trigger relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n        \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n        \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n  return (\n    <TabsPrimitive.Content\n      data-slot=\"tabs-content\"\n      className={cn(\"cn-tabs-content flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/textarea.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"cn-textarea flex field-sizing-content min-h-16 w-full outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/toggle-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\nimport { toggleVariants } from \"@/registry/bases/radix/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }\n>({\n  size: \"default\",\n  variant: \"default\",\n  spacing: 0,\n  orientation: \"horizontal\",\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  spacing = 0,\n  orientation = \"horizontal\",\n  children,\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n    orientation?: \"horizontal\" | \"vertical\"\n  }) {\n  return (\n    <ToggleGroupPrimitive.Root\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      data-spacing={spacing}\n      data-orientation={orientation}\n      style={{ \"--gap\": spacing } as React.CSSProperties}\n      className={cn(\n        \"cn-toggle-group group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-vertical:flex-col data-vertical:items-stretch\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider\n        value={{ variant, size, spacing, orientation }}\n      >\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive.Root>\n  )\n}\n\nfunction ToggleGroupItem({\n  className,\n  children,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n  VariantProps<typeof toggleVariants>) {\n  const context = React.useContext(ToggleGroupContext)\n\n  return (\n    <ToggleGroupPrimitive.Item\n      data-slot=\"toggle-group-item\"\n      data-variant={context.variant || variant}\n      data-size={context.size || size}\n      data-spacing={context.spacing}\n      className={cn(\n        \"cn-toggle-group-item shrink-0 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </ToggleGroupPrimitive.Item>\n  )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nconst toggleVariants = cva(\n  \"cn-toggle group/toggle inline-flex items-center justify-center whitespace-nowrap outline-none hover:bg-muted focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-toggle-variant-default\",\n        outline: \"cn-toggle-variant-outline\",\n      },\n      size: {\n        default: \"cn-toggle-size-default\",\n        sm: \"cn-toggle-size-sm\",\n        lg: \"cn-toggle-size-lg\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Toggle({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n  VariantProps<typeof toggleVariants>) {\n  return (\n    <TogglePrimitive.Root\n      data-slot=\"toggle\"\n      className={cn(toggleVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Toggle, toggleVariants }\n"
  },
  {
    "path": "apps/v4/registry/bases/radix/ui/tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction TooltipProvider({\n  delayDuration = 0,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delayDuration={delayDuration}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n  return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n  className,\n  sideOffset = 0,\n  children,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Content\n        data-slot=\"tooltip-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          \"cn-tooltip-content z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) bg-foreground text-background\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow className=\"cn-tooltip-arrow z-50 translate-y-[calc(-50%_-_2px)] bg-foreground fill-foreground\" />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\n"
  },
  {
    "path": "apps/v4/registry/bases.ts",
    "content": "import { type registryItemSchema } from \"shadcn/schema\"\nimport { type z } from \"zod\"\n\nexport const BASES: z.infer<typeof registryItemSchema>[] = [\n  {\n    name: \"radix\",\n    type: \"registry:style\",\n    title: \"Radix UI\",\n    description:\n      \"Optimized for fast development, easy maintenance, and accessibility.\",\n    dependencies: [\"radix-ui\"],\n    meta: {\n      logo: \"<svg role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><title>Radix UI</title><path fill='currentColor' d='M11.52 24a7.68 7.68 0 0 1-7.68-7.68 7.68 7.68 0 0 1 7.68-7.68V24Zm0-24v7.68H3.84V0h7.68Zm4.8 7.68a3.84 3.84 0 1 1 0-7.68 3.84 3.84 0 0 1 0 7.68Z'/></svg>\",\n    },\n  },\n  {\n    name: \"base\",\n    type: \"registry:style\",\n    title: \"Base UI\",\n    description:\n      \"Components for building accessible web apps and design systems.\",\n    dependencies: [\"@base-ui/react\"],\n    meta: {\n      logo: \"<svg width='17' height='24' viewBox='0 0 17 24'><path fill='currentColor' d='M9.5001 7.01537C9.2245 6.99837 9 7.22385 9 7.49999V23C13.4183 23 17 19.4183 17 15C17 10.7497 13.6854 7.27351 9.5001 7.01537Z'></path><path fill='currentColor'   d='M8 9.8V12V23C3.58172 23 0 19.0601 0 14.2V12V1C4.41828 1 8 4.93989 8 9.8Z'></path></svg>\",\n    },\n  },\n]\n\nexport type Base = (typeof BASES)[number]\n"
  },
  {
    "path": "apps/v4/registry/config.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport {\n  buildRegistryBase,\n  DEFAULT_CONFIG,\n  designSystemConfigSchema,\n} from \"./config\"\n\ndescribe(\"buildRegistryBase\", () => {\n  it(\"seeds a font-heading fallback when heading inherits the body font\", () => {\n    const result = buildRegistryBase(DEFAULT_CONFIG)\n\n    expect(result.registryDependencies).toContain(\"font-inter\")\n    expect(result.registryDependencies).not.toContain(\"font-heading-inter\")\n    expect(result.cssVars?.theme?.[\"--font-heading\"]).toBe(\"var(--font-sans)\")\n  })\n\n  it(\"adds a heading font dependency when a distinct heading font is selected\", () => {\n    const result = buildRegistryBase({\n      ...DEFAULT_CONFIG,\n      fontHeading: \"playfair-display\",\n    })\n\n    expect(result.registryDependencies).toContain(\"font-inter\")\n    expect(result.registryDependencies).toContain(\n      \"font-heading-playfair-display\"\n    )\n    expect(result.cssVars?.theme?.[\"--font-heading\"]).toBeUndefined()\n  })\n\n  it(\"normalizes a matching heading font back to inherit\", () => {\n    const result = buildRegistryBase({\n      ...DEFAULT_CONFIG,\n      fontHeading: \"inter\",\n    })\n\n    expect(result.registryDependencies).not.toContain(\"font-heading-inter\")\n    expect(result.cssVars?.theme?.[\"--font-heading\"]).toBe(\"var(--font-sans)\")\n  })\n\n  it(\"inherits the selected body font variable for non-sans body fonts\", () => {\n    const result = buildRegistryBase({\n      ...DEFAULT_CONFIG,\n      font: \"jetbrains-mono\",\n      fontHeading: \"inherit\",\n    })\n\n    expect(result.registryDependencies).toContain(\"font-jetbrains-mono\")\n    expect(result.cssVars?.theme?.[\"--font-heading\"]).toBe(\"var(--font-mono)\")\n  })\n\n  it(\"defaults chartColor to neutral when omitted\", () => {\n    const result = designSystemConfigSchema.parse({\n      base: \"radix\",\n      style: \"nova\",\n      iconLibrary: \"lucide\",\n      theme: \"neutral\",\n      font: \"inter\",\n      fontHeading: \"inherit\",\n      menuAccent: \"subtle\",\n      menuColor: \"default\",\n      radius: \"default\",\n    })\n\n    expect(result.chartColor).toBe(\"neutral\")\n  })\n\n  it(\"rejects chartColor values that are unavailable for the selected base color\", () => {\n    const result = designSystemConfigSchema.safeParse({\n      base: \"radix\",\n      style: \"nova\",\n      iconLibrary: \"lucide\",\n      baseColor: \"neutral\",\n      theme: \"neutral\",\n      chartColor: \"stone\",\n      font: \"inter\",\n      fontHeading: \"inherit\",\n      menuAccent: \"subtle\",\n      menuColor: \"default\",\n      radius: \"default\",\n    })\n\n    expect(result.success).toBe(false)\n  })\n})\n"
  },
  {
    "path": "apps/v4/registry/config.ts",
    "content": "import {\n  iconLibraries,\n  type IconLibrary,\n  type IconLibraryName,\n} from \"shadcn/icons\"\nimport { z } from \"zod\"\n\nimport { BASE_COLORS, type BaseColor } from \"@/registry/base-colors\"\nimport { BASES, type Base } from \"@/registry/bases\"\nimport { bodyFonts, fonts, headingFonts } from \"@/registry/fonts\"\nimport { STYLES, type Style } from \"@/registry/styles\"\nimport { THEMES, type Theme } from \"@/registry/themes\"\n\nconst SHADCN_VERSION = \"latest\"\n\nexport { BASES, type Base }\nexport { STYLES, type Style }\nexport { THEMES, type Theme }\nexport { BASE_COLORS, type BaseColor }\nexport { bodyFonts, headingFonts, fonts }\nexport { iconLibraries, type IconLibrary, type IconLibraryName }\n\nexport type BaseName = Base[\"name\"]\nexport type StyleName = Style[\"name\"]\nexport type ThemeName = Theme[\"name\"]\nexport type BaseColorName = BaseColor[\"name\"]\nexport type ChartColorName = Theme[\"name\"]\n\n// Derive font values from registry fonts (e.g., \"font-inter\" -> \"inter\").\nconst fontValues = bodyFonts.map((f) => f.name.replace(\"font-\", \"\")) as [\n  string,\n  ...string[],\n]\nconst fontHeadingValues = [\"inherit\", ...fontValues] as const\n\nexport type FontValue = (typeof fontValues)[number]\nexport type FontHeadingValue = (typeof fontHeadingValues)[number]\n\nexport function getBodyFont(font: FontValue) {\n  return bodyFonts.find((item) => item.name === `font-${font}`)\n}\n\nexport function getHeadingFont(\n  fontHeading: Exclude<FontHeadingValue, \"inherit\">\n) {\n  return headingFonts.find(\n    (item) => item.name === `font-heading-${fontHeading}`\n  )\n}\n\nexport function getInheritedHeadingFontValue(font: FontValue) {\n  return `var(${getBodyFont(font)?.font.variable ?? \"--font-sans\"})`\n}\n\nexport const MENU_ACCENTS = [\n  { value: \"subtle\", label: \"Subtle\" },\n  { value: \"bold\", label: \"Bold\" },\n] as const\n\nexport type MenuAccent = (typeof MENU_ACCENTS)[number]\nexport type MenuAccentValue = MenuAccent[\"value\"]\n\nexport const MENU_COLORS = [\n  { value: \"default\", label: \"Default\" },\n  { value: \"inverted\", label: \"Inverted\" },\n  { value: \"default-translucent\", label: \"Default Translucent\" },\n  { value: \"inverted-translucent\", label: \"Inverted Translucent\" },\n] as const\n\nexport type MenuColor = (typeof MENU_COLORS)[number]\n\nexport type MenuColorValue = MenuColor[\"value\"]\n\nexport const RADII = [\n  { name: \"default\", label: \"Default\", value: \"\" },\n  { name: \"none\", label: \"None\", value: \"0\" },\n  { name: \"small\", label: \"Small\", value: \"0.45rem\" },\n  { name: \"medium\", label: \"Medium\", value: \"0.625rem\" },\n  { name: \"large\", label: \"Large\", value: \"0.875rem\" },\n] as const\n\nexport type Radius = (typeof RADII)[number]\n\nexport type RadiusValue = Radius[\"name\"]\n\nexport const designSystemConfigSchema = z\n  .object({\n    base: z.enum(BASES.map((b) => b.name) as [BaseName, ...BaseName[]]),\n    style: z.enum(STYLES.map((s) => s.name) as [StyleName, ...StyleName[]]),\n    iconLibrary: z.enum(\n      Object.keys(iconLibraries) as [IconLibraryName, ...IconLibraryName[]]\n    ),\n    baseColor: z\n      .enum(\n        BASE_COLORS.map((c) => c.name) as [BaseColorName, ...BaseColorName[]]\n      )\n      .default(\"neutral\"),\n    theme: z.enum(THEMES.map((t) => t.name) as [ThemeName, ...ThemeName[]]),\n    chartColor: z\n      .enum(THEMES.map((t) => t.name) as [ChartColorName, ...ChartColorName[]])\n      .default(\"neutral\"),\n    font: z.enum(fontValues).default(\"inter\"),\n    fontHeading: z.enum(fontHeadingValues).default(\"inherit\"),\n    item: z.string().optional(),\n    rtl: z.boolean().default(false),\n    menuAccent: z\n      .enum(\n        MENU_ACCENTS.map((a) => a.value) as [\n          MenuAccentValue,\n          ...MenuAccentValue[],\n        ]\n      )\n      .default(\"subtle\"),\n    menuColor: z\n      .enum(\n        MENU_COLORS.map((m) => m.value) as [MenuColorValue, ...MenuColorValue[]]\n      )\n      .default(\"default\"),\n    radius: z\n      .enum(RADII.map((r) => r.name) as [RadiusValue, ...RadiusValue[]])\n      .default(\"default\"),\n    template: z\n      .enum([\n        \"next\",\n        \"next-monorepo\",\n        \"start\",\n        \"react-router\",\n        \"vite\",\n        \"vite-monorepo\",\n        \"react-router-monorepo\",\n        \"start-monorepo\",\n        \"astro\",\n        \"astro-monorepo\",\n        \"laravel\",\n      ])\n      .default(\"next\")\n      .optional(),\n  })\n  .refine(\n    (data) => {\n      const availableThemes = getThemesForBaseColor(data.baseColor)\n      return availableThemes.some((t) => t.name === data.theme)\n    },\n    (data) => ({\n      message: `Theme \"${data.theme}\" is not available for base color \"${data.baseColor}\"`,\n      path: [\"theme\"],\n    })\n  )\n  .refine(\n    (data) => {\n      const availableThemes = getThemesForBaseColor(data.baseColor)\n      return availableThemes.some((t) => t.name === data.chartColor)\n    },\n    (data) => ({\n      message: `Chart color \"${data.chartColor}\" is not available for base color \"${data.baseColor}\"`,\n      path: [\"chartColor\"],\n    })\n  )\n\nexport type DesignSystemConfig = z.infer<typeof designSystemConfigSchema>\n\nexport const DEFAULT_CONFIG: DesignSystemConfig = {\n  base: \"radix\",\n  style: \"nova\",\n  baseColor: \"neutral\",\n  theme: \"neutral\",\n  chartColor: \"neutral\",\n  iconLibrary: \"lucide\",\n  font: \"inter\",\n  fontHeading: \"inherit\",\n  item: \"Item\",\n  rtl: false,\n  menuAccent: \"subtle\",\n  menuColor: \"default\",\n  radius: \"default\",\n  template: \"next\",\n}\n\nexport type Preset = {\n  name: string\n  title: string\n  description: string\n} & DesignSystemConfig\n\nexport const PRESETS: Preset[] = [\n  // Radix.\n  {\n    name: \"radix-vega\",\n    title: \"Vega (Radix)\",\n    description: \"Vega / Lucide / Inter\",\n    base: \"radix\",\n    style: \"vega\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"lucide\",\n    font: \"inter\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  {\n    name: \"radix-nova\",\n    title: \"Nova (Radix)\",\n    description: \"Nova / Lucide / Geist\",\n    base: \"radix\",\n    style: \"nova\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"lucide\",\n    font: \"geist\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  {\n    name: \"radix-maia\",\n    title: \"Maia (Radix)\",\n    description: \"Maia / Hugeicons / Figtree\",\n    base: \"radix\",\n    style: \"maia\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"hugeicons\",\n    font: \"figtree\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  {\n    name: \"radix-lyra\",\n    title: \"Lyra (Radix)\",\n    description: \"Lyra / Tabler / JetBrains Mono\",\n    base: \"radix\",\n    style: \"lyra\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"phosphor\",\n    font: \"jetbrains-mono\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  // Base.\n  {\n    name: \"base-vega\",\n    title: \"Vega (Base)\",\n    description: \"Vega / Lucide / Inter\",\n    base: \"base\",\n    style: \"vega\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"lucide\",\n    font: \"inter\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  {\n    name: \"base-nova\",\n    title: \"Nova (Base)\",\n    description: \"Nova / Lucide / Geist\",\n    base: \"base\",\n    style: \"nova\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"lucide\",\n    font: \"geist\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  {\n    name: \"base-maia\",\n    title: \"Maia (Base)\",\n    description: \"Maia / Hugeicons / Figtree\",\n    base: \"base\",\n    style: \"maia\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"hugeicons\",\n    font: \"figtree\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  {\n    name: \"base-lyra\",\n    title: \"Lyra (Base)\",\n    description: \"Lyra / Tabler / JetBrains Mono\",\n    base: \"base\",\n    style: \"lyra\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"phosphor\",\n    font: \"jetbrains-mono\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  {\n    name: \"radix-mira\",\n    title: \"Mira (Radix)\",\n    description: \"Mira / Hugeicons / Inter\",\n    base: \"radix\",\n    style: \"mira\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"hugeicons\",\n    font: \"inter\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n  {\n    name: \"base-mira\",\n    title: \"Mira (Base)\",\n    description: \"Mira / Hugeicons / Inter\",\n    base: \"base\",\n    style: \"mira\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    chartColor: \"neutral\",\n    iconLibrary: \"hugeicons\",\n    font: \"inter\",\n    fontHeading: \"inherit\",\n    item: \"Item\",\n    rtl: false,\n    menuAccent: \"subtle\",\n    menuColor: \"default\",\n    radius: \"default\",\n  },\n]\n\nexport function getThemesForBaseColor(baseColorName: string) {\n  const baseColorNames = BASE_COLORS.map((bc) => bc.name)\n\n  return THEMES.filter((theme) => {\n    if (theme.name === baseColorName) {\n      return true\n    }\n    return !baseColorNames.includes(theme.name)\n  })\n}\n\nexport function getBase(name: BaseName) {\n  return BASES.find((base) => base.name === name)\n}\n\nexport function getStyle(name: StyleName) {\n  return STYLES.find((style) => style.name === name)\n}\n\nexport function getTheme(name: ThemeName) {\n  return THEMES.find((theme) => theme.name === name)\n}\n\nexport function getBaseColor(name: BaseColorName) {\n  return BASE_COLORS.find((color) => color.name === name)\n}\n\nexport function getIconLibrary(name: IconLibraryName) {\n  return iconLibraries[name]\n}\n\n// Builds a registry:theme item from a design system config.\nexport function buildRegistryTheme(config: DesignSystemConfig) {\n  const baseColor = getBaseColor(config.baseColor)\n  const theme = getTheme(config.theme)\n\n  if (!baseColor || !theme) {\n    throw new Error(\n      `Base color \"${config.baseColor}\" or theme \"${config.theme}\" not found`\n    )\n  }\n\n  // Merge base color and theme CSS vars.\n  const lightVars: Record<string, string> = {\n    ...(baseColor.cssVars?.light as Record<string, string>),\n    ...(theme.cssVars?.light as Record<string, string>),\n  }\n  const darkVars: Record<string, string> = {\n    ...(baseColor.cssVars?.dark as Record<string, string>),\n    ...(theme.cssVars?.dark as Record<string, string>),\n  }\n  const themeVars: Record<string, string> = {}\n\n  // Apply chart color override.\n  const chartTheme = getTheme(config.chartColor)\n  if (chartTheme) {\n    const chartLight = chartTheme.cssVars?.light as Record<string, string>\n    const chartDark = chartTheme.cssVars?.dark as Record<string, string>\n    for (let i = 1; i <= 5; i++) {\n      const key = `chart-${i}`\n      if (chartLight?.[key]) lightVars[key] = chartLight[key]\n      if (chartDark?.[key]) darkVars[key] = chartDark[key]\n    }\n  }\n\n  // Apply menu accent transformation.\n  if (config.menuAccent === \"bold\") {\n    lightVars.accent = lightVars.primary\n    lightVars[\"accent-foreground\"] = lightVars[\"primary-foreground\"]\n    darkVars.accent = darkVars.primary\n    darkVars[\"accent-foreground\"] = darkVars[\"primary-foreground\"]\n    // lightVars[\"sidebar-accent\"] = lightVars.primary\n    // lightVars[\"sidebar-accent-foreground\"] = lightVars[\"primary-foreground\"]\n    // darkVars[\"sidebar-accent\"] = darkVars.primary\n    // darkVars[\"sidebar-accent-foreground\"] = darkVars[\"primary-foreground\"]\n  }\n\n  // Apply radius transformation.\n  if (config.radius && config.radius !== \"default\") {\n    const radius = RADII.find((r) => r.name === config.radius)\n    if (radius && radius.value) {\n      lightVars.radius = radius.value\n    }\n  }\n\n  return {\n    name: `${config.baseColor}-${config.theme}`,\n    type: \"registry:theme\" as const,\n    cssVars: {\n      theme: Object.keys(themeVars).length > 0 ? themeVars : undefined,\n      light: lightVars,\n      dark: darkVars,\n    },\n  }\n}\n\n// Builds a registry:base item from a design system config.\nexport function buildRegistryBase(config: DesignSystemConfig) {\n  const baseItem = getBase(config.base)\n  const iconLibraryItem = getIconLibrary(config.iconLibrary)\n  const normalizedFontHeading =\n    config.fontHeading === config.font ? \"inherit\" : config.fontHeading\n\n  if (!baseItem || !iconLibraryItem) {\n    throw new Error(\n      `Base \"${config.base}\" or icon library \"${config.iconLibrary}\" not found`\n    )\n  }\n\n  const registryTheme = buildRegistryTheme(config)\n\n  // Build dependencies.\n  const dependencies = [\n    `shadcn@${SHADCN_VERSION}`,\n    \"class-variance-authority\",\n    \"tw-animate-css\",\n    ...(baseItem.dependencies ?? []),\n    ...iconLibraryItem.packages,\n  ]\n\n  const registryDependencies = [\"utils\"]\n  const themeVars = {\n    ...(registryTheme.cssVars?.theme ?? {}),\n    ...(normalizedFontHeading === \"inherit\"\n      ? { \"--font-heading\": getInheritedHeadingFontValue(config.font) }\n      : {}),\n  }\n\n  if (config.font) {\n    registryDependencies.push(`font-${config.font}`)\n  }\n\n  if (normalizedFontHeading !== \"inherit\") {\n    registryDependencies.push(`font-heading-${normalizedFontHeading}`)\n  }\n\n  return {\n    name: `${config.base}-${config.style}`,\n    extends: \"none\",\n    type: \"registry:base\" as const,\n    config: {\n      style: `${config.base}-${config.style}`,\n      iconLibrary: iconLibraryItem.name,\n      rtl: config.rtl,\n      menuColor: config.menuColor,\n      menuAccent: config.menuAccent,\n      tailwind: {\n        baseColor: config.baseColor,\n      },\n    },\n    dependencies,\n    registryDependencies,\n    cssVars: {\n      ...registryTheme.cssVars,\n      theme: Object.keys(themeVars).length > 0 ? themeVars : undefined,\n    },\n    css: {\n      '@import \"tw-animate-css\"': {},\n      '@import \"shadcn/tailwind.css\"': {},\n      \"@layer base\": {\n        \"*\": { \"@apply border-border outline-ring/50\": {} },\n        body: { \"@apply bg-background text-foreground\": {} },\n      },\n    },\n    ...(config.rtl && {\n      docs: `To learn how to set up the RTL provider and fonts for your app, see https://ui.shadcn.com/docs/rtl/${config.template === \"next-monorepo\" ? \"next\" : (config.template ?? \"next\")}`,\n    }),\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/directory.json",
    "content": "[\n  {\n    \"name\": \"@8bitcn\",\n    \"homepage\": \"https://www.8bitcn.com\",\n    \"url\": \"https://www.8bitcn.com/r/{name}.json\",\n    \"description\": \"A set of 8-bit styled retro components. Works with your favorite frameworks. Open Source. Open Code.\",\n    \"logo\": \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' width='500' height='500' viewBox='0 0 500 500'><path d='M0 0 C165 0 330 0 500 0 C500 165 500 330 500 500 C335 500 170 500 0 500 C0 335 0 170 0 0 Z' fill='var(--foreground)'/><path d='M0 0 C7.92 0 15.84 0 24 0 C24 8.25 24 16.5 24 25 C20.04 25 16.08 25 12 25 C12 28.96 12 32.92 12 37 C7.71 37 3.42 37 -1 37 C-1 40.96 -1 44.92 -1 49 C-4.96 49 -8.92 49 -13 49 C-13 53.29 -13 57.58 -13 62 C-17.29 62 -21.58 62 -26 62 C-26 65.96 -26 69.92 -26 74 C-29.96 74 -33.92 74 -38 74 C-38 78.29 -38 82.58 -38 87 C-41.96 87 -45.92 87 -50 87 C-50 90.96 -50 94.92 -50 99 C-54.29 99 -58.58 99 -63 99 C-63 102.96 -63 106.92 -63 111 C-66.96 111 -70.92 111 -75 111 C-75 115.29 -75 119.58 -75 124 C-78.96 124 -82.92 124 -87 124 C-87 127.96 -87 131.92 -87 136 C-91.29 136 -95.58 136 -100 136 C-100 139.96 -100 143.92 -100 148 C-103.96 148 -107.92 148 -112 148 C-112 152.29 -112 156.58 -112 161 C-116.29 161 -120.58 161 -125 161 C-125 164.96 -125 168.92 -125 173 C-128.96 173 -132.92 173 -137 173 C-137 177.29 -137 181.58 -137 186 C-140.96 186 -144.92 186 -149 186 C-149 189.96 -149 193.92 -149 198 C-153.29 198 -157.58 198 -162 198 C-162 201.96 -162 205.92 -162 210 C-165.96 210 -169.92 210 -174 210 C-174 214.29 -174 218.58 -174 223 C-177.96 223 -181.92 223 -186 223 C-186 226.96 -186 230.92 -186 235 C-194.25 235 -202.5 235 -211 235 C-211 227.08 -211 219.16 -211 211 C-206.71 211 -202.42 211 -198 211 C-198 206.71 -198 202.42 -198 198 C-194.04 198 -190.08 198 -186 198 C-186 194.04 -186 190.08 -186 186 C-182.04 186 -178.08 186 -174 186 C-174 181.71 -174 177.42 -174 173 C-169.71 173 -165.42 173 -161 173 C-161 169.04 -161 165.08 -161 161 C-157.04 161 -153.08 161 -149 161 C-149 157.04 -149 153.08 -149 149 C-145.04 149 -141.08 149 -137 149 C-137 144.71 -137 140.42 -137 136 C-132.71 136 -128.42 136 -124 136 C-124 132.04 -124 128.08 -124 124 C-120.04 124 -116.08 124 -112 124 C-112 120.04 -112 116.08 -112 112 C-107.71 112 -103.42 112 -99 112 C-99 107.71 -99 103.42 -99 99 C-95.04 99 -91.08 99 -87 99 C-87 95.04 -87 91.08 -87 87 C-83.04 87 -79.08 87 -75 87 C-75 82.71 -75 78.42 -75 74 C-70.71 74 -66.42 74 -62 74 C-62 70.04 -62 66.08 -62 62 C-58.04 62 -54.08 62 -50 62 C-50 58.04 -50 54.08 -50 50 C-46.04 50 -42.08 50 -38 50 C-38 45.71 -38 41.42 -38 37 C-33.71 37 -29.42 37 -25 37 C-25 33.04 -25 29.08 -25 25 C-21.04 25 -17.08 25 -13 25 C-13 21.04 -13 17.08 -13 13 C-8.71 13 -4.42 13 0 13 C0 8.71 0 4.42 0 0 Z' fill='var(--background)' transform='translate(325,114)'/><path d='M0 0 C7.92 0 15.84 0 24 0 C24 7.92 24 15.84 24 24 C19.71 24 15.42 24 11 24 C11 27.96 11 31.92 11 36 C7.04 36 3.08 36 -1 36 C-1 40.29 -1 44.58 -1 49 C-4.96 49 -8.92 49 -13 49 C-13 52.96 -13 56.92 -13 61 C-17.29 61 -21.58 61 -26 61 C-26 64.96 -26 68.92 -26 73 C-29.96 73 -33.92 73 -38 73 C-38 77.29 -38 81.58 -38 86 C-41.96 86 -45.92 86 -50 86 C-50 89.96 -50 93.92 -50 98 C-54.29 98 -58.58 98 -63 98 C-63 101.96 -63 105.92 -63 110 C-66.96 110 -70.92 110 -75 110 C-75 114.29 -75 118.58 -75 123 C-79.29 123 -83.58 123 -88 123 C-88 126.96 -88 130.92 -88 135 C-91.96 135 -95.92 135 -100 135 C-100 139.29 -100 143.58 -100 148 C-107.92 148 -115.84 148 -124 148 C-124 140.08 -124 132.16 -124 124 C-120.04 124 -116.08 124 -112 124 C-112 119.71 -112 115.42 -112 111 C-108.04 111 -104.08 111 -100 111 C-100 107.04 -100 103.08 -100 99 C-95.71 99 -91.42 99 -87 99 C-87 94.71 -87 90.42 -87 86 C-83.04 86 -79.08 86 -75 86 C-75 82.04 -75 78.08 -75 74 C-70.71 74 -66.42 74 -62 74 C-62 70.04 -62 66.08 -62 62 C-58.04 62 -54.08 62 -50 62 C-50 57.71 -50 53.42 -50 49 C-46.04 49 -42.08 49 -38 49 C-38 45.04 -38 41.08 -38 37 C-33.71 37 -29.42 37 -25 37 C-25 33.04 -25 29.08 -25 25 C-21.04 25 -17.08 25 -13 25 C-13 20.71 -13 16.42 -13 12 C-8.71 12 -4.42 12 0 12 C0 8.04 0 4.08 0 0 Z' fill='var(--background)' transform='translate(358,235)'/></svg>\"\n  },\n  {\n    \"name\": \"@8starlabs-ui\",\n    \"homepage\": \"https://ui.8starlabs.com\",\n    \"url\": \"https://ui.8starlabs.com/r/{name}.json\",\n    \"description\": \"A set of beautifully designed components designed for developers who want niche, high-utility UI elements that you won't find in standard libraries.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='279' height='306' viewBox='0 0 279 306' fill='none'> <path fill='var(--foreground)' d='M93.4422 235.2C67.8422 235.2 49.1755 229.867 37.4422 219.2C25.9755 208.267 20.2422 191.067 20.2422 167.6V163.2C20.2422 150.667 22.6422 139.467 27.4422 129.6C32.5089 119.733 41.4422 112.4 54.2422 107.6C46.7755 103.867 41.1755 98.1333 37.4422 90.4C33.9755 82.6667 32.2422 73.7333 32.2422 63.6V59.2C32.2422 48.8 34.3755 39.0667 38.6422 30C42.9089 20.9333 50.3755 13.7333 61.0422 8.4C71.7089 2.80001 86.5089 1.23978e-05 105.442 1.23978e-05L173.842 1.23978e-05C192.509 1.23978e-05 207.042 2.80001 217.442 8.4C228.109 13.7333 235.576 20.9333 239.842 30C244.376 39.0667 246.642 48.8 246.642 59.2V63.6C246.642 73.4667 244.909 82.2667 241.442 90C237.976 97.4667 232.242 103.333 224.242 107.6C237.042 112.4 245.976 119.733 251.042 129.6C256.109 139.467 258.642 150.667 258.642 163.2V167.6C258.642 191.067 252.776 208.267 241.042 219.2C229.576 229.867 211.176 235.2 185.842 235.2H93.4422ZM117.042 96L162.642 96C173.042 96 180.776 93.8667 185.842 89.6C191.176 85.3333 193.842 78.2667 193.842 68.4V66.4C193.842 56.5333 191.842 49.4667 187.842 45.2C183.842 40.6667 175.442 38.4 162.642 38.4H117.042C104.776 38.4 96.3755 40.4 91.8422 44.4C87.3089 48.4 85.0422 55.7333 85.0422 66.4V68.4C85.0422 78.2667 87.4422 85.3333 92.2422 89.6C97.3089 93.8667 105.576 96 117.042 96ZM105.042 196.8H174.642C184.509 196.8 192.109 194.533 197.442 190C203.042 185.467 205.842 178.267 205.842 168.4V159.2C205.842 150.667 203.042 143.867 197.442 138.8C191.842 133.733 184.242 131.2 174.642 131.2H105.042C95.4422 131.2 87.7089 133.6 81.8422 138.4C75.9755 142.933 73.0422 149.867 73.0422 159.2V168.4C73.0422 178.267 75.8422 185.467 81.4422 190C87.3089 194.533 95.1755 196.8 105.042 196.8Z' fill='black'/> <path d='M28.2 305.2L29.1 298V252.28H40.98V296.56H78.24L81.84 304.21C81.84 304.45 81.03 304.69 79.41 304.93C77.79 305.11 75 305.2 71.04 305.2H28.2ZM99.7092 305.2C95.1492 305.2 91.8492 304.15 89.8092 302.05C87.7692 299.89 86.7492 296.95 86.7492 293.23C86.7492 289.33 87.7992 286.33 89.8992 284.23C92.0592 282.13 95.3292 281.08 99.7092 281.08H104.299C108.799 281.08 112.849 281.2 116.449 281.44C120.049 281.68 123.019 281.92 125.359 282.16V276.22C125.359 275.68 125.299 275.14 125.179 274.6C125.059 274 124.699 273.52 124.099 273.16C123.499 272.8 122.479 272.62 121.039 272.62H116.539C109.999 272.62 104.539 272.74 100.159 272.98C95.7792 273.16 92.8092 273.34 91.2492 273.52L90.2592 266.68C90.2592 265.84 92.5392 265.33 97.0992 265.15C101.659 264.97 109.279 264.88 119.959 264.88H124.459C127.459 264.88 129.769 265.3 131.389 266.14C133.009 266.98 134.149 268.03 134.809 269.29C135.529 270.55 135.949 271.84 136.069 273.16C136.249 274.42 136.339 275.5 136.339 276.4V305.2H128.959L125.449 303.4C122.929 303.82 119.899 304.24 116.359 304.66C112.819 305.02 108.769 305.2 104.209 305.2H99.7092ZM102.049 297.46H122.659C123.979 297.46 124.759 297.34 124.999 297.1C125.239 296.86 125.359 296.11 125.359 294.85V287.92H102.049C100.429 287.92 99.2892 288.31 98.6292 289.09C98.0292 289.87 97.7292 291.1 97.7292 292.78C97.7292 294.46 98.0892 295.66 98.8092 296.38C99.5292 297.1 100.609 297.46 102.049 297.46ZM146.722 305.2V248.14H157.702V265.96C160.282 265.66 163.312 265.42 166.792 265.24C170.332 265 174.352 264.88 178.852 264.88H183.442C186.442 264.88 188.752 265.27 190.372 266.05C191.992 266.83 193.132 267.82 193.792 269.02C194.512 270.22 194.932 271.48 195.052 272.8C195.232 274.12 195.322 275.32 195.322 276.4V293.68C195.322 294.58 195.232 295.69 195.052 297.01C194.932 298.27 194.512 299.53 193.792 300.79C193.132 302.05 191.992 303.1 190.372 303.94C188.752 304.78 186.442 305.2 183.442 305.2H178.852C173.872 305.2 169.522 305.08 165.802 304.84C162.082 304.54 158.992 304.24 156.532 303.94L154.102 305.2H146.722ZM160.492 297.46H180.022C182.902 297.46 184.342 296.26 184.342 293.86V276.22C184.402 274.9 184.132 273.97 183.532 273.43C182.932 272.89 181.762 272.62 180.022 272.62H175.522C171.682 272.62 168.262 272.71 165.262 272.89C162.322 273.01 159.802 273.16 157.702 273.34V294.67C157.702 295.93 157.822 296.71 158.062 297.01C158.362 297.31 159.172 297.46 160.492 297.46ZM215.427 305.2C211.407 305.2 208.557 304.99 206.877 304.57C205.197 304.15 204.357 303.73 204.357 303.31L207.057 296.56C208.797 296.74 211.977 296.95 216.597 297.19C221.277 297.37 227.037 297.46 233.877 297.46H238.377C239.877 297.46 240.807 297.07 241.167 296.29C241.587 295.45 241.797 294.34 241.797 292.96C241.797 291.58 241.557 290.47 241.077 289.63C240.657 288.79 239.757 288.37 238.377 288.37H216.237C212.037 288.37 209.007 287.59 207.147 286.03C205.287 284.41 204.357 282.01 204.357 278.83V275.23C204.357 274.39 204.447 273.4 204.627 272.26C204.807 271.12 205.257 269.98 205.977 268.84C206.697 267.7 207.867 266.77 209.487 266.05C211.107 265.27 213.357 264.88 216.237 264.88H241.077C244.677 264.88 247.227 265.09 248.727 265.51C250.227 265.93 250.977 266.35 250.977 266.77L250.077 273.52C248.337 273.34 245.127 273.16 240.447 272.98C235.767 272.74 230.037 272.62 223.257 272.62H218.757C217.257 272.62 216.297 273.04 215.877 273.88C215.517 274.66 215.337 275.59 215.337 276.67C215.337 277.81 215.517 278.77 215.877 279.55C216.297 280.27 217.257 280.63 218.757 280.63H240.897C244.977 280.63 247.977 281.47 249.897 283.15C251.817 284.83 252.777 286.96 252.777 289.54V294.85C252.777 295.93 252.687 297.07 252.507 298.27C252.387 299.47 251.967 300.61 251.247 301.69C250.527 302.71 249.357 303.55 247.737 304.21C246.117 304.87 243.837 305.2 240.897 305.2H215.427Z' fill='var(--foreground)'/> <path d='M128.612 90.8321C133.68 81.744 136.212 77.2 140 77.2C143.788 77.2 146.32 81.744 151.388 90.8321L152.7 93.1841C154.14 95.7681 154.86 97.0601 155.98 97.9121C157.1 98.7642 158.5 99.0802 161.299 99.7122L163.843 100.288C173.683 102.516 178.599 103.628 179.771 107.392C180.939 111.152 177.587 115.076 170.879 122.92L169.143 124.948C167.239 127.176 166.283 128.292 165.855 129.668C165.427 131.048 165.571 132.536 165.859 135.508L166.123 138.216C167.135 148.684 167.643 153.917 164.579 156.241C161.515 158.565 156.908 156.445 147.7 152.204L145.312 151.108C142.696 149.9 141.388 149.3 140 149.3C138.612 149.3 137.304 149.9 134.688 151.108L132.304 152.204C123.092 156.445 118.485 158.565 115.425 156.245C112.357 153.917 112.865 148.684 113.877 138.216L114.141 135.512C114.429 132.536 114.573 131.048 114.141 129.672C113.717 128.292 112.761 127.176 110.857 124.952L109.121 122.92C102.413 115.08 99.061 111.156 100.229 107.392C101.397 103.628 106.321 102.512 116.161 100.288L118.705 99.7122C121.5 99.0802 122.896 98.7642 124.02 97.9121C125.144 97.0601 125.86 95.7681 127.3 93.1841L128.612 90.8321Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@unlumen-ui\",\n    \"homepage\": \"https://ui.unlumen.com\",\n    \"url\": \"https://ui.unlumen.com/r/{name}.json\",\n    \"description\": \"Primitives and components with serious attention to animation and design. Copy, own, ship.\",\n    \"logo\": \"<svg width='1000' height='851' viewBox='0 0 1000 851' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M89.0175 0.70967C96.3965 0.199513 110.014 -0.184065 117.765 0.0926296C152.178 1.32046 198.091 -1.24762 229.947 11.544C241.441 16.1598 257.026 30.2516 265.485 38.8488C284.17 57.8417 306.259 83.3236 313.189 109.224C317.793 126.431 315.392 149.958 315.27 167.967L315.202 231.257L315.241 528.788C324.554 528.521 333.483 528.694 342.789 528.851L343.672 112.172C343.872 93.2123 343.789 72.5781 346.077 53.8312C347.626 41.1347 352.51 30.0739 361.566 21.0413C378.508 4.14558 396.153 3.37994 418.547 2.39815C429.779 1.86598 441.021 1.59399 452.265 1.58063L634.756 1.56492L679.337 1.61995C689.482 1.6003 714.849 0.761566 724.437 3.73761C764.672 16.229 817.873 74.5425 827.217 115.254C829.63 125.755 828.459 166.43 828.474 178.158C873.668 177.597 915.169 174.548 951.074 208.196C969.282 225.263 987.631 250.916 994.279 275.44C995.867 281.309 996.865 294.906 997.045 301.176C1000.25 409.92 1000.04 518.923 999.969 627.691C999.945 662.813 999.599 697.942 998.939 733.055C998.672 755.152 998.876 778.459 996.487 800.24C993.784 815.616 985.101 829.34 972.142 837.626C952.284 850.321 931.946 850.014 909.432 850.58C889.063 850.949 868.686 851.075 848.309 850.957C785.67 849.99 760.318 846.029 714.716 799.132C703.863 787.962 694.001 775.566 690.716 759.955C683.557 725.902 683.754 687.511 683.762 652.869L683.801 566.197C683.785 486.058 682.551 402.45 684.092 322.564C675.353 322.526 666.615 322.56 657.884 322.666L657.947 327.869C658.976 422.339 657.695 518.853 657.624 613.511L657.467 698.964C657.593 730.265 657.939 762.266 654.882 793.402C653.082 804.925 652.092 819.004 643.267 827.564C617.924 852.128 591.669 849.699 558.868 850.179C541.1 850.501 523.34 850.714 505.572 850.816L366.593 850.847L320.779 850.407C261.621 849.81 253.339 841.973 209.97 801.152C167.882 761.534 171.155 728.858 170.903 675.531C116.681 675.885 95.2484 677.135 53.0329 637.698C33.2258 619.194 10.7767 597.663 5.007 569.593C3.45024 562.023 3.0023 544.203 2.72804 536.107C1.09506 482.08 0.290372 428.023 0.315519 373.969C-0.106478 314.362 -0.104908 254.753 0.318661 195.147C0.489188 163.32 0.959906 131.495 1.73082 99.6777C2.44986 72.4193 -0.698237 42.6502 19.7117 21.9798C39.4182 2.02242 62.8717 1.43521 89.0175 0.70967Z' fill='black'/><path d='M92.6881 35.9961C93.7537 35.9183 94.8209 35.8617 95.8888 35.8264C121.554 34.9129 192.21 34.2935 213.745 43.1069C221.875 46.4343 229.206 53.1237 235.523 59.0569C251.574 74.1321 272.929 96.7763 278.725 118.076C282.938 133.555 280.1 151.879 279.87 167.841C279.641 183.782 279.825 199.75 279.829 215.693L279.854 433.957C279.852 470.219 278.624 506.849 279.888 543.063C280.105 549.281 280.537 555.601 285.548 559.956C288.861 562.833 293.039 563.533 297.27 564.083C306.836 565.317 316.902 564.193 326.538 564.169C337.397 564.146 348.416 565.057 359.249 564.209C366.67 563.619 373.472 562.22 376.392 554.453C380.445 543.669 378.191 475.564 378.192 459.135L379.056 114.982C379.219 97.3548 379.173 79.9325 380.662 62.3545C382.208 44.1044 391.85 39.3472 408.746 38.3842C440.551 36.5716 472.266 37.0164 504.102 37.0062L627.692 37.0094L679.463 37.0723C688.5 37.0542 707.203 36.5433 715.557 38.1264C727.117 42.2902 738.354 50.0282 747.258 58.9021C764.106 75.6877 784.389 97.0891 792.011 119.931C793.504 124.407 792.97 138.453 793.009 143.485C793.135 159.224 792.632 174.908 792.954 190.641C793.693 214.152 806.211 213.542 824.545 213.616C859.947 213.76 900.033 207.626 927.663 234.889C940.685 247.733 953.07 263.917 959.144 281.478C961.345 288.211 961.706 303.213 961.91 310.408C964.323 416.829 965.18 523.278 964.488 629.727C964.504 665.273 964.166 700.827 963.482 736.365C963.215 754.287 963.309 773.459 961.942 791.279C959.938 817.471 924.858 814.806 905.927 814.877C904.222 814.971 902.524 815.058 900.827 815.128C868.285 816.402 814.345 817.322 782.951 807.779C774.849 805.318 754.275 788.253 747.43 781.721C740.326 774.953 727.769 762.792 725.45 752.809C720.806 732.812 720.067 710.024 719.627 689.657C719.124 664.88 718.975 640.103 719.164 615.326L719.18 405.83C719.18 373.096 719.305 340.256 719.352 307.52C719.376 286.995 705.962 287.117 689.388 287.087C670.638 287.054 651.644 287.055 632.776 288.017C628.014 291.17 626.607 292.845 623.48 297.594C622.097 314.597 622.552 330.844 622.576 347.866L622.615 419.903L621.979 682.755C621.696 712.916 623.998 775.055 617.201 803.18C599.048 818.296 576.895 814.468 554.436 814.751C523.631 815.333 492.818 815.584 462.007 815.498C420.085 815.663 378.161 815.537 336.24 815.121C321.499 814.885 295.944 816.936 282.621 812.149C264.234 805.531 248.018 788.96 234.423 775.354C226.351 767.273 217.799 758.28 213.102 747.708C203.328 725.706 206.355 667.521 206.366 641.007C176.096 637.148 138.521 645.063 109.812 635.041C103.629 632.887 89.4363 622.825 84.7409 618.455C69.0665 603.881 40.5286 580.802 39.3176 558.36C36.9491 514.435 36.3581 469.944 36.0925 426.105C35.5739 368.94 35.3531 311.773 35.4301 254.606C35.5369 209.984 35.9393 165.363 36.6348 120.747C37.0756 101.017 37.0418 78.4185 39.1612 58.9092C41.7435 35.1315 74.8385 36.5825 92.6881 35.9961Z' fill='white'/><path d='M488.448 56.4606C537.249 56.0691 586.05 56.2767 634.851 57.0824C655.487 57.4479 676.17 57.7772 696.791 58.7496C703.337 59.0585 711.863 59.4342 717.136 63.6546C719.085 68.0998 719.478 73.2777 719.714 78.0892C720.861 101.532 719.73 125.325 719.8 148.804C719.847 164.029 721.702 180.731 719.792 195.766C719.329 199.399 718.456 203.255 715.8 205.942C712.405 209.375 707.195 210.766 702.559 211.418C691.054 213.036 678.182 211.913 666.52 211.866C640.595 211.763 614.631 211.309 588.714 211.54C579.237 211.624 558.758 211.706 553.579 221.304C548.196 231.282 549.995 313.006 549.972 330.166L548.557 673.763C548.518 687.794 548.526 701.353 547.819 715.385C546.53 740.79 524.086 738.691 504.629 739.242C489.069 739.761 473.504 739.988 457.937 739.926C410.113 740.586 362.284 740.672 314.459 740.169C290.415 739.902 266.166 739.438 242.198 737.544C231.183 736.64 229.287 731.64 228.711 721.587C226.629 685.294 228.746 648.522 227.726 612.214C226.979 585.66 234.501 584.481 259.145 584.843C298.238 585.409 337.152 587.075 376.121 584.041C381.564 583.617 392.532 581.478 394.956 574.475C398.149 548.896 397.18 509.066 397.352 484.344L398.697 128.433C398.8 110.194 398.284 91.0246 400.118 72.8783C400.461 69.4825 401.409 64.899 403.97 62.393C411.099 55.4182 476.036 56.639 488.448 56.4606Z' fill='black'/><path d='M115.019 56.4685C130.477 56.2059 192.781 53.9177 201.049 62.5109C203.461 65.0185 204.668 68.8112 205.103 72.1819C206.014 79.2541 205.779 86.7689 205.949 93.8985C206.282 107.144 206.509 120.391 206.627 133.64L206.719 509.687C206.674 570.725 210.625 565.458 147.165 564.216C132.249 563.941 71.0916 567.038 62.2045 560.38C59.7676 555.043 59.315 542.843 59.0085 536.775C57.3488 498.934 56.4702 461.069 56.3736 423.196C55.6081 352.8 55.6569 282.395 56.5181 211.999C56.7508 180.767 57.2325 149.538 57.9633 118.314C59.671 57.4283 53.1241 58.2324 115.019 56.4685Z' fill='black'/><path d='M752.209 233.162C756.373 232.711 774.189 232.487 777.78 232.955C792.074 234.818 880.191 230.97 886.666 238.153C892.717 255.568 890.485 321.394 890.493 342.077L890.477 625.506C890.47 658.253 890.776 691.072 889.629 723.796C889.519 726.869 889.291 733.252 887.695 735.736C885.935 738.479 881.173 738.652 878.148 738.998C853.48 739.776 770.055 742.85 751.486 737.347C748.012 736.318 745.537 735.044 743.839 731.703C741.238 726.61 741.411 720.227 741.254 714.63C740.311 680.137 741.01 645.472 741.01 610.956L741.057 422.638C741.057 399.212 738.944 251.414 742.417 241.83C744.154 237.037 747.831 235.224 752.209 233.162Z' fill='black'/></svg>\"\n  },\n  {\n    \"name\": \"@auth0\",\n    \"homepage\": \"https://auth0.com\",\n    \"url\": \"https://ui.auth0.com/r/{name}.json\",\n    \"description\": \"Official Auth0 Universal Components for Web. Accelerate development with pre-built, embeddable UI for enterprise SSO, MFA, and organization management\",\n    \"logo\": \"<svg width='53' height='64' viewBox='0 0 53 64' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M3.37163 27.7823C13.8466 26.0536 22.0585 17.3818 23.7786 6.88966L24.3558 1.84681C24.4986 1.04545 23.9557 -0.0707301 22.9442 0.00940596C15.0295 0.627599 7.56046 3.24347 3.40592 4.9435C1.34294 5.79065 0 7.79405 0 10.0264V26.4772C0 27.4503 0.874338 28.1944 1.8344 28.0399L3.37163 27.788V27.7823Z' fill='var(--foreground)'/><path d='M28.8312 6.89002C30.557 17.3821 38.7689 26.054 49.2381 27.7826L50.7753 28.0345C51.7354 28.1948 52.6097 27.4507 52.6097 26.4718V10.0211C52.6097 7.78869 51.2668 5.78529 49.2038 4.93814C45.0436 3.23238 37.5803 0.622239 29.6655 0.00404612C28.6483 -0.07609 28.1282 1.05154 28.2483 1.84145L28.8254 6.8843L28.8312 6.89002Z' fill='var(--foreground)'/><path d='M49.2301 32.3907C34.915 35.2184 28.2689 44.7488 28.2689 62.7909C28.2689 63.6953 29.166 64.3249 29.9204 63.8212C36.5036 59.3737 50.9902 47.7654 52.4818 33.2436C52.5389 31.4176 50.2588 32.2762 49.2301 32.3907Z' fill='var(--foreground)'/><path d='M3.37691 32.3907C17.6921 35.2184 24.3382 44.7488 24.3382 62.7909C24.3382 63.6953 23.441 64.3249 22.6867 63.8212C16.1034 59.3737 1.6168 47.7654 0.125285 33.2436C0.0681382 31.4176 2.34828 32.2762 3.37691 32.3907Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@abui\",\n    \"homepage\": \"https://abui.io\",\n    \"url\": \"https://abui.io/r/{name}.json\",\n    \"description\": \"A shadcn-compatible registry of reusable components, blocks, and utilities conforming to Vercel's components.build specification\",\n    \"logo\": \"<svg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M20 0C31.0457 0 40 8.95431 40 20C40 31.0457 31.0457 40 20 40C8.95431 40 0 31.0457 0 20C0 8.95431 8.95431 0 20 0ZM6.09277 25.4707H18.7158L20.4707 28.251H23.5479L13.9424 11.8867L6.09277 25.4707ZM16.3711 11.8867L25.9766 28.251L33.8262 14.667H21.2041L19.4482 11.8867H16.3711ZM29.4346 17.4727L25.9766 23.249L22.5586 17.4727H29.4346ZM17.3604 22.665H10.4844L13.9424 16.8896L17.3604 22.665Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@abstract\",\n    \"homepage\": \"https://build.abs.xyz\",\n    \"url\": \"https://build.abs.xyz/r/{name}/json\",\n    \"description\": \"A collection of React components for the most common crypto patterns\",\n    \"logo\": \"<svg width='52' height='47' viewBox='0 0 52 47' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M33.7221 31.0658L43.997 41.3463L39.1759 46.17L28.901 35.8895C28.0201 35.0081 26.8589 34.5273 25.6095 34.5273C24.3602 34.5273 23.199 35.0081 22.3181 35.8895L12.0432 46.17L7.22205 41.3463L17.4969 31.0658H33.7141H33.7221Z' fill='var(--foreground)'/><path d='M35.4359 28.101L49.4668 31.8591L51.2287 25.2645L37.1978 21.5065C35.9965 21.186 34.9954 20.4167 34.3708 19.335C33.7461 18.2613 33.586 17.0033 33.9063 15.8013L37.6623 1.76283L31.0713 0L27.3153 14.0385L35.4279 28.093L35.4359 28.101Z' fill='var(--foreground)'/><path d='M15.7912 28.101L1.76028 31.8591L-0.00158691 25.2645L14.0293 21.5065C15.2306 21.186 16.2316 20.4167 16.8563 19.335C17.4809 18.2613 17.6411 17.0033 17.3208 15.8013L13.5648 1.76283L20.1558 0L23.9118 14.0385L15.7992 28.093L15.7912 28.101Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@arc\",\n    \"homepage\": \"https://witharc.co/components\",\n    \"url\": \"https://witharc.co/r/{name}.json\",\n    \"description\": \"Animated, accessible UI components built with React and Tailwind CSS.\",\n    \"logo\": \"<svg viewBox='0 0 58 48' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M27.3996 25.6826V36.5368H25.1037V33.773C24.5003 34.7557 23.6959 35.5207 22.6904 36.0678C21.6849 36.615 20.5342 36.8886 19.2382 36.8886C17.5624 36.8886 16.1938 36.4363 15.1324 35.5318C14.0822 34.6161 13.5571 33.438 13.5571 31.9975C13.5571 30.6686 14.0096 29.5966 14.9145 28.7814C15.8195 27.9662 17.0764 27.4916 18.6852 27.3576L24.2657 26.9054C24.8243 26.8607 25.1037 26.576 25.1037 26.0511V25.5486C25.1037 24.2867 24.7014 23.2817 23.897 22.5335C23.0926 21.7854 22.0033 21.4113 20.6292 21.4113C18.0595 21.4113 16.6406 22.6955 16.3725 25.2638H13.9928C14.071 24.1025 14.4062 23.0863 14.9983 22.2153C15.5905 21.3331 16.3781 20.6463 17.3613 20.155C18.3444 19.6636 19.4616 19.418 20.7129 19.418C22.0201 19.418 23.1764 19.686 24.1819 20.222C25.1874 20.758 25.9751 21.5006 26.5449 22.4498C27.1147 23.3878 27.3996 24.4654 27.3996 25.6826ZM15.8698 31.8635C15.8698 32.7792 16.2105 33.505 16.892 34.041C17.5735 34.577 18.5064 34.845 19.6907 34.845C21.3218 34.845 22.629 34.3425 23.6122 33.3375C24.6065 32.3325 25.1037 30.9981 25.1037 29.3342V28.7814L19.1041 29.2002C16.9479 29.3565 15.8698 30.2443 15.8698 31.8635ZM29.6389 19.7865H31.9348V22.2823C32.4934 21.3778 33.2029 20.6798 34.0631 20.1885C34.9346 19.6971 35.8172 19.4515 36.7109 19.4515H37.398V21.8468H36.6942C35.3312 21.8468 34.1972 22.2599 33.2922 23.0863C32.3873 23.9126 31.9348 24.9735 31.9348 26.2689V36.5368H29.6389V19.7865ZM37.6173 28.0947C37.6173 26.3526 37.9413 24.8339 38.5893 23.5386C39.2485 22.232 40.159 21.2214 41.3209 20.5067C42.494 19.7809 43.857 19.418 45.41 19.418C46.8065 19.418 48.0522 19.6916 49.1471 20.2387C50.2531 20.7747 51.1358 21.5341 51.7949 22.5168C52.4653 23.4995 52.8451 24.6497 52.9345 25.9674H50.5883C50.5213 24.5938 50.0185 23.5162 49.0801 22.7345C48.1416 21.9417 46.9182 21.5453 45.41 21.5453C43.6783 21.5453 42.3376 22.1204 41.3879 23.2706C40.4383 24.4096 39.9635 26.0176 39.9635 28.0947C39.9635 30.194 40.4383 31.8244 41.3879 32.9858C42.3488 34.136 43.6894 34.7111 45.41 34.7111C46.9071 34.7111 48.1248 34.3481 49.0633 33.6223C50.0018 32.8853 50.5101 31.8691 50.5883 30.5737H52.9345C52.8228 31.8579 52.4317 32.969 51.7614 33.907C51.1022 34.8451 50.2252 35.5709 49.1303 36.0846C48.0355 36.5871 46.7953 36.8383 45.41 36.8383C43.857 36.8383 42.494 36.4754 41.3209 35.7496C40.159 35.0237 39.2485 34.0075 38.5893 32.701C37.9413 31.3833 37.6173 29.8479 37.6173 28.0947ZM54.4305 33.639H57.1789V36.5368H54.4305V33.639Z' fill='var(--foreground)'/><path d='M5.06551 48L8.02934 43.1319L3.15893 40.1696L0.195095 45.0376L5.06551 48ZM50.2625 5.65177L47.3581 0.748277L42.4521 3.65164L45.3569 8.55517L50.2625 5.65177ZM4.79067 43.9199C2.39579 34.0839 1.21275 26.086 1.41968 19.7892C1.62658 13.4943 3.21856 8.99099 6.27854 6.02516C9.34062 3.05731 13.9959 1.50944 20.5956 1.40189C27.1949 1.2943 35.6457 2.6292 46.184 5.32779L46.5307 3.97562C35.9463 1.26523 27.3552 -0.104352 20.5729 0.00620019C13.791 0.116753 8.72503 1.70957 5.30634 5.02311C1.8855 8.33867 0.237096 13.2574 0.0239147 19.7434C-0.189197 26.2277 1.02806 34.3694 3.43376 44.25L4.79067 43.9199Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@aceternity\",\n    \"homepage\": \"https://ui.aceternity.com\",\n    \"url\": \"https://ui.aceternity.com/registry/{name}.json\",\n    \"description\": \"A modern component library built with Tailwind CSS and Motion for React, Aceternity UI contains unique and interactive components that can make your landing pages look 100x better.\",\n    \"logo\": \"<svg width='256' height='256' viewBox='0 0 256 256' fill='none' xmlns='http://www.w3.org/2000/svg'><rect width='256' height='256' fill='var(--foreground)'/><path d='M146 48H106.136L48 208H87.8644L116.932 128C116.932 128 122 114.5 124.4 108L131.466 88L146 48Z' fill='var(--background)'/><path d='M110 48H149.864L168.032 98H127.84L110 48Z' fill='var(--background)'/><path d='M139.587 113.833L171.458 208H208L172.807 113.833H139.587Z' fill='var(--background)'/><path d='M173 114L140.8 208H104L139.545 114H173Z' fill='var(--background)' /></svg>\"\n  },\n  {\n    \"name\": \"@agents-ui\",\n    \"homepage\": \"https://livekit.com/ui\",\n    \"url\": \"https://livekit.com/ui/r/{name}.json\",\n    \"description\": \"This is a shadcn/ui component registry that distributes copy-paste React components for building LiveKit AI Agent interfaces.\",\n    \"logo\": \"<svg role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><title>LiveKit</title><path d='M0 0v24h14.4v-4.799h4.8V24H24v-4.8h-4.799v-4.8h-4.8v4.8H4.8V0H0zm14.4 14.4V9.602h4.801V4.8H24V0h-4.8v4.8h-4.8v4.8H9.6v4.8h4.8z'/></svg>\"\n  },\n  {\n    \"name\": \"@aevr\",\n    \"homepage\": \"https://ui.aevr.space\",\n    \"url\": \"https://ui.aevr.space/r/{name}.json\",\n    \"description\": \"A small collection of focused, production‑ready components and primitives for React/Next.js projects—built on shadcn/ui and complementary libraries.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='115' height='105' viewBox='0 0 115 105' fill='none'><path d='M111.78 48.3601C117.803 51.2224 113.769 60.4081 105.635 62.3522L72.9714 70.1593C70.4141 70.7705 67.9525 72.2666 66.2322 74.255L44.2597 99.6532C38.7881 105.978 28.7766 105.329 29.0097 98.6642L29.9457 71.9017C30.019 69.8064 28.9714 68.0828 27.0779 67.1829L2.89121 55.6888C-3.13172 52.8266 0.902578 43.6409 9.03642 41.6967L41.7 33.8896C44.2572 33.2784 46.7189 31.7823 48.4391 29.7939L70.4117 4.3957C75.8832 -1.92893 85.8948 -1.27963 85.6617 5.38474L84.7256 32.1472C84.6524 34.2425 85.6999 35.9662 87.5935 36.866L111.78 48.3601Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@ai-blocks\",\n    \"homepage\": \"https://webllm.org/blocks\",\n    \"url\": \"https://webllm.org/r/{name}.json\",\n    \"description\": \"AI components for the web. No server. No API keys. Built on WebLLM.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='var(--foreground)' d='M19.5 4.783v2.888L22 9.114v5.773l-2.501 1.444l.001 2.887l-5 2.887L12 20.66l-2.5 1.444l-5-2.887V16.33L2 14.888l.001-5.775L4.5 7.67V4.784l5-2.887l2.499 1.444l2.502-1.445zm-4.765 8.377a.253.253 0 0 0-.47 0l-.127.305a2.18 2.18 0 0 1-1.125 1.163l-.359.16a.265.265 0 0 0 0 .48l.38.17c.494.22.89.62 1.11 1.124l.123.283c.09.207.376.207.466 0l.123-.282a2.18 2.18 0 0 1 1.11-1.125l.38-.17a.265.265 0 0 0 0-.48l-.359-.16a2.18 2.18 0 0 1-1.126-1.163zm-4.323-5.38a.444.444 0 0 0-.824 0l-.222.534a3.82 3.82 0 0 1-1.969 2.037l-.627.279a.464.464 0 0 0 0 .843l.665.295a3.82 3.82 0 0 1 1.941 1.97l.216.494a.442.442 0 0 0 .816 0l.216-.495a3.82 3.82 0 0 1 1.941-1.97l.665-.294a.464.464 0 0 0 0-.843l-.628-.28a3.82 3.82 0 0 1-1.97-2.036z'/></svg>\"\n  },\n  {\n    \"name\": \"@ai-elements\",\n    \"homepage\": \"https://ai-sdk.dev/elements\",\n    \"url\": \"https://ai-sdk.dev/elements/api/registry/{name}.json\",\n    \"description\": \"Pre-built components like conversations, messages and more to help you build AI-native applications faster.\",\n    \"logo\": \"<svg stroke-linejoin='round' viewBox='0 0 16 16' width='18' style='color:currentcolor'><path fill-rule='evenodd' clip-rule='evenodd' d='M8 1L16 15H0L8 1Z' fill='currentColor'></path></svg>\"\n  },\n  {\n    \"name\": \"@algolia\",\n    \"homepage\": \"https://sitesearch.algolia.com\",\n    \"url\": \"https://sitesearch.algolia.com/r/{name}.json\",\n    \"description\": \"Enterprises and developers use Algolia's AI search infrastructure to understand users and show them what they're looking for.\",\n    \"logo\": \"<svg role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><title>Algolia</title><path d='M12 0C5.445 0 .103 5.285.01 11.817c-.097 6.634 5.285 12.131 11.92 12.17a11.91 11.91 0 0 0 5.775-1.443.281.281 0 0 0 .052-.457l-1.122-.994a.79.79 0 0 0-.833-.14 9.693 9.693 0 0 1-3.923.77c-5.36-.067-9.692-4.527-9.607-9.888.084-5.293 4.417-9.573 9.73-9.573h9.73v17.296l-5.522-4.907a.407.407 0 0 0-.596.063 4.52 4.52 0 0 1-3.934 1.793 4.538 4.538 0 0 1-4.192-4.168 4.53 4.53 0 0 1 4.512-4.872 4.532 4.532 0 0 1 4.509 4.126c.018.205.11.397.265.533l1.438 1.275a.28.28 0 0 0 .462-.158 6.82 6.82 0 0 0 .099-1.725c-.232-3.376-2.966-6.092-6.345-6.3-3.873-.24-7.11 2.79-7.214 6.588-.1 3.7 2.933 6.892 6.634 6.974a6.75 6.75 0 0 0 4.136-1.294l7.212 6.394a.48.48 0 0 0 .797-.36V.456A.456.456 0 0 0 23.54 0Z'/></svg>\"\n  },\n  {\n    \"name\": \"@aliimam\",\n    \"homepage\": \"https://aliimam.in\",\n    \"url\": \"https://aliimam.in/r/{name}.json\",\n    \"description\": \"I create digital experiences that connect and inspire. I build apps, websites, brands, and products end-to-end.\",\n    \"logo\": \"<svg width='251' height='251' viewBox='0 0 251 251' xmlns='http://www.w3.org/2000/svg'><path d='M251 133.637C251 104.974 227.775 81.7511 199.109 81.7511H192.561L174.235 33.4682C166.603 13.3308 147.312 0.0235526 125.783 0H125.712C104.206 0 84.9386 13.2601 77.2362 33.3505L58.7221 81.7511H51.8912C23.225 81.7511 0 104.974 0 133.637C0 151.396 8.92727 167.059 22.5184 176.409L20.9402 180.554C10.6939 207.31 24.0966 237.316 50.8784 247.561C77.6366 257.783 107.645 244.405 117.892 217.626L125.547 197.63L133.085 217.508C140.952 238.235 160.667 251 181.608 251C187.732 251 193.95 249.917 200.004 247.608C226.786 237.434 240.283 207.475 230.107 180.672L228.482 176.409C242.073 167.059 251 151.396 251 133.637Z' fill='currentColor'/></svg>\"\n  },\n  {\n    \"name\": \"@animate-ui\",\n    \"homepage\": \"https://animate-ui.com\",\n    \"url\": \"https://animate-ui.com/r/{name}.json\",\n    \"description\": \"A fully animated, open-source React component distribution. Browse a list of animated primitives, components and icons you can install and use in your projects.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' role='img' viewBox='0 0 24 24'><path fill='currentColor' d='M17.453 23.09H6.547a6.43 6.43 0 0 1-3.32-.914 6.5 6.5 0 0 1-2.262-2.32 6.406 6.406 0 0 1 .031-6.45L6.45 4.094a6.4 6.4 0 0 1 2.442-2.387 6.47 6.47 0 0 1 6.218 0 6.4 6.4 0 0 1 2.442 2.387l5.453 9.312a6.4 6.4 0 0 1 .031 6.45 6.5 6.5 0 0 1-2.262 2.32 6.43 6.43 0 0 1-3.32.914M11.336 6.953 5.879 16.27a.75.75 0 0 0-.004.773.74.74 0 0 0 .672.387h10.906a.74.74 0 0 0 .672-.387.75.75 0 0 0-.004-.773l-5.457-9.317A.73.73 0 0 0 12 6.57a.73.73 0 0 0-.664.383m0 0'/></svg>\"\n  },\n  {\n    \"name\": \"@assistant-ui\",\n    \"homepage\": \"https://www.assistant-ui.com\",\n    \"url\": \"https://r.assistant-ui.com/{name}.json\",\n    \"description\": \"Radix-style React primitives for AI chat with adapters for AI SDK, LangGraph, Mastra, and custom backends.\",\n    \"logo\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"32\\\" height=\\\"32\\\" viewBox=\\\"0 0 32 32\\\"><rect width=\\\"32\\\" height=\\\"32\\\" fill=\\\"var(--foreground)\\\" /><g transform=\\\"translate(4,4)\\\" fill=\\\"var(--foreground)\\\" stroke=\\\"var(--background)\\\" stroke-width=\\\"2.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z\\\" /><path d=\\\"M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1\\\" /></g></svg>\"\n  },\n  {\n    \"name\": \"@tool-ui\",\n    \"homepage\": \"https://www.tool-ui.com\",\n    \"url\": \"https://www.tool-ui.com/r/{name}.json\",\n    \"description\": \"Open source React components for rendering AI tool call widgets and rich assistant outputs.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='var(--foreground)' d='M12 1 21.526 6.5v11L12 23 2.474 17.5v-11z'/><circle cx='12' cy='12' r='5' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@better-upload\",\n    \"homepage\": \"https://better-upload.com\",\n    \"url\": \"https://better-upload.com/r/{name}.json\",\n    \"description\": \"Simple and easy file uploads for React. Upload directly to any S3-compatible service with minimal setup.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512' fill='none' viewBox='0 0 512 512'><rect id='a' width='512' height='512' x='0' y='0' fill='var(--foreground)' stroke='var(--background)' stroke-opacity='100%' stroke-width='0' paint-order='stroke' rx='128'/><svg xmlns='http://www.w3.org/2000/svg' width='385' height='385' x='63.5' y='63.5' alignment-baseline='middle' style='color:var(--background);width:385px;height:385px' viewBox='0 0 16 16'><path stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M1.75 11.75v.5a2 2 0 0 0 2 2h8.5a2 2 0 0 0 2-2v-.5M8 10.25v-8.5m0 0 3.25 3.5M8 1.75l-3.25 3.5'/></svg></svg>\"\n  },\n  {\n    \"name\": \"@basecn\",\n    \"homepage\": \"https://basecn.dev\",\n    \"description\": \"Beautifully crafted shadcn/ui components powered by Base UI\",\n    \"url\": \"https://basecn.dev/r/{name}.json\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-bolt-icon lucide-bolt fill-none!'><path d='M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z'/><circle cx='12' cy='12' r='4'/></svg>\"\n  },\n  {\n    \"name\": \"@billingsdk\",\n    \"homepage\": \"https://billingsdk.com\",\n    \"url\": \"https://billingsdk.com/r/{name}.json\",\n    \"description\": \"BillingSDK is an open-source React and Next.js component library for SaaS billing and payments. It offers ready-to-use, customizable components for subscriptions, invoices, usage-based pricing and billing - fully compatible with Dodo Payments and Stripe.\",\n    \"logo\": \"<svg width='44' height='44' viewBox='0 0 44 44' fill='none' xmlns='http://www.w3.org/2000/svg'><g clip-path='url(#clip0_1226_311)'><path d='M26.5418 33.649C23.0418 32.349 19.4418 32.149 16.1418 33.049C13.8418 33.649 11.6418 34.849 9.64182 36.349L8.24179 37.549L7.8418 37.949L8.74179 38.749C8.84179 38.749 8.8418 38.849 8.9418 38.949C9.1418 39.149 9.34182 39.249 9.64182 39.449L10.2418 39.849L10.8418 39.349C10.9418 39.249 11.1418 39.049 11.3418 38.949C13.1418 37.449 15.1418 36.449 17.2418 35.949C19.9418 35.249 22.8418 35.349 25.7418 36.449C28.1418 37.349 33.0418 38.449 38.9418 35.949L39.1418 35.849L39.4418 35.549C39.4418 35.449 39.5418 35.449 39.6418 35.349C40.1418 34.749 40.6418 34.149 41.0418 33.449L43.0418 30.349L39.8418 32.149C35.1418 34.749 30.8418 35.249 26.5418 33.649Z' fill='var(--foreground)'/><path d='M12.8422 22.849C15.5422 22.149 18.4422 22.249 21.3422 23.349C24.5422 24.549 32.7422 26.249 41.9422 17.949L43.4422 16.449L43.5422 16.349L43.9422 15.949L43.7422 15.449C43.6422 15.049 43.4422 14.549 43.2422 14.049L42.7422 12.649L41.7422 13.649C41.6422 13.849 41.4422 13.949 41.2422 14.149C36.8422 18.649 30.0422 23.249 22.2422 20.449C18.7422 19.149 15.1422 18.949 11.8422 19.849C8.6422 20.749 5.84219 22.449 3.24219 24.849V24.749L1.74219 26.349C1.74219 26.449 1.64221 26.449 1.54221 26.549L1.24219 26.849L1.3422 27.249C1.4422 27.749 1.64219 28.249 1.74219 28.749L2.3422 30.349L3.3422 29.049C3.4422 28.849 3.64219 28.749 3.74219 28.549C5.84219 26.649 8.7422 23.949 12.8422 22.849Z' fill='var(--foreground)'/><path d='M3.14222 21.0491C5.44222 18.6491 8.0422 17.1491 10.8422 16.3491C13.5422 15.6491 16.4422 15.7491 19.3422 16.8491C28.3422 20.1491 36.1422 14.7491 39.5422 11.8491L40.8422 10.5491L41.3422 10.1491L40.9422 9.54907C40.6422 9.24907 40.4422 8.84907 40.1422 8.44907L39.5422 7.64905L38.8422 8.34906C38.7422 8.44906 38.5422 8.64905 38.4422 8.74905C34.2422 12.7491 27.7422 16.8491 20.3422 14.0491C16.8422 12.7491 13.2422 12.5491 9.9422 13.4491C7.8422 14.0491 5.8422 15.0491 3.8422 16.3491L1.74219 18.0491C1.54219 18.2491 1.44219 18.3491 1.24219 18.5491L1.04221 18.7491V19.0491C0.942206 19.7491 0.942194 20.4491 0.842194 21.0491L0.742188 23.5491L2.4422 21.7491C2.6422 21.5491 2.84222 21.2491 3.14222 21.0491Z' fill='var(--foreground)'/><path d='M29.4426 40.449C29.1426 40.349 28.9426 40.249 28.6426 40.149C25.1426 38.849 21.5426 38.649 18.2426 39.549C17.5426 39.749 16.8426 39.949 16.1426 40.249L13.7426 41.349L13.1426 41.649L15.1426 42.349C15.7426 42.549 16.3426 42.749 16.9426 42.949L17.2426 43.049L17.5426 42.949C17.8426 42.849 18.1426 42.649 18.4426 42.649C18.6426 42.649 18.8426 42.549 19.0426 42.449C21.4426 41.849 24.0426 41.849 26.8426 42.749C27.1426 42.849 27.3426 42.949 27.6426 43.049L28.1426 43.249L28.4426 43.149C29.1426 42.949 29.9426 42.749 30.5426 42.449L33.3426 41.449L30.4426 40.749C30.1426 40.649 29.7426 40.549 29.4426 40.449Z' fill='var(--foreground)'/><path d='M44.741 19.749L43.241 21.249C43.041 21.449 42.841 21.649 42.641 21.849C38.541 25.749 31.941 29.949 24.541 27.149C21.041 25.849 17.441 25.649 14.141 26.549C11.041 27.449 8.241 29.049 5.741 31.449L4.44101 32.849L4.04102 33.349L4.44101 33.949C4.74101 34.349 4.94103 34.649 5.14103 35.049L5.741 35.949L6.44101 35.049C6.54101 34.949 6.74101 34.749 6.84101 34.649C9.24101 32.049 11.841 30.449 14.841 29.649C17.541 28.949 20.441 29.049 23.341 30.149C25.841 31.049 28.441 31.349 31.041 31.049C35.641 30.549 40.241 27.949 43.641 25.049C43.841 24.849 44.041 24.749 44.241 24.549L44.541 24.249V23.949C44.541 23.349 44.641 22.649 44.641 22.049L44.741 19.749Z' fill='var(--foreground)'/><path d='M6.7414 10.549C7.3414 10.249 8.04143 10.049 8.64143 9.84896C11.3414 9.14896 14.2414 9.24896 17.1414 10.349C19.0414 11.049 20.9414 11.349 23.0414 11.349C27.2414 11.349 31.4414 9.84897 35.3414 6.94897L36.8414 5.74895L37.3414 5.34896L36.4414 4.64895C36.1414 4.34895 35.7414 4.04896 35.3414 3.84896L34.7414 3.44897L34.2414 3.84896C34.0414 3.94896 33.9414 4.14895 33.7414 4.24895C28.4414 8.24895 23.1414 9.34897 18.1414 7.44897C14.5414 6.14897 10.9414 5.84897 7.34141 6.94897C7.04141 7.04897 6.74141 7.14895 6.34141 7.24895L6.14143 7.34896L5.84141 7.64895C5.84141 7.74895 5.74143 7.74896 5.64143 7.84896C5.24143 8.44896 4.74141 8.94897 4.34141 9.54897L2.44141 12.449L5.54142 10.849C6.04142 10.849 6.4414 10.649 6.7414 10.549Z' fill='var(--foreground)'/><path d='M14.9422 3.74893L15.2422 3.84894C16.5422 4.34894 18.5422 4.84894 21.0422 4.84894C23.6422 4.84894 26.1422 4.24893 28.6422 3.24893L31.7422 1.74893L29.6422 1.04895C29.0422 0.84895 28.4422 0.64895 27.7422 0.54895H27.4422L27.1422 0.648926C26.8422 0.748926 26.5422 0.94895 26.2422 1.04895C23.2422 2.14895 20.2422 2.34895 17.3422 1.54895C17.0422 1.44895 16.7422 1.34893 16.4422 1.24893L16.1422 1.14893L15.8422 1.24893C15.2422 1.44893 14.6422 1.64895 14.0422 1.94895L11.7422 2.94895L14.1422 3.64893C14.3422 3.54893 14.6422 3.64893 14.9422 3.74893Z' fill='var(--foreground)'/></g><defs><clipPath id='clip0_1226_311'><rect width='44' height='44' fill='white'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@blocks-so\",\n    \"homepage\": \"https://blocks.so\",\n    \"url\": \"https://blocks.so/r/{name}.json\",\n    \"description\": \"A set of clean, modern application building blocks for you in your applications. Free and Open Source\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='var(--foreground)'><path stroke='none' d='M0 0h24v24H0z' fill='none'/><path d='M12 2c-.218 0 -.432 .002 -.642 .005l-.616 .017l-.299 .013l-.579 .034l-.553 .046c-4.785 .464 -6.732 2.411 -7.196 7.196l-.046 .553l-.034 .579c-.005 .098 -.01 .198 -.013 .299l-.017 .616l-.004 .318l-.001 .324c0 .218 .002 .432 .005 .642l.017 .616l.013 .299l.034 .579l.046 .553c.464 4.785 2.411 6.732 7.196 7.196l.553 .046l.579 .034c.098 .005 .198 .01 .299 .013l.616 .017l.642 .005l.642 -.005l.616 -.017l.299 -.013l.579 -.034l.553 -.046c4.785 -.464 6.732 -2.411 7.196 -7.196l.046 -.553l.034 -.579c.005 -.098 .01 -.198 .013 -.299l.017 -.616l.005 -.642l-.005 -.642l-.017 -.616l-.013 -.299l-.034 -.579l-.046 -.553c-.464 -4.785 -2.411 -6.732 -7.196 -7.196l-.553 -.046l-.579 -.034a28.058 28.058 0 0 0 -.299 -.013l-.616 -.017l-.318 -.004l-.324 -.001z'/></svg>\"\n  },\n  {\n    \"name\": \"@boldkit\",\n    \"homepage\": \"https://boldkit.dev\",\n    \"url\": \"https://boldkit.dev/r/{name}.json\",\n    \"description\": \"Neubrutalism component library with 43 components, 42 SVG shapes, thick borders, and hard shadows. Supports React, Vue, and Nuxt. Built on shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' fill='none'><rect x='5' y='5' width='90' height='90' fill='var(--background)' stroke='var(--foreground)' stroke-width='6'/><rect x='20' y='20' width='25' height='25' fill='var(--foreground)'/><rect x='55' y='20' width='25' height='25' fill='var(--foreground)'/><rect x='20' y='55' width='25' height='25' fill='var(--foreground)'/><rect x='55' y='55' width='25' height='25' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@bundui\",\n    \"homepage\": \"https://bundui.io\",\n    \"url\": \"https://bundui.io/r/{name}.json\",\n    \"description\": \"A collection of 150+ handcrafted UI components built with Tailwind CSS and shadcn/ui, covering marketing, e-commerce, dashboards, real estate, and more.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='277' height='292' viewBox='0 0 277 292' fill='none'><path d='M97 0C114.673 0 129 14.3269 129 32V39C129 52.8071 117.807 64 104 64C90.1929 64 79 75.1929 79 89V160C79 192.585 105.415 219 138 219H167C183.569 219 197 205.569 197 189C197 172.431 183.569 159 167 159H146C128.327 159 114 144.673 114 127C114 109.327 128.327 95 146 95H195.5C240.511 95 277 131.489 277 176.5V193.5C277 247.9 232.9 292 178.5 292H122C54.6213 292 0 237.379 0 170V64.5C0 28.8776 28.8776 0 64.5 0H97Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@cardcn\",\n    \"homepage\": \"https://cardcn.dev\",\n    \"url\": \"https://cardcn.dev/r/{name}.json\",\n    \"description\": \"A set of beautifully-designed shadcn card components\",\n    \"logo\": \"<svg fill='none' viewBox='0 0 388 440' xmlns='http://www.w3.org/2000/svg'><rect x='25.867' width='336.27' height='336.27' rx='96' fill='color(display-p3 0.9804 0.9804 0.9804)'/><rect x='29.867' y='4' width='328.27' height='328.27' rx='92' stroke='color(display-p3 0.0392 0.0392 0.0392)' stroke-opacity='.9' stroke-width='8'/><rect x='12.933' y='25.867' width='362.13' height='362.13' rx='96' fill='color(display-p3 0.9804 0.9804 0.9804)'/><rect x='16.933' y='29.867' width='354.13' height='354.13' rx='92' stroke='color(display-p3 0.0392 0.0392 0.0392)' stroke-opacity='.95' stroke-width='8'/><rect x='4' y='55.733' width='380' height='380' rx='92' fill='color(display-p3 0.9804 0.9804 0.9804)' stroke='color(display-p3 0.0392 0.0392 0.0392)' stroke-width='8'/><line x1='129.33' x2='229.51' y1='281.25' y2='181.07' stroke='color(display-p3 0.0392 0.0392 0.0392)' stroke-linecap='round' stroke-width='25'/><line x1='212.67' x2='253.92' y1='305.66' y2='264.4' stroke='color(display-p3 0.0392 0.0392 0.0392)' stroke-linecap='round' stroke-width='25'/></svg>\"\n  },\n  {\n    \"name\": \"@chamaac\",\n    \"homepage\": \"https://chamaac.com\",\n    \"url\": \"https://chamaac.com/r/{name}.json\",\n    \"description\": \"A collection of beautiful, animated components to elevate your web projects instantly.\",\n    \"logo\": \"<svg width='25' height='25' viewBox='0 0 355 426' fill='none' xmlns='http://www.w3.org/2000/svg'><path fill='var(--foreground)' d='M184.467 0.319128C163.534 2.05246 140.201 8.1858 120.334 17.5191C101.534 26.3191 76.2007 43.5191 77.934 46.3191C78.334 46.9858 80.8673 47.5191 83.8007 47.5191C91.4007 47.5191 117.001 52.1858 134.734 56.7191C166.601 64.9858 197.801 78.8525 224.601 96.7191C266.467 124.452 293.934 162.852 299.934 202.186C301.534 212.319 301.001 220.452 297.667 237.519C297.001 240.986 297.534 240.586 301.934 234.186C328.067 196.452 346.067 146.986 353.801 92.4525C356.201 74.7191 356.201 74.7191 340.067 58.7191C311.534 30.1858 278.334 11.7858 240.867 3.65246C228.201 0.985795 198.867 -0.747539 184.467 0.319128Z'/><path fill='var(--foreground)' d='M57.534 63.6524C44.0673 78.0524 30.4673 98.1858 21.134 117.519C5.26732 150.319 -1.26602 182.986 0.200651 221.519C1.40065 253.252 7.80065 279.252 21.2673 307.519C29.2673 324.186 49.2673 354.719 51.0007 352.719C51.2673 352.452 52.2007 346.186 53.0007 338.852C60.6007 275.652 81.0007 219.919 112.601 176.719C121.401 164.719 136.867 149.119 149.134 139.919C158.067 133.119 176.334 124.319 187.134 121.519C198.067 118.586 219.801 118.719 229.667 121.519C233.934 122.719 237.667 123.519 238.067 123.119C238.867 122.186 227.534 113.252 214.867 104.586C201.667 95.7858 173.801 82.0524 157.134 76.1858C131.667 67.3858 98.2007 60.1858 75.934 58.7191L63.0007 57.7858L57.534 63.6524Z'/><path fill='var(--foreground)' d='M118.201 190.452C91.934 229.386 77.534 266.586 67.134 322.186C64.6006 335.653 62.0673 361.786 63.0006 365.386C64.334 370.853 90.0673 390.586 111.801 402.853C173.934 437.653 253.134 432.853 313.134 390.453C326.334 381.119 327.534 379.519 321.534 379.519C313.934 379.519 278.734 371.253 261.267 365.519C236.467 357.253 206.467 342.186 189.001 329.386C161.934 309.253 140.334 283.786 130.467 259.786C120.467 235.919 117.801 215.119 121.934 194.852C123.134 189.252 123.801 184.452 123.534 184.052C123.134 183.786 120.734 186.719 118.201 190.452Z'/></svg>\"\n  },\n  {\n    \"name\": \"@clerk\",\n    \"homepage\": \"https://clerk.com/docs/guides/development/shadcn-cli\",\n    \"url\": \"https://clerk.com/r/{name}.json\",\n    \"description\": \"The easiest way to add authentication and user management to your application. Purpose-built for React, Next.js, Remix, and The Modern Web.\",\n    \"logo\": \"<svg role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><title>Clerk</title><path d='m21.47 20.829-2.881-2.881a.572.572 0 0 0-.7-.084 6.854 6.854 0 0 1-7.081 0 .576.576 0 0 0-.7.084l-2.881 2.881a.576.576 0 0 0-.103.69.57.57 0 0 0 .166.186 12 12 0 0 0 14.113 0 .58.58 0 0 0 .239-.423.576.576 0 0 0-.172-.453Zm.002-17.668-2.88 2.88a.569.569 0 0 1-.701.084A6.857 6.857 0 0 0 8.724 8.08a6.862 6.862 0 0 0-1.222 3.692 6.86 6.86 0 0 0 .978 3.764.573.573 0 0 1-.083.699l-2.881 2.88a.567.567 0 0 1-.864-.063A11.993 11.993 0 0 1 6.771 2.7a11.99 11.99 0 0 1 14.637-.405.566.566 0 0 1 .232.418.57.57 0 0 1-.168.448Zm-7.118 12.261a3.427 3.427 0 1 0 0-6.854 3.427 3.427 0 0 0 0 6.854Z'/></svg>\"\n  },\n  {\n    \"name\": \"@commercn\",\n    \"homepage\": \"https://commercn.com\",\n    \"url\": \"https://commercn.com/r/{name}.json\",\n    \"description\": \"Shadcn UI Blocks for Ecommerce websites\",\n    \"logo\": \"<svg width='400' height='400' viewBox='0 0 298 347' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M149 13L291.028 95V259L149 341L6.97183 259V95L149 13Z' fill='var(--background)'/><path d='M132.82 9.99006L21.54 77.1701C11.62 83.1601 5.5 94.2301 5.5 106.21V240.56C5.5 252.54 11.61 263.61 21.54 269.6L132.82 336.78C142.74 342.77 154.97 342.77 164.9 336.78L276.18 269.6C286.1 263.61 292.22 252.54 292.22 240.56V106.21C292.22 94.2301 286.11 83.1601 276.18 77.1701L164.89 9.99006C154.97 4.00006 142.74 4.00006 132.81 9.99006H132.82ZM132.82 313.69L40.67 258.06C30.75 252.07 24.63 241 24.63 229.02V117.76C24.63 105.78 30.74 94.7101 40.67 88.7201L132.82 33.0901C142.74 27.1001 154.97 27.1001 164.9 33.0901L257.05 88.7201C266.97 94.7101 273.09 105.78 273.09 117.76V229.02C273.09 241 266.98 252.07 257.05 258.06L164.9 313.69C154.98 319.68 142.75 319.68 132.82 313.69Z' fill='var(--foreground)' stroke='var(--foreground)' stroke-width='11' stroke-miterlimit='10'/><path d='M66.38 239.42C61.04 239.61 55.96 236.91 53.12 232.38C48.73 225.37 50.87 216.09 57.88 211.71L223.9 107.87C226.13 106.47 228.7 105.69 231.31 105.6C236.65 105.41 241.73 108.11 244.57 112.64C246.7 116.04 247.37 120.06 246.47 123.96C245.57 127.86 243.2 131.18 239.81 133.31L73.79 237.15C71.56 238.55 68.99 239.33 66.38 239.42Z' fill='var(--foreground)'/><path d='M226.632 112.041L60.4685 215.992C55.8285 218.895 54.4202 225.01 57.323 229.65L57.4184 229.802C60.3212 234.442 66.4358 235.85 71.0757 232.948L237.239 128.996C241.879 126.094 243.287 119.979 240.384 115.339L240.289 115.187C237.386 110.547 231.271 109.138 226.632 112.041Z' fill='var(--foreground)'/><path d='M138.74 271.19C133.86 271.23 129.3 268.48 126.83 264.01C124.45 259.71 124.28 254.47 126.53 249.83C127.72 247.38 129.63 245.42 131.87 244.03L214.37 192.67C216.44 191.38 218.8 190.69 221.19 190.67C226.07 190.63 230.63 193.39 233.1 197.85C234.95 201.19 235.46 205.1 234.55 208.86C233.63 212.61 231.39 215.76 228.24 217.72L145.57 269.19C143.5 270.48 141.14 271.17 138.75 271.19H138.74Z' fill='var(--foreground)'/><path d='M130.8 261.64L130.72 261.5C128.19 256.93 129.63 251.05 133.92 248.38L216.76 196.81C221.06 194.13 226.59 195.67 229.13 200.24L229.21 200.38C231.74 204.95 230.3 210.83 226.01 213.5L143.17 265.07C138.87 267.75 133.34 266.21 130.8\"\n  },\n  {\n    \"name\": \"@coss\",\n    \"homepage\": \"https://coss.com/ui\",\n    \"url\": \"https://coss.com/ui/r/{name}.json\",\n    \"description\": \"A new, modern UI component library built on top of Base UI. Built for developers and AI.\",\n    \"logo\": \"<svg width='400' height='400' viewBox='0 0 400 400' fill='none' xmlns='http://www.w3.org/2000/svg'><rect width='400' height='400' fill='var(--foreground)'/><path d='M94.7002 158.006C102.05 157.902 108.623 159.196 114.42 161.888C120.217 164.579 124.823 168.306 128.239 173.067L112.091 186.266C110.228 183.471 107.795 181.245 104.793 179.589C101.895 177.933 98.6337 177.104 95.0107 177.104C90.5596 177.104 86.6777 178.191 83.3652 180.365C80.0528 182.435 77.4648 185.23 75.6016 188.75C73.8418 192.269 72.9619 196.151 72.9619 200.395C72.9619 204.536 73.8936 208.418 75.7568 212.041C77.7236 215.56 80.3634 218.407 83.6758 220.581C87.0918 222.651 91.0254 223.686 95.4766 223.686C99.5137 223.686 102.93 222.807 105.725 221.047C108.52 219.183 110.952 216.854 113.022 214.059L128.239 227.258C124.409 232.123 119.647 235.953 113.954 238.748C108.364 241.439 101.584 242.785 93.6133 242.785C87.8164 242.785 82.3818 241.698 77.3096 239.524C72.3409 237.35 67.9414 234.348 64.1113 230.518C60.2813 226.585 57.2793 222.082 55.1055 217.01C53.0352 211.834 52 206.296 52 200.395C52 192.528 53.8115 185.437 57.4346 179.123C61.1611 172.705 66.2334 167.581 72.6514 163.751C79.1728 159.921 86.5225 158.006 94.7002 158.006ZM171.283 158.161C179.668 158.161 187.069 160.076 193.487 163.906C200.009 167.736 205.081 172.86 208.704 179.278C212.431 185.696 214.294 192.787 214.294 200.551C214.294 208.314 212.431 215.405 208.704 221.823C205.081 228.138 200.009 233.21 193.487 237.04C187.069 240.87 179.668 242.785 171.283 242.785C163.002 242.785 155.601 240.87 149.079 237.04C142.558 233.21 137.434 228.138 133.707 221.823C130.084 215.405 128.272 208.314 128.272 200.551C128.272 192.787 130.084 185.696 133.707 179.278C137.434 172.86 142.558 167.736 149.079 163.906C155.601 160.076 163.002 158.161 171.283 158.161ZM250.784 158.006C257.306 158.006 262.896 158.989 267.555 160.956C272.213 162.923 276.612 166.598 280.753 171.98L265.535 183.626C263.568 180.52 261.343 178.295 258.858 176.949C256.478 175.604 253.941 174.931 251.25 174.931C248.352 174.931 245.919 175.5 243.952 176.639C242.089 177.777 241.157 179.589 241.157 182.073C241.157 183.419 241.778 184.765 243.021 186.11C244.263 187.352 247.265 188.595 252.026 189.837C259.894 191.804 265.898 194.133 270.039 196.824C274.179 199.412 277.026 202.362 278.579 205.675C280.132 208.987 280.908 212.662 280.908 216.699C280.908 221.668 279.511 226.119 276.716 230.053C274.024 233.986 270.297 237.092 265.535 239.369C260.877 241.646 255.546 242.785 249.542 242.785C235.982 242.785 224.802 238.075 216.003 228.655L230.133 215.767C236.033 222.392 242.348 225.705 249.076 225.705C252.699 225.705 255.442 224.928 257.306 223.376C259.272 221.72 260.256 219.701 260.256 217.32C260.256 215.871 259.894 214.629 259.169 213.594C258.548 212.559 257.15 211.575 254.977 210.643C252.906 209.712 249.749 208.78 245.505 207.849C238.259 206.089 232.876 203.915 229.356 201.327C225.837 198.739 223.508 195.841 222.369 192.632C221.23 189.423 220.661 186.11 220.661 182.694C220.661 175.655 223.301 169.807 228.58 165.148C233.963 160.387 241.364 158.006 250.784 158.006ZM317.959 158.006C324.48 158.006 330.07 158.989 334.729 160.956C339.387 162.923 343.786 166.598 347.927 171.98L332.71 183.626C330.743 180.52 328.518 178.295 326.033 176.949C323.652 175.603 321.116 174.931 318.425 174.931C315.526 174.931 313.094 175.5 311.127 176.639C309.264 177.777 308.332 179.589 308.332 182.073C308.332 183.419 308.953 184.765 310.195 186.11C311.438 187.352 314.44 188.595 319.201 189.837C327.068 191.804 333.072 194.133 337.213 196.824C341.354 199.412 344.2 202.362 345.753 205.675C347.306 208.987 348.082 212.662 348.082 216.699C348.082 221.668 346.685 226.119 343.89 230.053C341.198 233.986 337.472 237.092 332.71 239.369C328.052 241.646 322.721 242.785 316.717 242.785C303.156 242.785 291.977 238.075 283.178 228.655L297.308 215.767C303.208 222.392 309.522 225.705 316.251 225.705C319.874 225.705 322.617 224.929 324.48 223.376C326.447 221.72 327.431 219.701 327.431 217.32C327.431 215.871 327.068 214.629 326.344 213.594C325.723 212.558 324.325 211.575 322.151 210.643C320.081 209.712 316.924 208.78 312.68 207.849C305.434 206.089 300.051 203.915 296.531 201.327C293.012 198.739 290.683 195.841 289.544 192.632C288.405 189.423 287.836 186.11 287.836 182.694C287.836 175.655 290.476 169.807 295.755 165.148C301.138 160.387 308.539 158.006 317.959 158.006ZM171.283 177.26C166.832 177.26 162.95 178.347 159.638 180.52C156.325 182.591 153.737 185.386 151.874 188.905C150.114 192.425 149.234 196.307 149.234 200.551C149.234 204.691 150.114 208.521 151.874 212.041C153.737 215.56 156.325 218.407 159.638 220.581C162.95 222.651 166.832 223.686 171.283 223.686C175.734 223.686 179.616 222.651 182.929 220.581C186.241 218.407 188.777 215.56 190.537 212.041C192.4 208.521 193.332 204.691 193.332 200.551C193.332 196.307 192.4 192.425 190.537 188.905C188.777 185.386 186.241 182.591 182.929 180.52C179.616 178.347 175.734 177.26 171.283 177.26Z' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@creative-tim\",\n    \"homepage\": \"https://www.creative-tim.com/ui\",\n    \"url\": \"https://www.creative-tim.com/ui/r/{name}.json\",\n    \"description\": \"A collection of open-source UI components, blocks and AI Agents. Integrate them in v0, Lovable, Claude or in your application.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='400' height='400' viewBox='0 0 100 100' fill='none'><g clip-path='url(#clip0_95079_935)'><path d='M81.4347 17H18.5697C16.5982 17 15 18.5982 15 20.5697V50.5035C15 52.475 16.5982 54.0732 18.5697 54.0732H31.4678V83.4347C31.4666 84.381 31.8417 85.289 32.5105 85.9586C33.1792 86.6281 34.0867 87.0044 35.0331 87.0044H64.9669C66.9384 87.0044 68.5366 85.4062 68.5366 83.4347V54.0863H81.4347C82.381 54.0863 83.2885 53.7101 83.9573 53.0405C84.626 52.3709 85.0012 51.463 85 50.5166V20.5697C85.0012 19.6234 84.626 18.7154 83.9573 18.0458C83.2885 17.3762 82.381 17 81.4347 17ZM19.1377 21.1421H47.9311V49.9355H19.1377V21.1421ZM64.3989 82.8667H35.6055V54.0863H64.3989V82.8667ZM80.8623 49.9355H52.0688V21.1421H80.8623V49.9355Z' fill='var(--foreground)'/><path d='M38.6989 40.3057C39.5142 41.0709 40.7898 41.0507 41.5806 40.2599C42.3713 39.4692 42.3915 38.1936 41.6263 37.3782L35.0156 30.7676C34.205 29.9645 32.8987 29.9645 32.0882 30.7676L25.46 37.3782C24.909 37.8953 24.6834 38.6714 24.8712 39.4032C25.0591 40.1351 25.6305 40.7066 26.3624 40.8944C27.0943 41.0822 27.8703 40.8566 28.3874 40.3057L33.5344 35.1587L38.6989 40.3057Z' fill='var(--foreground)'/><path d='M61.3186 40.3057L66.4656 35.1587L71.6126 40.3057C72.428 41.0709 73.7036 41.0507 74.4943 40.2599C75.285 39.4692 75.3052 38.1936 74.54 37.3782L67.9293 30.7676C67.1187 29.9645 65.8125 29.9645 65.0019 30.7676L58.3912 37.3782C57.626 38.1936 57.6462 39.4692 58.4369 40.2599C59.2276 41.0507 60.5032 41.0709 61.3186 40.3057Z' fill='var(--foreground)'/><path d='M44.8508 63.6987C44.0343 62.9347 42.7587 62.9568 41.9692 63.7487C41.1796 64.5406 41.1613 65.8163 41.9278 66.6305L48.5385 73.2368C48.9263 73.6258 49.4529 73.8445 50.0022 73.8445C50.5515 73.8445 51.0781 73.6258 51.4659 73.2368L58.0766 66.6305C58.6003 66.1076 58.8053 65.345 58.6142 64.6299C58.4232 63.9149 57.8653 63.3561 57.1505 63.1641C56.4358 62.972 55.6729 63.1758 55.1492 63.6987L50.0022 68.8501L44.8508 63.6987Z' fill='var(--foreground)'/></g><defs><clipPath id='clip0_95079_935'><rect width='100' height='100' fill='white'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@cult-ui\",\n    \"homepage\": \"https://www.cult-ui.com\",\n    \"url\": \"https://cult-ui.com/r/{name}.json\",\n    \"description\": \"Cult UI is a rare, curated set of shadcn-compatible, headless and composable components—tastefully animated with Framer Motion.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><defs><style>.cls-1{fill:none;}</style></defs><g><rect class='cls-1' width='200' height='200'/><g><circle cx='100.18' cy='86.7' r='10.7'/><circle cx='78.79' cy='54.62' r='10.7'/><circle cx='121.57' cy='54.62' r='10.7'/><circle cx='100.18' cy='151.32' r='10.7'/><circle cx='78.79' cy='119.24' r='10.7'/><circle cx='121.57' cy='119.24' r='10.7'/></g></g></svg>\"\n  },\n  {\n    \"name\": \"@diceui\",\n    \"homepage\": \"https://www.diceui.com/\",\n    \"url\": \"https://diceui.com/r/{name}.json\",\n    \"description\": \"Accessible shadcn/ui components built with React, TypeScript, and Tailwind CSS. Copy-paste ready, and customizable.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' class='fill-none!' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' aria-hidden='true' viewBox='0 0 24 24'><rect width='18' height='18' x='3' y='3' rx='2' ry='2'/><path d='M16 8h.01M8 8h.01M8 16h.01M16 16h.01'/></svg>\"\n  },\n  {\n    \"name\": \"@doras-ui\",\n    \"homepage\": \"https://ui.doras.to/\",\n    \"url\": \"https://ui.doras.to/r/{name}.json\",\n    \"description\": \"A collection of beautiful, reusable component blocks built with React\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' viewBox='0 0 24 24'><rect width='24' height='24' rx='2' fill='#8763B3'/><g transform='rotate(-12 12 12)'><path d='M3 7c3 -2 6 -2 9 0s6 2 9 0' stroke='#ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none'/><path d='M3 17c3 -2 6 -2 9 0s6 2 9 0' stroke='#ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none'/><path d='M3 12c3 -2 6 -2 9 0s6 2 9 0' stroke='#ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none'/></g></svg>\"\n  },\n  {\n    \"name\": \"@elements\",\n    \"homepage\": \"https://www.tryelements.dev\",\n    \"url\": \"https://www.tryelements.dev/r/{name}.json\",\n    \"description\": \"Full-stack shadcn/ui components that go beyond UI. Add auth, monetization, uploads, and AI to your app in seconds.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'><g clip-path='url(#clip0_18_8)'><path d='M0.248535 7.05071V0.353027H8.03229V7.05071H0.248535ZM8.03229 7.05071V0.353027H15.8161V7.05071H8.03229ZM15.8161 7.05071V0.353027H23.5999V7.05071H15.8161ZM0.248535 15.4228V8.72513H8.03229V15.4228H0.248535ZM8.03229 15.4228V8.72513H15.8161V15.4228H8.03229ZM0.248535 23.7949V17.0972H8.03229V23.7949H0.248535ZM8.03229 23.7949V17.0972H15.8161V23.7949H8.03229ZM15.8161 23.7949V17.0972H23.5999V23.7949H15.8161Z' fill='var(--foreground)'/></g><defs><clipPath id='clip0_18_8'><rect width='24' height='24' fill='var(--background)'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@elevenlabs-ui\",\n    \"homepage\": \"https://ui.elevenlabs.io\",\n    \"url\": \"https://ui.elevenlabs.io/r/{name}.json\",\n    \"description\": \"A collection of Open Source agent and audio components that you can customize and extend.\",\n    \"logo\": \"<svg role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><title>ElevenLabs</title><path d='M4.6035 0v24h4.9317V0zm9.8613 0v24h4.9317V0z'/></svg>\"\n  },\n  {\n    \"name\": \"@efferd\",\n    \"homepage\": \"https://efferd.com/\",\n    \"url\": \"https://efferd.com/r/{name}.json\",\n    \"description\": \"A collection of beautifully crafted Shadcn/UI blocks, designed to help developers build modern websites with ease.\",\n    \"logo\": \"<svg fill='currentColor' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 24 24' version='1.1'><path d='M 15.03125 23.851562 C 14.117188 23.609375 13.417969 23 13 22.101562 C 12.808594 21.691406 12.808594 21.613281 12.808594 18.375 C 12.808594 15.066406 12.808594 15.066406 13.097656 14.484375 C 13.429688 13.8125 13.898438 13.351562 14.585938 13.027344 C 15.074219 12.800781 15.074219 12.800781 18.386719 12.800781 C 21.699219 12.800781 21.699219 12.800781 22.28125 13.089844 C 22.953125 13.421875 23.414062 13.890625 23.738281 14.578125 C 23.964844 15.066406 23.964844 15.066406 23.988281 18.140625 C 24.015625 20.769531 24 21.285156 23.875 21.710938 C 23.5625 22.789062 22.769531 23.582031 21.699219 23.863281 C 20.964844 24.042969 15.746094 24.042969 15.03125 23.851562 Z M 21.679688 22.390625 C 21.863281 22.304688 22.117188 22.085938 22.246094 21.917969 C 22.480469 21.613281 22.480469 21.613281 22.480469 18.375 C 22.480469 15.136719 22.480469 15.136719 22.238281 14.824219 C 21.757812 14.1875 21.792969 14.195312 18.386719 14.195312 C 15.667969 14.195312 15.308594 14.214844 15.066406 14.34375 C 14.691406 14.542969 14.359375 14.960938 14.246094 15.355469 C 14.144531 15.753906 14.132812 20.847656 14.246094 21.328125 C 14.386719 21.9375 14.847656 22.398438 15.441406 22.519531 C 15.625 22.554688 17.027344 22.582031 18.5625 22.574219 C 21.105469 22.554688 21.375 22.539062 21.679688 22.390625 Z M 21.679688 22.390625 ' opacity='50%'/><path d='M 2.859375 23.085938 C 2.089844 22.84375 1.324219 22.15625 0.976562 21.398438 C 0.792969 20.996094 0.785156 20.882812 0.785156 17.636719 C 0.785156 14.28125 0.785156 14.28125 1.019531 13.785156 C 1.296875 13.1875 1.855469 12.609375 2.441406 12.324219 C 2.875 12.105469 2.875 12.105469 6.195312 12.078125 C 9.4375 12.054688 9.523438 12.0625 10.03125 12.246094 C 10.71875 12.507812 11.441406 13.21875 11.730469 13.933594 C 11.9375 14.457031 11.9375 14.472656 11.9375 17.636719 C 11.9375 21.136719 11.9375 21.128906 11.371094 21.953125 C 11.03125 22.433594 10.550781 22.800781 9.925781 23.035156 C 9.480469 23.199219 9.261719 23.207031 6.335938 23.199219 C 4.035156 23.199219 3.128906 23.164062 2.859375 23.085938 Z M 2.859375 23.085938 '/><path d='M 13.898438 11.695312 C 13.226562 11.4375 12.503906 10.703125 12.25 10.023438 C 12.070312 9.519531 12.058594 9.433594 12.085938 6.195312 C 12.113281 2.929688 12.113281 2.867188 12.3125 2.476562 C 12.636719 1.824219 13.070312 1.386719 13.707031 1.074219 C 14.289062 0.785156 14.289062 0.785156 17.644531 0.785156 C 20.90625 0.785156 21.007812 0.792969 21.410156 0.976562 C 21.984375 1.238281 22.65625 1.890625 22.933594 2.476562 C 23.179688 2.964844 23.179688 2.964844 23.179688 6.316406 C 23.179688 9.667969 23.179688 9.667969 22.890625 10.25 C 22.578125 10.886719 22.140625 11.324219 21.488281 11.644531 C 21.097656 11.84375 21.042969 11.84375 17.734375 11.863281 C 14.492188 11.878906 14.359375 11.878906 13.898438 11.695312 Z M 13.898438 11.695312 '/><path d='M 2.214844 11.078125 C 1.324219 10.824219 0.609375 10.207031 0.199219 9.3125 C 0 8.894531 0 8.832031 0 5.574219 C 0 2.265625 0 2.265625 0.234375 1.769531 C 0.53125 1.132812 1.132812 0.535156 1.769531 0.238281 C 2.265625 0.00390625 2.265625 0.00390625 5.578125 0.00390625 C 8.886719 0.00390625 8.886719 0.00390625 9.386719 0.238281 C 10.019531 0.535156 10.621094 1.132812 10.917969 1.769531 C 11.152344 2.265625 11.152344 2.265625 11.152344 5.574219 C 11.152344 8.882812 11.152344 8.882812 10.925781 9.371094 C 10.605469 10.058594 10.144531 10.53125 9.472656 10.859375 C 8.886719 11.148438 8.886719 11.148438 5.75 11.164062 C 3.441406 11.183594 2.507812 11.15625 2.214844 11.078125 Z M 8.898438 9.605469 C 9.238281 9.425781 9.613281 8.988281 9.699219 8.683594 C 9.734375 8.554688 9.757812 7.117188 9.757812 5.488281 C 9.757812 2.179688 9.769531 2.207031 9.132812 1.726562 C 8.820312 1.484375 8.820312 1.484375 5.804688 1.457031 C 4.148438 1.4375 2.65625 1.457031 2.5 1.484375 C 2.34375 1.507812 2.066406 1.683594 1.882812 1.855469 C 1.375 2.335938 1.34375 2.632812 1.421875 5.976562 C 1.480469 8.816406 1.480469 8.816406 1.726562 9.128906 C 2.214844 9.773438 2.316406 9.789062 5.75 9.773438 C 8.285156 9.753906 8.660156 9.738281 8.898438 9.605469 Z M 8.898438 9.605469 '/></svg>\"\n  },\n  {\n    \"name\": \"@einui\",\n    \"homepage\": \"https://ui.eindev.ir\",\n    \"url\": \"https://ui.eindev.ir/r/{name}.json\",\n    \"description\": \"Beautiful, responsive Shadcn components with frosted glass morphism. Built for modern web applications with full dark mode support.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'><rect width='24' height='24' rx='4' fill='url(#glass-gradient)'/><defs><linearGradient id='glass-gradient' x1='0' y1='0' x2='24' y2='24'><stop offset='0%' stop-color='var(--foreground)' stop-opacity='0.8'/><stop offset='100%' stop-color='var(--foreground)' stop-opacity='0.8'/></linearGradient></defs><path d='M7 7h10v2H7V7zm0 4h10v2H7v-2zm0 4h6v2H7v-2z' fill='white' opacity='0.9'/></svg>\"\n  },\n  {\n    \"name\": \"@eldoraui\",\n    \"homepage\": \"https://eldoraui.site\",\n    \"url\": \"https://eldoraui.site/r/{name}.json\",\n    \"description\": \"An open-source, modern UI component library for React, built with TypeScript, Tailwind CSS, and Framer Motion. Eldora UI offers beautifully crafted, reusable components designed for performance and elegance.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -2 38 38'><g><path d='M19.5986 18.5005C18.7702 19.9354 16.9354 20.427 15.5005 19.5986C14.0656 18.7701 13.574 16.9354 14.4024 15.5005C15.2309 14.0656 17.0656 13.574 18.5005 14.4024C19.9354 15.2308 20.427 17.0656 19.5986 18.5005Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/></g><g><path d='M23.2324 10.2074C22.6801 11.1639 21.4569 11.4917 20.5003 10.9394C19.5437 10.3871 19.216 9.16395 19.7683 8.20736C20.3205 7.25078 21.5437 6.92303 22.5003 7.47531C23.4569 8.0276 23.7846 9.25078 23.2324 10.2074Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M19.7683 25.7933C19.216 24.8367 19.5437 23.6135 20.5003 23.0612C21.4569 22.5089 22.6801 22.8367 23.2324 23.7933C23.7847 24.7498 23.4569 25.973 22.5003 26.5253C21.5437 27.0776 20.3206 26.7498 19.7683 25.7933Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M26 19C24.8954 19 24 18.1046 24 17C24 15.8955 24.8954 15 26 15C27.1046 15 28 15.8955 28 17C28 18.1046 27.1046 19 26 19Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M14.2324 25.7933C13.6801 26.7499 12.4569 27.0777 11.5003 26.5254C10.5437 25.9731 10.216 24.7499 10.7683 23.7933C11.3205 22.8367 12.5437 22.509 13.5003 23.0613C14.4569 23.6136 14.7846 24.8367 14.2324 25.7933Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M10.7682 10.2073C10.216 9.25078 10.5437 8.0276 11.5003 7.47532C12.4569 6.92303 13.6801 7.25078 14.2323 8.20737C14.7846 9.16395 14.4569 10.3871 13.5003 10.9394C12.5437 11.4917 11.3205 11.1639 10.7682 10.2073Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M8 19C6.89543 19 6 18.1045 6 17C6 15.8954 6.89543 15 8 15C9.10457 15 10 15.8954 10 17C10 18.1045 9.10457 19 8 19Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/></g><g><path d='M25.8662 3.6447C25.5901 4.12299 24.9785 4.28686 24.5002 4.01072C24.0219 3.73458 23.858 3.12299 24.1342 2.6447C24.4103 2.1664 25.0219 2.00253 25.5002 2.27867C25.9785 2.55481 26.1424 3.1664 25.8662 3.6447Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M33 18C32.4477 18 32 17.5522 32 17C32 16.4477 32.4477 16 33 16C33.5522 16 34 16.4477 34 17C34 17.5523 33.5522 18 33 18Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M31.3556 9.86619C30.8773 10.1424 30.2658 9.97846 29.9896 9.50017C29.7135 9.02187 29.8773 8.41028 30.3556 8.13414C30.8339 7.858 31.4455 8.02187 31.7217 8.50017C31.9978 8.97846 31.8339 9.59005 31.3556 9.86619Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M30.3556 25.8662C29.8773 25.5901 29.7134 24.9785 29.9896 24.5002C30.2657 24.0219 30.8773 23.858 31.3556 24.1342C31.8339 24.4103 31.9978 25.0219 31.7216 25.5002C31.4455 25.9785 30.8339 26.1424 30.3556 25.8662Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M16 33C16 32.4477 16.4477 32 17 32C17.5523 32 18 32.4477 18 33C18 33.5523 17.5523 34 17 34C16.4477 34 16 33.5523 16 33Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M24.1341 31.3557C23.858 30.8774 24.0219 30.2658 24.5002 29.9896C24.9785 29.7135 25.5901 29.8774 25.8662 30.3557C26.1423 30.834 25.9785 31.4455 25.5002 31.7217C25.0219 31.9978 24.4103 31.834 24.1341 31.3557Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M9.8662 31.3556C9.59005 31.8339 8.97846 31.9978 8.50017 31.7216C8.02188 31.4455 7.858 30.8339 8.13415 30.3556C8.41029 29.8773 9.02188 29.7134 9.50017 29.9896C9.97846 30.2657 10.1424 30.8773 9.8662 31.3556Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M1 18C0.447715 18 -3.44684e-08 17.5523 0 17C3.44684e-08 16.4477 0.447715 16 1 16C1.55228 16 2 16.4477 2 17C2 17.5523 1.55228 18 1 18Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M3.6447 25.8662C3.1664 26.1424 2.55481 25.9785 2.27867 25.5002C2.00253 25.0219 2.1664 24.4103 2.6447 24.1342C3.12299 23.858 3.73458 24.0219 4.01072 24.5002C4.28686 24.9785 4.12299 25.5901 3.6447 25.8662Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M2.6447 9.8662C3.1664 9.59005 2.00253 8.97846 2.27867 8.50017C2.55481 8.02188 3.1664 7.858 3.6447 8.13415C4.12299 8.41029 4.28686 9.02188 4.01072 9.50017C3.73458 9.97846 3.12299 10.1424 2.6447 9.8662Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M16 1C16 0.447715 16.4477 -4.87226e-08 17 0C17.5523 4.87226e-08 18 0.447715 18 1C18 1.55228 17.5523 2 17 2C16.4477 2 16 1.55228 16 1Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/><path d='M8.13415 3.6447C7.858 3.16641 8.02188 2.55482 8.50017 2.27867C8.97846 2.00253 9.59005 2.16641 9.8662 2.6447C10.1424 3.12299 9.97846 3.73458 9.50017 4.01072C9.02188 4.28687 8.41029 4.12299 8.13415 3.6447Z' fill='var(--foreground)' stroke='#22d3ee' stroke-width='1'/></g></svg>\"\n  },\n  {\n    \"name\": \"@formcn\",\n    \"homepage\": \"https://formcn.dev\",\n    \"url\": \"https://formcn.dev/r/{name}.json\",\n    \"description\": \"Build production-ready forms with a few clicks using shadcn components and modern tools.\",\n    \"logo\": \"<svg width='128' height='148' viewBox='0 0 128 148' fill='none' xmlns='http://www.w3.org/2000/svg'><rect x='0.5' y='10.5' width='127' height='127' rx='0.5' fill='var(--foreground)' stroke='var(--background)'/><line x1='97' y1='128.92' x2='118.92' y2='107' stroke='var(--background)' stroke-linecap='round' stroke-width='2'/><line x1='110' y1='130.607' x2='120.607' y2='120' stroke='var(--background)' stroke-linecap='round' stroke-width='2'/><path d='M44.692 59.06H53.528V58.026C53.528 52.6993 53.904 48.6573 54.656 45.9C55.408 43.1427 56.7867 41.1373 58.792 39.884C60.672 38.6933 63.2727 37.9413 66.594 37.628C69.9153 37.3147 75.1793 37.158 82.386 37.158V49.19C79.1273 49.19 76.9967 49.2213 75.994 49.284C74.49 49.3467 73.3307 49.566 72.516 49.942C71.764 50.318 71.3253 50.882 71.2 51.634C71.012 52.386 70.918 53.4513 70.918 54.83V59.06H82.386V72.314H44.692V59.06ZM53.528 76.074H70.918V107H53.528V76.074Z' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@gaia\",\n    \"homepage\": \"https://ui.heygaia.io\",\n    \"url\": \"https://ui.heygaia.io/r/{name}.json\",\n    \"description\": \"Production-ready UI components designed for building beautiful AI assistants and conversational interfaces, from the team behind GAIA.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2441.45 2400'><defs><style>.cls-1{fill:#0f537c}.cls-2{fill:#02bdff}.cls-3{fill:#059cda}</style></defs><g id='Layer_1' data-name='Layer 1'><g><path class='cls-3' d='M2294.76,754.91c52.05,40.47,71.76,93.13,90.55,154.88,197.81,650.16-261.39,1391.76-935.7,1488.14-21.8,3.12-71.79-10.84-92.82-19.75,56.56,5.45,107.78-12.37,158.53-34.53,231.32-101.03,347.34-289.02,356.36-540.29,2.82-78.64-6.26-139.1-15.36-215-.17-1.41.2-2.97,0-4.36,10.57.02,20.27-4.54,29.83-8.35,160.58-63.98,349.04-190.78,416.22-356.05,43.56-107.16,57.02-244.62,35.39-358.23-7.47-39.21-20.03-73.69-42.99-106.46Z'/><path class='cls-3' d='M148.33,759.27c-66.61,93.84-55.47,288.96-25.54,395.37,53.37,189.75,213.09,315.21,384.68,396.32,24.67,11.66,53.12,24.23,79.31,30.86l2.18,4.36c-1.66,6.59-5.46,14.39-6.37,20.9-21.41,152.78-12.44,330.19,53.98,471.49,64.34,136.89,285.66,307.41,441.01,301.8-49.61,22.02-102.16,12.47-153.1,1.5C286.1,2244.42-134.68,1528.46,62.69,901.61c14.68-46.61,31.08-89.68,64.6-126.3l21.04-16.04Z'/><path class='cls-3' d='M290.12,514.91c5.34-52.72,39.4-94.96,73.04-133.12,426.06-483.19,1252.51-488.16,1697.43-27.57,43.5,45.03,89.12,97.14,98.92,160.69-42.11-71.19-117.1-125.07-189.73-162.59-204.09-105.44-387.41-82.71-583.93,24.76-47.65,26.06-104.22,61.67-145.71,96.44-4.4,3.69-8.87,8.24-12.06,13.03h-6.54c-29.89-30.53-68.56-56.62-104.89-79.45-149.66-94.07-319.77-154.18-497.17-109.29-97.33,24.63-290.5,119.22-329.37,217.1ZM547.52,233.44c1.45,1.35,8.65-1.02,8.67-3.26.06-6.51-12.83-.61-8.67,3.26Z'/><path class='cls-1' d='M1856.31,1584c-5.67-40.19-5.48-89.09-4.45-129.91,5.15-203.81,70.21-488.23,209.55-643.49,58.33-65,152.18-118.81,233.35-55.69,22.96,32.77,35.52,67.24,42.99,106.46,21.63,113.62,8.17,251.08-35.39,358.23-67.18,165.27-255.63,292.07-416.22,356.05-9.56,3.81-19.26,8.37-29.83,8.35Z'/><path class='cls-1' d='M588.96,1586.18c131.16,59.49,255.06,148.11,356.9,249.61,95.16,94.85,235.97,275.99,227.8,417.03-3,51.75-34.83,114.47-89.54,125.35-1.76.35-3.74-.05-4.36,2.18-.72.06-1.46-.03-2.18,0-155.36,5.62-376.67-164.91-441.01-301.8-66.41-141.3-75.38-318.71-53.98-471.49.91-6.51,4.71-14.31,6.37-20.9Z'/><path class='cls-1' d='M1221.55,486.55c-117.35,84.94-258.36,147.92-398.71,184.83-132.56,34.87-378.72,69.78-490.24-27.69-32.68-28.56-59.45-86.04-42.48-128.78,38.87-97.88,232.04-192.47,329.37-217.1,177.4-44.9,347.51,15.22,497.17,109.29,36.33,22.84,75,48.92,104.89,79.45Z'/><path class='cls-2' d='M1856.31,1588.36c9.1,75.9,18.18,136.36,15.36,215-9.02,251.27-125.04,439.26-356.36,540.29-50.75,22.16-101.96,39.98-158.53,34.53-126.94-53.77-87.47-203.8-38.27-301.19,95.44-188.97,303.5-371.35,490.07-467.64,15.29-7.89,31.28-16.21,47.73-20.99Z'/><path class='cls-2' d='M148.33,759.27c1.09-1.54,1.16-4.77,2.73-5.94,51.61-33.19,101.95-35.59,156.6-6.16,144.17,77.63,232.06,337.61,261.03,489.46,21.52,112.79,30.38,230.97,18.09,345.18-26.19-6.63-54.64-19.2-79.31-30.86-171.59-81.11-331.31-206.57-384.68-396.32-29.93-106.41-41.07-301.52,25.54-395.37Z'/><path class='cls-2' d='M2159.52,514.91c18.04,116.94-78.85,167.98-178.46,184.77-146.36,24.67-319.01-11.4-457.43-60.36-103.63-36.66-207.05-87.74-295.53-152.77,3.19-4.79,7.66-9.34,12.06-13.03,41.49-34.77,98.06-70.38,145.71-96.44,196.52-107.47,379.84-130.2,583.93-24.76,72.63,37.52,147.62,91.41,189.73,162.59Z'/><path class='cls-3' d='M1084.12,2378.18c-.68,2.09-2.49,2.04-4.36,2.18.63-2.23,2.6-1.83,4.36-2.18Z'/><path class='cls-1' d='M547.52,233.44c-4.16-3.87,8.74-9.77,8.67-3.26-.02,2.24-7.22,4.61-8.67,3.26Z'/></g></g><g id='Layer_2' data-name='Layer 2'><path class='cls-3' d='M568.24,221.98c.9,7.44,1.13,14.95.68,22.43-.07,1.15-.25,2.47-1.22,3.09-.59.38-1.34.39-2.05.4-7.23.02-14.47.03-21.7.05-2.1,0-4.57-.18-5.69-1.96-.61-.98-.64-2.2-.65-3.35-.01-2.17-.03-4.33-.04-6.5-.07-11.62,30.13-18.53,30.67-14.16Z'/></g></svg>\"\n  },\n  {\n    \"name\": \"@gc-solid\",\n    \"url\": \"https://binnodon.github.io/gc-solid-ui/r/{name}.json\",\n    \"description\": \"SolidJS port of shadcn-ui components built with Kobalte primitives. 57+ components with full TypeScript support and Vega theme.\",\n    \"author\": \"binnodon\",\n    \"homepage\": \"https://binnodon.github.io/gc-solid-ui\",\n    \"logo\": \"<svg width='21.273001mm' height='21.814894mm' viewBox='0 0 21.273001 21.814894' xmlns='http://www.w3.org/2000/svg'> <g transform='translate(-80.962498,-79.639585)'> <g transform='matrix(0.26458333,0,0,0.26458333,-43.02125,66.000312)'> <path d='m 485.2,109.2 c -6.7,-2.9 -9.8,-10.6 -7,-17.4 2.9,-6.7 10.6,-9.8 17.4,-7 6.7,2.9 9.8,10.6 7,17.4 -2.9,6.7 -10.6,9.8 -17.4,7' style='fill:#ffffff;stroke-width:0px'/> <path d='m 482.2,95.8 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> <path d='m 484.9,101.2 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> <path d='m 487.8,101.6 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> <path d='m 481.9,101 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> <path d='m 483.8,103.5 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> <path d='m 480.8,98.4 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> <path d='m 486.6,104.2 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> <path d='m 483.7,98.3 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> <path d='m 486.6,98.9 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.5,0 0.8,0.3 0.8,0.8 0,0.5 -0.3,0.8 -0.8,0.8 -0.5,0 -0.8,-0.3 -0.8,-0.8 z' style='fill:#26683b;fill-rule:evenodd;stroke-width:0px'/> </g> <g transform='matrix(0.26458333,0,0,0.26458333,-43.02125,66.000312)'> <path d='m 473.1,130.1 c -1.7,-0.6 -2.7,-2 -2.7,-3.8 0,-1.8 1.8,-4 4.1,-4 2.3,0 1.3,0.2 1.8,0.4 3.8,2.2 8.1,3.4 13,3.4 8.7,0 13.4,-4.5 13.4,-13 v -1.8 c -3.5,4.6 -7.9,6.3 -14.9,6.3 -9.9,0 -19.2,-7.4 -19.2,-19.8 v -0.2 c 0,-12.5 9.4,-19.9 19.2,-19.9 9.8,0 11.5,2.3 14.8,6.2 v -1 c 0,-2.6 2.2,-4.8 4.8,-4.8 2.6,0 4.9,2.2 4.9,4.9 v 29.3 c 0,7.1 -1.8,12.4 -5.4,16 -3.8,3.8 -9.8,5.7 -17.4,5.7 -7.6,0 -11.2,-1.3 -16.4,-3.8 z m 29.6,-32.4 v -0.2 c 0,-6.9 -5.7,-11.6 -12.4,-11.6 -6.7,0 -12,4.7 -12,11.6 v 0.2 c 0,6.9 5.4,11.6 12,11.6 6.6,0 12.4,-4.7 12.4,-11.6 z' style='fill:#26683b;stroke-width:0px'/> <path d='m 510.1,100 v -0.2 c 0,-12 9.3,-22.1 22.1,-22.1 12.8,0 15.85215,6.725273 15.13834,5.3 0.6,0.6 1.16166,1.8 1.16166,3.4 0,2.5 -2.04229,4.526877 -4.5,4.4 -2.49668,-0.128888 -2.2,-0.5 -2.9,-1 -2.5,-2.1 -5.2,-3.6 -9.1,-3.6 -7.1,0 -12.3,6.1 -12.3,13.5 v 0.2 c 0,7.5 5.2,13.6 12.7,13.6 7.5,0 6.8,-1.5 9.5,-3.8 0.6,-0.5 1.5,-1 2.6,-1 2.3,0 4.24229,1.90037 4.2,4.3 -0.0423,2.4 -0.3257,2.00307 -1.31542,3.21146 C 544.70602,118.8844 539,122 531.9,122 519.3,122 510,112.1 510,100.1 Z' style='fill:#26683b;stroke-width:0px'/> </g> <line x1='97.710632' y1='79.970314' x2='97.710632' y2='92.617393' style='fill:none;stroke:#4b2c78;stroke-width:0.661458px;stroke-linecap:round;stroke-miterlimit:10'/> <path d='m 98.028123,80.711145 c 0,0 2.487087,1.137708 4.206877,0.9525 v 3.942292 c -1.03188,0.105833 -2.831043,0 -4.206877,-0.899584 z' style='fill:#4b2c78;stroke-width:0px'/> </g> </svg>\"\n  },\n  {\n    \"name\": \"@glass-ui\",\n    \"homepage\": \"https://glass-ui.crenspire.com\",\n    \"url\": \"https://glass-ui.crenspire.com/r/{name}.json\",\n    \"description\": \"A shadcn-ui compatible registry distributing 40+ glassmorphic React/TypeScript components with Apple-inspired design. Components include enhanced visual effects (glow, shimmer, ripple), theme support, and customizable glassmorphism styling.\",\n    \"logo\": \"<svg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='100%' viewBox='0 0 500 500' enable-background='new 0 0 500 500' xml:space='preserve'> <path fill='#000000' opacity='1.000000' stroke='none' d=' M329.000000,501.000000 C219.333359,501.000000 110.166718,501.000000 1.000059,501.000000 C1.000039,334.333405 1.000039,167.666794 1.000020,1.000148 C167.666565,1.000099 334.333130,1.000099 500.999756,1.000049 C500.999847,167.666519 500.999847,334.333038 500.999939,500.999786 C443.833344,501.000000 386.666656,501.000000 329.000000,501.000000 M166.321991,359.138977 C164.579941,358.797577 162.787094,358.617981 161.103760,358.089539 C145.684174,353.249023 133.022003,344.691895 123.038490,331.703491 C107.590088,311.605347 104.044098,288.874695 108.131042,264.860931 C111.220581,246.707657 119.729202,231.022293 134.328445,218.929657 C153.405426,203.128113 175.508270,198.624832 198.934479,203.222687 C220.394897,207.434753 237.708954,219.020401 248.147903,239.278168 C249.484055,241.871078 252.197968,245.558792 254.372223,245.627701 C270.849030,246.149811 287.351105,245.950851 303.842316,245.740234 C304.785706,245.728195 306.731445,243.246368 306.475647,242.583969 C303.264801,234.269012 300.371887,225.731476 296.140594,217.932968 C289.172729,205.090942 280.348053,193.571548 269.302490,183.734390 C258.423553,174.045593 246.152802,166.914047 232.782333,161.433517 C210.525513,152.310516 187.254562,150.446411 163.744965,153.249924 C146.286133,155.331879 129.660339,161.080353 114.508659,170.290543 C100.529625,178.787918 88.619011,189.638596 78.749939,202.751358 C64.338989,221.898773 56.504494,243.805527 54.371265,267.247406 C52.504013,287.766449 54.112434,308.313538 61.905869,328.010315 C67.226875,341.458374 73.572189,354.279755 82.988197,365.173645 C92.125275,375.744781 102.525192,385.064819 114.734146,392.263031 C133.137222,403.113220 153.094025,409.099731 174.180237,410.647430 C183.916336,411.362030 193.848145,409.705750 203.670547,408.878815 C217.892487,407.681488 231.202850,402.860657 243.692673,396.490631 C258.532257,388.922119 271.411987,378.595764 282.136536,365.501740 C293.023529,352.209442 300.469452,337.308319 305.997131,321.229126 C307.011658,318.278076 306.687408,317.047760 303.325104,317.058685 C286.832031,317.112213 270.337738,316.995087 253.846848,317.190491 C252.388672,317.207794 250.216476,318.721039 249.618698,320.084381 C243.363297,334.351624 232.801514,344.590576 219.430679,351.884949 C203.017883,360.838867 185.390640,363.095612 166.321991,359.138977 M357.099396,213.500000 C357.099396,279.247650 357.099396,344.995270 357.099396,410.820251 C374.293213,410.820251 390.784332,410.840729 407.275391,410.811554 C415.373138,410.797211 414.861664,411.960632 414.864532,403.388000 C414.889465,329.056213 414.889526,254.724457 414.888336,180.392685 C414.888214,173.226685 414.838074,166.060638 414.792877,158.894730 C414.776398,156.282730 414.586304,154.116028 410.902435,154.078445 C394.796509,153.914139 378.691284,153.590820 362.589478,153.181137 C358.679993,153.081665 357.023376,154.284775 357.062561,158.501938 C357.230042,176.499847 357.112793,194.500381 357.099396,213.500000 M171.500000,128.914352 C190.321899,128.915283 209.143799,128.916794 227.965698,128.917053 C288.262268,128.917908 348.558899,128.896805 408.855377,128.969833 C412.656464,128.974442 414.996826,128.792282 414.905792,123.784302 C414.588135,106.305946 414.787659,88.818573 414.735413,71.334778 C414.721405,66.643929 413.242798,65.466621 408.576355,66.267235 C405.189545,66.848305 401.837585,67.635849 398.447571,68.194725 C384.060730,70.566551 369.653503,72.816742 355.276794,75.247711 C342.208282,77.457474 329.186859,79.946831 316.113525,82.126053 C299.316467,84.925972 282.455109,87.349442 265.681824,90.280403 C244.097336,94.052055 222.601593,98.332321 201.013992,102.085014 C180.360977,105.675232 159.632263,108.827835 138.949631,112.250214 C114.877762,116.233421 90.814362,120.268723 66.760994,124.361977 C62.573341,125.074600 58.453506,126.185745 54.302349,127.112823 C54.365429,127.713287 54.428505,128.313751 54.491585,128.914215 C93.161057,128.914215 131.830536,128.914215 171.500000,128.914352 z'/> <path fill='#FDFDFD' opacity='1.000000' stroke='none' d=' M166.675034,359.401550 C185.390640,363.095612 203.017883,360.838867 219.430679,351.884949 C232.801514,344.590576 243.363297,334.351624 249.618698,320.084381 C250.216476,318.721039 252.388672,317.207794 253.846848,317.190491 C270.337738,316.995087 286.832031,317.112213 303.325104,317.058685 C306.687408,317.047760 307.011658,318.278076 305.997131,321.229126 C300.469452,337.308319 293.023529,352.209442 282.136536,365.501740 C271.411987,378.595764 258.532257,388.922119 243.692673,396.490631 C231.202850,402.860657 217.892487,407.681488 203.670547,408.878815 C193.848145,409.705750 183.916336,411.362030 174.180237,410.647430 C153.094025,409.099731 133.137222,403.113220 114.734146,392.263031 C102.525192,385.064819 92.125275,375.744781 82.988197,365.173645 C73.572189,354.279755 67.226875,341.458374 61.905869,328.010315 C54.112434,308.313538 52.504013,287.766449 54.371265,267.247406 C56.504494,243.805527 64.338989,221.898773 78.749939,202.751358 C88.619011,189.638596 100.529625,178.787918 114.508659,170.290543 C129.660339,161.080353 146.286133,155.331879 163.744965,153.249924 C187.254562,150.446411 210.525513,152.310516 232.782333,161.433517 C246.152802,166.914047 258.423553,174.045593 269.302490,183.734390 C280.348053,193.571548 289.172729,205.090942 296.140594,217.932968 C300.371887,225.731476 303.264801,234.269012 306.475647,242.583969 C306.731445,243.246368 304.785706,245.728195 303.842316,245.740234 C287.351105,245.950851 270.849030,246.149811 254.372223,245.627701 C252.197968,245.558792 249.484055,241.871078 248.147903,239.278168 C237.708954,219.020401 220.394897,207.434753 198.934479,203.222687 C175.508270,198.624832 153.405426,203.128113 134.328445,218.929657 C119.729202,231.022293 111.220581,246.707657 108.131042,264.860931 C104.044098,288.874695 107.590088,311.605347 123.038490,331.703491 C133.022003,344.691895 145.684174,353.249023 161.103760,358.089539 C162.787094,358.617981 164.579941,358.797577 166.675034,359.401550 z'/> <path fill='#FCFBFB' opacity='1.000000' stroke='none' d=' M357.099426,212.999985 C357.112793,194.500381 357.230042,176.499847 357.062561,158.501938 C357.023376,154.284775 358.679993,153.081665 362.589478,153.181137 C378.691284,153.590820 394.796509,153.914139 410.902435,154.078445 C414.586304,154.116028 414.776398,156.282730 414.792877,158.894730 C414.838074,166.060638 414.888214,173.226685 414.888336,180.392685 C414.889526,254.724457 414.889465,329.056213 414.864532,403.388000 C414.861664,411.960632 415.373138,410.797211 407.275391,410.811554 C390.784332,410.840729 374.293213,410.820251 357.099396,410.820251 C357.099396,344.995270 357.099396,279.247650 357.099426,212.999985 z'/> <path fill='#803ADD' opacity='1.000000' stroke='none' d=' M171.000000,128.914276 C131.830536,128.914215 93.161057,128.914215 54.491585,128.914215 C54.428505,128.313751 54.365429,127.713287 54.302349,127.112823 C58.453506,126.185745 62.573341,125.074600 66.760994,124.361977 C90.814362,120.268723 114.877762,116.233421 138.949631,112.250214 C159.632263,108.827835 180.360977,105.675232 201.013992,102.085014 C222.601593,98.332321 244.097336,94.052055 265.681824,90.280403 C282.455109,87.349442 299.316467,84.925972 316.113525,82.126053 C329.186859,79.946831 342.208282,77.457474 355.276794,75.247711 C369.653503,72.816742 384.060730,70.566551 398.447571,68.194725 C401.837585,67.635849 405.189545,66.848305 408.576355,66.267235 C413.242798,65.466621 414.721405,66.643929 414.735413,71.334778 C414.787659,88.818573 414.588135,106.305946 414.905792,123.784302 C414.996826,128.792282 412.656464,128.974442 408.855377,128.969833 C348.558899,128.896805 288.262268,128.917908 227.965698,128.917053 C209.143799,128.916794 190.321899,128.915283 171.000000,128.914276 z'/></svg>\"\n  },\n  {\n    \"name\": \"@ha-components\",\n    \"homepage\": \"https://hacomponents.keshuac.com\",\n    \"url\": \"https://hacomponents.keshuac.com/r/{name}.json\",\n    \"description\": \"A collection of customisable components to build Home Assistant dashboards.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='512' height='512' viewBox='0 0 512 512'><g style='fill:none;stroke:var(--foreground);stroke-width:1.5'><g style='stroke-width:1.9175;stroke-dasharray:none'><path d='M86.773 366.113c-3.077-1.34-2.88 3.354-2.88-68.747V232.38l43.18-43.154c24.344-24.33 43.731-43.36 44.444-43.627.696-.259 1.806-.346 2.468-.194.812.187 15.294 14.351 44.606 43.626l43.405 43.35v65.187c0 71.617.18 67.024-2.677 68.5-1.163.602-11.186.68-86.24.664-69.989-.015-85.168-.124-86.306-.62z' style='fill:var(--foreground);stroke:var(--foreground);stroke-width:25.3553;stroke-dasharray:none' transform='translate(-5.022 3.578)scale(.98599)'/><path stroke-linecap='round' stroke-linejoin='round' d='m2.25 12.381 8.954-8.955a1.126 1.126 0 0 1 1.591 0l8.526 8.526.429.429M4.5 10.131v10.125c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V10.131M8.25 21.381h8.25' style='stroke:var(--foreground);stroke-width:1.9175;stroke-dasharray:none' transform='translate(9.105 96.393)scale(13.0378)'/></g><g style='fill:none;stroke:currentColor;stroke-width:2.1539;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none'><path d='M12 22v-5M9 8V2M15 8V2M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z' style='stroke-width:2.1539;stroke-dasharray:none' transform='translate(264.636 116.717)scale(11.60688)'/></g></g></svg>\"\n  },\n  {\n    \"name\": \"@hextaui\",\n    \"homepage\": \"https://hextaui.com\",\n    \"url\": \"https://hextaui.com/r/{name}.json\",\n    \"description\": \"Ready-to-use foundation components/blocks built on top of shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='1082' height='1082' fill='none' viewBox='0 0 1082 1082' class='dark:brightness-200'><g filter='url(#a)'><g clip-path='url(#b)'><rect width='1066' height='1066' x='7.703' y='7.699' fill='var(--background)' rx='533'/><mask id='c' width='1067' height='1067' x='7' y='7' maskUnits='userSpaceOnUse' style='mask-type:luminance'><path fill='#fff' d='M1018.68 7.7H62.723c-30.387 0-55.02 24.632-55.02 55.019v955.961c0 30.39 24.633 55.02 55.02 55.02h955.957c30.39 0 55.02-24.63 55.02-55.02V62.719c0-30.387-24.63-55.02-55.02-55.02'/></mask><g mask='url(#c)'><mask id='d' width='1040' height='1039' x='21' y='21' maskUnits='userSpaceOnUse' style='mask-type:alpha'><path fill='#d9d9d9' stroke='#f36006' d='M540.732 1059.48c286.518 0 518.788-232.265 518.788-518.783S827.25 21.91 540.732 21.91 21.945 254.18 21.945 540.697s232.269 518.783 518.787 518.783Z'/></mask><g mask='url(#d)'><path fill='url(#e)' d='m1071.67 501.544 104.72 94.295c14.96 13.47 16.17 36.518 2.7 51.478s-36.52 16.169-51.48 2.698l-56.56-50.93a.86.86 0 0 0-1.43.545 529.6 529.6 0 0 1-13.46 73.806c-.08.31.02.639.26.853l27.25 24.536c14.96 13.47 16.16 36.518 2.69 51.478s-36.51 16.168-51.47 2.697l-3.49-3.137a.854.854 0 0 0-1.36.3 532 532 0 0 1-29.82 59.078.86.86 0 0 0 .16 1.073c9.75 8.773 10.53 23.784 1.76 33.528l-23.671 26.29c-5.094 5.658-13.81 6.114-19.468 1.02a.86.86 0 0 0-1.248.105 536 536 0 0 1-42.612 47.559.86.86 0 0 0 .029 1.25c5.593 5.036 6.044 13.653 1.008 19.247l-24.144 26.814c-8.57 9.518-23.232 10.286-32.75 1.716a.86.86 0 0 0-1.088-.05 532 532 0 0 1-55.339 36.097.863.863 0 0 0-.152 1.39l2.776 2.5c14.961 13.47 16.169 36.52 2.698 51.48s-36.518 16.17-51.478 2.7l-26.097-23.5a.86.86 0 0 0-.88-.17 526 526 0 0 1-71.518 21.53c-.681.16-.906 1.02-.387 1.48l54.934 49.46c14.961 13.48 16.169 36.52 2.698 51.48s-36.518 16.17-51.478 2.7l-102.461-92.26a.85.85 0 0 0-.608-.22c-6.701.25-13.435.38-20.197.38-27.801 0-55.101-2.13-81.749-6.24-.844-.13-1.341.92-.707 1.49l161.774 145.66c14.961 13.47 16.169 36.52 2.698 51.48s-36.518 16.17-51.479 2.7l-294.108-264.82h-.001a1 1 0 0 0-.147-.11c-66.38-37.947-123.801-89.781-168.305-151.542a1 1 0 0 0-.122-.135l-292.176-263.078c-14.961-13.47-16.168-36.518-2.698-51.478s36.517-16.168 51.477-2.697L24.75 677.762c.635.572 1.625-.033 1.407-.859-8.57-32.462-14.15-66.139-16.427-100.717a.86.86 0 0 0-.282-.583l-100.335-90.342c-14.961-13.47-16.168-36.518-2.698-51.478s36.517-16.168 51.477-2.698l52.88 47.614a.86.86 0 0 0 1.43-.54 530 530 0 0 1 13.89-73.42.86.86 0 0 0-.256-.858L1.84 382.275c-14.96-13.47-16.167-36.518-2.697-51.478S35.66 314.63 50.62 328.1l.63.568a.86.86 0 0 0 1.364-.296 530 530 0 0 1 30.114-58.814.86.86 0 0 0-.165-1.078c-8.33-7.5-9.002-20.332-1.502-28.661l27.997-31.094c3.978-4.418 10.785-4.775 15.203-.797a.86.86 0 0 0 1.246-.1 535 535 0 0 1 42.875-47.324.86.86 0 0 0-.026-1.253c-4.499-4.051-4.863-10.983-.811-15.482l27.428-30.462c7.741-8.597 20.986-9.291 29.584-1.55a.86.86 0 0 0 1.085.054 533 533 0 0 1 55.631-35.837.86.86 0 0 0 .157-1.39l-1.404-1.263c-14.96-13.47-16.168-36.518-2.698-51.478s36.518-16.168 51.478-2.698l25.124 22.621a.86.86 0 0 0 .875.167 528 528 0 0 1 71.948-21.145.86.86 0 0 0 .392-1.479l-54.391-48.973c-14.961-13.47-16.169-36.518-2.698-51.479s36.518-16.167 51.478-2.697L524.168 8.573a.86.86 0 0 0 .6.22 542 542 0 0 1 15.939-.234c29.669 0 58.771 2.428 87.116 7.096.847.14 1.353-.913.715-1.487L465.481-132.65c-14.96-13.471-16.168-36.518-2.698-51.478s36.517-16.168 51.477-2.698L817.131 85.879a1 1 0 0 0 .126.095h.001c56.696 34.555 106.423 79.416 146.577 131.979l.001.002q.048.062.107.115l305.177 274.785c14.96 13.47 16.17 36.517 2.7 51.478s-36.52 16.167-51.48 2.697l-165.1-148.654c-.63-.575-1.63.039-1.4.866a530.5 530.5 0 0 1 17.55 101.726c.01.22.11.428.28.576M909.91 267.54l-.001-.002a1 1 0 0 0-.114-.126L773.753 144.92a1 1 0 0 0-.138-.101C725.348 116.36 671.42 96.477 613.929 87.265c-.846-.135-1.349.915-.712 1.488L982.66 421.401c.637.574 1.63-.035 1.406-.863-15.13-55.958-40.57-107.678-74.156-152.998M498.593 83.642a.86.86 0 0 0-.655-.217 457.6 457.6 0 0 0-79.632 14.526.86.86 0 0 0-.348 1.468L992.36 616.613a.86.86 0 0 0 1.424-.5 462.5 462.5 0 0 0 6.131-80.705.86.86 0 0 0-.283-.629zm473.878 613.883a.86.86 0 0 0-.232-.932L340.575 127.841a.86.86 0 0 0-.95-.134 459 459 0 0 0-58.156 33.865.86.86 0 0 0-.089 1.348l662.177 596.228a.86.86 0 0 0 1.33-.23 457 457 0 0 0 27.584-61.393M223.936 209.296a.86.86 0 0 0-1.169.019 462 462 0 0 0-43.046 47.468.86.86 0 0 0 .1 1.171l679.79 612.087a.86.86 0 0 0 1.174-.024 462 462 0 0 0 42.74-47.745.86.86 0 0 0-.105-1.165zm578.518 708.798a.86.86 0 0 0 .085-1.345l-663.226-597.17a.86.86 0 0 0-1.328.224 457 457 0 0 0-27.942 61.07.86.86 0 0 0 .23.938l633.426 570.338c.261.236.64.289.956.132a459 459 0 0 0 57.799-34.187M89.637 461.328a.86.86 0 0 0-1.422.492c-4.436 25.628-6.749 51.985-6.749 78.879l.002 1.274a.86.86 0 0 0 .285.636L586.816 997.37c.18.162.421.24.662.216a457 457 0 0 0 79.011-15.085.86.86 0 0 0 .341-1.467zm383.196 533.63c.842.124 1.335-.92.702-1.489L97.372 654.771c-.633-.57-1.62.028-1.408.853 13.747 53.353 36.841 102.951 67.432 146.945a1 1 0 0 0 .13.147l156.169 140.616q.075.067.162.115a456.1 456.1 0 0 0 152.976 51.511'/></g></g></g></g><defs><linearGradient id='e' x1='-211.917' x2='1297.42' y1='-132.296' y2='1213.4' gradientUnits='userSpaceOnUse'><stop offset='.202' stop-color='#fff' stop-opacity='0'/><stop offset='.635' stop-color='#0015ff'/></linearGradient><clipPath id='b'><rect width='1066' height='1066' x='7.703' y='7.699' fill='#fff' rx='533'/></clipPath><filter id='a' width='1081.4' height='1081.4' x='.003' y='-.001' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/><feColorMatrix in='noise' result='alphaNoise' type='luminanceToAlpha'/><feComponentTransfer in='alphaNoise' result='coloredNoise1'><feFuncA tableValues='1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0' type='discrete'/></feComponentTransfer><feComposite in='coloredNoise1' in2='effect1_foregroundBlur_132_25' operator='in' result='noise1Clipped'/><feFlood flood-color='#fff' flood-opacity='.17' result='color1Flood'/><feComposite in='color1Flood' in2='noise1Clipped' operator='in' result='color1'/><feMerge result='effect2_noise_132_25'><feMergeNode in='effect1_foregroundBlur_132_25'/><feMergeNode in='color1'/></feMerge></filter></defs></svg>\"\n  },\n  {\n    \"name\": \"@shadcnhooks\",\n    \"homepage\": \"https://shadcn-hooks.com\",\n    \"url\": \"https://shadcn-hooks.com/r/{name}.json\",\n    \"description\": \"A comprehensive React Hooks Collection built with Shadcn.\",\n    \"logo\": \"<svg width='256' height='256' viewBox='0 0 256 256' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M208 128L128 208' stroke='var(--foreground)' stroke-width='32' stroke-linecap='round' stroke-linejoin='round'/><path d='M192 40L40 192' stroke='var(--foreground)' stroke-width='32' stroke-linecap='round' stroke-linejoin='round'/><rect x='27' y='28' width='70' height='70' rx='7' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@inferencesh\",\n    \"homepage\": \"https://ui.inference.sh\",\n    \"url\": \"https://ui.inference.sh/r/{name}.json\",\n    \"description\": \"batteries-included agent components by inference.sh. chat interfaces with streaming, tool invocation rendering, syntax-highlighted code blocks, markdown renderer, and more.\",\n    \"logo\": \"<svg width='18' height='16' viewBox='0 0 18 16' fill='none' xmlns='http://www.w3.org/2000/svg'><path fill='none' d='M16.837 12.659L10.105 1H8.781c-.433 0-.834.232-1.05.608L1 13.266l.662 1.146c.217.375.618.607 1.051.607h13.463l.662-1.146a1.215 1.215 0 000-1.213v-.001z' stroke='var(--foreground)' stroke-width='0.3' stroke-miterlimit='10'/><path fill='none' d='M6.057 11.515v0l3.977-6.888a.08.08 0 01.14 0l6.002 10.392' stroke='var(--foreground)' stroke-miterlimit='10' stroke-width='0.3'/><path fill='none' d='M1 13.266h12.001a.08.08 0 00.07-.122L9.09 6.256' stroke='var(--foreground)' stroke-miterlimit='10' stroke-width='0.3'/><path fill='none' d='M12.13 11.514H4.173a.08.08 0 01-.07-.121L10.105 1' stroke='var(--foreground)' stroke-miterlimit='10' stroke-width='0.3'/></svg>\"\n  },\n  {\n    \"name\": \"@intentui\",\n    \"homepage\": \"https://intentui.com\",\n    \"url\": \"https://intentui.com/r/{name}\",\n    \"description\": \"Accessible React component library to copy, customize, and own your UI.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='122' height='122' fill='none' viewBox='0 0 122 122'><rect width='101.667' height='101.667' x='10.167' y='10.166' fill='#0d6dfd' rx='19.063'/><g fill='#fff' filter='url(#a)' shape-rendering='crispEdges'><path d='M27.243 32.083a4.84 4.84 0 0 1 4.84-4.84h9.678a4.84 4.84 0 0 1 4.839 4.84v9.678a4.84 4.84 0 0 1-4.84 4.84h-9.678a4.84 4.84 0 0 1-4.839-4.84z'/><path fill-opacity='.5' d='M51.366 32.083a4.84 4.84 0 0 1 4.839-4.84h9.678a4.84 4.84 0 0 1 4.84 4.84v9.678a4.84 4.84 0 0 1-4.84 4.84h-9.678a4.84 4.84 0 0 1-4.84-4.84z'/><path d='M75.488 32.083a4.84 4.84 0 0 1 4.84-4.84h9.678a4.84 4.84 0 0 1 4.839 4.84v9.678a4.84 4.84 0 0 1-4.84 4.84h-9.678a4.84 4.84 0 0 1-4.839-4.84z'/><path fill-opacity='.5' d='M75.488 56.205a4.84 4.84 0 0 1 4.84-4.839h9.678a4.84 4.84 0 0 1 4.839 4.84v9.678a4.84 4.84 0 0 1-4.84 4.839h-9.678a4.84 4.84 0 0 1-4.839-4.84z'/></g><defs><filter id='a' width='68.247' height='44.125' x='26.921' y='27.082' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/><feOffset dy='.161'/><feGaussianBlur stdDeviation='.161'/><feComposite in2='hardAlpha' operator='out'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/><feBlend in2='BackgroundImageFix' result='effect1_dropShadow_76_525'/><feBlend in='SourceGraphic' in2='effect1_dropShadow_76_525' result='shape'/></filter></defs></svg>\"\n  },\n  {\n    \"name\": \"@jalco\",\n    \"homepage\": \"https://ui.justinlevine.me\",\n    \"url\": \"https://ui.justinlevine.me/r/{name}.json\",\n    \"description\": \"A curated collection of GitHub-integrated, documentation, and developer-facing components. Self-contained, zero-dependency, and production-ready.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1415 784' fill='currentColor'><path d='M803.5,188.2v248.3c.5,55.1-31.4,104.5-65.9,144.9-8.9,10.4-20.2,26.8-32,34.2-11.9,7.5-27.4,4.2-40.8,1.8-29.1-5.3-57.2-17-83.4-30.2-55-27.7-107.1-63-155.8-101.2-21.5-16.9-64.8-44.2-65.5-75.5v-103.4c44.4-22.1,88.8-44.3,133.3-66.4v184.3c0,42.4,53.8,69.9,88.1,79.9,48,14,89.1-7,88.8-60.6V152.4c8.9-4.4,22.5-14.7,33.3-14.1,9.5.6,24.6,12.3,33.3,16.6,22.2,11.1,44.4,22.1,66.6,33.2Z'/><path d='M1042.2,474.3c-44.4,21.5-88.8,42.9-133.3,64.4V240.7c44.4,22.1,88.8,44.3,133.3,66.4v167.1Z'/></svg>\"\n  },\n  {\n    \"name\": \"@kibo-ui\",\n    \"homepage\": \"https://www.kibo-ui.com/\",\n    \"url\": \"https://www.kibo-ui.com/r/{name}.json\",\n    \"description\": \"Kibo UI is a custom registry of composable, accessible and open source components designed for use with shadcn/ui.\",\n    \"logo\": \"<svg fill='none' viewBox='0 0 116 116' xmlns='http://www.w3.org/2000/svg'><title>Kibo UI</title><g fill='currentColor'><path clip-rule='evenodd' d='m29.3378 0h87.0002v87l-29.0002 29v-87h-87.000031zm-29.000031 95.7389v-37.7389h37.738831zm58.000031 20.2611h-37.249l37.249-37.2488z' fill-rule='evenodd'></path></g></svg>\"\n  },\n  {\n    \"name\": \"@kanpeki\",\n    \"homepage\": \"https://kanpeki.vercel.app\",\n    \"url\": \"https://kanpeki.vercel.app/r/{name}.json\",\n    \"description\": \"A set of perfect-designed components built on top of React Aria and Motion.\",\n    \"logo\": \"<svg fill='currentColor' role='img' viewBox='5 5 90 90' xmlns='http://www.w3.org/2000/svg'><path d='M60.033 21.233C29.688 21.233 5 45.921 5 76.267a2.5 2.5 0 105 0c0-27.588 22.445-50.033 50.033-50.033C76.557 26.233 90 39.677 90 56.201c0 9.686-7.88 17.566-17.566 17.566-5.459 0-9.901-4.442-9.901-9.901a5.17 5.17 0 015.165-5.165 2.24 2.24 0 012.237 2.237 2.5 2.5 0 105 0c0-3.99-3.247-7.237-7.237-7.237-5.605 0-10.165 4.56-10.165 10.165 0 8.217 6.685 14.901 14.901 14.901C84.877 78.767 95 68.644 95 56.201c0-19.282-15.686-34.968-34.967-34.968z'/></svg>\"\n  },\n  {\n    \"name\": \"@kapwa\",\n    \"homepage\": \"https://kapwa-two.vercel.app\",\n    \"url\": \"https://kapwa-two.vercel.app/r/{name}.json\",\n    \"description\": \"Cleanly designed components purposely built for open-source government portals.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1080 1080'><defs><style>.cls-1{fill:#fff;}</style></defs><path class='cls-1' d='M156,730.46a14.41,14.41,0,0,0,6.12-4.75,13.65,13.65,0,0,0,2.56-6.55,14.35,14.35,0,0,0-.92-6.94l.53-.24a14.68,14.68,0,0,0,7.34,5.61,12.19,12.19,0,0,0,9.09-.58,13.46,13.46,0,0,0,8-9.16q1.76-6.42-2.32-15.67l-10.09-22.91-54.93,24.18,10.85,24.65a26.54,26.54,0,0,0,6.56,9.48,16.62,16.62,0,0,0,8.34,4.1A15.43,15.43,0,0,0,156,730.46Zm15.6-43.27,3.32,7.56a8.92,8.92,0,0,1,.74,6,6.38,6.38,0,0,1-8.9,3.75,9.3,9.3,0,0,1-4-4.65l-3.24-7.35Zm-30.08,23-3.61-8.2L151,696.25l3.72,8.45a9.83,9.83,0,0,1,.77,6.82,6.87,6.87,0,0,1-4.06,4.4,6,6,0,0,1-5.47,0Q143.46,714.55,141.55,710.22Z'/><polygon class='cls-1' points='174.59 747.42 187.76 768.91 197.83 762.73 184.65 741.25 195.14 734.81 209.44 758.12 219.49 751.96 197.6 716.29 146.44 747.67 168.32 783.34 178.37 777.18 164.07 753.88 174.59 747.42'/><polygon class='cls-1' points='244.62 802.01 253.72 794.53 221.51 755.34 212.41 762.82 223.98 776.9 186.72 807.53 195.8 818.58 233.06 787.95 244.62 802.01'/><polygon class='cls-1' points='284.54 838.67 292.47 829.95 254.94 795.82 247.01 804.53 260.5 816.8 228.04 852.49 238.62 862.11 271.08 826.42 284.54 838.67'/><polygon class='cls-1' points='308.28 884.17 314.94 874.42 294.13 860.21 301.07 850.05 323.65 865.47 330.3 855.74 295.73 832.14 261.89 881.7 296.45 905.3 303.09 895.57 280.51 880.15 287.47 869.96 308.28 884.17'/><path class='cls-1' d='M366.82,877.27a26.06,26.06,0,0,0-9.33-7.38L335.3,858.81l-26.81,53.7,13,6.48,9.17-18.38,6.67,3.33.62,23.27,14.16,7.07-.93-26A17,17,0,0,0,361,905.8a19.54,19.54,0,0,0,7.17-8.25,20.41,20.41,0,0,0,2.37-10.72A17.81,17.81,0,0,0,366.82,877.27Zm-12.13,13.56q-1.86,3.74-5,4.33t-7.53-1.58l-6.4-3.19,7.31-14.64,6.4,3.2Q358.4,883.42,354.69,890.83Z'/><path class='cls-1' d='M419,895.76a31.1,31.1,0,0,0-26.07-7.39,26.45,26.45,0,0,0-13.1,6.84q-5.79,5.38-8.82,14.73a34.66,34.66,0,0,0-1.6,16.7,26,26,0,0,0,6.36,13.24,29.9,29.9,0,0,0,13.2,8.21,29.6,29.6,0,0,0,14,1.33,22.64,22.64,0,0,0,11.65-5.5,26.71,26.71,0,0,0,7.5-12.09l2.45-7.55-24.61-8-3.27,10.06L408,930a9.88,9.88,0,0,1-5.48,6.16c-2.6,1.11-5.77,1.07-9.51-.15-4.27-1.38-7.1-4-8.47-7.77s-1.18-8.44.6-13.92,4.36-9.27,7.75-11.47a12.66,12.66,0,0,1,11.31-1.29,12.25,12.25,0,0,1,6.25,4.16,9.78,9.78,0,0,1,1.88,6.59l14,4.53a21.37,21.37,0,0,0-.79-11.4A24.21,24.21,0,0,0,419,895.76Z'/><path class='cls-1' d='M479.26,908.55a31.51,31.51,0,0,0-28.82-4.3,25.84,25.84,0,0,0-11.7,8.82q-4.74,6.24-6.22,16.06t1.27,17.14a25.87,25.87,0,0,0,8.61,11.88,31.4,31.4,0,0,0,28.81,4.31,26,26,0,0,0,11.73-8.82q4.79-6.25,6.25-16t-1.29-17.18A26,26,0,0,0,479.26,908.55Zm-4.74,26.85q-1.31,8.73-5.61,12.78a13.44,13.44,0,0,1-20.1-3q-3-5.14-1.65-13.86t5.63-12.78a13.45,13.45,0,0,1,20.1,3Q475.83,926.67,474.52,935.4Z'/><polygon class='cls-1' points='524.26 951.55 523.77 951.56 509.75 907.78 493.52 908 514.58 967.74 533.89 967.48 553.33 907.2 537.09 907.42 524.26 951.55'/><path class='cls-1' d='M568,952.59a7.61,7.61,0,0,0-10.65,1.15,7.07,7.07,0,0,0-1.62,5.54,7.23,7.23,0,0,0,2.77,5.13,7.55,7.55,0,0,0,10.65-1.16,7.32,7.32,0,0,0,1.72-5.61A7.21,7.21,0,0,0,568,952.59Z'/><path class='cls-1' d='M617.43,904.85a18.72,18.72,0,0,0-8.93-5.56,24.44,24.44,0,0,0-11.94-.14l-24.25,5.16L584.81,963,599,960l-3.88-18.23,9.64-2a25.88,25.88,0,0,0,11.09-5,18.48,18.48,0,0,0,6-8.65,21.08,21.08,0,0,0,.41-11.18A21.52,21.52,0,0,0,617.43,904.85ZM606.49,925.1q-2,3-6.76,4l-7,1.49-3.8-17.86,7-1.49c3.2-.68,5.79-.4,7.8.85a8.76,8.76,0,0,1,3.87,6A8.93,8.93,0,0,1,606.49,925.1Z'/><polygon class='cls-1' points='657.28 880.34 665.72 902.9 643.56 911.19 635.13 888.62 621.54 893.7 642.56 949.92 656.15 944.84 647.7 922.25 669.85 913.96 678.3 936.55 691.86 931.48 670.84 875.27 657.28 880.34'/><path class='cls-1' d='M207.86,432.72c6.24-.63,12.83-1.42,19.93-2.41,3.23-.45,6.63-.95,10.22-1.5L135.5,340.06l.86,38.09Z'/><path class='cls-1' d='M276.65,422.47c5.49-.92,11-1.86,16.47-2.72,5.11-.82,10-1.54,14.59-2.2L172.61,261.49l-38.87-.86.87,38.87Z'/><path class='cls-1' d='M736.62,669.29c1.46,2.5,2.84,5.05,4.22,7.59l172.67,23.19,27.54-26.33-211.11-15.2C732.21,662.07,734.47,665.61,736.62,669.29Z'/><path class='cls-1' d='M345.66,413.56c6.66-.42,13.23-.64,19.47-.64h.39L251.26,263.25l-38.09-.84,131,151.27Z'/><path class='cls-1' d='M970.36,591.93,727.05,609.44a232.32,232.32,0,0,0-3-29.93l217-15.63-27.54-26.34-192.8,25.9a233.39,233.39,0,0,0-27.87-67.25l154.64-118,.85-38.09L683.84,482.45a238.53,238.53,0,0,0-19-23.31L849.24,299.5l.86-38.87-38.87.86L651.59,445.89a238.32,238.32,0,0,0-23.33-19L770.67,262.41l-38.09.84-118,154.64A234.17,234.17,0,0,0,547.29,390l25.9-192.78-26.34-27.53-15.65,217a235.24,235.24,0,0,0-29.91-3.07L518.8,140.37l-26.89-28.11L465,140.37l17.51,243.29a236.12,236.12,0,0,0-29.93,3.07L437,169.69l-26.33,27.53L436.55,390a233.75,233.75,0,0,0-59.31,23.25c.6,0,1.25,0,1.86,0,64.7,3.91,137.9,43.5,146,121.24l.18,1.75-.13,1.75c-.42,5.8-.52,9.69-.49,12.31l2.34,0c2.36,0,5-.05,7.79-.1,2.3,0,4.75-.09,7.37-.12,73.29.67,138.72,37.23,182.79,101,1-7.55,1.82-15.17,2.11-22.93l243.31,17.51,28.09-26.89Z'/><path class='cls-1' d='M525.86,602.05c-25.65,3.34-49.76,6-73.52-6.63-9.51-5-16.59-14.59-25.06-21.51a189.14,189.14,0,0,0-30.83-20.38c-19.43-10.21-40.55-14.19-61.52-19.92,40.5-1.25,78.21,5.08,112.38,28.34,3.34,2.29,7.42,4.78,11.11,3.14a8.27,8.27,0,0,0,3.18-2.69c10.37-13.6-.59-40.85-7.32-54-8.12-15.69-22.46-33.77-39.45-40.45-30.24-11.9-63-11.7-96.34-7.62-12.25,1.5-24.61,3.54-37,5.73-38.71,6.87-78.33,15.93-117.84,10.73-16.27-2.14-32.93-5.55-47.53-13.29a99,99,0,0,1-19.94-13.94c-3.91-3.52-13.7-11.29-14.67-16.68a176.1,176.1,0,0,0,20.68,57.5c18.14,32,60.52,86.62,103.83,74.59,13.44-3.73,23.28-13.95,34.48-21.59,14-9.5,26.35-10.91,43-9.27,67.1,4.93,195.22,45.08,172.75,132.8C450.7,688,393.16,772,438.54,777.54c20.77.45,49.27-12.55,55.74-33.37,1.05,50.86-59.38,85.08-102.41,58-3.29,13.4,6.87,24.11,17.68,30.49,50.46,29.78,110.63,11.9,164.53,5,28.5-3.64,57.29-6.83,86-5.28a209,209,0,0,1,42.64,6.42c5.08,1.35,36.86,9.67,37.41,15.4C728,728.38,679.79,586.06,525.86,602.05Z'/><path class='cls-1' d='M354.68,581.93c-16.94-6.44-89.92-15-51.33,23.56,8.52,8.52,15.84,22.06,26.3,27.79,18.33,6.93,53.7,13.85,66.8-4.18-1.58,2.18.17,13.38-1,17.08a35.31,35.31,0,0,1-10.06,15.16c-10.88,10-26.7,14.18-40.88,16.65q-6,1-11.95,1.79c-27.82,3.51-57.87,4.42-85.2-1.59-15.45-3.41-29.46-5.67-65.55-25.53,21,29.6,52.43,42.4,59.22,44.29a232,232,0,0,0,46.66,8.12q8,.54,16,.7c15.28.31,31.15-1.88,46.28-4.12,14.94-2.22,30.28-5.88,42.58-15.1C455.83,646.51,399,598.78,354.68,581.93Z'/></svg>\"\n  },\n  {\n    \"name\": \"@kokonutui\",\n    \"homepage\": \"https://kokonutui.com\",\n    \"url\": \"https://kokonutui.com/r/{name}.json\",\n    \"description\": \"Collection of stunning components built with Tailwind CSS, shadcn/ui and Motion to use on your websites.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'><style>@media (prefers-color-scheme:dark){.theme-primary{fill:#fff}.theme-accent{fill:#3bb44b}}@media (prefers-color-scheme:light){.theme-primary{fill:#0c0c0c;fill-opacity:.82}.theme-primary-solid{fill:#111}.theme-accent{fill:#2cd242}}</style><path fill-rule='evenodd' d='M12.365 24.14c2.241 3.92 8.445 5.557 12.328 3.294 3.191-1.86 4.616-6.231 3.776-9.905-.36-1.575-1.362-2.916-2.594-3.947q-.284-.236-.572-.454c.471.51.895 1.085 1.257 1.72 2.407 4.208 1.211 9.455-2.671 11.718-3.883 2.263-8.982.686-11.389-3.523a9.4 9.4 0 0 1-1.162-3.416c-.058 1.597.264 3.18 1.027 4.514' class='theme-primary' clip-rule='evenodd'/><path d='M25.917 19.269c0 3.325-2.67 6.021-5.964 6.021s-5.965-2.696-5.965-6.021c0-3.326 2.67-6.022 5.965-6.022s5.964 2.696 5.964 6.022' class='theme-primary-solid theme-primary'/><path d='M10.51 17.52c-.09-.678-4.815-10.356 0-12.346 4.814-1.99 7.648-2.36 7.648-2.36s3.006-.452 5.171-2.532-.961 7.967-2.165 10.047-3.7 1.81-5.127 3.211c-1.427 1.402-2.728 3.98-2.728 3.98s-.665-2.025-.665-3.98c0-1.954 4.775-7.371 4.775-7.371 2.095-1.447-3.433 1.55-5.394 5.472-1.573 3.144-1.54 5.461-1.512 5.907.013.107.007.102 0 0zM10.994 20.294c-.425.057-6.499 3.084-7.747 0s-1.48-4.9-1.48-4.9-.285-1.925-1.59-3.312 5 .616 6.305 1.387 1.135 2.37 2.015 3.284 2.497 1.748 2.497 1.748-1.27.426-2.497.426-4.626-3.06-4.626-3.06c-.908-1.341.973 2.2 3.434 3.456 1.973 1.008 3.427.987 3.707.969.067-.009.064-.005 0 0z' class='theme-accent'/></svg>\"\n  },\n  {\n    \"name\": \"@lens-blocks\",\n    \"homepage\": \"https://lensblocks.com\",\n    \"url\": \"https://lensblocks.com/r/{name}.json\",\n    \"description\": \"A collection of social media components for use with Lens Social Protocol.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2'/><rect x='14' y='2' width='8' height='8' rx='1'/></svg>\"\n  },\n  {\n    \"name\": \"@limeplay\",\n    \"homepage\": \"https://limeplay.winoffrg.dev\",\n    \"description\": \"Modern UI Library for building media players in React. Powered by Shaka Player.\",\n    \"url\": \"https://limeplay.winoffrg.dev/r/{name}.json\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='248.92 245.57 243.13 238.13'><path fill='var(--foreground)' d='M397.568 369.262c27.617.078 52.447-2.298 74.398 18.495 23.415 22.179 19.46 42.881 20.087 71.256l-.338.065c-3.665-2.027-12.027-11.519-15.515-15.004l-42.2-42.3q-17.386-17.186-36.432-32.512m-23.033 23.316c2.551 2.28 4.734 5.153 6.955 7.748q5.166 6.128 10.714 11.914c4.496 4.603 9.257 8.958 13.844 13.474l33.445 32.883c3.942 3.854 23.987 22 25.442 24.88-10.187.33-20.88.323-31.06-.258-17.994-1.025-32.831-8.672-44.752-22.171-12.9-14.607-14.79-31.744-14.856-50.467-.022-5.976-.092-12.04.268-18.003m-82.968-146.672a130 130 0 0 1 9.225-.34c18.421.013 34.481 5.638 47.565 18.9 20.827 21.111 18.957 44.541 18.68 71.783-2.439-2.843-5.093-5.526-7.662-8.254-12.933-13.759-26.76-26.688-40.247-39.898-14.263-13.97-28.241-28.195-42.73-41.935q7.586-.069 15.17-.256m161.313 17.662c3.514.126 7.045-.112 10.561-.144 9.31-.087 18.68-.232 27.983.105-5.955 5.27-11.465 11.148-17.189 16.673l-42.854 41.773c-6.323 6.18-12.487 12.94-19.188 18.68-3.967.852-8.483.507-12.543.502-8.624-.01-17.272-.354-25.89-.096 7.41-8.54 15.532-16.36 23.526-24.345l31.967-31.77q6.211-6.04 12.278-12.227c2.61-2.685 5.315-5.972 8.288-8.237.836-.637 2.051-.755 3.061-.914m-203.541 6.695c9.659 10.217 19.8 19.972 29.645 30.009 15.666 15.969 31.365 32.346 48.503 46.74 3.597 3.022 12.376 8.58 14.531 12.019-13.147.069-26.618.546-39.66-1.34-17.154-2.479-30.895-11.561-41.164-25.434-10.742-14.515-12.2-30.464-12.198-47.948.001-4.588-.323-9.51.343-14.046m78.014 116.444c4.605-.31 9.327-.08 13.948-.075l25.584.02c-19.013 19.47-38.82 38.283-58.421 57.166q-6.565 6.407-12.98 12.966c-2.425 2.45-4.845 5.22-7.62 7.278-5.649.827-11.798.43-17.515.339l-21.382-.221c4.733-5.283 10.086-10.137 15.12-15.137l30.084-29.846 22.484-22.392c3.262-3.232 6.797-7.69 10.698-10.098m160.9-78.485c1.14-.04 2.042-.036 2.952.684 1.386 5.214.558 14.208.538 19.74l-.074 32.96c-17.807-.794-35.786-.642-53.613-.752-2.584-.04-5.187.15-7.77.27a70 70 0 0 0 8.311-2.594c16.945-6.515 32.422-18.069 41.772-33.825 3.158-5.322 5.403-10.85 7.884-16.483M249.32 365.341q29.561-.259 59.121.02c-12.883 4.064-25.515 10.66-35.128 20.269-5.107 4.798-9.766 11.471-13.043 17.616-3.724 6.982-5.44 11.562-10.934 17.663-.274-18.506.001-37.057-.016-55.568m120.035 57.99c1.633 2.12 1.007 53.792 1.009 60.112l-56.072-.041-.742-.183c1.048-1.815 7.844-3.553 10.03-4.529 16.73-7.47 31.393-21.39 39.24-37.922 2.7-5.69 4.321-11.586 6.535-17.437m40.048-177.475c5.68.438 11.456.419 17.153.505q-6.27 1.47-12.115 4.169c-19.414 8.896-31.57 24.434-38.786 44.132q-1.86 5.667-3.206 11.478c-.51-3.507-1.266-6.936-1.606-10.474-1.576-16.383-.933-33.11-.803-49.551l22.7-.069c5.539.01 11.137.202 16.663-.19'/></svg>\"\n  },\n  {\n    \"name\": \"@lmscn\",\n    \"homepage\": \"https://lmscn.vercel.app\",\n    \"url\": \"https://lmscn.vercel.app/r/{name}.json\",\n    \"description\": \"LMS components for building interactive learning experiences — quiz, flashcards, matching, fill-in-the-blank, word scramble, sequencing, reading comprehension, spaced repetition and more.\",\n    \"logo\": \"<svg width=\\\"125\\\" height=\\\"125\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 400 90\\\" fill=\\\"none\\\" role=\\\"img\\\" aria-label=\\\"lmscn\\\"><g transform=\\\"translate(5,5)\\\"><path d=\\\"M 2,2 L 40,2 L 40,13 A 7,7 0 0,1 40,27 L 40,40 L 27,40 A 7,7 0 0,1 13,40 L 2,40 Z\\\" fill=\\\"#06b6d4\\\"/><path d=\\\"M 40,2 L 78,2 L 78,40 L 67,40 A 7,7 0 0,1 53,40 L 40,40 L 40,27 A 7,7 0 0,0 40,13 L 40,2 Z\\\" fill=\\\"#2563eb\\\"/><path d=\\\"M 2,40 L 13,40 A 7,7 0 0,0 27,40 L 40,40 L 40,53 A 7,7 0 0,1 40,67 L 40,78 L 2,78 Z\\\" fill=\\\"#f59e0b\\\"/><path d=\\\"M 40,40 L 53,40 A 7,7 0 0,0 67,40 L 78,40 L 78,78 L 40,78 L 40,67 A 7,7 0 0,0 40,53 L 40,40 Z\\\" fill=\\\"#8b5cf6\\\"/></g><text x=\\\"108\\\" y=\\\"80\\\" font-family=\\\"'DM Mono', 'Fira Code', ui-monospace, monospace\\\" font-weight=\\\"700\\\" font-size=\\\"64\\\" letter-spacing=\\\"-2\\\" fill=\\\"currentColor\\\">lmscn</text></svg>\"\n  },\n  {\n    \"name\": \"@lucide-animated\",\n    \"homepage\": \"https://lucide-animated.com\",\n    \"url\": \"https://lucide-animated.com/r/{name}.json\",\n    \"description\": \"An open-source collection of smooth animated lucide icons for your projects\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='31' height='30' viewBox='0 0 31 30' fill='none'><path d='M30.8574 13.4209H25.0322V24.8223H17.4414L17.4961 26.2822C17.9462 26.0015 18.5219 25.8223 19.1543 25.7988C20.6429 25.744 21.8818 26.5719 21.9219 27.6484C21.96 28.6881 20.8658 29.576 19.4502 29.6855V29.6924L17.5859 29.7617C17.043 29.7816 16.5855 29.3565 16.5654 28.8135L16.5303 27.8643H16.5312C16.531 27.8588 16.5305 27.8531 16.5303 27.8477C16.5292 27.8173 16.5324 27.787 16.5332 27.7568L16.4229 24.8223H13.2686L13.1494 27.9941C13.1502 28.0242 13.1534 28.0546 13.1523 28.085C13.1521 28.0902 13.1517 28.0963 13.1514 28.1016H13.1523L13.1172 29.0518C13.097 29.5946 12.6395 30.0188 12.0967 29.999L10.2324 29.9297V29.9238C8.81666 29.8144 7.7226 28.9265 7.76074 27.8867C7.80082 26.8101 9.03966 25.9813 10.5283 26.0361C11.1608 26.0596 11.7364 26.2396 12.1865 26.5205L12.25 24.8223H4.72266L5.2832 13.4209H0L14.0205 0L30.8574 13.4209Z' fill='#EE4822'/><circle cx='10.4573' cy='14.5408' r='2.62989' fill='white'/><circle cx='17.5155' cy='14.5408' r='2.62989' fill='white'/><circle cx='10.6948' cy='14.88' r='0.763516' fill='black'/><circle cx='17.0064' cy='14.88' r='0.763516' fill='black'/></svg>\"\n  },\n  {\n    \"name\": \"@lytenyte\",\n    \"homepage\": \"https://www.1771technologies.com\",\n    \"url\": \"https://www.1771technologies.com/r/{name}.json\",\n    \"description\": \"LyteNyte Grid is a high performance, light weight, headless, React data grid. Our registry provides LyteNyte Grid themed using Tailwind and the Shadcn theme variables.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='2000' height='2000' fill='none' viewBox='0 0 2000 2000'><path fill='#020807' d='M0 0h2000v2000H0z'/><mask id='a' width='2000' height='2000' x='0' y='0' maskUnits='userSpaceOnUse' style='mask-type:alpha'><path fill='#0e0322' d='M0 0h2000v2000H0z'/></mask><g mask='url(#a)'><g filter='url(#b)' opacity='.4'><path fill='#006a47' d='m19.672 1402.6-582.226 793.73 144.428 834.34H1987.51c155.26 0 443.81-578.38 568.68-834.34l-737.94-793.73z'/></g><g filter='url(#c)'><path fill='#006a5e' d='m189.13 1611.18-484.486 522.03 120.183 548.73H1826.62c129.2 0 369.31-380.39 473.22-548.73l-614.06-522.03z'/></g><g filter='url(#d)'><path fill='#12dba2' d='M358.05 1797.77 17.145 2212.73l84.565 436.19h1408.55c90.9 0 259.86-302.37 332.97-436.19l-432.08-414.96z'/></g><g filter='url(#e)'><path fill='#d3fbff' d='m461.114 1993.14-341.247 393.81 84.65 413.96H1614.48c90.99 0 260.12-286.97 333.31-413.96l-432.51-393.81z'/></g><g opacity='.29'><mask id='g' width='3550' height='1041' x='-670' y='1190' maskUnits='userSpaceOnUse' style='mask-type:alpha'><path fill='url(#f)' d='M-669.166 1190.97h3548.55v1039.85h-3548.55z'/></mask><g mask='url(#g)'><path stroke='#fff' stroke-miterlimit='10' stroke-width='1.337' d='m191.723 1268.58-779.019 943.39M450.093 1268.58l-519.081 943.39M708.421 1268.58l-259.937 943.39M966.786 1268.58v943.39M1225.13 1268.58l259.94 943.39M1483.47 1268.58l519.08 943.39M1741.81 1268.58l779.02 943.39M2000.15 1268.58l1038.96 943.39'/><path fill='#fff' d='M1361.99 1762.65H961.546l7.136-171.18h346.428zM2163.92 1767.74h-410.95l-89.33-171.17h446.68zM961.589 2216.06H441.942l69.286-242.5h450.361zM573.437 1762.65H174.979l259.824-467.69 265.435-1.56z' opacity='.8'/><path stroke='#fff' stroke-miterlimit='10' stroke-width='1.337' d='M-1302.14 1978.12h4537.01M-1003.36 1762.13h3941.05M-775.118 1595.23H2707.88M-593.646 1464.04H2527.18M-446.253 1356.94H2379.77'/></g></g><g filter='url(#h)' opacity='.4' style='mix-blend-mode:soft-light'><ellipse cx='1025.68' cy='2153.72' fill='#9aff78' rx='692.681' ry='416.217' transform='rotate(-90.085 1025.68 2153.72)'/></g></g><g filter='url(#i)'><path fill='#fff' d='M682.773 456.107h83.194c103.09 0 196.867 61.946 240.553 158.904l303.65 673.869c.61 1.35 1.92 2.22 3.35 2.22.73 0 1.13-.13 1.41-.25.36-.16.79-.44 1.21-.88.14-.14.26-.29.37-.43.22-.3.37-.58.47-.83.12-.29.25-.7.25-1.46V456.107h236.07v831.143c0 137.51-107.35 248.98-239.78 248.98-93.07 0-177.74-55.92-217.18-143.46L792.695 718.899c-4.854-10.774-15.273-17.657-26.728-17.657h-53.684c-16.299 0-29.51 13.718-29.51 30.642v536.236c0 16.92 13.211 30.64 29.51 30.64h154.924v245.13H712.283c-146.68 0-265.586-123.47-265.586-275.77V701.242h206.567c16.298 0 29.509-13.718 29.509-30.642z'/></g><path stroke='url(#j)' stroke-width='10.491' d='M765.967 450.862c105.236 0 200.837 63.232 245.333 161.994l300.68 667.284V450.862h246.57v836.388c0 140.22-109.52 254.23-245.03 254.23-95.22 0-181.71-57.22-221.96-146.56L787.913 721.054c-4.041-8.97-12.637-14.567-21.946-14.567h-53.684c-13.217 0-24.265 11.182-24.265 25.397v536.236c0 14.21 11.048 25.39 24.265 25.39h160.17v255.63h-160.17c-149.761 0-270.831-126.01-270.831-281.02V695.997h211.811c13.217 0 24.264-11.182 24.264-25.396V450.862z'/><g filter='url(#k)'><path fill='#fff' d='M682.773 456.107h83.194c103.09 0 196.867 61.946 240.553 158.904l303.65 673.869c.61 1.35 1.92 2.22 3.35 2.22.73 0 1.13-.13 1.41-.25.36-.16.79-.44 1.21-.88.14-.14.26-.29.37-.43.22-.3.37-.58.47-.83.12-.29.25-.7.25-1.46V456.107h236.07v831.143c0 137.51-107.35 248.98-239.78 248.98-93.07 0-177.74-55.92-217.18-143.46L792.695 718.899c-4.854-10.774-15.273-17.657-26.728-17.657h-53.684c-16.299 0-29.51 13.718-29.51 30.642v536.236c0 16.92 13.211 30.64 29.51 30.64h154.924v245.13H712.283c-146.68 0-265.586-123.47-265.586-275.77V701.242h206.567c16.298 0 29.509-13.718 29.509-30.642z'/><path fill='url(#l)' fill-opacity='.4' d='M682.773 456.107h83.194c103.09 0 196.867 61.946 240.553 158.904l303.65 673.869c.61 1.35 1.92 2.22 3.35 2.22.73 0 1.13-.13 1.41-.25.36-.16.79-.44 1.21-.88.14-.14.26-.29.37-.43.22-.3.37-.58.47-.83.12-.29.25-.7.25-1.46V456.107h236.07v831.143c0 137.51-107.35 248.98-239.78 248.98-93.07 0-177.74-55.92-217.18-143.46L792.695 718.899c-4.854-10.774-15.273-17.657-26.728-17.657h-53.684c-16.299 0-29.51 13.718-29.51 30.642v536.236c0 16.92 13.211 30.64 29.51 30.64h154.924v245.13H712.283c-146.68 0-265.586-123.47-265.586-275.77V701.242h206.567c16.298 0 29.509-13.718 29.509-30.642z'/></g><defs><filter id='b' width='3451.16' height='1960.48' x='-728.76' y='1236.4' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/><feGaussianBlur result='effect1_foregroundBlur_8860_78453' stdDeviation='83.103'/></filter><filter id='c' width='2804.35' height='1279.92' x='-399.935' y='1506.6' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/><feGaussianBlur result='effect1_foregroundBlur_8860_78453' stdDeviation='52.289'/></filter><filter id='d' width='2035.24' height='1060.3' x='-87.434' y='1693.2' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/><feGaussianBlur result='effect1_foregroundBlur_8860_78453' stdDeviation='52.289'/></filter><filter id='e' width='2037.08' height='1016.93' x='15.288' y='1888.56' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/><feGaussianBlur result='effect1_foregroundBlur_8860_78453' stdDeviation='52.289'/></filter><filter id='h' width='983.622' height='1536.55' x='533.874' y='1385.45' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/><feGaussianBlur result='effect1_foregroundBlur_8860_78453' stdDeviation='37.796'/></filter><filter id='i' width='1127.59' height='1132.37' x='436.206' y='432.971' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/><feColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/><feOffset dy='-12.646'/><feGaussianBlur stdDeviation='6.744'/><feComposite in2='hardAlpha' k2='-1' k3='1' operator='arithmetic'/><feColorMatrix values='0 0 0 0 0.14902 0 0 0 0 0.792157 0 0 0 0 0.717124 0 0 0 0.26 0'/><feBlend in2='shape' result='effect1_innerShadow_8860_78453'/><feColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/><feOffset dy='10.959'/><feGaussianBlur stdDeviation='6.744'/><feComposite in2='hardAlpha' k2='-1' k3='1' operator='arithmetic'/><feColorMatrix values='0 0 0 0 0.227847 0 0 0 0 0.804167 0 0 0 0 0.736929 0 0 0 0.12 0'/><feBlend in2='effect1_innerShadow_8860_78453' result='effect2_innerShadow_8860_78453'/></filter><filter id='k' width='1180.5' height='1223.26' x='409.75' y='449.95' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'><feFlood flood-opacity='0' result='BackgroundImageFix'/><feColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/><feOffset dy='6.158'/><feGaussianBlur stdDeviation='6.158'/><feColorMatrix values='0 0 0 0 0.054902 0 0 0 0 0.101961 0 0 0 0 0.0862745 0 0 0 0.2 0'/><feBlend in2='BackgroundImageFix' result='effect1_dropShadow_8860_78453'/><feColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/><feOffset dy='24.631'/><feGaussianBlur stdDeviation='12.316'/><feColorMatrix values='0 0 0 0 0.054902 0 0 0 0 0.101961 0 0 0 0 0.0862745 0 0 0 0.17 0'/><feBlend in2='effect1_dropShadow_8860_78453' result='effect2_dropShadow_8860_78453'/><feColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/><feOffset dy='55.42'/><feGaussianBlur stdDeviation='15.395'/><feColorMatrix values='0 0 0 0 0.054902 0 0 0 0 0.101961 0 0 0 0 0.0862745 0 0 0 0.1 0'/><feBlend in2='effect2_dropShadow_8860_78453' result='effect3_dropShadow_8860_78453'/><feColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/><feOffset dy='92.367'/><feGaussianBlur stdDeviation='18.473'/><feColorMatrix values='0 0 0 0 0.054902 0 0 0 0 0.101961 0 0 0 0 0.0862745 0 0 0 0.03 0'/><feBlend in2='effect3_dropShadow_8860_78453' result='effect4_dropShadow_8860_78453'/><feBlend in='SourceGraphic' in2='effect4_dropShadow_8860_78453' result='shape'/></filter><linearGradient id='f' x1='1105.11' x2='1105.11' y1='1190.97' y2='2230.82' gradientUnits='userSpaceOnUse'><stop stop-color='#d9d9d9' stop-opacity='0'/><stop offset='1' stop-color='#d9d9d9'/></linearGradient><linearGradient id='j' x1='1000' x2='1000' y1='456.107' y2='1543.89' gradientUnits='userSpaceOnUse'><stop stop-color='#252c2c'/><stop offset='.547' stop-color='#324240'/><stop offset='1' stop-color='#2d896f'/></linearGradient><linearGradient id='l' x1='1000' x2='1000' y1='456.107' y2='1543.89' gradientUnits='userSpaceOnUse'><stop stop-color='#fff' stop-opacity='0'/><stop offset='1' stop-color='#10cfa3'/></linearGradient></defs></svg>\"\n  },\n  {\n    \"name\": \"@magicui\",\n    \"homepage\": \"https://magicui.design\",\n    \"url\": \"https://magicui.design/r/{name}\",\n    \"description\": \"UI Library for Design Engineers. 150+ free and open-source animated components and effects built with React, Typescript, Tailwind CSS, and Motion. Perfect companion for shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='256' height='256' viewBox='0 0 256 256' fill='none'><rect width='256' height='256' rx='56' fill='var(--foreground)'/><path d='M124.157 193.675C123.939 193.783 123.722 193.837 123.505 193.837C123.287 193.837 122.852 193.837 122.2 193.837C120.678 193.837 118.884 193.567 116.818 193.025C114.862 192.591 112.905 191.995 110.948 191.236C109.099 190.586 107.469 189.828 106.055 188.961C104.751 188.094 103.935 187.335 103.609 186.685C103.501 185.167 103.446 183.596 103.446 181.97C103.446 180.345 103.446 178.773 103.446 177.256C103.446 165.118 104.316 152.438 106.055 139.217C107.904 125.995 110.893 111.69 115.025 96.3005C115.459 94.7833 115.894 92.8867 116.329 90.6108C116.873 88.2266 117.416 85.6798 117.96 82.9704C115.351 85.0296 112.252 88.335 108.665 92.8867C105.077 97.3301 101.272 102.64 97.2492 108.818C93.3354 114.887 89.3672 121.606 85.3446 128.975C81.4308 136.236 77.8431 143.66 74.5815 151.246C71.32 158.724 68.4933 166.148 66.1015 173.517C63.8185 180.887 62.4051 187.714 61.8615 194C56.6431 192.483 53.001 190.966 50.9354 189.448C48.9785 187.931 48 186.089 48 183.921C48 181.97 48.5979 179.207 49.7938 175.631C50.9897 172.054 52.6749 167.828 54.8492 162.951C57.0236 158.074 59.6872 152.655 62.84 146.695C65.9928 140.626 69.4718 134.123 73.2769 127.187C77.6256 119.276 81.8656 111.852 85.9969 104.916C90.2369 97.9803 94.3682 91.6946 98.3908 86.0591C102.413 80.4236 106.327 75.5468 110.132 71.4286C114.046 67.3104 117.906 64.1675 121.711 62C123.233 62 125.244 62.3793 127.745 63.1379C130.354 63.8966 132.854 64.8177 135.246 65.9015C137.747 66.9852 139.921 68.1232 141.769 69.3153C143.726 70.399 144.813 71.3202 145.031 72.0788C143.509 75.1133 141.715 79.665 139.649 85.734C137.584 91.803 135.464 98.6847 133.289 106.379C131.224 114.074 129.212 122.256 127.255 130.926C125.407 139.488 123.939 147.724 122.852 155.635C125.353 149.675 128.234 143.498 131.495 137.103C134.866 130.601 138.399 124.207 142.095 117.921C145.792 111.527 149.543 105.35 153.348 99.3892C157.262 93.4286 161.067 88.0099 164.763 83.133C168.459 78.1478 171.884 73.8128 175.037 70.1281C178.298 66.4434 181.179 63.734 183.68 62C185.202 62 187.213 62.3793 189.714 63.1379C192.323 63.8966 194.824 64.8177 197.215 65.9015C199.716 66.9852 201.89 68.1232 203.738 69.3153C205.695 70.399 206.783 71.3202 207 72.0788C203.521 78.2562 200.477 85.7882 197.868 94.6749C195.258 103.562 193.03 112.882 191.182 122.635C189.442 132.389 188.083 142.089 187.105 151.734C186.235 161.271 185.8 169.833 185.8 177.419C185.8 179.911 185.8 182.512 185.8 185.222C185.8 187.931 185.909 190.749 186.126 193.675C184.604 193.675 182.756 193.458 180.582 193.025C178.516 192.7 176.45 192.212 174.385 191.562C172.428 190.911 170.634 190.153 169.003 189.286C167.372 188.527 166.231 187.66 165.578 186.685C165.47 185.167 165.415 183.596 165.415 181.97C165.415 180.345 165.415 178.773 165.415 177.256C165.415 165.118 166.285 152.438 168.025 139.217C169.873 125.995 172.863 111.69 176.994 96.3005C177.429 94.7833 177.918 92.7241 178.462 90.1232C179.005 87.5222 179.549 84.8128 180.092 81.9951C177.048 83.5123 173.569 86.4384 169.655 90.7734C165.85 95 161.936 100.202 157.914 106.379C154 112.448 150.086 119.222 146.172 126.7C142.367 134.177 138.888 141.818 135.735 149.621C132.691 157.315 130.082 165.01 127.908 172.704C125.842 180.291 124.592 187.281 124.157 193.675Z' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@manifest\",\n    \"homepage\": \"https://ui.manifest.build\",\n    \"url\": \"https://ui.manifest.build/r/{name}.json\",\n    \"description\": \"Agentic UI toolkit for building MCP Apps. Open-source components and blocks ready to use within your chat app.\",\n    \"logo\": \"<svg width='64' height='98' viewBox='0 0 64 98' fill='none' xmlns='http://www.w3.org/2000/svg'><mask id='mask0_3840_80' style='mask-type:luminance' maskUnits='userSpaceOnUse' x='0' y='0' width='64' height='98'><path d='M64 0H0V98H64V0Z' fill='white'/></mask><g mask='url(#mask0_3840_80)'><path fill-rule='evenodd' clip-rule='evenodd' d='M30.6472 0.0688267C17.6823 1.34602 17.2257 20.5388 30.1092 22.6866C30.6929 22.7839 30.8779 22.835 30.8913 22.9027C30.901 22.9515 30.854 23.9193 30.7871 25.0534C30.7201 26.1875 30.6357 28.4175 30.5996 30.0088C30.5635 31.6002 30.5212 32.9115 30.5056 32.9229C30.4901 32.9342 30.2795 33.0406 30.0377 33.1594C29.5848 33.382 28.9891 33.8707 28.7496 34.2163C28.6153 34.4102 28.6153 34.4102 27.7906 34.4371C26.4884 34.4797 25.6947 34.798 24.974 35.5665C24.7742 35.7796 24.5913 35.9307 24.567 35.9025C24.5427 35.8744 23.7913 34.7678 22.8971 33.4434C22.003 32.119 20.9877 30.6276 20.641 30.1293L20.0106 29.2231L20.3805 28.8133C27.2791 21.1701 17.6328 9.65849 9.43015 15.7454C1.26539 21.8042 8.58319 34.5133 17.9709 30.5784C18.0095 30.5622 18.7069 31.4342 19.6204 32.6409C20.4908 33.7907 21.578 35.2083 22.0364 35.7911C22.4948 36.374 22.9085 36.9092 22.9558 36.9806C23.053 37.1271 23.0843 37.1058 22.5592 37.25C21.1032 37.6499 19.7305 38.8583 19.4584 39.9797C19.4227 40.127 19.3641 40.2482 19.3283 40.2492C16.8679 40.3145 14.985 42.1418 14.9584 44.4902C14.9494 45.289 14.9494 45.289 14.6143 45.4879C11.5647 47.2978 7.42734 53.3695 7.13192 56.4687C7.08826 56.9268 7.10547 56.9117 6.502 57.0147C5.14028 57.2471 4.34481 57.7388 3.50602 58.8661C2.44379 60.2941 2.3458 61.5216 3.15577 63.2548C3.43012 63.8422 3.44519 63.7381 2.99294 64.3754C-1.78934 71.1116 -0.793089 79.0166 5.6409 85.3854C9.84892 89.5507 15.7558 92.0903 22.3782 92.5803C24.9068 92.7674 25.1963 92.8626 25.8476 93.7205C30.13 99.3597 33.8264 99.3597 38.1088 93.7205C38.7601 92.8626 39.0496 92.7674 41.5782 92.5803C51.4767 91.8478 59.7584 86.422 62.8627 78.6352C64.8416 73.6719 64.2135 68.9595 60.962 64.3709C60.5111 63.7342 60.5264 63.8411 60.8006 63.2548C61.6105 61.5216 61.5125 60.2941 60.4505 58.8661C59.6117 57.7388 58.816 57.2471 57.4544 57.0147C56.8507 56.9117 56.8682 56.9268 56.8246 56.4687C56.7278 55.4525 55.6398 52.8445 54.6019 51.1397C53.3263 49.0446 50.8481 46.3817 49.3421 45.4879C49.007 45.289 49.007 45.289 48.9979 44.4902C48.9714 42.1418 47.0885 40.3145 44.6281 40.2492C44.5923 40.2482 44.5337 40.127 44.498 39.9797C44.2259 38.8583 42.8532 37.6499 41.3972 37.25C40.8721 37.1058 40.9034 37.1271 41.0006 36.9806C41.0478 36.9092 41.4616 36.374 41.92 35.7911C42.3784 35.2083 43.4656 33.7907 44.336 32.6409C45.2495 31.4342 45.9469 30.5622 45.9855 30.5784C55.3732 34.5133 62.6911 21.8042 54.5262 15.7454C46.3235 9.65849 36.6773 21.1701 43.5758 28.8133L43.9458 29.2231L43.3154 30.1293C42.9687 30.6276 41.9534 32.119 41.0593 33.4434C40.1651 34.7678 39.4137 35.8744 39.3894 35.9025C39.3651 35.9307 39.1822 35.7796 38.9823 35.5665C38.2617 34.798 37.468 34.4797 36.1658 34.4371C35.3411 34.4102 35.3411 34.4102 35.2087 34.219C34.8617 33.7184 34.0622 33.1498 33.4155 32.9436C33.1253 32.8511 33.1253 32.8511 33.1323 29.4513C33.1361 27.5813 33.1265 25.3231 33.1109 24.433L33.0826 22.8145L33.8472 22.6868C48.3373 20.2667 45.2758 -1.37222 30.6472 0.0688267ZM30.291 2.87012C25.3199 3.7681 22.0529 8.36444 22.9446 12.8628C23.0089 13.1872 23.0948 13.5111 23.2033 13.8331C25.8009 21.5419 38.1555 21.5419 40.753 13.8331C40.8628 13.5076 40.9495 13.1818 41.0144 12.8569C42.1526 7.15949 36.5778 1.73452 30.291 2.87012ZM13.5994 16.9817C9.92816 17.6605 7.75544 21.3854 8.66073 24.544C8.83478 25.1512 9.12261 25.7375 9.53543 26.2772C12.4561 30.0955 17.7152 29.7103 19.882 25.5194C20.0717 25.1526 20.2166 24.7789 20.3202 24.403C21.415 20.427 17.8778 16.1907 13.5994 16.9817ZM48.3834 16.9849C44.7211 17.6391 42.8231 21.2129 43.6409 24.3975C43.9142 25.4617 44.4909 26.4826 45.4063 27.3364C48.0396 29.7926 52.0966 29.3159 54.421 26.2772C54.8342 25.7369 55.1207 25.1588 55.2948 24.5648C56.4238 20.7128 52.8241 16.1916 48.3834 16.9849ZM31.362 34.7628C29.5698 35.079 28.991 36.7375 29.9445 38.8251C30.2284 39.4467 30.2284 39.4467 30.6642 39.4512C31.0555 39.4553 31.1446 39.4783 31.539 39.6775C31.9782 39.8994 31.9782 39.8994 32.4174 39.6775C32.8118 39.4783 32.9009 39.4553 33.2922 39.4512C33.7279 39.4467 33.7279 39.4467 34.0116 38.8251C35.1813 36.2617 33.9104 34.3133 31.362 34.7628ZM26.7648 36.4037C25.2964 36.7952 24.8728 38.5768 25.8042 40.4434C26.1898 41.2162 26.1134 41.1555 26.5802 41.0593C26.8826 40.9969 27.0496 40.9903 27.2569 41.0326C27.9375 41.1712 27.8541 41.1937 28.1426 40.7939C28.286 40.5952 28.5245 40.3316 28.6726 40.208C28.9419 39.9832 28.9419 39.9832 28.7642 39.7093C28.2795 38.9621 28.0755 38.2445 28.0296 37.1254C27.9951 36.2828 27.7476 36.1416 26.7648 36.4037ZM35.927 37.1186C35.8809 38.245 35.678 38.9605 35.1922 39.7093C35.0145 39.9832 35.0145 39.9832 35.2838 40.208C35.4319 40.3316 35.6704 40.5952 35.8138 40.7939C36.1023 41.1937 36.0189 41.1712 36.6995 41.0326C36.9068 40.9903 37.0738 40.9969 37.3762 41.0593C37.843 41.1555 37.7666 41.2162 38.1522 40.4434C39.2408 38.2617 38.529 36.4184 36.5671 36.3385L35.96 36.3138L35.927 37.1186ZM22.7463 38.5994C20.5518 39.1672 19.7719 41.7939 21.2551 43.6214C21.6086 44.057 21.5848 44.0495 21.9384 43.8382C22.4878 43.51 23.1071 43.4044 23.8293 43.5158C24.091 43.5561 24.091 43.5561 24.1573 43.2958C24.2687 42.8583 24.5964 42.2875 24.9521 41.9116C25.2903 41.5542 25.2903 41.5542 25.0599 41.2509C24.5571 40.5895 24.11 39.3252 24.1059 38.5534C24.1055 38.4803 23.0712 38.5153 22.7463 38.5994ZM39.8505 38.5534C39.8463 39.3252 39.3993 40.5895 38.8965 41.2509C38.6661 41.5542 38.6661 41.5542 39.0043 41.9116C39.3599 42.2875 39.6877 42.8583 39.7991 43.2958C39.8654 43.5561 39.8654 43.5561 40.1271 43.5158C40.8493 43.4044 41.4686 43.51 42.018 43.8382C42.3716 44.0495 42.3478 44.057 42.7013 43.6214C43.9374 42.0984 43.5689 39.6714 41.9853 38.905C41.3053 38.5759 39.8517 38.3365 39.8505 38.5534ZM29.7823 41.226C28.2407 41.9355 28.1008 43.6657 29.425 45.6435C29.8322 46.2516 29.8322 46.2516 29.9909 46.0042C30.8347 44.6887 33.1217 44.6887 33.9655 46.0042C34.195 46.362 35.119 44.998 35.3537 43.9547C35.7727 42.0926 33.9355 40.1987 32.8969 41.4221C32.676 41.6824 32.4046 42.1603 32.2974 42.4778C32.0898 43.0928 31.8666 43.0928 31.659 42.4778C31.493 41.9861 31.1431 41.4559 30.8236 41.2121C30.5965 41.0388 30.1769 41.0444 29.7823 41.226ZM18.8384 41.6039C16.0378 41.9677 15.5262 45.9479 18.0611 47.65C18.6008 48.0123 20.141 48.6513 20.141 48.5128C20.141 48.5043 20.0901 48.3003 20.0278 48.0594C19.7621 47.0324 20.0395 45.7398 20.6993 44.9304C20.8762 44.7134 20.8762 44.7134 20.432 44.2494C19.7738 43.5619 19.4175 42.8228 19.3193 41.9413C19.273 41.5255 19.2993 41.5439 18.8384 41.6039ZM44.6912 41.6143C44.6802 41.6479 44.6441 41.8579 44.611 42.081C44.4797 42.9651 44.1639 43.5892 43.5006 44.2757C43.079 44.7119 43.079 44.7119 43.2565 44.9297C43.9169 45.7398 44.1944 47.032 43.9286 48.0594C43.8663 48.3003 43.8154 48.5043 43.8154 48.5128C43.8154 48.6513 45.3556 48.0123 45.8953 47.65C48.1411 46.142 48.1021 42.8592 45.826 41.8098C45.4506 41.6368 44.7246 41.5117 44.6912 41.6143ZM26.5751 42.3259C24.7937 42.5794 24.4305 45.4707 25.9361 47.4129C26.0663 47.5809 26.1901 47.7431 26.2111 47.7734C26.2338 47.806 26.3376 47.7683 26.466 47.6807C27.1916 47.1858 28.0696 47.0783 29.3958 47.322C29.4398 47.3301 29.6801 46.7384 29.6417 46.7164C28.1995 45.8924 27.3765 44.4298 27.4595 42.8381C27.4835 42.3767 27.4835 42.3767 27.2813 42.3432C27.1701 42.3247 27.0408 42.3026 26.9941 42.294C26.9474 42.2854 26.7589 42.2998 26.5751 42.3259ZM36.9339 42.2951C36.9028 42.3034 36.7863 42.3252 36.6751 42.3435C36.4729 42.3767 36.4729 42.3767 36.4969 42.8381C36.5799 44.4298 35.7569 45.8924 34.3146 46.7164C34.2762 46.7384 34.5166 47.3301 34.5606 47.322C35.8868 47.0783 36.7648 47.1858 37.4904 47.6807C37.6188 47.7683 37.7226 47.806 37.7453 47.7734C37.7663 47.7431 37.89 47.5809 38.0203 47.4129C39.1269 45.9854 39.2616 43.5659 38.2819 42.7133C37.9788 42.4495 37.2274 42.2164 36.9339 42.2951ZM22.9617 44.6378C20.7785 45.2189 20.6256 48.202 22.6811 50.1117C24.1667 51.492 22.7158 51.1684 21.0976 49.7586C20.6589 49.3763 20.6589 49.3763 20.3245 49.4109C18.9589 49.552 16.8553 48.358 15.7336 46.8051C15.4748 46.4467 15.4748 46.4467 15.3102 46.6371C12.9781 49.3326 11.6508 51.7462 10.1393 56.0392C9.76521 57.1021 9.76147 57.0192 10.187 57.0993C17.4495 58.4623 22.2416 66.113 22.3909 76.5834C22.4234 78.8698 22.3657 78.7326 23.1701 78.4353C23.6613 78.2533 23.7608 78.115 24.1621 77.0582C25.9984 72.221 27.5444 70.303 30.1344 69.6483C30.6704 69.5128 30.6547 69.5229 30.7005 69.2815C30.804 68.7361 31.3863 67.3081 31.5961 67.0852C32.1021 66.5482 32.9502 67.6704 33.2559 69.2815C33.3017 69.5229 33.286 69.5128 33.822 69.6483C36.412 70.303 37.9579 72.221 39.7943 77.0582C40.1956 78.115 40.2951 78.2533 40.7863 78.4353C41.5907 78.7326 41.5329 78.8698 41.5655 76.5834C41.7148 66.1125 46.5064 58.4623 53.7693 57.0993C54.1949 57.0192 54.1912 57.1021 53.8171 56.0392C52.3056 51.7462 50.9783 49.3326 48.6462 46.6371C48.4816 46.4467 48.4816 46.4467 48.2228 46.8051C47.1011 48.358 44.9975 49.552 43.6319 49.4109C43.2975 49.3763 43.2975 49.3763 42.8588 49.7586C41.2406 51.1684 39.7897 51.492 41.2753 50.1117C42.7584 48.7338 43.1328 47.311 42.3929 45.8642C41.8067 44.7177 39.9983 44.0306 39.8834 44.9107C39.6997 46.3185 39.1368 47.4015 38.289 47.9783C38.0421 48.1463 38.0421 48.1463 38.2526 48.5228C38.7369 49.3892 38.4976 50.5152 37.6489 51.3635C36.9308 52.0812 36.3539 52.1282 37.0128 51.4153C37.8772 50.4802 37.8171 49.3403 36.889 49.0678C36.3338 48.9047 34.5835 48.9739 34.5835 49.1589C34.5835 49.5796 34.0209 50.873 33.6869 51.2202C33.2726 51.6508 33.1858 51.4641 33.4711 50.756C34.3452 48.587 33.6167 46.5195 31.9782 46.5195C30.3397 46.5195 29.6112 48.587 30.4852 50.756C30.7706 51.4641 30.6838 51.6508 30.2695 51.2202C29.9355 50.873 29.3729 49.5796 29.3729 49.1589C29.3729 48.9739 27.6226 48.9047 27.0674 49.0678C26.1392 49.3403 26.0791 50.4802 26.9435 51.4153C27.6025 52.1282 27.0256 52.0812 26.3075 51.3635C25.4587 50.5152 25.2195 49.3892 25.7038 48.5228C25.9143 48.1463 25.9143 48.1463 25.6673 47.9783C24.8204 47.4022 24.2566 46.3182 24.0734 44.9142C24.0433 44.6834 24.0113 44.6186 23.9149 44.593C23.7159 44.5402 23.2453 44.5623 22.9617 44.6378ZM7.34941 58.501C4.00737 59.0257 4.51002 62.6657 8.34571 65.7154C9.5633 66.6837 9.58539 66.6971 11.5322 67.6889C18.7089 71.3451 20.5941 73.5918 20.5941 78.4902C20.5941 78.8267 20.8359 78.9298 21.1747 78.7371C21.2357 78.7024 21.226 76.3594 21.1597 75.1072C20.8481 69.2272 18.4656 63.7308 15.0503 61.0137C12.7912 59.2161 9.54376 58.1566 7.34941 58.501ZM54.8879 58.4825C48.6903 59.1349 43.9779 64.9986 42.9392 73.3499C42.774 74.6794 42.6574 78.666 42.7817 78.7371C43.1205 78.9298 43.3623 78.8267 43.3623 78.4902C43.3623 73.5913 45.2462 71.3457 52.4242 67.6889C54.371 66.6971 54.3931 66.6837 55.6107 65.7154C60.2076 62.0609 59.7981 57.9656 54.8879 58.4825ZM4.92171 65.9652C2.31471 68.7753 1.54643 74.5791 3.23348 78.7192C5.60142 84.5309 13.3492 89.9338 20.1693 90.5302C23.26 90.8001 23.9616 90.7542 23.666 90.2989C23.1812 89.5535 21.5195 86.5301 20.5486 84.6272C20.2971 84.1344 19.9069 83.4417 19.6814 83.0872C18.6685 81.4962 18.5942 80.3398 19.4468 79.4388C19.9516 78.9051 19.6345 76.3812 18.8711 74.8546C18.4936 74.0998 18.5196 74.1076 18.1604 74.6452C14.0283 80.8293 5.59802 76.0967 5.76889 67.6894C5.795 66.4065 5.795 66.4065 5.43734 66.1226C5.01987 65.7922 5.06874 65.8067 4.92171 65.9652ZM58.5068 66.1265C58.1613 66.4065 58.1613 66.4065 58.1873 67.6894C58.3584 76.0967 49.928 80.8287 45.796 74.6452C45.4368 74.1076 45.4628 74.0998 45.0853 74.8546C44.3219 76.3812 44.0048 78.9051 44.5096 79.4388C45.3622 80.3398 45.2879 81.4962 44.275 83.0872C44.0495 83.4417 43.6593 84.1344 43.4078 84.6272C42.4369 86.5301 40.7752 89.5535 40.2904 90.2989C39.9929 90.757 39.9097 90.7351 41.6502 90.6545C45.2799 90.487 46.7898 90.1555 49.7339 88.8798C60.3792 84.2688 64.708 74.4727 59.5432 66.682C58.9049 65.7188 58.9678 65.753 58.5068 66.1265ZM7.20255 67.4772C6.65362 69.2787 7.74026 72.674 9.42301 74.4156C9.94549 74.956 9.97686 74.9594 9.7681 74.4526C8.92913 72.4142 9.23673 69.8863 10.4215 69.0838C10.6406 68.9354 10.2405 68.6862 8.70032 68.0131C8.34209 67.8563 7.87761 67.6435 7.66811 67.5399C7.21591 67.3159 7.25029 67.321 7.20255 67.4772ZM56.3605 67.503C56.2047 67.583 55.7205 67.8076 55.2844 68.0019C53.6014 68.7501 53.3089 68.931 53.534 69.0833C54.7197 69.8863 55.0276 72.413 54.1883 74.4526C53.9795 74.9594 54.0109 74.956 54.5334 74.4156C56.2161 72.674 57.3027 69.2787 56.7538 67.4772C56.7068 67.3232 56.7091 67.3232 56.3605 67.503ZM31.3078 70.9386C29.1406 71.3222 27.1122 73.6445 25.5392 77.5432C24.7506 79.4982 24.3404 79.781 21.7269 80.1741C20.007 80.4328 19.8936 80.8472 21.0756 82.5524C21.9302 83.7855 22.974 85.489 24.0765 87.449C26.0468 90.953 26.7738 92.115 27.7758 93.3632C31.2315 97.669 34.1851 96.9629 37.8492 90.9552C38.5707 89.7725 38.6608 89.6168 39.8799 87.449C40.9824 85.489 42.0262 83.7855 42.8808 82.5524C44.0628 80.8472 43.9494 80.4328 42.2295 80.1741C39.6159 79.781 39.2058 79.4982 38.4172 77.5432C36.5208 72.8431 33.9644 70.4682 31.3078 70.9386ZM25.55 80.2077C25.0207 80.4804 24.8298 81.004 25.0762 81.5074C25.2716 81.9062 25.8097 82.105 26.1408 81.9006C26.2319 81.8446 26.3007 81.8653 26.579 82.0338C27.574 82.6353 27.9533 82.5188 27.644 81.7062C27.172 80.4664 26.2826 79.8302 25.55 80.2077ZM37.4328 80.2329C36.8255 80.5381 36.0489 81.8423 36.2395 82.2377C36.3773 82.5233 36.6478 82.4751 37.3774 82.0338C37.6557 81.8653 37.7245 81.8446 37.8156 81.9006C38.1467 82.105 38.6848 81.9062 38.8802 81.5074C39.3022 80.6456 38.3245 79.7843 37.4328 80.2329Z' fill='#22110C'/><path d='M36.934 42.2951C36.9028 42.3034 36.7863 42.3252 36.6751 42.3435C36.4729 42.3767 36.4729 42.3767 36.4969 42.8381C36.5799 44.4298 35.7569 45.8924 34.3147 46.7164C34.2763 46.7384 34.5166 47.3301 34.5606 47.322C35.8868 47.0783 36.7648 47.1858 37.4904 47.6807C37.6188 47.7683 37.7226 47.806 37.7453 47.7734C37.7663 47.7431 37.89 47.5809 38.0203 47.4129C39.1269 45.9854 39.2616 43.5659 38.2819 42.7133C37.9789 42.4495 37.2274 42.2164 36.934 42.2951Z' fill='#2430F0'/><path d='M44.6912 41.6143C44.6802 41.6479 44.6441 41.8579 44.611 42.081C44.4797 42.9651 44.1639 43.5892 43.5006 44.2757C43.079 44.7119 43.079 44.7119 43.2565 44.9297C43.9168 45.7399 44.1944 47.0321 43.9286 48.0594C43.8663 48.3003 43.8154 48.5043 43.8154 48.5128C43.8154 48.6513 45.3555 48.0123 45.8952 47.65C48.1411 46.142 48.1021 42.8592 45.826 41.8098C45.4506 41.6368 44.7246 41.5117 44.6912 41.6143Z' fill='#2430F0'/><path d='M39.8505 38.5534C39.8464 39.3252 39.3993 40.5895 38.8965 41.2509C38.6661 41.5542 38.6661 41.5542 39.0043 41.9116C39.3599 42.2875 39.6877 42.8583 39.7991 43.2958C39.8654 43.5561 39.8654 43.5561 40.1271 43.5158C40.8493 43.4044 41.4686 43.51 42.018 43.8382C42.3716 44.0495 42.3478 44.057 42.7013 43.6214C43.9374 42.0984 43.5689 39.6714 41.9853 38.905C41.3053 38.5759 39.8517 38.3365 39.8505 38.5534Z' fill='#2430F0'/><path d='M35.927 37.1186C35.8809 38.245 35.678 38.9605 35.1922 39.7093C35.0145 39.9832 35.0145 39.9832 35.2838 40.208C35.4319 40.3316 35.6704 40.5952 35.8138 40.7939C36.1023 41.1937 36.0189 41.1712 36.6995 41.0326C36.9068 40.9903 37.0738 40.9969 37.3762 41.0592C37.843 41.1555 37.7666 41.2162 38.1521 40.4434C39.2408 38.2617 38.529 36.4184 36.567 36.3384L35.96 36.3138L35.927 37.1186Z' fill='#2430F0'/><path d='M31.362 34.7628C29.5697 35.079 28.991 36.7375 29.9445 38.8251C30.2284 39.4467 30.2284 39.4467 30.6641 39.4512C31.0555 39.4552 31.1445 39.4783 31.539 39.6775C31.9782 39.8994 31.9782 39.8994 32.4174 39.6775C32.8118 39.4783 32.9009 39.4552 33.2922 39.4512C33.7279 39.4467 33.7279 39.4467 34.0116 38.8251C35.1813 36.2617 33.9104 34.3133 31.362 34.7628Z' fill='#2430F0'/><path d='M29.7823 41.226C28.2407 41.9356 28.1008 43.6657 29.425 45.6435C29.8322 46.2516 29.8322 46.2516 29.9909 46.0042C30.8347 44.6887 33.1217 44.6887 33.9655 46.0042C34.195 46.362 35.119 44.998 35.3537 43.9547C35.7727 42.0926 33.9355 40.1987 32.8969 41.4221C32.676 41.6824 32.4046 42.1603 32.2974 42.4778C32.0898 43.0928 31.8666 43.0928 31.659 42.4778C31.493 41.9861 31.1431 41.4559 30.8236 41.2121C30.5965 41.0388 30.1768 41.0444 29.7823 41.226Z' fill='#2430F0'/><path d='M26.5751 42.3259C24.7937 42.5794 24.4305 45.4707 25.9361 47.4129C26.0663 47.5809 26.1901 47.7431 26.2111 47.7734C26.2338 47.806 26.3376 47.7683 26.466 47.6807C27.1916 47.1858 28.0696 47.0783 29.3958 47.322C29.4398 47.3301 29.6801 46.7384 29.6417 46.7164C28.1995 45.8924 27.3765 44.4298 27.4594 42.8381C27.4835 42.3767 27.4835 42.3767 27.2813 42.3432C27.1701 42.3247 27.0408 42.3026 26.9941 42.294C26.9474 42.2854 26.7588 42.2998 26.5751 42.3259Z' fill='#2430F0'/><path d='M22.7463 38.5994C20.5518 39.1672 19.7719 41.7939 21.2551 43.6214C21.6086 44.057 21.5848 44.0495 21.9384 43.8382C22.4878 43.51 23.1071 43.4044 23.8293 43.5157C24.091 43.5561 24.091 43.5561 24.1573 43.2958C24.2687 42.8583 24.5964 42.2875 24.9521 41.9116C25.2902 41.5542 25.2902 41.5542 25.0598 41.2509C24.5571 40.5895 24.11 39.3252 24.1058 38.5534C24.1055 38.4803 23.0712 38.5153 22.7463 38.5994Z' fill='#2430F0'/><path d='M26.7648 36.4037C25.2964 36.7952 24.8728 38.5768 25.8042 40.4434C26.1898 41.2162 26.1134 41.1555 26.5802 41.0593C26.8826 40.9969 27.0496 40.9903 27.2569 41.0326C27.9375 41.1712 27.8541 41.1937 28.1426 40.7939C28.286 40.5952 28.5245 40.3316 28.6726 40.208C28.9419 39.9832 28.9419 39.9832 28.7642 39.7093C28.2795 38.9621 28.0755 38.2445 28.0296 37.1254C27.9951 36.2828 27.7476 36.1416 26.7648 36.4037Z' fill='#2430F0'/><path d='M18.8384 41.6039C16.0378 41.9678 15.5262 45.9479 18.0611 47.65C18.6008 48.0123 20.141 48.6513 20.141 48.5128C20.141 48.5043 20.0901 48.3003 20.0278 48.0594C19.7621 47.0324 20.0395 45.7398 20.6993 44.9304C20.8762 44.7134 20.8762 44.7134 20.432 44.2494C19.7739 43.5619 19.4175 42.8228 19.3193 41.9413C19.273 41.5255 19.2993 41.5439 18.8384 41.6039Z' fill='#2430F0'/><path d='M54.8879 58.4825C48.6904 59.1349 43.9779 64.9986 42.9393 73.3499C42.774 74.6794 42.6574 78.666 42.7817 78.7371C43.1205 78.9298 43.3623 78.8267 43.3623 78.4902C43.3623 73.5913 45.2463 71.3457 52.4242 67.6889C54.371 66.6971 54.3931 66.6837 55.6107 65.7154C60.2076 62.0609 59.7981 57.9656 54.8879 58.4825Z' fill='#2BE1B7'/><path d='M58.5068 66.1265C58.1613 66.4065 58.1613 66.4065 58.1873 67.6894C58.3584 76.0967 49.928 80.8287 45.796 74.6452C45.4368 74.1076 45.4628 74.0997 45.0853 74.8546C44.3219 76.3812 44.0048 78.9051 44.5096 79.4388C45.3622 80.3398 45.2879 81.4962 44.275 83.0872C44.0495 83.4417 43.6593 84.1344 43.4078 84.6272C42.4369 86.5301 40.7752 89.5535 40.2904 90.2989C39.9929 90.7569 39.9097 90.7351 41.6502 90.6545C45.2799 90.487 46.7898 90.1555 49.7339 88.8798C60.3792 84.2688 64.708 74.4727 59.5432 66.682C58.9049 65.7188 58.9678 65.753 58.5068 66.1265Z' fill='#2BE1B7'/><path d='M4.92173 65.9652C2.31472 68.7753 1.54644 74.5791 3.23349 78.7192C5.60144 84.5309 13.3492 89.9338 20.1694 90.5302C23.26 90.8001 23.9616 90.7542 23.666 90.2989C23.1812 89.5535 21.5195 86.5301 20.5486 84.6272C20.2971 84.1344 19.9069 83.4417 19.6814 83.0872C18.6685 81.4962 18.5942 80.3398 19.4468 79.4388C19.9516 78.9051 19.6345 76.3812 18.8711 74.8546C18.4936 74.0998 18.5196 74.1076 18.1604 74.6452C14.0284 80.8293 5.59804 76.0967 5.76891 67.6894C5.79502 66.4065 5.79502 66.4065 5.43736 66.1226C5.01989 65.7922 5.06876 65.8067 4.92173 65.9652Z' fill='#2BE1B7'/><path d='M7.34942 58.501C4.00738 59.0257 4.51003 62.6657 8.34572 65.7154C9.56331 66.6837 9.5854 66.6971 11.5322 67.6889C18.7089 71.3451 20.5941 73.5918 20.5941 78.4902C20.5941 78.8267 20.8359 78.9298 21.1747 78.7371C21.2357 78.7024 21.226 76.3594 21.1597 75.1072C20.8482 69.2272 18.4657 63.7308 15.0503 61.0137C12.7912 59.2161 9.54377 58.1566 7.34942 58.501Z' fill='#2BE1B7'/><path d='M22.9617 44.6378C20.7785 45.2189 20.6256 48.202 22.6811 50.1117C24.1667 51.492 22.7157 51.1684 21.0976 49.7586C20.6589 49.3763 20.6589 49.3763 20.3245 49.4109C18.9589 49.552 16.8553 48.358 15.7336 46.8051C15.4748 46.4467 15.4748 46.4467 15.3102 46.6371C12.9781 49.3326 11.6508 51.7462 10.1393 56.0392C9.76518 57.1021 9.76144 57.0192 10.187 57.0993C17.4495 58.4623 22.2416 66.113 22.3909 76.5834C22.4234 78.8698 22.3657 78.7326 23.1701 78.4353C23.6612 78.2533 23.7608 78.115 24.1621 77.0582C25.9984 72.221 27.5443 70.303 30.1344 69.6483C30.6704 69.5128 30.6547 69.5229 30.7005 69.2815C30.804 68.7361 31.3863 67.3081 31.5961 67.0852C32.1021 66.5482 32.9502 67.6704 33.2559 69.2815C33.3017 69.5229 33.286 69.5128 33.822 69.6483C36.412 70.303 37.9579 72.221 39.7943 77.0582C40.1956 78.115 40.2951 78.2533 40.7863 78.4353C41.5907 78.7326 41.5329 78.8698 41.5655 76.5834C41.7148 66.1125 46.5064 58.4623 53.7693 57.0993C54.1949 57.0192 54.1912 57.1021 53.8171 56.0392C52.3056 51.7462 50.9783 49.3326 48.6462 46.6371C48.4816 46.4467 48.4816 46.4467 48.2227 46.8051C47.1011 48.358 44.9975 49.552 43.6319 49.4109C43.2975 49.3763 43.2975 49.3763 42.8588 49.7586C41.2406 51.1684 39.7896 51.492 41.2753 50.1117C42.7584 48.7338 43.1328 47.311 42.3929 45.8642C41.8067 44.7177 39.9983 44.0306 39.8834 44.9107C39.6997 46.3185 39.1368 47.4015 38.289 47.9783C38.0421 48.1463 38.0421 48.1463 38.2526 48.5228C38.7369 49.3892 38.4976 50.5153 37.6489 51.3635C36.9308 52.0812 36.3539 52.1282 37.0128 51.4153C37.8772 50.4802 37.8171 49.3403 36.889 49.0678C36.3338 48.9048 34.5835 48.9739 34.5835 49.1589C34.5835 49.5796 34.0209 50.873 33.6869 51.2202C33.2726 51.6508 33.1858 51.4641 33.4711 50.7561C34.3452 48.587 33.6166 46.5195 31.9782 46.5195C30.3397 46.5195 29.6112 48.587 30.4852 50.7561C30.7706 51.4641 30.6837 51.6508 30.2695 51.2202C29.9355 50.873 29.3729 49.5796 29.3729 49.1589C29.3729 48.9739 27.6226 48.9048 27.0674 49.0678C26.1392 49.3403 26.0791 50.4802 26.9435 51.4153C27.6025 52.1282 27.0256 52.0812 26.3075 51.3635C25.4587 50.5153 25.2195 49.3892 25.7038 48.5228C25.9143 48.1463 25.9143 48.1463 25.6673 47.9783C24.8204 47.4022 24.2566 46.3182 24.0734 44.9142C24.0433 44.6834 24.0113 44.6186 23.9149 44.593C23.7159 44.5402 23.2453 44.5623 22.9617 44.6378Z' fill='#2430F0'/><path fill-rule='evenodd' clip-rule='evenodd' d='M31.3078 70.9386C29.1406 71.3222 27.1122 73.6445 25.5392 77.5432C24.7505 79.4982 24.3404 79.781 21.7269 80.1741C20.007 80.4328 19.8936 80.8472 21.0756 82.5524C21.9302 83.7855 22.974 85.489 24.0765 87.449C26.0467 90.953 26.7738 92.115 27.7758 93.3632C31.2315 97.669 34.1851 96.9629 37.8492 90.9552C38.5707 89.7725 38.6608 89.6168 39.8799 87.449C40.9824 85.489 42.0262 83.7855 42.8808 82.5524C44.0627 80.8472 43.9494 80.4328 42.2295 80.1741C39.6159 79.781 39.2058 79.4982 38.4172 77.5432C36.5208 72.8431 33.9644 70.4682 31.3078 70.9386ZM25.0762 81.5074C24.8298 81.004 25.0207 80.4804 25.55 80.2077C26.2826 79.8302 27.172 80.4664 27.644 81.7062C27.9533 82.5188 27.574 82.6353 26.579 82.0338C26.3007 81.8653 26.2319 81.8446 26.1408 81.9006C25.8097 82.105 25.2716 81.9062 25.0762 81.5074ZM36.2395 82.2377C36.0489 81.8423 36.8255 80.5381 37.4327 80.2329C38.3245 79.7843 39.3022 80.6456 38.8802 81.5074C38.6848 81.9062 38.1467 82.105 37.8156 81.9006C37.7245 81.8446 37.6557 81.8653 37.3773 82.0338C36.6477 82.4751 36.3773 82.5233 36.2395 82.2377Z' fill='#F2C79C'/><path fill-rule='evenodd' clip-rule='evenodd' d='M20.3202 24.403C19.5666 21.5954 17.2191 19.3839 14.0295 19.9736C11.4987 20.4416 9.24985 22.3643 8.66077 24.544C8.83481 25.1512 9.12264 25.7375 9.53547 26.2772C12.4561 30.0955 17.7152 29.7103 19.882 25.5194C20.0717 25.1526 20.2166 24.7789 20.3202 24.403Z' fill='#2430F0'/><path fill-rule='evenodd' clip-rule='evenodd' d='M23.2033 13.8331C23.0948 13.5111 23.0089 13.1872 22.9446 12.8628C23.6043 9.48753 26.8651 6.55862 30.7211 5.86204C35.8819 4.92986 40.1328 8.42566 41.0144 12.8569C40.9495 13.1818 40.8628 13.5076 40.753 13.8331C38.1555 21.5419 25.8009 21.5419 23.2033 13.8331Z' fill='#2430F0'/><path d='M48.3834 16.9849C44.7211 17.6391 42.8231 21.2129 43.6409 24.3975C44.1819 22.2632 46.2959 20.4266 48.8135 19.9768C52.1137 19.3873 54.5193 21.74 55.2948 24.5648C56.4238 20.7128 52.8241 16.1916 48.3834 16.9849Z' fill='#2430F0'/><path d='M22.9446 12.8628C23.6043 9.48753 26.8651 6.55862 30.7211 5.86204C35.8819 4.92986 40.1328 8.42566 41.0144 12.8569C42.1526 7.1595 36.5778 1.73453 30.291 2.87013C25.3199 3.76811 22.0529 8.36445 22.9446 12.8628Z' fill='#2430F0'/><path d='M14.0295 19.9736C17.219 19.3839 19.5666 21.5954 20.3202 24.403C21.415 20.427 17.8778 16.1907 13.5994 16.9817C9.92814 17.6605 7.75543 21.3854 8.66071 24.544C9.2498 22.3643 11.4986 20.4416 14.0295 19.9736Z' fill='#2430F0'/><path d='M45.4063 27.3364C48.0396 29.7926 52.0966 29.3159 54.421 26.2772C54.8342 25.7369 55.1207 25.1588 55.2948 24.5649C54.5193 21.74 52.1137 19.3873 48.8135 19.9768C46.2959 20.4266 44.1819 22.2632 43.6409 24.3975C43.9142 25.4617 44.4909 26.4826 45.4063 27.3364Z' fill='#2430F0'/><path fill-rule='evenodd' clip-rule='evenodd' d='M24.3135 9.82174C25.7542 7.84343 28.1023 6.33602 30.7261 5.86204C34.6523 5.15284 38.052 7.00662 39.842 9.88541C40.1832 9.54589 40.4952 9.20081 40.753 8.8628C39.4215 4.92063 35.0634 2.00896 30.296 2.87013C27.0022 3.4651 24.4566 5.68362 23.3731 8.42146C23.6075 8.86823 23.9385 9.34759 24.3135 9.82174Z' fill='#F2C79C'/><path d='M24.3135 9.82172C25.5926 11.439 27.3833 12.9963 27.5991 12.9963C27.7624 12.9963 28.6653 12.1292 29.6031 11.2287C30.6158 10.256 31.6693 9.2443 31.8752 9.2443C32.0734 9.2443 32.923 10.1823 33.7725 11.1203C34.6221 12.0583 35.4716 12.9963 35.6699 12.9963C35.9227 12.9963 38.2149 11.504 39.842 9.88539C38.052 7.0066 34.6523 5.15282 30.7261 5.86201C28.1023 6.336 25.7542 7.84341 24.3135 9.82172Z' fill='#2BE1B7'/><path d='M8.69081 24.386C9.34327 22.272 11.5443 20.4302 14.0139 19.9736C15.9023 19.6245 17.4955 20.2572 18.6375 21.4142C18.8497 20.6386 19.0033 19.7123 18.9853 18.9347C17.7035 17.4593 15.7376 16.5835 13.5838 16.9817C9.99919 17.6444 7.84324 21.2112 8.58609 24.3193C8.62053 24.3418 8.65547 24.364 8.69081 24.386Z' fill='#2BE1B7'/><path d='M8.6908 24.386C10.0797 25.2533 11.9731 25.632 12.472 25.3443C12.8582 25.1216 13.037 23.9982 13.079 22.8412C13.111 21.9619 13.1396 21.1747 13.3108 21.0296C13.5 20.8692 14.4177 21.391 15.3902 21.944C16.456 22.5499 17.6599 23.0784 17.9709 22.9027C18.1932 22.7771 18.4122 22.238 18.6375 21.4142C17.4955 20.2572 15.9022 19.6245 14.0138 19.9736C11.5443 20.4302 9.34326 22.272 8.6908 24.386Z' fill='#2BE1B7'/><path fill-rule='evenodd' clip-rule='evenodd' d='M44.0624 20.3883C44.1473 21.0043 45.9314 24.3083 46.4128 24.4203C46.6735 24.481 47.5653 23.8519 48.3823 23.2757C49.0739 22.7878 49.7119 22.3378 49.8677 22.3763C50.0098 22.4114 50.2806 22.8332 50.5972 23.3265C51.038 24.0131 51.5678 24.8382 51.9632 24.9523C52.4755 25.1 54.5157 24.0391 55.5141 23.3276C55.6683 19.8161 52.3697 16.2754 48.3986 16.9849C46.3249 17.3553 44.8169 18.6618 44.0472 20.3036C44.0531 20.3295 44.0581 20.3576 44.0624 20.3883Z' fill='#2BE1B7'/><path d='M56.3605 67.503C56.2047 67.583 55.7205 67.8076 55.2844 68.0019C53.6014 68.7501 53.3089 68.931 53.534 69.0833C54.7197 69.8863 55.0276 72.413 54.1883 74.4526C53.9795 74.9594 54.0109 74.956 54.5334 74.4156C56.2161 72.674 57.3027 69.2787 56.7538 67.4772C56.7068 67.3232 56.7091 67.3232 56.3605 67.503Z' fill='#F1F1F1'/><path d='M7.20255 67.4772C6.65362 69.2787 7.74026 72.674 9.42301 74.4156C9.94548 74.956 9.97686 74.9594 9.7681 74.4526C8.92913 72.4142 9.23673 69.8863 10.4215 69.0838C10.6406 68.9354 10.2405 68.6862 8.70032 68.0131C8.34209 67.8563 7.87761 67.6435 7.6681 67.5399C7.21591 67.3159 7.25029 67.321 7.20255 67.4772Z' fill='#F1F1F1'/><path d='M52.6726 72.6085C52.6726 72.4226 52.5077 72.2725 52.3044 72.2725C52.1011 72.2725 51.9363 72.4226 51.9363 72.6085C51.9363 72.7938 52.1011 72.9445 52.3044 72.9445C52.5077 72.9445 52.6726 72.7938 52.6726 72.6085Z' fill='#F1F1F1'/><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M40.5098 14.4687C37.3587 17.9388 31.0957 19.8484 23.9393 15.4293C27.478 21.3135 37.6984 20.9933 40.5098 14.4687ZM18.9789 26.8619C15.6621 28.2337 11.1588 26.8293 8.95886 25.3337C9.11337 25.6598 9.30497 25.9757 9.53554 26.2772C12.1061 29.6377 16.488 29.7422 18.9789 26.8619ZM54.9338 25.4684C53.0268 27.2415 49.1655 28.502 44.6555 26.5029C44.8742 26.7942 45.1242 27.0732 45.4064 27.3364C48.0398 29.7926 52.0967 29.3159 54.4211 26.2772C54.6211 26.0156 54.7915 25.7452 54.9338 25.4684Z' fill='#22110C'/><path d='M22.9446 12.8628C23.6043 9.48752 26.8651 6.55861 30.7211 5.86208C35.8819 4.92986 40.1328 8.42565 41.0144 12.8569C42.1526 7.15955 36.5778 1.73453 30.291 2.87013C25.3199 3.76811 22.0529 8.3645 22.9446 12.8628Z' fill='#2430F0'/><path fill-rule='evenodd' clip-rule='evenodd' d='M24.3135 9.82173C25.7542 7.84342 28.1023 6.33601 30.7261 5.86208C34.6523 5.15285 38.052 7.00661 39.842 9.8854C40.1832 9.54587 40.4952 9.20086 40.753 8.86284C39.4215 4.92063 35.0634 2.00897 30.296 2.87013C27.0022 3.4651 24.4566 5.68361 23.3731 8.42145C23.6075 8.86822 23.9385 9.34758 24.3135 9.82173Z' fill='#2BE1B7'/><g opacity='0.2'><g style='mix-blend-mode:hard-light'><path fill-rule='evenodd' clip-rule='evenodd' d='M34.2491 35.9773C33.835 35.0209 32.8027 34.5087 31.362 34.7628C30.5112 34.913 29.9339 35.3656 29.6641 36.023C30.2318 35.5595 31.2364 35.408 31.9859 35.3923C32.7102 35.4075 33.6727 35.5495 34.2491 35.9773ZM27.9417 36.5826C27.24 36.6891 25.9584 37.0266 25.4015 37.8033C25.5872 37.1094 26.0534 36.5934 26.7648 36.4037C27.4769 36.2138 27.803 36.2356 27.9417 36.5826ZM24.1143 38.7376C24.1091 38.6737 24.1062 38.6121 24.1058 38.5534C24.1054 38.4803 23.0712 38.5154 22.7463 38.5994C21.6342 38.8872 20.8853 39.7038 20.6103 40.6771C21.3541 39.6373 22.739 38.7702 24.1143 38.7376ZM16.4243 44.403C16.753 43.2975 17.9778 42.1443 18.9735 42.1443C19.1143 42.1443 19.237 42.1366 19.3436 42.1229C19.3342 42.0631 19.3262 42.0025 19.3193 41.9413C19.3171 41.9208 19.315 41.9013 19.3129 41.8829C19.2953 41.7196 19.2861 41.6355 19.239 41.5977C19.1888 41.5575 19.0956 41.5699 18.9032 41.5953C18.8827 41.5981 18.8611 41.601 18.8384 41.6039C17.3356 41.7991 16.4918 43.0358 16.4243 44.403ZM31.3569 41.8431C30.7793 41.3996 29.9246 41.2243 28.7245 42.217C28.9271 41.7962 29.2804 41.457 29.7822 41.226C30.1768 41.0444 30.5965 41.0388 30.8236 41.2121C31.0046 41.3502 31.1954 41.5803 31.3569 41.8431ZM35.0713 42.0777C34.5531 41.1328 33.5615 40.6393 32.8969 41.4221C32.8 41.5363 32.6933 41.6925 32.5951 41.8585C33.1446 41.4261 33.9497 41.2322 35.0713 42.0777ZM27.4688 42.6383C27.4775 42.3758 27.4487 42.371 27.2813 42.3432C27.1701 42.3248 27.0408 42.3026 26.9941 42.294C26.9474 42.2854 26.7588 42.2998 26.5751 42.3259C25.7001 42.4505 25.1673 43.2114 25.03 44.1836C25.3764 43.0712 26.6822 42.5518 27.4688 42.6383ZM39.9159 44.7829C40.188 44.1053 41.838 44.779 42.3929 45.8642C42.5472 46.1658 42.653 46.4664 42.7104 46.7657C42.2852 45.584 40.9462 45.0424 39.9159 44.7829ZM34.5821 49.1978C34.583 49.1841 34.5835 49.1711 34.5835 49.1589C34.5835 48.974 36.3338 48.9048 36.889 49.0678C37.1521 49.145 37.3454 49.2919 37.4677 49.4841C36.9365 49.0205 35.7808 49.1066 34.5821 49.1978ZM30.5593 47.2823C30.8813 46.8079 31.3663 46.5195 31.9782 46.5195C32.5785 46.5195 33.0567 46.7971 33.3787 47.2556C32.9777 46.9461 32.4283 46.7872 31.9859 46.7461C31.5309 46.7883 30.9629 46.9552 30.5593 47.2823ZM26.4691 49.5163C26.59 49.3083 26.7898 49.1493 27.0673 49.0678C27.6226 48.9048 29.3729 48.974 29.3729 49.1589C29.3729 49.1708 29.3733 49.1834 29.3742 49.1966C28.1541 49.1038 26.9811 49.0187 26.4691 49.5163ZM24.0524 44.7838C22.9989 45.0496 21.6245 45.6103 21.2335 46.8481C21.2966 45.8035 21.8799 44.9258 22.9617 44.6378C23.2453 44.5623 23.7159 44.5402 23.9149 44.593C23.99 44.6129 24.026 44.6566 24.0524 44.7838ZM38.5698 37.8028C38.3304 36.9463 37.6334 36.3819 36.567 36.3385L35.9599 36.3138L35.9494 36.571C36.6289 36.663 37.9907 36.9957 38.5698 37.8028ZM43.3288 40.6321C43.1312 39.8833 42.6728 39.2377 41.9853 38.905C41.3053 38.5759 39.8517 38.3365 39.8505 38.5534C39.8502 38.6121 39.8474 38.6735 39.8421 38.7373C41.2026 38.7634 42.5748 39.6086 43.3288 40.6321ZM47.5519 44.418C47.2299 43.308 45.9985 42.1443 44.9983 42.1443C44.8472 42.1443 44.717 42.1354 44.6051 42.1198C44.6071 42.107 44.6091 42.094 44.611 42.081C44.6441 41.8579 44.6802 41.6479 44.6912 41.6143C44.7246 41.5117 45.4506 41.6368 45.826 41.8098C46.9174 42.313 47.4944 43.3297 47.5519 44.418ZM38.9088 44.0871C38.8342 43.5092 38.6273 43.0139 38.2819 42.7133C37.9788 42.4495 37.2274 42.2164 36.9339 42.2951C36.9028 42.3034 36.7863 42.3252 36.6751 42.3435C36.5074 42.3711 36.4788 42.3758 36.4876 42.64C37.2496 42.5478 38.5165 43.0342 38.9088 44.0871Z' fill='white'/></g></g><g style='mix-blend-mode:hard-light'><path fill-rule='evenodd' clip-rule='evenodd' d='M57.8866 58.9831C55.6549 58.8174 53.0523 59.5487 51.1717 60.7085C48.538 62.3325 44.4885 66.6445 43.6389 70.8165C43.4039 71.9701 43.2276 72.3475 43.0971 72.2646C44.3946 64.4935 48.9625 59.1063 54.8879 58.4825C56.2242 58.3419 57.2273 58.543 57.8866 58.9831Z' fill='white' fill-opacity='0.4'/></g><g style='mix-blend-mode:hard-light'><path fill-rule='evenodd' clip-rule='evenodd' d='M5.95422 59.0363C8.24372 58.786 10.9838 59.5291 12.9416 60.7365C15.5752 62.3605 19.6247 66.6725 20.4743 70.8445C20.6076 71.4986 20.7219 71.9029 20.8197 72.1157C19.9968 67.4167 17.8774 63.2632 15.0503 61.0137C12.7912 59.2161 9.54377 58.1566 7.34942 58.501C6.76946 58.5922 6.30532 58.777 5.95422 59.0363Z' fill='white' fill-opacity='0.4'/></g><g style='mix-blend-mode:hard-light'><path fill-rule='evenodd' clip-rule='evenodd' d='M26.3938 75.6655C28.2458 73.6518 30.6186 73.3085 31.8869 73.3085C33.2044 73.3085 35.8161 73.729 37.7017 75.9416C35.9015 72.3106 33.6434 70.5247 31.308 70.9386C29.5151 71.2561 27.8173 72.8997 26.3938 75.6655Z' fill='white' fill-opacity='0.4'/></g><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M56.8977 68.5619C56.0508 68.9231 55.1025 69.2899 54.0784 69.6573C53.9253 69.4204 53.7434 69.225 53.5341 69.0833C53.309 68.931 53.6016 68.7501 55.2846 68.0019C55.7207 67.8076 56.2049 67.5831 56.3607 67.503L56.3666 67.4996C56.5827 67.3882 56.6615 67.3473 56.7023 67.3714C56.7255 67.3848 56.7363 67.4195 56.7533 67.475L56.7538 67.4772C56.8507 67.7953 56.8966 68.1626 56.8977 68.5619ZM7.06018 68.4701C7.91597 68.8531 8.87047 69.2412 9.89697 69.6287C10.0459 69.4047 10.2212 69.2194 10.4216 69.0839C10.6408 68.9355 10.2406 68.6863 8.70051 68.0131C8.34228 67.8563 7.87779 67.6435 7.66829 67.5399C7.63913 67.5254 7.61205 67.5119 7.58679 67.4996C7.35883 67.3865 7.2831 67.3484 7.24776 67.3719C7.23015 67.3831 7.22256 67.4094 7.21112 67.4492C7.20857 67.4576 7.20585 67.4671 7.20274 67.4772C7.11336 67.7706 7.06732 68.1067 7.06018 68.4701Z' fill='#22110C'/><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M19.3065 82.4354C19.1258 84.3567 19.792 86.5054 20.0996 87.4972C20.1519 87.6658 20.1939 87.8013 20.2195 87.8965C20.4389 88.7102 18.054 89.997 9.30603 86.0546C12.536 88.4856 16.4878 90.2082 20.1693 90.5302C23.2599 90.8001 23.9615 90.7542 23.6659 90.2989C23.1811 89.5535 21.5194 86.5301 20.5485 84.6272C20.2971 84.1344 19.9068 83.4417 19.6814 83.0872C19.5375 82.8615 19.4126 82.6442 19.3065 82.4354Z' fill='#22110C'/><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M54.704 86.0373C45.9247 90.0004 43.5325 88.7113 43.7523 87.8965C43.7779 87.8013 43.8198 87.6663 43.8722 87.4972C44.1811 86.501 44.8519 84.3371 44.6628 82.4096C44.554 82.6263 44.4248 82.852 44.2751 83.0872C44.0496 83.4417 43.6594 84.1344 43.4079 84.6272C42.437 86.5301 40.7753 89.5535 40.2905 90.2989C40.1826 90.4652 40.103 90.5677 40.1281 90.6276C40.1723 90.7334 40.5407 90.706 41.6503 90.6545C45.28 90.487 46.7899 90.1555 49.7341 88.8798C51.5878 88.0768 53.25 87.117 54.704 86.0373Z' fill='#22110C'/><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M23.5812 86.5788C25.4951 89.6392 26.2707 90.7407 27.317 91.9184C31.1446 96.2276 34.4161 95.5209 38.4745 89.5082C39.2347 88.3826 39.362 88.1866 40.5347 86.3033C40.3194 86.6734 40.1008 87.0565 39.8799 87.449C38.6607 89.6168 38.5707 89.7725 37.8492 90.9552C34.1851 96.9629 31.2314 97.669 27.7757 93.3632C26.7738 92.115 26.0467 90.953 24.0764 87.449C23.9098 87.1528 23.7446 86.8627 23.5812 86.5788Z' fill='#22110C'/><path d='M31.9434 65.5525C31.2354 65.5525 30.3292 70.5365 29.9328 70.5365L29.1115 71.2925L31.9434 70.5365L35.2 71.4885C34.8507 71.171 34.1012 70.5365 33.8974 70.5365C33.6425 70.5365 32.6513 65.5525 31.9434 65.5525Z' fill='black' fill-opacity='0.2'/><path d='M27.2425 52.1683C26.846 52.1683 25.515 51.2443 25.515 49.8723C25.7038 49.527 26.0814 48.9875 26.0814 49.5923C26.0814 50.3483 26.931 51.3283 27.1575 51.5523C27.3841 51.7763 27.6389 52.1683 27.2425 52.1683Z' fill='black' fill-opacity='0.2'/><path d='M19.6531 49.8723C18.0389 49.8723 15.9434 47.7723 14.8672 46.3443L15.5186 45.7843L16.9911 47.8843L20.3327 48.8643L20.9841 47.8003C21.1445 48.043 21.5221 48.6291 21.7487 49.0323C22.0319 49.5363 22.7681 49.9283 23.3628 50.7683C23.9575 51.6083 21.692 50.5723 21.4088 50.4323C21.1823 50.3203 20.6914 49.975 20.4743 49.8163C20.4743 49.835 20.3101 49.8723 19.6531 49.8723Z' fill='black' fill-opacity='0.2'/><path d='M24.7221 47.3243C24.0708 46.5123 24.2973 45.5603 24.1841 44.7483L26.0248 48.0523L25.8832 48.3043L25.8794 48.3024C25.6975 48.2077 25.2396 47.9695 24.7221 47.3243Z' fill='black' fill-opacity='0.2'/><path d='M30.5274 51.6643C29.9327 51.5243 29.3947 50.1523 29.3947 49.1163L29.9611 48.8643L30.3292 50.3203C30.4425 50.7684 31.1221 51.8043 30.5274 51.6643Z' fill='black' fill-opacity='0.2'/><path d='M36.6726 52.1683C37.069 52.1683 38.4 51.2443 38.4 49.8723C38.2112 49.527 37.8336 48.9875 37.8336 49.5923C37.8336 50.3483 36.9841 51.3283 36.7575 51.5523C36.531 51.7763 36.2761 52.1683 36.6726 52.1683Z' fill='black' fill-opacity='0.2'/><path d='M44.2619 49.8723C45.8761 49.8723 47.9717 47.7723 49.0478 46.3443L48.3965 45.7843L46.9239 47.8843L43.5823 48.8643L42.931 47.8003C42.7705 48.043 42.3929 48.6291 42.1664 49.0323C41.8832 49.5363 41.1469 49.9283 40.5522 50.7683C39.9575 51.6083 42.223 50.5723 42.5062 50.4323C42.7327 50.3203 43.2236 49.975 43.4407 49.8163C43.4407 49.835 43.605 49.8723 44.2619 49.8723Z' fill='black' fill-opacity='0.2'/><path d='M39.1929 47.3243C39.8442 46.5123 39.6177 45.5603 39.731 44.7483L37.8903 48.0523L38.0319 48.3043L38.0356 48.3024C38.2175 48.2077 38.6754 47.9695 39.1929 47.3243Z' fill='black' fill-opacity='0.2'/><path d='M33.3593 51.6923C33.954 51.5523 34.5204 50.1523 34.5204 49.1163L33.954 48.8643L33.5858 50.3203C33.4726 50.7683 32.7646 51.8323 33.3593 51.6923Z' fill='black' fill-opacity='0.2'/><path opacity='0.2' d='M25.243 81.6805C25.0448 81.6805 25.6677 81.3725 25.4695 80.8405C25.9415 80.6445 26.6816 80.8461 27.2253 81.3165C27.905 81.9045 27.905 83.3605 27.8766 83.9765C27.8483 84.5925 25.4412 81.6805 25.243 81.6805Z' fill='#22110C'/><path opacity='0.2' d='M38.6747 81.699C38.8729 81.699 38.25 81.391 38.4482 80.859C37.9762 80.663 37.2361 80.8646 36.6924 81.335C36.0127 81.923 36.0127 83.379 36.0411 83.995C36.0694 84.611 38.4765 81.699 38.6747 81.699Z' fill='#22110C'/><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M12.9684 67.471C16.4154 69.51 19.7664 71.4924 19.7664 73.9525C19.7664 74.0314 19.7651 74.1098 19.7625 74.1866C18.6419 71.8665 16.2117 70.079 11.5203 67.6889C9.57359 66.6971 9.5515 66.6837 8.33392 65.7154C5.34748 63.341 4.38155 60.6088 5.67769 59.2676C4.80566 62.6427 8.95217 65.0955 12.9684 67.471Z' fill='#22110C'/><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M51.0316 67.471C47.5846 69.51 44.2336 71.4924 44.2336 73.9525C44.2336 73.9872 44.2339 74.0219 44.2344 74.0561C45.3822 71.7993 47.8083 70.0342 52.4124 67.6889C54.3592 66.6971 54.3813 66.6837 55.5988 65.7154C58.5844 63.3416 59.4583 60.7824 58.3589 59.421C59.068 62.7178 54.9866 65.1319 51.0316 67.471Z' fill='#22110C'/><g style='mix-blend-mode:multiply'><path fill-rule='evenodd' clip-rule='evenodd' d='M4.41317 66.5661C4.37904 69.3409 4.48569 81.3165 18.7187 81.3165C18.7769 81.3165 18.8348 81.3165 18.8922 81.3159C18.7551 80.579 18.9367 79.9652 19.435 79.4388C19.9398 78.9051 19.6227 76.3812 18.8593 74.8546C18.6572 74.4503 18.5708 74.265 18.4789 74.2622C18.3993 74.2599 18.3155 74.3954 18.1486 74.6452C14.0166 80.8293 5.58627 76.0967 5.75714 67.6894C5.78324 66.4065 5.78324 66.4065 5.42559 66.1226C5.16502 65.9165 5.08613 65.8448 5.02788 65.8582C4.99281 65.8666 4.96522 65.9058 4.90997 65.9652C4.73613 66.1528 4.57047 66.3533 4.41317 66.5661Z' fill='black' fill-opacity='0.2'/></g><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M59.6117 66.8041C59.6333 69.883 59.2453 81.3725 45.3042 81.3725C45.2117 81.3725 45.1202 81.3719 45.0297 81.3714C45.1867 80.6098 45.0086 79.9787 44.4978 79.4388C43.9931 78.9051 44.3101 76.3806 45.0736 74.8546C45.2757 74.4503 45.3621 74.265 45.4539 74.2622C45.5336 74.2599 45.6174 74.3954 45.7843 74.6452C49.9163 80.8287 58.3465 76.0967 58.176 67.6894C58.1573 66.7772 58.1516 66.5134 58.2745 66.337C58.3244 66.2648 58.3952 66.2077 58.4954 66.1265C58.6823 65.9747 58.7831 65.8795 58.8794 65.8834C59.0205 65.8896 59.1519 66.1097 59.5313 66.682C59.5585 66.7229 59.5851 66.7638 59.6117 66.8041Z' fill='#22110C'/><path opacity='0.2' fill-rule='evenodd' clip-rule='evenodd' d='M29.5019 36.5955C29.4165 37.2326 29.5533 37.9949 29.9326 38.8251C30.2165 39.4468 30.2165 39.4468 30.6522 39.4513C31.0436 39.4553 31.1326 39.4783 31.5271 39.6776C31.9662 39.8994 31.9662 39.8994 32.4054 39.6776C32.7999 39.4783 32.8889 39.4553 33.2803 39.4513C33.716 39.4468 33.716 39.4468 33.9997 38.8251C34.3787 37.9944 34.5015 37.2283 34.4075 36.5874C34.2194 37.6242 33.7861 38.9793 32.8143 39.0924C32.3936 39.1799 32.1009 39.1854 31.9998 39.1769L31.9931 39.1763H31.9148H31.9081C31.807 39.1848 31.5143 39.1799 31.0936 39.0924C30.1244 38.9796 29.6908 37.6312 29.5019 36.5955ZM35.1802 39.7094C35.666 38.9606 35.8689 38.2451 35.915 37.1187L35.9393 36.5271C36.1255 37.5415 36.0758 38.962 35.224 40.168C35.0032 39.9822 35.0138 39.966 35.1802 39.7094ZM38.6409 38.7554C38.6016 39.2731 38.4385 39.8456 38.1402 40.4435C38.1082 40.5076 38.0794 40.566 38.0532 40.619C37.8931 40.9435 37.8303 41.0707 37.7338 41.1047C37.6716 41.1267 37.5953 41.1098 37.4697 41.0821C37.438 41.075 37.403 41.0673 37.3643 41.0593C37.0618 40.997 36.8949 40.9904 36.6875 41.0327C36.6331 41.0437 36.5837 41.0541 36.5385 41.0635C36.5288 41.0655 36.5194 41.0674 36.5101 41.0694C36.5471 40.9584 36.8359 40.8679 37.1302 40.7756C37.4071 40.6889 37.6888 40.6006 37.7701 40.4923C38.1736 39.9546 38.4817 39.4124 38.6409 38.7554ZM39.8386 38.5535C39.8344 39.3252 39.3873 40.5895 38.8846 41.251C38.6698 41.5336 38.6553 41.5528 38.9282 41.8437C39.5068 41.0167 40.1094 39.3883 39.8815 38.5011C39.8538 38.5141 39.8387 38.5314 39.8386 38.5535ZM43.4125 41.174C43.3384 41.6477 43.0738 42.6448 42.6692 43.0684C42.1878 43.5724 41.9896 43.6284 41.5931 43.4604C41.3573 43.3605 41.0131 43.4091 40.7627 43.4751C41.2174 43.4921 41.6283 43.6125 42.006 43.8383L42.018 43.8454L42.0394 43.8583C42.1769 43.9406 42.253 43.9863 42.3225 43.9779C42.409 43.9675 42.4851 43.8735 42.6558 43.6628L42.6728 43.6419L42.6894 43.6215C43.2628 42.9149 43.4909 42.0137 43.4125 41.174ZM47.5219 44.205C47.4218 44.9868 47.1367 46.3769 46.0391 47.2963C45.0063 48.1616 44.2267 48.2203 44.0568 46.9883C44.0404 46.8694 44.0173 46.8063 43.99 46.7878C44.0411 47.2225 44.0198 47.6609 43.9167 48.0595C43.8544 48.3003 43.8034 48.5044 43.8034 48.5129C43.8034 48.6514 45.3436 48.0124 45.8833 47.65C47.1229 46.8177 47.6664 45.4447 47.5219 44.205ZM44.5943 42.1123C44.4602 42.9799 44.1441 43.5973 43.4886 44.2757C43.0671 44.712 43.0671 44.712 43.2445 44.9298C43.2635 44.9531 43.2822 44.9768 43.3006 45.0009C43.865 44.4338 44.4939 43.3507 44.5943 42.1123ZM38.9263 44.7383C38.8215 45.3308 38.6489 45.9792 38.3931 46.2883C37.8834 46.9044 37.2037 47.0723 36.6657 46.9883C36.3952 46.9462 35.9466 47.0638 35.5546 47.2011C36.35 47.1677 36.954 47.323 37.4785 47.6808C37.6069 47.7683 37.7107 47.8061 37.7333 47.7735C37.7543 47.7432 37.8781 47.581 38.0084 47.413C38.5844 46.6698 38.897 45.658 38.9263 44.7383ZM34.3547 46.9271C35.17 46.502 36.4769 45.3646 36.4609 43.5548C36.3028 44.8607 35.5252 46.018 34.3027 46.7165C34.288 46.7249 34.3143 46.8171 34.3547 46.9271ZM35.3879 43.6766C35.1362 44.4104 34.5764 45.5646 33.6922 45.2523C32.8993 44.9723 32.4179 44.9163 32.0214 44.9163C31.996 44.9163 31.9737 44.9187 31.954 44.9232C31.9343 44.9187 31.9119 44.9163 31.8865 44.9163C31.49 44.9163 31.0086 44.9723 30.2157 45.2523C29.4178 45.5341 28.8841 44.6215 28.6025 43.9015C28.7337 44.4432 29.0033 45.0315 29.4131 45.6436C29.6698 46.027 29.7647 46.1686 29.8395 46.159C29.8834 46.1533 29.9203 46.0957 29.979 46.0043C30.8227 44.6888 33.1098 44.6888 33.9535 46.0043C34.183 46.3621 35.107 44.998 35.3417 43.9548C35.3626 43.862 35.3778 43.7692 35.3879 43.6766ZM24.9828 44.7447C24.9926 45.6255 25.2955 46.602 25.9241 47.413C26.0544 47.581 26.1782 47.7432 26.1992 47.7735C26.2218 47.8061 26.3256 47.7683 26.454 47.6808C26.9724 47.3272 27.5685 47.1713 28.3503 47.2C27.9589 47.0632 27.512 46.9463 27.2423 46.9883C26.7042 47.0723 26.0246 46.9044 25.5148 46.2883C25.26 45.9803 25.0877 45.3355 24.9828 44.7447ZM27.4534 43.3684C27.341 45.3023 28.7328 46.5072 29.5738 46.9378C29.6165 46.8231 29.645 46.7252 29.6298 46.7165C28.3494 45.9849 27.557 44.7501 27.4534 43.3684ZM24.9902 41.8585C25.2777 41.5534 25.2663 41.5384 25.0479 41.251C24.5452 40.5895 24.0981 39.3252 24.0939 38.5535C24.0938 38.5417 24.0668 38.5327 24.0202 38.5263C23.8086 39.4242 24.4139 41.0441 24.9902 41.8585ZM20.4987 41.1942C20.4123 42.0076 20.6416 42.8803 21.2431 43.6215C21.2547 43.6357 21.2659 43.6495 21.2767 43.6628C21.4474 43.8735 21.5235 43.9675 21.61 43.9779C21.6795 43.9863 21.7556 43.9406 21.8931 43.8583C21.9038 43.8519 21.915 43.8451 21.9265 43.8383C22.2983 43.6161 22.7023 43.4959 23.1485 43.4759C22.8979 43.4095 22.5517 43.36 22.3149 43.4604C21.9184 43.6284 21.7202 43.5724 21.2388 43.0684C20.8398 42.6507 20.577 41.6754 20.4987 41.1942ZM25.3287 38.9804C25.3891 39.445 25.5416 39.9411 25.7923 40.4435C25.8243 40.5076 25.8531 40.5659 25.8793 40.619C26.0394 40.9434 26.1022 41.0707 26.1987 41.1047C26.2609 41.1267 26.3372 41.1098 26.4628 41.0821C26.4945 41.075 26.5295 41.0673 26.5682 41.0593C26.8707 40.997 27.0376 40.9904 27.245 41.0327C27.2993 41.0437 27.3488 41.0541 27.394 41.0635C27.3946 41.0636 27.3952 41.0637 27.3958 41.0639C27.3512 40.9553 27.0671 40.8663 26.7777 40.7756C26.5009 40.6889 26.2192 40.6006 26.1379 40.4923C25.7814 40.0172 25.4993 39.5386 25.3287 38.9804ZM27.9495 36.6382C27.9891 36.7634 28.0095 36.9244 28.0177 37.1255C28.0635 38.2446 28.2676 38.9622 28.7523 39.7094C28.9225 39.9718 28.9296 39.9828 28.6931 40.1809C27.8633 39.0155 27.7865 37.6472 27.9495 36.6382ZM19.9431 46.783C19.9049 46.7738 19.8723 46.8344 19.8511 46.9883C19.6812 48.2203 18.9016 48.1616 17.8688 47.2963C16.8557 46.4476 16.5348 45.1978 16.4127 44.3957C16.3519 45.5782 16.8722 46.8597 18.0492 47.65C18.5889 48.0124 20.1291 48.6514 20.1291 48.5129C20.1291 48.5044 20.0781 48.3003 20.0158 48.0595C19.9123 47.6595 19.8913 47.2193 19.9431 46.783ZM20.6213 45.0148C20.6429 44.9862 20.6649 44.958 20.6873 44.9305C20.8643 44.7134 20.8643 44.7134 20.4201 44.2495C19.7619 43.562 19.4055 42.8228 19.3074 41.9414C19.3052 41.9222 19.3033 41.904 19.3014 41.8866C19.3382 43.2285 20.0194 44.4179 20.6213 45.0148Z' fill='#22110C'/><path d='M52.8991 71.4885C52.8991 70.8081 53.4697 70.2565 54.1734 70.2565C54.8772 70.2565 55.4478 70.8081 55.4478 71.4885C55.4478 72.1689 54.8772 72.7205 54.1734 72.7205C53.4697 72.7205 52.8991 72.1689 52.8991 71.4885Z' fill='#F1F1F1'/><path d='M8.4389 71.4885C8.4389 70.8081 9.00947 70.2565 9.71324 70.2565C10.417 70.2565 10.9876 70.8081 10.9876 71.4885C10.9876 72.1689 10.417 72.7205 9.71324 72.7205C9.00947 72.7205 8.4389 72.1689 8.4389 71.4885Z' fill='#F1F1F1'/><path d='M11.8372 72.6085C11.8372 72.4226 11.6724 72.2725 11.469 72.2725C11.2657 72.2725 11.1009 72.4226 11.1009 72.6085C11.1009 72.7938 11.2657 72.9445 11.469 72.9445C11.6724 72.9445 11.8372 72.7938 11.8372 72.6085Z' fill='#F1F1F1'/></g></svg>\"\n  },\n  {\n    \"name\": \"@mapcn\",\n    \"homepage\": \"https://mapcn.dev\",\n    \"url\": \"https://mapcn.dev/r/{name}.json\",\n    \"description\": \"Beautiful maps, made simple. Ready to use, customizable map components for React. Built on MapLibre. Styled with Tailwind CSS.\",\n    \"logo\": \"<svg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'><rect width='32' height='32' rx='8' fill='var(--foreground)'/><path d='M16 6C12.134 6 9 9.134 9 13C9 18.25 16 26 16 26C16 26 23 18.25 23 13C23 9.134 19.866 6 16 6Z' fill='var(--background)'/><circle cx='16' cy='13' r='3' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@mui-treasury\",\n    \"homepage\": \"https://www.mui-treasury.com\",\n    \"url\": \"https://mui-treasury.com/r/{name}.json\",\n    \"description\": \"A collection of hand-crafted interfaces built on top of MUI components\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='390' height='390' viewBox='0 0 390 390' fill='none'><path fill-rule='evenodd' clip-rule='evenodd' d='M390 91.0161V25.8698C389.997 24.8932 389.738 23.9344 389.249 23.0889C388.761 22.2435 388.059 21.5408 387.214 21.051C386.369 20.5612 385.41 20.3012 384.434 20.2971C383.457 20.2929 382.497 20.5447 381.648 21.0273L338.748 45.5323C337.039 46.5111 335.619 47.9236 334.632 49.6271C333.645 51.3306 333.125 53.2646 333.125 55.2336V120.38C333.125 124.67 337.756 127.367 341.477 125.222L384.377 100.717C386.088 99.7372 387.51 98.3221 388.497 96.6155C389.484 94.9089 390.003 92.9878 390 91.0161ZM8.36875 21.0436L132.567 92.2673C134.259 93.2365 136.175 93.7465 138.125 93.7465C140.075 93.7465 141.991 93.2365 143.683 92.2673L267.881 21.0436C268.731 20.5569 269.693 20.3019 270.672 20.304C271.651 20.3061 272.612 20.5653 273.46 21.0556C274.307 21.5459 275.011 22.2502 275.5 23.0979C275.99 23.9456 276.249 24.9071 276.25 25.8861V221.374C276.25 225.192 274.3 228.735 271.066 230.799L195.504 278.785L246.041 308.555C249.616 310.667 254.085 310.619 257.628 308.409L332.54 261.641C333.343 261.137 334.004 260.437 334.461 259.607C334.919 258.777 335.158 257.844 335.156 256.896V190.515C335.156 186.387 337.431 182.617 341.039 180.667L381.777 158.795C382.629 158.34 383.583 158.114 384.547 158.138C385.512 158.162 386.454 158.435 387.282 158.93C388.11 159.426 388.795 160.127 389.271 160.967C389.748 161.806 389.999 162.754 390 163.719V286.097C390 290.062 387.887 293.735 384.475 295.734L257.173 370.354C255.418 371.381 253.416 371.91 251.383 371.884C249.35 371.858 247.363 371.278 245.635 370.207L148.899 310.391C148.088 309.889 147.419 309.188 146.955 308.355C146.491 307.522 146.249 306.583 146.25 305.63V246.74C146.25 244.871 147.176 243.132 148.736 242.092L214.386 198.315C215.919 197.296 217.176 195.914 218.046 194.293C218.916 192.671 219.373 190.86 219.375 189.02V117.682C219.375 117.288 219.269 116.9 219.07 116.56C218.87 116.219 218.584 115.938 218.24 115.745C217.896 115.551 217.507 115.453 217.113 115.459C216.718 115.465 216.332 115.577 215.995 115.781L143.845 159.071C142.116 160.109 140.138 160.661 138.121 160.666C136.105 160.672 134.124 160.132 132.389 159.104L59.2312 115.749C58.8917 115.549 58.5056 115.442 58.1116 115.439C57.7177 115.436 57.3298 115.536 56.9872 115.731C56.6445 115.925 56.3591 116.206 56.1597 116.546C55.9603 116.886 55.8539 117.272 55.8513 117.666V246.577C55.8496 247.564 55.5868 248.533 55.0894 249.385C54.5921 250.238 53.8779 250.943 53.0196 251.43C52.1612 251.917 51.1892 252.168 50.2024 252.158C49.2156 252.147 48.2492 251.876 47.4013 251.371L8.125 227.809C3.0875 224.786 0 219.326 0 213.444V25.8861C0 21.5961 4.6475 18.8986 8.36875 21.0436Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@moleculeui\",\n    \"homepage\": \"https://www.moleculeui.design/\",\n    \"url\": \"https://www.moleculeui.design/r/{name}.json\",\n    \"description\": \"A modern React component library focused on intuitive interactions and seamless user experiences.\",\n    \"logo\": \"<svg width='500' height='500' viewBox='0 0 500 500' fill='none' xmlns='http://www.w3.org/2000/svg'><g clip-path='url(#clip0_2181_32)'><path d='M368.421 0H131.579C58.9099 0 0 58.9099 0 131.579V368.421C0 441.09 58.9099 500 131.579 500H368.421C441.09 500 500 441.09 500 368.421V131.579C500 58.9099 441.09 0 368.421 0Z' fill='url(#paint0_linear_2181_32)'/><path d='M148.245 362.719H97.3682L167.354 126.78C168.498 122.922 173.799 122.512 175.523 126.149L250 283.333L325.75 126.069C327.494 122.45 332.78 122.884 333.91 126.738L403.07 362.719H351.316L317.539 260.968C317.05 259.495 315.029 259.336 314.316 260.715L259.997 365.755C255.772 373.926 244.109 373.988 239.795 365.864L183.97 260.696C183.242 259.325 181.223 259.506 180.75 260.985L148.245 362.719Z' fill='var(--background)'/></g><defs><linearGradient id='paint0_linear_2181_32' x1='0' y1='0' x2='500' y2='500' gradientUnits='userSpaceOnUse'><stop stop-color='var(--foreground)'/><stop offset='1' stop-color='#F472B6'/></linearGradient><clipPath id='clip0_2181_32'><rect width='500' height='500' fill='var(--background)'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@motion-primitives\",\n    \"homepage\": \"https://www.motion-primitives.com\",\n    \"url\": \"https://motion-primitives.com/c/{name}.json\",\n    \"description\": \"Beautifully designed motions components. Easy copy-paste. Customizable. Open Source. Built for engineers and designers.\",\n    \"logo\": \"<svg role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 70 70' aria-label='MP Logo' width='70' height='70' fill='none'><path stroke='currentColor' stroke-linecap='round' stroke-width='3' d='M51.883 26.495c-7.277-4.124-18.08-7.004-26.519-7.425-2.357-.118-4.407-.244-6.364 1.06M59.642 51c-10.47-7.25-26.594-13.426-39.514-15.664-3.61-.625-6.744-1.202-9.991.263'/></svg>\"\n  },\n  {\n    \"name\": \"@ncdai\",\n    \"homepage\": \"https://chanhdai.com/components\",\n    \"url\": \"https://chanhdai.com/r/{name}.json\",\n    \"description\": \"A collection of reusable components.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 640 640'><path fill='var(--foreground)' d='M0 0h640v640H0z'/><path fill='var(--background)' d='M256 448H128v-64h128v64ZM512 256H384v128h128v64H320V192h192v64ZM128 384H64V256h64v128ZM576 384h-64V256h64v128ZM256 256H128v-64h128v64Z'/></svg>\"\n  },\n  {\n    \"name\": \"@nteract\",\n    \"homepage\": \"https://nteract-elements.vercel.app/\",\n    \"url\": \"https://nteract-elements.vercel.app/r/{name}.json\",\n    \"description\": \"Components for interactive computing notebooks.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='256' height='256' fill='none' viewBox='0 0 256 256'><path fill='#000' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.62' d='m191.321 207-63.775-36.91V49.272l63.775 36.919z'/><path fill='#fff' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.62' d='M127.546 49.272 63.779 86.191V207l63.767-36.91z'/><path fill='#fff' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.62' d='M127.546 9 29 66.05l17.394 10.07 81.152-46.988 81.161 46.989v120.817l17.394-10.07V66.051z'/><path fill='#000' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.62' d='M46.394 76.12 29 66.05v120.818l17.394 10.07zM46.394 76.12v120.818L63.78 207V86.19z'/><path fill='#fff' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.62' d='m46.394 76.12 81.152-46.988 81.161 46.989v120.817L191.321 207V86.19l-63.775-36.918L63.78 86.191z'/><path fill='#fff' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.62' d='m127.554 76.113 40.572 23.494v46.988l-40.58 23.495-40.572-23.495V99.607z'/><path fill='#000' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.62' d='m127.546 170.09.008-46.989-40.58-23.494v46.988z'/><path fill='#fff' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.62' d='m127.554 123.101 40.572-23.494v46.988l-40.58 23.495z'/></svg>\"\n  },\n  {\n    \"name\": \"@nuqs\",\n    \"homepage\": \"https://nuqs.dev/registry\",\n    \"description\": \"Custom parsers, adapters and utilities from the community for type-safe URL state management.\",\n    \"url\": \"https://nuqs.dev/r/{name}.json\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 1024 1024'><rect width='1024' height='1024' fill='#000' rx='512'/><path fill='#fff' d='m284.192 203.6 3.36 74.88-9.119-3.36q5.28-40.8 27.359-59.04 22.082-18.24 56.16-18.24 41.28 0 64.32 25.92 23.52 25.92 23.52 70.56V458h-72.48V318.32q0-22.08-3.839-35.52-3.36-13.44-12-20.16-8.64-7.2-23.041-7.2-23.04 0-35.039 15.84-11.52 15.84-11.521 47.04V458h-72.96V203.6zM746.838 458l-2.88-73.44 9.12 3.36q-5.28 39.84-27.36 58.08-22.08 17.76-55.2 17.76-40.8 0-63.841-25.92-23.04-25.92-23.039-70.56V203.6h72.96v139.68q0 22.08 3.359 35.52t11.521 20.64q8.64 6.72 23.04 6.72 22.08 0 33.599-15.84 12-15.84 12-47.04V203.6h72.481V458zM454.293 563.6V890h-72.96V765.2l6.239 3.84q-6.238 17.76-17.76 30.24-11.519 12-27.359 18.24t-35.041 6.24q-34.56 0-59.52-17.28-24.48-17.76-36.96-47.52-12-30.24-12-68.16t12-67.68q12.48-30.24 36.96-47.52 24.96-17.76 59.52-17.76 29.762 0 50.4 13.92 20.641 13.92 30.241 40.32l-5.28 4.32 1.92-52.8zm-74.4 166.56q6.24-17.76 6.24-39.36 0-21.12-6.24-38.4-6.24-17.76-19.2-28.32-12.48-11.04-30.72-11.04-27.36 0-42.241 22.56-14.4 22.08-14.4 55.2 0 33.6 14.4 55.68 14.881 22.08 42.241 22.08 18.24 0 30.72-10.56 12.96-10.56 19.2-27.84M749.849 646.16q-2.88-17.28-16.32-27.36-12.96-10.56-29.76-10.56t-27.36 8.16-10.08 21.6q.48 12.96 12.96 20.16 12.48 6.72 33.6 10.56 39.36 6.24 63.36 15.84 24 9.12 36 24.48 12.48 15.36 12.48 39.36 0 24.96-14.88 41.76-14.4 16.8-39.84 25.44-25.44 8.16-58.56 8.16-36.96 0-64.8-10.08-27.36-10.56-43.2-29.76-15.84-19.68-17.76-46.56l72.96-3.84q2.4 12.48 8.64 21.6 6.72 8.64 17.28 13.44 11.04 4.32 25.44 4.32 16.32 0 28.32-6.24 12-6.72 12-19.68-.48-8.64-5.76-14.4-4.8-5.76-12.96-8.64-7.68-2.88-21.12-5.76-3.84-.48-9.6-1.92-38.88-7.68-61.92-16.32-22.56-9.12-35.04-23.52-12.48-14.88-12.48-37.92 0-24.96 13.44-43.2 13.92-18.24 39.84-27.84 25.92-10.08 61.92-10.08 48 0 78.72 23.04 30.72 22.56 37.44 62.88z'/></svg>\"\n  },\n  {\n    \"name\": \"@neobrutalism\",\n    \"homepage\": \"https://www.neobrutalism.dev\",\n    \"url\": \"https://www.neobrutalism.dev/r/{name}.json\",\n    \"description\": \"A collection of neobrutalism-styled components based on shadcn/ui\",\n    \"logo\": \"<svg width='64' height='64' viewBox='0 0 64 64' xmlns='http://www.w3.org/2000/svg'><rect x='2' y='2' width='60' height='60' rx='10' ry='10' fill='#5b9bff' stroke='#000' stroke-width='4'/><text x='32' y='42' text-anchor='middle' font-family='Arial, Helvetica, sans-serif' font-size='36' font-weight='900'>N</text></svg>\"\n  },\n  {\n    \"name\": \"@nessra-ui\",\n    \"homepage\": \"https://nessra-ui.vercel.app\",\n    \"url\": \"https://nessra-ui.vercel.app/r/{name}.json\",\n    \"description\": \"Beautiful, accessible components built with Tailwind CSS v4 and Radix UI. Includes auth blocks, data tables, and TanStack Form integration.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 493 512' width='32' height='32'><path fill='var(--foreground)' d='M189.5 96.3c.1-2.7.2-5.3.2-8 0-27.8-5.3-48.8-15.9-63-10.6-14.2-29.6-21.3-56.8-21.3-31.1 0-54.8 12.8-71.1 38.4-16.4 25.6-27.3 60.8-32.7 105.5-2.7 23.4-5 49.5-7 78.1a3073 3073 0 00-4.5 85.4c-1.1 28.3-1.6 54-1.6 76.9 0 44.7 8.4 76.4 25.3 95.2 16.9 18.8 42 28.2 75.2 28.2 27.3 0 48.9-8.4 65-25.3 16.1-16.9 25.7-45 29-84.2 1.1-13.1 2-29.3 2.9-48.6l2.5-58.5c.8-19.6 2-36 3.7-49.1 3.3-25.6 10.1-45.5 20.4-59.7 10.4-14.2 22.9-21.3 37.6-21.3 26.7 0 40.1 22.4 40.1 67 0 14.2-.7 32.2-2 54a6398 6398 0 01-4.5 66.2c-1.6 22.3-2.5 41.7-2.5 58 0 29.4 6.7 52.5 20 69.1 13.4 16.6 32.6 24.9 57.6 24.9 22.4 0 41.7-5 58-15.1 16.4-10.1 28.9-25.2 37.6-45.4 6-13.1 10.9-29.8 14.7-50.3 3.8-20.4 6.8-43.2 9-68.3 2.2-25 3.3-50.4 3.3-76 0-50.7-6.1-94.7-18.4-132-12.3-37.3-30.7-66.2-55.2-86.7C394.9 10.2 364.1 0 327 0c-30 0-58.3 10-85 29.8-34.3 25.5-31.4 38.3-52.5 66.5zM67.2 76c1.8-4.7 7.2-7 11.9-5.2 4.7 1.8 7 7.2 5.2 11.9-4.5 11.5-8.4 24.6-11.6 39.2-3.3 14.7-6 31.3-8.2 49.7-.6 5-5.2 8.6-10.2 8-5-.6-8.6-5.2-8-10.2 2.2-18.7 5-35.8 8.5-51.5 3.5-15.8 7.7-29.7 12.4-41.9zm-25 120.7a9.2 9.2 0 0118.1 2.6l-.8 5.7a9.2 9.2 0 11-18.1-2.6l.8-5.7z'/></svg>\"\n  },\n  {\n    \"name\": \"@nexus-elements\",\n    \"homepage\": \"https://elements.nexus.availproject.org/docs/view-components\",\n    \"description\": \"Ready-made React components for almost any use case. Use as is or customise and go to market fast\",\n    \"url\": \"https://elements.nexus.availproject.org/r/{name}.json\",\n    \"logo\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"222\\\" height=\\\"72\\\" viewBox=\\\"0 0 222 72\\\" fill=\\\"none\\\"><g clip-path=\\\"url(#clip0_2678_500)\\\"><path d=\\\"M56.1227 60.2147L63.14 63.6439C64.8833 64.4957 66.9926 63.7382 67.68 61.9237C69.6891 56.6201 71.2689 50.2837 71.8041 43.7601C72.4151 36.314 71.6599 28.7006 68.7035 22.1125L68.6994 22.1143C68.5679 21.8305 68.4344 21.5474 68.2987 21.2652C67.2815 19.3139 65.3761 16.9205 62.5702 15.3369C59.4075 13.552 55.0139 12.7442 49.2484 14.9038C48.0252 15.362 46.78 15.954 45.5312 16.6603C47.0997 19.3288 48.2234 22.9278 48.3126 27.6733C48.3933 31.9623 47.6975 36.024 46.6315 39.6426L57.1558 43.5501C59.2936 44.3439 60.6933 46.4571 60.2941 48.7023C59.7324 51.8611 58.7428 54.9355 57.3594 57.8501C56.9853 58.6381 56.574 59.4293 56.1227 60.2147Z\\\" fill=\\\"#202224\\\"/><path d=\\\"M21.8652 57.3686C22.7281 57.1088 23.6393 56.7331 24.5957 56.2106C28.6457 53.9979 31.7087 50.3846 33.8862 46.8399C35.3391 44.4748 36.4214 42.1019 37.1526 40.1195C37.443 39.3323 38.3118 38.9052 39.0985 39.1973L55.9179 45.442C57.392 45.9893 58.3207 47.4714 58.0029 49.0114C57.5233 51.335 56.6845 54.1116 55.3586 56.9051C53.2786 61.287 50.0374 65.6341 45.1875 68.3819C41.1801 70.6523 37.0816 71.8235 33.2503 71.9995C29.0759 71.2932 26.3373 69.4813 24.5926 67.0616C22.7454 64.4997 21.9241 61.1329 21.8652 57.3686Z\\\" fill=\\\"#202224\\\"/><path d=\\\"M32.0031 0.322354C42.3172 -0.88462 49.9809 1.39728 55.798 5.50473C58.8889 7.68718 61.4846 10.4037 63.686 13.4328L63.6624 13.4194C59.9076 11.3004 54.828 10.4605 48.4728 12.841C39.9413 16.0368 30.744 25.0421 25.8474 34.2257C22.6714 40.1824 19.5394 49.3163 19.6578 57.3778C19.7171 61.4186 20.595 65.2918 22.8011 68.3514C23.5691 69.4166 24.4875 70.3684 25.5672 71.1872C17.7107 69.2328 7.82516 63.791 2.49764 51.2475C-2.15156 40.3011 0.0590149 28.184 6.08264 18.4449C12.1155 8.69106 21.8578 1.50958 32.0031 0.322354Z\\\" fill=\\\"#202224\\\"/><path d=\\\"M212.111 10.5879H221.111V60.5879H212.111V10.5879Z\\\" fill=\\\"#202224\\\"/><path d=\\\"M197.251 23.3786H206.971V60.5879H197.251V23.3786ZM197.111 10.5879H207.111V19.343H197.111V10.5879Z\\\" fill=\\\"#202224\\\"/><path d=\\\"M166.724 49.1879C166.724 50.6546 167.266 51.7657 168.349 52.5212C169.478 53.2323 170.989 53.5879 172.885 53.5879C175.909 53.5879 178.323 52.7434 180.129 51.0546C181.934 49.3657 182.837 47.1212 182.837 44.3212V42.5879L172.479 44.5212C170.403 44.9212 168.913 45.499 168.011 46.2546C167.153 46.9657 166.724 47.9434 166.724 49.1879ZM157.111 50.4546C157.111 47.3879 158.149 45.0101 160.225 43.3212C162.347 41.5879 165.551 40.3434 169.839 39.5879L182.837 37.2546V36.9879C182.837 34.5434 182.16 32.7212 180.806 31.5212C179.452 30.3212 177.556 29.7212 175.119 29.7212C172.637 29.7212 170.741 30.3212 169.432 31.5212C168.169 32.7212 167.401 34.4101 167.131 36.5879H157.585C157.991 32.0101 159.774 28.5434 162.933 26.1879C166.093 23.7879 170.177 22.5879 175.187 22.5879C180.557 22.5879 184.71 23.899 187.643 26.5212C190.622 29.099 192.111 32.8323 192.111 37.7212V59.7212H183.378L183.175 54.3879C182.047 56.1657 180.264 57.6546 177.827 58.8546C175.435 60.0101 172.659 60.5879 169.5 60.5879C167.83 60.5879 166.228 60.3879 164.694 59.9879C163.204 59.5879 161.895 58.9879 160.767 58.1879C159.639 57.3434 158.736 56.299 158.059 55.0546C157.427 53.7657 157.111 52.2323 157.111 50.4546Z\\\" fill=\\\"#202224\\\"/><path d=\\\"M119.111 23.5879H128.997L138.544 52.0861L148.158 23.5879H158.111L144.57 60.5879H132.585L119.111 23.5879Z\\\" fill=\\\"#202224\\\"/><path d=\\\"M93.7245 49.1879C93.7245 50.6546 94.2661 51.7657 95.3492 52.5212C96.4775 53.2323 97.9895 53.5879 99.885 53.5879C102.909 53.5879 105.323 52.7434 107.129 51.0546C108.934 49.3657 109.837 47.1212 109.837 44.3212V42.5879L99.4788 44.5212C97.4028 44.9212 95.9134 45.499 95.0107 46.2546C94.1532 46.9657 93.7245 47.9434 93.7245 49.1879ZM84.1113 50.4546C84.1113 47.3879 85.1494 45.0101 87.2254 43.3212C89.3467 41.5879 92.551 40.3434 96.8386 39.5879L109.837 37.2546V36.9879C109.837 34.5434 109.16 32.7212 107.806 31.5212C106.452 30.3212 104.556 29.7212 102.119 29.7212C99.6368 29.7212 97.7412 30.3212 96.4324 31.5212C95.1687 32.7212 94.4015 34.4101 94.1307 36.5879H84.5852C84.9914 32.0101 86.7741 28.5434 89.9334 26.1879C93.0926 23.7879 97.1771 22.5879 102.187 22.5879C107.557 22.5879 111.71 23.899 114.643 26.5212C117.622 29.099 119.111 32.8323 119.111 37.7212V59.7212H110.378L110.175 54.3879C109.047 56.1657 107.264 57.6546 104.827 58.8546C102.435 60.0101 99.6594 60.5879 96.5001 60.5879C94.8302 60.5879 93.228 60.3879 91.6935 59.9879C90.2042 59.5879 88.8953 58.9879 87.767 58.1879C86.6387 57.3434 85.7361 56.299 85.0591 55.0546C84.4273 53.7657 84.1113 52.2323 84.1113 50.4546Z\\\" fill=\\\"#202224\\\"/></g><defs><clipPath id=\\\"clip0_2678_500\\\"><rect width=\\\"221.111\\\" height=\\\"71.9995\\\" fill=\\\"white\\\"/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@openstatus\",\n    \"homepage\": \"https://openstatus.dev/registry\",\n    \"url\": \"https://openstatus.dev/r/{name}.json\",\n    \"description\": \"Hand-crafted, accessible components for building beautiful status pages.\",\n    \"logo\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"330\\\" height=\\\"330\\\" viewBox=\\\"0 0 330 330\\\" fill=\\\"none\\\"><g clip-path=\\\"url(#clip0_1543_179)\\\"><mask id=\\\"mask0_1543_179\\\" style=\\\"mask-type:alpha\\\" maskUnits=\\\"userSpaceOnUse\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"330\\\" height=\\\"330\\\"><circle cx=\\\"165\\\" cy=\\\"165\\\" r=\\\"165\\\" fill=\\\"#D9D9D9\\\"/></mask><g mask=\\\"url(#mask0_1543_179)\\\"><path d=\\\"M165 330C256.127 330 330 256.127 330 165C330 73.873 256.127 0 165 0C73.873 0 0 73.873 0 165C0 256.127 73.873 330 165 330Z\\\" fill=\\\"black\\\"/><path d=\\\"M330 96H122V111H330V96Z\\\" fill=\\\"white\\\"/><path d=\\\"M208 219H0V234H208V219Z\\\" fill=\\\"white\\\"/><circle cx=\\\"165\\\" cy=\\\"165\\\" r=\\\"157.5\\\" stroke=\\\"white\\\" stroke-width=\\\"15\\\" fill=\\\"none\\\"/></g></g><defs><clipPath id=\\\"clip0_1543_179\\\"><rect width=\\\"330\\\" height=\\\"330\\\" fill=\\\"white\\\"/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@optics\",\n    \"homepage\": \"https://optics.agusmayol.com.ar\",\n    \"url\": \"https://optics.agusmayol.com.ar/r/{name}.json\",\n    \"description\": \"A design system that distributes re-styled components, utilities, and hooks ready to use.\",\n    \"logo\": \"<svg version='1.2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 300' width='300' height='300'><g id='g3152'><g id='g49864'><path id='path2996' fill='currentColor' d='m148.68 296.79c-1.34-3.39-12.56-30.23-21.59-51.67-1.96-4.65-4.2-10.11-4.99-12.13l-1.42-3.68 3.54-8.66c1.95-4.76 8-19.28 13.45-32.27 5.45-12.99 10.49-25.15 11.2-27.02 1.56-4.11 1-4.93 7.78 11.38 2.85 6.86 8.77 21.03 13.15 31.5 4.39 10.47 8.54 20.44 9.21 22.16l1.24 3.13-3.87 9.21c-2.13 5.06-5.24 12.53-6.92 16.6-1.68 4.07-5.12 12.32-7.63 18.33-2.52 6.01-5.96 14.26-7.64 18.33-1.69 4.07-3.29 7.65-3.55 7.96-0.27 0.31-1.15-1.12-1.96-3.17zm-104.45-43.77c1.3-3.34 22.88-55.17 28.89-69.37 0.2-0.47 1.05-1.06 1.89-1.31 0.84-0.26 3.61-1.34 6.14-2.4 2.53-1.07 10.99-4.56 18.79-7.74 16.99-6.95 26.45-10.85 36.8-15.16 4.25-1.78 7.83-3.12 7.97-2.99 0.19 0.2-12.21 30.82-14.62 36.09-0.65 1.43-2.12 4.94-10.13 24.22l-4.5 10.83-18.75 7.72c-22.15 9.12-23.94 9.85-29.03 11.85-2.15 0.84-4.86 1.96-6.03 2.49-2.1 0.94-13.42 5.57-16.46 6.73-1.4 0.54-1.5 0.44-0.96-0.96zm209.23 0.48c-1.37-0.6-8.23-3.41-15.25-6.26-7.02-2.84-15.95-6.5-19.85-8.12-3.9-1.61-9.81-4.04-13.12-5.39-19.26-7.82-21.12-8.73-21.89-10.67-0.41-1.05-3.51-8.56-6.87-16.71-6.11-14.78-9.39-22.72-15.43-37.36-1.76-4.26-3.87-9.3-4.69-11.2-0.83-1.89-1.39-3.56-1.25-3.69 0.14-0.14 10.12 3.82 22.18 8.8 12.06 4.99 27.67 11.38 34.69 14.22 7.02 2.84 13.31 5.66 13.98 6.27 1.11 1.02 2.6 4.3 9.42 20.85 1.28 3.1 4.31 10.4 6.73 16.21 2.41 5.82 6.09 14.7 8.17 19.74 2.08 5.04 4.29 10.35 4.91 11.8 0.62 1.46 1.04 2.64 0.94 2.62-0.11-0.02-1.31-0.51-2.67-1.11zm-217.82-88.95c-19.37-8.03-35.41-14.78-35.63-15.01-0.23-0.23 5.09-2.65 11.82-5.39 22.65-9.21 29.96-12.21 32.09-13.16 1.17-0.53 5.8-2.45 10.28-4.27 4.49-1.82 9.95-4.08 12.15-5.01 2.19-0.94 4.27-1.7 4.61-1.7 0.59 0 11.67 4.41 22.95 9.14 2.93 1.23 9.63 3.98 14.89 6.12 5.27 2.14 11.65 4.77 14.19 5.84 2.53 1.08 7.88 3.3 11.87 4.95 6.33 2.61 8.87 4.26 6.58 4.26-0.37 0-3.64 1.24-7.26 2.77-3.62 1.52-12.33 5.14-19.35 8.03-7.02 2.9-19.46 8.03-27.65 11.41-8.19 3.38-15.21 6.25-15.6 6.38-0.39 0.13-16.56-6.34-35.94-14.36zm188.04 12.58c-2.54-1.08-18.17-7.59-34.75-14.45-16.57-6.86-30.39-12.73-30.71-13.03-0.52-0.5 8.91-4.59 37.45-16.25 5.46-2.23 13.91-5.71 18.79-7.73 4.87-2.02 10.14-4.15 11.7-4.75l2.83-1.08 10.64 4.39c5.85 2.41 15.58 6.43 21.63 8.93 6.04 2.5 15.93 6.56 21.98 9.02 6.04 2.47 12.43 5.11 14.18 5.88 3.14 1.37 3.16 1.41 1.42 2.11-0.98 0.39-5.92 2.45-10.99 4.58-5.07 2.12-13.69 5.67-19.15 7.88-5.46 2.21-11.68 4.77-13.82 5.69-7.73 3.31-26.18 10.89-26.38 10.84-0.12-0.03-2.29-0.94-4.82-2.03zm-91.48-37.79c-6.04-2.51-17.69-7.29-25.88-10.63-8.19-3.34-16.16-6.62-17.72-7.29-9.36-4.06-15.05-6.35-15.76-6.35-0.45 0-1.04-0.71-1.31-1.58-0.44-1.42-7.51-18.61-15.3-37.19-4.87-11.62-13.37-32.41-13.37-32.7 0-0.26 19.15 7.38 31.55 12.6 3.12 1.31 13.17 5.45 22.34 9.2 9.16 3.75 17.02 7.18 17.46 7.63 0.44 0.44 5.34 11.75 10.89 25.12 5.55 13.38 12.1 29.16 14.55 35.07 2.46 5.91 4.26 10.73 4.01 10.71-0.26-0.02-5.41-2.08-11.46-4.59zm24.11 3.88c0-0.4 1.24-3.65 2.74-7.21 1.51-3.57 7.94-19.02 14.28-34.33 6.35-15.31 11.9-28.22 12.33-28.68 0.43-0.46 5.1-2.56 10.36-4.68 5.27-2.12 11.17-4.55 13.12-5.4 1.95-0.85 9.61-4.02 17.02-7.04 7.41-3.03 17.38-7.1 22.16-9.05 4.77-1.95 8.68-3.35 8.68-3.12 0 0.44-20.28 49.41-26.2 63.26l-3.31 7.75-7.05 2.91c-3.88 1.6-13.43 5.5-21.23 8.68-7.8 3.18-14.82 6.07-15.6 6.43-1.31 0.61-16.17 6.72-23.93 9.85-1.92 0.78-3.37 1.05-3.37 0.63zm-8.49-7.48c-1.26-3.03-6.6-15.82-11.86-28.42-5.27-12.6-10.82-25.9-12.34-29.54-1.52-3.65-2.76-6.99-2.76-7.43 0-0.44 1.87-5.23 4.16-10.64 2.28-5.41 8.89-21.18 14.68-35.03 5.79-13.86 10.74-24.96 11-24.67 0.25 0.28 3.42 7.65 7.03 16.38 3.61 8.72 10.17 24.46 14.57 34.98l8.01 19.12-8.51 20.35c-4.67 11.2-9.56 22.89-10.86 25.99-1.3 3.11-4.02 9.61-6.05 14.45-2.02 4.85-3.93 9.08-4.23 9.4-0.3 0.32-1.58-1.9-2.84-4.94z'/></g></g></svg>\"\n  },\n  {\n    \"name\": \"@oui\",\n    \"homepage\": \"https://oui.mw10013.workers.dev\",\n    \"url\": \"https://oui.mw10013.workers.dev/r/{name}.json\",\n    \"description\": \"React Aria Components with shadcn characteristics.Copy-and-paste react aria components that run side-by-side with shadcn components.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' class='fill-none!' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/></svg>\"\n  },\n  {\n    \"name\": \"@pacekit\",\n    \"homepage\": \"https://ui.pacekit.dev\",\n    \"url\": \"https://ui.pacekit.dev/r/{name}.json\",\n    \"description\": \"Carefully built UI blocks for real apps and dashboards, designed to integrate smoothly from early ideas to production releases.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512' fill='none' viewBox='0 0 512 512'><g clip-path='url(#clip0_832_289)'><path fill='var(--foregorund)' d='M256 0C51.2 0 0 51.2 0 256s51.2 256 256 256 256-51.2 256-256S460.8 0 256 0'/><path stroke='var(--background)' stroke-width='24' d='M381.631 89.102 156.848 226.934c-1.77 1.101-3.439 2.653-4.844 4.505s-2.5 3.94-3.177 6.062c-.673 2.062-.875 4.084-.584 5.83.288 1.658 1.077 2.946 2.257 3.686l98.286 32.478-122.2 137.576a7.9 7.9 0 0 0-1.306 2.72c-.234.895-.22 1.742.04 2.404q.369 1.032 1.341 1.214c.64.125 1.387-.039 2.127-.468l224.795-137.85c1.77-1.102 3.438-2.654 4.844-4.506 1.405-1.852 2.5-3.94 3.177-6.061.666-2.057.864-4.072.571-5.813-.282-1.663-1.066-2.957-2.245-3.704l-87.131-44.529L383.845 94.953a7.9 7.9 0 0 0 1.306-2.72c.233-.895.219-1.741-.04-2.404-.257-.632-.727-1.058-1.341-1.214-.641-.125-1.4.058-2.139.487Z'/></g></svg>\"\n  },\n  {\n    \"name\": \"@pacekit-gsap\",\n    \"homepage\": \"https://gsap.pacekit.dev\",\n    \"url\": \"https://gsap.pacekit.dev/r/{name}.json\",\n    \"description\": \"Animated GSAP components crafted for smooth interaction and rich detail.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512' fill='none' viewBox='0 0 512 512'><g clip-path='url(#clip0_832_289)'><path fill='var(--foregorund)' d='M256 0C51.2 0 0 51.2 0 256s51.2 256 256 256 256-51.2 256-256S460.8 0 256 0'/><path stroke='var(--background)' stroke-width='24' d='M381.631 89.102 156.848 226.934c-1.77 1.101-3.439 2.653-4.844 4.505s-2.5 3.94-3.177 6.062c-.673 2.062-.875 4.084-.584 5.83.288 1.658 1.077 2.946 2.257 3.686l98.286 32.478-122.2 137.576a7.9 7.9 0 0 0-1.306 2.72c-.234.895-.22 1.742.04 2.404q.369 1.032 1.341 1.214c.64.125 1.387-.039 2.127-.468l224.795-137.85c1.77-1.102 3.438-2.654 4.844-4.506 1.405-1.852 2.5-3.94 3.177-6.061.666-2.057.864-4.072.571-5.813-.282-1.663-1.066-2.957-2.245-3.704l-87.131-44.529L383.845 94.953a7.9 7.9 0 0 0 1.306-2.72c.233-.895.219-1.741-.04-2.404-.257-.632-.727-1.058-1.341-1.214-.641-.125-1.4.058-2.139.487Z'/></g></svg>\"\n  },\n  {\n    \"name\": \"@pastecn\",\n    \"homepage\": \"https://pastecn.com\",\n    \"url\": \"https://pastecn.com/r/{name}\",\n    \"description\": \"pastebin + shadcn = pastecn. Paste your code and get a shadcn-compatible registry URL instantly.\",\n    \"logo\": \"<svg width='32' height='32' viewBox='0 0 180 180' fill='none' xmlns='http://www.w3.org/2000/svg'><g clip-path='url(#clip0_2_12)'><mask id='mask0_2_12' style='mask-type:luminance' maskUnits='userSpaceOnUse' x='0' y='0' width='180' height='180'><path d='M180 0H0V180H180V0Z' fill='white'/></mask><g mask='url(#mask0_2_12)'><path d='M143 0H37C16.5655 0 0 16.5655 0 37V143C0 163.435 16.5655 180 37 180H143C163.435 180 180 163.435 180 143V37C180 16.5655 163.435 0 143 0Z' fill='var(--foreground)'/><path d='M85.784 116.76C83.48 116.76 81.4747 116.077 79.768 114.712C78.1467 113.261 77.1653 110.616 76.824 106.776C76.6533 103.875 76.2693 100.675 75.672 97.176C75.16 93.6773 74.4773 90.3493 73.624 87.192C72.7707 84.0347 71.7893 81.56 70.68 79.768C70.0827 78.8293 69.4 78.1467 68.632 77.72C67.9493 77.208 66.8827 76.8667 65.432 76.696C64.4933 76.6107 63.8533 76.312 63.512 75.8C63.1707 75.288 63 74.4773 63 73.368C63 69.8693 63.9387 67.3093 65.816 65.688C67.7787 63.9813 69.9973 63.128 72.472 63.128C75.032 63.128 77.1653 63.9813 78.872 65.688C80.5787 67.3093 81.9013 69.4853 82.84 72.216C83.7787 74.9467 84.4187 77.976 84.76 81.304C85.1867 84.5467 85.4 87.832 85.4 91.16C85.4 92.5253 85.3573 93.976 85.272 95.512C85.272 96.9627 85.272 98.2 85.272 99.224C85.272 100.163 85.4427 100.888 85.784 101.4C86.2107 101.912 86.9787 102.168 88.088 102.168C89.4533 102.168 91.032 101.784 92.824 101.016C94.616 100.163 96.3653 98.968 98.072 97.432C99.864 95.896 101.315 94.104 102.424 92.056C103.619 89.9227 104.216 87.576 104.216 85.016C104.216 83.5653 103.96 82.0293 103.448 80.408C103.021 78.7867 102.296 77.4213 101.272 76.312C100.248 75.2027 99.48 74.3493 98.968 73.752C98.5413 73.0693 98.328 72.3013 98.328 71.448C98.328 69.912 99.0107 68.504 100.376 67.224C101.827 65.944 103.491 64.92 105.368 64.152C107.331 63.384 109.037 63 110.488 63C112.963 63 114.541 64.024 115.224 66.072C115.907 68.12 116.248 70.3813 116.248 72.856C116.248 77.5493 115.395 82.456 113.688 87.576C111.981 92.696 109.677 97.4747 106.776 101.912C103.875 106.349 100.589 109.933 96.92 112.664C93.336 115.395 89.624 116.76 85.784 116.76Z' fill='var(--background)'/></g></g><defs><clipPath id='clip0_2_12'><rect width='180' height='180' fill='white'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@paykit-sdk\",\n    \"homepage\": \"https://www.usepaykit.dev\",\n    \"url\": \"https://www.usepaykit.dev/r/{name}.json\",\n    \"description\": \"Unified payments SDK for builders — handle checkout, billing, and webhooks across Stripe, PayPal, Adyen, and regional gateways with a single integration.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='var(--foreground)' strokeWidth='2' strokeLinecap='round' strokeLinejoin='round'><path d='M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z' /><path d='M20 3v4' /><path d='M22 5h-4' /><path d='M4 17v2' /><path d='M5 18H3' /></svg>\"\n  },\n  {\n    \"name\": \"@plate\",\n    \"homepage\": \"https://platejs.org\",\n    \"url\": \"https://platejs.org/r/{name}.json\",\n    \"description\": \"AI-powered rich text editor for React.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-minus-icon lucide-minus'><path d='M5 12h14'/></svg>\"\n  },\n  {\n    \"name\": \"@prompt-kit\",\n    \"homepage\": \"https://www.prompt-kit.com\",\n    \"url\": \"https://www.prompt-kit.com/c/{name}.json\",\n    \"description\": \"Core building blocks for AI apps. High-quality, accessible, and customizable components for AI interfaces.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='182' height='182' viewBox='0 0 182 182' fill='none'><path fill='currentColor' d='M136.049 66.771c9.257 15.264 23.296 22.4 31.356 15.938s7.091-24.074-2.166-39.337-23.296-22.4-31.357-15.938-7.09 24.074 2.167 39.337M165.22 138.727c-9.257 15.264-23.296 22.4-31.356 15.938s-7.09-24.073 2.167-39.337 23.296-22.4 31.356-15.937c8.06 6.461 7.09 24.073-2.167 39.336M90.646 143.945c17.241 0 31.825 8.082 31.825 18.613 0 10.873-14.188 19.442-31.43 19.442-17.24 0-31.27-8.155-31.27-19.027 0-10.532 13.634-19.028 30.875-19.028M91.042 0c17.241 0 31.825 8.082 31.825 18.613 0 10.872-14.188 19.442-31.43 19.442-17.24 0-31.27-8.156-31.27-19.028C60.167 8.496 73.8 0 91.042 0M16.762 138.727c9.257 15.264 23.295 22.4 31.356 15.938s7.09-24.073-2.167-39.337-23.296-22.4-31.356-15.937c-8.06 6.461-7.09 24.073 2.167 39.336M16.864 43.356c9.257-15.264 23.295-22.4 31.356-15.938s7.09 24.073-2.167 39.337-23.296 22.4-31.356 15.938-7.09-24.074 2.166-39.337'/></svg>\"\n  },\n  {\n    \"name\": \"@prosekit\",\n    \"homepage\": \"https://prosekit.dev\",\n    \"url\": \"https://prosekit.dev/r/{name}.json\",\n    \"description\": \"Powerful and flexible rich text editor for React, Vue, Preact, Svelte, and SolidJS.\",\n    \"logo\": \"<svg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'><path fill-rule='evenodd' clip-rule='evenodd' d='M229.291 70C224.439 36.0771 195.265 10 160 10L80 10C41.3401 10 9.99999 41.3401 9.99999 80L9.99998 160C9.99998 195.265 36.077 224.439 70 229.291L70 140C70 101.34 101.34 70 140 70L229.291 70Z' fill='#9C9C9C' fill-opacity='0.1'/><path fill-rule='evenodd' clip-rule='evenodd' d='M238.588 70C237.532 60.675 235.633 52.6733 232.077 45.2893C224.214 28.9607 211.039 15.786 194.711 7.92253C185.929 3.69358 176.274 1.80894 164.558 0.896722C153.041 -6.85127e-05 138.724 -3.92467e-05 120.427 2.01888e-05L119.573 2.01142e-05C101.275 -4.25206e-05 86.9592 -7.42897e-05 75.4416 0.896714C63.7259 1.80893 54.0707 3.69357 45.2893 7.92251C28.9607 15.7859 15.7859 28.9607 7.92249 45.2893C3.69354 54.0707 1.8089 63.7259 0.896682 75.4416C-0.000109053 86.9593 -7.97866e-05 101.275 -2.03511e-05 119.573L-2.04257e-05 120.427C-8.30605e-05 138.724 -0.00011483 153.041 0.896674 164.558C1.80889 176.274 3.69353 185.929 7.92247 194.711C15.7859 211.039 28.9606 224.214 45.2893 232.077C52.6732 235.633 60.6749 237.532 70 238.588L70 218.436C63.2238 217.518 58.2321 216.112 53.967 214.058C41.7205 208.161 31.8394 198.279 25.9418 186.033C23.2386 180.42 21.6572 173.548 20.8363 163.006C20.007 152.355 20 138.816 20 120C20 101.184 20.007 87.6448 20.8363 76.9941C21.6572 66.4521 23.2386 59.5803 25.9418 53.967C31.8394 41.7205 41.7205 31.8395 53.967 25.9419C59.5803 23.2386 66.4521 21.6572 76.9941 20.8364C87.6447 20.0071 101.184 20 120 20C138.816 20 152.355 20.0071 163.006 20.8364C173.548 21.6572 180.42 23.2386 186.033 25.9419C198.279 31.8395 208.161 41.7205 214.058 53.967C216.112 58.2322 217.518 63.2238 218.436 70L238.588 70Z' fill='#0D74CE'/><rect x='290' y='290' width='220' height='220' rx='70' transform='rotate(-180 290 290)' fill='#EFEFEF' fill-opacity='0.15'/><path fill-rule='evenodd' clip-rule='evenodd' d='M180.427 300L179.573 300C161.275 300 146.959 300 135.442 299.103C123.726 298.191 114.071 296.306 105.289 292.077C88.9606 284.214 75.7859 271.039 67.9225 254.711C63.6935 245.929 61.8089 236.274 60.8967 224.558C59.9999 213.041 59.9999 198.724 60 180.427L60 179.573C59.9999 161.275 59.9999 146.959 60.8967 135.442C61.8089 123.726 63.6935 114.071 67.9225 105.289C75.7859 88.9607 88.9607 75.7859 105.289 67.9225C114.071 63.6936 123.726 61.8089 135.442 60.8967C146.959 59.9999 161.275 60 179.573 60L180.427 60C198.724 60 213.041 59.9999 224.558 60.8967C236.274 61.8089 245.929 63.6936 254.711 67.9225C271.039 75.786 284.214 88.9607 292.077 105.289C296.306 114.071 298.191 123.726 299.103 135.442C300 146.959 300 161.275 300 179.573L300 180.427C300 198.725 300 213.041 299.103 224.558C298.191 236.274 296.306 245.929 292.077 254.711C284.214 271.039 271.039 284.214 254.711 292.078C245.929 296.306 236.274 298.191 224.558 299.103C213.041 300 198.725 300 180.427 300ZM223.006 279.164C233.548 278.343 240.42 276.761 246.033 274.058C258.279 268.161 268.16 258.279 274.058 246.033C276.761 240.42 278.343 233.548 279.164 223.006C279.993 212.355 280 198.816 280 180C280 161.184 279.993 147.645 279.164 136.994C278.343 126.452 276.761 119.58 274.058 113.967C268.161 101.721 258.279 91.8395 246.033 85.9419C240.42 83.2386 233.548 81.6572 223.006 80.8364C212.355 80.0071 198.816 80 180 80C161.184 80 147.645 80.0071 136.994 80.8364C126.452 81.6572 119.58 83.2386 113.967 85.9419C101.72 91.8394 91.8394 101.721 85.9418 113.967C83.2386 119.58 81.6572 126.452 80.8363 136.994C80.007 147.645 80 161.184 80 180C80 198.816 80.007 212.355 80.8363 223.006C81.6571 233.548 83.2386 240.42 85.9418 246.033C91.8394 258.279 101.72 268.161 113.967 274.058C119.58 276.761 126.452 278.343 136.994 279.164C147.645 279.993 161.184 280 180 280C198.816 280 212.355 279.993 223.006 279.164Z' fill='#0090FF'/><path d='M150.417 243.441L209.583 116.558' stroke='#0D74CE' stroke-width='20' stroke-linecap='round'/></svg>\"\n  },\n  {\n    \"name\": \"@phucbm\",\n    \"homepage\": \"https://phucbm.com/components\",\n    \"url\": \"https://phucbm.com/r/{name}.json\",\n    \"description\": \"A collection of modern React UI components with GSAP animations.\",\n    \"logo\": \"<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'><path id='favicon-path' fill-rule='evenodd' clip-rule='evenodd' fill='#179CF9' d='M3.46447 3.46447C2 4.92893 2 7.28595 2 12C2 16.714 2 19.0711 3.46447 20.5355C4.92893 22 7.28595 22 12 22C16.714 22 19.0711 22 20.5355 20.5355C22 19.0711 22 16.714 22 12C22 7.28595 22 4.92893 20.5355 3.46447C19.0711 2 16.714 2 12 2C7.28595 2 4.92893 2 3.46447 3.46447ZM13.4881 6.44591C13.8882 6.55311 14.1256 6.96437 14.0184 7.36447L11.4302 17.0237C11.323 17.4238 10.9117 17.6613 10.5116 17.5541C10.1115 17.4468 9.8741 17.0356 9.98131 16.6355L12.5695 6.97624C12.6767 6.57614 13.088 6.3387 13.4881 6.44591ZM14.9697 8.46967C15.2626 8.17678 15.7374 8.17678 16.0303 8.46967L16.2387 8.67801C16.874 9.3133 17.4038 9.84308 17.7678 10.3202C18.1521 10.8238 18.4216 11.3559 18.4216 12C18.4216 12.6441 18.1521 13.1762 17.7678 13.6798C17.4038 14.1569 16.874 14.6867 16.2387 15.322L16.0303 15.5303C15.7374 15.8232 15.2626 15.8232 14.9697 15.5303C14.6768 15.2374 14.6768 14.7626 14.9697 14.4697L15.1412 14.2981C15.8229 13.6164 16.2797 13.1574 16.5753 12.7699C16.8577 12.3998 16.9216 12.1843 16.9216 12C16.9216 11.8157 16.8577 11.6002 16.5753 11.2301C16.2797 10.8426 15.8229 10.3836 15.1412 9.70191L14.9697 9.53033C14.6768 9.23744 14.6768 8.76257 14.9697 8.46967ZM7.96986 8.46967C8.26275 8.17678 8.73762 8.17678 9.03052 8.46967C9.32341 8.76257 9.32341 9.23744 9.03052 9.53033L8.85894 9.70191C8.17729 10.3836 7.72052 10.8426 7.42488 11.2301C7.14245 11.6002 7.07861 11.8157 7.07861 12C7.07861 12.1843 7.14245 12.3998 7.42488 12.7699C7.72052 13.1574 8.17729 13.6164 8.85894 14.2981L9.03052 14.4697C9.32341 14.7626 9.32341 15.2374 9.03052 15.5303C8.73762 15.8232 8.26275 15.8232 7.96986 15.5303L7.76151 15.322C7.12617 14.6867 6.59638 14.1569 6.23235 13.6798C5.84811 13.1762 5.57861 12.6441 5.57861 12C5.57861 11.3559 5.84811 10.8238 6.23235 10.3202C6.59638 9.84308 7.12617 9.31331 7.76151 8.67801L7.96986 8.46967Z'/></svg>\"\n  },\n  {\n    \"name\": \"@react-aria\",\n    \"homepage\": \"https://react-aria.adobe.com\",\n    \"url\": \"https://react-aria.adobe.com/registry/{name}.json\",\n    \"description\": \"Customizable Tailwind and Vanilla CSS components with adaptive interactions, top-tier accessibility, and internationalization.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='200 206 800 790' fill='none'><path d='M720.67 205.995C867.583 205.995 986.679 325.091 986.68 472.003C986.68 590.753 908.865 691.325 801.446 725.521L979.312 948.055C994.438 966.98 980.963 995 956.736 995H795.612C778.743 995 762.715 987.629 751.734 974.823L697.365 911.421L493.126 653.39C457.134 607.918 489.518 540.979 547.511 540.977L720.67 540.971C758.758 540.971 789.635 510.091 789.635 472.003C789.634 433.915 758.758 403.038 720.67 403.038H429.939C404.955 403.038 388.623 391.886 373.994 373.623L277.349 252.966C262.194 234.045 275.664 205.996 299.905 205.995H720.67Z M396.605 720.706C407.798 705.406 430.443 704.843 442.381 719.568L503.816 797.018H502.786L535.569 838.934C548.074 854.358 549.943 877.191 538.047 893.09L476.638 972.545C465.692 986.707 448.803 995 430.903 995H242.276C218.18 995 204.665 967.248 219.523 948.278L337.992 797.018H337.923L396.605 720.706Z' fill='#000' /></svg>\"\n  },\n  {\n    \"name\": \"@react-bits\",\n    \"homepage\": \"https://reactbits.dev\",\n    \"url\": \"https://reactbits.dev/r/{name}.json\",\n    \"description\": \"A large collection of animated, interactive & fully customizable React components for building memorable websites. From smooth text animations all the way to eye-catching backgrounds, you can find it here.\",\n    \"logo\": \"<svg width='67' height='61' viewBox='0 0 67 61' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M18.3005 0.699779C20.8082 -0.578424 23.588 0.143417 25.9499 1.42244L26.4167 1.68513L28.6023 2.96247L26.0466 7.33259L23.8611 6.05525L23.4987 5.85115C21.7476 4.90719 20.8945 5.06001 20.5993 5.21052L20.5974 5.2115C20.3386 5.34332 19.8126 5.80655 19.5027 7.36482C19.1998 8.88797 19.2017 11.0438 19.6101 13.7545C19.8211 15.1551 20.1361 16.6653 20.5495 18.2613C22.1931 18.0179 23.9047 17.8189 25.6706 17.6724C28.6264 12.8954 31.7867 8.83092 34.8327 5.83064C37.0075 3.68855 39.2282 1.98401 41.3718 0.994701C43.4163 0.0511988 45.7899 -0.409936 47.9665 0.59431L48.1765 0.696849L48.1814 0.698802L48.4763 0.859935C49.9147 1.69909 50.8447 3.04229 51.407 4.50447C51.9991 6.04486 52.2414 7.85058 52.2507 9.75837L52.2634 12.2896L47.2009 12.314L47.1882 9.78279L47.1765 9.22224C47.1288 7.95843 46.9419 6.99866 46.6814 6.32087C46.3936 5.57244 46.0779 5.31117 45.8825 5.20954L45.7644 5.16072C45.4399 5.05237 44.7574 5.00837 43.4939 5.59138C42.0827 6.24264 40.339 7.5129 38.3855 9.43708C36.2937 11.4974 34.0814 14.1905 31.903 17.3746C32.3463 17.3684 32.7917 17.3638 33.239 17.3638C41.8221 17.3638 49.699 18.5193 55.5173 20.4586C58.4131 21.4238 60.9394 22.6293 62.7937 24.0904C64.6193 25.5291 66.1451 27.514 66.1452 30.0201C66.1452 32.1797 65.0015 33.9608 63.5398 35.3121C62.0784 36.6629 60.0921 37.7913 57.8298 38.7252L55.49 39.691L53.5583 35.0113L55.8982 34.0455C57.8546 33.2379 59.2443 32.3883 60.1032 31.5943C60.9614 30.8009 61.0827 30.27 61.0827 30.0201C61.0826 29.7299 60.9082 29.0507 59.6599 28.067C58.4397 27.1056 56.5174 26.1292 53.9167 25.2623C48.7409 23.5372 41.4295 22.4263 33.239 22.4263C31.6757 22.4263 30.1445 22.4671 28.654 22.5445C27.9089 23.8362 27.1787 25.1813 26.4695 26.5728C25.8806 27.7282 25.329 28.8782 24.8103 30.0142C25.1254 30.7045 25.4506 31.401 25.7917 32.0992L26.4734 33.4635V33.4644L27.1775 34.8179C30.7282 41.5073 34.7419 47.0141 38.3855 50.6031C40.3387 52.527 42.0821 53.7973 43.4929 54.4478C44.7565 55.0304 45.4389 54.9853 45.7634 54.8765L45.8806 54.8277C46.1119 54.7092 46.5492 54.3381 46.8669 53.1383C47.184 51.9406 47.2892 50.2198 47.0779 47.9976C46.6831 43.8493 45.2356 38.449 42.7771 32.5592L42.2722 31.3746L41.2614 29.0543L45.9021 27.0318L46.9128 29.3531L47.445 30.5992C50.0387 36.8108 51.6614 42.7201 52.1179 47.5172C52.3603 50.0654 52.2884 52.4438 51.7614 54.4342C51.2685 56.2961 50.2944 58.0892 48.5407 59.1392L48.1794 59.3385L48.1775 59.3394C45.9445 60.4761 43.4838 60.018 41.3728 59.0445C39.2288 58.0558 37.0075 56.3526 34.8327 54.2105C30.5674 50.0092 26.0796 43.7193 22.2439 36.3052C20.9345 39.965 20.0488 43.3625 19.6091 46.2838C19.2012 48.9946 19.1986 51.1508 19.5017 52.6744C19.7732 54.0386 20.2106 54.5639 20.489 54.7623L20.5974 54.8287L20.5993 54.8306L20.6853 54.8668C21.1678 55.0413 22.4748 55.0383 24.9714 53.2681L27.0359 51.8043L29.9646 55.9342L27.8991 57.398C25.0405 59.4249 21.4555 60.9513 18.2976 59.3394V59.3385C16.0661 58.2007 14.9904 55.9417 14.5368 53.6627C14.0761 51.3471 14.148 48.5485 14.6023 45.5299C15.285 40.9934 16.8817 35.6297 19.2741 30.0142C18.41 27.9856 17.6525 25.9888 17.0017 24.0533C15.3928 24.4095 13.9055 24.8146 12.5622 25.2623C9.96118 26.1292 8.03827 27.1055 6.81808 28.067C5.56972 29.0507 5.39534 29.7299 5.39523 30.0201C5.39523 30.4715 5.88581 31.6987 8.77609 33.2105L11.0183 34.3843L8.67258 38.8697L6.42941 37.6968C3.31907 36.0699 0.332733 33.5647 0.332733 30.0201C0.332837 27.5141 1.85868 25.5291 3.6843 24.0904C5.53851 22.6293 8.06485 21.4238 10.9607 20.4586C12.3781 19.9861 13.9181 19.5612 15.5603 19.1871C15.1476 17.5531 14.8269 15.9866 14.6042 14.5084C14.1496 11.4905 14.0765 8.6927 14.5368 6.37751C14.9903 4.0976 16.0669 1.83699 18.3005 0.699779ZM22.2644 20.5894C20.7666 20.5894 19.5516 21.8036 19.5515 23.3013C19.5515 24.7992 20.7665 26.0133 22.2644 26.0133C23.7621 26.013 24.9763 24.7991 24.9763 23.3013C24.9762 21.8037 23.762 20.5896 22.2644 20.5894Z' /></svg>\"\n  },\n  {\n    \"name\": \"@retroui\",\n    \"description\": \"A Neobrutalism styled React + TailwindCSS UI library for building bold, modern web apps. Perfect for any project using Shadcn/ui.\",\n    \"homepage\": \"https://retroui.dev\",\n    \"url\": \"https://retroui.dev/r/{name}.json\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='906' height='853' fill='none' viewBox='0 0 906 853'><path fill='var(--background)' stroke='var(--foreground)' stroke-width='48' d='M506 79.804c207.739 0 376 167.793 376 374.598C882 661.208 713.738 829 506 829S130 661.208 130 454.402c0-206.805 168.261-374.598 376-374.598Z'/><path fill='var(--background)' stroke='var(--foreground)' stroke-width='48' d='M400 24c207.739 0 376 167.793 376 374.599S607.738 773.196 400 773.196 24 605.404 24 398.599C24 191.793 192.261 24 400 24Z'/><path stroke='var(--foreground)' stroke-width='48' d='M0-24h395.852M0-24h395.852' transform='rotate(131.83 299.846 185.446)skewX(.2)'/></svg>\"\n  },\n  {\n    \"name\": \"@reui\",\n    \"homepage\": \"https://reui.io\",\n    \"url\": \"https://reui.io/r/{style}/{name}.json\",\n    \"description\": \"Free & open-source library of 1,000+ components and patterns to 10x your productivity in shadcn projects.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='101' height='100' fill='none' viewBox='0 0 101 100'><g fill='var(--foreground)' clip-path='url(#a)'><path fill-rule='evenodd' d='M67.167 3.846H33.833c-16.285 0-29.487 13.202-29.487 29.487v33.334c0 16.285 13.202 29.487 29.487 29.487h33.334c16.285 0 29.487-13.202 29.487-29.487V33.333c0-16.285-13.202-29.487-29.487-29.487M33.833 0C15.423 0 .5 14.924.5 33.333v33.334C.5 85.077 15.424 100 33.833 100h33.334c18.41 0 33.333-14.924 33.333-33.333V33.333C100.5 14.923 85.576 0 67.167 0z' clip-rule='evenodd' opacity='.2'/><path d='M70.636 34.396a4.698 4.698 0 1 0 0-9.396 4.698 4.698 0 0 0 0 9.396'/><path fill-rule='evenodd' d='M25.672 56.879V29.698a4.698 4.698 0 1 1 9.396 0v27.181a8.725 8.725 0 0 0 8.725 8.725h13.423a8.725 8.725 0 0 0 8.724-8.725V43.59a4.698 4.698 0 1 1 9.396 0v13.29c0 10.008-8.113 18.12-18.12 18.12H43.793c-10.008 0-18.121-8.113-18.121-18.121' clip-rule='evenodd'/></g><defs><clipPath id='a'><path fill='var(--background)' d='M0 0h101v100H0z'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@scrollxui\",\n    \"homepage\": \"https://www.scrollxui.dev\",\n    \"url\": \"https://www.scrollxui.dev/registry/{name}.json\",\n    \"description\": \"ScrollX UI is an open-source React and shadcn-compatible component library for animated, interactive, and customizable user interfaces. It offers motion-driven components that blend seamlessly with modern ShadCN setups.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24' fill='none'><path d='M5.999 17a3 3 0 0 1-1.873-.658a2.98 2.98 0 0 1-1.107-2.011a2.98 2.98 0 0 1 .639-2.206l4-5c.978-1.225 2.883-1.471 4.143-.523l1.674 1.254l2.184-2.729a3 3 0 1 1 4.682 3.747l-4 5c-.977 1.226-2.882 1.471-4.143.526l-1.674-1.256l-2.184 2.729A2.98 2.98 0 0 1 5.999 17M10 8a1 1 0 0 0-.781.374l-4 5.001a1 1 0 0 0-.213.734c.03.266.161.504.369.67a.996.996 0 0 0 1.406-.155l3.395-4.244L13.4 12.8c.42.316 1.056.231 1.381-.176l4-5.001a1 1 0 0 0 .213-.734a1 1 0 0 0-.369-.67a.996.996 0 0 0-1.406.156l-3.395 4.242L10.6 8.2A1 1 0 0 0 10 8m9 13H5a1 1 0 1 1 0-2h14a1 1 0 1 1 0 2' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@spell\",\n    \"homepage\": \"https://spell.sh\",\n    \"url\": \"https://spell.sh/r/{name}.json\",\n    \"description\": \"Beautiful, sophisticated UI components designed for modern React and Tailwind CSS applications.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 262 278' fill='none'><path d='M57.6541 65.6418C58.8281 64.8226 60.4465 65.2097 61.2647 66.3823C64.3285 70.7734 68.3982 73.8437 73.2472 75.6378L73.3016 75.6581L92.6744 82.6771C95.575 83.7281 97.8595 86.0054 98.9135 88.896L105.957 108.209L105.978 108.263C107.777 113.094 111.016 117.262 115.261 120.205C119.507 123.148 124.556 124.727 129.729 124.727C134.902 124.727 139.951 123.148 144.197 120.205C148.443 117.262 151.681 113.094 153.48 108.263L153.521 108.155L160.545 88.8977C161.599 86.0081 163.882 83.7316 166.782 82.6805C176.525 79.148 187.434 82.5762 193.381 91.039L223.505 133.91C223.516 133.925 223.524 133.942 223.534 133.957C228.045 140.476 226.441 149.411 219.921 153.96L117.032 225.751C111.613 229.533 110.798 237.692 115.213 243.976C119.63 250.261 127.604 252.292 133.024 248.51L239.241 174.706C245.791 170.156 254.802 171.748 259.381 178.266C263.973 184.801 262.368 193.81 255.801 198.374L149.632 272.144C132.954 283.78 108.421 277.536 94.8322 258.199C93.5324 256.349 92.381 254.445 91.3741 252.506C91.3172 252.396 91.1589 252.398 91.1049 252.509C91.055 252.612 90.9129 252.623 90.8473 252.53L3.77438 128.615C-2.83414 119.21 -0.539816 106.247 8.89813 99.6622L21.4057 90.9343C21.4336 90.9148 21.472 90.9217 21.4914 90.9496C21.513 90.9807 21.5574 90.985 21.5848 90.9588C21.9663 90.5947 22.3802 90.2545 22.8263 89.9432L57.6541 65.6418Z' fill='var(--foreground)'/><path d='M184.781 55.435C184.793 57.0601 184.298 58.6488 183.363 59.9801C182.428 61.3115 181.1 62.3194 179.564 62.8638L160.243 69.8673C152.51 72.6702 146.42 78.741 143.609 86.4472L136.586 105.703C136.021 107.22 135.004 108.528 133.672 109.451C132.34 110.375 130.756 110.87 129.133 110.87C127.51 110.87 125.926 110.375 124.594 109.451C123.262 108.528 122.245 107.22 121.68 105.703L114.657 86.4455C111.846 78.7374 105.754 72.6654 98.0192 69.8629L78.7019 62.8638C77.1805 62.3009 75.8684 61.2874 74.9418 59.9594C74.0152 58.6314 73.5186 57.0526 73.5186 55.435C73.5186 53.8174 74.0152 52.2386 74.9418 50.9106C75.8684 49.5826 77.1805 48.5691 78.7019 48.0062L98.0192 41.0071C105.754 38.2046 111.846 32.1326 114.657 24.4245L121.68 5.16662C122.245 3.65013 123.262 2.34224 124.594 1.41864C125.926 0.49505 127.51 0 129.133 0C130.756 0 132.34 0.49505 133.672 1.41864C135.004 2.34224 136.021 3.65013 136.586 5.16662L143.613 24.4281C146.424 32.1342 152.515 38.2044 160.248 41.0066L179.564 48.0062C181.1 48.5506 182.428 49.5585 183.363 50.8899C184.298 52.2213 184.793 53.8099 184.781 55.435Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@square-ui\",\n    \"homepage\": \"https://square.lndev.me\",\n    \"url\": \"https://square.lndev.me/registry/{name}.json\",\n    \"description\": \"Collection of beautifully crafted open-source layouts UI built with shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='84' height='84' viewBox='0 0 600 600' fill='none'><path d='M0 0 C4.485335 0.8439797 9.02601373 1.31791393 13.55664062 1.85302734 C17.02148438 2.38037109 17.02148438 2.38037109 20.4296875 3.26660156 C26.21161754 4.73427424 32.08152096 5.7038773 37.95507812 6.72802734 C39.803843 7.05316566 39.803843 7.05316566 41.68995667 7.38487244 C44.94934106 7.95710576 48.20919992 8.52653925 51.46923828 9.09503174 C53.45612469 9.44237117 55.44260735 9.79192796 57.42895508 10.14233398 C61.27046971 10.8197711 65.11265351 11.49327284 68.95507812 12.16552734 C70.71796425 12.47648094 70.71796425 12.47648094 72.51646423 12.79371643 C77.36635123 13.63638728 82.19146717 14.44136888 87.08813477 14.95629883 C89.92179575 15.26180867 92.30924523 15.64828147 95.02148438 16.38037109 C97.86517042 17.14771495 100.58921703 17.59919477 103.52148438 17.88037109 C107.14786604 18.22810632 110.48012224 18.96444798 113.99023438 19.91162109 C116.1715302 20.41499705 118.29381373 20.66675884 120.52148438 20.88037109 C124.14786604 21.22810632 127.48012224 21.96444798 130.99023438 22.91162109 C133.1715302 23.41499705 135.29381373 23.66675884 137.52148438 23.88037109 C141.14786604 24.22810632 144.48012224 24.96444798 147.99023438 25.91162109 C150.1715302 26.41499705 152.29381373 26.66675884 154.52148438 26.88037109 C158.14786604 27.22810632 161.48012224 27.96444798 164.99023438 28.91162109 C167.1715302 29.41499705 169.29381373 29.66675884 171.52148438 29.88037109 C175.14786604 30.22810632 178.48012224 30.96444798 181.99023438 31.91162109 C184.1715302 32.41499705 186.29381373 32.66675884 188.52148438 32.88037109 C192.14786604 33.22810632 195.48012224 33.96444798 198.99023438 34.91162109 C201.1715302 35.41499705 203.29381373 35.66675884 205.52148438 35.88037109 C209.14786604 36.22810632 212.48012224 36.96444798 215.99023438 37.91162109 C218.1715302 38.41499705 220.29381373 38.66675884 222.52148438 38.88037109 C226.14786604 39.22810632 229.48012224 39.96444798 232.99023438 40.91162109 C235.1715302 41.41499705 237.29381373 41.66675884 239.52148438 41.88037109 C242.45375172 42.16154741 245.17779833 42.61302724 248.02148438 43.38037109 C250.76878314 44.11982086 253.37558972 44.56498159 256.20898438 44.81787109 C262.27982915 45.42079746 268.11496632 46.89374183 274.02148438 48.38037109 C275.76558594 48.79609375 275.76558594 48.79609375 277.54492188 49.22021484 C296.75165146 54.15969387 308.46806035 65.04226145 318.37304688 81.64599609 C319.3748509 83.52724639 320.2218337 85.40547624 321.02148438 87.38037109 C321.31796875 88.04166016 321.61445312 88.70294922 321.91992188 89.38427734 C327.01042426 102.81106114 324.18391606 118.70209699 321.40185547 132.35888672 C320.55787577 136.84422172 320.08394154 141.38490045 319.54882812 145.91552734 C319.07065888 149.05727641 318.36339468 152.05626079 317.56323242 155.12866211 C316.47587014 159.64814941 315.74367427 164.23802704 314.95898438 168.81787109 C314.78560547 169.80335938 314.61222656 170.78884766 314.43359375 171.80419922 C313.53443351 177.00279233 312.7588747 182.17353726 312.26977539 187.42749023 C312.00973055 189.47281834 311.55891517 191.39128031 311.02148438 193.38037109 C310.25414052 196.22405714 309.8026607 198.94810375 309.52148438 201.88037109 C309.17374915 205.50675276 308.43740749 208.83900895 307.49023438 212.34912109 C306.98685841 214.53041692 306.73509663 216.65270045 306.52148438 218.88037109 C306.17374915 222.50675276 305.43740749 225.83900895 304.49023438 229.34912109 C303.98685841 231.53041692 303.73509663 233.65270045 303.52148438 235.88037109 C303.17374915 239.50675276 302.43740749 242.83900895 301.49023438 246.34912109 C300.98685841 248.53041692 300.73509663 250.65270045 300.52148438 252.88037109 C300.17374915 256.50675276 299.43740749 259.83900895 298.49023438 263.34912109 C297.98685841 265.53041692 297.73509663 267.65270045 297.52148438 269.88037109 C297.17374915 273.50675276 296.43740749 276.83900895 295.49023438 280.34912109 C294.98685841 282.53041692 294.73509663 284.65270045 294.52148438 286.88037109 C294.17374915 290.50675276 293.43740749 293.83900895 292.49023438 297.34912109 C291.98685841 299.53041692 291.73509663 301.65270045 291.52148438 303.88037109 C291.17374915 307.50675276 290.43740749 310.83900895 289.49023438 314.34912109 C288.98685841 316.53041692 288.73509663 318.65270045 288.52148438 320.88037109 C288.17374915 324.50675276 287.43740749 327.83900895 286.49023438 331.34912109 C285.98685841 333.53041692 285.73509663 335.65270045 285.52148438 337.88037109 C285.17374915 341.50675276 284.43740749 344.83900895 283.49023438 348.34912109 C282.98685841 350.53041692 282.73509663 352.65270045 282.52148438 354.88037109 C282.17374915 358.50675276 281.43740749 361.83900895 280.49023438 365.34912109 C279.98685841 367.53041692 279.73509663 369.65270045 279.52148438 371.88037109 C279.24030805 374.81263844 278.78882823 377.53668505 278.02148438 380.38037109 C277.28203461 383.12766986 276.83687388 385.73447644 276.58398438 388.56787109 C275.98105801 394.63871587 274.50811364 400.47385303 273.02148438 406.38037109 C272.74433594 407.54310547 272.4671875 408.70583984 272.18164062 409.90380859 C267.80484454 426.9225951 258.70617329 439.16013876 243.82128906 448.34619141 C218.6442807 462.81306708 188.86159822 454.89947873 162.02148438 449.38037109 C150.72088104 447.15260657 139.42451069 445.02002194 128.02148438 443.38037109 C115.35954422 441.54446263 115.35954422 441.54446263 109.15820312 439.88037109 C104.18000281 438.71545402 99.07750835 438.11412514 94.02148438 437.38037109 C81.34668417 435.54094431 81.34668417 435.54094431 76.77148438 434.31787109 C73.21409368 433.42852342 69.87445629 433.01010813 66.24023438 432.66162109 C63.42881302 432.30524374 60.78411055 431.58615911 58.05273438 430.84912109 C55.87143855 430.34574513 53.74915502 430.09398335 51.52148438 429.88037109 C47.89510271 429.53263587 44.56284651 428.79629421 41.05273438 427.84912109 C38.87143855 427.34574513 36.74915502 427.09398335 34.52148438 426.88037109 C30.89510271 426.53263587 27.56284651 425.79629421 24.05273438 424.84912109 C21.87143855 424.34574513 19.74915502 424.09398335 17.52148438 423.88037109 C13.9030187 423.53339493 10.57770944 422.80223933 7.07617188 421.85302734 C4.04526649 421.15580386 0.99909353 420.8906548 -2.09570312 420.62646484 C-3.97851562 420.38037109 -3.97851562 420.38037109 -5.97851562 419.38037109 C-8.30706188 419.03399984 -10.64166869 418.72790988 -12.97851562 418.44287109 C-19.75563032 417.58382296 -26.4166241 416.47590977 -33.06054688 414.88037109 C-39.00663949 413.46831199 -44.97117209 412.67575672 -51.03710938 411.94287109 C-54.80386705 411.40529616 -58.48957636 410.70067017 -62.21411133 409.93359375 C-65.20952804 409.33414005 -68.21221171 408.79690727 -71.22070312 408.26708984 C-72.30738281 408.07050781 -73.3940625 407.87392578 -74.51367188 407.67138672 C-76.73064074 407.27077656 -78.94942085 406.88005695 -81.16992188 406.49951172 C-93.25763371 404.27508664 -103.29990042 399.96891989 -112.97851562 392.38037109 C-114.46738281 391.21828125 -114.46738281 391.21828125 -115.98632812 390.03271484 C-126.80436138 380.44336161 -134.10223903 365.27123734 -135.25195312 350.98193359 C-135.73664701 332.00430361 -131.78797561 312.90625359 -127.97851562 294.38037109 C-125.75075111 283.07976776 -123.61816647 271.78339741 -121.97851562 260.38037109 C-120.14260716 247.71843094 -120.14260716 247.71843094 -118.47851562 241.51708984 C-117.31359855 236.53888953 -116.71226967 231.43639507 -115.97851562 226.38037109 C-114.13908884 213.70557089 -114.13908884 213.70557089 -112.91601562 209.13037109 C-112.02666795 205.5729804 -111.60825266 202.23334301 -111.25976562 198.59912109 C-110.90338827 195.78769974 -110.18430364 193.14299727 -109.44726562 190.41162109 C-108.94388966 188.23032527 -108.69212788 186.10804174 -108.47851562 183.88037109 C-108.1307804 180.25398942 -107.39443874 176.92173323 -106.44726562 173.41162109 C-105.94388966 171.23032527 -105.69212788 169.10804174 -105.47851562 166.88037109 C-105.1307804 163.25398942 -104.39443874 159.92173323 -103.44726562 156.41162109 C-102.94388966 154.23032527 -102.69212788 152.10804174 -102.47851562 149.88037109 C-102.13153946 146.26190542 -101.40038387 142.93659616 -100.45117188 139.43505859 C-99.75394839 136.40415321 -99.48879933 133.35798025 -99.22460938 130.26318359 C-98.97851562 128.38037109 -98.97851562 128.38037109 -97.97851562 126.38037109 C-97.63214437 124.05182484 -97.32605441 121.71721803 -97.04101562 119.38037109 C-96.18196749 112.6032564 -95.0740543 105.94226262 -93.47851562 99.29833984 C-92.06645652 93.35224723 -91.27390125 87.38771463 -90.54101562 81.32177734 C-90.00344069 77.55501967 -89.2988147 73.86931035 -88.53173828 70.14477539 C-87.93228458 67.14935868 -87.3950518 64.14667501 -86.86523438 61.13818359 C-86.66865234 60.05150391 -86.47207031 58.96482422 -86.26953125 57.84521484 C-85.86892109 55.62824598 -85.47820148 53.40946586 -85.09765625 51.18896484 C-82.00137214 34.36349814 -74.57798914 19.77675501 -60.79492188 9.31005859 C-56.34585689 6.26173945 -51.87533681 3.64308763 -46.97851562 1.38037109 C-46.10195312 0.96658203 -45.22539062 0.55279297 -44.32226562 0.12646484 C-30.26593067 -5.53950164 -14.41452692 -2.93642123 0 0 Z M-39.97851562 46.38037109 C-43.77403517 52.06445138 -45.00178543 57.15334786 -46.05664062 63.85693359 C-46.22887146 64.87822861 -46.40110229 65.89952362 -46.57855225 66.95176697 C-47.14083886 70.30104693 -47.68442362 73.65309195 -48.22851562 77.00537109 C-48.62148225 79.36102001 -49.01603477 81.71640487 -49.41210938 84.0715332 C-50.21938912 88.87441829 -51.021437 93.67813231 -51.8203125 98.48242188 C-53.31183955 107.41132393 -54.89395119 116.32341364 -56.49252319 125.2336731 C-57.31543215 129.82103525 -58.13304406 134.40934178 -58.95117188 138.99755859 C-59.11551224 139.91845779 -59.2798526 140.83935699 -59.44917297 141.78816223 C-60.69569534 148.77827933 -61.93113352 155.77031319 -63.16210938 162.76318359 C-63.34649063 163.81052673 -63.53087189 164.85786987 -63.72084045 165.93695068 C-64.09669929 168.07222148 -64.47253841 170.20749576 -64.84835815 172.34277344 C-67.27468945 186.1277684 -69.70505713 199.91179485 -72.19726562 213.68505859 C-72.38009598 214.69548218 -72.56292633 215.70590576 -72.751297 216.74694824 C-73.12115691 218.79033087 -73.49105541 220.83370652 -73.86099243 222.8770752 C-74.04415009 223.88878784 -74.22730774 224.90050049 -74.41601562 225.94287109 C-74.59860931 226.95136108 -74.781203 227.95985107 -74.96932983 228.99890137 C-78.57831208 248.95480054 -82.03263612 268.93644795 -85.44116211 288.92749023 C-85.83374467 291.22299493 -86.22640319 293.51848664 -86.61914062 295.81396484 C-86.80904068 296.93051956 -86.99894073 298.04707428 -87.19459534 299.19746399 C-88.19484605 305.0275005 -89.2498916 310.84143228 -90.38671875 316.64648438 C-90.73449371 318.44195457 -90.73449371 318.44195457 -91.08929443 320.2736969 C-91.52975497 322.53143431 -91.97996928 324.78730308 -92.44244385 327.04063416 C-94.31403226 336.66390381 -96.27379802 347.61576575 -90.97851562 356.38037109 C-84.71164416 363.8658009 -77.76325169 366.0011749 -68.50195312 367.45849609 C-66.96994263 367.71684235 -66.96994263 367.71684235 -65.40698242 367.98040771 C-62.0577446 368.54266874 -58.70574271 369.08624423 -55.35351562 369.63037109 C-52.99859753 370.02332857 -50.64394508 370.41788114 -48.28955078 370.81396484 C-43.48741293 371.62133554 -38.68444188 372.42344056 -33.88085938 373.22216797 C-24.93272235 374.71641637 -16.00031285 376.29568741 -7.07028198 377.894104 C-4.32389724 378.38567241 -1.57714935 378.87516771 1.16967773 379.36425781 C10.74916794 381.07153535 20.32567207 382.79498255 29.90039062 384.52880859 C34.00319097 385.27135156 38.10605739 386.01352817 42.20898438 386.75537109 C43.23439331 386.94082489 44.25980225 387.12627869 45.31628418 387.31735229 C63.89515917 390.67361456 82.49685053 393.88944685 101.10507202 397.07843018 C117.25911276 399.84844274 133.39905003 402.68191594 149.52148438 405.63037109 C151.30394295 405.95538877 153.08641347 406.28034097 154.86889648 406.60522461 C162.38875043 407.97735948 169.90699507 409.35720112 177.42111206 410.76043701 C180.53763816 411.34009973 183.65580202 411.91056026 186.77441406 412.47888184 C188.19528584 412.74001546 189.61542451 413.00518119 191.03466797 413.27502441 C207.94862678 416.78896904 207.94862678 416.78896904 224.02148438 412.38037109 C231.25443294 406.49308738 233.52170881 398.79545602 234.88085938 389.89990234 C235.10584358 388.53682449 235.10584358 388.53682449 235.33537292 387.14620972 C235.65721391 385.18770004 235.97321293 383.22822302 236.28390503 381.26791382 C236.95284195 377.04909361 237.65080326 372.83521174 238.34654236 368.6207428 C238.70713578 366.43408867 239.06622163 364.24718544 239.42384338 362.06004333 C241.17230601 351.37844591 243.05075383 340.72190141 244.95898438 330.06787109 C245.29094753 328.2072109 245.62281529 326.34653368 245.95458984 324.48583984 C247.6808866 314.81543355 249.42364266 305.14804208 251.17382812 295.48193359 C251.91509611 291.38564854 252.65594613 287.28928813 253.39648438 283.19287109 C253.67452911 281.65543747 253.67452911 281.65543747 253.95819092 280.08694458 C257.3149738 261.50528483 260.53206634 242.90091874 263.72055054 224.28973389 C266.464316 208.28273961 269.27790823 192.29161191 272.20898438 176.31787109 C274.70034411 162.70817174 277.176222 149.09596271 279.54824829 135.46487427 C279.85872756 133.6872318 280.17208703 131.91008947 280.48861694 130.1335144 C284.12204496 113.39132242 284.12204496 113.39132242 280.02148438 97.38037109 C274.12337988 90.13412842 266.4169332 87.87742182 257.50585938 86.52099609 C256.59476913 86.37105194 255.68367889 86.22110779 254.74497986 86.06661987 C252.78226253 85.74488192 250.81859021 85.42892589 248.85409546 85.1182251 C243.53193669 84.2759403 238.21686669 83.39049119 232.90039062 82.51318359 C231.81301102 82.33508148 230.72563141 82.15697937 229.6053009 81.97348022 C219.28253162 80.27729778 208.99540295 78.40760481 198.70898438 76.50537109 C181.50126606 73.33592374 164.26749514 70.33386862 147.02148438 67.38037109 C130.00509042 64.4658125 113.00084834 61.50367612 96.02148438 58.38037109 C76.34008413 54.76092555 56.62525678 51.34659551 36.90039062 47.97265625 C26.30052068 46.15854083 15.70249204 44.34179764 5.12304688 42.41162109 C4.32144135 42.2662088 3.51983582 42.12079651 2.69393921 41.97097778 C-0.8599168 41.32605551 -4.41204582 40.67399995 -7.96142578 40.00488281 C-20.1333681 37.78720355 -31.16854779 35.90365259 -39.97851562 46.38037109 Z ' fill='var(--foreground)' transform='translate(205.978515625,73.61962890625)'/><path d='M0 0 C3.75531436 3.13935246 6.26560303 6.91582664 8.92016602 10.99145508 C10.13196309 12.7860248 11.34421555 14.58028709 12.55688477 16.37426758 C13.16580566 17.28724609 13.77472656 18.20022461 14.40209961 19.14086914 C17.2813961 23.42794116 20.25921027 27.64442344 23.23266602 31.86645508 C24.39985756 33.53275421 25.56652313 35.19942188 26.73266602 36.86645508 C27.31016602 37.69145508 27.88766602 38.51645508 28.48266602 39.36645508 C61.73266601 86.86645507 61.73266601 86.86645507 63.4831543 89.3671875 C64.64814965 91.03144336 65.81318862 92.69566869 66.97827148 94.35986328 C69.92087013 98.56316431 72.86267506 102.76701689 75.80297852 106.97192383 C76.98783264 108.66596342 78.17272822 110.35997401 79.35766602 112.05395508 C80.22512451 113.29435547 80.22512451 113.29435547 81.11010742 114.55981445 C84.41699727 119.28474193 87.73904027 123.99847622 91.07470703 128.703125 C108.51442872 153.31426911 108.51442872 153.31426911 107.23266602 163.86645508 C105.55535791 169.29027381 103.20047179 173.64536226 98.48266602 176.92895508 C92.50756691 180.07905423 86.94126875 180.61760698 80.48266602 178.67895508 C72.87942885 176.04598221 69.1203582 170.24452878 64.79516602 163.86645508 C63.54666634 162.05381852 62.29796277 160.24132238 61.04907227 158.42895508 C60.41501465 157.5034082 59.78095703 156.57786133 59.12768555 155.62426758 C56.19157953 151.3513671 53.21130189 147.10976082 50.23266602 142.86645508 C49.06575869 141.1999569 47.8990927 139.5332897 46.73266602 137.86645508 C46.15516602 137.04145508 45.57766602 136.21645508 44.98266602 135.36645508 C11.73266601 87.86645508 11.73266601 87.86645508 9.98217773 85.36572266 C8.81718238 83.7014668 7.65214342 82.03724147 6.48706055 80.37304688 C3.5444619 76.16974585 0.60265698 71.96589327 -2.33764648 67.76098633 C-3.52250061 66.06694674 -4.70739619 64.37293614 -5.89233398 62.67895508 C-6.47063965 61.85202148 -7.04894531 61.02508789 -7.64477539 60.1730957 C-10.95166524 55.44816822 -14.27370824 50.73443394 -17.609375 46.02978516 C-34.83678676 21.71825535 -34.83678676 21.71825535 -33.76733398 10.86645508 C-32.41255193 5.13609313 -30.114723 1.7204969 -25.26733398 -1.63354492 C-16.55441668 -7.00452134 -8.19256365 -5.72774006 0 0 Z ' fill='var(--foreground)' transform='translate(263.767333984375,213.133544921875)'/></svg>\"\n  },\n  {\n    \"name\": \"@systaliko-ui\",\n    \"homepage\": \"https://systaliko-ui.vercel.app\",\n    \"url\": \"https://systaliko-ui.vercel.app/r/{name}.json\",\n    \"description\": \"UI component library, Designed for flexibility, built for customization, and crafted to scale across variants and use cases.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='256' height='256' viewBox='0 0 256 256' fill='none'><rect width='256' height='256' rx='36.34' fill='url(#paint0_radial_778_219)'/><path d='M95.1844 111.183H74.0907C66.7166 111.183 60.7384 117.161 60.7382 124.535V178.72C60.7383 186.094 66.7165 192.072 74.0907 192.072H128.275C135.65 192.072 141.628 186.094 141.628 178.72V165.366H161.366V178.72C161.366 196.995 146.551 211.81 128.275 211.811H74.0907C55.8155 211.81 41.0001 196.996 40.9999 178.72V124.535C41.0001 106.26 55.8154 91.4445 74.0907 91.4443H95.1844V111.183ZM114.923 111.183V132.275C114.923 139.65 120.901 145.628 128.275 145.628H141.628V165.366H128.275C110 165.366 95.1847 150.551 95.1844 132.275V111.183H114.923ZM182.46 45C200.736 45.0003 215.551 59.8155 215.551 78.0908V132.275C215.55 150.551 200.735 165.366 182.46 165.366H161.366V145.628H182.46C189.834 145.628 195.812 139.65 195.812 132.275V78.0908C195.812 70.7165 189.834 64.7386 182.46 64.7383H128.275C120.901 64.7383 114.923 70.7165 114.923 78.0908V91.4443H95.1844V78.0908C95.1845 59.8153 110 45.0001 128.275 45H182.46ZM128.275 91.4443C146.551 91.4445 161.366 106.26 161.366 124.535V145.628H141.628V124.535C141.628 117.161 135.65 111.183 128.275 111.183H114.923V91.4443H128.275Z' fill='white'/><defs><radialGradient id='paint0_radial_778_219' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(234.5 14) rotate(112.372) scale(279.812)'><stop stop-color='#38332E'/><stop offset='1' stop-color='#0B0A09'/></radialGradient></defs></svg>\"\n  },\n  {\n    \"name\": \"@roiui\",\n    \"homepage\": \"https://roiui.com\",\n    \"url\": \"https://roiui.com/r/{name}.json\",\n    \"description\": \"Roi UI is a library that offers UI components and blocks built with Base UI primitives. Some blocks and components use motion (framer). Everything is open-source and will be forever.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' id='Layer_2' data-name='Layer 2' viewBox='0 0 463.07 463.07'><defs><style>.cls-1{fill:var(--muted);stroke:var(--foreground);stroke-miterlimit:10;stroke-width:12px}</style></defs><g id='Layer_1-2' data-name='Layer 1'><path d='M459.07 231.54c0 41.45-11.07 80.3-30.44 113.76H231.54c6.42 0 12.72-.52 18.86-1.57 53.85-8.99 94.91-55.81 94.91-112.2s-41.05-103.21-94.91-112.2c-6.14-1.05-12.45-1.57-18.86-1.57V4c26.62 0 52.15 4.58 75.88 12.97a225 225 0 0 1 37.89 17.47 227.1 227.1 0 0 1 56.88 46.63 225 225 0 0 1 26.44 36.7c19.37 33.47 30.44 72.31 30.44 113.77Z' class='cls-1'/><path d='M345.31 231.54c0 56.38-41.05 103.21-94.91 112.2a113 113 0 0 1-18.86 1.57c-62.82 0-113.77-50.95-113.77-113.76s50.95-113.77 113.77-113.77c6.42 0 12.72.52 18.86 1.57 53.85 8.99 94.91 55.81 94.91 112.2Z' class='cls-1'/><path d='M231.53 4v113.77c-62.82 0-113.77 50.95-113.77 113.77V345.3H4V231.54c0-41.46 11.07-80.3 30.44-113.77 19.97-34.54 48.78-63.35 83.32-83.33C151.24 15.08 190.08 4 231.53 4Z' class='cls-1'/></g></svg>\"\n  },\n  {\n    \"name\": \"@slide-cn\",\n    \"homepage\": \"https://slide-cn.com\",\n    \"url\": \"https://slide-cn.com/r/{name}.json\",\n    \"description\": \"A component library to build slide decks using code.\",\n    \"logo\": \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'><path d='M0 0h512v512H0z' fill='#222222'/><path d='M252.128 99.616q3.552 0.016 7.088 -0.016c25.168 -0.032 50.576 6.56 69.776 23.408l2.304 1.824c13.152 10.784 20.256 26.096 24.704 42.176l0.608 1.952c0.56 2.96 0.384 6.032 0.384 9.056h-44l-4 -13.008c-9.216 -15.072 -21.792 -24.688 -38.992 -29.088 -18.672 -3.984 -39.104 -2.016 -55.328 8.176 -10.352 7.328 -16.416 17.424 -18.688 29.904a64 64 0 0 0 -0.368 8.256v2.224c0.272 12.272 5.104 21.984 13.872 30.448 7.488 6.224 16.16 10.16 25.216 13.456l2.48 0.912c8.336 2.992 16.8 5.456 25.312 7.856 57.472 16.224 57.472 16.224 74.464 31.856l2.352 2.112c5.664 5.344 9.84 11.104 13.648 17.888l1.216 2.096c8.48 16.576 8.72 41.984 3.184 59.376 -7.6 19.216 -18.224 33.824 -35.392 45.52l-2.304 1.6c-12.512 8.128 -26.96 12.4 -41.664 14.4l-2.016 0.288c-14.816 1.888 -31.424 2.144 -45.984 -1.28l-2.096 -0.464c-25.472 -5.632 -49.136 -18.096 -63.776 -40.416A78.4 78.4 0 0 1 152 328h43.008l3.008 12c4.624 14.112 13.488 25.12 26.56 32.304 16.8 7.728 40.816 9.12 58.304 3.024 15.056 -6.368 26.592 -13.152 33.2 -28.864 4.48 -12.976 4.608 -26.848 -1.072 -39.472a48 48 0 0 0 -7.008 -9.008l-1.952 -2.08c-15.568 -15.136 -40 -19.376 -60.176 -25.072 -67.12 -18.928 -67.12 -18.928 -81.84 -44.56a88 88 0 0 1 -7.408 -66.32c3.52 -10.608 8.864 -20.672 16.4 -28.976l1.904 -2.192c9.968 -10.736 22.496 -17.712 36.096 -22.816l2.304 -0.928c12.496 -4.64 25.632 -5.568 38.816 -5.472' fill='#FDFDFD'/><path d='M511.008 471.008h1.008v41.008h-41.008a112 112 0 0 1 9.696 -4.192c13.968 -5.824 22.432 -16.112 28.304 -29.824a64 64 0 0 0 2 -7.008' fill='#000000'/><path d='M0 471.008c1.616 3.216 2.896 6.336 4.192 9.696 5.808 13.968 16.096 22.432 29.808 28.304 2.336 0.816 4.576 1.456 7.008 2v1.008H0z' fill='#000000'/><path d='M471.008 0h41.008v41.008a112 112 0 0 1 -4.192 -9.68c-5.824 -14 -16.112 -22.464 -29.824 -28.32a64 64 0 0 0 -7.008 -2z' fill='#000000'/><path d='M0 0h41.008a112 112 0 0 1 -9.68 4.192C17.328 10 8.864 20.288 3.008 34a64 64 0 0 0 -2 7.008H0z' fill='#000000'/></svg>\"\n  },\n  {\n    \"name\": \"@satoriui\",\n    \"homepage\": \"https://satoriui.site\",\n    \"url\": \"https://satoriui.site/r/{name}.json\",\n    \"description\": \"A comprehensive suite of high-fidelity interaction components. It offers motion-driven components that designed with motion-react and tailwindcss, that blends seamlessly.\",\n    \"logo\": \"<svg width=\\\"512\\\" height=\\\"512\\\" viewBox=\\\"0 0 512 512\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g clip-path=\\\"url(#clip0_12_3)\\\"><path d=\\\"M0 0C168.96 0 337.92 0 512 0C512 168.96 512 337.92 512 512C343.04 512 174.08 512 0 512C0 343.04 0 174.08 0 0Z\\\" fill=\\\"var(--foreground)\\\"/><path style=\\\"transform-box: fill-box; transform-origin: center; transform: scale(1, 0.9);\\\" d=\\\"M252.438 70.875C255 73 255 73 256 75C256.117 77.0305 256.17 79.0649 256.193 81.0986C256.209 82.3805 256.225 83.6623 256.242 84.983C256.253 86.3897 256.264 87.7964 256.273 89.2031C256.279 89.9109 256.284 90.6187 256.29 91.348C256.316 95.0961 256.336 98.8441 256.35 102.592C256.363 105.691 256.391 108.788 256.432 111.886C256.482 115.63 256.506 119.373 256.513 123.117C256.52 124.541 256.535 125.965 256.559 127.389C256.758 139.931 256.758 139.931 253.589 143.84C249.438 147.303 246.353 148.213 241.062 149.188C225.746 152.635 212.498 162.269 203.715 175.184C194.935 189.603 191.293 206.448 194.407 223.189C198.637 240.256 208.14 254.666 223 264C230.638 268.537 238.037 271.027 246.652 272.848C250.538 274.185 252.331 275.928 255 279C255.33 279.33 255.66 279.66 256 280C256.12 281.992 256.17 283.989 256.193 285.985C256.209 287.267 256.225 288.549 256.242 289.87C256.253 291.282 256.264 292.694 256.273 294.105C256.279 294.814 256.284 295.523 256.29 296.253C256.316 300.008 256.336 303.762 256.35 307.517C256.367 311.39 256.411 315.262 256.462 319.134C256.496 322.115 256.508 325.096 256.513 328.078C256.52 329.505 256.535 330.932 256.559 332.358C256.758 344.928 256.758 344.928 253.654 348.88C248.64 352.885 243.095 351.594 237 351C200.866 346.731 167.705 325.984 145 298C131.964 280.715 123.165 261.059 118.458 239.966C118.158 238.676 117.824 237.394 117.456 236.122C115.305 228.146 115.605 219.885 115.625 211.688C115.658 196.775 116.457 185.035 120 173C130.552 135.46 155.195 105.313 186.875 86.8125C201.49 78.7205 216.412 73.277 232.875 70.25C241.043 68.823 246.857 67.8313 252.438 70.875Z\\\" fill=\\\"var(--background)\\\"/><path style=\\\"transform-box: fill-box; transform-origin: center; transform: scale(1, 0.9);\\\" d=\\\"M317.438 174.219C351.124 191.062 377.956 220.117 390 256C397.099 342.013 381.718 377.524 353.67 405.376C339.427 419.224 322.351 428.68 304 436C290.081 441.214 273.349 445.717 262 443C258.864 440.449 257.193 438.943 256.372 434.927C257.109 371.35 258.409 369.693 261 367C286.824 359.823 300.572 350.274 310 336C318.283 321.916 321.75 304.619 318.094 288.531C315.937 280.279 313.017 272.962 308 266C297.673 251.321 282.274 242.726 267.438 240.125C263.426 239.272 260.951 237.951 258 235C257.107 166.32 258.317 164.674 261 162C276.795 156.735 302.764 167.682 317.438 174.219Z\\\" fill=\\\"var(--background)\\\"/></g><defs><clipPath id=\\\"clip0_12_3\\\"><rect width=\\\"512\\\" height=\\\"512\\\" fill=\\\"white\\\"/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@solaceui\",\n    \"homepage\": \"https://www.solaceui.com\",\n    \"url\": \"https://www.solaceui.com/r/{name}.json\",\n    \"description\": \"Production-ready and tastefully crafted sections, animated components, and full-page templates for Next.js, Tailwind CSS & Motion\",\n    \"logo\": \"<svg width='310' height='310' viewBox='0 0 310 310' fill='none' xmlns='http://www.w3.org/2000/svg'><g clip-path='url(#clip0_30_2)'><path d='M310 146H115.502C91.3738 146 71.8145 113.317 71.8145 73C71.8145 32.6832 91.3738 3.1937e-05 115.502 2.84124e-05L310 0V146Z' fill='var(--foreground)'/><path d='M0 164H194.498C218.626 164 238.185 196.683 238.185 237C238.185 277.317 218.626 310 194.498 310H0V164Z' fill='var(--foreground)'/></g><defs><clipPath id='clip0_30_2'><rect width='310' height='310' fill='white'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@shadcnblocks\",\n    \"homepage\": \"https://shadcnblocks.com\",\n    \"url\": \"https://shadcnblocks.com/r/{name}.json\",\n    \"description\": \"A registry with hundreds of extra blocks for shadcn ui.\",\n    \"logo\": \"<svg width='78' height='90' viewBox='0 0 78 90' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M46.7305 4.50982L43.6252 2.72955V17.49L46.7305 19.2924V4.50982Z'/><path d='M52.9854 8.14811L49.8765 6.34937V21.1287L52.9854 22.9127V8.14811Z'/><path d='M59.1814 11.7684L56.0762 9.9881V24.7485L59.1814 26.5325V11.7684Z'/><path d='M6.04712 26.0179L9.15238 27.8019V17.246L6.04712 19.0262V26.0179Z'/><path d='M2.93874 24.2184V20.8651L0 22.5491L2.93874 24.2184Z'/><path d='M77.889 22.5895L74.7985 20.8056V24.3883L71.6895 26.1685V19.0253L68.6027 17.245V27.9123L65.4937 29.6962V15.3874L62.3293 13.548V28.3305L65.1162 29.959V59.8636L64.9645 59.9561L62.3293 58.4424V61.4921L59.1833 63.2724V56.5474L56.078 54.7079V65.0743L52.9875 66.9101V52.8681L49.8785 51.0324V68.6945L46.7325 70.4748V49.1932L43.6273 47.3537V72.2547L40.5183 74.1127V45.5172L39.0008 44.5105L39.06 14.8159L40.5183 15.7079V0.947497L38.8898 0L37.5795 0.736529V15.5562L34.4372 17.3364V2.57602L31.3283 4.35629V19.1199L28.2193 20.9186V6.1953L25.1325 7.97557V22.6989L21.968 24.4829V9.77771L18.8775 11.6135V26.2807L15.7685 28.1202V13.393L12.3005 15.4397V29.578L12.7743 29.8444L12.889 59.9528L15.7685 61.6405V58.2872L18.8775 56.4477V63.4799L21.968 65.2786V54.6082L25.1325 52.7132V67.0591L28.2193 68.8986V50.8772L31.3283 49.0377V70.6786L34.4372 72.481V47.1797L37.5795 45.3439V74.3168L39.0008 75.1533V75.0941V89.969L77.9445 67.477L78 22.5853L77.889 22.5895Z' /></svg>\"\n  },\n  {\n    \"name\": \"@shadcndesign\",\n    \"homepage\": \"https://www.shadcndesign.com\",\n    \"url\": \"https://shadcndesign-free.vercel.app/r/{name}.json\",\n    \"description\": \"A growing collection of high-quality blocks and themes for shadcn/ui.\",\n    \"logo\": \"<svg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'><g clip-path='url(#clip0_22651_9557)'><g clip-path='url(#clip1_22651_9557)'><rect x='10' y='10' width='60' height='60' fill='black' stroke='#4497F7' stroke-width='5'/><rect x='2.5' y='2.5' width='15' height='15' fill='white' stroke='#4497F7' stroke-width='5'/><rect x='62.5' y='2.5' width='15' height='15' fill='white' stroke='#4497F7' stroke-width='5'/><rect x='2.5' y='62.5' width='15' height='15' fill='white' stroke='#4497F7' stroke-width='5'/><rect x='62.5' y='62.5' width='15' height='15' fill='white' stroke='#4497F7' stroke-width='5'/><path d='M23.75 56.25L56.25 23.75' stroke='white' stroke-width='5'/><path d='M43.75 56.25L56.25 43.75' stroke='white' stroke-width='5'/></g></g><defs><clipPath id='clip0_22651_9557'><rect width='80' height='80' fill='white'/></clipPath><clipPath id='clip1_22651_9557'><rect width='80' height='80' fill='white'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@shadcnmaps\",\n    \"homepage\": \"https://shadcnmaps.com\",\n    \"url\": \"https://shadcnmaps.com/r/{name}.json\",\n    \"description\": \"Beautiful map components powered by pure SVG.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='46.876' height='46.876' viewBox='0 0 12.403 12.403'><path d='M6.201 0A6.21 6.21 0 0 0 0 6.201a6.21 6.21 0 0 0 6.201 6.202A6.21 6.21 0 0 0 12.403 6.2 6.21 6.21 0 0 0 6.2 0m2.977 3.99L7.616 9.573a.62.62 0 0 1-.552.452l-.045.002a.62.62 0 0 1-.567-.368L5.31 7.095 2.743 5.951a.62.62 0 0 1 .086-1.164l5.585-1.562a.62.62 0 0 1 .765.765z'/></svg>\"\n  },\n  {\n    \"name\": \"@shadcnstore\",\n    \"homepage\": \"https://www.shadcnstore.com\",\n    \"url\": \"https://shadcnstore.com/r/{name}.json\",\n    \"description\": \"A growing collection of shadcn/ui components, blocks, and templates for building modern web apps.\",\n    \"logo\": \"<svg class='text-primary' xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 32 32' height='32' width='32'><path d='M26 24.75C26.4142 24.75 26.75 24.4142 26.75 24C26.75 23.5858 26.4142 23.25 26 23.25V24.75ZM26 23.25H11V24.75H26V23.25ZM8.75 21V15H7.25V21H8.75ZM11 23.25C9.75736 23.25 8.75 22.2426 8.75 21H7.25C7.25 23.0711 8.92893 24.75 11 24.75V23.25Z' fill='currentColor'></path><path d='M1.5 3.25C1.08579 3.25 0.75 3.58579 0.75 4C0.75 4.41421 1.08579 4.75 1.5 4.75V3.25ZM1.5 4.75H6V3.25H1.5V4.75ZM7.25 6V21H8.75V6H7.25ZM6 4.75C6.69036 4.75 7.25 5.30964 7.25 6H8.75C8.75 4.48122 7.51878 3.25 6 3.25V4.75Z' fill='currentColor'></path><path d='M22 21.75C22.4142 21.75 22.75 21.4142 22.75 21C22.75 20.5858 22.4142 20.25 22 20.25V21.75ZM22 20.25H11V21.75H22V20.25ZM8.75 18V12H7.25V18H8.75ZM11 20.25C9.75736 20.25 8.75 19.2426 8.75 18H7.25C7.25 20.0711 8.92893 21.75 11 21.75V20.25Z' fill='currentColor'></path><path d='M27.2057 19.754C27.0654 20.1438 26.6357 20.346 26.246 20.2057C25.8562 20.0654 25.654 19.6357 25.7943 19.246L27.2057 19.754ZM30.0361 9.67744L29.3305 9.4234L29.3305 9.4234L30.0361 9.67744ZM25.7943 19.246L29.3305 9.4234L30.7418 9.93148L27.2057 19.754L25.7943 19.246ZM28.1543 7.75L8 7.75V6.25L28.1543 6.25V7.75ZM29.3305 9.4234C29.6237 8.60882 29.0201 7.75 28.1543 7.75V6.25C30.059 6.25 31.3869 8.13941 30.7418 9.93148L29.3305 9.4234Z' fill='currentColor'></path><path d='M13.5 21.75C13.0858 21.75 12.75 21.4142 12.75 21C12.75 20.5858 13.0858 20.25 13.5 20.25V21.75ZM26.7111 19.009L27.4174 19.2613L27.4174 19.2613L26.7111 19.009ZM13.5 20.25H23.8858V21.75H13.5V20.25ZM26.0048 18.7568L27.7937 13.7477L29.2063 14.2523L27.4174 19.2613L26.0048 18.7568ZM23.8858 20.25C24.8367 20.25 25.6849 19.6522 26.0048 18.7568L27.4174 19.2613C26.8843 20.7537 25.4706 21.75 23.8858 21.75V20.25Z' fill='currentColor'></path><path d='M21.1694 10.5806L14.5651 17.1849' stroke='currentColor' stroke-width='1.5' stroke-linecap='round'></path><path d='M22.1694 14.5806L18.5632 18.1868' stroke='currentColor' stroke-width='1.5' stroke-linecap='round'></path><circle cx='13.1' cy='26.1' r='1.7' stroke='currentColor' stroke-width='1.2'></circle><circle cx='22.1' cy='26.1' r='1.7' stroke='currentColor' stroke-width='1.2'></circle></svg>\"\n  },\n  {\n    \"name\": \"@shadcn-map\",\n    \"homepage\": \"https://shadcn-map.vercel.app\",\n    \"url\": \"http://shadcn-map.vercel.app/r/{name}.json\",\n    \"description\": \"A map component for shadcn/ui. Built with Leaflet and React Leaflet.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-map-icon lucide-map fill-none!'><path d='M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z'/><path d='M15 5.764v15'/><path d='M9 3.236v15'/></svg>\"\n  },\n  {\n    \"name\": \"@shadcn-studio\",\n    \"homepage\": \"https://shadcnstudio.com\",\n    \"url\": \"https://shadcnstudio.com/r/{name}.json\",\n    \"description\": \"An open-source set of shadcn/ui components, blocks, and templates with a powerful theme generator.\",\n    \"logo\": \"<svg width='33' height='33' viewBox='0 0 33 33' fill='none' xmlns='http://www.w3.org/2000/svg'><rect x='0.5' y='0.5' width='32' height='32' rx='16' fill='var(--forgraound)'></rect><path d='M16.5993 7.50488V13.4044C16.5993 15.3441 15.0268 16.9166 13.0871 16.9166H7.35156' stroke='var(--background)' stroke-width='1.95122'></path><path d='M16.7562 26.3286L16.7562 20.4291C16.7562 18.4893 18.3286 16.9169 20.2684 16.9169L26.0039 16.9169' stroke='var(--background)' stroke-width='1.95122'></path><line x1='23.7326' y1='10.0919' x2='19.696' y2='14.081' stroke='var(--background)' stroke-width='1.95122'></line><line x1='13.7385' y1='20.0567' x2='9.70187' y2='24.0459' stroke='var(--background)' stroke-width='1.95122'></line><line x1='13.5426' y1='13.8681' x2='9.52961' y2='9.85513' stroke='var(--background)' stroke-width='1.95122'></line><line x1='23.689' y1='24.0419' x2='19.6761' y2='20.029' stroke='var(--background)' stroke-width='1.95122'></line></svg>\"\n  },\n  {\n    \"name\": \"@waves-cn\",\n    \"homepage\": \"https://waves-cn.vercel.app\",\n    \"url\": \"https://waves-cn.vercel.app/r/{name}.json\",\n    \"description\": \"A collection of wave players and waveform components built with wavesurfer.js and shadcn/ui.\",\n    \"logo\": \"<svg width='43' height='48' viewBox='0 0 44 48' fill='none' xmlns=' http://www.w3.org/2000/svg'><path fill-rule='evenodd' clip-rule='evenodd' d='M23.2 8.047a7 7 0 0 0-.737-3.12 7 7 0 0 1-.723-2.686L21.6 0l-.14 2.24a7 7 0 0 1-.723 2.686A7 7 0 0 0 20 8.047v31.906a7 7 0 0 0 .737 3.12 7 7 0 0 1 .723 2.686L21.6 48l.14-2.24a7 7 0 0 1 .723-2.686 7 7 0 0 0 .737-3.121zm-8.737.08a7 7 0 0 1 .737 3.12v25.505a7 7 0 0 1-.737 3.122 7 7 0 0 0-.723 2.685L13.6 44.8l-.14-2.24a7 7 0 0 0-.723-2.686A7 7 0 0 1 12 36.752V11.248c0-1.084.252-2.152.737-3.122a7 7 0 0 0 .723-2.685L13.6 3.2l.14 2.24a7 7 0 0 0 .723 2.686m-3.263 6.32a7 7 0 0 0-.737-3.12A7 7 0 0 1 9.74 8.64L9.6 6.4l-.14 2.24a7 7 0 0 1-.723 2.686A7 7 0 0 0 8 14.448v19.106c0 1.083.252 2.152.737 3.12a7 7 0 0 1 .723 2.686l.14 2.24.14-2.24a7 7 0 0 1 .723-2.687 7 7 0 0 0 .737-3.12zm-4.737 3.28a7 7 0 0 1 .737 3.12v6.305a7 7 0 0 1-.737 3.121 7 7 0 0 0-.723 2.686L5.6 35.2l-.14-2.24a7 7 0 0 0-.723-2.687A7 7 0 0 1 4 27.153v-6.305a7 7 0 0 1 .737-3.122 7 7 0 0 0 .723-2.685L5.6 12.8l.14 2.24c.058.935.304 1.849.723 2.686M3.2 24v.047-.095zm-3.2.047V24a7 7 0 0 0 .737 3.073 7 7 0 0 1 .723 2.686L1.6 32l.14-2.24a7 7 0 0 1 .723-2.687c.478-.954.73-2.006.737-3.073a7 7 0 0 0-.737-3.073 7 7 0 0 1-.723-2.686L1.6 16l-.14 2.24a7 7 0 0 1-.723 2.687A7 7 0 0 0 0 24v-.047zm18.463-19.12a7 7 0 0 1 .737 3.12v31.906a7 7 0 0 1-.737 3.12 7 7 0 0 0-.723 2.686L17.6 48l-.14-2.24a7 7 0 0 0-.723-2.686A7 7 0 0 1 16 39.953V8.047c0-1.083.252-2.152.737-3.12a7 7 0 0 0 .723-2.686L17.6 0l.14 2.24a7 7 0 0 0 .723 2.686m8 0a7 7 0 0 1 .737 3.12v31.906a7 7 0 0 1-.737 3.12 7 7 0 0 0-.723 2.686L25.6 48l-.14-2.24a7 7 0 0 0-.723-2.686A7 7 0 0 1 24 39.953V8.047c0-1.083.252-2.152.737-3.12a7 7 0 0 0 .723-2.686L25.6 0l.14 2.24a7 7 0 0 0 .723 2.686m4.737 6.32a7 7 0 0 0-.737-3.12 7 7 0 0 1-.723-2.686L29.6 3.2l-.14 2.24a7 7 0 0 1-.723 2.686A7 7 0 0 0 28 11.248v25.504c0 1.084.252 2.152.737 3.122a7 7 0 0 1 .723 2.685l.14 2.241.14-2.24a7 7 0 0 1 .723-2.686c.485-.97.737-2.038.737-3.122zm3.263.08a7 7 0 0 1 .737 3.12v19.106a7 7 0 0 1-.737 3.12 7 7 0 0 0-.723 2.686L33.6 41.6l-.14-2.24a7 7 0 0 0-.723-2.687 7 7 0 0 1-.737-3.12V14.448c0-1.084.252-2.152.737-3.122a7 7 0 0 0 .723-2.685L33.6 6.4l.14 2.24c.058.935.304 1.849.723 2.686m4.737 9.52a7 7 0 0 0-.737-3.12 7 7 0 0 1-.723-2.686l-.14-2.24-.14 2.24a7 7 0 0 1-.723 2.686A7 7 0 0 0 36 20.848v6.305c0 1.083.252 2.152.737 3.12a7 7 0 0 1 .723 2.686l.14 2.241.14-2.24a7 7 0 0 1 .723-2.687 7 7 0 0 0 .737-3.12zm4 3.153v.047-.095zM40 24a7 7 0 0 0 .737 3.073 7 7 0 0 1 .723 2.686L41.6 32l.14-2.24a7 7 0 0 1 .723-2.687c.478-.954.73-2.006.737-3.073a7 7 0 0 0-.737-3.073 7 7 0 0 1-.723-2.686L41.6 16l-.14 2.24a7 7 0 0 1-.723 2.687A7 7 0 0 0 40 24m0 0v-.047.095z' class='ccustom' fill='#394149'/></svg>\"\n  },\n  {\n    \"name\": \"@shadcn-editor\",\n    \"homepage\": \"https://shadcn-editor.vercel.app\",\n    \"url\": \"https://shadcn-editor.vercel.app/r/{name}.json\",\n    \"description\": \"Accessible, Customizable, Rich Text Editor. Made with Lexical and Shadcn/UI. Open Source. Open Code.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' class='fill-none!' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-baseline-icon lucide-baseline'><path d='M4 20h16'/><path d='m6 16 6-12 6 12'/><path d='M8 12h8'/></svg>\"\n  },\n  {\n    \"name\": \"@shadcnui-blocks\",\n    \"homepage\": \"https://shadcnui-blocks.com\",\n    \"url\": \"https://shadcnui-blocks.com/r/{name}.json\",\n    \"description\": \"A collection of premium, production-ready shadcn/ui blocks, components and templates.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200' fill='none'><rect width='200' height='200' rx='36' fill='black'/><path d='M100 170.833C139.12 170.833 170.833 139.12 170.833 100C170.833 60.8798 139.12 29.1667 100 29.1667C60.8798 29.1667 29.1666 60.8798 29.1666 100C29.1666 139.12 60.8798 170.833 100 170.833Z' stroke='white' stroke-width='12' stroke-linecap='round' stroke-linejoin='round'/><path d='M116.363 71.6667L157.021 142.075' stroke='white' stroke-width='12' stroke-linecap='round' stroke-linejoin='round'/><path d='M83.6375 71.6667H164.954' stroke='white' stroke-width='12' stroke-linecap='round' stroke-linejoin='round'/><path d='M67.275 100L107.933 29.5917' stroke='white' stroke-width='12' stroke-linecap='round' stroke-linejoin='round'/><path d='M83.6375 128.333L42.9791 57.925' stroke='white' stroke-width='12' stroke-linecap='round' stroke-linejoin='round'/><path d='M116.362 128.333H35.0458' stroke='white' stroke-width='12' stroke-linecap='round' stroke-linejoin='round'/><path d='M132.725 100L92.0667 170.408' stroke='white' stroke-width='12' stroke-linecap='round' stroke-linejoin='round'/></svg>\"\n  },\n  {\n    \"name\": \"@shadcnuikit\",\n    \"homepage\": \"https://shadcnuikit.com\",\n    \"url\": \"https://shadcnuikit.com/r/{name}.json\",\n    \"description\": \"Launch your projects faster with admin dashboards, website templates, components, blocks, and pre-built real-world examples.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' version='1.0' width='300.000000pt' height='300.000000pt' viewBox='0 0 300.000000 300.000000' preserveAspectRatio='xMidYMid meet'><g transform='translate(0.000000,300.000000) scale(0.100000,-0.100000)' fill='var(--foreground)' stroke='none'> <path d='M0 1500 l0 -1500 1500 0 1500 0 0 1500 0 1500 -1500 0 -1500 0 0 -1500z m647 1060 c31 -12 1882 -1856 1914 -1908 54 -85 1 -209 -97 -228 -91 -17 -30 -71 -1057 954 -537 537 -954 962 -963 981 -56 117 76 248 203 201z m845 -3 c15 -7 263 -247 552 -534 451 -449 527 -528 536 -563 16 -58 -1 -110 -50 -154 -35 -31 -47 -36 -91 -36 -27 0 -62 6 -77 14 -15 8 -263 251 -551 540 l-525 525 -4 58 c-3 49 0 64 20 93 41 62 124 86 190 57z m856 -1 c15 -8 70 -59 123 -113 116 -118 133 -154 104 -229 -31 -80 -136 -128 -203 -91 -49 28 -212 191 -233 233 -34 72 -8 151 65 195 37 22 106 25 144 5z m-1683 -857 c17 -10 262 -251 547 -536 548 -550 539 -539 524 -618 -18 -96 -141 -155 -221 -107 -16 11 -265 252 -552 538 -465 461 -523 523 -529 557 -14 82 27 156 101 182 45 16 86 11 130 -16z m-28 -830 c32 -12 218 -191 239 -231 31 -59 9 -146 -47 -187 -35 -26 -93 -37 -136 -26 -30 7 -226 194 -249 237 -60 115 69 254 193 207z'/> </g> </svg>\"\n  },\n  {\n    \"name\": \"@shadcraft\",\n    \"homepage\": \"https://free.shadcraft.com\",\n    \"url\": \"https://free.shadcraft.com/r/{name}.json\",\n    \"description\": \"A collection of polished shadcn/ui components and marketing blocks built to production standards. Fast to use, easy to extend, and ready for any modern web project.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='400px' height='400px' viewBox='0 0 400 400'><path d='M 0 200 C 0 89.542969 89.542969 0 200 0 C 310.457031 0 400 89.542969 400 200 C 400 310.457031 310.457031 400 200 400 C 89.542969 400 0 310.457031 0 200 Z M 0 200' fill='var(--foreground)' /><path d='M 154.226562 198.65625 C 160.011719 192.871094 169.382812 192.871094 175.167969 198.65625 C 180.949219 204.441406 180.949219 213.804688 175.167969 219.589844 L 117.78125 276.976562 C 111.996094 282.761719 102.609375 282.773438 96.824219 276.988281 C 91.042969 271.203125 91.054688 261.828125 96.835938 256.042969 Z M 227.558594 226.816406 C 233.320312 221.007812 242.695312 220.960938 248.503906 226.722656 C 254.3125 232.484375 254.34375 241.859375 248.582031 247.667969 L 219.550781 276.941406 L 218.425781 277.976562 C 212.628906 282.738281 204.050781 282.429688 198.605469 277.03125 C 193.164062 271.632812 192.785156 263.054688 197.503906 257.214844 L 198.515625 256.089844 Z M 261.566406 191.140625 C 267.351562 185.359375 276.726562 185.359375 282.511719 191.140625 C 288.296875 196.925781 288.296875 206.300781 282.511719 212.085938 L 281.957031 212.648438 L 280.832031 213.671875 C 275.015625 218.414062 266.4375 218.070312 261.015625 212.648438 C 255.589844 207.226562 255.25 198.648438 259.992188 192.832031 L 261.015625 191.703125 Z M 212.820312 142.027344 C 218.667969 136.308594 228.042969 136.410156 233.761719 142.257812 C 239.484375 148.105469 239.378906 157.480469 233.53125 163.199219 L 211.667969 184.59375 L 210.542969 185.605469 C 204.671875 190.285156 196.089844 189.847656 190.726562 184.363281 C 185.363281 178.882812 185.117188 170.300781 189.921875 164.53125 L 190.957031 163.417969 Z M 246.964844 105.765625 C 252.746094 99.984375 262.121094 99.988281 267.910156 105.765625 C 273.695312 111.550781 273.695312 120.925781 267.910156 126.710938 L 267.324219 127.296875 L 266.207031 128.320312 C 260.390625 133.066406 251.8125 132.71875 246.390625 127.296875 C 240.96875 121.875 240.613281 113.296875 245.355469 107.480469 L 246.390625 106.351562 Z M 246.964844 105.765625' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@smoothui\",\n    \"homepage\": \"https://smoothui.dev\",\n    \"url\": \"https://smoothui.dev/r/{name}.json\",\n    \"description\": \"A collection of beautifully crafted motion components built with React, Framer Motion, and TailwindCSS. Designed to elevate microinteractions, each component focuses on smooth animations, subtle feedback, and delightful UX. Perfect for designers and developers who want to add refined motion to their interfaces — copy, paste, and make your UI come alive.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512' fill='none'><path d='M329.205 6.05469C331.396 0.985458 337.281 -1.34888 342.351 0.84082L355.644 6.58301C356.018 6.74496 356.377 6.93032 356.722 7.13086L439.729 42.9902C444.799 45.1805 447.134 51.066 444.944 56.1357L439.202 69.4277C437.012 74.4976 431.126 76.8315 426.056 74.6416L351.12 42.2705L330.918 89.0332C376.141 114.344 408.567 159.794 416.052 213.239H429.756V278.752H397.765L397.27 282.408L386.144 369.047C383.266 392.108 380.937 415.238 377.957 438.284C376.66 448.318 375.865 459.058 373.398 468.858C372.384 471.375 371.168 473.657 369.527 475.817C353.072 497.475 312.68 504.556 287.003 508.111C273.789 510.037 260.45 510.964 247.098 510.888C217.287 510.485 162.338 502.749 138.37 484.41C133.049 480.338 128.118 475.314 126.057 468.793C124.143 462.739 123.772 455.672 122.899 449.391L117.649 411.719L99.9443 278.752H67.7119V213.239H80.5723C92.1014 130.913 162.808 67.5599 248.312 67.5596C266.066 67.5596 283.183 70.2933 299.265 75.3594L329.205 6.05469ZM298.618 347.714C290.008 349.185 284.699 357.994 277.604 362.6C260.758 373.533 233.532 371.369 217.451 359.928C211.198 355.48 206.551 346.709 197.798 348.069C194.209 348.628 190.796 350.598 188.722 353.611C186.781 356.428 186.276 360.028 186.956 363.345C188.187 369.351 193.243 374.041 197.507 378.105C213.771 391.889 237.722 397.757 258.754 395.938C277.382 394.327 294.852 386.112 306.932 371.629C309.792 368.2 311.798 364.372 311.3 359.786C310.918 356.283 309.287 352.397 306.453 350.188C304.098 348.351 301.526 347.879 298.618 347.714ZM187.43 188.242C177.489 188.242 169.43 196.301 169.43 206.242V305.578C169.43 315.519 177.489 323.578 187.43 323.578H194.529C204.47 323.578 212.529 315.519 212.529 305.578V206.242C212.529 196.301 204.47 188.242 194.529 188.242H187.43ZM302.939 188.242C292.998 188.242 284.94 196.301 284.939 206.242V305.578C284.939 315.519 292.998 323.578 302.939 323.578H310.04C319.981 323.578 328.04 315.519 328.04 305.578V206.242C328.04 196.301 319.981 188.242 310.04 188.242H302.939Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@spectrumui\",\n    \"homepage\": \"https://ui.spectrumhq.in\",\n    \"url\": \"https://ui.spectrumhq.in/r/{name}.json\",\n    \"description\": \"A modern component library built with shadcn/ui and Tailwind CSS. Spectrum UI offers elegant, responsive components and smooth animations designed for high-quality interfaces.\",\n    \"logo\": \"<svg width='36' height='41' viewBox='0 0 36 41' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M17.641 33.4291L11.563 27.3511C7.26395 23.052 0 26.091 0 32.169V40.1001H35.2821V15.7881L17.641 33.4291Z' fill='var(--foreground)'/><path d='M17.641 6.67098L23.719 12.749C28.0181 17.0481 35.2821 14.0091 35.2821 7.93105V0H0V24.312L17.641 6.67098Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@supabase\",\n    \"homepage\": \"https://supabase.com/ui\",\n    \"url\": \"https://supabase.com/ui/r/{name}.json\",\n    \"description\": \"A collection of React components and blocks built on the shadcn/ui library that connect your front-end to your Supabase back-end via a single command.\",\n    \"logo\": \"<svg role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><title>Supabase</title><path d='M11.9 1.036c-.015-.986-1.26-1.41-1.874-.637L.764 12.05C-.33 13.427.65 15.455 2.409 15.455h9.579l.113 7.51c.014.985 1.259 1.408 1.873.636l9.262-11.653c1.093-1.375.113-3.403-1.645-3.403h-9.642z'/></svg>\"\n  },\n  {\n    \"name\": \"@svgl\",\n    \"description\": \"A beautiful library with SVG logos.\",\n    \"homepage\": \"https://svgl.app\",\n    \"url\": \"https://svgl.app/r/{name}.json\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 256 256'><path d='M216 136c-8 24-56 72-80 80v-32a48 48 0 0 1 48-48Z' opacity='.2'/><path d='M168 32H88a56.06 56.06 0 0 0-56 56v80a56.06 56.06 0 0 0 56 56h48a8 8 0 0 0 2.53-.41c26.23-8.75 76.31-58.83 85.06-85.06A8 8 0 0 0 224 136V88a56.06 56.06 0 0 0-56-56M48 168V88a40 40 0 0 1 40-40h80a40 40 0 0 1 40 40v40h-24a56.06 56.06 0 0 0-56 56v24H88a40 40 0 0 1-40-40m96 35.14V184a40 40 0 0 1 40-40h19.14C191 163.5 163.5 191 144 203.14'/></svg>\"\n  },\n  {\n    \"name\": \"@tailark\",\n    \"homepage\": \"https://tailark.com\",\n    \"url\": \"https://tailark.com/r/{name}.json\",\n    \"description\": \"Shadcn blocks designed for building modern marketing websites.\",\n    \"logo\": \"<svg width='56' height='56' viewBox='0 0 56 56' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M9.33334 0H15.5556V56H9.33334V0Z' fill='url(#paint0_linear_477_3)'/><path d='M40.4444 0H46.6667V56H40.4444V0Z' fill='url(#paint1_linear_477_3)'/><path d='M56 9.33333V15.5556H0V9.33333H56Z' fill='url(#paint2_linear_477_3)'/><path d='M2.96699e-06 46.6667V40.4444H56V46.6667H2.96699e-06Z' fill='url(#paint3_linear_477_3)'/><defs><linearGradient id='paint0_linear_477_3' x1='28' y1='0' x2='28' y2='56' gradientUnits='userSpaceOnUse'><stop stop-color='#9B99FE'/><stop offset='1' stop-color='#2BC8B7'/></linearGradient><linearGradient id='paint1_linear_477_3' x1='28' y1='0' x2='28' y2='56' gradientUnits='userSpaceOnUse'><stop stop-color='#9B99FE'/><stop offset='1' stop-color='#2BC8B7'/></linearGradient><linearGradient id='paint2_linear_477_3' x1='28' y1='0' x2='28' y2='56' gradientUnits='userSpaceOnUse'><stop stop-color='#9B99FE'/><stop offset='1' stop-color='#2BC8B7'/></linearGradient><linearGradient id='paint3_linear_477_3' x1='28' y1='0' x2='28' y2='56' gradientUnits='userSpaceOnUse'><stop stop-color='#9B99FE'/><stop offset='1' stop-color='#2BC8B7'/></linearGradient></defs></svg>\"\n  },\n  {\n    \"name\": \"@taki\",\n    \"homepage\": \"https://taki-ui.com\",\n    \"url\": \"https://taki-ui.com/r/{name}.json\",\n    \"description\": \"Beautifully designed, accessible components that you can copy and paste into your apps. Made with React Aria Components and Shadcn tokens.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' class='fill-none!' stroke='var(--foreground)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='size-5'><path d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z'></path><path d='M12 22V12'></path><polyline points='3.29 7 12 12 20.71 7'></polyline><path d='m7.5 4.27 9 5.15'></path></svg>\"\n  },\n  {\n    \"name\": \"@terrae\",\n    \"homepage\": \"https://www.terrae.dev\",\n    \"url\": \"https://www.terrae.dev/{name}.json\",\n    \"description\": \"Composable, animated map components for React. Built with TypeScript, Tailwind CSS, Mapbox GL JS, and MapLibre GL. Perfect companion for shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'><mask id='t-cutout'><rect width='24' height='24' fill='white'/><text x='12' y='18' text-anchor='middle' fill='black' font-size='18' font-weight='600' font-family='system-ui, sans-serif'>t</text></mask><circle cx='12' cy='12' r='11' fill='var(--foreground)' mask='url(#t-cutout)'/></svg>\"\n  },\n  {\n    \"name\": \"@thegridcn\",\n    \"homepage\": \"https://thegridcn.com\",\n    \"url\": \"https://thegridcn.com/r/{name}.json\",\n    \"description\": \"A Tron-inspired shadcn/ui theme system with Greek god color schemes, glow intensity levels, and sci-fi components like DataCard, HUD, Radar, and more.\",\n    \"logo\": \"<svg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'><g clip-path='url(#clip0_5_30)'><path d='M0 8H32' stroke='var(--foreground)' stroke-width='0.5'/><path d='M0 16H32' stroke='var(--foreground)' stroke-width='0.5'/><path d='M0 24H32' stroke='var(--foreground)' stroke-width='0.5'/><path d='M8 0V32' stroke='var(--foreground)' stroke-width='0.5'/><path d='M16 0V32' stroke='var(--foreground)' stroke-width='0.5'/><path d='M24 0V32' stroke='var(--foreground)' stroke-width='0.5'/><path d='M23 8H9C8.44772 8 8 8.44772 8 9V23C8 23.5523 8.44772 24 9 24H23C23.5523 24 24 23.5523 24 23V9C24 8.44772 23.5523 8 23 8Z' stroke='var(--foreground)' stroke-width='1.5'/><path d='M16 10V22' stroke='var(--foreground)' stroke-width='1.5'/><path d='M10 16H22' stroke='var(--foreground)' stroke-width='1.5'/><path d='M8 9.5C8.82843 9.5 9.5 8.82843 9.5 8C9.5 7.17157 8.82843 6.5 8 6.5C7.17157 6.5 6.5 7.17157 6.5 8C6.5 8.82843 7.17157 9.5 8 9.5Z' fill='var(--foreground)' stroke='var(--foreground)' stroke-width='1.5'/><path d='M24 9.5C24.8284 9.5 25.5 8.82843 25.5 8C25.5 7.17157 24.8284 6.5 24 6.5C23.1716 6.5 22.5 7.17157 22.5 8C22.5 8.82843 23.1716 9.5 24 9.5Z' fill='var(--foreground)' stroke='var(--foreground)' stroke-width='1.5'/><path d='M8 25.5C8.82843 25.5 9.5 24.8284 9.5 24C9.5 23.1716 8.82843 22.5 8 22.5C7.17157 22.5 6.5 23.1716 6.5 24C6.5 24.8284 7.17157 25.5 8 25.5Z' fill='var(--foreground)' stroke='var(--foreground)' stroke-width='1.5'/><path d='M24 25.5C24.8284 25.5 25.5 24.8284 25.5 24C25.5 23.1716 24.8284 22.5 24 22.5C23.1716 22.5 22.5 23.1716 22.5 24C22.5 24.8284 23.1716 25.5 24 25.5Z' fill='var(--foreground)' stroke='var(--foreground)' stroke-width='1.5'/><path d='M16 18C17.1046 18 18 17.1046 18 16C18 14.8954 17.1046 14 16 14C14.8954 14 14 14.8954 14 16C14 17.1046 14.8954 18 16 18Z' fill='var(--foreground)' stroke='var(--foreground)' stroke-width='1.5'/><path d='M2 2H6' stroke='var(--foreground)'/><path d='M2 2V6' stroke='var(--foreground)'/><path d='M30 2H26' stroke='var(--foreground)'/><path d='M30 2V6' stroke='var(--foreground)'/><path d='M2 30H6' stroke='var(--foreground)'/><path d='M2 30V26' stroke='var(--foreground)'/><path d='M30 30H26' stroke='var(--foreground)'/><path d='M30 30V26' stroke='var(--foreground)'/></g><defs><clipPath id='clip0_5_30'><rect width='32' height='32' fill='var(--background)'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@tour\",\n    \"homepage\": \"https://onboarding-tour.vercel.app\",\n    \"url\": \"https://onboarding-tour.vercel.app/r/{name}.json\",\n    \"description\": \"A component for building onboarding tours. Designed to integrate with shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-binoculars-icon lucide-binoculars fill-none!'><path d='M10 10h4'/><path d='M19 7V4a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v3'/><path d='M20 21a2 2 0 0 0 2-2v-3.851c0-1.39-2-2.962-2-4.829V8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v11a2 2 0 0 0 2 2z'/><path d='M 22 16 L 2 16'/><path d='M4 21a2 2 0 0 1-2-2v-3.851c0-1.39 2-2.962 2-4.829V8a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v11a2 2 0 0 1-2 2z'/><path d='M9 7V4a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1v3'/></svg>\"\n  },\n  {\n    \"name\": \"@uitripled\",\n    \"homepage\": \"https://ui.tripled.work\",\n    \"url\": \"https://ui.tripled.work/r/{name}.json\",\n    \"description\": \"An open-source, Production-ready UI components and blocks powered by shadcn/ui and Framer Motion\",\n    \"logo\": \"<svg version='1.0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2085.000000 970.000000' preserveAspectRatio='xMidYMid meet'><g transform='translate(0.000000,970.000000) scale(0.100000,-0.100000)' fill='var(--foreground)' stroke='none'><path d='M1175 9513 c-5 -39 -29 -192 -50 -323 -2 -14 -13 -83 -24 -155 -26 -162 -38 -236 -57 -350 -14 -85 -21 -126 -58 -370 -8 -55 -22 -140 -30 -190 -20 -114 -31 -188 -57 -350 -11 -71 -22 -141 -24 -155 -5 -28 -20 -125 -35 -227 -6 -38 -26 -162 -44 -278 -19 -115 -42 -259 -50 -320 -16 -104 -23 -150 -46 -282 -5 -32 -17 -105 -25 -163 -9 -58 -20 -130 -25 -160 -5 -30 -21 -131 -36 -225 -45 -297 -74 -478 -83 -530 -6 -27 -13 -75 -16 -105 -3 -30 -10 -77 -15 -105 -5 -27 -16 -97 -25 -155 -9 -58 -24 -159 -35 -225 -11 -66 -24 -154 -30 -195 -7 -41 -16 -102 -21 -135 -19 -125 -41 -273 -54 -365 -7 -52 -25 -174 -39 -270 -56 -388 -61 -958 -11 -1283 141 -907 608 -1553 1412 -1956 360 -180 758 -295 1253 -361 423 -57 1044 -65 1460 -20 368 40 619 86 924 171 646 180 1194 466 1636 853 292 257 549 564 724 866 21 36 40 67 42 69 4 5 2 -15 -16 -119 -6 -30 -21 -127 -35 -215 -13 -88 -29 -187 -34 -220 -12 -72 -34 -213 -56 -355 -9 -58 -20 -130 -25 -160 -16 -92 -49 -301 -60 -375 -33 -225 -40 -266 -46 -290 l-6 -25 4183 3 c3772 3 4198 5 4329 19 439 49 853 151 1275 313 670 257 1368 698 1859 1173 98 95 324 328 369 381 327 381 556 721 772 1146 252 496 406 968 490 1500 37 235 46 359 52 667 9 513 -49 884 -209 1338 -188 533 -494 1017 -892 1415 -298 298 -595 512 -981 710 -376 192 -812 328 -1250 389 -335 47 -172 46 -5756 46 -2881 0 -5240 -3 -5243 -8 -2 -4 -9 -41 -15 -82 -21 -145 -47 -307 -76 -490 -9 -52 -22 -140 -30 -195 -7 -55 -23 -156 -35 -225 -21 -126 -39 -246 -65 -420 -8 -52 -19 -123 -25 -157 -15 -90 -27 -167 -40 -253 -16 -107 -58 -374 -70 -445 -5 -33 -12 -82 -15 -110 -4 -27 -11 -72 -16 -100 -5 -27 -20 -122 -34 -210 -13 -88 -29 -187 -35 -220 -5 -33 -12 -82 -15 -110 -4 -27 -11 -72 -16 -100 -9 -51 -37 -227 -83 -530 -15 -93 -31 -192 -36 -220 -5 -27 -12 -75 -15 -105 -3 -30 -10 -77 -16 -105 -5 -27 -20 -122 -34 -210 -13 -88 -29 -187 -35 -220 -5 -33 -12 -82 -15 -110 -4 -27 -11 -72 -16 -100 -5 -27 -20 -122 -34 -210 -45 -277 -90 -476 -161 -710 -167 -548 -416 -905 -750 -1073 -79 -40 -246 -95 -359 -118 -130 -27 -582 -27 -700 0 -363 82 -526 257 -607 651 -46 226 -32 736 32 1130 5 33 14 92 20 130 14 98 48 310 60 370 5 28 12 75 15 105 3 30 10 78 15 105 5 28 19 111 31 185 11 74 25 162 30 195 6 33 16 103 24 155 18 120 42 276 55 360 6 36 15 97 20 135 6 39 14 95 20 125 12 69 53 330 74 475 9 61 21 135 26 165 13 77 45 279 70 445 12 77 32 212 46 300 14 88 34 216 45 285 10 69 23 148 29 175 5 28 12 75 15 105 3 30 10 78 15 105 5 28 19 111 31 185 11 74 25 162 30 195 6 33 16 103 24 155 18 118 42 275 55 360 26 157 30 187 30 213 l0 27 -1369 0 -1370 0 -6 -47z m11055 -222 c0 -11 -11 -86 -25 -168 -14 -81 -27 -161 -29 -178 -7 -54 -25 -169 -36 -230 -6 -33 -17 -103 -25 -155 -16 -107 -22 -148 -70 -450 -19 -118 -39 -244 -45 -280 -44 -278 -61 -390 -66 -425 -3 -22 -9 -62 -15 -90 -5 -27 -20 -122 -34 -210 -27 -176 -28 -182 -84 -535 -22 -135 -47 -294 -55 -355 -9 -60 -21 -135 -26 -165 -17 -98 -30 -180 -70 -435 -22 -137 -44 -279 -50 -315 -6 -36 -21 -137 -35 -225 -14 -88 -30 -185 -35 -215 -5 -30 -19 -118 -30 -195 -11 -77 -25 -165 -30 -195 -25 -150 -93 -575 -120 -755 -11 -77 -25 -165 -30 -195 -5 -30 -14 -86 -20 -125 -6 -38 -16 -92 -21 -120 -5 -27 -18 -113 -29 -190 -11 -77 -25 -165 -30 -195 -11 -66 -25 -151 -45 -285 -8 -55 -20 -126 -25 -157 -25 -148 -31 -182 -50 -313 -11 -77 -25 -165 -30 -195 -5 -30 -21 -127 -35 -215 -13 -88 -29 -187 -35 -220 -5 -33 -12 -76 -15 -95 -2 -19 -16 -105 -30 -190 -14 -85 -27 -168 -29 -185 -7 -51 -27 -177 -39 -250 l-12 -70 -432 -3 -433 -2 0 27 c0 34 20 166 60 393 5 30 19 118 30 195 20 134 30 200 50 310 5 28 11 71 15 96 3 25 8 57 10 70 17 101 58 359 75 474 11 77 25 166 30 197 6 32 15 85 20 118 6 33 14 86 20 118 5 31 19 120 30 197 17 115 58 373 75 474 2 13 7 45 10 70 4 25 10 69 15 96 20 110 30 176 50 310 11 77 25 165 30 195 5 30 21 127 35 215 14 88 29 189 35 225 6 36 24 151 40 255 17 105 34 217 40 250 14 87 59 369 70 445 9 55 32 205 100 630 6 36 22 137 35 225 14 88 28 176 31 195 3 19 7 46 9 60 2 14 17 111 34 215 39 243 46 287 76 480 14 88 29 183 34 210 6 28 12 70 16 95 3 25 10 72 15 105 33 204 61 385 66 420 4 22 8 49 10 60 1 11 14 90 28 175 35 214 45 280 61 390 7 52 20 136 29 185 8 50 20 119 26 155 34 213 41 253 46 261 3 5 198 9 435 9 415 0 429 -1 429 -19z m1130 -8 c0 -15 -5 -52 -10 -82 -6 -31 -28 -168 -50 -306 -22 -137 -44 -277 -49 -310 -6 -33 -22 -136 -36 -230 -15 -93 -44 -280 -66 -415 -21 -135 -43 -274 -49 -310 -6 -36 -26 -162 -45 -280 -18 -118 -43 -278 -55 -355 -11 -77 -25 -165 -30 -195 -26 -155 -102 -632 -124 -785 -9 -60 -21 -136 -26 -167 -6 -32 -14 -85 -20 -118 -5 -33 -14 -86 -20 -117 -5 -32 -19 -121 -30 -198 -19 -133 -27 -180 -50 -312 -5 -32 -14 -89 -19 -128 -9 -65 -28 -184 -51 -315 -5 -30 -19 -118 -30 -195 -11 -77 -25 -165 -30 -195 -23 -130 -42 -251 -55 -340 -15 -100 -21 -140 -61 -390 -13 -85 -29 -184 -34 -220 -6 -36 -15 -90 -20 -120 -9 -49 -16 -96 -50 -320 -18 -112 -91 -571 -140 -880 -16 -102 -32 -198 -34 -215 -2 -16 -6 -46 -10 -65 -3 -19 -17 -107 -31 -195 -13 -88 -29 -187 -34 -220 -6 -33 -30 -180 -53 -328 l-43 -267 -438 0 -439 0 6 28 c3 15 17 99 30 187 28 175 42 261 56 345 5 30 19 118 30 195 11 77 25 165 30 195 5 30 21 127 35 215 27 177 29 186 84 535 22 135 51 322 66 415 14 94 30 197 36 230 5 33 27 173 49 310 22 138 44 279 50 315 6 36 22 137 35 225 14 88 28 176 31 195 4 19 8 49 10 65 2 17 18 113 34 215 38 236 45 281 75 475 14 88 30 185 35 215 5 30 19 118 30 195 11 77 24 163 29 190 9 46 15 81 41 248 5 34 21 132 34 217 40 247 46 289 61 390 16 109 40 260 55 340 5 30 19 118 30 195 11 77 25 165 30 195 6 30 21 129 35 220 14 91 30 191 35 223 6 31 14 83 20 115 5 31 19 120 30 197 19 131 25 165 50 313 5 31 16 102 25 157 8 55 19 129 25 165 6 36 28 178 50 315 22 138 44 282 50 320 6 39 15 93 20 120 5 28 12 67 15 88 l6 37 434 0 435 0 0 -27z m3675 17 c88 -6 198 -14 245 -19 744 -80 1408 -352 1975 -810 112 -90 369 -347 466 -464 289 -351 513 -757 649 -1177 36 -112 92 -323 105 -400 4 -19 11 -57 16 -85 9 -51 20 -144 39 -317 24 -227 6 -652 -40 -978 -50 -343 -179 -796 -323 -1130 -13 -30 -34 -80 -47 -110 -41 -94 -176 -354 -251 -482 -236 -402 -489 -729 -829 -1069 -277 -277 -511 -469 -830 -680 -605 -401 -1242 -665 -1895 -787 -444 -83 -409 -82 -2363 -82 l-1692 0 4 23 c3 12 14 81 26 152 11 72 25 155 30 185 5 30 19 118 30 195 11 77 25 166 30 198 28 162 39 231 65 402 8 55 20 125 25 155 5 30 19 118 30 195 11 77 25 165 30 195 23 130 42 251 55 340 16 106 22 144 70 450 19 118 40 247 46 285 6 39 15 93 19 120 5 28 16 100 25 160 14 92 43 278 105 665 55 343 93 583 115 725 14 94 30 197 36 230 5 33 27 173 49 310 22 138 44 279 50 315 6 36 22 137 35 225 14 88 30 187 35 220 11 67 53 333 70 440 6 39 17 113 25 165 13 89 32 210 55 340 5 30 19 118 30 195 11 77 25 165 30 195 5 30 21 127 35 215 26 168 40 254 55 345 5 30 19 118 30 195 11 77 25 166 30 198 41 242 90 545 90 560 0 11 3227 8 3415 -3z'/><path d='M15555 7398 c-2 -7 -13 -71 -24 -143 -22 -140 -28 -178 -66 -415 -14 -85 -30 -186 -35 -225 -12 -79 -24 -151 -40 -240 -5 -33 -15 -91 -20 -130 -5 -38 -14 -97 -20 -130 -6 -33 -28 -172 -50 -310 -22 -137 -44 -279 -50 -315 -6 -36 -24 -150 -40 -255 -33 -215 -39 -251 -80 -492 -5 -32 -16 -105 -25 -163 -26 -173 -64 -412 -74 -465 -6 -27 -13 -70 -16 -95 -3 -25 -10 -72 -16 -105 -5 -33 -23 -145 -39 -250 -33 -214 -46 -293 -80 -492 -5 -32 -19 -121 -30 -198 -20 -137 -33 -213 -51 -308 -5 -26 -9 -53 -9 -59 0 -17 766 -3 895 16 55 8 136 20 180 26 461 67 926 263 1292 546 103 80 360 333 424 418 153 203 226 318 309 486 141 282 216 534 276 920 26 164 26 713 1 843 -46 241 -85 363 -168 534 -174 361 -456 638 -813 803 -181 84 -380 139 -671 187 -138 22 -952 32 -960 11z m930 -262 c130 -21 187 -33 294 -60 557 -141 943 -513 1094 -1056 54 -193 62 -262 61 -560 0 -295 -7 -372 -54 -610 -62 -314 -190 -634 -349 -875 -176 -265 -424 -518 -671 -682 -115 -76 -264 -157 -375 -203 -55 -23 -109 -45 -120 -50 -100 -41 -376 -116 -500 -135 -27 -5 -57 -9 -65 -10 -161 -26 -402 -44 -582 -45 -146 0 -137 -7 -118 99 12 65 75 455 89 551 6 36 17 106 25 155 8 50 22 137 31 195 31 200 65 415 74 465 6 28 13 70 16 95 3 25 10 72 16 105 25 157 80 497 89 560 6 39 15 97 21 130 5 33 16 101 23 150 23 145 56 355 76 478 13 79 36 222 50 312 5 39 26 167 45 285 19 118 40 247 45 285 6 39 15 93 20 120 11 59 50 309 50 320 0 14 617 -3 715 -19z'/></g></svg>\"\n  },\n  {\n    \"name\": \"@utilcn\",\n    \"homepage\": \"https://utilcn.dev\",\n    \"url\": \"https://utilcn.dev/r/{name}.json\",\n    \"description\": \"Fullstack registry items to start those big features. Utilcn has ChatGPT Apps, file uploading (with progress bars) and downloading, and a way to make your env vars typesafe on the backend.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='32'><path d='M0 0 C10.56 0 21.12 0 32 0 C32 10.56 32 21.12 32 32 C21.44 32 10.88 32 0 32 C0 21.44 0 10.88 0 0 Z ' fill='var(--foreground)' transform='translate(0,0)'/><path d='M0 0 C5.28 0 10.56 0 16 0 C16 0.99 16 1.98 16 3 C10.72 3 5.44 3 0 3 C0 2.01 0 1.02 0 0 Z ' fill='var(--background)' transform='translate(8,20)'/><path d='M0 0 C3.96 0 7.92 0 12 0 C12 0.99 12 1.98 12 3 C8.04 3 4.08 3 0 3 C0 2.01 0 1.02 0 0 Z ' fill='var(--background)' transform='translate(10,16)'/><path d='M0 0 C3.96 0 7.92 0 12 0 C12 0.99 12 1.98 12 3 C8.04 3 4.08 3 0 3 C0 2.01 0 1.02 0 0 Z ' fill='var(--background)' transform='translate(10,12)'/></svg>\"\n  },\n  {\n    \"name\": \"@wandry-ui\",\n    \"homepage\": \"http://ui.wandry.com.ua/\",\n    \"url\": \"https://ui.wandry.com.ua/r/{name}.json\",\n    \"description\": \"A set of open source fully controlled React Inertia form elements\",\n    \"logo\": \"<svg width='84' height='84' viewBox='0 0 84 84' fill='none' xmlns='http://www.w3.org/2000/svg'><circle cx='42' cy='42' r='42' fill='var(--foreground)'/><path d='M60.0895 26L55.3658 53.4595H54.5338L47.5557 26H37.33L30.2445 53.5389H29.3857L23.9105 26H15L22.4076 59.7882C22.4344 59.9206 22.5417 60 22.6759 60H35.5318C35.8002 60 36.0149 59.8146 36.0686 59.5763L41.6511 36.3271H42.4026L47.7972 59.5498C47.8509 59.8146 48.0924 60 48.3877 60H61.163C61.3509 60 61.4851 59.8676 61.5388 59.7087L69 26H60.0895Z' fill='var(--background)'/><path d='M75 26C72.7925 26 71 27.7925 71 30C71 32.2075 72.7925 34 75 34C77.2075 34 79 32.2075 79 30C79 27.7925 77.2075 26 75 26ZM71.6038 30C71.6038 28.1321 73.1321 26.6038 75 26.6038C75.6981 26.6038 76.3208 26.8679 76.8491 27.2264L76.2453 27.9623C76 27.8302 75.7359 27.6981 75.3962 27.6981H73.5472V31.3019L72.6415 32.4151C72.0189 31.8113 71.6038 30.9623 71.6038 30ZM76.3774 29C76.3774 29.2453 76.283 29.434 76.1132 29.5849C75.9434 29.7358 75.6981 29.8113 75.3962 29.8113H75.2642L76.2076 28.6415C76.283 28.7358 76.3774 28.8491 76.3774 29ZM74.1132 29.8113V28.1887H75.4151C75.6415 28.1887 75.8113 28.2642 75.9623 28.3585L74.7925 29.8113H74.1132ZM74.3962 30.283L74.1132 30.6415V30.283H74.3962ZM75 33.3962C74.2264 33.3962 73.5472 33.0943 72.9623 32.6415L73.5472 31.9057V31.9245H74.0943V31.2264L74.8679 30.2642H74.8868L76.3585 31.9245H77.0377L75.5094 30.2453H75.5849C75.9811 30.2264 76.3019 30.0943 76.566 29.8679C76.8113 29.6415 76.9434 29.3396 76.9434 28.9811C76.9434 28.6415 76.7925 28.3962 76.5849 28.1887L77.1887 27.434C77.9245 28.0566 77.3962 28.9434 78.3962 29.9811C78.3962 31.8679 76.8679 33.3962 75 33.3962Z' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@wds\",\n    \"homepage\": \"https://wds-shadcn-registry.netlify.app/\",\n    \"url\": \"https://wds-shadcn-registry.netlify.app/r/{name}.json\",\n    \"description\": \"A collection of accessible components built for use with Shadcn.\",\n    \"logo\": \"<svg id='svg' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='400' height='295.6' viewBox='0, 0, 400,295.6'><g id='svgg'><path id='path0' d='M330.064 1.160 C 327.562 1.899,326.021 3.529,325.071 6.439 C 324.529 8.098,324.167 13.151,324.485 14.609 C 325.344 18.547,329.451 22.993,333.444 24.307 C 337.339 25.588,341.383 28.585,343.417 31.695 C 343.508 31.835,343.806 32.280,344.078 32.683 C 345.507 34.803,346.466 36.878,347.497 40.083 C 349.445 46.141,349.666 49.018,349.668 68.355 C 349.670 85.735,349.703 86.078,351.903 91.967 C 353.373 95.900,357.216 101.063,360.428 103.417 C 360.788 103.681,361.158 103.979,361.250 104.078 C 361.822 104.699,366.486 107.438,367.500 107.750 C 370.636 108.713,370.947 113.299,367.977 114.779 C 367.577 114.978,366.800 115.363,366.250 115.634 C 364.794 116.351,364.602 116.462,362.750 117.647 C 361.454 118.476,359.400 120.186,358.069 121.543 C 356.938 122.697,356.361 123.369,355.035 125.083 C 353.360 127.249,351.352 131.893,350.423 135.750 C 349.751 138.539,349.667 140.776,349.663 156.000 C 349.659 171.094,349.568 173.736,348.927 177.250 C 347.498 185.086,344.506 190.883,339.808 194.917 C 338.123 196.363,335.079 198.012,333.458 198.356 C 329.908 199.111,324.932 204.866,324.582 208.623 C 323.834 216.650,326.833 221.663,332.417 221.718 C 334.291 221.736,334.453 221.693,339.431 219.849 C 344.441 217.994,351.358 214.319,354.344 211.926 C 354.579 211.737,354.982 211.433,355.239 211.250 C 355.497 211.067,355.830 210.801,355.979 210.661 C 356.128 210.520,356.887 209.871,357.667 209.218 C 359.966 207.292,364.667 201.942,364.667 201.252 C 364.667 201.197,364.743 201.062,364.836 200.951 C 365.501 200.159,367.499 196.415,368.056 194.917 C 370.591 188.098,370.534 188.753,370.561 166.025 L 370.583 147.083 370.966 144.833 C 372.370 136.584,375.009 130.871,378.943 127.568 C 379.478 127.118,379.954 126.706,380.000 126.652 C 380.175 126.447,382.455 125.191,383.250 124.861 C 384.526 124.333,385.227 124.196,387.667 123.999 C 394.488 123.448,398.652 120.121,399.344 114.669 C 400.651 104.358,396.818 99.394,386.984 98.661 C 382.273 98.310,377.827 95.299,375.185 90.669 C 370.883 83.131,370.219 78.186,370.411 55.083 C 370.558 37.420,370.567 38.226,370.186 35.750 C 369.736 32.833,369.311 31.230,368.104 27.909 C 367.838 27.179,366.061 23.635,365.456 22.630 C 363.931 20.096,362.120 17.838,359.488 15.187 C 357.054 12.737,355.659 11.609,352.086 9.204 C 351.171 8.587,350.271 7.999,350.086 7.897 C 349.901 7.795,349.188 7.399,348.500 7.017 C 347.026 6.200,342.562 4.000,342.378 4.000 C 342.307 4.001,341.950 3.854,341.583 3.675 C 341.217 3.496,340.467 3.188,339.917 2.990 C 339.367 2.792,338.596 2.488,338.204 2.315 C 337.812 2.142,337.391 2.000,337.268 2.000 C 337.145 2.000,336.678 1.860,336.231 1.689 C 333.727 0.731,332.013 0.584,330.064 1.160 M65.500 1.200 C 63.492 1.771,59.483 3.270,57.083 4.348 C 55.812 4.918,51.913 6.845,51.233 7.238 C 50.094 7.898,47.422 9.554,47.333 9.657 C 47.288 9.710,46.913 9.971,46.500 10.238 C 42.169 13.037,36.291 19.366,33.951 23.750 C 32.809 25.889,31.995 27.727,31.183 30.000 C 30.218 32.698,29.432 37.338,29.460 40.163 C 29.785 72.378,29.693 75.738,28.321 81.667 C 26.964 87.530,24.380 92.413,21.174 95.167 C 20.694 95.579,20.215 95.993,20.109 96.085 C 18.606 97.405,15.933 98.456,13.519 98.676 C 6.015 99.361,2.821 101.344,1.049 106.417 C 0.370 108.360,0.367 114.325,1.043 116.343 C 2.615 121.033,5.997 123.467,11.667 123.987 C 15.537 124.342,16.937 124.742,19.022 126.088 C 24.322 129.508,27.366 135.260,29.032 145.000 L 29.417 147.250 29.436 166.180 C 29.453 183.106,29.485 185.293,29.737 186.846 C 30.200 189.697,31.049 192.882,31.760 194.442 C 31.892 194.731,32.000 195.011,32.000 195.064 C 32.000 195.756,34.946 200.965,36.409 202.859 C 36.596 203.102,36.938 203.550,37.167 203.855 C 39.138 206.478,46.202 213.000,47.071 213.000 C 47.108 213.000,47.689 213.367,48.361 213.815 C 49.563 214.617,50.008 214.881,51.833 215.880 C 54.410 217.291,56.403 218.248,58.375 219.022 C 58.810 219.193,59.560 219.489,60.042 219.679 C 66.550 222.249,69.129 222.394,71.954 220.348 C 75.325 217.906,76.545 209.747,74.212 205.250 C 72.765 202.461,68.040 198.344,66.275 198.335 C 65.696 198.332,63.302 197.170,61.687 196.108 C 59.541 194.697,56.439 191.389,55.185 189.172 C 52.642 184.678,51.183 179.795,50.478 173.417 C 50.341 172.181,50.238 166.126,50.161 154.833 C 50.060 140.119,50.013 137.952,49.773 137.000 C 49.623 136.404,49.425 135.554,49.335 135.110 C 49.019 133.568,48.114 131.078,47.145 129.083 C 46.025 126.779,45.411 125.797,43.858 123.833 C 41.925 121.387,38.440 118.296,36.185 117.026 C 35.967 116.903,35.517 116.649,35.185 116.462 C 33.568 115.548,32.806 115.167,32.595 115.167 C 31.467 115.167,29.921 112.987,29.935 111.415 C 29.949 109.901,31.378 107.833,32.412 107.833 C 32.569 107.833,34.502 106.869,35.250 106.418 C 35.617 106.197,36.029 105.960,36.167 105.891 C 36.639 105.655,37.917 104.764,37.972 104.632 C 38.003 104.559,38.104 104.500,38.198 104.500 C 38.741 104.500,42.684 100.711,44.268 98.667 C 45.000 97.721,45.325 97.239,46.083 95.977 C 46.537 95.223,47.890 92.504,48.105 91.917 C 50.272 85.995,50.320 85.456,50.333 67.167 C 50.345 49.726,50.452 47.808,51.693 42.750 C 52.052 41.286,52.824 38.728,53.026 38.333 C 53.096 38.196,53.391 37.521,53.681 36.833 C 53.972 36.146,54.399 35.246,54.630 34.833 C 54.862 34.421,55.136 33.933,55.238 33.750 C 55.341 33.567,55.648 33.087,55.921 32.683 C 56.194 32.280,56.492 31.830,56.583 31.683 C 56.675 31.537,56.796 31.379,56.851 31.333 C 56.907 31.287,57.341 30.781,57.816 30.207 C 59.991 27.583,63.480 25.291,66.750 24.339 C 68.374 23.866,71.258 21.707,72.753 19.846 C 73.164 19.335,73.571 18.830,73.659 18.724 C 73.861 18.478,74.892 16.409,75.140 15.750 C 75.347 15.199,75.664 12.820,75.556 12.631 C 75.518 12.565,75.419 11.440,75.335 10.131 C 74.910 3.470,70.762 -0.296,65.500 1.200 M123.500 12.105 C 123.271 12.138,122.071 12.284,120.833 12.430 C 114.335 13.196,108.206 14.886,102.250 17.552 C 100.883 18.164,98.570 19.333,97.458 19.973 C 97.115 20.171,96.556 20.490,96.218 20.682 C 95.879 20.874,95.073 21.379,94.426 21.806 C 93.779 22.232,93.129 22.657,92.980 22.749 C 92.024 23.344,88.546 25.925,88.058 26.400 C 87.861 26.593,87.374 27.012,86.977 27.333 C 84.368 29.437,79.966 34.230,77.029 38.167 C 76.242 39.221,74.667 41.657,74.667 41.819 C 74.667 41.919,74.607 42.000,74.533 42.000 C 74.460 42.000,74.234 42.319,74.032 42.708 C 73.829 43.098,73.479 43.717,73.253 44.083 C 73.026 44.450,72.310 45.837,71.660 47.167 C 71.010 48.496,70.408 49.714,70.322 49.873 C 70.237 50.032,70.062 50.445,69.934 50.790 C 69.806 51.134,69.539 51.829,69.341 52.333 C 68.990 53.224,68.316 55.212,67.675 57.250 C 67.027 59.308,66.366 62.331,65.633 66.583 L 65.259 68.750 65.206 110.333 C 65.145 157.459,65.116 156.179,66.356 162.500 C 67.392 167.786,69.955 175.155,72.006 178.750 C 72.215 179.117,72.641 179.904,72.953 180.500 C 73.265 181.096,73.739 181.921,74.007 182.333 C 74.275 182.746,74.547 183.196,74.611 183.333 C 74.749 183.632,75.543 184.881,75.669 185.000 C 75.718 185.046,75.899 185.308,76.072 185.583 C 76.623 186.459,79.119 189.759,79.864 190.596 C 82.546 193.608,83.809 194.925,85.341 196.305 C 86.299 197.169,87.346 198.112,87.667 198.400 C 88.885 199.497,92.934 202.432,95.095 203.785 C 96.970 204.959,102.639 207.863,104.083 208.389 C 104.450 208.523,105.162 208.794,105.667 208.993 C 109.963 210.685,114.874 211.912,120.500 212.699 L 123.250 213.083 198.833 213.083 L 274.417 213.083 277.167 212.699 C 282.798 211.911,287.044 210.856,291.750 209.074 C 292.392 208.831,293.214 208.523,293.577 208.388 C 293.940 208.254,294.427 208.046,294.660 207.925 C 294.893 207.804,296.171 207.168,297.500 206.510 C 298.829 205.852,300.217 205.134,300.583 204.915 C 300.950 204.695,301.362 204.462,301.500 204.396 C 301.637 204.330,302.187 203.989,302.720 203.638 C 303.254 203.287,303.720 203.000,303.756 203.000 C 303.792 203.000,304.113 202.794,304.469 202.542 C 304.826 202.290,305.484 201.827,305.934 201.513 C 306.383 201.199,306.947 200.786,307.189 200.596 C 307.430 200.406,307.872 200.063,308.172 199.833 C 312.798 196.294,318.908 189.841,321.250 186.022 C 321.342 185.872,321.462 185.713,321.517 185.667 C 321.602 185.596,321.990 185.012,322.747 183.814 C 322.840 183.666,323.087 183.254,323.296 182.898 C 323.505 182.541,323.813 182.025,323.981 181.750 C 324.541 180.833,324.990 180.020,325.500 179.000 C 325.592 178.817,325.742 178.517,325.833 178.333 C 325.925 178.150,326.075 177.850,326.167 177.667 C 326.258 177.483,326.400 177.202,326.482 177.042 C 326.563 176.881,326.778 176.412,326.959 176.000 C 327.140 175.588,327.437 174.912,327.621 174.500 C 329.247 170.838,330.876 165.208,331.646 160.583 C 332.628 154.690,332.655 153.386,332.655 112.583 C 332.655 71.798,332.629 70.558,331.648 64.583 C 331.084 61.142,329.849 56.341,328.927 54.000 C 328.800 53.679,328.529 52.967,328.323 52.417 C 328.117 51.867,327.810 51.102,327.641 50.717 C 327.472 50.333,327.333 49.972,327.333 49.915 C 327.333 49.740,324.936 44.984,324.240 43.780 C 323.125 41.848,322.481 40.792,322.342 40.667 C 322.291 40.621,321.877 40.021,321.422 39.333 C 320.679 38.211,319.537 36.672,318.949 36.000 C 318.828 35.862,318.247 35.150,317.658 34.417 C 316.350 32.789,312.345 28.719,310.745 27.390 C 309.003 25.944,308.999 25.940,308.701 25.625 C 308.550 25.465,308.336 25.333,308.227 25.333 C 308.117 25.333,308.003 25.275,307.972 25.203 C 307.845 24.904,304.238 22.354,302.500 21.334 C 302.179 21.145,301.692 20.854,301.417 20.686 C 300.798 20.308,299.830 19.758,299.356 19.516 C 299.160 19.415,298.831 19.246,298.625 19.139 C 296.845 18.214,294.133 16.942,293.219 16.603 C 292.870 16.474,292.058 16.165,291.417 15.917 C 290.775 15.669,290.025 15.408,289.750 15.338 C 289.475 15.267,288.950 15.097,288.583 14.959 C 286.631 14.226,281.215 12.963,278.750 12.666 C 278.017 12.577,276.517 12.394,275.417 12.258 C 273.578 12.030,125.064 11.881,123.500 12.105 M137.635 68.347 C 140.623 69.035,142.430 71.225,143.927 75.974 C 144.351 77.318,144.811 78.717,144.950 79.083 C 145.089 79.450,145.298 80.087,145.416 80.500 C 145.533 80.912,145.721 81.512,145.834 81.833 C 146.475 83.654,146.715 84.375,147.663 87.333 C 148.640 90.385,148.837 90.976,149.576 93.083 C 149.737 93.542,149.928 94.142,150.000 94.417 C 150.072 94.692,150.252 95.254,150.400 95.667 C 150.547 96.079,151.116 97.804,151.664 99.500 C 152.212 101.196,152.782 102.921,152.931 103.333 C 153.080 103.746,153.261 104.308,153.333 104.583 C 153.406 104.858,153.587 105.421,153.736 105.833 C 153.886 106.246,154.574 108.306,155.266 110.412 C 156.908 115.406,156.776 115.247,157.411 113.000 C 157.932 111.156,158.208 110.231,159.076 107.417 C 160.049 104.263,160.442 103.001,160.986 101.290 C 161.168 100.718,161.621 99.237,161.994 98.000 C 162.366 96.763,162.818 95.280,162.997 94.706 C 163.176 94.132,163.472 93.175,163.656 92.579 C 163.839 91.984,164.139 91.009,164.322 90.413 C 164.506 89.817,164.806 88.842,164.989 88.246 C 165.172 87.650,165.466 86.695,165.643 86.123 C 165.819 85.551,166.132 84.521,166.339 83.833 C 166.545 83.146,166.845 82.171,167.003 81.667 C 167.471 80.181,167.995 78.488,168.318 77.417 C 169.110 74.791,169.430 73.882,169.703 73.474 C 169.866 73.231,170.000 72.982,170.000 72.920 C 170.000 72.610,171.628 70.754,172.464 70.112 C 175.660 67.656,179.117 67.535,182.812 69.750 C 185.150 71.151,187.333 75.457,187.333 78.667 C 187.333 79.546,186.799 82.036,186.288 83.537 C 186.155 83.929,185.877 84.813,185.671 85.500 C 185.275 86.821,184.814 88.317,184.337 89.833 C 184.178 90.337,183.879 91.313,183.672 92.000 C 183.466 92.688,183.155 93.700,182.982 94.250 C 182.430 96.007,180.825 101.223,180.597 102.000 C 180.476 102.412,180.258 103.162,180.113 103.667 C 179.968 104.171,179.280 106.421,178.585 108.667 C 177.890 110.912,177.022 113.725,176.656 114.917 C 176.290 116.108,175.846 117.553,175.668 118.127 C 175.490 118.701,175.194 119.658,175.011 120.254 C 174.828 120.850,174.528 121.825,174.344 122.421 C 174.161 123.016,173.861 123.991,173.678 124.587 C 173.494 125.183,173.194 126.158,173.011 126.754 C 172.828 127.350,172.536 128.305,172.362 128.877 C 172.189 129.449,171.876 130.479,171.667 131.167 C 171.458 131.854,171.157 132.829,170.998 133.333 C 170.640 134.465,170.113 136.168,169.696 137.544 C 169.522 138.115,169.209 139.146,169.000 139.833 C 168.792 140.521,168.490 141.496,168.329 142.000 C 168.169 142.504,167.871 143.479,167.667 144.167 C 167.462 144.854,167.165 145.829,167.005 146.333 C 166.845 146.837,166.538 147.813,166.323 148.500 C 163.269 158.258,150.740 158.090,147.740 148.250 C 146.893 145.471,146.612 144.556,146.334 143.667 C 146.177 143.162,145.879 142.188,145.673 141.500 C 145.466 140.813,145.166 139.837,145.005 139.333 C 144.729 138.469,144.346 137.217,143.652 134.917 C 143.329 133.846,142.805 132.152,142.337 130.667 C 142.178 130.162,141.879 129.188,141.672 128.500 C 141.229 127.027,140.812 125.662,140.346 124.167 C 140.161 123.571,139.701 122.071,139.324 120.833 C 138.947 119.596,138.495 118.133,138.320 117.583 C 137.644 115.462,136.138 110.549,135.949 109.846 C 135.764 109.161,135.333 108.700,135.333 109.188 C 135.333 109.378,135.085 110.203,133.659 114.750 C 133.486 115.300,133.190 116.275,133.000 116.917 C 132.810 117.558,132.511 118.533,132.335 119.083 C 132.159 119.633,131.558 121.583,131.000 123.417 C 129.478 128.420,128.266 132.369,127.702 134.167 C 127.514 134.762,127.053 136.262,126.676 137.500 C 126.299 138.737,125.851 140.200,125.681 140.750 C 125.510 141.300,125.202 142.313,124.995 143.000 C 124.789 143.688,124.520 144.550,124.398 144.917 C 124.276 145.283,124.102 146.221,124.012 147.000 C 123.859 148.327,123.417 149.881,122.956 150.719 C 119.636 156.745,113.012 157.957,108.432 153.376 C 107.828 152.772,107.333 152.187,107.333 152.076 C 107.333 151.965,107.222 151.782,107.087 151.670 C 106.951 151.557,106.740 151.267,106.617 151.024 C 106.495 150.782,106.312 150.433,106.212 150.250 C 105.833 149.561,105.333 148.174,105.329 147.802 C 105.327 147.590,104.610 145.317,103.736 142.750 C 102.861 140.183,102.080 137.858,101.999 137.583 C 101.918 137.308,101.317 135.546,100.665 133.667 C 100.012 131.787,99.417 130.025,99.342 129.750 C 99.267 129.475,99.113 129.025,99.000 128.750 C 98.887 128.475,98.734 128.025,98.661 127.750 C 98.588 127.475,98.140 126.162,97.667 124.833 C 97.193 123.504,96.745 122.192,96.672 121.917 C 96.599 121.642,96.447 121.192,96.333 120.917 C 96.220 120.642,96.067 120.192,95.993 119.917 C 95.919 119.642,95.473 118.329,95.003 117.000 C 94.532 115.671,94.074 114.292,93.985 113.937 C 93.895 113.581,93.738 113.133,93.635 112.941 C 93.532 112.748,93.390 112.364,93.319 112.087 C 93.248 111.810,92.504 109.596,91.667 107.167 C 90.829 104.737,90.078 102.525,89.998 102.250 C 89.917 101.975,89.317 100.212,88.665 98.333 C 88.012 96.454,87.417 94.692,87.342 94.417 C 87.267 94.142,87.113 93.692,87.000 93.417 C 86.887 93.142,86.734 92.692,86.661 92.417 C 86.588 92.142,86.140 90.829,85.667 89.500 C 85.193 88.171,84.745 86.858,84.672 86.583 C 84.599 86.308,84.447 85.858,84.333 85.583 C 84.220 85.308,84.067 84.858,83.992 84.583 C 83.918 84.308,83.614 83.408,83.318 82.583 C 79.404 71.690,93.284 63.131,99.515 72.594 C 100.401 73.940,100.530 74.230,101.415 76.876 C 102.576 80.345,102.669 80.616,102.964 81.417 C 103.099 81.783,103.269 82.308,103.341 82.583 C 103.413 82.858,103.860 84.171,104.333 85.500 C 104.807 86.829,105.255 88.142,105.328 88.417 C 105.401 88.692,105.553 89.142,105.667 89.417 C 105.780 89.692,105.933 90.142,106.007 90.417 C 106.081 90.692,106.527 92.004,106.997 93.333 C 107.468 94.662,107.926 96.041,108.015 96.397 C 108.105 96.752,108.262 97.200,108.365 97.393 C 108.468 97.585,108.611 97.969,108.683 98.246 C 108.754 98.523,109.496 100.737,110.332 103.167 C 111.167 105.596,111.919 107.808,112.002 108.083 C 112.553 109.906,114.240 114.667,114.334 114.667 C 114.398 114.667,115.106 112.660,115.908 110.208 C 116.711 107.756,117.509 105.384,117.683 104.936 C 117.858 104.488,118.000 104.030,118.000 103.917 C 118.000 103.804,118.143 103.345,118.317 102.897 C 118.492 102.450,119.102 100.621,119.673 98.833 C 120.244 97.046,120.823 95.283,120.960 94.917 C 121.097 94.550,121.267 94.025,121.337 93.750 C 121.407 93.475,121.596 92.875,121.757 92.417 C 121.918 91.958,122.181 91.208,122.341 90.750 C 122.501 90.292,123.101 88.454,123.673 86.667 C 124.623 83.700,124.882 82.919,125.499 81.167 C 125.612 80.846,125.800 80.246,125.918 79.833 C 126.035 79.421,126.243 78.783,126.379 78.417 C 126.515 78.050,126.795 77.188,127.000 76.500 C 127.206 75.813,127.514 74.874,127.687 74.413 C 127.859 73.953,128.000 73.526,128.000 73.464 C 128.000 72.686,130.424 69.763,131.648 69.065 C 133.089 68.243,135.782 67.920,137.635 68.347 M292.760 68.830 C 295.283 69.310,297.611 69.989,300.500 71.088 C 301.356 71.414,305.040 73.321,305.346 73.597 C 305.491 73.727,305.656 73.833,305.713 73.833 C 305.770 73.833,306.166 74.077,306.592 74.375 C 307.018 74.673,307.485 74.992,307.629 75.083 C 308.383 75.564,311.018 77.731,311.535 78.295 C 312.082 78.894,313.333 80.756,313.333 80.974 C 313.333 81.060,313.482 81.457,313.663 81.857 C 314.656 84.046,313.564 88.939,311.751 90.425 C 309.504 92.266,302.605 92.559,301.339 90.867 C 301.231 90.723,297.885 88.500,297.776 88.500 C 297.734 88.500,297.243 88.242,296.685 87.927 C 296.128 87.612,295.202 87.152,294.628 86.906 C 294.053 86.659,293.265 86.317,292.877 86.145 C 292.488 85.974,292.066 85.833,291.939 85.833 C 291.812 85.833,291.380 85.715,290.979 85.570 C 287.539 84.330,282.821 84.687,279.635 86.430 C 277.001 87.871,275.641 92.963,277.058 96.083 C 277.607 97.292,279.170 98.839,280.608 99.597 C 281.144 99.880,281.733 100.191,281.917 100.289 C 282.729 100.722,284.629 101.516,286.417 102.171 C 286.967 102.373,287.809 102.682,288.289 102.858 C 288.769 103.035,289.556 103.321,290.039 103.495 C 294.364 105.050,294.690 105.170,295.583 105.541 C 296.820 106.054,300.651 107.940,301.417 108.413 C 301.783 108.639,302.307 108.950,302.581 109.104 C 305.171 110.555,308.639 113.928,310.537 116.841 C 311.180 117.828,312.667 120.708,312.667 120.967 C 312.667 121.052,312.809 121.488,312.984 121.936 C 315.043 127.224,315.274 133.242,313.646 139.167 C 310.555 150.414,301.293 156.925,288.417 156.903 C 282.295 156.893,276.917 155.625,271.059 152.812 C 269.399 152.015,265.941 150.020,265.250 149.461 C 265.158 149.386,264.709 149.046,264.250 148.704 C 263.792 148.363,263.330 148.008,263.224 147.917 C 263.117 147.825,262.710 147.487,262.319 147.167 C 259.113 144.538,257.950 142.186,257.953 138.333 C 257.957 130.782,264.827 128.263,271.333 133.427 C 273.001 134.750,274.607 135.913,275.750 136.624 C 283.055 141.171,293.110 141.647,297.136 137.636 C 300.636 134.147,299.831 127.433,295.638 125.150 C 294.757 124.670,291.720 123.212,290.917 122.882 C 289.354 122.241,288.244 121.833,288.061 121.833 C 287.960 121.833,287.512 121.694,287.064 121.524 C 286.616 121.354,285.725 121.055,285.083 120.858 C 284.442 120.662,283.129 120.235,282.167 119.909 C 281.204 119.583,280.192 119.257,279.917 119.184 C 279.642 119.112,279.177 118.928,278.883 118.776 C 278.590 118.624,278.264 118.500,278.158 118.500 C 278.053 118.500,277.731 118.393,277.442 118.263 C 277.153 118.132,276.365 117.789,275.691 117.499 C 266.231 113.437,261.891 107.386,261.147 97.224 C 260.655 90.499,261.964 84.193,264.782 79.705 C 265.085 79.222,265.333 78.760,265.333 78.677 C 265.333 78.595,265.390 78.503,265.458 78.472 C 265.527 78.442,265.921 77.972,266.333 77.429 C 270.014 72.581,276.204 69.142,282.417 68.495 C 284.791 68.248,290.703 68.439,292.760 68.830 M223.167 71.735 C 227.598 72.076,231.641 72.984,235.167 74.428 C 235.762 74.672,236.475 74.961,236.750 75.071 C 237.606 75.411,240.047 76.670,240.833 77.177 C 241.246 77.442,241.736 77.729,241.924 77.813 C 242.111 77.897,242.364 78.086,242.486 78.233 C 242.608 78.380,242.771 78.500,242.849 78.500 C 243.467 78.500,248.483 82.955,250.485 85.283 C 252.519 87.646,256.667 94.450,256.667 95.421 C 256.667 95.467,256.808 95.822,256.981 96.210 C 260.058 103.131,260.916 114.524,258.985 122.833 C 257.942 127.323,256.612 130.845,254.690 134.208 C 254.494 134.552,254.182 135.101,253.997 135.427 C 252.166 138.659,248.346 143.044,245.167 145.563 C 243.452 146.922,243.310 147.030,242.903 147.282 C 242.727 147.391,241.983 147.853,241.250 148.309 C 236.632 151.182,231.568 152.960,225.417 153.870 C 221.768 154.409,198.172 154.530,196.202 154.019 C 192.883 153.159,190.574 150.680,189.897 147.250 C 189.557 145.527,189.554 80.120,189.894 78.500 C 190.604 75.113,193.300 72.315,196.417 71.729 C 197.946 71.441,219.418 71.446,223.167 71.735 M207.833 113.750 C 207.833 126.537,207.873 137.000,207.922 137.000 C 208.022 137.000,209.697 136.099,211.333 135.166 C 212.432 134.540,213.543 133.929,215.500 132.874 C 216.096 132.553,217.019 132.038,217.551 131.729 C 218.083 131.419,218.557 131.167,218.605 131.167 C 218.653 131.167,219.192 130.878,219.804 130.524 C 220.863 129.913,221.774 129.409,223.833 128.296 C 224.338 128.023,224.975 127.668,225.250 127.506 C 225.525 127.344,226.181 126.976,226.708 126.689 C 228.990 125.446,229.644 125.083,230.667 124.493 C 231.262 124.150,232.200 123.632,232.750 123.342 C 233.300 123.053,234.050 122.648,234.417 122.442 C 235.179 122.015,236.918 121.064,238.500 120.209 C 239.096 119.887,240.019 119.371,240.551 119.062 C 241.083 118.753,241.597 118.500,241.693 118.500 C 241.789 118.500,242.301 118.058,242.830 117.517 C 245.586 114.700,244.835 110.758,241.167 108.792 C 240.118 108.231,239.258 107.763,237.333 106.710 C 236.829 106.434,235.967 105.963,235.417 105.663 C 234.867 105.363,233.929 104.840,233.333 104.500 C 232.305 103.914,231.581 103.513,229.375 102.311 C 228.848 102.024,228.192 101.656,227.917 101.494 C 227.642 101.332,226.967 100.956,226.417 100.657 C 224.487 99.611,223.244 98.928,222.583 98.550 C 222.217 98.341,221.617 98.018,221.250 97.833 C 220.883 97.649,220.283 97.326,219.917 97.116 C 219.550 96.907,218.762 96.468,218.167 96.142 C 217.571 95.815,216.633 95.301,216.083 95.000 C 215.533 94.698,214.596 94.173,214.000 93.834 C 213.404 93.494,212.392 92.932,211.750 92.585 C 211.108 92.238,210.005 91.627,209.297 91.227 C 208.590 90.827,207.971 90.500,207.922 90.500 C 207.873 90.500,207.833 100.962,207.833 113.750 M197.167 227.946 C 191.206 228.910,187.351 233.227,187.443 238.833 C 187.488 241.586,187.762 242.238,191.702 248.964 C 192.439 250.221,193.266 251.662,193.541 252.167 C 193.816 252.671,194.162 253.271,194.309 253.500 C 194.457 253.729,194.661 254.067,194.763 254.250 C 195.044 254.756,195.681 255.862,195.982 256.365 C 196.129 256.612,197.037 258.174,198.000 259.837 C 198.963 261.501,199.871 263.061,200.018 263.306 C 200.473 264.060,201.042 265.056,201.366 265.667 C 201.536 265.987,201.863 266.550,202.091 266.917 C 202.319 267.283,202.578 267.733,202.667 267.917 C 202.755 268.100,202.998 268.525,203.205 268.862 C 203.413 269.198,204.371 270.835,205.333 272.500 C 206.296 274.164,207.204 275.726,207.351 275.971 C 207.637 276.446,208.113 277.275,208.684 278.292 C 208.878 278.635,209.092 278.992,209.160 279.083 C 209.229 279.175,209.510 279.662,209.785 280.167 C 210.060 280.671,210.442 281.346,210.634 281.667 C 210.827 281.987,211.290 282.775,211.664 283.417 C 212.038 284.058,212.414 284.696,212.500 284.833 C 212.586 284.971,213.052 285.783,213.536 286.638 C 215.007 289.235,215.087 289.356,216.017 290.371 C 221.581 296.446,231.704 294.232,234.267 286.380 C 235.510 282.571,234.693 279.607,230.539 272.863 C 230.331 272.526,230.088 272.100,230.000 271.917 C 229.912 271.733,229.654 271.283,229.428 270.917 C 229.202 270.550,228.658 269.612,228.219 268.833 C 227.780 268.054,227.345 267.292,227.252 267.140 C 227.159 266.987,226.762 266.312,226.370 265.640 C 225.977 264.967,225.586 264.304,225.500 264.167 C 225.414 264.029,224.948 263.217,224.464 262.362 C 223.980 261.507,223.413 260.532,223.205 260.195 C 222.998 259.859,222.755 259.433,222.667 259.250 C 222.578 259.067,222.336 258.640,222.128 258.302 C 221.920 257.964,220.963 256.326,220.000 254.663 C 219.037 253.000,218.129 251.439,217.982 251.194 C 217.462 250.333,216.943 249.411,216.698 248.917 C 216.562 248.642,216.360 248.304,216.249 248.167 C 216.138 248.029,215.822 247.504,215.548 247.000 C 215.273 246.496,214.891 245.821,214.699 245.500 C 214.507 245.179,214.032 244.354,213.644 243.667 C 213.256 242.979,212.877 242.392,212.803 242.361 C 212.728 242.331,212.667 242.236,212.667 242.151 C 212.667 242.021,211.636 240.171,210.649 238.529 C 210.501 238.284,210.220 237.802,210.024 237.458 C 209.190 235.999,209.021 235.707,208.523 234.868 C 208.235 234.382,208.000 233.950,208.000 233.906 C 208.000 233.821,207.196 232.559,206.917 232.206 C 206.244 231.355,204.835 230.080,203.879 229.458 C 203.491 229.206,203.109 229.000,203.029 229.000 C 202.950 229.000,202.637 228.877,202.335 228.726 C 201.231 228.175,198.396 227.747,197.167 227.946 M182.117 247.792 C 181.904 248.135,181.262 249.242,180.691 250.250 C 180.120 251.258,179.582 252.196,179.496 252.333 C 179.410 252.471,178.806 253.521,178.153 254.667 C 177.501 255.813,176.836 256.975,176.677 257.250 C 176.517 257.525,176.070 258.313,175.684 259.000 C 175.297 259.688,174.846 260.475,174.681 260.750 C 174.362 261.281,174.138 261.674,173.017 263.667 C 172.630 264.354,172.179 265.142,172.014 265.417 C 171.849 265.692,171.553 266.198,171.357 266.542 C 171.161 266.885,170.837 267.448,170.639 267.792 C 170.440 268.135,170.138 268.679,169.967 269.000 C 169.796 269.321,169.520 269.808,169.352 270.083 C 169.184 270.358,168.887 270.865,168.690 271.208 C 168.494 271.552,168.183 272.096,168.000 272.417 C 167.817 272.737,167.517 273.262,167.333 273.583 C 167.150 273.904,166.850 274.429,166.667 274.750 C 166.483 275.071,166.183 275.596,166.000 275.917 C 165.817 276.237,165.517 276.762,165.333 277.083 C 165.150 277.404,164.837 277.948,164.639 278.292 C 162.165 282.569,162.363 288.130,165.088 290.940 C 165.190 291.044,165.455 291.344,165.678 291.607 C 170.156 296.874,179.835 295.789,183.061 289.658 C 183.324 289.159,183.716 288.450,183.934 288.083 C 184.151 287.717,184.480 287.117,184.665 286.750 C 184.851 286.383,185.174 285.783,185.384 285.417 C 185.593 285.050,186.032 284.262,186.358 283.667 C 186.685 283.071,187.199 282.133,187.500 281.583 C 187.802 281.033,188.327 280.096,188.667 279.500 C 189.007 278.904,189.531 277.967,189.833 277.417 C 190.135 276.867,190.648 275.929,190.975 275.333 C 191.301 274.737,191.738 273.950,191.945 273.583 C 192.452 272.687,192.841 271.968,193.548 270.615 C 193.875 269.991,194.218 269.389,194.311 269.276 C 194.405 269.164,194.554 268.879,194.645 268.642 C 194.815 268.194,194.789 268.119,194.026 266.792 C 193.828 266.448,193.517 265.904,193.333 265.583 C 193.150 265.262,192.850 264.737,192.667 264.417 C 192.483 264.096,192.173 263.552,191.976 263.208 C 191.780 262.865,191.484 262.358,191.319 262.083 C 191.153 261.808,190.660 260.946,190.222 260.167 C 189.784 259.387,189.311 258.554,189.171 258.315 C 189.031 258.076,187.867 256.067,186.583 253.851 C 185.300 251.634,184.174 249.692,184.081 249.535 C 183.989 249.378,183.659 248.781,183.350 248.208 C 182.691 246.989,182.628 246.967,182.117 247.792 ' stroke='none' fill='#04acfc' fill-rule='evenodd'/><path id='path1' d='' stroke='none' fill='#08acfc' fill-rule='evenodd'/><path id='path2' d='' stroke='none' fill='#08acfc' fill-rule='evenodd'/><path id='path3' d='' stroke='none' fill='#08acfc' fill-rule='evenodd'/><path id='path4' d='' stroke='none' fill='#08acfc' fill-rule='evenodd'/></g></svg>\"\n  },\n  {\n    \"name\": \"@wigggle-ui\",\n    \"description\": \"A beautiful collection of copy-and-paste widgets for your next project.\",\n    \"homepage\": \"https://wigggle-ui.vercel.app\",\n    \"url\": \"https://wigggle-ui.vercel.app/r/{name}.json\",\n    \"logo\": \"<svg width='512' height='512' viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'> <rect x='64' y='64' width='384' height='384' rx='80' fill='var(--foreground)'/> <rect x='144' y='144' width='224' height='224' rx='40' fill='none' stroke='var(--background)' stroke-width='16'/> </svg>\"\n  },\n  {\n    \"name\": \"@zippystarter\",\n    \"homepage\": \"https://zippystarter.com\",\n    \"url\": \"https://zippystarter.com/r/{name}.json\",\n    \"description\": \"Expertly crafted blocks, components & themes for shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='43' viewBox='0 0 40 43' fill='none'><path d='M20 39.2561C29.7502 39.2561 37.6543 31.3161 37.6543 21.5215C37.6543 16.9915 35.9636 12.8582 33.1814 9.72367L34.4149 7.59447C37.8736 11.206 40 16.1143 40 21.5215C40 32.6174 31.0457 41.6124 20 41.6124C16.5216 41.6124 13.2507 40.7205 10.4014 39.1517L12.9484 37.7849C15.1082 38.7312 17.4931 39.2561 20 39.2561Z' fill='var(--foreground)'/><path d='M6.50141 32.952C3.90845 29.8652 2.34568 25.8767 2.34568 21.5215C2.34568 11.727 10.2498 3.78697 20 3.78697C22.7494 3.78697 25.352 4.41832 27.672 5.54458L30.2077 4.24085C27.2196 2.45579 23.729 1.43063 20 1.43063C8.95431 1.43063 0 10.4256 0 21.5215C0 26.7767 2.0085 31.5605 5.29644 35.1408L6.50141 32.952Z' fill='var(--foreground)'/><path fill-rule='evenodd' clip-rule='evenodd' d='M33.4439 1.26914C32.9881 1.50598 31.8134 2.11406 30.8249 2.61332L29.0339 3.53505L21.9087 7.10032C21.9087 7.10032 21.6776 7.33715 19.9187 8.22687C15.5152 10.4608 15.0851 10.6976 14.8091 11.0048C14.5844 11.2609 14.0195 12.2658 12.0617 15.8887C11.6958 16.5736 11.1309 17.6105 10.81 18.193C10.1424 19.4028 10.0718 19.678 10.3029 20.1965C10.4954 20.6253 10.8613 20.8493 11.3684 20.8493C11.7022 20.8493 11.8627 20.7981 12.4661 20.5229C14.2185 19.7164 16.2342 18.8267 16.2598 18.8523C16.2727 18.8651 16.1186 19.1787 15.9132 19.5436C15.7014 19.9084 15.1686 20.8878 14.7321 21.7135C13.0053 24.9459 12.3377 26.1877 11.9526 26.8981L11.8791 27.0339C11.6531 27.4516 11.3084 28.0887 11.0667 28.5304C10.6431 29.3241 8.73017 32.8125 7.13822 35.6993C6.8301 36.2626 6.46421 36.9155 6.32941 37.1523C6.19461 37.3827 5.7902 38.106 5.43073 38.7525C4.7182 40.0391 4.6155 40.3783 4.82091 40.7688C4.95571 41.0376 5.30877 41.2425 5.62972 41.2489C5.93142 41.2489 6.03106 41.1869 6.09315 41.125C6.15523 41.0631 7.14858 39.5154 7.14858 39.5154L20.612 32.6397L22.6084 31.6668C24.8422 30.5786 25.1118 30.3866 25.5547 29.6121C26.4021 28.1015 28.4369 24.421 28.6103 24.0754C28.7258 23.8513 28.9633 23.4225 29.1431 23.1216C29.4383 22.6416 29.4768 22.5328 29.4961 22.1615C29.5089 21.8223 29.4897 21.7007 29.3677 21.4894C29.111 21.0478 28.5204 20.7661 28.0261 20.8429C27.8977 20.8621 27.5768 20.9774 27.32 21.099C26.6267 21.419 24.5213 22.3471 24.1618 22.488C23.9564 22.5712 23.8665 22.584 23.8986 22.5328C23.911 22.5112 23.9381 22.4675 23.9716 22.4137C24.0077 22.3556 24.0512 22.2856 24.0912 22.2191C24.1682 22.0911 24.6817 21.1566 25.2274 20.1389C25.773 19.1211 26.7102 17.3929 27.3136 16.3047C28.3663 14.3845 28.7386 13.7124 30.9853 9.71187C31.2215 9.28859 31.5387 8.721 31.8796 8.11121C32.3634 7.24556 32.8948 6.29488 33.3091 5.55131C33.6825 4.88113 34.0612 4.20378 34.3609 3.66787C34.628 3.19034 34.8322 2.82512 34.9139 2.67733C35.3118 1.98604 35.3632 1.6788 35.145 1.36516C35.0615 1.24354 34.9074 1.09632 34.8047 1.03231C34.3939 0.801882 34.3169 0.814685 33.4439 1.26914Z' fill='#F9FAFB'/><path fill-rule='evenodd' clip-rule='evenodd' d='M30.4258 1.82301C31.4097 1.32609 32.5808 0.719889 33.0358 0.483495C33.2512 0.37135 33.4408 0.274112 33.6032 0.20088C33.7619 0.129329 33.9464 0.056261 34.1463 0.0215534C34.6552 -0.066794 35.0187 0.137119 35.2374 0.259786L35.2558 0.270094L35.2731 0.280901C35.486 0.413551 35.7257 0.647449 35.8732 0.861405C36.105 1.19546 36.2109 1.58419 36.1328 2.03173C36.0692 2.39667 35.8879 2.75962 35.6852 3.11217C35.6004 3.26554 35.3987 3.62628 35.1388 4.09115L35.1338 4.09999C34.8341 4.63597 34.4556 5.31273 34.0826 5.98221C33.668 6.72643 33.1363 7.6777 32.6525 8.54317L32.649 8.54946C32.3094 9.157 31.9938 9.72176 31.7587 10.1432L31.7574 10.1454C29.5113 14.1449 29.1407 14.8139 28.0901 16.7304L28.088 16.7341C27.4873 17.8173 26.5523 19.5416 26.0078 20.5572C25.9696 20.6284 25.9315 20.6993 25.8936 20.7698C26.3211 20.58 26.7112 20.4049 26.9452 20.2969C27.1006 20.2235 27.2696 20.1544 27.4204 20.0999C27.5504 20.0529 27.7341 19.9918 27.8928 19.9677C28.7507 19.8355 29.6957 20.2917 30.1333 21.0444L30.1346 21.0467C30.2261 21.2051 30.3101 21.385 30.353 21.6155C30.3909 21.8193 30.3876 22.02 30.381 22.195L30.3805 22.2074C30.3696 22.4176 30.3501 22.6446 30.2546 22.9053C30.1712 23.1329 30.0418 23.3504 29.9004 23.5804C29.7308 23.8647 29.5058 24.2711 29.3991 24.4777C29.1972 24.8767 27.1641 28.5531 26.3271 30.0452L26.3235 30.0516C26.0599 30.5126 25.8018 30.8694 25.2603 31.2476C24.7893 31.5767 24.0929 31.9285 22.9964 32.4627C22.9963 32.4627 22.9964 32.4626 22.9964 32.4627L21.0074 33.432L7.76412 40.1952L7.73682 40.2376C7.64242 40.3842 7.51574 40.5804 7.38698 40.7789C7.25852 40.9769 7.12673 41.1789 7.02255 41.3362C6.97076 41.4144 6.92372 41.4847 6.88649 41.5389C6.8682 41.5656 6.84939 41.5926 6.83212 41.6164C6.82367 41.6281 6.81243 41.6433 6.79988 41.6594L6.79914 41.6604C6.79205 41.6695 6.76095 41.7095 6.71843 41.7519C6.6038 41.8662 6.4479 41.9786 6.22895 42.0509C6.03668 42.1143 5.83351 42.1342 5.62985 42.1342H5.62102L5.61219 42.134C5.279 42.1274 4.96336 42.0216 4.70603 41.8699C4.45385 41.7213 4.19532 41.4912 4.03376 41.1739C3.94235 40.9985 3.86579 40.7889 3.84664 40.5371C3.82782 40.2896 3.86872 40.057 3.93427 39.8403C4.05524 39.4404 4.30831 38.952 4.65633 38.3236L4.65706 38.3222C5.01181 37.6842 5.41912 36.9556 5.56258 36.7099C5.69686 36.4739 6.05768 35.83 6.36159 35.2744L6.36304 35.2718C7.95623 32.3827 9.86566 28.9005 10.2858 28.1134L10.2901 28.1054C10.5305 27.6659 10.8742 27.0308 11.1006 26.6125L11.174 26.4767C11.5577 25.7691 12.2242 24.5293 13.9504 21.298C14.0581 21.0941 14.1722 20.8801 14.2861 20.6677C13.8142 20.88 13.3154 21.1067 12.8364 21.3272L12.8337 21.3284C12.5389 21.4629 12.2948 21.5701 12.0708 21.6373C11.8106 21.7154 11.5975 21.7347 11.3686 21.7347C10.9839 21.7347 10.5985 21.6489 10.2553 21.4387C9.90832 21.2261 9.65639 20.9179 9.4953 20.5591L9.4943 20.5569C9.41921 20.3884 9.34403 20.1863 9.31301 19.9501C9.28083 19.705 9.30199 19.4704 9.36131 19.2364C9.46661 18.8211 9.71314 18.3483 10.0349 17.7653M14.9843 19.3871C15.1134 19.3302 15.236 19.2764 15.3503 19.2266C15.3535 19.2251 15.3568 19.2237 15.36 19.2223C15.3873 19.2104 15.4142 19.1987 15.4406 19.1873C15.9308 18.9742 16.2498 18.8422 16.26 18.8523C16.2728 18.8651 16.1187 19.1787 15.9133 19.5436C15.8966 19.5723 15.878 19.6048 15.8575 19.6408C15.7923 19.7555 15.7089 19.9052 15.6139 20.0776C15.3605 20.5377 15.0247 21.1601 14.7322 21.7134C13.0054 24.9459 12.3379 26.1876 11.9527 26.8981L11.8793 27.0338C11.6532 27.4516 11.3085 28.0886 11.0669 28.5303C10.6432 29.3241 8.73029 32.8125 7.13835 35.6993C6.83023 36.2626 6.46434 36.9155 6.32953 37.1523C6.19473 37.3827 5.79033 38.106 5.43085 38.7525C4.71833 40.0391 4.61562 40.3783 4.82104 40.7688C4.95584 41.0376 5.30889 41.2424 5.62985 41.2488C5.93155 41.2488 6.03119 41.1869 6.09327 41.1249C6.15536 41.063 7.14871 39.5154 7.14871 39.5154L20.6121 32.6397L22.6085 31.6668C24.8423 30.5786 25.112 30.3866 25.5549 29.6121C26.4022 28.1015 28.4371 24.421 28.6104 24.0754C28.7259 23.8513 28.9634 23.4225 29.1432 23.1216C29.4385 22.6416 29.477 22.5328 29.4962 22.1615C29.5091 21.8223 29.4898 21.7006 29.3678 21.4894C29.1111 21.0478 28.5205 20.7661 28.0262 20.8429C27.8979 20.8621 27.5769 20.9773 27.3201 21.099C26.8994 21.2932 25.9584 21.7114 25.2034 22.0417C25.0314 22.1169 24.8691 22.1876 24.7247 22.25C24.5948 22.3061 24.4795 22.3556 24.3848 22.3957C24.2855 22.4378 24.2088 22.4696 24.1619 22.4879C24.1469 22.494 24.1325 22.4997 24.1187 22.5051C24.0416 22.5349 23.984 22.553 23.9461 22.5599C23.9451 22.5601 23.944 22.5603 23.943 22.5605C23.8975 22.5682 23.8825 22.5587 23.8987 22.5328C23.911 22.5113 23.9381 22.4678 23.9714 22.4142C24.0007 22.367 24.0352 22.3116 24.0684 22.257C24.069 22.256 24.0696 22.2549 24.0702 22.2539C24.0773 22.2423 24.0844 22.2306 24.0913 22.2191C24.1196 22.1721 24.2066 22.0165 24.3325 21.788C24.4017 21.6624 24.4826 21.5149 24.5718 21.3513C24.7628 21.0013 24.9922 20.5778 25.2275 20.1388C25.7731 19.1211 26.7103 17.3929 27.3137 16.3047C28.3665 14.3845 28.7388 13.7124 30.9855 9.71185C31.2215 9.2887 31.5387 8.72131 31.8794 8.11172L31.8812 8.10846C32.3647 7.24355 32.8954 6.29409 33.3092 5.5513C33.6818 4.88251 34.0598 4.20659 34.3592 3.67121L34.361 3.66786C34.6281 3.19033 34.8323 2.8251 34.914 2.67732C35.312 1.98602 35.3633 1.67878 35.1451 1.36514C35.0616 1.24353 34.9076 1.09631 34.8049 1.0323C34.394 0.801868 34.317 0.81467 33.444 1.26913C32.9882 1.50596 31.8135 2.11404 30.825 2.61331L29.034 3.53503L21.9088 7.1003C21.9088 7.1003 21.6777 7.33714 19.9189 8.22685C15.5153 10.4607 15.0852 10.6976 14.8092 11.0048C14.5846 11.2609 14.0197 12.2658 12.0618 15.8887C11.6959 16.5736 11.1311 17.6105 10.8101 18.193C10.1425 19.4027 10.0719 19.678 10.303 20.1964C10.4956 20.6253 10.8614 20.8493 11.3686 20.8493C11.7024 20.8493 11.8628 20.7981 12.4662 20.5229C13.3319 20.1245 14.2618 19.7058 14.9843 19.3871ZM10.0349 17.7653C10.3545 17.1852 10.9174 16.152 11.2809 15.4715L11.2829 15.4677C12.2613 13.6573 12.8955 12.4938 13.3138 11.7501C13.7093 11.0469 13.9562 10.6346 14.1437 10.4209L14.1506 10.4131C14.4018 10.1335 14.7048 9.93521 15.393 9.56066C16.0995 9.17618 17.3218 8.55156 19.5183 7.43727L19.5192 7.43681C20.3867 6.99797 20.8609 6.72845 21.1102 6.57538C21.2211 6.50731 21.2827 6.46524 21.3118 6.44436L21.3793 6.37525L28.6334 2.74549L30.4258 1.82301Z' fill='black'/></svg>\"\n  },\n  {\n    \"name\": \"@uicapsule\",\n    \"homepage\": \"https://uicapsule.com\",\n    \"url\": \"https://uicapsule.com/r/{name}.json\",\n    \"description\": \"A curated collection of components that spark joy. Featuring interactive concepts, design experiments, and components in the intersection of AI/UI.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='1026' height='1026' viewBox='0 0 1026 1026'><g fill='none' fill-rule='evenodd'><rect width='1026' height='1026' fill='#111827' rx='180'/><path fill='#FFF' d='M737.064151,576.072011 L737.064151,384.064123 L679.928739,351.133373 L679.928739,674.874909 L810,599.89418 L809.996445,683.985857 L607,801 L607,225 L809.996445,342.167965 L809.99289,534.035047 L737.064151,576.072011 M477,192.025199 L477,833.972434 L513.500593,855 L550,833.972434 L550,192.025199 L513.500593,171 L477,192.025199 M347.067706,674.877164 L289.932294,641.940159 L289.932294,299.97795 L217,342.015345 L217,683.988204 L420,801 L420,225 L347.067706,267.035029 L347.067706,674.877164'/></g></svg>\"\n  },\n  {\n    \"name\": \"@ui-layouts\",\n    \"homepage\": \"https://ui-layouts.com/\",\n    \"url\": \"https://ui-layouts.com/r/{name}.json\",\n    \"description\": \"UI Layouts offers components, effects, design tools, and ready-made blocks that make building modern interfaces more efficient—built with React, Next.js, Tailwind CSS, and shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='500' height='500' viewBox='0 0 500 500'><rect width='500' height='500' fill='var(--foreground)'/><path d='M150 100 C150 100, 170 80, 200 90 C230 100, 250 120, 250 120 C250 120, 270 100, 300 110 C330 120, 350 100, 350 100 L360 150 C360 150, 380 130, 400 140 C420 150, 400 170, 400 170 L400 330 C400 330, 420 310, 400 320 C380 330, 360 310, 360 310 L350 360 C350 360, 330 340, 300 350 C270 360, 250 340, 250 340 C250 340, 230 360, 200 350 C170 340, 150 360, 150 360 L140 310 C140 310, 120 330, 100 320 C80 310, 100 290, 100 290 L100 170 C100 170, 80 190, 100 180 C120 170, 140 190, 140 190 Z' fill='var(--background)'/><rect x='280' y='180' width='60' height='140' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@pureui\",\n    \"homepage\": \"https://pure.kam-ui.com/\",\n    \"url\": \"https://pure.kam-ui.com/r/{name}.json\",\n    \"description\": \"Pure UI is a curated collection of refined, animated, and accessible components built with Base UI, Tailwind CSS, Motion, and other high-quality open source libraries.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300' viewBox='0 0 24 24'><path fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M5.061 20.045C6.375 21 8.251 21 12 21s5.625 0 6.939-.955a5 5 0 0 0 1.106-1.106C21 17.625 21 15.749 21 12s0-5.625-.955-6.939a5 5 0 0 0-1.106-1.106C17.625 3 15.749 3 12 3s-5.625 0-6.939.955A5 5 0 0 0 3.955 5.06C3 6.375 3 8.251 3 12s0 5.625.955 6.939a5 5 0 0 0 1.106 1.106M17 18l1-1m-5 1l5-5m-9 5l9-9'/></svg>\"\n  },\n  {\n    \"name\": \"@tailwind-builder\",\n    \"homepage\": \"https://tailwindbuilder.ai/\",\n    \"url\": \"https://tailwindbuilder.ai/r/{name}.json\",\n    \"description\": \"Tailwind Builder is a collection of free ui blocks and components and provide ai tools to generate production-ready forms, tables, and charts in seconds. Built with React, Next.js, Tailwind & ShadCN.\",\n    \"logo\": \"<svg width='196' height='32' viewBox='0 0 196 32' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M4.50031 16.5C4.50031 11.1125 4.56819 8.67974 6.24187 7.00607C7.91554 5.33239 8.11282 5.50024 13.5003 5.50024M27.4979 18.5005C27.4979 23.8879 27.4253 24.8422 25.7516 26.5158C24.078 28.1895 21.3842 28.1895 15.9968 28.1895C10.6093 28.1895 7.91554 28.1895 6.24187 26.5158C5.12903 25.403 4.75612 23.8391 4.63116 21.3324' stroke='#4488F9' stroke-width='2.90909' stroke-linecap='round'/><path d='M21.9408 2.72105C22.024 2.50862 22.1696 2.32613 22.3586 2.19748C22.5475 2.06883 22.7711 2 23 2C23.2289 2 23.4525 2.06883 23.6414 2.19748C23.8304 2.32613 23.976 2.50862 24.0592 2.72105L25.0713 5.28843C25.1275 5.43383 25.2135 5.566 25.3237 5.67659C25.4339 5.78718 25.5659 5.87376 25.7115 5.93086L28.2794 6.94374C28.492 7.02812 28.6744 7.17411 28.8029 7.36283C28.9313 7.55155 29 7.77433 29 8.00235C29 8.23036 28.9313 8.45314 28.8029 8.64186C28.6744 8.83058 28.492 8.97657 28.2794 9.06095L25.7138 10.0738C25.5695 10.1328 25.4384 10.2197 25.328 10.3296C25.2177 10.4395 25.1304 10.5701 25.0713 10.7139L24.0592 13.2789C23.976 13.4914 23.8304 13.6739 23.6414 13.8025C23.4525 13.9312 23.2289 14 23 14C22.7711 14 22.5475 13.9312 22.3586 13.8025C22.1696 13.6739 22.024 13.4914 21.9408 13.2789L20.9287 10.7116C20.8696 10.5678 20.7823 10.4371 20.672 10.3273C20.5617 10.2174 20.4305 10.1304 20.2862 10.0715L17.7206 9.0586C17.508 8.97423 17.3256 8.82824 17.1971 8.63951C17.0687 8.45079 17 8.22802 17 8C17 7.77198 17.0687 7.54921 17.1971 7.36049C17.3256 7.17176 17.508 7.02577 17.7206 6.9414L20.2862 5.92851C20.4307 5.8693 20.562 5.782 20.6723 5.6717C20.7827 5.5614 20.8698 5.43031 20.9287 5.28608L21.9408 2.72105Z' fill='#22CCDF' stroke='#22CCDF'/><path d='M40.34 11.74V9.38H51.46V11.74H47.18V24H44.62V11.74H40.34ZM54.1172 24.26C52.0172 24.26 50.7372 23.04 50.7372 21.18C50.7372 19.36 52.0572 18.22 54.3972 18.04L57.3572 17.82V17.6C57.3572 16.26 56.5572 15.72 55.3172 15.72C53.8772 15.72 53.0772 16.32 53.0772 17.36H50.9972C50.9972 15.22 52.7572 13.82 55.4372 13.82C58.0972 13.82 59.7372 15.26 59.7372 18V24H57.5972L57.4172 22.54C56.9972 23.56 55.6572 24.26 54.1172 24.26ZM54.9172 22.42C56.4172 22.42 57.3772 21.52 57.3772 20V19.48L55.3172 19.64C53.7972 19.78 53.2172 20.28 53.2172 21.08C53.2172 21.98 53.8172 22.42 54.9172 22.42ZM63.1542 12.14C62.3142 12.14 61.6542 11.48 61.6542 10.66C61.6542 9.84 62.3142 9.2 63.1542 9.2C63.9542 9.2 64.6142 9.84 64.6142 10.66C64.6142 11.48 63.9542 12.14 63.1542 12.14ZM61.9342 24V14.12H64.3742V24H61.9342ZM69.1552 24H66.7352V9.12H69.1552V24ZM73.6947 24L70.4947 14.12H73.0347L74.3347 18.36C74.5547 19.14 74.7547 20 74.9347 20.92C75.1147 19.96 75.2947 19.34 75.6147 18.36L76.9747 14.12H79.4547L80.7747 18.36C80.8947 18.76 81.2947 20.24 81.4147 20.9C81.5747 20.16 81.8947 18.98 82.0747 18.36L83.3947 14.12H85.9747L82.5547 24H80.2747L78.9147 19.72C78.5147 18.42 78.2947 17.48 78.2147 16.98C78.1147 17.44 77.9347 18.14 77.4347 19.76L76.0747 24H73.6947ZM88.4722 12.14C87.6322 12.14 86.9722 11.48 86.9722 10.66C86.9722 9.84 87.6322 9.2 88.4722 9.2C89.2722 9.2 89.9322 9.84 89.9322 10.66C89.9322 11.48 89.2722 12.14 88.4722 12.14ZM87.2522 24V14.12H89.6922V24H87.2522ZM94.4531 24H92.0131V14.12H94.2731L94.4731 15.4C95.0931 14.4 96.2931 13.82 97.6331 13.82C100.113 13.82 101.393 15.36 101.393 17.92V24H98.9531V18.5C98.9531 16.84 98.1331 16.04 96.8731 16.04C95.3731 16.04 94.4531 17.08 94.4531 18.68V24ZM107.65 24.26C104.79 24.26 103.01 22.16 103.01 19.1C103.01 16.02 104.81 13.82 107.79 13.82C109.17 13.82 110.39 14.4 111.01 15.38V9.12H113.43V24H111.19L111.03 22.46C110.43 23.6 109.15 24.26 107.65 24.26ZM108.19 22.02C109.89 22.02 110.99 20.8 110.99 19.02C110.99 17.24 109.89 16 108.19 16C106.49 16 105.45 17.26 105.45 19.02C105.45 20.78 106.49 22.02 108.19 22.02ZM116.253 24V9.68H121.493C124.253 9.68 125.953 11.08 125.953 13.38C125.953 15.06 125.213 16.2 123.733 16.78C125.393 17.32 126.233 18.48 126.233 20.24C126.233 22.54 124.513 24 121.793 24H116.253ZM121.473 10.96H117.693V16.2H121.653C123.453 16.2 124.473 15.2 124.473 13.5C124.473 11.9 123.393 10.96 121.473 10.96ZM121.793 17.46H117.693V22.7H121.793C123.673 22.7 124.773 21.72 124.773 20.06C124.773 18.44 123.653 17.46 121.793 17.46ZM135.131 14.32H136.511V24H135.311L135.131 22.36C134.591 23.48 133.251 24.24 131.731 24.24C129.451 24.24 128.211 22.68 128.211 20.32V14.3H129.611V19.88C129.611 22.18 130.631 23 132.171 23C134.031 23 135.131 21.76 135.131 19.46V14.32ZM139.866 11.66C139.306 11.66 138.846 11.2 138.846 10.64C138.846 10.08 139.306 9.6 139.866 9.6C140.426 9.6 140.906 10.08 140.906 10.64C140.906 11.2 140.426 11.66 139.866 11.66ZM139.186 24V14.32H140.566V24H139.186ZM144.684 24H143.304V9.42H144.684V24ZM151.219 24.24C148.399 24.24 146.739 22.08 146.739 19.18C146.739 16.26 148.399 14.06 151.279 14.06C152.879 14.06 154.159 14.76 154.839 16.16V9.42H156.219V24H155.019L154.879 22.02C154.199 23.52 152.839 24.24 151.219 24.24ZM151.459 22.98C153.579 22.98 154.819 21.38 154.819 19.14C154.819 16.92 153.579 15.3 151.459 15.3C149.359 15.3 148.139 16.92 148.139 19.14C148.139 21.38 149.359 22.98 151.459 22.98ZM162.959 24.24C160.119 24.24 158.219 22.2 158.219 19.16C158.219 16.14 160.099 14.06 162.859 14.06C165.479 14.06 167.259 15.92 167.259 18.66V19.34H159.559C159.659 21.7 160.899 23.06 162.979 23.06C164.559 23.06 165.579 22.38 165.939 21.1H167.259C166.739 23.14 165.239 24.24 162.959 24.24ZM162.859 15.24C161.039 15.24 159.839 16.44 159.599 18.34H165.879C165.879 16.48 164.679 15.24 162.859 15.24ZM174.325 14.2V15.44H173.565C171.785 15.44 170.645 16.64 170.645 18.48V24H169.265V14.32H170.565L170.665 15.82C171.045 14.78 172.065 14.1 173.425 14.1C173.725 14.1 173.985 14.12 174.325 14.2ZM177.02 24.22C176.42 24.22 175.92 23.72 175.92 23.14C175.92 22.54 176.42 22.04 177.02 22.04C177.62 22.04 178.12 22.54 178.12 23.14C178.12 23.72 177.62 24.22 177.02 24.22ZM183.52 24.26C181.42 24.26 180.14 23.04 180.14 21.18C180.14 19.36 181.46 18.22 183.8 18.04L186.76 17.82V17.6C186.76 16.26 185.96 15.72 184.72 15.72C183.28 15.72 182.48 16.32 182.48 17.36H180.4C180.4 15.22 182.16 13.82 184.84 13.82C187.5 13.82 189.14 15.26 189.14 18V24H187L186.82 22.54C186.4 23.56 185.06 24.26 183.52 24.26ZM184.32 22.42C185.82 22.42 186.78 21.52 186.78 20V19.48L184.72 19.64C183.2 19.78 182.62 20.28 182.62 21.08C182.62 21.98 183.22 22.42 184.32 22.42ZM192.557 12.14C191.717 12.14 191.057 11.48 191.057 10.66C191.057 9.84 191.717 9.2 192.557 9.2C193.357 9.2 194.017 9.84 194.017 10.66C194.017 11.48 193.357 12.14 192.557 12.14ZM191.337 24V14.12H193.777V24H191.337Z' fill='white'/></svg>\"\n  },\n  {\n    \"name\": \"@tailwind-admin\",\n    \"homepage\": \"https://tailwind-admin.com/\",\n    \"url\": \"https://tailwind-admin.com/r/{name}.json\",\n    \"description\": \"Tailwind Builder provides free tailwind admin dashboard templates, components and ui-blocks built with React, Next.js, Tailwind CSS, and shadcn/ui to help you build admin panels quickly and efficiently.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='1403' height='250' viewBox='0 0 1403 250' fill='none'><path d='M206.231 198.204C224.885 177.491 234.928 150.437 234.307 122.569C233.686 94.7007 222.449 68.1211 202.891 48.2593L167.291 83.3153C177.915 94.1046 184.019 108.543 184.356 123.681C184.694 138.82 179.238 153.516 169.105 164.767L206.231 198.204Z' fill='#49BEFF'/><path d='M202.751 48.0736C186.511 31.6593 165.492 20.8059 142.706 17.0679C119.919 13.3298 96.5345 16.8989 75.9006 27.2639L98.3278 71.9103C109.536 66.2799 122.239 64.3411 134.617 66.3717C146.995 68.4023 158.413 74.298 167.235 83.2145L202.751 48.0736Z' fill='#13DEB9'/><path d='M83.4579 23.8228C68.2781 30.0558 54.6952 39.6245 43.7157 51.8199C32.7361 64.0153 24.6413 78.5248 20.0308 94.2735C15.4204 110.022 14.4125 126.606 17.0819 142.798C19.7513 158.989 26.0295 174.372 35.4514 187.807C44.8734 201.242 57.1975 212.385 71.5108 220.411C85.8241 228.436 101.76 233.138 118.137 234.168C134.514 235.199 150.914 232.531 166.12 226.363C181.326 220.194 194.95 210.684 205.981 198.535L168.992 164.948C163 171.547 155.599 176.713 147.339 180.064C139.079 183.415 130.17 184.864 121.274 184.304C112.378 183.744 103.721 181.19 95.9459 176.831C88.1707 172.471 81.476 166.418 76.3579 159.12C71.2398 151.822 67.8293 143.465 66.3793 134.67C64.9292 125.875 65.4767 116.866 67.9812 108.311C70.4856 99.7561 74.8829 91.8743 80.8472 85.2495C86.8114 78.6248 94.1898 73.4269 102.436 70.041L83.4579 23.8228Z' fill='#5D87FF'/><path d='M329.372 185.549V83.9564H298V64.4506H382.525V83.9564H351.641V185.549H329.372Z' fill='#2A3547'/><path d='M408.114 187.5C401.937 187.5 396.573 186.471 392.022 184.412C387.47 182.353 383.949 179.427 381.456 175.634C378.964 171.733 377.717 167.236 377.717 162.142C377.717 157.266 378.801 152.931 380.968 149.138C383.136 145.237 386.495 141.986 391.046 139.386C395.598 136.785 401.341 134.943 408.277 133.859L437.21 129.145V145.4L412.34 149.626C408.114 150.385 404.971 151.739 402.913 153.69C400.854 155.64 399.824 158.187 399.824 161.33C399.824 164.364 400.962 166.802 403.238 168.644C405.622 170.378 408.548 171.245 412.015 171.245C416.458 171.245 420.359 170.324 423.719 168.482C427.186 166.531 429.841 163.876 431.684 160.517C433.634 157.158 434.61 153.473 434.61 149.464V126.707C434.61 122.914 433.092 119.771 430.058 117.279C427.132 114.678 423.231 113.378 418.355 113.378C413.803 113.378 409.74 114.624 406.164 117.116C402.696 119.5 400.149 122.697 398.524 126.707L381.131 118.254C382.865 113.594 385.574 109.585 389.258 106.226C393.051 102.758 397.494 100.049 402.587 98.0982C407.681 96.1476 413.207 95.1723 419.167 95.1723C426.428 95.1723 432.822 96.5269 438.348 99.236C443.875 101.837 448.155 105.521 451.19 110.289C454.332 114.949 455.903 120.422 455.903 126.707V185.549H435.747V170.432L440.299 170.107C438.023 173.9 435.314 177.097 432.171 179.698C429.029 182.19 425.453 184.141 421.443 185.549C417.434 186.85 412.991 187.5 408.114 187.5Z' fill='#2A3547'/><path d='M472.334 185.549V97.1229H493.627V185.549H472.334ZM472.334 87.2074V64.4506H493.627V87.2074H472.334Z' fill='#2A3547'/><path d='M510.037 185.549V62.5H531.331V185.549H510.037Z' fill='#2A3547'/><path d='M570.01 185.549L539.614 97.1229H562.045L584.314 164.256L576.512 164.093L600.244 97.1229H619.1L642.669 164.093L634.867 164.256L657.136 97.1229H679.568L649.171 185.549H630.153L606.096 115.491H613.248L588.866 185.549H570.01Z' fill='#2A3547'/><path d='M687.99 185.549V97.1229H709.284V185.549H687.99ZM687.99 87.2074V64.4506H709.284V87.2074H687.99Z' fill='#2A3547'/><path d='M725.694 185.549V97.1229H745.687V114.516L744.062 111.427C746.121 106.117 749.48 102.108 754.14 99.3986C758.908 96.5811 764.435 95.1723 770.72 95.1723C777.222 95.1723 782.965 96.5811 787.95 99.3986C793.043 102.216 796.998 106.171 799.816 111.265C802.633 116.249 804.042 122.047 804.042 128.657V185.549H782.748V133.696C782.748 129.795 781.99 126.436 780.473 123.618C778.956 120.801 776.842 118.634 774.133 117.116C771.533 115.491 768.444 114.678 764.868 114.678C761.4 114.678 758.312 115.491 755.603 117.116C752.894 118.634 750.78 120.801 749.263 123.618C747.746 126.436 746.988 129.795 746.988 133.696V185.549H725.694Z' fill='#2A3547'/></svg>\"\n  },\n  {\n    \"name\": \"@forgeui\",\n    \"homepage\": \"https://forgeui.in/\",\n    \"url\": \"https://forgeui.in/r/{name}.json\",\n    \"description\": \"Beautifully designed components that you can copy and paste into your apps. Accessible. Customizable. Open Source.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='70' height='70' viewBox='0 0 70 70'><path d='M65.5869 52.0195C59.6064 62.7446 48.1517 70 35 70C28.4081 70 22.2428 68.1761 16.9785 65.0078C24.0411 65.0505 30.5152 64.4499 36.8809 63.0947C46.275 61.0948 55.321 57.476 65.5869 52.0195Z' fill='var(--foreground)'/><path d='M69.9023 37.6084C69.7246 40.0209 69.3033 42.3653 68.6611 44.6172C56.2627 51.6688 46.1988 55.9988 35.8398 58.2041C27.9699 59.8795 19.8406 60.3467 10.2822 59.7793C8.48159 57.9831 6.87607 55.9917 5.49902 53.8398C17.5379 55.0275 27.6247 54.6653 37.4609 52.3047C48.0044 49.7743 58.1043 44.9844 69.9023 37.6084Z' fill='var(--foreground)'/><path d='M35 0C53.225 0 68.1937 13.9301 69.8457 31.7236C57.1262 39.9078 46.8552 44.9089 36.2949 47.4434C26.3045 49.841 15.895 50.0686 2.70117 48.5059C0.961337 44.35 0 39.7873 0 35C0 15.67 15.67 0 35 0Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@skiper-ui\",\n    \"homepage\": \"https://skiper-ui.com/\",\n    \"url\": \"https://skiper-ui.com/registry/{name}.json\",\n    \"description\": \"Brand new uncommon components for your Next.js project. Use with ease through shadcn CLI 3.0, featuring fast-growing components and collections that are easy to edit and use.\",\n    \"logo\": \"<svg width='55' height='55' viewBox='0 0 55 55' fill='none' xmlns='http://www.w3.org/2000/svg'><rect width='54.2938' height='54.0121' rx='27.006' fill='url(#paint0_radial_46_2)'/><defs><radialGradient id='paint0_radial_46_2' cx='0' cy='0' r='1' gradientTransform='matrix(54.2938 54.0121 -54.2938 54.0121 0 0)' gradientUnits='userSpaceOnUse'><stop offset='0.352001' stop-color='#090909'/><stop offset='0.591494' stop-color='#2770EA'/><stop offset='0.793825' stop-color='#06C4F8'/><stop offset='0.972489' stop-color='#0CBFF9'/></radialGradient></defs></svg>\"\n  },\n  {\n    \"name\": \"@animbits\",\n    \"homepage\": \"https://animbits.dev\",\n    \"url\": \"https://animbits.dev/r/{name}.json\",\n    \"description\": \"AnimBits is a collection animated UI components for React that use Framer Motion. The components provided include buttons, cards, text, icons, lists, loaders, and page transitions, animation hooks all of which have general-purpose effects that are not flashy and easy on the eyes, making them easy to use.\",\n    \"logo\": \"<svg  xmlns='http://www.w3.org/2000/svg' width='84' height='84' viewBox='0 0 84 84'><path d='m46.942 19.951 0.102 0.093c0.092 0.078 0.185 0.138 0.288 0.201 0.234 0.162 0.361 0.393 0.511 0.63 0.119 0.181 0.25 0.344 0.388 0.511 0.322 0.398 0.519 0.855 0.72 1.322 0.048 0.107 0.048 0.107 0.158 0.206 0.156 0.419 0.336 0.921 0.219 1.367 -0.214 0.23 -0.472 0.346 -0.783 0.368q-0.159 0.002 -0.318 -0.002l-0.172 0a27.48 27.48 0 0 1 -0.357 -0.004 32.566 32.566 0 0 0 -0.545 -0.003q-0.174 -0.001 -0.348 -0.003l-0.163 -0.001c-0.378 -0.008 -0.648 -0.059 -0.95 -0.3 -0.16 -0.191 -0.285 -0.395 -0.416 -0.606 -0.697 -1.074 -1.649 -1.712 -2.898 -1.99 -0.108 -0.017 -0.213 -0.024 -0.322 -0.029l-0.166 -0.009c-1.183 -0.032 -2.282 0.345 -3.192 1.103 -0.884 0.842 -1.299 2.043 -1.673 3.172l-0.051 0.154a164.145 164.145 0 0 0 -0.356 1.082q-0.061 0.186 -0.122 0.371a73.828 73.828 0 0 0 -0.172 0.53l-0.053 0.16c-0.112 0.354 -0.194 0.699 -0.078 1.065 0.14 0.232 0.294 0.435 0.47 0.641 0.751 0.901 1.113 2.219 1.018 3.38 -0.164 1.265 -0.803 2.537 -1.793 3.357 -1.322 0.965 -2.699 1.14 -4.277 1.018H31.5v-0.219l-0.178 -0.01c-0.619 -0.082 -1.101 -0.422 -1.572 -0.81l-0.143 -0.117c-0.23 -0.197 -0.425 -0.38 -0.568 -0.648v-0.164l-0.092 -0.01c-0.247 -0.087 -0.358 -0.233 -0.47 -0.461 -0.568 -1.394 -0.672 -2.947 -0.114 -4.361 0.531 -1.133 1.397 -1.908 2.55 -2.372l0.154 -0.063c0.239 -0.092 0.438 -0.168 0.696 -0.18 0.242 -0.015 0.399 -0.039 0.613 -0.154 0.248 -0.336 0.335 -0.777 0.448 -1.172q0.054 -0.176 0.109 -0.351a53.402 53.402 0 0 0 0.216 -0.71c0.129 -0.43 0.269 -0.856 0.413 -1.282q0.061 -0.182 0.122 -0.364c0.656 -1.963 1.528 -3.677 3.286 -4.871l0.144 -0.099c3.046 -2.026 7.093 -1.785 9.83 0.636' fill='var(--foreground)'/><path d='M57.912 40.831c0.248 0.195 0.497 0.392 0.713 0.623v0.109l0.094 0.007c0.184 0.07 0.263 0.21 0.367 0.369l0.066 0.098c0.687 1.047 0.945 2.325 0.724 3.556a5.732 5.732 0 0 1 -1.416 2.65l-0.105 0.112 -0.094 0.095c-0.186 0.288 -0.125 0.605 -0.06 0.924l0.02 0.111c0.048 0.239 0.048 0.239 0.239 0.392a4.348 4.348 0 0 1 0.096 0.396c0.081 0.378 0.184 0.743 0.304 1.111 0.739 2.274 1.228 4.537 0.304 6.844 -0.085 0.215 -0.118 0.387 -0.103 0.618l-0.1 0.006c-0.135 0.041 -0.135 0.041 -0.194 0.199l-0.071 0.195c-0.251 0.64 -0.703 1.125 -1.166 1.624q-0.081 0.091 -0.162 0.183c-1.09 1.223 -2.612 2.123 -4.213 2.497l-0.204 0.049c-2.128 0.456 -4.165 -0.1 -6.048 -1.071l-0.116 -0.059c-0.229 -0.121 -0.409 -0.248 -0.578 -0.45 -0.04 -0.222 -0.05 -0.347 0.059 -0.544 0.21 -0.284 0.436 -0.471 0.73 -0.663 0.319 -0.21 0.587 -0.431 0.851 -0.708 0.705 -0.658 0.705 -0.658 1.148 -0.656 0.208 0.037 0.409 0.095 0.612 0.154q0.17 0.046 0.34 0.092l0.162 0.044c1.193 0.318 2.466 0.21 3.551 -0.388 1.081 -0.629 1.861 -1.575 2.212 -2.78 0.276 -1.111 0.119 -2.248 -0.229 -3.322l-0.048 -0.149c-0.089 -0.259 -0.168 -0.404 -0.366 -0.596 -0.036 -0.156 -0.036 -0.156 -0.051 -0.338 -0.042 -0.361 -0.126 -0.69 -0.235 -1.036 -0.053 -0.17 -0.098 -0.332 -0.125 -0.509l-0.026 -0.14 -0.109 -0.055c-0.056 -0.163 -0.102 -0.327 -0.148 -0.493 -0.089 -0.205 -0.151 -0.266 -0.344 -0.382 -0.267 -0.102 -0.542 -0.182 -0.816 -0.264 -0.375 -0.118 -0.675 -0.264 -0.989 -0.502l-0.146 -0.108 -0.114 -0.09 -0.115 -0.091 -0.117 -0.094 -0.132 -0.098c-0.174 -0.149 -0.309 -0.314 -0.449 -0.494l-0.079 -0.098c-0.126 -0.161 -0.228 -0.311 -0.305 -0.501 -0.059 -0.173 -0.059 -0.173 -0.158 -0.259 -0.513 -0.521 -0.484 -1.706 -0.484 -2.375 0.024 -1.326 0.609 -2.341 1.528 -3.262 1.656 -1.574 4.222 -1.848 6.093 -0.482' fill='var(--foreground)'/><path d='m50.725 27.158 0.134 0.131v0.164l0.109 0.031c0.575 0.276 0.927 0.867 1.258 1.391l0.039 0.116c0.108 0.159 0.273 0.175 0.453 0.212 0.151 0.016 0.297 0.027 0.448 0.033l0.129 0.006c0.448 0.02 0.897 0.024 1.345 0.026q0.224 0.001 0.448 0.003c0.424 0.003 0.847 0.006 1.271 0.008 2.309 0.011 2.309 0.011 3.249 0.197l0.208 0.039c0.166 0.033 0.331 0.069 0.496 0.108l0.165 0.037q0.194 0.044 0.388 0.089v0.164l0.099 0.019c1.474 0.335 2.581 1.5 3.456 2.661l0.099 0.126c1.082 1.394 1.499 3.23 1.504 4.963l0.001 0.11c0.001 0.432 -0.023 0.834 -0.127 1.253l-0.032 0.142c-0.295 1.309 -0.839 2.73 -1.828 3.686l-0.117 0.026 -0.102 0.029a7.219 7.219 0 0 0 -0.109 0.273c-0.388 0.461 -0.741 0.767 -1.349 0.827 -0.153 -0.008 -0.22 -0.028 -0.346 -0.116 -0.079 -0.157 -0.079 -0.157 -0.151 -0.356l-0.039 -0.107q-0.041 -0.112 -0.08 -0.225a28.711 28.711 0 0 0 -0.123 -0.341c-0.12 -0.332 -0.222 -0.644 -0.263 -0.994l-0.273 -0.055c-0.087 -0.464 -0.137 -0.856 0 -1.313h0.164l0.04 -0.114c0.082 -0.188 0.191 -0.349 0.305 -0.518 0.42 -0.637 0.638 -1.289 0.694 -2.047l0.009 -0.11c0.041 -0.974 -0.344 -2.009 -0.894 -2.796 -0.097 -0.116 -0.097 -0.116 -0.263 -0.157l-0.065 -0.14c-0.357 -0.677 -1.157 -1.145 -1.87 -1.374 -0.842 -0.255 -1.738 -0.262 -2.61 -0.26l-0.334 -0.001q-0.346 -0.001 -0.692 0c-0.295 0.001 -0.59 0 -0.885 -0.002q-0.343 -0.001 -0.686 -0.001a51.516 51.516 0 0 1 -0.326 -0.001 39.293 39.293 0 0 0 -0.455 0.001l-0.134 -0.002c-0.343 0.004 -0.64 0.091 -0.891 0.334 -0.084 0.095 -0.162 0.195 -0.239 0.296 -1.173 1.517 -1.173 1.517 -1.901 1.613L49.875 35.273l-0.052 0.107c-0.058 0.112 -0.058 0.112 -0.158 0.157l-0.123 0.024 -0.139 0.028 -0.15 0.026 -0.155 0.028c-1.304 0.216 -2.583 0.015 -3.708 -0.698 -0.212 -0.153 -0.407 -0.318 -0.602 -0.492l-0.154 -0.129c-0.834 -0.748 -1.223 -2.012 -1.282 -3.105 -0.045 -1.282 0.372 -2.499 1.241 -3.452a21.41 21.41 0 0 1 0.304 -0.314l0.105 -0.111c1.439 -1.401 4.18 -1.389 5.722 -0.184' fill='var(--foreground)'/><path d='M26.305 29.531c0.12 0.452 0.029 0.922 -0.041 1.374 -0.042 0.277 -0.076 0.551 -0.094 0.831l-0.012 0.171q-0.01 0.163 -0.017 0.326c-0.022 0.341 -0.071 0.512 -0.328 0.743 -0.163 0.092 -0.163 0.092 -0.345 0.164l-0.1 0.04a15.914 15.914 0 0 1 -0.542 0.204c-1.084 0.39 -2.036 0.999 -2.585 2.049 -0.558 1.194 -0.717 2.528 -0.307 3.793 0.153 0.389 0.36 0.735 0.598 1.078l0.084 0.121c0.566 0.785 1.41 1.403 2.192 1.96 0.262 0.187 0.504 0.392 0.747 0.601a5.66 5.66 0 0 0 0.647 0.477c0.133 0.086 0.254 0.185 0.376 0.285 0.256 0.128 0.597 0.084 0.866 0.015 0.289 -0.1 0.289 -0.1 0.473 -0.33l0.082 -0.123c0.13 -0.016 0.25 -0.01 0.38 0.001 0.153 -0.001 0.273 -0.021 0.421 -0.054 1.058 -0.224 2.174 -0.037 3.136 0.436l0.182 0.086c1.146 0.593 1.873 1.65 2.292 2.843 0.136 0.432 0.17 0.848 0.165 1.299l-0.002 0.168c-0.02 1.266 -0.469 2.511 -1.388 3.41 -0.586 0.543 -1.389 1.03 -2.179 1.162l-0.055 0.109q-0.383 0.008 -0.767 0.012 -0.13 0.002 -0.259 0.005c-0.786 0.017 -1.573 -0.054 -2.276 -0.44l-0.108 -0.057c-0.544 -0.294 -1.013 -0.677 -1.457 -1.105l-0.106 -0.1c-0.331 -0.341 -0.599 -0.849 -0.691 -1.317l-0.023 -0.115 -0.109 -0.055v-0.547l-0.164 -0.055 -0.007 -0.133a77.684 77.684 0 0 0 -0.034 -0.602l-0.01 -0.209c-0.03 -0.471 -0.075 -0.865 -0.407 -1.218l-0.144 -0.108 -0.16 -0.123 -0.168 -0.123 -0.166 -0.127a19.441 19.441 0 0 0 -0.777 -0.564c-0.208 -0.144 -0.396 -0.299 -0.585 -0.467 -0.421 -0.374 -0.814 -0.682 -1.37 -0.811l0.109 -0.273 -0.097 -0.043c-0.128 -0.069 -0.211 -0.143 -0.313 -0.247l-0.106 -0.107 -0.109 -0.112 -0.109 -0.11q-0.105 -0.107 -0.21 -0.214c-0.161 -0.164 -0.322 -0.327 -0.49 -0.484 -0.389 -0.39 -0.634 -0.832 -0.887 -1.319l-0.086 -0.162 -0.075 -0.146c-0.106 -0.142 -0.194 -0.177 -0.361 -0.228l0.032 -0.113c0.028 -0.198 -0.006 -0.341 -0.052 -0.535l-0.051 -0.221 -0.027 -0.116c-0.158 -0.67 -0.3 -1.333 -0.339 -2.022l-0.013 -0.195c-0.058 -1.606 0.499 -3.261 1.326 -4.618l0.062 -0.103c0.267 -0.443 0.56 -0.837 0.922 -1.209l0.095 -0.101c0.273 -0.285 0.578 -0.531 0.89 -0.774l0.169 -0.132c0.691 -0.524 1.481 -0.937 2.293 -1.241 0.118 -0.04 0.118 -0.04 0.163 -0.159h0.109v0.109l0.117 -0.036c0.573 -0.15 1.635 -0.345 2.179 -0.073' fill='var(--foreground)'/><path d='M43.074 50.406c0.12 0.002 0.239 0.002 0.359 0.003 0.366 0.002 0.721 0.017 1.083 0.068l0.055 0.219 0.15 0.01c0.771 0.116 1.497 0.653 1.982 1.248v0.109l0.098 0.04c0.441 0.254 0.732 0.973 0.887 1.437q0.003 0.191 0 0.383l0.164 0.055c0.335 1.256 0.035 2.62 -0.591 3.736 -0.189 0.298 -0.424 0.549 -0.667 0.803l-0.09 0.102c-0.668 0.732 -1.761 1.215 -2.738 1.274 -0.941 0.037 -1.774 -0.084 -2.674 -0.35 -0.294 -0.067 -0.51 -0.094 -0.771 0.07a10.418 10.418 0 0 0 -0.212 0.154l-0.115 0.082a30.105 30.105 0 0 0 -0.233 0.17 23.379 23.379 0 0 1 -0.319 0.229 68.906 68.906 0 0 0 -0.85 0.612 75.715 75.715 0 0 1 -0.786 0.564l-0.116 0.083a12.879 12.879 0 0 1 -0.678 0.447c-0.123 0.077 -0.24 0.161 -0.357 0.246 -0.427 0.301 -0.865 0.565 -1.356 0.747 -0.14 0.054 -0.27 0.119 -0.405 0.186 -1.348 0.62 -3.32 0.835 -4.761 0.468a6.809 6.809 0 0 1 -0.273 -0.109l-0.109 0.109 -0.055 -0.164c-0.107 -0.049 -0.107 -0.049 -0.239 -0.079l-0.152 -0.042 -0.156 -0.043c-1.084 -0.329 -2.005 -0.986 -2.85 -1.722a7.629 7.629 0 0 0 -0.281 -0.233c-0.329 -0.263 -0.556 -0.598 -0.789 -0.944a24.609 24.609 0 0 0 -0.148 -0.217c-0.689 -1.003 -1.217 -2.044 -1.309 -3.272a6.809 6.809 0 0 0 -0.037 -0.338l-0.109 -0.055c-0.031 -2.79 -0.031 -2.79 0.383 -3.391 0.23 -0.175 0.427 -0.198 0.711 -0.164 0.326 0.11 0.587 0.327 0.86 0.531 0.289 0.202 0.594 0.376 0.9 0.552l0.11 0.064c0.084 0.048 0.168 0.093 0.254 0.138 0.182 0.127 0.267 0.28 0.313 0.497l0.013 0.149 0.016 0.168 0.016 0.178c0.157 1.456 0.616 2.827 1.784 3.794 0.212 0.141 0.431 0.264 0.656 0.383l0.112 0.065c1.067 0.59 2.597 0.623 3.747 0.298C33.633 59.719 33.633 59.719 33.797 59.719l0.002 -0.097c0.084 -0.196 0.267 -0.244 0.452 -0.327 0.638 -0.303 1.192 -0.71 1.758 -1.129a19.113 19.113 0 0 1 0.477 -0.34 19.113 19.113 0 0 0 1.045 -0.777c0.173 -0.137 0.307 -0.237 0.524 -0.286 0.181 -0.033 0.181 -0.033 0.246 -0.188l0.034 -0.137 0.055 -0.109c0.006 -0.127 0.009 -0.254 0.01 -0.381l0.003 -0.237 0.002 -0.126c0.028 -1.592 0.353 -2.863 1.482 -4.059 0.361 -0.345 0.777 -0.554 1.227 -0.759l0.102 -0.047c0.604 -0.264 1.207 -0.323 1.857 -0.313' fill='var(--foreground)'/><path d='m30.352 37.242 0.273 0.055v0.055H30.352z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@shadcn-space\",\n    \"homepage\": \"https://shadcnspace.com\",\n    \"url\": \"https://shadcnspace.com/r/{name}.json\",\n    \"description\": \"ShadcnSpace is a collection of extra-ordinary, highly customizable shadcn/ui components, blocks, and themes to build modern UIs with speed and clarity.\",\n    \"logo\": \"<svg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'><circle cx='19.9501' cy='20.05' r='18.35' fill='#FCEA4E'/><path d='M29.1156 27.4609C27.4484 27.4609 26.082 27.1 25.0164 26.3781C23.9508 25.6563 23.3062 24.625 23.0828 23.2844L26.0734 22.511C26.1937 23.1125 26.3914 23.5852 26.6664 23.9289C26.9586 24.2727 27.3109 24.5219 27.7234 24.6766C28.1531 24.8141 28.6172 24.8828 29.1156 24.8828C29.8718 24.8828 30.4304 24.7539 30.7914 24.4961C31.1523 24.2211 31.3328 23.886 31.3328 23.4906C31.3328 23.0953 31.1609 22.7946 30.8172 22.5883C30.4734 22.3649 29.9234 22.1844 29.1672 22.0469L28.4453 21.918C27.5515 21.7461 26.7351 21.5141 25.9961 21.2219C25.257 20.9125 24.6641 20.4914 24.2172 19.9586C23.7703 19.4258 23.5469 18.7383 23.5469 17.8961C23.5469 16.6243 24.0109 15.6532 24.9391 14.9829C25.8672 14.2954 27.0875 13.9516 28.6 13.9516C30.0265 13.9516 31.2125 14.2696 32.1578 14.9055C33.1031 15.5415 33.7218 16.375 34.014 17.4063L30.9976 18.3344C30.8601 17.6813 30.5765 17.2172 30.1468 16.9422C29.7343 16.6672 29.2187 16.5297 28.6 16.5297C27.9812 16.5297 27.5086 16.6415 27.182 16.8649C26.8555 17.0711 26.6922 17.3633 26.6922 17.7414C26.6922 18.1539 26.864 18.4633 27.2078 18.6696C27.5515 18.8586 28.0156 19.0047 28.6 19.1078L29.3218 19.2368C30.2843 19.4086 31.1523 19.6407 31.9257 19.9328C32.7164 20.2078 33.3351 20.6117 33.782 21.1446C34.246 21.6602 34.4781 22.3649 34.4781 23.2586C34.4781 24.5992 33.9882 25.6391 33.0086 26.3781C32.0461 27.1 30.7484 27.4609 29.1156 27.4609Z' fill='#222222'/></svg>\"\n  },\n  {\n    \"name\": \"@shadcn-dashboard\",\n    \"homepage\": \"https://shadcn-dashboard.com\",\n    \"url\": \"https://shadcn-dashboard.com/r/{name}.json\",\n    \"description\": \"ShadcnDashboard is a collection of modern, production-ready dashboard layouts, components, and UI patterns built on top of shadcn/ui and Tailwind CSS. It’s designed to help developers build clean, scalable, and data-driven dashboards faster—without compromising on performance, accessibility, or customization.\",\n    \"logo\": \"<svg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'><rect width='40' height='40' rx='20' fill='#053B25'/><path d='M32.1327 19.501C31.5178 19.6123 30.8844 19.6705 30.2375 19.6705C24.3886 19.6705 19.6471 14.9189 19.6471 9.05765C19.6471 8.89469 19.6507 8.73258 19.658 8.57141C13.8411 9.10533 9.28516 14.0074 9.28516 19.9759C9.28516 26.301 14.4019 31.4286 20.7137 31.4286C27.0256 31.4286 32.1423 26.301 32.1423 19.9759C32.1423 19.8168 32.1391 19.6585 32.1327 19.501Z' fill='#C2FD75'/></svg>\"\n  },\n  {\n    \"name\": \"@icons-animated\",\n    \"homepage\": \"https://icons.lndev.me\",\n    \"url\": \"https://icons.lndev.me/r/{name}.json\",\n    \"description\": \"An open-source library of meticulously animated icons (Tabler, Phosphor, and more) for your projects, inspired by lucide-animated.com\",\n    \"logo\": \"<svg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M16 3C16 3 7 8 7 16C7 24 12 29 16 29C20 29 25 24 25 16C25 8 16 3 16 3Z' fill='var(--foreground)'/><circle cx='12' cy='14' r='2' fill='var(--background)'/><circle cx='20' cy='14' r='2' fill='var(--background)'/><path d='M11 20C11 20 13 22 16 22C19 22 21 20 21 20' stroke='var(--background)' stroke-width='1.5' stroke-linecap='round'/><path d='M16 3V10' stroke='var(--background)' stroke-width='1.5' stroke-linecap='round' opacity='0.6'/></svg>\"\n  },\n  {\n    \"name\": \"@heroicons-animated\",\n    \"homepage\": \"https://www.heroicons-animated.com/\",\n    \"url\": \"https://www.heroicons-animated.com/r/{name}.json\",\n    \"description\": \"An open-source collection of 316 beautifully animated heroicons for your projects.\",\n    \"logo\": \"<svg fill='none' viewBox='0 0 156 166' xmlns='http://www.w3.org/2000/svg'><path clipRule='evenodd' d='m78.091 0 5.967 5.676c15.038 14.306 35.323 23.067 57.663 23.067.356 0 .711-.002 1.065-.006l6.363-.08 1.988 6.072a102.026 102.026 0 0 1 5.045 31.782c0 47.391-32.269 87.19-75.928 98.477l-2.163.559-2.163-.559C32.27 153.701 0 113.902 0 66.511c0-11.085 1.769-21.772 5.045-31.782l1.988-6.072 6.363.08c.354.004.71.006 1.065.006 22.34 0 42.625-8.761 57.664-23.067L78.09 0Z' fill='#8b5cf6' fillRule='evenodd'/><circle cx='58' cy='78' fill='white' r='14'/><circle cx='98' cy='78' fill='white' r='14'/><circle cx='61' cy='82' fill='black' r='5.5'/><circle cx='95' cy='82' fill='black' r='5.5'/></svg>\"\n  },\n  {\n    \"name\": \"@darx\",\n    \"homepage\": \"https://darshitdev.in/arts\",\n    \"url\": \"https://darshitdev.in/r/{name}.json\",\n    \"description\": \"Magic 3D Tabs component featuring mouse-interactive 3D rotation, floating particles background effect, and smooth spring animations.\",\n    \"logo\": \"<svg width='75' height='43' viewBox='0 0 75 43' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 5H6.23601V37H0V5Z' fill='var(--foreground)'/><rect x='6.23602' y='37' width='23.1623' height='5' fill='var(--foreground)'/><rect x='6.23602' width='23.1623' height='5' fill='var(--foreground)'/><rect width='4.8923' height='17.1299' transform='matrix(0.932438 -0.361329 0.293952 0.95582 29.4029 4.76758)' fill='var(--foreground)'/><rect width='4.88783' height='17.1429' transform='matrix(0.937045 0.349208 -0.283616 0.958938 34.2604 21)' fill='var(--foreground)'/><rect x='49' width='22' height='5' fill='var(--foreground)'/><rect x='44' y='5' width='5' height='17' fill='var(--foreground)'/><path d='M49 22H71V27H49V22Z' fill='var(--foreground)'/><rect x='71' y='25' width='4' height='13' fill='var(--foreground)'/><rect x='49' y='38' width='22' height='5' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@beste-ui\",\n    \"homepage\": \"https://ui.beste.co\",\n    \"url\": \"https://ui.beste.co/r/{name}.json\",\n    \"description\": \"Production-ready UI blocks for landing pages, dashboards, and web apps.\",\n    \"logo\": \"<svg width='40' height='40' viewBox='0 0 64 64' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M26.0654 20.4591C26.0654 21.2317 25.2265 21.7125 24.5599 21.3219L7.92682 11.5768C7.4534 11.2994 7.2919 10.6923 7.56491 10.2164L8.42702 8.71343C8.70389 8.23075 9.32153 8.06692 9.80124 8.34893L20.8425 14.8398C21.5091 15.2317 22.3493 14.7511 22.3493 13.9778V1C22.3493 0.447716 22.797 0 23.3493 0H25.0654C25.6177 0 26.0654 0.447715 26.0654 1V20.4591ZM38.7193 21.3219C38.0526 21.7125 37.2137 21.2317 37.2137 20.4591V1C37.2137 0.447715 37.6615 0 38.2137 0H39.9298C40.4821 0 40.9298 0.447715 40.9298 1V13.9778C40.9298 14.7511 41.77 15.2317 42.4366 14.8398L53.4778 8.34896C53.9575 8.06694 54.5752 8.23079 54.8521 8.71351L55.714 10.2164C55.987 10.6923 55.8255 11.2994 55.3521 11.5767L38.7193 21.3219ZM44.214 32.8372C43.5533 32.4511 43.5533 31.4964 44.214 31.1103L60.9113 21.3542C61.3908 21.074 62.0068 21.2383 62.2832 21.72L63.1465 23.2251C63.4196 23.7012 63.258 24.3083 62.7845 24.5856L51.642 31.1108C50.9825 31.4971 50.9825 32.4504 51.642 32.8367L62.7845 39.3618C63.258 39.6392 63.4196 40.2463 63.1465 40.7223L62.2832 42.2275C62.0068 42.7092 61.3908 42.8735 60.9113 42.5933L44.214 32.8372ZM37.2137 43.4884C37.2137 42.7157 38.0526 42.235 38.7193 42.6256L55.3521 52.3707C55.8255 52.6481 55.987 53.2551 55.714 53.7311L54.8506 55.2365C54.5743 55.7182 53.9584 55.8825 53.4789 55.6025L42.4341 49.1525C41.7675 48.7632 40.9298 49.2441 40.9298 50.0161V62.9477C40.9298 63.5 40.4821 63.9477 39.9298 63.9477H38.2137C37.6615 63.9477 37.2137 63.5 37.2137 62.9477V43.4884ZM24.5598 42.6255C25.2265 42.235 26.0654 42.7157 26.0654 43.4884V62.9477C26.0654 63.5 25.6177 63.9477 25.0654 63.9477H23.3493C22.797 63.9477 22.3493 63.5 22.3493 62.9477V50.0161C22.3493 49.2441 21.5116 48.7632 20.845 49.1525L9.80019 55.6025C9.32065 55.8826 8.70478 55.7183 8.42847 55.2366L7.56491 53.7311C7.2919 53.2551 7.45339 52.6481 7.92682 52.3707L24.5598 42.6255ZM19.0185 31.1109C19.6778 31.4972 19.6778 32.4503 19.0185 32.8366L2.36849 42.5917C1.88887 42.8727 1.27213 42.7086 0.995546 42.2264L0.132762 40.7223C-0.140291 40.2463 0.0212938 39.6391 0.494843 39.3618L11.6371 32.8367C12.2966 32.4504 12.2966 31.4971 11.6371 31.1108L0.494846 24.5856C0.0212955 24.3083 -0.140287 23.7012 0.132771 23.2251L0.995544 21.7211C1.27213 21.2389 1.88886 21.0748 2.36848 21.3558L19.0185 31.1109ZM3.78864 47.1992C3.51994 46.7232 3.68321 46.1197 4.15523 45.8441L26.344 32.888C27.0044 32.5024 27.0051 31.5483 26.3453 31.1617L4.15309 18.1562C3.68204 17.8801 3.51948 17.2773 3.78788 16.8018L4.66272 15.2521C4.93728 14.7657 5.557 14.5985 6.03894 14.8808L28.2761 27.9051C28.9428 28.2955 29.7815 27.8148 29.7815 27.0422V0.999999C29.7815 0.447714 30.2292 0 30.7815 0H32.4976C33.0499 0 33.4976 0.447715 33.4976 1V26.9913C33.4976 27.7636 34.3358 28.2444 35.0025 27.8545L57.1951 14.8763C57.6747 14.5959 58.2909 14.7601 58.5673 15.242L59.4301 16.746C59.7033 17.2223 59.5413 17.8299 59.0672 18.1069L36.7323 31.1611C36.0712 31.5475 36.0719 32.5032 36.7337 32.8886L59.0651 45.8933C59.5401 46.17 59.7028 46.7782 59.4293 47.255L58.5665 48.7591C58.2904 49.2405 57.6752 49.4049 57.1957 49.1256L35.0011 36.1934C34.3344 35.805 33.4976 36.2859 33.4976 37.0575V63C33.4976 63.5523 33.0499 64 32.4976 64H30.7815C30.2292 64 29.7815 63.5523 29.7815 63V37.0066C29.7815 36.2347 28.9442 35.7538 28.2775 36.1429L6.03837 49.1211C5.55652 49.4023 4.93776 49.2349 4.66351 48.749L3.78864 47.1992Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@tokenui\",\n    \"homepage\": \"https://www.tokenui.dev\",\n    \"url\": \"https://www.tokenui.dev/r/{name}.json\",\n    \"description\": \"Beautiful, interactive documentation components for your design tokens following industry standards.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 34 34'><circle cx='16.9' cy='18' r='16' fill='var(--foreground)'/><circle cx='16.9' cy='16' r='16' fill='var(--background)'/><circle cx='16.9' cy='17' r='13' fill='var(--foreground)'/><circle cx='16.9' cy='19' r='13' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@lumiui\",\n    \"homepage\": \"https://www.lumiui.dev\",\n    \"url\": \"https://www.lumiui.dev/r/{name}.json\",\n    \"description\": \"Composable React components powered by Base UI and Tailwind CSS — Build fast, customize everything.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32' fill='var(--foreground)'><circle cx='16' cy='16' r='14'/></svg>\"\n  },\n  {\n    \"name\": \"@uselayouts\",\n    \"homepage\": \"https://uselayouts.com\",\n    \"url\": \"https://uselayouts.com/r/{name}.json\",\n    \"description\": \"A collection of premium animated React components and micro-interactions built with Motion for building fluid, professional interfaces.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='28' height='29' viewBox='0 0 28 29' fill='none'><path d='M28 9.28C28 4.90537 28 2.71805 26.6878 1.35902C25.3757 0 23.2638 0 19.04 0H8.96C4.73621 0 2.62432 0 1.31216 1.35902C7.15256e-07 2.71805 0 4.90537 0 9.28V19.72C0 24.0946 7.15256e-07 26.2819 1.31216 27.641C2.62432 29 4.73621 29 8.96 29H19.04C23.2638 29 25.3757 29 26.6878 27.641C28 26.2819 28 24.0946 28 19.72V9.28Z' fill='var(--background)'/><path d='M24.64 7.73893C24.64 5.64952 24.64 4.60482 23.9808 4.08249C23.3216 3.56016 22.348 3.83349 20.4009 4.38015L17.1142 5.3029C15.9212 5.63786 15.3247 5.80533 14.979 6.27333C14.6333 6.74132 14.6333 7.38144 14.6333 8.66168V16.6333C14.6333 18.7227 14.6333 19.7674 15.2926 20.2897C15.9518 20.812 16.9253 20.5387 18.8724 19.9921L22.1591 19.0693C23.3521 18.7344 23.9486 18.5669 24.2943 18.0989C24.64 17.6309 24.64 16.9908 24.64 15.7105V7.73893Z' fill='var(--foreground)'/><path d='M3.36 9.27561C3.36 6.48139 3.36 5.08427 4.24184 4.38789C5.12369 3.69151 6.42449 4.06141 9.02609 4.80119L9.94609 5.06279C11.5304 5.51331 12.3226 5.73856 12.7813 6.36167C13.24 6.98477 13.24 7.83559 13.24 9.53722V15.0966C13.24 17.8908 13.24 19.2879 12.3582 19.9843C11.4763 20.6807 10.1755 20.3108 7.5739 19.571L6.65391 19.3094C5.06958 18.8589 4.27741 18.6336 3.8187 18.0105C3.36 17.3874 3.36 16.5366 3.36 14.835V9.27561Z' fill='var(--foreground)'/><path d='M3.36 7.72924C3.36 5.6438 3.36 4.60108 4.01785 4.07873C4.6757 3.55638 5.64794 3.82712 7.59241 4.36859L10.9247 5.29652C12.1208 5.62959 12.7188 5.79613 13.0655 6.26455C13.4123 6.73296 13.4123 7.37437 13.4123 8.65717V16.5776C13.4123 18.6631 13.4123 19.7058 12.7544 20.2281C12.0966 20.7505 11.1243 20.4798 9.17985 19.9383L5.84759 19.0103C4.6515 18.6773 4.05346 18.5107 3.70673 18.0423C3.36 17.5739 3.36 16.9325 3.36 15.6497V7.72924Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@joyco\",\n    \"homepage\": \"https://registry.joyco.studio\",\n    \"url\": \"https://registry.joyco.studio/r/{name}.json\",\n    \"description\": \"Components including MobileMenu, ScrollArea with gradients, Chat UI, HLSVideoPlayer, and Marquee.\",\n    \"logo\": \"<svg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'><rect fill='var(--foreground)' width='32' height='32' rx='6.4'/><rect x='8' y='8' width='16' height='16' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@gooseui\",\n    \"homepage\": \"https://gooseui.pro\",\n    \"url\": \"https://gooseui.pro/r/{name}.json\",\n    \"description\": \"Open source component library with animated components, beautiful effects, and custom toast notifications. Built with Radix UI and Tailwind CSS.\",\n    \"logo\": \"<svg width='250' height='250' viewBox='0 0 250 250' fill='none' xmlns='http://www.w3.org/2000/svg'><path fill-rule='evenodd' clip-rule='evenodd' d='M125 0C194.036 0 250 55.9644 250 125C250 194.036 194.036 250 125 250C55.9644 250 0 194.036 0 125C0 55.9644 55.9644 0 125 0ZM157.01 104.497C155.131 95.6004 145.401 90.8275 137.216 94.7871L44.9951 139.397C31.6071 145.874 36.2193 166 51.0918 166H152.734C161.63 166 168.27 157.811 166.432 149.106L157.01 104.497ZM196 84C189.925 84 185 88.9249 185 95C185 101.075 189.925 106 196 106C202.075 106 207 101.075 207 95C207 88.9249 202.075 84 196 84Z' fill='var(--foreground)'/><path d='M137 106C137 107.657 138.343 109 140 109C141.657 109 143 107.657 143 106C143 104.343 141.657 103 140 103C138.343 103 137 104.343 137 106Z' fill='var(--foreground)'/></svg>\"\n  },\n  {\n    \"name\": \"@baselayer\",\n    \"homepage\": \"https://www.baselayer.dev\",\n    \"url\": \"https://www.baselayer.dev/r/{name}.json\",\n    \"description\": \"A collection of components built on React Aria, Tailwind CSS, and tailwind-variants.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 24 24'><path fill='var(--foreground)' d='M12 16c1.1 0 2 .9 2 2s-.9 2-2 2s-2-.9-2-2s.9-2 2-2m0-12c1.1 0 2 .9 2 2s-.9 2-2 2s-2-.9-2-2s.9-2 2-2M6 16c1.1 0 2 .9 2 2s-.9 2-2 2s-2-.9-2-2s.9-2 2-2m0-6c1.1 0 2 .9 2 2s-.9 2-2 2s-2-.9-2-2s.9-2 2-2m0-6c1.1 0 2 .9 2 2s-.9 2-2 2s-2-.9-2-2s.9-2 2-2m12 12c1.1 0 2 .9 2 2s-.9 2-2 2s-2-.9-2-2s.9-2 2-2m0-6c1.1 0 2 .9 2 2s-.9 2-2 2s-2-.9-2-2s.9-2 2-2m0-6c1.1 0 2 .9 2 2s-.9 2-2 2s-2-.9-2-2s.9-2 2-2Z'/></svg>\"\n  },\n  {\n    \"name\": \"@jolyui\",\n    \"homepage\": \"https://www.jolyui.dev\",\n    \"url\": \"https://www.jolyui.dev/r/{name}.json\",\n    \"description\": \"JolyUI is a modern React component library built with TypeScript and Tailwind CSS.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'><path fill='var(--foreground)' d='M0 0 C39.93 0 79.86 0 121 0 C121.1209091 50.10114965 121.1209091 50.10114965 121.14648438 71.18359375 C121.16424757 85.70917966 121.18506799 100.23471316 121.22631836 114.76025391 C121.25635355 125.34168311 121.27560632 135.92306956 121.28226548 146.50454021 C121.28615396 152.0999562 121.29520098 157.69524996 121.31719017 163.29062653 C121.33777913 168.57324697 121.34378925 173.85569658 121.33932304 179.13835335 C121.34013834 181.06180568 121.34596893 182.98526463 121.35761642 184.90868187 C121.451058 201.15677347 120.32020838 217.55363677 115.3125 233.125 C115.05831299 233.93791504 114.80412598 234.75083008 114.54223633 235.58837891 C109.9498165 249.78213143 103.72121689 262.88992731 95 275 C94.58911133 275.57169922 94.17822266 276.14339844 93.75488281 276.73242188 C70.81449716 308.17249205 36.77577297 329.80568888 -1.75 336.25 C-13.76268103 337.78966332 -25.75589059 338.1500638 -37.85180664 338.14526367 C-39.38628215 338.14826491 -40.92075691 338.15166961 -42.45523071 338.15544128 C-46.58171726 338.16418895 -50.70818301 338.1666155 -54.83467793 338.16725707 C-57.4256246 338.16797302 -60.01656614 338.17011757 -62.60751152 338.17275429 C-71.68324996 338.18197826 -80.75897382 338.18609302 -89.8347168 338.18530273 C-98.23475258 338.18470324 -106.63472388 338.19523751 -115.03474337 338.2110464 C-122.29559406 338.22421419 -129.55642392 338.22948277 -136.81728643 338.22884732 C-141.13202437 338.22859497 -145.44670492 338.23129816 -149.76143074 338.24202538 C-191.76433013 338.33906877 -231.77856438 335.21920341 -266 308 C-266.89976562 307.30261719 -267.79953125 306.60523438 -268.7265625 305.88671875 C-292.40284771 287.11242498 -309.86267276 261.625783 -318.375 232.5625 C-318.6013916 231.80259766 -318.8277832 231.04269531 -319.06103516 230.25976562 C-324.03051855 212.05450564 -324.51169272 193.63352477 -324.44604492 174.88085938 C-324.43681038 172.11948491 -324.44390319 169.35895267 -324.46655273 166.59765625 C-324.66546019 142.21824436 -323.76698709 122.01827949 -305.85546875 103.73046875 C-293.48600031 91.90248183 -278.57734172 86.59751294 -261.6550293 86.62915039 C-244.59679486 87.07486134 -230.93381413 94.10835483 -219 106 C-218.43539062 106.54140625 -217.87078125 107.0828125 -217.2890625 107.640625 C-205.92489024 119.54594832 -202.54261408 136.21357888 -202.62890625 152.0703125 C-202.6115345 154.53776188 -202.59395002 157.00520977 -202.57617188 159.47265625 C-202.56609275 163.3081326 -202.56250821 167.14351483 -202.56420898 170.97900391 C-202.56062615 174.71805075 -202.5332516 178.45639208 -202.50390625 182.1953125 C-202.51208878 183.33098663 -202.5202713 184.46666077 -202.52870178 185.63674927 C-202.45042692 194.07354666 -201.10255316 201.24427775 -195.625 207.875 C-185.44217662 216.11823798 -176.71664834 216.29885151 -164.02197266 216.2746582 C-162.5099411 216.279011 -160.99791174 216.28419604 -159.48588562 216.29014587 C-155.39695029 216.30348638 -151.30810767 216.30412006 -147.21915483 216.30158257 C-143.79739151 216.30050945 -140.37564669 216.30540498 -136.95388734 216.310188 C-128.87679611 216.32126618 -120.79975139 216.32173018 -112.72265625 216.31567383 C-104.40882931 216.30963552 -96.09517168 216.32194528 -87.78137362 216.3432439 C-80.62611493 216.36089595 -73.47090996 216.36685556 -66.31563032 216.36360615 C-62.04975551 216.36179882 -57.78400147 216.36437432 -53.51814651 216.37832069 C-49.5043267 216.39095317 -45.49076958 216.3889041 -41.47695351 216.37590981 C-40.01049394 216.37355618 -38.54401557 216.3762348 -37.07757759 216.38453293 C-26.89503691 216.43796308 -16.896705 216.07740955 -8.53515625 209.59375 C-2.6618509 203.49627269 -0.85242104 196.39877634 -0.84178162 188.19831848 C-0.83437465 186.99390918 -0.83437465 186.99390918 -0.82681805 185.76516837 C-0.81141994 183.06585981 -0.80307616 180.36657508 -0.79467773 177.66723633 C-0.78510103 175.73578175 -0.77509107 173.80432928 -0.76467896 171.87287903 C-0.73760134 166.62117149 -0.71660724 161.36945494 -0.69667697 156.11771607 C-0.67483503 150.63239025 -0.64743758 145.14709229 -0.62062073 139.66178894 C-0.57066958 129.27085928 -0.52573974 118.87991417 -0.48259836 108.48895425 C-0.42402353 94.45027658 -0.35772366 80.41163556 -0.29184818 66.37299061 C-0.18823561 44.24868508 -0.09497163 22.12434821 0 0 Z' transform='translate(327,171)'/><path fill='var(--foreground)' d='M0 0 C1.25318527 -0.0049649 2.50637054 -0.00992981 3.79753113 -0.01504517 C7.21745969 -0.02709835 10.63732755 -0.03459788 14.05727005 -0.03905582 C16.20223496 -0.04200169 18.3471947 -0.04610934 20.49215698 -0.05056 C27.22723074 -0.06421539 33.96229248 -0.07389038 40.69737911 -0.07776189 C48.42688531 -0.08223146 56.1562137 -0.09973621 63.88566589 -0.12876248 C69.88942818 -0.15051184 75.89314095 -0.16047325 81.89694214 -0.16180301 C85.46886057 -0.16284204 89.04061145 -0.16855378 92.61248779 -0.18662262 C129.57816081 -0.36297291 129.57816081 -0.36297291 142.6328125 6.72363281 C143.28886475 7.0680542 143.94491699 7.41247559 144.62084961 7.76733398 C160.03479879 16.23680612 169.07254711 30.06828618 174.0703125 46.64941406 C177.71521395 62.1149334 175.19155652 79.02274188 167.00390625 92.64160156 C157.54357165 106.79917887 145.03078159 116.18600142 128.47299194 120.5443306 C122.6834413 121.67702034 116.90796502 121.57700645 111.02734375 121.54931641 C109.62486362 121.5533913 108.22238672 121.55873829 106.81991577 121.56524658 C103.04300804 121.57881705 99.26634867 121.5736645 95.4894371 121.56410933 C91.51744722 121.55645901 87.54547714 121.56357313 83.57348633 121.56826782 C76.90604882 121.57370985 70.23871135 121.56657473 63.57128906 121.55224609 C55.88735721 121.53592255 48.20366426 121.54121216 40.5197382 121.55772531 C33.89602409 121.57138464 27.27238146 121.5732382 20.6486578 121.5654093 C16.70417814 121.56075712 12.75981039 121.56003969 8.81533813 121.57001877 C5.10513882 121.57875127 1.3952444 121.57255335 -2.31492233 121.555336 C-4.30822086 121.54954448 -6.30154548 121.55833274 -8.29483032 121.56771851 C-25.58438964 121.44692814 -40.82723529 115.28519475 -53.05078125 103.05957031 C-66.43671798 88.301227 -69.67243646 72.05832517 -68.87939453 52.76318359 C-68.45171364 47.19078388 -66.89053953 42.29294499 -64.6796875 37.16113281 C-64.35226562 36.3090625 -64.02484375 35.45699219 -63.6875 34.57910156 C-57.63425209 20.55058906 -44.44596789 10.02223098 -30.6796875 4.16113281 C-20.50700626 0.44656285 -10.73390075 0.01024637 0 0 Z' transform='translate(333.6796875,2.8388671875)'/></svg>\"\n  },\n  {\n    \"name\": \"@fab-ui\",\n    \"homepage\": \"https://fab-ui.com\",\n    \"url\": \"https://fab-ui.com/r/{name}.json\",\n    \"description\": \"A collection of beautifully designed UI components for building modern web applications.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32' fill='var(--foreground)'><rect width='32' height='32' rx='4'/></svg>\"\n  },\n  {\n    \"name\": \"@asanshay\",\n    \"homepage\": \"https://ds.asanshay.com\",\n    \"url\": \"https://ds.asanshay.com/r/{name}.json\",\n    \"description\": \"Clean, beautiful, and simple UI primitives and AI elements.\",\n    \"logo\": \"<svg width='64' height='64' viewBox='0 0 64 64' xmlns='http://www.w3.org/2000/svg'><rect x='1.5' y='36' width='60' height='14' rx='7' transform='rotate(-4 31.5 43)' stroke='var(--foreground)' stroke-width='1.3' fill='none'/><rect x='5' y='12' width='54' height='15' rx='7' transform='rotate(13 32 19.5)' stroke='var(--foreground)' stroke-width='1.3' fill='none'/></svg>\"\n  },\n  {\n    \"name\": \"@headcodecms\",\n    \"homepage\": \"https://headcodecms.com\",\n    \"url\": \"https://headcodecms.com/r/{name}.json\",\n    \"description\": \"A Minimalistic Web CMS for Next.js, optimized for Cache Components.\",\n    \"logo\": \"<svg width='93' height='93' viewBox='0 0 93 93' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M46.5 93C72.1812 93 93 72.1812 93 46.5C93 20.8188 72.1812 0 46.5 0C20.8188 0 0 20.8188 0 46.5C0 72.1812 20.8188 93 46.5 93Z' fill='var(--foreground)'/><path d='M39.04 41.4L33.77 73H13.59L26.02 -1.91H45.48L40.65 27.5H41.24C43.07 23.92 45.63 21.12 48.92 19.12C52.21 17.1 55.94 16.08 60.11 16.08C64.06 16.08 67.35 16.98 69.99 18.79C72.62 20.59 74.49 23.08 75.59 26.25C76.69 29.42 76.89 33.05 76.21 37.15L70.21 73H50.02L55.29 41.4C55.73 38.62 55.38 36.44 54.23 34.85C53.11 33.27 51.27 32.47 48.71 32.47C47.05 32.47 45.54 32.84 44.17 33.57C42.83 34.28 41.71 35.3 40.8 36.64C39.92 37.96 39.34 39.54 39.04 41.39V41.4Z' fill='var(--background)'/></svg>\"\n  },\n  {\n    \"name\": \"@typedora-ui\",\n    \"homepage\": \"https://typedora-ui.netlify.app\",\n    \"url\": \"https://typedora-ui.netlify.app/r/{name}.json\",\n    \"description\": \"Typedora UI is a next-generation extension layer for shadcn/ui, designed to bring full type-safety to your UI components.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><g><path d='m22 7h-20c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h20c1.1 0 2-.9 2-2v-7c0-1.1-.9-2-2-2zm-20 10c-.551 0-1-.449-1-1v-7c0-.551.449-1 1-1h12v9zm21-1c0 .551-.449 1-1 1h-7v-9h7c.551 0 1 .449 1 1z'/><path d='m19 14 2-2h-4z'/><path d='m4 10.5h3v.5c0 .276.224.5.5.5s.5-.224.5-.5v-1c0-.276-.224-.5-.5-.5h-3.5c-.276 0-.5.224-.5.5s.224.5.5.5zm1.5.5v3c0 .276.224.5.5.5s.5-.224.5-.5v-3z'/></g></svg>\"\n  },\n  {\n    \"name\": \"@sona-ui\",\n    \"homepage\": \"https://sona-ui.vercel.app\",\n    \"url\": \"https://sona-ui.vercel.app/r/{name}.json\",\n    \"description\": \"A modern UI component library built with React and TailwindCSS to help you build beautiful and accessible web applications faster.\",\n    \"logo\": \"<svg width='256' height='256' viewBox='0 0 256 256' fill='none' xmlns='http://www.w3.org/2000/svg'> <path d='M0 18.5887C0 8.32245 8.32244 0 18.5887 0H237.411C247.678 0 256 8.32244 256 18.5887V237.411C256 247.678 247.678 256 237.411 256H18.5887C8.32245 256 0 247.678 0 237.411V18.5887Z' fill='black'/> <path d='M128.001 30.0059C128.001 83.7034 171.192 127.313 224.728 127.991L225.994 128L224.728 128.008C171.192 128.686 128.001 172.296 128.001 225.994V256H128V225.994C128 171.873 84.1271 128 30.0068 128L31.273 127.991C84.8099 127.314 128 83.7036 128 30.0059V0.000488281H128.001V30.0059Z' fill='#D9D9D9'/></svg>\"\n  },\n  {\n    \"name\": \"@soundcn\",\n    \"homepage\": \"https://soundcn.xyz\",\n    \"url\": \"https://soundcn.xyz/r/{name}.json\",\n    \"description\": \"Large collection of game, interface, retro, and voice sound effects for web applications\",\n    \"logo\": \"<svg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'><rect x='0' y='8.1' width='3' height='9.9' rx='1.5' fill='currentColor'/><rect x='3.75' y='1.8' width='3' height='16.2' rx='1.5' fill='currentColor'/><rect x='7.5' y='11.7' width='3' height='6.3' rx='1.5' fill='currentColor'/><rect x='11.25' y='4.5' width='3' height='13.5' rx='1.5' fill='currentColor'/><rect x='15' y='9.9' width='3' height='8.1' rx='1.5' fill='currentColor'/></svg>\"\n  },\n  {\n    \"name\": \"@pixelact-ui\",\n    \"homepage\": \"https://pixelactui.com\",\n    \"url\": \"https://pixelactui.com/r/{name}.json\",\n    \"description\": \"Playful pixel art style components library built on top of shadcn. Perfect for retro style projects and games.\",\n    \"logo\": \"<svg width='142' height='183' viewBox='0 0 142 183' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M15.2064 180.083L42.174 153.149L69.5072 125.849L69.862 125.494L70.3635 125.483L78.0303 125.317H78.0312C85.7118 125.157 88.5765 124.815 94.003 123.399L94.5365 123.258L94.5395 123.257C103.166 120.989 113.098 115.162 120.204 108.182L120.54 107.849L120.541 107.848C135.619 92.8027 141.526 73.2859 137.398 51.9169L137.298 51.4119C135.855 44.2949 132.025 35.3652 127.809 29.3779L127.608 29.0949L127.607 29.0937C124.909 25.3219 119.092 19.2102 115.617 16.4485C105.997 8.98633 94.9963 4.66338 82.8733 3.62622L82.295 3.57934L82.292 3.5791C79.8227 3.38418 62.0647 3.24976 39.8237 3.24976H2.80725V147.144L14.7057 135.217L28.405 121.518L28.2073 76.3719L28.0073 30.6719L28.0018 29.4162H53.9905C80.7573 29.4162 82.1783 29.4669 87.8193 31.3472L87.8218 31.3479L87.8238 31.3487C93.027 33.1059 97.0828 35.5327 101.114 39.3222L101.115 39.3234L101.116 39.3247C105.58 43.5467 108.758 48.7357 110.652 54.8639L110.653 54.8684C111.077 56.2607 111.331 57.1967 111.464 58.5802C111.592 59.9097 111.607 61.6499 111.607 64.6592C111.639 70.1252 111.588 71.4352 110.957 73.6892L110.823 74.1542C107.224 86.6017 97.5303 95.6487 84.5165 98.7817L84.51 98.7832L84.503 98.7847L84.3335 98.8217C82.6505 99.1737 79.6405 99.3334 73.387 99.4574L72.0462 99.4829H72.0448L62.5187 99.6412L48.7433 113.481C42.919 119.356 33.8113 128.513 25.8964 136.478L18.5446 143.88L18.5429 143.882L2.80725 159.683V180.083H15.2064Z' fill='white' stroke='black' stroke-width='5'/></svg>\"\n  },\n  {\n    \"name\": \"@emerald-ui\",\n    \"homepage\": \"https://emerald-ui.com\",\n    \"url\": \"https://emerald-ui.com/r/{name}.json\",\n    \"description\": \"Emerald UI - collection of components built with Motion, GSAP, Tailwind CSS and shadcn/ui.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80' fill='none'><rect width='80' height='80' fill='white'/><g clip-path='url(#clip0_595_36)'><path d='M24.0805 33.0063C24.0806 34.1027 24.0891 35.1306 24.0787 36.1583C24.0639 37.6024 23.0121 38.2398 21.7448 37.5214C19.0636 36.0015 16.4085 34.4364 13.7403 32.8938C13.123 32.537 12.4933 32.2012 11.8745 31.847C11.0054 31.3496 10.5789 30.6428 10.5886 29.6043C10.6209 26.1329 10.6493 22.6597 10.5673 19.1898C10.5302 17.6206 11.6254 16.7907 13.1718 17.6763C15.9664 19.2769 18.7463 20.9025 21.5327 22.517C21.9904 22.7822 22.4504 23.0437 22.9086 23.308C23.7454 23.7907 24.1063 24.5073 24.0964 25.4691C24.0709 27.9584 24.0832 30.4482 24.0805 33.0063Z' fill='black'/><path d='M10.5936 57.5526C10.5935 55.9539 10.5883 54.4237 10.5945 52.8935C10.6002 51.5036 11.6471 50.835 12.8832 51.5182C15.1176 52.753 17.308 54.0659 19.516 55.3477C20.5703 55.9597 21.6111 56.5958 22.6795 57.1826C23.6658 57.7242 24.1172 58.4947 24.1049 59.6318C24.0683 63.0344 24.0943 66.4376 24.0893 69.8405C24.0867 71.6056 23.0684 72.1982 21.5221 71.319C18.283 69.4773 15.0554 67.6159 11.8187 65.7703C10.9854 65.2952 10.5656 64.6369 10.5841 63.6504C10.6218 61.6413 10.5942 59.631 10.5936 57.5526Z' fill='black'/><path d='M65.118 52.658C65.8826 52.2257 66.5838 51.778 67.3307 51.4249C68.4283 50.9061 69.5036 51.552 69.5094 52.752C69.527 56.4052 69.5037 60.0587 69.4954 63.7121C69.4931 64.7298 68.8843 65.3277 68.0564 65.8007C65.3011 67.375 62.5543 68.9637 59.8045 70.5474C59.2468 70.8686 58.7065 71.2244 58.1297 71.5074C56.9857 72.0686 56.0234 71.47 56.021 70.2046C56.0139 66.5055 56.031 62.8063 56.0113 59.1074C56.0061 58.1427 56.5538 57.607 57.3086 57.1715C59.6991 55.7924 62.0878 54.4102 64.4773 53.0293C64.6764 52.9142 64.8759 52.7996 65.118 52.658Z' fill='black'/><path d='M20.0154 9.92146C21.1933 9.23838 22.3319 8.58795 23.4562 7.914C24.4687 7.30701 25.442 7.34392 26.454 7.9404C29.4461 9.70405 32.4534 11.4424 35.4542 13.1916C36.9367 14.0558 36.9824 15.2764 35.5139 16.1435C32.4839 17.9326 29.4226 19.6696 26.3891 21.4529C25.3672 22.0536 24.4202 22.0373 23.4018 21.4342C20.4532 19.688 17.4823 17.9787 14.5208 16.2536C14.3818 16.1727 14.248 16.0825 14.1149 15.9922C12.8809 15.1557 12.8888 14.0457 14.1712 13.2889C16.0928 12.1551 18.0359 11.0571 20.0154 9.92146Z' fill='black'/><path d='M20.397 53.6549C18.3373 52.4319 16.3141 51.2456 14.3066 50.0339C12.9779 49.2319 12.9873 48.0584 14.3333 47.2632C17.3022 45.5092 20.2952 43.795 23.2553 42.0265C24.4541 41.3103 25.5461 41.3275 26.7451 42.0534C29.6946 43.8393 32.6855 45.5582 35.6567 47.3092C37.0402 48.1246 37.0965 49.1566 35.7313 49.9721C32.5344 51.8818 29.3089 53.7447 26.0872 55.6136C25.3342 56.0504 24.5503 56.0528 23.7842 55.612C22.6685 54.97 21.5548 54.3247 20.397 53.6549Z' fill='black'/><path d='M40.9425 64.4996C40.7907 64.1193 40.8045 63.7755 40.8054 63.4326C40.8128 60.4163 40.8145 57.4 40.83 54.3837C40.8331 53.7909 40.8836 53.1981 40.92 52.6057C40.9827 51.5833 41.953 50.9526 42.8908 51.3845C43.6622 51.7398 44.3908 52.1893 45.1262 52.6176C47.5918 54.0536 50.0365 55.5259 52.5212 56.9286C53.6812 57.5835 54.2233 58.4208 54.1893 59.7996C54.1065 63.1567 54.156 66.5172 54.1687 69.8763C54.1713 70.5545 54.071 71.1593 53.4187 71.5255C52.7626 71.8937 52.179 71.6465 51.5993 71.3082C48.5188 69.5104 45.4357 67.717 42.351 65.9263C41.765 65.5862 41.2164 65.2168 40.9425 64.4996Z' fill='black'/><path d='M61.229 44.615C62.7425 45.4997 64.2125 46.359 65.6814 47.2202C67.1558 48.0847 67.1855 49.2301 65.7188 50.0865C62.6193 51.8963 59.5031 53.6781 56.394 55.4717C55.5484 55.9595 54.7055 56.0085 53.8415 55.5006C50.6679 53.635 47.4848 51.7853 44.3153 49.913C43.023 49.1497 42.9793 48.1529 44.2551 47.394C47.4586 45.4887 50.6879 43.6257 53.9204 41.7688C54.7077 41.3166 55.5554 41.2965 56.3618 41.7634C57.9746 42.6972 59.5778 43.6472 61.229 44.615Z' fill='black'/><path d='M62.0452 11.0333C63.3013 11.7655 64.5154 12.4696 65.7217 13.1867C65.9968 13.3502 66.27 13.5324 66.5006 13.751C67.1208 14.3388 67.1107 15.0882 66.4811 15.6685C65.8317 16.2671 65.017 16.617 64.2664 17.0615C61.9702 18.4211 59.6347 19.7188 57.3792 21.1412C55.9937 22.0149 54.7777 22.089 53.3493 21.2035C50.6134 19.5075 47.7882 17.9535 45.0162 16.3136C43.1336 15.1998 43.1299 14.2145 44.9941 13.1228C47.9324 11.4021 50.8932 9.71901 53.8275 7.99161C54.8457 7.39221 55.7897 7.3667 56.8118 7.98615C58.5233 9.02339 60.2691 10.005 62.0452 11.0333Z' fill='black'/><path d='M54.1773 24.3933C54.3414 24.8444 54.3111 25.2593 54.3114 25.6691C54.3136 29.097 54.3067 32.525 54.3157 35.953C54.3174 36.6152 54.3003 37.2563 53.6248 37.622C52.9553 37.9845 52.3733 37.6627 51.8097 37.3333C49.1276 35.766 46.467 34.1616 43.7637 32.6311C40.6091 30.8451 41.1423 30.8975 41.0458 28.0381C40.9464 25.0906 40.9971 22.1436 40.9627 19.1965C40.9424 17.4535 41.9973 16.8053 43.5313 17.6731C46.7365 19.4862 49.9091 21.3561 53.0889 23.2129C53.5481 23.4811 53.9581 23.8202 54.1773 24.3933Z' fill='black'/><path d='M63.6121 19.6277C64.7284 18.9755 65.8009 18.3487 66.8739 17.7227C67.2543 17.5008 67.6419 17.3095 68.1043 17.324C68.7894 17.3455 69.2474 17.6556 69.4026 18.328C69.4687 18.6145 69.5021 18.9146 69.5027 19.2087C69.5096 22.5433 69.4772 25.8784 69.5231 29.2124C69.5399 30.4337 69.0293 31.2525 68.0101 31.8467C64.97 33.6191 61.9389 35.4067 58.8927 37.1688C58.2865 37.5195 57.6408 37.9824 56.8997 37.5267C56.1701 37.0782 56.1763 36.3106 56.1761 35.5703C56.175 32.2585 56.2037 28.9463 56.1576 25.6352C56.1418 24.4965 56.5785 23.7154 57.5448 23.1577C59.5568 21.9966 61.5611 20.8224 63.6121 19.6277Z' fill='black'/><path d='M37.9025 65.7743C34.7519 67.5947 31.6449 69.3898 28.5355 71.1807C28.2574 71.3409 27.9759 71.5101 27.6742 71.6126C26.9102 71.872 26.0905 71.3596 25.9758 70.5691C25.9464 70.367 25.9563 70.1588 25.9549 69.9534C25.9309 66.4835 25.9176 63.0136 25.8787 59.544C25.8674 58.5423 26.2093 57.8046 27.1184 57.281C30.368 55.4098 33.6146 53.5319 36.8239 51.5942C38.146 50.796 39.1791 51.8422 39.1817 52.9191C39.1905 56.5509 39.1879 60.1828 39.1777 63.8147C39.1752 64.7002 38.6844 65.3084 37.9025 65.7743Z' fill='black'/><path d='M39.2 20.1183C39.1979 23.1313 39.1305 26.0782 39.2215 29.0203C39.266 30.4579 38.664 31.3353 37.4815 32.0086C34.6444 33.624 31.8254 35.2704 28.9985 36.9033C28.6006 37.1332 28.2147 37.3912 27.7966 37.5775C26.8443 38.002 25.9653 37.4884 25.9602 36.4522C25.941 32.5717 25.9582 28.6909 25.9719 24.8103C25.975 23.925 26.6227 23.5036 27.2952 23.1156C29.665 21.7482 32.0359 20.3828 34.404 19.0126C35.1801 18.5635 35.9355 18.0778 36.7238 17.6514C38.0875 16.9137 39.1897 17.5653 39.2006 19.0913C39.2028 19.4109 39.2003 19.7305 39.2 20.1183Z' fill='black'/><path d='M40.8035 33.1163C43.423 34.4812 45.8677 36.0376 48.39 37.4616C49.1707 37.9024 49.95 38.3479 50.7082 38.8253C51.9174 39.5868 51.9322 40.6406 50.7061 41.4041C49.341 42.2541 47.9302 43.0319 46.5393 43.8413C44.8504 44.8241 43.1497 45.7878 41.4771 46.7972C40.4331 47.4272 39.4928 47.3766 38.4454 46.7428C35.6334 45.0413 32.7804 43.4063 29.9379 41.7547C27.9731 40.6131 27.9738 39.6945 29.9442 38.5538C32.8095 36.8952 35.669 35.2269 38.5324 33.565C39.2182 33.1669 39.9168 32.8123 40.8035 33.1163Z' fill='black'/></g><defs><clipPath id='clip0_595_36'><rect width='59' height='65' fill='white' transform='translate(10.5 7.5)'/></clipPath></defs></svg>\"\n  },\n  {\n    \"name\": \"@iconiq\",\n    \"homepage\": \"https://iconiqui.com\",\n    \"url\": \"https://iconiqui.com/r/{name}.json\",\n    \"description\": \"Iconiq is a collection of icons designed for web applications. It is a modern, clean, and minimalistic icon set that is perfect for web applications.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='31' height='30' viewBox='0 0 31 30' fill='none'><path d='M30.8574 13.4209H25.0322V24.8223H17.4414L17.4961 26.2822C17.9462 26.0015 18.5219 25.8223 19.1543 25.7988C20.6429 25.744 21.8818 26.5719 21.9219 27.6484C21.96 28.6881 20.8658 29.576 19.4502 29.6855V29.6924L17.5859 29.7617C17.043 29.7816 16.5855 29.3565 16.5654 28.8135L16.5303 27.8643H16.5312C16.531 27.8588 16.5305 27.8531 16.5303 27.8477C16.5292 27.8173 16.5324 27.787 16.5332 27.7568L16.4229 24.8223H13.2686L13.1494 27.9941C13.1502 28.0242 13.1534 28.0546 13.1523 28.085C13.1521 28.0902 13.1517 28.0963 13.1514 28.1016H13.1523L13.1172 29.0518C13.097 29.5946 12.6395 30.0188 12.0967 29.999L10.2324 29.9297V29.9238C8.81666 29.8144 7.7226 28.9265 7.76074 27.8867C7.80082 26.8101 9.03966 25.9813 10.5283 26.0361C11.1608 26.0596 11.7364 26.2396 12.1865 26.5205L12.25 24.8223H4.72266L5.2832 13.4209H0L14.0205 0L30.8574 13.4209Z' fill='#EE4822'/><circle cx='10.4573' cy='14.5408' r='2.62989' fill='white'/><circle cx='17.5155' cy='14.5408' r='2.62989' fill='white'/><circle cx='10.6948' cy='14.88' r='0.763516' fill='black'/><circle cx='17.0064' cy='14.88' r='0.763516' fill='black'/></svg>\"\n  },\n  {\n    \"name\": \"@fonttrio\",\n    \"homepage\": \"https://www.fonttrio.xyz\",\n    \"url\": \"https://www.fonttrio.xyz/r/{name}.json\",\n    \"description\": \"Curated font pairing registry for shadcn. Three fonts. One command. Install perfectly configured typography (heading + body + mono) with shadcn add. Includes editorial-grade type scales, CSS variables, and a live preview site.\",\n    \"logo\": \"<svg width='64' height='64' viewBox='0 0 64 64' fill='none' xmlns='http://www.w3.org/2000/svg'><rect width='64' height='64' rx='8' fill='#141414'/><path d='M23.66 47.616C20.5507 47.616 18.204 46.868 16.62 45.372C15.0653 43.8467 14.288 41.2947 14.288 37.716V29.752H12.352V22.536C13.4667 22.536 14.3027 22.2573 14.86 21.7C15.4173 21.1133 15.696 20.3213 15.696 19.324V17.344H25.024V22.536H30.964V29.752H25.024V36.968C25.024 37.936 25.2293 38.6547 25.64 39.124C26.08 39.564 26.7253 39.784 27.576 39.784C28.6907 39.784 29.908 39.652 31.228 39.388V46.296C30.4067 46.6187 29.292 46.912 27.884 47.176C26.5053 47.4693 25.0973 47.616 23.66 47.616ZM43.5116 47.616C40.4022 47.616 38.0556 46.868 36.4716 45.372C34.9169 43.8467 34.1396 41.2947 34.1396 37.716V29.752H32.2036V22.536C33.3182 22.536 34.1542 22.2573 34.7116 21.7C35.2689 21.1133 35.5476 20.3213 35.5476 19.324V17.344H44.8756V22.536H50.8156V29.752H44.8756V36.968C44.8756 37.936 45.0809 38.6547 45.4916 39.124C45.9316 39.564 46.5769 39.784 47.4276 39.784C48.5422 39.784 49.7596 39.652 51.0796 39.388V46.296C50.2582 46.6187 49.1436 46.912 47.7356 47.176C46.3569 47.4693 44.9489 47.616 43.5116 47.616Z' fill='white'/><rect x='29.5' y='22.536' width='5' height='7.20545' fill='white'/><path d='M35.9548 43.8232C34.883 44.6496 31.2651 45.7749 31.2651 45.7749L31.1765 39.9152C31.1765 39.9152 34.6401 39.2419 36.8651 38.0282C38.2077 37.2959 38.9932 41.5015 38.9932 41.5015C38.9932 41.5015 36.9525 43.054 35.9548 43.8232Z' fill='white' stroke='white'/></svg>\"\n  },\n  {\n    \"name\": \"@componentry\",\n    \"homepage\": \"https://componentry.fun\",\n    \"url\": \"https://componentry.fun/r/{name}.json\",\n    \"description\": \"Beautiful, interactive React + Tailwind components for modern product UIs.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='120 120 272 272' fill='currentColor'><path d='M120 160Q120 120 160 120H260Q300 120 300 160V220H352Q392 220 392 260V352Q392 392 352 392H260Q220 392 220 352V292H160Q120 292 120 252Z'/></svg>\"\n  },\n  {\n    \"name\": \"@paletteui\",\n    \"homepage\": \"https://paletteui.xyz\",\n    \"url\": \"https://paletteui.xyz/r/{name}.json\",\n    \"description\": \"Curated OKLCH color themes for shadcn/ui + visual theme editor with CSS, Tailwind v4, and Figma export.\",\n    \"logo\": \"<svg width='16' height='16' viewBox='0 0 72 72' xmlns='http://www.w3.org/2000/svg'><path fill='currentColor' d='M36,45 v-36 a28,28 0 0 0 0 56 z'/><circle cx='36' cy='36' r='28' fill='none' stroke='currentColor' stroke-linejoin='round' stroke-width='3'/></svg>\"\n  },\n  {\n    \"name\": \"@fluid\",\n    \"homepage\": \"https://www.fluidfunctionalism.com\",\n    \"url\": \"https://www.fluidfunctionalism.com/r/{name}.json\",\n    \"description\": \"Fluid components used exclusively in service of functional clarity. Proximity hover, spring animations, font-weight transitions, and animated focus rings.\",\n    \"logo\": \"<svg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'><rect width='40' height='40' rx='8' fill='var(--foreground)'/><text x='20' y='26' text-anchor='middle' font-size='20' font-weight='700' font-family='system-ui' fill='var(--background)'>F</text></svg>\"\n  },\n  {\n    \"name\": \"@gammaui\",\n    \"homepage\": \"https://www.gammaui.com\",\n    \"url\": \"https://www.gammaui.com/r/{name}.json\",\n    \"description\": \"Beautifully designed landing page components built with React & Tailwind CSS & Motion.\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 1000'><g><g><path d='M561.27,349.76v-54.72H342.36c-11.96,0-23.77,3.15-33.89,9.51c-21.73,14.52-29.14,36.49-31.32,44.1H561.27z' /><path d='M275.43,358.4s-2.88,38.88,13.68,56.88l65.52,102.96s67.52,41.04,145-5.76s61.64-136.08,61.64-136.08H423.03l-0.72,54.72l74.16,0.72s0,29.52-61.2,48.24c0,0-73.44,14.4-99.36-72c0,0,5.04-37.44-21.6-45.36c-26.64-7.92-38.88-4.32-38.88-4.32z' /></g><path d='M444.63,562.16h-61.92l79.92,130.32s29.52-45.36,12.96-79.2l-30.96-51.12z' /><path d='M471.99,698.24l115.92-186.48V295.04h55.44v229.68l-85.68,138.96s-35.28,61.2-85.68,34.56z' /><path d='M669.27,480.08V295.04h55.44v78.48s2.16,24.48-19.44,51.84l-36,54.72z' /></g></svg>\"\n  },\n  {\n    \"name\": \"@flx\",\n    \"homepage\": \"https://ui.flexnative.com\",\n    \"url\": \"https://ui.flexnative.com/r/{name}.json\",\n    \"description\": \"A collection of customizable UI blocks with interactive live previews\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='xMidYMid meet' viewBox='395.17 381.07 217.75 213.93' fill='currentColor'><g transform='translate(0.000000,1024.000000) scale(0.100000,-0.100000)' stroke='none'><path d='M5035 6237 c-160 -105 -427 -282 -595 -391 -168 -110 -317 -211 -332 -225 -55 -49 -24 -141 47 -141 25 0 285 168 1202 774 70 46 88 78 71 126 -5 17 -18 35 -28 40 -46 25 -73 11 -365 -183z'/><path d='M5970 6353 c-64 -43 -1062 -699 -1575 -1036 -192 -126 -361 -240 -374 -253 -36 -34 -34 -89 4 -121 19 -17 37 -23 54 -21 14 3 329 205 698 449 370 244 819 540 998 658 179 117 332 223 340 234 22 32 18 75 -10 102 -34 35 -71 32 -135 -12z'/><path d='M5874 5761 c-105 -70 -913 -603 -1653 -1090 -276 -181 -288 -193 -258 -256 17 -36 50 -51 89 -41 13 3 220 135 460 293 241 158 676 445 967 636 658 432 611 399 611 441 0 19 -3 42 -6 51 -7 17 -54 45 -77 45 -8 0 -68 -36 -133 -79z'/><path d='M5614 5087 c-187 -123 -483 -317 -659 -431 -176 -114 -330 -219 -342 -232 -46 -51 -11 -134 55 -134 31 0 51 13 702 440 179 117 395 259 481 316 86 56 166 113 178 125 21 22 27 62 15 94 -7 17 -54 45 -77 45 -8 0 -167 -100 -353 -223z'/></g></svg>\"\n  },\n  {\n    \"name\": \"@nexus-ui\",\n    \"homepage\": \"https://nexus-ui.dev\",\n    \"url\": \"https://nexus-ui.dev/r/{name}.json\",\n    \"description\": \"Open-source component library of composable, copy-paste primitives for building AI interfaces (chat, streaming, multimodal)\",\n    \"logo\": \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'><path fill-rule='evenodd' clip-rule='evenodd' d='M0 12C7.62742 12 12 7.62742 12 0C12 7.62742 16.3726 12 24 12C16.3726 12 12 16.3726 12 24C12 16.3726 7.62742 12 0 12Z' fill='currentColor'/></svg>\"\n  },\n  {\n    \"name\": \"@sabraman\",\n    \"homepage\": \"https://sabraman.ru/components\",\n    \"url\": \"https://sabraman.ru/r/{name}.json\",\n    \"description\": \"Legacy skeuomorphic UI components and blocks for shadcn.\",\n    \"logo\": \"<svg width='1106' height='1057' viewBox='0 0 1106 1057' fill='none' xmlns='http://www.w3.org/2000/svg'> <path d='M861.369 247.228C861.333 247.353 861.307 247.481 861.261 247.604C859.745 251.632 849.864 263.106 846.718 267.154L753.594 387.119C743.695 399.893 734.093 413.073 723.875 425.598C722.562 427.213 720.881 428.772 718.881 429.546C716.653 430.402 714.04 429.336 711.921 428.638C704.881 426.322 697.988 423.362 691.082 420.698L651.906 405.611L534.427 360.602C545.858 356.025 601.362 338.802 605.729 335.035C606.49 327.907 583.263 258.01 579.257 247.097C559.698 193.807 520.081 115.298 463.736 90.5882C440.364 80.3359 410.784 80.8487 386.638 89.503C350.339 104.693 326.467 141.137 309.025 173.841C304.669 182.005 301.006 193.251 294.943 200.095C301.777 180.307 308.826 160.956 319.033 142.447C337.081 109.726 364.647 80.401 402.202 68.9848C411.406 66.1872 420.725 64.6062 430.285 63.789C440.123 62.9481 450.194 63.2456 460.058 63.101C474.419 62.8583 488.778 62.5148 503.136 62.0705L562.821 60.5274C579.94 60.1498 597.226 59.4249 614.212 61.5247C616.153 61.7582 618.086 62.034 620.012 62.3523C621.938 62.6705 623.855 63.0309 625.763 63.4334C627.67 63.836 629.566 64.2803 631.451 64.7664C633.336 65.2525 635.207 65.7797 637.066 66.3481C638.924 66.9167 640.767 67.5259 642.596 68.1756C644.423 68.8254 646.234 69.5151 648.028 70.2447C649.823 70.9746 651.598 71.7435 653.354 72.5516C655.11 73.3596 656.845 74.2062 658.56 75.0912C705.829 99.3213 745.984 162.183 765.542 208.712C774.168 229.231 780.306 250.595 786.793 271.837L837.542 254.837C845.075 252.311 853.599 248.522 861.369 247.228Z' fill='var(--foreground)'/> <path d='M66.109 398.261L254.566 406.441C259.134 406.637 294.045 407.339 295.758 409.432C298.711 413.045 354.226 585.454 358.513 603.17C337.141 588.239 316.046 572.896 294.554 558.123C279.134 580.824 262.88 602.984 248.834 626.511C218.877 676.687 184.858 755.549 197.342 813.929C203.414 842.333 222.318 870.719 247.73 886.303C279.493 905.784 321.407 905.361 357.863 900.547C368.161 899.185 378.681 896.143 388.983 895.563C341.847 911.871 291.7 920.412 245.157 899.091C243.438 898.295 241.738 897.463 240.056 896.598C238.374 895.732 236.713 894.831 235.071 893.895C233.43 892.961 231.81 891.994 230.212 890.992C228.615 889.991 227.04 888.957 225.489 887.889C223.939 886.824 222.412 885.727 220.909 884.596C219.409 883.467 217.932 882.308 216.48 881.119C215.031 879.929 213.609 878.709 212.214 877.46C210.818 876.211 209.452 874.933 208.114 873.626C198.237 864.073 190.116 853.049 181.694 842.32L151.831 804.562L113.342 756.379C104.751 745.626 95.7392 734.999 88.2052 723.512C86.3256 720.674 84.5391 717.783 82.8454 714.838C81.1491 711.895 79.5481 708.902 78.0424 705.859C76.534 702.817 75.124 699.733 73.8122 696.605C72.5005 693.477 71.2874 690.314 70.173 687.115C69.2498 684.457 68.2996 681.708 67.6804 678.958L67.2567 679.106L64.6251 668.455L65.0606 668.442C51.8859 607.669 81.534 522.688 116.094 471.285C121.761 462.998 127.511 454.765 133.342 446.585L66.109 398.261ZM65.0606 668.442L64.6251 668.455L67.2567 679.106L67.6804 678.958C66.8922 675.437 65.942 671.939 65.0606 668.442Z' fill='var(--foreground)'/> <path d='M1045.62 548.718L1046.48 552.204C1046.59 555.81 1047.62 559.597 1048.11 563.197C1048.36 565.048 1048.57 566.906 1048.72 568.769C1048.87 570.633 1048.97 572.499 1049.02 574.368C1049.06 576.237 1049.06 578.108 1049 579.98C1048.94 581.852 1048.83 583.723 1048.67 585.592C1048.51 587.278 1048.31 588.96 1048.08 590.64C1047.84 592.321 1047.57 593.996 1047.27 595.665C1046.96 597.335 1046.62 598.998 1046.24 600.653C1045.86 602.312 1045.45 603.962 1045 605.604C1044.55 607.246 1044.07 608.88 1043.55 610.505C1043.03 612.127 1042.47 613.739 1041.88 615.341C1041.29 616.943 1040.67 618.534 1040.01 620.112C1039.35 621.691 1038.66 623.257 1037.93 624.81C1032.29 637.109 1024.72 648.699 1017.75 660.354L986.15 713.324L953.685 768.283C945.526 782.159 937.747 796.281 928.065 809.265C925.553 812.638 922.937 815.935 920.216 819.156C917.496 822.379 914.676 825.519 911.756 828.573C908.838 831.631 905.825 834.6 902.719 837.48C899.613 840.361 896.419 843.147 893.137 845.838C890.939 847.623 888.708 849.368 886.445 851.074C884.182 852.783 881.888 854.449 879.562 856.073C877.237 857.699 874.882 859.285 872.498 860.828C870.113 862.372 867.701 863.874 865.262 865.334C862.822 866.794 860.356 868.21 857.864 869.583C855.371 870.956 852.854 872.283 850.312 873.564C847.771 874.849 845.207 876.089 842.621 877.284C840.034 878.476 837.426 879.624 834.797 880.726C780.087 904.109 698.019 916.86 638.89 917.975C614.974 918.422 591.597 916.729 567.833 915.04C561.649 944.021 555.403 973.043 548.724 1001.93L445.433 821.472C440.42 812.703 435.115 803.99 430.427 795.06C429.525 793.339 427.697 790.329 427.988 788.408C428.854 786.779 430.084 785.697 431.497 784.509C444.672 773.432 458.364 762.85 471.764 752.027L600.017 648.33C608.482 641.478 616.827 633.916 625.869 627.82L608.222 709.857C707.333 716.645 813.688 720.861 909.966 690.486C931.982 683.537 953.744 675.02 973.045 662.356C1001.47 643.706 1024.95 614.661 1031.66 581.803C1039.91 541.468 1011.41 499.636 985.465 470.9C981.631 466.566 977.64 462.37 973.492 458.312C969.192 454.051 964.399 449.86 960.951 444.91L960.508 444.267C966.612 447.674 972.471 452.699 977.91 457.018C1001.38 475.667 1022.16 497.031 1035.75 523.562C1039.88 531.628 1042.02 540.107 1045.46 548.364L1045.62 548.718Z' fill='var(--foreground)'/> </svg>\"\n  }\n]\n"
  },
  {
    "path": "apps/v4/registry/fonts.ts",
    "content": "import { type RegistryItem } from \"shadcn/schema\"\n\nimport { FONT_DEFINITIONS, type FontDefinition } from \"@/lib/font-definitions\"\n\nfunction createFontItem(definition: FontDefinition, role: \"body\" | \"heading\") {\n  return {\n    name:\n      role === \"body\"\n        ? `font-${definition.name}`\n        : `font-heading-${definition.name}`,\n    title: role === \"body\" ? definition.title : `${definition.title} (Heading)`,\n    type: \"registry:font\",\n    font: {\n      family: definition.family,\n      provider: definition.provider,\n      variable:\n        role === \"body\" ? definition.registryVariable : \"--font-heading\",\n      ...(definition.weight ? { weight: [...definition.weight] } : {}),\n      subsets: [...definition.subsets],\n      import: definition.import,\n      dependency: definition.dependency,\n    },\n  } satisfies RegistryItem\n}\n\nexport const bodyFonts = FONT_DEFINITIONS.map((definition) =>\n  createFontItem(definition, \"body\")\n) satisfies RegistryItem[]\n\nexport const headingFonts = FONT_DEFINITIONS.map((definition) =>\n  createFontItem(definition, \"heading\")\n) satisfies RegistryItem[]\n\nexport const fonts = [...bodyFonts, ...headingFonts] satisfies RegistryItem[]\n"
  },
  {
    "path": "apps/v4/registry/icons/__hugeicons__.ts",
    "content": "// Auto-generated by scripts/build-icons.ts\nexport { ActivityIcon } from \"@hugeicons/core-free-icons\"\nexport { Add01Icon } from \"@hugeicons/core-free-icons\"\nexport { Alert02Icon } from \"@hugeicons/core-free-icons\"\nexport { AlertCircleIcon } from \"@hugeicons/core-free-icons\"\nexport { Analytics01Icon } from \"@hugeicons/core-free-icons\"\nexport { Archive02Icon } from \"@hugeicons/core-free-icons\"\nexport { ArchiveIcon } from \"@hugeicons/core-free-icons\"\nexport { ArrowDown01Icon } from \"@hugeicons/core-free-icons\"\nexport { ArrowDownIcon } from \"@hugeicons/core-free-icons\"\nexport { ArrowLeft01Icon } from \"@hugeicons/core-free-icons\"\nexport { ArrowLeft02Icon } from \"@hugeicons/core-free-icons\"\nexport { ArrowLeftDoubleIcon } from \"@hugeicons/core-free-icons\"\nexport { ArrowLeftIcon } from \"@hugeicons/core-free-icons\"\nexport { ArrowRight01Icon } from \"@hugeicons/core-free-icons\"\nexport { ArrowRight02Icon } from \"@hugeicons/core-free-icons\"\nexport { ArrowRightDoubleIcon } from \"@hugeicons/core-free-icons\"\nexport { ArrowRightIcon } from \"@hugeicons/core-free-icons\"\nexport { ArrowUp01Icon } from \"@hugeicons/core-free-icons\"\nexport { ArrowUpIcon } from \"@hugeicons/core-free-icons\"\nexport { ArrowUpRight01Icon } from \"@hugeicons/core-free-icons\"\nexport { ArrowUpRightIcon } from \"@hugeicons/core-free-icons\"\nexport { AudioWave01Icon } from \"@hugeicons/core-free-icons\"\nexport { BankIcon } from \"@hugeicons/core-free-icons\"\nexport { BluetoothIcon } from \"@hugeicons/core-free-icons\"\nexport { BookOpen02Icon } from \"@hugeicons/core-free-icons\"\nexport { BookmarkIcon } from \"@hugeicons/core-free-icons\"\nexport { CalculatorIcon } from \"@hugeicons/core-free-icons\"\nexport { CalendarIcon } from \"@hugeicons/core-free-icons\"\nexport { Camera01Icon } from \"@hugeicons/core-free-icons\"\nexport { Cancel01Icon } from \"@hugeicons/core-free-icons\"\nexport { Chart03Icon } from \"@hugeicons/core-free-icons\"\nexport { ChartDownIcon } from \"@hugeicons/core-free-icons\"\nexport { ChartHistogramIcon } from \"@hugeicons/core-free-icons\"\nexport { ChartIcon } from \"@hugeicons/core-free-icons\"\nexport { ChartRingIcon } from \"@hugeicons/core-free-icons\"\nexport { ChartUpIcon } from \"@hugeicons/core-free-icons\"\nexport { CheckmarkBadge02Icon } from \"@hugeicons/core-free-icons\"\nexport { CheckmarkBadgeIcon } from \"@hugeicons/core-free-icons\"\nexport { CheckmarkCircle01Icon } from \"@hugeicons/core-free-icons\"\nexport { CheckmarkCircle02Icon } from \"@hugeicons/core-free-icons\"\nexport { CircleArrowLeft02Icon } from \"@hugeicons/core-free-icons\"\nexport { ClipboardIcon } from \"@hugeicons/core-free-icons\"\nexport { Clock03Icon } from \"@hugeicons/core-free-icons\"\nexport { CloudUploadIcon } from \"@hugeicons/core-free-icons\"\nexport { CodeIcon } from \"@hugeicons/core-free-icons\"\nexport { CommandIcon } from \"@hugeicons/core-free-icons\"\nexport { ComputerIcon } from \"@hugeicons/core-free-icons\"\nexport { ComputerTerminal01Icon } from \"@hugeicons/core-free-icons\"\nexport { ComputerTerminalIcon } from \"@hugeicons/core-free-icons\"\nexport { Copy01Icon } from \"@hugeicons/core-free-icons\"\nexport { CopyIcon } from \"@hugeicons/core-free-icons\"\nexport { CreditCardIcon } from \"@hugeicons/core-free-icons\"\nexport { CropIcon } from \"@hugeicons/core-free-icons\"\nexport { CubeIcon } from \"@hugeicons/core-free-icons\"\nexport { CursorInWindowIcon } from \"@hugeicons/core-free-icons\"\nexport { DashboardSquare01Icon } from \"@hugeicons/core-free-icons\"\nexport { DashedLineCircleIcon } from \"@hugeicons/core-free-icons\"\nexport { Database01Icon } from \"@hugeicons/core-free-icons\"\nexport { Delete02Icon } from \"@hugeicons/core-free-icons\"\nexport { DeleteIcon } from \"@hugeicons/core-free-icons\"\nexport { DownloadIcon } from \"@hugeicons/core-free-icons\"\nexport { DragDropVerticalIcon } from \"@hugeicons/core-free-icons\"\nexport { EditIcon } from \"@hugeicons/core-free-icons\"\nexport { EyeIcon } from \"@hugeicons/core-free-icons\"\nexport { FavouriteIcon } from \"@hugeicons/core-free-icons\"\nexport { File01Icon } from \"@hugeicons/core-free-icons\"\nexport { File02Icon } from \"@hugeicons/core-free-icons\"\nexport { FileIcon } from \"@hugeicons/core-free-icons\"\nexport { FlipHorizontalIcon } from \"@hugeicons/core-free-icons\"\nexport { FlipVerticalIcon } from \"@hugeicons/core-free-icons\"\nexport { FloppyDiskIcon } from \"@hugeicons/core-free-icons\"\nexport { Folder01Icon } from \"@hugeicons/core-free-icons\"\nexport { FolderAddIcon } from \"@hugeicons/core-free-icons\"\nexport { FolderIcon } from \"@hugeicons/core-free-icons\"\nexport { FolderOpenIcon } from \"@hugeicons/core-free-icons\"\nexport { Globe02Icon } from \"@hugeicons/core-free-icons\"\nexport { GridIcon } from \"@hugeicons/core-free-icons\"\nexport { HelpCircleIcon } from \"@hugeicons/core-free-icons\"\nexport { Home01Icon } from \"@hugeicons/core-free-icons\"\nexport { HomeIcon } from \"@hugeicons/core-free-icons\"\nexport { ImageIcon } from \"@hugeicons/core-free-icons\"\nexport { InboxIcon } from \"@hugeicons/core-free-icons\"\nexport { InformationCircleIcon } from \"@hugeicons/core-free-icons\"\nexport { KeyboardIcon } from \"@hugeicons/core-free-icons\"\nexport { LanguageCircleIcon } from \"@hugeicons/core-free-icons\"\nexport { LayoutBottomIcon } from \"@hugeicons/core-free-icons\"\nexport { LayoutIcon } from \"@hugeicons/core-free-icons\"\nexport { LayoutLeftIcon } from \"@hugeicons/core-free-icons\"\nexport { LeftToRightListBulletIcon } from \"@hugeicons/core-free-icons\"\nexport { LinkIcon } from \"@hugeicons/core-free-icons\"\nexport { LinkSquare02Icon } from \"@hugeicons/core-free-icons\"\nexport { Loading03Icon } from \"@hugeicons/core-free-icons\"\nexport { Logout01Icon } from \"@hugeicons/core-free-icons\"\nexport { LogoutIcon } from \"@hugeicons/core-free-icons\"\nexport { Mail01Icon } from \"@hugeicons/core-free-icons\"\nexport { MailIcon } from \"@hugeicons/core-free-icons\"\nexport { MapsIcon } from \"@hugeicons/core-free-icons\"\nexport { Menu01Icon } from \"@hugeicons/core-free-icons\"\nexport { Menu05Icon } from \"@hugeicons/core-free-icons\"\nexport { Menu09Icon } from \"@hugeicons/core-free-icons\"\nexport { MessageIcon } from \"@hugeicons/core-free-icons\"\nexport { MessageQuestionIcon } from \"@hugeicons/core-free-icons\"\nexport { MinusSignIcon } from \"@hugeicons/core-free-icons\"\nexport { MoonIcon } from \"@hugeicons/core-free-icons\"\nexport { MoreHorizontalCircle01Icon } from \"@hugeicons/core-free-icons\"\nexport { MoreVerticalCircle01Icon } from \"@hugeicons/core-free-icons\"\nexport { MultiplicationSignCircleIcon } from \"@hugeicons/core-free-icons\"\nexport { Notification02Icon } from \"@hugeicons/core-free-icons\"\nexport { Notification03Icon } from \"@hugeicons/core-free-icons\"\nexport { NotificationIcon } from \"@hugeicons/core-free-icons\"\nexport { PaintBoardIcon } from \"@hugeicons/core-free-icons\"\nexport { PieChartIcon } from \"@hugeicons/core-free-icons\"\nexport { PlusSignCircleIcon } from \"@hugeicons/core-free-icons\"\nexport { PlusSignIcon } from \"@hugeicons/core-free-icons\"\nexport { RecordIcon } from \"@hugeicons/core-free-icons\"\nexport { RedoIcon } from \"@hugeicons/core-free-icons\"\nexport { RefreshIcon } from \"@hugeicons/core-free-icons\"\nexport { RoboticIcon } from \"@hugeicons/core-free-icons\"\nexport { Rotate01Icon } from \"@hugeicons/core-free-icons\"\nexport { ScissorIcon } from \"@hugeicons/core-free-icons\"\nexport { Search01Icon } from \"@hugeicons/core-free-icons\"\nexport { SearchIcon } from \"@hugeicons/core-free-icons\"\nexport { SentIcon } from \"@hugeicons/core-free-icons\"\nexport { ServerStackIcon } from \"@hugeicons/core-free-icons\"\nexport { Settings01Icon } from \"@hugeicons/core-free-icons\"\nexport { Settings05Icon } from \"@hugeicons/core-free-icons\"\nexport { SettingsIcon } from \"@hugeicons/core-free-icons\"\nexport { Share01Icon } from \"@hugeicons/core-free-icons\"\nexport { Share03Icon } from \"@hugeicons/core-free-icons\"\nexport { ShareIcon } from \"@hugeicons/core-free-icons\"\nexport { ShieldIcon } from \"@hugeicons/core-free-icons\"\nexport { ShoppingBag01Icon } from \"@hugeicons/core-free-icons\"\nexport { ShoppingCart01Icon } from \"@hugeicons/core-free-icons\"\nexport { SidebarLeftIcon } from \"@hugeicons/core-free-icons\"\nexport { SmileIcon } from \"@hugeicons/core-free-icons\"\nexport { SparklesIcon } from \"@hugeicons/core-free-icons\"\nexport { StarIcon } from \"@hugeicons/core-free-icons\"\nexport { StarOffIcon } from \"@hugeicons/core-free-icons\"\nexport { SunIcon } from \"@hugeicons/core-free-icons\"\nexport { TableIcon } from \"@hugeicons/core-free-icons\"\nexport { TextBoldIcon } from \"@hugeicons/core-free-icons\"\nexport { TextCheckIcon } from \"@hugeicons/core-free-icons\"\nexport { TextItalicIcon } from \"@hugeicons/core-free-icons\"\nexport { TextUnderlineIcon } from \"@hugeicons/core-free-icons\"\nexport { Tick02Icon } from \"@hugeicons/core-free-icons\"\nexport { TradeUpIcon } from \"@hugeicons/core-free-icons\"\nexport { UndoIcon } from \"@hugeicons/core-free-icons\"\nexport { UnfoldMoreIcon } from \"@hugeicons/core-free-icons\"\nexport { UserCircle02Icon } from \"@hugeicons/core-free-icons\"\nexport { UserGroupIcon } from \"@hugeicons/core-free-icons\"\nexport { UserIcon } from \"@hugeicons/core-free-icons\"\nexport { UserRemove01Icon } from \"@hugeicons/core-free-icons\"\nexport { ViewOffIcon } from \"@hugeicons/core-free-icons\"\nexport { VoiceIcon } from \"@hugeicons/core-free-icons\"\nexport { VolumeOffIcon } from \"@hugeicons/core-free-icons\"\nexport { WalletIcon } from \"@hugeicons/core-free-icons\"\nexport { ZapIcon } from \"@hugeicons/core-free-icons\"\nexport { ZoomInAreaIcon } from \"@hugeicons/core-free-icons\"\nexport { ZoomOutAreaIcon } from \"@hugeicons/core-free-icons\"\n"
  },
  {
    "path": "apps/v4/registry/icons/__lucide__.ts",
    "content": "// Auto-generated by scripts/build-icons.ts\nexport { ActivityIcon } from \"lucide-react\"\nexport { AlertTriangleIcon } from \"lucide-react\"\nexport { AppWindowIcon } from \"lucide-react\"\nexport { ArchiveIcon } from \"lucide-react\"\nexport { ArchiveXIcon } from \"lucide-react\"\nexport { ArrowDownIcon } from \"lucide-react\"\nexport { ArrowLeftCircleIcon } from \"lucide-react\"\nexport { ArrowLeftIcon } from \"lucide-react\"\nexport { ArrowRightIcon } from \"lucide-react\"\nexport { ArrowUpIcon } from \"lucide-react\"\nexport { ArrowUpRightIcon } from \"lucide-react\"\nexport { AudioLinesIcon } from \"lucide-react\"\nexport { BadgeCheck } from \"lucide-react\"\nexport { BadgeCheckIcon } from \"lucide-react\"\nexport { BellIcon } from \"lucide-react\"\nexport { BlocksIcon } from \"lucide-react\"\nexport { BluetoothIcon } from \"lucide-react\"\nexport { BoldIcon } from \"lucide-react\"\nexport { BookOpen } from \"lucide-react\"\nexport { BookOpenIcon } from \"lucide-react\"\nexport { BookmarkIcon } from \"lucide-react\"\nexport { BotIcon } from \"lucide-react\"\nexport { Building2Icon } from \"lucide-react\"\nexport { CalculatorIcon } from \"lucide-react\"\nexport { CalendarIcon } from \"lucide-react\"\nexport { CameraIcon } from \"lucide-react\"\nexport { CaptionsIcon } from \"lucide-react\"\nexport { ChartBarIcon } from \"lucide-react\"\nexport { ChartLineIcon } from \"lucide-react\"\nexport { ChartPieIcon } from \"lucide-react\"\nexport { CheckCircle2Icon } from \"lucide-react\"\nexport { CheckIcon } from \"lucide-react\"\nexport { ChevronDownIcon } from \"lucide-react\"\nexport { ChevronLeftIcon } from \"lucide-react\"\nexport { ChevronRightIcon } from \"lucide-react\"\nexport { ChevronUpIcon } from \"lucide-react\"\nexport { ChevronsLeftIcon } from \"lucide-react\"\nexport { ChevronsRightIcon } from \"lucide-react\"\nexport { ChevronsUpDownIcon } from \"lucide-react\"\nexport { CircleAlertIcon } from \"lucide-react\"\nexport { CircleCheckIcon } from \"lucide-react\"\nexport { CircleDashedIcon } from \"lucide-react\"\nexport { CircleHelpIcon } from \"lucide-react\"\nexport { CirclePlusIcon } from \"lucide-react\"\nexport { CircleUserRoundIcon } from \"lucide-react\"\nexport { ClipboardPasteIcon } from \"lucide-react\"\nexport { Clock2Icon } from \"lucide-react\"\nexport { CodeIcon } from \"lucide-react\"\nexport { Columns3Icon } from \"lucide-react\"\nexport { CommandIcon } from \"lucide-react\"\nexport { ContainerIcon } from \"lucide-react\"\nexport { CopyIcon } from \"lucide-react\"\nexport { CornerUpLeftIcon } from \"lucide-react\"\nexport { CornerUpRightIcon } from \"lucide-react\"\nexport { CreditCardIcon } from \"lucide-react\"\nexport { DatabaseIcon } from \"lucide-react\"\nexport { DownloadIcon } from \"lucide-react\"\nexport { EllipsisVerticalIcon } from \"lucide-react\"\nexport { ExternalLinkIcon } from \"lucide-react\"\nexport { EyeIcon } from \"lucide-react\"\nexport { EyeOffIcon } from \"lucide-react\"\nexport { FileChartColumnIcon } from \"lucide-react\"\nexport { FileCodeIcon } from \"lucide-react\"\nexport { FileIcon } from \"lucide-react\"\nexport { FileTextIcon } from \"lucide-react\"\nexport { FlipHorizontalIcon } from \"lucide-react\"\nexport { FlipVerticalIcon } from \"lucide-react\"\nexport { FolderIcon } from \"lucide-react\"\nexport { FolderOpenIcon } from \"lucide-react\"\nexport { FolderPlusIcon } from \"lucide-react\"\nexport { FolderSearchIcon } from \"lucide-react\"\nexport { FrameIcon } from \"lucide-react\"\nexport { GalleryVerticalEndIcon } from \"lucide-react\"\nexport { GlobeIcon } from \"lucide-react\"\nexport { GripVerticalIcon } from \"lucide-react\"\nexport { HeartIcon } from \"lucide-react\"\nexport { HelpCircleIcon } from \"lucide-react\"\nexport { HomeIcon } from \"lucide-react\"\nexport { ImageIcon } from \"lucide-react\"\nexport { InboxIcon } from \"lucide-react\"\nexport { InfoIcon } from \"lucide-react\"\nexport { ItalicIcon } from \"lucide-react\"\nexport { KeyboardIcon } from \"lucide-react\"\nexport { LanguagesIcon } from \"lucide-react\"\nexport { LayoutDashboardIcon } from \"lucide-react\"\nexport { LayoutGridIcon } from \"lucide-react\"\nexport { LayoutIcon } from \"lucide-react\"\nexport { LifeBuoy } from \"lucide-react\"\nexport { LifeBuoyIcon } from \"lucide-react\"\nexport { LinkIcon } from \"lucide-react\"\nexport { ListIcon } from \"lucide-react\"\nexport { Loader2Icon } from \"lucide-react\"\nexport { LoaderIcon } from \"lucide-react\"\nexport { LockIcon } from \"lucide-react\"\nexport { LogOutIcon } from \"lucide-react\"\nexport { MailIcon } from \"lucide-react\"\nexport { MapIcon } from \"lucide-react\"\nexport { MaximizeIcon } from \"lucide-react\"\nexport { MenuIcon } from \"lucide-react\"\nexport { MessageCircleIcon } from \"lucide-react\"\nexport { MessageCircleQuestionIcon } from \"lucide-react\"\nexport { MessageSquareIcon } from \"lucide-react\"\nexport { MicIcon } from \"lucide-react\"\nexport { MinimizeIcon } from \"lucide-react\"\nexport { MinusIcon } from \"lucide-react\"\nexport { MonitorIcon } from \"lucide-react\"\nexport { MoonIcon } from \"lucide-react\"\nexport { MoreHorizontalIcon } from \"lucide-react\"\nexport { MoreVerticalIcon } from \"lucide-react\"\nexport { OctagonXIcon } from \"lucide-react\"\nexport { PaintbrushIcon } from \"lucide-react\"\nexport { PaletteIcon } from \"lucide-react\"\nexport { PanelLeftIcon } from \"lucide-react\"\nexport { PencilIcon } from \"lucide-react\"\nexport { PieChartIcon } from \"lucide-react\"\nexport { PlusIcon } from \"lucide-react\"\nexport { RadioIcon } from \"lucide-react\"\nexport { RefreshCwIcon } from \"lucide-react\"\nexport { RotateCwIcon } from \"lucide-react\"\nexport { SaveIcon } from \"lucide-react\"\nexport { ScissorsIcon } from \"lucide-react\"\nexport { SearchIcon } from \"lucide-react\"\nexport { Send } from \"lucide-react\"\nexport { SendIcon } from \"lucide-react\"\nexport { ServerIcon } from \"lucide-react\"\nexport { Settings2Icon } from \"lucide-react\"\nexport { SettingsIcon } from \"lucide-react\"\nexport { ShareIcon } from \"lucide-react\"\nexport { ShieldIcon } from \"lucide-react\"\nexport { ShoppingBagIcon } from \"lucide-react\"\nexport { ShoppingCartIcon } from \"lucide-react\"\nexport { SmileIcon } from \"lucide-react\"\nexport { SparklesIcon } from \"lucide-react\"\nexport { StarIcon } from \"lucide-react\"\nexport { StarOffIcon } from \"lucide-react\"\nexport { SunIcon } from \"lucide-react\"\nexport { TableIcon } from \"lucide-react\"\nexport { TerminalIcon } from \"lucide-react\"\nexport { TerminalSquareIcon } from \"lucide-react\"\nexport { Trash2Icon } from \"lucide-react\"\nexport { TrashIcon } from \"lucide-react\"\nexport { TrendingDownIcon } from \"lucide-react\"\nexport { TrendingUpIcon } from \"lucide-react\"\nexport { TriangleAlertIcon } from \"lucide-react\"\nexport { UnderlineIcon } from \"lucide-react\"\nexport { UploadCloudIcon } from \"lucide-react\"\nexport { UserIcon } from \"lucide-react\"\nexport { UserRoundXIcon } from \"lucide-react\"\nexport { UsersIcon } from \"lucide-react\"\nexport { VideoIcon } from \"lucide-react\"\nexport { VolumeOffIcon } from \"lucide-react\"\nexport { VolumeX } from \"lucide-react\"\nexport { WalletIcon } from \"lucide-react\"\nexport { XIcon } from \"lucide-react\"\nexport { ZapIcon } from \"lucide-react\"\nexport { ZoomInIcon } from \"lucide-react\"\nexport { ZoomOutIcon } from \"lucide-react\"\n"
  },
  {
    "path": "apps/v4/registry/icons/__phosphor__.ts",
    "content": "// Auto-generated by scripts/build-icons.ts\nexport { ActivityIcon } from \"@phosphor-icons/react\"\nexport { AppWindowIcon } from \"@phosphor-icons/react\"\nexport { ArchiveIcon } from \"@phosphor-icons/react\"\nexport { ArrowBendUpLeftIcon } from \"@phosphor-icons/react\"\nexport { ArrowBendUpRightIcon } from \"@phosphor-icons/react\"\nexport { ArrowCircleLeftIcon } from \"@phosphor-icons/react\"\nexport { ArrowClockwiseIcon } from \"@phosphor-icons/react\"\nexport { ArrowDownIcon } from \"@phosphor-icons/react\"\nexport { ArrowLeftIcon } from \"@phosphor-icons/react\"\nexport { ArrowRightIcon } from \"@phosphor-icons/react\"\nexport { ArrowSquareOutIcon } from \"@phosphor-icons/react\"\nexport { ArrowUpIcon } from \"@phosphor-icons/react\"\nexport { ArrowUpRightIcon } from \"@phosphor-icons/react\"\nexport { ArrowsHorizontalIcon } from \"@phosphor-icons/react\"\nexport { ArrowsVerticalIcon } from \"@phosphor-icons/react\"\nexport { BagIcon } from \"@phosphor-icons/react\"\nexport { BankIcon } from \"@phosphor-icons/react\"\nexport { BellIcon } from \"@phosphor-icons/react\"\nexport { BluetoothIcon } from \"@phosphor-icons/react\"\nexport { BookOpenIcon } from \"@phosphor-icons/react\"\nexport { BookmarkIcon } from \"@phosphor-icons/react\"\nexport { CalculatorIcon } from \"@phosphor-icons/react\"\nexport { CalendarBlankIcon } from \"@phosphor-icons/react\"\nexport { CalendarIcon } from \"@phosphor-icons/react\"\nexport { CameraIcon } from \"@phosphor-icons/react\"\nexport { CaretDoubleLeftIcon } from \"@phosphor-icons/react\"\nexport { CaretDoubleRightIcon } from \"@phosphor-icons/react\"\nexport { CaretDownIcon } from \"@phosphor-icons/react\"\nexport { CaretLeftIcon } from \"@phosphor-icons/react\"\nexport { CaretRightIcon } from \"@phosphor-icons/react\"\nexport { CaretUpDownIcon } from \"@phosphor-icons/react\"\nexport { CaretUpIcon } from \"@phosphor-icons/react\"\nexport { ChartBarIcon } from \"@phosphor-icons/react\"\nexport { ChartLineIcon } from \"@phosphor-icons/react\"\nexport { ChartPieIcon } from \"@phosphor-icons/react\"\nexport { ChatCircleIcon } from \"@phosphor-icons/react\"\nexport { CheckCircleIcon } from \"@phosphor-icons/react\"\nexport { CheckIcon } from \"@phosphor-icons/react\"\nexport { CircleDashedIcon } from \"@phosphor-icons/react\"\nexport { ClipboardIcon } from \"@phosphor-icons/react\"\nexport { ClockIcon } from \"@phosphor-icons/react\"\nexport { CloudArrowUpIcon } from \"@phosphor-icons/react\"\nexport { CodeIcon } from \"@phosphor-icons/react\"\nexport { ColumnsIcon } from \"@phosphor-icons/react\"\nexport { CommandIcon } from \"@phosphor-icons/react\"\nexport { CopyIcon } from \"@phosphor-icons/react\"\nexport { CreditCardIcon } from \"@phosphor-icons/react\"\nexport { CropIcon } from \"@phosphor-icons/react\"\nexport { CubeIcon } from \"@phosphor-icons/react\"\nexport { DatabaseIcon } from \"@phosphor-icons/react\"\nexport { DotsSixVerticalIcon } from \"@phosphor-icons/react\"\nexport { DotsThreeIcon } from \"@phosphor-icons/react\"\nexport { DotsThreeOutlineIcon } from \"@phosphor-icons/react\"\nexport { DotsThreeVerticalIcon } from \"@phosphor-icons/react\"\nexport { DownloadIcon } from \"@phosphor-icons/react\"\nexport { EnvelopeIcon } from \"@phosphor-icons/react\"\nexport { EyeIcon } from \"@phosphor-icons/react\"\nexport { EyeSlashIcon } from \"@phosphor-icons/react\"\nexport { FileCodeIcon } from \"@phosphor-icons/react\"\nexport { FileIcon } from \"@phosphor-icons/react\"\nexport { FileTextIcon } from \"@phosphor-icons/react\"\nexport { FloppyDiskIcon } from \"@phosphor-icons/react\"\nexport { FolderIcon } from \"@phosphor-icons/react\"\nexport { FolderOpenIcon } from \"@phosphor-icons/react\"\nexport { FolderPlusIcon } from \"@phosphor-icons/react\"\nexport { GearIcon } from \"@phosphor-icons/react\"\nexport { GlobeIcon } from \"@phosphor-icons/react\"\nexport { GridFourIcon } from \"@phosphor-icons/react\"\nexport { HardDrivesIcon } from \"@phosphor-icons/react\"\nexport { HeartIcon } from \"@phosphor-icons/react\"\nexport { HouseIcon } from \"@phosphor-icons/react\"\nexport { ImageIcon } from \"@phosphor-icons/react\"\nexport { InfoIcon } from \"@phosphor-icons/react\"\nexport { KeyboardIcon } from \"@phosphor-icons/react\"\nexport { LayoutIcon } from \"@phosphor-icons/react\"\nexport { LifebuoyIcon } from \"@phosphor-icons/react\"\nexport { LightningIcon } from \"@phosphor-icons/react\"\nexport { LinkIcon } from \"@phosphor-icons/react\"\nexport { ListIcon } from \"@phosphor-icons/react\"\nexport { LockIcon } from \"@phosphor-icons/react\"\nexport { MagnifyingGlassIcon } from \"@phosphor-icons/react\"\nexport { MagnifyingGlassMinusIcon } from \"@phosphor-icons/react\"\nexport { MagnifyingGlassPlusIcon } from \"@phosphor-icons/react\"\nexport { MapTrifoldIcon } from \"@phosphor-icons/react\"\nexport { MicrophoneIcon } from \"@phosphor-icons/react\"\nexport { MinusIcon } from \"@phosphor-icons/react\"\nexport { MonitorIcon } from \"@phosphor-icons/react\"\nexport { MoonIcon } from \"@phosphor-icons/react\"\nexport { PaletteIcon } from \"@phosphor-icons/react\"\nexport { PaperPlaneTiltIcon } from \"@phosphor-icons/react\"\nexport { PencilIcon } from \"@phosphor-icons/react\"\nexport { PlusCircleIcon } from \"@phosphor-icons/react\"\nexport { PlusIcon } from \"@phosphor-icons/react\"\nexport { QuestionIcon } from \"@phosphor-icons/react\"\nexport { RecordIcon } from \"@phosphor-icons/react\"\nexport { RobotIcon } from \"@phosphor-icons/react\"\nexport { RowsIcon } from \"@phosphor-icons/react\"\nexport { ScissorsIcon } from \"@phosphor-icons/react\"\nexport { ShareFatIcon } from \"@phosphor-icons/react\"\nexport { ShareIcon } from \"@phosphor-icons/react\"\nexport { ShieldIcon } from \"@phosphor-icons/react\"\nexport { ShoppingCartIcon } from \"@phosphor-icons/react\"\nexport { SidebarIcon } from \"@phosphor-icons/react\"\nexport { SignOutIcon } from \"@phosphor-icons/react\"\nexport { SmileyIcon } from \"@phosphor-icons/react\"\nexport { SparkleIcon } from \"@phosphor-icons/react\"\nexport { SpeakerSlashIcon } from \"@phosphor-icons/react\"\nexport { SpinnerIcon } from \"@phosphor-icons/react\"\nexport { SquaresFourIcon } from \"@phosphor-icons/react\"\nexport { StarIcon } from \"@phosphor-icons/react\"\nexport { SunIcon } from \"@phosphor-icons/react\"\nexport { TableIcon } from \"@phosphor-icons/react\"\nexport { TerminalIcon } from \"@phosphor-icons/react\"\nexport { TextBIcon } from \"@phosphor-icons/react\"\nexport { TextItalicIcon } from \"@phosphor-icons/react\"\nexport { TextTIcon } from \"@phosphor-icons/react\"\nexport { TextUnderlineIcon } from \"@phosphor-icons/react\"\nexport { TranslateIcon } from \"@phosphor-icons/react\"\nexport { TrashIcon } from \"@phosphor-icons/react\"\nexport { TrayIcon } from \"@phosphor-icons/react\"\nexport { TrendDownIcon } from \"@phosphor-icons/react\"\nexport { TrendUpIcon } from \"@phosphor-icons/react\"\nexport { UserCircleIcon } from \"@phosphor-icons/react\"\nexport { UserIcon } from \"@phosphor-icons/react\"\nexport { UserMinusIcon } from \"@phosphor-icons/react\"\nexport { UsersIcon } from \"@phosphor-icons/react\"\nexport { VideoIcon } from \"@phosphor-icons/react\"\nexport { WalletIcon } from \"@phosphor-icons/react\"\nexport { WarningCircleIcon } from \"@phosphor-icons/react\"\nexport { WarningIcon } from \"@phosphor-icons/react\"\nexport { WaveformIcon } from \"@phosphor-icons/react\"\nexport { XCircleIcon } from \"@phosphor-icons/react\"\nexport { XIcon } from \"@phosphor-icons/react\"\n"
  },
  {
    "path": "apps/v4/registry/icons/__remixicon__.ts",
    "content": "// Auto-generated by scripts/build-icons.ts\nexport { RiAddCircleFill } from \"@remixicon/react\"\nexport { RiAddLine } from \"@remixicon/react\"\nexport { RiArchiveLine } from \"@remixicon/react\"\nexport { RiArrowDownLine } from \"@remixicon/react\"\nexport { RiArrowDownSLine } from \"@remixicon/react\"\nexport { RiArrowLeftCircleLine } from \"@remixicon/react\"\nexport { RiArrowLeftLine } from \"@remixicon/react\"\nexport { RiArrowLeftRightLine } from \"@remixicon/react\"\nexport { RiArrowLeftSLine } from \"@remixicon/react\"\nexport { RiArrowRightLine } from \"@remixicon/react\"\nexport { RiArrowRightSLine } from \"@remixicon/react\"\nexport { RiArrowRightUpLine } from \"@remixicon/react\"\nexport { RiArrowUpDownLine } from \"@remixicon/react\"\nexport { RiArrowUpLine } from \"@remixicon/react\"\nexport { RiArrowUpSLine } from \"@remixicon/react\"\nexport { RiBankCardLine } from \"@remixicon/react\"\nexport { RiBankLine } from \"@remixicon/react\"\nexport { RiBarChartLine } from \"@remixicon/react\"\nexport { RiBluetoothLine } from \"@remixicon/react\"\nexport { RiBold } from \"@remixicon/react\"\nexport { RiBookOpenLine } from \"@remixicon/react\"\nexport { RiBookmarkLine } from \"@remixicon/react\"\nexport { RiBox1Line } from \"@remixicon/react\"\nexport { RiBox3Line } from \"@remixicon/react\"\nexport { RiCalculatorLine } from \"@remixicon/react\"\nexport { RiCalendarLine } from \"@remixicon/react\"\nexport { RiCameraLine } from \"@remixicon/react\"\nexport { RiChat1Line } from \"@remixicon/react\"\nexport { RiCheckLine } from \"@remixicon/react\"\nexport { RiCheckboxCircleFill } from \"@remixicon/react\"\nexport { RiCheckboxCircleLine } from \"@remixicon/react\"\nexport { RiClipboardLine } from \"@remixicon/react\"\nexport { RiCloseCircleLine } from \"@remixicon/react\"\nexport { RiCloseLine } from \"@remixicon/react\"\nexport { RiCodeLine } from \"@remixicon/react\"\nexport { RiCommandLine } from \"@remixicon/react\"\nexport { RiComputerLine } from \"@remixicon/react\"\nexport { RiCornerUpLeftLine } from \"@remixicon/react\"\nexport { RiCornerUpRightLine } from \"@remixicon/react\"\nexport { RiCropLine } from \"@remixicon/react\"\nexport { RiDashboardLine } from \"@remixicon/react\"\nexport { RiDatabase2Line } from \"@remixicon/react\"\nexport { RiDeleteBinLine } from \"@remixicon/react\"\nexport { RiDownloadLine } from \"@remixicon/react\"\nexport { RiDraggable } from \"@remixicon/react\"\nexport { RiEmotionLine } from \"@remixicon/react\"\nexport { RiErrorWarningLine } from \"@remixicon/react\"\nexport { RiExternalLinkLine } from \"@remixicon/react\"\nexport { RiEyeLine } from \"@remixicon/react\"\nexport { RiEyeOffLine } from \"@remixicon/react\"\nexport { RiFileChartLine } from \"@remixicon/react\"\nexport { RiFileCodeLine } from \"@remixicon/react\"\nexport { RiFileCopyLine } from \"@remixicon/react\"\nexport { RiFileLine } from \"@remixicon/react\"\nexport { RiFileTextLine } from \"@remixicon/react\"\nexport { RiFlashlightLine } from \"@remixicon/react\"\nexport { RiFolderAddLine } from \"@remixicon/react\"\nexport { RiFolderLine } from \"@remixicon/react\"\nexport { RiFolderOpenLine } from \"@remixicon/react\"\nexport { RiGalleryLine } from \"@remixicon/react\"\nexport { RiGlobalLine } from \"@remixicon/react\"\nexport { RiGlobeLine } from \"@remixicon/react\"\nexport { RiGridLine } from \"@remixicon/react\"\nexport { RiGroupLine } from \"@remixicon/react\"\nexport { RiHardDriveLine } from \"@remixicon/react\"\nexport { RiHeartLine } from \"@remixicon/react\"\nexport { RiHomeLine } from \"@remixicon/react\"\nexport { RiImageLine } from \"@remixicon/react\"\nexport { RiInboxLine } from \"@remixicon/react\"\nexport { RiInformationLine } from \"@remixicon/react\"\nexport { RiItalic } from \"@remixicon/react\"\nexport { RiKeyboardLine } from \"@remixicon/react\"\nexport { RiLayoutColumnLine } from \"@remixicon/react\"\nexport { RiLayoutLeftLine } from \"@remixicon/react\"\nexport { RiLayoutLine } from \"@remixicon/react\"\nexport { RiLifebuoyLine } from \"@remixicon/react\"\nexport { RiLineChartLine } from \"@remixicon/react\"\nexport { RiLinksLine } from \"@remixicon/react\"\nexport { RiListUnordered } from \"@remixicon/react\"\nexport { RiLoader4Line } from \"@remixicon/react\"\nexport { RiLoaderLine } from \"@remixicon/react\"\nexport { RiLockLine } from \"@remixicon/react\"\nexport { RiLogoutBoxLine } from \"@remixicon/react\"\nexport { RiMailLine } from \"@remixicon/react\"\nexport { RiMapLine } from \"@remixicon/react\"\nexport { RiMenuLine } from \"@remixicon/react\"\nexport { RiMicLine } from \"@remixicon/react\"\nexport { RiMoonLine } from \"@remixicon/react\"\nexport { RiMore2Line } from \"@remixicon/react\"\nexport { RiMoreLine } from \"@remixicon/react\"\nexport { RiNotification3Line } from \"@remixicon/react\"\nexport { RiNotificationLine } from \"@remixicon/react\"\nexport { RiPaletteLine } from \"@remixicon/react\"\nexport { RiPencilLine } from \"@remixicon/react\"\nexport { RiPieChartLine } from \"@remixicon/react\"\nexport { RiPulseLine } from \"@remixicon/react\"\nexport { RiQuestionLine } from \"@remixicon/react\"\nexport { RiRecordCircleLine } from \"@remixicon/react\"\nexport { RiRefreshLine } from \"@remixicon/react\"\nexport { RiRobotLine } from \"@remixicon/react\"\nexport { RiSaveLine } from \"@remixicon/react\"\nexport { RiScissorsLine } from \"@remixicon/react\"\nexport { RiSearchEyeLine } from \"@remixicon/react\"\nexport { RiSearchLine } from \"@remixicon/react\"\nexport { RiSendPlaneLine } from \"@remixicon/react\"\nexport { RiSettingsLine } from \"@remixicon/react\"\nexport { RiShareForwardLine } from \"@remixicon/react\"\nexport { RiShareLine } from \"@remixicon/react\"\nexport { RiShieldLine } from \"@remixicon/react\"\nexport { RiShoppingBagLine } from \"@remixicon/react\"\nexport { RiShoppingCartLine } from \"@remixicon/react\"\nexport { RiSideBarLine } from \"@remixicon/react\"\nexport { RiSkipLeftLine } from \"@remixicon/react\"\nexport { RiSkipRightLine } from \"@remixicon/react\"\nexport { RiSparklingLine } from \"@remixicon/react\"\nexport { RiStarLine } from \"@remixicon/react\"\nexport { RiStarOffLine } from \"@remixicon/react\"\nexport { RiSubtractLine } from \"@remixicon/react\"\nexport { RiSunLine } from \"@remixicon/react\"\nexport { RiTableLine } from \"@remixicon/react\"\nexport { RiTerminalBoxLine } from \"@remixicon/react\"\nexport { RiTextWrap } from \"@remixicon/react\"\nexport { RiTimeLine } from \"@remixicon/react\"\nexport { RiTranslate } from \"@remixicon/react\"\nexport { RiUnderline } from \"@remixicon/react\"\nexport { RiUploadCloudLine } from \"@remixicon/react\"\nexport { RiUserLine } from \"@remixicon/react\"\nexport { RiUserUnfollowLine } from \"@remixicon/react\"\nexport { RiVideoLine } from \"@remixicon/react\"\nexport { RiVolumeMuteLine } from \"@remixicon/react\"\nexport { RiWalletLine } from \"@remixicon/react\"\nexport { RiWindowLine } from \"@remixicon/react\"\nexport { RiZoomInLine } from \"@remixicon/react\"\n"
  },
  {
    "path": "apps/v4/registry/icons/__tabler__.ts",
    "content": "// Auto-generated by scripts/build-icons.ts\nexport { IconActivity } from \"@tabler/icons-react\"\nexport { IconAlertOctagon } from \"@tabler/icons-react\"\nexport { IconAlertTriangle } from \"@tabler/icons-react\"\nexport { IconAppWindow } from \"@tabler/icons-react\"\nexport { IconArchive } from \"@tabler/icons-react\"\nexport { IconArchiveOff } from \"@tabler/icons-react\"\nexport { IconArrowDown } from \"@tabler/icons-react\"\nexport { IconArrowForward } from \"@tabler/icons-react\"\nexport { IconArrowLeft } from \"@tabler/icons-react\"\nexport { IconArrowRight } from \"@tabler/icons-react\"\nexport { IconArrowUp } from \"@tabler/icons-react\"\nexport { IconArrowUpRight } from \"@tabler/icons-react\"\nexport { IconBell } from \"@tabler/icons-react\"\nexport { IconBluetooth } from \"@tabler/icons-react\"\nexport { IconBold } from \"@tabler/icons-react\"\nexport { IconBolt } from \"@tabler/icons-react\"\nexport { IconBook } from \"@tabler/icons-react\"\nexport { IconBookmark } from \"@tabler/icons-react\"\nexport { IconBox } from \"@tabler/icons-react\"\nexport { IconBrandJavascript } from \"@tabler/icons-react\"\nexport { IconBuildingBank } from \"@tabler/icons-react\"\nexport { IconCalculator } from \"@tabler/icons-react\"\nexport { IconCalendar } from \"@tabler/icons-react\"\nexport { IconCamera } from \"@tabler/icons-react\"\nexport { IconChartBar } from \"@tabler/icons-react\"\nexport { IconChartLine } from \"@tabler/icons-react\"\nexport { IconChartPie } from \"@tabler/icons-react\"\nexport { IconCheck } from \"@tabler/icons-react\"\nexport { IconChevronDown } from \"@tabler/icons-react\"\nexport { IconChevronLeft } from \"@tabler/icons-react\"\nexport { IconChevronRight } from \"@tabler/icons-react\"\nexport { IconChevronUp } from \"@tabler/icons-react\"\nexport { IconChevronsLeft } from \"@tabler/icons-react\"\nexport { IconChevronsRight } from \"@tabler/icons-react\"\nexport { IconCircleArrowLeft } from \"@tabler/icons-react\"\nexport { IconCircleCheck } from \"@tabler/icons-react\"\nexport { IconCircleCheckFilled } from \"@tabler/icons-react\"\nexport { IconCircleDashed } from \"@tabler/icons-react\"\nexport { IconCirclePlusFilled } from \"@tabler/icons-react\"\nexport { IconClipboard } from \"@tabler/icons-react\"\nexport { IconClockHour2 } from \"@tabler/icons-react\"\nexport { IconCloudUpload } from \"@tabler/icons-react\"\nexport { IconCode } from \"@tabler/icons-react\"\nexport { IconCommand } from \"@tabler/icons-react\"\nexport { IconCopy } from \"@tabler/icons-react\"\nexport { IconCornerUpLeft } from \"@tabler/icons-react\"\nexport { IconCornerUpRight } from \"@tabler/icons-react\"\nexport { IconCreditCard } from \"@tabler/icons-react\"\nexport { IconCube } from \"@tabler/icons-react\"\nexport { IconCut } from \"@tabler/icons-react\"\nexport { IconDashboard } from \"@tabler/icons-react\"\nexport { IconDatabase } from \"@tabler/icons-react\"\nexport { IconDeviceDesktop } from \"@tabler/icons-react\"\nexport { IconDeviceFloppy } from \"@tabler/icons-react\"\nexport { IconDots } from \"@tabler/icons-react\"\nexport { IconDotsVertical } from \"@tabler/icons-react\"\nexport { IconDownload } from \"@tabler/icons-react\"\nexport { IconExclamationCircle } from \"@tabler/icons-react\"\nexport { IconExternalLink } from \"@tabler/icons-react\"\nexport { IconEye } from \"@tabler/icons-react\"\nexport { IconEyeClosed } from \"@tabler/icons-react\"\nexport { IconFile } from \"@tabler/icons-react\"\nexport { IconFileAi } from \"@tabler/icons-react\"\nexport { IconFileCode } from \"@tabler/icons-react\"\nexport { IconFileDescription } from \"@tabler/icons-react\"\nexport { IconFileText } from \"@tabler/icons-react\"\nexport { IconFileWord } from \"@tabler/icons-react\"\nexport { IconFlipHorizontal } from \"@tabler/icons-react\"\nexport { IconFlipVertical } from \"@tabler/icons-react\"\nexport { IconFolder } from \"@tabler/icons-react\"\nexport { IconFolderOpen } from \"@tabler/icons-react\"\nexport { IconFolderPlus } from \"@tabler/icons-react\"\nexport { IconFolderSearch } from \"@tabler/icons-react\"\nexport { IconFrame } from \"@tabler/icons-react\"\nexport { IconGlobe } from \"@tabler/icons-react\"\nexport { IconGripVertical } from \"@tabler/icons-react\"\nexport { IconHeadphones } from \"@tabler/icons-react\"\nexport { IconHeart } from \"@tabler/icons-react\"\nexport { IconHelp } from \"@tabler/icons-react\"\nexport { IconHelpCircle } from \"@tabler/icons-react\"\nexport { IconHome } from \"@tabler/icons-react\"\nexport { IconInbox } from \"@tabler/icons-react\"\nexport { IconInfoCircle } from \"@tabler/icons-react\"\nexport { IconInnerShadowTop } from \"@tabler/icons-react\"\nexport { IconItalic } from \"@tabler/icons-react\"\nexport { IconKeyboard } from \"@tabler/icons-react\"\nexport { IconLanguage } from \"@tabler/icons-react\"\nexport { IconLayout } from \"@tabler/icons-react\"\nexport { IconLayoutColumns } from \"@tabler/icons-react\"\nexport { IconLayoutGrid } from \"@tabler/icons-react\"\nexport { IconLayoutRows } from \"@tabler/icons-react\"\nexport { IconLayoutSidebar } from \"@tabler/icons-react\"\nexport { IconLifebuoy } from \"@tabler/icons-react\"\nexport { IconLink } from \"@tabler/icons-react\"\nexport { IconList } from \"@tabler/icons-react\"\nexport { IconListDetails } from \"@tabler/icons-react\"\nexport { IconLoader } from \"@tabler/icons-react\"\nexport { IconLock } from \"@tabler/icons-react\"\nexport { IconLogout } from \"@tabler/icons-react\"\nexport { IconMail } from \"@tabler/icons-react\"\nexport { IconMap } from \"@tabler/icons-react\"\nexport { IconMaximize } from \"@tabler/icons-react\"\nexport { IconMenu } from \"@tabler/icons-react\"\nexport { IconMessage } from \"@tabler/icons-react\"\nexport { IconMessageQuestion } from \"@tabler/icons-react\"\nexport { IconMicrophone } from \"@tabler/icons-react\"\nexport { IconMinimize } from \"@tabler/icons-react\"\nexport { IconMinus } from \"@tabler/icons-react\"\nexport { IconMoodSmile } from \"@tabler/icons-react\"\nexport { IconMoon } from \"@tabler/icons-react\"\nexport { IconNotification } from \"@tabler/icons-react\"\nexport { IconPalette } from \"@tabler/icons-react\"\nexport { IconPencil } from \"@tabler/icons-react\"\nexport { IconPhoto } from \"@tabler/icons-react\"\nexport { IconPlayerRecordFilled } from \"@tabler/icons-react\"\nexport { IconPlus } from \"@tabler/icons-react\"\nexport { IconRefresh } from \"@tabler/icons-react\"\nexport { IconReport } from \"@tabler/icons-react\"\nexport { IconRobot } from \"@tabler/icons-react\"\nexport { IconRosetteDiscountCheck } from \"@tabler/icons-react\"\nexport { IconRotateClockwise2 } from \"@tabler/icons-react\"\nexport { IconSearch } from \"@tabler/icons-react\"\nexport { IconSelector } from \"@tabler/icons-react\"\nexport { IconSend } from \"@tabler/icons-react\"\nexport { IconServer } from \"@tabler/icons-react\"\nexport { IconServerSpark } from \"@tabler/icons-react\"\nexport { IconSettings } from \"@tabler/icons-react\"\nexport { IconShare } from \"@tabler/icons-react\"\nexport { IconShare2 } from \"@tabler/icons-react\"\nexport { IconShare3 } from \"@tabler/icons-react\"\nexport { IconShield } from \"@tabler/icons-react\"\nexport { IconShoppingBag } from \"@tabler/icons-react\"\nexport { IconShoppingCart } from \"@tabler/icons-react\"\nexport { IconSparkles } from \"@tabler/icons-react\"\nexport { IconStar } from \"@tabler/icons-react\"\nexport { IconStarOff } from \"@tabler/icons-react\"\nexport { IconSun } from \"@tabler/icons-react\"\nexport { IconTable } from \"@tabler/icons-react\"\nexport { IconTerminal } from \"@tabler/icons-react\"\nexport { IconTerminal2 } from \"@tabler/icons-react\"\nexport { IconTextCaption } from \"@tabler/icons-react\"\nexport { IconTrash } from \"@tabler/icons-react\"\nexport { IconTrendingDown } from \"@tabler/icons-react\"\nexport { IconTrendingUp } from \"@tabler/icons-react\"\nexport { IconUnderline } from \"@tabler/icons-react\"\nexport { IconUser } from \"@tabler/icons-react\"\nexport { IconUserCircle } from \"@tabler/icons-react\"\nexport { IconUserX } from \"@tabler/icons-react\"\nexport { IconUsers } from \"@tabler/icons-react\"\nexport { IconVideoPlus } from \"@tabler/icons-react\"\nexport { IconVolume } from \"@tabler/icons-react\"\nexport { IconWallet } from \"@tabler/icons-react\"\nexport { IconWaveSine } from \"@tabler/icons-react\"\nexport { IconWorld } from \"@tabler/icons-react\"\nexport { IconX } from \"@tabler/icons-react\"\nexport { IconZoomIn } from \"@tabler/icons-react\"\nexport { IconZoomOut } from \"@tabler/icons-react\"\n"
  },
  {
    "path": "apps/v4/registry/icons/create-icon-loader.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-explicit-any */\n\"use client\"\n\nimport { use } from \"react\"\nimport { HugeiconsIcon, type IconSvgElement } from \"@hugeicons/react\"\n\nconst iconPromiseCaches = new Map<string, Map<string, Promise<any>>>()\n\nfunction getCache(libraryName: string) {\n  if (!iconPromiseCaches.has(libraryName)) {\n    iconPromiseCaches.set(libraryName, new Map())\n  }\n  return iconPromiseCaches.get(libraryName)!\n}\n\nfunction isIconData(data: any): data is IconSvgElement {\n  return Array.isArray(data)\n}\n\nexport function createIconLoader(libraryName: string) {\n  const cache = getCache(libraryName)\n\n  return function IconLoader({\n    name,\n    strokeWidth = 2,\n    ...props\n  }: {\n    name: string\n  } & React.ComponentProps<\"svg\">) {\n    if (!cache.has(name)) {\n      const promise = import(`./__${libraryName}__`).then((mod) => {\n        const icon = mod[name as keyof typeof mod]\n        return icon || null\n      })\n      cache.set(name, promise)\n    }\n\n    const iconData = use(cache.get(name)!)\n\n    if (!iconData) {\n      return null\n    }\n\n    if (isIconData(iconData)) {\n      return <HugeiconsIcon icon={iconData} strokeWidth={2} {...props} />\n    }\n\n    const IconComponent = iconData\n    return <IconComponent {...props} />\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/icons/icon-hugeicons.tsx",
    "content": "import { createIconLoader } from \"./create-icon-loader\"\n\nexport const IconHugeicons = createIconLoader(\"hugeicons\")\n"
  },
  {
    "path": "apps/v4/registry/icons/icon-lucide.tsx",
    "content": "import { createIconLoader } from \"./create-icon-loader\"\n\nexport const IconLucide = createIconLoader(\"lucide\")\n"
  },
  {
    "path": "apps/v4/registry/icons/icon-phosphor.tsx",
    "content": "import { createIconLoader } from \"./create-icon-loader\"\n\nexport const IconPhosphor = createIconLoader(\"phosphor\")\n"
  },
  {
    "path": "apps/v4/registry/icons/icon-remixicon.tsx",
    "content": "import { createIconLoader } from \"./create-icon-loader\"\n\nexport const IconRemixicon = createIconLoader(\"remixicon\")\n"
  },
  {
    "path": "apps/v4/registry/icons/icon-tabler.tsx",
    "content": "import { createIconLoader } from \"./create-icon-loader\"\n\nexport const IconTabler = createIconLoader(\"tabler\")\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const blocks: Registry[\"items\"] = [\n  {\n    name: \"dashboard-01\",\n    type: \"registry:block\",\n    description: \"A dashboard with sidebar, charts and data table.\",\n    dependencies: [\n      \"@dnd-kit/core\",\n      \"@dnd-kit/modifiers\",\n      \"@dnd-kit/sortable\",\n      \"@dnd-kit/utilities\",\n      \"@tabler/icons-react\",\n      \"@tanstack/react-table\",\n      \"zod\",\n    ],\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"chart\",\n      \"card\",\n      \"select\",\n      \"tabs\",\n      \"table\",\n      \"toggle-group\",\n      \"badge\",\n      \"button\",\n      \"checkbox\",\n      \"dropdown-menu\",\n      \"drawer\",\n      \"input\",\n      \"avatar\",\n      \"sheet\",\n      \"sonner\",\n    ],\n    files: [\n      {\n        path: \"blocks/dashboard-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/dashboard-01/data.json\",\n        type: \"registry:file\",\n        target: \"app/dashboard/data.json\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/chart-area-interactive.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/data-table.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-documents.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/section-cards.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/dashboard-01/components/site-header.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"dashboard\"],\n    meta: {\n      iframeHeight: \"1000px\",\n    },\n  },\n  {\n    name: \"sidebar-01\",\n    type: \"registry:block\",\n    description: \"A simple sidebar with navigation grouped by section.\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-01/components/version-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-02\",\n    description: \"A sidebar with collapsible sections.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-02/components/version-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-03\",\n    description: \"A sidebar with submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\"],\n    files: [\n      {\n        path: \"blocks/sidebar-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-03/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-04\",\n    description: \"A floating sidebar with submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"separator\"],\n    files: [\n      {\n        path: \"blocks/sidebar-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-04/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-05\",\n    description: \"A sidebar with collapsible submenus.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"label\",\n      \"collapsible\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-05/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-05/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-06\",\n    description: \"A sidebar with submenus as dropdowns.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"card\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-06/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-07\",\n    type: \"registry:block\",\n    description: \"A sidebar that collapses to icons.\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-07/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-07/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-08\",\n    description: \"An inset sidebar with secondary navigation.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-08/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-08/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-09\",\n    description: \"Collapsible nested sidebars.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n      \"switch\",\n      \"label\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-09/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-09/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-09/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-10\",\n    description: \"A sidebar in a popover.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"popover\",\n      \"collapsible\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-10/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-actions.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-favorites.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/nav-workspaces.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-10/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-11\",\n    description: \"A sidebar with a collapsible file tree.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"separator\", \"collapsible\"],\n    files: [\n      {\n        path: \"blocks/sidebar-11/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-11/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-12\",\n    description: \"A sidebar with a calendar.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"calendar\",\n      \"dropdown-menu\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-12/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/calendars.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/date-picker.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-12/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-13\",\n    description: \"A sidebar in a dialog.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n    files: [\n      {\n        path: \"blocks/sidebar-13/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-13/components/settings-dialog.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-14\",\n    description: \"A sidebar on the right.\",\n    type: \"registry:block\",\n    registryDependencies: [\"sidebar\", \"breadcrumb\"],\n    files: [\n      {\n        path: \"blocks/sidebar-14/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-14/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-15\",\n    description: \"A left and right sidebar.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"popover\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"calendar\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-15/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/calendars.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/date-picker.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-favorites.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/nav-workspaces.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/sidebar-left.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/sidebar-right.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-15/components/team-switcher.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"sidebar-16\",\n    description: \"A sidebar with a sticky site header.\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"sidebar\",\n      \"breadcrumb\",\n      \"separator\",\n      \"collapsible\",\n      \"dropdown-menu\",\n      \"avatar\",\n      \"button\",\n      \"label\",\n    ],\n    files: [\n      {\n        path: \"blocks/sidebar-16/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dashboard/page.tsx\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/app-sidebar.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-main.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-projects.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-secondary.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/nav-user.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/search-form.tsx\",\n        type: \"registry:component\",\n      },\n      {\n        path: \"blocks/sidebar-16/components/site-header.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"sidebar\", \"dashboard\"],\n  },\n  {\n    name: \"login-01\",\n    description: \"A simple login form.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-01/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-01/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-02\",\n    description: \"A two column login page with a cover image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-02/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-02/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-03\",\n    description: \"A login page with a muted background color.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-03/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-03/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-04\",\n    description: \"A login page with form and image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-04/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-04/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"login-05\",\n    description: \"A simple email-only login page.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/login-05/page.tsx\",\n        target: \"app/login/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/login-05/components/login-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"login\"],\n  },\n  {\n    name: \"signup-01\",\n    description: \"A simple signup form.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/signup-01/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-01/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-02\",\n    description: \"A two column signup page with a cover image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-02/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-02/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-03\",\n    description: \"A signup page with a muted background color.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-03/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-03/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-04\",\n    description: \"A signup page with form and image.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"field\"],\n    files: [\n      {\n        path: \"blocks/signup-04/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-04/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n  {\n    name: \"signup-05\",\n    description: \"A simple signup form with social providers.\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/signup-05/page.tsx\",\n        target: \"app/signup/page.tsx\",\n        type: \"registry:page\",\n      },\n      {\n        path: \"blocks/signup-05/components/signup-form.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"authentication\", \"signup\"],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  IconCamera,\n  IconChartBar,\n  IconDashboard,\n  IconDatabase,\n  IconFileAi,\n  IconFileDescription,\n  IconFileWord,\n  IconFolder,\n  IconHelp,\n  IconInnerShadowTop,\n  IconListDetails,\n  IconReport,\n  IconSearch,\n  IconSettings,\n  IconUsers,\n} from \"@tabler/icons-react\"\n\nimport { NavDocuments } from \"@/registry/new-york-v4/blocks/dashboard-01/components/nav-documents\"\nimport { NavMain } from \"@/registry/new-york-v4/blocks/dashboard-01/components/nav-main\"\nimport { NavSecondary } from \"@/registry/new-york-v4/blocks/dashboard-01/components/nav-secondary\"\nimport { NavUser } from \"@/registry/new-york-v4/blocks/dashboard-01/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Dashboard\",\n      url: \"#\",\n      icon: IconDashboard,\n    },\n    {\n      title: \"Lifecycle\",\n      url: \"#\",\n      icon: IconListDetails,\n    },\n    {\n      title: \"Analytics\",\n      url: \"#\",\n      icon: IconChartBar,\n    },\n    {\n      title: \"Projects\",\n      url: \"#\",\n      icon: IconFolder,\n    },\n    {\n      title: \"Team\",\n      url: \"#\",\n      icon: IconUsers,\n    },\n  ],\n  navClouds: [\n    {\n      title: \"Capture\",\n      icon: IconCamera,\n      isActive: true,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Proposal\",\n      icon: IconFileDescription,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Prompts\",\n      icon: IconFileAi,\n      url: \"#\",\n      items: [\n        {\n          title: \"Active Proposals\",\n          url: \"#\",\n        },\n        {\n          title: \"Archived\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: IconSettings,\n    },\n    {\n      title: \"Get Help\",\n      url: \"#\",\n      icon: IconHelp,\n    },\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: IconSearch,\n    },\n  ],\n  documents: [\n    {\n      name: \"Data Library\",\n      url: \"#\",\n      icon: IconDatabase,\n    },\n    {\n      name: \"Reports\",\n      url: \"#\",\n      icon: IconReport,\n    },\n    {\n      name: \"Word Assistant\",\n      url: \"#\",\n      icon: IconFileWord,\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar collapsible=\"offcanvas\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton\n              asChild\n              className=\"data-[slot=sidebar-menu-button]:p-1.5!\"\n            >\n              <a href=\"#\">\n                <IconInnerShadowTop className=\"size-5!\" />\n                <span className=\"text-base font-semibold\">Acme Inc.</span>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavDocuments items={data.documents} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/chart-area-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport { useIsMobile } from \"@/registry/new-york-v4/hooks/use-mobile\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport const description = \"An interactive area chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n  { date: \"2024-05-01\", desktop: 165, mobile: 220 },\n  { date: \"2024-05-02\", desktop: 293, mobile: 310 },\n  { date: \"2024-05-03\", desktop: 247, mobile: 190 },\n  { date: \"2024-05-04\", desktop: 385, mobile: 420 },\n  { date: \"2024-05-05\", desktop: 481, mobile: 390 },\n  { date: \"2024-05-06\", desktop: 498, mobile: 520 },\n  { date: \"2024-05-07\", desktop: 388, mobile: 300 },\n  { date: \"2024-05-08\", desktop: 149, mobile: 210 },\n  { date: \"2024-05-09\", desktop: 227, mobile: 180 },\n  { date: \"2024-05-10\", desktop: 293, mobile: 330 },\n  { date: \"2024-05-11\", desktop: 335, mobile: 270 },\n  { date: \"2024-05-12\", desktop: 197, mobile: 240 },\n  { date: \"2024-05-13\", desktop: 197, mobile: 160 },\n  { date: \"2024-05-14\", desktop: 448, mobile: 490 },\n  { date: \"2024-05-15\", desktop: 473, mobile: 380 },\n  { date: \"2024-05-16\", desktop: 338, mobile: 400 },\n  { date: \"2024-05-17\", desktop: 499, mobile: 420 },\n  { date: \"2024-05-18\", desktop: 315, mobile: 350 },\n  { date: \"2024-05-19\", desktop: 235, mobile: 180 },\n  { date: \"2024-05-20\", desktop: 177, mobile: 230 },\n  { date: \"2024-05-21\", desktop: 82, mobile: 140 },\n  { date: \"2024-05-22\", desktop: 81, mobile: 120 },\n  { date: \"2024-05-23\", desktop: 252, mobile: 290 },\n  { date: \"2024-05-24\", desktop: 294, mobile: 220 },\n  { date: \"2024-05-25\", desktop: 201, mobile: 250 },\n  { date: \"2024-05-26\", desktop: 213, mobile: 170 },\n  { date: \"2024-05-27\", desktop: 420, mobile: 460 },\n  { date: \"2024-05-28\", desktop: 233, mobile: 190 },\n  { date: \"2024-05-29\", desktop: 78, mobile: 130 },\n  { date: \"2024-05-30\", desktop: 340, mobile: 280 },\n  { date: \"2024-05-31\", desktop: 178, mobile: 230 },\n  { date: \"2024-06-01\", desktop: 178, mobile: 200 },\n  { date: \"2024-06-02\", desktop: 470, mobile: 410 },\n  { date: \"2024-06-03\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-04\", desktop: 439, mobile: 380 },\n  { date: \"2024-06-05\", desktop: 88, mobile: 140 },\n  { date: \"2024-06-06\", desktop: 294, mobile: 250 },\n  { date: \"2024-06-07\", desktop: 323, mobile: 370 },\n  { date: \"2024-06-08\", desktop: 385, mobile: 320 },\n  { date: \"2024-06-09\", desktop: 438, mobile: 480 },\n  { date: \"2024-06-10\", desktop: 155, mobile: 200 },\n  { date: \"2024-06-11\", desktop: 92, mobile: 150 },\n  { date: \"2024-06-12\", desktop: 492, mobile: 420 },\n  { date: \"2024-06-13\", desktop: 81, mobile: 130 },\n  { date: \"2024-06-14\", desktop: 426, mobile: 380 },\n  { date: \"2024-06-15\", desktop: 307, mobile: 350 },\n  { date: \"2024-06-16\", desktop: 371, mobile: 310 },\n  { date: \"2024-06-17\", desktop: 475, mobile: 520 },\n  { date: \"2024-06-18\", desktop: 107, mobile: 170 },\n  { date: \"2024-06-19\", desktop: 341, mobile: 290 },\n  { date: \"2024-06-20\", desktop: 408, mobile: 450 },\n  { date: \"2024-06-21\", desktop: 169, mobile: 210 },\n  { date: \"2024-06-22\", desktop: 317, mobile: 270 },\n  { date: \"2024-06-23\", desktop: 480, mobile: 530 },\n  { date: \"2024-06-24\", desktop: 132, mobile: 180 },\n  { date: \"2024-06-25\", desktop: 141, mobile: 190 },\n  { date: \"2024-06-26\", desktop: 434, mobile: 380 },\n  { date: \"2024-06-27\", desktop: 448, mobile: 490 },\n  { date: \"2024-06-28\", desktop: 149, mobile: 200 },\n  { date: \"2024-06-29\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-30\", desktop: 446, mobile: 400 },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaInteractive() {\n  const isMobile = useIsMobile()\n  const [timeRange, setTimeRange] = React.useState(\"90d\")\n\n  React.useEffect(() => {\n    if (isMobile) {\n      setTimeRange(\"7d\")\n    }\n  }, [isMobile])\n\n  const filteredData = chartData.filter((item) => {\n    const date = new Date(item.date)\n    const referenceDate = new Date(\"2024-06-30\")\n    let daysToSubtract = 90\n    if (timeRange === \"30d\") {\n      daysToSubtract = 30\n    } else if (timeRange === \"7d\") {\n      daysToSubtract = 7\n    }\n    const startDate = new Date(referenceDate)\n    startDate.setDate(startDate.getDate() - daysToSubtract)\n    return date >= startDate\n  })\n\n  return (\n    <Card className=\"@container/card\">\n      <CardHeader>\n        <CardTitle>Total Visitors</CardTitle>\n        <CardDescription>\n          <span className=\"hidden @[540px]/card:block\">\n            Total for the last 3 months\n          </span>\n          <span className=\"@[540px]/card:hidden\">Last 3 months</span>\n        </CardDescription>\n        <CardAction>\n          <ToggleGroup\n            type=\"single\"\n            value={timeRange}\n            onValueChange={setTimeRange}\n            variant=\"outline\"\n            className=\"hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex\"\n          >\n            <ToggleGroupItem value=\"90d\">Last 3 months</ToggleGroupItem>\n            <ToggleGroupItem value=\"30d\">Last 30 days</ToggleGroupItem>\n            <ToggleGroupItem value=\"7d\">Last 7 days</ToggleGroupItem>\n          </ToggleGroup>\n          <Select value={timeRange} onValueChange={setTimeRange}>\n            <SelectTrigger\n              className=\"flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden\"\n              size=\"sm\"\n              aria-label=\"Select a value\"\n            >\n              <SelectValue placeholder=\"Last 3 months\" />\n            </SelectTrigger>\n            <SelectContent className=\"rounded-xl\">\n              <SelectItem value=\"90d\" className=\"rounded-lg\">\n                Last 3 months\n              </SelectItem>\n              <SelectItem value=\"30d\" className=\"rounded-lg\">\n                Last 30 days\n              </SelectItem>\n              <SelectItem value=\"7d\" className=\"rounded-lg\">\n                Last 7 days\n              </SelectItem>\n            </SelectContent>\n          </Select>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"px-2 pt-4 sm:px-6 sm:pt-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <AreaChart data={filteredData}>\n            <defs>\n              <linearGradient id=\"fillDesktop\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={1.0}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n              <linearGradient id=\"fillMobile\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n            </defs>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={\n                <ChartTooltipContent\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                    })\n                  }}\n                  indicator=\"dot\"\n                />\n              }\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"url(#fillMobile)\"\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"url(#fillDesktop)\"\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/data-table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  closestCenter,\n  DndContext,\n  KeyboardSensor,\n  MouseSensor,\n  TouchSensor,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n  type UniqueIdentifier,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n  arrayMove,\n  SortableContext,\n  useSortable,\n  verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n  IconChevronDown,\n  IconChevronLeft,\n  IconChevronRight,\n  IconChevronsLeft,\n  IconChevronsRight,\n  IconCircleCheckFilled,\n  IconDotsVertical,\n  IconGripVertical,\n  IconLayoutColumns,\n  IconLoader,\n  IconPlus,\n  IconTrendingUp,\n} from \"@tabler/icons-react\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFacetedRowModel,\n  getFacetedUniqueValues,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type Row,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\nimport { toast } from \"sonner\"\nimport { z } from \"zod\"\n\nimport { useIsMobile } from \"@/registry/new-york-v4/hooks/use-mobile\"\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\n\nexport const schema = z.object({\n  id: z.number(),\n  header: z.string(),\n  type: z.string(),\n  status: z.string(),\n  target: z.string(),\n  limit: z.string(),\n  reviewer: z.string(),\n})\n\n// Create a separate component for the drag handle\nfunction DragHandle({ id }: { id: number }) {\n  const { attributes, listeners } = useSortable({\n    id,\n  })\n\n  return (\n    <Button\n      {...attributes}\n      {...listeners}\n      variant=\"ghost\"\n      size=\"icon\"\n      className=\"size-7 text-muted-foreground hover:bg-transparent\"\n    >\n      <IconGripVertical className=\"size-3 text-muted-foreground\" />\n      <span className=\"sr-only\">Drag to reorder</span>\n    </Button>\n  )\n}\n\nconst columns: ColumnDef<z.infer<typeof schema>>[] = [\n  {\n    id: \"drag\",\n    header: () => null,\n    cell: ({ row }) => <DragHandle id={row.original.id} />,\n  },\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={\n            table.getIsAllPageRowsSelected() ||\n            (table.getIsSomePageRowsSelected() && \"indeterminate\")\n          }\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n          aria-label=\"Select all\"\n        />\n      </div>\n    ),\n    cell: ({ row }) => (\n      <div className=\"flex items-center justify-center\">\n        <Checkbox\n          checked={row.getIsSelected()}\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\n          aria-label=\"Select row\"\n        />\n      </div>\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"header\",\n    header: \"Header\",\n    cell: ({ row }) => {\n      return <TableCellViewer item={row.original} />\n    },\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"type\",\n    header: \"Section Type\",\n    cell: ({ row }) => (\n      <div className=\"w-32\">\n        <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n          {row.original.type}\n        </Badge>\n      </div>\n    ),\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <Badge variant=\"outline\" className=\"px-1.5 text-muted-foreground\">\n        {row.original.status === \"Done\" ? (\n          <IconCircleCheckFilled className=\"fill-green-500 dark:fill-green-400\" />\n        ) : (\n          <IconLoader />\n        )}\n        {row.original.status}\n      </Badge>\n    ),\n  },\n  {\n    accessorKey: \"target\",\n    header: () => <div className=\"w-full text-right\">Target</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-target`} className=\"sr-only\">\n          Target\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.target}\n          id={`${row.original.id}-target`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"limit\",\n    header: () => <div className=\"w-full text-right\">Limit</div>,\n    cell: ({ row }) => (\n      <form\n        onSubmit={(e) => {\n          e.preventDefault()\n          toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), {\n            loading: `Saving ${row.original.header}`,\n            success: \"Done\",\n            error: \"Error\",\n          })\n        }}\n      >\n        <Label htmlFor={`${row.original.id}-limit`} className=\"sr-only\">\n          Limit\n        </Label>\n        <Input\n          className=\"h-8 w-16 border-transparent bg-transparent text-right shadow-none hover:bg-input/30 focus-visible:border focus-visible:bg-background dark:bg-transparent dark:hover:bg-input/30 dark:focus-visible:bg-input/30\"\n          defaultValue={row.original.limit}\n          id={`${row.original.id}-limit`}\n        />\n      </form>\n    ),\n  },\n  {\n    accessorKey: \"reviewer\",\n    header: \"Reviewer\",\n    cell: ({ row }) => {\n      const isAssigned = row.original.reviewer !== \"Assign reviewer\"\n\n      if (isAssigned) {\n        return row.original.reviewer\n      }\n\n      return (\n        <>\n          <Label htmlFor={`${row.original.id}-reviewer`} className=\"sr-only\">\n            Reviewer\n          </Label>\n          <Select>\n            <SelectTrigger\n              className=\"w-38 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate\"\n              size=\"sm\"\n              id={`${row.original.id}-reviewer`}\n            >\n              <SelectValue placeholder=\"Assign reviewer\" />\n            </SelectTrigger>\n            <SelectContent align=\"end\">\n              <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n              <SelectItem value=\"Jamik Tashpulatov\">\n                Jamik Tashpulatov\n              </SelectItem>\n            </SelectContent>\n          </Select>\n        </>\n      )\n    },\n  },\n  {\n    id: \"actions\",\n    cell: () => (\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button\n            variant=\"ghost\"\n            className=\"flex size-8 text-muted-foreground data-[state=open]:bg-muted\"\n            size=\"icon\"\n          >\n            <IconDotsVertical />\n            <span className=\"sr-only\">Open menu</span>\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-32\">\n          <DropdownMenuItem>Edit</DropdownMenuItem>\n          <DropdownMenuItem>Make a copy</DropdownMenuItem>\n          <DropdownMenuItem>Favorite</DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem variant=\"destructive\">Delete</DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    ),\n  },\n]\n\nfunction DraggableRow({ row }: { row: Row<z.infer<typeof schema>> }) {\n  const { transform, transition, setNodeRef, isDragging } = useSortable({\n    id: row.original.id,\n  })\n\n  return (\n    <TableRow\n      data-state={row.getIsSelected() && \"selected\"}\n      data-dragging={isDragging}\n      ref={setNodeRef}\n      className=\"relative z-0 data-[dragging=true]:z-10 data-[dragging=true]:opacity-80\"\n      style={{\n        transform: CSS.Transform.toString(transform),\n        transition: transition,\n      }}\n    >\n      {row.getVisibleCells().map((cell) => (\n        <TableCell key={cell.id}>\n          {flexRender(cell.column.columnDef.cell, cell.getContext())}\n        </TableCell>\n      ))}\n    </TableRow>\n  )\n}\n\nexport function DataTable({\n  data: initialData,\n}: {\n  data: z.infer<typeof schema>[]\n}) {\n  const [data, setData] = React.useState(() => initialData)\n  const [rowSelection, setRowSelection] = React.useState({})\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [pagination, setPagination] = React.useState({\n    pageIndex: 0,\n    pageSize: 10,\n  })\n  const sortableId = React.useId()\n  const sensors = useSensors(\n    useSensor(MouseSensor, {}),\n    useSensor(TouchSensor, {}),\n    useSensor(KeyboardSensor, {})\n  )\n\n  const dataIds = React.useMemo<UniqueIdentifier[]>(\n    () => data?.map(({ id }) => id) || [],\n    [data]\n  )\n\n  const table = useReactTable({\n    data,\n    columns,\n    state: {\n      sorting,\n      columnVisibility,\n      rowSelection,\n      columnFilters,\n      pagination,\n    },\n    getRowId: (row) => row.id.toString(),\n    enableRowSelection: true,\n    onRowSelectionChange: setRowSelection,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    onColumnVisibilityChange: setColumnVisibility,\n    onPaginationChange: setPagination,\n    getCoreRowModel: getCoreRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFacetedRowModel: getFacetedRowModel(),\n    getFacetedUniqueValues: getFacetedUniqueValues(),\n  })\n\n  function handleDragEnd(event: DragEndEvent) {\n    const { active, over } = event\n    if (active && over && active.id !== over.id) {\n      setData((data) => {\n        const oldIndex = dataIds.indexOf(active.id)\n        const newIndex = dataIds.indexOf(over.id)\n        return arrayMove(data, oldIndex, newIndex)\n      })\n    }\n  }\n\n  return (\n    <Tabs\n      defaultValue=\"outline\"\n      className=\"w-full flex-col justify-start gap-6\"\n    >\n      <div className=\"flex items-center justify-between px-4 lg:px-6\">\n        <Label htmlFor=\"view-selector\" className=\"sr-only\">\n          View\n        </Label>\n        <Select defaultValue=\"outline\">\n          <SelectTrigger\n            className=\"flex w-fit @4xl/main:hidden\"\n            size=\"sm\"\n            id=\"view-selector\"\n          >\n            <SelectValue placeholder=\"Select a view\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectItem value=\"outline\">Outline</SelectItem>\n            <SelectItem value=\"past-performance\">Past Performance</SelectItem>\n            <SelectItem value=\"key-personnel\">Key Personnel</SelectItem>\n            <SelectItem value=\"focus-documents\">Focus Documents</SelectItem>\n          </SelectContent>\n        </Select>\n        <TabsList className=\"hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1 @4xl/main:flex\">\n          <TabsTrigger value=\"outline\">Outline</TabsTrigger>\n          <TabsTrigger value=\"past-performance\">\n            Past Performance <Badge variant=\"secondary\">3</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"key-personnel\">\n            Key Personnel <Badge variant=\"secondary\">2</Badge>\n          </TabsTrigger>\n          <TabsTrigger value=\"focus-documents\">Focus Documents</TabsTrigger>\n        </TabsList>\n        <div className=\"flex items-center gap-2\">\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button variant=\"outline\" size=\"sm\">\n                <IconLayoutColumns />\n                <span className=\"hidden lg:inline\">Customize Columns</span>\n                <span className=\"lg:hidden\">Columns</span>\n                <IconChevronDown />\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"w-56\">\n              {table\n                .getAllColumns()\n                .filter(\n                  (column) =>\n                    typeof column.accessorFn !== \"undefined\" &&\n                    column.getCanHide()\n                )\n                .map((column) => {\n                  return (\n                    <DropdownMenuCheckboxItem\n                      key={column.id}\n                      className=\"capitalize\"\n                      checked={column.getIsVisible()}\n                      onCheckedChange={(value) =>\n                        column.toggleVisibility(!!value)\n                      }\n                    >\n                      {column.id}\n                    </DropdownMenuCheckboxItem>\n                  )\n                })}\n            </DropdownMenuContent>\n          </DropdownMenu>\n          <Button variant=\"outline\" size=\"sm\">\n            <IconPlus />\n            <span className=\"hidden lg:inline\">Add Section</span>\n          </Button>\n        </div>\n      </div>\n      <TabsContent\n        value=\"outline\"\n        className=\"relative flex flex-col gap-4 overflow-auto px-4 lg:px-6\"\n      >\n        <div className=\"overflow-hidden rounded-lg border\">\n          <DndContext\n            collisionDetection={closestCenter}\n            modifiers={[restrictToVerticalAxis]}\n            onDragEnd={handleDragEnd}\n            sensors={sensors}\n            id={sortableId}\n          >\n            <Table>\n              <TableHeader className=\"sticky top-0 z-10 bg-muted\">\n                {table.getHeaderGroups().map((headerGroup) => (\n                  <TableRow key={headerGroup.id}>\n                    {headerGroup.headers.map((header) => {\n                      return (\n                        <TableHead key={header.id} colSpan={header.colSpan}>\n                          {header.isPlaceholder\n                            ? null\n                            : flexRender(\n                                header.column.columnDef.header,\n                                header.getContext()\n                              )}\n                        </TableHead>\n                      )\n                    })}\n                  </TableRow>\n                ))}\n              </TableHeader>\n              <TableBody className=\"**:data-[slot=table-cell]:first:w-8\">\n                {table.getRowModel().rows?.length ? (\n                  <SortableContext\n                    items={dataIds}\n                    strategy={verticalListSortingStrategy}\n                  >\n                    {table.getRowModel().rows.map((row) => (\n                      <DraggableRow key={row.id} row={row} />\n                    ))}\n                  </SortableContext>\n                ) : (\n                  <TableRow>\n                    <TableCell\n                      colSpan={columns.length}\n                      className=\"h-24 text-center\"\n                    >\n                      No results.\n                    </TableCell>\n                  </TableRow>\n                )}\n              </TableBody>\n            </Table>\n          </DndContext>\n        </div>\n        <div className=\"flex items-center justify-between px-4\">\n          <div className=\"hidden flex-1 text-sm text-muted-foreground lg:flex\">\n            {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n            {table.getFilteredRowModel().rows.length} row(s) selected.\n          </div>\n          <div className=\"flex w-full items-center gap-8 lg:w-fit\">\n            <div className=\"hidden items-center gap-2 lg:flex\">\n              <Label htmlFor=\"rows-per-page\" className=\"text-sm font-medium\">\n                Rows per page\n              </Label>\n              <Select\n                value={`${table.getState().pagination.pageSize}`}\n                onValueChange={(value) => {\n                  table.setPageSize(Number(value))\n                }}\n              >\n                <SelectTrigger size=\"sm\" className=\"w-20\" id=\"rows-per-page\">\n                  <SelectValue\n                    placeholder={table.getState().pagination.pageSize}\n                  />\n                </SelectTrigger>\n                <SelectContent side=\"top\">\n                  {[10, 20, 30, 40, 50].map((pageSize) => (\n                    <SelectItem key={pageSize} value={`${pageSize}`}>\n                      {pageSize}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"flex w-fit items-center justify-center text-sm font-medium\">\n              Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n              {table.getPageCount()}\n            </div>\n            <div className=\"ml-auto flex items-center gap-2 lg:ml-0\">\n              <Button\n                variant=\"outline\"\n                className=\"hidden h-8 w-8 p-0 lg:flex\"\n                onClick={() => table.setPageIndex(0)}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to first page</span>\n                <IconChevronsLeft />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.previousPage()}\n                disabled={!table.getCanPreviousPage()}\n              >\n                <span className=\"sr-only\">Go to previous page</span>\n                <IconChevronLeft />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"size-8\"\n                size=\"icon\"\n                onClick={() => table.nextPage()}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to next page</span>\n                <IconChevronRight />\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"hidden size-8 lg:flex\"\n                size=\"icon\"\n                onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n                disabled={!table.getCanNextPage()}\n              >\n                <span className=\"sr-only\">Go to last page</span>\n                <IconChevronsRight />\n              </Button>\n            </div>\n          </div>\n        </div>\n      </TabsContent>\n      <TabsContent\n        value=\"past-performance\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent value=\"key-personnel\" className=\"flex flex-col px-4 lg:px-6\">\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n      <TabsContent\n        value=\"focus-documents\"\n        className=\"flex flex-col px-4 lg:px-6\"\n      >\n        <div className=\"aspect-video w-full flex-1 rounded-lg border border-dashed\"></div>\n      </TabsContent>\n    </Tabs>\n  )\n}\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--primary)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--primary)\",\n  },\n} satisfies ChartConfig\n\nfunction TableCellViewer({ item }: { item: z.infer<typeof schema> }) {\n  const isMobile = useIsMobile()\n\n  return (\n    <Drawer direction={isMobile ? \"bottom\" : \"right\"}>\n      <DrawerTrigger asChild>\n        <Button variant=\"link\" className=\"w-fit px-0 text-left text-foreground\">\n          {item.header}\n        </Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader className=\"gap-1\">\n          <DrawerTitle>{item.header}</DrawerTitle>\n          <DrawerDescription>\n            Showing total visitors for the last 6 months\n          </DrawerDescription>\n        </DrawerHeader>\n        <div className=\"flex flex-col gap-4 overflow-y-auto px-4 text-sm\">\n          {!isMobile && (\n            <>\n              <ChartContainer config={chartConfig}>\n                <AreaChart\n                  accessibilityLayer\n                  data={chartData}\n                  margin={{\n                    left: 0,\n                    right: 10,\n                  }}\n                >\n                  <CartesianGrid vertical={false} />\n                  <XAxis\n                    dataKey=\"month\"\n                    tickLine={false}\n                    axisLine={false}\n                    tickMargin={8}\n                    tickFormatter={(value) => value.slice(0, 3)}\n                    hide\n                  />\n                  <ChartTooltip\n                    cursor={false}\n                    content={<ChartTooltipContent indicator=\"dot\" />}\n                  />\n                  <Area\n                    dataKey=\"mobile\"\n                    type=\"natural\"\n                    fill=\"var(--color-mobile)\"\n                    fillOpacity={0.6}\n                    stroke=\"var(--color-mobile)\"\n                    stackId=\"a\"\n                  />\n                  <Area\n                    dataKey=\"desktop\"\n                    type=\"natural\"\n                    fill=\"var(--color-desktop)\"\n                    fillOpacity={0.4}\n                    stroke=\"var(--color-desktop)\"\n                    stackId=\"a\"\n                  />\n                </AreaChart>\n              </ChartContainer>\n              <Separator />\n              <div className=\"grid gap-2\">\n                <div className=\"flex gap-2 leading-none font-medium\">\n                  Trending up by 5.2% this month{\" \"}\n                  <IconTrendingUp className=\"size-4\" />\n                </div>\n                <div className=\"text-muted-foreground\">\n                  Showing total visitors for the last 6 months. This is just\n                  some random text to test the layout. It spans multiple lines\n                  and should wrap around.\n                </div>\n              </div>\n              <Separator />\n            </>\n          )}\n          <form className=\"flex flex-col gap-4\">\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"header\">Header</Label>\n              <Input id=\"header\" defaultValue={item.header} />\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"type\">Type</Label>\n                <Select defaultValue={item.type}>\n                  <SelectTrigger id=\"type\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a type\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"Table of Contents\">\n                      Table of Contents\n                    </SelectItem>\n                    <SelectItem value=\"Executive Summary\">\n                      Executive Summary\n                    </SelectItem>\n                    <SelectItem value=\"Technical Approach\">\n                      Technical Approach\n                    </SelectItem>\n                    <SelectItem value=\"Design\">Design</SelectItem>\n                    <SelectItem value=\"Capabilities\">Capabilities</SelectItem>\n                    <SelectItem value=\"Focus Documents\">\n                      Focus Documents\n                    </SelectItem>\n                    <SelectItem value=\"Narrative\">Narrative</SelectItem>\n                    <SelectItem value=\"Cover Page\">Cover Page</SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"status\">Status</Label>\n                <Select defaultValue={item.status}>\n                  <SelectTrigger id=\"status\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select a status\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"Done\">Done</SelectItem>\n                    <SelectItem value=\"In Progress\">In Progress</SelectItem>\n                    <SelectItem value=\"Not Started\">Not Started</SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n            <div className=\"grid grid-cols-2 gap-4\">\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"target\">Target</Label>\n                <Input id=\"target\" defaultValue={item.target} />\n              </div>\n              <div className=\"flex flex-col gap-3\">\n                <Label htmlFor=\"limit\">Limit</Label>\n                <Input id=\"limit\" defaultValue={item.limit} />\n              </div>\n            </div>\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"reviewer\">Reviewer</Label>\n              <Select defaultValue={item.reviewer}>\n                <SelectTrigger id=\"reviewer\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select a reviewer\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"Eddie Lake\">Eddie Lake</SelectItem>\n                  <SelectItem value=\"Jamik Tashpulatov\">\n                    Jamik Tashpulatov\n                  </SelectItem>\n                  <SelectItem value=\"Emily Whalen\">Emily Whalen</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n          </form>\n        </div>\n        <DrawerFooter>\n          <Button>Submit</Button>\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Done</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/nav-documents.tsx",
    "content": "\"use client\"\n\nimport {\n  IconDots,\n  IconFolder,\n  IconShare3,\n  IconTrash,\n  type Icon,\n} from \"@tabler/icons-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavDocuments({\n  items,\n}: {\n  items: {\n    name: string\n    url: string\n    icon: Icon\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Documents</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                <item.icon />\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction\n                  showOnHover\n                  className=\"rounded-sm data-[state=open]:bg-accent\"\n                >\n                  <IconDots />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-24 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <IconFolder />\n                  <span>Open</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <IconShare3 />\n                  <span>Share</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem variant=\"destructive\">\n                  <IconTrash />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <IconDots className=\"text-sidebar-foreground/70\" />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { IconCirclePlusFilled, IconMail, type Icon } from \"@tabler/icons-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: Icon\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupContent className=\"flex flex-col gap-2\">\n        <SidebarMenu>\n          <SidebarMenuItem className=\"flex items-center gap-2\">\n            <SidebarMenuButton\n              tooltip=\"Quick Create\"\n              className=\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\"\n            >\n              <IconCirclePlusFilled />\n              <span>Quick Create</span>\n            </SidebarMenuButton>\n            <Button\n              size=\"icon\"\n              className=\"size-8 group-data-[collapsible=icon]:opacity-0\"\n              variant=\"outline\"\n            >\n              <IconMail />\n              <span className=\"sr-only\">Inbox</span>\n            </Button>\n          </SidebarMenuItem>\n        </SidebarMenu>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton tooltip={item.title}>\n                {item.icon && <item.icon />}\n                <span>{item.title}</span>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/nav-secondary.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { type Icon } from \"@tabler/icons-react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: Icon\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild>\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  IconCreditCard,\n  IconDotsVertical,\n  IconLogout,\n  IconNotification,\n  IconUserCircle,\n} from \"@tabler/icons-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg grayscale\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs text-muted-foreground\">\n                  {user.email}\n                </span>\n              </div>\n              <IconDotsVertical className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs text-muted-foreground\">\n                    {user.email}\n                  </span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <IconUserCircle />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconCreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <IconNotification />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <IconLogout />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/section-cards.tsx",
    "content": "import { IconTrendingDown, IconTrendingUp } from \"@tabler/icons-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport {\n  Card,\n  CardAction,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\n\nexport function SectionCards() {\n  return (\n    <div className=\"grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-gradient-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card\">\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Total Revenue</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            $1,250.00\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Trending up this month <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Visitors for the last 6 months\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>New Customers</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            1,234\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingDown />\n              -20%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Down 20% this period <IconTrendingDown className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">\n            Acquisition needs attention\n          </div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Active Accounts</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            45,678\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +12.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Strong user retention <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">Engagement exceed targets</div>\n        </CardFooter>\n      </Card>\n      <Card className=\"@container/card\">\n        <CardHeader>\n          <CardDescription>Growth Rate</CardDescription>\n          <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n            4.5%\n          </CardTitle>\n          <CardAction>\n            <Badge variant=\"outline\">\n              <IconTrendingUp />\n              +4.5%\n            </Badge>\n          </CardAction>\n        </CardHeader>\n        <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n          <div className=\"line-clamp-1 flex gap-2 font-medium\">\n            Steady performance increase <IconTrendingUp className=\"size-4\" />\n          </div>\n          <div className=\"text-muted-foreground\">Meets growth projections</div>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/components/site-header.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { SidebarTrigger } from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function SiteHeader() {\n  return (\n    <header className=\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\">\n      <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n        <SidebarTrigger className=\"-ml-1\" />\n        <Separator\n          orientation=\"vertical\"\n          className=\"mx-2 data-[orientation=vertical]:h-4\"\n        />\n        <h1 className=\"text-base font-medium\">Documents</h1>\n        <div className=\"ml-auto flex items-center gap-2\">\n          <Button variant=\"ghost\" asChild size=\"sm\" className=\"hidden sm:flex\">\n            <a\n              href=\"https://github.com/shadcn-ui/ui/tree/main/apps/v4/app/(examples)/dashboard\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n              className=\"dark:text-foreground\"\n            >\n              GitHub\n            </a>\n          </Button>\n        </div>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/data.json",
    "content": "[\n  {\n    \"id\": 1,\n    \"header\": \"Cover page\",\n    \"type\": \"Cover page\",\n    \"status\": \"In Process\",\n    \"target\": \"18\",\n    \"limit\": \"5\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 2,\n    \"header\": \"Table of contents\",\n    \"type\": \"Table of contents\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 3,\n    \"header\": \"Executive summary\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"10\",\n    \"limit\": \"13\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 4,\n    \"header\": \"Technical approach\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"27\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 5,\n    \"header\": \"Design\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"2\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 6,\n    \"header\": \"Capabilities\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"20\",\n    \"limit\": \"8\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 7,\n    \"header\": \"Integration with existing systems\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 8,\n    \"header\": \"Innovation and Advantages\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"25\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 9,\n    \"header\": \"Overview of EMR's Innovative Solutions\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"7\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 10,\n    \"header\": \"Advanced Algorithms and Machine Learning\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 11,\n    \"header\": \"Adaptive Communication Protocols\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"9\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 12,\n    \"header\": \"Advantages Over Current Technologies\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"0\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 13,\n    \"header\": \"Past Performance\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 14,\n    \"header\": \"Customer Feedback and Satisfaction Levels\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"34\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 15,\n    \"header\": \"Implementation Challenges and Solutions\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"3\",\n    \"limit\": \"35\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 16,\n    \"header\": \"Security Measures and Data Protection Policies\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"6\",\n    \"limit\": \"36\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 17,\n    \"header\": \"Scalability and Future Proofing\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"4\",\n    \"limit\": \"37\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 18,\n    \"header\": \"Cost-Benefit Analysis\",\n    \"type\": \"Plain language\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"38\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 19,\n    \"header\": \"User Training and Onboarding Experience\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"17\",\n    \"limit\": \"39\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 20,\n    \"header\": \"Future Development Roadmap\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"11\",\n    \"limit\": \"40\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 21,\n    \"header\": \"System Architecture Overview\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"24\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Maya Johnson\"\n  },\n  {\n    \"id\": 22,\n    \"header\": \"Risk Management Plan\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"15\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Carlos Rodriguez\"\n  },\n  {\n    \"id\": 23,\n    \"header\": \"Compliance Documentation\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"31\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Sarah Chen\"\n  },\n  {\n    \"id\": 24,\n    \"header\": \"API Documentation\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"8\",\n    \"limit\": \"12\",\n    \"reviewer\": \"Raj Patel\"\n  },\n  {\n    \"id\": 25,\n    \"header\": \"User Interface Mockups\",\n    \"type\": \"Visual\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Leila Ahmadi\"\n  },\n  {\n    \"id\": 26,\n    \"header\": \"Database Schema\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Thomas Wilson\"\n  },\n  {\n    \"id\": 27,\n    \"header\": \"Testing Methodology\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 28,\n    \"header\": \"Deployment Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 29,\n    \"header\": \"Budget Breakdown\",\n    \"type\": \"Financial\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 30,\n    \"header\": \"Market Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Sophia Martinez\"\n  },\n  {\n    \"id\": 31,\n    \"header\": \"Competitor Comparison\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 32,\n    \"header\": \"Maintenance Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Alex Thompson\"\n  },\n  {\n    \"id\": 33,\n    \"header\": \"User Personas\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Nina Patel\"\n  },\n  {\n    \"id\": 34,\n    \"header\": \"Accessibility Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 35,\n    \"header\": \"Performance Metrics\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"David Kim\"\n  },\n  {\n    \"id\": 36,\n    \"header\": \"Disaster Recovery Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 37,\n    \"header\": \"Third-party Integrations\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 38,\n    \"header\": \"User Feedback Summary\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 39,\n    \"header\": \"Localization Strategy\",\n    \"type\": \"Narrative\",\n    \"status\": \"In Process\",\n    \"target\": \"12\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Maria Garcia\"\n  },\n  {\n    \"id\": 40,\n    \"header\": \"Mobile Compatibility\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"James Wilson\"\n  },\n  {\n    \"id\": 41,\n    \"header\": \"Data Migration Plan\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 42,\n    \"header\": \"Quality Assurance Protocols\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Priya Singh\"\n  },\n  {\n    \"id\": 43,\n    \"header\": \"Stakeholder Analysis\",\n    \"type\": \"Research\",\n    \"status\": \"In Process\",\n    \"target\": \"11\",\n    \"limit\": \"14\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 44,\n    \"header\": \"Environmental Impact Assessment\",\n    \"type\": \"Research\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 45,\n    \"header\": \"Intellectual Property Rights\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"17\",\n    \"limit\": \"20\",\n    \"reviewer\": \"Sarah Johnson\"\n  },\n  {\n    \"id\": 46,\n    \"header\": \"Customer Support Framework\",\n    \"type\": \"Narrative\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 47,\n    \"header\": \"Version Control Strategy\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 48,\n    \"header\": \"Continuous Integration Pipeline\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Michael Chen\"\n  },\n  {\n    \"id\": 49,\n    \"header\": \"Regulatory Compliance\",\n    \"type\": \"Legal\",\n    \"status\": \"In Process\",\n    \"target\": \"13\",\n    \"limit\": \"16\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 50,\n    \"header\": \"User Authentication System\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"28\",\n    \"limit\": \"31\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 51,\n    \"header\": \"Data Analytics Framework\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 52,\n    \"header\": \"Cloud Infrastructure\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"16\",\n    \"limit\": \"19\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 53,\n    \"header\": \"Network Security Measures\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"29\",\n    \"limit\": \"32\",\n    \"reviewer\": \"Lisa Wong\"\n  },\n  {\n    \"id\": 54,\n    \"header\": \"Project Timeline\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"14\",\n    \"limit\": \"17\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 55,\n    \"header\": \"Resource Allocation\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 56,\n    \"header\": \"Team Structure and Roles\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"20\",\n    \"limit\": \"23\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 57,\n    \"header\": \"Communication Protocols\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"15\",\n    \"limit\": \"18\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 58,\n    \"header\": \"Success Metrics\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"30\",\n    \"limit\": \"33\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 59,\n    \"header\": \"Internationalization Support\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"23\",\n    \"limit\": \"26\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 60,\n    \"header\": \"Backup and Recovery Procedures\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"18\",\n    \"limit\": \"21\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 61,\n    \"header\": \"Monitoring and Alerting System\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"25\",\n    \"limit\": \"28\",\n    \"reviewer\": \"Daniel Park\"\n  },\n  {\n    \"id\": 62,\n    \"header\": \"Code Review Guidelines\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"12\",\n    \"limit\": \"15\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 63,\n    \"header\": \"Documentation Standards\",\n    \"type\": \"Technical content\",\n    \"status\": \"In Process\",\n    \"target\": \"27\",\n    \"limit\": \"30\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 64,\n    \"header\": \"Release Management Process\",\n    \"type\": \"Planning\",\n    \"status\": \"Done\",\n    \"target\": \"22\",\n    \"limit\": \"25\",\n    \"reviewer\": \"Assign reviewer\"\n  },\n  {\n    \"id\": 65,\n    \"header\": \"Feature Prioritization Matrix\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"19\",\n    \"limit\": \"22\",\n    \"reviewer\": \"Emma Davis\"\n  },\n  {\n    \"id\": 66,\n    \"header\": \"Technical Debt Assessment\",\n    \"type\": \"Technical content\",\n    \"status\": \"Done\",\n    \"target\": \"24\",\n    \"limit\": \"27\",\n    \"reviewer\": \"Eddie Lake\"\n  },\n  {\n    \"id\": 67,\n    \"header\": \"Capacity Planning\",\n    \"type\": \"Planning\",\n    \"status\": \"In Process\",\n    \"target\": \"21\",\n    \"limit\": \"24\",\n    \"reviewer\": \"Jamik Tashpulatov\"\n  },\n  {\n    \"id\": 68,\n    \"header\": \"Service Level Agreements\",\n    \"type\": \"Legal\",\n    \"status\": \"Done\",\n    \"target\": \"26\",\n    \"limit\": \"29\",\n    \"reviewer\": \"Assign reviewer\"\n  }\n]\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/dashboard-01/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/dashboard-01/components/app-sidebar\"\nimport { ChartAreaInteractive } from \"@/registry/new-york-v4/blocks/dashboard-01/components/chart-area-interactive\"\nimport { DataTable } from \"@/registry/new-york-v4/blocks/dashboard-01/components/data-table\"\nimport { SectionCards } from \"@/registry/new-york-v4/blocks/dashboard-01/components/section-cards\"\nimport { SiteHeader } from \"@/registry/new-york-v4/blocks/dashboard-01/components/site-header\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nimport data from \"./data.json\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"calc(var(--spacing) * 72)\",\n          \"--header-height\": \"calc(var(--spacing) * 12)\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar variant=\"inset\" />\n      <SidebarInset>\n        <SiteHeader />\n        <div className=\"flex flex-1 flex-col\">\n          <div className=\"@container/main flex flex-1 flex-col gap-2\">\n            <div className=\"flex flex-col gap-4 py-4 md:gap-6 md:py-6\">\n              <SectionCards />\n              <div className=\"px-4 lg:px-6\">\n                <ChartAreaInteractive />\n              </div>\n              <DataTable data={data} />\n            </div>\n          </div>\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-01/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader>\n          <CardTitle>Login to your account</CardTitle>\n          <CardDescription>\n            Enter your email below to login to your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto inline-block text-sm underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n                <Button variant=\"outline\" type=\"button\">\n                  Login with Google\n                </Button>\n                <FieldDescription className=\"text-center\">\n                  Don&apos;t have an account? <a href=\"#\">Sign up</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-01/page.tsx",
    "content": "import { LoginForm } from \"@/registry/new-york-v4/blocks/login-01/components/login-form\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-02/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <FieldGroup>\n        <div className=\"flex flex-col items-center gap-1 text-center\">\n          <h1 className=\"text-2xl font-bold\">Login to your account</h1>\n          <p className=\"text-sm text-balance text-muted-foreground\">\n            Enter your email below to login to your account\n          </p>\n        </div>\n        <Field>\n          <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n          <Input id=\"email\" type=\"email\" placeholder=\"m@example.com\" required />\n        </Field>\n        <Field>\n          <div className=\"flex items-center\">\n            <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n            <a\n              href=\"#\"\n              className=\"ml-auto text-sm underline-offset-4 hover:underline\"\n            >\n              Forgot your password?\n            </a>\n          </div>\n          <Input id=\"password\" type=\"password\" required />\n        </Field>\n        <Field>\n          <Button type=\"submit\">Login</Button>\n        </Field>\n        <FieldSeparator>Or continue with</FieldSeparator>\n        <Field>\n          <Button variant=\"outline\" type=\"button\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            Login with GitHub\n          </Button>\n          <FieldDescription className=\"text-center\">\n            Don&apos;t have an account?{\" \"}\n            <a href=\"#\" className=\"underline underline-offset-4\">\n              Sign up\n            </a>\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-02/page.tsx",
    "content": "import { GalleryVerticalEnd } from \"lucide-react\"\n\nimport { LoginForm } from \"@/registry/new-york-v4/blocks/login-02/components/login-form\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"grid min-h-svh lg:grid-cols-2\">\n      <div className=\"flex flex-col gap-4 p-6 md:p-10\">\n        <div className=\"flex justify-center gap-2 md:justify-start\">\n          <a href=\"#\" className=\"flex items-center gap-2 font-medium\">\n            <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n              <GalleryVerticalEnd className=\"size-4\" />\n            </div>\n            Acme Inc.\n          </a>\n        </div>\n        <div className=\"flex flex-1 items-center justify-center\">\n          <div className=\"w-full max-w-xs\">\n            <LoginForm />\n          </div>\n        </div>\n      </div>\n      <div className=\"relative hidden bg-muted lg:block\">\n        <img\n          src=\"/placeholder.svg\"\n          alt=\"Image\"\n          className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-03/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader className=\"text-center\">\n          <CardTitle className=\"text-xl\">Welcome back</CardTitle>\n          <CardDescription>\n            Login with your Apple or Google account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  Login with Apple\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  Login with Google\n                </Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto text-sm underline-offset-4 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n                <FieldDescription className=\"text-center\">\n                  Don&apos;t have an account? <a href=\"#\">Sign up</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-03/page.tsx",
    "content": "import { GalleryVerticalEnd } from \"lucide-react\"\n\nimport { LoginForm } from \"@/registry/new-york-v4/blocks/login-03/components/login-form\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\">\n      <div className=\"flex w-full max-w-sm flex-col gap-6\">\n        <a href=\"#\" className=\"flex items-center gap-2 self-center font-medium\">\n          <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n            <GalleryVerticalEnd className=\"size-4\" />\n          </div>\n          Acme Inc.\n        </a>\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-04/components/login-form.tsx",
    "content": "import { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card className=\"overflow-hidden p-0\">\n        <CardContent className=\"grid p-0 md:grid-cols-2\">\n          <form className=\"p-6 md:p-8\">\n            <FieldGroup>\n              <div className=\"flex flex-col items-center gap-2 text-center\">\n                <h1 className=\"text-2xl font-bold\">Welcome back</h1>\n                <p className=\"text-balance text-muted-foreground\">\n                  Login to your Acme Inc account\n                </p>\n              </div>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <div className=\"flex items-center\">\n                  <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                  <a\n                    href=\"#\"\n                    className=\"ml-auto text-sm underline-offset-2 hover:underline\"\n                  >\n                    Forgot your password?\n                  </a>\n                </div>\n                <Input id=\"password\" type=\"password\" required />\n              </Field>\n              <Field>\n                <Button type=\"submit\">Login</Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field className=\"grid grid-cols-3 gap-4\">\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Apple</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Google</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Login with Meta</span>\n                </Button>\n              </Field>\n              <FieldDescription className=\"text-center\">\n                Don&apos;t have an account? <a href=\"#\">Sign up</a>\n              </FieldDescription>\n            </FieldGroup>\n          </form>\n          <div className=\"relative hidden bg-muted md:block\">\n            <img\n              src=\"/placeholder.svg\"\n              alt=\"Image\"\n              className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n            />\n          </div>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-04/page.tsx",
    "content": "import { LoginForm } from \"@/registry/new-york-v4/blocks/login-04/components/login-form\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\">\n      <div className=\"w-full max-w-sm md:max-w-4xl\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-05/components/login-form.tsx",
    "content": "import { GalleryVerticalEnd } from \"lucide-react\"\n\nimport { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function LoginForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <form>\n        <FieldGroup>\n          <div className=\"flex flex-col items-center gap-2 text-center\">\n            <a\n              href=\"#\"\n              className=\"flex flex-col items-center gap-2 font-medium\"\n            >\n              <div className=\"flex size-8 items-center justify-center rounded-md\">\n                <GalleryVerticalEnd className=\"size-6\" />\n              </div>\n              <span className=\"sr-only\">Acme Inc.</span>\n            </a>\n            <h1 className=\"text-xl font-bold\">Welcome to Acme Inc.</h1>\n            <FieldDescription>\n              Don&apos;t have an account? <a href=\"#\">Sign up</a>\n            </FieldDescription>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              placeholder=\"m@example.com\"\n              required\n            />\n          </Field>\n          <Field>\n            <Button type=\"submit\">Login</Button>\n          </Field>\n          <FieldSeparator>Or</FieldSeparator>\n          <Field className=\"grid gap-4 sm:grid-cols-2\">\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Apple\n            </Button>\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Google\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/login-05/page.tsx",
    "content": "import { LoginForm } from \"@/registry/new-york-v4/blocks/login-05/components/login-form\"\n\nexport default function LoginPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <LoginForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-01/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\n\nimport { SearchForm } from \"@/registry/new-york-v4/blocks/sidebar-01/components/search-form\"\nimport { VersionSwitcher } from \"@/registry/new-york-v4/blocks/sidebar-01/components/version-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  versions: [\"1.0.1\", \"1.1.0-alpha\", \"2.0.0-beta1\"],\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <VersionSwitcher\n          versions={data.versions}\n          defaultVersion={data.versions[0]}\n        />\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent>\n        {/* We create a SidebarGroup for each parent. */}\n        {data.navMain.map((item) => (\n          <SidebarGroup key={item.title}>\n            <SidebarGroupLabel>{item.title}</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {item.items.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton asChild isActive={item.isActive}>\n                      <a href={item.url}>{item.title}</a>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        ))}\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-01/components/search-form.tsx",
    "content": "import { Search } from \"lucide-react\"\n\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <Search className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\" />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-01/components/version-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Check, ChevronsUpDown, GalleryVerticalEnd } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function VersionSwitcher({\n  versions,\n  defaultVersion,\n}: {\n  versions: string[]\n  defaultVersion: string\n}) {\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <GalleryVerticalEnd className=\"size-4\" />\n              </div>\n              <div className=\"flex flex-col gap-0.5 leading-none\">\n                <span className=\"font-medium\">Documentation</span>\n                <span className=\"\">v{selectedVersion}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width)\"\n            align=\"start\"\n          >\n            {versions.map((version) => (\n              <DropdownMenuItem\n                key={version}\n                onSelect={() => setSelectedVersion(version)}\n              >\n                v{version}{\" \"}\n                {version === selectedVersion && <Check className=\"ml-auto\" />}\n              </DropdownMenuItem>\n            ))}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-01/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-01/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-[orientation=vertical]:h-4\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-02/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\nimport { ChevronRight } from \"lucide-react\"\n\nimport { SearchForm } from \"@/registry/new-york-v4/blocks/sidebar-02/components/search-form\"\nimport { VersionSwitcher } from \"@/registry/new-york-v4/blocks/sidebar-02/components/version-switcher\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  versions: [\"1.0.1\", \"1.1.0-alpha\", \"2.0.0-beta1\"],\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <VersionSwitcher\n          versions={data.versions}\n          defaultVersion={data.versions[0]}\n        />\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent className=\"gap-0\">\n        {/* We create a collapsible SidebarGroup for each parent. */}\n        {data.navMain.map((item) => (\n          <Collapsible\n            key={item.title}\n            title={item.title}\n            defaultOpen\n            className=\"group/collapsible\"\n          >\n            <SidebarGroup>\n              <SidebarGroupLabel\n                asChild\n                className=\"group/label text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                <CollapsibleTrigger>\n                  {item.title}{\" \"}\n                  <ChevronRight className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\" />\n                </CollapsibleTrigger>\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {item.items.map((item) => (\n                      <SidebarMenuItem key={item.title}>\n                        <SidebarMenuButton asChild isActive={item.isActive}>\n                          <a href={item.url}>{item.title}</a>\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </SidebarGroup>\n          </Collapsible>\n        ))}\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-02/components/search-form.tsx",
    "content": "import { Search } from \"lucide-react\"\n\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <Search className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\" />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-02/components/version-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Check, ChevronsUpDown, GalleryVerticalEnd } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function VersionSwitcher({\n  versions,\n  defaultVersion,\n}: {\n  versions: string[]\n  defaultVersion: string\n}) {\n  const [selectedVersion, setSelectedVersion] = React.useState(defaultVersion)\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <GalleryVerticalEnd className=\"size-4\" />\n              </div>\n              <div className=\"flex flex-col gap-0.5 leading-none\">\n                <span className=\"font-medium\">Documentation</span>\n                <span className=\"\">v{selectedVersion}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width)\"\n            align=\"start\"\n          >\n            {versions.map((version) => (\n              <DropdownMenuItem\n                key={version}\n                onSelect={() => setSelectedVersion(version)}\n              >\n                v{version}{\" \"}\n                {version === selectedVersion && <Check className=\"ml-auto\" />}\n              </DropdownMenuItem>\n            ))}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-02/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-02/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          {Array.from({ length: 24 }).map((_, index) => (\n            <div\n              key={index}\n              className=\"aspect-video h-12 w-full rounded-lg bg-muted/50\"\n            />\n          ))}\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-03/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\nimport { GalleryVerticalEnd } from \"lucide-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <GalleryVerticalEnd className=\"size-4\" />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">Documentation</span>\n                  <span className=\"\">v1.0.0</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu>\n            {data.navMain.map((item) => (\n              <SidebarMenuItem key={item.title}>\n                <SidebarMenuButton asChild>\n                  <a href={item.url} className=\"font-medium\">\n                    {item.title}\n                  </a>\n                </SidebarMenuButton>\n                {item.items?.length ? (\n                  <SidebarMenuSub>\n                    {item.items.map((item) => (\n                      <SidebarMenuSubItem key={item.title}>\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\n                          <a href={item.url}>{item.title}</a>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                ) : null}\n              </SidebarMenuItem>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-03/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-03/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b\">\n          <div className=\"flex items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-04/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\nimport { GalleryVerticalEnd } from \"lucide-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar variant=\"floating\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <GalleryVerticalEnd className=\"size-4\" />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">Documentation</span>\n                  <span className=\"\">v1.0.0</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu className=\"gap-2\">\n            {data.navMain.map((item) => (\n              <SidebarMenuItem key={item.title}>\n                <SidebarMenuButton asChild>\n                  <a href={item.url} className=\"font-medium\">\n                    {item.title}\n                  </a>\n                </SidebarMenuButton>\n                {item.items?.length ? (\n                  <SidebarMenuSub className=\"ml-0 border-l-0 px-1.5\">\n                    {item.items.map((item) => (\n                      <SidebarMenuSubItem key={item.title}>\n                        <SidebarMenuSubButton asChild isActive={item.isActive}>\n                          <a href={item.url}>{item.title}</a>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                ) : null}\n              </SidebarMenuItem>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-04/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-04/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"19rem\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-[orientation=vertical]:h-4\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-05/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\nimport { GalleryVerticalEnd, Minus, Plus } from \"lucide-react\"\n\nimport { SearchForm } from \"@/registry/new-york-v4/blocks/sidebar-05/components/search-form\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <GalleryVerticalEnd className=\"size-4\" />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">Documentation</span>\n                  <span className=\"\">v1.0.0</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n        <SearchForm />\n      </SidebarHeader>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarMenu>\n            {data.navMain.map((item, index) => (\n              <Collapsible\n                key={item.title}\n                defaultOpen={index === 1}\n                className=\"group/collapsible\"\n              >\n                <SidebarMenuItem>\n                  <CollapsibleTrigger asChild>\n                    <SidebarMenuButton>\n                      {item.title}{\" \"}\n                      <Plus className=\"ml-auto group-data-[state=open]/collapsible:hidden\" />\n                      <Minus className=\"ml-auto group-data-[state=closed]/collapsible:hidden\" />\n                    </SidebarMenuButton>\n                  </CollapsibleTrigger>\n                  {item.items?.length ? (\n                    <CollapsibleContent>\n                      <SidebarMenuSub>\n                        {item.items.map((item) => (\n                          <SidebarMenuSubItem key={item.title}>\n                            <SidebarMenuSubButton\n                              asChild\n                              isActive={item.isActive}\n                            >\n                              <a href={item.url}>{item.title}</a>\n                            </SidebarMenuSubButton>\n                          </SidebarMenuSubItem>\n                        ))}\n                      </SidebarMenuSub>\n                    </CollapsibleContent>\n                  ) : null}\n                </SidebarMenuItem>\n              </Collapsible>\n            ))}\n          </SidebarMenu>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-05/components/search-form.tsx",
    "content": "import { Search } from \"lucide-react\"\n\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarInput,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <SidebarGroup className=\"py-0\">\n        <SidebarGroupContent className=\"relative\">\n          <Label htmlFor=\"search\" className=\"sr-only\">\n            Search\n          </Label>\n          <SidebarInput\n            id=\"search\"\n            placeholder=\"Search the docs...\"\n            className=\"pl-8\"\n          />\n          <Search className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\" />\n        </SidebarGroupContent>\n      </SidebarGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-05/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-05/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-[orientation=vertical]:h-4\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-06/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\nimport { GalleryVerticalEnd } from \"lucide-react\"\n\nimport { NavMain } from \"@/registry/new-york-v4/blocks/sidebar-06/components/nav-main\"\nimport { SidebarOptInForm } from \"@/registry/new-york-v4/blocks/sidebar-06/components/sidebar-opt-in-form\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <GalleryVerticalEnd className=\"size-4\" />\n                </div>\n                <div className=\"flex flex-col gap-0.5 leading-none\">\n                  <span className=\"font-medium\">Documentation</span>\n                  <span className=\"\">v1.0.0</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n      </SidebarContent>\n      <SidebarFooter>\n        <div className=\"p-1\">\n          <SidebarOptInForm />\n        </div>\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-06/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { MoreHorizontal, type LucideIcon } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: LucideIcon\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup>\n      <SidebarMenu>\n        {items.map((item) => (\n          <DropdownMenu key={item.title}>\n            <SidebarMenuItem>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\">\n                  {item.title} <MoreHorizontal className=\"ml-auto\" />\n                </SidebarMenuButton>\n              </DropdownMenuTrigger>\n              {item.items?.length ? (\n                <DropdownMenuContent\n                  side={isMobile ? \"bottom\" : \"right\"}\n                  align={isMobile ? \"end\" : \"start\"}\n                  className=\"min-w-56 rounded-lg\"\n                >\n                  {item.items.map((item) => (\n                    <DropdownMenuItem asChild key={item.title}>\n                      <a href={item.url}>{item.title}</a>\n                    </DropdownMenuItem>\n                  ))}\n                </DropdownMenuContent>\n              ) : null}\n            </SidebarMenuItem>\n          </DropdownMenu>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-06/components/sidebar-opt-in-form.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { SidebarInput } from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function SidebarOptInForm() {\n  return (\n    <Card className=\"gap-2 py-4 shadow-none\">\n      <CardHeader className=\"px-4\">\n        <CardTitle className=\"text-sm\">Subscribe to our newsletter</CardTitle>\n        <CardDescription>\n          Opt-in to receive updates and news about the sidebar.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"px-4\">\n        <form>\n          <div className=\"grid gap-2.5\">\n            <SidebarInput type=\"email\" placeholder=\"Email\" />\n            <Button\n              className=\"w-full bg-sidebar-primary text-sidebar-primary-foreground shadow-none\"\n              size=\"sm\"\n            >\n              Subscribe\n            </Button>\n          </div>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-06/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-06/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-[orientation=vertical]:h-4\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-07/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  AudioWaveform,\n  BookOpen,\n  Bot,\n  Command,\n  Frame,\n  GalleryVerticalEnd,\n  Map,\n  PieChart,\n  Settings2,\n  SquareTerminal,\n} from \"lucide-react\"\n\nimport { NavMain } from \"@/registry/new-york-v4/blocks/sidebar-07/components/nav-main\"\nimport { NavProjects } from \"@/registry/new-york-v4/blocks/sidebar-07/components/nav-projects\"\nimport { NavUser } from \"@/registry/new-york-v4/blocks/sidebar-07/components/nav-user\"\nimport { TeamSwitcher } from \"@/registry/new-york-v4/blocks/sidebar-07/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: GalleryVerticalEnd,\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: AudioWaveform,\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: Command,\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: SquareTerminal,\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: Bot,\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: BookOpen,\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: Settings2,\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: Frame,\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: PieChart,\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: Map,\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar collapsible=\"icon\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-07/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { ChevronRight, type LucideIcon } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon?: LucideIcon\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible\n            key={item.title}\n            asChild\n            defaultOpen={item.isActive}\n            className=\"group/collapsible\"\n          >\n            <SidebarMenuItem>\n              <CollapsibleTrigger asChild>\n                <SidebarMenuButton tooltip={item.title}>\n                  {item.icon && <item.icon />}\n                  <span>{item.title}</span>\n                  <ChevronRight className=\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\" />\n                </SidebarMenuButton>\n              </CollapsibleTrigger>\n              <CollapsibleContent>\n                <SidebarMenuSub>\n                  {item.items?.map((subItem) => (\n                    <SidebarMenuSubItem key={subItem.title}>\n                      <SidebarMenuSubButton asChild>\n                        <a href={subItem.url}>\n                          <span>{subItem.title}</span>\n                        </a>\n                      </SidebarMenuSubButton>\n                    </SidebarMenuSubItem>\n                  ))}\n                </SidebarMenuSub>\n              </CollapsibleContent>\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-07/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  Folder,\n  Forward,\n  MoreHorizontal,\n  Trash2,\n  type LucideIcon,\n} from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: LucideIcon\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                <item.icon />\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction showOnHover>\n                  <MoreHorizontal />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <Folder className=\"text-muted-foreground\" />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <Forward className=\"text-muted-foreground\" />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <Trash2 className=\"text-muted-foreground\" />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <MoreHorizontal className=\"text-sidebar-foreground/70\" />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-07/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  BadgeCheck,\n  Bell,\n  ChevronsUpDown,\n  CreditCard,\n  LogOut,\n  Sparkles,\n} from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <LogOut />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-07/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronsUpDown, Plus } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ElementType\n    plan: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n\n  if (!activeTeam) {\n    return null\n  }\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                <activeTeam.logo className=\"size-4\" />\n              </div>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{activeTeam.name}</span>\n                <span className=\"truncate text-xs\">{activeTeam.plan}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            align=\"start\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n              Teams\n            </DropdownMenuLabel>\n            {teams.map((team, index) => (\n              <DropdownMenuItem\n                key={team.name}\n                onClick={() => setActiveTeam(team)}\n                className=\"gap-2 p-2\"\n              >\n                <div className=\"flex size-6 items-center justify-center rounded-md border\">\n                  <team.logo className=\"size-3.5 shrink-0\" />\n                </div>\n                {team.name}\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n              </DropdownMenuItem>\n            ))}\n            <DropdownMenuSeparator />\n            <DropdownMenuItem className=\"gap-2 p-2\">\n              <div className=\"flex size-6 items-center justify-center rounded-md border bg-transparent\">\n                <Plus className=\"size-4\" />\n              </div>\n              <div className=\"font-medium text-muted-foreground\">Add team</div>\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-07/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-07/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-[orientation=vertical]:h-4\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-08/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  BookOpen,\n  Bot,\n  Command,\n  Frame,\n  LifeBuoy,\n  Map,\n  PieChart,\n  Send,\n  Settings2,\n  SquareTerminal,\n} from \"lucide-react\"\n\nimport { NavMain } from \"@/registry/new-york-v4/blocks/sidebar-08/components/nav-main\"\nimport { NavProjects } from \"@/registry/new-york-v4/blocks/sidebar-08/components/nav-projects\"\nimport { NavSecondary } from \"@/registry/new-york-v4/blocks/sidebar-08/components/nav-secondary\"\nimport { NavUser } from \"@/registry/new-york-v4/blocks/sidebar-08/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: SquareTerminal,\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: Bot,\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: BookOpen,\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: Settings2,\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Support\",\n      url: \"#\",\n      icon: LifeBuoy,\n    },\n    {\n      title: \"Feedback\",\n      url: \"#\",\n      icon: Send,\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: Frame,\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: PieChart,\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: Map,\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar variant=\"inset\" {...props}>\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <Command className=\"size-4\" />\n                </div>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">Acme Inc</span>\n                  <span className=\"truncate text-xs\">Enterprise</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-08/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { ChevronRight, type LucideIcon } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\n            <SidebarMenuItem>\n              <SidebarMenuButton asChild tooltip={item.title}>\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.items?.length ? (\n                <>\n                  <CollapsibleTrigger asChild>\n                    <SidebarMenuAction className=\"data-[state=open]:rotate-90\">\n                      <ChevronRight />\n                      <span className=\"sr-only\">Toggle</span>\n                    </SidebarMenuAction>\n                  </CollapsibleTrigger>\n                  <CollapsibleContent>\n                    <SidebarMenuSub>\n                      {item.items?.map((subItem) => (\n                        <SidebarMenuSubItem key={subItem.title}>\n                          <SidebarMenuSubButton asChild>\n                            <a href={subItem.url}>\n                              <span>{subItem.title}</span>\n                            </a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </CollapsibleContent>\n                </>\n              ) : null}\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-08/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  Folder,\n  MoreHorizontal,\n  Share,\n  Trash2,\n  type LucideIcon,\n} from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: LucideIcon\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                <item.icon />\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction showOnHover>\n                  <MoreHorizontal />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <Folder className=\"text-muted-foreground\" />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <Share className=\"text-muted-foreground\" />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <Trash2 className=\"text-muted-foreground\" />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton>\n            <MoreHorizontal />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-08/components/nav-secondary.tsx",
    "content": "import * as React from \"react\"\nimport { type LucideIcon } from \"lucide-react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild size=\"sm\">\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-08/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  BadgeCheck,\n  Bell,\n  ChevronsUpDown,\n  CreditCard,\n  LogOut,\n  Sparkles,\n} from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <LogOut />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-08/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-08/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2\">\n          <div className=\"flex items-center gap-2 px-4\">\n            <SidebarTrigger className=\"-ml-1\" />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-[orientation=vertical]:h-4\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem className=\"hidden md:block\">\n                  <BreadcrumbLink href=\"#\">\n                    Build Your Application\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator className=\"hidden md:block\" />\n                <BreadcrumbItem>\n                  <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-09/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ArchiveX, Command, File, Inbox, Send, Trash2 } from \"lucide-react\"\n\nimport { NavUser } from \"@/registry/new-york-v4/blocks/sidebar-09/components/nav-user\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarHeader,\n  SidebarInput,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\n// This is sample data\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: Inbox,\n      isActive: true,\n    },\n    {\n      title: \"Drafts\",\n      url: \"#\",\n      icon: File,\n      isActive: false,\n    },\n    {\n      title: \"Sent\",\n      url: \"#\",\n      icon: Send,\n      isActive: false,\n    },\n    {\n      title: \"Junk\",\n      url: \"#\",\n      icon: ArchiveX,\n      isActive: false,\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: Trash2,\n      isActive: false,\n    },\n  ],\n  mails: [\n    {\n      name: \"William Smith\",\n      email: \"williamsmith@example.com\",\n      subject: \"Meeting Tomorrow\",\n      date: \"09:34 AM\",\n      teaser:\n        \"Hi team, just a reminder about our meeting tomorrow at 10 AM.\\nPlease come prepared with your project updates.\",\n    },\n    {\n      name: \"Alice Smith\",\n      email: \"alicesmith@example.com\",\n      subject: \"Re: Project Update\",\n      date: \"Yesterday\",\n      teaser:\n        \"Thanks for the update. The progress looks great so far.\\nLet's schedule a call to discuss the next steps.\",\n    },\n    {\n      name: \"Bob Johnson\",\n      email: \"bobjohnson@example.com\",\n      subject: \"Weekend Plans\",\n      date: \"2 days ago\",\n      teaser:\n        \"Hey everyone! I'm thinking of organizing a team outing this weekend.\\nWould you be interested in a hiking trip or a beach day?\",\n    },\n    {\n      name: \"Emily Davis\",\n      email: \"emilydavis@example.com\",\n      subject: \"Re: Question about Budget\",\n      date: \"2 days ago\",\n      teaser:\n        \"I've reviewed the budget numbers you sent over.\\nCan we set up a quick call to discuss some potential adjustments?\",\n    },\n    {\n      name: \"Michael Wilson\",\n      email: \"michaelwilson@example.com\",\n      subject: \"Important Announcement\",\n      date: \"1 week ago\",\n      teaser:\n        \"Please join us for an all-hands meeting this Friday at 3 PM.\\nWe have some exciting news to share about the company's future.\",\n    },\n    {\n      name: \"Sarah Brown\",\n      email: \"sarahbrown@example.com\",\n      subject: \"Re: Feedback on Proposal\",\n      date: \"1 week ago\",\n      teaser:\n        \"Thank you for sending over the proposal. I've reviewed it and have some thoughts.\\nCould we schedule a meeting to discuss my feedback in detail?\",\n    },\n    {\n      name: \"David Lee\",\n      email: \"davidlee@example.com\",\n      subject: \"New Project Idea\",\n      date: \"1 week ago\",\n      teaser:\n        \"I've been brainstorming and came up with an interesting project concept.\\nDo you have time this week to discuss its potential impact and feasibility?\",\n    },\n    {\n      name: \"Olivia Wilson\",\n      email: \"oliviawilson@example.com\",\n      subject: \"Vacation Plans\",\n      date: \"1 week ago\",\n      teaser:\n        \"Just a heads up that I'll be taking a two-week vacation next month.\\nI'll make sure all my projects are up to date before I leave.\",\n    },\n    {\n      name: \"James Martin\",\n      email: \"jamesmartin@example.com\",\n      subject: \"Re: Conference Registration\",\n      date: \"1 week ago\",\n      teaser:\n        \"I've completed the registration for the upcoming tech conference.\\nLet me know if you need any additional information from my end.\",\n    },\n    {\n      name: \"Sophia White\",\n      email: \"sophiawhite@example.com\",\n      subject: \"Team Dinner\",\n      date: \"1 week ago\",\n      teaser:\n        \"To celebrate our recent project success, I'd like to organize a team dinner.\\nAre you available next Friday evening? Please let me know your preferences.\",\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  // Note: I'm using state to show active item.\n  // IRL you should use the url/router.\n  const [activeItem, setActiveItem] = React.useState(data.navMain[0])\n  const [mails, setMails] = React.useState(data.mails)\n  const { setOpen } = useSidebar()\n\n  return (\n    <Sidebar\n      collapsible=\"icon\"\n      className=\"overflow-hidden *:data-[sidebar=sidebar]:flex-row\"\n      {...props}\n    >\n      {/* This is the first sidebar */}\n      {/* We disable collapsible and adjust width to icon. */}\n      {/* This will make the sidebar appear as icons. */}\n      <Sidebar\n        collapsible=\"none\"\n        className=\"w-[calc(var(--sidebar-width-icon)+1px)]! border-r\"\n      >\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <SidebarMenuButton size=\"lg\" asChild className=\"md:h-8 md:p-0\">\n                <a href=\"#\">\n                  <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                    <Command className=\"size-4\" />\n                  </div>\n                  <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                    <span className=\"truncate font-medium\">Acme Inc</span>\n                    <span className=\"truncate text-xs\">Enterprise</span>\n                  </div>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent className=\"px-1.5 md:px-0\">\n              <SidebarMenu>\n                {data.navMain.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton\n                      tooltip={{\n                        children: item.title,\n                        hidden: false,\n                      }}\n                      onClick={() => {\n                        setActiveItem(item)\n                        const mail = data.mails.sort(() => Math.random() - 0.5)\n                        setMails(\n                          mail.slice(\n                            0,\n                            Math.max(5, Math.floor(Math.random() * 10) + 1)\n                          )\n                        )\n                        setOpen(true)\n                      }}\n                      isActive={activeItem?.title === item.title}\n                      className=\"px-2.5 md:px-2\"\n                    >\n                      <item.icon />\n                      <span>{item.title}</span>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n        <SidebarFooter>\n          <NavUser user={data.user} />\n        </SidebarFooter>\n      </Sidebar>\n\n      {/* This is the second sidebar */}\n      {/* We disable collapsible and let it fill remaining space */}\n      <Sidebar collapsible=\"none\" className=\"hidden flex-1 md:flex\">\n        <SidebarHeader className=\"gap-3.5 border-b p-4\">\n          <div className=\"flex w-full items-center justify-between\">\n            <div className=\"text-base font-medium text-foreground\">\n              {activeItem?.title}\n            </div>\n            <Label className=\"flex items-center gap-2 text-sm\">\n              <span>Unreads</span>\n              <Switch className=\"shadow-none\" />\n            </Label>\n          </div>\n          <SidebarInput placeholder=\"Type to search...\" />\n        </SidebarHeader>\n        <SidebarContent>\n          <SidebarGroup className=\"px-0\">\n            <SidebarGroupContent>\n              {mails.map((mail) => (\n                <a\n                  href=\"#\"\n                  key={mail.email}\n                  className=\"flex flex-col items-start gap-2 border-b p-4 text-sm leading-tight whitespace-nowrap last:border-b-0 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n                >\n                  <div className=\"flex w-full items-center gap-2\">\n                    <span>{mail.name}</span>{\" \"}\n                    <span className=\"ml-auto text-xs\">{mail.date}</span>\n                  </div>\n                  <span className=\"font-medium\">{mail.subject}</span>\n                  <span className=\"line-clamp-2 w-[260px] text-xs whitespace-break-spaces\">\n                    {mail.teaser}\n                  </span>\n                </a>\n              ))}\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-09/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  BadgeCheck,\n  Bell,\n  ChevronsUpDown,\n  CreditCard,\n  LogOut,\n  Sparkles,\n} from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground md:h-8 md:p-0\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <LogOut />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-09/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-09/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider\n      style={\n        {\n          \"--sidebar-width\": \"350px\",\n        } as React.CSSProperties\n      }\n    >\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex shrink-0 items-center gap-2 border-b bg-background p-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-[orientation=vertical]:h-4\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">All Inboxes</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Inbox</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          {Array.from({ length: 24 }).map((_, index) => (\n            <div\n              key={index}\n              className=\"aspect-video h-12 w-full rounded-lg bg-muted/50\"\n            />\n          ))}\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-10/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  AudioWaveform,\n  Blocks,\n  Calendar,\n  Command,\n  Home,\n  Inbox,\n  MessageCircleQuestion,\n  Search,\n  Settings2,\n  Sparkles,\n  Trash2,\n} from \"lucide-react\"\n\nimport { NavFavorites } from \"@/registry/new-york-v4/blocks/sidebar-10/components/nav-favorites\"\nimport { NavMain } from \"@/registry/new-york-v4/blocks/sidebar-10/components/nav-main\"\nimport { NavSecondary } from \"@/registry/new-york-v4/blocks/sidebar-10/components/nav-secondary\"\nimport { NavWorkspaces } from \"@/registry/new-york-v4/blocks/sidebar-10/components/nav-workspaces\"\nimport { TeamSwitcher } from \"@/registry/new-york-v4/blocks/sidebar-10/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: Command,\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: AudioWaveform,\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: Command,\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: Search,\n    },\n    {\n      title: \"Ask AI\",\n      url: \"#\",\n      icon: Sparkles,\n    },\n    {\n      title: \"Home\",\n      url: \"#\",\n      icon: Home,\n      isActive: true,\n    },\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: Inbox,\n      badge: \"10\",\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Calendar\",\n      url: \"#\",\n      icon: Calendar,\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: Settings2,\n    },\n    {\n      title: \"Templates\",\n      url: \"#\",\n      icon: Blocks,\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: Trash2,\n    },\n    {\n      title: \"Help\",\n      url: \"#\",\n      icon: MessageCircleQuestion,\n    },\n  ],\n  favorites: [\n    {\n      name: \"Project Management & Task Tracking\",\n      url: \"#\",\n      emoji: \"📊\",\n    },\n    {\n      name: \"Family Recipe Collection & Meal Planning\",\n      url: \"#\",\n      emoji: \"🍳\",\n    },\n    {\n      name: \"Fitness Tracker & Workout Routines\",\n      url: \"#\",\n      emoji: \"💪\",\n    },\n    {\n      name: \"Book Notes & Reading List\",\n      url: \"#\",\n      emoji: \"📚\",\n    },\n    {\n      name: \"Sustainable Gardening Tips & Plant Care\",\n      url: \"#\",\n      emoji: \"🌱\",\n    },\n    {\n      name: \"Language Learning Progress & Resources\",\n      url: \"#\",\n      emoji: \"🗣️\",\n    },\n    {\n      name: \"Home Renovation Ideas & Budget Tracker\",\n      url: \"#\",\n      emoji: \"🏠\",\n    },\n    {\n      name: \"Personal Finance & Investment Portfolio\",\n      url: \"#\",\n      emoji: \"💰\",\n    },\n    {\n      name: \"Movie & TV Show Watchlist with Reviews\",\n      url: \"#\",\n      emoji: \"🎬\",\n    },\n    {\n      name: \"Daily Habit Tracker & Goal Setting\",\n      url: \"#\",\n      emoji: \"✅\",\n    },\n  ],\n  workspaces: [\n    {\n      name: \"Personal Life Management\",\n      emoji: \"🏠\",\n      pages: [\n        {\n          name: \"Daily Journal & Reflection\",\n          url: \"#\",\n          emoji: \"📔\",\n        },\n        {\n          name: \"Health & Wellness Tracker\",\n          url: \"#\",\n          emoji: \"🍏\",\n        },\n        {\n          name: \"Personal Growth & Learning Goals\",\n          url: \"#\",\n          emoji: \"🌟\",\n        },\n      ],\n    },\n    {\n      name: \"Professional Development\",\n      emoji: \"💼\",\n      pages: [\n        {\n          name: \"Career Objectives & Milestones\",\n          url: \"#\",\n          emoji: \"🎯\",\n        },\n        {\n          name: \"Skill Acquisition & Training Log\",\n          url: \"#\",\n          emoji: \"🧠\",\n        },\n        {\n          name: \"Networking Contacts & Events\",\n          url: \"#\",\n          emoji: \"🤝\",\n        },\n      ],\n    },\n    {\n      name: \"Creative Projects\",\n      emoji: \"🎨\",\n      pages: [\n        {\n          name: \"Writing Ideas & Story Outlines\",\n          url: \"#\",\n          emoji: \"✍️\",\n        },\n        {\n          name: \"Art & Design Portfolio\",\n          url: \"#\",\n          emoji: \"🖼️\",\n        },\n        {\n          name: \"Music Composition & Practice Log\",\n          url: \"#\",\n          emoji: \"🎵\",\n        },\n      ],\n    },\n    {\n      name: \"Home Management\",\n      emoji: \"🏡\",\n      pages: [\n        {\n          name: \"Household Budget & Expense Tracking\",\n          url: \"#\",\n          emoji: \"💰\",\n        },\n        {\n          name: \"Home Maintenance Schedule & Tasks\",\n          url: \"#\",\n          emoji: \"🔧\",\n        },\n        {\n          name: \"Family Calendar & Event Planning\",\n          url: \"#\",\n          emoji: \"📅\",\n        },\n      ],\n    },\n    {\n      name: \"Travel & Adventure\",\n      emoji: \"🧳\",\n      pages: [\n        {\n          name: \"Trip Planning & Itineraries\",\n          url: \"#\",\n          emoji: \"🗺️\",\n        },\n        {\n          name: \"Travel Bucket List & Inspiration\",\n          url: \"#\",\n          emoji: \"🌎\",\n        },\n        {\n          name: \"Travel Journal & Photo Gallery\",\n          url: \"#\",\n          emoji: \"📸\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar className=\"border-r-0\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n        <NavMain items={data.navMain} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavFavorites favorites={data.favorites} />\n        <NavWorkspaces workspaces={data.workspaces} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-10/components/nav-actions.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ArrowDown,\n  ArrowUp,\n  Bell,\n  Copy,\n  CornerUpLeft,\n  CornerUpRight,\n  FileText,\n  GalleryVerticalEnd,\n  LineChart,\n  Link,\n  MoreHorizontal,\n  Settings2,\n  Star,\n  Trash,\n  Trash2,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst data = [\n  [\n    {\n      label: \"Customize Page\",\n      icon: Settings2,\n    },\n    {\n      label: \"Turn into wiki\",\n      icon: FileText,\n    },\n  ],\n  [\n    {\n      label: \"Copy Link\",\n      icon: Link,\n    },\n    {\n      label: \"Duplicate\",\n      icon: Copy,\n    },\n    {\n      label: \"Move to\",\n      icon: CornerUpRight,\n    },\n    {\n      label: \"Move to Trash\",\n      icon: Trash2,\n    },\n  ],\n  [\n    {\n      label: \"Undo\",\n      icon: CornerUpLeft,\n    },\n    {\n      label: \"View analytics\",\n      icon: LineChart,\n    },\n    {\n      label: \"Version History\",\n      icon: GalleryVerticalEnd,\n    },\n    {\n      label: \"Show delete pages\",\n      icon: Trash,\n    },\n    {\n      label: \"Notifications\",\n      icon: Bell,\n    },\n  ],\n  [\n    {\n      label: \"Import\",\n      icon: ArrowUp,\n    },\n    {\n      label: \"Export\",\n      icon: ArrowDown,\n    },\n  ],\n]\n\nexport function NavActions() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  React.useEffect(() => {\n    setIsOpen(true)\n  }, [])\n\n  return (\n    <div className=\"flex items-center gap-2 text-sm\">\n      <div className=\"hidden font-medium text-muted-foreground md:inline-block\">\n        Edit Oct 08\n      </div>\n      <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\">\n        <Star />\n      </Button>\n      <Popover open={isOpen} onOpenChange={setIsOpen}>\n        <PopoverTrigger asChild>\n          <Button\n            variant=\"ghost\"\n            size=\"icon\"\n            className=\"h-7 w-7 data-[state=open]:bg-accent\"\n          >\n            <MoreHorizontal />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent\n          className=\"w-56 overflow-hidden rounded-lg p-0\"\n          align=\"end\"\n        >\n          <Sidebar collapsible=\"none\" className=\"bg-transparent\">\n            <SidebarContent>\n              {data.map((group, index) => (\n                <SidebarGroup key={index} className=\"border-b last:border-none\">\n                  <SidebarGroupContent className=\"gap-0\">\n                    <SidebarMenu>\n                      {group.map((item, index) => (\n                        <SidebarMenuItem key={index}>\n                          <SidebarMenuButton>\n                            <item.icon /> <span>{item.label}</span>\n                          </SidebarMenuButton>\n                        </SidebarMenuItem>\n                      ))}\n                    </SidebarMenu>\n                  </SidebarGroupContent>\n                </SidebarGroup>\n              ))}\n            </SidebarContent>\n          </Sidebar>\n        </PopoverContent>\n      </Popover>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-10/components/nav-favorites.tsx",
    "content": "\"use client\"\n\nimport {\n  ArrowUpRight,\n  Link,\n  MoreHorizontal,\n  StarOff,\n  Trash2,\n} from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavFavorites({\n  favorites,\n}: {\n  favorites: {\n    name: string\n    url: string\n    emoji: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\n      <SidebarMenu>\n        {favorites.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url} title={item.name}>\n                <span>{item.emoji}</span>\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction showOnHover>\n                  <MoreHorizontal />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-56 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <StarOff className=\"text-muted-foreground\" />\n                  <span>Remove from Favorites</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <Link className=\"text-muted-foreground\" />\n                  <span>Copy Link</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <ArrowUpRight className=\"text-muted-foreground\" />\n                  <span>Open in New Tab</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <Trash2 className=\"text-muted-foreground\" />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <MoreHorizontal />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-10/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { type LucideIcon } from \"lucide-react\"\n\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n    isActive?: boolean\n  }[]\n}) {\n  return (\n    <SidebarMenu>\n      {items.map((item) => (\n        <SidebarMenuItem key={item.title}>\n          <SidebarMenuButton asChild isActive={item.isActive}>\n            <a href={item.url}>\n              <item.icon />\n              <span>{item.title}</span>\n            </a>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-10/components/nav-secondary.tsx",
    "content": "import React from \"react\"\nimport { type LucideIcon } from \"lucide-react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n    badge?: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild>\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-10/components/nav-workspaces.tsx",
    "content": "import { ChevronRight, MoreHorizontal, Plus } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavWorkspaces({\n  workspaces,\n}: {\n  workspaces: {\n    name: string\n    emoji: React.ReactNode\n    pages: {\n      name: string\n      emoji: React.ReactNode\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {workspaces.map((workspace) => (\n            <Collapsible key={workspace.name}>\n              <SidebarMenuItem>\n                <SidebarMenuButton asChild>\n                  <a href=\"#\">\n                    <span>{workspace.emoji}</span>\n                    <span>{workspace.name}</span>\n                  </a>\n                </SidebarMenuButton>\n                <CollapsibleTrigger asChild>\n                  <SidebarMenuAction\n                    className=\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\"\n                    showOnHover\n                  >\n                    <ChevronRight />\n                  </SidebarMenuAction>\n                </CollapsibleTrigger>\n                <SidebarMenuAction showOnHover>\n                  <Plus />\n                </SidebarMenuAction>\n                <CollapsibleContent>\n                  <SidebarMenuSub>\n                    {workspace.pages.map((page) => (\n                      <SidebarMenuSubItem key={page.name}>\n                        <SidebarMenuSubButton asChild>\n                          <a href=\"#\">\n                            <span>{page.emoji}</span>\n                            <span>{page.name}</span>\n                          </a>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                </CollapsibleContent>\n              </SidebarMenuItem>\n            </Collapsible>\n          ))}\n          <SidebarMenuItem>\n            <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n              <MoreHorizontal />\n              <span>More</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-10/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronDown, Plus } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ElementType\n    plan: string\n  }[]\n}) {\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n\n  if (!activeTeam) {\n    return null\n  }\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton className=\"w-fit px-1.5\">\n              <div className=\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\">\n                <activeTeam.logo className=\"size-3\" />\n              </div>\n              <span className=\"truncate font-medium\">{activeTeam.name}</span>\n              <ChevronDown className=\"opacity-50\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-64 rounded-lg\"\n            align=\"start\"\n            side=\"bottom\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n              Teams\n            </DropdownMenuLabel>\n            {teams.map((team, index) => (\n              <DropdownMenuItem\n                key={team.name}\n                onClick={() => setActiveTeam(team)}\n                className=\"gap-2 p-2\"\n              >\n                <div className=\"flex size-6 items-center justify-center rounded-xs border\">\n                  <team.logo className=\"size-4 shrink-0\" />\n                </div>\n                {team.name}\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n              </DropdownMenuItem>\n            ))}\n            <DropdownMenuSeparator />\n            <DropdownMenuItem className=\"gap-2 p-2\">\n              <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n                <Plus className=\"size-4\" />\n              </div>\n              <div className=\"font-medium text-muted-foreground\">Add team</div>\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-10/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-10/components/app-sidebar\"\nimport { NavActions } from \"@/registry/new-york-v4/blocks/sidebar-10/components/nav-actions\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-14 shrink-0 items-center gap-2\">\n          <div className=\"flex flex-1 items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-[orientation=vertical]:h-4\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem>\n                  <BreadcrumbPage className=\"line-clamp-1\">\n                    Project Management & Task Tracking\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n          <div className=\"ml-auto px-3\">\n            <NavActions />\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 px-4 py-10\">\n          <div className=\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\" />\n          <div className=\"mx-auto h-full w-full max-w-3xl rounded-xl bg-muted/50\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-11/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\nimport { ChevronRight, File, Folder } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  changes: [\n    {\n      file: \"README.md\",\n      state: \"M\",\n    },\n    {\n      file: \"api/hello/route.ts\",\n      state: \"U\",\n    },\n    {\n      file: \"app/layout.tsx\",\n      state: \"M\",\n    },\n  ],\n  tree: [\n    [\n      \"app\",\n      [\n        \"api\",\n        [\"hello\", [\"route.ts\"]],\n        \"page.tsx\",\n        \"layout.tsx\",\n        [\"blog\", [\"page.tsx\"]],\n      ],\n    ],\n    [\n      \"components\",\n      [\"ui\", \"button.tsx\", \"card.tsx\"],\n      \"header.tsx\",\n      \"footer.tsx\",\n    ],\n    [\"lib\", [\"util.ts\"]],\n    [\"public\", \"favicon.ico\", \"vercel.svg\"],\n    \".eslintrc.json\",\n    \".gitignore\",\n    \"next.config.js\",\n    \"tailwind.config.js\",\n    \"package.json\",\n    \"README.md\",\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarGroupLabel>Changes</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.changes.map((item, index) => (\n                <SidebarMenuItem key={index}>\n                  <SidebarMenuButton>\n                    <File />\n                    {item.file}\n                  </SidebarMenuButton>\n                  <SidebarMenuBadge>{item.state}</SidebarMenuBadge>\n                </SidebarMenuItem>\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n        <SidebarGroup>\n          <SidebarGroupLabel>Files</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.tree.map((item, index) => (\n                <Tree key={index} item={item} />\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n\ntype TreeItem = string | TreeItem[]\n\nfunction Tree({ item }: { item: TreeItem }) {\n  const [name, ...items] = Array.isArray(item) ? item : [item]\n\n  if (!items.length) {\n    return (\n      <SidebarMenuButton\n        isActive={name === \"button.tsx\"}\n        className=\"data-[active=true]:bg-transparent\"\n      >\n        <File />\n        {name}\n      </SidebarMenuButton>\n    )\n  }\n\n  return (\n    <SidebarMenuItem>\n      <Collapsible\n        className=\"group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90\"\n        defaultOpen={name === \"components\" || name === \"ui\"}\n      >\n        <CollapsibleTrigger asChild>\n          <SidebarMenuButton>\n            <ChevronRight className=\"transition-transform\" />\n            <Folder />\n            {name}\n          </SidebarMenuButton>\n        </CollapsibleTrigger>\n        <CollapsibleContent>\n          <SidebarMenuSub>\n            {items.map((subItem, index) => (\n              <Tree key={index} item={subItem} />\n            ))}\n          </SidebarMenuSub>\n        </CollapsibleContent>\n      </Collapsible>\n    </SidebarMenuItem>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-11/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-11/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-[orientation=vertical]:h-4\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">components</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">ui</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>button.tsx</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-12/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\nimport { Plus } from \"lucide-react\"\n\nimport { Calendars } from \"@/registry/new-york-v4/blocks/sidebar-12/components/calendars\"\nimport { DatePicker } from \"@/registry/new-york-v4/blocks/sidebar-12/components/date-picker\"\nimport { NavUser } from \"@/registry/new-york-v4/blocks/sidebar-12/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n  SidebarSeparator,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  calendars: [\n    {\n      name: \"My Calendars\",\n      items: [\"Personal\", \"Work\", \"Family\"],\n    },\n    {\n      name: \"Favorites\",\n      items: [\"Holidays\", \"Birthdays\"],\n    },\n    {\n      name: \"Other\",\n      items: [\"Travel\", \"Reminders\", \"Deadlines\"],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarHeader className=\"h-16 border-b border-sidebar-border\">\n        <NavUser user={data.user} />\n      </SidebarHeader>\n      <SidebarContent>\n        <DatePicker />\n        <SidebarSeparator className=\"mx-0\" />\n        <Calendars calendars={data.calendars} />\n      </SidebarContent>\n      <SidebarFooter>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton>\n              <Plus />\n              <span>New Calendar</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarFooter>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-12/components/calendars.tsx",
    "content": "import * as React from \"react\"\nimport { Check, ChevronRight } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarSeparator,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function Calendars({\n  calendars,\n}: {\n  calendars: {\n    name: string\n    items: string[]\n  }[]\n}) {\n  return (\n    <>\n      {calendars.map((calendar, index) => (\n        <React.Fragment key={calendar.name}>\n          <SidebarGroup key={calendar.name} className=\"py-0\">\n            <Collapsible\n              defaultOpen={index === 0}\n              className=\"group/collapsible\"\n            >\n              <SidebarGroupLabel\n                asChild\n                className=\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                <CollapsibleTrigger>\n                  {calendar.name}{\" \"}\n                  <ChevronRight className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\" />\n                </CollapsibleTrigger>\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {calendar.items.map((item, index) => (\n                      <SidebarMenuItem key={item}>\n                        <SidebarMenuButton>\n                          <div\n                            data-active={index < 2}\n                            className=\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\"\n                          >\n                            <Check className=\"hidden size-3 group-data-[active=true]/calendar-item:block\" />\n                          </div>\n                          {item}\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </Collapsible>\n          </SidebarGroup>\n          <SidebarSeparator className=\"mx-0\" />\n        </React.Fragment>\n      ))}\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-12/components/date-picker.tsx",
    "content": "import { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function DatePicker() {\n  return (\n    <SidebarGroup className=\"px-0\">\n      <SidebarGroupContent>\n        <Calendar className=\"[&_[role=gridcell]]:w-[33px] [&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground\" />\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-12/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  BadgeCheck,\n  Bell,\n  ChevronsUpDown,\n  CreditCard,\n  LogOut,\n  Sparkles,\n} from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"start\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <LogOut />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-12/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-12/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <AppSidebar />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4\">\n          <SidebarTrigger className=\"-ml-1\" />\n          <Separator\n            orientation=\"vertical\"\n            className=\"mr-2 data-[orientation=vertical]:h-4\"\n          />\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem>\n                <BreadcrumbPage>October 2024</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-5\">\n            {Array.from({ length: 20 }).map((_, i) => (\n              <div key={i} className=\"aspect-square rounded-xl bg-muted/50\" />\n            ))}\n          </div>\n        </div>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-13/components/settings-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Bell,\n  Check,\n  Globe,\n  Home,\n  Keyboard,\n  Link,\n  Lock,\n  Menu,\n  MessageCircle,\n  Paintbrush,\n  Settings,\n  Video,\n} from \"lucide-react\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst data = {\n  nav: [\n    { name: \"Notifications\", icon: Bell },\n    { name: \"Navigation\", icon: Menu },\n    { name: \"Home\", icon: Home },\n    { name: \"Appearance\", icon: Paintbrush },\n    { name: \"Messages & media\", icon: MessageCircle },\n    { name: \"Language & region\", icon: Globe },\n    { name: \"Accessibility\", icon: Keyboard },\n    { name: \"Mark as read\", icon: Check },\n    { name: \"Audio & video\", icon: Video },\n    { name: \"Connected accounts\", icon: Link },\n    { name: \"Privacy & visibility\", icon: Lock },\n    { name: \"Advanced\", icon: Settings },\n  ],\n}\n\nexport function SettingsDialog() {\n  const [open, setOpen] = React.useState(true)\n\n  return (\n    <Dialog open={open} onOpenChange={setOpen}>\n      <DialogTrigger asChild>\n        <Button size=\"sm\">Open Dialog</Button>\n      </DialogTrigger>\n      <DialogContent className=\"overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]\">\n        <DialogTitle className=\"sr-only\">Settings</DialogTitle>\n        <DialogDescription className=\"sr-only\">\n          Customize your settings here.\n        </DialogDescription>\n        <SidebarProvider className=\"items-start\">\n          <Sidebar collapsible=\"none\" className=\"hidden md:flex\">\n            <SidebarContent>\n              <SidebarGroup>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {data.nav.map((item) => (\n                      <SidebarMenuItem key={item.name}>\n                        <SidebarMenuButton\n                          asChild\n                          isActive={item.name === \"Messages & media\"}\n                        >\n                          <a href=\"#\">\n                            <item.icon />\n                            <span>{item.name}</span>\n                          </a>\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </SidebarGroup>\n            </SidebarContent>\n          </Sidebar>\n          <main className=\"flex h-[480px] flex-1 flex-col overflow-hidden\">\n            <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n              <div className=\"flex items-center gap-2 px-4\">\n                <Breadcrumb>\n                  <BreadcrumbList>\n                    <BreadcrumbItem className=\"hidden md:block\">\n                      <BreadcrumbLink href=\"#\">Settings</BreadcrumbLink>\n                    </BreadcrumbItem>\n                    <BreadcrumbSeparator className=\"hidden md:block\" />\n                    <BreadcrumbItem>\n                      <BreadcrumbPage>Messages & media</BreadcrumbPage>\n                    </BreadcrumbItem>\n                  </BreadcrumbList>\n                </Breadcrumb>\n              </div>\n            </header>\n            <div className=\"flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0\">\n              {Array.from({ length: 10 }).map((_, i) => (\n                <div\n                  key={i}\n                  className=\"aspect-video max-w-3xl rounded-xl bg-muted/50\"\n                />\n              ))}\n            </div>\n          </main>\n        </SidebarProvider>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-13/page.tsx",
    "content": "import { SettingsDialog } from \"@/registry/new-york-v4/blocks/sidebar-13/components/settings-dialog\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex h-svh items-center justify-center\">\n      <SettingsDialog />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-14/components/app-sidebar.tsx",
    "content": "import * as React from \"react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  navMain: [\n    {\n      title: \"Getting Started\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Installation\",\n          url: \"#\",\n        },\n        {\n          title: \"Project Structure\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Build Your Application\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Routing\",\n          url: \"#\",\n        },\n        {\n          title: \"Data Fetching\",\n          url: \"#\",\n          isActive: true,\n        },\n        {\n          title: \"Rendering\",\n          url: \"#\",\n        },\n        {\n          title: \"Caching\",\n          url: \"#\",\n        },\n        {\n          title: \"Styling\",\n          url: \"#\",\n        },\n        {\n          title: \"Optimizing\",\n          url: \"#\",\n        },\n        {\n          title: \"Configuring\",\n          url: \"#\",\n        },\n        {\n          title: \"Testing\",\n          url: \"#\",\n        },\n        {\n          title: \"Authentication\",\n          url: \"#\",\n        },\n        {\n          title: \"Deploying\",\n          url: \"#\",\n        },\n        {\n          title: \"Upgrading\",\n          url: \"#\",\n        },\n        {\n          title: \"Examples\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"API Reference\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Components\",\n          url: \"#\",\n        },\n        {\n          title: \"File Conventions\",\n          url: \"#\",\n        },\n        {\n          title: \"Functions\",\n          url: \"#\",\n        },\n        {\n          title: \"next.config.js Options\",\n          url: \"#\",\n        },\n        {\n          title: \"CLI\",\n          url: \"#\",\n        },\n        {\n          title: \"Edge Runtime\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Architecture\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Accessibility\",\n          url: \"#\",\n        },\n        {\n          title: \"Fast Refresh\",\n          url: \"#\",\n        },\n        {\n          title: \"Next.js Compiler\",\n          url: \"#\",\n        },\n        {\n          title: \"Supported Browsers\",\n          url: \"#\",\n        },\n        {\n          title: \"Turbopack\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Community\",\n      url: \"#\",\n      items: [\n        {\n          title: \"Contribution Guide\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar {...props}>\n      <SidebarContent>\n        <SidebarGroup>\n          <SidebarGroupLabel>Table of Contents</SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {data.navMain.map((item) => (\n                <SidebarMenuItem key={item.title}>\n                  <SidebarMenuButton asChild>\n                    <a href={item.url} className=\"font-medium\">\n                      {item.title}\n                    </a>\n                  </SidebarMenuButton>\n                  {item.items?.length ? (\n                    <SidebarMenuSub>\n                      {item.items.map((item) => (\n                        <SidebarMenuSubItem key={item.title}>\n                          <SidebarMenuSubButton\n                            asChild\n                            isActive={item.isActive}\n                          >\n                            <a href={item.url}>{item.title}</a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  ) : null}\n                </SidebarMenuItem>\n              ))}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-14/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-14/components/app-sidebar\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <SidebarInset>\n        <header className=\"flex h-16 shrink-0 items-center gap-2 border-b px-4\">\n          <Breadcrumb>\n            <BreadcrumbList>\n              <BreadcrumbItem className=\"hidden md:block\">\n                <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n              </BreadcrumbItem>\n              <BreadcrumbSeparator className=\"hidden md:block\" />\n              <BreadcrumbItem>\n                <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n              </BreadcrumbItem>\n            </BreadcrumbList>\n          </Breadcrumb>\n          <SidebarTrigger className=\"-mr-1 ml-auto rotate-180\" />\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n            <div className=\"aspect-video rounded-xl bg-muted/50\" />\n          </div>\n          <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n        </div>\n      </SidebarInset>\n      <AppSidebar side=\"right\" />\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/calendars.tsx",
    "content": "import * as React from \"react\"\nimport { Check, ChevronRight } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarSeparator,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function Calendars({\n  calendars,\n}: {\n  calendars: {\n    name: string\n    items: string[]\n  }[]\n}) {\n  return (\n    <>\n      {calendars.map((calendar, index) => (\n        <React.Fragment key={calendar.name}>\n          <SidebarGroup key={calendar.name} className=\"py-0\">\n            <Collapsible\n              defaultOpen={index === 0}\n              className=\"group/collapsible\"\n            >\n              <SidebarGroupLabel\n                asChild\n                className=\"group/label w-full text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                <CollapsibleTrigger>\n                  {calendar.name}{\" \"}\n                  <ChevronRight className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\" />\n                </CollapsibleTrigger>\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    {calendar.items.map((item, index) => (\n                      <SidebarMenuItem key={item}>\n                        <SidebarMenuButton>\n                          <div\n                            data-active={index < 2}\n                            className=\"group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary\"\n                          >\n                            <Check className=\"hidden size-3 group-data-[active=true]/calendar-item:block\" />\n                          </div>\n                          {item}\n                        </SidebarMenuButton>\n                      </SidebarMenuItem>\n                    ))}\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </Collapsible>\n          </SidebarGroup>\n          <SidebarSeparator className=\"mx-0\" />\n        </React.Fragment>\n      ))}\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/date-picker.tsx",
    "content": "import { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function DatePicker() {\n  return (\n    <SidebarGroup className=\"px-0\">\n      <SidebarGroupContent>\n        <Calendar className=\"[&_[role=gridcell]]:w-[33px] [&_[role=gridcell].bg-accent]:bg-sidebar-primary [&_[role=gridcell].bg-accent]:text-sidebar-primary-foreground\" />\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/nav-favorites.tsx",
    "content": "\"use client\"\n\nimport {\n  ArrowUpRight,\n  Link,\n  MoreHorizontal,\n  StarOff,\n  Trash2,\n} from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavFavorites({\n  favorites,\n}: {\n  favorites: {\n    name: string\n    url: string\n    emoji: string\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Favorites</SidebarGroupLabel>\n      <SidebarMenu>\n        {favorites.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url} title={item.name}>\n                <span>{item.emoji}</span>\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction showOnHover>\n                  <MoreHorizontal />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-56 rounded-lg\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <StarOff className=\"text-muted-foreground\" />\n                  <span>Remove from Favorites</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <Link className=\"text-muted-foreground\" />\n                  <span>Copy Link</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <ArrowUpRight className=\"text-muted-foreground\" />\n                  <span>Open in New Tab</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <Trash2 className=\"text-muted-foreground\" />\n                  <span>Delete</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n            <MoreHorizontal />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { type LucideIcon } from \"lucide-react\"\n\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n    isActive?: boolean\n  }[]\n}) {\n  return (\n    <SidebarMenu>\n      {items.map((item) => (\n        <SidebarMenuItem key={item.title}>\n          <SidebarMenuButton asChild isActive={item.isActive}>\n            <a href={item.url}>\n              <item.icon />\n              <span>{item.title}</span>\n            </a>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/nav-secondary.tsx",
    "content": "import React from \"react\"\nimport { type LucideIcon } from \"lucide-react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n    badge?: React.ReactNode\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild>\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.badge && <SidebarMenuBadge>{item.badge}</SidebarMenuBadge>}\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  BadgeCheck,\n  Bell,\n  ChevronsUpDown,\n  CreditCard,\n  LogOut,\n  Sparkles,\n} from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"start\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <LogOut />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/nav-workspaces.tsx",
    "content": "import { ChevronRight, MoreHorizontal, Plus } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavWorkspaces({\n  workspaces,\n}: {\n  workspaces: {\n    name: string\n    emoji: React.ReactNode\n    pages: {\n      name: string\n      emoji: React.ReactNode\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Workspaces</SidebarGroupLabel>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {workspaces.map((workspace) => (\n            <Collapsible key={workspace.name}>\n              <SidebarMenuItem>\n                <SidebarMenuButton asChild>\n                  <a href=\"#\">\n                    <span>{workspace.emoji}</span>\n                    <span>{workspace.name}</span>\n                  </a>\n                </SidebarMenuButton>\n                <CollapsibleTrigger asChild>\n                  <SidebarMenuAction\n                    className=\"left-2 bg-sidebar-accent text-sidebar-accent-foreground data-[state=open]:rotate-90\"\n                    showOnHover\n                  >\n                    <ChevronRight />\n                  </SidebarMenuAction>\n                </CollapsibleTrigger>\n                <SidebarMenuAction showOnHover>\n                  <Plus />\n                </SidebarMenuAction>\n                <CollapsibleContent>\n                  <SidebarMenuSub>\n                    {workspace.pages.map((page) => (\n                      <SidebarMenuSubItem key={page.name}>\n                        <SidebarMenuSubButton asChild>\n                          <a href=\"#\">\n                            <span>{page.emoji}</span>\n                            <span>{page.name}</span>\n                          </a>\n                        </SidebarMenuSubButton>\n                      </SidebarMenuSubItem>\n                    ))}\n                  </SidebarMenuSub>\n                </CollapsibleContent>\n              </SidebarMenuItem>\n            </Collapsible>\n          ))}\n          <SidebarMenuItem>\n            <SidebarMenuButton className=\"text-sidebar-foreground/70\">\n              <MoreHorizontal />\n              <span>More</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/sidebar-left.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  AudioWaveform,\n  Blocks,\n  Calendar,\n  Command,\n  Home,\n  Inbox,\n  MessageCircleQuestion,\n  Search,\n  Settings2,\n  Sparkles,\n  Trash2,\n} from \"lucide-react\"\n\nimport { NavFavorites } from \"@/registry/new-york-v4/blocks/sidebar-15/components/nav-favorites\"\nimport { NavMain } from \"@/registry/new-york-v4/blocks/sidebar-15/components/nav-main\"\nimport { NavSecondary } from \"@/registry/new-york-v4/blocks/sidebar-15/components/nav-secondary\"\nimport { NavWorkspaces } from \"@/registry/new-york-v4/blocks/sidebar-15/components/nav-workspaces\"\nimport { TeamSwitcher } from \"@/registry/new-york-v4/blocks/sidebar-15/components/team-switcher\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarHeader,\n  SidebarRail,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  teams: [\n    {\n      name: \"Acme Inc\",\n      logo: Command,\n      plan: \"Enterprise\",\n    },\n    {\n      name: \"Acme Corp.\",\n      logo: AudioWaveform,\n      plan: \"Startup\",\n    },\n    {\n      name: \"Evil Corp.\",\n      logo: Command,\n      plan: \"Free\",\n    },\n  ],\n  navMain: [\n    {\n      title: \"Search\",\n      url: \"#\",\n      icon: Search,\n    },\n    {\n      title: \"Ask AI\",\n      url: \"#\",\n      icon: Sparkles,\n    },\n    {\n      title: \"Home\",\n      url: \"#\",\n      icon: Home,\n      isActive: true,\n    },\n    {\n      title: \"Inbox\",\n      url: \"#\",\n      icon: Inbox,\n      badge: \"10\",\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Calendar\",\n      url: \"#\",\n      icon: Calendar,\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: Settings2,\n    },\n    {\n      title: \"Templates\",\n      url: \"#\",\n      icon: Blocks,\n    },\n    {\n      title: \"Trash\",\n      url: \"#\",\n      icon: Trash2,\n    },\n    {\n      title: \"Help\",\n      url: \"#\",\n      icon: MessageCircleQuestion,\n    },\n  ],\n  favorites: [\n    {\n      name: \"Project Management & Task Tracking\",\n      url: \"#\",\n      emoji: \"📊\",\n    },\n    {\n      name: \"Family Recipe Collection & Meal Planning\",\n      url: \"#\",\n      emoji: \"🍳\",\n    },\n    {\n      name: \"Fitness Tracker & Workout Routines\",\n      url: \"#\",\n      emoji: \"💪\",\n    },\n    {\n      name: \"Book Notes & Reading List\",\n      url: \"#\",\n      emoji: \"📚\",\n    },\n    {\n      name: \"Sustainable Gardening Tips & Plant Care\",\n      url: \"#\",\n      emoji: \"🌱\",\n    },\n    {\n      name: \"Language Learning Progress & Resources\",\n      url: \"#\",\n      emoji: \"🗣️\",\n    },\n    {\n      name: \"Home Renovation Ideas & Budget Tracker\",\n      url: \"#\",\n      emoji: \"🏠\",\n    },\n    {\n      name: \"Personal Finance & Investment Portfolio\",\n      url: \"#\",\n      emoji: \"💰\",\n    },\n    {\n      name: \"Movie & TV Show Watchlist with Reviews\",\n      url: \"#\",\n      emoji: \"🎬\",\n    },\n    {\n      name: \"Daily Habit Tracker & Goal Setting\",\n      url: \"#\",\n      emoji: \"✅\",\n    },\n  ],\n  workspaces: [\n    {\n      name: \"Personal Life Management\",\n      emoji: \"🏠\",\n      pages: [\n        {\n          name: \"Daily Journal & Reflection\",\n          url: \"#\",\n          emoji: \"📔\",\n        },\n        {\n          name: \"Health & Wellness Tracker\",\n          url: \"#\",\n          emoji: \"🍏\",\n        },\n        {\n          name: \"Personal Growth & Learning Goals\",\n          url: \"#\",\n          emoji: \"🌟\",\n        },\n      ],\n    },\n    {\n      name: \"Professional Development\",\n      emoji: \"💼\",\n      pages: [\n        {\n          name: \"Career Objectives & Milestones\",\n          url: \"#\",\n          emoji: \"🎯\",\n        },\n        {\n          name: \"Skill Acquisition & Training Log\",\n          url: \"#\",\n          emoji: \"🧠\",\n        },\n        {\n          name: \"Networking Contacts & Events\",\n          url: \"#\",\n          emoji: \"🤝\",\n        },\n      ],\n    },\n    {\n      name: \"Creative Projects\",\n      emoji: \"🎨\",\n      pages: [\n        {\n          name: \"Writing Ideas & Story Outlines\",\n          url: \"#\",\n          emoji: \"✍️\",\n        },\n        {\n          name: \"Art & Design Portfolio\",\n          url: \"#\",\n          emoji: \"🖼️\",\n        },\n        {\n          name: \"Music Composition & Practice Log\",\n          url: \"#\",\n          emoji: \"🎵\",\n        },\n      ],\n    },\n    {\n      name: \"Home Management\",\n      emoji: \"🏡\",\n      pages: [\n        {\n          name: \"Household Budget & Expense Tracking\",\n          url: \"#\",\n          emoji: \"💰\",\n        },\n        {\n          name: \"Home Maintenance Schedule & Tasks\",\n          url: \"#\",\n          emoji: \"🔧\",\n        },\n        {\n          name: \"Family Calendar & Event Planning\",\n          url: \"#\",\n          emoji: \"📅\",\n        },\n      ],\n    },\n    {\n      name: \"Travel & Adventure\",\n      emoji: \"🧳\",\n      pages: [\n        {\n          name: \"Trip Planning & Itineraries\",\n          url: \"#\",\n          emoji: \"🗺️\",\n        },\n        {\n          name: \"Travel Bucket List & Inspiration\",\n          url: \"#\",\n          emoji: \"🌎\",\n        },\n        {\n          name: \"Travel Journal & Photo Gallery\",\n          url: \"#\",\n          emoji: \"📸\",\n        },\n      ],\n    },\n  ],\n}\n\nexport function SidebarLeft({\n  ...props\n}: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar className=\"border-r-0\" {...props}>\n      <SidebarHeader>\n        <TeamSwitcher teams={data.teams} />\n        <NavMain items={data.navMain} />\n      </SidebarHeader>\n      <SidebarContent>\n        <NavFavorites favorites={data.favorites} />\n        <NavWorkspaces workspaces={data.workspaces} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarRail />\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/sidebar-right.tsx",
    "content": "import * as React from \"react\"\nimport { Plus } from \"lucide-react\"\n\nimport { Calendars } from \"@/registry/new-york-v4/blocks/sidebar-15/components/calendars\"\nimport { DatePicker } from \"@/registry/new-york-v4/blocks/sidebar-15/components/date-picker\"\nimport { NavUser } from \"@/registry/new-york-v4/blocks/sidebar-15/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarRail,\n  SidebarSeparator,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// This is sample data.\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  calendars: [\n    {\n      name: \"My Calendars\",\n      items: [\"Personal\", \"Work\", \"Family\"],\n    },\n    {\n      name: \"Favorites\",\n      items: [\"Holidays\", \"Birthdays\"],\n    },\n    {\n      name: \"Other\",\n      items: [\"Travel\", \"Reminders\", \"Deadlines\"],\n    },\n  ],\n}\n\nexport function SidebarRight({\n  ...props\n}: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar\n      collapsible=\"none\"\n      className=\"sticky top-0 hidden h-svh border-l lg:flex\"\n      {...props}\n    >\n      <SidebarHeader className=\"h-16 border-b border-sidebar-border\">\n        <NavUser user={data.user} />\n      </SidebarHeader>\n      <SidebarContent>\n        <DatePicker />\n        <SidebarSeparator className=\"mx-0\" />\n        <Calendars calendars={data.calendars} />\n      </SidebarContent>\n      <SidebarFooter>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton>\n              <Plus />\n              <span>New Calendar</span>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/components/team-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronDown, Plus } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function TeamSwitcher({\n  teams,\n}: {\n  teams: {\n    name: string\n    logo: React.ElementType\n    plan: string\n  }[]\n}) {\n  const [activeTeam, setActiveTeam] = React.useState(teams[0])\n\n  if (!activeTeam) {\n    return null\n  }\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton className=\"w-fit px-1.5\">\n              <div className=\"flex aspect-square size-5 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground\">\n                <activeTeam.logo className=\"size-3\" />\n              </div>\n              <span className=\"truncate font-medium\">{activeTeam.name}</span>\n              <ChevronDown className=\"opacity-50\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-64 rounded-lg\"\n            align=\"start\"\n            side=\"bottom\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n              Teams\n            </DropdownMenuLabel>\n            {teams.map((team, index) => (\n              <DropdownMenuItem\n                key={team.name}\n                onClick={() => setActiveTeam(team)}\n                className=\"gap-2 p-2\"\n              >\n                <div className=\"flex size-6 items-center justify-center rounded-xs border\">\n                  <team.logo className=\"size-4 shrink-0\" />\n                </div>\n                {team.name}\n                <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut>\n              </DropdownMenuItem>\n            ))}\n            <DropdownMenuSeparator />\n            <DropdownMenuItem className=\"gap-2 p-2\">\n              <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n                <Plus className=\"size-4\" />\n              </div>\n              <div className=\"font-medium text-muted-foreground\">Add team</div>\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-15/page.tsx",
    "content": "import { SidebarLeft } from \"@/registry/new-york-v4/blocks/sidebar-15/components/sidebar-left\"\nimport { SidebarRight } from \"@/registry/new-york-v4/blocks/sidebar-15/components/sidebar-right\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function Page() {\n  return (\n    <SidebarProvider>\n      <SidebarLeft />\n      <SidebarInset>\n        <header className=\"sticky top-0 flex h-14 shrink-0 items-center gap-2 bg-background\">\n          <div className=\"flex flex-1 items-center gap-2 px-3\">\n            <SidebarTrigger />\n            <Separator\n              orientation=\"vertical\"\n              className=\"mr-2 data-[orientation=vertical]:h-4\"\n            />\n            <Breadcrumb>\n              <BreadcrumbList>\n                <BreadcrumbItem>\n                  <BreadcrumbPage className=\"line-clamp-1\">\n                    Project Management & Task Tracking\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              </BreadcrumbList>\n            </Breadcrumb>\n          </div>\n        </header>\n        <div className=\"flex flex-1 flex-col gap-4 p-4\">\n          <div className=\"mx-auto h-24 w-full max-w-3xl rounded-xl bg-muted/50\" />\n          <div className=\"mx-auto h-[100vh] w-full max-w-3xl rounded-xl bg-muted/50\" />\n        </div>\n      </SidebarInset>\n      <SidebarRight />\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-16/components/app-sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  BookOpen,\n  Bot,\n  Command,\n  Frame,\n  LifeBuoy,\n  Map,\n  PieChart,\n  Send,\n  Settings2,\n  SquareTerminal,\n} from \"lucide-react\"\n\nimport { NavMain } from \"@/registry/new-york-v4/blocks/sidebar-16/components/nav-main\"\nimport { NavProjects } from \"@/registry/new-york-v4/blocks/sidebar-16/components/nav-projects\"\nimport { NavSecondary } from \"@/registry/new-york-v4/blocks/sidebar-16/components/nav-secondary\"\nimport { NavUser } from \"@/registry/new-york-v4/blocks/sidebar-16/components/nav-user\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst data = {\n  user: {\n    name: \"shadcn\",\n    email: \"m@example.com\",\n    avatar: \"/avatars/shadcn.jpg\",\n  },\n  navMain: [\n    {\n      title: \"Playground\",\n      url: \"#\",\n      icon: SquareTerminal,\n      isActive: true,\n      items: [\n        {\n          title: \"History\",\n          url: \"#\",\n        },\n        {\n          title: \"Starred\",\n          url: \"#\",\n        },\n        {\n          title: \"Settings\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Models\",\n      url: \"#\",\n      icon: Bot,\n      items: [\n        {\n          title: \"Genesis\",\n          url: \"#\",\n        },\n        {\n          title: \"Explorer\",\n          url: \"#\",\n        },\n        {\n          title: \"Quantum\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Documentation\",\n      url: \"#\",\n      icon: BookOpen,\n      items: [\n        {\n          title: \"Introduction\",\n          url: \"#\",\n        },\n        {\n          title: \"Get Started\",\n          url: \"#\",\n        },\n        {\n          title: \"Tutorials\",\n          url: \"#\",\n        },\n        {\n          title: \"Changelog\",\n          url: \"#\",\n        },\n      ],\n    },\n    {\n      title: \"Settings\",\n      url: \"#\",\n      icon: Settings2,\n      items: [\n        {\n          title: \"General\",\n          url: \"#\",\n        },\n        {\n          title: \"Team\",\n          url: \"#\",\n        },\n        {\n          title: \"Billing\",\n          url: \"#\",\n        },\n        {\n          title: \"Limits\",\n          url: \"#\",\n        },\n      ],\n    },\n  ],\n  navSecondary: [\n    {\n      title: \"Support\",\n      url: \"#\",\n      icon: LifeBuoy,\n    },\n    {\n      title: \"Feedback\",\n      url: \"#\",\n      icon: Send,\n    },\n  ],\n  projects: [\n    {\n      name: \"Design Engineering\",\n      url: \"#\",\n      icon: Frame,\n    },\n    {\n      name: \"Sales & Marketing\",\n      url: \"#\",\n      icon: PieChart,\n    },\n    {\n      name: \"Travel\",\n      url: \"#\",\n      icon: Map,\n    },\n  ],\n}\n\nexport function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {\n  return (\n    <Sidebar\n      className=\"top-(--header-height) h-[calc(100svh-var(--header-height))]!\"\n      {...props}\n    >\n      <SidebarHeader>\n        <SidebarMenu>\n          <SidebarMenuItem>\n            <SidebarMenuButton size=\"lg\" asChild>\n              <a href=\"#\">\n                <div className=\"flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground\">\n                  <Command className=\"size-4\" />\n                </div>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">Acme Inc</span>\n                  <span className=\"truncate text-xs\">Enterprise</span>\n                </div>\n              </a>\n            </SidebarMenuButton>\n          </SidebarMenuItem>\n        </SidebarMenu>\n      </SidebarHeader>\n      <SidebarContent>\n        <NavMain items={data.navMain} />\n        <NavProjects projects={data.projects} />\n        <NavSecondary items={data.navSecondary} className=\"mt-auto\" />\n      </SidebarContent>\n      <SidebarFooter>\n        <NavUser user={data.user} />\n      </SidebarFooter>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-16/components/nav-main.tsx",
    "content": "\"use client\"\n\nimport { ChevronRight, type LucideIcon } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavMain({\n  items,\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n    isActive?: boolean\n    items?: {\n      title: string\n      url: string\n    }[]\n  }[]\n}) {\n  return (\n    <SidebarGroup>\n      <SidebarGroupLabel>Platform</SidebarGroupLabel>\n      <SidebarMenu>\n        {items.map((item) => (\n          <Collapsible key={item.title} asChild defaultOpen={item.isActive}>\n            <SidebarMenuItem>\n              <SidebarMenuButton asChild tooltip={item.title}>\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n              {item.items?.length ? (\n                <>\n                  <CollapsibleTrigger asChild>\n                    <SidebarMenuAction className=\"data-[state=open]:rotate-90\">\n                      <ChevronRight />\n                      <span className=\"sr-only\">Toggle</span>\n                    </SidebarMenuAction>\n                  </CollapsibleTrigger>\n                  <CollapsibleContent>\n                    <SidebarMenuSub>\n                      {item.items?.map((subItem) => (\n                        <SidebarMenuSubItem key={subItem.title}>\n                          <SidebarMenuSubButton asChild>\n                            <a href={subItem.url}>\n                              <span>{subItem.title}</span>\n                            </a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </CollapsibleContent>\n                </>\n              ) : null}\n            </SidebarMenuItem>\n          </Collapsible>\n        ))}\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-16/components/nav-projects.tsx",
    "content": "\"use client\"\n\nimport {\n  Folder,\n  MoreHorizontal,\n  Share,\n  Trash2,\n  type LucideIcon,\n} from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarGroup,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavProjects({\n  projects,\n}: {\n  projects: {\n    name: string\n    url: string\n    icon: LucideIcon\n  }[]\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarGroup className=\"group-data-[collapsible=icon]:hidden\">\n      <SidebarGroupLabel>Projects</SidebarGroupLabel>\n      <SidebarMenu>\n        {projects.map((item) => (\n          <SidebarMenuItem key={item.name}>\n            <SidebarMenuButton asChild>\n              <a href={item.url}>\n                <item.icon />\n                <span>{item.name}</span>\n              </a>\n            </SidebarMenuButton>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <SidebarMenuAction showOnHover>\n                  <MoreHorizontal />\n                  <span className=\"sr-only\">More</span>\n                </SidebarMenuAction>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                className=\"w-48\"\n                side={isMobile ? \"bottom\" : \"right\"}\n                align={isMobile ? \"end\" : \"start\"}\n              >\n                <DropdownMenuItem>\n                  <Folder className=\"text-muted-foreground\" />\n                  <span>View Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuItem>\n                  <Share className=\"text-muted-foreground\" />\n                  <span>Share Project</span>\n                </DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>\n                  <Trash2 className=\"text-muted-foreground\" />\n                  <span>Delete Project</span>\n                </DropdownMenuItem>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </SidebarMenuItem>\n        ))}\n        <SidebarMenuItem>\n          <SidebarMenuButton>\n            <MoreHorizontal />\n            <span>More</span>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      </SidebarMenu>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-16/components/nav-secondary.tsx",
    "content": "import * as React from \"react\"\nimport { type LucideIcon } from \"lucide-react\"\n\nimport {\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavSecondary({\n  items,\n  ...props\n}: {\n  items: {\n    title: string\n    url: string\n    icon: LucideIcon\n  }[]\n} & React.ComponentPropsWithoutRef<typeof SidebarGroup>) {\n  return (\n    <SidebarGroup {...props}>\n      <SidebarGroupContent>\n        <SidebarMenu>\n          {items.map((item) => (\n            <SidebarMenuItem key={item.title}>\n              <SidebarMenuButton asChild size=\"sm\">\n                <a href={item.url}>\n                  <item.icon />\n                  <span>{item.title}</span>\n                </a>\n              </SidebarMenuButton>\n            </SidebarMenuItem>\n          ))}\n        </SidebarMenu>\n      </SidebarGroupContent>\n    </SidebarGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-16/components/nav-user.tsx",
    "content": "\"use client\"\n\nimport {\n  BadgeCheck,\n  Bell,\n  ChevronsUpDown,\n  CreditCard,\n  LogOut,\n  Sparkles,\n} from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function NavUser({\n  user,\n}: {\n  user: {\n    name: string\n    email: string\n    avatar: string\n  }\n}) {\n  const { isMobile } = useSidebar()\n\n  return (\n    <SidebarMenu>\n      <SidebarMenuItem>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <SidebarMenuButton\n              size=\"lg\"\n              className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n            >\n              <Avatar className=\"h-8 w-8 rounded-lg\">\n                <AvatarImage src={user.avatar} alt={user.name} />\n                <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n              </Avatar>\n              <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                <span className=\"truncate font-medium\">{user.name}</span>\n                <span className=\"truncate text-xs\">{user.email}</span>\n              </div>\n              <ChevronsUpDown className=\"ml-auto size-4\" />\n            </SidebarMenuButton>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n            side={isMobile ? \"bottom\" : \"right\"}\n            align=\"end\"\n            sideOffset={4}\n          >\n            <DropdownMenuLabel className=\"p-0 font-normal\">\n              <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                <Avatar className=\"h-8 w-8 rounded-lg\">\n                  <AvatarImage src={user.avatar} alt={user.name} />\n                  <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n                </Avatar>\n                <div className=\"grid flex-1 text-left text-sm leading-tight\">\n                  <span className=\"truncate font-medium\">{user.name}</span>\n                  <span className=\"truncate text-xs\">{user.email}</span>\n                </div>\n              </div>\n            </DropdownMenuLabel>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <Sparkles />\n                Upgrade to Pro\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <BadgeCheck />\n                Account\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CreditCard />\n                Billing\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <Bell />\n                Notifications\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>\n              <LogOut />\n              Log out\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </SidebarMenuItem>\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-16/components/search-form.tsx",
    "content": "import { Search } from \"lucide-react\"\n\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { SidebarInput } from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function SearchForm({ ...props }: React.ComponentProps<\"form\">) {\n  return (\n    <form {...props}>\n      <div className=\"relative\">\n        <Label htmlFor=\"search\" className=\"sr-only\">\n          Search\n        </Label>\n        <SidebarInput\n          id=\"search\"\n          placeholder=\"Type to search...\"\n          className=\"h-8 pl-7\"\n        />\n        <Search className=\"pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none\" />\n      </div>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-16/components/site-header.tsx",
    "content": "\"use client\"\n\nimport { SidebarIcon } from \"lucide-react\"\n\nimport { SearchForm } from \"@/registry/new-york-v4/blocks/sidebar-16/components/search-form\"\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { useSidebar } from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport function SiteHeader() {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <header className=\"sticky top-0 z-50 flex w-full items-center border-b bg-background\">\n      <div className=\"flex h-(--header-height) w-full items-center gap-2 px-4\">\n        <Button\n          className=\"h-8 w-8\"\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={toggleSidebar}\n        >\n          <SidebarIcon />\n        </Button>\n        <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\n        <Breadcrumb className=\"hidden sm:block\">\n          <BreadcrumbList>\n            <BreadcrumbItem>\n              <BreadcrumbLink href=\"#\">Build Your Application</BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage>Data Fetching</BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n        <SearchForm className=\"w-full sm:ml-auto sm:w-auto\" />\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/sidebar-16/page.tsx",
    "content": "import { AppSidebar } from \"@/registry/new-york-v4/blocks/sidebar-16/components/app-sidebar\"\nimport { SiteHeader } from \"@/registry/new-york-v4/blocks/sidebar-16/components/site-header\"\nimport {\n  SidebarInset,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport const iframeHeight = \"800px\"\n\nexport const description = \"A sidebar with a header and a search form.\"\n\nexport default function Page() {\n  return (\n    <div className=\"[--header-height:calc(--spacing(14))]\">\n      <SidebarProvider className=\"flex flex-col\">\n        <SiteHeader />\n        <div className=\"flex flex-1\">\n          <AppSidebar />\n          <SidebarInset>\n            <div className=\"flex flex-1 flex-col gap-4 p-4\">\n              <div className=\"grid auto-rows-min gap-4 md:grid-cols-3\">\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n                <div className=\"aspect-video rounded-xl bg-muted/50\" />\n              </div>\n              <div className=\"min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min\" />\n            </div>\n          </SidebarInset>\n        </div>\n      </SidebarProvider>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-01/components/signup-form.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function SignupForm({ ...props }: React.ComponentProps<typeof Card>) {\n  return (\n    <Card {...props}>\n      <CardHeader>\n        <CardTitle>Create an account</CardTitle>\n        <CardDescription>\n          Enter your information below to create your account\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <FieldGroup>\n            <Field>\n              <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n              <Input id=\"name\" type=\"text\" placeholder=\"John Doe\" required />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"m@example.com\"\n                required\n              />\n              <FieldDescription>\n                We&apos;ll use this to contact you. We will not share your email\n                with anyone else.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n              <Input id=\"password\" type=\"password\" required />\n              <FieldDescription>\n                Must be at least 8 characters long.\n              </FieldDescription>\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"confirm-password\">\n                Confirm Password\n              </FieldLabel>\n              <Input id=\"confirm-password\" type=\"password\" required />\n              <FieldDescription>Please confirm your password.</FieldDescription>\n            </Field>\n            <FieldGroup>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n                <Button variant=\"outline\" type=\"button\">\n                  Sign up with Google\n                </Button>\n                <FieldDescription className=\"px-6 text-center\">\n                  Already have an account? <a href=\"#\">Sign in</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-01/page.tsx",
    "content": "import { SignupForm } from \"@/registry/new-york-v4/blocks/signup-01/components/signup-form\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-02/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <FieldGroup>\n        <div className=\"flex flex-col items-center gap-1 text-center\">\n          <h1 className=\"text-2xl font-bold\">Create your account</h1>\n          <p className=\"text-sm text-balance text-muted-foreground\">\n            Fill in the form below to create your account\n          </p>\n        </div>\n        <Field>\n          <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n          <Input id=\"name\" type=\"text\" placeholder=\"John Doe\" required />\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n          <Input id=\"email\" type=\"email\" placeholder=\"m@example.com\" required />\n          <FieldDescription>\n            We&apos;ll use this to contact you. We will not share your email\n            with anyone else.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n          <Input id=\"password\" type=\"password\" required />\n          <FieldDescription>\n            Must be at least 8 characters long.\n          </FieldDescription>\n        </Field>\n        <Field>\n          <FieldLabel htmlFor=\"confirm-password\">Confirm Password</FieldLabel>\n          <Input id=\"confirm-password\" type=\"password\" required />\n          <FieldDescription>Please confirm your password.</FieldDescription>\n        </Field>\n        <Field>\n          <Button type=\"submit\">Create Account</Button>\n        </Field>\n        <FieldSeparator>Or continue with</FieldSeparator>\n        <Field>\n          <Button variant=\"outline\" type=\"button\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n                fill=\"currentColor\"\n              />\n            </svg>\n            Sign up with GitHub\n          </Button>\n          <FieldDescription className=\"px-6 text-center\">\n            Already have an account? <a href=\"#\">Sign in</a>\n          </FieldDescription>\n        </Field>\n      </FieldGroup>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-02/page.tsx",
    "content": "import { GalleryVerticalEnd } from \"lucide-react\"\n\nimport { SignupForm } from \"@/registry/new-york-v4/blocks/signup-02/components/signup-form\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"grid min-h-svh lg:grid-cols-2\">\n      <div className=\"flex flex-col gap-4 p-6 md:p-10\">\n        <div className=\"flex justify-center gap-2 md:justify-start\">\n          <a href=\"#\" className=\"flex items-center gap-2 font-medium\">\n            <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n              <GalleryVerticalEnd className=\"size-4\" />\n            </div>\n            Acme Inc.\n          </a>\n        </div>\n        <div className=\"flex flex-1 items-center justify-center\">\n          <div className=\"w-full max-w-xs\">\n            <SignupForm />\n          </div>\n        </div>\n      </div>\n      <div className=\"relative hidden bg-muted lg:block\">\n        <img\n          src=\"/placeholder.svg\"\n          alt=\"Image\"\n          className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-03/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card>\n        <CardHeader className=\"text-center\">\n          <CardTitle className=\"text-xl\">Create your account</CardTitle>\n          <CardDescription>\n            Enter your email below to create your account\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"name\">Full Name</FieldLabel>\n                <Input id=\"name\" type=\"text\" placeholder=\"John Doe\" required />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n              </Field>\n              <Field>\n                <Field className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                    <Input id=\"password\" type=\"password\" required />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"confirm-password\">\n                      Confirm Password\n                    </FieldLabel>\n                    <Input id=\"confirm-password\" type=\"password\" required />\n                  </Field>\n                </Field>\n                <FieldDescription>\n                  Must be at least 8 characters long.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n                <FieldDescription className=\"text-center\">\n                  Already have an account? <a href=\"#\">Sign in</a>\n                </FieldDescription>\n              </Field>\n            </FieldGroup>\n          </form>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-03/page.tsx",
    "content": "import { GalleryVerticalEnd } from \"lucide-react\"\n\nimport { SignupForm } from \"@/registry/new-york-v4/blocks/signup-03/components/signup-form\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10\">\n      <div className=\"flex w-full max-w-sm flex-col gap-6\">\n        <a href=\"#\" className=\"flex items-center gap-2 self-center font-medium\">\n          <div className=\"flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground\">\n            <GalleryVerticalEnd className=\"size-4\" />\n          </div>\n          Acme Inc.\n        </a>\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-04/components/signup-form.tsx",
    "content": "import { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <Card className=\"overflow-hidden p-0\">\n        <CardContent className=\"grid p-0 md:grid-cols-2\">\n          <form className=\"p-6 md:p-8\">\n            <FieldGroup>\n              <div className=\"flex flex-col items-center gap-2 text-center\">\n                <h1 className=\"text-2xl font-bold\">Create your account</h1>\n                <p className=\"text-sm text-balance text-muted-foreground\">\n                  Enter your email below to create your account\n                </p>\n              </div>\n              <Field>\n                <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"m@example.com\"\n                  required\n                />\n                <FieldDescription>\n                  We&apos;ll use this to contact you. We will not share your\n                  email with anyone else.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Field className=\"grid grid-cols-2 gap-4\">\n                  <Field>\n                    <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n                    <Input id=\"password\" type=\"password\" required />\n                  </Field>\n                  <Field>\n                    <FieldLabel htmlFor=\"confirm-password\">\n                      Confirm Password\n                    </FieldLabel>\n                    <Input id=\"confirm-password\" type=\"password\" required />\n                  </Field>\n                </Field>\n                <FieldDescription>\n                  Must be at least 8 characters long.\n                </FieldDescription>\n              </Field>\n              <Field>\n                <Button type=\"submit\">Create Account</Button>\n              </Field>\n              <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n                Or continue with\n              </FieldSeparator>\n              <Field className=\"grid grid-cols-3 gap-4\">\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Apple</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Google</span>\n                </Button>\n                <Button variant=\"outline\" type=\"button\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z\"\n                      fill=\"currentColor\"\n                    />\n                  </svg>\n                  <span className=\"sr-only\">Sign up with Meta</span>\n                </Button>\n              </Field>\n              <FieldDescription className=\"text-center\">\n                Already have an account? <a href=\"#\">Sign in</a>\n              </FieldDescription>\n            </FieldGroup>\n          </form>\n          <div className=\"relative hidden bg-muted md:block\">\n            <img\n              src=\"/placeholder.svg\"\n              alt=\"Image\"\n              className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n            />\n          </div>\n        </CardContent>\n      </Card>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-04/page.tsx",
    "content": "import { SignupForm } from \"@/registry/new-york-v4/blocks/signup-04/components/signup-form\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10\">\n      <div className=\"w-full max-w-sm md:max-w-4xl\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-05/components/signup-form.tsx",
    "content": "import { GalleryVerticalEnd } from \"lucide-react\"\n\nimport { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport function SignupForm({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n      <form>\n        <FieldGroup>\n          <div className=\"flex flex-col items-center gap-2 text-center\">\n            <a\n              href=\"#\"\n              className=\"flex flex-col items-center gap-2 font-medium\"\n            >\n              <div className=\"flex size-8 items-center justify-center rounded-md\">\n                <GalleryVerticalEnd className=\"size-6\" />\n              </div>\n              <span className=\"sr-only\">Acme Inc.</span>\n            </a>\n            <h1 className=\"text-xl font-bold\">Welcome to Acme Inc.</h1>\n            <FieldDescription>\n              Already have an account? <a href=\"#\">Sign in</a>\n            </FieldDescription>\n          </div>\n          <Field>\n            <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              placeholder=\"m@example.com\"\n              required\n            />\n          </Field>\n          <Field>\n            <Button type=\"submit\">Create Account</Button>\n          </Field>\n          <FieldSeparator>Or</FieldSeparator>\n          <Field className=\"grid gap-4 sm:grid-cols-2\">\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Apple\n            </Button>\n            <Button variant=\"outline\" type=\"button\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n              Continue with Google\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n      <FieldDescription className=\"px-6 text-center\">\n        By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n        and <a href=\"#\">Privacy Policy</a>.\n      </FieldDescription>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/blocks/signup-05/page.tsx",
    "content": "import { SignupForm } from \"@/registry/new-york-v4/blocks/signup-05/components/signup-form\"\n\nexport default function SignupPage() {\n  return (\n    <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10\">\n      <div className=\"w-full max-w-sm\">\n        <SignupForm />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const charts: Registry[\"items\"] = [\n  // Area Charts\n  {\n    name: \"chart-area-axes\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-axes.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-default\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-default.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-gradient\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-gradient.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-icons\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-icons.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-interactive\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\", \"select\"],\n    files: [\n      {\n        path: \"charts/chart-area-interactive.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-legend\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-legend.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-linear\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-linear.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-stacked-expand\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-stacked-expand.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-stacked\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-stacked.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n  {\n    name: \"chart-area-step\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-area-step.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-area\"],\n  },\n\n  // Bar Charts\n  {\n    name: \"chart-bar-active\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-active.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-default\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-default.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-horizontal\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-horizontal.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-interactive\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-interactive.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-label-custom\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-label-custom.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-label\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-label.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-mixed\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-mixed.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-multiple\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-multiple.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-negative\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-negative.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n  {\n    name: \"chart-bar-stacked\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-bar-stacked.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-bar\"],\n  },\n\n  // Line Charts\n  {\n    name: \"chart-line-default\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-default.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-dots-colors\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-dots-colors.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-dots-custom\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-dots-custom.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-dots\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-dots.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-interactive\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-interactive.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-label-custom\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-label-custom.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-label\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-label.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-linear\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-linear.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-multiple\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-multiple.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n  {\n    name: \"chart-line-step\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-line-step.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-line\"],\n  },\n\n  // Pie Charts\n  {\n    name: \"chart-pie-donut-active\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-donut-active.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-donut-text\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-donut-text.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-donut\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-donut.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-interactive\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-interactive.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-label-custom\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-label-custom.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-label-list\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-label-list.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-label\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-label.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-legend\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-legend.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-separator-none\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-separator-none.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-simple\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-simple.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n  {\n    name: \"chart-pie-stacked\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-pie-stacked.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-pie\"],\n  },\n\n  // Radar Charts\n  {\n    name: \"chart-radar-default\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-default.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-dots\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-dots.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-grid-circle-fill\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-grid-circle-fill.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-grid-circle-no-lines\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-grid-circle-no-lines.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-grid-circle\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-grid-circle.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-grid-custom\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-grid-custom.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-grid-fill\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-grid-fill.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-grid-none\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-grid-none.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-icons\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-icons.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-label-custom\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-label-custom.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-legend\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-legend.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-lines-only\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-lines-only.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-multiple\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-multiple.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n  {\n    name: \"chart-radar-radius\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radar-radius.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radar\"],\n  },\n\n  // Radial Charts\n  {\n    name: \"chart-radial-grid\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radial-grid.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radial\"],\n  },\n  {\n    name: \"chart-radial-label\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radial-label.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radial\"],\n  },\n  {\n    name: \"chart-radial-shape\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radial-shape.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radial\"],\n  },\n  {\n    name: \"chart-radial-simple\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radial-simple.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radial\"],\n  },\n  {\n    name: \"chart-radial-stacked\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radial-stacked.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radial\"],\n  },\n  {\n    name: \"chart-radial-text\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-radial-text.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-radial\"],\n  },\n  {\n    name: \"chart-tooltip-default\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-default.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n  {\n    name: \"chart-tooltip-indicator-line\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-indicator-line.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n  {\n    name: \"chart-tooltip-indicator-none\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-indicator-none.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n  {\n    name: \"chart-tooltip-label-none\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-label-none.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n  {\n    name: \"chart-tooltip-label-custom\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-label-custom.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n  {\n    name: \"chart-tooltip-label-formatter\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-label-formatter.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n  {\n    name: \"chart-tooltip-formatter\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-formatter.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n  {\n    name: \"chart-tooltip-icons\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-icons.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n  {\n    name: \"chart-tooltip-advanced\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"chart\"],\n    files: [\n      {\n        path: \"charts/chart-tooltip-advanced.tsx\",\n        type: \"registry:block\",\n      },\n    ],\n    categories: [\"charts\", \"charts-tooltip\"],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-axes.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis, YAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"An area chart with axes\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaAxes() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart - Axes</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: -20,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <YAxis\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickCount={3}\n            />\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"var(--color-mobile)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-default.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A simple area chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaDefault() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-gradient.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"An area chart with gradient fill\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaGradient() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart - Gradient</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n            <defs>\n              <linearGradient id=\"fillDesktop\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n              <linearGradient id=\"fillMobile\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n            </defs>\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"url(#fillMobile)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"url(#fillDesktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-icons.tsx",
    "content": "\"use client\"\n\nimport { TrendingDown, TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"An area chart with icons\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n    icon: TrendingDown,\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n    icon: TrendingUp,\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaIcons() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart - Icons</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"var(--color-mobile)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n            <ChartLegend content={<ChartLegendContent />} />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport const description = \"An interactive area chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n  { date: \"2024-05-01\", desktop: 165, mobile: 220 },\n  { date: \"2024-05-02\", desktop: 293, mobile: 310 },\n  { date: \"2024-05-03\", desktop: 247, mobile: 190 },\n  { date: \"2024-05-04\", desktop: 385, mobile: 420 },\n  { date: \"2024-05-05\", desktop: 481, mobile: 390 },\n  { date: \"2024-05-06\", desktop: 498, mobile: 520 },\n  { date: \"2024-05-07\", desktop: 388, mobile: 300 },\n  { date: \"2024-05-08\", desktop: 149, mobile: 210 },\n  { date: \"2024-05-09\", desktop: 227, mobile: 180 },\n  { date: \"2024-05-10\", desktop: 293, mobile: 330 },\n  { date: \"2024-05-11\", desktop: 335, mobile: 270 },\n  { date: \"2024-05-12\", desktop: 197, mobile: 240 },\n  { date: \"2024-05-13\", desktop: 197, mobile: 160 },\n  { date: \"2024-05-14\", desktop: 448, mobile: 490 },\n  { date: \"2024-05-15\", desktop: 473, mobile: 380 },\n  { date: \"2024-05-16\", desktop: 338, mobile: 400 },\n  { date: \"2024-05-17\", desktop: 499, mobile: 420 },\n  { date: \"2024-05-18\", desktop: 315, mobile: 350 },\n  { date: \"2024-05-19\", desktop: 235, mobile: 180 },\n  { date: \"2024-05-20\", desktop: 177, mobile: 230 },\n  { date: \"2024-05-21\", desktop: 82, mobile: 140 },\n  { date: \"2024-05-22\", desktop: 81, mobile: 120 },\n  { date: \"2024-05-23\", desktop: 252, mobile: 290 },\n  { date: \"2024-05-24\", desktop: 294, mobile: 220 },\n  { date: \"2024-05-25\", desktop: 201, mobile: 250 },\n  { date: \"2024-05-26\", desktop: 213, mobile: 170 },\n  { date: \"2024-05-27\", desktop: 420, mobile: 460 },\n  { date: \"2024-05-28\", desktop: 233, mobile: 190 },\n  { date: \"2024-05-29\", desktop: 78, mobile: 130 },\n  { date: \"2024-05-30\", desktop: 340, mobile: 280 },\n  { date: \"2024-05-31\", desktop: 178, mobile: 230 },\n  { date: \"2024-06-01\", desktop: 178, mobile: 200 },\n  { date: \"2024-06-02\", desktop: 470, mobile: 410 },\n  { date: \"2024-06-03\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-04\", desktop: 439, mobile: 380 },\n  { date: \"2024-06-05\", desktop: 88, mobile: 140 },\n  { date: \"2024-06-06\", desktop: 294, mobile: 250 },\n  { date: \"2024-06-07\", desktop: 323, mobile: 370 },\n  { date: \"2024-06-08\", desktop: 385, mobile: 320 },\n  { date: \"2024-06-09\", desktop: 438, mobile: 480 },\n  { date: \"2024-06-10\", desktop: 155, mobile: 200 },\n  { date: \"2024-06-11\", desktop: 92, mobile: 150 },\n  { date: \"2024-06-12\", desktop: 492, mobile: 420 },\n  { date: \"2024-06-13\", desktop: 81, mobile: 130 },\n  { date: \"2024-06-14\", desktop: 426, mobile: 380 },\n  { date: \"2024-06-15\", desktop: 307, mobile: 350 },\n  { date: \"2024-06-16\", desktop: 371, mobile: 310 },\n  { date: \"2024-06-17\", desktop: 475, mobile: 520 },\n  { date: \"2024-06-18\", desktop: 107, mobile: 170 },\n  { date: \"2024-06-19\", desktop: 341, mobile: 290 },\n  { date: \"2024-06-20\", desktop: 408, mobile: 450 },\n  { date: \"2024-06-21\", desktop: 169, mobile: 210 },\n  { date: \"2024-06-22\", desktop: 317, mobile: 270 },\n  { date: \"2024-06-23\", desktop: 480, mobile: 530 },\n  { date: \"2024-06-24\", desktop: 132, mobile: 180 },\n  { date: \"2024-06-25\", desktop: 141, mobile: 190 },\n  { date: \"2024-06-26\", desktop: 434, mobile: 380 },\n  { date: \"2024-06-27\", desktop: 448, mobile: 490 },\n  { date: \"2024-06-28\", desktop: 149, mobile: 200 },\n  { date: \"2024-06-29\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-30\", desktop: 446, mobile: 400 },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaInteractive() {\n  const [timeRange, setTimeRange] = React.useState(\"90d\")\n\n  const filteredData = chartData.filter((item) => {\n    const date = new Date(item.date)\n    const referenceDate = new Date(\"2024-06-30\")\n    let daysToSubtract = 90\n    if (timeRange === \"30d\") {\n      daysToSubtract = 30\n    } else if (timeRange === \"7d\") {\n      daysToSubtract = 7\n    }\n    const startDate = new Date(referenceDate)\n    startDate.setDate(startDate.getDate() - daysToSubtract)\n    return date >= startDate\n  })\n\n  return (\n    <Card className=\"pt-0\">\n      <CardHeader className=\"flex items-center gap-2 space-y-0 border-b py-5 sm:flex-row\">\n        <div className=\"grid flex-1 gap-1\">\n          <CardTitle>Area Chart - Interactive</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 3 months\n          </CardDescription>\n        </div>\n        <Select value={timeRange} onValueChange={setTimeRange}>\n          <SelectTrigger\n            className=\"hidden w-[160px] rounded-lg sm:ml-auto sm:flex\"\n            aria-label=\"Select a value\"\n          >\n            <SelectValue placeholder=\"Last 3 months\" />\n          </SelectTrigger>\n          <SelectContent className=\"rounded-xl\">\n            <SelectItem value=\"90d\" className=\"rounded-lg\">\n              Last 3 months\n            </SelectItem>\n            <SelectItem value=\"30d\" className=\"rounded-lg\">\n              Last 30 days\n            </SelectItem>\n            <SelectItem value=\"7d\" className=\"rounded-lg\">\n              Last 7 days\n            </SelectItem>\n          </SelectContent>\n        </Select>\n      </CardHeader>\n      <CardContent className=\"px-2 pt-4 sm:px-6 sm:pt-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <AreaChart data={filteredData}>\n            <defs>\n              <linearGradient id=\"fillDesktop\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-desktop)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n              <linearGradient id=\"fillMobile\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop\n                  offset=\"5%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.8}\n                />\n                <stop\n                  offset=\"95%\"\n                  stopColor=\"var(--color-mobile)\"\n                  stopOpacity={0.1}\n                />\n              </linearGradient>\n            </defs>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={\n                <ChartTooltipContent\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                    })\n                  }}\n                  indicator=\"dot\"\n                />\n              }\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"url(#fillMobile)\"\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"url(#fillDesktop)\"\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n            <ChartLegend content={<ChartLegendContent />} />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-legend.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"An area chart with a legend\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaLegend() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart - Legend</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"var(--color-mobile)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n            <ChartLegend content={<ChartLegendContent />} />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-linear.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A linear area chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaLinear() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart - Linear</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"dot\" hideLabel />}\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"linear\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-stacked-expand.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked area chart with expand stacking\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80, other: 45 },\n  { month: \"February\", desktop: 305, mobile: 200, other: 100 },\n  { month: \"March\", desktop: 237, mobile: 120, other: 150 },\n  { month: \"April\", desktop: 73, mobile: 190, other: 50 },\n  { month: \"May\", desktop: 209, mobile: 130, other: 100 },\n  { month: \"June\", desktop: 214, mobile: 140, other: 160 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-3)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaStackedExpand() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart - Stacked Expanded</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n              top: 12,\n            }}\n            stackOffset=\"expand\"\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Area\n              dataKey=\"other\"\n              type=\"natural\"\n              fill=\"var(--color-other)\"\n              fillOpacity={0.1}\n              stroke=\"var(--color-other)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"var(--color-mobile)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-stacked.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked area chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaStacked() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart - Stacked</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"dot\" />}\n            />\n            <Area\n              dataKey=\"mobile\"\n              type=\"natural\"\n              fill=\"var(--color-mobile)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-mobile)\"\n              stackId=\"a\"\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"natural\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n              stackId=\"a\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-area-step.tsx",
    "content": "\"use client\"\n\nimport { Activity, TrendingUp } from \"lucide-react\"\nimport { Area, AreaChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A step area chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n    icon: Activity,\n  },\n} satisfies ChartConfig\n\nexport function ChartAreaStep() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Area Chart - Step</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <AreaChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Area\n              dataKey=\"desktop\"\n              type=\"step\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.4}\n              stroke=\"var(--color-desktop)\"\n            />\n          </AreaChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              January - June 2024\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-active.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, Rectangle, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A bar chart with an active bar\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 187, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 275, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarActive() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Active</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"browser\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) =>\n                chartConfig[value as keyof typeof chartConfig]?.label\n              }\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Bar\n              dataKey=\"visitors\"\n              strokeWidth={2}\n              radius={8}\n              activeIndex={2}\n              activeBar={({ ...props }) => {\n                return (\n                  <Rectangle\n                    {...props}\n                    fillOpacity={0.8}\n                    stroke={props.payload.fill}\n                    strokeDasharray={4}\n                    strokeDashoffset={4}\n                  />\n                )\n              }}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-default.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A bar chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarDefault() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={8} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-horizontal.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, XAxis, YAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A horizontal bar chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarHorizontal() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Horizontal</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            layout=\"vertical\"\n            margin={{\n              left: -20,\n            }}\n          >\n            <XAxis type=\"number\" dataKey=\"desktop\" hide />\n            <YAxis\n              dataKey=\"month\"\n              type=\"category\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={5} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"An interactive bar chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n  { date: \"2024-05-01\", desktop: 165, mobile: 220 },\n  { date: \"2024-05-02\", desktop: 293, mobile: 310 },\n  { date: \"2024-05-03\", desktop: 247, mobile: 190 },\n  { date: \"2024-05-04\", desktop: 385, mobile: 420 },\n  { date: \"2024-05-05\", desktop: 481, mobile: 390 },\n  { date: \"2024-05-06\", desktop: 498, mobile: 520 },\n  { date: \"2024-05-07\", desktop: 388, mobile: 300 },\n  { date: \"2024-05-08\", desktop: 149, mobile: 210 },\n  { date: \"2024-05-09\", desktop: 227, mobile: 180 },\n  { date: \"2024-05-10\", desktop: 293, mobile: 330 },\n  { date: \"2024-05-11\", desktop: 335, mobile: 270 },\n  { date: \"2024-05-12\", desktop: 197, mobile: 240 },\n  { date: \"2024-05-13\", desktop: 197, mobile: 160 },\n  { date: \"2024-05-14\", desktop: 448, mobile: 490 },\n  { date: \"2024-05-15\", desktop: 473, mobile: 380 },\n  { date: \"2024-05-16\", desktop: 338, mobile: 400 },\n  { date: \"2024-05-17\", desktop: 499, mobile: 420 },\n  { date: \"2024-05-18\", desktop: 315, mobile: 350 },\n  { date: \"2024-05-19\", desktop: 235, mobile: 180 },\n  { date: \"2024-05-20\", desktop: 177, mobile: 230 },\n  { date: \"2024-05-21\", desktop: 82, mobile: 140 },\n  { date: \"2024-05-22\", desktop: 81, mobile: 120 },\n  { date: \"2024-05-23\", desktop: 252, mobile: 290 },\n  { date: \"2024-05-24\", desktop: 294, mobile: 220 },\n  { date: \"2024-05-25\", desktop: 201, mobile: 250 },\n  { date: \"2024-05-26\", desktop: 213, mobile: 170 },\n  { date: \"2024-05-27\", desktop: 420, mobile: 460 },\n  { date: \"2024-05-28\", desktop: 233, mobile: 190 },\n  { date: \"2024-05-29\", desktop: 78, mobile: 130 },\n  { date: \"2024-05-30\", desktop: 340, mobile: 280 },\n  { date: \"2024-05-31\", desktop: 178, mobile: 230 },\n  { date: \"2024-06-01\", desktop: 178, mobile: 200 },\n  { date: \"2024-06-02\", desktop: 470, mobile: 410 },\n  { date: \"2024-06-03\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-04\", desktop: 439, mobile: 380 },\n  { date: \"2024-06-05\", desktop: 88, mobile: 140 },\n  { date: \"2024-06-06\", desktop: 294, mobile: 250 },\n  { date: \"2024-06-07\", desktop: 323, mobile: 370 },\n  { date: \"2024-06-08\", desktop: 385, mobile: 320 },\n  { date: \"2024-06-09\", desktop: 438, mobile: 480 },\n  { date: \"2024-06-10\", desktop: 155, mobile: 200 },\n  { date: \"2024-06-11\", desktop: 92, mobile: 150 },\n  { date: \"2024-06-12\", desktop: 492, mobile: 420 },\n  { date: \"2024-06-13\", desktop: 81, mobile: 130 },\n  { date: \"2024-06-14\", desktop: 426, mobile: 380 },\n  { date: \"2024-06-15\", desktop: 307, mobile: 350 },\n  { date: \"2024-06-16\", desktop: 371, mobile: 310 },\n  { date: \"2024-06-17\", desktop: 475, mobile: 520 },\n  { date: \"2024-06-18\", desktop: 107, mobile: 170 },\n  { date: \"2024-06-19\", desktop: 341, mobile: 290 },\n  { date: \"2024-06-20\", desktop: 408, mobile: 450 },\n  { date: \"2024-06-21\", desktop: 169, mobile: 210 },\n  { date: \"2024-06-22\", desktop: 317, mobile: 270 },\n  { date: \"2024-06-23\", desktop: 480, mobile: 530 },\n  { date: \"2024-06-24\", desktop: 132, mobile: 180 },\n  { date: \"2024-06-25\", desktop: 141, mobile: 190 },\n  { date: \"2024-06-26\", desktop: 434, mobile: 380 },\n  { date: \"2024-06-27\", desktop: 448, mobile: 490 },\n  { date: \"2024-06-28\", desktop: 149, mobile: 200 },\n  { date: \"2024-06-29\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-30\", desktop: 446, mobile: 400 },\n]\n\nconst chartConfig = {\n  views: {\n    label: \"Page Views\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-2)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarInteractive() {\n  const [activeChart, setActiveChart] =\n    React.useState<keyof typeof chartConfig>(\"desktop\")\n\n  const total = React.useMemo(\n    () => ({\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\n    }),\n    []\n  )\n\n  return (\n    <Card className=\"py-0\">\n      <CardHeader className=\"flex flex-col items-stretch border-b p-0! sm:flex-row\">\n        <div className=\"flex flex-1 flex-col justify-center gap-1 px-6 pt-4 pb-3 sm:py-0!\">\n          <CardTitle>Bar Chart - Interactive</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 3 months\n          </CardDescription>\n        </div>\n        <div className=\"flex\">\n          {[\"desktop\", \"mobile\"].map((key) => {\n            const chart = key as keyof typeof chartConfig\n            return (\n              <button\n                key={chart}\n                data-active={activeChart === chart}\n                className=\"relative z-30 flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-t-0 sm:border-l sm:px-8 sm:py-6\"\n                onClick={() => setActiveChart(chart)}\n              >\n                <span className=\"text-xs text-muted-foreground\">\n                  {chartConfig[chart].label}\n                </span>\n                <span className=\"text-lg leading-none font-bold sm:text-3xl\">\n                  {total[key as keyof typeof total].toLocaleString()}\n                </span>\n              </button>\n            )\n          })}\n        </div>\n      </CardHeader>\n      <CardContent className=\"px-2 sm:p-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              content={\n                <ChartTooltipContent\n                  className=\"w-[150px]\"\n                  nameKey=\"views\"\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                      year: \"numeric\",\n                    })\n                  }}\n                />\n              }\n            />\n            <Bar dataKey={activeChart} fill={`var(--color-${activeChart})`} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-label-custom.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, LabelList, XAxis, YAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A bar chart with a custom label\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-2)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n  label: {\n    color: \"var(--background)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarLabelCustom() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Custom Label</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            layout=\"vertical\"\n            margin={{\n              right: 16,\n            }}\n          >\n            <CartesianGrid horizontal={false} />\n            <YAxis\n              dataKey=\"month\"\n              type=\"category\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.slice(0, 3)}\n              hide\n            />\n            <XAxis dataKey=\"desktop\" type=\"number\" hide />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Bar\n              dataKey=\"desktop\"\n              layout=\"vertical\"\n              fill=\"var(--color-desktop)\"\n              radius={4}\n            >\n              <LabelList\n                dataKey=\"month\"\n                position=\"insideLeft\"\n                offset={8}\n                className=\"fill-(--color-label)\"\n                fontSize={12}\n              />\n              <LabelList\n                dataKey=\"desktop\"\n                position=\"right\"\n                offset={8}\n                className=\"fill-foreground\"\n                fontSize={12}\n              />\n            </Bar>\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-label.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, LabelList, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A bar chart with a label\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarLabel() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Label</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              top: 20,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={8}>\n              <LabelList\n                position=\"top\"\n                offset={12}\n                className=\"fill-foreground\"\n                fontSize={12}\n              />\n            </Bar>\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-mixed.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, XAxis, YAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A mixed bar chart\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarMixed() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Mixed</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart\n            accessibilityLayer\n            data={chartData}\n            layout=\"vertical\"\n            margin={{\n              left: 0,\n            }}\n          >\n            <YAxis\n              dataKey=\"browser\"\n              type=\"category\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) =>\n                chartConfig[value as keyof typeof chartConfig]?.label\n              }\n            />\n            <XAxis dataKey=\"visitors\" type=\"number\" hide />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Bar dataKey=\"visitors\" layout=\"vertical\" radius={5} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-multiple.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A multiple bar chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarMultiple() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Multiple</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"dashed\" />}\n            />\n            <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n            <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-negative.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, Cell, LabelList } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A bar chart with negative values\"\n\nconst chartData = [\n  { month: \"January\", visitors: 186 },\n  { month: \"February\", visitors: 205 },\n  { month: \"March\", visitors: -207 },\n  { month: \"April\", visitors: 173 },\n  { month: \"May\", visitors: -209 },\n  { month: \"June\", visitors: 214 },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarNegative() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Negative</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <CartesianGrid vertical={false} />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel hideIndicator />}\n            />\n            <Bar dataKey=\"visitors\">\n              <LabelList position=\"top\" dataKey=\"month\" fillOpacity={1} />\n              {chartData.map((item) => (\n                <Cell\n                  key={item.month}\n                  fill={item.visitors > 0 ? \"var(--chart-1)\" : \"var(--chart-2)\"}\n                />\n              ))}\n            </Bar>\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-bar-stacked.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartBarStacked() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Bar Chart - Stacked + Legend</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip content={<ChartTooltipContent hideLabel />} />\n            <ChartLegend content={<ChartLegendContent />} />\n            <Bar\n              dataKey=\"desktop\"\n              stackId=\"a\"\n              fill=\"var(--color-desktop)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"mobile\"\n              stackId=\"a\"\n              fill=\"var(--color-mobile)\"\n              radius={[4, 4, 0, 0]}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-default.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A line chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineDefault() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Line\n              dataKey=\"desktop\"\n              type=\"natural\"\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n              dot={false}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots-colors.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, Dot, Line, LineChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A line chart with dots and colors\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n    color: \"var(--chart-2)\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineDotsColors() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Dots Colors</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              top: 24,\n              left: 24,\n              right: 24,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <ChartTooltip\n              cursor={false}\n              content={\n                <ChartTooltipContent\n                  indicator=\"line\"\n                  nameKey=\"visitors\"\n                  hideLabel\n                />\n              }\n            />\n            <Line\n              dataKey=\"visitors\"\n              type=\"natural\"\n              stroke=\"var(--color-visitors)\"\n              strokeWidth={2}\n              dot={({ payload, ...props }) => {\n                return (\n                  <Dot\n                    key={payload.browser}\n                    r={5}\n                    cx={props.cx}\n                    cy={props.cy}\n                    fill={payload.fill}\n                    stroke={payload.fill}\n                  />\n                )\n              }}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots-custom.tsx",
    "content": "\"use client\"\n\nimport { GitCommitVertical, TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A line chart with custom dots\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineDotsCustom() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Custom Dots</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Line\n              dataKey=\"desktop\"\n              type=\"natural\"\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n              dot={({ cx, cy, payload }) => {\n                const r = 24\n                return (\n                  <GitCommitVertical\n                    key={payload.month}\n                    x={cx - r / 2}\n                    y={cy - r / 2}\n                    width={r}\n                    height={r}\n                    fill=\"hsl(var(--background))\"\n                    stroke=\"var(--color-desktop)\"\n                  />\n                )\n              }}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-dots.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A line chart with dots\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineDots() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Dots</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Line\n              dataKey=\"desktop\"\n              type=\"natural\"\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n              dot={{\n                fill: \"var(--color-desktop)\",\n              }}\n              activeDot={{\n                r: 6,\n              }}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"An interactive line chart\"\n\nconst chartData = [\n  { date: \"2024-04-01\", desktop: 222, mobile: 150 },\n  { date: \"2024-04-02\", desktop: 97, mobile: 180 },\n  { date: \"2024-04-03\", desktop: 167, mobile: 120 },\n  { date: \"2024-04-04\", desktop: 242, mobile: 260 },\n  { date: \"2024-04-05\", desktop: 373, mobile: 290 },\n  { date: \"2024-04-06\", desktop: 301, mobile: 340 },\n  { date: \"2024-04-07\", desktop: 245, mobile: 180 },\n  { date: \"2024-04-08\", desktop: 409, mobile: 320 },\n  { date: \"2024-04-09\", desktop: 59, mobile: 110 },\n  { date: \"2024-04-10\", desktop: 261, mobile: 190 },\n  { date: \"2024-04-11\", desktop: 327, mobile: 350 },\n  { date: \"2024-04-12\", desktop: 292, mobile: 210 },\n  { date: \"2024-04-13\", desktop: 342, mobile: 380 },\n  { date: \"2024-04-14\", desktop: 137, mobile: 220 },\n  { date: \"2024-04-15\", desktop: 120, mobile: 170 },\n  { date: \"2024-04-16\", desktop: 138, mobile: 190 },\n  { date: \"2024-04-17\", desktop: 446, mobile: 360 },\n  { date: \"2024-04-18\", desktop: 364, mobile: 410 },\n  { date: \"2024-04-19\", desktop: 243, mobile: 180 },\n  { date: \"2024-04-20\", desktop: 89, mobile: 150 },\n  { date: \"2024-04-21\", desktop: 137, mobile: 200 },\n  { date: \"2024-04-22\", desktop: 224, mobile: 170 },\n  { date: \"2024-04-23\", desktop: 138, mobile: 230 },\n  { date: \"2024-04-24\", desktop: 387, mobile: 290 },\n  { date: \"2024-04-25\", desktop: 215, mobile: 250 },\n  { date: \"2024-04-26\", desktop: 75, mobile: 130 },\n  { date: \"2024-04-27\", desktop: 383, mobile: 420 },\n  { date: \"2024-04-28\", desktop: 122, mobile: 180 },\n  { date: \"2024-04-29\", desktop: 315, mobile: 240 },\n  { date: \"2024-04-30\", desktop: 454, mobile: 380 },\n  { date: \"2024-05-01\", desktop: 165, mobile: 220 },\n  { date: \"2024-05-02\", desktop: 293, mobile: 310 },\n  { date: \"2024-05-03\", desktop: 247, mobile: 190 },\n  { date: \"2024-05-04\", desktop: 385, mobile: 420 },\n  { date: \"2024-05-05\", desktop: 481, mobile: 390 },\n  { date: \"2024-05-06\", desktop: 498, mobile: 520 },\n  { date: \"2024-05-07\", desktop: 388, mobile: 300 },\n  { date: \"2024-05-08\", desktop: 149, mobile: 210 },\n  { date: \"2024-05-09\", desktop: 227, mobile: 180 },\n  { date: \"2024-05-10\", desktop: 293, mobile: 330 },\n  { date: \"2024-05-11\", desktop: 335, mobile: 270 },\n  { date: \"2024-05-12\", desktop: 197, mobile: 240 },\n  { date: \"2024-05-13\", desktop: 197, mobile: 160 },\n  { date: \"2024-05-14\", desktop: 448, mobile: 490 },\n  { date: \"2024-05-15\", desktop: 473, mobile: 380 },\n  { date: \"2024-05-16\", desktop: 338, mobile: 400 },\n  { date: \"2024-05-17\", desktop: 499, mobile: 420 },\n  { date: \"2024-05-18\", desktop: 315, mobile: 350 },\n  { date: \"2024-05-19\", desktop: 235, mobile: 180 },\n  { date: \"2024-05-20\", desktop: 177, mobile: 230 },\n  { date: \"2024-05-21\", desktop: 82, mobile: 140 },\n  { date: \"2024-05-22\", desktop: 81, mobile: 120 },\n  { date: \"2024-05-23\", desktop: 252, mobile: 290 },\n  { date: \"2024-05-24\", desktop: 294, mobile: 220 },\n  { date: \"2024-05-25\", desktop: 201, mobile: 250 },\n  { date: \"2024-05-26\", desktop: 213, mobile: 170 },\n  { date: \"2024-05-27\", desktop: 420, mobile: 460 },\n  { date: \"2024-05-28\", desktop: 233, mobile: 190 },\n  { date: \"2024-05-29\", desktop: 78, mobile: 130 },\n  { date: \"2024-05-30\", desktop: 340, mobile: 280 },\n  { date: \"2024-05-31\", desktop: 178, mobile: 230 },\n  { date: \"2024-06-01\", desktop: 178, mobile: 200 },\n  { date: \"2024-06-02\", desktop: 470, mobile: 410 },\n  { date: \"2024-06-03\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-04\", desktop: 439, mobile: 380 },\n  { date: \"2024-06-05\", desktop: 88, mobile: 140 },\n  { date: \"2024-06-06\", desktop: 294, mobile: 250 },\n  { date: \"2024-06-07\", desktop: 323, mobile: 370 },\n  { date: \"2024-06-08\", desktop: 385, mobile: 320 },\n  { date: \"2024-06-09\", desktop: 438, mobile: 480 },\n  { date: \"2024-06-10\", desktop: 155, mobile: 200 },\n  { date: \"2024-06-11\", desktop: 92, mobile: 150 },\n  { date: \"2024-06-12\", desktop: 492, mobile: 420 },\n  { date: \"2024-06-13\", desktop: 81, mobile: 130 },\n  { date: \"2024-06-14\", desktop: 426, mobile: 380 },\n  { date: \"2024-06-15\", desktop: 307, mobile: 350 },\n  { date: \"2024-06-16\", desktop: 371, mobile: 310 },\n  { date: \"2024-06-17\", desktop: 475, mobile: 520 },\n  { date: \"2024-06-18\", desktop: 107, mobile: 170 },\n  { date: \"2024-06-19\", desktop: 341, mobile: 290 },\n  { date: \"2024-06-20\", desktop: 408, mobile: 450 },\n  { date: \"2024-06-21\", desktop: 169, mobile: 210 },\n  { date: \"2024-06-22\", desktop: 317, mobile: 270 },\n  { date: \"2024-06-23\", desktop: 480, mobile: 530 },\n  { date: \"2024-06-24\", desktop: 132, mobile: 180 },\n  { date: \"2024-06-25\", desktop: 141, mobile: 190 },\n  { date: \"2024-06-26\", desktop: 434, mobile: 380 },\n  { date: \"2024-06-27\", desktop: 448, mobile: 490 },\n  { date: \"2024-06-28\", desktop: 149, mobile: 200 },\n  { date: \"2024-06-29\", desktop: 103, mobile: 160 },\n  { date: \"2024-06-30\", desktop: 446, mobile: 400 },\n]\n\nconst chartConfig = {\n  views: {\n    label: \"Page Views\",\n  },\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineInteractive() {\n  const [activeChart, setActiveChart] =\n    React.useState<keyof typeof chartConfig>(\"desktop\")\n\n  const total = React.useMemo(\n    () => ({\n      desktop: chartData.reduce((acc, curr) => acc + curr.desktop, 0),\n      mobile: chartData.reduce((acc, curr) => acc + curr.mobile, 0),\n    }),\n    []\n  )\n\n  return (\n    <Card className=\"py-4 sm:py-0\">\n      <CardHeader className=\"flex flex-col items-stretch border-b p-0! sm:flex-row\">\n        <div className=\"flex flex-1 flex-col justify-center gap-1 px-6 pb-3 sm:pb-0\">\n          <CardTitle>Line Chart - Interactive</CardTitle>\n          <CardDescription>\n            Showing total visitors for the last 3 months\n          </CardDescription>\n        </div>\n        <div className=\"flex\">\n          {[\"desktop\", \"mobile\"].map((key) => {\n            const chart = key as keyof typeof chartConfig\n            return (\n              <button\n                key={chart}\n                data-active={activeChart === chart}\n                className=\"flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-t-0 sm:border-l sm:px-8 sm:py-6\"\n                onClick={() => setActiveChart(chart)}\n              >\n                <span className=\"text-xs text-muted-foreground\">\n                  {chartConfig[chart].label}\n                </span>\n                <span className=\"text-lg leading-none font-bold sm:text-3xl\">\n                  {total[key as keyof typeof total].toLocaleString()}\n                </span>\n              </button>\n            )\n          })}\n        </div>\n      </CardHeader>\n      <CardContent className=\"px-2 sm:p-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                const date = new Date(value)\n                return date.toLocaleDateString(\"en-US\", {\n                  month: \"short\",\n                  day: \"numeric\",\n                })\n              }}\n            />\n            <ChartTooltip\n              content={\n                <ChartTooltipContent\n                  className=\"w-[150px]\"\n                  nameKey=\"views\"\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      month: \"short\",\n                      day: \"numeric\",\n                      year: \"numeric\",\n                    })\n                  }}\n                />\n              }\n            />\n            <Line\n              dataKey={activeChart}\n              type=\"monotone\"\n              stroke={`var(--color-${activeChart})`}\n              strokeWidth={2}\n              dot={false}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-label-custom.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, LabelList, Line, LineChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A line chart with a custom label\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n    color: \"var(--chart-2)\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineLabelCustom() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Custom Label</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              top: 24,\n              left: 24,\n              right: 24,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <ChartTooltip\n              cursor={false}\n              content={\n                <ChartTooltipContent\n                  indicator=\"line\"\n                  nameKey=\"visitors\"\n                  hideLabel\n                />\n              }\n            />\n            <Line\n              dataKey=\"visitors\"\n              type=\"natural\"\n              stroke=\"var(--color-visitors)\"\n              strokeWidth={2}\n              dot={{\n                fill: \"var(--color-visitors)\",\n              }}\n              activeDot={{\n                r: 6,\n              }}\n            >\n              <LabelList\n                position=\"top\"\n                offset={12}\n                className=\"fill-foreground\"\n                fontSize={12}\n                dataKey=\"browser\"\n                formatter={(value: keyof typeof chartConfig) =>\n                  chartConfig[value]?.label\n                }\n              />\n            </Line>\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-label.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, LabelList, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A line chart with a label\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineLabel() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Label</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              top: 20,\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <Line\n              dataKey=\"desktop\"\n              type=\"natural\"\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n              dot={{\n                fill: \"var(--color-desktop)\",\n              }}\n              activeDot={{\n                r: 6,\n              }}\n            >\n              <LabelList\n                position=\"top\"\n                offset={12}\n                className=\"fill-foreground\"\n                fontSize={12}\n              />\n            </Line>\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-linear.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A linear line chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineLinear() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Linear</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Line\n              dataKey=\"desktop\"\n              type=\"linear\"\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n              dot={false}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-multiple.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A multiple line chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineMultiple() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Multiple</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n            <Line\n              dataKey=\"desktop\"\n              type=\"monotone\"\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n              dot={false}\n            />\n            <Line\n              dataKey=\"mobile\"\n              type=\"monotone\"\n              stroke=\"var(--color-mobile)\"\n              strokeWidth={2}\n              dot={false}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter>\n        <div className=\"flex w-full items-start gap-2 text-sm\">\n          <div className=\"grid gap-2\">\n            <div className=\"flex items-center gap-2 leading-none font-medium\">\n              Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n            </div>\n            <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n              Showing total visitors for the last 6 months\n            </div>\n          </div>\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-line-step.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { CartesianGrid, Line, LineChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A line chart with step\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 73 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartLineStep() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Line Chart - Step</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <LineChart\n            accessibilityLayer\n            data={chartData}\n            margin={{\n              left: 12,\n              right: 12,\n            }}\n          >\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"month\"\n              tickLine={false}\n              axisLine={false}\n              tickMargin={8}\n              tickFormatter={(value) => value.slice(0, 3)}\n            />\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Line\n              dataKey=\"desktop\"\n              type=\"step\"\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n              dot={false}\n            />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col items-start gap-2 text-sm\">\n        <div className=\"flex gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut-active.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Label, Pie, PieChart, Sector } from \"recharts\"\nimport { type PieSectorDataItem } from \"recharts/types/polar/Pie\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A donut chart with an active sector\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieDonutActive() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Donut Active</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie\n              data={chartData}\n              dataKey=\"visitors\"\n              nameKey=\"browser\"\n              innerRadius={60}\n              strokeWidth={5}\n              activeIndex={0}\n              activeShape={({\n                outerRadius = 0,\n                ...props\n              }: PieSectorDataItem) => (\n                <Sector {...props} outerRadius={outerRadius + 10} />\n              )}\n            />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut-text.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { TrendingUp } from \"lucide-react\"\nimport { Label, Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A donut chart with text\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 287, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 190, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieDonutText() {\n  const totalVisitors = React.useMemo(() => {\n    return chartData.reduce((acc, curr) => acc + curr.visitors, 0)\n  }, [])\n\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Donut with Text</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie\n              data={chartData}\n              dataKey=\"visitors\"\n              nameKey=\"browser\"\n              innerRadius={60}\n              strokeWidth={5}\n            >\n              <Label\n                content={({ viewBox }) => {\n                  if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                    return (\n                      <text\n                        x={viewBox.cx}\n                        y={viewBox.cy}\n                        textAnchor=\"middle\"\n                        dominantBaseline=\"middle\"\n                      >\n                        <tspan\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          className=\"fill-foreground text-3xl font-bold\"\n                        >\n                          {totalVisitors.toLocaleString()}\n                        </tspan>\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) + 24}\n                          className=\"fill-muted-foreground\"\n                        >\n                          Visitors\n                        </tspan>\n                      </text>\n                    )\n                  }\n                }}\n              />\n            </Pie>\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-donut.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A donut chart\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieDonut() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Donut</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie\n              data={chartData}\n              dataKey=\"visitors\"\n              nameKey=\"browser\"\n              innerRadius={60}\n            />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-interactive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Label, Pie, PieChart, Sector } from \"recharts\"\nimport { type PieSectorDataItem } from \"recharts/types/polar/Pie\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartStyle,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport const description = \"An interactive pie chart\"\n\nconst desktopData = [\n  { month: \"january\", desktop: 186, fill: \"var(--color-january)\" },\n  { month: \"february\", desktop: 305, fill: \"var(--color-february)\" },\n  { month: \"march\", desktop: 237, fill: \"var(--color-march)\" },\n  { month: \"april\", desktop: 173, fill: \"var(--color-april)\" },\n  { month: \"may\", desktop: 209, fill: \"var(--color-may)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n  },\n  mobile: {\n    label: \"Mobile\",\n  },\n  january: {\n    label: \"January\",\n    color: \"var(--chart-1)\",\n  },\n  february: {\n    label: \"February\",\n    color: \"var(--chart-2)\",\n  },\n  march: {\n    label: \"March\",\n    color: \"var(--chart-3)\",\n  },\n  april: {\n    label: \"April\",\n    color: \"var(--chart-4)\",\n  },\n  may: {\n    label: \"May\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieInteractive() {\n  const id = \"pie-interactive\"\n  const [activeMonth, setActiveMonth] = React.useState(desktopData[0].month)\n\n  const activeIndex = React.useMemo(\n    () => desktopData.findIndex((item) => item.month === activeMonth),\n    [activeMonth]\n  )\n  const months = React.useMemo(() => desktopData.map((item) => item.month), [])\n\n  return (\n    <Card data-chart={id} className=\"flex flex-col\">\n      <ChartStyle id={id} config={chartConfig} />\n      <CardHeader className=\"flex-row items-start space-y-0 pb-0\">\n        <div className=\"grid gap-1\">\n          <CardTitle>Pie Chart - Interactive</CardTitle>\n          <CardDescription>January - June 2024</CardDescription>\n        </div>\n        <Select value={activeMonth} onValueChange={setActiveMonth}>\n          <SelectTrigger\n            className=\"ml-auto h-7 w-[130px] rounded-lg pl-2.5\"\n            aria-label=\"Select a value\"\n          >\n            <SelectValue placeholder=\"Select month\" />\n          </SelectTrigger>\n          <SelectContent align=\"end\" className=\"rounded-xl\">\n            {months.map((key) => {\n              const config = chartConfig[key as keyof typeof chartConfig]\n\n              if (!config) {\n                return null\n              }\n\n              return (\n                <SelectItem\n                  key={key}\n                  value={key}\n                  className=\"rounded-lg [&_span]:flex\"\n                >\n                  <div className=\"flex items-center gap-2 text-xs\">\n                    <span\n                      className=\"flex h-3 w-3 shrink-0 rounded-xs\"\n                      style={{\n                        backgroundColor: `var(--color-${key})`,\n                      }}\n                    />\n                    {config?.label}\n                  </div>\n                </SelectItem>\n              )\n            })}\n          </SelectContent>\n        </Select>\n      </CardHeader>\n      <CardContent className=\"flex flex-1 justify-center pb-0\">\n        <ChartContainer\n          id={id}\n          config={chartConfig}\n          className=\"mx-auto aspect-square w-full max-w-[300px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie\n              data={desktopData}\n              dataKey=\"desktop\"\n              nameKey=\"month\"\n              innerRadius={60}\n              strokeWidth={5}\n              activeIndex={activeIndex}\n              activeShape={({\n                outerRadius = 0,\n                ...props\n              }: PieSectorDataItem) => (\n                <g>\n                  <Sector {...props} outerRadius={outerRadius + 10} />\n                  <Sector\n                    {...props}\n                    outerRadius={outerRadius + 25}\n                    innerRadius={outerRadius + 12}\n                  />\n                </g>\n              )}\n            >\n              <Label\n                content={({ viewBox }) => {\n                  if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                    return (\n                      <text\n                        x={viewBox.cx}\n                        y={viewBox.cy}\n                        textAnchor=\"middle\"\n                        dominantBaseline=\"middle\"\n                      >\n                        <tspan\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          className=\"fill-foreground text-3xl font-bold\"\n                        >\n                          {desktopData[activeIndex].desktop.toLocaleString()}\n                        </tspan>\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) + 24}\n                          className=\"fill-muted-foreground\"\n                        >\n                          Visitors\n                        </tspan>\n                      </text>\n                    )\n                  }\n                }}\n              />\n            </Pie>\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label-custom.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A pie chart with a custom label\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieLabelCustom() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Custom Label</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px] px-0\"\n        >\n          <PieChart>\n            <ChartTooltip\n              content={<ChartTooltipContent nameKey=\"visitors\" hideLabel />}\n            />\n            <Pie\n              data={chartData}\n              dataKey=\"visitors\"\n              labelLine={false}\n              label={({ payload, ...props }) => {\n                return (\n                  <text\n                    cx={props.cx}\n                    cy={props.cy}\n                    x={props.x}\n                    y={props.y}\n                    textAnchor={props.textAnchor}\n                    dominantBaseline={props.dominantBaseline}\n                    fill=\"hsla(var(--foreground))\"\n                  >\n                    {payload.visitors}\n                  </text>\n                )\n              }}\n              nameKey=\"browser\"\n            />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label-list.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { LabelList, Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A pie chart with a label list\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieLabelList() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Label List</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px] [&_.recharts-text]:fill-background\"\n        >\n          <PieChart>\n            <ChartTooltip\n              content={<ChartTooltipContent nameKey=\"visitors\" hideLabel />}\n            />\n            <Pie data={chartData} dataKey=\"visitors\">\n              <LabelList\n                dataKey=\"browser\"\n                className=\"fill-background\"\n                stroke=\"none\"\n                fontSize={12}\n                formatter={(value: keyof typeof chartConfig) =>\n                  chartConfig[value]?.label\n                }\n              />\n            </Pie>\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-label.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A pie chart with a label\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieLabel() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Label</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px] pb-0 [&_.recharts-pie-label-text]:fill-foreground\"\n        >\n          <PieChart>\n            <ChartTooltip content={<ChartTooltipContent hideLabel />} />\n            <Pie data={chartData} dataKey=\"visitors\" label nameKey=\"browser\" />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-legend.tsx",
    "content": "\"use client\"\n\nimport { Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A pie chart with a legend\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieLegend() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Legend</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[300px]\"\n        >\n          <PieChart>\n            <Pie data={chartData} dataKey=\"visitors\" />\n            <ChartLegend\n              content={<ChartLegendContent nameKey=\"browser\" />}\n              className=\"-translate-y-2 flex-wrap gap-2 *:basis-1/4 *:justify-center\"\n            />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-separator-none.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A pie chart with no separator\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieSeparatorNone() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Separator None</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie\n              data={chartData}\n              dataKey=\"visitors\"\n              nameKey=\"browser\"\n              stroke=\"0\"\n            />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-simple.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A simple pie chart\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieSimple() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <Pie data={chartData} dataKey=\"visitors\" nameKey=\"browser\" />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-pie-stacked.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { TrendingUp } from \"lucide-react\"\nimport { Label, Pie, PieChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A pie chart with stacked sections\"\n\nconst desktopData = [\n  { month: \"january\", desktop: 186, fill: \"var(--color-january)\" },\n  { month: \"february\", desktop: 305, fill: \"var(--color-february)\" },\n  { month: \"march\", desktop: 237, fill: \"var(--color-march)\" },\n  { month: \"april\", desktop: 173, fill: \"var(--color-april)\" },\n  { month: \"may\", desktop: 209, fill: \"var(--color-may)\" },\n]\n\nconst mobileData = [\n  { month: \"january\", mobile: 80, fill: \"var(--color-january)\" },\n  { month: \"february\", mobile: 200, fill: \"var(--color-february)\" },\n  { month: \"march\", mobile: 120, fill: \"var(--color-march)\" },\n  { month: \"april\", mobile: 190, fill: \"var(--color-april)\" },\n  { month: \"may\", mobile: 130, fill: \"var(--color-may)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  desktop: {\n    label: \"Desktop\",\n  },\n  mobile: {\n    label: \"Mobile\",\n  },\n  january: {\n    label: \"January\",\n    color: \"var(--chart-1)\",\n  },\n  february: {\n    label: \"February\",\n    color: \"var(--chart-2)\",\n  },\n  march: {\n    label: \"March\",\n    color: \"var(--chart-3)\",\n  },\n  april: {\n    label: \"April\",\n    color: \"var(--chart-4)\",\n  },\n  may: {\n    label: \"May\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartPieStacked() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Pie Chart - Stacked</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <PieChart>\n            <ChartTooltip\n              content={\n                <ChartTooltipContent\n                  labelKey=\"visitors\"\n                  nameKey=\"month\"\n                  indicator=\"line\"\n                  labelFormatter={(_, payload) => {\n                    return chartConfig[\n                      payload?.[0].dataKey as keyof typeof chartConfig\n                    ].label\n                  }}\n                />\n              }\n            />\n            <Pie data={desktopData} dataKey=\"desktop\" outerRadius={60} />\n            <Pie\n              data={mobileData}\n              dataKey=\"mobile\"\n              innerRadius={70}\n              outerRadius={90}\n            />\n          </PieChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-default.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 273 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarDefault() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n            <PolarAngleAxis dataKey=\"month\" />\n            <PolarGrid />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-dots.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with dots\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 273 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarDots() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center\">\n        <CardTitle>Radar Chart - Dots</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n            <PolarAngleAxis dataKey=\"month\" />\n            <PolarGrid />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n              dot={{\n                r: 4,\n                fillOpacity: 1,\n              }}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle-fill.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with a grid and circle fill\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 285 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 203 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 264 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarGridCircleFill() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Grid Circle Filled</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip cursor={false} content={<ChartTooltipContent />} />\n            <PolarGrid\n              className=\"fill-(--color-desktop) opacity-20\"\n              gridType=\"circle\"\n            />\n            <PolarAngleAxis dataKey=\"month\" />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.5}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle-no-lines.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with a grid and circle fill\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 203 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarGridCircleNoLines() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Grid Circle - No lines</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <PolarGrid gridType=\"circle\" radialLines={false} />\n            <PolarAngleAxis dataKey=\"month\" />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n              dot={{\n                r: 4,\n                fillOpacity: 1,\n              }}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-circle.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with a grid and circle\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 273 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarGridCircle() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Grid Circle</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <PolarGrid gridType=\"circle\" />\n            <PolarAngleAxis dataKey=\"month\" />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n              dot={{\n                r: 4,\n                fillOpacity: 1,\n              }}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-custom.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with a custom grid\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 273 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarGridCustom() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Grid Custom</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <PolarGrid radialLines={false} polarRadius={[90]} strokeWidth={1} />\n            <PolarAngleAxis dataKey=\"month\" />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-fill.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with a grid filled\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 285 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 203 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 264 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarGridFill() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Grid Filled</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <PolarGrid className=\"fill-(--color-desktop) opacity-20\" />\n            <PolarAngleAxis dataKey=\"month\" />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.5}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-grid-none.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with no grid\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186 },\n  { month: \"February\", desktop: 305 },\n  { month: \"March\", desktop: 237 },\n  { month: \"April\", desktop: 273 },\n  { month: \"May\", desktop: 209 },\n  { month: \"June\", desktop: 214 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarGridNone() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Grid None</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <PolarAngleAxis dataKey=\"month\" />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n              dot={{\n                r: 4,\n                fillOpacity: 1,\n              }}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-icons.tsx",
    "content": "\"use client\"\n\nimport { ArrowDownFromLine, ArrowUpFromLine, TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with icons\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n    icon: ArrowDownFromLine,\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n    icon: ArrowUpFromLine,\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarIcons() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Icons</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart\n            data={chartData}\n            margin={{\n              top: -40,\n              bottom: -10,\n            }}\n          >\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <PolarAngleAxis dataKey=\"month\" />\n            <PolarGrid />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n            />\n            <Radar dataKey=\"mobile\" fill=\"var(--color-mobile)\" />\n            <ChartLegend className=\"mt-8\" content={<ChartLegendContent />} />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 pt-4 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-label-custom.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with a custom label\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarLabelCustom() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Custom Label</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart\n            data={chartData}\n            margin={{\n              top: 10,\n              right: 10,\n              bottom: 10,\n              left: 10,\n            }}\n          >\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <PolarAngleAxis\n              dataKey=\"month\"\n              tick={({ x, y, textAnchor, value, index, ...props }) => {\n                const data = chartData[index]\n\n                return (\n                  <text\n                    x={x}\n                    y={index === 0 ? y - 10 : y}\n                    textAnchor={textAnchor}\n                    fontSize={13}\n                    fontWeight={500}\n                    {...props}\n                  >\n                    <tspan>{data.desktop}</tspan>\n                    <tspan className=\"fill-muted-foreground\">/</tspan>\n                    <tspan>{data.mobile}</tspan>\n                    <tspan\n                      x={x}\n                      dy={\"1rem\"}\n                      fontSize={12}\n                      className=\"fill-muted-foreground\"\n                    >\n                      {data.month}\n                    </tspan>\n                  </text>\n                )\n              }}\n            />\n\n            <PolarGrid />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n            />\n            <Radar dataKey=\"mobile\" fill=\"var(--color-mobile)\" />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-legend.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with a legend\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarLegend() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center\">\n        <CardTitle>Radar Chart - Legend</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart\n            data={chartData}\n            margin={{\n              top: -40,\n              bottom: -10,\n            }}\n          >\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <PolarAngleAxis dataKey=\"month\" />\n            <PolarGrid />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n            />\n            <Radar dataKey=\"mobile\" fill=\"var(--color-mobile)\" />\n            <ChartLegend className=\"mt-8\" content={<ChartLegendContent />} />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 pt-4 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-lines-only.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with lines only\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 160 },\n  { month: \"February\", desktop: 185, mobile: 170 },\n  { month: \"March\", desktop: 207, mobile: 180 },\n  { month: \"April\", desktop: 173, mobile: 160 },\n  { month: \"May\", desktop: 160, mobile: 190 },\n  { month: \"June\", desktop: 174, mobile: 204 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarLinesOnly() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Lines Only</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <PolarAngleAxis dataKey=\"month\" />\n            <PolarGrid radialLines={false} />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0}\n              stroke=\"var(--color-desktop)\"\n              strokeWidth={2}\n            />\n            <Radar\n              dataKey=\"mobile\"\n              fill=\"var(--color-mobile)\"\n              fillOpacity={0}\n              stroke=\"var(--color-mobile)\"\n              strokeWidth={2}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-multiple.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with multiple data\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarMultiple() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Multiple</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            <PolarAngleAxis dataKey=\"month\" />\n            <PolarGrid />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n            />\n            <Radar dataKey=\"mobile\" fill=\"var(--color-mobile)\" />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radar-radius.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport {\n  PolarAngleAxis,\n  PolarGrid,\n  PolarRadiusAxis,\n  Radar,\n  RadarChart,\n} from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radar chart with a radius axis\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadarRadius() {\n  return (\n    <Card>\n      <CardHeader className=\"items-center pb-4\">\n        <CardTitle>Radar Chart - Radius Axis</CardTitle>\n        <CardDescription>\n          Showing total visitors for the last 6 months\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadarChart data={chartData}>\n            <ChartTooltip\n              cursor={false}\n              content={\n                <ChartTooltipContent indicator=\"line\" labelKey=\"month\" />\n              }\n            />\n            <PolarGrid />\n            <Radar\n              dataKey=\"desktop\"\n              fill=\"var(--color-desktop)\"\n              fillOpacity={0.6}\n            />\n            <Radar dataKey=\"mobile\" fill=\"var(--color-mobile)\" />\n            <PolarRadiusAxis\n              angle={60}\n              stroke=\"hsla(var(--foreground))\"\n              orientation=\"middle\"\n              axisLine={false}\n            />\n          </RadarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"flex items-center gap-2 leading-none text-muted-foreground\">\n          January - June 2024\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radial-grid.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { PolarGrid, RadialBar, RadialBarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radial chart with a grid\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadialGrid() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Radial Chart - Grid</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadialBarChart data={chartData} innerRadius={30} outerRadius={100}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel nameKey=\"browser\" />}\n            />\n            <PolarGrid gridType=\"circle\" />\n            <RadialBar dataKey=\"visitors\" />\n          </RadialBarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radial-label.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { LabelList, RadialBar, RadialBarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radial chart with a label\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadialLabel() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Radial Chart - Label</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadialBarChart\n            data={chartData}\n            startAngle={-90}\n            endAngle={380}\n            innerRadius={30}\n            outerRadius={110}\n          >\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel nameKey=\"browser\" />}\n            />\n            <RadialBar dataKey=\"visitors\" background>\n              <LabelList\n                position=\"insideStart\"\n                dataKey=\"browser\"\n                className=\"fill-white capitalize mix-blend-luminosity\"\n                fontSize={11}\n              />\n            </RadialBar>\n          </RadialBarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radial-shape.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport {\n  Label,\n  PolarGrid,\n  PolarRadiusAxis,\n  RadialBar,\n  RadialBarChart,\n} from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radial chart with a custom shape\"\n\nconst chartData = [\n  { browser: \"safari\", visitors: 1260, fill: \"var(--color-safari)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadialShape() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Radial Chart - Shape</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadialBarChart\n            data={chartData}\n            endAngle={100}\n            innerRadius={80}\n            outerRadius={140}\n          >\n            <PolarGrid\n              gridType=\"circle\"\n              radialLines={false}\n              stroke=\"none\"\n              className=\"first:fill-muted last:fill-background\"\n              polarRadius={[86, 74]}\n            />\n            <RadialBar dataKey=\"visitors\" background />\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\n              <Label\n                content={({ viewBox }) => {\n                  if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                    return (\n                      <text\n                        x={viewBox.cx}\n                        y={viewBox.cy}\n                        textAnchor=\"middle\"\n                        dominantBaseline=\"middle\"\n                      >\n                        <tspan\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          className=\"fill-foreground text-4xl font-bold\"\n                        >\n                          {chartData[0].visitors.toLocaleString()}\n                        </tspan>\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) + 24}\n                          className=\"fill-muted-foreground\"\n                        >\n                          Visitors\n                        </tspan>\n                      </text>\n                    )\n                  }\n                }}\n              />\n            </PolarRadiusAxis>\n          </RadialBarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radial-simple.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { RadialBar, RadialBarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radial chart\"\n\nconst chartData = [\n  { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n  { browser: \"firefox\", visitors: 187, fill: \"var(--color-firefox)\" },\n  { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n  { browser: \"other\", visitors: 90, fill: \"var(--color-other)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  chrome: {\n    label: \"Chrome\",\n    color: \"var(--chart-1)\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n  firefox: {\n    label: \"Firefox\",\n    color: \"var(--chart-3)\",\n  },\n  edge: {\n    label: \"Edge\",\n    color: \"var(--chart-4)\",\n  },\n  other: {\n    label: \"Other\",\n    color: \"var(--chart-5)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadialSimple() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Radial Chart</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadialBarChart data={chartData} innerRadius={30} outerRadius={110}>\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel nameKey=\"browser\" />}\n            />\n            <RadialBar dataKey=\"visitors\" background />\n          </RadialBarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radial-stacked.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport { Label, PolarRadiusAxis, RadialBar, RadialBarChart } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radial chart with stacked sections\"\n\nconst chartData = [{ month: \"january\", desktop: 1260, mobile: 570 }]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"var(--chart-1)\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadialStacked() {\n  const totalVisitors = chartData[0].desktop + chartData[0].mobile\n\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Radial Chart - Stacked</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-1 items-center pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square w-full max-w-[250px]\"\n        >\n          <RadialBarChart\n            data={chartData}\n            endAngle={180}\n            innerRadius={80}\n            outerRadius={130}\n          >\n            <ChartTooltip\n              cursor={false}\n              content={<ChartTooltipContent hideLabel />}\n            />\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\n              <Label\n                content={({ viewBox }) => {\n                  if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                    return (\n                      <text x={viewBox.cx} y={viewBox.cy} textAnchor=\"middle\">\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) - 16}\n                          className=\"fill-foreground text-2xl font-bold\"\n                        >\n                          {totalVisitors.toLocaleString()}\n                        </tspan>\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) + 4}\n                          className=\"fill-muted-foreground\"\n                        >\n                          Visitors\n                        </tspan>\n                      </text>\n                    )\n                  }\n                }}\n              />\n            </PolarRadiusAxis>\n            <RadialBar\n              dataKey=\"desktop\"\n              stackId=\"a\"\n              cornerRadius={5}\n              fill=\"var(--color-desktop)\"\n              className=\"stroke-transparent stroke-2\"\n            />\n            <RadialBar\n              dataKey=\"mobile\"\n              fill=\"var(--color-mobile)\"\n              stackId=\"a\"\n              cornerRadius={5}\n              className=\"stroke-transparent stroke-2\"\n            />\n          </RadialBarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-radial-text.tsx",
    "content": "\"use client\"\n\nimport { TrendingUp } from \"lucide-react\"\nimport {\n  Label,\n  PolarGrid,\n  PolarRadiusAxis,\n  RadialBar,\n  RadialBarChart,\n} from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A radial chart with text\"\n\nconst chartData = [\n  { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n]\n\nconst chartConfig = {\n  visitors: {\n    label: \"Visitors\",\n  },\n  safari: {\n    label: \"Safari\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartRadialText() {\n  return (\n    <Card className=\"flex flex-col\">\n      <CardHeader className=\"items-center pb-0\">\n        <CardTitle>Radial Chart - Text</CardTitle>\n        <CardDescription>January - June 2024</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex-1 pb-0\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"mx-auto aspect-square max-h-[250px]\"\n        >\n          <RadialBarChart\n            data={chartData}\n            startAngle={0}\n            endAngle={250}\n            innerRadius={80}\n            outerRadius={110}\n          >\n            <PolarGrid\n              gridType=\"circle\"\n              radialLines={false}\n              stroke=\"none\"\n              className=\"first:fill-muted last:fill-background\"\n              polarRadius={[86, 74]}\n            />\n            <RadialBar dataKey=\"visitors\" background cornerRadius={10} />\n            <PolarRadiusAxis tick={false} tickLine={false} axisLine={false}>\n              <Label\n                content={({ viewBox }) => {\n                  if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                    return (\n                      <text\n                        x={viewBox.cx}\n                        y={viewBox.cy}\n                        textAnchor=\"middle\"\n                        dominantBaseline=\"middle\"\n                      >\n                        <tspan\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          className=\"fill-foreground text-4xl font-bold\"\n                        >\n                          {chartData[0].visitors.toLocaleString()}\n                        </tspan>\n                        <tspan\n                          x={viewBox.cx}\n                          y={(viewBox.cy || 0) + 24}\n                          className=\"fill-muted-foreground\"\n                        >\n                          Visitors\n                        </tspan>\n                      </text>\n                    )\n                  }\n                }}\n              />\n            </PolarRadiusAxis>\n          </RadialBarChart>\n        </ChartContainer>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2 text-sm\">\n        <div className=\"flex items-center gap-2 leading-none font-medium\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div>\n        <div className=\"leading-none text-muted-foreground\">\n          Showing total visitors for the last 6 months\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-advanced.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipAdvanced() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - Advanced</CardTitle>\n        <CardDescription>\n          Tooltip with custom formatter and total.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={\n                <ChartTooltipContent\n                  hideLabel\n                  className=\"w-[180px]\"\n                  formatter={(value, name, item, index) => (\n                    <>\n                      <div\n                        className=\"h-2.5 w-2.5 shrink-0 rounded-[2px] bg-(--color-bg)\"\n                        style={\n                          {\n                            \"--color-bg\": `var(--color-${name})`,\n                          } as React.CSSProperties\n                        }\n                      />\n                      {chartConfig[name as keyof typeof chartConfig]?.label ||\n                        name}\n                      <div className=\"ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums\">\n                        {value}\n                        <span className=\"font-normal text-muted-foreground\">\n                          kcal\n                        </span>\n                      </div>\n                      {/* Add this after the last item */}\n                      {index === 1 && (\n                        <div className=\"mt-1.5 flex basis-full items-center border-t pt-1.5 text-xs font-medium text-foreground\">\n                          Total\n                          <div className=\"ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums\">\n                            {item.payload.running + item.payload.swimming}\n                            <span className=\"font-normal text-muted-foreground\">\n                              kcal\n                            </span>\n                          </div>\n                        </div>\n                      )}\n                    </>\n                  )}\n                />\n              }\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-default.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\nexport const iframeHeight = \"600px\"\nexport const containerClassName =\n  \"[&>div]:w-full [&>div]:max-w-md flex items-center justify-center min-h-svh\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipDefault() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - Default</CardTitle>\n        <CardDescription>\n          Default tooltip with ChartTooltipContent.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={<ChartTooltipContent />}\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-formatter.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipFormatter() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - Formatter</CardTitle>\n        <CardDescription>Tooltip with custom formatter .</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={\n                <ChartTooltipContent\n                  hideLabel\n                  formatter={(value, name) => (\n                    <div className=\"flex min-w-[130px] items-center text-xs text-muted-foreground\">\n                      {chartConfig[name as keyof typeof chartConfig]?.label ||\n                        name}\n                      <div className=\"ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums\">\n                        {value}\n                        <span className=\"font-normal text-muted-foreground\">\n                          kcal\n                        </span>\n                      </div>\n                    </div>\n                  )}\n                />\n              }\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-icons.tsx",
    "content": "\"use client\"\n\nimport { Footprints, Waves } from \"lucide-react\"\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n    icon: Footprints,\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n    icon: Waves,\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipIcons() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - Icons</CardTitle>\n        <CardDescription>Tooltip with icons.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={<ChartTooltipContent hideLabel />}\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-indicator-line.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\nexport const iframeHeight = \"600px\"\nexport const containerClassName =\n  \"[&>div]:w-full [&>div]:max-w-md flex items-center justify-center min-h-svh\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipIndicatorLine() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - Line Indicator</CardTitle>\n        <CardDescription>Tooltip with line indicator.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={<ChartTooltipContent indicator=\"line\" />}\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-indicator-none.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipIndicatorNone() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - No Indicator</CardTitle>\n        <CardDescription>Tooltip with no indicator.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={<ChartTooltipContent hideIndicator />}\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-custom.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  activities: {\n    label: \"Activities\",\n  },\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipLabelCustom() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - Custom label</CardTitle>\n        <CardDescription>\n          Tooltip with custom label from chartConfig.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={\n                <ChartTooltipContent labelKey=\"activities\" indicator=\"line\" />\n              }\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-formatter.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipLabelFormatter() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - Label Formatter</CardTitle>\n        <CardDescription>Tooltip with label formatter.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={\n                <ChartTooltipContent\n                  labelFormatter={(value) => {\n                    return new Date(value).toLocaleDateString(\"en-US\", {\n                      day: \"numeric\",\n                      month: \"long\",\n                      year: \"numeric\",\n                    })\n                  }}\n                />\n              }\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/charts/chart-tooltip-label-none.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, XAxis } from \"recharts\"\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nexport const description = \"A stacked bar chart with a legend\"\n\nconst chartData = [\n  { date: \"2024-07-15\", running: 450, swimming: 300 },\n  { date: \"2024-07-16\", running: 380, swimming: 420 },\n  { date: \"2024-07-17\", running: 520, swimming: 120 },\n  { date: \"2024-07-18\", running: 140, swimming: 550 },\n  { date: \"2024-07-19\", running: 600, swimming: 350 },\n  { date: \"2024-07-20\", running: 480, swimming: 400 },\n]\n\nconst chartConfig = {\n  running: {\n    label: \"Running\",\n    color: \"var(--chart-1)\",\n  },\n  swimming: {\n    label: \"Swimming\",\n    color: \"var(--chart-2)\",\n  },\n} satisfies ChartConfig\n\nexport function ChartTooltipLabelNone() {\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>Tooltip - No Label</CardTitle>\n        <CardDescription>Tooltip with no label.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <ChartContainer config={chartConfig}>\n          <BarChart accessibilityLayer data={chartData}>\n            <XAxis\n              dataKey=\"date\"\n              tickLine={false}\n              tickMargin={10}\n              axisLine={false}\n              tickFormatter={(value) => {\n                return new Date(value).toLocaleDateString(\"en-US\", {\n                  weekday: \"short\",\n                })\n              }}\n            />\n            <Bar\n              dataKey=\"running\"\n              stackId=\"a\"\n              fill=\"var(--color-running)\"\n              radius={[0, 0, 4, 4]}\n            />\n            <Bar\n              dataKey=\"swimming\"\n              stackId=\"a\"\n              fill=\"var(--color-swimming)\"\n              radius={[4, 4, 0, 0]}\n            />\n            <ChartTooltip\n              content={<ChartTooltipContent hideIndicator hideLabel />}\n              cursor={false}\n              defaultIndex={1}\n            />\n          </BarChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const examples: Registry[\"items\"] = [\n  {\n    name: \"accordion-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"accordion\"],\n    files: [\n      {\n        path: \"examples/accordion-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"alert-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"alert\"],\n    files: [\n      {\n        path: \"examples/alert-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"alert-destructive\",\n    type: \"registry:example\",\n    registryDependencies: [\"alert\"],\n    files: [\n      {\n        path: \"examples/alert-destructive.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"alert-dialog-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"alert-dialog\", \"button\"],\n    files: [\n      {\n        path: \"examples/alert-dialog-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"aspect-ratio-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"aspect-ratio\"],\n    files: [\n      {\n        path: \"examples/aspect-ratio-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"avatar-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"avatar\"],\n    files: [\n      {\n        path: \"examples/avatar-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"badge-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"badge\"],\n    files: [\n      {\n        path: \"examples/badge-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"badge-destructive\",\n    type: \"registry:example\",\n    registryDependencies: [\"badge\"],\n    files: [\n      {\n        path: \"examples/badge-destructive.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"badge-outline\",\n    type: \"registry:example\",\n    registryDependencies: [\"badge\"],\n    files: [\n      {\n        path: \"examples/badge-outline.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"badge-secondary\",\n    type: \"registry:example\",\n    registryDependencies: [\"badge\"],\n    files: [\n      {\n        path: \"examples/badge-secondary.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"breadcrumb\"],\n    files: [\n      {\n        path: \"examples/breadcrumb-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb-separator\",\n    type: \"registry:example\",\n    registryDependencies: [\"breadcrumb\"],\n    files: [\n      {\n        path: \"examples/breadcrumb-separator.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb-dropdown\",\n    type: \"registry:example\",\n    registryDependencies: [\"breadcrumb\"],\n    files: [\n      {\n        path: \"examples/breadcrumb-dropdown.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb-ellipsis\",\n    type: \"registry:example\",\n    registryDependencies: [\"breadcrumb\"],\n    files: [\n      {\n        path: \"examples/breadcrumb-ellipsis.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb-link\",\n    type: \"registry:example\",\n    registryDependencies: [\"breadcrumb\"],\n    files: [\n      {\n        path: \"examples/breadcrumb-link.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb-responsive\",\n    type: \"registry:example\",\n    registryDependencies: [\"breadcrumb\"],\n    files: [\n      {\n        path: \"examples/breadcrumb-responsive.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-default\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-default.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-secondary\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-secondary.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-destructive\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-destructive.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-outline\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-outline.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-ghost\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-ghost.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-link\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-link.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-with-icon\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-with-icon.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-loading\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-loading.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-icon\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-icon.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-as-child\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-as-child.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-rounded\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-rounded.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-size\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"examples/button-size.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-nested\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-nested.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-size\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-size.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-separator\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-separator.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-split\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-split.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-input\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-input.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-dropdown\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-dropdown.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-select\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-select.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-popover\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-popover.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-input-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-input-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"button-group-orientation\",\n    type: \"registry:example\",\n    registryDependencies: [\"button-group\"],\n    files: [\n      {\n        path: \"examples/button-group-orientation.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"calendar-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"calendar\"],\n    files: [\n      {\n        path: \"examples/calendar-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"card-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"card\", \"button\", \"switch\"],\n    files: [\n      {\n        path: \"examples/card-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"card-with-form\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"select\"],\n    files: [\n      {\n        path: \"examples/card-with-form.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"carousel-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"carousel\"],\n    files: [\n      {\n        path: \"examples/carousel-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"carousel-size\",\n    type: \"registry:example\",\n    registryDependencies: [\"carousel\"],\n    files: [\n      {\n        path: \"examples/carousel-size.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"carousel-spacing\",\n    type: \"registry:example\",\n    registryDependencies: [\"carousel\"],\n    files: [\n      {\n        path: \"examples/carousel-spacing.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"carousel-orientation\",\n    type: \"registry:example\",\n    registryDependencies: [\"carousel\"],\n    files: [\n      {\n        path: \"examples/carousel-orientation.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"carousel-api\",\n    type: \"registry:example\",\n    registryDependencies: [\"carousel\"],\n    files: [\n      {\n        path: \"examples/carousel-api.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"carousel-plugin\",\n    type: \"registry:example\",\n    registryDependencies: [\"carousel\"],\n    files: [\n      {\n        path: \"examples/carousel-plugin.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"checkbox-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"checkbox\"],\n    files: [\n      {\n        path: \"examples/checkbox-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"checkbox-disabled\",\n    type: \"registry:example\",\n    registryDependencies: [\"checkbox\"],\n    files: [\n      {\n        path: \"examples/checkbox-disabled.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"checkbox-with-text\",\n    type: \"registry:example\",\n    registryDependencies: [\"checkbox\"],\n    files: [\n      {\n        path: \"examples/checkbox-with-text.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"collapsible-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"collapsible\"],\n    files: [\n      {\n        path: \"examples/collapsible-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"combobox-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"command\"],\n    files: [\n      {\n        path: \"examples/combobox-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"combobox-dropdown-menu\",\n    type: \"registry:example\",\n    registryDependencies: [\"command\", \"dropdown-menu\", \"button\"],\n    files: [\n      {\n        path: \"examples/combobox-dropdown-menu.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"combobox-popover\",\n    type: \"registry:example\",\n    registryDependencies: [\"combobox\", \"popover\"],\n    files: [\n      {\n        path: \"examples/combobox-popover.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"combobox-responsive\",\n    type: \"registry:example\",\n    registryDependencies: [\"combobox\", \"popover\", \"drawer\"],\n    files: [\n      {\n        path: \"examples/combobox-responsive.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"command-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"command\"],\n    files: [\n      {\n        path: \"examples/command-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"command-dialog\",\n    type: \"registry:example\",\n    registryDependencies: [\"command\", \"dialog\"],\n    files: [\n      {\n        path: \"examples/command-dialog.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"context-menu-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"context-menu\"],\n    files: [\n      {\n        path: \"examples/context-menu-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"data-table-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"data-table\"],\n    files: [\n      {\n        path: \"examples/data-table-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"date-picker-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"calendar\", \"popover\"],\n    files: [\n      {\n        path: \"examples/date-picker-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"date-fns\"],\n  },\n  {\n    name: \"date-picker-with-presets\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"calendar\", \"popover\", \"select\"],\n    files: [\n      {\n        path: \"examples/date-picker-with-presets.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"date-fns\"],\n  },\n  {\n    name: \"date-picker-with-range\",\n    type: \"registry:example\",\n    registryDependencies: [\"button\", \"calendar\", \"popover\"],\n    files: [\n      {\n        path: \"examples/date-picker-with-range.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"date-fns\"],\n  },\n  {\n    name: \"dialog-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"dialog\"],\n    files: [\n      {\n        path: \"examples/dialog-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dialog-close-button\",\n    type: \"registry:example\",\n    registryDependencies: [\"dialog\", \"button\"],\n    files: [\n      {\n        path: \"examples/dialog-close-button.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"drawer-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"drawer\"],\n    files: [\n      {\n        path: \"examples/drawer-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"empty\", \"button\"],\n    files: [\n      {\n        path: \"examples/empty-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-icon\",\n    type: \"registry:example\",\n    registryDependencies: [\"empty\"],\n    files: [\n      {\n        path: \"examples/empty-icon.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-avatar\",\n    type: \"registry:example\",\n    registryDependencies: [\"empty\", \"button\", \"avatar\"],\n    files: [\n      {\n        path: \"examples/empty-avatar.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-avatar-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"empty\", \"button\", \"avatar\"],\n    files: [\n      {\n        path: \"examples/empty-avatar-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-input-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"empty\", \"button\", \"input\"],\n    files: [\n      {\n        path: \"examples/empty-input-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-outline\",\n    type: \"registry:example\",\n    registryDependencies: [\"empty\", \"button\"],\n    files: [\n      {\n        path: \"examples/empty-outline.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"empty-background\",\n    type: \"registry:example\",\n    registryDependencies: [\"empty\"],\n    files: [\n      {\n        path: \"examples/empty-background.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-input\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-input.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-textarea\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-textarea.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-fieldset\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-fieldset.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-radio\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-radio.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-checkbox\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-checkbox.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-switch\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-switch.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-slider\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-slider.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-select\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-select.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-choice-card\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-choice-card.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"field-responsive\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\"],\n    files: [\n      {\n        path: \"examples/field-responsive.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"form-next-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"field\",\n      \"input\",\n      \"textarea\",\n      \"button\",\n      \"card\",\n      \"spinner\",\n    ],\n    files: [\n      {\n        path: \"examples/form-next-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"form-next-complex\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"field\",\n      \"input\",\n      \"textarea\",\n      \"button\",\n      \"card\",\n      \"spinner\",\n      \"checkbox\",\n      \"dialog\",\n      \"radio-group\",\n      \"select\",\n      \"switch\",\n    ],\n    files: [\n      {\n        path: \"examples/form-next-complex.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"form-rhf-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"input\", \"input-group\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-rhf-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-input\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"input\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-rhf-input.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-select\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"select\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-rhf-select.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-checkbox\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"checkbox\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-rhf-checkbox.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-switch\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"switch\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-rhf-switch.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-textarea\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"textarea\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-rhf-textarea.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-radiogroup\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"radio-group\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-rhf-radiogroup.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-array\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"input\", \"input-group\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-rhf-array.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-complex\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"field\",\n      \"button\",\n      \"card\",\n      \"checkbox\",\n      \"radio-group\",\n      \"select\",\n      \"switch\",\n    ],\n    files: [\n      {\n        path: \"examples/form-rhf-complex.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-rhf-password\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"field\",\n      \"input-group\",\n      \"progress\",\n      \"button\",\n      \"card\",\n    ],\n    files: [\n      {\n        path: \"examples/form-rhf-password.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"input\", \"input-group\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-tanstack-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-input\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"input\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-tanstack-input.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-textarea\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"textarea\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-tanstack-textarea.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-select\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"select\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-tanstack-select.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-checkbox\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"checkbox\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-tanstack-checkbox.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-switch\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"switch\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-tanstack-switch.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-radiogroup\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"radio-group\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-tanstack-radiogroup.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-array\",\n    type: \"registry:example\",\n    registryDependencies: [\"field\", \"input\", \"input-group\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"examples/form-tanstack-array.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"form-tanstack-complex\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"field\",\n      \"button\",\n      \"card\",\n      \"checkbox\",\n      \"radio-group\",\n      \"select\",\n      \"switch\",\n    ],\n    files: [\n      {\n        path: \"examples/form-tanstack-complex.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    dependencies: [\"@tanstack/react-form\", \"zod\"],\n  },\n  {\n    name: \"drawer-dialog\",\n    type: \"registry:example\",\n    registryDependencies: [\"drawer\", \"dialog\"],\n    files: [\n      {\n        path: \"examples/drawer-dialog.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dropdown-menu-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"dropdown-menu\"],\n    files: [\n      {\n        path: \"examples/dropdown-menu-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dropdown-menu-checkboxes\",\n    type: \"registry:example\",\n    registryDependencies: [\"dropdown-menu\", \"checkbox\"],\n    files: [\n      {\n        path: \"examples/dropdown-menu-checkboxes.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dropdown-menu-radio-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"dropdown-menu\", \"radio-group\"],\n    files: [\n      {\n        path: \"examples/dropdown-menu-radio-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"dropdown-menu-dialog\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"dropdown-menu\",\n      \"dialog\",\n      \"button\",\n      \"input\",\n      \"label\",\n    ],\n    files: [\n      {\n        path: \"examples/dropdown-menu-dialog.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"hover-card-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"hover-card\"],\n    files: [\n      {\n        path: \"examples/hover-card-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"input\"],\n    files: [\n      {\n        path: \"examples/input-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-disabled\",\n    type: \"registry:example\",\n    registryDependencies: [\"input\"],\n    files: [\n      {\n        path: \"examples/input-disabled.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-file\",\n    type: \"registry:example\",\n    registryDependencies: [\"input\"],\n    files: [\n      {\n        path: \"examples/input-file.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-with-button\",\n    type: \"registry:example\",\n    registryDependencies: [\"input\", \"button\"],\n    files: [\n      {\n        path: \"examples/input-with-button.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-with-label\",\n    type: \"registry:example\",\n    registryDependencies: [\"input\", \"button\", \"label\"],\n    files: [\n      {\n        path: \"examples/input-with-label.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-with-text\",\n    type: \"registry:example\",\n    registryDependencies: [\"input\", \"button\", \"label\"],\n    files: [\n      {\n        path: \"examples/input-with-text.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\"],\n    files: [\n      {\n        path: \"examples/input-group-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-label\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\", \"label\"],\n    files: [\n      {\n        path: \"examples/input-group-label.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-text\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\"],\n    files: [\n      {\n        path: \"examples/input-group-text.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-tooltip\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\", \"tooltip\"],\n    files: [\n      {\n        path: \"examples/input-group-tooltip.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-button\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\"],\n    files: [\n      {\n        path: \"examples/input-group-button.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-button-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\", \"button-group\"],\n    files: [\n      {\n        path: \"examples/input-group-button-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-dropdown\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\", \"dropdown-menu\", \"button\"],\n    files: [\n      {\n        path: \"examples/input-group-dropdown.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-spinner\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\", \"spinner\"],\n    files: [\n      {\n        path: \"examples/input-group-spinner.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-textarea\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\", \"textarea\"],\n    files: [\n      {\n        path: \"examples/input-group-textarea.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-icon\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-group\"],\n    files: [\n      {\n        path: \"examples/input-group-icon.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-group-custom\",\n    type: \"registry:example\",\n    registryDependencies: [\n      \"input-group\",\n      \"badge\",\n      \"progress\",\n      \"dropdown-menu\",\n      \"tooltip\",\n    ],\n    files: [\n      {\n        path: \"examples/input-group-custom.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-otp-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-otp\"],\n    files: [\n      {\n        path: \"examples/input-otp-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-otp-pattern\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-otp\"],\n    files: [\n      {\n        path: \"examples/input-otp-pattern.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-otp-separator\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-otp\"],\n    files: [\n      {\n        path: \"examples/input-otp-separator.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"input-otp-controlled\",\n    type: \"registry:example\",\n    registryDependencies: [\"input-otp\"],\n    files: [\n      {\n        path: \"examples/input-otp-controlled.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-size\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-size.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-variant\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-variant.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-icon\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-icon.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-image\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-image.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-avatar\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-avatar.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-header\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-header.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-dropdown\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-dropdown.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"item-link\",\n    type: \"registry:example\",\n    registryDependencies: [\"item\"],\n    files: [\n      {\n        path: \"examples/item-link.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"kbd-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"kbd\"],\n    files: [\n      {\n        path: \"examples/kbd-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"kbd-tooltip\",\n    type: \"registry:example\",\n    registryDependencies: [\"kbd\", \"tooltip\", \"button\"],\n    files: [\n      {\n        path: \"examples/kbd-tooltip.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"kbd-input-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"kbd\", \"input\", \"button\", \"label\"],\n    files: [\n      {\n        path: \"examples/kbd-input-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"kbd-button\",\n    type: \"registry:example\",\n    registryDependencies: [\"kbd\", \"button\"],\n    files: [\n      {\n        path: \"examples/kbd-button.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"kbd-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"kbd\"],\n    files: [\n      {\n        path: \"examples/kbd-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"label-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"label\"],\n    files: [\n      {\n        path: \"examples/label-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"menubar-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"menubar\"],\n    files: [\n      {\n        path: \"examples/menubar-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"navigation-menu-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"navigation-menu\"],\n    files: [\n      {\n        path: \"examples/navigation-menu-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"native-select-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"native-select\"],\n    files: [\n      {\n        path: \"examples/native-select-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"native-select-groups\",\n    type: \"registry:example\",\n    registryDependencies: [\"native-select\"],\n    files: [\n      {\n        path: \"examples/native-select-groups.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"native-select-disabled\",\n    type: \"registry:example\",\n    registryDependencies: [\"native-select\"],\n    files: [\n      {\n        path: \"examples/native-select-disabled.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"native-select-invalid\",\n    type: \"registry:example\",\n    registryDependencies: [\"native-select\"],\n    files: [\n      {\n        path: \"examples/native-select-invalid.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"pagination-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"pagination\"],\n    files: [\n      {\n        path: \"examples/pagination-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"popover-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"popover\"],\n    files: [\n      {\n        path: \"examples/popover-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"progress-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"progress\"],\n    files: [\n      {\n        path: \"examples/progress-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"radio-group-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"radio-group\"],\n    files: [\n      {\n        path: \"examples/radio-group-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"resizable-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"resizable\"],\n    files: [\n      {\n        path: \"examples/resizable-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"resizable-demo-with-handle\",\n    type: \"registry:example\",\n    registryDependencies: [\"resizable\"],\n    files: [\n      {\n        path: \"examples/resizable-demo-with-handle.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"resizable-vertical\",\n    type: \"registry:example\",\n    registryDependencies: [\"resizable\"],\n    files: [\n      {\n        path: \"examples/resizable-vertical.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"resizable-handle\",\n    type: \"registry:example\",\n    registryDependencies: [\"resizable\"],\n    files: [\n      {\n        path: \"examples/resizable-handle.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"scroll-area-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"scroll-area\"],\n    files: [\n      {\n        path: \"examples/scroll-area-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"scroll-area-horizontal-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"scroll-area\"],\n    files: [\n      {\n        path: \"examples/scroll-area-horizontal-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"select-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"select\"],\n    files: [\n      {\n        path: \"examples/select-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"select-scrollable\",\n    type: \"registry:example\",\n    registryDependencies: [\"select\"],\n    files: [\n      {\n        path: \"examples/select-scrollable.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"separator-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"separator\"],\n    files: [\n      {\n        path: \"examples/separator-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sheet-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"sheet\"],\n    files: [\n      {\n        path: \"examples/sheet-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sheet-side\",\n    type: \"registry:example\",\n    registryDependencies: [\"sheet\"],\n    files: [\n      {\n        path: \"examples/sheet-side.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"skeleton-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"skeleton\"],\n    files: [\n      {\n        path: \"examples/skeleton-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"skeleton-card\",\n    type: \"registry:example\",\n    registryDependencies: [\"skeleton\"],\n    files: [\n      {\n        path: \"examples/skeleton-card.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"slider-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"slider\"],\n    files: [\n      {\n        path: \"examples/slider-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sonner-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"sonner\"],\n    files: [\n      {\n        path: \"examples/sonner-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"sonner-types\",\n    type: \"registry:example\",\n    registryDependencies: [\"sonner\"],\n    files: [\n      {\n        path: \"examples/sonner-types.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\"],\n    files: [\n      {\n        path: \"examples/spinner-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-basic\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\", \"button\"],\n    files: [\n      {\n        path: \"examples/spinner-basic.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-button\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\", \"button\"],\n    files: [\n      {\n        path: \"examples/spinner-button.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-badge\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\", \"badge\"],\n    files: [\n      {\n        path: \"examples/spinner-badge.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-input-group\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\", \"button\", \"input\"],\n    files: [\n      {\n        path: \"examples/spinner-input-group.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-empty\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\"],\n    files: [\n      {\n        path: \"examples/spinner-empty.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-color\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\"],\n    files: [\n      {\n        path: \"examples/spinner-color.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-custom\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\"],\n    files: [\n      {\n        path: \"examples/spinner-custom.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-size\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\"],\n    files: [\n      {\n        path: \"examples/spinner-size.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"spinner-item\",\n    type: \"registry:example\",\n    registryDependencies: [\"spinner\"],\n    files: [\n      {\n        path: \"examples/spinner-item.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"switch-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"switch\"],\n    files: [\n      {\n        path: \"examples/switch-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"table-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"table\"],\n    files: [\n      {\n        path: \"examples/table-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"tabs-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"tabs\"],\n    files: [\n      {\n        path: \"examples/tabs-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"textarea-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"textarea\"],\n    files: [\n      {\n        path: \"examples/textarea-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"textarea-disabled\",\n    type: \"registry:example\",\n    registryDependencies: [\"textarea\"],\n    files: [\n      {\n        path: \"examples/textarea-disabled.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"textarea-with-button\",\n    type: \"registry:example\",\n    registryDependencies: [\"textarea\", \"button\"],\n    files: [\n      {\n        path: \"examples/textarea-with-button.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"textarea-with-label\",\n    type: \"registry:example\",\n    registryDependencies: [\"textarea\", \"label\"],\n    files: [\n      {\n        path: \"examples/textarea-with-label.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"textarea-with-text\",\n    type: \"registry:example\",\n    registryDependencies: [\"textarea\", \"label\"],\n    files: [\n      {\n        path: \"examples/textarea-with-text.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toast-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"toast\"],\n    files: [\n      {\n        path: \"examples/toast-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toast-destructive\",\n    type: \"registry:example\",\n    registryDependencies: [\"toast\"],\n    files: [\n      {\n        path: \"examples/toast-destructive.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toast-simple\",\n    type: \"registry:example\",\n    registryDependencies: [\"toast\"],\n    files: [\n      {\n        path: \"examples/toast-simple.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toast-with-action\",\n    type: \"registry:example\",\n    registryDependencies: [\"toast\"],\n    files: [\n      {\n        path: \"examples/toast-with-action.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toast-with-title\",\n    type: \"registry:example\",\n    registryDependencies: [\"toast\"],\n    files: [\n      {\n        path: \"examples/toast-with-title.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle-group\"],\n    files: [\n      {\n        path: \"examples/toggle-group-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-disabled\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle-group\"],\n    files: [\n      {\n        path: \"examples/toggle-group-disabled.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-lg\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle-group\"],\n    files: [\n      {\n        path: \"examples/toggle-group-lg.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-outline\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle-group\"],\n    files: [\n      {\n        path: \"examples/toggle-group-outline.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-sm\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle-group\"],\n    files: [\n      {\n        path: \"examples/toggle-group-sm.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-single\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle-group\"],\n    files: [\n      {\n        path: \"examples/toggle-group-single.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group-spacing\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle-group\"],\n    files: [\n      {\n        path: \"examples/toggle-group-spacing.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"examples/toggle-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-disabled\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"examples/toggle-disabled.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-lg\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"examples/toggle-lg.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-outline\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"examples/toggle-outline.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-sm\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"examples/toggle-sm.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-with-text\",\n    type: \"registry:example\",\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"examples/toggle-with-text.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"tooltip-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"tooltip\"],\n    files: [\n      {\n        path: \"examples/tooltip-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-blockquote\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-blockquote.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-demo\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-h1\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-h1.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-h2\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-h2.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-h3\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-h3.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-h4\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-h4.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-inline-code\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-inline-code.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-large\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-large.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-lead\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-lead.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-list\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-list.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-muted\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-muted.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-p\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-p.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-small\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-small.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"typography-table\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/typography-table.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"mode-toggle\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/mode-toggle.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"chart-bar-demo\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/chart-bar-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"chart-bar-demo-grid\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/chart-bar-demo-grid.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"chart-bar-demo-axis\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/chart-bar-demo-axis.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"chart-bar-demo-tooltip\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/chart-bar-demo-tooltip.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"chart-bar-demo-legend\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/chart-bar-demo-legend.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"chart-tooltip-demo\",\n    type: \"registry:example\",\n    files: [\n      {\n        path: \"examples/chart-tooltip-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n  {\n    name: \"calendar-hijri\",\n    description: \"A Persian calendar.\",\n    type: \"registry:example\",\n    registryDependencies: [\"calendar\"],\n    files: [\n      {\n        path: \"examples/calendar-hijri.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n    categories: [\"calendar\", \"date\"],\n    meta: {\n      iframeHeight: \"600px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/accordion-demo.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/registry/new-york-v4/ui/accordion\"\n\nexport default function AccordionDemo() {\n  return (\n    <Accordion\n      type=\"single\"\n      collapsible\n      className=\"w-full\"\n      defaultValue=\"item-1\"\n    >\n      <AccordionItem value=\"item-1\">\n        <AccordionTrigger>Product Information</AccordionTrigger>\n        <AccordionContent className=\"flex flex-col gap-4 text-balance\">\n          <p>\n            Our flagship product combines cutting-edge technology with sleek\n            design. Built with premium materials, it offers unparalleled\n            performance and reliability.\n          </p>\n          <p>\n            Key features include advanced processing capabilities, and an\n            intuitive user interface designed for both beginners and experts.\n          </p>\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"item-2\">\n        <AccordionTrigger>Shipping Details</AccordionTrigger>\n        <AccordionContent className=\"flex flex-col gap-4 text-balance\">\n          <p>\n            We offer worldwide shipping through trusted courier partners.\n            Standard delivery takes 3-5 business days, while express shipping\n            ensures delivery within 1-2 business days.\n          </p>\n          <p>\n            All orders are carefully packaged and fully insured. Track your\n            shipment in real-time through our dedicated tracking portal.\n          </p>\n        </AccordionContent>\n      </AccordionItem>\n      <AccordionItem value=\"item-3\">\n        <AccordionTrigger>Return Policy</AccordionTrigger>\n        <AccordionContent className=\"flex flex-col gap-4 text-balance\">\n          <p>\n            We stand behind our products with a comprehensive 30-day return\n            policy. If you&apos;re not completely satisfied, simply return the\n            item in its original condition.\n          </p>\n          <p>\n            Our hassle-free return process includes free return shipping and\n            full refunds processed within 48 hours of receiving the returned\n            item.\n          </p>\n        </AccordionContent>\n      </AccordionItem>\n    </Accordion>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/alert-demo.tsx",
    "content": "import { AlertCircleIcon, CheckCircle2Icon, PopcornIcon } from \"lucide-react\"\n\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/new-york-v4/ui/alert\"\n\nexport default function AlertDemo() {\n  return (\n    <div className=\"grid w-full max-w-xl items-start gap-4\">\n      <Alert>\n        <CheckCircle2Icon />\n        <AlertTitle>Success! Your changes have been saved</AlertTitle>\n        <AlertDescription>\n          This is an alert with icon, title and description.\n        </AlertDescription>\n      </Alert>\n      <Alert>\n        <PopcornIcon />\n        <AlertTitle>\n          This Alert has a title and an icon. No description.\n        </AlertTitle>\n      </Alert>\n      <Alert variant=\"destructive\">\n        <AlertCircleIcon />\n        <AlertTitle>Unable to process your payment.</AlertTitle>\n        <AlertDescription>\n          <p>Please verify your billing information and try again.</p>\n          <ul className=\"list-inside list-disc text-sm\">\n            <li>Check your card details</li>\n            <li>Ensure sufficient funds</li>\n            <li>Verify billing address</li>\n          </ul>\n        </AlertDescription>\n      </Alert>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/alert-destructive.tsx",
    "content": "import { AlertCircleIcon } from \"lucide-react\"\n\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/registry/new-york-v4/ui/alert\"\n\nexport default function AlertDestructive() {\n  return (\n    <Alert variant=\"destructive\">\n      <AlertCircleIcon />\n      <AlertTitle>Error</AlertTitle>\n      <AlertDescription>\n        Your session has expired. Please log in again.\n      </AlertDescription>\n    </Alert>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/alert-dialog-demo.tsx",
    "content": "import {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/new-york-v4/ui/alert-dialog\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function AlertDialogDemo() {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>\n        <Button variant=\"outline\">Show Dialog</Button>\n      </AlertDialogTrigger>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n          <AlertDialogDescription>\n            This action cannot be undone. This will permanently delete your\n            account and remove your data from our servers.\n          </AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction>Continue</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/aspect-ratio-demo.tsx",
    "content": "import Image from \"next/image\"\n\nimport { AspectRatio } from \"@/registry/new-york-v4/ui/aspect-ratio\"\n\nexport default function AspectRatioDemo() {\n  return (\n    <AspectRatio ratio={16 / 9} className=\"rounded-lg bg-muted\">\n      <Image\n        src=\"https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80\"\n        alt=\"Photo by Drew Beamer\"\n        fill\n        className=\"h-full w-full rounded-lg object-cover dark:brightness-[0.2] dark:grayscale\"\n      />\n    </AspectRatio>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/avatar-demo.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\n\nexport default function AvatarDemo() {\n  return (\n    <div className=\"flex flex-row flex-wrap items-center gap-12\">\n      <Avatar>\n        <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n        <AvatarFallback>CN</AvatarFallback>\n      </Avatar>\n      <Avatar className=\"rounded-lg\">\n        <AvatarImage\n          src=\"https://github.com/evilrabbit.png\"\n          alt=\"@evilrabbit\"\n        />\n        <AvatarFallback>ER</AvatarFallback>\n      </Avatar>\n      <div className=\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n        <Avatar>\n          <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n          <AvatarFallback>CN</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/maxleiter.png\"\n            alt=\"@maxleiter\"\n          />\n          <AvatarFallback>LR</AvatarFallback>\n        </Avatar>\n        <Avatar>\n          <AvatarImage\n            src=\"https://github.com/evilrabbit.png\"\n            alt=\"@evilrabbit\"\n          />\n          <AvatarFallback>ER</AvatarFallback>\n        </Avatar>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/badge-demo.tsx",
    "content": "import { AlertCircleIcon, BadgeCheckIcon, CheckIcon } from \"lucide-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\n\nexport default function BadgeDemo() {\n  return (\n    <div className=\"flex flex-col items-center gap-2\">\n      <div className=\"flex w-full flex-wrap gap-2\">\n        <Badge>Badge</Badge>\n        <Badge variant=\"secondary\">Secondary</Badge>\n        <Badge variant=\"destructive\">Destructive</Badge>\n        <Badge variant=\"outline\">Outline</Badge>\n      </div>\n      <div className=\"flex w-full flex-wrap gap-2\">\n        <Badge\n          variant=\"secondary\"\n          className=\"bg-blue-500 text-white dark:bg-blue-600\"\n        >\n          <BadgeCheckIcon />\n          Verified\n        </Badge>\n        <Badge className=\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\">\n          8\n        </Badge>\n        <Badge\n          className=\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\"\n          variant=\"destructive\"\n        >\n          99\n        </Badge>\n        <Badge\n          className=\"h-5 min-w-5 rounded-full px-1 font-mono tabular-nums\"\n          variant=\"outline\"\n        >\n          20+\n        </Badge>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/badge-destructive.tsx",
    "content": "import { Badge } from \"@/registry/new-york-v4/ui/badge\"\n\nexport default function BadgeDestructive() {\n  return <Badge variant=\"destructive\">Destructive</Badge>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/badge-outline.tsx",
    "content": "import { Badge } from \"@/registry/new-york-v4/ui/badge\"\n\nexport default function BadgeOutline() {\n  return <Badge variant=\"outline\">Outline</Badge>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/badge-secondary.tsx",
    "content": "import { Badge } from \"@/registry/new-york-v4/ui/badge\"\n\nexport default function BadgeSecondary() {\n  return <Badge variant=\"secondary\">Secondary</Badge>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/breadcrumb-demo.tsx",
    "content": "import Link from \"next/link\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport default function BreadcrumbDemo() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger className=\"flex items-center gap-1\">\n              <BreadcrumbEllipsis className=\"size-4\" />\n              <span className=\"sr-only\">Toggle menu</span>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"start\">\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\n              <DropdownMenuItem>Themes</DropdownMenuItem>\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/docs/components\">Components</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/breadcrumb-dropdown.tsx",
    "content": "import Link from \"next/link\"\nimport { ChevronDownIcon, SlashIcon } from \"lucide-react\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport default function BreadcrumbWithDropdown() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <SlashIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <DropdownMenu>\n            <DropdownMenuTrigger className=\"flex items-center gap-1 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\">\n              Components\n              <ChevronDownIcon />\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"start\">\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\n              <DropdownMenuItem>Themes</DropdownMenuItem>\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <SlashIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/breadcrumb-ellipsis.tsx",
    "content": "import Link from \"next/link\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\n\nexport default function BreadcrumbCollapsed() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbEllipsis />\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/docs/components\">Components</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/breadcrumb-link.tsx",
    "content": "import Link from \"next/link\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\n\nexport default function BreadcrumbWithCustomSeparator() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/components\">Components</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/breadcrumb-responsive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\n\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nconst items = [\n  { href: \"#\", label: \"Home\" },\n  { href: \"#\", label: \"Documentation\" },\n  { href: \"#\", label: \"Build Your Application\" },\n  { href: \"#\", label: \"Data Fetching\" },\n  { label: \"Caching and Revalidating\" },\n]\n\nconst ITEMS_TO_DISPLAY = 3\n\nexport default function BreadcrumbResponsive() {\n  const [open, setOpen] = React.useState(false)\n  const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href={items[0].href ?? \"/\"}>{items[0].label}</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        {items.length > ITEMS_TO_DISPLAY ? (\n          <>\n            <BreadcrumbItem>\n              {isDesktop ? (\n                <DropdownMenu open={open} onOpenChange={setOpen}>\n                  <DropdownMenuTrigger\n                    className=\"flex items-center gap-1\"\n                    aria-label=\"Toggle menu\"\n                  >\n                    <BreadcrumbEllipsis className=\"size-4\" />\n                  </DropdownMenuTrigger>\n                  <DropdownMenuContent align=\"start\">\n                    {items.slice(1, -2).map((item, index) => (\n                      <DropdownMenuItem key={index}>\n                        <Link href={item.href ? item.href : \"#\"}>\n                          {item.label}\n                        </Link>\n                      </DropdownMenuItem>\n                    ))}\n                  </DropdownMenuContent>\n                </DropdownMenu>\n              ) : (\n                <Drawer open={open} onOpenChange={setOpen}>\n                  <DrawerTrigger aria-label=\"Toggle Menu\">\n                    <BreadcrumbEllipsis className=\"h-4 w-4\" />\n                  </DrawerTrigger>\n                  <DrawerContent>\n                    <DrawerHeader className=\"text-left\">\n                      <DrawerTitle>Navigate to</DrawerTitle>\n                      <DrawerDescription>\n                        Select a page to navigate to.\n                      </DrawerDescription>\n                    </DrawerHeader>\n                    <div className=\"grid gap-1 px-4\">\n                      {items.slice(1, -2).map((item, index) => (\n                        <Link\n                          key={index}\n                          href={item.href ? item.href : \"#\"}\n                          className=\"py-1 text-sm\"\n                        >\n                          {item.label}\n                        </Link>\n                      ))}\n                    </div>\n                    <DrawerFooter className=\"pt-4\">\n                      <DrawerClose asChild>\n                        <Button variant=\"outline\">Close</Button>\n                      </DrawerClose>\n                    </DrawerFooter>\n                  </DrawerContent>\n                </Drawer>\n              )}\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n          </>\n        ) : null}\n        {items.slice(-ITEMS_TO_DISPLAY + 1).map((item, index) => (\n          <BreadcrumbItem key={index}>\n            {item.href ? (\n              <>\n                <BreadcrumbLink\n                  asChild\n                  className=\"max-w-20 truncate md:max-w-none\"\n                >\n                  <Link href={item.href}>{item.label}</Link>\n                </BreadcrumbLink>\n                <BreadcrumbSeparator />\n              </>\n            ) : (\n              <BreadcrumbPage className=\"max-w-20 truncate md:max-w-none\">\n                {item.label}\n              </BreadcrumbPage>\n            )}\n          </BreadcrumbItem>\n        ))}\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/breadcrumb-separator.tsx",
    "content": "import Link from \"next/link\"\nimport { SlashIcon } from \"lucide-react\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/registry/new-york-v4/ui/breadcrumb\"\n\nexport default function BreadcrumbWithCustomSeparator() {\n  return (\n    <Breadcrumb>\n      <BreadcrumbList>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/\">Home</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <SlashIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbLink asChild>\n            <Link href=\"/components\">Components</Link>\n          </BreadcrumbLink>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator>\n          <SlashIcon />\n        </BreadcrumbSeparator>\n        <BreadcrumbItem>\n          <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n        </BreadcrumbItem>\n      </BreadcrumbList>\n    </Breadcrumb>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-as-child.tsx",
    "content": "import Link from \"next/link\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonAsChild() {\n  return (\n    <Button asChild>\n      <Link href=\"/login\">Login</Link>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-default.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonDefault() {\n  return <Button>Button</Button>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-demo.tsx",
    "content": "import { ArrowUpIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonDemo() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-2 md:flex-row\">\n      <Button variant=\"outline\">Button</Button>\n      <Button variant=\"outline\" size=\"icon\" aria-label=\"Submit\">\n        <ArrowUpIcon />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-destructive.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonDestructive() {\n  return <Button variant=\"destructive\">Destructive</Button>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-ghost.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonGhost() {\n  return <Button variant=\"ghost\">Ghost</Button>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ArchiveIcon,\n  ArrowLeftIcon,\n  CalendarPlusIcon,\n  ClockIcon,\n  ListFilterIcon,\n  MailCheckIcon,\n  MoreHorizontalIcon,\n  TagIcon,\n  Trash2Icon,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport default function ButtonGroupDemo() {\n  const [label, setLabel] = React.useState(\"personal\")\n\n  return (\n    <ButtonGroup>\n      <ButtonGroup className=\"hidden sm:flex\">\n        <Button variant=\"outline\" size=\"icon\" aria-label=\"Go Back\">\n          <ArrowLeftIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Archive</Button>\n        <Button variant=\"outline\">Report</Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Snooze</Button>\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" size=\"icon\" aria-label=\"More Options\">\n              <MoreHorizontalIcon />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" className=\"w-52\">\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <MailCheckIcon />\n                Mark as Read\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <ArchiveIcon />\n                Archive\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem>\n                <ClockIcon />\n                Snooze\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <CalendarPlusIcon />\n                Add to Calendar\n              </DropdownMenuItem>\n              <DropdownMenuItem>\n                <ListFilterIcon />\n                Add to List\n              </DropdownMenuItem>\n              <DropdownMenuSub>\n                <DropdownMenuSubTrigger>\n                  <TagIcon />\n                  Label As...\n                </DropdownMenuSubTrigger>\n                <DropdownMenuSubContent>\n                  <DropdownMenuRadioGroup\n                    value={label}\n                    onValueChange={setLabel}\n                  >\n                    <DropdownMenuRadioItem value=\"personal\">\n                      Personal\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"work\">\n                      Work\n                    </DropdownMenuRadioItem>\n                    <DropdownMenuRadioItem value=\"other\">\n                      Other\n                    </DropdownMenuRadioItem>\n                  </DropdownMenuRadioGroup>\n                </DropdownMenuSubContent>\n              </DropdownMenuSub>\n            </DropdownMenuGroup>\n            <DropdownMenuSeparator />\n            <DropdownMenuGroup>\n              <DropdownMenuItem variant=\"destructive\">\n                <Trash2Icon />\n                Trash\n              </DropdownMenuItem>\n            </DropdownMenuGroup>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-dropdown.tsx",
    "content": "\"use client\"\n\nimport {\n  AlertTriangleIcon,\n  CheckIcon,\n  ChevronDownIcon,\n  CopyIcon,\n  ShareIcon,\n  TrashIcon,\n  UserRoundXIcon,\n  VolumeOffIcon,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport default function ButtonGroupDropdown() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"outline\">Follow</Button>\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"pl-2!\">\n            <ChevronDownIcon />\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"[--radius:1rem]\">\n          <DropdownMenuGroup>\n            <DropdownMenuItem>\n              <VolumeOffIcon />\n              Mute Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <CheckIcon />\n              Mark as Read\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <AlertTriangleIcon />\n              Report Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <UserRoundXIcon />\n              Block User\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <ShareIcon />\n              Share Conversation\n            </DropdownMenuItem>\n            <DropdownMenuItem>\n              <CopyIcon />\n              Copy Conversation\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n          <DropdownMenuSeparator />\n          <DropdownMenuGroup>\n            <DropdownMenuItem variant=\"destructive\">\n              <TrashIcon />\n              Delete Conversation\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AudioLinesIcon, PlusIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport default function ButtonGroupInputGroup() {\n  const [voiceEnabled, setVoiceEnabled] = React.useState(false)\n\n  return (\n    <ButtonGroup className=\"[--radius:9999rem]\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <InputGroup>\n          <InputGroupInput\n            placeholder={\n              voiceEnabled ? \"Record and send audio...\" : \"Send a message...\"\n            }\n            disabled={voiceEnabled}\n          />\n          <InputGroupAddon align=\"inline-end\">\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <InputGroupButton\n                  onClick={() => setVoiceEnabled(!voiceEnabled)}\n                  size=\"icon-xs\"\n                  data-active={voiceEnabled}\n                  className=\"data-[active=true]:bg-orange-100 data-[active=true]:text-orange-700 dark:data-[active=true]:bg-orange-800 dark:data-[active=true]:text-orange-100\"\n                  aria-pressed={voiceEnabled}\n                >\n                  <AudioLinesIcon />\n                </InputGroupButton>\n              </TooltipTrigger>\n              <TooltipContent>Voice Mode</TooltipContent>\n            </Tooltip>\n          </InputGroupAddon>\n        </InputGroup>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-input.tsx",
    "content": "import { SearchIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport default function ButtonGroupInput() {\n  return (\n    <ButtonGroup>\n      <Input placeholder=\"Search...\" />\n      <Button variant=\"outline\" aria-label=\"Search\">\n        <SearchIcon />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-nested.tsx",
    "content": "\"use client\"\n\nimport { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\n\nexport default function ButtonGroupNested() {\n  return (\n    <ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          1\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          2\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          3\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          4\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          5\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Previous\">\n          <ArrowLeftIcon />\n        </Button>\n        <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Next\">\n          <ArrowRightIcon />\n        </Button>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-orientation.tsx",
    "content": "import { MinusIcon, PlusIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\n\nexport default function ButtonGroupOrientation() {\n  return (\n    <ButtonGroup\n      orientation=\"vertical\"\n      aria-label=\"Media controls\"\n      className=\"h-fit\"\n    >\n      <Button variant=\"outline\" size=\"icon\">\n        <PlusIcon />\n      </Button>\n      <Button variant=\"outline\" size=\"icon\">\n        <MinusIcon />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-popover.tsx",
    "content": "import { BotIcon, ChevronDownIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function ButtonGroupPopover() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"outline\">\n        <BotIcon /> Copilot\n      </Button>\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" size=\"icon\" aria-label=\"Open Popover\">\n            <ChevronDownIcon />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent align=\"end\" className=\"rounded-xl p-0 text-sm\">\n          <div className=\"px-4 py-3\">\n            <div className=\"text-sm font-medium\">Agent Tasks</div>\n          </div>\n          <Separator />\n          <div className=\"p-4 text-sm *:[p:not(:last-child)]:mb-2\">\n            <Textarea\n              placeholder=\"Describe your task in natural language.\"\n              className=\"mb-4 resize-none\"\n            />\n            <p className=\"font-medium\">Start a new task with Copilot</p>\n            <p className=\"text-muted-foreground\">\n              Describe your task in natural language. Copilot will work in the\n              background and open a pull request for your review.\n            </p>\n          </div>\n        </PopoverContent>\n      </Popover>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ArrowRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n} from \"@/registry/new-york-v4/ui/select\"\n\nconst CURRENCIES = [\n  {\n    value: \"$\",\n    label: \"US Dollar\",\n  },\n  {\n    value: \"€\",\n    label: \"Euro\",\n  },\n  {\n    value: \"£\",\n    label: \"British Pound\",\n  },\n]\n\nexport default function ButtonGroupSelect() {\n  const [currency, setCurrency] = React.useState(\"$\")\n\n  return (\n    <ButtonGroup>\n      <ButtonGroup>\n        <Select value={currency} onValueChange={setCurrency}>\n          <SelectTrigger className=\"font-mono\">{currency}</SelectTrigger>\n          <SelectContent className=\"min-w-24\">\n            {CURRENCIES.map((currency) => (\n              <SelectItem key={currency.value} value={currency.value}>\n                {currency.value}{\" \"}\n                <span className=\"text-muted-foreground\">{currency.label}</span>\n              </SelectItem>\n            ))}\n          </SelectContent>\n        </Select>\n        <Input placeholder=\"10.00\" pattern=\"[0-9]*\" />\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button aria-label=\"Send\" size=\"icon\" variant=\"outline\">\n          <ArrowRightIcon />\n        </Button>\n      </ButtonGroup>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-separator.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n} from \"@/registry/new-york-v4/ui/button-group\"\n\nexport default function ButtonGroupSeparatorDemo() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"secondary\" size=\"sm\">\n        Copy\n      </Button>\n      <ButtonGroupSeparator />\n      <Button variant=\"secondary\" size=\"sm\">\n        Paste\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-size.tsx",
    "content": "import { PlusIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\n\nexport default function ButtonGroupSize() {\n  return (\n    <div className=\"flex flex-col items-start gap-8\">\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"sm\">\n          Small\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Button\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Group\n        </Button>\n        <Button variant=\"outline\" size=\"icon-sm\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\">Default</Button>\n        <Button variant=\"outline\">Button</Button>\n        <Button variant=\"outline\">Group</Button>\n        <Button variant=\"outline\" size=\"icon\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n      <ButtonGroup>\n        <Button variant=\"outline\" size=\"lg\">\n          Large\n        </Button>\n        <Button variant=\"outline\" size=\"lg\">\n          Button\n        </Button>\n        <Button variant=\"outline\" size=\"lg\">\n          Group\n        </Button>\n        <Button variant=\"outline\" size=\"icon-lg\">\n          <PlusIcon />\n        </Button>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-group-split.tsx",
    "content": "import { IconPlus } from \"@tabler/icons-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n} from \"@/registry/new-york-v4/ui/button-group\"\n\nexport default function ButtonGroupSplit() {\n  return (\n    <ButtonGroup>\n      <Button variant=\"secondary\">Button</Button>\n      <ButtonGroupSeparator />\n      <Button size=\"icon\" variant=\"secondary\">\n        <IconPlus />\n      </Button>\n    </ButtonGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-icon.tsx",
    "content": "import { CircleFadingArrowUpIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonIcon() {\n  return (\n    <Button variant=\"outline\" size=\"icon\">\n      <CircleFadingArrowUpIcon />\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-link.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonLink() {\n  return <Button variant=\"link\">Link</Button>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-loading.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function ButtonLoading() {\n  return (\n    <Button size=\"sm\" variant=\"outline\" disabled>\n      <Spinner />\n      Submit\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-outline.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonOutline() {\n  return <Button variant=\"outline\">Outline</Button>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-rounded.tsx",
    "content": "import { ArrowUpIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonRounded() {\n  return (\n    <div className=\"flex flex-col gap-8\">\n      <Button variant=\"outline\" size=\"icon\" className=\"rounded-full\">\n        <ArrowUpIcon />\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-secondary.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonSecondary() {\n  return <Button variant=\"secondary\">Secondary</Button>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-size.tsx",
    "content": "import { ArrowUpRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonSize() {\n  return (\n    <div className=\"flex flex-col items-start gap-8 sm:flex-row\">\n      <div className=\"flex items-start gap-2\">\n        <Button size=\"sm\" variant=\"outline\">\n          Small\n        </Button>\n        <Button size=\"icon-sm\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n      <div className=\"flex items-start gap-2\">\n        <Button variant=\"outline\">Default</Button>\n        <Button size=\"icon\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n      <div className=\"flex items-start gap-2\">\n        <Button variant=\"outline\" size=\"lg\">\n          Large\n        </Button>\n        <Button size=\"icon-lg\" aria-label=\"Submit\" variant=\"outline\">\n          <ArrowUpRightIcon />\n        </Button>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/button-with-icon.tsx",
    "content": "import { IconGitBranch } from \"@tabler/icons-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function ButtonWithIcon() {\n  return (\n    <Button variant=\"outline\" size=\"sm\">\n      <IconGitBranch /> New Branch\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/calendar-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\n\nexport default function CalendarDemo() {\n  const [date, setDate] = React.useState<Date | undefined>(new Date())\n\n  return (\n    <Calendar\n      mode=\"single\"\n      selected={date}\n      onSelect={setDate}\n      className=\"rounded-md border shadow-sm\"\n      captionLayout=\"dropdown\"\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/calendar-hijri.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Vazirmatn } from \"next/font/google\"\nimport {\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"lucide-react\"\nimport { getDefaultClassNames, type DayButton } from \"react-day-picker\"\nimport { DayPicker } from \"react-day-picker/persian\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/new-york-v4/ui/button\"\n\nconst vazirmatn = Vazirmatn({ subsets: [\"arabic\"] })\n\nexport default function CalendarHijri() {\n  const [date, setDate] = React.useState<Date | undefined>(\n    new Date(2025, 5, 12)\n  )\n\n  return (\n    <div className={vazirmatn.className}>\n      <Calendar\n        mode=\"single\"\n        defaultMonth={date}\n        selected={date}\n        onSelect={setDate}\n        className=\"rounded-lg border shadow-sm\"\n      />\n    </div>\n  )\n}\n\n// ----------------------------------------------------------------------------\n// The code below is for this example only.\n// For your own calendar, you would edit the calendar.tsx component directly.\n// ----------------------------------------------------------------------------\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(\"default\", { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\"absolute inset-0 opacity-0\", defaultClassNames.dropdown),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"rounded-l-md bg-accent\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n        today: cn(\n          \"rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <ChevronRightIcon\n                className={cn(\"size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n          )\n        },\n        DayButton: CalendarDayButton,\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  ...props\n}: React.ComponentProps<typeof DayButton>) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      ref={ref}\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString()}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/card-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function CardDemo() {\n  return (\n    <Card className=\"w-full max-w-sm\">\n      <CardHeader>\n        <CardTitle>Login to your account</CardTitle>\n        <CardDescription>\n          Enter your email below to login to your account\n        </CardDescription>\n        <CardAction>\n          <Button variant=\"link\">Sign Up</Button>\n        </CardAction>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <div className=\"flex flex-col gap-6\">\n            <div className=\"grid gap-2\">\n              <Label htmlFor=\"email\">Email</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"m@example.com\"\n                required\n              />\n            </div>\n            <div className=\"grid gap-2\">\n              <div className=\"flex items-center\">\n                <Label htmlFor=\"password\">Password</Label>\n                <a\n                  href=\"#\"\n                  className=\"ml-auto inline-block text-sm underline-offset-4 hover:underline\"\n                >\n                  Forgot your password?\n                </a>\n              </div>\n              <Input id=\"password\" type=\"password\" required />\n            </div>\n          </div>\n        </form>\n      </CardContent>\n      <CardFooter className=\"flex-col gap-2\">\n        <Button type=\"submit\" className=\"w-full\">\n          Login\n        </Button>\n        <Button variant=\"outline\" className=\"w-full\">\n          Login with Google\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/card-with-form.tsx",
    "content": "import * as React from \"react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport default function CardWithForm() {\n  return (\n    <Card className=\"w-[350px]\">\n      <CardHeader>\n        <CardTitle>Create project</CardTitle>\n        <CardDescription>Deploy your new project in one-click.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form>\n          <div className=\"grid w-full items-center gap-6\">\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"name\">Name</Label>\n              <Input id=\"name\" placeholder=\"Name of your project\" />\n            </div>\n            <div className=\"flex flex-col gap-3\">\n              <Label htmlFor=\"framework\">Framework</Label>\n              <Select>\n                <SelectTrigger id=\"framework\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select\" />\n                </SelectTrigger>\n                <SelectContent position=\"popper\">\n                  <SelectItem value=\"next\">Next.js</SelectItem>\n                  <SelectItem value=\"sveltekit\">SvelteKit</SelectItem>\n                  <SelectItem value=\"astro\">Astro</SelectItem>\n                  <SelectItem value=\"nuxt\">Nuxt.js</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n          </div>\n        </form>\n      </CardContent>\n      <CardFooter className=\"flex justify-between\">\n        <Button variant=\"outline\">Cancel</Button>\n        <Button>Deploy</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/carousel-api.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n  type CarouselApi,\n} from \"@/registry/new-york-v4/ui/carousel\"\n\nexport default function CarouselDApiDemo() {\n  const [api, setApi] = React.useState<CarouselApi>()\n  const [current, setCurrent] = React.useState(0)\n  const [count, setCount] = React.useState(0)\n\n  React.useEffect(() => {\n    if (!api) {\n      return\n    }\n\n    setCount(api.scrollSnapList().length)\n    setCurrent(api.selectedScrollSnap() + 1)\n\n    api.on(\"select\", () => {\n      setCurrent(api.selectedScrollSnap() + 1)\n    })\n  }, [api])\n\n  return (\n    <div className=\"mx-auto max-w-xs\">\n      <Carousel setApi={setApi} className=\"w-full max-w-xs\">\n        <CarouselContent>\n          {Array.from({ length: 5 }).map((_, index) => (\n            <CarouselItem key={index}>\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </CarouselItem>\n          ))}\n        </CarouselContent>\n        <CarouselPrevious />\n        <CarouselNext />\n      </Carousel>\n      <div className=\"py-2 text-center text-sm text-muted-foreground\">\n        Slide {current} of {count}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/carousel-demo.tsx",
    "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/registry/new-york-v4/ui/carousel\"\n\nexport default function CarouselDemo() {\n  return (\n    <Carousel className=\"w-full max-w-xs\">\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index}>\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/carousel-orientation.tsx",
    "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/registry/new-york-v4/ui/carousel\"\n\nexport default function CarouselOrientation() {\n  return (\n    <Carousel\n      opts={{\n        align: \"start\",\n      }}\n      orientation=\"vertical\"\n      className=\"w-full max-w-xs\"\n    >\n      <CarouselContent className=\"-mt-1 h-[200px]\">\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"pt-1 md:basis-1/2\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex items-center justify-center p-6\">\n                  <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/carousel-plugin.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Autoplay from \"embla-carousel-autoplay\"\n\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/registry/new-york-v4/ui/carousel\"\n\nexport default function CarouselPlugin() {\n  const plugin = React.useRef(\n    Autoplay({ delay: 2000, stopOnInteraction: true })\n  )\n\n  return (\n    <Carousel\n      plugins={[plugin.current]}\n      className=\"w-full max-w-xs\"\n      onMouseEnter={plugin.current.stop}\n      onMouseLeave={plugin.current.reset}\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index}>\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-4xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/carousel-size.tsx",
    "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/registry/new-york-v4/ui/carousel\"\n\nexport default function CarouselSize() {\n  return (\n    <Carousel\n      opts={{\n        align: \"start\",\n      }}\n      className=\"w-full max-w-sm\"\n    >\n      <CarouselContent>\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"md:basis-1/2 lg:basis-1/3\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-3xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/carousel-spacing.tsx",
    "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n} from \"@/registry/new-york-v4/ui/carousel\"\n\nexport default function CarouselSpacing() {\n  return (\n    <Carousel className=\"w-full max-w-sm\">\n      <CarouselContent className=\"-ml-1\">\n        {Array.from({ length: 5 }).map((_, index) => (\n          <CarouselItem key={index} className=\"pl-1 md:basis-1/2 lg:basis-1/3\">\n            <div className=\"p-1\">\n              <Card>\n                <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n                  <span className=\"text-2xl font-semibold\">{index + 1}</span>\n                </CardContent>\n              </Card>\n            </div>\n          </CarouselItem>\n        ))}\n      </CarouselContent>\n      <CarouselPrevious />\n      <CarouselNext />\n    </Carousel>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/chart-bar-demo-axis.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport default function Component() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/chart-bar-demo-grid.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, CartesianGrid } from \"recharts\"\n\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport default function Component() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/chart-bar-demo-legend.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport default function Component() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <ChartTooltip content={<ChartTooltipContent />} />\n        <ChartLegend content={<ChartLegendContent />} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/chart-bar-demo-tooltip.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport default function Component() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <CartesianGrid vertical={false} />\n        <XAxis\n          dataKey=\"month\"\n          tickLine={false}\n          tickMargin={10}\n          axisLine={false}\n          tickFormatter={(value) => value.slice(0, 3)}\n        />\n        <ChartTooltip content={<ChartTooltipContent />} />\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/chart-bar-demo.tsx",
    "content": "\"use client\"\n\nimport { Bar, BarChart } from \"recharts\"\n\nimport {\n  ChartContainer,\n  type ChartConfig,\n} from \"@/registry/new-york-v4/ui/chart\"\n\nconst chartData = [\n  { month: \"January\", desktop: 186, mobile: 80 },\n  { month: \"February\", desktop: 305, mobile: 200 },\n  { month: \"March\", desktop: 237, mobile: 120 },\n  { month: \"April\", desktop: 73, mobile: 190 },\n  { month: \"May\", desktop: 209, mobile: 130 },\n  { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n  desktop: {\n    label: \"Desktop\",\n    color: \"#2563eb\",\n  },\n  mobile: {\n    label: \"Mobile\",\n    color: \"#60a5fa\",\n  },\n} satisfies ChartConfig\n\nexport default function Component() {\n  return (\n    <ChartContainer config={chartConfig} className=\"min-h-[200px] w-full\">\n      <BarChart accessibilityLayer data={chartData}>\n        <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" radius={4} />\n        <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" radius={4} />\n      </BarChart>\n    </ChartContainer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/chart-tooltip-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport default function Component() {\n  return (\n    <div className=\"grid aspect-video w-full max-w-md justify-center text-foreground md:grid-cols-2 [&>div]:relative [&>div]:flex [&>div]:h-[137px] [&>div]:w-[224px] [&>div]:items-center [&>div]:justify-center [&>div]:p-4\">\n      <div>\n        <div className=\"absolute top-[45px] left-[-35px] z-10 text-sm font-medium\">\n          Label\n        </div>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          viewBox=\"0 0 193 40\"\n          width=\"50\"\n          height=\"12\"\n          fill=\"none\"\n          className=\"absolute top-[50px] left-[5px] z-10\"\n        >\n          <g clipPath=\"url(#a)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M173.928 21.13C115.811 44.938 58.751 45.773 0 26.141c4.227-4.386 7.82-2.715 10.567-1.88 21.133 5.64 42.9 6.266 64.457 7.101 31.066 1.253 60.441-5.848 89.183-17.335 1.268-.418 2.325-1.253 4.861-2.924-14.582-2.924-29.165 2.089-41.845-3.76.212-.835.212-1.879.423-2.714 9.51-.627 19.231-1.253 28.742-2.089 9.51-.835 18.808-1.88 28.318-2.506 6.974-.418 9.933 2.924 7.397 9.19-3.17 8.145-7.608 15.664-11.623 23.391-.423.836-1.057 1.88-1.902 2.298-2.325.835-4.65 1.044-7.186 1.67-.422-2.088-1.479-4.386-1.268-6.265.423-2.506 1.902-4.595 3.804-9.19Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"a\">\n              <path fill=\"currentColor\" d=\"M0 0h193v40H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n        <TooltipDemo\n          label=\"Page Views\"\n          payload={[\n            { name: \"Desktop\", value: 186, fill: \"hsl(var(--chart-1))\" },\n            { name: \"Mobile\", value: 80, fill: \"hsl(var(--chart-2))\" },\n          ]}\n          className=\"w-[8rem]\"\n        />\n      </div>\n      <div className=\"items-end\">\n        <div className=\"absolute top-[0px] left-[122px] z-10 text-sm font-medium\">\n          Name\n        </div>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"35\"\n          height=\"42\"\n          fill=\"none\"\n          viewBox=\"0 0 122 148\"\n          className=\"absolute top-[10px] left-[85px] z-10 -scale-x-100\"\n        >\n          <g clipPath=\"url(#ab)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M0 2.65c6.15-4.024 12.299-2.753 17.812-.847a115.56 115.56 0 0 1 21.84 10.59C70.4 32.727 88.849 61.744 96.483 97.54c1.908 9.108 2.544 18.639 3.817 29.017 8.481-4.871 12.934-14.402 21.416-19.909 1.061 4.236-1.06 6.989-2.756 9.319-6.998 9.531-14.207 19.062-21.63 28.382-3.604 4.448-6.36 4.871-10.177 1.059-8.058-7.837-12.935-17.368-14.42-28.382 0-.424.636-1.059 1.485-2.118 9.118 2.33 6.997 13.979 14.843 18.215 3.393-14.614.848-28.593-2.969-42.149-4.029-14.19-9.33-27.746-17.812-39.82-8.27-11.86-18.66-21.392-30.11-30.287C26.93 11.758 14.207 6.039 0 2.65Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"ab\">\n              <path fill=\"currentColor\" d=\"M0 0h122v148H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n        <TooltipDemo\n          label=\"Browser\"\n          hideLabel\n          payload={[\n            { name: \"Chrome\", value: 1286, fill: \"hsl(var(--chart-3))\" },\n            { name: \"Firefox\", value: 1000, fill: \"hsl(var(--chart-4))\" },\n          ]}\n          indicator=\"dashed\"\n          className=\"w-[8rem]\"\n        />\n      </div>\n      <div className=\"hidden! md:flex!\">\n        <TooltipDemo\n          label=\"Page Views\"\n          payload={[\n            { name: \"Desktop\", value: 12486, fill: \"hsl(var(--chart-3))\" },\n          ]}\n          className=\"w-[9rem]\"\n          indicator=\"line\"\n        />\n      </div>\n      <div className=\"items-start! justify-start!\">\n        <div className=\"absolute top-[60px] left-[50px] z-10 text-sm font-medium\">\n          Indicator\n        </div>\n        <TooltipDemo\n          label=\"Browser\"\n          hideLabel\n          payload={[\n            { name: \"Chrome\", value: 1286, fill: \"hsl(var(--chart-1))\" },\n          ]}\n          indicator=\"dot\"\n          className=\"w-[8rem]\"\n        />\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"15\"\n          height=\"34\"\n          fill=\"none\"\n          viewBox=\"0 0 75 175\"\n          className=\"absolute top-[38px] left-[30px] z-10 rotate-[-40deg]\"\n        >\n          <g clipPath=\"url(#abc)\">\n            <path\n              fill=\"currentColor\"\n              d=\"M20.187 175c-4.439-2.109-7.186-2.531-8.032-4.008-3.17-5.484-6.763-10.968-8.454-17.084-5.073-16.242-4.439-32.694-1.057-49.146 5.707-28.053 18.388-52.942 34.24-76.565 1.692-2.531 3.171-5.063 4.862-7.805 0-.21-.211-.632-.634-1.265-4.65 1.265-9.511 2.53-14.161 3.585-2.537.422-5.496.422-8.032-.421-1.48-.422-3.593-2.742-3.593-4.219 0-1.898 1.48-4.218 2.747-5.906 1.057-1.054 2.96-1.265 4.65-1.687C35.406 7.315 48.088 3.729 60.98.776c10.99-2.53 14.584 1.055 13.95 11.812-.634 11.18-.846 22.358-1.268 33.326-.212 3.375-.846 6.96-1.268 10.757-8.878-4.007-8.878-4.007-12.048-38.177C47.03 33.259 38.153 49.289 29.91 65.741 21.667 82.193 16.17 99.49 13.212 117.84c-2.959 18.984.634 36.912 6.975 57.161Z\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"abc\">\n              <path fill=\"currentColor\" d=\"M0 0h75v175H0z\" />\n            </clipPath>\n          </defs>\n        </svg>\n      </div>\n    </div>\n  )\n}\n\nfunction TooltipDemo({\n  indicator = \"dot\",\n  label,\n  payload,\n  hideLabel,\n  hideIndicator,\n  className,\n}: {\n  label: string\n  hideLabel?: boolean\n  hideIndicator?: boolean\n  indicator?: \"line\" | \"dot\" | \"dashed\"\n  payload: {\n    name: string\n    value: number\n    fill: string\n  }[]\n  nameKey?: string\n  labelKey?: string\n} & React.ComponentProps<\"div\">) {\n  const tooltipLabel = hideLabel ? null : (\n    <div className=\"font-medium\">{label}</div>\n  )\n\n  if (!payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\n        \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl transition-all ease-in-out hover:-translate-y-0.5\",\n        className\n      )}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload.map((item, index) => {\n          const indicatorColor = item.fill\n\n          return (\n            <div\n              key={index}\n              className={cn(\n                \"flex w-full items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                indicator === \"dot\" && \"items-center\"\n              )}\n            >\n              <>\n                {!hideIndicator && (\n                  <div\n                    className={cn(\n                      \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n                      {\n                        \"h-2.5 w-2.5\": indicator === \"dot\",\n                        \"w-1\": indicator === \"line\",\n                        \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                          indicator === \"dashed\",\n                        \"my-0.5\": nestLabel && indicator === \"dashed\",\n                      }\n                    )}\n                    style={\n                      {\n                        \"--color-bg\": indicatorColor,\n                        \"--color-border\": indicatorColor,\n                      } as React.CSSProperties\n                    }\n                  />\n                )}\n                <div\n                  className={cn(\n                    \"flex flex-1 justify-between leading-none\",\n                    nestLabel ? \"items-end\" : \"items-center\"\n                  )}\n                >\n                  <div className=\"grid gap-1.5\">\n                    {nestLabel ? tooltipLabel : null}\n                    <span className=\"text-muted-foreground\">{item.name}</span>\n                  </div>\n                  <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                    {item.value.toLocaleString()}\n                  </span>\n                </div>\n              </>\n            </div>\n          )\n        })}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/checkbox-demo.tsx",
    "content": "\"use client\"\n\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function CheckboxDemo() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <div className=\"flex items-center gap-3\">\n        <Checkbox id=\"terms\" />\n        <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n      </div>\n      <div className=\"flex items-start gap-3\">\n        <Checkbox id=\"terms-2\" defaultChecked />\n        <div className=\"grid gap-2\">\n          <Label htmlFor=\"terms-2\">Accept terms and conditions</Label>\n          <p className=\"text-sm text-muted-foreground\">\n            By clicking this checkbox, you agree to the terms and conditions.\n          </p>\n        </div>\n      </div>\n      <div className=\"flex items-start gap-3\">\n        <Checkbox id=\"toggle\" disabled />\n        <Label htmlFor=\"toggle\">Enable notifications</Label>\n      </div>\n      <Label className=\"flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-[[aria-checked=true]]:border-blue-600 has-[[aria-checked=true]]:bg-blue-50 dark:has-[[aria-checked=true]]:border-blue-900 dark:has-[[aria-checked=true]]:bg-blue-950\">\n        <Checkbox\n          id=\"toggle-2\"\n          defaultChecked\n          className=\"data-[state=checked]:border-blue-600 data-[state=checked]:bg-blue-600 data-[state=checked]:text-white dark:data-[state=checked]:border-blue-700 dark:data-[state=checked]:bg-blue-700\"\n        />\n        <div className=\"grid gap-1.5 font-normal\">\n          <p className=\"text-sm leading-none font-medium\">\n            Enable notifications\n          </p>\n          <p className=\"text-sm text-muted-foreground\">\n            You can enable or disable notifications at any time.\n          </p>\n        </div>\n      </Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/checkbox-disabled.tsx",
    "content": "import { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\n\nexport default function CheckboxDisabled() {\n  return (\n    <div className=\"flex items-center space-x-2\">\n      <Checkbox id=\"terms2\" disabled />\n      <label\n        htmlFor=\"terms2\"\n        className=\"text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n      >\n        Accept terms and conditions\n      </label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/checkbox-with-text.tsx",
    "content": "\"use client\"\n\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\n\nexport default function CheckboxWithText() {\n  return (\n    <div className=\"items-top flex gap-2\">\n      <Checkbox id=\"terms1\" />\n      <div className=\"grid gap-1.5 leading-none\">\n        <label\n          htmlFor=\"terms1\"\n          className=\"text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n        >\n          Accept terms and conditions\n        </label>\n        <p className=\"text-sm text-muted-foreground\">\n          You agree to our Terms of Service and Privacy Policy.\n        </p>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/collapsible-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronsUpDown } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\n\nexport default function CollapsibleDemo() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <Collapsible\n      open={isOpen}\n      onOpenChange={setIsOpen}\n      className=\"flex w-[350px] flex-col gap-2\"\n    >\n      <div className=\"flex items-center justify-between gap-4 px-4\">\n        <h4 className=\"text-sm font-semibold\">\n          @peduarte starred 3 repositories\n        </h4>\n        <CollapsibleTrigger asChild>\n          <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n            <ChevronsUpDown />\n            <span className=\"sr-only\">Toggle</span>\n          </Button>\n        </CollapsibleTrigger>\n      </div>\n      <div className=\"rounded-md border px-4 py-2 font-mono text-sm\">\n        @radix-ui/primitives\n      </div>\n      <CollapsibleContent className=\"flex flex-col gap-2\">\n        <div className=\"rounded-md border px-4 py-2 font-mono text-sm\">\n          @radix-ui/colors\n        </div>\n        <div className=\"rounded-md border px-4 py-2 font-mono text-sm\">\n          @stitches/react\n        </div>\n      </CollapsibleContent>\n    </Collapsible>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/combobox-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Check, ChevronsUpDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nconst frameworks = [\n  {\n    value: \"next.js\",\n    label: \"Next.js\",\n  },\n  {\n    value: \"sveltekit\",\n    label: \"SvelteKit\",\n  },\n  {\n    value: \"nuxt.js\",\n    label: \"Nuxt.js\",\n  },\n  {\n    value: \"remix\",\n    label: \"Remix\",\n  },\n  {\n    value: \"astro\",\n    label: \"Astro\",\n  },\n]\n\nexport default function ComboboxDemo() {\n  const [open, setOpen] = React.useState(false)\n  const [value, setValue] = React.useState(\"\")\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"outline\"\n          role=\"combobox\"\n          aria-expanded={open}\n          className=\"w-[200px] justify-between\"\n        >\n          {value\n            ? frameworks.find((framework) => framework.value === value)?.label\n            : \"Select framework...\"}\n          <ChevronsUpDown className=\"opacity-50\" />\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-[200px] p-0\">\n        <Command>\n          <CommandInput placeholder=\"Search framework...\" className=\"h-9\" />\n          <CommandList>\n            <CommandEmpty>No framework found.</CommandEmpty>\n            <CommandGroup>\n              {frameworks.map((framework) => (\n                <CommandItem\n                  key={framework.value}\n                  value={framework.value}\n                  onSelect={(currentValue) => {\n                    setValue(currentValue === value ? \"\" : currentValue)\n                    setOpen(false)\n                  }}\n                >\n                  {framework.label}\n                  <Check\n                    className={cn(\n                      \"ml-auto\",\n                      value === framework.value ? \"opacity-100\" : \"opacity-0\"\n                    )}\n                  />\n                </CommandItem>\n              ))}\n            </CommandGroup>\n          </CommandList>\n        </Command>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/combobox-dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { MoreHorizontal } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nconst labels = [\n  \"feature\",\n  \"bug\",\n  \"enhancement\",\n  \"documentation\",\n  \"design\",\n  \"question\",\n  \"maintenance\",\n]\n\nexport default function ComboboxDropdownMenu() {\n  const [label, setLabel] = React.useState(\"feature\")\n  const [open, setOpen] = React.useState(false)\n\n  return (\n    <div className=\"flex w-full flex-col items-start justify-between rounded-md border px-4 py-3 sm:flex-row sm:items-center\">\n      <p className=\"text-sm leading-none font-medium\">\n        <span className=\"mr-2 rounded-lg bg-primary px-2 py-1 text-xs text-primary-foreground\">\n          {label}\n        </span>\n        <span className=\"text-muted-foreground\">Create a new project</span>\n      </p>\n      <DropdownMenu open={open} onOpenChange={setOpen}>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"ghost\" size=\"sm\">\n            <MoreHorizontal />\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-[200px]\">\n          <DropdownMenuLabel>Actions</DropdownMenuLabel>\n          <DropdownMenuGroup>\n            <DropdownMenuItem>Assign to...</DropdownMenuItem>\n            <DropdownMenuItem>Set due date...</DropdownMenuItem>\n            <DropdownMenuSeparator />\n            <DropdownMenuSub>\n              <DropdownMenuSubTrigger>Apply label</DropdownMenuSubTrigger>\n              <DropdownMenuSubContent className=\"p-0\">\n                <Command>\n                  <CommandInput\n                    placeholder=\"Filter label...\"\n                    autoFocus={true}\n                    className=\"h-9\"\n                  />\n                  <CommandList>\n                    <CommandEmpty>No label found.</CommandEmpty>\n                    <CommandGroup>\n                      {labels.map((label) => (\n                        <CommandItem\n                          key={label}\n                          value={label}\n                          onSelect={(value) => {\n                            setLabel(value)\n                            setOpen(false)\n                          }}\n                        >\n                          {label}\n                        </CommandItem>\n                      ))}\n                    </CommandGroup>\n                  </CommandList>\n                </Command>\n              </DropdownMenuSubContent>\n            </DropdownMenuSub>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem className=\"text-red-600\">\n              Delete\n              <DropdownMenuShortcut>⌘⌫</DropdownMenuShortcut>\n            </DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/combobox-popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\ntype Status = {\n  value: string\n  label: string\n}\n\nconst statuses: Status[] = [\n  {\n    value: \"backlog\",\n    label: \"Backlog\",\n  },\n  {\n    value: \"todo\",\n    label: \"Todo\",\n  },\n  {\n    value: \"in progress\",\n    label: \"In Progress\",\n  },\n  {\n    value: \"done\",\n    label: \"Done\",\n  },\n  {\n    value: \"canceled\",\n    label: \"Canceled\",\n  },\n]\n\nexport default function ComboboxPopover() {\n  const [open, setOpen] = React.useState(false)\n  const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\n    null\n  )\n\n  return (\n    <div className=\"flex items-center space-x-4\">\n      <p className=\"text-sm text-muted-foreground\">Status</p>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" className=\"w-[150px] justify-start\">\n            {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"p-0\" side=\"right\" align=\"start\">\n          <Command>\n            <CommandInput placeholder=\"Change status...\" />\n            <CommandList>\n              <CommandEmpty>No results found.</CommandEmpty>\n              <CommandGroup>\n                {statuses.map((status) => (\n                  <CommandItem\n                    key={status.value}\n                    value={status.value}\n                    onSelect={(value) => {\n                      setSelectedStatus(\n                        statuses.find((priority) => priority.value === value) ||\n                          null\n                      )\n                      setOpen(false)\n                    }}\n                  >\n                    {status.label}\n                  </CommandItem>\n                ))}\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </PopoverContent>\n      </Popover>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/combobox-responsive.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/registry/new-york-v4/ui/command\"\nimport {\n  Drawer,\n  DrawerContent,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\ntype Status = {\n  value: string\n  label: string\n}\n\nconst statuses: Status[] = [\n  {\n    value: \"backlog\",\n    label: \"Backlog\",\n  },\n  {\n    value: \"todo\",\n    label: \"Todo\",\n  },\n  {\n    value: \"in progress\",\n    label: \"In Progress\",\n  },\n  {\n    value: \"done\",\n    label: \"Done\",\n  },\n  {\n    value: \"canceled\",\n    label: \"Canceled\",\n  },\n]\n\nexport default function ComboBoxResponsive() {\n  const [open, setOpen] = React.useState(false)\n  const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n  const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(\n    null\n  )\n\n  if (isDesktop) {\n    return (\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <Button variant=\"outline\" className=\"w-[150px] justify-start\">\n            {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-[200px] p-0\" align=\"start\">\n          <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\n        </PopoverContent>\n      </Popover>\n    )\n  }\n\n  return (\n    <Drawer open={open} onOpenChange={setOpen}>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\" className=\"w-[150px] justify-start\">\n          {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}\n        </Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <div className=\"mt-4 border-t\">\n          <StatusList setOpen={setOpen} setSelectedStatus={setSelectedStatus} />\n        </div>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n\nfunction StatusList({\n  setOpen,\n  setSelectedStatus,\n}: {\n  setOpen: (open: boolean) => void\n  setSelectedStatus: (status: Status | null) => void\n}) {\n  return (\n    <Command>\n      <CommandInput placeholder=\"Filter status...\" />\n      <CommandList>\n        <CommandEmpty>No results found.</CommandEmpty>\n        <CommandGroup>\n          {statuses.map((status) => (\n            <CommandItem\n              key={status.value}\n              value={status.value}\n              onSelect={(value) => {\n                setSelectedStatus(\n                  statuses.find((priority) => priority.value === value) || null\n                )\n                setOpen(false)\n              }}\n            >\n              {status.label}\n            </CommandItem>\n          ))}\n        </CommandGroup>\n      </CommandList>\n    </Command>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/command-demo.tsx",
    "content": "import {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/registry/new-york-v4/ui/command\"\n\nexport default function CommandDemo() {\n  return (\n    <Command className=\"rounded-lg border shadow-md md:min-w-[450px]\">\n      <CommandInput placeholder=\"Type a command or search...\" />\n      <CommandList>\n        <CommandEmpty>No results found.</CommandEmpty>\n        <CommandGroup heading=\"Suggestions\">\n          <CommandItem>\n            <Calendar />\n            <span>Calendar</span>\n          </CommandItem>\n          <CommandItem>\n            <Smile />\n            <span>Search Emoji</span>\n          </CommandItem>\n          <CommandItem disabled>\n            <Calculator />\n            <span>Calculator</span>\n          </CommandItem>\n        </CommandGroup>\n        <CommandSeparator />\n        <CommandGroup heading=\"Settings\">\n          <CommandItem>\n            <User />\n            <span>Profile</span>\n            <CommandShortcut>⌘P</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <CreditCard />\n            <span>Billing</span>\n            <CommandShortcut>⌘B</CommandShortcut>\n          </CommandItem>\n          <CommandItem>\n            <Settings />\n            <span>Settings</span>\n            <CommandShortcut>⌘S</CommandShortcut>\n          </CommandItem>\n        </CommandGroup>\n      </CommandList>\n    </Command>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/command-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Calculator,\n  Calendar,\n  CreditCard,\n  Settings,\n  Smile,\n  User,\n} from \"lucide-react\"\n\nimport {\n  CommandDialog,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n  CommandShortcut,\n} from \"@/registry/new-york-v4/ui/command\"\n\nexport default function CommandDialogDemo() {\n  const [open, setOpen] = React.useState(false)\n\n  React.useEffect(() => {\n    const down = (e: KeyboardEvent) => {\n      if (e.key === \"j\" && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault()\n        setOpen((open) => !open)\n      }\n    }\n\n    document.addEventListener(\"keydown\", down)\n    return () => document.removeEventListener(\"keydown\", down)\n  }, [])\n\n  return (\n    <>\n      <p className=\"text-sm text-muted-foreground\">\n        Press{\" \"}\n        <kbd className=\"pointer-events-none inline-flex h-5 items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100 select-none\">\n          <span className=\"text-xs\">⌘</span>J\n        </kbd>\n      </p>\n      <CommandDialog open={open} onOpenChange={setOpen}>\n        <CommandInput placeholder=\"Type a command or search...\" />\n        <CommandList>\n          <CommandEmpty>No results found.</CommandEmpty>\n          <CommandGroup heading=\"Suggestions\">\n            <CommandItem>\n              <Calendar />\n              <span>Calendar</span>\n            </CommandItem>\n            <CommandItem>\n              <Smile />\n              <span>Search Emoji</span>\n            </CommandItem>\n            <CommandItem>\n              <Calculator />\n              <span>Calculator</span>\n            </CommandItem>\n          </CommandGroup>\n          <CommandSeparator />\n          <CommandGroup heading=\"Settings\">\n            <CommandItem>\n              <User />\n              <span>Profile</span>\n              <CommandShortcut>⌘P</CommandShortcut>\n            </CommandItem>\n            <CommandItem>\n              <CreditCard />\n              <span>Billing</span>\n              <CommandShortcut>⌘B</CommandShortcut>\n            </CommandItem>\n            <CommandItem>\n              <Settings />\n              <span>Settings</span>\n              <CommandShortcut>⌘S</CommandShortcut>\n            </CommandItem>\n          </CommandGroup>\n        </CommandList>\n      </CommandDialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/context-menu-demo.tsx",
    "content": "import {\n  ContextMenu,\n  ContextMenuCheckboxItem,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuLabel,\n  ContextMenuRadioGroup,\n  ContextMenuRadioItem,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuTrigger,\n} from \"@/registry/new-york-v4/ui/context-menu\"\n\nexport default function ContextMenuDemo() {\n  return (\n    <ContextMenu>\n      <ContextMenuTrigger className=\"flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm\">\n        Right click here\n      </ContextMenuTrigger>\n      <ContextMenuContent className=\"w-52\">\n        <ContextMenuItem inset>\n          Back\n          <ContextMenuShortcut>⌘[</ContextMenuShortcut>\n        </ContextMenuItem>\n        <ContextMenuItem inset disabled>\n          Forward\n          <ContextMenuShortcut>⌘]</ContextMenuShortcut>\n        </ContextMenuItem>\n        <ContextMenuItem inset>\n          Reload\n          <ContextMenuShortcut>⌘R</ContextMenuShortcut>\n        </ContextMenuItem>\n        <ContextMenuSub>\n          <ContextMenuSubTrigger inset>More Tools</ContextMenuSubTrigger>\n          <ContextMenuSubContent className=\"w-44\">\n            <ContextMenuItem>Save Page...</ContextMenuItem>\n            <ContextMenuItem>Create Shortcut...</ContextMenuItem>\n            <ContextMenuItem>Name Window...</ContextMenuItem>\n            <ContextMenuSeparator />\n            <ContextMenuItem>Developer Tools</ContextMenuItem>\n            <ContextMenuSeparator />\n            <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n          </ContextMenuSubContent>\n        </ContextMenuSub>\n        <ContextMenuSeparator />\n        <ContextMenuCheckboxItem checked>\n          Show Bookmarks\n        </ContextMenuCheckboxItem>\n        <ContextMenuCheckboxItem>Show Full URLs</ContextMenuCheckboxItem>\n        <ContextMenuSeparator />\n        <ContextMenuRadioGroup value=\"pedro\">\n          <ContextMenuLabel inset>People</ContextMenuLabel>\n          <ContextMenuRadioItem value=\"pedro\">\n            Pedro Duarte\n          </ContextMenuRadioItem>\n          <ContextMenuRadioItem value=\"colm\">Colm Tuite</ContextMenuRadioItem>\n        </ContextMenuRadioGroup>\n      </ContextMenuContent>\n    </ContextMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/data-table-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type ColumnFiltersState,\n  type SortingState,\n  type VisibilityState,\n} from \"@tanstack/react-table\"\nimport { ArrowUpDown, ChevronDown, MoreHorizontal } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\n\nconst data: Payment[] = [\n  {\n    id: \"m5gr84i9\",\n    amount: 316,\n    status: \"success\",\n    email: \"ken99@example.com\",\n  },\n  {\n    id: \"3u1reuv4\",\n    amount: 242,\n    status: \"success\",\n    email: \"Abe45@example.com\",\n  },\n  {\n    id: \"derv1ws0\",\n    amount: 837,\n    status: \"processing\",\n    email: \"Monserrat44@example.com\",\n  },\n  {\n    id: \"5kma53ae\",\n    amount: 874,\n    status: \"success\",\n    email: \"Silas22@example.com\",\n  },\n  {\n    id: \"bhqecj4p\",\n    amount: 721,\n    status: \"failed\",\n    email: \"carmella@example.com\",\n  },\n]\n\nexport type Payment = {\n  id: string\n  amount: number\n  status: \"pending\" | \"processing\" | \"success\" | \"failed\"\n  email: string\n}\n\nexport const columns: ColumnDef<Payment>[] = [\n  {\n    id: \"select\",\n    header: ({ table }) => (\n      <Checkbox\n        checked={\n          table.getIsAllPageRowsSelected() ||\n          (table.getIsSomePageRowsSelected() && \"indeterminate\")\n        }\n        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n        aria-label=\"Select all\"\n      />\n    ),\n    cell: ({ row }) => (\n      <Checkbox\n        checked={row.getIsSelected()}\n        onCheckedChange={(value) => row.toggleSelected(!!value)}\n        aria-label=\"Select row\"\n      />\n    ),\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"status\",\n    header: \"Status\",\n    cell: ({ row }) => (\n      <div className=\"capitalize\">{row.getValue(\"status\")}</div>\n    ),\n  },\n  {\n    accessorKey: \"email\",\n    header: ({ column }) => {\n      return (\n        <Button\n          variant=\"ghost\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n        >\n          Email\n          <ArrowUpDown />\n        </Button>\n      )\n    },\n    cell: ({ row }) => <div className=\"lowercase\">{row.getValue(\"email\")}</div>,\n  },\n  {\n    accessorKey: \"amount\",\n    header: () => <div className=\"text-right\">Amount</div>,\n    cell: ({ row }) => {\n      const amount = parseFloat(row.getValue(\"amount\"))\n\n      // Format the amount as a dollar amount\n      const formatted = new Intl.NumberFormat(\"en-US\", {\n        style: \"currency\",\n        currency: \"USD\",\n      }).format(amount)\n\n      return <div className=\"text-right font-medium\">{formatted}</div>\n    },\n  },\n  {\n    id: \"actions\",\n    enableHiding: false,\n    cell: ({ row }) => {\n      const payment = row.original\n\n      return (\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"ghost\" className=\"h-8 w-8 p-0\">\n              <span className=\"sr-only\">Open menu</span>\n              <MoreHorizontal />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\">\n            <DropdownMenuLabel>Actions</DropdownMenuLabel>\n            <DropdownMenuItem\n              onClick={() => navigator.clipboard.writeText(payment.id)}\n            >\n              Copy payment ID\n            </DropdownMenuItem>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem>View customer</DropdownMenuItem>\n            <DropdownMenuItem>View payment details</DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      )\n    },\n  },\n]\n\nexport default function DataTableDemo() {\n  const [sorting, setSorting] = React.useState<SortingState>([])\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n    []\n  )\n  const [columnVisibility, setColumnVisibility] =\n    React.useState<VisibilityState>({})\n  const [rowSelection, setRowSelection] = React.useState({})\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  })\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"flex items-center py-4\">\n        <Input\n          placeholder=\"Filter emails...\"\n          value={(table.getColumn(\"email\")?.getFilterValue() as string) ?? \"\"}\n          onChange={(event) =>\n            table.getColumn(\"email\")?.setFilterValue(event.target.value)\n          }\n          className=\"max-w-sm\"\n        />\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" className=\"ml-auto\">\n              Columns <ChevronDown />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\">\n            {table\n              .getAllColumns()\n              .filter((column) => column.getCanHide())\n              .map((column) => {\n                return (\n                  <DropdownMenuCheckboxItem\n                    key={column.id}\n                    className=\"capitalize\"\n                    checked={column.getIsVisible()}\n                    onCheckedChange={(value) =>\n                      column.toggleVisibility(!!value)\n                    }\n                  >\n                    {column.id}\n                  </DropdownMenuCheckboxItem>\n                )\n              })}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n      <div className=\"overflow-hidden rounded-md border\">\n        <Table>\n          <TableHeader>\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id}>\n                {headerGroup.headers.map((header) => {\n                  return (\n                    <TableHead key={header.id}>\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(\n                            header.column.columnDef.header,\n                            header.getContext()\n                          )}\n                    </TableHead>\n                  )\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody>\n            {table.getRowModel().rows?.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && \"selected\"}\n                >\n                  {row.getVisibleCells().map((cell) => (\n                    <TableCell key={cell.id}>\n                      {flexRender(\n                        cell.column.columnDef.cell,\n                        cell.getContext()\n                      )}\n                    </TableCell>\n                  ))}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell\n                  colSpan={columns.length}\n                  className=\"h-24 text-center\"\n                >\n                  No results.\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n      <div className=\"flex items-center justify-end space-x-2 py-4\">\n        <div className=\"flex-1 text-sm text-muted-foreground\">\n          {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n          {table.getFilteredRowModel().rows.length} row(s) selected.\n        </div>\n        <div className=\"space-x-2\">\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.previousPage()}\n            disabled={!table.getCanPreviousPage()}\n          >\n            Previous\n          </Button>\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.nextPage()}\n            disabled={!table.getCanNextPage()}\n          >\n            Next\n          </Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/date-picker-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport default function DatePickerDemo() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          variant={\"outline\"}\n          className={cn(\n            \"w-[240px] justify-start text-left font-normal\",\n            !date && \"text-muted-foreground\"\n          )}\n        >\n          <CalendarIcon />\n          {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\">\n        <Calendar\n          mode=\"single\"\n          selected={date}\n          onSelect={setDate}\n          initialFocus\n        />\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/date-picker-with-presets.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays, format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport default function DatePickerWithPresets() {\n  const [date, setDate] = React.useState<Date>()\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          variant={\"outline\"}\n          className={cn(\n            \"w-[240px] justify-start text-left font-normal\",\n            !date && \"text-muted-foreground\"\n          )}\n        >\n          <CalendarIcon />\n          {date ? format(date, \"PPP\") : <span>Pick a date</span>}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent\n        align=\"start\"\n        className=\"flex w-auto flex-col space-y-2 p-2\"\n      >\n        <Select\n          onValueChange={(value) =>\n            setDate(addDays(new Date(), parseInt(value)))\n          }\n        >\n          <SelectTrigger>\n            <SelectValue placeholder=\"Select\" />\n          </SelectTrigger>\n          <SelectContent position=\"popper\">\n            <SelectItem value=\"0\">Today</SelectItem>\n            <SelectItem value=\"1\">Tomorrow</SelectItem>\n            <SelectItem value=\"3\">In 3 days</SelectItem>\n            <SelectItem value=\"7\">In a week</SelectItem>\n          </SelectContent>\n        </Select>\n        <div className=\"rounded-md border\">\n          <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/date-picker-with-range.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays, format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { type DateRange } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Calendar } from \"@/registry/new-york-v4/ui/calendar\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport default function DatePickerWithRange({\n  className,\n}: React.HTMLAttributes<HTMLDivElement>) {\n  const [date, setDate] = React.useState<DateRange | undefined>({\n    from: new Date(2022, 0, 20),\n    to: addDays(new Date(2022, 0, 20), 20),\n  })\n\n  return (\n    <div className={cn(\"grid gap-2\", className)}>\n      <Popover>\n        <PopoverTrigger asChild>\n          <Button\n            id=\"date\"\n            variant={\"outline\"}\n            className={cn(\n              \"w-[300px] justify-start text-left font-normal\",\n              !date && \"text-muted-foreground\"\n            )}\n          >\n            <CalendarIcon />\n            {date?.from ? (\n              date.to ? (\n                <>\n                  {format(date.from, \"LLL dd, y\")} -{\" \"}\n                  {format(date.to, \"LLL dd, y\")}\n                </>\n              ) : (\n                format(date.from, \"LLL dd, y\")\n              )\n            ) : (\n              <span>Pick a date</span>\n            )}\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-auto p-0\" align=\"start\">\n          <Calendar\n            initialFocus\n            mode=\"range\"\n            defaultMonth={date?.from}\n            selected={date}\n            onSelect={setDate}\n            numberOfMonths={2}\n          />\n        </PopoverContent>\n      </Popover>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/dialog-close-button.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function DialogCloseButton() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">Share</Button>\n      </DialogTrigger>\n      <DialogContent className=\"sm:max-w-md\">\n        <DialogHeader>\n          <DialogTitle>Share link</DialogTitle>\n          <DialogDescription>\n            Anyone who has this link will be able to view this.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"flex items-center gap-2\">\n          <div className=\"grid flex-1 gap-2\">\n            <Label htmlFor=\"link\" className=\"sr-only\">\n              Link\n            </Label>\n            <Input\n              id=\"link\"\n              defaultValue=\"https://ui.shadcn.com/docs/installation\"\n              readOnly\n            />\n          </div>\n        </div>\n        <DialogFooter className=\"sm:justify-start\">\n          <DialogClose asChild>\n            <Button type=\"button\" variant=\"secondary\">\n              Close\n            </Button>\n          </DialogClose>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/dialog-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function DialogDemo() {\n  return (\n    <Dialog>\n      <form>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Open Dialog</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Edit profile</DialogTitle>\n            <DialogDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"grid gap-4\">\n            <div className=\"grid gap-3\">\n              <Label htmlFor=\"name-1\">Name</Label>\n              <Input id=\"name-1\" name=\"name\" defaultValue=\"Pedro Duarte\" />\n            </div>\n            <div className=\"grid gap-3\">\n              <Label htmlFor=\"username-1\">Username</Label>\n              <Input id=\"username-1\" name=\"username\" defaultValue=\"@peduarte\" />\n            </div>\n          </div>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DialogClose>\n            <Button type=\"submit\">Save changes</Button>\n          </DialogFooter>\n        </DialogContent>\n      </form>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/drawer-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Minus, Plus } from \"lucide-react\"\nimport { Bar, BarChart, ResponsiveContainer } from \"recharts\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\n\nconst data = [\n  {\n    goal: 400,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 239,\n  },\n  {\n    goal: 300,\n  },\n  {\n    goal: 200,\n  },\n  {\n    goal: 278,\n  },\n  {\n    goal: 189,\n  },\n  {\n    goal: 349,\n  },\n]\n\nexport default function DrawerDemo() {\n  const [goal, setGoal] = React.useState(350)\n\n  function onClick(adjustment: number) {\n    setGoal(Math.max(200, Math.min(400, goal + adjustment)))\n  }\n\n  return (\n    <Drawer>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Open Drawer</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <div className=\"mx-auto w-full max-w-sm\">\n          <DrawerHeader>\n            <DrawerTitle>Move Goal</DrawerTitle>\n            <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"p-4 pb-0\">\n            <div className=\"flex items-center justify-center space-x-2\">\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(-10)}\n                disabled={goal <= 200}\n              >\n                <Minus />\n                <span className=\"sr-only\">Decrease</span>\n              </Button>\n              <div className=\"flex-1 text-center\">\n                <div className=\"text-7xl font-bold tracking-tighter\">\n                  {goal}\n                </div>\n                <div className=\"text-[0.70rem] text-muted-foreground uppercase\">\n                  Calories/day\n                </div>\n              </div>\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-8 w-8 shrink-0 rounded-full\"\n                onClick={() => onClick(10)}\n                disabled={goal >= 400}\n              >\n                <Plus />\n                <span className=\"sr-only\">Increase</span>\n              </Button>\n            </div>\n            <div className=\"mt-3 h-[120px]\">\n              <ResponsiveContainer width=\"100%\" height=\"100%\">\n                <BarChart data={data}>\n                  <Bar\n                    dataKey=\"goal\"\n                    style={\n                      {\n                        fill: \"hsl(var(--foreground))\",\n                        opacity: 0.9,\n                      } as React.CSSProperties\n                    }\n                  />\n                </BarChart>\n              </ResponsiveContainer>\n            </div>\n          </div>\n          <DrawerFooter>\n            <Button>Submit</Button>\n            <DrawerClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DrawerClose>\n          </DrawerFooter>\n        </div>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/drawer-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  Drawer,\n  DrawerClose,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/registry/new-york-v4/ui/drawer\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function DrawerDialogDemo() {\n  const [open, setOpen] = React.useState(false)\n  const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n\n  if (isDesktop) {\n    return (\n      <Dialog open={open} onOpenChange={setOpen}>\n        <DialogTrigger asChild>\n          <Button variant=\"outline\">Edit Profile</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Edit profile</DialogTitle>\n            <DialogDescription>\n              Make changes to your profile here. Click save when you&apos;re\n              done.\n            </DialogDescription>\n          </DialogHeader>\n          <ProfileForm />\n        </DialogContent>\n      </Dialog>\n    )\n  }\n\n  return (\n    <Drawer open={open} onOpenChange={setOpen}>\n      <DrawerTrigger asChild>\n        <Button variant=\"outline\">Edit Profile</Button>\n      </DrawerTrigger>\n      <DrawerContent>\n        <DrawerHeader className=\"text-left\">\n          <DrawerTitle>Edit profile</DrawerTitle>\n          <DrawerDescription>\n            Make changes to your profile here. Click save when you&apos;re done.\n          </DrawerDescription>\n        </DrawerHeader>\n        <ProfileForm className=\"px-4\" />\n        <DrawerFooter className=\"pt-2\">\n          <DrawerClose asChild>\n            <Button variant=\"outline\">Cancel</Button>\n          </DrawerClose>\n        </DrawerFooter>\n      </DrawerContent>\n    </Drawer>\n  )\n}\n\nfunction ProfileForm({ className }: React.ComponentProps<\"form\">) {\n  return (\n    <form className={cn(\"grid items-start gap-6\", className)}>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"email\">Email</Label>\n        <Input type=\"email\" id=\"email\" defaultValue=\"shadcn@example.com\" />\n      </div>\n      <div className=\"grid gap-3\">\n        <Label htmlFor=\"username\">Username</Label>\n        <Input id=\"username\" defaultValue=\"@shadcn\" />\n      </div>\n      <Button type=\"submit\">Save changes</Button>\n    </form>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/dropdown-menu-checkboxes.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport type { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\ntype Checked = React.ComponentProps<\n  typeof DropdownMenuPrimitive.CheckboxItem\n>[\"checked\"]\n\nexport default function DropdownMenuCheckboxes() {\n  const [showStatusBar, setShowStatusBar] = React.useState<Checked>(true)\n  const [showActivityBar, setShowActivityBar] = React.useState<Checked>(false)\n  const [showPanel, setShowPanel] = React.useState<Checked>(false)\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-56\">\n        <DropdownMenuLabel>Appearance</DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuCheckboxItem\n          checked={showStatusBar}\n          onCheckedChange={setShowStatusBar}\n        >\n          Status Bar\n        </DropdownMenuCheckboxItem>\n        <DropdownMenuCheckboxItem\n          checked={showActivityBar}\n          onCheckedChange={setShowActivityBar}\n          disabled\n        >\n          Activity Bar\n        </DropdownMenuCheckboxItem>\n        <DropdownMenuCheckboxItem\n          checked={showPanel}\n          onCheckedChange={setShowPanel}\n        >\n          Panel\n        </DropdownMenuCheckboxItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/dropdown-menu-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport default function DropdownMenuDemo() {\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-56\" align=\"start\">\n        <DropdownMenuLabel>My Account</DropdownMenuLabel>\n        <DropdownMenuGroup>\n          <DropdownMenuItem>\n            Profile\n            <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Billing\n            <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Settings\n            <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>\n          </DropdownMenuItem>\n          <DropdownMenuItem>\n            Keyboard shortcuts\n            <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem>Team</DropdownMenuItem>\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>\n            <DropdownMenuPortal>\n              <DropdownMenuSubContent>\n                <DropdownMenuItem>Email</DropdownMenuItem>\n                <DropdownMenuItem>Message</DropdownMenuItem>\n                <DropdownMenuSeparator />\n                <DropdownMenuItem>More...</DropdownMenuItem>\n              </DropdownMenuSubContent>\n            </DropdownMenuPortal>\n          </DropdownMenuSub>\n          <DropdownMenuItem>\n            New Team\n            <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>GitHub</DropdownMenuItem>\n        <DropdownMenuItem>Support</DropdownMenuItem>\n        <DropdownMenuItem disabled>API</DropdownMenuItem>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem>\n          Log out\n          <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/dropdown-menu-dialog.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { MoreHorizontalIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/new-york-v4/ui/dialog\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function DropdownMenuDialog() {\n  const [showNewDialog, setShowNewDialog] = useState(false)\n  const [showShareDialog, setShowShareDialog] = useState(false)\n\n  return (\n    <>\n      <DropdownMenu modal={false}>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" aria-label=\"Open menu\" size=\"icon-sm\">\n            <MoreHorizontalIcon />\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"w-40\" align=\"end\">\n          <DropdownMenuLabel>File Actions</DropdownMenuLabel>\n          <DropdownMenuGroup>\n            <DropdownMenuItem onSelect={() => setShowNewDialog(true)}>\n              New File...\n            </DropdownMenuItem>\n            <DropdownMenuItem onSelect={() => setShowShareDialog(true)}>\n              Share...\n            </DropdownMenuItem>\n            <DropdownMenuItem disabled>Download</DropdownMenuItem>\n          </DropdownMenuGroup>\n        </DropdownMenuContent>\n      </DropdownMenu>\n      <Dialog open={showNewDialog} onOpenChange={setShowNewDialog}>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Create New File</DialogTitle>\n            <DialogDescription>\n              Provide a name for your new file. Click create when you&apos;re\n              done.\n            </DialogDescription>\n          </DialogHeader>\n          <FieldGroup className=\"pb-3\">\n            <Field>\n              <FieldLabel htmlFor=\"filename\">File Name</FieldLabel>\n              <Input id=\"filename\" name=\"filename\" placeholder=\"document.txt\" />\n            </Field>\n          </FieldGroup>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DialogClose>\n            <Button type=\"submit\">Create</Button>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n      <Dialog open={showShareDialog} onOpenChange={setShowShareDialog}>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Share File</DialogTitle>\n            <DialogDescription>\n              Anyone with the link will be able to view this file.\n            </DialogDescription>\n          </DialogHeader>\n          <FieldGroup className=\"py-3\">\n            <Field>\n              <Label htmlFor=\"email\">Email Address</Label>\n              <Input\n                id=\"email\"\n                name=\"email\"\n                type=\"email\"\n                placeholder=\"shadcn@vercel.com\"\n                autoComplete=\"off\"\n              />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"message\">Message (Optional)</FieldLabel>\n              <Textarea\n                id=\"message\"\n                name=\"message\"\n                placeholder=\"Check out this file\"\n              />\n            </Field>\n          </FieldGroup>\n          <DialogFooter>\n            <DialogClose asChild>\n              <Button variant=\"outline\">Cancel</Button>\n            </DialogClose>\n            <Button type=\"submit\">Send Invite</Button>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/dropdown-menu-radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuLabel,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport default function DropdownMenuRadioGroupDemo() {\n  const [position, setPosition] = React.useState(\"bottom\")\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-56\">\n        <DropdownMenuLabel>Panel Position</DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>\n          <DropdownMenuRadioItem value=\"top\">Top</DropdownMenuRadioItem>\n          <DropdownMenuRadioItem value=\"bottom\">Bottom</DropdownMenuRadioItem>\n          <DropdownMenuRadioItem value=\"right\">Right</DropdownMenuRadioItem>\n        </DropdownMenuRadioGroup>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/empty-avatar-group.tsx",
    "content": "import { PlusIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\n\nexport default function EmptyAvatarGroup() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia>\n          <div className=\"flex -space-x-2 *:data-[slot=avatar]:size-12 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n            <Avatar>\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </div>\n        </EmptyMedia>\n        <EmptyTitle>No Team Members</EmptyTitle>\n        <EmptyDescription>\n          Invite your team to collaborate on this project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button size=\"sm\">\n          <PlusIcon />\n          Invite Members\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/empty-avatar.tsx",
    "content": "import {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\n\nexport default function EmptyAvatar() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia variant=\"default\">\n          <Avatar className=\"size-12\">\n            <AvatarImage\n              src=\"https://github.com/shadcn.png\"\n              className=\"grayscale\"\n            />\n            <AvatarFallback>LR</AvatarFallback>\n          </Avatar>\n        </EmptyMedia>\n        <EmptyTitle>User Offline</EmptyTitle>\n        <EmptyDescription>\n          This user is currently offline. You can leave a message to notify them\n          or try again later.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button size=\"sm\">Leave Message</Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/empty-background.tsx",
    "content": "import { IconBell } from \"@tabler/icons-react\"\nimport { RefreshCcwIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\n\nexport default function EmptyMuted() {\n  return (\n    <Empty className=\"h-full bg-gradient-to-b from-muted/50 from-30% to-background\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconBell />\n        </EmptyMedia>\n        <EmptyTitle>No Notifications</EmptyTitle>\n        <EmptyDescription>\n          You&apos;re all caught up. New notifications will appear here.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          <RefreshCcwIcon />\n          Refresh\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/empty-demo.tsx",
    "content": "import { IconFolderCode } from \"@tabler/icons-react\"\nimport { ArrowUpRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\n\nexport default function EmptyDemo() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconFolderCode />\n        </EmptyMedia>\n        <EmptyTitle>No Projects Yet</EmptyTitle>\n        <EmptyDescription>\n          You haven&apos;t created any projects yet. Get started by creating\n          your first project.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <div className=\"flex gap-2\">\n          <Button>Create Project</Button>\n          <Button variant=\"outline\">Import Project</Button>\n        </div>\n      </EmptyContent>\n      <Button\n        variant=\"link\"\n        asChild\n        className=\"text-muted-foreground\"\n        size=\"sm\"\n      >\n        <a href=\"#\">\n          Learn More <ArrowUpRightIcon />\n        </a>\n      </Button>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/empty-icon.tsx",
    "content": "import {\n  IconBookmark,\n  IconHeart,\n  IconInbox,\n  IconStar,\n} from \"@tabler/icons-react\"\n\nimport {\n  Empty,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\n\nexport default function EmptyIcon() {\n  return (\n    <div className=\"grid gap-8 md:grid-cols-2\">\n      <Empty>\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconInbox />\n          </EmptyMedia>\n          <EmptyTitle>No messages</EmptyTitle>\n          <EmptyDescription>\n            Your inbox is empty. New messages will appear here.\n          </EmptyDescription>\n        </EmptyHeader>\n      </Empty>\n\n      <Empty>\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconStar />\n          </EmptyMedia>\n          <EmptyTitle>No favorites</EmptyTitle>\n          <EmptyDescription>\n            Items you mark as favorites will appear here.\n          </EmptyDescription>\n        </EmptyHeader>\n      </Empty>\n\n      <Empty>\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconHeart />\n          </EmptyMedia>\n          <EmptyTitle>No likes yet</EmptyTitle>\n          <EmptyDescription>\n            Content you like will be saved here for easy access.\n          </EmptyDescription>\n        </EmptyHeader>\n      </Empty>\n\n      <Empty>\n        <EmptyHeader>\n          <EmptyMedia variant=\"icon\">\n            <IconBookmark />\n          </EmptyMedia>\n          <EmptyTitle>No bookmarks</EmptyTitle>\n          <EmptyDescription>\n            Save interesting content by bookmarking it.\n          </EmptyDescription>\n        </EmptyHeader>\n      </Empty>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/empty-input-group.tsx",
    "content": "import { SearchIcon } from \"lucide-react\"\n\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Kbd } from \"@/registry/new-york-v4/ui/kbd\"\n\nexport default function EmptyInputGroup() {\n  return (\n    <Empty>\n      <EmptyHeader>\n        <EmptyTitle>404 - Not Found</EmptyTitle>\n        <EmptyDescription>\n          The page you&apos;re looking for doesn&apos;t exist. Try searching for\n          what you need below.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <InputGroup className=\"sm:w-3/4\">\n          <InputGroupInput placeholder=\"Try searching for pages...\" />\n          <InputGroupAddon>\n            <SearchIcon />\n          </InputGroupAddon>\n          <InputGroupAddon align=\"inline-end\">\n            <Kbd>/</Kbd>\n          </InputGroupAddon>\n        </InputGroup>\n        <EmptyDescription>\n          Need help? <a href=\"#\">Contact support</a>\n        </EmptyDescription>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/empty-outline.tsx",
    "content": "import { IconCloud } from \"@tabler/icons-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\n\nexport default function EmptyOutline() {\n  return (\n    <Empty className=\"border border-dashed\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <IconCloud />\n        </EmptyMedia>\n        <EmptyTitle>Cloud Storage Empty</EmptyTitle>\n        <EmptyDescription>\n          Upload files to your cloud storage to access them anywhere.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          Upload Files\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-checkbox.tsx",
    "content": "import { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\n\nexport default function FieldCheckbox() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <FieldGroup>\n        <FieldSet>\n          <FieldLegend variant=\"label\">\n            Show these items on the desktop\n          </FieldLegend>\n          <FieldDescription>\n            Select the items you want to show on the desktop.\n          </FieldDescription>\n          <FieldGroup className=\"gap-3\">\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"finder-pref-9k2-hard-disks-ljj\" />\n              <FieldLabel\n                htmlFor=\"finder-pref-9k2-hard-disks-ljj\"\n                className=\"font-normal\"\n                defaultChecked\n              >\n                Hard disks\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"finder-pref-9k2-external-disks-1yg\" />\n              <FieldLabel\n                htmlFor=\"finder-pref-9k2-external-disks-1yg\"\n                className=\"font-normal\"\n              >\n                External disks\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"finder-pref-9k2-cds-dvds-fzt\" />\n              <FieldLabel\n                htmlFor=\"finder-pref-9k2-cds-dvds-fzt\"\n                className=\"font-normal\"\n              >\n                CDs, DVDs, and iPods\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"finder-pref-9k2-connected-servers-6l2\" />\n              <FieldLabel\n                htmlFor=\"finder-pref-9k2-connected-servers-6l2\"\n                className=\"font-normal\"\n              >\n                Connected servers\n              </FieldLabel>\n            </Field>\n          </FieldGroup>\n        </FieldSet>\n        <FieldSeparator />\n        <Field orientation=\"horizontal\">\n          <Checkbox id=\"finder-pref-9k2-sync-folders-nep\" defaultChecked />\n          <FieldContent>\n            <FieldLabel htmlFor=\"finder-pref-9k2-sync-folders-nep\">\n              Sync Desktop & Documents folders\n            </FieldLabel>\n            <FieldDescription>\n              Your Desktop & Documents folders are being synced with iCloud\n              Drive. You can access them from other devices.\n            </FieldDescription>\n          </FieldContent>\n        </Field>\n      </FieldGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-choice-card.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\n\nexport default function FieldChoiceCard() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <FieldGroup>\n        <FieldSet>\n          <FieldLabel htmlFor=\"compute-environment-p8w\">\n            Compute Environment\n          </FieldLabel>\n          <FieldDescription>\n            Select the compute environment for your cluster.\n          </FieldDescription>\n          <RadioGroup defaultValue=\"kubernetes\">\n            <FieldLabel htmlFor=\"kubernetes-r2h\">\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>Kubernetes</FieldTitle>\n                  <FieldDescription>\n                    Run GPU workloads on a K8s configured cluster.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem value=\"kubernetes\" id=\"kubernetes-r2h\" />\n              </Field>\n            </FieldLabel>\n            <FieldLabel htmlFor=\"vm-z4k\">\n              <Field orientation=\"horizontal\">\n                <FieldContent>\n                  <FieldTitle>Virtual Machine</FieldTitle>\n                  <FieldDescription>\n                    Access a VM configured cluster to run GPU workloads.\n                  </FieldDescription>\n                </FieldContent>\n                <RadioGroupItem value=\"vm\" id=\"vm-z4k\" />\n              </Field>\n            </FieldLabel>\n          </RadioGroup>\n        </FieldSet>\n      </FieldGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function FieldDemo() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <form>\n        <FieldGroup>\n          <FieldSet>\n            <FieldLegend>Payment Method</FieldLegend>\n            <FieldDescription>\n              All transactions are secure and encrypted\n            </FieldDescription>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-name-43j\">\n                  Name on Card\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-name-43j\"\n                  placeholder=\"Evil Rabbit\"\n                  required\n                />\n              </Field>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-card-number-uw1\">\n                  Card Number\n                </FieldLabel>\n                <Input\n                  id=\"checkout-7j9-card-number-uw1\"\n                  placeholder=\"1234 5678 9012 3456\"\n                  required\n                />\n                <FieldDescription>\n                  Enter your 16-digit card number\n                </FieldDescription>\n              </Field>\n              <div className=\"grid grid-cols-3 gap-4\">\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-exp-month-ts6\">\n                    Month\n                  </FieldLabel>\n                  <Select defaultValue=\"\">\n                    <SelectTrigger id=\"checkout-exp-month-ts6\">\n                      <SelectValue placeholder=\"MM\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"01\">01</SelectItem>\n                      <SelectItem value=\"02\">02</SelectItem>\n                      <SelectItem value=\"03\">03</SelectItem>\n                      <SelectItem value=\"04\">04</SelectItem>\n                      <SelectItem value=\"05\">05</SelectItem>\n                      <SelectItem value=\"06\">06</SelectItem>\n                      <SelectItem value=\"07\">07</SelectItem>\n                      <SelectItem value=\"08\">08</SelectItem>\n                      <SelectItem value=\"09\">09</SelectItem>\n                      <SelectItem value=\"10\">10</SelectItem>\n                      <SelectItem value=\"11\">11</SelectItem>\n                      <SelectItem value=\"12\">12</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-exp-year-f59\">\n                    Year\n                  </FieldLabel>\n                  <Select defaultValue=\"\">\n                    <SelectTrigger id=\"checkout-7j9-exp-year-f59\">\n                      <SelectValue placeholder=\"YYYY\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"2024\">2024</SelectItem>\n                      <SelectItem value=\"2025\">2025</SelectItem>\n                      <SelectItem value=\"2026\">2026</SelectItem>\n                      <SelectItem value=\"2027\">2027</SelectItem>\n                      <SelectItem value=\"2028\">2028</SelectItem>\n                      <SelectItem value=\"2029\">2029</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </Field>\n                <Field>\n                  <FieldLabel htmlFor=\"checkout-7j9-cvv\">CVV</FieldLabel>\n                  <Input id=\"checkout-7j9-cvv\" placeholder=\"123\" required />\n                </Field>\n              </div>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSeparator />\n          <FieldSet>\n            <FieldLegend>Billing Address</FieldLegend>\n            <FieldDescription>\n              The billing address associated with your payment method\n            </FieldDescription>\n            <FieldGroup>\n              <Field orientation=\"horizontal\">\n                <Checkbox\n                  id=\"checkout-7j9-same-as-shipping-wgm\"\n                  defaultChecked\n                />\n                <FieldLabel\n                  htmlFor=\"checkout-7j9-same-as-shipping-wgm\"\n                  className=\"font-normal\"\n                >\n                  Same as shipping address\n                </FieldLabel>\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <FieldSet>\n            <FieldGroup>\n              <Field>\n                <FieldLabel htmlFor=\"checkout-7j9-optional-comments\">\n                  Comments\n                </FieldLabel>\n                <Textarea\n                  id=\"checkout-7j9-optional-comments\"\n                  placeholder=\"Add any additional comments\"\n                  className=\"resize-none\"\n                />\n              </Field>\n            </FieldGroup>\n          </FieldSet>\n          <Field orientation=\"horizontal\">\n            <Button type=\"submit\">Submit</Button>\n            <Button variant=\"outline\" type=\"button\">\n              Cancel\n            </Button>\n          </Field>\n        </FieldGroup>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-fieldset.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport default function FieldFieldset() {\n  return (\n    <div className=\"w-full max-w-md space-y-6\">\n      <FieldSet>\n        <FieldLegend>Address Information</FieldLegend>\n        <FieldDescription>\n          We need your address to deliver your order.\n        </FieldDescription>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"street\">Street Address</FieldLabel>\n            <Input id=\"street\" type=\"text\" placeholder=\"123 Main St\" />\n          </Field>\n          <div className=\"grid grid-cols-2 gap-4\">\n            <Field>\n              <FieldLabel htmlFor=\"city\">City</FieldLabel>\n              <Input id=\"city\" type=\"text\" placeholder=\"New York\" />\n            </Field>\n            <Field>\n              <FieldLabel htmlFor=\"zip\">Postal Code</FieldLabel>\n              <Input id=\"zip\" type=\"text\" placeholder=\"90502\" />\n            </Field>\n          </div>\n        </FieldGroup>\n      </FieldSet>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-group.tsx",
    "content": "import { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSeparator,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\n\nexport default function FieldGroupExample() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <FieldGroup>\n        <FieldSet>\n          <FieldLabel>Responses</FieldLabel>\n          <FieldDescription>\n            Get notified when ChatGPT responds to requests that take time, like\n            research or image generation.\n          </FieldDescription>\n          <FieldGroup data-slot=\"checkbox-group\">\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"push\" defaultChecked disabled />\n              <FieldLabel htmlFor=\"push\" className=\"font-normal\">\n                Push notifications\n              </FieldLabel>\n            </Field>\n          </FieldGroup>\n        </FieldSet>\n        <FieldSeparator />\n        <FieldSet>\n          <FieldLabel>Tasks</FieldLabel>\n          <FieldDescription>\n            Get notified when tasks you&apos;ve created have updates.{\" \"}\n            <a href=\"#\">Manage tasks</a>\n          </FieldDescription>\n          <FieldGroup data-slot=\"checkbox-group\">\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"push-tasks\" />\n              <FieldLabel htmlFor=\"push-tasks\" className=\"font-normal\">\n                Push notifications\n              </FieldLabel>\n            </Field>\n            <Field orientation=\"horizontal\">\n              <Checkbox id=\"email-tasks\" />\n              <FieldLabel htmlFor=\"email-tasks\" className=\"font-normal\">\n                Email notifications\n              </FieldLabel>\n            </Field>\n          </FieldGroup>\n        </FieldSet>\n      </FieldGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-input.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport default function FieldInput() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <FieldSet>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"username\">Username</FieldLabel>\n            <Input id=\"username\" type=\"text\" placeholder=\"Max Leiter\" />\n            <FieldDescription>\n              Choose a unique username for your account.\n            </FieldDescription>\n          </Field>\n          <Field>\n            <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n            <FieldDescription>\n              Must be at least 8 characters long.\n            </FieldDescription>\n            <Input id=\"password\" type=\"password\" placeholder=\"••••••••\" />\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-radio.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldLabel,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\n\nexport default function FieldRadio() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <FieldSet>\n        <FieldLabel>Subscription Plan</FieldLabel>\n        <FieldDescription>\n          Yearly and lifetime plans offer significant savings.\n        </FieldDescription>\n        <RadioGroup defaultValue=\"monthly\">\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"monthly\" id=\"plan-monthly\" />\n            <FieldLabel htmlFor=\"plan-monthly\" className=\"font-normal\">\n              Monthly ($9.99/month)\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"yearly\" id=\"plan-yearly\" />\n            <FieldLabel htmlFor=\"plan-yearly\" className=\"font-normal\">\n              Yearly ($99.99/year)\n            </FieldLabel>\n          </Field>\n          <Field orientation=\"horizontal\">\n            <RadioGroupItem value=\"lifetime\" id=\"plan-lifetime\" />\n            <FieldLabel htmlFor=\"plan-lifetime\" className=\"font-normal\">\n              Lifetime ($299.99)\n            </FieldLabel>\n          </Field>\n        </RadioGroup>\n      </FieldSet>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-responsive.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function FieldResponsive() {\n  return (\n    <div className=\"w-full max-w-4xl\">\n      <form>\n        <FieldSet>\n          <FieldLegend>Profile</FieldLegend>\n          <FieldDescription>Fill in your profile information.</FieldDescription>\n          <FieldSeparator />\n          <FieldGroup>\n            <Field orientation=\"responsive\">\n              <FieldContent>\n                <FieldLabel htmlFor=\"name\">Name</FieldLabel>\n                <FieldDescription>\n                  Provide your full name for identification\n                </FieldDescription>\n              </FieldContent>\n              <Input id=\"name\" placeholder=\"Evil Rabbit\" required />\n            </Field>\n            <FieldSeparator />\n            <Field orientation=\"responsive\">\n              <FieldContent>\n                <FieldLabel htmlFor=\"lastName\">Message</FieldLabel>\n                <FieldDescription>\n                  You can write your message here. Keep it short, preferably\n                  under 100 characters.\n                </FieldDescription>\n              </FieldContent>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Hello, world!\"\n                required\n                className=\"min-h-[100px] resize-none sm:min-w-[300px]\"\n              />\n            </Field>\n            <FieldSeparator />\n            <Field orientation=\"responsive\">\n              <Button type=\"submit\">Submit</Button>\n              <Button type=\"button\" variant=\"outline\">\n                Cancel\n              </Button>\n            </Field>\n          </FieldGroup>\n        </FieldSet>\n      </form>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-select.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport default function FieldSelect() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <Field>\n        <FieldLabel>Department</FieldLabel>\n        <Select>\n          <SelectTrigger>\n            <SelectValue placeholder=\"Choose department\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectItem value=\"engineering\">Engineering</SelectItem>\n            <SelectItem value=\"design\">Design</SelectItem>\n            <SelectItem value=\"marketing\">Marketing</SelectItem>\n            <SelectItem value=\"sales\">Sales</SelectItem>\n            <SelectItem value=\"support\">Customer Support</SelectItem>\n            <SelectItem value=\"hr\">Human Resources</SelectItem>\n            <SelectItem value=\"finance\">Finance</SelectItem>\n            <SelectItem value=\"operations\">Operations</SelectItem>\n          </SelectContent>\n        </Select>\n        <FieldDescription>\n          Select your department or area of work.\n        </FieldDescription>\n      </Field>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-slider.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport {\n  Field,\n  FieldDescription,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\n\nexport default function FieldSlider() {\n  const [value, setValue] = useState([200, 800])\n  return (\n    <div className=\"w-full max-w-md\">\n      <Field>\n        <FieldTitle>Price Range</FieldTitle>\n        <FieldDescription>\n          Set your budget range ($\n          <span className=\"font-medium tabular-nums\">{value[0]}</span> -{\" \"}\n          <span className=\"font-medium tabular-nums\">{value[1]}</span>).\n        </FieldDescription>\n        <Slider\n          value={value}\n          onValueChange={setValue}\n          max={1000}\n          min={0}\n          step={10}\n          className=\"mt-2 w-full\"\n          aria-label=\"Price Range\"\n        />\n      </Field>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-switch.tsx",
    "content": "import {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nexport default function FieldSwitch() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <Field orientation=\"horizontal\">\n        <FieldContent>\n          <FieldLabel htmlFor=\"2fa\">Multi-factor authentication</FieldLabel>\n          <FieldDescription>\n            Enable multi-factor authentication. If you do not have a two-factor\n            device, you can use a one-time code sent to your email.\n          </FieldDescription>\n        </FieldContent>\n        <Switch id=\"2fa\" />\n      </Field>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/field-textarea.tsx",
    "content": "import {\n  Field,\n  FieldDescription,\n  FieldGroup,\n  FieldLabel,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function FieldTextarea() {\n  return (\n    <div className=\"w-full max-w-md\">\n      <FieldSet>\n        <FieldGroup>\n          <Field>\n            <FieldLabel htmlFor=\"feedback\">Feedback</FieldLabel>\n            <Textarea\n              id=\"feedback\"\n              placeholder=\"Your feedback helps us improve...\"\n              rows={4}\n            />\n            <FieldDescription>\n              Share your thoughts about our service.\n            </FieldDescription>\n          </Field>\n        </FieldGroup>\n      </FieldSet>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-next-complex-action.ts",
    "content": "\"use server\"\n\nimport { formSchema, type FormState } from \"./form-next-complex-schema\"\n\nexport async function complexFormAction(\n  _prevState: FormState,\n  formData: FormData\n) {\n  // Sleep for 1 second\n  await new Promise((resolve) => setTimeout(resolve, 1000))\n\n  const values = {\n    plan: formData.get(\"plan\") as FormState[\"values\"][\"plan\"],\n    billingPeriod: formData.get(\"billingPeriod\") as string,\n    addons: formData.getAll(\"addons\") as string[],\n    emailNotifications: formData.get(\"emailNotifications\") === \"on\",\n  }\n\n  const result = formSchema.safeParse(values)\n\n  if (!result.success) {\n    return {\n      values,\n      success: false,\n      errors: result.error.flatten().fieldErrors,\n    }\n  }\n\n  // Do something with the values.\n  // Call your database or API here.\n\n  return {\n    values,\n    errors: null,\n    success: true,\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-next-complex-schema.ts",
    "content": "import { z } from \"zod\"\n\nexport const formSchema = z.object({\n  plan: z\n    .string({\n      required_error: \"Please select a subscription plan\",\n    })\n    .min(1, \"Please select a subscription plan\")\n    .refine((value) => value === \"basic\" || value === \"pro\", {\n      message: \"Invalid plan selection. Please choose Basic or Pro\",\n    }),\n  billingPeriod: z\n    .string({\n      required_error: \"Please select a billing period\",\n    })\n    .min(1, \"Please select a billing period\"),\n  addons: z\n    .array(z.string())\n    .min(1, \"Please select at least one add-on\")\n    .max(3, \"You can select up to 3 add-ons\")\n    .refine(\n      (value) => value.every((addon) => addons.some((a) => a.id === addon)),\n      {\n        message: \"You selected an invalid add-on\",\n      }\n    ),\n  emailNotifications: z.boolean(),\n})\n\nexport type FormState = {\n  values: z.infer<typeof formSchema>\n  errors: null | Partial<Record<keyof z.infer<typeof formSchema>, string[]>>\n  success: boolean\n}\n\nexport const addons = [\n  {\n    id: \"analytics\",\n    title: \"Analytics\",\n    description: \"Advanced analytics and reporting\",\n  },\n  {\n    id: \"backup\",\n    title: \"Backup\",\n    description: \"Automated daily backups\",\n  },\n  {\n    id: \"support\",\n    title: \"Priority Support\",\n    description: \"24/7 premium customer support\",\n  },\n] as const\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-next-complex.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Form from \"next/form\"\nimport { toast } from \"sonner\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nimport { complexFormAction } from \"./form-next-complex-action\"\nimport { addons, type FormState } from \"./form-next-complex-schema\"\n\nexport default function FormNextComplex() {\n  const [formState, formAction, pending] = React.useActionState<\n    FormState,\n    FormData\n  >(complexFormAction, {\n    values: {\n      plan: \"basic\",\n      billingPeriod: \"monthly\",\n      addons: [],\n      emailNotifications: false,\n    },\n    errors: null,\n    success: false,\n  })\n\n  React.useEffect(() => {\n    if (formState.success) {\n      toast.success(\"Preferences saved\", {\n        description: \"Your subscription plan has been updated.\",\n      })\n    }\n  }, [formState.success])\n\n  return (\n    <Card className=\"w-full max-w-sm\">\n      <CardContent>\n        <Form action={formAction} id=\"subscription-form\">\n          <FieldGroup>\n            <FieldSet data-invalid={!!formState.errors?.plan?.length}>\n              <FieldLegend>Subscription Plan</FieldLegend>\n              <FieldDescription>\n                Choose your subscription plan.\n              </FieldDescription>\n              <RadioGroup\n                name=\"plan\"\n                defaultValue={formState.values.plan}\n                disabled={pending}\n                aria-invalid={!!formState.errors?.plan?.length}\n              >\n                <FieldLabel htmlFor=\"basic\">\n                  <Field orientation=\"horizontal\">\n                    <FieldContent>\n                      <FieldTitle>Basic</FieldTitle>\n                      <FieldDescription>\n                        For individuals and small teams\n                      </FieldDescription>\n                    </FieldContent>\n                    <RadioGroupItem value=\"basic\" id=\"basic\" />\n                  </Field>\n                </FieldLabel>\n                <FieldLabel htmlFor=\"pro\">\n                  <Field orientation=\"horizontal\">\n                    <FieldContent>\n                      <FieldTitle>Pro</FieldTitle>\n                      <FieldDescription>\n                        For businesses with higher demands\n                      </FieldDescription>\n                    </FieldContent>\n                    <RadioGroupItem value=\"pro\" id=\"pro\" />\n                  </Field>\n                </FieldLabel>\n              </RadioGroup>\n              {formState.errors?.plan && (\n                <FieldError>{formState.errors.plan[0]}</FieldError>\n              )}\n            </FieldSet>\n            <FieldSeparator />\n            <Field data-invalid={!!formState.errors?.billingPeriod?.length}>\n              <FieldLabel htmlFor=\"billingPeriod\">Billing Period</FieldLabel>\n              <Select\n                name=\"billingPeriod\"\n                defaultValue={formState.values.billingPeriod}\n                disabled={pending}\n                aria-invalid={!!formState.errors?.billingPeriod?.length}\n              >\n                <SelectTrigger id=\"billingPeriod\">\n                  <SelectValue placeholder=\"Select\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"monthly\">Monthly</SelectItem>\n                  <SelectItem value=\"yearly\">Yearly</SelectItem>\n                </SelectContent>\n              </Select>\n              <FieldDescription>\n                Choose how often you want to be billed.\n              </FieldDescription>\n              {formState.errors?.billingPeriod && (\n                <FieldError>{formState.errors.billingPeriod[0]}</FieldError>\n              )}\n            </Field>\n            <FieldSeparator />\n            <FieldSet>\n              <FieldLegend>Add-ons</FieldLegend>\n              <FieldDescription>\n                Select additional features you&apos;d like to include.\n              </FieldDescription>\n              <FieldGroup data-slot=\"checkbox-group\">\n                {addons.map((addon) => (\n                  <Field\n                    key={addon.id}\n                    orientation=\"horizontal\"\n                    data-invalid={!!formState.errors?.addons?.length}\n                  >\n                    <Checkbox\n                      id={addon.id}\n                      name=\"addons\"\n                      value={addon.id}\n                      defaultChecked={formState.values.addons.includes(\n                        addon.id\n                      )}\n                      disabled={pending}\n                      aria-invalid={!!formState.errors?.addons?.length}\n                    />\n                    <FieldContent>\n                      <FieldLabel htmlFor={addon.id}>{addon.title}</FieldLabel>\n                      <FieldDescription>{addon.description}</FieldDescription>\n                    </FieldContent>\n                  </Field>\n                ))}\n              </FieldGroup>\n              {formState.errors?.addons && (\n                <FieldError>{formState.errors.addons[0]}</FieldError>\n              )}\n            </FieldSet>\n            <FieldSeparator />\n            <Field orientation=\"horizontal\">\n              <FieldContent>\n                <FieldLabel htmlFor=\"emailNotifications\">\n                  Email Notifications\n                </FieldLabel>\n                <FieldDescription>\n                  Receive email updates about your subscription\n                </FieldDescription>\n              </FieldContent>\n              <Switch\n                id=\"emailNotifications\"\n                name=\"emailNotifications\"\n                defaultChecked={formState.values.emailNotifications}\n                disabled={pending}\n                aria-invalid={!!formState.errors?.emailNotifications?.length}\n              />\n            </Field>\n          </FieldGroup>\n        </Form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\" className=\"justify-end\">\n          <Button type=\"submit\" disabled={pending} form=\"subscription-form\">\n            {pending && <Spinner />}\n            Save Preferences\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-next-demo-action.ts",
    "content": "\"use server\"\n\nimport { formSchema, type FormState } from \"./form-next-demo-schema\"\n\nexport async function demoFormAction(\n  _prevState: FormState,\n  formData: FormData\n) {\n  const values = {\n    title: formData.get(\"title\") as string,\n    description: formData.get(\"description\") as string,\n  }\n\n  const result = formSchema.safeParse(values)\n\n  if (!result.success) {\n    return {\n      values,\n      success: false,\n      errors: result.error.flatten().fieldErrors,\n    }\n  }\n\n  // Do something with the values.\n  // Call your database or API here.\n\n  return {\n    values: {\n      title: \"\",\n      description: \"\",\n    },\n    errors: null,\n    success: true,\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-next-demo-schema.ts",
    "content": "import { z } from \"zod\"\n\nexport const formSchema = z.object({\n  title: z\n    .string()\n    .min(5, \"Bug title must be at least 5 characters.\")\n    .max(32, \"Bug title must be at most 32 characters.\"),\n  description: z\n    .string()\n    .min(20, \"Description must be at least 20 characters.\")\n    .max(100, \"Description must be at most 100 characters.\"),\n})\n\nexport type FormState = {\n  values: z.infer<typeof formSchema>\n  errors: null | Partial<Record<keyof z.infer<typeof formSchema>, string[]>>\n  success: boolean\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-next-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Form from \"next/form\"\nimport { toast } from \"sonner\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nimport { demoFormAction } from \"./form-next-demo-action\"\nimport { type FormState } from \"./form-next-demo-schema\"\n\nexport default function FormNextDemo() {\n  const [formState, formAction, pending] = React.useActionState<\n    FormState,\n    FormData\n  >(demoFormAction, {\n    values: {\n      title: \"\",\n      description: \"\",\n    },\n    errors: null,\n    success: false,\n  })\n  const [descriptionLength, setDescriptionLength] = React.useState(0)\n\n  React.useEffect(() => {\n    if (formState.success) {\n      toast(\"Thank you for your feedback\", {\n        description: \"We'll review your report and get back to you soon.\",\n      })\n    }\n  }, [formState.success])\n\n  React.useEffect(() => {\n    setDescriptionLength(formState.values.description.length)\n  }, [formState.values.description])\n\n  return (\n    <Card className=\"w-full max-w-md\">\n      <CardHeader>\n        <CardTitle>Bug Report</CardTitle>\n        <CardDescription>\n          Help us improve by reporting bugs you encounter.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Form action={formAction} id=\"bug-report-form\">\n          <FieldGroup>\n            <Field data-invalid={!!formState.errors?.title?.length}>\n              <FieldLabel htmlFor=\"title\">Bug Title</FieldLabel>\n              <Input\n                id=\"title\"\n                name=\"title\"\n                defaultValue={formState.values.title}\n                disabled={pending}\n                aria-invalid={!!formState.errors?.title?.length}\n                placeholder=\"Login button not working on mobile\"\n                autoComplete=\"off\"\n              />\n              {formState.errors?.title && (\n                <FieldError>{formState.errors.title[0]}</FieldError>\n              )}\n            </Field>\n            <Field data-invalid={!!formState.errors?.description?.length}>\n              <FieldLabel htmlFor=\"description\">Description</FieldLabel>\n              <InputGroup>\n                <InputGroupTextarea\n                  id=\"description\"\n                  name=\"description\"\n                  defaultValue={formState.values.description}\n                  placeholder=\"I'm having an issue with the login button on mobile.\"\n                  rows={6}\n                  className=\"min-h-24 resize-none\"\n                  disabled={pending}\n                  aria-invalid={!!formState.errors?.description?.length}\n                  onChange={(e) => setDescriptionLength(e.target.value.length)}\n                />\n                <InputGroupAddon align=\"block-end\">\n                  <InputGroupText className=\"tabular-nums\">\n                    {descriptionLength}/100 characters\n                  </InputGroupText>\n                </InputGroupAddon>\n              </InputGroup>\n              <FieldDescription>\n                Include steps to reproduce, expected behavior, and what actually\n                happened.\n              </FieldDescription>\n              {formState.errors?.description && (\n                <FieldError>{formState.errors.description[0]}</FieldError>\n              )}\n            </Field>\n          </FieldGroup>\n        </Form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"submit\" disabled={pending} form=\"bug-report-form\">\n            {pending && <Spinner />}\n            Submit\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-array.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { XIcon } from \"lucide-react\"\nimport { Controller, useFieldArray, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nconst formSchema = z.object({\n  emails: z\n    .array(\n      z.object({\n        address: z.string().email(\"Enter a valid email address.\"),\n      })\n    )\n    .min(1, \"Add at least one email address.\")\n    .max(5, \"You can add up to 5 email addresses.\"),\n})\n\nexport default function FormRhfArray() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      emails: [{ address: \"\" }, { address: \"\" }],\n    },\n  })\n\n  const { fields, append, remove } = useFieldArray({\n    control: form.control,\n    name: \"emails\",\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader className=\"border-b\">\n        <CardTitle>Contact Emails</CardTitle>\n        <CardDescription>Manage your contact email addresses.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-array\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldSet className=\"gap-4\">\n            <FieldLegend variant=\"label\">Email Addresses</FieldLegend>\n            <FieldDescription>\n              Add up to 5 email addresses where we can contact you.\n            </FieldDescription>\n            <FieldGroup className=\"gap-4\">\n              {fields.map((field, index) => (\n                <Controller\n                  key={field.id}\n                  name={`emails.${index}.address`}\n                  control={form.control}\n                  render={({ field: controllerField, fieldState }) => (\n                    <Field\n                      orientation=\"horizontal\"\n                      data-invalid={fieldState.invalid}\n                    >\n                      <FieldContent>\n                        <InputGroup>\n                          <InputGroupInput\n                            {...controllerField}\n                            id={`form-rhf-array-email-${index}`}\n                            aria-invalid={fieldState.invalid}\n                            placeholder=\"name@example.com\"\n                            type=\"email\"\n                            autoComplete=\"email\"\n                          />\n                          {fields.length > 1 && (\n                            <InputGroupAddon align=\"inline-end\">\n                              <InputGroupButton\n                                type=\"button\"\n                                variant=\"ghost\"\n                                size=\"icon-xs\"\n                                onClick={() => remove(index)}\n                                aria-label={`Remove email ${index + 1}`}\n                              >\n                                <XIcon />\n                              </InputGroupButton>\n                            </InputGroupAddon>\n                          )}\n                        </InputGroup>\n                        {fieldState.invalid && (\n                          <FieldError errors={[fieldState.error]} />\n                        )}\n                      </FieldContent>\n                    </Field>\n                  )}\n                />\n              ))}\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                size=\"sm\"\n                onClick={() => append({ address: \"\" })}\n                disabled={fields.length >= 5}\n              >\n                Add Email Address\n              </Button>\n            </FieldGroup>\n            {form.formState.errors.emails?.root && (\n              <FieldError errors={[form.formState.errors.emails.root]} />\n            )}\n          </FieldSet>\n        </form>\n      </CardContent>\n      <CardFooter className=\"border-t\">\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-rhf-array\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-checkbox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\n\nconst tasks = [\n  {\n    id: \"push\",\n    label: \"Push notifications\",\n  },\n  {\n    id: \"email\",\n    label: \"Email notifications\",\n  },\n] as const\n\nconst formSchema = z.object({\n  responses: z.boolean(),\n  tasks: z\n    .array(z.string())\n    .min(1, \"Please select at least one notification type.\")\n    .refine(\n      (value) => value.every((task) => tasks.some((t) => t.id === task)),\n      {\n        message: \"Invalid notification type selected.\",\n      }\n    ),\n})\n\nexport default function FormRhfCheckbox() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      responses: true,\n      tasks: [],\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Notifications</CardTitle>\n        <CardDescription>Manage your notification preferences.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-checkbox\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"responses\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <div>\n                  <FieldSet data-invalid={fieldState.invalid}>\n                    <FieldLegend variant=\"label\">Responses</FieldLegend>\n                    <FieldDescription>\n                      Get notified for requests that take time, like research or\n                      image generation.\n                    </FieldDescription>\n                    <FieldGroup data-slot=\"checkbox-group\">\n                      <Field orientation=\"horizontal\">\n                        <Checkbox\n                          id=\"form-rhf-checkbox-responses\"\n                          name={field.name}\n                          checked={field.value}\n                          onCheckedChange={field.onChange}\n                          disabled\n                        />\n                        <FieldLabel\n                          htmlFor=\"form-rhf-checkbox-responses\"\n                          className=\"font-normal\"\n                        >\n                          Push notifications\n                        </FieldLabel>\n                      </Field>\n                    </FieldGroup>\n                  </FieldSet>\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </div>\n              )}\n            />\n            <FieldSeparator />\n            <Controller\n              name=\"tasks\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <FieldGroup>\n                  <FieldSet data-invalid={fieldState.invalid}>\n                    <FieldLegend variant=\"label\">Tasks</FieldLegend>\n                    <FieldDescription>\n                      Get notified when tasks you&apos;ve created have updates.\n                    </FieldDescription>\n                    <FieldGroup data-slot=\"checkbox-group\">\n                      {tasks.map((task) => (\n                        <Field\n                          key={task.id}\n                          orientation=\"horizontal\"\n                          data-invalid={fieldState.invalid}\n                        >\n                          <Checkbox\n                            id={`form-rhf-checkbox-${task.id}`}\n                            name={field.name}\n                            aria-invalid={fieldState.invalid}\n                            checked={field.value.includes(task.id)}\n                            onCheckedChange={(checked) => {\n                              const newValue = checked\n                                ? [...field.value, task.id]\n                                : field.value.filter(\n                                    (value) => value !== task.id\n                                  )\n                              field.onChange(newValue)\n                            }}\n                          />\n                          <FieldLabel\n                            htmlFor={`form-rhf-checkbox-${task.id}`}\n                            className=\"font-normal\"\n                          >\n                            {task.label}\n                          </FieldLabel>\n                        </Field>\n                      ))}\n                    </FieldGroup>\n                  </FieldSet>\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </FieldGroup>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-rhf-checkbox\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-complex.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nconst addons = [\n  {\n    id: \"analytics\",\n    title: \"Analytics\",\n    description: \"Advanced analytics and reporting\",\n  },\n  {\n    id: \"backup\",\n    title: \"Backup\",\n    description: \"Automated daily backups\",\n  },\n  {\n    id: \"support\",\n    title: \"Priority Support\",\n    description: \"24/7 premium customer support\",\n  },\n] as const\n\nconst formSchema = z.object({\n  plan: z\n    .string({\n      required_error: \"Please select a subscription plan\",\n    })\n    .min(1, \"Please select a subscription plan\")\n    .refine((value) => value === \"basic\" || value === \"pro\", {\n      message: \"Invalid plan selection. Please choose Basic or Pro\",\n    }),\n  billingPeriod: z\n    .string({\n      required_error: \"Please select a billing period\",\n    })\n    .min(1, \"Please select a billing period\"),\n  addons: z\n    .array(z.string())\n    .min(1, \"Please select at least one add-on\")\n    .max(3, \"You can select up to 3 add-ons\")\n    .refine(\n      (value) => value.every((addon) => addons.some((a) => a.id === addon)),\n      {\n        message: \"You selected an invalid add-on\",\n      }\n    ),\n  emailNotifications: z.boolean(),\n})\n\nexport default function FormRhfComplex() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      plan: \"basic\",\n      billingPeriod: \"\",\n      addons: [],\n      emailNotifications: false,\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full max-w-sm\">\n      <CardHeader className=\"border-b\">\n        <CardTitle>You&apos;re almost there!</CardTitle>\n        <CardDescription>\n          Choose your subscription plan and billing period.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-complex\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"plan\"\n              control={form.control}\n              render={({ field, fieldState }) => {\n                const isInvalid = fieldState.invalid\n                return (\n                  <FieldSet data-invalid={isInvalid}>\n                    <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n                    <FieldDescription>\n                      Choose your subscription plan.\n                    </FieldDescription>\n                    <RadioGroup\n                      name={field.name}\n                      value={field.value}\n                      onValueChange={field.onChange}\n                      aria-invalid={isInvalid}\n                    >\n                      <FieldLabel htmlFor=\"form-rhf-complex-basic\">\n                        <Field orientation=\"horizontal\">\n                          <FieldContent>\n                            <FieldTitle>Basic</FieldTitle>\n                            <FieldDescription>\n                              For individuals and small teams\n                            </FieldDescription>\n                          </FieldContent>\n                          <RadioGroupItem\n                            value=\"basic\"\n                            id=\"form-rhf-complex-basic\"\n                          />\n                        </Field>\n                      </FieldLabel>\n                      <FieldLabel htmlFor=\"form-rhf-complex-pro\">\n                        <Field orientation=\"horizontal\">\n                          <FieldContent>\n                            <FieldTitle>Pro</FieldTitle>\n                            <FieldDescription>\n                              For businesses with higher demands\n                            </FieldDescription>\n                          </FieldContent>\n                          <RadioGroupItem\n                            value=\"pro\"\n                            id=\"form-rhf-complex-pro\"\n                          />\n                        </Field>\n                      </FieldLabel>\n                    </RadioGroup>\n                    {isInvalid && <FieldError errors={[fieldState.error]} />}\n                  </FieldSet>\n                )\n              }}\n            />\n            <FieldSeparator />\n            <Controller\n              name=\"billingPeriod\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field data-invalid={fieldState.invalid}>\n                  <FieldLabel htmlFor=\"form-rhf-complex-billingPeriod\">\n                    Billing Period\n                  </FieldLabel>\n                  <Select\n                    name={field.name}\n                    value={field.value}\n                    onValueChange={field.onChange}\n                  >\n                    <SelectTrigger\n                      id=\"form-rhf-complex-billingPeriod\"\n                      aria-invalid={fieldState.invalid}\n                    >\n                      <SelectValue placeholder=\"Select\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"monthly\">Monthly</SelectItem>\n                      <SelectItem value=\"yearly\">Yearly</SelectItem>\n                    </SelectContent>\n                  </Select>\n                  <FieldDescription>\n                    Choose how often you want to be billed.\n                  </FieldDescription>\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </Field>\n              )}\n            />\n            <FieldSeparator />\n            <Controller\n              name=\"addons\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <FieldSet>\n                  <FieldLegend>Add-ons</FieldLegend>\n                  <FieldDescription>\n                    Select additional features you&apos;d like to include.\n                  </FieldDescription>\n                  <FieldGroup data-slot=\"checkbox-group\">\n                    {addons.map((addon) => (\n                      <Field\n                        key={addon.id}\n                        orientation=\"horizontal\"\n                        data-invalid={fieldState.invalid}\n                      >\n                        <Checkbox\n                          id={`form-rhf-complex-${addon.id}`}\n                          name={field.name}\n                          aria-invalid={fieldState.invalid}\n                          checked={field.value.includes(addon.id)}\n                          onCheckedChange={(checked) => {\n                            const newValue = checked\n                              ? [...field.value, addon.id]\n                              : field.value.filter(\n                                  (value) => value !== addon.id\n                                )\n                            field.onChange(newValue)\n                            field.onBlur()\n                          }}\n                        />\n                        <FieldContent>\n                          <FieldLabel htmlFor={`form-rhf-complex-${addon.id}`}>\n                            {addon.title}\n                          </FieldLabel>\n                          <FieldDescription>\n                            {addon.description}\n                          </FieldDescription>\n                        </FieldContent>\n                      </Field>\n                    ))}\n                  </FieldGroup>\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </FieldSet>\n              )}\n            />\n            <FieldSeparator />\n            <Controller\n              name=\"emailNotifications\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field\n                  orientation=\"horizontal\"\n                  data-invalid={fieldState.invalid}\n                >\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"form-rhf-complex-emailNotifications\">\n                      Email Notifications\n                    </FieldLabel>\n                    <FieldDescription>\n                      Receive email updates about your subscription\n                    </FieldDescription>\n                  </FieldContent>\n                  <Switch\n                    id=\"form-rhf-complex-emailNotifications\"\n                    name={field.name}\n                    checked={field.value}\n                    onCheckedChange={field.onChange}\n                    aria-invalid={fieldState.invalid}\n                  />\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </Field>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter className=\"border-t\">\n        <Field>\n          <Button type=\"submit\" form=\"form-rhf-complex\">\n            Save Preferences\n          </Button>\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nconst formSchema = z.object({\n  title: z\n    .string()\n    .min(5, \"Bug title must be at least 5 characters.\")\n    .max(32, \"Bug title must be at most 32 characters.\"),\n  description: z\n    .string()\n    .min(20, \"Description must be at least 20 characters.\")\n    .max(100, \"Description must be at most 100 characters.\"),\n})\n\nexport default function BugReportForm() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      title: \"\",\n      description: \"\",\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Bug Report</CardTitle>\n        <CardDescription>\n          Help us improve by reporting bugs you encounter.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-demo\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"title\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field data-invalid={fieldState.invalid}>\n                  <FieldLabel htmlFor=\"form-rhf-demo-title\">\n                    Bug Title\n                  </FieldLabel>\n                  <Input\n                    {...field}\n                    id=\"form-rhf-demo-title\"\n                    aria-invalid={fieldState.invalid}\n                    placeholder=\"Login button not working on mobile\"\n                    autoComplete=\"off\"\n                  />\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </Field>\n              )}\n            />\n            <Controller\n              name=\"description\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field data-invalid={fieldState.invalid}>\n                  <FieldLabel htmlFor=\"form-rhf-demo-description\">\n                    Description\n                  </FieldLabel>\n                  <InputGroup>\n                    <InputGroupTextarea\n                      {...field}\n                      id=\"form-rhf-demo-description\"\n                      placeholder=\"I'm having an issue with the login button on mobile.\"\n                      rows={6}\n                      className=\"min-h-24 resize-none\"\n                      aria-invalid={fieldState.invalid}\n                    />\n                    <InputGroupAddon align=\"block-end\">\n                      <InputGroupText className=\"tabular-nums\">\n                        {field.value.length}/100 characters\n                      </InputGroupText>\n                    </InputGroupAddon>\n                  </InputGroup>\n                  <FieldDescription>\n                    Include steps to reproduce, expected behavior, and what\n                    actually happened.\n                  </FieldDescription>\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </Field>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-rhf-demo\">\n            Submit\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-input.tsx",
    "content": "\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nconst formSchema = z.object({\n  username: z\n    .string()\n    .min(3, \"Username must be at least 3 characters.\")\n    .max(10, \"Username must be at most 10 characters.\")\n    .regex(\n      /^[a-zA-Z0-9_]+$/,\n      \"Username can only contain letters, numbers, and underscores.\"\n    ),\n})\n\nexport default function FormRhfInput() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      username: \"\",\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Profile Settings</CardTitle>\n        <CardDescription>\n          Update your profile information below.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-input\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"username\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field data-invalid={fieldState.invalid}>\n                  <FieldLabel htmlFor=\"form-rhf-input-username\">\n                    Username\n                  </FieldLabel>\n                  <Input\n                    {...field}\n                    id=\"form-rhf-input-username\"\n                    aria-invalid={fieldState.invalid}\n                    placeholder=\"shadcn\"\n                    autoComplete=\"username\"\n                  />\n                  <FieldDescription>\n                    This is your public display name. Must be between 3 and 10\n                    characters. Must only contain letters, numbers, and\n                    underscores.\n                  </FieldDescription>\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </Field>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-rhf-input\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-password.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { CheckIcon } from \"lucide-react\"\nimport { Controller, useForm, useWatch } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Progress } from \"@/registry/new-york-v4/ui/progress\"\n\nconst passwordRequirements = [\n  {\n    id: \"length\",\n    label: \"At least 8 characters\",\n    test: (val: string) => val.length >= 8,\n  },\n  {\n    id: \"lowercase\",\n    label: \"One lowercase letter\",\n    test: (val: string) => /[a-z]/.test(val),\n  },\n  {\n    id: \"uppercase\",\n    label: \"One uppercase letter\",\n    test: (val: string) => /[A-Z]/.test(val),\n  },\n  { id: \"number\", label: \"One number\", test: (val: string) => /\\d/.test(val) },\n  {\n    id: \"special\",\n    label: \"One special character\",\n    test: (val: string) => /[!@#$%^&*(),.?\":{}|<>]/.test(val),\n  },\n]\n\nconst formSchema = z.object({\n  password: z\n    .string()\n    .min(8, \"Password must be at least 8 characters\")\n    .refine(\n      (val) => /[a-z]/.test(val),\n      \"Password must contain at least one lowercase letter\"\n    )\n    .refine(\n      (val) => /[A-Z]/.test(val),\n      \"Password must contain at least one uppercase letter\"\n    )\n    .refine(\n      (val) => /\\d/.test(val),\n      \"Password must contain at least one number\"\n    )\n    .refine(\n      (val) => /[!@#$%^&*(),.?\":{}|<>]/.test(val),\n      \"Password must contain at least one special character\"\n    ),\n})\n\nexport default function FormRhfPassword() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      password: \"\",\n    },\n  })\n\n  const password = useWatch({\n    control: form.control,\n    name: \"password\",\n  })\n\n  // Calculate password strength.\n  const metRequirements = passwordRequirements.filter((req) =>\n    req.test(password || \"\")\n  )\n  const strengthPercentage =\n    (metRequirements.length / passwordRequirements.length) * 100\n\n  // Determine strength level and color.\n  const getStrengthColor = () => {\n    if (strengthPercentage === 0) return \"bg-neutral-200\"\n    if (strengthPercentage <= 40) return \"bg-red-500\"\n    if (strengthPercentage <= 80) return \"bg-yellow-500\"\n    return \"bg-green-500\"\n  }\n\n  const allRequirementsMet =\n    metRequirements.length === passwordRequirements.length\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader className=\"border-b\">\n        <CardTitle>Create Password</CardTitle>\n        <CardDescription>\n          Choose a strong password to secure your account.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-password\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"password\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field data-invalid={fieldState.invalid}>\n                  <FieldLabel htmlFor=\"form-rhf-password-input\">\n                    Password\n                  </FieldLabel>\n                  <InputGroup>\n                    <InputGroupInput\n                      {...field}\n                      id=\"form-rhf-password-input\"\n                      type=\"password\"\n                      placeholder=\"Enter your password\"\n                      aria-invalid={fieldState.invalid}\n                      autoComplete=\"new-password\"\n                    />\n                    <InputGroupAddon align=\"inline-end\">\n                      <CheckIcon\n                        className={\n                          allRequirementsMet\n                            ? \"text-green-500\"\n                            : \"text-muted-foreground\"\n                        }\n                      />\n                    </InputGroupAddon>\n                  </InputGroup>\n\n                  {/* Password strength meter. */}\n                  <div className=\"space-y-2\">\n                    <Progress\n                      value={strengthPercentage}\n                      className={getStrengthColor()}\n                    />\n\n                    {/* Requirements list. */}\n                    <div className=\"space-y-1.5\">\n                      {passwordRequirements.map((requirement) => {\n                        const isMet = requirement.test(password || \"\")\n                        return (\n                          <div\n                            key={requirement.id}\n                            className=\"flex items-center gap-2 text-sm\"\n                          >\n                            <CheckIcon\n                              className={\n                                isMet\n                                  ? \"size-4 text-green-500\"\n                                  : \"size-4 text-muted-foreground\"\n                              }\n                            />\n                            <span\n                              className={\n                                isMet\n                                  ? \"text-foreground\"\n                                  : \"text-muted-foreground\"\n                              }\n                            >\n                              {requirement.label}\n                            </span>\n                          </div>\n                        )\n                      })}\n                    </div>\n                  </div>\n\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </Field>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter className=\"border-t\">\n        <Field>\n          <Button type=\"submit\" form=\"form-rhf-password\">\n            Create Password\n          </Button>\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-radiogroup.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\n\nconst plans = [\n  {\n    id: \"starter\",\n    title: \"Starter (100K tokens/month)\",\n    description: \"For everyday use with basic features.\",\n  },\n  {\n    id: \"pro\",\n    title: \"Pro (1M tokens/month)\",\n    description: \"For advanced AI usage with more features.\",\n  },\n  {\n    id: \"enterprise\",\n    title: \"Enterprise (Unlimited tokens)\",\n    description: \"For large teams and heavy usage.\",\n  },\n] as const\n\nconst formSchema = z.object({\n  plan: z.string().min(1, \"You must select a subscription plan to continue.\"),\n})\n\nexport default function FormRhfRadioGroup() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      plan: \"\",\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Subscription Plan</CardTitle>\n        <CardDescription>\n          See pricing and features for each plan.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-radiogroup\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"plan\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <FieldSet data-invalid={fieldState.invalid}>\n                  <FieldLegend>Plan</FieldLegend>\n                  <FieldDescription>\n                    You can upgrade or downgrade your plan at any time.\n                  </FieldDescription>\n                  <RadioGroup\n                    name={field.name}\n                    value={field.value}\n                    onValueChange={field.onChange}\n                    aria-invalid={fieldState.invalid}\n                  >\n                    {plans.map((plan) => (\n                      <FieldLabel\n                        key={plan.id}\n                        htmlFor={`form-rhf-radiogroup-${plan.id}`}\n                      >\n                        <Field\n                          orientation=\"horizontal\"\n                          data-invalid={fieldState.invalid}\n                        >\n                          <FieldContent>\n                            <FieldTitle>{plan.title}</FieldTitle>\n                            <FieldDescription>\n                              {plan.description}\n                            </FieldDescription>\n                          </FieldContent>\n                          <RadioGroupItem\n                            value={plan.id}\n                            id={`form-rhf-radiogroup-${plan.id}`}\n                            aria-invalid={fieldState.invalid}\n                          />\n                        </Field>\n                      </FieldLabel>\n                    ))}\n                  </RadioGroup>\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </FieldSet>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-rhf-radiogroup\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nconst spokenLanguages = [\n  { label: \"English\", value: \"en\" },\n  { label: \"Spanish\", value: \"es\" },\n  { label: \"French\", value: \"fr\" },\n  { label: \"German\", value: \"de\" },\n  { label: \"Italian\", value: \"it\" },\n  { label: \"Chinese\", value: \"zh\" },\n  { label: \"Japanese\", value: \"ja\" },\n] as const\n\nconst formSchema = z.object({\n  language: z\n    .string()\n    .min(1, \"Please select your spoken language.\")\n    .refine((val) => val !== \"auto\", {\n      message:\n        \"Auto-detection is not allowed. Please select a specific language.\",\n    }),\n})\n\nexport default function FormRhfSelect() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      language: \"\",\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-lg\">\n      <CardHeader>\n        <CardTitle>Language Preferences</CardTitle>\n        <CardDescription>\n          Select your preferred spoken language.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-select\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"language\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field\n                  orientation=\"responsive\"\n                  data-invalid={fieldState.invalid}\n                >\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"form-rhf-select-language\">\n                      Spoken Language\n                    </FieldLabel>\n                    <FieldDescription>\n                      For best results, select the language you speak.\n                    </FieldDescription>\n                    {fieldState.invalid && (\n                      <FieldError errors={[fieldState.error]} />\n                    )}\n                  </FieldContent>\n                  <Select\n                    name={field.name}\n                    value={field.value}\n                    onValueChange={field.onChange}\n                  >\n                    <SelectTrigger\n                      id=\"form-rhf-select-language\"\n                      aria-invalid={fieldState.invalid}\n                      className=\"min-w-[120px]\"\n                    >\n                      <SelectValue placeholder=\"Select\" />\n                    </SelectTrigger>\n                    <SelectContent position=\"item-aligned\">\n                      <SelectItem value=\"auto\">Auto</SelectItem>\n                      <SelectSeparator />\n                      {spokenLanguages.map((language) => (\n                        <SelectItem key={language.value} value={language.value}>\n                          {language.label}\n                        </SelectItem>\n                      ))}\n                    </SelectContent>\n                  </Select>\n                </Field>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-rhf-select\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-switch.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nconst formSchema = z.object({\n  twoFactor: z.boolean().refine((val) => val === true, {\n    message: \"It is highly recommended to enable two-factor authentication.\",\n  }),\n})\n\nexport default function FormRhfSwitch() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      twoFactor: false,\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Security Settings</CardTitle>\n        <CardDescription>\n          Manage your account security preferences.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-switch\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"twoFactor\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field\n                  orientation=\"horizontal\"\n                  data-invalid={fieldState.invalid}\n                >\n                  <FieldContent>\n                    <FieldLabel htmlFor=\"form-rhf-switch-twoFactor\">\n                      Multi-factor authentication\n                    </FieldLabel>\n                    <FieldDescription>\n                      Enable multi-factor authentication to secure your account.\n                    </FieldDescription>\n                    {fieldState.invalid && (\n                      <FieldError errors={[fieldState.error]} />\n                    )}\n                  </FieldContent>\n                  <Switch\n                    id=\"form-rhf-switch-twoFactor\"\n                    name={field.name}\n                    checked={field.value}\n                    onCheckedChange={field.onChange}\n                    aria-invalid={fieldState.invalid}\n                  />\n                </Field>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-rhf-switch\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-rhf-textarea.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Controller, useForm } from \"react-hook-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nconst formSchema = z.object({\n  about: z\n    .string()\n    .min(10, \"Please provide at least 10 characters.\")\n    .max(200, \"Please keep it under 200 characters.\"),\n})\n\nexport default function FormRhfTextarea() {\n  const form = useForm<z.infer<typeof formSchema>>({\n    resolver: zodResolver(formSchema),\n    defaultValues: {\n      about: \"\",\n    },\n  })\n\n  function onSubmit(data: z.infer<typeof formSchema>) {\n    toast(\"You submitted the following values:\", {\n      description: (\n        <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n          <code>{JSON.stringify(data, null, 2)}</code>\n        </pre>\n      ),\n      position: \"bottom-right\",\n      classNames: {\n        content: \"flex flex-col gap-2\",\n      },\n      style: {\n        \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n      } as React.CSSProperties,\n    })\n  }\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Personalization</CardTitle>\n        <CardDescription>\n          Customize your experience by telling us more about yourself.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form id=\"form-rhf-textarea\" onSubmit={form.handleSubmit(onSubmit)}>\n          <FieldGroup>\n            <Controller\n              name=\"about\"\n              control={form.control}\n              render={({ field, fieldState }) => (\n                <Field data-invalid={fieldState.invalid}>\n                  <FieldLabel htmlFor=\"form-rhf-textarea-about\">\n                    More about you\n                  </FieldLabel>\n                  <Textarea\n                    {...field}\n                    id=\"form-rhf-textarea-about\"\n                    aria-invalid={fieldState.invalid}\n                    placeholder=\"I'm a software engineer...\"\n                    className=\"min-h-[120px]\"\n                  />\n                  <FieldDescription>\n                    Tell us more about yourself. This will be used to help us\n                    personalize your experience.\n                  </FieldDescription>\n                  {fieldState.invalid && (\n                    <FieldError errors={[fieldState.error]} />\n                  )}\n                </Field>\n              )}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-rhf-textarea\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-array.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport * as React from \"react\"\nimport { useForm } from \"@tanstack/react-form\"\nimport { XIcon } from \"lucide-react\"\nimport { toast } from \"sonner\"\nimport { z } from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nconst formSchema = z.object({\n  emails: z\n    .array(\n      z.object({\n        address: z.string().email(\"Enter a valid email address.\"),\n      })\n    )\n    .min(1, \"Add at least one email address.\")\n    .max(5, \"You can add up to 5 email addresses.\"),\n})\n\nexport default function FormTanstackArray() {\n  const form = useForm({\n    defaultValues: {\n      emails: [{ address: \"\" }],\n    },\n    validators: {\n      onBlur: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader className=\"border-b\">\n        <CardTitle>Contact Emails</CardTitle>\n        <CardDescription>Manage your contact email addresses.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          id=\"form-tanstack-array\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <form.Field name=\"emails\" mode=\"array\">\n            {(field) => {\n              const isInvalid =\n                field.state.meta.isTouched && !field.state.meta.isValid\n              return (\n                <FieldSet className=\"gap-4\">\n                  <FieldLegend variant=\"label\">Email Addresses</FieldLegend>\n                  <FieldDescription>\n                    Add up to 5 email addresses where we can contact you.\n                  </FieldDescription>\n                  <FieldGroup className=\"gap-4\">\n                    {field.state.value.map((_, index) => (\n                      <form.Field\n                        key={index}\n                        name={`emails[${index}].address`}\n                        children={(subField) => {\n                          const isSubFieldInvalid =\n                            subField.state.meta.isTouched &&\n                            !subField.state.meta.isValid\n                          return (\n                            <Field\n                              orientation=\"horizontal\"\n                              data-invalid={isSubFieldInvalid}\n                            >\n                              <FieldContent>\n                                <InputGroup>\n                                  <InputGroupInput\n                                    id={`form-tanstack-array-email-${index}`}\n                                    name={subField.name}\n                                    value={subField.state.value}\n                                    onBlur={subField.handleBlur}\n                                    onChange={(e) =>\n                                      subField.handleChange(e.target.value)\n                                    }\n                                    aria-invalid={isSubFieldInvalid}\n                                    placeholder=\"name@example.com\"\n                                    type=\"email\"\n                                    autoComplete=\"email\"\n                                  />\n                                  {field.state.value.length > 1 && (\n                                    <InputGroupAddon align=\"inline-end\">\n                                      <InputGroupButton\n                                        type=\"button\"\n                                        variant=\"ghost\"\n                                        size=\"icon-xs\"\n                                        onClick={() => field.removeValue(index)}\n                                        aria-label={`Remove email ${index + 1}`}\n                                      >\n                                        <XIcon />\n                                      </InputGroupButton>\n                                    </InputGroupAddon>\n                                  )}\n                                </InputGroup>\n                                {isSubFieldInvalid && (\n                                  <FieldError\n                                    errors={subField.state.meta.errors}\n                                  />\n                                )}\n                              </FieldContent>\n                            </Field>\n                          )\n                        }}\n                      />\n                    ))}\n                    <Button\n                      type=\"button\"\n                      variant=\"outline\"\n                      size=\"sm\"\n                      onClick={() => field.pushValue({ address: \"\" })}\n                      disabled={field.state.value.length >= 5}\n                    >\n                      Add Email Address\n                    </Button>\n                  </FieldGroup>\n                  {isInvalid && <FieldError errors={field.state.meta.errors} />}\n                </FieldSet>\n              )\n            }}\n          </form.Field>\n        </form>\n      </CardContent>\n      <CardFooter className=\"border-t\">\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-tanstack-array\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-checkbox.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n} from \"@/registry/new-york-v4/ui/field\"\n\nconst tasks = [\n  {\n    id: \"push\",\n    label: \"Push notifications\",\n  },\n  {\n    id: \"email\",\n    label: \"Email notifications\",\n  },\n] as const\n\nconst formSchema = z.object({\n  responses: z.boolean(),\n  tasks: z\n    .array(z.string())\n    .min(1, \"Please select at least one notification type.\")\n    .refine(\n      (value) => value.every((task) => tasks.some((t) => t.id === task)),\n      {\n        message: \"Invalid notification type selected.\",\n      }\n    ),\n})\n\nexport default function FormTanstackCheckbox() {\n  const form = useForm({\n    defaultValues: {\n      responses: true,\n      tasks: [] as string[],\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Notifications</CardTitle>\n        <CardDescription>Manage your notification preferences.</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          id=\"form-tanstack-checkbox\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <FieldGroup>\n            <form.Field\n              name=\"responses\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <div>\n                    <FieldSet>\n                      <FieldLegend variant=\"label\">Responses</FieldLegend>\n                      <FieldDescription>\n                        Get notified for requests that take time, like research\n                        or image generation.\n                      </FieldDescription>\n                      <FieldGroup data-slot=\"checkbox-group\">\n                        <Field\n                          orientation=\"horizontal\"\n                          data-invalid={isInvalid}\n                        >\n                          <Checkbox\n                            id=\"form-tanstack-checkbox-responses\"\n                            name={field.name}\n                            checked={field.state.value}\n                            onCheckedChange={(checked) =>\n                              field.handleChange(checked === true)\n                            }\n                            disabled\n                          />\n                          <FieldLabel\n                            htmlFor=\"form-tanstack-checkbox-responses\"\n                            className=\"font-normal\"\n                          >\n                            Push notifications\n                          </FieldLabel>\n                        </Field>\n                      </FieldGroup>\n                    </FieldSet>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </div>\n                )\n              }}\n            />\n            <FieldSeparator />\n            <form.Field\n              name=\"tasks\"\n              mode=\"array\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <FieldGroup>\n                    <FieldSet data-invalid={isInvalid}>\n                      <FieldLegend variant=\"label\">Tasks</FieldLegend>\n                      <FieldDescription>\n                        Get notified when tasks you&apos;ve created have\n                        updates.\n                      </FieldDescription>\n                      <FieldGroup data-slot=\"checkbox-group\">\n                        {tasks.map((task) => (\n                          <Field\n                            key={task.id}\n                            orientation=\"horizontal\"\n                            data-invalid={isInvalid}\n                          >\n                            <Checkbox\n                              id={`form-tanstack-checkbox-${task.id}`}\n                              name={field.name}\n                              aria-invalid={isInvalid}\n                              checked={field.state.value.includes(task.id)}\n                              onCheckedChange={(checked) => {\n                                if (checked) {\n                                  field.pushValue(task.id)\n                                } else {\n                                  const index = field.state.value.indexOf(\n                                    task.id\n                                  )\n                                  if (index > -1) {\n                                    field.removeValue(index)\n                                  }\n                                }\n                              }}\n                            />\n                            <FieldLabel\n                              htmlFor={`form-tanstack-checkbox-${task.id}`}\n                              className=\"font-normal\"\n                            >\n                              {task.label}\n                            </FieldLabel>\n                          </Field>\n                        ))}\n                      </FieldGroup>\n                    </FieldSet>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </FieldGroup>\n                )\n              }}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-tanstack-checkbox\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-complex.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport * as React from \"react\"\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/new-york-v4/ui/card\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nconst addons = [\n  {\n    id: \"analytics\",\n    title: \"Analytics\",\n    description: \"Advanced analytics and reporting\",\n  },\n  {\n    id: \"backup\",\n    title: \"Backup\",\n    description: \"Automated daily backups\",\n  },\n  {\n    id: \"support\",\n    title: \"Priority Support\",\n    description: \"24/7 premium customer support\",\n  },\n] as const\n\nconst formSchema = z.object({\n  plan: z\n    .string({\n      required_error: \"Please select a subscription plan\",\n    })\n    .min(1, \"Please select a subscription plan\")\n    .refine((value) => value === \"basic\" || value === \"pro\", {\n      message: \"Invalid plan selection. Please choose Basic or Pro\",\n    }),\n  billingPeriod: z\n    .string({\n      required_error: \"Please select a billing period\",\n    })\n    .min(1, \"Please select a billing period\"),\n  addons: z\n    .array(z.string())\n    .min(1, \"Please select at least one add-on\")\n    .max(3, \"You can select up to 3 add-ons\")\n    .refine(\n      (value) => value.every((addon) => addons.some((a) => a.id === addon)),\n      {\n        message: \"You selected an invalid add-on\",\n      }\n    ),\n  emailNotifications: z.boolean(),\n})\n\nexport default function FormTanstackComplex() {\n  const form = useForm({\n    defaultValues: {\n      plan: \"basic\",\n      billingPeriod: \"monthly\",\n      addons: [] as string[],\n      emailNotifications: false,\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full max-w-sm\">\n      <CardContent>\n        <form\n          id=\"subscription-form\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <FieldGroup>\n            <form.Field\n              name=\"plan\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <FieldSet>\n                    <FieldLegend>Subscription Plan</FieldLegend>\n                    <FieldDescription>\n                      Choose your subscription plan.\n                    </FieldDescription>\n                    <RadioGroup\n                      name={field.name}\n                      value={field.state.value}\n                      onValueChange={field.handleChange}\n                    >\n                      <FieldLabel htmlFor=\"basic\">\n                        <Field\n                          orientation=\"horizontal\"\n                          data-invalid={isInvalid}\n                        >\n                          <FieldContent>\n                            <FieldTitle>Basic</FieldTitle>\n                            <FieldDescription>\n                              For individuals and small teams\n                            </FieldDescription>\n                          </FieldContent>\n                          <RadioGroupItem\n                            value=\"basic\"\n                            id=\"basic\"\n                            aria-invalid={isInvalid}\n                          />\n                        </Field>\n                      </FieldLabel>\n                      <FieldLabel htmlFor=\"pro\">\n                        <Field\n                          orientation=\"horizontal\"\n                          data-invalid={isInvalid}\n                        >\n                          <FieldContent>\n                            <FieldTitle>Pro</FieldTitle>\n                            <FieldDescription>\n                              For businesses with higher demands\n                            </FieldDescription>\n                          </FieldContent>\n                          <RadioGroupItem\n                            value=\"pro\"\n                            id=\"pro\"\n                            aria-invalid={isInvalid}\n                          />\n                        </Field>\n                      </FieldLabel>\n                    </RadioGroup>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </FieldSet>\n                )\n              }}\n            />\n            <FieldSeparator />\n            <form.Field\n              name=\"billingPeriod\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <Field data-invalid={isInvalid}>\n                    <FieldLabel htmlFor={field.name}>Billing Period</FieldLabel>\n                    <Select\n                      name={field.name}\n                      value={field.state.value}\n                      onValueChange={field.handleChange}\n                      aria-invalid={isInvalid}\n                    >\n                      <SelectTrigger id={field.name}>\n                        <SelectValue placeholder=\"Select\" />\n                      </SelectTrigger>\n                      <SelectContent>\n                        <SelectItem value=\"monthly\">Monthly</SelectItem>\n                        <SelectItem value=\"yearly\">Yearly</SelectItem>\n                      </SelectContent>\n                    </Select>\n                    <FieldDescription>\n                      Choose how often you want to be billed.\n                    </FieldDescription>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </Field>\n                )\n              }}\n            />\n            <FieldSeparator />\n            <form.Field\n              name=\"addons\"\n              mode=\"array\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <FieldSet>\n                    <FieldLegend>Add-ons</FieldLegend>\n                    <FieldDescription>\n                      Select additional features you&apos;d like to include.\n                    </FieldDescription>\n                    <FieldGroup data-slot=\"checkbox-group\">\n                      {addons.map((addon) => (\n                        <Field\n                          key={addon.id}\n                          orientation=\"horizontal\"\n                          data-invalid={isInvalid}\n                        >\n                          <Checkbox\n                            id={addon.id}\n                            name={field.name}\n                            aria-invalid={isInvalid}\n                            checked={field.state.value.includes(addon.id)}\n                            onCheckedChange={(checked) => {\n                              if (checked) {\n                                field.pushValue(addon.id)\n                              } else {\n                                const index = field.state.value.indexOf(\n                                  addon.id\n                                )\n                                if (index > -1) {\n                                  field.removeValue(index)\n                                }\n                              }\n                            }}\n                          />\n                          <FieldContent>\n                            <FieldLabel htmlFor={addon.id}>\n                              {addon.title}\n                            </FieldLabel>\n                            <FieldDescription>\n                              {addon.description}\n                            </FieldDescription>\n                          </FieldContent>\n                        </Field>\n                      ))}\n                    </FieldGroup>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </FieldSet>\n                )\n              }}\n            />\n            <FieldSeparator />\n            <form.Field\n              name=\"emailNotifications\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <Field orientation=\"horizontal\" data-invalid={isInvalid}>\n                    <FieldContent>\n                      <FieldLabel htmlFor={field.name}>\n                        Email Notifications\n                      </FieldLabel>\n                      <FieldDescription>\n                        Receive email updates about your subscription\n                      </FieldDescription>\n                    </FieldContent>\n                    <Switch\n                      id={field.name}\n                      name={field.name}\n                      checked={field.state.value}\n                      onCheckedChange={field.handleChange}\n                      aria-invalid={isInvalid}\n                    />\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </Field>\n                )\n              }}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\" className=\"justify-end\">\n          <Button type=\"submit\" form=\"subscription-form\">\n            Save Preferences\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-demo.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport * as React from \"react\"\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nconst formSchema = z.object({\n  title: z\n    .string()\n    .min(5, \"Bug title must be at least 5 characters.\")\n    .max(32, \"Bug title must be at most 32 characters.\"),\n  description: z\n    .string()\n    .min(20, \"Description must be at least 20 characters.\")\n    .max(100, \"Description must be at most 100 characters.\"),\n})\n\nexport default function BugReportForm() {\n  const form = useForm({\n    defaultValues: {\n      title: \"\",\n      description: \"\",\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Bug Report</CardTitle>\n        <CardDescription>\n          Help us improve by reporting bugs you encounter.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          id=\"bug-report-form\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <FieldGroup>\n            <form.Field\n              name=\"title\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <Field data-invalid={isInvalid}>\n                    <FieldLabel htmlFor={field.name}>Bug Title</FieldLabel>\n                    <Input\n                      id={field.name}\n                      name={field.name}\n                      value={field.state.value}\n                      onBlur={field.handleBlur}\n                      onChange={(e) => field.handleChange(e.target.value)}\n                      aria-invalid={isInvalid}\n                      placeholder=\"Login button not working on mobile\"\n                      autoComplete=\"off\"\n                    />\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </Field>\n                )\n              }}\n            />\n            <form.Field\n              name=\"description\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <Field data-invalid={isInvalid}>\n                    <FieldLabel htmlFor={field.name}>Description</FieldLabel>\n                    <InputGroup>\n                      <InputGroupTextarea\n                        id={field.name}\n                        name={field.name}\n                        value={field.state.value}\n                        onBlur={field.handleBlur}\n                        onChange={(e) => field.handleChange(e.target.value)}\n                        placeholder=\"I'm having an issue with the login button on mobile.\"\n                        rows={6}\n                        className=\"min-h-24 resize-none\"\n                        aria-invalid={isInvalid}\n                      />\n                      <InputGroupAddon align=\"block-end\">\n                        <InputGroupText className=\"tabular-nums\">\n                          {field.state.value.length}/100 characters\n                        </InputGroupText>\n                      </InputGroupAddon>\n                    </InputGroup>\n                    <FieldDescription>\n                      Include steps to reproduce, expected behavior, and what\n                      actually happened.\n                    </FieldDescription>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </Field>\n                )\n              }}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"bug-report-form\">\n            Submit\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-input.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nconst formSchema = z.object({\n  username: z\n    .string()\n    .min(3, \"Username must be at least 3 characters.\")\n    .max(10, \"Username must be at most 10 characters.\")\n    .regex(\n      /^[a-zA-Z0-9_]+$/,\n      \"Username can only contain letters, numbers, and underscores.\"\n    ),\n})\n\nexport default function FormTanstackInput() {\n  const form = useForm({\n    defaultValues: {\n      username: \"\",\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Profile Settings</CardTitle>\n        <CardDescription>\n          Update your profile information below.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          id=\"form-tanstack-input\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <FieldGroup>\n            <form.Field\n              name=\"username\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <Field data-invalid={isInvalid}>\n                    <FieldLabel htmlFor=\"form-tanstack-input-username\">\n                      Username\n                    </FieldLabel>\n                    <Input\n                      id=\"form-tanstack-input-username\"\n                      name={field.name}\n                      value={field.state.value}\n                      onBlur={field.handleBlur}\n                      onChange={(e) => field.handleChange(e.target.value)}\n                      aria-invalid={isInvalid}\n                      placeholder=\"shadcn\"\n                      autoComplete=\"username\"\n                    />\n                    <FieldDescription>\n                      This is your public display name. Must be between 3 and 10\n                      characters. Must only contain letters, numbers, and\n                      underscores.\n                    </FieldDescription>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </Field>\n                )\n              }}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-tanstack-input\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-radiogroup.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\n\nconst plans = [\n  {\n    id: \"starter\",\n    title: \"Starter (100K tokens/month)\",\n    description: \"For everyday use with basic features.\",\n  },\n  {\n    id: \"pro\",\n    title: \"Pro (1M tokens/month)\",\n    description: \"For advanced AI usage with more features.\",\n  },\n  {\n    id: \"enterprise\",\n    title: \"Enterprise (Unlimited tokens)\",\n    description: \"For large teams and heavy usage.\",\n  },\n] as const\n\nconst formSchema = z.object({\n  plan: z.string().min(1, \"You must select a subscription plan to continue.\"),\n})\n\nexport default function FormTanstackRadioGroup() {\n  const form = useForm({\n    defaultValues: {\n      plan: \"\",\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Subscription Plan</CardTitle>\n        <CardDescription>\n          See pricing and features for each plan.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          id=\"form-tanstack-radiogroup\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <FieldGroup>\n            <form.Field\n              name=\"plan\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <FieldSet>\n                    <FieldLegend>Plan</FieldLegend>\n                    <FieldDescription>\n                      You can upgrade or downgrade your plan at any time.\n                    </FieldDescription>\n                    <RadioGroup\n                      name={field.name}\n                      value={field.state.value}\n                      onValueChange={field.handleChange}\n                    >\n                      {plans.map((plan) => (\n                        <FieldLabel\n                          key={plan.id}\n                          htmlFor={`form-tanstack-radiogroup-${plan.id}`}\n                        >\n                          <Field\n                            orientation=\"horizontal\"\n                            data-invalid={isInvalid}\n                          >\n                            <FieldContent>\n                              <FieldTitle>{plan.title}</FieldTitle>\n                              <FieldDescription>\n                                {plan.description}\n                              </FieldDescription>\n                            </FieldContent>\n                            <RadioGroupItem\n                              value={plan.id}\n                              id={`form-tanstack-radiogroup-${plan.id}`}\n                              aria-invalid={isInvalid}\n                            />\n                          </Field>\n                        </FieldLabel>\n                      ))}\n                    </RadioGroup>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </FieldSet>\n                )\n              }}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-tanstack-radiogroup\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-select.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nconst spokenLanguages = [\n  { label: \"English\", value: \"en\" },\n  { label: \"Spanish\", value: \"es\" },\n  { label: \"French\", value: \"fr\" },\n  { label: \"German\", value: \"de\" },\n  { label: \"Italian\", value: \"it\" },\n  { label: \"Chinese\", value: \"zh\" },\n  { label: \"Japanese\", value: \"ja\" },\n] as const\n\nconst formSchema = z.object({\n  language: z\n    .string()\n    .min(1, \"Please select your spoken language.\")\n    .refine((val) => val !== \"auto\", {\n      message:\n        \"Auto-detection is not allowed. Please select a specific language.\",\n    }),\n})\n\nexport default function FormTanstackSelect() {\n  const form = useForm({\n    defaultValues: {\n      language: \"\",\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full sm:max-w-lg\">\n      <CardHeader>\n        <CardTitle>Language Preferences</CardTitle>\n        <CardDescription>\n          Select your preferred spoken language.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          id=\"form-tanstack-select\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <FieldGroup>\n            <form.Field\n              name=\"language\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <Field orientation=\"responsive\" data-invalid={isInvalid}>\n                    <FieldContent>\n                      <FieldLabel htmlFor=\"form-tanstack-select-language\">\n                        Spoken Language\n                      </FieldLabel>\n                      <FieldDescription>\n                        For best results, select the language you speak.\n                      </FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </FieldContent>\n                    <Select\n                      name={field.name}\n                      value={field.state.value}\n                      onValueChange={field.handleChange}\n                    >\n                      <SelectTrigger\n                        id=\"form-tanstack-select-language\"\n                        aria-invalid={isInvalid}\n                        className=\"min-w-[120px]\"\n                      >\n                        <SelectValue placeholder=\"Select\" />\n                      </SelectTrigger>\n                      <SelectContent position=\"item-aligned\">\n                        <SelectItem value=\"auto\">Auto</SelectItem>\n                        <SelectSeparator />\n                        {spokenLanguages.map((language) => (\n                          <SelectItem\n                            key={language.value}\n                            value={language.value}\n                          >\n                            {language.label}\n                          </SelectItem>\n                        ))}\n                      </SelectContent>\n                    </Select>\n                  </Field>\n                )\n              }}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-tanstack-select\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-switch.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nconst formSchema = z.object({\n  twoFactor: z.boolean().refine((val) => val === true, {\n    message: \"It is highly recommended to enable two-factor authentication.\",\n  }),\n})\n\nexport default function FormTanstackSwitch() {\n  const form = useForm({\n    defaultValues: {\n      twoFactor: false,\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Security Settings</CardTitle>\n        <CardDescription>\n          Manage your account security preferences.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          id=\"form-tanstack-switch\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <FieldGroup>\n            <form.Field\n              name=\"twoFactor\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <Field orientation=\"horizontal\" data-invalid={isInvalid}>\n                    <FieldContent>\n                      <FieldLabel htmlFor=\"form-tanstack-switch-twoFactor\">\n                        Multi-factor authentication\n                      </FieldLabel>\n                      <FieldDescription>\n                        Enable multi-factor authentication to secure your\n                        account.\n                      </FieldDescription>\n                      {isInvalid && (\n                        <FieldError errors={field.state.meta.errors} />\n                      )}\n                    </FieldContent>\n                    <Switch\n                      id=\"form-tanstack-switch-twoFactor\"\n                      name={field.name}\n                      checked={field.state.value}\n                      onCheckedChange={field.handleChange}\n                      aria-invalid={isInvalid}\n                    />\n                  </Field>\n                )\n              }}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-tanstack-switch\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/form-tanstack-textarea.tsx",
    "content": "/* eslint-disable react/no-children-prop */\n\"use client\"\n\nimport { useForm } from \"@tanstack/react-form\"\nimport { toast } from \"sonner\"\nimport * as z from \"zod\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport {\n  Field,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n} from \"@/registry/new-york-v4/ui/field\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nconst formSchema = z.object({\n  about: z\n    .string()\n    .min(10, \"Please provide at least 10 characters.\")\n    .max(200, \"Please keep it under 200 characters.\"),\n})\n\nexport default function FormTanstackTextarea() {\n  const form = useForm({\n    defaultValues: {\n      about: \"\",\n    },\n    validators: {\n      onSubmit: formSchema,\n    },\n    onSubmit: async ({ value }) => {\n      toast(\"You submitted the following values:\", {\n        description: (\n          <pre className=\"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground\">\n            <code>{JSON.stringify(value, null, 2)}</code>\n          </pre>\n        ),\n        position: \"bottom-right\",\n        classNames: {\n          content: \"flex flex-col gap-2\",\n        },\n        style: {\n          \"--border-radius\": \"calc(var(--radius)  + 4px)\",\n        } as React.CSSProperties,\n      })\n    },\n  })\n\n  return (\n    <Card className=\"w-full sm:max-w-md\">\n      <CardHeader>\n        <CardTitle>Personalization</CardTitle>\n        <CardDescription>\n          Customize your experience by telling us more about yourself.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          id=\"form-tanstack-textarea\"\n          onSubmit={(e) => {\n            e.preventDefault()\n            form.handleSubmit()\n          }}\n        >\n          <FieldGroup>\n            <form.Field\n              name=\"about\"\n              children={(field) => {\n                const isInvalid =\n                  field.state.meta.isTouched && !field.state.meta.isValid\n                return (\n                  <Field data-invalid={isInvalid}>\n                    <FieldLabel htmlFor=\"form-tanstack-textarea-about\">\n                      More about you\n                    </FieldLabel>\n                    <Textarea\n                      id=\"form-tanstack-textarea-about\"\n                      name={field.name}\n                      value={field.state.value}\n                      onBlur={field.handleBlur}\n                      onChange={(e) => field.handleChange(e.target.value)}\n                      aria-invalid={isInvalid}\n                      placeholder=\"I'm a software engineer...\"\n                      className=\"min-h-[120px]\"\n                    />\n                    <FieldDescription>\n                      Tell us more about yourself. This will be used to help us\n                      personalize your experience.\n                    </FieldDescription>\n                    {isInvalid && (\n                      <FieldError errors={field.state.meta.errors} />\n                    )}\n                  </Field>\n                )\n              }}\n            />\n          </FieldGroup>\n        </form>\n      </CardContent>\n      <CardFooter>\n        <Field orientation=\"horizontal\">\n          <Button type=\"button\" variant=\"outline\" onClick={() => form.reset()}>\n            Reset\n          </Button>\n          <Button type=\"submit\" form=\"form-tanstack-textarea\">\n            Save\n          </Button>\n        </Field>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/hover-card-demo.tsx",
    "content": "import { CalendarIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardTrigger,\n} from \"@/registry/new-york-v4/ui/hover-card\"\n\nexport default function HoverCardDemo() {\n  return (\n    <HoverCard>\n      <HoverCardTrigger asChild>\n        <Button variant=\"link\">@nextjs</Button>\n      </HoverCardTrigger>\n      <HoverCardContent className=\"w-80\">\n        <div className=\"flex justify-between gap-4\">\n          <Avatar>\n            <AvatarImage src=\"https://github.com/vercel.png\" />\n            <AvatarFallback>VC</AvatarFallback>\n          </Avatar>\n          <div className=\"space-y-1\">\n            <h4 className=\"text-sm font-semibold\">@nextjs</h4>\n            <p className=\"text-sm\">\n              The React Framework – created and maintained by @vercel.\n            </p>\n            <div className=\"text-xs text-muted-foreground\">\n              Joined December 2021\n            </div>\n          </div>\n        </div>\n      </HoverCardContent>\n    </HoverCard>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-demo.tsx",
    "content": "import { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport default function InputDemo() {\n  return <Input type=\"email\" placeholder=\"Email\" />\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-disabled.tsx",
    "content": "import { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport default function InputDisabled() {\n  return <Input disabled type=\"email\" placeholder=\"Email\" />\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-file.tsx",
    "content": "import { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function InputFile() {\n  return (\n    <div className=\"grid w-full max-w-sm items-center gap-3\">\n      <Label htmlFor=\"picture\">Picture</Label>\n      <Input id=\"picture\" type=\"file\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-button-group.tsx",
    "content": "import { Link2Icon } from \"lucide-react\"\n\nimport {\n  ButtonGroup,\n  ButtonGroupText,\n} from \"@/registry/new-york-v4/ui/button-group\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function InputGroupButtonGroup() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <ButtonGroup>\n        <ButtonGroupText asChild>\n          <Label htmlFor=\"url\">https://</Label>\n        </ButtonGroupText>\n        <InputGroup>\n          <InputGroupInput id=\"url\" />\n          <InputGroupAddon align=\"inline-end\">\n            <Link2Icon />\n          </InputGroupAddon>\n        </InputGroup>\n        <ButtonGroupText>.com</ButtonGroupText>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  IconCheck,\n  IconCopy,\n  IconInfoCircle,\n  IconStar,\n} from \"@tabler/icons-react\"\n\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport default function InputGroupButtonExample() {\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\n  const [isFavorite, setIsFavorite] = React.useState(false)\n\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"https://x.com/shadcn\" readOnly />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            aria-label=\"Copy\"\n            title=\"Copy\"\n            size=\"icon-xs\"\n            onClick={() => {\n              copyToClipboard(\"https://x.com/shadcn\")\n            }}\n          >\n            {isCopied ? <IconCheck /> : <IconCopy />}\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup className=\"[--radius:9999px]\">\n        <Popover>\n          <PopoverTrigger asChild>\n            <InputGroupAddon>\n              <InputGroupButton variant=\"secondary\" size=\"icon-xs\">\n                <IconInfoCircle />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </PopoverTrigger>\n          <PopoverContent\n            align=\"start\"\n            className=\"flex flex-col gap-1 rounded-xl text-sm\"\n          >\n            <p className=\"font-medium\">Your connection is not secure.</p>\n            <p>You should not enter any sensitive information on this site.</p>\n          </PopoverContent>\n        </Popover>\n        <InputGroupAddon className=\"pl-1.5 text-muted-foreground\">\n          https://\n        </InputGroupAddon>\n        <InputGroupInput id=\"input-secure-19\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            onClick={() => setIsFavorite(!isFavorite)}\n            size=\"icon-xs\"\n          >\n            <IconStar\n              data-favorite={isFavorite}\n              className=\"data-[favorite=true]:fill-blue-600 data-[favorite=true]:stroke-blue-600\"\n            />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Type to search...\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton variant=\"secondary\">Search</InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-custom.tsx",
    "content": "\"use client\"\n\nimport TextareaAutosize from \"react-textarea-autosize\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nexport default function InputGroupCustom() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <TextareaAutosize\n          data-slot=\"input-group-control\"\n          className=\"flex field-sizing-content min-h-16 w-full resize-none rounded-md bg-transparent px-3 py-2.5 text-base transition-[color,box-shadow] outline-none md:text-sm\"\n          placeholder=\"Autoresize textarea...\"\n        />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupButton className=\"ml-auto\" size=\"sm\" variant=\"default\">\n            Submit\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-demo.tsx",
    "content": "import { IconCheck, IconInfoCircle, IconPlus } from \"@tabler/icons-react\"\nimport { ArrowUpIcon, Search } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport default function InputGroupDemo() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Search...\" />\n        <InputGroupAddon>\n          <Search />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"example.com\" className=\"pl-1!\" />\n        <InputGroupAddon>\n          <InputGroupText>https://</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupButton className=\"rounded-full\" size=\"icon-xs\">\n                <IconInfoCircle />\n              </InputGroupButton>\n            </TooltipTrigger>\n            <TooltipContent>This is content in a tooltip.</TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder=\"Ask, Search or Chat...\" />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupButton\n            variant=\"outline\"\n            className=\"rounded-full\"\n            size=\"icon-xs\"\n          >\n            <IconPlus />\n          </InputGroupButton>\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <InputGroupButton variant=\"ghost\">Auto</InputGroupButton>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent\n              side=\"top\"\n              align=\"start\"\n              className=\"[--radius:0.95rem]\"\n            >\n              <DropdownMenuItem>Auto</DropdownMenuItem>\n              <DropdownMenuItem>Agent</DropdownMenuItem>\n              <DropdownMenuItem>Manual</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n          <InputGroupText className=\"ml-auto\">52% used</InputGroupText>\n          <Separator orientation=\"vertical\" className=\"h-4!\" />\n          <InputGroupButton\n            variant=\"default\"\n            className=\"rounded-full\"\n            size=\"icon-xs\"\n            disabled\n          >\n            <ArrowUpIcon />\n            <span className=\"sr-only\">Send</span>\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"@shadcn\" />\n        <InputGroupAddon align=\"inline-end\">\n          <div className=\"flex size-4 items-center justify-center rounded-full bg-primary text-primary-foreground\">\n            <IconCheck className=\"size-3\" />\n          </div>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-dropdown.tsx",
    "content": "import { ChevronDownIcon, MoreHorizontal } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nexport default function InputGroupDropdown() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter file name\" />\n        <InputGroupAddon align=\"inline-end\">\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"More\"\n                size=\"icon-xs\"\n              >\n                <MoreHorizontal />\n              </InputGroupButton>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\">\n              <DropdownMenuItem>Settings</DropdownMenuItem>\n              <DropdownMenuItem>Copy path</DropdownMenuItem>\n              <DropdownMenuItem>Open location</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup className=\"[--radius:1rem]\">\n        <InputGroupInput placeholder=\"Enter search query\" />\n        <InputGroupAddon align=\"inline-end\">\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <InputGroupButton variant=\"ghost\" className=\"pr-1.5! text-xs\">\n                Search In... <ChevronDownIcon className=\"size-3\" />\n              </InputGroupButton>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\" className=\"[--radius:0.95rem]\">\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\n              <DropdownMenuItem>Blog Posts</DropdownMenuItem>\n              <DropdownMenuItem>Changelog</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-icon.tsx",
    "content": "import {\n  CheckIcon,\n  CreditCardIcon,\n  InfoIcon,\n  MailIcon,\n  SearchIcon,\n  StarIcon,\n} from \"lucide-react\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nexport default function InputGroupIcon() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Search...\" />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput type=\"email\" placeholder=\"Enter your email\" />\n        <InputGroupAddon>\n          <MailIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Card number\" />\n        <InputGroupAddon>\n          <CreditCardIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <CheckIcon />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Card number\" />\n        <InputGroupAddon align=\"inline-end\">\n          <StarIcon />\n          <InfoIcon />\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-label.tsx",
    "content": "import { InfoIcon } from \"lucide-react\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport default function InputGroupLabel() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput id=\"email\" placeholder=\"shadcn\" />\n        <InputGroupAddon>\n          <Label htmlFor=\"email\">@</Label>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput id=\"email-2\" placeholder=\"shadcn@vercel.com\" />\n        <InputGroupAddon align=\"block-start\">\n          <Label htmlFor=\"email-2\" className=\"text-foreground\">\n            Email\n          </Label>\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"Help\"\n                className=\"ml-auto rounded-full\"\n                size=\"icon-xs\"\n              >\n                <InfoIcon />\n              </InputGroupButton>\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>We&apos;ll use this to send you notifications</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-spinner.tsx",
    "content": "import { LoaderIcon } from \"lucide-react\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function InputGroupSpinner() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup data-disabled>\n        <InputGroupInput placeholder=\"Searching...\" disabled />\n        <InputGroupAddon align=\"inline-end\">\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup data-disabled>\n        <InputGroupInput placeholder=\"Processing...\" disabled />\n        <InputGroupAddon>\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup data-disabled>\n        <InputGroupInput placeholder=\"Saving changes...\" disabled />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>Saving...</InputGroupText>\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup data-disabled>\n        <InputGroupInput placeholder=\"Refreshing data...\" disabled />\n        <InputGroupAddon>\n          <LoaderIcon className=\"animate-spin\" />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText className=\"text-muted-foreground\">\n            Please wait...\n          </InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-text.tsx",
    "content": "import {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nexport default function InputGroupTextExample() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-6\">\n      <InputGroup>\n        <InputGroupAddon>\n          <InputGroupText>$</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupInput placeholder=\"0.00\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>USD</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupAddon>\n          <InputGroupText>https://</InputGroupText>\n        </InputGroupAddon>\n        <InputGroupInput placeholder=\"example.com\" className=\"pl-0.5!\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>.com</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter your username\" />\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupText>@company.com</InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder=\"Enter your message\" />\n        <InputGroupAddon align=\"block-end\">\n          <InputGroupText className=\"text-xs text-muted-foreground\">\n            120 characters left\n          </InputGroupText>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-textarea.tsx",
    "content": "import {\n  IconBrandJavascript,\n  IconCopy,\n  IconCornerDownLeft,\n  IconRefresh,\n} from \"@tabler/icons-react\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nexport default function InputGroupTextareaExample() {\n  return (\n    <div className=\"grid w-full max-w-md gap-4\">\n      <InputGroup>\n        <InputGroupTextarea\n          id=\"textarea-code-32\"\n          placeholder=\"console.log('Hello, world!');\"\n          className=\"min-h-[200px]\"\n        />\n        <InputGroupAddon align=\"block-end\" className=\"border-t\">\n          <InputGroupText>Line 1, Column 1</InputGroupText>\n          <InputGroupButton size=\"sm\" className=\"ml-auto\" variant=\"default\">\n            Run <IconCornerDownLeft />\n          </InputGroupButton>\n        </InputGroupAddon>\n        <InputGroupAddon align=\"block-start\" className=\"border-b\">\n          <InputGroupText className=\"font-mono font-medium\">\n            <IconBrandJavascript />\n            script.js\n          </InputGroupText>\n          <InputGroupButton className=\"ml-auto\" size=\"icon-xs\">\n            <IconRefresh />\n          </InputGroupButton>\n          <InputGroupButton variant=\"ghost\" size=\"icon-xs\">\n            <IconCopy />\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-group-tooltip.tsx",
    "content": "import { HelpCircle, InfoIcon } from \"lucide-react\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport default function InputGroupTooltip() {\n  return (\n    <div className=\"grid w-full max-w-sm gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter password\" type=\"password\" />\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"Info\"\n                size=\"icon-xs\"\n              >\n                <InfoIcon />\n              </InputGroupButton>\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>Password must be at least 8 characters</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Your email address\" />\n        <InputGroupAddon align=\"inline-end\">\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"Help\"\n                size=\"icon-xs\"\n              >\n                <HelpCircle />\n              </InputGroupButton>\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>We&apos;ll use this to send you notifications</p>\n            </TooltipContent>\n          </Tooltip>\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupInput placeholder=\"Enter API key\" />\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <InputGroupAddon>\n              <InputGroupButton\n                variant=\"ghost\"\n                aria-label=\"Help\"\n                size=\"icon-xs\"\n              >\n                <HelpCircle />\n              </InputGroupButton>\n            </InputGroupAddon>\n          </TooltipTrigger>\n          <TooltipContent side=\"left\">\n            <p>Click for help with API keys</p>\n          </TooltipContent>\n        </Tooltip>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-otp-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/registry/new-york-v4/ui/input-otp\"\n\nexport default function InputOTPControlled() {\n  const [value, setValue] = React.useState(\"\")\n\n  return (\n    <div className=\"space-y-2\">\n      <InputOTP\n        maxLength={6}\n        value={value}\n        onChange={(value) => setValue(value)}\n      >\n        <InputOTPGroup>\n          <InputOTPSlot index={0} />\n          <InputOTPSlot index={1} />\n          <InputOTPSlot index={2} />\n          <InputOTPSlot index={3} />\n          <InputOTPSlot index={4} />\n          <InputOTPSlot index={5} />\n        </InputOTPGroup>\n      </InputOTP>\n      <div className=\"text-center text-sm\">\n        {value === \"\" ? (\n          <>Enter your one-time password.</>\n        ) : (\n          <>You entered: {value}</>\n        )}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-otp-demo.tsx",
    "content": "import {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/registry/new-york-v4/ui/input-otp\"\n\nexport default function InputOTPDemo() {\n  return (\n    <InputOTP maxLength={6}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={3} />\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-otp-pattern.tsx",
    "content": "\"use client\"\n\nimport { REGEXP_ONLY_DIGITS_AND_CHARS } from \"input-otp\"\n\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n} from \"@/registry/new-york-v4/ui/input-otp\"\n\nexport default function InputOTPPattern() {\n  return (\n    <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n        <InputOTPSlot index={2} />\n        <InputOTPSlot index={3} />\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-otp-separator.tsx",
    "content": "import React from \"react\"\n\nimport {\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSeparator,\n  InputOTPSlot,\n} from \"@/registry/new-york-v4/ui/input-otp\"\n\nexport default function InputOTPWithSeparator() {\n  return (\n    <InputOTP maxLength={6}>\n      <InputOTPGroup>\n        <InputOTPSlot index={0} />\n        <InputOTPSlot index={1} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={2} />\n        <InputOTPSlot index={3} />\n      </InputOTPGroup>\n      <InputOTPSeparator />\n      <InputOTPGroup>\n        <InputOTPSlot index={4} />\n        <InputOTPSlot index={5} />\n      </InputOTPGroup>\n    </InputOTP>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-with-button.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\n\nexport default function InputWithButton() {\n  return (\n    <div className=\"flex w-full max-w-sm items-center gap-2\">\n      <Input type=\"email\" placeholder=\"Email\" />\n      <Button type=\"submit\" variant=\"outline\">\n        Subscribe\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-with-label.tsx",
    "content": "import { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function InputWithLabel() {\n  return (\n    <div className=\"grid w-full max-w-sm items-center gap-3\">\n      <Label htmlFor=\"email\">Email</Label>\n      <Input type=\"email\" id=\"email\" placeholder=\"Email\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/input-with-text.tsx",
    "content": "import { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function InputWithText() {\n  return (\n    <div className=\"grid w-full max-w-sm items-center gap-3\">\n      <Label htmlFor=\"email-2\">Email</Label>\n      <Input type=\"email\" id=\"email-2\" placeholder=\"Email\" />\n      <p className=\"text-sm text-muted-foreground\">Enter your email address.</p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-avatar.tsx",
    "content": "import { Plus } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nexport default function ItemAvatar() {\n  return (\n    <div className=\"flex w-full max-w-lg flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemMedia>\n          <Avatar className=\"size-10\">\n            <AvatarImage src=\"https://github.com/evilrabbit.png\" />\n            <AvatarFallback>ER</AvatarFallback>\n          </Avatar>\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Evil Rabbit</ItemTitle>\n          <ItemDescription>Last seen 5 months ago</ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button\n            size=\"icon-sm\"\n            variant=\"outline\"\n            className=\"rounded-full\"\n            aria-label=\"Invite\"\n          >\n            <Plus />\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemMedia>\n          <div className=\"flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale\">\n            <Avatar className=\"hidden sm:flex\">\n              <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\n              <AvatarFallback>CN</AvatarFallback>\n            </Avatar>\n            <Avatar className=\"hidden sm:flex\">\n              <AvatarImage\n                src=\"https://github.com/maxleiter.png\"\n                alt=\"@maxleiter\"\n              />\n              <AvatarFallback>LR</AvatarFallback>\n            </Avatar>\n            <Avatar>\n              <AvatarImage\n                src=\"https://github.com/evilrabbit.png\"\n                alt=\"@evilrabbit\"\n              />\n              <AvatarFallback>ER</AvatarFallback>\n            </Avatar>\n          </div>\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>No Team Members</ItemTitle>\n          <ItemDescription>\n            Invite your team to collaborate on this project.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\" variant=\"outline\">\n            Invite\n          </Button>\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-demo.tsx",
    "content": "import { BadgeCheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nexport default function ItemDemo() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Basic Item</ItemTitle>\n          <ItemDescription>\n            A simple item with title and description.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\" asChild>\n        <a href=\"#\">\n          <ItemMedia>\n            <BadgeCheckIcon className=\"size-5\" />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Your profile has been verified.</ItemTitle>\n          </ItemContent>\n          <ItemActions>\n            <ChevronRightIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-dropdown.tsx",
    "content": "\"use client\"\n\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nconst people = [\n  {\n    username: \"shadcn\",\n    avatar: \"https://github.com/shadcn.png\",\n    email: \"shadcn@vercel.com\",\n  },\n  {\n    username: \"maxleiter\",\n    avatar: \"https://github.com/maxleiter.png\",\n    email: \"maxleiter@vercel.com\",\n  },\n  {\n    username: \"evilrabbit\",\n    avatar: \"https://github.com/evilrabbit.png\",\n    email: \"evilrabbit@vercel.com\",\n  },\n]\n\nexport default function ItemDropdown() {\n  return (\n    <div className=\"flex min-h-64 w-full max-w-md flex-col items-center gap-6\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" size=\"sm\" className=\"w-fit\">\n            Select <ChevronDownIcon />\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className=\"w-72 [--radius:0.65rem]\" align=\"end\">\n          {people.map((person) => (\n            <DropdownMenuItem key={person.username} className=\"p-0\">\n              <Item size=\"sm\" className=\"w-full p-2\">\n                <ItemMedia>\n                  <Avatar className=\"size-8\">\n                    <AvatarImage src={person.avatar} className=\"grayscale\" />\n                    <AvatarFallback>{person.username.charAt(0)}</AvatarFallback>\n                  </Avatar>\n                </ItemMedia>\n                <ItemContent className=\"gap-0.5\">\n                  <ItemTitle>{person.username}</ItemTitle>\n                  <ItemDescription>{person.email}</ItemDescription>\n                </ItemContent>\n              </Item>\n            </DropdownMenuItem>\n          ))}\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-group.tsx",
    "content": "import * as React from \"react\"\nimport { PlusIcon } from \"lucide-react\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/registry/new-york-v4/ui/avatar\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemMedia,\n  ItemSeparator,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nconst people = [\n  {\n    username: \"shadcn\",\n    avatar: \"https://github.com/shadcn.png\",\n    email: \"shadcn@vercel.com\",\n  },\n  {\n    username: \"maxleiter\",\n    avatar: \"https://github.com/maxleiter.png\",\n    email: \"maxleiter@vercel.com\",\n  },\n  {\n    username: \"evilrabbit\",\n    avatar: \"https://github.com/evilrabbit.png\",\n    email: \"evilrabbit@vercel.com\",\n  },\n]\n\nexport default function ItemGroupExample() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <ItemGroup>\n        {people.map((person, index) => (\n          <React.Fragment key={person.username}>\n            <Item>\n              <ItemMedia>\n                <Avatar>\n                  <AvatarImage src={person.avatar} className=\"grayscale\" />\n                  <AvatarFallback>{person.username.charAt(0)}</AvatarFallback>\n                </Avatar>\n              </ItemMedia>\n              <ItemContent className=\"gap-1\">\n                <ItemTitle>{person.username}</ItemTitle>\n                <ItemDescription>{person.email}</ItemDescription>\n              </ItemContent>\n              <ItemActions>\n                <Button variant=\"ghost\" size=\"icon\" className=\"rounded-full\">\n                  <PlusIcon />\n                </Button>\n              </ItemActions>\n            </Item>\n            {index !== people.length - 1 && <ItemSeparator />}\n          </React.Fragment>\n        ))}\n      </ItemGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-header.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemHeader,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nconst models = [\n  {\n    name: \"v0-1.5-sm\",\n    description: \"Everyday tasks and UI generation.\",\n    image:\n      \"https://images.unsplash.com/photo-1650804068570-7fb2e3dbf888?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Valeria Reverdo on Unsplash\",\n  },\n  {\n    name: \"v0-1.5-lg\",\n    description: \"Advanced thinking or reasoning.\",\n    image:\n      \"https://images.unsplash.com/photo-1610280777472-54133d004c8c?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Michael Oeser on Unsplash\",\n  },\n  {\n    name: \"v0-2.0-mini\",\n    description: \"Open Source model for everyone.\",\n    image:\n      \"https://images.unsplash.com/photo-1602146057681-08560aee8cde?q=80&w=640&auto=format&fit=crop\",\n    credit: \"Cherry Laithang on Unsplash\",\n  },\n]\n\nexport default function ItemHeaderDemo() {\n  return (\n    <div className=\"flex w-full max-w-xl flex-col gap-6\">\n      <ItemGroup className=\"grid grid-cols-3 gap-4\">\n        {models.map((model) => (\n          <Item key={model.name} variant=\"outline\">\n            <ItemHeader>\n              <Image\n                src={model.image}\n                alt={model.name}\n                width={128}\n                height={128}\n                className=\"aspect-square w-full rounded-sm object-cover\"\n              />\n            </ItemHeader>\n            <ItemContent>\n              <ItemTitle>{model.name}</ItemTitle>\n              <ItemDescription>{model.description}</ItemDescription>\n            </ItemContent>\n          </Item>\n        ))}\n      </ItemGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-icon.tsx",
    "content": "import { ShieldAlertIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nexport default function ItemIcon() {\n  return (\n    <div className=\"flex w-full max-w-lg flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <ShieldAlertIcon />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Security Alert</ItemTitle>\n          <ItemDescription>\n            New login detected from unknown device.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button size=\"sm\" variant=\"outline\">\n            Review\n          </Button>\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-image.tsx",
    "content": "import Image from \"next/image\"\n\nimport {\n  Item,\n  ItemContent,\n  ItemDescription,\n  ItemGroup,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nconst music = [\n  {\n    title: \"Midnight City Lights\",\n    artist: \"Neon Dreams\",\n    album: \"Electric Nights\",\n    duration: \"3:45\",\n  },\n  {\n    title: \"Coffee Shop Conversations\",\n    artist: \"The Morning Brew\",\n    album: \"Urban Stories\",\n    duration: \"4:05\",\n  },\n  {\n    title: \"Digital Rain\",\n    artist: \"Cyber Symphony\",\n    album: \"Binary Beats\",\n    duration: \"3:30\",\n  },\n]\n\nexport default function ItemImage() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <ItemGroup className=\"gap-4\">\n        {music.map((song) => (\n          <Item key={song.title} variant=\"outline\" asChild role=\"listitem\">\n            <a href=\"#\">\n              <ItemMedia variant=\"image\">\n                <Image\n                  src={`https://avatar.vercel.sh/${song.title}`}\n                  alt={song.title}\n                  width={32}\n                  height={32}\n                  className=\"object-cover grayscale\"\n                />\n              </ItemMedia>\n              <ItemContent>\n                <ItemTitle className=\"line-clamp-1\">\n                  {song.title} -{\" \"}\n                  <span className=\"text-muted-foreground\">{song.album}</span>\n                </ItemTitle>\n                <ItemDescription>{song.artist}</ItemDescription>\n              </ItemContent>\n              <ItemContent className=\"flex-none text-center\">\n                <ItemDescription>{song.duration}</ItemDescription>\n              </ItemContent>\n            </a>\n          </Item>\n        ))}\n      </ItemGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-link.tsx",
    "content": "import { ChevronRightIcon, ExternalLinkIcon } from \"lucide-react\"\n\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nexport default function ItemLink() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-4\">\n      <Item asChild>\n        <a href=\"#\">\n          <ItemContent>\n            <ItemTitle>Visit our documentation</ItemTitle>\n            <ItemDescription>\n              Learn how to get started with our components.\n            </ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <ChevronRightIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n      <Item variant=\"outline\" asChild>\n        <a href=\"#\" target=\"_blank\" rel=\"noopener noreferrer\">\n          <ItemContent>\n            <ItemTitle>External resource</ItemTitle>\n            <ItemDescription>\n              Opens in a new tab with security attributes.\n            </ItemDescription>\n          </ItemContent>\n          <ItemActions>\n            <ExternalLinkIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-size.tsx",
    "content": "import { BadgeCheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nexport default function ItemSizeDemo() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-6\">\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Basic Item</ItemTitle>\n          <ItemDescription>\n            A simple item with title and description.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Action\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\" size=\"sm\" asChild>\n        <a href=\"#\">\n          <ItemMedia>\n            <BadgeCheckIcon className=\"size-5\" />\n          </ItemMedia>\n          <ItemContent>\n            <ItemTitle>Your profile has been verified.</ItemTitle>\n          </ItemContent>\n          <ItemActions>\n            <ChevronRightIcon className=\"size-4\" />\n          </ItemActions>\n        </a>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/item-variant.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\n\nexport default function ItemVariant() {\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <Item>\n        <ItemContent>\n          <ItemTitle>Default Variant</ItemTitle>\n          <ItemDescription>\n            Standard styling with subtle background and borders.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Open\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"outline\">\n        <ItemContent>\n          <ItemTitle>Outline Variant</ItemTitle>\n          <ItemDescription>\n            Outlined style with clear borders and transparent background.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Open\n          </Button>\n        </ItemActions>\n      </Item>\n      <Item variant=\"muted\">\n        <ItemContent>\n          <ItemTitle>Muted Variant</ItemTitle>\n          <ItemDescription>\n            Subdued appearance with muted colors for secondary content.\n          </ItemDescription>\n        </ItemContent>\n        <ItemActions>\n          <Button variant=\"outline\" size=\"sm\">\n            Open\n          </Button>\n        </ItemActions>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/kbd-button.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Kbd } from \"@/registry/new-york-v4/ui/kbd\"\n\nexport default function KbdButton() {\n  return (\n    <div className=\"flex flex-wrap items-center gap-4\">\n      <Button variant=\"outline\" size=\"sm\" className=\"pr-2\">\n        Accept <Kbd>⏎</Kbd>\n      </Button>\n      <Button variant=\"outline\" size=\"sm\" className=\"pr-2\">\n        Cancel <Kbd>Esc</Kbd>\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/kbd-demo.tsx",
    "content": "import { Kbd, KbdGroup } from \"@/registry/new-york-v4/ui/kbd\"\n\nexport default function KbdDemo() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <KbdGroup>\n        <Kbd>⌘</Kbd>\n        <Kbd>⇧</Kbd>\n        <Kbd>⌥</Kbd>\n        <Kbd>⌃</Kbd>\n      </KbdGroup>\n      <KbdGroup>\n        <Kbd>Ctrl</Kbd>\n        <span>+</span>\n        <Kbd>B</Kbd>\n      </KbdGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/kbd-group.tsx",
    "content": "import { Kbd, KbdGroup } from \"@/registry/new-york-v4/ui/kbd\"\n\nexport default function KbdGroupExample() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <p className=\"text-sm text-muted-foreground\">\n        Use{\" \"}\n        <KbdGroup>\n          <Kbd>Ctrl + B</Kbd>\n          <Kbd>Ctrl + K</Kbd>\n        </KbdGroup>{\" \"}\n        to open the command palette\n      </p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/kbd-input-group.tsx",
    "content": "import { SearchIcon } from \"lucide-react\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Kbd } from \"@/registry/new-york-v4/ui/kbd\"\n\nexport default function KbdInputGroup() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-6\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Search...\" />\n        <InputGroupAddon>\n          <SearchIcon />\n        </InputGroupAddon>\n        <InputGroupAddon align=\"inline-end\">\n          <Kbd>⌘</Kbd>\n          <Kbd>K</Kbd>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/kbd-tooltip.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { ButtonGroup } from \"@/registry/new-york-v4/ui/button-group\"\nimport { Kbd, KbdGroup } from \"@/registry/new-york-v4/ui/kbd\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport default function KbdTooltip() {\n  return (\n    <div className=\"flex flex-wrap gap-4\">\n      <ButtonGroup>\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <Button size=\"sm\" variant=\"outline\">\n              Save\n            </Button>\n          </TooltipTrigger>\n          <TooltipContent>\n            Save Changes <Kbd>S</Kbd>\n          </TooltipContent>\n        </Tooltip>\n        <Tooltip>\n          <TooltipTrigger asChild>\n            <Button size=\"sm\" variant=\"outline\">\n              Print\n            </Button>\n          </TooltipTrigger>\n          <TooltipContent>\n            Print Document{\" \"}\n            <KbdGroup>\n              <Kbd>Ctrl</Kbd>\n              <Kbd>P</Kbd>\n            </KbdGroup>\n          </TooltipContent>\n        </Tooltip>\n      </ButtonGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/label-demo.tsx",
    "content": "import { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nexport default function LabelDemo() {\n  return (\n    <div>\n      <div className=\"flex items-center space-x-2\">\n        <Checkbox id=\"terms\" />\n        <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/menubar-demo.tsx",
    "content": "import {\n  Menubar,\n  MenubarCheckboxItem,\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/registry/new-york-v4/ui/menubar\"\n\nexport default function MenubarDemo() {\n  return (\n    <Menubar>\n      <MenubarMenu>\n        <MenubarTrigger>File</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem>\n            New Tab <MenubarShortcut>⌘T</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem>\n            New Window <MenubarShortcut>⌘N</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem disabled>New Incognito Window</MenubarItem>\n          <MenubarSeparator />\n          <MenubarSub>\n            <MenubarSubTrigger>Share</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem>Email link</MenubarItem>\n              <MenubarItem>Messages</MenubarItem>\n              <MenubarItem>Notes</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n          <MenubarSeparator />\n          <MenubarItem>\n            Print... <MenubarShortcut>⌘P</MenubarShortcut>\n          </MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Edit</MenubarTrigger>\n        <MenubarContent>\n          <MenubarItem>\n            Undo <MenubarShortcut>⌘Z</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem>\n            Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarSub>\n            <MenubarSubTrigger>Find</MenubarSubTrigger>\n            <MenubarSubContent>\n              <MenubarItem>Search the web</MenubarItem>\n              <MenubarSeparator />\n              <MenubarItem>Find...</MenubarItem>\n              <MenubarItem>Find Next</MenubarItem>\n              <MenubarItem>Find Previous</MenubarItem>\n            </MenubarSubContent>\n          </MenubarSub>\n          <MenubarSeparator />\n          <MenubarItem>Cut</MenubarItem>\n          <MenubarItem>Copy</MenubarItem>\n          <MenubarItem>Paste</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>View</MenubarTrigger>\n        <MenubarContent>\n          <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>\n          <MenubarCheckboxItem checked>\n            Always Show Full URLs\n          </MenubarCheckboxItem>\n          <MenubarSeparator />\n          <MenubarItem inset>\n            Reload <MenubarShortcut>⌘R</MenubarShortcut>\n          </MenubarItem>\n          <MenubarItem disabled inset>\n            Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>\n          </MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem inset>Toggle Fullscreen</MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem inset>Hide Sidebar</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n      <MenubarMenu>\n        <MenubarTrigger>Profiles</MenubarTrigger>\n        <MenubarContent>\n          <MenubarRadioGroup value=\"benoit\">\n            <MenubarRadioItem value=\"andy\">Andy</MenubarRadioItem>\n            <MenubarRadioItem value=\"benoit\">Benoit</MenubarRadioItem>\n            <MenubarRadioItem value=\"Luis\">Luis</MenubarRadioItem>\n          </MenubarRadioGroup>\n          <MenubarSeparator />\n          <MenubarItem inset>Edit...</MenubarItem>\n          <MenubarSeparator />\n          <MenubarItem inset>Add Profile...</MenubarItem>\n        </MenubarContent>\n      </MenubarMenu>\n    </Menubar>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/mode-toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Moon, Sun } from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\n\nexport default function ModeToggle() {\n  const { setTheme } = useTheme()\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\" size=\"icon\">\n          <Sun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n          <Moon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n          <span className=\"sr-only\">Toggle theme</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuItem onClick={() => setTheme(\"light\")}>\n          Light\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"dark\")}>\n          Dark\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"system\")}>\n          System\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/native-select-demo.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/new-york-v4/ui/native-select\"\n\nexport default function NativeSelectDemo() {\n  return (\n    <NativeSelect>\n      <NativeSelectOption value=\"\">Select status</NativeSelectOption>\n      <NativeSelectOption value=\"todo\">Todo</NativeSelectOption>\n      <NativeSelectOption value=\"in-progress\">In Progress</NativeSelectOption>\n      <NativeSelectOption value=\"done\">Done</NativeSelectOption>\n      <NativeSelectOption value=\"cancelled\">Cancelled</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/native-select-disabled.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/new-york-v4/ui/native-select\"\n\nexport default function NativeSelectDisabled() {\n  return (\n    <NativeSelect disabled>\n      <NativeSelectOption value=\"\">Select priority</NativeSelectOption>\n      <NativeSelectOption value=\"low\">Low</NativeSelectOption>\n      <NativeSelectOption value=\"medium\">Medium</NativeSelectOption>\n      <NativeSelectOption value=\"high\">High</NativeSelectOption>\n      <NativeSelectOption value=\"critical\">Critical</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/native-select-groups.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOptGroup,\n  NativeSelectOption,\n} from \"@/registry/new-york-v4/ui/native-select\"\n\nexport default function NativeSelectGroups() {\n  return (\n    <NativeSelect>\n      <NativeSelectOption value=\"\">Select department</NativeSelectOption>\n      <NativeSelectOptGroup label=\"Engineering\">\n        <NativeSelectOption value=\"frontend\">Frontend</NativeSelectOption>\n        <NativeSelectOption value=\"backend\">Backend</NativeSelectOption>\n        <NativeSelectOption value=\"devops\">DevOps</NativeSelectOption>\n      </NativeSelectOptGroup>\n      <NativeSelectOptGroup label=\"Sales\">\n        <NativeSelectOption value=\"sales-rep\">Sales Rep</NativeSelectOption>\n        <NativeSelectOption value=\"account-manager\">\n          Account Manager\n        </NativeSelectOption>\n        <NativeSelectOption value=\"sales-director\">\n          Sales Director\n        </NativeSelectOption>\n      </NativeSelectOptGroup>\n      <NativeSelectOptGroup label=\"Operations\">\n        <NativeSelectOption value=\"support\">\n          Customer Support\n        </NativeSelectOption>\n        <NativeSelectOption value=\"product-manager\">\n          Product Manager\n        </NativeSelectOption>\n        <NativeSelectOption value=\"ops-manager\">\n          Operations Manager\n        </NativeSelectOption>\n      </NativeSelectOptGroup>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/native-select-invalid.tsx",
    "content": "import {\n  NativeSelect,\n  NativeSelectOption,\n} from \"@/registry/new-york-v4/ui/native-select\"\n\nexport default function NativeSelectInvalid() {\n  return (\n    <NativeSelect aria-invalid=\"true\">\n      <NativeSelectOption value=\"\">Select role</NativeSelectOption>\n      <NativeSelectOption value=\"admin\">Admin</NativeSelectOption>\n      <NativeSelectOption value=\"editor\">Editor</NativeSelectOption>\n      <NativeSelectOption value=\"viewer\">Viewer</NativeSelectOption>\n      <NativeSelectOption value=\"guest\">Guest</NativeSelectOption>\n    </NativeSelect>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/navigation-menu-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\nimport { CircleCheckIcon, CircleHelpIcon, CircleIcon } from \"lucide-react\"\n\nimport { useIsMobile } from \"@/registry/new-york-v4/hooks/use-mobile\"\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"@/registry/new-york-v4/ui/navigation-menu\"\n\nconst components: { title: string; href: string; description: string }[] = [\n  {\n    title: \"Alert Dialog\",\n    href: \"/docs/primitives/alert-dialog\",\n    description:\n      \"A modal dialog that interrupts the user with important content and expects a response.\",\n  },\n  {\n    title: \"Hover Card\",\n    href: \"/docs/primitives/hover-card\",\n    description:\n      \"For sighted users to preview content available behind a link.\",\n  },\n  {\n    title: \"Progress\",\n    href: \"/docs/primitives/progress\",\n    description:\n      \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n  },\n  {\n    title: \"Scroll-area\",\n    href: \"/docs/primitives/scroll-area\",\n    description: \"Visually or semantically separates content.\",\n  },\n  {\n    title: \"Tabs\",\n    href: \"/docs/primitives/tabs\",\n    description:\n      \"A set of layered sections of content—known as tab panels—that are displayed one at a time.\",\n  },\n  {\n    title: \"Tooltip\",\n    href: \"/docs/primitives/tooltip\",\n    description:\n      \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n  },\n]\n\nexport default function NavigationMenuDemo() {\n  const isMobile = useIsMobile()\n\n  return (\n    <NavigationMenu viewport={isMobile}>\n      <NavigationMenuList className=\"flex-wrap\">\n        <NavigationMenuItem>\n          <NavigationMenuTrigger>Home</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"grid gap-2 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\">\n              <li className=\"row-span-3\">\n                <NavigationMenuLink asChild>\n                  <a\n                    className=\"flex h-full w-full flex-col justify-end rounded-md bg-linear-to-b from-muted/50 to-muted p-4 no-underline outline-hidden transition-all duration-200 select-none focus:shadow-md md:p-6\"\n                    href=\"/\"\n                  >\n                    <div className=\"mb-2 text-lg font-medium sm:mt-4\">\n                      shadcn/ui\n                    </div>\n                    <p className=\"text-sm leading-tight text-muted-foreground\">\n                      Beautifully designed components built with Tailwind CSS.\n                    </p>\n                  </a>\n                </NavigationMenuLink>\n              </li>\n              <ListItem href=\"/docs\" title=\"Introduction\">\n                Re-usable components built using Radix UI and Tailwind CSS.\n              </ListItem>\n              <ListItem href=\"/docs/installation\" title=\"Installation\">\n                How to install dependencies and structure your app.\n              </ListItem>\n              <ListItem href=\"/docs/primitives/typography\" title=\"Typography\">\n                Styles for headings, paragraphs, lists...etc\n              </ListItem>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuTrigger>Components</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"grid gap-2 sm:w-[400px] md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n              {components.map((component) => (\n                <ListItem\n                  key={component.title}\n                  title={component.title}\n                  href={component.href}\n                >\n                  {component.description}\n                </ListItem>\n              ))}\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem>\n          <NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>\n            <Link href=\"/docs\">Docs</Link>\n          </NavigationMenuLink>\n        </NavigationMenuItem>\n        <NavigationMenuItem className=\"hidden md:block\">\n          <NavigationMenuTrigger>List</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"grid w-[300px] gap-4\">\n              <li>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\">\n                    <div className=\"font-medium\">Components</div>\n                    <div className=\"text-muted-foreground\">\n                      Browse all components in the library.\n                    </div>\n                  </Link>\n                </NavigationMenuLink>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\">\n                    <div className=\"font-medium\">Documentation</div>\n                    <div className=\"text-muted-foreground\">\n                      Learn how to use the library.\n                    </div>\n                  </Link>\n                </NavigationMenuLink>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\">\n                    <div className=\"font-medium\">Blog</div>\n                    <div className=\"text-muted-foreground\">\n                      Read our latest blog posts.\n                    </div>\n                  </Link>\n                </NavigationMenuLink>\n              </li>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem className=\"hidden md:block\">\n          <NavigationMenuTrigger>Simple</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"grid w-[200px] gap-4\">\n              <li>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\">Components</Link>\n                </NavigationMenuLink>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\">Documentation</Link>\n                </NavigationMenuLink>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\">Blocks</Link>\n                </NavigationMenuLink>\n              </li>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n        <NavigationMenuItem className=\"hidden md:block\">\n          <NavigationMenuTrigger>With Icon</NavigationMenuTrigger>\n          <NavigationMenuContent>\n            <ul className=\"grid w-[200px] gap-4\">\n              <li>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\" className=\"flex-row items-center gap-2\">\n                    <CircleHelpIcon />\n                    Backlog\n                  </Link>\n                </NavigationMenuLink>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\" className=\"flex-row items-center gap-2\">\n                    <CircleIcon />\n                    To Do\n                  </Link>\n                </NavigationMenuLink>\n                <NavigationMenuLink asChild>\n                  <Link href=\"#\" className=\"flex-row items-center gap-2\">\n                    <CircleCheckIcon />\n                    Done\n                  </Link>\n                </NavigationMenuLink>\n              </li>\n            </ul>\n          </NavigationMenuContent>\n        </NavigationMenuItem>\n      </NavigationMenuList>\n    </NavigationMenu>\n  )\n}\n\nfunction ListItem({\n  title,\n  children,\n  href,\n  ...props\n}: React.ComponentPropsWithoutRef<\"li\"> & { href: string }) {\n  return (\n    <li {...props}>\n      <NavigationMenuLink asChild>\n        <Link href={href}>\n          <div className=\"text-sm leading-none font-medium\">{title}</div>\n          <p className=\"line-clamp-2 text-sm leading-snug text-muted-foreground\">\n            {children}\n          </p>\n        </Link>\n      </NavigationMenuLink>\n    </li>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/pagination-demo.tsx",
    "content": "import {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/registry/new-york-v4/ui/pagination\"\n\nexport default function PaginationDemo() {\n  return (\n    <Pagination>\n      <PaginationContent>\n        <PaginationItem>\n          <PaginationPrevious href=\"#\" />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">1</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\" isActive>\n            2\n          </PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationLink href=\"#\">3</PaginationLink>\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationEllipsis />\n        </PaginationItem>\n        <PaginationItem>\n          <PaginationNext href=\"#\" />\n        </PaginationItem>\n      </PaginationContent>\n    </Pagination>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/popover-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/registry/new-york-v4/ui/popover\"\n\nexport default function PopoverDemo() {\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button variant=\"outline\">Open popover</Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-80\">\n        <div className=\"grid gap-4\">\n          <div className=\"space-y-2\">\n            <h4 className=\"leading-none font-medium\">Dimensions</h4>\n            <p className=\"text-sm text-muted-foreground\">\n              Set the dimensions for the layer.\n            </p>\n          </div>\n          <div className=\"grid gap-2\">\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"width\">Width</Label>\n              <Input\n                id=\"width\"\n                defaultValue=\"100%\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"maxWidth\">Max. width</Label>\n              <Input\n                id=\"maxWidth\"\n                defaultValue=\"300px\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"height\">Height</Label>\n              <Input\n                id=\"height\"\n                defaultValue=\"25px\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n            <div className=\"grid grid-cols-3 items-center gap-4\">\n              <Label htmlFor=\"maxHeight\">Max. height</Label>\n              <Input\n                id=\"maxHeight\"\n                defaultValue=\"none\"\n                className=\"col-span-2 h-8\"\n              />\n            </div>\n          </div>\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/progress-demo.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Progress } from \"@/registry/new-york-v4/ui/progress\"\n\nexport default function ProgressDemo() {\n  const [progress, setProgress] = React.useState(13)\n\n  React.useEffect(() => {\n    const timer = setTimeout(() => setProgress(66), 500)\n    return () => clearTimeout(timer)\n  }, [])\n\n  return <Progress value={progress} className=\"w-[60%]\" />\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/radio-group-demo.tsx",
    "content": "import { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/registry/new-york-v4/ui/radio-group\"\n\nexport default function RadioGroupDemo() {\n  return (\n    <RadioGroup defaultValue=\"comfortable\">\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"default\" id=\"r1\" />\n        <Label htmlFor=\"r1\">Default</Label>\n      </div>\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"comfortable\" id=\"r2\" />\n        <Label htmlFor=\"r2\">Comfortable</Label>\n      </div>\n      <div className=\"flex items-center gap-3\">\n        <RadioGroupItem value=\"compact\" id=\"r3\" />\n        <Label htmlFor=\"r3\">Compact</Label>\n      </div>\n    </RadioGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/resizable-demo-with-handle.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/registry/new-york-v4/ui/resizable\"\n\nexport default function ResizableDemo() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"max-w-md rounded-lg border md:min-w-[450px]\"\n    >\n      <ResizablePanel defaultSize=\"50%\">\n        <div className=\"flex h-[200px] items-center justify-center p-6\">\n          <span className=\"font-semibold\">One</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle withHandle />\n      <ResizablePanel defaultSize=\"50%\">\n        <ResizablePanelGroup orientation=\"vertical\">\n          <ResizablePanel defaultSize=\"25%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">Two</span>\n            </div>\n          </ResizablePanel>\n          <ResizableHandle withHandle />\n          <ResizablePanel defaultSize=\"75%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">Three</span>\n            </div>\n          </ResizablePanel>\n        </ResizablePanelGroup>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/resizable-demo.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/registry/new-york-v4/ui/resizable\"\n\nexport default function ResizableDemo() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"max-w-md rounded-lg border md:min-w-[450px]\"\n    >\n      <ResizablePanel defaultSize=\"50%\">\n        <div className=\"flex h-[200px] items-center justify-center p-6\">\n          <span className=\"font-semibold\">One</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle />\n      <ResizablePanel defaultSize=\"50%\">\n        <ResizablePanelGroup orientation=\"vertical\">\n          <ResizablePanel defaultSize=\"25%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">Two</span>\n            </div>\n          </ResizablePanel>\n          <ResizableHandle />\n          <ResizablePanel defaultSize=\"75%\">\n            <div className=\"flex h-full items-center justify-center p-6\">\n              <span className=\"font-semibold\">Three</span>\n            </div>\n          </ResizablePanel>\n        </ResizablePanelGroup>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/resizable-handle.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/registry/new-york-v4/ui/resizable\"\n\nexport default function ResizableHandleDemo() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"horizontal\"\n      className=\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\"\n    >\n      <ResizablePanel defaultSize=\"25%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Sidebar</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle withHandle />\n      <ResizablePanel defaultSize=\"75%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Content</span>\n        </div>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/resizable-vertical.tsx",
    "content": "import {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/registry/new-york-v4/ui/resizable\"\n\nexport default function ResizableDemo() {\n  return (\n    <ResizablePanelGroup\n      orientation=\"vertical\"\n      className=\"min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]\"\n    >\n      <ResizablePanel defaultSize=\"25%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Header</span>\n        </div>\n      </ResizablePanel>\n      <ResizableHandle />\n      <ResizablePanel defaultSize=\"75%\">\n        <div className=\"flex h-full items-center justify-center p-6\">\n          <span className=\"font-semibold\">Content</span>\n        </div>\n      </ResizablePanel>\n    </ResizablePanelGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/scroll-area-demo.tsx",
    "content": "import * as React from \"react\"\n\nimport { ScrollArea } from \"@/registry/new-york-v4/ui/scroll-area\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nconst tags = Array.from({ length: 50 }).map(\n  (_, i, a) => `v1.2.0-beta.${a.length - i}`\n)\n\nexport default function ScrollAreaDemo() {\n  return (\n    <ScrollArea className=\"h-72 w-48 rounded-md border\">\n      <div className=\"p-4\">\n        <h4 className=\"mb-4 text-sm leading-none font-medium\">Tags</h4>\n        {tags.map((tag) => (\n          <React.Fragment key={tag}>\n            <div className=\"text-sm\">{tag}</div>\n            <Separator className=\"my-2\" />\n          </React.Fragment>\n        ))}\n      </div>\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/scroll-area-horizontal-demo.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\n\nimport { ScrollArea, ScrollBar } from \"@/registry/new-york-v4/ui/scroll-area\"\n\nexport interface Artwork {\n  artist: string\n  art: string\n}\n\nexport const works: Artwork[] = [\n  {\n    artist: \"Ornella Binni\",\n    art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Tom Byrom\",\n    art: \"https://images.unsplash.com/photo-1548516173-3cabfa4607e9?auto=format&fit=crop&w=300&q=80\",\n  },\n  {\n    artist: \"Vladimir Malyavko\",\n    art: \"https://images.unsplash.com/photo-1494337480532-3725c85fd2ab?auto=format&fit=crop&w=300&q=80\",\n  },\n]\n\nexport default function ScrollAreaHorizontalDemo() {\n  return (\n    <ScrollArea className=\"w-96 rounded-md border whitespace-nowrap\">\n      <div className=\"flex w-max space-x-4 p-4\">\n        {works.map((artwork) => (\n          <figure key={artwork.artist} className=\"shrink-0\">\n            <div className=\"overflow-hidden rounded-md\">\n              <Image\n                src={artwork.art}\n                alt={`Photo by ${artwork.artist}`}\n                className=\"aspect-[3/4] h-fit w-fit object-cover\"\n                width={300}\n                height={400}\n              />\n            </div>\n            <figcaption className=\"pt-2 text-xs text-muted-foreground\">\n              Photo by{\" \"}\n              <span className=\"font-semibold text-foreground\">\n                {artwork.artist}\n              </span>\n            </figcaption>\n          </figure>\n        ))}\n      </div>\n      <ScrollBar orientation=\"horizontal\" />\n    </ScrollArea>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/select-demo.tsx",
    "content": "import * as React from \"react\"\n\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport default function SelectDemo() {\n  return (\n    <Select>\n      <SelectTrigger className=\"w-[180px]\">\n        <SelectValue placeholder=\"Select a fruit\" />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectLabel>Fruits</SelectLabel>\n          <SelectItem value=\"apple\">Apple</SelectItem>\n          <SelectItem value=\"banana\">Banana</SelectItem>\n          <SelectItem value=\"blueberry\">Blueberry</SelectItem>\n          <SelectItem value=\"grapes\">Grapes</SelectItem>\n          <SelectItem value=\"pineapple\">Pineapple</SelectItem>\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/select-scrollable.tsx",
    "content": "import * as React from \"react\"\n\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\n\nexport default function SelectScrollable() {\n  return (\n    <Select>\n      <SelectTrigger className=\"w-[280px]\">\n        <SelectValue placeholder=\"Select a timezone\" />\n      </SelectTrigger>\n      <SelectContent>\n        <SelectGroup>\n          <SelectLabel>North America</SelectLabel>\n          <SelectItem value=\"est\">Eastern Standard Time (EST)</SelectItem>\n          <SelectItem value=\"cst\">Central Standard Time (CST)</SelectItem>\n          <SelectItem value=\"mst\">Mountain Standard Time (MST)</SelectItem>\n          <SelectItem value=\"pst\">Pacific Standard Time (PST)</SelectItem>\n          <SelectItem value=\"akst\">Alaska Standard Time (AKST)</SelectItem>\n          <SelectItem value=\"hst\">Hawaii Standard Time (HST)</SelectItem>\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Europe & Africa</SelectLabel>\n          <SelectItem value=\"gmt\">Greenwich Mean Time (GMT)</SelectItem>\n          <SelectItem value=\"cet\">Central European Time (CET)</SelectItem>\n          <SelectItem value=\"eet\">Eastern European Time (EET)</SelectItem>\n          <SelectItem value=\"west\">\n            Western European Summer Time (WEST)\n          </SelectItem>\n          <SelectItem value=\"cat\">Central Africa Time (CAT)</SelectItem>\n          <SelectItem value=\"eat\">East Africa Time (EAT)</SelectItem>\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Asia</SelectLabel>\n          <SelectItem value=\"msk\">Moscow Time (MSK)</SelectItem>\n          <SelectItem value=\"ist\">India Standard Time (IST)</SelectItem>\n          <SelectItem value=\"cst_china\">China Standard Time (CST)</SelectItem>\n          <SelectItem value=\"jst\">Japan Standard Time (JST)</SelectItem>\n          <SelectItem value=\"kst\">Korea Standard Time (KST)</SelectItem>\n          <SelectItem value=\"ist_indonesia\">\n            Indonesia Central Standard Time (WITA)\n          </SelectItem>\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>Australia & Pacific</SelectLabel>\n          <SelectItem value=\"awst\">\n            Australian Western Standard Time (AWST)\n          </SelectItem>\n          <SelectItem value=\"acst\">\n            Australian Central Standard Time (ACST)\n          </SelectItem>\n          <SelectItem value=\"aest\">\n            Australian Eastern Standard Time (AEST)\n          </SelectItem>\n          <SelectItem value=\"nzst\">New Zealand Standard Time (NZST)</SelectItem>\n          <SelectItem value=\"fjt\">Fiji Time (FJT)</SelectItem>\n        </SelectGroup>\n        <SelectGroup>\n          <SelectLabel>South America</SelectLabel>\n          <SelectItem value=\"art\">Argentina Time (ART)</SelectItem>\n          <SelectItem value=\"bot\">Bolivia Time (BOT)</SelectItem>\n          <SelectItem value=\"brt\">Brasilia Time (BRT)</SelectItem>\n          <SelectItem value=\"clt\">Chile Standard Time (CLT)</SelectItem>\n        </SelectGroup>\n      </SelectContent>\n    </Select>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/separator-demo.tsx",
    "content": "import { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nexport default function SeparatorDemo() {\n  return (\n    <div>\n      <div className=\"space-y-1\">\n        <h4 className=\"text-sm leading-none font-medium\">Radix Primitives</h4>\n        <p className=\"text-sm text-muted-foreground\">\n          An open-source UI component library.\n        </p>\n      </div>\n      <Separator className=\"my-4\" />\n      <div className=\"flex h-5 items-center space-x-4 text-sm\">\n        <div>Blog</div>\n        <Separator orientation=\"vertical\" />\n        <div>Docs</div>\n        <Separator orientation=\"vertical\" />\n        <div>Source</div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/sheet-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/registry/new-york-v4/ui/sheet\"\n\nexport default function SheetDemo() {\n  return (\n    <Sheet>\n      <SheetTrigger asChild>\n        <Button variant=\"outline\">Open</Button>\n      </SheetTrigger>\n      <SheetContent>\n        <SheetHeader>\n          <SheetTitle>Edit profile</SheetTitle>\n          <SheetDescription>\n            Make changes to your profile here. Click save when you&apos;re done.\n          </SheetDescription>\n        </SheetHeader>\n        <div className=\"grid flex-1 auto-rows-min gap-6 px-4\">\n          <div className=\"grid gap-3\">\n            <Label htmlFor=\"sheet-demo-name\">Name</Label>\n            <Input id=\"sheet-demo-name\" defaultValue=\"Pedro Duarte\" />\n          </div>\n          <div className=\"grid gap-3\">\n            <Label htmlFor=\"sheet-demo-username\">Username</Label>\n            <Input id=\"sheet-demo-username\" defaultValue=\"@peduarte\" />\n          </div>\n        </div>\n        <SheetFooter>\n          <Button type=\"submit\">Save changes</Button>\n          <SheetClose asChild>\n            <Button variant=\"outline\">Close</Button>\n          </SheetClose>\n        </SheetFooter>\n      </SheetContent>\n    </Sheet>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/sheet-side.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/registry/new-york-v4/ui/sheet\"\n\nconst SHEET_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\ntype SheetSide = (typeof SHEET_SIDES)[number]\n\nexport default function SheetSide() {\n  return (\n    <div className=\"grid grid-cols-2 gap-2\">\n      {SHEET_SIDES.map((side) => (\n        <Sheet key={side}>\n          <SheetTrigger asChild>\n            <Button variant=\"outline\">{side}</Button>\n          </SheetTrigger>\n          <SheetContent side={side}>\n            <SheetHeader>\n              <SheetTitle>Edit profile</SheetTitle>\n              <SheetDescription>\n                Make changes to your profile here. Click save when you&apos;re\n                done.\n              </SheetDescription>\n            </SheetHeader>\n            <div className=\"grid gap-4 py-4\">\n              <div className=\"grid grid-cols-4 items-center gap-4\">\n                <Label htmlFor=\"name\" className=\"text-right\">\n                  Name\n                </Label>\n                <Input id=\"name\" value=\"Pedro Duarte\" className=\"col-span-3\" />\n              </div>\n              <div className=\"grid grid-cols-4 items-center gap-4\">\n                <Label htmlFor=\"username\" className=\"text-right\">\n                  Username\n                </Label>\n                <Input id=\"username\" value=\"@peduarte\" className=\"col-span-3\" />\n              </div>\n            </div>\n            <SheetFooter>\n              <SheetClose asChild>\n                <Button type=\"submit\">Save changes</Button>\n              </SheetClose>\n            </SheetFooter>\n          </SheetContent>\n        </Sheet>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/skeleton-card.tsx",
    "content": "import { Skeleton } from \"@/registry/new-york-v4/ui/skeleton\"\n\nexport default function SkeletonCard() {\n  return (\n    <div className=\"flex flex-col space-y-3\">\n      <Skeleton className=\"h-[125px] w-[250px] rounded-xl\" />\n      <div className=\"space-y-2\">\n        <Skeleton className=\"h-4 w-[250px]\" />\n        <Skeleton className=\"h-4 w-[200px]\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/skeleton-demo.tsx",
    "content": "import { Skeleton } from \"@/registry/new-york-v4/ui/skeleton\"\n\nexport default function SkeletonDemo() {\n  return (\n    <div className=\"flex items-center space-x-4\">\n      <Skeleton className=\"h-12 w-12 rounded-full\" />\n      <div className=\"space-y-2\">\n        <Skeleton className=\"h-4 w-[250px]\" />\n        <Skeleton className=\"h-4 w-[200px]\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/slider-demo.tsx",
    "content": "import { cn } from \"@/lib/utils\"\nimport { Slider } from \"@/registry/new-york-v4/ui/slider\"\n\ntype SliderProps = React.ComponentProps<typeof Slider>\n\nexport default function SliderDemo({ className, ...props }: SliderProps) {\n  return (\n    <Slider\n      defaultValue={[50]}\n      max={100}\n      step={1}\n      className={cn(\"w-[60%]\", className)}\n      {...props}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/sonner-demo.tsx",
    "content": "\"use client\"\n\nimport { toast } from \"sonner\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function SonnerDemo() {\n  return (\n    <Button\n      variant=\"outline\"\n      onClick={() =>\n        toast(\"Event has been created\", {\n          description: \"Sunday, December 03, 2023 at 9:00 AM\",\n          action: {\n            label: \"Undo\",\n            onClick: () => console.log(\"Undo\"),\n          },\n        })\n      }\n    >\n      Show Toast\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/sonner-types.tsx",
    "content": "\"use client\"\n\nimport { toast } from \"sonner\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nexport default function SonnerTypes() {\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      <Button variant=\"outline\" onClick={() => toast(\"Event has been created\")}>\n        Default\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => toast.success(\"Event has been created\")}\n      >\n        Success\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast.info(\"Be at the area 10 minutes before the event time\")\n        }\n      >\n        Info\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() =>\n          toast.warning(\"Event start time cannot be earlier than 8am\")\n        }\n      >\n        Warning\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => toast.error(\"Event has not been created\")}\n      >\n        Error\n      </Button>\n      <Button\n        variant=\"outline\"\n        onClick={() => {\n          toast.promise<{ name: string }>(\n            () =>\n              new Promise((resolve) =>\n                setTimeout(() => resolve({ name: \"Event\" }), 2000)\n              ),\n            {\n              loading: \"Loading...\",\n              success: (data) => `${data.name} has been created`,\n              error: \"Error\",\n            }\n          )\n        }}\n      >\n        Promise\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-badge.tsx",
    "content": "import { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerBadge() {\n  return (\n    <div className=\"flex items-center gap-4 [--radius:1.2rem]\">\n      <Badge>\n        <Spinner />\n        Syncing\n      </Badge>\n      <Badge variant=\"secondary\">\n        <Spinner />\n        Updating\n      </Badge>\n      <Badge variant=\"outline\">\n        <Spinner />\n        Processing\n      </Badge>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-basic.tsx",
    "content": "import { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerBasic() {\n  return (\n    <div className=\"flex flex-col items-center justify-center gap-8\">\n      <Spinner />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-button.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerButton() {\n  return (\n    <div className=\"flex flex-col items-center gap-4\">\n      <Button disabled size=\"sm\">\n        <Spinner />\n        Loading...\n      </Button>\n      <Button variant=\"outline\" disabled size=\"sm\">\n        <Spinner />\n        Please wait\n      </Button>\n      <Button variant=\"secondary\" disabled size=\"sm\">\n        <Spinner />\n        Processing\n      </Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-color.tsx",
    "content": "import { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerColor() {\n  return (\n    <div className=\"flex items-center gap-6\">\n      <Spinner className=\"size-6 text-red-500\" />\n      <Spinner className=\"size-6 text-green-500\" />\n      <Spinner className=\"size-6 text-blue-500\" />\n      <Spinner className=\"size-6 text-yellow-500\" />\n      <Spinner className=\"size-6 text-purple-500\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-custom.tsx",
    "content": "import { LoaderIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <LoaderIcon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport default function SpinnerCustom() {\n  return (\n    <div className=\"flex items-center gap-4\">\n      <Spinner />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-demo.tsx",
    "content": "import {\n  Item,\n  ItemContent,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerDemo() {\n  return (\n    <div className=\"flex w-full max-w-xs flex-col gap-4 [--radius:1rem]\">\n      <Item variant=\"muted\">\n        <ItemMedia>\n          <Spinner />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle className=\"line-clamp-1\">Processing payment...</ItemTitle>\n        </ItemContent>\n        <ItemContent className=\"flex-none justify-end\">\n          <span className=\"text-sm tabular-nums\">$100.00</span>\n        </ItemContent>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-empty.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Empty,\n  EmptyContent,\n  EmptyDescription,\n  EmptyHeader,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/registry/new-york-v4/ui/empty\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerEmpty() {\n  return (\n    <Empty className=\"w-full\">\n      <EmptyHeader>\n        <EmptyMedia variant=\"icon\">\n          <Spinner />\n        </EmptyMedia>\n        <EmptyTitle>Processing your request</EmptyTitle>\n        <EmptyDescription>\n          Please wait while we process your request. Do not refresh the page.\n        </EmptyDescription>\n      </EmptyHeader>\n      <EmptyContent>\n        <Button variant=\"outline\" size=\"sm\">\n          Cancel\n        </Button>\n      </EmptyContent>\n    </Empty>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-input-group.tsx",
    "content": "import { ArrowUpIcon } from \"lucide-react\"\n\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n  InputGroupTextarea,\n} from \"@/registry/new-york-v4/ui/input-group\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerInputGroup() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-4\">\n      <InputGroup>\n        <InputGroupInput placeholder=\"Send a message...\" disabled />\n        <InputGroupAddon align=\"inline-end\">\n          <Spinner />\n        </InputGroupAddon>\n      </InputGroup>\n      <InputGroup>\n        <InputGroupTextarea placeholder=\"Send a message...\" disabled />\n        <InputGroupAddon align=\"block-end\">\n          <Spinner /> Validating...\n          <InputGroupButton className=\"ml-auto\" variant=\"default\">\n            <ArrowUpIcon />\n            <span className=\"sr-only\">Send</span>\n          </InputGroupButton>\n        </InputGroupAddon>\n      </InputGroup>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-item.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Item,\n  ItemActions,\n  ItemContent,\n  ItemDescription,\n  ItemFooter,\n  ItemMedia,\n  ItemTitle,\n} from \"@/registry/new-york-v4/ui/item\"\nimport { Progress } from \"@/registry/new-york-v4/ui/progress\"\nimport { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerItem() {\n  return (\n    <div className=\"flex w-full max-w-md flex-col gap-4 [--radius:1rem]\">\n      <Item variant=\"outline\">\n        <ItemMedia variant=\"icon\">\n          <Spinner />\n        </ItemMedia>\n        <ItemContent>\n          <ItemTitle>Downloading...</ItemTitle>\n          <ItemDescription>129 MB / 1000 MB</ItemDescription>\n        </ItemContent>\n        <ItemActions className=\"hidden sm:flex\">\n          <Button variant=\"outline\" size=\"sm\">\n            Cancel\n          </Button>\n        </ItemActions>\n        <ItemFooter>\n          <Progress value={75} />\n        </ItemFooter>\n      </Item>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/spinner-size.tsx",
    "content": "import { Spinner } from \"@/registry/new-york-v4/ui/spinner\"\n\nexport default function SpinnerSize() {\n  return (\n    <div className=\"flex items-center gap-6\">\n      <Spinner className=\"size-3\" />\n      <Spinner className=\"size-4\" />\n      <Spinner className=\"size-6\" />\n      <Spinner className=\"size-8\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/switch-demo.tsx",
    "content": "import { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Switch } from \"@/registry/new-york-v4/ui/switch\"\n\nexport default function SwitchDemo() {\n  return (\n    <div className=\"flex items-center space-x-2\">\n      <Switch id=\"airplane-mode\" />\n      <Label htmlFor=\"airplane-mode\">Airplane Mode</Label>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/table-demo.tsx",
    "content": "import {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\n\nconst invoices = [\n  {\n    invoice: \"INV001\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$250.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV002\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$150.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV003\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$350.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV004\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$450.00\",\n    paymentMethod: \"Credit Card\",\n  },\n  {\n    invoice: \"INV005\",\n    paymentStatus: \"Paid\",\n    totalAmount: \"$550.00\",\n    paymentMethod: \"PayPal\",\n  },\n  {\n    invoice: \"INV006\",\n    paymentStatus: \"Pending\",\n    totalAmount: \"$200.00\",\n    paymentMethod: \"Bank Transfer\",\n  },\n  {\n    invoice: \"INV007\",\n    paymentStatus: \"Unpaid\",\n    totalAmount: \"$300.00\",\n    paymentMethod: \"Credit Card\",\n  },\n]\n\nexport default function TableDemo() {\n  return (\n    <Table>\n      <TableCaption>A list of your recent invoices.</TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">Invoice</TableHead>\n          <TableHead>Status</TableHead>\n          <TableHead>Method</TableHead>\n          <TableHead className=\"text-right\">Amount</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {invoices.map((invoice) => (\n          <TableRow key={invoice.invoice}>\n            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n            <TableCell>{invoice.paymentStatus}</TableCell>\n            <TableCell>{invoice.paymentMethod}</TableCell>\n            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n          </TableRow>\n        ))}\n      </TableBody>\n      <TableFooter>\n        <TableRow>\n          <TableCell colSpan={3}>Total</TableCell>\n          <TableCell className=\"text-right\">$2,500.00</TableCell>\n        </TableRow>\n      </TableFooter>\n    </Table>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/tabs-demo.tsx",
    "content": "import { AppWindowIcon, CodeIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york-v4/ui/card\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/registry/new-york-v4/ui/tabs\"\n\nexport default function TabsDemo() {\n  return (\n    <div className=\"flex w-full max-w-sm flex-col gap-6\">\n      <Tabs defaultValue=\"account\">\n        <TabsList>\n          <TabsTrigger value=\"account\">Account</TabsTrigger>\n          <TabsTrigger value=\"password\">Password</TabsTrigger>\n        </TabsList>\n        <TabsContent value=\"account\">\n          <Card>\n            <CardHeader>\n              <CardTitle>Account</CardTitle>\n              <CardDescription>\n                Make changes to your account here. Click save when you&apos;re\n                done.\n              </CardDescription>\n            </CardHeader>\n            <CardContent className=\"grid gap-6\">\n              <div className=\"grid gap-3\">\n                <Label htmlFor=\"tabs-demo-name\">Name</Label>\n                <Input id=\"tabs-demo-name\" defaultValue=\"Pedro Duarte\" />\n              </div>\n              <div className=\"grid gap-3\">\n                <Label htmlFor=\"tabs-demo-username\">Username</Label>\n                <Input id=\"tabs-demo-username\" defaultValue=\"@peduarte\" />\n              </div>\n            </CardContent>\n            <CardFooter>\n              <Button>Save changes</Button>\n            </CardFooter>\n          </Card>\n        </TabsContent>\n        <TabsContent value=\"password\">\n          <Card>\n            <CardHeader>\n              <CardTitle>Password</CardTitle>\n              <CardDescription>\n                Change your password here. After saving, you&apos;ll be logged\n                out.\n              </CardDescription>\n            </CardHeader>\n            <CardContent className=\"grid gap-6\">\n              <div className=\"grid gap-3\">\n                <Label htmlFor=\"tabs-demo-current\">Current password</Label>\n                <Input id=\"tabs-demo-current\" type=\"password\" />\n              </div>\n              <div className=\"grid gap-3\">\n                <Label htmlFor=\"tabs-demo-new\">New password</Label>\n                <Input id=\"tabs-demo-new\" type=\"password\" />\n              </div>\n            </CardContent>\n            <CardFooter>\n              <Button>Save password</Button>\n            </CardFooter>\n          </Card>\n        </TabsContent>\n      </Tabs>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/textarea-demo.tsx",
    "content": "import { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function TextareaDemo() {\n  return <Textarea placeholder=\"Type your message here.\" />\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/textarea-disabled.tsx",
    "content": "import { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function TextareaDisabled() {\n  return <Textarea placeholder=\"Type your message here.\" disabled />\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/textarea-with-button.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function TextareaWithButton() {\n  return (\n    <div className=\"grid w-full gap-2\">\n      <Textarea placeholder=\"Type your message here.\" />\n      <Button>Send message</Button>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/textarea-with-label.tsx",
    "content": "import { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function TextareaWithLabel() {\n  return (\n    <div className=\"grid w-full gap-3\">\n      <Label htmlFor=\"message\">Your message</Label>\n      <Textarea placeholder=\"Type your message here.\" id=\"message\" />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/textarea-with-text.tsx",
    "content": "import { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nexport default function TextareaWithText() {\n  return (\n    <div className=\"grid w-full gap-3\">\n      <Label htmlFor=\"message-2\">Your Message</Label>\n      <Textarea placeholder=\"Type your message here.\" id=\"message-2\" />\n      <p className=\"text-sm text-muted-foreground\">\n        Your message will be copied to the support team.\n      </p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-demo.tsx",
    "content": "import { BookmarkIcon } from \"lucide-react\"\n\nimport { Toggle } from \"@/registry/new-york-v4/ui/toggle\"\n\nexport default function ToggleDemo() {\n  return (\n    <Toggle\n      aria-label=\"Toggle bookmark\"\n      size=\"sm\"\n      variant=\"outline\"\n      className=\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-blue-500 data-[state=on]:*:[svg]:stroke-blue-500\"\n    >\n      <BookmarkIcon />\n      Bookmark\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-disabled.tsx",
    "content": "import { Underline } from \"lucide-react\"\n\nimport { Toggle } from \"@/registry/new-york-v4/ui/toggle\"\n\nexport default function ToggleDisabled() {\n  return (\n    <Toggle aria-label=\"Toggle italic\" disabled>\n      <Underline className=\"h-4 w-4\" />\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-group-demo.tsx",
    "content": "import { Bold, Italic, Underline } from \"lucide-react\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport default function ToggleGroupDemo() {\n  return (\n    <ToggleGroup variant=\"outline\" type=\"multiple\">\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-group-disabled.tsx",
    "content": "import { Bold, Italic, Underline } from \"lucide-react\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport default function ToggleGroupDemo() {\n  return (\n    <ToggleGroup type=\"multiple\" disabled>\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-group-lg.tsx",
    "content": "import { Bold, Italic, Underline } from \"lucide-react\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport default function ToggleGroupDemo() {\n  return (\n    <ToggleGroup type=\"multiple\" size=\"lg\">\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-group-outline.tsx",
    "content": "import { Bold, Italic, Underline } from \"lucide-react\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport default function ToggleGroupDemo() {\n  return (\n    <ToggleGroup type=\"multiple\" variant=\"outline\">\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-group-single.tsx",
    "content": "import { Bold, Italic, Underline } from \"lucide-react\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport default function ToggleGroupDemo() {\n  return (\n    <ToggleGroup type=\"single\">\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-group-sm.tsx",
    "content": "import { Bold, Italic, Underline } from \"lucide-react\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport default function ToggleGroupDemo() {\n  return (\n    <ToggleGroup type=\"single\" size=\"sm\">\n      <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n        <Bold className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"italic\" aria-label=\"Toggle italic\">\n        <Italic className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n      <ToggleGroupItem value=\"strikethrough\" aria-label=\"Toggle strikethrough\">\n        <Underline className=\"h-4 w-4\" />\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-group-spacing.tsx",
    "content": "import { BookmarkIcon, HeartIcon, StarIcon } from \"lucide-react\"\n\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/registry/new-york-v4/ui/toggle-group\"\n\nexport default function ToggleGroupSpacing() {\n  return (\n    <ToggleGroup type=\"multiple\" variant=\"outline\" spacing={2} size=\"sm\">\n      <ToggleGroupItem\n        value=\"star\"\n        aria-label=\"Toggle star\"\n        className=\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500\"\n      >\n        <StarIcon />\n        Star\n      </ToggleGroupItem>\n      <ToggleGroupItem\n        value=\"heart\"\n        aria-label=\"Toggle heart\"\n        className=\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-red-500 data-[state=on]:*:[svg]:stroke-red-500\"\n      >\n        <HeartIcon />\n        Heart\n      </ToggleGroupItem>\n      <ToggleGroupItem\n        value=\"bookmark\"\n        aria-label=\"Toggle bookmark\"\n        className=\"data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-blue-500 data-[state=on]:*:[svg]:stroke-blue-500\"\n      >\n        <BookmarkIcon />\n        Bookmark\n      </ToggleGroupItem>\n    </ToggleGroup>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-lg.tsx",
    "content": "import { Italic } from \"lucide-react\"\n\nimport { Toggle } from \"@/registry/new-york-v4/ui/toggle\"\n\nexport default function ToggleLg() {\n  return (\n    <Toggle size=\"lg\" aria-label=\"Toggle italic\">\n      <Italic />\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-outline.tsx",
    "content": "import { Italic } from \"lucide-react\"\n\nimport { Toggle } from \"@/registry/new-york-v4/ui/toggle\"\n\nexport default function ToggleOutline() {\n  return (\n    <Toggle variant=\"outline\" aria-label=\"Toggle italic\">\n      <Italic />\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-sm.tsx",
    "content": "import { Italic } from \"lucide-react\"\n\nimport { Toggle } from \"@/registry/new-york-v4/ui/toggle\"\n\nexport default function ToggleSm() {\n  return (\n    <Toggle size=\"sm\" aria-label=\"Toggle italic\">\n      <Italic />\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/toggle-with-text.tsx",
    "content": "import { Italic } from \"lucide-react\"\n\nimport { Toggle } from \"@/registry/new-york-v4/ui/toggle\"\n\nexport default function ToggleWithText() {\n  return (\n    <Toggle aria-label=\"Toggle italic\">\n      <Italic />\n      Italic\n    </Toggle>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/tooltip-demo.tsx",
    "content": "import { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nexport default function TooltipDemo() {\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <Button variant=\"outline\">Hover</Button>\n      </TooltipTrigger>\n      <TooltipContent>\n        <p>Add to library</p>\n      </TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-blockquote.tsx",
    "content": "export default function TypographyBlockquote() {\n  return (\n    <blockquote className=\"mt-6 border-l-2 pl-6 italic\">\n      &quot;After all,&quot; he said, &quot;everyone enjoys a good joke, so\n      it&apos;s only fair that they should pay for the privilege.&quot;\n    </blockquote>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-demo.tsx",
    "content": "export default function TypographyDemo() {\n  return (\n    <div>\n      <h1 className=\"scroll-m-20 text-4xl font-extrabold tracking-tight text-balance\">\n        Taxing Laughter: The Joke Tax Chronicles\n      </h1>\n      <p className=\"text-xl leading-7 text-muted-foreground [&:not(:first-child)]:mt-6\">\n        Once upon a time, in a far-off land, there was a very lazy king who\n        spent all day lounging on his throne. One day, his advisors came to him\n        with a problem: the kingdom was running out of money.\n      </p>\n      <h2 className=\"mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0\">\n        The King&apos;s Plan\n      </h2>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king thought long and hard, and finally came up with{\" \"}\n        <a\n          href=\"#\"\n          className=\"font-medium text-primary underline underline-offset-4\"\n        >\n          a brilliant plan\n        </a>\n        : he would tax the jokes in the kingdom.\n      </p>\n      <blockquote className=\"mt-6 border-l-2 pl-6 italic\">\n        &quot;After all,&quot; he said, &quot;everyone enjoys a good joke, so\n        it&apos;s only fair that they should pay for the privilege.&quot;\n      </blockquote>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        The Joke Tax\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king&apos;s subjects were not amused. They grumbled and complained,\n        but the king was firm:\n      </p>\n      <ul className=\"my-6 ml-6 list-disc [&>li]:mt-2\">\n        <li>1st level of puns: 5 gold coins</li>\n        <li>2nd level of jokes: 10 gold coins</li>\n        <li>3rd level of one-liners : 20 gold coins</li>\n      </ul>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        As a result, people stopped telling jokes, and the kingdom fell into a\n        gloom. But there was one person who refused to let the king&apos;s\n        foolishness get him down: a court jester named Jokester.\n      </p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        Jokester&apos;s Revolt\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        Jokester began sneaking into the castle in the middle of the night and\n        leaving jokes all over the place: under the king&apos;s pillow, in his\n        soup, even in the royal toilet. The king was furious, but he\n        couldn&apos;t seem to stop Jokester.\n      </p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        And then, one day, the people of the kingdom discovered that the jokes\n        left by Jokester were so funny that they couldn&apos;t help but laugh.\n        And once they started laughing, they couldn&apos;t stop.\n      </p>\n      <h3 className=\"mt-8 scroll-m-20 text-2xl font-semibold tracking-tight\">\n        The People&apos;s Rebellion\n      </h3>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The people of the kingdom, feeling uplifted by the laughter, started to\n        tell jokes and puns again, and soon the entire kingdom was in on the\n        joke.\n      </p>\n      <div className=\"my-6 w-full overflow-y-auto\">\n        <table className=\"w-full\">\n          <thead>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n                King&apos;s Treasury\n              </th>\n              <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n                People&apos;s happiness\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Empty\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Overflowing\n              </td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Modest\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Satisfied\n              </td>\n            </tr>\n            <tr className=\"m-0 border-t p-0 even:bg-muted\">\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Full\n              </td>\n              <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n                Ecstatic\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The king, seeing how much happier his subjects were, realized the error\n        of his ways and repealed the joke tax. Jokester was declared a hero, and\n        the kingdom lived happily ever after.\n      </p>\n      <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n        The moral of the story is: never underestimate the power of a good laugh\n        and always be careful of bad ideas.\n      </p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-h1.tsx",
    "content": "export default function TypographyH1() {\n  return (\n    <h1 className=\"scroll-m-20 text-center text-4xl font-extrabold tracking-tight text-balance\">\n      Taxing Laughter: The Joke Tax Chronicles\n    </h1>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-h2.tsx",
    "content": "export default function TypographyH2() {\n  return (\n    <h2 className=\"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\">\n      The People of the Kingdom\n    </h2>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-h3.tsx",
    "content": "export default function TypographyH3() {\n  return (\n    <h3 className=\"scroll-m-20 text-2xl font-semibold tracking-tight\">\n      The Joke Tax\n    </h3>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-h4.tsx",
    "content": "export default function TypographyH4() {\n  return (\n    <h4 className=\"scroll-m-20 text-xl font-semibold tracking-tight\">\n      People stopped telling jokes\n    </h4>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-inline-code.tsx",
    "content": "export default function TypographyInlineCode() {\n  return (\n    <code className=\"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\">\n      @radix-ui/react-alert-dialog\n    </code>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-large.tsx",
    "content": "export default function TypographyLarge() {\n  return <div className=\"text-lg font-semibold\">Are you absolutely sure?</div>\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-lead.tsx",
    "content": "export default function TypographyLead() {\n  return (\n    <p className=\"text-xl text-muted-foreground\">\n      A modal dialog that interrupts the user with important content and expects\n      a response.\n    </p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-list.tsx",
    "content": "export default function TypographyList() {\n  return (\n    <ul className=\"my-6 ml-6 list-disc [&>li]:mt-2\">\n      <li>1st level of puns: 5 gold coins</li>\n      <li>2nd level of jokes: 10 gold coins</li>\n      <li>3rd level of one-liners : 20 gold coins</li>\n    </ul>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-muted.tsx",
    "content": "export default function TypographyMuted() {\n  return (\n    <p className=\"text-sm text-muted-foreground\">Enter your email address.</p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-p.tsx",
    "content": "export default function TypographyP() {\n  return (\n    <p className=\"leading-7 [&:not(:first-child)]:mt-6\">\n      The king, seeing how much happier his subjects were, realized the error of\n      his ways and repealed the joke tax.\n    </p>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-small.tsx",
    "content": "export default function TypographySmall() {\n  return (\n    <small className=\"text-sm leading-none font-medium\">Email address</small>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/examples/typography-table.tsx",
    "content": "export default function TypographyTable() {\n  return (\n    <div className=\"my-6 w-full overflow-y-auto\">\n      <table className=\"w-full\">\n        <thead>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n              King&apos;s Treasury\n            </th>\n            <th className=\"border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\">\n              People&apos;s happiness\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Empty\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Overflowing\n            </td>\n          </tr>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Modest\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Satisfied\n            </td>\n          </tr>\n          <tr className=\"m-0 border-t p-0 even:bg-muted\">\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Full\n            </td>\n            <td className=\"border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\">\n              Ecstatic\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/hooks/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const hooks: Registry[\"items\"] = [\n  {\n    name: \"use-mobile\",\n    type: \"registry:hook\",\n    files: [\n      {\n        path: \"hooks/use-mobile.ts\",\n        type: \"registry:hook\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/hooks/use-mobile.ts",
    "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n  React.useEffect(() => {\n    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n    const onChange = () => {\n      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    }\n    mql.addEventListener(\"change\", onChange)\n    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n    return () => mql.removeEventListener(\"change\", onChange)\n  }, [])\n\n  return !!isMobile\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const internal: Registry[\"items\"] = [\n  // Do not move this. They are intentionally here for registry capture.\n  {\n    name: \"sidebar-demo\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-demo.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-header\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-header.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-footer\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-footer.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-group\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-group.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-group-collapsible\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-group-collapsible.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-group-action\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-group-action.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-menu\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-menu.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-menu-action\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-menu-action.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-menu-sub\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-menu-sub.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-menu-collapsible\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-menu-collapsible.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-menu-badge\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-menu-badge.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-rsc\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-rsc.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar-controlled\",\n    type: \"registry:internal\",\n    files: [\n      {\n        path: \"internal/sidebar-controlled.tsx\",\n        type: \"registry:component\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-controlled.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PanelLeftCloseIcon,\n  PanelLeftOpenIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  const [open, setOpen] = React.useState(true)\n\n  return (\n    <SidebarProvider open={open} onOpenChange={setOpen}>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton asChild>\n                      <a href={project.url}>\n                        <project.icon />\n                        <span>{project.name}</span>\n                      </a>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <Button\n            onClick={() => setOpen((open) => !open)}\n            size=\"sm\"\n            variant=\"ghost\"\n          >\n            {open ? <PanelLeftCloseIcon /> : <PanelLeftOpenIcon />}\n            <span>{open ? \"Close\" : \"Open\"} Sidebar</span>\n          </Button>\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-demo.tsx",
    "content": "\"use client\"\n\nimport {\n  CalendarIcon,\n  HomeIcon,\n  InboxIcon,\n  SearchIcon,\n  SettingsIcon,\n} from \"lucide-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\n// Menu items.\nconst items = [\n  {\n    title: \"Home\",\n    url: \"#\",\n    icon: HomeIcon,\n  },\n  {\n    title: \"Inbox\",\n    url: \"#\",\n    icon: InboxIcon,\n  },\n  {\n    title: \"Calendar\",\n    url: \"#\",\n    icon: CalendarIcon,\n  },\n  {\n    title: \"Search\",\n    url: \"#\",\n    icon: SearchIcon,\n  },\n  {\n    title: \"Settings\",\n    url: \"#\",\n    icon: SettingsIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Application</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {items.map((item) => (\n                  <SidebarMenuItem key={item.title}>\n                    <SidebarMenuButton asChild>\n                      <a href={item.url}>\n                        <item.icon />\n                        <span>{item.title}</span>\n                      </a>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <SidebarTrigger />\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-footer.tsx",
    "content": "\"use client\"\n\nimport { ChevronUpIcon } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarHeader />\n        <SidebarContent />\n        <SidebarFooter>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\">\n                    Username\n                    <ChevronUpIcon className=\"ml-auto\" />\n                  </SidebarMenuButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                  side=\"top\"\n                  className=\"w-(--radix-popper-anchor-width)\"\n                >\n                  <DropdownMenuItem>\n                    <span>Account</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Billing</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Sign out</span>\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarFooter>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <SidebarTrigger />\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-group-action.tsx",
    "content": "\"use client\"\n\nimport { FrameIcon, MapIcon, PieChartIcon, PlusIcon } from \"lucide-react\"\nimport { toast, Toaster } from \"sonner\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Toaster\n        position=\"bottom-left\"\n        toastOptions={{\n          className: \"ml-[160px]\",\n        }}\n      />\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupAction\n              title=\"Add Project\"\n              onClick={() => toast(\"You clicked the group action!\")}\n            >\n              <PlusIcon /> <span className=\"sr-only\">Add Project</span>\n            </SidebarGroupAction>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                <SidebarMenuItem>\n                  <SidebarMenuButton asChild>\n                    <a href=\"#\">\n                      <FrameIcon />\n                      <span>Design Engineering</span>\n                    </a>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton asChild>\n                    <a href=\"#\">\n                      <PieChartIcon />\n                      <span>Sales & Marketing</span>\n                    </a>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton asChild>\n                    <a href=\"#\">\n                      <MapIcon />\n                      <span>Travel</span>\n                    </a>\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-group-collapsible.tsx",
    "content": "\"use client\"\n\nimport { ChevronDownIcon, LifeBuoyIcon, SendIcon } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <Collapsible defaultOpen className=\"group/collapsible\">\n            <SidebarGroup>\n              <SidebarGroupLabel\n                asChild\n                className=\"text-sm hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n              >\n                <CollapsibleTrigger>\n                  Help\n                  <ChevronDownIcon className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-180\" />\n                </CollapsibleTrigger>\n              </SidebarGroupLabel>\n              <CollapsibleContent>\n                <SidebarGroupContent>\n                  <SidebarMenu>\n                    <SidebarMenuItem>\n                      <SidebarMenuButton>\n                        <LifeBuoyIcon />\n                        Support\n                      </SidebarMenuButton>\n                    </SidebarMenuItem>\n                    <SidebarMenuItem>\n                      <SidebarMenuButton>\n                        <SendIcon />\n                        Feedback\n                      </SidebarMenuButton>\n                    </SidebarMenuItem>\n                  </SidebarMenu>\n                </SidebarGroupContent>\n              </CollapsibleContent>\n            </SidebarGroup>\n          </Collapsible>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-group.tsx",
    "content": "\"use client\"\n\nimport { LifeBuoyIcon, SendIcon } from \"lucide-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Help</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                <SidebarMenuItem>\n                  <SidebarMenuButton>\n                    <LifeBuoyIcon />\n                    Support\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n                <SidebarMenuItem>\n                  <SidebarMenuButton>\n                    <SendIcon />\n                    Feedback\n                  </SidebarMenuButton>\n                </SidebarMenuItem>\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-header.tsx",
    "content": "\"use client\"\n\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarHeader,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n  SidebarTrigger,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarHeader>\n          <SidebarMenu>\n            <SidebarMenuItem>\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <SidebarMenuButton className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\">\n                    Select Workspace\n                    <ChevronDownIcon className=\"ml-auto\" />\n                  </SidebarMenuButton>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent className=\"w-(--radix-popper-anchor-width)\">\n                  <DropdownMenuItem>\n                    <span>Acme Inc</span>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem>\n                    <span>Acme Corp.</span>\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </SidebarMenuItem>\n          </SidebarMenu>\n        </SidebarHeader>\n      </Sidebar>\n      <SidebarInset>\n        <header className=\"flex h-12 items-center justify-between px-4\">\n          <SidebarTrigger />\n        </header>\n      </SidebarInset>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-menu-action.tsx",
    "content": "\"use client\"\n\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  MoreHorizontalIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton\n                      asChild\n                      className=\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\"\n                    >\n                      <a href={project.url}>\n                        <project.icon />\n                        <span>{project.name}</span>\n                      </a>\n                    </SidebarMenuButton>\n                    <DropdownMenu>\n                      <DropdownMenuTrigger asChild>\n                        <SidebarMenuAction>\n                          <MoreHorizontalIcon />\n                          <span className=\"sr-only\">More</span>\n                        </SidebarMenuAction>\n                      </DropdownMenuTrigger>\n                      <DropdownMenuContent side=\"right\" align=\"start\">\n                        <DropdownMenuItem>\n                          <span>Edit Project</span>\n                        </DropdownMenuItem>\n                        <DropdownMenuItem>\n                          <span>Delete Project</span>\n                        </DropdownMenuItem>\n                      </DropdownMenuContent>\n                    </DropdownMenu>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-menu-badge.tsx",
    "content": "\"use client\"\n\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n    badge: \"24\",\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n    badge: \"12\",\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n    badge: \"3\",\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n    badge: \"21\",\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n    badge: \"8\",\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton\n                      asChild\n                      className=\"group-has-[[data-state=open]]/menu-item:bg-sidebar-accent\"\n                    >\n                      <a href={project.url}>\n                        <project.icon />\n                        <span>{project.name}</span>\n                      </a>\n                    </SidebarMenuButton>\n                    <SidebarMenuBadge>{project.badge}</SidebarMenuBadge>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-menu-collapsible.tsx",
    "content": "\"use client\"\n\nimport { ChevronRightIcon } from \"lucide-react\"\n\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/registry/new-york-v4/ui/collapsible\"\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst items = [\n  {\n    title: \"Getting Started\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Installation\",\n        url: \"#\",\n      },\n      {\n        title: \"Project Structure\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Build Your Application\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Routing\",\n        url: \"#\",\n      },\n      {\n        title: \"Data Fetching\",\n        url: \"#\",\n        isActive: true,\n      },\n      {\n        title: \"Rendering\",\n        url: \"#\",\n      },\n      {\n        title: \"Caching\",\n        url: \"#\",\n      },\n      {\n        title: \"Styling\",\n        url: \"#\",\n      },\n      {\n        title: \"Optimizing\",\n        url: \"#\",\n      },\n      {\n        title: \"Configuring\",\n        url: \"#\",\n      },\n      {\n        title: \"Testing\",\n        url: \"#\",\n      },\n      {\n        title: \"Authentication\",\n        url: \"#\",\n      },\n      {\n        title: \"Deploying\",\n        url: \"#\",\n      },\n      {\n        title: \"Upgrading\",\n        url: \"#\",\n      },\n      {\n        title: \"Examples\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"API Reference\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Components\",\n        url: \"#\",\n      },\n      {\n        title: \"File Conventions\",\n        url: \"#\",\n      },\n      {\n        title: \"Functions\",\n        url: \"#\",\n      },\n      {\n        title: \"next.config.js Options\",\n        url: \"#\",\n      },\n      {\n        title: \"CLI\",\n        url: \"#\",\n      },\n      {\n        title: \"Edge Runtime\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Architecture\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Accessibility\",\n        url: \"#\",\n      },\n      {\n        title: \"Fast Refresh\",\n        url: \"#\",\n      },\n      {\n        title: \"Next.js Compiler\",\n        url: \"#\",\n      },\n      {\n        title: \"Supported Browsers\",\n        url: \"#\",\n      },\n      {\n        title: \"Turbopack\",\n        url: \"#\",\n      },\n    ],\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {items.map((item, index) => (\n                  <Collapsible\n                    key={index}\n                    className=\"group/collapsible\"\n                    defaultOpen={index === 0}\n                  >\n                    <SidebarMenuItem>\n                      <CollapsibleTrigger asChild>\n                        <SidebarMenuButton>\n                          <span>{item.title}</span>\n                          <ChevronRightIcon className=\"ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90\" />\n                        </SidebarMenuButton>\n                      </CollapsibleTrigger>\n                      <CollapsibleContent>\n                        <SidebarMenuSub>\n                          {item.items.map((subItem, subIndex) => (\n                            <SidebarMenuSubItem key={subIndex}>\n                              <SidebarMenuSubButton asChild>\n                                <a href={subItem.url}>\n                                  <span>{subItem.title}</span>\n                                </a>\n                              </SidebarMenuSubButton>\n                            </SidebarMenuSubItem>\n                          ))}\n                        </SidebarMenuSub>\n                      </CollapsibleContent>\n                    </SidebarMenuItem>\n                  </Collapsible>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-menu-sub.tsx",
    "content": "\"use client\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst items = [\n  {\n    title: \"Getting Started\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Installation\",\n        url: \"#\",\n      },\n      {\n        title: \"Project Structure\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Build Your Application\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Routing\",\n        url: \"#\",\n      },\n      {\n        title: \"Data Fetching\",\n        url: \"#\",\n        isActive: true,\n      },\n      {\n        title: \"Rendering\",\n        url: \"#\",\n      },\n      {\n        title: \"Caching\",\n        url: \"#\",\n      },\n      {\n        title: \"Styling\",\n        url: \"#\",\n      },\n      {\n        title: \"Optimizing\",\n        url: \"#\",\n      },\n      {\n        title: \"Configuring\",\n        url: \"#\",\n      },\n      {\n        title: \"Testing\",\n        url: \"#\",\n      },\n      {\n        title: \"Authentication\",\n        url: \"#\",\n      },\n      {\n        title: \"Deploying\",\n        url: \"#\",\n      },\n      {\n        title: \"Upgrading\",\n        url: \"#\",\n      },\n      {\n        title: \"Examples\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"API Reference\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Components\",\n        url: \"#\",\n      },\n      {\n        title: \"File Conventions\",\n        url: \"#\",\n      },\n      {\n        title: \"Functions\",\n        url: \"#\",\n      },\n      {\n        title: \"next.config.js Options\",\n        url: \"#\",\n      },\n      {\n        title: \"CLI\",\n        url: \"#\",\n      },\n      {\n        title: \"Edge Runtime\",\n        url: \"#\",\n      },\n    ],\n  },\n  {\n    title: \"Architecture\",\n    url: \"#\",\n    items: [\n      {\n        title: \"Accessibility\",\n        url: \"#\",\n      },\n      {\n        title: \"Fast Refresh\",\n        url: \"#\",\n      },\n      {\n        title: \"Next.js Compiler\",\n        url: \"#\",\n      },\n      {\n        title: \"Supported Browsers\",\n        url: \"#\",\n      },\n      {\n        title: \"Turbopack\",\n        url: \"#\",\n      },\n    ],\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {items.map((item, index) => (\n                  <SidebarMenuItem key={index}>\n                    <SidebarMenuButton asChild>\n                      <a href={item.url}>\n                        <span>{item.title}</span>\n                      </a>\n                    </SidebarMenuButton>\n                    <SidebarMenuSub>\n                      {item.items.map((subItem, subIndex) => (\n                        <SidebarMenuSubItem key={subIndex}>\n                          <SidebarMenuSubButton asChild>\n                            <a href={subItem.url}>\n                              <span>{subItem.title}</span>\n                            </a>\n                          </SidebarMenuSubButton>\n                        </SidebarMenuSubItem>\n                      ))}\n                    </SidebarMenuSub>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-menu.tsx",
    "content": "\"use client\"\n\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n  },\n]\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <SidebarMenu>\n                {projects.map((project) => (\n                  <SidebarMenuItem key={project.name}>\n                    <SidebarMenuButton asChild>\n                      <a href={project.url}>\n                        <project.icon />\n                        <span>{project.name}</span>\n                      </a>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                ))}\n              </SidebarMenu>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/internal/sidebar-rsc.tsx",
    "content": "import * as React from \"react\"\nimport {\n  FrameIcon,\n  LifeBuoyIcon,\n  MapIcon,\n  PieChartIcon,\n  SendIcon,\n} from \"lucide-react\"\n\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarProvider,\n} from \"@/registry/new-york-v4/ui/sidebar\"\n\nconst projects = [\n  {\n    name: \"Design Engineering\",\n    url: \"#\",\n    icon: FrameIcon,\n    badge: \"24\",\n  },\n  {\n    name: \"Sales & Marketing\",\n    url: \"#\",\n    icon: PieChartIcon,\n    badge: \"12\",\n  },\n  {\n    name: \"Travel\",\n    url: \"#\",\n    icon: MapIcon,\n    badge: \"3\",\n  },\n  {\n    name: \"Support\",\n    url: \"#\",\n    icon: LifeBuoyIcon,\n    badge: \"21\",\n  },\n  {\n    name: \"Feedback\",\n    url: \"#\",\n    icon: SendIcon,\n    badge: \"8\",\n  },\n]\n\n// Dummy fetch function\nasync function fetchProjects() {\n  await new Promise((resolve) => setTimeout(resolve, 3000))\n  return projects\n}\n\nexport default function AppSidebar() {\n  return (\n    <SidebarProvider>\n      <Sidebar>\n        <SidebarContent>\n          <SidebarGroup>\n            <SidebarGroupLabel>Projects</SidebarGroupLabel>\n            <SidebarGroupContent>\n              <React.Suspense fallback={<NavProjectsSkeleton />}>\n                <NavProjects />\n              </React.Suspense>\n            </SidebarGroupContent>\n          </SidebarGroup>\n        </SidebarContent>\n      </Sidebar>\n    </SidebarProvider>\n  )\n}\n\nfunction NavProjectsSkeleton() {\n  return (\n    <SidebarMenu>\n      {Array.from({ length: 5 }).map((_, index) => (\n        <SidebarMenuItem key={index}>\n          <SidebarMenuSkeleton showIcon />\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n\nasync function NavProjects() {\n  const projects = await fetchProjects()\n\n  return (\n    <SidebarMenu>\n      {projects.map((project) => (\n        <SidebarMenuItem key={project.name}>\n          <SidebarMenuButton asChild>\n            <a href={project.url}>\n              <project.icon />\n              <span>{project.name}</span>\n            </a>\n          </SidebarMenuButton>\n        </SidebarMenuItem>\n      ))}\n    </SidebarMenu>\n  )\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/lib/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const lib: Registry[\"items\"] = [\n  {\n    name: \"utils\",\n    type: \"registry:lib\",\n    dependencies: [\"clsx\", \"tailwind-merge\"],\n    files: [\n      {\n        path: \"lib/utils.ts\",\n        type: \"registry:lib\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/registry.ts",
    "content": "import { registryItemSchema, type Registry } from \"shadcn/schema\"\nimport { z } from \"zod\"\n\nimport { themes } from \"../_legacy-themes\"\nimport { blocks } from \"./blocks/_registry\"\nimport { charts } from \"./charts/_registry\"\nimport { examples } from \"./examples/_registry\"\nimport { hooks } from \"./hooks/_registry\"\nimport { internal } from \"./internal/_registry\"\nimport { lib } from \"./lib/_registry\"\nimport { ui } from \"./ui/_registry\"\n\nconst DEPRECATED_ITEMS = [\n  \"toast\",\n  \"toast-demo\",\n  \"toast-destructive\",\n  \"toast-simple\",\n  \"toast-with-action\",\n  \"toast-with-title\",\n]\n\n// Shared between index and style for backward compatibility.\nconst NEW_YORK_V4_STYLE = {\n  type: \"registry:style\",\n  dependencies: [\"class-variance-authority\", \"lucide-react\", \"radix-ui\"],\n  devDependencies: [\"tw-animate-css\", \"shadcn\"],\n  registryDependencies: [\"utils\"],\n  css: {\n    '@import \"tw-animate-css\"': {},\n    '@import \"shadcn/tailwind.css\"': {},\n    \"@layer base\": {\n      \"*\": {\n        \"@apply border-border outline-ring/50\": {},\n      },\n      body: {\n        \"@apply bg-background text-foreground\": {},\n      },\n    },\n  },\n  cssVars: {},\n  files: [],\n}\n\nexport const registry = {\n  name: \"shadcn/ui\",\n  homepage: \"https://ui.shadcn.com\",\n  items: z.array(registryItemSchema).parse(\n    [\n      {\n        name: \"index\",\n        ...NEW_YORK_V4_STYLE,\n      },\n      {\n        name: \"style\",\n        ...NEW_YORK_V4_STYLE,\n      },\n      ...ui,\n      ...blocks,\n      ...charts,\n      ...lib,\n      ...hooks,\n      ...themes,\n      ...examples,\n      ...internal,\n    ].filter((item) => {\n      return !DEPRECATED_ITEMS.includes(item.name)\n    })\n  ),\n} satisfies Registry\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/_registry.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const ui: Registry[\"items\"] = [\n  {\n    name: \"accordion\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/accordion.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"alert\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/alert.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"alert-dialog\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/alert-dialog.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"aspect-ratio\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/aspect-ratio.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"avatar\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/avatar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"badge\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/badge.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"breadcrumb\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/breadcrumb.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"button\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/button.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"button-group\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\", \"separator\"],\n    files: [\n      {\n        path: \"ui/button-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"calendar\",\n    type: \"registry:ui\",\n    dependencies: [\"react-day-picker@latest\", \"date-fns\"],\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/calendar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"card\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/card.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"carousel\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/carousel.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    registryDependencies: [\"button\"],\n    dependencies: [\"embla-carousel-react\"],\n  },\n  {\n    name: \"chart\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/chart.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    registryDependencies: [\"card\"],\n    dependencies: [\"recharts@2.15.4\", \"lucide-react\"],\n  },\n  {\n    name: \"checkbox\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/checkbox.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"collapsible\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/collapsible.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"combobox\",\n    type: \"registry:ui\",\n    dependencies: [\"@base-ui/react\"],\n    registryDependencies: [\"button\", \"input-group\"],\n    files: [\n      {\n        path: \"ui/combobox.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"command\",\n    type: \"registry:ui\",\n    dependencies: [\"cmdk\"],\n    registryDependencies: [\"dialog\"],\n    files: [\n      {\n        path: \"ui/command.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"context-menu\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/context-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"dialog\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/dialog.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"drawer\",\n    type: \"registry:ui\",\n    dependencies: [\"vaul\"],\n    files: [\n      {\n        path: \"ui/drawer.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"dropdown-menu\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/dropdown-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"empty\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/empty.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"field\",\n    type: \"registry:ui\",\n    registryDependencies: [\"label\", \"separator\"],\n    files: [\n      {\n        path: \"ui/field.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"form\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\", \"@hookform/resolvers\", \"zod\", \"react-hook-form\"],\n    registryDependencies: [\"button\", \"label\"],\n    files: [\n      {\n        path: \"ui/form.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"hover-card\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/hover-card.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"input\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/input.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"input-group\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\", \"input\", \"textarea\"],\n    files: [\n      {\n        path: \"ui/input-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"input-otp\",\n    type: \"registry:ui\",\n    dependencies: [\"input-otp\"],\n    files: [\n      {\n        path: \"ui/input-otp.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"item\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    registryDependencies: [\"separator\"],\n    files: [\n      {\n        path: \"ui/item.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"label\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/label.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"menubar\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/menubar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"navigation-menu\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/navigation-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"pagination\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/pagination.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"popover\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/popover.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"progress\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/progress.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"radio-group\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/radio-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"resizable\",\n    type: \"registry:ui\",\n    dependencies: [\"react-resizable-panels@^4\"],\n    files: [\n      {\n        path: \"ui/resizable.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"scroll-area\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/scroll-area.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"select\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/select.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"separator\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/separator.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"sheet\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/sheet.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"sidebar\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\", \"class-variance-authority\", \"lucide-react\"],\n    registryDependencies: [\n      \"button\",\n      \"separator\",\n      \"sheet\",\n      \"tooltip\",\n      \"input\",\n      \"use-mobile\",\n      \"skeleton\",\n    ],\n    files: [\n      {\n        path: \"ui/sidebar.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n    tailwind: {\n      config: {\n        theme: {\n          extend: {\n            colors: {\n              sidebar: {\n                DEFAULT: \"hsl(var(--sidebar-background))\",\n                foreground: \"hsl(var(--sidebar-foreground))\",\n                primary: \"hsl(var(--sidebar-primary))\",\n                \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n                accent: \"hsl(var(--sidebar-accent))\",\n                \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n                border: \"hsl(var(--sidebar-border))\",\n                ring: \"hsl(var(--sidebar-ring))\",\n              },\n            },\n          },\n        },\n      },\n    },\n    cssVars: {\n      light: {\n        \"sidebar-background\": \"0 0% 98%\",\n        \"sidebar-foreground\": \"240 5.3% 26.1%\",\n        \"sidebar-primary\": \"240 5.9% 10%\",\n        \"sidebar-primary-foreground\": \"0 0% 98%\",\n        \"sidebar-accent\": \"240 4.8% 95.9%\",\n        \"sidebar-accent-foreground\": \"240 5.9% 10%\",\n        \"sidebar-border\": \"220 13% 91%\",\n        \"sidebar-ring\": \"217.2 91.2% 59.8%\",\n      },\n      dark: {\n        \"sidebar-background\": \"240 5.9% 10%\",\n        \"sidebar-foreground\": \"240 4.8% 95.9%\",\n        \"sidebar-primary\": \"224.3 76.3% 48%\",\n        \"sidebar-primary-foreground\": \"0 0% 100%\",\n        \"sidebar-accent\": \"240 3.7% 15.9%\",\n        \"sidebar-accent-foreground\": \"240 4.8% 95.9%\",\n        \"sidebar-border\": \"240 3.7% 15.9%\",\n        \"sidebar-ring\": \"217.2 91.2% 59.8%\",\n      },\n    },\n  },\n  {\n    name: \"skeleton\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/skeleton.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"slider\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/slider.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"sonner\",\n    type: \"registry:ui\",\n    dependencies: [\"sonner\", \"next-themes\"],\n    files: [\n      {\n        path: \"ui/sonner.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"spinner\",\n    type: \"registry:ui\",\n    dependencies: [\"class-variance-authority\"],\n    files: [\n      {\n        path: \"ui/spinner.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"switch\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/switch.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"table\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/table.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"tabs\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/tabs.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"textarea\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/textarea.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"toast\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/toast.tsx\",\n        type: \"registry:ui\",\n      },\n      {\n        path: \"hooks/use-toast.ts\",\n        type: \"registry:hook\",\n      },\n      {\n        path: \"ui/toaster.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"toggle\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    files: [\n      {\n        path: \"ui/toggle.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"toggle-group\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    registryDependencies: [\"toggle\"],\n    files: [\n      {\n        path: \"ui/toggle-group.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"tooltip\",\n    type: \"registry:ui\",\n    dependencies: [\"radix-ui\"],\n    docs: `The \\`tooltip\\` component has been added. Remember to wrap your app with the \\`TooltipProvider\\` component.\n\n\\`\\`\\`tsx title=\"app/layout.tsx\"\nimport { TooltipProvider } from \"@/components/ui/tooltip\"\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <TooltipProvider>{children}</TooltipProvider>\n      </body>\n    </html>\n  )\n}\n\\`\\`\\`\n`,\n    files: [\n      {\n        path: \"ui/tooltip.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"kbd\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/kbd.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"native-select\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/native-select.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"direction\",\n    type: \"registry:ui\",\n    files: [\n      {\n        path: \"ui/direction.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/accordion.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Accordion({\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n  return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n  return (\n    <AccordionPrimitive.Item\n      data-slot=\"accordion-item\"\n      className={cn(\"border-b last:border-b-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AccordionTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        data-slot=\"accordion-trigger\"\n        className={cn(\n          \"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <ChevronDownIcon className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200\" />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\nfunction AccordionContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n  return (\n    <AccordionPrimitive.Content\n      data-slot=\"accordion-content\"\n      className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n      {...props}\n    >\n      <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n    </AccordionPrimitive.Content>\n  )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/alert-dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nfunction AlertDialog({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n  return (\n    <AlertDialogPrimitive.Overlay\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n  size?: \"default\" | \"sm\"\n}) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content\n        data-slot=\"alert-dialog-content\"\n        data-size={size}\n        className={cn(\n          \"group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg\",\n          className\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\n        \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\n        \"text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\n        \"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Action\n        data-slot=\"alert-dialog-action\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = \"outline\",\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n  Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Cancel\n        data-slot=\"alert-dialog-cancel\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n  \"relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-card text-card-foreground\",\n        destructive:\n          \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/aspect-ratio.tsx",
    "content": "\"use client\"\n\nimport { AspectRatio as AspectRatioPrimitive } from \"radix-ui\"\n\nfunction AspectRatio({\n  ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n  return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n  size?: \"default\" | \"sm\" | \"lg\"\n}) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(\n        \"group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarImage({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\"aspect-square size-full\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"avatar-badge\"\n      className={cn(\n        \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none\",\n        \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n        \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n        \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarGroupCount({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Avatar,\n  AvatarImage,\n  AvatarFallback,\n  AvatarBadge,\n  AvatarGroup,\n  AvatarGroupCount,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/badge.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n  \"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n        secondary:\n          \"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n        destructive:\n          \"bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90\",\n        outline:\n          \"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n        ghost: \"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 [a&]:hover:underline\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"span\"\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      data-variant={variant}\n      className={cn(badgeVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/breadcrumb.tsx",
    "content": "import * as React from \"react\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n  return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n  return (\n    <ol\n      data-slot=\"breadcrumb-list\"\n      className={cn(\n        \"flex flex-wrap items-center gap-1.5 text-sm break-words text-muted-foreground sm:gap-2.5\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-item\"\n      className={cn(\"inline-flex items-center gap-1.5\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbLink({\n  asChild,\n  className,\n  ...props\n}: React.ComponentProps<\"a\"> & {\n  asChild?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"breadcrumb-link\"\n      className={cn(\"transition-colors hover:text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-page\"\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      className={cn(\"font-normal text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction BreadcrumbSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\"[&>svg]:size-3.5\", className)}\n      {...props}\n    >\n      {children ?? <ChevronRight />}\n    </li>\n  )\n}\n\nfunction BreadcrumbEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\"flex size-9 items-center justify-center\", className)}\n      {...props}\n    >\n      <MoreHorizontal className=\"size-4\" />\n      <span className=\"sr-only\">More</span>\n    </span>\n  )\n}\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/button-group.tsx",
    "content": "import { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nconst buttonGroupVariants = cva(\n  \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n  {\n    variants: {\n      orientation: {\n        horizontal:\n          \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n        vertical:\n          \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"horizontal\",\n    },\n  }\n)\n\nfunction ButtonGroup({\n  className,\n  orientation,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"button-group\"\n      data-orientation={orientation}\n      className={cn(buttonGroupVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupText({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  asChild?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"div\"\n\n  return (\n    <Comp\n      className={cn(\n        \"flex items-center gap-2 rounded-md border bg-muted px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ButtonGroupSeparator({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"button-group-separator\"\n      orientation={orientation}\n      className={cn(\n        \"relative m-0! self-stretch bg-input data-[orientation=vertical]:h-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ButtonGroup,\n  ButtonGroupSeparator,\n  ButtonGroupText,\n  buttonGroupVariants,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n        outline:\n          \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n        secondary:\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        ghost:\n          \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n        xs: \"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\n        sm: \"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\",\n        lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n        icon: \"size-9\",\n        \"icon-xs\": \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\",\n        \"icon-sm\": \"size-8\",\n        \"icon-lg\": \"size-10\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/calendar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n  DayPicker,\n  getDefaultClassNames,\n  type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/new-york-v4/ui/button\"\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  captionLayout = \"label\",\n  buttonVariant = \"ghost\",\n  formatters,\n  components,\n  ...props\n}: React.ComponentProps<typeof DayPicker> & {\n  buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n  const defaultClassNames = getDefaultClassNames()\n\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\n        \"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n        String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n        String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n        className\n      )}\n      captionLayout={captionLayout}\n      formatters={{\n        formatMonthDropdown: (date) =>\n          date.toLocaleString(\"default\", { month: \"short\" }),\n        ...formatters,\n      }}\n      classNames={{\n        root: cn(\"w-fit\", defaultClassNames.root),\n        months: cn(\n          \"relative flex flex-col gap-4 md:flex-row\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute inset-0 bg-popover opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"font-medium select-none\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n          defaultClassNames.caption_label\n        ),\n        table: \"w-full border-collapse\",\n        weekdays: cn(\"flex\", defaultClassNames.weekdays),\n        weekday: cn(\n          \"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n        week_number_header: cn(\n          \"w-(--cell-size) select-none\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] text-muted-foreground select-none\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md\",\n          props.showWeekNumber\n            ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n            : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n          defaultClassNames.day\n        ),\n        range_start: cn(\n          \"rounded-l-md bg-accent\",\n          defaultClassNames.range_start\n        ),\n        range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n        range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n        today: cn(\n          \"rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none\",\n          defaultClassNames.today\n        ),\n        outside: cn(\n          \"text-muted-foreground aria-selected:text-muted-foreground\",\n          defaultClassNames.outside\n        ),\n        disabled: cn(\n          \"text-muted-foreground opacity-50\",\n          defaultClassNames.disabled\n        ),\n        hidden: cn(\"invisible\", defaultClassNames.hidden),\n        ...classNames,\n      }}\n      components={{\n        Root: ({ className, rootRef, ...props }) => {\n          return (\n            <div\n              data-slot=\"calendar\"\n              ref={rootRef}\n              className={cn(className)}\n              {...props}\n            />\n          )\n        },\n        Chevron: ({ className, orientation, ...props }) => {\n          if (orientation === \"left\") {\n            return (\n              <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n            )\n          }\n\n          if (orientation === \"right\") {\n            return (\n              <ChevronRightIcon\n                className={cn(\"size-4\", className)}\n                {...props}\n              />\n            )\n          }\n\n          return (\n            <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n          )\n        },\n        DayButton: CalendarDayButton,\n        WeekNumber: ({ children, ...props }) => {\n          return (\n            <td {...props}>\n              <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                {children}\n              </div>\n            </td>\n          )\n        },\n        ...components,\n      }}\n      {...props}\n    />\n  )\n}\n\nfunction CalendarDayButton({\n  className,\n  day,\n  modifiers,\n  ...props\n}: React.ComponentProps<typeof DayButton>) {\n  const defaultClassNames = getDefaultClassNames()\n\n  const ref = React.useRef<HTMLButtonElement>(null)\n  React.useEffect(() => {\n    if (modifiers.focused) ref.current?.focus()\n  }, [modifiers.focused])\n\n  return (\n    <Button\n      ref={ref}\n      variant=\"ghost\"\n      size=\"icon\"\n      data-day={day.date.toLocaleDateString()}\n      data-selected-single={\n        modifiers.selected &&\n        !modifiers.range_start &&\n        !modifiers.range_end &&\n        !modifiers.range_middle\n      }\n      data-range-start={modifiers.range_start}\n      data-range-end={modifiers.range_end}\n      data-range-middle={modifiers.range_middle}\n      className={cn(\n        \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card\"\n      className={cn(\n        \"flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      className={cn(\"leading-none font-semibold\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn(\n        \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"px-6\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardAction,\n  CardDescription,\n  CardContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/carousel.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nfunction Carousel({\n  orientation = \"horizontal\",\n  opts,\n  setApi,\n  plugins,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n  const [carouselRef, api] = useEmblaCarousel(\n    {\n      ...opts,\n      axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n    },\n    plugins\n  )\n  const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n  const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n  const onSelect = React.useCallback((api: CarouselApi) => {\n    if (!api) return\n    setCanScrollPrev(api.canScrollPrev())\n    setCanScrollNext(api.canScrollNext())\n  }, [])\n\n  const scrollPrev = React.useCallback(() => {\n    api?.scrollPrev()\n  }, [api])\n\n  const scrollNext = React.useCallback(() => {\n    api?.scrollNext()\n  }, [api])\n\n  const handleKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === \"ArrowLeft\") {\n        event.preventDefault()\n        scrollPrev()\n      } else if (event.key === \"ArrowRight\") {\n        event.preventDefault()\n        scrollNext()\n      }\n    },\n    [scrollPrev, scrollNext]\n  )\n\n  React.useEffect(() => {\n    if (!api || !setApi) return\n    setApi(api)\n  }, [api, setApi])\n\n  React.useEffect(() => {\n    if (!api) return\n    onSelect(api)\n    api.on(\"reInit\", onSelect)\n    api.on(\"select\", onSelect)\n\n    return () => {\n      api?.off(\"select\", onSelect)\n    }\n  }, [api, onSelect])\n\n  return (\n    <CarouselContext.Provider\n      value={{\n        carouselRef,\n        api: api,\n        opts,\n        orientation:\n          orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n        scrollPrev,\n        scrollNext,\n        canScrollPrev,\n        canScrollNext,\n      }}\n    >\n      <div\n        onKeyDownCapture={handleKeyDown}\n        className={cn(\"relative\", className)}\n        role=\"region\"\n        aria-roledescription=\"carousel\"\n        data-slot=\"carousel\"\n        {...props}\n      >\n        {children}\n      </div>\n    </CarouselContext.Provider>\n  )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div\n      ref={carouselRef}\n      className=\"overflow-hidden\"\n      data-slot=\"carousel-content\"\n    >\n      <div\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      data-slot=\"carousel-item\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CarouselPrevious({\n  className,\n  variant = \"outline\",\n  size = \"icon\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-previous\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute size-8 rounded-full\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -left-12 -translate-y-1/2\"\n          : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <ArrowLeft />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n}\n\nfunction CarouselNext({\n  className,\n  variant = \"outline\",\n  size = \"icon\",\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      data-slot=\"carousel-next\"\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute size-8 rounded-full\",\n        orientation === \"horizontal\"\n          ? \"top-1/2 -right-12 -translate-y-1/2\"\n          : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <ArrowRight />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n}\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/chart.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode\n    icon?: React.ComponentType\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  )\n}\n\ntype ChartContextProps = {\n  config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n  const context = React.useContext(ChartContext)\n\n  if (!context) {\n    throw new Error(\"useChart must be used within a <ChartContainer />\")\n  }\n\n  return context\n}\n\nfunction ChartContainer({\n  id,\n  className,\n  children,\n  config,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  config: ChartConfig\n  children: React.ComponentProps<\n    typeof RechartsPrimitive.ResponsiveContainer\n  >[\"children\"]\n}) {\n  const uniqueId = React.useId()\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-slot=\"chart\"\n        data-chart={chartId}\n        className={cn(\n          \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n          className\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([, config]) => config.theme || config.color\n  )\n\n  if (!colorConfig.length) {\n    return null\n  }\n\n  return (\n    <style\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color\n    return color ? `  --color-${key}: ${color};` : null\n  })\n  .join(\"\\n\")}\n}\n`\n          )\n          .join(\"\\n\"),\n      }}\n    />\n  )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n  active,\n  payload,\n  className,\n  indicator = \"dot\",\n  hideLabel = false,\n  hideIndicator = false,\n  label,\n  labelFormatter,\n  labelClassName,\n  formatter,\n  color,\n  nameKey,\n  labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n  React.ComponentProps<\"div\"> & {\n    hideLabel?: boolean\n    hideIndicator?: boolean\n    indicator?: \"line\" | \"dot\" | \"dashed\"\n    nameKey?: string\n    labelKey?: string\n  }) {\n  const { config } = useChart()\n\n  const tooltipLabel = React.useMemo(() => {\n    if (hideLabel || !payload?.length) {\n      return null\n    }\n\n    const [item] = payload\n    const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n    const itemConfig = getPayloadConfigFromPayload(config, item, key)\n    const value =\n      !labelKey && typeof label === \"string\"\n        ? config[label as keyof typeof config]?.label || label\n        : itemConfig?.label\n\n    if (labelFormatter) {\n      return (\n        <div className={cn(\"font-medium\", labelClassName)}>\n          {labelFormatter(value, payload)}\n        </div>\n      )\n    }\n\n    if (!value) {\n      return null\n    }\n\n    return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n  }, [\n    label,\n    labelFormatter,\n    payload,\n    hideLabel,\n    labelClassName,\n    config,\n    labelKey,\n  ])\n\n  if (!active || !payload?.length) {\n    return null\n  }\n\n  const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n  return (\n    <div\n      className={cn(\n        \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n        className\n      )}\n    >\n      {!nestLabel ? tooltipLabel : null}\n      <div className=\"grid gap-1.5\">\n        {payload\n          .filter((item) => item.type !== \"none\")\n          .map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n            const itemConfig = getPayloadConfigFromPayload(config, item, key)\n            const indicatorColor = color || item.payload.fill || item.color\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                  indicator === \"dot\" && \"items-center\"\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n                            {\n                              \"h-2.5 w-2.5\": indicator === \"dot\",\n                              \"w-1\": indicator === \"line\",\n                              \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                                indicator === \"dashed\",\n                              \"my-0.5\": nestLabel && indicator === \"dashed\",\n                            }\n                          )}\n                          style={\n                            {\n                              \"--color-bg\": indicatorColor,\n                              \"--color-border\": indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        \"flex flex-1 justify-between leading-none\",\n                        nestLabel ? \"items-end\" : \"items-center\"\n                      )}\n                    >\n                      <div className=\"grid gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"font-mono font-medium text-foreground tabular-nums\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            )\n          })}\n      </div>\n    </div>\n  )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n  className,\n  hideIcon = false,\n  payload,\n  verticalAlign = \"bottom\",\n  nameKey,\n}: React.ComponentProps<\"div\"> &\n  Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n    hideIcon?: boolean\n    nameKey?: string\n  }) {\n  const { config } = useChart()\n\n  if (!payload?.length) {\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\n        \"flex items-center justify-center gap-4\",\n        verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n        className\n      )}\n    >\n      {payload\n        .filter((item) => item.type !== \"none\")\n        .map((item) => {\n          const key = `${nameKey || item.dataKey || \"value\"}`\n          const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          )\n        })}\n    </div>\n  )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string\n) {\n  if (typeof payload !== \"object\" || payload === null) {\n    return undefined\n  }\n\n  const payloadPayload =\n    \"payload\" in payload &&\n    typeof payload.payload === \"object\" &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined\n\n  let configLabelKey: string = key\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === \"string\"\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config]\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/checkbox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon } from \"lucide-react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Checkbox({\n  className,\n  ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"grid place-content-center text-current transition-none\"\n      >\n        <CheckIcon className=\"size-3.5\" />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/collapsible.tsx",
    "content": "\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nfunction Collapsible({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleTrigger\n      data-slot=\"collapsible-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction CollapsibleContent({\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleContent\n      data-slot=\"collapsible-content\"\n      {...props}\n    />\n  )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/combobox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"@/registry/new-york-v4/ui/input-group\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n  return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Trigger.Props) {\n  return (\n    <ComboboxPrimitive.Trigger\n      data-slot=\"combobox-trigger\"\n      className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n      {...props}\n    >\n      {children}\n      <ChevronDownIcon\n        data-slot=\"combobox-trigger-icon\"\n        className=\"pointer-events-none size-4 text-muted-foreground\"\n      />\n    </ComboboxPrimitive.Trigger>\n  )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n  return (\n    <ComboboxPrimitive.Clear\n      data-slot=\"combobox-clear\"\n      render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n      className={cn(className)}\n      {...props}\n    >\n      <XIcon className=\"pointer-events-none\" />\n    </ComboboxPrimitive.Clear>\n  )\n}\n\nfunction ComboboxInput({\n  className,\n  children,\n  disabled = false,\n  showTrigger = true,\n  showClear = false,\n  ...props\n}: ComboboxPrimitive.Input.Props & {\n  showTrigger?: boolean\n  showClear?: boolean\n}) {\n  return (\n    <InputGroup className={cn(\"w-auto\", className)}>\n      <ComboboxPrimitive.Input\n        render={<InputGroupInput disabled={disabled} />}\n        {...props}\n      />\n      <InputGroupAddon align=\"inline-end\">\n        {showTrigger && (\n          <InputGroupButton\n            size=\"icon-xs\"\n            variant=\"ghost\"\n            asChild\n            data-slot=\"input-group-button\"\n            className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n            disabled={disabled}\n          >\n            <ComboboxTrigger />\n          </InputGroupButton>\n        )}\n        {showClear && <ComboboxClear disabled={disabled} />}\n      </InputGroupAddon>\n      {children}\n    </InputGroup>\n  )\n}\n\nfunction ComboboxContent({\n  className,\n  side = \"bottom\",\n  sideOffset = 6,\n  align = \"start\",\n  alignOffset = 0,\n  anchor,\n  ...props\n}: ComboboxPrimitive.Popup.Props &\n  Pick<\n    ComboboxPrimitive.Positioner.Props,\n    \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n  >) {\n  return (\n    <ComboboxPrimitive.Portal>\n      <ComboboxPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        anchor={anchor}\n        className=\"isolate z-50\"\n      >\n        <ComboboxPrimitive.Popup\n          data-slot=\"combobox-content\"\n          data-chips={!!anchor}\n          className={cn(\n            \"group/combobox-content relative max-h-96 w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n            className\n          )}\n          {...props}\n        />\n      </ComboboxPrimitive.Positioner>\n    </ComboboxPrimitive.Portal>\n  )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n  return (\n    <ComboboxPrimitive.List\n      data-slot=\"combobox-list\"\n      className={cn(\n        \"max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxItem({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Item.Props) {\n  return (\n    <ComboboxPrimitive.Item\n      data-slot=\"combobox-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ComboboxPrimitive.ItemIndicator\n        data-slot=\"combobox-item-indicator\"\n        render={\n          <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n        }\n      >\n        <CheckIcon className=\"pointer-events-none size-4 pointer-coarse:size-5\" />\n      </ComboboxPrimitive.ItemIndicator>\n    </ComboboxPrimitive.Item>\n  )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n  return (\n    <ComboboxPrimitive.Group\n      data-slot=\"combobox-group\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxLabel({\n  className,\n  ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n  return (\n    <ComboboxPrimitive.GroupLabel\n      data-slot=\"combobox-label\"\n      className={cn(\n        \"px-2 py-1.5 text-xs text-muted-foreground pointer-coarse:px-3 pointer-coarse:py-2 pointer-coarse:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n  return (\n    <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n  )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n  return (\n    <ComboboxPrimitive.Empty\n      data-slot=\"combobox-empty\"\n      className={cn(\n        \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxSeparator({\n  className,\n  ...props\n}: ComboboxPrimitive.Separator.Props) {\n  return (\n    <ComboboxPrimitive.Separator\n      data-slot=\"combobox-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChips({\n  className,\n  ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n  ComboboxPrimitive.Chips.Props) {\n  return (\n    <ComboboxPrimitive.Chips\n      data-slot=\"combobox-chips\"\n      className={cn(\n        \"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ComboboxChip({\n  className,\n  children,\n  showRemove = true,\n  ...props\n}: ComboboxPrimitive.Chip.Props & {\n  showRemove?: boolean\n}) {\n  return (\n    <ComboboxPrimitive.Chip\n      data-slot=\"combobox-chip\"\n      className={cn(\n        \"flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showRemove && (\n        <ComboboxPrimitive.ChipRemove\n          render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n          className=\"-ml-1 opacity-50 hover:opacity-100\"\n          data-slot=\"combobox-chip-remove\"\n        >\n          <XIcon className=\"pointer-events-none\" />\n        </ComboboxPrimitive.ChipRemove>\n      )}\n    </ComboboxPrimitive.Chip>\n  )\n}\n\nfunction ComboboxChipsInput({\n  className,\n  children,\n  ...props\n}: ComboboxPrimitive.Input.Props) {\n  return (\n    <ComboboxPrimitive.Input\n      data-slot=\"combobox-chip-input\"\n      className={cn(\"min-w-16 flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction useComboboxAnchor() {\n  return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n  Combobox,\n  ComboboxInput,\n  ComboboxContent,\n  ComboboxList,\n  ComboboxItem,\n  ComboboxGroup,\n  ComboboxLabel,\n  ComboboxCollection,\n  ComboboxEmpty,\n  ComboboxSeparator,\n  ComboboxChips,\n  ComboboxChip,\n  ComboboxChipsInput,\n  ComboboxTrigger,\n  ComboboxValue,\n  useComboboxAnchor,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"@/registry/new-york-v4/ui/dialog\"\n\nfunction Command({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n  return (\n    <CommandPrimitive\n      data-slot=\"command\"\n      className={cn(\n        \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandDialog({\n  title = \"Command Palette\",\n  description = \"Search for a command to run...\",\n  children,\n  className,\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof Dialog> & {\n  title?: string\n  description?: string\n  className?: string\n  showCloseButton?: boolean\n}) {\n  return (\n    <Dialog {...props}>\n      <DialogHeader className=\"sr-only\">\n        <DialogTitle>{title}</DialogTitle>\n        <DialogDescription>{description}</DialogDescription>\n      </DialogHeader>\n      <DialogContent\n        className={cn(\"overflow-hidden p-0\", className)}\n        showCloseButton={showCloseButton}\n      >\n        <Command className=\"**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n          {children}\n        </Command>\n      </DialogContent>\n    </Dialog>\n  )\n}\n\nfunction CommandInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n  return (\n    <div\n      data-slot=\"command-input-wrapper\"\n      className=\"flex h-9 items-center gap-2 border-b px-3\"\n    >\n      <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n      <CommandPrimitive.Input\n        data-slot=\"command-input\"\n        className={cn(\n          \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction CommandList({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n  return (\n    <CommandPrimitive.List\n      data-slot=\"command-list\"\n      className={cn(\n        \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandEmpty({\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n  return (\n    <CommandPrimitive.Empty\n      data-slot=\"command-empty\"\n      className=\"py-6 text-center text-sm\"\n      {...props}\n    />\n  )\n}\n\nfunction CommandGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n  return (\n    <CommandPrimitive.Group\n      data-slot=\"command-group\"\n      className={cn(\n        \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n  return (\n    <CommandPrimitive.Separator\n      data-slot=\"command-separator\"\n      className={cn(\"-mx-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CommandItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n  return (\n    <CommandPrimitive.Item\n      data-slot=\"command-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CommandShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"command-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ContextMenu({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n  return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n  return (\n    <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n  )\n}\n\nfunction ContextMenuGroup({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n  return (\n    <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n  )\n}\n\nfunction ContextMenuPortal({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n  return (\n    <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n  )\n}\n\nfunction ContextMenuSub({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n  return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n  return (\n    <ContextMenuPrimitive.RadioGroup\n      data-slot=\"context-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.SubTrigger\n      data-slot=\"context-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ml-auto\" />\n    </ContextMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction ContextMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n  return (\n    <ContextMenuPrimitive.SubContent\n      data-slot=\"context-menu-sub-content\"\n      className={cn(\n        \"z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n  return (\n    <ContextMenuPrimitive.Portal>\n      <ContextMenuPrimitive.Content\n        data-slot=\"context-menu-content\"\n        className={cn(\n          \"z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n          className\n        )}\n        {...props}\n      />\n    </ContextMenuPrimitive.Portal>\n  )\n}\n\nfunction ContextMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <ContextMenuPrimitive.Item\n      data-slot=\"context-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      data-slot=\"context-menu-checkbox-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n        <ContextMenuPrimitive.ItemIndicator>\n          <CheckIcon className=\"size-4\" />\n        </ContextMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction ContextMenuRadioItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n  return (\n    <ContextMenuPrimitive.RadioItem\n      data-slot=\"context-menu-radio-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n        <ContextMenuPrimitive.ItemIndicator>\n          <CircleIcon className=\"size-2 fill-current\" />\n        </ContextMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </ContextMenuPrimitive.RadioItem>\n  )\n}\n\nfunction ContextMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <ContextMenuPrimitive.Label\n      data-slot=\"context-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-2 py-1.5 text-sm font-medium text-foreground data-[inset]:pl-8\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n  return (\n    <ContextMenuPrimitive.Separator\n      data-slot=\"context-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ContextMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"context-menu-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  ContextMenu,\n  ContextMenuTrigger,\n  ContextMenuContent,\n  ContextMenuItem,\n  ContextMenuCheckboxItem,\n  ContextMenuRadioItem,\n  ContextMenuLabel,\n  ContextMenuSeparator,\n  ContextMenuShortcut,\n  ContextMenuGroup,\n  ContextMenuPortal,\n  ContextMenuSub,\n  ContextMenuSubContent,\n  ContextMenuSubTrigger,\n  ContextMenuRadioGroup,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\n\nfunction Dialog({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n  return (\n    <DialogPrimitive.Overlay\n      data-slot=\"dialog-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal data-slot=\"dialog-portal\">\n      <DialogOverlay />\n      <DialogPrimitive.Content\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close\n            data-slot=\"dialog-close\"\n            className=\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n          >\n            <XIcon />\n            <span className=\"sr-only\">Close</span>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Content>\n    </DialogPortal>\n  )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-header\"\n      className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogFooter({\n  className,\n  showCloseButton = false,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close asChild>\n          <Button variant=\"outline\">Close</Button>\n        </DialogPrimitive.Close>\n      )}\n    </div>\n  )\n}\n\nfunction DialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn(\"text-lg leading-none font-semibold\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/direction.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Direction } from \"radix-ui\"\n\nfunction DirectionProvider({\n  dir,\n  direction,\n  children,\n}: React.ComponentProps<typeof Direction.DirectionProvider> & {\n  direction?: React.ComponentProps<typeof Direction.DirectionProvider>[\"dir\"]\n}) {\n  return (\n    <Direction.DirectionProvider dir={direction ?? dir}>\n      {children}\n    </Direction.DirectionProvider>\n  )\n}\n\nconst useDirection = Direction.useDirection\n\nexport { DirectionProvider, useDirection }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/drawer.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n  return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n  return (\n    <DrawerPortal data-slot=\"drawer-portal\">\n      <DrawerOverlay />\n      <DrawerPrimitive.Content\n        data-slot=\"drawer-content\"\n        className={cn(\n          \"group/drawer-content fixed z-50 flex h-auto flex-col bg-background\",\n          \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n          \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n          \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n          \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n        {children}\n      </DrawerPrimitive.Content>\n    </DrawerPortal>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\n        \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\"font-semibold text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n  return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n  return (\n    <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n  )\n}\n\nfunction DropdownMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n  return (\n    <DropdownMenuPrimitive.Trigger\n      data-slot=\"dropdown-menu-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuContent({\n  className,\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n  return (\n    <DropdownMenuPrimitive.Portal>\n      <DropdownMenuPrimitive.Content\n        data-slot=\"dropdown-menu-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n          className\n        )}\n        {...props}\n      />\n    </DropdownMenuPrimitive.Portal>\n  )\n}\n\nfunction DropdownMenuGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n  return (\n    <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n  )\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <DropdownMenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n  return (\n    <DropdownMenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CheckIcon className=\"size-4\" />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction DropdownMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n  return (\n    <DropdownMenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n  return (\n    <DropdownMenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CircleIcon className=\"size-2 fill-current\" />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.RadioItem>\n  )\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.Label\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n  return (\n    <DropdownMenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n  return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.SubTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ml-auto size-4\" />\n    </DropdownMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction DropdownMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n  return (\n    <DropdownMenuPrimitive.SubContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/empty.tsx",
    "content": "import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty\"\n      className={cn(\n        \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-header\"\n      className={cn(\n        \"flex max-w-sm flex-col items-center gap-2 text-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst emptyMediaVariants = cva(\n  \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction EmptyMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n  return (\n    <div\n      data-slot=\"empty-icon\"\n      data-variant={variant}\n      className={cn(emptyMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-title\"\n      className={cn(\"text-lg font-medium tracking-tight\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <div\n      data-slot=\"empty-description\"\n      className={cn(\n        \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-content\"\n      className={cn(\n        \"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Empty,\n  EmptyHeader,\n  EmptyTitle,\n  EmptyDescription,\n  EmptyContent,\n  EmptyMedia,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/field.tsx",
    "content": "\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n  return (\n    <fieldset\n      data-slot=\"field-set\"\n      className={cn(\n        \"flex flex-col gap-6\",\n        \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLegend({\n  className,\n  variant = \"legend\",\n  ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n  return (\n    <legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\n        \"mb-3 font-medium\",\n        \"data-[variant=legend]:text-base\",\n        \"data-[variant=label]:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\n        \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst fieldVariants = cva(\n  \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n  {\n    variants: {\n      orientation: {\n        vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n        horizontal: [\n          \"flex-row items-center\",\n          \"[&>[data-slot=field-label]]:flex-auto\",\n          \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n        ],\n        responsive: [\n          \"flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto\",\n          \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n          \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n        ],\n      },\n    },\n    defaultVariants: {\n      orientation: \"vertical\",\n    },\n  }\n)\n\nfunction Field({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"field\"\n      data-orientation={orientation}\n      className={cn(fieldVariants({ orientation }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn(\n        \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof Label>) {\n  return (\n    <Label\n      data-slot=\"field-label\"\n      className={cn(\n        \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n        \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n        \"has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5 dark:has-data-[state=checked]:bg-primary/10\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-label\"\n      className={cn(\n        \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        \"text-sm leading-normal font-normal text-muted-foreground group-has-[[data-orientation=horizontal]]/field:text-balance\",\n        \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\n        \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction FieldSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  children?: React.ReactNode\n}) {\n  return (\n    <div\n      data-slot=\"field-separator\"\n      data-content={!!children}\n      className={cn(\n        \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n        className\n      )}\n      {...props}\n    >\n      <Separator className=\"absolute inset-0 top-1/2\" />\n      {children && (\n        <span\n          className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n          data-slot=\"field-separator-content\"\n        >\n          {children}\n        </span>\n      )}\n    </div>\n  )\n}\n\nfunction FieldError({\n  className,\n  children,\n  errors,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  errors?: Array<{ message?: string } | undefined>\n}) {\n  const content = useMemo(() => {\n    if (children) {\n      return children\n    }\n\n    if (!errors?.length) {\n      return null\n    }\n\n    const uniqueErrors = [\n      ...new Map(errors.map((error) => [error?.message, error])).values(),\n    ]\n\n    if (uniqueErrors?.length == 1) {\n      return uniqueErrors[0]?.message\n    }\n\n    return (\n      <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n        {uniqueErrors.map(\n          (error, index) =>\n            error?.message && <li key={index}>{error.message}</li>\n        )}\n      </ul>\n    )\n  }, [children, errors])\n\n  if (!content) {\n    return null\n  }\n\n  return (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      className={cn(\"text-sm font-normal text-destructive\", className)}\n      {...props}\n    >\n      {content}\n    </div>\n  )\n}\n\nexport {\n  Field,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldContent,\n  FieldTitle,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/form.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport type { Label as LabelPrimitive } from \"radix-ui\"\nimport { Slot } from \"radix-ui\"\nimport {\n  Controller,\n  FormProvider,\n  useFormContext,\n  useFormState,\n  type ControllerProps,\n  type FieldPath,\n  type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/registry/new-york-v4/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n  name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n  {} as FormFieldContextValue\n)\n\nconst FormField = <\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n  ...props\n}: ControllerProps<TFieldValues, TName>) => {\n  return (\n    <FormFieldContext.Provider value={{ name: props.name }}>\n      <Controller {...props} />\n    </FormFieldContext.Provider>\n  )\n}\n\nconst useFormField = () => {\n  const fieldContext = React.useContext(FormFieldContext)\n  const itemContext = React.useContext(FormItemContext)\n  const { getFieldState } = useFormContext()\n  const formState = useFormState({ name: fieldContext.name })\n  const fieldState = getFieldState(fieldContext.name, formState)\n\n  if (!fieldContext) {\n    throw new Error(\"useFormField should be used within <FormField>\")\n  }\n\n  const { id } = itemContext\n\n  return {\n    id,\n    name: fieldContext.name,\n    formItemId: `${id}-form-item`,\n    formDescriptionId: `${id}-form-item-description`,\n    formMessageId: `${id}-form-item-message`,\n    ...fieldState,\n  }\n}\n\ntype FormItemContextValue = {\n  id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n  {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const id = React.useId()\n\n  return (\n    <FormItemContext.Provider value={{ id }}>\n      <div\n        data-slot=\"form-item\"\n        className={cn(\"grid gap-2\", className)}\n        {...props}\n      />\n    </FormItemContext.Provider>\n  )\n}\n\nfunction FormLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  const { error, formItemId } = useFormField()\n\n  return (\n    <Label\n      data-slot=\"form-label\"\n      data-error={!!error}\n      className={cn(\"data-[error=true]:text-destructive\", className)}\n      htmlFor={formItemId}\n      {...props}\n    />\n  )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot.Root>) {\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n  return (\n    <Slot.Root\n      data-slot=\"form-control\"\n      id={formItemId}\n      aria-describedby={\n        !error\n          ? `${formDescriptionId}`\n          : `${formDescriptionId} ${formMessageId}`\n      }\n      aria-invalid={!!error}\n      {...props}\n    />\n  )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  const { formDescriptionId } = useFormField()\n\n  return (\n    <p\n      data-slot=\"form-description\"\n      id={formDescriptionId}\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n  const { error, formMessageId } = useFormField()\n  const body = error ? String(error?.message ?? \"\") : props.children\n\n  if (!body) {\n    return null\n  }\n\n  return (\n    <p\n      data-slot=\"form-message\"\n      id={formMessageId}\n      className={cn(\"text-sm text-destructive\", className)}\n      {...props}\n    >\n      {body}\n    </p>\n  )\n}\n\nexport {\n  useFormField,\n  Form,\n  FormItem,\n  FormLabel,\n  FormControl,\n  FormDescription,\n  FormMessage,\n  FormField,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/hover-card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n  return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n  return (\n    <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n  )\n}\n\nfunction HoverCardContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n  return (\n    <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n      <HoverCardPrimitive.Content\n        data-slot=\"hover-card-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n          className\n        )}\n        {...props}\n      />\n    </HoverCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/input-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Textarea } from \"@/registry/new-york-v4/ui/textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-group\"\n      role=\"group\"\n      className={cn(\n        \"group/input-group relative flex w-full items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none dark:bg-input/30\",\n        \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n        // Variants based on alignment.\n        \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n        \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n        \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n        \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n        // Focus state.\n        \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50\",\n\n        // Error state.\n        \"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupAddonVariants = cva(\n  \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      align: {\n        \"inline-start\":\n          \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n        \"inline-end\":\n          \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n        \"block-start\":\n          \"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3\",\n        \"block-end\":\n          \"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3\",\n      },\n    },\n    defaultVariants: {\n      align: \"inline-start\",\n    },\n  }\n)\n\nfunction InputGroupAddon({\n  className,\n  align = \"inline-start\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"input-group-addon\"\n      data-align={align}\n      className={cn(inputGroupAddonVariants({ align }), className)}\n      onClick={(e) => {\n        if ((e.target as HTMLElement).closest(\"button\")) {\n          return\n        }\n        e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n      }}\n      {...props}\n    />\n  )\n}\n\nconst inputGroupButtonVariants = cva(\n  \"flex items-center gap-2 text-sm shadow-none\",\n  {\n    variants: {\n      size: {\n        xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n        sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n        \"icon-xs\":\n          \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n        \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n      },\n    },\n    defaultVariants: {\n      size: \"xs\",\n    },\n  }\n)\n\nfunction InputGroupButton({\n  className,\n  type = \"button\",\n  variant = \"ghost\",\n  size = \"xs\",\n  ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n  VariantProps<typeof inputGroupButtonVariants>) {\n  return (\n    <Button\n      type={type}\n      data-size={size}\n      variant={variant}\n      className={cn(inputGroupButtonVariants({ size }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      className={cn(\n        \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupInput({\n  className,\n  ...props\n}: React.ComponentProps<\"input\">) {\n  return (\n    <Input\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction InputGroupTextarea({\n  className,\n  ...props\n}: React.ComponentProps<\"textarea\">) {\n  return (\n    <Textarea\n      data-slot=\"input-group-control\"\n      className={cn(\n        \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupText,\n  InputGroupInput,\n  InputGroupTextarea,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/input-otp.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        \"flex items-center gap-2 has-disabled:opacity-50\",\n        containerClassName\n      )}\n      className={cn(\"disabled:cursor-not-allowed\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\"flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  index: number\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext)\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        \"relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n      <MinusIcon />\n    </div>\n  )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <input\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30\",\n        \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n        \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/item.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      role=\"list\"\n      data-slot=\"item-group\"\n      className={cn(\"group/item-group flex flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ItemSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"item-separator\"\n      orientation=\"horizontal\"\n      className={cn(\"my-0\", className)}\n      {...props}\n    />\n  )\n}\n\nconst itemVariants = cva(\n  \"group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-accent/50\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline: \"border-border\",\n        muted: \"bg-muted/50\",\n      },\n      size: {\n        default: \"gap-4 p-4\",\n        sm: \"gap-2.5 px-4 py-3\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Item({\n  className,\n  variant = \"default\",\n  size = \"default\",\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> &\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"div\"\n  return (\n    <Comp\n      data-slot=\"item\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(itemVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nconst itemMediaVariants = cva(\n  \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        icon: \"size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4\",\n        image:\n          \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction ItemMedia({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n  return (\n    <div\n      data-slot=\"item-media\"\n      data-variant={variant}\n      className={cn(itemMediaVariants({ variant, className }))}\n      {...props}\n    />\n  )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-content\"\n      className={cn(\n        \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-title\"\n      className={cn(\n        \"flex w-fit items-center gap-2 text-sm leading-snug font-medium\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"item-description\"\n      className={cn(\n        \"line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground\",\n        \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-actions\"\n      className={cn(\"flex items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-header\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"item-footer\"\n      className={cn(\n        \"flex basis-full items-center justify-between gap-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Item,\n  ItemMedia,\n  ItemContent,\n  ItemActions,\n  ItemGroup,\n  ItemSeparator,\n  ItemTitle,\n  ItemDescription,\n  ItemHeader,\n  ItemFooter,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/kbd.tsx",
    "content": "import { cn } from \"@/lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n  return (\n    <kbd\n      data-slot=\"kbd\"\n      className={cn(\n        \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none\",\n        \"[&_svg:not([class*='size-'])]:size-3\",\n        \"[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <kbd\n      data-slot=\"kbd-group\"\n      className={cn(\"inline-flex items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Kbd, KbdGroup }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  return (\n    <LabelPrimitive.Root\n      data-slot=\"label\"\n      className={cn(\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { Menubar as MenubarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Menubar({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n  return (\n    <MenubarPrimitive.Root\n      data-slot=\"menubar\"\n      className={cn(\n        \"flex h-9 items-center gap-1 rounded-md border bg-background p-1 shadow-xs\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarMenu({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n  return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n  return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n  return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n  return (\n    <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n  )\n}\n\nfunction MenubarTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n  return (\n    <MenubarPrimitive.Trigger\n      data-slot=\"menubar-trigger\"\n      className={cn(\n        \"flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarContent({\n  className,\n  align = \"start\",\n  alignOffset = -4,\n  sideOffset = 8,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n  return (\n    <MenubarPortal>\n      <MenubarPrimitive.Content\n        data-slot=\"menubar-content\"\n        align={align}\n        alignOffset={alignOffset}\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n          className\n        )}\n        {...props}\n      />\n    </MenubarPortal>\n  )\n}\n\nfunction MenubarItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <MenubarPrimitive.Item\n      data-slot=\"menubar-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarCheckboxItem({\n  className,\n  children,\n  checked,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n  return (\n    <MenubarPrimitive.CheckboxItem\n      data-slot=\"menubar-checkbox-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n        <MenubarPrimitive.ItemIndicator>\n          <CheckIcon className=\"size-4\" />\n        </MenubarPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </MenubarPrimitive.CheckboxItem>\n  )\n}\n\nfunction MenubarRadioItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n  return (\n    <MenubarPrimitive.RadioItem\n      data-slot=\"menubar-radio-item\"\n      className={cn(\n        \"relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n        <MenubarPrimitive.ItemIndicator>\n          <CircleIcon className=\"size-2 fill-current\" />\n        </MenubarPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </MenubarPrimitive.RadioItem>\n  )\n}\n\nfunction MenubarLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.Label\n      data-slot=\"menubar-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n  return (\n    <MenubarPrimitive.Separator\n      data-slot=\"menubar-separator\"\n      className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"menubar-shortcut\"\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction MenubarSub({\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n  return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <MenubarPrimitive.SubTrigger\n      data-slot=\"menubar-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n    </MenubarPrimitive.SubTrigger>\n  )\n}\n\nfunction MenubarSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n  return (\n    <MenubarPrimitive.SubContent\n      data-slot=\"menubar-sub-content\"\n      className={cn(\n        \"z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Menubar,\n  MenubarPortal,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarGroup,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarItem,\n  MenubarShortcut,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarSub,\n  MenubarSubTrigger,\n  MenubarSubContent,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/native-select.tsx",
    "content": "import * as React from \"react\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction NativeSelect({\n  className,\n  size = \"default\",\n  ...props\n}: Omit<React.ComponentProps<\"select\">, \"size\"> & { size?: \"sm\" | \"default\" }) {\n  return (\n    <div\n      className=\"group/native-select relative w-fit has-[select:disabled]:opacity-50\"\n      data-slot=\"native-select-wrapper\"\n    >\n      <select\n        data-slot=\"native-select\"\n        data-size={size}\n        className={cn(\n          \"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1 dark:bg-input/30 dark:hover:bg-input/50\",\n          \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n          \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n          className\n        )}\n        {...props}\n      />\n      <ChevronDownIcon\n        className=\"pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-muted-foreground opacity-50 select-none\"\n        aria-hidden=\"true\"\n        data-slot=\"native-select-icon\"\n      />\n    </div>\n  )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n  return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n  className,\n  ...props\n}: React.ComponentProps<\"optgroup\">) {\n  return (\n    <optgroup\n      data-slot=\"native-select-optgroup\"\n      className={cn(className)}\n      {...props}\n    />\n  )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/navigation-menu.tsx",
    "content": "import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction NavigationMenu({\n  className,\n  children,\n  viewport = true,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n  viewport?: boolean\n}) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      data-viewport={viewport}\n      className={cn(\n        \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {viewport && <NavigationMenuViewport />}\n    </NavigationMenuPrimitive.Root>\n  )\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"group flex flex-1 list-none items-center justify-center gap-1\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent\"\n)\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}{\" \"}\n      <ChevronDownIcon\n        className=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n        aria-hidden=\"true\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  )\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"top-0 left-0 w-full p-2 pr-2.5 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out md:absolute md:w-auto\",\n        \"group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuViewport({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n  return (\n    <div\n      className={cn(\n        \"absolute top-full left-0 isolate z-50 flex justify-center\"\n      )}\n    >\n      <NavigationMenuPrimitive.Viewport\n        data-slot=\"navigation-menu-viewport\"\n        className={cn(\n          \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\n        \"flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground data-[active=true]:hover:bg-accent data-[active=true]:focus:bg-accent [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n  return (\n    <NavigationMenuPrimitive.Indicator\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n    </NavigationMenuPrimitive.Indicator>\n  )\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuList,\n  NavigationMenuItem,\n  NavigationMenuContent,\n  NavigationMenuTrigger,\n  NavigationMenuLink,\n  NavigationMenuIndicator,\n  NavigationMenuViewport,\n  navigationMenuTriggerStyle,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/pagination.tsx",
    "content": "import * as React from \"react\"\nimport {\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  MoreHorizontalIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type Button } from \"@/registry/new-york-v4/ui/button\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      role=\"navigation\"\n      aria-label=\"pagination\"\n      data-slot=\"pagination\"\n      className={cn(\"mx-auto flex w-full justify-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationContent({\n  className,\n  ...props\n}: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"pagination-content\"\n      className={cn(\"flex flex-row items-center gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n  return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n  isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n  React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n  className,\n  isActive,\n  size = \"icon\",\n  ...props\n}: PaginationLinkProps) {\n  return (\n    <a\n      aria-current={isActive ? \"page\" : undefined}\n      data-slot=\"pagination-link\"\n      data-active={isActive}\n      className={cn(\n        buttonVariants({\n          variant: isActive ? \"outline\" : \"ghost\",\n          size,\n        }),\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction PaginationPrevious({\n  className,\n  ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to previous page\"\n      size=\"default\"\n      className={cn(\"gap-1 px-2.5 sm:pl-2.5\", className)}\n      {...props}\n    >\n      <ChevronLeftIcon />\n      <span className=\"hidden sm:block\">Previous</span>\n    </PaginationLink>\n  )\n}\n\nfunction PaginationNext({\n  className,\n  ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n  return (\n    <PaginationLink\n      aria-label=\"Go to next page\"\n      size=\"default\"\n      className={cn(\"gap-1 px-2.5 sm:pr-2.5\", className)}\n      {...props}\n    >\n      <span className=\"hidden sm:block\">Next</span>\n      <ChevronRightIcon />\n    </PaginationLink>\n  )\n}\n\nfunction PaginationEllipsis({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden\n      data-slot=\"pagination-ellipsis\"\n      className={cn(\"flex size-9 items-center justify-center\", className)}\n      {...props}\n    >\n      <MoreHorizontalIcon className=\"size-4\" />\n      <span className=\"sr-only\">More pages</span>\n    </span>\n  )\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationLink,\n  PaginationItem,\n  PaginationPrevious,\n  PaginationNext,\n  PaginationEllipsis,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Content\n        data-slot=\"popover-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n          className\n        )}\n        {...props}\n      />\n    </PopoverPrimitive.Portal>\n  )\n}\n\nfunction PopoverAnchor({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n  return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"popover-header\"\n      className={cn(\"flex flex-col gap-1 text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n  return (\n    <div\n      data-slot=\"popover-title\"\n      className={cn(\"font-medium\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction PopoverDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"popover-description\"\n      className={cn(\"text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Popover,\n  PopoverTrigger,\n  PopoverContent,\n  PopoverAnchor,\n  PopoverHeader,\n  PopoverTitle,\n  PopoverDescription,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/progress.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Progress({\n  className,\n  value,\n  ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n  return (\n    <ProgressPrimitive.Root\n      data-slot=\"progress\"\n      className={cn(\n        \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n        className\n      )}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className=\"h-full w-full flex-1 bg-primary transition-all\"\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  )\n}\n\nexport { Progress }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CircleIcon } from \"lucide-react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction RadioGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n  return (\n    <RadioGroupPrimitive.Root\n      data-slot=\"radio-group\"\n      className={cn(\"grid gap-3\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction RadioGroupItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n  return (\n    <RadioGroupPrimitive.Item\n      data-slot=\"radio-group-item\"\n      className={cn(\n        \"aspect-square size-4 shrink-0 rounded-full border border-input text-primary shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"relative flex items-center justify-center\"\n      >\n        <CircleIcon className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-primary\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/resizable.tsx",
    "content": "\"use client\"\n\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ResizablePanelGroup({\n  className,\n  ...props\n}: ResizablePrimitive.GroupProps) {\n  return (\n    <ResizablePrimitive.Group\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: ResizablePrimitive.SeparatorProps & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.Separator\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border\">\n          <GripVerticalIcon className=\"size-2.5\" />\n        </div>\n      )}\n    </ResizablePrimitive.Separator>\n  )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/scroll-area.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn(\"relative\", className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        data-slot=\"scroll-area-viewport\"\n        className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  )\n}\n\nfunction ScrollBar({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n  return (\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      orientation={orientation}\n      className={cn(\n        \"flex touch-none p-px transition-colors select-none\",\n        orientation === \"vertical\" &&\n          \"h-full w-2.5 border-l border-l-transparent\",\n        orientation === \"horizontal\" &&\n          \"h-2.5 flex-col border-t border-t-transparent\",\n        className\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.ScrollAreaThumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"relative flex-1 rounded-full bg-border\"\n      />\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n  return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon asChild>\n        <ChevronDownIcon className=\"size-4 opacity-50\" />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = \"item-aligned\",\n  align = \"center\",\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Content\n        data-slot=\"select-content\"\n        className={cn(\n          \"relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n          position === \"popper\" &&\n            \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n          className\n        )}\n        position={position}\n        align={align}\n        {...props}\n      >\n        <SelectScrollUpButton />\n        <SelectPrimitive.Viewport\n          className={cn(\n            \"p-1\",\n            position === \"popper\" &&\n              \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n          )}\n        >\n          {children}\n        </SelectPrimitive.Viewport>\n        <SelectScrollDownButton />\n      </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n  )\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n  return (\n    <SelectPrimitive.Label\n      data-slot=\"select-label\"\n      className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n        className\n      )}\n      {...props}\n    >\n      <span\n        data-slot=\"select-item-indicator\"\n        className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n      >\n        <SelectPrimitive.ItemIndicator>\n          <CheckIcon className=\"size-4\" />\n        </SelectPrimitive.ItemIndicator>\n      </span>\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  )\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n  return (\n    <SelectPrimitive.ScrollUpButton\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"flex cursor-default items-center justify-center py-1\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronUpIcon className=\"size-4\" />\n    </SelectPrimitive.ScrollUpButton>\n  )\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n  return (\n    <SelectPrimitive.ScrollDownButton\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"flex cursor-default items-center justify-center py-1\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronDownIcon className=\"size-4\" />\n    </SelectPrimitive.ScrollDownButton>\n  )\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/separator.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n  className,\n  orientation = \"horizontal\",\n  decorative = true,\n  ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n  return (\n    <SeparatorPrimitive.Root\n      data-slot=\"separator\"\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Separator }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n  return (\n    <SheetPrimitive.Overlay\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n  showCloseButton?: boolean\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Content\n        data-slot=\"sheet-content\"\n        className={cn(\n          \"fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:animate-in data-[state=open]:duration-500\",\n          side === \"right\" &&\n            \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n          side === \"left\" &&\n            \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n          side === \"top\" &&\n            \"inset-x-0 top-0 h-auto border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n          side === \"bottom\" &&\n            \"inset-x-0 bottom-0 h-auto border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary\">\n            <XIcon className=\"size-4\" />\n            <span className=\"sr-only\">Close</span>\n          </SheetPrimitive.Close>\n        )}\n      </SheetPrimitive.Content>\n    </SheetPortal>\n  )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn(\"font-semibold text-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { useIsMobile } from \"@/registry/new-york-v4/hooks/use-mobile\"\nimport { cn } from \"@/registry/new-york-v4/lib/utils\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Input } from \"@/registry/new-york-v4/ui/input\"\nimport { Separator } from \"@/registry/new-york-v4/ui/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/registry/new-york-v4/ui/sheet\"\nimport { Skeleton } from \"@/registry/new-york-v4/ui/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/registry/new-york-v4/ui/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n  state: \"expanded\" | \"collapsed\"\n  open: boolean\n  setOpen: (open: boolean) => void\n  openMobile: boolean\n  setOpenMobile: (open: boolean) => void\n  isMobile: boolean\n  toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n  const context = React.useContext(SidebarContext)\n  if (!context) {\n    throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n  }\n\n  return context\n}\n\nfunction SidebarProvider({\n  defaultOpen = true,\n  open: openProp,\n  onOpenChange: setOpenProp,\n  className,\n  style,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  defaultOpen?: boolean\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}) {\n  const isMobile = useIsMobile()\n  const [openMobile, setOpenMobile] = React.useState(false)\n\n  // This is the internal state of the sidebar.\n  // We use openProp and setOpenProp for control from outside the component.\n  const [_open, _setOpen] = React.useState(defaultOpen)\n  const open = openProp ?? _open\n  const setOpen = React.useCallback(\n    (value: boolean | ((value: boolean) => boolean)) => {\n      const openState = typeof value === \"function\" ? value(open) : value\n      if (setOpenProp) {\n        setOpenProp(openState)\n      } else {\n        _setOpen(openState)\n      }\n\n      // This sets the cookie to keep the sidebar state.\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n    },\n    [setOpenProp, open]\n  )\n\n  // Helper to toggle the sidebar.\n  const toggleSidebar = React.useCallback(() => {\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n  }, [isMobile, setOpen, setOpenMobile])\n\n  // Adds a keyboard shortcut to toggle the sidebar.\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n        (event.metaKey || event.ctrlKey)\n      ) {\n        event.preventDefault()\n        toggleSidebar()\n      }\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n    return () => window.removeEventListener(\"keydown\", handleKeyDown)\n  }, [toggleSidebar])\n\n  // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n  // This makes it easier to style the sidebar with Tailwind classes.\n  const state = open ? \"expanded\" : \"collapsed\"\n\n  const contextValue = React.useMemo<SidebarContextProps>(\n    () => ({\n      state,\n      open,\n      setOpen,\n      isMobile,\n      openMobile,\n      setOpenMobile,\n      toggleSidebar,\n    }),\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n  )\n\n  return (\n    <SidebarContext.Provider value={contextValue}>\n      <TooltipProvider delayDuration={0}>\n        <div\n          data-slot=\"sidebar-wrapper\"\n          style={\n            {\n              \"--sidebar-width\": SIDEBAR_WIDTH,\n              \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n              ...style,\n            } as React.CSSProperties\n          }\n          className={cn(\n            \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n            className\n          )}\n          {...props}\n        >\n          {children}\n        </div>\n      </TooltipProvider>\n    </SidebarContext.Provider>\n  )\n}\n\nfunction Sidebar({\n  side = \"left\",\n  variant = \"sidebar\",\n  collapsible = \"offcanvas\",\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  side?: \"left\" | \"right\"\n  variant?: \"sidebar\" | \"floating\" | \"inset\"\n  collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n  if (collapsible === \"none\") {\n    return (\n      <div\n        data-slot=\"sidebar\"\n        className={cn(\n          \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n\n  if (isMobile) {\n    return (\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n        <SheetContent\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar\"\n          data-mobile=\"true\"\n          className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n          style={\n            {\n              \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n            } as React.CSSProperties\n          }\n          side={side}\n        >\n          <SheetHeader className=\"sr-only\">\n            <SheetTitle>Sidebar</SheetTitle>\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n          </SheetHeader>\n          <div className=\"flex h-full w-full flex-col\">{children}</div>\n        </SheetContent>\n      </Sheet>\n    )\n  }\n\n  return (\n    <div\n      className=\"group peer hidden text-sidebar-foreground md:block\"\n      data-state={state}\n      data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n      data-variant={variant}\n      data-side={side}\n      data-slot=\"sidebar\"\n    >\n      {/* This is what handles the sidebar gap on desktop */}\n      <div\n        data-slot=\"sidebar-gap\"\n        className={cn(\n          \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n          \"group-data-[collapsible=offcanvas]:w-0\",\n          \"group-data-[side=right]:rotate-180\",\n          variant === \"floating\" || variant === \"inset\"\n            ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n        )}\n      />\n      <div\n        data-slot=\"sidebar-container\"\n        className={cn(\n          \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n          side === \"left\"\n            ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n            : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n          // Adjust the padding for floating and inset variants.\n          variant === \"floating\" || variant === \"inset\"\n            ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n          className\n        )}\n        {...props}\n      >\n        <div\n          data-sidebar=\"sidebar\"\n          data-slot=\"sidebar-inner\"\n          className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n        >\n          {children}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction SidebarTrigger({\n  className,\n  onClick,\n  ...props\n}: React.ComponentProps<typeof Button>) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <Button\n      data-sidebar=\"trigger\"\n      data-slot=\"sidebar-trigger\"\n      variant=\"ghost\"\n      size=\"icon\"\n      className={cn(\"size-7\", className)}\n      onClick={(event) => {\n        onClick?.(event)\n        toggleSidebar()\n      }}\n      {...props}\n    >\n      <PanelLeftIcon />\n      <span className=\"sr-only\">Toggle Sidebar</span>\n    </Button>\n  )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n  const { toggleSidebar } = useSidebar()\n\n  return (\n    <button\n      data-sidebar=\"rail\"\n      data-slot=\"sidebar-rail\"\n      aria-label=\"Toggle Sidebar\"\n      tabIndex={-1}\n      onClick={toggleSidebar}\n      title=\"Toggle Sidebar\"\n      className={cn(\n        \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex\",\n        \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n        \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n        \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n        \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n        \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n  return (\n    <main\n      data-slot=\"sidebar-inset\"\n      className={cn(\n        \"relative flex w-full flex-1 flex-col bg-background\",\n        \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof Input>) {\n  return (\n    <Input\n      data-slot=\"sidebar-input\"\n      data-sidebar=\"input\"\n      className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-header\"\n      data-sidebar=\"header\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-footer\"\n      data-sidebar=\"footer\"\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof Separator>) {\n  return (\n    <Separator\n      data-slot=\"sidebar-separator\"\n      data-sidebar=\"separator\"\n      className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-content\"\n      data-sidebar=\"content\"\n      className={cn(\n        \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group\"\n      data-sidebar=\"group\"\n      className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupLabel({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"div\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-label\"\n      data-sidebar=\"group-label\"\n      className={cn(\n        \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n        \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupAction({\n  className,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-action\"\n      data-sidebar=\"group-action\"\n      className={cn(\n        \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n        // Increases the hit area of the button on mobile.\n        \"after:absolute after:-inset-2 md:after:hidden\",\n        \"group-data-[collapsible=icon]:hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarGroupContent({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-group-content\"\n      data-sidebar=\"group-content\"\n      className={cn(\"w-full text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu\"\n      data-sidebar=\"menu\"\n      className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-item\"\n      data-sidebar=\"menu-item\"\n      className={cn(\"group/menu-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nconst sidebarMenuButtonVariants = cva(\n  \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n        outline:\n          \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n      },\n      size: {\n        default: \"h-8 text-sm\",\n        sm: \"h-7 text-xs\",\n        lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction SidebarMenuButton({\n  asChild = false,\n  isActive = false,\n  variant = \"default\",\n  size = \"default\",\n  tooltip,\n  className,\n  ...props\n}: React.ComponentProps<\"button\"> & {\n  asChild?: boolean\n  isActive?: boolean\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n  const Comp = asChild ? Slot.Root : \"button\"\n  const { isMobile, state } = useSidebar()\n\n  const button = (\n    <Comp\n      data-slot=\"sidebar-menu-button\"\n      data-sidebar=\"menu-button\"\n      data-size={size}\n      data-active={isActive}\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n      {...props}\n    />\n  )\n\n  if (!tooltip) {\n    return button\n  }\n\n  if (typeof tooltip === \"string\") {\n    tooltip = {\n      children: tooltip,\n    }\n  }\n\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\n      <TooltipContent\n        side=\"right\"\n        align=\"center\"\n        hidden={state !== \"collapsed\" || isMobile}\n        {...tooltip}\n      />\n    </Tooltip>\n  )\n}\n\nfunction SidebarMenuAction({\n  className,\n  asChild = false,\n  showOnHover = false,\n  ...props\n}: React.ComponentProps<\"button\"> & {\n  asChild?: boolean\n  showOnHover?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-action\"\n      data-sidebar=\"menu-action\"\n      className={cn(\n        \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n        // Increases the hit area of the button on mobile.\n        \"after:absolute after:-inset-2 md:after:hidden\",\n        \"peer-data-[size=sm]/menu-button:top-1\",\n        \"peer-data-[size=default]/menu-button:top-1.5\",\n        \"peer-data-[size=lg]/menu-button:top-2.5\",\n        \"group-data-[collapsible=icon]:hidden\",\n        showOnHover &&\n          \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100 md:opacity-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuBadge({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sidebar-menu-badge\"\n      data-sidebar=\"menu-badge\"\n      className={cn(\n        \"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none\",\n        \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n        \"peer-data-[size=sm]/menu-button:top-1\",\n        \"peer-data-[size=default]/menu-button:top-1.5\",\n        \"peer-data-[size=lg]/menu-button:top-2.5\",\n        \"group-data-[collapsible=icon]:hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSkeleton({\n  className,\n  showIcon = false,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  showIcon?: boolean\n}) {\n  // Random width between 50 to 90%.\n  const width = React.useMemo(() => {\n    return `${Math.floor(Math.random() * 40) + 50}%`\n  }, [])\n\n  return (\n    <div\n      data-slot=\"sidebar-menu-skeleton\"\n      data-sidebar=\"menu-skeleton\"\n      className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n      {...props}\n    >\n      {showIcon && (\n        <Skeleton\n          className=\"size-4 rounded-md\"\n          data-sidebar=\"menu-skeleton-icon\"\n        />\n      )}\n      <Skeleton\n        className=\"h-4 max-w-(--skeleton-width) flex-1\"\n        data-sidebar=\"menu-skeleton-text\"\n        style={\n          {\n            \"--skeleton-width\": width,\n          } as React.CSSProperties\n        }\n      />\n    </div>\n  )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"sidebar-menu-sub\"\n      data-sidebar=\"menu-sub\"\n      className={cn(\n        \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n        \"group-data-[collapsible=icon]:hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubItem({\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"sidebar-menu-sub-item\"\n      data-sidebar=\"menu-sub-item\"\n      className={cn(\"group/menu-sub-item relative\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SidebarMenuSubButton({\n  asChild = false,\n  size = \"md\",\n  isActive = false,\n  className,\n  ...props\n}: React.ComponentProps<\"a\"> & {\n  asChild?: boolean\n  size?: \"sm\" | \"md\"\n  isActive?: boolean\n}) {\n  const Comp = asChild ? Slot.Root : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-sub-button\"\n      data-sidebar=\"menu-sub-button\"\n      data-size={size}\n      data-active={isActive}\n      className={cn(\n        \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n        \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n        size === \"sm\" && \"text-xs\",\n        size === \"md\" && \"text-sm\",\n        \"group-data-[collapsible=icon]:hidden\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarSeparator,\n  SidebarTrigger,\n  useSidebar,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/skeleton.tsx",
    "content": "import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn(\"animate-pulse rounded-md bg-accent\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slider as SliderPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Slider({\n  className,\n  defaultValue,\n  value,\n  min = 0,\n  max = 100,\n  ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n  const _values = React.useMemo(\n    () =>\n      Array.isArray(value)\n        ? value\n        : Array.isArray(defaultValue)\n          ? defaultValue\n          : [min, max],\n    [value, defaultValue, min, max]\n  )\n\n  return (\n    <SliderPrimitive.Root\n      data-slot=\"slider\"\n      defaultValue={defaultValue}\n      value={value}\n      min={min}\n      max={max}\n      className={cn(\n        \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    >\n      <SliderPrimitive.Track\n        data-slot=\"slider-track\"\n        className={cn(\n          \"relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n        )}\n      >\n        <SliderPrimitive.Range\n          data-slot=\"slider-range\"\n          className={cn(\n            \"absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n          )}\n        />\n      </SliderPrimitive.Track>\n      {Array.from({ length: _values.length }, (_, index) => (\n        <SliderPrimitive.Thumb\n          data-slot=\"slider-thumb\"\n          key={index}\n          className=\"block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n        />\n      ))}\n    </SliderPrimitive.Root>\n  )\n}\n\nexport { Slider }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/sonner.tsx",
    "content": "\"use client\"\n\nimport {\n  CircleCheckIcon,\n  InfoIcon,\n  Loader2Icon,\n  OctagonXIcon,\n  TriangleAlertIcon,\n} from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = \"system\" } = useTheme()\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps[\"theme\"]}\n      className=\"toaster group\"\n      icons={{\n        success: <CircleCheckIcon className=\"size-4\" />,\n        info: <InfoIcon className=\"size-4\" />,\n        warning: <TriangleAlertIcon className=\"size-4\" />,\n        error: <OctagonXIcon className=\"size-4\" />,\n        loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n      }}\n      style={\n        {\n          \"--normal-bg\": \"var(--popover)\",\n          \"--normal-text\": \"var(--popover-foreground)\",\n          \"--normal-border\": \"var(--border)\",\n          \"--border-radius\": \"var(--radius)\",\n        } as React.CSSProperties\n      }\n      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/spinner.tsx",
    "content": "import { Loader2Icon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    <Loader2Icon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Spinner }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/switch.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      data-size={size}\n      className={cn(\n        \"peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className={cn(\n          \"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground\"\n        )}\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/table.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n  return (\n    <div\n      data-slot=\"table-container\"\n      className=\"relative w-full overflow-x-auto\"\n    >\n      <table\n        data-slot=\"table\"\n        className={cn(\"w-full caption-bottom text-sm\", className)}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n  return (\n    <thead\n      data-slot=\"table-header\"\n      className={cn(\"[&_tr]:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n  return (\n    <tbody\n      data-slot=\"table-body\"\n      className={cn(\"[&_tr:last-child]:border-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n  return (\n    <tfoot\n      data-slot=\"table-footer\"\n      className={cn(\n        \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n  return (\n    <tr\n      data-slot=\"table-row\"\n      className={cn(\n        \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n  return (\n    <th\n      data-slot=\"table-head\"\n      className={cn(\n        \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n  return (\n    <td\n      data-slot=\"table-cell\"\n      className={cn(\n        \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCaption({\n  className,\n  ...props\n}: React.ComponentProps<\"caption\">) {\n  return (\n    <caption\n      data-slot=\"table-caption\"\n      className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n  className,\n  orientation = \"horizontal\",\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      data-orientation={orientation}\n      orientation={orientation}\n      className={cn(\n        \"group/tabs flex gap-2 data-[orientation=horizontal]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst tabsListVariants = cva(\n  \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-muted\",\n        line: \"gap-1 bg-transparent\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction TabsList({\n  className,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n  VariantProps<typeof tabsListVariants>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={cn(tabsListVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n  return (\n    <TabsPrimitive.Trigger\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent\",\n        \"data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground\",\n        \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n  return (\n    <TabsPrimitive.Content\n      data-slot=\"tabs-content\"\n      className={cn(\"flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/textarea.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/toggle-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/registry/new-york-v4/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n  }\n>({\n  size: \"default\",\n  variant: \"default\",\n  spacing: 0,\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  spacing = 0,\n  children,\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n  VariantProps<typeof toggleVariants> & {\n    spacing?: number\n  }) {\n  return (\n    <ToggleGroupPrimitive.Root\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      data-spacing={spacing}\n      style={{ \"--gap\": spacing } as React.CSSProperties}\n      className={cn(\n        \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive.Root>\n  )\n}\n\nfunction ToggleGroupItem({\n  className,\n  children,\n  variant,\n  size,\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n  VariantProps<typeof toggleVariants>) {\n  const context = React.useContext(ToggleGroupContext)\n\n  return (\n    <ToggleGroupPrimitive.Item\n      data-slot=\"toggle-group-item\"\n      data-variant={context.variant || variant}\n      data-size={context.size || size}\n      data-spacing={context.spacing}\n      className={cn(\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n        \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </ToggleGroupPrimitive.Item>\n  )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n  \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline:\n          \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n      },\n      size: {\n        default: \"h-9 min-w-9 px-2\",\n        sm: \"h-8 min-w-8 px-1.5\",\n        lg: \"h-10 min-w-10 px-2.5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Toggle({\n  className,\n  variant,\n  size,\n  ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n  VariantProps<typeof toggleVariants>) {\n  return (\n    <TogglePrimitive.Root\n      data-slot=\"toggle\"\n      className={cn(toggleVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Toggle, toggleVariants }\n"
  },
  {
    "path": "apps/v4/registry/new-york-v4/ui/tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n  delayDuration = 0,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delayDuration={delayDuration}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n  return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n  className,\n  sideOffset = 0,\n  children,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Content\n        data-slot=\"tooltip-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\" />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "apps/v4/registry/styles/style-lyra.css",
    "content": ".style-lyra {\n  /* MARK: Accordion */\n  .cn-accordion-item {\n    @apply not-last:border-b;\n  }\n\n  .cn-accordion-trigger {\n    @apply focus-visible:ring-ring/50 focus-visible:border-ring focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-none py-2.5 text-left text-xs font-medium hover:underline focus-visible:ring-1 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4;\n  }\n\n  .cn-accordion-content {\n    @apply data-open:animate-accordion-down data-closed:animate-accordion-up text-xs;\n  }\n\n  .cn-accordion-content-inner {\n    @apply pt-0 pb-2.5;\n  }\n\n  /* MARK: Alert */\n  .cn-alert {\n    @apply grid gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-alert-variant-default {\n    @apply bg-card text-card-foreground;\n  }\n\n  .cn-alert-variant-destructive {\n    @apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current;\n  }\n\n  .cn-alert-title {\n    @apply font-medium group-has-[>svg]/alert:col-start-2;\n  }\n\n  .cn-alert-description {\n    @apply text-muted-foreground text-xs/relaxed text-balance md:text-pretty [&_p:not(:last-child)]:mb-2;\n  }\n\n  .cn-alert-action {\n    @apply absolute top-[calc(--spacing(1.25))] right-[calc(--spacing(1.25))];\n  }\n\n  /* MARK: Alert Dialog */\n  .cn-alert-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-alert-dialog-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-4 rounded-none p-4 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm;\n  }\n\n  .cn-alert-dialog-header {\n    @apply grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr];\n  }\n\n  .cn-alert-dialog-media {\n    @apply bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-none sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6;\n  }\n\n  .cn-alert-dialog-title {\n    @apply text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2;\n  }\n\n  .cn-alert-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-xs/relaxed text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Avatar */\n  .cn-avatar {\n    @apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;\n  }\n\n  .cn-avatar-fallback {\n    @apply bg-muted text-muted-foreground rounded-full;\n  }\n\n  .cn-avatar-image {\n    @apply rounded-full;\n  }\n\n  .cn-avatar-badge {\n    @apply bg-primary text-primary-foreground ring-background;\n  }\n\n  .cn-avatar-group-count {\n    @apply bg-muted text-muted-foreground size-8 rounded-full text-xs group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;\n  }\n\n  /* MARK: Badge */\n  .cn-badge {\n    @apply h-5 gap-1 rounded-none border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3!;\n  }\n\n  .cn-badge-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-badge-variant-secondary {\n    @apply bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80;\n  }\n\n  .cn-badge-variant-outline {\n    @apply border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground;\n  }\n\n  .cn-badge-variant-destructive {\n    @apply bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20;\n  }\n\n  .cn-badge-variant-ghost {\n    @apply hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50;\n  }\n\n  .cn-badge-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  /* MARK: Breadcrumb */\n  .cn-breadcrumb-list {\n    @apply text-muted-foreground gap-1.5 text-xs;\n  }\n\n  .cn-breadcrumb-item {\n    @apply gap-1;\n  }\n\n  .cn-breadcrumb-link {\n    @apply hover:text-foreground transition-colors;\n  }\n\n  .cn-breadcrumb-page {\n    @apply text-foreground font-normal;\n  }\n\n  .cn-breadcrumb-separator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  .cn-breadcrumb-ellipsis {\n    @apply size-5 [&>svg]:size-4;\n  }\n\n  /* MARK: Button */\n  .cn-button {\n    @apply focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-none border border-transparent bg-clip-padding text-xs font-medium focus-visible:ring-1 aria-invalid:ring-1 active:translate-y-px [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-button-variant-outline {\n    @apply border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-secondary {\n    @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;\n  }\n\n  .cn-button-variant-ghost {\n    @apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-destructive {\n    @apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;\n  }\n\n  .cn-button-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  .cn-button-size-xs {\n    @apply h-6 gap-1 rounded-none px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-sm {\n    @apply h-7 gap-1 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-button-size-default {\n    @apply h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;\n  }\n\n  .cn-button-size-lg {\n    @apply h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3;\n  }\n\n  .cn-button-size-icon-xs {\n    @apply size-6 rounded-none [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-icon-sm {\n    @apply size-7 rounded-none;\n  }\n\n  .cn-button-size-icon {\n    @apply size-8;\n  }\n\n  .cn-button-size-icon-lg {\n    @apply size-9;\n  }\n\n  /* MARK: Button Group */\n  .cn-button-group {\n    @apply rounded-none has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-none;\n  }\n\n  .cn-button-group-text {\n    @apply bg-muted gap-2 rounded-none border px-2.5 text-xs font-medium [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-group-separator {\n    @apply bg-input;\n  }\n\n  /* MARK: Calendar */\n  .cn-calendar {\n    @apply p-2 [--cell-size:--spacing(7)];\n  }\n\n  .cn-calendar-dropdown-root {\n    @apply has-focus:border-ring border-input has-focus:ring-ring/50 rounded-none border has-focus:ring-1;\n  }\n\n  .cn-calendar-caption-label {\n    @apply h-6 rounded-none pr-1 pl-1.5;\n  }\n\n  /* MARK: Card */\n  .cn-card {\n    @apply ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-none py-4 text-xs/relaxed ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none;\n  }\n\n  .cn-card-header {\n    @apply gap-1 rounded-none px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3;\n  }\n\n  .cn-card-title {\n    @apply text-sm font-medium group-data-[size=sm]/card:text-sm;\n  }\n\n  .cn-card-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  .cn-card-content {\n    @apply px-4 group-data-[size=sm]/card:px-3;\n  }\n\n  .cn-card-footer {\n    @apply rounded-none border-t p-4 group-data-[size=sm]/card:p-3;\n  }\n\n  /* MARK: Chart */\n  .cn-chart-tooltip {\n    @apply border-border/50 bg-background gap-1.5 rounded-none border px-2.5 py-1.5 text-xs shadow-xl;\n  }\n\n  /* MARK: Checkbox */\n  .cn-checkbox {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-none border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-1 aria-invalid:ring-1;\n  }\n\n  .cn-checkbox-indicator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  /* MARK: Combobox */\n  .cn-combobox-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:border-input/30 max-h-72 min-w-36 overflow-hidden rounded-none shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none;\n  }\n\n  .cn-combobox-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-combobox-label {\n    @apply text-muted-foreground px-2 py-2 text-xs;\n  }\n\n  .cn-combobox-item {\n    @apply data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-combobox-empty {\n    @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-xs group-data-empty/combobox-content:flex;\n  }\n\n  .cn-combobox-list {\n    @apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto data-empty:p-0;\n  }\n\n  .cn-combobox-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-combobox-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-combobox-trigger {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-combobox-chips {\n    @apply dark:bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/50 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive dark:has-aria-invalid:border-destructive/50 flex min-h-8 flex-wrap items-center gap-1 rounded-none border bg-transparent bg-clip-padding px-2.5 py-1 text-xs transition-colors focus-within:ring-1 has-aria-invalid:ring-1 has-data-[slot=combobox-chip]:px-1;\n  }\n\n  .cn-combobox-chip {\n    @apply bg-muted text-foreground flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-none px-1.5 text-xs font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pr-0;\n  }\n\n  .cn-combobox-chip-remove {\n    @apply -ml-1 opacity-50 hover:opacity-100;\n  }\n\n  /* MARK: Command */\n  .cn-command {\n    @apply bg-popover text-popover-foreground rounded-none;\n  }\n\n  .cn-command-dialog {\n    @apply rounded-none;\n  }\n\n  .cn-command-input-wrapper {\n    @apply border-b pb-0;\n  }\n\n  .cn-command-input-group {\n    @apply bg-input/30 border-input/30 h-8 border-none shadow-none! *:data-[slot=input-group-addon]:pl-2!;\n  }\n\n  .cn-command-input-icon {\n    @apply size-4 shrink-0 opacity-50;\n  }\n\n  .cn-command-input {\n    @apply w-full text-xs;\n  }\n\n  .cn-command-list {\n    @apply no-scrollbar max-h-72 scroll-py-0 outline-none;\n  }\n\n  .cn-command-empty {\n    @apply py-6 text-center text-xs;\n  }\n\n  .cn-command-group {\n    @apply text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs;\n  }\n\n  .cn-command-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-command-item {\n    @apply data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none in-data-[slot=dialog-content]:rounded-none! [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-command-shortcut {\n    @apply text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest;\n  }\n\n  /* MARK: Context Menu */\n  .cn-context-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-none shadow-md ring-1 duration-100;\n  }\n\n  .cn-context-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-context-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-item-indicator {\n    @apply absolute right-2;\n  }\n\n  .cn-context-menu-label {\n    @apply text-muted-foreground px-2 py-2 text-xs data-inset:pl-7;\n  }\n\n  .cn-context-menu-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-context-menu-shortcut {\n    @apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-context-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-popover text-popover-foreground min-w-32 rounded-none border shadow-lg duration-100;\n  }\n\n  .cn-context-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Dialog */\n  .cn-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-dialog-content {\n    @apply bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-none p-4 text-xs/relaxed ring-1 duration-100 sm:max-w-sm;\n  }\n\n  .cn-dialog-close {\n    @apply absolute top-2 right-2;\n  }\n\n  .cn-dialog-header {\n    @apply gap-1 text-left;\n  }\n\n  .cn-dialog-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-xs/relaxed *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Drawer */\n  .cn-drawer-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-drawer-content {\n    @apply bg-background flex h-auto flex-col text-xs/relaxed data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-none data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-none data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-none data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-none data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm;\n  }\n\n  .cn-drawer-handle {\n    @apply bg-muted mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-none group-data-[vaul-drawer-direction=bottom]/drawer-content:block;\n  }\n\n  .cn-drawer-header {\n    @apply gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left;\n  }\n\n  .cn-drawer-title {\n    @apply text-foreground text-sm font-medium;\n  }\n\n  .cn-drawer-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  .cn-drawer-footer {\n    @apply gap-2 p-4;\n  }\n\n  /* MARK: Dropdown Menu */\n  .cn-dropdown-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-none shadow-md ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-dropdown-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-item-indicator {\n    @apply absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-dropdown-menu-label {\n    @apply text-muted-foreground px-2 py-2 text-xs data-inset:pl-7;\n  }\n\n  .cn-dropdown-menu-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-dropdown-menu-shortcut {\n    @apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-dropdown-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-none shadow-lg ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Empty */\n  .cn-empty {\n    @apply gap-4 rounded-none border-dashed p-6;\n  }\n\n  .cn-empty-header {\n    @apply gap-2;\n  }\n\n  .cn-empty-media {\n    @apply mb-2;\n  }\n\n  .cn-empty-media-default {\n    @apply bg-transparent;\n  }\n\n  .cn-empty-media-icon {\n    @apply bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-none [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-empty-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-empty-description {\n    @apply text-xs/relaxed;\n  }\n\n  .cn-empty-content {\n    @apply gap-2.5 text-xs;\n  }\n\n  /* MARK: Field */\n  .cn-field-set {\n    @apply gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3;\n  }\n\n  .cn-field-legend {\n    @apply mb-2.5 font-medium data-[variant=label]:text-xs data-[variant=legend]:text-sm;\n  }\n\n  .cn-field-group {\n    @apply gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4;\n  }\n\n  .cn-field {\n    @apply data-[invalid=true]:text-destructive gap-2;\n  }\n\n  .cn-field-content {\n    @apply gap-0.5;\n  }\n\n  .cn-field-label {\n    @apply has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-2;\n  }\n\n  .cn-field-title {\n    @apply gap-2 text-xs/relaxed group-data-[disabled=true]/field:opacity-50;\n  }\n\n  .cn-field-description {\n    @apply text-muted-foreground text-left text-xs/relaxed [[data-variant=legend]+&]:-mt-1.5;\n  }\n\n  .cn-field-separator {\n    @apply -my-2 h-5 text-xs group-data-[variant=outline]/field-group:-mb-2;\n  }\n\n  .cn-field-separator-content {\n    @apply text-muted-foreground px-2;\n  }\n\n  .cn-field-error {\n    @apply text-destructive text-xs;\n  }\n\n  /* MARK: Hover Card */\n  .cn-hover-card-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-none p-2.5 text-xs/relaxed shadow-md ring-1 duration-100;\n  }\n\n  .cn-hover-card-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  /* MARK: Input */\n  .cn-input {\n    @apply dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-none border bg-transparent px-2.5 py-1 text-xs transition-colors file:h-6 file:text-xs file:font-medium focus-visible:ring-1 aria-invalid:ring-1 md:text-xs;\n  }\n\n  /* MARK: Input OTP */\n  .cn-input-otp {\n    @apply gap-2;\n  }\n\n  .cn-input-otp-group {\n    @apply has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-none has-aria-invalid:ring-1;\n  }\n\n  .cn-input-otp-slot {\n    @apply dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-8 border-y border-r text-xs transition-all outline-none first:rounded-none first:border-l last:rounded-none data-[active=true]:ring-1;\n  }\n\n  .cn-input-otp-caret-line {\n    @apply animate-caret-blink bg-foreground h-4 w-px duration-1000;\n  }\n\n  .cn-input-otp-separator {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Item */\n  .cn-item {\n    @apply [a]:hover:bg-muted rounded-none border text-xs;\n  }\n\n  .cn-item-variant-default {\n    @apply border-transparent;\n  }\n\n  .cn-item-variant-outline {\n    @apply border-border;\n  }\n\n  .cn-item-variant-muted {\n    @apply bg-muted/50 border-transparent;\n  }\n\n  .cn-item-size-default {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-sm {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-xs {\n    @apply gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0;\n  }\n\n  .cn-item-media {\n    @apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;\n  }\n\n  .cn-item-media-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-item-media-variant-icon {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-item-media-variant-image {\n    @apply size-10 overflow-hidden rounded-none group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover;\n  }\n\n  .cn-item-content {\n    @apply gap-1 group-data-[size=xs]/item:gap-0;\n  }\n\n  .cn-item-title {\n    @apply gap-2 text-xs font-medium underline-offset-4;\n  }\n\n  .cn-item-description {\n    @apply text-muted-foreground text-left text-xs/relaxed group-data-[size=xs]/item:text-xs/relaxed;\n  }\n\n  .cn-item-actions {\n    @apply gap-2;\n  }\n\n  .cn-item-header {\n    @apply gap-2;\n  }\n\n  .cn-item-footer {\n    @apply gap-2;\n  }\n\n  .cn-item-group {\n    @apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;\n  }\n\n  .cn-item-separator {\n    @apply my-2;\n  }\n\n  /* MARK: Kbd */\n  .cn-kbd {\n    @apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-none px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-kbd-group {\n    @apply gap-1;\n  }\n\n  /* MARK: Label */\n  .cn-label {\n    @apply gap-2 text-xs leading-none group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50;\n  }\n\n  /* MARK: Menubar */\n  .cn-menubar {\n    @apply h-8 gap-0.5 rounded-none border p-1;\n  }\n\n  .cn-menubar-trigger {\n    @apply hover:bg-muted aria-expanded:bg-muted rounded-none px-1.5 py-[calc(--spacing(0.8))] text-xs font-medium;\n  }\n\n  .cn-menubar-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;\n  }\n\n  .cn-menubar-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-menubar-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-28 pl-8 text-xs data-inset:pl-8;\n  }\n\n  .cn-menubar-checkbox-item-indicator {\n    @apply left-1.5 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-2 pl-8 text-xs data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item-indicator {\n    @apply left-1.5 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-label {\n    @apply px-2 py-2 text-xs data-inset:pl-8;\n  }\n\n  .cn-menubar-separator {\n    @apply bg-border;\n  }\n\n  .cn-menubar-shortcut {\n    @apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest;\n  }\n\n  .cn-menubar-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-sub-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-none shadow-lg ring-1 duration-100;\n  }\n\n  /* MARK: Navigation Menu */\n  .cn-navigation-menu {\n    @apply max-w-max;\n  }\n\n  .cn-navigation-menu-list {\n    @apply gap-0;\n  }\n\n  .cn-navigation-menu-trigger {\n    @apply bg-background hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-none px-2.5 py-1.5 text-xs font-medium transition-all focus-visible:ring-1 focus-visible:outline-1 disabled:opacity-50;\n  }\n\n  .cn-navigation-menu-link {\n    @apply data-active:focus:bg-muted data-active:hover:bg-muted data-active:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-center gap-2 rounded-none p-2 text-xs transition-all outline-none focus-visible:ring-1 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-none [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-navigation-menu-trigger-icon {\n    @apply relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;\n  }\n\n  .cn-navigation-menu-content {\n    @apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-none group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;\n  }\n\n  .cn-navigation-menu-viewport {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 ring-foreground/10 rounded-none shadow ring-1 duration-100;\n  }\n\n  .cn-navigation-menu-indicator {\n    @apply data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in;\n  }\n\n  .cn-navigation-menu-indicator-arrow {\n    @apply bg-border rounded-none shadow-md;\n  }\n\n  .cn-navigation-menu-positioner {\n    @apply transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0;\n  }\n\n  .cn-navigation-menu-popup {\n    @apply bg-popover text-popover-foreground ring-foreground/10 rounded-none shadow ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;\n  }\n\n  /* MARK: Native Select */\n  .cn-native-select {\n    @apply border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-none border bg-transparent py-1 pr-8 pl-2.5 text-xs transition-colors select-none focus-visible:ring-1 aria-invalid:ring-1 data-[size=sm]:h-7 data-[size=sm]:rounded-none data-[size=sm]:py-0.5;\n  }\n\n  .cn-native-select-icon {\n    @apply text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2;\n  }\n\n  /* MARK: Pagination */\n  .cn-pagination-content {\n    @apply gap-0.5;\n  }\n\n  .cn-pagination-ellipsis {\n    @apply size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-pagination-previous {\n    @apply pl-1.5!;\n  }\n\n  .cn-pagination-next {\n    @apply pr-1.5!;\n  }\n\n  /* MARK: Popover */\n  .cn-popover-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-2.5 rounded-none p-2.5 text-xs shadow-md ring-1 duration-100;\n  }\n\n  .cn-popover-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-popover-header {\n    @apply flex flex-col gap-1 text-xs;\n  }\n\n  .cn-popover-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-popover-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  /* MARK: Progress */\n  .cn-progress {\n    @apply bg-muted h-1 rounded-none;\n  }\n\n  .cn-progress-track {\n    @apply bg-muted h-1 rounded-none;\n  }\n\n  .cn-progress-indicator {\n    @apply bg-primary;\n  }\n\n  .cn-progress-label {\n    @apply text-xs;\n  }\n\n  .cn-progress-value {\n    @apply text-muted-foreground ml-auto text-xs tabular-nums;\n  }\n\n  /* MARK: Radio Group */\n  .cn-radio-group {\n    @apply grid gap-2;\n  }\n\n  .cn-radio-group-item {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-3 aria-invalid:ring-3;\n  }\n\n  .cn-radio-group-indicator {\n    @apply flex size-4 items-center justify-center;\n  }\n\n  .cn-radio-group-indicator-icon {\n    @apply bg-primary-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full;\n  }\n\n  /* MARK: Resizable */\n  .cn-resizable-handle-icon {\n    @apply bg-border h-6 w-1 rounded-none;\n  }\n\n  /* MARK: Scroll Area */\n  .cn-scroll-area-scrollbar {\n    @apply data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent;\n  }\n\n  .cn-scroll-area-thumb {\n    @apply rounded-none;\n  }\n\n  /* MARK: Select */\n  .cn-select-trigger {\n    @apply border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-none border bg-transparent py-2 pr-2 pl-2.5 text-xs transition-colors select-none focus-visible:ring-1 aria-invalid:ring-1 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-none *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-value {\n    @apply flex flex-1 text-left;\n  }\n\n  .cn-select-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-select-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;\n  }\n\n  .cn-select-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-select-label {\n    @apply text-muted-foreground px-2 py-2 text-xs;\n  }\n\n  .cn-select-item {\n    @apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;\n  }\n\n  .cn-select-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-select-group {\n    @apply scroll-my-1;\n  }\n\n  .cn-select-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-select-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-select-scroll-up-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-scroll-down-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Separator */\n  .cn-separator {\n    @apply bg-border shrink-0;\n  }\n\n  .cn-separator-horizontal {\n    @apply h-px w-full;\n  }\n\n  .cn-separator-vertical {\n    @apply h-full w-px;\n  }\n\n  /* MARK: Sheet */\n  .cn-sheet-overlay {\n    @apply bg-black/10 text-xs/relaxed supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-sheet-content {\n    @apply bg-background fixed z-50 flex flex-col bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm;\n  }\n\n  .cn-sheet-close {\n    @apply absolute top-3 right-3;\n  }\n\n  .cn-sheet-header {\n    @apply gap-0.5 p-4;\n  }\n\n  .cn-sheet-footer {\n    @apply gap-2 p-4;\n  }\n\n  .cn-sheet-title {\n    @apply text-foreground text-sm font-medium;\n  }\n\n  .cn-sheet-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  /* MARK: Sidebar */\n  .cn-sidebar-gap {\n    @apply transition-[width] duration-200 ease-linear;\n  }\n\n  .cn-sidebar-inner {\n    @apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-none group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;\n  }\n\n  .cn-sidebar-rail {\n    @apply hover:after:bg-sidebar-border;\n  }\n\n  .cn-sidebar-inset {\n    @apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-none md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2;\n  }\n\n  .cn-sidebar-input {\n    @apply bg-background h-8 w-full shadow-none;\n  }\n\n  .cn-sidebar-header {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-content {\n    @apply no-scrollbar gap-0;\n  }\n\n  .cn-sidebar-footer {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-separator {\n    @apply bg-sidebar-border mx-2;\n  }\n\n  .cn-sidebar-group {\n    @apply p-2;\n  }\n\n  .cn-sidebar-menu {\n    @apply gap-0;\n  }\n\n  .cn-sidebar-group-content {\n    @apply text-xs;\n  }\n\n  .cn-sidebar-group-label {\n    @apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-none px-2 text-xs transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-group-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-none p-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-button {\n    @apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-none p-2 text-left text-xs transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium;\n  }\n\n  .cn-sidebar-menu-button-variant-default {\n    @apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;\n  }\n\n  .cn-sidebar-menu-button-variant-outline {\n    @apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))];\n  }\n\n  .cn-sidebar-menu-button-size-default {\n    @apply h-8 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-sm {\n    @apply h-7 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-lg {\n    @apply h-12 text-xs group-data-[collapsible=icon]:p-0!;\n  }\n\n  .cn-sidebar-menu-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-none p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-badge {\n    @apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-none px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;\n  }\n\n  .cn-sidebar-menu-skeleton {\n    @apply h-8 gap-2 rounded-none px-2;\n  }\n\n  .cn-sidebar-menu-skeleton-icon {\n    @apply size-4 rounded-none;\n  }\n\n  .cn-sidebar-menu-skeleton-text {\n    @apply h-4;\n  }\n\n  .cn-sidebar-menu-sub {\n    @apply border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;\n  }\n\n  .cn-sidebar-menu-sub-button {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-none px-2 focus-visible:ring-2 data-[size=md]:text-xs data-[size=sm]:text-xs [&>svg]:size-4;\n  }\n\n  /* MARK: Skeleton */\n  .cn-skeleton {\n    @apply bg-muted rounded-none;\n  }\n\n  /* MARK: Slider */\n  .cn-slider {\n    @apply data-vertical:min-h-40;\n  }\n\n  .cn-slider-track {\n    @apply bg-muted rounded-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1;\n  }\n\n  .cn-slider-range {\n    @apply bg-primary;\n  }\n\n  .cn-slider-thumb {\n    @apply border-ring ring-ring/50 relative size-3 rounded-none border bg-white transition-[color,box-shadow] after:absolute after:-inset-2 hover:ring-1 focus-visible:ring-1 focus-visible:outline-hidden active:ring-1;\n  }\n\n  /* MARK: Sonner */\n  .cn-toast {\n    @apply rounded-none;\n  }\n\n  /* MARK: Switch */\n  .cn-switch {\n    @apply data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-1 aria-invalid:ring-1 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px];\n  }\n\n  .cn-switch-thumb {\n    @apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0;\n  }\n\n  /* MARK: Table */\n  .cn-table-container {\n    @apply relative w-full overflow-x-auto;\n  }\n\n  .cn-table {\n    @apply w-full caption-bottom text-xs;\n  }\n\n  .cn-table-header {\n    @apply [&_tr]:border-b;\n  }\n\n  .cn-table-body {\n    @apply [&_tr:last-child]:border-0;\n  }\n\n  .cn-table-footer {\n    @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;\n  }\n\n  .cn-table-row {\n    @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;\n  }\n\n  .cn-table-head {\n    @apply text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-cell {\n    @apply p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-caption {\n    @apply text-muted-foreground mt-4 text-xs;\n  }\n\n  /* MARK: Tabs */\n  .cn-tabs {\n    @apply gap-2;\n  }\n\n  .cn-tabs-list {\n    @apply rounded-none p-[3px] group-data-horizontal/tabs:h-8 data-[variant=line]:rounded-none;\n  }\n\n  .cn-tabs-trigger {\n    @apply gap-1.5 rounded-none border border-transparent px-1.5 py-0.5 text-xs font-medium group-data-vertical/tabs:py-[calc(--spacing(1.25))] [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-tabs-content {\n    @apply text-xs/relaxed;\n  }\n\n  /* MARK: Textarea */\n  .cn-textarea {\n    @apply border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-none border bg-transparent px-2.5 py-2 text-xs transition-colors focus-visible:ring-1 aria-invalid:ring-1 md:text-xs;\n  }\n\n  /* MARK: Toggle */\n  .cn-toggle {\n    @apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-muted gap-1 rounded-none text-xs font-medium transition-all [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-toggle-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-toggle-variant-outline {\n    @apply border-input hover:bg-muted border bg-transparent;\n  }\n\n  .cn-toggle-size-default {\n    @apply h-8 min-w-8 px-2;\n  }\n\n  .cn-toggle-size-sm {\n    @apply h-7 min-w-7 rounded-none px-1.5;\n  }\n\n  .cn-toggle-size-lg {\n    @apply h-9 min-w-9 px-2.5;\n  }\n\n  /* MARK: Toggle Group */\n  .cn-toggle-group {\n    @apply rounded-none data-[size=sm]:rounded-none;\n  }\n\n  .cn-toggle-group-item {\n    @apply group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-none group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-none;\n  }\n\n  /* MARK: Tooltip */\n  .cn-tooltip-content {\n    @apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-none px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-none;\n  }\n\n  .cn-tooltip-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-tooltip-arrow {\n    @apply size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-none;\n  }\n\n  .cn-tooltip-arrow-logical {\n    @apply data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2;\n  }\n\n  /* MARK: Input Group */\n  .cn-input-group {\n    @apply border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-none border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot][aria-invalid=true]]:ring-1 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;\n  }\n\n  .cn-input-group-addon {\n    @apply text-muted-foreground h-auto gap-2 py-1.5 text-xs font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-none [&>svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-addon-align-inline-start {\n    @apply pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-inline-end {\n    @apply pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-block-start {\n    @apply px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2;\n  }\n\n  .cn-input-group-addon-align-block-end {\n    @apply px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2;\n  }\n\n  .cn-input-group-button {\n    @apply gap-2 text-xs;\n  }\n\n  .cn-input-group-button-size-xs {\n    @apply h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-input-group-button-size-icon-xs {\n    @apply size-6 rounded-none p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-button-size-sm {\n    @apply gap-1;\n  }\n\n  .cn-input-group-button-size-icon-sm {\n    @apply size-7 p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-text {\n    @apply text-muted-foreground gap-2 text-xs [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-input {\n    @apply rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent;\n  }\n\n  .cn-input-group-textarea {\n    @apply rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent;\n  }\n\n  /* MARK: Menu Translucent */\n  .cn-menu-translucent {\n    @apply animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/styles/style-maia.css",
    "content": ".style-maia {\n  /* MARK: Accordion */\n  .cn-accordion {\n    @apply overflow-hidden rounded-2xl border;\n  }\n\n  .cn-accordion-item {\n    @apply data-open:bg-muted/50 not-last:border-b;\n  }\n\n  .cn-accordion-trigger {\n    @apply **:data-[slot=accordion-trigger-icon]:text-muted-foreground gap-6 p-4 text-left text-sm font-medium hover:underline **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4;\n  }\n\n  .cn-accordion-content {\n    @apply data-open:animate-accordion-down data-closed:animate-accordion-up px-4 text-sm;\n  }\n\n  .cn-accordion-content-inner {\n    @apply pt-0 pb-4;\n  }\n\n  /* MARK: Alert Dialog */\n  .cn-alert-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-alert-dialog-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/5 gap-6 rounded-4xl p-6 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md;\n  }\n\n  .cn-alert-dialog-header {\n    @apply grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr];\n  }\n\n  .cn-alert-dialog-media {\n    @apply bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-full sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8;\n  }\n\n  .cn-alert-dialog-title {\n    @apply text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2;\n  }\n\n  .cn-alert-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Alert */\n  .cn-alert {\n    @apply grid gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-alert-variant-default {\n    @apply bg-card text-card-foreground;\n  }\n\n  .cn-alert-variant-destructive {\n    @apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current;\n  }\n\n  .cn-alert-title {\n    @apply font-medium group-has-[>svg]/alert:col-start-2;\n  }\n\n  .cn-alert-description {\n    @apply text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4;\n  }\n\n  .cn-alert-action {\n    @apply absolute top-2.5 right-3;\n  }\n\n  /* MARK: Avatar */\n  .cn-avatar {\n    @apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;\n  }\n\n  .cn-avatar-fallback {\n    @apply bg-muted text-muted-foreground rounded-full;\n  }\n\n  .cn-avatar-image {\n    @apply rounded-full;\n  }\n\n  .cn-avatar-badge {\n    @apply bg-primary text-primary-foreground ring-background;\n  }\n\n  .cn-avatar-group-count {\n    @apply bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;\n  }\n\n  /* MARK: Badge */\n  .cn-badge {\n    @apply h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3!;\n  }\n\n  .cn-badge-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-badge-variant-secondary {\n    @apply bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80;\n  }\n\n  .cn-badge-variant-outline {\n    @apply border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30;\n  }\n\n  .cn-badge-variant-destructive {\n    @apply bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20;\n  }\n\n  .cn-badge-variant-ghost {\n    @apply hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50;\n  }\n\n  .cn-badge-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  /* MARK: Breadcrumb */\n  .cn-breadcrumb-list {\n    @apply text-muted-foreground gap-1.5 text-sm sm:gap-2.5;\n  }\n\n  .cn-breadcrumb-item {\n    @apply gap-1.5;\n  }\n\n  .cn-breadcrumb-link {\n    @apply hover:text-foreground transition-colors;\n  }\n\n  .cn-breadcrumb-page {\n    @apply text-foreground font-normal;\n  }\n\n  .cn-breadcrumb-separator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  .cn-breadcrumb-ellipsis {\n    @apply size-5 [&>svg]:size-4;\n  }\n\n  /* MARK: Button */\n  .cn-button {\n    @apply focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] active:translate-y-px [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-variant-default {\n    @apply bg-primary text-primary-foreground hover:bg-primary/80;\n  }\n\n  .cn-button-variant-outline {\n    @apply border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-secondary {\n    @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;\n  }\n\n  .cn-button-variant-ghost {\n    @apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-destructive {\n    @apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;\n  }\n\n  .cn-button-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  .cn-button-size-xs {\n    @apply h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-sm {\n    @apply h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;\n  }\n\n  .cn-button-size-default {\n    @apply h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5;\n  }\n\n  .cn-button-size-lg {\n    @apply h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3;\n  }\n\n  .cn-button-size-icon-xs {\n    @apply size-6 [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-icon-sm {\n    @apply size-8;\n  }\n\n  .cn-button-size-icon {\n    @apply size-9;\n  }\n\n  .cn-button-size-icon-lg {\n    @apply size-10;\n  }\n\n  /* MARK: Button Group */\n  .cn-button-group {\n    @apply has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-4xl;\n  }\n\n  .cn-button-group-orientation-horizontal {\n    @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-4xl!;\n  }\n\n  .cn-button-group-orientation-vertical {\n    @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-4xl!;\n  }\n\n  .cn-button-group-text {\n    @apply bg-muted gap-2 rounded-4xl border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-group-separator {\n    @apply bg-input;\n  }\n\n  /* MARK: Calendar */\n  .cn-calendar {\n    @apply p-3 [--cell-radius:var(--radius-4xl)] [--cell-size:--spacing(8)];\n  }\n\n  .cn-calendar-dropdown-root {\n    @apply has-focus:border-ring border-input has-focus:ring-ring/50 border has-focus:ring-[3px];\n  }\n\n  .cn-calendar-caption-label {\n    @apply h-8 pr-2 pl-3;\n  }\n\n  /* MARK: Card */\n  .cn-card {\n    @apply ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-2xl py-6 text-sm ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl;\n  }\n\n  .cn-card-header {\n    @apply gap-2 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4;\n  }\n\n  .cn-card-title {\n    @apply text-base font-medium;\n  }\n\n  .cn-card-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  .cn-card-content {\n    @apply px-6 group-data-[size=sm]/card:px-4;\n  }\n\n  .cn-card-footer {\n    @apply rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4;\n  }\n\n  /* MARK: Carousel */\n  .cn-carousel-previous {\n    @apply rounded-full;\n  }\n\n  .cn-carousel-next {\n    @apply rounded-full;\n  }\n\n  /* MARK: Chart */\n  .cn-chart-tooltip {\n    @apply border-border/50 bg-background gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl;\n  }\n\n  /* MARK: Checkbox */\n  .cn-checkbox {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[6px] border transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-[3px] aria-invalid:ring-[3px];\n  }\n\n  .cn-checkbox-indicator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  /* MARK: Combobox */\n  .cn-combobox-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 *:data-[slot=input-group]:bg-input/30 max-h-72 min-w-36 overflow-hidden rounded-2xl shadow-2xl ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-9 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:shadow-none;\n  }\n\n  .cn-combobox-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-combobox-label {\n    @apply text-muted-foreground px-3.5 py-2.5 text-xs;\n  }\n\n  .cn-combobox-item {\n    @apply data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-combobox-empty {\n    @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-sm group-data-empty/combobox-content:flex;\n  }\n\n  .cn-combobox-list {\n    @apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0;\n  }\n\n  .cn-combobox-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-combobox-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-combobox-trigger {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-combobox-chips {\n    @apply bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/50 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive dark:has-aria-invalid:border-destructive/50 flex min-h-9 flex-wrap items-center gap-1.5 rounded-4xl border bg-clip-padding px-2.5 py-1.5 text-sm transition-colors focus-within:ring-[3px] has-aria-invalid:ring-[3px] has-data-[slot=combobox-chip]:px-1.5;\n  }\n\n  .cn-combobox-chip {\n    @apply bg-muted-foreground/10 text-foreground flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-4xl px-2 text-xs font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pr-0;\n  }\n\n  .cn-combobox-chip-remove {\n    @apply -ml-1 opacity-50 hover:opacity-100;\n  }\n\n  /* MARK: Command */\n  .cn-command {\n    @apply bg-popover text-popover-foreground rounded-4xl p-1;\n  }\n\n  .cn-command-dialog {\n    @apply rounded-4xl! p-0;\n  }\n\n  .cn-command-input-wrapper {\n    @apply p-1 pb-0;\n  }\n\n  .cn-command-input-group {\n    @apply bg-input/30 h-9;\n  }\n\n  .cn-command-input-icon {\n    @apply size-4 shrink-0 opacity-50;\n  }\n\n  .cn-command-input {\n    @apply w-full text-sm;\n  }\n\n  .cn-command-list {\n    @apply no-scrollbar max-h-72 scroll-py-1 outline-none;\n  }\n\n  .cn-command-empty {\n    @apply py-6 text-center text-sm;\n  }\n\n  .cn-command-group {\n    @apply text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-3 **:[[cmdk-group-heading]]:py-2 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium;\n  }\n\n  .cn-command-separator {\n    @apply bg-border/50 my-1 h-px;\n  }\n\n  .cn-command-item {\n    @apply data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-lg px-3 py-2 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-2xl [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-command-shortcut {\n    @apply text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest;\n  }\n\n  /* MARK: Context Menu */\n  .cn-context-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100;\n  }\n\n  .cn-context-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-context-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-xl py-2 pr-8 pl-3 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-xl py-2 pr-8 pl-3 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-item-indicator {\n    @apply absolute right-2;\n  }\n\n  .cn-context-menu-label {\n    @apply text-muted-foreground px-3 py-2.5 text-xs data-inset:pl-9.5;\n  }\n\n  .cn-context-menu-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-context-menu-shortcut {\n    @apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-context-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground rounded-xl px-3 py-2 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-popover text-popover-foreground min-w-32 rounded-2xl border p-1 shadow-lg duration-100;\n  }\n\n  .cn-context-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Dialog */\n  .cn-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-dialog-content {\n    @apply bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 grid max-w-[calc(100%-2rem)] gap-6 rounded-4xl p-6 text-sm ring-1 duration-100 sm:max-w-md;\n  }\n\n  .cn-dialog-close {\n    @apply absolute top-4 right-4;\n  }\n\n  .cn-dialog-header {\n    @apply gap-2;\n  }\n\n  .cn-dialog-footer {\n    @apply gap-2;\n  }\n\n  .cn-dialog-title {\n    @apply text-base leading-none font-medium;\n  }\n\n  .cn-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Drawer */\n  .cn-drawer-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-drawer-content {\n    @apply before:bg-background before:border-border relative flex h-auto flex-col bg-transparent p-4 text-sm before:absolute before:inset-2 before:-z-10 before:rounded-4xl before:border data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm;\n  }\n\n  .cn-drawer-handle {\n    @apply bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block;\n  }\n\n  .cn-drawer-header {\n    @apply gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left;\n  }\n\n  .cn-drawer-title {\n    @apply text-foreground text-base font-medium;\n  }\n\n  .cn-drawer-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  .cn-drawer-footer {\n    @apply gap-2 p-4;\n  }\n\n  /* MARK: Dropdown Menu */\n  .cn-dropdown-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100 dark:ring-foreground/10;\n  }\n\n  .cn-dropdown-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-dropdown-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-item-indicator {\n    @apply absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-dropdown-menu-label {\n    @apply text-muted-foreground px-3 py-2.5 text-xs data-inset:pl-9.5;\n  }\n\n  .cn-dropdown-menu-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-dropdown-menu-shortcut {\n    @apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-dropdown-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-xl px-3 py-2 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-36 rounded-2xl p-1 shadow-2xl ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Empty */\n  .cn-empty {\n    @apply gap-4 rounded-lg border-dashed p-12;\n  }\n\n  .cn-empty-header {\n    @apply gap-2;\n  }\n\n  .cn-empty-media {\n    @apply mb-2;\n  }\n\n  .cn-empty-media-default {\n    @apply bg-transparent;\n  }\n\n  .cn-empty-media-icon {\n    @apply bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6;\n  }\n\n  .cn-empty-title {\n    @apply text-lg font-medium tracking-tight;\n  }\n\n  .cn-empty-description {\n    @apply text-sm/relaxed;\n  }\n\n  .cn-empty-content {\n    @apply gap-4 text-sm;\n  }\n\n  /* MARK: Field */\n  .cn-field-set {\n    @apply gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3;\n  }\n\n  .cn-field-legend {\n    @apply mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base;\n  }\n\n  .cn-field-group {\n    @apply gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4;\n  }\n\n  .cn-field {\n    @apply data-[invalid=true]:text-destructive gap-3;\n  }\n\n  .cn-field-content {\n    @apply gap-1;\n  }\n\n  .cn-field-label {\n    @apply has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border *:data-[slot=field]:p-4;\n  }\n\n  .cn-field-title {\n    @apply gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50;\n  }\n\n  .cn-field-description {\n    @apply text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5;\n  }\n\n  .cn-field-separator {\n    @apply -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2;\n  }\n\n  .cn-field-separator-content {\n    @apply text-muted-foreground px-2;\n  }\n\n  .cn-field-error {\n    @apply text-destructive text-sm;\n  }\n\n  /* MARK: Hover Card */\n  .cn-hover-card-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground w-72 rounded-2xl p-4 text-sm shadow-2xl ring-1 duration-100;\n  }\n\n  .cn-hover-card-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  /* MARK: Input */\n  .cn-input {\n    @apply bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm;\n  }\n\n  /* MARK: Input OTP */\n  .cn-input-otp {\n    @apply gap-2;\n  }\n\n  .cn-input-otp-group {\n    @apply has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-4xl has-aria-invalid:ring-[3px];\n  }\n\n  .cn-input-otp-slot {\n    @apply bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-9 border-y border-r text-sm transition-all outline-none first:rounded-l-4xl first:border-l last:rounded-r-4xl data-[active=true]:ring-[3px];\n  }\n\n  .cn-input-otp-caret-line {\n    @apply animate-caret-blink bg-foreground h-4 w-px duration-1000;\n  }\n\n  .cn-input-otp-separator {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Item */\n  .cn-item {\n    @apply [a]:hover:bg-muted rounded-2xl border text-sm;\n  }\n\n  .cn-item-variant-default {\n    @apply border-transparent;\n  }\n\n  .cn-item-variant-outline {\n    @apply border-border;\n  }\n\n  .cn-item-variant-muted {\n    @apply bg-muted/50 border-transparent;\n  }\n\n  .cn-item-size-default {\n    @apply gap-3.5 px-4 py-3.5;\n  }\n\n  .cn-item-size-sm {\n    @apply gap-3.5 px-3.5 py-3;\n  }\n\n  .cn-item-size-xs {\n    @apply gap-2.5 px-3 py-2.5 in-data-[slot=dropdown-menu-content]:p-0;\n  }\n\n  .cn-item-media {\n    @apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;\n  }\n\n  .cn-item-media-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-item-media-variant-icon {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-item-media-variant-image {\n    @apply size-10 overflow-hidden rounded-lg group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 group-data-[size=xs]/item:rounded-md [&_img]:size-full [&_img]:object-cover;\n  }\n\n  .cn-item-content {\n    @apply gap-1 group-data-[size=xs]/item:gap-0.5;\n  }\n\n  .cn-item-title {\n    @apply gap-2 text-sm leading-snug font-medium underline-offset-4;\n  }\n\n  .cn-item-description {\n    @apply text-muted-foreground text-left text-sm;\n  }\n\n  .cn-item-actions {\n    @apply gap-2;\n  }\n\n  .cn-item-header {\n    @apply gap-2;\n  }\n\n  .cn-item-footer {\n    @apply gap-2;\n  }\n\n  .cn-item-group {\n    @apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;\n  }\n\n  .cn-item-separator {\n    @apply my-2;\n  }\n\n  /* MARK: Kbd */\n  .cn-kbd {\n    @apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-kbd-group {\n    @apply gap-1;\n  }\n\n  /* MARK: Label */\n  .cn-label {\n    @apply gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50;\n  }\n\n  /* MARK: Menubar */\n  .cn-menubar {\n    @apply h-9 rounded-4xl border p-1;\n  }\n\n  .cn-menubar-trigger {\n    @apply hover:bg-muted aria-expanded:bg-muted rounded-xl px-2 py-0.75 text-sm font-medium;\n  }\n\n  .cn-menubar-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100;\n  }\n\n  .cn-menubar-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-menubar-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm data-disabled:opacity-50 data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-3 pl-9.5 text-sm data-inset:pl-9.5;\n  }\n\n  .cn-menubar-checkbox-item-indicator {\n    @apply left-3 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-3 pl-9.5 text-sm data-disabled:opacity-50 data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item-indicator {\n    @apply left-3 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-label {\n    @apply text-muted-foreground px-3.5 py-2.5 text-xs data-inset:pl-9.5;\n  }\n\n  .cn-menubar-separator {\n    @apply bg-border/50;\n  }\n\n  .cn-menubar-shortcut {\n    @apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest;\n  }\n\n  .cn-menubar-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-xl px-3 py-2 text-sm data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-sub-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-32 rounded-2xl p-1 shadow-2xl ring-1 duration-100;\n  }\n\n  /* MARK: Navigation Menu */\n  .cn-navigation-menu {\n    @apply max-w-max;\n  }\n\n  .cn-navigation-menu-list {\n    @apply gap-0;\n  }\n\n  .cn-navigation-menu-trigger {\n    @apply bg-background hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-2xl px-4.5 py-2.5 text-sm font-medium transition-all focus-visible:ring-[3px] focus-visible:outline-1 disabled:opacity-50;\n  }\n\n  .cn-navigation-menu-trigger-icon {\n    @apply relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;\n  }\n\n  .cn-navigation-menu-content {\n    @apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/5 p-2.5 pr-3 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;\n  }\n\n  .cn-navigation-menu-viewport {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 ring-foreground/5 rounded-2xl shadow-2xl ring-1 duration-100;\n  }\n\n  .cn-navigation-menu-link {\n    @apply data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-center gap-1.5 rounded-xl p-3 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-navigation-menu-indicator {\n    @apply data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in;\n  }\n\n  .cn-navigation-menu-indicator-arrow {\n    @apply bg-border rounded-tl-sm shadow-md;\n  }\n\n  .cn-navigation-menu-positioner {\n    @apply transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0;\n  }\n\n  .cn-navigation-menu-popup {\n    @apply bg-popover text-popover-foreground ring-foreground/5 rounded-2xl shadow ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;\n  }\n\n  /* MARK: Native Select */\n  .cn-native-select {\n    @apply border-input bg-input/30 placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 w-full min-w-0 appearance-none rounded-4xl border py-1 pr-8 pl-3 text-sm transition-colors select-none focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=sm]:h-8;\n  }\n\n  .cn-native-select-icon {\n    @apply text-muted-foreground top-1/2 right-3.5 size-4 -translate-y-1/2;\n  }\n\n  /* MARK: Pagination */\n  .cn-pagination-content {\n    @apply gap-1;\n  }\n\n  .cn-pagination-ellipsis {\n    @apply size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-pagination-previous {\n    @apply pl-2!;\n  }\n\n  .cn-pagination-next {\n    @apply pr-2!;\n  }\n\n  /* MARK: Popover */\n  .cn-popover-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 flex flex-col gap-4 rounded-2xl p-4 text-sm shadow-2xl ring-1 duration-100;\n  }\n\n  .cn-popover-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-popover-header {\n    @apply flex flex-col gap-1 text-sm;\n  }\n\n  .cn-popover-title {\n    @apply text-base font-medium;\n  }\n\n  .cn-popover-description {\n    @apply text-muted-foreground;\n  }\n\n  /* MARK: Progress */\n  .cn-progress {\n    @apply bg-muted h-3 rounded-4xl;\n  }\n\n  .cn-progress-track {\n    @apply bg-muted h-3 rounded-4xl;\n  }\n\n  .cn-progress-indicator {\n    @apply bg-primary;\n  }\n\n  .cn-progress-label {\n    @apply text-sm font-medium;\n  }\n\n  .cn-progress-value {\n    @apply text-muted-foreground ml-auto text-sm tabular-nums;\n  }\n\n  /* MARK: Radio Group */\n  .cn-radio-group {\n    @apply grid gap-3;\n  }\n\n  .cn-radio-group-item {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-3 aria-invalid:ring-3;\n  }\n\n  .cn-radio-group-indicator {\n    @apply flex size-4 items-center justify-center;\n  }\n\n  .cn-radio-group-indicator-icon {\n    @apply bg-primary-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full;\n  }\n\n  /* MARK: Resizable */\n  .cn-resizable-handle-icon {\n    @apply bg-border h-6 w-1 rounded-lg;\n  }\n\n  /* MARK: Scroll Area */\n  .cn-scroll-area-scrollbar {\n    @apply data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent;\n  }\n\n  .cn-scroll-area-thumb {\n    @apply rounded-full;\n  }\n\n  /* MARK: Select */\n  .cn-select-trigger {\n    @apply border-input data-placeholder:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-value {\n    @apply flex flex-1 text-left;\n  }\n\n  .cn-select-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-select-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100;\n  }\n\n  .cn-select-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-select-label {\n    @apply text-muted-foreground px-3 py-2.5 text-xs;\n  }\n\n  .cn-select-item {\n    @apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;\n  }\n\n  .cn-select-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-select-group {\n    @apply scroll-my-1 p-1;\n  }\n\n  .cn-select-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-select-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-select-scroll-up-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-scroll-down-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Separator */\n  .cn-separator {\n    @apply bg-border shrink-0;\n  }\n\n  .cn-separator-horizontal {\n    @apply h-px w-full;\n  }\n\n  .cn-separator-vertical {\n    @apply h-full w-px;\n  }\n\n  /* MARK: Sheet */\n  .cn-sheet-overlay {\n    @apply bg-black/80 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-sheet-content {\n    @apply bg-background fixed z-50 flex flex-col bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm;\n  }\n\n  .cn-sheet-close {\n    @apply absolute top-4 right-4;\n  }\n\n  .cn-sheet-header {\n    @apply gap-1.5 p-6;\n  }\n\n  .cn-sheet-footer {\n    @apply gap-2 p-6;\n  }\n\n  .cn-sheet-title {\n    @apply text-foreground text-base font-medium;\n  }\n\n  .cn-sheet-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  /* MARK: Sidebar */\n  .cn-sidebar-gap {\n    @apply transition-[width] duration-200 ease-linear;\n  }\n\n  .cn-sidebar-inner {\n    @apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;\n  }\n\n  .cn-sidebar-rail {\n    @apply hover:after:bg-sidebar-border;\n  }\n\n  .cn-sidebar-inset {\n    @apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2;\n  }\n\n  .cn-sidebar-input {\n    @apply bg-background h-8 w-full shadow-none;\n  }\n\n  .cn-sidebar-header {\n    @apply gap-2 p-2 [--radius:var(--radius-xl)];\n  }\n\n  .cn-sidebar-content {\n    @apply no-scrollbar gap-2 [--radius:var(--radius-xl)];\n  }\n\n  .cn-sidebar-footer {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-separator {\n    @apply bg-sidebar-border mx-2;\n  }\n\n  .cn-sidebar-group {\n    @apply p-2;\n  }\n\n  .cn-sidebar-menu {\n    @apply gap-1;\n  }\n\n  .cn-sidebar-group-content {\n    @apply text-sm;\n  }\n\n  .cn-sidebar-group-label {\n    @apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-group-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-button {\n    @apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-lg px-3 py-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium;\n  }\n\n  .cn-sidebar-menu-button-variant-default {\n    @apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;\n  }\n\n  .cn-sidebar-menu-button-variant-outline {\n    @apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))];\n  }\n\n  .cn-sidebar-menu-button-size-default {\n    @apply h-9 text-sm;\n  }\n\n  .cn-sidebar-menu-button-size-sm {\n    @apply h-8 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-lg {\n    @apply h-14 px-3 text-sm group-data-[collapsible=icon]:p-0!;\n  }\n\n  .cn-sidebar-menu-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-md p-0 peer-data-[size=default]/menu-button:top-2 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-badge {\n    @apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;\n  }\n\n  .cn-sidebar-menu-skeleton {\n    @apply h-8 gap-2 rounded-md px-2;\n  }\n\n  .cn-sidebar-menu-skeleton-icon {\n    @apply size-4 rounded-md;\n  }\n\n  .cn-sidebar-menu-skeleton-text {\n    @apply h-4;\n  }\n\n  .cn-sidebar-menu-sub {\n    @apply border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;\n  }\n\n  .cn-sidebar-menu-sub-button {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4;\n  }\n\n  /* MARK: Skeleton */\n  .cn-skeleton {\n    @apply bg-muted rounded-xl;\n  }\n\n  /* MARK: Slider */\n  .cn-slider {\n    @apply data-vertical:min-h-40;\n  }\n\n  .cn-slider-track {\n    @apply bg-muted rounded-4xl data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3;\n  }\n\n  .cn-slider-range {\n    @apply bg-primary;\n  }\n\n  .cn-slider-thumb {\n    @apply border-primary ring-ring/50 size-4 rounded-4xl border bg-white shadow-sm transition-colors hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden;\n  }\n\n  /* MARK: Sonner */\n  .cn-toast {\n    @apply rounded-2xl;\n  }\n\n  /* MARK: Switch */\n  .cn-switch {\n    @apply data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px];\n  }\n\n  .cn-switch-thumb {\n    @apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0;\n  }\n\n  /* MARK: Table */\n  .cn-table-container {\n    @apply relative w-full overflow-x-auto;\n  }\n\n  .cn-table {\n    @apply w-full caption-bottom text-sm;\n  }\n\n  .cn-table-header {\n    @apply [&_tr]:border-b;\n  }\n\n  .cn-table-body {\n    @apply [&_tr:last-child]:border-0;\n  }\n\n  .cn-table-footer {\n    @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;\n  }\n\n  .cn-table-row {\n    @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;\n  }\n\n  .cn-table-head {\n    @apply text-foreground h-12 px-3 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-cell {\n    @apply p-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-caption {\n    @apply text-muted-foreground mt-4 text-sm;\n  }\n\n  /* MARK: Tabs */\n  .cn-tabs {\n    @apply gap-2;\n  }\n\n  .cn-tabs-list {\n    @apply rounded-4xl p-[3px] group-data-horizontal/tabs:h-9 group-data-vertical/tabs:rounded-2xl data-[variant=line]:rounded-none;\n  }\n\n  .cn-tabs-trigger {\n    @apply gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium group-data-vertical/tabs:px-2.5 group-data-vertical/tabs:py-1.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-tabs-content {\n    @apply text-sm;\n  }\n\n  /* MARK: Textarea */\n  .cn-textarea {\n    @apply border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm;\n  }\n\n  /* MARK: Toggle */\n  .cn-toggle {\n    @apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive gap-1 rounded-4xl text-sm font-medium transition-colors [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-toggle-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-toggle-variant-outline {\n    @apply border-input hover:bg-muted border bg-transparent;\n  }\n\n  .cn-toggle-size-default {\n    @apply h-9 min-w-9 rounded-[min(var(--radius-2xl),12px)] px-2.5;\n  }\n\n  .cn-toggle-size-sm {\n    @apply h-8 min-w-8 px-3;\n  }\n\n  .cn-toggle-size-lg {\n    @apply h-10 min-w-10 px-2.5;\n  }\n\n  /* MARK: Toggle Group */\n  .cn-toggle-group {\n    @apply data-[spacing=0]:data-[variant=outline]:rounded-4xl;\n  }\n\n  .cn-toggle-group-item {\n    @apply data-[state=on]:bg-muted group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-3 group-data-[spacing=0]/toggle-group:shadow-none group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-4xl group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-xl group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-4xl group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-xl;\n  }\n\n  /* MARK: Tooltip */\n  .cn-tooltip-content {\n    @apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-2xl px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-4xl;\n  }\n\n  .cn-tooltip-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-tooltip-arrow {\n    @apply size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] data-[side=left]:translate-x-[-1.5px] data-[side=right]:translate-x-[1.5px];\n  }\n\n  .cn-tooltip-arrow-logical {\n    @apply data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:translate-x-[1.5px] data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:translate-x-[-1.5px] data-[side=inline-start]:-translate-y-1/2;\n  }\n\n  /* MARK: Input Group */\n  .cn-input-group {\n    @apply border-input bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-4xl border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-2xl has-data-[align=block-start]:rounded-2xl has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[textarea]:rounded-xl has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;\n  }\n\n  .cn-input-group-addon {\n    @apply text-muted-foreground **:data-[slot=kbd]:bg-muted-foreground/10 h-auto gap-2 py-2 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-4xl **:data-[slot=kbd]:px-1.5 [&>svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-addon-align-inline-start {\n    @apply pl-3 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-inline-end {\n    @apply pr-3 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-block-start {\n    @apply px-3 pt-3 group-has-[>input]/input-group:pt-3 [.border-b]:pb-3;\n  }\n\n  .cn-input-group-addon-align-block-end {\n    @apply px-3 pb-3 group-has-[>input]/input-group:pb-3 [.border-t]:pt-3;\n  }\n\n  .cn-input-group-button {\n    @apply gap-2 rounded-4xl text-sm;\n  }\n\n  .cn-input-group-button-size-xs {\n    @apply h-6 gap-1 px-1.5 [&>svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-input-group-button-size-icon-xs {\n    @apply size-6 p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-button-size-icon-sm {\n    @apply size-8 p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-text {\n    @apply text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-input {\n    @apply rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;\n  }\n\n  .cn-input-group-textarea {\n    @apply rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;\n  }\n\n  /* MARK: Menu Translucent */\n  .cn-menu-translucent {\n    @apply animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!;\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/styles/style-mira.css",
    "content": ".style-mira {\n  /* MARK: Accordion */\n  .cn-accordion {\n    @apply overflow-hidden rounded-md border;\n  }\n\n  .cn-accordion-item {\n    @apply data-open:bg-muted/50 not-last:border-b;\n  }\n\n  .cn-accordion-trigger {\n    @apply **:data-[slot=accordion-trigger-icon]:text-muted-foreground gap-6 p-2 text-left text-xs/relaxed font-medium hover:underline **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4;\n  }\n\n  .cn-accordion-content {\n    @apply data-open:animate-accordion-down data-closed:animate-accordion-up px-2 text-xs/relaxed;\n  }\n\n  .cn-accordion-content-inner {\n    @apply pt-0 pb-4;\n  }\n\n  /* MARK: Alert Dialog */\n  .cn-alert-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-alert-dialog-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-3 rounded-xl p-4 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-64 data-[size=default]:sm:max-w-sm;\n  }\n\n  .cn-alert-dialog-header {\n    @apply grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr];\n  }\n\n  .cn-alert-dialog-media {\n    @apply bg-muted mb-2 inline-flex size-8 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-alert-dialog-title {\n    @apply text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2;\n  }\n\n  .cn-alert-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-xs/relaxed text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Alert */\n  .cn-alert {\n    @apply grid gap-0.5 rounded-lg border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-alert-variant-default {\n    @apply bg-card text-card-foreground;\n  }\n\n  .cn-alert-variant-destructive {\n    @apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current;\n  }\n\n  .cn-alert-title {\n    @apply font-medium group-has-[>svg]/alert:col-start-2;\n  }\n\n  .cn-alert-description {\n    @apply text-muted-foreground text-xs/relaxed text-balance md:text-pretty [&_p:not(:last-child)]:mb-4;\n  }\n\n  .cn-alert-action {\n    @apply absolute top-1.5 right-2;\n  }\n\n  /* MARK: Avatar */\n  .cn-avatar {\n    @apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;\n  }\n\n  .cn-avatar-fallback {\n    @apply bg-muted text-muted-foreground rounded-full;\n  }\n\n  .cn-avatar-image {\n    @apply rounded-full;\n  }\n\n  .cn-avatar-badge {\n    @apply bg-primary text-primary-foreground ring-background;\n  }\n\n  .cn-avatar-group-count {\n    @apply bg-muted text-muted-foreground size-8 rounded-full text-xs/relaxed group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;\n  }\n\n  /* MARK: Badge */\n  .cn-badge {\n    @apply h-5 gap-1 rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-2.5!;\n  }\n\n  .cn-badge-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-badge-variant-secondary {\n    @apply bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80;\n  }\n\n  .cn-badge-variant-outline {\n    @apply border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/20 dark:bg-input/30;\n  }\n\n  .cn-badge-variant-destructive {\n    @apply bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20;\n  }\n\n  .cn-badge-variant-ghost {\n    @apply hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50;\n  }\n\n  .cn-badge-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  /* MARK: Breadcrumb */\n  .cn-breadcrumb-list {\n    @apply text-muted-foreground gap-1.5 text-xs/relaxed;\n  }\n\n  .cn-breadcrumb-item {\n    @apply gap-1;\n  }\n\n  .cn-breadcrumb-link {\n    @apply hover:text-foreground transition-colors;\n  }\n\n  .cn-breadcrumb-page {\n    @apply text-foreground font-normal;\n  }\n\n  .cn-breadcrumb-separator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  .cn-breadcrumb-ellipsis {\n    @apply size-4 [&>svg]:size-3.5;\n  }\n\n  /* MARK: Button */\n  .cn-button {\n    @apply focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-xs/relaxed font-medium focus-visible:ring-2 aria-invalid:ring-2 active:translate-y-px [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-variant-default {\n    @apply bg-primary text-primary-foreground hover:bg-primary/80;\n  }\n\n  .cn-button-variant-outline {\n    @apply border-border dark:bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-secondary {\n    @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;\n  }\n\n  .cn-button-variant-ghost {\n    @apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-destructive {\n    @apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;\n  }\n\n  .cn-button-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  .cn-button-size-xs {\n    @apply h-5 gap-1 rounded-sm px-2 text-[0.625rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-2.5;\n  }\n\n  .cn-button-size-sm {\n    @apply h-6 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-default {\n    @apply h-7 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-button-size-lg {\n    @apply h-8 gap-1 px-2.5 text-xs/relaxed has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-size-icon-xs {\n    @apply size-5 rounded-sm [&_svg:not([class*='size-'])]:size-2.5;\n  }\n\n  .cn-button-size-icon-sm {\n    @apply size-6 [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-icon {\n    @apply size-7 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-button-size-icon-lg {\n    @apply size-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Button Group */\n  .cn-button-group {\n    @apply has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md;\n  }\n\n  .cn-button-group-orientation-horizontal {\n    @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md!;\n  }\n\n  .cn-button-group-orientation-vertical {\n    @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md!;\n  }\n\n  .cn-button-group-text {\n    @apply bg-muted gap-2 rounded-md border px-2.5 text-xs/relaxed font-medium [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-group-separator {\n    @apply bg-input;\n  }\n\n  /* MARK: Calendar */\n  .cn-calendar {\n    @apply p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(6)];\n  }\n\n  .cn-calendar-dropdown-root {\n    @apply has-focus:border-ring border-input has-focus:ring-ring/30 border has-focus:ring-2;\n  }\n\n  .cn-calendar-caption-label {\n    @apply bg-input/20 dark:bg-input/30 h-7 pr-1.5 pl-2;\n  }\n\n  /* MARK: Card */\n  .cn-card {\n    @apply ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-lg py-4 text-xs/relaxed ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg;\n  }\n\n  .cn-card-header {\n    @apply gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3;\n  }\n\n  .cn-card-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-card-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  .cn-card-content {\n    @apply px-4 group-data-[size=sm]/card:px-3;\n  }\n\n  .cn-card-footer {\n    @apply rounded-b-lg px-4 group-data-[size=sm]/card:px-3 [.border-t]:pt-4 group-data-[size=sm]/card:[.border-t]:pt-3;\n  }\n\n  /* MARK: Carousel */\n  .cn-carousel-previous {\n    @apply rounded-full;\n  }\n\n  .cn-carousel-next {\n    @apply rounded-full;\n  }\n\n  /* MARK: Chart */\n  .cn-chart-tooltip {\n    @apply border-border/50 bg-background gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs/relaxed shadow-xl;\n  }\n\n  /* MARK: Checkbox */\n  .cn-checkbox {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-2 aria-invalid:ring-2;\n  }\n\n  .cn-checkbox-indicator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  /* MARK: Combobox */\n  .cn-combobox-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 *:data-[slot=input-group]:bg-input/20 dark:bg-popover max-h-72 min-w-32 overflow-hidden rounded-lg shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-7 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:shadow-none;\n  }\n\n  .cn-combobox-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-combobox-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs;\n  }\n\n  .cn-combobox-item {\n    @apply data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-combobox-item-indicator {\n    @apply pointer-events-none absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-combobox-empty {\n    @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-xs/relaxed group-data-empty/combobox-content:flex;\n  }\n\n  .cn-combobox-list {\n    @apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0;\n  }\n\n  .cn-combobox-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-combobox-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-combobox-trigger {\n    @apply [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-combobox-trigger-icon {\n    @apply text-muted-foreground size-3.5;\n  }\n\n  .cn-combobox-chips {\n    @apply bg-input/20 dark:bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/30 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive dark:has-aria-invalid:border-destructive/50 flex min-h-7 flex-wrap items-center gap-1 rounded-md border bg-clip-padding px-2 py-0.5 text-xs/relaxed transition-colors focus-within:ring-2 has-aria-invalid:ring-2 has-data-[slot=combobox-chip]:px-1;\n  }\n\n  .cn-combobox-chip {\n    @apply bg-muted-foreground/10 text-foreground flex h-[calc(--spacing(4.75))] w-fit items-center justify-center gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1.5 text-xs/relaxed font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pr-0;\n  }\n\n  .cn-combobox-chip-remove {\n    @apply -ml-1 opacity-50 hover:opacity-100;\n  }\n\n  /* MARK: Command */\n  .cn-command {\n    @apply bg-popover text-popover-foreground rounded-xl p-1;\n  }\n\n  .cn-command-dialog {\n    @apply rounded-xl! p-0;\n  }\n\n  .cn-command-input-wrapper {\n    @apply p-1 pb-0;\n  }\n\n  .cn-command-input-group {\n    @apply bg-input/20 dark:bg-input/30 h-8!;\n  }\n\n  .cn-command-input-icon {\n    @apply size-3.5 shrink-0 opacity-50;\n  }\n\n  .cn-command-input {\n    @apply w-full text-xs/relaxed;\n  }\n\n  .cn-command-list {\n    @apply no-scrollbar max-h-72 scroll-py-1 outline-none;\n  }\n\n  .cn-command-empty {\n    @apply py-6 text-center text-xs/relaxed;\n  }\n\n  .cn-command-group {\n    @apply text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2.5 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium;\n  }\n\n  .cn-command-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-command-item {\n    @apply data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none in-data-[slot=dialog-content]:rounded-md [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-command-shortcut {\n    @apply text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-[0.625rem] tracking-widest;\n  }\n\n  /* MARK: Context Menu */\n  .cn-context-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-context-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-context-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-context-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-context-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-context-menu-item-indicator {\n    @apply pointer-events-none absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-context-menu-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs data-inset:pl-7.5;\n  }\n\n  .cn-context-menu-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-context-menu-shortcut {\n    @apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-[0.625rem] tracking-widest;\n  }\n\n  .cn-context-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-context-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-context-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Dialog */\n  .cn-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-dialog-content {\n    @apply bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-xl p-4 text-xs/relaxed ring-1 duration-100 sm:max-w-sm;\n  }\n\n  .cn-dialog-close {\n    @apply absolute top-2 right-2;\n  }\n\n  .cn-dialog-header {\n    @apply gap-1;\n  }\n\n  .cn-dialog-footer {\n    @apply gap-2;\n  }\n\n  .cn-dialog-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-xs/relaxed *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Drawer */\n  .cn-drawer-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-drawer-content {\n    @apply before:bg-background before:border-border relative flex h-auto flex-col bg-transparent p-2 text-xs/relaxed before:absolute before:inset-2 before:-z-10 before:rounded-xl before:border data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm;\n  }\n\n  .cn-drawer-handle {\n    @apply bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block;\n  }\n\n  .cn-drawer-header {\n    @apply gap-1 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:text-left;\n  }\n\n  .cn-drawer-title {\n    @apply text-foreground text-sm font-medium;\n  }\n\n  .cn-drawer-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  .cn-drawer-footer {\n    @apply gap-2 p-4;\n  }\n\n  /* MARK: Dropdown Menu */\n  .cn-dropdown-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-dropdown-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-dropdown-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-dropdown-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-8 pl-2 text-xs data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-dropdown-menu-item-indicator {\n    @apply absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-dropdown-menu-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs data-inset:pl-7.5;\n  }\n\n  .cn-dropdown-menu-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-dropdown-menu-shortcut {\n    @apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-[0.625rem] tracking-widest;\n  }\n\n  .cn-dropdown-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-dropdown-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Empty */\n  .cn-empty {\n    @apply gap-4 rounded-xl border-dashed p-6;\n  }\n\n  .cn-empty-header {\n    @apply gap-1;\n  }\n\n  .cn-empty-media {\n    @apply mb-2;\n  }\n\n  .cn-empty-media-default {\n    @apply bg-transparent;\n  }\n\n  .cn-empty-media-icon {\n    @apply bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-md [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-empty-title {\n    @apply text-sm font-medium tracking-tight;\n  }\n\n  .cn-empty-description {\n    @apply text-xs/relaxed;\n  }\n\n  .cn-empty-content {\n    @apply gap-2 text-xs/relaxed;\n  }\n\n  /* MARK: Field */\n  .cn-field-set {\n    @apply gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3;\n  }\n\n  .cn-field-legend {\n    @apply mb-2 font-medium data-[variant=label]:text-xs/relaxed data-[variant=legend]:text-sm;\n  }\n\n  .cn-field-group {\n    @apply gap-4 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4;\n  }\n\n  .cn-field {\n    @apply data-[invalid=true]:text-destructive gap-2;\n  }\n\n  .cn-field-content {\n    @apply gap-0.5;\n  }\n\n  .cn-field-label {\n    @apply has-data-checked:bg-primary/5 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-2;\n  }\n\n  .cn-field-title {\n    @apply gap-2 text-xs/relaxed font-medium group-data-[disabled=true]/field:opacity-50;\n  }\n\n  .cn-field-description {\n    @apply text-muted-foreground text-left text-xs/relaxed [[data-variant=legend]+&]:-mt-1.5;\n  }\n\n  .cn-field-separator {\n    @apply -my-2 h-5 text-xs/relaxed group-data-[variant=outline]/field-group:-mb-2;\n  }\n\n  .cn-field-separator-content {\n    @apply text-muted-foreground px-2;\n  }\n\n  .cn-field-error {\n    @apply text-destructive text-xs/relaxed;\n  }\n\n  /* MARK: Hover Card */\n  .cn-hover-card-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-72 rounded-lg p-2.5 text-xs/relaxed shadow-md ring-1 duration-100;\n  }\n\n  .cn-hover-card-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  /* MARK: Input */\n  .cn-input {\n    @apply bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-7 rounded-md border px-2 py-0.5 text-sm transition-colors file:h-6 file:text-xs/relaxed file:font-medium focus-visible:ring-2 aria-invalid:ring-2 md:text-xs/relaxed;\n  }\n\n  /* MARK: Input OTP */\n  .cn-input-otp {\n    @apply gap-2;\n  }\n\n  .cn-input-otp-group {\n    @apply has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-md has-aria-invalid:ring-2;\n  }\n\n  .cn-input-otp-slot {\n    @apply bg-input/20 dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/30 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-7 border-y border-r text-xs/relaxed transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:ring-2;\n  }\n\n  .cn-input-otp-caret-line {\n    @apply animate-caret-blink bg-foreground h-4 w-px duration-1000;\n  }\n\n  .cn-input-otp-separator {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Item */\n  .cn-item {\n    @apply [a]:hover:bg-muted rounded-md border text-xs/relaxed;\n  }\n\n  .cn-item-variant-default {\n    @apply border-transparent;\n  }\n\n  .cn-item-variant-outline {\n    @apply border-border;\n  }\n\n  .cn-item-variant-muted {\n    @apply bg-muted/50 border-transparent;\n  }\n\n  .cn-item-size-default {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-sm {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-xs {\n    @apply gap-2.5 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0;\n  }\n\n  .cn-item-media {\n    @apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;\n  }\n\n  .cn-item-media-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-item-media-variant-icon {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-item-media-variant-image {\n    @apply size-8 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover;\n  }\n\n  .cn-item-content {\n    @apply gap-1 group-data-[size=xs]/item:gap-0.5;\n  }\n\n  .cn-item-title {\n    @apply gap-2 text-xs/relaxed leading-snug font-medium underline-offset-4;\n  }\n\n  .cn-item-description {\n    @apply text-muted-foreground text-left text-xs/relaxed;\n  }\n\n  .cn-item-actions {\n    @apply gap-2;\n  }\n\n  .cn-item-header {\n    @apply gap-2;\n  }\n\n  .cn-item-footer {\n    @apply gap-2;\n  }\n\n  .cn-item-group {\n    @apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;\n  }\n\n  .cn-item-separator {\n    @apply my-2;\n  }\n\n  /* MARK: Kbd */\n  .cn-kbd {\n    @apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-xs px-1 font-sans text-[0.625rem] font-medium [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-kbd-group {\n    @apply gap-1;\n  }\n\n  /* MARK: Label */\n  .cn-label {\n    @apply gap-2 text-xs/relaxed leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50;\n  }\n\n  /* MARK: Menubar */\n  .cn-menubar {\n    @apply h-9 rounded-lg border p-1;\n  }\n\n  .cn-menubar-trigger {\n    @apply hover:bg-muted aria-expanded:bg-muted rounded-[calc(var(--radius-md)-2px)] px-2 py-[calc(--spacing(0.85))] text-xs/relaxed font-medium;\n  }\n\n  .cn-menubar-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-menubar-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-menubar-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed data-disabled:opacity-50 data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-menubar-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-2 pl-7.5 text-xs data-inset:pl-7.5;\n  }\n\n  .cn-menubar-checkbox-item-indicator {\n    @apply left-2 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground min-h-7 gap-2 rounded-md py-1.5 pr-2 pl-7.5 text-xs data-disabled:opacity-50 data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-menubar-radio-item-indicator {\n    @apply left-2 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs data-inset:pl-7.5;\n  }\n\n  .cn-menubar-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-menubar-shortcut {\n    @apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-[0.625rem] tracking-widest;\n  }\n\n  .cn-menubar-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs data-inset:pl-7.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-menubar-sub-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  /* MARK: Navigation Menu */\n  .cn-navigation-menu {\n    @apply max-w-max;\n  }\n\n  .cn-navigation-menu-list {\n    @apply gap-0;\n  }\n\n  .cn-navigation-menu-trigger {\n    @apply bg-background hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/30 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-md px-2.5 py-1.5 text-xs/relaxed font-medium transition-all focus-visible:ring-2 focus-visible:outline-1 disabled:opacity-50;\n  }\n\n  .cn-navigation-menu-trigger-icon {\n    @apply relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;\n  }\n\n  .cn-navigation-menu-content {\n    @apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-1.5 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-xl group-data-[viewport=false]/navigation-menu:shadow-md group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;\n  }\n\n  .cn-navigation-menu-viewport {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 ring-foreground/10 rounded-xl shadow-md ring-1 duration-100;\n  }\n\n  .cn-navigation-menu-link {\n    @apply data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/30 hover:bg-muted focus:bg-muted flex items-center gap-1.5 rounded-lg p-2 text-xs/relaxed transition-all outline-none focus-visible:ring-2 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-navigation-menu-indicator {\n    @apply data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in;\n  }\n\n  .cn-navigation-menu-indicator-arrow {\n    @apply bg-border rounded-tl-sm shadow-md;\n  }\n\n  .cn-navigation-menu-positioner {\n    @apply transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0;\n  }\n\n  .cn-navigation-menu-popup {\n    @apply bg-popover text-popover-foreground ring-foreground/10 rounded-xl shadow ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;\n  }\n\n  /* MARK: Native Select */\n  .cn-native-select {\n    @apply border-input bg-input/20 placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-7 w-full min-w-0 appearance-none rounded-md border py-0.5 pr-6 pl-2 text-xs/relaxed transition-colors select-none focus-visible:ring-2 aria-invalid:ring-2 data-[size=sm]:h-6 data-[size=sm]:text-[0.625rem];\n  }\n\n  .cn-native-select-icon {\n    @apply text-muted-foreground top-1/2 right-1.5 size-3.5 -translate-y-1/2 group-data-[size=sm]/native-select:size-3 group-data-[size=sm]/native-select:-translate-y-[calc(--spacing(1.25))];\n  }\n\n  /* MARK: Pagination */\n  .cn-pagination-content {\n    @apply gap-0.5;\n  }\n\n  .cn-pagination-ellipsis {\n    @apply size-7 items-center justify-center [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-pagination-previous {\n    @apply pl-2!;\n  }\n\n  .cn-pagination-next {\n    @apply pr-2!;\n  }\n\n  /* MARK: Popover */\n  .cn-popover-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-4 rounded-lg p-2.5 text-xs shadow-md ring-1 duration-100;\n  }\n\n  .cn-popover-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-popover-header {\n    @apply flex flex-col gap-1 text-xs;\n  }\n\n  .cn-popover-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-popover-description {\n    @apply text-muted-foreground;\n  }\n\n  /* MARK: Progress */\n  .cn-progress {\n    @apply bg-muted h-1 rounded-md;\n  }\n\n  .cn-progress-track {\n    @apply bg-muted h-1 rounded-md;\n  }\n\n  .cn-progress-indicator {\n    @apply bg-primary;\n  }\n\n  .cn-progress-label {\n    @apply text-xs/relaxed font-medium;\n  }\n\n  .cn-progress-value {\n    @apply text-muted-foreground ml-auto text-xs/relaxed tabular-nums;\n  }\n\n  /* MARK: Radio Group */\n  .cn-radio-group {\n    @apply grid gap-3;\n  }\n\n  .cn-radio-group-item {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-3 aria-invalid:ring-3;\n  }\n\n  .cn-radio-group-indicator {\n    @apply flex size-4 items-center justify-center;\n  }\n\n  .cn-radio-group-indicator-icon {\n    @apply bg-primary-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full;\n  }\n\n  /* MARK: Resizable */\n  .cn-resizable-handle-icon {\n    @apply bg-border h-6 w-1 rounded-lg;\n  }\n\n  /* MARK: Scroll Area */\n  .cn-scroll-area-scrollbar {\n    @apply data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent;\n  }\n\n  .cn-scroll-area-thumb {\n    @apply rounded-full;\n  }\n\n  /* MARK: Select */\n  .cn-select-trigger {\n    @apply border-input data-placeholder:text-muted-foreground bg-input/20 dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border px-2 py-1.5 text-xs/relaxed transition-colors focus-visible:ring-2 aria-invalid:ring-2 data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-select-value {\n    @apply flex flex-1 text-left;\n  }\n\n  .cn-select-trigger-icon {\n    @apply text-muted-foreground size-3.5;\n  }\n\n  .cn-select-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-lg shadow-md ring-1 duration-100;\n  }\n\n  .cn-select-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-select-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs;\n  }\n\n  .cn-select-item {\n    @apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;\n  }\n\n  .cn-select-item-indicator {\n    @apply pointer-events-none absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-select-group {\n    @apply scroll-my-1 p-1;\n  }\n\n  .cn-select-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-select-separator {\n    @apply bg-border/50 -mx-1 my-1 h-px;\n  }\n\n  .cn-select-scroll-up-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-select-scroll-down-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  /* MARK: Separator */\n  .cn-separator {\n    @apply bg-border shrink-0;\n  }\n\n  .cn-separator-horizontal {\n    @apply h-px w-full;\n  }\n\n  .cn-separator-vertical {\n    @apply h-full w-px;\n  }\n\n  /* MARK: Sheet */\n  .cn-sheet-overlay {\n    @apply bg-black/80 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-sheet-content {\n    @apply bg-background fixed z-50 flex flex-col bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm;\n  }\n\n  .cn-sheet-close {\n    @apply absolute top-4 right-4;\n  }\n\n  .cn-sheet-header {\n    @apply gap-1.5 p-6;\n  }\n\n  .cn-sheet-footer {\n    @apply gap-2 p-6;\n  }\n\n  .cn-sheet-title {\n    @apply text-foreground text-sm font-medium;\n  }\n\n  .cn-sheet-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  /* MARK: Sidebar */\n\n  /* MARK: Sidebar */\n  .cn-sidebar-gap {\n    @apply transition-[width] duration-200 ease-linear;\n  }\n\n  .cn-sidebar-inner {\n    @apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;\n  }\n\n  .cn-sidebar-rail {\n    @apply hover:after:bg-sidebar-border;\n  }\n\n  .cn-sidebar-inset {\n    @apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2;\n  }\n\n  .cn-sidebar-input {\n    @apply bg-muted/20 dark:bg-muted/30 border-input h-8 w-full;\n  }\n\n  .cn-sidebar-header {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-content {\n    @apply no-scrollbar gap-0;\n  }\n\n  .cn-sidebar-footer {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-separator {\n    @apply bg-sidebar-border mx-2;\n  }\n\n  .cn-sidebar-group {\n    @apply px-2 py-1;\n  }\n\n  .cn-sidebar-menu {\n    @apply gap-px;\n  }\n\n  .cn-sidebar-group-content {\n    @apply text-xs;\n  }\n\n  .cn-sidebar-group-label {\n    @apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-group-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-button {\n    @apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-[calc(var(--radius-sm)+2px)] p-2 text-left text-xs transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium;\n  }\n\n  .cn-sidebar-menu-button-variant-default {\n    @apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;\n  }\n\n  .cn-sidebar-menu-button-variant-outline {\n    @apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))];\n  }\n\n  .cn-sidebar-menu-button-size-default {\n    @apply h-8 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-sm {\n    @apply h-7 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-lg {\n    @apply h-12 text-xs group-data-[collapsible=icon]:p-0!;\n  }\n\n  .cn-sidebar-menu-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-[calc(var(--radius-sm)-2px)] p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-badge {\n    @apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-[calc(var(--radius-sm)-2px)] px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;\n  }\n\n  .cn-sidebar-menu-skeleton {\n    @apply h-8 gap-2 rounded-md px-2;\n  }\n\n  .cn-sidebar-menu-skeleton-icon {\n    @apply size-4 rounded-md;\n  }\n\n  .cn-sidebar-menu-skeleton-text {\n    @apply h-4;\n  }\n\n  .cn-sidebar-menu-sub {\n    @apply border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;\n  }\n\n  .cn-sidebar-menu-sub-button {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-xs data-[size=sm]:text-xs [&>svg]:size-4;\n  }\n\n  /* MARK: Skeleton */\n  .cn-skeleton {\n    @apply bg-muted rounded-md;\n  }\n\n  /* MARK: Slider */\n  .cn-slider {\n    @apply data-vertical:min-h-40;\n  }\n\n  .cn-slider-track {\n    @apply bg-muted rounded-md data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3;\n  }\n\n  .cn-slider-range {\n    @apply bg-primary;\n  }\n\n  .cn-slider-thumb {\n    @apply border-primary ring-ring/30 size-4 rounded-md border bg-white shadow-sm transition-colors hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden;\n  }\n\n  /* MARK: Sonner */\n  .cn-toast {\n    @apply rounded-md;\n  }\n\n  /* MARK: Switch */\n  .cn-switch {\n    @apply data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-2 aria-invalid:ring-2 data-[size=default]:h-[16.6px] data-[size=default]:w-[28px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px];\n  }\n\n  .cn-switch-thumb {\n    @apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0;\n  }\n\n  /* MARK: Table */\n  .cn-table-container {\n    @apply relative w-full overflow-x-auto;\n  }\n\n  .cn-table {\n    @apply w-full caption-bottom text-xs;\n  }\n\n  .cn-table-header {\n    @apply [&_tr]:border-b;\n  }\n\n  .cn-table-body {\n    @apply [&_tr:last-child]:border-0;\n  }\n\n  .cn-table-footer {\n    @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;\n  }\n\n  .cn-table-row {\n    @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;\n  }\n\n  .cn-table-head {\n    @apply text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-cell {\n    @apply p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-caption {\n    @apply text-muted-foreground mt-4 text-xs;\n  }\n\n  /* MARK: Tabs */\n  .cn-tabs {\n    @apply gap-2;\n  }\n\n  .cn-tabs-list {\n    @apply rounded-lg p-[3px] group-data-horizontal/tabs:h-8 data-[variant=line]:rounded-none;\n  }\n\n  .cn-tabs-trigger {\n    @apply gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-xs font-medium group-data-vertical/tabs:py-[calc(--spacing(1.25))] [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-tabs-content {\n    @apply text-xs/relaxed;\n  }\n\n  /* MARK: Textarea */\n  .cn-textarea {\n    @apply border-input bg-input/20 dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-md border px-2 py-2 text-sm transition-colors focus-visible:ring-2 aria-invalid:ring-2 md:text-xs/relaxed;\n  }\n\n  /* MARK: Toggle */\n  .cn-toggle {\n    @apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-muted gap-1 rounded-md text-xs font-medium transition-all [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-toggle-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-toggle-variant-outline {\n    @apply border-input hover:bg-muted border bg-transparent;\n  }\n\n  .cn-toggle-size-default {\n    @apply h-7 min-w-7 px-2;\n  }\n\n  .cn-toggle-size-sm {\n    @apply h-6 min-w-6 rounded-[min(var(--radius-md),8px)] px-1.5 text-[0.625rem] [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-toggle-size-lg {\n    @apply h-8 min-w-8 px-2;\n  }\n\n  /* MARK: Toggle Group */\n  .cn-toggle-group {\n    @apply rounded-md data-[size=sm]:rounded-[min(var(--radius-md),8px)];\n  }\n\n  .cn-toggle-group-item {\n    @apply group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md;\n  }\n\n  /* MARK: Tooltip */\n  .cn-tooltip-content {\n    @apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm;\n  }\n\n  .cn-tooltip-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-tooltip-arrow {\n    @apply size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px];\n  }\n\n  .cn-tooltip-arrow-logical {\n    @apply data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2;\n  }\n\n  /* MARK: Input Group */\n  .cn-input-group {\n    @apply border-input bg-input/20 dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/30 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-7 rounded-md border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-md has-data-[align=block-start]:rounded-md has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-2 has-[textarea]:rounded-md has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;\n  }\n\n  .cn-input-group-addon {\n    @apply text-muted-foreground **:data-[slot=kbd]:bg-muted-foreground/10 h-auto gap-1 py-2 text-xs/relaxed font-medium group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-[calc(var(--radius-sm)-2px)] **:data-[slot=kbd]:px-1 **:data-[slot=kbd]:text-[0.625rem] [&>svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-input-group-addon-align-inline-start {\n    @apply pl-2 has-[>button]:ml-[-0.275rem] has-[>kbd]:ml-[-0.275rem];\n  }\n\n  .cn-input-group-addon-align-inline-end {\n    @apply pr-2 has-[>button]:mr-[-0.275rem] has-[>kbd]:mr-[-0.275rem];\n  }\n\n  .cn-input-group-addon-align-block-start {\n    @apply px-2 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2;\n  }\n\n  .cn-input-group-addon-align-block-end {\n    @apply px-2 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2;\n  }\n\n  .cn-input-group-button {\n    @apply gap-2 rounded-md text-xs/relaxed;\n  }\n\n  .cn-input-group-button-size-xs {\n    @apply h-5 gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1 [&>svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-input-group-button-size-icon-xs {\n    @apply size-6 p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-button-size-sm {\n    @apply gap-1;\n  }\n\n  .cn-input-group-button-size-icon-sm {\n    @apply size-7 p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-text {\n    @apply text-muted-foreground gap-2 text-xs/relaxed [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-input {\n    @apply rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;\n  }\n\n  .cn-input-group-textarea {\n    @apply rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;\n  }\n\n  /* MARK: Menu Translucent */\n  .cn-menu-translucent {\n    @apply animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!;\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/styles/style-nova.css",
    "content": ".style-nova {\n  /* MARK: Accordion */\n  .cn-accordion-item {\n    @apply not-last:border-b;\n  }\n\n  .cn-accordion-trigger {\n    @apply focus-visible:ring-ring/50 focus-visible:border-ring focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-lg py-2.5 text-left text-sm font-medium hover:underline focus-visible:ring-3 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4;\n  }\n\n  .cn-accordion-content {\n    @apply data-open:animate-accordion-down data-closed:animate-accordion-up text-sm;\n  }\n\n  .cn-accordion-content-inner {\n    @apply pt-0 pb-2.5;\n  }\n\n  /* MARK: Alert */\n  .cn-alert {\n    @apply grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-alert-variant-default {\n    @apply bg-card text-card-foreground;\n  }\n\n  .cn-alert-variant-destructive {\n    @apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current;\n  }\n\n  .cn-alert-title {\n    @apply font-medium group-has-[>svg]/alert:col-start-2;\n  }\n\n  .cn-alert-description {\n    @apply text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4;\n  }\n\n  .cn-alert-action {\n    @apply absolute top-2 right-2;\n  }\n\n  /* MARK: Alert Dialog */\n  .cn-alert-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-alert-dialog-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-4 rounded-xl p-4 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm;\n  }\n\n  .cn-alert-dialog-header {\n    @apply grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr];\n  }\n\n  .cn-alert-dialog-media {\n    @apply bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6;\n  }\n\n  .cn-alert-dialog-title {\n    @apply text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2;\n  }\n\n  .cn-alert-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  .cn-alert-dialog-footer {\n    @apply bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4;\n  }\n\n  /* MARK: Avatar */\n  .cn-avatar {\n    @apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;\n  }\n\n  .cn-avatar-fallback {\n    @apply bg-muted text-muted-foreground rounded-full;\n  }\n\n  .cn-avatar-image {\n    @apply rounded-full;\n  }\n\n  .cn-avatar-badge {\n    @apply bg-primary text-primary-foreground ring-background;\n  }\n\n  .cn-avatar-group-count {\n    @apply bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;\n  }\n\n  /* MARK: Badge */\n  .cn-badge {\n    @apply h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3!;\n  }\n\n  .cn-badge-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-badge-variant-secondary {\n    @apply bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80;\n  }\n\n  .cn-badge-variant-outline {\n    @apply border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground;\n  }\n\n  .cn-badge-variant-destructive {\n    @apply bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20;\n  }\n\n  .cn-badge-variant-ghost {\n    @apply hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50;\n  }\n\n  .cn-badge-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  /* MARK: Breadcrumb */\n  .cn-breadcrumb-list {\n    @apply text-muted-foreground gap-1.5 text-sm;\n  }\n\n  .cn-breadcrumb-item {\n    @apply gap-1;\n  }\n\n  .cn-breadcrumb-link {\n    @apply hover:text-foreground transition-colors;\n  }\n\n  .cn-breadcrumb-page {\n    @apply text-foreground font-normal;\n  }\n\n  .cn-breadcrumb-separator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  .cn-breadcrumb-ellipsis {\n    @apply size-5 [&>svg]:size-4;\n  }\n\n  /* MARK: Button */\n  .cn-button {\n    @apply focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 active:translate-y-px [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-button-variant-outline {\n    @apply border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-secondary {\n    @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;\n  }\n\n  .cn-button-variant-ghost {\n    @apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-destructive {\n    @apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;\n  }\n\n  .cn-button-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  .cn-button-size-xs {\n    @apply h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-sm {\n    @apply h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-button-size-default {\n    @apply h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;\n  }\n\n  .cn-button-size-lg {\n    @apply h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3;\n  }\n\n  .cn-button-size-icon-xs {\n    @apply size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-icon-sm {\n    @apply size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg;\n  }\n\n  .cn-button-size-icon {\n    @apply size-8;\n  }\n\n  .cn-button-size-icon-lg {\n    @apply size-9;\n  }\n\n  /* MARK: Button Group */\n  .cn-button-group {\n    @apply has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg;\n  }\n\n  .cn-button-group-orientation-horizontal {\n    @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!;\n  }\n\n  .cn-button-group-orientation-vertical {\n    @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!;\n  }\n\n  .cn-button-group-text {\n    @apply bg-muted gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-group-separator {\n    @apply bg-input;\n  }\n\n  /* MARK: Calendar */\n  .cn-calendar {\n    @apply p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)];\n  }\n\n  .cn-calendar-dropdown-root {\n    @apply has-focus:border-ring border-input has-focus:ring-ring/50 border has-focus:ring-3;\n  }\n\n  .cn-calendar-caption-label {\n    @apply h-6 pr-1 pl-1.5;\n  }\n\n  /* MARK: Card */\n  .cn-card {\n    @apply ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl;\n  }\n\n  .cn-card-header {\n    @apply gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3;\n  }\n\n  .cn-card-title {\n    @apply text-base leading-snug font-medium group-data-[size=sm]/card:text-sm;\n  }\n\n  .cn-card-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  .cn-card-content {\n    @apply px-4 group-data-[size=sm]/card:px-3;\n  }\n\n  .cn-card-footer {\n    @apply bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3;\n  }\n\n  /* MARK: Carousel */\n  .cn-carousel-previous {\n    @apply rounded-full;\n  }\n\n  .cn-carousel-next {\n    @apply rounded-full;\n  }\n\n  /* MARK: Chart */\n  .cn-chart-tooltip {\n    @apply border-border/50 bg-background gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl;\n  }\n\n  /* MARK: Checkbox */\n  .cn-checkbox {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3;\n  }\n\n  .cn-checkbox-indicator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  /* MARK: Combobox */\n  .cn-combobox-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:border-input/30 max-h-72 min-w-36 overflow-hidden rounded-lg shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none;\n  }\n\n  .cn-combobox-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-combobox-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs;\n  }\n\n  .cn-combobox-item {\n    @apply data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-combobox-empty {\n    @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-sm group-data-empty/combobox-content:flex;\n  }\n\n  .cn-combobox-list {\n    @apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0;\n  }\n\n  .cn-combobox-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-combobox-separator {\n    @apply bg-border -mx-1 my-1 h-px;\n  }\n\n  .cn-combobox-trigger {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-combobox-chips {\n    @apply dark:bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/50 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive dark:has-aria-invalid:border-destructive/50 flex min-h-8 flex-wrap items-center gap-1 rounded-lg border bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:ring-3 has-aria-invalid:ring-3 has-data-[slot=combobox-chip]:px-1;\n  }\n\n  .cn-combobox-chip {\n    @apply bg-muted text-foreground flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm px-1.5 text-xs font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pr-0;\n  }\n\n  .cn-combobox-chip-remove {\n    @apply -ml-1 opacity-50 hover:opacity-100;\n  }\n\n  /* MARK: Command */\n  .cn-command {\n    @apply bg-popover text-popover-foreground rounded-xl! p-1;\n  }\n\n  .cn-command-dialog {\n    @apply rounded-xl!;\n  }\n\n  .cn-command-input-wrapper {\n    @apply p-1 pb-0;\n  }\n\n  .cn-command-input-group {\n    @apply bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!;\n  }\n\n  .cn-command-input-icon {\n    @apply size-4 shrink-0 opacity-50;\n  }\n\n  .cn-command-input {\n    @apply w-full text-sm;\n  }\n\n  .cn-command-list {\n    @apply no-scrollbar max-h-72 scroll-py-1 outline-none;\n  }\n\n  .cn-command-empty {\n    @apply py-6 text-center text-sm;\n  }\n\n  .cn-command-group {\n    @apply text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium;\n  }\n\n  .cn-command-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-command-item {\n    @apply data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-command-shortcut {\n    @apply text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest;\n  }\n\n  /* MARK: Context Menu */\n  .cn-context-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-context-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-context-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-item-indicator {\n    @apply absolute right-2;\n  }\n\n  .cn-context-menu-label {\n    @apply text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7;\n  }\n\n  .cn-context-menu-separator {\n    @apply bg-border -mx-1 my-1 h-px;\n  }\n\n  .cn-context-menu-shortcut {\n    @apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-context-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-popover text-popover-foreground min-w-32 rounded-lg border p-1 shadow-lg duration-100;\n  }\n\n  .cn-context-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Dialog */\n  .cn-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-dialog-content {\n    @apply bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-xl p-4 text-sm ring-1 duration-100 sm:max-w-sm;\n  }\n\n  .cn-dialog-close {\n    @apply absolute top-2 right-2;\n  }\n\n  .cn-dialog-header {\n    @apply gap-2;\n  }\n\n  .cn-dialog-footer {\n    @apply bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4;\n  }\n\n  .cn-dialog-title {\n    @apply text-base leading-none font-medium;\n  }\n\n  .cn-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Drawer */\n  .cn-drawer-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-drawer-content {\n    @apply bg-background flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm;\n  }\n\n  .cn-drawer-handle {\n    @apply bg-muted mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block;\n  }\n\n  .cn-drawer-header {\n    @apply gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left;\n  }\n\n  .cn-drawer-title {\n    @apply text-foreground text-base font-medium;\n  }\n\n  .cn-drawer-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  .cn-drawer-footer {\n    @apply gap-2 p-4;\n  }\n\n  /* MARK: Dropdown Menu */\n  .cn-dropdown-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-dropdown-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-item-indicator {\n    @apply absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-dropdown-menu-label {\n    @apply text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7;\n  }\n\n  .cn-dropdown-menu-separator {\n    @apply bg-border -mx-1 my-1 h-px;\n  }\n\n  .cn-dropdown-menu-shortcut {\n    @apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-dropdown-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-lg p-1 shadow-lg ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Empty */\n  .cn-empty {\n    @apply gap-4 rounded-xl border-dashed p-6;\n  }\n\n  .cn-empty-header {\n    @apply gap-2;\n  }\n\n  .cn-empty-media {\n    @apply mb-2;\n  }\n\n  .cn-empty-media-default {\n    @apply bg-transparent;\n  }\n\n  .cn-empty-media-icon {\n    @apply bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-empty-title {\n    @apply text-sm font-medium tracking-tight;\n  }\n\n  .cn-empty-description {\n    @apply text-sm/relaxed;\n  }\n\n  .cn-empty-content {\n    @apply gap-2.5 text-sm;\n  }\n\n  /* MARK: Field */\n  .cn-field-set {\n    @apply gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3;\n  }\n\n  .cn-field-legend {\n    @apply mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base;\n  }\n\n  .cn-field-group {\n    @apply gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4;\n  }\n\n  .cn-field {\n    @apply data-[invalid=true]:text-destructive gap-2;\n  }\n\n  .cn-field-content {\n    @apply gap-0.5;\n  }\n\n  .cn-field-label {\n    @apply has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5;\n  }\n\n  .cn-field-title {\n    @apply gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50;\n  }\n\n  .cn-field-description {\n    @apply text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5;\n  }\n\n  .cn-field-separator {\n    @apply -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2;\n  }\n\n  .cn-field-separator-content {\n    @apply text-muted-foreground px-2;\n  }\n\n  .cn-field-error {\n    @apply text-destructive text-sm;\n  }\n\n  /* MARK: Hover Card */\n  .cn-hover-card-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-lg p-2.5 text-sm shadow-md ring-1 duration-100;\n  }\n\n  .cn-hover-card-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  /* MARK: Input */\n  .cn-input {\n    @apply dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm;\n  }\n\n  /* MARK: Input OTP */\n  .cn-input-otp {\n    @apply gap-2;\n  }\n\n  .cn-input-otp-group {\n    @apply has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-lg has-aria-invalid:ring-3;\n  }\n\n  .cn-input-otp-slot {\n    @apply dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-8 border-y border-r text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg data-[active=true]:ring-3;\n  }\n\n  .cn-input-otp-caret-line {\n    @apply animate-caret-blink bg-foreground h-4 w-px duration-1000;\n  }\n\n  .cn-input-otp-separator {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Item */\n  .cn-item {\n    @apply [a]:hover:bg-muted rounded-lg border text-sm;\n  }\n\n  .cn-item-variant-default {\n    @apply border-transparent;\n  }\n\n  .cn-item-variant-outline {\n    @apply border-border;\n  }\n\n  .cn-item-variant-muted {\n    @apply bg-muted/50 border-transparent;\n  }\n\n  .cn-item-size-default {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-sm {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-xs {\n    @apply gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0;\n  }\n\n  .cn-item-media {\n    @apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;\n  }\n\n  .cn-item-media-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-item-media-variant-icon {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-item-media-variant-image {\n    @apply size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover;\n  }\n\n  .cn-item-content {\n    @apply gap-1 group-data-[size=xs]/item:gap-0;\n  }\n\n  .cn-item-title {\n    @apply gap-2 text-sm leading-snug font-medium underline-offset-4;\n  }\n\n  .cn-item-description {\n    @apply text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs;\n  }\n\n  .cn-item-actions {\n    @apply gap-2;\n  }\n\n  .cn-item-header {\n    @apply gap-2;\n  }\n\n  .cn-item-footer {\n    @apply gap-2;\n  }\n\n  .cn-item-group {\n    @apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;\n  }\n\n  .cn-item-separator {\n    @apply my-2;\n  }\n\n  /* MARK: Kbd */\n  .cn-kbd {\n    @apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-kbd-group {\n    @apply gap-1;\n  }\n\n  /* MARK: Label */\n  .cn-label {\n    @apply gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50;\n  }\n\n  /* MARK: Menubar */\n  .cn-menubar {\n    @apply h-8 gap-0.5 rounded-lg border p-[3px];\n  }\n\n  .cn-menubar-trigger {\n    @apply hover:bg-muted aria-expanded:bg-muted rounded-sm px-1.5 py-[2px] text-sm font-medium;\n  }\n\n  .cn-menubar-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-menubar-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-menubar-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-disabled:opacity-50 data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm data-inset:pl-7;\n  }\n\n  .cn-menubar-checkbox-item-indicator {\n    @apply left-1.5 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm data-disabled:opacity-50 data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item-indicator {\n    @apply left-1.5 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-label {\n    @apply px-1.5 py-1 text-sm font-medium data-inset:pl-7;\n  }\n\n  .cn-menubar-separator {\n    @apply bg-border;\n  }\n\n  .cn-menubar-shortcut {\n    @apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest;\n  }\n\n  .cn-menubar-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-sub-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-lg p-1 shadow-lg ring-1 duration-100;\n  }\n\n  /* MARK: Navigation Menu */\n  .cn-navigation-menu {\n    @apply max-w-max;\n  }\n\n  .cn-navigation-menu-list {\n    @apply gap-0;\n  }\n\n  .cn-navigation-menu-trigger {\n    @apply bg-background hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-lg px-2.5 py-1.5 text-sm font-medium transition-all focus-visible:ring-3 focus-visible:outline-1 disabled:opacity-50;\n  }\n\n  .cn-navigation-menu-link {\n    @apply data-active:focus:bg-muted data-active:hover:bg-muted data-active:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none focus-visible:ring-3 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-navigation-menu-trigger-icon {\n    @apply relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;\n  }\n\n  .cn-navigation-menu-content {\n    @apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;\n  }\n\n  .cn-navigation-menu-viewport {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 ring-foreground/10 rounded-lg shadow ring-1 duration-100;\n  }\n\n  .cn-navigation-menu-indicator {\n    @apply data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in;\n  }\n\n  .cn-navigation-menu-indicator-arrow {\n    @apply bg-border rounded-tl-sm shadow-md;\n  }\n\n  .cn-navigation-menu-positioner {\n    @apply transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0;\n  }\n\n  .cn-navigation-menu-popup {\n    @apply bg-popover text-popover-foreground ring-foreground/10 rounded-lg shadow ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;\n  }\n\n  /* MARK: Native Select */\n  .cn-native-select {\n    @apply border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5;\n  }\n\n  .cn-native-select-icon {\n    @apply text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2;\n  }\n\n  /* MARK: Pagination */\n  .cn-pagination-content {\n    @apply gap-0.5;\n  }\n\n  .cn-pagination-ellipsis {\n    @apply size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-pagination-previous {\n    @apply pl-1.5!;\n  }\n\n  .cn-pagination-next {\n    @apply pr-1.5!;\n  }\n\n  /* MARK: Popover */\n  .cn-popover-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-2.5 rounded-lg p-2.5 text-sm shadow-md ring-1 duration-100;\n  }\n\n  .cn-popover-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-popover-header {\n    @apply flex flex-col gap-0.5 text-sm;\n  }\n\n  .cn-popover-title {\n    @apply font-medium;\n  }\n\n  .cn-popover-description {\n    @apply text-muted-foreground;\n  }\n\n  /* MARK: Progress */\n  .cn-progress {\n    @apply bg-muted h-1 rounded-full;\n  }\n\n  .cn-progress-track {\n    @apply bg-muted h-1 rounded-full;\n  }\n\n  .cn-progress-indicator {\n    @apply bg-primary;\n  }\n\n  .cn-progress-label {\n    @apply text-sm font-medium;\n  }\n\n  .cn-progress-value {\n    @apply text-muted-foreground ml-auto text-sm tabular-nums;\n  }\n\n  /* MARK: Radio Group */\n  .cn-radio-group {\n    @apply grid gap-2;\n  }\n\n  .cn-radio-group-item {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-3 aria-invalid:ring-3;\n  }\n\n  .cn-radio-group-indicator {\n    @apply flex size-4 items-center justify-center;\n  }\n\n  .cn-radio-group-indicator-icon {\n    @apply bg-primary-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full;\n  }\n\n  /* MARK: Resizable */\n  .cn-resizable-handle-icon {\n    @apply bg-border h-6 w-1 rounded-lg;\n  }\n\n  /* MARK: Scroll Area */\n  .cn-scroll-area-scrollbar {\n    @apply data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent;\n  }\n\n  .cn-scroll-area-thumb {\n    @apply rounded-full;\n  }\n\n  /* MARK: Select */\n  .cn-select-trigger {\n    @apply border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-value {\n    @apply flex flex-1 text-left;\n  }\n\n  .cn-select-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-select-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100;\n  }\n\n  .cn-select-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-select-label {\n    @apply text-muted-foreground px-1.5 py-1 text-xs;\n  }\n\n  .cn-select-item {\n    @apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;\n  }\n\n  .cn-select-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-select-group {\n    @apply scroll-my-1 p-1;\n  }\n\n  .cn-select-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-select-separator {\n    @apply bg-border -mx-1 my-1 h-px;\n  }\n\n  .cn-select-scroll-up-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-scroll-down-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Separator */\n  .cn-separator {\n    @apply bg-border shrink-0;\n  }\n\n  .cn-separator-horizontal {\n    @apply h-px w-full;\n  }\n\n  .cn-separator-vertical {\n    @apply h-full w-px;\n  }\n\n  /* MARK: Sheet */\n  .cn-sheet-overlay {\n    @apply bg-black/10 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-sheet-content {\n    @apply bg-background fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm;\n  }\n\n  .cn-sheet-close {\n    @apply absolute top-3 right-3;\n  }\n\n  .cn-sheet-header {\n    @apply gap-0.5 p-4;\n  }\n\n  .cn-sheet-footer {\n    @apply gap-2 p-4;\n  }\n\n  .cn-sheet-title {\n    @apply text-foreground text-base font-medium;\n  }\n\n  .cn-sheet-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  /* MARK: Sidebar */\n  .cn-sidebar-gap {\n    @apply transition-[width] duration-200 ease-linear;\n  }\n\n  .cn-sidebar-inner {\n    @apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;\n  }\n\n  .cn-sidebar-rail {\n    @apply hover:after:bg-sidebar-border;\n  }\n\n  .cn-sidebar-inset {\n    @apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2;\n  }\n\n  .cn-sidebar-input {\n    @apply bg-background h-8 w-full shadow-none;\n  }\n\n  .cn-sidebar-header {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-content {\n    @apply no-scrollbar gap-0;\n  }\n\n  .cn-sidebar-footer {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-separator {\n    @apply bg-sidebar-border mx-2;\n  }\n\n  .cn-sidebar-group {\n    @apply p-2;\n  }\n\n  .cn-sidebar-menu {\n    @apply gap-0;\n  }\n\n  .cn-sidebar-group-content {\n    @apply text-sm;\n  }\n\n  .cn-sidebar-group-label {\n    @apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-group-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-button {\n    @apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-md p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium;\n  }\n\n  .cn-sidebar-menu-button-variant-default {\n    @apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;\n  }\n\n  .cn-sidebar-menu-button-variant-outline {\n    @apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))];\n  }\n\n  .cn-sidebar-menu-button-size-default {\n    @apply h-8 text-sm;\n  }\n\n  .cn-sidebar-menu-button-size-sm {\n    @apply h-7 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-lg {\n    @apply h-12 text-sm group-data-[collapsible=icon]:p-0!;\n  }\n\n  .cn-sidebar-menu-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-md p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-badge {\n    @apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;\n  }\n\n  .cn-sidebar-menu-skeleton {\n    @apply h-8 gap-2 rounded-md px-2;\n  }\n\n  .cn-sidebar-menu-skeleton-icon {\n    @apply size-4 rounded-md;\n  }\n\n  .cn-sidebar-menu-skeleton-text {\n    @apply h-4;\n  }\n\n  .cn-sidebar-menu-sub {\n    @apply border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;\n  }\n\n  .cn-sidebar-menu-sub-button {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4;\n  }\n\n  /* MARK: Skeleton */\n  .cn-skeleton {\n    @apply bg-muted rounded-md;\n  }\n\n  /* MARK: Slider */\n  .cn-slider {\n    @apply data-vertical:min-h-40;\n  }\n\n  .cn-slider-track {\n    @apply bg-muted rounded-full data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1;\n  }\n\n  .cn-slider-range {\n    @apply bg-primary;\n  }\n\n  .cn-slider-thumb {\n    @apply border-ring ring-ring/50 relative size-3 rounded-full border bg-white transition-[color,box-shadow] after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3;\n  }\n\n  /* MARK: Sonner */\n  .cn-toast {\n    @apply rounded-2xl;\n  }\n\n  /* MARK: Switch */\n  .cn-switch {\n    @apply data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px];\n  }\n\n  .cn-switch-thumb {\n    @apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0;\n  }\n\n  /* MARK: Table */\n  .cn-table-container {\n    @apply relative w-full overflow-x-auto;\n  }\n\n  .cn-table {\n    @apply w-full caption-bottom text-sm;\n  }\n\n  .cn-table-header {\n    @apply [&_tr]:border-b;\n  }\n\n  .cn-table-body {\n    @apply [&_tr:last-child]:border-0;\n  }\n\n  .cn-table-footer {\n    @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;\n  }\n\n  .cn-table-row {\n    @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;\n  }\n\n  .cn-table-head {\n    @apply text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-cell {\n    @apply p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-caption {\n    @apply text-muted-foreground mt-4 text-sm;\n  }\n\n  /* MARK: Tabs */\n  .cn-tabs {\n    @apply gap-2;\n  }\n\n  .cn-tabs-list {\n    @apply rounded-lg p-[3px] group-data-horizontal/tabs:h-8 data-[variant=line]:rounded-none;\n  }\n\n  .cn-tabs-trigger {\n    @apply gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-tabs-content {\n    @apply text-sm;\n  }\n\n  /* MARK: Textarea */\n  .cn-textarea {\n    @apply border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors focus-visible:ring-3 aria-invalid:ring-3 md:text-sm;\n  }\n\n  /* MARK: Toggle */\n  .cn-toggle {\n    @apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-muted gap-1 rounded-lg text-sm font-medium transition-all [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-toggle-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-toggle-variant-outline {\n    @apply border-input hover:bg-muted border bg-transparent;\n  }\n\n  .cn-toggle-size-default {\n    @apply h-8 min-w-8 px-2;\n  }\n\n  .cn-toggle-size-sm {\n    @apply h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem];\n  }\n\n  .cn-toggle-size-lg {\n    @apply h-9 min-w-9 px-2.5;\n  }\n\n  /* MARK: Toggle Group */\n  .cn-toggle-group {\n    @apply rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)];\n  }\n\n  .cn-toggle-group-item {\n    @apply group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg;\n  }\n\n  /* MARK: Tooltip */\n  .cn-tooltip-content {\n    @apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm;\n  }\n\n  .cn-tooltip-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-tooltip-arrow {\n    @apply size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px];\n  }\n\n  .cn-tooltip-arrow-logical {\n    @apply data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2;\n  }\n\n  /* MARK: Input Group */\n  .cn-input-group {\n    @apply border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-lg border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;\n  }\n\n  .cn-input-group-addon {\n    @apply text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-addon-align-inline-start {\n    @apply pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-inline-end {\n    @apply pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-block-start {\n    @apply px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2;\n  }\n\n  .cn-input-group-addon-align-block-end {\n    @apply px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2;\n  }\n\n  .cn-input-group-button {\n    @apply gap-2 text-sm;\n  }\n\n  .cn-input-group-button-size-xs {\n    @apply h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-input-group-button-size-icon-xs {\n    @apply size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-button-size-icon-sm {\n    @apply size-8 p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-text {\n    @apply text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-input {\n    @apply rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent;\n  }\n\n  .cn-input-group-textarea {\n    @apply rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent;\n  }\n\n  /* MARK: Menu Translucent */\n  .cn-menu-translucent {\n    @apply animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!;\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/styles/style-vega.css",
    "content": ".style-vega {\n  /* MARK: Accordion */\n  .cn-accordion-item {\n    @apply not-last:border-b;\n  }\n\n  .cn-accordion-trigger {\n    @apply focus-visible:ring-ring/50 focus-visible:border-ring focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-md py-4 text-left text-sm font-medium hover:underline focus-visible:ring-3 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4;\n  }\n\n  .cn-accordion-content {\n    @apply data-open:animate-accordion-down data-closed:animate-accordion-up text-sm;\n  }\n\n  .cn-accordion-content-inner {\n    @apply pt-0 pb-4;\n  }\n\n  /* MARK: Alert Dialog */\n  .cn-alert-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-alert-dialog-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-6 rounded-xl p-6 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg;\n  }\n\n  .cn-alert-dialog-header {\n    @apply grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr];\n  }\n\n  .cn-alert-dialog-media {\n    @apply bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8;\n  }\n\n  .cn-alert-dialog-title {\n    @apply text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2;\n  }\n\n  .cn-alert-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Alert */\n  .cn-alert {\n    @apply grid gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-alert-variant-default {\n    @apply bg-card text-card-foreground;\n  }\n\n  .cn-alert-variant-destructive {\n    @apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current;\n  }\n\n  .cn-alert-title {\n    @apply font-medium group-has-[>svg]/alert:col-start-2;\n  }\n\n  .cn-alert-description {\n    @apply text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4;\n  }\n\n  .cn-alert-action {\n    @apply absolute top-2.5 right-3;\n  }\n\n  /* MARK: Avatar */\n  .cn-avatar {\n    @apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;\n  }\n\n  .cn-avatar-fallback {\n    @apply bg-muted text-muted-foreground rounded-full;\n  }\n\n  .cn-avatar-image {\n    @apply rounded-full;\n  }\n\n  .cn-avatar-badge {\n    @apply bg-primary text-primary-foreground ring-background;\n  }\n\n  .cn-avatar-group-count {\n    @apply bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;\n  }\n\n  /* MARK: Badge */\n  .cn-badge {\n    @apply h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3!;\n  }\n\n  .cn-badge-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-badge-variant-secondary {\n    @apply bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80;\n  }\n\n  .cn-badge-variant-outline {\n    @apply border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground;\n  }\n\n  .cn-badge-variant-destructive {\n    @apply bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20;\n  }\n\n  .cn-badge-variant-ghost {\n    @apply hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50;\n  }\n\n  .cn-badge-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  /* MARK: Breadcrumb */\n  .cn-breadcrumb-list {\n    @apply text-muted-foreground gap-1.5 text-sm sm:gap-2.5;\n  }\n\n  .cn-breadcrumb-item {\n    @apply gap-1.5;\n  }\n\n  .cn-breadcrumb-link {\n    @apply hover:text-foreground transition-colors;\n  }\n\n  .cn-breadcrumb-page {\n    @apply text-foreground font-normal;\n  }\n\n  .cn-breadcrumb-separator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  .cn-breadcrumb-ellipsis {\n    @apply size-5 [&>svg]:size-4;\n  }\n\n  /* MARK: Button */\n  .cn-button {\n    @apply focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 active:translate-y-px [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-variant-default {\n    @apply bg-primary text-primary-foreground hover:bg-primary/80;\n  }\n\n  .cn-button-variant-outline {\n    @apply border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs;\n  }\n\n  .cn-button-variant-secondary {\n    @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;\n  }\n\n  .cn-button-variant-ghost {\n    @apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-destructive {\n    @apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;\n  }\n\n  .cn-button-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  .cn-button-size-xs {\n    @apply h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-sm {\n    @apply h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5;\n  }\n\n  .cn-button-size-default {\n    @apply h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;\n  }\n\n  .cn-button-size-lg {\n    @apply h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3;\n  }\n\n  .cn-button-size-icon-xs {\n    @apply size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-icon-sm {\n    @apply size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md;\n  }\n\n  .cn-button-size-icon {\n    @apply size-9;\n  }\n\n  .cn-button-size-icon-lg {\n    @apply size-10;\n  }\n\n  /* MARK: Button Group */\n  .cn-button-group {\n    @apply has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md;\n  }\n\n  .cn-button-group-orientation-horizontal {\n    @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md!;\n  }\n\n  .cn-button-group-orientation-vertical {\n    @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md!;\n  }\n\n  .cn-button-group-text {\n    @apply bg-muted gap-2 rounded-md border px-2.5 text-sm font-medium shadow-xs [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-group-separator {\n    @apply bg-input;\n  }\n\n  /* MARK: Calendar */\n  .cn-calendar {\n    @apply p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)];\n  }\n\n  .cn-calendar-dropdown-root {\n    @apply has-focus:border-ring border-input has-focus:ring-ring/50 border shadow-xs has-focus:ring-3;\n  }\n\n  .cn-calendar-caption-label {\n    @apply h-8 pr-1 pl-2;\n  }\n\n  /* MARK: Card */\n  .cn-card {\n    @apply ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-xl py-6 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl;\n  }\n\n  .cn-card-header {\n    @apply gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4;\n  }\n\n  .cn-card-title {\n    @apply text-base leading-normal font-medium group-data-[size=sm]/card:text-sm;\n  }\n\n  .cn-card-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  .cn-card-content {\n    @apply px-6 group-data-[size=sm]/card:px-4;\n  }\n\n  .cn-card-footer {\n    @apply rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4;\n  }\n\n  /* MARK: Carousel */\n  .cn-carousel-previous {\n    @apply rounded-full;\n  }\n\n  .cn-carousel-next {\n    @apply rounded-full;\n  }\n\n  /* MARK: Chart */\n  .cn-chart-tooltip {\n    @apply border-border/50 bg-background gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl;\n  }\n\n  /* MARK: Checkbox */\n  .cn-checkbox {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border shadow-xs transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3;\n  }\n\n  .cn-checkbox-indicator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  /* MARK: Combobox */\n  .cn-combobox-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:border-input/30 max-h-72 min-w-36 overflow-hidden rounded-md shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none;\n  }\n\n  .cn-combobox-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-combobox-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs;\n  }\n\n  .cn-combobox-item {\n    @apply data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-combobox-empty {\n    @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-sm group-data-empty/combobox-content:flex;\n  }\n\n  .cn-combobox-list {\n    @apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0;\n  }\n\n  .cn-combobox-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-combobox-separator {\n    @apply bg-border -mx-1 my-1 h-px;\n  }\n\n  .cn-combobox-trigger {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-combobox-chips {\n    @apply dark:bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/50 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive dark:has-aria-invalid:border-destructive/50 flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:ring-3 has-aria-invalid:ring-3 has-data-[slot=combobox-chip]:px-1.5;\n  }\n\n  .cn-combobox-chip {\n    @apply bg-muted text-foreground flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm px-1.5 text-xs font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pr-0;\n  }\n\n  .cn-combobox-chip-remove {\n    @apply -ml-1 opacity-50 hover:opacity-100;\n  }\n\n  /* MARK: Command */\n  .cn-command {\n    @apply bg-popover text-popover-foreground rounded-xl! p-1;\n  }\n\n  .cn-command-dialog {\n    @apply rounded-xl!;\n  }\n\n  .cn-command-input-wrapper {\n    @apply p-1 pb-0;\n  }\n\n  .cn-command-input-group {\n    @apply bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!;\n  }\n\n  .cn-command-input-icon {\n    @apply size-4 shrink-0 opacity-50;\n  }\n\n  .cn-command-input {\n    @apply w-full text-sm;\n  }\n\n  .cn-command-list {\n    @apply no-scrollbar max-h-72 scroll-py-1 outline-none;\n  }\n\n  .cn-command-empty {\n    @apply py-6 text-center text-sm;\n  }\n\n  .cn-command-group {\n    @apply text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium;\n  }\n\n  .cn-command-separator {\n    @apply bg-border -mx-1 h-px w-auto;\n  }\n\n  .cn-command-item {\n    @apply data-selected:bg-muted data-selected:text-foreground data-selected:**:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-command-shortcut {\n    @apply text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest;\n  }\n\n  /* MARK: Context Menu */\n  .cn-context-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-md p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-context-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-context-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-item-indicator {\n    @apply absolute right-2;\n  }\n\n  .cn-context-menu-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8;\n  }\n\n  .cn-context-menu-separator {\n    @apply bg-border -mx-1 my-1 h-px;\n  }\n\n  .cn-context-menu-shortcut {\n    @apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-context-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-popover text-popover-foreground min-w-32 rounded-md border p-1 shadow-lg duration-100;\n  }\n\n  .cn-context-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Dialog */\n  .cn-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-dialog-content {\n    @apply bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-6 rounded-xl p-6 text-sm ring-1 duration-100 sm:max-w-md;\n  }\n\n  .cn-dialog-close {\n    @apply absolute top-4 right-4;\n  }\n\n  .cn-dialog-header {\n    @apply gap-2;\n  }\n\n  .cn-dialog-footer {\n    @apply gap-2;\n  }\n\n  .cn-dialog-title {\n    @apply leading-none font-medium;\n  }\n\n  .cn-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Drawer */\n  .cn-drawer-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-drawer-content {\n    @apply bg-background flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm;\n  }\n\n  .cn-drawer-handle {\n    @apply bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block;\n  }\n\n  .cn-drawer-header {\n    @apply gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left;\n  }\n\n  .cn-drawer-title {\n    @apply text-foreground font-medium;\n  }\n\n  .cn-drawer-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  .cn-drawer-footer {\n    @apply gap-2 p-4;\n  }\n\n  /* MARK: Dropdown Menu */\n  .cn-dropdown-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-md p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-dropdown-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-item-indicator {\n    @apply absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-dropdown-menu-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8;\n  }\n\n  .cn-dropdown-menu-separator {\n    @apply bg-border -mx-1 my-1 h-px;\n  }\n\n  .cn-dropdown-menu-shortcut {\n    @apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-dropdown-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-md p-1 shadow-lg ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Empty */\n  .cn-empty {\n    @apply gap-4 rounded-lg border-dashed p-12;\n  }\n\n  .cn-empty-header {\n    @apply gap-2;\n  }\n\n  .cn-empty-media {\n    @apply mb-2;\n  }\n\n  .cn-empty-media-default {\n    @apply bg-transparent;\n  }\n\n  .cn-empty-media-icon {\n    @apply bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6;\n  }\n\n  .cn-empty-title {\n    @apply text-lg font-medium tracking-tight;\n  }\n\n  .cn-empty-description {\n    @apply text-sm/relaxed;\n  }\n\n  .cn-empty-content {\n    @apply gap-4 text-sm;\n  }\n\n  /* MARK: Field */\n  .cn-field-set {\n    @apply gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3;\n  }\n\n  .cn-field-legend {\n    @apply mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base;\n  }\n\n  .cn-field-group {\n    @apply gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4;\n  }\n\n  .cn-field {\n    @apply data-[invalid=true]:text-destructive gap-3;\n  }\n\n  .cn-field-content {\n    @apply gap-1;\n  }\n\n  .cn-field-label {\n    @apply has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-3;\n  }\n\n  .cn-field-title {\n    @apply gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50;\n  }\n\n  .cn-field-description {\n    @apply text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5;\n  }\n\n  .cn-field-separator {\n    @apply -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2;\n  }\n\n  .cn-field-separator-content {\n    @apply text-muted-foreground px-2;\n  }\n\n  .cn-field-error {\n    @apply text-destructive text-sm;\n  }\n\n  /* MARK: Hover Card */\n  .cn-hover-card-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-lg p-4 text-sm shadow-md ring-1 duration-100;\n  }\n\n  .cn-hover-card-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  /* MARK: Input */\n  .cn-input {\n    @apply dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm;\n  }\n\n  /* MARK: Input OTP */\n  .cn-input-otp {\n    @apply gap-2;\n  }\n\n  .cn-input-otp-group {\n    @apply has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-md has-aria-invalid:ring-3;\n  }\n\n  .cn-input-otp-slot {\n    @apply dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-9 border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:ring-3;\n  }\n\n  .cn-input-otp-caret-line {\n    @apply animate-caret-blink bg-foreground h-4 w-px duration-1000;\n  }\n\n  .cn-input-otp-separator {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Item */\n  .cn-item {\n    @apply [a]:hover:bg-muted rounded-md border text-sm;\n  }\n\n  .cn-item-variant-default {\n    @apply border-transparent;\n  }\n\n  .cn-item-variant-outline {\n    @apply border-border;\n  }\n\n  .cn-item-variant-muted {\n    @apply bg-muted/50 border-transparent;\n  }\n\n  .cn-item-size-default {\n    @apply gap-3.5 px-4 py-3.5;\n  }\n\n  .cn-item-size-sm {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-xs {\n    @apply gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0;\n  }\n\n  .cn-item-media {\n    @apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;\n  }\n\n  .cn-item-media-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-item-media-variant-icon {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-item-media-variant-image {\n    @apply size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover;\n  }\n\n  .cn-item-content {\n    @apply gap-1 group-data-[size=xs]/item:gap-0;\n  }\n\n  .cn-item-title {\n    @apply gap-2 text-sm leading-snug font-medium underline-offset-4;\n  }\n\n  .cn-item-description {\n    @apply text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs;\n  }\n\n  .cn-item-actions {\n    @apply gap-2;\n  }\n\n  .cn-item-header {\n    @apply gap-2;\n  }\n\n  .cn-item-footer {\n    @apply gap-2;\n  }\n\n  .cn-item-group {\n    @apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;\n  }\n\n  .cn-item-separator {\n    @apply my-2;\n  }\n\n  /* MARK: Kbd */\n  .cn-kbd {\n    @apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-kbd-group {\n    @apply gap-1;\n  }\n\n  /* MARK: Label */\n  .cn-label {\n    @apply gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50;\n  }\n\n  /* MARK: Menubar */\n  .cn-menubar {\n    @apply h-9 gap-1 rounded-md border p-1 shadow-xs;\n  }\n\n  .cn-menubar-trigger {\n    @apply hover:bg-muted aria-expanded:bg-muted rounded-sm px-2 py-1 text-sm font-medium;\n  }\n\n  .cn-menubar-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md p-1 shadow-md ring-1 duration-100;\n  }\n\n  .cn-menubar-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-menubar-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm data-inset:pl-8;\n  }\n\n  .cn-menubar-checkbox-item-indicator {\n    @apply left-2 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item-indicator {\n    @apply left-2 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-label {\n    @apply px-2 py-1.5 text-sm font-medium data-inset:pl-8;\n  }\n\n  .cn-menubar-separator {\n    @apply bg-border;\n  }\n\n  .cn-menubar-shortcut {\n    @apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest;\n  }\n\n  .cn-menubar-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-sub-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-md p-1 shadow-lg ring-1 duration-100;\n  }\n\n  /* MARK: Navigation Menu */\n  .cn-navigation-menu {\n    @apply max-w-max;\n  }\n\n  .cn-navigation-menu-list {\n    @apply gap-0;\n  }\n\n  .cn-navigation-menu-trigger {\n    @apply bg-background hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-md px-4 py-2 text-sm font-medium transition-all focus-visible:ring-3 focus-visible:outline-1 disabled:opacity-50;\n  }\n\n  .cn-navigation-menu-trigger-icon {\n    @apply relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;\n  }\n\n  .cn-navigation-menu-content {\n    @apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-2 pr-2.5 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;\n  }\n\n  .cn-navigation-menu-viewport {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 ring-foreground/10 rounded-lg shadow ring-1 duration-100;\n  }\n\n  .cn-navigation-menu-link {\n    @apply data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-center gap-1.5 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-3 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-navigation-menu-indicator {\n    @apply data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in;\n  }\n\n  .cn-navigation-menu-indicator-arrow {\n    @apply bg-border rounded-tl-sm shadow-md;\n  }\n\n  .cn-navigation-menu-positioner {\n    @apply transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0;\n  }\n\n  .cn-navigation-menu-popup {\n    @apply bg-popover text-popover-foreground ring-foreground/10 rounded-lg shadow ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;\n  }\n\n  /* MARK: Native Select */\n  .cn-native-select {\n    @apply border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 w-full min-w-0 appearance-none rounded-md border bg-transparent py-1 pr-8 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-8;\n  }\n\n  .cn-native-select-icon {\n    @apply text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2;\n  }\n\n  /* MARK: Pagination */\n  .cn-pagination-content {\n    @apply gap-1;\n  }\n\n  .cn-pagination-ellipsis {\n    @apply size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-pagination-previous {\n    @apply pl-2!;\n  }\n\n  .cn-pagination-next {\n    @apply pr-2!;\n  }\n\n  /* MARK: Popover */\n  .cn-popover-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-4 rounded-md p-4 text-sm shadow-md ring-1 duration-100;\n  }\n\n  .cn-popover-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-popover-header {\n    @apply flex flex-col gap-1 text-sm;\n  }\n\n  .cn-popover-title {\n    @apply font-medium;\n  }\n\n  .cn-popover-description {\n    @apply text-muted-foreground;\n  }\n\n  /* MARK: Progress */\n  .cn-progress {\n    @apply bg-muted h-1.5 rounded-full;\n  }\n\n  .cn-progress-track {\n    @apply bg-muted h-1.5 rounded-full;\n  }\n\n  .cn-progress-indicator {\n    @apply bg-primary;\n  }\n\n  .cn-progress-label {\n    @apply text-sm font-medium;\n  }\n\n  .cn-progress-value {\n    @apply text-muted-foreground ml-auto text-sm tabular-nums;\n  }\n\n  /* MARK: Radio Group */\n  .cn-radio-group {\n    @apply grid gap-3;\n  }\n\n  .cn-radio-group-item {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-3 aria-invalid:ring-3;\n  }\n\n  .cn-radio-group-indicator {\n    @apply flex size-4 items-center justify-center;\n  }\n\n  .cn-radio-group-indicator-icon {\n    @apply bg-primary-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full;\n  }\n\n  /* MARK: Resizable */\n  .cn-resizable-handle-icon {\n    @apply bg-border h-6 w-1 rounded-lg;\n  }\n\n  /* MARK: Scroll Area */\n  .cn-scroll-area-scrollbar {\n    @apply data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent;\n  }\n\n  .cn-scroll-area-thumb {\n    @apply rounded-full;\n  }\n\n  /* MARK: Select */\n  .cn-select-trigger {\n    @apply border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border bg-transparent py-2 pr-2 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-value {\n    @apply flex flex-1 text-left;\n  }\n\n  .cn-select-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-select-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md shadow-md ring-1 duration-100;\n  }\n\n  .cn-select-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-select-label {\n    @apply text-muted-foreground px-2 py-1.5 text-xs;\n  }\n\n  .cn-select-item {\n    @apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;\n  }\n\n  .cn-select-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-select-group {\n    @apply scroll-my-1 p-1;\n  }\n\n  .cn-select-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-select-separator {\n    @apply bg-border -mx-1 my-1 h-px;\n  }\n\n  .cn-select-scroll-up-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-scroll-down-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Separator */\n  .cn-separator {\n    @apply bg-border shrink-0;\n  }\n\n  .cn-separator-horizontal {\n    @apply h-px w-full;\n  }\n\n  .cn-separator-vertical {\n    @apply h-full w-px;\n  }\n\n  /* MARK: Sheet */\n  .cn-sheet-overlay {\n    @apply bg-black/10 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-sheet-content {\n    @apply bg-background fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm;\n  }\n\n  .cn-sheet-close {\n    @apply absolute top-4 right-4;\n  }\n\n  .cn-sheet-header {\n    @apply gap-1.5 p-4;\n  }\n\n  .cn-sheet-footer {\n    @apply gap-2 p-4;\n  }\n\n  .cn-sheet-title {\n    @apply text-foreground font-medium;\n  }\n\n  .cn-sheet-description {\n    @apply text-muted-foreground text-sm;\n  }\n\n  /* MARK: Sidebar */\n  .cn-sidebar-gap {\n    @apply transition-[width] duration-200 ease-linear;\n  }\n\n  .cn-sidebar-inner {\n    @apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;\n  }\n\n  .cn-sidebar-rail {\n    @apply hover:after:bg-sidebar-border;\n  }\n\n  .cn-sidebar-inset {\n    @apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2;\n  }\n\n  .cn-sidebar-input {\n    @apply bg-background h-8 w-full shadow-none;\n  }\n\n  .cn-sidebar-header {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-content {\n    @apply no-scrollbar gap-2;\n  }\n\n  .cn-sidebar-footer {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-separator {\n    @apply bg-sidebar-border mx-2;\n  }\n\n  .cn-sidebar-group {\n    @apply p-2;\n  }\n\n  .cn-sidebar-menu {\n    @apply gap-1;\n  }\n\n  .cn-sidebar-group-content {\n    @apply text-sm;\n  }\n\n  .cn-sidebar-group-label {\n    @apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-group-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-button {\n    @apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-md p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium;\n  }\n\n  .cn-sidebar-menu-button-variant-default {\n    @apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;\n  }\n\n  .cn-sidebar-menu-button-variant-outline {\n    @apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))];\n  }\n\n  .cn-sidebar-menu-button-size-default {\n    @apply h-8 text-sm;\n  }\n\n  .cn-sidebar-menu-button-size-sm {\n    @apply h-7 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-lg {\n    @apply h-12 text-sm group-data-[collapsible=icon]:p-0!;\n  }\n\n  .cn-sidebar-menu-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-md p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-badge {\n    @apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;\n  }\n\n  .cn-sidebar-menu-skeleton {\n    @apply h-8 gap-2 rounded-md px-2;\n  }\n\n  .cn-sidebar-menu-skeleton-icon {\n    @apply size-4 rounded-md;\n  }\n\n  .cn-sidebar-menu-skeleton-text {\n    @apply h-4;\n  }\n\n  .cn-sidebar-menu-sub {\n    @apply border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;\n  }\n\n  .cn-sidebar-menu-sub-button {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4;\n  }\n\n  /* MARK: Skeleton */\n  .cn-skeleton {\n    @apply bg-muted rounded-md;\n  }\n\n  /* MARK: Slider */\n  .cn-slider {\n    @apply data-vertical:min-h-40;\n  }\n\n  .cn-slider-track {\n    @apply bg-muted rounded-full data-horizontal:h-1.5 data-horizontal:w-full data-vertical:h-full data-vertical:w-1.5;\n  }\n\n  .cn-slider-range {\n    @apply bg-primary;\n  }\n\n  .cn-slider-thumb {\n    @apply border-primary ring-ring/50 size-4 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden;\n  }\n\n  /* MARK: Sonner */\n  .cn-toast {\n    @apply rounded-2xl;\n  }\n\n  /* MARK: Switch */\n  .cn-switch {\n    @apply data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent shadow-xs focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px];\n  }\n\n  .cn-switch-thumb {\n    @apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0;\n  }\n\n  /* MARK: Table */\n  .cn-table-container {\n    @apply relative w-full overflow-x-auto;\n  }\n\n  .cn-table {\n    @apply w-full caption-bottom text-sm;\n  }\n\n  .cn-table-header {\n    @apply [&_tr]:border-b;\n  }\n\n  .cn-table-body {\n    @apply [&_tr:last-child]:border-0;\n  }\n\n  .cn-table-footer {\n    @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;\n  }\n\n  .cn-table-row {\n    @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;\n  }\n\n  .cn-table-head {\n    @apply text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-cell {\n    @apply p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-caption {\n    @apply text-muted-foreground mt-4 text-sm;\n  }\n\n  /* MARK: Tabs */\n  .cn-tabs {\n    @apply gap-2;\n  }\n\n  .cn-tabs-list {\n    @apply rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none;\n  }\n\n  .cn-tabs-trigger {\n    @apply gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-tabs-content {\n    @apply text-sm;\n  }\n\n  /* MARK: Textarea */\n  .cn-textarea {\n    @apply border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 md:text-sm;\n  }\n\n  /* MARK: Toggle */\n  .cn-toggle {\n    @apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive gap-1 rounded-md text-sm font-medium transition-[color,box-shadow] [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-toggle-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-toggle-variant-outline {\n    @apply border-input hover:bg-muted border bg-transparent shadow-xs;\n  }\n\n  .cn-toggle-size-default {\n    @apply h-9 min-w-9 px-2;\n  }\n\n  .cn-toggle-size-sm {\n    @apply h-8 min-w-8 px-1.5;\n  }\n\n  .cn-toggle-size-lg {\n    @apply h-10 min-w-10 px-2.5;\n  }\n\n  /* MARK: Toggle Group */\n  .cn-toggle-group {\n    @apply rounded-md data-[spacing=0]:data-[variant=outline]:shadow-xs;\n  }\n\n  .cn-toggle-group-item {\n    @apply data-[state=on]:bg-muted group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:shadow-none group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md;\n  }\n\n  /* MARK: Tooltip */\n  .cn-tooltip-content {\n    @apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm;\n  }\n\n  .cn-tooltip-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-tooltip-arrow {\n    @apply size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px];\n  }\n\n  .cn-tooltip-arrow-logical {\n    @apply data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2;\n  }\n\n  /* MARK: Input Group */\n  .cn-input-group {\n    @apply border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-md border shadow-xs transition-[color,box-shadow] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;\n  }\n\n  .cn-input-group-addon {\n    @apply text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-addon-align-inline-start {\n    @apply pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-inline-end {\n    @apply pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-block-start {\n    @apply px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2;\n  }\n\n  .cn-input-group-addon-align-block-end {\n    @apply px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2;\n  }\n\n  .cn-input-group-button {\n    @apply gap-2 text-sm;\n  }\n\n  .cn-input-group-button-size-xs {\n    @apply h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-input-group-button-size-icon-xs {\n    @apply size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-button-size-icon-sm {\n    @apply size-8 p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-text {\n    @apply text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-input {\n    @apply rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;\n  }\n\n  .cn-input-group-textarea {\n    @apply rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;\n  }\n\n  /* MARK: Menu Translucent */\n  .cn-menu-translucent {\n    @apply animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!;\n  }\n}\n"
  },
  {
    "path": "apps/v4/registry/styles.tsx",
    "content": "import * as React from \"react\"\n\nexport const STYLES = [\n  {\n    name: \"vega\",\n    title: \"Vega\",\n    description: \"Clean, neutral, and familiar\",\n    icon: (\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"128\"\n        height=\"128\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        role=\"img\"\n        color=\"currentColor\"\n      >\n        <path\n          d=\"M2.5 12C2.5 7.52166 2.5 5.28249 3.89124 3.89124C5.28249 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124C21.5 5.28249 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28249 21.5 3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12Z\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n        ></path>\n      </svg>\n    ),\n  },\n  {\n    name: \"nova\",\n    title: \"Nova\",\n    description: \"Reduced padding and margins\",\n    icon: (\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"128\"\n        height=\"128\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        role=\"img\"\n        color=\"currentColor\"\n      >\n        <path\n          d=\"M2 12C2 9.19974 2 7.79961 2.54497 6.73005C3.02433 5.78924 3.78924 5.02433 4.73005 4.54497C5.79961 4 7.19974 4 10 4H14C16.8003 4 18.2004 4 19.27 4.54497C20.2108 5.02433 20.9757 5.78924 21.455 6.73005C22 7.79961 22 9.19974 22 12C22 14.8003 22 16.2004 21.455 17.27C20.9757 18.2108 20.2108 18.9757 19.27 19.455C18.2004 20 16.8003 20 14 20H10C7.19974 20 5.79961 20 4.73005 19.455C3.78924 18.9757 3.02433 18.2108 2.54497 17.27C2 16.2004 2 14.8003 2 12Z\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          strokeLinejoin=\"round\"\n        ></path>\n      </svg>\n    ),\n  },\n  {\n    name: \"maia\",\n    title: \"Maia\",\n    description: \"Rounded, with generous spacing.\",\n    icon: (\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"128\"\n        height=\"128\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        role=\"img\"\n        color=\"currentColor\"\n      >\n        <circle\n          cx=\"12\"\n          cy=\"12\"\n          r=\"10\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          strokeLinejoin=\"round\"\n        ></circle>\n      </svg>\n    ),\n  },\n  {\n    name: \"lyra\",\n    title: \"Lyra\",\n    description: \"Boxy and sharp. For mono fonts.\",\n    icon: (\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"128\"\n        height=\"128\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        role=\"img\"\n        color=\"currentColor\"\n      >\n        <path\n          d=\"M7.84308 3.80211C9.8718 2.6007 10.8862 2 12 2C13.1138 2 14.1282 2.6007 16.1569 3.80211L16.8431 4.20846C18.8718 5.40987 19.8862 6.01057 20.4431 7C21 7.98943 21 9.19084 21 11.5937V12.4063C21 14.8092 21 16.0106 20.4431 17C19.8862 17.9894 18.8718 18.5901 16.8431 19.7915L16.1569 20.1979C14.1282 21.3993 13.1138 22 12 22C10.8862 22 9.8718 21.3993 7.84308 20.1979L7.15692 19.7915C5.1282 18.5901 4.11384 17.9894 3.55692 17C3 16.0106 3 14.8092 3 12.4063V11.5937C3 9.19084 3 7.98943 3.55692 7C4.11384 6.01057 5.1282 5.40987 7.15692 4.20846L7.84308 3.80211Z\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n        ></path>\n      </svg>\n    ),\n  },\n  {\n    name: \"mira\",\n    title: \"Mira\",\n    description: \"Made for compact interfaces.\",\n    icon: (\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"128\"\n        height=\"128\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        role=\"img\"\n        color=\"currentColor\"\n      >\n        <path\n          d=\"M5.92089 5.92089C8.15836 3.68342 9.2771 2.56468 10.5857 2.19562C11.5105 1.93479 12.4895 1.93479 13.4143 2.19562C14.7229 2.56468 15.8416 3.68342 18.0791 5.92089C20.3166 8.15836 21.4353 9.2771 21.8044 10.5857C22.0652 11.5105 22.0652 12.4895 21.8044 13.4143C21.4353 14.7229 20.3166 15.8416 18.0791 18.0791C15.8416 20.3166 14.7229 21.4353 13.4143 21.8044C12.4895 22.0652 11.5105 22.0652 10.5857 21.8044C9.2771 21.4353 8.15836 20.3166 5.92089 18.0791C3.68342 15.8416 2.56468 14.7229 2.19562 13.4143C1.93479 12.4895 1.93479 11.5105 2.19562 10.5857C2.56468 9.2771 3.68342 8.15836 5.92089 5.92089Z\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          strokeLinejoin=\"round\"\n        ></path>\n      </svg>\n    ),\n  },\n] as const\n\nexport type Style = (typeof STYLES)[number]\n"
  },
  {
    "path": "apps/v4/registry/themes.ts",
    "content": "import { type RegistryItem } from \"shadcn/schema\"\n\nexport const THEMES: RegistryItem[] = [\n  {\n    name: \"neutral\",\n    title: \"Neutral\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        background: \"oklch(1 0 0)\",\n        foreground: \"oklch(0.145 0 0)\",\n        card: \"oklch(1 0 0)\",\n        \"card-foreground\": \"oklch(0.145 0 0)\",\n        popover: \"oklch(1 0 0)\",\n        \"popover-foreground\": \"oklch(0.145 0 0)\",\n        primary: \"oklch(0.205 0 0)\",\n        \"primary-foreground\": \"oklch(0.985 0 0)\",\n        secondary: \"oklch(0.97 0 0)\",\n        \"secondary-foreground\": \"oklch(0.205 0 0)\",\n        muted: \"oklch(0.97 0 0)\",\n        \"muted-foreground\": \"oklch(0.556 0 0)\",\n        accent: \"oklch(0.97 0 0)\",\n        \"accent-foreground\": \"oklch(0.205 0 0)\",\n        destructive: \"oklch(0.577 0.245 27.325)\",\n        border: \"oklch(0.922 0 0)\",\n        input: \"oklch(0.922 0 0)\",\n        ring: \"oklch(0.708 0 0)\",\n        \"chart-1\": \"oklch(0.87 0 0)\",\n        \"chart-2\": \"oklch(0.556 0 0)\",\n        \"chart-3\": \"oklch(0.439 0 0)\",\n        \"chart-4\": \"oklch(0.371 0 0)\",\n        \"chart-5\": \"oklch(0.269 0 0)\",\n        radius: \"0.625rem\",\n        sidebar: \"oklch(0.985 0 0)\",\n        \"sidebar-foreground\": \"oklch(0.145 0 0)\",\n        \"sidebar-primary\": \"oklch(0.205 0 0)\",\n        \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-accent\": \"oklch(0.97 0 0)\",\n        \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\",\n        \"sidebar-border\": \"oklch(0.922 0 0)\",\n        \"sidebar-ring\": \"oklch(0.708 0 0)\",\n      },\n      dark: {\n        background: \"oklch(0.145 0 0)\",\n        foreground: \"oklch(0.985 0 0)\",\n        card: \"oklch(0.205 0 0)\",\n        \"card-foreground\": \"oklch(0.985 0 0)\",\n        popover: \"oklch(0.205 0 0)\",\n        \"popover-foreground\": \"oklch(0.985 0 0)\",\n        primary: \"oklch(0.922 0 0)\",\n        \"primary-foreground\": \"oklch(0.205 0 0)\",\n        secondary: \"oklch(0.269 0 0)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        muted: \"oklch(0.269 0 0)\",\n        \"muted-foreground\": \"oklch(0.708 0 0)\",\n        accent: \"oklch(0.269 0 0)\",\n        \"accent-foreground\": \"oklch(0.985 0 0)\",\n        destructive: \"oklch(0.704 0.191 22.216)\",\n        border: \"oklch(1 0 0 / 10%)\",\n        input: \"oklch(1 0 0 / 15%)\",\n        ring: \"oklch(0.556 0 0)\",\n        \"chart-1\": \"oklch(0.87 0 0)\",\n        \"chart-2\": \"oklch(0.556 0 0)\",\n        \"chart-3\": \"oklch(0.439 0 0)\",\n        \"chart-4\": \"oklch(0.371 0 0)\",\n        \"chart-5\": \"oklch(0.269 0 0)\",\n        sidebar: \"oklch(0.205 0 0)\",\n        \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n        \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-accent\": \"oklch(0.269 0 0)\",\n        \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n        \"sidebar-ring\": \"oklch(0.556 0 0)\",\n      },\n    },\n  },\n  {\n    name: \"stone\",\n    title: \"Stone\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        background: \"oklch(1 0 0)\",\n        foreground: \"oklch(0.147 0.004 49.25)\",\n        card: \"oklch(1 0 0)\",\n        \"card-foreground\": \"oklch(0.147 0.004 49.25)\",\n        popover: \"oklch(1 0 0)\",\n        \"popover-foreground\": \"oklch(0.147 0.004 49.25)\",\n        primary: \"oklch(0.216 0.006 56.043)\",\n        \"primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n        secondary: \"oklch(0.97 0.001 106.424)\",\n        \"secondary-foreground\": \"oklch(0.216 0.006 56.043)\",\n        muted: \"oklch(0.97 0.001 106.424)\",\n        \"muted-foreground\": \"oklch(0.553 0.013 58.071)\",\n        accent: \"oklch(0.97 0.001 106.424)\",\n        \"accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n        destructive: \"oklch(0.577 0.245 27.325)\",\n        border: \"oklch(0.923 0.003 48.717)\",\n        input: \"oklch(0.923 0.003 48.717)\",\n        ring: \"oklch(0.709 0.01 56.259)\",\n        \"chart-1\": \"oklch(0.869 0.005 56.366)\",\n        \"chart-2\": \"oklch(0.553 0.013 58.071)\",\n        \"chart-3\": \"oklch(0.444 0.011 73.639)\",\n        \"chart-4\": \"oklch(0.374 0.01 67.558)\",\n        \"chart-5\": \"oklch(0.268 0.007 34.298)\",\n        radius: \"0.625rem\",\n        sidebar: \"oklch(0.985 0.001 106.423)\",\n        \"sidebar-foreground\": \"oklch(0.147 0.004 49.25)\",\n        \"sidebar-primary\": \"oklch(0.216 0.006 56.043)\",\n        \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n        \"sidebar-accent\": \"oklch(0.97 0.001 106.424)\",\n        \"sidebar-accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n        \"sidebar-border\": \"oklch(0.923 0.003 48.717)\",\n        \"sidebar-ring\": \"oklch(0.709 0.01 56.259)\",\n      },\n      dark: {\n        background: \"oklch(0.147 0.004 49.25)\",\n        foreground: \"oklch(0.985 0.001 106.423)\",\n        card: \"oklch(0.216 0.006 56.043)\",\n        \"card-foreground\": \"oklch(0.985 0.001 106.423)\",\n        popover: \"oklch(0.216 0.006 56.043)\",\n        \"popover-foreground\": \"oklch(0.985 0.001 106.423)\",\n        primary: \"oklch(0.923 0.003 48.717)\",\n        \"primary-foreground\": \"oklch(0.216 0.006 56.043)\",\n        secondary: \"oklch(0.268 0.007 34.298)\",\n        \"secondary-foreground\": \"oklch(0.985 0.001 106.423)\",\n        muted: \"oklch(0.268 0.007 34.298)\",\n        \"muted-foreground\": \"oklch(0.709 0.01 56.259)\",\n        accent: \"oklch(0.268 0.007 34.298)\",\n        \"accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n        destructive: \"oklch(0.704 0.191 22.216)\",\n        border: \"oklch(1 0 0 / 10%)\",\n        input: \"oklch(1 0 0 / 15%)\",\n        ring: \"oklch(0.553 0.013 58.071)\",\n        \"chart-1\": \"oklch(0.869 0.005 56.366)\",\n        \"chart-2\": \"oklch(0.553 0.013 58.071)\",\n        \"chart-3\": \"oklch(0.444 0.011 73.639)\",\n        \"chart-4\": \"oklch(0.374 0.01 67.558)\",\n        \"chart-5\": \"oklch(0.268 0.007 34.298)\",\n        sidebar: \"oklch(0.216 0.006 56.043)\",\n        \"sidebar-foreground\": \"oklch(0.985 0.001 106.423)\",\n        \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n        \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n        \"sidebar-accent\": \"oklch(0.268 0.007 34.298)\",\n        \"sidebar-accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n        \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n        \"sidebar-ring\": \"oklch(0.553 0.013 58.071)\",\n      },\n    },\n  },\n  {\n    name: \"zinc\",\n    title: \"Zinc\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        background: \"oklch(1 0 0)\",\n        foreground: \"oklch(0.141 0.005 285.823)\",\n        card: \"oklch(1 0 0)\",\n        \"card-foreground\": \"oklch(0.141 0.005 285.823)\",\n        popover: \"oklch(1 0 0)\",\n        \"popover-foreground\": \"oklch(0.141 0.005 285.823)\",\n        primary: \"oklch(0.21 0.006 285.885)\",\n        \"primary-foreground\": \"oklch(0.985 0 0)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        muted: \"oklch(0.967 0.001 286.375)\",\n        \"muted-foreground\": \"oklch(0.552 0.016 285.938)\",\n        accent: \"oklch(0.967 0.001 286.375)\",\n        \"accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n        destructive: \"oklch(0.577 0.245 27.325)\",\n        border: \"oklch(0.92 0.004 286.32)\",\n        input: \"oklch(0.92 0.004 286.32)\",\n        ring: \"oklch(0.705 0.015 286.067)\",\n        \"chart-1\": \"oklch(0.871 0.006 286.286)\",\n        \"chart-2\": \"oklch(0.552 0.016 285.938)\",\n        \"chart-3\": \"oklch(0.442 0.017 285.786)\",\n        \"chart-4\": \"oklch(0.37 0.013 285.805)\",\n        \"chart-5\": \"oklch(0.274 0.006 286.033)\",\n        radius: \"0.625rem\",\n        sidebar: \"oklch(0.985 0 0)\",\n        \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\",\n        \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\",\n        \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\",\n        \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"sidebar-border\": \"oklch(0.92 0.004 286.32)\",\n        \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\",\n      },\n      dark: {\n        background: \"oklch(0.141 0.005 285.823)\",\n        foreground: \"oklch(0.985 0 0)\",\n        card: \"oklch(0.21 0.006 285.885)\",\n        \"card-foreground\": \"oklch(0.985 0 0)\",\n        popover: \"oklch(0.21 0.006 285.885)\",\n        \"popover-foreground\": \"oklch(0.985 0 0)\",\n        primary: \"oklch(0.92 0.004 286.32)\",\n        \"primary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        muted: \"oklch(0.274 0.006 286.033)\",\n        \"muted-foreground\": \"oklch(0.705 0.015 286.067)\",\n        accent: \"oklch(0.274 0.006 286.033)\",\n        \"accent-foreground\": \"oklch(0.985 0 0)\",\n        destructive: \"oklch(0.704 0.191 22.216)\",\n        border: \"oklch(1 0 0 / 10%)\",\n        input: \"oklch(1 0 0 / 15%)\",\n        ring: \"oklch(0.552 0.016 285.938)\",\n        \"chart-1\": \"oklch(0.871 0.006 286.286)\",\n        \"chart-2\": \"oklch(0.552 0.016 285.938)\",\n        \"chart-3\": \"oklch(0.442 0.017 285.786)\",\n        \"chart-4\": \"oklch(0.37 0.013 285.805)\",\n        \"chart-5\": \"oklch(0.274 0.006 286.033)\",\n        sidebar: \"oklch(0.21 0.006 285.885)\",\n        \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n        \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\",\n        \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n        \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\",\n      },\n    },\n  },\n  {\n    name: \"mauve\",\n    title: \"Mauve\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        background: \"oklch(1 0 0)\",\n        foreground: \"oklch(0.145 0.008 326)\",\n        card: \"oklch(1 0 0)\",\n        \"card-foreground\": \"oklch(0.145 0.008 326)\",\n        popover: \"oklch(1 0 0)\",\n        \"popover-foreground\": \"oklch(0.145 0.008 326)\",\n        primary: \"oklch(0.212 0.019 322.12)\",\n        \"primary-foreground\": \"oklch(0.985 0 0)\",\n        secondary: \"oklch(0.96 0.003 325.6)\",\n        \"secondary-foreground\": \"oklch(0.212 0.019 322.12)\",\n        muted: \"oklch(0.96 0.003 325.6)\",\n        \"muted-foreground\": \"oklch(0.542 0.034 322.5)\",\n        accent: \"oklch(0.96 0.003 325.6)\",\n        \"accent-foreground\": \"oklch(0.212 0.019 322.12)\",\n        destructive: \"oklch(0.577 0.245 27.325)\",\n        border: \"oklch(0.922 0.005 325.62)\",\n        input: \"oklch(0.922 0.005 325.62)\",\n        ring: \"oklch(0.711 0.019 323.02)\",\n        \"chart-1\": \"oklch(0.865 0.012 325.68)\",\n        \"chart-2\": \"oklch(0.542 0.034 322.5)\",\n        \"chart-3\": \"oklch(0.435 0.029 321.78)\",\n        \"chart-4\": \"oklch(0.364 0.029 323.89)\",\n        \"chart-5\": \"oklch(0.263 0.024 320.12)\",\n        radius: \"0.625rem\",\n        sidebar: \"oklch(0.985 0 0)\",\n        \"sidebar-foreground\": \"oklch(0.145 0.008 326)\",\n        \"sidebar-primary\": \"oklch(0.212 0.019 322.12)\",\n        \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-accent\": \"oklch(0.96 0.003 325.6)\",\n        \"sidebar-accent-foreground\": \"oklch(0.212 0.019 322.12)\",\n        \"sidebar-border\": \"oklch(0.922 0.005 325.62)\",\n        \"sidebar-ring\": \"oklch(0.711 0.019 323.02)\",\n      },\n      dark: {\n        background: \"oklch(0.145 0.008 326)\",\n        foreground: \"oklch(0.985 0 0)\",\n        card: \"oklch(0.212 0.019 322.12)\",\n        \"card-foreground\": \"oklch(0.985 0 0)\",\n        popover: \"oklch(0.212 0.019 322.12)\",\n        \"popover-foreground\": \"oklch(0.985 0 0)\",\n        primary: \"oklch(0.922 0.005 325.62)\",\n        \"primary-foreground\": \"oklch(0.212 0.019 322.12)\",\n        secondary: \"oklch(0.263 0.024 320.12)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        muted: \"oklch(0.263 0.024 320.12)\",\n        \"muted-foreground\": \"oklch(0.711 0.019 323.02)\",\n        accent: \"oklch(0.263 0.024 320.12)\",\n        \"accent-foreground\": \"oklch(0.985 0 0)\",\n        destructive: \"oklch(0.704 0.191 22.216)\",\n        border: \"oklch(1 0 0 / 10%)\",\n        input: \"oklch(1 0 0 / 15%)\",\n        ring: \"oklch(0.542 0.034 322.5)\",\n        \"chart-1\": \"oklch(0.865 0.012 325.68)\",\n        \"chart-2\": \"oklch(0.542 0.034 322.5)\",\n        \"chart-3\": \"oklch(0.435 0.029 321.78)\",\n        \"chart-4\": \"oklch(0.364 0.029 323.89)\",\n        \"chart-5\": \"oklch(0.263 0.024 320.12)\",\n        sidebar: \"oklch(0.212 0.019 322.12)\",\n        \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n        \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-accent\": \"oklch(0.263 0.024 320.12)\",\n        \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n        \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n        \"sidebar-ring\": \"oklch(0.542 0.034 322.5)\",\n      },\n    },\n  },\n  {\n    name: \"olive\",\n    title: \"Olive\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        background: \"oklch(1 0 0)\",\n        foreground: \"oklch(0.153 0.006 107.1)\",\n        card: \"oklch(1 0 0)\",\n        \"card-foreground\": \"oklch(0.153 0.006 107.1)\",\n        popover: \"oklch(1 0 0)\",\n        \"popover-foreground\": \"oklch(0.153 0.006 107.1)\",\n        primary: \"oklch(0.228 0.013 107.4)\",\n        \"primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n        secondary: \"oklch(0.966 0.005 106.5)\",\n        \"secondary-foreground\": \"oklch(0.228 0.013 107.4)\",\n        muted: \"oklch(0.966 0.005 106.5)\",\n        \"muted-foreground\": \"oklch(0.58 0.031 107.3)\",\n        accent: \"oklch(0.966 0.005 106.5)\",\n        \"accent-foreground\": \"oklch(0.228 0.013 107.4)\",\n        destructive: \"oklch(0.577 0.245 27.325)\",\n        border: \"oklch(0.93 0.007 106.5)\",\n        input: \"oklch(0.93 0.007 106.5)\",\n        ring: \"oklch(0.737 0.021 106.9)\",\n        \"chart-1\": \"oklch(0.88 0.011 106.6)\",\n        \"chart-2\": \"oklch(0.58 0.031 107.3)\",\n        \"chart-3\": \"oklch(0.466 0.025 107.3)\",\n        \"chart-4\": \"oklch(0.394 0.023 107.4)\",\n        \"chart-5\": \"oklch(0.286 0.016 107.4)\",\n        radius: \"0.625rem\",\n        sidebar: \"oklch(0.988 0.003 106.5)\",\n        \"sidebar-foreground\": \"oklch(0.153 0.006 107.1)\",\n        \"sidebar-primary\": \"oklch(0.228 0.013 107.4)\",\n        \"sidebar-primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n        \"sidebar-accent\": \"oklch(0.966 0.005 106.5)\",\n        \"sidebar-accent-foreground\": \"oklch(0.228 0.013 107.4)\",\n        \"sidebar-border\": \"oklch(0.93 0.007 106.5)\",\n        \"sidebar-ring\": \"oklch(0.737 0.021 106.9)\",\n      },\n      dark: {\n        background: \"oklch(0.153 0.006 107.1)\",\n        foreground: \"oklch(0.988 0.003 106.5)\",\n        card: \"oklch(0.228 0.013 107.4)\",\n        \"card-foreground\": \"oklch(0.988 0.003 106.5)\",\n        popover: \"oklch(0.228 0.013 107.4)\",\n        \"popover-foreground\": \"oklch(0.988 0.003 106.5)\",\n        primary: \"oklch(0.93 0.007 106.5)\",\n        \"primary-foreground\": \"oklch(0.228 0.013 107.4)\",\n        secondary: \"oklch(0.286 0.016 107.4)\",\n        \"secondary-foreground\": \"oklch(0.988 0.003 106.5)\",\n        muted: \"oklch(0.286 0.016 107.4)\",\n        \"muted-foreground\": \"oklch(0.737 0.021 106.9)\",\n        accent: \"oklch(0.286 0.016 107.4)\",\n        \"accent-foreground\": \"oklch(0.988 0.003 106.5)\",\n        destructive: \"oklch(0.704 0.191 22.216)\",\n        border: \"oklch(1 0 0 / 10%)\",\n        input: \"oklch(1 0 0 / 15%)\",\n        ring: \"oklch(0.58 0.031 107.3)\",\n        \"chart-1\": \"oklch(0.88 0.011 106.6)\",\n        \"chart-2\": \"oklch(0.58 0.031 107.3)\",\n        \"chart-3\": \"oklch(0.466 0.025 107.3)\",\n        \"chart-4\": \"oklch(0.394 0.023 107.4)\",\n        \"chart-5\": \"oklch(0.286 0.016 107.4)\",\n        sidebar: \"oklch(0.228 0.013 107.4)\",\n        \"sidebar-foreground\": \"oklch(0.988 0.003 106.5)\",\n        \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n        \"sidebar-primary-foreground\": \"oklch(0.988 0.003 106.5)\",\n        \"sidebar-accent\": \"oklch(0.286 0.016 107.4)\",\n        \"sidebar-accent-foreground\": \"oklch(0.988 0.003 106.5)\",\n        \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n        \"sidebar-ring\": \"oklch(0.58 0.031 107.3)\",\n      },\n    },\n  },\n  {\n    name: \"mist\",\n    title: \"Mist\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        background: \"oklch(1 0 0)\",\n        foreground: \"oklch(0.148 0.004 228.8)\",\n        card: \"oklch(1 0 0)\",\n        \"card-foreground\": \"oklch(0.148 0.004 228.8)\",\n        popover: \"oklch(1 0 0)\",\n        \"popover-foreground\": \"oklch(0.148 0.004 228.8)\",\n        primary: \"oklch(0.218 0.008 223.9)\",\n        \"primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n        secondary: \"oklch(0.963 0.002 197.1)\",\n        \"secondary-foreground\": \"oklch(0.218 0.008 223.9)\",\n        muted: \"oklch(0.963 0.002 197.1)\",\n        \"muted-foreground\": \"oklch(0.56 0.021 213.5)\",\n        accent: \"oklch(0.963 0.002 197.1)\",\n        \"accent-foreground\": \"oklch(0.218 0.008 223.9)\",\n        destructive: \"oklch(0.577 0.245 27.325)\",\n        border: \"oklch(0.925 0.005 214.3)\",\n        input: \"oklch(0.925 0.005 214.3)\",\n        ring: \"oklch(0.723 0.014 214.4)\",\n        \"chart-1\": \"oklch(0.872 0.007 219.6)\",\n        \"chart-2\": \"oklch(0.56 0.021 213.5)\",\n        \"chart-3\": \"oklch(0.45 0.017 213.2)\",\n        \"chart-4\": \"oklch(0.378 0.015 216)\",\n        \"chart-5\": \"oklch(0.275 0.011 216.9)\",\n        radius: \"0.625rem\",\n        sidebar: \"oklch(0.987 0.002 197.1)\",\n        \"sidebar-foreground\": \"oklch(0.148 0.004 228.8)\",\n        \"sidebar-primary\": \"oklch(0.218 0.008 223.9)\",\n        \"sidebar-primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n        \"sidebar-accent\": \"oklch(0.963 0.002 197.1)\",\n        \"sidebar-accent-foreground\": \"oklch(0.218 0.008 223.9)\",\n        \"sidebar-border\": \"oklch(0.925 0.005 214.3)\",\n        \"sidebar-ring\": \"oklch(0.723 0.014 214.4)\",\n      },\n      dark: {\n        background: \"oklch(0.148 0.004 228.8)\",\n        foreground: \"oklch(0.987 0.002 197.1)\",\n        card: \"oklch(0.218 0.008 223.9)\",\n        \"card-foreground\": \"oklch(0.987 0.002 197.1)\",\n        popover: \"oklch(0.218 0.008 223.9)\",\n        \"popover-foreground\": \"oklch(0.987 0.002 197.1)\",\n        primary: \"oklch(0.925 0.005 214.3)\",\n        \"primary-foreground\": \"oklch(0.218 0.008 223.9)\",\n        secondary: \"oklch(0.275 0.011 216.9)\",\n        \"secondary-foreground\": \"oklch(0.987 0.002 197.1)\",\n        muted: \"oklch(0.275 0.011 216.9)\",\n        \"muted-foreground\": \"oklch(0.723 0.014 214.4)\",\n        accent: \"oklch(0.275 0.011 216.9)\",\n        \"accent-foreground\": \"oklch(0.987 0.002 197.1)\",\n        destructive: \"oklch(0.704 0.191 22.216)\",\n        border: \"oklch(1 0 0 / 10%)\",\n        input: \"oklch(1 0 0 / 15%)\",\n        ring: \"oklch(0.56 0.021 213.5)\",\n        \"chart-1\": \"oklch(0.872 0.007 219.6)\",\n        \"chart-2\": \"oklch(0.56 0.021 213.5)\",\n        \"chart-3\": \"oklch(0.45 0.017 213.2)\",\n        \"chart-4\": \"oklch(0.378 0.015 216)\",\n        \"chart-5\": \"oklch(0.275 0.011 216.9)\",\n        sidebar: \"oklch(0.218 0.008 223.9)\",\n        \"sidebar-foreground\": \"oklch(0.987 0.002 197.1)\",\n        \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n        \"sidebar-primary-foreground\": \"oklch(0.987 0.002 197.1)\",\n        \"sidebar-accent\": \"oklch(0.275 0.011 216.9)\",\n        \"sidebar-accent-foreground\": \"oklch(0.987 0.002 197.1)\",\n        \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n        \"sidebar-ring\": \"oklch(0.56 0.021 213.5)\",\n      },\n    },\n  },\n  {\n    name: \"taupe\",\n    title: \"Taupe\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        background: \"oklch(1 0 0)\",\n        foreground: \"oklch(0.147 0.004 49.3)\",\n        card: \"oklch(1 0 0)\",\n        \"card-foreground\": \"oklch(0.147 0.004 49.3)\",\n        popover: \"oklch(1 0 0)\",\n        \"popover-foreground\": \"oklch(0.147 0.004 49.3)\",\n        primary: \"oklch(0.214 0.009 43.1)\",\n        \"primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n        secondary: \"oklch(0.96 0.002 17.2)\",\n        \"secondary-foreground\": \"oklch(0.214 0.009 43.1)\",\n        muted: \"oklch(0.96 0.002 17.2)\",\n        \"muted-foreground\": \"oklch(0.547 0.021 43.1)\",\n        accent: \"oklch(0.96 0.002 17.2)\",\n        \"accent-foreground\": \"oklch(0.214 0.009 43.1)\",\n        destructive: \"oklch(0.577 0.245 27.325)\",\n        border: \"oklch(0.922 0.005 34.3)\",\n        input: \"oklch(0.922 0.005 34.3)\",\n        ring: \"oklch(0.714 0.014 41.2)\",\n        \"chart-1\": \"oklch(0.868 0.007 39.5)\",\n        \"chart-2\": \"oklch(0.547 0.021 43.1)\",\n        \"chart-3\": \"oklch(0.438 0.017 39.3)\",\n        \"chart-4\": \"oklch(0.367 0.016 35.7)\",\n        \"chart-5\": \"oklch(0.268 0.011 36.5)\",\n        radius: \"0.625rem\",\n        sidebar: \"oklch(0.986 0.002 67.8)\",\n        \"sidebar-foreground\": \"oklch(0.147 0.004 49.3)\",\n        \"sidebar-primary\": \"oklch(0.214 0.009 43.1)\",\n        \"sidebar-primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n        \"sidebar-accent\": \"oklch(0.96 0.002 17.2)\",\n        \"sidebar-accent-foreground\": \"oklch(0.214 0.009 43.1)\",\n        \"sidebar-border\": \"oklch(0.922 0.005 34.3)\",\n        \"sidebar-ring\": \"oklch(0.714 0.014 41.2)\",\n      },\n      dark: {\n        background: \"oklch(0.147 0.004 49.3)\",\n        foreground: \"oklch(0.986 0.002 67.8)\",\n        card: \"oklch(0.214 0.009 43.1)\",\n        \"card-foreground\": \"oklch(0.986 0.002 67.8)\",\n        popover: \"oklch(0.214 0.009 43.1)\",\n        \"popover-foreground\": \"oklch(0.986 0.002 67.8)\",\n        primary: \"oklch(0.922 0.005 34.3)\",\n        \"primary-foreground\": \"oklch(0.214 0.009 43.1)\",\n        secondary: \"oklch(0.268 0.011 36.5)\",\n        \"secondary-foreground\": \"oklch(0.986 0.002 67.8)\",\n        muted: \"oklch(0.268 0.011 36.5)\",\n        \"muted-foreground\": \"oklch(0.714 0.014 41.2)\",\n        accent: \"oklch(0.268 0.011 36.5)\",\n        \"accent-foreground\": \"oklch(0.986 0.002 67.8)\",\n        destructive: \"oklch(0.704 0.191 22.216)\",\n        border: \"oklch(1 0 0 / 10%)\",\n        input: \"oklch(1 0 0 / 15%)\",\n        ring: \"oklch(0.547 0.021 43.1)\",\n        \"chart-1\": \"oklch(0.868 0.007 39.5)\",\n        \"chart-2\": \"oklch(0.547 0.021 43.1)\",\n        \"chart-3\": \"oklch(0.438 0.017 39.3)\",\n        \"chart-4\": \"oklch(0.367 0.016 35.7)\",\n        \"chart-5\": \"oklch(0.268 0.011 36.5)\",\n        sidebar: \"oklch(0.214 0.009 43.1)\",\n        \"sidebar-foreground\": \"oklch(0.986 0.002 67.8)\",\n        \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n        \"sidebar-primary-foreground\": \"oklch(0.986 0.002 67.8)\",\n        \"sidebar-accent\": \"oklch(0.268 0.011 36.5)\",\n        \"sidebar-accent-foreground\": \"oklch(0.986 0.002 67.8)\",\n        \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n        \"sidebar-ring\": \"oklch(0.547 0.021 43.1)\",\n      },\n    },\n  },\n  {\n    name: \"amber\",\n    title: \"Amber\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.555 0.163 48.998)\",\n        \"primary-foreground\": \"oklch(0.987 0.022 95.277)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.879 0.169 91.605)\",\n        \"chart-2\": \"oklch(0.769 0.188 70.08)\",\n        \"chart-3\": \"oklch(0.666 0.179 58.318)\",\n        \"chart-4\": \"oklch(0.555 0.163 48.998)\",\n        \"chart-5\": \"oklch(0.473 0.137 46.201)\",\n        \"sidebar-primary\": \"oklch(0.666 0.179 58.318)\",\n        \"sidebar-primary-foreground\": \"oklch(0.987 0.022 95.277)\",\n      },\n      dark: {\n        primary: \"oklch(0.473 0.137 46.201)\",\n        \"primary-foreground\": \"oklch(0.987 0.022 95.277)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.879 0.169 91.605)\",\n        \"chart-2\": \"oklch(0.769 0.188 70.08)\",\n        \"chart-3\": \"oklch(0.666 0.179 58.318)\",\n        \"chart-4\": \"oklch(0.555 0.163 48.998)\",\n        \"chart-5\": \"oklch(0.473 0.137 46.201)\",\n        \"sidebar-primary\": \"oklch(0.769 0.188 70.08)\",\n        \"sidebar-primary-foreground\": \"oklch(0.279 0.077 45.635)\",\n      },\n    },\n  },\n  {\n    name: \"blue\",\n    title: \"Blue\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.488 0.243 264.376)\",\n        \"primary-foreground\": \"oklch(0.97 0.014 254.604)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.809 0.105 251.813)\",\n        \"chart-2\": \"oklch(0.623 0.214 259.815)\",\n        \"chart-3\": \"oklch(0.546 0.245 262.881)\",\n        \"chart-4\": \"oklch(0.488 0.243 264.376)\",\n        \"chart-5\": \"oklch(0.424 0.199 265.638)\",\n        \"sidebar-primary\": \"oklch(0.546 0.245 262.881)\",\n        \"sidebar-primary-foreground\": \"oklch(0.97 0.014 254.604)\",\n      },\n      dark: {\n        primary: \"oklch(0.424 0.199 265.638)\",\n        \"primary-foreground\": \"oklch(0.97 0.014 254.604)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.809 0.105 251.813)\",\n        \"chart-2\": \"oklch(0.623 0.214 259.815)\",\n        \"chart-3\": \"oklch(0.546 0.245 262.881)\",\n        \"chart-4\": \"oklch(0.488 0.243 264.376)\",\n        \"chart-5\": \"oklch(0.424 0.199 265.638)\",\n        \"sidebar-primary\": \"oklch(0.623 0.214 259.815)\",\n        \"sidebar-primary-foreground\": \"oklch(0.97 0.014 254.604)\",\n      },\n    },\n  },\n  {\n    name: \"cyan\",\n    title: \"Cyan\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.52 0.105 223.128)\",\n        \"primary-foreground\": \"oklch(0.984 0.019 200.873)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.865 0.127 207.078)\",\n        \"chart-2\": \"oklch(0.715 0.143 215.221)\",\n        \"chart-3\": \"oklch(0.609 0.126 221.723)\",\n        \"chart-4\": \"oklch(0.52 0.105 223.128)\",\n        \"chart-5\": \"oklch(0.45 0.085 224.283)\",\n        \"sidebar-primary\": \"oklch(0.609 0.126 221.723)\",\n        \"sidebar-primary-foreground\": \"oklch(0.984 0.019 200.873)\",\n      },\n      dark: {\n        primary: \"oklch(0.45 0.085 224.283)\",\n        \"primary-foreground\": \"oklch(0.984 0.019 200.873)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.865 0.127 207.078)\",\n        \"chart-2\": \"oklch(0.715 0.143 215.221)\",\n        \"chart-3\": \"oklch(0.609 0.126 221.723)\",\n        \"chart-4\": \"oklch(0.52 0.105 223.128)\",\n        \"chart-5\": \"oklch(0.45 0.085 224.283)\",\n        \"sidebar-primary\": \"oklch(0.715 0.143 215.221)\",\n        \"sidebar-primary-foreground\": \"oklch(0.302 0.056 229.695)\",\n      },\n    },\n  },\n  {\n    name: \"emerald\",\n    title: \"Emerald\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.508 0.118 165.612)\",\n        \"primary-foreground\": \"oklch(0.979 0.021 166.113)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.845 0.143 164.978)\",\n        \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n        \"chart-3\": \"oklch(0.596 0.145 163.225)\",\n        \"chart-4\": \"oklch(0.508 0.118 165.612)\",\n        \"chart-5\": \"oklch(0.432 0.095 166.913)\",\n        \"sidebar-primary\": \"oklch(0.596 0.145 163.225)\",\n        \"sidebar-primary-foreground\": \"oklch(0.979 0.021 166.113)\",\n      },\n      dark: {\n        primary: \"oklch(0.432 0.095 166.913)\",\n        \"primary-foreground\": \"oklch(0.979 0.021 166.113)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.845 0.143 164.978)\",\n        \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n        \"chart-3\": \"oklch(0.596 0.145 163.225)\",\n        \"chart-4\": \"oklch(0.508 0.118 165.612)\",\n        \"chart-5\": \"oklch(0.432 0.095 166.913)\",\n        \"sidebar-primary\": \"oklch(0.696 0.17 162.48)\",\n        \"sidebar-primary-foreground\": \"oklch(0.262 0.051 172.552)\",\n      },\n    },\n  },\n  {\n    name: \"fuchsia\",\n    title: \"Fuchsia\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.518 0.253 323.949)\",\n        \"primary-foreground\": \"oklch(0.977 0.017 320.058)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.833 0.145 321.434)\",\n        \"chart-2\": \"oklch(0.667 0.295 322.15)\",\n        \"chart-3\": \"oklch(0.591 0.293 322.896)\",\n        \"chart-4\": \"oklch(0.518 0.253 323.949)\",\n        \"chart-5\": \"oklch(0.452 0.211 324.591)\",\n        \"sidebar-primary\": \"oklch(0.591 0.293 322.896)\",\n        \"sidebar-primary-foreground\": \"oklch(0.977 0.017 320.058)\",\n      },\n      dark: {\n        primary: \"oklch(0.452 0.211 324.591)\",\n        \"primary-foreground\": \"oklch(0.977 0.017 320.058)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.833 0.145 321.434)\",\n        \"chart-2\": \"oklch(0.667 0.295 322.15)\",\n        \"chart-3\": \"oklch(0.591 0.293 322.896)\",\n        \"chart-4\": \"oklch(0.518 0.253 323.949)\",\n        \"chart-5\": \"oklch(0.452 0.211 324.591)\",\n        \"sidebar-primary\": \"oklch(0.667 0.295 322.15)\",\n        \"sidebar-primary-foreground\": \"oklch(0.977 0.017 320.058)\",\n      },\n    },\n  },\n  {\n    name: \"green\",\n    title: \"Green\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.532 0.157 131.589)\",\n        \"primary-foreground\": \"oklch(0.986 0.031 120.757)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.871 0.15 154.449)\",\n        \"chart-2\": \"oklch(0.723 0.219 149.579)\",\n        \"chart-3\": \"oklch(0.627 0.194 149.214)\",\n        \"chart-4\": \"oklch(0.527 0.154 150.069)\",\n        \"chart-5\": \"oklch(0.448 0.119 151.328)\",\n        \"sidebar-primary\": \"oklch(0.648 0.2 131.684)\",\n        \"sidebar-primary-foreground\": \"oklch(0.986 0.031 120.757)\",\n      },\n      dark: {\n        primary: \"oklch(0.453 0.124 130.933)\",\n        \"primary-foreground\": \"oklch(0.986 0.031 120.757)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.871 0.15 154.449)\",\n        \"chart-2\": \"oklch(0.723 0.219 149.579)\",\n        \"chart-3\": \"oklch(0.627 0.194 149.214)\",\n        \"chart-4\": \"oklch(0.527 0.154 150.069)\",\n        \"chart-5\": \"oklch(0.448 0.119 151.328)\",\n        \"sidebar-primary\": \"oklch(0.768 0.233 130.85)\",\n        \"sidebar-primary-foreground\": \"oklch(0.986 0.031 120.757)\",\n      },\n    },\n  },\n  {\n    name: \"indigo\",\n    title: \"Indigo\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.457 0.24 277.023)\",\n        \"primary-foreground\": \"oklch(0.962 0.018 272.314)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.785 0.115 274.713)\",\n        \"chart-2\": \"oklch(0.585 0.233 277.117)\",\n        \"chart-3\": \"oklch(0.511 0.262 276.966)\",\n        \"chart-4\": \"oklch(0.457 0.24 277.023)\",\n        \"chart-5\": \"oklch(0.398 0.195 277.366)\",\n        \"sidebar-primary\": \"oklch(0.511 0.262 276.966)\",\n        \"sidebar-primary-foreground\": \"oklch(0.962 0.018 272.314)\",\n      },\n      dark: {\n        primary: \"oklch(0.398 0.195 277.366)\",\n        \"primary-foreground\": \"oklch(0.962 0.018 272.314)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.785 0.115 274.713)\",\n        \"chart-2\": \"oklch(0.585 0.233 277.117)\",\n        \"chart-3\": \"oklch(0.511 0.262 276.966)\",\n        \"chart-4\": \"oklch(0.457 0.24 277.023)\",\n        \"chart-5\": \"oklch(0.398 0.195 277.366)\",\n        \"sidebar-primary\": \"oklch(0.585 0.233 277.117)\",\n        \"sidebar-primary-foreground\": \"oklch(0.962 0.018 272.314)\",\n      },\n    },\n  },\n  {\n    name: \"lime\",\n    title: \"Lime\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.532 0.157 131.589)\",\n        \"primary-foreground\": \"oklch(0.986 0.031 120.757)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.897 0.196 126.665)\",\n        \"chart-2\": \"oklch(0.768 0.233 130.85)\",\n        \"chart-3\": \"oklch(0.648 0.2 131.684)\",\n        \"chart-4\": \"oklch(0.532 0.157 131.589)\",\n        \"chart-5\": \"oklch(0.453 0.124 130.933)\",\n        \"sidebar-primary\": \"oklch(0.648 0.2 131.684)\",\n        \"sidebar-primary-foreground\": \"oklch(0.986 0.031 120.757)\",\n      },\n      dark: {\n        primary: \"oklch(0.453 0.124 130.933)\",\n        \"primary-foreground\": \"oklch(0.986 0.031 120.757)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.897 0.196 126.665)\",\n        \"chart-2\": \"oklch(0.768 0.233 130.85)\",\n        \"chart-3\": \"oklch(0.648 0.2 131.684)\",\n        \"chart-4\": \"oklch(0.532 0.157 131.589)\",\n        \"chart-5\": \"oklch(0.453 0.124 130.933)\",\n        \"sidebar-primary\": \"oklch(0.768 0.233 130.85)\",\n        \"sidebar-primary-foreground\": \"oklch(0.274 0.072 132.109)\",\n      },\n    },\n  },\n  {\n    name: \"orange\",\n    title: \"Orange\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.553 0.195 38.402)\",\n        \"primary-foreground\": \"oklch(0.98 0.016 73.684)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.837 0.128 66.29)\",\n        \"chart-2\": \"oklch(0.705 0.213 47.604)\",\n        \"chart-3\": \"oklch(0.646 0.222 41.116)\",\n        \"chart-4\": \"oklch(0.553 0.195 38.402)\",\n        \"chart-5\": \"oklch(0.47 0.157 37.304)\",\n        \"sidebar-primary\": \"oklch(0.646 0.222 41.116)\",\n        \"sidebar-primary-foreground\": \"oklch(0.98 0.016 73.684)\",\n      },\n      dark: {\n        primary: \"oklch(0.47 0.157 37.304)\",\n        \"primary-foreground\": \"oklch(0.98 0.016 73.684)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.837 0.128 66.29)\",\n        \"chart-2\": \"oklch(0.705 0.213 47.604)\",\n        \"chart-3\": \"oklch(0.646 0.222 41.116)\",\n        \"chart-4\": \"oklch(0.553 0.195 38.402)\",\n        \"chart-5\": \"oklch(0.47 0.157 37.304)\",\n        \"sidebar-primary\": \"oklch(0.705 0.213 47.604)\",\n        \"sidebar-primary-foreground\": \"oklch(0.98 0.016 73.684)\",\n      },\n    },\n  },\n  {\n    name: \"pink\",\n    title: \"Pink\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.525 0.223 3.958)\",\n        \"primary-foreground\": \"oklch(0.971 0.014 343.198)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.823 0.12 346.018)\",\n        \"chart-2\": \"oklch(0.656 0.241 354.308)\",\n        \"chart-3\": \"oklch(0.592 0.249 0.584)\",\n        \"chart-4\": \"oklch(0.525 0.223 3.958)\",\n        \"chart-5\": \"oklch(0.459 0.187 3.815)\",\n        \"sidebar-primary\": \"oklch(0.592 0.249 0.584)\",\n        \"sidebar-primary-foreground\": \"oklch(0.971 0.014 343.198)\",\n      },\n      dark: {\n        primary: \"oklch(0.459 0.187 3.815)\",\n        \"primary-foreground\": \"oklch(0.971 0.014 343.198)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.823 0.12 346.018)\",\n        \"chart-2\": \"oklch(0.656 0.241 354.308)\",\n        \"chart-3\": \"oklch(0.592 0.249 0.584)\",\n        \"chart-4\": \"oklch(0.525 0.223 3.958)\",\n        \"chart-5\": \"oklch(0.459 0.187 3.815)\",\n        \"sidebar-primary\": \"oklch(0.656 0.241 354.308)\",\n        \"sidebar-primary-foreground\": \"oklch(0.971 0.014 343.198)\",\n      },\n    },\n  },\n  {\n    name: \"purple\",\n    title: \"Purple\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.496 0.265 301.924)\",\n        \"primary-foreground\": \"oklch(0.977 0.014 308.299)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.827 0.119 306.383)\",\n        \"chart-2\": \"oklch(0.627 0.265 303.9)\",\n        \"chart-3\": \"oklch(0.558 0.288 302.321)\",\n        \"chart-4\": \"oklch(0.496 0.265 301.924)\",\n        \"chart-5\": \"oklch(0.438 0.218 303.724)\",\n        \"sidebar-primary\": \"oklch(0.558 0.288 302.321)\",\n        \"sidebar-primary-foreground\": \"oklch(0.977 0.014 308.299)\",\n      },\n      dark: {\n        primary: \"oklch(0.438 0.218 303.724)\",\n        \"primary-foreground\": \"oklch(0.977 0.014 308.299)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.827 0.119 306.383)\",\n        \"chart-2\": \"oklch(0.627 0.265 303.9)\",\n        \"chart-3\": \"oklch(0.558 0.288 302.321)\",\n        \"chart-4\": \"oklch(0.496 0.265 301.924)\",\n        \"chart-5\": \"oklch(0.438 0.218 303.724)\",\n        \"sidebar-primary\": \"oklch(0.627 0.265 303.9)\",\n        \"sidebar-primary-foreground\": \"oklch(0.977 0.014 308.299)\",\n      },\n    },\n  },\n  {\n    name: \"red\",\n    title: \"Red\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.505 0.213 27.518)\",\n        \"primary-foreground\": \"oklch(0.971 0.013 17.38)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.808 0.114 19.571)\",\n        \"chart-2\": \"oklch(0.637 0.237 25.331)\",\n        \"chart-3\": \"oklch(0.577 0.245 27.325)\",\n        \"chart-4\": \"oklch(0.505 0.213 27.518)\",\n        \"chart-5\": \"oklch(0.444 0.177 26.899)\",\n        \"sidebar-primary\": \"oklch(0.577 0.245 27.325)\",\n        \"sidebar-primary-foreground\": \"oklch(0.971 0.013 17.38)\",\n      },\n      dark: {\n        primary: \"oklch(0.444 0.177 26.899)\",\n        \"primary-foreground\": \"oklch(0.971 0.013 17.38)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.808 0.114 19.571)\",\n        \"chart-2\": \"oklch(0.637 0.237 25.331)\",\n        \"chart-3\": \"oklch(0.577 0.245 27.325)\",\n        \"chart-4\": \"oklch(0.505 0.213 27.518)\",\n        \"chart-5\": \"oklch(0.444 0.177 26.899)\",\n        \"sidebar-primary\": \"oklch(0.637 0.237 25.331)\",\n        \"sidebar-primary-foreground\": \"oklch(0.971 0.013 17.38)\",\n      },\n    },\n  },\n  {\n    name: \"rose\",\n    title: \"Rose\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.514 0.222 16.935)\",\n        \"primary-foreground\": \"oklch(0.969 0.015 12.422)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.81 0.117 11.638)\",\n        \"chart-2\": \"oklch(0.645 0.246 16.439)\",\n        \"chart-3\": \"oklch(0.586 0.253 17.585)\",\n        \"chart-4\": \"oklch(0.514 0.222 16.935)\",\n        \"chart-5\": \"oklch(0.455 0.188 13.697)\",\n        \"sidebar-primary\": \"oklch(0.586 0.253 17.585)\",\n        \"sidebar-primary-foreground\": \"oklch(0.969 0.015 12.422)\",\n      },\n      dark: {\n        primary: \"oklch(0.455 0.188 13.697)\",\n        \"primary-foreground\": \"oklch(0.969 0.015 12.422)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.81 0.117 11.638)\",\n        \"chart-2\": \"oklch(0.645 0.246 16.439)\",\n        \"chart-3\": \"oklch(0.586 0.253 17.585)\",\n        \"chart-4\": \"oklch(0.514 0.222 16.935)\",\n        \"chart-5\": \"oklch(0.455 0.188 13.697)\",\n        sidebar: \"oklch(0.21 0.006 285.885)\",\n        \"sidebar-primary\": \"oklch(0.645 0.246 16.439)\",\n        \"sidebar-primary-foreground\": \"oklch(0.969 0.015 12.422)\",\n      },\n    },\n  },\n  {\n    name: \"sky\",\n    title: \"Sky\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.5 0.134 242.749)\",\n        \"primary-foreground\": \"oklch(0.977 0.013 236.62)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.828 0.111 230.318)\",\n        \"chart-2\": \"oklch(0.685 0.169 237.323)\",\n        \"chart-3\": \"oklch(0.588 0.158 241.966)\",\n        \"chart-4\": \"oklch(0.5 0.134 242.749)\",\n        \"chart-5\": \"oklch(0.443 0.11 240.79)\",\n        \"sidebar-primary\": \"oklch(0.588 0.158 241.966)\",\n        \"sidebar-primary-foreground\": \"oklch(0.977 0.013 236.62)\",\n      },\n      dark: {\n        primary: \"oklch(0.443 0.11 240.79)\",\n        \"primary-foreground\": \"oklch(0.977 0.013 236.62)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.828 0.111 230.318)\",\n        \"chart-2\": \"oklch(0.685 0.169 237.323)\",\n        \"chart-3\": \"oklch(0.588 0.158 241.966)\",\n        \"chart-4\": \"oklch(0.5 0.134 242.749)\",\n        \"chart-5\": \"oklch(0.443 0.11 240.79)\",\n        \"sidebar-primary\": \"oklch(0.685 0.169 237.323)\",\n        \"sidebar-primary-foreground\": \"oklch(0.293 0.066 243.157)\",\n      },\n    },\n  },\n  {\n    name: \"teal\",\n    title: \"Teal\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.511 0.096 186.391)\",\n        \"primary-foreground\": \"oklch(0.984 0.014 180.72)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.855 0.138 181.071)\",\n        \"chart-2\": \"oklch(0.704 0.14 182.503)\",\n        \"chart-3\": \"oklch(0.6 0.118 184.704)\",\n        \"chart-4\": \"oklch(0.511 0.096 186.391)\",\n        \"chart-5\": \"oklch(0.437 0.078 188.216)\",\n        \"sidebar-primary\": \"oklch(0.6 0.118 184.704)\",\n        \"sidebar-primary-foreground\": \"oklch(0.984 0.014 180.72)\",\n      },\n      dark: {\n        primary: \"oklch(0.437 0.078 188.216)\",\n        \"primary-foreground\": \"oklch(0.984 0.014 180.72)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.855 0.138 181.071)\",\n        \"chart-2\": \"oklch(0.704 0.14 182.503)\",\n        \"chart-3\": \"oklch(0.6 0.118 184.704)\",\n        \"chart-4\": \"oklch(0.511 0.096 186.391)\",\n        \"chart-5\": \"oklch(0.437 0.078 188.216)\",\n        \"sidebar-primary\": \"oklch(0.704 0.14 182.503)\",\n        \"sidebar-primary-foreground\": \"oklch(0.277 0.046 192.524)\",\n      },\n    },\n  },\n  {\n    name: \"violet\",\n    title: \"Violet\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.491 0.27 292.581)\",\n        \"primary-foreground\": \"oklch(0.969 0.016 293.756)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.811 0.111 293.571)\",\n        \"chart-2\": \"oklch(0.606 0.25 292.717)\",\n        \"chart-3\": \"oklch(0.541 0.281 293.009)\",\n        \"chart-4\": \"oklch(0.491 0.27 292.581)\",\n        \"chart-5\": \"oklch(0.432 0.232 292.759)\",\n        \"sidebar-primary\": \"oklch(0.541 0.281 293.009)\",\n        \"sidebar-primary-foreground\": \"oklch(0.969 0.016 293.756)\",\n      },\n      dark: {\n        primary: \"oklch(0.432 0.232 292.759)\",\n        \"primary-foreground\": \"oklch(0.969 0.016 293.756)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.811 0.111 293.571)\",\n        \"chart-2\": \"oklch(0.606 0.25 292.717)\",\n        \"chart-3\": \"oklch(0.541 0.281 293.009)\",\n        \"chart-4\": \"oklch(0.491 0.27 292.581)\",\n        \"chart-5\": \"oklch(0.432 0.232 292.759)\",\n        \"sidebar-primary\": \"oklch(0.606 0.25 292.717)\",\n        \"sidebar-primary-foreground\": \"oklch(0.969 0.016 293.756)\",\n      },\n    },\n  },\n  {\n    name: \"yellow\",\n    title: \"Yellow\",\n    type: \"registry:theme\",\n    cssVars: {\n      light: {\n        primary: \"oklch(0.852 0.199 91.936)\",\n        \"primary-foreground\": \"oklch(0.421 0.095 57.708)\",\n        secondary: \"oklch(0.967 0.001 286.375)\",\n        \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n        \"chart-1\": \"oklch(0.905 0.182 98.111)\",\n        \"chart-2\": \"oklch(0.795 0.184 86.047)\",\n        \"chart-3\": \"oklch(0.681 0.162 75.834)\",\n        \"chart-4\": \"oklch(0.554 0.135 66.442)\",\n        \"chart-5\": \"oklch(0.476 0.114 61.907)\",\n        \"sidebar-primary\": \"oklch(0.681 0.162 75.834)\",\n        \"sidebar-primary-foreground\": \"oklch(0.987 0.026 102.212)\",\n      },\n      dark: {\n        primary: \"oklch(0.795 0.184 86.047)\",\n        \"primary-foreground\": \"oklch(0.421 0.095 57.708)\",\n        secondary: \"oklch(0.274 0.006 286.033)\",\n        \"secondary-foreground\": \"oklch(0.985 0 0)\",\n        \"chart-1\": \"oklch(0.905 0.182 98.111)\",\n        \"chart-2\": \"oklch(0.795 0.184 86.047)\",\n        \"chart-3\": \"oklch(0.681 0.162 75.834)\",\n        \"chart-4\": \"oklch(0.554 0.135 66.442)\",\n        \"chart-5\": \"oklch(0.476 0.114 61.907)\",\n        \"sidebar-primary\": \"oklch(0.795 0.184 86.047)\",\n        \"sidebar-primary-foreground\": \"oklch(0.987 0.026 102.212)\",\n      },\n    },\n  },\n] as const satisfies RegistryItem[]\n\nexport type Theme = (typeof THEMES)[number]\n"
  },
  {
    "path": "apps/v4/registry.json",
    "content": "{\n  \"name\": \"shadcn/ui\",\n  \"homepage\": \"https://ui.shadcn.com\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\"],\n      \"devDependencies\": [\"tw-animate-css\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {}\n    },\n    {\n      \"name\": \"style\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\"class-variance-authority\", \"lucide-react\"],\n      \"devDependencies\": [\"tw-animate-css\"],\n      \"registryDependencies\": [\"utils\"],\n      \"files\": [],\n      \"cssVars\": {}\n    },\n    {\n      \"name\": \"accordion\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-accordion\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-dialog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-alert-dialog\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"aspect-ratio\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-aspect-ratio\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"avatar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-slot\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-slot\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-slot\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\"button\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/button-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"react-day-picker@latest\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"embla-carousel-react\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"recharts@2.15.4\", \"lucide-react\"],\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"collapsible\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-collapsible\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"cmdk\"],\n      \"registryDependencies\": [\"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/command.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"context-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-context-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"vaul\", \"@radix-ui/react-dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-dropdown-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/empty.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\"label\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/field.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-label\",\n        \"@radix-ui/react-slot\",\n        \"@hookform/resolvers\",\n        \"zod\",\n        \"react-hook-form\"\n      ],\n      \"registryDependencies\": [\"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/form.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hover-card\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-hover-card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/hover-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\"button\", \"input\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/input-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/item.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"label\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/label.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"menubar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-menubar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"navigation-menu\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-navigation-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pagination\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"popover\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"progress\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-progress\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-radio-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"react-resizable-panels\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-scroll-area\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"separator\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-slot\",\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"tooltip\",\n        \"input\",\n        \"use-mobile\",\n        \"skeleton\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ],\n      \"tailwind\": {\n        \"config\": {\n          \"theme\": {\n            \"extend\": {\n              \"colors\": {\n                \"sidebar\": {\n                  \"DEFAULT\": \"hsl(var(--sidebar-background))\",\n                  \"foreground\": \"hsl(var(--sidebar-foreground))\",\n                  \"primary\": \"hsl(var(--sidebar-primary))\",\n                  \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n                  \"accent\": \"hsl(var(--sidebar-accent))\",\n                  \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n                  \"border\": \"hsl(var(--sidebar-border))\",\n                  \"ring\": \"hsl(var(--sidebar-ring))\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"cssVars\": {\n        \"light\": {\n          \"sidebar-background\": \"0 0% 98%\",\n          \"sidebar-foreground\": \"240 5.3% 26.1%\",\n          \"sidebar-primary\": \"240 5.9% 10%\",\n          \"sidebar-primary-foreground\": \"0 0% 98%\",\n          \"sidebar-accent\": \"240 4.8% 95.9%\",\n          \"sidebar-accent-foreground\": \"240 5.9% 10%\",\n          \"sidebar-border\": \"220 13% 91%\",\n          \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n        },\n        \"dark\": {\n          \"sidebar-background\": \"240 5.9% 10%\",\n          \"sidebar-foreground\": \"240 4.8% 95.9%\",\n          \"sidebar-primary\": \"224.3 76.3% 48%\",\n          \"sidebar-primary-foreground\": \"0 0% 100%\",\n          \"sidebar-accent\": \"240 3.7% 15.9%\",\n          \"sidebar-accent-foreground\": \"240 4.8% 95.9%\",\n          \"sidebar-border\": \"240 3.7% 15.9%\",\n          \"sidebar-ring\": \"217.2 91.2% 59.8%\"\n        }\n      }\n    },\n    {\n      \"name\": \"skeleton\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"slider\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-slider\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"sonner\", \"next-themes\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"class-variance-authority\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/spinner.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-switch\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/table.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tabs\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-tabs\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-toggle-group\"],\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tooltip\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-tooltip\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"kbd\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/kbd.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"native-select\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/ui/native-select.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dashboard-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A dashboard with sidebar, charts and data table.\",\n      \"dependencies\": [\n        \"@dnd-kit/core\",\n        \"@dnd-kit/modifiers\",\n        \"@dnd-kit/sortable\",\n        \"@dnd-kit/utilities\",\n        \"@tanstack/react-table\",\n        \"zod\",\n        \"@tabler/icons-react\"\n      ],\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"chart\",\n        \"card\",\n        \"select\",\n        \"tabs\",\n        \"table\",\n        \"toggle-group\",\n        \"badge\",\n        \"button\",\n        \"checkbox\",\n        \"dropdown-menu\",\n        \"drawer\",\n        \"input\",\n        \"avatar\",\n        \"sheet\",\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/data.json\",\n          \"type\": \"registry:file\",\n          \"target\": \"app/dashboard/data.json\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/data-table.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-documents.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/section-cards.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/dashboard-01/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\"\n      },\n      \"categories\": [\"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple sidebar with navigation grouped by section.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-01/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with collapsible sections.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-02/components/version-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-03/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"A floating sidebar with submenus.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-04/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with collapsible submenus.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"label\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-05/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-05/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with submenus as dropdowns.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"card\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-06/components/sidebar-opt-in-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar that collapses to icons.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-07/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"An inset sidebar with secondary navigation.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-08/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Collapsible nested sidebars.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"switch\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-09/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-09/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar in a popover.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-actions.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-10/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a collapsible file tree.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-11/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a calendar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"calendar\",\n        \"dropdown-menu\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-12/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar in a dialog.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\", \"button\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-13/components/settings-dialog.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar on the right.\",\n      \"registryDependencies\": [\"sidebar\", \"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-14/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"A left and right sidebar.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"popover\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"calendar\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/calendars.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/date-picker.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-favorites.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/nav-workspaces.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/sidebar-left.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/sidebar-right.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-15/components/team-switcher.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"sidebar-16\",\n      \"type\": \"registry:block\",\n      \"description\": \"A sidebar with a sticky site header.\",\n      \"registryDependencies\": [\n        \"sidebar\",\n        \"breadcrumb\",\n        \"separator\",\n        \"collapsible\",\n        \"dropdown-menu\",\n        \"avatar\",\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dashboard/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/app-sidebar.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-main.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-projects.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-secondary.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/nav-user.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/search-form.tsx\",\n          \"type\": \"registry:component\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/sidebar-16/components/site-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"sidebar\", \"dashboard\"]\n    },\n    {\n      \"name\": \"login-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple login form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-01/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"]\n    },\n    {\n      \"name\": \"login-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"A two column login page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-02/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"]\n    },\n    {\n      \"name\": \"login-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"A login page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-03/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"]\n    },\n    {\n      \"name\": \"login-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"A login page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-04/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"]\n    },\n    {\n      \"name\": \"login-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple email-only login page.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/login/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/login-05/components/login-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"login\"]\n    },\n    {\n      \"name\": \"signup-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple signup form.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-01/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"]\n    },\n    {\n      \"name\": \"signup-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"A two column signup page with a cover image.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-02/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"]\n    },\n    {\n      \"name\": \"signup-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"A signup page with a muted background color.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-03/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"]\n    },\n    {\n      \"name\": \"signup-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"A signup page with form and image.\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-04/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"]\n    },\n    {\n      \"name\": \"signup-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"A simple signup form with social providers.\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/signup/page.tsx\"\n        },\n        {\n          \"path\": \"registry/new-york-v4/blocks/signup-05/components/signup-form.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"authentication\", \"signup\"]\n    },\n    {\n      \"name\": \"chart-area-axes\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-axes.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-gradient\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-gradient.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-icons.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-interactive.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-legend.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-linear\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-linear.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-stacked-expand\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-stacked-expand.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-stacked.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-area-step\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-area-step.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-area\"]\n    },\n    {\n      \"name\": \"chart-bar-active\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-active.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-horizontal\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-horizontal.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-interactive.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-label.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-mixed\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-mixed.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-multiple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-negative\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-negative.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-bar-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-bar-stacked.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-bar\"]\n    },\n    {\n      \"name\": \"chart-line-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-dots-colors\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-dots-colors.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-dots-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-dots-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-dots\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-dots.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-interactive.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-label.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-linear\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-linear.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-multiple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-line-step\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-line-step.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-line\"]\n    },\n    {\n      \"name\": \"chart-pie-donut-active\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-donut-active.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-donut-text\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-donut-text.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-donut\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-donut.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-interactive\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-interactive.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-label-list\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-label-list.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-label.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-legend.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-separator-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-separator-none.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-simple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-simple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-pie-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-pie-stacked.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-pie\"]\n    },\n    {\n      \"name\": \"chart-radar-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-dots\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-dots.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle-fill\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle-fill.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle-no-lines\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle-no-lines.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-grid-circle\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-circle.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-grid-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-grid-fill\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-fill.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-grid-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-grid-none.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-icons.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-legend\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-legend.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-lines-only\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-lines-only.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-multiple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-multiple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radar-radius\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radar-radius.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radar\"]\n    },\n    {\n      \"name\": \"chart-radial-grid\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-grid.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"]\n    },\n    {\n      \"name\": \"chart-radial-label\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-label.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"]\n    },\n    {\n      \"name\": \"chart-radial-shape\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-shape.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"]\n    },\n    {\n      \"name\": \"chart-radial-simple\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-simple.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"]\n    },\n    {\n      \"name\": \"chart-radial-stacked\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-stacked.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"]\n    },\n    {\n      \"name\": \"chart-radial-text\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-radial-text.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-radial\"]\n    },\n    {\n      \"name\": \"chart-tooltip-default\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-default.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"chart-tooltip-indicator-line\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-indicator-line.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"chart-tooltip-indicator-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-indicator-none.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"chart-tooltip-label-none\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-none.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"chart-tooltip-label-custom\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-custom.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"chart-tooltip-label-formatter\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-label-formatter.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"chart-tooltip-formatter\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-formatter.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"chart-tooltip-icons\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-icons.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"chart-tooltip-advanced\",\n      \"type\": \"registry:block\",\n      \"registryDependencies\": [\"card\", \"chart\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/charts/chart-tooltip-advanced.tsx\",\n          \"type\": \"registry:block\"\n        }\n      ],\n      \"categories\": [\"charts\", \"charts-tooltip\"]\n    },\n    {\n      \"name\": \"utils\",\n      \"type\": \"registry:lib\",\n      \"dependencies\": [\"clsx\", \"tailwind-merge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/lib/utils.ts\",\n          \"type\": \"registry:lib\"\n        }\n      ]\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"type\": \"registry:hook\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ]\n    },\n    {\n      \"name\": \"theme-stone\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.147 0.004 49.25)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.147 0.004 49.25)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.147 0.004 49.25)\",\n          \"primary\": \"oklch(0.216 0.006 56.043)\",\n          \"primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"secondary\": \"oklch(0.97 0.001 106.424)\",\n          \"secondary-foreground\": \"oklch(0.216 0.006 56.043)\",\n          \"muted\": \"oklch(0.97 0.001 106.424)\",\n          \"muted-foreground\": \"oklch(0.553 0.013 58.071)\",\n          \"accent\": \"oklch(0.97 0.001 106.424)\",\n          \"accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.923 0.003 48.717)\",\n          \"input\": \"oklch(0.923 0.003 48.717)\",\n          \"ring\": \"oklch(0.709 0.01 56.259)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-foreground\": \"oklch(0.147 0.004 49.25)\",\n          \"sidebar-primary\": \"oklch(0.216 0.006 56.043)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-accent\": \"oklch(0.97 0.001 106.424)\",\n          \"sidebar-accent-foreground\": \"oklch(0.216 0.006 56.043)\",\n          \"sidebar-border\": \"oklch(0.923 0.003 48.717)\",\n          \"sidebar-ring\": \"oklch(0.709 0.01 56.259)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.147 0.004 49.25)\",\n          \"foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"card\": \"oklch(0.216 0.006 56.043)\",\n          \"card-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"popover\": \"oklch(0.216 0.006 56.043)\",\n          \"popover-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"primary\": \"oklch(0.923 0.003 48.717)\",\n          \"primary-foreground\": \"oklch(0.216 0.006 56.043)\",\n          \"secondary\": \"oklch(0.268 0.007 34.298)\",\n          \"secondary-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"muted\": \"oklch(0.268 0.007 34.298)\",\n          \"muted-foreground\": \"oklch(0.709 0.01 56.259)\",\n          \"accent\": \"oklch(0.268 0.007 34.298)\",\n          \"accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.553 0.013 58.071)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.216 0.006 56.043)\",\n          \"sidebar-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-accent\": \"oklch(0.268 0.007 34.298)\",\n          \"sidebar-accent-foreground\": \"oklch(0.985 0.001 106.423)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.553 0.013 58.071)\"\n        }\n      }\n    },\n    {\n      \"name\": \"theme-zinc\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.141 0.005 285.823)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.141 0.005 285.823)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.141 0.005 285.823)\",\n          \"primary\": \"oklch(0.21 0.006 285.885)\",\n          \"primary-foreground\": \"oklch(0.985 0 0)\",\n          \"secondary\": \"oklch(0.967 0.001 286.375)\",\n          \"secondary-foreground\": \"oklch(0.21 0.006 285.885)\",\n          \"muted\": \"oklch(0.967 0.001 286.375)\",\n          \"muted-foreground\": \"oklch(0.552 0.016 285.938)\",\n          \"accent\": \"oklch(0.967 0.001 286.375)\",\n          \"accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.92 0.004 286.32)\",\n          \"input\": \"oklch(0.92 0.004 286.32)\",\n          \"ring\": \"oklch(0.705 0.015 286.067)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.985 0 0)\",\n          \"sidebar-foreground\": \"oklch(0.141 0.005 285.823)\",\n          \"sidebar-primary\": \"oklch(0.21 0.006 285.885)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-accent\": \"oklch(0.967 0.001 286.375)\",\n          \"sidebar-accent-foreground\": \"oklch(0.21 0.006 285.885)\",\n          \"sidebar-border\": \"oklch(0.92 0.004 286.32)\",\n          \"sidebar-ring\": \"oklch(0.705 0.015 286.067)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.141 0.005 285.823)\",\n          \"foreground\": \"oklch(0.985 0 0)\",\n          \"card\": \"oklch(0.21 0.006 285.885)\",\n          \"card-foreground\": \"oklch(0.985 0 0)\",\n          \"popover\": \"oklch(0.21 0.006 285.885)\",\n          \"popover-foreground\": \"oklch(0.985 0 0)\",\n          \"primary\": \"oklch(0.92 0.004 286.32)\",\n          \"primary-foreground\": \"oklch(0.21 0.006 285.885)\",\n          \"secondary\": \"oklch(0.274 0.006 286.033)\",\n          \"secondary-foreground\": \"oklch(0.985 0 0)\",\n          \"muted\": \"oklch(0.274 0.006 286.033)\",\n          \"muted-foreground\": \"oklch(0.705 0.015 286.067)\",\n          \"accent\": \"oklch(0.274 0.006 286.033)\",\n          \"accent-foreground\": \"oklch(0.985 0 0)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.552 0.016 285.938)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.21 0.006 285.885)\",\n          \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-accent\": \"oklch(0.274 0.006 286.033)\",\n          \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.552 0.016 285.938)\"\n        }\n      }\n    },\n    {\n      \"name\": \"theme-neutral\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.145 0 0)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.145 0 0)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.145 0 0)\",\n          \"primary\": \"oklch(0.205 0 0)\",\n          \"primary-foreground\": \"oklch(0.985 0 0)\",\n          \"secondary\": \"oklch(0.97 0 0)\",\n          \"secondary-foreground\": \"oklch(0.205 0 0)\",\n          \"muted\": \"oklch(0.97 0 0)\",\n          \"muted-foreground\": \"oklch(0.556 0 0)\",\n          \"accent\": \"oklch(0.97 0 0)\",\n          \"accent-foreground\": \"oklch(0.205 0 0)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.922 0 0)\",\n          \"input\": \"oklch(0.922 0 0)\",\n          \"ring\": \"oklch(0.708 0 0)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.985 0 0)\",\n          \"sidebar-foreground\": \"oklch(0.145 0 0)\",\n          \"sidebar-primary\": \"oklch(0.205 0 0)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-accent\": \"oklch(0.97 0 0)\",\n          \"sidebar-accent-foreground\": \"oklch(0.205 0 0)\",\n          \"sidebar-border\": \"oklch(0.922 0 0)\",\n          \"sidebar-ring\": \"oklch(0.708 0 0)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.145 0 0)\",\n          \"foreground\": \"oklch(0.985 0 0)\",\n          \"card\": \"oklch(0.205 0 0)\",\n          \"card-foreground\": \"oklch(0.985 0 0)\",\n          \"popover\": \"oklch(0.205 0 0)\",\n          \"popover-foreground\": \"oklch(0.985 0 0)\",\n          \"primary\": \"oklch(0.922 0 0)\",\n          \"primary-foreground\": \"oklch(0.205 0 0)\",\n          \"secondary\": \"oklch(0.269 0 0)\",\n          \"secondary-foreground\": \"oklch(0.985 0 0)\",\n          \"muted\": \"oklch(0.269 0 0)\",\n          \"muted-foreground\": \"oklch(0.708 0 0)\",\n          \"accent\": \"oklch(0.269 0 0)\",\n          \"accent-foreground\": \"oklch(0.985 0 0)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.556 0 0)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.205 0 0)\",\n          \"sidebar-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-accent\": \"oklch(0.269 0 0)\",\n          \"sidebar-accent-foreground\": \"oklch(0.985 0 0)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.556 0 0)\"\n        }\n      }\n    },\n    {\n      \"name\": \"theme-gray\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.13 0.028 261.692)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.13 0.028 261.692)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.13 0.028 261.692)\",\n          \"primary\": \"oklch(0.21 0.034 264.665)\",\n          \"primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"secondary\": \"oklch(0.967 0.003 264.542)\",\n          \"secondary-foreground\": \"oklch(0.21 0.034 264.665)\",\n          \"muted\": \"oklch(0.967 0.003 264.542)\",\n          \"muted-foreground\": \"oklch(0.551 0.027 264.364)\",\n          \"accent\": \"oklch(0.967 0.003 264.542)\",\n          \"accent-foreground\": \"oklch(0.21 0.034 264.665)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.928 0.006 264.531)\",\n          \"input\": \"oklch(0.928 0.006 264.531)\",\n          \"ring\": \"oklch(0.707 0.022 261.325)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-foreground\": \"oklch(0.13 0.028 261.692)\",\n          \"sidebar-primary\": \"oklch(0.21 0.034 264.665)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-accent\": \"oklch(0.967 0.003 264.542)\",\n          \"sidebar-accent-foreground\": \"oklch(0.21 0.034 264.665)\",\n          \"sidebar-border\": \"oklch(0.928 0.006 264.531)\",\n          \"sidebar-ring\": \"oklch(0.707 0.022 261.325)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.13 0.028 261.692)\",\n          \"foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"card\": \"oklch(0.21 0.034 264.665)\",\n          \"card-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"popover\": \"oklch(0.21 0.034 264.665)\",\n          \"popover-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"primary\": \"oklch(0.928 0.006 264.531)\",\n          \"primary-foreground\": \"oklch(0.21 0.034 264.665)\",\n          \"secondary\": \"oklch(0.278 0.033 256.848)\",\n          \"secondary-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"muted\": \"oklch(0.278 0.033 256.848)\",\n          \"muted-foreground\": \"oklch(0.707 0.022 261.325)\",\n          \"accent\": \"oklch(0.278 0.033 256.848)\",\n          \"accent-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.551 0.027 264.364)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.21 0.034 264.665)\",\n          \"sidebar-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-accent\": \"oklch(0.278 0.033 256.848)\",\n          \"sidebar-accent-foreground\": \"oklch(0.985 0.002 247.839)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\"\n        }\n      }\n    },\n    {\n      \"name\": \"theme-slate\",\n      \"type\": \"registry:theme\",\n      \"cssVars\": {\n        \"light\": {\n          \"background\": \"oklch(1 0 0)\",\n          \"foreground\": \"oklch(0.129 0.042 264.695)\",\n          \"card\": \"oklch(1 0 0)\",\n          \"card-foreground\": \"oklch(0.129 0.042 264.695)\",\n          \"popover\": \"oklch(1 0 0)\",\n          \"popover-foreground\": \"oklch(0.129 0.042 264.695)\",\n          \"primary\": \"oklch(0.208 0.042 265.755)\",\n          \"primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"secondary\": \"oklch(0.968 0.007 247.896)\",\n          \"secondary-foreground\": \"oklch(0.208 0.042 265.755)\",\n          \"muted\": \"oklch(0.968 0.007 247.896)\",\n          \"muted-foreground\": \"oklch(0.554 0.046 257.417)\",\n          \"accent\": \"oklch(0.968 0.007 247.896)\",\n          \"accent-foreground\": \"oklch(0.208 0.042 265.755)\",\n          \"destructive\": \"oklch(0.577 0.245 27.325)\",\n          \"border\": \"oklch(0.929 0.013 255.508)\",\n          \"input\": \"oklch(0.929 0.013 255.508)\",\n          \"ring\": \"oklch(0.704 0.04 256.788)\",\n          \"chart-1\": \"oklch(0.646 0.222 41.116)\",\n          \"chart-2\": \"oklch(0.6 0.118 184.704)\",\n          \"chart-3\": \"oklch(0.398 0.07 227.392)\",\n          \"chart-4\": \"oklch(0.828 0.189 84.429)\",\n          \"chart-5\": \"oklch(0.769 0.188 70.08)\",\n          \"radius\": \"0.625rem\",\n          \"sidebar\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-foreground\": \"oklch(0.129 0.042 264.695)\",\n          \"sidebar-primary\": \"oklch(0.208 0.042 265.755)\",\n          \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-accent\": \"oklch(0.968 0.007 247.896)\",\n          \"sidebar-accent-foreground\": \"oklch(0.208 0.042 265.755)\",\n          \"sidebar-border\": \"oklch(0.929 0.013 255.508)\",\n          \"sidebar-ring\": \"oklch(0.704 0.04 256.788)\"\n        },\n        \"dark\": {\n          \"background\": \"oklch(0.129 0.042 264.695)\",\n          \"foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"card\": \"oklch(0.208 0.042 265.755)\",\n          \"card-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"popover\": \"oklch(0.208 0.042 265.755)\",\n          \"popover-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"primary\": \"oklch(0.929 0.013 255.508)\",\n          \"primary-foreground\": \"oklch(0.208 0.042 265.755)\",\n          \"secondary\": \"oklch(0.279 0.041 260.031)\",\n          \"secondary-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"muted\": \"oklch(0.279 0.041 260.031)\",\n          \"muted-foreground\": \"oklch(0.704 0.04 256.788)\",\n          \"accent\": \"oklch(0.279 0.041 260.031)\",\n          \"accent-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"destructive\": \"oklch(0.704 0.191 22.216)\",\n          \"border\": \"oklch(1 0 0 / 10%)\",\n          \"input\": \"oklch(1 0 0 / 15%)\",\n          \"ring\": \"oklch(0.551 0.027 264.364)\",\n          \"chart-1\": \"oklch(0.488 0.243 264.376)\",\n          \"chart-2\": \"oklch(0.696 0.17 162.48)\",\n          \"chart-3\": \"oklch(0.769 0.188 70.08)\",\n          \"chart-4\": \"oklch(0.627 0.265 303.9)\",\n          \"chart-5\": \"oklch(0.645 0.246 16.439)\",\n          \"sidebar\": \"oklch(0.208 0.042 265.755)\",\n          \"sidebar-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-primary\": \"oklch(0.488 0.243 264.376)\",\n          \"sidebar-primary-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-accent\": \"oklch(0.279 0.041 260.031)\",\n          \"sidebar-accent-foreground\": \"oklch(0.984 0.003 247.858)\",\n          \"sidebar-border\": \"oklch(1 0 0 / 10%)\",\n          \"sidebar-ring\": \"oklch(0.551 0.027 264.364)\"\n        }\n      }\n    },\n    {\n      \"name\": \"accordion-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"accordion\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/accordion-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"alert\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/alert-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"alert\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/alert-destructive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert-dialog-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"alert-dialog\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/alert-dialog-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"aspect-ratio-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"aspect-ratio\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/aspect-ratio-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"avatar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/avatar-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/badge-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/badge-destructive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/badge-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-secondary\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/badge-secondary.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-separator\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-separator.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-dropdown\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-dropdown.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-ellipsis\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-ellipsis.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-link\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-link.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb-responsive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"breadcrumb\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/breadcrumb-responsive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-default\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-default.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-secondary\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-secondary.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-destructive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-destructive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-ghost\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-ghost.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-link\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-link.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-with-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-with-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-loading\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-loading.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-as-child\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-as-child.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-rounded\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-rounded.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-size\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-nested\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-nested.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-size\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-separator\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-separator.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-split\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-split.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-input\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-input.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-dropdown\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-dropdown.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-select\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-select.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-popover\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-popover.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-input-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-input-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"button-group-orientation\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/button-group-orientation.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"calendar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/calendar-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"card\", \"button\", \"switch\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/card-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-with-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/card-with-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-size\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-spacing\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-spacing.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-orientation\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-orientation.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-api\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-api.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"carousel-plugin\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"carousel\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/carousel-plugin.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/checkbox-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/checkbox-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-form-multiple\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"checkbox\", \"form\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/checkbox-form-multiple.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-form-single\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"checkbox\", \"form\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/checkbox-form-single.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"checkbox-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/checkbox-with-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"collapsible-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"collapsible\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/collapsible-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"command\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-dropdown-menu\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"command\", \"dropdown-menu\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-dropdown-menu.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"command\", \"form\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-popover\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"combobox\", \"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-popover.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"combobox-responsive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"combobox\", \"popover\", \"drawer\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/combobox-responsive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"command\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/command-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"command-dialog\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"command\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/command-dialog.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"context-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"context-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/context-menu-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"data-table-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"data-table\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/data-table-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-demo\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\"button\", \"calendar\", \"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/date-picker-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-form\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\"button\", \"calendar\", \"form\", \"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/date-picker-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-with-presets\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\"button\", \"calendar\", \"popover\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/date-picker-with-presets.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"date-picker-with-range\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\"button\", \"calendar\", \"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/date-picker-with-range.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dialog-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dialog-close-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"dialog\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dialog-close-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"drawer\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/drawer-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"empty\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"empty\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty-avatar\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"empty\", \"button\", \"avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-avatar.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty-avatar-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"empty\", \"button\", \"avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-avatar-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty-input-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"empty\", \"button\", \"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-input-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"empty\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"empty-background\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"empty\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/empty-background.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-input\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-input.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-textarea\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-textarea.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-fieldset\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-fieldset.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-radio\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-radio.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-checkbox\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-checkbox.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-switch\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-switch.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-slider\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-slider.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-select\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-select.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-choice-card\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-choice-card.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"field-responsive\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"field\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/field-responsive.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-demo\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-input\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"input\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-input.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-select\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"select\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-select.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-checkbox\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"checkbox\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-checkbox.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-switch\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"switch\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-switch.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-textarea\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"textarea\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-textarea.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-radiogroup\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"radio-group\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-radiogroup.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-array\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-array.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-complex\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"radio-group\",\n        \"select\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-complex.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-rhf-password\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input-group\",\n        \"progress\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-rhf-password.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-demo\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-input\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"input\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-input.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-textarea\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"textarea\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-textarea.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-select\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"select\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-select.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-checkbox\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"checkbox\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-checkbox.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-switch\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"switch\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-switch.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-radiogroup\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\"field\", \"radio-group\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-radiogroup.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-array\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"input\",\n        \"input-group\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-array.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-tanstack-complex\",\n      \"type\": \"registry:example\",\n      \"dependencies\": [\"@tanstack/react-form\", \"zod\"],\n      \"registryDependencies\": [\n        \"field\",\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"radio-group\",\n        \"select\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/form-tanstack-complex.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer-dialog\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"drawer\", \"dialog\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/drawer-dialog.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"dropdown-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dropdown-menu-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-checkboxes\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"dropdown-menu\", \"checkbox\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dropdown-menu-checkboxes.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-radio-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"dropdown-menu\", \"radio-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dropdown-menu-radio-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dropdown-menu-dialog\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"dropdown-menu\",\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/dropdown-menu-dialog.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hover-card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"hover-card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/hover-card-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-file\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-file.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input\", \"button\", \"form\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-with-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-label\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input\", \"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-with-label.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input\", \"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-with-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-label\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-label.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-tooltip\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\", \"tooltip\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-tooltip.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-button-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\", \"button-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-button-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-dropdown\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\", \"dropdown-menu\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-dropdown.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-spinner\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\", \"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-spinner.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-textarea\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-textarea.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-group-custom\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"input-group\",\n        \"badge\",\n        \"progress\",\n        \"dropdown-menu\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-group-custom.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-pattern\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-pattern.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-separator\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-separator.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-controlled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-otp\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-controlled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"input-otp\", \"form\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/input-otp-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-size\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-variant\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-variant.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-icon\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-icon.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-image\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-image.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-avatar\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-avatar.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-header\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-header.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-dropdown\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-dropdown.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"item-link\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"item\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/item-link.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"kbd-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"kbd\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"kbd-tooltip\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"kbd\", \"tooltip\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-tooltip.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"kbd-input-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"kbd\", \"input\", \"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-input-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"kbd-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"kbd\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"kbd-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"kbd\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/kbd-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"label-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/label-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"menubar-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"menubar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/menubar-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"navigation-menu-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"navigation-menu\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/navigation-menu-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"native-select-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"native-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/native-select-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"native-select-groups\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"native-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/native-select-groups.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"native-select-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"native-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/native-select-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"native-select-invalid\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"native-select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/native-select-invalid.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pagination-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"pagination\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/pagination-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"popover-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/popover-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"progress-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"progress\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/progress-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"radio-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/radio-group-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-group-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"radio-group\", \"form\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/radio-group-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"resizable\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/resizable-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-demo-with-handle\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"resizable\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/resizable-demo-with-handle.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-vertical\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"resizable\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/resizable-vertical.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable-handle\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"resizable\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/resizable-handle.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"scroll-area\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/scroll-area-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scroll-area-horizontal-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"scroll-area\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/scroll-area-horizontal-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/select-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-scrollable\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/select-scrollable.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"select-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/select-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"separator-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/separator-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"sheet\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/sheet-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sheet-side\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"sheet\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/sheet-side.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"skeleton\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/skeleton-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton-card\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"skeleton\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/skeleton-card.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"slider-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"slider\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/slider-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"sonner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/sonner-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner-types\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"sonner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/sonner-types.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-basic\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-basic.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-badge\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-badge.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-input-group\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\", \"button\", \"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-input-group.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-empty\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-empty.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-color\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-color.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-custom\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-custom.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-size\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-size.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"spinner-item\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"spinner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/spinner-item.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"switch\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/switch-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"switch-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"switch\", \"form\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/switch-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"table\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/table-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tabs-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"tabs\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/tabs-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-form\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"textarea\", \"form\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-form.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-button\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"textarea\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-with-button.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-label\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"textarea\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-with-label.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"textarea\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/textarea-with-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-lg\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-lg.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-sm\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-sm.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-single\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-single.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group-spacing\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle-group\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-group-spacing.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-disabled\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-disabled.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-lg\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-lg.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-outline\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-outline.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-sm\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-sm.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-with-text\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"toggle\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/toggle-with-text.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tooltip-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"tooltip\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/tooltip-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-blockquote\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-blockquote.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h1\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-h1.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h2\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-h2.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h3\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-h3.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-h4\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-h4.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-inline-code\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-inline-code.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-large\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-large.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-lead\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-lead.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-list\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-list.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-muted\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-muted.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-p\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-p.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-small\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-small.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"typography-table\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/typography-table.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mode-toggle\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/mode-toggle.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-grid\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo-grid.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-axis\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo-axis.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-tooltip\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo-tooltip.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-demo-legend\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-bar-demo-legend.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-tooltip-demo\",\n      \"type\": \"registry:example\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/chart-tooltip-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-hijri\",\n      \"type\": \"registry:example\",\n      \"description\": \"A Persian calendar.\",\n      \"registryDependencies\": [\"calendar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/examples/calendar-hijri.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-start md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"calendar\", \"date\"]\n    },\n    {\n      \"name\": \"sidebar-demo\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-demo.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-header\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-header.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-footer\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-footer.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-group.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group-collapsible\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-group-collapsible.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-group-action\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-group-action.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-action\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu-action.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-sub\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu-sub.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-collapsible\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu-collapsible.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-menu-badge\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-menu-badge.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-rsc\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-rsc.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar-controlled\",\n      \"type\": \"registry:internal\",\n      \"files\": [\n        {\n          \"path\": \"registry/new-york-v4/internal/sidebar-controlled.tsx\",\n          \"type\": \"registry:component\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/v4/scripts/build-examples.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { rimraf } from \"rimraf\"\n\nimport { BASES } from \"@/registry/bases\"\n\nasync function buildExamplesIndex() {\n  const cwd = process.cwd()\n  const examplesDir = path.join(cwd, \"examples\")\n\n  console.log(\"📋 Generating examples/__index__.tsx...\")\n\n  // Process all bases in parallel.\n  const baseResults = await Promise.all(\n    Array.from(BASES).map(async (base) => {\n      const baseDir = path.join(examplesDir, base.name)\n\n      try {\n        await fs.access(baseDir)\n      } catch {\n        console.log(`   Skipping ${base.name} - directory does not exist`)\n        return null\n      }\n\n      const allEntries = await fs.readdir(baseDir, { withFileTypes: true })\n      const files = allEntries\n        .filter((entry) => entry.isFile() && entry.name.endsWith(\".tsx\"))\n        .map((entry) => entry.name)\n        .sort()\n\n      console.log(`   Found ${files.length} demos for ${base.name}`)\n\n      return { base, files }\n    })\n  )\n\n  let index = `// @ts-nocheck\n// This file is autogenerated by scripts/build-examples-index.mts\n// Do not edit this file directly.\nimport * as React from \"react\"\n\nexport const ExamplesIndex: Record<string, Record<string, any>> = {`\n\n  for (const result of baseResults) {\n    if (!result) continue\n\n    const { base, files } = result\n\n    index += `\n  \"${base.name}\": {`\n\n    for (const file of files) {\n      const name = file.replace(/\\.tsx$/, \"\")\n\n      index += `\n    \"${name}\": {\n      name: \"${name}\",\n      filePath: \"examples/${base.name}/${file}\",\n      component: React.lazy(async () => {\n        const mod = await import(\"./${base.name}/${name}\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || \"${name}\"\n        return { default: mod.default || mod[exportName] }\n      }),\n    },`\n    }\n\n    index += `\n  },`\n  }\n\n  index += `\n}\n`\n\n  const indexPath = path.join(examplesDir, \"__index__.tsx\")\n  await rimraf(indexPath)\n  await fs.writeFile(indexPath, index)\n\n  console.log(`\\n✅ Generated examples/__index__.tsx`)\n}\n\nbuildExamplesIndex().catch(console.error)\n"
  },
  {
    "path": "apps/v4/scripts/build-icons.ts",
    "content": "#!/usr/bin/env tsx\nimport * as fs from \"fs\"\nimport * as path from \"path\"\nimport { iconLibraries, type IconLibraryName } from \"shadcn/icons\"\n\ntype IconUsage = Record<IconLibraryName, Set<string>>\n\nfunction findTsxFiles(dir: string) {\n  const files: string[] = []\n  const entries = fs.readdirSync(dir, { withFileTypes: true })\n\n  for (const entry of entries) {\n    const fullPath = path.join(dir, entry.name)\n    if (entry.isDirectory()) {\n      files.push(...findTsxFiles(fullPath))\n    } else if (entry.isFile() && entry.name.endsWith(\".tsx\")) {\n      files.push(fullPath)\n    }\n  }\n\n  return files\n}\n\nfunction scanIconUsage() {\n  const iconUsage: IconUsage = Object.keys(iconLibraries).reduce((acc, key) => {\n    acc[key as IconLibraryName] = new Set()\n    return acc\n  }, {} as IconUsage)\n\n  const registryBasesDir = path.join(process.cwd(), \"registry/bases\")\n  const files = findTsxFiles(registryBasesDir)\n  const libraryNames = Object.values(iconLibraries)\n    .map((lib) => lib.name)\n    .join(\"|\")\n  const iconPlaceholderRegex = new RegExp(\n    `<IconPlaceholder\\\\s+([^>]*?)(?:${libraryNames})=[\"']([^\"']+)[\"']([^>]*?)\\\\/?>`,\n    \"g\"\n  )\n\n  for (const file of files) {\n    const content = fs.readFileSync(file, \"utf-8\")\n\n    let match\n    while ((match = iconPlaceholderRegex.exec(content)) !== null) {\n      const fullMatch = match[0]\n\n      for (const [libraryName, config] of Object.entries(iconLibraries)) {\n        const attrMatch = fullMatch.match(\n          new RegExp(`${config.name}=[\"']([^\"']+)[\"']`)\n        )\n        if (attrMatch) {\n          iconUsage[libraryName as IconLibraryName].add(attrMatch[1])\n        }\n      }\n    }\n  }\n\n  return iconUsage\n}\n\nfunction generateIconFiles(iconUsage: IconUsage) {\n  const outputDir = path.join(process.cwd(), \"registry/icons\")\n\n  console.log(\"✓ Generated icon files:\")\n\n  Object.entries(iconLibraries).forEach(([libraryName, config]) => {\n    const icons = Array.from(iconUsage[libraryName as IconLibraryName]).sort()\n\n    if (icons.length === 0) {\n      return\n    }\n\n    const content = `// Auto-generated by scripts/build-icons.ts\n${icons.map((icon) => `export { ${icon} } from \"${config.export}\"`).join(\"\\n\")}\n`\n\n    const filename = `__${libraryName}__.ts`\n    fs.writeFileSync(path.join(outputDir, filename), content)\n\n    console.log(`  - ${config.title}: ${icons.length} icons`)\n  })\n}\n\nfunction main() {\n  const iconUsage = scanIconUsage()\n  generateIconFiles(iconUsage)\n}\n\nconst isWatchMode = process.argv.includes(\"--watch\")\n\nif (isWatchMode) {\n  const REGISTRY_DIR = path.join(process.cwd(), \"registry/bases\")\n\n  async function startWatcher() {\n    const { default: chokidar } = await import(\"chokidar\")\n\n    main()\n\n    const watcher = chokidar.watch(REGISTRY_DIR, {\n      ignored: /(^|[/\\\\])\\../,\n      persistent: true,\n      ignoreInitial: true,\n    })\n\n    const rebuild = (filename: string) => {\n      if (!filename.endsWith(\".tsx\")) return\n\n      try {\n        main()\n      } catch (error) {\n        console.error(\"❌ Icons build failed:\", error)\n      }\n    }\n\n    watcher.on(\"error\", (error) => {\n      console.error(\"❌ Watcher error:\", error)\n    })\n\n    watcher.on(\"change\", rebuild)\n    watcher.on(\"add\", rebuild)\n\n    process.on(\"SIGINT\", async () => {\n      await watcher.close()\n      process.exit(0)\n    })\n  }\n\n  startWatcher()\n} else {\n  main()\n}\n"
  },
  {
    "path": "apps/v4/scripts/build-registry.mts",
    "content": "import { spawn } from \"child_process\"\nimport { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { rimraf } from \"rimraf\"\nimport { registrySchema, type RegistryItem } from \"shadcn/schema\"\nimport {\n  createStyleMap,\n  transformDirection,\n  transformIcons,\n  transformStyle,\n} from \"shadcn/utils\"\nimport { Project, ScriptKind } from \"ts-morph\"\n\nimport { getAllBlocks } from \"@/lib/blocks\"\nimport { legacyStyles } from \"@/registry/_legacy-styles\"\nimport { BASE_COLORS } from \"@/registry/base-colors\"\nimport { BASES, type Base } from \"@/registry/bases\"\nimport { PRESETS } from \"@/registry/config\"\nimport { STYLES } from \"@/registry/styles\"\n\n// This is a list of styles that we want to check into tracking.\n// This is used by the v4 site.\nconst WHITELISTED_STYLES = [\"new-york-v4\"]\n\n// Collect paths for batch prettier formatting at the end.\nconst prettierPaths: string[] = []\n\n// Create a ts-morph project for icon transformations.\nconst iconProject = new Project({\n  compilerOptions: {},\n})\n\nfunction getStylesToBuild() {\n  const stylesToBuild: { name: string; title: string }[] = [...legacyStyles]\n\n  for (const base of BASES) {\n    for (const style of STYLES) {\n      stylesToBuild.push({\n        name: `${base.name}-${style.name}`,\n        title: `${base.title} ${style.title}`,\n      })\n    }\n  }\n\n  return stylesToBuild\n}\n\ntry {\n  const totalStart = performance.now()\n\n  console.log(\"🏗️ Building bases...\")\n  await buildBasesIndex(Array.from(BASES))\n  await buildBases(Array.from(BASES))\n\n  // Format base files before building styles so the JSON output contains formatted code.\n  const baseDirs = Array.from(BASES).flatMap((base) =>\n    STYLES.map((style) =>\n      path.join(process.cwd(), `registry/${base.name}-${style.name}`)\n    )\n  )\n  console.log(\"\\n✨ Formatting base files...\")\n  await batchPrettier(baseDirs)\n\n  const stylesToBuild = getStylesToBuild()\n\n  // Build index for legacy styles and whitelisted base-style combinations.\n  console.log(`📦 Building registry/__index__.tsx...`)\n  const stylesForIndex = WHITELISTED_STYLES.map((name) => ({\n    name,\n    title: name,\n  }))\n  await buildRegistryIndex(stylesForIndex)\n\n  console.log(\"💅 Building styles...\")\n  // Build all styles in parallel.\n  await Promise.all(\n    stylesToBuild.map(async (style) => {\n      await buildRegistryJsonFile(style.name)\n      await buildRegistry(style.name)\n      console.log(`   ✅ ${style.name}`)\n    })\n  )\n\n  console.log(\"\\n🗂️ Building registry/__blocks__.json...\")\n  await buildBlocksIndex()\n\n  console.log(\"\\n⚙️ Building public/r/config.json...\")\n  await buildConfig()\n\n  // Copy UI to examples before cleanup.\n  console.log(\"\\n📋 Copying UI to examples...\")\n  await copyUIToExamples()\n\n  // Build RTL variants of examples.\n  console.log(\"\\n🔄 Building RTL examples...\")\n  await buildRtlExamples()\n\n  console.log(\"\\n📦 Building public/r/index.json...\")\n  await buildIndex()\n\n  console.log(\"\\n📋 Building public/r/registries.json...\")\n  await buildRegistriesJson()\n\n  console.log(\"\\n🎨 Building public/r/colors...\")\n  await buildColors()\n\n  // Batch format all collected files with prettier at the end.\n  if (prettierPaths.length > 0) {\n    console.log(`\\n✨ Formatting ${prettierPaths.length} files...`)\n    await batchPrettier(prettierPaths)\n  }\n\n  // Clean up intermediate files and generated base directories.\n  console.log(\"\\n🧹 Cleaning up...\")\n  await cleanUp(stylesToBuild)\n\n  const elapsed = ((performance.now() - totalStart) / 1000).toFixed(2)\n  console.log(`\\n✅ Build complete in ${elapsed}s!`)\n} catch (error) {\n  console.error(error)\n  process.exit(1)\n}\n\nasync function buildBasesIndex(bases: Base[]) {\n  // Import all registries in parallel.\n  const registryImports = await Promise.all(\n    bases.map(async (base) => {\n      const { registry: importedRegistry } = await import(\n        `../registry/bases/${base.name}/registry.ts`\n      )\n      return { base, importedRegistry }\n    })\n  )\n\n  let index = `// @ts-nocheck\n// This file is autogenerated by scripts/build-registry.ts\n// Do not edit this file directly.\nimport \"server-only\"\nimport * as React from \"react\"\n\nexport const Index: Record<string, Record<string, any>> = {`\n\n  for (const { base, importedRegistry } of registryImports) {\n    // Validate the registry schema.\n    const parseResult = registrySchema.safeParse(importedRegistry)\n    if (!parseResult.success) {\n      console.error(`❌ Registry validation failed for ${base.name}:`)\n      console.error(parseResult.error.format())\n      throw new Error(`Invalid registry schema for ${base.name}`)\n    }\n\n    const registry = parseResult.data\n\n    index += `\n  \"${base.name}\": {`\n\n    for (const item of registry.items) {\n      // Skip demos - they're handled by the examples index.\n      if (item.type === \"registry:internal\") {\n        continue\n      }\n\n      const files =\n        item.files?.map((file) => ({\n          path: typeof file === \"string\" ? file : file.path,\n          type: typeof file === \"string\" ? item.type : file.type,\n          target: typeof file === \"string\" ? undefined : file.target,\n        })) ?? []\n\n      if (files.length === 0) {\n        continue\n      }\n\n      const componentPath = item.files?.[0]?.path\n        ? `@/registry/bases/${base.name}/${item.files[0].path}`\n        : \"\"\n\n      index += `\n    \"${item.name}\": {\n      name: \"${item.name}\",\n      title: \"${item.title}\",\n      description: \"${item.description ?? \"\"}\",\n      type: \"${item.type}\",\n      registryDependencies: ${JSON.stringify(item.registryDependencies)},\n      files: [${files.map((file) => {\n        const filePath = `registry/bases/${base.name}/${file.path}`\n        return `{\n        path: \"${filePath}\",\n        type: \"${file.type}\",\n        target: \"${file.target ?? \"\"}\"\n      }`\n      })}],\n      component: ${\n        componentPath\n          ? `React.lazy(async () => {\n        const mod = await import(\"${componentPath}\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      })`\n          : \"null\"\n      },\n      categories: ${JSON.stringify(item.categories)},\n      meta: ${JSON.stringify(item.meta)},\n    },`\n    }\n\n    index += `\n  },`\n  }\n\n  index += `\n}`\n\n  // Write unified index.\n  await rimraf(path.join(process.cwd(), \"registry/bases/__index__.tsx\"))\n  await fs.writeFile(\n    path.join(process.cwd(), \"registry/bases/__index__.tsx\"),\n    index\n  )\n}\n\nasync function buildBases(bases: Base[]) {\n  // Pre-import all base registries and style CSS files in parallel.\n  const [baseImports, styleMaps] = await Promise.all([\n    Promise.all(\n      bases.map(async (base) => {\n        const { registry: baseRegistry } = await import(\n          `../registry/bases/${base.name}/registry.ts`\n        )\n        const result = registrySchema.safeParse(baseRegistry)\n        if (!result.success) {\n          console.error(`❌ Registry validation failed for ${base.name}:`)\n          console.error(result.error.format())\n          throw new Error(`Invalid registry schema for ${base.name}`)\n        }\n        const registryItems = result.data.items.filter(\n          (item) => item.type !== \"registry:internal\"\n        )\n        return { base, baseRegistry, registryItems }\n      })\n    ),\n    Promise.all(\n      STYLES.map(async (style) => {\n        const styleContent = await fs.readFile(\n          path.join(process.cwd(), `registry/styles/style-${style.name}.css`),\n          \"utf8\"\n        )\n        return { style, styleMap: createStyleMap(styleContent) }\n      })\n    ),\n  ])\n\n  // Build all base-style combinations in parallel.\n  const combinations: Array<{\n    base: Base\n    style: (typeof STYLES)[number]\n    baseRegistry: (typeof baseImports)[number][\"baseRegistry\"]\n    registryItems: (typeof baseImports)[number][\"registryItems\"]\n    styleMap: Record<string, string>\n  }> = []\n\n  for (const { base, baseRegistry, registryItems } of baseImports) {\n    for (const { style, styleMap } of styleMaps) {\n      combinations.push({ base, style, baseRegistry, registryItems, styleMap })\n    }\n  }\n\n  await Promise.all(\n    combinations.map(\n      async ({ base, style, baseRegistry, registryItems, styleMap }) => {\n        console.log(`   ✅ ${base.name}-${style.name}...`)\n\n        const styleOutputDir = path.join(\n          process.cwd(),\n          `registry/${base.name}-${style.name}`\n        )\n        await rimraf(styleOutputDir)\n        await fs.mkdir(styleOutputDir, { recursive: true })\n\n        // Create a registry.ts file in the output directory.\n        const styleRegistry = { ...baseRegistry, items: registryItems }\n        const registryTs = `export const registry = ${JSON.stringify(styleRegistry, null, 2)}\\n`\n        await fs.writeFile(path.join(styleOutputDir, \"registry.ts\"), registryTs)\n\n        // Process all files in parallel.\n        await Promise.all(\n          registryItems.flatMap((registryItem) => {\n            if (!registryItem.files || registryItem.files.length === 0) {\n              return []\n            }\n            return registryItem.files.map(async (file: { path: string }) => {\n              const source = await fs.readFile(\n                path.join(\n                  process.cwd(),\n                  `registry/bases/${base.name}/${file.path}`\n                ),\n                \"utf8\"\n              )\n\n              const fileExtension = path.extname(file.path)\n              const shouldTransform =\n                fileExtension === \".tsx\" || fileExtension === \".ts\"\n\n              let transformedContent = source\n\n              if (shouldTransform) {\n                transformedContent = await transformStyle(source, {\n                  styleMap: styleMap,\n                })\n                transformedContent = transformedContent.replace(\n                  new RegExp(`@/registry/bases/${base.name}/`, \"g\"),\n                  `@/registry/${base.name}-${style.name}/`\n                )\n              }\n\n              const outputPath = path.join(\n                process.cwd(),\n                `registry/${base.name}-${style.name}/${file.path}`\n              )\n              await fs.mkdir(path.dirname(outputPath), { recursive: true })\n              await fs.writeFile(outputPath, transformedContent)\n            })\n          })\n        )\n      }\n    )\n  )\n}\n\nasync function buildRegistryIndex(styles: { name: string; title: string }[]) {\n  // Import all registries in parallel.\n  const registryImports = await Promise.all(\n    styles.map(async (style) => {\n      const { registry: importedRegistry } = await import(\n        `../registry/${style.name}/registry.ts`\n      )\n      return { style, importedRegistry }\n    })\n  )\n\n  let index = `// @ts-nocheck\n// This file is autogenerated by scripts/build-registry.ts\n// Do not edit this file directly.\nimport * as React from \"react\"\n\nexport const Index: Record<string, Record<string, any>> = {`\n\n  for (const { style, importedRegistry } of registryImports) {\n    const parseResult = registrySchema.safeParse(importedRegistry)\n    if (!parseResult.success) {\n      console.error(`❌ Registry validation failed for ${style.name}:`)\n      console.error(parseResult.error.format())\n      throw new Error(`Invalid registry schema for ${style.name}`)\n    }\n\n    const registry = parseResult.data\n\n    index += `\n  \"${style.name}\": {`\n\n    for (const item of registry.items) {\n      if (item.type === \"registry:internal\") {\n        continue\n      }\n\n      const files =\n        item.files?.map((file) => ({\n          path: typeof file === \"string\" ? file : file.path,\n          type: typeof file === \"string\" ? item.type : file.type,\n          target: typeof file === \"string\" ? undefined : file.target,\n        })) ?? []\n\n      if (files.length === 0) {\n        continue\n      }\n\n      const componentPath = item.files?.[0]?.path\n        ? `@/registry/${style.name}/${item.files[0].path}`\n        : \"\"\n\n      index += `\n    \"${item.name}\": {\n      name: \"${item.name}\",\n      title: \"${item.title}\",\n      description: \"${item.description ?? \"\"}\",\n      type: \"${item.type}\",\n      registryDependencies: ${JSON.stringify(item.registryDependencies)},\n      files: [${files.map((file) => {\n        const filePath = `registry/${style.name}/${file.path}`\n        return `{\n        path: \"${filePath}\",\n        type: \"${file.type}\",\n        target: \"${file.target ?? \"\"}\"\n      }`\n      })}],\n      component: ${\n        componentPath\n          ? `React.lazy(async () => {\n        const mod = await import(\"${componentPath}\")\n        const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name\n        return { default: mod.default || mod[exportName] }\n      })`\n          : \"null\"\n      },\n      categories: ${JSON.stringify(item.categories)},\n      meta: ${JSON.stringify(item.meta)},\n    },`\n    }\n\n    index += `\n  },`\n  }\n\n  index += `\n}`\n\n  await rimraf(path.join(process.cwd(), \"registry/__index__.tsx\"))\n  await fs.writeFile(path.join(process.cwd(), \"registry/__index__.tsx\"), index)\n}\n\nasync function buildRegistryJsonFile(styleName: string) {\n  const { registry: importedRegistry } = await import(\n    `../registry/${styleName}/registry.ts`\n  )\n\n  const parseResult = registrySchema.safeParse(importedRegistry)\n  if (!parseResult.success) {\n    console.error(`❌ Registry validation failed for ${styleName}:`)\n    console.error(parseResult.error.format())\n    throw new Error(`Invalid registry schema for ${styleName}`)\n  }\n\n  const registry = parseResult.data\n\n  const fixedRegistry = {\n    ...registry,\n    items: registry.items.map((item) => {\n      const files = item.files?.map((file) => ({\n        ...file,\n        path: `registry/${styleName}/${file.path}`,\n      }))\n      return { ...item, files }\n    }),\n  }\n\n  const outputDir = path.join(process.cwd(), `public/r/styles/${styleName}`)\n  await fs.mkdir(outputDir, { recursive: true })\n\n  const registryJsonPath = path.join(outputDir, \"registry.json\")\n  await fs.writeFile(registryJsonPath, JSON.stringify(fixedRegistry, null, 2))\n  prettierPaths.push(registryJsonPath)\n\n  const tempRegistryPath = path.join(\n    process.cwd(),\n    `registry-${styleName}.json`\n  )\n  await fs.writeFile(tempRegistryPath, JSON.stringify(fixedRegistry, null, 2))\n}\n\nasync function buildRegistry(styleName: string) {\n  const outputPath = `public/r/styles/${styleName}`\n  await new Promise<void>((resolve, reject) => {\n    const proc = spawn(\n      \"node\",\n      [\n        \"../../packages/shadcn/dist/index.js\",\n        \"build\",\n        `registry-${styleName}.json`,\n        \"--output\",\n        outputPath,\n      ],\n      { cwd: process.cwd(), stdio: \"pipe\" }\n    )\n    let stderr = \"\"\n    proc.stderr?.on(\"data\", (data) => (stderr += data))\n    proc.on(\"close\", (code) => {\n      if (code !== 0) {\n        reject(new Error(`Process exited with code ${code}: ${stderr}`))\n      } else {\n        resolve()\n      }\n    })\n    proc.on(\"error\", reject)\n  })\n}\n\nasync function buildBlocksIndex() {\n  const blocks = await getAllBlocks([\"registry:block\"])\n\n  const payload = blocks.map((block) => ({\n    name: block.name,\n    description: block.description,\n    categories: block.categories,\n  }))\n\n  await rimraf(path.join(process.cwd(), \"registry/__blocks__.json\"))\n  const blocksJsonPath = path.join(process.cwd(), \"registry/__blocks__.json\")\n  await fs.writeFile(blocksJsonPath, JSON.stringify(payload, null, 2))\n  prettierPaths.push(blocksJsonPath)\n}\n\nasync function cleanUp(stylesToBuild: { name: string; title: string }[]) {\n  // Clean up all in parallel.\n  const cleanupPromises: Promise<boolean>[] = []\n\n  for (const style of stylesToBuild) {\n    cleanupPromises.push(\n      rimraf(path.join(process.cwd(), `registry-${style.name}.json`))\n    )\n  }\n\n  for (const base of BASES) {\n    for (const style of STYLES) {\n      const baseName = `${base.name}-${style.name}`\n      if (!WHITELISTED_STYLES.includes(baseName)) {\n        const baseDir = path.join(process.cwd(), `registry/${baseName}`)\n        console.log(`   🗑️ ${baseName}`)\n        cleanupPromises.push(rimraf(baseDir))\n      }\n    }\n  }\n\n  await Promise.all(cleanupPromises)\n}\n\nasync function buildConfig() {\n  const config = { presets: PRESETS }\n  const outputPath = path.join(process.cwd(), \"public/r/config.json\")\n  await fs.writeFile(outputPath, JSON.stringify(config, null, 2))\n  prettierPaths.push(outputPath)\n}\n\nasync function applyIconTransform(content: string, filename: string) {\n  const sourceFile = iconProject.createSourceFile(filename, content, {\n    scriptKind: ScriptKind.TSX,\n    overwrite: true,\n  })\n\n  // Create a minimal config with just iconLibrary.\n  // transformIcons only uses config.iconLibrary, so we can safely cast this.\n  type TransformIconsConfig = Parameters<typeof transformIcons>[0][\"config\"]\n  type IconTransformInput = {\n    filename: string\n    raw: string\n    sourceFile: typeof sourceFile\n    config: TransformIconsConfig\n  }\n  const config = { iconLibrary: \"lucide\" } as TransformIconsConfig\n\n  await (transformIcons as (opts: IconTransformInput) => Promise<unknown>)({\n    filename,\n    raw: content,\n    sourceFile,\n    config,\n  })\n\n  return sourceFile.getText()\n}\n\nasync function copyUIToExamples() {\n  const defaultStyle = \"nova\"\n  const directories = [\"ui\", \"lib\", \"hooks\"]\n\n  // Build all copy tasks.\n  const copyTasks: Array<{ base: Base; dir: string }> = []\n  for (const base of BASES) {\n    for (const dir of directories) {\n      copyTasks.push({ base, dir })\n    }\n  }\n\n  await Promise.all(\n    copyTasks.map(async ({ base, dir }) => {\n      const sourceStyle = `${base.name}-${defaultStyle}`\n      const fromDir = path.join(process.cwd(), `registry/${sourceStyle}/${dir}`)\n      const toDir = path.join(process.cwd(), `examples/${base.name}/${dir}`)\n\n      try {\n        await fs.access(fromDir)\n      } catch {\n        console.log(`   ⚠️ registry/${sourceStyle}/${dir} not found, skipping`)\n        return\n      }\n\n      await rimraf(toDir)\n      await fs.mkdir(toDir, { recursive: true })\n\n      const files = await fs.readdir(fromDir)\n      await Promise.all(\n        files.map(async (file) => {\n          const sourcePath = path.join(fromDir, file)\n          const targetPath = path.join(toDir, file)\n          let content = await fs.readFile(sourcePath, \"utf-8\")\n          content = content.replace(\n            new RegExp(`@/registry/${sourceStyle}/`, \"g\"),\n            `@/examples/${base.name}/`\n          )\n\n          // Transform icons for TSX files.\n          if (file.endsWith(\".tsx\")) {\n            content = await applyIconTransform(content, file)\n          }\n\n          await fs.writeFile(targetPath, content)\n        })\n      )\n\n      console.log(\n        `   ✅ registry/${sourceStyle}/${dir} → examples/${base.name}/${dir}`\n      )\n    })\n  )\n}\n\nasync function buildIndex() {\n  // Import ui/_registry.ts from each base.\n  const baseUiRegistries = await Promise.all(\n    Array.from(BASES).map(async (base) => {\n      const { ui } = await import(\n        `../registry/bases/${base.name}/ui/_registry.ts`\n      )\n      return { baseName: base.name, items: ui as RegistryItem[] }\n    })\n  )\n\n  // Dedupe components by name and merge links across bases.\n  type IndexItem = Omit<RegistryItem, \"meta\"> & {\n    meta?: { links?: Record<string, RegistryItem[\"meta\"]> }\n  }\n  const componentMap = new Map<string, IndexItem>()\n  for (const { baseName, items } of baseUiRegistries) {\n    for (const item of items) {\n      if (!componentMap.has(item.name)) {\n        const { meta, ...rest } = item\n        componentMap.set(item.name, {\n          ...rest,\n          ...(meta?.links\n            ? { meta: { links: { [baseName]: meta.links } } }\n            : {}),\n        })\n      } else if (item.meta?.links) {\n        const existing = componentMap.get(item.name)!\n        existing.meta = existing.meta || {}\n        existing.meta.links = existing.meta.links || {}\n        existing.meta.links[baseName] = item.meta.links\n      }\n    }\n  }\n\n  // Sort alphabetically by name.\n  const index = Array.from(componentMap.values()).sort((a, b) =>\n    a.name.localeCompare(b.name)\n  )\n\n  const outputPath = path.join(process.cwd(), \"public/r/index.json\")\n  await fs.writeFile(outputPath, JSON.stringify(index, null, 2))\n  prettierPaths.push(outputPath)\n}\n\nasync function buildRegistriesJson() {\n  const directoryPath = path.join(process.cwd(), \"registry/directory.json\")\n  const directoryContent = await fs.readFile(directoryPath, \"utf8\")\n  const directory = JSON.parse(directoryContent) as Array<{\n    name: string\n    homepage?: string\n    url: string\n    description?: string\n    featured?: boolean\n    logo?: string\n  }>\n\n  const registries = directory.map((entry) => ({\n    name: entry.name,\n    homepage: entry.homepage,\n    url: entry.url,\n    description: entry.description,\n  }))\n\n  const outputPath = path.join(process.cwd(), \"public/r/registries.json\")\n  await fs.writeFile(outputPath, JSON.stringify(registries, null, 2))\n  prettierPaths.push(outputPath)\n}\n\nasync function buildRtlExamples() {\n  // Process all bases in parallel.\n  await Promise.all(\n    Array.from(BASES).map(async (base) => {\n      const sourceDir = path.join(process.cwd(), `examples/${base.name}/ui`)\n      const targetDir = path.join(process.cwd(), `examples/${base.name}/ui-rtl`)\n\n      try {\n        await fs.access(sourceDir)\n      } catch {\n        console.log(`   ⚠️ examples/${base.name}/ui not found, skipping...`)\n        return\n      }\n\n      await rimraf(targetDir)\n      await fs.mkdir(targetDir, { recursive: true })\n\n      const files = await fs.readdir(sourceDir)\n      await Promise.all(\n        files\n          .filter((file) => file.endsWith(\".tsx\") || file.endsWith(\".ts\"))\n          .map(async (file) => {\n            const sourcePath = path.join(sourceDir, file)\n            const targetPath = path.join(targetDir, file)\n\n            let content = await fs.readFile(sourcePath, \"utf-8\")\n            content = await transformDirection(content, true)\n            content = content.replace(\n              new RegExp(`@/examples/${base.name}/ui/`, \"g\"),\n              `@/examples/${base.name}/ui-rtl/`\n            )\n            await fs.writeFile(targetPath, content)\n          })\n      )\n\n      console.log(`   ✅ examples/${base.name}/ui-rtl`)\n    })\n  )\n}\n\nasync function batchPrettier(paths: string[]) {\n  if (paths.length === 0) return\n\n  await new Promise<void>((resolve, reject) => {\n    const prettierBin = path.join(process.cwd(), \"node_modules/.bin/prettier\")\n    const proc = spawn(prettierBin, [\"--write\", ...paths], {\n      cwd: process.cwd(),\n      stdio: \"inherit\",\n    })\n    proc.on(\"close\", () => resolve())\n    proc.on(\"error\", reject)\n  })\n}\n\nasync function buildColors() {\n  const colorsTargetPath = path.join(process.cwd(), \"public/r/colors\")\n  await fs.mkdir(colorsTargetPath, { recursive: true })\n\n  await Promise.all(\n    BASE_COLORS.map(async (baseColor) => {\n      const light = (baseColor.cssVars?.light ?? {}) as Record<string, string>\n      const dark = (baseColor.cssVars?.dark ?? {}) as Record<string, string>\n\n      const cssVarKeys = Object.keys(light).filter(\n        (key) => !key.startsWith(\"sidebar\")\n      )\n\n      const rootVars = cssVarKeys\n        .map((key) => `    --${key}: ${light[key]};`)\n        .join(\"\\n\")\n      const darkVars = cssVarKeys\n        .filter((key) => dark[key])\n        .map((key) => `    --${key}: ${dark[key]};`)\n        .join(\"\\n\")\n\n      const payload = {\n        inlineColors: { light, dark },\n        cssVars: { light, dark },\n        cssVarsV4: baseColor.cssVars,\n        inlineColorsTemplate:\n          \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n        cssVarsTemplate: `@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer base {\\n  :root {\\n${rootVars}\\n  }\\n\\n  .dark {\\n${darkVars}\\n  }\\n}\\n\\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}`,\n      }\n\n      const outputPath = path.join(colorsTargetPath, `${baseColor.name}.json`)\n      await fs.writeFile(outputPath, JSON.stringify(payload, null, 2))\n      prettierPaths.push(outputPath)\n      console.log(`   ✅ ${baseColor.name}.json`)\n    })\n  )\n}\n"
  },
  {
    "path": "apps/v4/scripts/build-test-app.mts",
    "content": "/**\n * Build Test Apps Script\n *\n * This script populates the ui-test-apps repository with components and examples\n * from the shadcn/ui registry for testing different style configurations.\n *\n * Prerequisites:\n *   1. Clone the test apps repo: git clone https://github.com/shadcn-ui/ui-test-apps\n *   2. Place it at ../../../ui-test-apps (relative to apps/v4) or set TEST_APPS_PATH\n *\n * Usage:\n *   pnpm test:apps [STYLE]\n *\n * Examples:\n *   pnpm test:apps nova      # Build with nova style\n *   pnpm test:apps maia      # Build with maia style\n *   pnpm test:apps vega      # Build with vega style\n *\n * Available styles: vega, nova, maia, lyra, mira\n *\n * What it does:\n *   1. Copies UI components to next-radix/components/ui and next-base/components/ui\n *   2. Copies hooks to next-radix/hooks and next-base/hooks\n *   3. Transforms canonical CSS classes (cn-*) to actual Tailwind classes\n *   4. Transforms IconPlaceholder to lucide-react icons\n *   5. Generates example pages at app/{example}/page.tsx\n *   6. Generates block pages at app/blocks/{block}/page.tsx\n *   7. Updates the STYLE constant in layout.tsx\n *\n * After running:\n *   cd ../../../ui-test-apps\n *   pnpm install\n *   pnpm dev\n *\n * Then visit:\n *   - http://localhost:3000 (next-radix)\n *   - http://localhost:3001 (next-base)\n */\n\nimport { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { rimraf } from \"rimraf\"\nimport { registrySchema } from \"shadcn/schema\"\nimport {\n  createStyleMap,\n  transformIcons,\n  transformStyle,\n} from \"shadcn/utils\"\nimport { Project, ScriptKind } from \"ts-morph\"\n\nimport { BASES, type Base } from \"@/registry/bases\"\nimport { STYLES } from \"@/registry/styles\"\n\n// Default path to test apps repo.\nconst DEFAULT_TEST_APPS_PATH = \"../../../ui-test-apps\"\n\n// Parse CLI arguments.\nconst args = process.argv.slice(2)\nconst styleName = args[0]\nconst testAppsPath =\n  args[1] || process.env.TEST_APPS_PATH || DEFAULT_TEST_APPS_PATH\n\nif (!styleName) {\n  console.error(\"❌ Usage: pnpm test:apps [STYLE] [TEST_APPS_PATH]\")\n  console.error(\"   Example: pnpm test:apps nova\")\n  console.error(\"\")\n  console.error(`   Available styles: ${STYLES.map((s) => s.name).join(\", \")}`)\n  console.error(\"\")\n  console.error(`   Default test apps path: ${DEFAULT_TEST_APPS_PATH}`)\n  console.error(`   Override with: pnpm test:apps nova /path/to/ui-test-apps`)\n  console.error(`   Or set TEST_APPS_PATH environment variable`)\n  process.exit(1)\n}\n\n// Validate style exists.\nconst style = STYLES.find((s) => s.name === styleName)\nif (!style) {\n  console.error(`❌ Unknown style: \"${styleName}\"`)\n  console.error(`   Available styles: ${STYLES.map((s) => s.name).join(\", \")}`)\n  process.exit(1)\n}\n\n// Resolve test apps path.\nconst resolvedTestAppsPath = path.resolve(process.cwd(), testAppsPath)\n\n// Check if test apps path exists.\ntry {\n  await fs.access(resolvedTestAppsPath)\n} catch {\n  console.error(`❌ Test apps path not found: ${resolvedTestAppsPath}`)\n  process.exit(1)\n}\n\nconsole.log(`🏗️ Building test apps with style \"${styleName}\"...`)\nconsole.log(`   Test apps path: ${resolvedTestAppsPath}`)\n\n// Create ts-morph project for icon transformation.\nconst project = new Project({\n  useInMemoryFileSystem: true,\n})\n\ntry {\n  // Build bases with the selected style.\n  console.log(\"\\n📦 Building bases...\")\n  const builtRegistries = await buildBasesWithStyle(Array.from(BASES), style)\n\n  // Process each base.\n  for (const { base, registryItems, styleMap } of builtRegistries) {\n    const testAppDir = path.join(resolvedTestAppsPath, `next-${base.name}`)\n\n    // Check if test app exists.\n    try {\n      await fs.access(testAppDir)\n    } catch {\n      console.log(`   ⚠️ ${testAppDir} not found, skipping.`)\n      continue\n    }\n\n    console.log(`\\n📋 Processing ${base.name}...`)\n\n    // Clear existing generated content.\n    await rimraf(path.join(testAppDir, \"components/ui\"))\n    await rimraf(path.join(testAppDir, \"hooks\"))\n\n    // Clear example routes (directories in app/).\n    const appDir = path.join(testAppDir, \"app\")\n    const appContents = await fs.readdir(appDir)\n    for (const item of appContents) {\n      const itemPath = path.join(appDir, item)\n      const stat = await fs.stat(itemPath)\n      if (stat.isDirectory()) {\n        await rimraf(itemPath)\n      }\n    }\n\n    // Copy UI components.\n    console.log(`   📁 Copying UI components...`)\n    await copyTransformedFiles(\n      path.join(process.cwd(), `registry/bases/${base.name}/ui`),\n      path.join(testAppDir, \"components/ui\"),\n      base,\n      styleMap\n    )\n\n    // Copy hooks.\n    console.log(`   📁 Copying hooks...`)\n    await copyTransformedFiles(\n      path.join(process.cwd(), `registry/bases/${base.name}/hooks`),\n      path.join(testAppDir, \"hooks\"),\n      base,\n      styleMap\n    )\n\n    // Generate example pages.\n    console.log(`   📄 Generating example pages...`)\n    const examplesDir = path.join(\n      process.cwd(),\n      `registry/bases/${base.name}/examples`\n    )\n    let exampleFiles: string[] = []\n    try {\n      exampleFiles = (await fs.readdir(examplesDir)).filter(\n        (f) =>\n          f.endsWith(\".tsx\") &&\n          !f.startsWith(\"_\") &&\n          f !== \"component-example.tsx\" // Skip the generic component example.\n      )\n    } catch {\n      console.log(`   ⚠️ No examples directory found for ${base.name}.`)\n    }\n\n    const generatedExamples: string[] = []\n\n    for (const exampleFile of exampleFiles) {\n      // Extract example name: \"accordion-example.tsx\" -> \"accordion\".\n      const exampleName = exampleFile\n        .replace(\"-example.tsx\", \"\")\n        .replace(\".tsx\", \"\")\n      const sourcePath = path.join(examplesDir, exampleFile)\n      const targetDir = path.join(appDir, exampleName)\n      const targetPath = path.join(targetDir, \"page.tsx\")\n\n      // Read and transform the example file.\n      let content = await fs.readFile(sourcePath, \"utf-8\")\n\n      // Apply style transformation.\n      content = await transformStyle(content, { styleMap })\n\n      // Transform icons using shadcn transformer.\n      content = await applyIconTransform(content, exampleFile)\n\n      // Rewrite imports.\n      content = rewriteImports(content, base.name)\n\n      // Transform the default export function name to Page.\n      content = transformDefaultExport(content)\n\n      // Write the transformed example as a page.\n      await fs.mkdir(targetDir, { recursive: true })\n      await fs.writeFile(targetPath, content)\n      generatedExamples.push(exampleName)\n    }\n\n    console.log(`   ✅ Generated ${generatedExamples.length} example pages`)\n\n    // Generate block pages.\n    console.log(`   📄 Generating block pages...`)\n    const blocksDir = path.join(\n      process.cwd(),\n      `registry/bases/${base.name}/blocks`\n    )\n    let blockFiles: string[] = []\n    try {\n      blockFiles = (await fs.readdir(blocksDir)).filter(\n        (f) => f.endsWith(\".tsx\") && !f.startsWith(\"_\")\n      )\n    } catch {\n      console.log(`   ⚠️ No blocks directory found for ${base.name}.`)\n    }\n\n    const generatedBlocks: string[] = []\n\n    for (const blockFile of blockFiles) {\n      // Extract block name: \"chatgpt.tsx\" -> \"chatgpt\".\n      const blockName = blockFile.replace(\".tsx\", \"\")\n      const sourcePath = path.join(blocksDir, blockFile)\n      const targetDir = path.join(appDir, `blocks/${blockName}`)\n      const targetPath = path.join(targetDir, \"page.tsx\")\n\n      // Read and transform the block file.\n      let content = await fs.readFile(sourcePath, \"utf-8\")\n\n      // Apply style transformation.\n      content = await transformStyle(content, { styleMap })\n\n      // Transform icons using shadcn transformer.\n      content = await applyIconTransform(content, blockFile)\n\n      // Rewrite imports.\n      content = rewriteImports(content, base.name)\n\n      // Transform the default export function name to Page.\n      content = transformDefaultExport(content)\n\n      // Write the transformed block as a page.\n      await fs.mkdir(targetDir, { recursive: true })\n      await fs.writeFile(targetPath, content)\n      generatedBlocks.push(blockName)\n    }\n\n    console.log(`   ✅ Generated ${generatedBlocks.length} block pages`)\n\n    // Update STYLE constant in layout.tsx.\n    await updateLayoutStyle(testAppDir, styleName)\n  }\n\n  console.log(`\\n✅ Test apps built successfully!`)\n  console.log(`\\n📌 Next steps:`)\n  console.log(`   cd ${resolvedTestAppsPath}`)\n  console.log(`   pnpm install`)\n  console.log(`   pnpm dev`)\n} catch (error) {\n  console.error(\"\\n❌ Build failed:\", error)\n  process.exit(1)\n}\n\nasync function buildBasesWithStyle(bases: Base[], style: (typeof STYLES)[0]) {\n  // Load style map.\n  const styleContent = await fs.readFile(\n    path.join(process.cwd(), `registry/styles/style-${style.name}.css`),\n    \"utf8\"\n  )\n  const styleMap = createStyleMap(styleContent)\n\n  // Load registries for each base.\n  const results: Array<{\n    base: Base\n    registryItems: Array<{ name: string; files?: Array<{ path: string }> }>\n    styleMap: Record<string, string>\n  }> = []\n\n  for (const base of bases) {\n    const { registry: baseRegistry } = await import(\n      `../registry/bases/${base.name}/registry.ts`\n    )\n    const result = registrySchema.safeParse(baseRegistry)\n    if (!result.success) {\n      console.error(`❌ Registry validation failed for ${base.name}:`)\n      console.error(result.error.format())\n      throw new Error(`Invalid registry schema for ${base.name}`)\n    }\n    const registryItems = result.data.items.filter(\n      (item) => item.type !== \"registry:internal\"\n    )\n    results.push({ base, registryItems, styleMap })\n    console.log(`   ✅ Loaded ${base.name} registry`)\n  }\n\n  return results\n}\n\nasync function copyTransformedFiles(\n  sourceDir: string,\n  targetDir: string,\n  base: Base,\n  styleMap: Record<string, string>\n) {\n  try {\n    await fs.access(sourceDir)\n  } catch {\n    return\n  }\n\n  await fs.mkdir(targetDir, { recursive: true })\n\n  const files = await fs.readdir(sourceDir)\n  for (const file of files) {\n    // Skip _registry.ts files.\n    if (file.startsWith(\"_\")) {\n      continue\n    }\n\n    const sourcePath = path.join(sourceDir, file)\n    const targetPath = path.join(targetDir, file)\n    const stat = await fs.stat(sourcePath)\n\n    if (stat.isDirectory()) {\n      await copyTransformedFiles(sourcePath, targetPath, base, styleMap)\n    } else {\n      let content = await fs.readFile(sourcePath, \"utf-8\")\n\n      // Apply style transformation for .tsx and .ts files.\n      if (file.endsWith(\".tsx\") || file.endsWith(\".ts\")) {\n        content = await transformStyle(content, { styleMap })\n        content = await applyIconTransform(content, file)\n        content = rewriteImports(content, base.name)\n      }\n\n      await fs.writeFile(targetPath, content)\n    }\n  }\n}\n\nasync function applyIconTransform(content: string, filename: string) {\n  const sourceFile = project.createSourceFile(filename, content, {\n    scriptKind: ScriptKind.TSX,\n    overwrite: true,\n  })\n\n  // Create a minimal config with just iconLibrary.\n  // transformIcons only uses config.iconLibrary, so we can safely cast this.\n  type TransformIconsConfig = Parameters<typeof transformIcons>[0][\"config\"]\n  const config = { iconLibrary: \"lucide\" } as TransformIconsConfig\n\n  await transformIcons({\n    sourceFile,\n    config,\n    filename,\n    raw: content,\n  })\n\n  return sourceFile.getText()\n}\n\nfunction rewriteImports(content: string, baseName: string) {\n  // Rewrite base registry imports to test app paths.\n  content = content.replace(\n    new RegExp(`@/registry/bases/${baseName}/ui/`, \"g\"),\n    \"@/components/ui/\"\n  )\n  content = content.replace(\n    new RegExp(`@/registry/bases/${baseName}/lib/`, \"g\"),\n    \"@/lib/\"\n  )\n  content = content.replace(\n    new RegExp(`@/registry/bases/${baseName}/hooks/`, \"g\"),\n    \"@/hooks/\"\n  )\n  content = content.replace(\n    new RegExp(`@/registry/bases/${baseName}/components/`, \"g\"),\n    \"@/components/\"\n  )\n\n  // Remove imports from @/app (like IconPlaceholder).\n  content = content.replace(/^import.*from\\s+[\"']@\\/app\\/.*[\"'].*\\n/gm, \"\")\n\n  return content\n}\n\nfunction transformDefaultExport(content: string) {\n  // Replace \"export default function XxxExample\" with \"export default function Page\".\n  content = content.replace(\n    /export\\s+default\\s+function\\s+\\w+\\s*\\(/,\n    \"export default function Page(\"\n  )\n\n  return content\n}\n\nasync function updateLayoutStyle(testAppDir: string, styleName: string) {\n  const layoutPath = path.join(testAppDir, \"app/layout.tsx\")\n\n  try {\n    let content = await fs.readFile(layoutPath, \"utf-8\")\n\n    // Replace the STYLE constant value.\n    content = content.replace(\n      /const STYLE = [\"'][^\"']*[\"']/,\n      `const STYLE = \"${styleName}\"`\n    )\n\n    await fs.writeFile(layoutPath, content)\n    console.log(`   ✅ Updated STYLE in layout.tsx to \"${styleName}\"`)\n  } catch {\n    console.log(`   ⚠️ Could not update layout.tsx`)\n  }\n}\n"
  },
  {
    "path": "apps/v4/scripts/capture-explore.mts",
    "content": "import { existsSync, mkdirSync } from \"fs\"\nimport path from \"path\"\nimport puppeteer from \"puppeteer\"\nimport { decodePreset } from \"shadcn/preset\"\n\nimport { EXPLORE_PRESETS } from \"../lib/explore\"\n\nconst PRESETS_PATH = path.join(process.cwd(), \"public/presets\")\nconst force = process.argv.includes(\"--force\")\n\n// ----------------------------------------------------------------------------\n// Capture explore preset screenshots.\n// ----------------------------------------------------------------------------\nasync function captureScreenshots() {\n  // Ensure output directory exists.\n  if (!existsSync(PRESETS_PATH)) {\n    mkdirSync(PRESETS_PATH, { recursive: true })\n  }\n\n  const presets = force\n    ? EXPLORE_PRESETS\n    : EXPLORE_PRESETS.filter((code) => {\n        const lightPath = path.join(PRESETS_PATH, `${code}-light.png`)\n        const darkPath = path.join(PRESETS_PATH, `${code}-dark.png`)\n        return !existsSync(lightPath) || !existsSync(darkPath)\n      })\n\n  if (presets.length === 0) {\n    console.log(\"✨ All screenshots exist, nothing to capture\")\n    return\n  }\n\n  const browser = await puppeteer.launch({\n    defaultViewport: {\n      width: 1280,\n      height: 720,\n      deviceScaleFactor: 2,\n    },\n  })\n\n  for (const code of presets) {\n    const decoded = decodePreset(code)\n    if (!decoded) {\n      console.warn(`⚠ Skipping invalid preset code: ${code}`)\n      continue\n    }\n\n    const pageUrl = `http://localhost:4000/preview/radix/preview?preset=${code}`\n\n    const page = await browser.newPage()\n    await page.goto(pageUrl, {\n      waitUntil: \"networkidle2\",\n    })\n\n    console.log(`- Capturing ${code}...`)\n\n    for (const theme of [\"light\", \"dark\"] as const) {\n      const screenshotPath = path.join(\n        PRESETS_PATH,\n        `${code}-${theme}.png`\n      )\n\n      if (!force && existsSync(screenshotPath)) {\n        continue\n      }\n\n      // Set theme and reload page.\n      await page.evaluate((currentTheme) => {\n        localStorage.setItem(\"theme\", currentTheme)\n      }, theme)\n\n      await page.reload({ waitUntil: \"networkidle2\" })\n\n      // Wait for animations to complete.\n      await new Promise((resolve) => setTimeout(resolve, 1000))\n\n      // Hide Tailwind indicator.\n      await page.evaluate(() => {\n        const indicator = document.querySelector(\"[data-tailwind-indicator]\")\n        if (indicator) {\n          indicator.remove()\n        }\n      })\n\n      // Capture the target element.\n      const element = await page.$('[data-slot=\"capture-target\"]')\n      if (element) {\n        await element.screenshot({\n          path: screenshotPath,\n        })\n      } else {\n        console.warn(`⚠ No [data-slot=\"capture-target\"] found for ${code} (${theme}), capturing full page`)\n        await page.screenshot({\n          path: screenshotPath,\n        })\n      }\n    }\n\n    await page.close()\n  }\n\n  await browser.close()\n}\n\ntry {\n  console.log(\"🔍 Capturing explore preset screenshots...\")\n\n  await captureScreenshots()\n\n  console.log(\"✅ Done!\")\n} catch (error) {\n  console.error(error)\n  process.exit(1)\n}\n"
  },
  {
    "path": "apps/v4/scripts/capture-registry.mts",
    "content": "import { existsSync } from \"fs\"\nimport path from \"path\"\nimport puppeteer from \"puppeteer\"\n\nimport { getAllBlockIds } from \"../lib/blocks\"\n\nconst REGISTRY_PATH = path.join(process.cwd(), \"public/r\")\n\n// ----------------------------------------------------------------------------\n// Capture screenshots.\n// ----------------------------------------------------------------------------\nasync function captureScreenshots() {\n  const blockIds = await getAllBlockIds()\n  const blocks = blockIds.filter((block) => {\n    // Check if screenshots already exist\n    const lightPath = path.join(\n      REGISTRY_PATH,\n      `styles/new-york-v4/${block}-light.png`\n    )\n    const darkPath = path.join(\n      REGISTRY_PATH,\n      `styles/new-york-v4/${block}-dark.png`\n    )\n    return !existsSync(lightPath) || !existsSync(darkPath)\n  })\n\n  if (blocks.length === 0) {\n    console.log(\"✨ All screenshots exist, nothing to capture\")\n    return\n  }\n\n  const browser = await puppeteer.launch({\n    defaultViewport: {\n      width: 1440,\n      height: 900,\n      deviceScaleFactor: 2,\n    },\n  })\n\n  for (const block of blocks) {\n    const pageUrl = `http://localhost:4000/view/${block}`\n\n    const page = await browser.newPage()\n    await page.goto(pageUrl, {\n      waitUntil: \"networkidle2\",\n    })\n\n    console.log(`- Capturing ${block}...`)\n\n    for (const theme of [\"light\", \"dark\"]) {\n      const screenshotPath = path.join(\n        REGISTRY_PATH,\n        `styles/new-york-v4/${block}${theme === \"dark\" ? \"-dark\" : \"-light\"}.png`\n      )\n\n      if (existsSync(screenshotPath)) {\n        continue\n      }\n\n      // Set theme and reload page\n      await page.evaluate((currentTheme) => {\n        localStorage.setItem(\"theme\", currentTheme)\n      }, theme)\n\n      await page.reload({ waitUntil: \"networkidle2\" })\n\n      // Wait for animations to complete\n      if (block.startsWith(\"chart\") || block.startsWith(\"dashboard\")) {\n        await new Promise((resolve) => setTimeout(resolve, 1000))\n      }\n\n      // Hide Tailwind indicator\n      await page.evaluate(() => {\n        const indicator = document.querySelector(\"[data-tailwind-indicator]\")\n        if (indicator) {\n          indicator.remove()\n        }\n      })\n\n      await page.screenshot({\n        path: screenshotPath,\n      })\n    }\n\n    await page.close()\n  }\n\n  await browser.close()\n}\n\ntry {\n  console.log(\"🔍 Capturing screenshots...\")\n\n  await captureScreenshots()\n\n  console.log(\"✅ Done!\")\n} catch (error) {\n  console.error(error)\n  process.exit(1)\n}\n"
  },
  {
    "path": "apps/v4/scripts/validate-registries.mts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { z } from \"zod\"\n\nconst registryEntrySchema = z.object({\n  name: z.string().regex(/^@[a-zA-Z0-9][a-zA-Z0-9-_]*$/),\n  homepage: z.string().url(),\n  url: z.string().refine((url) => url.includes(\"{name}\"), {\n    message: \"URL must include {name} placeholder\",\n  }),\n  description: z.string(),\n})\n\nconst registriesSchema = z.array(registryEntrySchema)\n\nconst directoryEntrySchema = registryEntrySchema.extend({\n  logo: z.string(),\n})\n\nconst directorySchema = z.array(directoryEntrySchema)\n\nasync function main() {\n  let hasErrors = false\n\n  // 1. Validate registries.json.\n  const registriesFile = path.join(process.cwd(), \"public/r/registries.json\")\n  const registriesContent = await fs.readFile(registriesFile, \"utf-8\")\n  const registriesData = JSON.parse(registriesContent)\n\n  const registriesResult = registriesSchema.safeParse(registriesData)\n  if (!registriesResult.success) {\n    console.error(\"❌ registries.json validation failed:\")\n    console.error(registriesResult.error.format())\n    hasErrors = true\n  } else {\n    console.log(\"✅ registries.json is valid\")\n  }\n\n  // 2. Validate directory.json.\n  const directoryFile = path.join(process.cwd(), \"registry/directory.json\")\n  const directoryContent = await fs.readFile(directoryFile, \"utf-8\")\n  const directoryData = JSON.parse(directoryContent)\n\n  const directoryResult = directorySchema.safeParse(directoryData)\n  if (!directoryResult.success) {\n    console.error(\"❌ directory.json validation failed:\")\n    console.error(directoryResult.error.format())\n    hasErrors = true\n  } else {\n    console.log(\"✅ directory.json is valid\")\n  }\n\n  // 3. Check that all directory.json entries are in registries.json.\n  if (registriesResult.success && directoryResult.success) {\n    const registryNames = new Set(\n      registriesResult.data.map((entry) => entry.name)\n    )\n    const directoryNames = new Set(\n      directoryResult.data.map((entry) => entry.name)\n    )\n\n    const missingInRegistries = Array.from(directoryNames).filter(\n      (name) => !registryNames.has(name)\n    )\n\n    if (missingInRegistries.length > 0) {\n      console.error(\n        \"\\n❌ The following registries are in directory.json but missing from registries.json:\"\n      )\n      missingInRegistries.forEach((name) => console.error(`   ${name}`))\n      hasErrors = true\n    } else {\n      console.log(\"✅ All directory entries are present in registries.json\")\n    }\n  }\n\n  if (hasErrors) {\n    process.exit(1)\n  }\n\n  console.log(\"\\n✅ All registries passed validation.\")\n}\n\nmain().catch((error) => {\n  console.error(\"❌ Error:\", error instanceof Error ? error.message : error)\n  process.exit(1)\n})\n"
  },
  {
    "path": "apps/v4/source.config.ts",
    "content": "import { defineConfig, defineDocs } from \"fumadocs-mdx/config\"\nimport rehypePrettyCode from \"rehype-pretty-code\"\n\nimport { transformers } from \"@/lib/highlight-code\"\n\nexport default defineConfig({\n  mdxOptions: {\n    rehypePlugins: (plugins) => {\n      plugins.shift()\n      plugins.push([\n        rehypePrettyCode,\n        {\n          theme: {\n            dark: \"github-dark\",\n            light: \"github-light-default\",\n          },\n          transformers,\n        },\n      ])\n\n      return plugins\n    },\n  },\n})\n\nexport const docs = defineDocs({\n  dir: \"content/docs\",\n  // TODO: Fix this when we upgrade to zod v4.\n  // docs: {\n  //   schema: frontmatterSchema.extend({\n  //     links: z.optional(\n  //       z.object({\n  //         doc: z.string().optional(),\n  //         api: z.string().optional(),\n  //       })\n  //     ),\n  //   }),\n  // },\n})\n"
  },
  {
    "path": "apps/v4/styles/globals.css",
    "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n@import \"./legacy-themes.css\";\n\n@import \"../registry/styles/style-vega.css\" layer(base);\n@import \"../registry/styles/style-nova.css\" layer(base);\n@import \"../registry/styles/style-lyra.css\" layer(base);\n@import \"../registry/styles/style-maia.css\" layer(base);\n@import \"../registry/styles/style-mira.css\" layer(base);\n\n@custom-variant style-vega (&:where(.style-vega *));\n@custom-variant style-nova (&:where(.style-nova *));\n@custom-variant style-lyra (&:where(.style-lyra *));\n@custom-variant style-maia (&:where(.style-maia *));\n@custom-variant style-mira (&:where(.style-mira *));\n\n@custom-variant dark (&:is(.dark *));\n@custom-variant fixed (&:is(.layout-fixed *));\n\n@theme inline {\n  --breakpoint-3xl: 1600px;\n  --breakpoint-4xl: 2000px;\n  --font-sans: var(--font-sans);\n  --font-heading: var(--font-heading);\n  --font-mono: var(--font-mono);\n  --radius-sm: calc(var(--radius) * 0.6);\n  --radius-md: calc(var(--radius) * 0.8);\n  --radius-lg: var(--radius);\n  --radius-xl: calc(var(--radius) * 1.4);\n  --radius-2xl: calc(var(--radius) * 1.8);\n  --radius-3xl: calc(var(--radius) * 2.2);\n  --radius-4xl: calc(var(--radius) * 2.6);\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  --color-card: var(--card);\n  --color-card-foreground: var(--card-foreground);\n  --color-popover: var(--popover);\n  --color-popover-foreground: var(--popover-foreground);\n  --color-primary: var(--primary);\n  --color-primary-foreground: var(--primary-foreground);\n  --color-secondary: var(--secondary);\n  --color-secondary-foreground: var(--secondary-foreground);\n  --color-muted: var(--muted);\n  --color-muted-foreground: var(--muted-foreground);\n  --color-accent: var(--accent);\n  --color-accent-foreground: var(--accent-foreground);\n  --color-destructive: var(--destructive);\n  --color-destructive-foreground: var(--destructive-foreground);\n  --color-border: var(--border);\n  --color-input: var(--input);\n  --color-ring: var(--ring);\n  --color-chart-1: var(--chart-1);\n  --color-chart-2: var(--chart-2);\n  --color-chart-3: var(--chart-3);\n  --color-chart-4: var(--chart-4);\n  --color-chart-5: var(--chart-5);\n  --color-sidebar: var(--sidebar);\n  --color-sidebar-foreground: var(--sidebar-foreground);\n  --color-sidebar-primary: var(--sidebar-primary);\n  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n  --color-sidebar-accent: var(--sidebar-accent);\n  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n  --color-sidebar-border: var(--sidebar-border);\n  --color-sidebar-ring: var(--sidebar-ring);\n  --color-surface: var(--surface);\n  --color-surface-foreground: var(--surface-foreground);\n  --color-code: var(--code);\n  --color-code-foreground: var(--code-foreground);\n  --color-code-highlight: var(--code-highlight);\n  --color-code-number: var(--code-number);\n  --color-selection: var(--selection);\n  --color-selection-foreground: var(--selection-foreground);\n}\n\n:root {\n  --radius: 0.625rem;\n  --background: oklch(1 0 0);\n  --foreground: oklch(0.145 0 0);\n  --card: oklch(1 0 0);\n  --card-foreground: oklch(0.145 0 0);\n  --popover: oklch(1 0 0);\n  --popover-foreground: oklch(0.145 0 0);\n  --primary: oklch(0.205 0 0);\n  --primary-foreground: oklch(0.985 0 0);\n  --secondary: oklch(0.97 0 0);\n  --secondary-foreground: oklch(0.205 0 0);\n  --muted: oklch(0.97 0 0);\n  --muted-foreground: oklch(0.556 0 0);\n  --accent: oklch(0.97 0 0);\n  --accent-foreground: oklch(0.205 0 0);\n  --destructive: oklch(0.577 0.245 27.325);\n  --destructive-foreground: oklch(0.97 0.01 17);\n  --border: oklch(0.922 0 0);\n  --input: oklch(0.922 0 0);\n  --ring: oklch(0.708 0 0);\n  --chart-1: var(--color-blue-300);\n  --chart-2: var(--color-blue-500);\n  --chart-3: var(--color-blue-600);\n  --chart-4: var(--color-blue-700);\n  --chart-5: var(--color-blue-800);\n  --sidebar: oklch(0.985 0 0);\n  --sidebar-foreground: oklch(0.145 0 0);\n  --sidebar-primary: oklch(0.205 0 0);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.97 0 0);\n  --sidebar-accent-foreground: oklch(0.205 0 0);\n  --sidebar-border: oklch(0.922 0 0);\n  --sidebar-ring: oklch(0.708 0 0);\n  --surface: oklch(0.98 0 0);\n  --surface-foreground: var(--foreground);\n  --code: var(--surface);\n  --code-foreground: var(--surface-foreground);\n  --code-highlight: oklch(0.96 0 0);\n  --code-number: oklch(0.56 0 0);\n  --selection: oklch(0.145 0 0);\n  --selection-foreground: oklch(1 0 0);\n}\n\n.dark {\n  --background: oklch(0.145 0 0);\n  --foreground: oklch(0.985 0 0);\n  --card: oklch(0.205 0 0);\n  --card-foreground: oklch(0.985 0 0);\n  --popover: oklch(0.205 0 0);\n  --popover-foreground: oklch(0.985 0 0);\n  --primary: oklch(0.922 0 0);\n  --primary-foreground: oklch(0.205 0 0);\n  --secondary: oklch(0.269 0 0);\n  --secondary-foreground: oklch(0.985 0 0);\n  --muted: oklch(0.269 0 0);\n  --muted-foreground: oklch(0.708 0 0);\n  --accent: oklch(0.371 0 0);\n  --accent-foreground: oklch(0.985 0 0);\n  --destructive: oklch(0.704 0.191 22.216);\n  --destructive-foreground: oklch(0.58 0.22 27);\n  --border: oklch(1 0 0 / 10%);\n  --input: oklch(1 0 0 / 15%);\n  --ring: oklch(0.556 0 0);\n  --chart-1: var(--color-blue-300);\n  --chart-2: var(--color-blue-500);\n  --chart-3: var(--color-blue-600);\n  --chart-4: var(--color-blue-700);\n  --chart-5: var(--color-blue-800);\n  --sidebar: oklch(0.205 0 0);\n  --sidebar-foreground: oklch(0.985 0 0);\n  --sidebar-primary: oklch(0.488 0.243 264.376);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.269 0 0);\n  --sidebar-accent-foreground: oklch(0.985 0 0);\n  --sidebar-border: oklch(1 0 0 / 10%);\n  --sidebar-ring: oklch(0.439 0 0);\n  --surface: oklch(0.2 0 0);\n  --surface-foreground: oklch(0.708 0 0);\n  --code: var(--surface);\n  --code-foreground: var(--surface-foreground);\n  --code-highlight: oklch(0.27 0 0);\n  --code-number: oklch(0.72 0 0);\n  --selection: oklch(0.922 0 0);\n  --selection-foreground: oklch(0.205 0 0);\n}\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n  }\n  ::selection {\n    @apply bg-selection text-selection-foreground;\n  }\n  html {\n    @apply overscroll-y-none;\n  }\n  body {\n    font-synthesis-weight: none;\n    text-rendering: optimizeLegibility;\n  }\n  .cn-font-heading {\n    @apply font-heading;\n  }\n\n  [data-slot=\"layout\"] {\n    @apply overscroll-none;\n  }\n\n  @supports (font: -apple-system-body) and (-webkit-appearance: none) {\n    [data-wrapper] {\n      @apply min-[1800px]:border-t;\n    }\n  }\n\n  a:active,\n  button:active {\n    @apply opacity-60 md:opacity-100;\n  }\n\n  [data-lang=\"ar\"] {\n    font-family: var(--font-ar);\n  }\n\n  [data-lang=\"he\"] {\n    font-family: var(--font-he);\n  }\n}\n\n@utility border-grid {\n  @apply border-border/50 dark:border-border;\n}\n\n@utility section-soft {\n  @apply from-background to-surface/40 dark:bg-background 3xl:fixed:bg-none bg-linear-to-b;\n}\n\n@utility theme-container {\n  @apply font-sans;\n}\n\n@utility container-wrapper {\n  @apply 3xl:fixed:max-w-[calc(var(--breakpoint-2xl)+2rem)] mx-auto w-full px-2;\n}\n\n@utility container {\n  @apply 3xl:max-w-screen-2xl mx-auto max-w-[1400px] px-4 lg:px-8;\n}\n\n@utility no-scrollbar {\n  -ms-overflow-style: none;\n  scrollbar-width: none;\n\n  &::-webkit-scrollbar {\n    display: none;\n  }\n}\n\n@utility border-ghost {\n  @apply after:border-border relative after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten;\n}\n\n@utility step {\n  counter-increment: step;\n\n  &:before {\n    @apply border-background bg-muted mr-2 inline-flex size-6 items-center justify-center rounded-full text-center -indent-px font-mono text-sm font-medium md:absolute md:mt-[-4px] md:ml-[-50px] md:size-9 md:border-4;\n    content: counter(step);\n  }\n}\n\n@utility extend-touch-target {\n  @media (pointer: coarse) {\n    @apply relative touch-manipulation after:absolute after:-inset-2;\n  }\n}\n\n@layer components {\n  .steps {\n    &:first-child {\n      @apply !mt-0;\n    }\n\n    &:first-child > h3:first-child {\n      @apply !mt-0;\n    }\n\n    > h3 {\n      @apply !mt-8;\n    }\n\n    > h3 + p {\n      @apply !mt-2;\n    }\n  }\n\n  [data-rehype-pretty-code-figure] {\n    background-color: var(--color-code);\n    color: var(--color-code-foreground);\n    border-radius: var(--radius-xl);\n    border-width: 0px;\n    border-color: var(--border);\n    margin-top: calc(var(--spacing) * 6);\n    overflow: hidden;\n    font-size: var(--text-sm);\n    outline: none;\n    position: relative;\n    @apply -mx-1 md:-mx-1;\n\n    &:has([data-rehype-pretty-code-title]) [data-slot=\"copy-button\"] {\n      top: calc(var(--spacing) * 1.5) !important;\n    }\n  }\n\n  [data-rehype-pretty-code-title] {\n    border-bottom: color-mix(in oklab, var(--border) 30%, transparent);\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    padding-block: calc(var(--spacing) * 2.5);\n    padding-inline: calc(var(--spacing) * 4);\n    font-size: var(--text-sm);\n    font-family: var(--font-mono);\n    color: var(--color-code-foreground);\n  }\n\n  [data-line-numbers] {\n    display: grid;\n    min-width: 100%;\n    white-space: pre;\n    border: 0;\n    background: transparent;\n    padding: 0;\n    counter-reset: line;\n    box-decoration-break: clone;\n  }\n\n  [data-line-numbers] [data-line]::before {\n    font-size: var(--text-sm);\n    counter-increment: line;\n    content: counter(line);\n    display: inline-block;\n    width: calc(var(--spacing) * 16);\n    padding-right: calc(var(--spacing) * 6);\n    text-align: right;\n    color: var(--color-code-number);\n    background-color: var(--color-code);\n    position: sticky;\n    left: 0;\n  }\n\n  [data-line-numbers] [data-highlighted-line][data-line]::before {\n    background-color: var(--color-code-highlight);\n  }\n\n  [data-line] {\n    padding-top: calc(var(--spacing) * 0.5);\n    padding-bottom: calc(var(--spacing) * 0.5);\n    min-height: calc(var(--spacing) * 1);\n    width: 100%;\n    display: inline-block;\n  }\n\n  [data-line] span {\n    color: var(--shiki-light);\n\n    @variant dark {\n      color: var(--shiki-dark) !important;\n    }\n  }\n\n  [data-highlighted-line],\n  [data-highlighted-chars] {\n    position: relative;\n    background-color: var(--color-code-highlight);\n  }\n\n  [data-highlighted-line] {\n    &:after {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 2px;\n      height: 100%;\n      content: \"\";\n      background-color: color-mix(\n        in oklab,\n        var(--muted-foreground) 50%,\n        transparent\n      );\n    }\n  }\n\n  [data-highlighted-chars] {\n    border-radius: var(--radius-sm);\n    padding-inline: 0.3rem;\n    padding-block: 0.1rem;\n    font-family: var(--font-mono);\n    font-size: 0.8rem;\n  }\n}\n\n@layer components {\n  .dialog-ring {\n    @apply rounded-xl border-none bg-clip-padding shadow-2xl ring-4 ring-neutral-200/80 dark:bg-neutral-900 dark:ring-neutral-800;\n  }\n}\n"
  },
  {
    "path": "apps/v4/styles/legacy-themes.css",
    "content": ".theme-default .theme-container,\n.theme-default [data-radix-popper-content-wrapper] {\n  --chart-1: var(--color-blue-300);\n  --chart-2: var(--color-blue-500);\n  --chart-3: var(--color-blue-600);\n  --chart-4: var(--color-blue-700);\n  --chart-5: var(--color-blue-800);\n}\n\n.theme-mono .theme-container,\n.theme-mono [data-radix-popper-content-wrapper] {\n  --font-sans: var(--font-mono);\n  --primary: var(--color-stone-600);\n  --primary-foreground: var(--color-stone-50);\n  --chart-1: var(--color-stone-300);\n  --chart-2: var(--color-stone-500);\n  --chart-3: var(--color-stone-600);\n  --chart-4: var(--color-stone-700);\n  --chart-5: var(--color-stone-800);\n  --sidebar-primary: var(--color-stone-600);\n  --sidebar-primary-foreground: var(--color-stone-50);\n  --sidebar-ring: var(--color-stone-400);\n\n  @variant dark {\n    --primary: var(--color-stone-500);\n    --primary-foreground: var(--color-stone-50);\n    --sidebar-primary: var(--color-stone-500);\n    --sidebar-primary-foreground: var(--color-stone-50);\n    --sidebar-ring: var(--color-stone-900);\n  }\n\n  @media (min-width: 1024px) {\n    --font-sans: var(--font-mono);\n    --radius: 0.45em;\n    --text-lg: 1rem;\n    --text-xl: 1.1rem;\n    --text-2xl: 1.2rem;\n    --text-3xl: 1.3rem;\n    --text-4xl: 1.4rem;\n    --text-5xl: 1.5rem;\n    --text-6xl: 1.6rem;\n    --text-7xl: 1.7rem;\n    --text-8xl: 1.8rem;\n    --text-base: 0.85rem;\n    --text-sm: 0.8rem;\n    --spacing: 0.222222rem;\n  }\n\n  .rounded-xs,\n  .rounded-sm,\n  .rounded-md,\n  .rounded-lg,\n  .rounded-xl {\n    border-radius: 0;\n  }\n\n  .shadow-xs,\n  .shadow-sm,\n  .shadow-md,\n  .shadow-lg,\n  .shadow-xl {\n    box-shadow: none;\n  }\n\n  [data-slot=\"toggle-group\"],\n  [data-slot=\"toggle-group-item\"],\n  [data-slot=\"checkbox\"],\n  [data-slot=\"radio\"],\n  [data-slot=\"switch\"],\n  [data-slot=\"switch-thumb\"] {\n    @apply !rounded-none !shadow-none;\n  }\n}\n\n.theme-scaled .theme-container,\n.theme-scaled [data-radix-popper-content-wrapper] {\n  --chart-1: var(--color-blue-300);\n  --chart-2: var(--color-blue-500);\n  --chart-3: var(--color-blue-600);\n  --chart-4: var(--color-blue-700);\n  --chart-5: var(--color-blue-800);\n\n  @media (min-width: 1024px) {\n    --radius: 0.45em;\n    --text-lg: 1rem;\n    --text-xl: 1.1rem;\n    --text-2xl: 1.2rem;\n    --text-3xl: 1.3rem;\n    --text-4xl: 1.4rem;\n    --text-5xl: 1.5rem;\n    --text-6xl: 1.6rem;\n    --text-7xl: 1.7rem;\n    --text-8xl: 1.8rem;\n    --text-base: 0.85rem;\n    --text-sm: 0.8rem;\n    --spacing: 0.2rem;\n  }\n\n  [data-slot=\"select-trigger\"],\n  [data-slot=\"toggle-group-item\"] {\n    --spacing: 0.2rem;\n  }\n\n  [data-slot=\"card\"] {\n    border-radius: var(--radius);\n    padding-block: calc(var(--spacing) * 4);\n    gap: calc(var(--spacing) * 2);\n  }\n\n  [data-slot=\"card\"].pb-0 {\n    padding-bottom: 0;\n  }\n}\n\n.theme-rounded-none .theme-container,\n.theme-rounded-none [data-radix-popper-content-wrapper] {\n  --radius: 0;\n}\n\n.theme-rounded-small .theme-container,\n.theme-rounded-small [data-radix-popper-content-wrapper] {\n  --radius: 0.4rem;\n}\n\n.theme-rounded-medium .theme-container,\n.theme-rounded-medium [data-radix-popper-content-wrapper] {\n  --radius: 0.65rem;\n}\n\n.theme-rounded-large .theme-container,\n.theme-rounded-large [data-radix-popper-content-wrapper] {\n  --radius: 1rem;\n}\n\n.theme-rounded-full .theme-container,\n.theme-rounded-full [data-radix-popper-content-wrapper] {\n  --radius: 1.2rem;\n}\n\n.theme-inter .theme-container,\n.theme-inter [data-radix-popper-content-wrapper] {\n  --font-sans: var(--font-inter);\n}\n\n.theme-noto-sans .theme-container,\n.theme-noto-sans [data-radix-popper-content-wrapper] {\n  --font-sans: var(--font-noto-sans);\n}\n\n.theme-nunito-sans .theme-container,\n.theme-nunito-sans [data-radix-popper-content-wrapper] {\n  --font-sans: var(--font-nunito-sans);\n}\n\n.theme-figtree .theme-container,\n.theme-figtree [data-radix-popper-content-wrapper] {\n  --font-sans: var(--font-figtree);\n}\n\n.theme-blue .theme-container,\n.theme-blue [data-radix-popper-content-wrapper] {\n  --primary: var(--color-blue-700);\n  --primary-foreground: var(--color-blue-50);\n  /* --ring: var(--color-blue-100); */\n  --sidebar-primary: var(--color-blue-600);\n  --sidebar-primary-foreground: var(--color-blue-50);\n  /* --sidebar-ring: var(--color-blue-400); */\n  --chart-1: var(--color-blue-300);\n  --chart-2: var(--color-blue-500);\n  --chart-3: var(--color-blue-600);\n  --chart-4: var(--color-blue-700);\n  --chart-5: var(--color-blue-800);\n\n  @variant dark {\n    --primary: var(--color-blue-700);\n    --primary-foreground: var(--color-blue-50);\n    /* --ring: var(--color-blue-900); */\n    --sidebar-primary: var(--color-blue-500);\n    --sidebar-primary-foreground: var(--color-blue-50);\n    /* --sidebar-ring: var(--color-blue-900); */\n  }\n}\n\n.theme-green .theme-container,\n.theme-green [data-radix-popper-content-wrapper] {\n  --primary: var(--color-lime-600);\n  --primary-foreground: var(--color-lime-50);\n  --ring: var(--color-lime-400);\n  --chart-1: var(--color-green-300);\n  --chart-2: var(--color-green-500);\n  --chart-3: var(--color-green-600);\n  --chart-4: var(--color-green-700);\n  --chart-5: var(--color-green-800);\n  --sidebar-primary: var(--color-lime-600);\n  --sidebar-primary-foreground: var(--color-lime-50);\n  --sidebar-ring: var(--color-lime-400);\n\n  @variant dark {\n    --primary: var(--color-lime-600);\n    --primary-foreground: var(--color-lime-50);\n    --ring: var(--color-lime-900);\n    --sidebar-primary: var(--color-lime-500);\n    --sidebar-primary-foreground: var(--color-lime-50);\n    --sidebar-ring: var(--color-lime-900);\n  }\n}\n\n.theme-amber .theme-container,\n.theme-amber [data-radix-popper-content-wrapper] {\n  --primary: var(--color-amber-600);\n  --primary-foreground: var(--color-amber-50);\n  --ring: var(--color-amber-400);\n  --chart-1: var(--color-amber-300);\n  --chart-2: var(--color-amber-500);\n  --chart-3: var(--color-amber-600);\n  --chart-4: var(--color-amber-700);\n  --chart-5: var(--color-amber-800);\n  --sidebar-primary: var(--color-amber-600);\n  --sidebar-primary-foreground: var(--color-amber-50);\n  --sidebar-ring: var(--color-amber-400);\n\n  @variant dark {\n    --primary: var(--color-amber-500);\n    --primary-foreground: var(--color-amber-50);\n    --ring: var(--color-amber-900);\n    --sidebar-primary: var(--color-amber-500);\n    --sidebar-primary-foreground: var(--color-amber-50);\n    --sidebar-ring: var(--color-amber-900);\n  }\n}\n\n.theme-rose .theme-container,\n.theme-rose [data-radix-popper-content-wrapper] {\n  --primary: var(--color-rose-600);\n  --primary-foreground: var(--color-rose-50);\n  --ring: var(--color-rose-400);\n  --chart-1: var(--color-rose-300);\n  --chart-2: var(--color-rose-500);\n  --chart-3: var(--color-rose-600);\n  --chart-4: var(--color-rose-700);\n  --chart-5: var(--color-rose-800);\n  --sidebar-primary: var(--color-rose-600);\n  --sidebar-primary-foreground: var(--color-rose-50);\n  --sidebar-ring: var(--color-rose-400);\n\n  @variant dark {\n    --primary: var(--color-rose-500);\n    --primary-foreground: var(--color-rose-50);\n    --ring: var(--color-rose-900);\n    --sidebar-primary: var(--color-rose-500);\n    --sidebar-primary-foreground: var(--color-rose-50);\n    --sidebar-ring: var(--color-rose-900);\n  }\n}\n\n.theme-purple .theme-container,\n.theme-purple [data-radix-popper-content-wrapper] {\n  --primary: var(--color-purple-600);\n  --primary-foreground: var(--color-purple-50);\n  --ring: var(--color-purple-400);\n  --chart-1: var(--color-purple-300);\n  --chart-2: var(--color-purple-500);\n  --chart-3: var(--color-purple-600);\n  --chart-4: var(--color-purple-700);\n  --chart-5: var(--color-purple-800);\n  --sidebar-primary: var(--color-purple-600);\n  --sidebar-primary-foreground: var(--color-purple-50);\n  --sidebar-ring: var(--color-purple-400);\n\n  @variant dark {\n    --primary: var(--color-purple-500);\n    --primary-foreground: var(--color-purple-50);\n    --ring: var(--color-purple-900);\n    --sidebar-primary: var(--color-purple-500);\n    --sidebar-primary-foreground: var(--color-purple-50);\n    --sidebar-ring: var(--color-purple-900);\n  }\n}\n\n.theme-orange .theme-container,\n.theme-orange [data-radix-popper-content-wrapper] {\n  --primary: var(--color-orange-600);\n  --primary-foreground: var(--color-orange-50);\n  --ring: var(--color-orange-400);\n  --chart-1: var(--color-orange-300);\n  --chart-2: var(--color-orange-500);\n  --chart-3: var(--color-orange-600);\n  --chart-4: var(--color-orange-700);\n  --chart-5: var(--color-orange-800);\n  --sidebar-primary: var(--color-orange-600);\n  --sidebar-primary-foreground: var(--color-orange-50);\n  --sidebar-ring: var(--color-orange-400);\n\n  @variant dark {\n    --primary: var(--color-orange-500);\n    --primary-foreground: var(--color-orange-50);\n    --ring: var(--color-orange-900);\n    --sidebar-primary: var(--color-orange-500);\n    --sidebar-primary-foreground: var(--color-orange-50);\n    --sidebar-ring: var(--color-orange-900);\n  }\n}\n\n.theme-teal .theme-container,\n.theme-teal [data-radix-popper-content-wrapper] {\n  --primary: var(--color-teal-600);\n  --primary-foreground: var(--color-teal-50);\n  --chart-1: var(--color-teal-300);\n  --chart-2: var(--color-teal-500);\n  --chart-3: var(--color-teal-600);\n  --chart-4: var(--color-teal-700);\n  --chart-5: var(--color-teal-800);\n  --sidebar-primary: var(--color-teal-600);\n  --sidebar-primary-foreground: var(--color-teal-50);\n  --sidebar-ring: var(--color-teal-400);\n\n  @variant dark {\n    --primary: var(--color-teal-500);\n    --primary-foreground: var(--color-teal-50);\n    --sidebar-primary: var(--color-teal-500);\n    --sidebar-primary-foreground: var(--color-teal-50);\n    --sidebar-ring: var(--color-teal-900);\n  }\n}\n\n.theme-red .theme-container,\n.theme-red [data-radix-popper-content-wrapper] {\n  --primary: var(--color-red-600);\n  --primary-foreground: var(--color-red-50);\n  --ring: var(--color-red-400);\n  --chart-1: var(--color-red-300);\n  --chart-2: var(--color-red-500);\n  --chart-3: var(--color-red-600);\n  --chart-4: var(--color-red-700);\n  --chart-5: var(--color-red-800);\n  --sidebar-primary: var(--color-red-600);\n  --sidebar-primary-foreground: var(--color-red-50);\n  --sidebar-ring: var(--color-red-400);\n\n  @variant dark {\n    --primary: var(--color-red-500);\n    --primary-foreground: var(--color-red-50);\n    --ring: var(--color-red-900);\n    --sidebar-primary: var(--color-red-500);\n    --sidebar-primary-foreground: var(--color-red-50);\n    --sidebar-ring: var(--color-red-900);\n  }\n}\n\n.theme-yellow .theme-container,\n.theme-yellow [data-radix-popper-content-wrapper] {\n  --primary: var(--color-yellow-400);\n  --primary-foreground: var(--color-yellow-900);\n  --ring: var(--color-yellow-400);\n  --chart-1: var(--color-yellow-300);\n  --chart-2: var(--color-yellow-500);\n  --chart-3: var(--color-yellow-600);\n  --chart-4: var(--color-yellow-700);\n  --chart-5: var(--color-yellow-800);\n  --sidebar-primary: var(--color-yellow-600);\n  --sidebar-primary-foreground: var(--color-yellow-50);\n  --sidebar-ring: var(--color-yellow-400);\n\n  @variant dark {\n    --primary: var(--color-yellow-500);\n    --primary-foreground: var(--color-yellow-900);\n    --ring: var(--color-yellow-900);\n    --sidebar-primary: var(--color-yellow-500);\n    --sidebar-primary-foreground: var(--color-yellow-50);\n    --sidebar-ring: var(--color-yellow-900);\n  }\n}\n\n.theme-violet .theme-container,\n.theme-violet [data-radix-popper-content-wrapper] {\n  --primary: var(--color-violet-600);\n  --primary-foreground: var(--color-violet-50);\n  --ring: var(--color-violet-400);\n  --chart-1: var(--color-violet-300);\n  --chart-2: var(--color-violet-500);\n  --chart-3: var(--color-violet-600);\n  --chart-4: var(--color-violet-700);\n  --chart-5: var(--color-violet-800);\n  --sidebar-primary: var(--color-violet-600);\n  --sidebar-primary-foreground: var(--color-violet-50);\n  --sidebar-ring: var(--color-violet-400);\n\n  @variant dark {\n    --primary: var(--color-violet-500);\n    --primary-foreground: var(--color-violet-50);\n    --ring: var(--color-violet-900);\n    --sidebar-primary: var(--color-violet-500);\n    --sidebar-primary-foreground: var(--color-violet-50);\n    --sidebar-ring: var(--color-violet-900);\n  }\n}\n"
  },
  {
    "path": "apps/v4/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"react-jsx\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./*\"],\n      \"react\": [\"./node_modules/@types/react\"]\n    }\n  },\n  \"include\": [\n    \"next-env.d.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \".next/types/**/*.ts\",\n    \"scripts/build-registry.mts\",\n    \"next.config.mjs\",\n    \".next/dev/types/**/*.ts\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "apps/v4/tsconfig.scripts.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true,\n    \"isolatedModules\": false,\n    \"allowImportingTsExtensions\": true\n  },\n  \"include\": [\"scripts/**/*.{ts,mts}\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"ui\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"author\": {\n    \"name\": \"shadcn\",\n    \"url\": \"https://twitter.com/shadcn\"\n  },\n  \"workspaces\": [\n    \"apps/*\",\n    \"packages/*\"\n  ],\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"registry:build\": \"pnpm --filter=v4 registry:build && pnpm lint:fix && pnpm format:write -- --loglevel silent\",\n    \"registry\": \"turbo run registry\",\n    \"registry:capture\": \"pnpm --filter=v4 registry:capture\",\n    \"explore:capture\": \"pnpm --filter=v4 explore:capture\",\n    \"examples:build\": \"pnpm --filter=v4 examples:build\",\n    \"dev\": \"turbo run dev --parallel\",\n    \"shadcn:dev\": \"turbo --filter=shadcn dev\",\n    \"shadcn\": \"pnpm --filter=shadcn start:dev\",\n    \"shadcn:prod\": \"pnpm --filter=shadcn start:prod\",\n    \"shadcn:build\": \"pnpm --filter=shadcn build\",\n    \"shadcn:test\": \"pnpm --filter=shadcn test\",\n    \"v4:dev\": \"pnpm --filter=v4 dev\",\n    \"v4:build\": \"pnpm --filter=v4 build\",\n    \"lint\": \"turbo run lint\",\n    \"lint:fix\": \"turbo run lint:fix\",\n    \"preview\": \"turbo run preview\",\n    \"typecheck\": \"turbo run typecheck\",\n    \"format:write\": \"turbo run format:write\",\n    \"format:check\": \"turbo run format:check\",\n    \"sync:templates\": \"./scripts/sync-templates.sh \\\"templates/*\\\"\",\n    \"check\": \"turbo lint typecheck format:check\",\n    \"release\": \"changeset version\",\n    \"pub:beta\": \"cd packages/shadcn && pnpm pub:beta\",\n    \"pub:release\": \"cd packages/shadcn && pnpm pub:release\",\n    \"test:dev\": \"turbo run test --filter=!shadcn-ui --force\",\n    \"test\": \"start-server-and-test v4:dev http://localhost:4000 test:dev\",\n    \"validate:registries\": \"pnpm --filter=v4 validate:registries\",\n    \"test:apps\": \"pnpm --filter=v4 test:apps\"\n  },\n  \"packageManager\": \"pnpm@9.0.6\",\n  \"dependencies\": {\n    \"@babel/core\": \"^7.22.1\",\n    \"@changesets/changelog-github\": \"^0.4.8\",\n    \"@changesets/cli\": \"^2.26.1\",\n    \"@commitlint/cli\": \"^20.1.0\",\n    \"@commitlint/config-conventional\": \"^17.6.3\",\n    \"@ianvs/prettier-plugin-sort-imports\": \"^4.6.1\",\n    \"@manypkg/cli\": \"^0.20.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.49.0\",\n    \"@typescript-eslint/parser\": \"^8.49.0\",\n    \"autoprefixer\": \"^10.4.14\",\n    \"chokidar\": \"^4.0.3\",\n    \"concurrently\": \"^8.0.1\",\n    \"cross-env\": \"^7.0.3\",\n    \"eslint\": \"^9.26.0\",\n    \"eslint-config-next\": \"^15.0.0\",\n    \"eslint-config-prettier\": \"^8.8.0\",\n    \"eslint-config-turbo\": \"^1.9.9\",\n    \"eslint-plugin-react\": \"^7.32.2\",\n    \"eslint-plugin-tailwindcss\": \"3.13.1\",\n    \"motion\": \"^12.12.1\",\n    \"prettier\": \"^3.4.2\",\n    \"pretty-quick\": \"^4.0.0\",\n    \"puppeteer\": \"^23.6.0\",\n    \"tailwindcss\": \"^3.4.18\",\n    \"tsx\": \"^4.1.4\",\n    \"turbo\": \"^1.9.9\",\n    \"vite\": \"^7.1.12\",\n    \"vite-tsconfig-paths\": \"^4.2.0\",\n    \"vitest\": \"^2.1.9\"\n  },\n  \"devDependencies\": {\n    \"@types/hast\": \"^3.0.4\",\n    \"@types/node\": \"^20.11.27\",\n    \"@types/react\": \"^18.2.65\",\n    \"@types/react-dom\": \"^18.2.22\",\n    \"start-server-and-test\": \"^2.0.12\",\n    \"typescript\": \"^5.5.3\"\n  },\n  \"pnpm\": {\n    \"overrides\": {\n      \"@types/react\": \"19.2.2\",\n      \"@types/react-dom\": \"19.2.2\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/.gitignore",
    "content": "components\ndist\n.turbo\n"
  },
  {
    "path": "packages/shadcn/.prettierignore",
    "content": "test"
  },
  {
    "path": "packages/shadcn/CHANGELOG.md",
    "content": "# @shadcn/ui\n\n## 4.1.0\n\n### Minor Changes\n\n- [#10115](https://github.com/shadcn-ui/ui/pull/10115) [`687f09817b614a3450f0f56779edf367082e1e53`](https://github.com/shadcn-ui/ui/commit/687f09817b614a3450f0f56779edf367082e1e53) Thanks [@shadcn](https://github.com/shadcn)! - add fontHeading to presets\n\n- [#10115](https://github.com/shadcn-ui/ui/pull/10115) [`687f09817b614a3450f0f56779edf367082e1e53`](https://github.com/shadcn-ui/ui/commit/687f09817b614a3450f0f56779edf367082e1e53) Thanks [@shadcn](https://github.com/shadcn)! - add chartColor\n\n## 4.0.8\n\n### Patch Changes\n\n- [#10041](https://github.com/shadcn-ui/ui/pull/10041) [`a97ebe54f1824032d8ad00d1d0c079e3dc6f52d7`](https://github.com/shadcn-ui/ui/commit/a97ebe54f1824032d8ad00d1d0c079e3dc6f52d7) Thanks [@shadcn](https://github.com/shadcn)! - Bundle @antfu/ni and tinyexec to fix missing module error with npx\n\n## 4.0.7\n\n### Patch Changes\n\n- [#9929](https://github.com/shadcn-ui/ui/pull/9929) [`f9b365bc7f9d591c995952976711dbdd7b1bc45a`](https://github.com/shadcn-ui/ui/commit/f9b365bc7f9d591c995952976711dbdd7b1bc45a) Thanks [@kapishdima](https://github.com/kapishdima)! - add dependency field to registry:font\n\n## 4.0.6\n\n### Patch Changes\n\n- [#10022](https://github.com/shadcn-ui/ui/pull/10022) [`7e93eb81ea8160c06c86f98bb6bfeb1ddfd0d237`](https://github.com/shadcn-ui/ui/commit/7e93eb81ea8160c06c86f98bb6bfeb1ddfd0d237) Thanks [@shadcn](https://github.com/shadcn)! - ensure monorepo respect package manager\n\n## 4.0.5\n\n### Patch Changes\n\n- [#9960](https://github.com/shadcn-ui/ui/pull/9960) [`5ee456735377158c12cf55eefbe872f7303e1325`](https://github.com/shadcn-ui/ui/commit/5ee456735377158c12cf55eefbe872f7303e1325) Thanks [@shadcn](https://github.com/shadcn)! - update handling of init urls\n\n## 4.0.4\n\n### Patch Changes\n\n- [#9957](https://github.com/shadcn-ui/ui/pull/9957) [`aa841e35cf405e574123478b46f4058cff0e179a`](https://github.com/shadcn-ui/ui/commit/aa841e35cf405e574123478b46f4058cff0e179a) Thanks [@shadcn](https://github.com/shadcn)! - fix cache in resolveRegistryBaseConfig\n\n## 4.0.3\n\n### Patch Changes\n\n- [#9950](https://github.com/shadcn-ui/ui/pull/9950) [`ce2c3ca688916db4fdb5fe173e9c6902f78696ed`](https://github.com/shadcn-ui/ui/commit/ce2c3ca688916db4fdb5fe173e9c6902f78696ed) Thanks [@shadcn](https://github.com/shadcn)! - add support for translucent menu\n\n## 4.0.2\n\n### Patch Changes\n\n- [#9903](https://github.com/shadcn-ui/ui/pull/9903) [`f5ac4a0d2aa5af87202f67558a4b9b8f92c00bd2`](https://github.com/shadcn-ui/ui/commit/f5ac4a0d2aa5af87202f67558a4b9b8f92c00bd2) Thanks [@shadcn](https://github.com/shadcn)! - scaffold templates from github remote\n\n## 4.0.1\n\n### Patch Changes\n\n- [#9896](https://github.com/shadcn-ui/ui/pull/9896) [`1ce9c2dd6a3d16422a6586e39632ebbccc45d3a4`](https://github.com/shadcn-ui/ui/commit/1ce9c2dd6a3d16422a6586e39632ebbccc45d3a4) Thanks [@shadcn](https://github.com/shadcn)! - fix apple metadata files in template\n\n- [#9897](https://github.com/shadcn-ui/ui/pull/9897) [`5edf9c95b7d13dcbd325aa4cf6b48d58a53b07c6`](https://github.com/shadcn-ui/ui/commit/5edf9c95b7d13dcbd325aa4cf6b48d58a53b07c6) Thanks [@shadcn](https://github.com/shadcn)! - fix fallback style resolving issue\n\n## 4.0.0\n\n### Major Changes\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`605246f93b8c0c56eee0c1b25ccaa526e5cbdc1d`](https://github.com/shadcn-ui/ui/commit/605246f93b8c0c56eee0c1b25ccaa526e5cbdc1d) Thanks [@shadcn](https://github.com/shadcn)! - add --monorepo flag and monorepo support for vite, start and react-router\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`da10396f2b9b248c23bef05234ce222b0868ace4`](https://github.com/shadcn-ui/ui/commit/da10396f2b9b248c23bef05234ce222b0868ace4) Thanks [@shadcn](https://github.com/shadcn)! - add new base colors: mauve, olive, mist and taupe\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`ce1f9259bfe043b3105350a3357249458ac41a1b`](https://github.com/shadcn-ui/ui/commit/ce1f9259bfe043b3105350a3357249458ac41a1b) Thanks [@shadcn](https://github.com/shadcn)! - added `--preset` flag to `init` command\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`642d802eeef86a01a861de20e6da851cd3d8c974`](https://github.com/shadcn-ui/ui/commit/642d802eeef86a01a861de20e6da851cd3d8c974) Thanks [@shadcn](https://github.com/shadcn)! - use multiplicative instead of addition for --radius calc\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`b9b30a23e644c952fbe52db337bfdd427bc6449f`](https://github.com/shadcn-ui/ui/commit/b9b30a23e644c952fbe52db337bfdd427bc6449f) Thanks [@shadcn](https://github.com/shadcn)! - add shadcn/skills\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`642d802eeef86a01a861de20e6da851cd3d8c974`](https://github.com/shadcn-ui/ui/commit/642d802eeef86a01a861de20e6da851cd3d8c974) Thanks [@shadcn](https://github.com/shadcn)! - deprecate --base-color, --src-dir, --no-base-style flags\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`3bc23a60c7c825647265bca0942c330d1e93fcaa`](https://github.com/shadcn-ui/ui/commit/3bc23a60c7c825647265bca0942c330d1e93fcaa) Thanks [@shadcn](https://github.com/shadcn)! - deprecate create and make it an alias of init\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`fae5e7829263d80eb4b19bdcc9b8ea595060b837`](https://github.com/shadcn-ui/ui/commit/fae5e7829263d80eb4b19bdcc9b8ea595060b837) Thanks [@shadcn](https://github.com/shadcn)! - add astro template support\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`4bdd23291c499159098e2b2e27b738041a514558`](https://github.com/shadcn-ui/ui/commit/4bdd23291c499159098e2b2e27b738041a514558) Thanks [@shadcn](https://github.com/shadcn)! - add --reinstall flag for init\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`4fa2ef66ed6e99a02ea4524e45568440968a6c27`](https://github.com/shadcn-ui/ui/commit/4fa2ef66ed6e99a02ea4524e45568440968a6c27) Thanks [@shadcn](https://github.com/shadcn)! - add shadcn docs command\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`642d802eeef86a01a861de20e6da851cd3d8c974`](https://github.com/shadcn-ui/ui/commit/642d802eeef86a01a861de20e6da851cd3d8c974) Thanks [@shadcn](https://github.com/shadcn)! - add --base to shadcn init\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`642d802eeef86a01a861de20e6da851cd3d8c974`](https://github.com/shadcn-ui/ui/commit/642d802eeef86a01a861de20e6da851cd3d8c974) Thanks [@shadcn](https://github.com/shadcn)! - deprecate --css-variables flag from shadcn add\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`0d3f6a0812c51b36a6c7618e3b9eadd758860321`](https://github.com/shadcn-ui/ui/commit/0d3f6a0812c51b36a6c7618e3b9eadd758860321) Thanks [@shadcn](https://github.com/shadcn)! - deprecate registry:build and registry:mcp\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`4307815c0fa7576668e1d39999a284e350dbfc66`](https://github.com/shadcn-ui/ui/commit/4307815c0fa7576668e1d39999a284e350dbfc66) Thanks [@shadcn](https://github.com/shadcn)! - add preset code support\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`5f9691670188b5b411f84d16ca7db2693c922155`](https://github.com/shadcn-ui/ui/commit/5f9691670188b5b411f84d16ca7db2693c922155) Thanks [@shadcn](https://github.com/shadcn)! - refactor shadcn info command to output llm-friendly output\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`642d802eeef86a01a861de20e6da851cd3d8c974`](https://github.com/shadcn-ui/ui/commit/642d802eeef86a01a861de20e6da851cd3d8c974) Thanks [@shadcn](https://github.com/shadcn)! - refactor ordering of updaters\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`646f884e8fddd196cff3e118184733522516193d`](https://github.com/shadcn-ui/ui/commit/646f884e8fddd196cff3e118184733522516193d) Thanks [@shadcn](https://github.com/shadcn)! - add --dry-run, --diff and --view to the add command\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`642d802eeef86a01a861de20e6da851cd3d8c974`](https://github.com/shadcn-ui/ui/commit/642d802eeef86a01a861de20e6da851cd3d8c974) Thanks [@shadcn](https://github.com/shadcn)! - getTailwindCssFile fallback to config.tailwind.css\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`642d802eeef86a01a861de20e6da851cd3d8c974`](https://github.com/shadcn-ui/ui/commit/642d802eeef86a01a861de20e6da851cd3d8c974) Thanks [@shadcn](https://github.com/shadcn)! - add support for hooks, lib and ui install for workspaces\n\n### Patch Changes\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`4a96d95bde1bb2e692e61808ccc6b9c8e00676f4`](https://github.com/shadcn-ui/ui/commit/4a96d95bde1bb2e692e61808ccc6b9c8e00676f4) Thanks [@shadcn](https://github.com/shadcn)! - fix kbd display in tooltip\n\n- [#9804](https://github.com/shadcn-ui/ui/pull/9804) [`2ddd920e4d7c251eb96c88398b98bfe1f6ea0b8a`](https://github.com/shadcn-ui/ui/commit/2ddd920e4d7c251eb96c88398b98bfe1f6ea0b8a) Thanks [@shadcn](https://github.com/shadcn)! - warn if in monorepo and cwd not set\n\n- [#9708](https://github.com/shadcn-ui/ui/pull/9708) [`82f03d0f1dd12efb5395a0b8689533588d778d0c`](https://github.com/shadcn-ui/ui/commit/82f03d0f1dd12efb5395a0b8689533588d778d0c) Thanks [@shadcn](https://github.com/shadcn)! - handling of apply directive inside utility\n\n## 3.8.5\n\n### Patch Changes\n\n- [#9599](https://github.com/shadcn-ui/ui/pull/9599) [`bbb59c9fe1b3517db01d3a80cb7559da142ad14b`](https://github.com/shadcn-ui/ui/commit/bbb59c9fe1b3517db01d3a80cb7559da142ad14b) Thanks [@shadcn](https://github.com/shadcn)! - fix handling of nested aschild transforms\n\n## 3.8.4\n\n### Patch Changes\n\n- [#9568](https://github.com/shadcn-ui/ui/pull/9568) [`a1e3afed06a78474abff6a729ff990938f455719`](https://github.com/shadcn-ui/ui/commit/a1e3afed06a78474abff6a729ff990938f455719) Thanks [@shadcn](https://github.com/shadcn)! - remove restricted blocks\n\n## 3.8.3\n\n### Patch Changes\n\n- [#9539](https://github.com/shadcn-ui/ui/pull/9539) [`e0063070a63751efd40cf5e5d93da3c9536e64c8`](https://github.com/shadcn-ui/ui/commit/e0063070a63751efd40cf5e5d93da3c9536e64c8) Thanks [@shadcn](https://github.com/shadcn)! - use tw-merge to transform-style\n\n## 3.8.2\n\n### Patch Changes\n\n- [#9507](https://github.com/shadcn-ui/ui/pull/9507) [`b7b839ebc254120eb9bf1a138ce979c38fc348d6`](https://github.com/shadcn-ui/ui/commit/b7b839ebc254120eb9bf1a138ce979c38fc348d6) Thanks [@shadcn](https://github.com/shadcn)! - update migrate radix command\n\n## 3.8.1\n\n### Patch Changes\n\n- [#9502](https://github.com/shadcn-ui/ui/pull/9502) [`2bf55c91338525f886f7c4a7b1fe820155d6bace`](https://github.com/shadcn-ui/ui/commit/2bf55c91338525f886f7c4a7b1fe820155d6bace) Thanks [@shadcn](https://github.com/shadcn)! - properly detect already installed fonts\n\n## 3.8.0\n\n### Minor Changes\n\n- [#9498](https://github.com/shadcn-ui/ui/pull/9498) [`38de7fddc257f04901e98a5fd7821cb8729d54bf`](https://github.com/shadcn-ui/ui/commit/38de7fddc257f04901e98a5fd7821cb8729d54bf) Thanks [@shadcn](https://github.com/shadcn)! - Add RTL support\n\n### Patch Changes\n\n- [#8798](https://github.com/shadcn-ui/ui/pull/8798) [`2acaf954d7492ce722d2a7ee02747dc8f85691ef`](https://github.com/shadcn-ui/ui/commit/2acaf954d7492ce722d2a7ee02747dc8f85691ef) Thanks [@VeiaG](https://github.com/VeiaG)! - Fix: skip all transforms for universal registry items\n\n## 3.7.0\n\n### Minor Changes\n\n- [#9156](https://github.com/shadcn-ui/ui/pull/9156) [`66d24007849ca34c18a5c28b55f2d8dac29ce1e0`](https://github.com/shadcn-ui/ui/commit/66d24007849ca34c18a5c28b55f2d8dac29ce1e0) Thanks [@nrjdalal](https://github.com/nrjdalal)! - add remix icons\n\n- [#9351](https://github.com/shadcn-ui/ui/pull/9351) [`682c98989d28971a04382da1f174b970fff91d92`](https://github.com/shadcn-ui/ui/commit/682c98989d28971a04382da1f174b970fff91d92) Thanks [@shadcn](https://github.com/shadcn)! - add registry add command\n\n## 3.6.3\n\n### Patch Changes\n\n- [#9161](https://github.com/shadcn-ui/ui/pull/9161) [`f2583391eafc22a6ec6c9299a8ad9fac857f8181`](https://github.com/shadcn-ui/ui/commit/f2583391eafc22a6ec6c9299a8ad9fac857f8181) Thanks [@yeasin2002](https://github.com/yeasin2002)! - validate app name on create\n\n- [#8422](https://github.com/shadcn-ui/ui/pull/8422) [`c2fd847d65bfccde531cf1b4462ae466446efa06`](https://github.com/shadcn-ui/ui/commit/c2fd847d65bfccde531cf1b4462ae466446efa06) Thanks [@aquaticcalf](https://github.com/aquaticcalf)! - add mcp support for opencode\n\n## 3.6.2\n\n### Patch Changes\n\n- [#9126](https://github.com/shadcn-ui/ui/pull/9126) [`df67e49aac8c87da59a4257164f55ef0f53b55de`](https://github.com/shadcn-ui/ui/commit/df67e49aac8c87da59a4257164f55ef0f53b55de) Thanks [@shadcn](https://github.com/shadcn)! - add create command to readme\n\n- [#9044](https://github.com/shadcn-ui/ui/pull/9044) [`137b1c12b7bde1318c8781680b41ae449e40df8f`](https://github.com/shadcn-ui/ui/commit/137b1c12b7bde1318c8781680b41ae449e40df8f) Thanks [@mezotv](https://github.com/mezotv)! - add phosphor icons\n\n## 3.6.1\n\n### Patch Changes\n\n- [#9054](https://github.com/shadcn-ui/ui/pull/9054) [`d3156c09ae1df2321c0505db6b2e637374e320f7`](https://github.com/shadcn-ui/ui/commit/d3156c09ae1df2321c0505db6b2e637374e320f7) Thanks [@shadcn](https://github.com/shadcn)! - fix resolver for url\n\n## 3.6.0\n\n### Minor Changes\n\n- [#9022](https://github.com/shadcn-ui/ui/pull/9022) [`86d9b00084affa7010e6c7c7bd410ec62525caac`](https://github.com/shadcn-ui/ui/commit/86d9b00084affa7010e6c7c7bd410ec62525caac) Thanks [@shadcn](https://github.com/shadcn)! - add registry:base item type\n\n- [#9022](https://github.com/shadcn-ui/ui/pull/9022) [`86d9b00084affa7010e6c7c7bd410ec62525caac`](https://github.com/shadcn-ui/ui/commit/86d9b00084affa7010e6c7c7bd410ec62525caac) Thanks [@shadcn](https://github.com/shadcn)! - add npx shadcn create\n\n## 3.5.2\n\n### Patch Changes\n\n- [#8997](https://github.com/shadcn-ui/ui/pull/8997) [`6699158a22e376a6abc91693843a64cdb0b496da`](https://github.com/shadcn-ui/ui/commit/6699158a22e376a6abc91693843a64cdb0b496da) Thanks [@shadcn](https://github.com/shadcn)! - fix handling of base styles for add command\n\n- [#8993](https://github.com/shadcn-ui/ui/pull/8993) [`142cd8ef13a0ff691a94bbd73dba9d7a62428ffa`](https://github.com/shadcn-ui/ui/commit/142cd8ef13a0ff691a94bbd73dba9d7a62428ffa) Thanks [@pasqualevitiello](https://github.com/pasqualevitiello)! - Prevent duplicate keyframes when adding components\n\n## 3.5.1\n\n### Patch Changes\n\n- [#8900](https://github.com/shadcn-ui/ui/pull/8900) [`d0fb73ac0e4e7f6d02768586c5232bbc6b33a3c3`](https://github.com/shadcn-ui/ui/commit/d0fb73ac0e4e7f6d02768586c5232bbc6b33a3c3) Thanks [@shadcn](https://github.com/shadcn)! - do not install base style when adding themes\n\n- [#7557](https://github.com/shadcn-ui/ui/pull/7557) [`ad6a3c63678bb31dbfb94536ee1d4aa4f06a8b8d`](https://github.com/shadcn-ui/ui/commit/ad6a3c63678bb31dbfb94536ee1d4aa4f06a8b8d) Thanks [@remorses](https://github.com/remorses)! - Fix utils import transform when workspace alias does not start with @\n\n- [#8901](https://github.com/shadcn-ui/ui/pull/8901) [`62218c1c0c79195bda49a36817a13392cae7b4f2`](https://github.com/shadcn-ui/ui/commit/62218c1c0c79195bda49a36817a13392cae7b4f2) Thanks [@shadcn](https://github.com/shadcn)! - update color value detection for cssVars\n\n## 3.5.0\n\n### Minor Changes\n\n- [#8555](https://github.com/shadcn-ui/ui/pull/8555) [`d7e0dc3ec81676d47351e8f7134639e0dd0c3e3c`](https://github.com/shadcn-ui/ui/commit/d7e0dc3ec81676d47351e8f7134639e0dd0c3e3c) Thanks [@shadcn](https://github.com/shadcn)! - rename middleware to proxy for Next.js 16\n\n- [#8550](https://github.com/shadcn-ui/ui/pull/8550) [`6bddba986d75da35e18343dbb6254fed4537b7d7`](https://github.com/shadcn-ui/ui/commit/6bddba986d75da35e18343dbb6254fed4537b7d7) Thanks [@shadcn](https://github.com/shadcn)! - add Next.js 16 support for init command\n\n## 3.4.2\n\n### Patch Changes\n\n- [#8478](https://github.com/shadcn-ui/ui/pull/8478) [`b52ec12f1e22cf89270bf3d931f5b7544e4b80b4`](https://github.com/shadcn-ui/ui/commit/b52ec12f1e22cf89270bf3d931f5b7544e4b80b4) Thanks [@shadcn](https://github.com/shadcn)! - fix regression with universal item detection\n\n## 3.4.1\n\n### Patch Changes\n\n- [#8420](https://github.com/shadcn-ui/ui/pull/8420) [`40c3ff513a88ca8e6f02bf798a7cf73b88401024`](https://github.com/shadcn-ui/ui/commit/40c3ff513a88ca8e6f02bf798a7cf73b88401024) Thanks [@zbeyens](https://github.com/zbeyens)! - Fix support for universal registry items that only have dependencies without files\n\n- [#8459](https://github.com/shadcn-ui/ui/pull/8459) [`7cd019ad3652a0e98770b89032b7a161edfda805`](https://github.com/shadcn-ui/ui/commit/7cd019ad3652a0e98770b89032b7a161edfda805) Thanks [@shadcn](https://github.com/shadcn)! - add support for color as var\n\n- [#8451](https://github.com/shadcn-ui/ui/pull/8451) [`b83023034a301b41fa18045af0d9bd787e415aa5`](https://github.com/shadcn-ui/ui/commit/b83023034a301b41fa18045af0d9bd787e415aa5) Thanks [@diegohaz](https://github.com/diegohaz)! - fix adding registry item with CSS at-property\n\n## 3.4.0\n\n### Minor Changes\n\n- [#7742](https://github.com/shadcn-ui/ui/pull/7742) [`da8fa6aacdf58191bfd4eb6bc65f2fb02ec137ad`](https://github.com/shadcn-ui/ui/commit/da8fa6aacdf58191bfd4eb6bc65f2fb02ec137ad) Thanks [@sirldev](https://github.com/sirldev)! - rename monorepo project on init\n\n- [#8348](https://github.com/shadcn-ui/ui/pull/8348) [`e96f9edf027c8f97dc565b6e6c2fbd6f258bfa1e`](https://github.com/shadcn-ui/ui/commit/e96f9edf027c8f97dc565b6e6c2fbd6f258bfa1e) Thanks [@shadcn](https://github.com/shadcn)! - add mcp support for codex\n\n## 3.3.1\n\n### Patch Changes\n\n- [`75dde2e64679081dad63ecd20f3fd9e3b68fa0ce`](https://github.com/shadcn-ui/ui/commit/75dde2e64679081dad63ecd20f3fd9e3b68fa0ce) Thanks [@shadcn](https://github.com/shadcn)! - fix deps in cts projects\n\n## 3.3.0\n\n### Minor Changes\n\n- [#8216](https://github.com/shadcn-ui/ui/pull/8216) [`fc6d909ba23ac1ba09cf32087f0524aca398b5aa`](https://github.com/shadcn-ui/ui/commit/fc6d909ba23ac1ba09cf32087f0524aca398b5aa) Thanks [@shadcn](https://github.com/shadcn)! - add getRegistriesIndex\n\n### Patch Changes\n\n- [#8186](https://github.com/shadcn-ui/ui/pull/8186) [`cdf58be7e1ed25bf1dd19a1c60612c5e89b82a60`](https://github.com/shadcn-ui/ui/commit/cdf58be7e1ed25bf1dd19a1c60612c5e89b82a60) Thanks [@imskyleen](https://github.com/imskyleen)! - fix transformCssVars function with prefix\n\n- [#8036](https://github.com/shadcn-ui/ui/pull/8036) [`fae1a81addb22429c103d5d08813e1c80779d5fb`](https://github.com/shadcn-ui/ui/commit/fae1a81addb22429c103d5d08813e1c80779d5fb) Thanks [@fuma-nama](https://github.com/fuma-nama)! - fix async imports not being transformed when installing components\n\n## 3.2.1\n\n### Patch Changes\n\n- [#8147](https://github.com/shadcn-ui/ui/pull/8147) [`e5402f9a20f070e92e7384c1ae08e6bfb79cd7a9`](https://github.com/shadcn-ui/ui/commit/e5402f9a20f070e92e7384c1ae08e6bfb79cd7a9) Thanks [@shadcn](https://github.com/shadcn)! - fix recursive namespacing\n\n## 3.2.0\n\n### Minor Changes\n\n- [#8128](https://github.com/shadcn-ui/ui/pull/8128) [`9c5eb0d20f0b75b28dccee219bf74fc9cd2019c6`](https://github.com/shadcn-ui/ui/commit/9c5eb0d20f0b75b28dccee219bf74fc9cd2019c6) Thanks [@shadcn](https://github.com/shadcn)! - add support for registries index\n\n## 3.1.0\n\n### Minor Changes\n\n- [#8110](https://github.com/shadcn-ui/ui/pull/8110) [`64f8baf9aa7562d4d2170863c29c6ae723f31df3`](https://github.com/shadcn-ui/ui/commit/64f8baf9aa7562d4d2170863c29c6ae723f31df3) Thanks [@shadcn](https://github.com/shadcn)! - allow no files items\n\n- [#8109](https://github.com/shadcn-ui/ui/pull/8109) [`e84c819977046f555daa9a8af5736ad7725fb4da`](https://github.com/shadcn-ui/ui/commit/e84c819977046f555daa9a8af5736ad7725fb4da) Thanks [@shadcn](https://github.com/shadcn)! - update handling of import and apply at rules\n\n## 3.0.0\n\n### Major Changes\n\n- [#8004](https://github.com/shadcn-ui/ui/pull/8004) [`a941287411e4cf4eca29779a8220d59bfca2a25c`](https://github.com/shadcn-ui/ui/commit/a941287411e4cf4eca29779a8220d59bfca2a25c) Thanks [@shadcn](https://github.com/shadcn)! - bump all dependencies\n\n- [#8012](https://github.com/shadcn-ui/ui/pull/8012) [`296feb28a220627958f3a558dcb2384875c2d7a1`](https://github.com/shadcn-ui/ui/commit/296feb28a220627958f3a558dcb2384875c2d7a1) Thanks [@shadcn](https://github.com/shadcn)! - add new mcp server and command\n\n- [#7994](https://github.com/shadcn-ui/ui/pull/7994) [`4f5333ea7ae8a2197fb84472addaa9fd66d984ef`](https://github.com/shadcn-ui/ui/commit/4f5333ea7ae8a2197fb84472addaa9fd66d984ef) Thanks [@shadcn](https://github.com/shadcn)! - add view and search commands\n\n- [#7983](https://github.com/shadcn-ui/ui/pull/7983) [`a426fea9410ade04c26bb4edfa5da813ecaddc17`](https://github.com/shadcn-ui/ui/commit/a426fea9410ade04c26bb4edfa5da813ecaddc17) Thanks [@shadcn](https://github.com/shadcn)! - update getRegistry, getRegistryItems and resolveRegistryItems apis\n\n- [#7990](https://github.com/shadcn-ui/ui/pull/7990) [`b3639227d0737538e98923ab335b6dd03f2c993f`](https://github.com/shadcn-ui/ui/commit/b3639227d0737538e98923ab335b6dd03f2c993f) Thanks [@shadcn](https://github.com/shadcn)! - deprecate fetchRegistry and resolveRegistryTree\n\n- [#7972](https://github.com/shadcn-ui/ui/pull/7972) [`6e870c399350adf17554c35cdf732421ac8a6ab2`](https://github.com/shadcn-ui/ui/commit/6e870c399350adf17554c35cdf732421ac8a6ab2) Thanks [@shadcn](https://github.com/shadcn)! - copy registry.json on build\n\n- [#7989](https://github.com/shadcn-ui/ui/pull/7989) [`a4a36007578a6847c0b1f02c1b46350de6ebe2cc`](https://github.com/shadcn-ui/ui/commit/a4a36007578a6847c0b1f02c1b46350de6ebe2cc) Thanks [@shadcn](https://github.com/shadcn)! - move schema to shadcn/schema\n\n- [#8001](https://github.com/shadcn-ui/ui/pull/8001) [`fed7e3bfdc2696b8bc1fb8e65134e96330347aa0`](https://github.com/shadcn-ui/ui/commit/fed7e3bfdc2696b8bc1fb8e65134e96330347aa0) Thanks [@shadcn](https://github.com/shadcn)! - update signatures for getRegistry, getRegistryItems, resolveRegistryItems and searchRegistries\n\n- [#7992](https://github.com/shadcn-ui/ui/pull/7992) [`7d71b02fb1c69b649fd143d0eeab1ddc7995f5ca`](https://github.com/shadcn-ui/ui/commit/7d71b02fb1c69b649fd143d0eeab1ddc7995f5ca) Thanks [@shadcn](https://github.com/shadcn)! - add getRegistry\n\n- [#7948](https://github.com/shadcn-ui/ui/pull/7948) [`2c164b0f221fac0367a0eda3ce8502b38b25ce3e`](https://github.com/shadcn-ui/ui/commit/2c164b0f221fac0367a0eda3ce8502b38b25ce3e) Thanks [@shadcn](https://github.com/shadcn)! - update registry dependencies resolution algorithm\n\n- [#8086](https://github.com/shadcn-ui/ui/pull/8086) [`17422714f65a36a9fc81eeb227366a2e44171be9`](https://github.com/shadcn-ui/ui/commit/17422714f65a36a9fc81eeb227366a2e44171be9) Thanks [@shadcn](https://github.com/shadcn)! - add mcp init command\n\n- [#7940](https://github.com/shadcn-ui/ui/pull/7940) [`578f83cbefe1b3d70b8179a58c70c5729fd1982f`](https://github.com/shadcn-ui/ui/commit/578f83cbefe1b3d70b8179a58c70c5729fd1982f) Thanks [@shadcn](https://github.com/shadcn)! - add support for namespaced registries\n\n### Minor Changes\n\n- [#7955](https://github.com/shadcn-ui/ui/pull/7955) [`a80ab374830fa414bf3672fefc66b03ea4b8da78`](https://github.com/shadcn-ui/ui/commit/a80ab374830fa414bf3672fefc66b03ea4b8da78) Thanks [@shadcn](https://github.com/shadcn)! - update file handling for monorepo\n\n### Patch Changes\n\n- [#8081](https://github.com/shadcn-ui/ui/pull/8081) [`fc27ba269217ade8ae3a87724259874da799cd03`](https://github.com/shadcn-ui/ui/commit/fc27ba269217ade8ae3a87724259874da799cd03) Thanks [@shadcn](https://github.com/shadcn)! - fix --defaults option\n\n- [#7962](https://github.com/shadcn-ui/ui/pull/7962) [`fc8927a1f9d7d1be3338e3d984de20355af61083`](https://github.com/shadcn-ui/ui/commit/fc8927a1f9d7d1be3338e3d984de20355af61083) Thanks [@shadcn](https://github.com/shadcn)! - fix monorepo init on nix system\n\n## 2.10.0\n\n### Minor Changes\n\n- [#7902](https://github.com/shadcn-ui/ui/pull/7902) [`e6778dee87de1a183843f233b3f27fbfb1a700ec`](https://github.com/shadcn-ui/ui/commit/e6778dee87de1a183843f233b3f27fbfb1a700ec) Thanks [@shadcn](https://github.com/shadcn)! - add support for envVars in schema\n\n- [#7896](https://github.com/shadcn-ui/ui/pull/7896) [`97a8de1c1b2ae590cc9dbe17970a882990c35a59`](https://github.com/shadcn-ui/ui/commit/97a8de1c1b2ae590cc9dbe17970a882990c35a59) Thanks [@shadcn](https://github.com/shadcn)! - add support for env vars in registry\n\n### Patch Changes\n\n- [#7908](https://github.com/shadcn-ui/ui/pull/7908) [`d891132f2a0121e12c92839e19f5d90252f9a640`](https://github.com/shadcn-ui/ui/commit/d891132f2a0121e12c92839e19f5d90252f9a640) Thanks [@shadcn](https://github.com/shadcn)! - remove init tests\n\n## 2.9.3\n\n### Patch Changes\n\n- [#7837](https://github.com/shadcn-ui/ui/pull/7837) [`20e913d8e1df1acddc7bd4b8328088a25869ba7c`](https://github.com/shadcn-ui/ui/commit/20e913d8e1df1acddc7bd4b8328088a25869ba7c) Thanks [@shadcn](https://github.com/shadcn)! - fix handling of themes\n\n## 2.9.2\n\n### Patch Changes\n\n- [#7833](https://github.com/shadcn-ui/ui/pull/7833) [`d9cdc3f7ae69e571de7dc116effc381ad76685c3`](https://github.com/shadcn-ui/ui/commit/d9cdc3f7ae69e571de7dc116effc381ad76685c3) Thanks [@shadcn](https://github.com/shadcn)! - Revert \"fix: handling of shouldOverwriteCssVars\"\n\n## 2.9.1\n\n### Patch Changes\n\n- [#7829](https://github.com/shadcn-ui/ui/pull/7829) [`ed5237c231f3b70107131bd7ba517e73b8c9014d`](https://github.com/shadcn-ui/ui/commit/ed5237c231f3b70107131bd7ba517e73b8c9014d) Thanks [@shadcn](https://github.com/shadcn)! - fix handling of shouldOverwriteCssVars\n\n## 2.9.0\n\n### Minor Changes\n\n- [#7782](https://github.com/shadcn-ui/ui/pull/7782) [`06d03d64f437b543bf5fa07ccbc559f285538ffd`](https://github.com/shadcn-ui/ui/commit/06d03d64f437b543bf5fa07ccbc559f285538ffd) Thanks [@shadcn](https://github.com/shadcn)! - add universal registry items support\n\n### Patch Changes\n\n- [#7795](https://github.com/shadcn-ui/ui/pull/7795) [`6c341c16aeaf5ade177a4a1ba4fb9afcd33d5fee`](https://github.com/shadcn-ui/ui/commit/6c341c16aeaf5ade177a4a1ba4fb9afcd33d5fee) Thanks [@shadcn](https://github.com/shadcn)! - fix safe target handling\n\n- [#7757](https://github.com/shadcn-ui/ui/pull/7757) [`db93787712fe51346bf87dbae8b4cf4e38ed8c27`](https://github.com/shadcn-ui/ui/commit/db93787712fe51346bf87dbae8b4cf4e38ed8c27) Thanks [@shadcn](https://github.com/shadcn)! - implement registry path validation\n\n## 2.8.0\n\n### Minor Changes\n\n- [#7720](https://github.com/shadcn-ui/ui/pull/7720) [`d544a7f7a519cd5b171d9ee7cb2fd1a226659ece`](https://github.com/shadcn-ui/ui/commit/d544a7f7a519cd5b171d9ee7cb2fd1a226659ece) Thanks [@shadcn](https://github.com/shadcn)! - refactor registry dependencies resolution\n\n- [#7717](https://github.com/shadcn-ui/ui/pull/7717) [`48fe0d709fd2b244314f95f56e7afb38b117ed8a`](https://github.com/shadcn-ui/ui/commit/48fe0d709fd2b244314f95f56e7afb38b117ed8a) Thanks [@shadcn](https://github.com/shadcn)! - add support for local registry item\n\n- [#6330](https://github.com/shadcn-ui/ui/pull/6330) [`ed244ea0b5abf7db50ac5fcf26e2993133fe94f7`](https://github.com/shadcn-ui/ui/commit/ed244ea0b5abf7db50ac5fcf26e2993133fe94f7) Thanks [@KitsuneDev](https://github.com/KitsuneDev)! - add support for vinxi based framework\n\n## 2.7.0\n\n### Minor Changes\n\n- [#7540](https://github.com/shadcn-ui/ui/pull/7540) [`cb19ab84646fc017c15fadc81fc47b695560a04c`](https://github.com/shadcn-ui/ui/commit/cb19ab84646fc017c15fadc81fc47b695560a04c) Thanks [@mrzachnugent](https://github.com/mrzachnugent)! - add support for expo\n\n- [#7640](https://github.com/shadcn-ui/ui/pull/7640) [`7c3d34cdc91681815f8897709917ec9fbcd69245`](https://github.com/shadcn-ui/ui/commit/7c3d34cdc91681815f8897709917ec9fbcd69245) Thanks [@shadcn](https://github.com/shadcn)! - add support for @plugin in css\n\n### Patch Changes\n\n- [#7609](https://github.com/shadcn-ui/ui/pull/7609) [`5b8ee41511fb5ff468d9218f97b8545e145d773c`](https://github.com/shadcn-ui/ui/commit/5b8ee41511fb5ff468d9218f97b8545e145d773c) Thanks [@xabierlameiro](https://github.com/xabierlameiro)! - fix typo in function name unnsetSpreadElements\n\n## 2.6.4\n\n### Patch Changes\n\n- [#7601](https://github.com/shadcn-ui/ui/pull/7601) [`c86c27a2ffb8d186770afa42bfb62ab46e3db975`](https://github.com/shadcn-ui/ui/commit/c86c27a2ffb8d186770afa42bfb62ab46e3db975) Thanks [@schiller-manuel](https://github.com/schiller-manuel)! - fix tanstack start detection\n\n## 2.6.3\n\n### Patch Changes\n\n- [#7594](https://github.com/shadcn-ui/ui/pull/7594) [`431af4f7ff294af032c0687b8b655ed6db2e690f`](https://github.com/shadcn-ui/ui/commit/431af4f7ff294af032c0687b8b655ed6db2e690f) Thanks [@shadcn](https://github.com/shadcn)! - fix: semicolon in code style\n\n## 2.6.2\n\n### Patch Changes\n\n- [#7586](https://github.com/shadcn-ui/ui/pull/7586) [`c5d90c718a186dd6fd90e022c56089eb569a1c10`](https://github.com/shadcn-ui/ui/commit/c5d90c718a186dd6fd90e022c56089eb569a1c10) Thanks [@shadcn](https://github.com/shadcn)! - add migrate-radix\n\n- [#7590](https://github.com/shadcn-ui/ui/pull/7590) [`92cfb9a30e976697ab8770f00393bd5325f9a16a`](https://github.com/shadcn-ui/ui/commit/92cfb9a30e976697ab8770f00393bd5325f9a16a) Thanks [@shadcn](https://github.com/shadcn)! - fix flacky tests\n\n## 2.6.1\n\n### Patch Changes\n\n- [#7573](https://github.com/shadcn-ui/ui/pull/7573) [`3119f94d47426dae860001a4cfb4ef23396dd41d`](https://github.com/shadcn-ui/ui/commit/3119f94d47426dae860001a4cfb4ef23396dd41d) Thanks [@shadcn](https://github.com/shadcn)! - update npm flag\n\n## 2.6.0\n\n### Minor Changes\n\n- [#7497](https://github.com/shadcn-ui/ui/pull/7497) [`df91b528871e258d548e4ea318b0376ac78676e0`](https://github.com/shadcn-ui/ui/commit/df91b528871e258d548e4ea318b0376ac78676e0) Thanks [@shadcn](https://github.com/shadcn)! - add registry:build command\n\n### Patch Changes\n\n- [#6885](https://github.com/shadcn-ui/ui/pull/6885) [`2773f9e2e29cf67e521632d15d1ba302a82e39e9`](https://github.com/shadcn-ui/ui/commit/2773f9e2e29cf67e521632d15d1ba302a82e39e9) Thanks [@Joshua-hypt](https://github.com/Joshua-hypt)! - resolved prefixing issue for Tailwind CSS v4 compatibility\n\n## 2.5.0\n\n### Minor Changes\n\n- [#7220](https://github.com/shadcn-ui/ui/pull/7220) [`d0306774fe0ecc1eae9ef1e918bf7862e866a9e8`](https://github.com/shadcn-ui/ui/commit/d0306774fe0ecc1eae9ef1e918bf7862e866a9e8) Thanks [@shadcn](https://github.com/shadcn)! - resolve imports from anywhere\n\n### Patch Changes\n\n- [#6985](https://github.com/shadcn-ui/ui/pull/6985) [`f1e5cc4666ced2166a859660d769ccee16cde46e`](https://github.com/shadcn-ui/ui/commit/f1e5cc4666ced2166a859660d769ccee16cde46e) Thanks [@nrjdalal](https://github.com/nrjdalal)! - move tw-animate-css to devDependencies\n\n- [#6899](https://github.com/shadcn-ui/ui/pull/6899) [`6f702f5fbf2b82a388e7da6ea08bcc84c2ec19c6`](https://github.com/shadcn-ui/ui/commit/6f702f5fbf2b82a388e7da6ea08bcc84c2ec19c6) Thanks [@justjavac](https://github.com/justjavac)! - add deno support\n\n## 2.4.1\n\n### Patch Changes\n\n- [#7196](https://github.com/shadcn-ui/ui/pull/7196) [`617483fe9c26d607665fcaf79ee26e35d9825d7c`](https://github.com/shadcn-ui/ui/commit/617483fe9c26d607665fcaf79ee26e35d9825d7c) Thanks [@shadcn](https://github.com/shadcn)! - do not throw if empty dir\n\n## 2.4.0\n\n### Minor Changes\n\n- [#6507](https://github.com/shadcn-ui/ui/pull/6507) [`5234c46722750f964d69c92ccbef2c4d260c211d`](https://github.com/shadcn-ui/ui/commit/5234c46722750f964d69c92ccbef2c4d260c211d) Thanks [@shadcn](https://github.com/shadcn)! - add support for TanStack Start\n\n- [#6487](https://github.com/shadcn-ui/ui/pull/6487) [`5ef2bc5f455dfc394116267788c0514b696e13b0`](https://github.com/shadcn-ui/ui/commit/5ef2bc5f455dfc394116267788c0514b696e13b0) Thanks [@shadcn](https://github.com/shadcn)! - add theme vars support\n\n- [#6478](https://github.com/shadcn-ui/ui/pull/6478) [`8f6a64f176defdb1f9c493598d952fb4e9844cd0`](https://github.com/shadcn-ui/ui/commit/8f6a64f176defdb1f9c493598d952fb4e9844cd0) Thanks [@shadcn](https://github.com/shadcn)! - add tailwind version detection\n\n- [#6864](https://github.com/shadcn-ui/ui/pull/6864) [`19665adeeddc4ddb34e91fca219753d15bd46480`](https://github.com/shadcn-ui/ui/commit/19665adeeddc4ddb34e91fca219753d15bd46480) Thanks [@shadcn](https://github.com/shadcn)! - add --base-color flag\n\n- [#6490](https://github.com/shadcn-ui/ui/pull/6490) [`9a14c1d0925d3df2c8f57a3381d212cc3e54f4a6`](https://github.com/shadcn-ui/ui/commit/9a14c1d0925d3df2c8f57a3381d212cc3e54f4a6) Thanks [@shadcn](https://github.com/shadcn)! - add support for tailwind v4\n\n- [#6707](https://github.com/shadcn-ui/ui/pull/6707) [`3db8a07b3f132d396d7fb2e50da96156efcb4138`](https://github.com/shadcn-ui/ui/commit/3db8a07b3f132d396d7fb2e50da96156efcb4138) Thanks [@shadcn](https://github.com/shadcn)! - default to css vars. add --no-css-variables\n\n- [#6968](https://github.com/shadcn-ui/ui/pull/6968) [`205bfc637e093717908ebd2c591b215672950558`](https://github.com/shadcn-ui/ui/commit/205bfc637e093717908ebd2c591b215672950558) Thanks [@shadcn](https://github.com/shadcn)! - replace tailwindcss-animate with tw-animate-css\n\n- [#6574](https://github.com/shadcn-ui/ui/pull/6574) [`1e357cb20d6024b2bc9766fb15f61cb989eb7024`](https://github.com/shadcn-ui/ui/commit/1e357cb20d6024b2bc9766fb15f61cb989eb7024) Thanks [@shadcn](https://github.com/shadcn)! - default for new-york for v4\n\n- [#6515](https://github.com/shadcn-ui/ui/pull/6515) [`d1eb24e23a973646d78cf101fa1e0a22861ac9fd`](https://github.com/shadcn-ui/ui/commit/d1eb24e23a973646d78cf101fa1e0a22861ac9fd) Thanks [@shadcn](https://github.com/shadcn)! - fix handling of sidebar colors\n\n- [#6693](https://github.com/shadcn-ui/ui/pull/6693) [`3740373f99e39943514a45f5808ecb5f17faf700`](https://github.com/shadcn-ui/ui/commit/3740373f99e39943514a45f5808ecb5f17faf700) Thanks [@shadcn](https://github.com/shadcn)! - add oklch base color\n\n- [#6571](https://github.com/shadcn-ui/ui/pull/6571) [`c74a094f14a6e338124709547932dbb20c8d1324`](https://github.com/shadcn-ui/ui/commit/c74a094f14a6e338124709547932dbb20c8d1324) Thanks [@shadcn](https://github.com/shadcn)! - hotswap style for v4\n\n- [#6576](https://github.com/shadcn-ui/ui/pull/6576) [`9f4d65fc8fe72f632706fafd4036f63fd9317780`](https://github.com/shadcn-ui/ui/commit/9f4d65fc8fe72f632706fafd4036f63fd9317780) Thanks [@shadcn](https://github.com/shadcn)! - add warning for deprecated components\n\n- [#6811](https://github.com/shadcn-ui/ui/pull/6811) [`bc7df68620f242ce6aa640839c80ddc8afc7e091`](https://github.com/shadcn-ui/ui/commit/bc7df68620f242ce6aa640839c80ddc8afc7e091) Thanks [@shadcn](https://github.com/shadcn)! - add support for route install for react-router and laravel\n\n- [#7016](https://github.com/shadcn-ui/ui/pull/7016) [`b3b2fe2755e0ec1271c41a2a61b1a6933af42bc6`](https://github.com/shadcn-ui/ui/commit/b3b2fe2755e0ec1271c41a2a61b1a6933af42bc6) Thanks [@shadcn](https://github.com/shadcn)! - add theme prop to registry-item schema\n\n### Patch Changes\n\n- [#6724](https://github.com/shadcn-ui/ui/pull/6724) [`a3fe5074c1375cbd92e1ccdaab38d6808bfec696`](https://github.com/shadcn-ui/ui/commit/a3fe5074c1375cbd92e1ccdaab38d6808bfec696) Thanks [@Kaikaikaifang](https://github.com/Kaikaikaifang)! - support for version detection in monorepo\n\n- [#6414](https://github.com/shadcn-ui/ui/pull/6414) [`202131cd7bf8829b962ae4027545afbdfe79e688`](https://github.com/shadcn-ui/ui/commit/202131cd7bf8829b962ae4027545afbdfe79e688) Thanks [@palmithor](https://github.com/palmithor)! - upgrade @antfu/ni\n\n- [#6965](https://github.com/shadcn-ui/ui/pull/6965) [`69fc8e23cc0631aac6b708ba0481509f1125d3d7`](https://github.com/shadcn-ui/ui/commit/69fc8e23cc0631aac6b708ba0481509f1125d3d7) Thanks [@jherr](https://github.com/jherr)! - allow silent mode with npm\n\n- [#6814](https://github.com/shadcn-ui/ui/pull/6814) [`8539dd6eec948e7a6218c7ca3372d2b1f349d7c0`](https://github.com/shadcn-ui/ui/commit/8539dd6eec948e7a6218c7ca3372d2b1f349d7c0) Thanks [@shadcn](https://github.com/shadcn)! - do not add ring for v3\n\n- [#6732](https://github.com/shadcn-ui/ui/pull/6732) [`839afa714f61e2c0f83e9417354ea6ba8246c177`](https://github.com/shadcn-ui/ui/commit/839afa714f61e2c0f83e9417354ea6ba8246c177) Thanks [@shadcn](https://github.com/shadcn)! - cache registry calls\n\n- [#6863](https://github.com/shadcn-ui/ui/pull/6863) [`c16c58d0f9e672edddd554269fdd0eb0d412cb9d`](https://github.com/shadcn-ui/ui/commit/c16c58d0f9e672edddd554269fdd0eb0d412cb9d) Thanks [@shadcn](https://github.com/shadcn)! - add --template flag\n\n- [#6721](https://github.com/shadcn-ui/ui/pull/6721) [`a5122f9029c91963f493e7348ef7681dad4834e5`](https://github.com/shadcn-ui/ui/commit/a5122f9029c91963f493e7348ef7681dad4834e5) Thanks [@shadcn](https://github.com/shadcn)! - do not overwrite user defined vars\n\n- [#6530](https://github.com/shadcn-ui/ui/pull/6530) [`d6159023ed0817adf14b4398874b1f5f05a73b02`](https://github.com/shadcn-ui/ui/commit/d6159023ed0817adf14b4398874b1f5f05a73b02) Thanks [@zwarunek](https://github.com/zwarunek)! - fix cn import bug in monorepo\n\n- [#6617](https://github.com/shadcn-ui/ui/pull/6617) [`bd8533bd265de7765831d398f4db687483a0e53a`](https://github.com/shadcn-ui/ui/commit/bd8533bd265de7765831d398f4db687483a0e53a) Thanks [@shadcn](https://github.com/shadcn)! - filter out deprecated from --all\n\n- [#6733](https://github.com/shadcn-ui/ui/pull/6733) [`779517a1d46f567c8e3fa8fcdea4c75c65ad4eb4`](https://github.com/shadcn-ui/ui/commit/779517a1d46f567c8e3fa8fcdea4c75c65ad4eb4) Thanks [@shadcn](https://github.com/shadcn)! - check for empty css vars\n\n- [#6967](https://github.com/shadcn-ui/ui/pull/6967) [`9eae13639c10f0219872b5fd28f523a4c25f40df`](https://github.com/shadcn-ui/ui/commit/9eae13639c10f0219872b5fd28f523a4c25f40df) Thanks [@shadcn](https://github.com/shadcn)! - only show deprecated for new projects\n\n- [#6590](https://github.com/shadcn-ui/ui/pull/6590) [`16d4d38f564c75d4187977275f04d5999ee9e2f4`](https://github.com/shadcn-ui/ui/commit/16d4d38f564c75d4187977275f04d5999ee9e2f4) Thanks [@prateekkumarweb](https://github.com/prateekkumarweb)! - fix tanstack check\n\n## 2.2.0\n\n### Minor Changes\n\n- [#6475](https://github.com/shadcn-ui/ui/pull/6475) [`699195b`](https://github.com/shadcn-ui/ui/commit/699195ba77ba41d3da356dd82775ae6db9af3d96) Thanks [@shadcn](https://github.com/shadcn)! - remove unused lodash.template\n\n- [#6350](https://github.com/shadcn-ui/ui/pull/6350) [`cb742e9`](https://github.com/shadcn-ui/ui/commit/cb742e98252fe8aa5cad3377d06e1d8a884953db)) Thanks [@shadcn](https://github.com/shadcn)! - new build command\n\n- [#6369](https://github.com/shadcn-ui/ui/pull/6369) [`f07c7ad`](https://github.com/shadcn-ui/ui/commit/f07c7ad5d0d2c2159f2c81a31ae6cbbe9a6ede30) Thanks [@shadcn](https://github.com/shadcn)! - handle nested file path\n\n- [#6339](https://github.com/shadcn-ui/ui/pull/6339) [`254198b`](https://github.com/shadcn-ui/ui/commit/254198b4bf38ca18361dbcf4373536c55ea8ef11) Thanks [@shadcn](https://github.com/shadcn)! - add schema\n\n- [#6377](https://github.com/shadcn-ui/ui/pull/6377) [`5f7957a`](https://github.com/shadcn-ui/ui/commit/5f7957ab51c3d929f322937147269ef3bdfeb472) Thanks [@shadcn](https://github.com/shadcn)! - new registry:file type\n\n## 2.1.8\n\n### Patch Changes\n\n- [#6093](https://github.com/shadcn-ui/ui/pull/6093) [`c8fda09`](https://github.com/shadcn-ui/ui/commit/c8fda09a63f793e9e2e5a86d8f8faad5af9d1ab4) Thanks [@shadcn](https://github.com/shadcn)! - detect and use next version\n\n## 2.1.7\n\n### Patch Changes\n\n- [#5711](https://github.com/shadcn-ui/ui/pull/5711) [`500dbe2`](https://github.com/shadcn-ui/ui/commit/500dbe2664c04936cc3edb739fc97f6cecff57c5) Thanks [@bcorbold](https://github.com/bcorbold)! - Update spread/unspread helpers to handle ArrayLiteralExpression and nested values within arrays\n\n- [#5678](https://github.com/shadcn-ui/ui/pull/5678) [`fb36ca4`](https://github.com/shadcn-ui/ui/commit/fb36ca41591ae952f3a015e2a4470f26458cf1b5) Thanks [@Tobbe](https://github.com/Tobbe)! - support aliases longer than one char\n\n- [#5813](https://github.com/shadcn-ui/ui/pull/5813) [`d5bf001`](https://github.com/shadcn-ui/ui/commit/d5bf0018fda42faeb314dc3edc87b8cd7c0354c6) Thanks [@shadcn](https://github.com/shadcn)! - fix handling of aliases\n\n## 2.1.6\n\n### Patch Changes\n\n- [#5602](https://github.com/shadcn-ui/ui/pull/5602) [`2c2fe97`](https://github.com/shadcn-ui/ui/commit/2c2fe97eb96b2c5c7d03d1ae2756a851c3790030) Thanks [@shadcn](https://github.com/shadcn)! - move new-york icons to lucide-react\n\n## 2.1.5\n\n### Patch Changes\n\n- [#5707](https://github.com/shadcn-ui/ui/pull/5707) [`cdfecd1`](https://github.com/shadcn-ui/ui/commit/cdfecd1d97af2b4d9de330927edd9fd2eef1234e) Thanks [@shadcn](https://github.com/shadcn)! - temporarily bring back npm flag\n\n## 2.1.4\n\n### Patch Changes\n\n- [#5686](https://github.com/shadcn-ui/ui/pull/5686) [`4ff64ba`](https://github.com/shadcn-ui/ui/commit/4ff64ba818d15a094547f845ea294c2e1ab208d4) Thanks [@shadcn](https://github.com/shadcn)! - remove flag for npm\n\n## 2.1.3\n\n### Patch Changes\n\n- [#5621](https://github.com/shadcn-ui/ui/pull/5621) [`64739f8`](https://github.com/shadcn-ui/ui/commit/64739f83991205333867000d7813e82b0d98f871) Thanks [@shadcn](https://github.com/shadcn)! - add flag prompt for npm\n\n## 2.1.2\n\n### Patch Changes\n\n- [#5299](https://github.com/shadcn-ui/ui/pull/5299) [`986c00e`](https://github.com/shadcn-ui/ui/commit/986c00ee0e661bf2391b305c2b24800be63e681e) Thanks [@fourcels](https://github.com/fourcels)! - fix package manager fallback\n\n## 2.1.1\n\n### Patch Changes\n\n- [#5525](https://github.com/shadcn-ui/ui/pull/5525) [`f02b412`](https://github.com/shadcn-ui/ui/commit/f02b412478a2e4e1b20d87f4a253e9305331d066) Thanks [@shadcn](https://github.com/shadcn)! - temporarily pin create-next-app\n\n- [#5518](https://github.com/shadcn-ui/ui/pull/5518) [`bf5a79c`](https://github.com/shadcn-ui/ui/commit/bf5a79c4d427cf499c6196c2eea3df04d9410977) Thanks [@bcorbold](https://github.com/bcorbold)! - fix transofmrRsc for handling use client\n\n## 2.1.0\n\n### Minor Changes\n\n- [#4961](https://github.com/shadcn-ui/ui/pull/4961) [`28f34ed`](https://github.com/shadcn-ui/ui/commit/28f34ed3c3e944287cd6f521ff0310d39664329c) Thanks [@shadcn](https://github.com/shadcn)! - recursively resolve registry dependencies\n\n### Patch Changes\n\n- [#4972](https://github.com/shadcn-ui/ui/pull/4972) [`4b546bf`](https://github.com/shadcn-ui/ui/commit/4b546bfb13346fdbaf0fca4e8041ddba35d23f47) Thanks [@Fluf22](https://github.com/Fluf22)! - update remix detection\n\n- [#4977](https://github.com/shadcn-ui/ui/pull/4977) [`96880e7`](https://github.com/shadcn-ui/ui/commit/96880e7c9afad3fed6749c5862d05dbfd65c4327) Thanks [@nsunami](https://github.com/nsunami)! - fix typo in components.json\n\n## 2.0.8\n\n### Patch Changes\n\n- [#4922](https://github.com/shadcn-ui/ui/pull/4922) [`c62167a`](https://github.com/shadcn-ui/ui/commit/c62167a449a5cf82d8ed93a7af986d5e503893bb) Thanks [@sapenlei](https://github.com/sapenlei)! - remove next.js default vars\n\n- [#4871](https://github.com/shadcn-ui/ui/pull/4871) [`ce3adfa`](https://github.com/shadcn-ui/ui/commit/ce3adfa075793a46b4fb2ff797ce87ad22bfa2cd) Thanks [@bcorbold](https://github.com/bcorbold)! - support tw prefixes for registry files with single quote formatting\n\n## 2.0.7\n\n### Patch Changes\n\n- [#4848](https://github.com/shadcn-ui/ui/pull/4848) [`1af66c2`](https://github.com/shadcn-ui/ui/commit/1af66c2d08df7dd7f6a8d4d1544d965e41a1fb0d) Thanks [@jherr](https://github.com/jherr)! - add support for ~ dir in target path\n\n- [#4815](https://github.com/shadcn-ui/ui/pull/4815) [`408760a`](https://github.com/shadcn-ui/ui/commit/408760a93b398b7d02a0a522a74a7a195ccda7c4) Thanks [@rana-haris-ali](https://github.com/rana-haris-ali)! - fix typo in error message\n\n## 2.0.6\n\n### Patch Changes\n\n- [#4820](https://github.com/shadcn-ui/ui/pull/4820) [`64b2f1a`](https://github.com/shadcn-ui/ui/commit/64b2f1a5ad865c831045c954fec85e0fec2289e7) Thanks [@shadcn](https://github.com/shadcn)! - add docs support\n\n## 2.0.5\n\n### Patch Changes\n\n- [#4787](https://github.com/shadcn-ui/ui/pull/4787) [`99ff9ca`](https://github.com/shadcn-ui/ui/commit/99ff9caf7180c8c19df130969bdef3d0fb78b218) Thanks [@shadcn](https://github.com/shadcn)! - add src to content for tailwind\n\n## 2.0.4\n\n### Patch Changes\n\n- [#4776](https://github.com/shadcn-ui/ui/pull/4776) [`49373ee`](https://github.com/shadcn-ui/ui/commit/49373eed9672d6ecf82219f6e682cab914e7cc41) Thanks [@shadcn](https://github.com/shadcn)! - better error handling\n\n## 2.0.3\n\n### Patch Changes\n\n- [#4729](https://github.com/shadcn-ui/ui/pull/4729) [`701e116`](https://github.com/shadcn-ui/ui/commit/701e1160ea86b2ddd9f43121b447477caaf7aefa) Thanks [@shadcn](https://github.com/shadcn)! - add --src-dir\n\n- [#4731](https://github.com/shadcn-ui/ui/pull/4731) [`faa7a67`](https://github.com/shadcn-ui/ui/commit/faa7a67fb30c741c2f2559fc64b34f103aac9d79) Thanks [@shadcn](https://github.com/shadcn)! - fix routes for src dir\n\n## 2.0.0\n\n### Major Changes\n\n- [#4569](https://github.com/shadcn-ui/ui/pull/4569) [`a62a155`](https://github.com/shadcn-ui/ui/commit/a62a155aac6409d41ea27529be2eef65e3db2723) Thanks [@shadcn](https://github.com/shadcn)! - npx shadcn init\n\n## 0.8.0\n\n### Minor Changes\n\n- [#2454](https://github.com/shadcn-ui/ui/pull/2454) [`0374ba8`](https://github.com/shadcn-ui/ui/commit/0374ba874d1c76ae08660c655aea6cdf7a7817f6) Thanks [@shadcn](https://github.com/shadcn)! - add automatic config detection for Next.js\n\n## 0.7.0\n\n### Minor Changes\n\n- [#2419](https://github.com/shadcn-ui/ui/pull/2419) [`7640ef7`](https://github.com/shadcn-ui/ui/commit/7640ef7bbc5fea280a8b5227a2455bb840478573) Thanks [@shadcn](https://github.com/shadcn)! - add support for devDependencies\n\n## 0.6.0\n\n### Minor Changes\n\n- [#2266](https://github.com/shadcn-ui/ui/pull/2266) [`be580db`](https://github.com/shadcn-ui/ui/commit/be580dbf7671b7db84282aa3554b62304e668414) Thanks [@shadcn](https://github.com/shadcn)! - add support for custom ui dir\n\n## 0.5.0\n\n### Minor Changes\n\n- [#770](https://github.com/shadcn-ui/ui/pull/770) [`4fb98d5`](https://github.com/shadcn-ui/ui/commit/4fb98d520f2322f59bf2ae0bbbee706760df48a2) Thanks [@Bekacru](https://github.com/Bekacru)! - add support for custom tailwind prefix\n\n- [#1247](https://github.com/shadcn-ui/ui/pull/1247) [`4ec8a67`](https://github.com/shadcn-ui/ui/commit/4ec8a67dab94d0c2bcda2396d01174abee0991a0) Thanks [@lukahartwig](https://github.com/lukahartwig)! - add support for tailwind.config.ts\n\n### Patch Changes\n\n- [#1707](https://github.com/shadcn-ui/ui/pull/1707) [`46f247c`](https://github.com/shadcn-ui/ui/commit/46f247c47f87f771d98cc77bddb5697dac200de4) Thanks [@caiquecastro](https://github.com/caiquecastro)! - fix code style\n\n- [#1696](https://github.com/shadcn-ui/ui/pull/1696) [`5a13def`](https://github.com/shadcn-ui/ui/commit/5a13def46d9b91d19ad1bcab6cc2955007dfdf61) Thanks [@KMJ-007](https://github.com/KMJ-007)! - use jsconfig for non-ts projects\n\n## 0.4.1\n\n### Patch Changes\n\n- [#1662](https://github.com/shadcn-ui/ui/pull/1662) [`95a9673`](https://github.com/shadcn-ui/ui/commit/95a9673b1ec6a1954d941d35624ad2cd93faccc4) Thanks [@shadcn](https://github.com/shadcn)! - minify build\n\n## 0.4.0\n\n### Minor Changes\n\n- [#1554](https://github.com/shadcn-ui/ui/pull/1554) [`2f0dbca`](https://github.com/shadcn-ui/ui/commit/2f0dbca22180507c20088f595613481adcfb51ed) Thanks [@shadcn](https://github.com/shadcn)! - do not ask for confirmation\n\n- [#1033](https://github.com/shadcn-ui/ui/pull/1033) [`963114e`](https://github.com/shadcn-ui/ui/commit/963114e118a2263f4ee449cc07b0f6f7e5104bc1) Thanks [@sramam](https://github.com/sramam)! - add --all option\n\n- [#973](https://github.com/shadcn-ui/ui/pull/973) [`58d012e`](https://github.com/shadcn-ui/ui/commit/58d012e342d2563b4c43ed2ac18879a6d5044980) Thanks [@plbstl](https://github.com/plbstl)! - ask for overwrite\n\n### Patch Changes\n\n- [#1466](https://github.com/shadcn-ui/ui/pull/1466) [`0a42865`](https://github.com/shadcn-ui/ui/commit/0a4286500ee06289eccde8fe9257c169b47dbc93) Thanks [@c0b41](https://github.com/c0b41)! - fix file extension\n\n- [#1555](https://github.com/shadcn-ui/ui/pull/1555) [`d3d52fc`](https://github.com/shadcn-ui/ui/commit/d3d52fc68723a895ddad99e1f5c9420d981d3387) Thanks [@shadcn](https://github.com/shadcn)! - update README\n\n- [#1319](https://github.com/shadcn-ui/ui/pull/1319) [`4506822`](https://github.com/shadcn-ui/ui/commit/450682238922bf025ff919f0a84147894710fb71) Thanks [@K-Sato1995](https://github.com/K-Sato1995)! - remove duplicate vi call\n\n- [#1089](https://github.com/shadcn-ui/ui/pull/1089) [`ae84578`](https://github.com/shadcn-ui/ui/commit/ae845788f688d60f0e8ac020e16a4bd357978baf) Thanks [@santidalmasso](https://github.com/santidalmasso)! - fix duplicate classnames\n\n## 0.3.0\n\n### Minor Changes\n\n- [#834](https://github.com/shadcn/ui/pull/834) [`edc653c`](https://github.com/shadcn/ui/commit/edc653c01e6d4d5a51f3e414f2aeeb77af758257) Thanks [@shadcn](https://github.com/shadcn)! - add support for jsx\n\n## 0.2.3\n\n### Patch Changes\n\n- [#707](https://github.com/shadcn/ui/pull/707) [`c337753`](https://github.com/shadcn/ui/commit/c3377530f43baa95c9e41cce7c07b1a4db1e3ee6) Thanks [@MarkLyck](https://github.com/MarkLyck)! - fix(cli): use bun add when bun detected\n\n## 0.2.2\n\n### Patch Changes\n\n- [#677](https://github.com/shadcn/ui/pull/677) [`0f84973`](https://github.com/shadcn/ui/commit/0f84973b4d779d16efe3877b9206ea908261ed8f) Thanks [@Xenfo](https://github.com/Xenfo)! - fix(cli): use `@antfu/ni` to detect package manager\n\n- [#681](https://github.com/shadcn/ui/pull/681) [`1971fa7`](https://github.com/shadcn/ui/commit/1971fa7511a22354a9acda12391b55517a261668) Thanks [@dan5py](https://github.com/dan5py)! - use slash for alpha modifier\n\n- [#682](https://github.com/shadcn/ui/pull/682) [`fbed50f`](https://github.com/shadcn/ui/commit/fbed50f4e8d4fc8a4736c2a80b5c61c9b3f5e05a) Thanks [@dan5py](https://github.com/dan5py)! - fix cssVars template typo\n\n## 0.2.1\n\n### Patch Changes\n\n- [#641](https://github.com/shadcn/ui/pull/641) [`658c710`](https://github.com/shadcn/ui/commit/658c710bced7b827a0d32dbcda03a4136961dff1) Thanks [@shadcn](https://github.com/shadcn)! - everything is new\n\n## 0.2.0\n\n### Minor Changes\n\n- [#637](https://github.com/shadcn/ui/pull/637) [`eeb1754`](https://github.com/shadcn/ui/commit/eeb17545a16824e11d09149a5ecab9fca570c448) Thanks [@shadcn](https://github.com/shadcn)! - everything is new\n\n## 0.1.3\n\n### Patch Changes\n\n- [#259](https://github.com/shadcn/ui/pull/259) [`87ad14c`](https://github.com/shadcn/ui/commit/87ad14cb2a27ee2d1000344cbe5f8f4fdbfc939a) Thanks [@ghoshnirmalya](https://github.com/ghoshnirmalya)! - add missing deps for button\n\n## 0.1.2\n\n### Patch Changes\n\n- [#271](https://github.com/shadcn/ui/pull/271) [`888a5ad`](https://github.com/shadcn/ui/commit/888a5ad6f602371a27cc88a2573993d5818e745c) Thanks [@shadcn](https://github.com/shadcn)! - fix card color\n\n## 0.1.1\n\n### Patch Changes\n\n- [#205](https://github.com/shadcn/ui/pull/205) [`dc573c7`](https://github.com/shadcn/ui/commit/dc573c7e9ecf73a9a8f53320bc4f5db17d7bd2b3) Thanks [@shadcn](https://github.com/shadcn)! - fix changeset config\n\n- [#204](https://github.com/shadcn/ui/pull/204) [`68e1c56`](https://github.com/shadcn/ui/commit/68e1c5624a35edb3c38e5f739acf3387fdca541c) Thanks [@shadcn](https://github.com/shadcn)! - update typescript\n\n- [#203](https://github.com/shadcn/ui/pull/203) [`acf4ae7`](https://github.com/shadcn/ui/commit/acf4ae79cb734671a5b5c227b5009f38b59e3f19) Thanks [@shadcn](https://github.com/shadcn)! - update readme\n\n- [#197](https://github.com/shadcn/ui/pull/197) [`4a794a3`](https://github.com/shadcn/ui/commit/4a794a354f3e03b76cba32049971afc2f6986080) Thanks [@shadcn](https://github.com/shadcn)! - update init message\n\n## 0.1.0\n\n### Minor Changes\n\n- [#178](https://github.com/shadcn/ui/pull/178) [`96f300e`](https://github.com/shadcn/ui/commit/96f300ea7471de9de9d433114d010d8fef2c8bae) Thanks [@shadcn](https://github.com/shadcn)! - add init command\n\n### Patch Changes\n\n- [#175](https://github.com/shadcn/ui/pull/175) [`b5d4368`](https://github.com/shadcn/ui/commit/b5d43688b975eb66b95b71af0396d07f94dde247) Thanks [@shadcn](https://github.com/shadcn)! - rename package to shadcn-ui\n\n## 0.0.4\n\n### Patch Changes\n\n- [#118](https://github.com/shadcn/ui/pull/118) [`712e625`](https://github.com/shadcn/ui/commit/712e625d485a0d7ac77fea4d5077d9ec7a33c513) Thanks [@shadcn](https://github.com/shadcn)! - add warning for command\n\n## 0.0.3\n\n### Patch Changes\n\n- [#115](https://github.com/shadcn/ui/pull/115) [`92fe541`](https://github.com/shadcn/ui/commit/92fe54184b5e9b5ac7259829436d7786a52606b3) Thanks [@shadcn](https://github.com/shadcn)! - Initial commit.\n\n- [#115](https://github.com/shadcn/ui/pull/115) [`92fe541`](https://github.com/shadcn/ui/commit/92fe54184b5e9b5ac7259829436d7786a52606b3) Thanks [@shadcn](https://github.com/shadcn)! - implement component base url\n\n## 0.0.2\n\n### Patch Changes\n\n- [#112](https://github.com/shadcn/ui/pull/112) [`be701cf`](https://github.com/shadcn/ui/commit/be701cf139e0acc0ced3e161d246f7b2b53dccbe) Thanks [@shadcn](https://github.com/shadcn)! - Initial commit.\n"
  },
  {
    "path": "packages/shadcn/README.md",
    "content": "# shadcn\n\nA CLI for adding components to your project.\n\n## create\n\nUse the `create` command to create a new project. You will be taken to a website to build your custom design system and choose your framework.\n\n```bash\nnpx shadcn create\n```\n\n## init\n\nUse the `init` command to initialize dependencies for a new project.\n\nThe `init` command installs dependencies, adds the `cn` util, configures Tailwind CSS, and CSS variables for the project.\n\n```bash\nnpx shadcn init\n```\n\n## add\n\nUse the `add` command to add components to your project.\n\nThe `add` command adds a component to your project and installs all required dependencies.\n\n```bash\nnpx shadcn add [component]\n```\n\n### Example\n\n```bash\nnpx shadcn add alert-dialog\n```\n\nYou can also run the command without any arguments to view a list of all available components:\n\n```bash\nnpx shadcn add\n```\n\n## Documentation\n\nVisit https://ui.shadcn.com/docs/cli to view the documentation.\n\n## License\n\nLicensed under the [MIT license](https://github.com/shadcn-ui/ui/blob/main/LICENSE.md).\n"
  },
  {
    "path": "packages/shadcn/package.json",
    "content": "{\n  \"name\": \"shadcn\",\n  \"version\": \"4.1.0\",\n  \"description\": \"Add components to your apps.\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"license\": \"MIT\",\n  \"author\": {\n    \"name\": \"shadcn\",\n    \"url\": \"https://twitter.com/shadcn\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/shadcn-ui/ui.git\",\n    \"directory\": \"packages/shadcn\"\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"keywords\": [\n    \"components\",\n    \"ui\",\n    \"tailwind\",\n    \"radix-ui\",\n    \"shadcn\"\n  ],\n  \"type\": \"module\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"default\": \"./dist/index.js\"\n    },\n    \"./registry\": {\n      \"types\": \"./dist/registry/index.d.ts\",\n      \"default\": \"./dist/registry/index.js\"\n    },\n    \"./schema\": {\n      \"types\": \"./dist/schema/index.d.ts\",\n      \"default\": \"./dist/schema/index.js\"\n    },\n    \"./mcp\": {\n      \"types\": \"./dist/mcp/index.d.ts\",\n      \"default\": \"./dist/mcp/index.js\"\n    },\n    \"./utils\": {\n      \"types\": \"./dist/utils/index.d.ts\",\n      \"default\": \"./dist/utils/index.js\"\n    },\n    \"./icons\": {\n      \"types\": \"./dist/icons/index.d.ts\",\n      \"default\": \"./dist/icons/index.js\"\n    },\n    \"./preset\": {\n      \"types\": \"./dist/preset/index.d.ts\",\n      \"default\": \"./dist/preset/index.js\"\n    },\n    \"./tailwind.css\": {\n      \"style\": \"./dist/tailwind.css\"\n    }\n  },\n  \"bin\": \"./dist/index.js\",\n  \"scripts\": {\n    \"dev\": \"tsup --watch\",\n    \"build\": \"tsup\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"clean\": \"rimraf dist && rimraf components\",\n    \"start:dev\": \"cross-env REGISTRY_URL=http://localhost:4000/r SHADCN_TEMPLATE_DIR=../../templates node dist/index.js\",\n    \"start:prod\": \"cross-env REGISTRY_URL=https://ui.shadcn.com/r node dist/index.js\",\n    \"start\": \"node dist/index.js\",\n    \"format:write\": \"prettier --write \\\"**/*.{ts,tsx,mdx}\\\" --cache\",\n    \"format:check\": \"prettier --check \\\"**/*.{ts,tsx,mdx}\\\" --cache\",\n    \"release\": \"changeset version\",\n    \"pub:beta\": \"pnpm build && pnpm publish --no-git-checks --access public --tag beta\",\n    \"pub:next\": \"pnpm build && pnpm publish --no-git-checks --access public --tag next\",\n    \"pub:release\": \"pnpm build && pnpm publish --access public\",\n    \"test\": \"vitest run\",\n    \"test:dev\": \"REGISTRY_URL=http://localhost:4000/r SHADCN_TEMPLATE_DIR=../../templates vitest run\",\n    \"mcp:inspect\": \"pnpm dlx @modelcontextprotocol/inspector node dist/index.js mcp\"\n  },\n  \"dependencies\": {\n    \"@babel/core\": \"^7.28.0\",\n    \"@babel/parser\": \"^7.28.0\",\n    \"@babel/plugin-transform-typescript\": \"^7.28.0\",\n    \"@babel/preset-typescript\": \"^7.27.1\",\n    \"@dotenvx/dotenvx\": \"^1.48.4\",\n    \"@modelcontextprotocol/sdk\": \"^1.26.0\",\n    \"@types/validate-npm-package-name\": \"^4.0.2\",\n    \"browserslist\": \"^4.26.2\",\n    \"commander\": \"^14.0.0\",\n    \"cosmiconfig\": \"^9.0.0\",\n    \"dedent\": \"^1.6.0\",\n    \"deepmerge\": \"^4.3.1\",\n    \"diff\": \"^8.0.2\",\n    \"execa\": \"^9.6.0\",\n    \"fast-glob\": \"^3.3.3\",\n    \"fs-extra\": \"^11.3.1\",\n    \"fuzzysort\": \"^3.1.0\",\n    \"https-proxy-agent\": \"^7.0.6\",\n    \"kleur\": \"^4.1.5\",\n    \"msw\": \"^2.10.4\",\n    \"node-fetch\": \"^3.3.2\",\n    \"open\": \"^11.0.0\",\n    \"ora\": \"^8.2.0\",\n    \"postcss\": \"^8.5.6\",\n    \"postcss-selector-parser\": \"^7.1.0\",\n    \"prompts\": \"^2.4.2\",\n    \"recast\": \"^0.23.11\",\n    \"stringify-object\": \"^5.0.0\",\n    \"tailwind-merge\": \"^3.0.1\",\n    \"ts-morph\": \"^26.0.0\",\n    \"tsconfig-paths\": \"^4.2.0\",\n    \"validate-npm-package-name\": \"^7.0.1\",\n    \"zod\": \"^3.24.1\",\n    \"zod-to-json-schema\": \"^3.24.6\"\n  },\n  \"devDependencies\": {\n    \"@antfu/ni\": \"^25.0.0\",\n    \"@types/babel__core\": \"^7.20.5\",\n    \"@types/fs-extra\": \"^11.0.4\",\n    \"@types/prompts\": \"^2.4.9\",\n    \"@types/stringify-object\": \"^4.0.5\",\n    \"rimraf\": \"^6.0.1\",\n    \"tsup\": \"^8.5.0\",\n    \"type-fest\": \"^4.41.0\",\n    \"typescript\": \"^5.9.2\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/commands/add.ts",
    "content": "import path from \"path\"\nimport { runInit } from \"@/src/commands/init\"\nimport { preFlightAdd } from \"@/src/preflights/preflight-add\"\nimport {\n  promptForBase,\n  promptForPreset,\n  resolveRegistryBaseConfig,\n} from \"@/src/preset/presets\"\nimport { getRegistryItems, getShadcnRegistryIndex } from \"@/src/registry/api\"\nimport { DEPRECATED_COMPONENTS } from \"@/src/registry/constants\"\nimport { clearRegistryContext } from \"@/src/registry/context\"\nimport { registryItemTypeSchema } from \"@/src/registry/schema\"\nimport { isUniversalRegistryItem } from \"@/src/registry/utils\"\nimport { getTemplateForFramework } from \"@/src/templates/index\"\nimport { addComponents } from \"@/src/utils/add-components\"\nimport { createProject } from \"@/src/utils/create-project\"\nimport { dryRunComponents } from \"@/src/utils/dry-run\"\nimport { formatDryRunResult } from \"@/src/utils/dry-run-formatter\"\nimport { loadEnvFiles } from \"@/src/utils/env-loader\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport { createConfig, getConfig } from \"@/src/utils/get-config\"\nimport { getProjectInfo } from \"@/src/utils/get-project-info\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { ensureRegistriesInConfig } from \"@/src/utils/registries\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { updateAppIndex } from \"@/src/utils/update-app-index\"\nimport { Command } from \"commander\"\nimport prompts from \"prompts\"\nimport { z } from \"zod\"\n\nexport const addOptionsSchema = z.object({\n  components: z.array(z.string()).optional(),\n  yes: z.boolean(),\n  overwrite: z.boolean(),\n  cwd: z.string(),\n  all: z.boolean(),\n  path: z.string().optional(),\n  silent: z.boolean(),\n  dryRun: z.boolean(),\n  diff: z.union([z.string(), z.literal(true)]).optional(),\n  view: z.union([z.string(), z.literal(true)]).optional(),\n})\n\nexport const add = new Command()\n  .name(\"add\")\n  .description(\"add a component to your project\")\n  .argument(\"[components...]\", \"names, url or local path to component\")\n  .option(\"-y, --yes\", \"skip confirmation prompt.\", false)\n  .option(\"-o, --overwrite\", \"overwrite existing files.\", false)\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .option(\"-a, --all\", \"add all available components\", false)\n  .option(\"-p, --path <path>\", \"the path to add the component to.\")\n  .option(\"-s, --silent\", \"mute output.\", false)\n  .option(\"--dry-run\", \"preview changes without writing files.\", false)\n  .option(\"--diff [path]\", \"show diff for a file.\")\n  .option(\"--view [path]\", \"show file contents.\")\n  .action(async (components, opts) => {\n    try {\n      const options = addOptionsSchema.parse({\n        components,\n        ...opts,\n        cwd: path.resolve(opts.cwd),\n      })\n\n      await loadEnvFiles(options.cwd)\n\n      const isDryRun = options.dryRun || options.diff || options.view\n\n      let initialConfig = await getConfig(options.cwd)\n      if (!initialConfig) {\n        initialConfig = createConfig({\n          style: \"new-york\",\n          resolvedPaths: {\n            cwd: options.cwd,\n          },\n        })\n      }\n\n      let hasNewRegistries = false\n      if (components.length > 0) {\n        const { config: updatedConfig, newRegistries } =\n          await ensureRegistriesInConfig(components, initialConfig, {\n            silent: options.silent,\n            writeFile: false,\n          })\n        initialConfig = updatedConfig\n        hasNewRegistries = newRegistries.length > 0\n      }\n\n      let itemType: z.infer<typeof registryItemTypeSchema> | undefined\n      let shouldInstallStyleIndex = true\n      if (components.length > 0) {\n        const [registryItem] = await getRegistryItems([components[0]], {\n          config: initialConfig,\n        })\n        itemType = registryItem?.type\n        shouldInstallStyleIndex =\n          itemType !== \"registry:theme\" &&\n          itemType !== \"registry:style\" &&\n          itemType !== \"registry:base\"\n\n        if (isUniversalRegistryItem(registryItem) && !isDryRun) {\n          await addComponents(components, initialConfig, options)\n          return\n        }\n        if (\n          !options.yes &&\n          !isDryRun &&\n          (itemType === \"registry:style\" || itemType === \"registry:theme\")\n        ) {\n          logger.break()\n          const { confirm } = await prompts({\n            type: \"confirm\",\n            name: \"confirm\",\n            message: highlighter.warn(\n              `You are about to install a new ${itemType.replace(\n                \"registry:\",\n                \"\"\n              )}. \\nExisting CSS variables and components will be overwritten. Continue?`\n            ),\n          })\n          if (!confirm) {\n            logger.break()\n            logger.log(`Installation cancelled.`)\n            logger.break()\n            process.exit(1)\n          }\n        }\n      }\n\n      if (!options.components?.length) {\n        options.components = await promptForRegistryComponents(options)\n      }\n\n      const projectInfo = await getProjectInfo(options.cwd)\n      if (projectInfo?.tailwindVersion === \"v4\") {\n        const deprecatedComponents = DEPRECATED_COMPONENTS.filter((component) =>\n          options.components?.includes(component.name)\n        )\n\n        if (deprecatedComponents?.length) {\n          logger.break()\n          deprecatedComponents.forEach((component) => {\n            logger.warn(highlighter.warn(component.message))\n          })\n          logger.break()\n          process.exit(1)\n        }\n      }\n\n      let { errors, config } = await preFlightAdd(options)\n\n      // No components.json file. Prompt the user to run init.\n      let initHasRun = false\n      if (errors[ERRORS.MISSING_CONFIG]) {\n        const { proceed } = await prompts({\n          type: \"confirm\",\n          name: \"proceed\",\n          message: `You need to create a ${highlighter.info(\n            \"components.json\"\n          )} file to add components. Proceed?`,\n          initial: true,\n        })\n\n        if (!proceed) {\n          logger.break()\n          process.exit(1)\n        }\n\n        // Infer template from project framework.\n        const inferredTemplate = getTemplateForFramework(\n          projectInfo?.framework.name\n        )\n\n        // Prompt for base and preset.\n        const base = await promptForBase()\n        const { url: initUrl } = await promptForPreset({\n          rtl: false,\n          base,\n          template: inferredTemplate,\n        })\n\n        // Resolve registry:base config.\n        const {\n          registryBaseConfig,\n          installStyleIndex,\n          url: cleanInitUrl,\n        } = await resolveRegistryBaseConfig(initUrl, options.cwd)\n\n        config = await runInit({\n          cwd: options.cwd,\n          yes: true,\n          force: true,\n          defaults: false,\n          skipPreflight: false,\n          silent: options.silent && !hasNewRegistries,\n          isNewProject: false,\n          cssVariables: true,\n          rtl: false,\n          installStyleIndex,\n          components: [cleanInitUrl, ...(options.components ?? [])],\n          registryBaseConfig,\n        })\n        initHasRun = true\n      }\n\n      let shouldUpdateAppIndex = false\n\n      if (errors[ERRORS.MISSING_DIR_OR_EMPTY_PROJECT]) {\n        const { projectPath, template } = await createProject({\n          cwd: options.cwd,\n          force: options.overwrite,\n          components: options.components,\n        })\n        if (!projectPath) {\n          logger.break()\n          process.exit(1)\n        }\n        options.cwd = projectPath\n\n        // Prompt for base and preset.\n        const selectedBase = await promptForBase()\n        const { url: initUrl } = await promptForPreset({\n          rtl: false,\n          base: selectedBase,\n          template,\n        })\n        const {\n          registryBaseConfig,\n          installStyleIndex,\n          url: cleanInitUrl,\n        } = await resolveRegistryBaseConfig(initUrl, options.cwd)\n\n        config = await runInit({\n          cwd: options.cwd,\n          yes: true,\n          force: true,\n          defaults: false,\n          skipPreflight: true,\n          silent: !hasNewRegistries && options.silent,\n          isNewProject: true,\n          cssVariables: true,\n          rtl: false,\n          installStyleIndex,\n          components: [cleanInitUrl, ...(options.components ?? [])],\n          registryBaseConfig,\n        })\n        initHasRun = true\n\n        shouldUpdateAppIndex =\n          options.components?.length === 1 &&\n          !!options.components[0].match(/\\/chat\\/b\\//)\n      }\n\n      if (!config) {\n        throw new Error(\n          `Failed to read config at ${highlighter.info(options.cwd)}.`\n        )\n      }\n\n      const { config: updatedConfig } = await ensureRegistriesInConfig(\n        options.components,\n        config,\n        {\n          silent: options.silent || hasNewRegistries,\n          writeFile: !isDryRun,\n        }\n      )\n      config = updatedConfig\n\n      // Dry-run mode: preview changes without writing files.\n      // --diff and --view imply --dry-run.\n      if (isDryRun) {\n        const dryRunSpinner = spinner(\"Resolving items.\", {\n          silent: options.silent,\n        }).start()\n        const dryRunResult = await dryRunComponents(\n          options.components,\n          config,\n          {\n            overwrite: options.overwrite,\n          }\n        )\n        dryRunSpinner.stop()\n\n        logger.log(\n          formatDryRunResult(dryRunResult, options.components, {\n            diff: options.diff,\n            view: options.view,\n          })\n        )\n        return\n      }\n\n      if (!initHasRun) {\n        await addComponents(options.components, config, options)\n      }\n\n      // If we're adding a single component and it's from the v0 registry,\n      // let's update the app/page.tsx file to import the component.\n      if (shouldUpdateAppIndex) {\n        await updateAppIndex(options.components[0], config)\n      }\n    } catch (error) {\n      logger.break()\n      handleError(error)\n    } finally {\n      clearRegistryContext()\n    }\n  })\n\nasync function promptForRegistryComponents(\n  options: z.infer<typeof addOptionsSchema>\n) {\n  const registryIndex = await getShadcnRegistryIndex()\n  if (!registryIndex) {\n    logger.break()\n    handleError(new Error(\"Failed to fetch registry index.\"))\n    return []\n  }\n\n  if (options.all) {\n    return registryIndex\n      .map((entry) => entry.name)\n      .filter(\n        (component) => !DEPRECATED_COMPONENTS.some((c) => c.name === component)\n      )\n  }\n\n  if (options.components?.length) {\n    return options.components\n  }\n\n  const { components } = await prompts({\n    type: \"multiselect\",\n    name: \"components\",\n    message: \"Which components would you like to add?\",\n    hint: \"Space to select. A to toggle all. Enter to submit.\",\n    instructions: false,\n    choices: registryIndex\n      .filter(\n        (entry) =>\n          entry.type === \"registry:ui\" &&\n          !DEPRECATED_COMPONENTS.some(\n            (component) => component.name === entry.name\n          )\n      )\n      .map((entry) => ({\n        title: entry.name,\n        value: entry.name,\n        selected: options.all ? true : options.components?.includes(entry.name),\n      })),\n  })\n\n  if (!components?.length) {\n    logger.warn(\"No components selected. Exiting.\")\n    logger.info(\"\")\n    process.exit(1)\n  }\n\n  const result = z.array(z.string()).safeParse(components)\n  if (!result.success) {\n    logger.error(\"\")\n    handleError(new Error(\"Something went wrong. Please try again.\"))\n    return []\n  }\n  return result.data\n}\n"
  },
  {
    "path": "packages/shadcn/src/commands/build.ts",
    "content": "import * as fs from \"fs/promises\"\nimport * as path from \"path\"\nimport { preFlightBuild } from \"@/src/preflights/preflight-build\"\nimport { SHADCN_URL } from \"@/src/registry/constants\"\nimport { registryItemSchema, registrySchema } from \"@/src/schema\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { Command } from \"commander\"\nimport { z } from \"zod\"\n\nexport const buildOptionsSchema = z.object({\n  cwd: z.string(),\n  registryFile: z.string(),\n  outputDir: z.string(),\n})\n\nexport const build = new Command()\n  .name(\"build\")\n  .description(\"build components for a shadcn registry\")\n  .argument(\"[registry]\", \"path to registry.json file\", \"./registry.json\")\n  .option(\n    \"-o, --output <path>\",\n    \"destination directory for json files\",\n    \"./public/r\"\n  )\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .action(async (registry: string, opts) => {\n    try {\n      const options = buildOptionsSchema.parse({\n        cwd: path.resolve(opts.cwd),\n        registryFile: registry,\n        outputDir: opts.output,\n      })\n\n      const { resolvePaths } = await preFlightBuild(options)\n      const content = await fs.readFile(resolvePaths.registryFile, \"utf-8\")\n\n      const result = registrySchema.safeParse(JSON.parse(content))\n\n      if (!result.success) {\n        logger.error(\n          `Invalid registry file found at ${highlighter.info(\n            resolvePaths.registryFile\n          )}.`\n        )\n        process.exit(1)\n      }\n\n      const buildSpinner = spinner(\"Building registry...\")\n      for (const registryItem of result.data.items) {\n        buildSpinner.start(`Building ${registryItem.name}...`)\n\n        // Add the schema to the registry item.\n        registryItem[\"$schema\"] =\n          \"https://ui.shadcn.com/schema/registry-item.json\"\n\n        // Loop through each file in the files array.\n        for (const file of registryItem.files ?? []) {\n          file[\"content\"] = await fs.readFile(\n            path.resolve(resolvePaths.cwd, file.path),\n            \"utf-8\"\n          )\n        }\n\n        // Validate the registry item.\n        const result = registryItemSchema.safeParse(registryItem)\n        if (!result.success) {\n          logger.error(\n            `Invalid registry item found for ${highlighter.info(\n              registryItem.name\n            )}.`\n          )\n          continue\n        }\n\n        // Write the registry item to the output directory.\n        await fs.writeFile(\n          path.resolve(resolvePaths.outputDir, `${result.data.name}.json`),\n          JSON.stringify(result.data, null, 2)\n        )\n      }\n\n      // Copy registry.json to the output directory.\n      await fs.copyFile(\n        resolvePaths.registryFile,\n        path.resolve(resolvePaths.outputDir, \"registry.json\")\n      )\n\n      buildSpinner.succeed(\"Building registry.\")\n    } catch (error) {\n      logger.break()\n      handleError(error)\n    }\n  })\n"
  },
  {
    "path": "packages/shadcn/src/commands/diff.ts",
    "content": "import { existsSync, promises as fs } from \"fs\"\nimport path from \"path\"\nimport {\n  fetchTree,\n  getItemTargetPath,\n  getRegistryBaseColor,\n  getShadcnRegistryIndex,\n} from \"@/src/registry/api\"\nimport { registryIndexSchema } from \"@/src/schema\"\nimport { getSupportedFontMarkers } from \"@/src/utils/font-markers\"\nimport { Config, getConfig } from \"@/src/utils/get-config\"\nimport {\n  formatMonorepoMessage,\n  getMonorepoTargets,\n  isMonorepoRoot,\n} from \"@/src/utils/get-monorepo-info\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { transform } from \"@/src/utils/transformers\"\nimport { transformCleanup } from \"@/src/utils/transformers/transform-cleanup\"\nimport { transformCssVars } from \"@/src/utils/transformers/transform-css-vars\"\nimport { transformFont } from \"@/src/utils/transformers/transform-font\"\nimport { transformIcons } from \"@/src/utils/transformers/transform-icons\"\nimport { transformImport } from \"@/src/utils/transformers/transform-import\"\nimport { transformMenu } from \"@/src/utils/transformers/transform-menu\"\nimport { transformRsc } from \"@/src/utils/transformers/transform-rsc\"\nimport { transformRtl } from \"@/src/utils/transformers/transform-rtl\"\nimport { transformTwPrefixes } from \"@/src/utils/transformers/transform-tw-prefix\"\nimport { Command } from \"commander\"\nimport { diffLines, type Change } from \"diff\"\nimport { z } from \"zod\"\n\nconst updateOptionsSchema = z.object({\n  component: z.string().optional(),\n  yes: z.boolean(),\n  cwd: z.string(),\n  path: z.string().optional(),\n})\n\nexport const diff = new Command()\n  .name(\"diff\")\n  .description(\"[DEPRECATED] Use `add [component] --diff` instead.\")\n  .argument(\"[component]\", \"the component name\")\n  .option(\"-y, --yes\", \"skip confirmation prompt.\", false)\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .action(async (name, opts) => {\n    try {\n      const options = updateOptionsSchema.parse({\n        component: name,\n        ...opts,\n      })\n\n      const cwd = path.resolve(options.cwd)\n\n      if (!existsSync(cwd)) {\n        logger.error(`The path ${cwd} does not exist. Please try again.`)\n        process.exit(1)\n      }\n\n      const config = await getConfig(cwd)\n      if (!config) {\n        // Check if we're in a monorepo root.\n        if (await isMonorepoRoot(cwd)) {\n          const targets = await getMonorepoTargets(cwd)\n          if (targets.length > 0) {\n            formatMonorepoMessage(\"diff [component]\", targets)\n            process.exit(1)\n          }\n        }\n\n        logger.warn(\n          `Configuration is missing. Please run ${highlighter.success(\n            `init`\n          )} to create a components.json file.`\n        )\n        process.exit(1)\n      }\n\n      const registryIndex = await getShadcnRegistryIndex()\n\n      if (!registryIndex) {\n        handleError(new Error(\"Failed to fetch registry index.\"))\n        process.exit(1)\n      }\n\n      if (!options.component) {\n        const targetDir = config.resolvedPaths.components\n\n        // Find all components that exist in the project.\n        const projectComponents = registryIndex.filter((item) => {\n          for (const file of item.files ?? []) {\n            const filePath = path.resolve(\n              targetDir,\n              typeof file === \"string\" ? file : file.path\n            )\n            if (existsSync(filePath)) {\n              return true\n            }\n          }\n\n          return false\n        })\n\n        // Check for updates.\n        const componentsWithUpdates = []\n        for (const component of projectComponents) {\n          const changes = await diffComponent(component, config)\n          if (changes.length) {\n            componentsWithUpdates.push({\n              name: component.name,\n              changes,\n            })\n          }\n        }\n\n        if (!componentsWithUpdates.length) {\n          logger.info(\"No updates found.\")\n          process.exit(0)\n        }\n\n        logger.info(\"The following components have updates available:\")\n        for (const component of componentsWithUpdates) {\n          logger.info(`- ${component.name}`)\n          for (const change of component.changes) {\n            logger.info(`  - ${change.filePath}`)\n          }\n        }\n        logger.break()\n        logger.info(\n          `Run ${highlighter.success(`diff <component>`)} to see the changes.`\n        )\n        process.exit(0)\n      }\n\n      // Show diff for a single component.\n      const component = registryIndex.find(\n        (item) => item.name === options.component\n      )\n\n      if (!component) {\n        logger.error(\n          `The component ${highlighter.success(\n            options.component\n          )} does not exist.`\n        )\n        process.exit(1)\n      }\n\n      const changes = await diffComponent(component, config)\n\n      if (!changes.length) {\n        logger.info(`No updates found for ${options.component}.`)\n        process.exit(0)\n      }\n\n      for (const change of changes) {\n        logger.info(`- ${change.filePath}`)\n        await printDiff(change.patch)\n        logger.info(\"\")\n      }\n    } catch (error) {\n      handleError(error)\n    }\n  })\n\nasync function diffComponent(\n  component: z.infer<typeof registryIndexSchema>[number],\n  config: Config\n) {\n  const payload = await fetchTree(config.style, [component])\n  const baseColor = await getRegistryBaseColor(config.tailwind.baseColor)\n  const supportedFontMarkers = getSupportedFontMarkers(payload)\n\n  if (!payload) {\n    return []\n  }\n\n  const changes = []\n\n  for (const item of payload) {\n    const targetDir = await getItemTargetPath(config, item)\n\n    if (!targetDir) {\n      continue\n    }\n\n    for (const file of item.files ?? []) {\n      const filePath = path.resolve(\n        targetDir,\n        typeof file === \"string\" ? file : file.path\n      )\n\n      if (!existsSync(filePath)) {\n        continue\n      }\n\n      const fileContent = await fs.readFile(filePath, \"utf8\")\n\n      if (typeof file === \"string\" || !file.content) {\n        continue\n      }\n\n      const registryContent = await transform(\n        {\n          filename: file.path,\n          raw: file.content,\n          config,\n          baseColor,\n          supportedFontMarkers,\n        },\n        [\n          transformImport,\n          transformRsc,\n          transformCssVars,\n          transformTwPrefixes,\n          transformIcons,\n          transformMenu,\n          transformRtl,\n          transformFont,\n          transformCleanup,\n        ]\n      )\n\n      const patch = diffLines(registryContent as string, fileContent)\n      if (patch.length > 1) {\n        changes.push({\n          filePath,\n          patch,\n        })\n      }\n    }\n  }\n\n  return changes\n}\n\nasync function printDiff(diff: Change[]) {\n  diff.forEach((part) => {\n    if (part) {\n      if (part.added) {\n        return process.stdout.write(highlighter.success(part.value))\n      }\n      if (part.removed) {\n        return process.stdout.write(highlighter.error(part.value))\n      }\n\n      return process.stdout.write(part.value)\n    }\n  })\n}\n"
  },
  {
    "path": "packages/shadcn/src/commands/docs.ts",
    "content": "import path from \"path\"\nimport { getShadcnRegistryIndex } from \"@/src/registry/api\"\nimport { getBase, getConfig } from \"@/src/utils/get-config\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { Command } from \"commander\"\n\nexport const docs = new Command()\n  .name(\"docs\")\n  .description(\"get docs, api references and usage examples for components\")\n  .argument(\"<components...>\", \"component names\")\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .option(\n    \"-b, --base <base>\",\n    \"the base to use either 'base' or 'radix'. defaults to project base.\"\n  )\n  .option(\"--json\", \"output as JSON.\", false)\n  .action(async (components, opts) => {\n    try {\n      const cwd = path.resolve(opts.cwd)\n      const config = await getConfig(cwd)\n      const base = opts.base ?? getBase(config?.style)\n\n      const index = await getShadcnRegistryIndex()\n\n      if (!index) {\n        logger.error(\"Failed to fetch the registry index.\")\n        process.exit(1)\n      }\n\n      const results: {\n        component: string\n        base: string\n        links: Record<string, string>\n      }[] = []\n\n      for (const component of components) {\n        const item = index.find((entry) => entry.name === component)\n\n        if (!item) {\n          logger.error(\n            `Component ${highlighter.info(\n              component\n            )} not found in the shadcn registry.`\n          )\n          process.exit(1)\n        }\n\n        const links = (\n          item.meta?.links as Record<string, Record<string, string>>\n        )?.[base]\n\n        if (!links || Object.keys(links).length === 0) {\n          logger.warn(\n            `No documentation links available for ${highlighter.info(\n              component\n            )}.`\n          )\n          continue\n        }\n\n        results.push({ component, base, links })\n      }\n\n      if (opts.json) {\n        console.log(JSON.stringify({ base, results }, null, 2))\n        return\n      }\n\n      // Compute max key length across all results for consistent alignment.\n      const maxKeyLength = Math.max(\n        ...results.flatMap((r) => Object.keys(r.links).map((k) => k.length))\n      )\n\n      for (const { component, links } of results) {\n        logger.log(highlighter.info(component))\n        for (const [key, value] of Object.entries(links)) {\n          logger.log(`  - ${key.padEnd(maxKeyLength + 2)}${value}`)\n        }\n        logger.break()\n      }\n    } catch (error) {\n      handleError(error)\n    }\n  })\n"
  },
  {
    "path": "packages/shadcn/src/commands/info.ts",
    "content": "import { existsSync } from \"fs\"\nimport path from \"path\"\nimport { SHADCN_URL } from \"@/src/registry/constants\"\nimport { getBase, getConfig } from \"@/src/utils/get-config\"\nimport {\n  formatMonorepoMessage,\n  getMonorepoTargets,\n  isMonorepoRoot,\n} from \"@/src/utils/get-monorepo-info\"\nimport {\n  getProjectComponents,\n  getProjectInfo,\n  type ProjectInfo,\n} from \"@/src/utils/get-project-info\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { Command } from \"commander\"\n\nconst GITHUB_RAW_BASE =\n  \"https://raw.githubusercontent.com/shadcn-ui/ui/refs/heads/main/apps/v4/registry/bases\"\n\nexport const info = new Command()\n  .name(\"info\")\n  .description(\"get information about your project\")\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .option(\"--json\", \"output as JSON.\", false)\n  .action(async (opts) => {\n    try {\n      const cwd = path.resolve(opts.cwd)\n\n      // Check if we're in a monorepo root.\n      if (\n        !existsSync(path.resolve(cwd, \"components.json\")) &&\n        (await isMonorepoRoot(cwd))\n      ) {\n        const targets = await getMonorepoTargets(cwd)\n        if (targets.length > 0) {\n          if (opts.json) {\n            console.log(\n              JSON.stringify(\n                {\n                  error: \"monorepo_root\",\n                  message:\n                    \"You are running info from a monorepo root. Use the -c flag to specify a workspace.\",\n                  targets: targets.map((t) => t.name),\n                },\n                null,\n                2\n              )\n            )\n          } else {\n            formatMonorepoMessage(\"info\", targets)\n          }\n          process.exit(1)\n        }\n      }\n\n      const projectInfo = await getProjectInfo(cwd)\n      const config = await getConfig(cwd)\n      const components = await getProjectComponents(cwd)\n      const base = getBase(config?.style)\n      const data = collectInfo(projectInfo, config, components, base)\n\n      if (opts.json) {\n        console.log(JSON.stringify(data, null, 2))\n        return\n      }\n\n      printInfo(data)\n    } catch (error) {\n      handleError(error)\n    }\n  })\n\nfunction getRegistries(\n  registries: Record<string, string | { url: string }> | undefined\n) {\n  if (!registries) {\n    return {}\n  }\n\n  const result: Record<string, string> = {}\n  for (const [name, value] of Object.entries(registries)) {\n    result[name] = typeof value === \"string\" ? value : value.url\n  }\n  return result\n}\n\nfunction collectInfo(\n  projectInfo: ProjectInfo | null,\n  config: Awaited<ReturnType<typeof getConfig>>,\n  components: string[],\n  base: string\n) {\n  return {\n    project: projectInfo\n      ? {\n          framework: projectInfo.framework.label,\n          frameworkName: projectInfo.framework.name,\n          frameworkVersion: projectInfo.frameworkVersion ?? null,\n          srcDirectory: projectInfo.isSrcDir,\n          rsc: projectInfo.isRSC,\n          typescript: projectInfo.isTsx,\n          tailwindVersion: projectInfo.tailwindVersion ?? null,\n          tailwindConfig: projectInfo.tailwindConfigFile ?? null,\n          tailwindCss: projectInfo.tailwindCssFile ?? null,\n          importAlias: projectInfo.aliasPrefix ?? null,\n        }\n      : null,\n    config: config\n      ? {\n          style: config.style,\n          base,\n          rsc: config.rsc,\n          typescript: config.tsx,\n          iconLibrary: config.iconLibrary ?? null,\n          rtl: config.rtl ?? false,\n          menuColor: config.menuColor ?? null,\n          menuAccent: config.menuAccent ?? null,\n          aliases: {\n            components: config.aliases.components,\n            utils: config.aliases.utils,\n            ui: config.aliases.ui ?? null,\n            lib: config.aliases.lib ?? null,\n            hooks: config.aliases.hooks ?? null,\n          },\n          resolvedPaths: {\n            cwd: config.resolvedPaths.cwd,\n            tailwindConfig: config.resolvedPaths.tailwindConfig || null,\n            tailwindCss: config.resolvedPaths.tailwindCss || null,\n            utils: config.resolvedPaths.utils,\n            components: config.resolvedPaths.components,\n            lib: config.resolvedPaths.lib,\n            hooks: config.resolvedPaths.hooks,\n            ui: config.resolvedPaths.ui,\n          },\n          registries: getRegistries(config.registries),\n        }\n      : null,\n    components,\n    links: {\n      docs: `${SHADCN_URL}/docs`,\n      components: `${SHADCN_URL}/docs/components/${base}/[component].md`,\n      ui: `${GITHUB_RAW_BASE}/${base}/ui/[component].tsx`,\n      examples: `${GITHUB_RAW_BASE}/${base}/examples/[component]-example.tsx`,\n      schema: \"https://ui.shadcn.com/schema.json\",\n    },\n  }\n}\n\nfunction printInfo(data: ReturnType<typeof collectInfo>) {\n  // Project.\n  logger.log(highlighter.info(\"Project\"))\n  if (data.project) {\n    printEntries({\n      framework: `${data.project.framework} (${data.project.frameworkName})`,\n      frameworkVersion: data.project.frameworkVersion ?? \"-\",\n      srcDirectory: data.project.srcDirectory ? \"Yes\" : \"No\",\n      rsc: data.project.rsc ? \"Yes\" : \"No\",\n      typescript: data.project.typescript ? \"Yes\" : \"No\",\n      tailwindVersion: data.project.tailwindVersion ?? \"-\",\n      tailwindConfig: data.project.tailwindConfig ?? \"-\",\n      tailwindCss: data.project.tailwindCss ?? \"-\",\n      importAlias: data.project.importAlias ?? \"-\",\n    })\n  } else {\n    logger.log(\"  No project info detected.\")\n  }\n\n  // Config.\n  logger.break()\n  logger.log(highlighter.info(\"Configuration\"))\n  if (data.config) {\n    printEntries({\n      style: data.config.style,\n      base: data.config.base,\n      rsc: data.config.rsc ? \"Yes\" : \"No\",\n      typescript: data.config.typescript ? \"Yes\" : \"No\",\n      iconLibrary: data.config.iconLibrary ?? \"-\",\n      rtl: data.config.rtl ? \"Yes\" : \"No\",\n      menuColor: data.config.menuColor ?? \"-\",\n      menuAccent: data.config.menuAccent ?? \"-\",\n    })\n\n    // Aliases.\n    logger.break()\n    logger.log(highlighter.info(\"Aliases\"))\n    printEntries({\n      components: data.config.aliases.components,\n      utils: data.config.aliases.utils,\n      ui: data.config.aliases.ui ?? \"-\",\n      lib: data.config.aliases.lib ?? \"-\",\n      hooks: data.config.aliases.hooks ?? \"-\",\n    })\n\n    // Resolved paths.\n    logger.break()\n    logger.log(highlighter.info(\"Resolved Paths\"))\n    printEntries({\n      cwd: data.config.resolvedPaths.cwd,\n      tailwindConfig: data.config.resolvedPaths.tailwindConfig ?? \"-\",\n      tailwindCss: data.config.resolvedPaths.tailwindCss ?? \"-\",\n      utils: data.config.resolvedPaths.utils,\n      components: data.config.resolvedPaths.components,\n      lib: data.config.resolvedPaths.lib,\n      hooks: data.config.resolvedPaths.hooks,\n      ui: data.config.resolvedPaths.ui,\n    })\n\n    // Registries.\n    if (Object.keys(data.config.registries).length > 0) {\n      logger.break()\n      logger.log(\"registries:\")\n      printEntries(data.config.registries)\n    }\n  } else {\n    logger.log(\"  No components.json found.\")\n  }\n\n  // Installed components.\n  logger.break()\n  logger.log(highlighter.info(\"Installed Components\"))\n  if (data.components.length > 0) {\n    logger.log(`  ${data.components.join(\", \")}`)\n  } else {\n    logger.log(\"  No components installed.\")\n  }\n\n  // Links.\n  logger.break()\n  logger.log(highlighter.info(\"Links\"))\n  printEntries(data.links)\n\n  logger.break()\n}\n\nfunction printEntries(entries: Record<string, string>) {\n  const maxKeyLength = Math.max(...Object.keys(entries).map((k) => k.length))\n  for (const [key, value] of Object.entries(entries)) {\n    logger.log(`  ${key.padEnd(maxKeyLength + 2)}${value}`)\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/commands/init.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { preFlightInit } from \"@/src/preflights/preflight-init\"\nimport { decodePreset, isPresetCode } from \"@/src/preset/preset\"\nimport {\n  DEFAULT_PRESETS,\n  promptForBase,\n  promptForPreset,\n  resolveInitUrl,\n  resolveRegistryBaseConfig,\n} from \"@/src/preset/presets\"\nimport { getRegistryBaseColors, getRegistryStyles } from \"@/src/registry/api\"\nimport { BUILTIN_REGISTRIES, SHADCN_URL } from \"@/src/registry/constants\"\nimport { clearRegistryContext } from \"@/src/registry/context\"\nimport { registryConfigSchema } from \"@/src/registry/schema\"\nimport { isUrl } from \"@/src/registry/utils\"\nimport { rawConfigSchema } from \"@/src/schema\"\nimport {\n  getTemplateForFramework,\n  resolveTemplate,\n  templates,\n} from \"@/src/templates/index\"\nimport { addComponents } from \"@/src/utils/add-components\"\nimport { createProject } from \"@/src/utils/create-project\"\nimport { loadEnvFiles } from \"@/src/utils/env-loader\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport {\n  createFileBackup,\n  deleteFileBackup,\n  FILE_BACKUP_SUFFIX,\n  restoreFileBackup,\n} from \"@/src/utils/file-helper\"\nimport {\n  DEFAULT_COMPONENTS,\n  DEFAULT_TAILWIND_CONFIG,\n  DEFAULT_TAILWIND_CSS,\n  DEFAULT_UTILS,\n  explorer,\n  getConfig,\n  getWorkspaceConfig,\n  resolveConfigPaths,\n  type Config,\n} from \"@/src/utils/get-config\"\nimport {\n  formatMonorepoMessage,\n  getMonorepoTargets,\n  isMonorepoRoot,\n} from \"@/src/utils/get-monorepo-info\"\nimport {\n  getProjectComponents,\n  getProjectConfig,\n  getProjectInfo,\n  getProjectTailwindVersionFromConfig,\n} from \"@/src/utils/get-project-info\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { ensureRegistriesInConfig } from \"@/src/utils/registries\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { Command } from \"commander\"\nimport deepmerge from \"deepmerge\"\nimport fsExtra from \"fs-extra\"\nimport prompts from \"prompts\"\nimport { z } from \"zod\"\n\nexport const initOptionsSchema = z.object({\n  cwd: z.string(),\n  name: z.string().optional(),\n  preset: z.union([z.boolean(), z.string()]).optional(),\n  components: z.array(z.string()).optional(),\n  yes: z.boolean(),\n  defaults: z.boolean(),\n  force: z.boolean(),\n  reinstall: z.boolean().optional(),\n  silent: z.boolean(),\n  isNewProject: z.boolean().default(false),\n  cssVariables: z.boolean().default(true),\n  rtl: z.boolean().optional(),\n  base: z.enum([\"radix\", \"base\"]).optional(),\n  template: z.string().optional(),\n  monorepo: z.boolean().optional(),\n  existingConfig: z.record(z.unknown()).optional(),\n  installStyleIndex: z.boolean().default(true),\n  registryBaseConfig: rawConfigSchema.deepPartial().optional(),\n  menuColor: z\n    .enum([\n      \"default\",\n      \"inverted\",\n      \"default-translucent\",\n      \"inverted-translucent\",\n    ])\n    .optional(),\n  menuAccent: z.enum([\"subtle\", \"bold\"]).optional(),\n  iconLibrary: z.string().optional(),\n})\n\nexport const init = new Command()\n  .name(\"init\")\n  .alias(\"create\")\n  .description(\"initialize your project and install dependencies\")\n  .argument(\"[components...]\", \"names, url or local path to component\")\n  .option(\n    \"-t, --template <template>\",\n    \"the template to use. (next, start, vite, react-router, laravel, astro)\"\n  )\n  .option(\"-b, --base <base>\", \"the component library to use. (radix, base)\")\n  .option(\"--monorepo\", \"scaffold a monorepo project.\")\n  .option(\"--no-monorepo\", \"skip the monorepo prompt.\")\n  .option(\"-p, --preset [name]\", \"use a preset configuration\")\n  .option(\"-y, --yes\", \"skip confirmation prompt.\", true)\n  .option(\n    \"-d, --defaults\",\n    \"use default configuration: --template=next --preset=base-nova\",\n    false\n  )\n  .option(\"-f, --force\", \"force overwrite of existing configuration.\", false)\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .option(\"-n, --name <name>\", \"the name for the new project.\")\n  .option(\"-s, --silent\", \"mute output.\", false)\n  .option(\"--css-variables\", \"use css variables for theming.\", true)\n  .option(\"--no-css-variables\", \"do not use css variables for theming.\")\n  .option(\"--rtl\", \"enable RTL support.\")\n  .option(\"--no-rtl\", \"disable RTL support.\")\n  .option(\"--reinstall\", \"re-install existing UI components.\")\n  .option(\"--no-reinstall\", \"do not re-install existing UI components.\")\n  .action(async (components, opts) => {\n    let componentsJsonBackupPath: string | undefined\n    let reinstallComponents: string[] = []\n\n    // Restore components.json backup on unexpected exit (e.g. process.exit in preflight).\n    const restoreBackupOnExit = () => {\n      if (componentsJsonBackupPath) {\n        restoreFileBackup(\n          componentsJsonBackupPath.replace(FILE_BACKUP_SUFFIX, \"\")\n        )\n      }\n    }\n    process.on(\"exit\", restoreBackupOnExit)\n\n    try {\n      const options = initOptionsSchema.parse({\n        ...opts,\n        reinstall: opts.reinstall,\n        cwd: path.resolve(opts.cwd),\n      })\n      const presetsByName = new Map(Object.entries(DEFAULT_PRESETS))\n\n      let presetBase: string | undefined\n\n      if (options.defaults) {\n        options.template = options.template || \"next\"\n        options.base = options.base || \"base\"\n        options.reinstall = options.reinstall ?? false\n      }\n\n      if (options.template && !(options.template in templates)) {\n        logger.error(\n          `Invalid template: ${highlighter.info(\n            options.template\n          )}. Available templates: ${Object.keys(templates)\n            .map((t) => highlighter.info(t))\n            .join(\", \")}.`\n        )\n        logger.break()\n        process.exit(1)\n      }\n\n      if (\n        typeof options.preset === \"string\" &&\n        !isUrl(options.preset) &&\n        !isPresetCode(options.preset)\n      ) {\n        const knownPresetNames = Array.from(presetsByName.keys())\n\n        if (!presetsByName.has(options.preset)) {\n          logger.error(\n            `Invalid preset: ${highlighter.info(\n              options.preset\n            )}. Available presets: ${knownPresetNames.join(\", \")}`\n          )\n          logger.break()\n          process.exit(1)\n        }\n      }\n\n      const cwd = options.cwd\n      const hasExistingConfig = fsExtra.existsSync(\n        path.resolve(cwd, \"components.json\")\n      )\n\n      // Check if we're in a monorepo root before proceeding.\n      // Skip this check when --monorepo is set, since the template\n      // handler knows how to initialize each workspace.\n      if (\n        !options.monorepo &&\n        !hasExistingConfig &&\n        (await isMonorepoRoot(cwd))\n      ) {\n        const projectInfo = await getProjectInfo(cwd)\n        if (!projectInfo || projectInfo.framework.name === \"manual\") {\n          const targets = await getMonorepoTargets(cwd)\n          if (targets.length > 0) {\n            formatMonorepoMessage(\"init\", targets)\n            process.exit(1)\n          }\n        }\n      }\n\n      if (hasExistingConfig && !options.force) {\n        const { overwrite } = await prompts({\n          type: \"confirm\",\n          name: \"overwrite\",\n          message: `A ${highlighter.info(\n            \"components.json\"\n          )} file already exists. Would you like to overwrite it?`,\n          initial: false,\n        })\n\n        if (!overwrite) {\n          logger.info(\n            `  To start over, remove the ${highlighter.info(\n              \"components.json\"\n            )} file and run ${highlighter.info(\"init\")} again.`\n          )\n          logger.break()\n          process.exit(1)\n        }\n\n        options.force = true\n      }\n\n      let existingConfig: Record<string, unknown> | undefined\n      if (hasExistingConfig) {\n        try {\n          existingConfig = await fsExtra.readJson(\n            path.resolve(cwd, \"components.json\")\n          )\n        } catch {\n          // Ignore read errors.\n        }\n\n        // Pass existing config so preflight can use it (e.g. tailwind.css path in monorepos).\n        if (existingConfig) {\n          options.existingConfig = existingConfig\n        }\n\n        let shouldReinstall = options.reinstall\n\n        if (shouldReinstall === undefined) {\n          const { reinstall } = await prompts({\n            type: \"confirm\",\n            name: \"reinstall\",\n            message: `Would you like to re-install existing UI components?`,\n            initial: false,\n          })\n          shouldReinstall = reinstall\n        }\n\n        if (shouldReinstall) {\n          reinstallComponents = await getProjectComponents(cwd)\n          if (reinstallComponents.length) {\n            logger.break()\n            logger.log(\n              \"  The following components will be re-installed and overwritten:\"\n            )\n            for (let i = 0; i < reinstallComponents.length; i += 8) {\n              logger.log(\n                `  - ${reinstallComponents.slice(i, i + 8).join(\", \")}`\n              )\n            }\n            logger.break()\n          }\n        }\n      }\n\n      if (\n        options.preset === undefined &&\n        components.length === 0 &&\n        !options.defaults\n      ) {\n        // Determine template for the create URL.\n        const hasPackageJson = fsExtra.existsSync(\n          path.resolve(cwd, \"package.json\")\n        )\n\n        // Prompt for template only for new projects without -t flag.\n        if (!options.template && !hasPackageJson) {\n          const { template } = await prompts({\n            type: \"select\",\n            name: \"template\",\n            message: \"Select a template\",\n            choices: Object.entries(templates).map(([value, t]) => ({\n              title: t.title,\n              value,\n              description: t.description,\n              disabled: options.monorepo && value === \"laravel\",\n            })),\n          })\n\n          if (!template) {\n            process.exit(1)\n          }\n\n          options.template = template\n        }\n\n        // Try to infer template for existing projects.\n        if (!options.template && hasPackageJson) {\n          const projectInfo = await getProjectInfo(cwd)\n          const detectedTemplate = getTemplateForFramework(\n            projectInfo?.framework.name\n          )\n          if (detectedTemplate) {\n            options.template = detectedTemplate\n          }\n        }\n\n        // Laravel cannot be scaffolded — exit early with instructions.\n        if (options.template === \"laravel\" && !hasPackageJson) {\n          logger.break()\n          logger.log(\n            `  Please create a new app with ${highlighter.info(\n              \"laravel new --react\"\n            )} first then run ${highlighter.info(\"shadcn init\")}.`\n          )\n          logger.log(\n            `  See ${highlighter.info(\n              `${SHADCN_URL}/docs/installation/laravel`\n            )} for more information.`\n          )\n          logger.break()\n          process.exit(0)\n        }\n\n        // Prompt for monorepo if the template supports it (new projects only).\n        if (\n          options.monorepo === undefined &&\n          !hasPackageJson &&\n          options.template &&\n          templates[options.template as keyof typeof templates]?.monorepo\n        ) {\n          const { monorepo } = await prompts({\n            type: \"confirm\",\n            name: \"monorepo\",\n            message: \"Would you like to set up a monorepo?\",\n            initial: false,\n          })\n          options.monorepo = monorepo\n        }\n\n        // Prompt for base if not provided.\n        if (!options.base) {\n          options.base = await promptForBase()\n        }\n\n        // Show interactive preset list.\n        options.preset = true\n      }\n\n      if (options.preset !== undefined) {\n        const presetArg = options.preset === true ? true : options.preset\n\n        if (presetArg === true) {\n          const result = await promptForPreset({\n            rtl: options.rtl ?? false,\n            template: options.template,\n            base: options.base!,\n          })\n          components = [result.url, ...components]\n          presetBase = result.base\n        }\n\n        if (typeof presetArg === \"string\") {\n          let initUrl: string\n\n          if (isUrl(presetArg)) {\n            const url = new URL(presetArg)\n            if (options.rtl) {\n              url.searchParams.set(\"rtl\", \"true\")\n            } else if (options.rtl === false) {\n              url.searchParams.delete(\"rtl\")\n            }\n            if (url.pathname === \"/init\" && presetArg.startsWith(SHADCN_URL)) {\n              url.searchParams.set(\"track\", \"1\")\n            }\n            initUrl = url.toString()\n            presetBase = url.searchParams.get(\"base\") ?? undefined\n          } else if (isPresetCode(presetArg)) {\n            const decoded = decodePreset(presetArg)\n            if (!decoded) {\n              logger.error(\n                `Invalid preset code: ${highlighter.info(presetArg)}`\n              )\n              logger.break()\n              process.exit(1)\n            }\n            // Preset codes no longer carry base — use \"radix\" as placeholder.\n            // The correct base is set in the URL after resolution below.\n            initUrl = resolveInitUrl(\n              {\n                ...decoded,\n                base: \"radix\",\n                rtl: options.rtl ?? false,\n              },\n              { template: options.template, preset: presetArg }\n            )\n            presetBase = undefined\n          } else {\n            const preset = presetsByName.get(presetArg)\n            if (!preset) {\n              throw new Error(`Unknown preset: ${presetArg}`)\n            }\n            initUrl = resolveInitUrl(\n              {\n                ...preset,\n                base: options.base ?? \"radix\",\n                rtl: options.rtl ?? preset.rtl,\n              },\n              { template: options.template }\n            )\n            presetBase = undefined\n          }\n\n          components = [initUrl, ...components]\n        }\n      }\n\n      // Resolve base: --base flag > preset/prompt/URL > existing config > prompt.\n      let resolvedBase: string =\n        options.base ??\n        presetBase ??\n        (existingConfig?.style\n          ? (existingConfig.style as string).startsWith(\"base-\")\n            ? \"base\"\n            : \"radix\"\n          : \"\")\n\n      if (!resolvedBase) {\n        if (components.length > 0) {\n          // When initializing from a registry item, default to radix.\n          // The registry:base config will override this.\n          resolvedBase = \"radix\"\n        } else {\n          const base = await promptForBase()\n          resolvedBase = base\n          options.base = base\n        }\n      }\n\n      // Build the --defaults URL now that base is resolved.\n      if (options.defaults && !components.some(isUrl)) {\n        const initUrl = resolveInitUrl(\n          {\n            ...DEFAULT_PRESETS.nova,\n            base: resolvedBase,\n            rtl: options.rtl ?? false,\n          },\n          { template: options.template }\n        )\n        components = [initUrl, ...components]\n      }\n\n      // Ensure the init URL has the correct base.\n      if (components.length > 0 && isUrl(components[0])) {\n        const url = new URL(components[0])\n        url.searchParams.set(\"base\", resolvedBase)\n        components[0] = url.toString()\n      }\n\n      // Confirm if the user is switching bases during reinit.\n      if (existingConfig?.style) {\n        const confirmedBase = await confirmBaseSwitch(\n          existingConfig.style as string,\n          resolvedBase\n        )\n        if (confirmedBase !== resolvedBase) {\n          resolvedBase = confirmedBase\n          if (components.length > 0 && isUrl(components[0])) {\n            const url = new URL(components[0])\n            url.searchParams.set(\"base\", confirmedBase)\n            components[0] = url.toString()\n          }\n        }\n      }\n\n      // Add re-install components after preset selection.\n      if (reinstallComponents.length) {\n        components = [...components, ...reinstallComponents]\n      }\n\n      options.components = components\n\n      await loadEnvFiles(options.cwd)\n\n      // We need to check if we're initializing with a new style.\n      // This will allow us to determine if we need to install the base style.\n      if (components.length > 0) {\n        // Back up existing components.json if it exists.\n        // Since components.json might not be valid at this point,\n        // temporarily rename it to allow preflight to run.\n        const componentsJsonPath = path.resolve(cwd, \"components.json\")\n\n        if (hasExistingConfig) {\n          componentsJsonBackupPath =\n            createFileBackup(componentsJsonPath) ?? undefined\n          if (!componentsJsonBackupPath) {\n            logger.warn(\n              `Could not back up ${highlighter.info(\"components.json\")}.`\n            )\n          }\n        }\n\n        // Resolve registry:base config from the first component.\n        const {\n          registryBaseConfig,\n          installStyleIndex,\n          url: cleanUrl,\n        } = await resolveRegistryBaseConfig(components[0], cwd, {\n          registries: existingConfig?.registries as\n            | z.infer<typeof registryConfigSchema>\n            | undefined,\n        })\n\n        // Use the clean URL (track param stripped) for subsequent fetches.\n        components[0] = cleanUrl\n\n        if (!installStyleIndex) {\n          options.installStyleIndex = false\n        }\n\n        if (registryBaseConfig) {\n          options.registryBaseConfig = registryBaseConfig\n        }\n      }\n\n      await runInit(options)\n\n      logger.break()\n      logger.log(\n        `Project initialization completed.\\nYou may now add components.`\n      )\n\n      // Success — remove the backup and exit listener.\n      process.removeListener(\"exit\", restoreBackupOnExit)\n      deleteFileBackup(path.resolve(cwd, \"components.json\"))\n      logger.break()\n    } catch (error) {\n      // Restore handled by exit listener, but also do it here for non-exit errors.\n      process.removeListener(\"exit\", restoreBackupOnExit)\n      restoreBackupOnExit()\n      logger.break()\n      handleError(error)\n    } finally {\n      clearRegistryContext()\n    }\n  })\n\nexport async function runInit(\n  options: z.infer<typeof initOptionsSchema> & {\n    skipPreflight?: boolean\n  }\n) {\n  let projectInfo\n  let newProjectTemplate: keyof typeof templates | undefined\n\n  // Resolve the effective template if --monorepo is set.\n  const explicitTemplate = options.template as\n    | keyof typeof templates\n    | undefined\n  const resolvedTemplateConfig = explicitTemplate\n    ? resolveTemplate(templates[explicitTemplate], {\n        monorepo: options.monorepo,\n      })\n    : undefined\n\n  // When a monorepo template with an init handler is explicitly provided\n  // and the project already exists, skip the standard preflight\n  // — the template manages each workspace directly.\n  const hasExplicitMonorepoInit =\n    options.monorepo &&\n    resolvedTemplateConfig?.init &&\n    fsExtra.existsSync(path.resolve(options.cwd, \"package.json\"))\n\n  if (hasExplicitMonorepoInit) {\n    projectInfo = await getProjectInfo(options.cwd)\n  } else if (!options.skipPreflight) {\n    const preflight = await preFlightInit(options)\n    if (preflight.errors[ERRORS.MISSING_DIR_OR_EMPTY_PROJECT]) {\n      const { projectPath, template } = await createProject(options)\n      if (!projectPath) {\n        process.exit(1)\n      }\n      options.cwd = projectPath\n      options.isNewProject = true\n      newProjectTemplate = template\n      // Re-get project info for the newly created project.\n      projectInfo = await getProjectInfo(options.cwd)\n    } else {\n      projectInfo = preflight.projectInfo\n    }\n  } else {\n    projectInfo = await getProjectInfo(options.cwd)\n  }\n\n  // Use the template from project creation if available,\n  // or fall back to the explicit --template flag.\n  const templateKey = newProjectTemplate ?? explicitTemplate\n  const selectedTemplate = templateKey\n    ? resolveTemplate(templates[templateKey], { monorepo: options.monorepo })\n    : undefined\n\n  const components = [\n    ...(options.installStyleIndex ? [\"index\"] : []),\n    ...(options.components ?? []),\n    // Add button component for new template-based projects.\n    ...(selectedTemplate ? [\"button\"] : []),\n  ]\n\n  if (selectedTemplate?.init) {\n    const result = await selectedTemplate.init({\n      projectPath: options.cwd,\n      components,\n      registryBaseConfig: options.registryBaseConfig,\n      rtl: options.rtl ?? false,\n      menuColor: options.menuColor,\n      menuAccent: options.menuAccent,\n      iconLibrary: options.iconLibrary,\n      silent: options.silent,\n    })\n\n    // Run postInit for new projects (e.g. git init).\n    await selectedTemplate.postInit({ projectPath: options.cwd })\n\n    return result\n  }\n\n  // Standard init path for existing projects.\n  const projectConfig = await getProjectConfig(options.cwd, projectInfo)\n\n  let config = projectConfig\n    ? await promptForMinimalConfig(projectConfig, options)\n    : await promptForConfig(await getConfig(options.cwd))\n\n  if (!options.yes) {\n    const { proceed } = await prompts({\n      type: \"confirm\",\n      name: \"proceed\",\n      message: `Write configuration to ${highlighter.info(\n        \"components.json\"\n      )}. Proceed?`,\n      initial: true,\n    })\n\n    if (!proceed) {\n      process.exit(1)\n    }\n  }\n\n  // Ensure registries are configured for the components we're about to add.\n  const fullConfigForRegistry = await resolveConfigPaths(options.cwd, config)\n  const { config: configWithRegistries } = await ensureRegistriesInConfig(\n    components,\n    fullConfigForRegistry,\n    {\n      silent: true,\n    }\n  )\n\n  // Update config with any new registries found.\n  if (configWithRegistries.registries) {\n    config.registries = configWithRegistries.registries\n  }\n\n  const componentSpinner = spinner(`Writing components.json.`).start()\n  const targetPath = path.resolve(options.cwd, \"components.json\")\n  const backupPath = `${targetPath}${FILE_BACKUP_SUFFIX}`\n\n  // Merge and keep registries at the end.\n  const mergeConfig = (base: typeof config, override: object) => {\n    const { registries, ...merged } = deepmerge(base, override)\n    return { ...merged, registries } as typeof config\n  }\n\n  // Merge with backup config if it exists.\n  if (fsExtra.existsSync(backupPath)) {\n    const existingConfig = await fsExtra.readJson(backupPath)\n    if (options.force) {\n      // With --force, only preserve registries from existing config.\n      if (existingConfig.registries) {\n        config.registries = {\n          ...existingConfig.registries,\n          ...(config.registries || {}),\n        }\n      }\n    } else {\n      config = mergeConfig(existingConfig, config)\n    }\n  }\n\n  // Merge config from registry:base item.\n  if (options.registryBaseConfig) {\n    config = mergeConfig(config, options.registryBaseConfig)\n  }\n\n  // Ensure rtl is set from CLI option (takes priority over registryBaseConfig).\n  if (options.rtl !== undefined) {\n    config.rtl = options.rtl\n  }\n\n  // Make sure to filter out built-in registries.\n  // TODO: fix this in ensureRegistriesInConfig.\n  config.registries = Object.fromEntries(\n    Object.entries(config.registries || {}).filter(\n      ([key]) => !Object.keys(BUILTIN_REGISTRIES).includes(key)\n    )\n  )\n\n  // Write components.json.\n  await fs.writeFile(targetPath, `${JSON.stringify(config, null, 2)}\\n`, \"utf8\")\n  componentSpinner.succeed()\n\n  // Propagate design settings to workspace components.json files.\n  const fullConfig = await resolveConfigPaths(options.cwd, config)\n  const workspaceConfig = await getWorkspaceConfig(fullConfig)\n  if (workspaceConfig) {\n    const designSettings: Record<string, unknown> = {}\n    if (config.menuColor) designSettings.menuColor = config.menuColor\n    if (config.menuAccent) designSettings.menuAccent = config.menuAccent\n    if (config.rtl !== undefined) designSettings.rtl = config.rtl\n    if (config.iconLibrary) designSettings.iconLibrary = config.iconLibrary\n\n    if (Object.keys(designSettings).length > 0) {\n      for (const key of Object.keys(workspaceConfig)) {\n        const wsConfig = workspaceConfig[key]\n        if (wsConfig.resolvedPaths.cwd === fullConfig.resolvedPaths.cwd) {\n          continue\n        }\n\n        const wsConfigPath = path.resolve(\n          wsConfig.resolvedPaths.cwd,\n          \"components.json\"\n        )\n        if (fsExtra.existsSync(wsConfigPath)) {\n          const wsRawConfig = await fsExtra.readJson(wsConfigPath)\n          await fsExtra.writeJson(\n            wsConfigPath,\n            { ...wsRawConfig, ...designSettings },\n            { spaces: 2 }\n          )\n        }\n      }\n    }\n  }\n\n  // Clear cosmiconfig cache so addComponents re-reads the updated workspace configs.\n  explorer.clearCaches()\n\n  // Add components.\n  await addComponents(components, fullConfig, {\n    // Init will always overwrite files.\n    overwrite: true,\n    // Reinstall should overwrite existing CSS variables.\n    overwriteCssVars: options.reinstall || undefined,\n    silent: options.silent,\n    isNewProject:\n      options.isNewProject || projectInfo?.framework.name === \"next-app\",\n  })\n\n  // Run postInit for new projects without a custom init (e.g. git init).\n  if (selectedTemplate) {\n    await selectedTemplate.postInit({ projectPath: options.cwd })\n  }\n\n  return fullConfig\n}\n\nasync function promptForConfig(defaultConfig: Config | null = null) {\n  const [styles, baseColors] = await Promise.all([\n    getRegistryStyles(),\n    getRegistryBaseColors(),\n  ])\n\n  logger.info(\"\")\n  const options = await prompts([\n    {\n      type: \"toggle\",\n      name: \"typescript\",\n      message: `Would you like to use ${highlighter.info(\n        \"TypeScript\"\n      )} (recommended)?`,\n      initial: defaultConfig?.tsx ?? true,\n      active: \"yes\",\n      inactive: \"no\",\n    },\n    {\n      type: \"select\",\n      name: \"style\",\n      message: `Which ${highlighter.info(\"style\")} would you like to use?`,\n      choices: styles.map((style) => ({\n        title: style.label,\n        value: style.name,\n      })),\n    },\n    {\n      type: \"select\",\n      name: \"tailwindBaseColor\",\n      message: `Which color would you like to use as the ${highlighter.info(\n        \"base color\"\n      )}?`,\n      choices: baseColors.map((color) => ({\n        title: color.label,\n        value: color.name,\n      })),\n    },\n    {\n      type: \"text\",\n      name: \"tailwindCss\",\n      message: `Where is your ${highlighter.info(\"global CSS\")} file?`,\n      initial: defaultConfig?.tailwind.css ?? DEFAULT_TAILWIND_CSS,\n    },\n    {\n      type: \"toggle\",\n      name: \"tailwindCssVariables\",\n      message: `Would you like to use ${highlighter.info(\n        \"CSS variables\"\n      )} for theming?`,\n      initial: defaultConfig?.tailwind.cssVariables ?? true,\n      active: \"yes\",\n      inactive: \"no\",\n    },\n    {\n      type: \"text\",\n      name: \"tailwindPrefix\",\n      message: `Are you using a custom ${highlighter.info(\n        \"tailwind prefix eg. tw-\"\n      )}? (Leave blank if not)`,\n      initial: \"\",\n    },\n    {\n      type: \"text\",\n      name: \"tailwindConfig\",\n      message: `Where is your ${highlighter.info(\n        \"tailwind.config.js\"\n      )} located?`,\n      initial: defaultConfig?.tailwind.config ?? DEFAULT_TAILWIND_CONFIG,\n    },\n    {\n      type: \"text\",\n      name: \"components\",\n      message: `Configure the import alias for ${highlighter.info(\n        \"components\"\n      )}:`,\n      initial: defaultConfig?.aliases[\"components\"] ?? DEFAULT_COMPONENTS,\n    },\n    {\n      type: \"text\",\n      name: \"utils\",\n      message: `Configure the import alias for ${highlighter.info(\"utils\")}:`,\n      initial: defaultConfig?.aliases[\"utils\"] ?? DEFAULT_UTILS,\n    },\n    {\n      type: \"toggle\",\n      name: \"rsc\",\n      message: `Are you using ${highlighter.info(\"React Server Components\")}?`,\n      initial: defaultConfig?.rsc ?? true,\n      active: \"yes\",\n      inactive: \"no\",\n    },\n  ])\n\n  if (!options.style) {\n    process.exit(1)\n  }\n\n  return rawConfigSchema.parse({\n    $schema: \"https://ui.shadcn.com/schema.json\",\n    style: options.style,\n    tailwind: {\n      config: options.tailwindConfig,\n      css: options.tailwindCss,\n      baseColor: options.tailwindBaseColor,\n      cssVariables: options.tailwindCssVariables,\n      prefix: options.tailwindPrefix,\n    },\n    rsc: options.rsc,\n    tsx: options.typescript,\n    aliases: {\n      utils: options.utils,\n      components: options.components,\n      // TODO: fix this.\n      lib: options.components.replace(/\\/components$/, \"lib\"),\n      hooks: options.components.replace(/\\/components$/, \"hooks\"),\n    },\n  })\n}\n\nasync function promptForMinimalConfig(\n  defaultConfig: Config,\n  opts: z.infer<typeof initOptionsSchema>\n) {\n  let style = defaultConfig.style\n  let baseColor = \"neutral\"\n  let cssVariables = defaultConfig.tailwind.cssVariables\n  let iconLibrary = defaultConfig.iconLibrary ?? \"lucide\"\n\n  if (!opts.defaults) {\n    const [styles, tailwindVersion] = await Promise.all([\n      getRegistryStyles(),\n      getProjectTailwindVersionFromConfig(defaultConfig),\n    ])\n\n    const options = await prompts([\n      {\n        // Skip style prompt if using Tailwind v4 or style is already set in config.\n        type: tailwindVersion === \"v4\" || style ? null : \"select\",\n        name: \"style\",\n        message: `Which ${highlighter.info(\"style\")} would you like to use?`,\n        choices: styles.map((style) => ({\n          title:\n            style.name === \"new-york\" ? \"New York (Recommended)\" : style.label,\n          value: style.name,\n        })),\n        initial: 0,\n      },\n    ])\n\n    style = options.style ?? style ?? \"new-york\"\n  }\n\n  // Always respect the explicit --css-variables / --no-css-variables flag.\n  cssVariables = opts.cssVariables\n\n  return rawConfigSchema.parse({\n    $schema: defaultConfig?.$schema,\n    style,\n    tailwind: {\n      ...defaultConfig?.tailwind,\n      baseColor,\n      cssVariables,\n    },\n    rsc: defaultConfig?.rsc,\n    tsx: defaultConfig?.tsx,\n    iconLibrary,\n    rtl: opts.rtl ?? defaultConfig?.rtl ?? false,\n    aliases: defaultConfig?.aliases,\n  })\n}\n\nasync function confirmBaseSwitch(existingStyle: string, resolvedBase: string) {\n  // Styles prefixed with \"base-\" use Base UI. Everything else is Radix.\n  const oldBase = existingStyle.startsWith(\"base-\") ? \"base\" : \"radix\"\n  if (resolvedBase === oldBase) return resolvedBase\n\n  logger.warn(\n    `  You are switching from ${highlighter.info(\n      oldBase\n    )} to ${highlighter.info(resolvedBase)}.`\n  )\n  logger.warn(\n    `  Components outside the ${highlighter.info(\n      \"ui\"\n    )} directory that depend on ${highlighter.info(\n      oldBase\n    )} primitives may need manual updates.`\n  )\n  logger.break()\n\n  const { proceed } = await prompts({\n    type: \"confirm\",\n    name: \"proceed\",\n    message: \"Would you like to continue?\",\n    initial: false,\n  })\n\n  return proceed ? resolvedBase : oldBase\n}\n"
  },
  {
    "path": "packages/shadcn/src/commands/mcp.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { server } from \"@/src/mcp\"\nimport { loadEnvFiles } from \"@/src/utils/env-loader\"\nimport { getConfig } from \"@/src/utils/get-config\"\nimport { getPackageManager } from \"@/src/utils/get-package-manager\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { updateDependencies } from \"@/src/utils/updaters/update-dependencies\"\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\"\nimport { Command } from \"commander\"\nimport deepmerge from \"deepmerge\"\nimport { execa } from \"execa\"\nimport fsExtra from \"fs-extra\"\nimport prompts from \"prompts\"\nimport z from \"zod\"\n\nconst SHADCN_MCP_VERSION = \"latest\"\n\nconst CLIENTS = [\n  {\n    name: \"claude\",\n    label: \"Claude Code\",\n    configPath: \".mcp.json\",\n    config: {\n      mcpServers: {\n        shadcn: {\n          command: \"npx\",\n          args: [`shadcn@${SHADCN_MCP_VERSION}`, \"mcp\"],\n        },\n      },\n    },\n  },\n  {\n    name: \"cursor\",\n    label: \"Cursor\",\n    configPath: \".cursor/mcp.json\",\n    config: {\n      mcpServers: {\n        shadcn: {\n          command: \"npx\",\n          args: [`shadcn@${SHADCN_MCP_VERSION}`, \"mcp\"],\n        },\n      },\n    },\n  },\n  {\n    name: \"vscode\",\n    label: \"VS Code\",\n    configPath: \".vscode/mcp.json\",\n    config: {\n      servers: {\n        shadcn: {\n          command: \"npx\",\n          args: [`shadcn@${SHADCN_MCP_VERSION}`, \"mcp\"],\n        },\n      },\n    },\n  },\n  {\n    name: \"codex\",\n    label: \"Codex\",\n    configPath: \".codex/config.toml\",\n    config: `[mcp_servers.shadcn]\ncommand = \"npx\"\nargs = [\"shadcn@${SHADCN_MCP_VERSION}\", \"mcp\"]\n`,\n  },\n  {\n    name: \"opencode\",\n    label: \"OpenCode\",\n    configPath: \"opencode.json\",\n    config: {\n      $schema: \"https://opencode.ai/config.json\",\n      mcp: {\n        shadcn: {\n          type: \"local\",\n          command: [\"npx\", `shadcn@${SHADCN_MCP_VERSION}`, \"mcp\"],\n          enabled: true,\n        },\n      },\n    },\n  },\n] as const\n\nconst DEPENDENCIES = [`shadcn@${SHADCN_MCP_VERSION}`]\n\nexport const mcp = new Command()\n  .name(\"mcp\")\n  .description(\"MCP server and configuration commands\")\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .action(async (options) => {\n    try {\n      await loadEnvFiles(options.cwd)\n      const transport = new StdioServerTransport()\n      await server.connect(transport)\n    } catch (error) {\n      logger.break()\n      handleError(error)\n    }\n  })\n\nconst mcpInitOptionsSchema = z.object({\n  client: z.enum([\"claude\", \"cursor\", \"vscode\", \"codex\", \"opencode\"]),\n  cwd: z.string(),\n})\n\nmcp\n  .command(\"init\")\n  .description(\"Initialize MCP configuration for your client\")\n  .option(\n    \"--client <client>\",\n    `MCP client (${CLIENTS.map((c) => c.name).join(\", \")})`\n  )\n  .action(async (opts, command) => {\n    try {\n      // Get the cwd from parent command.\n      const parentOpts = command.parent?.opts() || {}\n      const cwd = parentOpts.cwd || process.cwd()\n\n      let client = opts.client\n\n      if (!client) {\n        const response = await prompts({\n          type: \"select\",\n          name: \"client\",\n          message: \"Which MCP client are you using?\",\n          choices: CLIENTS.map((c) => ({\n            title: c.label,\n            value: c.name,\n          })),\n        })\n\n        if (!response.client) {\n          logger.break()\n          process.exit(1)\n        }\n\n        client = response.client\n      }\n\n      const options = mcpInitOptionsSchema.parse({\n        client,\n        cwd,\n      })\n\n      const config = await getConfig(options.cwd)\n\n      if (options.client === \"codex\") {\n        if (config) {\n          await updateDependencies([], DEPENDENCIES, config, {\n            silent: false,\n          })\n        } else {\n          const packageManager = await getPackageManager(options.cwd)\n          const installCommand = packageManager === \"npm\" ? \"install\" : \"add\"\n          const devFlag = packageManager === \"npm\" ? \"--save-dev\" : \"-D\"\n\n          const installSpinner = spinner(\"Installing dependencies...\").start()\n          await execa(\n            packageManager,\n            [installCommand, devFlag, ...DEPENDENCIES],\n            {\n              cwd: options.cwd,\n            }\n          )\n          installSpinner.succeed(\"Installing dependencies.\")\n        }\n\n        logger.break()\n        logger.log(\"To configure the shadcn MCP server in Codex:\")\n        logger.break()\n        logger.log(\n          `1. Open or create the file ${highlighter.info(\n            \"~/.codex/config.toml\"\n          )}`\n        )\n        logger.log(\"2. Add the following configuration:\")\n        logger.log()\n        logger.info(`[mcp_servers.shadcn]\ncommand = \"npx\"\nargs = [\"shadcn@${SHADCN_MCP_VERSION}\", \"mcp\"]`)\n        logger.break()\n        logger.info(\"3. Restart Codex to load the MCP server\")\n        logger.break()\n        process.exit(0)\n      }\n\n      const configSpinner = spinner(\"Configuring MCP server...\").start()\n      const configPath = await runMcpInit(options)\n      configSpinner.succeed(\"Configuring MCP server.\")\n\n      if (config) {\n        await updateDependencies([], DEPENDENCIES, config, {\n          silent: false,\n        })\n      } else {\n        const packageManager = await getPackageManager(options.cwd)\n        const installCommand = packageManager === \"npm\" ? \"install\" : \"add\"\n        const devFlag = packageManager === \"npm\" ? \"--save-dev\" : \"-D\"\n\n        const installSpinner = spinner(\"Installing dependencies...\").start()\n        await execa(\n          packageManager,\n          [installCommand, devFlag, ...DEPENDENCIES],\n          {\n            cwd: options.cwd,\n          }\n        )\n        installSpinner.succeed(\"Installing dependencies.\")\n      }\n\n      logger.break()\n      logger.success(`Configuration saved to ${configPath}.`)\n      logger.break()\n    } catch (error) {\n      handleError(error)\n    }\n  })\n\nconst overwriteMerge = (_: any[], sourceArray: any[]) => sourceArray\n\nasync function runMcpInit(options: z.infer<typeof mcpInitOptionsSchema>) {\n  const { client, cwd } = options\n\n  const clientInfo = CLIENTS.find((c) => c.name === client)\n  if (!clientInfo) {\n    throw new Error(\n      `Unknown client: ${client}. Available clients: ${CLIENTS.map(\n        (c) => c.name\n      ).join(\", \")}`\n    )\n  }\n\n  const configPath = path.join(cwd, clientInfo.configPath)\n  const dir = path.dirname(configPath)\n  await fsExtra.ensureDir(dir)\n\n  // Handle JSON format.\n  let existingConfig = {}\n  try {\n    const content = await fs.readFile(configPath, \"utf-8\")\n    existingConfig = JSON.parse(content)\n  } catch {}\n\n  const mergedConfig = deepmerge(\n    existingConfig,\n    clientInfo.config as Record<string, unknown>,\n    { arrayMerge: overwriteMerge }\n  )\n\n  await fs.writeFile(\n    configPath,\n    JSON.stringify(mergedConfig, null, 2) + \"\\n\",\n    \"utf-8\"\n  )\n\n  return clientInfo.configPath\n}\n"
  },
  {
    "path": "packages/shadcn/src/commands/migrate.ts",
    "content": "import path from \"path\"\nimport { migrateIcons } from \"@/src/migrations/migrate-icons\"\nimport { migrateRadix } from \"@/src/migrations/migrate-radix\"\nimport { migrateRtl } from \"@/src/migrations/migrate-rtl\"\nimport { preFlightMigrate } from \"@/src/preflights/preflight-migrate\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { logger } from \"@/src/utils/logger\"\nimport { Command } from \"commander\"\nimport { z } from \"zod\"\n\nexport const migrations = [\n  {\n    name: \"icons\",\n    description: \"migrate your ui components to a different icon library.\",\n  },\n  {\n    name: \"radix\",\n    description: \"migrate to radix-ui.\",\n  },\n  {\n    name: \"rtl\",\n    description: \"migrate your components to support RTL (right-to-left).\",\n  },\n] as const\n\nexport const migrateOptionsSchema = z.object({\n  cwd: z.string(),\n  list: z.boolean(),\n  yes: z.boolean(),\n  migration: z\n    .string()\n    .refine(\n      (value) =>\n        value && migrations.some((migration) => migration.name === value),\n      {\n        message:\n          \"You must specify a valid migration. Run `shadcn migrate --list` to see available migrations.\",\n      }\n    )\n    .optional(),\n  path: z.string().optional(),\n})\n\nexport const migrate = new Command()\n  .name(\"migrate\")\n  .description(\"run a migration.\")\n  .argument(\"[migration]\", \"the migration to run.\")\n  .argument(\"[path]\", \"optional path or glob pattern to migrate.\")\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .option(\"-l, --list\", \"list all migrations.\", false)\n  .option(\"-y, --yes\", \"skip confirmation prompt.\", false)\n  .action(async (migration, migratePath, opts) => {\n    try {\n      const options = migrateOptionsSchema.parse({\n        cwd: path.resolve(opts.cwd),\n        migration,\n        path: migratePath,\n        list: opts.list,\n        yes: opts.yes,\n      })\n\n      if (options.list || !options.migration) {\n        logger.info(\"Available migrations:\")\n        for (const migration of migrations) {\n          logger.info(`- ${migration.name}: ${migration.description}`)\n        }\n        return\n      }\n\n      if (!options.migration) {\n        throw new Error(\n          \"You must specify a migration. Run `shadcn migrate --list` to see available migrations.\"\n        )\n      }\n\n      let { errors, config } = await preFlightMigrate(options)\n\n      if (\n        errors[ERRORS.MISSING_DIR_OR_EMPTY_PROJECT] ||\n        errors[ERRORS.MISSING_CONFIG]\n      ) {\n        throw new Error(\n          \"No `components.json` file found. Ensure you are at the root of your project.\"\n        )\n      }\n\n      if (!config) {\n        throw new Error(\n          \"Something went wrong reading your `components.json` file. Please ensure you have a valid `components.json` file.\"\n        )\n      }\n\n      if (options.migration === \"icons\") {\n        await migrateIcons(config)\n      }\n\n      if (options.migration === \"radix\") {\n        await migrateRadix(config, { yes: options.yes, path: options.path })\n      }\n\n      if (options.migration === \"rtl\") {\n        await migrateRtl(config, { yes: options.yes, path: options.path })\n      }\n    } catch (error) {\n      logger.break()\n      handleError(error)\n    }\n  })\n"
  },
  {
    "path": "packages/shadcn/src/commands/registry/add.ts",
    "content": "import path from \"path\"\nimport { getRegistries } from \"@/src/registry/api\"\nimport { BUILTIN_REGISTRIES } from \"@/src/registry/constants\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { Command } from \"commander\"\nimport fs from \"fs-extra\"\nimport prompts from \"prompts\"\nimport { z } from \"zod\"\n\nconst addOptionsSchema = z.object({\n  cwd: z.string(),\n  silent: z.boolean(),\n})\n\nexport const add = new Command()\n  .name(\"add\")\n  .description(\"add registries to your project\")\n  .argument(\n    \"[registries...]\",\n    \"registries (@namespace) or registry URLs (@namespace=url)\"\n  )\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .option(\"-s, --silent\", \"mute output.\", false)\n  .action(async (registries: string[], opts) => {\n    try {\n      const options = addOptionsSchema.parse({\n        cwd: path.resolve(opts.cwd),\n        silent: opts.silent,\n      })\n\n      const registryArgs =\n        registries.length > 0\n          ? registries\n          : await promptForRegistries({ silent: options.silent })\n\n      await addRegistriesToConfig(registryArgs, options.cwd, {\n        silent: options.silent,\n      })\n    } catch (error) {\n      logger.break()\n      handleError(error)\n    }\n  })\n\nexport function parseRegistryArg(arg: string): {\n  namespace: string\n  url?: string\n} {\n  const [namespace, ...rest] = arg.split(\"=\")\n  const url = rest.length > 0 ? rest.join(\"=\") : undefined\n\n  if (!namespace.startsWith(\"@\")) {\n    throw new Error(\n      `Invalid registry namespace: ${highlighter.info(namespace)}. ` +\n        `Registry names must start with @ (e.g., @acme).`\n    )\n  }\n\n  return { namespace, url }\n}\n\nfunction pluralize(count: number, singular: string, plural: string) {\n  return `${count} ${count === 1 ? singular : plural}`\n}\n\nasync function addRegistriesToConfig(\n  registryArgs: string[],\n  cwd: string,\n  options: { silent?: boolean }\n) {\n  const configPath = path.resolve(cwd, \"components.json\")\n  if (!fs.existsSync(configPath)) {\n    throw new Error(\n      `No ${highlighter.info(\"components.json\")} found. Run ${highlighter.info(\n        \"shadcn init\"\n      )} first.`\n    )\n  }\n\n  const parsed = registryArgs.map(parseRegistryArg)\n  const needsLookup = parsed.filter((p) => !p.url)\n  let registriesIndex: { name: string; url: string }[] = []\n  if (needsLookup.length > 0) {\n    const fetchSpinner = spinner(\"Fetching registries.\", {\n      silent: options.silent,\n    }).start()\n    const registries = await getRegistries()\n    if (!registries) {\n      fetchSpinner.fail()\n      throw new Error(\"Failed to fetch registries.\")\n    }\n    fetchSpinner.succeed()\n    registriesIndex = registries\n  }\n\n  const registriesToAdd: Record<string, string> = {}\n  for (const { namespace, url } of parsed) {\n    if (namespace in BUILTIN_REGISTRIES) {\n      logger.warn(\n        `${highlighter.info(\n          namespace\n        )} is a built-in registry and cannot be added.`\n      )\n      continue\n    }\n\n    if (url) {\n      if (!url.includes(\"{name}\")) {\n        throw new Error(\n          `Invalid registry URL for ${highlighter.info(\n            namespace\n          )}. URL must include {name} placeholder. Example: ${highlighter.info(\n            `${namespace}=https://example.com/r/{name}.json`\n          )}`\n        )\n      }\n      registriesToAdd[namespace] = url\n    } else {\n      const registry = registriesIndex.find((r) => r.name === namespace)\n      if (!registry) {\n        throw new Error(\n          `Registry ${highlighter.info(namespace)} not found. ` +\n            `Provide a URL: ${highlighter.info(\n              `${namespace}=https://.../{name}.json`\n            )}`\n        )\n      }\n      registriesToAdd[namespace] = registry.url\n    }\n  }\n\n  if (Object.keys(registriesToAdd).length === 0) {\n    return { addedRegistries: [] }\n  }\n\n  const existingConfig = await fs.readJson(configPath)\n  const existingRegistries = existingConfig.registries || {}\n  const newRegistries: Record<string, string> = {}\n  const skipped: string[] = []\n  for (const [ns, url] of Object.entries(registriesToAdd)) {\n    if (existingRegistries[ns]) {\n      skipped.push(ns)\n    } else {\n      newRegistries[ns] = url\n    }\n  }\n\n  if (Object.keys(newRegistries).length === 0) {\n    if (skipped.length > 0 && !options.silent) {\n      spinner(\n        `Skipped ${pluralize(\n          skipped.length,\n          \"registry\",\n          \"registries\"\n        )}: (already configured)`,\n        { silent: options.silent }\n      )?.info()\n      for (const name of skipped) {\n        logger.log(`  - ${name}`)\n      }\n    } else if (!options.silent) {\n      logger.info(\"No new registries to add.\")\n    }\n    return\n  }\n\n  const updatedConfig = {\n    ...existingConfig,\n    registries: {\n      ...existingRegistries,\n      ...newRegistries,\n    },\n  }\n\n  const writeSpinner = spinner(\"Updating components.json.\", {\n    silent: options.silent,\n  }).start()\n  await fs.writeJson(configPath, updatedConfig, { spaces: 2 })\n  writeSpinner.succeed()\n\n  if (!options.silent) {\n    const newRegistryNames = Object.keys(newRegistries)\n    spinner(\n      `Added ${pluralize(newRegistryNames.length, \"registry\", \"registries\")}:`,\n      { silent: options.silent }\n    )?.succeed()\n    for (const name of newRegistryNames) {\n      logger.log(`  - ${name}`)\n    }\n\n    if (skipped.length > 0) {\n      spinner(\n        `Skipped ${pluralize(\n          skipped.length,\n          \"registry\",\n          \"registries\"\n        )}: (already configured)`,\n        { silent: options.silent }\n      )?.info()\n      for (const name of skipped) {\n        logger.log(`  - ${name}`)\n      }\n    }\n  }\n}\n\nasync function promptForRegistries(options: { silent?: boolean }) {\n  const fetchSpinner = spinner(\"Fetching registries.\", {\n    silent: options.silent,\n  }).start()\n  const registries = await getRegistries()\n  if (!registries) {\n    fetchSpinner.fail()\n    throw new Error(\"Failed to fetch registries.\")\n  }\n  fetchSpinner.succeed()\n\n  const sorted = [...registries].sort((a, b) => a.name.localeCompare(b.name))\n\n  const { selected } = await prompts({\n    type: \"autocompleteMultiselect\",\n    name: \"selected\",\n    message: \"Which registries would you like to add?\",\n    hint: \"Space to select. A to toggle all. Enter to submit.\",\n    instructions: false,\n    choices: sorted.map((r) => ({\n      title: r.name,\n      description: r.description,\n      value: r.name,\n    })),\n  })\n\n  if (!selected?.length) {\n    logger.warn(\"No registries selected. Exiting.\")\n    logger.info(\"\")\n    process.exit(1)\n  }\n\n  return selected as string[]\n}\n"
  },
  {
    "path": "packages/shadcn/src/commands/registry/build.ts",
    "content": "import * as fs from \"fs/promises\"\nimport * as path from \"path\"\nimport { preFlightRegistryBuild } from \"@/src/preflights/preflight-registry\"\nimport { SHADCN_URL } from \"@/src/registry/constants\"\nimport { recursivelyResolveFileImports } from \"@/src/registry/utils\"\nimport { configSchema, registryItemSchema, registrySchema } from \"@/src/schema\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport { getProjectInfo, ProjectInfo } from \"@/src/utils/get-project-info\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { Command } from \"commander\"\nimport { z } from \"zod\"\n\nexport const buildOptionsSchema = z.object({\n  cwd: z.string(),\n  registryFile: z.string(),\n  outputDir: z.string(),\n  verbose: z.boolean().optional().default(false),\n})\n\nexport const build = new Command()\n  .name(\"registry:build\")\n  .description(\"builds the registry [EXPERIMENTAL]\")\n  .argument(\"[registry]\", \"path to registry.json file\", \"./registry.json\")\n  .option(\n    \"-o, --output <path>\",\n    \"destination directory for json files\",\n    \"./public/r\"\n  )\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .option(\"-v, --verbose\", \"verbose output\")\n  .action(async (registry: string, opts) => {\n    await buildRegistry({\n      cwd: path.resolve(opts.cwd),\n      registryFile: registry,\n      outputDir: opts.output,\n      verbose: opts.verbose,\n    })\n  })\n\nasync function buildRegistry(opts: z.infer<typeof buildOptionsSchema>) {\n  try {\n    const options = buildOptionsSchema.parse(opts)\n\n    const [{ errors, resolvePaths, config }, projectInfo] = await Promise.all([\n      preFlightRegistryBuild(options),\n      getProjectInfo(options.cwd),\n    ])\n\n    if (errors[ERRORS.MISSING_CONFIG] || !config || !projectInfo) {\n      logger.error(\n        `A ${highlighter.info(\n          \"components.json\"\n        )} file is required to build the registry. Run ${highlighter.info(\n          \"shadcn init\"\n        )} to create one.`\n      )\n      logger.break()\n      process.exit(1)\n    }\n\n    if (errors[ERRORS.BUILD_MISSING_REGISTRY_FILE] || !resolvePaths) {\n      logger.error(\n        `We could not find a registry file at ${highlighter.info(\n          path.resolve(options.cwd, options.registryFile)\n        )}.`\n      )\n      logger.break()\n      process.exit(1)\n    }\n\n    const content = await fs.readFile(resolvePaths.registryFile, \"utf-8\")\n    const result = registrySchema.safeParse(JSON.parse(content))\n\n    if (!result.success) {\n      logger.error(\n        `Invalid registry file found at ${highlighter.info(\n          resolvePaths.registryFile\n        )}.`\n      )\n      logger.break()\n      process.exit(1)\n    }\n\n    const buildSpinner = spinner(\"Building registry...\")\n\n    // Recursively resolve the registry items.\n    const resolvedRegistry = await resolveRegistryItems(\n      result.data,\n      config,\n      projectInfo\n    )\n\n    // Loop through the registry items and remove duplicates files i.e same path.\n    for (const registryItem of resolvedRegistry.items) {\n      // Deduplicate files\n      registryItem.files = registryItem.files?.filter(\n        (file, index, self) =>\n          index === self.findIndex((t) => t.path === file.path)\n      )\n\n      // Deduplicate dependencies\n      if (registryItem.dependencies) {\n        registryItem.dependencies = registryItem.dependencies.filter(\n          (dep, index, self) => index === self.findIndex((d) => d === dep)\n        )\n      }\n    }\n\n    for (const registryItem of resolvedRegistry.items) {\n      if (!registryItem.files) {\n        continue\n      }\n\n      buildSpinner.start(`Building ${registryItem.name}...`)\n\n      // Add the schema to the registry item.\n      registryItem[\"$schema\"] =\n        \"https://ui.shadcn.com/schema/registry-item.json\"\n\n      for (const file of registryItem.files) {\n        const absPath = path.resolve(resolvePaths.cwd, file.path)\n        try {\n          const stat = await fs.stat(absPath)\n          if (!stat.isFile()) {\n            continue\n          }\n          file[\"content\"] = await fs.readFile(absPath, \"utf-8\")\n        } catch (err) {\n          console.error(\"Error reading file in registry build:\", absPath, err)\n          continue\n        }\n      }\n\n      const result = registryItemSchema.safeParse(registryItem)\n      if (!result.success) {\n        logger.error(\n          `Invalid registry item found for ${highlighter.info(\n            registryItem.name\n          )}.`\n        )\n        continue\n      }\n\n      // Write the registry item to the output directory.\n      await fs.writeFile(\n        path.resolve(resolvePaths.outputDir, `${result.data.name}.json`),\n        JSON.stringify(result.data, null, 2)\n      )\n    }\n\n    // Copy registry.json to the output directory.\n    await fs.copyFile(\n      resolvePaths.registryFile,\n      path.resolve(resolvePaths.outputDir, \"registry.json\")\n    )\n\n    buildSpinner.succeed(\"Building registry.\")\n\n    if (options.verbose) {\n      spinner(\n        `The registry has ${highlighter.info(\n          resolvedRegistry.items.length.toString()\n        )} items:`\n      ).succeed()\n      for (const item of resolvedRegistry.items) {\n        logger.log(`  - ${item.name} (${highlighter.info(item.type)})`)\n        for (const file of item.files ?? []) {\n          logger.log(`    - ${file.path}`)\n        }\n      }\n    }\n  } catch (error) {\n    logger.break()\n    handleError(error)\n  }\n}\n\n// This reads the registry and recursively resolves the file imports.\nasync function resolveRegistryItems(\n  registry: z.infer<typeof registrySchema>,\n  config: z.infer<typeof configSchema>,\n  projectInfo: ProjectInfo\n): Promise<z.infer<typeof registrySchema>> {\n  for (const item of registry.items) {\n    if (!item.files?.length) {\n      continue\n    }\n\n    // Process all files in the array instead of just the first one\n    for (const file of item.files) {\n      const results = await recursivelyResolveFileImports(\n        file.path,\n        config,\n        projectInfo\n      )\n\n      // Remove file from results.files\n      results.files = results.files?.filter((f) => f.path !== file.path)\n\n      if (results.files) {\n        item.files.push(...results.files)\n      }\n\n      if (results.dependencies) {\n        item.dependencies = item.dependencies\n          ? item.dependencies.concat(results.dependencies)\n          : results.dependencies\n      }\n    }\n  }\n\n  return registry\n}\n"
  },
  {
    "path": "packages/shadcn/src/commands/registry/index.ts",
    "content": "import { add } from \"@/src/commands/registry/add\"\nimport { Command } from \"commander\"\n\nexport const registry = new Command()\n  .name(\"registry\")\n  .description(\"manage registries\")\n  .addCommand(add)\n"
  },
  {
    "path": "packages/shadcn/src/commands/registry/mcp.ts",
    "content": "import { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { Command } from \"commander\"\n\nexport const mcp = new Command()\n  .name(\"registry:mcp\")\n  .description(\"starts the registry MCP server [DEPRECATED]\")\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .action(async () => {\n    logger.warn(\n      `The ${highlighter.info(\n        \"shadcn registry:mcp\"\n      )} command is deprecated. Use the ${highlighter.info(\n        \"shadcn mcp\"\n      )} command instead.`\n    )\n    logger.break()\n  })\n"
  },
  {
    "path": "packages/shadcn/src/commands/search.ts",
    "content": "import path from \"path\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport { clearRegistryContext } from \"@/src/registry/context\"\nimport { searchRegistries } from \"@/src/registry/search\"\nimport { validateRegistryConfigForItems } from \"@/src/registry/validator\"\nimport { rawConfigSchema } from \"@/src/schema\"\nimport { loadEnvFiles } from \"@/src/utils/env-loader\"\nimport { createConfig, getConfig } from \"@/src/utils/get-config\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { ensureRegistriesInConfig } from \"@/src/utils/registries\"\nimport { Command } from \"commander\"\nimport fsExtra from \"fs-extra\"\nimport { z } from \"zod\"\n\nconst searchOptionsSchema = z.object({\n  cwd: z.string(),\n  query: z.string().optional(),\n  limit: z.number().optional(),\n  offset: z.number().optional(),\n})\n\n// TODO: We're duplicating logic for shadowConfig here.\n// Revisit and properly abstract this.\n\nexport const search = new Command()\n  .name(\"search\")\n  .alias(\"list\")\n  .description(\"search items from registries\")\n  .argument(\n    \"<registries...>\",\n    \"the registry names or urls to search items from. Names must be prefixed with @.\"\n  )\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .option(\"-q, --query <query>\", \"query string\")\n  .option(\n    \"-l, --limit <number>\",\n    \"maximum number of items to display per registry\",\n    \"100\"\n  )\n  .option(\"-o, --offset <number>\", \"number of items to skip\", \"0\")\n  .action(async (registries: string[], opts) => {\n    try {\n      const options = searchOptionsSchema.parse({\n        cwd: path.resolve(opts.cwd),\n        query: opts.query,\n        limit: opts.limit ? parseInt(opts.limit, 10) : undefined,\n        offset: opts.offset ? parseInt(opts.offset, 10) : undefined,\n      })\n\n      await loadEnvFiles(options.cwd)\n\n      // Start with a shadow config to support partial components.json.\n      // Use createConfig to get proper default paths\n      const defaultConfig = createConfig({\n        style: \"new-york\",\n        resolvedPaths: {\n          cwd: options.cwd,\n        },\n      })\n      let shadowConfig = configWithDefaults(defaultConfig)\n\n      // Check if there's a components.json file (partial or complete).\n      const componentsJsonPath = path.resolve(options.cwd, \"components.json\")\n      if (fsExtra.existsSync(componentsJsonPath)) {\n        const existingConfig = await fsExtra.readJson(componentsJsonPath)\n        const partialConfig = rawConfigSchema.partial().parse(existingConfig)\n        shadowConfig = configWithDefaults({\n          ...defaultConfig,\n          ...partialConfig,\n        })\n      }\n\n      // Try to get the full config, but fall back to shadow config if it fails.\n      let config = shadowConfig\n      try {\n        const fullConfig = await getConfig(options.cwd)\n        if (fullConfig) {\n          config = configWithDefaults(fullConfig)\n        }\n      } catch {\n        // Use shadow config if getConfig fails (partial components.json).\n      }\n\n      const { config: updatedConfig, newRegistries } =\n        await ensureRegistriesInConfig(\n          registries.map((registry) => `${registry}/registry`),\n          config,\n          {\n            silent: true,\n            writeFile: false,\n          }\n        )\n      if (newRegistries.length > 0) {\n        config.registries = updatedConfig.registries\n      }\n\n      // Validate registries early for better error messages.\n      validateRegistryConfigForItems(registries, config)\n\n      // Use searchRegistries for both search and non-search cases\n      const results = await searchRegistries(registries as `@${string}`[], {\n        query: options.query,\n        limit: options.limit,\n        offset: options.offset,\n        config,\n      })\n\n      console.log(JSON.stringify(results, null, 2))\n      process.exit(0)\n    } catch (error) {\n      handleError(error)\n    } finally {\n      clearRegistryContext()\n    }\n  })\n"
  },
  {
    "path": "packages/shadcn/src/commands/view.ts",
    "content": "import path from \"path\"\nimport { getRegistryItems } from \"@/src/registry/api\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport { clearRegistryContext } from \"@/src/registry/context\"\nimport { validateRegistryConfigForItems } from \"@/src/registry/validator\"\nimport { rawConfigSchema } from \"@/src/schema\"\nimport { loadEnvFiles } from \"@/src/utils/env-loader\"\nimport { getConfig } from \"@/src/utils/get-config\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { ensureRegistriesInConfig } from \"@/src/utils/registries\"\nimport { Command } from \"commander\"\nimport fsExtra from \"fs-extra\"\nimport { z } from \"zod\"\n\nconst viewOptionsSchema = z.object({\n  cwd: z.string(),\n})\n\nexport const view = new Command()\n  .name(\"view\")\n  .description(\"view items from the registry\")\n  .argument(\"<items...>\", \"the item names or URLs to view\")\n  .option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n    process.cwd()\n  )\n  .action(async (items: string[], opts) => {\n    try {\n      const options = viewOptionsSchema.parse({\n        cwd: path.resolve(opts.cwd),\n      })\n\n      await loadEnvFiles(options.cwd)\n\n      // Start with a shadow config to support partial components.json.\n      let shadowConfig = configWithDefaults({})\n\n      // Check if there's a components.json file (partial or complete).\n      const componentsJsonPath = path.resolve(options.cwd, \"components.json\")\n      if (fsExtra.existsSync(componentsJsonPath)) {\n        const existingConfig = await fsExtra.readJson(componentsJsonPath)\n        const partialConfig = rawConfigSchema.partial().parse(existingConfig)\n        shadowConfig = configWithDefaults(partialConfig)\n      }\n\n      // Try to get the full config, but fall back to shadow config if it fails.\n      let config = shadowConfig\n      try {\n        const fullConfig = await getConfig(options.cwd)\n        if (fullConfig) {\n          config = configWithDefaults(fullConfig)\n        }\n      } catch {\n        // Use shadow config if getConfig fails (partial components.json).\n      }\n\n      const { config: updatedConfig, newRegistries } =\n        await ensureRegistriesInConfig(items, config, {\n          silent: true,\n          writeFile: false,\n        })\n      if (newRegistries.length > 0) {\n        config.registries = updatedConfig.registries\n      }\n\n      // Validate registries early for better error messages.\n      validateRegistryConfigForItems(items, config)\n\n      const payload = await getRegistryItems(items, { config })\n      console.log(JSON.stringify(payload, null, 2))\n      process.exit(0)\n    } catch (error) {\n      handleError(error)\n    } finally {\n      clearRegistryContext()\n    }\n  })\n"
  },
  {
    "path": "packages/shadcn/src/icons/index.ts",
    "content": "export * from \"./libraries\"\n"
  },
  {
    "path": "packages/shadcn/src/icons/libraries.ts",
    "content": "export const iconLibraries = {\n  lucide: {\n    name: \"lucide\",\n    title: \"Lucide\",\n    packages: [\"lucide-react\"],\n    import: \"import { ICON } from 'lucide-react'\",\n    usage: \"<ICON />\",\n    export: \"lucide-react\",\n  },\n  tabler: {\n    name: \"tabler\",\n    title: \"Tabler Icons\",\n    packages: [\"@tabler/icons-react\"],\n    import: \"import { ICON } from '@tabler/icons-react'\",\n    usage: \"<ICON />\",\n    export: \"@tabler/icons-react\",\n  },\n  hugeicons: {\n    name: \"hugeicons\",\n    title: \"HugeIcons\",\n    packages: [\"@hugeicons/react\", \"@hugeicons/core-free-icons\"],\n    import:\n      \"import { HugeiconsIcon } from '@hugeicons/react'\\nimport { ICON } from '@hugeicons/core-free-icons';\",\n    usage: \"<HugeiconsIcon icon={ICON} strokeWidth={2} />\",\n    export: \"@hugeicons/core-free-icons\",\n  },\n  phosphor: {\n    name: \"phosphor\",\n    title: \"Phosphor Icons\",\n    packages: [\"@phosphor-icons/react\"],\n    import: \"import { ICON } from '@phosphor-icons/react'\",\n    usage: \"<ICON strokeWidth={2} />\",\n    export: \"@phosphor-icons/react\",\n  },\n  remixicon: {\n    name: \"remixicon\",\n    title: \"Remix Icon\",\n    packages: [\"@remixicon/react\"],\n    import: \"import { ICON } from '@remixicon/react'\",\n    usage: \"<ICON />\",\n    export: \"@remixicon/react\",\n  },\n} as const\n\nexport type IconLibraries = typeof iconLibraries\n\nexport type IconLibrary = IconLibraries[keyof IconLibraries]\n\nexport type IconLibraryName = keyof IconLibraries\n"
  },
  {
    "path": "packages/shadcn/src/index.ts",
    "content": "#!/usr/bin/env node\nimport { add } from \"@/src/commands/add\"\nimport { build } from \"@/src/commands/build\"\nimport { diff } from \"@/src/commands/diff\"\nimport { docs } from \"@/src/commands/docs\"\nimport { info } from \"@/src/commands/info\"\nimport { init } from \"@/src/commands/init\"\nimport { mcp } from \"@/src/commands/mcp\"\nimport { migrate } from \"@/src/commands/migrate\"\nimport { registry } from \"@/src/commands/registry\"\nimport { search } from \"@/src/commands/search\"\nimport { view } from \"@/src/commands/view\"\nimport { Command } from \"commander\"\n\nimport packageJson from \"../package.json\"\n\nprocess.on(\"SIGINT\", () => process.exit(0))\nprocess.on(\"SIGTERM\", () => process.exit(0))\n\nasync function main() {\n  const program = new Command()\n    .name(\"shadcn\")\n    .description(\"build your component library\")\n    .version(\n      packageJson.version || \"1.0.0\",\n      \"-v, --version\",\n      \"display the version number\"\n    )\n\n  program\n    .addCommand(init)\n    .addCommand(add)\n    .addCommand(diff)\n    .addCommand(docs)\n    .addCommand(view)\n    .addCommand(search)\n    .addCommand(migrate)\n    .addCommand(info)\n    .addCommand(build)\n    .addCommand(mcp)\n    .addCommand(registry)\n\n  program.parse()\n}\n\nmain()\n\nexport * from \"./registry/api\"\n"
  },
  {
    "path": "packages/shadcn/src/mcp/index.ts",
    "content": "import { getRegistryItems, searchRegistries } from \"@/src/registry\"\nimport { RegistryError } from \"@/src/registry/errors\"\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\"\nimport {\n  CallToolRequestSchema,\n  ListToolsRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\"\nimport dedent from \"dedent\"\nimport { z } from \"zod\"\nimport { zodToJsonSchema } from \"zod-to-json-schema\"\n\nimport {\n  formatItemExamples,\n  formatRegistryItems,\n  formatSearchResultsWithPagination,\n  getMcpConfig,\n  npxShadcn,\n} from \"./utils\"\n\nexport const server = new Server(\n  {\n    name: \"shadcn\",\n    version: \"1.0.0\",\n  },\n  {\n    capabilities: {\n      resources: {},\n      tools: {},\n    },\n  }\n)\n\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\n  return {\n    tools: [\n      {\n        name: \"get_project_registries\",\n        description:\n          \"Get configured registry names from components.json - Returns error if no components.json exists (use init_project to create one)\",\n        inputSchema: zodToJsonSchema(z.object({})),\n      },\n      {\n        name: \"list_items_in_registries\",\n        description:\n          \"List items from registries (requires components.json - use init_project if missing)\",\n        inputSchema: zodToJsonSchema(\n          z.object({\n            registries: z\n              .array(z.string())\n              .describe(\n                \"Array of registry names to search (e.g., ['@shadcn', '@acme'])\"\n              ),\n            limit: z\n              .number()\n              .optional()\n              .describe(\"Maximum number of items to return\"),\n            offset: z\n              .number()\n              .optional()\n              .describe(\"Number of items to skip for pagination\"),\n          })\n        ),\n      },\n      {\n        name: \"search_items_in_registries\",\n        description:\n          \"Search for components in registries using fuzzy matching (requires components.json). After finding an item, use get_item_examples_from_registries to see usage examples.\",\n        inputSchema: zodToJsonSchema(\n          z.object({\n            registries: z\n              .array(z.string())\n              .describe(\n                \"Array of registry names to search (e.g., ['@shadcn', '@acme'])\"\n              ),\n            query: z\n              .string()\n              .describe(\n                \"Search query string for fuzzy matching against item names and descriptions\"\n              ),\n            limit: z\n              .number()\n              .optional()\n              .describe(\"Maximum number of items to return\"),\n            offset: z\n              .number()\n              .optional()\n              .describe(\"Number of items to skip for pagination\"),\n          })\n        ),\n      },\n      {\n        name: \"view_items_in_registries\",\n        description:\n          \"View detailed information about specific registry items including the name, description, type and files content. For usage examples, use get_item_examples_from_registries instead.\",\n        inputSchema: zodToJsonSchema(\n          z.object({\n            items: z\n              .array(z.string())\n              .describe(\n                \"Array of item names with registry prefix (e.g., ['@shadcn/button', '@shadcn/card'])\"\n              ),\n          })\n        ),\n      },\n      {\n        name: \"get_item_examples_from_registries\",\n        description:\n          \"Find usage examples and demos with their complete code. Search for patterns like 'accordion-demo', 'button example', 'card-demo', etc. Returns full implementation code with dependencies.\",\n        inputSchema: zodToJsonSchema(\n          z.object({\n            registries: z\n              .array(z.string())\n              .describe(\n                \"Array of registry names to search (e.g., ['@shadcn', '@acme'])\"\n              ),\n            query: z\n              .string()\n              .describe(\n                \"Search query for examples (e.g., 'accordion-demo', 'button demo', 'card example', 'tooltip-demo', 'example-booking-form', 'example-hero'). Common patterns: '{item-name}-demo', '{item-name} example', 'example {item-name}'\"\n              ),\n          })\n        ),\n      },\n      {\n        name: \"get_add_command_for_items\",\n        description:\n          \"Get the shadcn CLI add command for specific items in a registry. This is useful for adding one or more components to your project.\",\n        inputSchema: zodToJsonSchema(\n          z.object({\n            items: z\n              .array(z.string())\n              .describe(\n                \"Array of items to get the add command for prefixed with the registry name (e.g., ['@shadcn/button', '@shadcn/card'])\"\n              ),\n          })\n        ),\n      },\n      {\n        name: \"get_audit_checklist\",\n        description:\n          \"After creating new components or generating new code files, use this tool for a quick checklist to verify that everything is working as expected. Make sure to run the tool after all required steps have been completed.\",\n        inputSchema: zodToJsonSchema(z.object({})),\n      },\n    ],\n  }\n})\n\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n  try {\n    if (!request.params.arguments) {\n      throw new Error(\"No tool arguments provided.\")\n    }\n\n    switch (request.params.name) {\n      case \"get_project_registries\": {\n        const config = await getMcpConfig(process.cwd())\n\n        if (!config?.registries) {\n          return {\n            content: [\n              {\n                type: \"text\",\n                text: dedent`No components.json found or no registries configured.\n\n                To fix this:\n                1. Use the \\`init\\` command to create a components.json file\n                2. Or manually create components.json with a registries section`,\n              },\n            ],\n          }\n        }\n\n        return {\n          content: [\n            {\n              type: \"text\",\n              text: dedent`The following registries are configured in the current project:\n\n                ${Object.keys(config.registries)\n                  .map((registry) => `- ${registry}`)\n                  .join(\"\\n\")}\n\n                You can view the items in a registry by running:\n                \\`${await npxShadcn(\"view @name-of-registry\")}\\`\n\n                For example: \\`${await npxShadcn(\n                  \"view @shadcn\"\n                )}\\` or \\`${await npxShadcn(\n                  \"view @shadcn @acme\"\n                )}\\` to view multiple registries.\n                `,\n            },\n          ],\n        }\n      }\n\n      case \"search_items_in_registries\": {\n        const inputSchema = z.object({\n          registries: z.array(z.string()),\n          query: z.string(),\n          limit: z.number().optional(),\n          offset: z.number().optional(),\n        })\n\n        const args = inputSchema.parse(request.params.arguments)\n        const results = await searchRegistries(args.registries, {\n          query: args.query,\n          limit: args.limit,\n          offset: args.offset,\n          config: await getMcpConfig(process.cwd()),\n          useCache: false,\n        })\n\n        if (results.items.length === 0) {\n          return {\n            content: [\n              {\n                type: \"text\",\n                text: dedent`No items found matching \"${\n                  args.query\n                }\" in registries ${args.registries.join(\n                  \", \"\n                )}, Try searching with a different query or registry.`,\n              },\n            ],\n          }\n        }\n\n        return {\n          content: [\n            {\n              type: \"text\",\n              text: formatSearchResultsWithPagination(results, {\n                query: args.query,\n                registries: args.registries,\n              }),\n            },\n          ],\n        }\n      }\n\n      case \"list_items_in_registries\": {\n        const inputSchema = z.object({\n          registries: z.array(z.string()),\n          limit: z.number().optional(),\n          offset: z.number().optional(),\n          cwd: z.string().optional(),\n        })\n\n        const args = inputSchema.parse(request.params.arguments)\n        const results = await searchRegistries(args.registries, {\n          limit: args.limit,\n          offset: args.offset,\n          config: await getMcpConfig(process.cwd()),\n          useCache: false,\n        })\n\n        if (results.items.length === 0) {\n          return {\n            content: [\n              {\n                type: \"text\",\n                text: dedent`No items found in registries ${args.registries.join(\n                  \", \"\n                )}.`,\n              },\n            ],\n          }\n        }\n\n        return {\n          content: [\n            {\n              type: \"text\",\n              text: formatSearchResultsWithPagination(results, {\n                registries: args.registries,\n              }),\n            },\n          ],\n        }\n      }\n\n      case \"view_items_in_registries\": {\n        const inputSchema = z.object({\n          items: z.array(z.string()),\n        })\n\n        const args = inputSchema.parse(request.params.arguments)\n        const registryItems = await getRegistryItems(args.items, {\n          config: await getMcpConfig(process.cwd()),\n          useCache: false,\n        })\n\n        if (registryItems?.length === 0) {\n          return {\n            content: [\n              {\n                type: \"text\",\n                text: dedent`No items found for: ${args.items.join(\", \")}\n\n                Make sure the item names are correct and include the registry prefix (e.g., @shadcn/button).`,\n              },\n            ],\n          }\n        }\n\n        const formattedItems = formatRegistryItems(registryItems)\n\n        return {\n          content: [\n            {\n              type: \"text\",\n              text: dedent`Item Details:\n\n              ${formattedItems.join(\"\\n\\n---\\n\\n\")}`,\n            },\n          ],\n        }\n      }\n\n      case \"get_item_examples_from_registries\": {\n        const inputSchema = z.object({\n          query: z.string(),\n          registries: z.array(z.string()),\n        })\n\n        const args = inputSchema.parse(request.params.arguments)\n        const config = await getMcpConfig()\n\n        const results = await searchRegistries(args.registries, {\n          query: args.query,\n          config,\n          useCache: false,\n        })\n\n        if (results.items.length === 0) {\n          return {\n            content: [\n              {\n                type: \"text\",\n                text: dedent`No examples found for query \"${args.query}\".\n\n                Try searching with patterns like:\n                - \"accordion-demo\" for accordion examples\n                - \"button demo\" or \"button example\"\n                - Component name followed by \"-demo\" or \"example\"\n\n                You can also:\n                1. Use search_items_in_registries to find all items matching your query\n                2. View the main component with view_items_in_registries for inline usage documentation`,\n              },\n            ],\n          }\n        }\n\n        const itemNames = results.items.map((item) => item.addCommandArgument)\n        const fullItems = await getRegistryItems(itemNames, {\n          config,\n          useCache: false,\n        })\n\n        return {\n          content: [\n            {\n              type: \"text\",\n              text: formatItemExamples(fullItems, args.query),\n            },\n          ],\n        }\n      }\n\n      case \"get_add_command_for_items\": {\n        const args = z\n          .object({\n            items: z.array(z.string()),\n          })\n          .parse(request.params.arguments)\n\n        return {\n          content: [\n            {\n              type: \"text\",\n              text: await npxShadcn(`add ${args.items.join(\" \")}`),\n            },\n          ],\n        }\n      }\n\n      case \"get_audit_checklist\": {\n        return {\n          content: [\n            {\n              type: \"text\",\n              text: dedent`## Component Audit Checklist\n\n              After adding or generating components, check the following common issues:\n\n              - [ ] Ensure imports are correct i.e named vs default imports\n              - [ ] If using next/image, ensure images.remotePatterns next.config.js is configured correctly.\n              - [ ] Ensure all dependencies are installed.\n              - [ ] Check for linting errors or warnings\n              - [ ] Check for TypeScript errors\n              - [ ] Use the Playwright MCP if available.\n              `,\n            },\n          ],\n        }\n      }\n\n      default:\n        throw new Error(`Tool ${request.params.name} not found`)\n    }\n  } catch (error) {\n    if (error instanceof z.ZodError) {\n      return {\n        content: [\n          {\n            type: \"text\",\n            text: dedent`Invalid input parameters:\n              ${error.errors\n                .map((e) => `- ${e.path.join(\".\")}: ${e.message}`)\n                .join(\"\\n\")}\n              `,\n          },\n        ],\n        isError: true,\n      }\n    }\n\n    if (error instanceof RegistryError) {\n      let errorMessage = error.message\n\n      if (error.suggestion) {\n        errorMessage += `\\n\\n💡 ${error.suggestion}`\n      }\n\n      if (error.context) {\n        errorMessage += `\\n\\nContext: ${JSON.stringify(error.context, null, 2)}`\n      }\n\n      return {\n        content: [\n          {\n            type: \"text\",\n            text: dedent`Error (${error.code}): ${errorMessage}`,\n          },\n        ],\n        isError: true,\n      }\n    }\n\n    const errorMessage = error instanceof Error ? error.message : String(error)\n    return {\n      content: [\n        {\n          type: \"text\",\n          text: dedent`Error: ${errorMessage}`,\n        },\n      ],\n      isError: true,\n    }\n  }\n})\n"
  },
  {
    "path": "packages/shadcn/src/mcp/utils.ts",
    "content": "import { getRegistriesConfig } from \"@/src/registry/api\"\nimport { registryItemSchema, searchResultsSchema } from \"@/src/schema\"\nimport { getPackageRunner } from \"@/src/utils/get-package-manager\"\nimport { z } from \"zod\"\n\nconst SHADCN_CLI_COMMAND = \"shadcn@latest\"\n\nexport async function npxShadcn(command: string) {\n  const packageRunner = await getPackageRunner(process.cwd())\n  return `${packageRunner} ${SHADCN_CLI_COMMAND} ${command}`\n}\n\nexport async function getMcpConfig(cwd = process.cwd()) {\n  const config = await getRegistriesConfig(cwd, {\n    useCache: false,\n  })\n\n  return {\n    registries: config.registries,\n  }\n}\n\nexport function formatSearchResultsWithPagination(\n  results: z.infer<typeof searchResultsSchema>,\n  options?: {\n    query?: string\n    registries?: string[]\n  }\n) {\n  const { query, registries } = options || {}\n\n  const formattedItems = results.items.map((item) => {\n    const parts: string[] = [`- ${item.name}`]\n\n    if (item.type) {\n      parts.push(`(${item.type})`)\n    }\n\n    if (item.description) {\n      parts.push(`- ${item.description}`)\n    }\n\n    if (item.registry) {\n      parts.push(`[${item.registry}]`)\n    }\n\n    parts.push(\n      `\\n  Add command: \\`${npxShadcn(`add ${item.addCommandArgument}`)}\\``\n    )\n\n    return parts.join(\" \")\n  })\n\n  let header = `Found ${results.pagination.total} items`\n  if (query) {\n    header += ` matching \"${query}\"`\n  }\n  if (registries && registries.length > 0) {\n    header += ` in registries ${registries.join(\", \")}`\n  }\n  header += \":\"\n\n  const showingRange = `Showing items ${\n    results.pagination.offset + 1\n  }-${Math.min(\n    results.pagination.offset + results.pagination.limit,\n    results.pagination.total\n  )} of ${results.pagination.total}:`\n\n  let output = `${header}\\n\\n${showingRange}\\n\\n${formattedItems.join(\"\\n\\n\")}`\n\n  if (results.pagination.hasMore) {\n    output += `\\n\\nMore items available. Use offset: ${\n      results.pagination.offset + results.pagination.limit\n    } to see the next page.`\n  }\n\n  return output\n}\n\nexport function formatRegistryItems(\n  items: z.infer<typeof registryItemSchema>[]\n) {\n  return items.map((item) => {\n    const parts: string[] = [\n      `## ${item.name}`,\n      item.description ? `\\n${item.description}\\n` : \"\",\n      item.type ? `**Type:** ${item.type}` : \"\",\n      item.files && item.files.length > 0\n        ? `**Files:** ${item.files.length} file(s)`\n        : \"\",\n      item.dependencies && item.dependencies.length > 0\n        ? `**Dependencies:** ${item.dependencies.join(\", \")}`\n        : \"\",\n      item.devDependencies && item.devDependencies.length > 0\n        ? `**Dev Dependencies:** ${item.devDependencies.join(\", \")}`\n        : \"\",\n    ]\n    return parts.filter(Boolean).join(\"\\n\")\n  })\n}\n\nexport function formatItemExamples(\n  items: z.infer<typeof registryItemSchema>[],\n  query: string\n) {\n  const sections = items.map((item) => {\n    const parts: string[] = [\n      `## Example: ${item.name}`,\n      item.description ? `\\n${item.description}\\n` : \"\",\n    ]\n\n    if (item.files?.length) {\n      item.files.forEach((file) => {\n        if (file.content) {\n          parts.push(`### Code (${file.path}):\\n`)\n          parts.push(\"```tsx\")\n          parts.push(file.content)\n          parts.push(\"```\")\n        }\n      })\n    }\n\n    return parts.filter(Boolean).join(\"\\n\")\n  })\n\n  const header = `# Usage Examples\\n\\nFound ${items.length} example${\n    items.length > 1 ? \"s\" : \"\"\n  } matching \"${query}\":\\n`\n\n  return header + sections.join(\"\\n\\n---\\n\\n\")\n}\n"
  },
  {
    "path": "packages/shadcn/src/migrations/migrate-icons.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport { migrateIconsFile } from \"./migrate-icons\"\n\ndescribe(\"migrateIconsFile\", () => {\n  it(\"should replace radix icons with lucide icons\", async () => {\n    const input = `\n      import { CheckIcon, CloseIcon } from \"@radix-ui/react-icons\"\n      import { Something } from \"other-package\"\n\n      export function Component() {\n        return (\n          <div>\n            <CheckIcon className=\"w-4 h-4\" />\n            <CloseIcon />\n          </div>\n        )\n      }`\n\n    expect(\n      await migrateIconsFile(input, \"radix\", \"lucide\", {\n        Check: {\n          lucide: \"Check\",\n          radix: \"CheckIcon\",\n        },\n        X: {\n          lucide: \"X\",\n          radix: \"CloseIcon\",\n        },\n      })\n    ).toMatchInlineSnapshot(`\n      \"import { Something } from \"other-package\"\n      import { Check, X } from \"lucide-react\";\n\n            export function Component() {\n              return (\n                <div>\n                  <Check className=\"w-4 h-4\" />\n                  <X />\n                </div>\n              )\n            }\"\n    `)\n  })\n\n  it(\"should return null if no radix icons are found\", async () => {\n    const input = `\n      import { Something } from \"other-package\"\n\n      export function Component() {\n        return <div>No icons here</div>\n      }`\n\n    expect(await migrateIconsFile(input, \"lucide\", \"radix\", {}))\n      .toMatchInlineSnapshot(`\n      \"import { Something } from \"other-package\"\n\n            export function Component() {\n              return <div>No icons here</div>\n            }\"\n    `)\n  })\n\n  it(\"should handle mixed icon imports from different packages\", async () => {\n    const input = `\n      import { CheckIcon } from \"@radix-ui/react-icons\"\n      import { AlertCircle } from \"lucide-react\"\n      import { Something } from \"other-package\"\n      import { Cross2Icon } from \"@radix-ui/react-icons\"\n\n      export function Component() {\n        return (\n          <div>\n            <CheckIcon className=\"w-4 h-4\" />\n            <AlertCircle />\n            <Cross2Icon />\n          </div>\n        )\n      }`\n\n    expect(\n      await migrateIconsFile(input, \"radix\", \"lucide\", {\n        Check: {\n          lucide: \"Check\",\n          radix: \"CheckIcon\",\n        },\n        X: {\n          lucide: \"X\",\n          radix: \"Cross2Icon\",\n        },\n      })\n    ).toMatchInlineSnapshot(`\n      \"import { AlertCircle } from \"lucide-react\"\n            import { Something } from \"other-package\"\n      import { Check, X } from \"lucide-react\";\n\n            export function Component() {\n              return (\n                <div>\n                  <Check className=\"w-4 h-4\" />\n                  <AlertCircle />\n                  <X />\n                </div>\n              )\n            }\"\n    `)\n  })\n\n  it(\"should preserve all props and children on icons\", async () => {\n    const input = `\n      import { CheckIcon, Cross2Icon } from \"@radix-ui/react-icons\"\n\n      export function Component() {\n        return (\n          <div>\n            <CheckIcon\n              className=\"w-4 h-4\"\n              onClick={handleClick}\n              data-testid=\"check-icon\"\n            >\n              <span>Child content</span>\n            </CheckIcon>\n            <Cross2Icon style={{ color: 'red' }} aria-label=\"Close\" />\n          </div>\n        )\n      }`\n\n    expect(\n      await migrateIconsFile(input, \"radix\", \"lucide\", {\n        Check: {\n          lucide: \"Check\",\n          radix: \"CheckIcon\",\n        },\n        X: {\n          lucide: \"X\",\n          radix: \"Cross2Icon\",\n        },\n      })\n    ).toMatchInlineSnapshot(`\n      \"import { Check, X } from \"lucide-react\";\n\n                  export function Component() {\n              return (\n                <div>\n                  <CheckIcon\n                    className=\"w-4 h-4\"\n                    onClick={handleClick}\n                    data-testid=\"check-icon\"\n                  >\n                    <span>Child content</span>\n                  </CheckIcon>\n                  <X style={{ color: 'red' }} aria-label=\"Close\" />\n                </div>\n              )\n            }\"\n    `)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/migrations/migrate-icons.ts",
    "content": "import { randomBytes } from \"crypto\"\nimport { promises as fs } from \"fs\"\nimport { tmpdir } from \"os\"\nimport path from \"path\"\nimport { getRegistryIcons } from \"@/src/registry/api\"\nimport { iconsSchema } from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { LEGACY_ICON_LIBRARIES } from \"@/src/utils/legacy-icon-libraries\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { updateDependencies } from \"@/src/utils/updaters/update-dependencies\"\nimport fg from \"fast-glob\"\nimport prompts from \"prompts\"\nimport { Project, ScriptKind, SyntaxKind } from \"ts-morph\"\nimport { z } from \"zod\"\n\nexport async function migrateIcons(config: Config) {\n  if (!config.resolvedPaths.ui) {\n    throw new Error(\n      \"We could not find a valid `ui` path in your `components.json` file. Please ensure you have a valid `ui` path in your `components.json` file.\"\n    )\n  }\n\n  const uiPath = config.resolvedPaths.ui\n  const [files, registryIcons] = await Promise.all([\n    fg(\"**/*.{js,ts,jsx,tsx}\", {\n      cwd: uiPath,\n    }),\n    getRegistryIcons(),\n  ])\n\n  if (Object.keys(registryIcons).length === 0) {\n    throw new Error(\"Something went wrong fetching the registry icons.\")\n  }\n\n  const libraryChoices = Object.entries(LEGACY_ICON_LIBRARIES).map(\n    ([name, iconLibrary]) => ({\n      title: iconLibrary.name,\n      value: name,\n    })\n  )\n\n  const migrateOptions = await prompts([\n    {\n      type: \"select\",\n      name: \"sourceLibrary\",\n      message: `Which icon library would you like to ${highlighter.info(\n        \"migrate from\"\n      )}?`,\n      choices: libraryChoices,\n    },\n    {\n      type: \"select\",\n      name: \"targetLibrary\",\n      message: `Which icon library would you like to ${highlighter.info(\n        \"migrate to\"\n      )}?`,\n      choices: libraryChoices,\n    },\n  ])\n\n  if (migrateOptions.sourceLibrary === migrateOptions.targetLibrary) {\n    throw new Error(\n      \"You cannot migrate to the same icon library. Please choose a different icon library.\"\n    )\n  }\n\n  if (\n    !(\n      migrateOptions.sourceLibrary in LEGACY_ICON_LIBRARIES &&\n      migrateOptions.targetLibrary in LEGACY_ICON_LIBRARIES\n    )\n  ) {\n    throw new Error(\"Invalid icon library. Please choose a valid icon library.\")\n  }\n\n  const sourceLibrary =\n    LEGACY_ICON_LIBRARIES[\n      migrateOptions.sourceLibrary as keyof typeof LEGACY_ICON_LIBRARIES\n    ]\n  const targetLibrary =\n    LEGACY_ICON_LIBRARIES[\n      migrateOptions.targetLibrary as keyof typeof LEGACY_ICON_LIBRARIES\n    ]\n  const { confirm } = await prompts({\n    type: \"confirm\",\n    name: \"confirm\",\n    initial: true,\n    message: `We will migrate ${highlighter.info(\n      files.length\n    )} files in ${highlighter.info(\n      `./${path.relative(config.resolvedPaths.cwd, uiPath)}`\n    )} from ${highlighter.info(sourceLibrary.name)} to ${highlighter.info(\n      targetLibrary.name\n    )}. Continue?`,\n  })\n\n  if (!confirm) {\n    logger.info(\"Migration cancelled.\")\n    process.exit(0)\n  }\n\n  if (targetLibrary.package) {\n    await updateDependencies([targetLibrary.package], [], config, {\n      silent: false,\n    })\n  }\n\n  const migrationSpinner = spinner(`Migrating icons...`)?.start()\n\n  await Promise.all(\n    files.map(async (file) => {\n      migrationSpinner.text = `Migrating ${file}...`\n\n      const filePath = path.join(uiPath, file)\n      const fileContent = await fs.readFile(filePath, \"utf-8\")\n\n      const content = await migrateIconsFile(\n        fileContent,\n        migrateOptions.sourceLibrary,\n        migrateOptions.targetLibrary,\n        registryIcons\n      )\n\n      await fs.writeFile(filePath, content)\n    })\n  )\n\n  migrationSpinner.succeed(\"Migration complete.\")\n}\n\nexport async function migrateIconsFile(\n  content: string,\n  sourceLibrary: keyof typeof LEGACY_ICON_LIBRARIES,\n  targetLibrary: keyof typeof LEGACY_ICON_LIBRARIES,\n  iconsMapping: z.infer<typeof iconsSchema>\n) {\n  const sourceLibraryImport = LEGACY_ICON_LIBRARIES[sourceLibrary]?.import\n  const targetLibraryImport = LEGACY_ICON_LIBRARIES[targetLibrary]?.import\n\n  const dir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-\"))\n  const project = new Project({\n    compilerOptions: {},\n  })\n\n  const tempFile = path.join(\n    dir,\n    `shadcn-icons-${randomBytes(4).toString(\"hex\")}.tsx`\n  )\n  const sourceFile = project.createSourceFile(tempFile, content, {\n    scriptKind: ScriptKind.TSX,\n  })\n\n  // Find all sourceLibrary imports.\n  let targetedIcons: string[] = []\n  for (const importDeclaration of sourceFile.getImportDeclarations() ?? []) {\n    if (\n      importDeclaration.getModuleSpecifier()?.getText() !==\n      `\"${sourceLibraryImport}\"`\n    ) {\n      continue\n    }\n\n    for (const specifier of importDeclaration.getNamedImports() ?? []) {\n      const iconName = specifier.getName()\n\n      // TODO: this is O(n^2) but okay for now.\n      const targetedIcon = Object.values(iconsMapping).find(\n        (icon) => icon[sourceLibrary] === iconName\n      )?.[targetLibrary]\n\n      if (!targetedIcon || targetedIcons.includes(targetedIcon)) {\n        continue\n      }\n\n      targetedIcons.push(targetedIcon)\n\n      // Remove the named import.\n      specifier.remove()\n\n      // Replace with the targeted icon.\n      sourceFile\n        .getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement)\n        .filter((node) => node.getTagNameNode()?.getText() === iconName)\n        .forEach((node) => node.getTagNameNode()?.replaceWithText(targetedIcon))\n    }\n\n    // If the named import is empty, remove the import declaration.\n    if (importDeclaration.getNamedImports()?.length === 0) {\n      importDeclaration.remove()\n    }\n  }\n\n  if (targetedIcons.length > 0) {\n    sourceFile.addImportDeclaration({\n      moduleSpecifier: targetLibraryImport,\n      namedImports: targetedIcons.map((icon) => ({\n        name: icon,\n      })),\n    })\n  }\n\n  return await sourceFile.getText()\n}\n"
  },
  {
    "path": "packages/shadcn/src/migrations/migrate-radix.test.ts",
    "content": "import { promises as fs } from \"fs\"\nimport { beforeEach, describe, expect, it, vi } from \"vitest\"\n\nimport { migrateRadix, migrateRadixFile } from \"./migrate-radix\"\n\n// Mock dependencies\nvi.mock(\"fs\", () => ({\n  promises: {\n    readFile: vi.fn(),\n    writeFile: vi.fn(),\n    mkdtemp: vi.fn(),\n  },\n}))\n\nvi.mock(\"fast-glob\", () => ({\n  default: vi.fn(),\n}))\n\nvi.mock(\"prompts\", () => ({\n  default: vi.fn(),\n}))\n\nvi.mock(\"@/src/utils/spinner\", () => ({\n  spinner: vi.fn(() => ({\n    start: vi.fn().mockReturnThis(),\n    succeed: vi.fn(),\n    fail: vi.fn(),\n    text: \"\",\n  })),\n}))\n\nvi.mock(\"@/src/utils/logger\", () => ({\n  logger: {\n    info: vi.fn(),\n    warn: vi.fn(),\n    break: vi.fn(),\n  },\n}))\n\nvi.mock(\"@/src/utils/get-package-manager\", () => ({\n  getPackageManager: vi.fn(),\n}))\n\nvi.mock(\"@/src/utils/get-package-info\", () => ({\n  getPackageInfo: vi.fn(),\n}))\n\nvi.mock(\"@/src/utils/updaters/update-dependencies\", () => ({\n  updateDependencies: vi.fn(),\n}))\n\nconst mockFs = fs as any\nconst mockConfig = {\n  style: \"default\",\n  rsc: false,\n  tsx: true,\n  tailwind: {\n    css: \"app/globals.css\",\n    baseColor: \"slate\",\n    cssVariables: true,\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \"/test-project\",\n    ui: \"/test-project/components\",\n    tailwindConfig: \"/test-project/tailwind.config.js\",\n    tailwindCss: \"/test-project/app/globals.css\",\n    utils: \"/test-project/lib/utils\",\n    components: \"/test-project/components\",\n    lib: \"/test-project/lib\",\n    hooks: \"/test-project/hooks\",\n  },\n}\n\nbeforeEach(() => {\n  // Mock mkdtemp to return a valid temp directory path\n  mockFs.mkdtemp.mockResolvedValue(\"/tmp/shadcn-test\")\n})\n\ndescribe(\"migrateRadixFile\", () => {\n  it(\"should migrate namespace imports\", async () => {\n    const input = `import * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const expected = `import { Dialog as DialogPrimitive, Select as SelectPrimitive } from \"radix-ui\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should migrate named imports\", async () => {\n    const input = `import { Root, Trigger } from \"@radix-ui/react-dialog\"\nimport { Content } from \"@radix-ui/react-select\"\n\nexport const DialogRoot = Root\nexport const DialogTrigger = Trigger\nexport const SelectContent = Content`\n\n    const expected = `import { Root, Trigger, Content } from \"radix-ui\"\n\nexport const DialogRoot = Root\nexport const DialogTrigger = Trigger\nexport const SelectContent = Content`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should handle mixed import types\", async () => {\n    const input = `import * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Root as SelectRoot } from \"@radix-ui/react-select\"\nimport { useState } from \"react\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectRoot`\n\n    const expected = `import { Dialog as DialogPrimitive, Root as SelectRoot } from \"radix-ui\"\n\nimport { useState } from \"react\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectRoot`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should not modify non-Radix imports\", async () => {\n    const input = `import React from \"react\"\nimport { clsx } from \"clsx\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\n\nexport const Dialog = DialogPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content).toContain('import React from \"react\"')\n    expect(result.content).toContain('import { clsx } from \"clsx\"')\n    expect(result.content).toContain(\n      'import { Dialog as DialogPrimitive } from \"radix-ui\"'\n    )\n    expect(result.content).not.toContain(\"@radix-ui/react-dialog\")\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-dialog\"])\n  })\n\n  it(\"should handle files with no Radix imports\", async () => {\n    const input = `import React from \"react\"\nimport { clsx } from \"clsx\"\n\nexport const Component = () => <div>Hello</div>`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(input.trim())\n    expect(result.replacedPackages).toEqual([])\n  })\n\n  it(\"should preserve import position in file\", async () => {\n    const input = `\"use client\"\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { useState } from \"react\"\n\nexport const Dialog = DialogPrimitive.Root`\n\n    const expected = `\"use client\"\n\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\nimport { useState } from \"react\"\n\nexport const Dialog = DialogPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-dialog\"])\n  })\n\n  it(\"should handle multiple Radix imports without node removal errors\", async () => {\n    const input = `\"use client\"\n\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { useState } from \"react\"\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root\nexport const Dialog = DialogPrimitive.Root`\n\n    const expected = `\"use client\"\n\nimport { DropdownMenu as DropdownMenuPrimitive, Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { useState } from \"react\"\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root\nexport const Dialog = DialogPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dropdown-menu\",\n      \"@radix-ui/react-dialog\",\n    ])\n  })\n\n  it(\"should preserve single quotes if used in original imports\", async () => {\n    const input = `import * as DialogPrimitive from '@radix-ui/react-dialog'\nimport * as SelectPrimitive from '@radix-ui/react-select'\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const expected = `import { Dialog as DialogPrimitive, Select as SelectPrimitive } from 'radix-ui'\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should preserve mixed quote styles from first import\", async () => {\n    const input = `import * as DialogPrimitive from '@radix-ui/react-dialog'\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const expected = `import { Dialog as DialogPrimitive, Select as SelectPrimitive } from 'radix-ui'\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should handle type-only imports\", async () => {\n    const input = `import type { ComponentProps } from \"@radix-ui/react-dialog\"\nimport { type SelectProps, Root } from \"@radix-ui/react-select\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\n\nexport type MyDialogProps = ComponentProps\nexport type MySelectProps = SelectProps\nexport const Dialog = DialogPrimitive.Root`\n\n    const expected = `import { type ComponentProps, type SelectProps, Root, Dialog as DialogPrimitive } from \"radix-ui\"\n\nexport type MyDialogProps = ComponentProps\nexport type MySelectProps = SelectProps\nexport const Dialog = DialogPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should handle mixed type and value imports\", async () => {\n    const input = `import type { DialogProps } from \"@radix-ui/react-dialog\"\nimport { Root, Trigger } from \"@radix-ui/react-dialog\"\n\nexport type Props = DialogProps\nexport const DialogRoot = Root`\n\n    const expected = `import { type DialogProps, Root, Trigger } from \"radix-ui\"\n\nexport type Props = DialogProps\nexport const DialogRoot = Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-dialog\"])\n  })\n\n  it(\"should handle type-only namespace imports\", async () => {\n    const input = `import type * as DialogTypes from \"@radix-ui/react-dialog\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\n\nexport type Props = DialogTypes.ComponentProps\nexport const Dialog = DialogPrimitive.Root`\n\n    const expected = `import { type Dialog as DialogTypes, Dialog as DialogPrimitive } from \"radix-ui\"\n\nexport type Props = DialogTypes.ComponentProps\nexport const Dialog = DialogPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-dialog\"])\n  })\n\n  it(\"should not migrate @radix-ui/react-icons imports\", async () => {\n    const input = `import { ChevronDownIcon, Cross2Icon } from \"@radix-ui/react-icons\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Root } from \"@radix-ui/react-select\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const ChevronDown = ChevronDownIcon`\n\n    const expected = `import { ChevronDownIcon, Cross2Icon } from \"@radix-ui/react-icons\"\nimport { Dialog as DialogPrimitive, Root } from \"radix-ui\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const ChevronDown = ChevronDownIcon`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should not migrate type imports from @radix-ui/react-icons\", async () => {\n    const input = `import type { IconProps } from \"@radix-ui/react-icons/dist/types\"\nimport type { ComponentProps } from \"@radix-ui/react-dialog\"\nimport { Root } from \"@radix-ui/react-dialog\"\n\nexport type MyIconProps = IconProps\nexport type MyDialogProps = ComponentProps`\n\n    const expected = `import type { IconProps } from \"@radix-ui/react-icons/dist/types\"\nimport { type ComponentProps, Root } from \"radix-ui\"\n\nexport type MyIconProps = IconProps\nexport type MyDialogProps = ComponentProps`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-dialog\"])\n  })\n\n  it(\"should handle mixed imports with icons and other radix packages\", async () => {\n    const input = `import * as Icons from \"@radix-ui/react-icons\"\nimport { ChevronDownIcon } from \"@radix-ui/react-icons\"\nimport type { IconProps } from \"@radix-ui/react-icons/dist/types\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Root } from \"@radix-ui/react-select\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Icon = ChevronDownIcon\nexport type Props = IconProps`\n\n    const expected = `import * as Icons from \"@radix-ui/react-icons\"\nimport { ChevronDownIcon } from \"@radix-ui/react-icons\"\nimport type { IconProps } from \"@radix-ui/react-icons/dist/types\"\nimport { Dialog as DialogPrimitive, Root } from \"radix-ui\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Icon = ChevronDownIcon\nexport type Props = IconProps`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should handle multi-line imports\", async () => {\n    const input = `import {\n  Root,\n  Trigger,\n  Content\n} from \"@radix-ui/react-dialog\"\nimport {\n  Value,\n  Item\n} from \"@radix-ui/react-select\"\n\nexport const DialogRoot = Root\nexport const SelectValue = Value`\n\n    const expected = `import { Root, Trigger, Content, Value, Item } from \"radix-ui\"\n\nexport const DialogRoot = Root\nexport const SelectValue = Value`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should handle multi-line imports with mixed formatting\", async () => {\n    const input = `import {\n  Root as DialogRoot,\n  Trigger,\n  Content,\n} from \"@radix-ui/react-dialog\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nexport const Dialog = DialogRoot\nexport const Select = SelectPrimitive.Root`\n\n    const expected = `import { Root as DialogRoot, Trigger, Content, Select as SelectPrimitive } from \"radix-ui\"\n\nexport const Dialog = DialogRoot\nexport const Select = SelectPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should handle multi-line type imports\", async () => {\n    const input = `import type {\n  ComponentProps,\n  DialogProps\n} from \"@radix-ui/react-dialog\"\nimport {\n  type SelectProps,\n  Root\n} from \"@radix-ui/react-select\"\n\nexport type Props = DialogProps`\n\n    const expected = `import { type ComponentProps, type DialogProps, type SelectProps, Root } from \"radix-ui\"\n\nexport type Props = DialogProps`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should handle complex multi-line imports with comments and extra whitespace\", async () => {\n    const input = `import {\n  Root,   // Main component\n  Trigger,\n\n  Content,   // Content component\n} from \"@radix-ui/react-dialog\"\n\nexport const DialogRoot = Root`\n\n    const expected = `import { Root, Trigger, Content } from \"radix-ui\"\n\nexport const DialogRoot = Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-dialog\"])\n  })\n\n  it(\"should handle multi-line imports with block comments\", async () => {\n    const input = `import {\n  Root, /* main dialog component */\n  Trigger,\n  Content /* dialog content */,\n} from \"@radix-ui/react-dialog\"\n\nexport const DialogRoot = Root`\n\n    const expected = `import { Root, Trigger, Content } from \"radix-ui\"\n\nexport const DialogRoot = Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-dialog\"])\n  })\n\n  it(\"should handle real-world shadcn/ui patterns from registry files\", async () => {\n    // This test captures all the actual import patterns found in the shadcn/ui registry\n    const input = `import * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nexport const Accordion = AccordionPrimitive.Root\nexport const AlertDialog = AlertDialogPrimitive.Root\nexport const Button = Slot`\n\n    const expected = `import { Accordion as AccordionPrimitive, AlertDialog as AlertDialogPrimitive, AspectRatio as AspectRatioPrimitive, Avatar as AvatarPrimitive, Slot as SlotPrimitive, Checkbox as CheckboxPrimitive, Collapsible as CollapsiblePrimitive, ContextMenu as ContextMenuPrimitive, Dialog as DialogPrimitive, DropdownMenu as DropdownMenuPrimitive, HoverCard as HoverCardPrimitive, Label as LabelPrimitive, Menubar as MenubarPrimitive, NavigationMenu as NavigationMenuPrimitive, Popover as PopoverPrimitive, Progress as ProgressPrimitive, RadioGroup as RadioGroupPrimitive, ScrollArea as ScrollAreaPrimitive, Select as SelectPrimitive, Separator as SeparatorPrimitive, Slider as SliderPrimitive, Switch as SwitchPrimitive, Tabs as TabsPrimitive, Toggle as TogglePrimitive, ToggleGroup as ToggleGroupPrimitive, Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nexport const Accordion = AccordionPrimitive.Root\nexport const AlertDialog = AlertDialogPrimitive.Root\nexport const Button = SlotPrimitive.Slot`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-accordion\",\n      \"@radix-ui/react-alert-dialog\",\n      \"@radix-ui/react-aspect-ratio\",\n      \"@radix-ui/react-avatar\",\n      \"@radix-ui/react-slot\",\n      \"@radix-ui/react-checkbox\",\n      \"@radix-ui/react-collapsible\",\n      \"@radix-ui/react-context-menu\",\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-dropdown-menu\",\n      \"@radix-ui/react-hover-card\",\n      \"@radix-ui/react-label\",\n      \"@radix-ui/react-menubar\",\n      \"@radix-ui/react-navigation-menu\",\n      \"@radix-ui/react-popover\",\n      \"@radix-ui/react-progress\",\n      \"@radix-ui/react-radio-group\",\n      \"@radix-ui/react-scroll-area\",\n      \"@radix-ui/react-select\",\n      \"@radix-ui/react-separator\",\n      \"@radix-ui/react-slider\",\n      \"@radix-ui/react-switch\",\n      \"@radix-ui/react-tabs\",\n      \"@radix-ui/react-toggle\",\n      \"@radix-ui/react-toggle-group\",\n      \"@radix-ui/react-tooltip\",\n    ])\n  })\n\n  it(\"should handle the special sheet.tsx pattern from registry\", async () => {\n    // In shadcn/ui, sheet.tsx imports from react-dialog instead of a dedicated sheet package\n    const input = `import * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cn } from \"@/lib/utils\"\n\nexport const Sheet = SheetPrimitive.Root\nexport const SheetTrigger = SheetPrimitive.Trigger`\n\n    const expected = `import { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { cn } from \"@/lib/utils\"\n\nexport const Sheet = SheetPrimitive.Root\nexport const SheetTrigger = SheetPrimitive.Trigger`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-dialog\"])\n  })\n\n  it(\"should handle form.tsx mixed pattern from registry\", async () => {\n    // form.tsx uses both namespace and named imports\n    const input = `import * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\n\nexport const FormLabel = LabelPrimitive.Root\nexport const FormControl = Slot`\n\n    const expected = `import { Label as LabelPrimitive, Slot as SlotPrimitive } from \"radix-ui\"\n\nexport const FormLabel = LabelPrimitive.Root\nexport const FormControl = SlotPrimitive.Slot`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-label\",\n      \"@radix-ui/react-slot\",\n    ])\n  })\n\n  it(\"should handle all 26 packages used in shadcn/ui registry\", async () => {\n    // Test that we correctly handle all packages found in the registry analysis\n    const allPackages = [\n      \"@radix-ui/react-accordion\",\n      \"@radix-ui/react-alert-dialog\",\n      \"@radix-ui/react-aspect-ratio\",\n      \"@radix-ui/react-avatar\",\n      \"@radix-ui/react-checkbox\",\n      \"@radix-ui/react-collapsible\",\n      \"@radix-ui/react-context-menu\",\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-dropdown-menu\",\n      \"@radix-ui/react-hover-card\",\n      \"@radix-ui/react-label\",\n      \"@radix-ui/react-menubar\",\n      \"@radix-ui/react-navigation-menu\",\n      \"@radix-ui/react-popover\",\n      \"@radix-ui/react-progress\",\n      \"@radix-ui/react-radio-group\",\n      \"@radix-ui/react-scroll-area\",\n      \"@radix-ui/react-select\",\n      \"@radix-ui/react-separator\",\n      \"@radix-ui/react-slider\",\n      \"@radix-ui/react-slot\",\n      \"@radix-ui/react-switch\",\n      \"@radix-ui/react-tabs\",\n      \"@radix-ui/react-toggle\",\n      \"@radix-ui/react-toggle-group\",\n      \"@radix-ui/react-tooltip\",\n    ]\n\n    // Create import statements for all packages\n    const imports = allPackages\n      .map((pkg) => {\n        const componentName = pkg\n          .replace(\"@radix-ui/react-\", \"\")\n          .split(\"-\")\n          .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n          .join(\"\")\n\n        if (pkg === \"@radix-ui/react-slot\") {\n          return `import { Slot } from \"${pkg}\"`\n        }\n        return `import * as ${componentName}Primitive from \"${pkg}\"`\n      })\n      .join(\"\\n\")\n\n    const result = await migrateRadixFile(imports)\n\n    // Should contain all 26 packages in replacedPackages\n    expect(result.replacedPackages).toHaveLength(26)\n    expect(result.replacedPackages.sort()).toEqual(allPackages.sort())\n\n    // Should be a single unified import from radix-ui\n    expect(result.content).toContain('from \"radix-ui\"')\n    expect(result.content.startsWith(\"import {\")).toBe(true)\n    expect(result.content).toContain(\"Slot as SlotPrimitive\") // Slot should be aliased as SlotPrimitive\n    expect(result.content).toContain(\"Accordion as AccordionPrimitive\") // Namespace should be aliased\n\n    // Should have transformed all imports into a single statement\n    const importLines = result.content\n      .split(\"\\n\")\n      .filter((line) => line.includes(\"import\"))\n    expect(importLines).toHaveLength(1)\n  })\n\n  it(\"should transform Slot usage in ternary expressions\", async () => {\n    const input = `import { Slot } from \"@radix-ui/react-slot\"\n\nconst Button = ({ asChild, children }) => {\n  const Comp = asChild ? Slot : \"button\"\n  const Element = asChild ? Slot : \"div\"\n  return <Comp>{children}</Comp>\n}`\n\n    const expected = `import { Slot as SlotPrimitive } from \"radix-ui\"\n\nconst Button = ({ asChild, children }) => {\n  const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n  const Element = asChild ? SlotPrimitive.Slot : \"div\"\n  return <Comp>{children}</Comp>\n}`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-slot\"])\n  })\n\n  it(\"should handle Slot usage with different spacing patterns\", async () => {\n    const input = `import { Slot } from \"@radix-ui/react-slot\"\n\nconst Button = ({ asChild }) => {\n  const Comp1 = asChild ? Slot : \"button\"\n  const Comp2 = asChild?Slot:\"button\"\n  const Comp3 = asChild  ?  Slot  :  \"button\"\n  return null\n}`\n\n    const expected = `import { Slot as SlotPrimitive } from \"radix-ui\"\n\nconst Button = ({ asChild }) => {\n  const Comp1 = asChild ? SlotPrimitive.Slot : \"button\"\n  const Comp2 = asChild?SlotPrimitive.Slot:\"button\"\n  const Comp3 = asChild  ?  SlotPrimitive.Slot  :  \"button\"\n  return null\n}`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-slot\"])\n  })\n\n  it(\"should handle custom Slot aliases differently\", async () => {\n    const input = `import { Slot as SlotComponent } from \"@radix-ui/react-slot\"\n\nconst Button = ({ asChild }) => {\n  const Comp = asChild ? Slot : \"button\"\n  const Element = asChild ? SlotComponent : \"div\"\n  return null\n}`\n\n    const expected = `import { Slot as SlotComponent } from \"radix-ui\"\n\nconst Button = ({ asChild }) => {\n  const Comp = asChild ? Slot : \"button\"\n  const Element = asChild ? SlotComponent : \"div\"\n  return null\n}`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-slot\"])\n  })\n\n  it(\"should transform all Slot references but preserve string literals\", async () => {\n    const input = `import { Slot } from \"@radix-ui/react-slot\"\n\nconst Button = ({ asChild }) => {\n  const SlotName = \"Slot\"\n  const someSlot = slot\n  const Comp = asChild ? Slot : \"button\"\n  return <Slot />\n}`\n\n    const expected = `import { Slot as SlotPrimitive } from \"radix-ui\"\n\nconst Button = ({ asChild }) => {\n  const SlotName = \"Slot\"\n  const someSlot = slot\n  const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n  return <SlotPrimitive.Slot />\n}`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-slot\"])\n  })\n\n  it(\"should transform React.ComponentProps<typeof Slot>\", async () => {\n    const input = `import { Slot } from \"@radix-ui/react-slot\"\nimport React from \"react\"\n\ntype ButtonProps = React.ComponentProps<typeof Slot> & {\n  variant?: string\n}\n\nconst Button = ({ asChild, ...props }: ButtonProps) => {\n  const Comp = asChild ? Slot : \"button\"\n  return <Comp {...props} />\n}`\n\n    const expected = `import { Slot as SlotPrimitive } from \"radix-ui\"\nimport React from \"react\"\n\ntype ButtonProps = React.ComponentProps<typeof SlotPrimitive.Slot> & {\n  variant?: string\n}\n\nconst Button = ({ asChild, ...props }: ButtonProps) => {\n  const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n  return <Comp {...props} />\n}`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-slot\"])\n  })\n\n  it(\"should transform ComponentProps<typeof Slot> without React prefix\", async () => {\n    const input = `import { Slot } from \"@radix-ui/react-slot\"\nimport { ComponentProps } from \"react\"\n\ntype ButtonProps = ComponentProps<typeof Slot> & {\n  variant?: string\n}\n\nconst Button = ({ asChild, ...props }: ButtonProps) => {\n  const Comp = asChild ? Slot : \"button\"\n  return <Comp {...props} />\n}`\n\n    const expected = `import { Slot as SlotPrimitive } from \"radix-ui\"\nimport { ComponentProps } from \"react\"\n\ntype ButtonProps = ComponentProps<typeof SlotPrimitive.Slot> & {\n  variant?: string\n}\n\nconst Button = ({ asChild, ...props }: ButtonProps) => {\n  const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n  return <Comp {...props} />\n}`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\"@radix-ui/react-slot\"])\n  })\n\n  it(\"should not add double semicolons when import already ends with semicolon\", async () => {\n    const input = `import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const expected = `import { Dialog as DialogPrimitive, Select as SelectPrimitive } from \"radix-ui\";\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n\n  it(\"should not add semicolon when original imports don't have semicolons\", async () => {\n    const input = `import * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const expected = `import { Dialog as DialogPrimitive, Select as SelectPrimitive } from \"radix-ui\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const Select = SelectPrimitive.Root`\n\n    const result = await migrateRadixFile(input)\n    expect(result.content.trim()).toBe(expected.trim())\n    expect(result.replacedPackages).toEqual([\n      \"@radix-ui/react-dialog\",\n      \"@radix-ui/react-select\",\n    ])\n  })\n})\n\ndescribe(\"migrateRadix - package.json updates\", () => {\n  beforeEach(() => {\n    vi.clearAllMocks()\n  })\n\n  it(\"should update package.json with Radix dependencies\", async () => {\n    const mockPackageJson = {\n      name: \"test-project\",\n      dependencies: {\n        react: \"^18.0.0\",\n        \"@radix-ui/react-dialog\": \"^1.0.0\",\n        \"@radix-ui/react-select\": \"^1.0.0\",\n        \"other-package\": \"^1.0.0\",\n      },\n      devDependencies: {\n        \"@radix-ui/react-toast\": \"^1.0.0\",\n      },\n    }\n\n    // Old packages should remain - we don't remove them automatically.\n    const expectedPackageJson = {\n      name: \"test-project\",\n      dependencies: {\n        react: \"^18.0.0\",\n        \"@radix-ui/react-dialog\": \"^1.0.0\",\n        \"@radix-ui/react-select\": \"^1.0.0\",\n        \"other-package\": \"^1.0.0\",\n        \"radix-ui\": \"latest\",\n      },\n      devDependencies: {\n        \"@radix-ui/react-toast\": \"^1.0.0\",\n      },\n    }\n\n    // Mock package info\n    const { getPackageInfo } = await import(\"@/src/utils/get-package-info\")\n    vi.mocked(getPackageInfo).mockReturnValue(mockPackageJson)\n\n    // Mock file system\n    mockFs.writeFile.mockResolvedValue(undefined)\n\n    // Mock fast-glob to return files with Radix imports\n    const fg = await import(\"fast-glob\")\n    vi.mocked(fg.default).mockResolvedValue([\"dialog.tsx\", \"select.tsx\"])\n\n    // Mock file reads to return content with Radix imports\n    mockFs.readFile\n      .mockResolvedValueOnce(\n        'import * as DialogPrimitive from \"@radix-ui/react-dialog\"'\n      )\n      .mockResolvedValueOnce(\n        'import * as SelectPrimitive from \"@radix-ui/react-select\"'\n      )\n\n    // Mock prompts to confirm migration\n    const prompts = await import(\"prompts\")\n    vi.mocked(prompts.default).mockResolvedValue({ confirm: true })\n\n    // Mock package manager detection\n    const { getPackageManager } = await import(\n      \"@/src/utils/get-package-manager\"\n    )\n    vi.mocked(getPackageManager).mockResolvedValue(\"npm\")\n\n    await migrateRadix(mockConfig)\n\n    expect(mockFs.writeFile).toHaveBeenCalledWith(\n      \"/test-project/package.json\",\n      JSON.stringify(expectedPackageJson, null, 2) + \"\\n\"\n    )\n  })\n\n  it(\"should handle package.json with no Radix dependencies\", async () => {\n    const mockPackageJson = {\n      name: \"test-project\",\n      dependencies: {\n        react: \"^18.0.0\",\n        \"other-package\": \"^1.0.0\",\n      },\n    }\n\n    const { getPackageInfo } = await import(\"@/src/utils/get-package-info\")\n    vi.mocked(getPackageInfo).mockReturnValue(mockPackageJson)\n\n    const { updateDependencies } = await import(\n      \"@/src/utils/updaters/update-dependencies\"\n    )\n\n    const fg = await import(\"fast-glob\")\n    vi.mocked(fg.default).mockResolvedValue([\"component.tsx\"])\n\n    // Mock file read to return content with no Radix imports\n    mockFs.readFile.mockResolvedValue('import React from \"react\"')\n\n    const prompts = await import(\"prompts\")\n    vi.mocked(prompts.default).mockResolvedValue({ confirm: true })\n\n    await migrateRadix(mockConfig as any)\n\n    // Should not write the file if no Radix packages found\n    expect(mockFs.writeFile).not.toHaveBeenCalledWith(\n      \"/test-project/package.json\",\n      expect.any(String)\n    )\n\n    // Should not attempt to install dependencies\n    expect(updateDependencies).not.toHaveBeenCalled()\n  })\n\n  it(\"should handle missing package.json gracefully\", async () => {\n    const { getPackageInfo } = await import(\"@/src/utils/get-package-info\")\n    vi.mocked(getPackageInfo).mockReturnValue(null)\n\n    const fg = await import(\"fast-glob\")\n    vi.mocked(fg.default).mockResolvedValue([\"component.tsx\"])\n\n    // Mock file read\n    mockFs.readFile.mockResolvedValue('import React from \"react\"')\n\n    const prompts = await import(\"prompts\")\n    vi.mocked(prompts.default).mockResolvedValue({ confirm: true })\n\n    // Should not throw\n    await expect(migrateRadix(mockConfig)).resolves.not.toThrow()\n  })\n\n  it(\"should automatically install radix-ui dependency\", async () => {\n    const mockPackageJson = {\n      name: \"test-project\",\n      dependencies: {\n        \"@radix-ui/react-dialog\": \"^1.0.0\",\n      },\n    }\n\n    const { getPackageInfo } = await import(\"@/src/utils/get-package-info\")\n    vi.mocked(getPackageInfo).mockReturnValue(mockPackageJson)\n\n    const { updateDependencies } = await import(\n      \"@/src/utils/updaters/update-dependencies\"\n    )\n\n    mockFs.writeFile.mockResolvedValue(undefined)\n\n    const fg = await import(\"fast-glob\")\n    vi.mocked(fg.default).mockResolvedValue([\"dialog.tsx\"])\n\n    // Mock file read to return content with Radix imports\n    mockFs.readFile.mockResolvedValue(\n      'import * as DialogPrimitive from \"@radix-ui/react-dialog\"'\n    )\n\n    const prompts = await import(\"prompts\")\n    vi.mocked(prompts.default).mockResolvedValue({ confirm: true })\n\n    await migrateRadix(mockConfig)\n\n    expect(updateDependencies).toHaveBeenCalledWith(\n      [\"radix-ui\"],\n      [],\n      mockConfig,\n      { silent: false }\n    )\n  })\n\n  it(\"should not remove old @radix-ui packages from package.json\", async () => {\n    const mockPackageJson = {\n      name: \"test-project\",\n      dependencies: {\n        react: \"^18.0.0\",\n        \"@radix-ui/react-dialog\": \"^1.0.0\",\n        \"@radix-ui/react-select\": \"^1.0.0\",\n        \"@radix-ui/react-toast\": \"^1.0.0\",\n        \"other-package\": \"^1.0.0\",\n      },\n    }\n\n    // Old packages should remain - we don't remove them automatically.\n    const expectedPackageJson = {\n      name: \"test-project\",\n      dependencies: {\n        react: \"^18.0.0\",\n        \"@radix-ui/react-dialog\": \"^1.0.0\",\n        \"@radix-ui/react-select\": \"^1.0.0\",\n        \"@radix-ui/react-toast\": \"^1.0.0\",\n        \"other-package\": \"^1.0.0\",\n        \"radix-ui\": \"latest\",\n      },\n    }\n\n    const { getPackageInfo } = await import(\"@/src/utils/get-package-info\")\n    vi.mocked(getPackageInfo).mockReturnValue(mockPackageJson)\n\n    const { getPackageManager } = await import(\n      \"@/src/utils/get-package-manager\"\n    )\n    vi.mocked(getPackageManager).mockResolvedValue(\"npm\")\n\n    mockFs.writeFile.mockResolvedValue(undefined)\n\n    // Mock fast-glob to return files with only dialog and select imports\n    const fg = await import(\"fast-glob\")\n    vi.mocked(fg.default).mockResolvedValue([\"dialog.tsx\"])\n\n    // Mock file read to return content with only dialog and select\n    mockFs.readFile.mockResolvedValue(`\n      import * as DialogPrimitive from \"@radix-ui/react-dialog\"\n      import * as SelectPrimitive from \"@radix-ui/react-select\"\n      export const Dialog = DialogPrimitive.Root\n    `)\n\n    const prompts = await import(\"prompts\")\n    vi.mocked(prompts.default).mockResolvedValue({ confirm: true })\n\n    await migrateRadix(mockConfig)\n\n    expect(mockFs.writeFile).toHaveBeenCalledWith(\n      \"/test-project/package.json\",\n      JSON.stringify(expectedPackageJson, null, 2) + \"\\n\"\n    )\n  })\n\n  it(\"should keep @radix-ui/react-icons and other packages in package.json\", async () => {\n    const mockPackageJson = {\n      name: \"test-project\",\n      dependencies: {\n        react: \"^18.0.0\",\n        \"@radix-ui/react-dialog\": \"^1.0.0\",\n        \"@radix-ui/react-icons\": \"^1.3.0\",\n        \"other-package\": \"^1.0.0\",\n      },\n    }\n\n    // Old packages should remain - we don't remove them automatically.\n    const expectedPackageJson = {\n      name: \"test-project\",\n      dependencies: {\n        react: \"^18.0.0\",\n        \"@radix-ui/react-dialog\": \"^1.0.0\",\n        \"@radix-ui/react-icons\": \"^1.3.0\",\n        \"other-package\": \"^1.0.0\",\n        \"radix-ui\": \"latest\",\n      },\n    }\n\n    const { getPackageInfo } = await import(\"@/src/utils/get-package-info\")\n    vi.mocked(getPackageInfo).mockReturnValue(mockPackageJson)\n\n    const { getPackageManager } = await import(\n      \"@/src/utils/get-package-manager\"\n    )\n    vi.mocked(getPackageManager).mockResolvedValue(\"npm\")\n\n    mockFs.writeFile.mockResolvedValue(undefined)\n\n    const fg = await import(\"fast-glob\")\n    vi.mocked(fg.default).mockResolvedValue([\"dialog.tsx\"])\n\n    // Mock file read to return content with dialog imports but NOT icons\n    mockFs.readFile.mockResolvedValue(\n      'import * as DialogPrimitive from \"@radix-ui/react-dialog\"'\n    )\n\n    const prompts = await import(\"prompts\")\n    vi.mocked(prompts.default).mockResolvedValue({ confirm: true })\n\n    await migrateRadix(mockConfig)\n\n    expect(mockFs.writeFile).toHaveBeenCalledWith(\n      \"/test-project/package.json\",\n      JSON.stringify(expectedPackageJson, null, 2) + \"\\n\"\n    )\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/migrations/migrate-radix.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { getPackageInfo } from \"@/src/utils/get-package-info\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { updateDependencies } from \"@/src/utils/updaters/update-dependencies\"\nimport fg from \"fast-glob\"\nimport prompts from \"prompts\"\n\nfunction toPascalCase(str: string): string {\n  return str\n    .split(\"-\")\n    .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n    .join(\"\")\n}\n\nfunction processNamedImports(\n  namedImports: string,\n  isTypeOnly: boolean,\n  imports: Array<{ name: string; alias?: string; isType?: boolean }>,\n  packageName: string\n) {\n  // Clean up multi-line imports.\n  // Remove comments and whitespace.\n  const cleanedImports = namedImports\n    .replace(/\\/\\/.*$/gm, \"\")\n    .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\n    .replace(/\\s+/g, \" \")\n    .trim()\n\n  const namedImportList = cleanedImports\n    .split(\",\")\n    .map((importItem) => importItem.trim())\n    .filter(Boolean)\n\n  for (const importItem of namedImportList) {\n    const inlineTypeMatch = importItem.match(/^type\\s+(\\w+)(?:\\s+as\\s+(\\w+))?$/)\n    const aliasMatch = importItem.match(/^(\\w+)\\s+as\\s+(\\w+)$/)\n\n    if (inlineTypeMatch) {\n      // Inline type: \"type DialogProps\" or \"type DialogProps as Props\"\n      const importName = inlineTypeMatch[1]\n      const importAlias = inlineTypeMatch[2]\n\n      if (packageName === \"slot\" && importName === \"Slot\" && !importAlias) {\n        imports.push({\n          name: \"Slot\",\n          alias: \"SlotPrimitive\",\n          isType: true,\n        })\n      } else {\n        imports.push({\n          name: importName,\n          alias: importAlias,\n          isType: true,\n        })\n      }\n    } else if (aliasMatch) {\n      // Regular import with alias: \"Root as DialogRoot\"\n      const importName = aliasMatch[1]\n      const importAlias = aliasMatch[2]\n\n      if (\n        packageName === \"slot\" &&\n        importName === \"Slot\" &&\n        importAlias === \"Slot\"\n      ) {\n        imports.push({\n          name: \"Slot\",\n          alias: \"SlotPrimitive\",\n          isType: isTypeOnly,\n        })\n      } else {\n        imports.push({\n          name: importName,\n          alias: importAlias,\n          isType: isTypeOnly,\n        })\n      }\n    } else {\n      // Simple import: \"Root\"\n      // Special handling for Slot: always alias it as SlotPrimitive\n      if (packageName === \"slot\" && importItem === \"Slot\") {\n        imports.push({\n          name: \"Slot\",\n          alias: \"SlotPrimitive\",\n          isType: isTypeOnly,\n        })\n      } else {\n        imports.push({\n          name: importItem,\n          isType: isTypeOnly,\n        })\n      }\n    }\n  }\n}\n\nexport async function migrateRadix(\n  config: Config,\n  options: { yes?: boolean; path?: string } = {}\n) {\n  // Determine files to migrate.\n  let files: string[]\n  let basePath: string\n\n  if (options.path) {\n    // User provided a path/glob.\n    basePath = config.resolvedPaths.cwd\n    const isGlob = options.path.includes(\"*\")\n\n    if (isGlob) {\n      files = await fg(options.path, {\n        cwd: basePath,\n        onlyFiles: true,\n        ignore: [\"**/node_modules/**\"],\n      })\n    } else {\n      const fullPath = path.resolve(basePath, options.path)\n      const stat = await fs.stat(fullPath).catch(() => null)\n\n      if (!stat) {\n        throw new Error(`File not found: ${options.path}`)\n      }\n\n      if (stat.isDirectory()) {\n        basePath = fullPath\n        files = await fg(\"**/*.{js,ts,jsx,tsx}\", {\n          cwd: basePath,\n          onlyFiles: true,\n          ignore: [\"**/node_modules/**\"],\n        })\n      } else if (stat.isFile()) {\n        files = [options.path]\n      } else {\n        throw new Error(`Unsupported path type: ${options.path}`)\n      }\n    }\n\n    if (files.length === 0) {\n      throw new Error(`No files found matching: ${options.path}`)\n    }\n  } else {\n    // Default: use ui path from components.json.\n    if (!config.resolvedPaths.ui) {\n      throw new Error(\n        \"We could not find a valid `ui` path in your `components.json` file. Please ensure you have a valid `ui` path in your `components.json` file.\"\n      )\n    }\n\n    basePath = config.resolvedPaths.ui\n    files = await fg(\"**/*.{js,ts,jsx,tsx}\", {\n      cwd: basePath,\n      onlyFiles: true,\n    })\n  }\n\n  // Confirm with user.\n  if (!options.yes) {\n    const relativePath = options.path\n      ? options.path\n      : `./${path.relative(config.resolvedPaths.cwd, basePath)}`\n\n    const { confirm } = await prompts({\n      type: \"confirm\",\n      name: \"confirm\",\n      initial: true,\n      message: `We will migrate ${highlighter.info(\n        files.length\n      )} file(s) in ${highlighter.info(relativePath)} to ${highlighter.info(\n        \"radix-ui\"\n      )}. Continue?`,\n    })\n\n    if (!confirm) {\n      logger.info(\"Migration cancelled.\")\n      process.exit(0)\n    }\n  }\n\n  const migrationSpinner = spinner(`Migrating imports...`)?.start()\n  const foundPackages = new Set<string>()\n\n  await Promise.all(\n    files.map(async (file) => {\n      migrationSpinner.text = `Migrating ${file}...`\n\n      const filePath = path.join(basePath, file)\n      const fileContent = await fs.readFile(filePath, \"utf-8\")\n\n      const { content, replacedPackages } = await migrateRadixFile(fileContent)\n\n      // Track which packages we found\n      replacedPackages.forEach((pkg) => foundPackages.add(pkg))\n\n      await fs.writeFile(filePath, content)\n    })\n  )\n\n  migrationSpinner.succeed(\"Migrating imports.\")\n\n  // Update package.json dependencies.\n  const packageSpinner = spinner(`Updating package.json...`)?.start()\n\n  try {\n    const packageJson = getPackageInfo(config.resolvedPaths.cwd, false)\n\n    if (!packageJson) {\n      packageSpinner.fail(\"Could not read package.json\")\n      logger.warn(\n        \"Could not update package.json. You may need to manually replace @radix-ui/react-* packages with radix-ui\"\n      )\n      return\n    }\n\n    const foundPackagesArray = Array.from(foundPackages)\n\n    // Add radix-ui if we found any Radix packages.\n    if (foundPackagesArray.length > 0) {\n      if (!packageJson.dependencies) {\n        packageJson.dependencies = {}\n      }\n\n      // Only add radix-ui if it's not already in dependencies.\n      const hasRadixUi =\n        packageJson.dependencies?.[\"radix-ui\"] ||\n        packageJson.devDependencies?.[\"radix-ui\"]\n\n      if (!hasRadixUi) {\n        packageJson.dependencies[\"radix-ui\"] = \"latest\"\n\n        const packageJsonPath = path.join(\n          config.resolvedPaths.cwd,\n          \"package.json\"\n        )\n        await fs.writeFile(\n          packageJsonPath,\n          JSON.stringify(packageJson, null, 2) + \"\\n\"\n        )\n\n        packageSpinner.succeed(`Updated package.json.`)\n\n        // Install radix-ui dependency.\n        await updateDependencies([\"radix-ui\"], [], config, { silent: false })\n      } else {\n        packageSpinner.succeed(`radix-ui already in package.json.`)\n      }\n\n      // Show a message about old packages that can be removed.\n      logger.info(\"\")\n      logger.info(\n        `Migration complete. The following packages may be removed if no longer in use:`\n      )\n      logger.info(highlighter.info(foundPackagesArray.join(\", \")))\n      logger.info(`Please review your codebase before removing.`)\n    } else {\n      packageSpinner.succeed(\"No packages found in source files.\")\n    }\n  } catch (error) {\n    packageSpinner.fail(\"Failed to update package.json\")\n    logger.warn(\n      \"You may need to manually replace @radix-ui/react-* packages with radix-ui\"\n    )\n  }\n}\n\nexport async function migrateRadixFile(\n  content: string\n): Promise<{ content: string; replacedPackages: string[] }> {\n  // Enhanced regex to handle type-only imports, but exclude react-icons\n  // Also capture optional semicolon at the end\n  const radixImportPattern =\n    /import\\s+(?:(type)\\s+)?(?:\\*\\s+as\\s+(\\w+)|{([^}]+)})\\s+from\\s+([\"'])@radix-ui\\/react-([^\"']+)\\4(;?)/g\n\n  const imports: Array<{ name: string; alias?: string; isType?: boolean }> = []\n  const linesToRemove: string[] = []\n  const replacedPackages: string[] = []\n  let quoteStyle = '\"' // Default to double quotes\n  let hasSemicolon = false // Track if any import had a semicolon\n\n  let result = content\n  let match\n\n  // Find all Radix imports\n  while ((match = radixImportPattern.exec(content)) !== null) {\n    const [\n      fullMatch,\n      typeKeyword,\n      namespaceAlias,\n      namedImports,\n      quote,\n      packageName,\n      semicolon,\n    ] = match\n\n    // Skip react-icons package and any sub-paths (like react-icons/dist/types)\n    if (packageName === \"icons\" || packageName.startsWith(\"icons/\")) {\n      continue\n    }\n\n    linesToRemove.push(fullMatch)\n\n    // Use the quote style and semicolon style from the first import\n    if (linesToRemove.length === 1) {\n      quoteStyle = quote\n      hasSemicolon = semicolon === \";\"\n    }\n\n    // Track which package we're replacing\n    replacedPackages.push(`@radix-ui/react-${packageName}`)\n\n    const isTypeOnly = Boolean(typeKeyword)\n\n    if (namespaceAlias) {\n      // Handle namespace imports: import * as DialogPrimitive from \"@radix-ui/react-dialog\"\n      const componentName = toPascalCase(packageName)\n      imports.push({\n        name: componentName,\n        alias: namespaceAlias,\n        isType: isTypeOnly,\n      })\n    } else if (namedImports) {\n      // Handle named imports: import { Root, Trigger } from \"@radix-ui/react-dialog\"\n      // or import type { DialogProps } from \"@radix-ui/react-dialog\"\n      // or import { type DialogProps, Root } from \"@radix-ui/react-dialog\"\n\n      processNamedImports(namedImports, isTypeOnly, imports, packageName)\n    }\n  }\n\n  if (imports.length === 0) {\n    return {\n      content,\n      replacedPackages: [],\n    }\n  }\n\n  // Remove duplicates.\n  // Considering name, alias, and type status.\n  const uniqueImports = imports.filter(\n    (importName, index, self) =>\n      index ===\n      self.findIndex(\n        (i) =>\n          i.name === importName.name &&\n          i.alias === importName.alias &&\n          i.isType === importName.isType\n      )\n  )\n\n  // Create the unified import with preserved quote style and type annotations\n  const importList = uniqueImports\n    .map((imp) => {\n      const typePrefix = imp.isType ? \"type \" : \"\"\n      return imp.alias\n        ? `${typePrefix}${imp.name} as ${imp.alias}`\n        : `${typePrefix}${imp.name}`\n    })\n    .join(\", \")\n\n  const unifiedImport = `import { ${importList} } from ${quoteStyle}radix-ui${quoteStyle}${\n    hasSemicolon ? \";\" : \"\"\n  }`\n\n  // Replace first import with unified import, remove the rest\n  result = linesToRemove.reduce((acc, line, index) => {\n    return acc.replace(line, index === 0 ? unifiedImport : \"\")\n  }, result)\n\n  // Clean up extra blank lines\n  result = result.replace(/\\n\\s*\\n\\s*\\n/g, \"\\n\\n\")\n\n  // Handle special case for Slot usage transformation\n  // Now that we import { Slot as SlotPrimitive }, we need to:\n  // 1. Transform: const Comp = asChild ? Slot : [ANYTHING] -> const Comp = asChild ? SlotPrimitive.Slot : [ANYTHING]\n  // 2. Transform: React.ComponentProps<typeof Slot> -> React.ComponentProps<typeof SlotPrimitive.Slot>\n  const hasSlotImport = uniqueImports.some(\n    (imp) => imp.name === \"Slot\" && imp.alias === \"SlotPrimitive\"\n  )\n\n  if (hasSlotImport) {\n    // Find all lines that are NOT import lines to avoid transforming the import statement itself\n    const lines = result.split(\"\\n\")\n    const transformedLines = lines.map((line) => {\n      // Skip import lines\n      if (line.trim().startsWith(\"import \")) {\n        return line\n      }\n\n      let transformedLine = line\n\n      // Handle all Slot references in one comprehensive pass\n      // Use placeholders to avoid double replacements\n\n      // First, mark specific patterns with placeholders\n      transformedLine = transformedLine.replace(\n        /\\b(asChild\\s*\\?\\s*)Slot(\\s*:)/g,\n        \"$1__SLOT_PLACEHOLDER__$2\"\n      )\n\n      transformedLine = transformedLine.replace(\n        /\\bReact\\.ComponentProps<typeof\\s+Slot>/g,\n        \"React.ComponentProps<typeof __SLOT_PLACEHOLDER__>\"\n      )\n\n      transformedLine = transformedLine.replace(\n        /\\bComponentProps<typeof\\s+Slot>/g,\n        \"ComponentProps<typeof __SLOT_PLACEHOLDER__>\"\n      )\n\n      transformedLine = transformedLine.replace(\n        /(<\\/?)Slot(\\s*\\/?>)/g,\n        \"$1__SLOT_PLACEHOLDER__$2\"\n      )\n\n      // Handle any other standalone Slot usage\n      transformedLine = transformedLine.replace(\n        /\\bSlot\\b/g,\n        (match, offset, string) => {\n          // Don't transform if it's inside quotes\n          const beforeMatch = string.substring(0, offset)\n          const openQuotes = (beforeMatch.match(/\"/g) || []).length\n          const openSingleQuotes = (beforeMatch.match(/'/g) || []).length\n\n          // If we're inside quotes, don't transform\n          if (openQuotes % 2 !== 0 || openSingleQuotes % 2 !== 0) {\n            return match\n          }\n\n          return \"__SLOT_PLACEHOLDER__\"\n        }\n      )\n\n      // Finally, replace all placeholders with SlotPrimitive.Slot\n      transformedLine = transformedLine.replace(\n        /__SLOT_PLACEHOLDER__/g,\n        \"SlotPrimitive.Slot\"\n      )\n\n      return transformedLine\n    })\n\n    result = transformedLines.join(\"\\n\")\n  }\n\n  // Remove duplicate packages\n  const uniqueReplacedPackages = Array.from(new Set(replacedPackages))\n\n  return {\n    content: result,\n    replacedPackages: uniqueReplacedPackages,\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/migrations/migrate-rtl.test.ts",
    "content": "import { transformDirection } from \"@/src/utils/transformers/transform-rtl\"\nimport { describe, expect, it } from \"vitest\"\n\ndescribe(\"migrateRtl\", () => {\n  describe(\"transformDirection\", () => {\n    it(\"should transform className string literals\", async () => {\n      const input = `\nimport * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"ml-2 mr-4 text-left\">content</div>\n}`\n\n      const result = await transformDirection(input, true)\n      expect(result).toContain(\"ms-2\")\n      expect(result).toContain(\"me-4\")\n      expect(result).toContain(\"text-start\")\n    })\n\n    it(\"should transform cn() function arguments\", async () => {\n      const input = `\nimport * as React from \"react\"\n\nexport function Component() {\n  return <div className={cn(\"ml-2 mr-4\", true && \"pl-2\")}>content</div>\n}`\n\n      const result = await transformDirection(input, true)\n      expect(result).toContain(\"ms-2\")\n      expect(result).toContain(\"me-4\")\n      expect(result).toContain(\"ps-2\")\n    })\n\n    it(\"should transform cva base classes and variants\", async () => {\n      const input = `\nimport { cva } from \"class-variance-authority\"\n\nconst buttonVariants = cva(\"ml-2 mr-4\", {\n  variants: {\n    size: {\n      default: \"pl-4 pr-4\",\n      sm: \"pl-2 pr-2\",\n    },\n  },\n})`\n\n      const result = await transformDirection(input, true)\n      expect(result).toContain(\"ms-2\")\n      expect(result).toContain(\"me-4\")\n      expect(result).toContain(\"ps-4\")\n      expect(result).toContain(\"pe-4\")\n      expect(result).toContain(\"ps-2\")\n      expect(result).toContain(\"pe-2\")\n    })\n\n    it(\"should not transform when rtl is false\", async () => {\n      const input = `\nimport * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"ml-2 mr-4 text-left\">content</div>\n}`\n\n      const result = await transformDirection(input, false)\n      expect(result).toContain(\"ml-2\")\n      expect(result).toContain(\"mr-4\")\n      expect(result).toContain(\"text-left\")\n      expect(result).not.toContain(\"ms-2\")\n    })\n\n    it(\"should skip classes with rtl: or ltr: prefixes\", async () => {\n      const input = `\nimport * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"ml-2 rtl:mr-2 ltr:pl-4\">content</div>\n}`\n\n      const result = await transformDirection(input, true)\n      expect(result).toContain(\"ms-2\")\n      expect(result).toContain(\"rtl:mr-2\")\n      expect(result).toContain(\"ltr:pl-4\")\n    })\n\n    it(\"should add rtl: variants for translate-x classes\", async () => {\n      const input = `\nimport * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"-translate-x-1/2\">content</div>\n}`\n\n      const result = await transformDirection(input, true)\n      expect(result).toContain(\"-translate-x-1/2\")\n      expect(result).toContain(\"rtl:translate-x-1/2\")\n    })\n\n    it(\"should add rtl:space-x-reverse for space-x classes\", async () => {\n      const input = `\nimport * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"space-x-4\">content</div>\n}`\n\n      const result = await transformDirection(input, true)\n      expect(result).toContain(\"space-x-4\")\n      expect(result).toContain(\"rtl:space-x-reverse\")\n    })\n\n    it(\"should transform cn-rtl-flip marker to rtl:rotate-180\", async () => {\n      const input = `\nimport * as React from \"react\"\n\nexport function Component() {\n  return <Icon className=\"cn-rtl-flip size-4\" />\n}`\n\n      const result = await transformDirection(input, true)\n      expect(result).toContain(\"rtl:rotate-180\")\n      expect(result).toContain(\"size-4\")\n      expect(result).not.toContain(\"cn-rtl-flip\")\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/migrations/migrate-rtl.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { SHADCN_URL } from \"@/src/registry/constants\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { transformDirection } from \"@/src/utils/transformers/transform-rtl\"\nimport fg from \"fast-glob\"\nimport prompts from \"prompts\"\n\n// Files that may need manual RTL adjustments.\nconst FILES_NEEDING_MANUAL_REVIEW = [\n  \"sidebar.tsx\",\n  \"pagination.tsx\",\n  \"calendar.tsx\",\n]\n\nconst RTL_DOCS_URL = `${SHADCN_URL}/docs/rtl#manual-migration-optional`\n\nexport async function migrateRtl(\n  config: Config,\n  options: { yes?: boolean; path?: string } = {}\n) {\n  // Determine files to migrate.\n  let files: string[]\n  let basePath: string\n\n  if (options.path) {\n    // User provided a path/glob.\n    basePath = config.resolvedPaths.cwd\n    const isGlob = options.path.includes(\"*\")\n\n    if (isGlob) {\n      files = await fg(options.path, {\n        cwd: basePath,\n        onlyFiles: true,\n        ignore: [\"**/node_modules/**\"],\n      })\n    } else {\n      const fullPath = path.resolve(basePath, options.path)\n      const stat = await fs.stat(fullPath).catch(() => null)\n\n      if (!stat) {\n        throw new Error(`File not found: ${options.path}`)\n      }\n\n      if (stat.isDirectory()) {\n        basePath = fullPath\n        files = await fg(\"**/*.{js,ts,jsx,tsx}\", {\n          cwd: basePath,\n          onlyFiles: true,\n          ignore: [\"**/node_modules/**\"],\n        })\n      } else if (stat.isFile()) {\n        files = [options.path]\n      } else {\n        throw new Error(`Unsupported path type: ${options.path}`)\n      }\n    }\n\n    if (files.length === 0) {\n      throw new Error(`No files found matching: ${options.path}`)\n    }\n  } else {\n    // Default: use ui path from components.json.\n    if (!config.resolvedPaths.ui) {\n      throw new Error(\n        \"Could not find a valid `ui` path in your `components.json`. Please provide a path or glob pattern.\"\n      )\n    }\n\n    basePath = config.resolvedPaths.ui\n    files = await fg(\"**/*.{js,ts,jsx,tsx}\", {\n      cwd: basePath,\n      onlyFiles: true,\n    })\n  }\n\n  // Confirm with user.\n  if (!options.yes) {\n    const relativePath = options.path\n      ? options.path\n      : `./${path.relative(config.resolvedPaths.cwd, basePath)}`\n\n    const { confirm } = await prompts({\n      type: \"confirm\",\n      name: \"confirm\",\n      initial: true,\n      message: `We will migrate ${highlighter.info(\n        files.length\n      )} file(s) in ${highlighter.info(relativePath)} to RTL. Continue?`,\n    })\n\n    if (!confirm) {\n      logger.info(\"Migration cancelled.\")\n      process.exit(0)\n    }\n  }\n\n  // Update components.json to set rtl: true.\n  const configSpinner = spinner(\"Updating components.json...\").start()\n  try {\n    const configPath = path.resolve(config.resolvedPaths.cwd, \"components.json\")\n    const existingConfig = JSON.parse(await fs.readFile(configPath, \"utf-8\"))\n    existingConfig.rtl = true\n    await fs.writeFile(\n      configPath,\n      JSON.stringify(existingConfig, null, 2) + \"\\n\"\n    )\n    configSpinner.succeed(\"Updated components.json.\")\n  } catch {\n    configSpinner.fail(\"Failed to update components.json.\")\n    throw new Error(\n      \"Could not update components.json. Please manually set `rtl: true`.\"\n    )\n  }\n\n  // Transform files.\n  const migrationSpinner = spinner(\"Migrating files to RTL...\").start()\n  let transformedCount = 0\n  const filesNeedingReview: string[] = []\n\n  await Promise.all(\n    files.map(async (file) => {\n      migrationSpinner.text = `Migrating ${file}...`\n\n      const filePath = path.join(basePath, file)\n      const content = await fs.readFile(filePath, \"utf-8\")\n      const transformed = await transformDirection(content, true)\n\n      // Only write if content changed.\n      if (transformed !== content) {\n        await fs.writeFile(filePath, transformed)\n        transformedCount++\n      }\n\n      // Check if this file needs manual review.\n      const fileName = path.basename(file)\n      if (FILES_NEEDING_MANUAL_REVIEW.includes(fileName)) {\n        filesNeedingReview.push(file)\n      }\n    })\n  )\n\n  migrationSpinner.succeed(\n    `Migration complete. ${transformedCount} file(s) transformed.`\n  )\n\n  // Show message for files that need manual review.\n  if (filesNeedingReview.length > 0) {\n    logger.break()\n    logger.warn(\"The following components may need manual RTL adjustments:\")\n    for (const file of filesNeedingReview) {\n      logger.info(`  - ${file}`)\n    }\n    logger.break()\n    logger.info(`See ${highlighter.info(RTL_DOCS_URL)} for more information.`)\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/preflights/preflight-add.ts",
    "content": "import path from \"path\"\nimport { addOptionsSchema } from \"@/src/commands/add\"\nimport { SHADCN_URL } from \"@/src/registry/constants\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport { getConfig } from \"@/src/utils/get-config\"\nimport {\n  formatMonorepoMessage,\n  getMonorepoTargets,\n  isMonorepoRoot,\n} from \"@/src/utils/get-monorepo-info\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport fs from \"fs-extra\"\nimport { z } from \"zod\"\n\nexport async function preFlightAdd(options: z.infer<typeof addOptionsSchema>) {\n  const errors: Record<string, boolean> = {}\n\n  // Ensure target directory exists.\n  // Check for empty project. We assume if no package.json exists, the project is empty.\n  if (\n    !fs.existsSync(options.cwd) ||\n    !fs.existsSync(path.resolve(options.cwd, \"package.json\"))\n  ) {\n    errors[ERRORS.MISSING_DIR_OR_EMPTY_PROJECT] = true\n    return {\n      errors,\n      config: null,\n    }\n  }\n\n  // Check for existing components.json file.\n  if (!fs.existsSync(path.resolve(options.cwd, \"components.json\"))) {\n    // Check if we're in a monorepo root.\n    if (await isMonorepoRoot(options.cwd)) {\n      const targets = await getMonorepoTargets(options.cwd)\n      if (targets.length > 0) {\n        formatMonorepoMessage(\"add [component]\", targets)\n        process.exit(1)\n      }\n    }\n\n    errors[ERRORS.MISSING_CONFIG] = true\n    return {\n      errors,\n      config: null,\n    }\n  }\n\n  try {\n    const config = await getConfig(options.cwd)\n\n    return {\n      errors,\n      config: config!,\n    }\n  } catch (error) {\n    logger.break()\n    logger.error(\n      `An invalid ${highlighter.info(\n        \"components.json\"\n      )} file was found at ${highlighter.info(\n        options.cwd\n      )}.\\nBefore you can add components, you must create a valid ${highlighter.info(\n        \"components.json\"\n      )} file by running the ${highlighter.info(\"init\")} command.`\n    )\n    logger.error(\n      `Learn more at ${highlighter.info(`${SHADCN_URL}/docs/components-json`)}.`\n    )\n    logger.break()\n    process.exit(1)\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/preflights/preflight-build.ts",
    "content": "import path from \"path\"\nimport { buildOptionsSchema } from \"@/src/commands/build\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport fs from \"fs-extra\"\nimport { z } from \"zod\"\n\nexport async function preFlightBuild(\n  options: z.infer<typeof buildOptionsSchema>\n) {\n  const errors: Record<string, boolean> = {}\n\n  const resolvePaths = {\n    cwd: options.cwd,\n    registryFile: path.resolve(options.cwd, options.registryFile),\n    outputDir: path.resolve(options.cwd, options.outputDir),\n  }\n\n  // Ensure registry file exists.\n  if (!fs.existsSync(resolvePaths.registryFile)) {\n    errors[ERRORS.BUILD_MISSING_REGISTRY_FILE] = true\n  }\n\n  // Create output directory if it doesn't exist.\n  await fs.mkdir(resolvePaths.outputDir, { recursive: true })\n\n  if (Object.keys(errors).length > 0) {\n    if (errors[ERRORS.BUILD_MISSING_REGISTRY_FILE]) {\n      logger.break()\n      logger.error(\n        `The path ${highlighter.info(\n          resolvePaths.registryFile\n        )} does not exist.`\n      )\n    }\n\n    logger.break()\n    process.exit(1)\n  }\n\n  return {\n    errors,\n    resolvePaths,\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/preflights/preflight-init.ts",
    "content": "import path from \"path\"\nimport { initOptionsSchema } from \"@/src/commands/init\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport {\n  formatMonorepoMessage,\n  getMonorepoTargets,\n  isMonorepoRoot,\n} from \"@/src/utils/get-monorepo-info\"\nimport { getProjectInfo } from \"@/src/utils/get-project-info\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport fs from \"fs-extra\"\nimport { z } from \"zod\"\n\nexport async function preFlightInit(\n  options: z.infer<typeof initOptionsSchema>\n) {\n  const errors: Record<string, boolean> = {}\n\n  // Ensure target directory exists.\n  // Check for empty project. We assume if no package.json exists, the project is empty.\n  if (\n    !fs.existsSync(options.cwd) ||\n    !fs.existsSync(path.resolve(options.cwd, \"package.json\"))\n  ) {\n    errors[ERRORS.MISSING_DIR_OR_EMPTY_PROJECT] = true\n    return {\n      errors,\n      projectInfo: null,\n    }\n  }\n\n  const projectSpinner = spinner(`Preflight checks.`, {\n    silent: options.silent,\n  }).start()\n\n  if (\n    fs.existsSync(path.resolve(options.cwd, \"components.json\")) &&\n    !options.force\n  ) {\n    projectSpinner?.fail()\n    logger.break()\n    logger.error(\n      `A ${highlighter.info(\n        \"components.json\"\n      )} file already exists at ${highlighter.info(\n        options.cwd\n      )}.\\nTo start over, remove the ${highlighter.info(\n        \"components.json\"\n      )} file and run ${highlighter.info(\"init\")} again.`\n    )\n    logger.break()\n    process.exit(1)\n  }\n\n  projectSpinner?.succeed()\n\n  const frameworkSpinner = spinner(`Verifying framework.`, {\n    silent: options.silent,\n  }).start()\n  const tailwind = options.existingConfig?.tailwind as\n    | Record<string, unknown>\n    | undefined\n  const projectInfo = await getProjectInfo(options.cwd, {\n    configCssFile: typeof tailwind?.css === \"string\" ? tailwind.css : undefined,\n  })\n  if (!projectInfo || projectInfo?.framework.name === \"manual\") {\n    errors[ERRORS.UNSUPPORTED_FRAMEWORK] = true\n    frameworkSpinner?.fail()\n\n    // Check if we're in a monorepo root.\n    // Skip when --monorepo is set.\n    if (!options.monorepo && (await isMonorepoRoot(options.cwd))) {\n      const targets = await getMonorepoTargets(options.cwd)\n      if (targets.length > 0) {\n        formatMonorepoMessage(\"init\", targets)\n        process.exit(1)\n      }\n    }\n\n    logger.break()\n    if (projectInfo?.framework.links.installation) {\n      logger.error(\n        `We could not detect a supported framework at ${highlighter.info(\n          options.cwd\n        )}.\\n` +\n          `Visit ${highlighter.info(\n            projectInfo?.framework.links.installation\n          )} to manually configure your project.\\nOnce configured, you can use the cli to add components.`\n      )\n    }\n    logger.break()\n    process.exit(1)\n  }\n  frameworkSpinner?.succeed(\n    `Verifying framework. Found ${highlighter.info(\n      projectInfo.framework.label\n    )}.`\n  )\n\n  let tailwindSpinnerMessage = \"Validating Tailwind CSS.\"\n\n  if (projectInfo.tailwindVersion === \"v4\") {\n    tailwindSpinnerMessage = `Validating Tailwind CSS. Found ${highlighter.info(\n      \"v4\"\n    )}.`\n  }\n\n  const tailwindSpinner = spinner(tailwindSpinnerMessage, {\n    silent: options.silent,\n  }).start()\n  if (\n    projectInfo.tailwindVersion === \"v3\" &&\n    (!projectInfo?.tailwindConfigFile || !projectInfo?.tailwindCssFile)\n  ) {\n    errors[ERRORS.TAILWIND_NOT_CONFIGURED] = true\n    tailwindSpinner?.fail()\n  } else if (\n    projectInfo.tailwindVersion === \"v4\" &&\n    !projectInfo?.tailwindCssFile\n  ) {\n    errors[ERRORS.TAILWIND_NOT_CONFIGURED] = true\n    tailwindSpinner?.fail()\n  } else if (!projectInfo.tailwindVersion) {\n    errors[ERRORS.TAILWIND_NOT_CONFIGURED] = true\n    tailwindSpinner?.fail()\n  } else {\n    tailwindSpinner?.succeed()\n  }\n\n  const tsConfigSpinner = spinner(`Validating import alias.`, {\n    silent: options.silent,\n  }).start()\n  if (!projectInfo?.aliasPrefix) {\n    errors[ERRORS.IMPORT_ALIAS_MISSING] = true\n    tsConfigSpinner?.fail()\n  } else {\n    tsConfigSpinner?.succeed()\n  }\n\n  if (Object.keys(errors).length > 0) {\n    if (errors[ERRORS.TAILWIND_NOT_CONFIGURED]) {\n      logger.break()\n      logger.error(\n        `No Tailwind CSS configuration found at ${highlighter.info(\n          options.cwd\n        )}.`\n      )\n      logger.error(\n        `It is likely you do not have Tailwind CSS installed or have an invalid configuration.`\n      )\n      logger.error(`Install Tailwind CSS then try again.`)\n      if (projectInfo?.framework.links.tailwind) {\n        logger.error(\n          `Visit ${highlighter.info(\n            projectInfo?.framework.links.tailwind\n          )} to get started.`\n        )\n      }\n    }\n\n    if (errors[ERRORS.IMPORT_ALIAS_MISSING]) {\n      logger.break()\n      logger.error(`No import alias found in your tsconfig.json file.`)\n      if (projectInfo?.framework.links.installation) {\n        logger.error(\n          `Visit ${highlighter.info(\n            projectInfo?.framework.links.installation\n          )} to learn how to set an import alias.`\n        )\n      }\n    }\n\n    logger.break()\n    process.exit(1)\n  }\n\n  return {\n    errors,\n    projectInfo,\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/preflights/preflight-migrate.ts",
    "content": "import path from \"path\"\nimport { addOptionsSchema } from \"@/src/commands/add\"\nimport { migrateOptionsSchema } from \"@/src/commands/migrate\"\nimport { SHADCN_URL } from \"@/src/registry/constants\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport { getConfig } from \"@/src/utils/get-config\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport fs from \"fs-extra\"\nimport { z } from \"zod\"\n\nexport async function preFlightMigrate(\n  options: z.infer<typeof migrateOptionsSchema>\n) {\n  const errors: Record<string, boolean> = {}\n\n  // Ensure target directory exists.\n  // Check for empty project. We assume if no package.json exists, the project is empty.\n  if (\n    !fs.existsSync(options.cwd) ||\n    !fs.existsSync(path.resolve(options.cwd, \"package.json\"))\n  ) {\n    errors[ERRORS.MISSING_DIR_OR_EMPTY_PROJECT] = true\n    return {\n      errors,\n      config: null,\n    }\n  }\n\n  // Check for existing components.json file.\n  if (!fs.existsSync(path.resolve(options.cwd, \"components.json\"))) {\n    errors[ERRORS.MISSING_CONFIG] = true\n    return {\n      errors,\n      config: null,\n    }\n  }\n\n  try {\n    const config = await getConfig(options.cwd)\n\n    return {\n      errors,\n      config: config!,\n    }\n  } catch (error) {\n    logger.break()\n    logger.error(\n      `An invalid ${highlighter.info(\n        \"components.json\"\n      )} file was found at ${highlighter.info(\n        options.cwd\n      )}.\\nBefore you can run a migration, you must create a valid ${highlighter.info(\n        \"components.json\"\n      )} file by running the ${highlighter.info(\"init\")} command.`\n    )\n    logger.error(\n      `Learn more at ${highlighter.info(`${SHADCN_URL}/docs/components-json`)}.`\n    )\n    logger.break()\n    process.exit(1)\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/preflights/preflight-registry.ts",
    "content": "import path from \"path\"\nimport { buildOptionsSchema } from \"@/src/commands/build\"\nimport * as ERRORS from \"@/src/utils/errors\"\nimport { getConfig } from \"@/src/utils/get-config\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport fs from \"fs-extra\"\nimport { z } from \"zod\"\n\nexport async function preFlightRegistryBuild(\n  options: z.infer<typeof buildOptionsSchema>\n) {\n  const errors: Record<string, boolean> = {}\n\n  const resolvePaths = {\n    cwd: options.cwd,\n    registryFile: path.resolve(options.cwd, options.registryFile),\n    outputDir: path.resolve(options.cwd, options.outputDir),\n  }\n\n  // Ensure registry file exists.\n  if (!fs.existsSync(resolvePaths.registryFile)) {\n    errors[ERRORS.BUILD_MISSING_REGISTRY_FILE] = true\n    return {\n      errors,\n      resolvePaths: null,\n      config: null,\n    }\n  }\n\n  // Check for existing components.json file.\n  if (!fs.existsSync(path.resolve(options.cwd, \"components.json\"))) {\n    errors[ERRORS.MISSING_CONFIG] = true\n    return {\n      errors,\n      resolvePaths: null,\n      config: null,\n    }\n  }\n\n  // Create output directory if it doesn't exist.\n  await fs.mkdir(resolvePaths.outputDir, { recursive: true })\n\n  try {\n    const config = await getConfig(options.cwd)\n\n    return {\n      errors,\n      config: config!,\n      resolvePaths,\n    }\n  } catch (error) {\n    logger.break()\n    logger.error(\n      `An invalid ${highlighter.info(\n        \"components.json\"\n      )} file was found at ${highlighter.info(\n        options.cwd\n      )}.\\nBefore you can build the registry, you must create a valid ${highlighter.info(\n        \"components.json\"\n      )} file by running the ${highlighter.info(\"init\")} command.`\n    )\n    logger.break()\n    process.exit(1)\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/preset/index.ts",
    "content": "// Browser-safe re-export of preset utilities.\n// Use `shadcn/preset` for client-side code.\nexport {\n  PRESET_BASES,\n  PRESET_STYLES,\n  PRESET_BASE_COLORS,\n  PRESET_THEMES,\n  PRESET_ICON_LIBRARIES,\n  PRESET_FONTS,\n  PRESET_FONT_HEADINGS,\n  PRESET_RADII,\n  PRESET_MENU_ACCENTS,\n  PRESET_MENU_COLORS,\n  PRESET_CHART_COLORS,\n  V1_CHART_COLOR_MAP,\n  DEFAULT_PRESET_CONFIG,\n  toBase62,\n  fromBase62,\n  encodePreset,\n  decodePreset,\n  isPresetCode,\n  isValidPreset,\n  generateRandomConfig,\n  generateRandomPreset,\n  type PresetConfig,\n} from \"./preset\"\n"
  },
  {
    "path": "packages/shadcn/src/preset/preset.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport {\n  decodePreset,\n  DEFAULT_PRESET_CONFIG,\n  encodePreset,\n  fromBase62,\n  generateRandomPreset,\n  isPresetCode,\n  isValidPreset,\n  PRESET_BASE_COLORS,\n  PRESET_CHART_COLORS,\n  PRESET_FONT_HEADINGS,\n  PRESET_FONTS,\n  PRESET_ICON_LIBRARIES,\n  PRESET_MENU_ACCENTS,\n  PRESET_MENU_COLORS,\n  PRESET_RADII,\n  PRESET_STYLES,\n  PRESET_THEMES,\n  toBase62,\n  type PresetConfig,\n} from \"./preset\"\n\ndescribe(\"base62\", () => {\n  it(\"should round-trip numbers\", () => {\n    for (const n of [0, 1, 61, 62, 100, 1000, 8388607]) {\n      expect(fromBase62(toBase62(n))).toBe(n)\n    }\n  })\n\n  it(\"should encode 0 as '0'\", () => {\n    expect(toBase62(0)).toBe(\"0\")\n  })\n\n  it(\"should return -1 for invalid base62 characters\", () => {\n    expect(fromBase62(\"!@#\")).toBe(-1)\n  })\n})\n\ndescribe(\"encodePreset / decodePreset\", () => {\n  it(\"should round-trip the default config\", () => {\n    const code = encodePreset(DEFAULT_PRESET_CONFIG)\n    const decoded = decodePreset(code)\n    expect(decoded).toEqual(DEFAULT_PRESET_CONFIG)\n  })\n\n  it(\"should round-trip a custom config\", () => {\n    const config: PresetConfig = {\n      style: \"lyra\",\n      baseColor: \"zinc\",\n      theme: \"blue\",\n      chartColor: \"emerald\",\n      iconLibrary: \"tabler\",\n      font: \"jetbrains-mono\",\n      fontHeading: \"playfair-display\",\n      radius: \"large\",\n      menuAccent: \"bold\",\n      menuColor: \"inverted\",\n    }\n    const code = encodePreset(config)\n    const decoded = decodePreset(code)\n    expect(decoded).toEqual(config)\n  })\n\n  it(\"should produce short codes (max 10 chars)\", () => {\n    const code = encodePreset(DEFAULT_PRESET_CONFIG)\n    expect(code.length).toBeLessThanOrEqual(10)\n  })\n\n  it(\"should start with the version character\", () => {\n    const code = encodePreset(DEFAULT_PRESET_CONFIG)\n    expect(code[0]).toBe(\"b\")\n  })\n\n  it(\"should handle partial config by filling defaults\", () => {\n    const code = encodePreset({ style: \"lyra\" })\n    const decoded = decodePreset(code)\n    expect(decoded).not.toBeNull()\n    expect(decoded!.style).toBe(\"lyra\")\n    expect(decoded!.theme).toBe(DEFAULT_PRESET_CONFIG.theme)\n  })\n\n  it(\"should round-trip all styles\", () => {\n    for (const style of PRESET_STYLES) {\n      const code = encodePreset({ style })\n      const decoded = decodePreset(code)\n      expect(decoded).not.toBeNull()\n      expect(decoded!.style).toBe(style)\n    }\n  })\n\n  it(\"should round-trip all themes\", () => {\n    for (const theme of PRESET_THEMES) {\n      const code = encodePreset({ theme })\n      const decoded = decodePreset(code)\n      expect(decoded!.theme).toBe(theme)\n    }\n  })\n\n  it(\"should round-trip all fonts\", () => {\n    for (const font of PRESET_FONTS) {\n      const code = encodePreset({ font })\n      const decoded = decodePreset(code)\n      expect(decoded!.font).toBe(font)\n    }\n  })\n\n  it(\"should round-trip all font headings\", () => {\n    for (const fontHeading of PRESET_FONT_HEADINGS) {\n      const code = encodePreset({ fontHeading })\n      const decoded = decodePreset(code)\n      expect(decoded!.fontHeading).toBe(fontHeading)\n    }\n  })\n\n  it(\"should round-trip all icon libraries\", () => {\n    for (const iconLibrary of PRESET_ICON_LIBRARIES) {\n      const code = encodePreset({ iconLibrary })\n      const decoded = decodePreset(code)\n      expect(decoded!.iconLibrary).toBe(iconLibrary)\n    }\n  })\n\n  it(\"should round-trip all radii\", () => {\n    for (const radius of PRESET_RADII) {\n      const code = encodePreset({ radius })\n      const decoded = decodePreset(code)\n      expect(decoded!.radius).toBe(radius)\n    }\n  })\n\n  it(\"should round-trip all base colors\", () => {\n    for (const baseColor of PRESET_BASE_COLORS) {\n      const code = encodePreset({ baseColor })\n      const decoded = decodePreset(code)\n      expect(decoded!.baseColor).toBe(baseColor)\n    }\n  })\n\n  it(\"should round-trip all chart colors\", () => {\n    for (const chartColor of PRESET_CHART_COLORS) {\n      const code = encodePreset({ chartColor })\n      const decoded = decodePreset(code)\n      expect(decoded!.chartColor).toBe(chartColor)\n    }\n  })\n\n  it(\"should round-trip all menu accents and colors\", () => {\n    for (const menuAccent of PRESET_MENU_ACCENTS) {\n      for (const menuColor of PRESET_MENU_COLORS) {\n        const code = encodePreset({ menuAccent, menuColor })\n        const decoded = decodePreset(code)\n        expect(decoded!.menuAccent).toBe(menuAccent)\n        expect(decoded!.menuColor).toBe(menuColor)\n      }\n    }\n  })\n\n  it(\"should round-trip default-translucent menu color\", () => {\n    const code = encodePreset({ menuColor: \"default-translucent\" })\n    const decoded = decodePreset(code)\n    expect(decoded!.menuColor).toBe(\"default-translucent\")\n  })\n})\n\ndescribe(\"decodePreset edge cases\", () => {\n  it(\"should return null for empty string\", () => {\n    expect(decodePreset(\"\")).toBeNull()\n  })\n\n  it(\"should return null for single character\", () => {\n    expect(decodePreset(\"A\")).toBeNull()\n  })\n\n  it(\"should return null for wrong version prefix\", () => {\n    expect(decodePreset(\"c123\")).toBeNull()\n  })\n\n  it(\"should return null for invalid base62 characters\", () => {\n    expect(decodePreset(\"A!@#\")).toBeNull()\n  })\n})\n\ndescribe(\"v1/v2 backward compatibility\", () => {\n  it(\"should decode old 'a'-prefixed codes without chartColor\", () => {\n    const decoded = decodePreset(\"a0\")\n    expect(decoded).not.toBeNull()\n    expect(decoded!.style).toBe(\"nova\")\n    expect(decoded!.theme).toBe(\"neutral\")\n    expect(decoded!.chartColor).toBeUndefined()\n    expect(decoded!.fontHeading).toBe(\"inherit\")\n  })\n\n  it(\"should decode new 'b'-prefixed codes with chartColor\", () => {\n    const code = encodePreset({ theme: \"blue\", chartColor: \"emerald\" })\n    expect(code[0]).toBe(\"b\")\n    const decoded = decodePreset(code)\n    expect(decoded).not.toBeNull()\n    expect(decoded!.theme).toBe(\"blue\")\n    expect(decoded!.chartColor).toBe(\"emerald\")\n  })\n\n  it(\"should decode old b-prefixed codes with fontHeading defaulting to inherit\", () => {\n    const decoded = decodePreset(\"b0\")\n    expect(decoded).not.toBeNull()\n    expect(decoded!.fontHeading).toBe(\"inherit\")\n  })\n\n  it(\"should encode always produces 'b'-prefixed codes\", () => {\n    const code = encodePreset({})\n    expect(code[0]).toBe(\"b\")\n  })\n\n  it(\"should accept both 'a' and 'b' in isPresetCode\", () => {\n    expect(isPresetCode(\"a0\")).toBe(true)\n    expect(isPresetCode(\"b0\")).toBe(true)\n    expect(isPresetCode(\"c0\")).toBe(false)\n  })\n})\n\ndescribe(\"isPresetCode\", () => {\n  it(\"should return true for valid preset codes\", () => {\n    const code = encodePreset(DEFAULT_PRESET_CONFIG)\n    expect(isPresetCode(code)).toBe(true)\n  })\n\n  it(\"should return false for empty string\", () => {\n    expect(isPresetCode(\"\")).toBe(false)\n  })\n\n  it(\"should return false for URLs\", () => {\n    expect(isPresetCode(\"https://ui.shadcn.com/init?foo=bar\")).toBe(false)\n  })\n\n  it(\"should return false for named presets\", () => {\n    expect(isPresetCode(\"radix-nova\")).toBe(false)\n  })\n\n  it(\"should return false for strings that are too long\", () => {\n    expect(isPresetCode(\"A1234567890\")).toBe(false)\n  })\n\n  it(\"should return false for invalid characters after version\", () => {\n    expect(isPresetCode(\"A!@#\")).toBe(false)\n  })\n})\n\ndescribe(\"isValidPreset\", () => {\n  it(\"should return true for encodable presets\", () => {\n    const code = encodePreset(DEFAULT_PRESET_CONFIG)\n    expect(isValidPreset(code)).toBe(true)\n  })\n\n  it(\"should return false for invalid codes\", () => {\n    expect(isValidPreset(\"\")).toBe(false)\n    expect(isValidPreset(\"c123\")).toBe(false)\n  })\n})\n\ndescribe(\"generateRandomPreset\", () => {\n  it(\"should produce a valid preset code\", () => {\n    const code = generateRandomPreset()\n    expect(isPresetCode(code)).toBe(true)\n    expect(isValidPreset(code)).toBe(true)\n  })\n\n  it(\"should round-trip through decode\", () => {\n    const code = generateRandomPreset()\n    const decoded = decodePreset(code)\n    expect(decoded).not.toBeNull()\n    const reEncoded = encodePreset(decoded!)\n    expect(reEncoded).toBe(code)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/preset/preset.ts",
    "content": "// Preset encoding/decoding utilities.\n// Bit-packs design system params into a single integer,\n// then encodes as base62 with a version prefix character.\n// Browser-safe: no Node.js dependencies.\n//\n// Rules for backward compat:\n//   1. Never reorder existing value arrays — only append.\n//   2. New fields must have their default at index 0.\n//   3. Only append new fields to the end of PRESET_FIELDS.\n//   4. Stay under 53 bits total (JS safe integer limit).\n\n// Value arrays — order matters for backward compat. Never reorder, only append.\nexport const PRESET_BASES = [\"radix\", \"base\"] as const\n\nexport const PRESET_STYLES = [\"nova\", \"vega\", \"maia\", \"lyra\", \"mira\"] as const\n\nexport const PRESET_BASE_COLORS = [\n  \"neutral\",\n  \"stone\",\n  \"zinc\",\n  \"gray\",\n  \"mauve\",\n  \"olive\",\n  \"mist\",\n  \"taupe\",\n] as const\n\nexport const PRESET_THEMES = [\n  \"neutral\",\n  \"stone\",\n  \"zinc\",\n  \"gray\",\n  \"amber\",\n  \"blue\",\n  \"cyan\",\n  \"emerald\",\n  \"fuchsia\",\n  \"green\",\n  \"indigo\",\n  \"lime\",\n  \"orange\",\n  \"pink\",\n  \"purple\",\n  \"red\",\n  \"rose\",\n  \"sky\",\n  \"teal\",\n  \"violet\",\n  \"yellow\",\n  \"mauve\",\n  \"olive\",\n  \"mist\",\n  \"taupe\",\n] as const\n\nexport const PRESET_CHART_COLORS = PRESET_THEMES\n\n// Before v2, base-color themes had colored chart palettes\n// borrowed from these colored themes. Used by consumers to\n// restore the original chart colors when decoding v1 presets.\nexport const V1_CHART_COLOR_MAP: Record<string, string> = {\n  neutral: \"blue\",\n  stone: \"lime\",\n  zinc: \"amber\",\n  mauve: \"emerald\",\n  olive: \"violet\",\n  mist: \"rose\",\n  taupe: \"cyan\",\n}\n\nexport const PRESET_ICON_LIBRARIES = [\n  \"lucide\",\n  \"hugeicons\",\n  \"tabler\",\n  \"phosphor\",\n  \"remixicon\",\n] as const\n\nexport const PRESET_FONTS = [\n  \"inter\",\n  \"noto-sans\",\n  \"nunito-sans\",\n  \"figtree\",\n  \"roboto\",\n  \"raleway\",\n  \"dm-sans\",\n  \"public-sans\",\n  \"outfit\",\n  \"jetbrains-mono\",\n  \"geist\",\n  \"geist-mono\",\n  \"lora\",\n  \"merriweather\",\n  \"playfair-display\",\n  \"noto-serif\",\n  \"roboto-slab\",\n  \"oxanium\",\n  \"manrope\",\n  \"space-grotesk\",\n  \"montserrat\",\n  \"ibm-plex-sans\",\n  \"source-sans-3\",\n  \"instrument-sans\",\n] as const\nexport const PRESET_FONT_HEADINGS = [\"inherit\", ...PRESET_FONTS] as const\n\nexport const PRESET_RADII = [\n  \"default\",\n  \"none\",\n  \"small\",\n  \"medium\",\n  \"large\",\n] as const\n\nexport const PRESET_MENU_ACCENTS = [\"subtle\", \"bold\"] as const\nexport const PRESET_MENU_COLORS = [\n  \"default\",\n  \"inverted\",\n  \"default-translucent\",\n  \"inverted-translucent\",\n] as const\n\n// V1 fields (version \"a\"): 40 bits. No chartColor.\nconst PRESET_FIELDS_V1 = [\n  { key: \"menuColor\", values: PRESET_MENU_COLORS, bits: 3 },\n  { key: \"menuAccent\", values: PRESET_MENU_ACCENTS, bits: 3 },\n  { key: \"radius\", values: PRESET_RADII, bits: 4 },\n  { key: \"font\", values: PRESET_FONTS, bits: 6 },\n  { key: \"iconLibrary\", values: PRESET_ICON_LIBRARIES, bits: 6 },\n  { key: \"theme\", values: PRESET_THEMES, bits: 6 },\n  { key: \"baseColor\", values: PRESET_BASE_COLORS, bits: 6 },\n  { key: \"style\", values: PRESET_STYLES, bits: 6 },\n] as const\n\n// V2 fields (version \"b\"): 51 bits. Adds chartColor and fontHeading.\nconst PRESET_FIELDS_V2 = [\n  ...PRESET_FIELDS_V1,\n  { key: \"chartColor\", values: PRESET_CHART_COLORS, bits: 6 },\n  { key: \"fontHeading\", values: PRESET_FONT_HEADINGS, bits: 5 },\n] as const\n\nexport type PresetConfig = {\n  style: (typeof PRESET_STYLES)[number]\n  baseColor: (typeof PRESET_BASE_COLORS)[number]\n  theme: (typeof PRESET_THEMES)[number]\n  chartColor?: (typeof PRESET_CHART_COLORS)[number]\n  iconLibrary: (typeof PRESET_ICON_LIBRARIES)[number]\n  font: (typeof PRESET_FONTS)[number]\n  fontHeading: (typeof PRESET_FONT_HEADINGS)[number]\n  radius: (typeof PRESET_RADII)[number]\n  menuAccent: (typeof PRESET_MENU_ACCENTS)[number]\n  menuColor: (typeof PRESET_MENU_COLORS)[number]\n}\n\nexport const DEFAULT_PRESET_CONFIG: PresetConfig = Object.fromEntries(\n  PRESET_FIELDS_V2.map((f) => [f.key, f.values[0]])\n) as PresetConfig\n\n// Base62 alphabet.\nconst BASE62 = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"\n\n// Version prefixes — \"a\" = v1 (no chartColor), \"b\" = v2 (with chartColor).\nconst CURRENT_VERSION = \"b\"\nconst VALID_VERSIONS = [\"a\", \"b\"] as const\n\nexport function toBase62(num: number) {\n  if (num === 0) return \"0\"\n  let result = \"\"\n  let n = num\n  while (n > 0) {\n    result = BASE62[n % 62] + result\n    n = Math.floor(n / 62)\n  }\n  return result\n}\n\nexport function fromBase62(str: string) {\n  let result = 0\n  for (let i = 0; i < str.length; i++) {\n    const idx = BASE62.indexOf(str[i])\n    if (idx === -1) return -1\n    result = result * 62 + idx\n  }\n  return result\n}\n\n// Encode a PresetConfig into a short alphanumeric code.\n// Always produces v2 (\"b\") codes.\nexport function encodePreset(config: Partial<PresetConfig>) {\n  const merged = { ...DEFAULT_PRESET_CONFIG, ...config }\n\n  // Uses multiplication instead of bitwise ops (JS bitwise truncates to 32 bits).\n  let bits = 0\n  let offset = 0\n  for (const field of PRESET_FIELDS_V2) {\n    const idx = (field.values as readonly string[]).indexOf(\n      merged[field.key as keyof PresetConfig] as string\n    )\n    bits += (idx === -1 ? 0 : idx) * 2 ** offset\n    offset += field.bits\n  }\n\n  return CURRENT_VERSION + toBase62(bits)\n}\n\n// Decode a preset code back into a PresetConfig.\n// \"a\"-prefixed codes use v1 fields (no chartColor).\n// \"b\"-prefixed codes use v2 fields (with chartColor).\nexport function decodePreset(code: string): PresetConfig | null {\n  if (!code || code.length < 2) {\n    return null\n  }\n\n  const version = code[0]\n  if (!VALID_VERSIONS.includes(version as (typeof VALID_VERSIONS)[number])) {\n    return null\n  }\n\n  const fields = version === \"a\" ? PRESET_FIELDS_V1 : PRESET_FIELDS_V2\n\n  const bits = fromBase62(code.slice(1))\n  if (bits < 0) return null\n\n  const result = {} as Record<string, string>\n  let offset = 0\n  for (const field of fields) {\n    const idx = Math.floor(bits / 2 ** offset) % 2 ** field.bits\n    result[field.key] =\n      idx < field.values.length ? field.values[idx] : field.values[0]\n    offset += field.bits\n  }\n\n  if (version === \"a\") {\n    result.fontHeading = \"inherit\"\n  }\n\n  return result as PresetConfig\n}\n\n// Check if a string looks like a preset code (version char + base62).\nexport function isPresetCode(value: string) {\n  if (!value || value.length < 2 || value.length > 10) {\n    return false\n  }\n\n  if (!VALID_VERSIONS.includes(value[0] as (typeof VALID_VERSIONS)[number])) {\n    return false\n  }\n\n  for (let i = 1; i < value.length; i++) {\n    if (BASE62.indexOf(value[i]) === -1) {\n      return false\n    }\n  }\n\n  return true\n}\n\n// Validate that a preset code decodes successfully.\nexport function isValidPreset(code: string) {\n  return decodePreset(code) !== null\n}\n\n// Generate a random PresetConfig.\nexport function generateRandomConfig(): PresetConfig {\n  const pick = <T>(arr: readonly T[]) =>\n    arr[Math.floor(Math.random() * arr.length)]\n\n  return Object.fromEntries(\n    PRESET_FIELDS_V2.map((f) => [f.key, pick(f.values)])\n  ) as PresetConfig\n}\n\n// Generate a random preset code.\nexport function generateRandomPreset() {\n  return encodePreset(generateRandomConfig())\n}\n"
  },
  {
    "path": "packages/shadcn/src/preset/presets.test.ts",
    "content": "import { REGISTRY_URL } from \"@/src/registry/constants\"\nimport { describe, expect, it } from \"vitest\"\n\nimport { resolveCreateUrl, resolveInitUrl } from \"./presets\"\n\nconst SHADCN_URL = REGISTRY_URL.replace(/\\/r\\/?$/, \"\")\n\nconst mockPreset = {\n  name: \"default\",\n  title: \"Default\",\n  description: \"The default preset.\",\n  base: \"radix\",\n  style: \"new-york-v4\",\n  baseColor: \"neutral\",\n  theme: \"default\",\n  iconLibrary: \"lucide\",\n  font: \"inter\",\n  fontHeading: \"inherit\",\n  rtl: false,\n  menuAccent: \"subtle\" as const,\n  menuColor: \"default\" as const,\n  radius: \"0.5\",\n}\n\ndescribe(\"createPresetUrl\", () => {\n  it(\"should not include rtl by default\", () => {\n    const url = resolveCreateUrl()\n    const parsed = new URL(url)\n    expect(parsed.origin + parsed.pathname).toBe(`${SHADCN_URL}/create`)\n    expect(parsed.searchParams.has(\"rtl\")).toBe(false)\n  })\n\n  it(\"should append search params when provided\", () => {\n    const url = resolveCreateUrl({ rtl: true, template: \"next\" })\n    const parsed = new URL(url)\n    expect(parsed.searchParams.get(\"rtl\")).toBe(\"true\")\n    expect(parsed.searchParams.get(\"template\")).toBe(\"next\")\n  })\n})\n\ndescribe(\"buildInitUrl\", () => {\n  it(\"should build url with all preset fields as query params\", () => {\n    const url = resolveInitUrl(mockPreset)\n    const parsed = new URL(url)\n    expect(parsed.origin + parsed.pathname).toBe(`${SHADCN_URL}/init`)\n    expect(parsed.searchParams.get(\"base\")).toBe(\"radix\")\n    expect(parsed.searchParams.get(\"style\")).toBe(\"new-york-v4\")\n    expect(parsed.searchParams.get(\"baseColor\")).toBe(\"neutral\")\n    expect(parsed.searchParams.get(\"theme\")).toBe(\"default\")\n    expect(parsed.searchParams.get(\"iconLibrary\")).toBe(\"lucide\")\n    expect(parsed.searchParams.get(\"font\")).toBe(\"inter\")\n    expect(parsed.searchParams.get(\"rtl\")).toBe(\"false\")\n    expect(parsed.searchParams.get(\"menuAccent\")).toBe(\"subtle\")\n    expect(parsed.searchParams.get(\"menuColor\")).toBe(\"default\")\n    expect(parsed.searchParams.get(\"radius\")).toBe(\"0.5\")\n  })\n\n  it(\"should set rtl=true when preset.rtl is true\", () => {\n    const url = resolveInitUrl({ ...mockPreset, rtl: true })\n    const parsed = new URL(url)\n    expect(parsed.searchParams.get(\"rtl\")).toBe(\"true\")\n  })\n\n  it(\"should include template when provided\", () => {\n    const url = resolveInitUrl(mockPreset, { template: \"next\" })\n    const parsed = new URL(url)\n    expect(parsed.searchParams.get(\"template\")).toBe(\"next\")\n  })\n\n  it(\"should not include template when not provided\", () => {\n    const url = resolveInitUrl(mockPreset)\n    const parsed = new URL(url)\n    expect(parsed.searchParams.has(\"template\")).toBe(false)\n  })\n\n  it(\"should include chartColor when provided\", () => {\n    const url = resolveInitUrl({ ...mockPreset, chartColor: \"emerald\" })\n    const parsed = new URL(url)\n    expect(parsed.searchParams.get(\"chartColor\")).toBe(\"emerald\")\n  })\n\n  it(\"should not include chartColor when not provided\", () => {\n    const url = resolveInitUrl(mockPreset)\n    const parsed = new URL(url)\n    expect(parsed.searchParams.has(\"chartColor\")).toBe(false)\n  })\n\n  it(\"should include fontHeading when it is explicitly set\", () => {\n    const url = resolveInitUrl({\n      ...mockPreset,\n      fontHeading: \"playfair-display\",\n    })\n    const parsed = new URL(url)\n    expect(parsed.searchParams.get(\"fontHeading\")).toBe(\"playfair-display\")\n  })\n\n  it(\"should not include fontHeading when it inherits the body font\", () => {\n    const url = resolveInitUrl(mockPreset)\n    const parsed = new URL(url)\n    expect(parsed.searchParams.has(\"fontHeading\")).toBe(false)\n  })\n\n  it(\"should include preset code when provided\", () => {\n    const url = resolveInitUrl(mockPreset, { preset: \"a0\" })\n    const parsed = new URL(url)\n    expect(parsed.searchParams.get(\"preset\")).toBe(\"a0\")\n  })\n\n  it(\"should not include preset when not provided\", () => {\n    const url = resolveInitUrl(mockPreset)\n    const parsed = new URL(url)\n    expect(parsed.searchParams.has(\"preset\")).toBe(false)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/preset/presets.ts",
    "content": "import { getRegistryItems } from \"@/src/registry/api\"\nimport { buildUrlAndHeadersForRegistryItem } from \"@/src/registry/builder\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport { REGISTRY_URL, SHADCN_URL } from \"@/src/registry/constants\"\nimport { type registryConfigSchema } from \"@/src/registry/schema\"\nimport { isUrl } from \"@/src/registry/utils\"\nimport { createConfig } from \"@/src/utils/get-config\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { ensureRegistriesInConfig } from \"@/src/utils/registries\"\nimport open from \"open\"\nimport prompts from \"prompts\"\nimport { type z } from \"zod\"\n\nexport const DEFAULT_PRESETS = {\n  nova: {\n    title: \"Nova\",\n    description: \"Lucide / Geist\",\n    style: \"nova\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    iconLibrary: \"lucide\",\n    font: \"geist\",\n    fontHeading: \"inherit\",\n    menuAccent: \"subtle\" as const,\n    menuColor: \"default\" as const,\n\n    radius: \"default\",\n    rtl: false,\n  },\n  vega: {\n    title: \"Vega\",\n    description: \"Lucide / Inter\",\n    style: \"vega\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    iconLibrary: \"lucide\",\n    font: \"inter\",\n    fontHeading: \"inherit\",\n    menuAccent: \"subtle\" as const,\n    menuColor: \"default\" as const,\n\n    radius: \"default\",\n    rtl: false,\n  },\n  maia: {\n    title: \"Maia\",\n    description: \"Hugeicons / Figtree\",\n    style: \"maia\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    iconLibrary: \"hugeicons\",\n    font: \"figtree\",\n    fontHeading: \"inherit\",\n    menuAccent: \"subtle\" as const,\n    menuColor: \"default\" as const,\n\n    radius: \"default\",\n    rtl: false,\n  },\n  lyra: {\n    title: \"Lyra\",\n    description: \"Phosphor / JetBrains Mono\",\n    style: \"lyra\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    iconLibrary: \"phosphor\",\n    font: \"jetbrains-mono\",\n    fontHeading: \"inherit\",\n    menuAccent: \"subtle\" as const,\n    menuColor: \"default\" as const,\n\n    radius: \"default\",\n    rtl: false,\n  },\n  mira: {\n    title: \"Mira\",\n    description: \"Hugeicons / Inter\",\n    style: \"mira\",\n    baseColor: \"neutral\",\n    theme: \"neutral\",\n    iconLibrary: \"hugeicons\",\n    font: \"inter\",\n    fontHeading: \"inherit\",\n    menuAccent: \"subtle\" as const,\n    menuColor: \"default\" as const,\n\n    radius: \"default\",\n    rtl: false,\n  },\n}\n\nexport function resolveCreateUrl(\n  searchParams?: Partial<{\n    command: \"create\" | \"init\"\n    template: string\n    rtl: boolean\n    base: string\n  }>\n) {\n  const url = new URL(`${SHADCN_URL}/create`)\n  const { rtl, ...params } = searchParams ?? {}\n\n  for (const [key, value] of Object.entries(params)) {\n    if (value !== undefined) {\n      url.searchParams.set(key, String(value))\n    }\n  }\n\n  // Do not set rtl if it's false.\n  if (rtl) {\n    url.searchParams.set(\"rtl\", \"true\")\n  }\n\n  return url.toString()\n}\n\nexport function resolveInitUrl(\n  preset: {\n    base: string\n    style: string\n    baseColor: string\n    theme: string\n    chartColor?: string\n    iconLibrary: string\n    font: string\n    fontHeading?: string\n    rtl: boolean\n    menuAccent: string\n    menuColor: string\n    radius: string\n  },\n  options?: { template?: string; preset?: string }\n) {\n  const params = new URLSearchParams({\n    base: preset.base,\n    style: preset.style,\n    baseColor: preset.baseColor,\n    theme: preset.theme,\n    iconLibrary: preset.iconLibrary,\n    font: preset.font,\n    rtl: String(preset.rtl ?? false),\n    menuAccent: preset.menuAccent,\n    menuColor: preset.menuColor,\n    radius: preset.radius,\n  })\n\n  if (preset.chartColor) {\n    params.set(\"chartColor\", preset.chartColor)\n  }\n\n  if (preset.fontHeading && preset.fontHeading !== \"inherit\") {\n    params.set(\"fontHeading\", preset.fontHeading)\n  }\n\n  // Pass the original preset code so the server can apply\n  // version-specific backward-compat fixups.\n  if (options?.preset) {\n    params.set(\"preset\", options.preset)\n  }\n\n  if (options?.template) {\n    params.set(\"template\", options.template)\n  }\n\n  // Signal the server to record this init run.\n  params.set(\"track\", \"1\")\n\n  return `${SHADCN_URL}/init?${params.toString()}`\n}\n\nexport async function promptForBase() {\n  const { base } = await prompts({\n    type: \"select\",\n    name: \"base\",\n    message: `Select a ${highlighter.info(\"component library\")}`,\n    choices: [\n      { title: \"Radix\", value: \"radix\" },\n      { title: \"Base\", value: \"base\" },\n    ],\n  })\n  if (!base) process.exit(1)\n  return base as \"radix\" | \"base\"\n}\n\nexport async function promptForPreset(options: {\n  rtl: boolean\n  base: string\n  template?: string\n}) {\n  const presets = Object.entries(DEFAULT_PRESETS)\n\n  const { selectedPreset } = await prompts({\n    type: \"select\",\n    name: \"selectedPreset\",\n    message: `Which ${highlighter.info(\"preset\")} would you like to use?`,\n    choices: [\n      ...presets.map(([name, preset]) => ({\n        title: preset.title,\n        description: preset.description,\n        value: name,\n      })),\n      {\n        title: \"Custom\",\n        description: `Build your own at ${highlighter.info(`${SHADCN_URL}/create`)}`,\n        value: \"custom\",\n      },\n    ],\n  })\n\n  if (!selectedPreset) {\n    process.exit(1)\n  }\n\n  if (selectedPreset === \"custom\") {\n    const createUrl = resolveCreateUrl({\n      command: \"init\",\n      rtl: options.rtl,\n      base: options.base,\n      ...(options.template && { template: options.template }),\n    })\n    logger.break()\n    logger.log(`  Build your custom preset on ${highlighter.info(createUrl)}`)\n    logger.log(\n      `  Then ${highlighter.info(\n        \"copy and run the command\"\n      )} from ui.shadcn.com.`\n    )\n    logger.break()\n\n    const { proceed } = await prompts({\n      type: \"confirm\",\n      name: \"proceed\",\n      message: \"Open in browser?\",\n      initial: true,\n    })\n\n    if (proceed) {\n      await open(createUrl)\n    }\n\n    process.exit(0)\n  }\n\n  const preset = DEFAULT_PRESETS[selectedPreset as keyof typeof DEFAULT_PRESETS]\n  if (!preset) {\n    process.exit(1)\n  }\n\n  return {\n    url: resolveInitUrl(\n      { ...preset, base: options.base, rtl: options.rtl },\n      {\n        template: options.template,\n      }\n    ),\n    base: options.base,\n  }\n}\n\nexport async function resolveRegistryBaseConfig(\n  initUrl: string,\n  cwd: string,\n  options?: {\n    registries?: z.infer<typeof registryConfigSchema>\n  }\n) {\n  // Use a shadow config to fetch the registry:base item.\n  let shadowConfig = configWithDefaults(\n    createConfig({\n      resolvedPaths: {\n        cwd,\n      },\n      ...(options?.registries && { registries: options.registries }),\n    })\n  )\n\n  // Ensure all registries used in the init URL are configured.\n  const { config: updatedConfig } = await ensureRegistriesInConfig(\n    [initUrl],\n    shadowConfig,\n    {\n      silent: true,\n      writeFile: false,\n    }\n  )\n  shadowConfig = updatedConfig\n\n  // This forces a shadowConfig validation early in the process.\n  buildUrlAndHeadersForRegistryItem(initUrl, shadowConfig)\n\n  const [item] = await getRegistryItems([initUrl], {\n    config: shadowConfig,\n    useCache: true,\n  })\n\n  const registryBaseConfig =\n    item?.type === \"registry:base\" && item.config ? item.config : undefined\n\n  // Strip the track param so subsequent fetches don't re-trigger tracking.\n  let cleanUrl = initUrl\n  if (isShadcnInitUrl(initUrl)) {\n    const url = new URL(initUrl)\n    url.searchParams.delete(\"track\")\n    cleanUrl = url.toString()\n  }\n\n  return {\n    registryBaseConfig,\n    installStyleIndex: item?.extends !== \"none\",\n    url: cleanUrl,\n  }\n}\n\nfunction isShadcnInitUrl(url: string) {\n  try {\n    return new URL(url).pathname === \"/init\" && url.startsWith(SHADCN_URL)\n  } catch {\n    return false\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/api.test.ts",
    "content": "import { promises as fs } from \"fs\"\nimport { tmpdir } from \"os\"\nimport path from \"path\"\nimport { BUILTIN_REGISTRIES, REGISTRY_URL } from \"@/src/registry/constants\"\nimport {\n  ConfigParseError,\n  RegistryErrorCode,\n  RegistryFetchError,\n  RegistryForbiddenError,\n  RegistryInvalidNamespaceError,\n  RegistryLocalFileError,\n  RegistryNotConfiguredError,\n  RegistryNotFoundError,\n  RegistryParseError,\n  RegistryUnauthorizedError,\n} from \"@/src/registry/errors\"\nimport { http, HttpResponse } from \"msw\"\nimport { setupServer } from \"msw/node\"\nimport {\n  afterAll,\n  afterEach,\n  beforeAll,\n  describe,\n  expect,\n  it,\n  vi,\n} from \"vitest\"\nimport { z } from \"zod\"\n\nimport {\n  getRegistries,\n  getRegistriesConfig,\n  getRegistriesIndex,\n  getRegistry,\n  getRegistryItems,\n} from \"./api\"\nimport { RegistriesIndexParseError } from \"./errors\"\n\nvi.mock(\"@/src/utils/handle-error\", () => ({\n  handleError: vi.fn(),\n}))\n\nvi.mock(\"@/src/utils/logger\", () => ({\n  logger: {\n    error: vi.fn(),\n    break: vi.fn(),\n    log: vi.fn(),\n  },\n}))\n\nconst server = setupServer(\n  http.get(`${REGISTRY_URL}/index.json`, () => {\n    return HttpResponse.json([\n      {\n        name: \"button\",\n        type: \"registry:ui\",\n      },\n      {\n        name: \"card\",\n        type: \"registry:ui\",\n      },\n    ])\n  }),\n  http.get(`${REGISTRY_URL}/styles/new-york/button.json`, () => {\n    return HttpResponse.json({\n      name: \"button\",\n      type: \"registry:ui\",\n      dependencies: [\"@radix-ui/react-slot\"],\n      files: [\n        {\n          path: \"registry/new-york/ui/button.tsx\",\n          content: \"// button component content\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n  }),\n\n  http.get(`${REGISTRY_URL}/styles/new-york-v4/button.json`, () => {\n    return HttpResponse.json({\n      name: \"button\",\n      type: \"registry:ui\",\n      dependencies: [\"@radix-ui/react-slot\"],\n      files: [\n        {\n          path: \"registry/new-york/ui/button.tsx\",\n          content: \"// button component content v4\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n  }),\n  http.get(`${REGISTRY_URL}/styles/new-york/card.json`, () => {\n    return HttpResponse.json({\n      name: \"card\",\n      type: \"registry:ui\",\n      dependencies: [\"@radix-ui/react-slot\"],\n      files: [\n        {\n          path: \"registry/new-york/ui/card.tsx\",\n          content: \"// card component content\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n  }),\n  http.get(`${REGISTRY_URL}/registries.json`, () => {\n    return HttpResponse.json([\n      {\n        name: \"@shadcn\",\n        url: \"https://ui.shadcn.com/r/styles/{style}/{name}.json\",\n        description: \"The official shadcn/ui registry.\",\n      },\n      {\n        name: \"@example\",\n        homepage: \"https://example.com\",\n        url: \"https://example.com/registry/styles/{style}/{name}.json\",\n        description: \"An example registry for testing.\",\n      },\n      {\n        name: \"@test\",\n        url: \"https://test.com/registry/{name}.json\",\n        description: \"A test registry.\",\n      },\n    ])\n  })\n)\n\nbeforeAll(() => server.listen())\nafterEach(() => {\n  server.resetHandlers()\n})\nafterAll(() => server.close())\n\ndescribe(\"getRegistryItem\", () => {\n  it(\"should read and parse a valid local JSON file\", async () => {\n    // Create a temporary file\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"test-component.json\")\n\n    const componentData = {\n      name: \"test-component\",\n      type: \"registry:ui\",\n      dependencies: [\"@radix-ui/react-dialog\"],\n      files: [\n        {\n          path: \"ui/test-component.tsx\",\n          content: \"// test component content\",\n          type: \"registry:ui\",\n        },\n      ],\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(componentData, null, 2))\n\n    try {\n      const [result] = await getRegistryItems([tempFile])\n\n      expect(result).toMatchObject({\n        name: \"test-component\",\n        type: \"registry:ui\",\n        dependencies: [\"@radix-ui/react-dialog\"],\n        files: [\n          {\n            path: \"ui/test-component.tsx\",\n            content: \"// test component content\",\n            type: \"registry:ui\",\n          },\n        ],\n      })\n    } finally {\n      // Clean up\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should handle relative paths\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"relative-component.json\")\n\n    const componentData = {\n      name: \"relative-component\",\n      type: \"registry:ui\",\n      files: [],\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(componentData))\n\n    try {\n      // Change to temp directory to test relative path\n      const originalCwd = process.cwd()\n      process.chdir(tempDir)\n\n      const [result] = await getRegistryItems([\"./relative-component.json\"])\n\n      expect(result).toMatchObject({\n        name: \"relative-component\",\n        type: \"registry:ui\",\n      })\n\n      process.chdir(originalCwd)\n    } finally {\n      // Clean up\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should handle tilde (~) home directory paths\", async () => {\n    const os = await import(\"os\")\n    const homeDir = os.homedir()\n    const tempFile = path.join(homeDir, \"shadcn-test-tilde.json\")\n\n    const componentData = {\n      name: \"tilde-component\",\n      type: \"registry:ui\",\n      files: [],\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(componentData))\n\n    try {\n      // Test with tilde path\n      const tildeePath = \"~/shadcn-test-tilde.json\"\n      const [result] = await getRegistryItems([tildeePath])\n\n      expect(result).toMatchObject({\n        name: \"tilde-component\",\n        type: \"registry:ui\",\n      })\n    } finally {\n      // Clean up\n      await fs.unlink(tempFile)\n    }\n  })\n\n  it(\"should throw error for non-existent files\", async () => {\n    await expect(getRegistryItems([\"/non/existent/file.json\"])).rejects.toThrow(\n      RegistryLocalFileError\n    )\n  })\n\n  it(\"should throw error for invalid JSON\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"invalid.json\")\n\n    await fs.writeFile(tempFile, \"{ invalid json }\")\n\n    try {\n      await expect(getRegistryItems([tempFile])).rejects.toThrow()\n    } finally {\n      // Clean up\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should throw error for JSON that doesn't match registry schema\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"invalid-schema.json\")\n\n    const invalidData = {\n      notAValidRegistryItem: true,\n      missing: \"required fields\",\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(invalidData))\n\n    try {\n      await expect(getRegistryItems([tempFile])).rejects.toThrow(\n        RegistryParseError\n      )\n    } finally {\n      // Clean up\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should still handle URLs and component names\", async () => {\n    // Test that existing functionality still works\n    const [result] = await getRegistryItems([\"button\"])\n    expect(result).toMatchObject({\n      name: \"button\",\n      type: \"registry:ui\",\n    })\n  })\n\n  it(\"should fetch items from direct URLs\", async () => {\n    const itemUrl = \"https://example.com/custom-button.json\"\n\n    server.use(\n      http.get(itemUrl, () => {\n        return HttpResponse.json({\n          name: \"custom-button\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/custom-button.tsx\",\n              content: \"// custom button content\",\n              type: \"registry:ui\",\n            },\n          ],\n        })\n      })\n    )\n\n    const [result] = await getRegistryItems([itemUrl])\n    expect(result).toMatchObject({\n      name: \"custom-button\",\n      type: \"registry:ui\",\n      files: [\n        {\n          path: \"ui/custom-button.tsx\",\n          content: \"// custom button content\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n  })\n\n  it(\"should handle mixed inputs (URLs, local files, and registry names)\", async () => {\n    const itemUrl = \"https://example.com/url-item.json\"\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const localFile = path.join(tempDir, \"local-item.json\")\n\n    // Setup URL mock\n    server.use(\n      http.get(itemUrl, () => {\n        return HttpResponse.json({\n          name: \"url-item\",\n          type: \"registry:ui\",\n          files: [],\n        })\n      })\n    )\n\n    // Setup local file\n    await fs.writeFile(\n      localFile,\n      JSON.stringify({\n        name: \"local-item\",\n        type: \"registry:ui\",\n        files: [],\n      })\n    )\n\n    try {\n      // Fetch mixed: URL, local file, and registry name\n      const results = await getRegistryItems([itemUrl, localFile, \"button\"])\n\n      expect(results).toHaveLength(3)\n      expect(results[0].name).toBe(\"url-item\")\n      expect(results[1].name).toBe(\"local-item\")\n      expect(results[2].name).toBe(\"button\")\n    } finally {\n      await fs.unlink(localFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should handle local files with URL dependencies\", async () => {\n    // Mock a URL endpoint for dependency\n    const dependencyUrl = \"https://example.com/dependency.json\"\n    server.use(\n      http.get(dependencyUrl, () => {\n        return HttpResponse.json({\n          name: \"url-dependency\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/url-dependency.tsx\",\n              content: \"// url dependency content\",\n              type: \"registry:ui\",\n            },\n          ],\n        })\n      })\n    )\n\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"component-with-url-deps.json\")\n\n    const componentData = {\n      name: \"component-with-url-deps\",\n      type: \"registry:ui\",\n      registryDependencies: [dependencyUrl, \"button\"], // Mix of URL and registry name\n      files: [\n        {\n          path: \"ui/component-with-url-deps.tsx\",\n          content: \"// component with url deps content\",\n          type: \"registry:ui\",\n        },\n      ],\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(componentData, null, 2))\n\n    try {\n      const [result] = await getRegistryItems([tempFile])\n\n      expect(result).toMatchObject({\n        name: \"component-with-url-deps\",\n        type: \"registry:ui\",\n        registryDependencies: [dependencyUrl, \"button\"],\n      })\n    } finally {\n      // Clean up\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should include error code in RegistryNotFoundError\", async () => {\n    server.use(\n      http.get(`${REGISTRY_URL}/styles/new-york-v4/non-existent.json`, () => {\n        return HttpResponse.json({ error: \"Not found\" }, { status: 404 })\n      })\n    )\n\n    try {\n      await getRegistryItems([\"non-existent\"])\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryNotFoundError)\n      if (error instanceof RegistryNotFoundError) {\n        expect(error.code).toBe(RegistryErrorCode.NOT_FOUND)\n        expect(error.statusCode).toBe(404)\n        expect(error.suggestion).toContain(\"Check if the item name is correct\")\n        expect(error.url).toContain(\"non-existent.json\")\n      }\n    }\n  })\n\n  it(\"should include error code in RegistryUnauthorizedError\", async () => {\n    server.use(\n      http.get(`${REGISTRY_URL}/styles/new-york-v4/protected.json`, () => {\n        return HttpResponse.json({ error: \"Unauthorized\" }, { status: 401 })\n      })\n    )\n\n    try {\n      await getRegistryItems([\"protected\"])\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryUnauthorizedError)\n      if (error instanceof RegistryUnauthorizedError) {\n        expect(error.code).toBe(RegistryErrorCode.UNAUTHORIZED)\n        expect(error.statusCode).toBe(401)\n        expect(error.suggestion).toContain(\n          \"Check your authentication credentials\"\n        )\n        expect(error.url).toContain(\"protected.json\")\n      }\n    }\n  })\n\n  it(\"should include error code in RegistryForbiddenError\", async () => {\n    server.use(\n      http.get(`${REGISTRY_URL}/styles/new-york-v4/forbidden.json`, () => {\n        return HttpResponse.json({ error: \"Forbidden\" }, { status: 403 })\n      })\n    )\n\n    try {\n      await getRegistryItems([\"forbidden\"])\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryForbiddenError)\n      if (error instanceof RegistryForbiddenError) {\n        expect(error.code).toBe(RegistryErrorCode.FORBIDDEN)\n        expect(error.statusCode).toBe(403)\n        expect(error.suggestion).toContain(\n          \"Check your authentication credentials\"\n        )\n        expect(error.url).toContain(\"forbidden.json\")\n      }\n    }\n  })\n\n  it(\"should include error code in RegistryFetchError for 500 errors\", async () => {\n    server.use(\n      http.get(`${REGISTRY_URL}/styles/new-york-v4/server-error.json`, () => {\n        return HttpResponse.json(\n          { error: \"Internal Server Error\" },\n          { status: 500 }\n        )\n      })\n    )\n\n    try {\n      await getRegistryItems([\"server-error\"])\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryFetchError)\n      if (error instanceof RegistryFetchError) {\n        expect(error.code).toBe(RegistryErrorCode.FETCH_ERROR)\n        expect(error.statusCode).toBe(500)\n        expect(error.suggestion).toContain(\n          \"The registry server encountered an error\"\n        )\n        expect(error.url).toContain(\"server-error.json\")\n      }\n    }\n  })\n\n  it(\"should extract Zod validation issues in RegistryParseError\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"invalid-schema.json\")\n\n    const invalidData = {\n      name: \"test\",\n      // Missing required \"type\" field\n      // Invalid \"files\" field (should be array)\n      files: \"not-an-array\",\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(invalidData))\n\n    try {\n      await getRegistryItems([tempFile])\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryParseError)\n      if (error instanceof RegistryParseError) {\n        expect(error.code).toBe(RegistryErrorCode.PARSE_ERROR)\n        expect(error.message).toContain(\"Failed to parse registry item\")\n        expect(error.message).toContain(tempFile)\n        // The message should include Zod validation issues\n        expect(error.suggestion).toContain(\n          \"may be corrupted or have an invalid format\"\n        )\n        expect(error.context?.item).toBe(tempFile)\n      }\n    } finally {\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should include context in RegistryLocalFileError\", async () => {\n    const nonExistentFile = \"/path/to/non/existent/file.json\"\n\n    try {\n      await getRegistryItems([nonExistentFile])\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryLocalFileError)\n      if (error instanceof RegistryLocalFileError) {\n        expect(error.code).toBe(RegistryErrorCode.LOCAL_FILE_ERROR)\n        expect(error.filePath).toBe(nonExistentFile)\n        expect(error.suggestion).toContain(\"Check if the file exists\")\n        expect(error.context?.filePath).toBe(nonExistentFile)\n      }\n    }\n  })\n\n  it(\"should serialize error to JSON correctly\", async () => {\n    server.use(\n      http.get(`${REGISTRY_URL}/styles/new-york-v4/test-json.json`, () => {\n        return HttpResponse.json({ error: \"Not found\" }, { status: 404 })\n      })\n    )\n\n    try {\n      await getRegistryItems([\"test-json\"])\n    } catch (error) {\n      if (error instanceof RegistryNotFoundError) {\n        const json = error.toJSON()\n        expect(json).toHaveProperty(\"name\", \"RegistryNotFoundError\")\n        expect(json).toHaveProperty(\"message\")\n        expect(json).toHaveProperty(\"code\", RegistryErrorCode.NOT_FOUND)\n        expect(json).toHaveProperty(\"statusCode\", 404)\n        expect(json).toHaveProperty(\"context\")\n        expect(json).toHaveProperty(\"suggestion\")\n        expect(json).toHaveProperty(\"timestamp\")\n        expect(json).toHaveProperty(\"stack\")\n      }\n    }\n  })\n\n  it(\"should include timestamp in errors\", async () => {\n    server.use(\n      http.get(`${REGISTRY_URL}/styles/new-york-v4/timestamp-test.json`, () => {\n        return HttpResponse.json({ error: \"Not found\" }, { status: 404 })\n      })\n    )\n\n    try {\n      await getRegistryItems([\"timestamp-test\"])\n    } catch (error) {\n      if (error instanceof RegistryNotFoundError) {\n        expect(error.timestamp).toBeInstanceOf(Date)\n        expect(error.timestamp.getTime()).toBeLessThanOrEqual(Date.now())\n      }\n    }\n  })\n\n  it(\"should handle multiple validation errors in RegistryParseError\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"multiple-errors.json\")\n\n    const invalidData = {\n      // Missing name and type\n      files: 123, // Should be array\n      dependencies: \"not-an-array\", // Should be array\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(invalidData))\n\n    try {\n      await getRegistryItems([tempFile])\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryParseError)\n      if (error instanceof RegistryParseError) {\n        // The error message should contain multiple validation issues\n        expect(error.message).toContain(\"Failed to parse registry item\")\n        // Check that context contains validation issues\n        if (error.context && \"validationIssues\" in error.context) {\n          const issues = error.context.validationIssues as Array<{\n            path: string\n            message: string\n          }>\n          expect(Array.isArray(issues)).toBe(true)\n        }\n      }\n    } finally {\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should include response body in RegistryFetchError\", async () => {\n    const errorResponse = {\n      error: \"Bad Request\",\n      details: \"Invalid parameters\",\n    }\n    server.use(\n      http.get(`${REGISTRY_URL}/styles/new-york-v4/bad-request.json`, () => {\n        return HttpResponse.json(errorResponse, { status: 400 })\n      })\n    )\n\n    try {\n      await getRegistryItems([\"bad-request\"])\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryFetchError)\n      if (error instanceof RegistryFetchError) {\n        expect(error.code).toBe(RegistryErrorCode.FETCH_ERROR)\n        expect(error.statusCode).toBe(400)\n        expect(error.suggestion).toContain(\"client error\")\n        // Response body should be available as context\n        expect(error.responseBody).toBeDefined()\n      }\n    }\n  })\n})\n\ndescribe(\"getRegistry\", () => {\n  it(\"should fetch registry catalog\", async () => {\n    const registryData = {\n      name: \"@acme/registry\",\n      homepage: \"https://acme.com\",\n      items: [\n        { name: \"button\", type: \"registry:ui\" },\n        { name: \"card\", type: \"registry:ui\" },\n      ],\n    }\n\n    server.use(\n      http.get(\"https://acme.com/registry.json\", () => {\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@acme\": {\n          url: \"https://acme.com/{name}.json\",\n        },\n      },\n    } as any\n\n    const result = await getRegistry(\"@acme\", { config: mockConfig })\n\n    expect(result).toMatchObject({\n      name: \"@acme/registry\",\n      homepage: \"https://acme.com\",\n      items: [\n        { name: \"button\", type: \"registry:ui\" },\n        { name: \"card\", type: \"registry:ui\" },\n      ],\n    })\n  })\n\n  it(\"should auto-append /registry to registry name\", async () => {\n    const registryData = {\n      name: \"@acme/registry\",\n      homepage: \"https://acme.com\",\n      items: [],\n    }\n\n    server.use(\n      http.get(\"https://acme.com/registry.json\", () => {\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@acme\": {\n          url: \"https://acme.com/{name}.json\",\n        },\n      },\n    } as any\n\n    // Test both with and without /registry suffix\n    const result1 = await getRegistry(\"@acme\", { config: mockConfig })\n    expect(result1.name).toBe(\"@acme/registry\")\n\n    const result2 = await getRegistry(\"@acme/registry\", { config: mockConfig })\n    expect(result2.name).toBe(\"@acme/registry\")\n  })\n\n  it(\"should handle registry with auth headers\", async () => {\n    const registryData = {\n      name: \"@private/registry\",\n      homepage: \"https://private.com\",\n      items: [{ name: \"secure-component\", type: \"registry:ui\" }],\n    }\n\n    let receivedHeaders: Record<string, string> = {}\n    server.use(\n      http.get(\"https://private.com/registry.json\", ({ request }) => {\n        // Convert headers to a plain object\n        request.headers.forEach((value, key) => {\n          receivedHeaders[key] = value\n        })\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@private\": {\n          url: \"https://private.com/{name}.json\",\n          headers: {\n            Authorization: \"Bearer test-token\",\n          },\n        },\n      },\n    } as any\n\n    const result = await getRegistry(\"@private\", { config: mockConfig })\n\n    expect(result).toMatchObject({\n      name: \"@private/registry\",\n      homepage: \"https://private.com\",\n      items: [{ name: \"secure-component\", type: \"registry:ui\" }],\n    })\n\n    expect(receivedHeaders.authorization).toBe(\"Bearer test-token\")\n  })\n\n  it(\"should throw RegistryNotConfiguredError when registry is not configured\", async () => {\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {},\n    } as any\n\n    await expect(\n      getRegistry(\"@unknown\", { config: mockConfig })\n    ).rejects.toThrow(RegistryNotConfiguredError)\n  })\n\n  it(\"should throw RegistryParseError on invalid registry data\", async () => {\n    server.use(\n      http.get(\"https://invalid.com/registry.json\", () => {\n        return HttpResponse.json({\n          // Invalid registry data - missing required fields\n          invalid: \"data\",\n        })\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@invalid\": {\n          url: \"https://invalid.com/{name}.json\",\n        },\n      },\n    } as any\n\n    await expect(\n      getRegistry(\"@invalid\", { config: mockConfig })\n    ).rejects.toThrow(RegistryParseError)\n  })\n\n  it(\"should throw RegistryFetchError on network error\", async () => {\n    server.use(\n      http.get(\"https://error.com/registry.json\", () => {\n        return HttpResponse.json({ error: \"Server Error\" }, { status: 500 })\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@error\": {\n          url: \"https://error.com/{name}.json\",\n        },\n      },\n    } as any\n\n    await expect(getRegistry(\"@error\", { config: mockConfig })).rejects.toThrow(\n      RegistryFetchError\n    )\n  })\n\n  it(\"should throw RegistryNotConfiguredError when registry is not in config\", async () => {\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n    } as any\n\n    await expect(\n      getRegistry(\"@nonexistent\", { config: mockConfig })\n    ).rejects.toThrow(RegistryNotConfiguredError)\n  })\n\n  it(\"should handle registry with no items gracefully\", async () => {\n    const registryData = {\n      name: \"@empty/registry\",\n      homepage: \"https://empty.com\",\n      items: [],\n    }\n\n    server.use(\n      http.get(\"https://empty.com/registry.json\", () => {\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@empty\": {\n          url: \"https://empty.com/{name}.json\",\n        },\n      },\n    } as any\n\n    const result = await getRegistry(\"@empty\", { config: mockConfig })\n    expect(result).toMatchObject(registryData)\n    expect(result.items).toHaveLength(0)\n  })\n\n  it(\"should handle 404 error from registry endpoint\", async () => {\n    server.use(\n      http.get(\"https://notfound.com/registry.json\", () => {\n        return HttpResponse.json({ error: \"Not Found\" }, { status: 404 })\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@notfound\": {\n          url: \"https://notfound.com/{name}.json\",\n        },\n      },\n    } as any\n\n    await expect(\n      getRegistry(\"@notfound\", { config: mockConfig })\n    ).rejects.toThrow(RegistryNotFoundError)\n  })\n\n  it(\"should handle 401 error from registry endpoint\", async () => {\n    server.use(\n      http.get(\"https://unauthorized.com/registry.json\", () => {\n        return HttpResponse.json({ error: \"Unauthorized\" }, { status: 401 })\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@unauthorized\": {\n          url: \"https://unauthorized.com/{name}.json\",\n        },\n      },\n    } as any\n\n    await expect(\n      getRegistry(\"@unauthorized\", { config: mockConfig })\n    ).rejects.toThrow(RegistryUnauthorizedError)\n  })\n\n  it(\"should handle 403 error from registry endpoint\", async () => {\n    server.use(\n      http.get(\"https://forbidden.com/registry.json\", () => {\n        return HttpResponse.json({ error: \"Forbidden\" }, { status: 403 })\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@forbidden\": {\n          url: \"https://forbidden.com/{name}.json\",\n        },\n      },\n    } as any\n\n    await expect(\n      getRegistry(\"@forbidden\", { config: mockConfig })\n    ).rejects.toThrow(RegistryForbiddenError)\n  })\n\n  it(\"should set headers in context when provided\", async () => {\n    const registryData = {\n      name: \"@headers-test/registry\",\n      homepage: \"https://headers.com\",\n      items: [],\n    }\n\n    let receivedHeaders: Record<string, string> = {}\n    server.use(\n      http.get(\"https://headers.com/registry.json\", ({ request }) => {\n        request.headers.forEach((value, key) => {\n          receivedHeaders[key] = value\n        })\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@headers-test\": {\n          url: \"https://headers.com/{name}.json\",\n          headers: {\n            \"X-Custom-Header\": \"test-value\",\n            Authorization: \"Bearer test-token\",\n          },\n        },\n      },\n    } as any\n\n    await getRegistry(\"@headers-test\", { config: mockConfig })\n\n    expect(receivedHeaders[\"x-custom-header\"]).toBe(\"test-value\")\n    expect(receivedHeaders.authorization).toBe(\"Bearer test-token\")\n  })\n\n  it(\"should not set headers in context when none provided\", async () => {\n    const registryData = {\n      name: \"@no-headers/registry\",\n      homepage: \"https://noheaders.com\",\n      items: [],\n    }\n\n    server.use(\n      http.get(\"https://noheaders.com/registry.json\", () => {\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@no-headers\": {\n          url: \"https://noheaders.com/{name}.json\",\n        },\n      },\n    } as any\n\n    const result = await getRegistry(\"@no-headers\", { config: mockConfig })\n    expect(result).toMatchObject(registryData)\n  })\n\n  it(\"should handle registry items with slashes\", async () => {\n    const registryData = {\n      name: \"@acme/registry\",\n      homepage: \"https://acme.com\",\n      items: [],\n    }\n\n    server.use(\n      http.get(\"https://acme.com/sub/registry.json\", () => {\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@acme\": {\n          url: \"https://acme.com/{name}.json\",\n        },\n      },\n    } as any\n\n    const result = await getRegistry(\"@acme/sub\", { config: mockConfig })\n    expect(result).toMatchObject(registryData)\n  })\n\n  it(\"should use configWithDefaults to fill missing config values\", async () => {\n    const registryData = {\n      name: \"@defaults/registry\",\n      homepage: \"https://defaults.com\",\n      items: [],\n    }\n\n    server.use(\n      http.get(\"https://defaults.com/registry.json\", () => {\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const minimalConfig = {\n      registries: {\n        \"@defaults\": {\n          url: \"https://defaults.com/{name}.json\",\n        },\n      },\n    } as any\n\n    const result = await getRegistry(\"@defaults\", { config: minimalConfig })\n    expect(result).toMatchObject(registryData)\n  })\n\n  it(\"should handle malformed JSON response\", async () => {\n    server.use(\n      http.get(\"https://malformed.com/registry.json\", () => {\n        return new Response(\"{ malformed json }\", {\n          status: 200,\n          headers: { \"Content-Type\": \"application/json\" },\n        })\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@malformed\": {\n          url: \"https://malformed.com/{name}.json\",\n        },\n      },\n    } as any\n\n    await expect(\n      getRegistry(\"@malformed\", { config: mockConfig })\n    ).rejects.toThrow()\n  })\n\n  it(\"should throw RegistryParseError with proper context\", async () => {\n    const invalidData = {\n      homepage: \"https://invalid.com\",\n      items: \"not-an-array\",\n    }\n\n    server.use(\n      http.get(\"https://parsetest.com/registry.json\", () => {\n        return HttpResponse.json(invalidData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@parsetest\": {\n          url: \"https://parsetest.com/{name}.json\",\n        },\n      },\n    } as any\n\n    try {\n      await getRegistry(\"@parsetest/registry\", { config: mockConfig })\n      expect.fail(\"Should have thrown RegistryParseError\")\n    } catch (error) {\n      expect(error).toBeInstanceOf(RegistryParseError)\n      if (error instanceof RegistryParseError) {\n        expect(error.message).toContain(\"Failed to parse registry\")\n        expect(error.message).toContain(\"@parsetest/registry\")\n        expect(error.context?.item).toBe(\"@parsetest/registry\")\n        expect(error.parseError).toBeDefined()\n        if (error.parseError instanceof z.ZodError) {\n          expect(error.parseError.errors.length).toBeGreaterThan(0)\n        }\n      }\n    }\n  })\n\n  it(\"should throw RegistryInvalidNamespaceError for registry name without @ prefix\", async () => {\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {},\n    } as any\n\n    await expect(\n      getRegistry(\"invalid-name\", { config: mockConfig })\n    ).rejects.toThrow(RegistryInvalidNamespaceError)\n  })\n\n  it(\"should accept valid registry names with hyphens and underscores\", async () => {\n    const registryData = {\n      name: \"@test-123_abc/registry\",\n      homepage: \"https://test.com\",\n      items: [],\n    }\n\n    server.use(\n      http.get(\"https://test.com/registry.json\", () => {\n        return HttpResponse.json(registryData)\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@test-123_abc\": {\n          url: \"https://test.com/{name}.json\",\n        },\n      },\n    } as any\n\n    const result = await getRegistry(\"@test-123_abc\", { config: mockConfig })\n    expect(result).toMatchObject(registryData)\n  })\n\n  // Tests for URL support\n  it(\"should fetch registry from a direct URL\", async () => {\n    const registryUrl = \"https://example.com/custom-registry.json\"\n\n    server.use(\n      http.get(registryUrl, () => {\n        return HttpResponse.json({\n          name: \"custom-registry\",\n          homepage: \"https://example.com\",\n          items: [\n            { name: \"button\", type: \"registry:ui\" },\n            { name: \"card\", type: \"registry:ui\" },\n          ],\n        })\n      })\n    )\n\n    const result = await getRegistry(registryUrl)\n    expect(result).toMatchObject({\n      name: \"custom-registry\",\n      homepage: \"https://example.com\",\n      items: [\n        { name: \"button\", type: \"registry:ui\" },\n        { name: \"card\", type: \"registry:ui\" },\n      ],\n    })\n  })\n\n  it(\"should handle malformed URL gracefully\", async () => {\n    const badUrl = \"not-a-valid-url\"\n\n    // Should throw RegistryInvalidNamespaceError for non-@ and non-URL strings\n    await expect(getRegistry(badUrl)).rejects.toThrow(\n      RegistryInvalidNamespaceError\n    )\n  })\n\n  it(\"should distinguish between URL and registry name\", async () => {\n    // Test that it correctly identifies and handles a URL vs registry name\n    const registryName = \"@shadcn\"\n    const registryUrl = \"https://ui.shadcn.com/registry.json\"\n\n    // Mock for URL\n    server.use(\n      http.get(registryUrl, () => {\n        return HttpResponse.json({\n          name: \"shadcn-from-url\",\n          homepage: \"https://ui.shadcn.com\",\n          items: [],\n        })\n      })\n    )\n\n    const mockConfig = {\n      style: \"new-york\",\n      tailwind: { baseColor: \"neutral\", cssVariables: true },\n      registries: {\n        \"@shadcn\": {\n          url: \"https://ui.shadcn.com/{name}.json\",\n        },\n      },\n    } as any\n\n    // Fetch by URL should bypass registry config\n    const urlResult = await getRegistry(registryUrl)\n    expect(urlResult.name).toBe(\"shadcn-from-url\")\n\n    // Fetch by registry name should use config\n    const nameResult = await getRegistry(registryName, { config: mockConfig })\n    expect(nameResult).toBeDefined()\n  })\n})\n\ndescribe(\"getRegistriesConfig\", () => {\n  it(\"should return built-in registries when no components.json exists\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n\n    try {\n      const result = await getRegistriesConfig(tempDir)\n\n      expect(result).toEqual({\n        registries: BUILTIN_REGISTRIES,\n      })\n    } finally {\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should parse valid components.json with registries\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const configFile = path.join(tempDir, \"components.json\")\n\n    const config = {\n      style: \"new-york\",\n      tailwind: {\n        config: \"./tailwind.config.ts\",\n        css: \"./src/app/globals.css\",\n        baseColor: \"neutral\",\n        cssVariables: true,\n      },\n      registries: {\n        \"@acme\": \"https://acme.com/{name}.json\",\n        \"@private\": {\n          url: \"https://private.com/{name}.json\",\n          headers: {\n            Authorization: \"Bearer token\",\n          },\n        },\n      },\n    }\n\n    await fs.writeFile(configFile, JSON.stringify(config, null, 2))\n\n    try {\n      const result = await getRegistriesConfig(tempDir)\n\n      // The result includes both custom and built-in registries\n      expect(result.registries).toMatchObject({\n        \"@acme\": \"https://acme.com/{name}.json\",\n        \"@private\": {\n          url: \"https://private.com/{name}.json\",\n          headers: {\n            Authorization: \"Bearer token\",\n          },\n        },\n        \"@shadcn\": expect.any(String),\n      })\n    } finally {\n      await fs.unlink(configFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should throw ConfigParseError for invalid components.json\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const configFile = path.join(tempDir, \"components.json\")\n\n    const invalidConfig = {\n      style: \"new-york\",\n      registries: {\n        \"@invalid\": {\n          // Missing required 'url' field\n          headers: {\n            Authorization: \"Bearer token\",\n          },\n        },\n      },\n    }\n\n    await fs.writeFile(configFile, JSON.stringify(invalidConfig, null, 2))\n\n    try {\n      await getRegistriesConfig(tempDir)\n      expect.fail(\"Should have thrown ConfigParseError\")\n    } catch (error) {\n      expect(error).toBeInstanceOf(ConfigParseError)\n      if (error instanceof ConfigParseError) {\n        expect(error.cwd).toBe(tempDir)\n        expect(error.message).toContain(\"Invalid components.json\")\n      }\n    } finally {\n      await fs.unlink(configFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should handle components.json with no registries field\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const configFile = path.join(tempDir, \"components.json\")\n\n    const config = {\n      style: \"new-york\",\n      tailwind: {\n        config: \"./tailwind.config.ts\",\n        css: \"./src/app/globals.css\",\n        baseColor: \"neutral\",\n        cssVariables: true,\n      },\n      // No registries field\n    }\n\n    await fs.writeFile(configFile, JSON.stringify(config, null, 2))\n\n    try {\n      const result = await getRegistriesConfig(tempDir)\n\n      // When no registries are defined, built-in registries are still included\n      expect(result.registries).toEqual(BUILTIN_REGISTRIES)\n    } finally {\n      await fs.unlink(configFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should handle malformed JSON file\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const configFile = path.join(tempDir, \"components.json\")\n\n    await fs.writeFile(configFile, \"{ invalid json }\")\n\n    try {\n      // Malformed JSON should throw an error from cosmiconfig\n      await getRegistriesConfig(tempDir)\n      expect.fail(\"Should have thrown an error\")\n    } catch (error) {\n      // cosmiconfig throws a JSONError for malformed JSON\n      expect((error as Error).message).toContain(\"JSON Error\")\n    } finally {\n      await fs.unlink(configFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should include error details in ConfigParseError\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const configFile = path.join(tempDir, \"components.json\")\n\n    const invalidConfig = {\n      style: \"new-york\",\n      registries: {\n        \"@invalid\": {\n          url: 123, // Should be string\n        },\n      },\n    }\n\n    await fs.writeFile(configFile, JSON.stringify(invalidConfig, null, 2))\n\n    try {\n      await getRegistriesConfig(tempDir)\n      expect.fail(\"Should have thrown ConfigParseError\")\n    } catch (error) {\n      expect(error).toBeInstanceOf(ConfigParseError)\n      if (error instanceof ConfigParseError) {\n        expect(error.cwd).toBe(tempDir)\n        expect(error.message).toContain(\"Invalid components.json\")\n        expect(error.message).toContain(tempDir)\n        expect(error.code).toBe(RegistryErrorCode.INVALID_CONFIG)\n        expect(error.suggestion).toContain(\"Check your components.json\")\n      }\n    } finally {\n      await fs.unlink(configFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  it(\"should handle complex registry configurations\", async () => {\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const configFile = path.join(tempDir, \"components.json\")\n\n    const config = {\n      style: \"new-york\",\n      registries: {\n        \"@shadcn\": \"https://ui.shadcn.com/r/styles/{style}/{name}.json\",\n        \"@acme\": \"https://acme.com/registry/{name}.json\",\n        \"@private\": {\n          url: \"https://private.registry.com/{name}.json\",\n          headers: {\n            Authorization: \"Bearer ${REGISTRY_TOKEN}\",\n            \"X-Custom-Header\": \"value\",\n          },\n        },\n        \"@local\": \"file:///local/registry/{name}.json\",\n      },\n    }\n\n    await fs.writeFile(configFile, JSON.stringify(config, null, 2))\n\n    try {\n      const result = await getRegistriesConfig(tempDir)\n\n      expect(result.registries).toBeDefined()\n      expect(result.registries?.[\"@shadcn\"]).toBe(\n        \"https://ui.shadcn.com/r/styles/{style}/{name}.json\"\n      )\n      expect(result.registries?.[\"@acme\"]).toBe(\n        \"https://acme.com/registry/{name}.json\"\n      )\n      expect(result.registries?.[\"@private\"]).toEqual({\n        url: \"https://private.registry.com/{name}.json\",\n        headers: {\n          Authorization: \"Bearer ${REGISTRY_TOKEN}\",\n          \"X-Custom-Header\": \"value\",\n        },\n      })\n      expect(result.registries?.[\"@local\"]).toBe(\n        \"file:///local/registry/{name}.json\"\n      )\n    } finally {\n      await fs.unlink(configFile)\n      await fs.rmdir(tempDir)\n    }\n  })\n\n  describe(\"caching behavior\", () => {\n    it(\"should use cache by default\", async () => {\n      const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n      const configFile = path.join(tempDir, \"components.json\")\n\n      const initialConfig = {\n        style: \"new-york\",\n        registries: {\n          \"@cached\": \"https://cached.com/{name}.json\",\n        },\n      }\n\n      await fs.writeFile(configFile, JSON.stringify(initialConfig, null, 2))\n\n      try {\n        // First call - should read from file\n        const result1 = await getRegistriesConfig(tempDir)\n        expect(result1.registries?.[\"@cached\"]).toBe(\n          \"https://cached.com/{name}.json\"\n        )\n\n        // Modify the file\n        const updatedConfig = {\n          style: \"new-york\",\n          registries: {\n            \"@cached\": \"https://updated.com/{name}.json\",\n          },\n        }\n        await fs.writeFile(configFile, JSON.stringify(updatedConfig, null, 2))\n\n        // Second call - should still return cached result (default behavior)\n        const result2 = await getRegistriesConfig(tempDir)\n        expect(result2.registries?.[\"@cached\"]).toBe(\n          \"https://cached.com/{name}.json\"\n        )\n      } finally {\n        await fs.unlink(configFile)\n        await fs.rmdir(tempDir)\n      }\n    })\n\n    it(\"should use cache when explicitly enabled\", async () => {\n      const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n      const configFile = path.join(tempDir, \"components.json\")\n\n      const initialConfig = {\n        style: \"new-york\",\n        registries: {\n          \"@test\": \"https://test.com/{name}.json\",\n        },\n      }\n\n      await fs.writeFile(configFile, JSON.stringify(initialConfig, null, 2))\n\n      try {\n        // First call with cache enabled\n        const result1 = await getRegistriesConfig(tempDir, { useCache: true })\n        expect(result1.registries?.[\"@test\"]).toBe(\n          \"https://test.com/{name}.json\"\n        )\n\n        // Modify the file\n        const updatedConfig = {\n          style: \"new-york\",\n          registries: {\n            \"@test\": \"https://modified.com/{name}.json\",\n          },\n        }\n        await fs.writeFile(configFile, JSON.stringify(updatedConfig, null, 2))\n\n        // Second call with cache enabled - should return cached result\n        const result2 = await getRegistriesConfig(tempDir, { useCache: true })\n        expect(result2.registries?.[\"@test\"]).toBe(\n          \"https://test.com/{name}.json\"\n        )\n      } finally {\n        await fs.unlink(configFile)\n        await fs.rmdir(tempDir)\n      }\n    })\n\n    it(\"should bypass cache when useCache is false\", async () => {\n      const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n      const configFile = path.join(tempDir, \"components.json\")\n\n      const initialConfig = {\n        style: \"new-york\",\n        registries: {\n          \"@nocache\": \"https://nocache.com/{name}.json\",\n        },\n      }\n\n      await fs.writeFile(configFile, JSON.stringify(initialConfig, null, 2))\n\n      try {\n        // First call - should read from file\n        const result1 = await getRegistriesConfig(tempDir, { useCache: false })\n        expect(result1.registries?.[\"@nocache\"]).toBe(\n          \"https://nocache.com/{name}.json\"\n        )\n\n        // Modify the file\n        const updatedConfig = {\n          style: \"new-york\",\n          registries: {\n            \"@nocache\": \"https://fresh.com/{name}.json\",\n          },\n        }\n        await fs.writeFile(configFile, JSON.stringify(updatedConfig, null, 2))\n\n        // Second call with cache disabled - should read fresh data\n        const result2 = await getRegistriesConfig(tempDir, { useCache: false })\n        expect(result2.registries?.[\"@nocache\"]).toBe(\n          \"https://fresh.com/{name}.json\"\n        )\n      } finally {\n        await fs.unlink(configFile)\n        await fs.rmdir(tempDir)\n      }\n    })\n\n    it(\"should clear cache for subsequent calls when useCache is false\", async () => {\n      const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n      const configFile = path.join(tempDir, \"components.json\")\n\n      const config1 = {\n        style: \"new-york\",\n        registries: {\n          \"@step1\": \"https://step1.com/{name}.json\",\n        },\n      }\n\n      await fs.writeFile(configFile, JSON.stringify(config1, null, 2))\n\n      try {\n        // First call with cache enabled\n        const result1 = await getRegistriesConfig(tempDir, { useCache: true })\n        expect(result1.registries?.[\"@step1\"]).toBe(\n          \"https://step1.com/{name}.json\"\n        )\n\n        // Update config\n        const config2 = {\n          style: \"new-york\",\n          registries: {\n            \"@step2\": \"https://step2.com/{name}.json\",\n          },\n        }\n        await fs.writeFile(configFile, JSON.stringify(config2, null, 2))\n\n        // Call with cache disabled - should clear cache and read fresh\n        const result2 = await getRegistriesConfig(tempDir, { useCache: false })\n        expect(result2.registries?.[\"@step2\"]).toBe(\n          \"https://step2.com/{name}.json\"\n        )\n        expect(result2.registries?.[\"@step1\"]).toBeUndefined()\n\n        // Update config again\n        const config3 = {\n          style: \"new-york\",\n          registries: {\n            \"@step3\": \"https://step3.com/{name}.json\",\n          },\n        }\n        await fs.writeFile(configFile, JSON.stringify(config3, null, 2))\n\n        // Call with cache disabled again to ensure we get fresh data\n        const result3 = await getRegistriesConfig(tempDir, { useCache: false })\n        expect(result3.registries?.[\"@step3\"]).toBe(\n          \"https://step3.com/{name}.json\"\n        )\n        expect(result3.registries?.[\"@step2\"]).toBeUndefined()\n\n        // Now a call with cache enabled should cache the current state\n        const result4 = await getRegistriesConfig(tempDir, { useCache: true })\n        expect(result4.registries?.[\"@step3\"]).toBe(\n          \"https://step3.com/{name}.json\"\n        )\n      } finally {\n        await fs.unlink(configFile)\n        await fs.rmdir(tempDir)\n      }\n    })\n\n    it(\"should handle missing config with cache options\", async () => {\n      const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n\n      try {\n        // With cache enabled (default)\n        const result1 = await getRegistriesConfig(tempDir)\n        expect(result1.registries).toEqual(BUILTIN_REGISTRIES)\n\n        // With cache explicitly enabled\n        const result2 = await getRegistriesConfig(tempDir, { useCache: true })\n        expect(result2.registries).toEqual(BUILTIN_REGISTRIES)\n\n        // With cache disabled\n        const result3 = await getRegistriesConfig(tempDir, { useCache: false })\n        expect(result3.registries).toEqual(BUILTIN_REGISTRIES)\n      } finally {\n        await fs.rmdir(tempDir)\n      }\n    })\n\n    it(\"should handle invalid config with cache options\", async () => {\n      const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n      const configFile = path.join(tempDir, \"components.json\")\n\n      const invalidConfig = {\n        style: \"new-york\",\n        registries: {\n          \"@invalid\": {\n            // Missing required 'url' field\n            headers: {\n              Authorization: \"Bearer token\",\n            },\n          },\n        },\n      }\n\n      await fs.writeFile(configFile, JSON.stringify(invalidConfig, null, 2))\n\n      try {\n        // Should throw regardless of cache setting\n        await expect(\n          getRegistriesConfig(tempDir, { useCache: true })\n        ).rejects.toThrow(ConfigParseError)\n\n        await expect(\n          getRegistriesConfig(tempDir, { useCache: false })\n        ).rejects.toThrow(ConfigParseError)\n      } finally {\n        await fs.unlink(configFile)\n        await fs.rmdir(tempDir)\n      }\n    })\n  })\n\n  describe(\"getRegistries\", () => {\n    it(\"should fetch and parse registries successfully\", async () => {\n      const result = await getRegistries()\n\n      expect(result).toEqual([\n        {\n          name: \"@shadcn\",\n          url: \"https://ui.shadcn.com/r/styles/{style}/{name}.json\",\n          description: \"The official shadcn/ui registry.\",\n        },\n        {\n          name: \"@example\",\n          homepage: \"https://example.com\",\n          url: \"https://example.com/registry/styles/{style}/{name}.json\",\n          description: \"An example registry for testing.\",\n        },\n        {\n          name: \"@test\",\n          url: \"https://test.com/registry/{name}.json\",\n          description: \"A test registry.\",\n        },\n      ])\n    })\n\n    it(\"should respect cache options\", async () => {\n      const result1 = await getRegistries({ useCache: false })\n      expect(result1).toBeDefined()\n\n      const result2 = await getRegistries({ useCache: true })\n      expect(result2).toBeDefined()\n\n      expect(result1).toEqual(result2)\n    })\n\n    it(\"should handle network errors properly\", async () => {\n      server.use(\n        http.get(`${REGISTRY_URL}/registries.json`, () => {\n          return new HttpResponse(null, { status: 500 })\n        })\n      )\n\n      await expect(getRegistries({ useCache: false })).rejects.toThrow()\n    })\n\n    it(\"should handle invalid JSON response\", async () => {\n      server.use(\n        http.get(`${REGISTRY_URL}/registries.json`, () => {\n          return HttpResponse.json({\n            invalid: \"format\",\n          })\n        })\n      )\n\n      await expect(getRegistries({ useCache: false })).rejects.toThrow(\n        RegistriesIndexParseError\n      )\n    })\n  })\n\n  describe(\"getRegistriesIndex\", () => {\n    it(\"should fetch and parse the registries index successfully\", async () => {\n      const result = await getRegistriesIndex()\n\n      // getRegistriesIndex transforms array format to object format.\n      expect(result).toEqual({\n        \"@shadcn\": \"https://ui.shadcn.com/r/styles/{style}/{name}.json\",\n        \"@example\": \"https://example.com/registry/styles/{style}/{name}.json\",\n        \"@test\": \"https://test.com/registry/{name}.json\",\n      })\n    })\n\n    it(\"should respect cache options\", async () => {\n      // Test with cache disabled\n      const result1 = await getRegistriesIndex({ useCache: false })\n      expect(result1).toBeDefined()\n\n      // Test with cache enabled\n      const result2 = await getRegistriesIndex({ useCache: true })\n      expect(result2).toBeDefined()\n\n      // Results should be the same\n      expect(result1).toEqual(result2)\n    })\n\n    it(\"should use default cache behavior when no options provided\", async () => {\n      const result = await getRegistriesIndex()\n      expect(result).toBeDefined()\n      expect(typeof result).toBe(\"object\")\n    })\n\n    it(\"should handle network errors properly\", async () => {\n      server.use(\n        http.get(`${REGISTRY_URL}/registries.json`, () => {\n          return new HttpResponse(null, { status: 500 })\n        })\n      )\n\n      await expect(getRegistriesIndex({ useCache: false })).rejects.toThrow()\n\n      try {\n        await getRegistriesIndex({ useCache: false })\n      } catch (error) {\n        expect(error).not.toBeInstanceOf(RegistriesIndexParseError)\n      }\n    })\n\n    it(\"should handle invalid JSON response\", async () => {\n      server.use(\n        http.get(`${REGISTRY_URL}/registries.json`, () => {\n          return HttpResponse.json({\n            \"invalid-namespace\": \"some-url\",\n          })\n        })\n      )\n\n      await expect(getRegistriesIndex({ useCache: false })).rejects.toThrow(\n        RegistriesIndexParseError\n      )\n    })\n\n    it(\"should handle network timeout\", async () => {\n      server.use(\n        http.get(`${REGISTRY_URL}/registries.json`, () => {\n          return HttpResponse.error()\n        })\n      )\n\n      await expect(getRegistriesIndex({ useCache: false })).rejects.toThrow()\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/api.ts",
    "content": "import path from \"path\"\nimport { buildUrlAndHeadersForRegistryItem } from \"@/src/registry/builder\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport {\n  BASE_COLORS,\n  BUILTIN_REGISTRIES,\n  REGISTRY_URL,\n} from \"@/src/registry/constants\"\nimport {\n  clearRegistryContext,\n  setRegistryHeaders,\n} from \"@/src/registry/context\"\nimport {\n  ConfigParseError,\n  RegistriesIndexParseError,\n  RegistryInvalidNamespaceError,\n  RegistryNotFoundError,\n  RegistryParseError,\n} from \"@/src/registry/errors\"\nimport { fetchRegistry } from \"@/src/registry/fetcher\"\nimport {\n  fetchRegistryItems,\n  resolveRegistryTree,\n} from \"@/src/registry/resolver\"\nimport { isUrl } from \"@/src/registry/utils\"\nimport {\n  configJsonSchema,\n  iconsSchema,\n  registriesIndexSchema,\n  registriesSchema,\n  registryBaseColorSchema,\n  registryConfigSchema,\n  registryIndexSchema,\n  registryItemSchema,\n  registrySchema,\n  stylesSchema,\n} from \"@/src/schema\"\nimport { Config, explorer } from \"@/src/utils/get-config\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { logger } from \"@/src/utils/logger\"\nimport { z } from \"zod\"\n\nexport async function getRegistry(\n  name: string,\n  options?: {\n    config?: Partial<Config>\n    useCache?: boolean\n  }\n) {\n  const { config, useCache } = options || {}\n\n  if (isUrl(name)) {\n    const [result] = await fetchRegistry([name], { useCache })\n    try {\n      return registrySchema.parse(result)\n    } catch (error) {\n      throw new RegistryParseError(name, error)\n    }\n  }\n\n  if (!name.startsWith(\"@\")) {\n    throw new RegistryInvalidNamespaceError(name)\n  }\n\n  let registryName = name\n  if (!registryName.endsWith(\"/registry\")) {\n    registryName = `${registryName}/registry`\n  }\n\n  const urlAndHeaders = buildUrlAndHeadersForRegistryItem(\n    registryName as `@${string}`,\n    configWithDefaults(config)\n  )\n\n  if (!urlAndHeaders?.url) {\n    throw new RegistryNotFoundError(registryName)\n  }\n\n  if (urlAndHeaders.headers && Object.keys(urlAndHeaders.headers).length > 0) {\n    setRegistryHeaders({\n      [urlAndHeaders.url]: urlAndHeaders.headers,\n    })\n  }\n\n  const [result] = await fetchRegistry([urlAndHeaders.url], { useCache })\n\n  try {\n    return registrySchema.parse(result)\n  } catch (error) {\n    throw new RegistryParseError(registryName, error)\n  }\n}\n\nexport async function getRegistryItems(\n  items: string[],\n  options?: {\n    config?: Partial<Config>\n    useCache?: boolean\n  }\n) {\n  const { config, useCache = false } = options || {}\n\n  clearRegistryContext()\n\n  return fetchRegistryItems(items, configWithDefaults(config), { useCache })\n}\n\nexport async function resolveRegistryItems(\n  items: string[],\n  options?: {\n    config?: Partial<Config>\n    useCache?: boolean\n  }\n) {\n  const { config, useCache = false } = options || {}\n\n  clearRegistryContext()\n  return resolveRegistryTree(items, configWithDefaults(config), { useCache })\n}\n\nexport async function getRegistriesConfig(\n  cwd: string,\n  options?: { useCache?: boolean }\n) {\n  const { useCache = true } = options || {}\n\n  // Clear cache if requested\n  if (!useCache) {\n    explorer.clearCaches()\n  }\n\n  const configResult = await explorer.search(cwd)\n\n  if (!configResult) {\n    // Do not throw an error if the config is missing.\n    // We still have access to the built-in registries.\n    return {\n      registries: BUILTIN_REGISTRIES,\n    }\n  }\n\n  // Parse just the registries field from the config\n  const registriesConfig = z\n    .object({\n      registries: registryConfigSchema.optional(),\n    })\n    .safeParse(configResult.config)\n\n  if (!registriesConfig.success) {\n    throw new ConfigParseError(cwd, registriesConfig.error)\n  }\n\n  // Merge built-in registries with user registries\n  return {\n    registries: {\n      ...BUILTIN_REGISTRIES,\n      ...(registriesConfig.data.registries || {}),\n    },\n  }\n}\n\nexport async function getShadcnRegistryIndex() {\n  try {\n    const [result] = await fetchRegistry([\"index.json\"])\n\n    return registryIndexSchema.parse(result)\n  } catch (error) {\n    logger.error(\"\\n\")\n    handleError(error)\n  }\n}\n\nexport async function getRegistryStyles() {\n  try {\n    const [result] = await fetchRegistry([\"styles/index.json\"])\n\n    return stylesSchema.parse(result)\n  } catch (error) {\n    logger.error(\"\\n\")\n    handleError(error)\n    return []\n  }\n}\n\nexport async function getRegistryIcons() {\n  try {\n    const [result] = await fetchRegistry([\"icons/index.json\"])\n    return iconsSchema.parse(result)\n  } catch (error) {\n    handleError(error)\n    return {}\n  }\n}\n\nexport async function getRegistryBaseColors() {\n  return BASE_COLORS\n}\n\nexport async function getRegistryBaseColor(baseColor: string) {\n  try {\n    const [result] = await fetchRegistry([`colors/${baseColor}.json`])\n\n    return registryBaseColorSchema.parse(result)\n  } catch (error) {\n    handleError(error)\n  }\n}\n\n/**\n * @deprecated This function is deprecated and will be removed in a future version.\n */\nexport async function resolveTree(\n  index: z.infer<typeof registryIndexSchema>,\n  names: string[]\n) {\n  const tree: z.infer<typeof registryIndexSchema> = []\n\n  for (const name of names) {\n    const entry = index.find((entry) => entry.name === name)\n\n    if (!entry) {\n      continue\n    }\n\n    tree.push(entry)\n\n    if (entry.registryDependencies) {\n      const dependencies = await resolveTree(index, entry.registryDependencies)\n      tree.push(...dependencies)\n    }\n  }\n\n  return tree.filter(\n    (component, index, self) =>\n      self.findIndex((c) => c.name === component.name) === index\n  )\n}\n\n/**\n * @deprecated This function is deprecated and will be removed in a future version.\n */\nexport async function fetchTree(\n  style: string,\n  tree: z.infer<typeof registryIndexSchema>\n) {\n  try {\n    const paths = tree.map((item) => `styles/${style}/${item.name}.json`)\n    const results = await fetchRegistry(paths)\n    return results.map((result) => registryItemSchema.parse(result))\n  } catch (error) {\n    handleError(error)\n    return []\n  }\n}\n\n/**\n * @deprecated This function is deprecated and will be removed in a future version.\n */\nexport async function getItemTargetPath(\n  config: Config,\n  item: Pick<z.infer<typeof registryItemSchema>, \"type\">,\n  override?: string\n) {\n  if (override) {\n    return override\n  }\n\n  if (item.type === \"registry:ui\") {\n    return config.resolvedPaths.ui ?? config.resolvedPaths.components\n  }\n\n  const [parent, type] = item.type?.split(\":\") ?? []\n  if (!(parent in config.resolvedPaths)) {\n    return null\n  }\n\n  return path.join(\n    config.resolvedPaths[parent as keyof typeof config.resolvedPaths],\n    type\n  )\n}\n\n// Fetch registries with new schema (array of objects with name, homepage, url, featured).\nexport async function getRegistries(options?: { useCache?: boolean }) {\n  options = {\n    useCache: true,\n    ...options,\n  }\n\n  const url = `${REGISTRY_URL}/registries.json`\n  const [data] = await fetchRegistry([url], {\n    useCache: options.useCache,\n  })\n\n  try {\n    return registriesSchema.parse(data)\n  } catch (error) {\n    if (error instanceof z.ZodError) {\n      throw new RegistriesIndexParseError(error)\n    }\n\n    throw error\n  }\n}\n\n/**\n * @deprecated Use getRegistries() instead.\n */\nexport async function getRegistriesIndex(options?: { useCache?: boolean }) {\n  // Fetch new format and transform to old Record<string, string> for backward compatibility.\n  const registries = await getRegistries(options)\n  if (!registries) return null\n  return Object.fromEntries(registries.map((r) => [r.name, r.url])) as z.infer<\n    typeof registriesIndexSchema\n  >\n}\n\nexport async function getPresets(options?: { useCache?: boolean }) {\n  options = {\n    useCache: true,\n    ...options,\n  }\n\n  const url = `${REGISTRY_URL}/config.json`\n  const [data] = await fetchRegistry([url], {\n    useCache: options.useCache,\n  })\n\n  const result = configJsonSchema.parse(data)\n  return result.presets\n}\n\nexport async function getPreset(\n  name: string,\n  options?: { useCache?: boolean }\n) {\n  const presets = await getPresets(options)\n  return (\n    presets.find(\n      (preset) => preset.name.toLowerCase() === name.toLowerCase()\n    ) ?? null\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/builder.test.ts",
    "content": "/* eslint-disable turbo/no-undeclared-env-vars */\n\nimport { REGISTRY_URL } from \"@/src/registry/constants\"\nimport { afterEach, beforeEach, describe, expect, it } from \"vitest\"\n\nimport {\n  buildHeadersFromRegistryConfig,\n  buildUrlAndHeadersForRegistryItem,\n  buildUrlFromRegistryConfig,\n  resolveRegistryUrl,\n} from \"./builder\"\n\ndescribe(\"buildUrlFromRegistryConfig\", () => {\n  beforeEach(() => {\n    process.env.TEST_TOKEN = \"abc123\"\n    process.env.API_VERSION = \"v2\"\n    process.env.API_KEY = \"key456\"\n  })\n\n  afterEach(() => {\n    delete process.env.TEST_TOKEN\n    delete process.env.API_VERSION\n    delete process.env.API_KEY\n  })\n\n  it(\"should build URL from string config\", () => {\n    const url = buildUrlFromRegistryConfig(\n      \"chat-component\",\n      \"https://v0.dev/chat/b/{name}/json\"\n    )\n    expect(url).toBe(\"https://v0.dev/chat/b/chat-component/json\")\n  })\n\n  it(\"should replace style placeholder in URL\", () => {\n    const url = buildUrlFromRegistryConfig(\n      \"button\",\n      \"https://ui.shadcn.com/r/styles/{style}/{name}.json\",\n      { style: \"new-york\" } as any\n    )\n    expect(url).toBe(\"https://ui.shadcn.com/r/styles/new-york/button.json\")\n  })\n\n  it(\"should handle both name and style placeholders\", () => {\n    const url = buildUrlFromRegistryConfig(\n      \"accordion\",\n      \"https://example.com/{style}/components/{name}\",\n      { style: \"default\" } as any\n    )\n    expect(url).toBe(\"https://example.com/default/components/accordion\")\n  })\n\n  it(\"should build URL with env vars\", () => {\n    const url = buildUrlFromRegistryConfig(\n      \"button\",\n      \"https://api.com/{name}?token=${TEST_TOKEN}\"\n    )\n    expect(url).toBe(\"https://api.com/button?token=abc123\")\n  })\n\n  it(\"should build URL with params\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      params: {\n        version: \"${API_VERSION}\",\n        format: \"json\",\n      },\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\"https://api.com/table?version=v2&format=json\")\n  })\n\n  it(\"should skip empty param values\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      params: {\n        token: \"${MISSING_VAR}\",\n        format: \"json\",\n      },\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\"https://api.com/table?format=json\")\n  })\n\n  it(\"should handle existing query params\", () => {\n    const config = {\n      url: \"https://api.com/{name}?existing=true\",\n      params: {\n        new: \"param\",\n      },\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\"https://api.com/table?existing=true&new=param\")\n  })\n\n  it(\"should handle URL with no params\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\"https://api.com/table\")\n  })\n\n  it(\"should handle multiple env vars in params\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      params: {\n        token: \"${TEST_TOKEN}\",\n        version: \"${API_VERSION}\",\n        key: \"${API_KEY}\",\n      },\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\"https://api.com/table?token=abc123&version=v2&key=key456\")\n  })\n\n  it(\"should handle all empty env vars in params\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      params: {\n        token: \"${MISSING_VAR1}\",\n        key: \"${MISSING_VAR2}\",\n      },\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\"https://api.com/table\")\n  })\n\n  it(\"should handle mixed static and env var params\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      params: {\n        static: \"value\",\n        env: \"${TEST_TOKEN}\",\n        empty: \"${MISSING_VAR}\",\n      },\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\"https://api.com/table?static=value&env=abc123\")\n  })\n\n  it(\"should handle special characters in params\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      params: {\n        \"user-id\": \"123\",\n        \"api-key\": \"${TEST_TOKEN}\",\n        \"content-type\": \"application/json\",\n      },\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\n      \"https://api.com/table?user-id=123&api-key=abc123&content-type=application%2Fjson\"\n    )\n  })\n\n  it(\"should handle URL with multiple existing query params\", () => {\n    const config = {\n      url: \"https://api.com/{name}?param1=value1&param2=value2\",\n      params: {\n        newParam: \"newValue\",\n        envParam: \"${TEST_TOKEN}\",\n      },\n    }\n\n    const url = buildUrlFromRegistryConfig(\"table\", config)\n    expect(url).toBe(\n      \"https://api.com/table?param1=value1&param2=value2&newParam=newValue&envParam=abc123\"\n    )\n  })\n})\n\ndescribe(\"buildHeadersFromRegistryConfig\", () => {\n  beforeEach(() => {\n    process.env.AUTH_TOKEN = \"secret123\"\n    process.env.CLIENT_ID = \"client456\"\n    process.env.API_KEY = \"key789\"\n  })\n\n  afterEach(() => {\n    delete process.env.AUTH_TOKEN\n    delete process.env.CLIENT_ID\n    delete process.env.API_KEY\n  })\n\n  it(\"should return empty object for string config\", () => {\n    expect(buildHeadersFromRegistryConfig(\"https://api.com/{name}\")).toEqual({})\n  })\n\n  it(\"should return empty object for config without headers\", () => {\n    expect(\n      buildHeadersFromRegistryConfig({ url: \"https://api.com/{name}\" })\n    ).toEqual({})\n  })\n\n  it(\"should expand headers with env vars\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        Authorization: \"Bearer ${AUTH_TOKEN}\",\n        \"X-Client-Id\": \"${CLIENT_ID}\",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      Authorization: \"Bearer secret123\",\n      \"X-Client-Id\": \"client456\",\n    })\n  })\n\n  it(\"should skip headers with empty values\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        Authorization: \"Bearer ${MISSING_VAR}\",\n        \"X-Client-Id\": \"${CLIENT_ID}\",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      \"X-Client-Id\": \"client456\",\n    })\n  })\n\n  it(\"should handle headers with mixed static and env var content\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        Authorization: \"Bearer ${AUTH_TOKEN}\",\n        \"Content-Type\": \"application/json\",\n        \"X-Custom\": \"prefix-${CLIENT_ID}-suffix\",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      Authorization: \"Bearer secret123\",\n      \"Content-Type\": \"application/json\",\n      \"X-Custom\": \"prefix-client456-suffix\",\n    })\n  })\n\n  it(\"should skip headers with only env vars that are empty\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        \"X-Missing\": \"${MISSING_VAR1}\",\n        \"X-Also-Missing\": \"${MISSING_VAR2}\",\n        \"X-Present\": \"${CLIENT_ID}\",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      \"X-Present\": \"client456\",\n    })\n  })\n\n  it(\"should handle headers with whitespace-only values\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        \"X-Empty\": \"   \",\n        \"X-Whitespace\": \"  ${MISSING_VAR}  \",\n        \"X-Valid\": \"  ${CLIENT_ID}  \",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      \"X-Valid\": \"  client456  \",\n    })\n  })\n\n  it(\"should handle complex env var patterns\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        \"X-Complex\": \"Bearer ${AUTH_TOKEN} with ${CLIENT_ID} and ${API_KEY}\",\n        \"X-Simple\": \"${CLIENT_ID}\",\n        \"X-Mixed\": \"static-${AUTH_TOKEN}-${MISSING_VAR}-${API_KEY}\",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      \"X-Complex\": \"Bearer secret123 with client456 and key789\",\n      \"X-Simple\": \"client456\",\n      \"X-Mixed\": \"static-secret123--key789\",\n    })\n  })\n\n  it(\"should handle headers with only static content\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Accept: \"application/json\",\n        \"User-Agent\": \"shadcn-ui/1.0.0\",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      \"Content-Type\": \"application/json\",\n      Accept: \"application/json\",\n      \"User-Agent\": \"shadcn-ui/1.0.0\",\n    })\n  })\n\n  it(\"should handle headers with template-like content but no env vars\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        \"X-Template\": \"This is a template ${but not an env var}\",\n        \"X-Regular\": \"Regular header value\",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      \"X-Template\": \"This is a template ${but not an env var}\",\n      \"X-Regular\": \"Regular header value\",\n    })\n  })\n\n  it(\"should handle case where env var expansion doesn't change the value\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        \"X-No-Change\": \"static value\",\n        \"X-With-Env\": \"prefix-${CLIENT_ID}-suffix\",\n      },\n    }\n\n    expect(buildHeadersFromRegistryConfig(config)).toEqual({\n      \"X-No-Change\": \"static value\",\n      \"X-With-Env\": \"prefix-client456-suffix\",\n    })\n  })\n})\n\ndescribe(\"buildUrlAndHeadersForRegistryItem\", () => {\n  it(\"should resolve non-registry items through @shadcn registry\", () => {\n    const input = \"button\"\n    const config = {} as any\n    // Non-prefixed items are resolved through the built-in @shadcn registry\n    expect(buildUrlAndHeadersForRegistryItem(input, config)).toEqual({\n      url: \"https://ui.shadcn.com/r/styles/{style}/button.json\",\n      headers: {},\n    })\n  })\n\n  it(\"should throw error for unknown registry\", () => {\n    expect(() => {\n      buildUrlAndHeadersForRegistryItem(\"@unknown/button\", {} as any)\n    }).toThrow('Unknown registry \"@unknown\"')\n  })\n\n  it(\"should resolve registry items with string config\", () => {\n    const config = {\n      registries: {\n        \"@v0\": \"https://v0.dev/chat/b/{name}/json\",\n      },\n    } as any\n\n    const result1 = buildUrlAndHeadersForRegistryItem(\"@v0/button\", config)\n    expect(result1).toEqual({\n      url: \"https://v0.dev/chat/b/button/json\",\n      headers: {},\n    })\n\n    const result2 = buildUrlAndHeadersForRegistryItem(\"@v0/data-table\", config)\n    expect(result2).toEqual({\n      url: \"https://v0.dev/chat/b/data-table/json\",\n      headers: {},\n    })\n  })\n\n  it(\"should resolve registry items with object config\", () => {\n    const config = {\n      registries: {\n        \"@test\": {\n          url: \"https://api.com/{name}.json\",\n          headers: {\n            Authorization: \"Bearer token123\",\n          },\n        },\n      },\n    } as any\n\n    const result = buildUrlAndHeadersForRegistryItem(\"@test/button\", config)\n    expect(result).toEqual({\n      url: \"https://api.com/button.json\",\n      headers: {\n        Authorization: \"Bearer token123\",\n      },\n    })\n  })\n\n  it(\"should handle environment variables in config\", () => {\n    process.env.TEST_TOKEN = \"abc123\"\n    process.env.API_URL = \"https://api.com\"\n\n    const config = {\n      registries: {\n        \"@env\": {\n          url: \"${API_URL}/{name}.json\",\n          headers: {\n            Authorization: \"Bearer ${TEST_TOKEN}\",\n          },\n        },\n      },\n    } as any\n\n    const result = buildUrlAndHeadersForRegistryItem(\"@env/button\", config)\n    expect(result).toEqual({\n      url: \"https://api.com/button.json\",\n      headers: {\n        Authorization: \"Bearer abc123\",\n      },\n    })\n\n    delete process.env.TEST_TOKEN\n    delete process.env.API_URL\n  })\n\n  it(\"should handle complex item paths\", () => {\n    const config = {\n      registries: {\n        \"@acme\": \"https://api.com/{name}.json\",\n      },\n    } as any\n\n    const result = buildUrlAndHeadersForRegistryItem(\"@acme/ui/button\", config)\n    expect(result).toEqual({\n      url: \"https://api.com/ui/button.json\",\n      headers: {},\n    })\n  })\n\n  it(\"should handle URLs and local files\", () => {\n    const config = { registries: {} } as any\n\n    // URLs should return null (not registry items)\n    expect(\n      buildUrlAndHeadersForRegistryItem(\"https://example.com/button\", config)\n    ).toBeNull()\n\n    // Local files should return null (not registry items)\n    expect(\n      buildUrlAndHeadersForRegistryItem(\"./local/button\", config)\n    ).toBeNull()\n  })\n})\n\ndescribe(\"resolveRegistryUrl\", () => {\n  it(\"should return the URL as-is for valid URLs\", () => {\n    const url = \"https://example.com/component.json\"\n    expect(resolveRegistryUrl(url)).toBe(url)\n  })\n\n  it(\"should append /json to v0 registry URLs\", () => {\n    const v0Url = \"https://v0.dev/chat/b/abc123\"\n    expect(resolveRegistryUrl(v0Url)).toBe(\"https://v0.dev/chat/b/abc123/json\")\n  })\n\n  it(\"should not append /json if already present\", () => {\n    const v0Url = \"https://v0.dev/chat/b/abc123/json\"\n    expect(resolveRegistryUrl(v0Url)).toBe(v0Url)\n  })\n\n  it(\"should prepend REGISTRY_URL for non-URLs\", () => {\n    expect(resolveRegistryUrl(\"test.json\")).toBe(`${REGISTRY_URL}/test.json`)\n    expect(resolveRegistryUrl(\"styles/default/button.json\")).toBe(\n      `${REGISTRY_URL}/styles/default/button.json`\n    )\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/builder.ts",
    "content": "import { BUILTIN_REGISTRIES, REGISTRY_URL } from \"@/src/registry/constants\"\nimport { expandEnvVars } from \"@/src/registry/env\"\nimport { RegistryNotConfiguredError } from \"@/src/registry/errors\"\nimport { parseRegistryAndItemFromString } from \"@/src/registry/parser\"\nimport { isLocalFile, isUrl } from \"@/src/registry/utils\"\nimport { validateRegistryConfig } from \"@/src/registry/validator\"\nimport { registryConfigItemSchema } from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { z } from \"zod\"\n\nconst NAME_PLACEHOLDER = \"{name}\"\nconst STYLE_PLACEHOLDER = \"{style}\"\nconst ENV_VAR_PATTERN = /\\${(\\w+)}/g\nconst QUERY_PARAM_SEPARATOR = \"?\"\nconst QUERY_PARAM_DELIMITER = \"&\"\n\nfunction isLocalPath(path: string) {\n  return path.startsWith(\"./\") || path.startsWith(\"/\")\n}\n\nexport function buildUrlAndHeadersForRegistryItem(\n  name: string,\n  config?: Config\n) {\n  let { registry, item } = parseRegistryAndItemFromString(name)\n\n  // If no registry prefix, check if it's a URL or local path.\n  // These should be handled directly, not through a registry.\n  if (!registry) {\n    if (isUrl(name) || isLocalFile(name) || isLocalPath(name)) {\n      return null\n    }\n    registry = \"@shadcn\"\n  }\n\n  const registries = { ...BUILTIN_REGISTRIES, ...config?.registries }\n  const registryConfig = registries[registry]\n  if (!registryConfig) {\n    throw new RegistryNotConfiguredError(registry)\n  }\n\n  // TODO: I don't like this here.\n  // But this will do for now.\n  validateRegistryConfig(registry, registryConfig)\n\n  return {\n    url: buildUrlFromRegistryConfig(item, registryConfig, config),\n    headers: buildHeadersFromRegistryConfig(registryConfig),\n  }\n}\n\nexport function buildUrlFromRegistryConfig(\n  item: string,\n  registryConfig: z.infer<typeof registryConfigItemSchema>,\n  config?: Config\n) {\n  if (typeof registryConfig === \"string\") {\n    let url = registryConfig.replace(NAME_PLACEHOLDER, item)\n    if (config?.style && url.includes(STYLE_PLACEHOLDER)) {\n      url = url.replace(STYLE_PLACEHOLDER, config.style)\n    }\n    return expandEnvVars(url)\n  }\n\n  let baseUrl = registryConfig.url.replace(NAME_PLACEHOLDER, item)\n  if (config?.style && baseUrl.includes(STYLE_PLACEHOLDER)) {\n    baseUrl = baseUrl.replace(STYLE_PLACEHOLDER, config.style)\n  }\n  baseUrl = expandEnvVars(baseUrl)\n\n  if (!registryConfig.params) {\n    return baseUrl\n  }\n\n  return appendQueryParams(baseUrl, registryConfig.params)\n}\n\nexport function buildHeadersFromRegistryConfig(\n  config: z.infer<typeof registryConfigItemSchema>\n) {\n  if (typeof config === \"string\" || !config.headers) {\n    return {}\n  }\n\n  const headers: Record<string, string> = {}\n\n  for (const [key, value] of Object.entries(config.headers)) {\n    const expandedValue = expandEnvVars(value)\n\n    if (shouldIncludeHeader(value, expandedValue)) {\n      headers[key] = expandedValue\n    }\n  }\n\n  return headers\n}\n\nfunction appendQueryParams(baseUrl: string, params: Record<string, string>) {\n  const urlParams = new URLSearchParams()\n\n  for (const [key, value] of Object.entries(params)) {\n    const expandedValue = expandEnvVars(value)\n    if (expandedValue) {\n      urlParams.append(key, expandedValue)\n    }\n  }\n\n  const queryString = urlParams.toString()\n  if (!queryString) {\n    return baseUrl\n  }\n\n  const separator = baseUrl.includes(QUERY_PARAM_SEPARATOR)\n    ? QUERY_PARAM_DELIMITER\n    : QUERY_PARAM_SEPARATOR\n\n  return `${baseUrl}${separator}${queryString}`\n}\n\nfunction shouldIncludeHeader(originalValue: string, expandedValue: string) {\n  const trimmedExpanded = expandedValue.trim()\n\n  if (!trimmedExpanded) {\n    return false\n  }\n\n  // If the original value contains valid env vars, only include if expansion changed the value.\n  if (originalValue.includes(\"${\")) {\n    // Check if there are actual env vars in the string\n    const envVars = originalValue.match(ENV_VAR_PATTERN)\n    if (envVars) {\n      const templateWithoutVars = originalValue\n        .replace(ENV_VAR_PATTERN, \"\")\n        .trim()\n      return trimmedExpanded !== templateWithoutVars\n    }\n  }\n\n  return true\n}\n\n/**\n * Resolves a registry URL from a path or URL string.\n * Handles special cases like v0 registry URLs that need /json suffix.\n *\n * @param pathOrUrl - Either a relative path or a full URL\n * @returns The resolved registry URL\n */\nexport function resolveRegistryUrl(pathOrUrl: string) {\n  if (isUrl(pathOrUrl)) {\n    // If the url contains /chat/b/, we assume it's the v0 registry.\n    // We need to add the /json suffix if it's missing.\n    const url = new URL(pathOrUrl)\n    if (url.pathname.match(/\\/chat\\/b\\//) && !url.pathname.endsWith(\"/json\")) {\n      url.pathname = `${url.pathname}/json`\n    }\n\n    return url.toString()\n  }\n\n  return `${REGISTRY_URL}/${pathOrUrl}`\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/config.test.ts",
    "content": "import { BUILTIN_REGISTRIES, FALLBACK_STYLE } from \"@/src/registry/constants\"\nimport { createConfig } from \"@/src/utils/get-config\"\nimport { describe, expect, it } from \"vitest\"\n\nimport { configWithDefaults } from \"./config\"\n\ndescribe(\"configWithDefaults\", () => {\n  it(\"should merge built-in registries with user registries\", () => {\n    const userConfig = createConfig({\n      registries: {\n        \"@custom\": \"http://example.com/{name}\",\n      },\n    })\n\n    const result = configWithDefaults(userConfig)\n\n    expect(result.registries).toEqual({\n      ...BUILTIN_REGISTRIES,\n      \"@custom\": \"http://example.com/{name}\",\n    })\n  })\n\n  it(\"should preserve user registries when merging\", () => {\n    const userConfig = createConfig({\n      registries: {\n        \"@one\": \"http://one.com/{name}\",\n        \"@two\": {\n          url: \"http://two.com/{name}\",\n          headers: {\n            Authorization: \"Bearer token\",\n          },\n        },\n      },\n    })\n\n    const result = configWithDefaults(userConfig)\n\n    expect(result.registries?.[\"@one\"]).toBe(\"http://one.com/{name}\")\n    expect(result.registries?.[\"@two\"]).toEqual({\n      url: \"http://two.com/{name}\",\n      headers: {\n        Authorization: \"Bearer token\",\n      },\n    })\n    expect(result.registries?.[\"@shadcn\"]).toBe(BUILTIN_REGISTRIES[\"@shadcn\"])\n  })\n\n  it(\"should use FALLBACK_STYLE when style is new-york and tailwind.config is empty\", () => {\n    const config = createConfig({\n      style: \"new-york\",\n      tailwind: {\n        config: \"\",\n        css: \"app/globals.css\",\n        baseColor: \"slate\",\n        cssVariables: true,\n      },\n    })\n\n    const result = configWithDefaults(config)\n\n    expect(result.style).toBe(FALLBACK_STYLE)\n  })\n\n  it(\"should keep new-york style when tailwind.config is not empty\", () => {\n    const config = createConfig({\n      style: \"new-york\",\n      tailwind: {\n        config: \"tailwind.config.js\",\n        css: \"app/globals.css\",\n        baseColor: \"slate\",\n        cssVariables: true,\n      },\n    })\n\n    const result = configWithDefaults(config)\n\n    expect(result.style).toBe(\"new-york\")\n  })\n\n  it(\"should preserve non-new-york styles regardless of tailwind config\", () => {\n    const config1 = createConfig({\n      style: \"default\",\n      tailwind: {\n        config: \"\",\n        css: \"app/globals.css\",\n        baseColor: \"slate\",\n        cssVariables: true,\n      },\n    })\n\n    const result1 = configWithDefaults(config1)\n    expect(result1.style).toBe(\"default\")\n\n    const config2 = createConfig({\n      style: \"miami\",\n      tailwind: {\n        config: \"tailwind.config.js\",\n        css: \"app/globals.css\",\n        baseColor: \"slate\",\n        cssVariables: true,\n      },\n    })\n\n    const result2 = configWithDefaults(config2)\n    expect(result2.style).toBe(\"miami\")\n  })\n\n  it(\"should use FALLBACK_STYLE when no style is provided\", () => {\n    const config = createConfig({\n      style: undefined,\n    })\n\n    const result = configWithDefaults(config)\n\n    expect(result.style).toBe(FALLBACK_STYLE)\n  })\n\n  it(\"should deeply merge nested config properties\", () => {\n    const config = createConfig({\n      tailwind: {\n        css: \"custom/path/globals.css\",\n        prefix: \"tw-\",\n        baseColor: \"zinc\",\n        cssVariables: false,\n      },\n      aliases: {\n        components: \"@/custom-components\",\n        utils: \"@/custom-utils\",\n      },\n    })\n\n    const result = configWithDefaults(config)\n\n    expect(result.tailwind.css).toBe(\"custom/path/globals.css\")\n    expect(result.tailwind.prefix).toBe(\"tw-\")\n    expect(result.tailwind.baseColor).toBe(\"zinc\")\n    expect(result.tailwind.cssVariables).toBe(false)\n    expect(result.aliases.components).toBe(\"@/custom-components\")\n    expect(result.aliases.utils).toBe(\"@/custom-utils\")\n  })\n\n  it(\"should preserve all user config properties\", () => {\n    const config = createConfig({\n      style: \"default\",\n      tsx: false,\n      rsc: false,\n      tailwind: {\n        config: \"custom.config.js\",\n        css: \"styles/main.css\",\n        baseColor: \"gray\",\n        cssVariables: true,\n        prefix: \"app-\",\n      },\n      resolvedPaths: {\n        cwd: \"/custom/project\",\n        tailwindConfig: \"/custom/project/tailwind.config.js\",\n        tailwindCss: \"/custom/project/styles/main.css\",\n        utils: \"/custom/project/lib/utils\",\n        components: \"/custom/project/components\",\n        ui: \"/custom/project/components/ui\",\n        lib: \"/custom/project/lib\",\n        hooks: \"/custom/project/hooks\",\n      },\n      aliases: {\n        components: \"@/components\",\n        utils: \"@/lib/utils\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n        hooks: \"@/hooks\",\n      },\n    })\n\n    const result = configWithDefaults(config)\n\n    expect(result.tsx).toBe(false)\n    expect(result.rsc).toBe(false)\n    expect(result.tailwind.config).toBe(\"custom.config.js\")\n    expect(result.tailwind.css).toBe(\"styles/main.css\")\n    expect(result.tailwind.baseColor).toBe(\"gray\")\n    expect(result.tailwind.prefix).toBe(\"app-\")\n    expect(result.resolvedPaths.cwd).toBe(\"/custom/project\")\n    expect(result.resolvedPaths.components).toBe(\"/custom/project/components\")\n  })\n\n  it(\"should handle empty registries object\", () => {\n    const config = createConfig({\n      registries: {},\n    })\n\n    const result = configWithDefaults(config)\n\n    expect(result.registries).toEqual(BUILTIN_REGISTRIES)\n  })\n\n  it(\"should override built-in registries if user provides same key\", () => {\n    const config = createConfig({\n      registries: {\n        \"@shadcn\": \"http://custom-shadcn.com/{name}\",\n      },\n    })\n\n    const result = configWithDefaults(config)\n\n    // User's @shadcn should override the built-in one\n    expect(result.registries?.[\"@shadcn\"]).toBe(\n      \"http://custom-shadcn.com/{name}\"\n    )\n  })\n\n  it(\"should validate the final config with configSchema\", () => {\n    const config = createConfig({\n      style: \"default\",\n      registries: {\n        \"@test\": \"http://test.com/{name}\",\n      },\n    })\n\n    // This should not throw since configSchema.parse is called internally\n    expect(() => configWithDefaults(config)).not.toThrow()\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/config.ts",
    "content": "import { BUILTIN_REGISTRIES, FALLBACK_STYLE } from \"@/src/registry/constants\"\nimport { configSchema } from \"@/src/schema\"\nimport { Config, createConfig, DeepPartial } from \"@/src/utils/get-config\"\nimport deepmerge from \"deepmerge\"\n\nfunction resolveStyleFromConfig(config: DeepPartial<Config>) {\n  if (!config.style) {\n    return FALLBACK_STYLE\n  }\n\n  // Check if we should use new-york-v4 for Tailwind v4.\n  // We assume that if tailwind.config is empty, we're using Tailwind v4.\n  if (config.style === \"new-york\" && config.tailwind?.config === \"\") {\n    return FALLBACK_STYLE\n  }\n\n  return config.style\n}\n\nexport function configWithDefaults(config?: DeepPartial<Config>) {\n  const baseConfig = createConfig({\n    style: FALLBACK_STYLE,\n    registries: BUILTIN_REGISTRIES,\n  })\n\n  if (!config) {\n    return baseConfig\n  }\n\n  return configSchema.parse(\n    deepmerge(baseConfig, {\n      ...config,\n      style: resolveStyleFromConfig(config),\n      registries: { ...BUILTIN_REGISTRIES, ...config.registries },\n    })\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/constants.ts",
    "content": "import { registryConfigSchema } from \"@/src/schema\"\nimport { z } from \"zod\"\n\nexport const REGISTRY_URL =\n  process.env.REGISTRY_URL ?? \"https://ui.shadcn.com/r\"\n\nexport const SHADCN_URL = REGISTRY_URL.replace(/\\/r\\/?$/, \"\")\n\nexport const FALLBACK_STYLE = \"new-york-v4\"\n\nexport const BASE_COLORS = [\n  {\n    name: \"neutral\",\n    label: \"Neutral\",\n  },\n  {\n    name: \"zinc\",\n    label: \"Zinc\",\n  },\n  {\n    name: \"stone\",\n    label: \"Stone\",\n  },\n  {\n    name: \"mauve\",\n    label: \"Mauve\",\n  },\n  {\n    name: \"olive\",\n    label: \"Olive\",\n  },\n  {\n    name: \"mist\",\n    label: \"Mist\",\n  },\n  {\n    name: \"taupe\",\n    label: \"Taupe\",\n  },\n] as const\n\n// Built-in registries that are always available and cannot be overridden\nexport const BUILTIN_REGISTRIES: z.infer<typeof registryConfigSchema> = {\n  \"@shadcn\": `${REGISTRY_URL}/styles/{style}/{name}.json`,\n}\n\nexport const BUILTIN_MODULES = new Set([\n  [\n    // Node.js built-in modules\n    // From https://github.com/sindresorhus/builtin-modules.\n    \"node:assert\",\n    \"assert\",\n    \"node:assert/strict\",\n    \"assert/strict\",\n    \"node:async_hooks\",\n    \"async_hooks\",\n    \"node:buffer\",\n    \"buffer\",\n    \"node:child_process\",\n    \"child_process\",\n    \"node:cluster\",\n    \"cluster\",\n    \"node:console\",\n    \"console\",\n    \"node:constants\",\n    \"constants\",\n    \"node:crypto\",\n    \"crypto\",\n    \"node:dgram\",\n    \"dgram\",\n    \"node:diagnostics_channel\",\n    \"diagnostics_channel\",\n    \"node:dns\",\n    \"dns\",\n    \"node:dns/promises\",\n    \"dns/promises\",\n    \"node:domain\",\n    \"domain\",\n    \"node:events\",\n    \"events\",\n    \"node:fs\",\n    \"fs\",\n    \"node:fs/promises\",\n    \"fs/promises\",\n    \"node:http\",\n    \"http\",\n    \"node:http2\",\n    \"http2\",\n    \"node:https\",\n    \"https\",\n    \"node:inspector\",\n    \"inspector\",\n    \"node:inspector/promises\",\n    \"inspector/promises\",\n    \"node:module\",\n    \"module\",\n    \"node:net\",\n    \"net\",\n    \"node:os\",\n    \"os\",\n    \"node:path\",\n    \"path\",\n    \"node:path/posix\",\n    \"path/posix\",\n    \"node:path/win32\",\n    \"path/win32\",\n    \"node:perf_hooks\",\n    \"perf_hooks\",\n    \"node:process\",\n    \"process\",\n    \"node:querystring\",\n    \"querystring\",\n    \"node:quic\",\n    \"node:readline\",\n    \"readline\",\n    \"node:readline/promises\",\n    \"readline/promises\",\n    \"node:repl\",\n    \"repl\",\n    \"node:sea\",\n    \"node:sqlite\",\n    \"node:stream\",\n    \"stream\",\n    \"node:stream/consumers\",\n    \"stream/consumers\",\n    \"node:stream/promises\",\n    \"stream/promises\",\n    \"node:stream/web\",\n    \"stream/web\",\n    \"node:string_decoder\",\n    \"string_decoder\",\n    \"node:test\",\n    \"node:test/reporters\",\n    \"node:timers\",\n    \"timers\",\n    \"node:timers/promises\",\n    \"timers/promises\",\n    \"node:tls\",\n    \"tls\",\n    \"node:trace_events\",\n    \"trace_events\",\n    \"node:tty\",\n    \"tty\",\n    \"node:url\",\n    \"url\",\n    \"node:util\",\n    \"util\",\n    \"node:util/types\",\n    \"util/types\",\n    \"node:v8\",\n    \"v8\",\n    \"node:vm\",\n    \"vm\",\n    \"node:wasi\",\n    \"wasi\",\n    \"node:worker_threads\",\n    \"worker_threads\",\n    \"node:zlib\",\n    \"zlib\",\n\n    // Bun built-in modules.\n    \"bun\",\n    \"bun:test\",\n    \"bun:sqlite\",\n    \"bun:ffi\",\n    \"bun:jsc\",\n    \"bun:internal\",\n  ],\n])\n\nexport const DEPRECATED_COMPONENTS = [\n  {\n    name: \"toast\",\n    deprecatedBy: \"sonner\",\n    message:\n      \"The toast component is deprecated. Use the sonner component instead.\",\n  },\n  {\n    name: \"toaster\",\n    deprecatedBy: \"sonner\",\n    message:\n      \"The toaster component is deprecated. Use the sonner component instead.\",\n  },\n]\n"
  },
  {
    "path": "packages/shadcn/src/registry/context.ts",
    "content": "interface RegistryContext {\n  headers: Record<string, Record<string, string>>\n}\n\nlet context: RegistryContext = {\n  headers: {},\n}\n\nexport function setRegistryHeaders(\n  headers: Record<string, Record<string, string>>\n) {\n  // Merge new headers with existing ones to preserve headers for nested dependencies\n  context.headers = { ...context.headers, ...headers }\n}\n\nexport function getRegistryHeadersFromContext(\n  url: string\n): Record<string, string> {\n  return context.headers[url] || {}\n}\n\nexport function clearRegistryContext() {\n  context.headers = {}\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/env.test.ts",
    "content": "/* eslint-disable turbo/no-undeclared-env-vars */\nimport { afterEach, beforeEach, describe, expect, it } from \"vitest\"\n\nimport { expandEnvVars, extractEnvVars } from \"./env\"\n\ndescribe(\"expandEnvVars\", () => {\n  beforeEach(() => {\n    process.env.TEST_TOKEN = \"abc123\"\n    process.env.API_KEY = \"secret\"\n  })\n\n  afterEach(() => {\n    delete process.env.TEST_TOKEN\n    delete process.env.API_KEY\n  })\n\n  it(\"should expand environment variables\", () => {\n    expect(expandEnvVars(\"Bearer ${TEST_TOKEN}\")).toBe(\"Bearer abc123\")\n    expect(expandEnvVars(\"key=${API_KEY}&token=${TEST_TOKEN}\")).toBe(\n      \"key=secret&token=abc123\"\n    )\n  })\n\n  it(\"should replace missing env vars with empty string\", () => {\n    expect(expandEnvVars(\"Bearer ${MISSING_VAR}\")).toBe(\"Bearer \")\n    expect(expandEnvVars(\"${VAR1}:${VAR2}\")).toBe(\":\")\n  })\n\n  it(\"should handle strings without env vars\", () => {\n    expect(expandEnvVars(\"no variables here\")).toBe(\"no variables here\")\n    expect(expandEnvVars(\"https://example.com\")).toBe(\"https://example.com\")\n  })\n})\n\ndescribe(\"extractEnvVars\", () => {\n  it(\"should extract environment variable names\", () => {\n    expect(extractEnvVars(\"Bearer ${TOKEN}\")).toEqual([\"TOKEN\"])\n    expect(extractEnvVars(\"${VAR1} and ${VAR2}\")).toEqual([\"VAR1\", \"VAR2\"])\n    expect(extractEnvVars(\"${SAME} and ${SAME}\")).toEqual([\"SAME\", \"SAME\"])\n  })\n\n  it(\"should return empty array for no variables\", () => {\n    expect(extractEnvVars(\"no variables\")).toEqual([])\n    expect(extractEnvVars(\"\")).toEqual([])\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/env.ts",
    "content": "export function expandEnvVars(value: string) {\n  return value.replace(/\\${(\\w+)}/g, (_match, key) => process.env[key] || \"\")\n}\n\nexport function extractEnvVars(value: string) {\n  const vars: string[] = []\n  const regex = /\\${(\\w+)}/g\n  let match: RegExpExecArray | null\n\n  while ((match = regex.exec(value)) !== null) {\n    vars.push(match[1])\n  }\n\n  return vars\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/errors.ts",
    "content": "import { SHADCN_URL } from \"@/src/registry/constants\"\nimport { z } from \"zod\"\n\n// Error codes for programmatic error handling\nexport const RegistryErrorCode = {\n  // Network errors\n  NETWORK_ERROR: \"NETWORK_ERROR\",\n  NOT_FOUND: \"NOT_FOUND\",\n  GONE: \"GONE\",\n  UNAUTHORIZED: \"UNAUTHORIZED\",\n  FORBIDDEN: \"FORBIDDEN\",\n  FETCH_ERROR: \"FETCH_ERROR\",\n\n  // Configuration errors\n  NOT_CONFIGURED: \"NOT_CONFIGURED\",\n  INVALID_CONFIG: \"INVALID_CONFIG\",\n  MISSING_ENV_VARS: \"MISSING_ENV_VARS\",\n\n  // File system errors\n  LOCAL_FILE_ERROR: \"LOCAL_FILE_ERROR\",\n\n  // Parsing errors\n  PARSE_ERROR: \"PARSE_ERROR\",\n  VALIDATION_ERROR: \"VALIDATION_ERROR\",\n\n  // Generic errors\n  UNKNOWN_ERROR: \"UNKNOWN_ERROR\",\n} as const\n\nexport type RegistryErrorCode =\n  (typeof RegistryErrorCode)[keyof typeof RegistryErrorCode]\n\nexport class RegistryError extends Error {\n  public readonly code: RegistryErrorCode\n  public readonly statusCode?: number\n  public readonly context?: Record<string, unknown>\n  public readonly suggestion?: string\n  public readonly timestamp: Date\n  public readonly cause?: unknown\n\n  constructor(\n    message: string,\n    options: {\n      code?: RegistryErrorCode\n      statusCode?: number\n      cause?: unknown\n      context?: Record<string, unknown>\n      suggestion?: string\n    } = {}\n  ) {\n    super(message)\n    this.name = \"RegistryError\"\n    this.code = options.code || RegistryErrorCode.UNKNOWN_ERROR\n    this.statusCode = options.statusCode\n    this.cause = options.cause\n    this.context = options.context\n    this.suggestion = options.suggestion\n    this.timestamp = new Date()\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor)\n    }\n  }\n\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      code: this.code,\n      statusCode: this.statusCode,\n      context: this.context,\n      suggestion: this.suggestion,\n      timestamp: this.timestamp,\n      stack: this.stack,\n    }\n  }\n}\n\nexport class RegistryNotFoundError extends RegistryError {\n  constructor(\n    public readonly url: string,\n    cause?: unknown\n  ) {\n    const message = `The item at ${url} was not found. It may not exist at the registry.`\n\n    super(message, {\n      code: RegistryErrorCode.NOT_FOUND,\n      statusCode: 404,\n      cause,\n      context: { url },\n      suggestion:\n        \"Check if the item name is correct and the registry URL is accessible.\",\n    })\n    this.name = \"RegistryNotFoundError\"\n  }\n}\n\nexport class RegistryGoneError extends RegistryError {\n  constructor(\n    public readonly url: string,\n    cause?: unknown\n  ) {\n    const message = `The item at ${url} is no longer available. It may have been removed or expired.`\n\n    super(message, {\n      code: RegistryErrorCode.GONE,\n      statusCode: 410,\n      cause,\n      context: { url },\n      suggestion:\n        \"This resource was previously available but has been permanently removed. Check if a newer version exists or contact the registry maintainer.\",\n    })\n    this.name = \"RegistryGoneError\"\n  }\n}\n\nexport class RegistryUnauthorizedError extends RegistryError {\n  constructor(\n    public readonly url: string,\n    cause?: unknown\n  ) {\n    const message = `You are not authorized to access the item at ${url}. If this is a remote registry, you may need to authenticate.`\n\n    super(message, {\n      code: RegistryErrorCode.UNAUTHORIZED,\n      statusCode: 401,\n      cause,\n      context: { url },\n      suggestion:\n        \"Check your authentication credentials and environment variables.\",\n    })\n    this.name = \"RegistryUnauthorizedError\"\n  }\n}\n\nexport class RegistryForbiddenError extends RegistryError {\n  constructor(\n    public readonly url: string,\n    cause?: unknown\n  ) {\n    const message = `You are not authorized to access the item at ${url}. If this is a remote registry, you may need to authenticate.`\n\n    super(message, {\n      code: RegistryErrorCode.FORBIDDEN,\n      statusCode: 403,\n      cause,\n      context: { url },\n      suggestion:\n        \"Check your authentication credentials and environment variables.\",\n    })\n    this.name = \"RegistryForbiddenError\"\n  }\n}\n\nexport class RegistryFetchError extends RegistryError {\n  constructor(\n    public readonly url: string,\n    statusCode?: number,\n    public readonly responseBody?: string,\n    cause?: unknown\n  ) {\n    // Use the error detail from the server if available\n    const baseMessage = statusCode\n      ? `Failed to fetch from registry (${statusCode}): ${url}`\n      : `Failed to fetch from registry: ${url}`\n\n    const message =\n      typeof cause === \"string\" && cause\n        ? `${baseMessage} - ${cause}`\n        : baseMessage\n\n    let suggestion = \"Check your network connection and try again.\"\n    if (statusCode === 404) {\n      suggestion =\n        \"The requested resource was not found. Check the URL or item name.\"\n    } else if (statusCode === 500) {\n      suggestion = \"The registry server encountered an error. Try again later.\"\n    } else if (statusCode && statusCode >= 400 && statusCode < 500) {\n      suggestion = \"There was a client error. Check your request parameters.\"\n    }\n\n    super(message, {\n      code: RegistryErrorCode.FETCH_ERROR,\n      statusCode,\n      cause,\n      context: { url, responseBody },\n      suggestion,\n    })\n    this.name = \"RegistryFetchError\"\n  }\n}\n\nexport class RegistryNotConfiguredError extends RegistryError {\n  constructor(public readonly registryName: string | null) {\n    const message = registryName\n      ? `Unknown registry \"${registryName}\". Make sure it is defined in components.json as follows:\n{\n  \"registries\": {\n    \"${registryName}\": \"[URL_TO_REGISTRY]\"\n  }\n}`\n      : `Unknown registry. Make sure it is defined in components.json under \"registries\".`\n\n    super(message, {\n      code: RegistryErrorCode.NOT_CONFIGURED,\n      context: { registryName },\n      suggestion:\n        \"Add the registry configuration to your components.json file. Consult the registry documentation for the correct format.\",\n    })\n    this.name = \"RegistryNotConfiguredError\"\n  }\n}\n\nexport class RegistryLocalFileError extends RegistryError {\n  constructor(\n    public readonly filePath: string,\n    cause?: unknown\n  ) {\n    super(`Failed to read local registry file: ${filePath}`, {\n      code: RegistryErrorCode.LOCAL_FILE_ERROR,\n      cause,\n      context: { filePath },\n      suggestion: \"Check if the file exists and you have read permissions.\",\n    })\n    this.name = \"RegistryLocalFileError\"\n  }\n}\n\nexport class RegistryParseError extends RegistryError {\n  public readonly parseError: unknown\n\n  constructor(\n    public readonly item: string,\n    parseError: unknown\n  ) {\n    let message = `Failed to parse registry item: ${item}`\n\n    if (parseError instanceof z.ZodError) {\n      message = `Failed to parse registry item: ${item}\\n${parseError.errors\n        .map((e) => `  - ${e.path.join(\".\")}: ${e.message}`)\n        .join(\"\\n\")}`\n    }\n\n    super(message, {\n      code: RegistryErrorCode.PARSE_ERROR,\n      cause: parseError,\n      context: { item },\n      suggestion: `The registry item may be corrupted or have an invalid format. Please make sure it returns a valid JSON object. See ${SHADCN_URL}/schema/registry-item.json.`,\n    })\n\n    this.parseError = parseError\n    this.name = \"RegistryParseError\"\n  }\n}\n\nexport class RegistryMissingEnvironmentVariablesError extends RegistryError {\n  constructor(\n    public readonly registryName: string,\n    public readonly missingVars: string[]\n  ) {\n    const message =\n      `Registry \"${registryName}\" requires the following environment variables:\\n\\n` +\n      missingVars.map((v) => `  • ${v}`).join(\"\\n\")\n\n    super(message, {\n      code: RegistryErrorCode.MISSING_ENV_VARS,\n      context: { registryName, missingVars },\n      suggestion:\n        \"Set the required environment variables to your .env or .env.local file.\",\n    })\n    this.name = \"RegistryMissingEnvironmentVariablesError\"\n  }\n}\n\nexport class RegistryInvalidNamespaceError extends RegistryError {\n  constructor(public readonly name: string) {\n    const message = `Invalid registry namespace: \"${name}\". Registry names must start with @ (e.g., @shadcn, @v0).`\n\n    super(message, {\n      code: RegistryErrorCode.VALIDATION_ERROR,\n      context: { name },\n      suggestion:\n        \"Use a valid registry name starting with @ or provide a direct URL to the registry.\",\n    })\n    this.name = \"RegistryInvalidNamespaceError\"\n  }\n}\n\nexport class ConfigMissingError extends RegistryError {\n  constructor(public readonly cwd: string) {\n    const message = `No components.json found in ${cwd} or parent directories.`\n\n    super(message, {\n      code: RegistryErrorCode.NOT_CONFIGURED,\n      context: { cwd },\n      suggestion:\n        \"Run 'npx shadcn@latest init' to create a components.json file, or check that you're in the correct directory.\",\n    })\n    this.name = \"ConfigMissingError\"\n  }\n}\n\nexport class ConfigParseError extends RegistryError {\n  constructor(\n    public readonly cwd: string,\n    parseError: unknown\n  ) {\n    let message = `Invalid components.json configuration in ${cwd}.`\n\n    if (parseError instanceof z.ZodError) {\n      message = `Invalid components.json configuration in ${cwd}:\\n${parseError.errors\n        .map((e) => `  - ${e.path.join(\".\")}: ${e.message}`)\n        .join(\"\\n\")}`\n    }\n\n    super(message, {\n      code: RegistryErrorCode.INVALID_CONFIG,\n      cause: parseError,\n      context: { cwd },\n      suggestion:\n        \"Check your components.json file for syntax errors or invalid configuration. Run 'npx shadcn@latest init' to regenerate a valid configuration.\",\n    })\n    this.name = \"ConfigParseError\"\n  }\n}\n\nexport class RegistriesIndexParseError extends RegistryError {\n  public readonly parseError: unknown\n\n  constructor(parseError: unknown) {\n    let message = \"Failed to parse registries index\"\n\n    if (parseError instanceof z.ZodError) {\n      const invalidNamespaces = parseError.errors\n        .filter((e) => e.path.length > 0)\n        .map((e) => `\"${e.path[0]}\"`)\n        .filter((v, i, arr) => arr.indexOf(v) === i) // remove duplicates\n\n      if (invalidNamespaces.length > 0) {\n        message = `Failed to parse registries index. Invalid registry namespace(s): ${invalidNamespaces.join(\n          \", \"\n        )}\\n${parseError.errors\n          .map((e) => `  - ${e.path.join(\".\")}: ${e.message}`)\n          .join(\"\\n\")}`\n      } else {\n        message = `Failed to parse registries index:\\n${parseError.errors\n          .map((e) => `  - ${e.path.join(\".\")}: ${e.message}`)\n          .join(\"\\n\")}`\n      }\n    }\n\n    super(message, {\n      code: RegistryErrorCode.PARSE_ERROR,\n      cause: parseError,\n      context: { parseError },\n      suggestion:\n        \"The registries index may be corrupted or have invalid registry namespace format. Registry names must start with @ (e.g., @shadcn, @example).\",\n    })\n\n    this.parseError = parseError\n    this.name = \"RegistriesIndexParseError\"\n  }\n}\n\nexport class InvalidConfigIconLibraryError extends RegistryError {\n  constructor(\n    public readonly iconLibrary: string,\n    public readonly validOptions: string[]\n  ) {\n    const message = `Invalid icon library \"${iconLibrary}\". Valid options are: ${validOptions.join(\n      \", \"\n    )}`\n\n    super(message, {\n      code: RegistryErrorCode.INVALID_CONFIG,\n      context: { iconLibrary, validOptions },\n      suggestion: `Update the \"iconLibrary\" field in your components.json to one of: ${validOptions.join(\n        \", \"\n      )}`,\n    })\n    this.name = \"InvalidConfigIconLibraryError\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/fetcher.test.ts",
    "content": "import { REGISTRY_URL } from \"@/src/registry/constants\"\nimport {\n  RegistryFetchError,\n  RegistryForbiddenError,\n  RegistryGoneError,\n  RegistryNotFoundError,\n  RegistryUnauthorizedError,\n} from \"@/src/registry/errors\"\nimport { http, HttpResponse } from \"msw\"\nimport { setupServer } from \"msw/node\"\nimport { afterAll, afterEach, beforeAll, describe, expect, it } from \"vitest\"\n\nimport { clearRegistryCache, fetchRegistry } from \"./fetcher\"\n\nconst server = setupServer(\n  http.get(`${REGISTRY_URL}/test.json`, () => {\n    return HttpResponse.json({\n      name: \"test\",\n      type: \"registry:ui\",\n    })\n  }),\n  http.get(`${REGISTRY_URL}/error.json`, () => {\n    return HttpResponse.error()\n  }),\n  http.get(`${REGISTRY_URL}/not-found.json`, () => {\n    return new HttpResponse(null, { status: 404 })\n  }),\n  http.get(`${REGISTRY_URL}/unauthorized.json`, () => {\n    return new HttpResponse(null, { status: 401 })\n  }),\n  http.get(`${REGISTRY_URL}/forbidden.json`, () => {\n    return new HttpResponse(null, { status: 403 })\n  }),\n  http.get(`${REGISTRY_URL}/gone.json`, () => {\n    return new HttpResponse(null, { status: 410 })\n  }),\n  http.get(\"https://external.com/component.json\", () => {\n    return HttpResponse.json({\n      name: \"external\",\n      type: \"registry:ui\",\n    })\n  })\n)\n\nbeforeAll(() => server.listen())\nafterEach(() => {\n  server.resetHandlers()\n  clearRegistryCache()\n})\nafterAll(() => server.close())\n\ndescribe(\"fetchRegistry\", () => {\n  it(\"should fetch a single registry item\", async () => {\n    const result = await fetchRegistry([\"test.json\"])\n    expect(result).toHaveLength(1)\n    expect(result[0]).toMatchObject({\n      name: \"test\",\n      type: \"registry:ui\",\n    })\n  })\n\n  it(\"should fetch multiple registry items in parallel\", async () => {\n    const result = await fetchRegistry([\"test.json\", \"test.json\"])\n    expect(result).toHaveLength(2)\n    expect(result[0]).toMatchObject({ name: \"test\" })\n    expect(result[1]).toMatchObject({ name: \"test\" })\n  })\n\n  it(\"should fetch from external URLs\", async () => {\n    const result = await fetchRegistry([\"https://external.com/component.json\"])\n    expect(result).toHaveLength(1)\n    expect(result[0]).toMatchObject({\n      name: \"external\",\n      type: \"registry:ui\",\n    })\n  })\n\n  it(\"should use cache when enabled\", async () => {\n    // First fetch - should hit the server\n    const result1 = await fetchRegistry([\"test.json\"], { useCache: true })\n    expect(result1[0]).toMatchObject({ name: \"test\" })\n\n    // Second fetch - should use cache\n    const result2 = await fetchRegistry([\"test.json\"], { useCache: true })\n    expect(result2[0]).toMatchObject({ name: \"test\" })\n  })\n\n  it(\"should not use cache when disabled\", async () => {\n    // Mock the server to return different responses\n    let callCount = 0\n    server.use(\n      http.get(`${REGISTRY_URL}/cache-test.json`, () => {\n        callCount++\n        return HttpResponse.json({\n          name: `test-${callCount}`,\n          type: \"registry:ui\",\n        })\n      })\n    )\n\n    const result1 = await fetchRegistry([\"cache-test.json\"], {\n      useCache: false,\n    })\n    expect(result1[0]).toMatchObject({ name: \"test-1\" })\n\n    const result2 = await fetchRegistry([\"cache-test.json\"], {\n      useCache: false,\n    })\n    expect(result2[0]).toMatchObject({ name: \"test-2\" })\n  })\n\n  it(\"should handle 404 errors\", async () => {\n    await expect(fetchRegistry([\"not-found.json\"])).rejects.toThrow(\n      RegistryNotFoundError\n    )\n  })\n\n  it(\"should handle 401 errors\", async () => {\n    await expect(fetchRegistry([\"unauthorized.json\"])).rejects.toThrow(\n      RegistryUnauthorizedError\n    )\n  })\n\n  it(\"should handle 403 errors\", async () => {\n    await expect(fetchRegistry([\"forbidden.json\"])).rejects.toThrow(\n      RegistryForbiddenError\n    )\n  })\n\n  it(\"should handle 410 errors\", async () => {\n    await expect(fetchRegistry([\"gone.json\"])).rejects.toThrow(\n      RegistryGoneError\n    )\n  })\n\n  it(\"should handle network errors\", async () => {\n    await expect(fetchRegistry([\"error.json\"])).rejects.toThrow()\n  })\n\n  it(\"should fetch registry data\", async () => {\n    const paths = [\"styles/new-york/button.json\"]\n    const result = await fetchRegistry(paths)\n\n    expect(result).toHaveLength(1)\n    expect(result[0]).toMatchObject({\n      name: \"button\",\n      type: \"registry:ui\",\n      dependencies: [\"@radix-ui/react-slot\"],\n    })\n  })\n\n  it(\"should use cache for subsequent requests\", async () => {\n    const paths = [\"styles/new-york/button.json\"]\n    let fetchCount = 0\n\n    // Clear any existing cache before test\n    clearRegistryCache()\n\n    // Define the handler with counter before making requests\n    server.use(\n      http.get(`${REGISTRY_URL}/styles/new-york/button.json`, async () => {\n        // Add a small delay to simulate network latency\n        await new Promise((resolve) => setTimeout(resolve, 10))\n        fetchCount++\n        return HttpResponse.json({\n          name: \"button\",\n          type: \"registry:ui\",\n          dependencies: [\"@radix-ui/react-slot\"],\n          files: [\n            {\n              path: \"registry/new-york/ui/button.tsx\",\n              content: \"// button component content\",\n              type: \"registry:ui\",\n            },\n          ],\n        })\n      })\n    )\n\n    // First request\n    const result1 = await fetchRegistry(paths)\n    expect(fetchCount).toBe(1)\n    expect(result1).toHaveLength(1)\n    expect(result1[0]).toMatchObject({ name: \"button\" })\n\n    // Second request - should use cache\n    const result2 = await fetchRegistry(paths)\n    expect(fetchCount).toBe(1) // Should still be 1\n    expect(result2).toHaveLength(1)\n    expect(result2[0]).toMatchObject({ name: \"button\" })\n\n    // Third request - double check cache\n    const result3 = await fetchRegistry(paths)\n    expect(fetchCount).toBe(1) // Should still be 1\n    expect(result3).toHaveLength(1)\n    expect(result3[0]).toMatchObject({ name: \"button\" })\n  })\n\n  it(\"should handle multiple paths\", async () => {\n    const paths = [\"styles/new-york/button.json\", \"styles/new-york/card.json\"]\n    const result = await fetchRegistry(paths)\n\n    expect(result).toHaveLength(2)\n    expect(result[0]).toMatchObject({ name: \"button\" })\n    expect(result[1]).toMatchObject({ name: \"card\" })\n  })\n})\n\ndescribe(\"clearRegistryCache\", () => {\n  it(\"should clear the cache\", async () => {\n    // First fetch - should hit the server\n    const result1 = await fetchRegistry([\"test.json\"], { useCache: true })\n    expect(result1[0]).toMatchObject({ name: \"test\" })\n\n    // Clear cache\n    clearRegistryCache()\n\n    // Mock the server to return different response\n    server.use(\n      http.get(`${REGISTRY_URL}/test.json`, () => {\n        return HttpResponse.json({\n          name: \"test-after-clear\",\n          type: \"registry:ui\",\n        })\n      })\n    )\n\n    // Third fetch - should hit the server again after cache clear\n    const result3 = await fetchRegistry([\"test.json\"], { useCache: true })\n    expect(result3[0]).toMatchObject({ name: \"test-after-clear\" })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/fetcher.ts",
    "content": "import { promises as fs } from \"fs\"\nimport { homedir } from \"os\"\nimport path from \"path\"\nimport { resolveRegistryUrl } from \"@/src/registry/builder\"\nimport { getRegistryHeadersFromContext } from \"@/src/registry/context\"\nimport {\n  RegistryFetchError,\n  RegistryForbiddenError,\n  RegistryGoneError,\n  RegistryLocalFileError,\n  RegistryNotFoundError,\n  RegistryParseError,\n  RegistryUnauthorizedError,\n} from \"@/src/registry/errors\"\nimport { registryItemSchema } from \"@/src/schema\"\nimport { HttpsProxyAgent } from \"https-proxy-agent\"\nimport fetch from \"node-fetch\"\nimport { z } from \"zod\"\n\nconst agent = process.env.https_proxy\n  ? new HttpsProxyAgent(process.env.https_proxy)\n  : undefined\n\nconst registryCache = new Map<string, Promise<any>>()\n\nexport function clearRegistryCache() {\n  registryCache.clear()\n}\n\nexport async function fetchRegistry(\n  paths: string[],\n  options: { useCache?: boolean } = {}\n) {\n  options = {\n    useCache: true,\n    ...options,\n  }\n\n  try {\n    const results = await Promise.all(\n      paths.map(async (path) => {\n        const url = resolveRegistryUrl(path)\n\n        // Check cache first if caching is enabled\n        if (options.useCache && registryCache.has(url)) {\n          return registryCache.get(url)\n        }\n\n        // Store the promise in the cache before awaiting if caching is enabled.\n        const fetchPromise = (async () => {\n          // Get headers from context for this URL.\n          const headers = getRegistryHeadersFromContext(url)\n\n          const response = await fetch(url, {\n            agent,\n            headers: {\n              ...headers,\n            },\n          })\n\n          if (!response.ok) {\n            let messageFromServer = undefined\n\n            if (\n              response.headers.get(\"content-type\")?.includes(\"application/json\")\n            ) {\n              const json = await response.json()\n              const parsed = z\n                .object({\n                  // RFC 7807.\n                  detail: z.string().optional(),\n                  title: z.string().optional(),\n                  // Standard error response.\n                  message: z.string().optional(),\n                  error: z.string().optional(),\n                })\n                .safeParse(json)\n\n              if (parsed.success) {\n                // Prefer RFC 7807 detail field, then message field.\n                messageFromServer = parsed.data.detail || parsed.data.message\n\n                if (parsed.data.error) {\n                  messageFromServer = `[${parsed.data.error}] ${messageFromServer}`\n                }\n              }\n            }\n\n            if (response.status === 401) {\n              throw new RegistryUnauthorizedError(url, messageFromServer)\n            }\n\n            if (response.status === 404) {\n              throw new RegistryNotFoundError(url, messageFromServer)\n            }\n\n            if (response.status === 410) {\n              throw new RegistryGoneError(url, messageFromServer)\n            }\n\n            if (response.status === 403) {\n              throw new RegistryForbiddenError(url, messageFromServer)\n            }\n\n            throw new RegistryFetchError(\n              url,\n              response.status,\n              messageFromServer\n            )\n          }\n\n          return response.json()\n        })()\n\n        if (options.useCache) {\n          registryCache.set(url, fetchPromise)\n        }\n        return fetchPromise\n      })\n    )\n\n    return results\n  } catch (error) {\n    throw error\n  }\n}\n\nexport async function fetchRegistryLocal(filePath: string) {\n  try {\n    // Handle tilde expansion for home directory\n    let expandedPath = filePath\n    if (filePath.startsWith(\"~/\")) {\n      expandedPath = path.join(homedir(), filePath.slice(2))\n    }\n\n    const resolvedPath = path.resolve(expandedPath)\n    const content = await fs.readFile(resolvedPath, \"utf8\")\n    const parsed = JSON.parse(content)\n\n    try {\n      return registryItemSchema.parse(parsed)\n    } catch (error) {\n      throw new RegistryParseError(filePath, error)\n    }\n  } catch (error) {\n    // Check if this is a file not found error\n    if (\n      error instanceof Error &&\n      (error.message.includes(\"ENOENT\") ||\n        error.message.includes(\"no such file\"))\n    ) {\n      throw new RegistryLocalFileError(filePath, error)\n    }\n    // Re-throw parse errors as-is\n    if (error instanceof RegistryParseError) {\n      throw error\n    }\n    // For other errors (like JSON parse errors), throw as local file error\n    throw new RegistryLocalFileError(filePath, error)\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/index.ts",
    "content": "export {\n  getRegistries,\n  getRegistryItems,\n  resolveRegistryItems,\n  getRegistry,\n  getRegistriesIndex,\n} from \"./api\"\n\nexport { searchRegistries } from \"./search\"\n\nexport {\n  RegistryError,\n  RegistryNotFoundError,\n  RegistryUnauthorizedError,\n  RegistryForbiddenError,\n  RegistryFetchError,\n  RegistryNotConfiguredError,\n  RegistryLocalFileError,\n  RegistryParseError,\n  RegistriesIndexParseError,\n  RegistryMissingEnvironmentVariablesError,\n  RegistryInvalidNamespaceError,\n} from \"./errors\"\n"
  },
  {
    "path": "packages/shadcn/src/registry/namespaces.test.ts",
    "content": "import { beforeEach, describe, expect, it, vi } from \"vitest\"\n\nimport { Config } from \"../utils/get-config\"\nimport { BUILTIN_REGISTRIES } from \"./constants\"\nimport { RegistryNotConfiguredError } from \"./errors\"\nimport { resolveRegistryNamespaces } from \"./namespaces\"\nimport * as resolver from \"./resolver\"\n\n// Mock the resolver module.\nvi.mock(\"./resolver\", () => ({\n  fetchRegistryItems: vi.fn(),\n}))\n\n// Test utility function to check namespace configuration.\nfunction checkNamespaceConfiguration(\n  namespaces: string[],\n  config: Config\n): { configured: string[]; missing: string[] } {\n  const configured: string[] = []\n  const missing: string[] = []\n\n  for (const namespace of namespaces) {\n    if (BUILTIN_REGISTRIES[namespace] || config.registries?.[namespace]) {\n      configured.push(namespace)\n    } else {\n      missing.push(namespace)\n    }\n  }\n\n  return { configured, missing }\n}\n\ndescribe(\"resolveRegistryNamespaces\", () => {\n  const mockConfig: Config = {\n    style: \"default\",\n    tailwind: {\n      config: \"tailwind.config.js\",\n      css: \"app/globals.css\",\n      baseColor: \"slate\",\n      cssVariables: true,\n    },\n    rsc: true,\n    tsx: true,\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n      ui: \"@/components/ui\",\n      lib: \"@/lib\",\n      hooks: \"@/hooks\",\n    },\n    resolvedPaths: {\n      cwd: \"/test\",\n      tailwindConfig: \"/test/tailwind.config.js\",\n      tailwindCss: \"/test/app/globals.css\",\n      utils: \"/test/lib/utils\",\n      components: \"/test/components\",\n      ui: \"/test/components/ui\",\n      lib: \"/test/lib\",\n      hooks: \"/test/hooks\",\n    },\n    registries: {\n      ...BUILTIN_REGISTRIES,\n      \"@foo\": \"https://foo.com/registry/{name}\",\n      \"@bar\": \"https://bar.com/registry/{name}\",\n    },\n  }\n\n  beforeEach(() => {\n    vi.clearAllMocks()\n  })\n\n  it(\"should discover namespaces from direct components\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems.mockResolvedValue([\n      { name: \"button\", type: \"registry:ui\", files: [], dependencies: [] },\n    ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"@foo/button\", \"@bar/card\"],\n      mockConfig\n    )\n\n    expect(namespaces).toEqual([\"@foo\", \"@bar\"])\n  })\n\n  it(\"should skip built-in registries\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems.mockResolvedValue([\n      { name: \"button\", type: \"registry:ui\", files: [], dependencies: [] },\n    ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"@shadcn/button\", \"@foo/card\"],\n      mockConfig\n    )\n\n    expect(namespaces).toEqual([\"@foo\"])\n  })\n\n  it(\"should discover namespaces from registry dependencies\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems\n      .mockResolvedValueOnce([\n        {\n          name: \"dialog\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n          registryDependencies: [\"@bar/button\", \"@baz/modal\"],\n        },\n      ])\n      .mockResolvedValueOnce([\n        { name: \"button\", type: \"registry:ui\", files: [], dependencies: [] },\n      ])\n      .mockResolvedValueOnce([\n        { name: \"modal\", type: \"registry:ui\", files: [], dependencies: [] },\n      ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"@foo/dialog\"],\n      mockConfig\n    )\n\n    expect(namespaces).toContain(\"@foo\")\n    expect(namespaces).toContain(\"@bar\")\n    expect(namespaces).toContain(\"@baz\")\n  })\n\n  it(\"should handle circular dependencies\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems\n      .mockResolvedValueOnce([\n        {\n          name: \"comp-a\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n          registryDependencies: [\"@bar/comp-b\"],\n        },\n      ])\n      .mockResolvedValueOnce([\n        {\n          name: \"comp-b\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n          registryDependencies: [\"@foo/comp-a\"],\n        },\n      ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"@foo/comp-a\"],\n      mockConfig\n    )\n\n    expect(namespaces).toEqual([\"@foo\", \"@bar\"])\n    // Should only fetch each component once despite circular reference.\n    expect(mockFetchRegistryItems).toHaveBeenCalledTimes(2)\n  })\n\n  it(\"should handle RegistryNotConfiguredError gracefully\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems.mockRejectedValue(\n      new RegistryNotConfiguredError(\"@unknown\")\n    )\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"@unknown/button\"],\n      mockConfig\n    )\n\n    expect(namespaces).toEqual([\"@unknown\"])\n  })\n\n  it(\"should continue processing on other errors\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems\n      .mockRejectedValueOnce(new Error(\"Network error\"))\n      .mockResolvedValueOnce([\n        { name: \"card\", type: \"registry:ui\", files: [], dependencies: [] },\n      ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"@foo/button\", \"@bar/card\"],\n      mockConfig\n    )\n\n    // Should still discover both @foo and @bar.\n    // @foo from the initial parse, @bar from successful fetch.\n    expect(namespaces).toContain(\"@foo\")\n    expect(namespaces).toContain(\"@bar\")\n    expect(namespaces).toHaveLength(2)\n  })\n\n  it(\"should handle deeply nested dependencies\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems\n      .mockResolvedValueOnce([\n        {\n          name: \"level-1\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n          registryDependencies: [\"@level2/component\"],\n        },\n      ])\n      .mockResolvedValueOnce([\n        {\n          name: \"component\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n          registryDependencies: [\"@level3/deep\"],\n        },\n      ])\n      .mockResolvedValueOnce([\n        {\n          name: \"deep\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n        },\n      ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"@level1/level-1\"],\n      mockConfig\n    )\n\n    expect(namespaces).toEqual([\"@level1\", \"@level2\", \"@level3\"])\n  })\n\n  it(\"should return unique namespaces\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems\n      .mockResolvedValueOnce([\n        {\n          name: \"comp-a\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n          registryDependencies: [\"@foo/shared\", \"@bar/shared\"],\n        },\n      ])\n      .mockResolvedValueOnce([\n        { name: \"shared\", type: \"registry:ui\", files: [], dependencies: [] },\n      ])\n      .mockResolvedValueOnce([\n        { name: \"shared\", type: \"registry:ui\", files: [], dependencies: [] },\n      ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"@foo/comp-a\", \"@foo/comp-b\", \"@bar/comp-c\"],\n      mockConfig\n    )\n\n    // Should not have duplicate @foo.\n    expect(namespaces).toEqual([\"@foo\", \"@bar\"])\n  })\n\n  it(\"should handle components without namespace\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems.mockResolvedValue([\n      { name: \"button\", type: \"registry:ui\", files: [], dependencies: [] },\n    ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"button\", \"@foo/card\"],\n      mockConfig\n    )\n\n    expect(namespaces).toEqual([\"@foo\"])\n  })\n\n  it(\"should handle empty input\", async () => {\n    const namespaces = await resolveRegistryNamespaces([], mockConfig)\n\n    expect(namespaces).toEqual([])\n    expect(resolver.fetchRegistryItems).not.toHaveBeenCalled()\n  })\n\n  it(\"should discover namespaces from components without namespaces but with registryDependencies\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems\n      .mockResolvedValueOnce([\n        {\n          name: \"my-component\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n          registryDependencies: [\"@foo/dep1\", \"@bar/dep2\"],\n        },\n      ])\n      .mockResolvedValueOnce([\n        {\n          name: \"dep1\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n        },\n      ])\n      .mockResolvedValueOnce([\n        {\n          name: \"dep2\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n        },\n      ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"button\"], // Component without namespace\n      mockConfig\n    )\n\n    // Should discover namespaces from registryDependencies even though \"button\" has no namespace.\n    expect(namespaces).toEqual([\"@foo\", \"@bar\"])\n  })\n\n  it(\"should discover namespaces from URL components with registryDependencies\", async () => {\n    const mockFetchRegistryItems = vi.mocked(resolver.fetchRegistryItems)\n    mockFetchRegistryItems\n      .mockResolvedValueOnce([\n        {\n          name: \"to-8bitcn\",\n          type: \"registry:item\",\n          files: [],\n          dependencies: [],\n          registryDependencies: [\"@8bitcn/button\"],\n        },\n      ])\n      .mockResolvedValueOnce([\n        {\n          name: \"branch\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n        },\n      ])\n      .mockResolvedValueOnce([\n        {\n          name: \"button\",\n          type: \"registry:ui\",\n          files: [],\n          dependencies: [],\n        },\n      ])\n\n    const namespaces = await resolveRegistryNamespaces(\n      [\"https://api.npoint.io/2e006917dca7f7367495\", \"@ai-elements/branch\"],\n      mockConfig\n    )\n\n    expect(namespaces).toContain(\"@8bitcn\")\n    expect(namespaces).toContain(\"@ai-elements\")\n\n    // Verify fetchRegistryItems was called with the correct arguments.\n    expect(mockFetchRegistryItems).toHaveBeenCalledWith(\n      [\"https://api.npoint.io/2e006917dca7f7367495\"],\n      mockConfig,\n      { useCache: true }\n    )\n    expect(mockFetchRegistryItems).toHaveBeenCalledWith(\n      [\"@ai-elements/branch\"],\n      mockConfig,\n      { useCache: true }\n    )\n    expect(mockFetchRegistryItems).toHaveBeenCalledWith(\n      [\"@8bitcn/button\"],\n      mockConfig,\n      { useCache: true }\n    )\n  })\n})\n\ndescribe(\"checkNamespaceConfiguration\", () => {\n  const mockConfig: Config = {\n    style: \"default\",\n    tailwind: {\n      config: \"tailwind.config.js\",\n      css: \"app/globals.css\",\n      baseColor: \"slate\",\n      cssVariables: true,\n    },\n    rsc: true,\n    tsx: true,\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n      ui: \"@/components/ui\",\n      lib: \"@/lib\",\n      hooks: \"@/hooks\",\n    },\n    resolvedPaths: {\n      cwd: \"/test\",\n      tailwindConfig: \"/test/tailwind.config.js\",\n      tailwindCss: \"/test/app/globals.css\",\n      utils: \"/test/lib/utils\",\n      components: \"/test/components\",\n      ui: \"/test/components/ui\",\n      lib: \"/test/lib\",\n      hooks: \"/test/hooks\",\n    },\n    registries: {\n      ...BUILTIN_REGISTRIES,\n      \"@foo\": \"https://foo.com/registry/{name}\",\n      \"@bar\": \"https://bar.com/registry/{name}\",\n    },\n  }\n\n  it(\"should identify configured namespaces\", () => {\n    const result = checkNamespaceConfiguration([\"@foo\", \"@bar\"], mockConfig)\n\n    expect(result.configured).toEqual([\"@foo\", \"@bar\"])\n    expect(result.missing).toEqual([])\n  })\n\n  it(\"should identify missing namespaces\", () => {\n    const result = checkNamespaceConfiguration(\n      [\"@foo\", \"@unknown\", \"@missing\"],\n      mockConfig\n    )\n\n    expect(result.configured).toEqual([\"@foo\"])\n    expect(result.missing).toEqual([\"@unknown\", \"@missing\"])\n  })\n\n  it(\"should handle built-in registries as configured\", () => {\n    const result = checkNamespaceConfiguration([\"@shadcn\", \"@foo\"], mockConfig)\n\n    expect(result.configured).toEqual([\"@shadcn\", \"@foo\"])\n    expect(result.missing).toEqual([])\n  })\n\n  it(\"should handle empty input\", () => {\n    const result = checkNamespaceConfiguration([], mockConfig)\n\n    expect(result.configured).toEqual([])\n    expect(result.missing).toEqual([])\n  })\n\n  it(\"should handle config without registries\", () => {\n    const configWithoutRegistries: Config = {\n      ...mockConfig,\n      registries: undefined,\n    }\n\n    const result = checkNamespaceConfiguration(\n      [\"@foo\", \"@bar\"],\n      configWithoutRegistries\n    )\n\n    expect(result.configured).toEqual([])\n    expect(result.missing).toEqual([\"@foo\", \"@bar\"])\n  })\n\n  it(\"should handle mixed configured and missing namespaces\", () => {\n    const result = checkNamespaceConfiguration(\n      [\"@shadcn\", \"@foo\", \"@unknown\", \"@bar\", \"@missing\"],\n      mockConfig\n    )\n\n    expect(result.configured).toContain(\"@shadcn\")\n    expect(result.configured).toContain(\"@foo\")\n    expect(result.configured).toContain(\"@bar\")\n    expect(result.missing).toContain(\"@unknown\")\n    expect(result.missing).toContain(\"@missing\")\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/namespaces.ts",
    "content": "import { BUILTIN_REGISTRIES } from \"@/src/registry/constants\"\nimport { RegistryNotConfiguredError } from \"@/src/registry/errors\"\nimport { parseRegistryAndItemFromString } from \"@/src/registry/parser\"\nimport { fetchRegistryItems } from \"@/src/registry/resolver\"\nimport { Config } from \"@/src/utils/get-config\"\n\n// Recursively discovers all registry namespaces including nested ones.\nexport async function resolveRegistryNamespaces(\n  components: string[],\n  config: Config\n) {\n  const discoveredNamespaces = new Set<string>()\n  const visitedItems = new Set<string>()\n  const itemsToProcess = [...components]\n\n  while (itemsToProcess.length > 0) {\n    const currentItem = itemsToProcess.shift()!\n\n    if (visitedItems.has(currentItem)) {\n      continue\n    }\n    visitedItems.add(currentItem)\n\n    const { registry } = parseRegistryAndItemFromString(currentItem)\n    if (registry && !BUILTIN_REGISTRIES[registry]) {\n      discoveredNamespaces.add(registry)\n    }\n\n    try {\n      const [item] = await fetchRegistryItems([currentItem], config, {\n        useCache: true,\n      })\n\n      if (item?.registryDependencies) {\n        for (const dep of item.registryDependencies) {\n          const { registry: depRegistry } = parseRegistryAndItemFromString(dep)\n          if (depRegistry && !BUILTIN_REGISTRIES[depRegistry]) {\n            discoveredNamespaces.add(depRegistry)\n          }\n\n          if (!visitedItems.has(dep)) {\n            itemsToProcess.push(dep)\n          }\n        }\n      }\n    } catch (error) {\n      // If a registry is not configured, we still track it.\n      if (error instanceof RegistryNotConfiguredError) {\n        const { registry } = parseRegistryAndItemFromString(currentItem)\n        if (registry && !BUILTIN_REGISTRIES[registry]) {\n          discoveredNamespaces.add(registry)\n        }\n        continue\n      }\n\n      // For other errors (network, parsing, etc.), we skip this item\n      // but continue processing others to discover as many namespaces as possible.\n      continue\n    }\n  }\n\n  return Array.from(discoveredNamespaces)\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/parser.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport { parseRegistryAndItemFromString } from \"./parser\"\n\ndescribe(\"parseRegistryAndItemFromString\", () => {\n  describe(\"valid registry items\", () => {\n    it.each([\n      [\"@v0/button\", { registry: \"@v0\", item: \"button\" }],\n      [\"@acme/data-table\", { registry: \"@acme\", item: \"data-table\" }],\n      [\n        \"@company/nested/component\",\n        { registry: \"@company\", item: \"nested/component\" },\n      ],\n      [\"@test/simple\", { registry: \"@test\", item: \"simple\" }],\n      [\"@my-registry/item\", { registry: \"@my-registry\", item: \"item\" }],\n      [\"@my_registry/item\", { registry: \"@my_registry\", item: \"item\" }],\n      [\"@123registry/item\", { registry: \"@123registry\", item: \"item\" }],\n      [\"@registry123/item\", { registry: \"@registry123\", item: \"item\" }],\n      [\"@r/item\", { registry: \"@r\", item: \"item\" }],\n      [\n        \"@very-long-registry-name/item\",\n        { registry: \"@very-long-registry-name\", item: \"item\" },\n      ],\n    ])(\"should parse registry item: %s\", (input, expected) => {\n      expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n    })\n  })\n\n  describe(\"non-registry items\", () => {\n    it.each([\n      [\"button\", { registry: null, item: \"button\" }],\n      [\"components/button\", { registry: null, item: \"components/button\" }],\n      [\"v0/button\", { registry: null, item: \"v0/button\" }],\n      [\"@button\", { registry: null, item: \"@button\" }],\n      [\"button@\", { registry: null, item: \"button@\" }],\n      [\"@\", { registry: null, item: \"@\" }],\n      [\"@/button\", { registry: null, item: \"@/button\" }],\n      [\"@-registry/item\", { registry: null, item: \"@-registry/item\" }],\n      [\"@registry-/item\", { registry: null, item: \"@registry-/item\" }],\n      [\"@-registry-/item\", { registry: null, item: \"@-registry-/item\" }],\n    ])(\n      \"should return null registry for non-registry item: %s\",\n      (input, expected) => {\n        expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n      }\n    )\n  })\n\n  describe(\"URLs and external paths\", () => {\n    it.each([\n      [\n        \"https://example.com/button\",\n        { registry: null, item: \"https://example.com/button\" },\n      ],\n      [\n        \"http://localhost:3000/component\",\n        { registry: null, item: \"http://localhost:3000/component\" },\n      ],\n      [\n        \"file:///path/to/component\",\n        { registry: null, item: \"file:///path/to/component\" },\n      ],\n      [\n        \"ftp://example.com/file\",\n        { registry: null, item: \"ftp://example.com/file\" },\n      ],\n      [\n        \"//cdn.example.com/component\",\n        { registry: null, item: \"//cdn.example.com/component\" },\n      ],\n    ])(\"should handle URLs: %s\", (input, expected) => {\n      expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n    })\n  })\n\n  describe(\"complex item paths\", () => {\n    it.each([\n      [\"@acme/ui/button\", { registry: \"@acme\", item: \"ui/button\" }],\n      [\n        \"@company/components/forms/input\",\n        { registry: \"@company\", item: \"components/forms/input\" },\n      ],\n      [\n        \"@test/nested/deep/path/component\",\n        { registry: \"@test\", item: \"nested/deep/path/component\" },\n      ],\n      [\n        \"@registry/path/with/multiple/slashes\",\n        { registry: \"@registry\", item: \"path/with/multiple/slashes\" },\n      ],\n    ])(\"should handle complex item paths: %s\", (input, expected) => {\n      expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n    })\n  })\n\n  describe(\"edge cases and special characters\", () => {\n    it.each([\n      [\"\", { registry: null, item: \"\" }],\n      [\"@\", { registry: null, item: \"@\" }],\n      [\"@@\", { registry: null, item: \"@@\" }],\n      [\"@@@\", { registry: null, item: \"@@@\" }],\n      [\"@/\", { registry: null, item: \"@/\" }],\n      [\"@//\", { registry: null, item: \"@//\" }],\n      [\"@/item\", { registry: null, item: \"@/item\" }],\n      [\"@registry/\", { registry: null, item: \"@registry/\" }],\n      [\"@registry//\", { registry: \"@registry\", item: \"/\" }],\n      [\"@registry///\", { registry: \"@registry\", item: \"//\" }],\n    ])(\"should handle edge cases: %s\", (input, expected) => {\n      expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n    })\n  })\n\n  describe(\"registry names with special characters\", () => {\n    it.each([\n      [\"@my-registry/item\", { registry: \"@my-registry\", item: \"item\" }],\n      [\"@my_registry/item\", { registry: \"@my_registry\", item: \"item\" }],\n      [\n        \"@my-registry-name/item\",\n        { registry: \"@my-registry-name\", item: \"item\" },\n      ],\n      [\n        \"@my_registry_name/item\",\n        { registry: \"@my_registry_name\", item: \"item\" },\n      ],\n      [\n        \"@my-registry_name/item\",\n        { registry: \"@my-registry_name\", item: \"item\" },\n      ],\n      [\n        \"@my_registry-name/item\",\n        { registry: \"@my_registry-name\", item: \"item\" },\n      ],\n      [\"@123-registry/item\", { registry: \"@123-registry\", item: \"item\" }],\n      [\"@registry-123/item\", { registry: \"@registry-123\", item: \"item\" }],\n      [\"@123_registry/item\", { registry: \"@123_registry\", item: \"item\" }],\n      [\"@registry_123/item\", { registry: \"@registry_123\", item: \"item\" }],\n    ])(\n      \"should handle registry names with special characters: %s\",\n      (input, expected) => {\n        expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n      }\n    )\n  })\n\n  describe(\"invalid registry patterns\", () => {\n    it.each([\n      [\"@-registry/item\", { registry: null, item: \"@-registry/item\" }],\n      [\"@registry-/item\", { registry: null, item: \"@registry-/item\" }],\n      [\"@-registry-/item\", { registry: null, item: \"@-registry-/item\" }],\n      [\"@-item\", { registry: null, item: \"@-item\" }],\n      [\"@item-\", { registry: null, item: \"@item-\" }],\n      [\"@-item-\", { registry: null, item: \"@-item-\" }],\n      [\"@_registry/item\", { registry: null, item: \"@_registry/item\" }],\n      [\"@registry_/item\", { registry: null, item: \"@registry_/item\" }],\n      [\"@_registry_/item\", { registry: null, item: \"@_registry_/item\" }],\n      [\"@_item\", { registry: null, item: \"@_item\" }],\n      [\"@item_\", { registry: null, item: \"@item_\" }],\n      [\"@_item_\", { registry: null, item: \"@_item_\" }],\n    ])(\"should reject invalid registry patterns: %s\", (input, expected) => {\n      expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n    })\n  })\n\n  describe(\"whitespace and formatting\", () => {\n    it.each([\n      [\" @v0/button\", { registry: null, item: \" @v0/button\" }],\n      [\"@v0/button \", { registry: \"@v0\", item: \"button \" }],\n      [\" @v0/button \", { registry: null, item: \" @v0/button \" }],\n      [\"\\t@v0/button\", { registry: null, item: \"\\t@v0/button\" }],\n      [\"@v0/button\\t\", { registry: \"@v0\", item: \"button\\t\" }],\n      [\"\\n@v0/button\", { registry: null, item: \"\\n@v0/button\" }],\n      [\"@v0/button\\n\", { registry: null, item: \"@v0/button\\n\" }],\n    ])(\"should handle whitespace: %s\", (input, expected) => {\n      expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n    })\n  })\n\n  describe(\"case sensitivity\", () => {\n    it.each([\n      [\"@V0/button\", { registry: \"@V0\", item: \"button\" }],\n      [\"@v0/BUTTON\", { registry: \"@v0\", item: \"BUTTON\" }],\n      [\"@V0/BUTTON\", { registry: \"@V0\", item: \"BUTTON\" }],\n      [\"@MyRegistry/item\", { registry: \"@MyRegistry\", item: \"item\" }],\n      [\"@MYREGISTRY/item\", { registry: \"@MYREGISTRY\", item: \"item\" }],\n      [\"@myregistry/ITEM\", { registry: \"@myregistry\", item: \"ITEM\" }],\n    ])(\"should be case sensitive: %s\", (input, expected) => {\n      expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n    })\n  })\n\n  describe(\"numbers and mixed content\", () => {\n    it.each([\n      [\"@123/item\", { registry: \"@123\", item: \"item\" }],\n      [\"@registry123/item\", { registry: \"@registry123\", item: \"item\" }],\n      [\"@123registry/item\", { registry: \"@123registry\", item: \"item\" }],\n      [\"@r123/item\", { registry: \"@r123\", item: \"item\" }],\n      [\"@123r/item\", { registry: \"@123r\", item: \"item\" }],\n      [\"@item123/item\", { registry: \"@item123\", item: \"item\" }],\n      [\"@123-item/item\", { registry: \"@123-item\", item: \"item\" }],\n      [\"@item-123/item\", { registry: \"@item-123\", item: \"item\" }],\n      [\"@123_item/item\", { registry: \"@123_item\", item: \"item\" }],\n      [\"@item_123/item\", { registry: \"@item_123\", item: \"item\" }],\n    ])(\"should handle numbers and mixed content: %s\", (input, expected) => {\n      expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n    })\n  })\n\n  describe(\"single character cases\", () => {\n    it.each([\n      [\"@a/b\", { registry: \"@a\", item: \"b\" }],\n      [\"@a/\", { registry: null, item: \"@a/\" }],\n      [\"@a//\", { registry: \"@a\", item: \"/\" }],\n      [\"@1/b\", { registry: \"@1\", item: \"b\" }],\n      [\"@1/\", { registry: null, item: \"@1/\" }],\n      [\"@1//\", { registry: \"@1\", item: \"/\" }],\n    ])(\n      \"should handle single character registry names: %s\",\n      (input, expected) => {\n        expect(parseRegistryAndItemFromString(input)).toEqual(expected)\n      }\n    )\n  })\n\n  describe(\"very long inputs\", () => {\n    it(\"should handle very long registry names\", () => {\n      const longRegistry = \"@\" + \"a\".repeat(100)\n      const result = parseRegistryAndItemFromString(longRegistry + \"/item\")\n      expect(result).toEqual({\n        registry: longRegistry,\n        item: \"item\",\n      })\n    })\n\n    it(\"should handle very long item paths\", () => {\n      const longItem = \"a\".repeat(100)\n      const result = parseRegistryAndItemFromString(\"@registry/\" + longItem)\n      expect(result).toEqual({\n        registry: \"@registry\",\n        item: longItem,\n      })\n    })\n\n    it(\"should handle very long non-registry paths\", () => {\n      const longPath = \"a\".repeat(100)\n      const result = parseRegistryAndItemFromString(longPath)\n      expect(result).toEqual({\n        registry: null,\n        item: longPath,\n      })\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/parser.ts",
    "content": "// Valid registry name pattern: @namespace where namespace is alphanumeric with hyphens/underscores\nconst REGISTRY_PATTERN = /^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\\/(.+)$/\n\nexport function parseRegistryAndItemFromString(name: string) {\n  if (!name.startsWith(\"@\")) {\n    return {\n      registry: null,\n      item: name,\n    }\n  }\n\n  const match = name.match(REGISTRY_PATTERN)\n  if (match) {\n    return {\n      registry: match[1],\n      item: match[2],\n    }\n  }\n\n  return {\n    registry: null,\n    item: name,\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/resolver.test.ts",
    "content": "/* eslint-disable turbo/no-undeclared-env-vars */\nimport { promises as fs } from \"fs\"\nimport { tmpdir } from \"os\"\nimport path from \"path\"\nimport { http, HttpResponse } from \"msw\"\nimport { setupServer } from \"msw/node\"\nimport {\n  afterAll,\n  beforeAll,\n  beforeEach,\n  describe,\n  expect,\n  it,\n  test,\n  vi,\n} from \"vitest\"\n\nimport { createRegistryServer } from \"../../../tests/src/utils/registry\"\nimport { setRegistryHeaders } from \"./context\"\nimport {\n  resolveRegistryItemsFromRegistries,\n  resolveRegistryTree,\n} from \"./resolver\"\n\nvi.mock(\"./context\", () => ({\n  setRegistryHeaders: vi.fn(),\n  clearRegistryContext: vi.fn(),\n  getRegistryHeadersFromContext: vi.fn(() => ({})),\n}))\n\nvi.mock(\"@/src/utils/handle-error\", () => ({\n  handleError: vi.fn((error) => {\n    console.error(\"Test error:\", error)\n  }),\n}))\n\nvi.mock(\"@/src/utils/logger\", () => ({\n  logger: {\n    error: vi.fn(),\n    break: vi.fn(),\n    log: vi.fn(),\n  },\n}))\n\n// Note: Individual tests will create their own MSW servers using createRegistryServer\n\ndescribe(\"resolveRegistryItemsFromRegistries\", () => {\n  beforeEach(() => {\n    vi.clearAllMocks()\n  })\n\n  it(\"should return empty array for empty input\", () => {\n    const result = resolveRegistryItemsFromRegistries([], {\n      registries: {},\n    } as any)\n    expect(result).toEqual([])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n\n  it(\"should return empty array for empty input with no registries\", () => {\n    const result = resolveRegistryItemsFromRegistries([], {\n      registries: {},\n    } as any)\n    expect(result).toEqual([])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n\n  it(\"should resolve non-registry items through @shadcn registry\", () => {\n    const items = [\"button\", \"card\", \"dialog\"]\n    const config = { registries: {} } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    // Non-prefixed items are resolved through the built-in @shadcn registry\n    expect(result).toEqual([\n      \"https://ui.shadcn.com/r/styles/{style}/button.json\",\n      \"https://ui.shadcn.com/r/styles/{style}/card.json\",\n      \"https://ui.shadcn.com/r/styles/{style}/dialog.json\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n\n  it(\"should resolve registry items with string config\", () => {\n    const items = [\"@v0/button\", \"@v0/card\"]\n    const config = {\n      registries: {\n        \"@v0\": \"https://v0.dev/chat/b/{name}/json\",\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\n      \"https://v0.dev/chat/b/button/json\",\n      \"https://v0.dev/chat/b/card/json\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n\n  it(\"should resolve registry items with object config and headers\", () => {\n    const items = [\"@private/button\", \"@private/card\"]\n    const config = {\n      registries: {\n        \"@private\": {\n          url: \"https://api.com/{name}.json\",\n          headers: {\n            Authorization: \"Bearer token123\",\n          },\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\n      \"https://api.com/button.json\",\n      \"https://api.com/card.json\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({\n      \"https://api.com/button.json\": {\n        Authorization: \"Bearer token123\",\n      },\n      \"https://api.com/card.json\": {\n        Authorization: \"Bearer token123\",\n      },\n    })\n  })\n\n  it(\"should handle mixed registry and non-registry items\", () => {\n    const items = [\"button\", \"@v0/card\", \"dialog\", \"@private/table\"]\n    const config = {\n      registries: {\n        \"@v0\": \"https://v0.dev/chat/b/{name}/json\",\n        \"@private\": {\n          url: \"https://api.com/{name}.json\",\n          headers: {\n            \"X-API-Key\": \"secret123\",\n          },\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    // Non-registry items (button, dialog) are resolved through the built-in @shadcn registry\n    expect(result).toEqual([\n      \"https://ui.shadcn.com/r/styles/{style}/button.json\",\n      \"https://v0.dev/chat/b/card/json\",\n      \"https://ui.shadcn.com/r/styles/{style}/dialog.json\",\n      \"https://api.com/table.json\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({\n      \"https://api.com/table.json\": {\n        \"X-API-Key\": \"secret123\",\n      },\n    })\n  })\n\n  it(\"should handle environment variables in config\", () => {\n    process.env.API_TOKEN = \"abc123\"\n    process.env.API_URL = \"https://api.com\"\n\n    const items = [\"@env/button\"]\n    const config = {\n      registries: {\n        \"@env\": {\n          url: \"${API_URL}/{name}.json\",\n          headers: {\n            Authorization: \"Bearer ${API_TOKEN}\",\n          },\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\"https://api.com/button.json\"])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({\n      \"https://api.com/button.json\": {\n        Authorization: \"Bearer abc123\",\n      },\n    })\n\n    delete process.env.API_TOKEN\n    delete process.env.API_URL\n  })\n\n  it(\"should handle complex item paths\", () => {\n    const items = [\"@acme/ui/button\", \"@acme/components/card\"]\n    const config = {\n      registries: {\n        \"@acme\": \"https://api.com/{name}.json\",\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\n      \"https://api.com/ui/button.json\",\n      \"https://api.com/components/card.json\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n\n  it(\"should handle URLs and local files unchanged\", () => {\n    const items = [\n      \"https://example.com/button.json\",\n      \"./local/component.json\",\n      \"@v0/card\",\n    ]\n    const config = {\n      registries: {\n        \"@v0\": \"https://v0.dev/chat/b/{name}/json\",\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\n      \"https://example.com/button.json\",\n      \"./local/component.json\",\n      \"https://v0.dev/chat/b/card/json\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n\n  it(\"should throw error for unknown registry\", () => {\n    const items = [\"@unknown/button\"]\n    const config = { registries: {} } as any\n\n    expect(() => {\n      resolveRegistryItemsFromRegistries(items, config)\n    }).toThrow('Unknown registry \"@unknown\"')\n  })\n\n  it(\"should handle multiple unknown registries\", () => {\n    const items = [\"@unknown1/button\", \"@unknown2/card\"]\n    const config = { registries: {} } as any\n\n    expect(() => {\n      resolveRegistryItemsFromRegistries(items, config)\n    }).toThrow('Unknown registry \"@unknown1\"')\n  })\n\n  it(\"should handle empty headers correctly\", () => {\n    const items = [\"@empty/button\"]\n    const config = {\n      registries: {\n        \"@empty\": {\n          url: \"https://api.com/{name}.json\",\n          headers: {},\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\"https://api.com/button.json\"])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n\n  it(\"should handle headers with environment variables that expand to empty\", () => {\n    process.env.EMPTY_TOKEN = \"some-value\"\n\n    const items = [\"@empty/button\"]\n    const config = {\n      registries: {\n        \"@empty\": {\n          url: \"https://api.com/{name}.json\",\n          headers: {\n            Authorization: \"Bearer ${EMPTY_TOKEN}\",\n          },\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\"https://api.com/button.json\"])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({\n      \"https://api.com/button.json\": {\n        Authorization: \"Bearer some-value\",\n      },\n    })\n\n    delete process.env.EMPTY_TOKEN\n  })\n\n  it(\"should handle headers with mixed static and environment variables\", () => {\n    process.env.API_TOKEN = \"secret123\"\n\n    const items = [\"@mixed/button\"]\n    const config = {\n      registries: {\n        \"@mixed\": {\n          url: \"https://api.com/{name}.json\",\n          headers: {\n            \"Content-Type\": \"application/json\",\n            Authorization: \"Bearer ${API_TOKEN}\",\n            \"X-Custom\": \"static-value\",\n          },\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\"https://api.com/button.json\"])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({\n      \"https://api.com/button.json\": {\n        \"Content-Type\": \"application/json\",\n        Authorization: \"Bearer secret123\",\n        \"X-Custom\": \"static-value\",\n      },\n    })\n\n    delete process.env.API_TOKEN\n  })\n\n  it(\"should handle query parameters in URL config\", () => {\n    const items = [\"@params/button\"]\n    const config = {\n      registries: {\n        \"@params\": {\n          url: \"https://api.com/{name}.json\",\n          params: {\n            version: \"1.0\",\n            format: \"json\",\n          },\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\n      \"https://api.com/button.json?version=1.0&format=json\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n\n  it(\"should handle query parameters with environment variables\", () => {\n    process.env.API_VERSION = \"2.0\"\n\n    const items = [\"@params/button\"]\n    const config = {\n      registries: {\n        \"@params\": {\n          url: \"https://api.com/{name}.json\",\n          params: {\n            version: \"${API_VERSION}\",\n            format: \"json\",\n          },\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\n      \"https://api.com/button.json?version=2.0&format=json\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n\n    delete process.env.API_VERSION\n  })\n\n  it(\"should handle existing query parameters in URL\", () => {\n    const items = [\"@existing/button\"]\n    const config = {\n      registries: {\n        \"@existing\": {\n          url: \"https://api.com/{name}.json?existing=true\",\n          params: {\n            version: \"1.0\",\n          },\n        },\n      },\n    } as any\n\n    const result = resolveRegistryItemsFromRegistries(items, config)\n\n    expect(result).toEqual([\n      \"https://api.com/button.json?existing=true&version=1.0\",\n    ])\n    expect(setRegistryHeaders).toHaveBeenCalledWith({})\n  })\n})\n\ndescribe(\"resolveRegistryItems with URL dependencies\", () => {\n  it(\"should resolve URL dependencies from local files\", async () => {\n    const dependencyUrl = \"https://example.com/dependency.json\"\n\n    // Create a mock server for the URL dependency\n    const mockServer = setupServer(\n      http.get(dependencyUrl, () => {\n        return HttpResponse.json({\n          name: \"url-dependency\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/url-dependency.tsx\",\n              content: \"// url dependency content\",\n              type: \"registry:ui\",\n            },\n          ],\n        })\n      })\n    )\n\n    mockServer.listen({ onUnhandledRequest: \"bypass\" })\n\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"component-with-url-deps.json\")\n\n    const componentData = {\n      name: \"component-with-url-deps\",\n      type: \"registry:ui\",\n      registryDependencies: [dependencyUrl], // URL dependency\n      files: [\n        {\n          path: \"ui/component-with-url-deps.tsx\",\n          content: \"// component with url deps content\",\n          type: \"registry:ui\",\n        },\n      ],\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(componentData, null, 2))\n\n    try {\n      const mockConfig = {\n        style: \"new-york\",\n        tailwind: { baseColor: \"neutral\", cssVariables: true },\n        resolvedPaths: {\n          cwd: process.cwd(),\n          tailwindConfig: \"./tailwind.config.js\",\n          tailwindCss: \"./globals.css\",\n          utils: \"./lib/utils\",\n          components: \"./components\",\n          lib: \"./lib\",\n          hooks: \"./hooks\",\n          ui: \"./components/ui\",\n        },\n      } as any\n\n      const result = await resolveRegistryTree([tempFile], mockConfig)\n\n      expect(result).toBeDefined()\n      expect(result?.files).toBeDefined()\n      // Should contain files from both the main component and its URL dependency\n      const filePaths = result?.files?.map((f: any) => f.path) ?? []\n      expect(filePaths).toContain(\"ui/component-with-url-deps.tsx\")\n      expect(filePaths).toContain(\"ui/url-dependency.tsx\")\n    } finally {\n      // Clean up\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n      mockServer.close()\n    }\n  })\n\n  it(\"should resolve namespace syntax in registryDependencies\", async () => {\n    // Mock a namespace registry endpoint\n    const namespaceUrl = \"https://custom-registry.com/custom-component.json\"\n\n    const mockServer = setupServer(\n      http.get(namespaceUrl, () => {\n        return HttpResponse.json({\n          name: \"custom-component\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/custom-component.tsx\",\n              content: \"// custom component content\",\n              type: \"registry:ui\",\n            },\n          ],\n        })\n      })\n    )\n\n    mockServer.listen({ onUnhandledRequest: \"bypass\" })\n\n    const tempDir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-test-\"))\n    const tempFile = path.join(tempDir, \"component-with-namespace-deps.json\")\n\n    const componentData = {\n      name: \"component-with-namespace-deps\",\n      type: \"registry:ui\",\n      registryDependencies: [\"@custom/custom-component\"], // Namespace dependency\n      files: [\n        {\n          path: \"ui/component-with-namespace-deps.tsx\",\n          content: \"// component with namespace deps content\",\n          type: \"registry:ui\",\n        },\n      ],\n    }\n\n    await fs.writeFile(tempFile, JSON.stringify(componentData, null, 2))\n\n    try {\n      const mockConfig = {\n        style: \"new-york\",\n        tailwind: { baseColor: \"neutral\", cssVariables: true },\n        resolvedPaths: {\n          cwd: process.cwd(),\n          tailwindConfig: \"./tailwind.config.js\",\n          tailwindCss: \"./globals.css\",\n          utils: \"./lib/utils\",\n          components: \"./components\",\n          lib: \"./lib\",\n          hooks: \"./hooks\",\n          ui: \"./components/ui\",\n        },\n        registries: {\n          \"@custom\": {\n            url: \"https://custom-registry.com/{name}.json\",\n          },\n        },\n      } as any\n\n      const result = await resolveRegistryTree([tempFile], mockConfig)\n\n      expect(result).toBeDefined()\n      expect(result?.files).toBeDefined()\n\n      expect(result?.files?.length).toBe(2)\n      expect(\n        result?.files?.some((f) => f.path === \"ui/custom-component.tsx\")\n      ).toBe(true)\n      expect(\n        result?.files?.some(\n          (f) => f.path === \"ui/component-with-namespace-deps.tsx\"\n        )\n      ).toBe(true)\n    } finally {\n      // Clean up\n      await fs.unlink(tempFile)\n      await fs.rmdir(tempDir)\n      mockServer.close()\n    }\n  })\n})\n\ndescribe(\"resolveRegistryTree - dependency ordering\", () => {\n  let customRegistry: Awaited<ReturnType<typeof createRegistryServer>>\n\n  beforeAll(async () => {\n    // Create a custom registry server for testing dependency ordering\n    customRegistry = await createRegistryServer(\n      [\n        {\n          name: \"base-component\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"components/ui/base.tsx\",\n              content: \"export const Base = () => <div>Base Component</div>\",\n              type: \"registry:ui\",\n            },\n          ],\n          cssVars: {\n            light: { base: \"#111111\" },\n          },\n        },\n        {\n          name: \"extended-component\",\n          type: \"registry:ui\",\n          registryDependencies: [\"http://localhost:4447/r/base-component.json\"],\n          files: [\n            {\n              path: \"components/ui/extended.tsx\",\n              content:\n                \"export const Extended = () => <div>Extended Component</div>\",\n              type: \"registry:ui\",\n            },\n          ],\n          cssVars: {\n            light: { extended: \"#222222\" },\n          },\n        },\n        {\n          name: \"deep-component\",\n          type: \"registry:ui\",\n          registryDependencies: [\n            \"http://localhost:4447/r/extended-component.json\",\n          ],\n          files: [\n            {\n              path: \"components/ui/deep.tsx\",\n              content: \"export const Deep = () => <div>Deep Component</div>\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n        // Circular dependency test\n        {\n          name: \"circular-a\",\n          type: \"registry:ui\",\n          registryDependencies: [\"http://localhost:4447/r/circular-b.json\"],\n          files: [\n            {\n              path: \"components/ui/circular-a.tsx\",\n              content: \"export const CircularA = () => <div>A</div>\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n        {\n          name: \"circular-b\",\n          type: \"registry:ui\",\n          registryDependencies: [\"http://localhost:4447/r/circular-a.json\"],\n          files: [\n            {\n              path: \"components/ui/circular-b.tsx\",\n              content: \"export const CircularB = () => <div>B</div>\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n      ],\n      { port: 4447 }\n    )\n\n    await customRegistry.start()\n  })\n\n  afterAll(async () => {\n    await customRegistry.stop()\n  })\n\n  test(\"should order dependencies before items that depend on them\", async () => {\n    const result = await resolveRegistryTree(\n      [\"http://localhost:4447/r/extended-component.json\"],\n      {\n        style: \"default\",\n        rsc: false,\n        tsx: false,\n        aliases: {\n          components: \"./components\",\n          utils: \"./lib/utils\",\n          ui: \"./components/ui\",\n        },\n        tailwind: {\n          baseColor: \"neutral\",\n          css: \"globals.css\",\n          cssVariables: false,\n        },\n        resolvedPaths: {\n          cwd: process.cwd(),\n          tailwindConfig: \"./tailwind.config.js\",\n          tailwindCss: \"./globals.css\",\n          utils: \"./lib/utils\",\n          components: \"./components\",\n          lib: \"./lib\",\n          hooks: \"./hooks\",\n          ui: \"./components/ui\",\n        },\n      }\n    )\n\n    expect(result).toBeTruthy()\n    expect(result?.files).toHaveLength(2)\n\n    // Base component should come first.\n    expect(result?.files?.[0]).toMatchObject({\n      path: \"components/ui/base.tsx\",\n      content: expect.stringContaining(\"Base Component\"),\n    })\n\n    // Extended component should come second.\n    expect(result?.files?.[1]).toMatchObject({\n      path: \"components/ui/extended.tsx\",\n      content: expect.stringContaining(\"Extended Component\"),\n    })\n\n    expect(result?.cssVars?.light).toMatchObject({\n      base: \"#111111\",\n      extended: \"#222222\",\n    })\n  })\n\n  test(\"should handle complex dependency chains\", async () => {\n    const result = await resolveRegistryTree(\n      [\"http://localhost:4447/r/deep-component.json\"],\n      {\n        style: \"new-york\",\n        rsc: false,\n        tsx: false,\n        aliases: {\n          components: \"./components\",\n          utils: \"./lib/utils\",\n          ui: \"./components/ui\",\n        },\n        tailwind: {\n          baseColor: \"neutral\",\n          css: \"globals.css\",\n          cssVariables: false,\n        },\n        resolvedPaths: {\n          cwd: process.cwd(),\n          tailwindConfig: \"./tailwind.config.js\",\n          tailwindCss: \"./globals.css\",\n          utils: \"./lib/utils\",\n          components: \"./components\",\n          lib: \"./lib\",\n          hooks: \"./hooks\",\n          ui: \"./components/ui\",\n        },\n      }\n    )\n\n    expect(result).toBeTruthy()\n    expect(result?.files).toHaveLength(3)\n\n    // Order should be: base -> extended -> deep.\n    expect(result?.files?.[0].content).toContain(\"Base Component\")\n    expect(result?.files?.[1].content).toContain(\"Extended Component\")\n    expect(result?.files?.[2].content).toContain(\"Deep Component\")\n  })\n\n  test(\"should handle circular dependencies gracefully\", async () => {\n    const consoleSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {})\n\n    const result = await resolveRegistryTree(\n      [\n        \"http://localhost:4447/r/circular-a.json\",\n        \"http://localhost:4447/r/circular-b.json\",\n      ],\n      {\n        style: \"new-york\",\n        rsc: false,\n        tsx: false,\n        aliases: {\n          components: \"./components\",\n          utils: \"./lib/utils\",\n          ui: \"./components/ui\",\n        },\n        tailwind: {\n          baseColor: \"neutral\",\n          css: \"globals.css\",\n          cssVariables: false,\n        },\n        resolvedPaths: {\n          cwd: process.cwd(),\n          tailwindConfig: \"./tailwind.config.js\",\n          tailwindCss: \"./globals.css\",\n          utils: \"./lib/utils\",\n          components: \"./components\",\n          lib: \"./lib\",\n          hooks: \"./hooks\",\n          ui: \"./components/ui\",\n        },\n      }\n    )\n\n    expect(result).toBeTruthy()\n\n    // With circular dependencies, we might get duplicates in the files array\n    // but we should have at least one of each circular item\n    const hasCircularA = result?.files?.some(\n      (f) => f.path === \"components/ui/circular-a.tsx\"\n    )\n    const hasCircularB = result?.files?.some(\n      (f) => f.path === \"components/ui/circular-b.tsx\"\n    )\n    expect(hasCircularA).toBe(true)\n    expect(hasCircularB).toBe(true)\n\n    // Should have logged a warning about circular dependency\n    // expect(consoleSpy).toHaveBeenCalledWith(\n    //   \"Circular dependency detected in registry items\"\n    // )\n\n    consoleSpy.mockRestore()\n  })\n\n  test(\"should handle exact duplicate URLs by including only once\", async () => {\n    const result = await resolveRegistryTree(\n      [\n        \"http://localhost:4447/r/base-component.json\",\n        \"http://localhost:4447/r/base-component.json\",\n      ],\n      {\n        style: \"new-york\",\n        rsc: false,\n        tsx: false,\n        aliases: {\n          components: \"./components\",\n          utils: \"./lib/utils\",\n          ui: \"./components/ui\",\n        },\n        tailwind: {\n          baseColor: \"neutral\",\n          css: \"globals.css\",\n          cssVariables: false,\n        },\n        resolvedPaths: {\n          cwd: process.cwd(),\n          tailwindConfig: \"./tailwind.config.js\",\n          tailwindCss: \"./globals.css\",\n          utils: \"./lib/utils\",\n          components: \"./components\",\n          lib: \"./lib\",\n          hooks: \"./hooks\",\n          ui: \"./components/ui\",\n        },\n      }\n    )\n\n    expect(result?.files).toHaveLength(1)\n    expect(result?.files?.[0].path).toBe(\"components/ui/base.tsx\")\n  })\n\n  test(\"should handle items with same name from different registries\", async () => {\n    const secondRegistry = await createRegistryServer(\n      [\n        {\n          name: \"base-component\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"components/ui/base-alt.tsx\",\n              content:\n                \"export const BaseAlt = () => <div>Alternative Base Component</div>\",\n              type: \"registry:ui\",\n            },\n          ],\n          cssVars: {\n            light: { altBase: \"#999999\" },\n          },\n        },\n      ],\n      { port: 4448 }\n    )\n\n    await secondRegistry.start()\n\n    const consoleSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {})\n\n    const result = await resolveRegistryTree(\n      [\n        \"http://localhost:4447/r/base-component.json\",\n        \"http://localhost:4448/r/base-component.json\",\n      ],\n      {\n        style: \"default\",\n        rsc: false,\n        tsx: false,\n        aliases: {\n          components: \"./components\",\n          utils: \"./lib/utils\",\n          ui: \"./components/ui\",\n        },\n        tailwind: {\n          baseColor: \"neutral\",\n          css: \"globals.css\",\n          cssVariables: false,\n        },\n        resolvedPaths: {\n          cwd: process.cwd(),\n          tailwindConfig: \"./tailwind.config.js\",\n          tailwindCss: \"./globals.css\",\n          utils: \"./lib/utils\",\n          components: \"./components\",\n          lib: \"./lib\",\n          hooks: \"./hooks\",\n          ui: \"./components/ui\",\n        },\n      }\n    )\n\n    expect(result?.files).toHaveLength(2)\n\n    const filePaths = result?.files?.map((f) => f.path).sort()\n    expect(filePaths).toEqual([\n      \"components/ui/base-alt.tsx\",\n      \"components/ui/base.tsx\",\n    ])\n\n    expect(result?.cssVars?.light).toHaveProperty(\"base\", \"#111111\")\n    expect(result?.cssVars?.light).toHaveProperty(\"altBase\", \"#999999\")\n\n    consoleSpy.mockRestore()\n    await secondRegistry.stop()\n  })\n\n  test(\"should correctly resolve dependencies when multiple items have same dependency name\", async () => {\n    const result = await resolveRegistryTree(\n      [\"http://localhost:4447/r/extended-component.json\"],\n      {\n        style: \"new-york\",\n        rsc: false,\n        tsx: false,\n        aliases: {\n          components: \"./components\",\n          utils: \"./lib/utils\",\n          ui: \"./components/ui\",\n        },\n        tailwind: {\n          baseColor: \"neutral\",\n          css: \"globals.css\",\n          cssVariables: false,\n        },\n        resolvedPaths: {\n          cwd: process.cwd(),\n          tailwindConfig: \"./tailwind.config.js\",\n          tailwindCss: \"./globals.css\",\n          utils: \"./lib/utils\",\n          components: \"./components\",\n          lib: \"./lib\",\n          hooks: \"./hooks\",\n          ui: \"./components/ui\",\n        },\n      }\n    )\n\n    expect(result?.files).toHaveLength(2)\n    expect(result?.files?.[0].path).toBe(\"components/ui/base.tsx\")\n    expect(result?.files?.[1].path).toBe(\"components/ui/extended.tsx\")\n  })\n})\n\ndescribe(\"resolveRegistryTree - potential target conflicts\", async () => {\n  const exampleRegistry = await createRegistryServer(\n    [\n      {\n        name: \"button-variant-a\",\n        type: \"registry:ui\",\n        files: [\n          {\n            path: \"ui/button.tsx\",\n            content: \"export const Button = () => <button>Variant A</button>\",\n            type: \"registry:ui\",\n          },\n          {\n            path: \"ui/button.styles.css\",\n            content: \".button-a { color: red; }\",\n            type: \"registry:ui\",\n          },\n        ],\n      },\n      {\n        name: \"button-variant-b\",\n        type: \"registry:ui\",\n        files: [\n          {\n            path: \"ui/button.tsx\",\n            content: \"export const Button = () => <button>Variant B</button>\",\n            type: \"registry:ui\",\n          },\n          {\n            path: \"components/button/index.tsx\",\n            content: \"export { Button } from './button'\",\n            type: \"registry:ui\",\n          },\n        ],\n      },\n      {\n        name: \"component-with-explicit-target\",\n        type: \"registry:ui\",\n        files: [\n          {\n            path: \"custom/component.tsx\",\n            content: \"export const Component = () => <div>Custom</div>\",\n            type: \"registry:ui\",\n            target: \"components/ui/button.tsx\",\n          },\n        ],\n      },\n      {\n        name: \"lib-and-ui-conflict\",\n        type: \"registry:ui\",\n        registryDependencies: [\"http://localhost:4449/r/lib-utils.json\"],\n        files: [\n          {\n            path: \"ui/utils.ts\",\n            content: \"export const uiUtils = () => {}\",\n            type: \"registry:ui\",\n          },\n        ],\n      },\n      {\n        name: \"lib-utils\",\n        type: \"registry:lib\",\n        files: [\n          {\n            path: \"lib/utils.ts\",\n            content: \"export const libUtils = () => {}\",\n            type: \"registry:lib\",\n          },\n          {\n            path: \"utils.ts\",\n            content: \"export const utils = () => {}\",\n            type: \"registry:lib\",\n          },\n        ],\n      },\n    ],\n    { port: 4449 }\n  )\n\n  const sharedConfig = {\n    style: \"default\",\n    rsc: false,\n    tsx: false,\n    aliases: {\n      components: \"./components\",\n      utils: \"./lib/utils\",\n      ui: \"./components/ui\",\n    },\n    tailwind: {\n      config: \"./tailwind.config.js\",\n      baseColor: \"neutral\",\n      css: \"globals.css\",\n      cssVariables: false,\n    },\n    resolvedPaths: {\n      cwd: process.cwd(),\n      tailwindConfig: \"./tailwind.config.js\",\n      tailwindCss: \"./globals.css\",\n      utils: \"./lib/utils\",\n      components: \"./components\",\n      lib: \"./lib\",\n      hooks: \"./hooks\",\n      ui: \"./components/ui\",\n    },\n  }\n\n  beforeAll(async () => {\n    await exampleRegistry.start()\n  })\n\n  afterAll(async () => {\n    await exampleRegistry.stop()\n  })\n\n  test(\"should deduplicate files with same resolved target (last wins) and preserve order\", async () => {\n    expect(\n      await resolveRegistryTree(\n        [\n          \"http://localhost:4449/r/button-variant-a.json\",\n          \"http://localhost:4449/r/button-variant-b.json\",\n        ],\n        sharedConfig\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const Button = () => <button>Variant B</button>\",\n            \"path\": \"ui/button.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \".button-a { color: red; }\",\n            \"path\": \"ui/button.styles.css\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export { Button } from './button'\",\n            \"path\": \"components/button/index.tsx\",\n            \"type\": \"registry:ui\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n\n    expect(\n      await resolveRegistryTree(\n        [\n          \"http://localhost:4449/r/button-variant-b.json\",\n          \"http://localhost:4449/r/button-variant-a.json\",\n        ],\n        sharedConfig\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const Button = () => <button>Variant A</button>\",\n            \"path\": \"ui/button.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export { Button } from './button'\",\n            \"path\": \"components/button/index.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \".button-a { color: red; }\",\n            \"path\": \"ui/button.styles.css\",\n            \"type\": \"registry:ui\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n  })\n\n  test(\"should handle explicit target overrides\", async () => {\n    expect(\n      await resolveRegistryTree(\n        [\n          \"http://localhost:4449/r/button-variant-a.json\",\n          \"http://localhost:4449/r/component-with-explicit-target.json\",\n        ],\n        sharedConfig\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const Button = () => <button>Variant A</button>\",\n            \"path\": \"ui/button.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \".button-a { color: red; }\",\n            \"path\": \"ui/button.styles.css\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const Component = () => <div>Custom</div>\",\n            \"path\": \"custom/component.tsx\",\n            \"target\": \"components/ui/button.tsx\",\n            \"type\": \"registry:ui\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n  })\n\n  test(\"should preserve files with different types even if paths are similar\", async () => {\n    expect(\n      await resolveRegistryTree(\n        [\"http://localhost:4449/r/lib-and-ui-conflict.json\"],\n        sharedConfig\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const utils = () => {}\",\n            \"path\": \"utils.ts\",\n            \"type\": \"registry:lib\",\n          },\n          {\n            \"content\": \"export const uiUtils = () => {}\",\n            \"path\": \"ui/utils.ts\",\n            \"type\": \"registry:ui\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n  })\n\n  test(\"should handle complex nested paths and deduplicate correctly\", async () => {\n    // Create a custom registry with nested paths.\n    const nestedRegistry = await createRegistryServer(\n      [\n        {\n          name: \"nested-a\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/forms/input.tsx\",\n              content: \"export const Input = () => <input />\",\n              type: \"registry:ui\",\n            },\n            {\n              path: \"ui/forms/button.tsx\",\n              content:\n                \"export const FormButton = () => <button>Submit A</button>\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n        {\n          name: \"nested-b\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/forms/button.tsx\",\n              content:\n                \"export const FormButton = () => <button>Submit B</button>\",\n              type: \"registry:ui\",\n            },\n            {\n              path: \"ui/forms/select.tsx\",\n              content: \"export const Select = () => <select />\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n      ],\n      { port: 4450 }\n    )\n\n    await nestedRegistry.start()\n\n    expect(\n      await resolveRegistryTree(\n        [\n          \"http://localhost:4450/r/nested-a.json\",\n          \"http://localhost:4450/r/nested-b.json\",\n        ],\n        sharedConfig\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const Input = () => <input />\",\n            \"path\": \"ui/forms/input.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const FormButton = () => <button>Submit B</button>\",\n            \"path\": \"ui/forms/button.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const Select = () => <select />\",\n            \"path\": \"ui/forms/select.tsx\",\n            \"type\": \"registry:ui\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n\n    await nestedRegistry.stop()\n  })\n\n  test(\"should deduplicate files with same resolved path\", async () => {\n    const multiUtilsRegistry = await createRegistryServer(\n      [\n        {\n          name: \"utils-set-a\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/utils.tsx\",\n              content: \"export const utilsA = 'A'\",\n              type: \"registry:ui\",\n            },\n            {\n              path: \"ui/helpers/utils.tsx\",\n              content: \"export const helpersUtilsA = 'A'\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n        {\n          name: \"utils-set-b\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/utils.tsx\",\n              content: \"export const utilsB = 'B'\",\n              type: \"registry:ui\",\n            },\n            {\n              path: \"ui/helpers/utils.tsx\",\n              content: \"export const helpersUtilsB = 'B'\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n      ],\n      { port: 4451 }\n    )\n\n    await multiUtilsRegistry.start()\n\n    expect(\n      await resolveRegistryTree(\n        [\n          \"http://localhost:4451/r/utils-set-a.json\",\n          \"http://localhost:4451/r/utils-set-b.json\",\n        ],\n        sharedConfig\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const utilsB = 'B'\",\n            \"path\": \"ui/utils.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const helpersUtilsB = 'B'\",\n            \"path\": \"ui/helpers/utils.tsx\",\n            \"type\": \"registry:ui\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n\n    await multiUtilsRegistry.stop()\n  })\n\n  test(\"should handle registry dependencies with file conflicts\", async () => {\n    const dependencyRegistry = await createRegistryServer(\n      [\n        {\n          name: \"base-button\",\n          type: \"registry:ui\",\n          files: [\n            {\n              path: \"ui/button.tsx\",\n              content: \"export const BaseButton = () => <button>Base</button>\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n        {\n          name: \"extended-button\",\n          type: \"registry:ui\",\n          registryDependencies: [\"http://localhost:4452/r/base-button.json\"],\n          files: [\n            {\n              path: \"ui/button.tsx\",\n              content:\n                \"export const ExtendedButton = () => <button>Extended</button>\",\n              type: \"registry:ui\",\n            },\n          ],\n        },\n      ],\n      { port: 4452 }\n    )\n\n    await dependencyRegistry.start()\n\n    expect(\n      await resolveRegistryTree(\n        [\"http://localhost:4452/r/extended-button.json\"],\n        sharedConfig\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const ExtendedButton = () => <button>Extended</button>\",\n            \"path\": \"ui/button.tsx\",\n            \"type\": \"registry:ui\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n\n    await dependencyRegistry.stop()\n  })\n})\n\ndescribe(\"resolveRegistryTree - cross-registry dependencies\", async () => {\n  const firstRegistry = await createRegistryServer(\n    [\n      {\n        name: \"login-01\",\n        type: \"registry:ui\",\n        files: [\n          {\n            path: \"ui/login-01.tsx\",\n            content: \"export const Login01 = () => <div>Login 01</div>\",\n            type: \"registry:ui\",\n          },\n        ],\n      },\n      {\n        name: \"login-02\",\n        type: \"registry:ui\",\n        files: [\n          {\n            path: \"ui/login-02.tsx\",\n            content: \"export const Login02 = () => <div>Login 02</div>\",\n            type: \"registry:ui\",\n          },\n        ],\n      },\n    ],\n    { port: 4453 }\n  )\n\n  const secondRegistry = await createRegistryServer(\n    [\n      {\n        name: \"block-01\",\n        type: \"registry:block\",\n        files: [\n          {\n            path: \"blocks/block-01.tsx\",\n            content: \"export const Block01 = () => <div>Block 01</div>\",\n            type: \"registry:block\",\n          },\n        ],\n      },\n      {\n        name: \"block-02\",\n        type: \"registry:block\",\n        registryDependencies: [\"@one/login-02\"],\n        files: [\n          {\n            path: \"blocks/block-02.tsx\",\n            content:\n              \"export const Block02 = () => <div>Block 02 with Login</div>\",\n            type: \"registry:block\",\n          },\n        ],\n      },\n    ],\n    { port: 4454 }\n  )\n\n  const thirdRegistry = await createRegistryServer(\n    [\n      {\n        name: \"login-01\",\n        type: \"registry:component\",\n        files: [\n          {\n            path: \"components/login-form.tsx\",\n            content:\n              \"export const LoginForm = () => <form>Login Form 01</form>\",\n            type: \"registry:component\",\n          },\n        ],\n      },\n      {\n        name: \"login-02\",\n        type: \"registry:component\",\n        files: [\n          {\n            path: \"components/login-form.tsx\",\n            content:\n              \"export const LoginForm = () => <form>Login Form 02</form>\",\n            type: \"registry:component\",\n          },\n        ],\n      },\n    ],\n    { port: 4455 }\n  )\n\n  const fourthRegistry = await createRegistryServer(\n    [\n      {\n        name: \"app-01\",\n        type: \"registry:item\",\n        registryDependencies: [\"@three/login-02\"],\n      },\n    ],\n    { port: 4456 }\n  )\n\n  beforeAll(async () => {\n    await firstRegistry.start()\n    await secondRegistry.start()\n    await thirdRegistry.start()\n    await fourthRegistry.start()\n  })\n\n  afterAll(async () => {\n    await firstRegistry.stop()\n    await secondRegistry.stop()\n    await thirdRegistry.stop()\n    await fourthRegistry.stop()\n  })\n\n  test(\"should resolve cross-registry dependencies correctly\", async () => {\n    const config = {\n      style: \"default\",\n      rsc: false,\n      tsx: false,\n      aliases: {\n        components: \"./components\",\n        utils: \"./lib/utils\",\n        ui: \"./components/ui\",\n      },\n      tailwind: {\n        baseColor: \"neutral\",\n        css: \"./globals.css\",\n        cssVariables: false,\n      },\n      registries: {\n        \"@one\": {\n          url: \"http://localhost:4453/r/{name}.json\",\n        },\n        \"@two\": {\n          url: \"http://localhost:4454/r/{name}.json\",\n        },\n      },\n      resolvedPaths: {\n        cwd: process.cwd(),\n        tailwindConfig: \"./tailwind.config.js\",\n        tailwindCss: \"./globals.css\",\n        utils: \"./lib/utils\",\n        components: \"./components\",\n        lib: \"./lib\",\n        hooks: \"./hooks\",\n        ui: \"./components/ui\",\n      },\n    }\n\n    const result = await resolveRegistryTree(\n      [\"@one/login-01\", \"@two/block-02\"],\n      config\n    )\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const Login01 = () => <div>Login 01</div>\",\n            \"path\": \"ui/login-01.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const Login02 = () => <div>Login 02</div>\",\n            \"path\": \"ui/login-02.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const Block02 = () => <div>Block 02 with Login</div>\",\n            \"path\": \"blocks/block-02.tsx\",\n            \"type\": \"registry:block\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n  })\n\n  test(\"should deduplicate shared dependencies across registry items\", async () => {\n    const config = {\n      style: \"default\",\n      rsc: false,\n      tsx: false,\n      aliases: {\n        components: \"./components\",\n        utils: \"./lib/utils\",\n        ui: \"./components/ui\",\n      },\n      tailwind: {\n        baseColor: \"neutral\",\n        css: \"globals.css\",\n        cssVariables: false,\n      },\n      registries: {\n        \"@three\": \"http://localhost:4455/r/{name}.json\",\n        \"@four\": \"http://localhost:4456/r/{name}.json\",\n      },\n      resolvedPaths: {\n        cwd: process.cwd(),\n        tailwindConfig: \"./tailwind.config.js\",\n        tailwindCss: \"./globals.css\",\n        utils: \"./lib/utils\",\n        components: \"./components\",\n        lib: \"./lib\",\n        hooks: \"./hooks\",\n        ui: \"./components/ui\",\n      },\n    }\n\n    const result = await resolveRegistryTree(\n      [\"@three/login-01\", \"@four/app-01\"],\n      config\n    )\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"css\": {},\n        \"cssVars\": {},\n        \"dependencies\": [],\n        \"devDependencies\": [],\n        \"docs\": \"\",\n        \"files\": [\n          {\n            \"content\": \"export const LoginForm = () => <form>Login Form 02</form>\",\n            \"path\": \"components/login-form.tsx\",\n            \"type\": \"registry:component\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {},\n      }\n    `)\n  })\n})\n\ndescribe(\"resolveRegistryTree - comprehensive cross-registry tests\", async () => {\n  // Create registries with all possible fields\n  const uiRegistry = await createRegistryServer(\n    [\n      {\n        name: \"theme-provider\",\n        type: \"registry:ui\",\n        dependencies: [\"next-themes\"],\n        devDependencies: [\"@types/node\"],\n        files: [\n          {\n            path: \"ui/theme-provider.tsx\",\n            content: \"export const ThemeProvider = () => <div>Theme</div>\",\n            type: \"registry:ui\",\n          },\n        ],\n        tailwind: {\n          config: {\n            theme: {\n              extend: {\n                colors: {\n                  border: \"hsl(var(--border))\",\n                  input: \"hsl(var(--input))\",\n                },\n              },\n            },\n            plugins: [\"require('tailwindcss-animate')\"],\n          },\n        },\n        cssVars: {\n          theme: {\n            \"--card\": \"240 5% 6%\",\n            \"--card-foreground\": \"60 5% 90%\",\n          },\n          light: {\n            \"--background\": \"0 0% 100%\",\n            \"--foreground\": \"240 10% 3.9%\",\n          },\n          dark: {\n            \"--background\": \"240 10% 3.9%\",\n            \"--foreground\": \"0 0% 98%\",\n          },\n        },\n        css: {\n          \".theme-custom\": {\n            \"background-color\": \"var(--background)\",\n            color: \"var(--foreground)\",\n          },\n        },\n        docs: \"## Theme Provider\\n\\nA component for managing application themes.\",\n      },\n      {\n        name: \"dialog\",\n        type: \"registry:ui\",\n        dependencies: [\"@radix-ui/react-dialog\"],\n        registryDependencies: [\"@ui/theme-provider\"],\n        files: [\n          {\n            path: \"ui/dialog.tsx\",\n            content: \"export const Dialog = () => <dialog>Dialog</dialog>\",\n            type: \"registry:ui\",\n          },\n        ],\n        cssVars: {\n          light: {\n            \"--dialog-background\": \"0 0% 100%\",\n          },\n          dark: {\n            \"--dialog-background\": \"240 10% 3.9%\",\n          },\n        },\n        docs: \"## Dialog\\n\\nA modal dialog component.\",\n      },\n    ],\n    { port: 4457 }\n  )\n\n  const blockRegistry = await createRegistryServer(\n    [\n      {\n        name: \"dashboard-01\",\n        type: \"registry:block\",\n        dependencies: [\"recharts\", \"lucide-react\"],\n        devDependencies: [\"@types/recharts\"],\n        registryDependencies: [\"@ui/dialog\", \"@lib/chart-utils\"],\n        files: [\n          {\n            path: \"blocks/dashboard-01.tsx\",\n            content: \"export const Dashboard = () => <div>Dashboard</div>\",\n            type: \"registry:block\",\n          },\n          {\n            path: \"blocks/dashboard-01.css\",\n            content: \".dashboard { padding: 1rem; }\",\n            type: \"registry:block\",\n          },\n        ],\n        tailwind: {\n          config: {\n            theme: {\n              extend: {\n                borderRadius: {\n                  xl: \"1rem\",\n                },\n              },\n            },\n          },\n        },\n        css: {\n          \".dashboard-grid\": {\n            display: \"grid\",\n            \"grid-template-columns\": \"repeat(auto-fit, minmax(250px, 1fr))\",\n          },\n        },\n        envVars: {\n          NEXT_PUBLIC_API_URL: \"https://api.example.com\",\n          NEXT_PUBLIC_APP_NAME: \"Dashboard App\",\n        },\n        docs: \"## Dashboard Block\\n\\nA complete dashboard layout.\",\n      },\n    ],\n    { port: 4458 }\n  )\n\n  const libRegistry = await createRegistryServer(\n    [\n      {\n        name: \"chart-utils\",\n        type: \"registry:lib\",\n        dependencies: [\"date-fns\", \"clsx\"],\n        files: [\n          {\n            path: \"lib/chart-utils.ts\",\n            content: \"export const formatChartData = (data) => data\",\n            type: \"registry:lib\",\n          },\n        ],\n        docs: \"## Chart Utilities\\n\\nUtility functions for chart data processing.\",\n      },\n      {\n        name: \"api-client\",\n        type: \"registry:lib\",\n        dependencies: [\"axios\"],\n        devDependencies: [\"@types/axios\"],\n        registryDependencies: [\"@lib/chart-utils\"],\n        files: [\n          {\n            path: \"lib/api-client.ts\",\n            content: \"export const apiClient = axios.create()\",\n            type: \"registry:lib\",\n          },\n        ],\n        envVars: {\n          API_KEY: \"your-api-key\",\n          API_SECRET: \"your-api-secret\",\n        },\n      },\n    ],\n    { port: 4459 }\n  )\n\n  beforeAll(async () => {\n    await uiRegistry.start()\n    await blockRegistry.start()\n    await libRegistry.start()\n  })\n\n  afterAll(async () => {\n    await uiRegistry.stop()\n    await blockRegistry.stop()\n    await libRegistry.stop()\n  })\n\n  test(\"should merge all properties from cross-registry dependencies\", async () => {\n    const config = {\n      style: \"default\",\n      rsc: false,\n      tsx: false,\n      aliases: {\n        components: \"./components\",\n        utils: \"./lib/utils\",\n        ui: \"./components/ui\",\n      },\n      tailwind: {\n        baseColor: \"neutral\",\n        css: \"globals.css\",\n        cssVariables: false,\n      },\n      registries: {\n        \"@ui\": \"http://localhost:4457/r/{name}.json\",\n        \"@block\": \"http://localhost:4458/r/{name}.json\",\n        \"@lib\": \"http://localhost:4459/r/{name}.json\",\n      },\n      resolvedPaths: {\n        cwd: process.cwd(),\n        tailwindConfig: \"./tailwind.config.js\",\n        tailwindCss: \"./globals.css\",\n        utils: \"./lib/utils\",\n        components: \"./components\",\n        lib: \"./lib\",\n        hooks: \"./hooks\",\n        ui: \"./components/ui\",\n      },\n    }\n\n    const result = await resolveRegistryTree([\"@block/dashboard-01\"], config)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"css\": {\n          \".dashboard-grid\": {\n            \"display\": \"grid\",\n            \"grid-template-columns\": \"repeat(auto-fit, minmax(250px, 1fr))\",\n          },\n          \".theme-custom\": {\n            \"background-color\": \"var(--background)\",\n            \"color\": \"var(--foreground)\",\n          },\n        },\n        \"cssVars\": {\n          \"dark\": {\n            \"--background\": \"240 10% 3.9%\",\n            \"--dialog-background\": \"240 10% 3.9%\",\n            \"--foreground\": \"0 0% 98%\",\n          },\n          \"light\": {\n            \"--background\": \"0 0% 100%\",\n            \"--dialog-background\": \"0 0% 100%\",\n            \"--foreground\": \"240 10% 3.9%\",\n          },\n          \"theme\": {\n            \"--card\": \"240 5% 6%\",\n            \"--card-foreground\": \"60 5% 90%\",\n          },\n        },\n        \"dependencies\": [\n          \"next-themes\",\n          \"date-fns\",\n          \"clsx\",\n          \"@radix-ui/react-dialog\",\n          \"recharts\",\n          \"lucide-react\",\n        ],\n        \"devDependencies\": [\n          \"@types/node\",\n          \"@types/recharts\",\n        ],\n        \"docs\": \"## Theme Provider\n\n      A component for managing application themes.\n      ## Chart Utilities\n\n      Utility functions for chart data processing.\n      ## Dialog\n\n      A modal dialog component.\n      ## Dashboard Block\n\n      A complete dashboard layout.\n      \",\n        \"envVars\": {\n          \"NEXT_PUBLIC_API_URL\": \"https://api.example.com\",\n          \"NEXT_PUBLIC_APP_NAME\": \"Dashboard App\",\n        },\n        \"files\": [\n          {\n            \"content\": \"export const ThemeProvider = () => <div>Theme</div>\",\n            \"path\": \"ui/theme-provider.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const formatChartData = (data) => data\",\n            \"path\": \"lib/chart-utils.ts\",\n            \"type\": \"registry:lib\",\n          },\n          {\n            \"content\": \"export const Dialog = () => <dialog>Dialog</dialog>\",\n            \"path\": \"ui/dialog.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const Dashboard = () => <div>Dashboard</div>\",\n            \"path\": \"blocks/dashboard-01.tsx\",\n            \"type\": \"registry:block\",\n          },\n          {\n            \"content\": \".dashboard { padding: 1rem; }\",\n            \"path\": \"blocks/dashboard-01.css\",\n            \"type\": \"registry:block\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {\n          \"config\": {\n            \"plugins\": [\n              \"require('tailwindcss-animate')\",\n            ],\n            \"theme\": {\n              \"extend\": {\n                \"borderRadius\": {\n                  \"xl\": \"1rem\",\n                },\n                \"colors\": {\n                  \"border\": \"hsl(var(--border))\",\n                  \"input\": \"hsl(var(--input))\",\n                },\n              },\n            },\n          },\n        },\n      }\n    `)\n  })\n\n  test(\"should handle multiple cross-registry items with overlapping dependencies\", async () => {\n    const config = {\n      style: \"default\",\n      rsc: false,\n      tsx: false,\n      aliases: {\n        components: \"./components\",\n        utils: \"./lib/utils\",\n        ui: \"./components/ui\",\n      },\n      tailwind: {\n        baseColor: \"neutral\",\n        css: \"globals.css\",\n        cssVariables: false,\n      },\n      registries: {\n        \"@ui\": \"http://localhost:4457/r/{name}.json\",\n        \"@lib\": \"http://localhost:4459/r/{name}.json\",\n      },\n      resolvedPaths: {\n        cwd: process.cwd(),\n        tailwindConfig: \"./tailwind.config.js\",\n        tailwindCss: \"./globals.css\",\n        utils: \"./lib/utils\",\n        components: \"./components\",\n        lib: \"./lib\",\n        hooks: \"./hooks\",\n        ui: \"./components/ui\",\n      },\n    }\n\n    const result = await resolveRegistryTree(\n      [\"@ui/dialog\", \"@lib/api-client\"],\n      config\n    )\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"css\": {\n          \".theme-custom\": {\n            \"background-color\": \"var(--background)\",\n            \"color\": \"var(--foreground)\",\n          },\n        },\n        \"cssVars\": {\n          \"dark\": {\n            \"--background\": \"240 10% 3.9%\",\n            \"--dialog-background\": \"240 10% 3.9%\",\n            \"--foreground\": \"0 0% 98%\",\n          },\n          \"light\": {\n            \"--background\": \"0 0% 100%\",\n            \"--dialog-background\": \"0 0% 100%\",\n            \"--foreground\": \"240 10% 3.9%\",\n          },\n          \"theme\": {\n            \"--card\": \"240 5% 6%\",\n            \"--card-foreground\": \"60 5% 90%\",\n          },\n        },\n        \"dependencies\": [\n          \"next-themes\",\n          \"date-fns\",\n          \"clsx\",\n          \"@radix-ui/react-dialog\",\n          \"axios\",\n        ],\n        \"devDependencies\": [\n          \"@types/node\",\n          \"@types/axios\",\n        ],\n        \"docs\": \"## Theme Provider\n\n      A component for managing application themes.\n      ## Chart Utilities\n\n      Utility functions for chart data processing.\n      ## Dialog\n\n      A modal dialog component.\n      \",\n        \"envVars\": {\n          \"API_KEY\": \"your-api-key\",\n          \"API_SECRET\": \"your-api-secret\",\n        },\n        \"files\": [\n          {\n            \"content\": \"export const ThemeProvider = () => <div>Theme</div>\",\n            \"path\": \"ui/theme-provider.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const formatChartData = (data) => data\",\n            \"path\": \"lib/chart-utils.ts\",\n            \"type\": \"registry:lib\",\n          },\n          {\n            \"content\": \"export const Dialog = () => <dialog>Dialog</dialog>\",\n            \"path\": \"ui/dialog.tsx\",\n            \"type\": \"registry:ui\",\n          },\n          {\n            \"content\": \"export const apiClient = axios.create()\",\n            \"path\": \"lib/api-client.ts\",\n            \"type\": \"registry:lib\",\n          },\n        ],\n        \"fonts\": undefined,\n        \"tailwind\": {\n          \"config\": {\n            \"plugins\": [\n              \"require('tailwindcss-animate')\",\n            ],\n            \"theme\": {\n              \"extend\": {\n                \"colors\": {\n                  \"border\": \"hsl(var(--border))\",\n                  \"input\": \"hsl(var(--input))\",\n                },\n              },\n            },\n          },\n        },\n      }\n    `)\n  })\n\n  test(\"should properly deduplicate shared registry dependencies\", async () => {\n    const config = {\n      style: \"default\",\n      rsc: false,\n      tsx: false,\n      aliases: {\n        components: \"./components\",\n        utils: \"./lib/utils\",\n        ui: \"./components/ui\",\n      },\n      tailwind: {\n        baseColor: \"neutral\",\n        css: \"globals.css\",\n        cssVariables: false,\n      },\n      registries: {\n        \"@ui\": \"http://localhost:4457/r/{name}.json\",\n        \"@lib\": \"http://localhost:4459/r/{name}.json\",\n      },\n      resolvedPaths: {\n        cwd: process.cwd(),\n        tailwindConfig: \"./tailwind.config.js\",\n        tailwindCss: \"./globals.css\",\n        utils: \"./lib/utils\",\n        components: \"./components\",\n        lib: \"./lib\",\n        hooks: \"./hooks\",\n        ui: \"./components/ui\",\n      },\n    }\n\n    const result = await resolveRegistryTree(\n      [\"@ui/dialog\", \"@lib/api-client\"],\n      config\n    )\n\n    // Verify that chart-utils appears only once in the files.\n    const chartUtilsFiles = result?.files?.filter(\n      (f) => f.path === \"lib/chart-utils.ts\"\n    )\n    expect(chartUtilsFiles).toHaveLength(1)\n\n    // Verify that theme-provider appears only once.\n    const themeProviderFiles = result?.files?.filter(\n      (f) => f.path === \"ui/theme-provider.tsx\"\n    )\n    expect(themeProviderFiles).toHaveLength(1)\n\n    // Verify dependencies are merged without duplicates.\n    expect(result?.dependencies).toEqual([\n      \"next-themes\",\n      \"date-fns\",\n      \"clsx\",\n      \"@radix-ui/react-dialog\",\n      \"axios\",\n    ])\n  })\n})\n\ndescribe(\"resolveRegistryTree - last wins behavior\", async () => {\n  // Create registries with overlapping properties to test last-wins\n  const overrideRegistry = await createRegistryServer(\n    [\n      {\n        name: \"base-component\",\n        type: \"registry:ui\",\n        files: [\n          {\n            path: \"ui/component.tsx\",\n            content: \"export const Component = () => <div>Base</div>\",\n            type: \"registry:ui\",\n          },\n        ],\n        cssVars: {\n          light: {\n            \"--background\": \"#ffffff\",\n            \"--foreground\": \"#000000\",\n          },\n          dark: {\n            \"--background\": \"#000000\",\n            \"--foreground\": \"#ffffff\",\n          },\n        },\n        css: {\n          \".component\": {\n            padding: \"1rem\",\n            margin: \"0.5rem\",\n          },\n        },\n        dependencies: [\"react\", \"clsx\"],\n        envVars: {\n          API_URL: \"https://base.example.com\",\n          APP_NAME: \"Base App\",\n        },\n        docs: \"Base component documentation\",\n      },\n      {\n        name: \"override-component\",\n        type: \"registry:ui\",\n        registryDependencies: [\"@override/base-component\"],\n        files: [\n          {\n            path: \"ui/component.tsx\",\n            content: \"export const Component = () => <div>Override</div>\",\n            type: \"registry:ui\",\n          },\n        ],\n        cssVars: {\n          light: {\n            \"--background\": \"#f0f0f0\", // Override base\n            \"--primary\": \"#0066cc\", // Add new\n          },\n          dark: {\n            \"--background\": \"#1a1a1a\", // Override base\n          },\n        },\n        css: {\n          \".component\": {\n            padding: \"2rem\", // Override base\n            border: \"1px solid\", // Add new\n          },\n        },\n        dependencies: [\"react-dom\"], // Additional dependency\n        envVars: {\n          API_URL: \"https://override.example.com\", // Override base\n          DEBUG: \"true\", // Add new\n        },\n        docs: \"Override component documentation\",\n      },\n      {\n        name: \"final-component\",\n        type: \"registry:ui\",\n        registryDependencies: [\"@override/override-component\"],\n        files: [\n          {\n            path: \"ui/component.tsx\",\n            content: \"export const Component = () => <div>Final</div>\",\n            type: \"registry:ui\",\n          },\n        ],\n        cssVars: {\n          light: {\n            \"--background\": \"#e0e0e0\", // Override again\n          },\n        },\n        css: {\n          \".component\": {\n            margin: \"1rem\", // Override base margin\n          },\n        },\n        envVars: {\n          APP_NAME: \"Final App\", // Override base\n        },\n        docs: \"Final component documentation\",\n      },\n    ],\n    { port: 4460 }\n  )\n\n  beforeAll(async () => {\n    await overrideRegistry.start()\n  })\n\n  afterAll(async () => {\n    await overrideRegistry.stop()\n  })\n\n  test(\"should apply last-wins for overlapping CSS properties\", async () => {\n    const config = {\n      style: \"default\",\n      rsc: false,\n      tsx: false,\n      aliases: {\n        components: \"./components\",\n        utils: \"./lib/utils\",\n        ui: \"./components/ui\",\n      },\n      tailwind: {\n        baseColor: \"neutral\",\n        css: \"globals.css\",\n        cssVariables: false,\n      },\n      registries: {\n        \"@override\": \"http://localhost:4460/r/{name}.json\",\n      },\n      resolvedPaths: {\n        cwd: process.cwd(),\n        tailwindConfig: \"./tailwind.config.js\",\n        tailwindCss: \"./globals.css\",\n        utils: \"./lib/utils\",\n        components: \"./components\",\n        lib: \"./lib\",\n        hooks: \"./hooks\",\n        ui: \"./components/ui\",\n      },\n    }\n\n    const result = await resolveRegistryTree(\n      [\"@override/final-component\"],\n      config\n    )\n\n    // Check files - should only have the final version\n    expect(result?.files).toHaveLength(1)\n    expect(result?.files?.[0]).toMatchObject({\n      path: \"ui/component.tsx\",\n      content: \"export const Component = () => <div>Final</div>\",\n    })\n\n    // Check CSS - properties should be merged with later values overriding\n    expect(result?.css).toMatchInlineSnapshot(`\n      {\n        \".component\": {\n          \"border\": \"1px solid\",\n          \"margin\": \"1rem\",\n          \"padding\": \"2rem\",\n        },\n      }\n    `)\n\n    // Check cssVars - later values should override earlier ones\n    expect(result?.cssVars).toMatchInlineSnapshot(`\n      {\n        \"dark\": {\n          \"--background\": \"#1a1a1a\",\n          \"--foreground\": \"#ffffff\",\n        },\n        \"light\": {\n          \"--background\": \"#e0e0e0\",\n          \"--foreground\": \"#000000\",\n          \"--primary\": \"#0066cc\",\n        },\n      }\n    `)\n\n    // Check envVars - later values should override\n    expect(result?.envVars).toMatchInlineSnapshot(`\n      {\n        \"API_URL\": \"https://override.example.com\",\n        \"APP_NAME\": \"Final App\",\n        \"DEBUG\": \"true\",\n      }\n    `)\n\n    // Check dependencies - all should be included\n    expect(result?.dependencies).toEqual([\"react\", \"clsx\", \"react-dom\"])\n\n    // Check docs - all should be concatenated\n    expect(result?.docs).toMatchInlineSnapshot(`\n      \"Base component documentation\n      Override component documentation\n      Final component documentation\n      \"\n    `)\n  })\n\n  test(\"should handle multiple items where last wins\", async () => {\n    const config = {\n      style: \"default\",\n      rsc: false,\n      tsx: false,\n      aliases: {\n        components: \"./components\",\n        utils: \"./lib/utils\",\n        ui: \"./components/ui\",\n      },\n      tailwind: {\n        baseColor: \"neutral\",\n        css: \"globals.css\",\n        cssVariables: false,\n      },\n      registries: {\n        \"@override\": \"http://localhost:4460/r/{name}.json\",\n      },\n      resolvedPaths: {\n        cwd: process.cwd(),\n        tailwindConfig: \"./tailwind.config.js\",\n        tailwindCss: \"./globals.css\",\n        utils: \"./lib/utils\",\n        components: \"./components\",\n        lib: \"./lib\",\n        hooks: \"./hooks\",\n        ui: \"./components/ui\",\n      },\n    }\n\n    // Request multiple items that have the same file path\n    const result = await resolveRegistryTree(\n      [\"@override/base-component\", \"@override/override-component\"],\n      config\n    )\n\n    // Files should deduplicate with last one winning\n    expect(result?.files).toHaveLength(1)\n    expect(result?.files?.[0]).toMatchObject({\n      path: \"ui/component.tsx\",\n      content: \"export const Component = () => <div>Override</div>\", // Override wins\n    })\n\n    // CSS should merge with override winning for same properties\n    expect(result?.css?.[\".component\"]).toMatchObject({\n      padding: \"2rem\", // Override wins\n      margin: \"0.5rem\", // From base (not overridden)\n      border: \"1px solid\", // From override (new property)\n    })\n\n    // cssVars should merge with override winning\n    expect(result?.cssVars?.light).toMatchObject({\n      \"--background\": \"#f0f0f0\", // Override wins\n      \"--foreground\": \"#000000\", // From base (not overridden)\n      \"--primary\": \"#0066cc\", // From override (new property)\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/resolver.ts",
    "content": "import { createHash } from \"crypto\"\nimport path from \"path\"\nimport {\n  getRegistryBaseColor,\n  getShadcnRegistryIndex,\n} from \"@/src/registry/api\"\nimport {\n  buildUrlAndHeadersForRegistryItem,\n  resolveRegistryUrl,\n} from \"@/src/registry/builder\"\nimport { setRegistryHeaders } from \"@/src/registry/context\"\nimport {\n  RegistryNotConfiguredError,\n  RegistryParseError,\n} from \"@/src/registry/errors\"\nimport { fetchRegistry, fetchRegistryLocal } from \"@/src/registry/fetcher\"\nimport { parseRegistryAndItemFromString } from \"@/src/registry/parser\"\nimport {\n  deduplicateFilesByTarget,\n  isLocalFile,\n  isUrl,\n} from \"@/src/registry/utils\"\nimport {\n  RegistryFontItem,\n  registryItemCommonSchema,\n  registryItemFontSchema,\n  registryItemSchema,\n  registryItemTypeSchema,\n  registryResolvedItemsTreeSchema,\n} from \"@/src/schema\"\nimport { Config, getTargetStyleFromConfig } from \"@/src/utils/get-config\"\nimport { getProjectTailwindVersionFromConfig } from \"@/src/utils/get-project-info\"\nimport { buildTailwindThemeColorsFromCssVars } from \"@/src/utils/updaters/update-tailwind-config\"\nimport deepmerge from \"deepmerge\"\nimport { z } from \"zod\"\n\nexport function resolveRegistryItemsFromRegistries(\n  items: string[],\n  config: Config\n) {\n  const registryHeaders: Record<string, Record<string, string>> = {}\n  const resolvedItems = [...items]\n\n  if (!config?.registries) {\n    setRegistryHeaders({})\n    return resolvedItems\n  }\n\n  for (let i = 0; i < resolvedItems.length; i++) {\n    const resolved = buildUrlAndHeadersForRegistryItem(resolvedItems[i], config)\n\n    if (resolved) {\n      resolvedItems[i] = resolved.url\n\n      if (Object.keys(resolved.headers).length > 0) {\n        registryHeaders[resolved.url] = resolved.headers\n      }\n    }\n  }\n\n  setRegistryHeaders(registryHeaders)\n\n  return resolvedItems\n}\n\n// Internal function that fetches registry items without clearing context.\n// This is used for recursive dependency resolution.\nexport async function fetchRegistryItems(\n  items: string[],\n  config: Config,\n  options: { useCache?: boolean } = {}\n) {\n  const results = await Promise.all(\n    items.map(async (item) => {\n      if (isLocalFile(item)) {\n        return fetchRegistryLocal(item)\n      }\n\n      if (isUrl(item)) {\n        const [result] = await fetchRegistry([item], options)\n        try {\n          return registryItemSchema.parse(result)\n        } catch (error) {\n          throw new RegistryParseError(item, error)\n        }\n      }\n\n      if (item.startsWith(\"@\") && config?.registries) {\n        const paths = resolveRegistryItemsFromRegistries([item], config)\n        const [result] = await fetchRegistry(paths, options)\n        try {\n          return registryItemSchema.parse(result)\n        } catch (error) {\n          throw new RegistryParseError(item, error)\n        }\n      }\n\n      const path = `styles/${config?.style ?? \"new-york-v4\"}/${item}.json`\n      const [result] = await fetchRegistry([path], options)\n      try {\n        return registryItemSchema.parse(result)\n      } catch (error) {\n        throw new RegistryParseError(item, error)\n      }\n    })\n  )\n\n  return results\n}\n\n// Helper schema for items with source tracking.\nconst registryItemWithSourceSchema = registryItemCommonSchema\n  .extend({\n    type: registryItemTypeSchema,\n    _source: z.string().optional(),\n    // Optional fields for specific item types.\n    font: registryItemFontSchema.optional(),\n    config: z.any().optional(),\n  })\n  .passthrough()\n\n// Resolves a list of registry items with all their dependencies and returns\n// a complete installation bundle with merged configuration.\nexport async function resolveRegistryTree(\n  names: z.infer<typeof registryItemSchema>[\"name\"][],\n  config: Config,\n  options: { useCache?: boolean } = {}\n) {\n  options = {\n    useCache: true,\n    ...options,\n  }\n\n  let payload: z.infer<typeof registryItemWithSourceSchema>[] = []\n  let allDependencyItems: z.infer<typeof registryItemWithSourceSchema>[] = []\n  let allDependencyRegistryNames: string[] = []\n\n  const uniqueNames = Array.from(new Set(names))\n\n  const results = await fetchRegistryItems(uniqueNames, config, options)\n\n  const resultMap = new Map<string, z.infer<typeof registryItemSchema>>()\n  for (let i = 0; i < results.length; i++) {\n    if (results[i]) {\n      resultMap.set(uniqueNames[i], results[i])\n    }\n  }\n\n  for (const [sourceName, item] of Array.from(resultMap.entries())) {\n    // Add source tracking\n    const itemWithSource: z.infer<typeof registryItemWithSourceSchema> = {\n      ...item,\n      _source: sourceName,\n    }\n    payload.push(itemWithSource)\n\n    if (item.registryDependencies) {\n      // Resolve namespace syntax and set headers for dependencies\n      let resolvedDependencies = item.registryDependencies\n\n      // Check for namespaced dependencies when no registries are configured\n      if (!config?.registries) {\n        const namespacedDeps = item.registryDependencies.filter((dep: string) =>\n          dep.startsWith(\"@\")\n        )\n        if (namespacedDeps.length > 0) {\n          const { registry } = parseRegistryAndItemFromString(namespacedDeps[0])\n          throw new RegistryNotConfiguredError(registry)\n        }\n      } else {\n        resolvedDependencies = resolveRegistryItemsFromRegistries(\n          item.registryDependencies,\n          config\n        )\n      }\n\n      const { items, registryNames } = await resolveDependenciesRecursively(\n        resolvedDependencies,\n        config,\n        options,\n        new Set(uniqueNames)\n      )\n      allDependencyItems.push(...items)\n      allDependencyRegistryNames.push(...registryNames)\n    }\n  }\n\n  payload.push(...allDependencyItems)\n\n  // Handle any remaining registry names that need index resolution\n  if (allDependencyRegistryNames.length > 0) {\n    // Remove duplicates from registry names\n    const uniqueRegistryNames = Array.from(new Set(allDependencyRegistryNames))\n\n    // Separate namespaced and non-namespaced items\n    const nonNamespacedItems = uniqueRegistryNames.filter(\n      (name) => !name.startsWith(\"@\")\n    )\n    const namespacedDepItems = uniqueRegistryNames.filter((name) =>\n      name.startsWith(\"@\")\n    )\n\n    // Handle namespaced dependency items\n    if (namespacedDepItems.length > 0) {\n      // This will now throw specific errors on failure\n      const depResults = await fetchRegistryItems(\n        namespacedDepItems,\n        config,\n        options\n      )\n\n      for (let i = 0; i < depResults.length; i++) {\n        const item = depResults[i]\n        const itemWithSource: z.infer<typeof registryItemWithSourceSchema> = {\n          ...item,\n          _source: namespacedDepItems[i],\n        }\n        payload.push(itemWithSource)\n      }\n    }\n\n    // For non-namespaced items, we need the index and style resolution\n    if (nonNamespacedItems.length > 0) {\n      const index = await getShadcnRegistryIndex()\n      if (!index && payload.length === 0) {\n        return null\n      }\n\n      if (index) {\n        // If we're resolving the index, we want it to go first\n        if (nonNamespacedItems.includes(\"index\")) {\n          nonNamespacedItems.unshift(\"index\")\n        }\n\n        // Resolve non-namespaced items through the existing flow\n        // Get URLs for all registry items including their dependencies\n        const registryUrls: string[] = []\n        for (const name of nonNamespacedItems) {\n          const itemDependencies = await resolveRegistryDependencies(\n            name,\n            config,\n            options\n          )\n          registryUrls.push(...itemDependencies)\n        }\n\n        // Deduplicate URLs\n        const uniqueUrls = Array.from(new Set(registryUrls))\n        let result = await fetchRegistry(uniqueUrls, options)\n        const registryPayload = z.array(registryItemSchema).parse(result)\n        payload.push(...registryPayload)\n      }\n    }\n  }\n\n  if (!payload.length) {\n    return null\n  }\n\n  // No deduplication - we want to support multiple items with the same name from different sources\n\n  // If we're resolving the index, we want to fetch\n  // the theme item if a base color is provided.\n  // We do this for index only.\n  // Other components will ship with their theme tokens.\n  if (\n    uniqueNames.includes(\"index\") ||\n    allDependencyRegistryNames.includes(\"index\")\n  ) {\n    if (config.tailwind.baseColor) {\n      const theme = await registryGetTheme(config.tailwind.baseColor, config)\n      if (theme) {\n        payload.unshift(theme)\n      }\n    }\n  }\n\n  // Build source map for topological sort.\n  const sourceMap = new Map<\n    z.infer<typeof registryItemWithSourceSchema>,\n    string\n  >()\n  payload.forEach((item) => {\n    // Use the _source property if it was added, otherwise use the name.\n    const source = item._source || item.name\n    sourceMap.set(item, source)\n  })\n\n  // Apply topological sort to ensure dependencies come before dependents.\n  payload = topologicalSortRegistryItems(payload, sourceMap)\n\n  // Sort the payload so that registry:theme items come first,\n  // while maintaining the relative order of all items.\n  payload.sort((a, b) => {\n    if (a.type === \"registry:theme\" && b.type !== \"registry:theme\") {\n      return -1\n    }\n    if (a.type !== \"registry:theme\" && b.type === \"registry:theme\") {\n      return 1\n    }\n    return 0\n  })\n\n  let tailwind = {}\n  payload.forEach((item) => {\n    tailwind = deepmerge(tailwind, item.tailwind ?? {})\n  })\n\n  let cssVars = {}\n  payload.forEach((item) => {\n    cssVars = deepmerge(cssVars, item.cssVars ?? {})\n  })\n\n  let css = {}\n  payload.forEach((item) => {\n    css = deepmerge(css, item.css ?? {})\n  })\n\n  let docs = \"\"\n  payload.forEach((item) => {\n    if (item.docs) {\n      docs += `${item.docs}\\n`\n    }\n  })\n\n  let envVars = {}\n  payload.forEach((item) => {\n    envVars = deepmerge(envVars, item.envVars ?? {})\n  })\n\n  // Deduplicate files based on resolved target paths.\n  const deduplicatedFiles = await deduplicateFilesByTarget(\n    payload.map((item) => item.files ?? []),\n    config\n  )\n\n  // Collect font items.\n  const fonts: RegistryFontItem[] = payload\n    .filter((item) => item.type === \"registry:font\" && item.font)\n    .map((item) => ({\n      ...item,\n      type: \"registry:font\" as const,\n      font: item.font!,\n    }))\n\n  const parsed = registryResolvedItemsTreeSchema.parse({\n    dependencies: deepmerge.all(payload.map((item) => item.dependencies ?? [])),\n    devDependencies: deepmerge.all(\n      payload.map((item) => item.devDependencies ?? [])\n    ),\n    files: deduplicatedFiles,\n    tailwind,\n    cssVars,\n    css,\n    docs,\n    fonts: fonts.length > 0 ? fonts : undefined,\n  })\n\n  if (Object.keys(envVars).length > 0) {\n    parsed.envVars = envVars\n  }\n\n  return parsed\n}\n\nasync function resolveDependenciesRecursively(\n  dependencies: string[],\n  config: Config,\n  options: { useCache?: boolean } = {},\n  visited: Set<string> = new Set()\n) {\n  const items: z.infer<typeof registryItemSchema>[] = []\n  const registryNames: string[] = []\n\n  for (const dep of dependencies) {\n    if (visited.has(dep)) {\n      continue\n    }\n    visited.add(dep)\n\n    // Handle URLs and local files directly.\n    if (isUrl(dep) || isLocalFile(dep)) {\n      const [item] = await fetchRegistryItems([dep], config, options)\n      if (item) {\n        items.push(item)\n        if (item.registryDependencies) {\n          // Resolve namespaced dependencies to set proper headers.\n          const resolvedDeps = config?.registries\n            ? resolveRegistryItemsFromRegistries(\n                item.registryDependencies,\n                config\n              )\n            : item.registryDependencies\n\n          const nested = await resolveDependenciesRecursively(\n            resolvedDeps,\n            config,\n            options,\n            visited\n          )\n          items.push(...nested.items)\n          registryNames.push(...nested.registryNames)\n        }\n      }\n    }\n    // Handle namespaced items (e.g., @one/foo, @two/bar).\n    else if (dep.startsWith(\"@\") && config?.registries) {\n      // Check if the registry exists.\n      const { registry } = parseRegistryAndItemFromString(dep)\n      if (registry && !(registry in config.registries)) {\n        throw new RegistryNotConfiguredError(registry)\n      }\n\n      // Let getRegistryItem handle the namespaced item with config\n      // This ensures proper authentication headers are used\n      const [item] = await fetchRegistryItems([dep], config, options)\n      if (item) {\n        items.push(item)\n        if (item.registryDependencies) {\n          // Resolve namespaced dependencies to set proper headers.\n          const resolvedDeps = config?.registries\n            ? resolveRegistryItemsFromRegistries(\n                item.registryDependencies,\n                config\n              )\n            : item.registryDependencies\n\n          const nested = await resolveDependenciesRecursively(\n            resolvedDeps,\n            config,\n            options,\n            visited\n          )\n          items.push(...nested.items)\n          registryNames.push(...nested.registryNames)\n        }\n      }\n    }\n    // Handle regular component names.\n    else {\n      registryNames.push(dep)\n\n      if (config) {\n        try {\n          const [item] = await fetchRegistryItems([dep], config, options)\n          if (item && item.registryDependencies) {\n            // Resolve namespaced dependencies to set proper headers.\n            const resolvedDeps = config?.registries\n              ? resolveRegistryItemsFromRegistries(\n                  item.registryDependencies,\n                  config\n                )\n              : item.registryDependencies\n\n            const nested = await resolveDependenciesRecursively(\n              resolvedDeps,\n              config,\n              options,\n              visited\n            )\n            items.push(...nested.items)\n            registryNames.push(...nested.registryNames)\n          }\n        } catch (error) {\n          // If we can't fetch the registry item, that's okay - we'll still\n          // include the name.\n        }\n      }\n    }\n  }\n\n  return { items, registryNames }\n}\n\nasync function resolveRegistryDependencies(\n  url: string,\n  config: Config,\n  options: { useCache?: boolean } = {}\n) {\n  if (isUrl(url)) {\n    return [url]\n  }\n\n  const { registryNames } = await resolveDependenciesRecursively(\n    [url],\n    config,\n    options,\n    new Set()\n  )\n\n  const style = config.resolvedPaths?.cwd\n    ? await getTargetStyleFromConfig(config.resolvedPaths.cwd, config.style)\n    : config.style\n\n  const urls = registryNames.map((name) =>\n    resolveRegistryUrl(isUrl(name) ? name : `styles/${style}/${name}.json`)\n  )\n\n  return Array.from(new Set(urls))\n}\n\nasync function registryGetTheme(name: string, config: Config) {\n  const [baseColor, tailwindVersion] = await Promise.all([\n    getRegistryBaseColor(name),\n    getProjectTailwindVersionFromConfig(config),\n  ])\n  if (!baseColor) {\n    return null\n  }\n\n  // TODO: Move this to the registry i.e registry:theme.\n  const theme = {\n    name,\n    type: \"registry:theme\",\n    tailwind: {\n      config: {\n        theme: {\n          extend: {\n            borderRadius: {\n              lg: \"var(--radius)\",\n              md: \"calc(var(--radius) - 2px)\",\n              sm: \"calc(var(--radius) - 4px)\",\n            },\n            colors: {},\n          },\n        },\n      },\n    },\n    cssVars: {\n      theme: {},\n      light: {\n        radius: \"0.5rem\",\n      },\n      dark: {},\n    },\n  } satisfies z.infer<typeof registryItemSchema>\n\n  if (config.tailwind.cssVariables) {\n    theme.tailwind.config.theme.extend.colors = {\n      ...theme.tailwind.config.theme.extend.colors,\n      ...buildTailwindThemeColorsFromCssVars(baseColor.cssVars.dark ?? {}),\n    }\n    theme.cssVars = {\n      theme: {\n        ...baseColor.cssVars.theme,\n        ...theme.cssVars.theme,\n      },\n      light: {\n        ...baseColor.cssVars.light,\n        ...theme.cssVars.light,\n      },\n      dark: {\n        ...baseColor.cssVars.dark,\n        ...theme.cssVars.dark,\n      },\n    }\n\n    if (tailwindVersion === \"v4\" && baseColor.cssVarsV4) {\n      theme.cssVars = {\n        theme: {\n          ...baseColor.cssVarsV4.theme,\n          ...theme.cssVars.theme,\n        },\n        light: {\n          radius: \"0.625rem\",\n          ...baseColor.cssVarsV4.light,\n        },\n        dark: {\n          ...baseColor.cssVarsV4.dark,\n        },\n      }\n    }\n  }\n\n  return theme\n}\n\nfunction computeItemHash(\n  item: Pick<z.infer<typeof registryItemSchema>, \"name\">,\n  source?: string\n) {\n  const identifier = source || item.name\n\n  const hash = createHash(\"sha256\")\n    .update(identifier)\n    .digest(\"hex\")\n    .substring(0, 8)\n\n  return `${item.name}::${hash}`\n}\n\nfunction extractItemIdentifierFromDependency(dependency: string) {\n  if (isUrl(dependency)) {\n    const url = new URL(dependency)\n    const pathname = url.pathname\n    const match = pathname.match(/\\/([^/]+)\\.json$/)\n    const name = match ? match[1] : path.basename(pathname, \".json\")\n\n    return {\n      name,\n      hash: computeItemHash({ name }, dependency),\n    }\n  }\n\n  if (isLocalFile(dependency)) {\n    const match = dependency.match(/\\/([^/]+)\\.json$/)\n    const name = match ? match[1] : path.basename(dependency, \".json\")\n\n    return {\n      name,\n      hash: computeItemHash({ name }, dependency),\n    }\n  }\n\n  const { item } = parseRegistryAndItemFromString(dependency)\n  return {\n    name: item,\n    hash: computeItemHash({ name: item }, dependency),\n  }\n}\n\nfunction topologicalSortRegistryItems(\n  items: z.infer<typeof registryItemWithSourceSchema>[],\n  sourceMap: Map<z.infer<typeof registryItemWithSourceSchema>, string>\n) {\n  const itemMap = new Map<\n    string,\n    z.infer<typeof registryItemWithSourceSchema>\n  >()\n  const hashToItem = new Map<\n    string,\n    z.infer<typeof registryItemWithSourceSchema>\n  >()\n  const inDegree = new Map<string, number>()\n  const adjacencyList = new Map<string, string[]>()\n\n  items.forEach((item) => {\n    const source = sourceMap.get(item) || item.name\n    const hash = computeItemHash(item, source)\n\n    itemMap.set(hash, item)\n    hashToItem.set(hash, item)\n    inDegree.set(hash, 0)\n    adjacencyList.set(hash, [])\n  })\n\n  // Build a map of dependency to possible items.\n  const depToHashes = new Map<string, string[]>()\n  items.forEach((item) => {\n    const source = sourceMap.get(item) || item.name\n    const hash = computeItemHash(item, source)\n\n    if (!depToHashes.has(item.name)) {\n      depToHashes.set(item.name, [])\n    }\n    depToHashes.get(item.name)!.push(hash)\n\n    if (source !== item.name) {\n      if (!depToHashes.has(source)) {\n        depToHashes.set(source, [])\n      }\n      depToHashes.get(source)!.push(hash)\n    }\n  })\n\n  items.forEach((item) => {\n    const itemSource = sourceMap.get(item) || item.name\n    const itemHash = computeItemHash(item, itemSource)\n\n    if (item.registryDependencies) {\n      item.registryDependencies.forEach((dep) => {\n        let depHash: string | undefined\n\n        const exactMatches = depToHashes.get(dep) || []\n        if (exactMatches.length === 1) {\n          depHash = exactMatches[0]\n        } else if (exactMatches.length > 1) {\n          // Multiple matches - try to disambiguate.\n          // For now, just use the first one and warn.\n          depHash = exactMatches[0]\n        } else {\n          const { name } = extractItemIdentifierFromDependency(dep)\n          const nameMatches = depToHashes.get(name) || []\n          if (nameMatches.length > 0) {\n            depHash = nameMatches[0]\n          }\n        }\n\n        if (depHash && itemMap.has(depHash)) {\n          adjacencyList.get(depHash)!.push(itemHash)\n          inDegree.set(itemHash, inDegree.get(itemHash)! + 1)\n        }\n      })\n    }\n  })\n\n  // Implements Kahn's algorithm.\n  const queue: string[] = []\n  const sorted: z.infer<typeof registryItemWithSourceSchema>[] = []\n\n  inDegree.forEach((degree, hash) => {\n    if (degree === 0) {\n      queue.push(hash)\n    }\n  })\n\n  while (queue.length > 0) {\n    const currentHash = queue.shift()!\n    const item = itemMap.get(currentHash)!\n    sorted.push(item)\n\n    adjacencyList.get(currentHash)!.forEach((dependentHash) => {\n      const newDegree = inDegree.get(dependentHash)! - 1\n      inDegree.set(dependentHash, newDegree)\n\n      if (newDegree === 0) {\n        queue.push(dependentHash)\n      }\n    })\n  }\n\n  if (sorted.length !== items.length) {\n    // console.warn(\"Circular dependency detected in registry items\")\n    // Return all items even if there are circular dependencies\n    // Items not in sorted are part of circular dependencies\n    const sortedHashes = new Set(\n      sorted.map((item) => {\n        const source = sourceMap.get(item) || item.name\n        return computeItemHash(item, source)\n      })\n    )\n\n    items.forEach((item) => {\n      const source = sourceMap.get(item) || item.name\n      const hash = computeItemHash(item, source)\n      if (!sortedHashes.has(hash)) {\n        sorted.push(item)\n      }\n    })\n  }\n\n  return sorted\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/schema.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport { registryConfigSchema } from \"./schema\"\n\ndescribe(\"registryConfigSchema\", () => {\n  it(\"should accept valid registry names starting with @\", () => {\n    const validConfig = {\n      \"@v0\": \"https://v0.dev/{name}.json\",\n      \"@acme\": {\n        url: \"https://acme.com/{name}.json\",\n        headers: {\n          Authorization: \"Bearer token\",\n        },\n      },\n    }\n\n    const result = registryConfigSchema.safeParse(validConfig)\n    expect(result.success).toBe(true)\n  })\n\n  it(\"should reject registry names not starting with @\", () => {\n    const invalidConfig = {\n      v0: \"https://v0.dev/{name}.json\",\n      acme: \"https://acme.com/{name}.json\",\n    }\n\n    const result = registryConfigSchema.safeParse(invalidConfig)\n    expect(result.success).toBe(false)\n    if (!result.success) {\n      expect(result.error.errors[0].message).toContain(\n        \"Registry names must start with @\"\n      )\n    }\n  })\n\n  it(\"should reject URLs without {name} placeholder\", () => {\n    const invalidConfig = {\n      \"@v0\": \"https://v0.dev/component.json\",\n    }\n\n    const result = registryConfigSchema.safeParse(invalidConfig)\n    expect(result.success).toBe(false)\n    if (!result.success) {\n      expect(result.error.errors[0].message).toContain(\n        \"Registry URL must include {name} placeholder\"\n      )\n    }\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/schema.ts",
    "content": "import { z } from \"zod\"\n\n// Note: if you edit the schema here, you must also edit the schema in the\n// apps/v4/public/schema/registry-item.json file.\n\nexport const registryConfigItemSchema = z.union([\n  // Simple string format: \"https://example.com/{name}.json\"\n  z.string().refine((s) => s.includes(\"{name}\"), {\n    message: \"Registry URL must include {name} placeholder\",\n  }),\n  // Advanced object format with auth options\n  z.object({\n    url: z.string().refine((s) => s.includes(\"{name}\"), {\n      message: \"Registry URL must include {name} placeholder\",\n    }),\n    params: z.record(z.string(), z.string()).optional(),\n    headers: z.record(z.string(), z.string()).optional(),\n  }),\n])\n\nexport const registryConfigSchema = z.record(\n  z.string().refine((key) => key.startsWith(\"@\"), {\n    message: \"Registry names must start with @ (e.g., @v0, @acme)\",\n  }),\n  registryConfigItemSchema\n)\n\nexport const rawConfigSchema = z\n  .object({\n    $schema: z.string().optional(),\n    style: z.string(),\n    rsc: z.coerce.boolean().default(false),\n    tsx: z.coerce.boolean().default(true),\n    tailwind: z.object({\n      config: z.string().optional(),\n      css: z.string(),\n      baseColor: z.string(),\n      cssVariables: z.boolean().default(true),\n      prefix: z.string().default(\"\").optional(),\n    }),\n    iconLibrary: z.string().optional(),\n    rtl: z.coerce.boolean().default(false).optional(),\n    menuColor: z\n      .enum([\n        \"default\",\n        \"inverted\",\n        \"default-translucent\",\n        \"inverted-translucent\",\n      ])\n      .default(\"default\")\n      .optional(),\n    menuAccent: z.enum([\"subtle\", \"bold\"]).default(\"subtle\").optional(),\n    aliases: z.object({\n      components: z.string(),\n      utils: z.string(),\n      ui: z.string().optional(),\n      lib: z.string().optional(),\n      hooks: z.string().optional(),\n    }),\n    registries: registryConfigSchema.optional(),\n  })\n  .strict()\n\nexport const configSchema = rawConfigSchema.extend({\n  resolvedPaths: z.object({\n    cwd: z.string(),\n    tailwindConfig: z.string(),\n    tailwindCss: z.string(),\n    utils: z.string(),\n    components: z.string(),\n    lib: z.string(),\n    hooks: z.string(),\n    ui: z.string(),\n  }),\n})\n\n// TODO: type the key.\n// Okay for now since I don't want a breaking change.\nexport const workspaceConfigSchema = z.record(configSchema)\n\nexport const registryItemTypeSchema = z.enum([\n  \"registry:lib\",\n  \"registry:block\",\n  \"registry:component\",\n  \"registry:ui\",\n  \"registry:hook\",\n  \"registry:page\",\n  \"registry:file\",\n  \"registry:theme\",\n  \"registry:style\",\n  \"registry:item\",\n  \"registry:base\",\n  \"registry:font\",\n\n  // Internal use only.\n  \"registry:example\",\n  \"registry:internal\",\n])\n\nexport const registryItemFileSchema = z.discriminatedUnion(\"type\", [\n  // Target is required for registry:file and registry:page\n  z.object({\n    path: z.string(),\n    content: z.string().optional(),\n    type: z.enum([\"registry:file\", \"registry:page\"]),\n    target: z.string(),\n  }),\n  z.object({\n    path: z.string(),\n    content: z.string().optional(),\n    type: registryItemTypeSchema.exclude([\"registry:file\", \"registry:page\"]),\n    target: z.string().optional(),\n  }),\n])\n\nexport const registryItemTailwindSchema = z.object({\n  config: z\n    .object({\n      content: z.array(z.string()).optional(),\n      theme: z.record(z.string(), z.any()).optional(),\n      plugins: z.array(z.string()).optional(),\n    })\n    .optional(),\n})\n\nexport const registryItemCssVarsSchema = z.object({\n  theme: z.record(z.string(), z.string()).optional(),\n  light: z.record(z.string(), z.string()).optional(),\n  dark: z.record(z.string(), z.string()).optional(),\n})\n\n// Recursive type for CSS properties that supports empty objects at any level.\nconst cssValueSchema: z.ZodType<any> = z.lazy(() =>\n  z.union([\n    z.string(),\n    z.array(z.union([z.string(), z.record(z.string(), z.string())])),\n    z.record(z.string(), cssValueSchema),\n  ])\n)\n\nexport const registryItemCssSchema = z.record(z.string(), cssValueSchema)\n\nexport const registryItemEnvVarsSchema = z.record(z.string(), z.string())\n\n// Font metadata schema for registry:font items.\nexport const registryItemFontSchema = z.object({\n  family: z.string(),\n  provider: z.literal(\"google\"),\n  import: z.string(),\n  variable: z.string(),\n  weight: z.array(z.string()).optional(),\n  subsets: z.array(z.string()).optional(),\n  selector: z.string().optional(),\n  dependency: z.string().optional(),\n})\n\n// Common fields shared by all registry items.\nexport const registryItemCommonSchema = z.object({\n  $schema: z.string().optional(),\n  extends: z.string().optional(),\n  name: z.string(),\n  title: z.string().optional(),\n  author: z.string().min(2).optional(),\n  description: z.string().optional(),\n  dependencies: z.array(z.string()).optional(),\n  devDependencies: z.array(z.string()).optional(),\n  registryDependencies: z.array(z.string()).optional(),\n  files: z.array(registryItemFileSchema).optional(),\n  tailwind: registryItemTailwindSchema.optional(),\n  cssVars: registryItemCssVarsSchema.optional(),\n  css: registryItemCssSchema.optional(),\n  envVars: registryItemEnvVarsSchema.optional(),\n  meta: z.record(z.string(), z.any()).optional(),\n  docs: z.string().optional(),\n  categories: z.array(z.string()).optional(),\n})\n\n// registry:base has a config field, registry:font has a font field.\nexport const registryItemSchema = z.discriminatedUnion(\"type\", [\n  registryItemCommonSchema.extend({\n    type: z.literal(\"registry:base\"),\n    config: rawConfigSchema.deepPartial().optional(),\n  }),\n  registryItemCommonSchema.extend({\n    type: z.literal(\"registry:font\"),\n    font: registryItemFontSchema,\n  }),\n  registryItemCommonSchema.extend({\n    type: registryItemTypeSchema.exclude([\"registry:base\", \"registry:font\"]),\n  }),\n])\n\nexport type RegistryItem = z.infer<typeof registryItemSchema>\n\n// Helper type for registry:base items specifically.\nexport type RegistryBaseItem = Extract<RegistryItem, { type: \"registry:base\" }>\n\n// Helper type for registry:font items specifically.\nexport type RegistryFontItem = Extract<RegistryItem, { type: \"registry:font\" }>\n\nexport const registrySchema = z.object({\n  name: z.string(),\n  homepage: z.string(),\n  items: z.array(registryItemSchema),\n})\n\nexport type Registry = z.infer<typeof registrySchema>\n\nexport const registryIndexSchema = z.array(registryItemSchema)\n\nexport const stylesSchema = z.array(\n  z.object({\n    name: z.string(),\n    label: z.string(),\n  })\n)\n\nexport const iconsSchema = z.record(\n  z.string(),\n  z.record(z.string(), z.string())\n)\n\nexport const registryBaseColorSchema = z.object({\n  inlineColors: z.object({\n    light: z.record(z.string(), z.string()),\n    dark: z.record(z.string(), z.string()),\n  }),\n  cssVars: registryItemCssVarsSchema,\n  cssVarsV4: registryItemCssVarsSchema.optional(),\n  inlineColorsTemplate: z.string(),\n  cssVarsTemplate: z.string(),\n})\n\nexport const registryResolvedItemsTreeSchema = registryItemCommonSchema\n  .pick({\n    dependencies: true,\n    devDependencies: true,\n    files: true,\n    tailwind: true,\n    cssVars: true,\n    css: true,\n    envVars: true,\n    docs: true,\n  })\n  .extend({\n    fonts: z\n      .array(\n        registryItemCommonSchema.extend({\n          type: z.literal(\"registry:font\"),\n          font: registryItemFontSchema,\n        })\n      )\n      .optional(),\n  })\n\nexport const searchResultItemSchema = z.object({\n  name: z.string(),\n  type: z.string().optional(),\n  description: z.string().optional(),\n  registry: z.string(),\n  addCommandArgument: z.string(),\n})\n\nexport const searchResultsSchema = z.object({\n  pagination: z.object({\n    total: z.number(),\n    offset: z.number(),\n    limit: z.number(),\n    hasMore: z.boolean(),\n  }),\n  items: z.array(searchResultItemSchema),\n})\n\n// Legacy schema for getRegistriesIndex() backward compatibility.\nexport const registriesIndexSchema = z.record(\n  z.string().regex(/^@[a-zA-Z0-9][a-zA-Z0-9-_]*$/),\n  z.string()\n)\n\n// New schema for getRegistries().\nexport const registriesSchema = z.array(\n  z.object({\n    name: z.string(),\n    homepage: z.string().optional(),\n    url: z.string(),\n    description: z.string().optional(),\n  })\n)\n\nexport const presetSchema = z.object({\n  name: z.string(),\n  title: z.string(),\n  description: z.string(),\n  base: z.string(),\n  style: z.string(),\n  baseColor: z.string(),\n  theme: z.string(),\n  iconLibrary: z.string(),\n  font: z.string(),\n  rtl: z.coerce.boolean().default(false),\n  menuAccent: z.enum([\"subtle\", \"bold\"]),\n  menuColor: z.enum([\n    \"default\",\n    \"inverted\",\n    \"default-translucent\",\n    \"inverted-translucent\",\n  ]),\n  radius: z.string(),\n})\n\nexport type Preset = z.infer<typeof presetSchema>\n\nexport const configJsonSchema = z.object({\n  presets: z.array(presetSchema),\n})\n\nexport type ConfigJson = z.infer<typeof configJsonSchema>\n"
  },
  {
    "path": "packages/shadcn/src/registry/search.test.ts",
    "content": "import { describe, expect, it, vi } from \"vitest\"\n\nimport { getRegistry } from \"./api\"\nimport { buildRegistryItemNameFromRegistry, searchRegistries } from \"./search\"\n\ndescribe(\"searchRegistries\", () => {\n  it(\"should fetch and return registries in flat format\", async () => {\n    // Mock getRegistry\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async (name: string) => {\n      if (name === \"@shadcn\" || name === \"@shadcn/registry\") {\n        return {\n          name: \"shadcn/ui\",\n          homepage: \"https://ui.shadcn.com\",\n          items: [\n            {\n              name: \"button\",\n              type: \"registry:ui\",\n              description: \"A button component\",\n            },\n            {\n              name: \"card\",\n              type: \"registry:ui\",\n              description: \"A card component\",\n            },\n          ],\n        }\n      }\n      if (name === \"@custom\" || name === \"@custom/registry\") {\n        return {\n          name: \"custom/components\",\n          homepage: \"https://custom.com\",\n          items: [\n            {\n              name: \"header\",\n              type: \"registry:component\",\n              description: \"A header component\",\n            },\n          ],\n        }\n      }\n      throw new Error(`Unknown registry: ${name}`)\n    })\n\n    const results = await searchRegistries([\"@shadcn\", \"@custom\"])\n\n    expect(results).toEqual({\n      items: [\n        {\n          name: \"button\",\n          type: \"registry:ui\",\n          description: \"A button component\",\n          registry: \"@shadcn\",\n          addCommandArgument: \"@shadcn/button\",\n        },\n        {\n          name: \"card\",\n          type: \"registry:ui\",\n          description: \"A card component\",\n          registry: \"@shadcn\",\n          addCommandArgument: \"@shadcn/card\",\n        },\n        {\n          name: \"header\",\n          type: \"registry:component\",\n          description: \"A header component\",\n          registry: \"@custom\",\n          addCommandArgument: \"@custom/header\",\n        },\n      ],\n      pagination: {\n        total: 3,\n        offset: 0,\n        limit: 3,\n        hasMore: false,\n      },\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should apply search filter when query is provided\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async (name: string) => {\n      if (name === \"@shadcn\" || name === \"@shadcn/registry\") {\n        return {\n          name: \"shadcn/ui\",\n          homepage: \"https://ui.shadcn.com\",\n          items: [\n            {\n              name: \"button\",\n              type: \"registry:ui\",\n              description: \"A button component\",\n            },\n            {\n              name: \"card\",\n              type: \"registry:ui\",\n              description: \"A card component\",\n            },\n            {\n              name: \"dialog\",\n              type: \"registry:ui\",\n              description: \"A dialog component\",\n            },\n          ],\n        }\n      }\n      throw new Error(`Unknown registry: ${name}`)\n    })\n\n    const results = await searchRegistries([\"@shadcn\"], { query: \"button\" })\n\n    expect(results.items).toHaveLength(1)\n    expect(results.items[0].name).toBe(\"button\")\n    expect(results.items[0].registry).toBe(\"@shadcn\")\n    expect(results.items[0].addCommandArgument).toBe(\"@shadcn/button\")\n    expect(results.pagination).toEqual({\n      total: 1,\n      offset: 0,\n      limit: 1,\n      hasMore: false,\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should fail fast on registry error\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async (name: string) => {\n      throw new Error(`Registry not found: ${name}`)\n    })\n\n    await expect(searchRegistries([\"@unknown\"])).rejects.toThrow(\n      \"Registry not found\"\n    )\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should return empty items when search has no matches\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async () => ({\n      name: \"test/registry\",\n      homepage: \"https://test.com\",\n      items: [{ name: \"button\", type: \"registry:ui\", description: \"A button\" }],\n    }))\n\n    const results = await searchRegistries([\"@test\"], { query: \"nonexistent\" })\n\n    expect(results.items).toHaveLength(0)\n    expect(results.pagination).toEqual({\n      total: 0,\n      offset: 0,\n      limit: 0,\n      hasMore: false,\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should handle fuzzy search\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async () => ({\n      name: \"test/registry\",\n      homepage: \"https://test.com\",\n      items: [\n        {\n          name: \"button\",\n          type: \"registry:ui\",\n          description: \"A button component\",\n        },\n        {\n          name: \"dialog\",\n          type: \"registry:ui\",\n          description: \"A dialog overlay\",\n        },\n      ],\n    }))\n\n    const results = await searchRegistries([\"@test\"], { query: \"butto\" })\n\n    expect(results.items).toHaveLength(1)\n    expect(results.items[0].name).toBe(\"button\")\n    expect(results.pagination).toEqual({\n      total: 1,\n      offset: 0,\n      limit: 1,\n      hasMore: false,\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should search in descriptions\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async () => ({\n      name: \"test/registry\",\n      homepage: \"https://test.com\",\n      items: [\n        {\n          name: \"button\",\n          type: \"registry:ui\",\n          description: \"A clickable element\",\n        },\n        { name: \"dialog\", type: \"registry:ui\", description: \"A modal overlay\" },\n      ],\n    }))\n\n    const results = await searchRegistries([\"@test\"], { query: \"modal\" })\n\n    expect(results.items).toHaveLength(1)\n    expect(results.items[0].name).toBe(\"dialog\")\n    expect(results.pagination).toEqual({\n      total: 1,\n      offset: 0,\n      limit: 1,\n      hasMore: false,\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should respect limit option\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async () => ({\n      name: \"test/registry\",\n      homepage: \"https://test.com\",\n      items: [\n        { name: \"alert\", type: \"registry:ui\", description: \"Alert component\" },\n        {\n          name: \"avatar\",\n          type: \"registry:ui\",\n          description: \"Avatar component\",\n        },\n        {\n          name: \"accordion\",\n          type: \"registry:ui\",\n          description: \"Accordion component\",\n        },\n        {\n          name: \"aspect-ratio\",\n          type: \"registry:ui\",\n          description: \"Aspect ratio component\",\n        },\n      ],\n    }))\n\n    const results = await searchRegistries([\"@test\"], { query: \"a\", limit: 2 })\n\n    expect(results.items.length).toBeLessThanOrEqual(2)\n    expect(results.pagination.limit).toBe(2)\n    expect(results.pagination.offset).toBe(0)\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should handle offset and limit for pagination\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async () => ({\n      name: \"test/registry\",\n      homepage: \"https://test.com\",\n      items: [\n        { name: \"item1\", type: \"registry:ui\", description: \"Item 1\" },\n        { name: \"item2\", type: \"registry:ui\", description: \"Item 2\" },\n        { name: \"item3\", type: \"registry:ui\", description: \"Item 3\" },\n        { name: \"item4\", type: \"registry:ui\", description: \"Item 4\" },\n        { name: \"item5\", type: \"registry:ui\", description: \"Item 5\" },\n      ],\n    }))\n\n    const results = await searchRegistries([\"@test\"], { offset: 2, limit: 2 })\n\n    expect(results.items).toHaveLength(2)\n    expect(results.items[0].name).toBe(\"item3\")\n    expect(results.items[1].name).toBe(\"item4\")\n    expect(results.pagination).toEqual({\n      total: 5,\n      offset: 2,\n      limit: 2,\n      hasMore: true,\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should set hasMore to false when no more items\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async () => ({\n      name: \"test/registry\",\n      homepage: \"https://test.com\",\n      items: [\n        { name: \"item1\", type: \"registry:ui\", description: \"Item 1\" },\n        { name: \"item2\", type: \"registry:ui\", description: \"Item 2\" },\n        { name: \"item3\", type: \"registry:ui\", description: \"Item 3\" },\n      ],\n    }))\n\n    const results = await searchRegistries([\"@test\"], { offset: 2, limit: 2 })\n\n    expect(results.items).toHaveLength(1)\n    expect(results.items[0].name).toBe(\"item3\")\n    expect(results.pagination.hasMore).toBe(false)\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should handle pagination across multiple registries\", async () => {\n    vi.mock(\"./api\", () => ({\n      getRegistry: vi.fn(),\n    }))\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async (name: string) => {\n      if (name === \"@one\") {\n        return {\n          name: \"one\",\n          homepage: \"https://one.com\",\n          items: [\n            { name: \"item1\", type: \"registry:ui\", description: \"Item 1\" },\n            { name: \"item2\", type: \"registry:ui\", description: \"Item 2\" },\n            { name: \"item3\", type: \"registry:ui\", description: \"Item 3\" },\n          ],\n        }\n      }\n      if (name === \"@two\") {\n        return {\n          name: \"two\",\n          homepage: \"https://two.com\",\n          items: [\n            { name: \"item4\", type: \"registry:ui\", description: \"Item 4\" },\n            { name: \"item5\", type: \"registry:ui\", description: \"Item 5\" },\n          ],\n        }\n      }\n      throw new Error(\"Unknown registry\")\n    })\n\n    const results = await searchRegistries([\"@one\", \"@two\"], {\n      offset: 1,\n      limit: 3,\n    })\n\n    expect(results.items).toHaveLength(3)\n    expect(results.items[0].name).toBe(\"item2\")\n    expect(results.items[0].registry).toBe(\"@one\")\n    expect(results.items[1].name).toBe(\"item3\")\n    expect(results.items[1].registry).toBe(\"@one\")\n    expect(results.items[2].name).toBe(\"item4\")\n    expect(results.items[2].registry).toBe(\"@two\")\n    expect(results.pagination).toEqual({\n      total: 5,\n      offset: 1,\n      limit: 3,\n      hasMore: true,\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  // Tests for URL support\n  it(\"should search registries from direct URLs\", async () => {\n    const registryUrl1 = \"https://example.com/registry1.json\"\n    const registryUrl2 = \"https://example.com/registry2.json\"\n\n    // Mock getRegistry to handle URLs\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async (nameOrUrl: string) => {\n      if (nameOrUrl === registryUrl1) {\n        return {\n          name: \"registry1\",\n          homepage: \"https://example.com/registry1\",\n          items: [\n            {\n              name: \"component1\",\n              type: \"registry:ui\",\n              description: \"First component\",\n            },\n            {\n              name: \"component2\",\n              type: \"registry:ui\",\n              description: \"Second component\",\n            },\n          ],\n        }\n      }\n      if (nameOrUrl === registryUrl2) {\n        return {\n          name: \"registry2\",\n          homepage: \"https://example.com/registry2\",\n          items: [\n            {\n              name: \"component3\",\n              type: \"registry:ui\",\n              description: \"Third component\",\n            },\n          ],\n        }\n      }\n      throw new Error(`Unknown URL: ${nameOrUrl}`)\n    })\n\n    const results = await searchRegistries([registryUrl1, registryUrl2])\n\n    expect(results.items).toHaveLength(3)\n    expect(results.items[0]).toMatchObject({\n      name: \"component1\",\n      registry: registryUrl1,\n    })\n    expect(results.items[1]).toMatchObject({\n      name: \"component2\",\n      registry: registryUrl1,\n    })\n    expect(results.items[2]).toMatchObject({\n      name: \"component3\",\n      registry: registryUrl2,\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should handle mixed registry names and URLs\", async () => {\n    const registryName = \"@shadcn\"\n    const registryUrl = \"https://custom.com/registry.json\"\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async (nameOrUrl: string) => {\n      if (nameOrUrl === \"@shadcn\" || nameOrUrl === \"@shadcn/registry\") {\n        return {\n          name: \"shadcn/ui\",\n          homepage: \"https://ui.shadcn.com\",\n          items: [\n            {\n              name: \"button\",\n              type: \"registry:ui\",\n              description: \"A button component\",\n            },\n          ],\n        }\n      }\n      if (nameOrUrl === registryUrl) {\n        return {\n          name: \"custom\",\n          homepage: \"https://custom.com\",\n          items: [\n            {\n              name: \"custom-component\",\n              type: \"registry:ui\",\n              description: \"A custom component\",\n            },\n          ],\n        }\n      }\n      throw new Error(`Unknown registry: ${nameOrUrl}`)\n    })\n\n    const results = await searchRegistries([registryName, registryUrl], {\n      query: \"button\",\n    })\n\n    // Should find the button from @shadcn\n    expect(results.items).toHaveLength(1)\n    expect(results.items[0]).toMatchObject({\n      name: \"button\",\n      registry: registryName,\n    })\n\n    mockGetRegistry.mockRestore()\n  })\n\n  it(\"should handle URL fetch errors gracefully\", async () => {\n    const badUrl = \"https://nonexistent.com/registry.json\"\n\n    const mockGetRegistry = vi.mocked(getRegistry)\n\n    mockGetRegistry.mockImplementation(async (nameOrUrl: string) => {\n      if (nameOrUrl === badUrl) {\n        throw new Error(\"Failed to fetch registry\")\n      }\n      throw new Error(`Unknown registry: ${nameOrUrl}`)\n    })\n\n    await expect(searchRegistries([badUrl])).rejects.toThrow(\n      \"Failed to fetch registry\"\n    )\n\n    mockGetRegistry.mockRestore()\n  })\n})\n\ndescribe(\"buildRegistryItemNameFromRegistry\", () => {\n  const testCases = [\n    // Namespace registries\n    {\n      name: \"namespace registry\",\n      itemName: \"button\",\n      registry: \"@shadcn\",\n      expected: \"@shadcn/button\",\n    },\n    {\n      name: \"namespace registry with org\",\n      itemName: \"card\",\n      registry: \"@myorg\",\n      expected: \"@myorg/card\",\n    },\n\n    // URL with registry in path\n    {\n      name: \"URL with registry.json\",\n      itemName: \"button\",\n      registry: \"http://example.com/r/registry.json\",\n      expected: \"http://example.com/r/button.json\",\n    },\n    {\n      name: \"URL with multiple registry in path - replaces last\",\n      itemName: \"button\",\n      registry: \"http://example.com/registry/foo/registry\",\n      expected: \"http://example.com/registry/foo/button\",\n    },\n    {\n      name: \"URL with registry in nested path\",\n      itemName: \"dialog\",\n      registry: \"http://example.com/components/registry/index.json\",\n      expected: \"http://example.com/components/dialog/index.json\",\n    },\n\n    // URL with registry in query params\n    {\n      name: \"URL with registry in query param\",\n      itemName: \"modal\",\n      registry: \"http://registry.foo.com?item=registry\",\n      expected: \"http://registry.foo.com?item=modal\",\n    },\n    {\n      name: \"URL with registry in query param (multiple params)\",\n      itemName: \"tabs\",\n      registry: \"http://api.example.com/fetch?name=registry&type=component\",\n      expected: \"http://api.example.com/fetch?name=tabs&type=component\",\n    },\n    {\n      name: \"URL with registry in both path and query\",\n      itemName: \"button\",\n      registry: \"http://example.com/registry?name=registry\",\n      expected: \"http://example.com/button?name=button\",\n    },\n\n    // Edge cases - should NOT replace in domain/subdomain\n    {\n      name: \"URL with registry in subdomain - should NOT replace\",\n      itemName: \"button\",\n      registry: \"http://registry.example.com/api\",\n      expected: \"http://registry.example.com/api\",\n    },\n    {\n      name: \"URL with registry in domain - should NOT replace\",\n      itemName: \"button\",\n      registry: \"http://myregistry.com/api\",\n      expected: \"http://myregistry.com/api\",\n    },\n\n    // URLs without registry\n    {\n      name: \"URL without registry word\",\n      itemName: \"button\",\n      registry: \"http://example.com/components/all\",\n      expected: \"http://example.com/components/all\",\n    },\n    {\n      name: \"URL with only query params, no registry\",\n      itemName: \"button\",\n      registry: \"http://example.com?type=ui\",\n      expected: \"http://example.com?type=ui\",\n    },\n\n    // HTTPS and ports\n    {\n      name: \"HTTPS URL with registry\",\n      itemName: \"sidebar\",\n      registry: \"https://secure.example.com/components/registry\",\n      expected: \"https://secure.example.com/components/sidebar\",\n    },\n    {\n      name: \"URL with port and registry\",\n      itemName: \"header\",\n      registry: \"http://localhost:3000/api/registry\",\n      expected: \"http://localhost:3000/api/header\",\n    },\n\n    // Complex cases\n    {\n      name: \"URL with hash and registry\",\n      itemName: \"footer\",\n      registry: \"http://example.com/registry#latest\",\n      expected: \"http://example.com/footer#latest\",\n    },\n    {\n      name: \"URL with encoded characters\",\n      itemName: \"button\",\n      registry: \"http://example.com/registry%20component\",\n      expected: \"http://example.com/button%20component\",\n    },\n  ]\n\n  it.each(testCases)(\"$name\", ({ itemName, registry, expected }) => {\n    const result = buildRegistryItemNameFromRegistry(itemName, registry)\n    expect(result).toBe(expected)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/search.ts",
    "content": "import { searchResultItemSchema, searchResultsSchema } from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport fuzzysort from \"fuzzysort\"\nimport { z } from \"zod\"\n\nimport { getRegistry } from \"./api\"\n\nexport async function searchRegistries(\n  registries: string[],\n  options?: {\n    query?: string\n    limit?: number\n    offset?: number\n    config?: Partial<Config>\n    useCache?: boolean\n  }\n) {\n  const { query, limit, offset, config, useCache } = options || {}\n\n  let allItems: z.infer<typeof searchResultItemSchema>[] = []\n\n  for (const registry of registries) {\n    const registryData = await getRegistry(registry, { config, useCache })\n\n    const itemsWithRegistry = (registryData.items || []).map((item) => ({\n      name: item.name,\n      type: item.type,\n      description: item.description,\n      registry: registry,\n      addCommandArgument: buildRegistryItemNameFromRegistry(\n        item.name,\n        registry\n      ),\n    }))\n\n    allItems = allItems.concat(itemsWithRegistry)\n  }\n\n  if (query) {\n    allItems = searchItems(allItems, {\n      query,\n      limit: allItems.length,\n      keys: [\"name\", \"description\"],\n    }) as z.infer<typeof searchResultItemSchema>[]\n  }\n\n  const paginationOffset = offset || 0\n  const paginationLimit = limit || allItems.length\n  const totalItems = allItems.length\n\n  const result: z.infer<typeof searchResultsSchema> = {\n    pagination: {\n      total: totalItems,\n      offset: paginationOffset,\n      limit: paginationLimit,\n      hasMore: paginationOffset + paginationLimit < totalItems,\n    },\n    items: allItems.slice(paginationOffset, paginationOffset + paginationLimit),\n  }\n\n  return searchResultsSchema.parse(result)\n}\n\nconst searchableItemSchema = z\n  .object({\n    name: z.string(),\n    type: z.string().optional(),\n    description: z.string().optional(),\n    registry: z.string().optional(),\n    addCommandArgument: z.string().optional(),\n  })\n  .passthrough()\n\ntype SearchableItem = z.infer<typeof searchableItemSchema>\n\nfunction searchItems<\n  T extends {\n    name: string\n    type?: string\n    description?: string\n    addCommandArgument?: string\n    [key: string]: any\n  } = SearchableItem,\n>(\n  items: T[],\n  options: {\n    query: string\n  } & Pick<Parameters<typeof fuzzysort.go>[2], \"keys\" | \"threshold\" | \"limit\">\n) {\n  options = {\n    limit: 100,\n    threshold: -10000,\n    ...options,\n  }\n\n  const searchResults = fuzzysort.go(options.query, items, {\n    keys: options.keys,\n    threshold: options.threshold,\n    limit: options.limit,\n  })\n\n  const results = searchResults.map((result) => result.obj)\n\n  return z.array(searchableItemSchema).parse(results)\n}\n\nfunction isUrl(string: string): boolean {\n  try {\n    new URL(string)\n    return true\n  } catch {\n    return false\n  }\n}\n\n// Builds the registry item name for the add command.\n// For namespaced registries, returns \"registry/item\".\n// For URL registries, replaces \"registry\" with the item name in the URL.\nexport function buildRegistryItemNameFromRegistry(\n  name: string,\n  registry: string\n) {\n  // If registry is not a URL, return namespace format.\n  if (!isUrl(registry)) {\n    return `${registry}/${name}`\n  }\n\n  // Find where the host part ends in the original string.\n  const protocolEnd = registry.indexOf(\"://\") + 3\n  const hostEnd = registry.indexOf(\"/\", protocolEnd)\n\n  if (hostEnd === -1) {\n    // No path, check for query params.\n    const queryStart = registry.indexOf(\"?\", protocolEnd)\n    if (queryStart !== -1) {\n      // Has query params but no path.\n      const beforeQuery = registry.substring(0, queryStart)\n      const queryAndAfter = registry.substring(queryStart)\n      // Replace \"registry\" with itemName in query params only.\n      const updatedQuery = queryAndAfter.replace(/\\bregistry\\b/g, name)\n      return beforeQuery + updatedQuery\n    }\n    // No path or query, return as is.\n    return registry\n  }\n\n  // Split at host boundary.\n  const hostPart = registry.substring(0, hostEnd)\n  const pathAndQuery = registry.substring(hostEnd)\n\n  // Find all occurrences of \"registry\" in path and query.\n  // Replace only the last occurrence in the path segment.\n  const pathEnd =\n    pathAndQuery.indexOf(\"?\") !== -1\n      ? pathAndQuery.indexOf(\"?\")\n      : pathAndQuery.length\n  const pathOnly = pathAndQuery.substring(0, pathEnd)\n  const queryAndAfter = pathAndQuery.substring(pathEnd)\n\n  // Replace the last occurrence of \"registry\" in the path.\n  const lastIndex = pathOnly.lastIndexOf(\"registry\")\n  let updatedPath = pathOnly\n  if (lastIndex !== -1) {\n    updatedPath =\n      pathOnly.substring(0, lastIndex) +\n      name +\n      pathOnly.substring(lastIndex + \"registry\".length)\n  }\n\n  // Replace all occurrences of \"registry\" in query params.\n  const updatedQuery = queryAndAfter.replace(/\\bregistry\\b/g, name)\n\n  return hostPart + updatedPath + updatedQuery\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/utils.test.ts",
    "content": "import { describe, expect, it, test, vi } from \"vitest\"\nimport { z } from \"zod\"\n\nimport { Config } from \"../utils/get-config\"\nimport { registryItemFileSchema } from \"./schema\"\nimport {\n  canDeduplicateFiles,\n  deduplicateFilesByTarget,\n  getDependencyFromModuleSpecifier,\n  isLocalFile,\n  isUniversalRegistryItem,\n  isUrl,\n} from \"./utils\"\n\ndescribe(\"getDependencyFromModuleSpecifier\", () => {\n  it(\"should return the first part of a non-scoped package with path\", () => {\n    expect(getDependencyFromModuleSpecifier(\"foo/bar\")).toBe(\"foo\")\n    expect(getDependencyFromModuleSpecifier(\"lodash/get\")).toBe(\"lodash\")\n  })\n\n  it(\"should return the full package name for scoped packages\", () => {\n    expect(getDependencyFromModuleSpecifier(\"@types/react\")).toBe(\n      \"@types/react\"\n    )\n    expect(getDependencyFromModuleSpecifier(\"@radix-ui/react-dialog\")).toBe(\n      \"@radix-ui/react-dialog\"\n    )\n  })\n\n  it.each([\n    // Core packages\n    \"react\",\n    \"react/jsx-runtime\",\n    \"react/dom\",\n    \"react/experimental\",\n    \"react-dom\",\n    \"react-dom/client\",\n    \"react-dom/server\",\n    \"react-dom/test-utils\",\n    \"next\",\n    \"next/link\",\n    \"next/image\",\n    \"next/navigation\",\n  ])(\"should return null for core package %s\", (moduleSpecifier) => {\n    expect(getDependencyFromModuleSpecifier(moduleSpecifier)).toBe(null)\n  })\n\n  it.each([\n    // Node.js modules\n    \"node:fs\",\n    \"node:path\",\n    \"node:http\",\n    \"node:stream\",\n    // JSR modules\n    \"jsr:@std/fs\",\n    \"jsr:@std/path\",\n    \"jsr:@std/http\",\n    // NPM modules\n    \"npm:lodash\",\n    \"npm:@types/react\",\n    \"npm:express\",\n  ])(\"should return null for prefixed module %s\", (moduleSpecifier) => {\n    expect(getDependencyFromModuleSpecifier(moduleSpecifier)).toBe(null)\n  })\n\n  it.each([\n    [\"\", \"\"],\n    [\" \", \" \"],\n    [\"/\", \"\"],\n  ])(\"should handle empty or invalid input %s\", (input, expected) => {\n    expect(getDependencyFromModuleSpecifier(input)).toBe(expected)\n  })\n\n  it.each([\n    [\"foo/bar/baz\", \"foo\"],\n    [\"lodash/get/set\", \"lodash\"],\n  ])(\"should handle package %s with multiple slashes\", (input, expected) => {\n    expect(getDependencyFromModuleSpecifier(input)).toBe(expected)\n  })\n\n  it(\"should handle edge cases for scoped packages\", () => {\n    expect(getDependencyFromModuleSpecifier(\"@types/react/dom\")).toBe(\n      \"@types/react\"\n    )\n  })\n})\n\ndescribe(\"isUrl\", () => {\n  it(\"should return true for valid URLs\", () => {\n    expect(isUrl(\"https://example.com\")).toBe(true)\n    expect(isUrl(\"http://example.com\")).toBe(true)\n    expect(isUrl(\"https://example.com/path\")).toBe(true)\n    expect(isUrl(\"https://subdomain.example.com\")).toBe(true)\n    expect(isUrl(\"https://ui.shadcn.com/r/styles/new-york/button.json\")).toBe(\n      true\n    )\n  })\n\n  it(\"should return false for non-URLs\", () => {\n    expect(isUrl(\"./local-file.json\")).toBe(false)\n    expect(isUrl(\"../relative/path.json\")).toBe(false)\n    expect(isUrl(\"/absolute/path.json\")).toBe(false)\n    expect(isUrl(\"component-name\")).toBe(false)\n    expect(isUrl(\"\")).toBe(false)\n    expect(isUrl(\"just-text\")).toBe(false)\n  })\n})\n\ndescribe(\"isLocalFile\", () => {\n  it(\"should return true for local JSON files\", () => {\n    expect(isLocalFile(\"./component.json\")).toBe(true)\n    expect(isLocalFile(\"../shared/button.json\")).toBe(true)\n    expect(isLocalFile(\"/absolute/path/card.json\")).toBe(true)\n    expect(isLocalFile(\"local-component.json\")).toBe(true)\n    expect(isLocalFile(\"nested/directory/dialog.json\")).toBe(true)\n    expect(isLocalFile(\"~/Desktop/component.json\")).toBe(true)\n    expect(isLocalFile(\"~/Documents/shared/button.json\")).toBe(true)\n  })\n\n  it(\"should return false for URLs ending with .json\", () => {\n    expect(isLocalFile(\"https://example.com/component.json\")).toBe(false)\n    expect(isLocalFile(\"http://registry.com/button.json\")).toBe(false)\n    expect(\n      isLocalFile(\"https://ui.shadcn.com/r/styles/new-york/button.json\")\n    ).toBe(false)\n  })\n\n  it(\"should return false for non-JSON files\", () => {\n    expect(isLocalFile(\"./component.tsx\")).toBe(false)\n    expect(isLocalFile(\"../shared/button.ts\")).toBe(false)\n    expect(isLocalFile(\"/absolute/path/card.js\")).toBe(false)\n    expect(isLocalFile(\"local-component.css\")).toBe(false)\n    expect(isLocalFile(\"component-name\")).toBe(false)\n    expect(isLocalFile(\"\")).toBe(false)\n  })\n\n  it(\"should return false for directory paths\", () => {\n    expect(isLocalFile(\"./components/\")).toBe(false)\n    expect(isLocalFile(\"../shared\")).toBe(false)\n    expect(isLocalFile(\"/absolute/path\")).toBe(false)\n  })\n})\n\ndescribe(\"isUniversalRegistryItem\", () => {\n  it(\"should return true when all files have targets with registry:file type\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"file1.ts\",\n          target: \"src/file1.ts\",\n          type: \"registry:file\" as const,\n        },\n        {\n          path: \"file2.ts\",\n          target: \"src/utils/file2.ts\",\n          type: \"registry:file\" as const,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(true)\n  })\n\n  it(\"should return true when registry item type is registry:file and all files have targets\", () => {\n    const registryItem = {\n      type: \"registry:file\" as const,\n      files: [\n        {\n          path: \"file1.ts\",\n          target: \"src/file1.ts\",\n          type: \"registry:file\" as const,\n        },\n        {\n          path: \"file2.ts\",\n          target: \"src/utils/file2.ts\",\n          type: \"registry:item\" as const,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(true)\n  })\n\n  it(\"should return false for any registry item type other than registry:item or registry:file\", () => {\n    const registryItem = {\n      type: \"registry:ui\" as const,\n      files: [\n        {\n          path: \"cursor-rules.txt\",\n          target: \"~/.cursor/rules/react.txt\",\n          type: \"registry:file\" as const,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when some files lack targets\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"file1.ts\",\n          target: \"src/file1.ts\",\n          type: \"registry:file\" as const,\n        },\n        { path: \"file2.ts\", target: \"\", type: \"registry:file\" as const },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when files have non-registry:file type\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"file1.ts\",\n          target: \"src/file1.ts\",\n          type: \"registry:file\" as const,\n        },\n        {\n          path: \"file2.ts\",\n          target: \"src/lib/file2.ts\",\n          type: \"registry:lib\" as const, // Not registry:file\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when no files have targets\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        { path: \"file1.ts\", target: \"\", type: \"registry:file\" as const },\n        { path: \"file2.ts\", target: \"\", type: \"registry:file\" as const },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return true when files array is empty and type is registry:item\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(true)\n  })\n\n  it(\"should return true when files is undefined and type is registry:item\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(true)\n  })\n\n  it(\"should return false when type is registry:style\", () => {\n    const registryItem = {\n      type: \"registry:style\" as const,\n      files: [],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when type is registry:ui\", () => {\n    const registryItem = {\n      type: \"registry:ui\" as const,\n      files: [],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when files is undefined and type is not registry:item or registry:file\", () => {\n    const registryItem = {\n      type: \"registry:component\" as const,\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when registryItem is null\", () => {\n    expect(isUniversalRegistryItem(null)).toBe(false)\n  })\n\n  it(\"should return false when registryItem is undefined\", () => {\n    expect(isUniversalRegistryItem(undefined)).toBe(false)\n  })\n\n  it(\"should return false when target is null\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"file1.ts\",\n          target: null as any,\n          type: \"registry:file\" as const,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when target is undefined\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"file1.ts\",\n          type: \"registry:file\" as const,\n          target: undefined as any,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when files have registry:component type even with targets\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"component.tsx\",\n          target: \"components/ui/component.tsx\",\n          type: \"registry:component\" as const,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when files have registry:hook type even with targets\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"use-hook.ts\",\n          target: \"hooks/use-hook.ts\",\n          type: \"registry:hook\" as const,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return false when files have registry:lib type even with targets\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"utils.ts\",\n          target: \"lib/utils.ts\",\n          type: \"registry:lib\" as const,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n\n  it(\"should return true when all targets are non-empty strings for registry:file\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        { path: \"file1.ts\", target: \" \", type: \"registry:file\" as const }, // whitespace is truthy\n        { path: \"file2.ts\", target: \"0\", type: \"registry:file\" as const }, // \"0\" is truthy\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(true)\n  })\n\n  it(\"should handle real-world example with path traversal attempts for registry:file\", () => {\n    const registryItem = {\n      type: \"registry:item\" as const,\n      files: [\n        {\n          path: \"malicious.ts\",\n          target: \"../../../etc/passwd\",\n          type: \"registry:file\" as const,\n        },\n        {\n          path: \"normal.ts\",\n          target: \"src/normal.ts\",\n          type: \"registry:file\" as const,\n        },\n      ],\n    }\n    // The function should still return true - path validation is handled elsewhere.\n    expect(isUniversalRegistryItem(registryItem)).toBe(true)\n  })\n\n  it(\"should return false when registry item type is registry:ui\", () => {\n    const registryItem = {\n      type: \"registry:ui\" as const,\n      files: [\n        {\n          path: \"button.tsx\",\n          target: \"src/components/ui/button.tsx\",\n          type: \"registry:file\" as const,\n        },\n      ],\n    }\n    expect(isUniversalRegistryItem(registryItem)).toBe(false)\n  })\n})\n\nvi.mock(\"../utils/get-project-info\", () => ({\n  getProjectInfo: vi.fn().mockResolvedValue({\n    isSrcDir: false,\n    framework: { name: \"next-app\" },\n  }),\n}))\n\nvi.mock(\"../utils/updaters/update-files\", () => ({\n  findCommonRoot: vi.fn().mockImplementation(() => \"\"),\n  resolveFilePath: vi.fn().mockImplementation((file) => {\n    const typeMap: Record<string, string> = {\n      \"registry:ui\": \"components/ui\",\n      \"registry:lib\": \"lib\",\n      \"registry:hook\": \"hooks\",\n    }\n    const baseDir = typeMap[file.type] || \"components\"\n\n    if (file.target) {\n      return file.target\n    }\n\n    const filename = file.path.split(\"/\").pop()\n    return `${baseDir}/${filename}`\n  }),\n}))\n\ndescribe(\"deduplicateFilesByTarget\", () => {\n  const createMockConfig = (overrides = {}): Config =>\n    ({\n      style: \"default\",\n      tailwind: { baseColor: \"neutral\" },\n      resolvedPaths: {\n        cwd: \"/test/project\",\n        tailwindConfig: \"/test/project/tailwind.config.js\",\n        tailwindCss: \"/test/project/globals.css\",\n        utils: \"/test/project/lib/utils\",\n        components: \"/test/project/components\",\n        lib: \"/test/project/lib\",\n        hooks: \"/test/project/hooks\",\n        ui: \"/test/project/components/ui\",\n      },\n      ...overrides,\n    }) as Config\n\n  test(\"should deduplicate files with same resolved path\", async () => {\n    const config = createMockConfig()\n    const filesArrays = [\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"Button A\",\n          type: \"registry:ui\",\n        },\n      ]),\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"Button B\",\n          type: \"registry:ui\",\n        },\n      ]),\n    ]\n\n    const result = await deduplicateFilesByTarget(filesArrays, config)\n\n    expect(result).toHaveLength(1)\n    expect(result[0]).toMatchInlineSnapshot(`\n      {\n        \"content\": \"Button B\",\n        \"path\": \"ui/button.tsx\",\n        \"type\": \"registry:ui\",\n      }\n    `)\n  })\n\n  test(\"should preserve files with different resolved paths\", async () => {\n    const config = createMockConfig()\n    const filesArrays = [\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"Button\",\n          type: \"registry:ui\",\n        },\n        {\n          path: \"lib/utils.ts\",\n          content: \"Utils\",\n          type: \"registry:lib\",\n        },\n      ]),\n    ]\n\n    const result = await deduplicateFilesByTarget(filesArrays, config)\n\n    expect(result).toHaveLength(2)\n    expect(result).toEqual(\n      expect.arrayContaining([\n        expect.objectContaining({ path: \"ui/button.tsx\" }),\n        expect.objectContaining({ path: \"lib/utils.ts\" }),\n      ])\n    )\n  })\n\n  test(\"should handle explicit targets\", async () => {\n    const config = createMockConfig()\n    const filesArrays = [\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"custom/component.tsx\",\n          content: \"Component A\",\n          type: \"registry:ui\",\n        },\n      ]),\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"different/path.tsx\",\n          content: \"Component B\",\n          type: \"registry:ui\",\n          target: \"components/ui/button.tsx\",\n        },\n      ]),\n    ]\n\n    const result = await deduplicateFilesByTarget(filesArrays, config)\n    expect(result).toHaveLength(2)\n  })\n\n  test(\"should handle undefined file arrays\", async () => {\n    const config = createMockConfig()\n    const filesArrays = [\n      undefined,\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"Button\",\n          type: \"registry:ui\",\n        },\n      ]),\n      undefined,\n    ]\n\n    const result = await deduplicateFilesByTarget(filesArrays, config)\n\n    expect(result).toHaveLength(1)\n    expect(result[0]).toMatchObject({ path: \"ui/button.tsx\" })\n  })\n\n  test(\"should fallback to concatenation when config is incomplete\", async () => {\n    const incompleteConfig = {\n      style: \"default\",\n      resolvedPaths: {\n        cwd: \"/test/project\",\n      },\n    } as Config\n\n    const filesArrays = [\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"Button A\",\n          type: \"registry:ui\",\n        },\n      ]),\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"Button B\",\n          type: \"registry:ui\",\n        },\n      ]),\n    ]\n\n    const result = await deduplicateFilesByTarget(filesArrays, incompleteConfig)\n\n    expect(result).toHaveLength(2)\n    expect(result[0]).toMatchObject({ content: \"Button A\" })\n    expect(result[1]).toMatchObject({ content: \"Button B\" })\n  })\n\n  test(\"should maintain last-wins behavior for conflicting files\", async () => {\n    const config = createMockConfig()\n    const filesArrays = [\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"First\",\n          type: \"registry:ui\",\n        },\n      ]),\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"Second\",\n          type: \"registry:ui\",\n        },\n      ]),\n      z.array(registryItemFileSchema).parse([\n        {\n          path: \"ui/button.tsx\",\n          content: \"Third\",\n          type: \"registry:ui\",\n        },\n      ]),\n    ]\n\n    const result = await deduplicateFilesByTarget(filesArrays, config)\n\n    expect(result).toHaveLength(1)\n    expect(result[0].content).toBe(\"Third\")\n  })\n})\n\ndescribe(\"canDeduplicateFiles\", () => {\n  test(\"should return true when all required paths are present\", () => {\n    const config = {\n      resolvedPaths: {\n        cwd: \"/test/project\",\n        ui: \"/test/project/components/ui\",\n        lib: \"/test/project/lib\",\n        components: \"/test/project/components\",\n        hooks: \"/test/project/hooks\",\n      },\n    } as Config\n\n    expect(canDeduplicateFiles(config)).toBe(true)\n  })\n\n  test(\"should return true when cwd and at least one component path is present\", () => {\n    const config = {\n      resolvedPaths: {\n        cwd: \"/test/project\",\n        ui: \"/test/project/components/ui\",\n      },\n    } as Config\n\n    expect(canDeduplicateFiles(config)).toBe(true)\n  })\n\n  test(\"should return false when cwd is missing\", () => {\n    const config = {\n      resolvedPaths: {\n        ui: \"/test/project/components/ui\",\n      },\n    } as Config\n\n    expect(canDeduplicateFiles(config)).toBe(false)\n  })\n\n  test(\"should return false when no component paths are present\", () => {\n    const config = {\n      resolvedPaths: {\n        cwd: \"/test/project\",\n      },\n    } as Config\n\n    expect(canDeduplicateFiles(config)).toBe(false)\n  })\n\n  test(\"should return false when config is undefined\", () => {\n    expect(canDeduplicateFiles(undefined as any)).toBe(false)\n  })\n})\n\ndescribe(\"isUrl\", () => {\n  it(\"should return true for valid URLs\", () => {\n    expect(isUrl(\"https://example.com\")).toBe(true)\n    expect(isUrl(\"http://localhost:3000\")).toBe(true)\n    expect(isUrl(\"https://example.com/path/to/file.json\")).toBe(true)\n  })\n\n  it(\"should return false for non-URLs\", () => {\n    expect(isUrl(\"not-a-url\")).toBe(false)\n    expect(isUrl(\"/path/to/file\")).toBe(false)\n    expect(isUrl(\"./relative/path\")).toBe(false)\n    expect(isUrl(\"~/home/path\")).toBe(false)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/utils.ts",
    "content": "import * as fs from \"fs/promises\"\nimport { tmpdir } from \"os\"\nimport * as path from \"path\"\nimport {\n  configSchema,\n  registryItemFileSchema,\n  registryItemSchema,\n} from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { getProjectInfo, ProjectInfo } from \"@/src/utils/get-project-info\"\nimport { resolveImport } from \"@/src/utils/resolve-import\"\nimport {\n  findCommonRoot,\n  resolveFilePath,\n} from \"@/src/utils/updaters/update-files\"\nimport { Project, ScriptKind } from \"ts-morph\"\nimport { loadConfig } from \"tsconfig-paths\"\nimport { z } from \"zod\"\n\nconst FILE_EXTENSIONS_FOR_LOOKUP = [\".tsx\", \".ts\", \".jsx\", \".js\", \".css\"]\nconst FILE_PATH_SKIP_LIST = [\"lib/utils.ts\"]\nconst DEPENDENCY_SKIP_LIST = [\n  /^(react|react-dom|next)(\\/.*)?$/, // Matches react, react-dom, next and their submodules\n  /^(node|jsr|npm):.*$/, // Matches node:, jsr:, and npm: prefixed modules\n]\n\nconst project = new Project({\n  compilerOptions: {},\n})\n\n// This returns the dependency from the module specifier.\n// Here dependency means an npm package.\nexport function getDependencyFromModuleSpecifier(\n  moduleSpecifier: string\n): string | null {\n  // Skip if the dependency matches any pattern in the skip list\n  if (DEPENDENCY_SKIP_LIST.some((pattern) => pattern.test(moduleSpecifier))) {\n    return null\n  }\n\n  // If the module specifier does not start with `@` and has a /, add the dependency first part only.\n  // E.g. `foo/bar` -> `foo`\n  if (!moduleSpecifier.startsWith(\"@\") && moduleSpecifier.includes(\"/\")) {\n    moduleSpecifier = moduleSpecifier.split(\"/\")[0]\n  }\n\n  // For scoped packages, we want to keep the first two parts\n  // E.g. `@types/react/dom` -> `@types/react`\n  if (moduleSpecifier.startsWith(\"@\")) {\n    const parts = moduleSpecifier.split(\"/\")\n    if (parts.length > 2) {\n      moduleSpecifier = parts.slice(0, 2).join(\"/\")\n    }\n  }\n\n  return moduleSpecifier\n}\n\nexport async function recursivelyResolveFileImports(\n  filePath: string,\n  config: z.infer<typeof configSchema>,\n  projectInfo: ProjectInfo,\n  processedFiles: Set<string> = new Set()\n): Promise<Pick<z.infer<typeof registryItemSchema>, \"files\" | \"dependencies\">> {\n  const resolvedFilePath = path.resolve(config.resolvedPaths.cwd, filePath)\n  const relativeRegistryFilePath = path.relative(\n    config.resolvedPaths.cwd,\n    resolvedFilePath\n  )\n\n  // Skip if the file is in the skip list\n  if (FILE_PATH_SKIP_LIST.includes(relativeRegistryFilePath)) {\n    return { dependencies: [], files: [] }\n  }\n\n  // Skip if the file extension is not one of the supported extensions\n  const fileExtension = path.extname(filePath)\n  if (!FILE_EXTENSIONS_FOR_LOOKUP.includes(fileExtension)) {\n    return { dependencies: [], files: [] }\n  }\n\n  // Prevent infinite loop: skip if already processed\n  if (processedFiles.has(relativeRegistryFilePath)) {\n    return { dependencies: [], files: [] }\n  }\n  processedFiles.add(relativeRegistryFilePath)\n\n  const stat = await fs.stat(resolvedFilePath)\n  if (!stat.isFile()) {\n    // Optionally log or handle this case\n    return { dependencies: [], files: [] }\n  }\n\n  const content = await fs.readFile(resolvedFilePath, \"utf-8\")\n  const tempFile = await createTempSourceFile(path.basename(resolvedFilePath))\n  const sourceFile = project.createSourceFile(tempFile, content, {\n    scriptKind: ScriptKind.TSX,\n  })\n  const tsConfig = await loadConfig(config.resolvedPaths.cwd)\n  if (tsConfig.resultType === \"failed\") {\n    return { dependencies: [], files: [] }\n  }\n\n  const files: z.infer<typeof registryItemSchema>[\"files\"] = []\n  const dependencies = new Set<string>()\n\n  // Add the original file first\n  const fileType = determineFileType(filePath)\n  const originalFile = {\n    path: relativeRegistryFilePath,\n    type: fileType,\n    target: \"\",\n  }\n  files.push(originalFile)\n\n  // 1. Find all import statements in the file.\n  const importStatements = sourceFile.getImportDeclarations()\n  for (const importStatement of importStatements) {\n    const moduleSpecifier = importStatement.getModuleSpecifierValue()\n\n    const isRelativeImport = moduleSpecifier.startsWith(\".\")\n    const isAliasImport = moduleSpecifier.startsWith(\n      `${projectInfo.aliasPrefix}/`\n    )\n\n    // If not a local import, add to the dependencies array.\n    if (!isAliasImport && !isRelativeImport) {\n      const dependency = getDependencyFromModuleSpecifier(moduleSpecifier)\n      if (dependency) {\n        dependencies.add(dependency)\n      }\n      continue\n    }\n\n    let probableImportFilePath = await resolveImport(moduleSpecifier, tsConfig)\n\n    if (isRelativeImport) {\n      probableImportFilePath = path.resolve(\n        path.dirname(resolvedFilePath),\n        moduleSpecifier\n      )\n    }\n\n    if (!probableImportFilePath) {\n      continue\n    }\n\n    // Check if the probable import path has a file extension.\n    // Try each extension until we find a file that exists.\n    const hasExtension = path.extname(probableImportFilePath)\n    if (!hasExtension) {\n      for (const ext of FILE_EXTENSIONS_FOR_LOOKUP) {\n        const pathWithExt: string = `${probableImportFilePath}${ext}`\n        try {\n          await fs.access(pathWithExt)\n          probableImportFilePath = pathWithExt\n          break\n        } catch {\n          continue\n        }\n      }\n    }\n\n    const nestedRelativeRegistryFilePath = path.relative(\n      config.resolvedPaths.cwd,\n      probableImportFilePath\n    )\n\n    // Skip if we've already processed this file or if it's in the skip list\n    if (\n      processedFiles.has(nestedRelativeRegistryFilePath) ||\n      FILE_PATH_SKIP_LIST.includes(nestedRelativeRegistryFilePath)\n    ) {\n      continue\n    }\n\n    const fileType = determineFileType(moduleSpecifier)\n    const file = {\n      path: nestedRelativeRegistryFilePath,\n      type: fileType,\n      target: \"\",\n    }\n\n    // TODO (shadcn): fix this.\n    if (fileType === \"registry:page\" || fileType === \"registry:file\") {\n      file.target = moduleSpecifier\n    }\n\n    files.push(file)\n\n    // Recursively process the imported file, passing the shared processedFiles set\n    const nestedResults = await recursivelyResolveFileImports(\n      nestedRelativeRegistryFilePath,\n      config,\n      projectInfo,\n      processedFiles\n    )\n\n    if (nestedResults.files) {\n      // Only add files that haven't been processed yet\n      for (const file of nestedResults.files) {\n        if (!processedFiles.has(file.path)) {\n          processedFiles.add(file.path)\n          files.push(file)\n        }\n      }\n    }\n\n    if (nestedResults.dependencies) {\n      nestedResults.dependencies.forEach((dep) => dependencies.add(dep))\n    }\n  }\n\n  // Deduplicate files by path\n  const uniqueFiles = Array.from(\n    new Map(files.map((file) => [file.path, file])).values()\n  )\n\n  return {\n    dependencies: Array.from(dependencies),\n    files: uniqueFiles,\n  }\n}\n\nasync function createTempSourceFile(filename: string) {\n  const dir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-\"))\n  return path.join(dir, filename)\n}\n\n// This is a bit tricky to accurately determine.\n// For now we'll use the module specifier to determine the type.\nfunction determineFileType(\n  moduleSpecifier: string\n): z.infer<typeof registryItemSchema>[\"type\"] {\n  if (moduleSpecifier.includes(\"/ui/\")) {\n    return \"registry:ui\"\n  }\n\n  if (moduleSpecifier.includes(\"/lib/\")) {\n    return \"registry:lib\"\n  }\n\n  if (moduleSpecifier.includes(\"/hooks/\")) {\n    return \"registry:hook\"\n  }\n\n  if (moduleSpecifier.includes(\"/components/\")) {\n    return \"registry:component\"\n  }\n\n  return \"registry:component\"\n}\n\n// Additional utility functions for local file support\nexport function isUrl(path: string) {\n  try {\n    new URL(path)\n    return true\n  } catch (error) {\n    return false\n  }\n}\n\nexport function isLocalFile(path: string) {\n  return path.endsWith(\".json\") && !isUrl(path)\n}\n\n/**\n * Check if a registry item is universal (framework-agnostic).\n * A universal registry item must:\n * 1. Have type \"registry:item\" or \"registry:file\"\n * 2. If it has files, all files must have explicit targets and be type \"registry:file\" or \"registry:item\"\n * It can be installed without framework detection or components.json.\n */\nexport function isUniversalRegistryItem(\n  registryItem:\n    | Pick<z.infer<typeof registryItemSchema>, \"files\" | \"type\">\n    | null\n    | undefined\n): boolean {\n  if (!registryItem) {\n    return false\n  }\n\n  if (\n    registryItem.type !== \"registry:item\" &&\n    registryItem.type !== \"registry:file\"\n  ) {\n    return false\n  }\n\n  const files = registryItem.files ?? []\n\n  // If there are files, all must have targets and be of type registry:file or registry:item.\n  return files.every(\n    (file) =>\n      !!file.target &&\n      (file.type === \"registry:file\" || file.type === \"registry:item\")\n  )\n}\n\n// Deduplicates files based on their resolved target paths.\n// When multiple files resolve to the same target path, the last one wins.\nexport async function deduplicateFilesByTarget(\n  filesArrays: Array<z.infer<typeof registryItemFileSchema>[] | undefined>,\n  config: Config\n) {\n  // Fallback to simple concatenation when we don't have complete config.\n  if (!canDeduplicateFiles(config)) {\n    return z\n      .array(registryItemFileSchema)\n      .parse(filesArrays.flat().filter(Boolean))\n  }\n\n  // Get project info for file resolution.\n  const projectInfo = await getProjectInfo(config.resolvedPaths.cwd)\n  const targetMap = new Map<string, z.infer<typeof registryItemFileSchema>>()\n  const allFiles = z\n    .array(registryItemFileSchema)\n    .parse(filesArrays.flat().filter(Boolean))\n\n  allFiles.forEach((file) => {\n    const resolvedPath = resolveFilePath(file, config, {\n      isSrcDir: projectInfo?.isSrcDir,\n      framework: projectInfo?.framework.name,\n      commonRoot: findCommonRoot(\n        allFiles.map((f) => f.path),\n        file.path\n      ),\n    })\n\n    if (resolvedPath) {\n      // Last one wins - overwrites previous entry.\n      targetMap.set(resolvedPath, file)\n    }\n  })\n\n  return Array.from(targetMap.values())\n}\n\n// Checks if the config has the minimum required paths for file deduplication.\nexport function canDeduplicateFiles(config: Config) {\n  return !!(\n    config?.resolvedPaths?.cwd &&\n    (config?.resolvedPaths?.ui ||\n      config?.resolvedPaths?.lib ||\n      config?.resolvedPaths?.components ||\n      config?.resolvedPaths?.hooks)\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/registry/validator.test.ts",
    "content": "/* eslint-disable turbo/no-undeclared-env-vars */\nimport { afterEach, beforeEach, describe, expect, it } from \"vitest\"\n\nimport {\n  extractEnvVarsFromRegistryConfig,\n  validateRegistryConfig,\n} from \"./validator\"\n\ndescribe(\"extractEnvVarsFromRegistryConfig\", () => {\n  it(\"should extract vars from string config\", () => {\n    expect(\n      extractEnvVarsFromRegistryConfig(\"https://api.com?token=${TOKEN}\")\n    ).toEqual([\"TOKEN\"])\n  })\n\n  it(\"should extract vars from object config\", () => {\n    const config = {\n      url: \"https://api.com/{name}?key=${API_KEY}\",\n      params: {\n        version: \"1.0\",\n        token: \"${TOKEN}\",\n      },\n      headers: {\n        Authorization: \"Bearer ${AUTH_TOKEN}\",\n        \"X-Api-Key\": \"${API_KEY}\",\n      },\n    }\n\n    expect(extractEnvVarsFromRegistryConfig(config).sort()).toEqual([\n      \"API_KEY\",\n      \"AUTH_TOKEN\",\n      \"TOKEN\",\n    ])\n  })\n\n  it(\"should handle config without params or headers\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n    }\n\n    expect(extractEnvVarsFromRegistryConfig(config)).toEqual([])\n  })\n})\n\ndescribe(\"validateRegistryConfig\", () => {\n  beforeEach(() => {\n    process.env.TOKEN = \"value\"\n  })\n\n  afterEach(() => {\n    delete process.env.TOKEN\n  })\n\n  describe(\"built-in registries\", () => {\n    it(\"should not throw for @shadcn since it's now a built-in registry\", () => {\n      expect(() => {\n        validateRegistryConfig(\"@shadcn\", {\n          url: \"https://example.com/{name}\",\n        })\n      }).not.toThrow()\n    })\n\n    it(\"should not throw for non-built-in registry names\", () => {\n      expect(() => {\n        validateRegistryConfig(\"@mycompany\", {\n          url: \"https://example.com/{name}\",\n        })\n      }).not.toThrow()\n    })\n\n    it(\"should not throw for similar but different registry names\", () => {\n      expect(() => {\n        validateRegistryConfig(\"@shadcn-ui\", {\n          url: \"https://example.com/{name}\",\n        })\n      }).not.toThrow()\n\n      expect(() => {\n        validateRegistryConfig(\"@myshadcn\", {\n          url: \"https://example.com/{name}\",\n        })\n      }).not.toThrow()\n    })\n  })\n\n  it(\"should pass when all env vars are set\", () => {\n    expect(() => {\n      validateRegistryConfig(\"@test\", \"https://api.com?token=${TOKEN}\")\n    }).not.toThrow()\n  })\n\n  it(\"should throw when env vars are missing\", () => {\n    expect(() => {\n      validateRegistryConfig(\"@test\", \"https://api.com?token=${MISSING}\")\n    }).toThrow(/Registry \"@test\" requires the following environment variables/)\n  })\n\n  it(\"should list all missing variables\", () => {\n    const config = {\n      url: \"https://api.com/{name}\",\n      headers: {\n        Auth: \"${TOKEN1}\",\n        Key: \"${TOKEN2}\",\n      },\n    }\n\n    expect(() => {\n      validateRegistryConfig(\"@test\", config)\n    }).toThrow(/TOKEN1[\\s\\S]*TOKEN2/)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/registry/validator.ts",
    "content": "import { buildUrlAndHeadersForRegistryItem } from \"@/src/registry/builder\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport { clearRegistryContext } from \"@/src/registry/context\"\nimport { extractEnvVars } from \"@/src/registry/env\"\nimport { RegistryMissingEnvironmentVariablesError } from \"@/src/registry/errors\"\nimport { registryConfigItemSchema } from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { z } from \"zod\"\n\nexport function extractEnvVarsFromRegistryConfig(\n  config: z.infer<typeof registryConfigItemSchema>\n): string[] {\n  const vars = new Set<string>()\n\n  if (typeof config === \"string\") {\n    extractEnvVars(config).forEach((v) => vars.add(v))\n  } else {\n    extractEnvVars(config.url).forEach((v) => vars.add(v))\n\n    if (config.params) {\n      Object.values(config.params).forEach((value) => {\n        extractEnvVars(value).forEach((v) => vars.add(v))\n      })\n    }\n\n    if (config.headers) {\n      Object.values(config.headers).forEach((value) => {\n        extractEnvVars(value).forEach((v) => vars.add(v))\n      })\n    }\n  }\n\n  return Array.from(vars)\n}\n\nexport function validateRegistryConfig(\n  registryName: string,\n  config: z.infer<typeof registryConfigItemSchema>\n): void {\n  const requiredVars = extractEnvVarsFromRegistryConfig(config)\n  const missing = requiredVars.filter((v) => !process.env[v])\n\n  if (missing.length > 0) {\n    throw new RegistryMissingEnvironmentVariablesError(registryName, missing)\n  }\n}\n\nexport function validateRegistryConfigForItems(\n  items: string[],\n  config?: Config\n): void {\n  for (const item of items) {\n    buildUrlAndHeadersForRegistryItem(item, configWithDefaults(config))\n  }\n\n  // Clear the registry context after validation.\n  clearRegistryContext()\n}\n"
  },
  {
    "path": "packages/shadcn/src/schema/index.ts",
    "content": "export * from \"../registry/schema\"\n"
  },
  {
    "path": "packages/shadcn/src/styles/create-style-map.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport { createStyleMap } from \"./create-style-map\"\n\ndescribe(\"parseStyle\", () => {\n  it(\"extracts tailwind classes from @apply directives\", () => {\n    const css = `\n      .style-nova {\n        .cn-alert-dialog-content {\n          @apply bg-background gap-4 rounded-xl border;\n        }\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"cn-alert-dialog-content\": \"bg-background gap-4 rounded-xl border\",\n      }\n    `)\n  })\n\n  it(\"handles multiple @apply directives\", () => {\n    const css = `\n      .cn-button {\n        @apply rounded-lg border;\n        @apply text-sm;\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"cn-button\": \"rounded-lg border text-sm\",\n      }\n    `)\n  })\n\n  it(\"handles variant classes\", () => {\n    const css = `\n      .cn-button-variant-default {\n        @apply text-primary-foreground bg-primary;\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"cn-button-variant-default\": \"text-primary-foreground bg-primary\",\n      }\n    `)\n  })\n\n  it(\"handles nested selectors\", () => {\n    const css = `\n      .cn-card {\n        @apply rounded-xl border;\n\n        .cn-card-header {\n          @apply gap-2 px-6;\n        }\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"cn-card\": \"rounded-xl border\",\n        \"cn-card-header\": \"gap-2 px-6\",\n      }\n    `)\n  })\n\n  it(\"ignores rules without @apply\", () => {\n    const css = `\n      .cn-button {\n        color: red;\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`{}`)\n  })\n\n  it(\"handles size variants\", () => {\n    const css = `\n      .cn-button-size-sm {\n        @apply h-7 gap-1 px-2.5;\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"cn-button-size-sm\": \"h-7 gap-1 px-2.5\",\n      }\n    `)\n  })\n\n  it(\"handles nested variant selectors with &\", () => {\n    const css = `\n      .cn-button {\n        @apply rounded-lg;\n\n        &.cn-button-variant-default {\n          @apply bg-primary text-white;\n        }\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"cn-button\": \"rounded-lg\",\n        \"cn-button-variant-default\": \"bg-primary text-white\",\n      }\n    `)\n  })\n\n  it(\"merges duplicate class names\", () => {\n    const css = `\n      .cn-button {\n        @apply rounded-lg;\n      }\n      .cn-button {\n        @apply border;\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"cn-button\": \"border rounded-lg\",\n      }\n    `)\n  })\n\n  it(\"ignores non-cn- classes\", () => {\n    const css = `\n      .button {\n        @apply rounded-lg border;\n      }\n      .some-other-class {\n        @apply text-sm;\n      }\n      .cn-button {\n        @apply px-4;\n      }\n    `\n\n    const result = createStyleMap(css)\n\n    expect(result).toMatchInlineSnapshot(`\n      {\n        \"cn-button\": \"px-4\",\n      }\n    `)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/styles/create-style-map.ts",
    "content": "import postcss from \"postcss\"\nimport selectorParser, {\n  type ClassName,\n  type Selector as SelectorNodeRoot,\n} from \"postcss-selector-parser\"\nimport { z } from \"zod\"\n\nconst CN_PREFIX = \"cn-\"\n\nexport const styleMapSchema = z.record(\n  z.string().startsWith(CN_PREFIX),\n  z.string()\n)\n\nexport type StyleMap = z.infer<typeof styleMapSchema>\n\nexport function createStyleMap(input: string) {\n  const root = postcss.parse(input)\n\n  const result: Record<string, string> = {}\n\n  root.walkRules((rule) => {\n    const selectors = rule.selectors ?? []\n\n    if (selectors.length === 0) {\n      return\n    }\n\n    const tailwindClasses = extractTailwindClasses(rule)\n\n    if (!tailwindClasses) {\n      return\n    }\n\n    for (const selector of selectors) {\n      const normalizedSelector = normalizeSelector(selector)\n\n      selectorParser((selectorsRoot) => {\n        selectorsRoot.each((sel) => {\n          const targetClass = findSubjectClass(sel)\n\n          if (!targetClass) {\n            return\n          }\n\n          const className = targetClass.value\n\n          if (!className.startsWith(CN_PREFIX)) {\n            return\n          }\n\n          result[className] = result[className]\n            ? `${tailwindClasses} ${result[className]}`\n            : tailwindClasses\n        })\n      }).processSync(normalizedSelector)\n    }\n  })\n\n  return styleMapSchema.parse(result)\n}\n\nfunction normalizeSelector(selector: string) {\n  return selector.replace(/\\s*&\\s*/g, \"\").trim()\n}\n\nfunction extractTailwindClasses(rule: postcss.Rule) {\n  const classes: string[] = []\n\n  for (const node of rule.nodes || []) {\n    if (node.type === \"atrule\" && node.name === \"apply\") {\n      const value = node.params.trim()\n      if (value) {\n        classes.push(value)\n      }\n    }\n  }\n\n  if (classes.length === 0) {\n    return null\n  }\n\n  return classes.join(\" \")\n}\n\nfunction findSubjectClass(selector: SelectorNodeRoot) {\n  const classNodes: ClassName[] = []\n\n  selector.walkClasses((classNode) => {\n    if (classNode.value.startsWith(CN_PREFIX)) {\n      classNodes.push(classNode)\n    }\n  })\n\n  if (classNodes.length === 0) {\n    return null\n  }\n\n  return classNodes[classNodes.length - 1]\n}\n"
  },
  {
    "path": "packages/shadcn/src/styles/transform-style-map.test.ts",
    "content": "import { Project, ScriptKind } from \"ts-morph\"\nimport { describe, expect, it } from \"vitest\"\n\nimport { type StyleMap } from \"./create-style-map\"\nimport { transformStyleMap } from \"./transform-style-map\"\n\nconst baseStyleMap: StyleMap = {\n  \"cn-foo\": \"bg-background gap-4 rounded-xl\",\n}\n\nasync function applyTransform(source: string, styleMap: StyleMap) {\n  const project = new Project({\n    useInMemoryFileSystem: true,\n  })\n\n  const sourceFile = project.createSourceFile(\"component.tsx\", source, {\n    scriptKind: ScriptKind.TSX,\n    overwrite: true,\n  })\n\n  await transformStyleMap({ sourceFile, styleMap })\n\n  return sourceFile.getText()\n}\n\ndescribe(\"transformStyleMap\", () => {\n  it(\"adds tailwind classes to existing cn call\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo existing-class\", className)} {...props} />\n  )\n}\n`\n\n    const result = await applyTransform(source, baseStyleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"bg-background gap-4 rounded-xl existing-class\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"adds tailwind classes to string literal className\", async () => {\n    const source = `import * as React from \"react\"\n\nfunction Foo(props: React.ComponentProps<\"div\">) {\n  return <div className=\"cn-foo\" {...props} />\n}\n`\n\n    const result = await applyTransform(source, baseStyleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n\n      function Foo(props: React.ComponentProps<\"div\">) {\n        return <div className=\"bg-background gap-4 rounded-xl\" {...props} />\n      }\n      \"\n    `)\n  })\n\n  it(\"applies base classes to cva base string\", async () => {\n    const source = `import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"cn-button inline-flex items-center\",\n  {\n    variants: {\n      variant: {\n        default: \"\",\n      },\n    },\n  }\n)\n\nfunction Button({ className, ...props }: React.ComponentProps<\"button\">) {\n  return (\n    <button className={cn(buttonVariants({ className }))} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-button\": \"rounded-lg border text-sm\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cva } from \"class-variance-authority\"\n      import { cn } from \"@/lib/utils\"\n\n      const buttonVariants = cva(\n        \"rounded-lg border text-sm inline-flex items-center\",\n        {\n          variants: {\n            variant: {\n              default: \"\",\n            },\n          },\n        }\n      )\n\n      function Button({ className, ...props }: React.ComponentProps<\"button\">) {\n        return (\n          <button className={cn(buttonVariants({ className }))} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"applies variant classes to cva variant entries\", async () => {\n    const source = `import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"cn-button inline-flex items-center\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-button-variant-default\",\n      },\n    },\n  }\n)\n\nfunction Button({ className, variant = \"default\", ...props }: React.ComponentProps<\"button\">) {\n  return (\n    <button className={cn(buttonVariants({ variant, className }))} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-button-variant-default\": \"text-primary-foreground bg-primary\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cva } from \"class-variance-authority\"\n      import { cn } from \"@/lib/utils\"\n\n      const buttonVariants = cva(\n        \"inline-flex items-center\",\n        {\n          variants: {\n            variant: {\n              default: \"text-primary-foreground bg-primary\",\n            },\n          },\n        }\n      )\n\n      function Button({ className, variant = \"default\", ...props }: React.ComponentProps<\"button\">) {\n        return (\n          <button className={cn(buttonVariants({ variant, className }))} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles multiple cn-* classes in one className\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo cn-bar\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"bg-background gap-4\",\n      \"cn-bar\": \"rounded-xl border\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"bg-background gap-4 rounded-xl border\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"skips cn-* classes not in styleMap\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo cn-unknown\", className)} {...props} />\n  )\n}\n`\n\n    const result = await applyTransform(source, baseStyleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"bg-background gap-4 rounded-xl\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles className with no cn-* classes\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"some-other-class\", className)} {...props} />\n  )\n}\n`\n\n    const result = await applyTransform(source, baseStyleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"some-other-class\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles multiple cn-* classes in cn() arguments\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo\", \"cn-bar\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"bg-background\",\n      \"cn-bar\": \"rounded-xl\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"bg-background rounded-xl\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles size variants in cva\", async () => {\n    const source = `import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"cn-button inline-flex items-center\",\n  {\n    variants: {\n      size: {\n        sm: \"cn-button-size-sm\",\n        lg: \"cn-button-size-lg\",\n      },\n    },\n  }\n)\n\nfunction Button({ className, size = \"sm\", ...props }: React.ComponentProps<\"button\">) {\n  return (\n    <button className={cn(buttonVariants({ size, className }))} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-button-size-sm\": \"h-7 px-2.5\",\n      \"cn-button-size-lg\": \"h-9 px-4\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cva } from \"class-variance-authority\"\n      import { cn } from \"@/lib/utils\"\n\n      const buttonVariants = cva(\n        \"inline-flex items-center\",\n        {\n          variants: {\n            size: {\n              sm: \"h-7 px-2.5\",\n              lg: \"h-9 px-4\",\n            },\n          },\n        }\n      )\n\n      function Button({ className, size = \"sm\", ...props }: React.ComponentProps<\"button\">) {\n        return (\n          <button className={cn(buttonVariants({ size, className }))} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles button with base, variant, and size classes\", async () => {\n    const source = `import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"cn-button inline-flex items-center justify-center\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-button-variant-default\",\n        destructive: \"cn-button-variant-destructive\",\n      },\n      size: {\n        sm: \"cn-button-size-sm\",\n        lg: \"cn-button-size-lg\",\n      },\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant = \"default\",\n  size = \"sm\",\n  ...props\n}: React.ComponentProps<\"button\">) {\n  return (\n    <button className={cn(buttonVariants({ variant, size, className }))} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-button\": \"rounded-lg border font-medium\",\n      \"cn-button-variant-default\": \"bg-primary text-primary-foreground\",\n      \"cn-button-variant-destructive\":\n        \"bg-destructive text-destructive-foreground\",\n      \"cn-button-size-sm\": \"h-8 px-3 text-sm\",\n      \"cn-button-size-lg\": \"h-10 px-6 text-base\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cva } from \"class-variance-authority\"\n      import { cn } from \"@/lib/utils\"\n\n      const buttonVariants = cva(\n        \"rounded-lg border font-medium inline-flex items-center justify-center\",\n        {\n          variants: {\n            variant: {\n              default: \"bg-primary text-primary-foreground\",\n              destructive: \"bg-destructive text-destructive-foreground\",\n            },\n            size: {\n              sm: \"h-8 px-3 text-sm\",\n              lg: \"h-10 px-6 text-base\",\n            },\n          },\n        }\n      )\n\n      function Button({\n        className,\n        variant = \"default\",\n        size = \"sm\",\n        ...props\n      }: React.ComponentProps<\"button\">) {\n        return (\n          <button className={cn(buttonVariants({ variant, size, className }))} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"removes empty string arguments from cn() calls\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo\", \"\", \"existing-class\", \"\")} {...props} />\n  )\n}\n`\n\n    const result = await applyTransform(source, baseStyleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"bg-background gap-4 rounded-xl\", \"existing-class\")} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"prevents duplicate application when cn-* class is in both cva and className\", async () => {\n    const source = `import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\"cn-button\", {\n  variants: {\n    variant: {\n      default: \"\",\n    },\n  },\n})\n\nfunction Button({ className, ...props }: React.ComponentProps<\"button\">) {\n  return (\n    <button className={cn(buttonVariants({ className }), \"cn-button\")} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-button\": \"rounded-lg border\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cva } from \"class-variance-authority\"\n      import { cn } from \"@/lib/utils\"\n\n      const buttonVariants = cva(\"rounded-lg border\", {\n        variants: {\n          variant: {\n            default: \"\",\n          },\n        },\n      })\n\n      function Button({ className, ...props }: React.ComponentProps<\"button\">) {\n        return (\n          <button className={cn(buttonVariants({ className }))} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"applies styles to multiple occurrences of the same cn-* class\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo() {\n  return (\n    <section>\n      <div className=\"cn-foo\" />\n      <div className={cn(\"cn-foo\", \"extra\")} />\n    </section>\n  )\n}\n`\n\n    const result = await applyTransform(source, {\n      \"cn-foo\": \"bg-background gap-4 rounded-xl\",\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo() {\n        return (\n          <section>\n            <div className=\"bg-background gap-4 rounded-xl\" />\n            <div className={cn(\"bg-background gap-4 rounded-xl\", \"extra\")} />\n          </section>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"applies styles to cn-* classes inside mergeProps within useRender\", async () => {\n    const source = `import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cn } from \"@/lib/utils\"\n\nfunction ButtonGroupText({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\">) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(\n          \"cn-button-group-text flex items-center [&_svg]:pointer-events-none\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"button-group-text\",\n    },\n  })\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-button-group-text\": \"text-sm font-medium\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { mergeProps } from \"@base-ui/react/merge-props\"\n      import { useRender } from \"@base-ui/react/use-render\"\n      import { cn } from \"@/lib/utils\"\n\n      function ButtonGroupText({\n        className,\n        render,\n        ...props\n      }: useRender.ComponentProps<\"div\">) {\n        return useRender({\n          defaultTagName: \"div\",\n          props: mergeProps<\"div\">(\n            {\n              className: cn(\n                \"text-sm font-medium flex items-center [&_svg]:pointer-events-none\",\n                className\n              ),\n            },\n            props\n          ),\n          render,\n          state: {\n            slot: \"button-group-text\",\n          },\n        })\n      }\n      \"\n    `)\n  })\n\n  it(\"preserves allowlisted classes even when not in styleMap\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Menu({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"cn-menu-target cn-foo\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"bg-background rounded-lg\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Menu({ className, ...props }: React.ComponentProps<\"div\">) {\n        return (\n          <div className={cn(\"bg-background rounded-lg cn-menu-target\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"preserves allowlisted classes even when in styleMap\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Menu({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(\"cn-menu-target\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-menu-target\": \"z-50 origin-top\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Menu({ className, ...props }: React.ComponentProps<\"div\">) {\n        return (\n          <div className={cn(\"cn-menu-target\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"preserves allowlisted classes in mergeProps within useRender\", async () => {\n    const source = `import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cn } from \"@/lib/utils\"\n\nfunction MenuContent({\n  className,\n  render,\n  ...props\n}: useRender.ComponentProps<\"div\">) {\n  return useRender({\n    defaultTagName: \"div\",\n    props: mergeProps<\"div\">(\n      {\n        className: cn(\n          \"cn-menu-target cn-menu-content flex items-center\",\n          className\n        ),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"menu-content\",\n    },\n  })\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-menu-content\": \"bg-background rounded-md\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { mergeProps } from \"@base-ui/react/merge-props\"\n      import { useRender } from \"@base-ui/react/use-render\"\n      import { cn } from \"@/lib/utils\"\n\n      function MenuContent({\n        className,\n        render,\n        ...props\n      }: useRender.ComponentProps<\"div\">) {\n        return useRender({\n          defaultTagName: \"div\",\n          props: mergeProps<\"div\">(\n            {\n              className: cn(\n                \"bg-background rounded-md cn-menu-target flex items-center\",\n                className\n              ),\n            },\n            props\n          ),\n          render,\n          state: {\n            slot: \"menu-content\",\n          },\n        })\n      }\n      \"\n    `)\n  })\n\n  it(\"deduplicates classes when style map classes overlap with existing\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo bg-background\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"bg-background gap-4 rounded-xl\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    // bg-background should appear only once, not twice.\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"gap-4 rounded-xl bg-background\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles conflicting tailwind classes with tailwind-merge\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo p-4\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"p-2 rounded-xl\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    // p-2 from style map should be overridden by p-4 from existing.\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"rounded-xl p-4\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles conflicting color classes with tailwind-merge\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo bg-primary\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"bg-muted text-foreground\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    // bg-muted from style map should be overridden by bg-primary from existing.\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"text-foreground bg-primary\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles conflicting size classes with tailwind-merge\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo text-lg rounded-lg\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"text-sm rounded-md border\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    // text-sm and rounded-md from style map should be overridden.\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"border text-lg rounded-lg\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles multiple duplicates in cva base and variants\", async () => {\n    const source = `import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"cn-button rounded-md\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-button-default bg-primary\",\n      },\n    },\n  }\n)\n\nfunction Button({ className, ...props }: React.ComponentProps<\"button\">) {\n  return (\n    <button className={cn(buttonVariants({ className }))} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-button\": \"rounded-lg border font-medium\",\n      \"cn-button-default\": \"bg-muted text-foreground\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    // rounded-lg should be overridden by rounded-md, bg-muted should be overridden by bg-primary.\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cva } from \"class-variance-authority\"\n      import { cn } from \"@/lib/utils\"\n\n      const buttonVariants = cva(\n        \"border font-medium rounded-md\",\n        {\n          variants: {\n            variant: {\n              default: \"text-foreground bg-primary\",\n            },\n          },\n        }\n      )\n\n      function Button({ className, ...props }: React.ComponentProps<\"button\">) {\n        return (\n          <button className={cn(buttonVariants({ className }))} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles conflicting spacing classes with tailwind-merge\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo mx-4 py-2\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"mx-2 py-4 flex\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    // mx-2 and py-4 should be overridden by mx-4 and py-2.\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"flex mx-4 py-2\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"handles arbitrary values with tailwind-merge\", async () => {\n    const source = `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Foo({ className, ...props }: { className?: string }) {\n  return (\n    <div className={cn(\"cn-foo p-[20px]\", className)} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-foo\": \"p-4 rounded-xl\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    // p-4 should be overridden by p-[20px].\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cn } from \"@/lib/utils\"\n\n      function Foo({ className, ...props }: { className?: string }) {\n        return (\n          <div className={cn(\"rounded-xl p-[20px]\", className)} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"preserves allowlisted classes in cva base string\", async () => {\n    const source = `import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst menuVariants = cva(\n  \"cn-menu-target cn-menu inline-flex items-center\",\n  {\n    variants: {\n      variant: {\n        default: \"\",\n      },\n    },\n  }\n)\n\nfunction Menu({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div className={cn(menuVariants({ className }))} {...props} />\n  )\n}\n`\n\n    const styleMap: StyleMap = {\n      \"cn-menu\": \"bg-background rounded-lg\",\n    }\n\n    const result = await applyTransform(source, styleMap)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { cva } from \"class-variance-authority\"\n      import { cn } from \"@/lib/utils\"\n\n      const menuVariants = cva(\n        \"bg-background rounded-lg cn-menu-target inline-flex items-center\",\n        {\n          variants: {\n            variant: {\n              default: \"\",\n            },\n          },\n        }\n      )\n\n      function Menu({ className, ...props }: React.ComponentProps<\"div\">) {\n        return (\n          <div className={cn(menuVariants({ className }))} {...props} />\n        )\n      }\n      \"\n    `)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/styles/transform-style-map.ts",
    "content": "import { TransformerStyle } from \"@/src/styles/transform\"\nimport { twMerge } from \"tailwind-merge\"\nimport {\n  Node,\n  type CallExpression,\n  type NoSubstitutionTemplateLiteral,\n  type SourceFile,\n  type StringLiteral,\n} from \"ts-morph\"\n\nimport { type StyleMap } from \"./create-style-map\"\n\n/**\n * Classes that should never be removed during transformation.\n * These are typically used as CSS selectors or for other purposes\n * that require the class name to remain in the code.\n */\n// TODO: all cn-* classes to be allowedlisted.\nconst ALLOWLIST = new Set([\n  \"cn-menu-target\",\n  \"cn-menu-translucent\",\n  \"cn-logical-sides\",\n  \"cn-rtl-flip\",\n  \"cn-font-heading\",\n])\n\nfunction isStringLiteralLike(\n  node: Node\n): node is StringLiteral | NoSubstitutionTemplateLiteral {\n  return (\n    Node.isStringLiteral(node) || Node.isNoSubstitutionTemplateLiteral(node)\n  )\n}\n\nexport const transformStyleMap: TransformerStyle<SourceFile> = async ({\n  sourceFile,\n  styleMap,\n}) => {\n  const matchedClasses = new Set<string>()\n\n  applyToCvaCalls(sourceFile, styleMap, matchedClasses)\n  applyToClassNameAttributes(sourceFile, styleMap, matchedClasses)\n  applyToMergePropsCalls(sourceFile, styleMap, matchedClasses)\n\n  return sourceFile\n}\n\nfunction applyStyleToCvaString(\n  stringNode: StringLiteral,\n  styleMap: StyleMap,\n  matchedClasses: Set<string>\n) {\n  const stringValue = stringNode.getLiteralText()\n  const cnClasses = extractCnClasses(stringValue)\n\n  if (cnClasses.length === 0) {\n    return\n  }\n\n  // Process all cn-* classes, not just the first one\n  const unmatchedClasses = cnClasses.filter(\n    (cnClass) => !matchedClasses.has(cnClass)\n  )\n\n  if (unmatchedClasses.length === 0) {\n    // All classes already matched, just clean up non-allowlisted ones\n    const updated = removeCnClasses(stringValue)\n    stringNode.setLiteralValue(updated)\n    return\n  }\n\n  // Skip allowlisted classes — they are handled at CLI install time.\n  const classesToInline = unmatchedClasses.filter(\n    (cnClass) => !ALLOWLIST.has(cnClass)\n  )\n\n  const tailwindClassesToApply = classesToInline\n    .map((cnClass) => styleMap[cnClass])\n    .filter((classes): classes is string => Boolean(classes))\n\n  if (tailwindClassesToApply.length > 0) {\n    const mergedClasses = tailwindClassesToApply.join(\" \")\n    const updated = removeCnClasses(mergeClasses(mergedClasses, stringValue))\n    stringNode.setLiteralValue(updated)\n    unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n  } else {\n    // No styles to apply, but still need to clean up non-allowlisted classes.\n    const updated = removeCnClasses(stringValue)\n    stringNode.setLiteralValue(updated)\n  }\n}\n\nfunction applyToCvaCalls(\n  sourceFile: SourceFile,\n  styleMap: StyleMap,\n  matchedClasses: Set<string>\n) {\n  sourceFile.forEachDescendant((node) => {\n    if (!Node.isCallExpression(node)) {\n      return\n    }\n\n    const expression = node.getExpression()\n    if (!Node.isIdentifier(expression) || expression.getText() !== \"cva\") {\n      return\n    }\n\n    const baseArg = node.getArguments()[0]\n    if (Node.isStringLiteral(baseArg)) {\n      applyStyleToCvaString(baseArg, styleMap, matchedClasses)\n    }\n\n    const configArg = node.getArguments()[1]\n    if (!configArg || !Node.isObjectLiteralExpression(configArg)) {\n      return\n    }\n\n    const variantsProp = configArg\n      .getProperties()\n      .find(\n        (prop) =>\n          Node.isPropertyAssignment(prop) &&\n          Node.isIdentifier(prop.getNameNode()) &&\n          prop.getNameNode().getText() === \"variants\"\n      )\n\n    if (!variantsProp || !Node.isPropertyAssignment(variantsProp)) {\n      return\n    }\n\n    const variantsObj = variantsProp.getInitializer()\n    if (!variantsObj || !Node.isObjectLiteralExpression(variantsObj)) {\n      return\n    }\n\n    variantsObj.getProperties().forEach((typeProp) => {\n      if (!Node.isPropertyAssignment(typeProp)) {\n        return\n      }\n\n      const typeObj = typeProp.getInitializer()\n      if (!typeObj || !Node.isObjectLiteralExpression(typeObj)) {\n        return\n      }\n\n      typeObj.getProperties().forEach((variantProp) => {\n        if (!Node.isPropertyAssignment(variantProp)) {\n          return\n        }\n\n        const variantValue = variantProp.getInitializer()\n        if (variantValue && Node.isStringLiteral(variantValue)) {\n          applyStyleToCvaString(variantValue, styleMap, matchedClasses)\n        }\n      })\n    })\n  })\n}\n\nfunction applyToClassNameAttributes(\n  sourceFile: SourceFile,\n  styleMap: StyleMap,\n  matchedClasses: Set<string>\n) {\n  sourceFile.forEachDescendant((node) => {\n    if (\n      !Node.isJsxAttribute(node) ||\n      node.getNameNode().getText() !== \"className\"\n    ) {\n      return\n    }\n\n    const initializer = node.getInitializer()\n    if (!initializer) {\n      return\n    }\n\n    const cnClasses = extractCnClassesFromAttribute(initializer)\n\n    if (cnClasses.length === 0) {\n      return\n    }\n\n    const jsxElement = node.getParent()?.getParent()\n    if (\n      !jsxElement ||\n      (!Node.isJsxOpeningElement(jsxElement) &&\n        !Node.isJsxSelfClosingElement(jsxElement))\n    ) {\n      return\n    }\n\n    const unmatchedClasses = cnClasses.filter(\n      (cnClass) => !matchedClasses.has(cnClass)\n    )\n\n    if (unmatchedClasses.length === 0) {\n      // Even if all classes are already matched, we still need to clean them up\n      cleanCnClassesFromAttribute(initializer)\n      return\n    }\n\n    // Skip allowlisted classes — they are handled at CLI install time.\n    const classesToInline = unmatchedClasses.filter(\n      (cnClass) => !ALLOWLIST.has(cnClass)\n    )\n\n    const tailwindClassesToApply = classesToInline\n      .map((cnClass) => styleMap[cnClass])\n      .filter((classes): classes is string => Boolean(classes))\n\n    if (tailwindClassesToApply.length > 0) {\n      const mergedClasses = tailwindClassesToApply.join(\" \")\n      applyClassesToElement(jsxElement, mergedClasses)\n    } else {\n      cleanCnClassesFromAttribute(initializer)\n    }\n  })\n}\n\nfunction extractCnClassesFromAttribute(initializer: Node) {\n  const classes: string[] = []\n\n  if (isStringLiteralLike(initializer)) {\n    return extractCnClasses(initializer.getLiteralText())\n  }\n\n  if (!Node.isJsxExpression(initializer)) {\n    return classes\n  }\n\n  const expression = initializer.getExpression()\n  if (!expression) {\n    return classes\n  }\n\n  if (isStringLiteralLike(expression)) {\n    return extractCnClasses(expression.getLiteralText())\n  }\n\n  if (Node.isCallExpression(expression) && isCnCall(expression)) {\n    for (const argument of expression.getArguments()) {\n      if (isStringLiteralLike(argument)) {\n        classes.push(...extractCnClasses(argument.getLiteralText()))\n      }\n    }\n  }\n\n  return classes\n}\n\nfunction cleanCnClassesFromAttribute(initializer: Node) {\n  if (isStringLiteralLike(initializer)) {\n    const cleaned = removeCnClasses(initializer.getLiteralText())\n    initializer.setLiteralValue(cleaned)\n    return\n  }\n\n  if (!Node.isJsxExpression(initializer)) {\n    return\n  }\n\n  const expression = initializer.getExpression()\n  if (!expression) {\n    return\n  }\n\n  if (isStringLiteralLike(expression)) {\n    const cleaned = removeCnClasses(expression.getLiteralText())\n    expression.setLiteralValue(cleaned)\n    return\n  }\n\n  if (Node.isCallExpression(expression) && isCnCall(expression)) {\n    for (const argument of expression.getArguments()) {\n      if (isStringLiteralLike(argument)) {\n        const cleaned = removeCnClasses(argument.getLiteralText())\n        argument.setLiteralValue(cleaned)\n      }\n    }\n\n    removeEmptyArgumentsFromCnCall(expression)\n  }\n}\n\nfunction extractCnClasses(str: string) {\n  const matches = str.matchAll(/\\bcn-[\\w-]+\\b/g)\n  return Array.from(matches, (match) => match[0])\n}\n\nfunction extractCnClass(str: string) {\n  const classes = extractCnClasses(str)\n  return classes[0] ?? null\n}\n\nfunction removeCnClasses(str: string) {\n  return str\n    .replace(/\\bcn-[\\w-]+\\b/g, (match) => {\n      // Preserve allowlisted classes\n      if (ALLOWLIST.has(match)) {\n        return match\n      }\n      return \"\"\n    })\n    .replace(/\\s+/g, \" \")\n    .trim()\n}\n\nfunction removeEmptyArgumentsFromCnCall(callExpression: CallExpression) {\n  if (!isCnCall(callExpression)) {\n    return\n  }\n\n  const args = callExpression.getArguments()\n  const nonEmptyArgs = args.filter((arg) => {\n    if (isStringLiteralLike(arg)) {\n      const text = arg.getLiteralText().trim()\n      return text !== \"\"\n    }\n    return true\n  })\n\n  if (nonEmptyArgs.length !== args.length) {\n    const argTexts = nonEmptyArgs.map((arg) => arg.getText())\n    const parent = callExpression.getParent()\n    if (parent && Node.isJsxExpression(parent)) {\n      parent.replaceWithText(`{cn(${argTexts.join(\", \")})}`)\n    } else {\n      callExpression.replaceWithText(`cn(${argTexts.join(\", \")})`)\n    }\n  }\n}\n\nfunction applyClassesToElement(element: Node, tailwindClasses: string) {\n  if (\n    !Node.isJsxOpeningElement(element) &&\n    !Node.isJsxSelfClosingElement(element)\n  ) {\n    return\n  }\n\n  const attribute = element\n    .getAttributes()\n    .find(\n      (attr) =>\n        Node.isJsxAttribute(attr) &&\n        attr.getNameNode().getText() === \"className\"\n    )\n\n  if (!attribute || !Node.isJsxAttribute(attribute)) {\n    element.addAttribute({\n      name: \"className\",\n      initializer: `{cn(${JSON.stringify(tailwindClasses)})}`,\n    })\n    return\n  }\n\n  const initializer = attribute.getInitializer()\n\n  if (!initializer) {\n    attribute.setInitializer(`{cn(${JSON.stringify(tailwindClasses)})}`)\n    return\n  }\n\n  if (isStringLiteralLike(initializer)) {\n    const existing = initializer.getLiteralText()\n    const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n    initializer.setLiteralValue(updated)\n    return\n  }\n\n  if (!Node.isJsxExpression(initializer)) {\n    return\n  }\n\n  const expression = initializer.getExpression()\n\n  if (!expression) {\n    attribute.setInitializer(`{cn(${JSON.stringify(tailwindClasses)})}`)\n    return\n  }\n\n  if (isStringLiteralLike(expression)) {\n    const existing = expression.getLiteralText()\n    const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n    expression.setLiteralValue(updated)\n    return\n  }\n\n  if (Node.isCallExpression(expression) && isCnCall(expression)) {\n    const firstArg = expression.getArguments()[0]\n    if (isStringLiteralLike(firstArg)) {\n      const existing = firstArg.getLiteralText()\n      const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n      firstArg.setLiteralValue(updated)\n\n      for (let i = 1; i < expression.getArguments().length; i++) {\n        const arg = expression.getArguments()[i]\n        if (isStringLiteralLike(arg)) {\n          const argText = arg.getLiteralText()\n          const cleaned = removeCnClasses(argText)\n          if (cleaned !== argText) {\n            arg.setLiteralValue(cleaned)\n          }\n        }\n      }\n\n      removeEmptyArgumentsFromCnCall(expression)\n      return\n    }\n\n    const argumentTexts = expression\n      .getArguments()\n      .map((argument) => {\n        if (isStringLiteralLike(argument)) {\n          const cleaned = removeCnClasses(argument.getLiteralText())\n          return cleaned ? JSON.stringify(cleaned) : null\n        }\n        return argument.getText()\n      })\n      .filter((arg): arg is string => arg !== null)\n\n    const updatedArguments = [JSON.stringify(tailwindClasses), ...argumentTexts]\n\n    attribute.setInitializer(`{cn(${updatedArguments.join(\", \")})}`)\n    return\n  }\n\n  attribute.setInitializer(\n    `{cn(${JSON.stringify(tailwindClasses)}, ${expression.getText()})}`\n  )\n}\n\nfunction mergeClasses(newClasses: string, existing: string) {\n  return twMerge(newClasses, existing)\n}\n\nfunction isCnCall(call: CallExpression) {\n  const expression = call.getExpression()\n  return Node.isIdentifier(expression) && expression.getText() === \"cn\"\n}\n\nfunction applyToMergePropsCalls(\n  sourceFile: SourceFile,\n  styleMap: StyleMap,\n  matchedClasses: Set<string>\n) {\n  sourceFile.forEachDescendant((node) => {\n    if (!Node.isCallExpression(node)) {\n      return\n    }\n\n    const expression = node.getExpression()\n    if (\n      !Node.isIdentifier(expression) ||\n      expression.getText() !== \"mergeProps\"\n    ) {\n      return\n    }\n\n    // Look for object literals in mergeProps arguments\n    for (const arg of node.getArguments()) {\n      if (!Node.isObjectLiteralExpression(arg)) {\n        continue\n      }\n\n      // Find className property in the object literal\n      const classNameProp = arg\n        .getProperties()\n        .find(\n          (prop) =>\n            Node.isPropertyAssignment(prop) &&\n            Node.isIdentifier(prop.getNameNode()) &&\n            prop.getNameNode().getText() === \"className\"\n        )\n\n      if (!classNameProp || !Node.isPropertyAssignment(classNameProp)) {\n        continue\n      }\n\n      const classNameInitializer = classNameProp.getInitializer()\n      if (!classNameInitializer) {\n        continue\n      }\n\n      // Handle cn() calls in className\n      if (\n        Node.isCallExpression(classNameInitializer) &&\n        isCnCall(classNameInitializer)\n      ) {\n        const cnClasses = extractCnClassesFromCnCall(classNameInitializer)\n\n        if (cnClasses.length === 0) {\n          continue\n        }\n\n        const unmatchedClasses = cnClasses.filter(\n          (cnClass) => !matchedClasses.has(cnClass)\n        )\n\n        if (unmatchedClasses.length === 0) {\n          // Clean up cn-* classes even if already matched\n          cleanCnClassesFromCnCall(classNameInitializer)\n          continue\n        }\n\n        // Skip allowlisted classes — they are handled at CLI install time.\n        const classesToInline = unmatchedClasses.filter(\n          (cnClass) => !ALLOWLIST.has(cnClass)\n        )\n\n        const tailwindClassesToApply = classesToInline\n          .map((cnClass) => styleMap[cnClass])\n          .filter((classes): classes is string => Boolean(classes))\n\n        if (tailwindClassesToApply.length > 0) {\n          const mergedClasses = tailwindClassesToApply.join(\" \")\n          applyClassesToCnCall(\n            classNameInitializer,\n            mergedClasses,\n            matchedClasses,\n            unmatchedClasses\n          )\n        } else {\n          cleanCnClassesFromCnCall(classNameInitializer)\n        }\n      }\n    }\n  })\n}\n\nfunction extractCnClassesFromCnCall(cnCall: CallExpression): string[] {\n  const classes: string[] = []\n\n  for (const argument of cnCall.getArguments()) {\n    if (isStringLiteralLike(argument)) {\n      classes.push(...extractCnClasses(argument.getLiteralText()))\n    }\n  }\n\n  return classes\n}\n\nfunction cleanCnClassesFromCnCall(cnCall: CallExpression) {\n  for (const argument of cnCall.getArguments()) {\n    if (isStringLiteralLike(argument)) {\n      const cleaned = removeCnClasses(argument.getLiteralText())\n      argument.setLiteralValue(cleaned)\n    }\n  }\n\n  removeEmptyArgumentsFromCnCall(cnCall)\n}\n\nfunction applyClassesToCnCall(\n  cnCall: CallExpression,\n  tailwindClasses: string,\n  matchedClasses: Set<string>,\n  unmatchedClasses: string[]\n) {\n  const firstArg = cnCall.getArguments()[0]\n\n  if (isStringLiteralLike(firstArg)) {\n    const existing = firstArg.getLiteralText()\n    const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n    firstArg.setLiteralValue(updated)\n\n    // Mark classes as matched\n    unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n\n    // Clean up cn-* classes from remaining arguments\n    for (let i = 1; i < cnCall.getArguments().length; i++) {\n      const arg = cnCall.getArguments()[i]\n      if (isStringLiteralLike(arg)) {\n        const argText = arg.getLiteralText()\n        const cleaned = removeCnClasses(argText)\n        if (cleaned !== argText) {\n          arg.setLiteralValue(cleaned)\n        }\n      }\n    }\n\n    removeEmptyArgumentsFromCnCall(cnCall)\n    return\n  }\n\n  // If first arg is not a string literal, prepend tailwind classes\n  const argumentTexts = cnCall\n    .getArguments()\n    .map((argument) => {\n      if (isStringLiteralLike(argument)) {\n        const cleaned = removeCnClasses(argument.getLiteralText())\n        return cleaned ? JSON.stringify(cleaned) : null\n      }\n      return argument.getText()\n    })\n    .filter((arg): arg is string => arg !== null)\n\n  const updatedArguments = [JSON.stringify(tailwindClasses), ...argumentTexts]\n\n  // Mark classes as matched\n  unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n\n  const parent = cnCall.getParent()\n  if (parent) {\n    cnCall.replaceWithText(`cn(${updatedArguments.join(\", \")})`)\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/styles/transform.ts",
    "content": "import { Project, ScriptKind, type SourceFile } from \"ts-morph\"\n\nimport { type StyleMap } from \"./create-style-map\"\nimport { transformStyleMap } from \"./transform-style-map\"\n\nexport type TransformerStyle<Output = SourceFile> = (opts: {\n  sourceFile: SourceFile\n  styleMap: StyleMap\n}) => Promise<Output>\n\nexport async function transformStyle(\n  source: string,\n  {\n    styleMap,\n    transformers = [transformStyleMap],\n  }: {\n    styleMap: StyleMap\n    transformers?: TransformerStyle<SourceFile>[]\n  }\n) {\n  const project = new Project({\n    useInMemoryFileSystem: true,\n  })\n\n  const sourceFile = project.createSourceFile(\"component.tsx\", source, {\n    scriptKind: ScriptKind.TSX,\n    overwrite: true,\n  })\n\n  for (const transformer of transformers) {\n    await transformer({ sourceFile, styleMap })\n  }\n\n  return sourceFile.getText()\n}\n"
  },
  {
    "path": "packages/shadcn/src/tailwind.css",
    "content": "@theme inline {\n  @keyframes accordion-down {\n    from {\n      height: 0;\n    }\n    to {\n      height: var(\n        --radix-accordion-content-height,\n        var(--accordion-panel-height, auto)\n      );\n    }\n  }\n\n  @keyframes accordion-up {\n    from {\n      height: var(\n        --radix-accordion-content-height,\n        var(--accordion-panel-height, auto)\n      );\n    }\n    to {\n      height: 0;\n    }\n  }\n}\n\n/* Custom variants */\n@custom-variant data-open {\n  &:where([data-state=\"open\"]),\n  &:where([data-open]:not([data-open=\"false\"])) {\n    @slot;\n  }\n}\n\n@custom-variant data-closed {\n  &:where([data-state=\"closed\"]),\n  &:where([data-closed]:not([data-closed=\"false\"])) {\n    @slot;\n  }\n}\n\n@custom-variant data-checked {\n  &:where([data-state=\"checked\"]),\n  &:where([data-checked]:not([data-checked=\"false\"])) {\n    @slot;\n  }\n}\n\n@custom-variant data-unchecked {\n  &:where([data-state=\"unchecked\"]),\n  &:where([data-unchecked]:not([data-unchecked=\"false\"])) {\n    @slot;\n  }\n}\n\n@custom-variant data-selected {\n  &:where([data-selected=\"true\"]) {\n    @slot;\n  }\n}\n\n@custom-variant data-disabled {\n  &:where([data-disabled=\"true\"]),\n  &:where([data-disabled]:not([data-disabled=\"false\"])) {\n    @slot;\n  }\n}\n\n@custom-variant data-active {\n  &:where([data-state=\"active\"]),\n  &:where([data-active]:not([data-active=\"false\"])) {\n    @slot;\n  }\n}\n\n@custom-variant data-horizontal {\n  &:where([data-orientation=\"horizontal\"]) {\n    @slot;\n  }\n}\n\n@custom-variant data-vertical {\n  &:where([data-orientation=\"vertical\"]) {\n    @slot;\n  }\n}\n\n@utility no-scrollbar {\n  -ms-overflow-style: none;\n  scrollbar-width: none;\n\n  &::-webkit-scrollbar {\n    display: none;\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/templates/astro.ts",
    "content": "import dedent from \"dedent\"\n\nimport { createTemplate } from \"./create-template\"\nimport { fontsourceMonorepoInit } from \"./monorepo\"\n\nexport const astro = createTemplate({\n  name: \"astro\",\n  title: \"Astro\",\n  defaultProjectName: \"astro-app\",\n  templateDir: \"astro-app\",\n  frameworks: [\"astro\"],\n  create: async () => {\n    // Empty for now.\n  },\n  files: [\n    {\n      type: \"registry:page\",\n      path: \"src/pages/index.astro\",\n      target: \"src/pages/index.astro\",\n      content: dedent`---\nimport Layout from \"@/layouts/main.astro\"\nimport { ComponentExample } from \"@/components/component-example\"\n---\n\n<Layout>\n  <ComponentExample client:load />\n</Layout>\n`,\n    },\n  ],\n  monorepo: {\n    templateDir: \"astro-monorepo\",\n    init: fontsourceMonorepoInit,\n    files: [\n      {\n        type: \"registry:page\",\n        path: \"src/pages/index.astro\",\n        target: \"src/pages/index.astro\",\n        content: dedent`---\nimport \"@workspace/ui/globals.css\"\nimport { ComponentExample } from \"@/components/component-example\"\n---\n\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width\" />\n    <title>Astro App</title>\n  </head>\n  <body>\n    <ComponentExample client:load />\n  </body>\n</html>\n`,\n      },\n    ],\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/src/templates/create-template.ts",
    "content": "import os from \"os\"\nimport path from \"path\"\nimport type { RegistryItem } from \"@/src/registry/schema\"\nimport type { Config } from \"@/src/utils/get-config\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { execa } from \"execa\"\nimport fs from \"fs-extra\"\n\nconst GITHUB_REPO_URL =\n  process.env.SHADCN_GITHUB_URL ?? \"https://github.com/shadcn-ui/ui.git\"\n\nexport interface TemplateOptions {\n  projectPath: string\n  packageManager: string\n  cwd: string\n}\n\nexport interface TemplateInitOptions {\n  projectPath: string\n  components: string[]\n  registryBaseConfig?: Record<string, unknown>\n  rtl: boolean\n  menuColor?: string\n  menuAccent?: string\n  iconLibrary?: string\n  silent: boolean\n}\n\nexport interface TemplateConfig {\n  name: string\n  title: string\n  description?: string\n  defaultProjectName: string\n  // The template directory name (e.g. \"next-app\", \"vite-app\").\n  templateDir: string\n  // Framework names that map to this template.\n  frameworks?: string[]\n  scaffold?: (options: TemplateOptions) => Promise<void>\n  create: (options: TemplateOptions) => Promise<void>\n  init?: (options: TemplateInitOptions) => Promise<Config>\n  files?: RegistryItem[\"files\"]\n  postInit?: (options: { projectPath: string }) => Promise<void>\n  // Monorepo overrides. When --monorepo is passed, these fields\n  // are merged over the base template config.\n  monorepo?: {\n    templateDir: string\n    defaultProjectName?: string\n    init?: (options: TemplateInitOptions) => Promise<Config>\n    files?: RegistryItem[\"files\"]\n  }\n}\n\nexport function createTemplate(config: TemplateConfig) {\n  return {\n    ...config,\n    frameworks: config.frameworks ?? [],\n    scaffold:\n      config.scaffold ??\n      defaultScaffold({\n        title: config.title,\n        templateDir: config.templateDir,\n      }),\n    postInit: config.postInit ?? defaultPostInit,\n  }\n}\n\n// Resolve effective template config for --monorepo mode.\nexport function resolveTemplate(\n  template: ReturnType<typeof createTemplate>,\n  { monorepo }: { monorepo?: boolean }\n) {\n  if (!monorepo || !template.monorepo) {\n    return template\n  }\n\n  const m = template.monorepo\n  const resolved = {\n    ...template,\n    templateDir: m.templateDir,\n    defaultProjectName: m.defaultProjectName ?? m.templateDir,\n    init: m.init ?? template.init,\n    files: m.files ?? template.files,\n  }\n\n  // Rebuild scaffold with monorepo overrides.\n  resolved.scaffold = defaultScaffold({\n    title: template.title,\n    templateDir: m.templateDir,\n  })\n\n  return resolved\n}\n\n// Get the appropriate install args for the given package manager.\nfunction getInstallArgs(packageManager: string): string[] {\n  switch (packageManager) {\n    case \"pnpm\":\n      // pnpm enables frozen lockfile in CI by default.\n      // The template lockfile may drift, so force-disable it explicitly.\n      return [\"--no-frozen-lockfile\"]\n    default:\n      return []\n  }\n}\n\n// Adapt a pnpm-based monorepo template to the target package manager.\nasync function adaptWorkspaceConfig(\n  projectPath: string,\n  packageManager: string\n) {\n  if (packageManager === \"pnpm\") {\n    return\n  }\n\n  const pnpmWorkspacePath = path.join(projectPath, \"pnpm-workspace.yaml\")\n  const packageJsonPath = path.join(projectPath, \"package.json\")\n\n  // Remove pnpm-lock.yaml.\n  const lockFilePath = path.join(projectPath, \"pnpm-lock.yaml\")\n  if (fs.existsSync(lockFilePath)) {\n    await fs.remove(lockFilePath)\n  }\n\n  const isMonorepo = fs.existsSync(pnpmWorkspacePath)\n\n  // Update root package.json: strip \"packageManager\" field to avoid\n  // triggering Corepack, and add \"workspaces\" for npm/bun/yarn.\n  if (fs.existsSync(packageJsonPath)) {\n    const packageJsonContent = await fs.readFile(packageJsonPath, \"utf8\")\n    const packageJson = JSON.parse(packageJsonContent)\n    delete packageJson.packageManager\n\n    if (isMonorepo) {\n      // Read workspace patterns from pnpm-workspace.yaml.\n      const workspaceContent = await fs.readFile(pnpmWorkspacePath, \"utf8\")\n      const patterns: string[] = []\n      for (const line of workspaceContent.split(\"\\n\")) {\n        const match = line.match(/^\\s*-\\s*[\"']?(.+?)[\"']?\\s*$/)\n        if (match) {\n          patterns.push(match[1])\n        }\n      }\n\n      packageJson.workspaces = patterns\n      await fs.remove(pnpmWorkspacePath)\n    }\n\n    await fs.writeFile(\n      packageJsonPath,\n      JSON.stringify(packageJson, null, 2) + \"\\n\"\n    )\n  }\n\n  // Rewrite workspace: protocol references in nested package.json files.\n  // npm does not support workspace: protocol; bun and yarn do, so only\n  // rewrite for npm monorepo templates.\n  if (isMonorepo && packageManager === \"npm\") {\n    await rewriteWorkspaceProtocol(projectPath)\n  }\n}\n\n// Recursively find all package.json files and replace workspace: protocol\n// version specifiers with \"*\", which npm understands.\nasync function rewriteWorkspaceProtocol(dir: string) {\n  const entries = await fs.readdir(dir, { withFileTypes: true })\n  for (const entry of entries) {\n    if (entry.name === \"node_modules\") continue\n    const fullPath = path.join(dir, entry.name)\n    if (entry.isDirectory()) {\n      await rewriteWorkspaceProtocol(fullPath)\n    } else if (entry.name === \"package.json\") {\n      const content = await fs.readFile(fullPath, \"utf8\")\n      if (!content.includes(\"workspace:\")) continue\n      const pkg = JSON.parse(content)\n      let changed = false\n      for (const depKey of [\n        \"dependencies\",\n        \"devDependencies\",\n        \"peerDependencies\",\n        \"optionalDependencies\",\n      ]) {\n        const deps = pkg[depKey]\n        if (!deps) continue\n        for (const [name, version] of Object.entries(deps)) {\n          if (typeof version === \"string\" && version.startsWith(\"workspace:\")) {\n            deps[name] = \"*\"\n            changed = true\n          }\n        }\n      }\n      if (changed) {\n        await fs.writeFile(fullPath, JSON.stringify(pkg, null, 2) + \"\\n\")\n      }\n    }\n  }\n}\n\n// Default scaffold that downloads a template from GitHub.\nfunction defaultScaffold({\n  title,\n  templateDir,\n}: {\n  title: string\n  templateDir: string\n}) {\n  return async ({ projectPath, packageManager }: TemplateOptions) => {\n    const createSpinner = spinner(\n      `Creating a new ${title} project. This may take a few minutes.`\n    ).start()\n\n    try {\n      const localTemplateDir = process.env.SHADCN_TEMPLATE_DIR\n      if (localTemplateDir) {\n        // Use local template directory for development.\n        const localTemplatePath = path.resolve(localTemplateDir, templateDir)\n        await fs.copy(localTemplatePath, projectPath, {\n          filter: (src) => !src.includes(\"node_modules\"),\n        })\n      } else {\n        // Clone only the template directory from GitHub using sparse checkout.\n        const templatePath = path.join(\n          os.tmpdir(),\n          `shadcn-template-${Date.now()}`\n        )\n        await execa(\"git\", [\n          \"clone\",\n          \"--depth\",\n          \"1\",\n          \"--filter=blob:none\",\n          \"--sparse\",\n          GITHUB_REPO_URL,\n          templatePath,\n        ])\n        await execa(\"git\", [\n          \"-C\",\n          templatePath,\n          \"sparse-checkout\",\n          \"set\",\n          `templates/${templateDir}`,\n        ])\n\n        const extractedPath = path.resolve(\n          templatePath,\n          \"templates\",\n          templateDir\n        )\n        await fs.move(extractedPath, projectPath)\n        await fs.remove(templatePath)\n      }\n\n      // Adapt workspace config and lockfiles for the target package manager.\n      await adaptWorkspaceConfig(projectPath, packageManager)\n\n      // Run install.\n      const installArgs = getInstallArgs(packageManager)\n      const args = [\"install\", ...installArgs]\n      await execa(packageManager, args, {\n        cwd: projectPath,\n      })\n\n      // Write project name to the package.json.\n      const packageJsonPath = path.join(projectPath, \"package.json\")\n      if (fs.existsSync(packageJsonPath)) {\n        const packageJsonContent = await fs.readFile(packageJsonPath, \"utf8\")\n        const packageJson = JSON.parse(packageJsonContent)\n        packageJson.name = path.basename(projectPath)\n        await fs.writeFile(\n          packageJsonPath,\n          JSON.stringify(packageJson, null, 2) + \"\\n\"\n        )\n      }\n\n      createSpinner?.succeed(`Creating a new ${title} project.`)\n    } catch (error) {\n      createSpinner?.fail(\n        `Something went wrong creating a new ${title} project.`\n      )\n      handleError(error)\n    }\n  }\n}\n\n// Initialize a git repository and create an initial commit.\n// Silently ignores failures (e.g. git not installed).\nasync function defaultPostInit({ projectPath }: { projectPath: string }) {\n  try {\n    await execa(\"git\", [\"init\"], { cwd: projectPath })\n    await execa(\"git\", [\"add\", \"-A\"], { cwd: projectPath })\n    await execa(\"git\", [\"commit\", \"-m\", \"feat: initial commit\"], {\n      cwd: projectPath,\n    })\n  } catch {}\n}\n"
  },
  {
    "path": "packages/shadcn/src/templates/index.ts",
    "content": "import { astro } from \"./astro\"\nimport { laravel } from \"./laravel\"\nimport { next } from \"./next\"\nimport { reactRouter } from \"./react-router\"\nimport { start } from \"./start\"\nimport { vite } from \"./vite\"\n\nexport { createTemplate, resolveTemplate } from \"./create-template\"\nexport type { TemplateInitOptions, TemplateOptions } from \"./create-template\"\n\nexport const templates = {\n  next,\n  vite,\n  start,\n  \"react-router\": reactRouter,\n  astro,\n  laravel,\n}\n\n// Resolve a template key from a detected framework name.\nexport function getTemplateForFramework(frameworkName?: string) {\n  if (!frameworkName) {\n    return undefined\n  }\n\n  for (const [key, template] of Object.entries(templates)) {\n    if (template.frameworks.includes(frameworkName)) {\n      return key\n    }\n  }\n\n  return undefined\n}\n"
  },
  {
    "path": "packages/shadcn/src/templates/laravel.ts",
    "content": "import { SHADCN_URL } from \"@/src/registry/constants\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\n\nimport { createTemplate } from \"./create-template\"\n\nexport const laravel = createTemplate({\n  name: \"laravel\",\n  title: \"Laravel\",\n  description: \"Requires `laravel new`\",\n  defaultProjectName: \"laravel-app\",\n  templateDir: \"laravel-app\",\n  frameworks: [\"laravel\"],\n  scaffold: async () => {\n    logger.break()\n    logger.log(\n      `  Please create a new app with ${highlighter.info(\n        \"laravel new --react\"\n      )} first then run ${highlighter.info(\"shadcn init\")}.`\n    )\n    logger.log(\n      `  See ${highlighter.info(\n        `${SHADCN_URL}/docs/installation/laravel`\n      )} for more information.`\n    )\n    logger.break()\n    process.exit(0)\n  },\n  create: async () => {\n    // Not used — scaffold exits early.\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/src/templates/monorepo.ts",
    "content": "import path from \"path\"\nimport { iconLibraries, type IconLibraryName } from \"@/src/icons/libraries\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport { resolveRegistryTree } from \"@/src/registry/resolver\"\nimport { rawConfigSchema } from \"@/src/schema\"\nimport { addComponents } from \"@/src/utils/add-components\"\nimport { resolveConfigPaths } from \"@/src/utils/get-config\"\nimport { ensureRegistriesInConfig } from \"@/src/utils/registries\"\nimport { updateCss } from \"@/src/utils/updaters/update-css\"\nimport { updateCssVars } from \"@/src/utils/updaters/update-css-vars\"\nimport { updateDependencies } from \"@/src/utils/updaters/update-dependencies\"\nimport deepmerge from \"deepmerge\"\nimport fs from \"fs-extra\"\n\nimport type { TemplateInitOptions } from \"./create-template\"\n\n// Shared monorepo init for non-Next.js templates (vite, react-router, start).\n// Uses fontsource for fonts instead of next/font.\nexport async function fontsourceMonorepoInit(options: TemplateInitOptions) {\n  const packagesUiPath = path.resolve(options.projectPath, \"packages/ui\")\n  const appsWebPath = path.resolve(options.projectPath, \"apps/web\")\n\n  // Update packages/ui/components.json.\n  const packagesUiConfigPath = path.resolve(packagesUiPath, \"components.json\")\n  let packagesUiConfig = await fs.readJson(packagesUiConfigPath)\n  if (options.registryBaseConfig) {\n    packagesUiConfig = deepmerge(packagesUiConfig, options.registryBaseConfig)\n  }\n  packagesUiConfig.tailwind.baseColor = \"neutral\"\n  if (options.rtl) {\n    packagesUiConfig.rtl = true\n  }\n  if (options.menuColor) {\n    packagesUiConfig.menuColor = options.menuColor\n  }\n  if (options.menuAccent) {\n    packagesUiConfig.menuAccent = options.menuAccent\n  }\n  if (options.iconLibrary) {\n    packagesUiConfig.iconLibrary = options.iconLibrary\n  }\n  await fs.writeJson(packagesUiConfigPath, packagesUiConfig, {\n    spaces: 2,\n  })\n\n  // Update apps/web/components.json.\n  const appsWebConfigPath = path.resolve(appsWebPath, \"components.json\")\n  let appsWebConfig = await fs.readJson(appsWebConfigPath)\n  if (options.registryBaseConfig) {\n    appsWebConfig = deepmerge(appsWebConfig, options.registryBaseConfig)\n  }\n  appsWebConfig.tailwind.baseColor = \"neutral\"\n  if (options.rtl) {\n    appsWebConfig.rtl = true\n  }\n  if (options.menuColor) {\n    appsWebConfig.menuColor = options.menuColor\n  }\n  if (options.menuAccent) {\n    appsWebConfig.menuAccent = options.menuAccent\n  }\n  if (options.iconLibrary) {\n    appsWebConfig.iconLibrary = options.iconLibrary\n  }\n  await fs.writeJson(appsWebConfigPath, appsWebConfig, { spaces: 2 })\n\n  // Apply preset CSS/style to packages/ui directly.\n  // We use the packages/ui config so addProjectComponents runs\n  // instead of addWorkspaceComponents. This keeps CSS/deps in packages/ui.\n  const resolvedPackagesUiConfig = await resolveConfigPaths(\n    packagesUiPath,\n    rawConfigSchema.parse(packagesUiConfig)\n  )\n  const { config: packagesUiWithRegistries } = await ensureRegistriesInConfig(\n    options.components,\n    resolvedPackagesUiConfig,\n    { silent: true }\n  )\n  // Skip fonts here — we handle them explicitly below.\n  await addComponents(options.components, packagesUiWithRegistries, {\n    overwrite: true,\n    silent: options.silent,\n    isNewProject: true,\n    skipFonts: true,\n  })\n\n  const resolvedAppsWebConfig = await resolveConfigPaths(\n    appsWebPath,\n    rawConfigSchema.parse(appsWebConfig)\n  )\n\n  // Handle fonts at the packages/ui level using fontsource.\n  // packages/ui has no framework config, so massageTreeForFonts can't detect the framework.\n  // We resolve the tree to get fonts and manually add fontsource deps + CSS.\n  const tree = await resolveRegistryTree(\n    options.components,\n    configWithDefaults(packagesUiWithRegistries)\n  )\n  if (tree?.fonts?.length) {\n    const themeCssVars: Record<string, string> = {}\n    const fontSourceDependencies = new Set<string>()\n\n    for (const font of tree.fonts) {\n      const fontName = font.name\n        .replace(/^font-heading-/, \"\")\n        .replace(\"font-\", \"\")\n      const fontSourceDependency =\n        font.font.dependency ?? `@fontsource-variable/${fontName}`\n\n      themeCssVars[font.font.variable] = font.font.family\n      fontSourceDependencies.add(fontSourceDependency)\n    }\n\n    await updateDependencies(\n      Array.from(fontSourceDependencies),\n      [],\n      resolvedPackagesUiConfig,\n      { silent: true }\n    )\n\n    await updateCssVars(\n      {\n        theme: themeCssVars,\n      },\n      resolvedPackagesUiConfig,\n      {\n        silent: options.silent,\n        overwriteCssVars: false,\n        tailwindVersion: \"v4\",\n      }\n    )\n\n    await updateCss(\n      Object.fromEntries(\n        Array.from(fontSourceDependencies).map((dependency) => [\n          `@import \"${dependency}\"`,\n          {},\n        ])\n      ),\n      resolvedPackagesUiConfig,\n      {\n        silent: options.silent,\n      }\n    )\n  }\n\n  // Install icon library packages in both workspaces.\n  const iconLibrary = resolvedPackagesUiConfig.iconLibrary as IconLibraryName\n  if (iconLibrary && iconLibrary in iconLibraries) {\n    const iconPackages = [...iconLibraries[iconLibrary].packages]\n    await updateDependencies(iconPackages, [], resolvedPackagesUiConfig, {\n      silent: true,\n    })\n    await updateDependencies(iconPackages, [], resolvedAppsWebConfig, {\n      silent: true,\n    })\n  }\n\n  return resolvedAppsWebConfig\n}\n"
  },
  {
    "path": "packages/shadcn/src/templates/next.ts",
    "content": "import path from \"path\"\nimport { iconLibraries, type IconLibraryName } from \"@/src/icons/libraries\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport { resolveRegistryTree } from \"@/src/registry/resolver\"\nimport { rawConfigSchema } from \"@/src/schema\"\nimport { addComponents } from \"@/src/utils/add-components\"\nimport { resolveConfigPaths } from \"@/src/utils/get-config\"\nimport { ensureRegistriesInConfig } from \"@/src/utils/registries\"\nimport { updateCssVars } from \"@/src/utils/updaters/update-css-vars\"\nimport { updateDependencies } from \"@/src/utils/updaters/update-dependencies\"\nimport { updateFonts } from \"@/src/utils/updaters/update-fonts\"\nimport dedent from \"dedent\"\nimport deepmerge from \"deepmerge\"\nimport fs from \"fs-extra\"\n\nimport { createTemplate } from \"./create-template\"\n\nexport const next = createTemplate({\n  name: \"next\",\n  title: \"Next.js\",\n  defaultProjectName: \"next-app\",\n  templateDir: \"next-app\",\n  frameworks: [\"next-app\", \"next-pages\"],\n  create: async () => {\n    // Empty for now.\n  },\n  files: [\n    {\n      type: \"registry:page\",\n      path: \"app/page.tsx\",\n      target: \"app/page.tsx\",\n      content: dedent`import { ComponentExample } from \"@/components/component-example\";\n\nexport default function Page() {\n  return <ComponentExample />;\n}\n`,\n    },\n  ],\n  monorepo: {\n    templateDir: \"next-monorepo\",\n    init: async (options) => {\n      const packagesUiPath = path.resolve(options.projectPath, \"packages/ui\")\n      const appsWebPath = path.resolve(options.projectPath, \"apps/web\")\n\n      // Update packages/ui/components.json.\n      const packagesUiConfigPath = path.resolve(\n        packagesUiPath,\n        \"components.json\"\n      )\n      let packagesUiConfig = await fs.readJson(packagesUiConfigPath)\n      if (options.registryBaseConfig) {\n        packagesUiConfig = deepmerge(\n          packagesUiConfig,\n          options.registryBaseConfig\n        )\n      }\n      packagesUiConfig.tailwind.baseColor = \"neutral\"\n      if (options.rtl) {\n        packagesUiConfig.rtl = true\n      }\n      await fs.writeJson(packagesUiConfigPath, packagesUiConfig, {\n        spaces: 2,\n      })\n\n      // Update apps/web/components.json.\n      const appsWebConfigPath = path.resolve(appsWebPath, \"components.json\")\n      let appsWebConfig = await fs.readJson(appsWebConfigPath)\n      if (options.registryBaseConfig) {\n        appsWebConfig = deepmerge(appsWebConfig, options.registryBaseConfig)\n      }\n      appsWebConfig.tailwind.baseColor = \"neutral\"\n      if (options.rtl) {\n        appsWebConfig.rtl = true\n      }\n      await fs.writeJson(appsWebConfigPath, appsWebConfig, { spaces: 2 })\n\n      // Apply preset CSS/style to packages/ui directly.\n      // We use the packages/ui config (not apps/web) so addProjectComponents runs\n      // instead of addWorkspaceComponents. This keeps CSS/deps in packages/ui.\n      const resolvedPackagesUiConfig = await resolveConfigPaths(\n        packagesUiPath,\n        rawConfigSchema.parse(packagesUiConfig)\n      )\n      const { config: packagesUiWithRegistries } =\n        await ensureRegistriesInConfig(\n          options.components,\n          resolvedPackagesUiConfig,\n          { silent: true }\n        )\n      // Skip fonts here — we handle them explicitly below using the apps/web config.\n      await addComponents(options.components, packagesUiWithRegistries, {\n        overwrite: true,\n        silent: options.silent,\n        isNewProject: true,\n        skipFonts: true,\n      })\n\n      const resolvedAppsWebConfig = await resolveConfigPaths(\n        appsWebPath,\n        rawConfigSchema.parse(appsWebConfig)\n      )\n\n      // Handle fonts at the apps/web level.\n      // packages/ui has no next.config so massageTreeForFonts can't detect Next.js.\n      // We resolve the tree to get fonts, then apply them using the apps/web config.\n      // which has next.config and layout.tsx.\n      const tree = await resolveRegistryTree(\n        options.components,\n        configWithDefaults(packagesUiWithRegistries)\n      )\n      if (tree?.fonts?.length) {\n        // Add font CSS variables to packages/ui CSS (same as massageTreeForFonts for Next.js).\n        const themeCssVars: Record<string, string> = {}\n        for (const font of tree.fonts) {\n          themeCssVars[font.font.variable] = `var(${font.font.variable})`\n        }\n\n        await updateCssVars({ theme: themeCssVars }, resolvedPackagesUiConfig, {\n          silent: options.silent,\n          overwriteCssVars: false,\n          tailwindVersion: \"v4\",\n        })\n\n        // Update layout.tsx in apps/web with the font import and className.\n        await updateFonts(tree.fonts, resolvedAppsWebConfig, {\n          silent: options.silent,\n        })\n      }\n\n      // Install icon library packages in both workspaces.\n      const iconLibrary =\n        resolvedPackagesUiConfig.iconLibrary as IconLibraryName\n      if (iconLibrary && iconLibrary in iconLibraries) {\n        const iconPackages = [...iconLibraries[iconLibrary].packages]\n        await updateDependencies(iconPackages, [], resolvedPackagesUiConfig, {\n          silent: true,\n        })\n        await updateDependencies(iconPackages, [], resolvedAppsWebConfig, {\n          silent: true,\n        })\n      }\n\n      return resolvedAppsWebConfig\n    },\n    files: [\n      {\n        type: \"registry:page\",\n        path: \"app/page.tsx\",\n        target: \"app/page.tsx\",\n        content: dedent`import { ComponentExample } from \"@/components/component-example\";\n\nexport default function Page() {\n  return <ComponentExample />;\n}\n`,\n      },\n    ],\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/src/templates/react-router.ts",
    "content": "import dedent from \"dedent\"\n\nimport { createTemplate } from \"./create-template\"\nimport { fontsourceMonorepoInit } from \"./monorepo\"\n\nexport const reactRouter = createTemplate({\n  name: \"react-router\",\n  title: \"React Router\",\n  defaultProjectName: \"react-router-app\",\n  templateDir: \"react-router-app\",\n  frameworks: [\"react-router\"],\n  create: async () => {\n    // Empty for now.\n  },\n  files: [\n    {\n      type: \"registry:file\",\n      path: \"app/routes/home.tsx\",\n      target: \"app/routes/home.tsx\",\n      content: dedent`import { ComponentExample } from \"@/components/component-example\";\n\nexport default function Home() {\n  return <ComponentExample />;\n}\n`,\n    },\n  ],\n  monorepo: {\n    templateDir: \"react-router-monorepo\",\n    init: fontsourceMonorepoInit,\n    files: [\n      {\n        type: \"registry:file\",\n        path: \"app/routes/home.tsx\",\n        target: \"app/routes/home.tsx\",\n        content: dedent`import { ComponentExample } from \"@/components/component-example\";\n\nexport default function Home() {\n  return <ComponentExample />;\n}\n`,\n      },\n    ],\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/src/templates/start.ts",
    "content": "import dedent from \"dedent\"\n\nimport { createTemplate } from \"./create-template\"\nimport { fontsourceMonorepoInit } from \"./monorepo\"\n\nexport const start = createTemplate({\n  name: \"start\",\n  title: \"TanStack Start\",\n  defaultProjectName: \"start-app\",\n  templateDir: \"start-app\",\n  frameworks: [\"tanstack-start\"],\n  create: async () => {\n    // Empty for now.\n  },\n  files: [\n    {\n      type: \"registry:file\",\n      path: \"src/routes/index.tsx\",\n      target: \"src/routes/index.tsx\",\n      content: dedent`import { createFileRoute } from \"@tanstack/react-router\";\nimport { ComponentExample } from \"@/components/component-example\";\n\nexport const Route = createFileRoute(\"/\")({ component: App });\n\nfunction App() {\n  return (\n    <ComponentExample />\n  );\n}\n`,\n    },\n  ],\n  monorepo: {\n    templateDir: \"start-monorepo\",\n    init: fontsourceMonorepoInit,\n    files: [\n      {\n        type: \"registry:file\",\n        path: \"src/routes/index.tsx\",\n        target: \"src/routes/index.tsx\",\n        content: dedent`import { createFileRoute } from \"@tanstack/react-router\";\nimport { ComponentExample } from \"@/components/component-example\";\n\nexport const Route = createFileRoute(\"/\")({ component: App });\n\nfunction App() {\n  return (\n    <ComponentExample />\n  );\n}\n`,\n      },\n    ],\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/src/templates/vite.ts",
    "content": "import dedent from \"dedent\"\n\nimport { createTemplate } from \"./create-template\"\nimport { fontsourceMonorepoInit } from \"./monorepo\"\n\nexport const vite = createTemplate({\n  name: \"vite\",\n  title: \"Vite\",\n  defaultProjectName: \"vite-app\",\n  templateDir: \"vite-app\",\n  frameworks: [\"vite\"],\n  create: async () => {\n    // Empty for now.\n  },\n  files: [\n    {\n      type: \"registry:file\",\n      path: \"src/App.tsx\",\n      target: \"src/App.tsx\",\n      content: dedent`import { ComponentExample } from \"@/components/component-example\";\n\nexport function App() {\n  return <ComponentExample />;\n}\n\nexport default App;\n`,\n    },\n  ],\n  monorepo: {\n    templateDir: \"vite-monorepo\",\n    init: fontsourceMonorepoInit,\n    files: [\n      {\n        type: \"registry:file\",\n        path: \"src/App.tsx\",\n        target: \"src/App.tsx\",\n        content: dedent`import { ComponentExample } from \"@/components/component-example\";\n\nexport function App() {\n  return <ComponentExample />;\n}\n\nexport default App;\n`,\n      },\n    ],\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/add-components.test.ts",
    "content": "import { beforeEach, describe, expect, it, vi } from \"vitest\"\n\nimport { addComponents } from \"./add-components\"\n\nconst {\n  mockResolveRegistryTree,\n  mockUpdateDependencies,\n  mockUpdateTailwindConfig,\n  mockUpdateEnvVars,\n  mockUpdateFonts,\n  mockUpdateFiles,\n  mockUpdateCss,\n  mockGetWorkspaceConfig,\n  mockGetProjectTailwindVersionFromConfig,\n  mockMassageTreeForFonts,\n  spinnerInstance,\n} = vi.hoisted(() => {\n  const spinner = {\n    start: vi.fn(),\n    succeed: vi.fn(),\n    fail: vi.fn(),\n    stop: vi.fn(),\n    info: vi.fn(),\n  }\n  spinner.start.mockReturnValue(spinner)\n\n  return {\n    mockResolveRegistryTree: vi.fn(),\n    mockUpdateDependencies: vi.fn(),\n    mockUpdateTailwindConfig: vi.fn(),\n    mockUpdateEnvVars: vi.fn(),\n    mockUpdateFonts: vi.fn(),\n    mockUpdateFiles: vi.fn(),\n    mockUpdateCss: vi.fn(),\n    mockGetWorkspaceConfig: vi.fn(),\n    mockGetProjectTailwindVersionFromConfig: vi.fn(),\n    mockMassageTreeForFonts: vi.fn(),\n    spinnerInstance: spinner,\n  }\n})\n\nvi.mock(\"@/src/registry/api\", () => ({\n  getRegistryItems: vi.fn(),\n}))\n\nvi.mock(\"@/src/registry/config\", () => ({\n  configWithDefaults: vi.fn((config) => config),\n}))\n\nvi.mock(\"@/src/registry/resolver\", () => ({\n  resolveRegistryTree: mockResolveRegistryTree,\n}))\n\nvi.mock(\"@/src/utils/get-config\", async () => {\n  const actual = await vi.importActual<typeof import(\"@/src/utils/get-config\")>(\n    \"@/src/utils/get-config\"\n  )\n\n  return {\n    ...actual,\n    getWorkspaceConfig: mockGetWorkspaceConfig,\n  }\n})\n\nvi.mock(\"@/src/utils/get-project-info\", () => ({\n  getProjectTailwindVersionFromConfig: mockGetProjectTailwindVersionFromConfig,\n}))\n\nvi.mock(\"@/src/utils/updaters/update-dependencies\", () => ({\n  updateDependencies: mockUpdateDependencies,\n}))\n\nvi.mock(\"@/src/utils/updaters/update-tailwind-config\", () => ({\n  updateTailwindConfig: mockUpdateTailwindConfig,\n}))\n\nvi.mock(\"@/src/utils/updaters/update-env-vars\", () => ({\n  updateEnvVars: mockUpdateEnvVars,\n}))\n\nvi.mock(\"@/src/utils/updaters/update-fonts\", () => ({\n  massageTreeForFonts: mockMassageTreeForFonts,\n  updateFonts: mockUpdateFonts,\n}))\n\nvi.mock(\"@/src/utils/updaters/update-files\", () => ({\n  updateFiles: mockUpdateFiles,\n}))\n\nvi.mock(\"@/src/utils/updaters/update-css\", () => ({\n  updateCss: mockUpdateCss,\n}))\n\nvi.mock(\"@/src/utils/spinner\", () => ({\n  spinner: vi.fn(() => spinnerInstance),\n}))\n\nvi.mock(\"@/src/utils/handle-error\", () => ({\n  handleError: vi.fn(),\n}))\n\nvi.mock(\"@/src/utils/logger\", () => ({\n  logger: {\n    info: vi.fn(),\n    warn: vi.fn(),\n    error: vi.fn(),\n    log: vi.fn(),\n  },\n}))\n\ndescribe(\"addComponents\", () => {\n  beforeEach(() => {\n    vi.clearAllMocks()\n\n    spinnerInstance.start.mockReturnValue(spinnerInstance)\n    mockGetWorkspaceConfig.mockResolvedValue(null)\n    mockGetProjectTailwindVersionFromConfig.mockResolvedValue(\"v4\")\n    mockMassageTreeForFonts.mockImplementation(async (tree) => tree)\n    mockUpdateDependencies.mockResolvedValue(undefined)\n    mockUpdateTailwindConfig.mockResolvedValue(undefined)\n    mockUpdateEnvVars.mockResolvedValue(undefined)\n    mockUpdateFonts.mockResolvedValue(undefined)\n    mockUpdateFiles.mockResolvedValue({\n      filesCreated: [],\n      filesUpdated: [],\n      filesSkipped: [],\n    })\n    mockUpdateCss.mockResolvedValue(undefined)\n  })\n\n  it(\"passes pending heading font markers into updateFiles before CSS is written\", async () => {\n    mockResolveRegistryTree.mockResolvedValue({\n      dependencies: [],\n      devDependencies: [],\n      files: [\n        {\n          path: \"registry/base-nova/ui/card.tsx\",\n          target: \"components/ui/card.tsx\",\n          type: \"registry:ui\",\n          content: `export function CardTitle() { return <div className=\"cn-font-heading\" /> }`,\n        },\n      ],\n      fonts: [\n        {\n          name: \"font-heading-inter\",\n          type: \"registry:font\",\n          font: {\n            family: \"'Inter Variable', sans-serif\",\n            provider: \"google\",\n            import: \"Inter\",\n            variable: \"--font-heading\",\n            subsets: [\"latin\"],\n            dependency: \"@fontsource-variable/inter\",\n          },\n        },\n      ],\n      cssVars: {\n        theme: {\n          \"--font-heading\": \"var(--font-heading)\",\n        },\n      },\n    })\n\n    await addComponents(\n      [\"card\"],\n      {\n        style: \"base-nova\",\n        rsc: true,\n        tsx: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n          ui: \"@/components/ui\",\n          lib: \"@/lib\",\n          hooks: \"@/hooks\",\n        },\n        resolvedPaths: {\n          cwd: \"/test/project\",\n          tailwindCss: \"/test/project/app/globals.css\",\n          tailwindConfig: \"/test/project/tailwind.config.js\",\n          utils: \"/test/project/lib/utils.ts\",\n          components: \"/test/project/components\",\n          lib: \"/test/project/lib\",\n          hooks: \"/test/project/hooks\",\n          ui: \"/test/project/components/ui\",\n        },\n      } as any,\n      {\n        silent: true,\n        overwriteCssVars: false,\n      }\n    )\n\n    expect(mockUpdateFiles).toHaveBeenCalledOnce()\n    expect(mockUpdateFiles.mock.calls[0]?.[2]?.supportedFontMarkers).toEqual([\n      \"cn-font-heading\",\n    ])\n    expect(mockUpdateFiles.mock.invocationCallOrder[0]).toBeLessThan(\n      mockUpdateCss.mock.invocationCallOrder[0]\n    )\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/add-components.ts",
    "content": "import path from \"path\"\nimport { getRegistryItems } from \"@/src/registry/api\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport { resolveRegistryTree } from \"@/src/registry/resolver\"\nimport {\n  configSchema,\n  registryItemFileSchema,\n  registryItemSchema,\n  workspaceConfigSchema,\n} from \"@/src/schema\"\nimport { getSupportedFontMarkers } from \"@/src/utils/font-markers\"\nimport {\n  findCommonRoot,\n  findPackageRoot,\n  getWorkspaceConfig,\n  type Config,\n} from \"@/src/utils/get-config\"\nimport { getProjectTailwindVersionFromConfig } from \"@/src/utils/get-project-info\"\nimport { handleError } from \"@/src/utils/handle-error\"\nimport { isSafeTarget } from \"@/src/utils/is-safe-target\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { updateCss } from \"@/src/utils/updaters/update-css\"\nimport { updateDependencies } from \"@/src/utils/updaters/update-dependencies\"\nimport { updateEnvVars } from \"@/src/utils/updaters/update-env-vars\"\nimport { updateFiles } from \"@/src/utils/updaters/update-files\"\nimport {\n  massageTreeForFonts,\n  updateFonts,\n} from \"@/src/utils/updaters/update-fonts\"\nimport { updateTailwindConfig } from \"@/src/utils/updaters/update-tailwind-config\"\nimport { z } from \"zod\"\n\nexport async function addComponents(\n  components: string[],\n  config: Config,\n  options: {\n    overwrite?: boolean\n    overwriteCssVars?: boolean\n    silent?: boolean\n    isNewProject?: boolean\n    skipFonts?: boolean\n    registryHeaders?: Record<string, Record<string, string>>\n    path?: string\n  }\n) {\n  options = {\n    overwrite: false,\n    silent: false,\n    isNewProject: false,\n    ...options,\n  }\n\n  const workspaceConfig = await getWorkspaceConfig(config)\n  if (\n    workspaceConfig &&\n    workspaceConfig.ui &&\n    workspaceConfig.ui.resolvedPaths.cwd !== config.resolvedPaths.cwd\n  ) {\n    return await addWorkspaceComponents(components, config, workspaceConfig, {\n      ...options,\n      isRemote:\n        components?.length === 1 && !!components[0].match(/\\/chat\\/b\\//),\n    })\n  }\n\n  return await addProjectComponents(components, config, {\n    ...options,\n    skipFonts: options.skipFonts,\n  })\n}\n\nasync function addProjectComponents(\n  components: string[],\n  config: z.infer<typeof configSchema>,\n  options: {\n    overwrite?: boolean\n    overwriteCssVars?: boolean\n    silent?: boolean\n    isNewProject?: boolean\n    skipFonts?: boolean\n    path?: string\n  }\n) {\n  if (!components.length) {\n    return\n  }\n\n  const registrySpinner = spinner(`Checking registry.`, {\n    silent: options.silent,\n  })?.start()\n  let tree = await resolveRegistryTree(components, configWithDefaults(config))\n\n  if (!tree) {\n    registrySpinner?.fail()\n    return handleError(new Error(\"Failed to fetch components from registry.\"))\n  }\n\n  try {\n    validateFilesTarget(tree.files ?? [], config.resolvedPaths.cwd)\n  } catch (error) {\n    registrySpinner?.fail()\n    return handleError(error)\n  }\n\n  registrySpinner?.succeed()\n\n  const tailwindVersion = await getProjectTailwindVersionFromConfig(config)\n\n  if (!options.skipFonts) {\n    tree = await massageTreeForFonts(tree, config)\n  }\n\n  const supportedFontMarkers = getSupportedFontMarkers([tree])\n\n  await updateDependencies(tree.dependencies, tree.devDependencies, config, {\n    silent: options.silent,\n  })\n\n  await updateTailwindConfig(tree.tailwind?.config, config, {\n    silent: options.silent,\n    tailwindVersion,\n  })\n\n  await updateEnvVars(tree.envVars, config, {\n    silent: options.silent,\n  })\n\n  if (!options.skipFonts) {\n    await updateFonts(tree.fonts, config, {\n      silent: options.silent,\n    })\n  }\n\n  await updateFiles(tree.files, config, {\n    overwrite: options.overwrite,\n    silent: options.silent,\n    path: options.path,\n    supportedFontMarkers,\n  })\n\n  // Write CSS last so the file watcher triggers a rebuild\n  // after all component files and dependencies are in place.\n  const overwriteCssVars = tree.cssVars\n    ? (options.overwriteCssVars ??\n      (await shouldOverwriteCssVars(components, config)))\n    : undefined\n  await updateCss(tree.css, config, {\n    silent: options.silent,\n    cssVars: tree.cssVars,\n    cleanupDefaultNextStyles: options.isNewProject,\n    overwriteCssVars,\n    tailwindVersion,\n    tailwindConfig: tree.tailwind?.config,\n  })\n\n  if (tree.docs) {\n    logger.info(tree.docs)\n  }\n}\n\nasync function addWorkspaceComponents(\n  components: string[],\n  config: z.infer<typeof configSchema>,\n  workspaceConfig: z.infer<typeof workspaceConfigSchema>,\n  options: {\n    overwrite?: boolean\n    overwriteCssVars?: boolean\n    silent?: boolean\n    isNewProject?: boolean\n    isRemote?: boolean\n    path?: string\n  }\n) {\n  if (!components.length) {\n    return\n  }\n\n  const registrySpinner = spinner(`Checking registry.`, {\n    silent: options.silent,\n  })?.start()\n  let tree = await resolveRegistryTree(components, configWithDefaults(config))\n\n  if (!tree) {\n    registrySpinner?.fail()\n    return handleError(new Error(\"Failed to fetch components from registry.\"))\n  }\n\n  try {\n    validateFilesTarget(tree.files ?? [], config.resolvedPaths.cwd)\n  } catch (error) {\n    registrySpinner?.fail()\n    return handleError(error)\n  }\n\n  registrySpinner?.succeed()\n\n  const filesCreated: string[] = []\n  const filesUpdated: string[] = []\n  const filesSkipped: string[] = []\n\n  const rootSpinner = spinner(`Installing components.`)?.start()\n\n  // Process global updates for the main target.\n  // These should typically go to the UI package in a workspace.\n  const mainTargetConfig = workspaceConfig.ui\n  const tailwindVersion =\n    await getProjectTailwindVersionFromConfig(mainTargetConfig)\n  const workspaceRoot = findCommonRoot(\n    config.resolvedPaths.cwd,\n    mainTargetConfig.resolvedPaths.ui\n  )\n\n  // Massage tree for fonts using the app config for framework detection.\n  // This adds fontsource deps + CSS for non-Next, or next/font CSS vars for Next.\n  tree = await massageTreeForFonts(tree, config)\n  const supportedFontMarkers = getSupportedFontMarkers([tree])\n\n  // 1. Update dependencies.\n  await updateDependencies(\n    tree.dependencies,\n    tree.devDependencies,\n    mainTargetConfig,\n    {\n      silent: true,\n    }\n  )\n\n  // 2. Update tailwind config.\n  if (tree.tailwind?.config) {\n    await updateTailwindConfig(tree.tailwind?.config, mainTargetConfig, {\n      silent: true,\n      tailwindVersion,\n    })\n    filesUpdated.push(\n      path.relative(\n        workspaceRoot,\n        mainTargetConfig.resolvedPaths.tailwindConfig\n      )\n    )\n  }\n\n  // 3. Update environment variables.\n  if (tree.envVars) {\n    await updateEnvVars(tree.envVars, mainTargetConfig, {\n      silent: true,\n    })\n  }\n\n  // 4. Update fonts.\n  // Fonts modify the app's layout file (e.g. app/layout.tsx),\n  // so we use the app config, not the UI workspace config.\n  await updateFonts(tree.fonts, config, {\n    silent: true,\n  })\n\n  // 5. Group files by their type to determine target config and update files.\n  const filesByType = new Map<string, typeof tree.files>()\n\n  for (const file of tree.files ?? []) {\n    const type = file.type || \"registry:ui\"\n    if (!filesByType.has(type)) {\n      filesByType.set(type, [])\n    }\n    filesByType.get(type)!.push(file)\n  }\n\n  const FILE_TYPE_TO_CONFIG_KEY: Record<string, string> = {\n    \"registry:ui\": \"ui\",\n    \"registry:hook\": \"hooks\",\n    \"registry:lib\": \"lib\",\n  }\n\n  // Process each type of component with its appropriate target config.\n  for (const type of Array.from(filesByType.keys())) {\n    const typeFiles = filesByType.get(type)!\n\n    const configKey = FILE_TYPE_TO_CONFIG_KEY[type]\n    const targetConfig =\n      configKey && workspaceConfig[configKey]\n        ? workspaceConfig[configKey]\n        : config\n\n    const typeWorkspaceRoot = findCommonRoot(\n      config.resolvedPaths.cwd,\n      targetConfig.resolvedPaths.ui || targetConfig.resolvedPaths.cwd\n    )\n    const packageRoot =\n      (await findPackageRoot(\n        typeWorkspaceRoot,\n        targetConfig.resolvedPaths.cwd\n      )) ?? targetConfig.resolvedPaths.cwd\n\n    // Update files for this type.\n    const files = await updateFiles(typeFiles, targetConfig, {\n      overwrite: options.overwrite,\n      silent: true,\n      rootSpinner,\n      isRemote: options.isRemote,\n      isWorkspace: true,\n      path: options.path,\n      supportedFontMarkers,\n    })\n\n    filesCreated.push(\n      ...files.filesCreated.map((file) =>\n        path.relative(typeWorkspaceRoot, path.join(packageRoot, file))\n      )\n    )\n    filesUpdated.push(\n      ...files.filesUpdated.map((file) =>\n        path.relative(typeWorkspaceRoot, path.join(packageRoot, file))\n      )\n    )\n    filesSkipped.push(\n      ...files.filesSkipped.map((file) =>\n        path.relative(typeWorkspaceRoot, path.join(packageRoot, file))\n      )\n    )\n  }\n\n  // 6. Write CSS last so the file watcher triggers a rebuild\n  // after all component files and dependencies are in place.\n  const overwriteCssVars = tree.cssVars\n    ? (options.overwriteCssVars ??\n      (await shouldOverwriteCssVars(components, config)))\n    : undefined\n  await updateCss(tree.css, mainTargetConfig, {\n    silent: true,\n    cssVars: tree.cssVars,\n    overwriteCssVars,\n    tailwindVersion,\n    tailwindConfig: tree.tailwind?.config,\n  })\n  if (tree.cssVars || tree.css) {\n    filesUpdated.push(\n      path.relative(workspaceRoot, mainTargetConfig.resolvedPaths.tailwindCss)\n    )\n  }\n\n  rootSpinner?.succeed()\n\n  // Deduplicate and sort files.\n  const dedupedCreated = Array.from(new Set(filesCreated)).sort()\n  const dedupedUpdated = Array.from(\n    new Set(filesUpdated.filter((file) => !filesCreated.includes(file)))\n  ).sort()\n  const dedupedSkipped = Array.from(new Set(filesSkipped)).sort()\n\n  const hasUpdatedFiles = dedupedCreated.length || dedupedUpdated.length\n  if (!hasUpdatedFiles && !dedupedSkipped.length) {\n    spinner(`No files updated.`, {\n      silent: options.silent,\n    })?.info()\n  }\n\n  if (dedupedCreated.length) {\n    spinner(\n      `Created ${dedupedCreated.length} ${\n        dedupedCreated.length === 1 ? \"file\" : \"files\"\n      }:`,\n      {\n        silent: options.silent,\n      }\n    )?.succeed()\n    for (const file of dedupedCreated) {\n      logger.log(`  - ${file}`)\n    }\n  }\n\n  if (dedupedUpdated.length) {\n    spinner(\n      `Updated ${dedupedUpdated.length} ${\n        dedupedUpdated.length === 1 ? \"file\" : \"files\"\n      }:`,\n      {\n        silent: options.silent,\n      }\n    )?.info()\n    for (const file of dedupedUpdated) {\n      logger.log(`  - ${file}`)\n    }\n  }\n\n  if (dedupedSkipped.length) {\n    spinner(\n      `Skipped ${dedupedSkipped.length} ${\n        dedupedSkipped.length === 1 ? \"file\" : \"files\"\n      }: (use --overwrite to overwrite)`,\n      {\n        silent: options.silent,\n      }\n    )?.info()\n    for (const file of dedupedSkipped) {\n      logger.log(`  - ${file}`)\n    }\n  }\n\n  if (tree.docs) {\n    logger.info(tree.docs)\n  }\n}\n\nasync function shouldOverwriteCssVars(\n  components: z.infer<typeof registryItemSchema>[\"name\"][],\n  config: z.infer<typeof configSchema>\n) {\n  const result = await getRegistryItems(components, { config })\n  const payload = z.array(registryItemSchema).parse(result)\n\n  return payload.some(\n    (component) =>\n      component.type === \"registry:theme\" ||\n      component.type === \"registry:style\" ||\n      component.type === \"registry:font\" ||\n      component.type === \"registry:base\"\n  )\n}\n\nfunction validateFilesTarget(\n  files: z.infer<typeof registryItemFileSchema>[],\n  cwd: string\n) {\n  for (const file of files) {\n    if (!file?.target) {\n      continue\n    }\n\n    if (!isSafeTarget(file.target, cwd)) {\n      throw new Error(\n        `We found an unsafe file path \"${file.target} in the registry item. Installation aborted.`\n      )\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/compare.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport { isContentSame } from \"./compare\"\n\ndescribe(\"isContentSame\", () => {\n  describe(\"basic comparisons\", () => {\n    it(\"should return true for identical content\", () => {\n      const content = `const foo = \"bar\"`\n      expect(isContentSame(content, content)).toBe(true)\n    })\n\n    it(\"should return true for content with different line endings\", () => {\n      const content1 = `line1\\nline2\\nline3`\n      const content2 = `line1\\r\\nline2\\r\\nline3`\n      expect(isContentSame(content1, content2)).toBe(true)\n    })\n\n    it(\"should return true for content with different whitespace at ends\", () => {\n      const content1 = `  const foo = \"bar\"  `\n      const content2 = `const foo = \"bar\"`\n      expect(isContentSame(content1, content2)).toBe(true)\n    })\n\n    it(\"should return false for different content\", () => {\n      const content1 = `const foo = \"bar\"`\n      const content2 = `const foo = \"baz\"`\n      expect(isContentSame(content1, content2)).toBe(false)\n    })\n  })\n\n  describe(\"import comparisons with ignoreImports enabled\", () => {\n    it(\"should return true for different aliased imports to same module\", () => {\n      const content1 = `import { Button } from \"@/components/ui/button\"`\n      const content2 = `import { Button } from \"~/ui/button\"`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        true\n      )\n    })\n\n    it(\"should return true for different paths to same final module\", () => {\n      const content1 = `import { cn } from \"@/lib/utils\"`\n      const content2 = `import { cn } from \"~/utils\"`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        true\n      )\n    })\n\n    it(\"should preserve relative imports and require exact match\", () => {\n      const content1 = `import { Button } from \"./button\"`\n      const content2 = `import { Button } from \"../button\"`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        false\n      )\n    })\n\n    it(\"should handle multiple imports with different aliases\", () => {\n      const content1 = `\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\nimport { Card } from \"@/components/ui/card\"\n\nexport function Component() {\n  return <div />\n}\n`\n      const content2 = `\nimport { Button } from \"~/ui/button\"\nimport { cn } from \"~/utils\"\nimport { Card } from \"#/components/card\"\n\nexport function Component() {\n  return <div />\n}\n`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        true\n      )\n    })\n\n    it(\"should handle type imports\", () => {\n      const content1 = `import type { Config } from \"@/types/config\"`\n      const content2 = `import type { Config } from \"~/config\"`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        true\n      )\n    })\n\n    it(\"should handle namespace imports\", () => {\n      const content1 = `import * as React from \"react\"`\n      const content2 = `import * as React from \"react\"`\n      expect(isContentSame(content1, content2)).toBe(true)\n    })\n\n    it(\"should handle mixed default and named imports\", () => {\n      const content1 = `import React, { useState } from \"react\"`\n      const content2 = `import React, { useState } from \"react\"`\n      expect(isContentSame(content1, content2)).toBe(true)\n    })\n\n    it(\"should return false if non-import content differs\", () => {\n      const content1 = `\nimport { Button } from \"@/components/ui/button\"\nexport const foo = \"bar\"\n`\n      const content2 = `\nimport { Button } from \"~/ui/button\"\nexport const foo = \"baz\"\n`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        false\n      )\n    })\n\n    it(\"should handle imports with renamed exports\", () => {\n      const content1 = `import { Button as Btn } from \"@/components/ui/button\"`\n      const content2 = `import { Button as Btn } from \"~/ui/button\"`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        true\n      )\n    })\n\n    it(\"should handle multiline imports\", () => {\n      const content1 = `import {\n  Button,\n  ButtonProps,\n  ButtonVariants\n} from \"@/components/ui/button\"`\n      const content2 = `import {\n  Button,\n  ButtonProps,\n  ButtonVariants\n} from \"~/ui/button\"`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        true\n      )\n    })\n  })\n\n  describe(\"import comparisons with ignoreImports disabled (default)\", () => {\n    it(\"should return false for different aliased imports\", () => {\n      const content1 = `import { Button } from \"@/components/ui/button\"`\n      const content2 = `import { Button } from \"~/ui/button\"`\n      expect(isContentSame(content1, content2, { ignoreImports: false })).toBe(\n        false\n      )\n    })\n\n    it(\"should return false for different aliased imports by default\", () => {\n      const content1 = `import { Button } from \"@/components/ui/button\"`\n      const content2 = `import { Button } from \"~/ui/button\"`\n      expect(isContentSame(content1, content2)).toBe(false)\n    })\n\n    it(\"should return true only for exact matches\", () => {\n      const content1 = `import { Button } from \"@/components/ui/button\"`\n      const content2 = `import { Button } from \"@/components/ui/button\"`\n      expect(isContentSame(content1, content2, { ignoreImports: false })).toBe(\n        true\n      )\n    })\n\n    it(\"should still normalize line endings and whitespace\", () => {\n      const content1 = `import { Button } from \"@/components/ui/button\"\\r\\n`\n      const content2 = `import { Button } from \"@/components/ui/button\"\\n`\n      expect(isContentSame(content1, content2, { ignoreImports: false })).toBe(\n        true\n      )\n    })\n  })\n\n  describe(\"complex real-world scenarios\", () => {\n    it(\"should handle React component with different import aliases\", () => {\n      const component1 = `\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\n\nexport function ProfileCard({ className }: { className?: string }) {\n  return (\n    <Card className={cn(\"w-full\", className)}>\n      <CardHeader>Profile</CardHeader>\n      <CardContent>\n        <Button>Click me</Button>\n      </CardContent>\n    </Card>\n  )\n}\n`\n      const component2 = `\nimport * as React from \"react\"\nimport { cn } from \"~/utils\"\nimport { Button } from \"~/ui/button\"\nimport { Card, CardContent, CardHeader } from \"#/components/card\"\n\nexport function ProfileCard({ className }: { className?: string }) {\n  return (\n    <Card className={cn(\"w-full\", className)}>\n      <CardHeader>Profile</CardHeader>\n      <CardContent>\n        <Button>Click me</Button>\n      </CardContent>\n    </Card>\n  )\n}\n`\n      expect(\n        isContentSame(component1, component2, { ignoreImports: true })\n      ).toBe(true)\n    })\n\n    it(\"should detect actual code differences\", () => {\n      const component1 = `\nimport { Button } from \"@/components/ui/button\"\n\nexport function Component() {\n  return <Button variant=\"default\">Click</Button>\n}\n`\n      const component2 = `\nimport { Button } from \"~/ui/button\"\n\nexport function Component() {\n  return <Button variant=\"outline\">Click</Button>\n}\n`\n      expect(\n        isContentSame(component1, component2, { ignoreImports: true })\n      ).toBe(false)\n    })\n\n    it(\"should handle files with no imports\", () => {\n      const content1 = `\nexport function add(a: number, b: number) {\n  return a + b\n}\n`\n      const content2 = `\nexport function add(a: number, b: number) {\n  return a + b\n}\n`\n      expect(isContentSame(content1, content2)).toBe(true)\n    })\n\n    it(\"should handle CSS imports\", () => {\n      const content1 = `\nimport styles from \"@/styles/component.module.css\"\nimport \"./global.css\"\n`\n      const content2 = `\nimport styles from \"~/styles/component.module.css\"\nimport \"./global.css\"\n`\n      expect(isContentSame(content1, content2, { ignoreImports: true })).toBe(\n        true\n      )\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/compare.ts",
    "content": "export function isContentSame(\n  existingContent: string,\n  newContent: string,\n  options: {\n    ignoreImports?: boolean\n  } = {}\n) {\n  const { ignoreImports = false } = options\n\n  // Normalize line endings and whitespace.\n  const normalizedExisting = existingContent.replace(/\\r\\n/g, \"\\n\").trim()\n  const normalizedNew = newContent.replace(/\\r\\n/g, \"\\n\").trim()\n\n  // First, try exact match after normalization.\n  if (normalizedExisting === normalizedNew) {\n    return true\n  }\n\n  // If not ignoring imports or exact match failed, return false\n  if (!ignoreImports) {\n    return false\n  }\n\n  // Compare with import statements normalized.\n  // This regex matches various import patterns including:\n  // - import defaultExport from \"module\"\n  // - import * as name from \"module\"\n  // - import { export1, export2 } from \"module\"\n  // - import { export1 as alias1 } from \"module\"\n  // - import defaultExport, { export1 } from \"module\"\n  // - import type { Type } from \"module\"\n  // - This Regex written by Claude Code.\n  const importRegex =\n    /^(import\\s+(?:type\\s+)?(?:\\*\\s+as\\s+\\w+|\\{[^}]*\\}|\\w+)?(?:\\s*,\\s*(?:\\{[^}]*\\}|\\w+))?\\s+from\\s+[\"'])([^\"']+)([\"'])/gm\n\n  // Function to normalize import paths - remove alias differences.\n  const normalizeImports = (content: string) => {\n    return content.replace(\n      importRegex,\n      (_match, prefix, importPath, suffix) => {\n        // Keep relative imports as-is.\n        if (importPath.startsWith(\".\")) {\n          return `${prefix}${importPath}${suffix}`\n        }\n\n        // For aliased imports, normalize to a common format.\n        // Extract the last meaningful part of the path.\n        const parts = importPath.split(\"/\")\n        const lastPart = parts[parts.length - 1]\n\n        // Normalize to a consistent format.\n        return `${prefix}@normalized/${lastPart}${suffix}`\n      }\n    )\n  }\n\n  const existingNormalized = normalizeImports(normalizedExisting)\n  const newNormalized = normalizeImports(normalizedNew)\n\n  return existingNormalized === newNormalized\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/create-project.test.ts",
    "content": "import { spinner } from \"@/src/utils/spinner\"\nimport { execa } from \"execa\"\nimport fs from \"fs-extra\"\nimport prompts from \"prompts\"\nimport {\n  afterEach,\n  beforeEach,\n  describe,\n  expect,\n  it,\n  vi,\n  type MockInstance,\n} from \"vitest\"\n\nimport { createProject } from \"./create-project\"\n\n// Mock dependencies\nvi.mock(\"fs-extra\")\nvi.mock(\"execa\")\nvi.mock(\"prompts\")\nvi.mock(\"@/src/utils/get-package-manager\", () => ({\n  getPackageManager: vi.fn().mockResolvedValue(\"npm\"),\n}))\nvi.mock(\"@/src/utils/spinner\")\nvi.mock(\"@/src/utils/logger\", () => ({\n  logger: {\n    break: vi.fn(),\n    error: vi.fn(),\n    info: vi.fn(),\n  },\n}))\n\ndescribe(\"createProject\", () => {\n  let mockExit: MockInstance\n\n  beforeEach(() => {\n    vi.clearAllMocks()\n\n    // Reset all fs mocks\n    vi.mocked(fs.access).mockResolvedValue(undefined)\n    vi.mocked(fs.existsSync).mockReturnValue(false)\n    vi.mocked(fs.ensureDir).mockResolvedValue(undefined)\n    vi.mocked(fs.writeFile).mockResolvedValue(undefined)\n    vi.mocked(fs.move).mockResolvedValue(undefined)\n    vi.mocked(fs.remove).mockResolvedValue(undefined)\n\n    // Mock execa for git clone and package manager install.\n    vi.mocked(execa).mockResolvedValue({\n      stdout: \"\",\n      stderr: \"\",\n      exitCode: 0,\n      signal: undefined,\n      signalDescription: undefined,\n      command: \"\",\n      escapedCommand: \"\",\n      failed: false,\n      timedOut: false,\n      isCanceled: false,\n      killed: false,\n    } as any)\n\n    // Reset prompts mock\n    vi.mocked(prompts).mockResolvedValue({ type: \"next\", name: \"my-app\" })\n\n    // Mock spinner function\n    const mockSpinner = {\n      start: vi.fn().mockReturnThis(),\n      succeed: vi.fn().mockReturnThis(),\n      fail: vi.fn().mockReturnThis(),\n      stop: vi.fn().mockReturnThis(),\n      text: \"\",\n      prefixText: \"\",\n      suffixText: \"\",\n      color: \"cyan\" as const,\n      indent: 0,\n      spinner: \"dots\" as const,\n      isSpinning: false,\n      interval: 100,\n      stream: process.stderr,\n      clear: vi.fn(),\n      render: vi.fn(),\n      frame: vi.fn(),\n      stopAndPersist: vi.fn(),\n      warn: vi.fn(),\n      info: vi.fn(),\n    }\n    vi.mocked(spinner).mockReturnValue(mockSpinner as any)\n  })\n\n  afterEach(() => {\n    vi.resetAllMocks()\n    mockExit?.mockRestore()\n  })\n\n  it(\"should create a Next.js project with default options\", async () => {\n    vi.mocked(prompts).mockResolvedValue({ type: \"next\", name: \"my-app\" })\n\n    const result = await createProject({\n      cwd: \"/test\",\n      force: false,\n    })\n\n    expect(result).toEqual({\n      projectPath: \"/test/my-app\",\n      projectName: \"my-app\",\n      template: \"next\",\n    })\n  })\n\n  it(\"should create a monorepo project with --monorepo flag\", async () => {\n    vi.mocked(prompts).mockResolvedValue({\n      type: \"next\",\n      name: \"my-monorepo\",\n    })\n\n    const result = await createProject({\n      cwd: \"/test\",\n      force: false,\n      monorepo: true,\n    })\n\n    expect(result).toEqual({\n      projectPath: \"/test/my-monorepo\",\n      projectName: \"my-monorepo\",\n      template: \"next\",\n    })\n  })\n\n  it(\"should force next template for remote components\", async () => {\n    const result = await createProject({\n      cwd: \"/test\",\n      force: true,\n      components: [\"/chat/b/some-component\"],\n    })\n\n    expect(result.template).toBe(\"next\")\n  })\n\n  it(\"should throw error if project path already exists\", async () => {\n    // Mock fs.existsSync to return true only for the specific package.json path\n    vi.mocked(fs.existsSync).mockImplementation((path: any) => {\n      return path.toString().includes(\"existing-app/package.json\")\n    })\n    vi.mocked(prompts).mockResolvedValue({ type: \"next\", name: \"existing-app\" })\n\n    mockExit = vi\n      .spyOn(process, \"exit\")\n      .mockImplementation(() => undefined as never)\n\n    await createProject({\n      cwd: \"/test\",\n      force: false,\n    })\n\n    expect(mockExit).toHaveBeenCalledWith(1)\n  })\n\n  it(\"should throw error if path is not writable\", async () => {\n    vi.mocked(fs.access).mockRejectedValue(new Error(\"Permission denied\"))\n    vi.mocked(prompts).mockResolvedValue({ type: \"next\", name: \"my-app\" })\n\n    mockExit = vi\n      .spyOn(process, \"exit\")\n      .mockImplementation(() => undefined as never)\n\n    await createProject({\n      cwd: \"/test\",\n      force: false,\n    })\n\n    expect(mockExit).toHaveBeenCalledWith(1)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/create-project.ts",
    "content": "import path from \"path\"\nimport { initOptionsSchema } from \"@/src/commands/init\"\nimport { resolveTemplate, templates } from \"@/src/templates/index\"\nimport { getPackageManager } from \"@/src/utils/get-package-manager\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport fs from \"fs-extra\"\nimport prompts from \"prompts\"\nimport { z } from \"zod\"\n\nexport async function createProject(\n  options: Pick<\n    z.infer<typeof initOptionsSchema>,\n    \"cwd\" | \"name\" | \"force\" | \"components\" | \"template\" | \"monorepo\"\n  >\n) {\n  let template: keyof typeof templates =\n    options.template && options.template in templates\n      ? (options.template as keyof typeof templates)\n      : \"next\"\n\n  const resolved = resolveTemplate(templates[template], {\n    monorepo: options.monorepo,\n  })\n  let projectName: string = options.name ?? resolved.defaultProjectName\n\n  const isRemoteComponent =\n    options.components?.length === 1 &&\n    !!options.components[0].match(/\\/chat\\/b\\//)\n\n  // Force template to next for remote components.\n  if (isRemoteComponent) {\n    template = \"next\"\n  }\n\n  if (!options.force) {\n    const { type, name } = await prompts([\n      {\n        type: options.template || isRemoteComponent ? null : \"select\",\n        name: \"type\",\n        message: `The path ${highlighter.info(\n          options.cwd\n        )} does not contain a package.json file.\\n  Would you like to start a new project?`,\n        choices: Object.entries(templates).map(([key, t]) => ({\n          title: t.title,\n          value: key,\n          description: t.description,\n        })),\n        initial: 0,\n      },\n      {\n        type: options.name ? null : \"text\",\n        name: \"name\",\n        message: \"What is your project named?\",\n        initial: projectName,\n        format: (value: string) => value.trim(),\n        validate: (value: string) =>\n          value.length > 128\n            ? `Name should be less than 128 characters.`\n            : true,\n      },\n    ])\n\n    template = type ?? template\n    projectName = name ?? projectName\n  }\n\n  // Re-resolve after potential template change from prompt.\n  const effectiveTemplate = resolveTemplate(templates[template], {\n    monorepo: options.monorepo,\n  })\n\n  const packageManager = await getPackageManager(options.cwd, {\n    withFallback: true,\n  })\n\n  const projectPath = path.join(options.cwd, projectName)\n\n  // Check if path is writable.\n  try {\n    await fs.access(options.cwd, fs.constants.W_OK)\n  } catch (error) {\n    logger.break()\n    logger.error(`The path ${highlighter.info(options.cwd)} is not writable.`)\n    logger.error(\n      `It is likely you do not have write permissions for this folder or the path ${highlighter.info(\n        options.cwd\n      )} does not exist.`\n    )\n    logger.break()\n    process.exit(1)\n  }\n\n  if (fs.existsSync(path.resolve(options.cwd, projectName, \"package.json\"))) {\n    logger.break()\n    logger.error(\n      `A project with the name ${highlighter.info(projectName)} already exists.`\n    )\n    logger.error(`Please choose a different name and try again.`)\n    logger.break()\n    process.exit(1)\n  }\n\n  await effectiveTemplate.scaffold({\n    projectPath,\n    packageManager,\n    cwd: options.cwd,\n  })\n\n  return {\n    projectPath,\n    projectName,\n    template,\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/dry-run-formatter.ts",
    "content": "import type { DryRunFile, DryRunResult } from \"@/src/utils/dry-run\"\nimport { diffWords, structuredPatch } from \"diff\"\nimport { bold, cyan, dim, green, red, yellow } from \"kleur/colors\"\n\nconst MAX_OVERVIEW_FILES = 5\n\nconst BOX_TOP = dim(\"┌\" + \"─\".repeat(46))\nconst BOX_BOTTOM = dim(\"└\" + \"─\".repeat(46))\n\nconst ACTION_GLYPHS: Record<DryRunFile[\"action\"], string> = {\n  create: \"+\",\n  overwrite: \"~\",\n  skip: \"=\",\n}\n\nconst ACTION_LABELS: Record<DryRunFile[\"action\"], string> = {\n  create: \"create\",\n  overwrite: \"overwrite\",\n  skip: \"skip (identical)\",\n}\n\n// Color an action label.\nfunction colorAction(action: DryRunFile[\"action\"] | \"update\") {\n  if (action === \"create\") return green(action)\n  if (action === \"overwrite\" || action === \"update\") return yellow(action)\n  return dim(action)\n}\n\n// Format the shared header line.\nfunction formatHeader(componentNames: string[]) {\n  return `${bold(\"┌\")} ${bold(`shadcn add ${componentNames.join(\", \")}`)} ${dim(\n    \"(dry run)\"\n  )}`\n}\n\n// Check if a CSS path matches a filter.\nfunction matchesCssPath(cssPath: string, filterPath: string) {\n  return (\n    cssPath === filterPath ||\n    cssPath.includes(filterPath) ||\n    cssPath.endsWith(filterPath)\n  )\n}\n\n// Push a content box (border + lines + border) into the output.\nfunction pushContentBox(\n  lines: string[],\n  contentLines: string[],\n  formatLine: (line: string) => string = (l) => l\n) {\n  lines.push(`${dim(\"│\")} ${BOX_TOP}`)\n  for (const line of contentLines) {\n    lines.push(`${dim(\"│\")} ${dim(\"│\")} ${formatLine(line)}`)\n  }\n  lines.push(`${dim(\"│\")} ${BOX_BOTTOM}`)\n}\n\nexport function formatDryRunResult(\n  result: DryRunResult,\n  componentNames: string[],\n  options: {\n    diff?: string | true\n    view?: string | true\n  } = {}\n) {\n  // --diff and --view get a focused output with just the file.\n  if (options.diff) {\n    if (typeof options.diff === \"string\") {\n      return formatDiffOutput(result, componentNames, options.diff)\n    }\n    return formatDiffOverview(result, componentNames)\n  }\n\n  if (options.view) {\n    if (typeof options.view === \"string\") {\n      return formatViewOutput(result, componentNames, options.view)\n    }\n    return formatViewOverview(result, componentNames)\n  }\n\n  return formatSummaryOutput(result, componentNames)\n}\n\n// Full summary output for --dry-run.\nfunction formatSummaryOutput(result: DryRunResult, componentNames: string[]) {\n  const lines: string[] = []\n\n  lines.push(formatHeader(componentNames))\n  lines.push(dim(\"│\"))\n\n  formatFilesSection(result, lines)\n  formatListSection(\"Dependencies\", result.dependencies, lines)\n  formatListSection(\"Dev Dependencies\", result.devDependencies, lines)\n  formatCssSection(result, lines)\n  formatEnvVarsSection(result, lines)\n  formatFontsSection(result, lines)\n\n  // Overwrite warning.\n  const overwriteCount = result.files.filter(\n    (f) => f.action === \"overwrite\"\n  ).length\n  if (overwriteCount > 0) {\n    lines.push(\n      yellow(\n        `⚠ ${overwriteCount} ${\n          overwriteCount === 1 ? \"file\" : \"files\"\n        } will be overwritten.`\n      )\n    )\n    lines.push(dim(\"│\"))\n  }\n\n  // Summary line.\n  const summaryParts: string[] = []\n  if (result.files.length > 0) {\n    summaryParts.push(\n      `${result.files.length} ${result.files.length === 1 ? \"file\" : \"files\"}`\n    )\n  }\n  if (result.dependencies.length > 0) {\n    summaryParts.push(\n      `${result.dependencies.length} ${\n        result.dependencies.length === 1 ? \"dep\" : \"deps\"\n      }`\n    )\n  }\n  if (result.css?.cssVarsCount) {\n    summaryParts.push(`${result.css.cssVarsCount} CSS vars`)\n  }\n  if (summaryParts.length > 0) {\n    lines.push(`${dim(\"│\")} ${dim(summaryParts.join(\", \"))}`)\n    lines.push(dim(\"│\"))\n  }\n\n  // Footer.\n  lines.push(`${dim(\"│\")} ${dim(\"Run with --diff to view changes.\")}`)\n  lines.push(`${dim(\"│\")} ${dim(\"Run with --view to view file contents.\")}`)\n  lines.push(`${dim(\"└\")} ${dim(\"Run without --dry-run to apply.\")}`)\n\n  return lines.join(\"\\n\")\n}\n\n// Focused output for --diff <path>.\nfunction formatDiffOutput(\n  result: DryRunResult,\n  componentNames: string[],\n  filterPath: string\n) {\n  const lines: string[] = []\n\n  lines.push(formatHeader(componentNames))\n  lines.push(dim(\"│\"))\n\n  const filesToDiff = resolveFilterPath(result.files, filterPath)\n  const cssMatch = result.css && matchesCssPath(result.css.path, filterPath)\n\n  if (filesToDiff.length === 0 && !cssMatch) {\n    lines.push(\n      `${dim(\"│\")} ${yellow(`No file matching \"${filterPath}\" found.`)}`\n    )\n    lines.push(dim(\"│\"))\n  } else {\n    for (const file of filesToDiff) {\n      formatFileDiff(file, lines)\n    }\n\n    if (cssMatch && result.css) {\n      lines.push(\n        `${dim(\"├\")} ${bold(result.css.path)} ${dim(\"(\")}${colorAction(\n          result.css.action\n        )}${dim(\")\")}`\n      )\n\n      if (result.css.action === \"create\" || !result.css.existingContent) {\n        pushContentBox(lines, result.css.content.split(\"\\n\"), (l) =>\n          green(`+${l}`)\n        )\n      } else {\n        const diffLines = computeUnifiedDiff(\n          result.css.existingContent,\n          result.css.content,\n          result.css.path,\n          { fullContext: true }\n        )\n        pushContentBox(lines, diffLines)\n      }\n\n      lines.push(dim(\"│\"))\n    }\n  }\n\n  lines.push(`${dim(\"└\")} ${dim(\"Run without --dry-run to apply.\")}`)\n\n  return lines.join(\"\\n\")\n}\n\n// Overview output for --diff (no path).\nfunction formatDiffOverview(result: DryRunResult, componentNames: string[]) {\n  const lines: string[] = []\n\n  lines.push(formatHeader(componentNames))\n  lines.push(dim(\"│\"))\n\n  const filesToDiff = result.files.slice(0, MAX_OVERVIEW_FILES)\n\n  if (filesToDiff.length === 0 && !result.css) {\n    lines.push(`${dim(\"│\")} ${dim(\"No changes.\")}`)\n    lines.push(dim(\"│\"))\n  } else {\n    for (const file of filesToDiff) {\n      formatFileDiff(file, lines)\n    }\n\n    const total = result.files.length\n    if (total > MAX_OVERVIEW_FILES) {\n      lines.push(dim(\"│\"))\n    }\n  }\n\n  const total = result.files.length\n  if (total > MAX_OVERVIEW_FILES) {\n    lines.push(\n      `  ${dim(\n        `Showing ${MAX_OVERVIEW_FILES} of ${total} files. Use --diff <path> to view a specific file.`\n      )}`\n    )\n  }\n\n  lines.push(`${dim(\"└\")} ${dim(\"Run without --dry-run to apply.\")}`)\n\n  return lines.join(\"\\n\")\n}\n\n// Overview output for --view (no path).\nfunction formatViewOverview(result: DryRunResult, componentNames: string[]) {\n  const lines: string[] = []\n\n  lines.push(formatHeader(componentNames))\n  lines.push(dim(\"│\"))\n\n  const filesToView = result.files.slice(0, MAX_OVERVIEW_FILES)\n\n  if (filesToView.length === 0 && !result.css) {\n    lines.push(`${dim(\"│\")} ${dim(\"No files.\")}`)\n    lines.push(dim(\"│\"))\n  } else {\n    for (const file of filesToView) {\n      const contentLines = file.content.split(\"\\n\")\n      lines.push(\n        `${dim(\"├\")} ${bold(file.path)} ${dim(\"(\")}${colorAction(\n          file.action\n        )}${dim(\")\")} ${dim(`${contentLines.length} lines`)}`\n      )\n      pushContentBox(lines, contentLines)\n      lines.push(dim(\"│\"))\n    }\n\n    const total = result.files.length\n    if (total > MAX_OVERVIEW_FILES) {\n      lines.push(dim(\"│\"))\n    }\n  }\n\n  const total = result.files.length\n  if (total > MAX_OVERVIEW_FILES) {\n    lines.push(\n      `  ${dim(\n        `Showing ${MAX_OVERVIEW_FILES} of ${total} files. Use --view <path> to view a specific file.`\n      )}`\n    )\n  }\n\n  lines.push(`${dim(\"└\")} ${dim(\"Run without --dry-run to apply.\")}`)\n\n  return lines.join(\"\\n\")\n}\n\n// Format a single file's diff block.\nfunction formatFileDiff(file: DryRunFile, lines: string[]) {\n  lines.push(\n    `${dim(\"├\")} ${bold(file.path)} ${dim(\"(\")}${colorAction(file.action)}${dim(\n      \")\"\n    )}`\n  )\n\n  if (file.action === \"skip\") {\n    lines.push(`${dim(\"│\")} ${dim(\"No changes.\")}`)\n  } else if (file.action === \"create\") {\n    pushContentBox(lines, file.content.split(\"\\n\"), (l) => green(`+${l}`))\n  } else {\n    const diffLines = computeUnifiedDiff(\n      file.existingContent!,\n      file.content,\n      file.path\n    )\n    pushContentBox(lines, diffLines)\n  }\n\n  lines.push(dim(\"│\"))\n}\n\n// Focused output for --view <path>.\nfunction formatViewOutput(\n  result: DryRunResult,\n  componentNames: string[],\n  filterPath: string\n) {\n  const lines: string[] = []\n\n  lines.push(formatHeader(componentNames))\n  lines.push(dim(\"│\"))\n\n  const filesToView = resolveFilterPath(result.files, filterPath)\n  const cssMatch = result.css && matchesCssPath(result.css.path, filterPath)\n\n  if (filesToView.length === 0 && !cssMatch) {\n    lines.push(\n      `${dim(\"│\")} ${yellow(`No file matching \"${filterPath}\" found.`)}`\n    )\n    lines.push(dim(\"│\"))\n  } else {\n    for (const file of filesToView) {\n      const contentLines = file.content.split(\"\\n\")\n      lines.push(\n        `${dim(\"├\")} ${bold(file.path)} ${dim(\"(\")}${colorAction(\n          file.action\n        )}${dim(\")\")} ${dim(`${contentLines.length} lines`)}`\n      )\n      pushContentBox(lines, contentLines)\n      lines.push(dim(\"│\"))\n    }\n\n    if (cssMatch && result.css) {\n      const contentLines = result.css.content.split(\"\\n\")\n      lines.push(\n        `${dim(\"├\")} ${bold(result.css.path)} ${dim(\"(\")}${colorAction(\n          result.css.action\n        )}${dim(\")\")} ${dim(`${contentLines.length} lines`)}`\n      )\n      pushContentBox(lines, contentLines)\n      lines.push(dim(\"│\"))\n    }\n  }\n\n  lines.push(`${dim(\"└\")} ${dim(\"Run without --dry-run to apply.\")}`)\n\n  return lines.join(\"\\n\")\n}\n\nfunction formatFilesSection(result: DryRunResult, lines: string[]) {\n  if (result.files.length === 0) {\n    return\n  }\n\n  // Build summary counts.\n  const counts = { create: 0, overwrite: 0, skip: 0 }\n  for (const f of result.files) {\n    counts[f.action]++\n  }\n  const summaryParts: string[] = []\n  if (counts.create > 0) {\n    summaryParts.push(green(`+${counts.create} new`))\n  }\n  if (counts.overwrite > 0) {\n    summaryParts.push(yellow(`~${counts.overwrite} overwrite`))\n  }\n  if (counts.skip > 0) {\n    summaryParts.push(dim(`=${counts.skip} skip`))\n  }\n  const summary =\n    summaryParts.length > 0 ? ` ${summaryParts.join(dim(\", \"))}` : \"\"\n\n  lines.push(\n    `${dim(\"├\")} ${bold(\"Files\")} ${dim(`(${result.files.length})`)}${summary}`\n  )\n\n  // Find the longest path for alignment.\n  const maxPathLen = Math.max(...result.files.map((f) => f.path.length))\n\n  for (const file of result.files) {\n    const glyph = ACTION_GLYPHS[file.action]\n    const label = ACTION_LABELS[file.action]\n    const padding = \" \".repeat(Math.max(1, maxPathLen - file.path.length + 2))\n\n    const colorFn =\n      file.action === \"create\"\n        ? green\n        : file.action === \"overwrite\"\n          ? yellow\n          : dim\n\n    const pathStr = file.action === \"skip\" ? dim(file.path) : file.path\n\n    lines.push(\n      `${dim(\"│\")} ${colorFn(glyph)} ${pathStr}${padding}${colorFn(label)}`\n    )\n  }\n\n  lines.push(dim(\"│\"))\n}\n\nfunction formatListSection(title: string, items: string[], lines: string[]) {\n  if (!items.length) {\n    return\n  }\n\n  lines.push(`${dim(\"├\")} ${bold(title)} ${dim(`(${items.length})`)}`)\n  for (const item of items) {\n    lines.push(`${dim(\"│\")} ${green(\"+\")} ${item}`)\n  }\n  lines.push(dim(\"│\"))\n}\n\nfunction formatCssSection(result: DryRunResult, lines: string[]) {\n  if (!result.css) {\n    return\n  }\n\n  lines.push(`${dim(\"├\")} ${bold(\"CSS\")}`)\n\n  if (result.css.cssVarsCount > 0) {\n    lines.push(\n      `${dim(\"│\")} ${green(\"+\")} ${\n        result.css.cssVarsCount\n      } CSS variables added to ${cyan(result.css.path)}`\n    )\n  } else {\n    lines.push(`${dim(\"│\")} ${green(\"+\")} Updated ${cyan(result.css.path)}`)\n  }\n\n  lines.push(dim(\"│\"))\n}\n\nfunction formatEnvVarsSection(result: DryRunResult, lines: string[]) {\n  if (!result.envVars) {\n    return\n  }\n\n  const vars = Object.keys(result.envVars.variables)\n  lines.push(`${dim(\"├\")} ${bold(\"Environment Variables\")}`)\n  for (const key of vars) {\n    lines.push(`${dim(\"│\")} ${green(\"+\")} ${key}`)\n  }\n  lines.push(dim(\"│\"))\n}\n\nfunction formatFontsSection(result: DryRunResult, lines: string[]) {\n  if (!result.fonts.length) {\n    return\n  }\n\n  lines.push(`${dim(\"├\")} ${bold(\"Fonts\")}`)\n  for (const font of result.fonts) {\n    lines.push(\n      `${dim(\"│\")} ${green(\"+\")} ${font.name} ${dim(`(${font.provider})`)}`\n    )\n  }\n  lines.push(dim(\"│\"))\n}\n\n// Resolve a partial path filter against the file list.\n// Returns matching files. Supports partial matching (e.g. \"button\" matches \"components/ui/button.tsx\").\nexport function resolveFilterPath(files: DryRunFile[], filterPath: string) {\n  // Exact match first.\n  const exact = files.filter((f) => f.path === filterPath)\n  if (exact.length > 0) {\n    return exact\n  }\n\n  // Partial match: check if the filter appears in the path.\n  return files.filter(\n    (f) =>\n      f.path.includes(filterPath) ||\n      f.path.replace(/\\\\/g, \"/\").includes(filterPath)\n  )\n}\n\ntype HunkEntry = {\n  kind: \"context\" | \"removed\" | \"added\"\n  formatted: string\n}\n\n// Compute a unified diff using the `diff` package.\n// Use fullContext for CSS files so the existing vars are visible alongside new ones.\nfunction computeUnifiedDiff(\n  oldStr: string,\n  newStr: string,\n  filePath: string,\n  options: { fullContext?: boolean } = {}\n) {\n  // Check if the only differences are formatting (whitespace, quotes, semicolons).\n  if (isFormattingOnly(oldStr, newStr)) {\n    return [dim(\"  Formatting-only changes (spacing, quotes, semicolons).\")]\n  }\n\n  // Normalize both files so structuredPatch only sees real content changes.\n  // This gives us correct hunk positions and line counts.\n  const normalizedOld = normalizeFileForDiff(oldStr)\n  const normalizedNew = normalizeFileForDiff(newStr)\n\n  const contextLines = options.fullContext\n    ? Math.max(\n        normalizedOld.split(\"\\n\").length,\n        normalizedNew.split(\"\\n\").length\n      )\n    : 3\n\n  const patch = structuredPatch(\n    `a/${filePath}`,\n    `b/${filePath}`,\n    normalizedOld,\n    normalizedNew,\n    \"\",\n    \"\",\n    { context: contextLines }\n  )\n\n  if (!patch.hunks.length) {\n    return [dim(\"  No changes.\")]\n  }\n\n  const output: string[] = [dim(`--- a/${filePath}`), dim(`+++ b/${filePath}`)]\n\n  // Use the actual new file lines for display.\n  const newLines = newStr.split(\"\\n\")\n\n  for (const hunk of patch.hunks) {\n    const { entries, newLineIndex: _ } = processHunk(hunk, newLines)\n\n    // Skip hunks that have no real changes after formatting suppression.\n    if (!entries.some((e) => e.kind !== \"context\")) {\n      continue\n    }\n\n    // Recompute hunk header from actual entries.\n    const contextCount = entries.filter((e) => e.kind === \"context\").length\n    const removedCount = entries.filter((e) => e.kind === \"removed\").length\n    const addedCount = entries.filter((e) => e.kind === \"added\").length\n\n    output.push(\n      cyan(\n        `@@ -${hunk.oldStart},${contextCount + removedCount} +${\n          hunk.newStart\n        },${contextCount + addedCount} @@`\n      )\n    )\n\n    for (const entry of entries) {\n      output.push(entry.formatted)\n    }\n  }\n\n  return output\n}\n\n// Process a single hunk into typed entries, suppressing formatting-only changes.\nfunction processHunk(\n  hunk: { oldStart: number; newStart: number; lines: string[] },\n  newLines: string[]\n) {\n  const entries: HunkEntry[] = []\n  let newLineIndex = hunk.newStart - 1\n  let i = 0\n\n  while (i < hunk.lines.length) {\n    const line = hunk.lines[i]\n\n    if (line.startsWith(\"-\")) {\n      // Collect consecutive removed and added lines.\n      const removed: string[] = []\n      while (i < hunk.lines.length && hunk.lines[i].startsWith(\"-\")) {\n        removed.push(hunk.lines[i].slice(1))\n        i++\n      }\n      while (i < hunk.lines.length && hunk.lines[i].startsWith(\"\\\\\")) {\n        i++\n      }\n      const added: string[] = []\n      while (i < hunk.lines.length && hunk.lines[i].startsWith(\"+\")) {\n        added.push(hunk.lines[i].slice(1))\n        i++\n      }\n      while (i < hunk.lines.length && hunk.lines[i].startsWith(\"\\\\\")) {\n        i++\n      }\n\n      newLineIndex = processChangeGroup(\n        removed,\n        added,\n        newLines,\n        newLineIndex,\n        entries\n      )\n    } else if (line.startsWith(\"+\")) {\n      const actual = newLines[newLineIndex] ?? line.slice(1)\n      entries.push({ kind: \"added\", formatted: green(`+${actual}`) })\n      newLineIndex++\n      i++\n    } else if (line.startsWith(\"\\\\\")) {\n      i++\n    } else {\n      const actual = newLines[newLineIndex] ?? line.slice(1)\n      entries.push({ kind: \"context\", formatted: dim(` ${actual}`) })\n      newLineIndex++\n      i++\n    }\n  }\n\n  return { entries, newLineIndex }\n}\n\n// Process a group of removed/added lines, detecting formatting-only changes.\nfunction processChangeGroup(\n  removed: string[],\n  added: string[],\n  newLines: string[],\n  newLineIndex: number,\n  entries: HunkEntry[]\n) {\n  // Check if the entire group is formatting-only (e.g., multi-line to single-line).\n  if (isGroupFormattingOnly(removed, added)) {\n    for (let j = 0; j < added.length; j++) {\n      const actual = newLines[newLineIndex] ?? added[j]\n      entries.push({ kind: \"context\", formatted: dim(` ${actual}`) })\n      newLineIndex++\n    }\n    return newLineIndex\n  }\n\n  // Collapse continuation lines in the removed group so we can\n  // match multi-line removed statements against single-line added ones.\n  // e.g., [\"default:\", '  \"h-8...\"'] → [\"default: \\\"h-8...\\\"\"].\n  const collapsedRemoved = collapseContLines(removed)\n  const normalizedCollapsed = collapsedRemoved.map(normalizeLine)\n  const usedCollapsed = new Set<number>()\n\n  for (let j = 0; j < added.length; j++) {\n    const actualNewLine = newLines[newLineIndex] ?? added[j]\n    const normalizedAdded = normalizeLine(added[j])\n\n    // Find a matching collapsed removed statement.\n    const matchIdx = normalizedCollapsed.findIndex(\n      (nr, idx) => !usedCollapsed.has(idx) && nr === normalizedAdded\n    )\n\n    if (matchIdx !== -1) {\n      // Formatting-only change — show as context.\n      usedCollapsed.add(matchIdx)\n      entries.push({ kind: \"context\", formatted: dim(` ${actualNewLine}`) })\n    } else {\n      // Real change — find best unmatched removed statement for inline diff.\n      const unmatchedIdx = normalizedCollapsed.findIndex(\n        (_, idx) => !usedCollapsed.has(idx)\n      )\n      if (unmatchedIdx !== -1) {\n        usedCollapsed.add(unmatchedIdx)\n        const { oldHighlighted, newHighlighted } = highlightInlineChanges(\n          collapsedRemoved[unmatchedIdx],\n          actualNewLine\n        )\n        entries.push({ kind: \"removed\", formatted: oldHighlighted })\n        entries.push({ kind: \"added\", formatted: newHighlighted })\n      } else {\n        entries.push({\n          kind: \"added\",\n          formatted: green(`+${actualNewLine}`),\n        })\n      }\n    }\n    newLineIndex++\n  }\n\n  // Remaining unmatched removed statements.\n  for (let j = 0; j < collapsedRemoved.length; j++) {\n    if (!usedCollapsed.has(j)) {\n      entries.push({\n        kind: \"removed\",\n        formatted: red(`-${collapsedRemoved[j]}`),\n      })\n    }\n  }\n\n  return newLineIndex\n}\n\n// Normalize a file for diffing: apply per-line formatting normalization\n// while preserving line structure so hunk positions are correct.\nfunction normalizeFileForDiff(str: string) {\n  return str\n    .split(\"\\n\")\n    .map((line) => {\n      // Preserve indentation, normalize quotes and semicolons.\n      const indent = line.match(/^(\\s*)/)?.[1] ?? \"\"\n      const content = line.slice(indent.length)\n      return (\n        indent +\n        content\n          .replace(/['\"]/g, '\"') // Normalize quotes to double.\n          .replace(/;$/g, \"\") // Remove trailing semicolons.\n      )\n    })\n    .join(\"\\n\")\n}\n\n// Collapse continuation lines in a group of removed lines.\n// Joins lines where a key ends with `:` and the next line is an indented value.\n// e.g., [\"      default:\", '        \"h-8...\"'] → ['      default: \"h-8...\"'].\nfunction collapseContLines(lines: string[]) {\n  const result: string[] = []\n\n  for (let i = 0; i < lines.length; i++) {\n    let line = lines[i]\n\n    // If line ends with `:` (after trimming) and next line is a continuation value.\n    while (i + 1 < lines.length && line.trimEnd().endsWith(\":\")) {\n      i++\n      line = line.trimEnd() + \" \" + lines[i].trim()\n    }\n\n    result.push(line)\n  }\n\n  return result\n}\n\n// Highlight inline word-level changes between two lines.\nfunction highlightInlineChanges(oldLine: string, newLine: string) {\n  const changes = diffWords(oldLine, newLine)\n\n  let oldHighlighted = \"-\"\n  let newHighlighted = \"+\"\n\n  for (const change of changes) {\n    if (change.added) {\n      newHighlighted += bold(green(change.value))\n    } else if (change.removed) {\n      oldHighlighted += bold(red(change.value))\n    } else {\n      oldHighlighted += red(change.value)\n      newHighlighted += green(change.value)\n    }\n  }\n\n  return { oldHighlighted, newHighlighted }\n}\n\n// Normalize a line for formatting comparison.\nfunction normalizeLine(line: string) {\n  return line\n    .replace(/\\s+/g, \" \") // Collapse whitespace.\n    .trim()\n    .replace(/['\"]/g, \"'\") // Normalize quotes.\n    .replace(/;/g, \"\") // Remove all semicolons.\n    .replace(/,$/, \"\") // Remove trailing commas.\n}\n\n// Detect if differences between two strings are formatting-only.\n// Joins normalized lines with a space so multi-line vs single-line wrapping is ignored.\nfunction isFormattingOnly(oldStr: string, newStr: string) {\n  const normalize = (str: string) =>\n    str\n      .split(\"\\n\")\n      .map(normalizeLine)\n      .filter((line) => line.length > 0)\n      .join(\" \")\n\n  return normalize(oldStr) === normalize(newStr)\n}\n\n// Detect if a group of removed/added lines is formatting-only.\n// Handles cases like multi-line to single-line reformatting.\nfunction isGroupFormattingOnly(removed: string[], added: string[]) {\n  const normalizeGroup = (lines: string[]) =>\n    lines\n      .map(normalizeLine)\n      .filter((line) => line.length > 0)\n      .join(\" \")\n\n  return normalizeGroup(removed) === normalizeGroup(added)\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/dry-run.ts",
    "content": "import { existsSync, promises as fs } from \"fs\"\nimport path from \"path\"\nimport { getRegistryBaseColor } from \"@/src/registry/api\"\nimport { configWithDefaults } from \"@/src/registry/config\"\nimport { resolveRegistryTree } from \"@/src/registry/resolver\"\nimport { registryResolvedItemsTreeSchema } from \"@/src/schema\"\nimport { isContentSame } from \"@/src/utils/compare\"\nimport { isEnvFile } from \"@/src/utils/env-helpers\"\nimport { getSupportedFontMarkers } from \"@/src/utils/font-markers\"\nimport type { Config } from \"@/src/utils/get-config\"\nimport { getProjectInfo } from \"@/src/utils/get-project-info\"\nimport { transform } from \"@/src/utils/transformers\"\nimport { transformAsChild } from \"@/src/utils/transformers/transform-aschild\"\nimport { transformCleanup } from \"@/src/utils/transformers/transform-cleanup\"\nimport { transformCssVars as transformCssVarsTransformer } from \"@/src/utils/transformers/transform-css-vars\"\nimport { transformFont } from \"@/src/utils/transformers/transform-font\"\nimport { transformIcons } from \"@/src/utils/transformers/transform-icons\"\nimport { transformImport } from \"@/src/utils/transformers/transform-import\"\nimport { transformMenu } from \"@/src/utils/transformers/transform-menu\"\nimport { transformRsc } from \"@/src/utils/transformers/transform-rsc\"\nimport { transformRtl } from \"@/src/utils/transformers/transform-rtl\"\nimport { transformTwPrefixes } from \"@/src/utils/transformers/transform-tw-prefix\"\nimport { transformCss } from \"@/src/utils/updaters/update-css\"\nimport { transformCssVars } from \"@/src/utils/updaters/update-css-vars\"\nimport {\n  findCommonRoot,\n  resolveFilePath,\n} from \"@/src/utils/updaters/update-files\"\nimport { massageTreeForFonts } from \"@/src/utils/updaters/update-fonts\"\nimport type { z } from \"zod\"\n\nexport type DryRunFile = {\n  path: string\n  action: \"create\" | \"overwrite\" | \"skip\"\n  content: string\n  existingContent?: string\n  type: string\n}\n\nexport type DryRunCss = {\n  path: string\n  content: string\n  existingContent?: string\n  action: \"create\" | \"update\"\n  cssVarsCount: number\n}\n\nexport type DryRunEnvVars = {\n  path: string\n  variables: Record<string, string>\n  action: \"create\" | \"update\"\n}\n\nexport type DryRunFont = {\n  name: string\n  provider: string\n}\n\nexport type DryRunResult = {\n  files: DryRunFile[]\n  dependencies: string[]\n  devDependencies: string[]\n  css: DryRunCss | null\n  envVars: DryRunEnvVars | null\n  fonts: DryRunFont[]\n  docs: string | null\n}\n\nexport async function dryRunComponents(\n  components: string[],\n  config: Config,\n  options: {\n    overwrite?: boolean\n    overwriteCssVars?: boolean\n    skipFonts?: boolean\n  } = {}\n) {\n  const result: DryRunResult = {\n    files: [],\n    dependencies: [],\n    devDependencies: [],\n    css: null,\n    envVars: null,\n    fonts: [],\n    docs: null,\n  }\n\n  if (!components.length) {\n    return result\n  }\n\n  // Resolve the registry tree (read-only).\n  let tree = await resolveRegistryTree(components, configWithDefaults(config))\n\n  if (!tree) {\n    throw new Error(\"Failed to fetch components from registry.\")\n  }\n\n  // Massage tree for fonts (read-only).\n  if (!options.skipFonts) {\n    tree = await massageTreeForFonts(tree, config)\n  }\n  const supportedFontMarkers = getSupportedFontMarkers([tree])\n\n  // Dependencies pass through deduplicated.\n  result.dependencies = Array.from(new Set(tree.dependencies ?? []))\n  result.devDependencies = Array.from(new Set(tree.devDependencies ?? []))\n\n  // Docs pass through directly.\n  result.docs = tree.docs ?? null\n\n  // Process files.\n  await processFiles(tree, config, result, options, supportedFontMarkers)\n\n  // Process CSS.\n  await processCss(tree, config, result, options)\n\n  // Process env vars.\n  processEnvVars(tree, config, result)\n\n  // Process fonts.\n  if (!options.skipFonts) {\n    processFonts(tree, result)\n  }\n\n  return result\n}\n\nasync function processFiles(\n  tree: z.infer<typeof registryResolvedItemsTreeSchema>,\n  config: Config,\n  result: DryRunResult,\n  options: { overwrite?: boolean },\n  supportedFontMarkers: string[]\n) {\n  const files = tree.files\n  if (!files?.length) {\n    return\n  }\n\n  const [projectInfo, baseColor] = await Promise.all([\n    getProjectInfo(config.resolvedPaths.cwd),\n    config.tailwind.baseColor\n      ? getRegistryBaseColor(config.tailwind.baseColor)\n      : Promise.resolve(undefined),\n  ])\n\n  for (let index = 0; index < files.length; index++) {\n    const file = files[index]\n    if (!file.content) {\n      continue\n    }\n\n    let filePath = resolveFilePath(file, config, {\n      isSrcDir: projectInfo?.isSrcDir,\n      framework: projectInfo?.framework.name,\n      commonRoot: findCommonRoot(\n        files.map((f) => f.path),\n        file.path\n      ),\n      fileIndex: index,\n    })\n\n    if (!filePath) {\n      continue\n    }\n\n    if (!config.tsx) {\n      filePath = filePath.replace(/\\.tsx?$/, (match) =>\n        match === \".tsx\" ? \".jsx\" : \".js\"\n      )\n    }\n\n    const existingFile = existsSync(filePath)\n    const relativePath = path.relative(config.resolvedPaths.cwd, filePath)\n\n    // Run transformers (same as update-files.ts).\n    const isUniversalItemFile =\n      file.type === \"registry:file\" || file.type === \"registry:item\"\n    const content =\n      isEnvFile(filePath) || isUniversalItemFile\n        ? file.content\n        : await transform(\n            {\n              filename: file.path,\n              raw: file.content,\n              config,\n              baseColor,\n              transformJsx: !config.tsx,\n              isRemote: false,\n              supportedFontMarkers,\n            },\n            [\n              transformImport,\n              transformRsc,\n              transformCssVarsTransformer,\n              transformTwPrefixes,\n              transformIcons,\n              transformMenu,\n              transformAsChild,\n              transformRtl,\n              transformFont,\n              transformCleanup,\n            ]\n          )\n\n    // Determine action.\n    let action: DryRunFile[\"action\"] = \"create\"\n    let oldContent: string | undefined\n    if (existingFile) {\n      oldContent = await fs.readFile(filePath, \"utf-8\")\n      if (isContentSame(oldContent, content)) {\n        action = \"skip\"\n      } else {\n        action = \"overwrite\"\n      }\n    }\n\n    result.files.push({\n      path: relativePath,\n      action,\n      content,\n      ...(action === \"overwrite\" && { existingContent: oldContent }),\n      type: file.type ?? \"registry:ui\",\n    })\n  }\n}\n\nasync function processCss(\n  tree: z.infer<typeof registryResolvedItemsTreeSchema>,\n  config: Config,\n  result: DryRunResult,\n  options: { overwriteCssVars?: boolean }\n) {\n  const hasCss = tree.css && Object.keys(tree.css).length > 0\n  const hasCssVars = Object.keys(tree.cssVars ?? {}).length > 0\n\n  if (!config.resolvedPaths.tailwindCss || (!hasCss && !hasCssVars)) {\n    return\n  }\n\n  const cssFilepath = config.resolvedPaths.tailwindCss\n  const existingFile = existsSync(cssFilepath)\n  const relativePath = path.relative(config.resolvedPaths.cwd, cssFilepath)\n\n  const existingContent = existingFile\n    ? await fs.readFile(cssFilepath, \"utf8\")\n    : \"\"\n  let output = existingContent\n\n  // Apply CSS vars transform.\n  if (hasCssVars) {\n    output = await transformCssVars(output, tree.cssVars!, config, {\n      overwriteCssVars: options.overwriteCssVars,\n    })\n  }\n\n  // Apply CSS transform.\n  if (hasCss) {\n    output = await transformCss(output, tree.css!)\n  }\n\n  // Count CSS variables across all modes.\n  let cssVarsCount = 0\n  if (tree.cssVars) {\n    for (const vars of Object.values(tree.cssVars)) {\n      if (vars) {\n        cssVarsCount += Object.keys(vars).length\n      }\n    }\n  }\n\n  result.css = {\n    path: relativePath,\n    content: output,\n    ...(existingFile && { existingContent }),\n    action: existingFile ? \"update\" : \"create\",\n    cssVarsCount,\n  }\n}\n\nfunction processEnvVars(\n  tree: z.infer<typeof registryResolvedItemsTreeSchema>,\n  config: Config,\n  result: DryRunResult\n) {\n  if (!tree.envVars || Object.keys(tree.envVars).length === 0) {\n    return\n  }\n\n  const envFilePath = path.join(config.resolvedPaths.cwd, \".env.local\")\n  const existingFile = existsSync(envFilePath)\n  const relativePath = path.relative(config.resolvedPaths.cwd, envFilePath)\n\n  result.envVars = {\n    path: relativePath,\n    variables: tree.envVars,\n    action: existingFile ? \"update\" : \"create\",\n  }\n}\n\nfunction processFonts(\n  tree: z.infer<typeof registryResolvedItemsTreeSchema>,\n  result: DryRunResult\n) {\n  if (!tree.fonts?.length) {\n    return\n  }\n\n  for (const font of tree.fonts) {\n    result.fonts.push({\n      name: font.font.family,\n      provider:\n        font.font.provider === \"google\" ? \"Google Fonts\" : font.font.provider,\n    })\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/env-helpers.test.ts",
    "content": "import { existsSync } from \"fs\"\nimport { beforeEach, describe, expect, test, vi } from \"vitest\"\n\nimport {\n  findExistingEnvFile,\n  getNewEnvKeys,\n  isEnvFile,\n  mergeEnvContent,\n  parseEnvContent,\n} from \"./env-helpers\"\n\n// Mock fs module\nvi.mock(\"fs\", () => ({\n  existsSync: vi.fn(),\n}))\n\ndescribe(\"isEnvFile\", () => {\n  test(\"should identify .env files\", () => {\n    expect(isEnvFile(\"/path/to/.env\")).toBe(true)\n    expect(isEnvFile(\".env\")).toBe(true)\n    expect(isEnvFile(\"/path/to/.env.local\")).toBe(true)\n    expect(isEnvFile(\".env.local\")).toBe(true)\n    expect(isEnvFile(\".env.example\")).toBe(true)\n    expect(isEnvFile(\".env.development.local\")).toBe(true)\n    expect(isEnvFile(\".env.production.local\")).toBe(true)\n    expect(isEnvFile(\".env.test.local\")).toBe(true)\n  })\n\n  test(\"should not identify non-.env files\", () => {\n    expect(isEnvFile(\"/path/to/file.txt\")).toBe(false)\n    expect(isEnvFile(\"environment.ts\")).toBe(false)\n    expect(isEnvFile(\"/path/to/.environment\")).toBe(false)\n    expect(isEnvFile(\"env.config\")).toBe(false)\n  })\n})\n\ndescribe(\"parseEnvContent\", () => {\n  test(\"should parse basic key-value pairs\", () => {\n    const content = `KEY1=value1\nKEY2=value2`\n    expect(parseEnvContent(content)).toEqual({\n      KEY1: \"value1\",\n      KEY2: \"value2\",\n    })\n  })\n\n  test(\"should handle comments and empty lines\", () => {\n    const content = `# This is a comment\nKEY1=value1\n\n# Another comment\nKEY2=value2\n`\n    expect(parseEnvContent(content)).toEqual({\n      KEY1: \"value1\",\n      KEY2: \"value2\",\n    })\n  })\n\n  test(\"should handle quoted values\", () => {\n    const content = `KEY1=\"value with spaces\"\nKEY2='single quotes'`\n    expect(parseEnvContent(content)).toEqual({\n      KEY1: \"value with spaces\",\n      KEY2: \"single quotes\",\n    })\n  })\n\n  test(\"should handle values with equals signs\", () => {\n    const content = `DATABASE_URL=postgresql://user:pass@host:5432/db?ssl=true`\n    expect(parseEnvContent(content)).toEqual({\n      DATABASE_URL: \"postgresql://user:pass@host:5432/db?ssl=true\",\n    })\n  })\n\n  test(\"should handle empty values\", () => {\n    const content = `EMPTY_KEY=\nKEY_WITH_VALUE=value`\n    expect(parseEnvContent(content)).toEqual({\n      EMPTY_KEY: \"\",\n      KEY_WITH_VALUE: \"value\",\n    })\n  })\n\n  test(\"should skip malformed lines\", () => {\n    const content = `VALID_KEY=value\nthis is not a valid line\nANOTHER_KEY=another_value`\n    expect(parseEnvContent(content)).toEqual({\n      VALID_KEY: \"value\",\n      ANOTHER_KEY: \"another_value\",\n    })\n  })\n\n  test(\"should handle multi-line values (current limitation: breaks them)\", () => {\n    // This test documents that multi-line values are NOT properly supported\n    const content = `SINGLE_LINE=\"This is fine\"\nMULTI_LINE=\"This is line 1\nThis is line 2\nThis is line 3\"\nNEXT_KEY=value`\n\n    const result = parseEnvContent(content)\n\n    // Current behavior: only gets first line of multi-line value\n    expect(result.SINGLE_LINE).toBe(\"This is fine\")\n    expect(result.MULTI_LINE).toBe(\"This is line 1\")\n    // The other lines are lost/treated as malformed\n    expect(result[\"This is line 2\"]).toBeUndefined()\n    expect(result.NEXT_KEY).toBe(\"value\")\n  })\n\n  test(\"should handle escaped newlines in values\", () => {\n    const content = `KEY_WITH_ESCAPED_NEWLINE=\"Line 1\\\\nLine 2\\\\nLine 3\"\nREGULAR_KEY=regular_value`\n\n    const result = parseEnvContent(content)\n\n    // Escaped newlines are preserved as literal \\n\n    expect(result.KEY_WITH_ESCAPED_NEWLINE).toBe(\"Line 1\\\\nLine 2\\\\nLine 3\")\n    expect(result.REGULAR_KEY).toBe(\"regular_value\")\n  })\n\n  test(\"should handle values with unmatched quotes\", () => {\n    const content = `GOOD_KEY=\"proper quotes\"\nBAD_KEY=\"unmatched quote\nNEXT_KEY=value`\n\n    const result = parseEnvContent(content)\n\n    expect(result.GOOD_KEY).toBe(\"proper quotes\")\n    // Current behavior: strips the opening quote even if unmatched\n    expect(result.BAD_KEY).toBe(\"unmatched quote\")\n    expect(result.NEXT_KEY).toBe(\"value\")\n  })\n\n  test(\"should handle backtick quotes (not supported)\", () => {\n    const content = 'KEY1=`backtick value`\\nKEY2=\"double quotes\"'\n\n    const result = parseEnvContent(content)\n\n    // Backticks are not treated as quotes\n    expect(result.KEY1).toBe(\"`backtick value`\")\n    expect(result.KEY2).toBe(\"double quotes\")\n  })\n})\n\ndescribe(\"mergeEnvContent\", () => {\n  test(\"should append only new keys\", () => {\n    const existing = `KEY1=value1`\n    const newContent = `KEY2=value2`\n    const result = mergeEnvContent(existing, newContent)\n    expect(result).toBe(`KEY1=value1\n\nKEY2=value2\n`)\n  })\n\n  test(\"should preserve existing values and NOT overwrite them\", () => {\n    const existing = `KEY1=existing_value\nKEY2=value2`\n    const newContent = `KEY1=new_value_should_be_ignored\nKEY3=value3`\n    const result = mergeEnvContent(existing, newContent)\n    expect(result).toBe(`KEY1=existing_value\nKEY2=value2\n\nKEY3=value3\n`)\n\n    expect(result).toContain(\"KEY1=existing_value\")\n    expect(result).not.toContain(\"KEY1=new_value_should_be_ignored\")\n  })\n\n  test(\"should handle empty existing content\", () => {\n    const existing = \"\"\n    const newContent = \"KEY1=value1\"\n    const result = mergeEnvContent(existing, newContent)\n    expect(result).toBe(`KEY1=value1\n`)\n  })\n\n  test(\"should not add any content if all keys already exist\", () => {\n    const existing = `KEY1=value1\nKEY2=value2`\n    const newContent = `KEY1=ignored\nKEY2=ignored`\n    const result = mergeEnvContent(existing, newContent)\n\n    expect(result).toBe(`KEY1=value1\nKEY2=value2\n`)\n  })\n\n  test(\"should return unchanged content when all keys exist and formatting is correct\", () => {\n    const existing = `KEY1=value1\nKEY2=value2\n`\n    const newContent = `KEY1=ignored\nKEY2=ignored`\n    const result = mergeEnvContent(existing, newContent)\n\n    expect(result).toBe(existing)\n  })\n\n  test(\"should handle existing content with comments\", () => {\n    const existing = `# Production configuration\nKEY1=value1\n# API Keys\nKEY2=value2`\n    const newContent = `KEY3=value3\nKEY1=should_be_ignored`\n    const result = mergeEnvContent(existing, newContent)\n\n    expect(result).toBe(`# Production configuration\nKEY1=value1\n# API Keys\nKEY2=value2\n\nKEY3=value3\n`)\n  })\n\n  test(\"should maintain proper formatting\", () => {\n    const existing = `KEY1=value1\nKEY2=value2\n`\n    const newContent = `KEY3=value3`\n    const result = mergeEnvContent(existing, newContent)\n\n    expect(result).toBe(`KEY1=value1\nKEY2=value2\n\nKEY3=value3\n`)\n  })\n\n  test(\"should handle multiple new keys\", () => {\n    const existing = `KEY1=value1`\n    const newContent = `KEY2=value2\nKEY3=value3\nKEY4=value4`\n    const result = mergeEnvContent(existing, newContent)\n\n    expect(result).toBe(`KEY1=value1\n\nKEY2=value2\nKEY3=value3\nKEY4=value4\n`)\n  })\n\n  test(\"should handle multi-line values in merge (current limitation)\", () => {\n    const existing = `EXISTING_KEY=existing_value`\n    const newContent = `MULTI_LINE_KEY=\"Line 1\nLine 2\nLine 3\"\nSIMPLE_KEY=simple`\n\n    const result = mergeEnvContent(existing, newContent)\n\n    // Current behavior: only the first line is added\n    expect(result).toBe(`EXISTING_KEY=existing_value\n\nMULTI_LINE_KEY=Line 1\nSIMPLE_KEY=simple\n`)\n\n    // The multi-line value is broken\n    expect(result).not.toContain(\"Line 2\")\n    expect(result).not.toContain(\"Line 3\")\n  })\n})\n\ndescribe(\"getNewEnvKeys\", () => {\n  test(\"should identify new keys\", () => {\n    const existing = `KEY1=value1\nKEY2=value2`\n    const newContent = `KEY1=ignored\nKEY3=value3\nKEY4=value4`\n\n    const result = getNewEnvKeys(existing, newContent)\n    expect(result).toEqual([\"KEY3\", \"KEY4\"])\n  })\n\n  test(\"should return empty array when all keys exist\", () => {\n    const existing = `KEY1=value1\nKEY2=value2`\n    const newContent = `KEY1=different\nKEY2=different`\n\n    const result = getNewEnvKeys(existing, newContent)\n    expect(result).toEqual([])\n  })\n\n  test(\"should handle empty existing content\", () => {\n    const existing = \"\"\n    const newContent = `KEY1=value1\nKEY2=value2`\n\n    const result = getNewEnvKeys(existing, newContent)\n    expect(result).toEqual([\"KEY1\", \"KEY2\"])\n  })\n})\n\ndescribe(\"findExistingEnvFile\", () => {\n  beforeEach(() => {\n    vi.clearAllMocks()\n  })\n\n  test(\"should return .env.local if it exists\", () => {\n    vi.mocked(existsSync).mockImplementation((path) => {\n      const pathStr = typeof path === \"string\" ? path : path.toString()\n      return pathStr.endsWith(\".env.local\")\n    })\n\n    const result = findExistingEnvFile(\"/test/dir\")\n    expect(result).toBe(\"/test/dir/.env.local\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env.local\")\n    expect(existsSync).toHaveBeenCalledTimes(1)\n  })\n\n  test(\"should return .env if .env.local doesn't exist\", () => {\n    vi.mocked(existsSync).mockImplementation((path) => {\n      const pathStr = typeof path === \"string\" ? path : path.toString()\n      return pathStr.endsWith(\".env\")\n    })\n\n    const result = findExistingEnvFile(\"/test/dir\")\n    expect(result).toBe(\"/test/dir/.env\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env.local\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env\")\n    expect(existsSync).toHaveBeenCalledTimes(2)\n  })\n\n  test(\"should return .env.development.local if earlier variants don't exist\", () => {\n    vi.mocked(existsSync).mockImplementation((path) => {\n      const pathStr = typeof path === \"string\" ? path : path.toString()\n      return pathStr.endsWith(\".env.development.local\")\n    })\n\n    const result = findExistingEnvFile(\"/test/dir\")\n    expect(result).toBe(\"/test/dir/.env.development.local\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env.local\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env.development.local\")\n    expect(existsSync).toHaveBeenCalledTimes(3)\n  })\n\n  test(\"should return null if no env files exist\", () => {\n    vi.mocked(existsSync).mockReturnValue(false)\n\n    const result = findExistingEnvFile(\"/test/dir\")\n    expect(result).toBeNull()\n    expect(existsSync).toHaveBeenCalledTimes(4)\n  })\n\n  test(\"should check all variants in correct order\", () => {\n    vi.mocked(existsSync).mockReturnValue(false)\n\n    findExistingEnvFile(\"/test/dir\")\n\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env.local\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env.development.local\")\n    expect(existsSync).toHaveBeenCalledWith(\"/test/dir/.env.development\")\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/env-helpers.ts",
    "content": "import { existsSync } from \"fs\"\nimport path from \"path\"\n\nexport function isEnvFile(filePath: string) {\n  const fileName = path.basename(filePath)\n  return /^\\.env(\\.|$)/.test(fileName)\n}\n\n/**\n * Finds a file variant in the project.\n * TODO: abstract this to a more generic function.\n */\nexport function findExistingEnvFile(targetDir: string) {\n  const variants = [\n    \".env.local\",\n    \".env\",\n    \".env.development.local\",\n    \".env.development\",\n  ]\n\n  for (const variant of variants) {\n    const filePath = path.join(targetDir, variant)\n    if (existsSync(filePath)) {\n      return filePath\n    }\n  }\n\n  return null\n}\n\n/**\n * Parse .env content into key-value pairs.\n */\nexport function parseEnvContent(content: string) {\n  const lines = content.split(\"\\n\")\n  const env: Record<string, string> = {}\n\n  for (const line of lines) {\n    const trimmed = line.trim()\n\n    if (!trimmed || trimmed.startsWith(\"#\")) {\n      continue\n    }\n\n    // Find the first = and split there\n    const equalIndex = trimmed.indexOf(\"=\")\n    if (equalIndex === -1) {\n      continue\n    }\n\n    const key = trimmed.substring(0, equalIndex).trim()\n    const value = trimmed.substring(equalIndex + 1).trim()\n\n    if (key) {\n      env[key] = value.replace(/^[\"']|[\"']$/g, \"\")\n    }\n  }\n\n  return env\n}\n\n/**\n * Get the list of new keys that would be added when merging env content.\n */\nexport function getNewEnvKeys(existingContent: string, newContent: string) {\n  const existingEnv = parseEnvContent(existingContent)\n  const newEnv = parseEnvContent(newContent)\n\n  const newKeys = []\n  for (const key of Object.keys(newEnv)) {\n    if (!(key in existingEnv)) {\n      newKeys.push(key)\n    }\n  }\n\n  return newKeys\n}\n\n/**\n * Merge env content by appending ONLY new keys that don't exist in the existing content.\n * Existing keys are preserved with their original values.\n */\nexport function mergeEnvContent(existingContent: string, newContent: string) {\n  const existingEnv = parseEnvContent(existingContent)\n  const newEnv = parseEnvContent(newContent)\n\n  let result = existingContent.trimEnd()\n  if (result && !result.endsWith(\"\\n\")) {\n    result += \"\\n\"\n  }\n\n  const newKeys: string[] = []\n  for (const [key, value] of Object.entries(newEnv)) {\n    if (!(key in existingEnv)) {\n      newKeys.push(`${key}=${value}`)\n    }\n  }\n\n  if (newKeys.length > 0) {\n    if (result) {\n      result += \"\\n\"\n    }\n    result += newKeys.join(\"\\n\")\n    return result + \"\\n\"\n  }\n\n  // Ensure existing content ends with newline.\n  if (result && !result.endsWith(\"\\n\")) {\n    return result + \"\\n\"\n  }\n\n  return result\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/env-loader.ts",
    "content": "import { existsSync } from \"fs\"\nimport { join } from \"path\"\nimport { logger } from \"@/src/utils/logger\"\n\nexport async function loadEnvFiles(cwd: string = process.cwd()): Promise<void> {\n  try {\n    const { config } = await import(\"@dotenvx/dotenvx\")\n    const envFiles = [\n      \".env.local\",\n      \".env.development.local\",\n      \".env.development\",\n      \".env\",\n    ]\n\n    for (const envFile of envFiles) {\n      const envPath = join(cwd, envFile)\n      if (existsSync(envPath)) {\n        config({\n          path: envPath,\n          overload: false,\n          quiet: true,\n        })\n      }\n    }\n  } catch (error) {\n    logger.warn(\"Failed to load env files:\", error)\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/errors.ts",
    "content": "export const MISSING_DIR_OR_EMPTY_PROJECT = \"1\"\nexport const EXISTING_CONFIG = \"2\"\nexport const MISSING_CONFIG = \"3\"\nexport const FAILED_CONFIG_READ = \"4\"\nexport const TAILWIND_NOT_CONFIGURED = \"5\"\nexport const IMPORT_ALIAS_MISSING = \"6\"\nexport const UNSUPPORTED_FRAMEWORK = \"7\"\nexport const COMPONENT_URL_NOT_FOUND = \"8\"\nexport const COMPONENT_URL_UNAUTHORIZED = \"9\"\nexport const COMPONENT_URL_FORBIDDEN = \"10\"\nexport const COMPONENT_URL_BAD_REQUEST = \"11\"\nexport const COMPONENT_URL_INTERNAL_SERVER_ERROR = \"12\"\nexport const BUILD_MISSING_REGISTRY_FILE = \"13\"\nexport const INVALID_CONFIG_ICON_LIBRARY = \"14\"\n"
  },
  {
    "path": "packages/shadcn/src/utils/file-helper.ts",
    "content": "import fsExtra from \"fs-extra\"\n\nexport const FILE_BACKUP_SUFFIX = \".bak\"\n\nexport function createFileBackup(filePath: string): string | null {\n  if (!fsExtra.existsSync(filePath)) {\n    return null\n  }\n\n  const backupPath = `${filePath}${FILE_BACKUP_SUFFIX}`\n  try {\n    fsExtra.renameSync(filePath, backupPath)\n    return backupPath\n  } catch (error) {\n    console.error(`Failed to create backup of ${filePath}: ${error}`)\n    return null\n  }\n}\n\nexport function restoreFileBackup(filePath: string): boolean {\n  const backupPath = `${filePath}${FILE_BACKUP_SUFFIX}`\n\n  if (!fsExtra.existsSync(backupPath)) {\n    return false\n  }\n\n  try {\n    fsExtra.renameSync(backupPath, filePath)\n    return true\n  } catch (error) {\n    console.error(\n      `Warning: Could not restore backup file ${backupPath}: ${error}`\n    )\n    return false\n  }\n}\n\nexport function deleteFileBackup(filePath: string): boolean {\n  const backupPath = `${filePath}${FILE_BACKUP_SUFFIX}`\n\n  if (!fsExtra.existsSync(backupPath)) {\n    return false\n  }\n\n  try {\n    fsExtra.unlinkSync(backupPath)\n    return true\n  } catch (error) {\n    // Best effort - don't log as this is just cleanup\n    return false\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/font-markers.ts",
    "content": "type FontMarkerSource = {\n  fonts?: Array<{\n    font?: {\n      variable?: string\n    }\n  }>\n  cssVars?: Record<string, Record<string, unknown> | undefined>\n}\n\nconst FONT_MARKERS_BY_VARIABLE: Record<string, string> = {\n  \"--font-heading\": \"cn-font-heading\",\n}\n\nfunction normalizeVariable(variable: string) {\n  return variable.startsWith(\"--\") ? variable : `--${variable}`\n}\n\nexport function getSupportedFontMarkers(sources: FontMarkerSource[]) {\n  const supportedMarkers = new Set<string>()\n\n  for (const source of sources) {\n    for (const font of source.fonts ?? []) {\n      const variable = font.font?.variable\n      if (!variable) {\n        continue\n      }\n\n      const marker = FONT_MARKERS_BY_VARIABLE[variable]\n      if (marker) {\n        supportedMarkers.add(marker)\n      }\n    }\n\n    for (const vars of Object.values(source.cssVars ?? {})) {\n      for (const key of Object.keys(vars ?? {})) {\n        const marker = FONT_MARKERS_BY_VARIABLE[normalizeVariable(key)]\n        if (marker) {\n          supportedMarkers.add(marker)\n        }\n      }\n    }\n  }\n\n  return Array.from(supportedMarkers)\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/frameworks.ts",
    "content": "import { SHADCN_URL } from \"@/src/registry/constants\"\n\nexport const FRAMEWORKS = {\n  \"next-app\": {\n    name: \"next-app\",\n    label: \"Next.js\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/next`,\n      tailwind: \"https://tailwindcss.com/docs/guides/nextjs\",\n    },\n  },\n  \"next-pages\": {\n    name: \"next-pages\",\n    label: \"Next.js\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/next`,\n      tailwind: \"https://tailwindcss.com/docs/guides/nextjs\",\n    },\n  },\n  remix: {\n    name: \"remix\",\n    label: \"Remix\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/remix`,\n      tailwind: \"https://tailwindcss.com/docs/guides/remix\",\n    },\n  },\n  \"react-router\": {\n    name: \"react-router\",\n    label: \"React Router\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/react-router`,\n      tailwind:\n        \"https://tailwindcss.com/docs/installation/framework-guides/react-router\",\n    },\n  },\n  vite: {\n    name: \"vite\",\n    label: \"Vite\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/vite`,\n      tailwind: \"https://tailwindcss.com/docs/guides/vite\",\n    },\n  },\n  astro: {\n    name: \"astro\",\n    label: \"Astro\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/astro`,\n      tailwind: \"https://tailwindcss.com/docs/guides/astro\",\n    },\n  },\n  laravel: {\n    name: \"laravel\",\n    label: \"Laravel\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/laravel`,\n      tailwind: \"https://tailwindcss.com/docs/guides/laravel\",\n    },\n  },\n  \"tanstack-start\": {\n    name: \"tanstack-start\",\n    label: \"TanStack Start\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/tanstack`,\n      tailwind: \"https://tailwindcss.com/docs/installation/using-postcss\",\n    },\n  },\n  gatsby: {\n    name: \"gatsby\",\n    label: \"Gatsby\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/gatsby`,\n      tailwind: \"https://tailwindcss.com/docs/guides/gatsby\",\n    },\n  },\n  expo: {\n    name: \"expo\",\n    label: \"Expo\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/expo`,\n      tailwind: \"https://www.nativewind.dev/docs/getting-started/installation\",\n    },\n  },\n  manual: {\n    name: \"manual\",\n    label: \"Manual\",\n    links: {\n      installation: `${SHADCN_URL}/docs/installation/manual`,\n      tailwind: \"https://tailwindcss.com/docs/installation\",\n    },\n  },\n} as const\n\nexport type Framework = (typeof FRAMEWORKS)[keyof typeof FRAMEWORKS]\n"
  },
  {
    "path": "packages/shadcn/src/utils/get-config.ts",
    "content": "import path from \"path\"\nimport { BUILTIN_REGISTRIES } from \"@/src/registry/constants\"\nimport {\n  configSchema,\n  rawConfigSchema,\n  workspaceConfigSchema,\n} from \"@/src/schema\"\nimport { getProjectInfo } from \"@/src/utils/get-project-info\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { resolveImport } from \"@/src/utils/resolve-import\"\nimport { cosmiconfig } from \"cosmiconfig\"\nimport fg from \"fast-glob\"\nimport { loadConfig } from \"tsconfig-paths\"\nimport { z } from \"zod\"\n\nexport const DEFAULT_STYLE = \"default\"\nexport const DEFAULT_COMPONENTS = \"@/components\"\nexport const DEFAULT_UTILS = \"@/lib/utils\"\nexport const DEFAULT_TAILWIND_CSS = \"app/globals.css\"\nexport const DEFAULT_TAILWIND_CONFIG = \"tailwind.config.js\"\nexport const DEFAULT_TAILWIND_BASE_COLOR = \"slate\"\n\n// TODO: Figure out if we want to support all cosmiconfig formats.\n// A simple components.json file would be nice.\nexport const explorer = cosmiconfig(\"components\", {\n  searchPlaces: [\"components.json\"],\n})\n\nexport type Config = z.infer<typeof configSchema>\n\nexport async function getConfig(cwd: string) {\n  const config = await getRawConfig(cwd)\n\n  if (!config) {\n    return null\n  }\n\n  // Set default icon library if not provided.\n  if (!config.iconLibrary) {\n    config.iconLibrary = config.style === \"new-york\" ? \"radix\" : \"lucide\"\n  }\n\n  return await resolveConfigPaths(cwd, config)\n}\n\nexport async function resolveConfigPaths(\n  cwd: string,\n  config: z.infer<typeof rawConfigSchema>\n) {\n  // Merge built-in registries with user registries\n  config.registries = {\n    ...BUILTIN_REGISTRIES,\n    ...(config.registries || {}),\n  }\n\n  // Read tsconfig.json.\n  const tsConfig = await loadConfig(cwd)\n\n  if (tsConfig.resultType === \"failed\") {\n    throw new Error(\n      `Failed to load ${config.tsx ? \"tsconfig\" : \"jsconfig\"}.json. ${\n        tsConfig.message ?? \"\"\n      }`.trim()\n    )\n  }\n\n  return configSchema.parse({\n    ...config,\n    resolvedPaths: {\n      cwd,\n      tailwindConfig: config.tailwind.config\n        ? path.resolve(cwd, config.tailwind.config)\n        : \"\",\n      tailwindCss: path.resolve(cwd, config.tailwind.css),\n      utils: await resolveImport(config.aliases[\"utils\"], tsConfig),\n      components: await resolveImport(config.aliases[\"components\"], tsConfig),\n      ui: config.aliases[\"ui\"]\n        ? await resolveImport(config.aliases[\"ui\"], tsConfig)\n        : path.resolve(\n            (await resolveImport(config.aliases[\"components\"], tsConfig)) ??\n              cwd,\n            \"ui\"\n          ),\n      // TODO: Make this configurable.\n      // For now, we assume the lib and hooks directories are one level up from the components directory.\n      lib: config.aliases[\"lib\"]\n        ? await resolveImport(config.aliases[\"lib\"], tsConfig)\n        : path.resolve(\n            (await resolveImport(config.aliases[\"utils\"], tsConfig)) ?? cwd,\n            \"..\"\n          ),\n      hooks: config.aliases[\"hooks\"]\n        ? await resolveImport(config.aliases[\"hooks\"], tsConfig)\n        : path.resolve(\n            (await resolveImport(config.aliases[\"components\"], tsConfig)) ??\n              cwd,\n            \"..\",\n            \"hooks\"\n          ),\n    },\n  })\n}\n\nexport async function getRawConfig(\n  cwd: string\n): Promise<z.infer<typeof rawConfigSchema> | null> {\n  try {\n    const configResult = await explorer.search(cwd)\n\n    if (!configResult) {\n      return null\n    }\n\n    const config = rawConfigSchema.parse(configResult.config)\n\n    // Check if user is trying to override built-in registries\n    if (config.registries) {\n      for (const registryName of Object.keys(config.registries)) {\n        if (registryName in BUILTIN_REGISTRIES) {\n          throw new Error(\n            `\"${registryName}\" is a built-in registry and cannot be overridden.`\n          )\n        }\n      }\n    }\n\n    return config\n  } catch (error) {\n    const componentPath = `${cwd}/components.json`\n    if (error instanceof Error && error.message.includes(\"reserved registry\")) {\n      throw error\n    }\n    throw new Error(\n      `Invalid configuration found in ${highlighter.info(componentPath)}.`\n    )\n  }\n}\n\n// Note: we can check for -workspace.yaml or \"workspace\" in package.json.\n// Since cwd is not necessarily the root of the project.\n// We'll instead check if ui aliases resolve to a different root.\nexport async function getWorkspaceConfig(config: Config) {\n  let resolvedAliases: any = {}\n\n  for (const key of Object.keys(config.aliases)) {\n    if (!isAliasKey(key, config)) {\n      continue\n    }\n\n    const resolvedPath = config.resolvedPaths[key]\n    const packageRoot = await findPackageRoot(\n      config.resolvedPaths.cwd,\n      resolvedPath\n    )\n\n    if (!packageRoot) {\n      resolvedAliases[key] = config\n      continue\n    }\n\n    resolvedAliases[key] = await getConfig(packageRoot)\n  }\n\n  const result = workspaceConfigSchema.safeParse(resolvedAliases)\n  if (!result.success) {\n    return null\n  }\n\n  return result.data\n}\n\nexport async function findPackageRoot(cwd: string, resolvedPath: string) {\n  const commonRoot = findCommonRoot(cwd, resolvedPath)\n  const relativePath = path.relative(commonRoot, resolvedPath)\n\n  const packageRoots = await fg.glob(\"**/package.json\", {\n    cwd: commonRoot,\n    deep: 3,\n    ignore: [\"**/node_modules/**\", \"**/dist/**\", \"**/build/**\", \"**/public/**\"],\n  })\n\n  const matchingPackageRoot = packageRoots\n    .map((pkgPath) => path.dirname(pkgPath))\n    .find((pkgDir) => relativePath.startsWith(pkgDir))\n\n  return matchingPackageRoot ? path.join(commonRoot, matchingPackageRoot) : null\n}\n\nfunction isAliasKey(\n  key: string,\n  config: Config\n): key is keyof Config[\"aliases\"] {\n  return Object.keys(config.resolvedPaths)\n    .filter((key) => key !== \"utils\")\n    .includes(key)\n}\n\nexport function findCommonRoot(cwd: string, resolvedPath: string) {\n  const parts1 = cwd.split(path.sep)\n  const parts2 = resolvedPath.split(path.sep)\n  const commonParts = []\n\n  for (let i = 0; i < Math.min(parts1.length, parts2.length); i++) {\n    if (parts1[i] !== parts2[i]) {\n      break\n    }\n    commonParts.push(parts1[i])\n  }\n\n  return commonParts.join(path.sep)\n}\n\n// TODO: Cache this call.\nexport async function getTargetStyleFromConfig(cwd: string, fallback: string) {\n  const projectInfo = await getProjectInfo(cwd)\n  return projectInfo?.tailwindVersion === \"v4\" ? \"new-york-v4\" : fallback\n}\n\nexport function getBase(style: string | undefined) {\n  return style?.startsWith(\"base-\") ? \"base\" : \"radix\"\n}\n\nexport type DeepPartial<T> = {\n  [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]\n}\n\n/**\n * Creates a config object with sensible defaults.\n * Useful for universal registry items that bypass framework detection.\n *\n * @param partial - Partial config values to override defaults\n * @returns A complete Config object\n */\nexport function createConfig(partial?: DeepPartial<Config>): Config {\n  const defaultConfig: Config = {\n    resolvedPaths: {\n      cwd: process.cwd(),\n      tailwindConfig: \"\",\n      tailwindCss: \"\",\n      utils: \"\",\n      components: \"\",\n      ui: \"\",\n      lib: \"\",\n      hooks: \"\",\n    },\n    style: \"\",\n    tailwind: {\n      config: \"\",\n      css: \"\",\n      baseColor: \"\",\n      cssVariables: false,\n    },\n    rsc: false,\n    tsx: true,\n    aliases: {\n      components: \"\",\n      utils: \"\",\n    },\n    registries: {\n      ...BUILTIN_REGISTRIES,\n    },\n  }\n\n  // Deep merge the partial config with defaults\n  if (partial) {\n    return {\n      ...defaultConfig,\n      ...partial,\n      resolvedPaths: {\n        ...defaultConfig.resolvedPaths,\n        ...(partial.resolvedPaths || {}),\n      },\n      tailwind: {\n        ...defaultConfig.tailwind,\n        ...(partial.tailwind || {}),\n      },\n      aliases: {\n        ...defaultConfig.aliases,\n        ...(partial.aliases || {}),\n      },\n      registries: {\n        ...defaultConfig.registries,\n        ...(partial.registries || {}),\n      },\n    }\n  }\n\n  return defaultConfig\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/get-monorepo-info.test.ts",
    "content": "import path from \"path\"\nimport { logger } from \"@/src/utils/logger\"\nimport fs from \"fs-extra\"\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\"\n\nimport {\n  formatMonorepoMessage,\n  getMonorepoTargets,\n  isMonorepoRoot,\n} from \"./get-monorepo-info\"\n\nlet tmpDir: string\n\nbeforeEach(async () => {\n  tmpDir = path.join(\n    await fs.realpath(require(\"os\").tmpdir()),\n    `shadcn-monorepo-test-${Date.now()}`\n  )\n  await fs.ensureDir(tmpDir)\n})\n\nafterEach(async () => {\n  await fs.remove(tmpDir)\n})\n\ndescribe(\"isMonorepoRoot\", () => {\n  it(\"should detect pnpm-workspace.yaml\", async () => {\n    await fs.writeFile(\n      path.join(tmpDir, \"pnpm-workspace.yaml\"),\n      \"packages:\\n  - apps/*\\n\"\n    )\n    expect(await isMonorepoRoot(tmpDir)).toBe(true)\n  })\n\n  it(\"should detect package.json with workspaces array\", async () => {\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), {\n      name: \"root\",\n      workspaces: [\"apps/*\", \"packages/*\"],\n    })\n    expect(await isMonorepoRoot(tmpDir)).toBe(true)\n  })\n\n  it(\"should detect package.json with workspaces.packages\", async () => {\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), {\n      name: \"root\",\n      workspaces: { packages: [\"apps/*\"] },\n    })\n    expect(await isMonorepoRoot(tmpDir)).toBe(true)\n  })\n\n  it(\"should detect lerna.json\", async () => {\n    await fs.writeJson(path.join(tmpDir, \"lerna.json\"), { version: \"0.0.0\" })\n    expect(await isMonorepoRoot(tmpDir)).toBe(true)\n  })\n\n  it(\"should detect nx.json\", async () => {\n    await fs.writeJson(path.join(tmpDir, \"nx.json\"), {})\n    expect(await isMonorepoRoot(tmpDir)).toBe(true)\n  })\n\n  it(\"should return false for a regular project\", async () => {\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), { name: \"my-app\" })\n    expect(await isMonorepoRoot(tmpDir)).toBe(false)\n  })\n\n  it(\"should return false for an empty directory\", async () => {\n    expect(await isMonorepoRoot(tmpDir)).toBe(false)\n  })\n})\n\ndescribe(\"getMonorepoTargets\", () => {\n  it(\"should find targets from pnpm-workspace.yaml\", async () => {\n    // Set up monorepo structure.\n    await fs.writeFile(\n      path.join(tmpDir, \"pnpm-workspace.yaml\"),\n      \"packages:\\n  - 'apps/*'\\n\"\n    )\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), { name: \"root\" })\n\n    // Create an app with a Next.js config.\n    const webDir = path.join(tmpDir, \"apps\", \"web\")\n    await fs.ensureDir(webDir)\n    await fs.writeJson(path.join(webDir, \"package.json\"), { name: \"web\" })\n    await fs.writeFile(\n      path.join(webDir, \"next.config.mjs\"),\n      \"export default {}\"\n    )\n\n    const targets = await getMonorepoTargets(tmpDir)\n    expect(targets).toEqual([{ name: \"apps/web\", hasConfig: false }])\n  })\n\n  it(\"should find targets from package.json workspaces\", async () => {\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), {\n      name: \"root\",\n      workspaces: [\"apps/*\"],\n    })\n\n    const webDir = path.join(tmpDir, \"apps\", \"web\")\n    await fs.ensureDir(webDir)\n    await fs.writeJson(path.join(webDir, \"package.json\"), { name: \"web\" })\n    await fs.writeFile(path.join(webDir, \"vite.config.ts\"), \"export default {}\")\n\n    const targets = await getMonorepoTargets(tmpDir)\n    expect(targets).toEqual([{ name: \"apps/web\", hasConfig: false }])\n  })\n\n  it(\"should set hasConfig when components.json exists\", async () => {\n    await fs.writeFile(\n      path.join(tmpDir, \"pnpm-workspace.yaml\"),\n      \"packages:\\n  - apps/*\\n\"\n    )\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), { name: \"root\" })\n\n    const webDir = path.join(tmpDir, \"apps\", \"web\")\n    await fs.ensureDir(webDir)\n    await fs.writeJson(path.join(webDir, \"package.json\"), { name: \"web\" })\n    await fs.writeFile(\n      path.join(webDir, \"next.config.mjs\"),\n      \"export default {}\"\n    )\n    await fs.writeJson(path.join(webDir, \"components.json\"), {})\n\n    const targets = await getMonorepoTargets(tmpDir)\n    expect(targets).toEqual([{ name: \"apps/web\", hasConfig: true }])\n  })\n\n  it(\"should find multiple targets\", async () => {\n    await fs.writeFile(\n      path.join(tmpDir, \"pnpm-workspace.yaml\"),\n      \"packages:\\n  - apps/*\\n\"\n    )\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), { name: \"root\" })\n\n    // apps/web with Next.js.\n    const webDir = path.join(tmpDir, \"apps\", \"web\")\n    await fs.ensureDir(webDir)\n    await fs.writeJson(path.join(webDir, \"package.json\"), { name: \"web\" })\n    await fs.writeFile(\n      path.join(webDir, \"next.config.mjs\"),\n      \"export default {}\"\n    )\n\n    // apps/docs with Vite.\n    const docsDir = path.join(tmpDir, \"apps\", \"docs\")\n    await fs.ensureDir(docsDir)\n    await fs.writeJson(path.join(docsDir, \"package.json\"), { name: \"docs\" })\n    await fs.writeFile(\n      path.join(docsDir, \"vite.config.ts\"),\n      \"export default {}\"\n    )\n\n    const targets = await getMonorepoTargets(tmpDir)\n    expect(targets).toHaveLength(2)\n    expect(targets.map((t) => t.name).sort()).toEqual([\"apps/docs\", \"apps/web\"])\n  })\n\n  it(\"should skip directories without package.json\", async () => {\n    await fs.writeFile(\n      path.join(tmpDir, \"pnpm-workspace.yaml\"),\n      \"packages:\\n  - apps/*\\n\"\n    )\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), { name: \"root\" })\n\n    // Directory without package.json.\n    const libDir = path.join(tmpDir, \"apps\", \"lib\")\n    await fs.ensureDir(libDir)\n    await fs.writeFile(\n      path.join(libDir, \"next.config.mjs\"),\n      \"export default {}\"\n    )\n\n    const targets = await getMonorepoTargets(tmpDir)\n    expect(targets).toEqual([])\n  })\n\n  it(\"should skip directories without framework config or components.json\", async () => {\n    await fs.writeFile(\n      path.join(tmpDir, \"pnpm-workspace.yaml\"),\n      \"packages:\\n  - packages/*\\n\"\n    )\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), { name: \"root\" })\n\n    // A utility package with no framework config.\n    const utilsDir = path.join(tmpDir, \"packages\", \"utils\")\n    await fs.ensureDir(utilsDir)\n    await fs.writeJson(path.join(utilsDir, \"package.json\"), { name: \"utils\" })\n\n    const targets = await getMonorepoTargets(tmpDir)\n    expect(targets).toEqual([])\n  })\n\n  it(\"should return empty for no workspace patterns\", async () => {\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), { name: \"root\" })\n    const targets = await getMonorepoTargets(tmpDir)\n    expect(targets).toEqual([])\n  })\n\n  it(\"should detect astro, remix, and svelte configs\", async () => {\n    await fs.writeFile(\n      path.join(tmpDir, \"pnpm-workspace.yaml\"),\n      \"packages:\\n  - apps/*\\n\"\n    )\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), { name: \"root\" })\n\n    const astroDir = path.join(tmpDir, \"apps\", \"astro-app\")\n    await fs.ensureDir(astroDir)\n    await fs.writeJson(path.join(astroDir, \"package.json\"), {\n      name: \"astro-app\",\n    })\n    await fs.writeFile(\n      path.join(astroDir, \"astro.config.mjs\"),\n      \"export default {}\"\n    )\n\n    const targets = await getMonorepoTargets(tmpDir)\n    expect(targets).toEqual([{ name: \"apps/astro-app\", hasConfig: false }])\n  })\n\n  it(\"should deduplicate patterns from both pnpm-workspace.yaml and package.json\", async () => {\n    await fs.writeFile(\n      path.join(tmpDir, \"pnpm-workspace.yaml\"),\n      \"packages:\\n  - apps/*\\n\"\n    )\n    await fs.writeJson(path.join(tmpDir, \"package.json\"), {\n      name: \"root\",\n      workspaces: [\"apps/*\"],\n    })\n\n    const webDir = path.join(tmpDir, \"apps\", \"web\")\n    await fs.ensureDir(webDir)\n    await fs.writeJson(path.join(webDir, \"package.json\"), { name: \"web\" })\n    await fs.writeFile(\n      path.join(webDir, \"next.config.mjs\"),\n      \"export default {}\"\n    )\n\n    const targets = await getMonorepoTargets(tmpDir)\n    // Should not duplicate the target.\n    expect(targets).toEqual([{ name: \"apps/web\", hasConfig: false }])\n  })\n})\n\ndescribe(\"formatMonorepoMessage\", () => {\n  it(\"should log the monorepo message with targets\", () => {\n    const logSpy = vi.spyOn(logger, \"log\")\n    const breakSpy = vi.spyOn(logger, \"break\")\n\n    formatMonorepoMessage(\"init\", [\n      { name: \"apps/web\", hasConfig: false },\n      { name: \"apps/docs\", hasConfig: true },\n    ])\n\n    expect(breakSpy).toHaveBeenCalled()\n    const allLogCalls = logSpy.mock.calls.map((c) => c[0] as string)\n\n    // Should mention monorepo root.\n    expect(allLogCalls.some((msg) => msg.includes(\"monorepo root\"))).toBe(true)\n    // Should mention -c flag.\n    expect(allLogCalls.some((msg) => msg.includes(\"-c\"))).toBe(true)\n    // Should list both targets.\n    expect(\n      allLogCalls.some((msg) => msg.includes(\"shadcn init -c apps/web\"))\n    ).toBe(true)\n    expect(\n      allLogCalls.some((msg) => msg.includes(\"shadcn init -c apps/docs\"))\n    ).toBe(true)\n\n    logSpy.mockRestore()\n    breakSpy.mockRestore()\n  })\n\n  it(\"should use the correct command name\", () => {\n    const logSpy = vi.spyOn(logger, \"log\")\n\n    formatMonorepoMessage(\"add [component]\", [\n      { name: \"apps/web\", hasConfig: false },\n    ])\n\n    const allLogCalls = logSpy.mock.calls.map((c) => c[0] as string)\n    expect(\n      allLogCalls.some((msg) =>\n        msg.includes(\"shadcn add [component] -c apps/web\")\n      )\n    ).toBe(true)\n\n    logSpy.mockRestore()\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/get-monorepo-info.ts",
    "content": "import path from \"path\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport fg from \"fast-glob\"\nimport fs from \"fs-extra\"\n\nconst FRAMEWORK_CONFIG_FILES = [\n  \"next.config.*\",\n  \"vite.config.*\",\n  \"astro.config.*\",\n  \"remix.config.*\",\n  \"nuxt.config.*\",\n  \"svelte.config.*\",\n  \"gatsby-config.*\",\n  \"angular.json\",\n]\n\n// Checks for workspace signals at the given directory.\nexport async function isMonorepoRoot(cwd: string) {\n  // pnpm workspaces.\n  if (fs.existsSync(path.resolve(cwd, \"pnpm-workspace.yaml\"))) {\n    return true\n  }\n\n  // npm/yarn workspaces.\n  const packageJsonPath = path.resolve(cwd, \"package.json\")\n  if (fs.existsSync(packageJsonPath)) {\n    try {\n      const packageJson = await fs.readJson(packageJsonPath)\n      if (packageJson.workspaces) {\n        return true\n      }\n    } catch {\n      // Ignore parse errors.\n    }\n  }\n\n  // Lerna.\n  if (fs.existsSync(path.resolve(cwd, \"lerna.json\"))) {\n    return true\n  }\n\n  // Nx.\n  if (fs.existsSync(path.resolve(cwd, \"nx.json\"))) {\n    return true\n  }\n\n  return false\n}\n\n// Finds app directories in a monorepo that contain framework configs or components.json.\nexport async function getMonorepoTargets(cwd: string) {\n  const patterns = await getWorkspacePatterns(cwd)\n\n  if (!patterns.length) {\n    return []\n  }\n\n  // Resolve patterns to directories.\n  const dirs = await fg(patterns, {\n    cwd,\n    onlyDirectories: true,\n    ignore: [\"**/node_modules/**\"],\n  })\n\n  const targets: { name: string; hasConfig: boolean }[] = []\n\n  for (const dir of dirs) {\n    const fullPath = path.resolve(cwd, dir)\n\n    // Check if it has a package.json (it's an actual workspace).\n    if (!fs.existsSync(path.resolve(fullPath, \"package.json\"))) {\n      continue\n    }\n\n    const hasComponentsJson = fs.existsSync(\n      path.resolve(fullPath, \"components.json\")\n    )\n\n    // Check for framework config files.\n    const hasFrameworkConfig = FRAMEWORK_CONFIG_FILES.some((pattern) => {\n      const matches = fg.sync(pattern, {\n        cwd: fullPath,\n        dot: true,\n      })\n      return matches.length > 0\n    })\n\n    if (hasComponentsJson || hasFrameworkConfig) {\n      targets.push({\n        name: dir,\n        hasConfig: hasComponentsJson,\n      })\n    }\n  }\n\n  return targets\n}\n\n// Formats and logs the monorepo detection message.\nexport function formatMonorepoMessage(\n  command: string,\n  targets: { name: string; hasConfig: boolean }[]\n) {\n  logger.break()\n  logger.log(\n    `It looks like you are running ${highlighter.info(\n      command\n    )} from a monorepo root.`\n  )\n  logger.log(\n    `To use shadcn in a specific workspace, use the ${highlighter.info(\n      \"-c\"\n    )} flag:`\n  )\n  logger.break()\n\n  for (const target of targets) {\n    logger.log(`  shadcn ${command} -c ${target.name}`)\n  }\n\n  logger.break()\n}\n\nasync function getWorkspacePatterns(cwd: string) {\n  const patterns: string[] = []\n\n  // Read pnpm-workspace.yaml.\n  const pnpmWorkspacePath = path.resolve(cwd, \"pnpm-workspace.yaml\")\n  if (fs.existsSync(pnpmWorkspacePath)) {\n    const content = await fs.readFile(pnpmWorkspacePath, \"utf8\")\n    // Simple regex parse to extract patterns from packages list.\n    const matches = Array.from(\n      content.matchAll(/^\\s*-\\s*[\"']?([^\"'\\n#]+)[\"']?\\s*$/gm)\n    )\n    for (const match of matches) {\n      patterns.push(match[1].trim())\n    }\n  }\n\n  // Read package.json workspaces.\n  const packageJsonPath = path.resolve(cwd, \"package.json\")\n  if (fs.existsSync(packageJsonPath)) {\n    try {\n      const packageJson = await fs.readJson(packageJsonPath)\n      const workspaces = Array.isArray(packageJson.workspaces)\n        ? packageJson.workspaces\n        : packageJson.workspaces?.packages\n      if (Array.isArray(workspaces)) {\n        // Filter out negation patterns.\n        patterns.push(...workspaces.filter((w: string) => !w.startsWith(\"!\")))\n      }\n    } catch {\n      // Ignore parse errors.\n    }\n  }\n\n  return Array.from(new Set(patterns))\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/get-package-info.ts",
    "content": "import path from \"path\"\nimport fs from \"fs-extra\"\nimport { type PackageJson } from \"type-fest\"\n\nexport function getPackageInfo(\n  cwd: string = \"\",\n  shouldThrow: boolean = true\n): PackageJson | null {\n  const packageJsonPath = path.join(cwd, \"package.json\")\n\n  return fs.readJSONSync(packageJsonPath, {\n    throws: shouldThrow,\n  }) as PackageJson\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/get-package-manager.ts",
    "content": "import { detect } from \"@antfu/ni\"\n\nexport async function getPackageManager(\n  targetDir: string,\n  { withFallback }: { withFallback?: boolean } = {\n    withFallback: false,\n  }\n): Promise<\"yarn\" | \"pnpm\" | \"bun\" | \"npm\" | \"deno\"> {\n  const packageManager = await detect({ programmatic: true, cwd: targetDir })\n\n  if (packageManager === \"yarn@berry\") return \"yarn\"\n  if (packageManager === \"pnpm@6\") return \"pnpm\"\n  if (packageManager === \"bun\") return \"bun\"\n  if (packageManager === \"deno\") return \"deno\"\n  if (!withFallback) {\n    return packageManager ?? \"npm\"\n  }\n\n  // Fallback to user agent if not detected.\n  const userAgent = process.env.npm_config_user_agent || \"\"\n\n  if (userAgent.startsWith(\"yarn\")) {\n    return \"yarn\"\n  }\n\n  if (userAgent.startsWith(\"pnpm\")) {\n    return \"pnpm\"\n  }\n\n  if (userAgent.startsWith(\"bun\")) {\n    return \"bun\"\n  }\n\n  return \"npm\"\n}\n\nexport async function getPackageRunner(cwd: string) {\n  const packageManager = await getPackageManager(cwd)\n\n  if (packageManager === \"pnpm\") return \"pnpm dlx\"\n\n  if (packageManager === \"bun\") return \"bunx\"\n\n  return \"npx\"\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/get-project-info.ts",
    "content": "import { promises as fsPromises } from \"fs\"\nimport path from \"path\"\nimport { getShadcnRegistryIndex } from \"@/src/registry/api\"\nimport { SHADCN_URL } from \"@/src/registry/constants\"\nimport { rawConfigSchema } from \"@/src/schema\"\nimport { Framework, FRAMEWORKS } from \"@/src/utils/frameworks\"\nimport { Config, getConfig, resolveConfigPaths } from \"@/src/utils/get-config\"\nimport { getPackageInfo } from \"@/src/utils/get-package-info\"\nimport fg from \"fast-glob\"\nimport fs from \"fs-extra\"\nimport { loadConfig } from \"tsconfig-paths\"\nimport { z } from \"zod\"\n\nexport type TailwindVersion = \"v3\" | \"v4\" | null\n\nexport type ProjectInfo = {\n  framework: Framework\n  isSrcDir: boolean\n  isRSC: boolean\n  isTsx: boolean\n  tailwindConfigFile: string | null\n  tailwindCssFile: string | null\n  tailwindVersion: TailwindVersion\n  frameworkVersion: string | null\n  aliasPrefix: string | null\n}\n\nconst PROJECT_SHARED_IGNORE = [\n  \"**/node_modules/**\",\n  \".next\",\n  \"public\",\n  \"dist\",\n  \"build\",\n]\n\nconst TS_CONFIG_SCHEMA = z.object({\n  compilerOptions: z.object({\n    paths: z.record(z.string().or(z.array(z.string()))),\n  }),\n})\n\nexport async function getProjectInfo(\n  cwd: string,\n  opts?: { configCssFile?: string }\n): Promise<ProjectInfo | null> {\n  const [\n    configFiles,\n    isSrcDir,\n    isTsx,\n    tailwindConfigFile,\n    tailwindCssFile,\n    tailwindVersion,\n    aliasPrefix,\n    packageJson,\n  ] = await Promise.all([\n    fg.glob(\n      \"**/{next,vite,astro,app}.config.*|gatsby-config.*|composer.json|react-router.config.*\",\n      {\n        cwd,\n        deep: 3,\n        ignore: PROJECT_SHARED_IGNORE,\n      }\n    ),\n    fs.pathExists(path.resolve(cwd, \"src\")),\n    isTypeScriptProject(cwd),\n    getTailwindConfigFile(cwd),\n    getTailwindCssFile(cwd, opts?.configCssFile),\n    getTailwindVersion(cwd),\n    getTsConfigAliasPrefix(cwd),\n    getPackageInfo(cwd, false),\n  ])\n\n  const isUsingAppDir = await fs.pathExists(\n    path.resolve(cwd, `${isSrcDir ? \"src/\" : \"\"}app`)\n  )\n\n  const type: ProjectInfo = {\n    framework: FRAMEWORKS[\"manual\"],\n    isSrcDir,\n    isRSC: false,\n    isTsx,\n    tailwindConfigFile,\n    tailwindCssFile,\n    tailwindVersion,\n    frameworkVersion: null,\n    aliasPrefix,\n  }\n\n  // Next.js.\n  if (configFiles.find((file) => file.startsWith(\"next.config.\"))?.length) {\n    type.framework = isUsingAppDir\n      ? FRAMEWORKS[\"next-app\"]\n      : FRAMEWORKS[\"next-pages\"]\n    type.isRSC = isUsingAppDir\n    type.frameworkVersion = await getFrameworkVersion(\n      type.framework,\n      packageJson\n    )\n    return type\n  }\n\n  // Astro.\n  if (configFiles.find((file) => file.startsWith(\"astro.config.\"))?.length) {\n    type.framework = FRAMEWORKS[\"astro\"]\n    return type\n  }\n\n  // Gatsby.\n  if (configFiles.find((file) => file.startsWith(\"gatsby-config.\"))?.length) {\n    type.framework = FRAMEWORKS[\"gatsby\"]\n    return type\n  }\n\n  // Laravel.\n  if (configFiles.find((file) => file.startsWith(\"composer.json\"))?.length) {\n    type.framework = FRAMEWORKS[\"laravel\"]\n    return type\n  }\n\n  // Remix.\n  if (\n    Object.keys(packageJson?.dependencies ?? {}).find((dep) =>\n      dep.startsWith(\"@remix-run/\")\n    )\n  ) {\n    type.framework = FRAMEWORKS[\"remix\"]\n    return type\n  }\n\n  // TanStack Start.\n  if (\n    [\n      ...Object.keys(packageJson?.dependencies ?? {}),\n      ...Object.keys(packageJson?.devDependencies ?? {}),\n    ].find((dep) => dep.startsWith(\"@tanstack/react-start\"))\n  ) {\n    type.framework = FRAMEWORKS[\"tanstack-start\"]\n    return type\n  }\n\n  // React Router.\n  if (\n    configFiles.find((file) => file.startsWith(\"react-router.config.\"))?.length\n  ) {\n    type.framework = FRAMEWORKS[\"react-router\"]\n    return type\n  }\n\n  // Vite.\n  // Some Remix templates also have a vite.config.* file.\n  // We'll assume that it got caught by the Remix check above.\n  if (configFiles.find((file) => file.startsWith(\"vite.config.\"))?.length) {\n    type.framework = FRAMEWORKS[\"vite\"]\n    return type\n  }\n\n  // Vinxi-based (such as @tanstack/start and @solidjs/solid-start)\n  // They are vite-based, and the same configurations used for Vite should work flawlessly\n  const appConfig = configFiles.find((file) => file.startsWith(\"app.config\"))\n  if (appConfig?.length) {\n    const appConfigContents = await fs.readFile(\n      path.resolve(cwd, appConfig),\n      \"utf8\"\n    )\n    if (appConfigContents.includes(\"defineConfig\")) {\n      type.framework = FRAMEWORKS[\"vite\"]\n      return type\n    }\n  }\n\n  // Expo.\n  if (packageJson?.dependencies?.expo) {\n    type.framework = FRAMEWORKS[\"expo\"]\n    return type\n  }\n\n  return type\n}\n\nexport async function getFrameworkVersion(\n  framework: Framework,\n  packageJson: ReturnType<typeof getPackageInfo>\n) {\n  if (!packageJson) {\n    return null\n  }\n\n  // Only detect Next.js version for now.\n  if (![\"next-app\", \"next-pages\"].includes(framework.name)) {\n    return null\n  }\n\n  const version =\n    packageJson.dependencies?.next || packageJson.devDependencies?.next\n\n  if (!version) {\n    return null\n  }\n\n  // Extract full semver (major.minor.patch), handling ^, ~, etc.\n  const versionMatch = version.match(/^[\\^~]?(\\d+\\.\\d+\\.\\d+)/)\n  if (versionMatch) {\n    return versionMatch[1] // e.g., \"16.0.0\"\n  }\n\n  // For ranges like \">=15.0.0 <16.0.0\", extract the first version.\n  const rangeMatch = version.match(/(\\d+\\.\\d+\\.\\d+)/)\n  if (rangeMatch) {\n    return rangeMatch[1]\n  }\n\n  // For \"latest\", \"canary\", \"rc\", etc., return the tag as-is.\n  return version\n}\n\nexport async function getTailwindVersion(\n  cwd: string\n): Promise<ProjectInfo[\"tailwindVersion\"]> {\n  const [packageInfo, config] = await Promise.all([\n    getPackageInfo(cwd, false),\n    getConfig(cwd),\n  ])\n\n  // If the config file is empty, we can assume that it's a v4 project.\n  if (config?.tailwind?.config === \"\") {\n    return \"v4\"\n  }\n\n  if (\n    !packageInfo?.dependencies?.tailwindcss &&\n    !packageInfo?.devDependencies?.tailwindcss\n  ) {\n    return null\n  }\n\n  if (\n    /^(?:\\^|~)?3(?:\\.\\d+)*(?:-.*)?$/.test(\n      packageInfo?.dependencies?.tailwindcss ||\n        packageInfo?.devDependencies?.tailwindcss ||\n        \"\"\n    )\n  ) {\n    return \"v3\"\n  }\n\n  return \"v4\"\n}\n\nexport async function getTailwindCssFile(cwd: string, configCssFile?: string) {\n  // If the existing config has a known CSS file, check it first.\n  if (configCssFile) {\n    const resolvedPath = path.resolve(cwd, configCssFile)\n    if (await fs.pathExists(resolvedPath)) {\n      return configCssFile\n    }\n  }\n\n  const [files, tailwindVersion] = await Promise.all([\n    fg.glob([\"**/*.css\", \"**/*.scss\"], {\n      cwd,\n      deep: 5,\n      ignore: PROJECT_SHARED_IGNORE,\n    }),\n    getTailwindVersion(cwd),\n  ])\n\n  if (!files.length) {\n    return null\n  }\n\n  const needle =\n    tailwindVersion === \"v4\" ? `@import \"tailwindcss\"` : \"@tailwind base\"\n  for (const file of files) {\n    const contents = await fs.readFile(path.resolve(cwd, file), \"utf8\")\n    if (\n      contents.includes(`@import \"tailwindcss\"`) ||\n      contents.includes(`@import 'tailwindcss'`) ||\n      contents.includes(`@tailwind base`)\n    ) {\n      return file\n    }\n  }\n\n  return null\n}\n\nexport async function getTailwindConfigFile(cwd: string) {\n  const files = await fg.glob(\"tailwind.config.*\", {\n    cwd,\n    deep: 3,\n    ignore: PROJECT_SHARED_IGNORE,\n  })\n\n  if (!files.length) {\n    return null\n  }\n\n  return files[0]\n}\n\nexport async function getTsConfigAliasPrefix(cwd: string) {\n  const tsConfig = await loadConfig(cwd)\n\n  if (\n    tsConfig?.resultType === \"failed\" ||\n    !Object.entries(tsConfig?.paths).length\n  ) {\n    return null\n  }\n\n  // This assume that the first alias is the prefix.\n  for (const [alias, paths] of Object.entries(tsConfig.paths)) {\n    if (\n      paths.includes(\"./*\") ||\n      paths.includes(\"./src/*\") ||\n      paths.includes(\"./app/*\") ||\n      paths.includes(\"./resources/js/*\") // Laravel.\n    ) {\n      return alias.replace(/\\/\\*$/, \"\") ?? null\n    }\n  }\n\n  // Use the first alias as the prefix.\n  return Object.keys(tsConfig?.paths)?.[0].replace(/\\/\\*$/, \"\") ?? null\n}\n\nexport async function isTypeScriptProject(cwd: string) {\n  const files = await fg.glob(\"tsconfig.*\", {\n    cwd,\n    deep: 1,\n    ignore: PROJECT_SHARED_IGNORE,\n  })\n\n  return files.length > 0\n}\n\nexport async function getTsConfig(cwd: string) {\n  for (const fallback of [\n    \"tsconfig.json\",\n    \"tsconfig.web.json\",\n    \"tsconfig.app.json\",\n  ]) {\n    const filePath = path.resolve(cwd, fallback)\n    if (!(await fs.pathExists(filePath))) {\n      continue\n    }\n\n    // We can't use fs.readJSON because it doesn't support comments.\n    const contents = await fs.readFile(filePath, \"utf8\")\n    const cleanedContents = contents.replace(/\\/\\*\\s*\\*\\//g, \"\")\n    const result = TS_CONFIG_SCHEMA.safeParse(JSON.parse(cleanedContents))\n\n    if (result.error) {\n      continue\n    }\n\n    return result.data\n  }\n\n  return null\n}\n\nexport async function getProjectConfig(\n  cwd: string,\n  defaultProjectInfo: ProjectInfo | null = null\n): Promise<Config | null> {\n  // Check for existing component config.\n  const [existingConfig, projectInfo] = await Promise.all([\n    getConfig(cwd),\n    !defaultProjectInfo\n      ? getProjectInfo(cwd)\n      : Promise.resolve(defaultProjectInfo),\n  ])\n\n  if (existingConfig) {\n    return existingConfig\n  }\n\n  if (\n    !projectInfo ||\n    !projectInfo.tailwindCssFile ||\n    (projectInfo.tailwindVersion === \"v3\" && !projectInfo.tailwindConfigFile)\n  ) {\n    return null\n  }\n\n  const config: z.infer<typeof rawConfigSchema> = {\n    $schema: \"https://ui.shadcn.com/schema.json\",\n    rsc: projectInfo.isRSC,\n    tsx: projectInfo.isTsx,\n    style: \"new-york\",\n    tailwind: {\n      config: projectInfo.tailwindConfigFile ?? \"\",\n      baseColor: \"zinc\",\n      css: projectInfo.tailwindCssFile,\n      cssVariables: true,\n      prefix: \"\",\n    },\n    iconLibrary: \"lucide\",\n    aliases: {\n      components: `${projectInfo.aliasPrefix}/components`,\n      ui: `${projectInfo.aliasPrefix}/components/ui`,\n      hooks: `${projectInfo.aliasPrefix}/hooks`,\n      lib: `${projectInfo.aliasPrefix}/lib`,\n      utils: `${projectInfo.aliasPrefix}/lib/utils`,\n    },\n  }\n\n  return await resolveConfigPaths(cwd, config)\n}\n\nexport async function getProjectTailwindVersionFromConfig(config: {\n  resolvedPaths: Pick<Config[\"resolvedPaths\"], \"cwd\">\n}): Promise<TailwindVersion> {\n  if (!config.resolvedPaths?.cwd) {\n    return \"v3\"\n  }\n\n  const projectInfo = await getProjectInfo(config.resolvedPaths.cwd)\n\n  if (!projectInfo?.tailwindVersion) {\n    return null\n  }\n\n  return projectInfo.tailwindVersion\n}\n\nexport async function getProjectComponents(cwd: string) {\n  const existingConfig = await getConfig(cwd)\n  if (!existingConfig) {\n    return []\n  }\n\n  const resolvedConfig = await resolveConfigPaths(cwd, existingConfig)\n  const uiDir = resolvedConfig.resolvedPaths.ui\n  if (!fs.existsSync(uiDir)) {\n    return []\n  }\n\n  const registryIndex = await getShadcnRegistryIndex()\n  const registryNames = new Set(registryIndex?.map((item) => item.name) ?? [])\n\n  const files = await fsPromises.readdir(uiDir)\n  return files\n    .filter((f) => /\\.(tsx|jsx)$/.test(f))\n    .map((f) => path.basename(f, path.extname(f)))\n    .filter((name) => registryNames.has(name))\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/handle-error.ts",
    "content": "import { RegistryError } from \"@/src/registry/errors\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { z } from \"zod\"\n\nexport function handleError(error: unknown) {\n  logger.break()\n  logger.error(\n    `Something went wrong. Please check the error below for more details.`\n  )\n  logger.error(`If the problem persists, please open an issue on GitHub.`)\n  logger.error(\"\")\n  if (typeof error === \"string\") {\n    logger.error(error)\n    logger.break()\n    process.exit(1)\n  }\n\n  if (error instanceof RegistryError) {\n    if (error.message) {\n      logger.error(error.cause ? \"Error:\" : \"Message:\")\n      logger.error(error.message)\n    }\n\n    if (error.cause) {\n      logger.error(\"\\nMessage:\")\n      logger.error(error.cause)\n    }\n\n    if (error.suggestion) {\n      logger.error(\"\\nSuggestion:\")\n      logger.error(error.suggestion)\n    }\n    logger.break()\n    process.exit(1)\n  }\n\n  if (error instanceof z.ZodError) {\n    logger.error(\"Validation failed:\")\n    for (const [key, value] of Object.entries(error.flatten().fieldErrors)) {\n      logger.error(`- ${highlighter.info(key)}: ${value}`)\n    }\n    logger.break()\n    process.exit(1)\n  }\n\n  if (error instanceof Error) {\n    logger.error(error.message)\n    logger.break()\n    process.exit(1)\n  }\n\n  logger.break()\n  process.exit(1)\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/highlighter.ts",
    "content": "import { cyan, green, red, yellow } from \"kleur/colors\"\n\nexport const highlighter = {\n  error: red,\n  warn: yellow,\n  info: cyan,\n  success: green,\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/index.ts",
    "content": "export { createStyleMap } from \"../styles/create-style-map\"\nexport { transformStyle } from \"../styles/transform\"\nexport { transformFont } from \"../utils/transformers/transform-font\"\nexport { transformIcons } from \"../utils/transformers/transform-icons\"\nexport { transformMenu } from \"../utils/transformers/transform-menu\"\nexport { transformRender } from \"../utils/transformers/transform-render\"\nexport { transformDirection } from \"../utils/transformers/transform-rtl\"\n"
  },
  {
    "path": "packages/shadcn/src/utils/is-safe-target.test.ts",
    "content": "import { describe, expect, test } from \"vitest\"\n\nimport { isSafeTarget } from \"./is-safe-target\"\n\ndescribe(\"isSafeTarget\", () => {\n  const cwd = \"/foo/bar\"\n\n  describe(\"should reject path traversal attempts\", () => {\n    test.each([\n      {\n        description: \"basic path traversal with ../\",\n        target: \"../../etc/passwd\",\n      },\n      {\n        description: \"nested path traversal\",\n        target: \"ui/../../../etc/hosts\",\n      },\n      {\n        description: \"path traversal with ~/../\",\n        target: \"~/../../../.ssh/authorized_keys\",\n      },\n      {\n        description: \"absolute paths outside project\",\n        target: \"/etc/passwd\",\n      },\n      {\n        description: \"paths that resolve outside project root\",\n        target: \"foo/bar/../../../../etc/passwd\",\n      },\n      {\n        description: \"URL-encoded path traversal\",\n        target: \"%2e%2e%2f%2e%2e%2fetc%2fpasswd\",\n      },\n      {\n        description: \"double URL-encoded sequences\",\n        target: \"%252e%252e%252fetc%252fpasswd\",\n      },\n      {\n        description: \"mixed encoded/plain traversal\",\n        target: \"..%2f..%2fetc%2fpasswd\",\n      },\n      {\n        description: \"null byte injection\",\n        target: \"valid/path\\0../../etc/passwd\",\n      },\n      {\n        description: \"Windows-style path traversal\",\n        target: \"..\\\\..\\\\Windows\\\\System32\\\\config\",\n      },\n      {\n        description: \"Windows absolute paths\",\n        target: \"C:\\\\Windows\\\\System32\\\\drivers\\\\etc\\\\hosts\",\n      },\n      {\n        description: \"mixed separator traversal\",\n        target: \"foo\\\\..\\\\../etc/passwd\",\n      },\n      {\n        description: \"current directory reference attacks\",\n        target: \"foo/./././../../../etc/passwd\",\n      },\n      {\n        description: \"control characters in paths\",\n        target: \"foo/\\x01\\x02/../../etc/passwd\",\n      },\n      {\n        description: \"Unicode normalization attacks\",\n        target: \"foo/../\\u2025/etc/passwd\",\n      },\n      {\n        description:\n          \"path traversal with square brackets outside [...] pattern\",\n        target: \"foo/[bar]/../../etc/passwd\",\n      },\n    ])(\"$description\", ({ target }) => {\n      expect(isSafeTarget(target, cwd)).toBe(false)\n    })\n  })\n\n  describe(\"should accept safe paths\", () => {\n    test.each([\n      {\n        description: \"simple relative path\",\n        target: \"ui/button.tsx\",\n      },\n      {\n        description: \"nested relative path\",\n        target: \"components/ui/button.tsx\",\n      },\n      {\n        description: \"home directory expansion\",\n        target: \"~/foo.json\",\n      },\n      {\n        description: \"nested home directory path\",\n        target: \"~/components/button.tsx\",\n      },\n      {\n        description: \"dot in filename\",\n        target: \"components/.env.local\",\n      },\n      {\n        description: \"path with spaces\",\n        target: \"my components/button.tsx\",\n      },\n      {\n        description: \"path with special characters\",\n        target: \"components/@ui/button.tsx\",\n      },\n      {\n        description: \"framework routing with square brackets\",\n        target: \"pages/[id].tsx\",\n      },\n      {\n        description: \"catch-all routes with [...param]\",\n        target: \"server/api/auth/[...].ts\",\n      },\n      {\n        description: \"optional catch-all routes\",\n        target: \"pages/[[...slug]].tsx\",\n      },\n      {\n        description: \"dollar sign routes\",\n        target: \"routes/$userId.tsx\",\n      },\n      {\n        description: \"complex routing patterns\",\n        target: \"app/[locale]/[...segments]/page.tsx\",\n      },\n    ])(\"$description\", ({ target }) => {\n      expect(isSafeTarget(target, cwd)).toBe(true)\n    })\n  })\n\n  describe(\"edge cases\", () => {\n    test(\"should handle empty string\", () => {\n      expect(isSafeTarget(\"\", cwd)).toBe(true)\n    })\n\n    test(\"should handle single dot\", () => {\n      expect(isSafeTarget(\".\", cwd)).toBe(true)\n    })\n\n    test(\"should reject malformed URL encoding\", () => {\n      expect(isSafeTarget(\"%zz%ff%2e%2e%2f\", cwd)).toBe(false)\n    })\n\n    test(\"should handle paths at project root\", () => {\n      expect(isSafeTarget(\"/foo/bar/test.txt\", cwd)).toBe(true)\n    })\n\n    test(\"should reject paths just outside project root\", () => {\n      expect(isSafeTarget(\"/foo/test.txt\", cwd)).toBe(false)\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/is-safe-target.ts",
    "content": "import path from \"path\"\n\nexport function isSafeTarget(targetPath: string, cwd: string): boolean {\n  // Check for null bytes which can be used to bypass validations.\n  if (targetPath.includes(\"\\0\")) {\n    return false\n  }\n\n  // Decode URL-encoded sequences to catch encoded traversal attempts.\n  let decodedPath: string\n  try {\n    // Decode multiple times to catch double-encoded sequences.\n    decodedPath = targetPath\n    let prevPath = \"\"\n    while (decodedPath !== prevPath && decodedPath.includes(\"%\")) {\n      prevPath = decodedPath\n      decodedPath = decodeURIComponent(decodedPath)\n    }\n  } catch {\n    // If decoding fails, treat as unsafe.\n    return false\n  }\n\n  // Normalize both paths to handle different path separators.\n  // Convert Windows backslashes to forward slashes for consistent handling.\n  const normalizedTarget = path.normalize(decodedPath.replace(/\\\\/g, \"/\"))\n  const normalizedRoot = path.normalize(cwd)\n\n  // Check for explicit path traversal sequences in both encoded and decoded forms.\n  // Allow [...] pattern which is common in framework routing (e.g., [...slug])\n  const hasPathTraversal = (path: string) => {\n    // Remove [...] patterns before checking for ..\n    const withoutBrackets = path.replace(/\\[\\.\\.\\..*?\\]/g, \"\")\n    return withoutBrackets.includes(\"..\")\n  }\n\n  if (\n    hasPathTraversal(normalizedTarget) ||\n    hasPathTraversal(decodedPath) ||\n    hasPathTraversal(targetPath)\n  ) {\n    return false\n  }\n\n  // Check for current directory references that might be used in traversal.\n  // First, remove [...] patterns to avoid false positives\n  const cleanPath = (path: string) => path.replace(/\\[\\.\\.\\..*?\\]/g, \"\")\n  const cleanTarget = cleanPath(targetPath)\n  const cleanDecoded = cleanPath(decodedPath)\n\n  const suspiciousPatterns = [\n    /\\.\\.[\\/\\\\]/, // ../ or ..\\\n    /[\\/\\\\]\\.\\./, // /.. or \\..\n    /\\.\\./, // .. anywhere\n    /\\.\\.%/, // URL encoded traversal\n    /\\x00/, // null byte\n    /[\\x01-\\x1f]/, // control characters\n  ]\n\n  if (\n    suspiciousPatterns.some(\n      (pattern) => pattern.test(cleanTarget) || pattern.test(cleanDecoded)\n    )\n  ) {\n    return false\n  }\n\n  // Allow ~/ at the start (home directory expansion within project) but reject ~/../ patterns.\n  if (\n    (targetPath.includes(\"~\") || decodedPath.includes(\"~\")) &&\n    (targetPath.includes(\"../\") || decodedPath.includes(\"../\"))\n  ) {\n    return false\n  }\n\n  // Check for Windows drive letters (even on non-Windows systems for safety).\n  const driveLetterRegex = /^[a-zA-Z]:[\\/\\\\]/\n  if (driveLetterRegex.test(decodedPath)) {\n    // On Windows, check if it starts with the project root.\n    if (process.platform === \"win32\") {\n      return decodedPath.toLowerCase().startsWith(cwd.toLowerCase())\n    }\n    // On non-Windows systems, reject all Windows absolute paths.\n    return false\n  }\n\n  // If it's an absolute path, ensure it's within the project root.\n  if (path.isAbsolute(normalizedTarget)) {\n    return normalizedTarget.startsWith(normalizedRoot + path.sep)\n  }\n\n  // For relative paths, resolve and check if within project bounds.\n  const resolvedPath = path.resolve(normalizedRoot, normalizedTarget)\n  return (\n    resolvedPath.startsWith(normalizedRoot + path.sep) ||\n    resolvedPath === normalizedRoot\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/legacy-icon-libraries.ts",
    "content": "export const LEGACY_ICON_LIBRARIES = {\n  lucide: {\n    name: \"lucide-react\",\n    package: \"lucide-react\",\n    import: \"lucide-react\",\n  },\n  radix: {\n    name: \"@radix-ui/react-icons\",\n    package: \"@radix-ui/react-icons\",\n    import: \"@radix-ui/react-icons\",\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/logger.ts",
    "content": "import { highlighter } from \"@/src/utils/highlighter\"\n\nexport const logger = {\n  error(...args: unknown[]) {\n    console.log(highlighter.error(args.join(\" \")))\n  },\n  warn(...args: unknown[]) {\n    console.log(highlighter.warn(args.join(\" \")))\n  },\n  info(...args: unknown[]) {\n    console.log(highlighter.info(args.join(\" \")))\n  },\n  success(...args: unknown[]) {\n    console.log(highlighter.success(args.join(\" \")))\n  },\n  log(...args: unknown[]) {\n    console.log(args.join(\" \"))\n  },\n  break() {\n    console.log(\"\")\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/registries.ts",
    "content": "import path from \"path\"\nimport { getRegistriesIndex } from \"@/src/registry/api\"\nimport { BUILTIN_REGISTRIES } from \"@/src/registry/constants\"\nimport { resolveRegistryNamespaces } from \"@/src/registry/namespaces\"\nimport { rawConfigSchema } from \"@/src/registry/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport fs from \"fs-extra\"\n\nexport async function ensureRegistriesInConfig(\n  components: string[],\n  config: Config,\n  options: {\n    silent?: boolean\n    writeFile?: boolean\n  } = {}\n) {\n  options = {\n    silent: false,\n    writeFile: true,\n    ...options,\n  }\n\n  // Use resolveRegistryNamespaces to discover all namespaces including dependencies.\n  const registryNames = await resolveRegistryNamespaces(components, config)\n\n  const missingRegistries = registryNames.filter(\n    (registry) =>\n      !config.registries?.[registry] &&\n      !Object.keys(BUILTIN_REGISTRIES).includes(registry)\n  )\n\n  if (missingRegistries.length === 0) {\n    return {\n      config,\n      newRegistries: [],\n    }\n  }\n\n  // We'll fail silently if we can't fetch the registry index.\n  // The error handling by caller will guide user to add the missing registries.\n  const registryIndex = await getRegistriesIndex({\n    useCache: process.env.NODE_ENV !== \"development\",\n  })\n\n  if (!registryIndex) {\n    return {\n      config,\n      newRegistries: [],\n    }\n  }\n\n  const foundRegistries: Record<string, string> = {}\n  for (const registry of missingRegistries) {\n    if (registryIndex[registry]) {\n      foundRegistries[registry] = registryIndex[registry]\n    }\n  }\n\n  if (Object.keys(foundRegistries).length === 0) {\n    return {\n      config,\n      newRegistries: [],\n    }\n  }\n\n  // Filter out built-in registries from existing config before merging\n  const existingRegistries = Object.fromEntries(\n    Object.entries(config.registries || {}).filter(\n      ([key]) => !Object.keys(BUILTIN_REGISTRIES).includes(key)\n    )\n  )\n\n  const newConfigWithRegistries = {\n    ...config,\n    registries: {\n      ...existingRegistries,\n      ...foundRegistries,\n    },\n  }\n\n  if (options.writeFile) {\n    const { resolvedPaths, ...configWithoutResolvedPaths } =\n      newConfigWithRegistries\n    const configSpinner = spinner(\"Updating components.json.\", {\n      silent: options.silent,\n    }).start()\n    const updatedConfig = rawConfigSchema.parse(configWithoutResolvedPaths)\n    await fs.writeFile(\n      path.resolve(config.resolvedPaths.cwd, \"components.json\"),\n      JSON.stringify(updatedConfig, null, 2) + \"\\n\",\n      \"utf-8\"\n    )\n    configSpinner.succeed()\n  }\n\n  return {\n    config: newConfigWithRegistries,\n    newRegistries: Object.keys(foundRegistries),\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/resolve-import.ts",
    "content": "import { createMatchPath, type ConfigLoaderSuccessResult } from \"tsconfig-paths\"\n\nexport async function resolveImport(\n  importPath: string,\n  config: Pick<ConfigLoaderSuccessResult, \"absoluteBaseUrl\" | \"paths\">\n) {\n  return createMatchPath(config.absoluteBaseUrl, config.paths)(\n    importPath,\n    undefined,\n    () => true,\n    [\".ts\", \".tsx\", \".jsx\", \".js\", \".css\"]\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/scaffold.test.ts",
    "content": "import path from \"path\"\nimport { createTemplate } from \"@/src/templates/create-template\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { execa } from \"execa\"\nimport fs from \"fs-extra\"\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\"\n\nvi.mock(\"fs-extra\")\nvi.mock(\"execa\")\nvi.mock(\"@/src/utils/spinner\")\nvi.mock(\"@/src/utils/logger\", () => ({\n  logger: { break: vi.fn(), error: vi.fn(), info: vi.fn() },\n}))\n\nlet mockSpinner: Record<string, ReturnType<typeof vi.fn>>\n\nfunction setupMocks() {\n  mockSpinner = {\n    start: vi.fn().mockReturnThis(),\n    succeed: vi.fn().mockReturnThis(),\n    fail: vi.fn().mockReturnThis(),\n  }\n\n  vi.mocked(fs.ensureDir).mockResolvedValue(undefined)\n  vi.mocked(fs.writeFile).mockResolvedValue(undefined)\n  vi.mocked(fs.move).mockResolvedValue(undefined)\n  vi.mocked(fs.remove).mockResolvedValue(undefined)\n  vi.mocked(fs.existsSync).mockReturnValue(false)\n  vi.mocked(fs.copy).mockResolvedValue(undefined)\n\n  vi.mocked(execa).mockResolvedValue({\n    stdout: \"\",\n    stderr: \"\",\n    exitCode: 0,\n  } as any)\n\n  vi.mocked(spinner).mockReturnValue(mockSpinner as any)\n}\n\ndescribe(\"defaultScaffold\", () => {\n  const originalEnv = { ...process.env }\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let mockExit: any\n\n  beforeEach(() => {\n    vi.clearAllMocks()\n    delete process.env.SHADCN_TEMPLATE_DIR\n    delete process.env.SHADCN_GITHUB_URL\n    mockExit = vi\n      .spyOn(process, \"exit\")\n      .mockImplementation(() => undefined as never)\n    setupMocks()\n  })\n\n  afterEach(() => {\n    vi.resetAllMocks()\n    mockExit.mockRestore()\n    process.env = { ...originalEnv }\n  })\n\n  function createTestTemplate() {\n    return createTemplate({\n      name: \"next\",\n      title: \"Next.js\",\n      defaultProjectName: \"next-app\",\n      templateDir: \"next-app\",\n      create: vi.fn(),\n    })\n  }\n\n  it(\"should clone the repo with sparse checkout\", async () => {\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"pnpm\",\n      cwd: \"/test\",\n    })\n\n    // Should clone with --depth 1, --filter=blob:none, --sparse.\n    expect(vi.mocked(execa)).toHaveBeenCalledWith(\"git\", [\n      \"clone\",\n      \"--depth\",\n      \"1\",\n      \"--filter=blob:none\",\n      \"--sparse\",\n      \"https://github.com/shadcn-ui/ui.git\",\n      expect.stringContaining(\"shadcn-template-\"),\n    ])\n\n    // Should set sparse-checkout to the template directory.\n    expect(vi.mocked(execa)).toHaveBeenCalledWith(\"git\", [\n      \"-C\",\n      expect.stringContaining(\"shadcn-template-\"),\n      \"sparse-checkout\",\n      \"set\",\n      \"templates/next-app\",\n    ])\n  })\n\n  it(\"should move template directory to project path\", async () => {\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"pnpm\",\n      cwd: \"/test\",\n    })\n\n    expect(vi.mocked(fs.move)).toHaveBeenCalledWith(\n      expect.stringContaining(path.join(\"templates\", \"next-app\")),\n      \"/test/my-app\"\n    )\n  })\n\n  it(\"should clean up the temp directory after extraction\", async () => {\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"pnpm\",\n      cwd: \"/test\",\n    })\n\n    expect(vi.mocked(fs.remove)).toHaveBeenCalledWith(\n      expect.stringContaining(\"shadcn-template-\")\n    )\n  })\n\n  it(\"should use local templates when SHADCN_TEMPLATE_DIR is set\", async () => {\n    process.env.SHADCN_TEMPLATE_DIR = \"/local/templates\"\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"pnpm\",\n      cwd: \"/test\",\n    })\n\n    // Should not call git clone.\n    const execaCalls = vi.mocked(execa).mock.calls\n    expect(\n      execaCalls.some(\n        (call) => call[0] === \"git\" && (call[1] as string[]).includes(\"clone\")\n      )\n    ).toBe(false)\n\n    expect(vi.mocked(fs.copy)).toHaveBeenCalledWith(\n      path.resolve(\"/local/templates\", \"next-app\"),\n      \"/test/my-app\",\n      expect.objectContaining({ filter: expect.any(Function) })\n    )\n  })\n\n  it(\"should exit on git clone failure\", async () => {\n    vi.mocked(execa).mockRejectedValueOnce(new Error(\"git clone failed\"))\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"pnpm\",\n      cwd: \"/test\",\n    })\n\n    expect(mockSpinner.fail).toHaveBeenCalled()\n    expect(mockExit).toHaveBeenCalledWith(1)\n  })\n\n  it(\"should remove pnpm-lock.yaml for non-pnpm package managers\", async () => {\n    vi.mocked(fs.existsSync).mockImplementation((p: any) =>\n      p.toString().includes(\"pnpm-lock.yaml\")\n    )\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"npm\",\n      cwd: \"/test\",\n    })\n\n    expect(vi.mocked(fs.remove)).toHaveBeenCalledWith(\n      path.join(\"/test/my-app\", \"pnpm-lock.yaml\")\n    )\n  })\n\n  it(\"should not remove pnpm-lock.yaml when using pnpm\", async () => {\n    vi.mocked(fs.existsSync).mockReturnValue(true)\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"pnpm\",\n      cwd: \"/test\",\n    })\n\n    // fs.remove is called for temp dir cleanup, but not for pnpm-lock.yaml.\n    const removeCalls = vi.mocked(fs.remove).mock.calls\n    expect(\n      removeCalls.some((call) => call[0].toString().includes(\"pnpm-lock.yaml\"))\n    ).toBe(false)\n  })\n\n  it(\"should run package manager install\", async () => {\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"bun\",\n      cwd: \"/test\",\n    })\n\n    expect(vi.mocked(execa)).toHaveBeenCalledWith(\"bun\", [\"install\"], {\n      cwd: \"/test/my-app\",\n    })\n  })\n\n  it(\"should pass --no-frozen-lockfile for pnpm\", async () => {\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"pnpm\",\n      cwd: \"/test\",\n    })\n\n    expect(vi.mocked(execa)).toHaveBeenCalledWith(\n      \"pnpm\",\n      [\"install\", \"--no-frozen-lockfile\"],\n      { cwd: \"/test/my-app\" }\n    )\n  })\n\n  it(\"should strip packageManager field from package.json for non-pnpm\", async () => {\n    vi.mocked(fs.existsSync).mockImplementation((p: any) =>\n      p.toString().includes(\"package.json\")\n    )\n    vi.mocked(fs.readFile).mockResolvedValue(\n      JSON.stringify({\n        name: \"my-app\",\n        packageManager: \"pnpm@9.0.0\",\n      }) as any\n    )\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"bun\",\n      cwd: \"/test\",\n    })\n\n    // The first writeFile call is from adaptWorkspaceConfig.\n    const writeCalls = vi.mocked(fs.writeFile).mock.calls\n    const adaptCall = writeCalls.find(\n      (call) => call[0] === path.join(\"/test/my-app\", \"package.json\")\n    )\n    expect(adaptCall).toBeDefined()\n    const written = JSON.parse(adaptCall![1] as string)\n    expect(written.packageManager).toBeUndefined()\n  })\n\n  it(\"should convert pnpm-workspace.yaml to workspaces field for non-pnpm monorepo\", async () => {\n    vi.mocked(fs.existsSync).mockImplementation((p: any) => {\n      const s = p.toString()\n      return s.includes(\"pnpm-workspace.yaml\") || s.includes(\"package.json\")\n    })\n\n    // Return different content based on which file is being read.\n    vi.mocked(fs.readFile).mockImplementation(((filePath: string) => {\n      if (filePath.includes(\"pnpm-workspace.yaml\")) {\n        return Promise.resolve(\"packages:\\n  - 'apps/*'\\n  - 'packages/*'\\n\")\n      }\n      return Promise.resolve(\n        JSON.stringify({ name: \"my-mono\", packageManager: \"pnpm@9.0.0\" })\n      )\n    }) as any)\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"bun\",\n      cwd: \"/test\",\n    })\n\n    // Should remove pnpm-workspace.yaml.\n    expect(vi.mocked(fs.remove)).toHaveBeenCalledWith(\n      path.join(\"/test/my-app\", \"pnpm-workspace.yaml\")\n    )\n\n    // Should write workspaces array to package.json.\n    const writeCalls = vi.mocked(fs.writeFile).mock.calls\n    const adaptCall = writeCalls.find(\n      (call) => call[0] === path.join(\"/test/my-app\", \"package.json\")\n    )\n    expect(adaptCall).toBeDefined()\n    const written = JSON.parse(adaptCall![1] as string)\n    expect(written.workspaces).toEqual([\"apps/*\", \"packages/*\"])\n    expect(written.packageManager).toBeUndefined()\n  })\n\n  it(\"should rewrite workspace: protocol refs to * for npm monorepo\", async () => {\n    vi.mocked(fs.existsSync).mockImplementation((p: any) => {\n      const s = p.toString()\n      return s.includes(\"pnpm-workspace.yaml\") || s.includes(\"package.json\")\n    })\n\n    const rootPkg = JSON.stringify({\n      name: \"my-mono\",\n      packageManager: \"pnpm@9.0.0\",\n    })\n    const nestedPkg = JSON.stringify({\n      name: \"web\",\n      dependencies: { \"@workspace/ui\": \"workspace:*\" },\n    })\n\n    vi.mocked(fs.readFile).mockImplementation(((filePath: string) => {\n      if (filePath.includes(\"pnpm-workspace.yaml\")) {\n        return Promise.resolve(\"packages:\\n  - 'apps/*'\\n\")\n      }\n      if (filePath.includes(\"apps\")) {\n        return Promise.resolve(nestedPkg)\n      }\n      return Promise.resolve(rootPkg)\n    }) as any)\n\n    // Mock readdir for the recursive rewriteWorkspaceProtocol walk.\n    vi.mocked(fs.readdir).mockImplementation(((dir: string) => {\n      if (dir === \"/test/my-app\") {\n        return Promise.resolve([\n          { name: \"apps\", isDirectory: () => true },\n          { name: \"package.json\", isDirectory: () => false },\n        ])\n      }\n      if (dir.includes(\"apps\")) {\n        return Promise.resolve([\n          { name: \"package.json\", isDirectory: () => false },\n        ])\n      }\n      return Promise.resolve([])\n    }) as any)\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"npm\",\n      cwd: \"/test\",\n    })\n\n    // Should have rewritten workspace:* to * in nested package.json.\n    const writeCalls = vi.mocked(fs.writeFile).mock.calls\n    const nestedWrite = writeCalls.find(\n      (call) =>\n        (call[0] as string).includes(\"apps\") &&\n        (call[0] as string).includes(\"package.json\")\n    )\n    expect(nestedWrite).toBeDefined()\n    const written = JSON.parse(nestedWrite![1] as string)\n    expect(written.dependencies[\"@workspace/ui\"]).toBe(\"*\")\n  })\n\n  it(\"should not rewrite workspace: protocol refs for bun\", async () => {\n    vi.mocked(fs.existsSync).mockImplementation((p: any) => {\n      const s = p.toString()\n      return s.includes(\"pnpm-workspace.yaml\") || s.includes(\"package.json\")\n    })\n\n    vi.mocked(fs.readFile).mockImplementation(((filePath: string) => {\n      if (filePath.includes(\"pnpm-workspace.yaml\")) {\n        return Promise.resolve(\"packages:\\n  - 'apps/*'\\n\")\n      }\n      return Promise.resolve(\n        JSON.stringify({ name: \"my-mono\", packageManager: \"pnpm@9.0.0\" })\n      )\n    }) as any)\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"bun\",\n      cwd: \"/test\",\n    })\n\n    // readdir should not be called since rewriteWorkspaceProtocol is skipped for bun.\n    expect(vi.mocked(fs.readdir)).not.toHaveBeenCalled()\n  })\n\n  it(\"should write project name to package.json\", async () => {\n    vi.mocked(fs.existsSync).mockImplementation((p: any) =>\n      p.toString().includes(\"package.json\")\n    )\n    vi.mocked(fs.readFile).mockResolvedValue(\n      JSON.stringify({ name: \"template-name\" }) as any\n    )\n\n    const template = createTestTemplate()\n\n    await template.scaffold({\n      projectPath: \"/test/my-app\",\n      packageManager: \"pnpm\",\n      cwd: \"/test\",\n    })\n\n    expect(vi.mocked(fs.writeFile)).toHaveBeenCalledWith(\n      path.join(\"/test/my-app\", \"package.json\"),\n      JSON.stringify({ name: \"my-app\" }, null, 2) + \"\\n\"\n    )\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/spinner.ts",
    "content": "import ora, { type Options } from \"ora\"\n\nexport function spinner(\n  text: Options[\"text\"],\n  options?: {\n    silent?: boolean\n  }\n) {\n  return ora({\n    text,\n    isSilent: options?.silent,\n  })\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/templates.ts",
    "content": "export const UTILS = `import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n`\n\nexport const UTILS_JS = `import { clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs) {\n  return twMerge(clsx(inputs))\n}\n`\n\nexport const TAILWIND_CONFIG = `/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  darkMode: [\"class\"],\n  content: [\n    './pages/**/*.{<%- extension %>,<%- extension %>x}',\n    './components/**/*.{<%- extension %>,<%- extension %>x}',\n    './app/**/*.{<%- extension %>,<%- extension %>x}',\n    './src/**/*.{<%- extension %>,<%- extension %>x}',\n  ],\n  prefix: \"<%- prefix %>\",\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: \"0\" },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: \"0\" },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n}`\n\nexport const TAILWIND_CONFIG_WITH_VARIABLES = `/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  darkMode: [\"class\"],\n  content: [\n    './pages/**/*.{<%- extension %>,<%- extension %>x}',\n    './components/**/*.{<%- extension %>,<%- extension %>x}',\n    './app/**/*.{<%- extension %>,<%- extension %>x}',\n    './src/**/*.{<%- extension %>,<%- extension %>x}',\n  ],\n  prefix: \"<%- prefix %>\",\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      colors: {\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input))\",\n        ring: \"hsl(var(--ring))\",\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        primary: {\n          DEFAULT: \"hsl(var(--primary))\",\n          foreground: \"hsl(var(--primary-foreground))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n      },\n      borderRadius: {\n        lg: \"var(--radius)\",\n        md: \"calc(var(--radius) - 2px)\",\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: \"0\" },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: \"0\" },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n}`\n\nexport const TAILWIND_CONFIG_TS = `import type { Config } from \"tailwindcss\"\n\nconst config = {\n  darkMode: [\"class\"],\n  content: [\n    './pages/**/*.{<%- extension %>,<%- extension %>x}',\n    './components/**/*.{<%- extension %>,<%- extension %>x}',\n    './app/**/*.{<%- extension %>,<%- extension %>x}',\n    './src/**/*.{<%- extension %>,<%- extension %>x}',\n  ],\n  prefix: \"<%- prefix %>\",\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: \"0\" },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: \"0\" },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config\n\nexport default config`\n\nexport const TAILWIND_CONFIG_TS_WITH_VARIABLES = `import type { Config } from \"tailwindcss\"\n\nconst config = {\n  darkMode: [\"class\"],\n  content: [\n    './pages/**/*.{<%- extension %>,<%- extension %>x}',\n    './components/**/*.{<%- extension %>,<%- extension %>x}',\n    './app/**/*.{<%- extension %>,<%- extension %>x}',\n    './src/**/*.{<%- extension %>,<%- extension %>x}',\n\t],\n  prefix: \"<%- prefix %>\",\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      colors: {\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input))\",\n        ring: \"hsl(var(--ring))\",\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        primary: {\n          DEFAULT: \"hsl(var(--primary))\",\n          foreground: \"hsl(var(--primary-foreground))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n      },\n      borderRadius: {\n        lg: \"var(--radius)\",\n        md: \"calc(var(--radius) - 2px)\",\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: \"0\" },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: \"0\" },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config\n\nexport default config`\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/index.ts",
    "content": "import { promises as fs } from \"fs\"\nimport { tmpdir } from \"os\"\nimport path from \"path\"\nimport { registryBaseColorSchema } from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { transformCssVars } from \"@/src/utils/transformers/transform-css-vars\"\nimport { transformIcons } from \"@/src/utils/transformers/transform-icons\"\nimport { transformImport } from \"@/src/utils/transformers/transform-import\"\nimport { transformJsx } from \"@/src/utils/transformers/transform-jsx\"\nimport { transformRsc } from \"@/src/utils/transformers/transform-rsc\"\nimport { Project, ScriptKind, type SourceFile } from \"ts-morph\"\nimport { z } from \"zod\"\n\nimport { transformCleanup } from \"./transform-cleanup\"\nimport { transformRtl } from \"./transform-rtl\"\nimport { transformTwPrefixes } from \"./transform-tw-prefix\"\n\nexport type TransformOpts = {\n  filename: string\n  raw: string\n  config: Config\n  baseColor?: z.infer<typeof registryBaseColorSchema>\n  transformJsx?: boolean\n  isRemote?: boolean\n  supportedFontMarkers?: string[]\n}\n\nexport type Transformer<Output = SourceFile> = (\n  opts: TransformOpts & {\n    sourceFile: SourceFile\n  }\n) => Promise<Output>\n\nconst project = new Project({\n  compilerOptions: {},\n})\n\nasync function createTempSourceFile(filename: string) {\n  const dir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-\"))\n  return path.join(dir, filename)\n}\n\nexport async function transform(\n  opts: TransformOpts,\n  transformers: Transformer[] = [\n    transformImport,\n    transformRsc,\n    transformCssVars,\n    transformTwPrefixes,\n    transformRtl,\n    transformIcons,\n    transformCleanup,\n  ]\n) {\n  const tempFile = await createTempSourceFile(opts.filename)\n  const sourceFile = project.createSourceFile(tempFile, opts.raw, {\n    scriptKind: ScriptKind.TSX,\n  })\n\n  for (const transformer of transformers) {\n    await transformer({ sourceFile, ...opts })\n  }\n\n  if (opts.transformJsx) {\n    return await transformJsx({\n      sourceFile,\n      ...opts,\n    })\n  }\n\n  return sourceFile.getText()\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-aschild.test.ts",
    "content": "import { type Config } from \"@/src/utils/get-config\"\nimport { transformAsChild } from \"@/src/utils/transformers/transform-aschild\"\nimport { describe, expect, test } from \"vitest\"\n\nimport { transform } from \".\"\n\nconst testConfig: Config = {\n  style: \"base-default\",\n  tsx: true,\n  rsc: true,\n  tailwind: {\n    baseColor: \"neutral\",\n    cssVariables: true,\n    config: \"tailwind.config.ts\",\n    css: \"tailwind.css\",\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \"/\",\n    components: \"/components\",\n    utils: \"/lib/utils\",\n    ui: \"/ui\",\n    lib: \"/lib\",\n    hooks: \"/hooks\",\n    tailwindConfig: \"tailwind.config.ts\",\n    tailwindCss: \"tailwind.css\",\n  },\n}\n\ndescribe(\"transformAsChild\", () => {\n  describe(\"DialogTrigger with Button child\", () => {\n    test(\"transforms asChild to render prop without nativeButton\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DialogTrigger asChild>\n      <Button variant=\"outline\">Edit Profile</Button>\n    </DialogTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DialogTrigger render={<Button variant=\"outline\" />}>Edit Profile</DialogTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"DialogTrigger with non-Button child\", () => {\n    test(\"transforms asChild to render prop without nativeButton\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DialogTrigger asChild>\n      <a href=\"#\">Open Dialog</a>\n    </DialogTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DialogTrigger render={<a href=\"#\" />}>Open Dialog</DialogTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"Button with anchor child\", () => {\n    test(\"transforms asChild to render prop with nativeButton={false}\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <Button asChild>\n      <a href=\"#\">Create project</a>\n    </Button>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <Button render={<a href=\"#\" />} nativeButton={false}>Create project</Button>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"Button with span child\", () => {\n    test(\"transforms asChild to render prop with nativeButton={false}\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <Button variant=\"outline\" asChild size=\"icon\" className=\"w-12\">\n      <span>1.2K</span>\n    </Button>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <Button variant=\"outline\" size=\"icon\" className=\"w-12\" render={<span />} nativeButton={false}>1.2K</Button>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"PopoverTrigger with custom component child\", () => {\n    test(\"transforms asChild to render prop without nativeButton\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <PopoverTrigger asChild>\n      <InputGroupAddon>Click me</InputGroupAddon>\n    </PopoverTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <PopoverTrigger render={<InputGroupAddon />}>Click me</PopoverTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"Button with Link child\", () => {\n    test(\"transforms asChild to render prop with nativeButton={false}\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <Button asChild>\n      <Link href=\"/\">Home</Link>\n    </Button>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <Button render={<Link href=\"/\" />} nativeButton={false}>Home</Button>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"preserves child props\", () => {\n    test(\"preserves className and other attributes on child\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <Button variant=\"link\" asChild className=\"text-muted-foreground\">\n      <a href=\"#\" className=\"font-bold\" data-test=\"link\">\n        Learn more\n      </a>\n    </Button>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <Button variant=\"link\" className=\"text-muted-foreground\" render={<a href=\"#\" className=\"font-bold\" data-test=\"link\" />} nativeButton={false}>Learn more\n                    </Button>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"handles nested children\", () => {\n    test(\"preserves complex children content\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <Button asChild>\n      <a href=\"#\">\n        Learn more <Icon />\n      </a>\n    </Button>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <Button render={<a href=\"#\" />} nativeButton={false}>Learn more <Icon /></Button>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"self-closing child element\", () => {\n    test(\"handles self-closing child with no children\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <TooltipTrigger asChild>\n      <InputGroupButton size=\"icon-xs\" />\n    </TooltipTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <TooltipTrigger render={<InputGroupButton size=\"icon-xs\" />}></TooltipTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"non-base style\", () => {\n    test(\"does not transform when style is not base-*\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DialogTrigger asChild>\n      <Button>Open</Button>\n    </DialogTrigger>\n  )\n}`,\n            config: {\n              ...testConfig,\n              style: \"new-york\",\n            },\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DialogTrigger asChild>\n              <Button>Open</Button>\n            </DialogTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"multiple asChild elements\", () => {\n    test(\"transforms multiple asChild elements in same file\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <div>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">Edit Profile</Button>\n      </DialogTrigger>\n      <DialogClose asChild>\n        <Button variant=\"outline\">Cancel</Button>\n      </DialogClose>\n    </div>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <div>\n              <DialogTrigger render={<Button variant=\"outline\" />}>Edit Profile</DialogTrigger>\n              <DialogClose render={<Button variant=\"outline\" />}>Cancel</DialogClose>\n            </div>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"nested asChild\", () => {\n    test(\"transforms inner asChild first, then outer\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <Collapsible asChild>\n      <SidebarMenuButton asChild>\n        <a href=\"#\">Home</a>\n      </SidebarMenuButton>\n    </Collapsible>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <Collapsible render={<SidebarMenuButton render={<a href=\"#\" />} />}>Home</Collapsible>\n          )\n        }\"\n      `)\n    })\n\n    test(\"adds nativeButton={false} only on nested Button\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DialogTrigger asChild>\n      <Button asChild>\n        <a href=\"#\">Open</a>\n      </Button>\n    </DialogTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DialogTrigger render={<Button render={<a href=\"#\" />} nativeButton={false} />}>Open</DialogTrigger>\n          )\n        }\"\n      `)\n    })\n\n    test(\"transforms nested with sibling asChild elements\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <div>\n      <Collapsible asChild>\n        <SidebarMenuButton asChild>\n          <a href=\"#\">Home</a>\n        </SidebarMenuButton>\n      </Collapsible>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\">Edit</Button>\n      </DialogTrigger>\n    </div>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <div>\n              <Collapsible render={<SidebarMenuButton render={<a href=\"#\" />} />}>Home</Collapsible>\n              <DialogTrigger render={<Button variant=\"outline\" />}>Edit</DialogTrigger>\n            </div>\n          )\n        }\"\n      `)\n    })\n\n    test(\"transforms nested with self-closing inner child\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <Collapsible asChild>\n      <SidebarMenuButton asChild>\n        <Icon className=\"size-4\" />\n      </SidebarMenuButton>\n    </Collapsible>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <Collapsible render={<SidebarMenuButton render={<Icon className=\"size-4\" />} />}></Collapsible>\n          )\n        }\"\n      `)\n    })\n\n    test(\"transforms triple-nested asChild\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <TooltipTrigger asChild>\n      <Collapsible asChild>\n        <SidebarMenuButton asChild>\n          <a href=\"#\">Home</a>\n        </SidebarMenuButton>\n      </Collapsible>\n    </TooltipTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformAsChild]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <TooltipTrigger render={<Collapsible render={<SidebarMenuButton render={<a href=\"#\" />} />} />}>Home</TooltipTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"idempotency\", () => {\n    test(\"running twice produces same output\", async () => {\n      const input = `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DialogTrigger asChild>\n      <Button variant=\"outline\">Edit Profile</Button>\n    </DialogTrigger>\n  )\n}`\n\n      const firstRun = await transform(\n        {\n          filename: \"test.tsx\",\n          raw: input,\n          config: testConfig,\n        },\n        [transformAsChild]\n      )\n\n      const secondRun = await transform(\n        {\n          filename: \"test.tsx\",\n          raw: firstRun,\n          config: testConfig,\n        },\n        [transformAsChild]\n      )\n\n      expect(secondRun).toBe(firstRun)\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-aschild.ts",
    "content": "import { Transformer } from \"@/src/utils/transformers\"\nimport { JsxElement, SyntaxKind } from \"ts-morph\"\n\n// Elements that require nativeButton={false} when used as render prop.\n// These are non-button elements that don't have native button semantics.\nconst ELEMENTS_REQUIRING_NATIVE_BUTTON_FALSE = [\n  \"a\",\n  \"span\",\n  \"div\",\n  \"Link\",\n  \"label\",\n  \"Label\",\n]\n\ninterface TransformInfo {\n  parentElement: JsxElement\n  parentTagName: string\n  childTagName: string\n  childProps: string\n  childChildren: string\n  needsNativeButton: boolean\n}\n\nexport const transformAsChild: Transformer = async ({ sourceFile, config }) => {\n  // Only run for base- styles.\n  if (!config.style?.startsWith(\"base-\")) {\n    return sourceFile\n  }\n\n  // Process asChild elements iteratively, starting from leaf-level elements.\n  // Each iteration transforms only elements with no asChild descendants,\n  // ensuring inner transforms complete before outer ones read the tree.\n  const MAX_ITERATIONS = 10\n  for (let i = 0; i < MAX_ITERATIONS; i++) {\n    const jsxElements = sourceFile.getDescendantsOfKind(SyntaxKind.JsxElement)\n\n    // Find all JSX elements with asChild attribute.\n    const asChildElements = jsxElements.filter((el) =>\n      el.getOpeningElement().getAttribute(\"asChild\")\n    )\n\n    if (asChildElements.length === 0) {\n      break\n    }\n\n    // Filter to leaf-only: elements with no asChild descendants.\n    const leafElements = asChildElements.filter((el) => {\n      const descendants = el.getDescendantsOfKind(SyntaxKind.JsxElement)\n      return !descendants.some((d) =>\n        d.getOpeningElement().getAttribute(\"asChild\")\n      )\n    })\n\n    // Collect all transformations first, then apply them in reverse order.\n    // This prevents issues with invalidated nodes when modifying the tree.\n    const transformations: TransformInfo[] = []\n\n    for (const jsxElement of leafElements) {\n      const openingElement = jsxElement.getOpeningElement()\n      const asChildAttr = openingElement.getAttribute(\"asChild\")\n\n      if (!asChildAttr) {\n        continue\n      }\n\n      const parentTagName = openingElement.getTagNameNode().getText()\n      const children = jsxElement.getJsxChildren()\n\n      // Find the first JSX element child (skip whitespace/text).\n      const childElement = children.find(\n        (child) =>\n          child.getKind() === SyntaxKind.JsxElement ||\n          child.getKind() === SyntaxKind.JsxSelfClosingElement\n      )\n\n      if (!childElement) {\n        // No child element found, just remove asChild.\n        asChildAttr.remove()\n        continue\n      }\n\n      // Get child element info.\n      let childTagName: string\n      let childProps: string\n      let childChildren: string\n\n      if (childElement.getKind() === SyntaxKind.JsxSelfClosingElement) {\n        const selfClosing = childElement.asKindOrThrow(\n          SyntaxKind.JsxSelfClosingElement\n        )\n        childTagName = selfClosing.getTagNameNode().getText()\n        childProps = selfClosing\n          .getAttributes()\n          .map((attr) => attr.getText())\n          .join(\" \")\n        childChildren = \"\"\n      } else {\n        const jsxChild = childElement.asKindOrThrow(SyntaxKind.JsxElement)\n        const openingEl = jsxChild.getOpeningElement()\n        childTagName = openingEl.getTagNameNode().getText()\n        childProps = openingEl\n          .getAttributes()\n          .map((attr) => attr.getText())\n          .join(\" \")\n        // Get the children's text content.\n        childChildren = jsxChild\n          .getJsxChildren()\n          .map((c) => c.getText())\n          .join(\"\")\n      }\n\n      // Determine if we need nativeButton={false}.\n      // Only add it on Button when the child is a non-button element.\n      const needsNativeButton =\n        parentTagName === \"Button\" &&\n        ELEMENTS_REQUIRING_NATIVE_BUTTON_FALSE.includes(childTagName)\n\n      transformations.push({\n        parentElement: jsxElement,\n        parentTagName,\n        childTagName,\n        childProps,\n        childChildren,\n        needsNativeButton,\n      })\n    }\n\n    // Apply transformations in reverse order to preserve node validity.\n    for (const info of transformations.reverse()) {\n      const openingElement = info.parentElement.getOpeningElement()\n\n      // Get existing attributes (excluding asChild).\n      const existingAttrs = openingElement\n        .getAttributes()\n        .filter((attr) => {\n          if (attr.getKind() === SyntaxKind.JsxAttribute) {\n            const jsxAttr = attr.asKindOrThrow(SyntaxKind.JsxAttribute)\n            return jsxAttr.getNameNode().getText() !== \"asChild\"\n          }\n          return true\n        })\n        .map((attr) => attr.getText())\n        .join(\" \")\n\n      // Build the render prop value.\n      const renderValue = info.childProps\n        ? `{<${info.childTagName} ${info.childProps} />}`\n        : `{<${info.childTagName} />}`\n\n      // Build new attributes.\n      let newAttrs = existingAttrs ? `${existingAttrs} ` : \"\"\n      newAttrs += `render=${renderValue}`\n      if (info.needsNativeButton) {\n        newAttrs += ` nativeButton={false}`\n      }\n\n      // Build the new element text.\n      const newChildren = info.childChildren.trim()\n        ? `${info.childChildren}`\n        : \"\"\n\n      const newElementText = `<${info.parentTagName} ${newAttrs}>${newChildren}</${info.parentTagName}>`\n\n      info.parentElement.replaceWithText(newElementText)\n    }\n  }\n\n  return sourceFile\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-cleanup.test.ts",
    "content": "import { describe, expect, test } from \"vitest\"\n\nimport { transform } from \".\"\nimport { createConfig } from \"../get-config\"\nimport { transformCleanup } from \"./transform-cleanup\"\n\nconst testConfig = createConfig({\n  tailwind: {\n    baseColor: \"neutral\",\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n})\n\ndescribe(\"transformCleanup\", () => {\n  test(\"removes cn-rtl-flip marker from className string\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <div className=\"cn-rtl-flip size-4\" />\n}`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain('className=\"size-4\"')\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n\n  test(\"removes cn-rtl-flip marker from cn() call\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component({ className }) {\n  return <div className={cn(\"cn-rtl-flip size-4\", className)} />\n}`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain('cn(\"size-4\", className)')\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n\n  test(\"removes multiple cn-* markers\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <div className=\"cn-rtl-flip cn-logical-sides size-4\" />\n}`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain('className=\"size-4\"')\n    expect(result).not.toContain(\"cn-rtl-flip\")\n    expect(result).not.toContain(\"cn-logical-sides\")\n  })\n\n  test(\"removes cn-* markers from cva base classes\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import { cva } from \"class-variance-authority\"\nconst buttonVariants = cva(\"cn-rtl-flip size-4\", {})`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain('cva(\"size-4\"')\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n\n  test(\"removes cn-* markers from cva variants\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import { cva } from \"class-variance-authority\"\nconst buttonVariants = cva(\"base\", {\n  variants: {\n    direction: {\n      left: \"cn-rtl-flip rotate-180\",\n      right: \"cn-rtl-flip\",\n    },\n  },\n})`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain('\"rotate-180\"')\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n\n  test(\"removes cn-* markers from mergeProps className\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return mergeProps(\n    {\n      className: cn(\"cn-rtl-flip size-4\"),\n    },\n    props\n  )\n}`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain('cn(\"size-4\")')\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n\n  test(\"removes className attribute when only cn-* marker\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <div className=\"cn-rtl-flip\" />\n}`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    // The className attribute should be removed entirely, not left empty.\n    expect(result).not.toContain(\"className\")\n    expect(result).not.toContain(\"cn-rtl-flip\")\n    expect(result).toContain(\"<div />\")\n  })\n\n  test(\"preserves non-marker classes\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <div className=\"flex items-center gap-2 cn-rtl-flip text-sm\" />\n}`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain(\"flex\")\n    expect(result).toContain(\"items-center\")\n    expect(result).toContain(\"gap-2\")\n    expect(result).toContain(\"text-sm\")\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n\n  test(\"does not affect classes that contain cn but are not markers\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <div className=\"icon-placeholder size-4\" />\n}`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain(\"icon-placeholder\")\n    expect(result).toContain(\"size-4\")\n  })\n\n  test(\"preserves cn-font-heading for transformFont\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <h2 className=\"cn-font-heading cn-rtl-flip text-xl\" />\n}`,\n        config: testConfig,\n      },\n      [transformCleanup]\n    )\n\n    expect(result).toContain('className=\"cn-font-heading text-xl\"')\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-cleanup.ts",
    "content": "import { Transformer } from \"@/src/utils/transformers\"\nimport {\n  Node,\n  NoSubstitutionTemplateLiteral,\n  Project,\n  ScriptKind,\n  SourceFile,\n  StringLiteral,\n  SyntaxKind,\n} from \"ts-morph\"\n\n// Generic cleanup should leave font markers alone until transformFont runs.\nconst PRESERVED_CN_MARKERS = new Set([\"cn-font-heading\"])\nconst CN_MARKER_REGEX = /\\bcn-[a-z-]+\\b/\n\nfunction isRemovableCnMarker(token: string) {\n  return CN_MARKER_REGEX.test(token) && !PRESERVED_CN_MARKERS.has(token)\n}\n\n// Helper to strip all cn-* marker classes from a className string.\nexport function stripCnMarkers(className: string) {\n  return className\n    .split(/\\s+/)\n    .filter((token) => token.length > 0 && !isRemovableCnMarker(token))\n    .join(\" \")\n}\n\nfunction hasRemovableCnMarker(className: string) {\n  return className.split(/\\s+/).some(isRemovableCnMarker)\n}\n\ntype StringLikeLiteral = StringLiteral | NoSubstitutionTemplateLiteral\n\n// Processes a string-like literal and strips cn-* markers.\nfunction processStringLiteral(node: StringLikeLiteral) {\n  const currentValue = node.getLiteralValue()\n  if (!hasRemovableCnMarker(currentValue)) {\n    return\n  }\n\n  const newValue = stripCnMarkers(currentValue)\n  if (newValue !== currentValue) {\n    node.setLiteralValue(newValue)\n  }\n}\n\nfunction processStringLiterals(node: Node) {\n  for (const stringLit of node.getDescendantsOfKind(SyntaxKind.StringLiteral)) {\n    processStringLiteral(stringLit)\n  }\n\n  for (const templateLit of node.getDescendantsOfKind(\n    SyntaxKind.NoSubstitutionTemplateLiteral\n  )) {\n    processStringLiteral(templateLit)\n  }\n}\n\n// Apply cleanup to a SourceFile directly (used by transformDirection).\nexport function applyCleanup(sourceFile: SourceFile) {\n  // Collect attributes to remove (can't remove while iterating).\n  const attributesToRemove: ReturnType<\n    typeof sourceFile.getDescendantsOfKind<typeof SyntaxKind.JsxAttribute>\n  > = []\n\n  // Process all JSX className attributes.\n  for (const attr of sourceFile.getDescendantsOfKind(SyntaxKind.JsxAttribute)) {\n    const attrName = attr.getNameNode().getText()\n    if (attrName !== \"className\" && attrName !== \"classNames\") {\n      continue\n    }\n\n    const initializer = attr.getInitializer()\n\n    // className=\"...\"\n    if (initializer?.isKind(SyntaxKind.StringLiteral)) {\n      const currentValue = initializer.getLiteralValue()\n      if (hasRemovableCnMarker(currentValue)) {\n        const newValue = stripCnMarkers(currentValue)\n        if (newValue === \"\") {\n          // Remove the entire attribute if className becomes empty.\n          attributesToRemove.push(attr)\n        } else if (newValue !== currentValue) {\n          initializer.setLiteralValue(newValue)\n        }\n      }\n    }\n\n    // className={...} or classNames={{...}}\n    if (initializer?.isKind(SyntaxKind.JsxExpression)) {\n      processStringLiterals(initializer)\n    }\n  }\n\n  // Remove empty className attributes.\n  for (const attr of attributesToRemove) {\n    attr.remove()\n  }\n\n  // Process cva() calls.\n  for (const call of sourceFile.getDescendantsOfKind(\n    SyntaxKind.CallExpression\n  )) {\n    if (call.getExpression().getText() !== \"cva\") {\n      continue\n    }\n\n    for (const arg of call.getArguments()) {\n      if (arg.isKind(SyntaxKind.StringLiteral)) {\n        processStringLiteral(arg)\n        continue\n      }\n      if (arg.isKind(SyntaxKind.NoSubstitutionTemplateLiteral)) {\n        processStringLiteral(arg)\n        continue\n      }\n      // Handle object arguments (variants).\n      processStringLiterals(arg)\n    }\n  }\n\n  // Process mergeProps() calls.\n  for (const call of sourceFile.getDescendantsOfKind(\n    SyntaxKind.CallExpression\n  )) {\n    if (call.getExpression().getText() !== \"mergeProps\") {\n      continue\n    }\n\n    processStringLiterals(call)\n  }\n}\n\nexport const transformCleanup: Transformer = async ({ sourceFile }) => {\n  applyCleanup(sourceFile)\n  return sourceFile\n}\n\n// Standalone function to clean up cn-* markers from source code.\n// This is used by the build script and doesn't require a config object.\nexport async function cleanupMarkers(source: string) {\n  const project = new Project({\n    useInMemoryFileSystem: true,\n  })\n\n  const sourceFile = project.createSourceFile(\"component.tsx\", source, {\n    scriptKind: ScriptKind.TSX,\n    overwrite: true,\n  })\n\n  applyCleanup(sourceFile)\n\n  return sourceFile.getText()\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-css-vars.ts",
    "content": "import { registryBaseColorSchema } from \"@/src/schema\"\nimport { Transformer } from \"@/src/utils/transformers\"\nimport { ScriptKind, SyntaxKind } from \"ts-morph\"\nimport { z } from \"zod\"\n\nexport const transformCssVars: Transformer = async ({\n  sourceFile,\n  config,\n  baseColor,\n}) => {\n  // No transform if using css variables.\n  if (config.tailwind?.cssVariables || !baseColor?.inlineColors) {\n    return sourceFile\n  }\n\n  // Find jsx attributes with the name className.\n  // const openingElements = sourceFile.getDescendantsOfKind(SyntaxKind.JsxElement)\n  // console.log(openingElements)\n  // const jsxAttributes = sourceFile\n  //   .getDescendantsOfKind(SyntaxKind.JsxAttribute)\n  //   .filter((node) => node.getName() === \"className\")\n\n  // for (const jsxAttribute of jsxAttributes) {\n  //   const value = jsxAttribute.getInitializer()?.getText()\n  //   if (value) {\n  //     const valueWithColorMapping = applyColorMapping(\n  //       value.replace(/\"/g, \"\"),\n  //       baseColor.inlineColors\n  //     )\n  //     jsxAttribute.setInitializer(`\"${valueWithColorMapping}\"`)\n  //   }\n  // }\n  sourceFile.getDescendantsOfKind(SyntaxKind.StringLiteral).forEach((node) => {\n    const raw = node.getLiteralText()\n    const mapped = applyColorMapping(raw, baseColor.inlineColors).trim()\n    if (mapped !== raw) {\n      node.setLiteralValue(mapped)\n    }\n  })\n\n  return sourceFile\n}\n\n// export default function transformer(file: FileInfo, api: API) {\n//   const j = api.jscodeshift.withParser(\"tsx\")\n\n//   // Replace bg-background with \"bg-white dark:bg-slate-950\"\n//   const $j = j(file.source)\n//   return $j\n//     .find(j.JSXAttribute, {\n//       name: {\n//         name: \"className\",\n//       },\n//     })\n//     .forEach((path) => {\n//       const { node } = path\n//       if (node?.value?.type) {\n//         if (node.value.type === \"StringLiteral\") {\n//           node.value.value = applyColorMapping(node.value.value)\n//           console.log(node.value.value)\n//         }\n\n//         if (\n//           node.value.type === \"JSXExpressionContainer\" &&\n//           node.value.expression.type === \"CallExpression\"\n//         ) {\n//           const callee = node.value.expression.callee\n//           if (callee.type === \"Identifier\" && callee.name === \"cn\") {\n//             node.value.expression.arguments.forEach((arg) => {\n//               if (arg.type === \"StringLiteral\") {\n//                 arg.value = applyColorMapping(arg.value)\n//               }\n\n//               if (\n//                 arg.type === \"LogicalExpression\" &&\n//                 arg.right.type === \"StringLiteral\"\n//               ) {\n//                 arg.right.value = applyColorMapping(arg.right.value)\n//               }\n//             })\n//           }\n//         }\n//       }\n//     })\n//     .toSource()\n// }\n\n// // export function splitClassName(input: string): (string | null)[] {\n// //   const parts = input.split(\":\")\n// //   const classNames = parts.map((part) => {\n// //     const match = part.match(/^\\[?(.+)\\]$/)\n// //     if (match) {\n// //       return match[1]\n// //     } else {\n// //       return null\n// //     }\n// //   })\n\n// //   return classNames\n// // }\n\n// Splits a className into [variant, name, alpha].\n// eg. hover:bg-primary-100 -> [hover, bg-primary, 100]\n// eg. sm:group-data-[size=default]/alert-dialog-content:text-left -> [sm:group-data-[size=default]/alert-dialog-content, text-left, null]\nexport function splitClassName(className: string): (string | null)[] {\n  if (!className.includes(\"/\") && !className.includes(\":\")) {\n    return [null, className, null]\n  }\n\n  // Find the last colon that's not inside brackets to split variant from name.\n  let lastColonIndex = -1\n  let bracketDepth = 0\n  for (let i = className.length - 1; i >= 0; i--) {\n    const char = className[i]\n    if (char === \"]\") bracketDepth++\n    else if (char === \"[\") bracketDepth--\n    else if (char === \":\" && bracketDepth === 0) {\n      lastColonIndex = i\n      break\n    }\n  }\n\n  let variant: string | null = null\n  let nameWithAlpha: string\n\n  if (lastColonIndex === -1) {\n    // No colon outside brackets, entire string is the name (possibly with alpha).\n    nameWithAlpha = className\n  } else {\n    variant = className.slice(0, lastColonIndex)\n    nameWithAlpha = className.slice(lastColonIndex + 1)\n  }\n\n  // Now split nameWithAlpha by \"/\" for alpha modifier.\n  // Alpha modifiers are numeric (e.g., /50) or arbitrary (e.g., /[50%]).\n  // Named groups like /alert-dialog-content would have been part of variant.\n  const slashIndex = nameWithAlpha.lastIndexOf(\"/\")\n  if (slashIndex === -1) {\n    return [variant, nameWithAlpha, null]\n  }\n\n  const name = nameWithAlpha.slice(0, slashIndex)\n  const alpha = nameWithAlpha.slice(slashIndex + 1)\n\n  return [variant, name, alpha]\n}\n\nconst PREFIXES = [\"bg-\", \"text-\", \"border-\", \"ring-offset-\", \"ring-\"]\n\nexport function applyColorMapping(\n  input: string,\n  mapping: z.infer<typeof registryBaseColorSchema>[\"inlineColors\"]\n) {\n  // Handle border classes.\n  if (input.includes(\" border \")) {\n    input = input.replace(\" border \", \" border border-border \")\n  }\n\n  // Build color mappings.\n  const classNames = input.split(\" \")\n  const lightMode = new Set<string>()\n  const darkMode = new Set<string>()\n  for (let className of classNames) {\n    const [variant, value, modifier] = splitClassName(className)\n    const prefix = PREFIXES.find((prefix) => value?.startsWith(prefix))\n    if (!prefix) {\n      if (!lightMode.has(className)) {\n        lightMode.add(className)\n      }\n      continue\n    }\n\n    const needle = value?.replace(prefix, \"\")\n    if (needle && needle in mapping.light) {\n      lightMode.add(\n        [variant, `${prefix}${mapping.light[needle]}`]\n          .filter(Boolean)\n          .join(\":\") + (modifier ? `/${modifier}` : \"\")\n      )\n\n      darkMode.add(\n        [\"dark\", variant, `${prefix}${mapping.dark[needle]}`]\n          .filter(Boolean)\n          .join(\":\") + (modifier ? `/${modifier}` : \"\")\n      )\n      continue\n    }\n\n    if (!lightMode.has(className)) {\n      lightMode.add(className)\n    }\n  }\n\n  return [...Array.from(lightMode), ...Array.from(darkMode)].join(\" \").trim()\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-font.test.ts",
    "content": "import { promises as fs } from \"fs\"\nimport os from \"os\"\nimport path from \"path\"\nimport { afterEach, describe, expect, test } from \"vitest\"\n\nimport { transform } from \".\"\nimport { createConfig } from \"../get-config\"\nimport { transformFont } from \"./transform-font\"\n\nconst tempDirs: string[] = []\n\nasync function createTestConfig(cssContent: string) {\n  const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), \"shadcn-font-\"))\n  tempDirs.push(tempDir)\n\n  const tailwindCss = path.join(tempDir, \"globals.css\")\n  await fs.writeFile(tailwindCss, cssContent, \"utf8\")\n\n  return createConfig({\n    tailwind: {\n      baseColor: \"neutral\",\n    },\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n    },\n    resolvedPaths: {\n      cwd: tempDir,\n      tailwindCss,\n    },\n  })\n}\n\nafterEach(async () => {\n  await Promise.all(\n    tempDirs\n      .splice(0)\n      .map((dir) => fs.rm(dir, { recursive: true, force: true }))\n  )\n})\n\ndescribe(\"transformFont\", () => {\n  test(\"does not rewrite cn-font-heading unless transformFont is explicitly included\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Component() {\n  return <h2 className=\"cn-font-heading text-xl\" />\n}`,\n      config: await createTestConfig(\n        `@theme inline { --font-heading: var(--font-heading); }`\n      ),\n    })\n\n    expect(result).toContain('className=\"cn-font-heading text-xl\"')\n  })\n\n  test(\"rewrites cn-font-heading to font-heading when the project supports it\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <h2 className=\"cn-font-heading text-xl\" />\n}`,\n        config: await createTestConfig(\n          `@theme inline { --font-heading: var(--font-heading); }`\n        ),\n      },\n      [transformFont]\n    )\n\n    expect(result).toContain('className=\"font-heading text-xl\"')\n    expect(result).not.toContain(\"cn-font-heading\")\n  })\n\n  test(\"removes cn-font-heading when the project does not support it\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <h2 className=\"cn-font-heading text-xl\" />\n}`,\n        config: await createTestConfig(\n          `@theme inline { --font-sans: var(--font-sans); }`\n        ),\n      },\n      [transformFont]\n    )\n\n    expect(result).toContain('className=\"text-xl\"')\n    expect(result).not.toContain(\"font-heading\")\n    expect(result).not.toContain(\"cn-font-heading\")\n  })\n\n  test(\"rewrites cn-font-heading inside cva and mergeProps calls\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import { cva } from \"class-variance-authority\"\nconst title = cva(\"cn-font-heading text-xl\", {\n  variants: {\n    size: {\n      sm: \"cn-font-heading text-sm\",\n    },\n  },\n})\n\nexport function Component(props) {\n  return mergeProps({ className: \"cn-font-heading\" }, props)\n}`,\n        config: await createTestConfig(\n          `@theme inline { --font-heading: var(--font-heading); }`\n        ),\n      },\n      [transformFont]\n    )\n\n    expect(result).toContain('cva(\"font-heading text-xl\"')\n    expect(result).toContain('\"font-heading text-sm\"')\n    expect(result).toContain('{ className: \"font-heading\" }')\n  })\n\n  test(\"rewrites cn-font-heading when the current install adds heading font support\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <h2 className=\"cn-font-heading text-xl\" />\n}`,\n        config: await createTestConfig(\n          `@theme inline { --font-sans: var(--font-sans); }`\n        ),\n        supportedFontMarkers: [\"cn-font-heading\"],\n      },\n      [transformFont]\n    )\n\n    expect(result).toContain('className=\"font-heading text-xl\"')\n    expect(result).not.toContain(\"cn-font-heading\")\n  })\n\n  test(\"removes an empty className attribute when it only contains cn-font-heading\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nexport function Component() {\n  return <h2 className=\"cn-font-heading\" />\n}`,\n        config: await createTestConfig(\n          `@theme inline { --font-sans: var(--font-sans); }`\n        ),\n      },\n      [transformFont]\n    )\n\n    expect(result).toContain(\"<h2 />\")\n    expect(result).not.toContain(\"className\")\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-font.ts",
    "content": "import { promises as fs } from \"fs\"\nimport { Transformer } from \"@/src/utils/transformers\"\nimport {\n  Node,\n  NoSubstitutionTemplateLiteral,\n  StringLiteral,\n  SyntaxKind,\n} from \"ts-morph\"\n\nconst FONT_MARKERS = [\n  {\n    marker: \"cn-font-heading\",\n    utility: \"font-heading\",\n    supportToken: \"--font-heading:\",\n  },\n] as const\n\nconst MARKER_REGEX = /\\bcn-font-heading\\b/\nconst supportCache = new Map<string, Promise<Set<string>>>()\n\ntype StringLikeLiteral = StringLiteral | NoSubstitutionTemplateLiteral\n\nasync function getSupportedFontMarkers(\n  tailwindCssPath?: string,\n  extraMarkers: string[] = []\n) {\n  const supported = new Set(extraMarkers)\n\n  if (!tailwindCssPath) {\n    return supported\n  }\n\n  let cached = supportCache.get(tailwindCssPath)\n  if (!cached) {\n    cached = fs\n      .readFile(tailwindCssPath, \"utf8\")\n      .then((content) => {\n        const projectMarkers = new Set<string>()\n\n        for (const marker of FONT_MARKERS) {\n          if (content.includes(marker.supportToken)) {\n            projectMarkers.add(marker.marker)\n          }\n        }\n\n        return projectMarkers\n      })\n      .catch(() => new Set<string>())\n\n    supportCache.set(tailwindCssPath, cached)\n  }\n\n  ;(await cached).forEach((marker) => {\n    supported.add(marker)\n  })\n\n  return supported\n}\n\nfunction rewriteFontMarkers(\n  className: string,\n  supportedMarkers: Set<string>\n): string {\n  let next = className\n\n  for (const marker of FONT_MARKERS) {\n    if (!next.includes(marker.marker)) {\n      continue\n    }\n\n    next = next.replace(\n      new RegExp(`\\\\b${marker.marker}\\\\b`, \"g\"),\n      supportedMarkers.has(marker.marker) ? marker.utility : \"\"\n    )\n  }\n\n  return next.replace(/\\s+/g, \" \").trim()\n}\n\nfunction processStringLiteral(\n  node: StringLikeLiteral,\n  supportedMarkers: Set<string>\n) {\n  const currentValue = node.getLiteralValue()\n  if (!MARKER_REGEX.test(currentValue)) {\n    return\n  }\n\n  const newValue = rewriteFontMarkers(currentValue, supportedMarkers)\n  if (newValue !== currentValue) {\n    node.setLiteralValue(newValue)\n  }\n}\n\nfunction processStringLiterals(node: Node, supportedMarkers: Set<string>) {\n  for (const stringLit of node.getDescendantsOfKind(SyntaxKind.StringLiteral)) {\n    processStringLiteral(stringLit, supportedMarkers)\n  }\n\n  for (const templateLit of node.getDescendantsOfKind(\n    SyntaxKind.NoSubstitutionTemplateLiteral\n  )) {\n    processStringLiteral(templateLit, supportedMarkers)\n  }\n}\n\nexport const transformFont: Transformer = async ({\n  sourceFile,\n  config,\n  supportedFontMarkers,\n}) => {\n  const supportedMarkers = await getSupportedFontMarkers(\n    config.resolvedPaths.tailwindCss,\n    supportedFontMarkers\n  )\n\n  const attributesToRemove: ReturnType<\n    typeof sourceFile.getDescendantsOfKind<typeof SyntaxKind.JsxAttribute>\n  > = []\n\n  for (const attr of sourceFile.getDescendantsOfKind(SyntaxKind.JsxAttribute)) {\n    const attrName = attr.getNameNode().getText()\n    if (attrName !== \"className\" && attrName !== \"classNames\") {\n      continue\n    }\n\n    const initializer = attr.getInitializer()\n\n    if (initializer?.isKind(SyntaxKind.StringLiteral)) {\n      const currentValue = initializer.getLiteralValue()\n      if (MARKER_REGEX.test(currentValue)) {\n        const newValue = rewriteFontMarkers(currentValue, supportedMarkers)\n        if (newValue === \"\") {\n          attributesToRemove.push(attr)\n        } else if (newValue !== currentValue) {\n          initializer.setLiteralValue(newValue)\n        }\n      }\n    }\n\n    if (initializer?.isKind(SyntaxKind.JsxExpression)) {\n      processStringLiterals(initializer, supportedMarkers)\n    }\n  }\n\n  for (const attr of attributesToRemove) {\n    attr.remove()\n  }\n\n  for (const call of sourceFile.getDescendantsOfKind(\n    SyntaxKind.CallExpression\n  )) {\n    if (call.getExpression().getText() === \"cva\") {\n      for (const arg of call.getArguments()) {\n        if (arg.isKind(SyntaxKind.StringLiteral)) {\n          processStringLiteral(arg, supportedMarkers)\n          continue\n        }\n        if (arg.isKind(SyntaxKind.NoSubstitutionTemplateLiteral)) {\n          processStringLiteral(arg, supportedMarkers)\n          continue\n        }\n        processStringLiterals(arg, supportedMarkers)\n      }\n      continue\n    }\n\n    if (call.getExpression().getText() === \"mergeProps\") {\n      processStringLiterals(call, supportedMarkers)\n    }\n  }\n\n  return sourceFile\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-icons.test.ts",
    "content": "import { type Config } from \"@/src/utils/get-config\"\nimport { transformIcons } from \"@/src/utils/transformers/transform-icons\"\nimport { describe, expect, test } from \"vitest\"\n\nimport { transform } from \".\"\n\nconst testConfig: Config = {\n  style: \"new-york\",\n  tsx: true,\n  rsc: true,\n  tailwind: {\n    baseColor: \"neutral\",\n    cssVariables: true,\n    config: \"\",\n    css: \"tailwind.css\",\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \"/\",\n    components: \"/components\",\n    utils: \"/lib/utils\",\n    ui: \"/ui\",\n    lib: \"/lib\",\n    hooks: \"/hooks\",\n    tailwindConfig: \"\",\n    tailwindCss: \"tailwind.css\",\n  },\n}\n\ndescribe(\"transformIconPlaceholder\", () => {\n  describe(\"lucide library\", () => {\n    test(\"transforms IconPlaceholder to icon component\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <div><IconPlaceholder lucide=\"CheckIcon\" /></div>\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"lucide\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { CheckIcon } from \"lucide-react\"\n\n        export function Component() {\n          return <div><CheckIcon /></div>\n        }\"\n      `)\n    })\n\n    test(\"preserves className and other props\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder lucide=\"CheckIcon\" className=\"size-4\" aria-label=\"check\" />\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"lucide\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { CheckIcon } from \"lucide-react\"\n\n        export function Component() {\n          return <CheckIcon className=\"size-4\" aria-label=\"check\" />\n        }\"\n      `)\n    })\n\n    test(\"handles multiple icons\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return (\n    <div>\n      <IconPlaceholder lucide=\"CheckIcon\" />\n      <IconPlaceholder lucide=\"ArrowDownIcon\" />\n    </div>\n  )\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"lucide\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { CheckIcon, ArrowDownIcon } from \"lucide-react\"\n\n        export function Component() {\n          return (\n            <div>\n              <CheckIcon />\n              <ArrowDownIcon />\n            </div>\n          )\n        }\"\n      `)\n    })\n\n    test(\"preserves semicolons\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\";\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\";\n\nexport function Component() {\n  return <IconPlaceholder lucide=\"CheckIcon\" />;\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"lucide\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\";\n        import { CheckIcon } from \"lucide-react\";\n\n        export function Component() {\n          return <CheckIcon />;\n        }\"\n      `)\n    })\n  })\n\n  describe(\"tabler library\", () => {\n    test(\"transforms IconPlaceholder to icon component\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <div><IconPlaceholder tabler=\"IconCheck\" /></div>\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"tabler\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { IconCheck } from \"@tabler/icons-react\"\n\n        export function Component() {\n          return <div><IconCheck /></div>\n        }\"\n      `)\n    })\n\n    test(\"preserves className and other props\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder tabler=\"IconCheck\" className=\"size-4\" aria-label=\"check\" />\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"tabler\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { IconCheck } from \"@tabler/icons-react\"\n\n        export function Component() {\n          return <IconCheck className=\"size-4\" aria-label=\"check\" />\n        }\"\n      `)\n    })\n\n    test(\"handles multiple icons\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return (\n    <div>\n      <IconPlaceholder tabler=\"IconCheck\" />\n      <IconPlaceholder tabler=\"IconArrowDown\" />\n    </div>\n  )\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"tabler\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { IconCheck, IconArrowDown } from \"@tabler/icons-react\"\n\n        export function Component() {\n          return (\n            <div>\n              <IconCheck />\n              <IconArrowDown />\n            </div>\n          )\n        }\"\n      `)\n    })\n\n    test(\"preserves semicolons\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\";\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\";\n\nexport function Component() {\n  return <IconPlaceholder tabler=\"IconCheck\" />;\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"tabler\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\";\n        import { IconCheck } from \"@tabler/icons-react\";\n\n        export function Component() {\n          return <IconCheck />;\n        }\"\n      `)\n    })\n  })\n\n  describe(\"hugeicons library\", () => {\n    test(\"transforms IconPlaceholder to HugeiconsIcon wrapper\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <div><IconPlaceholder hugeicons=\"Tick02Icon\" /></div>\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"hugeicons\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { HugeiconsIcon } from \"@hugeicons/react\"\n        import { Tick02Icon } from \"@hugeicons/core-free-icons\"\n\n        export function Component() {\n          return <div><HugeiconsIcon icon={Tick02Icon} strokeWidth={2} /></div>\n        }\"\n      `)\n    })\n\n    test(\"preserves className and other props\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder hugeicons=\"Tick02Icon\" className=\"size-4\" />\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"hugeicons\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { HugeiconsIcon } from \"@hugeicons/react\"\n        import { Tick02Icon } from \"@hugeicons/core-free-icons\"\n\n        export function Component() {\n          return <HugeiconsIcon icon={Tick02Icon} strokeWidth={2} className=\"size-4\" />\n        }\"\n      `)\n    })\n\n    test(\"does not add strokeWidth if already present\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder hugeicons=\"Tick02Icon\" strokeWidth={4} />\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"hugeicons\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { HugeiconsIcon } from \"@hugeicons/react\"\n        import { Tick02Icon } from \"@hugeicons/core-free-icons\"\n\n        export function Component() {\n          return <HugeiconsIcon icon={Tick02Icon} strokeWidth={4} />\n        }\"\n      `)\n    })\n\n    test(\"handles multiple icons\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return (\n    <div>\n      <IconPlaceholder hugeicons=\"Tick02Icon\" />\n      <IconPlaceholder hugeicons=\"ArrowDown02Icon\" />\n    </div>\n  )\n}`,\n            config: {\n              ...testConfig,\n              iconLibrary: \"hugeicons\",\n            },\n          },\n          [transformIcons]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n        import { HugeiconsIcon } from \"@hugeicons/react\"\n        import { Tick02Icon, ArrowDown02Icon } from \"@hugeicons/core-free-icons\"\n\n        export function Component() {\n          return (\n            <div>\n              <HugeiconsIcon icon={Tick02Icon} strokeWidth={2} />\n              <HugeiconsIcon icon={ArrowDown02Icon} strokeWidth={2} />\n            </div>\n          )\n        }\"\n      `)\n    })\n  })\n\n  test(\"does not transform when iconLibrary is not set\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder lucide=\"CheckIcon\" />\n}`,\n          config: testConfig,\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\n      export function Component() {\n        return <IconPlaceholder lucide=\"CheckIcon\" />\n      }\"\n    `)\n  })\n\n  test(\"skips icons when library prop is not provided\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder tabler=\"IconCheck\" />\n}`,\n          config: {\n            ...testConfig,\n            iconLibrary: \"lucide\",\n          },\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n\n      export function Component() {\n        return <IconPlaceholder tabler=\"IconCheck\" />\n      }\"\n    `)\n  })\n\n  test(\"handles props with spaces in values\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder lucide=\"CheckIcon\" aria-label=\"check icon here\" className=\"size-4\" />\n}`,\n          config: {\n            ...testConfig,\n            iconLibrary: \"lucide\",\n          },\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { CheckIcon } from \"lucide-react\"\n\n      export function Component() {\n        return <CheckIcon aria-label=\"check icon here\" className=\"size-4\" />\n      }\"\n    `)\n  })\n\n  test(\"no extra spacing when no user props - lucide\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder lucide=\"CheckIcon\" />\n}`,\n          config: {\n            ...testConfig,\n            iconLibrary: \"lucide\",\n          },\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { CheckIcon } from \"lucide-react\"\n\n      export function Component() {\n        return <CheckIcon />\n      }\"\n    `)\n  })\n\n  test(\"no extra spacing when no user props - hugeicons\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder hugeicons=\"Tick02Icon\" />\n}`,\n          config: {\n            ...testConfig,\n            iconLibrary: \"hugeicons\",\n          },\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { HugeiconsIcon } from \"@hugeicons/react\"\n      import { Tick02Icon } from \"@hugeicons/core-free-icons\"\n\n      export function Component() {\n        return <HugeiconsIcon icon={Tick02Icon} strokeWidth={2} />\n      }\"\n    `)\n  })\n\n  test(\"removes IconPlaceholder import after transformation\", async () => {\n    const result = await transform(\n      {\n        filename: \"test.tsx\",\n        raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder lucide=\"CheckIcon\" />\n}`,\n        config: {\n          ...testConfig,\n          iconLibrary: \"lucide\",\n        },\n      },\n      [transformIcons]\n    )\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { CheckIcon } from \"lucide-react\"\n\n      export function Component() {\n        return <CheckIcon />\n      }\"\n    `)\n  })\n\n  test(\"does not transform for invalid icon library\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder lucide=\"CheckIcon\" />\n}`,\n          config: {\n            ...testConfig,\n            iconLibrary: \"invalid-library\",\n          },\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\n      export function Component() {\n        return <IconPlaceholder lucide=\"CheckIcon\" />\n      }\"\n    `)\n  })\n\n  test(\"does not forward library-specific props (lucide)\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder lucide=\"CheckIcon\" tabler=\"IconCheck\" hugeicons=\"Tick02Icon\" className=\"size-4\" />\n}`,\n          config: {\n            ...testConfig,\n            iconLibrary: \"lucide\",\n          },\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { CheckIcon } from \"lucide-react\"\n\n      export function Component() {\n        return <CheckIcon className=\"size-4\" />\n      }\"\n    `)\n  })\n\n  test(\"does not forward library-specific props (tabler)\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder tabler=\"IconCheck\" lucide=\"CheckIcon\" hugeicons=\"Tick02Icon\" className=\"size-4\" />\n}`,\n          config: {\n            ...testConfig,\n            iconLibrary: \"tabler\",\n          },\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { IconCheck } from \"@tabler/icons-react\"\n\n      export function Component() {\n        return <IconCheck className=\"size-4\" />\n      }\"\n    `)\n  })\n\n  test(\"does not forward library-specific props (hugeicons)\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\nimport { IconPlaceholder } from \"@/app/(create)/create/components/icon-placeholder\"\n\nexport function Component() {\n  return <IconPlaceholder hugeicons=\"Tick02Icon\" lucide=\"CheckIcon\" tabler=\"IconCheck\" className=\"size-4\" />\n}`,\n          config: {\n            ...testConfig,\n            iconLibrary: \"hugeicons\",\n          },\n        },\n        [transformIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { HugeiconsIcon } from \"@hugeicons/react\"\n      import { Tick02Icon } from \"@hugeicons/core-free-icons\"\n\n      export function Component() {\n        return <HugeiconsIcon icon={Tick02Icon} strokeWidth={2} className=\"size-4\" />\n      }\"\n    `)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-icons.ts",
    "content": "import { iconLibraries, type IconLibraryName } from \"@/src/icons/libraries\"\nimport { Transformer } from \"@/src/utils/transformers\"\nimport { SourceFile, SyntaxKind } from \"ts-morph\"\n\nexport const transformIcons: Transformer = async ({ sourceFile, config }) => {\n  const iconLibrary = config.iconLibrary\n\n  // Fail silently if the icon library is not supported.\n  // This is for legacy icon libraries.\n  if (!iconLibrary || !(iconLibrary in iconLibraries)) {\n    return sourceFile\n  }\n\n  const targetLibrary = iconLibrary as IconLibraryName\n  const libraryConfig = iconLibraries[targetLibrary]\n  let transformedIcons: string[] = []\n\n  for (const element of sourceFile.getDescendantsOfKind(\n    SyntaxKind.JsxSelfClosingElement\n  )) {\n    if (element.getTagNameNode()?.getText() !== \"IconPlaceholder\") {\n      continue\n    }\n\n    // Find the library-specific prop (e.g., \"lucide\", \"tabler\", \"hugeicons\")\n    const libraryPropAttr = element.getAttributes().find((attr) => {\n      if (attr.getKind() !== SyntaxKind.JsxAttribute) {\n        return false\n      }\n      const jsxAttr = attr.asKindOrThrow(SyntaxKind.JsxAttribute)\n      return jsxAttr.getNameNode().getText() === targetLibrary\n    })\n\n    if (!libraryPropAttr) {\n      continue // No icon specified for this library\n    }\n\n    const jsxIconAttr = libraryPropAttr.asKindOrThrow(SyntaxKind.JsxAttribute)\n    const targetIconName = jsxIconAttr\n      .getInitializer()\n      ?.getText()\n      .replace(/^[\"']|[\"']$/g, \"\")\n\n    if (!targetIconName) {\n      continue\n    }\n\n    if (!transformedIcons.includes(targetIconName)) {\n      transformedIcons.push(targetIconName)\n    }\n\n    const usage = libraryConfig.usage\n    const usageMatch = usage.match(/<(\\w+)([^>]*)\\s*\\/>/)\n\n    // Remove the library-specific prop\n    jsxIconAttr.remove()\n\n    // Remove all other library-specific props\n    for (const attr of element.getAttributes()) {\n      if (attr.getKind() !== SyntaxKind.JsxAttribute) {\n        continue\n      }\n      const jsxAttr = attr.asKindOrThrow(SyntaxKind.JsxAttribute)\n      const attrName = jsxAttr.getNameNode().getText()\n      // Filter out library-specific props (lucide, tabler, hugeicons, etc.)\n      if (attrName in iconLibraries) {\n        jsxAttr.remove()\n      }\n    }\n\n    if (!usageMatch) {\n      element.getTagNameNode()?.replaceWithText(targetIconName)\n      continue\n    }\n\n    const [, componentName, defaultPropsStr] = usageMatch\n\n    if (componentName === \"ICON\") {\n      // Get remaining user attributes (non-library props)\n      const userAttributes = element\n        .getAttributes()\n        .filter((attr) => {\n          if (attr.getKind() !== SyntaxKind.JsxAttribute) {\n            return true\n          }\n          const jsxAttr = attr.asKindOrThrow(SyntaxKind.JsxAttribute)\n          const attrName = jsxAttr.getNameNode().getText()\n          // Filter out library-specific props (lucide, tabler, hugeicons, etc.)\n          return !(attrName in iconLibraries)\n        })\n        .map((attr) => attr.getText())\n        .join(\" \")\n\n      if (userAttributes.trim()) {\n        element.replaceWithText(`<${targetIconName} ${userAttributes} />`)\n      } else {\n        element.getTagNameNode()?.replaceWithText(targetIconName)\n      }\n    } else {\n      const existingPropNames = new Set(\n        element\n          .getAttributes()\n          .filter((attr) => attr.getKind() === SyntaxKind.JsxAttribute)\n          .map((attr) =>\n            attr.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()\n          )\n      )\n\n      // Replace ICON placeholder in defaultPropsStr with actual icon name\n      const defaultPropsWithIcon = defaultPropsStr.replace(\n        /\\{ICON\\}/g,\n        `{${targetIconName}}`\n      )\n\n      const defaultPropsToAdd = defaultPropsWithIcon\n        .trim()\n        .split(/\\s+(?=\\w+=)/)\n        .filter((prop) => prop)\n        .map((prop) => {\n          const propName = prop.split(\"=\")[0]\n          return propName && !existingPropNames.has(propName) ? prop : null\n        })\n        .filter(Boolean)\n\n      const userAttributes = element\n        .getAttributes()\n        .filter((attr) => {\n          if (attr.getKind() !== SyntaxKind.JsxAttribute) {\n            return true\n          }\n          const jsxAttr = attr.asKindOrThrow(SyntaxKind.JsxAttribute)\n          const attrName = jsxAttr.getNameNode().getText()\n          // Filter out library-specific props (lucide, tabler, hugeicons, etc.)\n          return !(attrName in iconLibraries)\n        })\n        .map((attr) => attr.getText())\n        .join(\" \")\n\n      const allProps = [...defaultPropsToAdd, userAttributes]\n        .filter(Boolean)\n        .join(\" \")\n\n      element.replaceWithText(`<${componentName} ${allProps} />`)\n    }\n  }\n\n  for (const importDeclaration of sourceFile.getImportDeclarations() ?? []) {\n    const moduleSpecifier = importDeclaration.getModuleSpecifier()?.getText()\n    if (moduleSpecifier?.includes(\"icon-placeholder\")) {\n      const namedImports = importDeclaration.getNamedImports() ?? []\n      const iconPlaceholderImport = namedImports.find(\n        (specifier) => specifier.getName() === \"IconPlaceholder\"\n      )\n\n      if (iconPlaceholderImport) {\n        iconPlaceholderImport.remove()\n      }\n\n      if (importDeclaration.getNamedImports()?.length === 0) {\n        importDeclaration.remove()\n      }\n    }\n  }\n\n  if (transformedIcons.length > 0) {\n    const importStatements = libraryConfig.import.split(\"\\n\")\n    const addedImports = []\n\n    for (const importStmt of importStatements) {\n      const importMatch = importStmt.match(\n        /import\\s+{([^}]+)}\\s+from\\s+['\"]([^'\"]+)['\"]/\n      )\n\n      if (!importMatch) continue\n\n      const [, importedNames, modulePath] = importMatch\n      const namedImports = importedNames\n        .split(\",\")\n        .map((name) => name.trim())\n        .map((name) => {\n          if (name === \"ICON\") {\n            return transformedIcons.map((icon) => ({ name: icon }))\n          }\n          return { name }\n        })\n        .flat()\n\n      const newImport = sourceFile.addImportDeclaration({\n        moduleSpecifier: modulePath,\n        namedImports,\n      })\n\n      addedImports.push(newImport)\n    }\n\n    if (!_useSemicolon(sourceFile)) {\n      for (const importDecl of addedImports) {\n        importDecl.replaceWithText(importDecl.getText().replace(\";\", \"\"))\n      }\n    }\n  }\n\n  return sourceFile\n}\n\nfunction _useSemicolon(sourceFile: SourceFile) {\n  return (\n    sourceFile.getImportDeclarations()?.[0]?.getText().endsWith(\";\") ?? false\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-import.ts",
    "content": "import { Config } from \"@/src/utils/get-config\"\nimport { Transformer } from \"@/src/utils/transformers\"\nimport { SyntaxKind } from \"ts-morph\"\n\nexport const transformImport: Transformer = async ({\n  sourceFile,\n  config,\n  isRemote,\n}) => {\n  const utilsAlias = config.aliases?.utils\n  const workspaceAlias =\n    typeof utilsAlias === \"string\" && utilsAlias.includes(\"/\")\n      ? utilsAlias.split(\"/\")[0]\n      : \"@\"\n  const utilsImport = `${workspaceAlias}/lib/utils`\n\n  if (![\".tsx\", \".ts\", \".jsx\", \".js\"].includes(sourceFile.getExtension())) {\n    return sourceFile\n  }\n\n  for (const specifier of sourceFile.getImportStringLiterals()) {\n    const updated = updateImportAliases(\n      specifier.getLiteralValue(),\n      config,\n      isRemote\n    )\n    specifier.setLiteralValue(updated)\n\n    // Replace `import { cn } from \"@/lib/utils\"`\n    if (utilsImport === updated || updated === \"@/lib/utils\") {\n      const importDeclaration = specifier.getFirstAncestorByKind(\n        SyntaxKind.ImportDeclaration\n      )\n      const isCnImport = importDeclaration\n        ?.getNamedImports()\n        .some((namedImport) => namedImport.getName() === \"cn\")\n\n      if (!isCnImport || !config.aliases.utils) {\n        continue\n      }\n\n      specifier.setLiteralValue(\n        utilsImport === updated\n          ? updated.replace(utilsImport, config.aliases.utils)\n          : config.aliases.utils\n      )\n    }\n  }\n\n  return sourceFile\n}\n\nfunction updateImportAliases(\n  moduleSpecifier: string,\n  config: Config,\n  isRemote: boolean = false\n) {\n  // Not a local import.\n  if (!moduleSpecifier.startsWith(\"@/\") && !isRemote) {\n    return moduleSpecifier\n  }\n\n  // This treats the remote as coming from a faux registry.\n  if (isRemote && moduleSpecifier.startsWith(\"@/\")) {\n    moduleSpecifier = moduleSpecifier.replace(/^@\\//, `@/registry/new-york/`)\n  }\n\n  // Not a registry import.\n  if (!moduleSpecifier.startsWith(\"@/registry/\")) {\n    // We fix the alias and return.\n    const alias = config.aliases.components.split(\"/\")[0]\n    return moduleSpecifier.replace(/^@\\//, `${alias}/`)\n  }\n\n  if (moduleSpecifier.match(/^@\\/registry\\/(.+)\\/ui/)) {\n    return moduleSpecifier.replace(\n      /^@\\/registry\\/(.+)\\/ui/,\n      config.aliases.ui ?? `${config.aliases.components}/ui`\n    )\n  }\n\n  if (\n    config.aliases.components &&\n    moduleSpecifier.match(/^@\\/registry\\/(.+)\\/components/)\n  ) {\n    return moduleSpecifier.replace(\n      /^@\\/registry\\/(.+)\\/components/,\n      config.aliases.components\n    )\n  }\n\n  if (config.aliases.lib && moduleSpecifier.match(/^@\\/registry\\/(.+)\\/lib/)) {\n    return moduleSpecifier.replace(\n      /^@\\/registry\\/(.+)\\/lib/,\n      config.aliases.lib\n    )\n  }\n\n  if (\n    config.aliases.hooks &&\n    moduleSpecifier.match(/^@\\/registry\\/(.+)\\/hooks/)\n  ) {\n    return moduleSpecifier.replace(\n      /^@\\/registry\\/(.+)\\/hooks/,\n      config.aliases.hooks\n    )\n  }\n\n  return moduleSpecifier.replace(\n    /^@\\/registry\\/[^/]+/,\n    config.aliases.components\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-jsx.ts",
    "content": "import { type Transformer } from \"@/src/utils/transformers\"\nimport { transformFromAstSync } from \"@babel/core\"\nimport { parse, ParserOptions } from \"@babel/parser\"\n// @ts-ignore\nimport transformTypescript from \"@babel/plugin-transform-typescript\"\nimport * as recast from \"recast\"\n\n// TODO.\n// I'm using recast for the AST here.\n// Figure out if ts-morph AST is compatible with Babel.\n\n// This is a copy of the babel options from recast/parser.\n// The goal here is to tolerate as much syntax as possible.\n// We want to be able to parse any valid tsx code.\n// See https://github.com/benjamn/recast/blob/master/parsers/_babel_options.ts.\nconst PARSE_OPTIONS: ParserOptions = {\n  sourceType: \"module\",\n  allowImportExportEverywhere: true,\n  allowReturnOutsideFunction: true,\n  startLine: 1,\n  tokens: true,\n  plugins: [\n    \"asyncGenerators\",\n    \"bigInt\",\n    \"classPrivateMethods\",\n    \"classPrivateProperties\",\n    \"classProperties\",\n    \"classStaticBlock\",\n    \"decimal\",\n    \"decorators-legacy\",\n    \"doExpressions\",\n    \"dynamicImport\",\n    \"exportDefaultFrom\",\n    \"exportNamespaceFrom\",\n    \"functionBind\",\n    \"functionSent\",\n    \"importAssertions\",\n    \"importMeta\",\n    \"nullishCoalescingOperator\",\n    \"numericSeparator\",\n    \"objectRestSpread\",\n    \"optionalCatchBinding\",\n    \"optionalChaining\",\n    [\n      \"pipelineOperator\",\n      {\n        proposal: \"minimal\",\n      },\n    ],\n    [\n      \"recordAndTuple\",\n      {\n        syntaxType: \"hash\",\n      },\n    ],\n    \"throwExpressions\",\n    \"topLevelAwait\",\n    \"v8intrinsic\",\n    \"typescript\",\n    \"jsx\",\n  ],\n}\n\nexport const transformJsx: Transformer<string> = async ({\n  sourceFile,\n  config,\n}) => {\n  const output = sourceFile.getFullText()\n\n  if (config.tsx) {\n    return output\n  }\n\n  const ast = recast.parse(output, {\n    parser: {\n      parse: (code: string) => {\n        return parse(code, PARSE_OPTIONS)\n      },\n    },\n  })\n\n  const result = transformFromAstSync(ast, output, {\n    cloneInputAst: false,\n    code: false,\n    ast: true,\n    plugins: [transformTypescript],\n    configFile: false,\n  })\n\n  if (!result || !result.ast) {\n    throw new Error(\"Failed to transform JSX\")\n  }\n\n  return recast.print(result.ast).code\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-legacy-icons.test.ts",
    "content": "import { type Config } from \"@/src/utils/get-config\"\nimport { transformLegacyIcons } from \"@/src/utils/transformers/transform-legacy-icons\"\nimport { describe, expect, test, vi } from \"vitest\"\n\nimport { transform } from \"../transformers\"\n\nconst testConfig: Config = {\n  style: \"new-york\",\n  tsx: true,\n  rsc: true,\n  tailwind: {\n    baseColor: \"neutral\",\n    cssVariables: true,\n    config: \"tailwind.config.ts\",\n    css: \"tailwind.css\",\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \"/\",\n    components: \"/components\",\n    utils: \"/lib/utils\",\n    ui: \"/ui\",\n    lib: \"/lib\",\n    hooks: \"/hooks\",\n    tailwindConfig: \"tailwind.config.ts\",\n    tailwindCss: \"tailwind.css\",\n  },\n}\n\nvi.mock(\"@/src/registry/api\", () => ({\n  getRegistryIcons: () => ({\n    Check: {\n      lucide: \"Check\",\n      radix: \"CheckIcon\",\n    },\n    ChevronDown: {\n      lucide: \"ChevronDown\",\n      radix: \"ChevronDownIcon\",\n    },\n    ChevronLeft: {\n      lucide: \"ChevronLeft\",\n      radix: \"ChevronLeftIcon\",\n    },\n  }),\n}))\n\ndescribe(\"transformIcons\", () => {\n  test(\"transforms radix icons\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.ts\",\n          raw: `import * as React from \"react\"\nimport { Check } from \"lucide-react\"\n\nexport function Component() {\nreturn <div><Check /></div>\n}\n  `,\n          config: {\n            ...testConfig,\n            iconLibrary: \"radix\",\n          },\n        },\n        [transformLegacyIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n      import { CheckIcon } from \"@radix-ui/react-icons\"\n\n      export function Component() {\n      return <div><CheckIcon /></div>\n      }\n        \"\n    `)\n  })\n\n  test(\"does not transform lucide icons\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.ts\",\n          raw: `import * as React from \"react\"\nimport { Check } from \"lucide-react\"\n\nexport function Component() {\n  return <div><Check /></div>\n}\n    `,\n          config: {\n            ...testConfig,\n            iconLibrary: \"lucide\",\n          },\n        },\n        [transformLegacyIcons]\n      )\n    ).toMatchInlineSnapshot(`\n    \"import * as React from \"react\"\n    import { Check } from \"lucide-react\"\n\n    export function Component() {\n      return <div><Check /></div>\n    }\n        \"\n    `)\n  })\n\n  test(\"preserves semicolon\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.ts\",\n          raw: `import * as React from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport function Component() {\n  return <div><ChevronDown /></div>\n}\n    `,\n          config: {\n            ...testConfig,\n            iconLibrary: \"radix\",\n          },\n        },\n        [transformLegacyIcons]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\";\n      import { ChevronDownIcon } from \"@radix-ui/react-icons\";\n\n      export function Component() {\n        return <div><ChevronDownIcon /></div>\n      }\n          \"\n    `)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-legacy-icons.ts",
    "content": "import { getRegistryIcons } from \"@/src/registry/api\"\nimport { LEGACY_ICON_LIBRARIES } from \"@/src/utils/legacy-icon-libraries\"\nimport { Transformer } from \"@/src/utils/transformers\"\nimport { SourceFile, SyntaxKind } from \"ts-morph\"\n\n// Lucide is the default icon library in the registry.\nconst SOURCE_LIBRARY = \"lucide\"\n\nexport const transformLegacyIcons: Transformer = async ({\n  sourceFile,\n  config,\n}) => {\n  // No transform if we cannot read the icon library.\n  if (!config.iconLibrary || !(config.iconLibrary in LEGACY_ICON_LIBRARIES)) {\n    return sourceFile\n  }\n\n  const registryIcons = await getRegistryIcons()\n  const sourceLibrary = SOURCE_LIBRARY\n  const targetLibrary = config.iconLibrary\n\n  if (sourceLibrary === targetLibrary) {\n    return sourceFile\n  }\n\n  let targetedIcons: string[] = []\n  for (const importDeclaration of sourceFile.getImportDeclarations() ?? []) {\n    if (\n      importDeclaration.getModuleSpecifier()?.getText() !==\n      `\"${LEGACY_ICON_LIBRARIES[SOURCE_LIBRARY].import}\"`\n    ) {\n      continue\n    }\n\n    for (const specifier of importDeclaration.getNamedImports() ?? []) {\n      const iconName = specifier.getName()\n\n      const targetedIcon = registryIcons[iconName]?.[targetLibrary]\n\n      if (!targetedIcon || targetedIcons.includes(targetedIcon)) {\n        continue\n      }\n\n      targetedIcons.push(targetedIcon)\n\n      // Remove the named import.\n      specifier.remove()\n\n      // Replace with the targeted icon.\n      sourceFile\n        .getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement)\n        .filter((node) => node.getTagNameNode()?.getText() === iconName)\n        .forEach((node) => node.getTagNameNode()?.replaceWithText(targetedIcon))\n    }\n\n    // If the named import is empty, remove the import declaration.\n    if (importDeclaration.getNamedImports()?.length === 0) {\n      importDeclaration.remove()\n    }\n  }\n\n  if (targetedIcons.length > 0) {\n    const iconImportDeclaration = sourceFile.addImportDeclaration({\n      moduleSpecifier:\n        LEGACY_ICON_LIBRARIES[\n          targetLibrary as keyof typeof LEGACY_ICON_LIBRARIES\n        ]?.import,\n      namedImports: targetedIcons.map((icon) => ({\n        name: icon,\n      })),\n    })\n\n    if (!_useSemicolon(sourceFile)) {\n      iconImportDeclaration.replaceWithText(\n        iconImportDeclaration.getText().replace(\";\", \"\")\n      )\n    }\n  }\n\n  return sourceFile\n}\n\nfunction _useSemicolon(sourceFile: SourceFile) {\n  return (\n    sourceFile.getImportDeclarations()?.[0]?.getText().endsWith(\";\") ?? false\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-menu.test.ts",
    "content": "import { type Config } from \"@/src/utils/get-config\"\nimport { transformMenu } from \"@/src/utils/transformers/transform-menu\"\nimport { describe, expect, test } from \"vitest\"\n\nimport { transform } from \".\"\n\nconst testConfig: Config = {\n  style: \"new-york\",\n  tsx: true,\n  rsc: true,\n  tailwind: {\n    baseColor: \"neutral\",\n    cssVariables: true,\n    config: \"tailwind.config.ts\",\n    css: \"tailwind.css\",\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \"/\",\n    components: \"/components\",\n    utils: \"/lib/utils\",\n    ui: \"/ui\",\n    lib: \"/lib\",\n    hooks: \"/hooks\",\n    tailwindConfig: \"tailwind.config.ts\",\n    tailwindCss: \"tailwind.css\",\n  },\n}\n\ndescribe(\"transformMenu\", () => {\n  describe(\"menuColor is inverted\", () => {\n    test(\"replaces cn-menu-target with dark in string literal\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"cn-menu-target p-4\">Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"inverted\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className=\"dark p-4\">Content</div>\n        }\"\n      `)\n    })\n\n    test(\"replaces cn-menu-target with dark in cn() call\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className={cn(\"cn-menu-target\", \"p-4\")}>Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"inverted\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className={cn(\"dark\", \"p-4\")}>Content</div>\n        }\"\n      `)\n    })\n\n    test(\"handles multiple occurrences\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <div>\n      <div className=\"cn-menu-target p-4\">First</div>\n      <div className={cn(\"cn-menu-target\", \"mt-2\")}>Second</div>\n    </div>\n  )\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"inverted\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <div>\n              <div className=\"dark p-4\">First</div>\n              <div className={cn(\"dark\", \"mt-2\")}>Second</div>\n            </div>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"menuColor is default or not set\", () => {\n    test(\"removes cn-menu-target from string literal\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"cn-menu-target p-4\">Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"default\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className=\"p-4\">Content</div>\n        }\"\n      `)\n    })\n\n    test(\"removes cn-menu-target when menuColor is not set\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"cn-menu-target p-4\">Content</div>\n}`,\n            config: testConfig,\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className=\"p-4\">Content</div>\n        }\"\n      `)\n    })\n\n    test(\"removes cn-menu-target from cn() call and cleans up empty string\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className={cn(\"cn-menu-target\", \"p-4\")}>Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"default\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className={cn(\"p-4\")}>Content</div>\n        }\"\n      `)\n    })\n\n    test(\"cleans up cn-menu-target at the end of cn() call\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className={cn(\"p-4\", \"cn-menu-target\")}>Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"default\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className={cn(\"p-4\")}>Content</div>\n        }\"\n      `)\n    })\n\n    test(\"cleans up cn-menu-target in the middle of cn() call\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className={cn(\"p-4\", \"cn-menu-target\", \"mt-2\")}>Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"default\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className={cn(\"p-4\",\"mt-2\")}>Content</div>\n        }\"\n      `)\n    })\n\n    test(\"handles multiple occurrences when removing\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <div>\n      <div className=\"cn-menu-target p-4\">First</div>\n      <div className={cn(\"cn-menu-target\", \"mt-2\")}>Second</div>\n    </div>\n  )\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"default\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <div>\n              <div className=\"p-4\">First</div>\n              <div className={cn(\"mt-2\")}>Second</div>\n            </div>\n          )\n        }\"\n      `)\n    })\n  })\n\n  test(\"does not modify className without cn-menu-target\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"p-4 mt-2\">Content</div>\n}`,\n          config: {\n            ...testConfig,\n            menuColor: \"inverted\",\n          },\n        },\n        [transformMenu]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\"\n\n      export function Component() {\n        return <div className=\"p-4 mt-2\">Content</div>\n      }\"\n    `)\n  })\n\n  describe(\"menuColor is default-translucent\", () => {\n    test(\"inlines cn-menu-translucent styles\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"cn-menu-target cn-menu-translucent p-4\">Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"default-translucent\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className=\"p-4 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!\">Content</div>\n        }\"\n      `)\n    })\n\n    test(\"inlines cn-menu-translucent styles in cn() call\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className={cn(\"cn-menu-target cn-menu-translucent\", \"p-4\")}>Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"default-translucent\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className={cn(\"animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!\",\"p-4\")}>Content</div>\n        }\"\n      `)\n    })\n  })\n\n  describe(\"menuColor is inverted-translucent\", () => {\n    test(\"replaces cn-menu-target with dark and inlines cn-menu-translucent\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"cn-menu-target cn-menu-translucent p-4\">Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"inverted-translucent\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className=\"dark p-4 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!\">Content</div>\n        }\"\n      `)\n    })\n\n    test(\"replaces cn-menu-target with dark and inlines cn-menu-translucent in cn() call\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className={cn(\"cn-menu-target cn-menu-translucent\", \"p-4\")}>Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"inverted-translucent\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className={cn(\"dark animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!\", \"p-4\")}>Content</div>\n        }\"\n      `)\n    })\n  })\n\n  describe(\"menuColor is inverted removes cn-menu-translucent\", () => {\n    test(\"replaces cn-menu-target with dark and removes cn-menu-translucent\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"cn-menu-target cn-menu-translucent p-4\">Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"inverted\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className=\"dark p-4\">Content</div>\n        }\"\n      `)\n    })\n  })\n\n  describe(\"menuColor is default removes cn-menu-translucent\", () => {\n    test(\"removes both cn-menu-target and cn-menu-translucent\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return <div className=\"cn-menu-target cn-menu-translucent p-4\">Content</div>\n}`,\n            config: {\n              ...testConfig,\n              menuColor: \"default\",\n            },\n          },\n          [transformMenu]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return <div className=\"p-4\">Content</div>\n        }\"\n      `)\n    })\n  })\n\n  test(\"preserves semicolons\", async () => {\n    expect(\n      await transform(\n        {\n          filename: \"test.tsx\",\n          raw: `import * as React from \"react\";\n\nexport function Component() {\n  return <div className=\"cn-menu-target p-4\">Content</div>;\n}`,\n          config: {\n            ...testConfig,\n            menuColor: \"inverted\",\n          },\n        },\n        [transformMenu]\n      )\n    ).toMatchInlineSnapshot(`\n      \"import * as React from \"react\";\n\n      export function Component() {\n        return <div className=\"dark p-4\">Content</div>;\n      }\"\n    `)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-menu.ts",
    "content": "import { Transformer } from \"@/src/utils/transformers\"\nimport { twMerge } from \"tailwind-merge\"\nimport { SyntaxKind } from \"ts-morph\"\n\n// Hardcoded translucent classes inlined at install time.\nconst TRANSLUCENT_CLASSES =\n  \"animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!\"\n\n// Transforms cn-menu-target and cn-menu-translucent classes based on config.menuColor.\n// If menuColor is \"inverted\", replaces cn-menu-target with \"dark\" and removes cn-menu-translucent.\n// If menuColor is \"default-translucent\", removes cn-menu-target and inlines cn-menu-translucent styles.\n// If menuColor is \"inverted-translucent\", replaces cn-menu-target with \"dark\" and inlines cn-menu-translucent styles.\n// Otherwise, removes both cn-menu-target and cn-menu-translucent.\nexport const transformMenu: Transformer = async ({ sourceFile, config }) => {\n  const menuColor = config.menuColor\n  const isTranslucent =\n    menuColor === \"default-translucent\" || menuColor === \"inverted-translucent\"\n\n  for (const attr of sourceFile.getDescendantsOfKind(SyntaxKind.JsxAttribute)) {\n    const attrName = attr.getNameNode().getText()\n    if (attrName !== \"className\") {\n      continue\n    }\n\n    const initializer = attr.getInitializer()\n    if (!initializer) {\n      continue\n    }\n\n    const text = initializer.getText()\n    if (\n      !text.includes(\"cn-menu-target\") &&\n      !text.includes(\"cn-menu-translucent\")\n    ) {\n      continue\n    }\n\n    let newText = text\n    let needsCleanup = false\n\n    if (menuColor === \"inverted\" || menuColor === \"inverted-translucent\") {\n      // Replace cn-menu-target with \"dark\".\n      newText = newText.replace(/cn-menu-target/g, \"dark\")\n    } else {\n      // Remove cn-menu-target for both \"default-translucent\" and \"default\".\n      newText = newText.replace(/cn-menu-target/g, \"\")\n      needsCleanup = true\n    }\n\n    if (isTranslucent) {\n      // Merge translucent classes with existing classes, then remove the placeholder.\n      newText = newText.replace(\n        /\"([^\"]*cn-menu-translucent[^\"]*)\"/g,\n        (_, classes) => {\n          const merged = twMerge(classes, TRANSLUCENT_CLASSES)\n          return `\"${merged.replace(/\\s*\\bcn-menu-translucent\\b\\s*/g, \" \").trim()}\"`\n        }\n      )\n    } else {\n      // Remove cn-menu-translucent.\n      if (newText.includes(\"cn-menu-translucent\")) {\n        newText = newText.replace(/cn-menu-translucent/g, \"\")\n        needsCleanup = true\n      }\n    }\n\n    // Clean up extra spaces only when classes were removed.\n    if (needsCleanup) {\n      newText = newText.replace(/\\s{2,}/g, \" \")\n      newText = newText.replace(/\"\\s+/g, '\"')\n      newText = newText.replace(/\\s+\"/g, '\"')\n      // Clean up empty strings in cn() calls.\n      newText = newText.replace(/,\\s*\"\"\\s*,/g, \",\")\n      newText = newText.replace(/\\(\\s*\"\"\\s*,/g, \"(\")\n      newText = newText.replace(/,\\s*\"\"\\s*\\)/g, \")\")\n    }\n\n    attr.setInitializer(newText)\n  }\n\n  return sourceFile\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-next.test.ts",
    "content": "import { FRAMEWORKS } from \"@/src/utils/frameworks\"\nimport { type Config } from \"@/src/utils/get-config\"\nimport { transformNext } from \"@/src/utils/transformers/transform-next\"\nimport { describe, expect, test, vi } from \"vitest\"\n\nimport { transform } from \"../transformers\"\n\nconst testConfig: Config = {\n  style: \"new-york\",\n  tsx: true,\n  rsc: true,\n  tailwind: {\n    baseColor: \"neutral\",\n    cssVariables: true,\n    config: \"tailwind.config.ts\",\n    css: \"tailwind.css\",\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \"/test-project\",\n    components: \"/test-project/components\",\n    utils: \"/test-project/lib/utils\",\n    ui: \"/test-project/ui\",\n    lib: \"/test-project/lib\",\n    hooks: \"/test-project/hooks\",\n    tailwindConfig: \"tailwind.config.ts\",\n    tailwindCss: \"tailwind.css\",\n  },\n}\n\nvi.mock(\"@/src/utils/get-project-info\", () => ({\n  getProjectInfo: vi.fn(),\n}))\n\ndescribe(\"transformNext\", () => {\n  describe(\"Next.js 16+ transformations\", () => {\n    test(\"should transform function declaration export\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"16.0.0\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: `import { NextResponse } from \"next/server\"\n\nexport function middleware(request: Request) {\n  return NextResponse.next()\n}`,\n            config: testConfig,\n          },\n          [transformNext]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import { NextResponse } from \"next/server\"\n\n        export function proxy(request: Request) {\n          return NextResponse.next()\n        }\"\n      `)\n    })\n\n    test(\"should transform async function declaration\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"16.1.0\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: `import { NextResponse } from \"next/server\"\n\nexport async function middleware(request: Request) {\n  return NextResponse.next()\n}`,\n            config: testConfig,\n          },\n          [transformNext]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import { NextResponse } from \"next/server\"\n\n        export async function proxy(request: Request) {\n          return NextResponse.next()\n        }\"\n      `)\n    })\n\n    test(\"should transform const arrow function export\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"16.0.0\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: `import { NextResponse } from \"next/server\"\n\nexport const middleware = (request: Request) => {\n  return NextResponse.next()\n}`,\n            config: testConfig,\n          },\n          [transformNext]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import { NextResponse } from \"next/server\"\n\n        export const proxy = (request: Request) => {\n          return NextResponse.next()\n        }\"\n      `)\n    })\n\n    test(\"should transform named export with alias\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"16.0.0\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: `import { NextResponse } from \"next/server\"\n\nfunction handler(request: Request) {\n  return NextResponse.next()\n}\n\nexport { handler as middleware }`,\n            config: testConfig,\n          },\n          [transformNext]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import { NextResponse } from \"next/server\"\n\n        function handler(request: Request) {\n          return NextResponse.next()\n        }\n\n        export { handler as proxy }\"\n      `)\n    })\n  })\n\n  describe(\"Next.js < 16 or unknown versions (no transformation)\", () => {\n    test(\"should not transform for Next.js 15\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"15.0.0\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      const input = `import { NextResponse } from \"next/server\"\n\nexport function middleware(request: Request) {\n  return NextResponse.next()\n}`\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: input,\n            config: testConfig,\n          },\n          [] // Don't include transformNext for Next.js 15\n        )\n      ).toBe(input)\n    })\n\n    test(\"should not transform when frameworkVersion is null\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: null,\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      const input = `import { NextResponse } from \"next/server\"\n\nexport function middleware(request: Request) {\n  return NextResponse.next()\n}`\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: input,\n            config: testConfig,\n          },\n          [] // Don't include transformNext when frameworkVersion is null\n        )\n      ).toBe(input)\n    })\n\n    test(\"should not transform for canary tag (unknown version)\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"canary\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      const input = `import { NextResponse } from \"next/server\"\n\nexport function middleware(request: Request) {\n  return NextResponse.next()\n}`\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: input,\n            config: testConfig,\n          },\n          [] // Don't include transformNext for canary tag\n        )\n      ).toBe(input)\n    })\n\n    test(\"should not transform for latest tag (unknown version)\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"latest\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      const input = `import { NextResponse } from \"next/server\"\n\nexport function middleware(request: Request) {\n  return NextResponse.next()\n}`\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: input,\n            config: testConfig,\n          },\n          [] // Don't include transformNext for latest tag\n        )\n      ).toBe(input)\n    })\n  })\n\n  describe(\"Non-middleware files\", () => {\n    test(\"should not transform non-middleware files\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"16.0.0\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      const input = `export function middleware() {\n  return \"not a middleware file\"\n}`\n\n      expect(\n        await transform(\n          {\n            filename: \"utils.ts\",\n            raw: input,\n            config: testConfig,\n          },\n          [] // Don't include transformNext for non-middleware files\n        )\n      ).toBe(input)\n    })\n\n    test(\"should not transform nested middleware files\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"next-app\"],\n        frameworkVersion: \"16.0.0\",\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      const input = `export function middleware() {\n  return \"nested middleware\"\n}`\n\n      // Nested middleware files should not be transformed\n      expect(\n        await transform(\n          {\n            filename: \"lib/middleware.ts\",\n            raw: input,\n            config: testConfig,\n          },\n          [] // Don't include transformNext for nested middleware files\n        )\n      ).toBe(input)\n\n      expect(\n        await transform(\n          {\n            filename: \"lib/supabase/middleware.ts\",\n            raw: input,\n            config: testConfig,\n          },\n          [] // Don't include transformNext for nested middleware files\n        )\n      ).toBe(input)\n    })\n  })\n\n  describe(\"Non-Next.js projects\", () => {\n    test(\"should not transform for Vite projects\", async () => {\n      const { getProjectInfo } = await import(\"@/src/utils/get-project-info\")\n      vi.mocked(getProjectInfo).mockResolvedValue({\n        framework: FRAMEWORKS[\"vite\"],\n        frameworkVersion: null,\n        isSrcDir: false,\n        isRSC: false,\n        isTsx: true,\n        tailwindConfigFile: null,\n        tailwindCssFile: null,\n        tailwindVersion: \"v4\",\n        aliasPrefix: \"@\",\n      })\n\n      const input = `export function middleware() {\n  return \"some middleware\"\n}`\n\n      expect(\n        await transform(\n          {\n            filename: \"middleware.ts\",\n            raw: input,\n            config: testConfig,\n          },\n          [] // Don't include transformNext for non-Next.js projects\n        )\n      ).toBe(input)\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-next.ts",
    "content": "import { Transformer } from \"@/src/utils/transformers\"\n\nexport const transformNext: Transformer = async ({ sourceFile }) => {\n  // export function middleware.\n  sourceFile.getFunctions().forEach((func) => {\n    if (func.getName() === \"middleware\") {\n      func.rename(\"proxy\")\n    }\n  })\n\n  // export const middleware.\n  sourceFile.getVariableDeclarations().forEach((variable) => {\n    if (variable.getName() === \"middleware\") {\n      variable.rename(\"proxy\")\n    }\n  })\n\n  // export { handler as middleware }.\n  sourceFile.getExportDeclarations().forEach((exportDecl) => {\n    const namedExports = exportDecl.getNamedExports()\n    namedExports.forEach((namedExport) => {\n      if (namedExport.getName() === \"middleware\") {\n        namedExport.setName(\"proxy\")\n      }\n      const aliasNode = namedExport.getAliasNode()\n      if (aliasNode?.getText() === \"middleware\") {\n        namedExport.setAlias(\"proxy\")\n      }\n    })\n  })\n\n  return sourceFile\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-render.test.ts",
    "content": "import { type Config } from \"@/src/utils/get-config\"\nimport { transformRender } from \"@/src/utils/transformers/transform-render\"\nimport { describe, expect, test } from \"vitest\"\n\nimport { transform } from \".\"\n\nconst testConfig: Config = {\n  style: \"base-default\",\n  tsx: true,\n  rsc: true,\n  tailwind: {\n    baseColor: \"neutral\",\n    cssVariables: true,\n    config: \"tailwind.config.ts\",\n    css: \"tailwind.css\",\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \"/\",\n    components: \"/components\",\n    utils: \"/lib/utils\",\n    ui: \"/ui\",\n    lib: \"/lib\",\n    hooks: \"/hooks\",\n    tailwindConfig: \"tailwind.config.ts\",\n    tailwindCss: \"tailwind.css\",\n  },\n}\n\ndescribe(\"transformRender\", () => {\n  describe(\"DropdownMenuTrigger with Button render and text children\", () => {\n    test(\"moves children into render prop component\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DropdownMenuTrigger render={<Button className=\"w-fit\" />}>Open</DropdownMenuTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DropdownMenuTrigger render={<Button className=\"w-fit\">Open</Button>} />\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"render prop with multiple props\", () => {\n    test(\"preserves all props on render component\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DialogTrigger render={<Button variant=\"outline\" size=\"sm\" />}>Edit Profile</DialogTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DialogTrigger render={<Button variant=\"outline\" size=\"sm\">Edit Profile</Button>} />\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"render prop with no props on component\", () => {\n    test(\"handles render component without props\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <PopoverTrigger render={<Button />}>Click me</PopoverTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <PopoverTrigger render={<Button>Click me</Button>} />\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"complex children content\", () => {\n    test(\"preserves complex children including JSX\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <TooltipTrigger render={<Button variant=\"ghost\" />}>\n      <Icon /> Settings\n    </TooltipTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <TooltipTrigger render={<Button variant=\"ghost\"><Icon />Settings</Button>} />\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"parent with additional attributes\", () => {\n    test(\"preserves parent attributes\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <MenuTrigger className=\"my-class\" disabled render={<Button />}>Open Menu</MenuTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <MenuTrigger className=\"my-class\" disabled render={<Button>Open Menu</Button>} />\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"no children\", () => {\n    test(\"does not transform when there are no children\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DropdownMenuTrigger render={<Button className=\"w-fit\" />}></DropdownMenuTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DropdownMenuTrigger render={<Button className=\"w-fit\" />}></DropdownMenuTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"render prop already has children\", () => {\n    test(\"does not transform when render component already has children\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DropdownMenuTrigger render={<Button>Existing</Button>}>Ignored</DropdownMenuTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DropdownMenuTrigger render={<Button>Existing</Button>}>Ignored</DropdownMenuTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"non-base style\", () => {\n    test(\"does not transform when style is not base-*\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DropdownMenuTrigger render={<Button />}>Open</DropdownMenuTrigger>\n  )\n}`,\n            config: {\n              ...testConfig,\n              style: \"new-york\",\n            },\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DropdownMenuTrigger render={<Button />}>Open</DropdownMenuTrigger>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"multiple render elements\", () => {\n    test(\"transforms multiple render elements in same file\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <div>\n      <DialogTrigger render={<Button variant=\"outline\" />}>Edit</DialogTrigger>\n      <DialogClose render={<Button variant=\"ghost\" />}>Cancel</DialogClose>\n    </div>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <div>\n              <DialogTrigger render={<Button variant=\"outline\">Edit</Button>} />\n              <DialogClose render={<Button variant=\"ghost\">Cancel</Button>} />\n            </div>\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"idempotency\", () => {\n    test(\"running twice produces same output\", async () => {\n      const input = `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DropdownMenuTrigger render={<Button className=\"w-fit\" />}>Open</DropdownMenuTrigger>\n  )\n}`\n\n      const firstRun = await transform(\n        {\n          filename: \"test.tsx\",\n          raw: input,\n          config: testConfig,\n        },\n        [transformRender]\n      )\n\n      const secondRun = await transform(\n        {\n          filename: \"test.tsx\",\n          raw: firstRun,\n          config: testConfig,\n        },\n        [transformRender]\n      )\n\n      expect(secondRun).toBe(firstRun)\n    })\n  })\n\n  describe(\"expression children\", () => {\n    test(\"handles expression children\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <DropdownMenuTrigger render={<Button />}>{label}</DropdownMenuTrigger>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <DropdownMenuTrigger render={<Button>{label}</Button>} />\n          )\n        }\"\n      `)\n    })\n  })\n\n  describe(\"anchor render element\", () => {\n    test(\"handles anchor tag as render element\", async () => {\n      expect(\n        await transform(\n          {\n            filename: \"test.tsx\",\n            raw: `import * as React from \"react\"\n\nexport function Component() {\n  return (\n    <Button render={<a href=\"/home\" />}>Go Home</Button>\n  )\n}`,\n            config: testConfig,\n          },\n          [transformRender]\n        )\n      ).toMatchInlineSnapshot(`\n        \"import * as React from \"react\"\n\n        export function Component() {\n          return (\n            <Button render={<a href=\"/home\">Go Home</a>} />\n          )\n        }\"\n      `)\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-render.ts",
    "content": "import { Transformer } from \"@/src/utils/transformers\"\nimport { SyntaxKind } from \"ts-morph\"\n\ninterface TransformInfo {\n  elementStart: number\n  elementEnd: number\n  newText: string\n}\n\nexport const transformRender: Transformer = async ({ sourceFile, config }) => {\n  // Only run for base- styles.\n  if (!config.style?.startsWith(\"base-\")) {\n    return sourceFile\n  }\n\n  // Collect all transformations first, then apply them in reverse order.\n  // This prevents issues with invalidated nodes when modifying the tree.\n  const transformations: TransformInfo[] = []\n\n  // Find all JSX elements with render attribute.\n  const jsxElements = sourceFile.getDescendantsOfKind(SyntaxKind.JsxElement)\n\n  for (const jsxElement of jsxElements) {\n    const openingElement = jsxElement.getOpeningElement()\n    const renderAttr = openingElement.getAttribute(\"render\")\n\n    if (!renderAttr) {\n      continue\n    }\n\n    // Get the children of the parent element.\n    const children = jsxElement.getJsxChildren()\n    const childrenText = children\n      .map((c) => c.getText())\n      .join(\"\")\n      .trim()\n\n    // If there are no children, nothing to transform.\n    if (!childrenText) {\n      continue\n    }\n\n    // Get the render attribute value.\n    if (renderAttr.getKind() !== SyntaxKind.JsxAttribute) {\n      continue\n    }\n\n    const jsxAttr = renderAttr.asKindOrThrow(SyntaxKind.JsxAttribute)\n    const initializer = jsxAttr.getInitializer()\n\n    if (!initializer) {\n      continue\n    }\n\n    // The render value should be a JSX expression like {<Button />}.\n    if (initializer.getKind() !== SyntaxKind.JsxExpression) {\n      continue\n    }\n\n    const jsxExpression = initializer.asKindOrThrow(SyntaxKind.JsxExpression)\n    const expression = jsxExpression.getExpression()\n\n    if (!expression) {\n      continue\n    }\n\n    // Check if the expression is a self-closing JSX element.\n    if (expression.getKind() !== SyntaxKind.JsxSelfClosingElement) {\n      // If it's already a full JSX element with children, skip it.\n      continue\n    }\n\n    const selfClosingElement = expression.asKindOrThrow(\n      SyntaxKind.JsxSelfClosingElement\n    )\n    const tagName = selfClosingElement.getTagNameNode().getText()\n    const attributes = selfClosingElement\n      .getAttributes()\n      .map((attr) => attr.getText())\n      .join(\" \")\n\n    // Build new render prop value with children moved inside.\n    const newRenderValue = attributes\n      ? `{<${tagName} ${attributes}>${childrenText}</${tagName}>}`\n      : `{<${tagName}>${childrenText}</${tagName}>}`\n\n    // Get the parent tag name and other attributes.\n    const parentTagName = openingElement.getTagNameNode().getText()\n    const otherAttrs = openingElement\n      .getAttributes()\n      .filter((attr) => {\n        if (attr.getKind() === SyntaxKind.JsxAttribute) {\n          const attrName = attr\n            .asKindOrThrow(SyntaxKind.JsxAttribute)\n            .getNameNode()\n            .getText()\n          return attrName !== \"render\"\n        }\n        return true\n      })\n      .map((attr) => attr.getText())\n      .join(\" \")\n\n    // Build new element text as self-closing since children are now in render.\n    const newAttrs = otherAttrs\n      ? `${otherAttrs} render=${newRenderValue}`\n      : `render=${newRenderValue}`\n\n    const newElementText = `<${parentTagName} ${newAttrs} />`\n\n    transformations.push({\n      elementStart: jsxElement.getStart(),\n      elementEnd: jsxElement.getEnd(),\n      newText: newElementText,\n    })\n  }\n\n  // Apply transformations in reverse order to preserve positions.\n  for (const info of transformations.reverse()) {\n    const fullText = sourceFile.getFullText()\n    const newFullText =\n      fullText.substring(0, info.elementStart) +\n      info.newText +\n      fullText.substring(info.elementEnd)\n    sourceFile.replaceWithText(newFullText)\n  }\n\n  return sourceFile\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-rsc.ts",
    "content": "import { Transformer } from \"@/src/utils/transformers\"\nimport { SyntaxKind } from \"ts-morph\"\n\nconst directiveRegex = /^[\"']use client[\"']$/g\n\nexport const transformRsc: Transformer = async ({ sourceFile, config }) => {\n  if (config.rsc) {\n    return sourceFile\n  }\n\n  // Remove \"use client\" from the top of the file.\n  const first = sourceFile.getFirstChildByKind(SyntaxKind.ExpressionStatement)\n  if (first && directiveRegex.test(first.getText())) {\n    first.remove()\n  }\n\n  return sourceFile\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-rtl.ts",
    "content": "import { Transformer } from \"@/src/utils/transformers\"\nimport { Project, ScriptKind, SourceFile, SyntaxKind } from \"ts-morph\"\n\nimport { splitClassName } from \"./transform-css-vars\"\n\n// Physical → logical Tailwind class mappings (direct replacement).\n// Order matters to avoid partial matches:\n// - Negative prefixes before positive (e.g., -ml- before ml-).\n// - Specific corners before general ones e.g. rounded-tl- before rounded-l-.\n// - With-value variants before without-value (e.g., border-l- before border-l).\nconst RTL_MAPPINGS: [string, string][] = [\n  [\"-ml-\", \"-ms-\"],\n  [\"-mr-\", \"-me-\"],\n  [\"ml-\", \"ms-\"],\n  [\"mr-\", \"me-\"],\n  [\"pl-\", \"ps-\"],\n  [\"pr-\", \"pe-\"],\n  [\"-left-\", \"-start-\"],\n  [\"-right-\", \"-end-\"],\n  [\"left-\", \"start-\"],\n  [\"right-\", \"end-\"],\n  [\"inset-l-\", \"inset-inline-start-\"],\n  [\"inset-r-\", \"inset-inline-end-\"],\n  [\"rounded-tl-\", \"rounded-ss-\"],\n  [\"rounded-tr-\", \"rounded-se-\"],\n  [\"rounded-bl-\", \"rounded-es-\"],\n  [\"rounded-br-\", \"rounded-ee-\"],\n  [\"rounded-l-\", \"rounded-s-\"],\n  [\"rounded-r-\", \"rounded-e-\"],\n  [\"border-l-\", \"border-s-\"],\n  [\"border-r-\", \"border-e-\"],\n  [\"border-l\", \"border-s\"],\n  [\"border-r\", \"border-e\"],\n  [\"text-left\", \"text-start\"],\n  [\"text-right\", \"text-end\"],\n  [\"scroll-ml-\", \"scroll-ms-\"],\n  [\"scroll-mr-\", \"scroll-me-\"],\n  [\"scroll-pl-\", \"scroll-ps-\"],\n  [\"scroll-pr-\", \"scroll-pe-\"],\n  [\"float-left\", \"float-start\"],\n  [\"float-right\", \"float-end\"],\n  [\"clear-left\", \"clear-start\"],\n  [\"clear-right\", \"clear-end\"],\n  [\"origin-top-left\", \"origin-top-start\"],\n  [\"origin-top-right\", \"origin-top-end\"],\n  [\"origin-bottom-left\", \"origin-bottom-start\"],\n  [\"origin-bottom-right\", \"origin-bottom-end\"],\n  [\"origin-left\", \"origin-start\"],\n  [\"origin-right\", \"origin-end\"],\n]\n\n// Translate-x: adds rtl: variant (negative ↔ positive).\nconst RTL_TRANSLATE_X_MAPPINGS: [string, string][] = [\n  [\"-translate-x-\", \"translate-x-\"],\n  [\"translate-x-\", \"-translate-x-\"],\n]\n\n// Classes that need rtl:*-reverse (no logical equivalents).\nconst RTL_REVERSE_MAPPINGS: [string, string][] = [\n  [\"space-x-\", \"space-x-reverse\"],\n  [\"divide-x-\", \"divide-x-reverse\"],\n]\n\n// Classes that need rtl: variant with swapped value.\nconst RTL_SWAP_MAPPINGS: [string, string][] = [\n  [\"cursor-w-resize\", \"cursor-e-resize\"],\n  [\"cursor-e-resize\", \"cursor-w-resize\"],\n]\n\n// Slide animations inside logical side variants: [variant, physical, logical].\nconst RTL_LOGICAL_SIDE_SLIDE_MAPPINGS: [string, string, string][] = [\n  [\"data-[side=inline-start]\", \"slide-in-from-right\", \"slide-in-from-end\"],\n  [\"data-[side=inline-start]\", \"slide-out-to-right\", \"slide-out-to-end\"],\n  [\"data-[side=inline-end]\", \"slide-in-from-left\", \"slide-in-from-start\"],\n  [\"data-[side=inline-end]\", \"slide-out-to-left\", \"slide-out-to-start\"],\n]\n\n// Marker class for icons that should get rtl:rotate-180.\nconst RTL_FLIP_MARKER = \"cn-rtl-flip\"\n\n// Components with side prop transformed to logical values.\nconst RTL_SIDE_PROP_COMPONENTS = [\n  \"ContextMenuContent\",\n  \"ContextMenuSubContent\",\n  \"DropdownMenuSubContent\",\n]\n\n// Side prop value mappings.\nconst RTL_SIDE_PROP_MAPPINGS: Record<string, string> = {\n  right: \"inline-end\",\n  left: \"inline-start\",\n}\n\n// Positioning prefixes to skip for physical side variants.\nconst POSITIONING_PREFIXES = [\"-left-\", \"-right-\", \"left-\", \"right-\"]\n\nexport const transformRtl: Transformer = async ({ sourceFile, config }) => {\n  if (!config.rtl) {\n    return sourceFile\n  }\n\n  applyRtlTransformToSourceFile(sourceFile)\n\n  return sourceFile\n}\n\n// Standalone function to transform source code for RTL.\n// This is used by the build script.\nexport async function transformDirection(source: string, rtl: boolean) {\n  if (!rtl) {\n    return source\n  }\n\n  const project = new Project({\n    useInMemoryFileSystem: true,\n  })\n\n  const sourceFile = project.createSourceFile(\"component.tsx\", source, {\n    scriptKind: ScriptKind.TSX,\n    overwrite: true,\n  })\n\n  applyRtlTransformToSourceFile(sourceFile)\n\n  return sourceFile.getText()\n}\n\nfunction stripQuotes(str: string) {\n  return str.replace(/^[\"']|[\"']$/g, \"\")\n}\n\n// Transforms a string literal node by applying RTL mappings.\nfunction transformStringLiteralNode(node: {\n  getText(): string\n  replaceWithText(text: string): void\n}) {\n  const text = stripQuotes(node.getText() ?? \"\")\n  node.replaceWithText(`\"${applyRtlMapping(text)}\"`)\n}\n\nexport function applyRtlMapping(input: string) {\n  return input\n    .split(\" \")\n    .flatMap((className) => {\n      // Skip classes that already have rtl: or ltr: prefix.\n      if (className.startsWith(\"rtl:\") || className.startsWith(\"ltr:\")) {\n        return [className]\n      }\n\n      // Replace the cn-rtl-flip marker with rtl:rotate-180.\n      if (className === RTL_FLIP_MARKER) {\n        return [\"rtl:rotate-180\"]\n      }\n      const [variant, value, modifier] = splitClassName(className)\n\n      if (!value) {\n        return [className]\n      }\n\n      // Check for translate-x patterns first (add rtl: variant, don't replace).\n      for (const [physical, rtlPhysical] of RTL_TRANSLATE_X_MAPPINGS) {\n        if (value.startsWith(physical)) {\n          const rtlValue = value.replace(physical, rtlPhysical)\n          const rtlClass = variant\n            ? `rtl:${variant}:${rtlValue}${modifier ? `/${modifier}` : \"\"}`\n            : `rtl:${rtlValue}${modifier ? `/${modifier}` : \"\"}`\n          return [className, rtlClass]\n        }\n      }\n\n      // Check for space-x/divide-x patterns (add rtl:*-reverse variant).\n      for (const [prefix, reverseClass] of RTL_REVERSE_MAPPINGS) {\n        if (value.startsWith(prefix)) {\n          const rtlClass = variant\n            ? `rtl:${variant}:${reverseClass}`\n            : `rtl:${reverseClass}`\n          return [className, rtlClass]\n        }\n      }\n\n      // Check for cursor and other swap patterns (add rtl: variant with swapped value).\n      for (const [physical, swapped] of RTL_SWAP_MAPPINGS) {\n        if (value === physical) {\n          const rtlClass = variant\n            ? `rtl:${variant}:${swapped}`\n            : `rtl:${swapped}`\n          return [className, rtlClass]\n        }\n      }\n\n      // Check for slide animations inside logical side variants.\n      // e.g., data-[side=inline-start]:slide-in-from-right-2 → data-[side=inline-start]:slide-in-from-end-2\n      for (const [\n        variantPattern,\n        physical,\n        logical,\n      ] of RTL_LOGICAL_SIDE_SLIDE_MAPPINGS) {\n        if (variant?.includes(variantPattern) && value.startsWith(physical)) {\n          const mappedValue = value.replace(physical, logical)\n          const result = modifier\n            ? `${variant}:${mappedValue}/${modifier}`\n            : `${variant}:${mappedValue}`\n          return [result]\n        }\n      }\n\n      // Skip positioning transformations for physical side variants.\n      // e.g., data-[side=left]:-right-1 should NOT become data-[side=left]:-end-1.\n      const isPhysicalSideVariant =\n        variant?.includes(\"data-[side=left]\") ||\n        variant?.includes(\"data-[side=right]\")\n\n      // Find matching RTL mapping for direct replacement.\n      let mappedValue = value\n      for (const [physical, logical] of RTL_MAPPINGS) {\n        if (\n          isPhysicalSideVariant &&\n          POSITIONING_PREFIXES.some((p) => physical.startsWith(p))\n        ) {\n          continue\n        }\n\n        if (value.startsWith(physical)) {\n          // For patterns without trailing '-', require exact match to avoid\n          // partial matches like border-ring matching border-r.\n          if (!physical.endsWith(\"-\") && value !== physical) {\n            continue\n          }\n          mappedValue = value.replace(physical, logical)\n          break\n        }\n      }\n\n      // Reassemble with variant and modifier.\n      let result: string\n      if (variant) {\n        result = modifier\n          ? `${variant}:${mappedValue}/${modifier}`\n          : `${variant}:${mappedValue}`\n      } else {\n        result = modifier ? `${mappedValue}/${modifier}` : mappedValue\n      }\n\n      return [result]\n    })\n    .join(\" \")\n}\n\n// Core RTL transformation logic that operates on a SourceFile.\n// Extracted to be reusable by both transformRtl (CLI) and transformDirection (build script).\nfunction applyRtlTransformToSourceFile(sourceFile: SourceFile) {\n  // Find the cva function calls.\n  sourceFile\n    .getDescendantsOfKind(SyntaxKind.CallExpression)\n    .filter((node) => node.getExpression().getText() === \"cva\")\n    .forEach((node) => {\n      // cva(base, ...).\n      const firstArg = node.getArguments()[0]\n      if (firstArg?.isKind(SyntaxKind.StringLiteral)) {\n        transformStringLiteralNode(firstArg)\n      }\n\n      // cva(..., { variants: { ... } }).\n      if (node.getArguments()[1]?.isKind(SyntaxKind.ObjectLiteralExpression)) {\n        node\n          .getArguments()[1]\n          ?.getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n          .find((node) => node.getName() === \"variants\")\n          ?.getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n          .forEach((node) => {\n            node\n              .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n              .forEach((prop) => {\n                const classNames = prop.getInitializerIfKind(\n                  SyntaxKind.StringLiteral\n                )\n                if (classNames) {\n                  transformStringLiteralNode(classNames)\n                }\n              })\n          })\n      }\n    })\n\n  // Find all jsx attributes with the name className.\n  sourceFile.getDescendantsOfKind(SyntaxKind.JsxAttribute).forEach((node) => {\n    if (node.getNameNode().getText() === \"className\") {\n      // className=\"...\".\n      const initializer = node.getInitializer()\n      if (initializer?.isKind(SyntaxKind.StringLiteral)) {\n        transformStringLiteralNode(initializer)\n      }\n\n      // className={...}.\n      if (node.getInitializer()?.isKind(SyntaxKind.JsxExpression)) {\n        // Check if it's a call to cn().\n        const callExpression = node\n          .getInitializer()\n          ?.getDescendantsOfKind(SyntaxKind.CallExpression)\n          .find((node) => node.getExpression().getText() === \"cn\")\n        if (callExpression) {\n          callExpression.getArguments().forEach((arg) => {\n            if (\n              arg.isKind(SyntaxKind.ConditionalExpression) ||\n              arg.isKind(SyntaxKind.BinaryExpression)\n            ) {\n              arg\n                .getChildrenOfKind(SyntaxKind.StringLiteral)\n                .forEach(transformStringLiteralNode)\n            }\n            if (arg.isKind(SyntaxKind.StringLiteral)) {\n              transformStringLiteralNode(arg)\n            }\n          })\n        }\n      }\n    }\n\n    // classNames={...}.\n    if (node.getNameNode().getText() === \"classNames\") {\n      if (node.getInitializer()?.isKind(SyntaxKind.JsxExpression)) {\n        node\n          .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n          .forEach((node) => {\n            if (node.getInitializer()?.isKind(SyntaxKind.CallExpression)) {\n              const callExpression = node.getInitializerIfKind(\n                SyntaxKind.CallExpression\n              )\n              if (callExpression) {\n                callExpression.getArguments().forEach((arg) => {\n                  if (arg.isKind(SyntaxKind.ConditionalExpression)) {\n                    arg\n                      .getChildrenOfKind(SyntaxKind.StringLiteral)\n                      .forEach(transformStringLiteralNode)\n                  }\n                  if (arg.isKind(SyntaxKind.StringLiteral)) {\n                    transformStringLiteralNode(arg)\n                  }\n                })\n              }\n            }\n\n            const propInit = node.getInitializer()\n            if (propInit?.isKind(SyntaxKind.StringLiteral)) {\n              if (node.getNameNode().getText() !== \"variant\") {\n                transformStringLiteralNode(propInit)\n              }\n            }\n          })\n      }\n    }\n  })\n\n  // Find mergeProps calls with className property containing cn().\n  sourceFile\n    .getDescendantsOfKind(SyntaxKind.CallExpression)\n    .filter((node) => node.getExpression().getText() === \"mergeProps\")\n    .forEach((node) => {\n      const firstArg = node.getArguments()[0]\n      if (firstArg?.isKind(SyntaxKind.ObjectLiteralExpression)) {\n        // Find className property.\n        const classNameProp = firstArg\n          .getProperties()\n          .find(\n            (prop) =>\n              prop.isKind(SyntaxKind.PropertyAssignment) &&\n              prop.getName() === \"className\"\n          )\n        if (classNameProp?.isKind(SyntaxKind.PropertyAssignment)) {\n          const init = classNameProp.getInitializer()\n          // Handle cn() call.\n          if (init?.isKind(SyntaxKind.CallExpression)) {\n            if (init.getExpression().getText() === \"cn\") {\n              init.getArguments().forEach((arg) => {\n                if (arg.isKind(SyntaxKind.StringLiteral)) {\n                  transformStringLiteralNode(arg)\n                }\n                if (\n                  arg.isKind(SyntaxKind.ConditionalExpression) ||\n                  arg.isKind(SyntaxKind.BinaryExpression)\n                ) {\n                  arg\n                    .getChildrenOfKind(SyntaxKind.StringLiteral)\n                    .forEach(transformStringLiteralNode)\n                }\n              })\n            }\n          }\n          // Handle plain string literal.\n          if (init?.isKind(SyntaxKind.StringLiteral)) {\n            transformStringLiteralNode(init)\n          }\n        }\n      }\n    })\n\n  // Transform side prop to logical values for specific components.\n  ;[\n    ...sourceFile.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement),\n    ...sourceFile.getDescendantsOfKind(SyntaxKind.JsxOpeningElement),\n  ].forEach((element) => {\n    const tagName = element.getTagNameNode().getText()\n    if (!RTL_SIDE_PROP_COMPONENTS.includes(tagName)) {\n      return\n    }\n\n    const sideAttr = element\n      .getAttributes()\n      .find(\n        (attr) =>\n          attr.isKind(SyntaxKind.JsxAttribute) &&\n          attr.getNameNode().getText() === \"side\"\n      )\n\n    if (!sideAttr?.isKind(SyntaxKind.JsxAttribute)) {\n      return\n    }\n\n    const sideValue = sideAttr.getInitializer()\n    if (!sideValue?.isKind(SyntaxKind.StringLiteral)) {\n      return\n    }\n\n    const currentValue = stripQuotes(sideValue.getText() ?? \"\")\n    const mappedValue = RTL_SIDE_PROP_MAPPINGS[currentValue]\n    if (mappedValue) {\n      sideValue.replaceWithText(`\"${mappedValue}\"`)\n    }\n  })\n\n  // Transform default parameter values for side prop (e.g., side = \"right\").\n  // Only for functions whose names are in the whitelist.\n  sourceFile.getDescendantsOfKind(SyntaxKind.BindingElement).forEach((node) => {\n    const paramName = node.getNameNode().getText()\n    if (paramName !== \"side\") {\n      return\n    }\n\n    // Check if this binding element is inside a whitelisted function.\n    const functionDecl = node.getFirstAncestorByKind(\n      SyntaxKind.FunctionDeclaration\n    )\n    const functionName = functionDecl?.getName()\n    if (!functionName || !RTL_SIDE_PROP_COMPONENTS.includes(functionName)) {\n      return\n    }\n\n    const initializer = node.getInitializer()\n    if (!initializer?.isKind(SyntaxKind.StringLiteral)) {\n      return\n    }\n\n    const currentValue = stripQuotes(initializer.getText() ?? \"\")\n    const mappedValue = RTL_SIDE_PROP_MAPPINGS[currentValue]\n    if (mappedValue) {\n      initializer.replaceWithText(`\"${mappedValue}\"`)\n    }\n  })\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/transformers/transform-tw-prefix.ts",
    "content": "import { Transformer } from \"@/src/utils/transformers\"\nimport { SyntaxKind } from \"ts-morph\"\n\nimport {\n  getProjectTailwindVersionFromConfig,\n  TailwindVersion,\n} from \"../get-project-info\"\nimport { splitClassName } from \"./transform-css-vars\"\n\nexport const transformTwPrefixes: Transformer = async ({\n  sourceFile,\n  config,\n}) => {\n  if (!config.tailwind?.prefix) {\n    return sourceFile\n  }\n  const tailwindVersion = await getProjectTailwindVersionFromConfig(config)\n\n  // Find the cva function calls.\n  sourceFile\n    .getDescendantsOfKind(SyntaxKind.CallExpression)\n    .filter((node) => node.getExpression().getText() === \"cva\")\n    .forEach((node) => {\n      // cva(base, ...)\n      if (node.getArguments()[0]?.isKind(SyntaxKind.StringLiteral)) {\n        const defaultClassNames = node.getArguments()[0]\n        if (defaultClassNames) {\n          defaultClassNames.replaceWithText(\n            `\"${applyPrefix(\n              defaultClassNames.getText()?.replace(/\"|'/g, \"\"),\n              config.tailwind.prefix,\n              tailwindVersion\n            )}\"`\n          )\n        }\n      }\n\n      // cva(..., { variants: { ... } })\n      if (node.getArguments()[1]?.isKind(SyntaxKind.ObjectLiteralExpression)) {\n        node\n          .getArguments()[1]\n          ?.getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n          .find((node) => node.getName() === \"variants\")\n          ?.getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n          .forEach((node) => {\n            node\n              .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n              .forEach((node) => {\n                const classNames = node.getInitializerIfKind(\n                  SyntaxKind.StringLiteral\n                )\n                if (classNames) {\n                  classNames?.replaceWithText(\n                    `\"${applyPrefix(\n                      classNames.getText()?.replace(/\"|'/g, \"\"),\n                      config.tailwind.prefix,\n                      tailwindVersion\n                    )}\"`\n                  )\n                }\n              })\n          })\n      }\n    })\n\n  // Find all jsx attributes with the name className.\n  sourceFile.getDescendantsOfKind(SyntaxKind.JsxAttribute).forEach((node) => {\n    if (node.getNameNode().getText() === \"className\") {\n      // className=\"...\"\n      if (node.getInitializer()?.isKind(SyntaxKind.StringLiteral)) {\n        const value = node.getInitializer()\n        if (value) {\n          value.replaceWithText(\n            `\"${applyPrefix(\n              value.getText()?.replace(/\"|'/g, \"\"),\n              config.tailwind.prefix,\n              tailwindVersion\n            )}\"`\n          )\n        }\n      }\n\n      // className={...}\n      if (node.getInitializer()?.isKind(SyntaxKind.JsxExpression)) {\n        // Check if it's a call to cn().\n        const callExpression = node\n          .getInitializer()\n          ?.getDescendantsOfKind(SyntaxKind.CallExpression)\n          .find((node) => node.getExpression().getText() === \"cn\")\n        if (callExpression) {\n          // Loop through the arguments.\n          callExpression.getArguments().forEach((node) => {\n            if (\n              node.isKind(SyntaxKind.ConditionalExpression) ||\n              node.isKind(SyntaxKind.BinaryExpression)\n            ) {\n              node\n                .getChildrenOfKind(SyntaxKind.StringLiteral)\n                .forEach((node) => {\n                  node.replaceWithText(\n                    `\"${applyPrefix(\n                      node.getText()?.replace(/\"|'/g, \"\"),\n                      config.tailwind.prefix,\n                      tailwindVersion\n                    )}\"`\n                  )\n                })\n            }\n\n            if (node.isKind(SyntaxKind.StringLiteral)) {\n              node.replaceWithText(\n                `\"${applyPrefix(\n                  node.getText()?.replace(/\"|'/g, \"\"),\n                  config.tailwind.prefix,\n                  tailwindVersion\n                )}\"`\n              )\n            }\n          })\n        }\n      }\n    }\n\n    // classNames={...}\n    if (node.getNameNode().getText() === \"classNames\") {\n      if (node.getInitializer()?.isKind(SyntaxKind.JsxExpression)) {\n        node\n          .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n          .forEach((node) => {\n            if (node.getInitializer()?.isKind(SyntaxKind.CallExpression)) {\n              const callExpression = node.getInitializerIfKind(\n                SyntaxKind.CallExpression\n              )\n              if (callExpression) {\n                // Loop through the arguments.\n                callExpression.getArguments().forEach((arg) => {\n                  if (arg.isKind(SyntaxKind.ConditionalExpression)) {\n                    arg\n                      .getChildrenOfKind(SyntaxKind.StringLiteral)\n                      .forEach((node) => {\n                        node.replaceWithText(\n                          `\"${applyPrefix(\n                            node.getText()?.replace(/\"|'/g, \"\"),\n                            config.tailwind.prefix,\n                            tailwindVersion\n                          )}\"`\n                        )\n                      })\n                  }\n\n                  if (arg.isKind(SyntaxKind.StringLiteral)) {\n                    arg.replaceWithText(\n                      `\"${applyPrefix(\n                        arg.getText()?.replace(/\"|'/g, \"\"),\n                        config.tailwind.prefix,\n                        tailwindVersion\n                      )}\"`\n                    )\n                  }\n                })\n              }\n            }\n\n            if (node.getInitializer()?.isKind(SyntaxKind.StringLiteral)) {\n              if (node.getNameNode().getText() !== \"variant\") {\n                const classNames = node.getInitializer()\n                if (classNames) {\n                  classNames.replaceWithText(\n                    `\"${applyPrefix(\n                      classNames.getText()?.replace(/\"|'/g, \"\"),\n                      config.tailwind.prefix,\n                      tailwindVersion\n                    )}\"`\n                  )\n                }\n              }\n            }\n          })\n      }\n    }\n  })\n\n  return sourceFile\n}\n\nexport function applyPrefix(\n  input: string,\n  prefix: string = \"\",\n  tailwindVersion: TailwindVersion\n) {\n  if (tailwindVersion === \"v3\") {\n    return input\n      .split(\" \")\n      .map((className) => {\n        const [variant, value, modifier] = splitClassName(className)\n        if (variant) {\n          return modifier\n            ? `${variant}:${prefix}${value}/${modifier}`\n            : `${variant}:${prefix}${value}`\n        } else {\n          return modifier\n            ? `${prefix}${value}/${modifier}`\n            : `${prefix}${value}`\n        }\n      })\n      .join(\" \")\n  }\n\n  return input\n    .split(\" \")\n    .map((className) =>\n      className.indexOf(`${prefix}:`) === 0\n        ? className\n        : `${prefix}:${className.trim()}`\n    )\n    .join(\" \")\n}\n\nexport function applyPrefixesCss(\n  css: string,\n  prefix: string,\n  tailwindVersion: TailwindVersion\n) {\n  const lines = css.split(\"\\n\")\n  for (let line of lines) {\n    if (line.includes(\"@apply\")) {\n      const originalTWCls = line.replace(\"@apply\", \"\").trim()\n      const prefixedTwCls = applyPrefix(originalTWCls, prefix, tailwindVersion)\n      css = css.replace(originalTWCls, prefixedTwCls)\n    }\n  }\n  return css\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/update-app-index.ts",
    "content": "import fs from \"fs/promises\"\nimport path from \"path\"\nimport { getRegistryItems } from \"@/src/registry/api\"\nimport { Config } from \"@/src/utils/get-config\"\n\nexport async function updateAppIndex(component: string, config: Config) {\n  const indexPath = path.join(config.resolvedPaths.cwd, \"app/page.tsx\")\n\n  if (!(await fs.stat(indexPath)).isFile()) {\n    return\n  }\n\n  const [registryItem] = await getRegistryItems([component], { config })\n  if (\n    !registryItem?.meta?.importSpecifier ||\n    !registryItem?.meta?.moduleSpecifier\n  ) {\n    return\n  }\n\n  // Overwrite the index file with the new import.\n  const content = `import { ${registryItem?.meta?.importSpecifier} } from \"${registryItem.meta.moduleSpecifier}\"\\n\\nexport default function Page() {\\n  return <${registryItem?.meta?.importSpecifier} />\\n}`\n  await fs.writeFile(indexPath, content, \"utf8\")\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-css-vars.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport {\n  registryItemCssVarsSchema,\n  registryItemTailwindSchema,\n} from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { TailwindVersion } from \"@/src/utils/get-project-info\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport postcss from \"postcss\"\nimport AtRule from \"postcss/lib/at-rule\"\nimport Root from \"postcss/lib/root\"\nimport Rule from \"postcss/lib/rule\"\nimport { z } from \"zod\"\n\nexport async function updateCssVars(\n  cssVars: z.infer<typeof registryItemCssVarsSchema> | undefined,\n  config: Config,\n  options: {\n    cleanupDefaultNextStyles?: boolean\n    overwriteCssVars?: boolean\n    silent?: boolean\n    tailwindVersion?: TailwindVersion\n    tailwindConfig?: z.infer<typeof registryItemTailwindSchema>[\"config\"]\n  }\n) {\n  if (!config.resolvedPaths.tailwindCss || !Object.keys(cssVars ?? {}).length) {\n    return\n  }\n\n  options = {\n    cleanupDefaultNextStyles: false,\n    silent: false,\n    tailwindVersion: \"v3\",\n    overwriteCssVars: false,\n    ...options,\n  }\n  const cssFilepath = config.resolvedPaths.tailwindCss\n  const cssFilepathRelative = path.relative(\n    config.resolvedPaths.cwd,\n    cssFilepath\n  )\n  const cssVarsSpinner = spinner(\n    `Updating CSS variables in ${highlighter.info(cssFilepathRelative)}`,\n    {\n      silent: options.silent,\n    }\n  ).start()\n  const raw = await fs.readFile(cssFilepath, \"utf8\")\n  let output = await transformCssVars(raw, cssVars ?? {}, config, {\n    cleanupDefaultNextStyles: options.cleanupDefaultNextStyles,\n    tailwindVersion: options.tailwindVersion,\n    tailwindConfig: options.tailwindConfig,\n    overwriteCssVars: options.overwriteCssVars,\n  })\n  await fs.writeFile(cssFilepath, output, \"utf8\")\n  cssVarsSpinner.succeed()\n}\n\nexport async function transformCssVars(\n  input: string,\n  cssVars: z.infer<typeof registryItemCssVarsSchema>,\n  config: Config,\n  options: {\n    cleanupDefaultNextStyles?: boolean\n    tailwindVersion?: TailwindVersion\n    tailwindConfig?: z.infer<typeof registryItemTailwindSchema>[\"config\"]\n    overwriteCssVars?: boolean\n  } = {\n    cleanupDefaultNextStyles: false,\n    tailwindVersion: \"v3\",\n    tailwindConfig: undefined,\n    overwriteCssVars: false,\n  }\n) {\n  options = {\n    cleanupDefaultNextStyles: false,\n    tailwindVersion: \"v3\",\n    tailwindConfig: undefined,\n    overwriteCssVars: false,\n    ...options,\n  }\n\n  let plugins = [updateCssVarsPlugin(cssVars)]\n\n  if (options.cleanupDefaultNextStyles) {\n    plugins.push(cleanupDefaultNextStylesPlugin())\n  }\n\n  if (options.tailwindVersion === \"v4\") {\n    plugins = []\n\n    plugins.push(addCustomVariant({ params: \"dark (&:is(.dark *))\" }))\n\n    if (options.cleanupDefaultNextStyles) {\n      plugins.push(cleanupDefaultNextStylesPlugin())\n    }\n\n    plugins.push(\n      updateCssVarsPluginV4(cssVars, {\n        overwriteCssVars: options.overwriteCssVars,\n      })\n    )\n    plugins.push(updateThemePlugin(cssVars))\n\n    if (options.tailwindConfig) {\n      plugins.push(updateTailwindConfigPlugin(options.tailwindConfig))\n      plugins.push(updateTailwindConfigAnimationPlugin(options.tailwindConfig))\n      plugins.push(updateTailwindConfigKeyframesPlugin(options.tailwindConfig))\n    }\n  }\n\n  const result = await postcss(plugins).process(input, {\n    from: undefined,\n  })\n\n  let output = result.css\n\n  output = output.replace(/\\/\\* ---break--- \\*\\//g, \"\")\n\n  if (options.tailwindVersion === \"v4\") {\n    output = output.replace(/(\\n\\s*\\n)+/g, \"\\n\\n\")\n  }\n\n  return output\n}\n\nfunction updateCssVarsPlugin(\n  cssVars: z.infer<typeof registryItemCssVarsSchema>\n) {\n  return {\n    postcssPlugin: \"update-css-vars\",\n    Once(root: Root) {\n      let baseLayer = root.nodes.find(\n        (node) =>\n          node.type === \"atrule\" &&\n          node.name === \"layer\" &&\n          node.params === \"base\"\n      ) as AtRule | undefined\n\n      if (!(baseLayer instanceof AtRule)) {\n        baseLayer = postcss.atRule({\n          name: \"layer\",\n          params: \"base\",\n          nodes: [],\n          raws: {\n            semicolon: true,\n            before: \"\\n\",\n            between: \" \",\n          },\n        })\n        root.append(baseLayer)\n        root.insertBefore(baseLayer, postcss.comment({ text: \"---break---\" }))\n      }\n\n      if (baseLayer !== undefined) {\n        // Add variables for each key in cssVars\n        Object.entries(cssVars).forEach(([key, vars]) => {\n          const selector = key === \"light\" ? \":root\" : `.${key}`\n          // TODO: Fix typecheck.\n          addOrUpdateVars(baseLayer as AtRule, selector, vars)\n        })\n      }\n    },\n  }\n}\n\nfunction removeConflictVars(root: Rule | Root) {\n  const rootRule = root.nodes.find(\n    (node): node is Rule => node.type === \"rule\" && node.selector === \":root\"\n  )\n\n  if (rootRule) {\n    const propsToRemove = [\"--background\", \"--foreground\"]\n\n    rootRule.nodes\n      .filter(\n        (node): node is postcss.Declaration =>\n          node.type === \"decl\" && propsToRemove.includes(node.prop)\n      )\n      .forEach((node) => node.remove())\n\n    if (rootRule.nodes.length === 0) {\n      rootRule.remove()\n    }\n  }\n}\n\nfunction cleanupDefaultNextStylesPlugin() {\n  return {\n    postcssPlugin: \"cleanup-default-next-styles\",\n    Once(root: Root) {\n      const bodyRule = root.nodes.find(\n        (node): node is Rule => node.type === \"rule\" && node.selector === \"body\"\n      )\n      if (bodyRule) {\n        // Remove color from the body node.\n        bodyRule.nodes\n          .find(\n            (node): node is postcss.Declaration =>\n              node.type === \"decl\" &&\n              node.prop === \"color\" &&\n              [\"rgb(var(--foreground-rgb))\", \"var(--foreground)\"].includes(\n                node.value\n              )\n          )\n          ?.remove()\n\n        // Remove background: linear-gradient.\n        bodyRule.nodes\n          .find((node): node is postcss.Declaration => {\n            return (\n              node.type === \"decl\" &&\n              node.prop === \"background\" &&\n              // This is only going to run on create project, so all good.\n              (node.value.startsWith(\"linear-gradient\") ||\n                node.value === \"var(--background)\")\n            )\n          })\n          ?.remove()\n\n        // Remove font-family: Arial, Helvetica, sans-serif;\n        bodyRule.nodes\n          .find(\n            (node): node is postcss.Declaration =>\n              node.type === \"decl\" &&\n              node.prop === \"font-family\" &&\n              node.value === \"Arial, Helvetica, sans-serif\"\n          )\n          ?.remove()\n\n        // If the body rule is empty, remove it.\n        if (bodyRule.nodes.length === 0) {\n          bodyRule.remove()\n        }\n      }\n\n      removeConflictVars(root)\n\n      const darkRootRule = root.nodes.find(\n        (node): node is Rule =>\n          node.type === \"atrule\" &&\n          node.params === \"(prefers-color-scheme: dark)\"\n      )\n\n      if (darkRootRule) {\n        removeConflictVars(darkRootRule)\n        if (darkRootRule.nodes.length === 0) {\n          darkRootRule.remove()\n        }\n      }\n    },\n  }\n}\n\nfunction addOrUpdateVars(\n  baseLayer: AtRule,\n  selector: string,\n  vars: Record<string, string>\n) {\n  let ruleNode = baseLayer.nodes?.find(\n    (node): node is Rule => node.type === \"rule\" && node.selector === selector\n  )\n\n  if (!ruleNode) {\n    if (Object.keys(vars).length > 0) {\n      ruleNode = postcss.rule({\n        selector,\n        raws: { between: \" \", before: \"\\n  \" },\n      })\n      baseLayer.append(ruleNode)\n    }\n  }\n\n  Object.entries(vars).forEach(([key, value]) => {\n    const prop = `--${key.replace(/^--/, \"\")}`\n    const newDecl = postcss.decl({\n      prop,\n      value,\n      raws: { semicolon: true },\n    })\n\n    const existingDecl = ruleNode?.nodes.find(\n      (node): node is postcss.Declaration =>\n        node.type === \"decl\" && node.prop === prop\n    )\n\n    existingDecl ? existingDecl.replaceWith(newDecl) : ruleNode?.append(newDecl)\n  })\n}\n\nfunction updateCssVarsPluginV4(\n  cssVars: z.infer<typeof registryItemCssVarsSchema>,\n  options: {\n    overwriteCssVars?: boolean\n  }\n) {\n  return {\n    postcssPlugin: \"update-css-vars-v4\",\n    Once(root: Root) {\n      Object.entries(cssVars).forEach(([key, vars]) => {\n        let selector = key === \"light\" ? \":root\" : `.${key}`\n\n        if (key === \"theme\") {\n          selector = \"@theme\"\n          const themeNode = upsertThemeNode(root)\n          Object.entries(vars).forEach(([key, value]) => {\n            const prop = `--${key.replace(/^--/, \"\")}`\n            const newDecl = postcss.decl({\n              prop,\n              value,\n              raws: { semicolon: true },\n            })\n\n            const existingDecl = themeNode?.nodes?.find(\n              (node): node is postcss.Declaration =>\n                node.type === \"decl\" && node.prop === prop\n            )\n\n            // Only overwrite if overwriteCssVars is true\n            // i.e for registry:theme and registry:style\n            // We do not want new components to overwrite existing vars.\n            // Keep user defined vars.\n            if (options.overwriteCssVars) {\n              if (existingDecl) {\n                existingDecl.replaceWith(newDecl)\n              } else {\n                themeNode?.append(newDecl)\n              }\n            } else {\n              if (!existingDecl) {\n                themeNode?.append(newDecl)\n              }\n            }\n          })\n          return\n        }\n\n        let ruleNode = root.nodes?.find(\n          (node): node is Rule =>\n            node.type === \"rule\" && node.selector === selector\n        )\n\n        if (!ruleNode && Object.keys(vars).length > 0) {\n          ruleNode = postcss.rule({\n            selector,\n            nodes: [],\n            raws: { semicolon: true, between: \" \", before: \"\\n\" },\n          })\n          root.append(ruleNode)\n          root.insertBefore(ruleNode, postcss.comment({ text: \"---break---\" }))\n        }\n\n        Object.entries(vars).forEach(([key, value]) => {\n          let prop = `--${key.replace(/^--/, \"\")}`\n\n          // Special case for sidebar-background.\n          if (prop === \"--sidebar-background\") {\n            prop = \"--sidebar\"\n          }\n\n          if (isLocalHSLValue(value)) {\n            value = `hsl(${value})`\n          }\n\n          const newDecl = postcss.decl({\n            prop,\n            value,\n            raws: { semicolon: true },\n          })\n          const existingDecl = ruleNode?.nodes.find(\n            (node): node is postcss.Declaration =>\n              node.type === \"decl\" && node.prop === prop\n          )\n\n          // Only overwrite if overwriteCssVars is true\n          // i.e for registry:theme and registry:style\n          // We do not want new components to overwrite existing vars.\n          // Keep user defined vars.\n          if (options.overwriteCssVars) {\n            if (existingDecl) {\n              existingDecl.replaceWith(newDecl)\n            } else {\n              ruleNode?.append(newDecl)\n            }\n          } else {\n            if (!existingDecl) {\n              ruleNode?.append(newDecl)\n            }\n          }\n        })\n      })\n    },\n  }\n}\n\nfunction updateThemePlugin(cssVars: z.infer<typeof registryItemCssVarsSchema>) {\n  return {\n    postcssPlugin: \"update-theme\",\n    Once(root: Root) {\n      // Find unique color names from light and dark.\n      const variables = Array.from(\n        new Set(\n          Object.keys(cssVars).flatMap((key) =>\n            Object.keys(cssVars[key as keyof typeof cssVars] || {})\n          )\n        )\n      )\n\n      if (!variables.length) {\n        return\n      }\n\n      const themeNode = upsertThemeNode(root)\n\n      const themeVarNodes = themeNode.nodes?.filter(\n        (node): node is postcss.Declaration =>\n          node.type === \"decl\" && node.prop.startsWith(\"--\")\n      )\n\n      for (const variable of variables) {\n        const value = Object.values(cssVars).find((vars) => vars[variable])?.[\n          variable\n        ]\n\n        if (!value) {\n          continue\n        }\n\n        if (variable === \"radius\") {\n          const radiusVariables = {\n            sm: \"calc(var(--radius) * 0.6)\",\n            md: \"calc(var(--radius) * 0.8)\",\n            lg: \"var(--radius)\",\n            xl: \"calc(var(--radius) * 1.4)\",\n            \"2xl\": \"calc(var(--radius) * 1.8)\",\n            \"3xl\": \"calc(var(--radius) * 2.2)\",\n            \"4xl\": \"calc(var(--radius) * 2.6)\",\n          }\n          for (const [key, value] of Object.entries(radiusVariables)) {\n            const cssVarNode = postcss.decl({\n              prop: `--radius-${key}`,\n              value,\n              raws: { semicolon: true },\n            })\n            if (\n              themeNode?.nodes?.find(\n                (node): node is postcss.Declaration =>\n                  node.type === \"decl\" && node.prop === cssVarNode.prop\n              )\n            ) {\n              continue\n            }\n            themeNode?.append(cssVarNode)\n          }\n          continue\n        }\n\n        let prop =\n          isLocalHSLValue(value) || isColorValue(value)\n            ? `--color-${variable.replace(/^--/, \"\")}`\n            : `--${variable.replace(/^--/, \"\")}`\n        if (prop === \"--color-sidebar-background\") {\n          prop = \"--color-sidebar\"\n        }\n\n        let propValue = `var(--${variable})`\n        if (prop === \"--color-sidebar\") {\n          propValue = \"var(--sidebar)\"\n        }\n\n        const cssVarNode = postcss.decl({\n          prop,\n          value: propValue,\n          raws: { semicolon: true },\n        })\n        const existingDecl = themeNode?.nodes?.find(\n          (node): node is postcss.Declaration =>\n            node.type === \"decl\" && node.prop === cssVarNode.prop\n        )\n        if (!existingDecl) {\n          if (themeVarNodes?.length) {\n            themeNode?.insertAfter(\n              themeVarNodes[themeVarNodes.length - 1],\n              cssVarNode\n            )\n          } else {\n            themeNode?.append(cssVarNode)\n          }\n        }\n      }\n    },\n  }\n}\n\nfunction upsertThemeNode(root: Root): AtRule {\n  let themeNode = root.nodes.find(\n    (node): node is AtRule =>\n      node.type === \"atrule\" &&\n      node.name === \"theme\" &&\n      node.params === \"inline\"\n  )\n\n  if (!themeNode) {\n    themeNode = postcss.atRule({\n      name: \"theme\",\n      params: \"inline\",\n      nodes: [],\n      raws: { semicolon: true, between: \" \", before: \"\\n\" },\n    })\n    root.append(themeNode)\n    root.insertBefore(themeNode, postcss.comment({ text: \"---break---\" }))\n  }\n\n  return themeNode\n}\n\nfunction addCustomVariant({ params }: { params: string }) {\n  return {\n    postcssPlugin: \"add-custom-variant\",\n    Once(root: Root) {\n      const customVariant = root.nodes.find(\n        (node): node is AtRule =>\n          node.type === \"atrule\" && node.name === \"custom-variant\"\n      )\n\n      if (!customVariant) {\n        // Find all import nodes\n        const importNodes = root.nodes.filter(\n          (node): node is AtRule =>\n            node.type === \"atrule\" && node.name === \"import\"\n        )\n\n        const variantNode = postcss.atRule({\n          name: \"custom-variant\",\n          params,\n          raws: { semicolon: true, before: \"\\n\" },\n        })\n\n        if (importNodes.length > 0) {\n          // Insert after the last import\n          const lastImport = importNodes[importNodes.length - 1]\n          root.insertAfter(lastImport, variantNode)\n        } else {\n          // If no imports, insert after the first node\n          root.insertAfter(root.nodes[0], variantNode)\n        }\n\n        root.insertBefore(variantNode, postcss.comment({ text: \"---break---\" }))\n      }\n    },\n  }\n}\n\nfunction addCustomImport({ params }: { params: string }) {\n  return {\n    postcssPlugin: \"add-custom-import\",\n    Once(root: Root) {\n      const importNodes = root.nodes.filter(\n        (node): node is AtRule =>\n          node.type === \"atrule\" && node.name === \"import\"\n      )\n\n      // Find custom variant node (to ensure we insert before it).\n      const customVariantNode = root.nodes.find(\n        (node): node is AtRule =>\n          node.type === \"atrule\" && node.name === \"custom-variant\"\n      )\n\n      // Check if our specific import already exists.\n      const hasImport = importNodes.some(\n        (node) => node.params.replace(/[\"']/g, \"\") === params\n      )\n\n      if (!hasImport) {\n        const importNode = postcss.atRule({\n          name: \"import\",\n          params: `\"${params}\"`,\n          raws: { semicolon: true, before: \"\\n\" },\n        })\n\n        if (importNodes.length > 0) {\n          // If there are existing imports, add after the last import.\n          const lastImport = importNodes[importNodes.length - 1]\n          root.insertAfter(lastImport, importNode)\n        } else if (customVariantNode) {\n          // If no imports but has custom-variant, insert before it.\n          root.insertBefore(customVariantNode, importNode)\n          root.insertBefore(\n            customVariantNode,\n            postcss.comment({ text: \"---break---\" })\n          )\n        } else {\n          // If no imports and no custom-variant, insert at the start.\n          root.prepend(importNode)\n          root.insertAfter(importNode, postcss.comment({ text: \"---break---\" }))\n        }\n      }\n    },\n  }\n}\n\nfunction updateTailwindConfigPlugin(\n  tailwindConfig: z.infer<typeof registryItemTailwindSchema>[\"config\"]\n) {\n  return {\n    postcssPlugin: \"update-tailwind-config\",\n    Once(root: Root) {\n      if (!tailwindConfig?.plugins) {\n        return\n      }\n\n      const quoteType = getQuoteType(root)\n      const quote = quoteType === \"single\" ? \"'\" : '\"'\n\n      const pluginNodes = root.nodes.filter(\n        (node): node is AtRule =>\n          node.type === \"atrule\" && node.name === \"plugin\"\n      )\n\n      const lastPluginNode =\n        pluginNodes[pluginNodes.length - 1] || root.nodes[0]\n\n      for (const plugin of tailwindConfig.plugins) {\n        const pluginName = plugin.replace(/^require\\([\"']|[\"']\\)$/g, \"\")\n\n        // Check if the plugin is already present.\n        if (\n          pluginNodes.some((node) => {\n            return node.params.replace(/[\"']/g, \"\") === pluginName\n          })\n        ) {\n          continue\n        }\n\n        const pluginNode = postcss.atRule({\n          name: \"plugin\",\n          params: `${quote}${pluginName}${quote}`,\n          raws: { semicolon: true, before: \"\\n\" },\n        })\n        root.insertAfter(lastPluginNode, pluginNode)\n        root.insertBefore(pluginNode, postcss.comment({ text: \"---break---\" }))\n      }\n    },\n  }\n}\n\nfunction updateTailwindConfigKeyframesPlugin(\n  tailwindConfig: z.infer<typeof registryItemTailwindSchema>[\"config\"]\n) {\n  return {\n    postcssPlugin: \"update-tailwind-config-keyframes\",\n    Once(root: Root) {\n      if (!tailwindConfig?.theme?.extend?.keyframes) {\n        return\n      }\n\n      const themeNode = upsertThemeNode(root)\n      const existingKeyFrameNodes = themeNode.nodes?.filter(\n        (node): node is AtRule =>\n          node.type === \"atrule\" && node.name === \"keyframes\"\n      )\n\n      const keyframeValueSchema = z.record(\n        z.string(),\n        z.record(z.string(), z.string())\n      )\n\n      for (const [keyframeName, keyframeValue] of Object.entries(\n        tailwindConfig.theme.extend.keyframes\n      )) {\n        if (typeof keyframeName !== \"string\") {\n          continue\n        }\n\n        const parsedKeyframeValue = keyframeValueSchema.safeParse(keyframeValue)\n\n        if (!parsedKeyframeValue.success) {\n          continue\n        }\n\n        if (\n          existingKeyFrameNodes?.find(\n            (node): node is postcss.AtRule =>\n              node.type === \"atrule\" &&\n              node.name === \"keyframes\" &&\n              node.params === keyframeName\n          )\n        ) {\n          continue\n        }\n\n        const keyframeNode = postcss.atRule({\n          name: \"keyframes\",\n          params: keyframeName,\n          nodes: [],\n          raws: { semicolon: true, between: \" \", before: \"\\n  \" },\n        })\n\n        for (const [key, values] of Object.entries(parsedKeyframeValue.data)) {\n          const rule = postcss.rule({\n            selector: key,\n            nodes: Object.entries(values).map(([key, value]) =>\n              postcss.decl({\n                prop: key,\n                value,\n                raws: { semicolon: true, before: \"\\n      \", between: \": \" },\n              })\n            ),\n            raws: { semicolon: true, between: \" \", before: \"\\n    \" },\n          })\n          keyframeNode.append(rule)\n        }\n\n        themeNode.append(keyframeNode)\n        themeNode.insertBefore(\n          keyframeNode,\n          postcss.comment({ text: \"---break---\" })\n        )\n      }\n    },\n  }\n}\n\nfunction updateTailwindConfigAnimationPlugin(\n  tailwindConfig: z.infer<typeof registryItemTailwindSchema>[\"config\"]\n) {\n  return {\n    postcssPlugin: \"update-tailwind-config-animation\",\n    Once(root: Root) {\n      if (!tailwindConfig?.theme?.extend?.animation) {\n        return\n      }\n\n      const themeNode = upsertThemeNode(root)\n      const existingAnimationNodes = themeNode.nodes?.filter(\n        (node): node is postcss.Declaration =>\n          node.type === \"decl\" && node.prop.startsWith(\"--animate-\")\n      )\n\n      const parsedAnimationValue = z\n        .record(z.string(), z.string())\n        .safeParse(tailwindConfig.theme.extend.animation)\n      if (!parsedAnimationValue.success) {\n        return\n      }\n\n      for (const [key, value] of Object.entries(parsedAnimationValue.data)) {\n        const prop = `--animate-${key}`\n        if (\n          existingAnimationNodes?.find(\n            (node): node is postcss.Declaration => node.prop === prop\n          )\n        ) {\n          continue\n        }\n\n        const animationNode = postcss.decl({\n          prop,\n          value,\n          raws: { semicolon: true, between: \": \", before: \"\\n  \" },\n        })\n        themeNode.append(animationNode)\n      }\n    },\n  }\n}\n\nfunction getQuoteType(root: Root): \"single\" | \"double\" {\n  const firstNode = root.nodes[0]\n  const raw = firstNode.toString()\n\n  if (raw.includes(\"'\")) {\n    return \"single\"\n  }\n  return \"double\"\n}\n\nexport function isLocalHSLValue(value: string) {\n  if (\n    value.startsWith(\"hsl\") ||\n    value.startsWith(\"rgb\") ||\n    value.startsWith(\"#\") ||\n    value.startsWith(\"oklch\")\n  ) {\n    return false\n  }\n\n  const chunks = value.split(\" \")\n\n  return (\n    chunks.length === 3 &&\n    chunks.slice(1, 3).every((chunk) => chunk.includes(\"%\"))\n  )\n}\n\nexport function isColorValue(value: string) {\n  return (\n    value.startsWith(\"hsl\") ||\n    value.startsWith(\"rgb\") ||\n    value.startsWith(\"#\") ||\n    value.startsWith(\"oklch\") ||\n    value.includes(\"--color-\")\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-css.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport {\n  registryItemCssSchema,\n  registryItemCssVarsSchema,\n  registryItemTailwindSchema,\n} from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { TailwindVersion } from \"@/src/utils/get-project-info\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { transformCssVars } from \"@/src/utils/updaters/update-css-vars\"\nimport postcss from \"postcss\"\nimport AtRule from \"postcss/lib/at-rule\"\nimport Declaration from \"postcss/lib/declaration\"\nimport Root from \"postcss/lib/root\"\nimport Rule from \"postcss/lib/rule\"\nimport { twMerge } from \"tailwind-merge\"\nimport { z } from \"zod\"\n\nexport async function updateCss(\n  css: z.infer<typeof registryItemCssSchema> | undefined,\n  config: Config,\n  options: {\n    silent?: boolean\n    cssVars?: z.infer<typeof registryItemCssVarsSchema>\n    cleanupDefaultNextStyles?: boolean\n    overwriteCssVars?: boolean\n    tailwindVersion?: TailwindVersion\n    tailwindConfig?: z.infer<typeof registryItemTailwindSchema>[\"config\"]\n  }\n) {\n  const hasCss = css && Object.keys(css).length > 0\n  const hasCssVars = Object.keys(options.cssVars ?? {}).length > 0\n\n  if (!config.resolvedPaths.tailwindCss || (!hasCss && !hasCssVars)) {\n    return\n  }\n\n  options = {\n    silent: false,\n    ...options,\n  }\n\n  const cssFilepath = config.resolvedPaths.tailwindCss\n  const cssFilepathRelative = path.relative(\n    config.resolvedPaths.cwd,\n    cssFilepath\n  )\n  const cssSpinner = spinner(\n    `Updating ${highlighter.info(cssFilepathRelative)}`,\n    {\n      silent: options.silent,\n    }\n  ).start()\n\n  let output = await fs.readFile(cssFilepath, \"utf8\")\n\n  // Apply CSS vars transform first if provided.\n  if (hasCssVars) {\n    output = await transformCssVars(output, options.cssVars!, config, {\n      cleanupDefaultNextStyles: options.cleanupDefaultNextStyles,\n      tailwindVersion: options.tailwindVersion,\n      tailwindConfig: options.tailwindConfig,\n      overwriteCssVars: options.overwriteCssVars,\n    })\n  }\n\n  // Apply CSS transform if provided.\n  if (hasCss) {\n    output = await transformCss(output, css!)\n  }\n\n  await fs.writeFile(cssFilepath, output, \"utf8\")\n  cssSpinner.succeed()\n}\n\nexport async function transformCss(\n  input: string,\n  css: z.infer<typeof registryItemCssSchema>\n) {\n  const plugins = [updateCssPlugin(css)]\n\n  const result = await postcss(plugins).process(input, {\n    from: undefined,\n  })\n\n  let output = result.css\n\n  // PostCSS doesn't add semicolons to at-rules without bodies when they're the last node.\n  // We need to manually ensure they have semicolons.\n  const root = result.root\n  if (root.nodes && root.nodes.length > 0) {\n    const lastNode = root.nodes[root.nodes.length - 1]\n    if (\n      lastNode.type === \"atrule\" &&\n      !lastNode.nodes &&\n      !output.trimEnd().endsWith(\";\")\n    ) {\n      output = output.trimEnd() + \";\"\n    }\n  }\n\n  output = output.replace(/\\/\\* ---break--- \\*\\//g, \"\")\n  output = output.replace(/(\\n\\s*\\n)+/g, \"\\n\\n\")\n  output = output.trimEnd()\n\n  return output\n}\n\nfunction updateCssPlugin(css: z.infer<typeof registryItemCssSchema>) {\n  return {\n    postcssPlugin: \"update-css\",\n    Once(root: Root) {\n      for (const [selector, properties] of Object.entries(css)) {\n        if (selector.startsWith(\"@\")) {\n          // Handle at-rules (@layer, @utility, etc.)\n          const atRuleMatch = selector.match(/@([a-zA-Z-]+)\\s*(.*)/)\n          if (!atRuleMatch) continue\n\n          const [, name, params] = atRuleMatch\n\n          // Special handling for imports - place them at the top.\n          if (name === \"import\") {\n            // Check if this import already exists.\n            const existingImport = root.nodes?.find(\n              (node): node is AtRule =>\n                node.type === \"atrule\" &&\n                node.name === \"import\" &&\n                node.params === params\n            )\n\n            if (!existingImport) {\n              const importRule = postcss.atRule({\n                name: \"import\",\n                params,\n                raws: { semicolon: true },\n              })\n\n              // Find the last import to insert after, or insert at beginning.\n              const importNodes = root.nodes?.filter(\n                (node): node is AtRule =>\n                  node.type === \"atrule\" && node.name === \"import\"\n              )\n\n              if (importNodes && importNodes.length > 0) {\n                // Insert after the last existing import.\n                const lastImport = importNodes[importNodes.length - 1]\n                importRule.raws.before = \"\\n\"\n                root.insertAfter(lastImport, importRule)\n              } else {\n                // No imports exist, insert at the very beginning.\n                // Check if the file is empty.\n                if (!root.nodes || root.nodes.length === 0) {\n                  importRule.raws.before = \"\"\n                } else {\n                  importRule.raws.before = \"\"\n                }\n                root.prepend(importRule)\n              }\n            }\n          }\n          // Special handling for plugins - place them after imports.\n          else if (name === \"plugin\") {\n            // Ensure plugin name is quoted if not already.\n            let quotedParams = params\n            if (params && !params.startsWith('\"') && !params.startsWith(\"'\")) {\n              quotedParams = `\"${params}\"`\n            }\n\n            // Normalize params for comparison (remove quotes).\n            const normalizeParams = (p: string) => {\n              if (p.startsWith('\"') && p.endsWith('\"')) {\n                return p.slice(1, -1)\n              }\n              if (p.startsWith(\"'\") && p.endsWith(\"'\")) {\n                return p.slice(1, -1)\n              }\n              return p\n            }\n\n            // Find existing plugin with same normalized params.\n            const existingPlugin = root.nodes?.find((node): node is AtRule => {\n              if (node.type !== \"atrule\" || node.name !== \"plugin\") {\n                return false\n              }\n              return normalizeParams(node.params) === normalizeParams(params)\n            })\n\n            if (!existingPlugin) {\n              const pluginRule = postcss.atRule({\n                name: \"plugin\",\n                params: quotedParams,\n                raws: { semicolon: true, before: \"\\n\" },\n              })\n\n              // Find the last import or plugin node to insert after\n              const importNodes = root.nodes?.filter(\n                (node): node is AtRule =>\n                  node.type === \"atrule\" && node.name === \"import\"\n              )\n\n              const pluginNodes = root.nodes?.filter(\n                (node): node is AtRule =>\n                  node.type === \"atrule\" && node.name === \"plugin\"\n              )\n\n              if (pluginNodes && pluginNodes.length > 0) {\n                // Insert after the last existing plugin\n                const lastPlugin = pluginNodes[pluginNodes.length - 1]\n                root.insertAfter(lastPlugin, pluginRule)\n              } else if (importNodes && importNodes.length > 0) {\n                // Insert after the last import if no plugins exist\n                const lastImport = importNodes[importNodes.length - 1]\n                root.insertAfter(lastImport, pluginRule)\n                // Add a break comment before the first plugin to create spacing\n                root.insertBefore(\n                  pluginRule,\n                  postcss.comment({ text: \"---break---\" })\n                )\n                // Add a break comment after the plugin for spacing from other content\n                root.insertAfter(\n                  pluginRule,\n                  postcss.comment({ text: \"---break---\" })\n                )\n              } else {\n                // If no imports or plugins, insert at the beginning\n                root.prepend(pluginRule)\n                // Add a break comment before the first plugin for spacing\n                root.insertBefore(\n                  pluginRule,\n                  postcss.comment({ text: \"---break---\" })\n                )\n                // Add a break comment after the plugin for spacing from other content\n                root.insertAfter(\n                  pluginRule,\n                  postcss.comment({ text: \"---break---\" })\n                )\n              }\n            }\n          }\n          // Check if this is any at-rule with no body (empty object).\n          else if (\n            typeof properties === \"object\" &&\n            Object.keys(properties).length === 0\n          ) {\n            // Handle any at-rule with no body (e.g., @apply, @tailwind, etc.).\n            const atRule = root.nodes?.find(\n              (node): node is AtRule =>\n                node.type === \"atrule\" &&\n                node.name === name &&\n                node.params === params\n            ) as AtRule | undefined\n\n            if (!atRule) {\n              const newAtRule = postcss.atRule({\n                name,\n                params,\n                raws: { semicolon: true },\n              })\n\n              root.append(newAtRule)\n              root.insertBefore(\n                newAtRule,\n                postcss.comment({ text: \"---break---\" })\n              )\n            }\n          }\n          // Special handling for keyframes - place them under @theme inline.\n          else if (name === \"keyframes\") {\n            let themeInline = root.nodes?.find(\n              (node): node is AtRule =>\n                node.type === \"atrule\" &&\n                node.name === \"theme\" &&\n                node.params === \"inline\"\n            ) as AtRule | undefined\n\n            if (!themeInline) {\n              themeInline = postcss.atRule({\n                name: \"theme\",\n                params: \"inline\",\n                raws: { semicolon: true, between: \" \", before: \"\\n\" },\n              })\n              root.append(themeInline)\n              root.insertBefore(\n                themeInline,\n                postcss.comment({ text: \"---break---\" })\n              )\n            }\n\n            // Check if a keyframe with the same name already exists\n            const existingKeyframesRule = themeInline.nodes?.find(\n              (node): node is AtRule =>\n                node.type === \"atrule\" &&\n                node.name === \"keyframes\" &&\n                node.params === params\n            )\n\n            let keyframesRule: AtRule\n            if (existingKeyframesRule) {\n              // Replace existing keyframe\n              keyframesRule = postcss.atRule({\n                name: \"keyframes\",\n                params,\n                raws: { semicolon: true, between: \" \", before: \"\\n  \" },\n              })\n              existingKeyframesRule.replaceWith(keyframesRule)\n            } else {\n              // Create new keyframe\n              keyframesRule = postcss.atRule({\n                name: \"keyframes\",\n                params,\n                raws: { semicolon: true, between: \" \", before: \"\\n  \" },\n              })\n              themeInline.append(keyframesRule)\n            }\n\n            if (typeof properties === \"object\") {\n              for (const [step, stepProps] of Object.entries(properties)) {\n                processRule(keyframesRule, step, stepProps)\n              }\n            }\n          }\n          // Special handling for utility classes to preserve property values\n          else if (name === \"utility\") {\n            const utilityAtRule = root.nodes?.find(\n              (node): node is AtRule =>\n                node.type === \"atrule\" &&\n                node.name === name &&\n                node.params === params\n            ) as AtRule | undefined\n\n            if (!utilityAtRule) {\n              const atRule = postcss.atRule({\n                name,\n                params,\n                raws: { semicolon: true, between: \" \", before: \"\\n\" },\n              })\n\n              root.append(atRule)\n              root.insertBefore(\n                atRule,\n                postcss.comment({ text: \"---break---\" })\n              )\n\n              // Add declarations with their values preserved.\n              if (typeof properties === \"object\") {\n                for (const [prop, value] of Object.entries(properties)) {\n                  if (typeof value === \"string\") {\n                    const decl = postcss.decl({\n                      prop,\n                      value: value,\n                      raws: { semicolon: true, before: \"\\n    \" },\n                    })\n                    atRule.append(decl)\n                  } else if (\n                    prop.startsWith(\"@\") &&\n                    typeof value === \"object\" &&\n                    value !== null &&\n                    Object.keys(value as Record<string, unknown>).length === 0\n                  ) {\n                    // Handle at-rules with no body (e.g., @apply).\n                    const atRuleMatch = prop.match(/@([a-zA-Z-]+)\\s*(.*)/)\n                    if (atRuleMatch) {\n                      const [, atRuleName, atRuleParams] = atRuleMatch\n                      const existingAtRule = atRule.nodes?.find(\n                        (node): node is AtRule =>\n                          node.type === \"atrule\" &&\n                          node.name === atRuleName &&\n                          node.params === atRuleParams\n                      )\n                      if (!existingAtRule) {\n                        const newAtRule = postcss.atRule({\n                          name: atRuleName,\n                          params: atRuleParams,\n                          raws: { semicolon: true, before: \"\\n    \" },\n                        })\n                        atRule.append(newAtRule)\n                      }\n                    }\n                  } else if (typeof value === \"object\") {\n                    processRule(atRule, prop, value)\n                  }\n                }\n              }\n            } else {\n              // Update existing utility class.\n              if (typeof properties === \"object\") {\n                for (const [prop, value] of Object.entries(properties)) {\n                  if (typeof value === \"string\") {\n                    const existingDecl = utilityAtRule.nodes?.find(\n                      (node): node is Declaration =>\n                        node.type === \"decl\" && node.prop === prop\n                    )\n\n                    const decl = postcss.decl({\n                      prop,\n                      value: value,\n                      raws: { semicolon: true, before: \"\\n    \" },\n                    })\n\n                    existingDecl\n                      ? existingDecl.replaceWith(decl)\n                      : utilityAtRule.append(decl)\n                  } else if (\n                    prop.startsWith(\"@\") &&\n                    typeof value === \"object\" &&\n                    value !== null &&\n                    Object.keys(value as Record<string, unknown>).length === 0\n                  ) {\n                    // Handle at-rules with no body (e.g., @apply).\n                    const atRuleMatch = prop.match(/@([a-zA-Z-]+)\\s*(.*)/)\n                    if (atRuleMatch) {\n                      const [, atRuleName, atRuleParams] = atRuleMatch\n                      const existingAtRule = utilityAtRule.nodes?.find(\n                        (node): node is AtRule =>\n                          node.type === \"atrule\" &&\n                          node.name === atRuleName &&\n                          node.params === atRuleParams\n                      )\n                      if (!existingAtRule) {\n                        const newAtRule = postcss.atRule({\n                          name: atRuleName,\n                          params: atRuleParams,\n                          raws: { semicolon: true, before: \"\\n    \" },\n                        })\n                        utilityAtRule.append(newAtRule)\n                      }\n                    }\n                  } else if (typeof value === \"object\") {\n                    processRule(utilityAtRule, prop, value)\n                  }\n                }\n              }\n            }\n          }\n          // Handle at-property as regular CSS rules\n          else if (name === \"property\") {\n            processRule(root, selector, properties)\n          } else {\n            // Handle other at-rules normally\n            processAtRule(root, name, params, properties)\n          }\n        } else {\n          // Handle regular CSS rules\n          processRule(root, selector, properties)\n        }\n      }\n    },\n  }\n}\n\nfunction processAtRule(\n  root: Root | AtRule,\n  name: string,\n  params: string,\n  properties: any\n) {\n  // Find or create the at-rule\n  let atRule = root.nodes?.find(\n    (node): node is AtRule =>\n      node.type === \"atrule\" && node.name === name && node.params === params\n  ) as AtRule | undefined\n\n  if (!atRule) {\n    atRule = postcss.atRule({\n      name,\n      params,\n      raws: { semicolon: true, between: \" \", before: \"\\n\" },\n    })\n    root.append(atRule)\n    root.insertBefore(atRule, postcss.comment({ text: \"---break---\" }))\n  }\n\n  // Process children of this at-rule\n  if (typeof properties === \"object\") {\n    for (const [childSelector, childProps] of Object.entries(properties)) {\n      if (childSelector.startsWith(\"@\")) {\n        // Nested at-rule\n        const nestedMatch = childSelector.match(/@([a-zA-Z-]+)\\s*(.*)/)\n        if (nestedMatch) {\n          const [, nestedName, nestedParams] = nestedMatch\n          processAtRule(atRule, nestedName, nestedParams, childProps)\n        }\n      } else {\n        // CSS rule within at-rule\n        processRule(atRule, childSelector, childProps)\n      }\n    }\n  } else if (typeof properties === \"string\") {\n    // Direct string content for the at-rule\n    try {\n      // Parse the CSS string with PostCSS\n      const parsed = postcss.parse(`.temp{${properties}}`)\n      const tempRule = parsed.first as Rule\n\n      if (tempRule && tempRule.nodes) {\n        // Create a rule for the at-rule if needed\n        const rule = postcss.rule({\n          selector: \"temp\",\n          raws: { semicolon: true, between: \" \", before: \"\\n  \" },\n        })\n\n        // Copy all declarations from the temp rule to our actual rule\n        tempRule.nodes.forEach((node) => {\n          if (node.type === \"decl\") {\n            const clone = node.clone()\n            clone.raws.before = \"\\n    \"\n            rule.append(clone)\n          }\n        })\n\n        // Only add the rule if it has declarations\n        if (rule.nodes?.length) {\n          atRule.append(rule)\n        }\n      }\n    } catch (error) {\n      console.error(\"Error parsing at-rule content:\", properties, error)\n      throw error\n    }\n  }\n}\n\nfunction processRule(parent: Root | AtRule, selector: string, properties: any) {\n  let rule = parent.nodes?.find(\n    (node): node is Rule => node.type === \"rule\" && node.selector === selector\n  ) as Rule | undefined\n\n  if (!rule) {\n    rule = postcss.rule({\n      selector,\n      raws: { semicolon: true, between: \" \", before: \"\\n  \" },\n    })\n    parent.append(rule)\n  }\n\n  if (typeof properties === \"object\") {\n    for (const [prop, value] of Object.entries(properties)) {\n      // Check if this is any at-rule with empty object (no body).\n      if (\n        prop.startsWith(\"@\") &&\n        typeof value === \"object\" &&\n        value !== null &&\n        Object.keys(value).length === 0\n      ) {\n        // Parse the at-rule.\n        const atRuleMatch = prop.match(/@([a-zA-Z-]+)\\s*(.*)/)\n        if (atRuleMatch) {\n          const [, atRuleName, atRuleParams] = atRuleMatch\n\n          // Check if this at-rule already exists in the rule.\n          const existingAtRule = rule.nodes?.find(\n            (node): node is AtRule =>\n              node.type === \"atrule\" &&\n              node.name === atRuleName &&\n              node.params === atRuleParams\n          )\n\n          if (!existingAtRule) {\n            // For @apply, merge with existing @apply instead of creating a duplicate.\n            if (atRuleName === \"apply\") {\n              const existingApply = rule.nodes?.find(\n                (node): node is AtRule =>\n                  node.type === \"atrule\" && node.name === \"apply\"\n              )\n              if (existingApply) {\n                existingApply.params = twMerge(\n                  existingApply.params,\n                  atRuleParams\n                )\n                continue\n              }\n            }\n            const atRule = postcss.atRule({\n              name: atRuleName,\n              params: atRuleParams,\n              raws: { semicolon: true, before: \"\\n    \" },\n            })\n            rule.append(atRule)\n          }\n        }\n      } else if (typeof value === \"string\") {\n        const decl = postcss.decl({\n          prop,\n          value: value,\n          raws: { semicolon: true, before: \"\\n    \" },\n        })\n\n        // Replace existing property or add new one.\n        const existingDecl = rule.nodes?.find(\n          (node): node is Declaration =>\n            node.type === \"decl\" && node.prop === prop\n        )\n\n        existingDecl ? existingDecl.replaceWith(decl) : rule.append(decl)\n      } else if (typeof value === \"object\") {\n        // Nested selector (including & selectors).\n        const nestedSelector = prop.startsWith(\"&\")\n          ? selector.replace(/^([^:]+)/, `$1${prop.substring(1)}`)\n          : prop // Use the original selector for other nested elements.\n        processRule(parent, nestedSelector, value)\n      }\n    }\n  } else if (typeof properties === \"string\") {\n    // Direct string content for the rule\n    try {\n      // Parse the CSS string with PostCSS\n      const parsed = postcss.parse(`.temp{${properties}}`)\n      const tempRule = parsed.first as Rule\n\n      if (tempRule && tempRule.nodes) {\n        // Copy all declarations from the temp rule to our actual rule\n        tempRule.nodes.forEach((node) => {\n          if (node.type === \"decl\") {\n            const clone = node.clone()\n            clone.raws.before = \"\\n    \"\n            rule?.append(clone)\n          }\n        })\n      }\n    } catch (error) {\n      console.error(\"Error parsing rule content:\", selector, properties, error)\n      throw error\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-dependencies.ts",
    "content": "import { SHADCN_URL } from \"@/src/registry/constants\"\nimport { RegistryItem } from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { getPackageInfo } from \"@/src/utils/get-package-info\"\nimport { getPackageManager } from \"@/src/utils/get-package-manager\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { execa } from \"execa\"\nimport prompts from \"prompts\"\n\nexport async function updateDependencies(\n  dependencies: RegistryItem[\"dependencies\"],\n  devDependencies: RegistryItem[\"devDependencies\"],\n  config: Config,\n  options: {\n    silent?: boolean\n  }\n) {\n  dependencies = Array.from(new Set(dependencies))\n  devDependencies = Array.from(new Set(devDependencies))\n\n  if (!dependencies?.length && !devDependencies?.length) {\n    return\n  }\n\n  options = {\n    silent: false,\n    ...options,\n  }\n\n  const dependenciesSpinner = spinner(`Installing dependencies.`, {\n    silent: options.silent,\n  })?.start()\n  const packageManager = await getUpdateDependenciesPackageManager(config)\n\n  // Offer to use --force or --legacy-peer-deps if using React 19 with npm.\n  let flag = \"\"\n  if (shouldPromptForNpmFlag(config) && packageManager === \"npm\") {\n    if (options.silent) {\n      flag = \"force\"\n    } else {\n      dependenciesSpinner.stopAndPersist()\n      logger.warn(\n        `\\nIt looks like you are using React 19. \\nSome packages may fail to install due to peer dependency issues in npm (see ${SHADCN_URL}/react-19).\\n`\n      )\n      const confirmation = await prompts([\n        {\n          type: \"select\",\n          name: \"flag\",\n          message: \"How would you like to proceed?\",\n          choices: [\n            { title: \"Use --force\", value: \"force\" },\n            { title: \"Use --legacy-peer-deps\", value: \"legacy-peer-deps\" },\n          ],\n        },\n      ])\n\n      if (confirmation) {\n        flag = confirmation.flag\n      }\n    }\n  }\n\n  dependenciesSpinner?.start()\n\n  await installWithPackageManager(\n    packageManager,\n    dependencies,\n    devDependencies,\n    config.resolvedPaths.cwd,\n    flag\n  )\n\n  dependenciesSpinner?.succeed()\n}\n\nfunction shouldPromptForNpmFlag(config: Config) {\n  const packageInfo = getPackageInfo(config.resolvedPaths.cwd, false)\n\n  if (!packageInfo?.dependencies?.react) {\n    return false\n  }\n\n  const hasReact19 = /^(?:\\^|~)?19(?:\\.\\d+)*(?:-.*)?$/.test(\n    packageInfo.dependencies.react\n  )\n  const hasReactDayPicker8 =\n    packageInfo.dependencies[\"react-day-picker\"]?.startsWith(\"8\")\n\n  return hasReact19 && hasReactDayPicker8\n}\n\nasync function getUpdateDependenciesPackageManager(config: Config) {\n  const expoVersion = getPackageInfo(config.resolvedPaths.cwd, false)\n    ?.dependencies?.expo\n\n  if (expoVersion) {\n    // Ensures package versions match the React Native version.\n    // https://docs.expo.dev/more/expo-cli/#install\n    return \"expo\"\n  }\n\n  return getPackageManager(config.resolvedPaths.cwd)\n}\n\nasync function installWithPackageManager(\n  packageManager: Awaited<\n    ReturnType<typeof getUpdateDependenciesPackageManager>\n  >,\n  dependencies: string[],\n  devDependencies: string[],\n  cwd: string,\n  flag?: string\n) {\n  if (packageManager === \"npm\") {\n    return installWithNpm(dependencies, devDependencies, cwd, flag)\n  }\n\n  if (packageManager === \"deno\") {\n    return installWithDeno(dependencies, devDependencies, cwd)\n  }\n\n  if (packageManager === \"expo\") {\n    return installWithExpo(dependencies, devDependencies, cwd)\n  }\n\n  if (dependencies?.length) {\n    await execa(packageManager, [\"add\", ...dependencies], {\n      cwd,\n    })\n  }\n\n  if (devDependencies?.length) {\n    await execa(packageManager, [\"add\", \"-D\", ...devDependencies], { cwd })\n  }\n}\n\nasync function installWithNpm(\n  dependencies: string[],\n  devDependencies: string[],\n  cwd: string,\n  flag?: string\n) {\n  if (dependencies.length) {\n    await execa(\n      \"npm\",\n      [\"install\", ...(flag ? [`--${flag}`] : []), ...dependencies],\n      { cwd }\n    )\n  }\n\n  if (devDependencies.length) {\n    await execa(\n      \"npm\",\n      [\"install\", ...(flag ? [`--${flag}`] : []), \"-D\", ...devDependencies],\n      { cwd }\n    )\n  }\n}\n\nasync function installWithDeno(\n  dependencies: string[],\n  devDependencies: string[],\n  cwd: string\n) {\n  if (dependencies?.length) {\n    await execa(\"deno\", [\"add\", ...dependencies.map((dep) => `npm:${dep}`)], {\n      cwd,\n    })\n  }\n\n  if (devDependencies?.length) {\n    await execa(\n      \"deno\",\n      [\"add\", \"-D\", ...devDependencies.map((dep) => `npm:${dep}`)],\n      { cwd }\n    )\n  }\n}\n\nasync function installWithExpo(\n  dependencies: string[],\n  devDependencies: string[],\n  cwd: string\n) {\n  if (dependencies.length) {\n    await execa(\"npx\", [\"expo\", \"install\", ...dependencies], { cwd })\n  }\n\n  if (devDependencies.length) {\n    await execa(\"npx\", [\"expo\", \"install\", \"-- -D\", ...devDependencies], {\n      cwd,\n    })\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-env-vars.test.ts",
    "content": "import { existsSync, promises as fs } from \"fs\"\nimport type { Config } from \"@/src/utils/get-config\"\nimport { afterEach, beforeEach, describe, expect, test, vi } from \"vitest\"\n\nimport { updateEnvVars } from \"./update-env-vars\"\n\nvi.mock(\"fs\", () => ({\n  existsSync: vi.fn(),\n  promises: {\n    readFile: vi.fn(),\n    writeFile: vi.fn(),\n  },\n}))\n\nvi.mock(\"@/src/utils/logger\", () => ({\n  logger: {\n    info: vi.fn(),\n    log: vi.fn(),\n    success: vi.fn(),\n    break: vi.fn(),\n  },\n}))\n\nvi.mock(\"@/src/utils/spinner\", () => ({\n  spinner: vi.fn(() => ({\n    start: vi.fn().mockReturnThis(),\n    stop: vi.fn(),\n    succeed: vi.fn(),\n  })),\n}))\n\nconst mockConfig: Config = {\n  style: \"default\",\n  rsc: false,\n  tailwind: {\n    config: \"tailwind.config.js\",\n    css: \"app/globals.css\",\n    baseColor: \"slate\",\n    prefix: \"\",\n    cssVariables: false,\n  },\n  tsx: true,\n  aliases: {\n    components: \"@/components\",\n    ui: \"@/components/ui\",\n    lib: \"@/lib\",\n    hooks: \"@/hooks\",\n    utils: \"@/utils\",\n  },\n  resolvedPaths: {\n    cwd: \"/test/project\",\n    tailwindConfig: \"/test/project/tailwind.config.js\",\n    tailwindCss: \"/test/project/app/globals.css\",\n    components: \"/test/project/components\",\n    ui: \"/test/project/components/ui\",\n    lib: \"/test/project/lib\",\n    hooks: \"/test/project/hooks\",\n    utils: \"/test/project/utils\",\n  },\n}\n\ndescribe(\"updateEnvVars\", () => {\n  beforeEach(() => {\n    vi.clearAllMocks()\n  })\n\n  afterEach(() => {\n    vi.resetAllMocks()\n  })\n\n  test(\"should create new .env.local file when none exists\", async () => {\n    vi.mocked(existsSync).mockReturnValue(false)\n\n    const envVars = {\n      API_KEY: \"test-key\",\n      API_URL: \"https://api.example.com\",\n    }\n\n    const result = await updateEnvVars(envVars, mockConfig, { silent: true })\n\n    expect(vi.mocked(fs.writeFile)).toHaveBeenCalledWith(\n      \"/test/project/.env.local\",\n      \"API_KEY=test-key\\nAPI_URL=https://api.example.com\\n\",\n      \"utf-8\"\n    )\n    expect(result).toEqual({\n      envVarsAdded: [\"API_KEY\", \"API_URL\"],\n      envFileUpdated: null,\n      envFileCreated: \".env.local\",\n    })\n  })\n\n  test(\"should update existing .env.local file with new variables\", async () => {\n    vi.mocked(existsSync).mockReturnValue(true)\n    vi.mocked(fs.readFile).mockResolvedValue(\"EXISTING_KEY=existing-value\\n\")\n\n    const envVars = {\n      NEW_KEY: \"new-value\",\n      ANOTHER_KEY: \"another-value\",\n    }\n\n    const result = await updateEnvVars(envVars, mockConfig, { silent: true })\n\n    expect(vi.mocked(fs.writeFile)).toHaveBeenCalledWith(\n      \"/test/project/.env.local\",\n      \"EXISTING_KEY=existing-value\\n\\nNEW_KEY=new-value\\nANOTHER_KEY=another-value\\n\",\n      \"utf-8\"\n    )\n    expect(result).toEqual({\n      envVarsAdded: [\"NEW_KEY\", \"ANOTHER_KEY\"],\n      envFileUpdated: \".env.local\",\n      envFileCreated: null,\n    })\n  })\n\n  test(\"should skip when all variables already exist\", async () => {\n    vi.mocked(existsSync).mockReturnValue(true)\n    vi.mocked(fs.readFile).mockResolvedValue(\n      \"API_KEY=existing-key\\nAPI_URL=existing-url\\n\"\n    )\n\n    const envVars = {\n      API_KEY: \"new-key\",\n      API_URL: \"new-url\",\n    }\n\n    const result = await updateEnvVars(envVars, mockConfig, { silent: true })\n\n    expect(vi.mocked(fs.writeFile)).not.toHaveBeenCalled()\n    expect(result).toEqual({\n      envVarsAdded: [],\n      envFileUpdated: null,\n      envFileCreated: null,\n    })\n  })\n\n  test(\"should find and use .env.local when .env doesn't exist\", async () => {\n    vi.mocked(existsSync).mockImplementation((path) => {\n      const pathStr = typeof path === \"string\" ? path : path.toString()\n      return pathStr.endsWith(\".env.local\")\n    })\n    vi.mocked(fs.readFile).mockResolvedValue(\"EXISTING_VAR=value\\n\")\n\n    const envVars = {\n      NEW_VAR: \"new-value\",\n    }\n\n    const result = await updateEnvVars(envVars, mockConfig, { silent: true })\n\n    expect(vi.mocked(fs.writeFile)).toHaveBeenCalledWith(\n      \"/test/project/.env.local\",\n      \"EXISTING_VAR=value\\n\\nNEW_VAR=new-value\\n\",\n      \"utf-8\"\n    )\n    expect(result).toEqual({\n      envVarsAdded: [\"NEW_VAR\"],\n      envFileUpdated: \".env.local\",\n      envFileCreated: null,\n    })\n  })\n\n  test(\"should return early when no env vars provided\", async () => {\n    const result = await updateEnvVars(undefined, mockConfig, { silent: true })\n\n    expect(vi.mocked(fs.writeFile)).not.toHaveBeenCalled()\n    expect(result).toEqual({\n      envVarsAdded: [],\n      envFileUpdated: null,\n      envFileCreated: null,\n    })\n  })\n\n  test(\"should return early when empty env vars object provided\", async () => {\n    const result = await updateEnvVars({}, mockConfig, { silent: true })\n\n    expect(vi.mocked(fs.writeFile)).not.toHaveBeenCalled()\n    expect(result).toEqual({\n      envVarsAdded: [],\n      envFileUpdated: null,\n      envFileCreated: null,\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-env-vars.ts",
    "content": "import { existsSync, promises as fs } from \"fs\"\nimport path from \"path\"\nimport { registryItemEnvVarsSchema } from \"@/src/schema\"\nimport {\n  findExistingEnvFile,\n  getNewEnvKeys,\n  mergeEnvContent,\n} from \"@/src/utils/env-helpers\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { z } from \"zod\"\n\nexport async function updateEnvVars(\n  envVars: z.infer<typeof registryItemEnvVarsSchema> | undefined,\n  config: Config,\n  options: {\n    silent?: boolean\n  }\n) {\n  if (!envVars || Object.keys(envVars).length === 0) {\n    return {\n      envVarsAdded: [],\n      envFileUpdated: null,\n      envFileCreated: null,\n    }\n  }\n\n  options = {\n    silent: false,\n    ...options,\n  }\n\n  const envSpinner = spinner(`Adding environment variables.`, {\n    silent: options.silent,\n  })?.start()\n\n  const projectRoot = config.resolvedPaths.cwd\n\n  // Find existing env file or use .env.local as default.\n  let envFilePath = path.join(projectRoot, \".env.local\")\n  const existingEnvFile = findExistingEnvFile(projectRoot)\n\n  if (existingEnvFile) {\n    envFilePath = existingEnvFile\n  }\n\n  const envFileExists = existsSync(envFilePath)\n  const envFileName = path.basename(envFilePath)\n\n  // Convert envVars object to env file format\n  const newEnvContent = Object.entries(envVars)\n    .map(([key, value]) => `${key}=${value}`)\n    .join(\"\\n\")\n\n  let envVarsAdded: string[] = []\n  let envFileUpdated: string | null = null\n  let envFileCreated: string | null = null\n\n  if (envFileExists) {\n    const existingContent = await fs.readFile(envFilePath, \"utf-8\")\n    const mergedContent = mergeEnvContent(existingContent, newEnvContent)\n    envVarsAdded = getNewEnvKeys(existingContent, newEnvContent)\n\n    if (envVarsAdded.length > 0) {\n      await fs.writeFile(envFilePath, mergedContent, \"utf-8\")\n      envFileUpdated = path.relative(projectRoot, envFilePath)\n\n      envSpinner?.succeed(\n        `Added the following variables to ${highlighter.info(envFileName)}:`\n      )\n\n      if (!options.silent) {\n        for (const key of envVarsAdded) {\n          logger.log(`  ${highlighter.success(\"+\")} ${key}`)\n        }\n      }\n    } else {\n      envSpinner?.stop()\n    }\n  } else {\n    // Create new env file\n    await fs.writeFile(envFilePath, newEnvContent + \"\\n\", \"utf-8\")\n    envFileCreated = path.relative(projectRoot, envFilePath)\n    envVarsAdded = Object.keys(envVars)\n\n    envSpinner?.succeed(\n      `Added the following variables to ${highlighter.info(envFileName)}:`\n    )\n\n    if (!options.silent) {\n      for (const key of envVarsAdded) {\n        logger.log(`  ${highlighter.success(\"+\")} ${key}`)\n      }\n    }\n  }\n\n  if (!options.silent && envVarsAdded.length > 0) {\n    logger.break()\n  }\n\n  return {\n    envVarsAdded,\n    envFileUpdated,\n    envFileCreated,\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-files.ts",
    "content": "import { existsSync, promises as fs, statSync } from \"fs\"\nimport { tmpdir } from \"os\"\nimport path, { basename } from \"path\"\nimport { getRegistryBaseColor } from \"@/src/registry/api\"\nimport { RegistryItem, registryItemFileSchema } from \"@/src/schema\"\nimport { isContentSame } from \"@/src/utils/compare\"\nimport {\n  findExistingEnvFile,\n  getNewEnvKeys,\n  isEnvFile,\n  mergeEnvContent,\n  parseEnvContent,\n} from \"@/src/utils/env-helpers\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { getProjectInfo, ProjectInfo } from \"@/src/utils/get-project-info\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { logger } from \"@/src/utils/logger\"\nimport { resolveImport } from \"@/src/utils/resolve-import\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport { transform } from \"@/src/utils/transformers\"\nimport { transformAsChild } from \"@/src/utils/transformers/transform-aschild\"\nimport { transformCleanup } from \"@/src/utils/transformers/transform-cleanup\"\nimport { transformCssVars } from \"@/src/utils/transformers/transform-css-vars\"\nimport { transformFont } from \"@/src/utils/transformers/transform-font\"\nimport { transformIcons } from \"@/src/utils/transformers/transform-icons\"\nimport { transformImport } from \"@/src/utils/transformers/transform-import\"\nimport { transformMenu } from \"@/src/utils/transformers/transform-menu\"\nimport { transformNext } from \"@/src/utils/transformers/transform-next\"\nimport { transformRsc } from \"@/src/utils/transformers/transform-rsc\"\nimport { transformRtl } from \"@/src/utils/transformers/transform-rtl\"\nimport { transformTwPrefixes } from \"@/src/utils/transformers/transform-tw-prefix\"\nimport prompts from \"prompts\"\nimport { Project, ScriptKind } from \"ts-morph\"\nimport { loadConfig } from \"tsconfig-paths\"\nimport { z } from \"zod\"\n\nexport async function updateFiles(\n  files: RegistryItem[\"files\"],\n  config: Config,\n  options: {\n    overwrite?: boolean\n    force?: boolean\n    silent?: boolean\n    rootSpinner?: ReturnType<typeof spinner>\n    isRemote?: boolean\n    isWorkspace?: boolean\n    path?: string\n    supportedFontMarkers?: string[]\n  }\n) {\n  if (!files?.length) {\n    return {\n      filesCreated: [],\n      filesUpdated: [],\n      filesSkipped: [],\n    }\n  }\n  options = {\n    overwrite: false,\n    force: false,\n    silent: false,\n    isRemote: false,\n    isWorkspace: false,\n    ...options,\n  }\n  const filesCreatedSpinner = spinner(`Updating files.`, {\n    silent: options.silent,\n  })?.start()\n\n  const [projectInfo, baseColor] = await Promise.all([\n    getProjectInfo(config.resolvedPaths.cwd),\n    config.tailwind.baseColor\n      ? getRegistryBaseColor(config.tailwind.baseColor)\n      : Promise.resolve(undefined),\n  ])\n\n  let filesCreated: string[] = []\n  let filesUpdated: string[] = []\n  let filesSkipped: string[] = []\n  let envVarsAdded: string[] = []\n  let envFile: string | null = null\n\n  for (let index = 0; index < files.length; index++) {\n    const file = files[index]\n    if (!file.content) {\n      continue\n    }\n\n    let filePath = resolveFilePath(file, config, {\n      isSrcDir: projectInfo?.isSrcDir,\n      framework: projectInfo?.framework.name,\n      commonRoot: findCommonRoot(\n        files.map((f) => f.path),\n        file.path\n      ),\n      path: options.path,\n      fileIndex: index,\n    })\n\n    if (!filePath) {\n      continue\n    }\n\n    const fileName = basename(file.path)\n    const targetDir = path.dirname(filePath)\n\n    if (!config.tsx) {\n      filePath = filePath.replace(/\\.tsx?$/, (match) =>\n        match === \".tsx\" ? \".jsx\" : \".js\"\n      )\n    }\n\n    if (isEnvFile(filePath) && !existsSync(filePath)) {\n      const alternativeEnvFile = findExistingEnvFile(targetDir)\n      if (alternativeEnvFile) {\n        filePath = alternativeEnvFile\n      }\n    }\n\n    const existingFile = existsSync(filePath)\n\n    // TODO: revisit this when we implement utils transform instead of override.\n    if (\n      file.type === \"registry:lib\" &&\n      basename(file.path) === \"utils.ts\" &&\n      projectInfo?.framework.name === \"laravel\" &&\n      existingFile\n    ) {\n      filesSkipped.push(path.relative(config.resolvedPaths.cwd, filePath))\n      continue\n    }\n\n    // Check if the path exists and is a directory - we can't write to directories.\n    if (existingFile && statSync(filePath).isDirectory()) {\n      throw new Error(\n        `Cannot write to ${filePath}: path exists and is a directory. Please provide a file path instead.`\n      )\n    }\n\n    // Run our transformers.\n    // Skip transformers for .env files to preserve exact content\n    // Skip transformers for universal item files (registry:file and registry:item)\n    // to preserve their original content as they're meant to be framework-agnostic\n    const isUniversalItemFile =\n      file.type === \"registry:file\" || file.type === \"registry:item\"\n    const content =\n      isEnvFile(filePath) || isUniversalItemFile\n        ? file.content\n        : await transform(\n            {\n              filename: file.path,\n              raw: file.content,\n              config,\n              baseColor,\n              transformJsx: !config.tsx,\n              isRemote: options.isRemote,\n              supportedFontMarkers: options.supportedFontMarkers,\n            },\n            [\n              transformImport,\n              transformRsc,\n              transformCssVars,\n              transformTwPrefixes,\n              transformIcons,\n              transformMenu,\n              transformAsChild,\n              transformRtl,\n              ...(_isNext16Middleware(filePath, projectInfo, config)\n                ? [transformNext]\n                : []),\n              transformFont,\n              transformCleanup,\n            ]\n          )\n\n    // Skip the file if it already exists and the content is the same.\n    // Exception: Don't skip .env files as we merge content instead of replacing\n    if (existingFile && !isEnvFile(filePath)) {\n      const existingFileContent = await fs.readFile(filePath, \"utf-8\")\n\n      if (\n        isContentSame(existingFileContent, content, {\n          // Ignore import differences for workspace components.\n          // TODO: figure out if we always want this.\n          ignoreImports: options.isWorkspace,\n        })\n      ) {\n        filesSkipped.push(path.relative(config.resolvedPaths.cwd, filePath))\n        continue\n      }\n    }\n\n    // Skip overwrite prompt for .env files - we'll handle them specially\n    if (existingFile && !options.overwrite && !isEnvFile(filePath)) {\n      filesCreatedSpinner.stop()\n      if (options.rootSpinner) {\n        options.rootSpinner.stop()\n      }\n      const { overwrite } = await prompts({\n        type: \"confirm\",\n        name: \"overwrite\",\n        message: `The file ${highlighter.info(\n          fileName\n        )} already exists. Would you like to overwrite?`,\n        initial: false,\n      })\n\n      if (!overwrite) {\n        filesSkipped.push(path.relative(config.resolvedPaths.cwd, filePath))\n        if (options.rootSpinner) {\n          options.rootSpinner.start()\n        }\n        continue\n      }\n      filesCreatedSpinner?.start()\n      if (options.rootSpinner) {\n        options.rootSpinner.start()\n      }\n    }\n\n    // Rename middleware.ts to proxy.ts for Next.js 16+.\n    if (_isNext16Middleware(filePath, projectInfo, config)) {\n      filePath = filePath.replace(/middleware\\.(ts|js)$/, \"proxy.$1\")\n    }\n\n    // Create the target directory if it doesn't exist.\n    if (!existsSync(targetDir)) {\n      await fs.mkdir(targetDir, { recursive: true })\n    }\n\n    // Special handling for .env files - append only new keys\n    if (isEnvFile(filePath) && existingFile) {\n      const existingFileContent = await fs.readFile(filePath, \"utf-8\")\n      const mergedContent = mergeEnvContent(existingFileContent, content)\n      envVarsAdded = getNewEnvKeys(existingFileContent, content)\n      envFile = path.relative(config.resolvedPaths.cwd, filePath)\n\n      if (!envVarsAdded.length) {\n        filesSkipped.push(path.relative(config.resolvedPaths.cwd, filePath))\n        continue\n      }\n\n      await fs.writeFile(filePath, mergedContent, \"utf-8\")\n      filesUpdated.push(path.relative(config.resolvedPaths.cwd, filePath))\n      continue\n    }\n\n    await fs.writeFile(filePath, content, \"utf-8\")\n\n    // Handle file creation logging\n    if (!existingFile) {\n      filesCreated.push(path.relative(config.resolvedPaths.cwd, filePath))\n\n      if (isEnvFile(filePath)) {\n        envVarsAdded = Object.keys(parseEnvContent(content))\n        envFile = path.relative(config.resolvedPaths.cwd, filePath)\n      }\n    } else {\n      filesUpdated.push(path.relative(config.resolvedPaths.cwd, filePath))\n    }\n  }\n\n  const allFiles = [...filesCreated, ...filesUpdated, ...filesSkipped]\n  const updatedFiles = await resolveImports(allFiles, config)\n\n  // Let's update filesUpdated with the updated files.\n  filesUpdated.push(...updatedFiles)\n\n  // Remove duplicates and filter out files already in filesCreated.\n  filesCreated = Array.from(new Set(filesCreated))\n  filesUpdated = Array.from(\n    new Set(filesUpdated.filter((file) => !filesCreated.includes(file)))\n  )\n  filesSkipped = Array.from(new Set(filesSkipped))\n\n  const hasUpdatedFiles = filesCreated.length || filesUpdated.length\n  if (!hasUpdatedFiles && !filesSkipped.length) {\n    filesCreatedSpinner?.info(\"No files updated.\")\n  }\n\n  if (filesCreated.length) {\n    filesCreatedSpinner?.succeed(\n      `Created ${filesCreated.length} ${\n        filesCreated.length === 1 ? \"file\" : \"files\"\n      }:`\n    )\n    if (!options.silent) {\n      for (const file of filesCreated) {\n        logger.log(`  - ${file}`)\n      }\n    }\n  } else {\n    filesCreatedSpinner?.stop()\n  }\n\n  if (filesUpdated.length) {\n    spinner(\n      `Updated ${filesUpdated.length} ${\n        filesUpdated.length === 1 ? \"file\" : \"files\"\n      }:`,\n      {\n        silent: options.silent,\n      }\n    )?.info()\n    if (!options.silent) {\n      for (const file of filesUpdated) {\n        logger.log(`  - ${file}`)\n      }\n    }\n  }\n\n  if (filesSkipped.length) {\n    spinner(\n      `Skipped ${filesSkipped.length} ${\n        filesSkipped.length === 1 ? \"file\" : \"files\"\n      }: (files might be identical, use --overwrite to overwrite)`,\n      {\n        silent: options.silent,\n      }\n    )?.info()\n    if (!options.silent) {\n      for (const file of filesSkipped) {\n        logger.log(`  - ${file}`)\n      }\n    }\n  }\n\n  if (envVarsAdded.length && envFile) {\n    spinner(\n      `Added the following variables to ${highlighter.info(envFile)}:`\n    )?.info()\n    if (!options.silent) {\n      for (const key of envVarsAdded) {\n        logger.log(`  ${highlighter.success(\"+\")} ${key}`)\n      }\n    }\n  }\n\n  return {\n    filesCreated,\n    filesUpdated,\n    filesSkipped,\n  }\n}\n\nexport function resolveFilePath(\n  file: z.infer<typeof registryItemFileSchema>,\n  config: Config,\n  options: {\n    isSrcDir?: boolean\n    commonRoot?: string\n    framework?: ProjectInfo[\"framework\"][\"name\"]\n    path?: string\n    fileIndex?: number\n  }\n) {\n  // Handle custom path if provided.\n  if (options.path) {\n    const resolvedPath = path.isAbsolute(options.path)\n      ? options.path\n      : path.join(config.resolvedPaths.cwd, options.path)\n\n    const isFilePath = /\\.[^/\\\\]+$/.test(resolvedPath)\n\n    if (isFilePath) {\n      // We'll only use the custom path for the first file.\n      // This is for registry items with multiple files.\n      if (options.fileIndex === 0) {\n        return resolvedPath\n      }\n    } else {\n      // If the custom path is a directory,\n      // We'll place all files in the directory.\n      const fileName = path.basename(file.path)\n      return path.join(resolvedPath, fileName)\n    }\n  }\n\n  if (file.target) {\n    if (file.target.startsWith(\"~/\")) {\n      return path.join(config.resolvedPaths.cwd, file.target.replace(\"~/\", \"\"))\n    }\n\n    let target = file.target\n\n    if (file.type === \"registry:page\") {\n      target = resolvePageTarget(target, options.framework)\n      if (!target) {\n        return \"\"\n      }\n    }\n\n    return options.isSrcDir\n      ? path.join(config.resolvedPaths.cwd, \"src\", target.replace(\"src/\", \"\"))\n      : path.join(config.resolvedPaths.cwd, target.replace(\"src/\", \"\"))\n  }\n\n  const targetDir = resolveFileTargetDirectory(file, config)\n\n  const relativePath = resolveNestedFilePath(file.path, targetDir)\n  return path.join(targetDir, relativePath)\n}\n\nfunction resolveFileTargetDirectory(\n  file: z.infer<typeof registryItemFileSchema>,\n  config: Config\n) {\n  if (file.type === \"registry:ui\") {\n    return config.resolvedPaths.ui\n  }\n\n  if (file.type === \"registry:lib\") {\n    return config.resolvedPaths.lib\n  }\n\n  if (file.type === \"registry:block\" || file.type === \"registry:component\") {\n    return config.resolvedPaths.components\n  }\n\n  if (file.type === \"registry:hook\") {\n    return config.resolvedPaths.hooks\n  }\n\n  return config.resolvedPaths.components\n}\n\nexport function findCommonRoot(paths: string[], needle: string): string {\n  // Remove leading slashes for consistent handling\n  const normalizedPaths = paths.map((p) => p.replace(/^\\//, \"\"))\n  const normalizedNeedle = needle.replace(/^\\//, \"\")\n\n  // Get the directory path of the needle by removing the file name\n  const needleDir = normalizedNeedle.split(\"/\").slice(0, -1).join(\"/\")\n\n  // If needle is at root level, return empty string\n  if (!needleDir) {\n    return \"\"\n  }\n\n  // Split the needle directory into segments\n  const needleSegments = needleDir.split(\"/\")\n\n  // Start from the full path and work backwards\n  for (let i = needleSegments.length; i > 0; i--) {\n    const testPath = needleSegments.slice(0, i).join(\"/\")\n    // Check if this is a common root by verifying if any other paths start with it\n    const hasRelatedPaths = normalizedPaths.some(\n      (path) => path !== normalizedNeedle && path.startsWith(testPath + \"/\")\n    )\n    if (hasRelatedPaths) {\n      return \"/\" + testPath // Add leading slash back for the result\n    }\n  }\n\n  // If no common root found with other files, return the parent directory of the needle\n  return \"/\" + needleDir // Add leading slash back for the result\n}\n\nexport function resolveNestedFilePath(\n  filePath: string,\n  targetDir: string\n): string {\n  // Normalize paths by removing leading/trailing slashes\n  const normalizedFilePath = filePath.replace(/^\\/|\\/$/g, \"\")\n  const normalizedTargetDir = targetDir.replace(/^\\/|\\/$/g, \"\")\n\n  // Split paths into segments\n  const fileSegments = normalizedFilePath.split(\"/\")\n  const targetSegments = normalizedTargetDir.split(\"/\")\n\n  // Find the last matching segment from targetDir in filePath\n  const lastTargetSegment = targetSegments[targetSegments.length - 1]\n  const commonDirIndex = fileSegments.findIndex(\n    (segment) => segment === lastTargetSegment\n  )\n\n  if (commonDirIndex === -1) {\n    // Return just the filename if no common directory is found\n    return fileSegments[fileSegments.length - 1]\n  }\n\n  // Return everything after the common directory\n  return fileSegments.slice(commonDirIndex + 1).join(\"/\")\n}\n\nexport function resolvePageTarget(\n  target: string,\n  framework?: ProjectInfo[\"framework\"][\"name\"]\n) {\n  if (!framework) {\n    return \"\"\n  }\n\n  if (framework === \"next-app\") {\n    return target\n  }\n\n  if (framework === \"next-pages\") {\n    let result = target.replace(/^app\\//, \"pages/\")\n    result = result.replace(/\\/page(\\.[jt]sx?)$/, \"$1\")\n\n    return result\n  }\n\n  if (framework === \"react-router\") {\n    let result = target.replace(/^app\\//, \"app/routes/\")\n    result = result.replace(/\\/page(\\.[jt]sx?)$/, \"$1\")\n\n    return result\n  }\n\n  if (framework === \"laravel\") {\n    let result = target.replace(/^app\\//, \"resources/js/pages/\")\n    result = result.replace(/\\/page(\\.[jt]sx?)$/, \"$1\")\n\n    return result\n  }\n\n  return \"\"\n}\n\nasync function resolveImports(filePaths: string[], config: Config) {\n  const project = new Project({\n    compilerOptions: {},\n  })\n  const projectInfo = await getProjectInfo(config.resolvedPaths.cwd)\n  const tsConfig = loadConfig(config.resolvedPaths.cwd)\n  const updatedFiles = []\n\n  if (!projectInfo || tsConfig.resultType === \"failed\") {\n    return []\n  }\n\n  for (const filepath of filePaths) {\n    const resolvedPath = path.resolve(config.resolvedPaths.cwd, filepath)\n\n    // Check if the file exists.\n    if (!existsSync(resolvedPath)) {\n      continue\n    }\n\n    const content = await fs.readFile(resolvedPath, \"utf-8\")\n\n    const dir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-\"))\n    const sourceFile = project.createSourceFile(\n      path.join(dir, basename(resolvedPath)),\n      content,\n      {\n        scriptKind: ScriptKind.TSX,\n      }\n    )\n\n    // Skip if the file extension is not one of the supported extensions.\n    if (![\".tsx\", \".ts\", \".jsx\", \".js\"].includes(sourceFile.getExtension())) {\n      continue\n    }\n\n    const importDeclarations = sourceFile.getImportDeclarations()\n    for (const importDeclaration of importDeclarations) {\n      const moduleSpecifier = importDeclaration.getModuleSpecifierValue()\n\n      // Filter out non-local imports.\n      if (\n        projectInfo?.aliasPrefix &&\n        !moduleSpecifier.startsWith(`${projectInfo.aliasPrefix}/`)\n      ) {\n        continue\n      }\n\n      // Find the probable import file path.\n      // This is where we expect to find the file on disk.\n      const probableImportFilePath = await resolveImport(\n        moduleSpecifier,\n        tsConfig\n      )\n\n      if (!probableImportFilePath) {\n        continue\n      }\n\n      // Find the actual import file path.\n      // This is the path where the file has been installed.\n      const resolvedImportFilePath = resolveModuleByProbablePath(\n        probableImportFilePath,\n        filePaths,\n        config\n      )\n\n      if (!resolvedImportFilePath) {\n        continue\n      }\n\n      // Convert the resolved import file path to an aliased import.\n      const newImport = toAliasedImport(\n        resolvedImportFilePath,\n        config,\n        projectInfo\n      )\n\n      if (!newImport || newImport === moduleSpecifier) {\n        continue\n      }\n\n      importDeclaration.setModuleSpecifier(newImport)\n\n      // Write the updated content to the file.\n      await fs.writeFile(resolvedPath, sourceFile.getFullText(), \"utf-8\")\n\n      // Track the updated file.\n      updatedFiles.push(filepath)\n    }\n  }\n\n  return updatedFiles\n}\n\n/**\n * Given an absolute \"probable\" import path (no ext),\n * plus an array of absolute file paths you already know about,\n * return 0–N matches (best match first), and also check disk for any missing ones.\n */\nexport function resolveModuleByProbablePath(\n  probableImportFilePath: string,\n  files: string[],\n  config: Config,\n  extensions: string[] = [\".tsx\", \".ts\", \".js\", \".jsx\", \".css\"]\n) {\n  const cwd = path.normalize(config.resolvedPaths.cwd)\n\n  // 1) Build a set of POSIX-normalized, project-relative files\n  const relativeFiles = files.map((f) => f.split(path.sep).join(path.posix.sep))\n  const fileSet = new Set(relativeFiles)\n\n  // 2) Strip any existing extension off the absolute base path\n  const extInPath = path.extname(probableImportFilePath)\n  const hasExt = extInPath !== \"\"\n  const absBase = hasExt\n    ? probableImportFilePath.slice(0, -extInPath.length)\n    : probableImportFilePath\n\n  // 3) Compute the project-relative \"base\" directory for strong matching\n  const relBaseRaw = path.relative(cwd, absBase)\n  const relBase = relBaseRaw.split(path.sep).join(path.posix.sep)\n\n  // 4) Decide which extensions to try\n  const tryExts = hasExt ? [extInPath] : extensions\n\n  // 5) Collect candidates\n  const candidates = new Set<string>()\n\n  // 5a) Fast‑path: [base + ext] and [base/index + ext]\n  for (const e of tryExts) {\n    const absCand = absBase + e\n    const relCand = path.posix.normalize(path.relative(cwd, absCand))\n    if (fileSet.has(relCand) || existsSync(absCand)) {\n      candidates.add(relCand)\n    }\n\n    const absIdx = path.join(absBase, `index${e}`)\n    const relIdx = path.posix.normalize(path.relative(cwd, absIdx))\n    if (fileSet.has(relIdx) || existsSync(absIdx)) {\n      candidates.add(relIdx)\n    }\n  }\n\n  // 5b) Fallback: scan known files by basename\n  const name = path.basename(absBase)\n  for (const f of relativeFiles) {\n    if (tryExts.some((e) => f.endsWith(`/${name}${e}`))) {\n      candidates.add(f)\n    }\n  }\n\n  // 6) If no matches, bail\n  if (candidates.size === 0) return null\n\n  // 7) Sort by (1) extension priority, then (2) \"strong\" base match\n  const sorted = Array.from(candidates).sort((a, b) => {\n    // a) extension order\n    const aExt = path.posix.extname(a)\n    const bExt = path.posix.extname(b)\n    const ord = tryExts.indexOf(aExt) - tryExts.indexOf(bExt)\n    if (ord !== 0) return ord\n    // b) strong match if path starts with relBase\n    const aStrong = relBase && a.startsWith(relBase) ? -1 : 1\n    const bStrong = relBase && b.startsWith(relBase) ? -1 : 1\n    return aStrong - bStrong\n  })\n\n  // 8) Return the first (best) candidate\n  return sorted[0]\n}\n\nexport function toAliasedImport(\n  filePath: string,\n  config: Config,\n  projectInfo: ProjectInfo\n): string | null {\n  const abs = path.normalize(path.join(config.resolvedPaths.cwd, filePath))\n\n  // 1️⃣ Find the longest matching alias root in resolvedPaths\n  //    e.g. key=\"ui\", root=\"/…/components/ui\" beats key=\"components\"\n  const matches = Object.entries(config.resolvedPaths)\n    .filter(\n      ([, root]) => root && abs.startsWith(path.normalize(root + path.sep))\n    )\n    .sort((a, b) => b[1].length - a[1].length)\n\n  if (matches.length === 0) {\n    return null\n  }\n  const [aliasKey, rootDir] = matches[0]\n\n  // 2️⃣ Compute the path UNDER that root\n  let rel = path.relative(rootDir, abs)\n  // force POSIX-style separators\n  rel = rel.split(path.sep).join(\"/\") // e.g. \"button/index.tsx\"\n\n  // 3️⃣ Strip code-file extensions, keep others (css, json, etc.)\n  const ext = path.posix.extname(rel)\n  const codeExts = [\".ts\", \".tsx\", \".js\", \".jsx\"]\n  const keepExt = codeExts.includes(ext) ? \"\" : ext\n  let noExt = rel.slice(0, rel.length - ext.length)\n\n  // 4️⃣ Collapse \"/index\" to its directory\n  if (noExt.endsWith(\"/index\")) {\n    noExt = noExt.slice(0, -\"/index\".length)\n  }\n\n  // 5️⃣ Build the aliased path\n  //    config.aliases[aliasKey] is e.g. \"@/components/ui\"\n  const aliasBase =\n    aliasKey === \"cwd\"\n      ? projectInfo.aliasPrefix\n      : config.aliases[aliasKey as keyof typeof config.aliases]\n  if (!aliasBase) {\n    return null\n  }\n  // if noExt is empty (i.e. file was exactly at the root), we import the root\n  let suffix = noExt === \"\" ? \"\" : `/${noExt}`\n\n  // Remove /src from suffix.\n  // Alias will handle this.\n  suffix = suffix.replace(\"/src\", \"\")\n\n  // 6️⃣ Prepend the prefix from projectInfo (e.g. \"@\") if needed\n  //    but usually config.aliases already include it.\n  return `${aliasBase}${suffix}${keepExt}`\n}\n\nfunction _isNext16Middleware(\n  filePath: string,\n  projectInfo: ProjectInfo | null,\n  config: Config\n) {\n  const isRootMiddleware =\n    filePath === path.join(config.resolvedPaths.cwd, \"middleware.ts\") ||\n    filePath === path.join(config.resolvedPaths.cwd, \"middleware.js\")\n\n  const isNextJs =\n    projectInfo?.framework.name === \"next-app\" ||\n    projectInfo?.framework.name === \"next-pages\"\n\n  if (!isRootMiddleware || !isNextJs || !projectInfo?.frameworkVersion) {\n    return false\n  }\n\n  const majorVersion = parseInt(projectInfo.frameworkVersion.split(\".\")[0])\n  const isNext16Plus = !isNaN(majorVersion) && majorVersion >= 16\n\n  return isNext16Plus\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-fonts.test.ts",
    "content": "import { describe, expect, it, vi } from \"vitest\"\n\nimport { massageTreeForFonts, transformLayoutFonts } from \"./update-fonts\"\n\nconst mockConfig = {\n  style: \"new-york\",\n  rsc: true,\n  tsx: true,\n  tailwind: {\n    config: \"tailwind.config.js\",\n    css: \"app/globals.css\",\n    baseColor: \"neutral\",\n    cssVariables: true,\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n    ui: \"@/components/ui\",\n    lib: \"@/lib\",\n    hooks: \"@/hooks\",\n  },\n  resolvedPaths: {\n    cwd: \"/test\",\n    tailwindConfig: \"/test/tailwind.config.js\",\n    tailwindCss: \"/test/app/globals.css\",\n    utils: \"/test/lib/utils.ts\",\n    components: \"/test/components\",\n    lib: \"/test/lib\",\n    hooks: \"/test/hooks\",\n    ui: \"/test/components/ui\",\n  },\n} as any\n\ndescribe(\"transformLayoutFonts\", () => {\n  it(\"should add a single Google font to empty layout\", async () => {\n    const input = `\nimport type { Metadata } from \"next\"\nimport \"./globals.css\"\n\nexport const metadata: Metadata = {\n  title: \"My App\",\n}\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import type { Metadata } from \"next\"\n      import \"./globals.css\"\n      import { Inter } from \"next/font/google\";\n      import { cn } from \"@/lib/utils\";\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\n      export const metadata: Metadata = {\n        title: \"My App\",\n      }\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should add multiple Google fonts using cn()\", async () => {\n    const input = `\nimport type { Metadata } from \"next\"\nimport \"./globals.css\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n      {\n        name: \"jetbrains-mono\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"JetBrains Mono\",\n          provider: \"google\" as const,\n          import: \"JetBrains_Mono\",\n          variable: \"--font-mono\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import type { Metadata } from \"next\"\n      import \"./globals.css\"\n      import { Inter, JetBrains_Mono } from \"next/font/google\";\n      import { cn } from \"@/lib/utils\";\n\n      const jetbrainsMono = JetBrains_Mono({subsets:['latin'],variable:'--font-mono'});\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-mono\", inter.variable, jetbrainsMono.variable)}>\n            <body>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should use configured utils alias when adding cn import\", async () => {\n    const configWithCustomUtilsAlias = {\n      ...mockConfig,\n      aliases: {\n        ...mockConfig.aliases,\n        utils: \"~/lib/utils\",\n      },\n    }\n    const input = `\nimport type { Metadata } from \"next\"\nimport \"./globals.css\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n      {\n        name: \"jetbrains-mono\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"JetBrains Mono\",\n          provider: \"google\" as const,\n          import: \"JetBrains_Mono\",\n          variable: \"--font-mono\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const firstRun = await transformLayoutFonts(\n      input,\n      fonts,\n      configWithCustomUtilsAlias\n    )\n    const secondRun = await transformLayoutFonts(\n      firstRun,\n      fonts,\n      configWithCustomUtilsAlias\n    )\n\n    expect(firstRun).toContain(`import { cn } from \"~/lib/utils\";`)\n    expect(secondRun).toBe(firstRun)\n  })\n\n  it(\"should use monorepo utils alias when adding cn import\", async () => {\n    const monorepoConfig = {\n      ...mockConfig,\n      aliases: {\n        ...mockConfig.aliases,\n        utils: \"@workspace/ui/lib/utils\",\n      },\n    }\n    const input = `\nimport type { Metadata } from \"next\"\nimport \"./globals.css\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n      {\n        name: \"jetbrains-mono\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"JetBrains Mono\",\n          provider: \"google\" as const,\n          import: \"JetBrains_Mono\",\n          variable: \"--font-mono\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, monorepoConfig)\n\n    expect(result).toContain(`import { cn } from \"@workspace/ui/lib/utils\";`)\n  })\n\n  it(\"should preserve existing string className\", async () => {\n    const input = `\nimport type { Metadata } from \"next\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className=\"antialiased\">{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import type { Metadata } from \"next\"\n      import { Inter } from \"next/font/google\";\n      import { cn } from \"@/lib/utils\";\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body className=\"antialiased\">{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should replace existing font with same variable\", async () => {\n    const input = `\nimport { Roboto } from \"next/font/google\"\n\nconst roboto = Roboto({subsets:['latin'],variable:'--font-sans'})\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={roboto.variable}>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import { Roboto, Inter } from \"next/font/google\"\n      import { cn } from \"@/lib/utils\";\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'})\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body className={inter.variable}>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should handle existing cn() className\", async () => {\n    const input = `\nimport { cn } from \"@/lib/utils\"\nimport { Roboto } from \"next/font/google\"\n\nconst roboto = Roboto({subsets:['latin'],variable:'--font-sans'})\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={cn(\"antialiased\", roboto.variable)}>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import { cn } from \"@/lib/utils\"\n      import { Roboto, Inter } from \"next/font/google\"\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'})\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body className={cn(\"antialiased\", inter.variable)}>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should add font with weight option\", async () => {\n    const input = `\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n          weight: [\"400\", \"500\", \"600\", \"700\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import { Inter } from \"next/font/google\";\n      import { cn } from \"@/lib/utils\";\n\n      const inter = Inter({subsets:['latin'],weight:['400','500','600','700'],variable:'--font-sans'});\n\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should add already-imported font to html className\", async () => {\n    const input = `\nimport { Inter } from \"next/font/google\"\n\nconst inter = Inter({subsets:['latin'],variable:'--font-sans'})\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={inter.variable}>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    // Font is already imported but not on <html>, so it should be added.\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import { Inter } from \"next/font/google\"\n      import { cn } from \"@/lib/utils\";\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'})\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body className={inter.variable}>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should skip Geist font if already imported (create-next-app scenario)\", async () => {\n    // This simulates a fresh create-next-app project with Geist already set up.\n    const input = `\nimport type { Metadata } from \"next\";\nimport { Geist, Geist_Mono } from \"next/font/google\";\nimport \"./globals.css\";\n\nconst geistSans = Geist({\n  variable: \"--font-geist-sans\",\n  subsets: [\"latin\"],\n});\n\nconst geistMono = Geist_Mono({\n  variable: \"--font-geist-mono\",\n  subsets: [\"latin\"],\n});\n\nexport const metadata: Metadata = {\n  title: \"Create Next App\",\n  description: \"Generated by create next app\",\n};\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode;\n}>) {\n  return (\n    <html lang=\"en\">\n      <body\n        className={\\`\\${geistSans.variable} \\${geistMono.variable} antialiased\\`}\n      >\n        {children}\n      </body>\n    </html>\n  );\n}\n`\n    const fonts = [\n      {\n        name: \"font-geist\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Geist Variable', sans-serif\",\n          provider: \"google\" as const,\n          import: \"Geist\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    // Geist is already imported, so the layout should remain unchanged.\n    expect(result).toBe(input)\n  })\n\n  it(\"should add to existing next/font/google import\", async () => {\n    const input = `\nimport { Roboto } from \"next/font/google\"\n\nconst roboto = Roboto({subsets:['latin'],variable:'--font-display'})\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={roboto.variable}>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import { Roboto, Inter } from \"next/font/google\"\n      import { cn } from \"@/lib/utils\";\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\n      const roboto = Roboto({subsets:['latin'],variable:'--font-display'})\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body className={roboto.variable}>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should handle expression className that is not cn()\", async () => {\n    const input = `\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={someVariable}>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"import { Inter } from \"next/font/google\";\n      import { cn } from \"@/lib/utils\";\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body className={someVariable}>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should handle template literal className\", async () => {\n    const input = `\nimport { GeistSans } from \"geist/font/sans\"\nimport { GeistMono } from \"geist/font/mono\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={\\`\\${GeistSans.variable} \\${GeistMono.variable} antialiased\\`}>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import { GeistSans } from \"geist/font/sans\"\n      import { GeistMono } from \"geist/font/mono\"\n      import { Inter } from \"next/font/google\";\n      import { cn } from \"@/lib/utils\";\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n            <body className={\\`\\${GeistSans.variable} \\${GeistMono.variable} antialiased\\`}>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should be idempotent when run multiple times\", async () => {\n    const input = `\nimport type { Metadata } from \"next\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    // Run once.\n    const firstRun = await transformLayoutFonts(input, fonts, mockConfig)\n\n    // Run again on the output.\n    const secondRun = await transformLayoutFonts(firstRun, fonts, mockConfig)\n\n    // Run a third time.\n    const thirdRun = await transformLayoutFonts(secondRun, fonts, mockConfig)\n\n    // All runs should produce the same result.\n    expect(secondRun).toBe(firstRun)\n    expect(thirdRun).toBe(firstRun)\n  })\n\n  it(\"should add a single serif font to empty layout\", async () => {\n    const input = `\nimport type { Metadata } from \"next\"\nimport \"./globals.css\"\n\nexport const metadata: Metadata = {\n  title: \"My App\",\n}\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"font-lora\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Lora Variable', serif\",\n          provider: \"google\" as const,\n          import: \"Lora\",\n          variable: \"--font-serif\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import type { Metadata } from \"next\"\n      import \"./globals.css\"\n      import { Lora } from \"next/font/google\";\n      import { cn } from \"@/lib/utils\";\n\n      const lora = Lora({subsets:['latin'],variable:'--font-serif'});\n\n      export const metadata: Metadata = {\n        title: \"My App\",\n      }\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-serif\", lora.variable)}>\n            <body>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should add serif and sans fonts together\", async () => {\n    const input = `\nimport type { Metadata } from \"next\"\nimport \"./globals.css\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"font-inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Inter Variable', sans-serif\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n      {\n        name: \"font-lora\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Lora Variable', serif\",\n          provider: \"google\" as const,\n          import: \"Lora\",\n          variable: \"--font-serif\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      import type { Metadata } from \"next\"\n      import \"./globals.css\"\n      import { Inter, Lora } from \"next/font/google\";\n      import { cn } from \"@/lib/utils\";\n\n      const lora = Lora({subsets:['latin'],variable:'--font-serif'});\n\n      const inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\n\n      export default function RootLayout({\n        children,\n      }: {\n        children: React.ReactNode\n      }) {\n        return (\n          <html lang=\"en\" className={cn(\"font-serif\", inter.variable, lora.variable)}>\n            <body>{children}</body>\n          </html>\n        )\n      }\n      \"\n    `)\n  })\n\n  it(\"should replace existing font-sans with font-serif on html\", async () => {\n    const input = `\nimport { Inter } from \"next/font/google\";\nimport { cn } from \"@/lib/utils\";\n\nconst inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"font-playfair-display\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Playfair Display Variable', serif\",\n          provider: \"google\" as const,\n          import: \"Playfair_Display\",\n          variable: \"--font-serif\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    // font-sans should be replaced with font-serif.\n    expect(result).toContain('\"font-serif\"')\n    expect(result).not.toContain('\"font-sans\"')\n    expect(result).toContain(\"playfairDisplay.variable\")\n    // Inter's variable should remain since we only added Playfair.\n    expect(result).toContain(\"inter.variable\")\n  })\n\n  it(\"should be idempotent with multiple fonts\", async () => {\n    const input = `\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className=\"antialiased\">{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"Inter\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n      {\n        name: \"jetbrains-mono\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"JetBrains Mono\",\n          provider: \"google\" as const,\n          import: \"JetBrains_Mono\",\n          variable: \"--font-mono\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    // Run once.\n    const firstRun = await transformLayoutFonts(input, fonts, mockConfig)\n\n    // Run again on the output.\n    const secondRun = await transformLayoutFonts(firstRun, fonts, mockConfig)\n\n    // All runs should produce the same result.\n    expect(secondRun).toBe(firstRun)\n  })\n\n  it(\"should be idempotent when font is already imported and on html\", async () => {\n    // Simulates a layout where the font was already added by a previous preset.\n    const input = `\nimport { Merriweather } from \"next/font/google\";\nimport { cn } from \"@/lib/utils\";\n\nconst merriweather = Merriweather({subsets:['latin'],weight:['400','700'],variable:'--font-serif'});\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\" className={cn(\"font-serif\", merriweather.variable)}>\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"font-merriweather\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Merriweather Variable', serif\",\n          provider: \"google\" as const,\n          import: \"Merriweather\",\n          variable: \"--font-serif\",\n          subsets: [\"latin\"],\n          weight: [\"400\", \"700\"],\n        },\n      },\n    ]\n\n    const firstRun = await transformLayoutFonts(input, fonts, mockConfig)\n    const secondRun = await transformLayoutFonts(firstRun, fonts, mockConfig)\n\n    // Should remain unchanged across all runs.\n    expect(firstRun).toBe(input)\n    expect(secondRun).toBe(input)\n  })\n\n  it(\"should be idempotent when adding font to pre-existing layout with other fonts\", async () => {\n    // Layout already has Inter, and we're adding Merriweather.\n    const input = `\nimport { Inter } from \"next/font/google\";\nimport { cn } from \"@/lib/utils\";\n\nconst inter = Inter({subsets:['latin'],variable:'--font-sans'});\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\" className={cn(\"font-sans\", inter.variable)}>\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"font-inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Inter Variable', sans-serif\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n      {\n        name: \"font-merriweather\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Merriweather Variable', serif\",\n          provider: \"google\" as const,\n          import: \"Merriweather\",\n          variable: \"--font-serif\",\n          subsets: [\"latin\"],\n          weight: [\"400\", \"700\"],\n        },\n      },\n    ]\n\n    const firstRun = await transformLayoutFonts(input, fonts, mockConfig)\n    const secondRun = await transformLayoutFonts(firstRun, fonts, mockConfig)\n\n    // Second run should be identical to first.\n    expect(secondRun).toBe(firstRun)\n    // Inter should still be there, Merriweather should be added.\n    expect(firstRun).toContain(\"font-sans\")\n    expect(firstRun).toContain(\"font-serif\")\n    expect(firstRun).toContain(\"inter.variable\")\n    expect(firstRun).toContain(\"merriweather.variable\")\n  })\n\n  it(\"should add .variable but not utility class for custom selector font\", async () => {\n    const input = `\nimport type { Metadata } from \"next\"\nimport \"./globals.css\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"font-inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Inter Variable', sans-serif\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n      {\n        name: \"font-playfair-display\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Playfair Display Variable', serif\",\n          provider: \"google\" as const,\n          import: \"Playfair_Display\",\n          variable: \"--font-heading\",\n          subsets: [\"latin\"],\n          selector: \"h1, h2, h3, h4, h5, h6\",\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    // .variable should be on <html> for both fonts.\n    expect(result).toContain(\"inter.variable\")\n    expect(result).toContain(\"playfairDisplayHeading.variable\")\n    // Only font-sans utility class should be on <html>, not font-heading.\n    expect(result).toContain('\"font-sans\"')\n    expect(result).not.toContain('\"font-heading\"')\n  })\n\n  it(\"should create a second variable declaration when body and heading use the same Google font\", async () => {\n    const input = `\nimport type { Metadata } from \"next\"\nimport \"./globals.css\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"font-inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Inter Variable', sans-serif\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n      {\n        name: \"font-heading-inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Inter Variable', sans-serif\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-heading\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toContain('import { Inter } from \"next/font/google\";')\n    expect(result).toContain(\n      \"const inter = Inter({subsets:['latin'],variable:'--font-sans'});\"\n    )\n    expect(result).toContain(\n      \"const interHeading = Inter({subsets:['latin'],variable:'--font-heading'});\"\n    )\n    expect(result).toContain(\n      'className={cn(\"font-sans\", inter.variable, interHeading.variable)}'\n    )\n    expect(result).not.toContain('\"font-heading\"')\n  })\n\n  it(\"should keep an existing heading font when adding the matching body font\", async () => {\n    const input = `\nimport { cn } from \"@/lib/utils\"\nimport { Inter } from \"next/font/google\"\n\nconst interHeading = Inter({subsets:['latin'],variable:'--font-heading'})\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\" className={interHeading.variable}>\n      <body>{children}</body>\n    </html>\n  )\n}\n`\n    const fonts = [\n      {\n        name: \"font-inter\",\n        type: \"registry:font\" as const,\n        font: {\n          family: \"'Inter Variable', sans-serif\",\n          provider: \"google\" as const,\n          import: \"Inter\",\n          variable: \"--font-sans\",\n          subsets: [\"latin\"],\n        },\n      },\n    ]\n\n    const result = await transformLayoutFonts(input, fonts, mockConfig)\n\n    expect(result).toContain('import { cn } from \"@/lib/utils\"')\n    expect(result).toContain(\n      \"const inter = Inter({subsets:['latin'],variable:'--font-sans'});\"\n    )\n    expect(result).toContain(\"interHeading.variable\")\n    expect(result).toContain('\"font-sans\"')\n    expect(result).toContain(\"inter.variable\")\n  })\n})\n\nvi.mock(\"@/src/utils/get-project-info\", () => ({\n  getProjectInfo: vi.fn().mockResolvedValue({\n    framework: { name: \"vite\" },\n    isTsx: true,\n    isSrcDir: false,\n  }),\n}))\n\ndescribe(\"massageTreeForFonts\", () => {\n  it(\"should add font @apply to html when no existing css\", async () => {\n    const tree = {\n      fonts: [\n        {\n          name: \"font-inter\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Inter Variable', sans-serif\",\n            provider: \"google\" as const,\n            import: \"Inter\",\n            variable: \"--font-sans\",\n            subsets: [\"latin\"],\n          },\n        },\n      ],\n    } as any\n\n    const result = await massageTreeForFonts(tree, {\n      resolvedPaths: { cwd: \"/test\" },\n    } as any)\n\n    expect(result.css![\"@layer base\"].html).toEqual({\n      \"@apply font-sans\": {},\n    })\n  })\n\n  it(\"should preserve existing html css rules when adding font classes\", async () => {\n    const tree = {\n      fonts: [\n        {\n          name: \"font-inter\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Inter Variable', sans-serif\",\n            provider: \"google\" as const,\n            import: \"Inter\",\n            variable: \"--font-sans\",\n            subsets: [\"latin\"],\n          },\n        },\n      ],\n      cssVars: {\n        theme: {},\n      },\n      css: {\n        \"@layer base\": {\n          html: {\n            \"@apply bg-background text-foreground\": {},\n          },\n        },\n      },\n    } as any\n\n    const result = await massageTreeForFonts(tree, {\n      resolvedPaths: { cwd: \"/test\" },\n    } as any)\n\n    expect(result.css![\"@layer base\"].html).toEqual({\n      \"@apply bg-background text-foreground font-sans\": {},\n    })\n  })\n\n  it(\"should combine multiple font classes into a single @apply\", async () => {\n    const tree = {\n      fonts: [\n        {\n          name: \"font-inter\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Inter Variable', sans-serif\",\n            provider: \"google\" as const,\n            import: \"Inter\",\n            variable: \"--font-sans\",\n            subsets: [\"latin\"],\n          },\n        },\n        {\n          name: \"font-lora\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Lora Variable', serif\",\n            provider: \"google\" as const,\n            import: \"Lora\",\n            variable: \"--font-serif\",\n            subsets: [\"latin\"],\n          },\n        },\n      ],\n      css: {\n        \"@layer base\": {\n          html: {\n            \"@apply bg-background text-foreground\": {},\n          },\n        },\n      },\n    } as any\n\n    const result = await massageTreeForFonts(tree, {\n      resolvedPaths: { cwd: \"/test\" },\n    } as any)\n\n    expect(result.css![\"@layer base\"].html).toEqual({\n      \"@apply bg-background text-foreground font-sans font-serif\": {},\n    })\n  })\n\n  it(\"should apply font to custom selector\", async () => {\n    const tree = {\n      fonts: [\n        {\n          name: \"font-playfair-display\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Playfair Display Variable', serif\",\n            provider: \"google\" as const,\n            import: \"Playfair_Display\",\n            variable: \"--font-heading\",\n            subsets: [\"latin\"],\n            selector: \"h1, h2, h3, h4, h5, h6\",\n          },\n        },\n      ],\n    } as any\n\n    const result = await massageTreeForFonts(tree, {\n      resolvedPaths: { cwd: \"/test\" },\n    } as any)\n\n    expect(result.css![\"@layer base\"][\"h1, h2, h3, h4, h5, h6\"]).toEqual({\n      \"@apply font-heading\": {},\n    })\n    expect(result.css![\"@layer base\"].html).toBeUndefined()\n  })\n\n  it(\"should handle mixed selectors (default html + custom)\", async () => {\n    const tree = {\n      fonts: [\n        {\n          name: \"font-inter\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Inter Variable', sans-serif\",\n            provider: \"google\" as const,\n            import: \"Inter\",\n            variable: \"--font-sans\",\n            subsets: [\"latin\"],\n          },\n        },\n        {\n          name: \"font-playfair-display\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Playfair Display Variable', serif\",\n            provider: \"google\" as const,\n            import: \"Playfair_Display\",\n            variable: \"--font-heading\",\n            subsets: [\"latin\"],\n            selector: \"h1, h2, h3, h4, h5, h6\",\n          },\n        },\n      ],\n    } as any\n\n    const result = await massageTreeForFonts(tree, {\n      resolvedPaths: { cwd: \"/test\" },\n    } as any)\n\n    expect(result.css![\"@layer base\"].html).toEqual({\n      \"@apply font-sans\": {},\n    })\n    expect(result.css![\"@layer base\"][\"h1, h2, h3, h4, h5, h6\"]).toEqual({\n      \"@apply font-heading\": {},\n    })\n  })\n\n  it(\"should not auto-apply non-root font roles without a selector\", async () => {\n    const tree = {\n      fonts: [\n        {\n          name: \"font-inter\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Inter Variable', sans-serif\",\n            provider: \"google\" as const,\n            import: \"Inter\",\n            variable: \"--font-sans\",\n            subsets: [\"latin\"],\n          },\n        },\n        {\n          name: \"font-heading-playfair-display\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Playfair Display Variable', serif\",\n            provider: \"google\" as const,\n            import: \"Playfair_Display\",\n            variable: \"--font-heading\",\n            subsets: [\"latin\"],\n          },\n        },\n      ],\n    } as any\n\n    const result = await massageTreeForFonts(tree, {\n      resolvedPaths: { cwd: \"/test\" },\n    } as any)\n\n    expect(result.css![\"@layer base\"].html).toEqual({\n      \"@apply font-sans\": {},\n    })\n    expect(\n      Object.values(result.css![\"@layer base\"]).some((rule) =>\n        Object.keys(rule as Record<string, unknown>).some((key) =>\n          key.includes(\"font-heading\")\n        )\n      )\n    ).toBe(false)\n  })\n\n  it(\"should install non-variable font using dependency field\", async () => {\n    const tree = {\n      fonts: [\n        {\n          name: \"font-lato\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Lato', sans-serif\",\n            provider: \"google\" as const,\n            import: \"Lato\",\n            variable: \"--font-sans\",\n            weight: [\"400\", \"700\"],\n            dependency: \"@fontsource/lato\",\n          },\n        },\n      ],\n    } as any\n\n    const result = await massageTreeForFonts(tree, {\n      resolvedPaths: { cwd: \"/test\" },\n    } as any)\n\n    expect(result.dependencies).toContain(\"@fontsource/lato\")\n    expect(result.dependencies).not.toContain(\"@fontsource-variable/lato\")\n    expect(result.css).toHaveProperty('@import \"@fontsource/lato\"')\n    expect(result.cssVars!.theme![\"--font-sans\"]).toBe(\"'Lato', sans-serif\")\n  })\n\n  it(\"should fall back to @fontsource-variable when no dependency is specified\", async () => {\n    const tree = {\n      fonts: [\n        {\n          name: \"font-inter\",\n          type: \"registry:font\" as const,\n          font: {\n            family: \"'Inter Variable', sans-serif\",\n            provider: \"google\" as const,\n            import: \"Inter\",\n            variable: \"--font-sans\",\n            subsets: [\"latin\"],\n          },\n        },\n      ],\n    } as any\n\n    const result = await massageTreeForFonts(tree, {\n      resolvedPaths: { cwd: \"/test\" },\n    } as any)\n\n    expect(result.dependencies).toContain(\"@fontsource-variable/inter\")\n    expect(result.css).toHaveProperty('@import \"@fontsource-variable/inter\"')\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-fonts.ts",
    "content": "import { existsSync, promises as fs } from \"fs\"\nimport path from \"path\"\nimport { RegistryFontItem, registryResolvedItemsTreeSchema } from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { getProjectInfo, ProjectInfo } from \"@/src/utils/get-project-info\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport {\n  CallExpression,\n  Project,\n  ScriptKind,\n  SyntaxKind,\n  VariableDeclarationKind,\n} from \"ts-morph\"\nimport z from \"zod\"\n\nconst ROOT_FONT_VARIABLES = new Set([\n  \"--font-sans\",\n  \"--font-serif\",\n  \"--font-mono\",\n])\n\nexport async function massageTreeForFonts(\n  tree: z.infer<typeof registryResolvedItemsTreeSchema>,\n  config: Config\n) {\n  if (!tree.fonts?.length) {\n    return tree\n  }\n\n  const projectInfo = await getProjectInfo(config.resolvedPaths.cwd)\n\n  if (!projectInfo) {\n    return tree\n  }\n\n  tree.cssVars ??= {}\n  tree.cssVars.theme ??= {}\n\n  const isNext =\n    projectInfo.framework.name === \"next-app\" ||\n    projectInfo.framework.name === \"next-pages\"\n\n  for (const font of tree.fonts) {\n    if (isNext) {\n      // Next.js sets the CSS variable via next/font on the <html> element.\n      // The font utility class is added to <html> className in updateHtmlClassName.\n      // We update the theme CSS variable to reference itself so it resolves\n      // to the value injected by next/font on <html>.\n      tree.cssVars.theme[font.font.variable] = `var(${font.font.variable})`\n    } else {\n      // Other frameworks will use fontsource for now.\n      const fontName = font.name.replace(\"font-\", \"\")\n      const fontSourceDependency =\n        font.font.dependency ?? `@fontsource-variable/${fontName}`\n      tree.dependencies ??= []\n      tree.dependencies.push(fontSourceDependency)\n      tree.css ??= {}\n      tree.css[`@import \"${fontSourceDependency}\"`] = {}\n      tree.cssVars.theme[font.font.variable] = font.font.family\n    }\n  }\n\n  // Apply font utility classes grouped by selector.\n  if (tree.fonts.length > 0) {\n    const groups = new Map<string, string[]>()\n\n    for (const font of tree.fonts) {\n      const selector =\n        font.font.selector ?? getDefaultFontSelector(font.font.variable)\n      if (!selector) {\n        continue\n      }\n\n      const cls = font.font.variable.replace(\"--\", \"\")\n      if (!groups.has(selector)) {\n        groups.set(selector, [])\n      }\n      groups.get(selector)!.push(cls)\n    }\n\n    tree.css ??= {}\n    tree.css[\"@layer base\"] ??= {}\n\n    for (const [selector, classes] of Array.from(groups.entries())) {\n      const fontClasses = classes.join(\" \")\n      tree.css[\"@layer base\"][selector] ??= {}\n      // Find existing @apply key and merge, or create new.\n      const existingApplyKey = Object.keys(\n        tree.css[\"@layer base\"][selector]\n      ).find((key) => key.startsWith(\"@apply \"))\n      if (existingApplyKey) {\n        delete tree.css[\"@layer base\"][selector][existingApplyKey]\n        tree.css[\"@layer base\"][selector][\n          `${existingApplyKey} ${fontClasses}`\n        ] = {}\n      } else {\n        tree.css[\"@layer base\"][selector][`@apply ${fontClasses}`] = {}\n      }\n    }\n  }\n\n  return tree\n}\n\nexport async function updateFonts(\n  fonts: RegistryFontItem[] | undefined,\n  config: Config,\n  options: {\n    silent?: boolean\n  }\n) {\n  if (!fonts?.length) {\n    return\n  }\n\n  const projectInfo = await getProjectInfo(config.resolvedPaths.cwd)\n\n  if (!projectInfo) {\n    return\n  }\n\n  if (\n    projectInfo.framework.name !== \"next-app\" &&\n    projectInfo.framework.name !== \"next-pages\"\n  ) {\n    return\n  }\n\n  const fontsSpinner = spinner(\"Updating fonts.\", {\n    silent: options.silent,\n  })?.start()\n\n  try {\n    await updateNextFonts(fonts, config, projectInfo)\n    fontsSpinner?.succeed(\"Updating fonts.\")\n  } catch (error) {\n    fontsSpinner?.fail(`Failed to update fonts.`)\n    throw error\n  }\n}\n\nasync function updateNextFonts(\n  fonts: RegistryFontItem[],\n  config: Config,\n  projectInfo: ProjectInfo\n) {\n  // Find layout file.\n  const layoutPath = await findLayoutFile(config, projectInfo)\n\n  if (!layoutPath) {\n    return\n  }\n\n  const layoutContent = await fs.readFile(layoutPath, \"utf-8\")\n  const updatedContent = await transformLayoutFonts(\n    layoutContent,\n    fonts,\n    config\n  )\n\n  if (updatedContent !== layoutContent) {\n    await fs.writeFile(layoutPath, updatedContent, \"utf-8\")\n  }\n}\n\nexport async function findLayoutFile(\n  config: Config,\n  projectInfo: ProjectInfo\n): Promise<string | null> {\n  const cwd = config.resolvedPaths.cwd\n  const isSrcDir = projectInfo.isSrcDir\n  const isTsx = projectInfo.isTsx\n  const ext = isTsx ? \"tsx\" : \"jsx\"\n\n  const possiblePaths = isSrcDir\n    ? [`src/app/layout.${ext}`, `app/layout.${ext}`]\n    : [`app/layout.${ext}`]\n\n  for (const relativePath of possiblePaths) {\n    const fullPath = path.join(cwd, relativePath)\n    if (existsSync(fullPath)) {\n      return fullPath\n    }\n  }\n\n  return null\n}\n\nexport async function transformLayoutFonts(\n  input: string,\n  fonts: RegistryFontItem[],\n  config: Config\n) {\n  const project = new Project({\n    compilerOptions: {},\n  })\n\n  const sourceFile = project.createSourceFile(\"layout.tsx\", input, {\n    scriptKind: ScriptKind.TSX,\n  })\n\n  // Only process Google fonts for now.\n  const googleFonts = fonts.filter((f) => f.font.provider === \"google\")\n\n  // Track which font variables and utility classes we're adding.\n  const fontVariableNames: string[] = []\n  const fontUtilityClasses: string[] = []\n\n  // Process Google fonts.\n  for (const font of googleFonts) {\n    const importName = font.font.import\n    if (!importName) {\n      continue\n    }\n\n    // Check if import already exists.\n    const existingImport = sourceFile.getImportDeclaration((decl) => {\n      const moduleSpecifier = decl.getModuleSpecifierValue()\n      return moduleSpecifier === \"next/font/google\"\n    })\n    let hasExistingImport = false\n\n    if (existingImport) {\n      const namedImports = existingImport.getNamedImports()\n      hasExistingImport = namedImports.some(\n        (imp) => imp.getName() === importName\n      )\n      if (!hasExistingImport) {\n        existingImport.addNamedImport(importName)\n      }\n    } else {\n      // Add new import.\n      sourceFile.addImportDeclaration({\n        moduleSpecifier: \"next/font/google\",\n        namedImports: [importName],\n      })\n    }\n\n    const varName = getFontVariableName(importName, font.font.variable)\n\n    // Build font options.\n    const fontOptions = buildFontOptions(font)\n\n    // Check if variable declaration already exists with same variable CSS property.\n    const existingVarDecl = findFontVariableDeclaration(\n      sourceFile,\n      font.font.variable\n    )\n    let resolvedVarName = varName\n\n    if (\n      hasExistingImport &&\n      !existingVarDecl &&\n      isRootFontVariable(font.font.variable) &&\n      !hasHeadingFontDeclaration(sourceFile, importName)\n    ) {\n      continue\n    }\n\n    if (existingVarDecl) {\n      // Replace the initializer of the existing declaration.\n      existingVarDecl.setInitializer(`${importName}(${fontOptions})`)\n      // Update the variable name if different.\n      if (existingVarDecl.getName() !== varName) {\n        existingVarDecl.rename(varName)\n      }\n      resolvedVarName = varName\n    } else {\n      // Find the last import or existing font declaration to insert after.\n      const insertPosition = findInsertPosition(sourceFile)\n\n      // Add variable declaration.\n      const statement = sourceFile.insertVariableStatement(insertPosition, {\n        declarationKind: VariableDeclarationKind.Const,\n        declarations: [\n          {\n            name: varName,\n            initializer: `${importName}(${fontOptions})`,\n          },\n        ],\n      })\n\n      // Add a blank line after the declaration.\n      statement.appendWhitespace(\"\\n\")\n    }\n\n    fontVariableNames.push(resolvedVarName)\n    if (shouldApplyFontUtilityToHtml(font)) {\n      fontUtilityClasses.push(font.font.variable.replace(\"--\", \"\"))\n    }\n  }\n\n  // Only keep one font-family class (font-sans, font-serif, font-mono) on <html>.\n  // The last one in the array takes priority as it's the one being added/changed.\n  const fontFamilyClasses = new Set([\"font-sans\", \"font-serif\", \"font-mono\"])\n  const lastFontFamilyClass = [...fontUtilityClasses]\n    .reverse()\n    .find((cls) => fontFamilyClasses.has(cls))\n  const filteredUtilityClasses = fontUtilityClasses.filter(\n    (cls) => !fontFamilyClasses.has(cls)\n  )\n  if (lastFontFamilyClass) {\n    filteredUtilityClasses.unshift(lastFontFamilyClass)\n  }\n\n  // Update html className to include font variables and utility classes.\n  if (fontVariableNames.length > 0) {\n    updateHtmlClassName(\n      sourceFile,\n      fontVariableNames,\n      filteredUtilityClasses,\n      config\n    )\n  }\n\n  return sourceFile.getFullText()\n}\n\nfunction buildFontOptions(font: RegistryFontItem) {\n  const options: Record<string, unknown> = {}\n\n  if (font.font.subsets?.length) {\n    options.subsets = font.font.subsets\n  }\n\n  if (font.font.weight?.length) {\n    options.weight = font.font.weight\n  }\n\n  options.variable = font.font.variable\n\n  return JSON.stringify(options)\n    .replace(/\"([^\"]+)\":/g, \"$1:\") // Remove quotes from keys.\n    .replace(/\"/g, \"'\") // Use single quotes for strings.\n}\n\nfunction isRootFontVariable(variable: string) {\n  return ROOT_FONT_VARIABLES.has(variable)\n}\n\nfunction getDefaultFontSelector(variable: string) {\n  return isRootFontVariable(variable) ? \"html\" : null\n}\n\nfunction shouldApplyFontUtilityToHtml(font: RegistryFontItem) {\n  return !font.font.selector && isRootFontVariable(font.font.variable)\n}\n\nfunction getFontVariableName(importName: string, variable: string) {\n  const baseName = toCamelCase(importName)\n\n  if (isRootFontVariable(variable)) {\n    return baseName\n  }\n\n  return `${baseName}${toPascalCase(variable.replace(/^--font-/, \"\"))}`\n}\n\nfunction toCamelCase(str: string) {\n  // Convert \"Geist_Mono\" -> \"geistMono\", \"Inter\" -> \"inter\".\n  return str\n    .split(\"_\")\n    .map((part, index) =>\n      index === 0\n        ? part.toLowerCase()\n        : part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()\n    )\n    .join(\"\")\n}\n\nfunction toPascalCase(str: string) {\n  return str\n    .split(\"-\")\n    .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n    .join(\"\")\n}\n\nfunction findFontVariableDeclaration(\n  sourceFile: ReturnType<Project[\"createSourceFile\"]>,\n  variable: string\n) {\n  // Find variable declarations that call a font function with matching variable.\n  const variableStatements = sourceFile.getVariableStatements()\n\n  for (const statement of variableStatements) {\n    for (const declaration of statement.getDeclarations()) {\n      const initializer = declaration.getInitializer()\n      if (!initializer) continue\n\n      // Check if it's a call expression.\n      if (initializer.getKind() !== SyntaxKind.CallExpression) continue\n\n      const callExpr = initializer as CallExpression\n\n      // Get the arguments.\n      const args = callExpr.getArguments()\n      if (args.length === 0) continue\n\n      // Check if any argument contains our variable.\n      const argText = args[0].getText()\n      if (argText.includes(`variable:`) && argText.includes(variable)) {\n        return declaration\n      }\n    }\n  }\n\n  return null\n}\n\nfunction hasHeadingFontDeclaration(\n  sourceFile: ReturnType<Project[\"createSourceFile\"]>,\n  importName: string\n) {\n  const variableStatements = sourceFile.getVariableStatements()\n\n  for (const statement of variableStatements) {\n    for (const declaration of statement.getDeclarations()) {\n      const initializer = declaration.getInitializer()\n      if (!initializer) continue\n\n      if (initializer.getKind() !== SyntaxKind.CallExpression) continue\n\n      const callExpr = initializer as CallExpression\n      if (callExpr.getExpression().getText() !== importName) continue\n\n      const args = callExpr.getArguments()\n      if (!args.length) continue\n\n      const argText = args[0].getText()\n      if (argText.includes(`variable:`) && argText.includes(\"--font-heading\")) {\n        return true\n      }\n    }\n  }\n\n  return false\n}\n\nfunction findInsertPosition(\n  sourceFile: ReturnType<Project[\"createSourceFile\"]>\n) {\n  const imports = sourceFile.getImportDeclarations()\n  if (imports.length > 0) {\n    const lastImport = imports[imports.length - 1]\n    return lastImport.getChildIndex() + 1\n  }\n  return 0\n}\n\nfunction updateHtmlClassName(\n  sourceFile: ReturnType<Project[\"createSourceFile\"]>,\n  fontVariableNames: string[],\n  fontUtilityClasses: string[],\n  config: Config\n) {\n  // Find the <html> JSX element.\n  const jsxElements = sourceFile.getDescendantsOfKind(\n    SyntaxKind.JsxOpeningElement\n  )\n\n  for (const element of jsxElements) {\n    const tagName = element.getTagNameNode().getText()\n    if (tagName !== \"html\") continue\n\n    // Build the new expressions: utility classes as strings, then .variable expressions.\n    const newUtilityClasses = fontUtilityClasses.map((cls) => `\"${cls}\"`)\n    const newVarExpressions = fontVariableNames.map(\n      (name) => `${name}.variable`\n    )\n    const allNewArgs = [...newUtilityClasses, ...newVarExpressions]\n\n    const classNameAttr = element.getAttribute(\"className\")\n    if (!classNameAttr) {\n      // Add className attribute with font utility classes and variables.\n      ensureCnImport(sourceFile, config)\n      element.addAttribute({\n        name: \"className\",\n        initializer: `{cn(${allNewArgs.join(\", \")})}`,\n      })\n      return\n    }\n\n    // Handle existing className.\n    if (classNameAttr.getKind() !== SyntaxKind.JsxAttribute) {\n      return\n    }\n\n    const jsxAttr = classNameAttr.asKindOrThrow(SyntaxKind.JsxAttribute)\n    const initializer = jsxAttr.getInitializer()\n\n    if (!initializer) return\n\n    if (initializer.getKind() === SyntaxKind.StringLiteral) {\n      // className=\"some-class\" -> className={cn(\"some-class\", \"font-serif\", font.variable)}\n      const currentValue = initializer.getText().slice(1, -1) // Remove quotes.\n      ensureCnImport(sourceFile, config)\n      jsxAttr.setInitializer(\n        `{cn(\"${currentValue}\", ${allNewArgs.join(\", \")})}`\n      )\n    } else if (initializer.getKind() === SyntaxKind.JsxExpression) {\n      // className={...} - need to analyze the expression.\n      const jsxExpr = initializer.asKindOrThrow(SyntaxKind.JsxExpression)\n      const expr = jsxExpr.getExpression()\n      if (!expr) return\n\n      const exprText = expr.getText()\n\n      // Check if it's already using cn().\n      if (exprText.startsWith(\"cn(\")) {\n        // Check if cn() already has all our font variables and utility classes.\n        const hasAllFontVars = newVarExpressions.every((v) =>\n          exprText.includes(v)\n        )\n        const hasAllUtilityClasses = fontUtilityClasses.every((cls) =>\n          exprText.includes(`\"${cls}\"`)\n        )\n        // Check there are no stale font-family classes (e.g., \"font-sans\" when we want \"font-serif\").\n        const staleFontFamilyClasses = [\"font-sans\", \"font-serif\", \"font-mono\"]\n          .filter((cls) => !fontUtilityClasses.includes(cls))\n          .some((cls) => exprText.includes(`\"${cls}\"`))\n        if (hasAllFontVars && hasAllUtilityClasses && !staleFontFamilyClasses) {\n          // Already has everything, skip.\n          continue\n        }\n\n        // Remove existing font variables and font-family classes, then add new ones.\n        let cleanedExpr = removeFontVariablesFromCn(exprText, newVarExpressions)\n        cleanedExpr = removeFontFamilyClassesFromCn(cleanedExpr)\n        const newExpr = insertFontVariablesIntoCn(cleanedExpr, allNewArgs)\n        jsxExpr.replaceWithText(`{${newExpr}}`)\n      } else if (/^\\w+\\.variable$/.test(exprText)) {\n        // Single font variable like {inter.variable}.\n        // Check if it's already one of our font variables.\n        if (\n          newVarExpressions.includes(exprText) &&\n          fontUtilityClasses.length === 0\n        ) {\n          continue\n        }\n        // Replace with cn() including utility classes and font variables.\n        ensureCnImport(sourceFile, config)\n        const existingName = exprText.split(\".\")[0] ?? \"\"\n        const shouldPreserveExisting =\n          existingName.toLowerCase().includes(\"heading\") ||\n          fontUtilityClasses.length === 0\n        jsxExpr.replaceWithText(\n          shouldPreserveExisting\n            ? `{cn(${exprText}, ${allNewArgs.join(\", \")})}`\n            : `{cn(${allNewArgs.join(\", \")})}`\n        )\n      } else if (exprText.startsWith(\"`\") && exprText.endsWith(\"`\")) {\n        // Template literal - parse and convert to cn() arguments.\n        const cnArgs = parseTemplateLiteralToCnArgs(exprText)\n        ensureCnImport(sourceFile, config)\n        // Deduplicate cnArgs against allNewArgs.\n        const allNewArgsSet = new Set(allNewArgs)\n        const fontFamilyLiterals = new Set(\n          [\"font-sans\", \"font-serif\", \"font-mono\"].map((c) => `\"${c}\"`)\n        )\n        const cleanedCnArgs = cnArgs.filter(\n          (arg) => !allNewArgsSet.has(arg) && !fontFamilyLiterals.has(arg)\n        )\n        jsxExpr.replaceWithText(\n          `{cn(${[...cleanedCnArgs, ...allNewArgs].join(\", \")})}`\n        )\n      } else {\n        // Some other expression (variable, etc.), wrap with cn().\n        ensureCnImport(sourceFile, config)\n        jsxExpr.replaceWithText(`{cn(${exprText}, ${allNewArgs.join(\", \")})}`)\n      }\n    }\n  }\n}\n\nfunction ensureCnImport(\n  sourceFile: ReturnType<Project[\"createSourceFile\"]>,\n  config: Config\n) {\n  const existingImport = sourceFile.getImportDeclaration((decl) => {\n    const namedImports = decl.getNamedImports()\n    return namedImports.some((imp) => imp.getName() === \"cn\")\n  })\n\n  if (!existingImport) {\n    // Try to find the lib/utils import pattern.\n    const utilsImport = sourceFile.getImportDeclaration((decl) => {\n      const moduleSpecifier = decl.getModuleSpecifierValue()\n      return moduleSpecifier.includes(\"/lib/utils\")\n    })\n\n    if (utilsImport) {\n      const namedImports = utilsImport.getNamedImports()\n      if (!namedImports.some((imp) => imp.getName() === \"cn\")) {\n        utilsImport.addNamedImport(\"cn\")\n      }\n    } else {\n      // Add a new import for cn.\n      sourceFile.addImportDeclaration({\n        moduleSpecifier: config.aliases.utils,\n        namedImports: [\"cn\"],\n      })\n    }\n  }\n}\n\nfunction parseTemplateLiteralToCnArgs(templateLiteral: string) {\n  // Parse template literal like `${geistSans.variable} ${geistMono.variable} antialiased`\n  // into cn() arguments with static strings first, then variables:\n  // [\"antialiased\", geistSans.variable, geistMono.variable]\n  const staticArgs: string[] = []\n  const variableArgs: string[] = []\n\n  // Remove the backticks.\n  const content = templateLiteral.slice(1, -1)\n\n  // Split by ${...} expressions and static parts.\n  const parts = content.split(/(\\$\\{[^}]+\\})/)\n\n  for (const part of parts) {\n    if (!part) continue\n\n    if (part.startsWith(\"${\") && part.endsWith(\"}\")) {\n      // Expression like ${geistSans.variable}.\n      const expr = part.slice(2, -1).trim()\n      if (expr) {\n        variableArgs.push(expr)\n      }\n    } else {\n      // Static string - split by whitespace and add non-empty parts as quoted strings.\n      const staticParts = part.trim().split(/\\s+/).filter(Boolean)\n      for (const staticPart of staticParts) {\n        staticArgs.push(`\"${staticPart}\"`)\n      }\n    }\n  }\n\n  // Return static strings first, then variables.\n  return [...staticArgs, ...variableArgs]\n}\n\nfunction removeFontVariablesFromCn(\n  cnExpr: string,\n  variablesToRemove: string[]\n) {\n  // Remove specific font variable expressions from cn() call.\n  let result = cnExpr\n  for (const varExpr of variablesToRemove) {\n    result = result\n      .replace(new RegExp(`,?\\\\s*${varExpr.replace(\".\", \"\\\\.\")}`, \"g\"), \"\")\n      .replace(/cn\\(\\s*,/, \"cn(\")\n  }\n  return result\n}\n\nfunction removeFontFamilyClassesFromCn(cnExpr: string) {\n  // Remove font-family class strings (font-sans, font-serif, font-mono) from cn() call.\n  // Does not remove other font classes like font-bold, font-semibold, etc.\n  let result = cnExpr\n  for (const cls of [\"font-sans\", \"font-serif\", \"font-mono\"]) {\n    result = result\n      .replace(new RegExp(`,?\\\\s*\"${cls}\"`, \"g\"), \"\")\n      .replace(/cn\\(\\s*,/, \"cn(\")\n  }\n  return result\n}\n\nfunction insertFontVariablesIntoCn(cnExpr: string, fontVars: string[]) {\n  // Insert font variables at the end of cn() arguments.\n  const varsStr = fontVars.join(\", \")\n  return cnExpr.replace(/\\)$/, `, ${varsStr})`)\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-tailwind-config.ts",
    "content": "import { promises as fs } from \"fs\"\nimport { tmpdir } from \"os\"\nimport path from \"path\"\nimport {\n  registryItemCssVarsSchema,\n  registryItemTailwindSchema,\n} from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { TailwindVersion } from \"@/src/utils/get-project-info\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport deepmerge from \"deepmerge\"\nimport objectToString from \"stringify-object\"\nimport { type Config as TailwindConfig } from \"tailwindcss\"\nimport {\n  ArrayLiteralExpression,\n  ObjectLiteralExpression,\n  Project,\n  PropertyAssignment,\n  QuoteKind,\n  ScriptKind,\n  SyntaxKind,\n  VariableStatement,\n} from \"ts-morph\"\nimport { z } from \"zod\"\n\nexport type UpdaterTailwindConfig = Omit<TailwindConfig, \"plugins\"> & {\n  // We only want string plugins for now.\n  plugins?: string[]\n}\n\nexport async function updateTailwindConfig(\n  tailwindConfig:\n    | z.infer<typeof registryItemTailwindSchema>[\"config\"]\n    | undefined,\n  config: Config,\n  options: {\n    silent?: boolean\n    tailwindVersion?: TailwindVersion\n  }\n) {\n  if (!tailwindConfig) {\n    return\n  }\n\n  options = {\n    silent: false,\n    tailwindVersion: \"v3\",\n    ...options,\n  }\n\n  // No tailwind config in v4.\n  if (options.tailwindVersion === \"v4\") {\n    return\n  }\n\n  const tailwindFileRelativePath = path.relative(\n    config.resolvedPaths.cwd,\n    config.resolvedPaths.tailwindConfig\n  )\n  const tailwindSpinner = spinner(\n    `Updating ${highlighter.info(tailwindFileRelativePath)}`,\n    {\n      silent: options.silent,\n    }\n  ).start()\n  const raw = await fs.readFile(config.resolvedPaths.tailwindConfig, \"utf8\")\n  const output = await transformTailwindConfig(raw, tailwindConfig, config)\n  await fs.writeFile(config.resolvedPaths.tailwindConfig, output, \"utf8\")\n  tailwindSpinner?.succeed()\n}\n\nexport async function transformTailwindConfig(\n  input: string,\n  tailwindConfig: UpdaterTailwindConfig,\n  config: Config\n) {\n  const sourceFile = await _createSourceFile(input, config)\n  // Find the object with content property.\n  // This is faster than traversing the default export.\n  // TODO: maybe we do need to traverse the default export?\n  const configObject = sourceFile\n    .getDescendantsOfKind(SyntaxKind.ObjectLiteralExpression)\n    .find((node) =>\n      node\n        .getProperties()\n        .some(\n          (property) =>\n            property.isKind(SyntaxKind.PropertyAssignment) &&\n            property.getName() === \"content\"\n        )\n    )\n\n  // We couldn't find the config object, so we return the input as is.\n  if (!configObject) {\n    return input\n  }\n\n  const quoteChar = _getQuoteChar(configObject)\n\n  // Add darkMode.\n  addTailwindConfigProperty(\n    configObject,\n    {\n      name: \"darkMode\",\n      value: \"class\",\n    },\n    { quoteChar }\n  )\n\n  // Add Tailwind config plugins.\n  tailwindConfig.plugins?.forEach((plugin) => {\n    addTailwindConfigPlugin(configObject, plugin)\n  })\n\n  // Add Tailwind config theme.\n  if (tailwindConfig.theme) {\n    await addTailwindConfigTheme(configObject, tailwindConfig.theme)\n  }\n\n  return sourceFile.getFullText()\n}\n\nfunction addTailwindConfigProperty(\n  configObject: ObjectLiteralExpression,\n  property: {\n    name: string\n    value: string\n  },\n  {\n    quoteChar,\n  }: {\n    quoteChar: string\n  }\n) {\n  const existingProperty = configObject.getProperty(\"darkMode\")\n\n  if (!existingProperty) {\n    const newProperty = {\n      name: property.name,\n      initializer: `[${quoteChar}${property.value}${quoteChar}]`,\n    }\n\n    // We need to add darkMode as the first property.\n    if (property.name === \"darkMode\") {\n      configObject.insertPropertyAssignment(0, newProperty)\n      return configObject\n    }\n\n    configObject.addPropertyAssignment(newProperty)\n\n    return configObject\n  }\n\n  if (existingProperty.isKind(SyntaxKind.PropertyAssignment)) {\n    const initializer = existingProperty.getInitializer()\n    const newValue = `${quoteChar}${property.value}${quoteChar}`\n\n    // If property is a string, change it to an array and append.\n    if (initializer?.isKind(SyntaxKind.StringLiteral)) {\n      const initializerText = initializer.getText()\n      initializer.replaceWithText(`[${initializerText}, ${newValue}]`)\n      return configObject\n    }\n\n    // If property is an array, append.\n    if (initializer?.isKind(SyntaxKind.ArrayLiteralExpression)) {\n      // Check if the array already contains the value.\n      if (\n        initializer\n          .getElements()\n          .map((element) => element.getText())\n          .includes(newValue)\n      ) {\n        return configObject\n      }\n      initializer.addElement(newValue)\n    }\n\n    return configObject\n  }\n\n  return configObject\n}\n\nasync function addTailwindConfigTheme(\n  configObject: ObjectLiteralExpression,\n  theme: UpdaterTailwindConfig[\"theme\"]\n) {\n  // Ensure there is a theme property.\n  if (!configObject.getProperty(\"theme\")) {\n    configObject.addPropertyAssignment({\n      name: \"theme\",\n      initializer: \"{}\",\n    })\n  }\n\n  // Nest all spread properties.\n  nestSpreadProperties(configObject)\n\n  const themeProperty = configObject\n    .getPropertyOrThrow(\"theme\")\n    ?.asKindOrThrow(SyntaxKind.PropertyAssignment)\n\n  const themeInitializer = themeProperty.getInitializer()\n  if (themeInitializer?.isKind(SyntaxKind.ObjectLiteralExpression)) {\n    const themeObjectString = themeInitializer.getText()\n    const themeObject = await parseObjectLiteral(themeObjectString)\n    const result = deepmerge(themeObject, theme, {\n      arrayMerge: (dst, src) => src,\n    })\n    const resultString = objectToString(result)\n      .replace(/\\'\\.\\.\\.(.*)\\'/g, \"...$1\") // Remove quote around spread element\n      .replace(/\\'\\\"/g, \"'\") // Replace `\\\" with \"\n      .replace(/\\\"\\'/g, \"'\") // Replace `\\\" with \"\n      .replace(/\\'\\[/g, \"[\") // Replace `[ with [\n      .replace(/\\]\\'/g, \"]\") // Replace `] with ]\n      .replace(/\\'\\\\\\'/g, \"'\") // Replace `\\' with '\n      .replace(/\\\\\\'/g, \"'\") // Replace \\' with '\n      .replace(/\\\\\\'\\'/g, \"'\")\n      .replace(/\\'\\'/g, \"'\")\n    themeInitializer.replaceWithText(resultString)\n  }\n\n  // Unnest all spread properties.\n  unnestSpreadProperties(configObject)\n}\n\nfunction addTailwindConfigPlugin(\n  configObject: ObjectLiteralExpression,\n  plugin: string\n) {\n  const existingPlugins = configObject.getProperty(\"plugins\")\n\n  if (!existingPlugins) {\n    configObject.addPropertyAssignment({\n      name: \"plugins\",\n      initializer: `[${plugin}]`,\n    })\n\n    return configObject\n  }\n\n  if (existingPlugins.isKind(SyntaxKind.PropertyAssignment)) {\n    const initializer = existingPlugins.getInitializer()\n\n    if (initializer?.isKind(SyntaxKind.ArrayLiteralExpression)) {\n      if (\n        initializer\n          .getElements()\n          .map((element) => {\n            return element.getText().replace(/[\"']/g, \"\")\n          })\n          .includes(plugin.replace(/[\"']/g, \"\"))\n      ) {\n        return configObject\n      }\n      initializer.addElement(plugin)\n    }\n\n    return configObject\n  }\n\n  return configObject\n}\n\nexport async function _createSourceFile(input: string, config: Config | null) {\n  const dir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-\"))\n  const resolvedPath =\n    config?.resolvedPaths?.tailwindConfig || \"tailwind.config.ts\"\n  const tempFile = path.join(dir, `shadcn-${path.basename(resolvedPath)}`)\n\n  const project = new Project({\n    compilerOptions: {},\n  })\n  const sourceFile = project.createSourceFile(tempFile, input, {\n    // Note: .js and .mjs can still be valid for TS projects.\n    // We can't infer TypeScript from config.tsx.\n    scriptKind:\n      path.extname(resolvedPath) === \".ts\" ? ScriptKind.TS : ScriptKind.JS,\n  })\n\n  return sourceFile\n}\n\nexport function _getQuoteChar(configObject: ObjectLiteralExpression) {\n  return configObject\n    .getFirstDescendantByKind(SyntaxKind.StringLiteral)\n    ?.getQuoteKind() === QuoteKind.Single\n    ? \"'\"\n    : '\"'\n}\n\nexport function nestSpreadProperties(obj: ObjectLiteralExpression) {\n  const properties = obj.getProperties()\n\n  for (let i = 0; i < properties.length; i++) {\n    const prop = properties[i]\n    if (prop.isKind(SyntaxKind.SpreadAssignment)) {\n      const spreadAssignment = prop.asKindOrThrow(SyntaxKind.SpreadAssignment)\n      const spreadText = spreadAssignment.getExpression().getText()\n\n      // Replace spread with a property assignment\n      obj.insertPropertyAssignment(i, {\n        // Need to escape the name with \" so that deepmerge doesn't mishandle the key\n        name: `\"___${spreadText.replace(/^\\.\\.\\./, \"\")}\"`,\n        initializer: `\"...${spreadText.replace(/^\\.\\.\\./, \"\")}\"`,\n      })\n\n      // Remove the original spread assignment\n      spreadAssignment.remove()\n    } else if (prop.isKind(SyntaxKind.PropertyAssignment)) {\n      const propAssignment = prop.asKindOrThrow(SyntaxKind.PropertyAssignment)\n      const initializer = propAssignment.getInitializer()\n\n      if (\n        initializer &&\n        initializer.isKind(SyntaxKind.ObjectLiteralExpression)\n      ) {\n        // Recursively process nested object literals\n        nestSpreadProperties(\n          initializer.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)\n        )\n      } else if (\n        initializer &&\n        initializer.isKind(SyntaxKind.ArrayLiteralExpression)\n      ) {\n        nestSpreadElements(\n          initializer.asKindOrThrow(SyntaxKind.ArrayLiteralExpression)\n        )\n      }\n    }\n  }\n}\n\nexport function nestSpreadElements(arr: ArrayLiteralExpression) {\n  const elements = arr.getElements()\n  for (let j = 0; j < elements.length; j++) {\n    const element = elements[j]\n    if (element.isKind(SyntaxKind.ObjectLiteralExpression)) {\n      // Recursive check on objects within arrays\n      nestSpreadProperties(\n        element.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)\n      )\n    } else if (element.isKind(SyntaxKind.ArrayLiteralExpression)) {\n      // Recursive check on nested arrays\n      nestSpreadElements(\n        element.asKindOrThrow(SyntaxKind.ArrayLiteralExpression)\n      )\n    } else if (element.isKind(SyntaxKind.SpreadElement)) {\n      const spreadText = element.getText()\n      // Spread element within an array\n      arr.removeElement(j)\n      arr.insertElement(j, `\"${spreadText}\"`)\n    }\n  }\n}\n\nexport function unnestSpreadProperties(obj: ObjectLiteralExpression) {\n  const properties = obj.getProperties()\n\n  for (let i = 0; i < properties.length; i++) {\n    const prop = properties[i]\n    if (prop.isKind(SyntaxKind.PropertyAssignment)) {\n      const propAssignment = prop as PropertyAssignment\n      const initializer = propAssignment.getInitializer()\n\n      if (initializer && initializer.isKind(SyntaxKind.StringLiteral)) {\n        const value = initializer\n          .asKindOrThrow(SyntaxKind.StringLiteral)\n          .getLiteralValue()\n        if (value.startsWith(\"...\")) {\n          obj.insertSpreadAssignment(i, { expression: value.slice(3) })\n          propAssignment.remove()\n        }\n      } else if (initializer?.isKind(SyntaxKind.ObjectLiteralExpression)) {\n        unnestSpreadProperties(initializer as ObjectLiteralExpression)\n      } else if (\n        initializer &&\n        initializer.isKind(SyntaxKind.ArrayLiteralExpression)\n      ) {\n        unsetSpreadElements(\n          initializer.asKindOrThrow(SyntaxKind.ArrayLiteralExpression)\n        )\n      }\n    }\n  }\n}\n\nexport function unsetSpreadElements(arr: ArrayLiteralExpression) {\n  const elements = arr.getElements()\n  for (let j = 0; j < elements.length; j++) {\n    const element = elements[j]\n    if (element.isKind(SyntaxKind.ObjectLiteralExpression)) {\n      // Recursive check on objects within arrays\n      unnestSpreadProperties(\n        element.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)\n      )\n    } else if (element.isKind(SyntaxKind.ArrayLiteralExpression)) {\n      // Recursive check on nested arrays\n      unsetSpreadElements(\n        element.asKindOrThrow(SyntaxKind.ArrayLiteralExpression)\n      )\n    } else if (element.isKind(SyntaxKind.StringLiteral)) {\n      const spreadText = element.getText()\n      // check if spread element\n      const spreadTest = /(?:^['\"])(\\.\\.\\..*)(?:['\"]$)/g\n      if (spreadTest.test(spreadText)) {\n        arr.removeElement(j)\n        arr.insertElement(j, spreadText.replace(spreadTest, \"$1\"))\n      }\n    }\n  }\n}\n\nasync function parseObjectLiteral(objectLiteralString: string): Promise<any> {\n  const sourceFile = await _createSourceFile(\n    `const theme = ${objectLiteralString}`,\n    null\n  )\n\n  const statement = sourceFile.getStatements()[0]\n  if (statement?.getKind() === SyntaxKind.VariableStatement) {\n    const declaration = (statement as VariableStatement)\n      .getDeclarationList()\n      ?.getDeclarations()[0]\n    const initializer = declaration.getInitializer()\n    if (initializer?.isKind(SyntaxKind.ObjectLiteralExpression)) {\n      return await parseObjectLiteralExpression(initializer)\n    }\n  }\n\n  throw new Error(\"Invalid input: not an object literal\")\n}\n\nfunction parseObjectLiteralExpression(node: ObjectLiteralExpression): any {\n  const result: any = {}\n  for (const property of node.getProperties()) {\n    if (property.isKind(SyntaxKind.PropertyAssignment)) {\n      const name = property.getName().replace(/\\'/g, \"\")\n      if (\n        property.getInitializer()?.isKind(SyntaxKind.ObjectLiteralExpression)\n      ) {\n        result[name] = parseObjectLiteralExpression(\n          property.getInitializer() as ObjectLiteralExpression\n        )\n      } else if (\n        property.getInitializer()?.isKind(SyntaxKind.ArrayLiteralExpression)\n      ) {\n        result[name] = parseArrayLiteralExpression(\n          property.getInitializer() as ArrayLiteralExpression\n        )\n      } else {\n        result[name] = parseValue(property.getInitializer())\n      }\n    }\n  }\n  return result\n}\n\nfunction parseArrayLiteralExpression(node: ArrayLiteralExpression): any[] {\n  const result: any[] = []\n  for (const element of node.getElements()) {\n    if (element.isKind(SyntaxKind.ObjectLiteralExpression)) {\n      result.push(\n        parseObjectLiteralExpression(\n          element.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)\n        )\n      )\n    } else if (element.isKind(SyntaxKind.ArrayLiteralExpression)) {\n      result.push(\n        parseArrayLiteralExpression(\n          element.asKindOrThrow(SyntaxKind.ArrayLiteralExpression)\n        )\n      )\n    } else {\n      result.push(parseValue(element))\n    }\n  }\n  return result\n}\n\nfunction parseValue(node: any): any {\n  switch (node.getKind()) {\n    case SyntaxKind.StringLiteral:\n      return node.getText()\n    case SyntaxKind.NumericLiteral:\n      return Number(node.getText())\n    case SyntaxKind.TrueKeyword:\n      return true\n    case SyntaxKind.FalseKeyword:\n      return false\n    case SyntaxKind.NullKeyword:\n      return null\n    case SyntaxKind.ArrayLiteralExpression:\n      return node.getElements().map(parseValue)\n    case SyntaxKind.ObjectLiteralExpression:\n      return parseObjectLiteralExpression(node)\n    default:\n      return node.getText()\n  }\n}\n\nexport function buildTailwindThemeColorsFromCssVars(\n  cssVars: z.infer<typeof registryItemCssVarsSchema>\n) {\n  const result: Record<string, any> = {}\n\n  for (const key of Object.keys(cssVars)) {\n    const parts = key.split(\"-\")\n    const colorName = parts[0]\n    const subType = parts.slice(1).join(\"-\")\n\n    if (subType === \"\") {\n      if (typeof result[colorName] === \"object\") {\n        result[colorName].DEFAULT = `hsl(var(--${key}))`\n      } else {\n        result[colorName] = `hsl(var(--${key}))`\n      }\n    } else {\n      if (typeof result[colorName] !== \"object\") {\n        result[colorName] = { DEFAULT: `hsl(var(--${colorName}))` }\n      }\n      result[colorName][subType] = `hsl(var(--${key}))`\n    }\n  }\n\n  // Remove DEFAULT if it's not in the original cssVars\n  for (const [colorName, value] of Object.entries(result)) {\n    if (\n      typeof value === \"object\" &&\n      value.DEFAULT === `hsl(var(--${colorName}))` &&\n      !(colorName in cssVars)\n    ) {\n      delete value.DEFAULT\n    }\n  }\n\n  return result\n}\n"
  },
  {
    "path": "packages/shadcn/src/utils/updaters/update-tailwind-content.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { Config } from \"@/src/utils/get-config\"\nimport { highlighter } from \"@/src/utils/highlighter\"\nimport { spinner } from \"@/src/utils/spinner\"\nimport {\n  _createSourceFile,\n  _getQuoteChar,\n} from \"@/src/utils/updaters/update-tailwind-config\"\nimport { ObjectLiteralExpression, SyntaxKind } from \"ts-morph\"\n\nexport async function updateTailwindContent(\n  content: string[],\n  config: Config,\n  options: {\n    silent?: boolean\n  }\n) {\n  if (!content) {\n    return\n  }\n\n  options = {\n    silent: false,\n    ...options,\n  }\n\n  const tailwindFileRelativePath = path.relative(\n    config.resolvedPaths.cwd,\n    config.resolvedPaths.tailwindConfig\n  )\n  const tailwindSpinner = spinner(\n    `Updating ${highlighter.info(tailwindFileRelativePath)}`,\n    {\n      silent: options.silent,\n    }\n  ).start()\n  const raw = await fs.readFile(config.resolvedPaths.tailwindConfig, \"utf8\")\n  const output = await transformTailwindContent(raw, content, config)\n  await fs.writeFile(config.resolvedPaths.tailwindConfig, output, \"utf8\")\n  tailwindSpinner?.succeed()\n}\n\nexport async function transformTailwindContent(\n  input: string,\n  content: string[],\n  config: Config\n) {\n  const sourceFile = await _createSourceFile(input, config)\n  // Find the object with content property.\n  // This is faster than traversing the default export.\n  // TODO: maybe we do need to traverse the default export?\n  const configObject = sourceFile\n    .getDescendantsOfKind(SyntaxKind.ObjectLiteralExpression)\n    .find((node) =>\n      node\n        .getProperties()\n        .some(\n          (property) =>\n            property.isKind(SyntaxKind.PropertyAssignment) &&\n            property.getName() === \"content\"\n        )\n    )\n\n  // We couldn't find the config object, so we return the input as is.\n  if (!configObject) {\n    return input\n  }\n\n  addTailwindConfigContent(configObject, content)\n\n  return sourceFile.getFullText()\n}\n\nasync function addTailwindConfigContent(\n  configObject: ObjectLiteralExpression,\n  content: string[]\n) {\n  const quoteChar = _getQuoteChar(configObject)\n\n  const existingProperty = configObject.getProperty(\"content\")\n\n  if (!existingProperty) {\n    const newProperty = {\n      name: \"content\",\n      initializer: `[${quoteChar}${content.join(\n        `${quoteChar}, ${quoteChar}`\n      )}${quoteChar}]`,\n    }\n    configObject.addPropertyAssignment(newProperty)\n\n    return configObject\n  }\n\n  if (existingProperty.isKind(SyntaxKind.PropertyAssignment)) {\n    const initializer = existingProperty.getInitializer()\n\n    // If property is an array, append.\n    if (initializer?.isKind(SyntaxKind.ArrayLiteralExpression)) {\n      for (const contentItem of content) {\n        const newValue = `${quoteChar}${contentItem}${quoteChar}`\n\n        // Check if the array already contains the value.\n        if (\n          initializer\n            .getElements()\n            .map((element) => element.getText())\n            .includes(newValue)\n        ) {\n          continue\n        }\n\n        initializer.addElement(newValue)\n      }\n    }\n\n    return configObject\n  }\n\n  return configObject\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/colors/neutral.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"white\",\n      \"foreground\": \"neutral-950\",\n      \"muted\": \"neutral-100\",\n      \"muted-foreground\": \"neutral-500\",\n      \"popover\": \"white\",\n      \"popover-foreground\": \"neutral-950\",\n      \"border\": \"neutral-200\",\n      \"input\": \"neutral-200\",\n      \"card\": \"white\",\n      \"card-foreground\": \"neutral-950\",\n      \"primary\": \"neutral-900\",\n      \"primary-foreground\": \"neutral-50\",\n      \"secondary\": \"neutral-100\",\n      \"secondary-foreground\": \"neutral-900\",\n      \"accent\": \"neutral-100\",\n      \"accent-foreground\": \"neutral-900\",\n      \"destructive\": \"red-500\",\n      \"destructive-foreground\": \"neutral-50\",\n      \"ring\": \"neutral-400\"\n    },\n    \"dark\": {\n      \"background\": \"neutral-950\",\n      \"foreground\": \"neutral-50\",\n      \"muted\": \"neutral-800\",\n      \"muted-foreground\": \"neutral-400\",\n      \"popover\": \"neutral-950\",\n      \"popover-foreground\": \"neutral-50\",\n      \"border\": \"neutral-800\",\n      \"input\": \"neutral-800\",\n      \"card\": \"neutral-950\",\n      \"card-foreground\": \"neutral-50\",\n      \"primary\": \"neutral-50\",\n      \"primary-foreground\": \"neutral-900\",\n      \"secondary\": \"neutral-800\",\n      \"secondary-foreground\": \"neutral-50\",\n      \"accent\": \"neutral-800\",\n      \"accent-foreground\": \"neutral-50\",\n      \"destructive\": \"red-900\",\n      \"destructive-foreground\": \"red-50\",\n      \"ring\": \"neutral-800\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"0 0% 3.9%\",\n      \"muted\": \"0 0% 96.1%\",\n      \"muted-foreground\": \"0 0% 45.1%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"0 0% 3.9%\",\n      \"border\": \"0 0% 89.8%\",\n      \"input\": \"0 0% 89.8%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"0 0% 3.9%\",\n      \"primary\": \"0 0% 9%\",\n      \"primary-foreground\": \"0 0% 98%\",\n      \"secondary\": \"0 0% 96.1%\",\n      \"secondary-foreground\": \"0 0% 9%\",\n      \"accent\": \"0 0% 96.1%\",\n      \"accent-foreground\": \"0 0% 9%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"ring\": \"0 0% 63.9%\"\n    },\n    \"dark\": {\n      \"background\": \"0 0% 3.9%\",\n      \"foreground\": \"0 0% 98%\",\n      \"muted\": \"0 0% 14.9%\",\n      \"muted-foreground\": \"0 0% 63.9%\",\n      \"popover\": \"0 0% 3.9%\",\n      \"popover-foreground\": \"0 0% 98%\",\n      \"border\": \"0 0% 14.9%\",\n      \"input\": \"0 0% 14.9%\",\n      \"card\": \"0 0% 3.9%\",\n      \"card-foreground\": \"0 0% 98%\",\n      \"primary\": \"0 0% 98%\",\n      \"primary-foreground\": \"0 0% 9%\",\n      \"secondary\": \"0 0% 14.9%\",\n      \"secondary-foreground\": \"0 0% 98%\",\n      \"accent\": \"0 0% 14.9%\",\n      \"accent-foreground\": \"0 0% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"0 85.7% 97.3%\",\n      \"ring\": \"0 0% 14.9%\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n \\n@layer base {\\n  :root {\\n    --background: 0 0% 100%;\\n    --foreground: 0 0% 3.9%;\\n \\n    --muted: 0 0% 96.1%;\\n    --muted-foreground: 0 0% 45.1%;\\n \\n    --popover: 0 0% 100%;\\n    --popover-foreground: 0 0% 3.9%;\\n \\n    --card: 0 0% 100%;\\n    --card-foreground: 0 0% 3.9%;\\n \\n    --border: 0 0% 89.8%;\\n    --input: 0 0% 89.8%;\\n \\n    --primary: 0 0% 9%;\\n    --primary-foreground: 0 0% 98%;\\n \\n    --secondary: 0 0% 96.1%;\\n    --secondary-foreground: 0 0% 9%;\\n \\n    --accent: 0 0% 96.1%;\\n    --accent-foreground: 0 0% 9%;\\n \\n    --destructive: 0 84.2% 60.2%;\\n    --destructive-foreground: 0 0% 98%;\\n \\n    --ring: 0 0% 63.9%;\\n \\n    --radius: 0.5rem;\\n  }\\n \\n  .dark {\\n    --background: 0 0% 3.9%;\\n    --foreground: 0 0% 98%;\\n \\n    --muted: 0 0% 14.9%;\\n    --muted-foreground: 0 0% 63.9%;\\n \\n    --popover: 0 0% 3.9%;\\n    --popover-foreground: 0 0% 98%;\\n \\n    --card: 0 0% 3.9%;\\n    --card-foreground: 0 0% 98%;\\n \\n    --border: 0 0% 14.9%;\\n    --input: 0 0% 14.9%;\\n \\n    --primary: 0 0% 98%;\\n    --primary-foreground: 0 0% 9%;\\n \\n    --secondary: 0 0% 14.9%;\\n    --secondary-foreground: 0 0% 98%;\\n \\n    --accent: 0 0% 14.9%;\\n    --accent-foreground: 0 0% 98%;\\n \\n    --destructive: 0 62.8% 30.6%;\\n    --destructive-foreground: 0 85.7% 97.3%;\\n \\n    --ring: 0 0% 14.9%;\\n  }\\n}\\n \\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}"
  },
  {
    "path": "packages/shadcn/test/fixtures/colors/slate.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"white\",\n      \"foreground\": \"slate-950\",\n      \"muted\": \"slate-100\",\n      \"muted-foreground\": \"slate-500\",\n      \"popover\": \"white\",\n      \"popover-foreground\": \"slate-950\",\n      \"border\": \"slate-200\",\n      \"input\": \"slate-200\",\n      \"card\": \"white\",\n      \"card-foreground\": \"slate-950\",\n      \"primary\": \"slate-900\",\n      \"primary-foreground\": \"slate-50\",\n      \"secondary\": \"slate-100\",\n      \"secondary-foreground\": \"slate-900\",\n      \"accent\": \"slate-100\",\n      \"accent-foreground\": \"slate-900\",\n      \"destructive\": \"red-500\",\n      \"destructive-foreground\": \"slate-50\",\n      \"ring\": \"slate-400\"\n    },\n    \"dark\": {\n      \"background\": \"slate-950\",\n      \"foreground\": \"slate-50\",\n      \"muted\": \"slate-800\",\n      \"muted-foreground\": \"slate-400\",\n      \"popover\": \"slate-950\",\n      \"popover-foreground\": \"slate-50\",\n      \"border\": \"slate-800\",\n      \"input\": \"slate-800\",\n      \"card\": \"slate-950\",\n      \"card-foreground\": \"slate-50\",\n      \"primary\": \"slate-50\",\n      \"primary-foreground\": \"slate-900\",\n      \"secondary\": \"slate-800\",\n      \"secondary-foreground\": \"slate-50\",\n      \"accent\": \"slate-800\",\n      \"accent-foreground\": \"slate-50\",\n      \"destructive\": \"red-900\",\n      \"destructive-foreground\": \"red-50\",\n      \"ring\": \"slate-800\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"222.2 84% 4.9%\",\n      \"muted\": \"210 40% 96.1%\",\n      \"muted-foreground\": \"215.4 16.3% 46.9%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"222.2 84% 4.9%\",\n      \"border\": \"214.3 31.8% 91.4%\",\n      \"input\": \"214.3 31.8% 91.4%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"222.2 84% 4.9%\",\n      \"primary\": \"222.2 47.4% 11.2%\",\n      \"primary-foreground\": \"210 40% 98%\",\n      \"secondary\": \"210 40% 96.1%\",\n      \"secondary-foreground\": \"222.2 47.4% 11.2%\",\n      \"accent\": \"210 40% 96.1%\",\n      \"accent-foreground\": \"222.2 47.4% 11.2%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"210 40% 98%\",\n      \"ring\": \"215 20.2% 65.1%\"\n    },\n    \"dark\": {\n      \"background\": \"222.2 84% 4.9%\",\n      \"foreground\": \"210 40% 98%\",\n      \"muted\": \"217.2 32.6% 17.5%\",\n      \"muted-foreground\": \"215 20.2% 65.1%\",\n      \"popover\": \"222.2 84% 4.9%\",\n      \"popover-foreground\": \"210 40% 98%\",\n      \"border\": \"217.2 32.6% 17.5%\",\n      \"input\": \"217.2 32.6% 17.5%\",\n      \"card\": \"222.2 84% 4.9%\",\n      \"card-foreground\": \"210 40% 98%\",\n      \"primary\": \"210 40% 98%\",\n      \"primary-foreground\": \"222.2 47.4% 11.2%\",\n      \"secondary\": \"217.2 32.6% 17.5%\",\n      \"secondary-foreground\": \"210 40% 98%\",\n      \"accent\": \"217.2 32.6% 17.5%\",\n      \"accent-foreground\": \"210 40% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"0 85.7% 97.3%\",\n      \"ring\": \"217.2 32.6% 17.5%\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n \\n@layer base {\\n  :root {\\n    --background: 0 0% 100%;\\n    --foreground: 222.2 84% 4.9%;\\n \\n    --muted: 210 40% 96.1%;\\n    --muted-foreground: 215.4 16.3% 46.9%;\\n \\n    --popover: 0 0% 100%;\\n    --popover-foreground: 222.2 84% 4.9%;\\n \\n    --card: 0 0% 100%;\\n    --card-foreground: 222.2 84% 4.9%;\\n \\n    --border: 214.3 31.8% 91.4%;\\n    --input: 214.3 31.8% 91.4%;\\n \\n    --primary: 222.2 47.4% 11.2%;\\n    --primary-foreground: 210 40% 98%;\\n \\n    --secondary: 210 40% 96.1%;\\n    --secondary-foreground: 222.2 47.4% 11.2%;\\n \\n    --accent: 210 40% 96.1%;\\n    --accent-foreground: 222.2 47.4% 11.2%;\\n \\n    --destructive: 0 84.2% 60.2%;\\n    --destructive-foreground: 210 40% 98%;\\n \\n    --ring: 215 20.2% 65.1%;\\n \\n    --radius: 0.5rem;\\n  }\\n \\n  .dark {\\n    --background: 222.2 84% 4.9%;\\n    --foreground: 210 40% 98%;\\n \\n    --muted: 217.2 32.6% 17.5%;\\n    --muted-foreground: 215 20.2% 65.1%;\\n \\n    --popover: 222.2 84% 4.9%;\\n    --popover-foreground: 210 40% 98%;\\n \\n    --card: 222.2 84% 4.9%;\\n    --card-foreground: 210 40% 98%;\\n \\n    --border: 217.2 32.6% 17.5%;\\n    --input: 217.2 32.6% 17.5%;\\n \\n    --primary: 210 40% 98%;\\n    --primary-foreground: 222.2 47.4% 11.2%;\\n \\n    --secondary: 217.2 32.6% 17.5%;\\n    --secondary-foreground: 210 40% 98%;\\n \\n    --accent: 217.2 32.6% 17.5%;\\n    --accent-foreground: 210 40% 98%;\\n \\n    --destructive: 0 62.8% 30.6%;\\n    --destructive-foreground: 0 85.7% 97.3%;\\n \\n    --ring: 217.2 32.6% 17.5%;\\n  }\\n}\\n \\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}"
  },
  {
    "path": "packages/shadcn/test/fixtures/colors/stone.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"white\",\n      \"foreground\": \"stone-950\",\n      \"muted\": \"stone-100\",\n      \"muted-foreground\": \"stone-500\",\n      \"popover\": \"white\",\n      \"popover-foreground\": \"stone-950\",\n      \"border\": \"stone-200\",\n      \"input\": \"stone-200\",\n      \"card\": \"white\",\n      \"card-foreground\": \"stone-950\",\n      \"primary\": \"stone-900\",\n      \"primary-foreground\": \"stone-50\",\n      \"secondary\": \"stone-100\",\n      \"secondary-foreground\": \"stone-900\",\n      \"accent\": \"stone-100\",\n      \"accent-foreground\": \"stone-900\",\n      \"destructive\": \"red-500\",\n      \"destructive-foreground\": \"stone-50\",\n      \"ring\": \"stone-400\"\n    },\n    \"dark\": {\n      \"background\": \"stone-950\",\n      \"foreground\": \"stone-50\",\n      \"muted\": \"stone-800\",\n      \"muted-foreground\": \"stone-400\",\n      \"popover\": \"stone-950\",\n      \"popover-foreground\": \"stone-50\",\n      \"border\": \"stone-800\",\n      \"input\": \"stone-800\",\n      \"card\": \"stone-950\",\n      \"card-foreground\": \"stone-50\",\n      \"primary\": \"stone-50\",\n      \"primary-foreground\": \"stone-900\",\n      \"secondary\": \"stone-800\",\n      \"secondary-foreground\": \"stone-50\",\n      \"accent\": \"stone-800\",\n      \"accent-foreground\": \"stone-50\",\n      \"destructive\": \"red-900\",\n      \"destructive-foreground\": \"red-50\",\n      \"ring\": \"stone-800\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"20 14.3% 4.1%\",\n      \"muted\": \"60 4.8% 95.9%\",\n      \"muted-foreground\": \"25 5.3% 44.7%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"20 14.3% 4.1%\",\n      \"border\": \"20 5.9% 90%\",\n      \"input\": \"20 5.9% 90%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"20 14.3% 4.1%\",\n      \"primary\": \"24 9.8% 10%\",\n      \"primary-foreground\": \"60 9.1% 97.8%\",\n      \"secondary\": \"60 4.8% 95.9%\",\n      \"secondary-foreground\": \"24 9.8% 10%\",\n      \"accent\": \"60 4.8% 95.9%\",\n      \"accent-foreground\": \"24 9.8% 10%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"60 9.1% 97.8%\",\n      \"ring\": \"24 5.4% 63.9%\"\n    },\n    \"dark\": {\n      \"background\": \"20 14.3% 4.1%\",\n      \"foreground\": \"60 9.1% 97.8%\",\n      \"muted\": \"12 6.5% 15.1%\",\n      \"muted-foreground\": \"24 5.4% 63.9%\",\n      \"popover\": \"20 14.3% 4.1%\",\n      \"popover-foreground\": \"60 9.1% 97.8%\",\n      \"border\": \"12 6.5% 15.1%\",\n      \"input\": \"12 6.5% 15.1%\",\n      \"card\": \"20 14.3% 4.1%\",\n      \"card-foreground\": \"60 9.1% 97.8%\",\n      \"primary\": \"60 9.1% 97.8%\",\n      \"primary-foreground\": \"24 9.8% 10%\",\n      \"secondary\": \"12 6.5% 15.1%\",\n      \"secondary-foreground\": \"60 9.1% 97.8%\",\n      \"accent\": \"12 6.5% 15.1%\",\n      \"accent-foreground\": \"60 9.1% 97.8%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"0 85.7% 97.3%\",\n      \"ring\": \"12 6.5% 15.1%\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n \\n@layer base {\\n  :root {\\n    --background: 0 0% 100%;\\n    --foreground: 20 14.3% 4.1%;\\n \\n    --muted: 60 4.8% 95.9%;\\n    --muted-foreground: 25 5.3% 44.7%;\\n \\n    --popover: 0 0% 100%;\\n    --popover-foreground: 20 14.3% 4.1%;\\n \\n    --card: 0 0% 100%;\\n    --card-foreground: 20 14.3% 4.1%;\\n \\n    --border: 20 5.9% 90%;\\n    --input: 20 5.9% 90%;\\n \\n    --primary: 24 9.8% 10%;\\n    --primary-foreground: 60 9.1% 97.8%;\\n \\n    --secondary: 60 4.8% 95.9%;\\n    --secondary-foreground: 24 9.8% 10%;\\n \\n    --accent: 60 4.8% 95.9%;\\n    --accent-foreground: 24 9.8% 10%;\\n \\n    --destructive: 0 84.2% 60.2%;\\n    --destructive-foreground: 60 9.1% 97.8%;\\n \\n    --ring: 24 5.4% 63.9%;\\n \\n    --radius: 0.5rem;\\n  }\\n \\n  .dark {\\n    --background: 20 14.3% 4.1%;\\n    --foreground: 60 9.1% 97.8%;\\n \\n    --muted: 12 6.5% 15.1%;\\n    --muted-foreground: 24 5.4% 63.9%;\\n \\n    --popover: 20 14.3% 4.1%;\\n    --popover-foreground: 60 9.1% 97.8%;\\n \\n    --card: 20 14.3% 4.1%;\\n    --card-foreground: 60 9.1% 97.8%;\\n \\n    --border: 12 6.5% 15.1%;\\n    --input: 12 6.5% 15.1%;\\n \\n    --primary: 60 9.1% 97.8%;\\n    --primary-foreground: 24 9.8% 10%;\\n \\n    --secondary: 12 6.5% 15.1%;\\n    --secondary-foreground: 60 9.1% 97.8%;\\n \\n    --accent: 12 6.5% 15.1%;\\n    --accent-foreground: 60 9.1% 97.8%;\\n \\n    --destructive: 0 62.8% 30.6%;\\n    --destructive-foreground: 0 85.7% 97.3%;\\n \\n    --ring: 12 6.5% 15.1%;\\n  }\\n}\\n \\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}"
  },
  {
    "path": "packages/shadcn/test/fixtures/colors/zinc.json",
    "content": "{\n  \"inlineColors\": {\n    \"light\": {\n      \"background\": \"white\",\n      \"foreground\": \"zinc-950\",\n      \"muted\": \"zinc-100\",\n      \"muted-foreground\": \"zinc-500\",\n      \"popover\": \"white\",\n      \"popover-foreground\": \"zinc-950\",\n      \"border\": \"zinc-200\",\n      \"input\": \"zinc-200\",\n      \"card\": \"white\",\n      \"card-foreground\": \"zinc-950\",\n      \"primary\": \"zinc-900\",\n      \"primary-foreground\": \"zinc-50\",\n      \"secondary\": \"zinc-100\",\n      \"secondary-foreground\": \"zinc-900\",\n      \"accent\": \"zinc-100\",\n      \"accent-foreground\": \"zinc-900\",\n      \"destructive\": \"red-500\",\n      \"destructive-foreground\": \"zinc-50\",\n      \"ring\": \"zinc-400\"\n    },\n    \"dark\": {\n      \"background\": \"zinc-950\",\n      \"foreground\": \"zinc-50\",\n      \"muted\": \"zinc-800\",\n      \"muted-foreground\": \"zinc-400\",\n      \"popover\": \"zinc-950\",\n      \"popover-foreground\": \"zinc-50\",\n      \"border\": \"zinc-800\",\n      \"input\": \"zinc-800\",\n      \"card\": \"zinc-950\",\n      \"card-foreground\": \"zinc-50\",\n      \"primary\": \"zinc-50\",\n      \"primary-foreground\": \"zinc-900\",\n      \"secondary\": \"zinc-800\",\n      \"secondary-foreground\": \"zinc-50\",\n      \"accent\": \"zinc-800\",\n      \"accent-foreground\": \"zinc-50\",\n      \"destructive\": \"red-900\",\n      \"destructive-foreground\": \"red-50\",\n      \"ring\": \"zinc-800\"\n    }\n  },\n  \"cssVars\": {\n    \"light\": {\n      \"background\": \"0 0% 100%\",\n      \"foreground\": \"240 10% 3.9%\",\n      \"muted\": \"240 4.8% 95.9%\",\n      \"muted-foreground\": \"240 3.8% 46.1%\",\n      \"popover\": \"0 0% 100%\",\n      \"popover-foreground\": \"240 10% 3.9%\",\n      \"border\": \"240 5.9% 90%\",\n      \"input\": \"240 5.9% 90%\",\n      \"card\": \"0 0% 100%\",\n      \"card-foreground\": \"240 10% 3.9%\",\n      \"primary\": \"240 5.9% 10%\",\n      \"primary-foreground\": \"0 0% 98%\",\n      \"secondary\": \"240 4.8% 95.9%\",\n      \"secondary-foreground\": \"240 5.9% 10%\",\n      \"accent\": \"240 4.8% 95.9%\",\n      \"accent-foreground\": \"240 5.9% 10%\",\n      \"destructive\": \"0 84.2% 60.2%\",\n      \"destructive-foreground\": \"0 0% 98%\",\n      \"ring\": \"240 5% 64.9%\"\n    },\n    \"dark\": {\n      \"background\": \"240 10% 3.9%\",\n      \"foreground\": \"0 0% 98%\",\n      \"muted\": \"240 3.7% 15.9%\",\n      \"muted-foreground\": \"240 5% 64.9%\",\n      \"popover\": \"240 10% 3.9%\",\n      \"popover-foreground\": \"0 0% 98%\",\n      \"border\": \"240 3.7% 15.9%\",\n      \"input\": \"240 3.7% 15.9%\",\n      \"card\": \"240 10% 3.9%\",\n      \"card-foreground\": \"0 0% 98%\",\n      \"primary\": \"0 0% 98%\",\n      \"primary-foreground\": \"240 5.9% 10%\",\n      \"secondary\": \"240 3.7% 15.9%\",\n      \"secondary-foreground\": \"0 0% 98%\",\n      \"accent\": \"240 3.7% 15.9%\",\n      \"accent-foreground\": \"0 0% 98%\",\n      \"destructive\": \"0 62.8% 30.6%\",\n      \"destructive-foreground\": \"0 85.7% 97.3%\",\n      \"ring\": \"240 3.7% 15.9%\"\n    }\n  },\n  \"inlineColorsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\",\n  \"cssVarsTemplate\": \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n \\n@layer base {\\n  :root {\\n    --background: 0 0% 100%;\\n    --foreground: 240 10% 3.9%;\\n \\n    --muted: 240 4.8% 95.9%;\\n    --muted-foreground: 240 3.8% 46.1%;\\n \\n    --popover: 0 0% 100%;\\n    --popover-foreground: 240 10% 3.9%;\\n \\n    --card: 0 0% 100%;\\n    --card-foreground: 240 10% 3.9%;\\n \\n    --border: 240 5.9% 90%;\\n    --input: 240 5.9% 90%;\\n \\n    --primary: 240 5.9% 10%;\\n    --primary-foreground: 0 0% 98%;\\n \\n    --secondary: 240 4.8% 95.9%;\\n    --secondary-foreground: 240 5.9% 10%;\\n \\n    --accent: 240 4.8% 95.9%;\\n    --accent-foreground: 240 5.9% 10%;\\n \\n    --destructive: 0 84.2% 60.2%;\\n    --destructive-foreground: 0 0% 98%;\\n \\n    --ring: 240 5% 64.9%;\\n \\n    --radius: 0.5rem;\\n  }\\n \\n  .dark {\\n    --background: 240 10% 3.9%;\\n    --foreground: 0 0% 98%;\\n \\n    --muted: 240 3.7% 15.9%;\\n    --muted-foreground: 240 5% 64.9%;\\n \\n    --popover: 240 10% 3.9%;\\n    --popover-foreground: 0 0% 98%;\\n \\n    --card: 240 10% 3.9%;\\n    --card-foreground: 0 0% 98%;\\n \\n    --border: 240 3.7% 15.9%;\\n    --input: 240 3.7% 15.9%;\\n \\n    --primary: 0 0% 98%;\\n    --primary-foreground: 240 5.9% 10%;\\n \\n    --secondary: 240 3.7% 15.9%;\\n    --secondary-foreground: 0 0% 98%;\\n \\n    --accent: 240 3.7% 15.9%;\\n    --accent-foreground: 0 0% 98%;\\n \\n    --destructive: 0 62.8% 30.6%;\\n    --destructive-foreground: 0 85.7% 97.3%;\\n \\n    --ring: 240 3.7% 15.9%;\\n  }\\n}\\n \\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\"\n}"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-full/components.json",
    "content": "{\n  \"style\": \"new-york\",\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"src/app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"tw-\"\n  },\n  \"rsc\": false,\n  \"aliases\": {\n    \"utils\": \"~/lib/utils\",\n    \"components\": \"~/components\",\n    \"lib\": \"~/lib\",\n    \"hooks\": \"~/lib/hooks\",\n    \"ui\": \"~/ui\"\n  },\n  \"iconLibrary\": \"lucide\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-full/package.json",
    "content": "{\n  \"name\": \"test-cli-config-full\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-full/src/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-full/tailwind.config.ts",
    "content": ""
  },
  {
    "path": "packages/shadcn/test/fixtures/config-full/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"checkJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"noUncheckedIndexedAccess\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"~/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\n    \".eslintrc.cjs\",\n    \"next-env.d.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \"**/*.cjs\",\n    \"**/*.mjs\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-invalid/components.json",
    "content": "{\n  \"cn\": \"./components\",\n  \"ui\": \"./ui\",\n  \"does-not-exist\": \"./does-not-exist\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-invalid/package.json",
    "content": "{\n  \"name\": \"test-cli-config-invalid\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-jsx/components.json",
    "content": "{\n  \"style\": \"default\",\n  \"tsx\": false,\n  \"tailwind\": {\n    \"config\": \"./tailwind.config.js\",\n    \"css\": \"./src/assets/css/tailwind.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": false\n  },\n  \"aliases\": {\n    \"utils\": \"@/lib/utils\",\n    \"components\": \"@/components\"\n  },\n  \"iconLibrary\": \"radix\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-jsx/jsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-jsx/package.json",
    "content": "{\n  \"name\": \"test-cli-config-partial\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-none/package.json",
    "content": "{\n  \"name\": \"test-cli-config-none\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-partial/components.json",
    "content": "{\n  \"style\": \"default\",\n  \"tailwind\": {\n    \"config\": \"./tailwind.config.ts\",\n    \"css\": \"./src/assets/css/tailwind.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": false\n  },\n  \"aliases\": {\n    \"utils\": \"@/lib/utils\",\n    \"components\": \"@/components\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-partial/package.json",
    "content": "{\n  \"name\": \"test-cli-config-partial\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-partial/tailwind.config.ts",
    "content": ""
  },
  {
    "path": "packages/shadcn/test/fixtures/config-partial/tsconfig.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-ui/components.json",
    "content": "{\n  \"style\": \"new-york\",\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"src/app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"tw-\"\n  },\n  \"rsc\": false,\n  \"aliases\": {\n    \"utils\": \"~/lib/utils\",\n    \"components\": \"~/components\",\n    \"ui\": \"~/ui\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-ui/package.json",
    "content": "{\n  \"name\": \"test-cli-config-ui\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/config-ui/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"checkJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"noUncheckedIndexedAccess\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"~/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\n    \".eslintrc.cjs\",\n    \"next-env.d.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \"**/*.cjs\",\n    \"**/*.mjs\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n:root {\n  --foreground-rgb: 0, 0, 0;\n  --background-start-rgb: 214, 219, 220;\n  --background-end-rgb: 255, 255, 255;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    --foreground-rgb: 255, 255, 255;\n    --background-start-rgb: 0, 0, 0;\n    --background-end-rgb: 0, 0, 0;\n  }\n}\n\nbody {\n  color: rgb(var(--foreground-rgb));\n  background: linear-gradient(\n      to bottom,\n      transparent,\n      rgb(var(--background-end-rgb))\n    )\n    rgb(var(--background-start-rgb));\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/app/layout.tsx",
    "content": "import './globals.css'\nimport type { Metadata } from 'next'\nimport { Inter } from 'next/font/google'\n\nconst inter = Inter({ subsets: ['latin'] })\n\nexport const metadata: Metadata = {\n  title: 'Create Next App',\n  description: 'Generated by create next app',\n}\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={inter.className}>{children}</body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/app/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/app/page.tsx",
    "content": "import Image from 'next/image'\n\nexport default function Home() {\n  return (\n    <main className=\"flex min-h-screen flex-col items-center justify-between p-24\">\n      <div className=\"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex\">\n        <p className=\"fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30\">\n          Get started by editing&nbsp;\n          <code className=\"font-mono font-bold\">app/page.tsx</code>\n        </p>\n        <div className=\"fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none\">\n          <a\n            className=\"pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0\"\n            href=\"https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            By{' '}\n            <Image\n              src=\"/vercel.svg\"\n              alt=\"Vercel Logo\"\n              className=\"dark:invert\"\n              width={100}\n              height={24}\n              priority\n            />\n          </a>\n        </div>\n      </div>\n\n      <div className=\"relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 before:lg:h-[360px] z-[-1]\">\n        <Image\n          className=\"relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert\"\n          src=\"/next.svg\"\n          alt=\"Next.js Logo\"\n          width={180}\n          height={37}\n          priority\n        />\n      </div>\n\n      <div className=\"mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left\">\n        <a\n          href=\"https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Docs{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Find in-depth information about Next.js features and API.\n          </p>\n        </a>\n\n        <a\n          href=\"https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Learn{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Learn about Next.js in an interactive course with&nbsp;quizzes!\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Templates{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Explore the Next.js 13 playground.\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Deploy{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Instantly deploy your Next.js site to a shareable URL with Vercel.\n          </p>\n        </a>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/basic-features/typescript for more information.\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/next.config.ts",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/package.json",
    "content": "{\n  \"name\": \"test-cli-next-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"tailwindcss\": \"^3.0.0\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/tailwind.config.ts",
    "content": "// @ts-nocheck\nimport type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    './pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './components/**/*.{js,ts,jsx,tsx,mdx}',\n    './app/**/*.{js,ts,jsx,tsx,mdx}'\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',\n        'gradient-conic':\n          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))'\n      }\n    }\n  },\n  plugins: []\n}\nexport default config\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n:root {\n  --foreground-rgb: 0, 0, 0;\n  --background-start-rgb: 214, 219, 220;\n  --background-end-rgb: 255, 255, 255;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    --foreground-rgb: 255, 255, 255;\n    --background-start-rgb: 0, 0, 0;\n    --background-end-rgb: 0, 0, 0;\n  }\n}\n\nbody {\n  color: rgb(var(--foreground-rgb));\n  background: linear-gradient(\n      to bottom,\n      transparent,\n      rgb(var(--background-end-rgb))\n    )\n    rgb(var(--background-start-rgb));\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/app/layout.tsx",
    "content": "import './globals.css'\nimport type { Metadata } from 'next'\nimport { Inter } from 'next/font/google'\n\nconst inter = Inter({ subsets: ['latin'] })\n\nexport const metadata: Metadata = {\n  title: 'Create Next App',\n  description: 'Generated by create next app',\n}\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={inter.className}>{children}</body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/app/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/app/page.tsx",
    "content": "import Image from 'next/image'\n\nexport default function Home() {\n  return (\n    <main className=\"flex min-h-screen flex-col items-center justify-between p-24\">\n      <div className=\"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex\">\n        <p className=\"fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30\">\n          Get started by editing&nbsp;\n          <code className=\"font-mono font-bold\">app/page.tsx</code>\n        </p>\n        <div className=\"fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none\">\n          <a\n            className=\"pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0\"\n            href=\"https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            By{' '}\n            <Image\n              src=\"/vercel.svg\"\n              alt=\"Vercel Logo\"\n              className=\"dark:invert\"\n              width={100}\n              height={24}\n              priority\n            />\n          </a>\n        </div>\n      </div>\n\n      <div className=\"relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 before:lg:h-[360px] z-[-1]\">\n        <Image\n          className=\"relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert\"\n          src=\"/next.svg\"\n          alt=\"Next.js Logo\"\n          width={180}\n          height={37}\n          priority\n        />\n      </div>\n\n      <div className=\"mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left\">\n        <a\n          href=\"https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Docs{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Find in-depth information about Next.js features and API.\n          </p>\n        </a>\n\n        <a\n          href=\"https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Learn{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Learn about Next.js in an interactive course with&nbsp;quizzes!\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Templates{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Explore the Next.js 13 playground.\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Deploy{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Instantly deploy your Next.js site to a shareable URL with Vercel.\n          </p>\n        </a>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/basic-features/typescript for more information.\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/next.config.ts",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/package.json",
    "content": "{\n  \"name\": \"test-cli-next-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/tailwind.config.ts",
    "content": "// @ts-nocheck\nimport type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    './pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './components/**/*.{js,ts,jsx,tsx,mdx}',\n    './app/**/*.{js,ts,jsx,tsx,mdx}'\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',\n        'gradient-conic':\n          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))'\n      }\n    }\n  },\n  plugins: []\n}\nexport default config\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-custom-alias/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@custom-alias/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/basic-features/typescript for more information.\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/package.json",
    "content": "{\n  \"name\": \"next-app-src\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"tailwindcss\": \"3.1.2\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/src/app/layout.tsx",
    "content": "import \"./styles.css\"\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/src/app/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/src/app/page.tsx",
    "content": "import Image from 'next/image'\n\nexport default function Home() {\n  return (\n    <main className=\"flex min-h-screen flex-col items-center justify-between p-24\">\n      <div className=\"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex\">\n        <p className=\"fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30\">\n          Get started by editing&nbsp;\n          <code className=\"font-mono font-bold\">src/app/page.tsx</code>\n        </p>\n        <div className=\"fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none\">\n          <a\n            className=\"pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0\"\n            href=\"https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            By{' '}\n            <Image\n              src=\"/vercel.svg\"\n              alt=\"Vercel Logo\"\n              className=\"dark:invert\"\n              width={100}\n              height={24}\n              priority\n            />\n          </a>\n        </div>\n      </div>\n\n      <div className=\"relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 before:lg:h-[360px] z-[-1]\">\n        <Image\n          className=\"relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert\"\n          src=\"/next.svg\"\n          alt=\"Next.js Logo\"\n          width={180}\n          height={37}\n          priority\n        />\n      </div>\n\n      <div className=\"mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left\">\n        <a\n          href=\"https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Docs{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Find in-depth information about Next.js features and API.\n          </p>\n        </a>\n\n        <a\n          href=\"https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Learn{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Learn about Next.js in an interactive course with&nbsp;quizzes!\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Templates{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Explore the Next.js 13 playground.\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Deploy{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Instantly deploy your Next.js site to a shareable URL with Vercel.\n          </p>\n        </a>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/src/app/styles.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n:root {\n  --foreground-rgb: 0, 0, 0;\n  --background-start-rgb: 214, 219, 220;\n  --background-end-rgb: 255, 255, 255;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    --foreground-rgb: 255, 255, 255;\n    --background-start-rgb: 0, 0, 0;\n    --background-end-rgb: 0, 0, 0;\n  }\n}\n\nbody {\n  color: rgb(var(--foreground-rgb));\n  background: linear-gradient(\n      to bottom,\n      transparent,\n      rgb(var(--background-end-rgb))\n    )\n    rgb(var(--background-start-rgb));\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/src/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/tailwind.config.ts",
    "content": "// @ts-nocheck\nimport type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    './src/pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './src/components/**/*.{js,ts,jsx,tsx,mdx}',\n    './src/app/**/*.{js,ts,jsx,tsx,mdx}'\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',\n        'gradient-conic':\n          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))'\n      }\n    }\n  },\n  plugins: []\n}\nexport default config\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-app-src/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"#/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-monorepo/app/page.tsx",
    "content": "export default function Page() {\n  return <div>Hello</div>\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-monorepo/package.json",
    "content": "{\n  \"name\": \"next-monorepo-web\",\n  \"dependencies\": {\n    \"next\": \"15.0.0\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-monorepo/packages/ui/src/globals.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/package.json",
    "content": "{\n  \"name\": \"test-cli-pages\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"devDependencies\": {\n    \"tailwindcss\": \"4.1.2\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/pages/_app.tsx",
    "content": "import '~/styles/globals.css'\nimport type { AppProps } from 'next/app'\n\nexport default function App({ Component, pageProps }: AppProps) {\n  return <Component {...pageProps} />\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/pages/_document.tsx",
    "content": "import { Html, Head, Main, NextScript } from 'next/document'\n\nexport default function Document() {\n  return (\n    <Html lang=\"en\">\n      <Head />\n      <body>\n        <Main />\n        <NextScript />\n      </body>\n    </Html>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/pages/api/hello.ts",
    "content": "// Next.js API route support: https://nextjs.org/docs/api-routes/introduction\nimport type { NextApiRequest, NextApiResponse } from 'next'\n\ntype Data = {\n  name: string\n}\n\nexport default function handler(\n  req: NextApiRequest,\n  res: NextApiResponse<Data>\n) {\n  res.status(200).json({ name: 'John Doe' })\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/pages/index.tsx",
    "content": "import Image from 'next/image'\nimport { Inter } from 'next/font/google'\n\nconst inter = Inter({ subsets: ['latin'] })\n\nexport default function Home() {\n  return (\n    <main\n      className={`flex min-h-screen flex-col items-center justify-between p-24 ${inter.className}`}\n    >\n      <div className=\"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex\">\n        <p className=\"fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30\">\n          Get started by editing&nbsp;\n          <code className=\"font-mono font-bold\">pages/index.tsx</code>\n        </p>\n        <div className=\"fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none\">\n          <a\n            className=\"pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0\"\n            href=\"https://vercel.com?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            By{' '}\n            <Image\n              src=\"/vercel.svg\"\n              alt=\"Vercel Logo\"\n              className=\"dark:invert\"\n              width={100}\n              height={24}\n              priority\n            />\n          </a>\n        </div>\n      </div>\n\n      <div className=\"relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700/10 after:dark:from-sky-900 after:dark:via-[#0141ff]/40 before:lg:h-[360px]\">\n        <Image\n          className=\"relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert\"\n          src=\"/next.svg\"\n          alt=\"Next.js Logo\"\n          width={180}\n          height={37}\n          priority\n        />\n      </div>\n\n      <div className=\"mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left\">\n        <a\n          href=\"https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Docs{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Find in-depth information about Next.js features and API.\n          </p>\n        </a>\n\n        <a\n          href=\"https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Learn{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Learn about Next.js in an interactive course with&nbsp;quizzes!\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Templates{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Discover and deploy boilerplate example Next.js&nbsp;projects.\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Deploy{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Instantly deploy your Next.js site to a shareable URL with Vercel.\n          </p>\n        </a>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/pages/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/styles/globals.css",
    "content": "@import 'tailwindcss';\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/styles/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/tailwind.config.ts",
    "content": "// @ts-nocheck\nimport type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    './pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './components/**/*.{js,ts,jsx,tsx,mdx}',\n    './app/**/*.{js,ts,jsx,tsx,mdx}'\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',\n        'gradient-conic':\n          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))'\n      }\n    }\n  },\n  plugins: []\n}\nexport default config\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"paths\": {\n      \"~/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/basic-features/typescript for more information.\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/package.json",
    "content": "{\n  \"name\": \"test-pages-src\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"tailwindcss\": \"^4.0.0\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/src/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/src/pages/_app.tsx",
    "content": "import '@/styles/globals.css'\nimport type { AppProps } from 'next/app'\n\nexport default function App({ Component, pageProps }: AppProps) {\n  return <Component {...pageProps} />\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/src/pages/_document.tsx",
    "content": "import { Html, Head, Main, NextScript } from 'next/document'\n\nexport default function Document() {\n  return (\n    <Html lang=\"en\">\n      <Head />\n      <body>\n        <Main />\n        <NextScript />\n      </body>\n    </Html>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/src/pages/api/hello.ts",
    "content": "// Next.js API route support: https://nextjs.org/docs/api-routes/introduction\nimport type { NextApiRequest, NextApiResponse } from 'next'\n\ntype Data = {\n  name: string\n}\n\nexport default function handler(\n  req: NextApiRequest,\n  res: NextApiResponse<Data>\n) {\n  res.status(200).json({ name: 'John Doe' })\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/src/pages/index.tsx",
    "content": "import Image from 'next/image'\nimport { Inter } from 'next/font/google'\n\nconst inter = Inter({ subsets: ['latin'] })\n\nexport default function Home() {\n  return (\n    <main\n      className={`flex min-h-screen flex-col items-center justify-between p-24 ${inter.className}`}\n    >\n      <div className=\"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex\">\n        <p className=\"fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30\">\n          Get started by editing&nbsp;\n          <code className=\"font-mono font-bold\">src/pages/index.tsx</code>\n        </p>\n        <div className=\"fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none\">\n          <a\n            className=\"pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0\"\n            href=\"https://vercel.com?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            By{' '}\n            <Image\n              src=\"/vercel.svg\"\n              alt=\"Vercel Logo\"\n              className=\"dark:invert\"\n              width={100}\n              height={24}\n              priority\n            />\n          </a>\n        </div>\n      </div>\n\n      <div className=\"relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700/10 after:dark:from-sky-900 after:dark:via-[#0141ff]/40 before:lg:h-[360px]\">\n        <Image\n          className=\"relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert\"\n          src=\"/next.svg\"\n          alt=\"Next.js Logo\"\n          width={180}\n          height={37}\n          priority\n        />\n      </div>\n\n      <div className=\"mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left\">\n        <a\n          href=\"https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Docs{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Find in-depth information about Next.js features and API.\n          </p>\n        </a>\n\n        <a\n          href=\"https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Learn{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Learn about Next.js in an interactive course with&nbsp;quizzes!\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Templates{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Discover and deploy boilerplate example Next.js&nbsp;projects.\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Deploy{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Instantly deploy your Next.js site to a shareable URL with Vercel.\n          </p>\n        </a>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/src/pages/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/src/styles/globals.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/src/styles/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/tailwind.config.ts",
    "content": "// @ts-nocheck\nimport type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    './src/pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './src/components/**/*.{js,ts,jsx,tsx,mdx}',\n    './src/app/**/*.{js,ts,jsx,tsx,mdx}'\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',\n        'gradient-conic':\n          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))'\n      }\n    }\n  },\n  plugins: []\n}\nexport default config\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/next-pages-src/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/app/entry.client.tsx",
    "content": "/**\n * By default, Remix will handle hydrating your app on the client for you.\n * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨\n * For more information, see https://remix.run/file-conventions/entry.client\n */\n\nimport { RemixBrowser } from \"@remix-run/react\";\nimport { startTransition, StrictMode } from \"react\";\nimport { hydrateRoot } from \"react-dom/client\";\n\nstartTransition(() => {\n  hydrateRoot(\n    document,\n    <StrictMode>\n      <RemixBrowser />\n    </StrictMode>\n  );\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/app/entry.server.tsx",
    "content": "/**\n * By default, Remix will handle generating the HTTP Response for you.\n * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨\n * For more information, see https://remix.run/file-conventions/entry.server\n */\n\nimport { PassThrough } from \"node:stream\";\n\nimport type { AppLoadContext, EntryContext } from \"@remix-run/node\";\nimport { createReadableStreamFromReadable } from \"@remix-run/node\";\nimport { RemixServer } from \"@remix-run/react\";\nimport { isbot } from \"isbot\";\nimport { renderToPipeableStream } from \"react-dom/server\";\n\nconst ABORT_DELAY = 5_000;\n\nexport default function handleRequest(\n  request: Request,\n  responseStatusCode: number,\n  responseHeaders: Headers,\n  remixContext: EntryContext,\n  // This is ignored so we can keep it in the template for visibility.  Feel\n  // free to delete this parameter in your app if you're not using it!\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  loadContext: AppLoadContext\n) {\n  return isbot(request.headers.get(\"user-agent\") || \"\")\n    ? handleBotRequest(\n        request,\n        responseStatusCode,\n        responseHeaders,\n        remixContext\n      )\n    : handleBrowserRequest(\n        request,\n        responseStatusCode,\n        responseHeaders,\n        remixContext\n      );\n}\n\nfunction handleBotRequest(\n  request: Request,\n  responseStatusCode: number,\n  responseHeaders: Headers,\n  remixContext: EntryContext\n) {\n  return new Promise((resolve, reject) => {\n    let shellRendered = false;\n    const { pipe, abort } = renderToPipeableStream(\n      <RemixServer\n        context={remixContext}\n        url={request.url}\n        abortDelay={ABORT_DELAY}\n      />,\n      {\n        onAllReady() {\n          shellRendered = true;\n          const body = new PassThrough();\n          const stream = createReadableStreamFromReadable(body);\n\n          responseHeaders.set(\"Content-Type\", \"text/html\");\n\n          resolve(\n            new Response(stream, {\n              headers: responseHeaders,\n              status: responseStatusCode,\n            })\n          );\n\n          pipe(body);\n        },\n        onShellError(error: unknown) {\n          reject(error);\n        },\n        onError(error: unknown) {\n          responseStatusCode = 500;\n          // Log streaming rendering errors from inside the shell.  Don't log\n          // errors encountered during initial shell rendering since they'll\n          // reject and get logged in handleDocumentRequest.\n          if (shellRendered) {\n            console.error(error);\n          }\n        },\n      }\n    );\n\n    setTimeout(abort, ABORT_DELAY);\n  });\n}\n\nfunction handleBrowserRequest(\n  request: Request,\n  responseStatusCode: number,\n  responseHeaders: Headers,\n  remixContext: EntryContext\n) {\n  return new Promise((resolve, reject) => {\n    let shellRendered = false;\n    const { pipe, abort } = renderToPipeableStream(\n      <RemixServer\n        context={remixContext}\n        url={request.url}\n        abortDelay={ABORT_DELAY}\n      />,\n      {\n        onShellReady() {\n          shellRendered = true;\n          const body = new PassThrough();\n          const stream = createReadableStreamFromReadable(body);\n\n          responseHeaders.set(\"Content-Type\", \"text/html\");\n\n          resolve(\n            new Response(stream, {\n              headers: responseHeaders,\n              status: responseStatusCode,\n            })\n          );\n\n          pipe(body);\n        },\n        onShellError(error: unknown) {\n          reject(error);\n        },\n        onError(error: unknown) {\n          responseStatusCode = 500;\n          // Log streaming rendering errors from inside the shell.  Don't log\n          // errors encountered during initial shell rendering since they'll\n          // reject and get logged in handleDocumentRequest.\n          if (shellRendered) {\n            console.error(error);\n          }\n        },\n      }\n    );\n\n    setTimeout(abort, ABORT_DELAY);\n  });\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/app/root.tsx",
    "content": "import {\n  Links,\n  Meta,\n  Outlet,\n  Scripts,\n  ScrollRestoration,\n} from \"@remix-run/react\";\nimport \"./tailwind.css\";\n\nexport function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <head>\n        <meta charSet=\"utf-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        {children}\n        <ScrollRestoration />\n        <Scripts />\n      </body>\n    </html>\n  );\n}\n\nexport default function App() {\n  return <Outlet />;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/app/routes/_index.tsx",
    "content": "import type { MetaFunction } from \"@remix-run/node\";\n\nexport const meta: MetaFunction = () => {\n  return [\n    { title: \"New Remix App\" },\n    { name: \"description\", content: \"Welcome to Remix!\" },\n  ];\n};\n\nexport default function Index() {\n  return (\n    <div className=\"font-sans p-4\">\n      <h1 className=\"text-3xl\">Welcome to Remix</h1>\n      <ul className=\"list-disc mt-4 pl-6 space-y-2\">\n        <li>\n          <a\n            className=\"text-blue-700 underline visited:text-purple-900\"\n            target=\"_blank\"\n            href=\"https://remix.run/start/quickstart\"\n            rel=\"noreferrer\"\n          >\n            5m Quick Start\n          </a>\n        </li>\n        <li>\n          <a\n            className=\"text-blue-700 underline visited:text-purple-900\"\n            target=\"_blank\"\n            href=\"https://remix.run/start/tutorial\"\n            rel=\"noreferrer\"\n          >\n            30m Tutorial\n          </a>\n        </li>\n        <li>\n          <a\n            className=\"text-blue-700 underline visited:text-purple-900\"\n            target=\"_blank\"\n            href=\"https://remix.run/docs\"\n            rel=\"noreferrer\"\n          >\n            Remix Docs\n          </a>\n        </li>\n      </ul>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/app/tailwind.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/package.json",
    "content": "{\n  \"name\": \"test-cli-remix\",\n  \"private\": true,\n  \"sideEffects\": false,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"remix vite:build\",\n    \"dev\": \"remix vite:dev\",\n    \"lint\": \"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .\",\n    \"start\": \"remix-serve ./build/server/index.js\",\n    \"typecheck\": \"tsc\"\n  },\n  \"dependencies\": {\n    \"@remix-run/node\": \"^2.11.1\",\n    \"@remix-run/react\": \"^2.11.1\",\n    \"@remix-run/serve\": \"^2.11.1\",\n    \"isbot\": \"^4.1.0\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@remix-run/dev\": \"^2.11.1\",\n    \"@types/react\": \"^18.2.20\",\n    \"@types/react-dom\": \"^18.2.7\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.4\",\n    \"@typescript-eslint/parser\": \"^6.7.4\",\n    \"autoprefixer\": \"^10.4.19\",\n    \"eslint\": \"^8.38.0\",\n    \"eslint-import-resolver-typescript\": \"^3.6.1\",\n    \"eslint-plugin-import\": \"^2.28.1\",\n    \"eslint-plugin-jsx-a11y\": \"^6.7.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"postcss\": \"^8.4.24\",\n    \"tailwindcss\": \"^3.4.4\",\n    \"typescript\": \"^5.1.6\",\n    \"vite\": \"^5.1.0\",\n    \"vite-tsconfig-paths\": \"^4.2.1\"\n  },\n  \"engines\": {\n    \"node\": \">=20.0.0\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/postcss.config.js",
    "content": "export default {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n  content: [\"./app/**/{**,.client,.server}/**/*.{js,jsx,ts,tsx}\"],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n} satisfies Config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/tsconfig.json",
    "content": "{\n  \"include\": [\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \"**/.server/**/*.ts\",\n    \"**/.server/**/*.tsx\",\n    \"**/.client/**/*.ts\",\n    \"**/.client/**/*.tsx\"\n  ],\n  \"compilerOptions\": {\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ES2022\"],\n    \"isolatedModules\": true,\n    \"esModuleInterop\": true,\n    \"jsx\": \"react-jsx\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Bundler\",\n    \"resolveJsonModule\": true,\n    \"target\": \"ES2022\",\n    \"strict\": true,\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"~/*\": [\"./app/*\"]\n    },\n\n    // Vite takes care of building everything, not tsc.\n    \"noEmit\": true\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix/vite.config.ts",
    "content": "import { defineConfig } from \"vite\"\nimport tsconfigPaths from \"vite-tsconfig-paths\"\n\nexport default defineConfig({\n  plugins: [tsconfigPaths()],\n})\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.dockerignore",
    "content": "/node_modules\n*.log\n.DS_Store\n.env\n/.cache\n/public/build\n/build\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.eslintrc.js",
    "content": "/**\n * This is intended to be a basic starting point for linting in the Indie Stack.\n * It relies on recommended configs out of the box for simplicity, but you can\n * and should modify this configuration to best suit your team's needs.\n */\n\n/** @type {import('eslint').Linter.Config} */\nmodule.exports = {\n  root: true,\n  parserOptions: {\n    ecmaVersion: \"latest\",\n    sourceType: \"module\",\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  env: {\n    browser: true,\n    commonjs: true,\n    es6: true,\n  },\n\n  // Base config\n  extends: [\"eslint:recommended\"],\n\n  overrides: [\n    // React\n    {\n      files: [\"**/*.{js,jsx,ts,tsx}\"],\n      plugins: [\"react\", \"jsx-a11y\"],\n      extends: [\n        \"plugin:react/recommended\",\n        \"plugin:react/jsx-runtime\",\n        \"plugin:react-hooks/recommended\",\n        \"plugin:jsx-a11y/recommended\",\n        \"prettier\",\n      ],\n      settings: {\n        react: {\n          version: \"detect\",\n        },\n        formComponents: [\"Form\"],\n        linkComponents: [\n          { name: \"Link\", linkAttribute: \"to\" },\n          { name: \"NavLink\", linkAttribute: \"to\" },\n        ],\n      },\n      rules: {\n        \"react/jsx-no-leaked-render\": [\n          \"warn\",\n          { validStrategies: [\"ternary\"] },\n        ],\n      },\n    },\n\n    // Typescript\n    {\n      files: [\"**/*.{ts,tsx}\"],\n      plugins: [\"@typescript-eslint\", \"import\"],\n      parser: \"@typescript-eslint/parser\",\n      settings: {\n        \"import/internal-regex\": \"^~/\",\n        \"import/resolver\": {\n          node: {\n            extensions: [\".ts\", \".tsx\"],\n          },\n          typescript: {\n            alwaysTryTypes: true,\n          },\n        },\n      },\n      extends: [\n        \"plugin:@typescript-eslint/recommended\",\n        \"plugin:@typescript-eslint/stylistic\",\n        \"plugin:import/recommended\",\n        \"plugin:import/typescript\",\n        \"prettier\",\n      ],\n      rules: {\n        \"import/order\": [\n          \"error\",\n          {\n            alphabetize: { caseInsensitive: true, order: \"asc\" },\n            groups: [\"builtin\", \"external\", \"internal\", \"parent\", \"sibling\"],\n            \"newlines-between\": \"always\",\n          },\n        ],\n      },\n    },\n\n    // Markdown\n    {\n      files: [\"**/*.md\"],\n      plugins: [\"markdown\"],\n      extends: [\"plugin:markdown/recommended-legacy\", \"prettier\"],\n    },\n\n    // Jest/Vitest\n    {\n      files: [\"**/*.test.{js,jsx,ts,tsx}\"],\n      plugins: [\"jest\", \"jest-dom\", \"testing-library\"],\n      extends: [\n        \"plugin:jest/recommended\",\n        \"plugin:jest-dom/recommended\",\n        \"plugin:testing-library/react\",\n        \"prettier\",\n      ],\n      env: {\n        \"jest/globals\": true,\n      },\n      settings: {\n        jest: {\n          // we're using vitest which has a very similar API to jest\n          // (so the linting plugins work nicely), but it means we have to explicitly\n          // set the jest version.\n          version: 28,\n        },\n      },\n    },\n\n    // Cypress\n    {\n      files: [\"cypress/**/*.ts\"],\n      plugins: [\"cypress\"],\n      extends: [\"plugin:cypress/recommended\", \"prettier\"],\n    },\n\n    // Node\n    {\n      files: [\".eslintrc.js\", \"mocks/**/*.js\"],\n      env: {\n        node: true,\n      },\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: 🐛 Bug Report\ndescription: Something is wrong with the Stack.\nbody:\n  - type: markdown\n    attributes:\n      value: >-\n        Thank you for helping to improve Remix!\n\n        Our bandwidth on maintaining these stacks is limited. As a team, we're\n        currently focusing our efforts on Remix itself. The good news is you can\n        fork and adjust this stack however you'd like and start using it today\n        as a custom stack. Learn more from\n        [the Remix Stacks docs](https://remix.run/stacks).\n\n        If you'd still like to report a bug, please fill out this form. We can't\n        promise a timely response, but hopefully when we have the bandwidth to\n        work on these stacks again we can take a look. Thanks!\n\n  - type: input\n    attributes:\n      label: Have you experienced this bug with the latest version of the template?\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Steps to Reproduce\n      description: Steps to reproduce the behavior.\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Expected Behavior\n      description: A concise description of what you expected to happen.\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Actual Behavior\n      description: A concise description of what you're experiencing.\n    validations:\n      required: true\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Get Help\n    url: https://github.com/remix-run/remix/discussions/new?category=q-a\n    about:\n      If you can't get something to work the way you expect, open a question in\n      the Remix discussions.\n  - name: Feature Request\n    url: https://github.com/remix-run/remix/discussions/new?category=ideas\n    about:\n      We appreciate you taking the time to improve Remix with your ideas, but we\n      use the Remix Discussions for this instead of the issues tab 🙂.\n  - name: 💬 Remix Discord Channel\n    url: https://rmx.as/discord\n    about: Interact with other people using Remix 💿\n  - name: 💬 New Updates (Twitter)\n    url: https://twitter.com/remix_run\n    about: Stay up to date with Remix news on twitter\n  - name: 🍿 Remix YouTube Channel\n    url: https://rmx.as/youtube\n    about: Are you a tech lead or wanting to learn more about Remix in depth? Checkout the Remix YouTube Channel\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.github/PULL_REQUEST_TEMPLATE.md",
    "content": "<!--\n\n👋 Hey, thanks for your interest in contributing to Remix!\n\nOur bandwidth on maintaining these stacks is limited. As a team, we're currently\nfocusing our efforts on Remix itself. The good news is you can fork and adjust\nthis stack however you'd like and start using it today as a custom stack. Learn\nmore from [the Remix Stacks docs](https://remix.run/stacks).\n\nYou're still welcome to make a PR. We can't promise a timely response, but\nhopefully when we have the bandwidth to work on these stacks again we can take\na look. Thanks!\n\n-->\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: github-actions\n    directory: /\n    schedule:\n      interval: daily\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.github/workflows/deploy.yml",
    "content": "name: 🚀 Deploy\n\non:\n  push:\n    branches:\n      - main\n      - dev\n  pull_request:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\npermissions:\n  actions: write\n  contents: read\n\njobs:\n  lint:\n    name: ⬣ ESLint\n    runs-on: ubuntu-latest\n    steps:\n      - name: ⬇️ Checkout repo\n        uses: actions/checkout@v4\n\n      - name: ⎔ Setup node\n        uses: actions/setup-node@v4\n        with:\n          cache: npm\n          cache-dependency-path: ./package.json\n          node-version: 18\n\n      - name: 📥 Install deps\n        run: npm install\n\n      - name: 🔬 Lint\n        run: npm run lint\n\n  typecheck:\n    name: ʦ TypeScript\n    runs-on: ubuntu-latest\n    steps:\n      - name: ⬇️ Checkout repo\n        uses: actions/checkout@v4\n\n      - name: ⎔ Setup node\n        uses: actions/setup-node@v4\n        with:\n          cache: npm\n          cache-dependency-path: ./package.json\n          node-version: 18\n\n      - name: 📥 Install deps\n        run: npm install\n\n      - name: 🔎 Type check\n        run: npm run typecheck --if-present\n\n  vitest:\n    name: ⚡ Vitest\n    runs-on: ubuntu-latest\n    steps:\n      - name: ⬇️ Checkout repo\n        uses: actions/checkout@v4\n\n      - name: ⎔ Setup node\n        uses: actions/setup-node@v4\n        with:\n          cache: npm\n          cache-dependency-path: ./package.json\n          node-version: 18\n\n      - name: 📥 Install deps\n        run: npm install\n\n      - name: ⚡ Run vitest\n        run: npm run test -- --coverage\n\n  cypress:\n    name: ⚫️ Cypress\n    runs-on: ubuntu-latest\n    steps:\n      - name: ⬇️ Checkout repo\n        uses: actions/checkout@v4\n\n      - name: 🏄 Copy test env vars\n        run: cp .env.example .env\n\n      - name: ⎔ Setup node\n        uses: actions/setup-node@v4\n        with:\n          cache: npm\n          cache-dependency-path: ./package.json\n          node-version: 18\n\n      - name: 📥 Install deps\n        run: npm install\n\n      - name: 🛠 Setup Database\n        run: npx prisma migrate reset --force\n\n      - name: ⚙️ Build\n        run: npm run build\n\n      - name: 🌳 Cypress run\n        uses: cypress-io/github-action@v6\n        with:\n          start: npm run start:mocks\n          wait-on: http://localhost:8811\n        env:\n          PORT: 8811\n\n  deploy:\n    name: 🚀 Deploy\n    runs-on: ubuntu-latest\n    needs: [lint, typecheck, vitest, cypress]\n    # only deploy main/dev branch on pushes\n    if: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') && github.event_name == 'push' }}\n\n    steps:\n      - name: ⬇️ Checkout repo\n        uses: actions/checkout@v4\n\n      - name: 👀 Read app name\n        uses: SebRollen/toml-action@v1.2.0\n        id: app_name\n        with:\n          file: fly.toml\n          field: app\n\n      - name: 🎈 Setup Fly\n        uses: superfly/flyctl-actions/setup-flyctl@v1\n\n      - name: 🚀 Deploy Staging\n        if: ${{ github.ref == 'refs/heads/dev' }}\n        run: flyctl deploy --remote-only --build-arg COMMIT_SHA=${{ github.sha }} --app ${{ steps.app_name.outputs.value }}-staging\n        env:\n          FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}\n\n      - name: 🚀 Deploy Production\n        if: ${{ github.ref == 'refs/heads/main' }}\n        run: flyctl deploy --remote-only --build-arg COMMIT_SHA=${{ github.sha }} --app ${{ steps.app_name.outputs.value }}\n        env:\n          FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.github/workflows/format-repo.yml",
    "content": "name: 👔 Format\n\non:\n  push:\n    branches:\n      - main\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  format:\n    if: github.repository == 'remix-run/indie-stack'\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: ⬇️ Checkout repo\n        uses: actions/checkout@v4\n\n      - name: ⎔ Setup node\n        uses: actions/setup-node@v4\n        with:\n          cache: npm\n          cache-dependency-path: ./package.json\n          node-version: 18\n\n      - name: 📥 Install deps\n        run: npm install\n\n      - name: 👔 Format\n        run: npm run format:repo\n\n      - name: 💪 Commit\n        run: |\n          git config --local user.email \"github-actions[bot]@users.noreply.github.com\"\n          git config --local user.name \"github-actions[bot]\"\n\n          git add .\n          if [ -z \"$(git status --porcelain)\" ]; then\n            echo \"💿 no formatting changed\"\n            exit 0\n          fi\n          git commit -m \"chore: format\"\n          git push\n          echo \"💿 pushed formatting changes https://github.com/$GITHUB_REPOSITORY/commit/$(git rev-parse HEAD)\"\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.github/workflows/lint-repo.yml",
    "content": "name: ⬣ Lint repository\n\non:\n  push:\n    branches:\n      - main\n      - dev\n  pull_request:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  lint:\n    name: ⬣ Lint repo\n    runs-on: ubuntu-latest\n    steps:\n      - name: ⬇️ Checkout repo\n        uses: actions/checkout@v4\n\n      - name: ⎔ Setup node\n        uses: actions/setup-node@v4\n        with:\n          cache: npm\n          cache-dependency-path: ./package.json\n          node-version: 18\n\n      - name: 📥 Install deps\n        run: npm install\n\n      - name: 🔬 Lint\n        run: npm run lint\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.github/workflows/no-response.yml",
    "content": "name: 🥺 No Response\n\non:\n  schedule:\n    # Schedule for five minutes after the hour, every hour\n    - cron: \"5 * * * *\"\n\npermissions:\n  issues: write\n  pull-requests: write\n\njobs:\n  stale:\n    if: github.repository == 'remix-run/indie-stack'\n    runs-on: ubuntu-latest\n    steps:\n      - name: 🥺 Handle Ghosting\n        uses: actions/stale@v9\n        with:\n          days-before-close: 10\n          close-issue-message: >\n            This issue has been automatically closed because we haven't received a\n            response from the original author 🙈. This automation helps keep the issue\n            tracker clean from issues that are unactionable. Please reach out if you\n            have more information for us! 🙂\n          close-pr-message: >\n            This PR has been automatically closed because we haven't received a\n            response from the original author 🙈. This automation helps keep the issue\n            tracker clean from PRs that are unactionable. Please reach out if you\n            have more information for us! 🙂\n          # don't automatically mark issues/PRs as stale\n          days-before-stale: -1\n          stale-issue-label: needs-response\n          stale-pr-label: needs-response\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.gitignore",
    "content": "# We don't want lockfiles in stacks, as people could use a different package manager\n# This part will be removed by `remix.init`\nbun.lockb\npackage-lock.json\npnpm-lock.yaml\npnpm-lock.yml\nyarn.lock\n\nnode_modules\n\n/build\n/public/build\n.env\n\n/cypress/screenshots\n/cypress/videos\n/prisma/data.db\n/prisma/data.db-journal\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.gitpod.Dockerfile",
    "content": "FROM gitpod/workspace-full\n\n# Install Fly\nRUN curl -L https://fly.io/install.sh | sh\nENV FLYCTL_INSTALL=\"/home/gitpod/.fly\"\nENV PATH=\"$FLYCTL_INSTALL/bin:$PATH\"\n\n# Install GitHub CLI\nRUN brew install gh\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.gitpod.yml",
    "content": "# https://www.gitpod.io/docs/config-gitpod-file\n\nimage:\n  file: .gitpod.Dockerfile\n\nports:\n  - port: 3000\n    onOpen: notify\n\ntasks:\n  - name: Restore .env file\n    command: |\n      if [ -f .env ]; then\n        # If this workspace already has a .env, don't override it\n        # Local changes survive a workspace being opened and closed\n        # but they will not persist between separate workspaces for the same repo\n\n        echo \"Found .env in workspace\"\n      else\n        # There is no .env\n        if [ ! -n \"${ENV}\" ]; then\n          # There is no $ENV from a previous workspace\n          # Default to the example .env\n          echo \"Setting example .env\"\n\n          cp .env.example .env \n        else\n          # After making changes to .env, run this line to persist it to $ENV\n          #   eval $(gp env -e ENV=\"$(base64 .env | tr -d '\\n')\")\n          # \n          # Environment variables set this way are shared between all your workspaces for this repo\n          # The lines below will read $ENV and print a .env file\n\n          echo \"Restoring .env from Gitpod\"\n\n          echo \"${ENV}\" | base64 -d | tee .env > /dev/null\n        fi\n      fi\n\n  - init: npm install\n    command: npm run setup && npm run dev\n\nvscode:\n  extensions:\n    - ms-azuretools.vscode-docker\n    - esbenp.prettier-vscode\n    - dbaeumer.vscode-eslint\n    - bradlc.vscode-tailwindcss\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.npmrc",
    "content": "legacy-peer-deps=true\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/.prettierignore",
    "content": "node_modules\n\n/build\n/public/build\n.env\n\n/app/styles/tailwind.css\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/Dockerfile",
    "content": "# base node image\nFROM node:18-bullseye-slim as base\n\n# set for base and all layer that inherit from it\nENV NODE_ENV production\n\n# Install openssl for Prisma\nRUN apt-get update && apt-get install -y openssl sqlite3\n\n# Install all node_modules, including dev dependencies\nFROM base as deps\n\nWORKDIR /myapp\n\nADD package.json .npmrc ./\nRUN npm install --include=dev\n\n# Setup production node_modules\nFROM base as production-deps\n\nWORKDIR /myapp\n\nCOPY --from=deps /myapp/node_modules /myapp/node_modules\nADD package.json .npmrc ./\nRUN npm prune --omit=dev\n\n# Build the app\nFROM base as build\n\nWORKDIR /myapp\n\nCOPY --from=deps /myapp/node_modules /myapp/node_modules\n\nADD prisma .\nRUN npx prisma generate\n\nADD . .\nRUN npm run build\n\n# Finally, build the production image with minimal footprint\nFROM base\n\nENV DATABASE_URL=file:/data/sqlite.db\nENV PORT=\"8080\"\nENV NODE_ENV=\"production\"\n\n# add shortcut for connecting to database CLI\nRUN echo \"#!/bin/sh\\nset -x\\nsqlite3 \\$DATABASE_URL\" > /usr/local/bin/database-cli && chmod +x /usr/local/bin/database-cli\n\nWORKDIR /myapp\n\nCOPY --from=production-deps /myapp/node_modules /myapp/node_modules\nCOPY --from=build /myapp/node_modules/.prisma /myapp/node_modules/.prisma\n\nCOPY --from=build /myapp/build /myapp/build\nCOPY --from=build /myapp/public /myapp/public\nCOPY --from=build /myapp/package.json /myapp/package.json\nCOPY --from=build /myapp/start.sh /myapp/start.sh\nCOPY --from=build /myapp/prisma /myapp/prisma\n\nENTRYPOINT [ \"./start.sh\" ]\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/LICENSE.md",
    "content": "MIT License\n\nCopyright (c) Remix Software Inc. 2021\nCopyright (c) Shopify Inc. 2022-2023\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": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/README.md",
    "content": "# Remix Indie Stack\n\n![The Remix Indie Stack](https://repository-images.githubusercontent.com/465928257/a241fa49-bd4d-485a-a2a5-5cb8e4ee0abf)\n\nLearn more about [Remix Stacks](https://remix.run/stacks).\n\n```sh\nnpx create-remix@latest --template remix-run/indie-stack\n```\n\n## What's in the stack\n\n- [Fly app deployment](https://fly.io) with [Docker](https://www.docker.com/)\n- Production-ready [SQLite Database](https://sqlite.org)\n- Healthcheck endpoint for [Fly backups region fallbacks](https://fly.io/docs/reference/configuration/#services-http_checks)\n- [GitHub Actions](https://github.com/features/actions) for deploy on merge to production and staging environments\n- Email/Password Authentication with [cookie-based sessions](https://remix.run/utils/sessions#md-createcookiesessionstorage)\n- Database ORM with [Prisma](https://prisma.io)\n- Styling with [Tailwind](https://tailwindcss.com/)\n- End-to-end testing with [Cypress](https://cypress.io)\n- Local third party request mocking with [MSW](https://mswjs.io)\n- Unit testing with [Vitest](https://vitest.dev) and [Testing Library](https://testing-library.com)\n- Code formatting with [Prettier](https://prettier.io)\n- Linting with [ESLint](https://eslint.org)\n- Static Types with [TypeScript](https://typescriptlang.org)\n\nNot a fan of bits of the stack? Fork it, change it, and use `npx create-remix --template your/repo`! Make it your own.\n\n## Quickstart\n\nClick this button to create a [Gitpod](https://gitpod.io) workspace with the project set up and Fly pre-installed\n\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/remix-run/indie-stack/tree/main)\n\n## Development\n\n- First run this stack's `remix.init` script and commit the changes it makes to your project.\n\n  ```sh\n  npx remix init\n  git init # if you haven't already\n  git add .\n  git commit -m \"Initialize project\"\n  ```\n\n- Initial setup:\n\n  ```sh\n  npm run setup\n  ```\n\n- Start dev server:\n\n  ```sh\n  npm run dev\n  ```\n\nThis starts your app in development mode, rebuilding assets on file changes.\n\nThe database seed script creates a new user with some data you can use to get started:\n\n- Email: `rachel@remix.run`\n- Password: `racheliscool`\n\n### Relevant code:\n\nThis is a pretty simple note-taking app, but it's a good example of how you can build a full stack app with Prisma and Remix. The main functionality is creating users, logging in and out, and creating and deleting notes.\n\n- creating users, and logging in and out [./app/models/user.server.ts](app/models/user.server.ts)\n- user sessions, and verifying them [./app/session.server.ts](app/session.server.ts)\n- creating, and deleting notes [./app/models/note.server.ts](app/models/note.server.ts)\n\n## Deployment\n\nThis Remix Stack comes with two GitHub Actions that handle automatically deploying your app to production and staging environments.\n\nPrior to your first deployment, you'll need to do a few things:\n\n- [Install Fly](https://fly.io/docs/getting-started/installing-flyctl/)\n\n- Sign up and log in to Fly\n\n  ```sh\n  fly auth signup\n  ```\n\n  > **Note:** If you have more than one Fly account, ensure that you are signed into the same account in the Fly CLI as you are in the browser. In your terminal, run `fly auth whoami` and ensure the email matches the Fly account signed into the browser.\n\n- Create two apps on Fly, one for staging and one for production:\n\n  ```sh\n  fly apps create indie-stack-template\n  fly apps create indie-stack-template-staging\n  ```\n\n  > **Note:** Make sure this name matches the `app` set in your `fly.toml` file. Otherwise, you will not be able to deploy.\n\n  - Initialize Git.\n\n  ```sh\n  git init\n  ```\n\n- Create a new [GitHub Repository](https://repo.new), and then add it as the remote for your project. **Do not push your app yet!**\n\n  ```sh\n  git remote add origin <ORIGIN_URL>\n  ```\n\n- Add a `FLY_API_TOKEN` to your GitHub repo. To do this, go to your user settings on Fly and create a new [token](https://web.fly.io/user/personal_access_tokens/new), then add it to [your repo secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) with the name `FLY_API_TOKEN`.\n\n- Add a `SESSION_SECRET` to your fly app secrets, to do this you can run the following commands:\n\n  ```sh\n  fly secrets set SESSION_SECRET=$(openssl rand -hex 32) --app indie-stack-template\n  fly secrets set SESSION_SECRET=$(openssl rand -hex 32) --app indie-stack-template-staging\n  ```\n\n  If you don't have openssl installed, you can also use [1Password](https://1password.com/password-generator) to generate a random secret, just replace `$(openssl rand -hex 32)` with the generated secret.\n\n- Create a persistent volume for the sqlite database for both your staging and production environments. Run the following:\n\n  ```sh\n  fly volumes create data --size 1 --app indie-stack-template\n  fly volumes create data --size 1 --app indie-stack-template-staging\n  ```\n\nNow that everything is set up you can commit and push your changes to your repo. Every commit to your `main` branch will trigger a deployment to your production environment, and every commit to your `dev` branch will trigger a deployment to your staging environment.\n\n### Connecting to your database\n\nThe sqlite database lives at `/data/sqlite.db` in your deployed application. You can connect to the live database by running `fly ssh console -C database-cli`.\n\n### Getting Help with Deployment\n\nIf you run into any issues deploying to Fly, make sure you've followed all of the steps above and if you have, then post as many details about your deployment (including your app name) to [the Fly support community](https://community.fly.io). They're normally pretty responsive over there and hopefully can help resolve any of your deployment issues and questions.\n\n## GitHub Actions\n\nWe use GitHub Actions for continuous integration and deployment. Anything that gets into the `main` branch will be deployed to production after running tests/build/etc. Anything in the `dev` branch will be deployed to staging.\n\n## Testing\n\n### Cypress\n\nWe use Cypress for our End-to-End tests in this project. You'll find those in the `cypress` directory. As you make changes, add to an existing file or create a new file in the `cypress/e2e` directory to test your changes.\n\nWe use [`@testing-library/cypress`](https://testing-library.com/cypress) for selecting elements on the page semantically.\n\nTo run these tests in development, run `npm run test:e2e:dev` which will start the dev server for the app as well as the Cypress client. Make sure the database is running in docker as described above.\n\nWe have a utility for testing authenticated features without having to go through the login flow:\n\n```ts\ncy.login();\n// you are now logged in as a new user\n```\n\nWe also have a utility to auto-delete the user at the end of your test. Just make sure to add this in each test file:\n\n```ts\nafterEach(() => {\n  cy.cleanupUser();\n});\n```\n\nThat way, we can keep your local db clean and keep your tests isolated from one another.\n\n### Vitest\n\nFor lower level tests of utilities and individual components, we use `vitest`. We have DOM-specific assertion helpers via [`@testing-library/jest-dom`](https://testing-library.com/jest-dom).\n\n### Type Checking\n\nThis project uses TypeScript. It's recommended to get TypeScript set up for your editor to get a really great in-editor experience with type checking and auto-complete. To run type checking across the whole project, run `npm run typecheck`.\n\n### Linting\n\nThis project uses ESLint for linting. That is configured in `.eslintrc.js`.\n\n### Formatting\n\nWe use [Prettier](https://prettier.io/) for auto-formatting in this project. It's recommended to install an editor plugin (like the [VSCode Prettier plugin](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)) to get auto-formatting on save. There's also a `npm run format` script you can run to format all files in the project.\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/db.server.ts",
    "content": "import { PrismaClient } from \"@prisma/client\";\n\nimport { singleton } from \"./singleton.server\";\n\n// Hard-code a unique key, so we can look up the client when this module gets re-imported\nconst prisma = singleton(\"prisma\", () => new PrismaClient());\nprisma.$connect();\n\nexport { prisma };\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/entry.client.tsx",
    "content": "/**\n * By default, Remix will handle hydrating your app on the client for you.\n * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨\n * For more information, see https://remix.run/docs/en/main/file-conventions/entry.client\n */\n\nimport { RemixBrowser } from \"@remix-run/react\";\nimport { startTransition, StrictMode } from \"react\";\nimport { hydrateRoot } from \"react-dom/client\";\n\nstartTransition(() => {\n  hydrateRoot(\n    document,\n    <StrictMode>\n      <RemixBrowser />\n    </StrictMode>,\n  );\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/entry.server.tsx",
    "content": "/**\n * By default, Remix will handle generating the HTTP Response for you.\n * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨\n * For more information, see https://remix.run/docs/en/main/file-conventions/entry.server\n */\n\nimport { PassThrough } from \"node:stream\";\n\nimport type { EntryContext } from \"@remix-run/node\";\nimport { createReadableStreamFromReadable } from \"@remix-run/node\";\nimport { RemixServer } from \"@remix-run/react\";\nimport { isbot } from \"isbot\";\nimport { renderToPipeableStream } from \"react-dom/server\";\n\nconst ABORT_DELAY = 5_000;\n\nexport default function handleRequest(\n  request: Request,\n  responseStatusCode: number,\n  responseHeaders: Headers,\n  remixContext: EntryContext,\n) {\n  return isbot(request.headers.get(\"user-agent\"))\n    ? handleBotRequest(\n        request,\n        responseStatusCode,\n        responseHeaders,\n        remixContext,\n      )\n    : handleBrowserRequest(\n        request,\n        responseStatusCode,\n        responseHeaders,\n        remixContext,\n      );\n}\n\nfunction handleBotRequest(\n  request: Request,\n  responseStatusCode: number,\n  responseHeaders: Headers,\n  remixContext: EntryContext,\n) {\n  return new Promise((resolve, reject) => {\n    const { abort, pipe } = renderToPipeableStream(\n      <RemixServer\n        context={remixContext}\n        url={request.url}\n        abortDelay={ABORT_DELAY}\n      />,\n      {\n        onAllReady() {\n          const body = new PassThrough();\n\n          responseHeaders.set(\"Content-Type\", \"text/html\");\n\n          resolve(\n            new Response(createReadableStreamFromReadable(body), {\n              headers: responseHeaders,\n              status: responseStatusCode,\n            }),\n          );\n\n          pipe(body);\n        },\n        onShellError(error: unknown) {\n          reject(error);\n        },\n        onError(error: unknown) {\n          responseStatusCode = 500;\n          console.error(error);\n        },\n      },\n    );\n\n    setTimeout(abort, ABORT_DELAY);\n  });\n}\n\nfunction handleBrowserRequest(\n  request: Request,\n  responseStatusCode: number,\n  responseHeaders: Headers,\n  remixContext: EntryContext,\n) {\n  return new Promise((resolve, reject) => {\n    const { abort, pipe } = renderToPipeableStream(\n      <RemixServer\n        context={remixContext}\n        url={request.url}\n        abortDelay={ABORT_DELAY}\n      />,\n      {\n        onShellReady() {\n          const body = new PassThrough();\n\n          responseHeaders.set(\"Content-Type\", \"text/html\");\n\n          resolve(\n            new Response(createReadableStreamFromReadable(body), {\n              headers: responseHeaders,\n              status: responseStatusCode,\n            }),\n          );\n\n          pipe(body);\n        },\n        onShellError(error: unknown) {\n          reject(error);\n        },\n        onError(error: unknown) {\n          console.error(error);\n          responseStatusCode = 500;\n        },\n      },\n    );\n\n    setTimeout(abort, ABORT_DELAY);\n  });\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/models/note.server.ts",
    "content": "import type { User, Note } from \"@prisma/client\";\n\nimport { prisma } from \"~/db.server\";\n\nexport function getNote({\n  id,\n  userId,\n}: Pick<Note, \"id\"> & {\n  userId: User[\"id\"];\n}) {\n  return prisma.note.findFirst({\n    select: { id: true, body: true, title: true },\n    where: { id, userId },\n  });\n}\n\nexport function getNoteListItems({ userId }: { userId: User[\"id\"] }) {\n  return prisma.note.findMany({\n    where: { userId },\n    select: { id: true, title: true },\n    orderBy: { updatedAt: \"desc\" },\n  });\n}\n\nexport function createNote({\n  body,\n  title,\n  userId,\n}: Pick<Note, \"body\" | \"title\"> & {\n  userId: User[\"id\"];\n}) {\n  return prisma.note.create({\n    data: {\n      title,\n      body,\n      user: {\n        connect: {\n          id: userId,\n        },\n      },\n    },\n  });\n}\n\nexport function deleteNote({\n  id,\n  userId,\n}: Pick<Note, \"id\"> & { userId: User[\"id\"] }) {\n  return prisma.note.deleteMany({\n    where: { id, userId },\n  });\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/models/user.server.ts",
    "content": "import type { Password, User } from \"@prisma/client\";\nimport bcrypt from \"bcryptjs\";\n\nimport { prisma } from \"~/db.server\";\n\nexport type { User } from \"@prisma/client\";\n\nexport async function getUserById(id: User[\"id\"]) {\n  return prisma.user.findUnique({ where: { id } });\n}\n\nexport async function getUserByEmail(email: User[\"email\"]) {\n  return prisma.user.findUnique({ where: { email } });\n}\n\nexport async function createUser(email: User[\"email\"], password: string) {\n  const hashedPassword = await bcrypt.hash(password, 10);\n\n  return prisma.user.create({\n    data: {\n      email,\n      password: {\n        create: {\n          hash: hashedPassword,\n        },\n      },\n    },\n  });\n}\n\nexport async function deleteUserByEmail(email: User[\"email\"]) {\n  return prisma.user.delete({ where: { email } });\n}\n\nexport async function verifyLogin(\n  email: User[\"email\"],\n  password: Password[\"hash\"],\n) {\n  const userWithPassword = await prisma.user.findUnique({\n    where: { email },\n    include: {\n      password: true,\n    },\n  });\n\n  if (!userWithPassword || !userWithPassword.password) {\n    return null;\n  }\n\n  const isValid = await bcrypt.compare(\n    password,\n    userWithPassword.password.hash,\n  );\n\n  if (!isValid) {\n    return null;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const { password: _password, ...userWithoutPassword } = userWithPassword;\n\n  return userWithoutPassword;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/root.tsx",
    "content": "import { cssBundleHref } from \"@remix-run/css-bundle\";\nimport type { LinksFunction, LoaderFunctionArgs } from \"@remix-run/node\";\nimport { json } from \"@remix-run/node\";\nimport {\n  Links,\n  LiveReload,\n  Meta,\n  Outlet,\n  Scripts,\n  ScrollRestoration,\n} from \"@remix-run/react\";\n\nimport { getUser } from \"~/session.server\";\nimport stylesheet from \"~/tailwind.css\";\n\nexport const links: LinksFunction = () => [\n  { rel: \"stylesheet\", href: stylesheet },\n  ...(cssBundleHref ? [{ rel: \"stylesheet\", href: cssBundleHref }] : []),\n];\n\nexport const loader = async ({ request }: LoaderFunctionArgs) => {\n  return json({ user: await getUser(request) });\n};\n\nexport default function App() {\n  return (\n    <html lang=\"en\" className=\"h-full\">\n      <head>\n        <meta charSet=\"utf-8\" />\n        <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n        <Meta />\n        <Links />\n      </head>\n      <body className=\"h-full\">\n        <Outlet />\n        <ScrollRestoration />\n        <Scripts />\n        <LiveReload />\n      </body>\n    </html>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/_index.tsx",
    "content": "import type { MetaFunction } from \"@remix-run/node\";\nimport { Link } from \"@remix-run/react\";\n\nimport { useOptionalUser } from \"~/utils\";\n\nexport const meta: MetaFunction = () => [{ title: \"Remix Notes\" }];\n\nexport default function Index() {\n  const user = useOptionalUser();\n  return (\n    <main className=\"relative min-h-screen bg-white sm:flex sm:items-center sm:justify-center\">\n      <div className=\"relative sm:pb-16 sm:pt-8\">\n        <div className=\"mx-auto max-w-7xl sm:px-6 lg:px-8\">\n          <div className=\"relative shadow-xl sm:overflow-hidden sm:rounded-2xl\">\n            <div className=\"absolute inset-0\">\n              <img\n                className=\"h-full w-full object-cover\"\n                src=\"https://user-images.githubusercontent.com/1500684/157774694-99820c51-8165-4908-a031-34fc371ac0d6.jpg\"\n                alt=\"Sonic Youth On Stage\"\n              />\n              <div className=\"absolute inset-0 bg-[color:rgba(254,204,27,0.5)] mix-blend-multiply\" />\n            </div>\n            <div className=\"relative px-4 pb-8 pt-16 sm:px-6 sm:pb-14 sm:pt-24 lg:px-8 lg:pb-20 lg:pt-32\">\n              <h1 className=\"text-center text-6xl font-extrabold tracking-tight sm:text-8xl lg:text-9xl\">\n                <span className=\"block uppercase text-yellow-500 drop-shadow-md\">\n                  Indie Stack\n                </span>\n              </h1>\n              <p className=\"mx-auto mt-6 max-w-lg text-center text-xl text-white sm:max-w-3xl\">\n                Check the README.md file for instructions on how to get this\n                project deployed.\n              </p>\n              <div className=\"mx-auto mt-10 max-w-sm sm:flex sm:max-w-none sm:justify-center\">\n                {user ? (\n                  <Link\n                    to=\"/notes\"\n                    className=\"flex items-center justify-center rounded-md border border-transparent bg-white px-4 py-3 text-base font-medium text-yellow-700 shadow-sm hover:bg-yellow-50 sm:px-8\"\n                  >\n                    View Notes for {user.email}\n                  </Link>\n                ) : (\n                  <div className=\"space-y-4 sm:mx-auto sm:inline-grid sm:grid-cols-2 sm:gap-5 sm:space-y-0\">\n                    <Link\n                      to=\"/join\"\n                      className=\"flex items-center justify-center rounded-md border border-transparent bg-white px-4 py-3 text-base font-medium text-yellow-700 shadow-sm hover:bg-yellow-50 sm:px-8\"\n                    >\n                      Sign up\n                    </Link>\n                    <Link\n                      to=\"/login\"\n                      className=\"flex items-center justify-center rounded-md bg-yellow-500 px-4 py-3 font-medium text-white hover:bg-yellow-600\"\n                    >\n                      Log In\n                    </Link>\n                  </div>\n                )}\n              </div>\n              <a href=\"https://remix.run\">\n                <img\n                  src=\"https://user-images.githubusercontent.com/1500684/158298926-e45dafff-3544-4b69-96d6-d3bcc33fc76a.svg\"\n                  alt=\"Remix\"\n                  className=\"mx-auto mt-16 w-full max-w-[12rem] md:max-w-[16rem]\"\n                />\n              </a>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"mx-auto max-w-7xl px-4 py-2 sm:px-6 lg:px-8\">\n          <div className=\"mt-6 flex flex-wrap justify-center gap-8\">\n            {[\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157764397-ccd8ea10-b8aa-4772-a99b-35de937319e1.svg\",\n                alt: \"Fly.io\",\n                href: \"https://fly.io\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157764395-137ec949-382c-43bd-a3c0-0cb8cb22e22d.svg\",\n                alt: \"SQLite\",\n                href: \"https://sqlite.org\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157764484-ad64a21a-d7fb-47e3-8669-ec046da20c1f.svg\",\n                alt: \"Prisma\",\n                href: \"https://prisma.io\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157764276-a516a239-e377-4a20-b44a-0ac7b65c8c14.svg\",\n                alt: \"Tailwind\",\n                href: \"https://tailwindcss.com\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157764454-48ac8c71-a2a9-4b5e-b19c-edef8b8953d6.svg\",\n                alt: \"Cypress\",\n                href: \"https://www.cypress.io\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157772386-75444196-0604-4340-af28-53b236faa182.svg\",\n                alt: \"MSW\",\n                href: \"https://mswjs.io\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157772447-00fccdce-9d12-46a3-8bb4-fac612cdc949.svg\",\n                alt: \"Vitest\",\n                href: \"https://vitest.dev\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157772662-92b0dd3a-453f-4d18-b8be-9fa6efde52cf.png\",\n                alt: \"Testing Library\",\n                href: \"https://testing-library.com\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157772934-ce0a943d-e9d0-40f8-97f3-f464c0811643.svg\",\n                alt: \"Prettier\",\n                href: \"https://prettier.io\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157772990-3968ff7c-b551-4c55-a25c-046a32709a8e.svg\",\n                alt: \"ESLint\",\n                href: \"https://eslint.org\",\n              },\n              {\n                src: \"https://user-images.githubusercontent.com/1500684/157773063-20a0ed64-b9f8-4e0b-9d1e-0b65a3d4a6db.svg\",\n                alt: \"TypeScript\",\n                href: \"https://typescriptlang.org\",\n              },\n            ].map((img) => (\n              <a\n                key={img.href}\n                href={img.href}\n                className=\"flex h-16 w-32 justify-center p-1 grayscale transition hover:grayscale-0 focus:grayscale-0\"\n              >\n                <img alt={img.alt} src={img.src} className=\"object-contain\" />\n              </a>\n            ))}\n          </div>\n        </div>\n      </div>\n    </main>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/healthcheck.tsx",
    "content": "// learn more: https://fly.io/docs/reference/configuration/#services-http_checks\nimport type { LoaderFunctionArgs } from \"@remix-run/node\";\n\nimport { prisma } from \"~/db.server\";\n\nexport const loader = async ({ request }: LoaderFunctionArgs) => {\n  const host =\n    request.headers.get(\"X-Forwarded-Host\") ?? request.headers.get(\"host\");\n\n  try {\n    const url = new URL(\"/\", `http://${host}`);\n    // if we can connect to the database and make a simple query\n    // and make a HEAD request to ourselves, then we're good.\n    await Promise.all([\n      prisma.user.count(),\n      fetch(url.toString(), { method: \"HEAD\" }).then((r) => {\n        if (!r.ok) return Promise.reject(r);\n      }),\n    ]);\n    return new Response(\"OK\");\n  } catch (error: unknown) {\n    console.log(\"healthcheck ❌\", { error });\n    return new Response(\"ERROR\", { status: 500 });\n  }\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/join.tsx",
    "content": "import type {\n  ActionFunctionArgs,\n  LoaderFunctionArgs,\n  MetaFunction,\n} from \"@remix-run/node\";\nimport { json, redirect } from \"@remix-run/node\";\nimport { Form, Link, useActionData, useSearchParams } from \"@remix-run/react\";\nimport { useEffect, useRef } from \"react\";\n\nimport { createUser, getUserByEmail } from \"~/models/user.server\";\nimport { createUserSession, getUserId } from \"~/session.server\";\nimport { safeRedirect, validateEmail } from \"~/utils\";\n\nexport const loader = async ({ request }: LoaderFunctionArgs) => {\n  const userId = await getUserId(request);\n  if (userId) return redirect(\"/\");\n  return json({});\n};\n\nexport const action = async ({ request }: ActionFunctionArgs) => {\n  const formData = await request.formData();\n  const email = formData.get(\"email\");\n  const password = formData.get(\"password\");\n  const redirectTo = safeRedirect(formData.get(\"redirectTo\"), \"/\");\n\n  if (!validateEmail(email)) {\n    return json(\n      { errors: { email: \"Email is invalid\", password: null } },\n      { status: 400 },\n    );\n  }\n\n  if (typeof password !== \"string\" || password.length === 0) {\n    return json(\n      { errors: { email: null, password: \"Password is required\" } },\n      { status: 400 },\n    );\n  }\n\n  if (password.length < 8) {\n    return json(\n      { errors: { email: null, password: \"Password is too short\" } },\n      { status: 400 },\n    );\n  }\n\n  const existingUser = await getUserByEmail(email);\n  if (existingUser) {\n    return json(\n      {\n        errors: {\n          email: \"A user already exists with this email\",\n          password: null,\n        },\n      },\n      { status: 400 },\n    );\n  }\n\n  const user = await createUser(email, password);\n\n  return createUserSession({\n    redirectTo,\n    remember: false,\n    request,\n    userId: user.id,\n  });\n};\n\nexport const meta: MetaFunction = () => [{ title: \"Sign Up\" }];\n\nexport default function Join() {\n  const [searchParams] = useSearchParams();\n  const redirectTo = searchParams.get(\"redirectTo\") ?? undefined;\n  const actionData = useActionData<typeof action>();\n  const emailRef = useRef<HTMLInputElement>(null);\n  const passwordRef = useRef<HTMLInputElement>(null);\n\n  useEffect(() => {\n    if (actionData?.errors?.email) {\n      emailRef.current?.focus();\n    } else if (actionData?.errors?.password) {\n      passwordRef.current?.focus();\n    }\n  }, [actionData]);\n\n  return (\n    <div className=\"flex min-h-full flex-col justify-center\">\n      <div className=\"mx-auto w-full max-w-md px-8\">\n        <Form method=\"post\" className=\"space-y-6\">\n          <div>\n            <label\n              htmlFor=\"email\"\n              className=\"block text-sm font-medium text-gray-700\"\n            >\n              Email address\n            </label>\n            <div className=\"mt-1\">\n              <input\n                ref={emailRef}\n                id=\"email\"\n                required\n                // eslint-disable-next-line jsx-a11y/no-autofocus\n                autoFocus={true}\n                name=\"email\"\n                type=\"email\"\n                autoComplete=\"email\"\n                aria-invalid={actionData?.errors?.email ? true : undefined}\n                aria-describedby=\"email-error\"\n                className=\"w-full rounded border border-gray-500 px-2 py-1 text-lg\"\n              />\n              {actionData?.errors?.email ? (\n                <div className=\"pt-1 text-red-700\" id=\"email-error\">\n                  {actionData.errors.email}\n                </div>\n              ) : null}\n            </div>\n          </div>\n\n          <div>\n            <label\n              htmlFor=\"password\"\n              className=\"block text-sm font-medium text-gray-700\"\n            >\n              Password\n            </label>\n            <div className=\"mt-1\">\n              <input\n                id=\"password\"\n                ref={passwordRef}\n                name=\"password\"\n                type=\"password\"\n                autoComplete=\"new-password\"\n                aria-invalid={actionData?.errors?.password ? true : undefined}\n                aria-describedby=\"password-error\"\n                className=\"w-full rounded border border-gray-500 px-2 py-1 text-lg\"\n              />\n              {actionData?.errors?.password ? (\n                <div className=\"pt-1 text-red-700\" id=\"password-error\">\n                  {actionData.errors.password}\n                </div>\n              ) : null}\n            </div>\n          </div>\n\n          <input type=\"hidden\" name=\"redirectTo\" value={redirectTo} />\n          <button\n            type=\"submit\"\n            className=\"w-full rounded bg-blue-500 px-4 py-2 text-white hover:bg-blue-600 focus:bg-blue-400\"\n          >\n            Create Account\n          </button>\n          <div className=\"flex items-center justify-center\">\n            <div className=\"text-center text-sm text-gray-500\">\n              Already have an account?{\" \"}\n              <Link\n                className=\"text-blue-500 underline\"\n                to={{\n                  pathname: \"/login\",\n                  search: searchParams.toString(),\n                }}\n              >\n                Log in\n              </Link>\n            </div>\n          </div>\n        </Form>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/login.tsx",
    "content": "import type {\n  ActionFunctionArgs,\n  LoaderFunctionArgs,\n  MetaFunction,\n} from \"@remix-run/node\";\nimport { json, redirect } from \"@remix-run/node\";\nimport { Form, Link, useActionData, useSearchParams } from \"@remix-run/react\";\nimport { useEffect, useRef } from \"react\";\n\nimport { verifyLogin } from \"~/models/user.server\";\nimport { createUserSession, getUserId } from \"~/session.server\";\nimport { safeRedirect, validateEmail } from \"~/utils\";\n\nexport const loader = async ({ request }: LoaderFunctionArgs) => {\n  const userId = await getUserId(request);\n  if (userId) return redirect(\"/\");\n  return json({});\n};\n\nexport const action = async ({ request }: ActionFunctionArgs) => {\n  const formData = await request.formData();\n  const email = formData.get(\"email\");\n  const password = formData.get(\"password\");\n  const redirectTo = safeRedirect(formData.get(\"redirectTo\"), \"/\");\n  const remember = formData.get(\"remember\");\n\n  if (!validateEmail(email)) {\n    return json(\n      { errors: { email: \"Email is invalid\", password: null } },\n      { status: 400 },\n    );\n  }\n\n  if (typeof password !== \"string\" || password.length === 0) {\n    return json(\n      { errors: { email: null, password: \"Password is required\" } },\n      { status: 400 },\n    );\n  }\n\n  if (password.length < 8) {\n    return json(\n      { errors: { email: null, password: \"Password is too short\" } },\n      { status: 400 },\n    );\n  }\n\n  const user = await verifyLogin(email, password);\n\n  if (!user) {\n    return json(\n      { errors: { email: \"Invalid email or password\", password: null } },\n      { status: 400 },\n    );\n  }\n\n  return createUserSession({\n    redirectTo,\n    remember: remember === \"on\" ? true : false,\n    request,\n    userId: user.id,\n  });\n};\n\nexport const meta: MetaFunction = () => [{ title: \"Login\" }];\n\nexport default function LoginPage() {\n  const [searchParams] = useSearchParams();\n  const redirectTo = searchParams.get(\"redirectTo\") || \"/notes\";\n  const actionData = useActionData<typeof action>();\n  const emailRef = useRef<HTMLInputElement>(null);\n  const passwordRef = useRef<HTMLInputElement>(null);\n\n  useEffect(() => {\n    if (actionData?.errors?.email) {\n      emailRef.current?.focus();\n    } else if (actionData?.errors?.password) {\n      passwordRef.current?.focus();\n    }\n  }, [actionData]);\n\n  return (\n    <div className=\"flex min-h-full flex-col justify-center\">\n      <div className=\"mx-auto w-full max-w-md px-8\">\n        <Form method=\"post\" className=\"space-y-6\">\n          <div>\n            <label\n              htmlFor=\"email\"\n              className=\"block text-sm font-medium text-gray-700\"\n            >\n              Email address\n            </label>\n            <div className=\"mt-1\">\n              <input\n                ref={emailRef}\n                id=\"email\"\n                required\n                // eslint-disable-next-line jsx-a11y/no-autofocus\n                autoFocus={true}\n                name=\"email\"\n                type=\"email\"\n                autoComplete=\"email\"\n                aria-invalid={actionData?.errors?.email ? true : undefined}\n                aria-describedby=\"email-error\"\n                className=\"w-full rounded border border-gray-500 px-2 py-1 text-lg\"\n              />\n              {actionData?.errors?.email ? (\n                <div className=\"pt-1 text-red-700\" id=\"email-error\">\n                  {actionData.errors.email}\n                </div>\n              ) : null}\n            </div>\n          </div>\n\n          <div>\n            <label\n              htmlFor=\"password\"\n              className=\"block text-sm font-medium text-gray-700\"\n            >\n              Password\n            </label>\n            <div className=\"mt-1\">\n              <input\n                id=\"password\"\n                ref={passwordRef}\n                name=\"password\"\n                type=\"password\"\n                autoComplete=\"current-password\"\n                aria-invalid={actionData?.errors?.password ? true : undefined}\n                aria-describedby=\"password-error\"\n                className=\"w-full rounded border border-gray-500 px-2 py-1 text-lg\"\n              />\n              {actionData?.errors?.password ? (\n                <div className=\"pt-1 text-red-700\" id=\"password-error\">\n                  {actionData.errors.password}\n                </div>\n              ) : null}\n            </div>\n          </div>\n\n          <input type=\"hidden\" name=\"redirectTo\" value={redirectTo} />\n          <button\n            type=\"submit\"\n            className=\"w-full rounded bg-blue-500 px-4 py-2 text-white hover:bg-blue-600 focus:bg-blue-400\"\n          >\n            Log in\n          </button>\n          <div className=\"flex items-center justify-between\">\n            <div className=\"flex items-center\">\n              <input\n                id=\"remember\"\n                name=\"remember\"\n                type=\"checkbox\"\n                className=\"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n              />\n              <label\n                htmlFor=\"remember\"\n                className=\"ml-2 block text-sm text-gray-900\"\n              >\n                Remember me\n              </label>\n            </div>\n            <div className=\"text-center text-sm text-gray-500\">\n              Don&apos;t have an account?{\" \"}\n              <Link\n                className=\"text-blue-500 underline\"\n                to={{\n                  pathname: \"/join\",\n                  search: searchParams.toString(),\n                }}\n              >\n                Sign up\n              </Link>\n            </div>\n          </div>\n        </Form>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/logout.tsx",
    "content": "import type { ActionFunctionArgs } from \"@remix-run/node\";\nimport { redirect } from \"@remix-run/node\";\n\nimport { logout } from \"~/session.server\";\n\nexport const action = async ({ request }: ActionFunctionArgs) =>\n  logout(request);\n\nexport const loader = async () => redirect(\"/\");\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/notes.$noteId.tsx",
    "content": "import type { ActionFunctionArgs, LoaderFunctionArgs } from \"@remix-run/node\";\nimport { json, redirect } from \"@remix-run/node\";\nimport {\n  Form,\n  isRouteErrorResponse,\n  useLoaderData,\n  useRouteError,\n} from \"@remix-run/react\";\nimport invariant from \"tiny-invariant\";\n\nimport { deleteNote, getNote } from \"~/models/note.server\";\nimport { requireUserId } from \"~/session.server\";\n\nexport const loader = async ({ params, request }: LoaderFunctionArgs) => {\n  const userId = await requireUserId(request);\n  invariant(params.noteId, \"noteId not found\");\n\n  const note = await getNote({ id: params.noteId, userId });\n  if (!note) {\n    throw new Response(\"Not Found\", { status: 404 });\n  }\n  return json({ note });\n};\n\nexport const action = async ({ params, request }: ActionFunctionArgs) => {\n  const userId = await requireUserId(request);\n  invariant(params.noteId, \"noteId not found\");\n\n  await deleteNote({ id: params.noteId, userId });\n\n  return redirect(\"/notes\");\n};\n\nexport default function NoteDetailsPage() {\n  const data = useLoaderData<typeof loader>();\n\n  return (\n    <div>\n      <h3 className=\"text-2xl font-bold\">{data.note.title}</h3>\n      <p className=\"py-6\">{data.note.body}</p>\n      <hr className=\"my-4\" />\n      <Form method=\"post\">\n        <button\n          type=\"submit\"\n          className=\"rounded bg-blue-500 px-4 py-2 text-white hover:bg-blue-600 focus:bg-blue-400\"\n        >\n          Delete\n        </button>\n      </Form>\n    </div>\n  );\n}\n\nexport function ErrorBoundary() {\n  const error = useRouteError();\n\n  if (error instanceof Error) {\n    return <div>An unexpected error occurred: {error.message}</div>;\n  }\n\n  if (!isRouteErrorResponse(error)) {\n    return <h1>Unknown Error</h1>;\n  }\n\n  if (error.status === 404) {\n    return <div>Note not found</div>;\n  }\n\n  return <div>An unexpected error occurred: {error.statusText}</div>;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/notes._index.tsx",
    "content": "import { Link } from \"@remix-run/react\";\n\nexport default function NoteIndexPage() {\n  return (\n    <p>\n      No note selected. Select a note on the left, or{\" \"}\n      <Link to=\"new\" className=\"text-blue-500 underline\">\n        create a new note.\n      </Link>\n    </p>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/notes.new.tsx",
    "content": "import type { ActionFunctionArgs } from \"@remix-run/node\";\nimport { json, redirect } from \"@remix-run/node\";\nimport { Form, useActionData } from \"@remix-run/react\";\nimport { useEffect, useRef } from \"react\";\n\nimport { createNote } from \"~/models/note.server\";\nimport { requireUserId } from \"~/session.server\";\n\nexport const action = async ({ request }: ActionFunctionArgs) => {\n  const userId = await requireUserId(request);\n\n  const formData = await request.formData();\n  const title = formData.get(\"title\");\n  const body = formData.get(\"body\");\n\n  if (typeof title !== \"string\" || title.length === 0) {\n    return json(\n      { errors: { body: null, title: \"Title is required\" } },\n      { status: 400 },\n    );\n  }\n\n  if (typeof body !== \"string\" || body.length === 0) {\n    return json(\n      { errors: { body: \"Body is required\", title: null } },\n      { status: 400 },\n    );\n  }\n\n  const note = await createNote({ body, title, userId });\n\n  return redirect(`/notes/${note.id}`);\n};\n\nexport default function NewNotePage() {\n  const actionData = useActionData<typeof action>();\n  const titleRef = useRef<HTMLInputElement>(null);\n  const bodyRef = useRef<HTMLTextAreaElement>(null);\n\n  useEffect(() => {\n    if (actionData?.errors?.title) {\n      titleRef.current?.focus();\n    } else if (actionData?.errors?.body) {\n      bodyRef.current?.focus();\n    }\n  }, [actionData]);\n\n  return (\n    <Form\n      method=\"post\"\n      style={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        gap: 8,\n        width: \"100%\",\n      }}\n    >\n      <div>\n        <label className=\"flex w-full flex-col gap-1\">\n          <span>Title: </span>\n          <input\n            ref={titleRef}\n            name=\"title\"\n            className=\"flex-1 rounded-md border-2 border-blue-500 px-3 text-lg leading-loose\"\n            aria-invalid={actionData?.errors?.title ? true : undefined}\n            aria-errormessage={\n              actionData?.errors?.title ? \"title-error\" : undefined\n            }\n          />\n        </label>\n        {actionData?.errors?.title ? (\n          <div className=\"pt-1 text-red-700\" id=\"title-error\">\n            {actionData.errors.title}\n          </div>\n        ) : null}\n      </div>\n\n      <div>\n        <label className=\"flex w-full flex-col gap-1\">\n          <span>Body: </span>\n          <textarea\n            ref={bodyRef}\n            name=\"body\"\n            rows={8}\n            className=\"w-full flex-1 rounded-md border-2 border-blue-500 px-3 py-2 text-lg leading-6\"\n            aria-invalid={actionData?.errors?.body ? true : undefined}\n            aria-errormessage={\n              actionData?.errors?.body ? \"body-error\" : undefined\n            }\n          />\n        </label>\n        {actionData?.errors?.body ? (\n          <div className=\"pt-1 text-red-700\" id=\"body-error\">\n            {actionData.errors.body}\n          </div>\n        ) : null}\n      </div>\n\n      <div className=\"text-right\">\n        <button\n          type=\"submit\"\n          className=\"rounded bg-blue-500 px-4 py-2 text-white hover:bg-blue-600 focus:bg-blue-400\"\n        >\n          Save\n        </button>\n      </div>\n    </Form>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/routes/notes.tsx",
    "content": "import type { LoaderFunctionArgs } from \"@remix-run/node\";\nimport { json } from \"@remix-run/node\";\nimport { Form, Link, NavLink, Outlet, useLoaderData } from \"@remix-run/react\";\n\nimport { getNoteListItems } from \"~/models/note.server\";\nimport { requireUserId } from \"~/session.server\";\nimport { useUser } from \"~/utils\";\n\nexport const loader = async ({ request }: LoaderFunctionArgs) => {\n  const userId = await requireUserId(request);\n  const noteListItems = await getNoteListItems({ userId });\n  return json({ noteListItems });\n};\n\nexport default function NotesPage() {\n  const data = useLoaderData<typeof loader>();\n  const user = useUser();\n\n  return (\n    <div className=\"flex h-full min-h-screen flex-col\">\n      <header className=\"flex items-center justify-between bg-slate-800 p-4 text-white\">\n        <h1 className=\"text-3xl font-bold\">\n          <Link to=\"\">Notes</Link>\n        </h1>\n        <p>{user.email}</p>\n        <Form action=\"/logout\" method=\"post\">\n          <button\n            type=\"submit\"\n            className=\"rounded bg-slate-600 px-4 py-2 text-blue-100 hover:bg-blue-500 active:bg-blue-600\"\n          >\n            Logout\n          </button>\n        </Form>\n      </header>\n\n      <main className=\"flex h-full bg-white\">\n        <div className=\"h-full w-80 border-r bg-gray-50\">\n          <Link to=\"new\" className=\"block p-4 text-xl text-blue-500\">\n            + New Note\n          </Link>\n\n          <hr />\n\n          {data.noteListItems.length === 0 ? (\n            <p className=\"p-4\">No notes yet</p>\n          ) : (\n            <ol>\n              {data.noteListItems.map((note) => (\n                <li key={note.id}>\n                  <NavLink\n                    className={({ isActive }) =>\n                      `block border-b p-4 text-xl ${isActive ? \"bg-white\" : \"\"}`\n                    }\n                    to={note.id}\n                  >\n                    📝 {note.title}\n                  </NavLink>\n                </li>\n              ))}\n            </ol>\n          )}\n        </div>\n\n        <div className=\"flex-1 p-6\">\n          <Outlet />\n        </div>\n      </main>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/session.server.ts",
    "content": "import { createCookieSessionStorage, redirect } from \"@remix-run/node\";\nimport invariant from \"tiny-invariant\";\n\nimport type { User } from \"~/models/user.server\";\nimport { getUserById } from \"~/models/user.server\";\n\ninvariant(process.env.SESSION_SECRET, \"SESSION_SECRET must be set\");\n\nexport const sessionStorage = createCookieSessionStorage({\n  cookie: {\n    name: \"__session\",\n    httpOnly: true,\n    path: \"/\",\n    sameSite: \"lax\",\n    secrets: [process.env.SESSION_SECRET],\n    secure: process.env.NODE_ENV === \"production\",\n  },\n});\n\nconst USER_SESSION_KEY = \"userId\";\n\nexport async function getSession(request: Request) {\n  const cookie = request.headers.get(\"Cookie\");\n  return sessionStorage.getSession(cookie);\n}\n\nexport async function getUserId(\n  request: Request,\n): Promise<User[\"id\"] | undefined> {\n  const session = await getSession(request);\n  const userId = session.get(USER_SESSION_KEY);\n  return userId;\n}\n\nexport async function getUser(request: Request) {\n  const userId = await getUserId(request);\n  if (userId === undefined) return null;\n\n  const user = await getUserById(userId);\n  if (user) return user;\n\n  throw await logout(request);\n}\n\nexport async function requireUserId(\n  request: Request,\n  redirectTo: string = new URL(request.url).pathname,\n) {\n  const userId = await getUserId(request);\n  if (!userId) {\n    const searchParams = new URLSearchParams([[\"redirectTo\", redirectTo]]);\n    throw redirect(`/login?${searchParams}`);\n  }\n  return userId;\n}\n\nexport async function requireUser(request: Request) {\n  const userId = await requireUserId(request);\n\n  const user = await getUserById(userId);\n  if (user) return user;\n\n  throw await logout(request);\n}\n\nexport async function createUserSession({\n  request,\n  userId,\n  remember,\n  redirectTo,\n}: {\n  request: Request;\n  userId: string;\n  remember: boolean;\n  redirectTo: string;\n}) {\n  const session = await getSession(request);\n  session.set(USER_SESSION_KEY, userId);\n  return redirect(redirectTo, {\n    headers: {\n      \"Set-Cookie\": await sessionStorage.commitSession(session, {\n        maxAge: remember\n          ? 60 * 60 * 24 * 7 // 7 days\n          : undefined,\n      }),\n    },\n  });\n}\n\nexport async function logout(request: Request) {\n  const session = await getSession(request);\n  return redirect(\"/\", {\n    headers: {\n      \"Set-Cookie\": await sessionStorage.destroySession(session),\n    },\n  });\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/singleton.server.ts",
    "content": "// Since the dev server re-requires the bundle, do some shenanigans to make\n// certain things persist across that 😆\n// Borrowed/modified from https://github.com/jenseng/abuse-the-platform/blob/2993a7e846c95ace693ce61626fa072174c8d9c7/app/utils/singleton.ts\n\nexport const singleton = <Value>(\n  name: string,\n  valueFactory: () => Value,\n): Value => {\n  const g = global as unknown as { __singletons: Record<string, unknown> };\n  g.__singletons ??= {};\n  g.__singletons[name] ??= valueFactory();\n  return g.__singletons[name] as Value;\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/tailwind.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/utils.test.ts",
    "content": "import { validateEmail } from \"./utils\";\n\ntest(\"validateEmail returns false for non-emails\", () => {\n  expect(validateEmail(undefined)).toBe(false);\n  expect(validateEmail(null)).toBe(false);\n  expect(validateEmail(\"\")).toBe(false);\n  expect(validateEmail(\"not-an-email\")).toBe(false);\n  expect(validateEmail(\"n@\")).toBe(false);\n});\n\ntest(\"validateEmail returns true for emails\", () => {\n  expect(validateEmail(\"kody@example.com\")).toBe(true);\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/app/utils.ts",
    "content": "import { useMatches } from \"@remix-run/react\";\nimport { useMemo } from \"react\";\n\nimport type { User } from \"~/models/user.server\";\n\nconst DEFAULT_REDIRECT = \"/\";\n\n/**\n * This should be used any time the redirect path is user-provided\n * (Like the query string on our login/signup pages). This avoids\n * open-redirect vulnerabilities.\n * @param {string} to The redirect destination\n * @param {string} defaultRedirect The redirect to use if the to is unsafe.\n */\nexport function safeRedirect(\n  to: FormDataEntryValue | string | null | undefined,\n  defaultRedirect: string = DEFAULT_REDIRECT,\n) {\n  if (!to || typeof to !== \"string\") {\n    return defaultRedirect;\n  }\n\n  if (!to.startsWith(\"/\") || to.startsWith(\"//\")) {\n    return defaultRedirect;\n  }\n\n  return to;\n}\n\n/**\n * This base hook is used in other hooks to quickly search for specific data\n * across all loader data using useMatches.\n * @param {string} id The route id\n * @returns {JSON|undefined} The router data or undefined if not found\n */\nexport function useMatchesData(\n  id: string,\n): Record<string, unknown> | undefined {\n  const matchingRoutes = useMatches();\n  const route = useMemo(\n    () => matchingRoutes.find((route) => route.id === id),\n    [matchingRoutes, id],\n  );\n  return route?.data as Record<string, unknown>;\n}\n\nfunction isUser(user: unknown): user is User {\n  return (\n    user != null &&\n    typeof user === \"object\" &&\n    \"email\" in user &&\n    typeof user.email === \"string\"\n  );\n}\n\nexport function useOptionalUser(): User | undefined {\n  const data = useMatchesData(\"root\");\n  if (!data || !isUser(data.user)) {\n    return undefined;\n  }\n  return data.user;\n}\n\nexport function useUser(): User {\n  const maybeUser = useOptionalUser();\n  if (!maybeUser) {\n    throw new Error(\n      \"No user found in root loader, but user is required by useUser. If user is optional, try useOptionalUser instead.\",\n    );\n  }\n  return maybeUser;\n}\n\nexport function validateEmail(email: unknown): email is string {\n  return typeof email === \"string\" && email.length > 3 && email.includes(\"@\");\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress/.eslintrc.js",
    "content": "module.exports = {\n  parserOptions: {\n    tsconfigRootDir: __dirname,\n    project: \"./tsconfig.json\",\n  },\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress/e2e/smoke.cy.ts",
    "content": "import { faker } from \"@faker-js/faker\";\n\ndescribe(\"smoke tests\", () => {\n  afterEach(() => {\n    cy.cleanupUser();\n  });\n\n  it(\"should allow you to register and login\", () => {\n    const loginForm = {\n      email: `${faker.internet.userName()}@example.com`,\n      password: faker.internet.password(),\n    };\n\n    cy.then(() => ({ email: loginForm.email })).as(\"user\");\n\n    cy.visitAndCheck(\"/\");\n\n    cy.findByRole(\"link\", { name: /sign up/i }).click();\n\n    cy.findByRole(\"textbox\", { name: /email/i }).type(loginForm.email);\n    cy.findByLabelText(/password/i).type(loginForm.password);\n    cy.findByRole(\"button\", { name: /create account/i }).click();\n\n    cy.findByRole(\"link\", { name: /notes/i }).click();\n    cy.findByRole(\"button\", { name: /logout/i }).click();\n    cy.findByRole(\"link\", { name: /log in/i });\n  });\n\n  it(\"should allow you to make a note\", () => {\n    const testNote = {\n      title: faker.lorem.words(1),\n      body: faker.lorem.sentences(1),\n    };\n    cy.login();\n\n    cy.visitAndCheck(\"/\");\n\n    cy.findByRole(\"link\", { name: /notes/i }).click();\n    cy.findByText(\"No notes yet\");\n\n    cy.findByRole(\"link\", { name: /\\+ new note/i }).click();\n\n    cy.findByRole(\"textbox\", { name: /title/i }).type(testNote.title);\n    cy.findByRole(\"textbox\", { name: /body/i }).type(testNote.body);\n    cy.findByRole(\"button\", { name: /save/i }).click();\n\n    cy.findByRole(\"button\", { name: /delete/i }).click();\n\n    cy.findByText(\"No notes yet\");\n  });\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress/fixtures/example.json",
    "content": "{\n  \"name\": \"Using fixtures to represent data\",\n  \"email\": \"hello@cypress.io\",\n  \"body\": \"Fixtures are a great way to mock data for responses to routes\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress/support/commands.ts",
    "content": "import { faker } from \"@faker-js/faker\";\n\ndeclare global {\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  namespace Cypress {\n    interface Chainable {\n      /**\n       * Logs in with a random user. Yields the user and adds an alias to the user\n       *\n       * @returns {typeof login}\n       * @memberof Chainable\n       * @example\n       *    cy.login()\n       * @example\n       *    cy.login({ email: 'whatever@example.com' })\n       */\n      login: typeof login;\n\n      /**\n       * Deletes the current @user\n       *\n       * @returns {typeof cleanupUser}\n       * @memberof Chainable\n       * @example\n       *    cy.cleanupUser()\n       * @example\n       *    cy.cleanupUser({ email: 'whatever@example.com' })\n       */\n      cleanupUser: typeof cleanupUser;\n\n      /**\n       * Extends the standard visit command to wait for the page to load\n       *\n       * @returns {typeof visitAndCheck}\n       * @memberof Chainable\n       * @example\n       *    cy.visitAndCheck('/')\n       *  @example\n       *    cy.visitAndCheck('/', 500)\n       */\n      visitAndCheck: typeof visitAndCheck;\n    }\n  }\n}\n\nfunction login({\n  email = faker.internet.email({ provider: \"example.com\" }),\n}: {\n  email?: string;\n} = {}) {\n  cy.then(() => ({ email })).as(\"user\");\n  cy.exec(\n    `npx ts-node -r tsconfig-paths/register ./cypress/support/create-user.ts \"${email}\"`,\n  ).then(({ stdout }) => {\n    const cookieValue = stdout\n      .replace(/.*<cookie>(?<cookieValue>.*)<\\/cookie>.*/s, \"$<cookieValue>\")\n      .trim();\n    cy.setCookie(\"__session\", cookieValue);\n  });\n  return cy.get(\"@user\");\n}\n\nfunction cleanupUser({ email }: { email?: string } = {}) {\n  if (email) {\n    deleteUserByEmail(email);\n  } else {\n    cy.get(\"@user\").then((user) => {\n      const email = (user as { email?: string }).email;\n      if (email) {\n        deleteUserByEmail(email);\n      }\n    });\n  }\n  cy.clearCookie(\"__session\");\n}\n\nfunction deleteUserByEmail(email: string) {\n  cy.exec(\n    `npx ts-node -r tsconfig-paths/register ./cypress/support/delete-user.ts \"${email}\"`,\n  );\n  cy.clearCookie(\"__session\");\n}\n\n// We're waiting a second because of this issue happen randomly\n// https://github.com/cypress-io/cypress/issues/7306\n// Also added custom types to avoid getting detached\n// https://github.com/cypress-io/cypress/issues/7306#issuecomment-1152752612\n// ===========================================================\nfunction visitAndCheck(url: string, waitTime = 1000) {\n  cy.visit(url);\n  cy.location(\"pathname\").should(\"contain\", url).wait(waitTime);\n}\n\nexport const registerCommands = () => {\n  Cypress.Commands.add(\"login\", login);\n  Cypress.Commands.add(\"cleanupUser\", cleanupUser);\n  Cypress.Commands.add(\"visitAndCheck\", visitAndCheck);\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress/support/create-user.ts",
    "content": "// Use this to create a new user and login with that user\n// Simply call this with:\n// npx ts-node -r tsconfig-paths/register ./cypress/support/create-user.ts username@example.com,\n// and it will log out the cookie value you can use to interact with the server\n// as that new user.\n\nimport { installGlobals } from \"@remix-run/node\";\nimport { parse } from \"cookie\";\n\nimport { createUser } from \"~/models/user.server\";\nimport { createUserSession } from \"~/session.server\";\n\ninstallGlobals();\n\nasync function createAndLogin(email: string) {\n  if (!email) {\n    throw new Error(\"email required for login\");\n  }\n  if (!email.endsWith(\"@example.com\")) {\n    throw new Error(\"All test emails must end in @example.com\");\n  }\n\n  const user = await createUser(email, \"myreallystrongpassword\");\n\n  const response = await createUserSession({\n    request: new Request(\"test://test\"),\n    userId: user.id,\n    remember: false,\n    redirectTo: \"/\",\n  });\n\n  const cookieValue = response.headers.get(\"Set-Cookie\");\n  if (!cookieValue) {\n    throw new Error(\"Cookie missing from createUserSession response\");\n  }\n  const parsedCookie = parse(cookieValue);\n  // we log it like this so our cypress command can parse it out and set it as\n  // the cookie value.\n  console.log(\n    `\n<cookie>\n  ${parsedCookie.__session}\n</cookie>\n  `.trim(),\n  );\n}\n\ncreateAndLogin(process.argv[2]);\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress/support/delete-user.ts",
    "content": "// Use this to delete a user by their email\n// Simply call this with:\n// npx ts-node -r tsconfig-paths/register ./cypress/support/delete-user.ts username@example.com,\n// and that user will get deleted\n\nimport { PrismaClientKnownRequestError } from \"@prisma/client/runtime/library\";\nimport { installGlobals } from \"@remix-run/node\";\n\nimport { prisma } from \"~/db.server\";\n\ninstallGlobals();\n\nasync function deleteUser(email: string) {\n  if (!email) {\n    throw new Error(\"email required for login\");\n  }\n  if (!email.endsWith(\"@example.com\")) {\n    throw new Error(\"All test emails must end in @example.com\");\n  }\n\n  try {\n    await prisma.user.delete({ where: { email } });\n  } catch (error) {\n    if (\n      error instanceof PrismaClientKnownRequestError &&\n      error.code === \"P2025\"\n    ) {\n      console.log(\"User not found, so no need to delete\");\n    } else {\n      throw error;\n    }\n  } finally {\n    await prisma.$disconnect();\n  }\n}\n\ndeleteUser(process.argv[2]);\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress/support/e2e.ts",
    "content": "import \"@testing-library/cypress/add-commands\";\nimport { registerCommands } from \"./commands\";\n\nregisterCommands();\n\nCypress.on(\"uncaught:exception\", (err) => {\n  // Cypress and React Hydrating the document don't get along\n  // for some unknown reason. Hopefully we figure out why eventually\n  // so we can remove this.\n  if (\n    /hydrat/i.test(err.message) ||\n    /Minified React error #418/.test(err.message) ||\n    /Minified React error #423/.test(err.message)\n  ) {\n    return false;\n  }\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress/tsconfig.json",
    "content": "{\n  \"exclude\": [\n    \"../node_modules/@types/jest\",\n    \"../node_modules/@testing-library/jest-dom\"\n  ],\n  \"include\": [\n    \"e2e/**/*\",\n    \"support/**/*\",\n    \"../node_modules/cypress\",\n    \"../node_modules/@testing-library/cypress\"\n  ],\n  \"compilerOptions\": {\n    \"baseUrl\": \"./\",\n    \"noEmit\": true,\n    \"types\": [\"node\", \"cypress\", \"@testing-library/cypress\"],\n    \"esModuleInterop\": true,\n    \"jsx\": \"react-jsx\",\n    \"moduleResolution\": \"Bundler\",\n    \"target\": \"ES2020\",\n    \"strict\": true,\n    \"skipLibCheck\": true,\n    \"resolveJsonModule\": true,\n\n    \"paths\": {\n      \"~/*\": [\"../app/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/cypress.config.ts",
    "content": "import { defineConfig } from \"cypress\";\n\nexport default defineConfig({\n  e2e: {\n    setupNodeEvents: (on, config) => {\n      const isDev = config.watchForFileChanges;\n      const port = process.env.PORT ?? (isDev ? \"3000\" : \"8811\");\n      const configOverrides: Partial<Cypress.PluginConfigOptions> = {\n        baseUrl: `http://localhost:${port}`,\n        screenshotOnRunFailure: !process.env.CI,\n      };\n\n      // To use this:\n      // cy.task('log', whateverYouWantInTheTerminal)\n      on(\"task\", {\n        log: (message) => {\n          console.log(message);\n\n          return null;\n        },\n      });\n\n      return { ...config, ...configOverrides };\n    },\n  },\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/fly.toml",
    "content": "app = \"indie-stack-template\"\n\nkill_signal = \"SIGINT\"\nkill_timeout = 5\nprocesses = []\nswap_size_mb = 512\n\n[experimental]\n  allowed_public_ports = []\n  auto_rollback = true\n  cmd = \"start.sh\"\n  entrypoint = \"sh\"\n\n[mounts]\n  source = \"data\"\n  destination = \"/data\"\n\n[[services]]\n  internal_port = 8080\n  processes = [\"app\"]\n  protocol = \"tcp\"\n  script_checks = []\n\n  [services.concurrency]\n    hard_limit = 25\n    soft_limit = 20\n    type = \"connections\"\n\n  [[services.ports]]\n    handlers = [\"http\"]\n    port = 80\n    force_https = true\n\n  [[services.ports]]\n    handlers = [\"tls\", \"http\"]\n    port = 443\n\n  [[services.tcp_checks]]\n    grace_period = \"1s\"\n    interval = \"15s\"\n    restart_limit = 0\n    timeout = \"2s\"\n\n  [[services.http_checks]]\n    interval = \"10s\"\n    grace_period = \"5s\"\n    method = \"get\"\n    path = \"/healthcheck\"\n    protocol = \"http\"\n    timeout = \"2s\"\n    tls_skip_verify = false\n    [services.http_checks.headers]\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/mocks/README.md",
    "content": "# Mocks\n\nUse this to mock any third party HTTP resources that you don't have running locally and want to have mocked for local development as well as tests.\n\nLearn more about how to use this at [mswjs.io](https://mswjs.io/)\n\nFor an extensive example, see the [source code for kentcdodds.com](https://github.com/kentcdodds/kentcdodds.com/blob/main/mocks/index.ts)\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/mocks/index.js",
    "content": "const { http, passthrough } = require(\"msw\");\nconst { setupServer } = require(\"msw/node\");\n\n// put one-off handlers that don't really need an entire file to themselves here\nconst miscHandlers = [\n  http.post(`${process.env.REMIX_DEV_HTTP_ORIGIN}/ping`, () => passthrough()),\n];\n\nconst server = setupServer(...miscHandlers);\n\nserver.listen({ onUnhandledRequest: \"bypass\" });\nconsole.info(\"🔶 Mock server running\");\n\nprocess.once(\"SIGINT\", () => server.close());\nprocess.once(\"SIGTERM\", () => server.close());\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/package.json",
    "content": "{\n  \"name\": \"remix-indie-stack\",\n  \"private\": true,\n  \"sideEffects\": false,\n  \"scripts\": {\n    \"build\": \"remix build\",\n    \"dev\": \"remix dev -c \\\"npm run dev:serve\\\"\",\n    \"dev:serve\": \"binode --require mocks -- @remix-run/serve:remix-serve ./build/index.js\",\n    \"format\": \"prettier --write \",\n    \"format:repo\": \"npm run format && npm run lint -- --fix\",\n    \"lint\": \"eslint --cache --cache-location ./node_modules/.cache/eslint \",\n    \"setup\": \"prisma generate && prisma migrate deploy && prisma db seed\",\n    \"start\": \"remix-serve ./build/index.js\",\n    \"start:mocks\": \"binode --require mocks -- @remix-run/serve:remix-serve ./build/index.js\",\n    \"test\": \"vitest\",\n    \"test:e2e:dev\": \"start-server-and-test dev http://localhost:3000 \\\"npx cypress open\\\"\",\n    \"pretest:e2e:run\": \"npm run build\",\n    \"test:e2e:run\": \"cross-env PORT=8811 start-server-and-test start:mocks http://localhost:8811 \\\"npx cypress run\\\"\",\n    \"typecheck\": \"tsc && tsc -p cypress\",\n    \"validate\": \"npm-run-all --parallel \\\"test -- --run\\\" lint typecheck test:e2e:run\"\n  },\n  \"eslintIgnore\": [\n    \"/node_modules\",\n    \"/build\",\n    \"/public/build\"\n  ],\n  \"dependencies\": {\n    \"@prisma/client\": \"^5.19.1\",\n    \"@remix-run/css-bundle\": \"^2.12.1\",\n    \"@remix-run/node\": \"^2.12.1\",\n    \"@remix-run/react\": \"^2.12.1\",\n    \"@remix-run/serve\": \"^2.12.1\",\n    \"bcryptjs\": \"^2.4.3\",\n    \"isbot\": \"^5.1.17\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"tiny-invariant\": \"^1.3.3\"\n  },\n  \"devDependencies\": {\n    \"@faker-js/faker\": \"^9.0.0\",\n    \"@remix-run/dev\": \"^2.12.1\",\n    \"@testing-library/cypress\": \"^10.0.2\",\n    \"@testing-library/jest-dom\": \"^6.5.0\",\n    \"@types/bcryptjs\": \"^2.4.6\",\n    \"@types/cookie\": \"^0.6.0\",\n    \"@types/eslint\": \"^8.56.12\",\n    \"@types/node\": \"^20.16.5\",\n    \"@types/react\": \"^18.3.5\",\n    \"@types/react-dom\": \"^18.3.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^7.18.0\",\n    \"@typescript-eslint/parser\": \"^7.18.0\",\n    \"@vitejs/plugin-react\": \"^4.3.1\",\n    \"@vitest/coverage-v8\": \"^2.0.5\",\n    \"autoprefixer\": \"^10.4.20\",\n    \"binode\": \"^1.0.5\",\n    \"cookie\": \"^0.6.0\",\n    \"cross-env\": \"^7.0.3\",\n    \"cypress\": \"^13.14.2\",\n    \"eslint\": \"^8.57.0\",\n    \"eslint-config-prettier\": \"^9.1.0\",\n    \"eslint-import-resolver-typescript\": \"^3.6.3\",\n    \"eslint-plugin-cypress\": \"^3.5.0\",\n    \"eslint-plugin-import\": \"^2.30.0\",\n    \"eslint-plugin-jest\": \"^28.8.3\",\n    \"eslint-plugin-jest-dom\": \"^5.4.0\",\n    \"eslint-plugin-jsx-a11y\": \"^6.10.0\",\n    \"eslint-plugin-markdown\": \"^5.1.0\",\n    \"eslint-plugin-react\": \"^7.35.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.2\",\n    \"eslint-plugin-testing-library\": \"^6.3.0\",\n    \"happy-dom\": \"^15.7.3\",\n    \"msw\": \"^2.4.4\",\n    \"npm-run-all2\": \"^6.2.2\",\n    \"postcss\": \"^8.4.45\",\n    \"prettier\": \"3.3.3\",\n    \"prettier-plugin-tailwindcss\": \"^0.6.6\",\n    \"prisma\": \"^5.19.1\",\n    \"start-server-and-test\": \"^2.0.7\",\n    \"tailwindcss\": \"^3.4.10\",\n    \"ts-node\": \"^10.9.2\",\n    \"tsconfig-paths\": \"^4.2.0\",\n    \"typescript\": \"^5.6.2\",\n    \"vite\": \"^5.4.3\",\n    \"vite-tsconfig-paths\": \"^4.3.2\",\n    \"vitest\": \"^2.0.5\"\n  },\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  },\n  \"prisma\": {\n    \"seed\": \"ts-node -r tsconfig-paths/register prisma/seed.ts\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/prettier.config.js",
    "content": "/** @type {import(\"prettier\").Config} */\nmodule.exports = {\n  plugins: [\"prettier-plugin-tailwindcss\"],\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/prisma/migrations/20220713162558_init/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE \"User\" (\n    \"id\" TEXT NOT NULL PRIMARY KEY,\n    \"email\" TEXT NOT NULL,\n    \"createdAt\" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    \"updatedAt\" DATETIME NOT NULL\n);\n\n-- CreateTable\nCREATE TABLE \"Password\" (\n    \"hash\" TEXT NOT NULL,\n    \"userId\" TEXT NOT NULL,\n    CONSTRAINT \"Password_userId_fkey\" FOREIGN KEY (\"userId\") REFERENCES \"User\" (\"id\") ON DELETE CASCADE ON UPDATE CASCADE\n);\n\n-- CreateTable\nCREATE TABLE \"Note\" (\n    \"id\" TEXT NOT NULL PRIMARY KEY,\n    \"title\" TEXT NOT NULL,\n    \"body\" TEXT NOT NULL,\n    \"createdAt\" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    \"updatedAt\" DATETIME NOT NULL,\n    \"userId\" TEXT NOT NULL,\n    CONSTRAINT \"Note_userId_fkey\" FOREIGN KEY (\"userId\") REFERENCES \"User\" (\"id\") ON DELETE CASCADE ON UPDATE CASCADE\n);\n\n-- CreateIndex\nCREATE UNIQUE INDEX \"User_email_key\" ON \"User\"(\"email\");\n\n-- CreateIndex\nCREATE UNIQUE INDEX \"Password_userId_key\" ON \"Password\"(\"userId\");\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/prisma/migrations/migration_lock.toml",
    "content": "# Please do not edit this file manually\n# It should be added in your version-control system (i.e. Git)\nprovider = \"sqlite\""
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/prisma/schema.prisma",
    "content": "datasource db {\n  provider = \"sqlite\"\n  url      = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n  provider = \"prisma-client-js\"\n}\n\nmodel User {\n  id    String @id @default(cuid())\n  email String @unique\n\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n\n  password Password?\n  notes    Note[]\n}\n\nmodel Password {\n  hash String\n\n  user   User   @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade)\n  userId String @unique\n}\n\nmodel Note {\n  id    String @id @default(cuid())\n  title String\n  body  String\n\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n\n  user   User   @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade)\n  userId String\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/prisma/seed.ts",
    "content": "import { PrismaClient } from \"@prisma/client\";\nimport bcrypt from \"bcryptjs\";\n\nconst prisma = new PrismaClient();\n\nasync function seed() {\n  const email = \"rachel@remix.run\";\n\n  // cleanup the existing database\n  await prisma.user.delete({ where: { email } }).catch(() => {\n    // no worries if it doesn't exist yet\n  });\n\n  const hashedPassword = await bcrypt.hash(\"racheliscool\", 10);\n\n  const user = await prisma.user.create({\n    data: {\n      email,\n      password: {\n        create: {\n          hash: hashedPassword,\n        },\n      },\n    },\n  });\n\n  await prisma.note.create({\n    data: {\n      title: \"My first note\",\n      body: \"Hello, world!\",\n      userId: user.id,\n    },\n  });\n\n  await prisma.note.create({\n    data: {\n      title: \"My second note\",\n      body: \"Hello, world!\",\n      userId: user.id,\n    },\n  });\n\n  console.log(`Database has been seeded. 🌱`);\n}\n\nseed()\n  .catch((e) => {\n    console.error(e);\n    process.exit(1);\n  })\n  .finally(async () => {\n    await prisma.$disconnect();\n  });\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/remix.config.js",
    "content": "/** @type {import('@remix-run/dev').AppConfig} */\nmodule.exports = {\n  cacheDirectory: \"./node_modules/.cache/remix\",\n  ignoredRouteFiles: [\"**/.*\", \"**/*.test.{ts,tsx}\"],\n  serverModuleFormat: \"cjs\",\n};\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/remix.env.d.ts",
    "content": "/// <reference types=\"@remix-run/dev\" />\n/// <reference types=\"@remix-run/node\" />\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/remix.init/gitignore",
    "content": "node_modules\n\n/build\n/public/build\n.env\n\n/cypress/screenshots\n/cypress/videos\n/prisma/data.db\n/prisma/data.db-journal\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/remix.init/index.js",
    "content": "const { execSync } = require(\"node:child_process\");\nconst crypto = require(\"node:crypto\");\nconst fs = require(\"node:fs/promises\");\nconst path = require(\"node:path\");\n\nconst toml = require(\"@iarna/toml\");\nconst PackageJson = require(\"@npmcli/package-json\");\nconst semver = require(\"semver\");\n\nconst cleanupCypressFiles = ({ fileEntries, packageManager }) =>\n  fileEntries.flatMap(([filePath, content]) => {\n    const newContent = content.replace(\n      new RegExp(\"npx ts-node\", \"g\"),\n      packageManager.name === \"bun\" ? \"bun\" : `${packageManager.exec} ts-node`,\n    );\n\n    return [fs.writeFile(filePath, newContent)];\n  });\n\nconst escapeRegExp = (string) =>\n  // $& means the whole matched string\n  string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\nconst getPackageManagerCommand = (packageManager) =>\n  // Inspired by https://github.com/nrwl/nx/blob/bd9b33eaef0393d01f747ea9a2ac5d2ca1fb87c6/packages/nx/src/utils/package-manager.ts#L38-L103\n  ({\n    bun: () => ({\n      exec: \"bunx\",\n      lockfile: \"bun.lockb\",\n      name: \"bun\",\n      run: (script, args) => `bun run ${script} ${args || \"\"}`,\n    }),\n    npm: () => ({\n      exec: \"npx\",\n      lockfile: \"package-lock.json\",\n      name: \"npm\",\n      run: (script, args) => `npm run ${script} ${args ? `-- ${args}` : \"\"}`,\n    }),\n    pnpm: () => {\n      const pnpmVersion = getPackageManagerVersion(\"pnpm\");\n      const includeDoubleDashBeforeArgs = semver.lt(pnpmVersion, \"7.0.0\");\n      const useExec = semver.gte(pnpmVersion, \"6.13.0\");\n\n      return {\n        exec: useExec ? \"pnpm exec\" : \"pnpx\",\n        lockfile: \"pnpm-lock.yaml\",\n        name: \"pnpm\",\n        run: (script, args) =>\n          includeDoubleDashBeforeArgs\n            ? `pnpm run ${script} ${args ? `-- ${args}` : \"\"}`\n            : `pnpm run ${script} ${args || \"\"}`,\n      };\n    },\n    yarn: () => ({\n      exec: \"yarn\",\n      lockfile: \"yarn.lock\",\n      name: \"yarn\",\n      run: (script, args) => `yarn ${script} ${args || \"\"}`,\n    }),\n  })[packageManager]();\n\nconst getPackageManagerVersion = (packageManager) =>\n  // Copied over from https://github.com/nrwl/nx/blob/bd9b33eaef0393d01f747ea9a2ac5d2ca1fb87c6/packages/nx/src/utils/package-manager.ts#L105-L114\n  execSync(`${packageManager} --version`).toString(\"utf-8\").trim();\n\nconst getRandomString = (length) => crypto.randomBytes(length).toString(\"hex\");\n\nconst removeUnusedDependencies = (dependencies, unusedDependencies) =>\n  Object.fromEntries(\n    Object.entries(dependencies).filter(\n      ([key]) => !unusedDependencies.includes(key),\n    ),\n  );\n\nconst updatePackageJson = ({ APP_NAME, packageJson, packageManager }) => {\n  const {\n    devDependencies,\n    prisma: { seed: prismaSeed, ...prisma },\n    scripts: {\n      // eslint-disable-next-line no-unused-vars\n      \"format:repo\": _repoFormatScript,\n      ...scripts\n    },\n  } = packageJson.content;\n\n  packageJson.update({\n    name: APP_NAME,\n    devDependencies:\n      packageManager.name === \"bun\"\n        ? removeUnusedDependencies(devDependencies, [\"ts-node\"])\n        : devDependencies,\n    prisma: {\n      ...prisma,\n      seed:\n        packageManager.name === \"bun\"\n          ? prismaSeed.replace(\"ts-node\", \"bun\")\n          : prismaSeed,\n    },\n    scripts,\n  });\n};\n\nconst main = async ({ packageManager, rootDirectory }) => {\n  const pm = getPackageManagerCommand(packageManager);\n\n  const README_PATH = path.join(rootDirectory, \"README.md\");\n  const FLY_TOML_PATH = path.join(rootDirectory, \"fly.toml\");\n  const EXAMPLE_ENV_PATH = path.join(rootDirectory, \".env.example\");\n  const ENV_PATH = path.join(rootDirectory, \".env\");\n  const DOCKERFILE_PATH = path.join(rootDirectory, \"Dockerfile\");\n  const CYPRESS_SUPPORT_PATH = path.join(rootDirectory, \"cypress\", \"support\");\n  const CYPRESS_COMMANDS_PATH = path.join(CYPRESS_SUPPORT_PATH, \"commands.ts\");\n  const CREATE_USER_COMMAND_PATH = path.join(\n    CYPRESS_SUPPORT_PATH,\n    \"create-user.ts\",\n  );\n  const DELETE_USER_COMMAND_PATH = path.join(\n    CYPRESS_SUPPORT_PATH,\n    \"delete-user.ts\",\n  );\n\n  const REPLACER = \"indie-stack-template\";\n\n  const DIR_NAME = path.basename(rootDirectory);\n  const SUFFIX = getRandomString(2);\n\n  const APP_NAME = (DIR_NAME + \"-\" + SUFFIX)\n    // get rid of anything that's not allowed in an app name\n    .replace(/[^a-zA-Z0-9-_]/g, \"-\");\n\n  const [\n    prodContent,\n    readme,\n    env,\n    dockerfile,\n    cypressCommands,\n    createUserCommand,\n    deleteUserCommand,\n    packageJson,\n  ] = await Promise.all([\n    fs.readFile(FLY_TOML_PATH, \"utf-8\"),\n    fs.readFile(README_PATH, \"utf-8\"),\n    fs.readFile(EXAMPLE_ENV_PATH, \"utf-8\"),\n    fs.readFile(DOCKERFILE_PATH, \"utf-8\"),\n    fs.readFile(CYPRESS_COMMANDS_PATH, \"utf-8\"),\n    fs.readFile(CREATE_USER_COMMAND_PATH, \"utf-8\"),\n    fs.readFile(DELETE_USER_COMMAND_PATH, \"utf-8\"),\n    PackageJson.load(rootDirectory),\n  ]);\n\n  const newEnv = env.replace(\n    /^SESSION_SECRET=.*$/m,\n    `SESSION_SECRET=\"${getRandomString(16)}\"`,\n  );\n\n  const prodToml = toml.parse(prodContent);\n  prodToml.app = prodToml.app.replace(REPLACER, APP_NAME);\n\n  const initInstructions = `\n- First run this stack's \\`remix.init\\` script and commit the changes it makes to your project.\n\n  \\`\\`\\`sh\n  npx remix init\n  git init # if you haven't already\n  git add .\n  git commit -m \"Initialize project\"\n  \\`\\`\\`\n`;\n\n  const newReadme = readme\n    .replace(new RegExp(escapeRegExp(REPLACER), \"g\"), APP_NAME)\n    .replace(initInstructions, \"\");\n\n  const newDockerfile = pm.lockfile\n    ? dockerfile.replace(\n        new RegExp(escapeRegExp(\"ADD package.json\"), \"g\"),\n        `ADD package.json ${pm.lockfile}`,\n      )\n    : dockerfile;\n\n  updatePackageJson({ APP_NAME, packageJson, packageManager: pm });\n\n  await Promise.all([\n    fs.writeFile(FLY_TOML_PATH, toml.stringify(prodToml)),\n    fs.writeFile(README_PATH, newReadme),\n    fs.writeFile(ENV_PATH, newEnv),\n    fs.writeFile(DOCKERFILE_PATH, newDockerfile),\n    ...cleanupCypressFiles({\n      fileEntries: [\n        [CYPRESS_COMMANDS_PATH, cypressCommands],\n        [CREATE_USER_COMMAND_PATH, createUserCommand],\n        [DELETE_USER_COMMAND_PATH, deleteUserCommand],\n      ],\n      packageManager: pm,\n    }),\n    packageJson.save(),\n    fs.copyFile(\n      path.join(rootDirectory, \"remix.init\", \"gitignore\"),\n      path.join(rootDirectory, \".gitignore\"),\n    ),\n    fs.rm(path.join(rootDirectory, \".github\", \"ISSUE_TEMPLATE\"), {\n      recursive: true,\n    }),\n    fs.rm(path.join(rootDirectory, \".github\", \"workflows\", \"format-repo.yml\")),\n    fs.rm(path.join(rootDirectory, \".github\", \"workflows\", \"lint-repo.yml\")),\n    fs.rm(path.join(rootDirectory, \".github\", \"workflows\", \"no-response.yml\")),\n    fs.rm(path.join(rootDirectory, \".github\", \"dependabot.yml\")),\n    fs.rm(path.join(rootDirectory, \".github\", \"PULL_REQUEST_TEMPLATE.md\")),\n    fs.rm(path.join(rootDirectory, \"LICENSE.md\")),\n  ]);\n\n  execSync(pm.run(\"setup\"), { cwd: rootDirectory, stdio: \"inherit\" });\n\n  execSync(pm.run(\"format\", \"--log-level warn\"), {\n    cwd: rootDirectory,\n    stdio: \"inherit\",\n  });\n\n  console.log(\n    `Setup is complete. You're now ready to rock and roll 🤘\n\nStart development with \\`${pm.run(\"dev\")}\\`\n    `.trim(),\n  );\n};\n\nmodule.exports = main;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/remix.init/package.json",
    "content": "{\n  \"name\": \"remix.init\",\n  \"private\": true,\n  \"main\": \"index.js\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"@iarna/toml\": \"^2.2.5\",\n    \"@npmcli/package-json\": \"^5.1.0\",\n    \"semver\": \"^7.6.0\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/start.sh",
    "content": "#!/bin/sh -ex\n\n# This file is how Fly starts the server (configured in fly.toml). Before starting\n# the server though, we need to run any prisma migrations that haven't yet been\n# run, which is why this file exists in the first place.\n# Learn more: https://community.fly.io/t/sqlite-not-getting-setup-properly/4386\n\nnpx prisma migrate deploy\nnpm run start\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n  content: [\"./app/**/*.{js,jsx,ts,tsx}\"],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n} satisfies Config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/test/setup-test-env.ts",
    "content": "import { installGlobals } from \"@remix-run/node\";\nimport \"@testing-library/jest-dom/vitest\";\n\ninstallGlobals();\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/tsconfig.json",
    "content": "{\n  \"exclude\": [\n    \"./cypress\", \"./cypress.config.ts\"],\n  \"include\": [\n    \"remix.env.d.ts\", \"**/*.ts\", \"**/*.tsx\"],\n  \"compilerOptions\": {\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ES2020\"],\n    \"types\": [\"vitest/globals\"],\n    \"isolatedModules\": true,\n    \"esModuleInterop\": true,\n    \"jsx\": \"react-jsx\",\n    \"module\": \"CommonJS\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"target\": \"ES2020\",\n    \"strict\": true,\n    \"allowJs\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"baseUrl\": \"./\",\n    \"paths\": {\n      \"~/*\": [\"./app/*\"]\n    },\n    \"skipLibCheck\": true,\n\n    // Remix takes care of building everything in `remix build`.\n    \"noEmit\": true\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/remix-indie-stack/vitest.config.ts",
    "content": "/// <reference types=\"vitest\" />\n/// <reference types=\"vite/client\" />\n\nimport react from \"@vitejs/plugin-react\";\nimport tsconfigPaths from \"vite-tsconfig-paths\";\nimport { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n  plugins: [react(), tsconfigPaths()],\n  test: {\n    globals: true,\n    environment: \"happy-dom\",\n    setupFiles: [\"./test/setup-test-env.ts\"],\n  },\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/next.config.js",
    "content": "/**\n * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful\n * for Docker builds.\n */\nawait import(\"./src/env.js\");\n\n/** @type {import(\"next\").NextConfig} */\nconst config = {};\n\nexport default config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/package.json",
    "content": "{\n  \"name\": \"test-cli-t3-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"next build\",\n    \"dev\": \"next dev\",\n    \"lint\": \"next lint\",\n    \"start\": \"next start\"\n  },\n  \"dependencies\": {\n    \"@t3-oss/env-nextjs\": \"^0.10.1\",\n    \"geist\": \"^1.3.0\",\n    \"next\": \"14.2.35\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"zod\": \"^3.23.3\"\n  },\n  \"devDependencies\": {\n    \"@types/eslint\": \"^8.56.10\",\n    \"@types/node\": \"^20.14.10\",\n    \"@types/react\": \"^18.3.3\",\n    \"@types/react-dom\": \"^18.3.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^7.1.1\",\n    \"@typescript-eslint/parser\": \"^7.1.1\",\n    \"eslint\": \"^8.57.0\",\n    \"eslint-config-next\": \"^14.2.4\",\n    \"postcss\": \"^8.4.24\",\n    \"prettier\": \"^3.3.2\",\n    \"prettier-plugin-tailwindcss\": \"^0.6.5\",\n    \"tailwindcss\": \"^3.4.3\",\n    \"typescript\": \"^5.5.3\"\n  },\n  \"ct3aMetadata\": {\n    \"initVersion\": \"7.36.2\"\n  },\n  \"packageManager\": \"npm@9.8.0\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/postcss.config.cjs",
    "content": "const config = {\n  plugins: {\n    tailwindcss: {},\n  },\n};\n\nmodule.exports = config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/prettier.config.js",
    "content": "/** @type {import('prettier').Config & import('prettier-plugin-tailwindcss').PluginOptions} */\nconst config = {\n  plugins: [\"prettier-plugin-tailwindcss\"],\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/src/app/layout.tsx",
    "content": "import \"~/styles/globals.css\";\n\nimport { GeistSans } from \"geist/font/sans\";\nimport { type Metadata } from \"next\";\n\nexport const metadata: Metadata = {\n  title: \"Create T3 App\",\n  description: \"Generated by create-t3-app\",\n  icons: [{ rel: \"icon\", url: \"/favicon.ico\" }],\n};\n\nexport default function RootLayout({\n  children,\n}: Readonly<{ children: React.ReactNode }>) {\n  return (\n    <html lang=\"en\" className={`${GeistSans.variable}`}>\n      <body>{children}</body>\n    </html>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/src/app/page.tsx",
    "content": "import Link from \"next/link\";\n\nexport default function HomePage() {\n  return (\n    <main className=\"flex min-h-screen flex-col items-center justify-center bg-gradient-to-b from-[#2e026d] to-[#15162c] text-white\">\n      <div className=\"container flex flex-col items-center justify-center gap-12 px-4 py-16\">\n        <h1 className=\"text-5xl font-extrabold tracking-tight text-white sm:text-[5rem]\">\n          Create <span className=\"text-[hsl(280,100%,70%)]\">T3</span> App\n        </h1>\n        <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 md:gap-8\">\n          <Link\n            className=\"flex max-w-xs flex-col gap-4 rounded-xl bg-white/10 p-4 text-white hover:bg-white/20\"\n            href=\"https://create.t3.gg/en/usage/first-steps\"\n            target=\"_blank\"\n          >\n            <h3 className=\"text-2xl font-bold\">First Steps →</h3>\n            <div className=\"text-lg\">\n              Just the basics - Everything you need to know to set up your\n              database and authentication.\n            </div>\n          </Link>\n          <Link\n            className=\"flex max-w-xs flex-col gap-4 rounded-xl bg-white/10 p-4 text-white hover:bg-white/20\"\n            href=\"https://create.t3.gg/en/introduction\"\n            target=\"_blank\"\n          >\n            <h3 className=\"text-2xl font-bold\">Documentation →</h3>\n            <div className=\"text-lg\">\n              Learn more about Create T3 App, the libraries it uses, and how to\n              deploy it.\n            </div>\n          </Link>\n        </div>\n      </div>\n    </main>\n  );\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/src/env.js",
    "content": "import { createEnv } from \"@t3-oss/env-nextjs\";\nimport { z } from \"zod\";\n\nexport const env = createEnv({\n  /**\n   * Specify your server-side environment variables schema here. This way you can ensure the app\n   * isn't built with invalid env vars.\n   */\n  server: {\n    NODE_ENV: z.enum([\"development\", \"test\", \"production\"]),\n  },\n\n  /**\n   * Specify your client-side environment variables schema here. This way you can ensure the app\n   * isn't built with invalid env vars. To expose them to the client, prefix them with\n   * `NEXT_PUBLIC_`.\n   */\n  client: {\n    // NEXT_PUBLIC_CLIENTVAR: z.string(),\n  },\n\n  /**\n   * You can't destruct `process.env` as a regular object in the Next.js edge runtimes (e.g.\n   * middlewares) or client-side so we need to destruct manually.\n   */\n  runtimeEnv: {\n    NODE_ENV: process.env.NODE_ENV,\n    // NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR,\n  },\n  /**\n   * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially\n   * useful for Docker builds.\n   */\n  skipValidation: !!process.env.SKIP_ENV_VALIDATION,\n  /**\n   * Makes it so that empty strings are treated as undefined. `SOME_VAR: z.string()` and\n   * `SOME_VAR=''` will throw an error.\n   */\n  emptyStringAsUndefined: true,\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/src/styles/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/tailwind.config.ts",
    "content": "import { type Config } from \"tailwindcss\";\nimport { fontFamily } from \"tailwindcss/defaultTheme\";\n\nexport default {\n  content: [\"./src/**/*.tsx\"],\n  theme: {\n    extend: {\n      fontFamily: {\n        sans: [\"var(--font-geist-sans)\", ...fontFamily.sans],\n      },\n    },\n  },\n  plugins: [],\n} satisfies Config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-app/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    /* Base Options: */\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"target\": \"es2022\",\n    \"allowJs\": true,\n    \"resolveJsonModule\": true,\n    \"moduleDetection\": \"force\",\n    \"isolatedModules\": true,\n\n    /* Strictness */\n    \"strict\": true,\n    \"noUncheckedIndexedAccess\": true,\n    \"checkJs\": true,\n\n    /* Bundled projects */\n    \"lib\": [\"dom\", \"dom.iterable\", \"ES2022\"],\n    \"noEmit\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Bundler\",\n    \"jsx\": \"preserve\",\n    \"plugins\": [{ \"name\": \"next\" }],\n    \"incremental\": true,\n\n    /* Path Aliases */\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"~/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\n    \".eslintrc.cjs\",\n    \"next-env.d.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \"**/*.cjs\",\n    \"**/*.js\",\n    \".next/types/**/*.ts\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/.eslintrc.cjs",
    "content": "// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst path = require(\"path\");\n\n/** @type {import(\"eslint\").Linter.Config} */\nconst config = {\n  overrides: [\n    {\n      extends: [\n        \"plugin:@typescript-eslint/recommended-requiring-type-checking\",\n      ],\n      files: [\"*.ts\", \"*.tsx\"],\n      parserOptions: {\n        project: path.join(__dirname, \"tsconfig.json\"),\n      },\n    },\n  ],\n  parser: \"@typescript-eslint/parser\",\n  parserOptions: {\n    project: path.join(__dirname, \"tsconfig.json\"),\n  },\n  plugins: [\"@typescript-eslint\"],\n  extends: [\"next/core-web-vitals\", \"plugin:@typescript-eslint/recommended\"],\n  rules: {\n    \"@typescript-eslint/consistent-type-imports\": [\n      \"warn\",\n      {\n        prefer: \"type-imports\",\n        fixStyle: \"inline-type-imports\",\n      },\n    ],\n    \"@typescript-eslint/no-unused-vars\": [\"warn\", { argsIgnorePattern: \"^_\" }],\n  },\n};\n\nmodule.exports = config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/.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\n# database\n/prisma/db.sqlite\n/prisma/db.sqlite-journal\n\n# next.js\n/.next/\n/out/\nnext-env.d.ts\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables\n.env\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/next.config.mjs",
    "content": "/**\n * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful\n * for Docker builds.\n */\nawait import(\"./src/env.mjs\");\n\n/** @type {import(\"next\").NextConfig} */\nconst config = {\n  reactStrictMode: true,\n\n  /**\n   * If you have `experimental: { appDir: true }` set, then you must comment the below `i18n` config\n   * out.\n   *\n   * @see https://github.com/vercel/next.js/issues/41980\n   */\n  i18n: {\n    locales: [\"en\"],\n    defaultLocale: \"en\",\n  },\n};\nexport default config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/package.json",
    "content": "{\n  \"name\": \"test-cli-t3-pages\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"next build\",\n    \"dev\": \"next dev\",\n    \"lint\": \"next lint\",\n    \"start\": \"next start\"\n  },\n  \"dependencies\": {\n    \"@t3-oss/env-nextjs\": \"^0.3.1\",\n    \"next\": \"14.2.35\",\n    \"react\": \"18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"zod\": \"^3.21.4\"\n  },\n  \"devDependencies\": {\n    \"@types/eslint\": \"^8.37.0\",\n    \"@types/node\": \"^18.16.0\",\n    \"@types/prettier\": \"^2.7.2\",\n    \"@types/react\": \"^18.2.6\",\n    \"@types/react-dom\": \"^18.2.4\",\n    \"@typescript-eslint/eslint-plugin\": \"^5.59.6\",\n    \"@typescript-eslint/parser\": \"^5.59.6\",\n    \"autoprefixer\": \"^10.4.14\",\n    \"eslint\": \"^8.40.0\",\n    \"eslint-config-next\": \"^13.4.2\",\n    \"postcss\": \"^8.4.24\",\n    \"prettier\": \"^2.8.8\",\n    \"prettier-plugin-tailwindcss\": \"^0.2.8\",\n    \"tailwindcss\": \"3.3.7\",\n    \"typescript\": \"^5.0.4\"\n  },\n  \"ct3aMetadata\": {\n    \"initVersion\": \"7.13.1\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/src/env.mjs",
    "content": "import { createEnv } from \"@t3-oss/env-nextjs\";\nimport { z } from \"zod\";\n\nexport const env = createEnv({\n  /**\n   * Specify your server-side environment variables schema here. This way you can ensure the app\n   * isn't built with invalid env vars.\n   */\n  server: {\n    NODE_ENV: z.enum([\"development\", \"test\", \"production\"]),\n  },\n\n  /**\n   * Specify your client-side environment variables schema here. This way you can ensure the app\n   * isn't built with invalid env vars. To expose them to the client, prefix them with\n   * `NEXT_PUBLIC_`.\n   */\n  client: {\n    // NEXT_PUBLIC_CLIENTVAR: z.string().min(1),\n  },\n\n  /**\n   * You can't destruct `process.env` as a regular object in the Next.js edge runtimes (e.g.\n   * middlewares) or client-side so we need to destruct manually.\n   */\n  runtimeEnv: {\n    NODE_ENV: process.env.NODE_ENV,\n    // NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR,\n  },\n  /**\n   * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation.\n   * This is especially useful for Docker builds.\n   */\n  skipValidation: !!process.env.SKIP_ENV_VALIDATION,\n});\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/src/pages/_app.tsx",
    "content": "import { type AppType } from \"next/dist/shared/lib/utils\";\nimport \"~/styles/globals.css\";\n\nconst MyApp: AppType = ({ Component, pageProps }) => {\n  return <Component {...pageProps} />;\n};\n\nexport default MyApp;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/src/pages/index.tsx",
    "content": "import { type NextPage } from \"next\";\nimport Head from \"next/head\";\nimport Link from \"next/link\";\n\nconst Home: NextPage = () => {\n  return (\n    <>\n      <Head>\n        <title>Create T3 App</title>\n        <meta name=\"description\" content=\"Generated by create-t3-app\" />\n        <link rel=\"icon\" href=\"/favicon.ico\" />\n      </Head>\n      <main className=\"flex min-h-screen flex-col items-center justify-center bg-gradient-to-b from-[#2e026d] to-[#15162c]\">\n        <div className=\"container flex flex-col items-center justify-center gap-12 px-4 py-16 \">\n          <h1 className=\"text-5xl font-extrabold tracking-tight text-white sm:text-[5rem]\">\n            Create <span className=\"text-[hsl(280,100%,70%)]\">T3</span> App\n          </h1>\n          <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 md:gap-8\">\n            <Link\n              className=\"flex max-w-xs flex-col gap-4 rounded-xl bg-white/10 p-4 text-white hover:bg-white/20\"\n              href=\"https://create.t3.gg/en/usage/first-steps\"\n              target=\"_blank\"\n            >\n              <h3 className=\"text-2xl font-bold\">First Steps →</h3>\n              <div className=\"text-lg\">\n                Just the basics - Everything you need to know to set up your\n                database and authentication.\n              </div>\n            </Link>\n            <Link\n              className=\"flex max-w-xs flex-col gap-4 rounded-xl bg-white/10 p-4 text-white hover:bg-white/20\"\n              href=\"https://create.t3.gg/en/introduction\"\n              target=\"_blank\"\n            >\n              <h3 className=\"text-2xl font-bold\">Documentation →</h3>\n              <div className=\"text-lg\">\n                Learn more about Create T3 App, the libraries it uses, and how\n                to deploy it.\n              </div>\n            </Link>\n          </div>\n        </div>\n      </main>\n    </>\n  );\n};\n\nexport default Home;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/src/styles/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/tailwind.config.ts",
    "content": "import { type Config } from \"tailwindcss\";\n\nexport default {\n  content: [\"./src/**/*.{js,ts,jsx,tsx}\"],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n} satisfies Config;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/t3-pages/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"checkJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"noUncheckedIndexedAccess\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"~/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\n    \".eslintrc.cjs\",\n    \"next-env.d.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \"**/*.cjs\",\n    \"**/*.mjs\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/eslint.config.js",
    "content": "import js from '@eslint/js'\nimport globals from 'globals'\nimport reactHooks from 'eslint-plugin-react-hooks'\nimport reactRefresh from 'eslint-plugin-react-refresh'\nimport tseslint from 'typescript-eslint'\n\nexport default tseslint.config({\n  extends: [js.configs.recommended, ...tseslint.configs.recommended],\n  files: ['**/*.{ts,tsx}'],\n  ignores: ['dist'],\n  languageOptions: {\n    ecmaVersion: 2020,\n    globals: globals.browser,\n  },\n  plugins: {\n    'react-hooks': reactHooks,\n    'react-refresh': reactRefresh,\n  },\n  rules: {\n    ...reactHooks.configs.recommended.rules,\n    'react-refresh/only-export-components': [\n      'warn',\n      { allowConstantExport: true },\n    ],\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Vite + React + TS</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/package.json",
    "content": "{\n  \"name\": \"test-cli-vite\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"tsc -b && vite build\",\n    \"lint\": \"eslint .\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.8.0\",\n    \"@types/react\": \"^18.3.3\",\n    \"@types/react-dom\": \"^18.3.0\",\n    \"@vitejs/plugin-react\": \"^4.3.1\",\n    \"autoprefixer\": \"^10.4.20\",\n    \"eslint\": \"^9.8.0\",\n    \"eslint-plugin-react-hooks\": \"^5.1.0-rc.0\",\n    \"eslint-plugin-react-refresh\": \"^0.4.9\",\n    \"globals\": \"^15.9.0\",\n    \"postcss\": \"^8.4.41\",\n    \"tailwindcss\": \"^3.4.10\",\n    \"typescript\": \"^5.5.3\",\n    \"typescript-eslint\": \"^8.0.0\",\n    \"vite\": \"^5.4.0\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/postcss.config.js",
    "content": "export default {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/src/App.css",
    "content": "#root {\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 2rem;\n  text-align: center;\n}\n\n.logo {\n  height: 6em;\n  padding: 1.5em;\n  will-change: filter;\n  transition: filter 300ms;\n}\n.logo:hover {\n  filter: drop-shadow(0 0 2em #646cffaa);\n}\n.logo.react:hover {\n  filter: drop-shadow(0 0 2em #61dafbaa);\n}\n\n@keyframes logo-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  a:nth-of-type(2) .logo {\n    animation: logo-spin infinite 20s linear;\n  }\n}\n\n.card {\n  padding: 2em;\n}\n\n.read-the-docs {\n  color: #888;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/src/App.tsx",
    "content": "import { useState } from 'react'\nimport reactLogo from './assets/react.svg'\nimport viteLogo from '/vite.svg'\nimport './App.css'\n\nfunction App() {\n  const [count, setCount] = useState(0)\n\n  return (\n    <>\n      <div>\n        <a href=\"https://vitejs.dev\" target=\"_blank\">\n          <img src={viteLogo} className=\"logo\" alt=\"Vite logo\" />\n        </a>\n        <a href=\"https://react.dev\" target=\"_blank\">\n          <img src={reactLogo} className=\"logo react\" alt=\"React logo\" />\n        </a>\n      </div>\n      <h1>Vite + React</h1>\n      <div className=\"card\">\n        <button onClick={() => setCount((count) => count + 1)}>\n          count is {count}\n        </button>\n        <p>\n          Edit <code>src/App.tsx</code> and save to test HMR\n        </p>\n      </div>\n      <p className=\"read-the-docs\">\n        Click on the Vite and React logos to learn more\n      </p>\n    </>\n  )\n}\n\nexport default App\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/src/index.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/src/main.tsx",
    "content": "import { StrictMode } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport App from './App.tsx'\nimport './index.css'\n\ncreateRoot(document.getElementById('root')!).render(\n  <StrictMode>\n    <App />\n  </StrictMode>,\n)\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nexport default {\n  content: [\"./index.html\", \"./src/**/*.{js,ts,jsx,tsx}\"],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/tsconfig.app.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"isolatedModules\": true,\n    \"moduleDetection\": \"force\",\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"noFallthroughCasesInSwitch\": true\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/tsconfig.json",
    "content": "{\n  \"files\": [],\n  \"references\": [\n    { \"path\": \"./tsconfig.app.json\" },\n    { \"path\": \"./tsconfig.node.json\" }\n  ]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2023\"],\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"isolatedModules\": true,\n    \"moduleDetection\": \"force\",\n    \"noEmit\": true,\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"noFallthroughCasesInSwitch\": true\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/frameworks/vite/vite.config.ts",
    "content": "import { defineConfig } from \"vite\"\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [],\n})\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next/.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\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# local env files\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n:root {\n  --foreground-rgb: 0, 0, 0;\n  --background-start-rgb: 214, 219, 220;\n  --background-end-rgb: 255, 255, 255;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    --foreground-rgb: 255, 255, 255;\n    --background-start-rgb: 0, 0, 0;\n    --background-end-rgb: 0, 0, 0;\n  }\n}\n\nbody {\n  color: rgb(var(--foreground-rgb));\n  background: linear-gradient(\n      to bottom,\n      transparent,\n      rgb(var(--background-end-rgb))\n    )\n    rgb(var(--background-start-rgb));\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next/next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next/package.json",
    "content": "{\n  \"name\": \"test-cli-next\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@types/node\": \"20.2.5\",\n    \"@types/react\": \"18.2.7\",\n    \"@types/react-dom\": \"18.2.4\",\n    \"autoprefixer\": \"10.4.14\",\n    \"eslint\": \"8.41.0\",\n    \"eslint-config-next\": \"13.4.4\",\n    \"next\": \"14.2.35\",\n    \"postcss\": \"8.4.23\",\n    \"react\": \"18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"tailwindcss\": \"3.3.2\",\n    \"typescript\": \"5.0.4\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  darkMode: [\"class\"],\n  content: [\n    './pages/**/*.{ts,tsx}',\n    './components/**/*.{ts,tsx}',\n    './app/**/*.{ts,tsx}',\n    './src/**/*.{ts,tsx}',\n  ],\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      colors: {\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input))\",\n        ring: \"hsl(var(--ring))\",\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        primary: {\n          DEFAULT: \"hsl(var(--primary))\",\n          foreground: \"hsl(var(--primary-foreground))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n      },\n      borderRadius: {\n        lg: \"var(--radius)\",\n        md: \"calc(var(--radius) - 2px)\",\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: \"0\" },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: \"0\" },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-app-js/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n:root {\n  --foreground-rgb: 0, 0, 0;\n  --background-start-rgb: 214, 219, 220;\n  --background-end-rgb: 255, 255, 255;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    --foreground-rgb: 255, 255, 255;\n    --background-start-rgb: 0, 0, 0;\n    --background-end-rgb: 0, 0, 0;\n  }\n}\n\nbody {\n  color: rgb(var(--foreground-rgb));\n  background: linear-gradient(\n      to bottom,\n      transparent,\n      rgb(var(--background-end-rgb))\n    )\n    rgb(var(--background-start-rgb));\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-app-js/app/layout.js",
    "content": "import { Inter } from 'next/font/google'\nimport './globals.css'\n\nconst inter = Inter({ subsets: ['latin'] })\n\nexport const metadata = {\n  title: 'Create Next App',\n  description: 'Generated by create next app',\n}\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <body className={inter.className}>{children}</body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-app-js/app/page.js",
    "content": "import Image from 'next/image'\n\nexport default function Home() {\n  return (\n    <main className=\"flex min-h-screen flex-col items-center justify-between p-24\">\n      <div className=\"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex\">\n        <p className=\"fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30\">\n          Get started by editing&nbsp;\n          <code className=\"font-mono font-bold\">app/page.js</code>\n        </p>\n        <div className=\"fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none\">\n          <a\n            className=\"pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0\"\n            href=\"https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            By{' '}\n            <Image\n              src=\"/vercel.svg\"\n              alt=\"Vercel Logo\"\n              className=\"dark:invert\"\n              width={100}\n              height={24}\n              priority\n            />\n          </a>\n        </div>\n      </div>\n\n      <div className=\"relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 before:lg:h-[360px] z-[-1]\">\n        <Image\n          className=\"relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert\"\n          src=\"/next.svg\"\n          alt=\"Next.js Logo\"\n          width={180}\n          height={37}\n          priority\n        />\n      </div>\n\n      <div className=\"mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left\">\n        <a\n          href=\"https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Docs{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Find in-depth information about Next.js features and API.\n          </p>\n        </a>\n\n        <a\n          href=\"https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800 hover:dark:bg-opacity-30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Learn{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Learn about Next.js in an interactive course with&nbsp;quizzes!\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Templates{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Explore starter templates for Next.js.\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Deploy{' '}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Instantly deploy your Next.js site to a shareable URL with Vercel.\n          </p>\n        </a>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-app-js/jsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-app-js/next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-app-js/package.json",
    "content": "{\n  \"name\": \"app-js\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"react\": \"^18\",\n    \"react-dom\": \"^18\",\n    \"next\": \"14.2.35\"\n  },\n  \"devDependencies\": {\n    \"autoprefixer\": \"^10.0.1\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"^3.3.0\",\n    \"eslint\": \"^8\",\n    \"eslint-config-next\": \"14.0.4\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-app-js/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-app-js/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [\n    './pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './components/**/*.{js,ts,jsx,tsx,mdx}',\n    './app/**/*.{js,ts,jsx,tsx,mdx}',\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',\n        'gradient-conic':\n          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',\n      },\n    },\n  },\n  plugins: [],\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-src/.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\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# local env files\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-src/next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-src/package.json",
    "content": "{\n  \"name\": \"text-cli-next-src\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-src/src/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n:root {\n  --foreground-rgb: 0, 0, 0;\n  --background-start-rgb: 214, 219, 220;\n  --background-end-rgb: 255, 255, 255;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    --foreground-rgb: 255, 255, 255;\n    --background-start-rgb: 0, 0, 0;\n    --background-end-rgb: 0, 0, 0;\n  }\n}\n\nbody {\n  color: rgb(var(--foreground-rgb));\n  background: linear-gradient(\n      to bottom,\n      transparent,\n      rgb(var(--background-end-rgb))\n    )\n    rgb(var(--background-start-rgb));\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-src/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [\n    './src/pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './src/components/**/*.{js,ts,jsx,tsx,mdx}',\n    './src/app/**/*.{js,ts,jsx,tsx,mdx}',\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',\n        'gradient-conic':\n          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',\n      },\n    },\n  },\n  plugins: [],\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/next-src/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project/components.json",
    "content": "{\n  \"tailwindConfig\": \"./tailwind.config.ts\",\n  \"importPaths\": {\n    \"styles\": \"~/styles/globals.css\",\n    \"utils:cn\": \"~/lib/cn.ts\",\n    \"components:ui\": \"~/components/ui\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project/package.json",
    "content": "{\n  \"name\": \"test-cli-project\",\n  \"version\": \"0.1.0\",\n  \"private\": true\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-bun/package.json",
    "content": "{\n  \"name\": \"test-cli-project-bun\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-bun-lock/package.json",
    "content": "{\n  \"name\": \"test-cli-project-bun\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-deno/deno.json",
    "content": "{}"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-npm/package.json",
    "content": "{\n  \"name\": \"test-cli-project-npm\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-npm-react19/package.json",
    "content": "{\n  \"name\": \"test-cli-project-npm\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"react\": \"19.0.0\",\n    \"react-day-picker\": \"8.0.0\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-pnpm/package.json",
    "content": "{\n  \"name\": \"test-cli-project-pnpm\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-src/components.json",
    "content": "{\n  \"components\": \"src/components\",\n  \"ui\": \"src/ui\",\n  \"styles\": \"src/styles/main.css\",\n  \"utils\": \"src/lib/cn.ts\",\n  \"tailwindConfig\": \"tailwind.config.ts\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-src/package.json",
    "content": "{\n  \"name\": \"project-src\",\n  \"version\": \"0.1.0\",\n  \"private\": true\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/project-yarn/package.json",
    "content": "{\n  \"name\": \"test-cli-project-yarn\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"author\": \"shadcn\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/.eslintrc.cjs",
    "content": "module.exports = {\n  root: true,\n  env: { browser: true, es2020: true },\n  extends: [\n    'eslint:recommended',\n    'plugin:@typescript-eslint/recommended',\n    'plugin:react-hooks/recommended',\n  ],\n  ignorePatterns: ['dist', '.eslintrc.cjs'],\n  parser: '@typescript-eslint/parser',\n  plugins: ['react-refresh'],\n  rules: {\n    'react-refresh/only-export-components': [\n      'warn',\n      { allowConstantExport: true },\n    ],\n  },\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n\n!src/components\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/README.md",
    "content": "# React + TypeScript + Vite\n\nThis template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.\n\nCurrently, two official plugins are available:\n\n- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh\n- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh\n\n## Expanding the ESLint configuration\n\nIf you are developing a production application, we recommend updating the configuration to enable type aware lint rules:\n\n- Configure the top-level `parserOptions` property like this:\n\n```js\nexport default {\n  // other rules...\n  parserOptions: {\n    ecmaVersion: 'latest',\n    sourceType: 'module',\n    project: ['./tsconfig.json', './tsconfig.node.json'],\n    tsconfigRootDir: __dirname,\n  },\n}\n```\n\n- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`\n- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`\n- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/index.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Vite + React + TS</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/package.json",
    "content": "{\n  \"name\": \"vite-with-tailwind\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"tsc && vite build\",\n    \"lint\": \"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-checkbox\": \"^1.1.4\",\n    \"@radix-ui/react-label\": \"^2.1.2\",\n    \"@radix-ui/react-radio-group\": \"^1.2.3\",\n    \"@radix-ui/react-select\": \"^2.1.6\",\n    \"@radix-ui/react-slot\": \"^1.1.2\",\n    \"@tailwindcss/vite\": \"^4.0.7\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"lucide-react\": \"^0.475.0\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"tailwind-merge\": \"^3.0.1\",\n    \"tailwindcss\": \"^4.0.7\",\n    \"tailwindcss-animate\": \"^1.0.7\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.13.4\",\n    \"@types/react\": \"^18.2.28\",\n    \"@types/react-dom\": \"^18.2.13\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"@vitejs/plugin-react\": \"^4.1.0\",\n    \"eslint\": \"^8.51.0\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-react-refresh\": \"^0.4.3\",\n    \"typescript\": \"^5.2.2\",\n    \"vite\": \"^5.0.0-beta.11\"\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/src/App.css",
    "content": "#root {\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 2rem;\n  text-align: center;\n}\n\n.logo {\n  height: 6em;\n  padding: 1.5em;\n  will-change: filter;\n  transition: filter 300ms;\n}\n.logo:hover {\n  filter: drop-shadow(0 0 2em #646cffaa);\n}\n.logo.react:hover {\n  filter: drop-shadow(0 0 2em #61dafbaa);\n}\n\n@keyframes logo-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  a:nth-of-type(2) .logo {\n    animation: logo-spin infinite 20s linear;\n  }\n}\n\n.card {\n  padding: 2em;\n}\n\n.read-the-docs {\n  color: #888;\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/src/App.tsx",
    "content": "export default function App() {\n  return <div>Hello World</div>\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/src/index.css",
    "content": "@import \"tailwindcss\";\n\n@plugin \"tailwindcss-animate\";\n\n@custom-variant dark (&:is(.dark *));\n\n:root {\n  --background: oklch(1 0 0);\n  --foreground: oklch(0.145 0 0);\n  --card: oklch(1 0 0);\n  --card-foreground: oklch(0.145 0 0);\n  --popover: oklch(1 0 0);\n  --popover-foreground: oklch(0.145 0 0);\n  --primary: oklch(0.205 0 0);\n  --primary-foreground: oklch(0.985 0 0);\n  --secondary: oklch(0.97 0 0);\n  --secondary-foreground: oklch(0.205 0 0);\n  --muted: oklch(0.97 0 0);\n  --muted-foreground: oklch(0.556 0 0);\n  --accent: oklch(0.97 0 0);\n  --accent-foreground: oklch(0.205 0 0);\n  --destructive: oklch(0.577 0.245 27.325);\n  --destructive-foreground: oklch(0.577 0.245 27.325);\n  --border: oklch(0.922 0 0);\n  --input: oklch(0.922 0 0);\n  --ring: oklch(0.87 0 0);\n  --chart-1: oklch(0.646 0.222 41.116);\n  --chart-2: oklch(0.6 0.118 184.704);\n  --chart-3: oklch(0.398 0.07 227.392);\n  --chart-4: oklch(0.828 0.189 84.429);\n  --chart-5: oklch(0.769 0.188 70.08);\n  --radius: 0.625rem;\n  --sidebar: oklch(0.985 0 0);\n  --sidebar-foreground: oklch(0.145 0 0);\n  --sidebar-primary: oklch(0.205 0 0);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.97 0 0);\n  --sidebar-accent-foreground: oklch(0.205 0 0);\n  --sidebar-border: oklch(0.922 0 0);\n  --sidebar-ring: oklch(0.87 0 0);\n}\n\n.dark {\n  --background: oklch(0.145 0 0);\n  --foreground: oklch(0.985 0 0);\n  --card: oklch(0.145 0 0);\n  --card-foreground: oklch(0.985 0 0);\n  --popover: oklch(0.145 0 0);\n  --popover-foreground: oklch(0.985 0 0);\n  --primary: oklch(0.985 0 0);\n  --primary-foreground: oklch(0.205 0 0);\n  --secondary: oklch(0.269 0 0);\n  --secondary-foreground: oklch(0.985 0 0);\n  --muted: oklch(0.269 0 0);\n  --muted-foreground: oklch(0.708 0 0);\n  --accent: oklch(0.269 0 0);\n  --accent-foreground: oklch(0.985 0 0);\n  --destructive: oklch(0.396 0.141 25.723);\n  --destructive-foreground: oklch(0.637 0.237 25.331);\n  --border: oklch(0.269 0 0);\n  --input: oklch(0.269 0 0);\n  --ring: oklch(0.439 0 0);\n  --chart-1: oklch(0.488 0.243 264.376);\n  --chart-2: oklch(0.696 0.17 162.48);\n  --chart-3: oklch(0.769 0.188 70.08);\n  --chart-4: oklch(0.627 0.265 303.9);\n  --chart-5: oklch(0.645 0.246 16.439);\n  --sidebar: oklch(0.205 0 0);\n  --sidebar-foreground: oklch(0.985 0 0);\n  --sidebar-primary: oklch(0.488 0.243 264.376);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.269 0 0);\n  --sidebar-accent-foreground: oklch(0.985 0 0);\n  --sidebar-border: oklch(0.269 0 0);\n  --sidebar-ring: oklch(0.439 0 0);\n}\n\n@theme inline {\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  --color-card: var(--card);\n  --color-card-foreground: var(--card-foreground);\n  --color-popover: var(--popover);\n  --color-popover-foreground: var(--popover-foreground);\n  --color-primary: var(--primary);\n  --color-primary-foreground: var(--primary-foreground);\n  --color-secondary: var(--secondary);\n  --color-secondary-foreground: var(--secondary-foreground);\n  --color-muted: var(--muted);\n  --color-muted-foreground: var(--muted-foreground);\n  --color-accent: var(--accent);\n  --color-accent-foreground: var(--accent-foreground);\n  --color-destructive: var(--destructive);\n  --color-destructive-foreground: var(--destructive-foreground);\n  --color-border: var(--border);\n  --color-input: var(--input);\n  --color-ring: var(--ring);\n  --color-chart-1: var(--chart-1);\n  --color-chart-2: var(--chart-2);\n  --color-chart-3: var(--chart-3);\n  --color-chart-4: var(--chart-4);\n  --color-chart-5: var(--chart-5);\n  --radius-sm: calc(var(--radius) - 4px);\n  --radius-md: calc(var(--radius) - 2px);\n  --radius-lg: var(--radius);\n  --radius-xl: calc(var(--radius) + 4px);\n  --color-sidebar: var(--sidebar);\n  --color-sidebar-foreground: var(--sidebar-foreground);\n  --color-sidebar-primary: var(--sidebar-primary);\n  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n  --color-sidebar-accent: var(--sidebar-accent);\n  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n  --color-sidebar-border: var(--sidebar-border);\n  --color-sidebar-ring: var(--sidebar-ring);\n}\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/src/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/src/main.tsx",
    "content": "import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App.tsx'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>,\n)\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"noFallthroughCasesInSwitch\": true,\n\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\"src\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"skipLibCheck\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"allowSyntheticDefaultImports\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/vite-with-tailwind/vite.config.ts",
    "content": "import { defineConfig } from \"vite\"\nimport tailwindcss from \"@tailwindcss/vite\"\nimport path from \"path\"\n\nexport default defineConfig({\n  plugins: [tailwindcss()],\n  resolve: {\n    alias: {\n      \"@\": path.resolve(__dirname, \"./src\"),\n    },\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/with-base-url/tsconfig.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/fixtures/without-base-url/tsconfig.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"compilerOptions\": {\n    \"paths\": {\n      \"~/components/*\": [\"./components/*\"],\n      \"~/lib/*\": [\"./lib/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/shadcn/test/utils/__snapshots__/transform-css-vars.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`transform css vars 1`] = `\n\"import * as React from \"react\"\nexport function Foo() {\n\treturn <div className=\"bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground\">foo</div>\n}\"\n    \"\n`;\n\nexports[`transform css vars 2`] = `\n\"import * as React from \"react\"\nexport function Foo() {\n\treturn <div className=\"bg-white hover:bg-stone-100 text-stone-50 sm:focus:text-stone-900 dark:bg-stone-950 dark:hover:bg-stone-800 dark:text-stone-900 dark:sm:focus:text-stone-50\">foo</div>\n}\"\n    \"\n`;\n\nexports[`transform css vars 3`] = `\n\"import * as React from \"react\"\nexport function Foo() {\n\treturn <div className={cn(\"bg-white hover:bg-stone-100 dark:bg-stone-950 dark:hover:bg-stone-800\", true && \"text-stone-50 sm:focus:text-stone-900 dark:text-stone-900 dark:sm:focus:text-stone-50\")}>foo</div>\n}\"\n    \"\n`;\n\nexports[`transform css vars 4`] = `\n\"import * as React from \"react\"\nexport function Foo() {\n\treturn <div className={cn(\"bg-white border border-stone-200 dark:bg-stone-950 dark:border-stone-800\")}>foo</div>\n}\"\n    \"\n`;\n"
  },
  {
    "path": "packages/shadcn/test/utils/__snapshots__/transform-import.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`transform async/dynamic imports 1`] = `\n\"import * as React from \"react\"\nimport { Button } from \"@/components/ui/button\"\n\nasync function loadComponent() {\n  const { cn } = await import(\"@/lib/utils\")\n  const module = await import(\"@/components/ui/card\")\n  return module\n}\n\nfunction lazyLoad() {\n  return import(\"@/components/ui/dialog\").then(module => module)\n}\n    \"\n`;\n\nexports[`transform async/dynamic imports 2`] = `\n\"import { Button } from \"~/components/ui/button\"\n\nasync function loadUtils() {\n  const utils = await import(\"~/lib/utils\")\n  const { cn } = await import(\"~/lib/utils\")\n  return { utils, cn }\n}\n\nconst dialogPromise = import(\"~/components/ui/dialog\")\nconst cardModule = import(\"~/components/ui/card\")\n    \"\n`;\n\nexports[`transform dynamic imports with cn utility 1`] = `\n\"async function loadCn() {\n  const { cn } = await import(\"@/lib/utils\")\n  return cn\n}\n\nasync function loadMultiple() {\n  const utils1 = await import(\"@/lib/utils\")\n  const { cn, twMerge } = await import(\"@/lib/utils\")\n  const other = await import(\"@/lib/other\")\n}\n    \"\n`;\n\nexports[`transform dynamic imports with cn utility 2`] = `\n\"async function loadWorkspaceCn() {\n  const { cn } = await import(\"@workspace/lib/utils\")\n  return cn\n}\n    \"\n`;\n\nexports[`transform import 1`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/components/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/components/box\"\n\n    import { cn } from \"@/lib/utils\"\n    \"\n`;\n\nexports[`transform import 2`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"~/src/components/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"~/src/components/box\"\n\n    import { cn, foo, bar } from \"~/lib\"\n    import { bar } from \"~/lib/utils/bar\"\n    \"\n`;\n\nexports[`transform import 3`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"~/src/components/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"~/src/components/box\"\n\n    import { cn } from \"~/src/utils\"\n    import { bar } from \"~/lib/utils/bar\"\n    \"\n`;\n\nexports[`transform import 4`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"~/src/components/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"~/src/components/box\"\n\n    import { cn } from \"~/src/utils\"\n    import { bar } from \"~/lib/utils/bar\"\n    \"\n`;\n\nexports[`transform import 5`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"~/src/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"~/src/components/box\"\n\n    import { cn } from \"~/src/utils\"\n    import { bar } from \"~/lib/utils/bar\"\n    \"\n`;\n\nexports[`transform import 6`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@custom-alias/components/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@custom-alias/components/box\"\n\n    import { cn } from \"@custom-alias/lib/utils\"\n    \"\n`;\n\nexports[`transform import for monorepo 1`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@workspace/ui/components/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@workspace/ui/components/box\"\n\n    import { cn } from \"@workspace/ui/lib/utils\"\n    \"\n`;\n\nexports[`transform import for monorepo 2`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@repo/ui/components/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@repo/ui/components/box\"\n\n    import { cn } from \"@repo/ui/lib/utils\"\n    \"\n`;\n\nexports[`transform re-exports with dynamic imports 1`] = `\n\"export { cn } from \"@/lib/utils\"\nexport { Button } from \"@/components/ui/button\"\n\nasync function load() {\n  const module = await import(\"@/components/ui/card\")\n  return module\n}\n    \"\n`;\n"
  },
  {
    "path": "packages/shadcn/test/utils/__snapshots__/transform-rsc.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`transform rsc 1`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    \"\n`;\n\nexports[`transform rsc 2`] = `\n\"\"use client\"\n\n      import * as React from \"react\"\nimport { Foo } from \"bar\"\n    \"\n`;\n\nexports[`transform rsc 3`] = `\n\"import * as React from \"react\"\nimport { Foo } from \"bar\"\n    \"\n`;\n\nexports[`transform rsc 4`] = `\n\"\"use foo\"\n\n      import * as React from \"react\"\nimport { Foo } from \"bar\"\n\n\"use client\"\n    \"\n`;\n\nexports[`transform rsc 5`] = `\n\"'use client'\n\n      import * as React from 'react'\nimport { Foo } from 'bar'\n    \"\n`;\n\nexports[`transform rsc 6`] = `\n\"import * as React from 'react'\nimport { Foo } from 'bar'\n    \"\n`;\n\nexports[`transform rsc 7`] = `\n\"'use foo'\n\n      import * as React from 'react'\nimport { Foo } from 'bar'\n\n'use client'\n    \"\n`;\n"
  },
  {
    "path": "packages/shadcn/test/utils/__snapshots__/transform-tw-prefix.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`transform tailwind prefix 1`] = `\n\"import * as React from \"react\"\n            export function Foo() {\n                return <div className=\"tw:bg-background hover:tw:bg-muted tw:text-primary-foreground sm:focus:tw:text-accent-foreground\">foo</div>\n            }\n        \"\n`;\n\nexports[`transform tailwind prefix 2`] = `\n\"import * as React from \"react\"\nexport function Foo() {\n\treturn <div className=\"tw:bg-white hover:tw:bg-stone-100 tw:text-stone-50 sm:focus:tw:text-stone-900 dark:tw:bg-stone-950 dark:hover:tw:bg-stone-800 dark:tw:text-stone-900 dark:sm:focus:tw:text-stone-50\">foo</div>\n}\n    \"\n`;\n\nexports[`transform tailwind prefix 3`] = `\n\"import * as React from \"react\"\nexport function Foo() {\n\treturn <div className={cn(\"tw:bg-white hover:tw:bg-stone-100 dark:tw:bg-stone-950 dark:hover:tw:bg-stone-800\", true && \"tw:text-stone-50 sm:focus:tw:text-stone-900 dark:tw:text-stone-900 dark:sm:focus:tw:text-stone-50\")}>foo</div>\n}\n    \"\n`;\n\nexports[`transform tailwind prefix 4`] = `\n\"import * as React from \"react\"\nexport function Foo() {\n\treturn <div className={cn(\"tw:bg-white hover:tw:bg-stone-100 dark:tw:bg-stone-950 dark:hover:tw:bg-stone-800\", true && \"tw:text-stone-50 sm:focus:tw:text-stone-900 dark:tw:text-stone-900 dark:sm:focus:tw:text-stone-50\")}>foo</div>\n}\n    \"\n`;\n\nexports[`transform tailwind prefix 5`] = `\n\"@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 224 71.4% 4.1%;\n \n    --muted: 220 14.3% 95.9%;\n    --muted-foreground: 220 8.9% 46.1%;\n \n    --popover: 0 0% 100%;\n    --popover-foreground: 224 71.4% 4.1%;\n \n    --card: 0 0% 100%;\n    --card-foreground: 224 71.4% 4.1%;\n \n    --border: 220 13% 91%;\n    --input: 220 13% 91%;\n \n    --primary: 220.9 39.3% 11%;\n    --primary-foreground: 210 20% 98%;\n \n    --secondary: 220 14.3% 95.9%;\n    --secondary-foreground: 220.9 39.3% 11%;\n \n    --accent: 220 14.3% 95.9%;\n    --accent-foreground: 220.9 39.3% 11%;\n \n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 210 20% 98%;\n \n    --ring: 217.9 10.6% 64.9%;\n \n    --radius: 0.5rem;\n  }\n \n  .dark {\n    --background: 224 71.4% 4.1%;\n    --foreground: 210 20% 98%;\n \n    --muted: 215 27.9% 16.9%;\n    --muted-foreground: 217.9 10.6% 64.9%;\n \n    --popover: 224 71.4% 4.1%;\n    --popover-foreground: 210 20% 98%;\n \n    --card: 224 71.4% 4.1%;\n    --card-foreground: 210 20% 98%;\n \n    --border: 215 27.9% 16.9%;\n    --input: 215 27.9% 16.9%;\n \n    --primary: 210 20% 98%;\n    --primary-foreground: 220.9 39.3% 11%;\n \n    --secondary: 215 27.9% 16.9%;\n    --secondary-foreground: 210 20% 98%;\n \n    --accent: 215 27.9% 16.9%;\n    --accent-foreground: 210 20% 98%;\n \n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 0 85.7% 97.3%;\n \n    --ring: 215 27.9% 16.9%;\n  }\n}\n \n@layer base {\n  * {\n    @apply tw::border-border;\n  }\n  body {\n    @apply tw::bg-background tw::text-foreground;\n  }\n}\"\n`;\n"
  },
  {
    "path": "packages/shadcn/test/utils/add-components.test.ts",
    "content": "import { afterEach, describe, expect, test, vi } from \"vitest\"\n\nimport type { Config } from \"../../src/utils/get-config\"\n\n// Mock all external dependencies.\nvi.mock(\"../../src/registry/resolver\", () => ({\n  resolveRegistryTree: vi.fn(),\n}))\n\nvi.mock(\"../../src/utils/get-config\", async () => {\n  const actual = (await vi.importActual(\n    \"../../src/utils/get-config\"\n  )) as typeof import(\"../../src/utils/get-config\")\n  return {\n    ...actual,\n    getWorkspaceConfig: vi.fn(),\n    findPackageRoot: vi.fn(),\n  }\n})\n\nvi.mock(\"../../src/utils/updaters/update-files\", () => ({\n  updateFiles: vi.fn().mockResolvedValue({\n    filesCreated: [],\n    filesUpdated: [],\n    filesSkipped: [],\n  }),\n}))\n\nvi.mock(\"../../src/utils/updaters/update-dependencies\", () => ({\n  updateDependencies: vi.fn().mockResolvedValue(undefined),\n}))\n\nvi.mock(\"../../src/utils/updaters/update-tailwind-config\", () => ({\n  updateTailwindConfig: vi.fn().mockResolvedValue(undefined),\n}))\n\nvi.mock(\"../../src/utils/updaters/update-env-vars\", () => ({\n  updateEnvVars: vi.fn().mockResolvedValue(undefined),\n}))\n\nvi.mock(\"../../src/utils/updaters/update-fonts\", () => ({\n  updateFonts: vi.fn().mockResolvedValue(undefined),\n  massageTreeForFonts: vi.fn().mockImplementation((tree) => tree),\n}))\n\nvi.mock(\"../../src/utils/updaters/update-css\", () => ({\n  updateCss: vi.fn().mockResolvedValue(undefined),\n}))\n\nvi.mock(\"../../src/utils/get-project-info\", () => ({\n  getProjectTailwindVersionFromConfig: vi.fn().mockResolvedValue(\"4\"),\n}))\n\nvi.mock(\"../../src/utils/spinner\", () => ({\n  spinner: vi.fn().mockReturnValue({\n    start: vi.fn().mockReturnThis(),\n    succeed: vi.fn().mockReturnThis(),\n    fail: vi.fn().mockReturnThis(),\n    info: vi.fn().mockReturnThis(),\n  }),\n}))\n\nvi.mock(\"../../src/utils/logger\", () => ({\n  logger: {\n    info: vi.fn(),\n    log: vi.fn(),\n    warn: vi.fn(),\n    error: vi.fn(),\n  },\n}))\n\nimport { addComponents } from \"../../src/utils/add-components\"\nimport { resolveRegistryTree } from \"../../src/registry/resolver\"\nimport {\n  findPackageRoot,\n  getWorkspaceConfig,\n} from \"../../src/utils/get-config\"\nimport { updateFiles } from \"../../src/utils/updaters/update-files\"\nimport { updateFonts } from \"../../src/utils/updaters/update-fonts\"\n\nafterEach(() => {\n  vi.clearAllMocks()\n})\n\nfunction createMockConfig(overrides: Partial<Config> = {}): Config {\n  return {\n    $schema: \"https://ui.shadcn.com/schema.json\",\n    style: \"new-york\",\n    rsc: true,\n    tsx: true,\n    tailwind: {\n      css: \"app/globals.css\",\n      baseColor: \"zinc\",\n      cssVariables: true,\n    },\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n      ui: \"@/components/ui\",\n      lib: \"@/lib\",\n      hooks: \"@/hooks\",\n    },\n    resolvedPaths: {\n      cwd: \"/apps/web\",\n      tailwindConfig: \"/apps/web/tailwind.config.ts\",\n      tailwindCss: \"/apps/web/app/globals.css\",\n      utils: \"/apps/web/lib/utils\",\n      components: \"/apps/web/components\",\n      lib: \"/apps/web/lib\",\n      hooks: \"/apps/web/hooks\",\n      ui: \"/apps/web/components/ui\",\n    },\n    ...overrides,\n  } as Config\n}\n\ndescribe(\"addComponents workspace routing\", () => {\n  test(\"should route registry:hook files to workspaceConfig.hooks\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    // Hooks config resolves to the same package but is a distinct config object.\n    // getWorkspaceConfig builds one config per alias key.\n    const hooksConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n      hooks: hooksConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"sidebar\",\n      files: [\n        {\n          path: \"registry/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Sidebar() {}\",\n        },\n        {\n          path: \"registry/hooks/use-mobile.ts\",\n          type: \"registry:hook\",\n          content: \"export function useMobile() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/packages/ui\")\n\n    await addComponents([\"sidebar\"], appConfig, { silent: true })\n\n    // updateFiles should be called twice: once for registry:ui, once for registry:hook.\n    expect(updateFiles).toHaveBeenCalledTimes(2)\n\n    // First call: registry:ui files with the UI workspace config.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      1,\n      [\n        expect.objectContaining({\n          type: \"registry:ui\",\n          path: \"registry/ui/sidebar.tsx\",\n        }),\n      ],\n      uiConfig,\n      expect.any(Object)\n    )\n\n    // Second call: registry:hook files with the hooks workspace config.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      2,\n      [\n        expect.objectContaining({\n          type: \"registry:hook\",\n          path: \"registry/hooks/use-mobile.ts\",\n        }),\n      ],\n      hooksConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should route registry:lib files to workspaceConfig.lib\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n    const libConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n      lib: libConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"button\",\n      files: [\n        {\n          path: \"registry/ui/button.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Button() {}\",\n        },\n        {\n          path: \"registry/lib/utils.ts\",\n          type: \"registry:lib\",\n          content: \"export function cn() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/packages/ui\")\n\n    await addComponents([\"button\"], appConfig, { silent: true })\n\n    expect(updateFiles).toHaveBeenCalledTimes(2)\n\n    // First call: registry:ui files with the UI workspace config.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      1,\n      [expect.objectContaining({ type: \"registry:ui\" })],\n      uiConfig,\n      expect.any(Object)\n    )\n\n    // Second call: registry:lib files with the lib workspace config.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      2,\n      [expect.objectContaining({ type: \"registry:lib\" })],\n      libConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should fall back to app config for unmapped types like registry:component\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"login-01\",\n      files: [\n        {\n          path: \"registry/components/login-form.tsx\",\n          type: \"registry:component\",\n          content: \"export function LoginForm() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/apps/web\")\n\n    await addComponents([\"login-01\"], appConfig, { silent: true })\n\n    expect(updateFiles).toHaveBeenCalledTimes(1)\n\n    // registry:component should fall back to the app config.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      1,\n      [expect.objectContaining({ type: \"registry:component\" })],\n      appConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should fall back to app config when workspace key is missing\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    // Workspace config only has ui — no hooks or lib.\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"sidebar\",\n      files: [\n        {\n          path: \"registry/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Sidebar() {}\",\n        },\n        {\n          path: \"registry/hooks/use-mobile.ts\",\n          type: \"registry:hook\",\n          content: \"export function useMobile() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/packages/ui\")\n\n    await addComponents([\"sidebar\"], appConfig, { silent: true })\n\n    expect(updateFiles).toHaveBeenCalledTimes(2)\n\n    // registry:ui → workspaceConfig.ui.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      1,\n      [expect.objectContaining({ type: \"registry:ui\" })],\n      uiConfig,\n      expect.any(Object)\n    )\n\n    // registry:hook with no workspaceConfig.hooks → falls back to app config.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      2,\n      [expect.objectContaining({ type: \"registry:hook\" })],\n      appConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should route all three mapped types to their workspace configs\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n      hooks: uiConfig,\n      lib: uiConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"sidebar\",\n      files: [\n        {\n          path: \"registry/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Sidebar() {}\",\n        },\n        {\n          path: \"registry/hooks/use-mobile.ts\",\n          type: \"registry:hook\",\n          content: \"export function useMobile() {}\",\n        },\n        {\n          path: \"registry/lib/utils.ts\",\n          type: \"registry:lib\",\n          content: \"export function cn() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/packages/ui\")\n\n    await addComponents([\"sidebar\"], appConfig, { silent: true })\n\n    // Three calls: one per type.\n    expect(updateFiles).toHaveBeenCalledTimes(3)\n\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      1,\n      [expect.objectContaining({ type: \"registry:ui\" })],\n      uiConfig,\n      expect.any(Object)\n    )\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      2,\n      [expect.objectContaining({ type: \"registry:hook\" })],\n      uiConfig,\n      expect.any(Object)\n    )\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      3,\n      [expect.objectContaining({ type: \"registry:lib\" })],\n      uiConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should fall back to app config for registry:file\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"some-component\",\n      files: [\n        {\n          path: \"registry/ui/button.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Button() {}\",\n        },\n        {\n          path: \".env\",\n          type: \"registry:file\",\n          target: \"~/.env\",\n          content: \"API_KEY=xxx\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/packages/ui\")\n\n    await addComponents([\"some-component\"], appConfig, { silent: true })\n\n    expect(updateFiles).toHaveBeenCalledTimes(2)\n\n    // registry:ui → workspace.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      1,\n      [expect.objectContaining({ type: \"registry:ui\" })],\n      uiConfig,\n      expect.any(Object)\n    )\n\n    // registry:file → app config.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      2,\n      [expect.objectContaining({ type: \"registry:file\" })],\n      appConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should default files with no type to registry:ui\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"button\",\n      files: [\n        {\n          path: \"registry/ui/button.tsx\",\n          // No type — should default to registry:ui.\n          content: \"export function Button() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/packages/ui\")\n\n    await addComponents([\"button\"], appConfig, { silent: true })\n\n    expect(updateFiles).toHaveBeenCalledTimes(1)\n\n    // Should route to workspace UI config.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      1,\n      expect.any(Array),\n      uiConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should group multiple files of the same type into one updateFiles call\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"sidebar\",\n      files: [\n        {\n          path: \"registry/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Sidebar() {}\",\n        },\n        {\n          path: \"registry/ui/sidebar-nav.tsx\",\n          type: \"registry:ui\",\n          content: \"export function SidebarNav() {}\",\n        },\n        {\n          path: \"registry/ui/sidebar-menu.tsx\",\n          type: \"registry:ui\",\n          content: \"export function SidebarMenu() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/packages/ui\")\n\n    await addComponents([\"sidebar\"], appConfig, { silent: true })\n\n    // All three files are registry:ui — should be one call, not three.\n    expect(updateFiles).toHaveBeenCalledTimes(1)\n    expect(updateFiles).toHaveBeenCalledWith(\n      expect.arrayContaining([\n        expect.objectContaining({ path: \"registry/ui/sidebar.tsx\" }),\n        expect.objectContaining({ path: \"registry/ui/sidebar-nav.tsx\" }),\n        expect.objectContaining({ path: \"registry/ui/sidebar-menu.tsx\" }),\n      ]),\n      uiConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should route hooks to separate package when aliases differ\", async () => {\n    const appConfig = createMockConfig({\n      aliases: {\n        components: \"~foo/ui/components\",\n        utils: \"~foo/ui/lib/utils\",\n        hooks: \"~foo/hooks/src\",\n        lib: \"~foo/ui/lib\",\n        ui: \"~foo/ui/components\",\n      },\n    })\n\n    const uiPackageConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    const hooksPackageConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/hooks\",\n        tailwindConfig: \"/packages/hooks/tailwind.config.ts\",\n        tailwindCss: \"/packages/hooks/src/globals.css\",\n        utils: \"/packages/hooks/src/lib/utils\",\n        components: \"/packages/hooks/src/components\",\n        lib: \"/packages/hooks/src/lib\",\n        hooks: \"/packages/hooks/src/hooks\",\n        ui: \"/packages/hooks/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiPackageConfig,\n      hooks: hooksPackageConfig,\n      lib: uiPackageConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"sidebar\",\n      files: [\n        {\n          path: \"registry/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Sidebar() {}\",\n        },\n        {\n          path: \"registry/hooks/use-mobile.ts\",\n          type: \"registry:hook\",\n          content: \"export function useMobile() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockImplementation(\n      async (_cwd, resolvedPath) => {\n        if (resolvedPath.startsWith(\"/packages/hooks\")) {\n          return \"/packages/hooks\"\n        }\n        return \"/packages/ui\"\n      }\n    )\n\n    await addComponents([\"sidebar\"], appConfig, { silent: true })\n\n    expect(updateFiles).toHaveBeenCalledTimes(2)\n\n    // registry:ui → UI package.\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      1,\n      [expect.objectContaining({ type: \"registry:ui\" })],\n      uiPackageConfig,\n      expect.any(Object)\n    )\n\n    // registry:hook → hooks package (separate from UI).\n    expect(updateFiles).toHaveBeenNthCalledWith(\n      2,\n      [expect.objectContaining({ type: \"registry:hook\" })],\n      hooksPackageConfig,\n      expect.any(Object)\n    )\n  })\n\n  test(\"should call updateFonts with app config, not workspace config\", async () => {\n    const appConfig = createMockConfig()\n    const uiConfig = createMockConfig({\n      resolvedPaths: {\n        cwd: \"/packages/ui\",\n        tailwindConfig: \"/packages/ui/tailwind.config.ts\",\n        tailwindCss: \"/packages/ui/src/globals.css\",\n        utils: \"/packages/ui/src/lib/utils\",\n        components: \"/packages/ui/src/components\",\n        lib: \"/packages/ui/src/lib\",\n        hooks: \"/packages/ui/src/hooks\",\n        ui: \"/packages/ui/src/components/ui\",\n      },\n    })\n\n    vi.mocked(getWorkspaceConfig).mockResolvedValue({\n      ui: uiConfig,\n    })\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"button\",\n      files: [\n        {\n          path: \"registry/ui/button.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Button() {}\",\n        },\n      ],\n      fonts: [\n        {\n          name: \"font-inter\",\n          type: \"registry:font\",\n          title: \"Inter\",\n          font: {\n            provider: \"google\",\n            import: \"Inter\",\n            family: \"Inter, sans-serif\",\n            variable: \"--font-sans\",\n            weight: [\"400\", \"500\", \"600\", \"700\"],\n            subsets: [\"latin\"],\n          },\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    vi.mocked(findPackageRoot).mockResolvedValue(\"/packages/ui\")\n\n    await addComponents([\"button\"], appConfig, { silent: true })\n\n    // updateFonts should use the app config (layout lives in the app).\n    expect(updateFonts).toHaveBeenCalledWith(\n      expect.any(Array),\n      appConfig,\n      expect.any(Object)\n    )\n\n    // Verify it was NOT called with the workspace UI config.\n    expect(updateFonts).not.toHaveBeenCalledWith(\n      expect.anything(),\n      uiConfig,\n      expect.anything()\n    )\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/add-registries.test.ts",
    "content": "import { describe, expect, it } from \"vitest\"\n\nimport { parseRegistryArg } from \"../../src/commands/registry/add\"\n\ndescribe(\"parseRegistryArg\", () => {\n  it(\"should parse namespace without URL\", () => {\n    expect(parseRegistryArg(\"@magicui\")).toEqual({ namespace: \"@magicui\" })\n    expect(parseRegistryArg(\"@aceternity\")).toEqual({ namespace: \"@aceternity\" })\n  })\n\n  it(\"should parse namespace with URL\", () => {\n    expect(\n      parseRegistryArg(\"@mycompany=https://example.com/r/{name}.json\")\n    ).toEqual({\n      namespace: \"@mycompany\",\n      url: \"https://example.com/r/{name}.json\",\n    })\n  })\n\n  it(\"should handle URL with query params containing =\", () => {\n    expect(\n      parseRegistryArg(\"@foo=https://example.com/r/{name}.json?token=abc\")\n    ).toEqual({\n      namespace: \"@foo\",\n      url: \"https://example.com/r/{name}.json?token=abc\",\n    })\n  })\n\n  it(\"should handle URL with multiple = in query params\", () => {\n    expect(\n      parseRegistryArg(\n        \"@bar=https://example.com/r/{name}.json?token=abc&key=xyz\"\n      )\n    ).toEqual({\n      namespace: \"@bar\",\n      url: \"https://example.com/r/{name}.json?token=abc&key=xyz\",\n    })\n  })\n\n  it(\"should handle URL with port number\", () => {\n    expect(\n      parseRegistryArg(\"@local=http://localhost:8080/r/{name}.json\")\n    ).toEqual({\n      namespace: \"@local\",\n      url: \"http://localhost:8080/r/{name}.json\",\n    })\n  })\n\n  it(\"should throw for namespace without @\", () => {\n    expect(() => parseRegistryArg(\"foo\")).toThrow(\"must start with @\")\n    expect(() => parseRegistryArg(\"magicui\")).toThrow(\"must start with @\")\n    expect(() =>\n      parseRegistryArg(\"mycompany=https://example.com/r/{name}.json\")\n    ).toThrow(\"must start with @\")\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/apply-color-mapping.test.ts",
    "content": "import { describe, expect, test } from \"vitest\"\n\nimport {\n  applyColorMapping,\n  splitClassName,\n} from \"../../src/utils/transformers/transform-css-vars\"\nimport baseColor from \"../fixtures/colors/slate.json\"\n\ndescribe(\"split className\", () => {\n  test.each([\n    {\n      input: \"bg-popover\",\n      output: [null, \"bg-popover\", null],\n    },\n    {\n      input: \"bg-popover/50\",\n      output: [null, \"bg-popover\", \"50\"],\n    },\n    {\n      input: \"hover:bg-popover/50\",\n      output: [\"hover\", \"bg-popover\", \"50\"],\n    },\n    {\n      input: \"hover:bg-popover\",\n      output: [\"hover\", \"bg-popover\", null],\n    },\n    {\n      input: \"[&_[cmdk-group-heading]]:px-2\",\n      output: [\"[&_[cmdk-group-heading]]\", \"px-2\", null],\n    },\n    {\n      input: \"[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0\",\n      output: [\"[&_[cmdk-group]:not([hidden])_~[cmdk-group]]\", \"pt-0\", null],\n    },\n    {\n      input: \"[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:bg-red-200\",\n      output: [\n        \"[&_[cmdk-group]:not([hidden])_~[cmdk-group]]\",\n        \"bg-red-200\",\n        null,\n      ],\n    },\n    {\n      input: \"sm:focus:text-accent-foreground/30\",\n      output: [\"sm:focus\", \"text-accent-foreground\", \"30\"],\n    },\n  ])(`splitClassName($input) -> $output`, ({ input, output }) => {\n    expect(splitClassName(input)).toStrictEqual(output)\n  })\n})\n\ndescribe(\"apply color mapping\", async () => {\n  test.each([\n    {\n      input: \"bg-background text-foreground\",\n      output: \"bg-white text-slate-950 dark:bg-slate-950 dark:text-slate-50\",\n    },\n    {\n      input: \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n      output:\n        \"rounded-lg border border-slate-200 bg-white text-slate-950 shadow-sm dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50\",\n    },\n    {\n      input:\n        \"text-destructive border-destructive/50 dark:border-destructive [&>svg]:text-destructive text-destructive\",\n      output:\n        \"text-red-500 border-red-500/50 dark:border-red-500 [&>svg]:text-red-500 dark:text-red-900 dark:border-red-900/50 dark:dark:border-red-900 dark:[&>svg]:text-red-900\",\n    },\n    {\n      input:\n        \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n      output:\n        \"flex h-full w-full items-center justify-center rounded-full bg-slate-100 dark:bg-slate-800\",\n    },\n    {\n      input:\n        \"absolute right-4 top-4 bg-primary rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\",\n      output:\n        \"absolute right-4 top-4 bg-slate-900 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-slate-100 dark:bg-slate-50 dark:ring-offset-slate-950 dark:focus:ring-slate-800 dark:data-[state=open]:bg-slate-800\",\n    },\n  ])(`applyColorMapping($input) -> $output`, ({ input, output }) => {\n    expect(applyColorMapping(input, baseColor.inlineColors)).toBe(output)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/apply-prefix.test.ts",
    "content": "import { describe, expect, test } from \"vitest\"\n\nimport { applyPrefix } from \"../../src/utils/transformers/transform-tw-prefix\"\n\ndescribe(\"apply tailwind prefix v3\", () => {\n  test.each([\n    {\n      input: \"bg-slate-800 text-gray-500\",\n      output: \"tw-bg-slate-800 tw-text-gray-500\",\n    },\n    {\n      input: \"hover:dark:bg-background dark:text-foreground\",\n      output: \"hover:dark:tw-bg-background dark:tw-text-foreground\",\n    },\n    {\n      input:\n        \"rounded-lg border border-slate-200 bg-white text-slate-950 shadow-sm dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50\",\n      output:\n        \"tw-rounded-lg tw-border tw-border-slate-200 tw-bg-white tw-text-slate-950 tw-shadow-sm dark:tw-border-slate-800 dark:tw-bg-slate-950 dark:tw-text-slate-50\",\n    },\n    {\n      input:\n        \"text-red-500 border-red-500/50 dark:border-red-500 [&>svg]:text-red-500 text-red-500 dark:text-red-900 dark:border-red-900/50 dark:dark:border-red-900 dark:[&>svg]:text-red-900 dark:text-red-900\",\n      output:\n        \"tw-text-red-500 tw-border-red-500/50 dark:tw-border-red-500 [&>svg]:tw-text-red-500 tw-text-red-500 dark:tw-text-red-900 dark:tw-border-red-900/50 dark:dark:tw-border-red-900 dark:[&>svg]:tw-text-red-900 dark:tw-text-red-900\",\n    },\n    {\n      input:\n        \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n      output:\n        \"tw-flex tw-h-full tw-w-full tw-items-center tw-justify-center tw-rounded-full tw-bg-muted\",\n    },\n    {\n      input:\n        \"absolute right-4 top-4 bg-primary rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\",\n      output:\n        \"tw-absolute tw-right-4 tw-top-4 tw-bg-primary tw-rounded-sm tw-opacity-70 tw-ring-offset-background tw-transition-opacity hover:tw-opacity-100 focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-ring focus:tw-ring-offset-2 disabled:tw-pointer-events-none data-[state=open]:tw-bg-secondary\",\n    },\n  ])(`applyTwPrefix($input) -> $output`, ({ input, output }) => {\n    expect(applyPrefix(input, \"tw-\", \"v3\")).toBe(output)\n  })\n})\n\ndescribe(\"apply tailwind prefix v4\", () => {\n  test.each([\n    {\n      input: \"bg-slate-800 text-gray-500\",\n      output: \"tw:bg-slate-800 tw:text-gray-500\",\n    },\n    {\n      input: \"hover:dark:bg-background dark:text-foreground\",\n      output: \"tw:hover:dark:bg-background tw:dark:text-foreground\",\n    },\n    {\n      input:\n        \"rounded-lg border border-slate-200 bg-white text-slate-950 shadow-sm dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50\",\n      output:\n        \"tw:rounded-lg tw:border tw:border-slate-200 tw:bg-white tw:text-slate-950 tw:shadow-sm tw:dark:border-slate-800 tw:dark:bg-slate-950 tw:dark:text-slate-50\",\n    },\n    {\n      input:\n        \"text-red-500 border-red-500/50 dark:border-red-500 [&>svg]:text-red-500 text-red-500 dark:text-red-900 dark:border-red-900/50 dark:dark:border-red-900 dark:[&>svg]:text-red-900 dark:text-red-900\",\n      output:\n        \"tw:text-red-500 tw:border-red-500/50 tw:dark:border-red-500 tw:[&>svg]:text-red-500 tw:text-red-500 tw:dark:text-red-900 tw:dark:border-red-900/50 tw:dark:dark:border-red-900 tw:dark:[&>svg]:text-red-900 tw:dark:text-red-900\",\n    },\n    {\n      input:\n        \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n      output:\n        \"tw:flex tw:h-full tw:w-full tw:items-center tw:justify-center tw:rounded-full tw:bg-muted\",\n    },\n    {\n      input:\n        \"absolute right-4 top-4 bg-primary rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\",\n      output:\n        \"tw:absolute tw:right-4 tw:top-4 tw:bg-primary tw:rounded-sm tw:opacity-70 tw:ring-offset-background tw:transition-opacity tw:hover:opacity-100 tw:focus:outline-none tw:focus:ring-2 tw:focus:ring-ring tw:focus:ring-offset-2 tw:disabled:pointer-events-none tw:data-[state=open]:bg-secondary\",\n    },\n  ])(`applyTwPrefix($input) -> $output`, ({ input, output }) => {\n    expect(applyPrefix(input, \"tw\", \"v4\")).toBe(output)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/dry-run.test.ts",
    "content": "import { afterEach, describe, expect, test, vi } from \"vitest\"\n\nimport type { Config } from \"../../src/utils/get-config\"\n\n// Mock external dependencies.\nvi.mock(\"../../src/registry/resolver\", () => ({\n  resolveRegistryTree: vi.fn(),\n}))\n\nvi.mock(\"../../src/registry/api\", () => ({\n  getRegistryBaseColor: vi.fn().mockResolvedValue(undefined),\n}))\n\nvi.mock(\"../../src/utils/get-project-info\", () => ({\n  getProjectInfo: vi.fn().mockResolvedValue({\n    framework: { name: \"next-app\" },\n    isSrcDir: false,\n    isRSC: true,\n    isTsx: true,\n    tailwindConfigFile: null,\n    tailwindCssFile: null,\n    tailwindVersion: \"v4\",\n    frameworkVersion: \"15.0.0\",\n    aliasPrefix: \"@\",\n  }),\n}))\n\nvi.mock(\"../../src/utils/transformers\", () => ({\n  transform: vi.fn().mockImplementation((opts) => opts.raw),\n}))\n\nvi.mock(\"../../src/utils/transformers/transform-import\", () => ({\n  transformImport: vi.fn(),\n}))\nvi.mock(\"../../src/utils/transformers/transform-rsc\", () => ({\n  transformRsc: vi.fn(),\n}))\nvi.mock(\"../../src/utils/transformers/transform-css-vars\", () => ({\n  transformCssVars: vi.fn(),\n}))\nvi.mock(\"../../src/utils/transformers/transform-tw-prefix\", () => ({\n  transformTwPrefixes: vi.fn(),\n}))\nvi.mock(\"../../src/utils/transformers/transform-icons\", () => ({\n  transformIcons: vi.fn(),\n}))\nvi.mock(\"../../src/utils/transformers/transform-menu\", () => ({\n  transformMenu: vi.fn(),\n}))\nvi.mock(\"../../src/utils/transformers/transform-aschild\", () => ({\n  transformAsChild: vi.fn(),\n}))\nvi.mock(\"../../src/utils/transformers/transform-rtl\", () => ({\n  transformRtl: vi.fn(),\n}))\nvi.mock(\"../../src/utils/transformers/transform-cleanup\", () => ({\n  transformCleanup: vi.fn(),\n}))\n\nvi.mock(\"../../src/utils/updaters/update-css\", () => ({\n  transformCss: vi\n    .fn()\n    .mockImplementation((input, _css) => `${input}\\n/* css added */`),\n}))\n\nvi.mock(\"../../src/utils/updaters/update-css-vars\", () => ({\n  transformCssVars: vi\n    .fn()\n    .mockImplementation(\n      (input, _cssVars, _config, _options) => `${input}\\n/* css vars added */`\n    ),\n}))\n\nvi.mock(\"../../src/utils/updaters/update-fonts\", () => ({\n  massageTreeForFonts: vi.fn().mockImplementation((tree) => tree),\n}))\n\nvi.mock(\"fs\", async () => {\n  const actual = (await vi.importActual(\"fs\")) as any\n  return {\n    ...actual,\n    existsSync: vi.fn().mockReturnValue(false),\n    promises: {\n      ...actual.promises,\n      readFile: vi.fn().mockResolvedValue(\"\"),\n    },\n  }\n})\n\nimport { dryRunComponents } from \"../../src/utils/dry-run\"\nimport {\n  formatDryRunResult,\n  resolveFilterPath,\n} from \"../../src/utils/dry-run-formatter\"\nimport type { DryRunResult } from \"../../src/utils/dry-run\"\nimport { resolveRegistryTree } from \"../../src/registry/resolver\"\n\nafterEach(() => {\n  vi.clearAllMocks()\n})\n\nfunction createMockConfig(overrides: Partial<Config> = {}): Config {\n  return {\n    $schema: \"https://ui.shadcn.com/schema.json\",\n    style: \"new-york\",\n    rsc: true,\n    tsx: true,\n    tailwind: {\n      css: \"app/globals.css\",\n      baseColor: \"zinc\",\n      cssVariables: true,\n    },\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n      ui: \"@/components/ui\",\n      lib: \"@/lib\",\n      hooks: \"@/hooks\",\n    },\n    resolvedPaths: {\n      cwd: \"/apps/web\",\n      tailwindConfig: \"/apps/web/tailwind.config.ts\",\n      tailwindCss: \"/apps/web/app/globals.css\",\n      utils: \"/apps/web/lib/utils\",\n      components: \"/apps/web/components\",\n      lib: \"/apps/web/lib\",\n      hooks: \"/apps/web/hooks\",\n      ui: \"/apps/web/components/ui\",\n    },\n    ...overrides,\n  } as Config\n}\n\ndescribe(\"dryRunComponents\", () => {\n  test(\"should return basic component dry-run result\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"button\",\n      files: [\n        {\n          path: \"registry/ui/button.tsx\",\n          type: \"registry:ui\",\n          content: 'export function Button() { return <button>Click</button> }',\n        },\n      ],\n      dependencies: [\"class-variance-authority\"],\n      devDependencies: [],\n    })\n\n    const result = await dryRunComponents([\"button\"], config)\n\n    expect(result.files).toHaveLength(1)\n    expect(result.files[0]).toMatchObject({\n      path: \"components/ui/button.tsx\",\n      action: \"create\",\n      type: \"registry:ui\",\n    })\n    expect(result.files[0].content).toBeTruthy()\n    expect(result.dependencies).toEqual([\"class-variance-authority\"])\n    expect(result.devDependencies).toEqual([])\n  })\n\n  test(\"should handle multiple files (ui + hook + lib)\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"sidebar\",\n      files: [\n        {\n          path: \"registry/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Sidebar() {}\",\n        },\n        {\n          path: \"registry/hooks/use-mobile.ts\",\n          type: \"registry:hook\",\n          content: \"export function useMobile() {}\",\n        },\n        {\n          path: \"registry/lib/utils.ts\",\n          type: \"registry:lib\",\n          content: \"export function cn() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n    })\n\n    const result = await dryRunComponents([\"sidebar\"], config)\n\n    expect(result.files).toHaveLength(3)\n    expect(result.files[0]).toMatchObject({\n      type: \"registry:ui\",\n      action: \"create\",\n    })\n    expect(result.files[1]).toMatchObject({\n      type: \"registry:hook\",\n      action: \"create\",\n    })\n    expect(result.files[2]).toMatchObject({\n      type: \"registry:lib\",\n      action: \"create\",\n    })\n  })\n\n  test(\"should include CSS output when tree has cssVars and css\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"button\",\n      files: [\n        {\n          path: \"registry/ui/button.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Button() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n      cssVars: {\n        light: { background: \"0 0% 100%\" },\n        dark: { background: \"0 0% 0%\" },\n      },\n      css: {\n        \"@layer base\": {\n          body: {\n            \"@apply bg-background text-foreground\": {},\n          },\n        },\n      },\n    })\n\n    const result = await dryRunComponents([\"button\"], config)\n\n    expect(result.css).not.toBeNull()\n    expect(result.css!.path).toBe(\"app/globals.css\")\n    expect(result.css!.content).toContain(\"css vars added\")\n    expect(result.css!.content).toContain(\"css added\")\n    expect(result.css!.cssVarsCount).toBe(2)\n  })\n\n  test(\"should include env vars in output\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"some-component\",\n      files: [\n        {\n          path: \"registry/ui/some-component.tsx\",\n          type: \"registry:ui\",\n          content: \"export function SomeComponent() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n      envVars: {\n        API_KEY: \"your-api-key\",\n        SECRET: \"your-secret\",\n      },\n    })\n\n    const result = await dryRunComponents([\"some-component\"], config)\n\n    expect(result.envVars).not.toBeNull()\n    expect(result.envVars!.path).toBe(\".env.local\")\n    expect(result.envVars!.variables).toEqual({\n      API_KEY: \"your-api-key\",\n      SECRET: \"your-secret\",\n    })\n    expect(result.envVars!.action).toBe(\"create\")\n  })\n\n  test(\"should pass through dependencies and devDependencies\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"chart\",\n      files: [\n        {\n          path: \"registry/ui/chart.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Chart() {}\",\n        },\n      ],\n      dependencies: [\"recharts\", \"lucide-react\"],\n      devDependencies: [\"@types/recharts\"],\n    })\n\n    const result = await dryRunComponents([\"chart\"], config)\n\n    expect(result.dependencies).toEqual([\"recharts\", \"lucide-react\"])\n    expect(result.devDependencies).toEqual([\"@types/recharts\"])\n  })\n\n  test(\"should return empty result for no components\", async () => {\n    const config = createMockConfig()\n\n    const result = await dryRunComponents([], config)\n\n    expect(result.files).toEqual([])\n    expect(result.dependencies).toEqual([])\n    expect(result.devDependencies).toEqual([])\n    expect(result.css).toBeNull()\n    expect(result.envVars).toBeNull()\n    expect(result.fonts).toEqual([])\n    expect(result.docs).toBeNull()\n  })\n\n  test(\"should include docs when present\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"button\",\n      files: [\n        {\n          path: \"registry/ui/button.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Button() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n      docs: \"Read more at https://ui.shadcn.com/docs/components/button\",\n    })\n\n    const result = await dryRunComponents([\"button\"], config)\n\n    expect(result.docs).toBe(\n      \"Read more at https://ui.shadcn.com/docs/components/button\"\n    )\n  })\n\n  test(\"should collect font metadata\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"button\",\n      files: [\n        {\n          path: \"registry/ui/button.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Button() {}\",\n        },\n      ],\n      dependencies: [],\n      devDependencies: [],\n      fonts: [\n        {\n          name: \"font-inter\",\n          type: \"registry:font\" as const,\n          title: \"Inter\",\n          font: {\n            provider: \"google\" as const,\n            import: \"Inter\",\n            family: \"Inter, sans-serif\",\n            variable: \"--font-sans\",\n            weight: [\"400\", \"500\", \"600\", \"700\"],\n            subsets: [\"latin\"],\n          },\n        },\n      ],\n    })\n\n    const result = await dryRunComponents([\"button\"], config)\n\n    expect(result.fonts).toHaveLength(1)\n    expect(result.fonts[0]).toEqual({\n      name: \"Inter, sans-serif\",\n      provider: \"Google Fonts\",\n    })\n  })\n\n  test(\"should deduplicate dependencies\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue({\n      name: \"sidebar\",\n      files: [\n        {\n          path: \"registry/ui/sidebar.tsx\",\n          type: \"registry:ui\",\n          content: \"export function Sidebar() {}\",\n        },\n      ],\n      dependencies: [\n        \"@base-ui/react\",\n        \"lucide-react\",\n        \"@base-ui/react\",\n        \"lucide-react\",\n        \"@base-ui/react\",\n      ],\n      devDependencies: [\"@types/node\", \"@types/node\"],\n    })\n\n    const result = await dryRunComponents([\"sidebar\"], config)\n\n    expect(result.dependencies).toEqual([\"@base-ui/react\", \"lucide-react\"])\n    expect(result.devDependencies).toEqual([\"@types/node\"])\n  })\n\n  test(\"should throw when registry tree resolution fails\", async () => {\n    const config = createMockConfig()\n\n    vi.mocked(resolveRegistryTree).mockResolvedValue(undefined as any)\n\n    await expect(\n      dryRunComponents([\"nonexistent\"], config)\n    ).rejects.toThrow(\"Failed to fetch components from registry.\")\n  })\n})\n\ndescribe(\"formatDryRunResult\", () => {\n  function createResult(overrides: Partial<DryRunResult> = {}): DryRunResult {\n    return {\n      files: [],\n      dependencies: [],\n      devDependencies: [],\n      css: null,\n      envVars: null,\n      fonts: [],\n      docs: null,\n      ...overrides,\n    }\n  }\n\n  test(\"should format a simple component\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"])\n\n    expect(output).toContain(\"shadcn add button\")\n    expect(output).toContain(\"(dry run)\")\n    expect(output).toContain(\"Files\")\n    expect(output).toContain(\"(1)\")\n    expect(output).toContain(\"components/ui/button.tsx\")\n    expect(output).toContain(\"create\")\n    expect(output).toContain(\"Run without --dry-run to apply.\")\n    // Should not contain overwrite warnings.\n    expect(output).not.toContain(\"overwritten\")\n  })\n\n  test(\"should show dependencies section when present\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n      dependencies: [\"class-variance-authority\", \"@radix-ui/react-slot\"],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"])\n\n    expect(output).toContain(\"Dependencies\")\n    expect(output).toContain(\"(2)\")\n    expect(output).toContain(\"class-variance-authority\")\n    expect(output).toContain(\"@radix-ui/react-slot\")\n  })\n\n  test(\"should hide empty sections\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"])\n\n    expect(output).not.toContain(\"Dependencies\")\n    expect(output).not.toContain(\"Dev Dependencies\")\n    expect(output).not.toContain(\"CSS\")\n    expect(output).not.toContain(\"Environment Variables\")\n    expect(output).not.toContain(\"Fonts\")\n  })\n\n  test(\"should show overwrite warning and diff hint\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n        {\n          path: \"components/ui/table.tsx\",\n          action: \"overwrite\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"dashboard\"])\n\n    expect(output).toContain(\"1 file will be overwritten\")\n    expect(output).toContain(\"--diff\")\n  })\n\n  test(\"should list all files without truncation\", () => {\n    const files = Array.from({ length: 12 }, (_, i) => ({\n      path: `components/ui/file-${i}.tsx`,\n      action: \"create\" as const,\n      content: \"...\",\n      type: \"registry:ui\",\n    }))\n\n    const result = createResult({ files })\n    const output = formatDryRunResult(result, [\"dashboard\"])\n\n    expect(output).toContain(\"Files\")\n    expect(output).toContain(\"(12)\")\n    // All files should be listed.\n    expect(output).toContain(\"file-0.tsx\")\n    expect(output).toContain(\"file-5.tsx\")\n    expect(output).toContain(\"file-11.tsx\")\n  })\n\n  test(\"should format CSS section with variable count\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n      css: {\n        path: \"app/globals.css\",\n        content: \"...\",\n        action: \"update\",\n        cssVarsCount: 12,\n      },\n    })\n\n    const output = formatDryRunResult(result, [\"button\"])\n\n    expect(output).toContain(\"CSS\")\n    expect(output).toContain(\"12 CSS variables\")\n    expect(output).toContain(\"globals.css\")\n  })\n\n  test(\"should format env vars section\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/chat.tsx\",\n          action: \"create\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n      envVars: {\n        path: \".env.local\",\n        variables: { NEXT_PUBLIC_API_URL: \"...\", SECRET_KEY: \"...\" },\n        action: \"create\",\n      },\n    })\n\n    const output = formatDryRunResult(result, [\"chat\"])\n\n    expect(output).toContain(\"Environment Variables\")\n    expect(output).toContain(\"NEXT_PUBLIC_API_URL\")\n    expect(output).toContain(\"SECRET_KEY\")\n  })\n\n  test(\"should format fonts section\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n      fonts: [{ name: \"Inter\", provider: \"Google Fonts\" }],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"])\n\n    expect(output).toContain(\"Fonts\")\n    expect(output).toContain(\"Inter\")\n    expect(output).toContain(\"Google Fonts\")\n  })\n\n  test(\"should show multiple overwrite warning\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/a.tsx\",\n          action: \"overwrite\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n        {\n          path: \"components/ui/b.tsx\",\n          action: \"overwrite\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n        {\n          path: \"components/ui/c.tsx\",\n          action: \"overwrite\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"thing\"])\n\n    expect(output).toContain(\"3 files will be overwritten\")\n  })\n\n  test(\"should list all files with mixed actions\", () => {\n    const files = [\n      ...Array.from({ length: 6 }, (_, i) => ({\n        path: `components/ui/new-${i}.tsx`,\n        action: \"create\" as const,\n        content: \"...\",\n        type: \"registry:ui\",\n      })),\n      ...Array.from({ length: 4 }, (_, i) => ({\n        path: `components/ui/existing-${i}.tsx`,\n        action: \"overwrite\" as const,\n        content: \"...\",\n        type: \"registry:ui\",\n      })),\n    ]\n\n    const result = createResult({ files })\n    const output = formatDryRunResult(result, [\"dashboard\"])\n\n    expect(output).toContain(\"(10)\")\n    // All files should be listed.\n    expect(output).toContain(\"new-0.tsx\")\n    expect(output).toContain(\"new-5.tsx\")\n    expect(output).toContain(\"existing-0.tsx\")\n    expect(output).toContain(\"existing-3.tsx\")\n  })\n})\n\ndescribe(\"formatDryRunResult --diff\", () => {\n  function createResult(overrides: Partial<DryRunResult> = {}): DryRunResult {\n    return {\n      files: [],\n      dependencies: [],\n      devDependencies: [],\n      css: null,\n      envVars: null,\n      fonts: [],\n      docs: null,\n      ...overrides,\n    }\n  }\n\n  test(\"should show focused diff output with box-drawing borders\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: 'export function Button() { return <button>New</button> }',\n          existingContent:\n            'export function Button() { return <button>Old</button> }',\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], { diff: \"button\" })\n\n    expect(output).toContain(\"components/ui/button.tsx\")\n    expect(output).toContain(\"overwrite\")\n    expect(output).toContain(\"Old\")\n    expect(output).toContain(\"New\")\n    // Should not show summary sections.\n    expect(output).not.toContain(\"Files\")\n    expect(output).not.toContain(\"Dependencies\")\n  })\n\n  test(\"should show diff hint in dry-run summary\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: \"new content\",\n          existingContent: \"old content\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"])\n\n    expect(output).toContain(\"Run with --diff\")\n  })\n\n  test(\"should only show matched file\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: \"new button\",\n          existingContent: \"old button\",\n          type: \"registry:ui\",\n        },\n        {\n          path: \"components/ui/card.tsx\",\n          action: \"overwrite\",\n          content: \"new card\",\n          existingContent: \"old card\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"dashboard\"], {\n      diff: \"button\",\n    })\n\n    expect(output).toContain(\"button.tsx\")\n    // Should not show card at all — focused output.\n    expect(output).not.toContain(\"card.tsx\")\n  })\n\n  test(\"should show error when --diff path matches no files\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: \"new\",\n          existingContent: \"old\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"nonexistent\",\n    })\n\n    expect(output).toContain(\"No file matching\")\n    expect(output).toContain(\"nonexistent\")\n  })\n\n  test(\"should show new file content as additions\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"export function Button() {}\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    expect(output).toContain(\"create\")\n    expect(output).toContain(\"+export function Button() {}\")\n  })\n\n  test(\"should show no changes for skipped files\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"skip\",\n          content: \"same content\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    expect(output).toContain(\"No changes.\")\n  })\n\n  test(\"should show formatting-only message for whitespace/quote differences\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: 'import { cn } from \"@/lib/utils\";\\nexport function Button() {}',\n          existingContent: \"import { cn } from '@/lib/utils'\\nexport function Button() {}\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    expect(output).toContain(\"Formatting-only changes\")\n  })\n\n  test(\"should show real diff for non-formatting changes\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: 'export function Button() { return <button>New</button> }',\n          existingContent: 'export function Button() { return <button>Old</button> }',\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    expect(output).toContain(\"---\")\n    expect(output).toContain(\"+++\")\n    expect(output).toContain(\"@@\")\n  })\n\n  test(\"should show CSS diff when path matches CSS file\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"...\",\n          type: \"registry:ui\",\n        },\n      ],\n      css: {\n        path: \"app/globals.css\",\n        content: \"@theme {\\n  --color-primary: red;\\n}\\n\",\n        existingContent: \"@theme {\\n}\\n\",\n        action: \"update\",\n        cssVarsCount: 1,\n      },\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"globals.css\",\n    })\n\n    expect(output).toContain(\"globals.css\")\n    expect(output).toContain(\"update\")\n    expect(output).toContain(\"--color-primary\")\n  })\n\n  test(\"should detect multi-line to single-line reformatting as formatting-only\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: [\n            'const buttonVariants = cva(\"inline-flex\", {',\n            \"  variants: {\",\n            '    size: {',\n            '      default: \"h-8 gap-1.5 px-2.5 has-[>svg]:px-1.5\",',\n            \"    },\",\n            \"  },\",\n            \"})\",\n          ].join(\"\\n\"),\n          existingContent: [\n            'const buttonVariants = cva(\"inline-flex\", {',\n            \"  variants: {\",\n            \"    size: {\",\n            \"      default:\",\n            '        \"h-8 gap-1.5 px-2.5 has-[>svg]:px-1.5\",',\n            \"    },\",\n            \"  },\",\n            \"})\",\n          ].join(\"\\n\"),\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    // Multi-line to single-line wrapping should not show as red/green diff.\n    expect(output).not.toContain(\"-      default:\")\n    expect(output).not.toContain('+      default: \"h-8')\n  })\n\n  test(\"should suppress multi-line to single-line reformatting but show real change in same hunk\", () => {\n    // Simulates cva variant values going from multi-line to single-line,\n    // with one actual content change (size-10 → size-9).\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: [\n            \"  variants: {\",\n            \"    variant: {\",\n            '      outline: \"border-border bg-background hover:bg-muted\",',\n            '      secondary: \"bg-secondary text-secondary-foreground\",',\n            '      ghost: \"hover:bg-muted hover:text-foreground\",',\n            \"    },\",\n            \"    size: {\",\n            '      default: \"h-8 gap-1.5 px-2.5\",',\n            '      lg: \"h-9 gap-1.5 px-2.5\",',\n            '      icon: \"size-8\",',\n            '      \"icon-lg\": \"size-9\",',\n            \"    },\",\n            \"  },\",\n          ].join(\"\\n\"),\n          existingContent: [\n            \"  variants: {\",\n            \"    variant: {\",\n            \"      outline:\",\n            '        \"border-border bg-background hover:bg-muted\",',\n            \"      secondary:\",\n            '        \"bg-secondary text-secondary-foreground\",',\n            \"      ghost:\",\n            '        \"hover:bg-muted hover:text-foreground\",',\n            \"    },\",\n            \"    size: {\",\n            \"      default:\",\n            '        \"h-8 gap-1.5 px-2.5\",',\n            \"      lg:\",\n            '        \"h-9 gap-1.5 px-2.5\",',\n            \"      icon:\",\n            '        \"size-8\",',\n            '      \"icon-lg\": \"size-10\",',\n            \"    },\",\n            \"  },\",\n          ].join(\"\\n\"),\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    // Multi-line to single-line reformatting should be suppressed.\n    expect(output).not.toContain(\"-      outline:\")\n    expect(output).not.toContain(\"-      secondary:\")\n    expect(output).not.toContain(\"-      ghost:\")\n    expect(output).not.toContain(\"-      default:\")\n    expect(output).not.toContain(\"-      lg:\")\n    expect(output).not.toContain(\"-      icon:\")\n    // Real change should show.\n    expect(output).toContain(\"size-10\")\n    expect(output).toContain(\"size-9\")\n  })\n\n  test(\"should detect semicolon-only differences as formatting-only\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: 'import { cn } from \"@/lib/utils\";\\nexport function Button() {};',\n          existingContent: 'import { cn } from \"@/lib/utils\"\\nexport function Button() {}',\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    expect(output).toContain(\"Formatting-only changes\")\n  })\n\n  test(\"should skip quote-only line changes but show real changes in same group\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: [\n            '        lg: \"h-9 gap-1.5 px-2.5\",',\n            '        icon: \"size-8\",',\n            '        \"icon-sm\": \"size-7\",',\n            '        \"icon-lg\": \"size-9\",',\n          ].join(\"\\n\"),\n          existingContent: [\n            \"        lg: 'h-9 gap-1.5 px-2.5',\",\n            \"        icon: 'size-8',\",\n            \"        'icon-sm': 'size-7',\",\n            \"        'icon-lg': 'size-10',\",\n          ].join(\"\\n\"),\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    // Quote-only changes should NOT appear as red/green diff lines.\n    expect(output).not.toContain(\"-        lg:\")\n    expect(output).not.toContain(\"-        icon:\")\n    expect(output).not.toContain('-        \\'icon-sm\\'')\n    // Real change (size-10 -> size-9) SHOULD appear as a diff.\n    expect(output).toContain(\"size-10\")\n    expect(output).toContain(\"size-9\")\n  })\n\n  test(\"should show correct hunk header when formatting changes are mixed with real changes\", () => {\n    // 5 lines old, 5 lines new — only line 5 has a real change.\n    // Hunk header should reflect same line count, not show line removal.\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: [\n            'import { cn } from \"@/lib/utils\"',\n            \"\",\n            'const a = \"hello\"',\n            'const b = \"world\"',\n            'const c = \"new-value\"',\n          ].join(\"\\n\"),\n          existingContent: [\n            \"import { cn } from '@/lib/utils'\",\n            \"\",\n            \"const a = 'hello'\",\n            \"const b = 'world'\",\n            \"const c = 'old-value'\",\n          ].join(\"\\n\"),\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    // Hunk header should show equal old/new line counts since no lines were added/removed.\n    expect(output).toMatch(/@@ -\\d+,(\\d+) \\+\\d+,\\1 @@/)\n    // Real change should show.\n    expect(output).toContain(\"old-value\")\n    expect(output).toContain(\"new-value\")\n  })\n\n  test(\"should suppress formatting-only hunks entirely\", () => {\n    // All changes are quote-only — no hunk should be emitted.\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: 'const a = \"hello\"\\nconst b = \"world\"',\n          existingContent: \"const a = 'hello'\\nconst b = 'world'\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    expect(output).toContain(\"Formatting-only changes\")\n    expect(output).not.toContain(\"@@\")\n  })\n\n  test(\"should suppress formatting-only hunk but show real-change hunk with correct position\", () => {\n    // Two hunks separated by enough context:\n    // - Hunk 1 (top): quote-only changes → suppressed.\n    // - Hunk 2 (bottom): real change → shown with correct line number.\n    const oldLines = [\n      \"import { cn } from '@/lib/utils'\",   // line 1: quote diff.\n      \"\",                                     // line 2.\n      \"const a = 'hello'\",                   // line 3: quote diff.\n      \"\",                                     // line 4.\n      \"// spacer 1\",                          // line 5.\n      \"// spacer 2\",                          // line 6.\n      \"// spacer 3\",                          // line 7.\n      \"// spacer 4\",                          // line 8.\n      \"// spacer 5\",                          // line 9.\n      \"// spacer 6\",                          // line 10.\n      \"// spacer 7\",                          // line 11.\n      \"\",                                     // line 12.\n      \"const c = 'old-value'\",               // line 13: real change.\n    ]\n    const newLines = [\n      'import { cn } from \"@/lib/utils\"',    // line 1: quote diff.\n      \"\",                                     // line 2.\n      'const a = \"hello\"',                   // line 3: quote diff.\n      \"\",                                     // line 4.\n      \"// spacer 1\",                          // line 5.\n      \"// spacer 2\",                          // line 6.\n      \"// spacer 3\",                          // line 7.\n      \"// spacer 4\",                          // line 8.\n      \"// spacer 5\",                          // line 9.\n      \"// spacer 6\",                          // line 10.\n      \"// spacer 7\",                          // line 11.\n      \"\",                                     // line 12.\n      'const c = \"new-value\"',               // line 13: real change.\n    ]\n\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: newLines.join(\"\\n\"),\n          existingContent: oldLines.join(\"\\n\"),\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    // Only one @@ header should appear (the real change hunk).\n    const hunkHeaders = output.match(/@@ .* @@/g) ?? []\n    expect(hunkHeaders).toHaveLength(1)\n    // The hunk should reference line 13 area, not line 1.\n    expect(output).toContain(\"+10,\")\n    // Real change should show.\n    expect(output).toContain(\"old-value\")\n    expect(output).toContain(\"new-value\")\n    // Quote-only changes should NOT show.\n    expect(output).not.toContain(\"@/lib/utils\")\n  })\n\n  test(\"should show semicolons mixed with real changes correctly\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/input.tsx\",\n          action: \"overwrite\",\n          content: [\n            'import { cn } from \"@/lib/utils\";',\n            'const a = \"hello\";',\n            'const b = \"changed\";',\n          ].join(\"\\n\"),\n          existingContent: [\n            'import { cn } from \"@/lib/utils\"',\n            'const a = \"hello\"',\n            'const b = \"original\"',\n          ].join(\"\\n\"),\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"input\",\n    })\n\n    // Semicolon-only lines should not show as diffs.\n    expect(output).not.toContain('-import { cn }')\n    expect(output).not.toContain('-const a')\n    // Real change should show.\n    expect(output).toContain(\"original\")\n    expect(output).toContain(\"changed\")\n  })\n\n  test(\"should display actual file content not normalized content\", () => {\n    // The diff should show the real double-quoted new content, not the\n    // internal normalized version used for comparison.\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: 'const color = \"red\";\\nconst size = \"new-size\";',\n          existingContent: \"const color = 'red'\\nconst size = 'old-size'\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    // Context line should use the actual new file content (double quotes + semicolon).\n    expect(output).toContain('\"red\"')\n    // Changed line should show actual content.\n    expect(output).toContain('\"new-size\"')\n  })\n\n  test(\"should skip whitespace-only line changes in diff\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"overwrite\",\n          content: \"line1\\nconst x = 1\\nline3\",\n          existingContent: \"line1\\nconst x =  1\\nline3\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"button\",\n    })\n\n    // Whitespace-only change should be shown as context, not as red/green diff.\n    expect(output).not.toContain(\"-const x\")\n    expect(output).not.toContain(\"+const x\")\n  })\n\n  test(\"should show CSS diff with full context showing existing vars\", () => {\n    const existingCss = [\n      \"@theme {\",\n      \"  --color-background: white;\",\n      \"  --color-foreground: black;\",\n      \"}\",\n    ].join(\"\\n\")\n    const newCss = [\n      \"@theme {\",\n      \"  --color-background: white;\",\n      \"  --color-foreground: black;\",\n      \"  --color-primary: red;\",\n      \"}\",\n    ].join(\"\\n\")\n\n    const result = createResult({\n      css: {\n        path: \"app/globals.css\",\n        content: newCss,\n        existingContent: existingCss,\n        action: \"update\",\n        cssVarsCount: 1,\n      },\n    })\n\n    const output = formatDryRunResult(result, [\"alert\"], {\n      diff: \"globals\",\n    })\n\n    // Should show existing vars as context.\n    expect(output).toContain(\"--color-background\")\n    expect(output).toContain(\"--color-foreground\")\n    // Should show new var as addition.\n    expect(output).toContain(\"--color-primary\")\n  })\n\n  test(\"should show new CSS file as all additions\", () => {\n    const result = createResult({\n      css: {\n        path: \"app/globals.css\",\n        content: \"@theme {\\n  --color-primary: red;\\n}\\n\",\n        action: \"create\",\n        cssVarsCount: 1,\n      },\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      diff: \"globals\",\n    })\n\n    expect(output).toContain(\"globals.css\")\n    expect(output).toContain(\"create\")\n    expect(output).toContain(\"+@theme\")\n  })\n\n  test(\"should match both file and CSS when filter is ambiguous\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/globals.tsx\",\n          action: \"create\",\n          content: \"export function Globals() {}\",\n          type: \"registry:ui\",\n        },\n      ],\n      css: {\n        path: \"app/globals.css\",\n        content: \"@theme { --primary: red; }\",\n        action: \"create\",\n        cssVarsCount: 1,\n      },\n    })\n\n    const output = formatDryRunResult(result, [\"thing\"], {\n      diff: \"globals\",\n    })\n\n    // Should show both the file and the CSS.\n    expect(output).toContain(\"globals.tsx\")\n    expect(output).toContain(\"globals.css\")\n  })\n})\n\ndescribe(\"formatDryRunResult --view\", () => {\n  function createResult(overrides: Partial<DryRunResult> = {}): DryRunResult {\n    return {\n      files: [],\n      dependencies: [],\n      devDependencies: [],\n      css: null,\n      envVars: null,\n      fonts: [],\n      docs: null,\n      ...overrides,\n    }\n  }\n\n  test(\"should show focused view with full content\", () => {\n    const content = Array.from({ length: 20 }, (_, i) => `line ${i + 1}`).join(\"\\n\")\n\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content,\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], { view: \"button\" })\n\n    expect(output).toContain(\"button.tsx\")\n    expect(output).toContain(\"create\")\n    expect(output).toContain(\"20 lines\")\n    expect(output).toContain(\"line 1\")\n    expect(output).toContain(\"line 20\")\n    // Should not show summary sections.\n    expect(output).not.toContain(\"Files\")\n    expect(output).not.toContain(\"Dependencies\")\n  })\n\n  test(\"should show all matched files with full content\", () => {\n    const content = Array.from({ length: 20 }, (_, i) => `line ${i + 1}`).join(\"\\n\")\n\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content,\n          type: \"registry:ui\",\n        },\n        {\n          path: \"components/ui/button-group.tsx\",\n          action: \"create\",\n          content,\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"dashboard\"], { view: \"button\" })\n\n    expect(output).toContain(\"button.tsx\")\n    expect(output).toContain(\"button-group.tsx\")\n    expect(output).toContain(\"line 1\")\n    expect(output).toContain(\"line 20\")\n  })\n\n  test(\"should show only matched file\", () => {\n    const buttonContent = Array.from({ length: 20 }, (_, i) => `button line ${i + 1}`).join(\"\\n\")\n    const cardContent = Array.from({ length: 20 }, (_, i) => `card line ${i + 1}`).join(\"\\n\")\n\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: buttonContent,\n          type: \"registry:ui\",\n        },\n        {\n          path: \"components/ui/card.tsx\",\n          action: \"create\",\n          content: cardContent,\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"dashboard\"], {\n      view: \"button.tsx\",\n    })\n\n    expect(output).toContain(\"button.tsx\")\n    expect(output).not.toContain(\"card.tsx\")\n    expect(output).toContain(\"button line 1\")\n    expect(output).toContain(\"button line 20\")\n  })\n\n  test(\"should show error when --view path matches no files\", () => {\n    const result = createResult({\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          action: \"create\",\n          content: \"content\",\n          type: \"registry:ui\",\n        },\n      ],\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      view: \"nonexistent\",\n    })\n\n    expect(output).toContain(\"No file matching\")\n    expect(output).toContain(\"nonexistent\")\n  })\n\n  test(\"should show CSS file content when path matches\", () => {\n    const cssContent = \"@theme {\\n  --color-primary: red;\\n}\"\n\n    const result = createResult({\n      css: {\n        path: \"app/globals.css\",\n        content: cssContent,\n        action: \"update\",\n        cssVarsCount: 1,\n      },\n    })\n\n    const output = formatDryRunResult(result, [\"button\"], {\n      view: \"globals\",\n    })\n\n    expect(output).toContain(\"globals.css\")\n    expect(output).toContain(\"update\")\n    expect(output).toContain(\"--color-primary\")\n  })\n})\n\ndescribe(\"resolveFilterPath\", () => {\n  const files = [\n    { path: \"components/ui/button.tsx\", action: \"create\" as const, content: \"\", type: \"registry:ui\" },\n    { path: \"components/ui/card.tsx\", action: \"create\" as const, content: \"\", type: \"registry:ui\" },\n    { path: \"hooks/use-mobile.ts\", action: \"create\" as const, content: \"\", type: \"registry:hook\" },\n  ]\n\n  test(\"should match exact path\", () => {\n    const result = resolveFilterPath(files, \"components/ui/button.tsx\")\n    expect(result).toHaveLength(1)\n    expect(result[0].path).toBe(\"components/ui/button.tsx\")\n  })\n\n  test(\"should match partial path (filename)\", () => {\n    const result = resolveFilterPath(files, \"button\")\n    expect(result).toHaveLength(1)\n    expect(result[0].path).toBe(\"components/ui/button.tsx\")\n  })\n\n  test(\"should match partial path (directory segment)\", () => {\n    const result = resolveFilterPath(files, \"ui/card\")\n    expect(result).toHaveLength(1)\n    expect(result[0].path).toBe(\"components/ui/card.tsx\")\n  })\n\n  test(\"should return multiple matches for ambiguous filter\", () => {\n    const result = resolveFilterPath(files, \"components/ui\")\n    expect(result).toHaveLength(2)\n  })\n\n  test(\"should return empty array when no match\", () => {\n    const result = resolveFilterPath(files, \"nonexistent\")\n    expect(result).toHaveLength(0)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/get-config.test.ts",
    "content": "import path from \"path\"\nimport { describe, expect, test } from \"vitest\"\n\nimport {\n  createConfig,\n  getBase,\n  getConfig,\n  getRawConfig,\n} from \"../../src/utils/get-config\"\n\ntest(\"get raw config\", async () => {\n  expect(\n    await getRawConfig(path.resolve(__dirname, \"../fixtures/config-none\"))\n  ).toEqual(null)\n\n  expect(\n    await getRawConfig(path.resolve(__dirname, \"../fixtures/config-partial\"))\n  ).toEqual({\n    style: \"default\",\n    tailwind: {\n      config: \"./tailwind.config.ts\",\n      css: \"./src/assets/css/tailwind.css\",\n      baseColor: \"neutral\",\n      cssVariables: false,\n    },\n    rsc: false,\n    tsx: true,\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n    },\n  })\n\n  await expect(\n    getRawConfig(path.resolve(__dirname, \"../fixtures/config-invalid\"))\n  ).rejects.toThrowError()\n})\n\ntest(\"get config\", async () => {\n  expect(\n    await getConfig(path.resolve(__dirname, \"../fixtures/config-none\"))\n  ).toEqual(null)\n\n  await expect(\n    getConfig(path.resolve(__dirname, \"../fixtures/config-invalid\"))\n  ).rejects.toThrowError()\n\n  expect(\n    await getConfig(path.resolve(__dirname, \"../fixtures/config-partial\"))\n  ).toEqual({\n    style: \"default\",\n    tailwind: {\n      config: \"./tailwind.config.ts\",\n      css: \"./src/assets/css/tailwind.css\",\n      baseColor: \"neutral\",\n      cssVariables: false,\n    },\n    rsc: false,\n    tsx: true,\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n    },\n    resolvedPaths: {\n      cwd: path.resolve(__dirname, \"../fixtures/config-partial\"),\n      tailwindConfig: path.resolve(\n        __dirname,\n        \"../fixtures/config-partial\",\n        \"tailwind.config.ts\"\n      ),\n      tailwindCss: path.resolve(\n        __dirname,\n        \"../fixtures/config-partial\",\n        \"./src/assets/css/tailwind.css\"\n      ),\n      components: path.resolve(\n        __dirname,\n        \"../fixtures/config-partial\",\n        \"./components\"\n      ),\n      utils: path.resolve(\n        __dirname,\n        \"../fixtures/config-partial\",\n        \"./lib/utils\"\n      ),\n      ui: path.resolve(\n        __dirname,\n        \"../fixtures/config-partial\",\n        \"./components/ui\"\n      ),\n      hooks: path.resolve(__dirname, \"../fixtures/config-partial\", \"./hooks\"),\n      lib: path.resolve(__dirname, \"../fixtures/config-partial\", \"./lib\"),\n    },\n    iconLibrary: \"lucide\",\n    registries: {\n      \"@shadcn\": \"https://ui.shadcn.com/r/styles/{style}/{name}.json\",\n    },\n  })\n\n  expect(\n    await getConfig(path.resolve(__dirname, \"../fixtures/config-full\"))\n  ).toEqual({\n    style: \"new-york\",\n    rsc: false,\n    tsx: true,\n    tailwind: {\n      config: \"tailwind.config.ts\",\n      baseColor: \"zinc\",\n      css: \"src/app/globals.css\",\n      cssVariables: true,\n      prefix: \"tw-\",\n    },\n    aliases: {\n      components: \"~/components\",\n      utils: \"~/lib/utils\",\n      lib: \"~/lib\",\n      hooks: \"~/lib/hooks\",\n      ui: \"~/ui\",\n    },\n    iconLibrary: \"lucide\",\n    resolvedPaths: {\n      cwd: path.resolve(__dirname, \"../fixtures/config-full\"),\n      tailwindConfig: path.resolve(\n        __dirname,\n        \"../fixtures/config-full\",\n        \"tailwind.config.ts\"\n      ),\n      tailwindCss: path.resolve(\n        __dirname,\n        \"../fixtures/config-full\",\n        \"./src/app/globals.css\"\n      ),\n      components: path.resolve(\n        __dirname,\n        \"../fixtures/config-full\",\n        \"./src/components\"\n      ),\n      ui: path.resolve(__dirname, \"../fixtures/config-full\", \"./src/ui\"),\n      hooks: path.resolve(\n        __dirname,\n        \"../fixtures/config-full\",\n        \"./src/lib/hooks\"\n      ),\n      lib: path.resolve(__dirname, \"../fixtures/config-full\", \"./src/lib\"),\n      utils: path.resolve(\n        __dirname,\n        \"../fixtures/config-full\",\n        \"./src/lib/utils\"\n      ),\n    },\n    registries: {\n      \"@shadcn\": \"https://ui.shadcn.com/r/styles/{style}/{name}.json\",\n    },\n  })\n\n  expect(\n    await getConfig(path.resolve(__dirname, \"../fixtures/config-jsx\"))\n  ).toEqual({\n    style: \"default\",\n    tailwind: {\n      config: \"./tailwind.config.js\",\n      css: \"./src/assets/css/tailwind.css\",\n      baseColor: \"neutral\",\n      cssVariables: false,\n    },\n    rsc: false,\n    tsx: false,\n    aliases: {\n      components: \"@/components\",\n      utils: \"@/lib/utils\",\n    },\n    iconLibrary: \"radix\",\n    resolvedPaths: {\n      cwd: path.resolve(__dirname, \"../fixtures/config-jsx\"),\n      tailwindConfig: path.resolve(\n        __dirname,\n        \"../fixtures/config-jsx\",\n        \"tailwind.config.js\"\n      ),\n      tailwindCss: path.resolve(\n        __dirname,\n        \"../fixtures/config-jsx\",\n        \"./src/assets/css/tailwind.css\"\n      ),\n      components: path.resolve(\n        __dirname,\n        \"../fixtures/config-jsx\",\n        \"./components\"\n      ),\n      ui: path.resolve(__dirname, \"../fixtures/config-jsx\", \"./components/ui\"),\n      utils: path.resolve(__dirname, \"../fixtures/config-jsx\", \"./lib/utils\"),\n      hooks: path.resolve(__dirname, \"../fixtures/config-jsx\", \"./hooks\"),\n      lib: path.resolve(__dirname, \"../fixtures/config-jsx\", \"./lib\"),\n    },\n    registries: {\n      \"@shadcn\": \"https://ui.shadcn.com/r/styles/{style}/{name}.json\",\n    },\n  })\n})\n\ndescribe(\"getBase\", () => {\n  test(\"returns radix for radix styles\", () => {\n    expect(getBase(\"radix-nova\")).toBe(\"radix\")\n    expect(getBase(\"radix-vega\")).toBe(\"radix\")\n  })\n\n  test(\"returns base for base styles\", () => {\n    expect(getBase(\"base-nova\")).toBe(\"base\")\n    expect(getBase(\"base-vega\")).toBe(\"base\")\n  })\n\n  test(\"returns radix for undefined\", () => {\n    expect(getBase(undefined)).toBe(\"radix\")\n  })\n})\n\ndescribe(\"createConfig\", () => {\n  test(\"creates default config when called without arguments\", () => {\n    const config = createConfig()\n\n    expect(config).toMatchObject({\n      resolvedPaths: {\n        cwd: expect.any(String),\n        tailwindConfig: \"\",\n        tailwindCss: \"\",\n        utils: \"\",\n        components: \"\",\n        ui: \"\",\n        lib: \"\",\n        hooks: \"\",\n      },\n      style: \"\",\n      tailwind: {\n        config: \"\",\n        css: \"\",\n        baseColor: \"\",\n        cssVariables: false,\n      },\n      rsc: false,\n      tsx: true,\n      aliases: {\n        components: \"\",\n        utils: \"\",\n      },\n    })\n  })\n\n  test(\"overrides cwd in resolvedPaths\", () => {\n    const customCwd = \"/custom/path\"\n    const config = createConfig({\n      resolvedPaths: {\n        cwd: customCwd,\n      },\n    })\n\n    expect(config.resolvedPaths.cwd).toBe(customCwd)\n    expect(config.resolvedPaths.components).toBe(\"\")\n    expect(config.resolvedPaths.utils).toBe(\"\")\n  })\n\n  test(\"overrides style\", () => {\n    const config = createConfig({\n      style: \"new-york\",\n    })\n\n    expect(config.style).toBe(\"new-york\")\n  })\n\n  test(\"overrides tailwind settings\", () => {\n    const config = createConfig({\n      tailwind: {\n        baseColor: \"slate\",\n        cssVariables: true,\n      },\n    })\n\n    expect(config.tailwind.baseColor).toBe(\"slate\")\n    expect(config.tailwind.cssVariables).toBe(true)\n    expect(config.tailwind.config).toBe(\"\")\n    expect(config.tailwind.css).toBe(\"\")\n  })\n\n  test(\"overrides boolean flags\", () => {\n    const config = createConfig({\n      rsc: true,\n      tsx: false,\n    })\n\n    expect(config.rsc).toBe(true)\n    expect(config.tsx).toBe(false)\n  })\n\n  test(\"overrides aliases\", () => {\n    const config = createConfig({\n      aliases: {\n        components: \"@/components\",\n        utils: \"@/lib/utils\",\n      },\n    })\n\n    expect(config.aliases.components).toBe(\"@/components\")\n    expect(config.aliases.utils).toBe(\"@/lib/utils\")\n  })\n\n  test(\"handles complex partial overrides\", () => {\n    const config = createConfig({\n      style: \"default\",\n      resolvedPaths: {\n        cwd: \"/my/project\",\n        components: \"/my/project/src/components\",\n      },\n      tailwind: {\n        baseColor: \"zinc\",\n        prefix: \"tw-\",\n      },\n      aliases: {\n        ui: \"@/components/ui\",\n      },\n    })\n\n    expect(config.style).toBe(\"default\")\n    expect(config.resolvedPaths.cwd).toBe(\"/my/project\")\n    expect(config.resolvedPaths.components).toBe(\"/my/project/src/components\")\n    expect(config.resolvedPaths.utils).toBe(\"\")\n    expect(config.tailwind.baseColor).toBe(\"zinc\")\n    expect(config.tailwind.prefix).toBe(\"tw-\")\n    expect(config.tailwind.css).toBe(\"\")\n    expect(config.aliases.ui).toBe(\"@/components/ui\")\n    expect(config.aliases.components).toBe(\"\")\n  })\n\n  test(\"returns new object instances\", () => {\n    const config1 = createConfig()\n    const config2 = createConfig()\n\n    expect(config1).not.toBe(config2)\n    expect(config1.resolvedPaths).not.toBe(config2.resolvedPaths)\n    expect(config1.tailwind).not.toBe(config2.tailwind)\n    expect(config1.aliases).not.toBe(config2.aliases)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/get-item-target-path.test.ts",
    "content": "import path from \"path\"\nimport { expect, test } from \"vitest\"\n\nimport { getItemTargetPath } from \"../../src/registry/api\"\nimport { getConfig } from \"../../src/utils/get-config\"\n\ntest(\"get item target path\", async () => {\n  // Full config.\n  let appDir = path.resolve(__dirname, \"../fixtures/config-full\")\n  expect(\n    await getItemTargetPath(await getConfig(appDir), {\n      type: \"registry:ui\",\n    })\n  ).toEqual(path.resolve(appDir, \"./src/ui\"))\n\n  // Partial config.\n  appDir = path.resolve(__dirname, \"../fixtures/config-partial\")\n  expect(\n    await getItemTargetPath(await getConfig(appDir), {\n      type: \"registry:ui\",\n    })\n  ).toEqual(path.resolve(appDir, \"./components/ui\"))\n\n  // JSX.\n  appDir = path.resolve(__dirname, \"../fixtures/config-jsx\")\n  expect(\n    await getItemTargetPath(await getConfig(appDir), {\n      type: \"registry:ui\",\n    })\n  ).toEqual(path.resolve(appDir, \"./components/ui\"))\n\n  // Custom paths.\n  appDir = path.resolve(__dirname, \"../fixtures/config-ui\")\n  expect(\n    await getItemTargetPath(await getConfig(appDir), {\n      type: \"registry:ui\",\n    })\n  ).toEqual(path.resolve(appDir, \"./src/ui\"))\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/get-package-manager.test.ts",
    "content": "import path from \"path\"\nimport { expect, test } from \"vitest\"\n\nimport { getPackageManager } from \"../../src/utils/get-package-manager\"\n\ntest(\"get package manager\", async () => {\n  expect(\n    await getPackageManager(path.resolve(__dirname, \"../fixtures/project-yarn\"))\n  ).toBe(\"yarn\")\n\n  expect(\n    await getPackageManager(path.resolve(__dirname, \"../fixtures/project-npm\"))\n  ).toBe(\"npm\")\n\n  expect(\n    await getPackageManager(path.resolve(__dirname, \"../fixtures/project-pnpm\"))\n  ).toBe(\"pnpm\")\n\n  expect(\n    await getPackageManager(path.resolve(__dirname, \"../fixtures/project-bun\"))\n  ).toBe(\"bun\")\n\n  expect(\n    await getPackageManager(\n      path.resolve(__dirname, \"../fixtures/project-bun-lock\")\n    )\n  ).toBe(\"bun\")\n\n  expect(\n    await getPackageManager(path.resolve(__dirname, \"../fixtures/next\"))\n  ).toBe(\"pnpm\")\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/get-project-info.test.ts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { afterEach, beforeEach, describe, expect, test, vi } from \"vitest\"\n\nimport { FRAMEWORKS } from \"../../src/utils/frameworks\"\nimport {\n  getFrameworkVersion,\n  getProjectComponents,\n  getProjectInfo,\n} from \"../../src/utils/get-project-info\"\n\nvi.mock(\"../../src/utils/get-config\", () => ({\n  getConfig: vi.fn(),\n  resolveConfigPaths: vi.fn(),\n}))\n\nvi.mock(\"../../src/registry/api\", () => ({\n  getShadcnRegistryIndex: vi.fn(),\n}))\n\ndescribe(\"get project info\", async () => {\n  test.each([\n    {\n      name: \"next-app\",\n      type: {\n        framework: FRAMEWORKS[\"next-app\"],\n        isSrcDir: false,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.ts\",\n        tailwindCssFile: \"app/globals.css\",\n        tailwindVersion: \"v3\",\n        frameworkVersion: null,\n        aliasPrefix: \"@\",\n      },\n    },\n    {\n      name: \"next-app-src\",\n      type: {\n        framework: FRAMEWORKS[\"next-app\"],\n        isSrcDir: true,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.ts\",\n        tailwindCssFile: \"src/app/styles.css\",\n        tailwindVersion: \"v3\",\n        frameworkVersion: null,\n        aliasPrefix: \"#\",\n      },\n    },\n    {\n      name: \"next-pages\",\n      type: {\n        framework: FRAMEWORKS[\"next-pages\"],\n        isSrcDir: false,\n        isRSC: false,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.ts\",\n        tailwindCssFile: \"styles/globals.css\",\n        tailwindVersion: \"v4\",\n        frameworkVersion: null,\n        aliasPrefix: \"~\",\n      },\n    },\n    {\n      name: \"next-pages-src\",\n      type: {\n        framework: FRAMEWORKS[\"next-pages\"],\n        isSrcDir: true,\n        isRSC: false,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.ts\",\n        tailwindCssFile: \"src/styles/globals.css\",\n        tailwindVersion: \"v4\",\n        frameworkVersion: null,\n        aliasPrefix: \"@\",\n      },\n    },\n    {\n      name: \"t3-app\",\n      type: {\n        framework: FRAMEWORKS[\"next-app\"],\n        isSrcDir: true,\n        isRSC: true,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.ts\",\n        tailwindCssFile: \"src/styles/globals.css\",\n        tailwindVersion: \"v3\",\n        frameworkVersion: \"14.2.35\",\n        aliasPrefix: \"~\",\n      },\n    },\n    {\n      name: \"t3-pages\",\n      type: {\n        framework: FRAMEWORKS[\"next-pages\"],\n        isSrcDir: true,\n        isRSC: false,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.ts\",\n        tailwindCssFile: \"src/styles/globals.css\",\n        tailwindVersion: \"v3\",\n        frameworkVersion: \"14.2.35\",\n        aliasPrefix: \"~\",\n      },\n    },\n    {\n      name: \"remix\",\n      type: {\n        framework: FRAMEWORKS[\"remix\"],\n        isSrcDir: false,\n        isRSC: false,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.ts\",\n        tailwindCssFile: \"app/tailwind.css\",\n        tailwindVersion: \"v3\",\n        frameworkVersion: null,\n        aliasPrefix: \"~\",\n      },\n    },\n    {\n      name: \"remix-indie-stack\",\n      type: {\n        framework: FRAMEWORKS[\"remix\"],\n        isSrcDir: false,\n        isRSC: false,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.ts\",\n        tailwindCssFile: \"app/tailwind.css\",\n        tailwindVersion: \"v3\",\n        frameworkVersion: null,\n        aliasPrefix: \"~\",\n      },\n    },\n    {\n      name: \"vite\",\n      type: {\n        framework: FRAMEWORKS[\"vite\"],\n        isSrcDir: true,\n        isRSC: false,\n        isTsx: true,\n        tailwindConfigFile: \"tailwind.config.js\",\n        tailwindCssFile: \"src/index.css\",\n        tailwindVersion: \"v3\",\n        frameworkVersion: null,\n        aliasPrefix: null,\n      },\n    },\n  ])(`getProjectType($name) -> $type`, async ({ name, type }) => {\n    expect(\n      await getProjectInfo(\n        path.resolve(__dirname, `../fixtures/frameworks/${name}`)\n      )\n    ).toStrictEqual(type)\n  })\n})\n\ndescribe(\"getFrameworkVersion\", () => {\n  describe(\"Next.js version detection\", () => {\n    test.each([\n      {\n        name: \"exact semver\",\n        input: \"16.0.0\",\n        framework: \"next-app\",\n        expected: \"16.0.0\",\n      },\n      {\n        name: \"caret prefix\",\n        input: \"^16.1.2\",\n        framework: \"next-app\",\n        expected: \"16.1.2\",\n      },\n      {\n        name: \"tilde prefix\",\n        input: \"~15.0.3\",\n        framework: \"next-app\",\n        expected: \"15.0.3\",\n      },\n      {\n        name: \"version range\",\n        input: \">=15.0.0 <16.0.0\",\n        framework: \"next-app\",\n        expected: \"15.0.0\",\n      },\n      {\n        name: \"latest tag\",\n        input: \"latest\",\n        framework: \"next-app\",\n        expected: \"latest\",\n      },\n      {\n        name: \"canary tag\",\n        input: \"canary\",\n        framework: \"next-app\",\n        expected: \"canary\",\n      },\n      {\n        name: \"rc tag\",\n        input: \"rc\",\n        framework: \"next-app\",\n        expected: \"rc\",\n      },\n    ])(\n      `should extract $name ($input) -> $expected`,\n      async ({ input, framework, expected }) => {\n        const packageJson = {\n          dependencies: {\n            next: input,\n          },\n        }\n        const version = await getFrameworkVersion(\n          FRAMEWORKS[framework as keyof typeof FRAMEWORKS],\n          packageJson\n        )\n        expect(version).toBe(expected)\n      }\n    )\n\n    test(\"should handle version in devDependencies\", async () => {\n      const packageJson = {\n        devDependencies: {\n          next: \"16.0.0\",\n        },\n      }\n      const version = await getFrameworkVersion(\n        FRAMEWORKS[\"next-pages\"],\n        packageJson\n      )\n      expect(version).toBe(\"16.0.0\")\n    })\n\n    test(\"should return null when next is not in dependencies\", async () => {\n      const packageJson = {\n        dependencies: {\n          react: \"^18.0.0\",\n        },\n      }\n      const version = await getFrameworkVersion(\n        FRAMEWORKS[\"next-app\"],\n        packageJson\n      )\n      expect(version).toBe(null)\n    })\n\n    test(\"should return null when packageJson is null\", async () => {\n      const version = await getFrameworkVersion(FRAMEWORKS[\"next-app\"], null)\n      expect(version).toBe(null)\n    })\n  })\n\n  describe(\"Other frameworks\", () => {\n    test.each([\n      {\n        name: \"Vite\",\n        framework: \"vite\",\n        package: \"vite\",\n        version: \"^5.0.0\",\n      },\n      {\n        name: \"Remix\",\n        framework: \"remix\",\n        package: \"@remix-run/react\",\n        version: \"^2.0.0\",\n      },\n      {\n        name: \"Astro\",\n        framework: \"astro\",\n        package: \"astro\",\n        version: \"^4.0.0\",\n      },\n    ])(\n      `should return null for $name`,\n      async ({ framework, package: pkg, version: ver }) => {\n        const packageJson = {\n          dependencies: {\n            [pkg]: ver,\n          },\n        }\n        const version = await getFrameworkVersion(\n          FRAMEWORKS[framework as keyof typeof FRAMEWORKS],\n          packageJson\n        )\n        expect(version).toBe(null)\n      }\n    )\n  })\n})\n\nimport { getShadcnRegistryIndex } from \"../../src/registry/api\"\nimport { getConfig, resolveConfigPaths } from \"../../src/utils/get-config\"\n\ndescribe(\"getProjectComponents\", () => {\n  let tmpDir: string\n\n  beforeEach(async () => {\n    tmpDir = await fs.mkdtemp(\n      path.join(process.env.TMPDIR || \"/tmp\", \"test-\")\n    )\n  })\n\n  afterEach(async () => {\n    vi.resetAllMocks()\n    await fs.rm(tmpDir, { recursive: true, force: true })\n  })\n\n  test(\"should return empty array when no config exists\", async () => {\n    vi.mocked(getConfig).mockResolvedValue(null)\n\n    const result = await getProjectComponents(tmpDir)\n\n    expect(result).toEqual([])\n  })\n\n  test(\"should return empty array when ui directory does not exist\", async () => {\n    vi.mocked(getConfig).mockResolvedValue({} as any)\n    vi.mocked(resolveConfigPaths).mockResolvedValue({\n      resolvedPaths: { ui: path.join(tmpDir, \"ui\") },\n    } as any)\n\n    const result = await getProjectComponents(tmpDir)\n\n    expect(result).toEqual([])\n  })\n\n  test(\"should return only components that exist in the registry\", async () => {\n    const uiDir = path.join(tmpDir, \"ui\")\n    await fs.mkdir(uiDir, { recursive: true })\n    await fs.writeFile(path.join(uiDir, \"button.tsx\"), \"\")\n    await fs.writeFile(path.join(uiDir, \"card.tsx\"), \"\")\n    await fs.writeFile(path.join(uiDir, \"my-custom-component.tsx\"), \"\")\n\n    vi.mocked(getConfig).mockResolvedValue({} as any)\n    vi.mocked(resolveConfigPaths).mockResolvedValue({\n      resolvedPaths: { ui: uiDir },\n    } as any)\n    vi.mocked(getShadcnRegistryIndex).mockResolvedValue([\n      { name: \"button\" },\n      { name: \"card\" },\n      { name: \"dialog\" },\n    ] as any)\n\n    const result = await getProjectComponents(tmpDir)\n\n    expect(result).toEqual([\"button\", \"card\"])\n  })\n\n  test(\"should handle jsx files\", async () => {\n    const uiDir = path.join(tmpDir, \"ui\")\n    await fs.mkdir(uiDir, { recursive: true })\n    await fs.writeFile(path.join(uiDir, \"button.jsx\"), \"\")\n\n    vi.mocked(getConfig).mockResolvedValue({} as any)\n    vi.mocked(resolveConfigPaths).mockResolvedValue({\n      resolvedPaths: { ui: uiDir },\n    } as any)\n    vi.mocked(getShadcnRegistryIndex).mockResolvedValue([\n      { name: \"button\" },\n    ] as any)\n\n    const result = await getProjectComponents(tmpDir)\n\n    expect(result).toEqual([\"button\"])\n  })\n\n  test(\"should ignore non-tsx/jsx files\", async () => {\n    const uiDir = path.join(tmpDir, \"ui\")\n    await fs.mkdir(uiDir, { recursive: true })\n    await fs.writeFile(path.join(uiDir, \"button.tsx\"), \"\")\n    await fs.writeFile(path.join(uiDir, \"utils.ts\"), \"\")\n    await fs.writeFile(path.join(uiDir, \"styles.css\"), \"\")\n    await fs.writeFile(path.join(uiDir, \"README.md\"), \"\")\n\n    vi.mocked(getConfig).mockResolvedValue({} as any)\n    vi.mocked(resolveConfigPaths).mockResolvedValue({\n      resolvedPaths: { ui: uiDir },\n    } as any)\n    vi.mocked(getShadcnRegistryIndex).mockResolvedValue([\n      { name: \"button\" },\n    ] as any)\n\n    const result = await getProjectComponents(tmpDir)\n\n    expect(result).toEqual([\"button\"])\n  })\n\n  test(\"should return empty array when registry index returns undefined\", async () => {\n    const uiDir = path.join(tmpDir, \"ui\")\n    await fs.mkdir(uiDir, { recursive: true })\n    await fs.writeFile(path.join(uiDir, \"button.tsx\"), \"\")\n\n    vi.mocked(getConfig).mockResolvedValue({} as any)\n    vi.mocked(resolveConfigPaths).mockResolvedValue({\n      resolvedPaths: { ui: uiDir },\n    } as any)\n    vi.mocked(getShadcnRegistryIndex).mockResolvedValue(undefined)\n\n    const result = await getProjectComponents(tmpDir)\n\n    expect(result).toEqual([])\n  })\n\n  test(\"should return empty array when ui directory is empty\", async () => {\n    const uiDir = path.join(tmpDir, \"ui\")\n    await fs.mkdir(uiDir, { recursive: true })\n\n    vi.mocked(getConfig).mockResolvedValue({} as any)\n    vi.mocked(resolveConfigPaths).mockResolvedValue({\n      resolvedPaths: { ui: uiDir },\n    } as any)\n    vi.mocked(getShadcnRegistryIndex).mockResolvedValue([\n      { name: \"button\" },\n    ] as any)\n\n    const result = await getProjectComponents(tmpDir)\n\n    expect(result).toEqual([])\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/get-tailwind-css-file.test.ts",
    "content": "import path from \"path\"\nimport { describe, expect, test } from \"vitest\"\n\nimport { getTailwindCssFile } from \"../../src/utils/get-project-info\"\n\ndescribe(\"get tailwindcss file\", async () => {\n  test.each([\n    {\n      name: \"next-app\",\n      file: \"app/globals.css\",\n    },\n    {\n      name: \"next-app-src\",\n      file: \"src/app/styles.css\",\n    },\n    {\n      name: \"next-pages\",\n      file: \"styles/globals.css\",\n    },\n    {\n      name: \"next-pages-src\",\n      file: \"src/styles/globals.css\",\n    },\n    {\n      name: \"t3-app\",\n      file: \"src/styles/globals.css\",\n    },\n    {\n      name: \"t3-pages\",\n      file: \"src/styles/globals.css\",\n    },\n    {\n      name: \"remix\",\n      file: \"app/tailwind.css\",\n    },\n    {\n      name: \"vite\",\n      file: \"src/index.css\",\n    },\n  ])(`getTailwindCssFile($name) -> $file`, async ({ name, file }) => {\n    expect(\n      await getTailwindCssFile(\n        path.resolve(__dirname, `../fixtures/frameworks/${name}`)\n      )\n    ).toBe(file)\n  })\n\n  test(\"should use configCssFile when provided and file exists\", async () => {\n    const cwd = path.resolve(\n      __dirname,\n      \"../fixtures/frameworks/next-monorepo\"\n    )\n    expect(\n      await getTailwindCssFile(cwd, \"packages/ui/src/globals.css\")\n    ).toBe(\"packages/ui/src/globals.css\")\n  })\n\n  test(\"should fall back to glob when configCssFile does not exist\", async () => {\n    const cwd = path.resolve(__dirname, \"../fixtures/frameworks/next-app\")\n    expect(\n      await getTailwindCssFile(cwd, \"nonexistent/styles.css\")\n    ).toBe(\"app/globals.css\")\n  })\n\n  test(\"should return null when no css file found and no configCssFile\", async () => {\n    const cwd = path.resolve(\n      __dirname,\n      \"../fixtures/frameworks/next-monorepo\"\n    )\n    // The CSS file is nested under packages/ which the glob finds.\n    // Without configCssFile, it should still find it via glob.\n    expect(await getTailwindCssFile(cwd)).toBe(\n      \"packages/ui/src/globals.css\"\n    )\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/get-ts-config-alias-prefix.test.ts",
    "content": "import path from \"path\"\nimport { describe, expect, test } from \"vitest\"\n\nimport { getTsConfigAliasPrefix } from \"../../src/utils/get-project-info\"\n\ndescribe(\"get ts config alias prefix\", async () => {\n  test.each([\n    {\n      name: \"next-app\",\n      prefix: \"@\",\n    },\n    {\n      name: \"next-app-src\",\n      prefix: \"#\",\n    },\n    {\n      name: \"next-pages\",\n      prefix: \"~\",\n    },\n    {\n      name: \"next-pages-src\",\n      prefix: \"@\",\n    },\n    {\n      name: \"t3-app\",\n      prefix: \"~\",\n    },\n    {\n      name: \"next-app-custom-alias\",\n      prefix: \"@custom-alias\",\n    },\n  ])(`getTsConfigAliasPrefix($name) -> $prefix`, async ({ name, prefix }) => {\n    expect(\n      await getTsConfigAliasPrefix(\n        path.resolve(__dirname, `../fixtures/frameworks/${name}`)\n      )\n    ).toBe(prefix)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/is-typescript-project.test.ts",
    "content": "import path from \"path\"\nimport { describe, expect, test } from \"vitest\"\n\nimport { isTypeScriptProject } from \"../../src/utils/get-project-info\"\n\ndescribe(\"is TypeScript project\", async () => {\n  test.each([\n    {\n      name: \"next-app\",\n      result: true,\n    },\n    {\n      name: \"next-app-src\",\n      result: true,\n    },\n    {\n      name: \"next-pages\",\n      result: true,\n    },\n    {\n      name: \"next-pages-src\",\n      result: true,\n    },\n    {\n      name: \"t3-app\",\n      result: true,\n    },\n    {\n      name: \"next-app-js\",\n      result: false,\n    },\n  ])(`isTypeScriptProject($name) -> $result`, async ({ name, result }) => {\n    expect(\n      await isTypeScriptProject(\n        path.resolve(__dirname, `../fixtures/frameworks/${name}`)\n      )\n    ).toBe(result)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/registries.test.ts",
    "content": "import { afterEach, describe, expect, test, vi } from \"vitest\"\n\nimport type { Config } from \"../../src/utils/get-config\"\n\n// Mock dependencies.\nvi.mock(\"../../src/registry/namespaces\", () => ({\n  resolveRegistryNamespaces: vi.fn().mockResolvedValue([\"@foo\"]),\n}))\n\nvi.mock(\"../../src/registry/api\", () => ({\n  getRegistriesIndex: vi.fn().mockResolvedValue({\n    \"@foo\": \"https://foo.com/r/{name}.json\",\n  }),\n}))\n\nvi.mock(\"../../src/utils/spinner\", () => ({\n  spinner: vi.fn().mockReturnValue({\n    start: vi.fn().mockReturnValue({\n      succeed: vi.fn(),\n      fail: vi.fn(),\n      stop: vi.fn(),\n    }),\n  }),\n}))\n\nvi.mock(\"fs-extra\", () => ({\n  default: {\n    writeFile: vi.fn().mockResolvedValue(undefined),\n  },\n}))\n\nimport { ensureRegistriesInConfig } from \"../../src/utils/registries\"\nimport fs from \"fs-extra\"\n\nafterEach(() => {\n  vi.clearAllMocks()\n})\n\nconst baseConfig: Config = {\n  $schema: \"\",\n  style: \"new-york\",\n  tailwind: {\n    config: \"\",\n    css: \"\",\n    baseColor: \"\",\n    cssVariables: true,\n    prefix: \"\",\n  },\n  rsc: false,\n  tsx: true,\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n    ui: \"@/components/ui\",\n    lib: \"@/lib\",\n    hooks: \"@/hooks\",\n  },\n  registries: {},\n  resolvedPaths: {\n    cwd: \"/tmp/test-project\",\n    tailwindConfig: \"\",\n    tailwindCss: \"\",\n    utils: \"\",\n    components: \"\",\n    lib: \"\",\n    hooks: \"\",\n    ui: \"\",\n  },\n}\n\ndescribe(\"ensureRegistriesInConfig\", () => {\n  test(\"does not write to disk when writeFile is false\", async () => {\n    const { config, newRegistries } = await ensureRegistriesInConfig(\n      [\"@foo/bar\"],\n      baseConfig,\n      { writeFile: false }\n    )\n\n    // Should still return the updated config with new registries.\n    expect(newRegistries).toEqual([\"@foo\"])\n    expect(config.registries?.[\"@foo\"]).toBe(\n      \"https://foo.com/r/{name}.json\"\n    )\n\n    // Should NOT have written to disk.\n    expect(fs.writeFile).not.toHaveBeenCalled()\n  })\n\n  test(\"writes to disk when writeFile is true\", async () => {\n    await ensureRegistriesInConfig([\"@foo/bar\"], baseConfig, {\n      writeFile: true,\n    })\n\n    expect(fs.writeFile).toHaveBeenCalledTimes(1)\n    expect(fs.writeFile).toHaveBeenCalledWith(\n      expect.stringContaining(\"components.json\"),\n      expect.any(String),\n      \"utf-8\"\n    )\n  })\n\n  test(\"writes to disk by default (writeFile not specified)\", async () => {\n    await ensureRegistriesInConfig([\"@foo/bar\"], baseConfig)\n\n    expect(fs.writeFile).toHaveBeenCalledTimes(1)\n  })\n\n  test(\"does not write when no new registries are found\", async () => {\n    const configWithRegistry: Config = {\n      ...baseConfig,\n      registries: {\n        \"@foo\": \"https://foo.com/r/{name}.json\",\n      },\n    }\n\n    await ensureRegistriesInConfig([\"@foo/bar\"], configWithRegistry, {\n      writeFile: true,\n    })\n\n    // No new registries, so no write.\n    expect(fs.writeFile).not.toHaveBeenCalled()\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/registry.test.ts",
    "content": "import { expect, test } from \"vitest\"\nimport { z } from \"zod\"\n\nimport { resolveTree } from \"../../src/registry/api\"\nimport { registryItemSchema } from \"../../src/registry/schema\"\n\ntest(\"resolve tree\", async () => {\n  const index = [\n    {\n      name: \"button\",\n      dependencies: [\"@radix-ui/react-slot\"],\n      type: \"registry:ui\",\n      files: [{ type: \"registry:ui\", path: \"button.tsx\" }],\n    },\n    {\n      name: \"dialog\",\n      dependencies: [\"@radix-ui/react-dialog\"],\n      registryDependencies: [\"button\"],\n      type: \"registry:ui\",\n      files: [{ type: \"registry:ui\", path: \"dialog.tsx\" }],\n    },\n    {\n      name: \"input\",\n      registryDependencies: [\"button\"],\n      type: \"registry:ui\",\n      files: [{ type: \"registry:ui\", path: \"input.tsx\" }],\n    },\n    {\n      name: \"alert-dialog\",\n      dependencies: [\"@radix-ui/react-alert-dialog\"],\n      registryDependencies: [\"button\", \"dialog\"],\n      type: \"registry:ui\",\n      files: [{ type: \"registry:ui\", path: \"alert-dialog.tsx\" }],\n    },\n    {\n      name: \"example-card\",\n      type: \"registry:component\",\n      files: [{ type: \"registry:component\", path: \"example-card.tsx\" }],\n      registryDependencies: [\"button\", \"dialog\", \"input\"],\n    },\n  ] satisfies z.infer<typeof registryItemSchema>[]\n\n  expect(\n    (await resolveTree(index, [\"button\"])).map((entry) => entry.name).sort()\n  ).toEqual([\"button\"])\n\n  expect(\n    (await resolveTree(index, [\"dialog\"])).map((entry) => entry.name).sort()\n  ).toEqual([\"button\", \"dialog\"])\n\n  expect(\n    (await resolveTree(index, [\"alert-dialog\", \"dialog\"]))\n      .map((entry) => entry.name)\n      .sort()\n  ).toEqual([\"alert-dialog\", \"button\", \"dialog\"])\n\n  expect(\n    (await resolveTree(index, [\"example-card\"]))\n      .map((entry) => entry.name)\n      .sort()\n  ).toEqual([\"button\", \"dialog\", \"example-card\", \"input\"])\n\n  expect(\n    (await resolveTree(index, [\"foo\"])).map((entry) => entry.name).sort()\n  ).toEqual([])\n\n  expect(\n    (await resolveTree(index, [\"button\", \"foo\"]))\n      .map((entry) => entry.name)\n      .sort()\n  ).toEqual([\"button\"])\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/resolve-import.test.ts",
    "content": "import path from \"path\"\nimport { loadConfig, type ConfigLoaderSuccessResult } from \"tsconfig-paths\"\nimport { expect, test } from \"vitest\"\n\nimport { resolveImport } from \"../../src/utils/resolve-import\"\n\ntest(\"resolve import\", async () => {\n  expect(\n    await resolveImport(\"@/foo/bar\", {\n      absoluteBaseUrl: \"/Users/shadcn/Projects/foobar\",\n      paths: {\n        \"@/*\": [\"./src/*\"],\n        \"~/components/*\": [\"./src/components/*\"],\n        \"~/lib\": [\"./src/lib\"],\n      },\n    })\n  ).toEqual(\"/Users/shadcn/Projects/foobar/src/foo/bar\")\n\n  expect(\n    await resolveImport(\"~/components/foo/bar/baz\", {\n      absoluteBaseUrl: \"/Users/shadcn/Projects/foobar\",\n      paths: {\n        \"@/*\": [\"./src/*\"],\n        \"~/components/*\": [\"./src/components/*\"],\n        \"~/lib\": [\"./src/lib\"],\n      },\n    })\n  ).toEqual(\"/Users/shadcn/Projects/foobar/src/components/foo/bar/baz\")\n\n  expect(\n    await resolveImport(\"components/foo/bar\", {\n      absoluteBaseUrl: \"/Users/shadcn/Projects/foobar\",\n      paths: {\n        \"components/*\": [\"./src/app/components/*\"],\n        \"ui/*\": [\"./src/ui/primities/*\"],\n        lib: [\"./lib\"],\n      },\n    })\n  ).toEqual(\"/Users/shadcn/Projects/foobar/src/app/components/foo/bar\")\n\n  expect(\n    await resolveImport(\"lib/utils\", {\n      absoluteBaseUrl: \"/Users/shadcn/Projects/foobar\",\n      paths: {\n        \"components/*\": [\"./src/app/components/*\"],\n        \"ui/*\": [\"./src/ui/primities/*\"],\n        lib: [\"./lib\"],\n      },\n    })\n  ).toEqual(\"/Users/shadcn/Projects/foobar/lib/utils\")\n})\n\ntest(\"resolve import with base url\", async () => {\n  const cwd = path.resolve(__dirname, \"../fixtures/with-base-url\")\n  const config = (await loadConfig(cwd)) as ConfigLoaderSuccessResult\n\n  expect(await resolveImport(\"@/components/ui\", config)).toEqual(\n    path.resolve(cwd, \"components/ui\")\n  )\n  expect(await resolveImport(\"@/lib/utils\", config)).toEqual(\n    path.resolve(cwd, \"lib/utils\")\n  )\n  expect(await resolveImport(\"foo/bar\", config)).toEqual(\n    path.resolve(cwd, \"foo/bar\")\n  )\n})\n\ntest(\"resolve import without base url\", async () => {\n  const cwd = path.resolve(__dirname, \"../fixtures/without-base-url\")\n  const config = (await loadConfig(cwd)) as ConfigLoaderSuccessResult\n\n  expect(await resolveImport(\"~/components/ui\", config)).toEqual(\n    path.resolve(cwd, \"components/ui\")\n  )\n  expect(await resolveImport(\"~/lib/utils\", config)).toEqual(\n    path.resolve(cwd, \"lib/utils\")\n  )\n  expect(await resolveImport(\"foo/bar\", config)).toEqual(\n    path.resolve(cwd, \"foo/bar\")\n  )\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/transform-css-vars.test.ts",
    "content": "import { expect, test } from \"vitest\"\n\nimport { transform } from \"../../src/utils/transformers\"\nimport stone from \"../fixtures/colors/stone.json\"\n\ntest(\"transform css vars\", async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n\treturn <div className=\"bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground\">foo</div>\n}\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"stone\",\n          cssVariables: true,\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n      baseColor: stone,\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n\treturn <div className=\"bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground\">foo</div>\n}\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"stone\",\n          cssVariables: false,\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n      baseColor: stone,\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n\treturn <div className={cn(\"bg-background hover:bg-muted\", true && \"text-primary-foreground sm:focus:text-accent-foreground\")}>foo</div>\n}\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"stone\",\n          cssVariables: false,\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n      baseColor: stone,\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n\treturn <div className={cn(\"bg-background border border-input\")}>foo</div>\n}\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"stone\",\n          cssVariables: false,\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n      baseColor: stone,\n    })\n  ).toMatchSnapshot()\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/transform-import.test.ts",
    "content": "import { expect, test } from \"vitest\"\n\nimport { transform } from \"../../src/utils/transformers\"\n\n\ntest('transform nested workspace folder for utils, website/src/utils', async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n\n      raw: `import { Button } from \"website/src/components/ui/button\"\n      import { Box } from \"website/src/components/box\"\n      import { cn } from \"website/src/utils\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"neutral\",\n          cssVariables: true,\n        },\n        aliases: {\n          components: \"website/src/components\",\n          lib: \"website/src/lib\",\n          utils: \"website/src/utils\",\n        },\n      },\n    })\n  ).toMatchInlineSnapshot(`\n    \"import { Button } from \"website/src/components/ui/button\"\n          import { Box } from \"website/src/components/box\"\n          import { cn } from \"website/src/utils\"\n        \"\n  `)\n\n})\n\ntest(\"transform import\", async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/registry/new-york/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/registry/new-york/box\"\n\n    import { cn } from \"@/lib/utils\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"neutral\",\n          cssVariables: true,\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/registry/new-york/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/registry/new-york/box\"\n\n    import { cn, foo, bar } from \"@/lib/utils\"\n    import { bar } from \"@/lib/utils/bar\"\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"~/src/components\",\n          utils: \"~/lib\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/registry/new-york/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/registry/new-york/box\"\n\n    import { cn } from \"@/lib/utils\"\n    import { bar } from \"@/lib/utils/bar\"\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"~/src/components\",\n          utils: \"~/src/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/registry/new-york/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/registry/new-york/box\"\n\n    import { cn } from \"@/lib/utils\"\n    import { bar } from \"@/lib/utils/bar\"\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"~/src/components\",\n          utils: \"~/src/utils\",\n          ui: \"~/src/components\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/registry/new-york/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/registry/new-york/box\"\n\n    import { cn } from \"@/lib/utils\"\n    import { bar } from \"@/lib/utils/bar\"\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"~/src/components\",\n          utils: \"~/src/utils\",\n          ui: \"~/src/ui\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/components/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/registry/new-york/box\"\n\n    import { cn } from \"@/lib/utils\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"neutral\",\n          cssVariables: true,\n        },\n        aliases: {\n          components: \"@custom-alias/components\",\n          utils: \"@custom-alias/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n})\n\ntest(\"transform import for monorepo\", async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/registry/new-york/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/registry/new-york/box\"\n\n    import { cn } from \"@/lib/utils\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"neutral\",\n          cssVariables: true,\n        },\n        aliases: {\n          components: \"@workspace/ui/components\",\n          utils: \"@workspace/ui/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    import { Button } from \"@/registry/new-york/ui/button\"\n    import { Label} from \"ui/label\"\n    import { Box } from \"@/registry/new-york/box\"\n\n    import { cn } from \"@/lib/utils\"\n    `,\n      config: {\n        tsx: true,\n        tailwind: {\n          baseColor: \"neutral\",\n          cssVariables: true,\n        },\n        aliases: {\n          components: \"@repo/ui/components\",\n          utils: \"@repo/ui/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n})\n\ntest(\"transform async/dynamic imports\", async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Button } from \"@/registry/new-york/ui/button\"\n\nasync function loadComponent() {\n  const { cn } = await import(\"@/lib/utils\")\n  const module = await import(\"@/registry/new-york/ui/card\")\n  return module\n}\n\nfunction lazyLoad() {\n  return import(\"@/registry/new-york/ui/dialog\").then(module => module)\n}\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import { Button } from \"@/registry/new-york/ui/button\"\n\nasync function loadUtils() {\n  const utils = await import(\"@/lib/utils\")\n  const { cn } = await import(\"@/lib/utils\")\n  return { utils, cn }\n}\n\nconst dialogPromise = import(\"@/registry/new-york/ui/dialog\")\nconst cardModule = import(\"@/registry/new-york/ui/card\")\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"~/components\",\n          utils: \"~/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n})\n\ntest(\"transform dynamic imports with cn utility\", async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `async function loadCn() {\n  const { cn } = await import(\"@/lib/utils\")\n  return cn\n}\n\nasync function loadMultiple() {\n  const utils1 = await import(\"@/lib/utils\")\n  const { cn, twMerge } = await import(\"@/lib/utils\")\n  const other = await import(\"@/lib/other\")\n}\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `async function loadWorkspaceCn() {\n  const { cn } = await import(\"@/lib/utils\")\n  return cn\n}\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"@workspace/ui/components\",\n          utils: \"@workspace/ui/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n})\n\ntest(\"transform re-exports with dynamic imports\", async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `export { cn } from \"@/lib/utils\"\nexport { Button } from \"@/registry/new-york/ui/button\"\n\nasync function load() {\n  const module = await import(\"@/registry/new-york/ui/card\")\n  return module\n}\n    `,\n      config: {\n        tsx: true,\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n  ).toMatchSnapshot()\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/transform-rsc.test.ts",
    "content": "import { expect, test } from \"vitest\"\n\nimport { transform } from \"../../src/utils/transformers\"\n\ntest(\"transform rsc\", async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nimport { Foo } from \"bar\"\n    `,\n      config: {\n        tsx: true,\n        rsc: true,\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `\"use client\"\n\n      import * as React from \"react\"\nimport { Foo } from \"bar\"\n    `,\n      config: {\n        tsx: true,\n        rsc: true,\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `\"use client\"\n\n      import * as React from \"react\"\nimport { Foo } from \"bar\"\n    `,\n      config: {\n        tsx: true,\n        rsc: false,\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `\"use foo\"\n\n      import * as React from \"react\"\nimport { Foo } from \"bar\"\n\n\"use client\"\n    `,\n      config: {\n        tsx: true,\n        rsc: false,\n      },\n    })\n  ).toMatchSnapshot()\n\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `'use client'\n\n      import * as React from 'react'\nimport { Foo } from 'bar'\n    `,\n      config: {\n        tsx: true,\n        rsc: true,\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `'use client'\n\n      import * as React from 'react'\nimport { Foo } from 'bar'\n    `,\n      config: {\n        tsx: true,\n        rsc: false,\n      },\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `'use foo'\n\n      import * as React from 'react'\nimport { Foo } from 'bar'\n\n'use client'\n    `,\n      config: {\n        tsx: true,\n        rsc: false,\n      },\n    })\n  ).toMatchSnapshot()\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/transform-rtl.test.ts",
    "content": "import { describe, expect, test } from \"vitest\"\n\nimport { transform } from \"../../src/utils/transformers\"\nimport { applyRtlMapping } from \"../../src/utils/transformers/transform-rtl\"\n\ndescribe(\"applyRtlMapping\", () => {\n  test(\"transforms margin classes\", () => {\n    expect(applyRtlMapping(\"ml-2\")).toBe(\"ms-2\")\n    expect(applyRtlMapping(\"mr-4\")).toBe(\"me-4\")\n    expect(applyRtlMapping(\"-ml-2\")).toBe(\"-ms-2\")\n    expect(applyRtlMapping(\"-mr-4\")).toBe(\"-me-4\")\n  })\n\n  test(\"transforms padding classes\", () => {\n    expect(applyRtlMapping(\"pl-2\")).toBe(\"ps-2\")\n    expect(applyRtlMapping(\"pr-4\")).toBe(\"pe-4\")\n  })\n\n  test(\"transforms positioning classes\", () => {\n    expect(applyRtlMapping(\"left-0\")).toBe(\"start-0\")\n    expect(applyRtlMapping(\"right-0\")).toBe(\"end-0\")\n    expect(applyRtlMapping(\"right-1\")).toBe(\"end-1\")\n    expect(applyRtlMapping(\"-left-2\")).toBe(\"-start-2\")\n    expect(applyRtlMapping(\"-right-2\")).toBe(\"-end-2\")\n  })\n\n  test(\"transforms inset classes\", () => {\n    expect(applyRtlMapping(\"inset-l-0\")).toBe(\"inset-inline-start-0\")\n    expect(applyRtlMapping(\"inset-r-0\")).toBe(\"inset-inline-end-0\")\n  })\n\n  test(\"transforms border classes\", () => {\n    expect(applyRtlMapping(\"border-l\")).toBe(\"border-s\")\n    expect(applyRtlMapping(\"border-r\")).toBe(\"border-e\")\n    expect(applyRtlMapping(\"border-l-2\")).toBe(\"border-s-2\")\n    expect(applyRtlMapping(\"border-r-2\")).toBe(\"border-e-2\")\n  })\n\n  test(\"transforms rounded corner classes\", () => {\n    expect(applyRtlMapping(\"rounded-l-md\")).toBe(\"rounded-s-md\")\n    expect(applyRtlMapping(\"rounded-r-md\")).toBe(\"rounded-e-md\")\n    expect(applyRtlMapping(\"rounded-tl-md\")).toBe(\"rounded-ss-md\")\n    expect(applyRtlMapping(\"rounded-tr-md\")).toBe(\"rounded-se-md\")\n    expect(applyRtlMapping(\"rounded-bl-md\")).toBe(\"rounded-es-md\")\n    expect(applyRtlMapping(\"rounded-br-md\")).toBe(\"rounded-ee-md\")\n  })\n\n  test(\"transforms text alignment classes\", () => {\n    expect(applyRtlMapping(\"text-left\")).toBe(\"text-start\")\n    expect(applyRtlMapping(\"text-right\")).toBe(\"text-end\")\n  })\n\n  test(\"transforms scroll margin/padding classes\", () => {\n    expect(applyRtlMapping(\"scroll-ml-2\")).toBe(\"scroll-ms-2\")\n    expect(applyRtlMapping(\"scroll-mr-2\")).toBe(\"scroll-me-2\")\n    expect(applyRtlMapping(\"scroll-pl-2\")).toBe(\"scroll-ps-2\")\n    expect(applyRtlMapping(\"scroll-pr-2\")).toBe(\"scroll-pe-2\")\n  })\n\n  test(\"transforms float classes\", () => {\n    expect(applyRtlMapping(\"float-left\")).toBe(\"float-start\")\n    expect(applyRtlMapping(\"float-right\")).toBe(\"float-end\")\n  })\n\n  test(\"transforms clear classes\", () => {\n    expect(applyRtlMapping(\"clear-left\")).toBe(\"clear-start\")\n    expect(applyRtlMapping(\"clear-right\")).toBe(\"clear-end\")\n  })\n\n  test(\"transforms origin classes\", () => {\n    expect(applyRtlMapping(\"origin-left\")).toBe(\"origin-start\")\n    expect(applyRtlMapping(\"origin-right\")).toBe(\"origin-end\")\n    expect(applyRtlMapping(\"origin-top-left\")).toBe(\"origin-top-start\")\n    expect(applyRtlMapping(\"origin-top-right\")).toBe(\"origin-top-end\")\n    expect(applyRtlMapping(\"origin-bottom-left\")).toBe(\"origin-bottom-start\")\n    expect(applyRtlMapping(\"origin-bottom-right\")).toBe(\"origin-bottom-end\")\n  })\n\n  test(\"preserves variant prefixes\", () => {\n    expect(applyRtlMapping(\"hover:ml-2\")).toBe(\"hover:ms-2\")\n    expect(applyRtlMapping(\"focus:pl-4\")).toBe(\"focus:ps-4\")\n    expect(applyRtlMapping(\"sm:md:ml-2\")).toBe(\"sm:md:ms-2\")\n  })\n\n  test(\"handles named group selectors with data attributes\", () => {\n    expect(\n      applyRtlMapping(\n        \"sm:group-data-[size=default]/alert-dialog-content:text-left\"\n      )\n    ).toBe(\"sm:group-data-[size=default]/alert-dialog-content:text-start\")\n  })\n\n  test(\"preserves arbitrary values\", () => {\n    expect(applyRtlMapping(\"ml-[10px]\")).toBe(\"ms-[10px]\")\n    expect(applyRtlMapping(\"left-[50%]\")).toBe(\"start-[50%]\")\n  })\n\n  test(\"preserves modifiers\", () => {\n    expect(applyRtlMapping(\"ml-2/50\")).toBe(\"ms-2/50\")\n  })\n\n  test(\"handles multiple classes\", () => {\n    expect(applyRtlMapping(\"ml-2 mr-4 pl-2 pr-4\")).toBe(\"ms-2 me-4 ps-2 pe-4\")\n  })\n\n  // test(\"transforms slide animation classes to logical equivalents\", () => {\n  //   // tw-animate-css has logical slide utilities (start/end).\n  //   expect(applyRtlMapping(\"slide-in-from-left-2\")).toBe(\"slide-in-from-start-2\")\n  //   expect(applyRtlMapping(\"slide-in-from-right-2\")).toBe(\"slide-in-from-end-2\")\n  //   expect(applyRtlMapping(\"slide-out-to-left-2\")).toBe(\"slide-out-to-start-2\")\n  //   expect(applyRtlMapping(\"slide-out-to-right-2\")).toBe(\"slide-out-to-end-2\")\n  // })\n\n  // test(\"transforms slide animations with variants\", () => {\n  //   expect(applyRtlMapping(\"data-[side=left]:slide-in-from-right-2\")).toBe(\n  //     \"data-[side=left]:slide-in-from-end-2\"\n  //   )\n  //   expect(applyRtlMapping(\"data-[side=right]:slide-in-from-left-2\")).toBe(\n  //     \"data-[side=right]:slide-in-from-start-2\"\n  //   )\n  // })\n\n  test(\"transforms slide animations inside logical side variants\", () => {\n    expect(\n      applyRtlMapping(\"data-[side=inline-start]:slide-in-from-right-2\")\n    ).toBe(\"data-[side=inline-start]:slide-in-from-end-2\")\n    expect(\n      applyRtlMapping(\"data-[side=inline-start]:slide-out-to-right-2\")\n    ).toBe(\"data-[side=inline-start]:slide-out-to-end-2\")\n    expect(\n      applyRtlMapping(\"data-[side=inline-end]:slide-in-from-left-2\")\n    ).toBe(\"data-[side=inline-end]:slide-in-from-start-2\")\n    expect(\n      applyRtlMapping(\"data-[side=inline-end]:slide-out-to-left-2\")\n    ).toBe(\"data-[side=inline-end]:slide-out-to-start-2\")\n  })\n\n  test(\"does not transform slide animations inside physical side variants\", () => {\n    // Physical side variants should keep physical slide directions.\n    expect(\n      applyRtlMapping(\"data-[side=left]:slide-in-from-right-2\")\n    ).toBe(\"data-[side=left]:slide-in-from-right-2\")\n    expect(\n      applyRtlMapping(\"data-[side=right]:slide-in-from-left-2\")\n    ).toBe(\"data-[side=right]:slide-in-from-left-2\")\n  })\n\n  test(\"does not transform unrelated classes\", () => {\n    expect(applyRtlMapping(\"bg-red-500\")).toBe(\"bg-red-500\")\n    expect(applyRtlMapping(\"flex\")).toBe(\"flex\")\n    expect(applyRtlMapping(\"mx-auto\")).toBe(\"mx-auto\")\n    expect(applyRtlMapping(\"px-4\")).toBe(\"px-4\")\n  })\n\n  test(\"does not transform classes that partially match RTL mappings\", () => {\n    // border-r should become border-e, but border-ring should stay as-is.\n    expect(applyRtlMapping(\"border-ring\")).toBe(\"border-ring\")\n    expect(applyRtlMapping(\"border-ring/50\")).toBe(\"border-ring/50\")\n    // border-l should become border-s, but border-lime-500 should stay as-is.\n    expect(applyRtlMapping(\"border-lime-500\")).toBe(\"border-lime-500\")\n    // text-left should become text-start, but text-left-foo should stay as-is.\n    expect(applyRtlMapping(\"text-left\")).toBe(\"text-start\")\n    // text-right should become text-end, but text-right-foo should stay as-is if it existed.\n    expect(applyRtlMapping(\"text-right\")).toBe(\"text-end\")\n    // float-left should become float-start, but float-leftish (hypothetical) should stay.\n    expect(applyRtlMapping(\"float-left\")).toBe(\"float-start\")\n    // origin-left should become origin-start, but origin-leftover (hypothetical) should stay.\n    expect(applyRtlMapping(\"origin-left\")).toBe(\"origin-start\")\n    // origin-top-left should become origin-top-start.\n    expect(applyRtlMapping(\"origin-top-left\")).toBe(\"origin-top-start\")\n    // scroll-mr- should become scroll-me-, but scroll-m-4 should stay as-is.\n    expect(applyRtlMapping(\"scroll-m-4\")).toBe(\"scroll-m-4\")\n  })\n\n  test(\"adds rtl: variant for translate-x classes\", () => {\n    expect(applyRtlMapping(\"-translate-x-1/2\")).toBe(\n      \"-translate-x-1/2 rtl:translate-x-1/2\"\n    )\n    expect(applyRtlMapping(\"translate-x-full\")).toBe(\n      \"translate-x-full rtl:-translate-x-full\"\n    )\n    expect(applyRtlMapping(\"-translate-x-px\")).toBe(\n      \"-translate-x-px rtl:translate-x-px\"\n    )\n  })\n\n  test(\"handles translate-x with variant prefixes\", () => {\n    expect(applyRtlMapping(\"after:-translate-x-1/2\")).toBe(\n      \"after:-translate-x-1/2 rtl:after:translate-x-1/2\"\n    )\n    expect(applyRtlMapping(\"group-hover:translate-x-2\")).toBe(\n      \"group-hover:translate-x-2 rtl:group-hover:-translate-x-2\"\n    )\n  })\n\n  test(\"does not add rtl: variant for translate-y classes\", () => {\n    expect(applyRtlMapping(\"-translate-y-1/2\")).toBe(\"-translate-y-1/2\")\n    expect(applyRtlMapping(\"translate-y-full\")).toBe(\"translate-y-full\")\n  })\n\n  test(\"adds rtl:space-x-reverse for space-x classes\", () => {\n    expect(applyRtlMapping(\"space-x-4\")).toBe(\"space-x-4 rtl:space-x-reverse\")\n    expect(applyRtlMapping(\"space-x-2\")).toBe(\"space-x-2 rtl:space-x-reverse\")\n    expect(applyRtlMapping(\"space-x-0\")).toBe(\"space-x-0 rtl:space-x-reverse\")\n  })\n\n  test(\"adds rtl:divide-x-reverse for divide-x classes\", () => {\n    expect(applyRtlMapping(\"divide-x-2\")).toBe(\"divide-x-2 rtl:divide-x-reverse\")\n    expect(applyRtlMapping(\"divide-x-0\")).toBe(\"divide-x-0 rtl:divide-x-reverse\")\n  })\n\n  test(\"handles space-x and divide-x with variant prefixes\", () => {\n    expect(applyRtlMapping(\"md:space-x-4\")).toBe(\n      \"md:space-x-4 rtl:md:space-x-reverse\"\n    )\n    expect(applyRtlMapping(\"hover:divide-x-2\")).toBe(\n      \"hover:divide-x-2 rtl:hover:divide-x-reverse\"\n    )\n  })\n\n  test(\"does not add rtl: variant for space-y or divide-y classes\", () => {\n    expect(applyRtlMapping(\"space-y-4\")).toBe(\"space-y-4\")\n    expect(applyRtlMapping(\"divide-y-2\")).toBe(\"divide-y-2\")\n  })\n\n  test(\"adds rtl: variant for cursor resize classes\", () => {\n    expect(applyRtlMapping(\"cursor-w-resize\")).toBe(\n      \"cursor-w-resize rtl:cursor-e-resize\"\n    )\n    expect(applyRtlMapping(\"cursor-e-resize\")).toBe(\n      \"cursor-e-resize rtl:cursor-w-resize\"\n    )\n  })\n\n  test(\"handles cursor resize with variant prefixes\", () => {\n    expect(applyRtlMapping(\"hover:cursor-w-resize\")).toBe(\n      \"hover:cursor-w-resize rtl:hover:cursor-e-resize\"\n    )\n  })\n\n  test(\"transforms cn-rtl-flip marker to rtl:rotate-180\", () => {\n    expect(applyRtlMapping(\"cn-rtl-flip size-4\")).toBe(\"rtl:rotate-180 size-4\")\n    expect(applyRtlMapping(\"size-4 cn-rtl-flip\")).toBe(\"size-4 rtl:rotate-180\")\n    expect(applyRtlMapping(\"cn-rtl-flip\")).toBe(\"rtl:rotate-180\")\n  })\n\n  test(\"transforms cn-rtl-flip with other RTL mappings\", () => {\n    expect(applyRtlMapping(\"cn-rtl-flip ml-2\")).toBe(\"rtl:rotate-180 ms-2\")\n  })\n\n  // test(\"adds logical side selectors when cn-logical-sides marker is present\", () => {\n  //   // With cn-logical-sides marker, adds logical alongside physical.\n  //   // In RTL: inline-start = right, inline-end = left.\n  //   expect(\n  //     applyRtlMapping(\"cn-logical-sides data-[side=left]:top-1\")\n  //   ).toBe(\"cn-logical-sides data-[side=left]:top-1 data-[side=inline-end]:top-1\")\n  //   expect(\n  //     applyRtlMapping(\"cn-logical-sides data-[side=right]:-left-1\")\n  //   ).toBe(\"cn-logical-sides data-[side=right]:-start-1 data-[side=inline-start]:-start-1\")\n  // })\n\n  test(\"does not add logical side selectors without cn-logical-sides marker\", () => {\n    // Without marker, no logical selectors added.\n    expect(applyRtlMapping(\"data-[side=left]:top-1\")).toBe(\n      \"data-[side=left]:top-1\"\n    )\n  })\n\n  test(\"does not transform positioning classes inside physical side variants\", () => {\n    // Physical side variants (data-[side=left], data-[side=right]) should keep\n    // physical positioning because the side is physical, not logical.\n    // e.g., tooltip on physical left needs arrow on physical right.\n    expect(applyRtlMapping(\"data-[side=left]:-right-1\")).toBe(\n      \"data-[side=left]:-right-1\"\n    )\n    expect(applyRtlMapping(\"data-[side=right]:-left-1\")).toBe(\n      \"data-[side=right]:-left-1\"\n    )\n    expect(applyRtlMapping(\"data-[side=left]:right-0\")).toBe(\n      \"data-[side=left]:right-0\"\n    )\n    expect(applyRtlMapping(\"data-[side=right]:left-0\")).toBe(\n      \"data-[side=right]:left-0\"\n    )\n  })\n\n  test(\"still transforms non-positioning classes inside physical side variants\", () => {\n    // Other classes like margins, padding should still be transformed.\n    expect(applyRtlMapping(\"data-[side=left]:ml-2\")).toBe(\n      \"data-[side=left]:ms-2\"\n    )\n    expect(applyRtlMapping(\"data-[side=right]:pl-4\")).toBe(\n      \"data-[side=right]:ps-4\"\n    )\n    expect(applyRtlMapping(\"data-[side=left]:text-left\")).toBe(\n      \"data-[side=left]:text-start\"\n    )\n  })\n\n  test(\"skips classes with rtl: prefix\", () => {\n    expect(applyRtlMapping(\"rtl:ml-2\")).toBe(\"rtl:ml-2\")\n    expect(applyRtlMapping(\"rtl:text-right\")).toBe(\"rtl:text-right\")\n    expect(applyRtlMapping(\"rtl:space-x-reverse\")).toBe(\"rtl:space-x-reverse\")\n  })\n\n  test(\"skips classes with ltr: prefix\", () => {\n    expect(applyRtlMapping(\"ltr:ml-2\")).toBe(\"ltr:ml-2\")\n    expect(applyRtlMapping(\"ltr:text-left\")).toBe(\"ltr:text-left\")\n  })\n\n  test(\"skips rtl:/ltr: classes but transforms others in same string\", () => {\n    expect(applyRtlMapping(\"ml-2 rtl:mr-2\")).toBe(\"ms-2 rtl:mr-2\")\n    expect(applyRtlMapping(\"ltr:pl-4 pr-4\")).toBe(\"ltr:pl-4 pe-4\")\n    expect(applyRtlMapping(\"text-left rtl:text-right ltr:text-left\")).toBe(\n      \"text-start rtl:text-right ltr:text-left\"\n    )\n  })\n\n  test(\"skips manually specified ltr:/rtl: translate pairs\", () => {\n    expect(applyRtlMapping(\"ltr:-translate-x-1/2 rtl:-translate-x-1/2\")).toBe(\n      \"ltr:-translate-x-1/2 rtl:-translate-x-1/2\"\n    )\n  })\n})\n\ndescribe(\"transformRtl\", () => {\n  test(\"transforms className string literals when rtl is true\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <div className=\"ml-2 mr-4 text-left\">foo</div>\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"ms-2\")\n    expect(result).toContain(\"me-4\")\n    expect(result).toContain(\"text-start\")\n  })\n\n  test(\"does not transform when rtl is false\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <div className=\"ml-2 mr-4 text-left\">foo</div>\n}\n`,\n      config: {\n        rtl: false,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"ml-2\")\n    expect(result).toContain(\"mr-4\")\n    expect(result).toContain(\"text-left\")\n  })\n\n  test(\"does not transform when direction is not specified\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <div className=\"ml-2 mr-4 text-left\">foo</div>\n}\n`,\n      config: {\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"ml-2\")\n    expect(result).toContain(\"mr-4\")\n    expect(result).toContain(\"text-left\")\n  })\n\n  test(\"transforms cn() function arguments\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <div className={cn(\"ml-2 mr-4\", true && \"pl-2\")}>foo</div>\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"ms-2\")\n    expect(result).toContain(\"me-4\")\n    expect(result).toContain(\"ps-2\")\n  })\n\n  test(\"transforms cva base classes\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import { cva } from \"class-variance-authority\"\nconst buttonVariants = cva(\"ml-2 mr-4\", {\n  variants: {\n    size: {\n      default: \"pl-4 pr-4\",\n      sm: \"pl-2 pr-2\",\n    },\n  },\n})\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"ms-2\")\n    expect(result).toContain(\"me-4\")\n    expect(result).toContain(\"ps-4\")\n    expect(result).toContain(\"pe-4\")\n    expect(result).toContain(\"ps-2\")\n    expect(result).toContain(\"pe-2\")\n  })\n\n  // test(\"transforms side prop values\", async () => {\n  //   const result = await transform({\n  //     filename: \"test.tsx\",\n  //     raw: `import * as React from \"react\"\n  // export function Foo() {\n  //   return <Popover side=\"right\" />\n  // }\n  // `,\n  //     config: {\n  //       rtl: true,\n  //       tailwind: {\n  //         baseColor: \"neutral\",\n  //       },\n  //       aliases: {\n  //         components: \"@/components\",\n  //         utils: \"@/lib/utils\",\n  //       },\n  //     },\n  //   })\n\n  //   expect(result).toContain('side=\"left\"')\n  //   expect(result).not.toContain('side=\"right\"')\n  // })\n\n  // test(\"transforms align prop values\", async () => {\n  //   const result = await transform({\n  //     filename: \"test.tsx\",\n  //     raw: `import * as React from \"react\"\n  // export function Foo() {\n  //   return <Dropdown align=\"left\" />\n  // }\n  // `,\n  //     config: {\n  //       rtl: true,\n  //       tailwind: {\n  //         baseColor: \"neutral\",\n  //       },\n  //       aliases: {\n  //         components: \"@/components\",\n  //         utils: \"@/lib/utils\",\n  //       },\n  //     },\n  //   })\n\n  //   expect(result).toContain('align=\"right\"')\n  //   expect(result).not.toContain('align=\"left\"')\n  // })\n\n  // test(\"transforms position prop values\", async () => {\n  //   const result = await transform({\n  //     filename: \"test.tsx\",\n  //     raw: `import * as React from \"react\"\n  // export function Foo() {\n  //   return <Sheet position=\"left\" />\n  // }\n  // `,\n  //     config: {\n  //       rtl: true,\n  //       tailwind: {\n  //         baseColor: \"neutral\",\n  //       },\n  //       aliases: {\n  //         components: \"@/components\",\n  //         utils: \"@/lib/utils\",\n  //       },\n  //     },\n  //   })\n\n  //   expect(result).toContain('position=\"right\"')\n  //   expect(result).not.toContain('position=\"left\"')\n  // })\n\n  // test(\"does not transform non-directional prop values\", async () => {\n  //   const result = await transform({\n  //     filename: \"test.tsx\",\n  //     raw: `import * as React from \"react\"\n  // export function Foo() {\n  //   return <Popover side=\"top\" align=\"center\" />\n  // }\n  // `,\n  //     config: {\n  //       rtl: true,\n  //       tailwind: {\n  //         baseColor: \"neutral\",\n  //       },\n  //       aliases: {\n  //         components: \"@/components\",\n  //         utils: \"@/lib/utils\",\n  //       },\n  //     },\n  //   })\n\n  //   expect(result).toContain('side=\"top\"')\n  //   expect(result).toContain('align=\"center\"')\n  // })\n\n  // test(\"transforms default parameter values\", async () => {\n  //   const result = await transform({\n  //     filename: \"test.tsx\",\n  //     raw: `import * as React from \"react\"\n  // function DropdownMenuSubContent({\n  //   align = \"start\",\n  //   alignOffset = -3,\n  //   side = \"right\",\n  //   sideOffset = 0,\n  //   className,\n  //   ...props\n  // }: Props) {\n  //   return <div />\n  // }\n  // `,\n  //     config: {\n  //       rtl: true,\n  //       tailwind: {\n  //         baseColor: \"neutral\",\n  //       },\n  //       aliases: {\n  //         components: \"@/components\",\n  //         utils: \"@/lib/utils\",\n  //       },\n  //     },\n  //   })\n\n  //   expect(result).toContain('side = \"left\"')\n  //   expect(result).not.toContain('side = \"right\"')\n  //   // align = \"start\" should remain unchanged (not a directional value).\n  //   expect(result).toContain('align = \"start\"')\n  // })\n\n  test(\"transforms cn() inside mergeProps\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return mergeProps(\n    {\n      className: cn(\"absolute right-1 top-1\"),\n    },\n    props\n  )\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"end-1\")\n    expect(result).not.toContain(\"right-1\")\n  })\n\n  test(\"transforms string literal className inside mergeProps\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return mergeProps(\n    {\n      className: \"ml-2 right-0\",\n    },\n    props\n  )\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"ms-2\")\n    expect(result).toContain(\"end-0\")\n    expect(result).not.toContain(\"ml-2\")\n    expect(result).not.toContain(\"right-0\")\n  })\n\n  test(\"transforms cn-rtl-flip marker to rtl:rotate-180\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <IconPlaceholder lucide=\"ChevronRightIcon\" className=\"cn-rtl-flip size-4\" />\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"rtl:rotate-180\")\n    expect(result).toContain(\"size-4\")\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n\n  test(\"transforms cn-rtl-flip marker in cn() call\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo({ className }) {\n  return <IconPlaceholder lucide=\"ChevronRightIcon\" className={cn(\"cn-rtl-flip size-4\", className)} />\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain(\"rtl:rotate-180\")\n    expect(result).toContain(\"size-4\")\n    expect(result).not.toContain(\"cn-rtl-flip\")\n  })\n\n  test(\"does not add rtl:rotate-180 without cn-rtl-flip marker\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <IconPlaceholder lucide=\"ChevronRightIcon\" className=\"size-4\" />\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).not.toContain(\"rtl:rotate-180\")\n    expect(result).toContain(\"size-4\")\n  })\n\n  test(\"transforms side prop to logical value for whitelisted components\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <ContextMenuContent side=\"right\" />\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain('side=\"inline-end\"')\n    expect(result).not.toContain('side=\"right\"')\n  })\n\n  test(\"transforms side prop left to inline-start\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <DropdownMenuSubContent side=\"left\" />\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain('side=\"inline-start\"')\n    expect(result).not.toContain('side=\"left\"')\n  })\n\n  test(\"does not transform side prop for non-whitelisted components\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n  return <SomeOtherComponent side=\"right\" />\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain('side=\"right\"')\n    expect(result).not.toContain('side=\"inline-end\"')\n  })\n\n  test(\"transforms default parameter value for side prop in whitelisted functions\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nfunction DropdownMenuSubContent({\n  side = \"right\",\n  ...props\n}) {\n  return <div />\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain('side = \"inline-end\"')\n    expect(result).not.toContain('side = \"right\"')\n  })\n\n  test(\"does not transform default parameter value for side prop in non-whitelisted functions\", async () => {\n    const result = await transform({\n      filename: \"test.tsx\",\n      raw: `import * as React from \"react\"\nfunction Sidebar({\n  side = \"right\",\n  ...props\n}) {\n  return <div />\n}\n`,\n      config: {\n        rtl: true,\n        tailwind: {\n          baseColor: \"neutral\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n    })\n\n    expect(result).toContain('side = \"right\"')\n    expect(result).not.toContain('side = \"inline-end\"')\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/transform-tw-prefix.test.ts",
    "content": "import { expect, test } from \"vitest\"\n\nimport { transform } from \"../../src/utils/transformers\"\nimport { applyPrefixesCss } from \"../../src/utils/transformers/transform-tw-prefix\"\nimport stone from \"../fixtures/colors/stone.json\"\n\ntest(\"transform tailwind prefix\", async () => {\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\n            export function Foo() {\n                return <div className=\"bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground\">foo</div>\n            }\n        `,\n      config: {\n        tailwind: {\n          baseColor: \"stone\",\n          prefix: \"tw:\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n      baseColor: \"stone\",\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n\treturn <div className=\"bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground\">foo</div>\n}\n    `,\n      config: {\n        tailwind: {\n          baseColor: \"stone\",\n          cssVariables: false,\n          prefix: \"tw:\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n      baseColor: stone,\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n\treturn <div className={cn(\"bg-background hover:bg-muted\", true && \"text-primary-foreground sm:focus:text-accent-foreground\")}>foo</div>\n}\n    `,\n      config: {\n        tailwind: {\n          baseColor: \"stone\",\n          cssVariables: false,\n          prefix: \"tw:\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n      baseColor: stone,\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    await transform({\n      filename: \"test.ts\",\n      raw: `import * as React from \"react\"\nexport function Foo() {\n\treturn <div className={cn('bg-background hover:bg-muted', true && 'text-primary-foreground sm:focus:text-accent-foreground')}>foo</div>\n}\n    `,\n      config: {\n        tailwind: {\n          baseColor: \"stone\",\n          cssVariables: false,\n          prefix: \"tw:\",\n        },\n        aliases: {\n          components: \"@/components\",\n          utils: \"@/lib/utils\",\n        },\n      },\n      baseColor: stone,\n    })\n  ).toMatchSnapshot()\n\n  expect(\n    applyPrefixesCss(\n      \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n \\n@layer base {\\n  :root {\\n    --background: 0 0% 100%;\\n    --foreground: 224 71.4% 4.1%;\\n \\n    --muted: 220 14.3% 95.9%;\\n    --muted-foreground: 220 8.9% 46.1%;\\n \\n    --popover: 0 0% 100%;\\n    --popover-foreground: 224 71.4% 4.1%;\\n \\n    --card: 0 0% 100%;\\n    --card-foreground: 224 71.4% 4.1%;\\n \\n    --border: 220 13% 91%;\\n    --input: 220 13% 91%;\\n \\n    --primary: 220.9 39.3% 11%;\\n    --primary-foreground: 210 20% 98%;\\n \\n    --secondary: 220 14.3% 95.9%;\\n    --secondary-foreground: 220.9 39.3% 11%;\\n \\n    --accent: 220 14.3% 95.9%;\\n    --accent-foreground: 220.9 39.3% 11%;\\n \\n    --destructive: 0 84.2% 60.2%;\\n    --destructive-foreground: 210 20% 98%;\\n \\n    --ring: 217.9 10.6% 64.9%;\\n \\n    --radius: 0.5rem;\\n  }\\n \\n  .dark {\\n    --background: 224 71.4% 4.1%;\\n    --foreground: 210 20% 98%;\\n \\n    --muted: 215 27.9% 16.9%;\\n    --muted-foreground: 217.9 10.6% 64.9%;\\n \\n    --popover: 224 71.4% 4.1%;\\n    --popover-foreground: 210 20% 98%;\\n \\n    --card: 224 71.4% 4.1%;\\n    --card-foreground: 210 20% 98%;\\n \\n    --border: 215 27.9% 16.9%;\\n    --input: 215 27.9% 16.9%;\\n \\n    --primary: 210 20% 98%;\\n    --primary-foreground: 220.9 39.3% 11%;\\n \\n    --secondary: 215 27.9% 16.9%;\\n    --secondary-foreground: 210 20% 98%;\\n \\n    --accent: 215 27.9% 16.9%;\\n    --accent-foreground: 210 20% 98%;\\n \\n    --destructive: 0 62.8% 30.6%;\\n    --destructive-foreground: 0 85.7% 97.3%;\\n \\n    --ring: 215 27.9% 16.9%;\\n  }\\n}\\n \\n@layer base {\\n  * {\\n    @apply border-border;\\n  }\\n  body {\\n    @apply bg-background text-foreground;\\n  }\\n}\",\n      \"tw:\",\n      \"v4\"\n    )\n  ).toMatchSnapshot()\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/__snapshots__/initialize-tailwind-config.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`transformTailwindConfig -> darkMode property > should add darkMode property if not in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should add darkMode property if not in config 2`] = `\n\"/** @type {import('tailwindcss').Config} */\n\nexport default {\n    darkMode: ['class'],\n    content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],\n\ttheme: {\n\t\textend: {},\n\t},\n\tplugins: [],\n}\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should add darkMode property if not in config 3`] = `\n\"/** @type {import('tailwindcss').Config} */\nconst foo = {\n  bar: 'baz',\n}\n\nexport default {\n    darkMode: ['class'],\n    content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],\n\ttheme: {\n\t\textend: {},\n\t},\n\tplugins: [],\n}\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should append class to darkMode property if existing array 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: [\"selector\", \"class\"],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should convert string to array and add class if darkMode is string 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: [\"selector\", \"class\"],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should not add darkMode property if already in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['class'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should not add darkMode property if already in config 2`] = `\n\"import type { Config } from 'tailwindcss'\n\n  const config: Config = {\n  darkMode: ['class', 'selector'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n  }\n  export default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should preserve quote kind 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['selector', '[data-mode=\"dark\"]', 'class'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should work with multiple darkMode selectors 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['variant', [\n    '@media (prefers-color-scheme: dark) { &:not(.light *) }',\n    '&:is(.dark *)',\n  ], 'class'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> plugin > should add plugin if not in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n    plugins: [require(\"tailwindcss-animate\")]\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> plugin > should append plugin to existing array 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [require(\"@tailwindcss/typography\"), require(\"tailwindcss-animate\")],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> plugin > should not add plugin if already in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [require(\"@tailwindcss/typography\"), require(\"tailwindcss-animate\")],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should add theme if not in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\n  const config: Config = {\n      darkMode: [\"class\"],\n    content: [\n      \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n      \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n      \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n    ],\n      theme: {\n      \textend: {\n      \t\tcolors: {\n      \t\t\tbackground: 'hsl(var(--background))',\n      \t\t\tforeground: 'hsl(var(--foreground))',\n      \t\t\tprimary: {\n      \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n      \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n      \t\t\t}\n      \t\t}\n      \t}\n      }\n}\n  export default config\n    \"\n`;\n\nexports[`transformTailwindConfig -> theme > should handle multiple properties 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tfontFamily: {\n  \t\t\tsans: [\"var(--font-geist-sans)\", ...fontFamily.sans],\n  \t\t\tmono: [\"var(--font-mono)\", ...fontFamily.mono],\n  \t\t\theading: [\n  \t\t\t\t'var(--font-geist-sans)'\n  \t\t\t]\n  \t\t},\n  \t\tcolors: {\n                ...defaultColors,\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tborder: 'hsl(var(--border))',\n  \t\t\tinput: 'hsl(var(--input))',\n  \t\t\tring: 'hsl(var(--ring))',\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t}\n  \t\t},\n  \t\tboxShadow: {\n                ...defaultBoxShadow,\n  \t\t\t'3xl': '0 35px 60px -15px rgba(0, 0, 0, 0.3)'\n  \t\t},\n  \t\tborderRadius: {\n  \t\t\t'3xl': '2rem',\n  \t\t\tlg: 'var(--radius)',\n  \t\t\tmd: 'calc(var(--radius) - 2px)',\n  \t\t\tsm: 'calc(var(--radius) - 4px)'\n  \t\t},\n  \t\tanimation: {\n                ...defaultAnimation,\n  \t\t\t'spin-slow': 'spin 3s linear infinite',\n  \t\t\t'accordion-down': 'accordion-down 0.2s ease-out',\n  \t\t\t'accordion-up': 'accordion-up 0.2s ease-out'\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should keep spread assignments 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tcolors: {\n                ...defaultColors,\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t}\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should merge existing theme 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tcolors: {\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t}\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/__snapshots__/update-tailwind-config.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`transformTailwindConfig -> darkMode property > should add darkMode property if not in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should add darkMode property if not in config 2`] = `\n\"/** @type {import('tailwindcss').Config} */\n\nexport default {\n    darkMode: ['class'],\n    content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],\n\ttheme: {\n\t\textend: {},\n\t},\n\tplugins: [],\n}\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should add darkMode property if not in config 3`] = `\n\"/** @type {import('tailwindcss').Config} */\nconst foo = {\n  bar: 'baz',\n}\n\nexport default {\n    darkMode: ['class'],\n    content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],\n\ttheme: {\n\t\textend: {},\n\t},\n\tplugins: [],\n}\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should append class to darkMode property if existing array 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: [\"selector\", \"class\"],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should convert string to array and add class if darkMode is string 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: [\"selector\", \"class\"],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should not add darkMode property if already in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['class'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should not add darkMode property if already in config 2`] = `\n\"import type { Config } from 'tailwindcss'\n\n  const config: Config = {\n  darkMode: ['class', 'selector'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n  }\n  export default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should preserve quote kind 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['selector', '[data-mode=\"dark\"]', 'class'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> darkMode property > should work with multiple darkMode selectors 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['variant', [\n    '@media (prefers-color-scheme: dark) { &:not(.light *) }',\n    '&:is(.dark *)',\n  ], 'class'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> plugin > should add plugin if not in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n    plugins: [require(\"tailwindcss-animate\")]\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> plugin > should append plugin to existing array 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [require(\"@tailwindcss/typography\"), require(\"tailwindcss-animate\")],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> plugin > should not add plugin if already in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [require(\"@tailwindcss/typography\"), require(\"tailwindcss-animate\")],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should add theme if not in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\n  const config: Config = {\n      darkMode: [\"class\"],\n    content: [\n      \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n      \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n      \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n    ],\n      theme: {\n      \textend: {\n      \t\tcolors: {\n      \t\t\tbackground: 'hsl(var(--background))',\n      \t\t\tforeground: 'hsl(var(--foreground))',\n      \t\t\tprimary: {\n      \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n      \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n      \t\t\t}\n      \t\t}\n      \t}\n      }\n}\n  export default config\n    \"\n`;\n\nexports[`transformTailwindConfig -> theme > should handle multiple properties 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tfontFamily: {\n  \t\t\tsans: [\n  \t\t\t\t'var(--font-geist-sans)',\n                    ...fontFamily.sans\n                ],\n  \t\t\tmono: [\n  \t\t\t\t'var(--font-mono)',\n                    ...fontFamily.mono\n                ],\n  \t\t\theading: [\n  \t\t\t\t'var(--font-geist-sans)'\n  \t\t\t]\n  \t\t},\n  \t\tcolors: {\n                ...defaultColors,\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tborder: 'hsl(var(--border))',\n  \t\t\tinput: 'hsl(var(--input))',\n  \t\t\tring: 'hsl(var(--ring))',\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t}\n  \t\t},\n  \t\tboxShadow: {\n                ...defaultBoxShadow,\n  \t\t\t'3xl': '0 35px 60px -15px rgba(0, 0, 0, 0.3)'\n  \t\t},\n  \t\tborderRadius: {\n  \t\t\t'3xl': '2rem',\n  \t\t\tlg: 'var(--radius)',\n  \t\t\tmd: 'calc(var(--radius) - 2px)',\n  \t\t\tsm: 'calc(var(--radius) - 4px)'\n  \t\t},\n  \t\tanimation: {\n                ...defaultAnimation,\n  \t\t\t'spin-slow': 'spin 3s linear infinite',\n  \t\t\t'accordion-down': 'accordion-down 0.2s ease-out',\n  \t\t\t'accordion-up': 'accordion-up 0.2s ease-out'\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should handle objects nested in arrays 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tfontSize: {\n  \t\t\txs: [\n  \t\t\t\t'0.75rem',\n  \t\t\t\t{\n  \t\t\t\t\tlineHeight: '1rem'\n  \t\t\t\t}\n  \t\t\t],\n  \t\t\tsm: [\n  \t\t\t\t'0.875rem',\n  \t\t\t\t{\n  \t\t\t\t\tlineHeight: '1.25rem'\n  \t\t\t\t}\n  \t\t\t],\n  \t\t\txl: [\n  \t\t\t\t'clamp(1.5rem, 1.04vi + 1.17rem, 2rem)',\n  \t\t\t\t{\n  \t\t\t\t\tlineHeight: '1.2',\n  \t\t\t\t\tletterSpacing: '-0.02em',\n  \t\t\t\t\tfontWeight: '600'\n  \t\t\t\t}\n  \t\t\t]\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should keep arrays when formatted on multilines 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tfontFamily: {\n  \t\t\tsans: [\n  \t\t\t\t'Figtree',\n                    ...defaultTheme.fontFamily.sans\n                ],\n  \t\t\tmono: [\n  \t\t\t\t'Foo'\n  \t\t\t]\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should keep quotes in strings 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tfontFamily: {\n  \t\t\tsans: [\n  \t\t\t\t'Figtree',\n                    ...defaultTheme.fontFamily.sans\n                ]\n  \t\t},\n  \t\tcolors: {\n                ...defaultColors,\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t}\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should keep spread assignments 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tcolors: {\n                ...defaultColors,\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t}\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should merge existing theme 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tfontFamily: {\n  \t\t\tsans: [\n  \t\t\t\t'ui-sans-serif',\n  \t\t\t\t'sans-serif'\n  \t\t\t]\n  \t\t},\n  \t\tcolors: {\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t}\n  \t\t}\n  \t}\n  },\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindConfig -> theme > should preserve boolean values 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    container: {\n      center: true\n    }\n  },\n}\nexport default config\n  \"\n`;\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/__snapshots__/update-tailwind-content.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`transformTailwindContent -> content property > should NOT add content property if already in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n        \"./bar/**/*.{js,ts,jsx,tsx,mdx}\"\n    ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n\nexports[`transformTailwindContent -> content property > should add content property if not in config 1`] = `\n\"import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n        \"./foo/**/*.{js,ts,jsx,tsx,mdx}\",\n        \"./bar/**/*.{js,ts,jsx,tsx,mdx}\"\n    ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  \"\n`;\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/update-css-vars.test.ts",
    "content": "import { describe, expect, test } from \"vitest\"\n\nimport {\n  isColorValue,\n  isLocalHSLValue,\n  transformCssVars,\n} from \"../../../src/utils/updaters/update-css-vars\"\n\ndescribe(\"transformCssVars\", () => {\n  test(\"should add light and dark css vars if not present\", async () => {\n    expect(\n      await transformCssVars(\n        `@tailwind base;\n@tailwind components;\n@tailwind utilities;\n  `,\n        {\n          light: {\n            background: \"white\",\n            foreground: \"black\",\n          },\n          dark: {\n            background: \"black\",\n            foreground: \"white\",\n          },\n        },\n        {\n          tailwind: {\n            cssVariables: true,\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @layer base {\n        :root {\n          --background: white;\n          --foreground: black\n        }\n        .dark {\n          --background: black;\n          --foreground: white\n        }\n      }\n        \"\n    `)\n  })\n\n  test(\"should update light and dark css vars if present\", async () => {\n    expect(\n      await transformCssVars(\n        `@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base{\n  :root{\n    --background: 210 40% 98%;\n  }\n\n  .dark{\n    --background: 222.2 84% 4.9%;\n  }\n}\n  `,\n        {\n          light: {\n            background: \"215 20.2% 65.1%\",\n            foreground: \"222.2 84% 4.9%\",\n          },\n          dark: {\n            foreground: \"60 9.1% 97.8%\",\n          },\n        },\n        {\n          tailwind: {\n            cssVariables: true,\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @layer base{\n        :root{\n          --background: 215 20.2% 65.1%;\n          --foreground: 222.2 84% 4.9%;\n        }\n\n        .dark{\n          --background: 222.2 84% 4.9%;\n          --foreground: 60 9.1% 97.8%;\n        }\n      }\n        \"\n    `)\n  })\n\n  test(\"should not add the base layer if it is already present\", async () => {\n    expect(\n      await transformCssVars(\n        `@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base{\n  :root{\n    --background: 210 40% 98%;\n  }\n\n  .dark{\n    --background: 222.2 84% 4.9%;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n  `,\n        {},\n        {\n          tailwind: {\n            cssVariables: true,\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @layer base{\n        :root{\n          --background: 210 40% 98%;\n        }\n\n        .dark{\n          --background: 222.2 84% 4.9%;\n        }\n      }\n\n      @layer base {\n        * {\n          @apply border-border;\n        }\n        body {\n          @apply bg-background text-foreground;\n        }\n      }\n        \"\n    `)\n  })\n})\n\ndescribe(\"transformCssVarsV4\", () => {\n  test(\"should transform css vars for v4\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {\n          light: {\n            background: \"0 0% 100%\",\n            foreground: \"240 10% 3.9%\",\n          },\n          dark: {\n            background: \"240 10% 3.9%\",\n            foreground: \"0 0% 98%\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      :root {\n          --background: hsl(0 0% 100%);\n          --foreground: hsl(240 10% 3.9%);\n      }\n\n      .dark {\n          --background: hsl(240 10% 3.9%);\n          --foreground: hsl(0 0% 98%);\n      }\n\n      @theme inline {\n          --color-background: var(--background);\n          --color-foreground: var(--foreground);\n      }\n              \"\n    `)\n  })\n\n  test(\"should update light and dark css vars if present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        :root {\n          --background: hsl(210 40% 98%);\n        }\n\n        .dark {\n          --background: hsl(222.2 84% 4.9%);\n        }\n        `,\n        {\n          light: {\n            background: \"215 20.2% 65.1%\",\n            foreground: \"222.2 84% 4.9%\",\n            primary: \"215 20.2% 65.1%\",\n          },\n          dark: {\n            foreground: \"60 9.1% 97.8%\",\n            primary: \"oklch(0.72 0.11 178)\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n              :root {\n                --background: hsl(210 40% 98%);\n                --foreground: hsl(222.2 84% 4.9%);\n                --primary: hsl(215 20.2% 65.1%);\n              }\n\n              .dark {\n                --background: hsl(222.2 84% 4.9%);\n                --foreground: hsl(60 9.1% 97.8%);\n                --primary: oklch(0.72 0.11 178);\n              }\n\n              @theme inline {\n                --color-background: var(--background);\n                --color-foreground: var(--foreground);\n                --color-primary: var(--primary);\n      }\n              \"\n    `)\n  })\n\n  test(\"should update theme vars if present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        :root {\n          --background: hsl(210 40% 98%);\n        }\n\n        .dark {\n          --background: hsl(222.2 84% 4.9%);\n        }\n\n        @theme inline {\n          --color-background: var(--background);\n        }\n        `,\n        {\n          theme: {\n            \"font-poppins\": \"Poppins, sans-serif\",\n            \"breakpoint-3xl\": \"120rem\",\n            \"shadow-2xs\": \"0px 1px 2px 0px rgba(0, 0, 0, 0.05)\",\n            \"animate-bounce\": \"bounce 1s infinite\",\n          },\n          light: {\n            background: \"215 20.2% 65.1%\",\n            foreground: \"222.2 84% 4.9%\",\n            primary: \"215 20.2% 65.1%\",\n          },\n          dark: {\n            foreground: \"60 9.1% 97.8%\",\n            primary: \"222.2 84% 4.9%\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n              :root {\n                --background: hsl(210 40% 98%);\n                --foreground: hsl(222.2 84% 4.9%);\n                --primary: hsl(215 20.2% 65.1%);\n              }\n\n              .dark {\n                --background: hsl(222.2 84% 4.9%);\n                --foreground: hsl(60 9.1% 97.8%);\n                --primary: hsl(222.2 84% 4.9%);\n              }\n\n              @theme inline {\n                --color-background: var(--background);\n                --font-poppins: Poppins, sans-serif;\n                --breakpoint-3xl: 120rem;\n                --shadow-2xs: 0px 1px 2px 0px rgba(0, 0, 0, 0.05);\n                --animate-bounce: bounce 1s infinite;\n                --color-primary: var(--primary);\n                --color-foreground: var(--foreground);\n              }\n              \"\n    `)\n  })\n\n  test(\"should NOT override theme vars if overwriteCssVars is false\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        :root {\n          --background: hsl(210 40% 98%);\n        }\n\n        .dark {\n          --background: hsl(222.2 84% 4.9%);\n        }\n\n        @theme inline {\n          --color-background: var(--background);\n          --font-sans: Inter, sans-serif;\n        }\n        `,\n        {\n          theme: {\n            \"font-sans\": \"Poppins, sans-serif\",\n            \"breakpoint-3xl\": \"120rem\",\n          },\n          light: {\n            background: \"215 20.2% 65.1%\",\n            foreground: \"222.2 84% 4.9%\",\n            primary: \"215 20.2% 65.1%\",\n          },\n          dark: {\n            foreground: \"60 9.1% 97.8%\",\n            primary: \"222.2 84% 4.9%\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n              :root {\n                --background: hsl(210 40% 98%);\n                --foreground: hsl(222.2 84% 4.9%);\n                --primary: hsl(215 20.2% 65.1%);\n              }\n\n              .dark {\n                --background: hsl(222.2 84% 4.9%);\n                --foreground: hsl(60 9.1% 97.8%);\n                --primary: hsl(222.2 84% 4.9%);\n              }\n\n              @theme inline {\n                --color-background: var(--background);\n                --font-sans: Inter, sans-serif;\n                --breakpoint-3xl: 120rem;\n                --color-primary: var(--primary);\n                --color-foreground: var(--foreground);\n              }\n              \"\n    `)\n  })\n\n  test(\"should override theme vars if overwriteCssVars is true\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        :root {\n          --background: hsl(210 40% 98%);\n        }\n\n        .dark {\n          --background: hsl(222.2 84% 4.9%);\n        }\n\n        @theme inline {\n          --color-background: var(--background);\n          --font-sans: Inter, sans-serif;\n        }\n        `,\n        {\n          theme: {\n            \"font-sans\": \"Poppins, sans-serif\",\n            \"breakpoint-3xl\": \"120rem\",\n          },\n          light: {\n            background: \"215 20.2% 65.1%\",\n            foreground: \"222.2 84% 4.9%\",\n            primary: \"215 20.2% 65.1%\",\n          },\n          dark: {\n            foreground: \"60 9.1% 97.8%\",\n            primary: \"222.2 84% 4.9%\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\", overwriteCssVars: true }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n              :root {\n                --background: hsl(215 20.2% 65.1%);\n                --foreground: hsl(222.2 84% 4.9%);\n                --primary: hsl(215 20.2% 65.1%);\n              }\n\n              .dark {\n                --background: hsl(222.2 84% 4.9%);\n                --foreground: hsl(60 9.1% 97.8%);\n                --primary: hsl(222.2 84% 4.9%);\n              }\n\n              @theme inline {\n                --color-background: var(--background);\n                --font-sans: Poppins, sans-serif;\n                --breakpoint-3xl: 120rem;\n                --color-primary: var(--primary);\n                --color-foreground: var(--foreground);\n              }\n              \"\n    `)\n  })\n\n  test(\"should only add hsl and color vars if color\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        :root {\n          --background: hsl(210 40% 98%);\n        }\n\n        .dark {\n          --background: hsl(222.2 84% 4.9%);\n        }\n\n        @theme inline {\n          --color-background: var(--background);\n        }\n        `,\n        {\n          light: {\n            background: \"215 20.2% 65.1%\",\n            foreground: \"222.2 84% 4.9%\",\n            primary: \"215 20.2% 65.1%\",\n            foo: \"0.5rem\",\n          },\n          dark: {\n            foreground: \"60 9.1% 97.8%\",\n            primary: \"222.2 84% 4.9%\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n              :root {\n                --background: hsl(210 40% 98%);\n                --foreground: hsl(222.2 84% 4.9%);\n                --primary: hsl(215 20.2% 65.1%);\n                --foo: 0.5rem;\n              }\n\n              .dark {\n                --background: hsl(222.2 84% 4.9%);\n                --foreground: hsl(60 9.1% 97.8%);\n                --primary: hsl(222.2 84% 4.9%);\n              }\n\n              @theme inline {\n                --color-background: var(--background);\n                --foo: var(--foo);\n                --color-primary: var(--primary);\n                --color-foreground: var(--foreground);\n              }\n              \"\n    `)\n  })\n\n  test(\"should not add base layer if it is already present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        :root {\n          --background: hsl(210 40% 98%);\n        }\n\n        .dark {\n          --background: hsl(222.2 84% 4.9%);\n        }\n\n        @theme inline {\n          --color-background: var(--background);\n        }\n\n        @layer base {\n          * {\n            @apply border-border;\n          }\n          body {\n            @apply bg-background text-foreground;\n          }\n        }\n        `,\n        {\n          light: {\n            background: \"215 20.2% 65.1%\",\n            foreground: \"222.2 84% 4.9%\",\n            primary: \"215 20.2% 65.1%\",\n          },\n          dark: {\n            foreground: \"60 9.1% 97.8%\",\n            primary: \"222.2 84% 4.9%\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n              :root {\n                --background: hsl(210 40% 98%);\n                --foreground: hsl(222.2 84% 4.9%);\n                --primary: hsl(215 20.2% 65.1%);\n              }\n\n              .dark {\n                --background: hsl(222.2 84% 4.9%);\n                --foreground: hsl(60 9.1% 97.8%);\n                --primary: hsl(222.2 84% 4.9%);\n              }\n\n              @theme inline {\n                --color-background: var(--background);\n                --color-primary: var(--primary);\n                --color-foreground: var(--foreground);\n              }\n\n              @layer base {\n                * {\n                  @apply border-border;\n                }\n                body {\n                  @apply bg-background text-foreground;\n                }\n              }\n              \"\n    `)\n  })\n\n  test(\"it should add the dark @custom-variant if not present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {\n          light: {\n            background: \"0 0% 100%\",\n            foreground: \"240 10% 3.9%\",\n          },\n          dark: {\n            background: \"240 10% 3.9%\",\n            foreground: \"0 0% 98%\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      :root {\n          --background: hsl(0 0% 100%);\n          --foreground: hsl(240 10% 3.9%);\n      }\n\n      .dark {\n          --background: hsl(240 10% 3.9%);\n          --foreground: hsl(0 0% 98%);\n      }\n\n      @theme inline {\n          --color-background: var(--background);\n          --color-foreground: var(--foreground);\n      }\n              \"\n    `)\n  })\n\n  test(\"it should only add hsl() if not already present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {\n          light: {\n            background: \"0 0% 100%\",\n            foreground: \"hsl(240 10% 3.9%)\",\n          },\n          dark: {\n            background: \"hsl(240 10% 3.9%)\",\n            foreground: \"0 0% 98%\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      :root {\n          --background: hsl(0 0% 100%);\n          --foreground: hsl(240 10% 3.9%);\n      }\n\n      .dark {\n          --background: hsl(240 10% 3.9%);\n          --foreground: hsl(0 0% 98%);\n      }\n\n      @theme inline {\n          --color-background: var(--background);\n          --color-foreground: var(--foreground);\n      }\n              \"\n    `)\n  })\n\n  test(\"it should only add hsl() for rgb and hex values\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {\n          light: {\n            background: \"rgb(255, 255, 255)\",\n            foreground: \"hsl(240 10% 3.9%)\",\n          },\n          dark: {\n            background: \"hsl(240 10% 3.9%)\",\n            foreground: \"#000fff\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      :root {\n          --background: rgb(255, 255, 255);\n          --foreground: hsl(240 10% 3.9%);\n      }\n\n      .dark {\n          --background: hsl(240 10% 3.9%);\n          --foreground: #000fff;\n      }\n\n      @theme inline {\n          --color-background: var(--background);\n          --color-foreground: var(--foreground);\n      }\n              \"\n    `)\n  })\n\n  test(\"should add --radius-* if radius present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {\n          light: {\n            radius: \"0.125rem\",\n          },\n          dark: {\n            radius: \"0.5rem\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      :root {\n          --radius: 0.125rem;\n      }\n\n      .dark {\n          --radius: 0.5rem;\n      }\n\n      @theme inline {\n          --radius-sm: calc(var(--radius) * 0.6);\n          --radius-md: calc(var(--radius) * 0.8);\n          --radius-lg: var(--radius);\n          --radius-xl: calc(var(--radius) * 1.4);\n          --radius-2xl: calc(var(--radius) * 1.8);\n          --radius-3xl: calc(var(--radius) * 2.2);\n          --radius-4xl: calc(var(--radius) * 2.6);\n      }\n              \"\n    `)\n  })\n\n  test(\"should NOT add --radius-* if already present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n      @custom-variant dark (&:is(.dark *));\n      :root {\n        --radius: 0.125rem;\n      }\n      @theme inline {\n        --radius-sm: calc(var(--radius) - 4px);\n        --radius-md: calc(var(--radius) - 2px);\n        --radius-lg: var(--radius);\n        --radius-xl: calc(var(--radius) + 4px);\n      }\n        `,\n        {\n          light: {\n            radius: \"0.125rem\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n            @custom-variant dark (&:is(.dark *));\n            :root {\n              --radius: 0.125rem;\n            }\n            @theme inline {\n              --radius-sm: calc(var(--radius) - 4px);\n              --radius-md: calc(var(--radius) - 2px);\n              --radius-lg: var(--radius);\n              --radius-xl: calc(var(--radius) + 4px);\n              --radius-2xl: calc(var(--radius) * 1.8);\n              --radius-3xl: calc(var(--radius) * 2.2);\n              --radius-4xl: calc(var(--radius) * 2.6);\n            }\n              \"\n    `)\n  })\n\n  test(\"should use --sidebar for --sidebar-background\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {\n          light: {\n            \"sidebar-background\": \"hsl(0 0% 98%)\",\n          },\n          dark: {\n            \"sidebar-background\": \"hsl(0 0% 10%)\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      :root {\n          --sidebar: hsl(0 0% 98%);\n      }\n\n      .dark {\n          --sidebar: hsl(0 0% 10%);\n      }\n\n      @theme inline {\n          --color-sidebar: var(--sidebar);\n      }\n              \"\n    `)\n  })\n\n  test(\"should add plugin if not present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {},\n        { tailwind: { cssVariables: true } },\n        {\n          tailwindVersion: \"v4\",\n          tailwindConfig: { plugins: ['require(\"tailwindcss-animate\")'] },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \"tailwindcss-animate\";\n\n      @custom-variant dark (&:is(.dark *));\n              \"\n    `)\n  })\n\n  test(\"should NOT add plugin if already present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        @plugin \"tailwindcss-animate\";\n        `,\n        {},\n        { tailwind: { cssVariables: true } },\n        {\n          tailwindVersion: \"v4\",\n          tailwindConfig: {\n            plugins: [\n              'require(\"tailwindcss-animate\")',\n              'require(\"@tailwindcss/typography\")',\n            ],\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n              @plugin \"tailwindcss-animate\";\n\n              @plugin \"@tailwindcss/typography\";\n              \"\n    `)\n  })\n\n  test(\"should preserve quotes\", async () => {\n    expect(\n      await transformCssVars(\n        `@import 'tailwindcss';\n        `,\n        {},\n        { tailwind: { cssVariables: true } },\n        {\n          tailwindVersion: \"v4\",\n          tailwindConfig: {\n            plugins: [\n              'require(\"tailwindcss-animate\")',\n              'require(\"@tailwindcss/typography\")',\n            ],\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import 'tailwindcss';\n\n      @plugin '@tailwindcss/typography';\n\n      @plugin 'tailwindcss-animate';\n\n      @custom-variant dark (&:is(.dark *));\n              \"\n    `)\n  })\n\n  test(\"should add @keyframes if not present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {},\n        { tailwind: { cssVariables: true } },\n        {\n          tailwindVersion: \"v4\",\n          tailwindConfig: {\n            theme: {\n              extend: {\n                keyframes: {\n                  \"accordion-down\": {\n                    from: { height: \"0\" },\n                    to: { height: \"var(--radix-accordion-content-height)\" },\n                  },\n                  \"accordion-up\": {\n                    from: { height: \"var(--radix-accordion-content-height)\" },\n                    to: { height: \"0\" },\n                  },\n                },\n              },\n            },\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      @theme inline {\n\n        @keyframes accordion-down {\n          from {\n            height: 0;\n          }\n          to {\n            height: var(--radix-accordion-content-height);\n          }\n        }\n\n        @keyframes accordion-up {\n          from {\n            height: var(--radix-accordion-content-height);\n          }\n          to {\n            height: 0;\n          }\n        }\n      }\n              \"\n    `)\n  })\n\n  test(\"should NOT add @keyframes if already present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n\n        @theme inline {\n          @keyframes accordion-down {\n          from {\n            height: 0;\n          }\n          to {\n            height: var(--radix-accordion-content-height);\n          }\n        }\n        }\n        `,\n        {},\n        { tailwind: { cssVariables: true } },\n        {\n          tailwindVersion: \"v4\",\n          tailwindConfig: {\n            theme: {\n              extend: {\n                keyframes: {\n                  \"accordion-down\": {\n                    from: { height: \"0\" },\n                    to: { height: \"var(--radix-accordion-content-height)\" },\n                  },\n                  \"accordion-up\": {\n                    from: { height: \"var(--radix-accordion-content-height)\" },\n                    to: { height: \"0\" },\n                  },\n                },\n              },\n            },\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n              @theme inline {\n                @keyframes accordion-down {\n                from {\n                  height: 0;\n                }\n                to {\n                  height: var(--radix-accordion-content-height);\n                }\n              }\n\n        @keyframes accordion-up {\n          from {\n            height: var(--radix-accordion-content-height);\n                          }\n          to {\n            height: 0;\n                          }\n                }\n              }\n              \"\n    `)\n  })\n\n  test(\"should add --animate if not present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {},\n        { tailwind: { cssVariables: true } },\n        {\n          tailwindVersion: \"v4\",\n          tailwindConfig: {\n            theme: {\n              extend: {\n                keyframes: {\n                  \"accordion-down\": {\n                    from: { height: \"0\" },\n                    to: { height: \"var(--radix-accordion-content-height)\" },\n                  },\n                  \"accordion-up\": {\n                    from: { height: \"var(--radix-accordion-content-height)\" },\n                    to: { height: \"0\" },\n                  },\n                },\n                animation: {\n                  \"accordion-down\": \"accordion-down 0.2s ease-out\",\n                  \"accordion-up\": \"accordion-up 0.2s ease-out\",\n                },\n              },\n            },\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      @theme inline {\n        --animate-accordion-down: accordion-down 0.2s ease-out;\n        --animate-accordion-up: accordion-up 0.2s ease-out;\n\n        @keyframes accordion-down {\n          from {\n            height: 0;\n          }\n          to {\n            height: var(--radix-accordion-content-height);\n          }\n        }\n\n        @keyframes accordion-up {\n          from {\n            height: var(--radix-accordion-content-height);\n          }\n          to {\n            height: 0;\n          }\n        }\n      }\n              \"\n    `)\n  })\n\n  test(\"should NOT add --animate if already present\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        @theme inline {\n          --animate-accordion-up: accordion-up 0.3s ease-out;\n        }\n        `,\n        {},\n        { tailwind: { cssVariables: true } },\n        {\n          tailwindVersion: \"v4\",\n          tailwindConfig: {\n            theme: {\n              extend: {\n                keyframes: {\n                  \"accordion-down\": {\n                    from: { height: \"0\" },\n                    to: { height: \"var(--radix-accordion-content-height)\" },\n                  },\n                  \"accordion-up\": {\n                    from: { height: \"var(--radix-accordion-content-height)\" },\n                    to: { height: \"0\" },\n                  },\n                },\n                animation: {\n                  \"accordion-down\": \"accordion-down 0.2s ease-out\",\n                  \"accordion-up\": \"accordion-up 0.2s ease-out\",\n                },\n              },\n            },\n          },\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n              @theme inline {\n                --animate-accordion-up: accordion-up 0.3s ease-out;\n        --animate-accordion-down: accordion-down 0.2s ease-out;\n\n        @keyframes accordion-down {\n          from {\n            height: 0;\n                          }\n          to {\n            height: var(--radix-accordion-content-height);\n                          }\n                }\n\n        @keyframes accordion-up {\n          from {\n            height: var(--radix-accordion-content-height);\n                          }\n          to {\n            height: 0;\n                          }\n                }\n              }\n              \"\n    `)\n  })\n\n  test(\"should handle var(--color-*) references as colors\", async () => {\n    expect(\n      await transformCssVars(\n        `@import \"tailwindcss\";\n        `,\n        {\n          light: {\n            background: \"var(--color-background)\",\n            foreground: \"var(--color-foreground)\",\n            primary: \"var(--color-blue-500)\",\n            spacing: \"var(--spacing-md)\",\n          },\n          dark: {\n            background: \"var(--color-background-dark)\",\n            foreground: \"var(--color-foreground-dark)\",\n          },\n        },\n        { tailwind: { cssVariables: true } },\n        { tailwindVersion: \"v4\" }\n      )\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      :root {\n          --background: var(--color-background);\n          --foreground: var(--color-foreground);\n          --primary: var(--color-blue-500);\n          --spacing: var(--spacing-md);\n      }\n\n      .dark {\n          --background: var(--color-background-dark);\n          --foreground: var(--color-foreground-dark);\n      }\n\n      @theme inline {\n          --color-background: var(--background);\n          --color-foreground: var(--foreground);\n          --color-primary: var(--primary);\n          --spacing: var(--spacing);\n      }\n              \"\n    `)\n  })\n})\n\ndescribe(\"isLocalHSLValue\", () => {\n  test.each([\n    [\"210 40% 98%\", true],\n    [\"rgb(210 40% 98%)\", false],\n    [\"oklch(210 40% 98%)\", false],\n    [\"10 42 98%\", false],\n    [\"hsl(210 40% 98% / 0.5)\", false],\n  ])(\"%s -> %s\", (value, expected) => {\n    expect(isLocalHSLValue(value)).toBe(expected)\n  })\n})\n\ndescribe(\"isColorValue\", () => {\n  test.each([\n    [\"hsl(0 0% 100%)\", true],\n    [\"rgb(255 255 255)\", true],\n    [\"#ffffff\", true],\n    [\"oklch(0.5 0.2 180)\", true],\n    [\"var(--color-background)\", true],\n    [\"var(--color-blue-500)\", true],\n    [\"--alpha(var(--color-black) / 10%)\", true],\n    [\"--alpha(var(--color-black) / 4%)\", true],\n    [\"var(--radius)\", false],\n    [\"var(--spacing)\", false],\n    [\"0.5rem\", false],\n    [\"16px\", false],\n  ])(\"%s -> %s\", (value, expected) => {\n    expect(isColorValue(value)).toBe(expected)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/update-css.test.ts",
    "content": "import { describe, expect, test } from \"vitest\"\n\nimport { transformCss } from \"../../../src/utils/updaters/update-css\"\n\ndescribe(\"transformCss\", () => {\n  test(\"should add utility classes\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@utility content-auto\": {\n        \"content-visibility\": \"auto\",\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @utility content-auto {\n          content-visibility: auto;\n      }\"\n    `)\n  })\n\n  test(\"should add utility classes with pseudo-selectors\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@utility scrollbar-hidden\": {\n        \"&::-webkit-scrollbar\": {\n          display: \"none\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @utility scrollbar-hidden {\n        &::-webkit-scrollbar {\n          display: none;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should add parameterized utility classes\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@utility tab-*\": {\n        \"tab-size\": \"--value([integer])\",\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @utility tab-* {\n          tab-size: --value([integer]);\n      }\"\n    `)\n  })\n\n  test(\"should add component styles\", async () => {\n    const input = `@tailwind base;\n@tailwind components;\n@tailwind utilities;`\n\n    const result = await transformCss(input, {\n      \"@layer components\": {\n        \".card\": {\n          \"background-color\": \"var(--color-white)\",\n          \"border-radius\": \"var(--rounded-lg)\",\n          padding: \"var(--spacing-6)\",\n          \"box-shadow\": \"var(--shadow-xl)\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @layer components {\n        .card {\n          background-color: var(--color-white);\n          border-radius: var(--rounded-lg);\n          padding: var(--spacing-6);\n          box-shadow: var(--shadow-xl);\n        }\n      }\"\n    `)\n  })\n\n  test(\"should add base styles\", async () => {\n    const input = `@tailwind base;\n@tailwind components;\n@tailwind utilities;`\n\n    const result = await transformCss(input, {\n      \"@layer base\": {\n        h1: {\n          \"font-size\": \"var(--text-2xl)\",\n        },\n        h2: {\n          \"font-size\": \"var(--text-xl)\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @layer base {\n        h1 {\n          font-size: var(--text-2xl);\n        }\n        h2 {\n          font-size: var(--text-xl);\n        }\n      }\"\n    `)\n  })\n\n  test(\"should update existing rules\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@layer components {\n  .card {\n    background-color: white;\n    padding: 1rem;\n  }\n}`\n\n    const result = await transformCss(input, {\n      \"@layer components\": {\n        \".card\": {\n          \"background-color\": \"var(--color-white)\",\n          \"border-radius\": \"var(--rounded-lg)\",\n          \"box-shadow\": \"var(--shadow-xl)\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @layer components {\n        .card {\n          background-color: var(--color-white);\n          padding: 1rem;\n          border-radius: var(--rounded-lg);\n          box-shadow: var(--shadow-xl);\n        }\n      }\"\n    `)\n  })\n\n  test(\"should add multiple rules and types\", async () => {\n    const input = `@tailwind base;\n@tailwind components;\n@tailwind utilities;`\n\n    const result = await transformCss(input, {\n      \"@utility content-auto\": {\n        \"content-visibility\": \"auto\",\n      },\n      \"@layer components\": {\n        \".card\": {\n          \"background-color\": \"var(--color-white)\",\n          \"border-radius\": \"var(--rounded-lg)\",\n        },\n      },\n      \"@layer base\": {\n        h1: {\n          \"font-size\": \"var(--text-2xl)\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @utility content-auto {\n          content-visibility: auto;\n      }\n\n      @layer components {\n        .card {\n          background-color: var(--color-white);\n          border-radius: var(--rounded-lg);\n          }\n      }\n\n      @layer base {\n        h1 {\n          font-size: var(--text-2xl);\n          }\n      }\"\n    `)\n  })\n\n  test(\"should handle nested selectors with &\", async () => {\n    const input = `@tailwind base;\n@tailwind components;\n@tailwind utilities;`\n\n    const result = await transformCss(input, {\n      \"@layer components\": {\n        \".button\": {\n          \"background-color\": \"var(--color-primary)\",\n          \"&:hover\": {\n            \"background-color\": \"var(--color-primary-dark)\",\n          },\n          \"&:active\": {\n            \"background-color\": \"var(--color-primary-darker)\",\n          },\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @layer components {\n        .button {\n          background-color: var(--color-primary);\n        }\n        .button:hover {\n          background-color: var(--color-primary-dark);\n        }\n        .button:active {\n          background-color: var(--color-primary-darker);\n        }\n      }\"\n    `)\n  })\n\n  test(\"should handle direct string content\", async () => {\n    const input = `@tailwind base;\n@tailwind components;\n@tailwind utilities;`\n\n    const result = await transformCss(input, {\n      \"@layer base\": {\n        body: \"font-family: var(--font-sans); line-height: 1.5;\",\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @layer base {\n        body {\n          font-family: var(--font-sans);\n          line-height: 1.5;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should handle nested at-rules\", async () => {\n    const input = `@tailwind base;\n@tailwind components;\n@tailwind utilities;`\n\n    const result = await transformCss(input, {\n      \"@layer components\": {\n        \"@media (min-width: 768px)\": {\n          \".card\": {\n            padding: \"2rem\",\n          },\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@tailwind base;\n      @tailwind components;\n      @tailwind utilities;\n\n      @layer components {\n\n      @media (min-width: 768px) {\n        .card {\n          padding: 2rem;\n      }\n      }\n      }\"\n    `)\n  })\n\n  test(\"should place keyframes under @theme inline directive\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@keyframes spin\": {\n        \"0%\": {\n          transform: \"rotate(0deg)\",\n        },\n        \"100%\": {\n          transform: \"rotate(360deg)\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @theme inline {\n        @keyframes spin {\n        0% {\n          transform: rotate(0deg);\n          }\n        100% {\n          transform: rotate(360deg);\n          }\n        }\n      }\"\n    `)\n  })\n\n  test(\"should add plugin directive\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      '@plugin \"foo\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \\\"foo\\\";\"\n    `)\n  })\n\n  test(\"should group plugins together after imports\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@layer base {\n  body {\n    font-family: sans-serif;\n  }\n}\n\n@utility content-auto {\n  content-visibility: auto;\n}`\n\n    const result = await transformCss(input, {\n      '@plugin \"foo\"': {},\n      '@plugin \"bar\"': {},\n      \"@layer components\": {\n        \".card\": {\n          padding: \"1rem\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \\\"foo\\\";\n      @plugin \\\"bar\\\";\n\n      @layer base {\n        body {\n          font-family: sans-serif;\n        }\n      }\n\n      @utility content-auto {\n        content-visibility: auto;\n      }\n\n      @layer components {\n        .card {\n          padding: 1rem;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should not add duplicate plugins\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@plugin \"foo\";\n\n@layer base {\n  body {\n    font-family: sans-serif;\n  }\n}`\n\n    const result = await transformCss(input, {\n      '@plugin \"foo\"': {},\n      '@plugin \"bar\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \\\"foo\\\";\n\n      @plugin \\\"bar\\\";\n\n      @layer base {\n        body {\n          font-family: sans-serif;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should add plugin when no imports exist\", async () => {\n    const input = `@layer base {\n  body {\n    font-family: sans-serif;\n  }\n}`\n\n    const result = await transformCss(input, {\n      '@plugin \"foo\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      @plugin \\\"foo\\\";\n\n      @layer base {\n        body {\n          font-family: sans-serif;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should handle plugins with quoted parameters\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      '@plugin \"@tailwindcss/typography\"': {},\n      '@plugin \"./custom-plugin.js\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \\\"@tailwindcss/typography\\\";\n      @plugin \\\"./custom-plugin.js\\\";\"\n    `)\n  })\n\n  test(\"should handle plugins with complex parameters\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      '@plugin \"tailwindcss/plugin\"': {},\n      '@plugin \"@headlessui/tailwindcss\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \\\"tailwindcss/plugin\\\";\n      @plugin \\\"@headlessui/tailwindcss\\\";\"\n    `)\n  })\n\n  test(\"should handle multiple imports with plugins\", async () => {\n    const input = `@import \"tailwindcss\";\n@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");`\n\n    const result = await transformCss(input, {\n      '@plugin \"foo\"': {},\n      '@plugin \"bar\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n      @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n      @plugin \\\"foo\\\";\n      @plugin \\\"bar\\\";\"\n    `)\n  })\n\n  test(\"should add plugins to empty file\", async () => {\n    const input = ``\n\n    const result = await transformCss(input, {\n      '@plugin \"foo\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      @plugin \\\"foo\\\"\"\n    `)\n  })\n\n  test(\"should maintain plugin order with existing plugins\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@plugin \"existing-plugin\";\n@plugin \"another-existing\";`\n\n    const result = await transformCss(input, {\n      '@plugin \"new-plugin\"': {},\n      '@plugin \"final-plugin\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \\\"existing-plugin\\\";\n      @plugin \\\"another-existing\\\";\n      @plugin \\\"new-plugin\\\";\n      @plugin \\\"final-plugin\\\";\"\n    `)\n  })\n\n  test(\"should automatically add quotes to unquoted plugin names\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@plugin foo-bar\": {},\n      \"@plugin baz\": {},\n      \"@plugin @tailwindcss/typography\": {},\n      \"@plugin ./custom-plugin.js\": {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \"foo-bar\";\n      @plugin \"baz\";\n      @plugin \"@tailwindcss/typography\";\n      @plugin \"./custom-plugin.js\";\"\n    `)\n  })\n\n  test(\"should detect duplicate plugins regardless of quotes\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@plugin foo;\n@plugin \"bar\";`\n\n    const result = await transformCss(input, {\n      \"@plugin foo\": {}, // Should detect this as duplicate\n      \"@plugin bar\": {}, // Should detect this as duplicate\n      \"@plugin baz\": {}, // Should add this one\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin foo;\n      @plugin \"bar\";\n      @plugin \"baz\";\"\n    `)\n  })\n\n  test(\"should not double-quote already quoted plugin names\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      '@plugin \"already-quoted\"': {},\n      \"@plugin 'single-quoted'\": {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \"already-quoted\";\n      @plugin 'single-quoted';\"\n    `)\n  })\n\n  test(\"should add @import statements\", async () => {\n    const input = ``\n\n    const result = await transformCss(input, {\n      '@import \"tailwindcss\"': {},\n      '@import \"./styles/base.css\"': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \\\"tailwindcss\\\";\n      @import \\\"./styles/base.css\\\";\"\n    `)\n  })\n\n  test(\"should add @import with url() syntax\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      '@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\")':\n        {},\n      \"@import url('./local-styles.css')\": {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n      @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n      @import url('./local-styles.css');\"\n    `)\n  })\n\n  test(\"should not duplicate existing @import statements\", async () => {\n    const input = `@import \"tailwindcss\";\n@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n@import \"./styles/base.css\";`\n\n    const result = await transformCss(input, {\n      '@import \"tailwindcss\"': {}, // Should not duplicate\n      '@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\")':\n        {}, // Should not duplicate\n      '@import \"./styles/base.css\"': {}, // Should not duplicate\n      '@import \"./styles/new.css\"': {}, // Should add this one\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n      @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n      @import \"./styles/base.css\";\n      @import \"./styles/new.css\";\"\n    `)\n  })\n\n  test(\"should handle @import with media queries\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      '@import \"print-styles.css\" print': {},\n      '@import url(\"mobile.css\") screen and (max-width: 768px)': {},\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n      @import \"print-styles.css\" print;\n      @import url(\"mobile.css\") screen and (max-width: 768px);\"\n    `)\n  })\n\n  test(\"should place imports before plugins and other content\", async () => {\n    const input = `@layer base {\n  body {\n    font-family: sans-serif;\n  }\n}`\n\n    const result = await transformCss(input, {\n      '@import \"tailwindcss\"': {},\n      '@plugin \"foo\"': {},\n      \"@layer components\": {\n        \".card\": {\n          padding: \"1rem\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @plugin \"foo\";\n\n      @layer base {\n        body {\n          font-family: sans-serif;\n        }\n      }\n\n      @layer components {\n        .card {\n          padding: 1rem;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should handle @apply within rules\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@layer base\": {\n        \"*\": {\n          \"@apply border-border outline-ring/70\": {},\n        },\n        h1: {\n          \"@apply text-2xl font-bold\": {},\n          color: \"red\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @layer base {\n        * {\n          @apply border-border outline-ring/70;\n        }\n        h1 {\n          @apply text-2xl font-bold;\n          color: red;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should handle at-rules with empty body\", async () => {\n    const input = ``\n\n    const result = await transformCss(input, {\n      \"@tailwind base\": {},\n      \"@tailwind components\": {},\n      \"@tailwind utilities\": {},\n      \"@layer components\": {\n        \".btn\": {\n          \"@apply px-4 py-2 rounded\": {},\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n      @tailwind base;\n\n      @tailwind components;\n\n      @tailwind utilities;\n\n      @layer components {\n        .btn {\n          @apply px-4 py-2 rounded;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should handle empty CSS rules\", async () => {\n    const input = ``\n\n    const result = await transformCss(input, {\n      \".empty-rule\": {},\n      \".rule-with-content\": {\n        padding: \"1rem\",\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"\n        .empty-rule {}\n        .rule-with-content {\n          padding: 1rem;\n      }\"\n    `)\n  })\n\n  test(\"should handle comprehensive CSS with plugins\", async () => {\n    const input = `@import \"tailwindcss\";\n@import url(\"fonts.css\");\n\n@layer base {\n  * {\n    box-sizing: border-box;\n  }\n}\n\n@utility content-auto {\n  content-visibility: auto;\n}\n\n@keyframes fade {\n  from { opacity: 0; }\n  to { opacity: 1; }\n}`\n\n    const result = await transformCss(input, {\n      '@plugin \"@tailwindcss/typography\"': {},\n      '@plugin \"./custom\"': {},\n      \"@layer components\": {\n        \".btn\": {\n          padding: \"0.5rem 1rem\",\n          \"&:hover\": {\n            \"background-color\": \"blue\",\n          },\n        },\n      },\n      \"@utility animate-fast\": {\n        \"animation-duration\": \"0.1s\",\n      },\n      \"@keyframes spin-fast\": {\n        \"0%\": { transform: \"rotate(0deg)\" },\n        \"100%\": { transform: \"rotate(360deg)\" },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n      @import url(\"fonts.css\");\n\n      @plugin \\\"@tailwindcss/typography\\\";\n      @plugin \\\"./custom\\\";\n\n      @layer base {\n        * {\n          box-sizing: border-box;\n        }\n      }\n\n      @utility content-auto {\n        content-visibility: auto;\n      }\n\n      @keyframes fade {\n        from { opacity: 0; }\n        to { opacity: 1; }\n      }\n\n      @layer components {\n        .btn {\n          padding: 0.5rem 1rem;\n        }\n        .btn:hover {\n          background-color: blue;\n        }\n      }\n\n      @utility animate-fast {\n          animation-duration: 0.1s;\n      }\n\n      @theme inline {\n        @keyframes spin-fast {\n        0% {\n          transform: rotate(0deg);\n          }\n        100% {\n          transform: rotate(360deg);\n          }\n        }\n      }\"\n    `)\n  })\n\n  test(\"should add base layer styles from registry:style css field\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    // This is the exact shape from the registry:style index item.\n    const result = await transformCss(input, {\n      '@import \"tw-animate-css\"': {},\n      '@import \"shadcn/tailwind.css\"': {},\n      \"@layer base\": {\n        \"*\": {\n          \"@apply border-border outline-ring/50\": {},\n        },\n        body: {\n          \"@apply bg-background text-foreground\": {},\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n      @import \"tw-animate-css\";\n      @import \"shadcn/tailwind.css\";\n\n      @layer base {\n        * {\n          @apply border-border outline-ring/50;\n        }\n        body {\n          @apply bg-background text-foreground;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should not duplicate base layer styles if already present\", async () => {\n    const input = `@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}`\n\n    const result = await transformCss(input, {\n      '@import \"tw-animate-css\"': {},\n      '@import \"shadcn/tailwind.css\"': {},\n      \"@layer base\": {\n        \"*\": {\n          \"@apply border-border outline-ring/50\": {},\n        },\n        body: {\n          \"@apply bg-background text-foreground\": {},\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n      @import \"tw-animate-css\";\n      @import \"shadcn/tailwind.css\";\n\n      @layer base {\n        * {\n          @apply border-border outline-ring/50;\n        }\n        body {\n          @apply bg-background text-foreground;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should handle @apply inside @utility\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@utility custom-btn\": {\n        \"@apply px-4 py-2 rounded-md\": {},\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @utility custom-btn {\n          @apply px-4 py-2 rounded-md;\n      }\"\n    `)\n  })\n\n  test(\"should handle @apply mixed with declarations inside @utility\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@utility custom-card\": {\n        \"@apply bg-white shadow-md\": {},\n        \"border-radius\": \"0.5rem\",\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @utility custom-card {\n          @apply bg-white shadow-md;\n          border-radius: 0.5rem;\n      }\"\n    `)\n  })\n\n  test(\"should handle multiple @apply inside @utility\", async () => {\n    const input = `@import \"tailwindcss\";`\n\n    const result = await transformCss(input, {\n      \"@utility custom-input\": {\n        \"@apply border border-gray-300 rounded-md\": {},\n        \"@apply focus:ring-2 focus:ring-blue-500\": {},\n        padding: \"0.5rem\",\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @utility custom-input {\n          @apply border border-gray-300 rounded-md;\n          @apply focus:ring-2 focus:ring-blue-500;\n          padding: 0.5rem;\n      }\"\n    `)\n  })\n\n  test(\"should add @apply to existing @utility\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@utility custom-alert {\n    font-size: 1rem;\n}`\n\n    const result = await transformCss(input, {\n      \"@utility custom-alert\": {\n        \"@apply font-bold text-red-500\": {},\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @utility custom-alert {\n          font-size: 1rem;\n          @apply font-bold text-red-500;\n      }\"\n    `)\n  })\n\n  test(\"should not duplicate @apply inside existing @utility\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@utility custom-badge {\n    @apply inline-flex items-center;\n    font-size: 0.75rem;\n}`\n\n    const result = await transformCss(input, {\n      \"@utility custom-badge\": {\n        \"@apply inline-flex items-center\": {},\n        \"font-size\": \"0.875rem\",\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @utility custom-badge {\n          @apply inline-flex items-center;\n          font-size: 0.875rem;\n      }\"\n    `)\n  })\n\n  test(\"should merge @apply directives in the same rule instead of duplicating\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@layer base {\n  body {\n    @apply bg-background text-foreground;\n  }\n}`\n\n    const result = await transformCss(input, {\n      \"@layer base\": {\n        body: {\n          \"@apply font-sans\": {},\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @layer base {\n        body {\n          @apply bg-background text-foreground font-sans;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should resolve conflicting tailwind classes when merging @apply\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@layer base {\n  body {\n    @apply bg-background font-serif text-foreground;\n  }\n}`\n\n    const result = await transformCss(input, {\n      \"@layer base\": {\n        body: {\n          \"@apply font-mono\": {},\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @layer base {\n        body {\n          @apply bg-background text-foreground font-mono;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should not duplicate @apply classes that already exist\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@layer base {\n  body {\n    @apply bg-background text-foreground font-sans;\n  }\n}`\n\n    const result = await transformCss(input, {\n      \"@layer base\": {\n        body: {\n          \"@apply font-sans\": {},\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @layer base {\n        body {\n          @apply bg-background text-foreground font-sans;\n        }\n      }\"\n    `)\n  })\n\n  test(\"should replace existing keyframes instead of duplicating\", async () => {\n    const input = `@import \"tailwindcss\";\n\n@theme inline {\n  @keyframes skeleton {\n    to {\n      background-position: \"-100% 0\";\n    }\n  }\n}`\n\n    const result = await transformCss(input, {\n      \"@keyframes skeleton\": {\n        \"to\": {\n          \"background-position\": \"-200% 0\",\n        },\n      },\n    })\n\n    expect(result).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @theme inline {\n        @keyframes skeleton {\n        to {\n          background-position: -200% 0;\n          }\n        }\n      }\"\n    `)\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/update-dependencies.test.ts",
    "content": "import path from \"path\"\nimport { execa } from \"execa\"\nimport prompts from \"prompts\"\nimport { afterEach, describe, expect, test, vi } from \"vitest\"\n\nimport { updateDependencies } from \"../../../src/utils/updaters/update-dependencies\"\n\nvi.mock(\"execa\")\nvi.mock(\"prompts\")\n\ndescribe(\"updateDependencies\", () => {\n  afterEach(() => {\n    vi.restoreAllMocks()\n  })\n\n  test.each([\n    {\n      description:\n        \"npm without react-day-picker v8 includes no additional flags\",\n      options: { silent: true },\n      dependencies: [\"first\", \"second\", \"third\"],\n      devDependencies: [\"fourth\"],\n      config: {\n        resolvedPaths: {\n          cwd: path.resolve(__dirname, \"../../fixtures/project-npm\"),\n        },\n      },\n      expectedPackageManager: \"npm\",\n      expectedArgs: [\"install\", \"first\", \"second\", \"third\"],\n      expectedDevArgs: [\"install\", \"-D\", \"fourth\"],\n    },\n    {\n      description:\n        \"npm with react-day-picker v8 applies force prompt when silent\",\n      options: { silent: true },\n      dependencies: [\"first\", \"second\", \"third\"],\n      devDependencies: [\"fourth\"],\n      config: {\n        resolvedPaths: {\n          cwd: path.resolve(__dirname, \"../../fixtures/project-npm-react19\"),\n        },\n      },\n      expectedPackageManager: \"npm\",\n      expectedArgs: [\"install\", \"--force\", \"first\", \"second\", \"third\"],\n      expectedDevArgs: [\"install\", \"--force\", \"-D\", \"fourth\"],\n    },\n    {\n      description:\n        \"npm with react-day-picker v8 prompts for flag when not silent\",\n      flagPrompt: \"legacy-peer-deps\",\n      dependencies: [\"first\", \"second\", \"third\"],\n      devDependencies: [\"fourth\"],\n      config: {\n        resolvedPaths: {\n          cwd: path.resolve(__dirname, \"../../fixtures/project-npm-react19\"),\n        },\n      },\n      expectedPackageManager: \"npm\",\n      expectedArgs: [\n        \"install\",\n        \"--legacy-peer-deps\",\n        \"first\",\n        \"second\",\n        \"third\",\n      ],\n      expectedDevArgs: [\"install\", \"--legacy-peer-deps\", \"-D\", \"fourth\"],\n    },\n    {\n      description: \"deno uses npm: package prefix\",\n      dependencies: [\"first\", \"second\", \"third\"],\n      devDependencies: [\"fourth\"],\n      config: {\n        resolvedPaths: {\n          cwd: path.resolve(__dirname, \"../../fixtures/project-deno\"),\n        },\n      },\n      expectedPackageManager: \"deno\",\n      expectedArgs: [\"add\", \"npm:first\", \"npm:second\", \"npm:third\"],\n      expectedDevArgs: [\"add\", \"-D\", \"npm:fourth\"],\n    },\n    {\n      description: \"bun uses bun\",\n      dependencies: [\"first\", \"second\", \"third\"],\n      devDependencies: [\"fourth\"],\n      config: {\n        resolvedPaths: {\n          cwd: path.resolve(__dirname, \"../../fixtures/project-bun\"),\n        },\n      },\n      expectedPackageManager: \"bun\",\n      expectedArgs: [\"add\", \"first\", \"second\", \"third\"],\n      expectedDevArgs: [\"add\", \"-D\", \"fourth\"],\n    },\n    {\n      description: \"pnpm uses pnpm\",\n      dependencies: [\"first\", \"second\", \"third\"],\n      devDependencies: [\"fourth\"],\n      config: {\n        resolvedPaths: {\n          cwd: path.resolve(__dirname, \"../../fixtures/project-pnpm\"),\n        },\n      },\n      expectedPackageManager: \"pnpm\",\n      expectedArgs: [\"add\", \"first\", \"second\", \"third\"],\n      expectedDevArgs: [\"add\", \"-D\", \"fourth\"],\n    },\n    {\n      description: \"deduplicates input dependencies\",\n      options: { silent: true },\n      dependencies: [\"first\", \"first\"],\n      devDependencies: [\"second\", \"second\"],\n      config: {\n        resolvedPaths: {\n          cwd: path.resolve(__dirname, \"../../fixtures/project-npm\"),\n        },\n      },\n      expectedPackageManager: \"npm\",\n      expectedArgs: [\"install\", \"first\"],\n      expectedDevArgs: [\"install\", \"-D\", \"second\"],\n    },\n  ])(\n    \"$description\",\n    async ({\n      options,\n      flagPrompt,\n      config,\n      dependencies,\n      devDependencies,\n      expectedPackageManager,\n      expectedArgs,\n      expectedDevArgs,\n    }) => {\n      vi.mocked(prompts).mockResolvedValue({ flag: flagPrompt })\n\n      await updateDependencies(\n        dependencies,\n        devDependencies,\n        config,\n        options ?? {}\n      )\n\n      if (flagPrompt) {\n        expect(prompts).toHaveBeenCalled()\n      }\n\n      expect(execa).toHaveBeenCalledWith(expectedPackageManager, expectedArgs, {\n        cwd: config?.resolvedPaths.cwd,\n      })\n\n      expect(execa).toHaveBeenCalledWith(\n        expectedPackageManager,\n        expectedDevArgs,\n        { cwd: config?.resolvedPaths.cwd }\n      )\n    }\n  )\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/update-files.test.ts",
    "content": "import { existsSync, promises as fs } from \"fs\"\nimport path from \"path\"\nimport { afterAll, afterEach, describe, expect, test, vi } from \"vitest\"\n\nimport { getConfig } from \"../../../src/utils/get-config\"\nimport {\n  findCommonRoot,\n  resolveFilePath,\n  resolveModuleByProbablePath,\n  resolveNestedFilePath,\n  toAliasedImport,\n  updateFiles,\n} from \"../../../src/utils/updaters/update-files\"\n\nvi.mock(\"fs/promises\", async () => {\n  const actual = (await vi.importActual(\n    \"fs/promises\"\n  )) as typeof import(\"fs/promises\")\n\n  return {\n    ...actual,\n    writeFile: vi.fn().mockResolvedValue(undefined),\n    readFile: vi.fn().mockImplementation(actual.readFile),\n    mkdir: vi.fn().mockResolvedValue(undefined),\n  }\n})\n\nvi.mock(\"fs\", async () => {\n  const actual = (await vi.importActual(\"fs\")) as typeof import(\"fs\")\n  return {\n    ...actual,\n    existsSync: vi.fn().mockImplementation(actual.existsSync),\n    promises: {\n      ...actual.promises,\n      writeFile: vi.fn().mockResolvedValue(undefined),\n    },\n  }\n})\n\nvi.mock(\"prompts\")\n\nafterEach(async () => {\n  vi.clearAllMocks()\n  // Restore the actual implementation of existsSync after clearing mocks\n  const actual = (await vi.importActual(\"fs\")) as typeof import(\"fs\")\n  vi.mocked(existsSync).mockImplementation(actual.existsSync)\n})\n\nafterAll(() => {\n  vi.resetAllMocks()\n})\n\ndescribe(\"resolveFilePath\", () => {\n  test.each([\n    {\n      description: \"should use target when provided\",\n      file: {\n        path: \"hello-world/ui/button.tsx\",\n        type: \"registry:ui\",\n        target: \"ui/button.tsx\",\n      },\n      resolvedPath: \"/foo/bar/ui/button.tsx\",\n      projectInfo: {\n        isSrcDir: false,\n      },\n    },\n    {\n      description: \"should use nested target when provided\",\n      file: {\n        path: \"hello-world/components/example-card.tsx\",\n        type: \"registry:component\",\n        target: \"components/cards/example-card.tsx\",\n      },\n      resolvedPath: \"/foo/bar/components/cards/example-card.tsx\",\n      projectInfo: {\n        isSrcDir: false,\n      },\n    },\n    {\n      description: \"should use home target (~) when provided\",\n      file: {\n        path: \"hello-world/foo.json\",\n        type: \"registry:lib\",\n        target: \"~/foo.json\",\n      },\n      resolvedPath: \"/foo/bar/foo.json\",\n      projectInfo: {\n        isSrcDir: false,\n      },\n    },\n  ])(\"$description\", ({ file, resolvedPath, projectInfo }) => {\n    expect(\n      resolveFilePath(\n        file,\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        projectInfo\n      )\n    ).toBe(resolvedPath)\n  })\n\n  test.each([\n    {\n      description: \"should use src directory when provided\",\n      file: {\n        path: \"hello-world/ui/button.tsx\",\n        type: \"registry:ui\",\n        target: \"design-system/ui/button.tsx\",\n      },\n      resolvedPath: \"/foo/bar/src/design-system/ui/button.tsx\",\n      projectInfo: {\n        isSrcDir: true,\n      },\n    },\n    {\n      description: \"should NOT use src directory for root files\",\n      file: {\n        path: \"hello-world/.env\",\n        type: \"registry:file\",\n        target: \"~/.env\",\n      },\n      resolvedPath: \"/foo/bar/.env\",\n      projectInfo: {\n        isSrcDir: true,\n      },\n    },\n    {\n      description: \"should use src directory when isSrcDir is true\",\n      file: {\n        path: \"hello-world/lib/foo.ts\",\n        type: \"registry:lib\",\n        target: \"lib/foo.ts\",\n      },\n      resolvedPath: \"/foo/bar/src/lib/foo.ts\",\n      projectInfo: {\n        isSrcDir: true,\n      },\n    },\n    {\n      description: \"should strip src directory when isSrcDir is false\",\n      file: {\n        path: \"hello-world/path/to/bar/baz.ts\",\n        type: \"registry:lib\",\n        target: \"src/path/to/bar/baz.ts\",\n      },\n      resolvedPath: \"/foo/bar/path/to/bar/baz.ts\",\n      projectInfo: {\n        isSrcDir: false,\n      },\n    },\n  ])(\"$description\", ({ file, resolvedPath, projectInfo }) => {\n    expect(\n      resolveFilePath(\n        file,\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/src/components\",\n            ui: \"/foo/bar/src/primitives\",\n            lib: \"/foo/bar/src/lib\",\n            hooks: \"/foo/bar/src/hooks\",\n          },\n        },\n        projectInfo\n      )\n    ).toBe(resolvedPath)\n  })\n\n  test(\"should resolve registry:ui file types\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/ui/button.tsx\",\n          type: \"registry:ui\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/components/ui/button.tsx\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/ui/button.tsx\",\n          type: \"registry:ui\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/src/components\",\n            ui: \"/foo/bar/src/primitives\",\n            lib: \"/foo/bar/src/lib\",\n            hooks: \"/foo/bar/src/hooks\",\n          },\n        },\n        {\n          isSrcDir: true,\n        }\n      )\n    ).toBe(\"/foo/bar/src/primitives/button.tsx\")\n  })\n\n  test(\"should resolve registry:component and registry:block file types\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/components/example-card.tsx\",\n          type: \"registry:component\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/components/example-card.tsx\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/components/example-card.tsx\",\n          type: \"registry:block\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/components/example-card.tsx\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/components/example-card.tsx\",\n          type: \"registry:component\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/src/components\",\n            ui: \"/foo/bar/src/primitives\",\n            lib: \"/foo/bar/src/lib\",\n            hooks: \"/foo/bar/src/hooks\",\n          },\n        },\n        {\n          isSrcDir: true,\n        }\n      )\n    ).toBe(\"/foo/bar/src/components/example-card.tsx\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/components/example-card.tsx\",\n          type: \"registry:block\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/src/components\",\n            ui: \"/foo/bar/src/primitives\",\n            lib: \"/foo/bar/src/lib\",\n            hooks: \"/foo/bar/src/hooks\",\n          },\n        },\n        {\n          isSrcDir: true,\n        }\n      )\n    ).toBe(\"/foo/bar/src/components/example-card.tsx\")\n  })\n\n  test(\"should resolve registry:lib file types\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/lib/foo.ts\",\n          type: \"registry:lib\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/lib/foo.ts\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/lib/foo.ts\",\n          type: \"registry:lib\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/src/components\",\n            ui: \"/foo/bar/src/primitives\",\n            lib: \"/foo/bar/src/lib\",\n            hooks: \"/foo/bar/src/hooks\",\n          },\n        },\n        {\n          isSrcDir: true,\n        }\n      )\n    ).toBe(\"/foo/bar/src/lib/foo.ts\")\n  })\n\n  test(\"should resolve registry:hook file types\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/hooks/use-foo.ts\",\n          type: \"registry:hook\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/hooks/use-foo.ts\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/hooks/use-foo.ts\",\n          type: \"registry:hook\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/src/components\",\n            ui: \"/foo/bar/src/primitives\",\n            lib: \"/foo/bar/src/lib\",\n            hooks: \"/foo/bar/src/hooks\",\n          },\n        },\n        {\n          isSrcDir: true,\n        }\n      )\n    ).toBe(\"/foo/bar/src/hooks/use-foo.ts\")\n  })\n\n  test(\"should resolve registry:file file types\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/.env\",\n          type: \"registry:file\",\n          target: \"~/baz/.env\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/baz/.env\")\n  })\n\n  test(\"should resolve nested files\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/components/path/to/example-card.tsx\",\n          type: \"registry:component\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/components/path/to/example-card.tsx\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/create-system/primitives/button.tsx\",\n          type: \"registry:ui\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/components/ui/button.tsx\")\n  })\n})\n\ndescribe(\"resolveFilePath with custom path\", () => {\n  test(\"should use custom file path for exact file target\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/ui/button.tsx\",\n          type: \"registry:ui\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/custom/my-button.tsx\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/custom/my-button.tsx\")\n  })\n\n  test(\"should use custom directory path and strip type prefix\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/ui/button.tsx\",\n          type: \"registry:ui\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/custom\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/custom/button.tsx\")\n  })\n\n  test(\"should strip nested paths when using custom directory\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/components/nested/path/card.tsx\",\n          type: \"registry:component\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/custom\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/custom/card.tsx\")\n  })\n\n  test(\"should handle lib files with custom directory\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/lib/utils.ts\",\n          type: \"registry:lib\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/custom\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/custom/utils.ts\")\n  })\n\n  test(\"should handle hooks with custom directory\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/hooks/use-toast.ts\",\n          type: \"registry:hook\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/custom\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/custom/use-toast.ts\")\n  })\n\n  test(\"should use custom file path with different extension\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/ui/card.tsx\",\n          type: \"registry:ui\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/my-components/custom-card.jsx\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/my-components/custom-card.jsx\")\n  })\n\n  test(\"should not use custom path when not provided\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/ui/button.tsx\",\n          type: \"registry:ui\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"/foo/bar/components/ui/button.tsx\")\n  })\n\n  test(\"should support any file extension for file paths\", () => {\n    // Test with .json\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/config.json\",\n          type: \"registry:file\",\n          target: \"~/config.json\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/custom/my-config.json\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/custom/my-config.json\")\n\n    // Test with .css\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/styles.css\",\n          type: \"registry:file\",\n          target: \"~/styles.css\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/custom/theme.css\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/custom/theme.css\")\n\n    // Test with .md\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/README.md\",\n          type: \"registry:file\",\n          target: \"~/README.md\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          path: \"/foo/bar/docs/guide.md\",\n          fileIndex: 0,\n        }\n      )\n    ).toBe(\"/foo/bar/docs/guide.md\")\n  })\n})\n\ndescribe(\"resolveFilePath with framework\", () => {\n  test(\"should not resolve for unknown or unsupported framework\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/app/login/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n        }\n      )\n    ).toBe(\"\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/app/login/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          framework: \"vite\",\n        }\n      )\n    ).toBe(\"\")\n  })\n\n  test(\"should resolve for next-app\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/app/login/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/components/ui\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          framework: \"next-app\",\n        }\n      )\n    ).toBe(\"/foo/bar/app/login/page.tsx\")\n  })\n\n  test(\"should resolve for next-pages\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/app/login/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/src/components\",\n            ui: \"/foo/bar/src/primitives\",\n            lib: \"/foo/bar/src/lib\",\n            hooks: \"/foo/bar/src/hooks\",\n          },\n        },\n        {\n          isSrcDir: true,\n          framework: \"next-pages\",\n        }\n      )\n    ).toBe(\"/foo/bar/src/pages/login.tsx\")\n\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/app/blog/[slug]/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/blog/[slug]/page.tsx\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/components\",\n            ui: \"/foo/bar/primitives\",\n            lib: \"/foo/bar/lib\",\n            hooks: \"/foo/bar/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          framework: \"next-pages\",\n        }\n      )\n    ).toBe(\"/foo/bar/pages/blog/[slug].tsx\")\n  })\n\n  test(\"should resolve for react-router\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/app/login/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/app/components\",\n            ui: \"/foo/bar/app/components/ui\",\n            lib: \"/foo/bar/app/lib\",\n            hooks: \"/foo/bar/app/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          framework: \"react-router\",\n        }\n      )\n    ).toBe(\"/foo/bar/app/routes/login.tsx\")\n  })\n\n  test(\"should resolve for laravel\", () => {\n    expect(\n      resolveFilePath(\n        {\n          path: \"hello-world/app/login/page.tsx\",\n          type: \"registry:page\",\n          target: \"app/login/page.tsx\",\n        },\n        {\n          resolvedPaths: {\n            cwd: \"/foo/bar\",\n            components: \"/foo/bar/resources/js/components\",\n            ui: \"/foo/bar/resources/js/components/ui\",\n            lib: \"/foo/bar/resources/js/lib\",\n            hooks: \"/foo/bar/resources/js/hooks\",\n          },\n        },\n        {\n          isSrcDir: false,\n          framework: \"laravel\",\n        }\n      )\n    ).toBe(\"/foo/bar/resources/js/pages/login.tsx\")\n  })\n})\n\ndescribe(\"findCommonRoot\", () => {\n  test.each([\n    {\n      description: \"should find the common root of sibling files\",\n      paths: [\"/foo/bar/baz/qux\", \"/foo/bar/baz/quux\"],\n      needle: \"/foo/bar/baz/qux\",\n      expected: \"/foo/bar/baz\",\n    },\n    {\n      description: \"should find common root with nested structures\",\n      paths: [\n        \"/app/components/header/nav.tsx\",\n        \"/app/components/header/logo.tsx\",\n        \"/app/components/header/menu/item.tsx\",\n      ],\n      needle: \"/app/components/header/nav.tsx\",\n      expected: \"/app/components/header\",\n    },\n    {\n      description: \"should handle single file in paths\",\n      paths: [\"/foo/bar/baz/single.tsx\"],\n      needle: \"/foo/bar/baz/single.tsx\",\n      expected: \"/foo/bar/baz\",\n    },\n    {\n      description: \"should handle root level files\",\n      paths: [\"root.tsx\", \"config.ts\", \"package.json\"],\n      needle: \"root.tsx\",\n      expected: \"\",\n    },\n    {\n      description: \"should handle unrelated paths\",\n      paths: [\"/foo/bar/baz\", \"/completely/different/path\"],\n      needle: \"/foo/bar/baz\",\n      expected: \"/foo/bar\",\n    },\n  ])(\"$description\", ({ paths, needle, expected }) => {\n    expect(findCommonRoot(paths, needle)).toBe(expected)\n  })\n})\n\ndescribe(\"resolveNestedFilePath\", () => {\n  test.each([\n    {\n      description: \"should resolve path after common components directory\",\n      filePath: \"hello-world/components/path/to/example-card.tsx\",\n      targetDir: \"/foo/bar/components\",\n      expected: \"path/to/example-card.tsx\",\n    },\n    {\n      description: \"should handle different directory depths\",\n      filePath: \"/foo-bar/components/ui/button.tsx\",\n      targetDir: \"/src/ui\",\n      expected: \"button.tsx\",\n    },\n    {\n      description: \"should handle nested component paths\",\n      filePath: \"blocks/sidebar/components/nav/item.tsx\",\n      targetDir: \"/app/components\",\n      expected: \"nav/item.tsx\",\n    },\n    {\n      description: \"should return the file path if no common directory\",\n      filePath: \"something/else/file.tsx\",\n      targetDir: \"/foo/bar/components\",\n      expected: \"file.tsx\",\n    },\n    {\n      description: \"should handle paths with multiple common directories\",\n      filePath: \"ui/shared/components/utils/button.tsx\",\n      targetDir: \"/src/components/utils\",\n      expected: \"button.tsx\",\n    },\n  ])(\"$description\", ({ filePath, targetDir, expected }) => {\n    expect(resolveNestedFilePath(filePath, targetDir)).toBe(expected)\n  })\n})\n\ndescribe(\"updateFiles\", () => {\n  test(\"should create missing files\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    expect(\n      await updateFiles(\n        [\n          {\n            path: \"src/components/hello-world.tsx\",\n            type: \"registry:component\",\n            content: `export function HelloWorld() {\n  return <div>Hello World</div>\n}`,\n          },\n        ],\n        config,\n        {\n          overwrite: false,\n          silent: true,\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"filesCreated\": [\n          \"src/components/hello-world.tsx\",\n        ],\n        \"filesSkipped\": [],\n        \"filesUpdated\": [],\n      }\n    `)\n  })\n\n  test(\"should skip existing files if same content\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    expect(\n      await updateFiles(\n        [\n          {\n            path: \"src/components/hello-world.tsx\",\n            type: \"registry:component\",\n            content: `export function HelloWorld() {\nreturn <div>Hello World</div>\n}`,\n          },\n          {\n            path: \"registry/default/ui/button.tsx\",\n            type: \"registry:ui\",\n            content: `export function Button() {\n  return <button>Click me</button>\n}`,\n          },\n        ],\n        config,\n        {\n          overwrite: false,\n          silent: true,\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"filesCreated\": [\n          \"src/components/hello-world.tsx\",\n        ],\n        \"filesSkipped\": [\n          \"src/components/ui/button.tsx\",\n        ],\n        \"filesUpdated\": [],\n      }\n    `)\n  })\n\n  test(\"should update file if different content\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    expect(\n      await updateFiles(\n        [\n          {\n            path: \"src/components/hello-world.tsx\",\n            type: \"registry:component\",\n            content: `export function HelloWorld() {\nreturn <div>Hello World</div>\n}`,\n          },\n          {\n            path: \"registry/default/ui/button.tsx\",\n            type: \"registry:ui\",\n            content: `export function Button() {\n  return <button>Click this button</button>\n}`,\n          },\n        ],\n        config,\n        {\n          overwrite: true,\n          silent: true,\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"filesCreated\": [\n          \"src/components/hello-world.tsx\",\n        ],\n        \"filesSkipped\": [],\n        \"filesUpdated\": [\n          \"src/components/ui/button.tsx\",\n        ],\n      }\n    `)\n  })\n\n  test(\"should mark .env file as created when it doesn't exist\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n\n    const result = await updateFiles(\n      [\n        {\n          path: \".env\",\n          type: \"registry:file\",\n          target: \"~/.env\",\n          content: `NEW_API_KEY=new_api_key_value\nANOTHER_NEW_KEY=another_value`,\n        },\n      ],\n      config,\n      {\n        overwrite: true,\n        silent: true,\n      }\n    )\n\n    expect(result.filesCreated).toContain(\".env\")\n    expect(result.filesUpdated).not.toContain(\".env\")\n  })\n\n  test(\"should mark .env file as updated when merging content\", async () => {\n    const tempDir = path.join(\n      path.resolve(__dirname, \"../../fixtures\"),\n      \"temp-env-test\"\n    )\n    const fsActual = (await vi.importActual(\n      \"fs/promises\"\n    )) as typeof import(\"fs/promises\")\n    const writeFileMock = fs.writeFile as any\n\n    try {\n      await fsActual.mkdir(tempDir, { recursive: true })\n      await fsActual.writeFile(\n        path.join(tempDir, \"components.json\"),\n        JSON.stringify({\n          $schema: \"https://ui.shadcn.com/schema.json\",\n          style: \"default\",\n          tailwind: {\n            config: \"tailwind.config.js\",\n            css: \"src/index.css\",\n            baseColor: \"slate\",\n          },\n          aliases: {\n            components: \"@/components\",\n            utils: \"@/lib/utils\",\n          },\n        }),\n        \"utf-8\"\n      )\n\n      const config = await getConfig(tempDir)\n      const envPath = path.join(config?.resolvedPaths.cwd!, \".env\")\n\n      await fsActual.writeFile(\n        envPath,\n        `EXISTING_KEY=existing_value\nDATABASE_URL=postgres://localhost:5432/mydb`,\n        \"utf-8\"\n      )\n\n      const result = await updateFiles(\n        [\n          {\n            path: \".env\",\n            type: \"registry:file\",\n            target: \"~/.env\",\n            content: `DATABASE_URL=should_not_override\nNEW_API_KEY=new_api_key_value\nANOTHER_NEW_KEY=another_value`,\n          },\n        ],\n        config,\n        {\n          overwrite: true,\n          silent: true,\n        }\n      )\n\n      expect(result.filesUpdated).toContain(\".env\")\n      expect(result.filesCreated).not.toContain(\".env\")\n\n      // Verify writeFile was called with the correct merged content.\n      expect(writeFileMock).toHaveBeenCalledWith(\n        envPath,\n        `EXISTING_KEY=existing_value\nDATABASE_URL=postgres://localhost:5432/mydb\n\nNEW_API_KEY=new_api_key_value\nANOTHER_NEW_KEY=another_value\n`,\n        \"utf-8\"\n      )\n    } finally {\n      await fsActual.rm(tempDir, { recursive: true }).catch(() => {})\n    }\n  })\n\n  test(\"should use .env.local when .env doesn't exist\", async () => {\n    const tempDir = path.join(\n      path.resolve(__dirname, \"../../fixtures\"),\n      \"temp-env-alternative-test\"\n    )\n    const fsActual = (await vi.importActual(\n      \"fs/promises\"\n    )) as typeof import(\"fs/promises\")\n\n    const writeFileMock = fs.writeFile as any\n\n    try {\n      await fsActual.mkdir(tempDir, { recursive: true })\n\n      await fsActual.writeFile(\n        path.join(tempDir, \"components.json\"),\n        JSON.stringify({\n          $schema: \"https://ui.shadcn.com/schema.json\",\n          style: \"default\",\n          tailwind: {\n            config: \"tailwind.config.js\",\n            css: \"src/index.css\",\n            baseColor: \"slate\",\n          },\n          aliases: {\n            components: \"@/components\",\n            utils: \"@/lib/utils\",\n          },\n        }),\n        \"utf-8\"\n      )\n\n      const config = await getConfig(tempDir)\n      if (!config) {\n        throw new Error(\"Failed to get config\")\n      }\n      const envLocalPath = path.join(config.resolvedPaths.cwd, \".env.local\")\n\n      // Create .env.local instead of .env\n      await fsActual.writeFile(\n        envLocalPath,\n        `EXISTING_KEY=existing_value\nDATABASE_URL=postgres://localhost:5432/mydb`,\n        \"utf-8\"\n      )\n\n      const result = await updateFiles(\n        [\n          {\n            path: \".env\",\n            type: \"registry:file\",\n            target: \"~/.env\",\n            content: `DATABASE_URL=should_not_override\nNEW_API_KEY=new_api_key_value`,\n          },\n        ],\n        config,\n        {\n          overwrite: true,\n          silent: true,\n        }\n      )\n\n      expect(result.filesUpdated).toContain(\".env.local\")\n      expect(result.filesCreated).not.toContain(\".env\")\n      expect(result.filesCreated).not.toContain(\".env.local\")\n\n      expect(writeFileMock).toHaveBeenCalledWith(\n        envLocalPath,\n        `EXISTING_KEY=existing_value\nDATABASE_URL=postgres://localhost:5432/mydb\n\nNEW_API_KEY=new_api_key_value\n`,\n        \"utf-8\"\n      )\n    } finally {\n      await fsActual.rm(tempDir, { recursive: true }).catch(() => {})\n    }\n  })\n\n  test(\"should use existing .env when target is .env.local but doesn't exist\", async () => {\n    const tempDir = path.join(\n      path.resolve(__dirname, \"../../fixtures\"),\n      \"temp-env-target-local-test\"\n    )\n    const fsActual = (await vi.importActual(\n      \"fs/promises\"\n    )) as typeof import(\"fs/promises\")\n\n    const writeFileMock = fs.writeFile as any\n\n    try {\n      await fsActual.mkdir(tempDir, { recursive: true })\n\n      await fsActual.writeFile(\n        path.join(tempDir, \"components.json\"),\n        JSON.stringify({\n          $schema: \"https://ui.shadcn.com/schema.json\",\n          style: \"default\",\n          tailwind: {\n            config: \"tailwind.config.js\",\n            css: \"src/index.css\",\n            baseColor: \"slate\",\n          },\n          aliases: {\n            components: \"@/components\",\n            utils: \"@/lib/utils\",\n          },\n        }),\n        \"utf-8\"\n      )\n\n      const config = await getConfig(tempDir)\n      if (!config) {\n        throw new Error(\"Failed to get config\")\n      }\n      const envPath = path.join(config.resolvedPaths.cwd, \".env\")\n\n      // Create .env file (not .env.local)\n      await fsActual.writeFile(envPath, `EXISTING_KEY=existing_value`, \"utf-8\")\n\n      const result = await updateFiles(\n        [\n          {\n            path: \".env.local\",\n            type: \"registry:file\",\n            target: \"~/.env.local\",\n            content: `NEW_KEY=new_value`,\n          },\n        ],\n        config,\n        {\n          overwrite: true,\n          silent: true,\n        }\n      )\n\n      // Should update .env instead of creating .env.local\n      expect(result.filesUpdated).toContain(\".env\")\n      expect(result.filesCreated).not.toContain(\".env.local\")\n\n      expect(writeFileMock).toHaveBeenCalledWith(\n        envPath,\n        `EXISTING_KEY=existing_value\n\nNEW_KEY=new_value\n`,\n        \"utf-8\"\n      )\n    } finally {\n      await fsActual.rm(tempDir, { recursive: true }).catch(() => {})\n    }\n  })\n\n  test(\"should create .env when no env variants exist\", async () => {\n    const tempDir = path.join(\n      path.resolve(__dirname, \"../../fixtures\"),\n      \"temp-env-create-test\"\n    )\n    const fsActual = (await vi.importActual(\n      \"fs/promises\"\n    )) as typeof import(\"fs/promises\")\n\n    const writeFileMock = fs.writeFile as any\n\n    try {\n      await fsActual.mkdir(tempDir, { recursive: true })\n\n      await fsActual.writeFile(\n        path.join(tempDir, \"components.json\"),\n        JSON.stringify({\n          $schema: \"https://ui.shadcn.com/schema.json\",\n          style: \"default\",\n          tailwind: {\n            config: \"tailwind.config.js\",\n            css: \"src/index.css\",\n            baseColor: \"slate\",\n          },\n          aliases: {\n            components: \"@/components\",\n            utils: \"@/lib/utils\",\n          },\n        }),\n        \"utf-8\"\n      )\n\n      const config = await getConfig(tempDir)\n      if (!config) {\n        throw new Error(\"Failed to get config\")\n      }\n      const envPath = path.join(config.resolvedPaths.cwd, \".env\")\n\n      // Ensure no env files exist\n      const envVariants = [\n        \".env\",\n        \".env.local\",\n        \".env.development.local\",\n        \".env.development\",\n      ]\n      for (const variant of envVariants) {\n        const variantPath = path.join(config.resolvedPaths.cwd, variant)\n        await fsActual.unlink(variantPath).catch(() => {})\n      }\n\n      const result = await updateFiles(\n        [\n          {\n            path: \".env\",\n            type: \"registry:file\",\n            target: \"~/.env\",\n            content: `NEW_API_KEY=new_api_key_value\nDATABASE_URL=postgres://localhost:5432/mydb`,\n          },\n        ],\n        config,\n        {\n          overwrite: true,\n          silent: true,\n        }\n      )\n\n      expect(result.filesCreated).toContain(\".env\")\n      expect(result.filesUpdated).not.toContain(\".env\")\n      expect(result.filesUpdated).not.toContain(\".env.local\")\n\n      expect(writeFileMock).toHaveBeenCalledWith(\n        envPath,\n        `NEW_API_KEY=new_api_key_value\nDATABASE_URL=postgres://localhost:5432/mydb`,\n        \"utf-8\"\n      )\n    } finally {\n      await fsActual.rm(tempDir, { recursive: true }).catch(() => {})\n    }\n  })\n\n  test(\"should place first file at custom file path\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    expect(\n      await updateFiles(\n        [\n          {\n            path: \"registry/default/ui/button.tsx\",\n            type: \"registry:ui\",\n            content: `export function Button() {\n  return <button>Custom Button</button>\n}`,\n          },\n        ],\n        config,\n        {\n          overwrite: true,\n          silent: true,\n          path: \"custom/my-button.tsx\",\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"filesCreated\": [\n          \"custom/my-button.tsx\",\n        ],\n        \"filesSkipped\": [],\n        \"filesUpdated\": [],\n      }\n    `)\n  })\n\n  test(\"should place all files in custom directory\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    expect(\n      await updateFiles(\n        [\n          {\n            path: \"registry/default/ui/button.tsx\",\n            type: \"registry:ui\",\n            content: `export function Button() {\n  return <button>Button</button>\n}`,\n          },\n          {\n            path: \"registry/default/ui/card.tsx\",\n            type: \"registry:ui\",\n            content: `export function Card() {\n  return <div>Card</div>\n}`,\n          },\n        ],\n        config,\n        {\n          overwrite: true,\n          silent: true,\n          path: \"custom/components\",\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"filesCreated\": [\n          \"custom/components/button.tsx\",\n          \"custom/components/card.tsx\",\n        ],\n        \"filesSkipped\": [],\n        \"filesUpdated\": [],\n      }\n    `)\n  })\n\n  test(\"should only apply file path to first file\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    expect(\n      await updateFiles(\n        [\n          {\n            path: \"registry/default/ui/button.tsx\",\n            type: \"registry:ui\",\n            content: `export function Button() {\n  return <button>Button</button>\n}`,\n          },\n          {\n            path: \"registry/default/lib/utils.ts\",\n            type: \"registry:lib\",\n            content: `export function cn() {}`,\n          },\n        ],\n        config,\n        {\n          overwrite: true,\n          silent: true,\n          path: \"custom/my-button.tsx\",\n        }\n      )\n    ).toMatchInlineSnapshot(`\n      {\n        \"filesCreated\": [\n          \"custom/my-button.tsx\",\n        ],\n        \"filesSkipped\": [],\n        \"filesUpdated\": [\n          \"src/lib/utils.ts\",\n        ],\n      }\n    `)\n  })\n\n  test(\"should preserve 'use client' directive for universal item files (registry:file)\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    const result = await updateFiles(\n      [\n        {\n          path: \"custom-component.tsx\",\n          type: \"registry:file\",\n          target: \"~/custom-component.tsx\",\n          content: `\"use client\"\n\nexport function CustomComponent() {\n  return <div>Custom Component</div>\n}`,\n        },\n      ],\n      config,\n      {\n        overwrite: true,\n        silent: true,\n      }\n    )\n\n    // Verify that the file was created\n    expect(result.filesCreated).toContain(\"custom-component.tsx\")\n\n    // Read the written file and check if 'use client' is preserved\n    const writtenContent = (fs.writeFile as any).mock.calls.find((call: any) =>\n      call[0].endsWith(\"custom-component.tsx\")\n    )?.[1]\n\n    expect(writtenContent).toContain('\"use client\"')\n  })\n\n  test(\"should preserve 'use client' directive for universal item files (registry:item)\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    const result = await updateFiles(\n      [\n        {\n          path: \"universal-widget.tsx\",\n          type: \"registry:item\",\n          target: \"~/universal-widget.tsx\",\n          content: `'use client'\n\nexport function UniversalWidget() {\n  return <div>Universal Widget</div>\n}`,\n        },\n      ],\n      config,\n      {\n        overwrite: true,\n        silent: true,\n      }\n    )\n\n    // Verify that the file was created\n    expect(result.filesCreated).toContain(\"universal-widget.tsx\")\n\n    // Read the written file and check if 'use client' is preserved\n    const writtenContent = (fs.writeFile as any).mock.calls.find((call: any) =>\n      call[0].endsWith(\"universal-widget.tsx\")\n    )?.[1]\n\n    expect(writtenContent).toContain(\"'use client'\")\n  })\n\n  test(\"should remove 'use client' directive for non-universal item files when rsc is false\", async () => {\n    const config = await getConfig(\n      path.resolve(__dirname, \"../../fixtures/vite-with-tailwind\")\n    )\n    const result = await updateFiles(\n      [\n        {\n          path: \"registry/default/ui/regular-component.tsx\",\n          type: \"registry:ui\",\n          content: `\"use client\"\n\nexport function RegularComponent() {\n  return <div>Regular Component</div>\n}`,\n        },\n      ],\n      config,\n      {\n        overwrite: true,\n        silent: true,\n      }\n    )\n\n    // Verify that the file was created (filesCreated contains relative paths)\n    expect(result.filesCreated.length).toBeGreaterThan(0)\n\n    // Read the written file and check if 'use client' was removed\n    const writtenContent = (fs.writeFile as any).mock.calls.find((call: any) =>\n      call[0].endsWith(\"regular-component.tsx\")\n    )?.[1]\n\n    // The 'use client' should be removed by the RSC transformer\n    expect(writtenContent).not.toContain('\"use client\"')\n  })\n})\n\ndescribe(\"resolveModuleByProbablePath\", () => {\n  test(\"should resolve exact file match in provided files list\", () => {\n    const files = [\n      \"components/button.tsx\",\n      \"components/card.tsx\",\n      \"lib/utils.ts\",\n    ]\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n      },\n    }\n    expect(\n      resolveModuleByProbablePath(\"/foo/bar/components/button\", files, config)\n    ).toBe(\"components/button.tsx\")\n  })\n\n  test(\"should resolve index file\", () => {\n    const files = [\"components/button/index.tsx\", \"components/card.tsx\"]\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n      },\n    }\n    expect(\n      resolveModuleByProbablePath(\"/foo/bar/components/button\", files, config)\n    ).toBe(\"components/button/index.tsx\")\n  })\n\n  test(\"should try different extensions\", () => {\n    const files = [\"components/button.jsx\", \"components/card.tsx\"]\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n      },\n    }\n    expect(\n      resolveModuleByProbablePath(\"/foo/bar/components/button\", files, config)\n    ).toBe(\"components/button.jsx\")\n  })\n\n  test(\"should fallback to basename matching\", () => {\n    const files = [\"components/ui/button.tsx\", \"components/card.tsx\"]\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n      },\n    }\n    expect(\n      resolveModuleByProbablePath(\"/foo/bar/components/button\", files, config)\n    ).toBe(\"components/ui/button.tsx\")\n  })\n\n  test(\"should return null when file not found\", () => {\n    const files = [\"components/card.tsx\", \"lib/utils.ts\"]\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n      },\n    }\n    expect(\n      resolveModuleByProbablePath(\"/foo/bar/components/button\", files, config)\n    ).toBeNull()\n  })\n\n  test(\"should sort by extension priority\", () => {\n    const files = [\n      \"components/button.jsx\",\n      \"components/button.tsx\",\n      \"components/button.js\",\n    ]\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n      },\n    }\n    expect(\n      resolveModuleByProbablePath(\"/foo/bar/components/button\", files, config, [\n        \".tsx\",\n        \".jsx\",\n        \".js\",\n      ])\n    ).toBe(\"components/button.tsx\")\n  })\n\n  test(\"should preserve extension if specified in path\", () => {\n    const files = [\"components/button.tsx\", \"components/button.css\"]\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n      },\n    }\n    expect(\n      resolveModuleByProbablePath(\n        \"/foo/bar/components/button.css\",\n        files,\n        config\n      )\n    ).toBe(\"components/button.css\")\n  })\n})\n\ndescribe(\"toAliasedImport\", () => {\n  test(\"should convert components path to aliased import\", () => {\n    const filePath = \"components/button.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n        lib: \"/foo/bar/lib\",\n      },\n      aliases: {\n        components: \"@/components\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\n      \"@/components/button\"\n    )\n  })\n\n  test(\"should convert ui path to aliased import\", () => {\n    const filePath = \"components/ui/button.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n        lib: \"/foo/bar/lib\",\n      },\n      aliases: {\n        components: \"@/components\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\n      \"@/components/ui/button\"\n    )\n  })\n\n  test(\"should collapse index files\", () => {\n    const filePath = \"components/ui/button/index.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n        lib: \"/foo/bar/lib\",\n      },\n      aliases: {\n        components: \"@/components\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\n      \"@/components/ui/button\"\n    )\n  })\n\n  test(\"should return null when no matching alias found\", () => {\n    const filePath = \"src/pages/index.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n        lib: \"/foo/bar/lib\",\n      },\n      aliases: {\n        components: \"@/components\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\"@/pages\")\n  })\n\n  test(\"should handle nested directories\", () => {\n    const filePath = \"components/forms/inputs/text-input.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n        lib: \"/foo/bar/lib\",\n      },\n      aliases: {\n        components: \"@/components\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\n      \"@/components/forms/inputs/text-input\"\n    )\n  })\n\n  test(\"should keep non-code file extensions\", () => {\n    const filePath = \"components/styles/theme.css\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n        lib: \"/foo/bar/lib\",\n      },\n      aliases: {\n        components: \"@/components\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\n      \"@/components/styles/theme.css\"\n    )\n  })\n\n  test(\"should prefer longer matching paths\", () => {\n    const filePath = \"components/ui/button.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n      },\n      aliases: {\n        components: \"@/components\",\n        ui: \"@/ui\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\"@/ui/button\")\n  })\n\n  test(\"should support tilde (~) alias prefix\", () => {\n    const filePath = \"components/button.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n      },\n      aliases: {\n        components: \"~components\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"~\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\n      \"~components/button\"\n    )\n  })\n\n  test(\"should support @shadcn alias prefix\", () => {\n    const filePath = \"components/ui/button.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n      },\n      aliases: {\n        components: \"@shadcn/components\",\n        ui: \"@shadcn/ui\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@shadcn\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\n      \"@shadcn/ui/button\"\n    )\n  })\n\n  test(\"should support ~cn alias prefix\", () => {\n    const filePath = \"lib/utils/index.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        lib: \"/foo/bar/lib\",\n      },\n      aliases: {\n        lib: \"~cn/lib\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"~cn\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\"~cn/lib/utils\")\n  })\n\n  test(\"should use project alias prefix when aliasKey is cwd\", () => {\n    const filePath = \"src/pages/home.tsx\"\n    const config = {\n      resolvedPaths: {\n        cwd: \"/foo/bar\",\n        components: \"/foo/bar/components\",\n        ui: \"/foo/bar/components/ui\",\n        lib: \"/foo/bar/lib\",\n      },\n      aliases: {\n        components: \"@/components\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n      },\n    }\n    const projectInfo = {\n      aliasPrefix: \"@\",\n    }\n    expect(toAliasedImport(filePath, config, projectInfo)).toBe(\"@/pages/home\")\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/update-tailwind-config.test.ts",
    "content": "import { Project, SyntaxKind } from \"ts-morph\"\nimport { beforeEach, describe, expect, test } from \"vitest\"\n\nimport {\n  buildTailwindThemeColorsFromCssVars, nestSpreadElements,\n  nestSpreadProperties,\n  transformTailwindConfig,\n  unnestSpreadProperties, unsetSpreadElements,\n} from \"../../../src/utils/updaters/update-tailwind-config\"\n\nconst SHARED_CONFIG = {\n  $schema: \"https://ui.shadcn.com/schema.json\",\n  style: \"new-york\",\n  rsc: true,\n  tsx: true,\n  tailwind: {\n    config: \"tailwind.config.ts\",\n    css: \"app/globals.css\",\n    baseColor: \"slate\",\n    cssVariables: true,\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \".\",\n    tailwindConfig: \"tailwind.config.ts\",\n    tailwindCss: \"app/globals.css\",\n    components: \"./components\",\n    utils: \"./lib/utils\",\n    ui: \"./components/ui\",\n  },\n}\n\ndescribe(\"transformTailwindConfig -> darkMode property\", () => {\n  test(\"should add darkMode property if not in config\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n\n    expect(\n      await transformTailwindConfig(\n        `/** @type {import('tailwindcss').Config} */\n\nexport default {\n\tcontent: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],\n\ttheme: {\n\t\textend: {},\n\t},\n\tplugins: [],\n}\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n\n    expect(\n      await transformTailwindConfig(\n        `/** @type {import('tailwindcss').Config} */\nconst foo = {\n  bar: 'baz',\n}\n\nexport default {\n\tcontent: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],\n\ttheme: {\n\t\textend: {},\n\t},\n\tplugins: [],\n}\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should append class to darkMode property if existing array\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: [\"selector\"],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should preserve quote kind\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['selector', '[data-mode=\"dark\"]'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should convert string to array and add class if darkMode is string\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: \"selector\",\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should work with multiple darkMode selectors\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['variant', [\n    '@media (prefers-color-scheme: dark) { &:not(.light *) }',\n    '&:is(.dark *)',\n  ]],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should not add darkMode property if already in config\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  darkMode: ['class'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\n  const config: Config = {\n  darkMode: ['class', 'selector'],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n  }\n  export default config\n  `,\n        {\n          properties: [\n            {\n              name: \"darkMode\",\n              value: \"class\",\n            },\n          ],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n})\n\ndescribe(\"transformTailwindConfig -> plugin\", () => {\n  test(\"should add plugin if not in config\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n}\nexport default config\n  `,\n        {\n          plugins: ['require(\"tailwindcss-animate\")'],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should append plugin to existing array\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [require(\"@tailwindcss/typography\")],\n}\nexport default config\n  `,\n        {\n          plugins: ['require(\"tailwindcss-animate\")'],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should not add plugin if already in config\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [require(\"@tailwindcss/typography\"), require(\"tailwindcss-animate\")],\n}\nexport default config\n  `,\n        {\n          plugins: [\"require('tailwindcss-animate')\"],\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n})\n\ndescribe(\"transformTailwindConfig -> theme\", () => {\n  test(\"should add theme if not in config\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\n  const config: Config = {\n    content: [\n      \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n      \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n      \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n    ],\n  }\n  export default config\n    `,\n        {\n          theme: {\n            extend: {\n              colors: {\n                background: \"hsl(var(--background))\",\n                foreground: \"hsl(var(--foreground))\",\n                primary: {\n                  DEFAULT: \"hsl(var(--primary))\",\n                  foreground: \"hsl(var(--primary-foreground))\",\n                },\n              },\n            },\n          },\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should merge existing theme\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      fontFamily: {\n        sans: [\n          \"ui-sans-serif\",\n          \"sans-serif\",\n        ],\n      },\n      colors: {\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n      },\n    },\n  },\n}\nexport default config\n  `,\n        {\n          theme: {\n            extend: {\n              colors: {\n                primary: {\n                  DEFAULT: \"hsl(var(--primary))\",\n                  foreground: \"hsl(var(--primary-foreground))\",\n                },\n                card: {\n                  DEFAULT: \"hsl(var(--card))\",\n                  foreground: \"hsl(var(--card-foreground))\",\n                },\n              },\n            },\n          },\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should keep spread assignments\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      colors: {\n        ...defaultColors,\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n      },\n    },\n  },\n}\nexport default config\n  `,\n        {\n          theme: {\n            extend: {\n              colors: {\n                primary: {\n                  DEFAULT: \"hsl(var(--primary))\",\n                  foreground: \"hsl(var(--primary-foreground))\",\n                },\n                card: {\n                  DEFAULT: \"hsl(var(--card))\",\n                  foreground: \"hsl(var(--card-foreground))\",\n                },\n              },\n            },\n          },\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should handle multiple properties\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      fontFamily: {\n        sans: [\"var(--font-geist-sans)\", ...fontFamily.sans],\n        mono: [\"var(--font-mono)\", ...fontFamily.mono],\n      },\n      colors: {\n        ...defaultColors,\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n      },\n      boxShadow: {\n        ...defaultBoxShadow,\n        \"3xl\": \"0 35px 60px -15px rgba(0, 0, 0, 0.3)\",\n      },\n      borderRadius: {\n        \"3xl\": \"2rem\",\n      },\n      animation: {\n        ...defaultAnimation,\n        \"spin-slow\": \"spin 3s linear infinite\",\n      },\n    },\n  },\n}\nexport default config\n  `,\n        {\n          theme: {\n            extend: {\n              fontFamily: {\n                heading: [\"var(--font-geist-sans)\"],\n              },\n              colors: {\n                border: \"hsl(var(--border))\",\n                input: \"hsl(var(--input))\",\n                ring: \"hsl(var(--ring))\",\n                primary: {\n                  DEFAULT: \"hsl(var(--primary))\",\n                  foreground: \"hsl(var(--primary-foreground))\",\n                },\n                card: {\n                  DEFAULT: \"hsl(var(--card))\",\n                  foreground: \"hsl(var(--card-foreground))\",\n                },\n              },\n              borderRadius: {\n                lg: \"var(--radius)\",\n                md: \"calc(var(--radius) - 2px)\",\n                sm: \"calc(var(--radius) - 4px)\",\n              },\n              animation: {\n                \"accordion-down\": \"accordion-down 0.2s ease-out\",\n                \"accordion-up\": \"accordion-up 0.2s ease-out\",\n              },\n            },\n          },\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should not make any updates running on already updated config\", async () => {\n    const input = `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\ncontent: [\n  \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n  \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n  \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n],\ntheme: {\n  extend: {\n    fontFamily: {\n      sans: [\"var(--font-geist-sans)\", ...fontFamily.sans],\n      mono: [\"var(--font-mono)\", ...fontFamily.mono],\n    },\n    colors: {\n      ...defaultColors,\n      background: \"hsl(var(--background))\",\n      foreground: \"hsl(var(--foreground))\",\n    },\n    boxShadow: {\n      ...defaultBoxShadow,\n      \"3xl\": \"0 35px 60px -15px rgba(0, 0, 0, 0.3)\",\n    },\n    borderRadius: {\n      \"3xl\": \"2rem\",\n    },\n    animation: {\n      ...defaultAnimation,\n      \"spin-slow\": \"spin 3s linear infinite\",\n    },\n  },\n},\n}\nexport default config\n`\n\n    const tailwindConfig = {\n      theme: {\n        extend: {\n          fontFamily: {\n            heading: [\"var(--font-geist-sans)\"],\n          },\n          colors: {\n            border: \"hsl(var(--border))\",\n            input: \"hsl(var(--input))\",\n            ring: \"hsl(var(--ring))\",\n            primary: {\n              DEFAULT: \"hsl(var(--primary))\",\n              foreground: \"hsl(var(--primary-foreground))\",\n            },\n            card: {\n              DEFAULT: \"hsl(var(--card))\",\n              foreground: \"hsl(var(--card-foreground))\",\n            },\n          },\n          borderRadius: {\n            lg: \"var(--radius)\",\n            md: \"calc(var(--radius) - 2px)\",\n            sm: \"calc(var(--radius) - 4px)\",\n          },\n          animation: {\n            \"accordion-down\": \"accordion-down 0.2s ease-out\",\n            \"accordion-up\": \"accordion-up 0.2s ease-out\",\n          },\n        },\n      },\n    }\n\n    const output1 = await transformTailwindConfig(input, tailwindConfig, {\n      config: SHARED_CONFIG,\n    })\n\n    const output2 = await transformTailwindConfig(output1, tailwindConfig, {\n      config: SHARED_CONFIG,\n    })\n\n    const output3 = await transformTailwindConfig(output2, tailwindConfig, {\n      config: SHARED_CONFIG,\n    })\n\n    expect(output3).toBe(output1)\n    expect(output3).toBe(output2)\n  })\n\n  test(\"should keep quotes in strings\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      fontFamily: {\n          sans: ['Figtree', ...defaultTheme.fontFamily.sans],\n      },\n      colors: {\n        ...defaultColors,\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n      },\n    },\n  },\n}\nexport default config\n  `,\n        {\n          theme: {\n            extend: {\n              colors: {\n                primary: {\n                  DEFAULT: \"hsl(var(--primary))\",\n                  foreground: \"hsl(var(--primary-foreground))\",\n                },\n                card: {\n                  DEFAULT: \"hsl(var(--card))\",\n                  foreground: \"hsl(var(--card-foreground))\",\n                },\n              },\n            },\n          },\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should keep arrays when formatted on multilines\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      fontFamily: {\n        sans: [\n          'Figtree',\n          ...defaultTheme.fontFamily.sans\n        ],\n      },\n    },\n  },\n}\nexport default config\n  `,\n        {\n          theme: {\n            extend: {\n              fontFamily: {\n                mono: ['Foo']\n              }\n            },\n          },\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should handle objects nested in arrays\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      fontSize: {\n        xs: ['0.75rem', { lineHeight: '1rem' }],\n        sm: [\n          '0.875rem',\n          {\n            lineHeight: '1.25rem',\n          },\n        ],\n      },\n    },\n  },\n}\nexport default config\n  `,\n        {\n          theme: {\n            extend: {\n              fontSize: {\n                xl: [\n                  'clamp(1.5rem, 1.04vi + 1.17rem, 2rem)',\n                  {\n                    lineHeight: '1.2',\n                    letterSpacing: '-0.02em',\n                    fontWeight: '600',\n                  },\n                ],\n              }\n            },\n          },\n        },\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should preserve boolean values\", async () => {\n    expect(\n      await transformTailwindConfig(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    container: {\n      center: true\n    }\n  },\n}\nexport default config\n  `,\n        {},\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n})\n\ndescribe(\"nestSpreadProperties\", () => {\n  let project: Project\n\n  beforeEach(() => {\n    project = new Project({ useInMemoryFileSystem: true })\n  })\n\n  function testTransformation(input: string, expected: string) {\n    const sourceFile = project.createSourceFile(\n      \"test.ts\",\n      `const config = ${input};`\n    )\n    const configObject = sourceFile.getFirstDescendantByKind(\n      SyntaxKind.ObjectLiteralExpression\n    )\n    if (!configObject) throw new Error(\"Config object not found\")\n\n    nestSpreadProperties(configObject)\n\n    const result = configObject.getText()\n    expect(result.replace(/\\s+/g, \"\")).toBe(expected.replace(/\\s+/g, \"\"))\n  }\n\n  test(\"should nest spread properties\", () => {\n    testTransformation(\n      `{ theme: { ...foo, bar: { ...baz, one: \"two\" }, other: { a: \"b\", ...c } } }`,\n      `{ theme: { \"___foo\": \"...foo\", bar: { \"___baz\": \"...baz\", one: \"two\" }, other: { a: \"b\", \"___c\": \"...c\" } } }`\n    )\n  })\n\n  test(\"should handle mixed property assignments\", () => {\n    testTransformation(\n      `{ ...foo, a: 1, b() {}, ...bar, c: { ...baz } }`,\n      `{ \"___foo\": \"...foo\", a: 1, b() {}, \"___bar\": \"...bar\", c: { \"___baz\": \"...baz\" } }`\n    )\n  })\n\n  test(\"should handle objects with only spread properties\", () => {\n    testTransformation(\n      `{ ...foo, ...bar, ...baz }`,\n      `{ \"___foo\": \"...foo\", \"___bar\": \"...bar\", \"___baz\": \"...baz\" }`\n    )\n  })\n\n  test(\"should handle property name conflicts\", () => {\n    testTransformation(`{ foo: 1, ...foo }`, `{ foo: 1, \"___foo\": \"...foo\" }`)\n  })\n\n  test(\"should handle shorthand property names\", () => {\n    testTransformation(`{ a, ...foo, b }`, `{ a, \"___foo\": \"...foo\", b }`)\n  })\n\n  test(\"should handle computed property names\", () => {\n    testTransformation(\n      `{ [\"computed\"]: 1, ...foo }`,\n      `{ [\"computed\"]: 1, \"___foo\": \"...foo\" }`\n    )\n  })\n\n  test(\"should handle spreads in arrays\", () => {\n    testTransformation(\n      `{ foo: [{ ...bar }] }`,\n      `{ foo: [{ \"___bar\": \"...bar\" }] }`\n    )\n  })\n\n  test(\"should handle deep nesting in arrays\", () => {\n    testTransformation(\n      `{ foo: [{ baz: { ...other.baz }, ...bar }] }`,\n      `{ foo: [{ baz: { \"___other.baz\": \"...other.baz\" }, \"___bar\": \"...bar\" }] }`\n    )\n  })\n})\n\ndescribe(\"nestSpreadElements\", () => {\n  let project: Project\n\n  beforeEach(() => {\n    project = new Project({ useInMemoryFileSystem: true })\n  })\n\n  function testTransformation(input: string, expected: string) {\n    const sourceFile = project.createSourceFile(\n      \"test.ts\",\n      `const config = ${input};`\n    )\n    const configObject = sourceFile.getFirstDescendantByKind(\n      SyntaxKind.ArrayLiteralExpression\n    )\n    if (!configObject) throw new Error(\"Config object not found\")\n\n    nestSpreadElements(configObject)\n\n    const result = configObject.getText()\n    expect(result.replace(/\\s+/g, \"\")).toBe(expected.replace(/\\s+/g, \"\"))\n  }\n\n  test(\"should spread elements\", () => {\n    testTransformation(\n      `[...bar]`,\n      `[\"...bar\"]`\n    )\n  })\n\n  test(\"should handle mixed element types\", () => {\n    testTransformation(\n      `['foo', 2, true, ...bar, \"baz\"]`,\n      `['foo', 2, true, \"...bar\", \"baz\"]`\n    )\n  })\n\n  test(\"should handle arrays with only spread elements\", () => {\n    testTransformation(\n      `[...foo, ...foo.bar, ...baz]`,\n      `[\"...foo\", \"...foo.bar\", \"...baz\"]`\n    )\n  })\n\n  test(\"should handle nested arrays with spreads\", () => {\n    testTransformation(\n      `[...foo, [...bar]]`,\n      `[\"...foo\", [\"...bar\"]]`\n    )\n  })\n\n  test(\"should handle nested arrays within objects\", () => {\n    testTransformation(\n      `[{ foo: [...foo] }]`,\n      `[{ foo: [\"...foo\"] }]`\n    )\n  })\n\n  test(\"should handle deeply nested arrays within spread objects\", () => {\n    testTransformation(\n      `[{ foo: [...foo, { bar: ['bar', ...bar ]}] }]`,\n      `[{ foo: [\"...foo\", { bar: ['bar', \"...bar\" ]}] }]`\n    )\n  })\n\n  test(\"should handle optional paths in spread\", () => {\n    testTransformation(\n      `[{ foo: [...foo?.bar] }]`,\n      `[{ foo: [\"...foo?.bar\"] }]`\n    )\n  })\n\n  test('should handle computed property paths within spread', () => {\n    testTransformation(\n      `[{ foo: [...foo[\"bar\"]] }]`,\n      `[{ foo: [\"...foo[\"bar\"]\"] }]`\n    )\n  })\n\n  test('should handle indexed paths in spread', () => {\n    testTransformation(\n      `[{ foo: [...foo[0]] }]`,\n      `[{ foo: [\"...foo[0]\"] }]`\n    )\n  })\n})\n\ndescribe(\"unnestSpreadProperties\", () => {\n  let project: Project\n\n  beforeEach(() => {\n    project = new Project({ useInMemoryFileSystem: true })\n  })\n\n  function testTransformation(input: string, expected: string) {\n    const sourceFile = project.createSourceFile(\n      \"test.ts\",\n      `const config = ${input};`\n    )\n    const configObject = sourceFile.getFirstDescendantByKind(\n      SyntaxKind.ObjectLiteralExpression\n    )\n    if (!configObject) throw new Error(\"Config object not found\")\n\n    unnestSpreadProperties(configObject)\n\n    const result = configObject.getText()\n    expect(result.replace(/\\s+/g, \"\")).toBe(expected.replace(/\\s+/g, \"\"))\n  }\n\n  test(\"should nest spread properties\", () => {\n    testTransformation(\n      `{ theme: { ___foo: \"...foo\", bar: { ___baz: \"...baz\", one: \"two\" }, other: { a: \"b\", ___c: \"...c\" } } }`,\n      `{ theme: { ...foo, bar: { ...baz, one: \"two\" }, other: { a: \"b\", ...c } } }`\n    )\n  })\n\n  test(\"should handle mixed property assignments\", () => {\n    testTransformation(\n      `{ ___foo: \"...foo\", a: 1, b() {}, ___bar: \"...bar\", c: { ___baz: \"...baz\" } }`,\n      `{ ...foo, a: 1, b() {}, ...bar, c: { ...baz } }`\n    )\n  })\n\n  test(\"should handle objects with only spread properties\", () => {\n    testTransformation(\n      `{ ___foo: \"...foo\", ___bar: \"...bar\", ___baz: \"...baz\" }`,\n      `{ ...foo, ...bar, ...baz }`\n    )\n  })\n\n  test(\"should handle property name conflicts\", () => {\n    testTransformation(`{ foo: 1, ___foo: \"...foo\" }`, `{ foo: 1, ...foo }`)\n  })\n\n  test(\"should handle shorthand property names\", () => {\n    testTransformation(`{ a, ___foo: \"...foo\", b }`, `{ a, ...foo, b }`)\n  })\n\n  test(\"should handle computed property names\", () => {\n    testTransformation(\n      `{ [\"computed\"]: 1, \"___foo\": \"...foo\" }`,\n      `{ [\"computed\"]: 1, ...foo }`\n    )\n  })\n\n  test(\"should handle spread objects within arrays\", () => {\n    testTransformation(\n      `{ [\"computed\"]: 1, foo: [{ \"___foo\": \"...foo\" }] }`,\n      `{ [\"computed\"]: 1, foo: [{...foo}] }`\n    )\n  })\n\n  test(\"should handle deeply nested spread objects within an array\", () => {\n    testTransformation(\n      `{ [\"computed\"]: 1, foo: [{ \"___foo\": \"...foo\", bar: { baz: 'baz', \"___foo.bar\": \"...foo.bar\" } }] }`,\n      `{ [\"computed\"]: 1, foo: [{...foo, bar: { baz: 'baz', ...foo.bar } }] }`\n    )\n  })\n})\n\ndescribe(\"unnestSpreadElements\", () => {\n  let project: Project\n\n  beforeEach(() => {\n    project = new Project({ useInMemoryFileSystem: true })\n  })\n\n  function testTransformation(input: string, expected: string) {\n    const sourceFile = project.createSourceFile(\n      \"test.ts\",\n      `const config = ${input};`\n    )\n    const configObject = sourceFile.getFirstDescendantByKind(\n      SyntaxKind.ArrayLiteralExpression\n    )\n    if (!configObject) throw new Error(\"Config object not found\")\n\n    unsetSpreadElements(configObject)\n\n    const result = configObject.getText()\n    expect(result.replace(/\\s+/g, \"\")).toBe(expected.replace(/\\s+/g, \"\"))\n  }\n\n  test(\"should spread elements\", () => {\n    testTransformation(\n      `[\"...bar\"]`,\n      `[...bar]`,\n    )\n  })\n\n  test(\"should handle mixed element types\", () => {\n    testTransformation(\n      `['foo', 2, true, \"...bar\", \"baz\"]`,\n      `['foo', 2, true, ...bar, \"baz\"]`,\n    )\n  })\n\n  test(\"should handle arrays with only spread elements\", () => {\n    testTransformation(\n      `[\"...foo\", \"...foo.bar\", \"...baz\"]`,\n      `[...foo, ...foo.bar, ...baz]`,\n    )\n  })\n\n  test(\"should handle nested arrays with spreads\", () => {\n    testTransformation(\n      `[\"...foo\", [\"...bar\"]]`,\n      `[...foo, [...bar]]`,\n    )\n  })\n\n  test(\"should handle nested arrays within objects\", () => {\n    testTransformation(\n      `[{ foo: [\"...foo\"] }]`,\n      `[{ foo: [...foo] }]`,\n    )\n  })\n\n  test(\"should handle deeply nested arrays within spread objects\", () => {\n    testTransformation(\n      `[{ foo: [\"...foo\", { bar: ['bar', \"...bar\" ]}] }]`,\n      `[{ foo: [...foo, { bar: ['bar', ...bar ]}] }]`,\n    )\n  })\n\n  test(\"should handle optional paths in spread\", () => {\n    testTransformation(\n      `[{ foo: [\"...foo?.bar\"] }]`,\n      `[{ foo: [...foo?.bar] }]`,\n\n    )\n  })\n\n  test(\"should handle computed property paths (') within spread\", () => {\n    testTransformation(\n      `[{ foo: [\"...foo['bar']\"] }]`,\n      `[{ foo: [...foo['bar']] }]`,\n    )\n  })\n\n  test('should handle computed property paths (\") within spread', () => {\n    testTransformation(\n      `[{ foo: ['...foo[\"bar\"]'] }]`,\n      `[{ foo: [...foo[\"bar\"]] }]`,\n    )\n  })\n\n  test('should handle indexed paths in spread', () => {\n    testTransformation(\n      `[{ foo: [\"...foo[0]\"] }]`,\n      `[{ foo: [...foo[0]] }]`,\n    )\n  })\n})\n\ndescribe(\"buildTailwindThemeColorsFromCssVars\", () => {\n  test(\"should inline color names\", () => {\n    expect(\n      buildTailwindThemeColorsFromCssVars({\n        primary: \"blue\",\n        \"primary-light\": \"skyblue\",\n        \"primary-dark\": \"navy\",\n        secondary: \"green\",\n        accent: \"orange\",\n        \"accent-hover\": \"darkorange\",\n        \"accent-active\": \"orangered\",\n      })\n    ).toEqual({\n      primary: {\n        DEFAULT: \"hsl(var(--primary))\",\n        light: \"hsl(var(--primary-light))\",\n        dark: \"hsl(var(--primary-dark))\",\n      },\n      secondary: \"hsl(var(--secondary))\",\n      accent: {\n        DEFAULT: \"hsl(var(--accent))\",\n        hover: \"hsl(var(--accent-hover))\",\n        active: \"hsl(var(--accent-active))\",\n      },\n    })\n  })\n\n  test(\"should not add a DEFAULT if not present\", () => {\n    expect(\n      buildTailwindThemeColorsFromCssVars({\n        \"primary-light\": \"skyblue\",\n        \"primary-dark\": \"navy\",\n        secondary: \"green\",\n        accent: \"orange\",\n        \"accent-hover\": \"darkorange\",\n        \"accent-active\": \"orangered\",\n      })\n    ).toEqual({\n      primary: {\n        light: \"hsl(var(--primary-light))\",\n        dark: \"hsl(var(--primary-dark))\",\n      },\n      secondary: \"hsl(var(--secondary))\",\n      accent: {\n        DEFAULT: \"hsl(var(--accent))\",\n        hover: \"hsl(var(--accent-hover))\",\n        active: \"hsl(var(--accent-active))\",\n      },\n    })\n  })\n\n  test(\"should build tailwind theme colors from css vars\", () => {\n    expect(\n      buildTailwindThemeColorsFromCssVars({\n        background: \"0 0% 100%\",\n        foreground: \"224 71.4% 4.1%\",\n        card: \"0 0% 100%\",\n        \"card-foreground\": \"224 71.4% 4.1%\",\n        popover: \"0 0% 100%\",\n        \"popover-foreground\": \"224 71.4% 4.1%\",\n        primary: \"220.9 39.3% 11%\",\n        \"primary-foreground\": \"210 20% 98%\",\n        secondary: \"220 14.3% 95.9%\",\n        \"secondary-foreground\": \"220.9 39.3% 11%\",\n        muted: \"220 14.3% 95.9%\",\n        \"muted-foreground\": \"220 8.9% 46.1%\",\n        accent: \"220 14.3% 95.9%\",\n        \"accent-foreground\": \"220.9 39.3% 11%\",\n        destructive: \"0 84.2% 60.2%\",\n        \"destructive-foreground\": \"210 20% 98%\",\n        border: \"220 13% 91%\",\n        input: \"220 13% 91%\",\n        ring: \"224 71.4% 4.1%\",\n      })\n    ).toEqual({\n      border: \"hsl(var(--border))\",\n      input: \"hsl(var(--input))\",\n      ring: \"hsl(var(--ring))\",\n      background: \"hsl(var(--background))\",\n      foreground: \"hsl(var(--foreground))\",\n      primary: {\n        DEFAULT: \"hsl(var(--primary))\",\n        foreground: \"hsl(var(--primary-foreground))\",\n      },\n      secondary: {\n        DEFAULT: \"hsl(var(--secondary))\",\n        foreground: \"hsl(var(--secondary-foreground))\",\n      },\n      destructive: {\n        DEFAULT: \"hsl(var(--destructive))\",\n        foreground: \"hsl(var(--destructive-foreground))\",\n      },\n      muted: {\n        DEFAULT: \"hsl(var(--muted))\",\n        foreground: \"hsl(var(--muted-foreground))\",\n      },\n      accent: {\n        DEFAULT: \"hsl(var(--accent))\",\n        foreground: \"hsl(var(--accent-foreground))\",\n      },\n      popover: {\n        DEFAULT: \"hsl(var(--popover))\",\n        foreground: \"hsl(var(--popover-foreground))\",\n      },\n      card: {\n        DEFAULT: \"hsl(var(--card))\",\n        foreground: \"hsl(var(--card-foreground))\",\n      },\n    })\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/test/utils/updaters/update-tailwind-content.test.ts",
    "content": "import { describe, expect, test } from \"vitest\"\n\nimport { transformTailwindContent } from \"../../../src/utils/updaters/update-tailwind-content\"\n\nconst SHARED_CONFIG = {\n  $schema: \"https://ui.shadcn.com/schema.json\",\n  style: \"new-york\",\n  rsc: true,\n  tsx: true,\n  tailwind: {\n    config: \"tailwind.config.ts\",\n    css: \"app/globals.css\",\n    baseColor: \"slate\",\n    cssVariables: true,\n  },\n  aliases: {\n    components: \"@/components\",\n    utils: \"@/lib/utils\",\n  },\n  resolvedPaths: {\n    cwd: \".\",\n    tailwindConfig: \"tailwind.config.ts\",\n    tailwindCss: \"app/globals.css\",\n    components: \"./components\",\n    utils: \"./lib/utils\",\n    ui: \"./components/ui\",\n  },\n}\n\ndescribe(\"transformTailwindContent -> content property\", () => {\n  test(\"should add content property if not in config\", async () => {\n    expect(\n      await transformTailwindContent(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  `,\n        [\"./foo/**/*.{js,ts,jsx,tsx,mdx}\", \"./bar/**/*.{js,ts,jsx,tsx,mdx}\"],\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n\n  test(\"should NOT add content property if already in config\", async () => {\n    expect(\n      await transformTailwindContent(\n        `import type { Config } from 'tailwindcss'\n\nconst config: Config = {\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      backgroundImage: {\n        \"gradient-radial\": \"radial-gradient(var(--tw-gradient-stops))\",\n        \"gradient-conic\":\n          \"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))\",\n      },\n    },\n  },\n  plugins: [],\n}\nexport default config\n  `,\n        [\"./app/**/*.{js,ts,jsx,tsx,mdx}\", \"./bar/**/*.{js,ts,jsx,tsx,mdx}\"],\n        {\n          config: SHARED_CONFIG,\n        }\n      )\n    ).toMatchSnapshot()\n  })\n})\n"
  },
  {
    "path": "packages/shadcn/tsconfig.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"isolatedModules\": false,\n    \"resolveJsonModule\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"src/**/*.ts\"],\n  \"exclude\": [\"node_modules\", \"test/fixtures\"]\n}\n"
  },
  {
    "path": "packages/shadcn/tsup.config.ts",
    "content": "import { copyFileSync } from \"fs\"\nimport { defineConfig } from \"tsup\"\n\nexport default defineConfig({\n  clean: true,\n  dts: true,\n  entry: [\n    \"src/index.ts\",\n    \"src/registry/index.ts\",\n    \"src/schema/index.ts\",\n    \"src/mcp/index.ts\",\n    \"src/utils/index.ts\",\n    \"src/icons/index.ts\",\n    \"src/preset/index.ts\",\n  ],\n  format: [\"esm\"],\n  sourcemap: false,\n  minify: true,\n  target: \"esnext\",\n  outDir: \"dist\",\n  treeshake: true,\n  // Bundle @antfu/ni and its dependency tinyexec to avoid\n  // module resolution failures with npx temporary installs.\n  noExternal: [\"@antfu/ni\", \"tinyexec\"],\n  onSuccess: async () => {\n    copyFileSync(\"src/tailwind.css\", \"dist/tailwind.css\")\n  },\n})\n"
  },
  {
    "path": "packages/shadcn/vitest.config.ts",
    "content": "import tsconfigPaths from \"vite-tsconfig-paths\"\nimport { configDefaults, defineConfig } from \"vitest/config\"\n\nexport default defineConfig({\n  test: {\n    exclude: [\n      ...configDefaults.exclude,\n      \"**/node_modules/**\",\n      \"**/fixtures/**\",\n      \"**/templates/**\",\n    ],\n    testTimeout: 8000,\n  },\n  plugins: [\n    tsconfigPaths({\n      ignoreConfigErrors: true,\n    }),\n  ],\n})\n"
  },
  {
    "path": "packages/tests/.eslintignore",
    "content": "fixtures/\ntemp/"
  },
  {
    "path": "packages/tests/.gitignore",
    "content": "temp/\n*.log\n.cache/"
  },
  {
    "path": "packages/tests/.prettierignore",
    "content": "fixtures/**\n"
  },
  {
    "path": "packages/tests/README.md",
    "content": "# Tests\n\nThis package contains integration tests that verify the shadcn CLI works correctly with a local registry. The tests run actual CLI commands against test fixtures to ensure files are created and updated properly.\n\n## Running Tests\n\nRun the following command from the root of the workspace:\n\n```bash\npnpm tests:test\n```\n\n## Writing Tests\n\n```typescript\nimport {\n  createFixtureTestDirectory,\n  fileExists,\n  npxShadcn,\n} from \"../utils/helpers\"\n\ndescribe(\"my test suite\", () => {\n  it(\"should do something\", async () => {\n    // Create a test directory from a fixture\n    const testDir = await createFixtureTestDirectory(\"next-app\")\n\n    // Run CLI command\n    await npxShadcn(testDir, [\"init\", \"--base-color=neutral\"])\n\n    // Make assertions\n    expect(await fileExists(path.join(testDir, \"components.json\"))).toBe(true)\n  })\n})\n```\n"
  },
  {
    "path": "packages/tests/fixtures/next-app/app/globals.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "packages/tests/fixtures/next-app/app/layout.tsx",
    "content": "import \"./globals.css\"\nimport type { Metadata } from \"next\"\nimport { Inter } from \"next/font/google\"\n\nconst inter = Inter({ subsets: [\"latin\"] })\n\nexport const metadata: Metadata = {\n  title: \"Create Next App\",\n  description: \"Generated by create next app\",\n}\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={inter.className}>{children}</body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app/app/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app/app/page.tsx",
    "content": "import Image from \"next/image\"\n\nexport default function Home() {\n  return (\n    <main className=\"flex min-h-screen flex-col items-center justify-between p-24\">\n      <div className=\"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex\">\n        <p className=\"fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30\">\n          Get started by editing&nbsp;\n          <code className=\"font-mono font-bold\">app/page.tsx</code>\n        </p>\n        <div className=\"fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none\">\n          <a\n            className=\"pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0\"\n            href=\"https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            By{\" \"}\n            <Image\n              src=\"/vercel.svg\"\n              alt=\"Vercel Logo\"\n              className=\"dark:invert\"\n              width={100}\n              height={24}\n              priority\n            />\n          </a>\n        </div>\n      </div>\n\n      <div className=\"relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 before:lg:h-[360px] z-[-1]\">\n        <Image\n          className=\"relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert\"\n          src=\"/next.svg\"\n          alt=\"Next.js Logo\"\n          width={180}\n          height={37}\n          priority\n        />\n      </div>\n\n      <div className=\"mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left\">\n        <a\n          href=\"https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Docs{\" \"}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Find in-depth information about Next.js features and API.\n          </p>\n        </a>\n\n        <a\n          href=\"https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Learn{\" \"}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Learn about Next.js in an interactive course with&nbsp;quizzes!\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Templates{\" \"}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Explore the Next.js 13 playground.\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Deploy{\" \"}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Instantly deploy your Next.js site to a shareable URL with Vercel.\n          </p>\n        </a>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app/next.config.ts",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/tests/fixtures/next-app/package.json",
    "content": "{\n  \"name\": \"my-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev --turbopack\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"lucide-react\": \"^0.527.0\",\n    \"next\": \"15.4.10\",\n    \"react\": \"19.1.0\",\n    \"react-dom\": \"19.1.0\",\n    \"tailwind-merge\": \"^3.3.1\"\n  },\n  \"devDependencies\": {\n    \"@eslint/eslintrc\": \"^3\",\n    \"@tailwindcss/postcss\": \"^4\",\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^19\",\n    \"@types/react-dom\": \"^19\",\n    \"eslint\": \"^9\",\n    \"eslint-config-next\": \"15.4.4\",\n    \"tailwindcss\": \"^4\",\n    \"tw-animate-css\": \"^1.3.6\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app/postcss.config.mjs",
    "content": "const config = {\n  plugins: [\"@tailwindcss/postcss\"],\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/tests/fixtures/next-app/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/app/globals.css",
    "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n\n@custom-variant dark (&:is(.dark *));\n\n@theme inline {\n  --radius-sm: calc(var(--radius) - 4px);\n  --radius-md: calc(var(--radius) - 2px);\n  --radius-lg: var(--radius);\n  --radius-xl: calc(var(--radius) + 4px);\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  --color-card: var(--card);\n  --color-card-foreground: var(--card-foreground);\n  --color-popover: var(--popover);\n  --color-popover-foreground: var(--popover-foreground);\n  --color-primary: var(--primary);\n  --color-primary-foreground: var(--primary-foreground);\n  --color-secondary: var(--secondary);\n  --color-secondary-foreground: var(--secondary-foreground);\n  --color-muted: var(--muted);\n  --color-muted-foreground: var(--muted-foreground);\n  --color-accent: var(--accent);\n  --color-accent-foreground: var(--accent-foreground);\n  --color-destructive: var(--destructive);\n  --color-border: var(--border);\n  --color-input: var(--input);\n  --color-ring: var(--ring);\n  --color-chart-1: var(--chart-1);\n  --color-chart-2: var(--chart-2);\n  --color-chart-3: var(--chart-3);\n  --color-chart-4: var(--chart-4);\n  --color-chart-5: var(--chart-5);\n  --color-sidebar: var(--sidebar);\n  --color-sidebar-foreground: var(--sidebar-foreground);\n  --color-sidebar-primary: var(--sidebar-primary);\n  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n  --color-sidebar-accent: var(--sidebar-accent);\n  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n  --color-sidebar-border: var(--sidebar-border);\n  --color-sidebar-ring: var(--sidebar-ring);\n}\n\n:root {\n  --radius: 0.625rem;\n  --background: oklch(1 0 0);\n  --foreground: oklch(0.145 0 0);\n  --card: oklch(1 0 0);\n  --card-foreground: oklch(0.145 0 0);\n  --popover: oklch(1 0 0);\n  --popover-foreground: oklch(0.145 0 0);\n  --primary: oklch(0.205 0 0);\n  --primary-foreground: oklch(0.985 0 0);\n  --secondary: oklch(0.97 0 0);\n  --secondary-foreground: oklch(0.205 0 0);\n  --muted: oklch(0.97 0 0);\n  --muted-foreground: oklch(0.556 0 0);\n  --accent: oklch(0.97 0 0);\n  --accent-foreground: oklch(0.205 0 0);\n  --destructive: oklch(0.577 0.245 27.325);\n  --border: oklch(0.922 0 0);\n  --input: oklch(0.922 0 0);\n  --ring: oklch(0.708 0 0);\n  --chart-1: oklch(0.646 0.222 41.116);\n  --chart-2: oklch(0.6 0.118 184.704);\n  --chart-3: oklch(0.398 0.07 227.392);\n  --chart-4: oklch(0.828 0.189 84.429);\n  --chart-5: oklch(0.769 0.188 70.08);\n  --sidebar: oklch(0.985 0 0);\n  --sidebar-foreground: oklch(0.145 0 0);\n  --sidebar-primary: oklch(0.205 0 0);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.97 0 0);\n  --sidebar-accent-foreground: oklch(0.205 0 0);\n  --sidebar-border: oklch(0.922 0 0);\n  --sidebar-ring: oklch(0.708 0 0);\n}\n\n.dark {\n  --background: oklch(0.145 0 0);\n  --foreground: oklch(0.985 0 0);\n  --card: oklch(0.205 0 0);\n  --card-foreground: oklch(0.985 0 0);\n  --popover: oklch(0.205 0 0);\n  --popover-foreground: oklch(0.985 0 0);\n  --primary: oklch(0.922 0 0);\n  --primary-foreground: oklch(0.205 0 0);\n  --secondary: oklch(0.269 0 0);\n  --secondary-foreground: oklch(0.985 0 0);\n  --muted: oklch(0.269 0 0);\n  --muted-foreground: oklch(0.708 0 0);\n  --accent: oklch(0.269 0 0);\n  --accent-foreground: oklch(0.985 0 0);\n  --destructive: oklch(0.704 0.191 22.216);\n  --border: oklch(1 0 0 / 10%);\n  --input: oklch(1 0 0 / 15%);\n  --ring: oklch(0.556 0 0);\n  --chart-1: oklch(0.488 0.243 264.376);\n  --chart-2: oklch(0.696 0.17 162.48);\n  --chart-3: oklch(0.769 0.188 70.08);\n  --chart-4: oklch(0.627 0.265 303.9);\n  --chart-5: oklch(0.645 0.246 16.439);\n  --sidebar: oklch(0.205 0 0);\n  --sidebar-foreground: oklch(0.985 0 0);\n  --sidebar-primary: oklch(0.488 0.243 264.376);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.269 0 0);\n  --sidebar-accent-foreground: oklch(0.985 0 0);\n  --sidebar-border: oklch(1 0 0 / 10%);\n  --sidebar-ring: oklch(0.556 0 0);\n}\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/app/layout.tsx",
    "content": "import \"./globals.css\"\nimport type { Metadata } from \"next\"\nimport { Inter } from \"next/font/google\"\n\nconst inter = Inter({ subsets: [\"latin\"] })\n\nexport const metadata: Metadata = {\n  title: \"Create Next App\",\n  description: \"Generated by create next app\",\n}\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={inter.className}>{children}</body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/app/other.css",
    "content": "body {\n  background-color: red;\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/app/page.tsx",
    "content": "import Image from \"next/image\"\n\nexport default function Home() {\n  return (\n    <main className=\"flex min-h-screen flex-col items-center justify-between p-24\">\n      <div className=\"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex\">\n        <p className=\"fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto  lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30\">\n          Get started by editing&nbsp;\n          <code className=\"font-mono font-bold\">app/page.tsx</code>\n        </p>\n        <div className=\"fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none\">\n          <a\n            className=\"pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0\"\n            href=\"https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            By{\" \"}\n            <Image\n              src=\"/vercel.svg\"\n              alt=\"Vercel Logo\"\n              className=\"dark:invert\"\n              width={100}\n              height={24}\n              priority\n            />\n          </a>\n        </div>\n      </div>\n\n      <div className=\"relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 before:lg:h-[360px] z-[-1]\">\n        <Image\n          className=\"relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert\"\n          src=\"/next.svg\"\n          alt=\"Next.js Logo\"\n          width={180}\n          height={37}\n          priority\n        />\n      </div>\n\n      <div className=\"mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left\">\n        <a\n          href=\"https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Docs{\" \"}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Find in-depth information about Next.js features and API.\n          </p>\n        </a>\n\n        <a\n          href=\"https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Learn{\" \"}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Learn about Next.js in an interactive course with&nbsp;quizzes!\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Templates{\" \"}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Explore the Next.js 13 playground.\n          </p>\n        </a>\n\n        <a\n          href=\"https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app\"\n          className=\"group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <h2 className={`mb-3 text-2xl font-semibold`}>\n            Deploy{\" \"}\n            <span className=\"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\">\n              -&gt;\n            </span>\n          </h2>\n          <p className={`m-0 max-w-[30ch] text-sm opacity-50`}>\n            Instantly deploy your Next.js site to a shareable URL with Vercel.\n          </p>\n        </a>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/next.config.ts",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/package.json",
    "content": "{\n  \"name\": \"my-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev --turbopack\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"lucide-react\": \"^0.527.0\",\n    \"next\": \"15.4.10\",\n    \"react\": \"19.1.0\",\n    \"react-dom\": \"19.1.0\",\n    \"tailwind-merge\": \"^3.3.1\"\n  },\n  \"devDependencies\": {\n    \"@eslint/eslintrc\": \"^3\",\n    \"@tailwindcss/postcss\": \"^4\",\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^19\",\n    \"@types/react-dom\": \"^19\",\n    \"eslint\": \"^9\",\n    \"eslint-config-next\": \"15.4.4\",\n    \"tailwindcss\": \"^4\",\n    \"tw-animate-css\": \"^1.3.6\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/postcss.config.mjs",
    "content": "const config = {\n  plugins: [\"@tailwindcss/postcss\"],\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/tests/fixtures/next-app-init/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/tests/fixtures/no-framework/.gitkeep",
    "content": ""
  },
  {
    "path": "packages/tests/fixtures/registry/example-at-property.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example-at-property\",\n  \"type\": \"registry:style\",\n  \"css\": {\n    \"@property --foo\": {\n      \"syntax\": \"'<number>'\",\n      \"inherits\": \"false\",\n      \"initial-value\": \"0\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/registry/example-component.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example-component\",\n  \"type\": \"registry:component\",\n  \"files\": [\n    {\n      \"path\": \"example/hello-world.tsx\",\n      \"type\": \"registry:component\",\n      \"content\": \"console.log('Hello, world!')\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/tests/fixtures/registry/example-env-vars.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example-env-vars\",\n  \"type\": \"registry:item\",\n  \"envVars\": {\n    \"APP_URL\": \"https://example.com\",\n    \"EMPTY_VAR\": \"\",\n    \"MULTILINE_VAR\": \"\\\"line1\\nline2\\nline3\\\"\"\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/registry/example-item-to-root.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example-item-to-root\",\n  \"type\": \"registry:item\",\n  \"files\": [\n    {\n      \"path\": \"example/config.json\",\n      \"type\": \"registry:item\",\n      \"content\": \"{\\\"foo\\\": \\\"bar\\\"}\",\n      \"target\": \"~/config.json\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/tests/fixtures/registry/example-item.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example-item\",\n  \"type\": \"registry:item\",\n  \"files\": [\n    {\n      \"path\": \"example/foo.txt\",\n      \"type\": \"registry:item\",\n      \"content\": \"Foo Bar\",\n      \"target\": \"path/to/foo.txt\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/tests/fixtures/registry/example-style.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"example-style\",\n  \"type\": \"registry:style\",\n  \"dependencies\": [\"@tabler/icons-react\"],\n  \"cssVars\": {\n    \"theme\": {\n      \"font-sans\": \"Inter, sans-serif\"\n    },\n    \"light\": {\n      \"brand\": \"oklch(20 14.3% 4.1%)\",\n      \"brand-foreground\": \"oklch(24 1.3% 10%)\"\n    },\n    \"dark\": {\n      \"brand\": \"oklch(24 1.3% 10%)\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/remix-app/app/globals.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "packages/tests/fixtures/remix-app/package.json",
    "content": "{\n  \"name\": \"my-remix-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"remix vite:dev\",\n    \"build\": \"remix vite:build\"\n  },\n  \"dependencies\": {\n    \"@remix-run/node\": \"^2.0.0\",\n    \"@remix-run/react\": \"^2.0.0\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"lucide-react\": \"^0.527.0\",\n    \"react\": \"19.1.0\",\n    \"react-dom\": \"19.1.0\",\n    \"tailwind-merge\": \"^3.3.1\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/postcss\": \"^4\",\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^19\",\n    \"@types/react-dom\": \"^19\",\n    \"tailwindcss\": \"^4\",\n    \"tw-animate-css\": \"^1.3.6\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/remix-app/postcss.config.mjs",
    "content": "const config = {\n  plugins: [\"@tailwindcss/postcss\"],\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/tests/fixtures/remix-app/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"**/*.ts\", \"**/*.tsx\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/eslint.config.js",
    "content": "import js from '@eslint/js'\nimport globals from 'globals'\nimport reactHooks from 'eslint-plugin-react-hooks'\nimport reactRefresh from 'eslint-plugin-react-refresh'\nimport tseslint from 'typescript-eslint'\nimport { globalIgnores } from 'eslint/config'\n\nexport default tseslint.config([\n  globalIgnores(['dist']),\n  {\n    files: ['**/*.{ts,tsx}'],\n    extends: [\n      js.configs.recommended,\n      tseslint.configs.recommended,\n      reactHooks.configs['recommended-latest'],\n      reactRefresh.configs.vite,\n    ],\n    languageOptions: {\n      ecmaVersion: 2020,\n      globals: globals.browser,\n    },\n  },\n])\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Vite + React + TS</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/package.json",
    "content": "{\n  \"name\": \"vite-project\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"tsc -b && vite build\",\n    \"lint\": \"eslint .\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@tailwindcss/vite\": \"^4.1.11\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"lucide-react\": \"^0.525.0\",\n    \"react\": \"^19.1.0\",\n    \"react-dom\": \"^19.1.0\",\n    \"tailwind-merge\": \"^3.3.1\",\n    \"tailwindcss\": \"^4.1.11\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.30.1\",\n    \"@types/node\": \"^24.1.0\",\n    \"@types/react\": \"^19.1.8\",\n    \"@types/react-dom\": \"^19.1.6\",\n    \"@vitejs/plugin-react\": \"^4.6.0\",\n    \"eslint\": \"^9.30.1\",\n    \"eslint-plugin-react-hooks\": \"^5.2.0\",\n    \"eslint-plugin-react-refresh\": \"^0.4.20\",\n    \"globals\": \"^16.3.0\",\n    \"tw-animate-css\": \"^1.3.5\",\n    \"typescript\": \"~5.8.3\",\n    \"typescript-eslint\": \"^8.35.1\",\n    \"vite\": \"^7.0.4\"\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/src/App.css",
    "content": "#root {\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 2rem;\n  text-align: center;\n}\n\n.logo {\n  height: 6em;\n  padding: 1.5em;\n  will-change: filter;\n  transition: filter 300ms;\n}\n.logo:hover {\n  filter: drop-shadow(0 0 2em #646cffaa);\n}\n.logo.react:hover {\n  filter: drop-shadow(0 0 2em #61dafbaa);\n}\n\n@keyframes logo-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  a:nth-of-type(2) .logo {\n    animation: logo-spin infinite 20s linear;\n  }\n}\n\n.card {\n  padding: 2em;\n}\n\n.read-the-docs {\n  color: #888;\n}\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/src/App.tsx",
    "content": "import { useState } from \"react\"\n\nimport reactLogo from \"./assets/react.svg\"\nimport viteLogo from \"/vite.svg\"\nimport \"./App.css\"\n\nfunction App() {\n  const [count, setCount] = useState(0)\n\n  return (\n    <>\n      <div>\n        <a href=\"https://vite.dev\" target=\"_blank\">\n          <img src={viteLogo} className=\"logo\" alt=\"Vite logo\" />\n        </a>\n        <a href=\"https://react.dev\" target=\"_blank\">\n          <img src={reactLogo} className=\"logo react\" alt=\"React logo\" />\n        </a>\n      </div>\n      <h1>Vite + React</h1>\n      <div className=\"card\">\n        <button onClick={() => setCount((count) => count + 1)}>\n          count is {count}\n        </button>\n        <p>\n          Edit <code>src/App.tsx</code> and save to test HMR\n        </p>\n      </div>\n      <p className=\"read-the-docs\">\n        Click on the Vite and React logos to learn more\n      </p>\n    </>\n  )\n}\n\nexport default App\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/src/index.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/src/main.tsx",
    "content": "import { StrictMode } from \"react\"\nimport { createRoot } from \"react-dom/client\"\n\nimport \"./index.css\"\nimport App from \"./App.tsx\"\n\ncreateRoot(document.getElementById(\"root\")!).render(\n  <StrictMode>\n    <App />\n  </StrictMode>\n)\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/tsconfig.app.json",
    "content": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbuildinfo\",\n    \"target\": \"ES2022\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"verbatimModuleSyntax\": true,\n    \"moduleDetection\": \"force\",\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"erasableSyntaxOnly\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUncheckedSideEffectImports\": true,\n\n    /* Paths */\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"#custom/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/tsconfig.json",
    "content": "{\n  \"files\": [],\n  \"references\": [\n    { \"path\": \"./tsconfig.app.json\" },\n    { \"path\": \"./tsconfig.node.json\" }\n  ],\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"#custom/*\": [\"./src/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\n    \"target\": \"ES2023\",\n    \"lib\": [\"ES2023\"],\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"verbatimModuleSyntax\": true,\n    \"moduleDetection\": \"force\",\n    \"noEmit\": true,\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"erasableSyntaxOnly\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUncheckedSideEffectImports\": true\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "packages/tests/fixtures/vite-app/vite.config.ts",
    "content": "import path from \"path\"\nimport tailwindcss from \"@tailwindcss/vite\"\nimport react from \"@vitejs/plugin-react\"\nimport { defineConfig } from \"vite\"\n\n// https://vite.dev/config/\nexport default defineConfig({\n  plugins: [react(), tailwindcss()],\n  resolve: {\n    alias: {\n      \"#custom\": path.resolve(__dirname, \"./src\"),\n    },\n  },\n})\n"
  },
  {
    "path": "packages/tests/package.json",
    "content": "{\n  \"name\": \"tests\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"description\": \"Integration tests for shadcn CLI\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"test\": \"vitest run\",\n    \"format:write\": \"prettier --write \\\"**/*.{ts,tsx,mdx}\\\" --cache\",\n    \"format:check\": \"prettier --check \\\"**/*.{ts,tsx,mdx}\\\" --cache\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"shadcn\": \"workspace:*\"\n  },\n  \"devDependencies\": {\n    \"@types/fs-extra\": \"^11.0.1\",\n    \"@types/node\": \"^20.11.27\",\n    \"execa\": \"^7.0.0\",\n    \"fs-extra\": \"^11.1.0\",\n    \"rimraf\": \"^6.0.1\",\n    \"typescript\": \"^5.5.3\",\n    \"vite-tsconfig-paths\": \"^4.2.0\",\n    \"vitest\": \"^2.1.9\"\n  }\n}\n"
  },
  {
    "path": "packages/tests/src/tests/add.test.ts",
    "content": "import path from \"path\"\nimport fs from \"fs-extra\"\nimport { describe, expect, it } from \"vitest\"\n\nimport {\n  createFixtureTestDirectory,\n  cssHasProperties,\n  getRegistryUrl,\n  npxShadcn,\n} from \"../utils/helpers\"\n\n// Note: The tests here intentionally do not use a mocked registry.\n// We test this against the real registry.\n\ndescribe(\"shadcn add\", () => {\n  it(\"should add item to project\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"add\", \"button\"])\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add multiple items to project\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"add\", \"button\", \"card\"])\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/card.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add item from url\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    const registryUrl = getRegistryUrl()\n    const url = `${registryUrl}/styles/new-york-v4/login-01.json`\n    await npxShadcn(fixturePath, [\"add\", url])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"app/login/page.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/card.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/input.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/label.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add component from local file\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-component.json\",\n    ])\n\n    const helloWorldContent = await fs.readFile(\n      path.join(fixturePath, \"components/hello-world.tsx\"),\n      \"utf-8\"\n    )\n    expect(helloWorldContent).toBe(\"console.log('Hello, world!')\")\n  })\n\n  it(\"should add registry:page to the correct path\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"add\", \"login-03\"])\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"app/login/page.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add item with registryDependencies\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"add\", \"alert-dialog\"])\n    expect(\n      await fs.pathExists(\n        path.join(fixturePath, \"components/ui/alert-dialog.tsx\")\n      )\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add item with npm dependencies\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-style.json\",\n      \"--yes\",\n    ])\n    const packageJson = await fs.readJson(\n      path.join(fixturePath, \"package.json\")\n    )\n    expect(packageJson.dependencies[\"@tabler/icons-react\"]).toBeDefined()\n  })\n\n  it(\"should install cssVars\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-style.json\",\n      \"--yes\",\n    ])\n\n    const globalCssContent = await fs.readFile(\n      path.join(fixturePath, \"app/globals.css\"),\n      \"utf-8\"\n    )\n\n    expect(\n      cssHasProperties(globalCssContent, [\n        {\n          selector: \"@theme inline\",\n          properties: {\n            \"--font-sans\": \"Inter, sans-serif\",\n            \"--color-brand\": \"var(--brand)\",\n            \"--color-brand-foreground\": \"var(--brand-foreground)\",\n          },\n        },\n        {\n          selector: \":root\",\n          properties: {\n            \"--brand\": \"oklch(20 14.3% 4.1%)\",\n            \"--brand-foreground\": \"oklch(24 1.3% 10%)\",\n          },\n        },\n        {\n          selector: \".dark\",\n          properties: {\n            \"--brand\": \"oklch(24 1.3% 10%)\",\n          },\n        },\n      ])\n    ).toBe(true)\n  })\n\n  it(\"should add item with target\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-item.json\",\n    ])\n    expect(await fs.pathExists(path.join(fixturePath, \"path/to/foo.txt\"))).toBe(\n      true\n    )\n    expect(\n      await fs.readFile(path.join(fixturePath, \"path/to/foo.txt\"), \"utf-8\")\n    ).toBe(\"Foo Bar\")\n  })\n\n  it(\"should add item with target to src\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"vite-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-item.json\",\n    ])\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"src/path/to/foo.txt\"))\n    ).toBe(true)\n    expect(\n      await fs.readFile(path.join(fixturePath, \"src/path/to/foo.txt\"), \"utf-8\")\n    ).toBe(\"Foo Bar\")\n  })\n\n  it(\"should add item with target to root\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-item-to-root.json\",\n    ])\n    expect(await fs.pathExists(path.join(fixturePath, \"config.json\"))).toBe(\n      true\n    )\n    expect(await fs.readJson(path.join(fixturePath, \"config.json\"))).toEqual({\n      foo: \"bar\",\n    })\n  })\n\n  it(\"should add item with target to root when src\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"vite-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-item-to-root.json\",\n    ])\n    expect(await fs.pathExists(path.join(fixturePath, \"config.json\"))).toBe(\n      true\n    )\n    expect(await fs.readJson(path.join(fixturePath, \"config.json\"))).toEqual({\n      foo: \"bar\",\n    })\n  })\n\n  it(\"should add item with envVars\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-env-vars.json\",\n    ])\n    expect(await fs.pathExists(path.join(fixturePath, \".env.local\"))).toBe(true)\n    expect(await fs.readFile(path.join(fixturePath, \".env.local\"), \"utf-8\"))\n      .toMatchInlineSnapshot(`\n      \"APP_URL=https://example.com\n      EMPTY_VAR=\n      MULTILINE_VAR=\"line1\n      line2\n      line3\"\n      \"\n    `)\n  })\n\n  it(\"should add NOT update existing envVars\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    await fs.writeFile(\n      path.join(fixturePath, \".env.local\"),\n      \"APP_URL=https://foo.com\"\n    )\n\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-env-vars.json\",\n    ])\n\n    expect(await fs.pathExists(path.join(fixturePath, \".env.local\"))).toBe(true)\n    expect(await fs.readFile(path.join(fixturePath, \".env.local\"), \"utf-8\"))\n      .toMatchInlineSnapshot(`\n      \"APP_URL=https://foo.com\n\n      EMPTY_VAR=\n      MULTILINE_VAR=line1\n      \"\n    `)\n  })\n\n  it(\"should use existing .env if it exists\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    await fs.writeFile(\n      path.join(fixturePath, \".env\"),\n      \"APP_URL=https://foo.com\"\n    )\n\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-env-vars.json\",\n    ])\n\n    expect(await fs.pathExists(path.join(fixturePath, \".env.local\"))).toBe(\n      false\n    )\n    expect(await fs.readFile(path.join(fixturePath, \".env\"), \"utf-8\"))\n      .toMatchInlineSnapshot(`\n      \"APP_URL=https://foo.com\n\n      EMPTY_VAR=\n      MULTILINE_VAR=line1\n      \"\n    `)\n  })\n\n  it(\"should add registry:item with no framework\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"no-framework\")\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-item.json\",\n    ])\n\n    expect(await fs.pathExists(path.join(fixturePath, \"path/to/foo.txt\"))).toBe(\n      true\n    )\n    expect(\n      await fs.readFile(path.join(fixturePath, \"path/to/foo.txt\"), \"utf-8\")\n    ).toBe(\"Foo Bar\")\n  })\n\n  it(\"should add component to custom file path\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"add\", \"card\", \"--path=custom/my-card.tsx\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"custom/my-card.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/card.tsx\"))\n    ).toBe(false)\n  })\n\n  it(\"should add component to custom directory\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"add\", \"card\", \"--path=custom/components\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"custom/components/card.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/card.tsx\"))\n    ).toBe(false)\n  })\n\n  it(\"should add multiple files to custom directory\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"add\", \"input\", \"card\", \"--path=custom/ui\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"custom/ui/input.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"custom/ui/card.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/input.tsx\"))\n    ).toBe(false)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/card.tsx\"))\n    ).toBe(false)\n  })\n\n  it(\"should add at-property\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"../../fixtures/registry/example-at-property.json\",\n      \"--yes\",\n    ])\n\n    const globalCssContent = await fs.readFile(\n      path.join(fixturePath, \"app/globals.css\"),\n      \"utf-8\"\n    )\n\n    expect(\n      cssHasProperties(globalCssContent, [\n        {\n          selector: \"@property --foo\",\n          properties: {\n            syntax: \"'<number>'\",\n            inherits: \"false\",\n            \"initial-value\": \"0\",\n          },\n        },\n      ])\n    ).toBe(true)\n  })\n})\n\ndescribe(\"shadcn registry add\", () => {\n  it(\"should add registry from index to components.json\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"registry\", \"add\", \"@magicui\"])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.registries).toBeDefined()\n    expect(componentsJson.registries[\"@magicui\"]).toBeDefined()\n    expect(componentsJson.registries[\"@magicui\"]).toContain(\"{name}\")\n  })\n\n  it(\"should add custom registry with URL\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\n      \"registry\",\n      \"add\",\n      \"@mycompany=https://example.com/r/{name}.json\",\n    ])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.registries[\"@mycompany\"]).toBe(\n      \"https://example.com/r/{name}.json\"\n    )\n  })\n\n  it(\"should add multiple registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"registry\", \"add\", \"@magicui\", \"@aceternity\"])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.registries[\"@magicui\"]).toBeDefined()\n    expect(componentsJson.registries[\"@aceternity\"]).toBeDefined()\n  })\n\n  it(\"should skip already configured registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n    await npxShadcn(fixturePath, [\"registry\", \"add\", \"@magicui\"])\n\n    // Add again - should not error.\n    await npxShadcn(fixturePath, [\"registry\", \"add\", \"@magicui\"])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.registries[\"@magicui\"]).toBeDefined()\n  })\n\n  it(\"should error for registry not in index without URL\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    const result = await npxShadcn(fixturePath, [\n      \"registry\",\n      \"add\",\n      \"@nonexistent-registry-12345\",\n    ])\n    expect(result.exitCode).toBe(1)\n    expect(result.stdout).toContain(\"not found\")\n  })\n\n  it(\"should error for invalid URL missing {name}\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    const result = await npxShadcn(fixturePath, [\n      \"registry\",\n      \"add\",\n      \"@foo=https://example.com/bad.json\",\n    ])\n    expect(result.exitCode).toBe(1)\n    expect(result.stdout).toContain(\"{name}\")\n  })\n\n  it(\"should require components.json for adding registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"no-framework\")\n\n    // No init, so no components.json.\n    const result = await npxShadcn(fixturePath, [\"registry\", \"add\", \"@magicui\"])\n    expect(result.exitCode).toBe(1)\n    expect(result.stdout).toContain(\"components.json\")\n  })\n})\n"
  },
  {
    "path": "packages/tests/src/tests/init.test.ts",
    "content": "import os from \"os\"\nimport path from \"path\"\nimport fs from \"fs-extra\"\nimport { afterAll, beforeAll, describe, expect, it } from \"vitest\"\n\nimport {\n  createFixtureTestDirectory,\n  cssHasProperties,\n  npxShadcn,\n} from \"../utils/helpers\"\nimport { createRegistryServer } from \"../utils/registry\"\n\ndescribe(\"shadcn init - next-app\", () => {\n  it(\"should init with default configuration\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    expect(await fs.pathExists(componentsJsonPath)).toBe(true)\n\n    const componentsJson = await fs.readJson(componentsJsonPath)\n    expect(componentsJson).toMatchObject({\n      style: \"base-nova\",\n      rsc: true,\n      tsx: true,\n      tailwind: {\n        config: \"\",\n        css: \"app/globals.css\",\n        baseColor: \"neutral\",\n        cssVariables: true,\n      },\n      aliases: {\n        components: \"@/components\",\n        utils: \"@/lib/utils\",\n        ui: \"@/components/ui\",\n        lib: \"@/lib\",\n        hooks: \"@/hooks\",\n      },\n    })\n\n    expect(await fs.pathExists(path.join(fixturePath, \"lib/utils.ts\"))).toBe(\n      true\n    )\n\n    const cssPath = path.join(fixturePath, \"app/globals.css\")\n    const cssContent = await fs.readFile(cssPath, \"utf-8\")\n    expect(cssContent).toContain(\"@layer base\")\n    expect(cssContent).toContain(\":root\")\n    expect(cssContent).toContain(\".dark\")\n    expect(cssContent).toContain(\"tw-animate-css\")\n    expect(cssContent).toContain(\"--background\")\n    expect(cssContent).toContain(\"--foreground\")\n  })\n\n  it(\"should init without CSS variables\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\", \"--no-css-variables\"])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.tailwind.cssVariables).toBe(false)\n  })\n\n  it(\"should init with components\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\", \"button\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n  })\n})\n\ndescribe(\"shadcn init - vite-app\", () => {\n  it(\"should init with custom alias and src\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"vite-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\", \"alert-dialog\"])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.style).toBe(\"base-nova\")\n    expect(componentsJson.tailwind.baseColor).toBe(\"neutral\")\n    expect(componentsJson.aliases).toMatchObject({\n      components: \"#custom/components\",\n      utils: \"#custom/lib/utils\",\n      ui: \"#custom/components/ui\",\n      lib: \"#custom/lib\",\n      hooks: \"#custom/hooks\",\n    })\n\n    expect(\n      await fs.pathExists(\n        path.join(fixturePath, \"src/components/ui/alert-dialog.tsx\")\n      )\n    ).toBe(true)\n\n    expect(\n      await fs.pathExists(\n        path.join(fixturePath, \"src/components/ui/button.tsx\")\n      )\n    ).toBe(true)\n\n    const alertDialogContent = await fs.readFile(\n      path.join(fixturePath, \"src/components/ui/alert-dialog.tsx\"),\n      \"utf-8\"\n    )\n    expect(alertDialogContent).toContain(\n      'import { Button } from \"#custom/components/ui/button\"'\n    )\n    expect(alertDialogContent).toContain(\n      'import { cn } from \"#custom/lib/utils\"'\n    )\n  })\n})\n\ndescribe(\"shadcn init - custom style\", async () => {\n  const customRegistry = await createRegistryServer(\n    [\n      {\n        name: \"style\",\n        type: \"registry:style\",\n        files: [\n          {\n            path: \"path/to/foo.ts\",\n            content: \"const foo = 'bar'\",\n            type: \"registry:lib\",\n          },\n        ],\n        cssVars: {\n          theme: {\n            \"font-sans\": \"DM Sans, sans-serif\",\n          },\n          light: {\n            primary: \"#dc2626\",\n            \"foo-var\": \"3rem\",\n          },\n          dark: {\n            \"custom-brand\": \"#fef3c7\",\n            \"foo-var\": \"1rem\",\n          },\n        },\n      },\n      {\n        name: \"style-extended\",\n        type: \"registry:style\",\n        registryDependencies: [\"http://localhost:4445/r/style.json\"],\n        files: [\n          {\n            path: \"path/to/foo.ts\",\n            content: \"const foo = 'baz-qux'\",\n            type: \"registry:lib\",\n          },\n        ],\n        cssVars: {\n          theme: {\n            \"font-sans\": \"Geist Sans, sans-serif\",\n            \"font-mono\": \"Geist Mono, monospace\",\n          },\n          light: {\n            primary: \"#059669\",\n            secondary: \"#06b6d4\",\n          },\n          dark: {\n            \"foo-var\": \"2rem\",\n          },\n        },\n      },\n      {\n        name: \"style-extend-none\",\n        type: \"registry:style\",\n        extends: \"none\",\n        registryDependencies: [\"http://localhost:4445/r/style.json\"],\n        files: [\n          {\n            path: \"path/to/foo.ts\",\n            content: \"const foo = 'baz-qux'\",\n            type: \"registry:lib\",\n          },\n        ],\n        cssVars: {\n          theme: {\n            \"font-sans\": \"Geist Sans, sans-serif\",\n            \"font-mono\": \"Geist Mono, monospace\",\n          },\n          light: {\n            primary: \"#059669\",\n            secondary: \"#06b6d4\",\n          },\n          dark: {\n            \"foo-var\": \"2rem\",\n          },\n        },\n      },\n    ],\n    {\n      port: 4445,\n    }\n  )\n\n  beforeAll(async () => {\n    await customRegistry.start()\n  })\n\n  afterAll(async () => {\n    await customRegistry.stop()\n  })\n\n  it(\"should init with style that extends shadcn\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"http://localhost:4445/r/style.json\"])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.style).toBe(\"new-york\")\n    expect(componentsJson.tailwind.baseColor).toBe(\"neutral\")\n\n    // Install utils from shadcn.\n    expect(await fs.pathExists(path.join(fixturePath, \"lib/utils.ts\"))).toBe(\n      true\n    )\n\n    // Then add foo.ts from the custom registry.\n    expect(\n      await fs.readFile(path.join(fixturePath, \"lib/foo.ts\"), \"utf-8\")\n    ).toBe(\"const foo = 'bar'\")\n\n    const globalCssContent = await fs.readFile(\n      path.join(fixturePath, \"app/globals.css\"),\n      \"utf-8\"\n    )\n    expect(globalCssContent).toContain(\"@layer base\")\n    expect(globalCssContent).toContain(\":root\")\n    expect(globalCssContent).toContain(\".dark\")\n    expect(globalCssContent).toContain(\"tw-animate-css\")\n    expect(\n      cssHasProperties(globalCssContent, [\n        {\n          selector: \"@theme inline\",\n          properties: {\n            \"--font-sans\": \"DM Sans, sans-serif\",\n            \"--color-custom-brand\": \"var(--custom-brand)\",\n            \"--foo-var\": \"var(--foo-var)\",\n          },\n        },\n        {\n          selector: \":root\",\n          properties: {\n            \"--background\": \"oklch(1 0 0)\",\n            \"--foreground\": \"oklch(0.145 0 0)\",\n            \"--primary\": \"#dc2626\",\n            \"--foo-var\": \"3rem\",\n          },\n        },\n        {\n          selector: \".dark\",\n          properties: {\n            \"--background\": \"oklch(0.145 0 0)\",\n            \"--foreground\": \"oklch(0.985 0 0)\",\n            \"--custom-brand\": \"#fef3c7\",\n            \"--foo-var\": \"1rem\",\n          },\n        },\n      ])\n    ).toBe(true)\n  })\n\n  it(\"should init with style that extends another style\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\n      \"init\",\n      \"http://localhost:4445/r/style-extended.json\",\n    ])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.style).toBe(\"new-york\")\n    expect(componentsJson.tailwind.baseColor).toBe(\"neutral\")\n\n    // Install utils from shadcn.\n    expect(await fs.pathExists(path.join(fixturePath, \"lib/utils.ts\"))).toBe(\n      true\n    )\n\n    // Then add foo.ts from the custom registry with overriden payload.\n    expect(\n      await fs.readFile(path.join(fixturePath, \"lib/foo.ts\"), \"utf-8\")\n    ).toBe(\"const foo = 'baz-qux'\")\n\n    const globalCssContent = await fs.readFile(\n      path.join(fixturePath, \"app/globals.css\"),\n      \"utf-8\"\n    )\n\n    expect(globalCssContent).toContain(\"@layer base\")\n    expect(globalCssContent).toContain(\":root\")\n    expect(globalCssContent).toContain(\".dark\")\n    expect(globalCssContent).toContain(\"tw-animate-css\")\n\n    expect(\n      cssHasProperties(globalCssContent, [\n        {\n          selector: \"@theme inline\",\n          properties: {\n            \"--font-sans\": \"Geist Sans, sans-serif\",\n            \"--font-mono\": \"Geist Mono, monospace\",\n            \"--color-custom-brand\": \"var(--custom-brand)\",\n            \"--foo-var\": \"var(--foo-var)\",\n          },\n        },\n        {\n          selector: \":root\",\n          properties: {\n            \"--background\": \"oklch(1 0 0)\",\n            \"--foreground\": \"oklch(0.145 0 0)\",\n            \"--primary\": \"#059669\",\n            \"--secondary\": \"#06b6d4\",\n            \"--foo-var\": \"3rem\",\n          },\n        },\n        {\n          selector: \".dark\",\n          properties: {\n            \"--background\": \"oklch(0.145 0 0)\",\n            \"--foreground\": \"oklch(0.985 0 0)\",\n            \"--custom-brand\": \"#fef3c7\",\n            \"--foo-var\": \"2rem\",\n          },\n        },\n      ])\n    ).toBe(true)\n  })\n\n  it(\"should init with custom style extended none\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\n      \"init\",\n      \"http://localhost:4445/r/style-extend-none.json\",\n    ])\n\n    // We still expect components.json to be created.\n    // With some defaults.\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.style).toBe(\"new-york\")\n    expect(componentsJson.tailwind.baseColor).toBe(\"neutral\")\n\n    // No utils should be installed.\n    expect(await fs.pathExists(path.join(fixturePath, \"lib/utils.ts\"))).toBe(\n      false\n    )\n\n    // But we should have the foo.ts from the custom style.\n    expect(\n      await fs.readFile(path.join(fixturePath, \"lib/foo.ts\"), \"utf-8\")\n    ).toBe(\"const foo = 'baz-qux'\")\n\n    expect(\n      await fs.readFile(path.join(fixturePath, \"app/globals.css\"), \"utf-8\")\n    ).toMatchInlineSnapshot(`\n      \"@import \"tailwindcss\";\n\n      @custom-variant dark (&:is(.dark *));\n\n      @theme inline {\n          --font-sans: Geist Sans, sans-serif;\n          --font-mono: Geist Mono, monospace;\n          --color-custom-brand: var(--custom-brand);\n          --color-secondary: var(--secondary);\n          --foo-var: var(--foo-var);\n          --color-primary: var(--primary);\n      }\n\n      :root {\n          --primary: #059669;\n          --foo-var: 3rem;\n          --secondary: #06b6d4;\n      }\n\n      .dark {\n          --custom-brand: #fef3c7;\n          --foo-var: 2rem;\n      }\n      \"\n    `)\n  })\n})\n\ndescribe(\"shadcn init - unsupported framework\", () => {\n  it(\"should init with --defaults on unsupported framework\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"remix-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    expect(await fs.pathExists(componentsJsonPath)).toBe(true)\n\n    const componentsJson = await fs.readJson(componentsJsonPath)\n    expect(componentsJson).toMatchObject({\n      style: \"base-nova\",\n      tailwind: {\n        baseColor: \"neutral\",\n        cssVariables: true,\n      },\n    })\n\n    expect(await fs.pathExists(path.join(fixturePath, \"lib/utils.ts\"))).toBe(\n      true\n    )\n  })\n\n  it(\"should init with --defaults and components on unsupported framework\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"remix-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\", \"button\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n\n    const cssPath = path.join(fixturePath, \"app/globals.css\")\n    const cssContent = await fs.readFile(cssPath, \"utf-8\")\n    expect(cssContent).toContain(\"@layer base\")\n    expect(cssContent).toContain(\"--background\")\n    expect(cssContent).toContain(\"--foreground\")\n  })\n})\n\ndescribe(\"shadcn init - template flag\", () => {\n  it(\"should reject invalid template\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const result = await npxShadcn(fixturePath, [\"init\", \"-t\", \"invalid\"])\n\n    expect(result.exitCode).toBe(1)\n    expect(result.stdout).toContain(\"Invalid template\")\n  })\n\n  it(\"should accept valid template with --defaults\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"-t\", \"next\", \"--defaults\"])\n\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    expect(await fs.pathExists(componentsJsonPath)).toBe(true)\n\n    const componentsJson = await fs.readJson(componentsJsonPath)\n    expect(componentsJson.style).toBe(\"base-nova\")\n    expect(componentsJson.tailwind.baseColor).toBe(\"neutral\")\n  })\n})\n\ndescribe(\"shadcn init - --name flag\", () => {\n  // Use os.tmpdir() to create projects outside the monorepo tree.\n  // This prevents pnpm from detecting the monorepo workspace root.\n  let testBaseDir: string\n\n  beforeAll(async () => {\n    testBaseDir = path.join(os.tmpdir(), `shadcn-name-test-${process.pid}`)\n    await fs.ensureDir(testBaseDir)\n  })\n\n  afterAll(async () => {\n    await fs.remove(testBaseDir)\n  })\n\n  it(\"should create a new project with the specified name\", async () => {\n    const projectName = \"my-named-app\"\n    const emptyDir = path.join(testBaseDir, \"empty-next\")\n    await fs.ensureDir(emptyDir)\n\n    await npxShadcn(emptyDir, [\"init\", \"--defaults\", \"--name\", projectName], {\n      timeout: 120000,\n    })\n\n    const projectPath = path.join(emptyDir, projectName)\n\n    // Verify project was created with the correct name.\n    expect(await fs.pathExists(projectPath)).toBe(true)\n    expect(await fs.pathExists(path.join(projectPath, \"package.json\"))).toBe(\n      true\n    )\n\n    // Verify components.json was created.\n    const componentsJsonPath = path.join(projectPath, \"components.json\")\n    expect(await fs.pathExists(componentsJsonPath)).toBe(true)\n\n    // Verify theme-provider is included from the template.\n    expect(\n      await fs.pathExists(\n        path.join(projectPath, \"components/theme-provider.tsx\")\n      )\n    ).toBe(true)\n  })\n\n  it(\"should create a new project with --name and -t vite\", async () => {\n    const projectName = \"my-vite-app\"\n    const emptyDir = path.join(testBaseDir, \"empty-vite\")\n    await fs.ensureDir(emptyDir)\n\n    await npxShadcn(\n      emptyDir,\n      [\"init\", \"--defaults\", \"--name\", projectName, \"-t\", \"vite\"],\n      { timeout: 120000 }\n    )\n\n    const projectPath = path.join(emptyDir, projectName)\n\n    // Verify project was created.\n    expect(await fs.pathExists(projectPath)).toBe(true)\n\n    // Verify it's a vite project with the correct name.\n    const packageJson = await fs.readJson(\n      path.join(projectPath, \"package.json\")\n    )\n    expect(packageJson.name).toBe(projectName)\n    expect(packageJson.dependencies).toHaveProperty(\"react\")\n  })\n})\n\ndescribe(\"shadcn init - next-monorepo\", () => {\n  // Use os.tmpdir() to create projects outside the monorepo tree.\n  // This prevents pnpm from detecting the monorepo workspace root.\n  let testBaseDir: string\n\n  beforeAll(async () => {\n    testBaseDir = path.join(os.tmpdir(), `shadcn-monorepo-test-${process.pid}`)\n    await fs.ensureDir(testBaseDir)\n  })\n\n  afterAll(async () => {\n    await fs.remove(testBaseDir)\n  })\n\n  it(\"should create a monorepo with preset\", async () => {\n    const projectName = `test-monorepo-preset-${process.pid}`\n\n    const result = await npxShadcn(\n      testBaseDir,\n      [\n        \"init\",\n        \"--name\",\n        projectName,\n        \"-t\",\n        \"next\",\n        \"--monorepo\",\n        \"--preset\",\n        \"nova\",\n        \"--base\",\n        \"radix\",\n      ],\n      { timeout: 300000, debug: true }\n    )\n    expect(result.exitCode).toBe(0)\n\n    const projectPath = path.join(testBaseDir, projectName)\n\n    // Verify project structure exists.\n    expect(await fs.pathExists(projectPath)).toBe(true)\n    expect(\n      await fs.pathExists(path.join(projectPath, \"packages/ui/components.json\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(projectPath, \"apps/web/components.json\"))\n    ).toBe(true)\n\n    // Verify packages/ui/components.json is updated with preset config.\n    const uiConfig = await fs.readJson(\n      path.join(projectPath, \"packages/ui/components.json\")\n    )\n    expect(uiConfig.style).toBe(\"radix-nova\")\n    expect(uiConfig.iconLibrary).toBe(\"lucide\")\n    expect(uiConfig.tailwind.baseColor).toBe(\"neutral\")\n\n    // Verify apps/web/components.json is updated with preset config.\n    const webConfig = await fs.readJson(\n      path.join(projectPath, \"apps/web/components.json\")\n    )\n    expect(webConfig.style).toBe(\"radix-nova\")\n    // Verify workspace aliases are preserved.\n    expect(webConfig.aliases.components).toBe(\"@/components\")\n    expect(webConfig.aliases.utils).toBe(\"@workspace/ui/lib/utils\")\n    expect(webConfig.aliases.ui).toBe(\"@workspace/ui/components\")\n\n    // Verify CSS was applied to packages/ui.\n    const cssPath = path.join(projectPath, \"packages/ui/src/styles/globals.css\")\n    expect(await fs.pathExists(cssPath)).toBe(true)\n    const cssContent = await fs.readFile(cssPath, \"utf-8\")\n    expect(cssContent).toContain(\"@layer base\")\n    expect(cssContent).toContain(\":root\")\n    expect(cssContent).toContain(\".dark\")\n    expect(cssContent).toContain(\"--background\")\n    expect(cssContent).toContain(\"--foreground\")\n    expect(cssContent).toContain(\"--primary\")\n  }, 300000)\n\n  it(\"should create a monorepo with custom preset url\", async () => {\n    const projectName = `test-monorepo-url-${process.pid}`\n\n    // Build a custom init URL with specific options.\n    const registryUrl = process.env.REGISTRY_URL || \"http://localhost:4000/r\"\n    const baseUrl = registryUrl.replace(/\\/r\\/?$/, \"\")\n    const initUrl = `${baseUrl}/init?base=radix&style=nova&baseColor=zinc&theme=zinc&iconLibrary=lucide&font=inter&rtl=false&menuAccent=subtle&menuColor=default&radius=default&template=next`\n\n    const result = await npxShadcn(\n      testBaseDir,\n      [\n        \"init\",\n        \"--name\",\n        projectName,\n        \"-t\",\n        \"next\",\n        \"--monorepo\",\n        \"--preset\",\n        initUrl,\n      ],\n      { timeout: 300000 }\n    )\n    expect(result.exitCode).toBe(0)\n\n    const projectPath = path.join(testBaseDir, projectName)\n    expect(await fs.pathExists(projectPath)).toBe(true)\n\n    // Verify config reflects the custom URL params.\n    const uiConfig = await fs.readJson(\n      path.join(projectPath, \"packages/ui/components.json\")\n    )\n    expect(uiConfig.style).toBe(\"radix-nova\")\n    expect(uiConfig.iconLibrary).toBe(\"lucide\")\n    expect(uiConfig.tailwind.baseColor).toBe(\"neutral\")\n\n    const webConfig = await fs.readJson(\n      path.join(projectPath, \"apps/web/components.json\")\n    )\n    expect(webConfig.style).toBe(\"radix-nova\")\n    expect(webConfig.tailwind.baseColor).toBe(\"neutral\")\n\n    // Verify CSS has zinc color theme applied.\n    const cssPath = path.join(projectPath, \"packages/ui/src/styles/globals.css\")\n    const cssContent = await fs.readFile(cssPath, \"utf-8\")\n    expect(cssContent).toContain(\":root\")\n    expect(cssContent).toContain(\".dark\")\n    expect(cssContent).toContain(\"--background\")\n    expect(cssContent).toContain(\"--foreground\")\n    expect(\n      cssHasProperties(cssContent, [\n        {\n          selector: \":root\",\n          properties: {\n            \"--background\": \"oklch(1 0 0)\",\n          },\n        },\n      ])\n    ).toBe(true)\n  }, 300000)\n})\n\ndescribe(\"shadcn init - rtl flags\", () => {\n  it(\"should set rtl to true with --rtl\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\", \"--rtl\"])\n\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    const componentsJson = await fs.readJson(componentsJsonPath)\n    expect(componentsJson.rtl).toBe(true)\n  })\n\n  it(\"should set rtl to false with --no-rtl\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\", \"--no-rtl\"])\n\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    const componentsJson = await fs.readJson(componentsJsonPath)\n    expect(componentsJson.rtl).toBe(false)\n  })\n\n  it(\"should default rtl to false when no flag is passed\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    const componentsJson = await fs.readJson(componentsJsonPath)\n    expect(componentsJson.rtl).toBe(false)\n  })\n})\n\ndescribe(\"shadcn init - deprecated --src-dir\", () => {\n  it(\"should reject --src-dir as unknown option\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const result = await npxShadcn(fixturePath, [\n      \"init\",\n      \"--defaults\",\n      \"--src-dir\",\n    ])\n\n    expect(result.exitCode).toBe(1)\n  })\n})\n\ndescribe(\"shadcn init - existing components.json\", () => {\n  // TODO: Revisit --force behavior. Currently it only skips backup merge,\n  // but doesn't reset config values like style. Need to decide intended behavior.\n  it.skip(\"should override existing components.json when using --force\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    // Run init with default configuration.\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    // Override style in components.json.\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    const config = await fs.readJson(componentsJsonPath)\n    config.style = \"custom-style\"\n    await fs.writeJson(componentsJsonPath, config)\n\n    // Reinit with --force.\n    await npxShadcn(fixturePath, [\"init\", \"--force\", \"--defaults\"])\n\n    const newConfig = await fs.readJson(componentsJsonPath)\n    expect(newConfig.style).toBe(\"new-york\")\n    expect(newConfig.tailwind.baseColor).toBe(\"neutral\")\n    expect(await fs.pathExists(componentsJsonPath + \".bak\")).toBe(false)\n  })\n\n  it(\"should restore backup components.json on error\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    const existingConfig = {\n      $schema: \"https://ui.shadcn.com/schema.json\",\n      style: \"default\",\n      tailwind: {\n        css: \"app/globals.css\",\n        baseColor: \"zinc\",\n        cssVariables: false,\n      },\n      rsc: true,\n      tsx: true,\n      aliases: {\n        components: \"@/components\",\n        utils: \"@/lib/utils\",\n      },\n    }\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    await fs.writeJson(componentsJsonPath, existingConfig)\n\n    // Run init with an invalid component - this should fail and restore.\n    await npxShadcn(fixturePath, [\n      \"init\",\n      \"invalid-component-that-does-not-exist\",\n    ])\n\n    expect(await fs.pathExists(componentsJsonPath)).toBe(true)\n    const newConfig = await fs.readJson(componentsJsonPath)\n    expect(newConfig).toMatchObject(existingConfig)\n    expect(await fs.pathExists(componentsJsonPath + \".bak\")).toBe(false)\n  })\n\n  it(\"should preserve registries in components.json when using --force\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    // Run init with default configuration.\n    await npxShadcn(fixturePath, [\"init\", \"--defaults\"])\n\n    // Inject a custom registries object into components.json.\n    const componentsJsonPath = path.join(fixturePath, \"components.json\")\n    const config = await fs.readJson(componentsJsonPath)\n    config.registries = {\n      \"my-registry\": { url: \"https://example.com/r\" },\n    }\n    await fs.writeJson(componentsJsonPath, config)\n\n    // Reinit with --force.\n    await npxShadcn(fixturePath, [\"init\", \"--force\", \"--defaults\"])\n\n    // components.json should exist with no .bak leftover.\n    expect(await fs.pathExists(componentsJsonPath)).toBe(true)\n    expect(await fs.pathExists(componentsJsonPath + \".bak\")).toBe(false)\n\n    // The custom registry should be preserved.\n    const newConfig = await fs.readJson(componentsJsonPath)\n    expect(newConfig.registries).toMatchObject({\n      \"my-registry\": { url: \"https://example.com/r\" },\n    })\n\n    // Other config values should be from the fresh init.\n    expect(newConfig.style).toBe(\"base-nova\")\n    expect(newConfig.tailwind.baseColor).toBe(\"neutral\")\n  })\n})\n"
  },
  {
    "path": "packages/tests/src/tests/registries.test.ts",
    "content": "/* eslint-disable turbo/no-undeclared-env-vars */\nimport path from \"path\"\nimport fs from \"fs-extra\"\nimport { afterAll, beforeAll, describe, expect, it } from \"vitest\"\n\nimport {\n  createFixtureTestDirectory,\n  cssHasProperties,\n  npxShadcn,\n} from \"../utils/helpers\"\nimport { configureRegistries, createRegistryServer } from \"../utils/registry\"\n\nconst registryShadcn = await createRegistryServer(\n  [\n    {\n      name: \"utils\",\n      type: \"registry:component\",\n      files: [\n        {\n          path: \"registry/new-york-v4/lib/utils.ts\",\n          content:\n            'import { clsx, type ClassValue } from \"clsx\"\\nimport { twMerge } from \"tailwind-merge\"\\n\\nexport function cn(...inputs: ClassValue[]) {\\n  return twMerge(clsx(inputs))\\n}\\n',\n          type: \"registry:lib\",\n        },\n      ],\n    },\n    {\n      name: \"alert-dialog\",\n      type: \"registry:ui\",\n      files: [\n        {\n          path: \"components/ui/alert-dialog.tsx\",\n          content:\n            \"export function AlertDialog() {\\n  return <div>AlertDialog Component from Registry Shadcn</div>\\n}\",\n          type: \"registry:ui\",\n        },\n        {\n          path: \"components/ui/button.tsx\",\n          content:\n            \"export function Button() {\\n  return <div>Button Component from Registry Shadcn</div>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n    {\n      name: \"button\",\n      type: \"registry:ui\",\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          content:\n            \"export function Button() {\\n  return <div>Button Component from Registry Shadcn</div>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n    {\n      name: \"example-button\",\n      type: \"registry:component\",\n      registryDependencies: [\"@shadcn/button\"],\n      files: [\n        {\n          path: \"components/example-button.tsx\",\n          content:\n            \"export function ExampleButton() {\\n  return <div>Example Button Component from Registry Shadcn</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n    {\n      name: \"no-framework-item\",\n      type: \"registry:item\",\n      files: [\n        {\n          path: \"path/to/foo.txt\",\n          content: \"Foo Bar\",\n          type: \"registry:item\",\n          target: \"path/to/foo.txt\",\n        },\n      ],\n    },\n  ],\n  {\n    port: 4040,\n    path: \"/r\",\n  }\n)\n\nconst registryOne = await createRegistryServer(\n  [\n    {\n      name: \"style\",\n      type: \"registry:style\",\n      cssVars: {\n        theme: {\n          \"font-sans\": \"Inter, sans-serif\",\n        },\n        light: {\n          brand: \"oklch(20 14.3% 4.1%)\",\n          \"brand-foreground\": \"oklch(24 1.3% 10%)\",\n        },\n        dark: {\n          brand: \"oklch(24 1.3% 10%)\",\n        },\n      },\n      css: {\n        button: {\n          cursor: \"pointer\",\n        },\n      },\n    },\n    {\n      name: \"foo\",\n      type: \"registry:component\",\n      files: [\n        {\n          path: \"components/foo.tsx\",\n          content:\n            \"export function Foo() {\\n  return <div>Foo Component from Registry 1</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n    {\n      name: \"bar\",\n      type: \"registry:component\",\n      files: [\n        {\n          path: \"components/bar.tsx\",\n          content:\n            \"export function Bar() {\\n  return <div>Bar Component from Registry 1</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n    {\n      name: \"baz\",\n      type: \"registry:component\",\n      registryDependencies: [\"@one/bar\"],\n      files: [\n        {\n          path: \"components/baz.tsx\",\n          content:\n            \"export function Baz() {\\n  return <div>Baz Component from Registry 2</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n    {\n      name: \"qux\",\n      type: \"registry:component\",\n      registryDependencies: [\"@one/baz\"],\n      files: [\n        {\n          path: \"components/qux.tsx\",\n          content:\n            \"export function Qux() {\\n  return <div>Qux Component from Registry 2</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n    {\n      name: \"quux\",\n      type: \"registry:page\",\n      registryDependencies: [\"@two/two\"],\n      files: [\n        {\n          path: \"path/to/app/quux/page.tsx\",\n          content:\n            \"export function Quux() {\\n  return <div>Quux Component from Registry 2</div>\\n}\",\n          type: \"registry:page\",\n          target: \"app/quux/page.tsx\",\n        },\n      ],\n    },\n    {\n      name: \"foo-theme\",\n      type: \"registry:theme\",\n      cssVars: {\n        light: {\n          background: \"white\",\n          foreground: \"black\",\n        },\n        dark: {\n          background: \"black\",\n          foreground: \"white\",\n        },\n      },\n    },\n  ],\n  {\n    port: 4444,\n    path: \"/r\",\n  }\n)\n\nconst registryTwo = await createRegistryServer(\n  [\n    {\n      name: \"style\",\n      type: \"registry:style\",\n      cssVars: {\n        theme: {\n          \"font-serif\": \"Garamond, serif\",\n        },\n        light: {\n          neutral: \"oklch(10 14.3% 4.1%)\",\n          \"neutral-foreground\": \"oklch(24 3% 10%)\",\n        },\n        dark: {\n          neutral: \"oklch(24 1.3% 10%)\",\n        },\n      },\n      css: {\n        button: {\n          cursor: \"pointer\",\n        },\n      },\n    },\n    {\n      name: \"one\",\n      type: \"registry:file\",\n      files: [\n        {\n          path: \"path/to/one.txt\",\n          content: \"one\",\n          type: \"registry:file\",\n          target: \"example/one.txt\",\n        },\n      ],\n    },\n    {\n      name: \"two\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\", \"@one/qux\"],\n      files: [\n        {\n          path: \"components/ui/two.tsx\",\n          content:\n            \"export function Two() {\\n  return <div>Two Component from Registry 2</div>\\n}\",\n          type: \"registry:ui\",\n        },\n        {\n          path: \"components/example.tsx\",\n          content:\n            \"export function Example() {\\n  return <div>Example Component from Registry 2</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n    {\n      name: \"theme\",\n      type: \"registry:theme\",\n      cssVars: {\n        light: {\n          background: \"red\",\n          foreground: \"blue\",\n          primary: \"green\",\n        },\n        dark: {\n          foreground: \"red\",\n        },\n      },\n    },\n  ],\n  {\n    port: 5555,\n    path: \"/registry\",\n  }\n)\n\nlet originalRegistryUrl: string | undefined\n\nbeforeAll(async () => {\n  // This sets the shadcn registry to our mock registry.\n  originalRegistryUrl = process.env.REGISTRY_URL\n  process.env.REGISTRY_URL = \"http://localhost:4040/r\"\n  await registryShadcn.start()\n  await registryOne.start()\n  await registryTwo.start()\n})\n\nafterAll(async () => {\n  // Restore the original REGISTRY_URL to avoid leaking into other test files.\n  if (originalRegistryUrl === undefined) {\n    delete process.env.REGISTRY_URL\n  } else {\n    process.env.REGISTRY_URL = originalRegistryUrl\n  }\n  await registryShadcn.stop()\n  await registryOne.stop()\n  await registryTwo.stop()\n})\n\ndescribe(\"registries\", () => {\n  it(\"should add from registry using url\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await npxShadcn(fixturePath, [\"add\", \"http://localhost:4444/r/foo\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add multiple items from registry using urls\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"http://localhost:4444/r/foo\",\n      \"http://localhost:4444/r/bar\",\n    ])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/bar.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add multiple items from multiple registries using urls\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"http://localhost:4444/r/foo\",\n      \"http://localhost:5555/registry/one\",\n    ])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n    expect(await fs.pathExists(path.join(fixturePath, \"example/one.txt\"))).toBe(\n      true\n    )\n  })\n\n  it(\"should add item using name and from registry url\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"alert-dialog\",\n      \"http://localhost:4444/r/foo\",\n    ])\n\n    expect(\n      await fs.pathExists(\n        path.join(fixturePath, \"components/ui/alert-dialog.tsx\")\n      )\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add item from name, local path and registry url\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"alert-dialog\",\n      \"../../fixtures/registry/example-item.json\",\n      \"http://localhost:4444/r/foo\",\n    ])\n\n    expect(await fs.pathExists(path.join(fixturePath, \"path/to/foo.txt\"))).toBe(\n      true\n    )\n    expect(\n      await fs.pathExists(\n        path.join(fixturePath, \"components/ui/alert-dialog.tsx\")\n      )\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should show only built-in registries when not configured\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"info\"])\n    // Should show registries since @shadcn is built-in\n    expect(output.stdout).toContain(\"registries:\")\n    expect(output.stdout).toContain(\"@shadcn\")\n    // Should not show user-defined registries\n    expect(output.stdout).not.toContain(\"@one\")\n    expect(output.stdout).not.toContain(\"@two\")\n  })\n\n  it(\"should show an error when adding from a non-existent registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\n      \"add\",\n      \"@non-existent/component\",\n    ])\n    expect(output.stdout).toContain('Unknown registry \"@non-existent\"')\n    expect(output.stdout).toContain(\n      '\"registries\": {\\n' +\n        '    \"@non-existent\": \"[URL_TO_REGISTRY]\"\\n' +\n        \"  }\\n\"\n    )\n  })\n\n  it(\"should show registries when configured\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"info\"])\n    // Should contain both built-in and user registries\n    expect(output.stdout).toContain(\"registries:\")\n    expect(output.stdout).toContain(\"@shadcn\")\n    expect(output.stdout).toContain(\"@one\")\n    expect(output.stdout).toContain(\"http://localhost:4444/r/{name}\")\n  })\n\n  it(\"should show multiple registries when configured\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n      \"@two\": {\n        url: \"http://localhost:5555/registry/{name}\",\n        headers: {\n          Authorization: \"Bearer ${BEARER_TOKEN}\",\n        },\n      },\n    })\n\n    const output = await npxShadcn(fixturePath, [\"info\"])\n    // Should contain built-in and both user registries\n    expect(output.stdout).toContain(\"registries:\")\n    expect(output.stdout).toContain(\"@shadcn\")\n    expect(output.stdout).toContain(\"@one\")\n    expect(output.stdout).toContain(\"@two\")\n    expect(output.stdout).toContain(\"http://localhost:4444/r/{name}\")\n    expect(output.stdout).toContain(\"http://localhost:5555/registry/{name}\")\n  })\n\n  it(\"should show an error when adding from a non-existent registry with configured registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"add\", \"@acme/component\"])\n    expect(output.stdout).toContain('Unknown registry \"@acme\"')\n    expect(output.stdout).toContain(\n      '\"registries\": {\\n' + '    \"@acme\": \"[URL_TO_REGISTRY]\"\\n' + \"  }\\n\"\n    )\n  })\n\n  it(\"should add item using namespaced registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"add\", \"@one/foo\"])\n\n    if (!(await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\")))) {\n      console.log(\"Test failed. Command output:\", output.stdout)\n      console.log(\"Command stderr:\", output.stderr)\n    }\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add multiple items using namespaced registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n    })\n\n    await npxShadcn(fixturePath, [\"add\", \"@one/foo\", \"@one/bar\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/bar.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add registry dependencies when adding from namespaced registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n    })\n\n    await npxShadcn(fixturePath, [\"add\", \"@one/baz\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/baz.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/bar.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add nested registry dependencies when adding from namespaced registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n    })\n\n    await npxShadcn(fixturePath, [\"add\", \"@one/qux\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/qux.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/baz.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/bar.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should show an error when adding url with namespaced dependency\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\n      \"add\",\n      \"http://localhost:4444/r/baz\",\n    ])\n\n    expect(output.stdout).toContain('Unknown registry \"@one\"')\n  })\n\n  it(\"should show an error when adding url with unconfigured registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\n      \"add\",\n      \"http://localhost:5555/registry/two\",\n    ])\n\n    expect(output.stdout).toContain('Unknown registry \"@one\"')\n  })\n\n  it(\"should show an error when adding namespaced with unconfigured registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@two\": \"http://localhost:5555/registry/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"add\", \"@two/two\"])\n    expect(output.stdout).toContain('Unknown registry \"@one\"')\n  })\n\n  it(\"should show an error when adding multiple namespaced items with unconfigured registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@two\": \"http://localhost:5555/registry/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\n      \"add\",\n      \"@two/one\",\n      \"@foobar/foo\",\n    ])\n\n    expect(output.stdout).toContain('Unknown registry \"@foobar\"')\n  })\n\n  it(\"should show an error when authentication is not configured\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": \"http://localhost:5555/registry/bearer/{name}\",\n    })\n    const output = await npxShadcn(fixturePath, [\"add\", \"@two/one\"])\n    expect(output.stdout).toContain(\"Unauthorized\")\n  })\n\n  it(\"should add item when authentication is configured\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:5555/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n        },\n      },\n    })\n\n    await npxShadcn(fixturePath, [\"add\", \"@two/one\"])\n\n    expect(await fs.pathExists(path.join(fixturePath, \"example/one.txt\"))).toBe(\n      true\n    )\n  })\n\n  it(\"should show an error for nested unauthorized dependencies\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n      \"@two\": \"http://localhost:5555/registry/bearer/{name}\",\n    })\n    const output = await npxShadcn(fixturePath, [\"add\", \"@one/quux\"])\n    expect(output.stdout).toContain(\"Unauthorized\")\n  })\n\n  it(\"should add item when authentication is configured and nested dependencies are authorized\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n      \"@two\": {\n        url: \"http://localhost:5555/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n        },\n      },\n    })\n    await npxShadcn(fixturePath, [\"add\", \"@one/quux\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"app/quux/page.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/two.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/example.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/qux.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/bar.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/baz.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should error when adding item with api key authentication and no api key is provided\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": \"http://localhost:5555/registry/api-key/{name}\",\n    })\n    const output = await npxShadcn(fixturePath, [\"add\", \"@two/one\"])\n    expect(output.stdout).toContain(\"Unauthorized\")\n  })\n\n  it(\"should add item with api key authentication\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:5555/registry/api-key/{name}\",\n        headers: {\n          \"x-api-key\": \"EXAMPLE_API_KEY\",\n        },\n      },\n    })\n    await npxShadcn(fixturePath, [\"add\", \"@two/one\"])\n    expect(await fs.pathExists(path.join(fixturePath, \"example/one.txt\"))).toBe(\n      true\n    )\n  })\n\n  it(\"should error when adding item with client secret authentication and no client secret is provided\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:5555/registry/client-secret/{name}\",\n      },\n    })\n    const output = await npxShadcn(fixturePath, [\"add\", \"@two/one\"])\n    expect(output.stdout).toContain(\"Unauthorized\")\n  })\n\n  it(\"should add item with client secret authentication\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:5555/registry/client-secret/{name}\",\n        headers: {\n          \"x-client-secret\": \"EXAMPLE_CLIENT_SECRET\",\n          \"x-client-id\": \"EXAMPLE_CLIENT_ID\",\n        },\n      },\n    })\n    await npxShadcn(fixturePath, [\"add\", \"@two/one\"])\n    expect(await fs.pathExists(path.join(fixturePath, \"example/one.txt\"))).toBe(\n      true\n    )\n  })\n\n  it(\"should expand env vars in registries config\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"${NEXT_PUBLIC_REGISTRY_URL}/r/{name}\",\n    })\n\n    process.env.NEXT_PUBLIC_REGISTRY_URL = \"http://localhost:4444/r\"\n    await npxShadcn(fixturePath, [\"add\", \"@one/foo\"])\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should expand env vars in registries config with multiple registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"${NEXT_PUBLIC_REGISTRY_URL}/r/{name}\",\n      \"@two\": {\n        url: \"http://localhost:5555/registry/params/{name}?token=${REGISTRY_TOKEN}\",\n        headers: {\n          \"x-client-secret\": \"EXAMPLE_CLIENT_SECRET\",\n          \"x-client-id\": \"EXAMPLE_CLIENT_ID\",\n        },\n      },\n      \"@three\": {\n        url: \"http://localhost:4444/r/api-key/{name}\",\n        headers: {\n          \"x-api-key\": \"${REGISTRY_API_KEY}\",\n        },\n      },\n    })\n\n    process.env.NEXT_PUBLIC_REGISTRY_URL = \"http://localhost:4444/r\"\n    process.env.REGISTRY_TOKEN = \"EXAMPLE_REGISTRY_TOKEN\"\n    process.env.REGISTRY_API_KEY = \"EXAMPLE_API_KEY\"\n    await npxShadcn(fixturePath, [\"add\", \"@one/foo\", \"@three/baz\", \"@two/two\"])\n\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/baz.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/bar.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/two.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/example.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/qux.tsx\"))\n    ).toBe(true)\n  })\n\n  describe(\"fetchFromRegistry improvements\", () => {\n    it(\"should handle registry resolution transparently\", async () => {\n      const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n      await configureRegistries(fixturePath, {\n        \"@one\": \"http://localhost:4444/r/{name}\",\n        \"@two\": {\n          url: \"http://localhost:5555/registry/{name}\",\n          headers: {\n            Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n          },\n        },\n      })\n\n      // Test that components can be added without pre-resolution\n      await npxShadcn(fixturePath, [\"add\", \"@one/foo\", \"@two/two\"])\n\n      // Verify all files were created including dependencies\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/ui/two.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/example.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/qux.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/baz.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/bar.tsx\"))\n      ).toBe(true)\n    })\n\n    it(\"should maintain type safety with mixed registries\", async () => {\n      const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n      await configureRegistries(fixturePath, {\n        \"@one\": \"http://localhost:4444/r/{name}\",\n      })\n\n      // Mix of namespaced and non-namespaced components\n      await npxShadcn(fixturePath, [\"add\", \"@one/foo\", \"button\"])\n\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/foo.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n      ).toBe(true)\n    })\n\n    it(\"should handle circular dependencies gracefully\", async () => {\n      const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n      // Create a mock server with circular dependencies\n      const circularServer = await createRegistryServer(\n        [\n          {\n            name: \"comp-a\",\n            type: \"registry:component\",\n            registryDependencies: [\"@circular/comp-b\"],\n            files: [\n              {\n                path: \"components/comp-a.tsx\",\n                content:\n                  \"export function CompA() { return <div>Component A</div> }\",\n                type: \"registry:component\",\n              },\n            ],\n          },\n          {\n            name: \"comp-b\",\n            type: \"registry:component\",\n            registryDependencies: [\"@circular/comp-a\"],\n            files: [\n              {\n                path: \"components/comp-b.tsx\",\n                content:\n                  \"export function CompB() { return <div>Component B</div> }\",\n                type: \"registry:component\",\n              },\n            ],\n          },\n        ],\n        {\n          port: 9999,\n          path: \"/circular\",\n        }\n      )\n\n      await circularServer.start()\n\n      await configureRegistries(fixturePath, {\n        \"@circular\": \"http://localhost:9999/circular/{name}\",\n      })\n\n      // Should handle circular dependency without infinite loop\n      await npxShadcn(fixturePath, [\"add\", \"@circular/comp-a\"])\n\n      // Both components should be added once\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/comp-a.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/comp-b.tsx\"))\n      ).toBe(true)\n\n      await circularServer.stop()\n    })\n\n    it(\"should preserve header context across dependency resolution\", async () => {\n      const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n      // Create a server that validates headers for all requests\n      const authServer = await createRegistryServer(\n        [\n          {\n            name: \"parent\",\n            type: \"registry:component\",\n            registryDependencies: [\"@auth/child1\", \"@auth/child2\"],\n            files: [\n              {\n                path: \"components/parent.tsx\",\n                content:\n                  \"export function Parent() { return <div>Parent</div> }\",\n                type: \"registry:component\",\n              },\n            ],\n          },\n          {\n            name: \"child1\",\n            type: \"registry:component\",\n            files: [\n              {\n                path: \"components/child1.tsx\",\n                content:\n                  \"export function Child1() { return <div>Child 1</div> }\",\n                type: \"registry:component\",\n              },\n            ],\n          },\n          {\n            name: \"child2\",\n            type: \"registry:component\",\n            files: [\n              {\n                path: \"components/child2.tsx\",\n                content:\n                  \"export function Child2() { return <div>Child 2</div> }\",\n                type: \"registry:component\",\n              },\n            ],\n          },\n        ],\n        {\n          port: 10000,\n          path: \"/auth-test\",\n        }\n      )\n\n      await authServer.start()\n\n      await configureRegistries(fixturePath, {\n        \"@auth\": {\n          url: \"http://localhost:10000/auth-test/bearer/{name}\",\n          headers: {\n            Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n          },\n        },\n      })\n\n      // Add parent which should trigger requests for dependencies\n      await npxShadcn(fixturePath, [\"add\", \"@auth/parent\"])\n\n      // All components should be added\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/parent.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/child1.tsx\"))\n      ).toBe(true)\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/child2.tsx\"))\n      ).toBe(true)\n\n      await authServer.stop()\n    })\n  })\n\n  describe(\"built-in registries\", () => {\n    it(\"should error when trying to override @shadcn in config\", async () => {\n      const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n      // Read the existing components.json\n      const configPath = path.join(fixturePath, \"components.json\")\n      const config = await fs.readJson(configPath)\n\n      // Add @shadcn as a registry\n      config.registries = {\n        \"@shadcn\": \"https://my-custom-registry.com/{name}\",\n      }\n\n      // Write the updated config\n      await fs.writeJson(configPath, config, { spaces: 2 })\n\n      // Try to run a command that loads the config\n      const output = await npxShadcn(fixturePath, [\"info\"])\n\n      // Check either stdout or stderr for the error message\n      const combinedOutput = output.stdout + output.stderr\n\n      // The error should be about built-in registry or invalid configuration\n      expect(combinedOutput.toLowerCase()).toMatch(\n        /built-in registry|invalid configuration/\n      )\n    })\n\n    it(\"should work with @shadcn namespace without configuration\", async () => {\n      const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n      // Don't configure any registries - @shadcn should be built-in\n      const output = await npxShadcn(fixturePath, [\"add\", \"@shadcn/button\"])\n\n      if (\n        !(await fs.pathExists(\n          path.join(fixturePath, \"components/ui/button.tsx\")\n        ))\n      ) {\n        console.log(\"Test failed. Command output:\", output.stdout)\n        console.log(\"Command stderr:\", output.stderr)\n      }\n\n      // Should add button component just like regular \"button\" command\n      expect(\n        await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n      ).toBe(true)\n    })\n\n    it(\"should allow similar but different registry names\", async () => {\n      const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n      await configureRegistries(fixturePath, {\n        \"@shadcn-ui\": \"http://localhost:4444/r/{name}\",\n        \"@myshadcn\": \"http://localhost:4444/r/{name}\",\n        \"@shadcntest\": \"http://localhost:4444/r/{name}\",\n      })\n\n      // Try to run a command that loads the config\n      const output = await npxShadcn(fixturePath, [\"info\"])\n\n      // Should not error - check that registries are shown\n      expect(output.stdout).toContain(\"@shadcn-ui\")\n      expect(output.stdout).toContain(\"@myshadcn\")\n      expect(output.stdout).toContain(\"@shadcntest\")\n      expect(output.stdout).not.toContain(\"built-in registry\")\n    })\n  })\n\n  it(\"should add registry:item with no framework\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"no-framework\")\n    await npxShadcn(fixturePath, [\"add\", \"no-framework-item\"])\n\n    expect(await fs.pathExists(path.join(fixturePath, \"path/to/foo.txt\"))).toBe(\n      true\n    )\n    expect(\n      await fs.readFile(path.join(fixturePath, \"path/to/foo.txt\"), \"utf-8\")\n    ).toBe(\"Foo Bar\")\n  })\n\n  it(\"should add registry:theme\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\n      \"add\",\n      \"@one/foo-theme\",\n      \"--yes\",\n    ])\n\n    const globalCssContent = await fs.readFile(\n      path.join(fixturePath, \"app/globals.css\"),\n      \"utf-8\"\n    )\n\n    expect(\n      cssHasProperties(globalCssContent, [\n        {\n          selector: \":root\",\n          properties: {\n            \"--background\": \"white\",\n            \"--foreground\": \"black\",\n          },\n        },\n        {\n          selector: \".dark\",\n          properties: {\n            \"--background\": \"black\",\n            \"--foreground\": \"white\",\n          },\n        },\n      ])\n    ).toBe(true)\n  })\n\n  it(\"should merge registry:theme with existing theme\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n      \"@two\": {\n        url: \"http://localhost:5555/registry/{name}\",\n        headers: {\n          Authorization: \"Bearer ${BEARER_TOKEN}\",\n        },\n      },\n    })\n\n    process.env.BEARER_TOKEN = \"1234567890\"\n\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"@one/foo-theme\",\n      \"@two/theme\",\n      \"--yes\",\n    ])\n    expect(\n      cssHasProperties(\n        await fs.readFile(path.join(fixturePath, \"app/globals.css\"), \"utf-8\"),\n        [\n          {\n            selector: \":root\",\n            properties: {\n              \"--background\": \"red\",\n              \"--foreground\": \"blue\",\n              \"--primary\": \"green\",\n            },\n          },\n          {\n            selector: \".dark\",\n            properties: {\n              \"--background\": \"black\",\n              \"--foreground\": \"red\",\n            },\n          },\n        ]\n      )\n    ).toBe(true)\n\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"@two/theme\",\n      \"@one/foo-theme\",\n      \"--yes\",\n    ])\n    expect(\n      cssHasProperties(\n        await fs.readFile(path.join(fixturePath, \"app/globals.css\"), \"utf-8\"),\n        [\n          {\n            selector: \":root\",\n            properties: {\n              \"--background\": \"white\",\n              \"--foreground\": \"black\",\n              \"--primary\": \"green\",\n            },\n          },\n          {\n            selector: \".dark\",\n            properties: {\n              \"--background\": \"black\",\n              \"--foreground\": \"white\",\n            },\n          },\n        ]\n      )\n    ).toBe(true)\n  })\n\n  it(\"should add named item from shadcn registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await npxShadcn(fixturePath, [\"add\", \"button\"])\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n  })\n\n  it(\"should add namespaced items from the shadcn registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await npxShadcn(fixturePath, [\n      \"add\",\n      \"@shadcn/example-button\",\n      \"@shadcn/no-framework-item\",\n    ])\n    expect(\n      await fs.pathExists(\n        path.join(fixturePath, \"components/example-button.tsx\")\n      )\n    ).toBe(true)\n    expect(\n      await fs.pathExists(path.join(fixturePath, \"components/ui/button.tsx\"))\n    ).toBe(true)\n    expect(await fs.pathExists(path.join(fixturePath, \"path/to/foo.txt\"))).toBe(\n      true\n    )\n    expect(\n      await fs.readFile(path.join(fixturePath, \"path/to/foo.txt\"), \"utf-8\")\n    ).toBe(\"Foo Bar\")\n  })\n\n  it(\"should add namespaced items from shadcn registry with no-framework\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"no-framework\")\n    await npxShadcn(fixturePath, [\"add\", \"@shadcn/no-framework-item\"])\n    expect(await fs.pathExists(path.join(fixturePath, \"path/to/foo.txt\"))).toBe(\n      true\n    )\n    expect(\n      await fs.readFile(path.join(fixturePath, \"path/to/foo.txt\"), \"utf-8\")\n    ).toBe(\"Foo Bar\")\n  })\n})\n\ndescribe(\"registries:init\", () => {\n  beforeEach(async () => {\n    process.env.REGISTRY_URL = \"http://localhost:4040/r\"\n  })\n\n  it(\"should error when init with unconfigured registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const output = await npxShadcn(fixturePath, [\"init\", \"@two/style\"])\n    expect(output.stdout).toContain('Unknown registry \"@two\"')\n  })\n\n  it(\"should init from registry:style\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:4444/r/{name}\",\n    })\n\n    await npxShadcn(fixturePath, [\n      \"init\",\n      \"--force\",\n      \"--no-reinstall\",\n      \"@one/style\",\n    ])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.style).toBe(\"new-york\")\n    expect(componentsJson.tailwind.baseColor).toBe(\"neutral\")\n    expect(componentsJson.registries).toMatchInlineSnapshot(`\n      {\n        \"@one\": \"http://localhost:4444/r/{name}\",\n      }\n    `)\n\n    // Install utils from shadcn.\n    expect(await fs.pathExists(path.join(fixturePath, \"lib/utils.ts\"))).toBe(\n      true\n    )\n\n    const globalCssContent = await fs.readFile(\n      path.join(fixturePath, \"app/globals.css\"),\n      \"utf-8\"\n    )\n\n    expect(\n      cssHasProperties(globalCssContent, [\n        {\n          selector: \"@theme inline\",\n          properties: {\n            \"--font-sans\": \"Inter, sans-serif\",\n            \"--color-brand\": \"var(--brand)\",\n            \"--color-brand-foreground\": \"var(--brand-foreground)\",\n          },\n        },\n        {\n          selector: \":root\",\n          properties: {\n            \"--background\": \"oklch(1 0 0)\",\n            \"--foreground\": \"oklch(0.145 0 0)\",\n            \"--brand\": \"oklch(20 14.3% 4.1%)\",\n            \"--brand-foreground\": \"oklch(24 1.3% 10%)\",\n          },\n        },\n        {\n          selector: \".dark\",\n          properties: {\n            \"--background\": \"oklch(0.145 0 0)\",\n            \"--foreground\": \"oklch(0.985 0 0)\",\n            \"--brand\": \"oklch(24 1.3% 10%)\",\n          },\n        },\n      ])\n    ).toBe(true)\n  })\n\n  it(\"should init from registry:style with auth\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:5555/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer ${BEARER_TOKEN}\",\n        },\n      },\n    })\n\n    process.env.BEARER_TOKEN = \"EXAMPLE_BEARER_TOKEN\"\n\n    await npxShadcn(fixturePath, [\n      \"init\",\n      \"--force\",\n      \"--no-reinstall\",\n      \"@two/style\",\n    ])\n\n    const componentsJson = await fs.readJson(\n      path.join(fixturePath, \"components.json\")\n    )\n    expect(componentsJson.style).toBe(\"new-york\")\n    expect(componentsJson.tailwind.baseColor).toBe(\"neutral\")\n    expect(componentsJson.registries).toMatchInlineSnapshot(`\n      {\n        \"@two\": {\n          \"headers\": {\n            \"Authorization\": \"Bearer \\${BEARER_TOKEN}\",\n          },\n          \"url\": \"http://localhost:5555/registry/bearer/{name}\",\n        },\n      }\n    `)\n\n    // Install utils from shadcn.\n    expect(await fs.pathExists(path.join(fixturePath, \"lib/utils.ts\"))).toBe(\n      true\n    )\n\n    const globalCssContent = await fs.readFile(\n      path.join(fixturePath, \"app/globals.css\"),\n      \"utf-8\"\n    )\n    expect(\n      cssHasProperties(globalCssContent, [\n        {\n          selector: \"@theme inline\",\n          properties: {\n            \"--font-serif\": \"Garamond, serif\",\n            \"--color-neutral\": \"var(--neutral)\",\n            \"--color-neutral-foreground\": \"var(--neutral-foreground)\",\n          },\n        },\n        {\n          selector: \":root\",\n          properties: {\n            \"--background\": \"oklch(1 0 0)\",\n            \"--foreground\": \"oklch(0.145 0 0)\",\n            \"--neutral\": \"oklch(10 14.3% 4.1%)\",\n            \"--neutral-foreground\": \"oklch(24 3% 10%)\",\n          },\n        },\n        {\n          selector: \".dark\",\n          properties: {\n            \"--background\": \"oklch(0.145 0 0)\",\n            \"--foreground\": \"oklch(0.985 0 0)\",\n            \"--neutral\": \"oklch(24 1.3% 10%)\",\n          },\n        },\n      ])\n    ).toBe(true)\n  })\n})\n"
  },
  {
    "path": "packages/tests/src/tests/search.test.ts",
    "content": "import { afterAll, beforeAll, describe, expect, it } from \"vitest\"\n\nimport { createFixtureTestDirectory, npxShadcn } from \"../utils/helpers\"\nimport { configureRegistries, createRegistryServer } from \"../utils/registry\"\n\nconst registryShadcn = await createRegistryServer(\n  [\n    {\n      name: \"button\",\n      type: \"registry:ui\",\n      description: \"A button component\",\n      dependencies: [\"@radix-ui/react-slot\"],\n      devDependencies: [\"@types/react\"],\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          content:\n            \"export function Button() {\\n  return <button>Click me</button>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n    {\n      name: \"card\",\n      type: \"registry:ui\",\n      description: \"A card component\",\n      files: [\n        {\n          path: \"components/ui/card.tsx\",\n          content:\n            \"export function Card() {\\n  return <div>Card Component</div>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n    {\n      name: \"alert-dialog\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"components/ui/alert-dialog.tsx\",\n          content:\n            \"export function AlertDialog() {\\n  return <div>AlertDialog Component</div>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n  ],\n  {\n    port: 9180,\n    path: \"/r\",\n  }\n)\n\nconst registryOne = await createRegistryServer(\n  [\n    {\n      name: \"foo\",\n      type: \"registry:component\",\n      description: \"Foo component from registry one\",\n      dependencies: [\"clsx\", \"tailwind-merge\"],\n      files: [\n        {\n          path: \"components/foo.tsx\",\n          content:\n            \"export function Foo() {\\n  return <div>Foo Component from Registry 1</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n      tailwind: {\n        config: {\n          theme: {\n            extend: {\n              colors: {\n                foo: \"#ff0000\",\n              },\n            },\n          },\n        },\n      },\n      cssVars: {\n        light: {\n          \"foo-color\": \"#ff0000\",\n        },\n        dark: {\n          \"foo-color\": \"#00ff00\",\n        },\n      },\n    },\n    {\n      name: \"bar\",\n      type: \"registry:component\",\n      registryDependencies: [\"@one/foo\"],\n      files: [\n        {\n          path: \"components/bar.tsx\",\n          content:\n            \"export function Bar() {\\n  return <div>Bar Component from Registry 1</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n  ],\n  {\n    port: 9181,\n    path: \"/r\",\n  }\n)\n\n// Create a registry with many items for pagination testing\nconst registryLarge = await createRegistryServer(\n  Array.from({ length: 20 }, (_, i) => ({\n    name: `component-${i + 1}`,\n    type: \"registry:ui\",\n    description: `Component number ${i + 1}`,\n    files: [\n      {\n        path: `components/ui/component-${i + 1}.tsx`,\n        content: `export function Component${i + 1}() { return <div>Component ${\n          i + 1\n        }</div> }`,\n        type: \"registry:ui\",\n      },\n    ],\n  })),\n  {\n    port: 9184,\n    path: \"/large\",\n  }\n)\n\nconst registryTwo = await createRegistryServer(\n  [\n    {\n      name: \"item\",\n      type: \"registry:ui\",\n      description: \"Item component from registry two\",\n      files: [\n        {\n          path: \"components/ui/item.tsx\",\n          content:\n            \"export function Item() {\\n  return <div>Item Component from Registry 2</div>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n    {\n      name: \"secure-item\",\n      type: \"registry:component\",\n      description: \"Secure item requiring authentication\",\n      registryDependencies: [\"@one/foo\"],\n      files: [\n        {\n          path: \"components/secure-item.tsx\",\n          content:\n            \"export function SecureItem() {\\n  return <div>Secure Item</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n  ],\n  {\n    port: 9182,\n    path: \"/registry\",\n  }\n)\n\nbeforeAll(async () => {\n  await registryShadcn.start()\n  await registryOne.start()\n  await registryTwo.start()\n  await registryLarge.start()\n})\n\nafterAll(async () => {\n  await registryShadcn.stop()\n  await registryOne.stop()\n  await registryTwo.stop()\n  await registryLarge.stop()\n})\n\ndescribe(\"shadcn search\", () => {\n  it(\"should search items from shadcn registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n    const output = await npxShadcn(fixturePath, [\"search\", \"@shadcn\"])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveProperty(\"items\")\n    expect(parsed.items).toEqual(\n      expect.arrayContaining([\n        {\n          name: \"button\",\n          type: \"registry:ui\",\n          description: \"A button component\",\n          registry: \"@shadcn\",\n          addCommandArgument: \"@shadcn/button\",\n        },\n        {\n          name: \"card\",\n          type: \"registry:ui\",\n          description: \"A card component\",\n          registry: \"@shadcn\",\n          addCommandArgument: \"@shadcn/card\",\n        },\n        {\n          name: \"alert-dialog\",\n          type: \"registry:ui\",\n          description: undefined,\n          registry: \"@shadcn\",\n          addCommandArgument: \"@shadcn/alert-dialog\",\n        },\n      ])\n    )\n  })\n\n  it(\"should list items from multiple registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n      \"@one\": \"http://localhost:9181/r/{name}\",\n      \"@two\": \"http://localhost:9182/registry/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"@one\",\n      \"@two\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveProperty(\"items\")\n    expect(parsed.items).toEqual(expect.any(Array))\n\n    // Check that items from all three registries are present\n    const registries = parsed.items.map((item: any) => item.registry)\n    expect(registries).toContain(\"@shadcn\")\n    expect(registries).toContain(\"@one\")\n    expect(registries).toContain(\"@two\")\n  })\n\n  it(\"should list from configured registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@one\"])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveProperty(\"items\")\n    expect(parsed.items).toEqual(\n      expect.arrayContaining([\n        {\n          name: \"foo\",\n          type: \"registry:component\",\n          description: \"Foo component from registry one\",\n          registry: \"@one\",\n          addCommandArgument: \"@one/foo\",\n        },\n        {\n          name: \"bar\",\n          type: \"registry:component\",\n          registry: \"@one\",\n          addCommandArgument: \"@one/bar\",\n        },\n      ])\n    )\n  })\n\n  it(\"should handle non-existent registry gracefully\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"search\", \"@unknown\"])\n\n    expect(output.stdout).toContain('Unknown registry \"@unknown\"')\n  })\n\n  it(\"should handle authentication for secured registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:9182/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n        },\n      },\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@two\"])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveProperty(\"items\")\n    expect(parsed.items).toEqual(\n      expect.arrayContaining([\n        expect.objectContaining({\n          name: \"item\",\n          type: \"registry:ui\",\n          description: \"Item component from registry two\",\n          registry: \"@two\",\n        }),\n        expect.objectContaining({\n          name: \"secure-item\",\n          type: \"registry:component\",\n          description: \"Secure item requiring authentication\",\n          registry: \"@two\",\n        }),\n      ])\n    )\n  })\n\n  it(\"should fail when listing secured registry without authentication\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": \"http://localhost:9182/registry/bearer/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@two\"])\n    expect(output.stdout).toContain(\"Unauthorized\")\n  })\n\n  it(\"should handle authentication with environment variables\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:9182/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer ${BEARER_TOKEN}\",\n        },\n      },\n    })\n\n    const originalBearerToken = process.env.BEARER_TOKEN\n    try {\n      process.env.BEARER_TOKEN = \"EXAMPLE_BEARER_TOKEN\"\n\n      const output = await npxShadcn(fixturePath, [\"search\", \"@two\"])\n\n      const parsed = JSON.parse(output.stdout)\n      expect(parsed).toHaveProperty(\"items\")\n      expect(parsed.items).toEqual(\n        expect.arrayContaining([\n          expect.objectContaining({\n            name: \"item\",\n            registry: \"@two\",\n          }),\n        ])\n      )\n    } finally {\n      if (originalBearerToken !== undefined) {\n        process.env.BEARER_TOKEN = originalBearerToken\n      } else {\n        delete process.env.BEARER_TOKEN\n      }\n    }\n  })\n\n  it(\"should handle missing environment variables for authenticated registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@auth\": {\n        url: \"http://localhost:9182/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer ${MISSING_ENV_VAR}\",\n        },\n      },\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@auth\"])\n\n    expect(output.stdout).toContain(\"MISSING_ENV_VAR\")\n  })\n\n  it(\"should work with @shadcn namespace\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n    const output = await npxShadcn(fixturePath, [\"search\", \"@shadcn\"])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveProperty(\"items\")\n    expect(parsed.items).toEqual(\n      expect.arrayContaining([\n        expect.objectContaining({\n          name: \"button\",\n          registry: \"@shadcn\",\n        }),\n        expect.objectContaining({\n          name: \"card\",\n          registry: \"@shadcn\",\n        }),\n      ])\n    )\n  })\n\n  it(\"should handle namespace with special characters\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"search\", \"@test-123\"])\n\n    expect(output.stdout).toContain('Unknown registry \"@test-123\"')\n  })\n\n  it(\"should handle namespace without @ prefix\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"search\", \"one\"])\n\n    // Without @ prefix, it should show an error\n    expect(output.stdout).toContain('Invalid registry namespace: \"one\".')\n  })\n\n  it(\"should list from components.json with registries config only (shadow config)\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@one\"])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveProperty(\"items\")\n    expect(parsed.items.length).toBeGreaterThan(0)\n\n    // Verify items are from @one registry\n    expect(parsed.items).toEqual(\n      expect.arrayContaining([\n        expect.objectContaining({\n          registry: \"@one\",\n        }),\n      ])\n    )\n  })\n\n  it(\"should error when listing from non-existent registry with configured registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    // Configure @one registry, but try to list from @two\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@two\"])\n\n    expect(output.stdout).toContain('Unknown registry \"@two\"')\n  })\n\n  it(\"should handle validation errors\", async () => {\n    // Create a server that returns invalid schema\n    const badServer = await createRegistryServer(\n      [\n        {\n          name: \"invalid-schema\",\n          type: \"invalid-type\", // Invalid type\n          files: [\n            {\n              path: \"components/bad.tsx\",\n              content: \"export function Bad() { return null }\",\n              // Missing required 'type' field\n            },\n          ],\n        } as any,\n      ],\n      {\n        port: 9183,\n        path: \"/bad\",\n      }\n    )\n\n    await badServer.start()\n\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@bad\": \"http://localhost:9183/bad/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@bad\"])\n\n    // Should handle validation error\n    expect(output.stdout.toLowerCase()).toContain(\"failed to parse\")\n\n    await badServer.stop()\n  })\n\n  it(\"should handle network timeouts gracefully\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@timeout\": \"http://localhost:9999/timeout/{name}\", // Non-existent server\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@timeout\"])\n\n    // Check for connection error in the output\n    expect(output.stdout.toLowerCase()).toContain(\"failed, reason:\")\n  })\n\n  it(\"should list multiple registries with mixed success and failure\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@one\",\n      \"@non-existent\",\n    ])\n\n    // Should fail fast on first error\n    expect(output.stdout).toContain('Unknown registry \"@non-existent\"')\n  })\n\n  it(\"should handle partial components.json without other required fields\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    // Create a partial components.json with only registries\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n      \"@two\": \"http://localhost:9182/registry/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@one\", \"@two\"])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveProperty(\"items\")\n    expect(parsed.items).toEqual(expect.any(Array))\n\n    // Check that items from both registries are present\n    const registries = parsed.items.map((item: any) => item.registry)\n    expect(registries).toContain(\"@one\")\n    expect(registries).toContain(\"@two\")\n  })\n\n  it(\"should handle dependencies that require authentication\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    // Configure both registries - @two requires auth, @one doesn't\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n      \"@two\": {\n        url: \"http://localhost:9182/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n        },\n      },\n    })\n\n    // List from both registries\n    const output = await npxShadcn(fixturePath, [\"search\", \"@one\", \"@two\"])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveProperty(\"items\")\n    expect(parsed.items).toEqual(expect.any(Array))\n\n    // Check that items from both registries are present\n    expect(parsed.items).toEqual(\n      expect.arrayContaining([\n        expect.objectContaining({\n          name: \"foo\",\n          registry: \"@one\",\n        }),\n        expect.objectContaining({\n          name: \"item\",\n          registry: \"@two\",\n        }),\n      ])\n    )\n  })\n\n  it(\"should handle search with pagination\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n\n    // Search for \"button\" with pagination\n    const output = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"button\",\n      \"--limit\",\n      \"1\",\n      \"--offset\",\n      \"0\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed.items).toHaveLength(1)\n    expect(parsed.items[0].name).toBe(\"button\")\n    expect(parsed.pagination).toEqual({\n      total: 1,\n      offset: 0,\n      limit: 1,\n      hasMore: false,\n    })\n  })\n\n  it(\"should handle empty search results with pagination\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"nonexistent\",\n      \"--limit\",\n      \"10\",\n      \"--offset\",\n      \"5\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed.items).toHaveLength(0)\n    expect(parsed.pagination).toEqual({\n      total: 0,\n      offset: 5,\n      limit: 10,\n      hasMore: false,\n    })\n  })\n\n  it(\"should handle typos in search (fuzzy matching)\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n\n    // Test various typos that should still match \"button\"\n    const typos = [\n      \"buton\", // missing 't'\n      \"buttn\", // missing 'o'\n      \"buttno\", // 'no' instead of 'on'\n      \"btton\", // missing 'u'\n      \"dialg\", // typo in 'dialog'\n      \"alrt\", // typo in 'alert'\n    ]\n\n    // Test button typos\n    for (const typo of typos.slice(0, 4)) {\n      const output = await npxShadcn(fixturePath, [\n        \"search\",\n        \"@shadcn\",\n        \"--query\",\n        typo,\n      ])\n      const parsed = JSON.parse(output.stdout)\n      expect(\n        parsed.items.some((item: any) => item.name === \"button\"),\n        `Typo '${typo}' should match 'button'`\n      ).toBe(true)\n    }\n\n    // Test dialog typo\n    const dialogOutput = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"dialg\",\n    ])\n    const dialogParsed = JSON.parse(dialogOutput.stdout)\n    expect(\n      dialogParsed.items.some((item: any) => item.name === \"alert-dialog\"),\n      \"Typo 'dialg' should match 'alert-dialog'\"\n    ).toBe(true)\n\n    // Test alert typo\n    const alertOutput = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"alrt\",\n    ])\n    const alertParsed = JSON.parse(alertOutput.stdout)\n    expect(\n      alertParsed.items.some((item: any) => item.name === \"alert-dialog\"),\n      \"Typo 'alrt' should match 'alert-dialog'\"\n    ).toBe(true)\n  })\n\n  it(\"should handle partial word matching\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n\n    // Test partial matches\n    const partialQueries = [\n      { query: \"btn\", expected: \"button\" },\n      { query: \"crd\", expected: \"card\" },\n      { query: \"alert\", expected: \"alert-dialog\" },\n      { query: \"dial\", expected: \"alert-dialog\" },\n    ]\n\n    for (const { query, expected } of partialQueries) {\n      const output = await npxShadcn(fixturePath, [\n        \"search\",\n        \"@shadcn\",\n        \"--query\",\n        query,\n      ])\n      const parsed = JSON.parse(output.stdout)\n      expect(\n        parsed.items.some((item: any) => item.name === expected),\n        `Partial '${query}' should match '${expected}'`\n      ).toBe(true)\n    }\n  })\n\n  it(\"should handle case-insensitive search\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n\n    // Search with different cases\n    const output1 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"BUTTON\",\n    ])\n    const output2 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"button\",\n    ])\n    const output3 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"BuTtOn\",\n    ])\n\n    const parsed1 = JSON.parse(output1.stdout)\n    const parsed2 = JSON.parse(output2.stdout)\n    const parsed3 = JSON.parse(output3.stdout)\n\n    // All should find the button component\n    expect(parsed1.items).toHaveLength(1)\n    expect(parsed2.items).toHaveLength(1)\n    expect(parsed3.items).toHaveLength(1)\n    expect(parsed1.items[0].name).toBe(\"button\")\n  })\n\n  it(\"should handle special characters in search\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n\n    // Test searching for components with hyphens\n    const output1 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"alert-dialog\",\n    ])\n    const parsed1 = JSON.parse(output1.stdout)\n    expect(\n      parsed1.items.some((item: any) => item.name === \"alert-dialog\")\n    ).toBe(true)\n\n    // Test searching with just the hyphen part\n    const output2 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"-dialog\",\n    ])\n    const parsed2 = JSON.parse(output2.stdout)\n    expect(\n      parsed2.items.some((item: any) => item.name === \"alert-dialog\")\n    ).toBe(true)\n\n    // Test with spaces (should still work)\n    const output3 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"alert dialog\",\n    ])\n    const parsed3 = JSON.parse(output3.stdout)\n    expect(\n      parsed3.items.some((item: any) => item.name === \"alert-dialog\")\n    ).toBe(true)\n  })\n\n  it(\"should rank exact matches higher than fuzzy matches\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n    })\n\n    // Search for \"bar\" which should match \"bar\" exactly\n    const output = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@one\",\n      \"--query\",\n      \"bar\",\n    ])\n    const parsed = JSON.parse(output.stdout)\n\n    // If we have results, \"bar\" should be first (exact match)\n    if (parsed.items.length > 0) {\n      expect(parsed.items[0].name).toBe(\"bar\")\n    }\n  })\n\n  it(\"should work with 'search' command alias\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n\n    // Use 'search' instead of 'list'\n    const output = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--query\",\n      \"button\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed.items).toEqual(\n      expect.arrayContaining([\n        expect.objectContaining({\n          name: \"button\",\n          registry: \"@shadcn\",\n        }),\n      ])\n    )\n  })\n\n  it(\"should handle limit edge cases\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n    })\n\n    // Test with limit 0 - should return all items\n    const output1 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--limit\",\n      \"0\",\n    ])\n    const parsed1 = JSON.parse(output1.stdout)\n    expect(parsed1.items.length).toBeGreaterThan(0)\n\n    // Test with very large limit\n    const output2 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"--limit\",\n      \"9999\",\n    ])\n    const parsed2 = JSON.parse(output2.stdout)\n    expect(parsed2.items.length).toBeLessThanOrEqual(9999)\n    expect(parsed2.pagination.hasMore).toBe(false)\n  })\n\n  it(\"should handle pagination across registries with search\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9180/r/{name}\",\n      \"@one\": \"http://localhost:9181/r/{name}\",\n    })\n\n    // Search across multiple registries with pagination\n    const output = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@shadcn\",\n      \"@one\",\n      \"--query\",\n      \"o\", // Should match \"button\", \"foo\", etc.\n      \"--limit\",\n      \"2\",\n      \"--offset\",\n      \"1\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed.items).toHaveLength(2)\n    expect(parsed.pagination.limit).toBe(2)\n    expect(parsed.pagination.offset).toBe(1)\n  })\n\n  it(\"should handle large dataset pagination properly\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@large\": \"http://localhost:9184/large/{name}\",\n    })\n\n    // First page\n    const output1 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@large\",\n      \"--limit\",\n      \"5\",\n      \"--offset\",\n      \"0\",\n    ])\n    const parsed1 = JSON.parse(output1.stdout)\n    expect(parsed1.items).toHaveLength(5)\n    expect(parsed1.items[0].name).toBe(\"component-1\")\n    expect(parsed1.items[4].name).toBe(\"component-5\")\n    expect(parsed1.pagination).toEqual({\n      total: 20,\n      offset: 0,\n      limit: 5,\n      hasMore: true,\n    })\n\n    // Middle page\n    const output2 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@large\",\n      \"--limit\",\n      \"5\",\n      \"--offset\",\n      \"10\",\n    ])\n    const parsed2 = JSON.parse(output2.stdout)\n    expect(parsed2.items).toHaveLength(5)\n    expect(parsed2.items[0].name).toBe(\"component-11\")\n    expect(parsed2.items[4].name).toBe(\"component-15\")\n    expect(parsed2.pagination.hasMore).toBe(true)\n\n    // Last page (partial)\n    const output3 = await npxShadcn(fixturePath, [\n      \"search\",\n      \"@large\",\n      \"--limit\",\n      \"5\",\n      \"--offset\",\n      \"18\",\n    ])\n    const parsed3 = JSON.parse(output3.stdout)\n    expect(parsed3.items).toHaveLength(2) // Only 2 items left\n    expect(parsed3.items[0].name).toBe(\"component-19\")\n    expect(parsed3.items[1].name).toBe(\"component-20\")\n    expect(parsed3.pagination.hasMore).toBe(false)\n  })\n\n  it(\"should list with only name, type, description, registry, and addCommandArgument fields\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@one\"])\n    const parsed = JSON.parse(output.stdout)\n\n    // Check that we only get name, type, description, registry, and addCommand fields\n    expect(parsed.items).toContainEqual({\n      name: \"foo\",\n      type: \"registry:component\",\n      description: \"Foo component from registry one\",\n      registry: \"@one\",\n      addCommandArgument: \"@one/foo\",\n    })\n\n    // Verify that other fields are not included\n    const fooItem = parsed.items.find((item: any) => item.name === \"foo\")\n    expect(fooItem).toBeDefined()\n    expect(fooItem.dependencies).toBeUndefined()\n    expect(fooItem.files).toBeUndefined()\n    expect(fooItem.tailwind).toBeUndefined()\n    expect(fooItem.cssVars).toBeUndefined()\n  })\n\n  it(\"should handle different registry URL patterns for addCommand\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9181/r/{name}\",\n      \"@two\": \"http://localhost:9182/registry/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"search\", \"@one\", \"@two\"])\n    const parsed = JSON.parse(output.stdout)\n\n    // Check @one registry items have correct addCommand\n    const fooItem = parsed.items.find(\n      (item: any) => item.name === \"foo\" && item.registry === \"@one\"\n    )\n    expect(fooItem.addCommandArgument).toBe(\"@one/foo\")\n\n    // Check @two registry items have correct addCommand\n    const itemItem = parsed.items.find(\n      (item: any) => item.name === \"item\" && item.registry === \"@two\"\n    )\n    expect(itemItem.addCommandArgument).toBe(\"@two/item\")\n  })\n})\n"
  },
  {
    "path": "packages/tests/src/tests/view.test.ts",
    "content": "import { afterAll, beforeAll, describe, expect, it } from \"vitest\"\n\nimport { createFixtureTestDirectory, npxShadcn } from \"../utils/helpers\"\nimport { configureRegistries, createRegistryServer } from \"../utils/registry\"\n\nconst registryShadcn = await createRegistryServer(\n  [\n    {\n      name: \"button\",\n      type: \"registry:ui\",\n      description: \"A button component\",\n      dependencies: [\"@radix-ui/react-slot\"],\n      devDependencies: [\"@types/react\"],\n      files: [\n        {\n          path: \"components/ui/button.tsx\",\n          content:\n            \"export function Button() {\\n  return <button>Click me</button>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n    {\n      name: \"card\",\n      type: \"registry:ui\",\n      description: \"A card component\",\n      files: [\n        {\n          path: \"components/ui/card.tsx\",\n          content:\n            \"export function Card() {\\n  return <div>Card Component</div>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n    {\n      name: \"alert-dialog\",\n      type: \"registry:ui\",\n      registryDependencies: [\"button\"],\n      files: [\n        {\n          path: \"components/ui/alert-dialog.tsx\",\n          content:\n            \"export function AlertDialog() {\\n  return <div>AlertDialog Component</div>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n  ],\n  {\n    port: 9080,\n    path: \"/r\",\n  }\n)\n\nconst registryOne = await createRegistryServer(\n  [\n    {\n      name: \"foo\",\n      type: \"registry:component\",\n      description: \"Foo component from registry one\",\n      dependencies: [\"clsx\", \"tailwind-merge\"],\n      files: [\n        {\n          path: \"components/foo.tsx\",\n          content:\n            \"export function Foo() {\\n  return <div>Foo Component from Registry 1</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n      tailwind: {\n        config: {\n          theme: {\n            extend: {\n              colors: {\n                foo: \"#ff0000\",\n              },\n            },\n          },\n        },\n      },\n      cssVars: {\n        light: {\n          \"foo-color\": \"#ff0000\",\n        },\n        dark: {\n          \"foo-color\": \"#00ff00\",\n        },\n      },\n    },\n    {\n      name: \"bar\",\n      type: \"registry:component\",\n      registryDependencies: [\"@one/foo\"],\n      files: [\n        {\n          path: \"components/bar.tsx\",\n          content:\n            \"export function Bar() {\\n  return <div>Bar Component from Registry 1</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n    {\n      name: \"complex\",\n      type: \"registry:component\",\n      registryDependencies: [\"@two/item\", \"@one/foo\"],\n      files: [\n        {\n          path: \"components/complex.tsx\",\n          content:\n            \"export function Complex() {\\n  return <div>Complex Component</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n  ],\n  {\n    port: 9081,\n    path: \"/r\",\n  }\n)\n\nconst registryTwo = await createRegistryServer(\n  [\n    {\n      name: \"item\",\n      type: \"registry:ui\",\n      description: \"Item component from registry two\",\n      files: [\n        {\n          path: \"components/ui/item.tsx\",\n          content:\n            \"export function Item() {\\n  return <div>Item Component from Registry 2</div>\\n}\",\n          type: \"registry:ui\",\n        },\n      ],\n    },\n    {\n      name: \"secure-item\",\n      type: \"registry:component\",\n      description: \"Secure item requiring authentication\",\n      registryDependencies: [\"@one/foo\"],\n      files: [\n        {\n          path: \"components/secure-item.tsx\",\n          content:\n            \"export function SecureItem() {\\n  return <div>Secure Item</div>\\n}\",\n          type: \"registry:component\",\n        },\n      ],\n    },\n  ],\n  {\n    port: 9082,\n    path: \"/registry\",\n  }\n)\n\nbeforeAll(async () => {\n  await registryShadcn.start()\n  await registryOne.start()\n  await registryTwo.start()\n})\n\nafterAll(async () => {\n  await registryShadcn.stop()\n  await registryOne.stop()\n  await registryTwo.stop()\n})\n\ndescribe(\"shadcn view\", () => {\n  it(\"should view a single component from shadcn registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@shadcn\": \"http://localhost:9080/r/{name}\",\n    })\n    const output = await npxShadcn(fixturePath, [\"view\", \"button\"])\n\n    const parsed = JSON.parse(output.stdout)\n\n    expect(parsed[0]).toMatchObject({\n      name: \"button\",\n      type: \"registry:ui\",\n      files: expect.arrayContaining([\n        expect.objectContaining({\n          path: \"registry/new-york-v4/ui/button.tsx\",\n          type: \"registry:ui\",\n        }),\n      ]),\n    })\n  })\n\n  it(\"should view multiple components from shadcn registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"button\", \"card\"])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveLength(2)\n    expect(parsed.map((p: any) => p.name)).toEqual([\"button\", \"card\"])\n  })\n\n  it(\"should view component with registry dependencies\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"alert-dialog\"])\n\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"alert-dialog\",\n        type: \"registry:ui\",\n        registryDependencies: [\"button\"],\n        files: expect.arrayContaining([\n          expect.objectContaining({\n            path: \"registry/new-york-v4/ui/alert-dialog.tsx\",\n            type: \"registry:ui\",\n          }),\n        ]),\n      },\n    ])\n  })\n\n  it(\"should view component from URL without needing config\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"http://localhost:9081/r/foo.json\",\n    ])\n\n    expect(JSON.parse(output.stdout)).toMatchInlineSnapshot(`\n      [\n        {\n          \"cssVars\": {\n            \"dark\": {\n              \"foo-color\": \"#00ff00\",\n            },\n            \"light\": {\n              \"foo-color\": \"#ff0000\",\n            },\n          },\n          \"dependencies\": [\n            \"clsx\",\n            \"tailwind-merge\",\n          ],\n          \"description\": \"Foo component from registry one\",\n          \"files\": [\n            {\n              \"content\": \"export function Foo() {\n        return <div>Foo Component from Registry 1</div>\n      }\",\n              \"path\": \"components/foo.tsx\",\n              \"type\": \"registry:component\",\n            },\n          ],\n          \"name\": \"foo\",\n          \"tailwind\": {\n            \"config\": {\n              \"theme\": {\n                \"extend\": {\n                  \"colors\": {\n                    \"foo\": \"#ff0000\",\n                  },\n                },\n              },\n            },\n          },\n          \"type\": \"registry:component\",\n        },\n      ]\n    `)\n  })\n\n  it(\"should view multiple URLs without needing config\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"http://localhost:9081/r/foo.json\",\n      \"http://localhost:9082/registry/item.json\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveLength(2)\n    expect(parsed.map((p: any) => p.name)).toEqual([\"foo\", \"item\"])\n  })\n\n  it(\"should view component from configured registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@one/foo\"])\n\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"foo\",\n        type: \"registry:component\",\n        description: \"Foo component from registry one\",\n        dependencies: [\"clsx\", \"tailwind-merge\"],\n        tailwind: {\n          config: {\n            theme: {\n              extend: {\n                colors: {\n                  foo: \"#ff0000\",\n                },\n              },\n            },\n          },\n        },\n      },\n    ])\n  })\n\n  it(\"should view multiple components from different registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n      \"@two\": \"http://localhost:9082/registry/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"@one/foo\",\n      \"@two/item\",\n      \"button\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveLength(3)\n    expect(parsed.map((p: any) => p.name)).toEqual([\"foo\", \"item\", \"button\"])\n  })\n\n  it(\"should view component with nested registry dependencies\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@one/bar\"])\n\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"bar\",\n        type: \"registry:component\",\n        registryDependencies: [\"@one/foo\"],\n        files: expect.arrayContaining([\n          expect.objectContaining({\n            path: \"components/bar.tsx\",\n            type: \"registry:component\",\n          }),\n        ]),\n      },\n    ])\n  })\n\n  it(\"should view component with cross-registry dependencies\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n      \"@two\": \"http://localhost:9082/registry/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@one/complex\"])\n\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"complex\",\n        type: \"registry:component\",\n        registryDependencies: expect.arrayContaining([\"@two/item\", \"@one/foo\"]),\n        files: expect.arrayContaining([\n          expect.objectContaining({\n            path: \"components/complex.tsx\",\n            type: \"registry:component\",\n          }),\n        ]),\n      },\n    ])\n  })\n\n  it(\"should handle authentication for secured registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:9082/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n        },\n      },\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@two/secure-item\"])\n\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"secure-item\",\n        type: \"registry:component\",\n        description: \"Secure item requiring authentication\",\n        registryDependencies: [\"@one/foo\"],\n        files: expect.arrayContaining([\n          expect.objectContaining({\n            path: \"components/secure-item.tsx\",\n          }),\n        ]),\n      },\n    ])\n  })\n\n  it(\"should fail when viewing secured item without authentication\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@two\": \"http://localhost:9082/registry/bearer/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@two/secure-item\"])\n    expect(output.stdout).toContain(\"Unauthorized\")\n  })\n\n  it(\"should handle authentication with environment variables\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n      \"@two\": {\n        url: \"http://localhost:9082/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer ${BEARER_TOKEN}\",\n        },\n      },\n    })\n\n    process.env.BEARER_TOKEN = \"EXAMPLE_BEARER_TOKEN\"\n\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"@two/secure-item\",\n      \"@one/foo\",\n    ])\n\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"secure-item\",\n        type: \"registry:component\",\n        registryDependencies: [\"@one/foo\"],\n      },\n      {\n        name: \"foo\",\n        type: \"registry:component\",\n        dependencies: [\"clsx\", \"tailwind-merge\"],\n      },\n    ])\n\n    delete process.env.BEARER_TOKEN\n  })\n\n  it(\"should mix URLs and named components\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"http://localhost:9082/registry/item.json\",\n      \"@one/foo\",\n      \"button\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveLength(3)\n    expect(parsed.map((p: any) => p.name)).toEqual([\"item\", \"foo\", \"button\"])\n  })\n\n  it(\"should handle non-existent component gracefully\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"non-existent\"])\n\n    expect(output.stdout).toContain(\"not found\")\n  })\n\n  it(\"should handle non-existent registry gracefully\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"@unknown/component\"])\n\n    expect(output.stdout).toContain('Unknown registry \"@unknown\"')\n  })\n\n  it(\"should work with @shadcn namespace\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"@shadcn/button\",\n      \"@shadcn/card\",\n    ])\n\n    const parsed = JSON.parse(output.stdout)\n    expect(parsed).toHaveLength(2)\n    expect(parsed.map((p: any) => p.name)).toEqual([\"button\", \"card\"])\n  })\n\n  it(\"should handle 404 for non-existent URL\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"http://localhost:9081/r/does-not-exist.json\",\n    ])\n\n    expect(output.stdout).toContain(\"not found\")\n  })\n\n  it(\"should handle multiple errors in batch\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"non-existent\",\n      \"@one/does-not-exist\",\n    ])\n\n    // Should fail on first error - non-existent component\n    expect(output.stdout.toLowerCase()).toContain(\"not found\")\n  })\n\n  it(\"should handle invalid URL format\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"not-a-valid-url\"])\n\n    // With defaults in place, it will try to fetch as a component and fail\n    expect(output.stdout.toLowerCase()).toContain(\"not found\")\n  })\n\n  it(\"should handle network timeouts gracefully\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"http://localhost:9999/timeout.json\", // Non-existent server\n    ])\n\n    // Check for connection error in the output\n    expect(output.stdout.toLowerCase()).toContain(\"failed, reason:\")\n  })\n\n  it(\"should handle mixed success and failure\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"button\",\n      \"non-existent-component\",\n    ])\n\n    // Should fail fast on first error\n    expect(output.stdout).not.toContain('\"name\": \"button\"')\n    expect(output.stdout).toContain(\"not found\")\n  })\n\n  it(\"should handle missing environment variables for authenticated registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    await configureRegistries(fixturePath, {\n      \"@auth\": {\n        url: \"http://localhost:9082/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer ${MISSING_ENV_VAR}\",\n        },\n      },\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@auth/secure-item\"])\n\n    expect(output.stdout).toContain(\"MISSING_ENV_VAR\")\n  })\n\n  it(\"should handle validation errors\", async () => {\n    // Create a server that returns invalid schema\n    const badServer = await createRegistryServer(\n      [\n        {\n          name: \"invalid-schema\",\n          type: \"invalid-type\", // Invalid type\n          files: [\n            {\n              path: \"components/bad.tsx\",\n              content: \"export function Bad() { return null }\",\n              // Missing required 'type' field\n            },\n          ],\n        } as any,\n      ],\n      {\n        port: 9083,\n        path: \"/bad\",\n      }\n    )\n\n    await badServer.start()\n\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"http://localhost:9083/bad/invalid-schema.json\",\n    ])\n\n    // Should handle validation error\n    expect(output.stdout.toLowerCase()).toContain(\"failed to parse\")\n\n    await badServer.stop()\n  })\n\n  it(\"should handle dependencies that require authentication\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    // Configure both registries - @two requires auth, @one doesn't\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n      \"@two\": {\n        url: \"http://localhost:9082/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n        },\n      },\n    })\n\n    // complex depends on @two/item which requires auth\n    const output = await npxShadcn(fixturePath, [\"view\", \"@one/complex\"])\n\n    // Should just show the component metadata, not fail on auth\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"complex\",\n        type: \"registry:component\",\n        registryDependencies: expect.arrayContaining([\"@two/item\", \"@one/foo\"]),\n        files: expect.arrayContaining([\n          expect.objectContaining({\n            path: \"components/complex.tsx\",\n            type: \"registry:component\",\n          }),\n        ]),\n      },\n    ])\n  })\n\n  it(\"should fail when viewing component with unauthenticated dependencies\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    // Configure registries - @two requires auth but no token provided\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n      \"@two\": \"http://localhost:9082/registry/bearer/{name}\",\n    })\n\n    // Try to view complex which depends on @two/item (requires auth)\n    // Note: This should succeed for view command as it just shows metadata\n    const output = await npxShadcn(fixturePath, [\"view\", \"@one/complex\"])\n\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"complex\",\n        type: \"registry:component\",\n        registryDependencies: expect.arrayContaining([\"@two/item\"]),\n      },\n    ])\n  })\n\n  it(\"should view authenticated dependencies when directly requested\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    // Configure with proper auth\n    await configureRegistries(fixturePath, {\n      \"@two\": {\n        url: \"http://localhost:9082/registry/bearer/{name}\",\n        headers: {\n          Authorization: \"Bearer EXAMPLE_BEARER_TOKEN\",\n        },\n      },\n    })\n\n    // Directly view the authenticated item\n    const output = await npxShadcn(fixturePath, [\"view\", \"@two/item\"])\n\n    expect(JSON.parse(output.stdout)).toMatchObject([\n      {\n        name: \"item\",\n        type: \"registry:ui\",\n        description: \"Item component from registry two\",\n        files: expect.arrayContaining([\n          expect.objectContaining({\n            path: \"components/ui/item.tsx\",\n            type: \"registry:ui\",\n          }),\n        ]),\n      },\n    ])\n  })\n\n  it(\"should view component with all metadata fields\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@one/foo\"])\n    const parsed = JSON.parse(output.stdout)\n\n    expect(parsed[0]).toMatchObject({\n      name: \"foo\",\n      type: \"registry:component\",\n      description: \"Foo component from registry one\",\n      dependencies: [\"clsx\", \"tailwind-merge\"],\n      files: expect.arrayContaining([\n        expect.objectContaining({\n          path: \"components/foo.tsx\",\n          type: \"registry:component\",\n        }),\n      ]),\n      tailwind: expect.objectContaining({\n        config: expect.objectContaining({\n          theme: expect.objectContaining({\n            extend: expect.objectContaining({\n              colors: expect.objectContaining({\n                foo: \"#ff0000\",\n              }),\n            }),\n          }),\n        }),\n      }),\n      cssVars: expect.objectContaining({\n        light: expect.objectContaining({\n          \"foo-color\": \"#ff0000\",\n        }),\n        dark: expect.objectContaining({\n          \"foo-color\": \"#00ff00\",\n        }),\n      }),\n    })\n  })\n\n  it(\"should handle namespace with special characters\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"@test-123/component\"])\n\n    expect(output.stdout).toContain('Unknown registry \"@test-123\"')\n  })\n\n  it(\"should handle empty component name in namespace\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"@shadcn/\"])\n\n    expect(output.stdout).toContain(\"not found\")\n  })\n\n  it(\"should handle namespace without @ prefix\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"one/foo\"])\n\n    // Without @ prefix, it's treated as a regular component name\n    expect(output.stdout).toContain(\"not found\")\n  })\n\n  it(\"should handle double namespace\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"@@test/component\"])\n\n    expect(output.stdout).toContain(\"not found\")\n  })\n\n  it(\"should two error for unknown registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\"view\", \"@test/component\"])\n\n    expect(output.stdout).toContain('Unknown registry \"@test\"')\n  })\n\n  it(\"should two error for unknown registry not in first position\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"@shadcn/component\",\n      \"@does-not-exist/component\",\n    ])\n\n    expect(output.stdout).toContain('Unknown registry \"@does-not-exist\"')\n  })\n\n  it(\"should handle namespace with multiple slashes\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app-init\")\n    const output = await npxShadcn(fixturePath, [\n      \"view\",\n      \"@test/path/to/component\",\n    ])\n\n    expect(output.stdout).toContain('Unknown registry \"@test\"')\n  })\n\n  it(\"should view from components.json with registries config only\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@one/foo\"])\n\n    expect(output.stdout).toContain(\"Foo component from registry one\")\n  })\n\n  it(\"should error when viewing from non-existent registry with configured registries\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    // Configure @one registry, but try to view from @two\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n    })\n\n    const output = await npxShadcn(fixturePath, [\"view\", \"@two/item\"])\n\n    expect(output.stdout).toContain('Unknown registry \"@two\"')\n  })\n\n  it(\"should error when viewing non-existent item from configured registry\", async () => {\n    const fixturePath = await createFixtureTestDirectory(\"next-app\")\n\n    // Configure @one registry\n    await configureRegistries(fixturePath, {\n      \"@one\": \"http://localhost:9081/r/{name}\",\n    })\n\n    // Try to view an item that doesn't exist in @one registry\n    const output = await npxShadcn(fixturePath, [\"view\", \"@one/does-not-exist\"])\n\n    expect(output.stdout).toContain(\"not found\")\n  })\n})\n"
  },
  {
    "path": "packages/tests/src/utils/helpers.ts",
    "content": "import { randomUUID } from \"crypto\"\nimport path from \"path\"\nimport { fileURLToPath } from \"url\"\nimport { execa } from \"execa\"\nimport fs from \"fs-extra\"\n\nimport { TEMP_DIR } from \"./setup\"\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\nconst FIXTURES_DIR = path.join(__dirname, \"../../fixtures\")\nconst SHADCN_CLI_PATH = path.join(__dirname, \"../../../shadcn/dist/index.js\")\nconst TEMPLATES_DIR = path.join(__dirname, \"../../../../templates\")\n\nexport function getRegistryUrl() {\n  return process.env.REGISTRY_URL || \"http://localhost:4000/r\"\n}\n\nexport async function createFixtureTestDirectory(fixtureName: string) {\n  const fixturePath = path.join(FIXTURES_DIR, fixtureName)\n\n  const uniqueId = `${process.pid}-${randomUUID().substring(0, 8)}`\n  let testDir = path.join(TEMP_DIR, `test-${uniqueId}-${fixtureName}`)\n\n  await fs.ensureDir(testDir)\n  await fs.copy(fixturePath, testDir)\n\n  return testDir\n}\n\nexport async function runCommand(\n  cwd: string,\n  args: string[],\n  options?: {\n    env?: Record<string, string>\n    input?: string\n    timeout?: number\n  }\n) {\n  try {\n    const childProcess = execa(\"node\", [SHADCN_CLI_PATH, ...args], {\n      cwd,\n      env: {\n        ...process.env,\n        FORCE_COLOR: \"0\",\n        CI: \"true\",\n        ...options?.env,\n      },\n      input: options?.input,\n      reject: false,\n      timeout: options?.timeout ?? 60000,\n    })\n\n    const result = await childProcess\n\n    return {\n      stdout: result.stdout || \"\",\n      stderr: result.stderr || \"\",\n      exitCode: result.exitCode ?? 0,\n    }\n  } catch (error: any) {\n    return {\n      stdout: error.stdout || \"\",\n      stderr: error.stderr || error.message || \"\",\n      exitCode: error.exitCode ?? 1,\n    }\n  }\n}\n\nexport async function npxShadcn(\n  cwd: string,\n  args: string[],\n  {\n    debug = false,\n    timeout,\n  }: {\n    debug?: boolean\n    timeout?: number\n  } = {}\n) {\n  const result = await runCommand(cwd, args, {\n    env: {\n      REGISTRY_URL: getRegistryUrl(),\n      SHADCN_TEMPLATE_DIR: TEMPLATES_DIR,\n    },\n    timeout,\n  })\n\n  if (debug) {\n    console.log(result)\n  }\n\n  return result\n}\n\nexport function cssHasProperties(\n  cssContent: string,\n  checks: Array<{\n    selector: string\n    properties: Record<string, string>\n  }>\n) {\n  return checks.every(({ selector, properties }) => {\n    const escapedSelector = selector.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n    const regex = new RegExp(`${escapedSelector}\\\\s*{([^}]+)}`, \"s\")\n    const match = cssContent.match(regex)\n    const block = match ? match[1] : \"\"\n\n    return Object.entries(properties).every(([property, value]) =>\n      block.includes(`${property}: ${value};`)\n    )\n  })\n}\n"
  },
  {
    "path": "packages/tests/src/utils/registry.ts",
    "content": "import { createServer } from \"http\"\nimport path from \"path\"\nimport fs from \"fs-extra\"\n\nexport async function createRegistryServer(\n  items: Array<{ name: string; type: string } & Record<string, unknown>>,\n  {\n    port = 4444,\n    path = \"/r\",\n  }: {\n    port?: number\n    path?: string\n  }\n) {\n  const server = createServer((request, response) => {\n    const urlRaw = request.url?.split(\"?\")[0]\n\n    // Handle registries.json endpoint (don't strip .json for this one).\n    if (urlRaw?.endsWith(\"/registries.json\")) {\n      response.writeHead(200, { \"Content-Type\": \"application/json\" })\n      // Return empty registry array for tests - we want to test manual configuration.\n      response.end(JSON.stringify([]))\n      return\n    }\n\n    // For other endpoints, strip .json extension\n    const urlWithoutQuery = urlRaw?.replace(/\\.json$/, \"\")\n\n    if (urlWithoutQuery?.includes(\"icons/index\")) {\n      response.writeHead(200, { \"Content-Type\": \"application/json\" })\n      response.end(\n        JSON.stringify({\n          AlertCircle: {\n            lucide: \"AlertCircle\",\n            radix: \"ExclamationTriangleIcon\",\n          },\n          ArrowLeft: {\n            lucide: \"ArrowLeft\",\n            radix: \"ArrowLeftIcon\",\n          },\n        })\n      )\n      return\n    }\n\n    if (urlWithoutQuery?.includes(\"colors/neutral\")) {\n      response.writeHead(200, { \"Content-Type\": \"application/json\" })\n      response.end(\n        JSON.stringify({\n          inlineColors: {\n            light: {\n              background: \"white\",\n              foreground: \"neutral-950\",\n            },\n            dark: {\n              background: \"neutral-950\",\n              foreground: \"neutral-50\",\n            },\n          },\n          cssVars: {\n            light: {\n              background: \"0 0% 100%\",\n              foreground: \"0 0% 3.9%\",\n            },\n            dark: {\n              background: \"0 0% 3.9%\",\n              foreground: \"0 0% 98%\",\n            },\n          },\n          cssVarsV4: {\n            light: {\n              background: \"oklch(1 0 0)\",\n              foreground: \"oklch(0.145 0 0)\",\n            },\n            dark: {\n              background: \"oklch(0.145 0 0)\",\n              foreground: \"oklch(0.985 0 0)\",\n            },\n          },\n          inlineColorsTemplate:\n            \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n  \",\n          cssVarsTemplate:\n            \"@tailwind base;\\n@tailwind components;\\n@tailwind utilities;\\n\\n@layer \",\n        })\n      )\n      return\n    }\n\n    if (urlWithoutQuery?.includes(\"styles/index\")) {\n      response.writeHead(200, { \"Content-Type\": \"application/json\" })\n      response.end(\n        JSON.stringify([\n          {\n            name: \"new-york\",\n            label: \"New York\",\n          },\n          {\n            name: \"default\",\n            label: \"Default\",\n          },\n        ])\n      )\n      return\n    }\n\n    // Match /styles/{style}/index for the registry style index (e.g., /styles/new-york-v4/index).\n    if (urlWithoutQuery?.match(/\\/styles\\/[^/]+\\/index$/)) {\n      response.writeHead(200, { \"Content-Type\": \"application/json\" })\n      response.end(\n        JSON.stringify({\n          name: \"index\",\n          type: \"registry:style\",\n          registryDependencies: [\"utils\"],\n          cssVars: {},\n          files: [],\n        })\n      )\n      return\n    }\n\n    // Match /r/index for the registry index (but NOT paths like /styles/foo/index).\n    if (urlWithoutQuery?.match(/\\/r\\/index$/)) {\n      response.writeHead(200, { \"Content-Type\": \"application/json\" })\n      response.end(\n        JSON.stringify([\n          {\n            name: \"alert-dialog\",\n            type: \"registry:ui\",\n            files: [\n              {\n                path: \"components/ui/alert-dialog.tsx\",\n                type: \"registry:ui\",\n                content:\n                  \"export function AlertDialog() { return <div>AlertDialog Component from Registry Shadcn</div> }\",\n              },\n            ],\n          },\n          {\n            name: \"button\",\n            type: \"registry:ui\",\n            files: [\n              {\n                path: \"components/ui/button.tsx\",\n                type: \"registry:ui\",\n                content:\n                  \"export function Button() { return <div>Button Component from Registry Shadcn</div> }\",\n              },\n            ],\n          },\n        ])\n      )\n      return\n    }\n\n    // Check if this is a registry.json request\n    if (urlWithoutQuery?.endsWith(\"/registry\")) {\n      // Check if this requires bearer authentication\n      if (request.url?.includes(\"/bearer/\")) {\n        // Validate bearer token\n        const token = request.headers.authorization?.split(\" \")[1]\n        if (token !== \"EXAMPLE_BEARER_TOKEN\") {\n          response.writeHead(401, { \"Content-Type\": \"application/json\" })\n          response.end(JSON.stringify({ error: \"Unauthorized\" }))\n          return\n        }\n      }\n\n      response.writeHead(200, { \"Content-Type\": \"application/json\" })\n      response.end(\n        JSON.stringify({\n          name: \"Test Registry\",\n          homepage: \"https://example.com\",\n          items: items,\n        })\n      )\n      return\n    }\n\n    const match = urlWithoutQuery?.match(\n      new RegExp(`^${path}/(?:.*/)?([^/]+)$`)\n    )\n    const itemName = match?.[1]\n    const item = itemName\n      ? items.find((item) => item.name === itemName)\n      : undefined\n\n    if (!item) {\n      response.writeHead(404, { \"Content-Type\": \"application/json\" })\n      response.end(JSON.stringify({ error: \"Item not found\" }))\n      return\n    }\n\n    if (request.url?.includes(\"/bearer/\")) {\n      // Validate bearer token\n      const token = request.headers.authorization?.split(\" \")[1]\n      if (token !== \"EXAMPLE_BEARER_TOKEN\") {\n        response.writeHead(401, { \"Content-Type\": \"application/json\" })\n        response.end(JSON.stringify({ error: \"Unauthorized\" }))\n        return\n      }\n    }\n\n    if (request.url?.includes(\"/api-key/\")) {\n      // Validate api key\n      const apiKey = request.headers[\"x-api-key\"]\n      if (apiKey !== \"EXAMPLE_API_KEY\") {\n        response.writeHead(401, { \"Content-Type\": \"application/json\" })\n        response.end(JSON.stringify({ error: \"Unauthorized\" }))\n        return\n      }\n    }\n\n    if (request.url?.includes(\"/client-secret/\")) {\n      // Validate client secret\n      const clientSecret = request.headers[\"x-client-secret\"]\n      const clientId = request.headers[\"x-client-id\"]\n      if (\n        clientSecret !== \"EXAMPLE_CLIENT_SECRET\" ||\n        clientId !== \"EXAMPLE_CLIENT_ID\"\n      ) {\n        response.writeHead(401, { \"Content-Type\": \"application/json\" })\n        response.end(JSON.stringify({ error: \"Unauthorized\" }))\n        return\n      }\n    }\n\n    if (request.url?.includes(\"/params/\")) {\n      const token = request.url.split(\"?\")[1]?.split(\"=\")[1]\n      if (token !== \"EXAMPLE_REGISTRY_TOKEN\") {\n        response.writeHead(401, { \"Content-Type\": \"application/json\" })\n        response.end(JSON.stringify({ error: \"Unauthorized\" }))\n        return\n      }\n    }\n\n    response.writeHead(200, { \"Content-Type\": \"application/json\" })\n    response.end(JSON.stringify(item))\n  })\n\n  return {\n    start: async () => {\n      await new Promise<void>((resolve) => {\n        server.listen(port, () => {\n          resolve()\n        })\n      })\n    },\n    stop: async () => {\n      await new Promise<void>((resolve) => {\n        server.close(() => {\n          resolve()\n        })\n      })\n    },\n  }\n}\n\nexport async function configureRegistries(\n  fixturePath: string,\n  payload: Record<string, any>\n) {\n  if (!fs.pathExistsSync(path.join(fixturePath, \"components.json\"))) {\n    await fs.writeJSON(path.join(fixturePath, \"components.json\"), {\n      registries: payload,\n    })\n  }\n\n  const componentsJson = await fs.readJSON(\n    path.join(fixturePath, \"components.json\")\n  )\n  componentsJson.registries = payload\n  await fs.writeJSON(path.join(fixturePath, \"components.json\"), componentsJson)\n}\n"
  },
  {
    "path": "packages/tests/src/utils/setup.ts",
    "content": "import path from \"path\"\nimport fs from \"fs-extra\"\nimport { rimraf } from \"rimraf\"\n\nexport const TEMP_DIR = path.join(__dirname, \"../../temp\")\n\nconst SHADCN_CLI_PATH = path.join(__dirname, \"../../../shadcn/dist/index.js\")\n\nasync function waitForCondition(\n  label: string,\n  check: () => Promise<boolean>,\n  timeoutMs = 60000\n) {\n  const deadline = Date.now() + timeoutMs\n  while (Date.now() < deadline) {\n    if (await check()) return\n    await new Promise((resolve) => setTimeout(resolve, 500))\n  }\n  throw new Error(`Timed out waiting for: ${label} (${timeoutMs}ms)`)\n}\n\nexport default async function setup() {\n  await fs.ensureDir(TEMP_DIR)\n\n  // The v4 dev script runs `pnpm --filter=shadcn build` in the background\n  // while `next dev` starts immediately. On fast CI runs the server can be\n  // ready before the CLI binary is built, so we wait for it explicitly.\n  await waitForCondition(\"shadcn CLI binary\", () =>\n    fs.pathExists(SHADCN_CLI_PATH)\n  )\n\n  // The CLI's first request goes to the dynamic /init route. On a cold Next.js\n  // dev server, this route needs to be compiled on first access (~1.8s). That\n  // compilation time, on top of everything else init does, pushes the first\n  // test over the 30s CLI timeout. Warming up the route here ensures it is\n  // already compiled before any test starts.\n  const registryUrl = process.env.REGISTRY_URL || \"http://localhost:4000/r\"\n  const shadcnUrl = registryUrl.replace(/\\/r\\/?$/, \"\")\n  const initWarmupUrl = `${shadcnUrl}/init?base=base&style=nova&baseColor=neutral&theme=neutral&iconLibrary=lucide&font=geist&rtl=false&menuAccent=subtle&menuColor=default&radius=default&template=next`\n\n  await waitForCondition(\"init route warm-up\", async () => {\n    try {\n      const res = await fetch(initWarmupUrl)\n      return res.ok\n    } catch {\n      return false\n    }\n  })\n\n  // The CLI fetches registry paths that may not exist (e.g. font files),\n  // causing Next.js to compile the /_not-found/page route on first 404.\n  // That compilation takes ~4-5s and contributes to the first test timing\n  // out. Trigger one 404 here so the not-found page is pre-compiled.\n  try {\n    await fetch(`${shadcnUrl}/r/styles/new-york-v4/font-geist.json`)\n  } catch {\n    // Best effort — don't block setup if this fails.\n  }\n\n  return async () => {\n    try {\n      await rimraf(TEMP_DIR)\n    } catch (error) {\n      console.error(\"Failed to clean up temp directory:\", error)\n    }\n  }\n}\n"
  },
  {
    "path": "packages/tests/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"module\": \"ESNext\",\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\"],\n    \"moduleResolution\": \"bundler\",\n    \"noEmit\": true,\n    \"strict\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"types\": [\"vitest/globals\", \"node\"]\n  },\n  \"include\": [\"src/**/*.ts\"],\n  \"exclude\": [\"node_modules\", \"temp\", \"fixtures\"]\n}"
  },
  {
    "path": "packages/tests/vitest.config.ts",
    "content": "import tsconfigPaths from \"vite-tsconfig-paths\"\nimport { defineConfig } from \"vitest/config\"\n\nexport default defineConfig({\n  test: {\n    testTimeout: 120000,\n    hookTimeout: 120000,\n    globals: true,\n    environment: \"node\",\n    globalSetup: [\"./src/utils/setup.ts\"],\n    maxConcurrency: 4,\n    isolate: false,\n  },\n  plugins: [\n    tsconfigPaths({\n      ignoreConfigErrors: true,\n    }),\n  ],\n})\n"
  },
  {
    "path": "pnpm-workspace.yaml",
    "content": "packages:\n  - \"apps/*\"\n  - \"packages/*\"\n  - \"!**/test/**\"\n  - \"!**/fixtures/**\"\n  - \"!**/temp/**\"\n  - \"!packages/tests/temp/**\"\n"
  },
  {
    "path": "prettier.config.cjs",
    "content": "/** @type {import('prettier').Config} */\nmodule.exports = {\n  endOfLine: \"lf\",\n  semi: false,\n  singleQuote: false,\n  tabWidth: 2,\n  trailingComma: \"es5\",\n  printWidth: 80,\n  importOrder: [\n    \"^(react/(.*)$)|^(react$)\",\n    \"^(next/(.*)$)|^(next$)\",\n    \"<THIRD_PARTY_MODULES>\",\n    \"\",\n    \"^@workspace/(.*)$\",\n    \"\",\n    \"^types$\",\n    \"^@/types/(.*)$\",\n    \"^@/config/(.*)$\",\n    \"^@/lib/(.*)$\",\n    \"^@/hooks/(.*)$\",\n    \"^@/components/ui/(.*)$\",\n    \"^@/components/(.*)$\",\n    \"^@/registry/(.*)$\",\n    \"^@/styles/(.*)$\",\n    \"^@/app/(.*)$\",\n    \"^@/www/(.*)$\",\n    \"\",\n    \"^[./]\",\n  ],\n  importOrderParserPlugins: [\"typescript\", \"jsx\", \"decorators-legacy\"],\n  plugins: [\n    \"@ianvs/prettier-plugin-sort-imports\",\n    \"prettier-plugin-tailwindcss\",\n  ],\n  tailwindStylesheet: \"./apps/v4/styles/globals.css\",\n  tailwindFunctions: [\"cn\", \"cva\"],\n}\n"
  },
  {
    "path": "scripts/sync-templates.sh",
    "content": "#!/bin/bash\n\nset -e # bail on errors\nGLOB=$1\nIS_CI=\"${CI:-false}\"\nBASE=$(pwd)\nCOMMIT_MESSAGE=$(git log -1 --pretty=%B)\n\nfor folder in $GLOB; do\n  [ -d \"$folder\" ] || continue\n  cd $BASE\n\n  if [ -n \"$(git status --porcelain)\" ]; then\n    git add .\n    git commit -m \"chore: update template\"\n    git push origin main\n  fi\n\n  NAME=${folder##*/}\n  CLONE_DIR=\"__${NAME}__clone__\"\n\n  # sync to read-only clones\n  # clone, delete files in the clone, and copy (new) files over\n  # this handles file deletions, additions, and changes seamlessly\n  # note: redirect output to dev/null to avoid any possibility of leaking token\n  git clone --quiet --depth 1 git@github.com:shadcn/${NAME}.git $CLONE_DIR > /dev/null\n  cd $CLONE_DIR\n  find . | grep -v \".git\" | grep -v \"^\\.*$\" | xargs rm -rf # delete all files (to handle deletions in monorepo)\n  cp -r $BASE/$folder/. .\n\n  if [ -n \"$(git status --porcelain)\" ]; then\n    git add .\n    git commit -m \"$COMMIT_MESSAGE\"\n    git push origin main\n  fi\n\n  cd $BASE\n  rm -rf $CLONE_DIR\ndone\n"
  },
  {
    "path": "skills/shadcn/SKILL.md",
    "content": "---\nname: shadcn\ndescription: Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI. Provides project context, component docs, and usage examples. Applies when working with shadcn/ui, component registries, presets, --preset codes, or any project with a components.json file. Also triggers for \"shadcn init\", \"create an app with --preset\", or \"switch to --preset\".\nuser-invocable: false\nallowed-tools: Bash(npx shadcn@latest *), Bash(pnpm dlx shadcn@latest *), Bash(bunx --bun shadcn@latest *)\n---\n\n# shadcn/ui\n\nA framework for building ui, components and design systems. Components are added as source code to the user's project via the CLI.\n\n> **IMPORTANT:** Run all CLI commands using the project's package runner: `npx shadcn@latest`, `pnpm dlx shadcn@latest`, or `bunx --bun shadcn@latest` — based on the project's `packageManager`. Examples below use `npx shadcn@latest` but substitute the correct runner for the project.\n\n## Current Project Context\n\n```json\n!`npx shadcn@latest info --json`\n```\n\nThe JSON above contains the project config and installed components. Use `npx shadcn@latest docs <component>` to get documentation and example URLs for any component.\n\n## Principles\n\n1. **Use existing components first.** Use `npx shadcn@latest search` to check registries before writing custom UI. Check community registries too.\n2. **Compose, don't reinvent.** Settings page = Tabs + Card + form controls. Dashboard = Sidebar + Card + Chart + Table.\n3. **Use built-in variants before custom styles.** `variant=\"outline\"`, `size=\"sm\"`, etc.\n4. **Use semantic colors.** `bg-primary`, `text-muted-foreground` — never raw values like `bg-blue-500`.\n\n## Critical Rules\n\nThese rules are **always enforced**. Each links to a file with Incorrect/Correct code pairs.\n\n### Styling & Tailwind → [styling.md](./rules/styling.md)\n\n- **`className` for layout, not styling.** Never override component colors or typography.\n- **No `space-x-*` or `space-y-*`.** Use `flex` with `gap-*`. For vertical stacks, `flex flex-col gap-*`.\n- **Use `size-*` when width and height are equal.** `size-10` not `w-10 h-10`.\n- **Use `truncate` shorthand.** Not `overflow-hidden text-ellipsis whitespace-nowrap`.\n- **No manual `dark:` color overrides.** Use semantic tokens (`bg-background`, `text-muted-foreground`).\n- **Use `cn()` for conditional classes.** Don't write manual template literal ternaries.\n- **No manual `z-index` on overlay components.** Dialog, Sheet, Popover, etc. handle their own stacking.\n\n### Forms & Inputs → [forms.md](./rules/forms.md)\n\n- **Forms use `FieldGroup` + `Field`.** Never use raw `div` with `space-y-*` or `grid gap-*` for form layout.\n- **`InputGroup` uses `InputGroupInput`/`InputGroupTextarea`.** Never raw `Input`/`Textarea` inside `InputGroup`.\n- **Buttons inside inputs use `InputGroup` + `InputGroupAddon`.**\n- **Option sets (2–7 choices) use `ToggleGroup`.** Don't loop `Button` with manual active state.\n- **`FieldSet` + `FieldLegend` for grouping related checkboxes/radios.** Don't use a `div` with a heading.\n- **Field validation uses `data-invalid` + `aria-invalid`.** `data-invalid` on `Field`, `aria-invalid` on the control. For disabled: `data-disabled` on `Field`, `disabled` on the control.\n\n### Component Structure → [composition.md](./rules/composition.md)\n\n- **Items always inside their Group.** `SelectItem` → `SelectGroup`. `DropdownMenuItem` → `DropdownMenuGroup`. `CommandItem` → `CommandGroup`.\n- **Use `asChild` (radix) or `render` (base) for custom triggers.** Check `base` field from `npx shadcn@latest info`. → [base-vs-radix.md](./rules/base-vs-radix.md)\n- **Dialog, Sheet, and Drawer always need a Title.** `DialogTitle`, `SheetTitle`, `DrawerTitle` required for accessibility. Use `className=\"sr-only\"` if visually hidden.\n- **Use full Card composition.** `CardHeader`/`CardTitle`/`CardDescription`/`CardContent`/`CardFooter`. Don't dump everything in `CardContent`.\n- **Button has no `isPending`/`isLoading`.** Compose with `Spinner` + `data-icon` + `disabled`.\n- **`TabsTrigger` must be inside `TabsList`.** Never render triggers directly in `Tabs`.\n- **`Avatar` always needs `AvatarFallback`.** For when the image fails to load.\n\n### Use Components, Not Custom Markup → [composition.md](./rules/composition.md)\n\n- **Use existing components before custom markup.** Check if a component exists before writing a styled `div`.\n- **Callouts use `Alert`.** Don't build custom styled divs.\n- **Empty states use `Empty`.** Don't build custom empty state markup.\n- **Toast via `sonner`.** Use `toast()` from `sonner`.\n- **Use `Separator`** instead of `<hr>` or `<div className=\"border-t\">`.\n- **Use `Skeleton`** for loading placeholders. No custom `animate-pulse` divs.\n- **Use `Badge`** instead of custom styled spans.\n\n### Icons → [icons.md](./rules/icons.md)\n\n- **Icons in `Button` use `data-icon`.** `data-icon=\"inline-start\"` or `data-icon=\"inline-end\"` on the icon.\n- **No sizing classes on icons inside components.** Components handle icon sizing via CSS. No `size-4` or `w-4 h-4`.\n- **Pass icons as objects, not string keys.** `icon={CheckIcon}`, not a string lookup.\n\n### CLI\n\n- **Never decode or fetch preset codes manually.** Pass them directly to `npx shadcn@latest init --preset <code>`.\n\n## Key Patterns\n\nThese are the most common patterns that differentiate correct shadcn/ui code. For edge cases, see the linked rule files above.\n\n```tsx\n// Form layout: FieldGroup + Field, not div + Label.\n<FieldGroup>\n  <Field>\n    <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n    <Input id=\"email\" />\n  </Field>\n</FieldGroup>\n\n// Validation: data-invalid on Field, aria-invalid on the control.\n<Field data-invalid>\n  <FieldLabel>Email</FieldLabel>\n  <Input aria-invalid />\n  <FieldDescription>Invalid email.</FieldDescription>\n</Field>\n\n// Icons in buttons: data-icon, no sizing classes.\n<Button>\n  <SearchIcon data-icon=\"inline-start\" />\n  Search\n</Button>\n\n// Spacing: gap-*, not space-y-*.\n<div className=\"flex flex-col gap-4\">  // correct\n<div className=\"space-y-4\">           // wrong\n\n// Equal dimensions: size-*, not w-* h-*.\n<Avatar className=\"size-10\">   // correct\n<Avatar className=\"w-10 h-10\"> // wrong\n\n// Status colors: Badge variants or semantic tokens, not raw colors.\n<Badge variant=\"secondary\">+20.1%</Badge>    // correct\n<span className=\"text-emerald-600\">+20.1%</span> // wrong\n```\n\n## Component Selection\n\n| Need                       | Use                                                                                                 |\n| -------------------------- | --------------------------------------------------------------------------------------------------- |\n| Button/action              | `Button` with appropriate variant                                                                   |\n| Form inputs                | `Input`, `Select`, `Combobox`, `Switch`, `Checkbox`, `RadioGroup`, `Textarea`, `InputOTP`, `Slider` |\n| Toggle between 2–5 options | `ToggleGroup` + `ToggleGroupItem`                                                                   |\n| Data display               | `Table`, `Card`, `Badge`, `Avatar`                                                                  |\n| Navigation                 | `Sidebar`, `NavigationMenu`, `Breadcrumb`, `Tabs`, `Pagination`                                     |\n| Overlays                   | `Dialog` (modal), `Sheet` (side panel), `Drawer` (bottom sheet), `AlertDialog` (confirmation)       |\n| Feedback                   | `sonner` (toast), `Alert`, `Progress`, `Skeleton`, `Spinner`                                        |\n| Command palette            | `Command` inside `Dialog`                                                                           |\n| Charts                     | `Chart` (wraps Recharts)                                                                            |\n| Layout                     | `Card`, `Separator`, `Resizable`, `ScrollArea`, `Accordion`, `Collapsible`                          |\n| Empty states               | `Empty`                                                                                             |\n| Menus                      | `DropdownMenu`, `ContextMenu`, `Menubar`                                                            |\n| Tooltips/info              | `Tooltip`, `HoverCard`, `Popover`                                                                   |\n\n## Key Fields\n\nThe injected project context contains these key fields:\n\n- **`aliases`** → use the actual alias prefix for imports (e.g. `@/`, `~/`), never hardcode.\n- **`isRSC`** → when `true`, components using `useState`, `useEffect`, event handlers, or browser APIs need `\"use client\"` at the top of the file. Always reference this field when advising on the directive.\n- **`tailwindVersion`** → `\"v4\"` uses `@theme inline` blocks; `\"v3\"` uses `tailwind.config.js`.\n- **`tailwindCssFile`** → the global CSS file where custom CSS variables are defined. Always edit this file, never create a new one.\n- **`style`** → component visual treatment (e.g. `nova`, `vega`).\n- **`base`** → primitive library (`radix` or `base`). Affects component APIs and available props.\n- **`iconLibrary`** → determines icon imports. Use `lucide-react` for `lucide`, `@tabler/icons-react` for `tabler`, etc. Never assume `lucide-react`.\n- **`resolvedPaths`** → exact file-system destinations for components, utils, hooks, etc.\n- **`framework`** → routing and file conventions (e.g. Next.js App Router vs Vite SPA).\n- **`packageManager`** → use this for any non-shadcn dependency installs (e.g. `pnpm add date-fns` vs `npm install date-fns`).\n\nSee [cli.md — `info` command](./cli.md) for the full field reference.\n\n## Component Docs, Examples, and Usage\n\nRun `npx shadcn@latest docs <component>` to get the URLs for a component's documentation, examples, and API reference. Fetch these URLs to get the actual content.\n\n```bash\nnpx shadcn@latest docs button dialog select\n```\n\n**When creating, fixing, debugging, or using a component, always run `npx shadcn@latest docs` and fetch the URLs first.** This ensures you're working with the correct API and usage patterns rather than guessing.\n\n## Workflow\n\n1. **Get project context** — already injected above. Run `npx shadcn@latest info` again if you need to refresh.\n2. **Check installed components first** — before running `add`, always check the `components` list from project context or list the `resolvedPaths.ui` directory. Don't import components that haven't been added, and don't re-add ones already installed.\n3. **Find components** — `npx shadcn@latest search`.\n4. **Get docs and examples** — run `npx shadcn@latest docs <component>` to get URLs, then fetch them. Use `npx shadcn@latest view` to browse registry items you haven't installed. To preview changes to installed components, use `npx shadcn@latest add --diff`.\n5. **Install or update** — `npx shadcn@latest add`. When updating existing components, use `--dry-run` and `--diff` to preview changes first (see [Updating Components](#updating-components) below).\n6. **Fix imports in third-party components** — After adding components from community registries (e.g. `@bundui`, `@magicui`), check the added non-UI files for hardcoded import paths like `@/components/ui/...`. These won't match the project's actual aliases. Use `npx shadcn@latest info` to get the correct `ui` alias (e.g. `@workspace/ui/components`) and rewrite the imports accordingly. The CLI rewrites imports for its own UI files, but third-party registry components may use default paths that don't match the project.\n7. **Review added components** — After adding a component or block from any registry, **always read the added files and verify they are correct**. Check for missing sub-components (e.g. `SelectItem` without `SelectGroup`), missing imports, incorrect composition, or violations of the [Critical Rules](#critical-rules). Also replace any icon imports with the project's `iconLibrary` from the project context (e.g. if the registry item uses `lucide-react` but the project uses `hugeicons`, swap the imports and icon names accordingly). Fix all issues before moving on.\n8. **Registry must be explicit** — When the user asks to add a block or component, **do not guess the registry**. If no registry is specified (e.g. user says \"add a login block\" without specifying `@shadcn`, `@tailark`, etc.), ask which registry to use. Never default to a registry on behalf of the user.\n9. **Switching presets** — Ask the user first: **reinstall**, **merge**, or **skip**?\n   - **Reinstall**: `npx shadcn@latest init --preset <code> --force --reinstall`. Overwrites all components.\n   - **Merge**: `npx shadcn@latest init --preset <code> --force --no-reinstall`, then run `npx shadcn@latest info` to list installed components, then for each installed component use `--dry-run` and `--diff` to [smart merge](#updating-components) it individually.\n   - **Skip**: `npx shadcn@latest init --preset <code> --force --no-reinstall`. Only updates config and CSS, leaves components as-is.\n   - **Important**: Always run preset commands inside the user's project directory. The CLI automatically preserves the current base (`base` vs `radix`) from `components.json`. If you must use a scratch/temp directory (e.g. for `--dry-run` comparisons), pass `--base <current-base>` explicitly — preset codes do not encode the base.\n\n## Updating Components\n\nWhen the user asks to update a component from upstream while keeping their local changes, use `--dry-run` and `--diff` to intelligently merge. **NEVER fetch raw files from GitHub manually — always use the CLI.**\n\n1. Run `npx shadcn@latest add <component> --dry-run` to see all files that would be affected.\n2. For each file, run `npx shadcn@latest add <component> --diff <file>` to see what changed upstream vs local.\n3. Decide per file based on the diff:\n   - No local changes → safe to overwrite.\n   - Has local changes → read the local file, analyze the diff, and apply upstream updates while preserving local modifications.\n   - User says \"just update everything\" → use `--overwrite`, but confirm first.\n4. **Never use `--overwrite` without the user's explicit approval.**\n\n## Quick Reference\n\n```bash\n# Create a new project.\nnpx shadcn@latest init --name my-app --preset base-nova\nnpx shadcn@latest init --name my-app --preset a2r6bw --template vite\n\n# Create a monorepo project.\nnpx shadcn@latest init --name my-app --preset base-nova --monorepo\nnpx shadcn@latest init --name my-app --preset base-nova --template next --monorepo\n\n# Initialize existing project.\nnpx shadcn@latest init --preset base-nova\nnpx shadcn@latest init --defaults  # shortcut: --template=next --preset=base-nova\n\n# Add components.\nnpx shadcn@latest add button card dialog\nnpx shadcn@latest add @magicui/shimmer-button\nnpx shadcn@latest add --all\n\n# Preview changes before adding/updating.\nnpx shadcn@latest add button --dry-run\nnpx shadcn@latest add button --diff button.tsx\nnpx shadcn@latest add @acme/form --view button.tsx\n\n# Search registries.\nnpx shadcn@latest search @shadcn -q \"sidebar\"\nnpx shadcn@latest search @tailark -q \"stats\"\n\n# Get component docs and example URLs.\nnpx shadcn@latest docs button dialog select\n\n# View registry item details (for items not yet installed).\nnpx shadcn@latest view @shadcn/button\n```\n\n**Named presets:** `base-nova`, `radix-nova`\n**Templates:** `next`, `vite`, `start`, `react-router`, `astro` (all support `--monorepo`) and `laravel` (not supported for monorepo)\n**Preset codes:** Base62 strings starting with `a` (e.g. `a2r6bw`), from [ui.shadcn.com](https://ui.shadcn.com).\n\n## Detailed References\n\n- [rules/forms.md](./rules/forms.md) — FieldGroup, Field, InputGroup, ToggleGroup, FieldSet, validation states\n- [rules/composition.md](./rules/composition.md) — Groups, overlays, Card, Tabs, Avatar, Alert, Empty, Toast, Separator, Skeleton, Badge, Button loading\n- [rules/icons.md](./rules/icons.md) — data-icon, icon sizing, passing icons as objects\n- [rules/styling.md](./rules/styling.md) — Semantic colors, variants, className, spacing, size, truncate, dark mode, cn(), z-index\n- [rules/base-vs-radix.md](./rules/base-vs-radix.md) — asChild vs render, Select, ToggleGroup, Slider, Accordion\n- [cli.md](./cli.md) — Commands, flags, presets, templates\n- [customization.md](./customization.md) — Theming, CSS variables, extending components\n"
  },
  {
    "path": "skills/shadcn/agents/openai.yml",
    "content": "interface:\n  display_name: \"shadcn/ui\"\n  short_description: \"Manages shadcn/ui components — adding, searching, fixing, debugging, styling, and composing UI.\"\n  icon_small: \"./assets/shadcn-small.png\"\n  icon_large: \"./assets/shadcn.png\"\n"
  },
  {
    "path": "skills/shadcn/cli.md",
    "content": "# shadcn CLI Reference\n\nConfiguration is read from `components.json`.\n\n> **IMPORTANT:** Always run commands using the project's package runner: `npx shadcn@latest`, `pnpm dlx shadcn@latest`, or `bunx --bun shadcn@latest`. Check `packageManager` from project context to choose the right one. Examples below use `npx shadcn@latest` but substitute the correct runner for the project.\n\n> **IMPORTANT:** Only use the flags documented below. Do not invent or guess flags — if a flag isn't listed here, it doesn't exist. The CLI auto-detects the package manager from the project's lockfile; there is no `--package-manager` flag.\n\n## Contents\n\n- Commands: init, add (dry-run, smart merge), search, view, docs, info, build\n- Templates: next, vite, start, react-router, astro\n- Presets: named, code, URL formats and fields\n- Switching presets\n\n---\n\n## Commands\n\n### `init` — Initialize or create a project\n\n```bash\nnpx shadcn@latest init [components...] [options]\n```\n\nInitializes shadcn/ui in an existing project or creates a new project (when `--name` is provided). Optionally installs components in the same step.\n\n| Flag                    | Short | Description                                               | Default |\n| ----------------------- | ----- | --------------------------------------------------------- | ------- |\n| `--template <template>` | `-t`  | Template (next, start, vite, next-monorepo, react-router) | —       |\n| `--preset [name]`       | `-p`  | Preset configuration (named, code, or URL)                | —       |\n| `--yes`                 | `-y`  | Skip confirmation prompt                                  | `true`  |\n| `--defaults`            | `-d`  | Use defaults (`--template=next --preset=base-nova`)       | `false` |\n| `--force`               | `-f`  | Force overwrite existing configuration                    | `false` |\n| `--cwd <cwd>`           | `-c`  | Working directory                                         | current |\n| `--name <name>`         | `-n`  | Name for new project                                      | —       |\n| `--silent`              | `-s`  | Mute output                                               | `false` |\n| `--rtl`                 |       | Enable RTL support                                        | —       |\n| `--reinstall`           |       | Re-install existing UI components                         | `false` |\n| `--monorepo`            |       | Scaffold a monorepo project                               | —       |\n| `--no-monorepo`         |       | Skip the monorepo prompt                                  | —       |\n\n`npx shadcn@latest create` is an alias for `npx shadcn@latest init`.\n\n### `add` — Add components\n\n> **IMPORTANT:** To compare local components against upstream or to preview changes, ALWAYS use `npx shadcn@latest add <component> --dry-run`, `--diff`, or `--view`. NEVER fetch raw files from GitHub or other sources manually. The CLI handles registry resolution, file paths, and CSS diffing automatically.\n\n```bash\nnpx shadcn@latest add [components...] [options]\n```\n\nAccepts component names, registry-prefixed names (`@magicui/shimmer-button`), URLs, or local paths.\n\n| Flag            | Short | Description                                                                                                          | Default |\n| --------------- | ----- | -------------------------------------------------------------------------------------------------------------------- | ------- |\n| `--yes`         | `-y`  | Skip confirmation prompt                                                                                             | `false` |\n| `--overwrite`   | `-o`  | Overwrite existing files                                                                                             | `false` |\n| `--cwd <cwd>`   | `-c`  | Working directory                                                                                                    | current |\n| `--all`         | `-a`  | Add all available components                                                                                         | `false` |\n| `--path <path>` | `-p`  | Target path for the component                                                                                        | —       |\n| `--silent`      | `-s`  | Mute output                                                                                                          | `false` |\n| `--dry-run`     |       | Preview all changes without writing files                                                                            | `false` |\n| `--diff [path]` |       | Show diffs. Without a path, shows the first 5 files. With a path, shows that file only (implies `--dry-run`)         | —       |\n| `--view [path]` |       | Show file contents. Without a path, shows the first 5 files. With a path, shows that file only (implies `--dry-run`) | —       |\n\n#### Dry-Run Mode\n\nUse `--dry-run` to preview what `add` would do without writing any files. `--diff` and `--view` both imply `--dry-run`.\n\n```bash\n# Preview all changes.\nnpx shadcn@latest add button --dry-run\n\n# Show diffs for all files (top 5).\nnpx shadcn@latest add button --diff\n\n# Show the diff for a specific file.\nnpx shadcn@latest add button --diff button.tsx\n\n# Show contents for all files (top 5).\nnpx shadcn@latest add button --view\n\n# Show the full content of a specific file.\nnpx shadcn@latest add button --view button.tsx\n\n# Works with URLs too.\nnpx shadcn@latest add https://api.npoint.io/abc123 --dry-run\n\n# CSS diffs.\nnpx shadcn@latest add button --diff globals.css\n```\n\n**When to use dry-run:**\n\n- When the user asks \"what files will this add?\" or \"what will this change?\" — use `--dry-run`.\n- Before overwriting existing components — use `--diff` to preview the changes first.\n- When the user wants to inspect component source code without installing — use `--view`.\n- When checking what CSS changes would be made to `globals.css` — use `--diff globals.css`.\n- When the user asks to review or audit third-party registry code before installing — use `--view` to inspect the source.\n\n> **`npx shadcn@latest add --dry-run` vs `npx shadcn@latest view`:** Prefer `npx shadcn@latest add --dry-run/--diff/--view` over `npx shadcn@latest view` when the user wants to preview changes to their project. `npx shadcn@latest view` only shows raw registry metadata. `npx shadcn@latest add --dry-run` shows exactly what would happen in the user's project: resolved file paths, diffs against existing files, and CSS updates. Use `npx shadcn@latest view` only when the user wants to browse registry info without a project context.\n\n#### Smart Merge from Upstream\n\nSee [Updating Components in SKILL.md](./SKILL.md#updating-components) for the full workflow.\n\n### `search` — Search registries\n\n```bash\nnpx shadcn@latest search <registries...> [options]\n```\n\nFuzzy search across registries. Also aliased as `npx shadcn@latest list`. Without `-q`, lists all items.\n\n| Flag                | Short | Description            | Default |\n| ------------------- | ----- | ---------------------- | ------- |\n| `--query <query>`   | `-q`  | Search query           | —       |\n| `--limit <number>`  | `-l`  | Max items per registry | `100`   |\n| `--offset <number>` | `-o`  | Items to skip          | `0`     |\n| `--cwd <cwd>`       | `-c`  | Working directory      | current |\n\n### `view` — View item details\n\n```bash\nnpx shadcn@latest view <items...> [options]\n```\n\nDisplays item info including file contents. Example: `npx shadcn@latest view @shadcn/button`.\n\n### `docs` — Get component documentation URLs\n\n```bash\nnpx shadcn@latest docs <components...> [options]\n```\n\nOutputs resolved URLs for component documentation, examples, and API references. Accepts one or more component names. Fetch the URLs to get the actual content.\n\nExample output for `npx shadcn@latest docs input button`:\n\n```\nbase  radix\n\ninput\n  docs      https://ui.shadcn.com/docs/components/radix/input\n  examples  https://raw.githubusercontent.com/.../examples/input-example.tsx\n\nbutton\n  docs      https://ui.shadcn.com/docs/components/radix/button\n  examples  https://raw.githubusercontent.com/.../examples/button-example.tsx\n```\n\nSome components include an `api` link to the underlying library (e.g. `cmdk` for the command component).\n\n### `diff` — Check for updates\n\nDo not use this command. Use `npx shadcn@latest add --diff` instead.\n\n### `info` — Project information\n\n```bash\nnpx shadcn@latest info [options]\n```\n\nDisplays project info and `components.json` configuration. Run this first to discover the project's framework, aliases, Tailwind version, and resolved paths.\n\n| Flag          | Short | Description       | Default |\n| ------------- | ----- | ----------------- | ------- |\n| `--cwd <cwd>` | `-c`  | Working directory | current |\n\n**Project Info fields:**\n\n| Field                | Type      | Meaning                                                            |\n| -------------------- | --------- | ------------------------------------------------------------------ |\n| `framework`          | `string`  | Detected framework (`next`, `vite`, `react-router`, `start`, etc.) |\n| `frameworkVersion`   | `string`  | Framework version (e.g. `15.2.4`)                                  |\n| `isSrcDir`           | `boolean` | Whether the project uses a `src/` directory                        |\n| `isRSC`              | `boolean` | Whether React Server Components are enabled                        |\n| `isTsx`              | `boolean` | Whether the project uses TypeScript                                |\n| `tailwindVersion`    | `string`  | `\"v3\"` or `\"v4\"`                                                   |\n| `tailwindConfigFile` | `string`  | Path to the Tailwind config file                                   |\n| `tailwindCssFile`    | `string`  | Path to the global CSS file                                        |\n| `aliasPrefix`        | `string`  | Import alias prefix (e.g. `@`, `~`, `@/`)                          |\n| `packageManager`     | `string`  | Detected package manager (`npm`, `pnpm`, `yarn`, `bun`)            |\n\n**Components.json fields:**\n\n| Field                | Type      | Meaning                                                                                    |\n| -------------------- | --------- | ------------------------------------------------------------------------------------------ |\n| `base`               | `string`  | Primitive library (`radix` or `base`) — determines component APIs and available props      |\n| `style`              | `string`  | Visual style (e.g. `nova`, `vega`)                                                         |\n| `rsc`                | `boolean` | RSC flag from config                                                                       |\n| `tsx`                | `boolean` | TypeScript flag                                                                            |\n| `tailwind.config`    | `string`  | Tailwind config path                                                                       |\n| `tailwind.css`       | `string`  | Global CSS path — this is where custom CSS variables go                                    |\n| `iconLibrary`        | `string`  | Icon library — determines icon import package (e.g. `lucide-react`, `@tabler/icons-react`) |\n| `aliases.components` | `string`  | Component import alias (e.g. `@/components`)                                               |\n| `aliases.utils`      | `string`  | Utils import alias (e.g. `@/lib/utils`)                                                    |\n| `aliases.ui`         | `string`  | UI component alias (e.g. `@/components/ui`)                                                |\n| `aliases.lib`        | `string`  | Lib alias (e.g. `@/lib`)                                                                   |\n| `aliases.hooks`      | `string`  | Hooks alias (e.g. `@/hooks`)                                                               |\n| `resolvedPaths`      | `object`  | Absolute file-system paths for each alias                                                  |\n| `registries`         | `object`  | Configured custom registries                                                               |\n\n**Links fields:**\n\nThe `info` output includes a **Links** section with templated URLs for component docs, source, and examples. For resolved URLs, use `npx shadcn@latest docs <component>` instead.\n\n### `build` — Build a custom registry\n\n```bash\nnpx shadcn@latest build [registry] [options]\n```\n\nBuilds `registry.json` into individual JSON files for distribution. Default input: `./registry.json`, default output: `./public/r`.\n\n| Flag              | Short | Description       | Default      |\n| ----------------- | ----- | ----------------- | ------------ |\n| `--output <path>` | `-o`  | Output directory  | `./public/r` |\n| `--cwd <cwd>`     | `-c`  | Working directory | current      |\n\n---\n\n## Templates\n\n| Value          | Framework      | Monorepo support |\n| -------------- | -------------- | ---------------- |\n| `next`         | Next.js        | Yes              |\n| `vite`         | Vite           | Yes              |\n| `start`        | TanStack Start | Yes              |\n| `react-router` | React Router   | Yes              |\n| `astro`        | Astro          | Yes              |\n| `laravel`      | Laravel        | No               |\n\nAll templates support monorepo scaffolding via the `--monorepo` flag. When passed, the CLI uses a monorepo-specific template directory (e.g. `next-monorepo`, `vite-monorepo`). When neither `--monorepo` nor `--no-monorepo` is passed, the CLI prompts interactively. Laravel does not support monorepo scaffolding.\n\n---\n\n## Presets\n\nThree ways to specify a preset via `--preset`:\n\n1. **Named:** `--preset base-nova` or `--preset radix-nova`\n2. **Code:** `--preset a2r6bw` (base62 string, starts with lowercase `a`)\n3. **URL:** `--preset \"https://ui.shadcn.com/init?base=radix&style=nova&...\"`\n\n> **IMPORTANT:** Never try to decode, fetch, or resolve preset codes manually. Preset codes are opaque — pass them directly to `npx shadcn@latest init --preset <code>` and let the CLI handle resolution.\n\n## Switching Presets\n\nAsk the user first: **reinstall**, **merge**, or **skip** existing components?\n\n- **Re-install** → `npx shadcn@latest init --preset <code> --force --reinstall`. Overwrites all component files with the new preset styles. Use when the user hasn't customized components.\n- **Merge** → `npx shadcn@latest init --preset <code> --force --no-reinstall`, then run `npx shadcn@latest info` to get the list of installed components and use the [smart merge workflow](./SKILL.md#updating-components) to update them one by one, preserving local changes. Use when the user has customized components.\n- **Skip** → `npx shadcn@latest init --preset <code> --force --no-reinstall`. Only updates config and CSS variables, leaves existing components as-is.\n\nAlways run preset commands inside the user's project directory. The CLI automatically preserves the current base (`base` vs `radix`) from `components.json`. If you must use a scratch/temp directory (e.g. for `--dry-run` comparisons), pass `--base <current-base>` explicitly — preset codes do not encode the base.\n"
  },
  {
    "path": "skills/shadcn/customization.md",
    "content": "# Customization & Theming\n\nComponents reference semantic CSS variable tokens. Change the variables to change every component.\n\n## Contents\n\n- How it works (CSS variables → Tailwind utilities → components)\n- Color variables and OKLCH format\n- Dark mode setup\n- Changing the theme (presets, CSS variables)\n- Adding custom colors (Tailwind v3 and v4)\n- Border radius\n- Customizing components (variants, className, wrappers)\n- Checking for updates\n\n---\n\n## How It Works\n\n1. CSS variables defined in `:root` (light) and `.dark` (dark mode).\n2. Tailwind maps them to utilities: `bg-primary`, `text-muted-foreground`, etc.\n3. Components use these utilities — changing a variable changes all components that reference it.\n\n---\n\n## Color Variables\n\nEvery color follows the `name` / `name-foreground` convention. The base variable is for backgrounds, `-foreground` is for text/icons on that background.\n\n| Variable                                     | Purpose                          |\n| -------------------------------------------- | -------------------------------- |\n| `--background` / `--foreground`              | Page background and default text |\n| `--card` / `--card-foreground`               | Card surfaces                    |\n| `--primary` / `--primary-foreground`         | Primary buttons and actions      |\n| `--secondary` / `--secondary-foreground`     | Secondary actions                |\n| `--muted` / `--muted-foreground`             | Muted/disabled states            |\n| `--accent` / `--accent-foreground`           | Hover and accent states          |\n| `--destructive` / `--destructive-foreground` | Error and destructive actions    |\n| `--border`                                   | Default border color             |\n| `--input`                                    | Form input borders               |\n| `--ring`                                     | Focus ring color                 |\n| `--chart-1` through `--chart-5`              | Chart/data visualization         |\n| `--sidebar-*`                                | Sidebar-specific colors          |\n| `--surface` / `--surface-foreground`         | Secondary surface                |\n\nColors use OKLCH: `--primary: oklch(0.205 0 0)` where values are lightness (0–1), chroma (0 = gray), and hue (0–360).\n\n---\n\n## Dark Mode\n\nClass-based toggle via `.dark` on the root element. In Next.js, use `next-themes`:\n\n```tsx\nimport { ThemeProvider } from \"next-themes\"\n\n<ThemeProvider attribute=\"class\" defaultTheme=\"system\" enableSystem>\n  {children}\n</ThemeProvider>\n```\n\n---\n\n## Changing the Theme\n\n```bash\n# Apply a preset code from ui.shadcn.com.\nnpx shadcn@latest init --preset a2r6bw --force\n\n# Switch to a named preset.\nnpx shadcn@latest init --preset radix-nova --force\nnpx shadcn@latest init --reinstall  # update existing components to match\n\n# Use a custom theme URL.\nnpx shadcn@latest init --preset \"https://ui.shadcn.com/init?base=radix&style=nova&theme=blue&...\" --force\n```\n\nOr edit CSS variables directly in `globals.css`.\n\n---\n\n## Adding Custom Colors\n\nAdd variables to the file at `tailwindCssFile` from `npx shadcn@latest info` (typically `globals.css`). Never create a new CSS file for this.\n\n```css\n/* 1. Define in the global CSS file. */\n:root {\n  --warning: oklch(0.84 0.16 84);\n  --warning-foreground: oklch(0.28 0.07 46);\n}\n.dark {\n  --warning: oklch(0.41 0.11 46);\n  --warning-foreground: oklch(0.99 0.02 95);\n}\n```\n\n```css\n/* 2a. Register with Tailwind v4 (@theme inline). */\n@theme inline {\n  --color-warning: var(--warning);\n  --color-warning-foreground: var(--warning-foreground);\n}\n```\n\nWhen `tailwindVersion` is `\"v3\"` (check via `npx shadcn@latest info`), register in `tailwind.config.js` instead:\n\n```js\n// 2b. Register with Tailwind v3 (tailwind.config.js).\nmodule.exports = {\n  theme: {\n    extend: {\n      colors: {\n        warning: \"oklch(var(--warning) / <alpha-value>)\",\n        \"warning-foreground\":\n          \"oklch(var(--warning-foreground) / <alpha-value>)\",\n      },\n    },\n  },\n}\n```\n\n```tsx\n// 3. Use in components.\n<div className=\"bg-warning text-warning-foreground\">Warning</div>\n```\n\n---\n\n## Border Radius\n\n`--radius` controls border radius globally. Components derive values from it (`rounded-lg` = `var(--radius)`, `rounded-md` = `calc(var(--radius) - 2px)`).\n\n---\n\n## Customizing Components\n\nSee also: [rules/styling.md](./rules/styling.md) for Incorrect/Correct examples.\n\nPrefer these approaches in order:\n\n### 1. Built-in variants\n\n```tsx\n<Button variant=\"outline\" size=\"sm\">Click</Button>\n```\n\n### 2. Tailwind classes via `className`\n\n```tsx\n<Card className=\"max-w-md mx-auto\">...</Card>\n```\n\n### 3. Add a new variant\n\nEdit the component source to add a variant via `cva`:\n\n```tsx\n// components/ui/button.tsx\nwarning: \"bg-warning text-warning-foreground hover:bg-warning/90\",\n```\n\n### 4. Wrapper components\n\nCompose shadcn/ui primitives into higher-level components:\n\n```tsx\nexport function ConfirmDialog({ title, description, onConfirm, children }) {\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>{children}</AlertDialogTrigger>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>{title}</AlertDialogTitle>\n          <AlertDialogDescription>{description}</AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>Cancel</AlertDialogCancel>\n          <AlertDialogAction onClick={onConfirm}>Confirm</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  )\n}\n```\n\n---\n\n## Checking for Updates\n\n```bash\nnpx shadcn@latest add button --diff\n```\n\nTo preview exactly what would change before updating, use `--dry-run` and `--diff`:\n\n```bash\nnpx shadcn@latest add button --dry-run        # see all affected files\nnpx shadcn@latest add button --diff button.tsx # see the diff for a specific file\n```\n\nSee [Updating Components in SKILL.md](./SKILL.md#updating-components) for the full smart merge workflow.\n"
  },
  {
    "path": "skills/shadcn/evals/evals.json",
    "content": "{\n  \"skill_name\": \"shadcn\",\n  \"evals\": [\n    {\n      \"id\": 1,\n      \"prompt\": \"I'm building a Next.js app with shadcn/ui (base-nova preset, lucide icons). Create a settings form component with fields for: full name, email address, and notification preferences (email, SMS, push notifications as toggle options). Add validation states for required fields.\",\n      \"expected_output\": \"A React component using FieldGroup, Field, ToggleGroup, data-invalid/aria-invalid validation, gap-* spacing, and semantic colors.\",\n      \"files\": [],\n      \"expectations\": [\n        \"Uses FieldGroup and Field components for form layout instead of raw div with space-y\",\n        \"Uses Switch for independent on/off notification toggles (not looping Button with manual active state)\",\n        \"Uses data-invalid on Field and aria-invalid on the input control for validation states\",\n        \"Uses gap-* (e.g. gap-4, gap-6) instead of space-y-* or space-x-* for spacing\",\n        \"Uses semantic color tokens (e.g. bg-background, text-muted-foreground, text-destructive) instead of raw colors like bg-red-500\",\n        \"No manual dark: color overrides\"\n      ]\n    },\n    {\n      \"id\": 2,\n      \"prompt\": \"Create a dialog component for editing a user profile. It should have the user's avatar at the top, input fields for name and bio, and Save/Cancel buttons with appropriate icons. Using shadcn/ui with radix-nova preset and tabler icons.\",\n      \"expected_output\": \"A React component with DialogTitle, Avatar+AvatarFallback, data-icon on icon buttons, no icon sizing classes, tabler icon imports.\",\n      \"files\": [],\n      \"expectations\": [\n        \"Includes DialogTitle for accessibility (visible or with sr-only class)\",\n        \"Avatar component includes AvatarFallback\",\n        \"Icons on buttons use the data-icon attribute (data-icon=\\\"inline-start\\\" or data-icon=\\\"inline-end\\\")\",\n        \"No sizing classes on icons inside components (no size-4, w-4, h-4, etc.)\",\n        \"Uses tabler icons (@tabler/icons-react) instead of lucide-react\",\n        \"Uses asChild for custom triggers (radix preset)\"\n      ]\n    },\n    {\n      \"id\": 3,\n      \"prompt\": \"Create a dashboard component that shows 4 stat cards in a grid. Each card has a title, large number, percentage change badge, and a loading skeleton state. Using shadcn/ui with base-nova preset and lucide icons.\",\n      \"expected_output\": \"A React component with full Card composition, Skeleton for loading, Badge for changes, semantic colors, gap-* spacing.\",\n      \"files\": [],\n      \"expectations\": [\n        \"Uses full Card composition with CardHeader, CardTitle, CardContent (not dumping everything into CardContent)\",\n        \"Uses Skeleton component for loading placeholders instead of custom animate-pulse divs\",\n        \"Uses Badge component for percentage change instead of custom styled spans\",\n        \"Uses semantic color tokens instead of raw color values like bg-green-500 or text-red-600\",\n        \"Uses gap-* instead of space-y-* or space-x-* for spacing\",\n        \"Uses size-* when width and height are equal instead of separate w-* h-*\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "skills/shadcn/mcp.md",
    "content": "# shadcn MCP Server\n\nThe CLI includes an MCP server that lets AI assistants search, browse, view, and install components from registries.\n\n---\n\n## Setup\n\n```bash\nshadcn mcp        # start the MCP server (stdio)\nshadcn mcp init   # write config for your editor\n```\n\nEditor config files:\n\n| Editor | Config file |\n|--------|------------|\n| Claude Code | `.mcp.json` |\n| Cursor | `.cursor/mcp.json` |\n| VS Code | `.vscode/mcp.json` |\n| OpenCode | `opencode.json` |\n| Codex | `~/.codex/config.toml` (manual) |\n\n---\n\n## Tools\n\n> **Tip:** MCP tools handle registry operations (search, view, install). For project configuration (aliases, framework, Tailwind version), use `npx shadcn@latest info` — there is no MCP equivalent.\n\n### `shadcn:get_project_registries`\n\nReturns registry names from `components.json`. Errors if no `components.json` exists.\n\n**Input:** none\n\n### `shadcn:list_items_in_registries`\n\nLists all items from one or more registries.\n\n**Input:** `registries` (string[]), `limit` (number, optional), `offset` (number, optional)\n\n### `shadcn:search_items_in_registries`\n\nFuzzy search across registries.\n\n**Input:** `registries` (string[]), `query` (string), `limit` (number, optional), `offset` (number, optional)\n\n### `shadcn:view_items_in_registries`\n\nView item details including full file contents.\n\n**Input:** `items` (string[]) — e.g. `[\"@shadcn/button\", \"@shadcn/card\"]`\n\n### `shadcn:get_item_examples_from_registries`\n\nFind usage examples and demos with source code.\n\n**Input:** `registries` (string[]), `query` (string) — e.g. `\"accordion-demo\"`, `\"button example\"`\n\n### `shadcn:get_add_command_for_items`\n\nReturns the CLI install command.\n\n**Input:** `items` (string[]) — e.g. `[\"@shadcn/button\"]`\n\n### `shadcn:get_audit_checklist`\n\nReturns a checklist for verifying components (imports, deps, lint, TypeScript).\n\n**Input:** none\n\n---\n\n## Configuring Registries\n\nRegistries are set in `components.json`. The `@shadcn` registry is always built-in.\n\n```json\n{\n  \"registries\": {\n    \"@acme\": \"https://acme.com/r/{name}.json\",\n    \"@private\": {\n      \"url\": \"https://private.com/r/{name}.json\",\n      \"headers\": { \"Authorization\": \"Bearer ${MY_TOKEN}\" }\n    }\n  }\n}\n```\n\n- Names must start with `@`.\n- URLs must contain `{name}`.\n- `${VAR}` references are resolved from environment variables.\n\nCommunity registry index: `https://ui.shadcn.com/r/registries.json`\n"
  },
  {
    "path": "skills/shadcn/rules/base-vs-radix.md",
    "content": "# Base vs Radix\n\nAPI differences between `base` and `radix`. Check the `base` field from `npx shadcn@latest info`.\n\n## Contents\n\n- Composition: asChild vs render\n- Button / trigger as non-button element\n- Select (items prop, placeholder, positioning, multiple, object values)\n- ToggleGroup (type vs multiple)\n- Slider (scalar vs array)\n- Accordion (type and defaultValue)\n\n---\n\n## Composition: asChild (radix) vs render (base)\n\nRadix uses `asChild` to replace the default element. Base uses `render`. Don't wrap triggers in extra elements.\n\n**Incorrect:**\n\n```tsx\n<DialogTrigger>\n  <div>\n    <Button>Open</Button>\n  </div>\n</DialogTrigger>\n```\n\n**Correct (radix):**\n\n```tsx\n<DialogTrigger asChild>\n  <Button>Open</Button>\n</DialogTrigger>\n```\n\n**Correct (base):**\n\n```tsx\n<DialogTrigger render={<Button />}>Open</DialogTrigger>\n```\n\nThis applies to all trigger and close components: `DialogTrigger`, `SheetTrigger`, `AlertDialogTrigger`, `DropdownMenuTrigger`, `PopoverTrigger`, `TooltipTrigger`, `CollapsibleTrigger`, `DialogClose`, `SheetClose`, `NavigationMenuLink`, `BreadcrumbLink`, `SidebarMenuButton`, `Badge`, `Item`.\n\n---\n\n## Button / trigger as non-button element (base only)\n\nWhen `render` changes an element to a non-button (`<a>`, `<span>`), add `nativeButton={false}`.\n\n**Incorrect (base):** missing `nativeButton={false}`.\n\n```tsx\n<Button render={<a href=\"/docs\" />}>Read the docs</Button>\n```\n\n**Correct (base):**\n\n```tsx\n<Button render={<a href=\"/docs\" />} nativeButton={false}>\n  Read the docs\n</Button>\n```\n\n**Correct (radix):**\n\n```tsx\n<Button asChild>\n  <a href=\"/docs\">Read the docs</a>\n</Button>\n```\n\nSame for triggers whose `render` is not a `Button`:\n\n```tsx\n// base.\n<PopoverTrigger render={<InputGroupAddon />} nativeButton={false}>\n  Pick date\n</PopoverTrigger>\n```\n\n---\n\n## Select\n\n**items prop (base only).** Base requires an `items` prop on the root. Radix uses inline JSX only.\n\n**Incorrect (base):**\n\n```tsx\n<Select>\n  <SelectTrigger><SelectValue placeholder=\"Select a fruit\" /></SelectTrigger>\n</Select>\n```\n\n**Correct (base):**\n\n```tsx\nconst items = [\n  { label: \"Select a fruit\", value: null },\n  { label: \"Apple\", value: \"apple\" },\n  { label: \"Banana\", value: \"banana\" },\n]\n\n<Select items={items}>\n  <SelectTrigger>\n    <SelectValue />\n  </SelectTrigger>\n  <SelectContent>\n    <SelectGroup>\n      {items.map((item) => (\n        <SelectItem key={item.value} value={item.value}>{item.label}</SelectItem>\n      ))}\n    </SelectGroup>\n  </SelectContent>\n</Select>\n```\n\n**Correct (radix):**\n\n```tsx\n<Select>\n  <SelectTrigger>\n    <SelectValue placeholder=\"Select a fruit\" />\n  </SelectTrigger>\n  <SelectContent>\n    <SelectGroup>\n      <SelectItem value=\"apple\">Apple</SelectItem>\n      <SelectItem value=\"banana\">Banana</SelectItem>\n    </SelectGroup>\n  </SelectContent>\n</Select>\n```\n\n**Placeholder.** Base uses a `{ value: null }` item in the items array. Radix uses `<SelectValue placeholder=\"...\">`.\n\n**Content positioning.** Base uses `alignItemWithTrigger`. Radix uses `position`.\n\n```tsx\n// base.\n<SelectContent alignItemWithTrigger={false} side=\"bottom\">\n\n// radix.\n<SelectContent position=\"popper\">\n```\n\n---\n\n## Select — multiple selection and object values (base only)\n\nBase supports `multiple`, render-function children on `SelectValue`, and object values with `itemToStringValue`. Radix is single-select with string values only.\n\n**Correct (base — multiple selection):**\n\n```tsx\n<Select items={items} multiple defaultValue={[]}>\n  <SelectTrigger>\n    <SelectValue>\n      {(value: string[]) => value.length === 0 ? \"Select fruits\" : `${value.length} selected`}\n    </SelectValue>\n  </SelectTrigger>\n  ...\n</Select>\n```\n\n**Correct (base — object values):**\n\n```tsx\n<Select defaultValue={plans[0]} itemToStringValue={(plan) => plan.name}>\n  <SelectTrigger>\n    <SelectValue>{(value) => value.name}</SelectValue>\n  </SelectTrigger>\n  ...\n</Select>\n```\n\n---\n\n## ToggleGroup\n\nBase uses a `multiple` boolean prop. Radix uses `type=\"single\"` or `type=\"multiple\"`.\n\n**Incorrect (base):**\n\n```tsx\n<ToggleGroup type=\"single\" defaultValue=\"daily\">\n  <ToggleGroupItem value=\"daily\">Daily</ToggleGroupItem>\n</ToggleGroup>\n```\n\n**Correct (base):**\n\n```tsx\n// Single (no prop needed), defaultValue is always an array.\n<ToggleGroup defaultValue={[\"daily\"]} spacing={2}>\n  <ToggleGroupItem value=\"daily\">Daily</ToggleGroupItem>\n  <ToggleGroupItem value=\"weekly\">Weekly</ToggleGroupItem>\n</ToggleGroup>\n\n// Multi-selection.\n<ToggleGroup multiple>\n  <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n  <ToggleGroupItem value=\"italic\">Italic</ToggleGroupItem>\n</ToggleGroup>\n```\n\n**Correct (radix):**\n\n```tsx\n// Single, defaultValue is a string.\n<ToggleGroup type=\"single\" defaultValue=\"daily\" spacing={2}>\n  <ToggleGroupItem value=\"daily\">Daily</ToggleGroupItem>\n  <ToggleGroupItem value=\"weekly\">Weekly</ToggleGroupItem>\n</ToggleGroup>\n\n// Multi-selection.\n<ToggleGroup type=\"multiple\">\n  <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n  <ToggleGroupItem value=\"italic\">Italic</ToggleGroupItem>\n</ToggleGroup>\n```\n\n**Controlled single value:**\n\n```tsx\n// base — wrap/unwrap arrays.\nconst [value, setValue] = React.useState(\"normal\")\n<ToggleGroup value={[value]} onValueChange={(v) => setValue(v[0])}>\n\n// radix — plain string.\nconst [value, setValue] = React.useState(\"normal\")\n<ToggleGroup type=\"single\" value={value} onValueChange={setValue}>\n```\n\n---\n\n## Slider\n\nBase accepts a plain number for a single thumb. Radix always requires an array.\n\n**Incorrect (base):**\n\n```tsx\n<Slider defaultValue={[50]} max={100} step={1} />\n```\n\n**Correct (base):**\n\n```tsx\n<Slider defaultValue={50} max={100} step={1} />\n```\n\n**Correct (radix):**\n\n```tsx\n<Slider defaultValue={[50]} max={100} step={1} />\n```\n\nBoth use arrays for range sliders. Controlled `onValueChange` in base may need a cast:\n\n```tsx\n// base.\nconst [value, setValue] = React.useState([0.3, 0.7])\n<Slider value={value} onValueChange={(v) => setValue(v as number[])} />\n\n// radix.\nconst [value, setValue] = React.useState([0.3, 0.7])\n<Slider value={value} onValueChange={setValue} />\n```\n\n---\n\n## Accordion\n\nRadix requires `type=\"single\"` or `type=\"multiple\"` and supports `collapsible`. `defaultValue` is a string. Base uses no `type` prop, uses `multiple` boolean, and `defaultValue` is always an array.\n\n**Incorrect (base):**\n\n```tsx\n<Accordion type=\"single\" collapsible defaultValue=\"item-1\">\n  <AccordionItem value=\"item-1\">...</AccordionItem>\n</Accordion>\n```\n\n**Correct (base):**\n\n```tsx\n<Accordion defaultValue={[\"item-1\"]}>\n  <AccordionItem value=\"item-1\">...</AccordionItem>\n</Accordion>\n\n// Multi-select.\n<Accordion multiple defaultValue={[\"item-1\", \"item-2\"]}>\n  <AccordionItem value=\"item-1\">...</AccordionItem>\n  <AccordionItem value=\"item-2\">...</AccordionItem>\n</Accordion>\n```\n\n**Correct (radix):**\n\n```tsx\n<Accordion type=\"single\" collapsible defaultValue=\"item-1\">\n  <AccordionItem value=\"item-1\">...</AccordionItem>\n</Accordion>\n```\n"
  },
  {
    "path": "skills/shadcn/rules/composition.md",
    "content": "# Component Composition\n\n## Contents\n\n- Items always inside their Group component\n- Callouts use Alert\n- Empty states use Empty component\n- Toast notifications use sonner\n- Choosing between overlay components\n- Dialog, Sheet, and Drawer always need a Title\n- Card structure\n- Button has no isPending or isLoading prop\n- TabsTrigger must be inside TabsList\n- Avatar always needs AvatarFallback\n- Use Separator instead of raw hr or border divs\n- Use Skeleton for loading placeholders\n- Use Badge instead of custom styled spans\n\n---\n\n## Items always inside their Group component\n\nNever render items directly inside the content container.\n\n**Incorrect:**\n\n```tsx\n<SelectContent>\n  <SelectItem value=\"apple\">Apple</SelectItem>\n  <SelectItem value=\"banana\">Banana</SelectItem>\n</SelectContent>\n```\n\n**Correct:**\n\n```tsx\n<SelectContent>\n  <SelectGroup>\n    <SelectItem value=\"apple\">Apple</SelectItem>\n    <SelectItem value=\"banana\">Banana</SelectItem>\n  </SelectGroup>\n</SelectContent>\n```\n\nThis applies to all group-based components:\n\n| Item | Group |\n|------|-------|\n| `SelectItem`, `SelectLabel` | `SelectGroup` |\n| `DropdownMenuItem`, `DropdownMenuLabel`, `DropdownMenuSub` | `DropdownMenuGroup` |\n| `MenubarItem` | `MenubarGroup` |\n| `ContextMenuItem` | `ContextMenuGroup` |\n| `CommandItem` | `CommandGroup` |\n\n---\n\n## Callouts use Alert\n\n```tsx\n<Alert>\n  <AlertTitle>Warning</AlertTitle>\n  <AlertDescription>Something needs attention.</AlertDescription>\n</Alert>\n```\n\n---\n\n## Empty states use Empty component\n\n```tsx\n<Empty>\n  <EmptyHeader>\n    <EmptyMedia variant=\"icon\"><FolderIcon /></EmptyMedia>\n    <EmptyTitle>No projects yet</EmptyTitle>\n    <EmptyDescription>Get started by creating a new project.</EmptyDescription>\n  </EmptyHeader>\n  <EmptyContent>\n    <Button>Create Project</Button>\n  </EmptyContent>\n</Empty>\n```\n\n---\n\n## Toast notifications use sonner\n\n```tsx\nimport { toast } from \"sonner\"\n\ntoast.success(\"Changes saved.\")\ntoast.error(\"Something went wrong.\")\ntoast(\"File deleted.\", {\n  action: { label: \"Undo\", onClick: () => undoDelete() },\n})\n```\n\n---\n\n## Choosing between overlay components\n\n| Use case | Component |\n|----------|-----------|\n| Focused task that requires input | `Dialog` |\n| Destructive action confirmation | `AlertDialog` |\n| Side panel with details or filters | `Sheet` |\n| Mobile-first bottom panel | `Drawer` |\n| Quick info on hover | `HoverCard` |\n| Small contextual content on click | `Popover` |\n\n---\n\n## Dialog, Sheet, and Drawer always need a Title\n\n`DialogTitle`, `SheetTitle`, `DrawerTitle` are required for accessibility. Use `className=\"sr-only\"` if visually hidden.\n\n```tsx\n<DialogContent>\n  <DialogHeader>\n    <DialogTitle>Edit Profile</DialogTitle>\n    <DialogDescription>Update your profile.</DialogDescription>\n  </DialogHeader>\n  ...\n</DialogContent>\n```\n\n---\n\n## Card structure\n\nUse full composition — don't dump everything into `CardContent`:\n\n```tsx\n<Card>\n  <CardHeader>\n    <CardTitle>Team Members</CardTitle>\n    <CardDescription>Manage your team.</CardDescription>\n  </CardHeader>\n  <CardContent>...</CardContent>\n  <CardFooter>\n    <Button>Invite</Button>\n  </CardFooter>\n</Card>\n```\n\n---\n\n## Button has no isPending or isLoading prop\n\nCompose with `Spinner` + `data-icon` + `disabled`:\n\n```tsx\n<Button disabled>\n  <Spinner data-icon=\"inline-start\" />\n  Saving...\n</Button>\n```\n\n---\n\n## TabsTrigger must be inside TabsList\n\nNever render `TabsTrigger` directly inside `Tabs` — always wrap in `TabsList`:\n\n```tsx\n<Tabs defaultValue=\"account\">\n  <TabsList>\n    <TabsTrigger value=\"account\">Account</TabsTrigger>\n    <TabsTrigger value=\"password\">Password</TabsTrigger>\n  </TabsList>\n  <TabsContent value=\"account\">...</TabsContent>\n</Tabs>\n```\n\n---\n\n## Avatar always needs AvatarFallback\n\nAlways include `AvatarFallback` for when the image fails to load:\n\n```tsx\n<Avatar>\n  <AvatarImage src=\"/avatar.png\" alt=\"User\" />\n  <AvatarFallback>JD</AvatarFallback>\n</Avatar>\n```\n\n---\n\n## Use existing components instead of custom markup\n\n| Instead of | Use |\n|---|---|\n| `<hr>` or `<div className=\"border-t\">` | `<Separator />` |\n| `<div className=\"animate-pulse\">` with styled divs | `<Skeleton className=\"h-4 w-3/4\" />` |\n| `<span className=\"rounded-full bg-green-100 ...\">` | `<Badge variant=\"secondary\">` |\n"
  },
  {
    "path": "skills/shadcn/rules/forms.md",
    "content": "# Forms & Inputs\n\n## Contents\n\n- Forms use FieldGroup + Field\n- InputGroup requires InputGroupInput/InputGroupTextarea\n- Buttons inside inputs use InputGroup + InputGroupAddon\n- Option sets (2–7 choices) use ToggleGroup\n- FieldSet + FieldLegend for grouping related fields\n- Field validation and disabled states\n\n---\n\n## Forms use FieldGroup + Field\n\nAlways use `FieldGroup` + `Field` — never raw `div` with `space-y-*`:\n\n```tsx\n<FieldGroup>\n  <Field>\n    <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n    <Input id=\"email\" type=\"email\" />\n  </Field>\n  <Field>\n    <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n    <Input id=\"password\" type=\"password\" />\n  </Field>\n</FieldGroup>\n```\n\nUse `Field orientation=\"horizontal\"` for settings pages. Use `FieldLabel className=\"sr-only\"` for visually hidden labels.\n\n**Choosing form controls:**\n\n- Simple text input → `Input`\n- Dropdown with predefined options → `Select`\n- Searchable dropdown → `Combobox`\n- Native HTML select (no JS) → `native-select`\n- Boolean toggle → `Switch` (for settings) or `Checkbox` (for forms)\n- Single choice from few options → `RadioGroup`\n- Toggle between 2–5 options → `ToggleGroup` + `ToggleGroupItem`\n- OTP/verification code → `InputOTP`\n- Multi-line text → `Textarea`\n\n---\n\n## InputGroup requires InputGroupInput/InputGroupTextarea\n\nNever use raw `Input` or `Textarea` inside an `InputGroup`.\n\n**Incorrect:**\n\n```tsx\n<InputGroup>\n  <Input placeholder=\"Search...\" />\n</InputGroup>\n```\n\n**Correct:**\n\n```tsx\nimport { InputGroup, InputGroupInput } from \"@/components/ui/input-group\"\n\n<InputGroup>\n  <InputGroupInput placeholder=\"Search...\" />\n</InputGroup>\n```\n\n---\n\n## Buttons inside inputs use InputGroup + InputGroupAddon\n\nNever place a `Button` directly inside or adjacent to an `Input` with custom positioning.\n\n**Incorrect:**\n\n```tsx\n<div className=\"relative\">\n  <Input placeholder=\"Search...\" className=\"pr-10\" />\n  <Button className=\"absolute right-0 top-0\" size=\"icon\">\n    <SearchIcon />\n  </Button>\n</div>\n```\n\n**Correct:**\n\n```tsx\nimport { InputGroup, InputGroupInput, InputGroupAddon } from \"@/components/ui/input-group\"\n\n<InputGroup>\n  <InputGroupInput placeholder=\"Search...\" />\n  <InputGroupAddon>\n    <Button size=\"icon\">\n      <SearchIcon data-icon=\"inline-start\" />\n    </Button>\n  </InputGroupAddon>\n</InputGroup>\n```\n\n---\n\n## Option sets (2–7 choices) use ToggleGroup\n\nDon't manually loop `Button` components with active state.\n\n**Incorrect:**\n\n```tsx\nconst [selected, setSelected] = useState(\"daily\")\n\n<div className=\"flex gap-2\">\n  {[\"daily\", \"weekly\", \"monthly\"].map((option) => (\n    <Button\n      key={option}\n      variant={selected === option ? \"default\" : \"outline\"}\n      onClick={() => setSelected(option)}\n    >\n      {option}\n    </Button>\n  ))}\n</div>\n```\n\n**Correct:**\n\n```tsx\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\"\n\n<ToggleGroup spacing={2}>\n  <ToggleGroupItem value=\"daily\">Daily</ToggleGroupItem>\n  <ToggleGroupItem value=\"weekly\">Weekly</ToggleGroupItem>\n  <ToggleGroupItem value=\"monthly\">Monthly</ToggleGroupItem>\n</ToggleGroup>\n```\n\nCombine with `Field` for labelled toggle groups:\n\n```tsx\n<Field orientation=\"horizontal\">\n  <FieldTitle id=\"theme-label\">Theme</FieldTitle>\n  <ToggleGroup aria-labelledby=\"theme-label\" spacing={2}>\n    <ToggleGroupItem value=\"light\">Light</ToggleGroupItem>\n    <ToggleGroupItem value=\"dark\">Dark</ToggleGroupItem>\n    <ToggleGroupItem value=\"system\">System</ToggleGroupItem>\n  </ToggleGroup>\n</Field>\n```\n\n> **Note:** `defaultValue` and `type`/`multiple` props differ between base and radix. See [base-vs-radix.md](./base-vs-radix.md#togglegroup).\n\n---\n\n## FieldSet + FieldLegend for grouping related fields\n\nUse `FieldSet` + `FieldLegend` for related checkboxes, radios, or switches — not `div` with a heading:\n\n```tsx\n<FieldSet>\n  <FieldLegend variant=\"label\">Preferences</FieldLegend>\n  <FieldDescription>Select all that apply.</FieldDescription>\n  <FieldGroup className=\"gap-3\">\n    <Field orientation=\"horizontal\">\n      <Checkbox id=\"dark\" />\n      <FieldLabel htmlFor=\"dark\" className=\"font-normal\">Dark mode</FieldLabel>\n    </Field>\n  </FieldGroup>\n</FieldSet>\n```\n\n---\n\n## Field validation and disabled states\n\nBoth attributes are needed — `data-invalid`/`data-disabled` styles the field (label, description), while `aria-invalid`/`disabled` styles the control.\n\n```tsx\n// Invalid.\n<Field data-invalid>\n  <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n  <Input id=\"email\" aria-invalid />\n  <FieldDescription>Invalid email address.</FieldDescription>\n</Field>\n\n// Disabled.\n<Field data-disabled>\n  <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n  <Input id=\"email\" disabled />\n</Field>\n```\n\nWorks for all controls: `Input`, `Textarea`, `Select`, `Checkbox`, `RadioGroupItem`, `Switch`, `Slider`, `NativeSelect`, `InputOTP`.\n"
  },
  {
    "path": "skills/shadcn/rules/icons.md",
    "content": "# Icons\n\n**Always use the project's configured `iconLibrary` for imports.** Check the `iconLibrary` field from project context: `lucide` → `lucide-react`, `tabler` → `@tabler/icons-react`, etc. Never assume `lucide-react`.\n\n---\n\n## Icons in Button use data-icon attribute\n\nAdd `data-icon=\"inline-start\"` (prefix) or `data-icon=\"inline-end\"` (suffix) to the icon. No sizing classes on the icon.\n\n**Incorrect:**\n\n```tsx\n<Button>\n  <SearchIcon className=\"mr-2 size-4\" />\n  Search\n</Button>\n```\n\n**Correct:**\n\n```tsx\n<Button>\n  <SearchIcon data-icon=\"inline-start\"/>\n  Search\n</Button>\n\n<Button>\n  Next\n  <ArrowRightIcon data-icon=\"inline-end\"/>\n</Button>\n```\n\n---\n\n## No sizing classes on icons inside components\n\nComponents handle icon sizing via CSS. Don't add `size-4`, `w-4 h-4`, or other sizing classes to icons inside `Button`, `DropdownMenuItem`, `Alert`, `Sidebar*`, or other shadcn components. Unless the user explicitly asks for custom icon sizes.\n\n**Incorrect:**\n\n```tsx\n<Button>\n  <SearchIcon className=\"size-4\" data-icon=\"inline-start\" />\n  Search\n</Button>\n\n<DropdownMenuItem>\n  <SettingsIcon className=\"mr-2 size-4\" />\n  Settings\n</DropdownMenuItem>\n```\n\n**Correct:**\n\n```tsx\n<Button>\n  <SearchIcon data-icon=\"inline-start\" />\n  Search\n</Button>\n\n<DropdownMenuItem>\n  <SettingsIcon />\n  Settings\n</DropdownMenuItem>\n```\n\n---\n\n## Pass icons as component objects, not string keys\n\nUse `icon={CheckIcon}`, not a string key to a lookup map.\n\n**Incorrect:**\n\n```tsx\nconst iconMap = {\n  check: CheckIcon,\n  alert: AlertIcon,\n}\n\nfunction StatusBadge({ icon }: { icon: string }) {\n  const Icon = iconMap[icon]\n  return <Icon />\n}\n\n<StatusBadge icon=\"check\" />\n```\n\n**Correct:**\n\n```tsx\n// Import from the project's configured iconLibrary (e.g. lucide-react, @tabler/icons-react).\nimport { CheckIcon } from \"lucide-react\"\n\nfunction StatusBadge({ icon: Icon }: { icon: React.ComponentType }) {\n  return <Icon />\n}\n\n<StatusBadge icon={CheckIcon} />\n```\n"
  },
  {
    "path": "skills/shadcn/rules/styling.md",
    "content": "# Styling & Customization\n\nSee [customization.md](../customization.md) for theming, CSS variables, and adding custom colors.\n\n## Contents\n\n- Semantic colors\n- Built-in variants first\n- className for layout only\n- No space-x-* / space-y-*\n- Prefer size-* over w-* h-* when equal\n- Prefer truncate shorthand\n- No manual dark: color overrides\n- Use cn() for conditional classes\n- No manual z-index on overlay components\n\n---\n\n## Semantic colors\n\n**Incorrect:**\n\n```tsx\n<div className=\"bg-blue-500 text-white\">\n  <p className=\"text-gray-600\">Secondary text</p>\n</div>\n```\n\n**Correct:**\n\n```tsx\n<div className=\"bg-primary text-primary-foreground\">\n  <p className=\"text-muted-foreground\">Secondary text</p>\n</div>\n```\n\n---\n\n## No raw color values for status/state indicators\n\nFor positive, negative, or status indicators, use Badge variants, semantic tokens like `text-destructive`, or define custom CSS variables — don't reach for raw Tailwind colors.\n\n**Incorrect:**\n\n```tsx\n<span className=\"text-emerald-600\">+20.1%</span>\n<span className=\"text-green-500\">Active</span>\n<span className=\"text-red-600\">-3.2%</span>\n```\n\n**Correct:**\n\n```tsx\n<Badge variant=\"secondary\">+20.1%</Badge>\n<Badge>Active</Badge>\n<span className=\"text-destructive\">-3.2%</span>\n```\n\nIf you need a success/positive color that doesn't exist as a semantic token, use a Badge variant or ask the user about adding a custom CSS variable to the theme (see [customization.md](../customization.md)).\n\n---\n\n## Built-in variants first\n\n**Incorrect:**\n\n```tsx\n<Button className=\"border border-input bg-transparent hover:bg-accent\">\n  Click me\n</Button>\n```\n\n**Correct:**\n\n```tsx\n<Button variant=\"outline\">Click me</Button>\n```\n\n---\n\n## className for layout only\n\nUse `className` for layout (e.g. `max-w-md`, `mx-auto`, `mt-4`), **not** for overriding component colors or typography. To change colors, use semantic tokens, built-in variants, or CSS variables.\n\n**Incorrect:**\n\n```tsx\n<Card className=\"bg-blue-100 text-blue-900 font-bold\">\n  <CardContent>Dashboard</CardContent>\n</Card>\n```\n\n**Correct:**\n\n```tsx\n<Card className=\"max-w-md mx-auto\">\n  <CardContent>Dashboard</CardContent>\n</Card>\n```\n\nTo customize a component's appearance, prefer these approaches in order:\n1. **Built-in variants** — `variant=\"outline\"`, `variant=\"destructive\"`, etc.\n2. **Semantic color tokens** — `bg-primary`, `text-muted-foreground`.\n3. **CSS variables** — define custom colors in the global CSS file (see [customization.md](../customization.md)).\n\n---\n\n## No space-x-* / space-y-*\n\nUse `gap-*` instead. `space-y-4` → `flex flex-col gap-4`. `space-x-2` → `flex gap-2`.\n\n```tsx\n<div className=\"flex flex-col gap-4\">\n  <Input />\n  <Input />\n  <Button>Submit</Button>\n</div>\n```\n\n---\n\n## Prefer size-* over w-* h-* when equal\n\n`size-10` not `w-10 h-10`. Applies to icons, avatars, skeletons, etc.\n\n---\n\n## Prefer truncate shorthand\n\n`truncate` not `overflow-hidden text-ellipsis whitespace-nowrap`.\n\n---\n\n## No manual dark: color overrides\n\nUse semantic tokens — they handle light/dark via CSS variables. `bg-background text-foreground` not `bg-white dark:bg-gray-950`.\n\n---\n\n## Use cn() for conditional classes\n\nUse the `cn()` utility from the project for conditional or merged class names. Don't write manual ternaries in className strings.\n\n**Incorrect:**\n\n```tsx\n<div className={`flex items-center ${isActive ? \"bg-primary text-primary-foreground\" : \"bg-muted\"}`}>\n```\n\n**Correct:**\n\n```tsx\nimport { cn } from \"@/lib/utils\"\n\n<div className={cn(\"flex items-center\", isActive ? \"bg-primary text-primary-foreground\" : \"bg-muted\")}>\n```\n\n---\n\n## No manual z-index on overlay components\n\n`Dialog`, `Sheet`, `Drawer`, `AlertDialog`, `DropdownMenu`, `Popover`, `Tooltip`, `HoverCard` handle their own stacking. Never add `z-50` or `z-[999]`.\n"
  },
  {
    "path": "templates/astro-app/.gitignore",
    "content": "# build output\ndist/\n# generated types\n.astro/\n\n# dependencies\nnode_modules/\n\n# logs\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\n\n# environment variables\n.env\n.env.production\n\n# macOS-specific files\n.DS_Store\n\n# jetbrains setting folder\n.idea/\n"
  },
  {
    "path": "templates/astro-app/.prettierignore",
    "content": "node_modules/\ncoverage/\n.pnpm-store/\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\n"
  },
  {
    "path": "templates/astro-app/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-astro\", \"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"src/styles/global.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"],\n  \"overrides\": [\n    {\n      \"files\": \"*.astro\",\n      \"options\": {\n        \"parser\": \"astro\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "templates/astro-app/README.md",
    "content": "# Astro + React + TypeScript + shadcn/ui\n\nThis is a template for a new Astro project with React, TypeScript, and shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command:\n\n```bash\nnpx shadcn@latest add button\n```\n\nThis will place the ui components in the `src/components` directory.\n\n## Using components\n\nTo use the components in your app, import them in an `.astro` file:\n\n```astro\n---\nimport { Button } from \"@/components/ui/button\"\n---\n\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width\" />\n    <title>Astro App</title>\n  </head>\n  <body>\n    <div class=\"grid h-screen place-items-center content-center\">\n      <Button>Button</Button>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "templates/astro-app/astro.config.mjs",
    "content": "// @ts-check\n\nimport tailwindcss from \"@tailwindcss/vite\"\nimport { defineConfig } from \"astro/config\"\nimport react from \"@astrojs/react\"\n\n// https://astro.build/config\nexport default defineConfig({\n  vite: {\n    plugins: [tailwindcss()],\n  },\n  integrations: [react()],\n})\n"
  },
  {
    "path": "templates/astro-app/eslint.config.js",
    "content": "import js from \"@eslint/js\"\nimport globals from \"globals\"\nimport reactHooks from \"eslint-plugin-react-hooks\"\nimport reactRefresh from \"eslint-plugin-react-refresh\"\nimport tseslint from \"typescript-eslint\"\nimport { defineConfig, globalIgnores } from \"eslint/config\"\n\nexport default defineConfig([\n  globalIgnores([\"dist\", \".astro\"]),\n  {\n    files: [\"**/*.{ts,tsx}\"],\n    extends: [\n      js.configs.recommended,\n      tseslint.configs.recommended,\n      reactHooks.configs.flat.recommended,\n      reactRefresh.configs.vite,\n    ],\n    languageOptions: {\n      ecmaVersion: 2020,\n      globals: globals.browser,\n    },\n  },\n])\n"
  },
  {
    "path": "templates/astro-app/package.json",
    "content": "{\n  \"name\": \"astro-app\",\n  \"type\": \"module\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"astro dev\",\n    \"build\": \"astro build\",\n    \"preview\": \"astro preview\",\n    \"astro\": \"astro\",\n    \"lint\": \"eslint .\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx,astro}\\\"\",\n    \"typecheck\": \"astro check\"\n  },\n  \"dependencies\": {\n    \"@astrojs/react\": \"^4.4.2\",\n    \"@tailwindcss/vite\": \"^4.2.1\",\n    \"@types/react\": \"^19.2.14\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"astro\": \"^5.18.1\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"tailwindcss\": \"^4.2.1\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.39.4\",\n    \"eslint\": \"^9.39.4\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"eslint-plugin-react-refresh\": \"^0.5.2\",\n    \"globals\": \"^16.5.0\",\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-astro\": \"^0.14.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"typescript\": \"~5.9.3\",\n    \"typescript-eslint\": \"^8.57.1\"\n  }\n}\n"
  },
  {
    "path": "templates/astro-app/src/layouts/main.astro",
    "content": "---\nimport \"@/styles/global.css\"\n---\n\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\" />\n    <title>Astro App</title>\n  </head>\n  <body>\n    <slot />\n  </body>\n</html>\n"
  },
  {
    "path": "templates/astro-app/src/pages/index.astro",
    "content": "---\nimport Layout from \"@/layouts/main.astro\"\nimport { Button } from \"@/components/ui/button\"\n---\n\n<Layout>\n  <div class=\"flex min-h-svh p-6\">\n    <div class=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n      <div>\n        <h1 class=\"font-medium\">Project ready!</h1>\n        <p>You may now add components and start building.</p>\n        <p>We've already added the button component for you.</p>\n        <Button client:load className=\"mt-2\">Button</Button>\n      </div>\n    </div>\n  </div>\n</Layout>\n"
  },
  {
    "path": "templates/astro-app/src/styles/global.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "templates/astro-app/tsconfig.json",
    "content": "{\n  \"extends\": \"astro/tsconfigs/strict\",\n  \"include\": [\".astro/types.d.ts\", \"**/*\"],\n  \"exclude\": [\"dist\"],\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"react\",\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "templates/astro-monorepo/.gitignore",
    "content": "# Dependencies\nnode_modules\n.pnp\n.pnp.js\n\n# Local env files\n.env\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# Testing\ncoverage\n\n# Turbo\n.turbo\n\n# Vercel\n.vercel\n\n# Build Outputs\ndist\n\n# Astro\n.astro\n\n# Debug\nnpm-debug.log*\n\n# Misc\n.DS_Store\n*.pem\n"
  },
  {
    "path": "templates/astro-monorepo/.npmrc",
    "content": "\n"
  },
  {
    "path": "templates/astro-monorepo/.prettierignore",
    "content": "dist/\nnode_modules/\n.turbo/\ncoverage/\npnpm-lock.yaml\n.pnpm-store/\n"
  },
  {
    "path": "templates/astro-monorepo/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-astro\", \"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"packages/ui/src/styles/globals.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"],\n  \"overrides\": [\n    {\n      \"files\": \"*.astro\",\n      \"options\": {\n        \"parser\": \"astro\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "templates/astro-monorepo/README.md",
    "content": "# Astro + React + TypeScript + shadcn/ui (Monorepo)\n\nThis is a monorepo template for Astro with React, TypeScript, and shadcn/ui.\n\n## Structure\n\n- `apps/web` - Astro application\n- `packages/ui` - Shared UI components (shadcn/ui)\n\n## Adding components\n\nTo add components, run the following command from the root:\n\n```bash\nnpx shadcn@latest add button -c apps/web\n```\n\n## Using components\n\nTo use the components in your app, import them in an `.astro` file:\n\n```astro\n---\nimport { Button } from \"@workspace/ui/components/button\"\n---\n\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width\" />\n    <title>Astro App</title>\n  </head>\n  <body>\n    <div class=\"grid h-screen place-items-center content-center\">\n      <Button>Button</Button>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "templates/astro-monorepo/apps/web/astro.config.mjs",
    "content": "// @ts-check\n\nimport tailwindcss from \"@tailwindcss/vite\"\nimport { defineConfig } from \"astro/config\"\nimport react from \"@astrojs/react\"\n\n// https://astro.build/config\nexport default defineConfig({\n  vite: {\n    plugins: [tailwindcss()],\n  },\n  integrations: [react()],\n})\n"
  },
  {
    "path": "templates/astro-monorepo/apps/web/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"../../packages/ui/src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"hooks\": \"@/hooks\",\n    \"lib\": \"@/lib\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n"
  },
  {
    "path": "templates/astro-monorepo/apps/web/eslint.config.js",
    "content": "import js from \"@eslint/js\"\nimport globals from \"globals\"\nimport reactHooks from \"eslint-plugin-react-hooks\"\nimport reactRefresh from \"eslint-plugin-react-refresh\"\nimport tseslint from \"typescript-eslint\"\nimport { defineConfig, globalIgnores } from \"eslint/config\"\n\nexport default defineConfig([\n  globalIgnores([\"dist\", \".astro\"]),\n  {\n    files: [\"**/*.{ts,tsx}\"],\n    extends: [\n      js.configs.recommended,\n      tseslint.configs.recommended,\n      reactHooks.configs.flat.recommended,\n      reactRefresh.configs.vite,\n    ],\n    languageOptions: {\n      ecmaVersion: 2020,\n      globals: globals.browser,\n    },\n  },\n])\n"
  },
  {
    "path": "templates/astro-monorepo/apps/web/package.json",
    "content": "{\n  \"name\": \"web\",\n  \"version\": \"0.0.1\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"astro dev\",\n    \"build\": \"astro build\",\n    \"preview\": \"astro preview\",\n    \"astro\": \"astro\",\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx,astro}\\\"\",\n    \"typecheck\": \"astro check\"\n  },\n  \"dependencies\": {\n    \"@astrojs/react\": \"^4.4.2\",\n    \"@types/react\": \"^19.2.14\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@workspace/ui\": \"workspace:*\",\n    \"astro\": \"^5.17.1\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.39.2\",\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"@types/node\": \"^25.1.0\",\n    \"eslint\": \"^9.39.2\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"eslint-plugin-react-refresh\": \"^0.4.24\",\n    \"globals\": \"^17.2.0\",\n    \"typescript\": \"^5.9.3\",\n    \"typescript-eslint\": \"^8.54.0\"\n  }\n}\n"
  },
  {
    "path": "templates/astro-monorepo/apps/web/src/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/astro-monorepo/apps/web/src/layouts/main.astro",
    "content": "---\nimport \"@workspace/ui/globals.css\"\n---\n\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\" />\n    <title>Astro App</title>\n  </head>\n  <body>\n    <slot />\n  </body>\n</html>\n"
  },
  {
    "path": "templates/astro-monorepo/apps/web/src/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/astro-monorepo/apps/web/src/pages/index.astro",
    "content": "---\nimport \"@workspace/ui/globals.css\"\nimport { Button } from \"@workspace/ui/components/button\"\n---\n\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\" />\n    <title>Astro App</title>\n  </head>\n  <body>\n    <div class=\"flex min-h-svh p-6\">\n      <div class=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 class=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We've already added the button component for you.</p>\n          <Button client:load className=\"mt-2\">Button</Button>\n        </div>\n      </div>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "templates/astro-monorepo/apps/web/tsconfig.json",
    "content": "{\n  \"extends\": \"astro/tsconfigs/strict\",\n  \"include\": [\".astro/types.d.ts\", \"**/*\"],\n  \"exclude\": [\"dist\"],\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"react\",\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"],\n      \"@workspace/ui/*\": [\"../../packages/ui/src/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "templates/astro-monorepo/package.json",
    "content": "{\n  \"name\": \"astro-monorepo\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\",\n    \"lint\": \"turbo lint\",\n    \"format\": \"turbo format\",\n    \"typecheck\": \"turbo typecheck\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-astro\": \"^0.14.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"turbo\": \"^2.8.17\",\n    \"typescript\": \"5.9.3\"\n  },\n  \"packageManager\": \"pnpm@9.15.9\",\n  \"engines\": {\n    \"node\": \">=20\"\n  }\n}\n"
  },
  {
    "path": "templates/astro-monorepo/packages/ui/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@workspace/ui/components\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"hooks\": \"@workspace/ui/hooks\",\n    \"lib\": \"@workspace/ui/lib\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n"
  },
  {
    "path": "templates/astro-monorepo/packages/ui/eslint.config.js",
    "content": "import js from \"@eslint/js\"\nimport globals from \"globals\"\nimport reactHooks from \"eslint-plugin-react-hooks\"\nimport reactRefresh from \"eslint-plugin-react-refresh\"\nimport tseslint from \"typescript-eslint\"\nimport { defineConfig, globalIgnores } from \"eslint/config\"\n\nexport default defineConfig([\n  globalIgnores([\"dist\"]),\n  {\n    files: [\"**/*.{ts,tsx}\"],\n    extends: [\n      js.configs.recommended,\n      tseslint.configs.recommended,\n      reactHooks.configs.flat.recommended,\n      reactRefresh.configs.vite,\n    ],\n    languageOptions: {\n      ecmaVersion: 2020,\n      globals: globals.browser,\n    },\n  },\n])\n"
  },
  {
    "path": "templates/astro-monorepo/packages/ui/package.json",
    "content": "{\n  \"name\": \"@workspace/ui\",\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"zod\": \"^3.25.76\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"@turbo/gen\": \"^2.8.1\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@eslint/js\": \"^9.39.2\",\n    \"eslint\": \"^9.39.2\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"eslint-plugin-react-refresh\": \"^0.4.24\",\n    \"globals\": \"^17.2.0\",\n    \"typescript-eslint\": \"^8.54.0\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"exports\": {\n    \"./globals.css\": \"./src/styles/globals.css\",\n    \"./lib/*\": \"./src/lib/*.ts\",\n    \"./components/*\": \"./src/components/*.tsx\",\n    \"./hooks/*\": \"./src/hooks/*.ts\"\n  }\n}\n"
  },
  {
    "path": "templates/astro-monorepo/packages/ui/src/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/astro-monorepo/packages/ui/src/hooks/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/astro-monorepo/packages/ui/src/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/astro-monorepo/packages/ui/src/styles/globals.css",
    "content": "@import \"tailwindcss\";\n@source \"../../../apps/**/*.{ts,tsx,astro}\";\n@source \"../../../components/**/*.{ts,tsx}\";\n@source \"../**/*.{ts,tsx}\";\n"
  },
  {
    "path": "templates/astro-monorepo/packages/ui/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@workspace/ui/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\".\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/astro-monorepo/packages/ui/tsconfig.lint.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"src\", \"turbo\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/astro-monorepo/pnpm-workspace.yaml",
    "content": "packages:\n  - \"apps/*\"\n  - \"packages/*\"\n"
  },
  {
    "path": "templates/astro-monorepo/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"skipLibCheck\": true,\n    \"strict\": true\n  }\n}\n"
  },
  {
    "path": "templates/astro-monorepo/turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"ui\": \"tui\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"outputs\": [\"dist/**\"]\n    },\n    \"lint\": { \"dependsOn\": [\"^lint\"] },\n    \"format\": { \"dependsOn\": [\"^format\"] },\n    \"typecheck\": { \"dependsOn\": [\"^typecheck\"] },\n    \"dev\": { \"cache\": false, \"persistent\": true }\n  }\n}\n"
  },
  {
    "path": "templates/next-app/.gitignore",
    "content": "# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\n\n# env files\n.env*.local\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "templates/next-app/.prettierignore",
    "content": "dist/\nnode_modules/\n.next/\n.turbo/\ncoverage/\npnpm-lock.yaml\n.pnpm-store/"
  },
  {
    "path": "templates/next-app/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"app/globals.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"]\n}\n"
  },
  {
    "path": "templates/next-app/README.md",
    "content": "# Next.js template\n\nThis is a Next.js template with shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command:\n\n```bash\nnpx shadcn@latest add button\n```\n\nThis will place the ui components in the `components` directory.\n\n## Using components\n\nTo use the components in your app, import them as follows:\n\n```tsx\nimport { Button } from \"@/components/ui/button\";\n```\n"
  },
  {
    "path": "templates/next-app/app/globals.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "templates/next-app/app/layout.tsx",
    "content": "import { Geist, Geist_Mono } from \"next/font/google\"\n\nimport \"./globals.css\"\nimport { ThemeProvider } from \"@/components/theme-provider\"\n\nconst fontSans = Geist({\n  subsets: [\"latin\"],\n  variable: \"--font-sans\",\n})\n\nconst fontMono = Geist_Mono({\n  subsets: [\"latin\"],\n  variable: \"--font-mono\",\n})\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode\n}>) {\n  return (\n    <html\n      lang=\"en\"\n      suppressHydrationWarning\n      className={`${fontSans.variable} ${fontMono.variable} font-sans antialiased`}\n    >\n      <body>\n        <ThemeProvider>{children}</ThemeProvider>\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "templates/next-app/app/page.tsx",
    "content": "import { Button } from \"@/components/ui/button\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex min-h-svh p-6\">\n      <div className=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 className=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We&apos;ve already added the button component for you.</p>\n          <Button className=\"mt-2\">Button</Button>\n        </div>\n        <div className=\"font-mono text-xs text-muted-foreground\">\n          (Press <kbd>d</kbd> to toggle dark mode)\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "templates/next-app/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-app/components/theme-provider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ThemeProvider as NextThemesProvider, useTheme } from \"next-themes\"\n\nfunction ThemeProvider({\n  children,\n  ...props\n}: React.ComponentProps<typeof NextThemesProvider>) {\n  return (\n    <NextThemesProvider\n      attribute=\"class\"\n      defaultTheme=\"system\"\n      enableSystem\n      disableTransitionOnChange\n      {...props}\n    >\n      <ThemeHotkey />\n      {children}\n    </NextThemesProvider>\n  )\n}\n\nfunction isTypingTarget(target: EventTarget | null) {\n  if (!(target instanceof HTMLElement)) {\n    return false\n  }\n\n  return (\n    target.isContentEditable ||\n    target.tagName === \"INPUT\" ||\n    target.tagName === \"TEXTAREA\" ||\n    target.tagName === \"SELECT\"\n  )\n}\n\nfunction ThemeHotkey() {\n  const { resolvedTheme, setTheme } = useTheme()\n\n  React.useEffect(() => {\n    function onKeyDown(event: KeyboardEvent) {\n      if (event.defaultPrevented || event.repeat) {\n        return\n      }\n\n      if (event.metaKey || event.ctrlKey || event.altKey) {\n        return\n      }\n\n      if (event.key.toLowerCase() !== \"d\") {\n        return\n      }\n\n      if (isTypingTarget(event.target)) {\n        return\n      }\n\n      setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n    }\n\n    window.addEventListener(\"keydown\", onKeyDown)\n\n    return () => {\n      window.removeEventListener(\"keydown\", onKeyDown)\n    }\n  }, [resolvedTheme, setTheme])\n\n  return null\n}\n\nexport { ThemeProvider }\n"
  },
  {
    "path": "templates/next-app/eslint.config.mjs",
    "content": "import { defineConfig, globalIgnores } from \"eslint/config\";\nimport nextVitals from \"eslint-config-next/core-web-vitals\";\nimport nextTs from \"eslint-config-next/typescript\";\n\nconst eslintConfig = defineConfig([\n  ...nextVitals,\n  ...nextTs,\n  // Override default ignores of eslint-config-next.\n  globalIgnores([\n    // Default ignores of eslint-config-next:\n    \".next/**\",\n    \"out/**\",\n    \"build/**\",\n    \"next-env.d.ts\",\n  ]),\n]);\n\nexport default eslintConfig;\n"
  },
  {
    "path": "templates/next-app/hooks/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-app/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-app/next.config.mjs",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {}\n\nexport default nextConfig\n"
  },
  {
    "path": "templates/next-app/package.json",
    "content": "{\n  \"name\": \"next-app\",\n  \"version\": \"0.0.1\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev --turbopack\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"next\": \"16.1.7\",\n    \"next-themes\": \"^0.4.6\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\"\n  },\n  \"devDependencies\": {\n    \"@eslint/eslintrc\": \"^3\",\n    \"@tailwindcss/postcss\": \"^4.2.1\",\n    \"@types/node\": \"^25.5.0\",\n    \"@types/react\": \"^19.2.14\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"eslint\": \"^9.39.4\",\n    \"eslint-config-next\": \"16.1.7\",\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"^4.2.1\",\n    \"typescript\": \"^5.9.3\"\n  }\n}\n"
  },
  {
    "path": "templates/next-app/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: {\n    \"@tailwindcss/postcss\": {},\n  },\n}\n\nexport default config\n"
  },
  {
    "path": "templates/next-app/public/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-app/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"react-jsx\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\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": "templates/next-monorepo/.eslintrc.js",
    "content": "// Root-level ESLint config for a Turborepo workspace.\n// App/package lint rules live in each workspace's eslint.config.js.\n/** @type {import(\"eslint\").Linter.Config} */\nmodule.exports = {\n  root: true,\n  ignorePatterns: [\n    \"**/node_modules/**\",\n    \"**/.next/**\",\n    \"**/dist/**\",\n    \"**/.turbo/**\",\n    \"**/coverage/**\",\n  ],\n}\n"
  },
  {
    "path": "templates/next-monorepo/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# Dependencies\nnode_modules\n.pnp\n.pnp.js\n\n# Local env files\n.env\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# Testing\ncoverage\n\n# Turbo\n.turbo\n\n# Vercel\n.vercel\n\n# Build Outputs\n.next/\nout/\nbuild\ndist\n\n\n# Debug\nnpm-debug.log*\n\n# Misc\n.DS_Store\n*.pem\n"
  },
  {
    "path": "templates/next-monorepo/.npmrc",
    "content": ""
  },
  {
    "path": "templates/next-monorepo/.prettierignore",
    "content": "dist/\nnode_modules/\n.next/\n.turbo/\ncoverage/\npnpm-lock.yaml\n.pnpm-store/"
  },
  {
    "path": "templates/next-monorepo/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"packages/ui/src/styles/globals.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"]\n}\n"
  },
  {
    "path": "templates/next-monorepo/README.md",
    "content": "# shadcn/ui monorepo template\n\nThis is a Next.js monorepo template with shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command at the root of your `web` app:\n\n```bash\npnpm dlx shadcn@latest add button -c apps/web\n```\n\nThis will place the ui components in the `packages/ui/src/components` directory.\n\n## Using components\n\nTo use the components in your app, import them from the `ui` package.\n\n```tsx\nimport { Button } from \"@workspace/ui/components/button\";\n```\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/app/layout.tsx",
    "content": "import { Geist, Geist_Mono } from \"next/font/google\"\n\nimport \"@workspace/ui/globals.css\"\nimport { ThemeProvider } from \"@/components/theme-provider\"\n\nconst fontSans = Geist({\n  subsets: [\"latin\"],\n  variable: \"--font-sans\",\n})\n\nconst fontMono = Geist_Mono({\n  subsets: [\"latin\"],\n  variable: \"--font-mono\",\n})\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode\n}>) {\n  return (\n    <html\n      lang=\"en\"\n      suppressHydrationWarning\n      className={`${fontSans.variable} ${fontMono.variable} font-sans antialiased`}\n    >\n      <body>\n        <ThemeProvider>{children}</ThemeProvider>\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/app/page.tsx",
    "content": "import { Button } from \"@workspace/ui/components/button\"\n\nexport default function Page() {\n  return (\n    <div className=\"flex min-h-svh p-6\">\n      <div className=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 className=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We&apos;ve already added the button component for you.</p>\n          <Button className=\"mt-2\">Button</Button>\n        </div>\n        <div className=\"text-muted-foreground font-mono text-xs\">\n          (Press <kbd>d</kbd> to toggle dark mode)\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-monorepo/apps/web/components/theme-provider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ThemeProvider as NextThemesProvider, useTheme } from \"next-themes\"\n\nfunction ThemeProvider({\n  children,\n  ...props\n}: React.ComponentProps<typeof NextThemesProvider>) {\n  return (\n    <NextThemesProvider\n      attribute=\"class\"\n      defaultTheme=\"system\"\n      enableSystem\n      disableTransitionOnChange\n      {...props}\n    >\n      <ThemeHotkey />\n      {children}\n    </NextThemesProvider>\n  )\n}\n\nfunction isTypingTarget(target: EventTarget | null) {\n  if (!(target instanceof HTMLElement)) {\n    return false\n  }\n\n  return (\n    target.isContentEditable ||\n    target.tagName === \"INPUT\" ||\n    target.tagName === \"TEXTAREA\" ||\n    target.tagName === \"SELECT\"\n  )\n}\n\nfunction ThemeHotkey() {\n  const { resolvedTheme, setTheme } = useTheme()\n\n  React.useEffect(() => {\n    function onKeyDown(event: KeyboardEvent) {\n      if (event.defaultPrevented || event.repeat) {\n        return\n      }\n\n      if (event.metaKey || event.ctrlKey || event.altKey) {\n        return\n      }\n\n      if (event.key.toLowerCase() !== \"d\") {\n        return\n      }\n\n      if (isTypingTarget(event.target)) {\n        return\n      }\n\n      setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\")\n    }\n\n    window.addEventListener(\"keydown\", onKeyDown)\n\n    return () => {\n      window.removeEventListener(\"keydown\", onKeyDown)\n    }\n  }, [resolvedTheme, setTheme])\n\n  return null\n}\n\nexport { ThemeProvider }\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"../../packages/ui/src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"hooks\": \"@/hooks\",\n    \"lib\": \"@/lib\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/eslint.config.js",
    "content": "import { nextJsConfig } from \"@workspace/eslint-config/next-js\"\n\n/** @type {import(\"eslint\").Linter.Config} */\nexport default nextJsConfig\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/hooks/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-monorepo/apps/web/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-monorepo/apps/web/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\nimport \"./.next/dev/types/routes.d.ts\"\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/next.config.mjs",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  transpilePackages: [\"@workspace/ui\"],\n}\n\nexport default nextConfig\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/package.json",
    "content": "{\n  \"name\": \"web\",\n  \"version\": \"0.0.1\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev --turbopack\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"@workspace/ui\": \"workspace:*\",\n    \"next\": \"16.1.6\",\n    \"next-themes\": \"^0.4.6\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/postcss\": \"^4.1.18\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@workspace/eslint-config\": \"workspace:^\",\n    \"@workspace/typescript-config\": \"workspace:*\",\n    \"eslint\": \"^9.39.2\",\n    \"typescript\": \"^5.9.3\"\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/apps/web/postcss.config.mjs",
    "content": "export { default } from \"@workspace/ui/postcss.config\";"
  },
  {
    "path": "templates/next-monorepo/apps/web/tsconfig.json",
    "content": "{\n  \"extends\": \"@workspace/typescript-config/nextjs.json\",\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./*\"],\n      \"@workspace/ui/*\": [\"../../packages/ui/src/*\"]\n    },\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ]\n  },\n  \"include\": [\n    \"next-env.d.ts\",\n    \"next.config.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \".next/types/**/*.ts\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "templates/next-monorepo/package.json",
    "content": "{\n  \"name\": \"next-monorepo\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\",\n    \"lint\": \"turbo lint\",\n    \"format\": \"turbo format\",\n    \"typecheck\": \"turbo typecheck\"\n  },\n  \"devDependencies\": {\n    \"@workspace/eslint-config\": \"workspace:*\",\n    \"@workspace/typescript-config\": \"workspace:*\",\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"turbo\": \"^2.8.17\",\n    \"typescript\": \"5.9.3\"\n  },\n  \"packageManager\": \"pnpm@9.15.9\",\n  \"engines\": {\n    \"node\": \">=20\"\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/eslint-config/README.md",
    "content": "# `@workspace/eslint-config`\n\nShared eslint configuration for the workspace.\n"
  },
  {
    "path": "templates/next-monorepo/packages/eslint-config/base.js",
    "content": "import js from \"@eslint/js\"\nimport eslintConfigPrettier from \"eslint-config-prettier\"\nimport onlyWarn from \"eslint-plugin-only-warn\"\nimport turboPlugin from \"eslint-plugin-turbo\"\nimport tseslint from \"typescript-eslint\"\n\n/**\n * A shared ESLint configuration for the repository.\n *\n * @type {import(\"eslint\").Linter.Config}\n * */\nexport const config = [\n  js.configs.recommended,\n  eslintConfigPrettier,\n  ...tseslint.configs.recommended,\n  {\n    plugins: {\n      turbo: turboPlugin,\n    },\n    rules: {\n      \"turbo/no-undeclared-env-vars\": \"warn\",\n    },\n  },\n  {\n    plugins: {\n      onlyWarn,\n    },\n  },\n  {\n    ignores: [\"dist/**\", \".next/**\", \"**/.turbo/**\", \"**/coverage/**\"],\n  },\n]\n"
  },
  {
    "path": "templates/next-monorepo/packages/eslint-config/next.js",
    "content": "import js from \"@eslint/js\"\nimport pluginNext from \"@next/eslint-plugin-next\"\nimport eslintConfigPrettier from \"eslint-config-prettier\"\nimport pluginReact from \"eslint-plugin-react\"\nimport pluginReactHooks from \"eslint-plugin-react-hooks\"\nimport globals from \"globals\"\nimport tseslint from \"typescript-eslint\"\n\nimport { config as baseConfig } from \"./base.js\"\n\n/**\n * A custom ESLint configuration for libraries that use Next.js.\n *\n * @type {import(\"eslint\").Linter.Config}\n * */\nexport const nextJsConfig = [\n  ...baseConfig,\n  js.configs.recommended,\n  eslintConfigPrettier,\n  ...tseslint.configs.recommended,\n  {\n    ...pluginReact.configs.flat.recommended,\n    languageOptions: {\n      ...pluginReact.configs.flat.recommended.languageOptions,\n      globals: {\n        ...globals.serviceworker,\n      },\n    },\n  },\n  {\n    plugins: {\n      \"@next/next\": pluginNext,\n    },\n    rules: {\n      ...pluginNext.configs.recommended.rules,\n      ...pluginNext.configs[\"core-web-vitals\"].rules,\n    },\n  },\n  {\n    plugins: {\n      \"react-hooks\": pluginReactHooks,\n    },\n    settings: { react: { version: \"detect\" } },\n    rules: {\n      ...pluginReactHooks.configs.recommended.rules,\n      // React scope no longer necessary with new JSX transform.\n      \"react/react-in-jsx-scope\": \"off\",\n      \"react/prop-types\": \"off\",\n    },\n  },\n]\n"
  },
  {
    "path": "templates/next-monorepo/packages/eslint-config/package.json",
    "content": "{\n  \"name\": \"@workspace/eslint-config\",\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"exports\": {\n    \"./base\": \"./base.js\",\n    \"./next-js\": \"./next.js\",\n    \"./react-internal\": \"./react-internal.js\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.39.2\",\n    \"@next/eslint-plugin-next\": \"^16.1.6\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.54.0\",\n    \"@typescript-eslint/parser\": \"^8.54.0\",\n    \"eslint\": \"^9.39.2\",\n    \"eslint-config-prettier\": \"^10.1.8\",\n    \"eslint-plugin-only-warn\": \"^1.1.0\",\n    \"eslint-plugin-react\": \"^7.37.5\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"eslint-plugin-turbo\": \"^2.8.1\",\n    \"globals\": \"^17.2.0\",\n    \"typescript\": \"^5.9.3\",\n    \"typescript-eslint\": \"^8.54.0\"\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/eslint-config/react-internal.js",
    "content": "import js from \"@eslint/js\"\nimport eslintConfigPrettier from \"eslint-config-prettier\"\nimport pluginReact from \"eslint-plugin-react\"\nimport pluginReactHooks from \"eslint-plugin-react-hooks\"\nimport globals from \"globals\"\nimport tseslint from \"typescript-eslint\"\n\nimport { config as baseConfig } from \"./base.js\"\n\n/**\n * A custom ESLint configuration for libraries that use React.\n *\n * @type {import(\"eslint\").Linter.Config} */\nexport const config = [\n  ...baseConfig,\n  js.configs.recommended,\n  eslintConfigPrettier,\n  ...tseslint.configs.recommended,\n  pluginReact.configs.flat.recommended,\n  {\n    languageOptions: {\n      ...pluginReact.configs.flat.recommended.languageOptions,\n      globals: {\n        ...globals.serviceworker,\n        ...globals.browser,\n      },\n    },\n  },\n  {\n    plugins: {\n      \"react-hooks\": pluginReactHooks,\n    },\n    settings: { react: { version: \"detect\" } },\n    rules: {\n      ...pluginReactHooks.configs.recommended.rules,\n      // React scope no longer necessary with new JSX transform.\n      \"react/react-in-jsx-scope\": \"off\",\n      \"react/prop-types\": \"off\",\n    },\n  },\n]\n"
  },
  {
    "path": "templates/next-monorepo/packages/typescript-config/README.md",
    "content": "# `@workspace/typescript-config`\n\nShared typescript configuration for the workspace.\n"
  },
  {
    "path": "templates/next-monorepo/packages/typescript-config/base.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Default\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"incremental\": false,\n    \"isolatedModules\": true,\n    \"lib\": [\"es2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"NodeNext\",\n    \"moduleDetection\": \"force\",\n    \"moduleResolution\": \"NodeNext\",\n    \"noUncheckedIndexedAccess\": true,\n    \"resolveJsonModule\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"target\": \"ES2022\"\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/typescript-config/nextjs.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Next.js\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"plugins\": [{ \"name\": \"next\" }],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Bundler\",\n    \"allowJs\": true,\n    \"jsx\": \"preserve\",\n    \"noEmit\": true\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/typescript-config/package.json",
    "content": "{\n  \"name\": \"@workspace/typescript-config\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"PROPRIETARY\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/typescript-config/react-library.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"React Library\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/ui/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@workspace/ui/components\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"hooks\": \"@workspace/ui/hooks\",\n    \"lib\": \"@workspace/ui/lib\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/ui/eslint.config.js",
    "content": "import { config } from \"@workspace/eslint-config/react-internal\"\n\n/** @type {import(\"eslint\").Linter.Config} */\nexport default config\n"
  },
  {
    "path": "templates/next-monorepo/packages/ui/package.json",
    "content": "{\n  \"name\": \"@workspace/ui\",\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"next-themes\": \"^0.4.6\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"zod\": \"^3.25.76\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/postcss\": \"^4.1.18\",\n    \"@turbo/gen\": \"^2.8.1\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@workspace/eslint-config\": \"workspace:*\",\n    \"@workspace/typescript-config\": \"workspace:*\",\n    \"eslint\": \"^9.39.2\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"exports\": {\n    \"./globals.css\": \"./src/styles/globals.css\",\n    \"./postcss.config\": \"./postcss.config.mjs\",\n    \"./lib/*\": \"./src/lib/*.ts\",\n    \"./components/*\": \"./src/components/*.tsx\",\n    \"./hooks/*\": \"./src/hooks/*.ts\"\n  }\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/ui/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n    plugins: { \"@tailwindcss/postcss\": {} },\n};\n\nexport default config;\n"
  },
  {
    "path": "templates/next-monorepo/packages/ui/src/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-monorepo/packages/ui/src/hooks/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-monorepo/packages/ui/src/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/next-monorepo/packages/ui/src/styles/globals.css",
    "content": "@import \"tailwindcss\";\n@source \"../../../apps/**/*.{ts,tsx}\";\n@source \"../../../components/**/*.{ts,tsx}\";\n@source \"../**/*.{ts,tsx}\";\n"
  },
  {
    "path": "templates/next-monorepo/packages/ui/tsconfig.json",
    "content": "{\n  \"extends\": \"@workspace/typescript-config/react-library.json\",\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@workspace/ui/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\".\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/next-monorepo/packages/ui/tsconfig.lint.json",
    "content": "{\n  \"extends\": \"@workspace/typescript-config/react-library.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"src\", \"turbo\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/next-monorepo/pnpm-workspace.yaml",
    "content": "packages:\n  - \"apps/*\"\n  - \"packages/*\"\n"
  },
  {
    "path": "templates/next-monorepo/tsconfig.json",
    "content": "{\n  \"extends\": \"@workspace/typescript-config/base.json\"\n}\n\n"
  },
  {
    "path": "templates/next-monorepo/turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"ui\": \"tui\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"outputs\": [\".next/**\", \"!.next/cache/**\"]\n    },\n    \"lint\": {\n      \"dependsOn\": [\"^lint\"]\n    },\n    \"format\": {\n      \"dependsOn\": [\"^format\"]\n    },\n    \"typecheck\": {\n      \"dependsOn\": [\"^typecheck\"]\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n"
  },
  {
    "path": "templates/react-router-app/.dockerignore",
    "content": ".react-router\nbuild\nnode_modules\nREADME.md"
  },
  {
    "path": "templates/react-router-app/.gitignore",
    "content": ".DS_Store\n.env\n/node_modules/\n\n# React Router\n/.react-router/\n/build/\n"
  },
  {
    "path": "templates/react-router-app/.prettierignore",
    "content": "node_modules/\ncoverage/\n.pnpm-store/\npnpm-lock.yaml\npackage-lock.json\npnpm-lock.yaml\nyarn.lock\n"
  },
  {
    "path": "templates/react-router-app/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"app/app.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"]\n}\n"
  },
  {
    "path": "templates/react-router-app/Dockerfile",
    "content": "FROM node:20-alpine AS development-dependencies-env\nCOPY . /app\nWORKDIR /app\nRUN npm ci\n\nFROM node:20-alpine AS production-dependencies-env\nCOPY ./package.json package-lock.json /app/\nWORKDIR /app\nRUN npm ci --omit=dev\n\nFROM node:20-alpine AS build-env\nCOPY . /app/\nCOPY --from=development-dependencies-env /app/node_modules /app/node_modules\nWORKDIR /app\nRUN npm run build\n\nFROM node:20-alpine\nCOPY ./package.json package-lock.json /app/\nCOPY --from=production-dependencies-env /app/node_modules /app/node_modules\nCOPY --from=build-env /app/build /app/build\nWORKDIR /app\nCMD [\"npm\", \"run\", \"start\"]"
  },
  {
    "path": "templates/react-router-app/README.md",
    "content": "# React Router + shadcn/ui\n\nThis is a template for a new React Router project with React, TypeScript, and shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command:\n\n```bash\nnpx shadcn@latest add button\n```\n\nThis will place the ui components in the `components` directory.\n\n## Using components\n\nTo use the components in your app, import them as follows:\n\n```tsx\nimport { Button } from \"@/components/ui/button\";\n```\n"
  },
  {
    "path": "templates/react-router-app/app/app.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "templates/react-router-app/app/root.tsx",
    "content": "import {\n  Links,\n  Meta,\n  Outlet,\n  Scripts,\n  ScrollRestoration,\n  isRouteErrorResponse,\n} from \"react-router\"\n\nimport type { Route } from \"./+types/root\"\nimport \"./app.css\"\n\nexport function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <head>\n        <meta charSet=\"utf-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        {children}\n        <ScrollRestoration />\n        <Scripts />\n      </body>\n    </html>\n  )\n}\n\nexport default function App() {\n  return <Outlet />\n}\n\nexport function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {\n  let message = \"Oops!\"\n  let details = \"An unexpected error occurred.\"\n  let stack: string | undefined\n\n  if (isRouteErrorResponse(error)) {\n    message = error.status === 404 ? \"404\" : \"Error\"\n    details =\n      error.status === 404\n        ? \"The requested page could not be found.\"\n        : error.statusText || details\n  } else if (import.meta.env.DEV && error && error instanceof Error) {\n    details = error.message\n    stack = error.stack\n  }\n\n  return (\n    <main className=\"container mx-auto p-4 pt-16\">\n      <h1>{message}</h1>\n      <p>{details}</p>\n      {stack && (\n        <pre className=\"w-full overflow-x-auto p-4\">\n          <code>{stack}</code>\n        </pre>\n      )}\n    </main>\n  )\n}\n"
  },
  {
    "path": "templates/react-router-app/app/routes/home.tsx",
    "content": "import { Button } from \"~/components/ui/button\"\n\nexport default function Home() {\n  return (\n    <div className=\"flex min-h-svh p-6\">\n      <div className=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 className=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We&apos;ve already added the button component for you.</p>\n          <Button className=\"mt-2\">Button</Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "templates/react-router-app/app/routes.ts",
    "content": "import { type RouteConfig, index } from \"@react-router/dev/routes\"\n\nexport default [index(\"routes/home.tsx\")] satisfies RouteConfig\n"
  },
  {
    "path": "templates/react-router-app/package.json",
    "content": "{\n  \"name\": \"rr-app\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"react-router build\",\n    \"dev\": \"react-router dev\",\n    \"start\": \"react-router-serve ./build/server/index.js\",\n    \"typecheck\": \"react-router typegen && tsc\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\"\n  },\n  \"dependencies\": {\n    \"@react-router/node\": \"7.13.1\",\n    \"@react-router/serve\": \"7.13.1\",\n    \"isbot\": \"^5.1.36\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"react-router\": \"7.13.1\"\n  },\n  \"devDependencies\": {\n    \"@react-router/dev\": \"7.13.1\",\n    \"@tailwindcss/vite\": \"^4.2.1\",\n    \"@types/node\": \"^22\",\n    \"@types/react\": \"^19.2.14\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"tailwindcss\": \"^4.2.1\",\n    \"typescript\": \"^5.9.3\",\n    \"vite\": \"^7.3.1\",\n    \"vite-tsconfig-paths\": \"^5.1.4\"\n  }\n}\n"
  },
  {
    "path": "templates/react-router-app/react-router.config.ts",
    "content": "import type { Config } from \"@react-router/dev/config\"\n\nexport default {\n  // Config options...\n  // Server-side render by default, to enable SPA mode set this to `false`\n  ssr: true,\n} satisfies Config\n"
  },
  {
    "path": "templates/react-router-app/tsconfig.json",
    "content": "{\n  \"include\": [\n    \"**/*\",\n    \"**/.server/**/*\",\n    \"**/.client/**/*\",\n    \".react-router/types/**/*\"\n  ],\n  \"compilerOptions\": {\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ES2022\"],\n    \"types\": [\"node\", \"vite/client\"],\n    \"target\": \"ES2022\",\n    \"module\": \"ES2022\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"rootDirs\": [\".\", \"./.react-router/types\"],\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"~/*\": [\"./app/*\"]\n    },\n    \"esModuleInterop\": true,\n    \"verbatimModuleSyntax\": true,\n    \"noEmit\": true,\n    \"resolveJsonModule\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true\n  }\n}\n"
  },
  {
    "path": "templates/react-router-app/vite.config.ts",
    "content": "import { reactRouter } from \"@react-router/dev/vite\"\nimport tailwindcss from \"@tailwindcss/vite\"\nimport { defineConfig } from \"vite\"\nimport tsconfigPaths from \"vite-tsconfig-paths\"\n\nexport default defineConfig({\n  plugins: [tailwindcss(), reactRouter(), tsconfigPaths()],\n})\n"
  },
  {
    "path": "templates/react-router-monorepo/.gitignore",
    "content": "# Dependencies\nnode_modules\n.pnp\n.pnp.js\n\n# Local env files\n.env\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# Testing\ncoverage\n\n# Turbo\n.turbo\n\n# Vercel\n.vercel\n\n# Build Outputs\nbuild\ndist\n\n# React Router\n.react-router/\n\n# Debug\nnpm-debug.log*\n\n# Misc\n.DS_Store\n*.pem\n"
  },
  {
    "path": "templates/react-router-monorepo/.npmrc",
    "content": ""
  },
  {
    "path": "templates/react-router-monorepo/.prettierignore",
    "content": "dist/\nbuild/\nnode_modules/\n.turbo/\n.react-router/\ncoverage/\npnpm-lock.yaml\n.pnpm-store/"
  },
  {
    "path": "templates/react-router-monorepo/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"packages/ui/src/styles/globals.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"]\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/README.md",
    "content": "# shadcn/ui monorepo template\n\nThis is a React Router monorepo template with shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command at the root of your `web` app:\n\n```bash\npnpm dlx shadcn@latest add button -c apps/web\n```\n\nThis will place the ui components in the `packages/ui/src/components` directory.\n\n## Using components\n\nTo use the components in your app, import them from the `ui` package.\n\n```tsx\nimport { Button } from \"@workspace/ui/components/button\";\n```\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/.dockerignore",
    "content": ".react-router\nbuild\nnode_modules\nREADME.md\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/Dockerfile",
    "content": "FROM node:20-alpine AS development-dependencies-env\nCOPY . /app\nWORKDIR /app\nRUN npm ci\n\nFROM node:20-alpine AS production-dependencies-env\nCOPY ./package.json package-lock.json /app/\nWORKDIR /app\nRUN npm ci --omit=dev\n\nFROM node:20-alpine AS build-env\nCOPY . /app/\nCOPY --from=development-dependencies-env /app/node_modules /app/node_modules\nWORKDIR /app\nRUN npm run build\n\nFROM node:20-alpine\nCOPY ./package.json package-lock.json /app/\nCOPY --from=production-dependencies-env /app/node_modules /app/node_modules\nCOPY --from=build-env /app/build /app/build\nWORKDIR /app\nCMD [\"npm\", \"run\", \"start\"]\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/app/root.tsx",
    "content": "import {\n  Links,\n  Meta,\n  Outlet,\n  Scripts,\n  ScrollRestoration,\n  isRouteErrorResponse,\n} from \"react-router\"\n\nimport type { Route } from \"./+types/root\"\nimport \"@workspace/ui/globals.css\"\n\nexport function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <head>\n        <meta charSet=\"utf-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        {children}\n        <ScrollRestoration />\n        <Scripts />\n      </body>\n    </html>\n  )\n}\n\nexport default function App() {\n  return <Outlet />\n}\n\nexport function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {\n  let message = \"Oops!\"\n  let details = \"An unexpected error occurred.\"\n  let stack: string | undefined\n\n  if (isRouteErrorResponse(error)) {\n    message = error.status === 404 ? \"404\" : \"Error\"\n    details =\n      error.status === 404\n        ? \"The requested page could not be found.\"\n        : error.statusText || details\n  } else if (import.meta.env.DEV && error && error instanceof Error) {\n    details = error.message\n    stack = error.stack\n  }\n\n  return (\n    <main className=\"container mx-auto p-4 pt-16\">\n      <h1>{message}</h1>\n      <p>{details}</p>\n      {stack && (\n        <pre className=\"w-full overflow-x-auto p-4\">\n          <code>{stack}</code>\n        </pre>\n      )}\n    </main>\n  )\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/app/routes/home.tsx",
    "content": "import { Button } from \"@workspace/ui/components/button\"\n\nexport default function Home() {\n  return (\n    <div className=\"flex min-h-svh p-6\">\n      <div className=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 className=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We&apos;ve already added the button component for you.</p>\n          <Button className=\"mt-2\">Button</Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/app/routes.ts",
    "content": "import { type RouteConfig, index } from \"@react-router/dev/routes\"\n\nexport default [index(\"routes/home.tsx\")] satisfies RouteConfig\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/react-router-monorepo/apps/web/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"../../packages/ui/src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"remixicon\",\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"hooks\": \"@/hooks\",\n    \"lib\": \"@/lib\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"ui\": \"@workspace/ui/components\"\n  },\n  \"rtl\": false,\n  \"menuColor\": \"inverted\",\n  \"menuAccent\": \"subtle\"\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/hooks/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/react-router-monorepo/apps/web/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/react-router-monorepo/apps/web/package.json",
    "content": "{\n  \"name\": \"web\",\n  \"version\": \"0.0.1\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"react-router dev\",\n    \"build\": \"react-router build\",\n    \"start\": \"react-router-serve ./build/server/index.js\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"react-router typegen && tsc\"\n  },\n  \"dependencies\": {\n    \"@react-router/node\": \"7.12.0\",\n    \"@react-router/serve\": \"7.12.0\",\n    \"@remixicon/react\": \"^4.9.0\",\n    \"@workspace/ui\": \"workspace:*\",\n    \"isbot\": \"^5.1.31\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"react-router\": \"7.12.0\"\n  },\n  \"devDependencies\": {\n    \"@react-router/dev\": \"7.12.0\",\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"typescript\": \"^5.9.3\",\n    \"vite\": \"^7.2.4\",\n    \"vite-tsconfig-paths\": \"^5.1.4\"\n  }\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/react-router.config.ts",
    "content": "import type { Config } from \"@react-router/dev/config\"\n\nexport default {\n  // Config options...\n  // Server-side render by default, to enable SPA mode set this to `false`\n  ssr: true,\n} satisfies Config\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/tsconfig.json",
    "content": "{\n  \"include\": [\n    \"**/*\",\n    \"**/.server/**/*\",\n    \"**/.client/**/*\",\n    \".react-router/types/**/*\"\n  ],\n  \"compilerOptions\": {\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ES2022\"],\n    \"types\": [\"node\", \"vite/client\"],\n    \"target\": \"ES2022\",\n    \"module\": \"ES2022\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"rootDirs\": [\".\", \"./.react-router/types\"],\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./app/*\"],\n      \"@workspace/ui/*\": [\"../../packages/ui/src/*\"]\n    },\n    \"esModuleInterop\": true,\n    \"verbatimModuleSyntax\": true,\n    \"noEmit\": true,\n    \"resolveJsonModule\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true\n  }\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/apps/web/vite.config.ts",
    "content": "import { reactRouter } from \"@react-router/dev/vite\"\nimport tailwindcss from \"@tailwindcss/vite\"\nimport { defineConfig } from \"vite\"\nimport tsconfigPaths from \"vite-tsconfig-paths\"\n\nexport default defineConfig({\n  plugins: [tailwindcss(), reactRouter(), tsconfigPaths()],\n})\n"
  },
  {
    "path": "templates/react-router-monorepo/package.json",
    "content": "{\n  \"name\": \"react-router-monorepo\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\",\n    \"format\": \"turbo format\",\n    \"typecheck\": \"turbo typecheck\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"turbo\": \"^2.8.17\",\n    \"typescript\": \"5.9.3\"\n  },\n  \"packageManager\": \"pnpm@9.15.9\",\n  \"engines\": {\n    \"node\": \">=20\"\n  }\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"remixicon\",\n  \"aliases\": {\n    \"components\": \"@workspace/ui/components\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"hooks\": \"@workspace/ui/hooks\",\n    \"lib\": \"@workspace/ui/lib\",\n    \"ui\": \"@workspace/ui/components\"\n  },\n  \"rtl\": false,\n  \"menuColor\": \"inverted\",\n  \"menuAccent\": \"subtle\"\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/package.json",
    "content": "{\n  \"name\": \"@workspace/ui\",\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"@fontsource-variable/outfit\": \"^5.2.8\",\n    \"@remixicon/react\": \"^4.9.0\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"radix-ui\": \"^1.4.3\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"shadcn\": \"^3.8.5\",\n    \"tailwind-merge\": \"^3.5.0\",\n    \"tw-animate-css\": \"^1.4.0\",\n    \"zod\": \"^3.25.76\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"@turbo/gen\": \"^2.8.1\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"exports\": {\n    \"./globals.css\": \"./src/styles/globals.css\",\n    \"./lib/*\": \"./src/lib/*.ts\",\n    \"./components/*\": \"./src/components/*.tsx\",\n    \"./hooks/*\": \"./src/hooks/*.ts\"\n  }\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/src/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/src/hooks/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/src/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/src/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/src/styles/globals.css",
    "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n@import \"@fontsource-variable/outfit\";\n\n@custom-variant dark (&:is(.dark *));\n@source \"../../../apps/**/*.{ts,tsx}\";\n@source \"../../../components/**/*.{ts,tsx}\";\n@source \"../**/*.{ts,tsx}\";\n\n:root {\n    --background: oklch(1 0 0);\n    --foreground: oklch(0.141 0.005 285.823);\n    --card: oklch(1 0 0);\n    --card-foreground: oklch(0.141 0.005 285.823);\n    --popover: oklch(1 0 0);\n    --popover-foreground: oklch(0.141 0.005 285.823);\n    --primary: oklch(0.648 0.2 131.684);\n    --primary-foreground: oklch(0.986 0.031 120.757);\n    --secondary: oklch(0.967 0.001 286.375);\n    --secondary-foreground: oklch(0.21 0.006 285.885);\n    --muted: oklch(0.967 0.001 286.375);\n    --muted-foreground: oklch(0.552 0.016 285.938);\n    --accent: oklch(0.967 0.001 286.375);\n    --accent-foreground: oklch(0.21 0.006 285.885);\n    --destructive: oklch(0.577 0.245 27.325);\n    --border: oklch(0.92 0.004 286.32);\n    --input: oklch(0.92 0.004 286.32);\n    --ring: oklch(0.705 0.015 286.067);\n    --chart-1: oklch(0.871 0.15 154.449);\n    --chart-2: oklch(0.723 0.219 149.579);\n    --chart-3: oklch(0.627 0.194 149.214);\n    --chart-4: oklch(0.527 0.154 150.069);\n    --chart-5: oklch(0.448 0.119 151.328);\n    --radius: 0.625rem;\n    --sidebar: oklch(0.985 0 0);\n    --sidebar-foreground: oklch(0.141 0.005 285.823);\n    --sidebar-primary: oklch(0.648 0.2 131.684);\n    --sidebar-primary-foreground: oklch(0.986 0.031 120.757);\n    --sidebar-accent: oklch(0.967 0.001 286.375);\n    --sidebar-accent-foreground: oklch(0.21 0.006 285.885);\n    --sidebar-border: oklch(0.92 0.004 286.32);\n    --sidebar-ring: oklch(0.705 0.015 286.067);\n}\n\n.dark {\n    --background: oklch(0.141 0.005 285.823);\n    --foreground: oklch(0.985 0 0);\n    --card: oklch(0.21 0.006 285.885);\n    --card-foreground: oklch(0.985 0 0);\n    --popover: oklch(0.21 0.006 285.885);\n    --popover-foreground: oklch(0.985 0 0);\n    --primary: oklch(0.648 0.2 131.684);\n    --primary-foreground: oklch(0.986 0.031 120.757);\n    --secondary: oklch(0.274 0.006 286.033);\n    --secondary-foreground: oklch(0.985 0 0);\n    --muted: oklch(0.274 0.006 286.033);\n    --muted-foreground: oklch(0.705 0.015 286.067);\n    --accent: oklch(0.274 0.006 286.033);\n    --accent-foreground: oklch(0.985 0 0);\n    --destructive: oklch(0.704 0.191 22.216);\n    --border: oklch(1 0 0 / 10%);\n    --input: oklch(1 0 0 / 15%);\n    --ring: oklch(0.552 0.016 285.938);\n    --chart-1: oklch(0.871 0.15 154.449);\n    --chart-2: oklch(0.723 0.219 149.579);\n    --chart-3: oklch(0.627 0.194 149.214);\n    --chart-4: oklch(0.527 0.154 150.069);\n    --chart-5: oklch(0.448 0.119 151.328);\n    --sidebar: oklch(0.21 0.006 285.885);\n    --sidebar-foreground: oklch(0.985 0 0);\n    --sidebar-primary: oklch(0.768 0.233 130.85);\n    --sidebar-primary-foreground: oklch(0.986 0.031 120.757);\n    --sidebar-accent: oklch(0.274 0.006 286.033);\n    --sidebar-accent-foreground: oklch(0.985 0 0);\n    --sidebar-border: oklch(1 0 0 / 10%);\n    --sidebar-ring: oklch(0.552 0.016 285.938);\n}\n\n@theme inline {\n    --color-background: var(--background);\n    --color-foreground: var(--foreground);\n    --color-card: var(--card);\n    --color-card-foreground: var(--card-foreground);\n    --color-popover: var(--popover);\n    --color-popover-foreground: var(--popover-foreground);\n    --color-primary: var(--primary);\n    --color-primary-foreground: var(--primary-foreground);\n    --color-secondary: var(--secondary);\n    --color-secondary-foreground: var(--secondary-foreground);\n    --color-muted: var(--muted);\n    --color-muted-foreground: var(--muted-foreground);\n    --color-accent: var(--accent);\n    --color-accent-foreground: var(--accent-foreground);\n    --color-destructive: var(--destructive);\n    --color-border: var(--border);\n    --color-input: var(--input);\n    --color-ring: var(--ring);\n    --color-chart-1: var(--chart-1);\n    --color-chart-2: var(--chart-2);\n    --color-chart-3: var(--chart-3);\n    --color-chart-4: var(--chart-4);\n    --color-chart-5: var(--chart-5);\n    --radius-sm: calc(var(--radius) * 0.6);\n    --radius-md: calc(var(--radius) * 0.8);\n    --radius-lg: var(--radius);\n    --radius-xl: calc(var(--radius) * 1.4);\n    --radius-2xl: calc(var(--radius) * 1.8);\n    --radius-3xl: calc(var(--radius) * 2.2);\n    --radius-4xl: calc(var(--radius) * 2.6);\n    --color-sidebar: var(--sidebar);\n    --color-sidebar-foreground: var(--sidebar-foreground);\n    --color-sidebar-primary: var(--sidebar-primary);\n    --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n    --color-sidebar-accent: var(--sidebar-accent);\n    --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n    --color-sidebar-border: var(--sidebar-border);\n    --color-sidebar-ring: var(--sidebar-ring);\n    --font-sans: 'Outfit', sans-serif;\n}\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n    }\n  body {\n    @apply bg-background text-foreground;\n    }\n}"
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@workspace/ui/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\".\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/packages/ui/tsconfig.lint.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"src\", \"turbo\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/pnpm-workspace.yaml",
    "content": "packages:\n  - \"apps/*\"\n  - \"packages/*\"\n"
  },
  {
    "path": "templates/react-router-monorepo/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"skipLibCheck\": true,\n    \"strict\": true\n  }\n}\n"
  },
  {
    "path": "templates/react-router-monorepo/turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"ui\": \"tui\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"outputs\": [\"build/**\"]\n    },\n    \"format\": {\n      \"dependsOn\": [\"^format\"]\n    },\n    \"typecheck\": {\n      \"dependsOn\": [\"^typecheck\"]\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n"
  },
  {
    "path": "templates/start-app/.cta.json",
    "content": "{\n  \"projectName\": \"start-app\",\n  \"mode\": \"file-router\",\n  \"typescript\": true,\n  \"tailwind\": true,\n  \"packageManager\": \"pnpm\",\n  \"addOnOptions\": {},\n  \"git\": true,\n  \"version\": 1,\n  \"framework\": \"react-cra\",\n  \"chosenAddOns\": [\n    \"eslint\",\n    \"nitro\",\n    \"start\"\n  ]\n}\n"
  },
  {
    "path": "templates/start-app/.gitignore",
    "content": "node_modules\n.DS_Store\ndist\ndist-ssr\n*.local\ncount.txt\n.env\n.nitro\n.tanstack\n.wrangler\n.output\n.vinxi\n__unconfig*\ntodos.json\n"
  },
  {
    "path": "templates/start-app/.prettierignore",
    "content": "package-lock.json\npnpm-lock.yaml\nyarn.lock"
  },
  {
    "path": "templates/start-app/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"src/styles.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"]\n}\n"
  },
  {
    "path": "templates/start-app/README.md",
    "content": "# TanStack Start + shadcn/ui\n\nThis is a template for a new TanStack Start project with React, TypeScript, and shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command:\n\n```bash\nnpx shadcn@latest add button\n```\n\nThis will place the ui components in the `components` directory.\n\n## Using components\n\nTo use the components in your app, import them as follows:\n\n```tsx\nimport { Button } from \"@/components/ui/button\";\n```\n"
  },
  {
    "path": "templates/start-app/eslint.config.js",
    "content": "//  @ts-check\n\nimport { tanstackConfig } from \"@tanstack/eslint-config\"\n\nexport default [...tanstackConfig]\n"
  },
  {
    "path": "templates/start-app/package.json",
    "content": "{\n  \"name\": \"start-app\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite dev --port 3000\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\",\n    \"test\": \"vitest run\",\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx,js,jsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"@tailwindcss/vite\": \"^4.2.1\",\n    \"@tanstack/react-devtools\": \"^0.10.0\",\n    \"@tanstack/react-router\": \"^1.167.4\",\n    \"@tanstack/react-router-devtools\": \"^1.166.9\",\n    \"@tanstack/react-router-ssr-query\": \"^1.166.9\",\n    \"@tanstack/react-start\": \"^1.166.15\",\n    \"@tanstack/router-plugin\": \"^1.166.13\",\n    \"nitro\": \"latest\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"tailwindcss\": \"^4.2.1\",\n    \"vite-tsconfig-paths\": \"^5.1.4\"\n  },\n  \"devDependencies\": {\n    \"@tanstack/devtools-vite\": \"^0.6.0\",\n    \"@tanstack/eslint-config\": \"^0.4.0\",\n    \"@testing-library/dom\": \"^10.4.1\",\n    \"@testing-library/react\": \"^16.3.2\",\n    \"@types/node\": \"^22.19.15\",\n    \"@types/react\": \"^19.2.14\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@vitejs/plugin-react\": \"^5.2.0\",\n    \"jsdom\": \"^27.4.0\",\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"typescript\": \"^5.9.3\",\n    \"vite\": \"^7.3.1\",\n    \"vitest\": \"^3.2.4\",\n    \"web-vitals\": \"^5.1.0\"\n  }\n}\n"
  },
  {
    "path": "templates/start-app/public/manifest.json",
    "content": "{\n  \"short_name\": \"TanStack App\",\n  \"name\": \"Create TanStack App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "templates/start-app/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "templates/start-app/src/lib/utils.ts",
    "content": "import {  clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\nimport type {ClassValue} from \"clsx\";\n\nexport function cn(...inputs: Array<ClassValue>) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "templates/start-app/src/routeTree.gen.ts",
    "content": "/* eslint-disable */\n\n// @ts-nocheck\n\n// noinspection JSUnusedGlobalSymbols\n\n// This file was automatically generated by TanStack Router.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nimport { Route as rootRouteImport } from \"./routes/__root\"\nimport { Route as IndexRouteImport } from \"./routes/index\"\n\nconst IndexRoute = IndexRouteImport.update({\n  id: \"/\",\n  path: \"/\",\n  getParentRoute: () => rootRouteImport,\n} as any)\n\nexport interface FileRoutesByFullPath {\n  \"/\": typeof IndexRoute\n}\nexport interface FileRoutesByTo {\n  \"/\": typeof IndexRoute\n}\nexport interface FileRoutesById {\n  __root__: typeof rootRouteImport\n  \"/\": typeof IndexRoute\n}\nexport interface FileRouteTypes {\n  fileRoutesByFullPath: FileRoutesByFullPath\n  fullPaths: \"/\"\n  fileRoutesByTo: FileRoutesByTo\n  to: \"/\"\n  id: \"__root__\" | \"/\"\n  fileRoutesById: FileRoutesById\n}\nexport interface RootRouteChildren {\n  IndexRoute: typeof IndexRoute\n}\n\ndeclare module \"@tanstack/react-router\" {\n  interface FileRoutesByPath {\n    \"/\": {\n      id: \"/\"\n      path: \"/\"\n      fullPath: \"/\"\n      preLoaderRoute: typeof IndexRouteImport\n      parentRoute: typeof rootRouteImport\n    }\n  }\n}\n\nconst rootRouteChildren: RootRouteChildren = {\n  IndexRoute: IndexRoute,\n}\nexport const routeTree = rootRouteImport\n  ._addFileChildren(rootRouteChildren)\n  ._addFileTypes<FileRouteTypes>()\n\nimport type { getRouter } from \"./router.tsx\"\nimport type { createStart } from \"@tanstack/react-start\"\ndeclare module \"@tanstack/react-start\" {\n  interface Register {\n    ssr: true\n    router: Awaited<ReturnType<typeof getRouter>>\n  }\n}\n"
  },
  {
    "path": "templates/start-app/src/router.tsx",
    "content": "import { createRouter as createTanStackRouter } from \"@tanstack/react-router\"\nimport { routeTree } from \"./routeTree.gen\"\n\nexport function getRouter() {\n  const router = createTanStackRouter({\n    routeTree,\n\n    scrollRestoration: true,\n    defaultPreload: \"intent\",\n    defaultPreloadStaleTime: 0,\n  })\n\n  return router\n}\n\ndeclare module \"@tanstack/react-router\" {\n  interface Register {\n    router: ReturnType<typeof getRouter>\n  }\n}\n"
  },
  {
    "path": "templates/start-app/src/routes/__root.tsx",
    "content": "import { HeadContent, Scripts, createRootRoute } from \"@tanstack/react-router\"\nimport { TanStackRouterDevtoolsPanel } from \"@tanstack/react-router-devtools\"\nimport { TanStackDevtools } from \"@tanstack/react-devtools\"\n\nimport appCss from \"../styles.css?url\"\n\nexport const Route = createRootRoute({\n  head: () => ({\n    meta: [\n      {\n        charSet: \"utf-8\",\n      },\n      {\n        name: \"viewport\",\n        content: \"width=device-width, initial-scale=1\",\n      },\n      {\n        title: \"TanStack Start Starter\",\n      },\n    ],\n    links: [\n      {\n        rel: \"stylesheet\",\n        href: appCss,\n      },\n    ],\n  }),\n  shellComponent: RootDocument,\n})\n\nfunction RootDocument({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <head>\n        <HeadContent />\n      </head>\n      <body>\n        {children}\n        <TanStackDevtools\n          config={{\n            position: \"bottom-right\",\n          }}\n          plugins={[\n            {\n              name: \"Tanstack Router\",\n              render: <TanStackRouterDevtoolsPanel />,\n            },\n          ]}\n        />\n        <Scripts />\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "templates/start-app/src/routes/index.tsx",
    "content": "import { createFileRoute } from \"@tanstack/react-router\"\nimport { Button } from \"@/components/ui/button\"\n\nexport const Route = createFileRoute(\"/\")({ component: App })\n\nfunction App() {\n  return (\n    <div className=\"flex min-h-svh p-6\">\n      <div className=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 className=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We&apos;ve already added the button component for you.</p>\n          <Button className=\"mt-2\">Button</Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "templates/start-app/src/styles.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "templates/start-app/tsconfig.json",
    "content": "{\n  \"include\": [\"**/*.ts\", \"**/*.tsx\", \"eslint.config.js\", \"prettier.config.js\", \"vite.config.js\"],\n\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"jsx\": \"react-jsx\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"types\": [\"vite/client\"],\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"verbatimModuleSyntax\": true,\n    \"noEmit\": true,\n\n    /* Linting */\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUncheckedSideEffectImports\": true,\n    \"allowJs\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "templates/start-app/vite.config.ts",
    "content": "import { defineConfig } from \"vite\"\nimport { devtools } from \"@tanstack/devtools-vite\"\nimport { tanstackStart } from \"@tanstack/react-start/plugin/vite\"\nimport viteReact from \"@vitejs/plugin-react\"\nimport viteTsConfigPaths from \"vite-tsconfig-paths\"\nimport tailwindcss from \"@tailwindcss/vite\"\nimport { nitro } from \"nitro/vite\"\n\nconst config = defineConfig({\n  plugins: [\n    devtools(),\n    nitro(),\n    // this is the plugin that enables path aliases\n    viteTsConfigPaths({\n      projects: [\"./tsconfig.json\"],\n    }),\n    tailwindcss(),\n    tanstackStart(),\n    viteReact(),\n  ],\n})\n\nexport default config\n"
  },
  {
    "path": "templates/start-monorepo/.gitignore",
    "content": "# Dependencies\nnode_modules\n.pnp\n.pnp.js\n\n# Local env files\n.env\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# Testing\ncoverage\n\n# Turbo\n.turbo\n\n# Vercel\n.vercel\n\n# Build Outputs\ndist\n.output\n.nitro\n.tanstack\n.vinxi\n\n# Debug\nnpm-debug.log*\n\n# Misc\n.DS_Store\n*.pem\n"
  },
  {
    "path": "templates/start-monorepo/.npmrc",
    "content": ""
  },
  {
    "path": "templates/start-monorepo/.prettierignore",
    "content": "dist/\nnode_modules/\n.turbo/\n.output/\n.nitro/\n.tanstack/\n.vinxi/\ncoverage/\npnpm-lock.yaml\n.pnpm-store/"
  },
  {
    "path": "templates/start-monorepo/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"packages/ui/src/styles/globals.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"]\n}\n"
  },
  {
    "path": "templates/start-monorepo/README.md",
    "content": "# shadcn/ui monorepo template\n\nThis is a TanStack Start monorepo template with shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command at the root of your `web` app:\n\n```bash\npnpm dlx shadcn@latest add button -c apps/web\n```\n\nThis will place the ui components in the `packages/ui/src/components` directory.\n\n## Using components\n\nTo use the components in your app, import them from the `ui` package.\n\n```tsx\nimport { Button } from \"@workspace/ui/components/button\";\n```\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"../../packages/ui/src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"hooks\": \"@/hooks\",\n    \"lib\": \"@/lib\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/eslint.config.js",
    "content": "//  @ts-check\n\nimport { tanstackConfig } from \"@tanstack/eslint-config\"\n\nexport default [...tanstackConfig]\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/package.json",
    "content": "{\n  \"name\": \"web\",\n  \"version\": \"0.0.1\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"vite dev --port 3000\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\",\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"@tanstack/react-router\": \"^1.132.0\",\n    \"@tanstack/react-start\": \"^1.132.0\",\n    \"@tanstack/router-plugin\": \"^1.132.0\",\n    \"@workspace/ui\": \"workspace:*\",\n    \"nitro\": \"latest\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"vite-tsconfig-paths\": \"^5.1.4\"\n  },\n  \"devDependencies\": {\n    \"@tanstack/eslint-config\": \"^0.3.0\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@vitejs/plugin-react\": \"^5.1.1\",\n    \"eslint\": \"^9.39.2\",\n    \"typescript\": \"^5.9.3\",\n    \"vite\": \"^7.2.4\"\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/public/manifest.json",
    "content": "{\n  \"short_name\": \"TanStack App\",\n  \"name\": \"Create TanStack App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/src/routeTree.gen.ts",
    "content": "/* eslint-disable */\n\n// @ts-nocheck\n\n// noinspection JSUnusedGlobalSymbols\n\n// This file was automatically generated by TanStack Router.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nimport { Route as rootRouteImport } from \"./routes/__root\"\nimport { Route as IndexRouteImport } from \"./routes/index\"\n\nconst IndexRoute = IndexRouteImport.update({\n  id: \"/\",\n  path: \"/\",\n  getParentRoute: () => rootRouteImport,\n} as any)\n\nexport interface FileRoutesByFullPath {\n  \"/\": typeof IndexRoute\n}\nexport interface FileRoutesByTo {\n  \"/\": typeof IndexRoute\n}\nexport interface FileRoutesById {\n  __root__: typeof rootRouteImport\n  \"/\": typeof IndexRoute\n}\nexport interface FileRouteTypes {\n  fileRoutesByFullPath: FileRoutesByFullPath\n  fullPaths: \"/\"\n  fileRoutesByTo: FileRoutesByTo\n  to: \"/\"\n  id: \"__root__\" | \"/\"\n  fileRoutesById: FileRoutesById\n}\nexport interface RootRouteChildren {\n  IndexRoute: typeof IndexRoute\n}\n\ndeclare module \"@tanstack/react-router\" {\n  interface FileRoutesByPath {\n    \"/\": {\n      id: \"/\"\n      path: \"/\"\n      fullPath: \"/\"\n      preLoaderRoute: typeof IndexRouteImport\n      parentRoute: typeof rootRouteImport\n    }\n  }\n}\n\nconst rootRouteChildren: RootRouteChildren = {\n  IndexRoute: IndexRoute,\n}\nexport const routeTree = rootRouteImport\n  ._addFileChildren(rootRouteChildren)\n  ._addFileTypes<FileRouteTypes>()\n\nimport type { getRouter } from \"./router.tsx\"\nimport type { createStart } from \"@tanstack/react-start\"\ndeclare module \"@tanstack/react-start\" {\n  interface Register {\n    ssr: true\n    router: Awaited<ReturnType<typeof getRouter>>\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/src/router.tsx",
    "content": "import { createRouter as createTanStackRouter } from \"@tanstack/react-router\"\nimport { routeTree } from \"./routeTree.gen\"\n\nexport function getRouter() {\n  const router = createTanStackRouter({\n    routeTree,\n\n    scrollRestoration: true,\n    defaultPreload: \"intent\",\n    defaultPreloadStaleTime: 0,\n  })\n\n  return router\n}\n\ndeclare module \"@tanstack/react-router\" {\n  interface Register {\n    router: ReturnType<typeof getRouter>\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/src/routes/__root.tsx",
    "content": "import { HeadContent, Scripts, createRootRoute } from \"@tanstack/react-router\"\n\nimport appCss from \"@workspace/ui/globals.css?url\"\n\nexport const Route = createRootRoute({\n  head: () => ({\n    meta: [\n      {\n        charSet: \"utf-8\",\n      },\n      {\n        name: \"viewport\",\n        content: \"width=device-width, initial-scale=1\",\n      },\n      {\n        title: \"TanStack Start Starter\",\n      },\n    ],\n    links: [\n      {\n        rel: \"stylesheet\",\n        href: appCss,\n      },\n    ],\n  }),\n  shellComponent: RootDocument,\n})\n\nfunction RootDocument({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <head>\n        <HeadContent />\n      </head>\n      <body>\n        {children}\n        <Scripts />\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/src/routes/index.tsx",
    "content": "import { createFileRoute } from \"@tanstack/react-router\"\nimport { Button } from \"@workspace/ui/components/button\"\n\nexport const Route = createFileRoute(\"/\")({ component: App })\n\nfunction App() {\n  return (\n    <div className=\"flex min-h-svh p-6\">\n      <div className=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 className=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We&apos;ve already added the button component for you.</p>\n          <Button className=\"mt-2\">Button</Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/tsconfig.json",
    "content": "{\n  \"include\": [\"**/*.ts\", \"**/*.tsx\", \"eslint.config.js\", \"prettier.config.js\", \"vite.config.js\"],\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"jsx\": \"react-jsx\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"types\": [\"vite/client\"],\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"verbatimModuleSyntax\": true,\n    \"noEmit\": true,\n\n    /* Linting */\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUncheckedSideEffectImports\": true,\n    \"allowJs\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"],\n      \"@workspace/ui/*\": [\"../../packages/ui/src/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/apps/web/vite.config.ts",
    "content": "import { defineConfig } from \"vite\"\nimport { tanstackStart } from \"@tanstack/react-start/plugin/vite\"\nimport viteReact from \"@vitejs/plugin-react\"\nimport viteTsConfigPaths from \"vite-tsconfig-paths\"\nimport tailwindcss from \"@tailwindcss/vite\"\nimport { nitro } from \"nitro/vite\"\n\nconst config = defineConfig({\n  plugins: [\n    nitro(),\n    viteTsConfigPaths({\n      projects: [\"./tsconfig.json\"],\n    }),\n    tailwindcss(),\n    tanstackStart(),\n    viteReact(),\n  ],\n})\n\nexport default config\n"
  },
  {
    "path": "templates/start-monorepo/package.json",
    "content": "{\n  \"name\": \"start-monorepo\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\",\n    \"lint\": \"turbo lint\",\n    \"format\": \"turbo format\",\n    \"typecheck\": \"turbo typecheck\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"turbo\": \"^2.8.17\",\n    \"typescript\": \"5.9.3\"\n  },\n  \"packageManager\": \"pnpm@9.15.9\",\n  \"engines\": {\n    \"node\": \">=20\"\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/packages/ui/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@workspace/ui/components\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"hooks\": \"@workspace/ui/hooks\",\n    \"lib\": \"@workspace/ui/lib\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/packages/ui/eslint.config.ts",
    "content": "import { tanstackConfig } from \"@tanstack/eslint-config\"\n\nexport default [...tanstackConfig]\n"
  },
  {
    "path": "templates/start-monorepo/packages/ui/package.json",
    "content": "{\n  \"name\": \"@workspace/ui\",\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"zod\": \"^3.25.76\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"@turbo/gen\": \"^2.8.1\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@tanstack/eslint-config\": \"^0.3.0\",\n    \"eslint\": \"^9.39.2\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"exports\": {\n    \"./globals.css\": \"./src/styles/globals.css\",\n    \"./lib/*\": \"./src/lib/*.ts\",\n    \"./components/*\": \"./src/components/*.tsx\",\n    \"./hooks/*\": \"./src/hooks/*.ts\"\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/packages/ui/src/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/start-monorepo/packages/ui/src/hooks/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/start-monorepo/packages/ui/src/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/start-monorepo/packages/ui/src/styles/globals.css",
    "content": "@import \"tailwindcss\";\n@source \"../../../apps/**/*.{ts,tsx}\";\n@source \"../../../components/**/*.{ts,tsx}\";\n@source \"../**/*.{ts,tsx}\";\n"
  },
  {
    "path": "templates/start-monorepo/packages/ui/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@workspace/ui/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\".\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/start-monorepo/packages/ui/tsconfig.lint.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"src\", \"turbo\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/start-monorepo/pnpm-workspace.yaml",
    "content": "packages:\n  - \"apps/*\"\n  - \"packages/*\"\n"
  },
  {
    "path": "templates/start-monorepo/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"skipLibCheck\": true,\n    \"strict\": true\n  }\n}\n"
  },
  {
    "path": "templates/start-monorepo/turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"ui\": \"tui\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"outputs\": [\".output/**\"]\n    },\n    \"lint\": {\n      \"dependsOn\": [\"^lint\"]\n    },\n    \"format\": {\n      \"dependsOn\": [\"^format\"]\n    },\n    \"typecheck\": {\n      \"dependsOn\": [\"^typecheck\"]\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n"
  },
  {
    "path": "templates/vite-app/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "templates/vite-app/.prettierignore",
    "content": "node_modules/\ncoverage/\n.pnpm-store/\npnpm-lock.yaml\npackage-lock.json\npnpm-lock.yaml\nyarn.lock\n"
  },
  {
    "path": "templates/vite-app/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"src/index.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"]\n}\n"
  },
  {
    "path": "templates/vite-app/README.md",
    "content": "# React + TypeScript + Vite + shadcn/ui\n\nThis is a template for a new Vite project with React, TypeScript, and shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command:\n\n```bash\nnpx shadcn@latest add button\n```\n\nThis will place the ui components in the `src/components` directory.\n\n## Using components\n\nTo use the components in your app, import them as follows:\n\n```tsx\nimport { Button } from \"@/components/ui/button\"\n```\n"
  },
  {
    "path": "templates/vite-app/eslint.config.js",
    "content": "import js from '@eslint/js'\nimport globals from 'globals'\nimport reactHooks from 'eslint-plugin-react-hooks'\nimport reactRefresh from 'eslint-plugin-react-refresh'\nimport tseslint from 'typescript-eslint'\nimport { defineConfig, globalIgnores } from 'eslint/config'\n\nexport default defineConfig([\n  globalIgnores(['dist']),\n  {\n    files: ['**/*.{ts,tsx}'],\n    extends: [\n      js.configs.recommended,\n      tseslint.configs.recommended,\n      reactHooks.configs.flat.recommended,\n      reactRefresh.configs.vite,\n    ],\n    languageOptions: {\n      ecmaVersion: 2020,\n      globals: globals.browser,\n    },\n  },\n])\n"
  },
  {
    "path": "templates/vite-app/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>vite-app</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "templates/vite-app/package.json",
    "content": "{\n  \"name\": \"vite-app\",\n  \"private\": true,\n  \"version\": \"0.0.1\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"tsc -b && vite build\",\n    \"lint\": \"eslint .\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@tailwindcss/vite\": \"^4.2.1\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"tailwindcss\": \"^4.2.1\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.39.4\",\n    \"@types/node\": \"^24.12.0\",\n    \"@types/react\": \"^19.2.14\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@vitejs/plugin-react\": \"^5.2.0\",\n    \"eslint\": \"^9.39.4\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"eslint-plugin-react-refresh\": \"^0.5.2\",\n    \"globals\": \"^16.5.0\",\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"typescript\": \"~5.9.3\",\n    \"typescript-eslint\": \"^8.57.1\",\n    \"vite\": \"^7.3.1\"\n  }\n}\n"
  },
  {
    "path": "templates/vite-app/src/App.tsx",
    "content": "import { Button } from \"@/components/ui/button\"\n\nexport function App() {\n  return (\n    <div className=\"flex min-h-svh p-6\">\n      <div className=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 className=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We&apos;ve already added the button component for you.</p>\n          <Button className=\"mt-2\">Button</Button>\n        </div>\n        <div className=\"font-mono text-xs text-muted-foreground\">\n          (Press <kbd>d</kbd> to toggle dark mode)\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default App\n"
  },
  {
    "path": "templates/vite-app/src/components/theme-provider.tsx",
    "content": "/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\"\n\ntype Theme = \"dark\" | \"light\" | \"system\"\ntype ResolvedTheme = \"dark\" | \"light\"\n\ntype ThemeProviderProps = {\n  children: React.ReactNode\n  defaultTheme?: Theme\n  storageKey?: string\n  disableTransitionOnChange?: boolean\n}\n\ntype ThemeProviderState = {\n  theme: Theme\n  setTheme: (theme: Theme) => void\n}\n\nconst COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\"\nconst THEME_VALUES: Theme[] = [\"dark\", \"light\", \"system\"]\n\nconst ThemeProviderContext = React.createContext<\n  ThemeProviderState | undefined\n>(undefined)\n\nfunction isTheme(value: string | null): value is Theme {\n  if (value === null) {\n    return false\n  }\n\n  return THEME_VALUES.includes(value as Theme)\n}\n\nfunction getSystemTheme(): ResolvedTheme {\n  if (window.matchMedia(COLOR_SCHEME_QUERY).matches) {\n    return \"dark\"\n  }\n\n  return \"light\"\n}\n\nfunction disableTransitionsTemporarily() {\n  const style = document.createElement(\"style\")\n  style.appendChild(\n    document.createTextNode(\n      \"*,*::before,*::after{-webkit-transition:none!important;transition:none!important}\"\n    )\n  )\n  document.head.appendChild(style)\n\n  return () => {\n    window.getComputedStyle(document.body)\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        style.remove()\n      })\n    })\n  }\n}\n\nfunction isEditableTarget(target: EventTarget | null) {\n  if (!(target instanceof HTMLElement)) {\n    return false\n  }\n\n  if (target.isContentEditable) {\n    return true\n  }\n\n  const editableParent = target.closest(\n    \"input, textarea, select, [contenteditable='true']\"\n  )\n  if (editableParent) {\n    return true\n  }\n\n  return false\n}\n\nexport function ThemeProvider({\n  children,\n  defaultTheme = \"system\",\n  storageKey = \"theme\",\n  disableTransitionOnChange = true,\n  ...props\n}: ThemeProviderProps) {\n  const [theme, setThemeState] = React.useState<Theme>(() => {\n    const storedTheme = localStorage.getItem(storageKey)\n    if (isTheme(storedTheme)) {\n      return storedTheme\n    }\n\n    return defaultTheme\n  })\n\n  const setTheme = React.useCallback(\n    (nextTheme: Theme) => {\n      localStorage.setItem(storageKey, nextTheme)\n      setThemeState(nextTheme)\n    },\n    [storageKey]\n  )\n\n  const applyTheme = React.useCallback(\n    (nextTheme: Theme) => {\n      const root = document.documentElement\n      const resolvedTheme =\n        nextTheme === \"system\" ? getSystemTheme() : nextTheme\n      const restoreTransitions = disableTransitionOnChange\n        ? disableTransitionsTemporarily()\n        : null\n\n      root.classList.remove(\"light\", \"dark\")\n      root.classList.add(resolvedTheme)\n\n      if (restoreTransitions) {\n        restoreTransitions()\n      }\n    },\n    [disableTransitionOnChange]\n  )\n\n  React.useEffect(() => {\n    applyTheme(theme)\n\n    if (theme !== \"system\") {\n      return undefined\n    }\n\n    const mediaQuery = window.matchMedia(COLOR_SCHEME_QUERY)\n    const handleChange = () => {\n      applyTheme(\"system\")\n    }\n\n    mediaQuery.addEventListener(\"change\", handleChange)\n\n    return () => {\n      mediaQuery.removeEventListener(\"change\", handleChange)\n    }\n  }, [theme, applyTheme])\n\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.repeat) {\n        return\n      }\n\n      if (event.metaKey || event.ctrlKey || event.altKey) {\n        return\n      }\n\n      if (isEditableTarget(event.target)) {\n        return\n      }\n\n      if (event.key.toLowerCase() !== \"d\") {\n        return\n      }\n\n      setThemeState((currentTheme) => {\n        const nextTheme =\n          currentTheme === \"dark\"\n            ? \"light\"\n            : currentTheme === \"light\"\n              ? \"dark\"\n              : getSystemTheme() === \"dark\"\n                ? \"light\"\n                : \"dark\"\n\n        localStorage.setItem(storageKey, nextTheme)\n        return nextTheme\n      })\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n\n    return () => {\n      window.removeEventListener(\"keydown\", handleKeyDown)\n    }\n  }, [storageKey])\n\n  React.useEffect(() => {\n    const handleStorageChange = (event: StorageEvent) => {\n      if (event.storageArea !== localStorage) {\n        return\n      }\n\n      if (event.key !== storageKey) {\n        return\n      }\n\n      if (isTheme(event.newValue)) {\n        setThemeState(event.newValue)\n        return\n      }\n\n      setThemeState(defaultTheme)\n    }\n\n    window.addEventListener(\"storage\", handleStorageChange)\n\n    return () => {\n      window.removeEventListener(\"storage\", handleStorageChange)\n    }\n  }, [defaultTheme, storageKey])\n\n  const value = React.useMemo(\n    () => ({\n      theme,\n      setTheme,\n    }),\n    [theme, setTheme]\n  )\n\n  return (\n    <ThemeProviderContext.Provider {...props} value={value}>\n      {children}\n    </ThemeProviderContext.Provider>\n  )\n}\n\nexport const useTheme = () => {\n  const context = React.useContext(ThemeProviderContext)\n\n  if (context === undefined) {\n    throw new Error(\"useTheme must be used within a ThemeProvider\")\n  }\n\n  return context\n}\n"
  },
  {
    "path": "templates/vite-app/src/index.css",
    "content": "@import \"tailwindcss\";\n"
  },
  {
    "path": "templates/vite-app/src/main.tsx",
    "content": "import { StrictMode } from \"react\"\nimport { createRoot } from \"react-dom/client\"\n\nimport \"./index.css\"\nimport App from \"./App.tsx\"\nimport { ThemeProvider } from \"@/components/theme-provider.tsx\"\n\ncreateRoot(document.getElementById(\"root\")!).render(\n  <StrictMode>\n    <ThemeProvider>\n      <App />\n    </ThemeProvider>\n  </StrictMode>\n)\n"
  },
  {
    "path": "templates/vite-app/tsconfig.app.json",
    "content": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbuildinfo\",\n    \"target\": \"ES2022\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"types\": [\"vite/client\"],\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"verbatimModuleSyntax\": true,\n    \"moduleDetection\": \"force\",\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"erasableSyntaxOnly\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUncheckedSideEffectImports\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "templates/vite-app/tsconfig.json",
    "content": "{\n  \"files\": [],\n  \"references\": [\n    { \"path\": \"./tsconfig.app.json\" },\n    { \"path\": \"./tsconfig.node.json\" }\n  ],\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "templates/vite-app/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\n    \"target\": \"ES2023\",\n    \"lib\": [\"ES2023\"],\n    \"module\": \"ESNext\",\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"verbatimModuleSyntax\": true,\n    \"moduleDetection\": \"force\",\n    \"noEmit\": true,\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"erasableSyntaxOnly\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUncheckedSideEffectImports\": true\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "templates/vite-app/vite.config.ts",
    "content": "import path from \"path\"\nimport tailwindcss from \"@tailwindcss/vite\"\nimport react from \"@vitejs/plugin-react\"\nimport { defineConfig } from \"vite\"\n\n// https://vite.dev/config/\nexport default defineConfig({\n  plugins: [react(), tailwindcss()],\n  resolve: {\n    alias: {\n      \"@\": path.resolve(__dirname, \"./src\"),\n    },\n  },\n})\n"
  },
  {
    "path": "templates/vite-monorepo/.gitignore",
    "content": "# Dependencies\nnode_modules\n.pnp\n.pnp.js\n\n# Local env files\n.env\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# Testing\ncoverage\n\n# Turbo\n.turbo\n\n# Vercel\n.vercel\n\n# Build Outputs\ndist\n\n# Debug\nnpm-debug.log*\n\n# Misc\n.DS_Store\n*.pem\n"
  },
  {
    "path": "templates/vite-monorepo/.npmrc",
    "content": ""
  },
  {
    "path": "templates/vite-monorepo/.prettierignore",
    "content": "dist/\nnode_modules/\n.turbo/\ncoverage/\npnpm-lock.yaml\n.pnpm-store/"
  },
  {
    "path": "templates/vite-monorepo/.prettierrc",
    "content": "{\n  \"endOfLine\": \"lf\",\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"es5\",\n  \"printWidth\": 80,\n  \"plugins\": [\"prettier-plugin-tailwindcss\"],\n  \"tailwindStylesheet\": \"packages/ui/src/styles/globals.css\",\n  \"tailwindFunctions\": [\"cn\", \"cva\"]\n}\n"
  },
  {
    "path": "templates/vite-monorepo/README.md",
    "content": "# shadcn/ui monorepo template\n\nThis is a Vite monorepo template with shadcn/ui.\n\n## Adding components\n\nTo add components to your app, run the following command at the root of your `web` app:\n\n```bash\npnpm dlx shadcn@latest add button -c apps/web\n```\n\nThis will place the ui components in the `packages/ui/src/components` directory.\n\n## Using components\n\nTo use the components in your app, import them from the `ui` package.\n\n```tsx\nimport { Button } from \"@workspace/ui/components/button\";\n```\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"../../packages/ui/src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"hooks\": \"@/hooks\",\n    \"lib\": \"@/lib\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/eslint.config.js",
    "content": "import js from '@eslint/js'\nimport globals from 'globals'\nimport reactHooks from 'eslint-plugin-react-hooks'\nimport reactRefresh from 'eslint-plugin-react-refresh'\nimport tseslint from 'typescript-eslint'\nimport { defineConfig, globalIgnores } from 'eslint/config'\n\nexport default defineConfig([\n  globalIgnores(['dist']),\n  {\n    files: ['**/*.{ts,tsx}'],\n    extends: [\n      js.configs.recommended,\n      tseslint.configs.recommended,\n      reactHooks.configs.flat.recommended,\n      reactRefresh.configs.vite,\n    ],\n    languageOptions: {\n      ecmaVersion: 2020,\n      globals: globals.browser,\n    },\n  },\n])\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>vite-monorepo</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/package.json",
    "content": "{\n  \"name\": \"web\",\n  \"version\": \"0.0.1\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"tsc -b && vite build\",\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@workspace/ui\": \"workspace:*\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@vitejs/plugin-react\": \"^5.1.1\",\n    \"@eslint/js\": \"^9.39.2\",\n    \"eslint\": \"^9.39.2\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"eslint-plugin-react-refresh\": \"^0.4.24\",\n    \"globals\": \"^17.2.0\",\n    \"typescript\": \"^5.9.3\",\n    \"typescript-eslint\": \"^8.54.0\",\n    \"vite\": \"^7.2.4\"\n  }\n}\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/src/App.tsx",
    "content": "import { Button } from \"@workspace/ui/components/button\"\n\nexport function App() {\n  return (\n    <div className=\"flex min-h-svh p-6\">\n      <div className=\"flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose\">\n        <div>\n          <h1 className=\"font-medium\">Project ready!</h1>\n          <p>You may now add components and start building.</p>\n          <p>We&apos;ve already added the button component for you.</p>\n          <Button className=\"mt-2\">Button</Button>\n        </div>\n        <div className=\"text-muted-foreground font-mono text-xs\">\n          (Press <kbd>d</kbd> to toggle dark mode)\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/src/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/vite-monorepo/apps/web/src/components/theme-provider.tsx",
    "content": "/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\"\n\ntype Theme = \"dark\" | \"light\" | \"system\"\ntype ResolvedTheme = \"dark\" | \"light\"\n\ntype ThemeProviderProps = {\n  children: React.ReactNode\n  defaultTheme?: Theme\n  storageKey?: string\n  disableTransitionOnChange?: boolean\n}\n\ntype ThemeProviderState = {\n  theme: Theme\n  setTheme: (theme: Theme) => void\n}\n\nconst COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\"\nconst THEME_VALUES: Theme[] = [\"dark\", \"light\", \"system\"]\n\nconst ThemeProviderContext = React.createContext<\n  ThemeProviderState | undefined\n>(undefined)\n\nfunction isTheme(value: string | null): value is Theme {\n  if (value === null) {\n    return false\n  }\n\n  return THEME_VALUES.includes(value as Theme)\n}\n\nfunction getSystemTheme(): ResolvedTheme {\n  if (window.matchMedia(COLOR_SCHEME_QUERY).matches) {\n    return \"dark\"\n  }\n\n  return \"light\"\n}\n\nfunction disableTransitionsTemporarily() {\n  const style = document.createElement(\"style\")\n  style.appendChild(\n    document.createTextNode(\n      \"*,*::before,*::after{-webkit-transition:none!important;transition:none!important}\"\n    )\n  )\n  document.head.appendChild(style)\n\n  return () => {\n    window.getComputedStyle(document.body)\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        style.remove()\n      })\n    })\n  }\n}\n\nfunction isEditableTarget(target: EventTarget | null) {\n  if (!(target instanceof HTMLElement)) {\n    return false\n  }\n\n  if (target.isContentEditable) {\n    return true\n  }\n\n  const editableParent = target.closest(\n    \"input, textarea, select, [contenteditable='true']\"\n  )\n  if (editableParent) {\n    return true\n  }\n\n  return false\n}\n\nexport function ThemeProvider({\n  children,\n  defaultTheme = \"system\",\n  storageKey = \"theme\",\n  disableTransitionOnChange = true,\n  ...props\n}: ThemeProviderProps) {\n  const [theme, setThemeState] = React.useState<Theme>(() => {\n    const storedTheme = localStorage.getItem(storageKey)\n    if (isTheme(storedTheme)) {\n      return storedTheme\n    }\n\n    return defaultTheme\n  })\n\n  const setTheme = React.useCallback(\n    (nextTheme: Theme) => {\n      localStorage.setItem(storageKey, nextTheme)\n      setThemeState(nextTheme)\n    },\n    [storageKey]\n  )\n\n  const applyTheme = React.useCallback(\n    (nextTheme: Theme) => {\n      const root = document.documentElement\n      const resolvedTheme =\n        nextTheme === \"system\" ? getSystemTheme() : nextTheme\n      const restoreTransitions = disableTransitionOnChange\n        ? disableTransitionsTemporarily()\n        : null\n\n      root.classList.remove(\"light\", \"dark\")\n      root.classList.add(resolvedTheme)\n\n      if (restoreTransitions) {\n        restoreTransitions()\n      }\n    },\n    [disableTransitionOnChange]\n  )\n\n  React.useEffect(() => {\n    applyTheme(theme)\n\n    if (theme !== \"system\") {\n      return undefined\n    }\n\n    const mediaQuery = window.matchMedia(COLOR_SCHEME_QUERY)\n    const handleChange = () => {\n      applyTheme(\"system\")\n    }\n\n    mediaQuery.addEventListener(\"change\", handleChange)\n\n    return () => {\n      mediaQuery.removeEventListener(\"change\", handleChange)\n    }\n  }, [theme, applyTheme])\n\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.repeat) {\n        return\n      }\n\n      if (event.metaKey || event.ctrlKey || event.altKey) {\n        return\n      }\n\n      if (isEditableTarget(event.target)) {\n        return\n      }\n\n      if (event.key.toLowerCase() !== \"d\") {\n        return\n      }\n\n      setThemeState((currentTheme) => {\n        const nextTheme =\n          currentTheme === \"dark\"\n            ? \"light\"\n            : currentTheme === \"light\"\n              ? \"dark\"\n              : getSystemTheme() === \"dark\"\n                ? \"light\"\n                : \"dark\"\n\n        localStorage.setItem(storageKey, nextTheme)\n        return nextTheme\n      })\n    }\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n\n    return () => {\n      window.removeEventListener(\"keydown\", handleKeyDown)\n    }\n  }, [storageKey])\n\n  React.useEffect(() => {\n    const handleStorageChange = (event: StorageEvent) => {\n      if (event.storageArea !== localStorage) {\n        return\n      }\n\n      if (event.key !== storageKey) {\n        return\n      }\n\n      if (isTheme(event.newValue)) {\n        setThemeState(event.newValue)\n        return\n      }\n\n      setThemeState(defaultTheme)\n    }\n\n    window.addEventListener(\"storage\", handleStorageChange)\n\n    return () => {\n      window.removeEventListener(\"storage\", handleStorageChange)\n    }\n  }, [defaultTheme, storageKey])\n\n  const value = React.useMemo(\n    () => ({\n      theme,\n      setTheme,\n    }),\n    [theme, setTheme]\n  )\n\n  return (\n    <ThemeProviderContext.Provider {...props} value={value}>\n      {children}\n    </ThemeProviderContext.Provider>\n  )\n}\n\nexport const useTheme = () => {\n  const context = React.useContext(ThemeProviderContext)\n\n  if (context === undefined) {\n    throw new Error(\"useTheme must be used within a ThemeProvider\")\n  }\n\n  return context\n}\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/src/main.tsx",
    "content": "import { StrictMode } from \"react\"\nimport { createRoot } from \"react-dom/client\"\n\nimport \"@workspace/ui/globals.css\"\nimport { App } from \"./App.tsx\"\nimport { ThemeProvider } from \"@/components/theme-provider.tsx\"\n\ncreateRoot(document.getElementById(\"root\")!).render(\n  <StrictMode>\n    <ThemeProvider>\n      <App />\n    </ThemeProvider>\n  </StrictMode>\n)\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/tsconfig.app.json",
    "content": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbuildinfo\",\n    \"target\": \"ES2022\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"types\": [\"vite/client\"],\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"verbatimModuleSyntax\": true,\n    \"moduleDetection\": \"force\",\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"erasableSyntaxOnly\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUncheckedSideEffectImports\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"],\n      \"@workspace/ui/*\": [\"../../packages/ui/src/*\"]\n    }\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/tsconfig.json",
    "content": "{\n  \"files\": [],\n  \"references\": [\n    { \"path\": \"./tsconfig.app.json\" },\n    { \"path\": \"./tsconfig.node.json\" }\n  ],\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"],\n      \"@workspace/ui/*\": [\"../../packages/ui/src/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\n    \"target\": \"ES2023\",\n    \"lib\": [\"ES2023\"],\n    \"module\": \"ESNext\",\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"verbatimModuleSyntax\": true,\n    \"moduleDetection\": \"force\",\n    \"noEmit\": true,\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"erasableSyntaxOnly\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUncheckedSideEffectImports\": true\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "templates/vite-monorepo/apps/web/vite.config.ts",
    "content": "import path from \"path\"\nimport tailwindcss from \"@tailwindcss/vite\"\nimport react from \"@vitejs/plugin-react\"\nimport { defineConfig } from \"vite\"\n\n// https://vite.dev/config/\nexport default defineConfig({\n  plugins: [react(), tailwindcss()],\n  resolve: {\n    alias: {\n      \"@\": path.resolve(__dirname, \"./src\"),\n    },\n  },\n})\n"
  },
  {
    "path": "templates/vite-monorepo/package.json",
    "content": "{\n  \"name\": \"vite-monorepo\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\",\n    \"lint\": \"turbo lint\",\n    \"format\": \"turbo format\",\n    \"typecheck\": \"turbo typecheck\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n    \"turbo\": \"^2.8.17\",\n    \"typescript\": \"5.9.3\"\n  },\n  \"packageManager\": \"pnpm@9.15.9\",\n  \"engines\": {\n    \"node\": \">=20\"\n  }\n}\n"
  },
  {
    "path": "templates/vite-monorepo/packages/ui/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"radix-nova\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"src/styles/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true\n  },\n  \"iconLibrary\": \"lucide\",\n  \"aliases\": {\n    \"components\": \"@workspace/ui/components\",\n    \"utils\": \"@workspace/ui/lib/utils\",\n    \"hooks\": \"@workspace/ui/hooks\",\n    \"lib\": \"@workspace/ui/lib\",\n    \"ui\": \"@workspace/ui/components\"\n  }\n}\n"
  },
  {
    "path": "templates/vite-monorepo/packages/ui/eslint.config.js",
    "content": "import js from '@eslint/js'\nimport globals from 'globals'\nimport reactHooks from 'eslint-plugin-react-hooks'\nimport reactRefresh from 'eslint-plugin-react-refresh'\nimport tseslint from 'typescript-eslint'\nimport { defineConfig, globalIgnores } from 'eslint/config'\n\nexport default defineConfig([\n  globalIgnores(['dist']),\n  {\n    files: ['**/*.{ts,tsx}'],\n    extends: [\n      js.configs.recommended,\n      tseslint.configs.recommended,\n      reactHooks.configs.flat.recommended,\n      reactRefresh.configs.vite,\n    ],\n    languageOptions: {\n      ecmaVersion: 2020,\n      globals: globals.browser,\n    },\n  },\n])\n"
  },
  {
    "path": "templates/vite-monorepo/packages/ui/package.json",
    "content": "{\n  \"name\": \"@workspace/ui\",\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"lint\": \"eslint\",\n    \"format\": \"prettier --write \\\"**/*.{ts,tsx}\\\"\",\n    \"typecheck\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"zod\": \"^3.25.76\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"@turbo/gen\": \"^2.8.1\",\n    \"@types/node\": \"^25.1.0\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@eslint/js\": \"^9.39.2\",\n    \"eslint\": \"^9.39.2\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"eslint-plugin-react-refresh\": \"^0.4.24\",\n    \"globals\": \"^17.2.0\",\n    \"typescript-eslint\": \"^8.54.0\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"exports\": {\n    \"./globals.css\": \"./src/styles/globals.css\",\n    \"./lib/*\": \"./src/lib/*.ts\",\n    \"./components/*\": \"./src/components/*.tsx\",\n    \"./hooks/*\": \"./src/hooks/*.ts\"\n  }\n}\n"
  },
  {
    "path": "templates/vite-monorepo/packages/ui/src/components/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/vite-monorepo/packages/ui/src/hooks/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/vite-monorepo/packages/ui/src/lib/.gitkeep",
    "content": ""
  },
  {
    "path": "templates/vite-monorepo/packages/ui/src/styles/globals.css",
    "content": "@import \"tailwindcss\";\n@source \"../../../apps/**/*.{ts,tsx}\";\n@source \"../../../components/**/*.{ts,tsx}\";\n@source \"../**/*.{ts,tsx}\";\n"
  },
  {
    "path": "templates/vite-monorepo/packages/ui/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@workspace/ui/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\".\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/vite-monorepo/packages/ui/tsconfig.lint.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"jsx\": \"react-jsx\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"src\", \"turbo\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "templates/vite-monorepo/pnpm-workspace.yaml",
    "content": "packages:\n  - \"apps/*\"\n  - \"packages/*\"\n"
  },
  {
    "path": "templates/vite-monorepo/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"skipLibCheck\": true,\n    \"strict\": true\n  }\n}\n"
  },
  {
    "path": "templates/vite-monorepo/turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"ui\": \"tui\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"outputs\": [\"dist/**\"]\n    },\n    \"lint\": {\n      \"dependsOn\": [\"^lint\"]\n    },\n    \"format\": {\n      \"dependsOn\": [\"^format\"]\n    },\n    \"typecheck\": {\n      \"dependsOn\": [\"^typecheck\"]\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Default\",\n  \"compilerOptions\": {\n    \"composite\": false,\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"inlineSources\": false,\n    \"isolatedModules\": true,\n    \"moduleResolution\": \"node\",\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"preserveWatchOutput\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true\n  },\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"globalEnv\": [\"NODE_ENV\"],\n  \"pipeline\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"env\": [\n        \"NEXT_PUBLIC_APP_URL\",\n        \"UPSTASH_REDIS_REST_URL\",\n        \"UPSTASH_REDIS_REST_TOKEN\",\n        \"COMPONENTS_REGISTRY_URL\",\n        \"REGISTRY_URL\",\n        \"npm_config_user_agent\",\n        \"https_proxy\",\n        \"V0_URL\",\n        \"V0_EDIT_SECRET\",\n        \"DEPLOYMENT_PROTECTION_BYPASS\"\n      ],\n      \"outputs\": [\"dist/**\", \".next/**\", \"!.next/cache/**\"]\n    },\n    \"preview\": {\n      \"env\": [\"NEXT_PUBLIC_APP_URL\"],\n      \"outputs\": [\"dist/**\", \".next/**\"]\n    },\n    \"start\": {\n      \"dependsOn\": [\"^build\"]\n    },\n    \"lint\": {\n      \"cache\": false,\n      \"outputs\": []\n    },\n    \"lint:fix\": {\n      \"cache\": false,\n      \"outputs\": []\n    },\n    \"format:check\": {\n      \"cache\": false,\n      \"outputs\": []\n    },\n    \"format:write\": {\n      \"outputs\": []\n    },\n    \"typecheck\": {},\n    \"dev\": {\n      \"cache\": false\n    },\n    \"check\": {\n      \"cache\": false\n    },\n    \"test\": {\n      \"cache\": false,\n      \"outputs\": []\n    },\n    \"registry:build\": {\n      \"cache\": false,\n      \"outputs\": []\n    },\n    \"registry\": {\n      \"outputs\": []\n    }\n  }\n}\n"
  },
  {
    "path": "vitest.config.ts",
    "content": "import tsconfigPaths from \"vite-tsconfig-paths\"\nimport { configDefaults, defineConfig } from \"vitest/config\"\n\nexport default defineConfig({\n  test: {\n    exclude: [\n      ...configDefaults.exclude,\n      \"**/node_modules/**\",\n      \"**/fixtures/**\",\n      \"**/templates/**\",\n      \"**/packages/tests/**\",\n    ],\n  },\n  plugins: [\n    tsconfigPaths({\n      ignoreConfigErrors: true,\n    }),\n  ],\n})\n"
  },
  {
    "path": "vitest.workspace.ts",
    "content": "import { defineWorkspace } from \"vitest/config\"\n\nexport default defineWorkspace([\n  \"./vitest.config.ts\",\n  \"./packages/tests/vitest.config.ts\",\n])\n"
  }
]